diff --git a/eng/autorest_req.txt b/eng/autorest_req.txt index e2808bca4ecf..b9f608c81eaa 100644 --- a/eng/autorest_req.txt +++ b/eng/autorest_req.txt @@ -4,4 +4,5 @@ pytest-cov==2.8.1 pytest-asyncio==0.10.0; python_version >= '3.5' isodate==0.6.0 msrest==0.6.13 -aiohttp==3.6.2 \ No newline at end of file +aiohttp==3.6.2 +wheel \ No newline at end of file diff --git a/eng/common/TestResources/New-TestResources.ps1 b/eng/common/TestResources/New-TestResources.ps1 index 133137ea79aa..e26d1515933a 100644 --- a/eng/common/TestResources/New-TestResources.ps1 +++ b/eng/common/TestResources/New-TestResources.ps1 @@ -62,7 +62,10 @@ param ( [switch] $CI = ($null -ne $env:SYSTEM_TEAMPROJECTID), [Parameter()] - [switch] $Force + [switch] $Force, + + [Parameter()] + [switch] $OutFile ) # By default stop for any error. @@ -108,7 +111,8 @@ trap { } # Enumerate test resources to deploy. Fail if none found. -$root = [System.IO.Path]::Combine("$PSScriptRoot/../../../sdk", $ServiceDirectory) | Resolve-Path +$repositoryRoot = "$PSScriptRoot/../../.." | Resolve-Path +$root = [System.IO.Path]::Combine($repositoryRoot, "sdk", $ServiceDirectory) | Resolve-Path $templateFileName = 'test-resources.json' $templateFiles = @() @@ -172,19 +176,20 @@ if ($TestApplicationId -and !$TestApplicationOid) { } } + +# If the ServiceDirectory is an absolute path use the last directory name +# (e.g. D:\foo\bar\ -> bar) +$serviceName = if (Split-Path -IsAbsolute $ServiceDirectory) { + Split-Path -Leaf $ServiceDirectory +} else { + $ServiceDirectory +} + # Format the resource group name based on resource group naming recommendations and limitations. $resourceGroupName = if ($CI) { $BaseName = 't' + (New-Guid).ToString('n').Substring(0, 16) Write-Verbose "Generated base name '$BaseName' for CI build" - # If the ServiceDirectory is an absolute path use the last directory name - # (e.g. D:\foo\bar\ -> bar) - $serviceName = if (Split-Path -IsAbsolute $ServiceDirectory) { - Split-Path -Leaf $ServiceDirectory - } else { - $ServiceDirectory - } - "rg-{0}-$BaseName" -f ($serviceName -replace '[\\\/:]', '-').Substring(0, [Math]::Min($serviceName.Length, 90 - $BaseName.Length - 4)).Trim('-') } else { "rg-$BaseName" @@ -281,12 +286,21 @@ foreach ($templateFile in $templateFiles) { Write-Verbose "Successfully deployed template '$templateFile' to resource group '$($resourceGroup.ResourceGroupName)'" } - if ($deployment.Outputs.Count -and !$CI) { - # Write an extra new line to isolate the environment variables for easy reading. - Log "Persist the following environment variables based on your detected shell ($shell):`n" + $serviceDirectoryPrefix = $serviceName.ToUpperInvariant() + "_" + + $context = Get-AzContext; + + # Add default values + $deploymentOutputs = @{ + "$($serviceDirectoryPrefix)CLIENT_ID" = $TestApplicationId; + "$($serviceDirectoryPrefix)CLIENT_SECRET" = $TestApplicationSecret; + "$($serviceDirectoryPrefix)TENANT_ID" = $context.Tenant.Id; + "$($serviceDirectoryPrefix)SUBSCRIPTION_ID" = $context.Subscription.Id; + "$($serviceDirectoryPrefix)RESOURCE_GROUP" = $resourceGroup.ResourceGroupName; + "$($serviceDirectoryPrefix)LOCATION" = $resourceGroup.Location; + "$($serviceDirectoryPrefix)ENVIRONMENT" = $context.Environment.Name; } - $deploymentOutputs = @{} foreach ($key in $deployment.Outputs.Keys) { $variable = $deployment.Outputs[$key] @@ -295,23 +309,54 @@ foreach ($templateFile in $templateFiles) { if ($variable.Type -eq 'String' -or $variable.Type -eq 'SecureString') { $deploymentOutputs[$key] = $variable.Value + } + } + if ($OutFile) + { + if (!$IsWindows) + { + Write-Host "File option is supported only on Windows" + } + + $outputFile = "$templateFile.env" + + $environmentText = $deploymentOutputs | ConvertTo-Json; + $bytes = ([System.Text.Encoding]::UTF8).GetBytes($environmentText) + $protectedBytes = [Security.Cryptography.ProtectedData]::Protect($bytes, $null, [Security.Cryptography.DataProtectionScope]::CurrentUser) + + Set-Content $outputFile -Value $protectedBytes -AsByteStream -Force + + Write-Host "Test environment settings`n $environmentText`nstored into encrypted $outputFile" + } + else + { + + if (!$CI) { + # Write an extra new line to isolate the environment variables for easy reading. + Log "Persist the following environment variables based on your detected shell ($shell):`n" + } + + foreach ($key in $deploymentOutputs.Keys) + { + $value = $deploymentOutputs[$key] + if ($CI) { # Treat all ARM template output variables as secrets since "SecureString" variables do not set values. # In order to mask secrets but set environment variables for any given ARM template, we set variables twice as shown below. Write-Host "Setting variable '$key': ***" - Write-Host "##vso[task.setvariable variable=_$key;issecret=true;]$($variable.Value)" - Write-Host "##vso[task.setvariable variable=$key;]$($variable.Value)" + Write-Host "##vso[task.setvariable variable=_$key;issecret=true;]$($value)" + Write-Host "##vso[task.setvariable variable=$key;]$($value)" } else { - Write-Host ($shellExportFormat -f $key, $variable.Value) + Write-Host ($shellExportFormat -f $key, $value) } } - } - if ($key) { - # Isolate the environment variables for easy reading. - Write-Host "`n" - $key = $null + if ($key) { + # Isolate the environment variables for easy reading. + Write-Host "`n" + $key = $null + } } $postDeploymentScript = $templateFile | Split-Path | Join-Path -ChildPath 'test-resources-post.ps1' @@ -442,6 +487,10 @@ Deployment (CI/CD) build (only Azure Pipelines is currently supported). .PARAMETER Force Force creation of resources instead of being prompted. +.PARAMETER OutFile +Save test environment settings into a test-resources.json.env file next to test-resources.json. File is protected via DPAPI. Supported only on windows. +The environment file would be scoped to the current repository directory. + .EXAMPLE Connect-AzAccount -Subscription "REPLACE_WITH_SUBSCRIPTION_ID" $testAadApp = New-AzADServicePrincipal -Role Owner -DisplayName 'azure-sdk-live-test-app' diff --git a/eng/common/TestResources/Remove-TestResources.ps1 b/eng/common/TestResources/Remove-TestResources.ps1 index 961452fe8ca1..53debad343e1 100644 --- a/eng/common/TestResources/Remove-TestResources.ps1 +++ b/eng/common/TestResources/Remove-TestResources.ps1 @@ -38,6 +38,9 @@ param ( [Parameter(ParameterSetName = 'Default+Provisioner', Mandatory = $true)] [Parameter(ParameterSetName = 'ResourceGroup+Provisioner', Mandatory = $true)] [string] $ProvisionerApplicationSecret, + + [Parameter()] + [string] $ServiceDirectory, [Parameter()] [ValidateSet('AzureCloud', 'AzureUSGovernment', 'AzureChinaCloud')] @@ -116,6 +119,15 @@ if (!$ResourceGroupName) { $ResourceGroupName = "rg-$BaseName" } +if (![string]::IsNullOrWhiteSpace($ServiceDirectory)) { + $root = [System.IO.Path]::Combine("$PSScriptRoot/../../../sdk", $ServiceDirectory) | Resolve-Path + $preRemovalScript = Join-Path -Path $root -ChildPath 'remove-test-resources-pre.ps1' + if (Test-Path $preRemovalScript) { + Log "Invoking pre resource removal script '$preRemovalScript'" + &$preRemovalScript -ResourceGroupName $ResourceGroupName @PSBoundParameters + } +} + Log "Deleting resource group '$ResourceGroupName'" if (Retry { Remove-AzResourceGroup -Name "$ResourceGroupName" -Force:$Force }) { Write-Verbose "Successfully deleted resource group '$ResourceGroupName'" @@ -157,6 +169,10 @@ A service principal ID to provision test resources when a provisioner is specifi .PARAMETER ProvisionerApplicationSecret A service principal secret (password) to provision test resources when a provisioner is specified. +.PARAMETER ServiceDirectory +A directory under 'sdk' in the repository root - optionally with subdirectories +specified - in which to discover pre removal script named 'remove-test-resources-pre.json'. + .PARAMETER Environment Name of the cloud environment. The default is the Azure Public Cloud ('PublicCloud') diff --git a/eng/common/TestResources/Remove-TestResources.ps1.md b/eng/common/TestResources/Remove-TestResources.ps1.md index edf3990ce93b..f9bc1803ae32 100644 --- a/eng/common/TestResources/Remove-TestResources.ps1.md +++ b/eng/common/TestResources/Remove-TestResources.ps1.md @@ -169,6 +169,22 @@ Accept pipeline input: False Accept wildcard characters: False ``` +### -ServiceDirectory +A directory under 'sdk' in the repository root - optionally with subdirectories +specified - specified - in which to discover pre removal script named 'remove-test-resources-pre.json'. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + ### -Environment Name of the cloud environment. The default is the Azure Public Cloud diff --git a/eng/common/TestResources/remove-test-resources.yml b/eng/common/TestResources/remove-test-resources.yml index 40eec569fa37..e79dfe1267e6 100644 --- a/eng/common/TestResources/remove-test-resources.yml +++ b/eng/common/TestResources/remove-test-resources.yml @@ -7,6 +7,9 @@ # Assumes steps in deploy-test-resources.yml was run previously. Requires # environment variable: AZURE_RESOURCEGROUP_NAME and Az PowerShell module +parameters: + ServiceDirectory: '' + steps: - pwsh: > eng/common/TestResources/Remove-TestResources.ps1 @@ -15,6 +18,7 @@ steps: -SubscriptionId '$(azure-subscription-id)' -ProvisionerApplicationId '$(aad-azure-sdk-test-client-id)' -ProvisionerApplicationSecret '$(aad-azure-sdk-test-client-secret)' + -ServiceDirectory '${{ parameters.ServiceDirectory }}' -Environment 'AzureCloud' -Force -Verbose @@ -29,6 +33,7 @@ steps: -SubscriptionId '$(azure-subscription-id-gov)' -ProvisionerApplicationId '$(aad-azure-sdk-test-client-id-gov)' -ProvisionerApplicationSecret '$(aad-azure-sdk-test-client-secret-gov)' + -ServiceDirectory '${{ parameters.ServiceDirectory }}' -Environment 'AzureUSGovernment' -Force -Verbose @@ -43,6 +48,7 @@ steps: -SubscriptionId '$(azure-subscription-id-cn)' -ProvisionerApplicationId '$(aad-azure-sdk-test-client-id-cn)' -ProvisionerApplicationSecret '$(aad-azure-sdk-test-client-secret-cn)' + -ServiceDirectory '${{ parameters.ServiceDirectory }}' -Environment 'AzureChinaCloud' -Force -Verbose diff --git a/eng/common/pipelines/templates/steps/bypass-local-dns.yml b/eng/common/pipelines/templates/steps/bypass-local-dns.yml new file mode 100644 index 000000000000..54f49c33714b --- /dev/null +++ b/eng/common/pipelines/templates/steps/bypass-local-dns.yml @@ -0,0 +1,6 @@ + +steps: + # https://github.com/actions/virtual-environments/issues/798 + - script: sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf + displayName: Bypass local DNS server to workaround issue resolving cognitiveservices names + condition: and(succeededOrFailed(), eq(variables['OSVmImage'], 'ubuntu-18.04')) \ No newline at end of file diff --git a/eng/common/scripts/copy-readmes-to-docs.ps1 b/eng/common/scripts/copy-readmes-to-docs.ps1 new file mode 100644 index 000000000000..285eefce5a18 --- /dev/null +++ b/eng/common/scripts/copy-readmes-to-docs.ps1 @@ -0,0 +1,85 @@ +# Example Usage: ./copy-readmes-to-docs.ps1 -CodeRepo C:/repo/sdk-for-python -DocRepo C:/repo/azure-docs-sdk-python +# run the link updating script before this to get links fixed to the release +# Highly recommended that you use Powershell Core. +# git reset --hard origin/smoke-test on the doc repo prior to running this + +param ( + [String]$CodeRepo, + [String]$DocRepo, + [String]$TargetServices +) + +$PACKAGE_README_REGEX = ".*[\/\\]sdk[\\\/][^\/\\]+[\\\/][^\/\\]+[\/\\]README\.md" + +Write-Host "repo is $CodeRepo" + +$date = Get-Date -Format "MM/dd/yyyy" + +if ($CodeRepo -Match "net") +{ + $lang = ".NET" + $TARGET_FOLDER = Join-Path -Path $DocRepo -ChildPath "api/overview/azure" + $metadataUri = "https://raw.githubusercontent.com/Azure/azure-sdk/master/_data/releases/latest/dotnet-packages.csv" +} +if ($CodeRepo -Match "python"){ + $lang = "Python" + $TARGET_FOLDER = Join-Path -Path $DocRepo -ChildPath "docs-ref-services" + $metadataUri = "https://raw.githubusercontent.com/Azure/azure-sdk/master/_data/releases/latest/python-packages.csv" +} +if ($CodeRepo -Match "java"){ + $lang = "Java" + $TARGET_FOLDER = Join-Path -Path $DocRepo -ChildPath "docs-ref-services" + $metadataUri = "https://raw.githubusercontent.com/Azure/azure-sdk/master/_data/releases/latest/java-packages.csv" +} +if ($CodeRepo -Match "js"){ + $lang = "JavaScript" + $TARGET_FOLDER = Join-Path -Path $DocRepo -ChildPath "docs-ref-services" + $metadataUri = "https://raw.githubusercontent.com/Azure/azure-sdk/master/_data/releases/latest/js-packages.csv" +} + + + +$metadataResponse = Invoke-WebRequest -Uri $metadataUri | ConvertFrom-Csv + +if ([string]::IsNullOrWhiteSpace($TargetServices)) +{ + $selectedServices = $metadataResponse | ForEach-Object -Process {$_.RepoPath} | Get-Unique +} +else { + $selectedServices = $TargetServices -Split "," | % { return $_.Trim() } +} + + +foreach($service in $selectedServices){ + $readmePath = Join-Path -Path $CodeRepo -ChildPath "sdk/$service" + Write-Host "Examining: $readmePath" + + $libraries = $metadataResponse | Where-Object { $_.RepoPath -eq $service } + + foreach($library in $libraries){ + + $package = $library.Package + $version = If ([string]::IsNullOrWhiteSpace($library.VersionGA)) {$library.VersionPreview} Else {$library.VersionGA} + + $file = Join-Path -Path $readmePath -ChildPath "/$package/README.md" | Get-Item + Write-Host "`tOutputting $($file.FullName)" + + $fileContent = Get-Content $file + + $fileContent = $fileContent -Join "`n" + + $fileMatch = (Select-String -InputObject $fileContent -Pattern 'Azure .+? (client|plugin|shared) library for (JavaScript|Java|Python|\.NET)').Matches[0] + + $header = "---`r`ntitle: $fileMatch`r`nkeywords: Azure, $lang, SDK, API, $service, $package`r`nauthor: maggiepint`r`nms.author: magpint`r`nms.date: $date`r`nms.topic: article`r`nms.prod: azure`r`nms.technology: azure`r`nms.devlang: $lang`r`nms.service: $service`r`n---`r`n" + + $fileContent = $fileContent -replace $fileMatch, "$fileMatch - Version $version `r`n" + + $fileContent = "$header $fileContent" + + $readmeName = "$($file.Directory.Name.Replace('azure-','').Replace('Azure.', '').ToLower())-readme.md" + + $readmeOutputLocation = Join-Path $TARGET_FOLDER -ChildPath $readmeName + + Set-Content -Path $readmeOutputLocation -Value $fileContent + } +} \ No newline at end of file diff --git a/eng/pipelines/autorest_checks.yml b/eng/pipelines/autorest_checks.yml index b70a27a732ed..1828ccd317b0 100644 --- a/eng/pipelines/autorest_checks.yml +++ b/eng/pipelines/autorest_checks.yml @@ -17,15 +17,16 @@ variables: NodeVersion: '10.x' PythonVersion: '3.6' auto_rest_clone_url: 'https://github.com/Azure/autorest.python.git' - repo_branch: 'azure-core' - source_path: 'sdk/core/azure-core' + repo_branch: 'autorestv3' + source_path_azure_core: 'sdk/core/azure-core' + source_path_azure_mgmt_core: 'sdk/core/azure-mgmt-core' jobs: - job: 'Run_AutoRest' displayName: 'Run AutoRest' pool: - vmImage: 'ubuntu-16.04' + vmImage: 'ubuntu-18.04' steps: - task: NodeTool@0 @@ -40,13 +41,24 @@ jobs: - script: | pip install -r eng/autorest_req.txt - pip install $(Build.SourcesDirectory)/$(source_path) - displayName: 'Prepare Environment' - - - script: | - git clone --recursive $(auto_rest_clone_url) + git clone $(auto_rest_clone_url) cd autorest.python git checkout $(repo_branch) npm install - pytest test/vanilla - displayName: 'Run Test' \ No newline at end of file + displayName: 'Prepare Environment' + + - script: | + cd $(Build.SourcesDirectory)/autorest.python/test/vanilla + pip install $(Build.SourcesDirectory)/$(source_path_azure_core) + pip install -r requirements.txt + pip freeze + pytest $(Build.SourcesDirectory)/autorest.python/test/vanilla + displayName: 'Install azure-core and Test Vanilla' + + - script: | + cd $(Build.SourcesDirectory)/autorest.python/test/azure + pip install $(Build.SourcesDirectory)/$(source_path_azure_mgmt_core) + pip install -r requirements.txt + pip freeze + pytest $(Build.SourcesDirectory)/autorest.python/test/azure + displayName: 'Install azure-mgmt-core and Test Azure' \ No newline at end of file diff --git a/eng/pipelines/generate-all-docs.yml b/eng/pipelines/generate-all-docs.yml index b4b9eaeb315a..b7537154858b 100644 --- a/eng/pipelines/generate-all-docs.yml +++ b/eng/pipelines/generate-all-docs.yml @@ -19,7 +19,7 @@ jobs: timeoutInMinutes: 120 pool: - vmImage: 'ubuntu-16.04' + vmImage: 'ubuntu-18.04' steps: - task: UsePythonVersion@0 diff --git a/eng/pipelines/smoke-test.yml b/eng/pipelines/smoke-test.yml index 299d700a8cd0..fd65e616ac2c 100644 --- a/eng/pipelines/smoke-test.yml +++ b/eng/pipelines/smoke-test.yml @@ -105,4 +105,6 @@ jobs: - script: python ./common/smoketest/program.py displayName: "Run Smoke Test" - - template: ../common/TestResources/remove-test-resources.yml \ No newline at end of file + - template: ../common/TestResources/remove-test-resources.yml + parameters: + ServiceDirectory: '$(Build.SourcesDirectory)/common/smoketest/' \ No newline at end of file diff --git a/eng/pipelines/templates/jobs/archetype-sdk-client.yml b/eng/pipelines/templates/jobs/archetype-sdk-client.yml index c3a8fbc99ad9..bc102d47af74 100644 --- a/eng/pipelines/templates/jobs/archetype-sdk-client.yml +++ b/eng/pipelines/templates/jobs/archetype-sdk-client.yml @@ -10,31 +10,31 @@ parameters: TestMatrix: Linux_Python27: OSName: 'Linux' - OSVmImage: 'ubuntu-16.04' + OSVmImage: 'ubuntu-18.04' PythonVersion: '2.7' CoverageArg: '' RunForPR: true Linux_Python35: OSName: 'Linux' - OSVmImage: 'ubuntu-16.04' + OSVmImage: 'ubuntu-18.04' PythonVersion: '3.5' CoverageArg: '' RunForPR: false Linux_Python36: OSName: 'Linux' - OSVmImage: 'ubuntu-16.04' + OSVmImage: 'ubuntu-18.04' PythonVersion: '3.6' CoverageArg: '' RunForPR: false Linux_Python37: OSName: 'Linux' - OSVmImage: 'ubuntu-16.04' + OSVmImage: 'ubuntu-18.04' PythonVersion: '3.7' CoverageArg: '' RunForPR: false Linux_Python38: OSName: 'Linux' - OSVmImage: 'ubuntu-16.04' + OSVmImage: 'ubuntu-18.04' PythonVersion: '3.8' CoverageArg: '' RunForPR: true @@ -52,7 +52,7 @@ parameters: RunForPR: false Linux_pypy3: OSName: 'Linux' - OSVmImage: 'ubuntu-16.04' + OSVmImage: 'ubuntu-18.04' PythonVersion: 'pypy3' CoverageArg: '--disablecov' RunForPR: false @@ -64,7 +64,7 @@ jobs: - template: ../variables/globals.yml pool: - vmImage: 'ubuntu-16.04' + vmImage: 'ubuntu-18.04' steps: - template: ../steps/build-artifacts.yml @@ -83,7 +83,7 @@ jobs: - 'Build' pool: - vmImage: 'ubuntu-16.04' + vmImage: 'ubuntu-18.04' steps: - template: ../steps/analyze.yml @@ -156,7 +156,7 @@ jobs: - 'Build' pool: - vmImage: 'ubuntu-16.04' + vmImage: 'ubuntu-18.04' steps: - template: ../steps/run_mypy.yml @@ -175,7 +175,7 @@ jobs: - 'Build' pool: - vmImage: 'ubuntu-16.04' + vmImage: 'ubuntu-18.04' steps: - template: ../steps/run_pylint.yml @@ -187,6 +187,7 @@ jobs: - job: 'RunRegression' condition: and(succeededOrFailed(), or(eq(variables['Run.Regression'], 'true'), and(eq(variables['Build.Reason'], 'Schedule'), eq(variables['System.TeamProject'],'internal')))) displayName: 'Run Regression' + timeoutInMinutes: 90 variables: - template: ../variables/globals.yml @@ -194,7 +195,7 @@ jobs: - 'Build' pool: - vmImage: 'ubuntu-16.04' + vmImage: 'ubuntu-18.04' steps: - template: ../steps/test_regression.yml diff --git a/eng/pipelines/templates/jobs/archetype-sdk-tests.yml b/eng/pipelines/templates/jobs/archetype-sdk-tests.yml index 1a1b773aef91..83b432dabea4 100644 --- a/eng/pipelines/templates/jobs/archetype-sdk-tests.yml +++ b/eng/pipelines/templates/jobs/archetype-sdk-tests.yml @@ -15,7 +15,7 @@ parameters: Matrix: Linux_Python35: OSName: 'Linux' - OSVmImage: 'ubuntu-16.04' + OSVmImage: 'ubuntu-18.04' PythonVersion: '3.5' MacOs_Python37: OSName: 'MacOS' @@ -27,11 +27,11 @@ parameters: PythonVersion: '2.7' Linux_PyPy3: OSName: 'Linux' - OSVmImage: 'ubuntu-16.04' + OSVmImage: 'ubuntu-18.04' PythonVersion: 'pypy3' Linux_Python38: OSName: 'Linux' - OSVmImage: 'ubuntu-16.04' + OSVmImage: 'ubuntu-18.04' PythonVersion: '3.8' jobs: diff --git a/eng/pipelines/templates/jobs/tests-nightly-python.yml b/eng/pipelines/templates/jobs/tests-nightly-python.yml index 114e0ee60176..da66f52abb70 100644 --- a/eng/pipelines/templates/jobs/tests-nightly-python.yml +++ b/eng/pipelines/templates/jobs/tests-nightly-python.yml @@ -10,7 +10,7 @@ jobs: timeoutInMinutes: 90 pool: - vmImage: 'ubuntu-16.04' + vmImage: 'ubuntu-18.04' steps: - task: UsePythonVersion@0 diff --git a/eng/pipelines/templates/stages/archetype-python-release.yml b/eng/pipelines/templates/stages/archetype-python-release.yml index b3c672672711..b0c30b2392cb 100644 --- a/eng/pipelines/templates/stages/archetype-python-release.yml +++ b/eng/pipelines/templates/stages/archetype-python-release.yml @@ -18,7 +18,7 @@ stages: environment: github pool: - vmImage: ubuntu-16.04 + vmImage: ubuntu-18.04 strategy: runOnce: @@ -50,7 +50,7 @@ stages: dependsOn: TagRepository pool: - vmImage: ubuntu-16.04 + vmImage: ubuntu-18.04 strategy: runOnce: @@ -132,7 +132,7 @@ stages: dependsOn: PublishPackage pool: - vmImage: ubuntu-16.04 + vmImage: ubuntu-18.04 strategy: runOnce: @@ -164,7 +164,7 @@ stages: variables: devFeedName: public/azure-sdk-for-python pool: - vmImage: ubuntu-16.04 + vmImage: ubuntu-18.04 steps: - checkout: none - download: current diff --git a/eng/test_tools.txt b/eng/test_tools.txt index 2f9295f019fe..1a8641df165d 100644 --- a/eng/test_tools.txt +++ b/eng/test_tools.txt @@ -20,5 +20,10 @@ packaging==20.3 wheel==0.34.2 Jinja2==2.11.1 +# Locking pylint and required packages +pylint==2.3.1; python_version >= '3.4' +pylint==1.8.4; python_version < '3.4' +astroid==2.3.3; python_version >= '3.4' + ../../../tools/azure-devtools ../../../tools/azure-sdk-tools diff --git a/eng/tox/tox.ini b/eng/tox/tox.ini index 0c254da733be..ae23aa4e0195 100644 --- a/eng/tox/tox.ini +++ b/eng/tox/tox.ini @@ -54,8 +54,6 @@ usedevelop = true changedir = {toxinidir} deps = {[base]deps} - pylint==2.3.1; python_version >= '3.4' - pylint==1.8.4; python_version < '3.4' -e {toxinidir}/../../scripts/pylint_custom_plugin commands = {envbindir}/python {toxinidir}/../../../eng/tox/run_pylint.py -t {toxinidir} diff --git a/sdk/compute/azure-mgmt-compute/setup.py b/sdk/compute/azure-mgmt-compute/setup.py index f150346e03de..9c66a4d27b46 100644 --- a/sdk/compute/azure-mgmt-compute/setup.py +++ b/sdk/compute/azure-mgmt-compute/setup.py @@ -36,7 +36,9 @@ pass # Version extraction inspired from 'requests' -with open(os.path.join(package_folder_path, 'version.py'), 'r') as fd: +with open(os.path.join(package_folder_path, 'version.py') + if os.path.exists(os.path.join(package_folder_path, 'version.py')) + else os.path.join(package_folder_path, '_version.py'), 'r') as fd: version = re.search(r'^VERSION\s*=\s*[\'"]([^\'"]*)[\'"]', fd.read(), re.MULTILINE).group(1) diff --git a/sdk/compute/azure-mgmt-compute/tests/test_cli_mgmt_compute.py b/sdk/compute/azure-mgmt-compute/tests/test_cli_mgmt_compute.py index 87031b00616b..1eedd415af9d 100644 --- a/sdk/compute/azure-mgmt-compute/tests/test_cli_mgmt_compute.py +++ b/sdk/compute/azure-mgmt-compute/tests/test_cli_mgmt_compute.py @@ -187,10 +187,13 @@ def test_compute(self, resource_group): INSTANCE_IDS = ["1"] LOG_ANALYTIC_NAME = "loganalytic" - - SUBNET = self.create_virtual_network(RESOURCE_GROUP, AZURE_LOCATION, NETWORK_NAME, SUBNET_NAME) - NIC_ID = self.create_network_interface(RESOURCE_GROUP, AZURE_LOCATION, INTERFACE_NAME, SUBNET) - # VAULT_ID, VAULT_URL, KEY_NAME = self.create_key(RESOURCE_GROUP, AZURE_LOCATION, KEY_VAULT, TENANT_ID) + if self.is_live: + SUBNET = self.create_virtual_network(RESOURCE_GROUP, AZURE_LOCATION, NETWORK_NAME, SUBNET_NAME) + NIC_ID = self.create_network_interface(RESOURCE_GROUP, AZURE_LOCATION, INTERFACE_NAME, SUBNET) + # VAULT_ID, VAULT_URL, KEY_NAME = self.create_key(RESOURCE_GROUP, AZURE_LOCATION, KEY_VAULT, TENANT_ID) + else: + SUBNET = "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/" + RESOURCE_GROUP + "/providers/Microsoft.Network/virtualNetworks/" + NETWORK_NAME + "/subnets/" + SUBNET_NAME + NIC_ID = "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/" + RESOURCE_GROUP + "/providers/Microsoft.Network/networkInterfaces/" + INTERFACE_NAME # Create an empty managed disk.[put] BODY = { diff --git a/sdk/compute/azure-mgmt-compute/tests/test_mgmt_compute.py b/sdk/compute/azure-mgmt-compute/tests/test_mgmt_compute.py index af119a83eae0..5b69f0c1c63c 100644 --- a/sdk/compute/azure-mgmt-compute/tests/test_mgmt_compute.py +++ b/sdk/compute/azure-mgmt-compute/tests/test_mgmt_compute.py @@ -5,6 +5,7 @@ # Licensed under the MIT License. See License.txt in the project root for # license information. #-------------------------------------------------------------------------- + import unittest from collections import namedtuple diff --git a/sdk/core/azure-core-tracing-opentelemetry/azure/core/tracing/ext/opentelemetry_span/__init__.py b/sdk/core/azure-core-tracing-opentelemetry/azure/core/tracing/ext/opentelemetry_span/__init__.py index ac1855ac6c82..151656067053 100644 --- a/sdk/core/azure-core-tracing-opentelemetry/azure/core/tracing/ext/opentelemetry_span/__init__.py +++ b/sdk/core/azure-core-tracing-opentelemetry/azure/core/tracing/ext/opentelemetry_span/__init__.py @@ -20,7 +20,7 @@ TYPE_CHECKING = False if TYPE_CHECKING: - from typing import Dict, Optional, Union, Callable, Sequence + from typing import Any, Mapping, Dict, Optional, Union, Callable, Sequence from azure.core.pipeline.transport import HttpRequest, HttpResponse AttributeValue = Union[ diff --git a/sdk/core/azure-core/CHANGELOG.md b/sdk/core/azure-core/CHANGELOG.md index d9f9648f75af..d5c556dbb4a7 100644 --- a/sdk/core/azure-core/CHANGELOG.md +++ b/sdk/core/azure-core/CHANGELOG.md @@ -1,7 +1,7 @@ # Release History -## 1.4.1 (Unreleased) +## 1.5.0 (Unreleased) ### Features diff --git a/sdk/core/azure-core/azure/__init__.py b/sdk/core/azure-core/azure/__init__.py index 0d1f7edf5dc6..0c36c2076ba0 100644 --- a/sdk/core/azure-core/azure/__init__.py +++ b/sdk/core/azure-core/azure/__init__.py @@ -1 +1 @@ -__path__ = __import__('pkgutil').extend_path(__path__, __name__) # type: ignore +__path__ = __import__('pkgutil').extend_path(__path__, __name__) # type: ignore diff --git a/sdk/core/azure-core/azure/core/_version.py b/sdk/core/azure-core/azure/core/_version.py index 8f5d8a3f18e0..1948e34ac9b0 100644 --- a/sdk/core/azure-core/azure/core/_version.py +++ b/sdk/core/azure-core/azure/core/_version.py @@ -9,4 +9,4 @@ # regenerated. # -------------------------------------------------------------------------- -VERSION = "1.4.1" +VERSION = "1.5.0" diff --git a/sdk/core/azure-core/azure/core/exceptions.py b/sdk/core/azure-core/azure/core/exceptions.py index 29a052e52833..8eb8c92f8f64 100644 --- a/sdk/core/azure-core/azure/core/exceptions.py +++ b/sdk/core/azure-core/azure/core/exceptions.py @@ -65,7 +65,9 @@ def raise_with_traceback(exception, *args, **kwargs): message = kwargs.pop("message", "") exc_type, exc_value, exc_traceback = sys.exc_info() # If not called inside a "except", exc_type will be None. Assume it will not happen - exc_msg = "{}, {}: {}".format(message, exc_type.__name__, exc_value) # type: ignore + if exc_type is None: + raise ValueError("raise_with_traceback can only be used in except clauses") + exc_msg = "{}, {}: {}".format(message, exc_type.__name__, exc_value) error = exception(exc_msg, *args, **kwargs) try: raise error.with_traceback(exc_traceback) @@ -204,7 +206,7 @@ def __init__(self, message, *args, **kwargs): self.exc_type = ( self.exc_type.__name__ if self.exc_type else type(self.inner_exception) ) - self.exc_msg = "{}, {}: {}".format(message, self.exc_type, self.exc_value) # type: ignore + self.exc_msg = "{}, {}: {}".format(message, self.exc_type, self.exc_value) self.message = str(message) super(AzureError, self).__init__(self.message, *args) diff --git a/sdk/core/azure-core/azure/core/pipeline/__init__.py b/sdk/core/azure-core/azure/core/pipeline/__init__.py index ab3befcea69a..08854053a761 100644 --- a/sdk/core/azure-core/azure/core/pipeline/__init__.py +++ b/sdk/core/azure-core/azure/core/pipeline/__init__.py @@ -38,7 +38,7 @@ try: from contextlib import ( # pylint: disable=unused-import AbstractContextManager, - ) # type: ignore + ) except ImportError: # Python <= 3.5 class AbstractContextManager(object): # type: ignore diff --git a/sdk/core/azure-core/azure/core/pipeline/_base.py b/sdk/core/azure-core/azure/core/pipeline/_base.py index 9c92eaea76b0..5d5ca0404390 100644 --- a/sdk/core/azure-core/azure/core/pipeline/_base.py +++ b/sdk/core/azure-core/azure/core/pipeline/_base.py @@ -33,6 +33,7 @@ PipelineContext, ) from azure.core.pipeline.policies import HTTPPolicy, SansIOHTTPPolicy +from ._tools import await_result as _await_result HTTPResponseType = TypeVar("HTTPResponseType") HTTPRequestType = TypeVar("HTTPRequestType") @@ -42,16 +43,6 @@ PoliciesType = List[Union[HTTPPolicy, SansIOHTTPPolicy]] -def _await_result(func, *args, **kwargs): - """If func returns an awaitable, raise that this runner can't handle it.""" - result = func(*args, **kwargs) - if hasattr(result, "__await__"): - raise TypeError( - "Policy {} returned awaitable object in non-async pipeline.".format(func) - ) - return result - - class _SansIOHTTPPolicyRunner(HTTPPolicy, Generic[HTTPRequestType, HTTPResponseType]): """Sync implementation of the SansIO policy. @@ -136,7 +127,7 @@ class Pipeline(AbstractContextManager, Generic[HTTPRequestType, HTTPResponseType def __init__(self, transport, policies=None): # type: (HttpTransportType, PoliciesType) -> None self._impl_policies = [] # type: List[HTTPPolicy] - self._transport = transport # type: ignore + self._transport = transport for policy in policies or []: if isinstance(policy, SansIOHTTPPolicy): @@ -163,7 +154,7 @@ def _prepare_multipart_mixed_request(request): Does nothing if "set_multipart_mixed" was never called. """ - multipart_mixed_info = request.multipart_mixed_info # type: ignore + multipart_mixed_info = request.multipart_mixed_info # type: ignore if not multipart_mixed_info: return @@ -186,6 +177,15 @@ def prepare_requests(req): _ for _ in executor.map(prepare_requests, requests) ] + def _prepare_multipart(self, request): + # type: (HTTPRequestType) -> None + # This code is fine as long as HTTPRequestType is actually + # azure.core.pipeline.transport.HTTPRequest, bu we don't check it in here + # since we didn't see (yet) pipeline usage where it's not this actual instance + # class used + self._prepare_multipart_mixed_request(request) + request.prepare_multipart_body() # type: ignore + def run(self, request, **kwargs): # type: (HTTPRequestType, Any) -> PipelineResponse """Runs the HTTP Request through the chained policies. @@ -195,8 +195,7 @@ def run(self, request, **kwargs): :return: The PipelineResponse object :rtype: ~azure.core.pipeline.PipelineResponse """ - self._prepare_multipart_mixed_request(request) - request.prepare_multipart_body() # type: ignore + self._prepare_multipart(request) context = PipelineContext(self._transport, **kwargs) pipeline_request = PipelineRequest( request, context diff --git a/sdk/core/azure-core/azure/core/pipeline/_base_async.py b/sdk/core/azure-core/azure/core/pipeline/_base_async.py index dcf0cdd9b6f3..95694a2f90f4 100644 --- a/sdk/core/azure-core/azure/core/pipeline/_base_async.py +++ b/sdk/core/azure-core/azure/core/pipeline/_base_async.py @@ -29,6 +29,7 @@ from azure.core.pipeline import PipelineRequest, PipelineResponse, PipelineContext from azure.core.pipeline.policies import AsyncHTTPPolicy, SansIOHTTPPolicy +from ._tools_async import await_result as _await_result AsyncHTTPResponseType = TypeVar("AsyncHTTPResponseType") HTTPRequestType = TypeVar("HTTPRequestType") @@ -40,7 +41,7 @@ AsyncPoliciesType = List[Union[AsyncHTTPPolicy, SansIOHTTPPolicy]] try: - from contextlib import AbstractAsyncContextManager # type: ignore + from contextlib import AbstractAsyncContextManager except ImportError: # Python <= 3.7 class AbstractAsyncContextManager(object): # type: ignore @@ -54,15 +55,6 @@ async def __aexit__(self, exc_type, exc_value, traceback): return None -async def _await_result(func, *args, **kwargs): - """If func returns an awaitable, await it.""" - result = func(*args, **kwargs) - if hasattr(result, "__await__"): - # type ignore on await: https://github.com/python/mypy/issues/7587 - return await result # type: ignore - return result - - class _SansIOAsyncHTTPPolicyRunner( AsyncHTTPPolicy[HTTPRequestType, AsyncHTTPResponseType] ): # pylint: disable=unsubscriptable-object @@ -168,13 +160,12 @@ async def __aenter__(self) -> "AsyncPipeline": async def __aexit__(self, *exc_details): # pylint: disable=arguments-differ await self._transport.__aexit__(*exc_details) - async def _prepare_multipart_mixed_request(self, request): - # type: (HTTPRequestType) -> None + async def _prepare_multipart_mixed_request(self, request: HTTPRequestType) -> None: """Will execute the multipart policies. Does nothing if "set_multipart_mixed" was never called. """ - multipart_mixed_info = request.multipart_mixed_info # type: ignore + multipart_mixed_info = request.multipart_mixed_info # type: ignore if not multipart_mixed_info: return @@ -194,6 +185,14 @@ async def prepare_requests(req): await asyncio.gather(*[prepare_requests(req) for req in requests]) + async def _prepare_multipart(self, request: HTTPRequestType) -> None: + # This code is fine as long as HTTPRequestType is actually + # azure.core.pipeline.transport.HTTPRequest, bu we don't check it in here + # since we didn't see (yet) pipeline usage where it's not this actual instance + # class used + await self._prepare_multipart_mixed_request(request) + request.prepare_multipart_body() # type: ignore + async def run(self, request: HTTPRequestType, **kwargs: Any): """Runs the HTTP Request through the chained policies. @@ -202,8 +201,7 @@ async def run(self, request: HTTPRequestType, **kwargs: Any): :return: The PipelineResponse object. :rtype: ~azure.core.pipeline.PipelineResponse """ - await self._prepare_multipart_mixed_request(request) - request.prepare_multipart_body() # type: ignore + await self._prepare_multipart(request) context = PipelineContext(self._transport, **kwargs) pipeline_request = PipelineRequest(request, context) first_node = ( @@ -211,4 +209,4 @@ async def run(self, request: HTTPRequestType, **kwargs: Any): if self._impl_policies else _AsyncTransportRunner(self._transport) ) - return await first_node.send(pipeline_request) # type: ignore + return await first_node.send(pipeline_request) diff --git a/sdk/core/azure-core/azure/core/pipeline/_tools.py b/sdk/core/azure-core/azure/core/pipeline/_tools.py new file mode 100644 index 000000000000..47453ad55721 --- /dev/null +++ b/sdk/core/azure-core/azure/core/pipeline/_tools.py @@ -0,0 +1,34 @@ +# -------------------------------------------------------------------------- +# +# Copyright (c) Microsoft Corporation. All rights reserved. +# +# The MIT License (MIT) +# +# 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. +# +# -------------------------------------------------------------------------- + +def await_result(func, *args, **kwargs): + """If func returns an awaitable, raise that this runner can't handle it.""" + result = func(*args, **kwargs) + if hasattr(result, "__await__"): + raise TypeError( + "Policy {} returned awaitable object in non-async pipeline.".format(func) + ) + return result diff --git a/sdk/core/azure-core/azure/core/pipeline/_tools_async.py b/sdk/core/azure-core/azure/core/pipeline/_tools_async.py new file mode 100644 index 000000000000..d29988bd41ee --- /dev/null +++ b/sdk/core/azure-core/azure/core/pipeline/_tools_async.py @@ -0,0 +1,33 @@ +# -------------------------------------------------------------------------- +# +# Copyright (c) Microsoft Corporation. All rights reserved. +# +# The MIT License (MIT) +# +# 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. +# +# -------------------------------------------------------------------------- + +async def await_result(func, *args, **kwargs): + """If func returns an awaitable, await it.""" + result = func(*args, **kwargs) + if hasattr(result, "__await__"): + # type ignore on await: https://github.com/python/mypy/issues/7587 + return await result # type: ignore + return result diff --git a/sdk/core/azure-core/azure/core/pipeline/policies/_authentication.py b/sdk/core/azure-core/azure/core/pipeline/policies/_authentication.py index bca6c8ade05e..36edd3cbc020 100644 --- a/sdk/core/azure-core/azure/core/pipeline/policies/_authentication.py +++ b/sdk/core/azure-core/azure/core/pipeline/policies/_authentication.py @@ -89,9 +89,9 @@ def on_request(self, request): """ self._enforce_https(request) - if self._need_new_token: + if self._token is None or self._need_new_token: self._token = self._credential.get_token(*self._scopes) - self._update_headers(request.http_request.headers, self._token.token) # type: ignore + self._update_headers(request.http_request.headers, self._token.token) class AzureKeyCredentialPolicy(SansIOHTTPPolicy): diff --git a/sdk/core/azure-core/azure/core/pipeline/policies/_authentication_async.py b/sdk/core/azure-core/azure/core/pipeline/policies/_authentication_async.py index 5a8f40aad255..ca55a9c93e7c 100644 --- a/sdk/core/azure-core/azure/core/pipeline/policies/_authentication_async.py +++ b/sdk/core/azure-core/azure/core/pipeline/policies/_authentication_async.py @@ -35,4 +35,4 @@ async def on_request(self, request: PipelineRequest): with self._lock: if self._need_new_token: self._token = await self._credential.get_token(*self._scopes) # type: ignore - self._update_headers(request.http_request.headers, self._token.token) # type: ignore + self._update_headers(request.http_request.headers, self._token.token) diff --git a/sdk/core/azure-core/azure/core/pipeline/policies/_base.py b/sdk/core/azure-core/azure/core/pipeline/policies/_base.py index 2e2f641d4034..f3af2644a255 100644 --- a/sdk/core/azure-core/azure/core/pipeline/policies/_base.py +++ b/sdk/core/azure-core/azure/core/pipeline/policies/_base.py @@ -50,7 +50,7 @@ _LOGGER = logging.getLogger(__name__) -class HTTPPolicy(ABC, Generic[HTTPRequestType, HTTPResponseType]): # type: ignore +class HTTPPolicy(ABC, Generic[HTTPRequestType, HTTPResponseType]): """An HTTP policy ABC. Use with a synchronous pipeline. @@ -61,7 +61,7 @@ class HTTPPolicy(ABC, Generic[HTTPRequestType, HTTPResponseType]): # type: igno """ def __init__(self): - self.next = None + self.next = None # type: Union[HTTPPolicy, HttpTransport] @abc.abstractmethod def send(self, request): diff --git a/sdk/core/azure-core/azure/core/pipeline/policies/_custom_hook.py b/sdk/core/azure-core/azure/core/pipeline/policies/_custom_hook.py index 468036a764c4..11553e039ad9 100644 --- a/sdk/core/azure-core/azure/core/pipeline/policies/_custom_hook.py +++ b/sdk/core/azure-core/azure/core/pipeline/policies/_custom_hook.py @@ -37,27 +37,27 @@ def __init__(self, **kwargs): # pylint: disable=unused-argument,super-init-not-c self._request_callback = kwargs.get('raw_request_hook') self._response_callback = kwargs.get('raw_response_hook') - def on_request(self, request): # type: ignore # pylint: disable=arguments-differ + def on_request(self, request): # pylint: disable=arguments-differ # type: (PipelineRequest) -> None """This is executed before sending the request to the next policy. :param request: The PipelineRequest object. :type request: ~azure.core.pipeline.PipelineRequest """ - request_callback = request.context.options.pop('raw_request_hook', None) # type: ignore + request_callback = request.context.options.pop('raw_request_hook', None) if request_callback: request.context["raw_request_hook"] = request_callback request_callback(request) elif self._request_callback: self._request_callback(request) - response_callback = request.context.options.pop('raw_response_hook', None) # type: ignore + response_callback = request.context.options.pop('raw_response_hook', None) if response_callback: request.context["raw_response_hook"] = response_callback - def on_response(self, request, response): # type: ignore # pylint: disable=arguments-differ + def on_response(self, request, response): # pylint: disable=arguments-differ # type: (PipelineRequest, PipelineResponse) -> None """This is executed after the request comes back from the policy. diff --git a/sdk/core/azure-core/azure/core/pipeline/policies/_redirect_async.py b/sdk/core/azure-core/azure/core/pipeline/policies/_redirect_async.py index 23751f237714..f9d688bdd4c3 100644 --- a/sdk/core/azure-core/azure/core/pipeline/policies/_redirect_async.py +++ b/sdk/core/azure-core/azure/core/pipeline/policies/_redirect_async.py @@ -30,7 +30,7 @@ from ._redirect import RedirectPolicy -class AsyncRedirectPolicy(RedirectPolicy, AsyncHTTPPolicy): # type: ignore +class AsyncRedirectPolicy(RedirectPolicy, AsyncHTTPPolicy): """An async redirect policy. An async redirect policy in the pipeline can be configured directly or per operation. diff --git a/sdk/core/azure-core/azure/core/pipeline/policies/_retry_async.py b/sdk/core/azure-core/azure/core/pipeline/policies/_retry_async.py index 8b95b11a2f0c..6efad6cf1627 100644 --- a/sdk/core/azure-core/azure/core/pipeline/policies/_retry_async.py +++ b/sdk/core/azure-core/azure/core/pipeline/policies/_retry_async.py @@ -44,7 +44,7 @@ -class AsyncRetryPolicy(RetryPolicy, AsyncHTTPPolicy): # type: ignore +class AsyncRetryPolicy(RetryPolicy, AsyncHTTPPolicy): """Async flavor of the retry policy. The async retry policy in the pipeline can be configured directly, or tweaked on a per-call basis. diff --git a/sdk/core/azure-core/azure/core/pipeline/policies/_universal.py b/sdk/core/azure-core/azure/core/pipeline/policies/_universal.py index 25f3159e74c1..ea4cc0055103 100644 --- a/sdk/core/azure-core/azure/core/pipeline/policies/_universal.py +++ b/sdk/core/azure-core/azure/core/pipeline/policies/_universal.py @@ -154,9 +154,9 @@ def on_request(self, request): elif self._request_id is None: return elif self._request_id is not _Unset: - request_id = self._request_id # type: ignore + request_id = self._request_id elif self._auto_request_id: - request_id = str(uuid.uuid1()) # type: ignore + request_id = str(uuid.uuid1()) if request_id is not unset: header = {"x-ms-client-request-id": request_id} request.http_request.headers.update(header) @@ -286,10 +286,10 @@ def on_request(self, request): _LOGGER.debug("Request body:") # We don't want to log the binary data of a file upload. - if isinstance(http_request.body, types.GeneratorType): # type: ignore + if isinstance(http_request.body, types.GeneratorType): _LOGGER.debug("File upload") else: - _LOGGER.debug(str(http_request.body)) # type: ignore + _LOGGER.debug(str(http_request.body)) except Exception as err: # pylint: disable=broad-except _LOGGER.debug("Failed to log request: %r", err) @@ -498,7 +498,7 @@ def deserialize_from_text( try: if isinstance(data, unicode): # type: ignore # If I'm Python 2.7 and unicode XML will scream if I try a "fromstring" on unicode string - data_as_str = data_as_str.encode(encoding="utf-8") # type: ignore + data_as_str = cast(str, data_as_str.encode(encoding="utf-8")) except NameError: pass return ET.fromstring(data_as_str) diff --git a/sdk/core/azure-core/azure/core/pipeline/transport/_base.py b/sdk/core/azure-core/azure/core/pipeline/transport/_base.py index dbb0c595cf76..33d924a4004d 100644 --- a/sdk/core/azure-core/azure/core/pipeline/transport/_base.py +++ b/sdk/core/azure-core/azure/core/pipeline/transport/_base.py @@ -71,7 +71,7 @@ PipelineResponse, PipelineContext, ) -from .._base import _await_result +from .._tools import await_result as _await_result if TYPE_CHECKING: diff --git a/sdk/core/azure-core/azure/core/pipeline/transport/_base_async.py b/sdk/core/azure-core/azure/core/pipeline/transport/_base_async.py index 4f38d87ca103..d79999ed6297 100644 --- a/sdk/core/azure-core/azure/core/pipeline/transport/_base_async.py +++ b/sdk/core/azure-core/azure/core/pipeline/transport/_base_async.py @@ -28,7 +28,7 @@ import abc from collections.abc import AsyncIterator -from typing import AsyncIterator as AsyncIteratorType, Generic, TypeVar +from typing import AsyncIterator as AsyncIteratorType, TypeVar, Generic from ._base import ( _HttpResponseBase, _HttpClientTransportResponse, @@ -36,7 +36,7 @@ PipelineRequest, PipelineResponse, ) -from .._base_async import _await_result +from .._tools_async import await_result as _await_result try: from contextlib import AbstractAsyncContextManager # type: ignore @@ -52,12 +52,10 @@ async def __aexit__(self, exc_type, exc_value, traceback): """Raise any exception triggered within the runtime context.""" return None - AsyncHTTPResponseType = TypeVar("AsyncHTTPResponseType") HTTPResponseType = TypeVar("HTTPResponseType") HTTPRequestType = TypeVar("HTTPRequestType") - class _ResponseStopIteration(Exception): pass @@ -163,7 +161,7 @@ class AsyncHttpClientTransportResponse(_HttpClientTransportResponse, AsyncHttpRe class AsyncHttpTransport( AbstractAsyncContextManager, abc.ABC, - Generic[HTTPRequestType, AsyncHTTPResponseType], + Generic[HTTPRequestType, AsyncHTTPResponseType] ): """An http sender ABC. """ diff --git a/sdk/core/azure-core/azure/core/pipeline/transport/_base_requests_async.py b/sdk/core/azure-core/azure/core/pipeline/transport/_base_requests_async.py index f43f86ea7d07..37ac114451d9 100644 --- a/sdk/core/azure-core/azure/core/pipeline/transport/_base_requests_async.py +++ b/sdk/core/azure-core/azure/core/pipeline/transport/_base_requests_async.py @@ -34,11 +34,11 @@ async def _retrieve_request_data(self, request): # That's not ideal, but a list is our only choice. Memory not optimal here, # but providing an async generator to a requests based transport is not optimal too new_data = [] - async for part in request.data: # type: ignore + async for part in request.data: new_data.append(part) data_to_send = iter(new_data) else: - data_to_send = request.data # type: ignore + data_to_send = request.data return data_to_send async def __aenter__(self): diff --git a/sdk/core/azure-core/azure/core/pipeline/transport/_requests_asyncio.py b/sdk/core/azure-core/azure/core/pipeline/transport/_requests_asyncio.py index b31ba58e5c2b..4b3494c44931 100644 --- a/sdk/core/azure-core/azure/core/pipeline/transport/_requests_asyncio.py +++ b/sdk/core/azure-core/azure/core/pipeline/transport/_requests_asyncio.py @@ -60,7 +60,7 @@ def _get_running_loop(): #pylint: disable=too-many-ancestors -class AsyncioRequestsTransport(RequestsAsyncTransportBase): # type: ignore +class AsyncioRequestsTransport(RequestsAsyncTransportBase): """Identical implementation as the synchronous RequestsTransport wrapped in a class with asynchronous methods. Uses the built-in asyncio event loop. @@ -103,7 +103,7 @@ async def send(self, request: HttpRequest, **kwargs: Any) -> AsyncHttpResponse: response = await loop.run_in_executor( None, functools.partial( - self.session.request, # type: ignore + self.session.request, request.method, request.url, headers=request.headers, diff --git a/sdk/core/azure-core/azure/core/pipeline/transport/_requests_trio.py b/sdk/core/azure-core/azure/core/pipeline/transport/_requests_trio.py index 6d2a09119ca9..67926d70420d 100644 --- a/sdk/core/azure-core/azure/core/pipeline/transport/_requests_trio.py +++ b/sdk/core/azure-core/azure/core/pipeline/transport/_requests_trio.py @@ -27,8 +27,8 @@ import functools import logging from typing import Any, Callable, Union, Optional, AsyncIterator as AsyncIteratorType -import trio # type: ignore -import urllib3 # type: ignore +import trio +import urllib3 import requests @@ -128,7 +128,7 @@ class TrioRequestsTransportResponse(AsyncHttpResponse, RequestsTransportResponse def stream_download(self, pipeline) -> AsyncIteratorType[bytes]: # type: ignore """Generator for streaming response data. """ - return TrioStreamDownloadGenerator(pipeline, self) # type: ignore + return TrioStreamDownloadGenerator(pipeline, self) class TrioRequestsTransport(RequestsAsyncTransportBase): # type: ignore @@ -174,7 +174,7 @@ async def send(self, request: HttpRequest, **kwargs: Any) -> AsyncHttpResponse: try: response = await trio.to_thread.run_sync( functools.partial( - self.session.request, # type: ignore + self.session.request, request.method, request.url, headers=request.headers, @@ -189,7 +189,7 @@ async def send(self, request: HttpRequest, **kwargs: Any) -> AsyncHttpResponse: except AttributeError: # trio < 0.12.1 response = await trio.run_sync_in_worker_thread( # pylint: disable=no-member functools.partial( - self.session.request, # type: ignore + self.session.request, request.method, request.url, headers=request.headers, diff --git a/sdk/core/azure-core/azure/core/polling/_async_poller.py b/sdk/core/azure-core/azure/core/polling/_async_poller.py index 4d8a468f2ce5..cb71d054cfa4 100644 --- a/sdk/core/azure-core/azure/core/polling/_async_poller.py +++ b/sdk/core/azure-core/azure/core/polling/_async_poller.py @@ -23,24 +23,29 @@ # IN THE SOFTWARE. # # -------------------------------------------------------------------------- +from typing import Generic, TypeVar, Any from ._poller import NoPolling as _NoPolling -class AsyncPollingMethod(object): + +PollingReturnType = TypeVar("PollingReturnType") + + +class AsyncPollingMethod(Generic[PollingReturnType]): """ABC class for polling method. """ - def initialize(self, client, initial_response, deserialization_callback): + def initialize(self, client: Any, initial_response: Any, deserialization_callback: Any) -> None: raise NotImplementedError("This method needs to be implemented") - async def run(self): + async def run(self) -> None: raise NotImplementedError("This method needs to be implemented") - def status(self): + def status(self) -> str: raise NotImplementedError("This method needs to be implemented") - def finished(self): + def finished(self) -> bool: raise NotImplementedError("This method needs to be implemented") - def resource(self): + def resource(self) -> PollingReturnType: raise NotImplementedError("This method needs to be implemented") diff --git a/sdk/core/azure-core/azure/core/polling/_poller.py b/sdk/core/azure-core/azure/core/polling/_poller.py index 93296d6ffc08..033af831be9b 100644 --- a/sdk/core/azure-core/azure/core/polling/_poller.py +++ b/sdk/core/azure-core/azure/core/polling/_poller.py @@ -30,18 +30,18 @@ except ImportError: from urllib.parse import urlparse -from typing import Any, Callable, Union, List, Optional, TYPE_CHECKING -from azure.core.pipeline.transport._base import HttpResponse # type: ignore +from typing import Any, Callable, Union, List, Optional, TypeVar, Generic, TYPE_CHECKING +from azure.core.pipeline.transport._base import HttpResponse from azure.core.tracing.decorator import distributed_trace from azure.core.tracing.common import with_current_context if TYPE_CHECKING: import requests - from msrest.serialization import Model # type: ignore # pylint: disable=unused-import + from msrest.serialization import Model # pylint: disable=unused-import DeserializationCallbackType = Union[Model, Callable[[requests.Response], Model]] +PollingReturnType = TypeVar("PollingReturnType") - -class PollingMethod(object): +class PollingMethod(Generic[PollingReturnType]): """ABC class for polling method. """ def initialize(self, client, initial_response, deserialization_callback): @@ -61,7 +61,7 @@ def finished(self): raise NotImplementedError("This method needs to be implemented") def resource(self): - # type: () -> Any + # type: () -> PollingReturnType raise NotImplementedError("This method needs to be implemented") class NoPolling(PollingMethod): @@ -102,7 +102,7 @@ def resource(self): return self._deserialization_callback(self._initial_response) -class LROPoller(object): +class LROPoller(Generic[PollingReturnType]): """Poller for long running operations. :param client: A pipeline service client @@ -176,7 +176,7 @@ def status(self): return self._polling_method.status() def result(self, timeout=None): - # type: (Optional[int]) -> Model + # type: (Optional[int]) -> PollingReturnType """Return the result of the long running operation, or the result available after the specified timeout. @@ -184,7 +184,7 @@ def result(self, timeout=None): if one is available. :raises ~azure.core.exceptions.HttpResponseError: Server problem with the query. """ - self.wait(timeout) # type: ignore + self.wait(timeout) return self._polling_method.resource() @distributed_trace @@ -203,7 +203,8 @@ def wait(self, timeout=None): self._thread.join(timeout=timeout) try: # Let's handle possible None in forgiveness here - raise self._exception # type: ignore + # https://github.com/python/mypy/issues/8165 + raise self._exception # type: ignore except TypeError: # Was None pass diff --git a/sdk/core/azure-core/azure/core/settings.py b/sdk/core/azure-core/azure/core/settings.py index ab542fba11d2..f6d6a85ede62 100644 --- a/sdk/core/azure-core/azure/core/settings.py +++ b/sdk/core/azure-core/azure/core/settings.py @@ -73,9 +73,8 @@ def convert_bool(value): """ if value in (True, False): - return value # type: ignore - - val = value.lower() # type: ignore + return cast(bool, value) + val = cast(str, value).lower() if val in ["yes", "1", "on", "true", "True"]: return True if val in ["no", "0", "off", "false", "False"]: @@ -112,9 +111,8 @@ def convert_logging(value): """ if value in set(_levels.values()): - return value # type: ignore - - val = value.upper() # type: ignore + return cast(int, value) + val = cast(str, value).upper() level = _levels.get(val) if not level: raise ValueError("Cannot convert {} to log level, valid values are: {}".format(value, ", ".join(_levels))) @@ -127,7 +125,7 @@ def get_opencensus_span(): try: from azure.core.tracing.ext.opencensus_span import OpenCensusSpan # pylint:disable=redefined-outer-name - return OpenCensusSpan # type: ignore + return OpenCensusSpan except ImportError: return None @@ -175,8 +173,7 @@ def convert_tracing_impl(value): value, ", ".join(_tracing_implementation_dict) ) ) - # type ignored until https://github.com/python/mypy/issues/7279 - return wrapper_class # type: ignore + return wrapper_class class PrioritizedSetting(object): diff --git a/sdk/core/azure-core/azure/core/tracing/decorator_async.py b/sdk/core/azure-core/azure/core/tracing/decorator_async.py index de051987274b..16a5e1e7afc2 100644 --- a/sdk/core/azure-core/azure/core/tracing/decorator_async.py +++ b/sdk/core/azure-core/azure/core/tracing/decorator_async.py @@ -65,8 +65,7 @@ def distributed_trace_async( # pylint:disable=function-redefined def decorator(func: Callable[..., Awaitable[T]]) -> Callable[..., Awaitable[T]]: @functools.wraps(func) - async def wrapper_use_tracer(*args, **kwargs): - # type: (*Any, **Any) -> T + async def wrapper_use_tracer(*args: Any, **kwargs: Any) -> T: merge_span = kwargs.pop("merge_span", False) passed_in_parent = kwargs.pop("parent_span", None) diff --git a/sdk/core/azure-core/dev_requirements.txt b/sdk/core/azure-core/dev_requirements.txt index 8b52ac11404e..b90c3caa146b 100644 --- a/sdk/core/azure-core/dev_requirements.txt +++ b/sdk/core/azure-core/dev_requirements.txt @@ -6,4 +6,4 @@ typing_extensions>=3.7.2 opencensus>=0.6.0 opencensus-ext-azure>=0.3.1 opencensus-ext-threading -mock +mock \ No newline at end of file diff --git a/sdk/core/azure-core/tests/azure_core_asynctests/test_authentication.py b/sdk/core/azure-core/tests/azure_core_asynctests/test_authentication.py index 80a5b1333c98..456001b59da5 100644 --- a/sdk/core/azure-core/tests/azure_core_asynctests/test_authentication.py +++ b/sdk/core/azure-core/tests/azure_core_asynctests/test_authentication.py @@ -18,7 +18,8 @@ @pytest.mark.asyncio async def test_bearer_policy_adds_header(): """The bearer token policy should add a header containing a token from its credential""" - expected_token = AccessToken("expected_token", 0) + # 2524608000 == 01/01/2050 @ 12:00am (UTC) + expected_token = AccessToken("expected_token", 2524608000) async def verify_authorization_header(request): assert request.http_request.headers["Authorization"] == "Bearer {}".format(expected_token.token) @@ -37,6 +38,10 @@ async def get_token(_): await pipeline.run(HttpRequest("GET", "https://spam.eggs"), context=None) assert get_token_calls == 1 + await pipeline.run(HttpRequest("GET", "https://spam.eggs"), context=None) + # Didn't need a new token + assert get_token_calls == 1 + @pytest.mark.asyncio async def test_bearer_policy_send(): diff --git a/sdk/core/azure-core/tests/test_authentication.py b/sdk/core/azure-core/tests/test_authentication.py index 0bfeb55a77c8..fb56819b6451 100644 --- a/sdk/core/azure-core/tests/test_authentication.py +++ b/sdk/core/azure-core/tests/test_authentication.py @@ -23,7 +23,8 @@ def test_bearer_policy_adds_header(): """The bearer token policy should add a header containing a token from its credential""" - expected_token = AccessToken("expected_token", 0) + # 2524608000 == 01/01/2050 @ 12:00am (UTC) + expected_token = AccessToken("expected_token", 2524608000) def verify_authorization_header(request): assert request.http_request.headers["Authorization"] == "Bearer {}".format(expected_token.token) @@ -31,10 +32,15 @@ def verify_authorization_header(request): fake_credential = Mock(get_token=Mock(return_value=expected_token)) policies = [BearerTokenCredentialPolicy(fake_credential, "scope"), Mock(send=verify_authorization_header)] - Pipeline(transport=Mock(), policies=policies).run(HttpRequest("GET", "https://spam.eggs")) + pipeline = Pipeline(transport=Mock(), policies=policies) + pipeline.run(HttpRequest("GET", "https://spam.eggs")) assert fake_credential.get_token.call_count == 1 + pipeline.run(HttpRequest("GET", "https://spam.eggs")) + + # Didn't need a new token + assert fake_credential.get_token.call_count == 1 def test_bearer_policy_send(): """The bearer token policy should invoke the next policy's send method and return the result""" diff --git a/sdk/core/azure-mgmt-core/CHANGELOG.md b/sdk/core/azure-mgmt-core/CHANGELOG.md index 69489839e481..fa950b4f0b08 100644 --- a/sdk/core/azure-mgmt-core/CHANGELOG.md +++ b/sdk/core/azure-mgmt-core/CHANGELOG.md @@ -1,6 +1,13 @@ # Release History +## 1.1.0 (unreleased) + +### Features + +- Info logger now logs ARM throttling information #10940 + + ## 1.0.0 (2020-04-09) ### Features diff --git a/sdk/core/azure-mgmt-core/azure/mgmt/core/_async_pipeline_client.py b/sdk/core/azure-mgmt-core/azure/mgmt/core/_async_pipeline_client.py index 4fb083797be7..01cb3b3097ab 100644 --- a/sdk/core/azure-mgmt-core/azure/mgmt/core/_async_pipeline_client.py +++ b/sdk/core/azure-mgmt-core/azure/mgmt/core/_async_pipeline_client.py @@ -27,10 +27,9 @@ from azure.core.pipeline.policies import ( ContentDecodePolicy, DistributedTracingPolicy, - HttpLoggingPolicy, RequestIdPolicy, ) -from .policies import AsyncARMAutoResourceProviderRegistrationPolicy +from .policies import AsyncARMAutoResourceProviderRegistrationPolicy, ARMHttpLoggingPolicy class AsyncARMPipelineClient(AsyncPipelineClient): @@ -66,5 +65,5 @@ def _default_policies(config, **kwargs): config.custom_hook_policy, config.logging_policy, DistributedTracingPolicy(**kwargs), - HttpLoggingPolicy(**kwargs), + ARMHttpLoggingPolicy(**kwargs), ] diff --git a/sdk/core/azure-mgmt-core/azure/mgmt/core/_pipeline_client.py b/sdk/core/azure-mgmt-core/azure/mgmt/core/_pipeline_client.py index 79ec52538973..39cdf9b5505f 100644 --- a/sdk/core/azure-mgmt-core/azure/mgmt/core/_pipeline_client.py +++ b/sdk/core/azure-mgmt-core/azure/mgmt/core/_pipeline_client.py @@ -27,10 +27,9 @@ from azure.core.pipeline.policies import ( ContentDecodePolicy, DistributedTracingPolicy, - HttpLoggingPolicy, RequestIdPolicy, ) -from .policies import ARMAutoResourceProviderRegistrationPolicy +from .policies import ARMAutoResourceProviderRegistrationPolicy, ARMHttpLoggingPolicy class ARMPipelineClient(PipelineClient): @@ -66,5 +65,5 @@ def _default_policies(config, **kwargs): config.custom_hook_policy, config.logging_policy, DistributedTracingPolicy(**kwargs), - HttpLoggingPolicy(**kwargs), + ARMHttpLoggingPolicy(**kwargs), ] diff --git a/sdk/core/azure-mgmt-core/azure/mgmt/core/_version.py b/sdk/core/azure-mgmt-core/azure/mgmt/core/_version.py index 952d3bda0da3..683eba90f4b8 100644 --- a/sdk/core/azure-mgmt-core/azure/mgmt/core/_version.py +++ b/sdk/core/azure-mgmt-core/azure/mgmt/core/_version.py @@ -9,4 +9,4 @@ # regenerated. # -------------------------------------------------------------------------- -VERSION = "1.0.0" +VERSION = "1.1.0" diff --git a/sdk/core/azure-mgmt-core/azure/mgmt/core/policies/__init__.py b/sdk/core/azure-mgmt-core/azure/mgmt/core/policies/__init__.py index cc1d59e2df0c..e84db495c064 100644 --- a/sdk/core/azure-mgmt-core/azure/mgmt/core/policies/__init__.py +++ b/sdk/core/azure-mgmt-core/azure/mgmt/core/policies/__init__.py @@ -24,9 +24,31 @@ # # -------------------------------------------------------------------------- +from azure.core.pipeline.policies import HttpLoggingPolicy from ._base import ARMAutoResourceProviderRegistrationPolicy -__all__ = ["ARMAutoResourceProviderRegistrationPolicy"] + +class ARMHttpLoggingPolicy(HttpLoggingPolicy): + """HttpLoggingPolicy with ARM specific safe headers fopr loggers. + """ + + DEFAULT_HEADERS_WHITELIST = HttpLoggingPolicy.DEFAULT_HEADERS_WHITELIST | set([ + # https://docs.microsoft.com/azure/azure-resource-manager/management/request-limits-and-throttling#remaining-requests + "x-ms-ratelimit-remaining-subscription-reads", + "x-ms-ratelimit-remaining-subscription-writes", + "x-ms-ratelimit-remaining-tenant-reads", + "x-ms-ratelimit-remaining-tenant-writes", + "x-ms-ratelimit-remaining-subscription-resource-requests", + "x-ms-ratelimit-remaining-subscription-resource-entities-read", + "x-ms-ratelimit-remaining-tenant-resource-requests", + "x-ms-ratelimit-remaining-tenant-resource-entities-read", + # https://docs.microsoft.com/azure/virtual-machines/troubleshooting/troubleshooting-throttling-errors#call-rate-informational-response-headers + "x-ms-ratelimit-remaining-resource", + "x-ms-request-charge", + ]) + + +__all__ = ["ARMAutoResourceProviderRegistrationPolicy", "ARMHttpLoggingPolicy"] try: from ._base_async import ( # pylint: disable=unused-import diff --git a/sdk/cosmos/azure-cosmos/azure/cosmos/_cosmos_client_connection.py b/sdk/cosmos/azure-cosmos/azure/cosmos/_cosmos_client_connection.py index b47ae6b022d4..3fa09e0ed51e 100644 --- a/sdk/cosmos/azure-cosmos/azure/cosmos/_cosmos_client_connection.py +++ b/sdk/cosmos/azure-cosmos/azure/cosmos/_cosmos_client_connection.py @@ -24,7 +24,9 @@ """Document client class for the Azure Cosmos database service. """ -from typing import Dict, Any, Optional +# https://github.com/PyCQA/pylint/issues/3112 +# Currently pylint is locked to 2.3.3 and this is fixed in 2.4.4 +from typing import Dict, Any, Optional # pylint: disable=unused-import import six from urllib3.util.retry import Retry from azure.core.paging import ItemPaged # type: ignore diff --git a/sdk/datamigration/azure-mgmt-datamigration/tests/recordings/test_mgmt_datamigration.test_datamigration.yaml b/sdk/datamigration/azure-mgmt-datamigration/tests/recordings/test_mgmt_datamigration.test_datamigration.yaml index d4111891072e..58d00e4eb44e 100644 --- a/sdk/datamigration/azure-mgmt-datamigration/tests/recordings/test_mgmt_datamigration.test_datamigration.yaml +++ b/sdk/datamigration/azure-mgmt-datamigration/tests/recordings/test_mgmt_datamigration.test_datamigration.yaml @@ -7,7 +7,7 @@ interactions: Connection: [keep-alive] Content-Length: ['59'] Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Linux-4.4.0-17134-Microsoft-x86_64-with-Ubuntu-16.04-xenial) + User-Agent: [python/3.5.2 (Linux-4.4.0-17134-Microsoft-x86_64-with-Ubuntu-18.04-bionic) requests/2.19.1 msrest/0.5.5 msrest_azure/0.4.32 azure-mgmt-datamigration/0.1.0 Azure-SDK-For-Python] accept-language: [en-US] @@ -37,7 +37,7 @@ interactions: Connection: [keep-alive] Content-Length: ['95'] Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Linux-4.4.0-17134-Microsoft-x86_64-with-Ubuntu-16.04-xenial) + User-Agent: [python/3.5.2 (Linux-4.4.0-17134-Microsoft-x86_64-with-Ubuntu-18.04-bionic) requests/2.19.1 msrest/0.5.5 msrest_azure/0.4.32 networkmanagementclient/2.0.0 Azure-SDK-For-Python] accept-language: [en-US] @@ -73,7 +73,7 @@ interactions: Accept: [application/json] Accept-Encoding: ['gzip, deflate'] Connection: [keep-alive] - User-Agent: [python/3.5.2 (Linux-4.4.0-17134-Microsoft-x86_64-with-Ubuntu-16.04-xenial) + User-Agent: [python/3.5.2 (Linux-4.4.0-17134-Microsoft-x86_64-with-Ubuntu-18.04-bionic) requests/2.19.1 msrest/0.5.5 msrest_azure/0.4.32 networkmanagementclient/2.0.0 Azure-SDK-For-Python] method: GET @@ -99,7 +99,7 @@ interactions: Accept: [application/json] Accept-Encoding: ['gzip, deflate'] Connection: [keep-alive] - User-Agent: [python/3.5.2 (Linux-4.4.0-17134-Microsoft-x86_64-with-Ubuntu-16.04-xenial) + User-Agent: [python/3.5.2 (Linux-4.4.0-17134-Microsoft-x86_64-with-Ubuntu-18.04-bionic) requests/2.19.1 msrest/0.5.5 msrest_azure/0.4.32 networkmanagementclient/2.0.0 Azure-SDK-For-Python] method: GET @@ -125,7 +125,7 @@ interactions: Accept: [application/json] Accept-Encoding: ['gzip, deflate'] Connection: [keep-alive] - User-Agent: [python/3.5.2 (Linux-4.4.0-17134-Microsoft-x86_64-with-Ubuntu-16.04-xenial) + User-Agent: [python/3.5.2 (Linux-4.4.0-17134-Microsoft-x86_64-with-Ubuntu-18.04-bionic) requests/2.19.1 msrest/0.5.5 msrest_azure/0.4.32 networkmanagementclient/2.0.0 Azure-SDK-For-Python] method: GET @@ -163,7 +163,7 @@ interactions: Connection: [keep-alive] Content-Length: ['48'] Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Linux-4.4.0-17134-Microsoft-x86_64-with-Ubuntu-16.04-xenial) + User-Agent: [python/3.5.2 (Linux-4.4.0-17134-Microsoft-x86_64-with-Ubuntu-18.04-bionic) requests/2.19.1 msrest/0.5.5 msrest_azure/0.4.32 networkmanagementclient/2.0.0 Azure-SDK-For-Python] accept-language: [en-US] @@ -194,7 +194,7 @@ interactions: Accept: [application/json] Accept-Encoding: ['gzip, deflate'] Connection: [keep-alive] - User-Agent: [python/3.5.2 (Linux-4.4.0-17134-Microsoft-x86_64-with-Ubuntu-16.04-xenial) + User-Agent: [python/3.5.2 (Linux-4.4.0-17134-Microsoft-x86_64-with-Ubuntu-18.04-bionic) requests/2.19.1 msrest/0.5.5 msrest_azure/0.4.32 networkmanagementclient/2.0.0 Azure-SDK-For-Python] method: GET @@ -220,7 +220,7 @@ interactions: Accept: [application/json] Accept-Encoding: ['gzip, deflate'] Connection: [keep-alive] - User-Agent: [python/3.5.2 (Linux-4.4.0-17134-Microsoft-x86_64-with-Ubuntu-16.04-xenial) + User-Agent: [python/3.5.2 (Linux-4.4.0-17134-Microsoft-x86_64-with-Ubuntu-18.04-bionic) requests/2.19.1 msrest/0.5.5 msrest_azure/0.4.32 networkmanagementclient/2.0.0 Azure-SDK-For-Python] method: GET @@ -254,7 +254,7 @@ interactions: Connection: [keep-alive] Content-Length: ['279'] Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Linux-4.4.0-17134-Microsoft-x86_64-with-Ubuntu-16.04-xenial) + User-Agent: [python/3.5.2 (Linux-4.4.0-17134-Microsoft-x86_64-with-Ubuntu-18.04-bionic) requests/2.19.1 msrest/0.5.5 msrest_azure/0.4.32 azure-mgmt-datamigration/0.1.0 Azure-SDK-For-Python] accept-language: [en-US] @@ -283,7 +283,7 @@ interactions: Accept: [application/json] Accept-Encoding: ['gzip, deflate'] Connection: [keep-alive] - User-Agent: [python/3.5.2 (Linux-4.4.0-17134-Microsoft-x86_64-with-Ubuntu-16.04-xenial) + User-Agent: [python/3.5.2 (Linux-4.4.0-17134-Microsoft-x86_64-with-Ubuntu-18.04-bionic) requests/2.19.1 msrest/0.5.5 msrest_azure/0.4.32 azure-mgmt-datamigration/0.1.0 Azure-SDK-For-Python] method: GET @@ -309,7 +309,7 @@ interactions: Accept: [application/json] Accept-Encoding: ['gzip, deflate'] Connection: [keep-alive] - User-Agent: [python/3.5.2 (Linux-4.4.0-17134-Microsoft-x86_64-with-Ubuntu-16.04-xenial) + User-Agent: [python/3.5.2 (Linux-4.4.0-17134-Microsoft-x86_64-with-Ubuntu-18.04-bionic) requests/2.19.1 msrest/0.5.5 msrest_azure/0.4.32 azure-mgmt-datamigration/0.1.0 Azure-SDK-For-Python] method: GET @@ -335,7 +335,7 @@ interactions: Accept: [application/json] Accept-Encoding: ['gzip, deflate'] Connection: [keep-alive] - User-Agent: [python/3.5.2 (Linux-4.4.0-17134-Microsoft-x86_64-with-Ubuntu-16.04-xenial) + User-Agent: [python/3.5.2 (Linux-4.4.0-17134-Microsoft-x86_64-with-Ubuntu-18.04-bionic) requests/2.19.1 msrest/0.5.5 msrest_azure/0.4.32 azure-mgmt-datamigration/0.1.0 Azure-SDK-For-Python] method: GET @@ -361,7 +361,7 @@ interactions: Accept: [application/json] Accept-Encoding: ['gzip, deflate'] Connection: [keep-alive] - User-Agent: [python/3.5.2 (Linux-4.4.0-17134-Microsoft-x86_64-with-Ubuntu-16.04-xenial) + User-Agent: [python/3.5.2 (Linux-4.4.0-17134-Microsoft-x86_64-with-Ubuntu-18.04-bionic) requests/2.19.1 msrest/0.5.5 msrest_azure/0.4.32 azure-mgmt-datamigration/0.1.0 Azure-SDK-For-Python] method: GET @@ -387,7 +387,7 @@ interactions: Accept: [application/json] Accept-Encoding: ['gzip, deflate'] Connection: [keep-alive] - User-Agent: [python/3.5.2 (Linux-4.4.0-17134-Microsoft-x86_64-with-Ubuntu-16.04-xenial) + User-Agent: [python/3.5.2 (Linux-4.4.0-17134-Microsoft-x86_64-with-Ubuntu-18.04-bionic) requests/2.19.1 msrest/0.5.5 msrest_azure/0.4.32 azure-mgmt-datamigration/0.1.0 Azure-SDK-For-Python] method: GET @@ -413,7 +413,7 @@ interactions: Accept: [application/json] Accept-Encoding: ['gzip, deflate'] Connection: [keep-alive] - User-Agent: [python/3.5.2 (Linux-4.4.0-17134-Microsoft-x86_64-with-Ubuntu-16.04-xenial) + User-Agent: [python/3.5.2 (Linux-4.4.0-17134-Microsoft-x86_64-with-Ubuntu-18.04-bionic) requests/2.19.1 msrest/0.5.5 msrest_azure/0.4.32 azure-mgmt-datamigration/0.1.0 Azure-SDK-For-Python] method: GET @@ -439,7 +439,7 @@ interactions: Accept: [application/json] Accept-Encoding: ['gzip, deflate'] Connection: [keep-alive] - User-Agent: [python/3.5.2 (Linux-4.4.0-17134-Microsoft-x86_64-with-Ubuntu-16.04-xenial) + User-Agent: [python/3.5.2 (Linux-4.4.0-17134-Microsoft-x86_64-with-Ubuntu-18.04-bionic) requests/2.19.1 msrest/0.5.5 msrest_azure/0.4.32 azure-mgmt-datamigration/0.1.0 Azure-SDK-For-Python] method: GET @@ -465,7 +465,7 @@ interactions: Accept: [application/json] Accept-Encoding: ['gzip, deflate'] Connection: [keep-alive] - User-Agent: [python/3.5.2 (Linux-4.4.0-17134-Microsoft-x86_64-with-Ubuntu-16.04-xenial) + User-Agent: [python/3.5.2 (Linux-4.4.0-17134-Microsoft-x86_64-with-Ubuntu-18.04-bionic) requests/2.19.1 msrest/0.5.5 msrest_azure/0.4.32 azure-mgmt-datamigration/0.1.0 Azure-SDK-For-Python] method: GET @@ -491,7 +491,7 @@ interactions: Accept: [application/json] Accept-Encoding: ['gzip, deflate'] Connection: [keep-alive] - User-Agent: [python/3.5.2 (Linux-4.4.0-17134-Microsoft-x86_64-with-Ubuntu-16.04-xenial) + User-Agent: [python/3.5.2 (Linux-4.4.0-17134-Microsoft-x86_64-with-Ubuntu-18.04-bionic) requests/2.19.1 msrest/0.5.5 msrest_azure/0.4.32 azure-mgmt-datamigration/0.1.0 Azure-SDK-For-Python] method: GET @@ -517,7 +517,7 @@ interactions: Accept: [application/json] Accept-Encoding: ['gzip, deflate'] Connection: [keep-alive] - User-Agent: [python/3.5.2 (Linux-4.4.0-17134-Microsoft-x86_64-with-Ubuntu-16.04-xenial) + User-Agent: [python/3.5.2 (Linux-4.4.0-17134-Microsoft-x86_64-with-Ubuntu-18.04-bionic) requests/2.19.1 msrest/0.5.5 msrest_azure/0.4.32 azure-mgmt-datamigration/0.1.0 Azure-SDK-For-Python] method: GET @@ -543,7 +543,7 @@ interactions: Accept: [application/json] Accept-Encoding: ['gzip, deflate'] Connection: [keep-alive] - User-Agent: [python/3.5.2 (Linux-4.4.0-17134-Microsoft-x86_64-with-Ubuntu-16.04-xenial) + User-Agent: [python/3.5.2 (Linux-4.4.0-17134-Microsoft-x86_64-with-Ubuntu-18.04-bionic) requests/2.19.1 msrest/0.5.5 msrest_azure/0.4.32 azure-mgmt-datamigration/0.1.0 Azure-SDK-For-Python] method: GET @@ -569,7 +569,7 @@ interactions: Accept: [application/json] Accept-Encoding: ['gzip, deflate'] Connection: [keep-alive] - User-Agent: [python/3.5.2 (Linux-4.4.0-17134-Microsoft-x86_64-with-Ubuntu-16.04-xenial) + User-Agent: [python/3.5.2 (Linux-4.4.0-17134-Microsoft-x86_64-with-Ubuntu-18.04-bionic) requests/2.19.1 msrest/0.5.5 msrest_azure/0.4.32 azure-mgmt-datamigration/0.1.0 Azure-SDK-For-Python] method: GET @@ -595,7 +595,7 @@ interactions: Accept: [application/json] Accept-Encoding: ['gzip, deflate'] Connection: [keep-alive] - User-Agent: [python/3.5.2 (Linux-4.4.0-17134-Microsoft-x86_64-with-Ubuntu-16.04-xenial) + User-Agent: [python/3.5.2 (Linux-4.4.0-17134-Microsoft-x86_64-with-Ubuntu-18.04-bionic) requests/2.19.1 msrest/0.5.5 msrest_azure/0.4.32 azure-mgmt-datamigration/0.1.0 Azure-SDK-For-Python] method: GET @@ -621,7 +621,7 @@ interactions: Accept: [application/json] Accept-Encoding: ['gzip, deflate'] Connection: [keep-alive] - User-Agent: [python/3.5.2 (Linux-4.4.0-17134-Microsoft-x86_64-with-Ubuntu-16.04-xenial) + User-Agent: [python/3.5.2 (Linux-4.4.0-17134-Microsoft-x86_64-with-Ubuntu-18.04-bionic) requests/2.19.1 msrest/0.5.5 msrest_azure/0.4.32 azure-mgmt-datamigration/0.1.0 Azure-SDK-For-Python] method: GET @@ -647,7 +647,7 @@ interactions: Accept: [application/json] Accept-Encoding: ['gzip, deflate'] Connection: [keep-alive] - User-Agent: [python/3.5.2 (Linux-4.4.0-17134-Microsoft-x86_64-with-Ubuntu-16.04-xenial) + User-Agent: [python/3.5.2 (Linux-4.4.0-17134-Microsoft-x86_64-with-Ubuntu-18.04-bionic) requests/2.19.1 msrest/0.5.5 msrest_azure/0.4.32 azure-mgmt-datamigration/0.1.0 Azure-SDK-For-Python] method: GET @@ -673,7 +673,7 @@ interactions: Accept: [application/json] Accept-Encoding: ['gzip, deflate'] Connection: [keep-alive] - User-Agent: [python/3.5.2 (Linux-4.4.0-17134-Microsoft-x86_64-with-Ubuntu-16.04-xenial) + User-Agent: [python/3.5.2 (Linux-4.4.0-17134-Microsoft-x86_64-with-Ubuntu-18.04-bionic) requests/2.19.1 msrest/0.5.5 msrest_azure/0.4.32 azure-mgmt-datamigration/0.1.0 Azure-SDK-For-Python] method: GET @@ -699,7 +699,7 @@ interactions: Accept: [application/json] Accept-Encoding: ['gzip, deflate'] Connection: [keep-alive] - User-Agent: [python/3.5.2 (Linux-4.4.0-17134-Microsoft-x86_64-with-Ubuntu-16.04-xenial) + User-Agent: [python/3.5.2 (Linux-4.4.0-17134-Microsoft-x86_64-with-Ubuntu-18.04-bionic) requests/2.19.1 msrest/0.5.5 msrest_azure/0.4.32 azure-mgmt-datamigration/0.1.0 Azure-SDK-For-Python] method: GET @@ -725,7 +725,7 @@ interactions: Accept: [application/json] Accept-Encoding: ['gzip, deflate'] Connection: [keep-alive] - User-Agent: [python/3.5.2 (Linux-4.4.0-17134-Microsoft-x86_64-with-Ubuntu-16.04-xenial) + User-Agent: [python/3.5.2 (Linux-4.4.0-17134-Microsoft-x86_64-with-Ubuntu-18.04-bionic) requests/2.19.1 msrest/0.5.5 msrest_azure/0.4.32 azure-mgmt-datamigration/0.1.0 Azure-SDK-For-Python] method: GET @@ -751,7 +751,7 @@ interactions: Accept: [application/json] Accept-Encoding: ['gzip, deflate'] Connection: [keep-alive] - User-Agent: [python/3.5.2 (Linux-4.4.0-17134-Microsoft-x86_64-with-Ubuntu-16.04-xenial) + User-Agent: [python/3.5.2 (Linux-4.4.0-17134-Microsoft-x86_64-with-Ubuntu-18.04-bionic) requests/2.19.1 msrest/0.5.5 msrest_azure/0.4.32 azure-mgmt-datamigration/0.1.0 Azure-SDK-For-Python] method: GET @@ -777,7 +777,7 @@ interactions: Accept: [application/json] Accept-Encoding: ['gzip, deflate'] Connection: [keep-alive] - User-Agent: [python/3.5.2 (Linux-4.4.0-17134-Microsoft-x86_64-with-Ubuntu-16.04-xenial) + User-Agent: [python/3.5.2 (Linux-4.4.0-17134-Microsoft-x86_64-with-Ubuntu-18.04-bionic) requests/2.19.1 msrest/0.5.5 msrest_azure/0.4.32 azure-mgmt-datamigration/0.1.0 Azure-SDK-For-Python] method: GET @@ -803,7 +803,7 @@ interactions: Accept: [application/json] Accept-Encoding: ['gzip, deflate'] Connection: [keep-alive] - User-Agent: [python/3.5.2 (Linux-4.4.0-17134-Microsoft-x86_64-with-Ubuntu-16.04-xenial) + User-Agent: [python/3.5.2 (Linux-4.4.0-17134-Microsoft-x86_64-with-Ubuntu-18.04-bionic) requests/2.19.1 msrest/0.5.5 msrest_azure/0.4.32 azure-mgmt-datamigration/0.1.0 Azure-SDK-For-Python] method: GET @@ -829,7 +829,7 @@ interactions: Accept: [application/json] Accept-Encoding: ['gzip, deflate'] Connection: [keep-alive] - User-Agent: [python/3.5.2 (Linux-4.4.0-17134-Microsoft-x86_64-with-Ubuntu-16.04-xenial) + User-Agent: [python/3.5.2 (Linux-4.4.0-17134-Microsoft-x86_64-with-Ubuntu-18.04-bionic) requests/2.19.1 msrest/0.5.5 msrest_azure/0.4.32 azure-mgmt-datamigration/0.1.0 Azure-SDK-For-Python] method: GET @@ -855,7 +855,7 @@ interactions: Accept: [application/json] Accept-Encoding: ['gzip, deflate'] Connection: [keep-alive] - User-Agent: [python/3.5.2 (Linux-4.4.0-17134-Microsoft-x86_64-with-Ubuntu-16.04-xenial) + User-Agent: [python/3.5.2 (Linux-4.4.0-17134-Microsoft-x86_64-with-Ubuntu-18.04-bionic) requests/2.19.1 msrest/0.5.5 msrest_azure/0.4.32 azure-mgmt-datamigration/0.1.0 Azure-SDK-For-Python] method: GET @@ -881,7 +881,7 @@ interactions: Accept: [application/json] Accept-Encoding: ['gzip, deflate'] Connection: [keep-alive] - User-Agent: [python/3.5.2 (Linux-4.4.0-17134-Microsoft-x86_64-with-Ubuntu-16.04-xenial) + User-Agent: [python/3.5.2 (Linux-4.4.0-17134-Microsoft-x86_64-with-Ubuntu-18.04-bionic) requests/2.19.1 msrest/0.5.5 msrest_azure/0.4.32 azure-mgmt-datamigration/0.1.0 Azure-SDK-For-Python] method: GET @@ -907,7 +907,7 @@ interactions: Accept: [application/json] Accept-Encoding: ['gzip, deflate'] Connection: [keep-alive] - User-Agent: [python/3.5.2 (Linux-4.4.0-17134-Microsoft-x86_64-with-Ubuntu-16.04-xenial) + User-Agent: [python/3.5.2 (Linux-4.4.0-17134-Microsoft-x86_64-with-Ubuntu-18.04-bionic) requests/2.19.1 msrest/0.5.5 msrest_azure/0.4.32 azure-mgmt-datamigration/0.1.0 Azure-SDK-For-Python] method: GET @@ -933,7 +933,7 @@ interactions: Accept: [application/json] Accept-Encoding: ['gzip, deflate'] Connection: [keep-alive] - User-Agent: [python/3.5.2 (Linux-4.4.0-17134-Microsoft-x86_64-with-Ubuntu-16.04-xenial) + User-Agent: [python/3.5.2 (Linux-4.4.0-17134-Microsoft-x86_64-with-Ubuntu-18.04-bionic) requests/2.19.1 msrest/0.5.5 msrest_azure/0.4.32 azure-mgmt-datamigration/0.1.0 Azure-SDK-For-Python] method: GET @@ -959,7 +959,7 @@ interactions: Accept: [application/json] Accept-Encoding: ['gzip, deflate'] Connection: [keep-alive] - User-Agent: [python/3.5.2 (Linux-4.4.0-17134-Microsoft-x86_64-with-Ubuntu-16.04-xenial) + User-Agent: [python/3.5.2 (Linux-4.4.0-17134-Microsoft-x86_64-with-Ubuntu-18.04-bionic) requests/2.19.1 msrest/0.5.5 msrest_azure/0.4.32 azure-mgmt-datamigration/0.1.0 Azure-SDK-For-Python] method: GET @@ -985,7 +985,7 @@ interactions: Accept: [application/json] Accept-Encoding: ['gzip, deflate'] Connection: [keep-alive] - User-Agent: [python/3.5.2 (Linux-4.4.0-17134-Microsoft-x86_64-with-Ubuntu-16.04-xenial) + User-Agent: [python/3.5.2 (Linux-4.4.0-17134-Microsoft-x86_64-with-Ubuntu-18.04-bionic) requests/2.19.1 msrest/0.5.5 msrest_azure/0.4.32 azure-mgmt-datamigration/0.1.0 Azure-SDK-For-Python] method: GET @@ -1013,7 +1013,7 @@ interactions: Accept: [application/json] Accept-Encoding: ['gzip, deflate'] Connection: [keep-alive] - User-Agent: [python/3.5.2 (Linux-4.4.0-17134-Microsoft-x86_64-with-Ubuntu-16.04-xenial) + User-Agent: [python/3.5.2 (Linux-4.4.0-17134-Microsoft-x86_64-with-Ubuntu-18.04-bionic) requests/2.19.1 msrest/0.5.5 msrest_azure/0.4.32 azure-mgmt-datamigration/0.1.0 Azure-SDK-For-Python] accept-language: [en-US] @@ -1044,7 +1044,7 @@ interactions: Connection: [keep-alive] Content-Length: ['59'] Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Linux-4.4.0-17134-Microsoft-x86_64-with-Ubuntu-16.04-xenial) + User-Agent: [python/3.5.2 (Linux-4.4.0-17134-Microsoft-x86_64-with-Ubuntu-18.04-bionic) requests/2.19.1 msrest/0.5.5 msrest_azure/0.4.32 azure-mgmt-datamigration/0.1.0 Azure-SDK-For-Python] accept-language: [en-US] @@ -1075,7 +1075,7 @@ interactions: Connection: [keep-alive] Content-Length: ['93'] Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Linux-4.4.0-17134-Microsoft-x86_64-with-Ubuntu-16.04-xenial) + User-Agent: [python/3.5.2 (Linux-4.4.0-17134-Microsoft-x86_64-with-Ubuntu-18.04-bionic) requests/2.19.1 msrest/0.5.5 msrest_azure/0.4.32 azure-mgmt-datamigration/0.1.0 Azure-SDK-For-Python] accept-language: [en-US] @@ -1102,7 +1102,7 @@ interactions: Accept: [application/json] Accept-Encoding: ['gzip, deflate'] Connection: [keep-alive] - User-Agent: [python/3.5.2 (Linux-4.4.0-17134-Microsoft-x86_64-with-Ubuntu-16.04-xenial) + User-Agent: [python/3.5.2 (Linux-4.4.0-17134-Microsoft-x86_64-with-Ubuntu-18.04-bionic) requests/2.19.1 msrest/0.5.5 msrest_azure/0.4.32 azure-mgmt-datamigration/0.1.0 Azure-SDK-For-Python] accept-language: [en-US] @@ -1142,7 +1142,7 @@ interactions: Connection: [keep-alive] Content-Length: ['914'] Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Linux-4.4.0-17134-Microsoft-x86_64-with-Ubuntu-16.04-xenial) + User-Agent: [python/3.5.2 (Linux-4.4.0-17134-Microsoft-x86_64-with-Ubuntu-18.04-bionic) requests/2.19.1 msrest/0.5.5 msrest_azure/0.4.32 azure-mgmt-datamigration/0.1.0 Azure-SDK-For-Python] accept-language: [en-US] @@ -1169,7 +1169,7 @@ interactions: Accept: [application/json] Accept-Encoding: ['gzip, deflate'] Connection: [keep-alive] - User-Agent: [python/3.5.2 (Linux-4.4.0-17134-Microsoft-x86_64-with-Ubuntu-16.04-xenial) + User-Agent: [python/3.5.2 (Linux-4.4.0-17134-Microsoft-x86_64-with-Ubuntu-18.04-bionic) requests/2.19.1 msrest/0.5.5 msrest_azure/0.4.32 azure-mgmt-datamigration/0.1.0 Azure-SDK-For-Python] accept-language: [en-US] @@ -1198,7 +1198,7 @@ interactions: Accept-Encoding: ['gzip, deflate'] Connection: [keep-alive] Content-Length: ['0'] - User-Agent: [python/3.5.2 (Linux-4.4.0-17134-Microsoft-x86_64-with-Ubuntu-16.04-xenial) + User-Agent: [python/3.5.2 (Linux-4.4.0-17134-Microsoft-x86_64-with-Ubuntu-18.04-bionic) requests/2.19.1 msrest/0.5.5 msrest_azure/0.4.32 azure-mgmt-datamigration/0.1.0 Azure-SDK-For-Python] accept-language: [en-US] @@ -1224,7 +1224,7 @@ interactions: Accept-Encoding: ['gzip, deflate'] Connection: [keep-alive] Content-Length: ['0'] - User-Agent: [python/3.5.2 (Linux-4.4.0-17134-Microsoft-x86_64-with-Ubuntu-16.04-xenial) + User-Agent: [python/3.5.2 (Linux-4.4.0-17134-Microsoft-x86_64-with-Ubuntu-18.04-bionic) requests/2.19.1 msrest/0.5.5 msrest_azure/0.4.32 azure-mgmt-datamigration/0.1.0 Azure-SDK-For-Python] accept-language: [en-US] @@ -1250,7 +1250,7 @@ interactions: Accept-Encoding: ['gzip, deflate'] Connection: [keep-alive] Content-Length: ['0'] - User-Agent: [python/3.5.2 (Linux-4.4.0-17134-Microsoft-x86_64-with-Ubuntu-16.04-xenial) + User-Agent: [python/3.5.2 (Linux-4.4.0-17134-Microsoft-x86_64-with-Ubuntu-18.04-bionic) requests/2.19.1 msrest/0.5.5 msrest_azure/0.4.32 azure-mgmt-datamigration/0.1.0 Azure-SDK-For-Python] accept-language: [en-US] @@ -1277,7 +1277,7 @@ interactions: Accept: [application/json] Accept-Encoding: ['gzip, deflate'] Connection: [keep-alive] - User-Agent: [python/3.5.2 (Linux-4.4.0-17134-Microsoft-x86_64-with-Ubuntu-16.04-xenial) + User-Agent: [python/3.5.2 (Linux-4.4.0-17134-Microsoft-x86_64-with-Ubuntu-18.04-bionic) requests/2.19.1 msrest/0.5.5 msrest_azure/0.4.32 azure-mgmt-datamigration/0.1.0 Azure-SDK-For-Python] method: GET @@ -1303,7 +1303,7 @@ interactions: Accept: [application/json] Accept-Encoding: ['gzip, deflate'] Connection: [keep-alive] - User-Agent: [python/3.5.2 (Linux-4.4.0-17134-Microsoft-x86_64-with-Ubuntu-16.04-xenial) + User-Agent: [python/3.5.2 (Linux-4.4.0-17134-Microsoft-x86_64-with-Ubuntu-18.04-bionic) requests/2.19.1 msrest/0.5.5 msrest_azure/0.4.32 azure-mgmt-datamigration/0.1.0 Azure-SDK-For-Python] method: GET @@ -1329,7 +1329,7 @@ interactions: Accept: [application/json] Accept-Encoding: ['gzip, deflate'] Connection: [keep-alive] - User-Agent: [python/3.5.2 (Linux-4.4.0-17134-Microsoft-x86_64-with-Ubuntu-16.04-xenial) + User-Agent: [python/3.5.2 (Linux-4.4.0-17134-Microsoft-x86_64-with-Ubuntu-18.04-bionic) requests/2.19.1 msrest/0.5.5 msrest_azure/0.4.32 azure-mgmt-datamigration/0.1.0 Azure-SDK-For-Python] method: GET @@ -1355,7 +1355,7 @@ interactions: Accept: [application/json] Accept-Encoding: ['gzip, deflate'] Connection: [keep-alive] - User-Agent: [python/3.5.2 (Linux-4.4.0-17134-Microsoft-x86_64-with-Ubuntu-16.04-xenial) + User-Agent: [python/3.5.2 (Linux-4.4.0-17134-Microsoft-x86_64-with-Ubuntu-18.04-bionic) requests/2.19.1 msrest/0.5.5 msrest_azure/0.4.32 azure-mgmt-datamigration/0.1.0 Azure-SDK-For-Python] method: GET @@ -1381,7 +1381,7 @@ interactions: Accept: [application/json] Accept-Encoding: ['gzip, deflate'] Connection: [keep-alive] - User-Agent: [python/3.5.2 (Linux-4.4.0-17134-Microsoft-x86_64-with-Ubuntu-16.04-xenial) + User-Agent: [python/3.5.2 (Linux-4.4.0-17134-Microsoft-x86_64-with-Ubuntu-18.04-bionic) requests/2.19.1 msrest/0.5.5 msrest_azure/0.4.32 azure-mgmt-datamigration/0.1.0 Azure-SDK-For-Python] method: GET @@ -1407,7 +1407,7 @@ interactions: Accept: [application/json] Accept-Encoding: ['gzip, deflate'] Connection: [keep-alive] - User-Agent: [python/3.5.2 (Linux-4.4.0-17134-Microsoft-x86_64-with-Ubuntu-16.04-xenial) + User-Agent: [python/3.5.2 (Linux-4.4.0-17134-Microsoft-x86_64-with-Ubuntu-18.04-bionic) requests/2.19.1 msrest/0.5.5 msrest_azure/0.4.32 azure-mgmt-datamigration/0.1.0 Azure-SDK-For-Python] method: GET @@ -1435,7 +1435,7 @@ interactions: Connection: [keep-alive] Content-Length: ['59'] Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Linux-4.4.0-17134-Microsoft-x86_64-with-Ubuntu-16.04-xenial) + User-Agent: [python/3.5.2 (Linux-4.4.0-17134-Microsoft-x86_64-with-Ubuntu-18.04-bionic) requests/2.19.1 msrest/0.5.5 msrest_azure/0.4.32 azure-mgmt-datamigration/0.1.0 Azure-SDK-For-Python] accept-language: [en-US] diff --git a/sdk/eventhub/azure-eventhub-checkpointstoreblob-aio/dev_requirements.txt b/sdk/eventhub/azure-eventhub-checkpointstoreblob-aio/dev_requirements.txt index 8b068466e84b..9b191e86dc54 100644 --- a/sdk/eventhub/azure-eventhub-checkpointstoreblob-aio/dev_requirements.txt +++ b/sdk/eventhub/azure-eventhub-checkpointstoreblob-aio/dev_requirements.txt @@ -1,2 +1,3 @@ -e ../../../tools/azure-sdk-tools +../../core/azure-core ../azure-eventhub diff --git a/sdk/eventhub/azure-eventhub-checkpointstoreblob/dev_requirements.txt b/sdk/eventhub/azure-eventhub-checkpointstoreblob/dev_requirements.txt index 8b068466e84b..9b191e86dc54 100644 --- a/sdk/eventhub/azure-eventhub-checkpointstoreblob/dev_requirements.txt +++ b/sdk/eventhub/azure-eventhub-checkpointstoreblob/dev_requirements.txt @@ -1,2 +1,3 @@ -e ../../../tools/azure-sdk-tools +../../core/azure-core ../azure-eventhub diff --git a/sdk/eventhub/azure-eventhub/CHANGELOG.md b/sdk/eventhub/azure-eventhub/CHANGELOG.md index 4e87eab6dbdf..13e9b1eb8ec0 100644 --- a/sdk/eventhub/azure-eventhub/CHANGELOG.md +++ b/sdk/eventhub/azure-eventhub/CHANGELOG.md @@ -1,7 +1,14 @@ # Release History -## 5.1.0b2 (Unreleased) +## 5.1.0 (2020-05-04) +**New Features** + +- `EventHubProducerClient.send_batch` accepts either an `EventDataBatch` or a finite list of `EventData`. #9181 +- Added enqueueTime to span links of distributed tracing. #9599 + +**Bug fixes** +- Fixed a bug that turned `azure.eventhub.EventhubConsumerClient` into an exclusive receiver when it has no checkpoint store. #11181 ## 5.1.0b1 (2020-04-06) diff --git a/sdk/eventhub/azure-eventhub/README.md b/sdk/eventhub/azure-eventhub/README.md index c03b8e67ca1c..2cff00a3dd08 100644 --- a/sdk/eventhub/azure-eventhub/README.md +++ b/sdk/eventhub/azure-eventhub/README.md @@ -13,7 +13,7 @@ The Azure Event Hubs client library allows for publishing and consuming of Azure - Observe interesting operations and interactions happening within your business or other ecosystem, allowing loosely coupled systems to interact without the need to bind them together. - Receive events from one or more publishers, transform them to better meet the needs of your ecosystem, then publish the transformed events to a new stream for consumers to observe. -[Source code](./) | [Package (PyPi)](https://pypi.org/project/azure-eventhub/5.1.0b1) | [API reference documentation](https://azuresdkdocs.blob.core.windows.net/$web/python/azure-eventhub/5.1.0b1/azure.eventhub.html) | [Product documentation](https://docs.microsoft.com/en-us/azure/event-hubs/) | [Samples](https://github.com/Azure/azure-sdk-for-python/tree/master/sdk/eventhub/azure-eventhub/samples) +[Source code](./) | [Package (PyPi)](https://pypi.org/project/azure-eventhub/) | [API reference documentation](https://azuresdkdocs.blob.core.windows.net/$web/python/azure-eventhub/5.1.0/azure.eventhub.html) | [Product documentation](https://docs.microsoft.com/en-us/azure/event-hubs/) | [Samples](https://github.com/Azure/azure-sdk-for-python/tree/master/sdk/eventhub/azure-eventhub/samples) ## Getting started ### Prerequisites @@ -423,7 +423,7 @@ Please take a look at the [samples](./samples) directory for detailed examples o ### Documentation -Reference documentation is available [here](https://azuresdkdocs.blob.core.windows.net/$web/python/azure-eventhub/5.1.0b1/azure.eventhub.html). +Reference documentation is available [here](https://azuresdkdocs.blob.core.windows.net/$web/python/azure-eventhub/5.1.0/azure.eventhub.html). ### Provide Feedback diff --git a/sdk/eventhub/azure-eventhub/azure/eventhub/_common.py b/sdk/eventhub/azure-eventhub/azure/eventhub/_common.py index 74491e4dff99..975cd177ccb3 100644 --- a/sdk/eventhub/azure-eventhub/azure/eventhub/_common.py +++ b/sdk/eventhub/azure-eventhub/azure/eventhub/_common.py @@ -374,6 +374,15 @@ def _from_batch(cls, batch_data, partition_key=None): ) return batch_data_instance + def _load_events(self, events): + for event_data in events: + try: + self.add(event_data) + except ValueError: + raise ValueError("The combined size of EventData collection exceeds the Event Hub frame size limit. " + "Please send a smaller collection of EventData, or use EventDataBatch, " + "which is guaranteed to be under the frame size limit") + @property def size_in_bytes(self): # type: () -> int diff --git a/sdk/eventhub/azure-eventhub/azure/eventhub/_consumer_client.py b/sdk/eventhub/azure-eventhub/azure/eventhub/_consumer_client.py index 2f3418dff687..a9041f60b715 100644 --- a/sdk/eventhub/azure-eventhub/azure/eventhub/_consumer_client.py +++ b/sdk/eventhub/azure-eventhub/azure/eventhub/_consumer_client.py @@ -43,8 +43,8 @@ class EventHubConsumerClient(ClientBase): `EventHubConsumerClient`. If a checkpoint store is not provided, the checkpoint will be maintained internally in memory. - An `EventHubConsumerClient` can also receive from a specific partition when you call its method `receive()` - and specify the partition_id. + An `EventHubConsumerClient` can also receive from a specific partition when you call its method `receive()` or + `receive_batch()` and specify the partition_id. Load-balancing won't work in single-partition mode. But users can still save checkpoints if the checkpoint_store is set. diff --git a/sdk/eventhub/azure-eventhub/azure/eventhub/_eventprocessor/event_processor.py b/sdk/eventhub/azure-eventhub/azure/eventhub/_eventprocessor/event_processor.py index 1d322ff03751..634ed955d3a5 100644 --- a/sdk/eventhub/azure-eventhub/azure/eventhub/_eventprocessor/event_processor.py +++ b/sdk/eventhub/azure-eventhub/azure/eventhub/_eventprocessor/event_processor.py @@ -74,9 +74,8 @@ def __init__( self._partition_close_handler = kwargs.get( "on_partition_close", None ) # type: Optional[Callable[[PartitionContext, CloseReason], None]] - self._checkpoint_store = kwargs.get( - "checkpoint_store" - ) or InMemoryCheckpointStore() # type: Optional[CheckpointStore] + checkpoint_store = kwargs.get("checkpoint_store") # type: Optional[CheckpointStore] + self._checkpoint_store = checkpoint_store or InMemoryCheckpointStore() self._initial_event_position = kwargs.get( "initial_event_position", "@latest" ) # type: Union[str, int, datetime, Dict[str, Any]] @@ -93,7 +92,7 @@ def __init__( # Receive parameters self._owner_level = kwargs.get("owner_level", None) # type: Optional[int] - if "checkpoint_store" in kwargs and self._owner_level is None: + if checkpoint_store and self._owner_level is None: self._owner_level = 0 self._prefetch = kwargs.get("prefetch", None) # type: Optional[int] self._track_last_enqueued_event_properties = kwargs.get( diff --git a/sdk/eventhub/azure-eventhub/azure/eventhub/_producer_client.py b/sdk/eventhub/azure-eventhub/azure/eventhub/_producer_client.py index 0a30fba39a18..bce3efb9d67a 100644 --- a/sdk/eventhub/azure-eventhub/azure/eventhub/_producer_client.py +++ b/sdk/eventhub/azure-eventhub/azure/eventhub/_producer_client.py @@ -6,13 +6,14 @@ import threading from typing import Any, Union, TYPE_CHECKING, Dict, List, Optional, cast + from uamqp import constants from .exceptions import ConnectError, EventHubError from ._client_base import ClientBase from ._producer import EventHubProducer from ._constants import ALL_PARTITIONS -from ._common import EventDataBatch +from ._common import EventDataBatch, EventData if TYPE_CHECKING: from azure.core.credentials import TokenCredential @@ -183,13 +184,28 @@ def from_connection_string(cls, conn_str, **kwargs): return cls(**constructor_args) def send_batch(self, event_data_batch, **kwargs): - # type: (EventDataBatch, Any) -> None + # type: (Union[EventDataBatch, List[EventData]], Any) -> None """Sends event data and blocks until acknowledgement is received or operation times out. - :param event_data_batch: The EventDataBatch object to be sent. - :type event_data_batch: ~azure.eventhub.EventDataBatch + If you're sending a finite list of `EventData` and you know it's within the size limit of the event hub + frame size limit, you can send them with a `send_batch` call. Otherwise, use :meth:`create_batch` + to create `EventDataBatch` and add `EventData` into the batch one by one until the size limit, + and then call this method to send out the batch. + + :param event_data_batch: The `EventDataBatch` object to be sent or a list of `EventData` to be sent + in a batch. + :type event_data_batch: Union[~azure.eventhub.EventDataBatch, List[~azure.eventhub.EventData]] :keyword float timeout: The maximum wait time to send the event data. If not specified, the default wait time specified when the producer was created will be used. + :keyword str partition_id: The specific partition ID to send to. Default is None, in which case the service + will assign to all partitions using round-robin. + A `TypeError` will be raised if partition_id is specified and event_data_batch is an `EventDataBatch` because + `EventDataBatch` itself has partition_id. + :keyword str partition_key: With the given partition_key, event data will be sent to + a particular partition of the Event Hub decided by the service. + A `TypeError` will be raised if partition_key is specified and event_data_batch is an `EventDataBatch` because + `EventDataBatch` itself has partition_key. + If both partition_id and partition_key is provided, the partition_id will take precedence. :rtype: None :raises: :class:`AuthenticationError` :class:`ConnectError` @@ -197,6 +213,8 @@ def send_batch(self, event_data_batch, **kwargs): :class:`EventDataError` :class:`EventDataSendError` :class:`EventHubError` + :class:`ValueError` + :class:`TypeError` .. admonition:: Example: @@ -208,18 +226,28 @@ def send_batch(self, event_data_batch, **kwargs): :caption: Sends event data """ + partition_id = kwargs.get("partition_id") + partition_key = kwargs.get("partition_key") + if isinstance(event_data_batch, EventDataBatch): + if partition_id or partition_key: + raise TypeError("partition_id and partition_key should be None when sending an EventDataBatch " + "because type EventDataBatch itself may have partition_id or partition_key") + to_send_batch = event_data_batch + else: + to_send_batch = self.create_batch(partition_id=partition_id, partition_key=partition_key) + to_send_batch._load_events(event_data_batch) # pylint:disable=protected-access partition_id = ( - event_data_batch._partition_id or ALL_PARTITIONS # pylint:disable=protected-access + to_send_batch._partition_id or ALL_PARTITIONS # pylint:disable=protected-access ) send_timeout = kwargs.pop("timeout", None) try: cast(EventHubProducer, self._producers[partition_id]).send( - event_data_batch, timeout=send_timeout + to_send_batch, timeout=send_timeout ) except (KeyError, AttributeError, EventHubError): self._start_producer(partition_id, send_timeout) cast(EventHubProducer, self._producers[partition_id]).send( - event_data_batch, timeout=send_timeout + to_send_batch, timeout=send_timeout ) def create_batch(self, **kwargs): diff --git a/sdk/eventhub/azure-eventhub/azure/eventhub/_utils.py b/sdk/eventhub/azure-eventhub/azure/eventhub/_utils.py index 9ce8e5656cf0..e37349a94b06 100644 --- a/sdk/eventhub/azure-eventhub/azure/eventhub/_utils.py +++ b/sdk/eventhub/azure-eventhub/azure/eventhub/_utils.py @@ -29,7 +29,7 @@ PROP_LAST_ENQUEUED_TIME_UTC, PROP_RUNTIME_INFO_RETRIEVAL_TIME_UTC, PROP_LAST_ENQUEUED_OFFSET, -) + PROP_TIMESTAMP) if TYPE_CHECKING: # pylint: disable=ungrouped-imports @@ -193,12 +193,14 @@ def trace_link_message(events, parent_span=None): if event.properties: traceparent = event.properties.get(b"Diagnostic-Id", "").decode("ascii") if traceparent: - current_span.link(traceparent) + current_span.link( + traceparent, + attributes={"enqueuedTime": event.message.annotations.get(PROP_TIMESTAMP)} + ) except Exception as exp: # pylint:disable=broad-except _LOGGER.warning("trace_link_message had an exception %r", exp) - def event_position_selector(value, inclusive=False): # type: (Union[int, str, datetime.datetime], bool) -> bytes """Creates a selector expression of the offset.""" diff --git a/sdk/eventhub/azure-eventhub/azure/eventhub/_version.py b/sdk/eventhub/azure-eventhub/azure/eventhub/_version.py index b211e6234dac..f2f20c702c59 100644 --- a/sdk/eventhub/azure-eventhub/azure/eventhub/_version.py +++ b/sdk/eventhub/azure-eventhub/azure/eventhub/_version.py @@ -3,4 +3,4 @@ # Licensed under the MIT License. # ------------------------------------ -VERSION = "5.1.0b2" +VERSION = "5.1.0" diff --git a/sdk/eventhub/azure-eventhub/azure/eventhub/aio/_consumer_client_async.py b/sdk/eventhub/azure-eventhub/azure/eventhub/aio/_consumer_client_async.py index 04567cc0292b..6ba1f59404c9 100644 --- a/sdk/eventhub/azure-eventhub/azure/eventhub/aio/_consumer_client_async.py +++ b/sdk/eventhub/azure-eventhub/azure/eventhub/aio/_consumer_client_async.py @@ -49,8 +49,8 @@ class EventHubConsumerClient(ClientBaseAsync): `EventHubConsumerClient`. If a checkpoint store is not provided, the checkpoint will be maintained internally in memory. - An `EventHubConsumerClient` can also receive from a specific partition when you call its method `receive()` - and specify the partition_id. + An `EventHubConsumerClient` can also receive from a specific partition when you call its method `receive()` or + `receive_batch()` and specify the partition_id. Load-balancing won't work in single-partition mode. But users can still save checkpoints if the checkpoint_store is set. diff --git a/sdk/eventhub/azure-eventhub/azure/eventhub/aio/_producer_client_async.py b/sdk/eventhub/azure-eventhub/azure/eventhub/aio/_producer_client_async.py index 9d69d52ea18f..b5eb6ba6fb71 100644 --- a/sdk/eventhub/azure-eventhub/azure/eventhub/aio/_producer_client_async.py +++ b/sdk/eventhub/azure-eventhub/azure/eventhub/aio/_producer_client_async.py @@ -12,7 +12,7 @@ from ._client_base_async import ClientBaseAsync from ._producer_async import EventHubProducer from .._constants import ALL_PARTITIONS -from .._common import EventDataBatch +from .._common import EventDataBatch, EventData if TYPE_CHECKING: from uamqp.constants import TransportType @@ -211,16 +211,32 @@ def from_connection_string( async def send_batch( self, - event_data_batch: EventDataBatch, + event_data_batch: Union[EventDataBatch, List[EventData]], *, - timeout: Optional[Union[int, float]] = None + timeout: Optional[Union[int, float]] = None, + **kwargs ) -> None: """Sends event data and blocks until acknowledgement is received or operation times out. - :param event_data_batch: The EventDataBatch object to be sent. - :type event_data_batch: ~azure.eventhub.EventDataBatch - :param float timeout: The maximum wait time to send the event data. + If you're sending a finite list of `EventData` and you know it's within the size limit of the event hub + frame size limit, you can send them with a `send_batch` call. Otherwise, use :meth:`create_batch` + to create `EventDataBatch` and add `EventData` into the batch one by one until the size limit, + and then call this method to send out the batch. + + :param event_data_batch: The `EventDataBatch` object to be sent or a list of `EventData` to be sent + in a batch. + :type event_data_batch: Union[~azure.eventhub.EventDataBatch, List[~azure.eventhub.EventData]] + :keyword float timeout: The maximum wait time to send the event data. If not specified, the default wait time specified when the producer was created will be used. + :keyword str partition_id: The specific partition ID to send to. Default is None, in which case the service + will assign to all partitions using round-robin. + A `TypeError` will be raised if partition_id is specified and event_data_batch is an `EventDataBatch` because + `EventDataBatch` itself has partition_id. + :keyword str partition_key: With the given partition_key, event data will be sent to + a particular partition of the Event Hub decided by the service. + A `TypeError` will be raised if partition_key is specified and event_data_batch is an `EventDataBatch` because + `EventDataBatch` itself has partition_key. + If both partition_id and partition_key is provided, the partition_id will take precedence. :rtype: None :raises: :class:`AuthenticationError` :class:`ConnectError` @@ -228,6 +244,8 @@ async def send_batch( :class:`EventDataError` :class:`EventDataSendError` :class:`EventHubError` + :class:`ValueError` + :class:`TypeError` .. admonition:: Example: @@ -239,17 +257,28 @@ async def send_batch( :caption: Asynchronously sends event data """ + partition_id = kwargs.get("partition_id") + partition_key = kwargs.get("partition_key") + if isinstance(event_data_batch, EventDataBatch): + if partition_id or partition_key: + raise TypeError("partition_id and partition_key should be None when sending an EventDataBatch " + "because type EventDataBatch itself may have partition_id or partition_key") + to_send_batch = event_data_batch + else: + to_send_batch = await self.create_batch(partition_id=partition_id, partition_key=partition_key) + to_send_batch._load_events(event_data_batch) # pylint:disable=protected-access + partition_id = ( - event_data_batch._partition_id or ALL_PARTITIONS # pylint:disable=protected-access + to_send_batch._partition_id or ALL_PARTITIONS # pylint:disable=protected-access ) try: await cast(EventHubProducer, self._producers[partition_id]).send( - event_data_batch, timeout=timeout + to_send_batch, timeout=timeout ) except (KeyError, AttributeError, EventHubError): await self._start_producer(partition_id, timeout) await cast(EventHubProducer, self._producers[partition_id]).send( - event_data_batch, timeout=timeout + to_send_batch, timeout=timeout ) async def create_batch( diff --git a/sdk/eventhub/azure-eventhub/samples/README.md b/sdk/eventhub/azure-eventhub/samples/README.md index bbf0de2391e1..ed07b230cf5a 100644 --- a/sdk/eventhub/azure-eventhub/samples/README.md +++ b/sdk/eventhub/azure-eventhub/samples/README.md @@ -1,13 +1,3 @@ ---- -page_type: sample -languages: - - python -products: - - azure - - azure-event-hubs -urlFragment: eventhub-samples ---- - # Azure Event Hubs client library for Python Samples These are code samples that show common scenario operations with the Azure Event Hubs client library. diff --git a/sdk/eventhub/azure-eventhub/samples/async_samples/send_async.py b/sdk/eventhub/azure-eventhub/samples/async_samples/send_async.py index a8d104a96188..d69f255861ef 100644 --- a/sdk/eventhub/azure-eventhub/samples/async_samples/send_async.py +++ b/sdk/eventhub/azure-eventhub/samples/async_samples/send_async.py @@ -16,6 +16,7 @@ import os from azure.eventhub.aio import EventHubProducerClient +from azure.eventhub.exceptions import EventHubError from azure.eventhub import EventData CONNECTION_STR = os.environ['EVENT_HUB_CONN_STR'] @@ -70,6 +71,22 @@ async def send_event_data_batch_with_properties(producer): await producer.send_batch(event_data_batch) +async def send_event_data_list(producer): + # If you know beforehand that the list of events you have will not exceed the + # size limits, you can use the `send_batch()` api directly without creating an EventDataBatch + + # Without specifying partition_id or partition_key + # the events will be distributed to available partitions via round-robin. + + event_data_list = [EventData('Event Data {}'.format(i)) for i in range(10)] + try: + await producer.send_batch(event_data_list) + except ValueError: # Size exceeds limit. This shouldn't happen if you make sure before hand. + print("Size of the event data list exceeds the size limit of a single send") + except EventHubError as eh_err: + print("Sending error: ", eh_err) + + async def run(): producer = EventHubProducerClient.from_connection_string( @@ -82,6 +99,7 @@ async def run(): await send_event_data_batch_with_partition_key(producer) await send_event_data_batch_with_partition_id(producer) await send_event_data_batch_with_properties(producer) + await send_event_data_list(producer) loop = asyncio.get_event_loop() diff --git a/sdk/eventhub/azure-eventhub/samples/sync_samples/send.py b/sdk/eventhub/azure-eventhub/samples/sync_samples/send.py index c949ddfaec0e..0d4fd467a3a0 100644 --- a/sdk/eventhub/azure-eventhub/samples/sync_samples/send.py +++ b/sdk/eventhub/azure-eventhub/samples/sync_samples/send.py @@ -14,7 +14,7 @@ import time import os from azure.eventhub import EventHubProducerClient, EventData - +from azure.eventhub.exceptions import EventHubError CONNECTION_STR = os.environ['EVENT_HUB_CONN_STR'] EVENTHUB_NAME = os.environ['EVENT_HUB_NAME'] @@ -68,6 +68,22 @@ def send_event_data_batch_with_properties(producer): producer.send_batch(event_data_batch) +def send_event_data_list(producer): + # If you know beforehand that the list of events you have will not exceed the + # size limits, you can use the `send_batch()` api directly without creating an EventDataBatch + + # Without specifying partition_id or partition_key + # the events will be distributed to available partitions via round-robin. + + event_data_list = [EventData('Event Data {}'.format(i)) for i in range(10)] + try: + producer.send_batch(event_data_list) + except ValueError: # Size exceeds limit. This shouldn't happen if you make sure before hand. + print("Size of the event data list exceeds the size limit of a single send") + except EventHubError as eh_err: + print("Sending error: ", eh_err) + + producer = EventHubProducerClient.from_connection_string( conn_str=CONNECTION_STR, eventhub_name=EVENTHUB_NAME @@ -80,5 +96,6 @@ def send_event_data_batch_with_properties(producer): send_event_data_batch_with_partition_key(producer) send_event_data_batch_with_partition_id(producer) send_event_data_batch_with_properties(producer) + send_event_data_list(producer) print("Send messages in {} seconds.".format(time.time() - start_time)) diff --git a/sdk/eventhub/azure-eventhub/setup.py b/sdk/eventhub/azure-eventhub/setup.py index 7924cd5c1a09..46cd5253c35a 100644 --- a/sdk/eventhub/azure-eventhub/setup.py +++ b/sdk/eventhub/azure-eventhub/setup.py @@ -54,7 +54,7 @@ author_email='azpysdkhelp@microsoft.com', url='https://github.com/Azure/azure-sdk-for-python/tree/master/sdk/eventhub/azure-eventhub', classifiers=[ - "Development Status :: 4 - Beta", + "Development Status :: 5 - Production/Stable", 'Programming Language :: Python', 'Programming Language :: Python :: 2', 'Programming Language :: Python :: 2.7', @@ -68,7 +68,7 @@ zip_safe=False, packages=find_packages(exclude=exclude_packages), install_requires=[ - "azure-core<2.0.0,>=1.0.0", + "azure-core<2.0.0,>=1.5.0", "uamqp<2.0,>=1.2.5", ], extras_require={ diff --git a/sdk/eventhub/azure-eventhub/stress/azure_eventhub_consumer_stress_async.py b/sdk/eventhub/azure-eventhub/stress/azure_eventhub_consumer_stress_async.py index 394a4e385ec1..087157bf9cc1 100644 --- a/sdk/eventhub/azure-eventhub/stress/azure_eventhub_consumer_stress_async.py +++ b/sdk/eventhub/azure-eventhub/stress/azure_eventhub_consumer_stress_async.py @@ -47,6 +47,10 @@ def parse_starting_position(args): parser.add_argument("--starting_datetime", help="Starting datetime string, should be format of YYYY-mm-dd HH:mm:ss", type=str) parser.add_argument("--partitions", help="Number of partitions. 0 means to get partitions from eventhubs", type=int, default=0) parser.add_argument("--recv_partition_id", help="Receive from a specific partition if this is set", type=int) +parser.add_argument("--max_batch_size", type=int, default=0, + help="Call EventHubConsumerClient.receive_batch() if not 0, otherwise call receive()") +parser.add_argument("--max_wait_time", type=float, default=0, + help="max_wait_time of EventHubConsumerClient.receive_batch() or EventHubConsumerClient.receive()") parser.add_argument("--track_last_enqueued_event_properties", action="store_true") parser.add_argument("--load_balancing_interval", help="time duration in seconds between two load balance", type=float, default=10) parser.add_argument("--conn_str", help="EventHub connection string", @@ -82,6 +86,7 @@ def parse_starting_position(args): start_time = time.perf_counter() recv_cnt_map = defaultdict(int) +recv_cnt_iteration_map = defaultdict(int) recv_time_map = dict() @@ -94,7 +99,7 @@ async def get_partition_ids(self): async def on_event_received(partition_context, event): - recv_cnt_map[partition_context.partition_id] += 1 + recv_cnt_map[partition_context.partition_id] += 1 if event else 0 if recv_cnt_map[partition_context.partition_id] % LOG_PER_COUNT == 0: total_time_elapsed = time.perf_counter() - start_time @@ -111,6 +116,26 @@ async def on_event_received(partition_context, event): await partition_context.update_checkpoint(event) +async def on_event_batch_received(partition_context, event_batch): + recv_cnt_map[partition_context.partition_id] += len(event_batch) + recv_cnt_iteration_map[partition_context.partition_id] += len(event_batch) + if recv_cnt_iteration_map[partition_context.partition_id] > LOG_PER_COUNT: + total_time_elapsed = time.perf_counter() - start_time + + partition_previous_time = recv_time_map.get(partition_context.partition_id) + partition_current_time = time.perf_counter() + recv_time_map[partition_context.partition_id] = partition_current_time + LOGGER.info("Partition: %r, Total received: %r, Time elapsed: %r, Speed since start: %r/s, Current speed: %r/s", + partition_context.partition_id, + recv_cnt_map[partition_context.partition_id], + total_time_elapsed, + recv_cnt_map[partition_context.partition_id] / total_time_elapsed, + recv_cnt_iteration_map[partition_context.partition_id] / (partition_current_time - partition_previous_time) if partition_previous_time else None + ) + recv_cnt_iteration_map[partition_context.partition_id] = 0 + await partition_context.update_checkpoint() + + def create_client(args): if args.storage_conn_str: @@ -180,11 +205,18 @@ async def run(args): "track_last_enqueued_event_properties": args.track_last_enqueued_event_properties, "starting_position": starting_position } + if args.max_batch_size: + kwargs_dict["max_batch_size"] = args.max_batch_size + if args.max_wait_time: + kwargs_dict["max_wait_time"] = args.max_wait_time if args.parallel_recv_cnt and args.parallel_recv_cnt > 1: clients = [create_client(args) for _ in range(args.parallel_recv_cnt)] tasks = [ asyncio.ensure_future( - clients[i].receive( + clients[i].receive_batch( + on_event_batch_received, + **kwargs_dict + ) if args.max_batch_size else clients[i].receive( on_event_received, **kwargs_dict ) @@ -193,9 +225,12 @@ async def run(args): else: clients = [create_client(args)] tasks = [asyncio.ensure_future( - clients[0].receive( + clients[0].receive_batch( + on_event_batch_received, + **kwargs_dict + ) if args.max_batch_size else clients[0].receive( on_event_received, - prefetch=args.link_credit, + **kwargs_dict ) )] diff --git a/sdk/eventhub/azure-eventhub/stress/azure_eventhub_consumer_stress_sync.py b/sdk/eventhub/azure-eventhub/stress/azure_eventhub_consumer_stress_sync.py index bf377b16d11a..09a487206e33 100644 --- a/sdk/eventhub/azure-eventhub/stress/azure_eventhub_consumer_stress_sync.py +++ b/sdk/eventhub/azure-eventhub/stress/azure_eventhub_consumer_stress_sync.py @@ -45,6 +45,11 @@ def parse_starting_position(args): parser.add_argument("--starting_datetime", help="Starting datetime string, should be format of YYYY-mm-dd HH:mm:ss") parser.add_argument("--partitions", help="Number of partitions. 0 means to get partitions from eventhubs", type=int, default=0) parser.add_argument("--recv_partition_id", help="Receive from a specific partition if this is set", type=int) +parser.add_argument("--max_batch_size", type=int, default=0, + help="Call EventHubConsumerClient.receive_batch() if not 0, otherwise call receive()") +parser.add_argument("--max_wait_time", type=float, default=0, + help="max_wait_time of EventHubConsumerClient.receive_batch() or EventHubConsumerClient.receive()") + parser.add_argument("--track_last_enqueued_event_properties", action="store_true") parser.add_argument("--load_balancing_interval", help="time duration in seconds between two load balance", type=float, default=10) parser.add_argument("--conn_str", help="EventHub connection string", @@ -80,6 +85,7 @@ def parse_starting_position(args): start_time = time.perf_counter() recv_cnt_map = defaultdict(int) +recv_cnt_iteration_map = defaultdict(int) recv_time_map = dict() @@ -92,7 +98,7 @@ def get_partition_ids(self): def on_event_received(partition_context, event): - recv_cnt_map[partition_context.partition_id] += 1 + recv_cnt_map[partition_context.partition_id] += 1 if event else 0 if recv_cnt_map[partition_context.partition_id] % LOG_PER_COUNT == 0: total_time_elapsed = time.perf_counter() - start_time @@ -109,6 +115,25 @@ def on_event_received(partition_context, event): partition_context.update_checkpoint(event) +def on_event_batch_received(partition_context, event_batch): + recv_cnt_map[partition_context.partition_id] += len(event_batch) + recv_cnt_iteration_map[partition_context.partition_id] += len(event_batch) + if recv_cnt_iteration_map[partition_context.partition_id] > LOG_PER_COUNT: + total_time_elapsed = time.perf_counter() - start_time + partition_previous_time = recv_time_map.get(partition_context.partition_id) + partition_current_time = time.perf_counter() + recv_time_map[partition_context.partition_id] = partition_current_time + LOGGER.info("Partition: %r, Total received: %r, Time elapsed: %r, Speed since start: %r/s, Current speed: %r/s", + partition_context.partition_id, + recv_cnt_map[partition_context.partition_id], + total_time_elapsed, + recv_cnt_map[partition_context.partition_id] / total_time_elapsed, + recv_cnt_iteration_map[partition_context.partition_id] / (partition_current_time - partition_previous_time) if partition_previous_time else None + ) + recv_cnt_iteration_map[partition_context.partition_id] = 0 + partition_context.update_checkpoint() + + def create_client(args): if args.storage_conn_str: checkpoint_store = BlobCheckpointStore.from_connection_string(args.storage_conn_str, args.storage_container_name) @@ -176,12 +201,16 @@ def run(args): "track_last_enqueued_event_properties": args.track_last_enqueued_event_properties, "starting_position": starting_position } + if args.max_batch_size: + kwargs_dict["max_batch_size"] = args.max_batch_size + if args.max_wait_time: + kwargs_dict["max_wait_time"] = args.max_wait_time if args.parallel_recv_cnt and args.parallel_recv_cnt > 1: clients = [create_client(args) for _ in range(args.parallel_recv_cnt)] threads = [ threading.Thread( - target=clients[i].receive, - args=(on_event_received,), + target=clients[i].receive_batch if args.max_batch_size else clients[i].receive, + args=(on_event_batch_received if args.max_batch_size else on_event_received,), kwargs=kwargs_dict, daemon=True ) for i in range(args.parallel_recv_cnt) @@ -189,8 +218,8 @@ def run(args): else: clients = [create_client(args)] threads = [threading.Thread( - target=clients[0].receive, - args=(on_event_received,), + target=clients[0].receive_batch if args.max_batch_size else clients[0].receive, + args=(on_event_batch_received if args.max_batch_size else on_event_received,), kwargs=kwargs_dict, daemon=True )] diff --git a/sdk/eventhub/azure-eventhub/stress/azure_eventhub_producer_stress.py b/sdk/eventhub/azure-eventhub/stress/azure_eventhub_producer_stress.py index 99b3188ca11a..3ff550a31891 100644 --- a/sdk/eventhub/azure-eventhub/stress/azure_eventhub_producer_stress.py +++ b/sdk/eventhub/azure-eventhub/stress/azure_eventhub_producer_stress.py @@ -28,6 +28,15 @@ def stress_send_sync(producer: EventHubProducerClient, args, logger): return len(batch) +def stress_send_list_sync(producer: EventHubProducerClient, args, logger): + quantity = int(256*1023 / args.payload) + send_list = [] + for _ in range(quantity): + send_list.append(EventData(body=b"D" * args.payload)) + producer.send_batch(send_list) + return len(send_list) + + async def stress_send_async(producer: EventHubProducerClientAsync, args, logger): batch = await producer.create_batch() try: @@ -39,6 +48,15 @@ async def stress_send_async(producer: EventHubProducerClientAsync, args, logger) return len(batch) +async def stress_send_list_async(producer: EventHubProducerClientAsync, args, logger): + quantity = int(256*1023 / args.payload) + send_list = [] + for _ in range(quantity): + send_list.append(EventData(body=b"D" * args.payload)) + await producer.send_batch(send_list) + return len(send_list) + + class StressTestRunner(object): def __init__(self, argument_parser): self.argument_parser = argument_parser diff --git a/sdk/eventhub/azure-eventhub/tests/livetest/asynctests/test_send_async.py b/sdk/eventhub/azure-eventhub/tests/livetest/asynctests/test_send_async.py index 57143c92fa35..851eec7e30a5 100644 --- a/sdk/eventhub/azure-eventhub/tests/livetest/asynctests/test_send_async.py +++ b/sdk/eventhub/azure-eventhub/tests/livetest/asynctests/test_send_async.py @@ -11,9 +11,9 @@ import time import json -from azure.eventhub import EventData, TransportType +from azure.eventhub import EventData, TransportType, EventDataBatch from azure.eventhub.aio import EventHubProducerClient - +from azure.eventhub.exceptions import EventDataSendError @pytest.mark.liveTest @pytest.mark.asyncio @@ -169,3 +169,57 @@ async def test_send_with_create_event_batch_async(connstr_receivers): received.extend(r.receive_message_batch(timeout=10000)) assert len(received) >= 1 assert EventData._from_message(received[0]).properties[b"raw_prop"] == b"raw_value" + + + +@pytest.mark.liveTest +@pytest.mark.asyncio +async def test_send_list_async(connstr_receivers): + connection_str, receivers = connstr_receivers + client = EventHubProducerClient.from_connection_string(connection_str) + payload = "A1" + async with client: + await client.send_batch([EventData(payload)]) + received = [] + for r in receivers: + received.extend([EventData._from_message(x) for x in r.receive_message_batch(timeout=10000)]) + + assert len(received) == 1 + assert received[0].body_as_str() == payload + + +@pytest.mark.liveTest +@pytest.mark.asyncio +async def test_send_list_partition_async(connstr_receivers): + connection_str, receivers = connstr_receivers + client = EventHubProducerClient.from_connection_string(connection_str) + payload = "A1" + async with client: + await client.send_batch([EventData(payload)], partition_id="0") + message = receivers[0].receive_message_batch(timeout=10000)[0] + received = EventData._from_message(message) + assert received.body_as_str() == payload + + +@pytest.mark.parametrize("to_send, exception_type", + [([], EventDataSendError), + ([EventData("A"*1024)]*1100, ValueError), + ("any str", AttributeError) + ]) +@pytest.mark.liveTest +@pytest.mark.asyncio +async def test_send_list_wrong_data_async(connection_str, to_send, exception_type): + client = EventHubProducerClient.from_connection_string(connection_str) + async with client: + with pytest.raises(exception_type): + await client.send_batch(to_send) + + +@pytest.mark.parametrize("partition_id, partition_key", [("0", None), (None, "pk")]) +async def test_send_batch_pid_pk_async(invalid_hostname, partition_id, partition_key): + # Use invalid_hostname because this is not a live test. + client = EventHubProducerClient.from_connection_string(invalid_hostname) + batch = EventDataBatch(partition_id=partition_id, partition_key=partition_key) + async with client: + with pytest.raises(TypeError): + await client.send_batch(batch, partition_id=partition_id, partition_key=partition_key) diff --git a/sdk/eventhub/azure-eventhub/tests/livetest/synctests/test_auth.py b/sdk/eventhub/azure-eventhub/tests/livetest/synctests/test_auth.py index 4df5040c8b29..aba361ed645f 100644 --- a/sdk/eventhub/azure-eventhub/tests/livetest/synctests/test_auth.py +++ b/sdk/eventhub/azure-eventhub/tests/livetest/synctests/test_auth.py @@ -14,7 +14,7 @@ def test_client_secret_credential(aad_credential, live_eventhub): try: from azure.identity import EnvironmentCredential - except ImportError as e: + except: pytest.skip("No azure identity library") credential = EnvironmentCredential() producer_client = EventHubProducerClient(fully_qualified_namespace=live_eventhub['hostname'], diff --git a/sdk/eventhub/azure-eventhub/tests/livetest/synctests/test_send.py b/sdk/eventhub/azure-eventhub/tests/livetest/synctests/test_send.py index 69ea1cb44aa9..d3790df006d5 100644 --- a/sdk/eventhub/azure-eventhub/tests/livetest/synctests/test_send.py +++ b/sdk/eventhub/azure-eventhub/tests/livetest/synctests/test_send.py @@ -10,9 +10,9 @@ import json import sys -from azure.eventhub import EventData, TransportType +from azure.eventhub import EventData, TransportType, EventDataBatch from azure.eventhub import EventHubProducerClient - +from azure.eventhub.exceptions import EventDataSendError @pytest.mark.liveTest def test_send_with_partition_key(connstr_receivers): @@ -179,3 +179,53 @@ def test_send_with_create_event_batch_with_app_prop_sync(connstr_receivers): received.extend(r.receive_message_batch(timeout=5000)) assert len(received) >= 1 assert EventData._from_message(received[0]).properties[b"raw_prop"] == b"raw_value" + + +@pytest.mark.liveTest +def test_send_list(connstr_receivers): + connection_str, receivers = connstr_receivers + client = EventHubProducerClient.from_connection_string(connection_str) + payload = "A1" + with client: + client.send_batch([EventData(payload)]) + received = [] + for r in receivers: + received.extend([EventData._from_message(x) for x in r.receive_message_batch(timeout=10000)]) + + assert len(received) == 1 + assert received[0].body_as_str() == payload + + +@pytest.mark.liveTest +def test_send_list_partition(connstr_receivers): + connection_str, receivers = connstr_receivers + client = EventHubProducerClient.from_connection_string(connection_str) + payload = "A1" + with client: + client.send_batch([EventData(payload)], partition_id="0") + message = receivers[0].receive_message_batch(timeout=10000)[0] + received = EventData._from_message(message) + assert received.body_as_str() == payload + + +@pytest.mark.parametrize("to_send, exception_type", + [([], EventDataSendError), + ([EventData("A"*1024)]*1100, ValueError), + ("any str", AttributeError) + ]) +@pytest.mark.liveTest +def test_send_list_wrong_data(connection_str, to_send, exception_type): + client = EventHubProducerClient.from_connection_string(connection_str) + with client: + with pytest.raises(exception_type): + client.send_batch(to_send) + + +@pytest.mark.parametrize("partition_id, partition_key", [("0", None), (None, "pk")]) +def test_send_batch_pid_pk(invalid_hostname, partition_id, partition_key): + # Use invalid_hostname because this is not a live test. + client = EventHubProducerClient.from_connection_string(invalid_hostname) + batch = EventDataBatch(partition_id=partition_id, partition_key=partition_key) + with client: + with pytest.raises(TypeError): + client.send_batch(batch, partition_id=partition_id, partition_key=partition_key) diff --git a/sdk/eventhub/tests.yml b/sdk/eventhub/tests.yml index 453f565b4c3e..c05b7dbfdbf7 100644 --- a/sdk/eventhub/tests.yml +++ b/sdk/eventhub/tests.yml @@ -15,11 +15,11 @@ jobs: Matrix: Linux_Python35: OSName: 'Linux' - OSVmImage: 'ubuntu-16.04' + OSVmImage: 'ubuntu-18.04' PythonVersion: '3.5' Linux_Python38: OSName: 'Linux' - OSVmImage: 'ubuntu-16.04' + OSVmImage: 'ubuntu-18.04' PythonVersion: '3.8' Windows_Python27: OSName: 'Windows' diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/CHANGELOG.md b/sdk/formrecognizer/azure-ai-formrecognizer/CHANGELOG.md index 468cc1380b17..9301dc33a95a 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/CHANGELOG.md +++ b/sdk/formrecognizer/azure-ai-formrecognizer/CHANGELOG.md @@ -1,6 +1,14 @@ # Change Log azure-ai-formrecognizer -## 1.0.0b1 (Unreleased) +## 1.0.0b2 (Unreleased) + +**Fixes and improvements** + +- Bug fixed where `confidence` == `0.0` was erroneously getting set to `1.0` +- `__repr__` has been added to all of the models + + +## 1.0.0b1 (2020-04-23) Version (1.0.0b1) is the first preview of our efforts to create a user-friendly and Pythonic client library for Azure Form Recognizer. This library replaces the package found here: https://pypi.org/project/azure-cognitiveservices-formrecognizer/ @@ -25,4 +33,4 @@ https://azure.github.io/azure-sdk/releases/latest/python.html. - Client and pipeline configuration is now available via keyword arguments at both the client level, and per-operation. See README for a link to optional configuration arguments - New error hierarchy: - - All service errors will now use the base type: `azure.core.exceptions.HttpResponseError` \ No newline at end of file + - All service errors will now use the base type: `azure.core.exceptions.HttpResponseError` diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/README.md b/sdk/formrecognizer/azure-ai-formrecognizer/README.md index 3c7cf7435fbc..c38e74bd645d 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/README.md +++ b/sdk/formrecognizer/azure-ai-formrecognizer/README.md @@ -23,6 +23,8 @@ Install the Azure Form Recognizer client library for Python with [pip][pip]: pip install azure-ai-formrecognizer ``` +> Note: This version of the client library supports the v2.0-preview version of the Form Recognizer service + ### Create a Form Recognizer resource Form Recognizer supports both [multi-service and single-service access][multi_and_single_service]. Create a Cognitive Services resource if you plan to access multiple cognitive services under a single endpoint/key. For Form Recognizer access only, create a Form Recognizer resource. @@ -236,7 +238,8 @@ print("Last modified: {}".format(model.last_modified)) print("Recognized fields:") # looping through the submodels, which contains the fields they were trained on for submodel in model.models: - print("We have recognized the following fields: {}".format( + print("The submodel with form type '{}' has recognized the following fields: {}".format( + submodel.form_type, ", ".join([label for label in submodel.fields]) )) diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/azure/ai/formrecognizer/_form_recognizer_client.py b/sdk/formrecognizer/azure-ai-formrecognizer/azure/ai/formrecognizer/_form_recognizer_client.py index 32e5a29cd038..109f5456d179 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/azure/ai/formrecognizer/_form_recognizer_client.py +++ b/sdk/formrecognizer/azure-ai-formrecognizer/azure/ai/formrecognizer/_form_recognizer_client.py @@ -79,7 +79,8 @@ def begin_recognize_receipts(self, stream, **kwargs): :param stream: .pdf, .jpg, .png or .tiff type file stream. Currently only supports US sales receipts. :type stream: stream - :keyword bool include_text_content: Include text lines and text content references in the result. + :keyword bool include_text_content: + Whether or not to include text elements such as lines and words in addition to form fields. :keyword str content_type: Media type of the body sent to the API. Content-type is auto-detected, but can be overridden by passing this keyword argument. For options, see :class:`~azure.ai.formrecognizer.FormContentType`. @@ -128,7 +129,8 @@ def begin_recognize_receipts_from_url(self, url, **kwargs): :param url: The url of the receipt. Currently only supports US sales receipts. :type url: str - :keyword bool include_text_content: Include text lines and text content references in the result. + :keyword bool include_text_content: + Whether or not to include text elements such as lines and words in addition to form fields. :keyword int polling_interval: Waiting time between two polls for LRO operations if no Retry-After header is present. Defaults to 5 seconds. :return: An instance of an LROPoller. Call `result()` on the poller @@ -245,7 +247,8 @@ def begin_recognize_custom_forms(self, model_id, stream, **kwargs): :param str model_id: Custom model identifier. :param stream: .pdf, .jpg, .png or .tiff type file stream. :type stream: stream - :keyword bool include_text_content: Include text lines and element references in the result. + :keyword bool include_text_content: + Whether or not to include text elements such as lines and words in addition to form fields. :keyword str content_type: Media type of the body sent to the API. Content-type is auto-detected, but can be overridden by passing this keyword argument. For options, see :class:`~azure.ai.formrecognizer.FormContentType`. @@ -302,7 +305,8 @@ def begin_recognize_custom_forms_from_url(self, model_id, url, **kwargs): :param str model_id: Custom model identifier. :param url: The url of the document. :type url: str - :keyword bool include_text_content: Include text lines and element references in the result. + :keyword bool include_text_content: + Whether or not to include text elements such as lines and words in addition to form fields. :keyword int polling_interval: Waiting time between two polls for LRO operations if no Retry-After header is present. Defaults to 5 seconds. :return: An instance of an LROPoller. Call `result()` on the poller diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/azure/ai/formrecognizer/_models.py b/sdk/formrecognizer/azure-ai-formrecognizer/azure/ai/formrecognizer/_models.py index 5fb81c28b3f3..ae13e57a4967 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/azure/ai/formrecognizer/_models.py +++ b/sdk/formrecognizer/azure-ai-formrecognizer/azure/ai/formrecognizer/_models.py @@ -12,23 +12,34 @@ import six +def adjust_confidence(score): + """Adjust confidence when not returned. + """ + if score is None: + return 1.0 + return score + + def get_elements(field, read_result): text_elements = [] - for item in field.elements: - nums = [int(s) for s in re.findall(r"\d+", item)] - read = nums[0] - line = nums[1] - if len(nums) == 3: - word = nums[2] - ocr_word = read_result[read].lines[line].words[word] - extracted_word = FormWord._from_generated(ocr_word, page=read + 1) - text_elements.append(extracted_word) - continue - ocr_line = read_result[read].lines[line] - extracted_line = FormLine._from_generated(ocr_line, page=read + 1) - text_elements.append(extracted_line) - return text_elements + try: + for item in field.elements: + nums = [int(s) for s in re.findall(r"\d+", item)] + read = nums[0] + line = nums[1] + if len(nums) == 3: + word = nums[2] + ocr_word = read_result[read].lines[line].words[word] + extracted_word = FormWord._from_generated(ocr_word, page=read + 1) + text_elements.append(extracted_word) + continue + ocr_line = read_result[read].lines[line] + extracted_line = FormLine._from_generated(ocr_line, page=read + 1) + text_elements.append(extracted_line) + return text_elements + except IndexError: + return None # https://github.com/Azure/azure-sdk-for-python/issues/11014 def get_field_value(field, value, read_result): # pylint: disable=too-many-return-statements @@ -127,10 +138,12 @@ class FormContent(object): :ivar str text: The text content of the line. :ivar list[~azure.ai.formrecognizer.Point] bounding_box: - The quadrangle bounding box that outlines the text. + A list of 4 points representing the quadrilateral bounding box + that outlines the text. The points are listed in clockwise + order: top-left, top-right, bottom-right, bottom-left. Units are in pixels for images and inches for PDF. :ivar int page_number: - The 1-based page number in the input document. + The 1-based number of the page in which this content is present. """ def __init__(self, **kwargs): self.bounding_box = kwargs.get("bounding_box", None) @@ -139,18 +152,21 @@ def __init__(self, **kwargs): class RecognizedForm(object): - """Represents a recognized form. + """Represents a form that has been recognized by a trained model. - :ivar str form_type: The type of form. + :ivar str form_type: + The type of form the model identified the submitted form to be. :ivar fields: - A dictionary of the fields found on the form. + A dictionary of the fields found on the form. The fields dictionary + keys are the `name` of the field. For models trained with labels, + this is the training-time label of the field. For models trained + without labels, a unique name is generated for each field. :vartype fields: dict[str, ~azure.ai.formrecognizer.FormField] :ivar ~azure.ai.formrecognizer.PageRange page_range: The first and last page of the input form. :ivar list[~azure.ai.formrecognizer.FormPage] pages: - Contains page metadata such as page width, length, text angle, unit. - If `include_text_content=True` is passed, contains a list - of extracted text lines for each page in the input document. + A list of pages recognized from the input document. Contains lines, + words, tables and page metadata. """ def __init__(self, **kwargs): self.fields = kwargs.get("fields", None) @@ -158,9 +174,15 @@ def __init__(self, **kwargs): self.page_range = kwargs.get("page_range", None) self.pages = kwargs.get("pages", None) + def __repr__(self): + return "RecognizedForm(form_type={}, fields={}, page_range={}, pages={})".format( + self.form_type, repr(self.fields), repr(self.page_range), repr(self.pages) + )[:1024] + class USReceipt(object): # pylint: disable=too-many-instance-attributes - """Extracted fields and values found on the input US sales receipt. + """Extracted fields found on the US sales receipt. Provides + attributes for accessing common fields present in US sales receipts. :ivar ~azure.ai.formrecognizer.FormField merchant_address: The address of the merchant. @@ -173,7 +195,7 @@ class USReceipt(object): # pylint: disable=too-many-instance-attributes :ivar list[~azure.ai.formrecognizer.USReceiptItem] receipt_items: The purchased items found on the receipt. :ivar ~azure.ai.formrecognizer.FormField subtotal: - The subtotal found on the receipt. + The subtotal found on the receipt :ivar ~azure.ai.formrecognizer.FormField tax: The tax value found on the receipt. :ivar ~azure.ai.formrecognizer.FormField tip: @@ -215,9 +237,20 @@ def __init__(self, **kwargs): self.form_type = kwargs.get("form_type", None) self.receipt_locale = kwargs.get("receipt_locale", "en-US") + def __repr__(self): + return "USReceipt(merchant_address={}, merchant_name={}, merchant_phone_number={}, " \ + "receipt_type={}, receipt_items={}, subtotal={}, tax={}, tip={}, total={}, "\ + "transaction_date={}, transaction_time={}, fields={}, page_range={}, pages={}, " \ + "form_type={}, receipt_locale={})".format( + repr(self.merchant_address), repr(self.merchant_name), repr(self.merchant_phone_number), + repr(self.receipt_type), repr(self.receipt_items), repr(self.subtotal), repr(self.tax), + repr(self.tip), repr(self.total), repr(self.transaction_date), repr(self.transaction_time), + repr(self.fields), repr(self.page_range), repr(self.pages), self.form_type, self.receipt_locale + )[:1024] + class FormField(object): - """Represents a recognized field and its value. + """Represents a field recognized in an input form. :ivar ~azure.ai.formrecognizer.FieldText label_data: Contains the text, bounding box, and text content of the field label. @@ -229,9 +262,10 @@ class FormField(object): 'date', 'time', 'phoneNumber', 'number', 'integer', 'object', or 'array'. :vartype value: str, int, float, :class:`~datetime.date`, :class:`~datetime.time`, :class:`~azure.ai.formrecognizer.FormField`, or list[:class:`~azure.ai.formrecognizer.FormField`] - :ivar float confidence: Confidence score. + :ivar float confidence: + Measures the degree of certainty of the recognition result. Value is between [0.0, 1.0]. :ivar int page_number: - The 1-based page number in the input document. + The 1-based number of the page in which this content is present. """ def __init__(self, **kwargs): @@ -249,10 +283,11 @@ def _from_generated(cls, field, value, read_result): value_data=FieldText._from_generated(value, read_result), value=get_field_value(field, value, read_result), name=field, - confidence=value.confidence or 1.0 if value else None, + confidence=adjust_confidence(value.confidence) if value else None, page_number=value.page if value else None, ) + @classmethod def _from_generated_unlabeled(cls, field, idx, page, read_result): return cls( @@ -260,22 +295,31 @@ def _from_generated_unlabeled(cls, field, idx, page, read_result): value_data=FieldText._from_generated_unlabeled(field.value, page, read_result), value=field.value.text, name="field-" + str(idx), - confidence=field.confidence or 1.0, + confidence=adjust_confidence(field.confidence), page_number=page, ) + def __repr__(self): + return "FormField(label_data={}, value_data={}, name={}, value={}, confidence={}, page_number={})".format( + repr(self.label_data), repr(self.value_data), self.name, repr(self.value), self.confidence, self.page_number + )[:1024] + class FieldText(FormContent): - """Represents the properties of a field or value. + """Represents the text that is part of a form field. This includes + the location of the text in the form and a collection of the + elements that make up the text. :ivar int page_number: - The 1-based page number in the input document. + The 1-based number of the page in which this content is present. :ivar str text: The string representation of the field or value. :ivar list[~azure.ai.formrecognizer.Point] bounding_box: - The quadrangle bounding box that outlines the text. + A list of 4 points representing the quadrilateral bounding box + that outlines the text. The points are listed in clockwise + order: top-left, top-right, bottom-right, bottom-left. Units are in pixels for images and inches for PDF. :ivar text_content: - When `include_text_content` is set to true, a list of references to the text + When `include_text_content` is set to true, a list of text elements constituting this field or value is returned. :vartype text_content: list[~azure.ai.formrecognizer.FormWord, ~azure.ai.formrecognizer.FormLine] """ @@ -314,12 +358,18 @@ def _from_generated_unlabeled(cls, field, page, read_result): text_content=get_elements(field, read_result) if field.elements else None ) + def __repr__(self): + return "FieldText(page_number={}, text={}, bounding_box={}, text_content={})".format( + self.page_number, self.text, self.bounding_box, repr(self.text_content) + )[:1024] + class FormPage(object): - """Page metadata, text lines, and tables extracted from a page in the input document. + """Represents a page recognized from the input document. Contains lines, + words, tables and page metadata. :ivar int page_number: - The 1-based page number in the input document. + The 1-based number of the page in which this content is present. :ivar float text_angle: The general orientation of the text in clockwise direction, measured in degrees between (-180, 180]. @@ -362,23 +412,30 @@ def _from_generated(cls, read_result): lines=[FormLine._from_generated(line, page=page.page) for line in page.lines] if page.lines else None ) for page in read_result] + def __repr__(self): + return "FormPage(page_number={}, text_angle={}, width={}, height={}, unit={}, tables={}, lines={})".format( + self.page_number, self.text_angle, self.width, self.height, self.unit, repr(self.tables), repr(self.lines) + )[:1024] + class FormLine(FormContent): - """An object representing an extracted text line. + """An object representing an extracted line of text. :ivar str text: The text content of the line. :ivar list[~azure.ai.formrecognizer.Point] bounding_box: - The quadrangle bounding box that outlines the text. + A list of 4 points representing the quadrilateral bounding box + that outlines the text. The points are listed in clockwise + order: top-left, top-right, bottom-right, bottom-left. Units are in pixels for images and inches for PDF. :ivar list[~azure.ai.formrecognizer.FormWord] words: - List of words in the text line. + A list of the words that make up the line. :ivar int page_number: - The 1-based page number in the input document. + The 1-based number of the page in which this content is present. """ def __init__(self, **kwargs): super(FormLine, self).__init__(**kwargs) - self.words = kwargs.get("words", None) + self.words = kwargs.get("words", []) @classmethod def _from_generated(cls, line, page): @@ -394,17 +451,24 @@ def _from_generated(cls, line, page): words=[FormWord._from_generated(word, page) for word in line.words] if line.words else None ) + def __repr__(self): + return "FormLine(text={}, bounding_box={}, words={}, page_number={})".format( + self.text, self.bounding_box, repr(self.words), self.page_number + )[:1024] class FormWord(FormContent): - """An object representing a word on the page. + """Represents a word recognized from the input document. :ivar str text: The text content of the word. :ivar list[~azure.ai.formrecognizer.Point] bounding_box: - The quadrangle bounding box that outlines the text. + A list of 4 points representing the quadrilateral bounding box + that outlines the text. The points are listed in clockwise + order: top-left, top-right, bottom-right, bottom-left. Units are in pixels for images and inches for PDF. - :ivar float confidence: Confidence value. + :ivar float confidence: + Measures the degree of certainty of the recognition result. Value is between [0.0, 1.0]. :ivar int page_number: - The 1-based page number in the input document. + The 1-based number of the page in which this content is present. """ def __init__(self, **kwargs): @@ -421,10 +485,15 @@ def _from_generated(cls, word, page): Point(x=word.bounding_box[4], y=word.bounding_box[5]), Point(x=word.bounding_box[6], y=word.bounding_box[7]) ] if word.bounding_box else None, - confidence=word.confidence or 1.0, + confidence=adjust_confidence(word.confidence), page_number=page ) + def __repr__(self): + return "FormWord(text={}, bounding_box={}, confidence={}, page_number={})".format( + self.text, self.bounding_box, self.confidence, self.page_number + )[:1024] + class USReceiptType(object): """The type of the analyzed US receipt and the confidence @@ -432,7 +501,8 @@ class USReceiptType(object): :ivar str type: The type of the receipt. For example, "Itemized", "CreditCard", "Gas", "Parking", "Gas", "Other". - :ivar float confidence: The confidence score of the receipt type. + :ivar float confidence: + Measures the degree of certainty of the recognition result. Value is between [0.0, 1.0]. """ def __init__(self, **kwargs): @@ -443,7 +513,10 @@ def __init__(self, **kwargs): def _from_generated(cls, item): return cls( type=item.value_string, - confidence=item.confidence or 1.0) if item else None + confidence=adjust_confidence(item.confidence)) if item else None + + def __repr__(self): + return "USReceiptType(type={}, confidence={})".format(self.type, self.confidence)[:1024] class USReceiptItem(object): @@ -453,11 +526,11 @@ class USReceiptItem(object): :ivar ~azure.ai.formrecognizer.FormField name: The name of the item. :ivar ~azure.ai.formrecognizer.FormField quantity: - The quantity purchased of the item. + The quantity associated with this item. :ivar ~azure.ai.formrecognizer.FormField price: - The individual price of the item. + The price of a single unit of this item. :ivar ~azure.ai.formrecognizer.FormField total_price: - The total price of the item(s). + The total price of this item, taking the quantity into account. """ def __init__(self, **kwargs): @@ -479,6 +552,11 @@ def _from_generated(cls, items, read_result): except AttributeError: return [] + def __repr__(self): + return "USReceiptItem(name={}, quantity={}, price={}, total_price={})".format( + repr(self.name), repr(self.quantity), repr(self.price), repr(self.total_price) + )[:1024] + class FormTable(object): """Information about the extracted table contained on a page. @@ -492,13 +570,18 @@ class FormTable(object): """ def __init__(self, **kwargs): - self.cells = kwargs.get("cells", None) + self.cells = kwargs.get("cells", []) self.row_count = kwargs.get("row_count", None) self.column_count = kwargs.get("column_count", None) + def __repr__(self): + return "FormTable(cells={}, row_count={}, column_count={})".format( + repr(self.cells), self.row_count, self.column_count + )[:1024] + class FormTableCell(FormContent): - """Information about the extracted cell in a table. + """Represents a cell contained in a table recognized from the input document. :ivar str text: Text content of the cell. :ivar int row_index: Row index of the cell. @@ -506,16 +589,20 @@ class FormTableCell(FormContent): :ivar int row_span: Number of rows spanned by this cell. :ivar int column_span: Number of columns spanned by this cell. :ivar list[~azure.ai.formrecognizer.Point] bounding_box: - The quadrangle bounding box that outlines the cell text. + A list of 4 points representing the quadrilateral bounding box + that outlines the text. The points are listed in clockwise + order: top-left, top-right, bottom-right, bottom-left. Units are in pixels for images and inches for PDF. - :ivar float confidence: Confidence value. + :ivar float confidence: + Measures the degree of certainty of the recognition result. Value is between [0.0, 1.0]. :ivar bool is_header: Whether the current cell is a header cell. :ivar bool is_footer: Whether the current cell is a footer cell. - :ivar int page_number: The 1-based page number in the input document. + :ivar int page_number: + The 1-based number of the page in which this content is present. :ivar text_content: - When `include_text_content` is set to true, a list of references to the text - elements constituting this cell is returned. For calls to recognize content, - this list is always populated. + When `include_text_content` is set to true, a list of text + elements constituting this cell is returned. + For calls to recognize content, this list is always populated. :vartype text_content: list[~azure.ai.formrecognizer.FormWord, ~azure.ai.formrecognizer.FormLine] """ @@ -544,29 +631,36 @@ def _from_generated(cls, cell, page, read_result): Point(x=cell.bounding_box[4], y=cell.bounding_box[5]), Point(x=cell.bounding_box[6], y=cell.bounding_box[7]) ] if cell.bounding_box else None, - confidence=cell.confidence or 1.0, + confidence=adjust_confidence(cell.confidence), is_header=cell.is_header or False, is_footer=cell.is_footer or False, page_number=page, text_content=get_elements(cell, read_result) if cell.elements else None ) + def __repr__(self): + return "FormTableCell(text={}, row_index={}, column_index={}, row_span={}, column_span={}, " \ + "bounding_box={}, confidence={}, is_header={}, is_footer={}, page_number={}, text_content={})".format( + self.text, self.row_index, self.column_index, self.row_span, self.column_span, self.bounding_box, + self.confidence, self.is_header, self.is_footer, self.page_number, repr(self.text_content) + )[:1024] + class CustomFormModel(object): """Represents a model trained from custom forms. - :ivar str model_id: Model identifier. + :ivar str model_id: The unique identifier of this model. :ivar str status: Status indicating the model's readiness for use, :class:`~azure.ai.formrecognizer.CustomFormModelStatus`. Possible values include: 'creating', 'ready', 'invalid'. :ivar ~datetime.datetime created_on: - Date and time (UTC) when the model was created. + The date and time (UTC) when model training was started. :ivar ~datetime.datetime last_modified: Date and time (UTC) when model training completed. :ivar list[~azure.ai.formrecognizer.CustomFormSubModel] models: - A list of submodels, each of which extract fields from - a different type of form. + A list of submodels that are part of this model, each of + which can recognize and extract fields from a different type of form. :ivar list[~azure.ai.formrecognizer.FormRecognizerError] errors: List of any training errors. :ivar ~azure.ai.formrecognizer.TrainingDocumentInfo training_documents: @@ -580,7 +674,7 @@ def __init__(self, **kwargs): self.last_modified = kwargs.get("last_modified", None) self.models = kwargs.get("models", None) self.errors = kwargs.get("errors", None) - self.training_documents = kwargs.get("training_documents", None) + self.training_documents = kwargs.get("training_documents", []) @classmethod def _from_generated(cls, model): @@ -591,18 +685,28 @@ def _from_generated(cls, model): last_modified=model.model_info.last_updated_date_time, models=CustomFormSubModel._from_generated_unlabeled(model) if model.keys else CustomFormSubModel._from_generated_labeled(model), - errors=FormRecognizerError._from_generated(model.train_result.errors) if model.train_result else [], + errors=FormRecognizerError._from_generated(model.train_result.errors) if model.train_result else None, training_documents=TrainingDocumentInfo._from_generated(model.train_result) if model.train_result else None ) + def __repr__(self): + return "CustomFormModel(model_id={}, status={}, created_on={}, last_modified={}, models={}, " \ + "errors={}, training_documents={})".format( + self.model_id, self.status, self.created_on, self.last_modified, repr(self.models), + repr(self.errors), repr(self.training_documents) + )[:1024] + class CustomFormSubModel(object): """Represents a submodel that extracts fields from a specific type of form. :ivar float accuracy: The mean of the model's field accuracies. - :ivar fields: Form fields that this submodel will extract when analyzing - this form type. + :ivar fields: A dictionary of the fields that this submodel will recognize + from the input document. The fields dictionary keys are the `name` of + the field. For models trained with labels, this is the training-time + label of the field. For models trained without labels, a unique name + is generated for each field. :vartype fields: dict[str, ~azure.ai.formrecognizer.CustomFormModelField] :ivar str form_type: Type of form this submodel recognizes. """ @@ -628,13 +732,18 @@ def _from_generated_labeled(cls, model): form_type="form-" + model.model_info.model_id )] if model.train_result else None + def __repr__(self): + return "CustomFormSubModel(accuracy={}, fields={}, form_type={})".format( + self.accuracy, repr(self.fields), self.form_type + )[:1024] + class CustomFormModelField(object): """A field that the model will extract from forms it analyzes. :ivar str label: The form fields label on the form. - :ivar str name: Unique name of the field. - :ivar float accuracy: Estimated extraction accuracy for this field. + :ivar str name: Canonical name; uniquely identifies a field within the form. + :ivar float accuracy: The estimated recognition accuracy for this field. """ def __init__(self, **kwargs): self.label = kwargs.get("label", None) @@ -657,6 +766,11 @@ def _from_generated_unlabeled(cls, fields): ) for idx, field_name in enumerate(fields) } + def __repr__(self): + return "CustomFormModelField(label={}, name={}, accuracy={})".format( + self.label, self.name, self.accuracy + )[:1024] + class TrainingDocumentInfo(object): """Report for an individual document used for training @@ -678,7 +792,7 @@ def __init__(self, **kwargs): self.document_name = kwargs.get("document_name", None) self.status = kwargs.get("status", None) self.page_count = kwargs.get("page_count", None) - self.errors = kwargs.get("errors", None) + self.errors = kwargs.get("errors", []) @classmethod def _from_generated(cls, train_result): @@ -689,6 +803,11 @@ def _from_generated(cls, train_result): errors=FormRecognizerError._from_generated(doc.errors) ) for doc in train_result.training_documents] if train_result.training_documents else None + def __repr__(self): + return "TrainingDocumentInfo(document_name={}, status={}, page_count={}, errors={})".format( + self.document_name, self.status, self.page_count, repr(self.errors) + )[:1024] + class FormRecognizerError(object): """Represents an error that occurred while training. @@ -705,16 +824,19 @@ def __init__(self, **kwargs): def _from_generated(cls, err): return [cls(code=error.code, message=error.message) for error in err] if err else [] + def __repr__(self): + return "FormRecognizerError(code={}, message={})".format(self.code, self.message)[:1024] + class CustomFormModelInfo(object): """Custom model information. - :ivar str model_id: Model identifier. + :ivar str model_id: The unique identifier of the model. :ivar str status: The status of the model, :class:`~azure.ai.formrecognizer.CustomFormModelStatus`. Possible values include: 'creating', 'ready', 'invalid'. :ivar ~datetime.datetime created_on: - Date and time (UTC) when the model was created. + Date and time (UTC) when model training was started. :ivar ~datetime.datetime last_modified: Date and time (UTC) when model training completed. """ @@ -734,6 +856,11 @@ def _from_generated(cls, model): last_modified=model.last_updated_date_time ) + def __repr__(self): + return "CustomFormModelInfo(model_id={}, status={}, created_on={}, last_modified={})".format( + self.model_id, self.status, self.created_on, self.last_modified + )[:1024] + class AccountProperties(object): """Summary of all the custom models on the account. @@ -752,3 +879,8 @@ def _from_generated(cls, model): custom_model_count=model.count, custom_model_limit=model.limit, ) + + def __repr__(self): + return "AccountProperties(custom_model_count={}, custom_model_limit={})".format( + self.custom_model_count, self.custom_model_limit + )[:1024] diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/azure/ai/formrecognizer/_response_handlers.py b/sdk/formrecognizer/azure-ai-formrecognizer/azure/ai/formrecognizer/_response_handlers.py index 2a22390a0ea1..23d3839bca29 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/azure/ai/formrecognizer/_response_handlers.py +++ b/sdk/formrecognizer/azure-ai-formrecognizer/azure/ai/formrecognizer/_response_handlers.py @@ -99,7 +99,7 @@ def prepare_content_result(response): read_result = response.analyze_result.read_results page_result = response.analyze_result.page_results - for page in read_result: + for idx, page in enumerate(read_result): form_page = FormPage( page_number=page.page, text_angle=page.angle, @@ -107,7 +107,7 @@ def prepare_content_result(response): height=page.height, unit=page.unit, lines=[FormLine._from_generated(line, page=page.page) for line in page.lines] if page.lines else None, - tables=prepare_tables(page_result[page.page-1], read_result), + tables=prepare_tables(page_result[idx], read_result), ) pages.append(form_page) return pages @@ -126,7 +126,7 @@ def prepare_unlabeled_result(response): read_result = response.analyze_result.read_results page_result = response.analyze_result.page_results - for page in page_result: + for index, page in enumerate(page_result): unlabeled_fields = [FormField._from_generated_unlabeled(field, idx, page.page, read_result) for idx, field in enumerate(page.key_value_pairs)] if page.key_value_pairs else None if unlabeled_fields: @@ -138,7 +138,7 @@ def prepare_unlabeled_result(response): ), fields=unlabeled_fields, form_type="form-" + str(page.cluster_id) if page.cluster_id is not None else None, - pages=[form_pages[page.page-1]] + pages=[form_pages[index]] ) result.append(form) diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/azure/ai/formrecognizer/_version.py b/sdk/formrecognizer/azure-ai-formrecognizer/azure/ai/formrecognizer/_version.py index 3a9726d91eee..1976be87577e 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/azure/ai/formrecognizer/_version.py +++ b/sdk/formrecognizer/azure-ai-formrecognizer/azure/ai/formrecognizer/_version.py @@ -4,4 +4,4 @@ # Licensed under the MIT License. # ------------------------------------ -VERSION = "1.0.0b1" +VERSION = "1.0.0b2" diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/azure/ai/formrecognizer/aio/_form_recognizer_client_async.py b/sdk/formrecognizer/azure-ai-formrecognizer/azure/ai/formrecognizer/aio/_form_recognizer_client_async.py index a5f837dd47de..f8c17f3a6c63 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/azure/ai/formrecognizer/aio/_form_recognizer_client_async.py +++ b/sdk/formrecognizer/azure-ai-formrecognizer/azure/ai/formrecognizer/aio/_form_recognizer_client_async.py @@ -91,7 +91,8 @@ async def recognize_receipts( :param stream: .pdf, .jpg, .png or .tiff type file stream. Currently only supports US sales receipts. :type stream: stream - :keyword bool include_text_content: Include text lines and text content references in the result. + :keyword bool include_text_content: + Whether or not to include text elements such as lines and words in addition to form fields. :keyword str content_type: Media type of the body sent to the API. Content-type is auto-detected, but can be overridden by passing this keyword argument. For options, see :class:`~azure.ai.formrecognizer.FormContentType`. @@ -142,7 +143,8 @@ async def recognize_receipts_from_url( :param url: The url of the receipt. Currently only supports US sales receipts. :type url: str - :keyword bool include_text_content: Include text lines and text content references in the result. + :keyword bool include_text_content: + Whether or not to include text elements such as lines and words in addition to form fields. :keyword int polling_interval: Waiting time between two polls for LRO operations if no Retry-After header is present. Defaults to 5 seconds. :return: A list of USReceipt. @@ -257,7 +259,8 @@ async def recognize_custom_forms( :param str model_id: Custom model identifier. :param stream: .pdf, .jpg, .png or .tiff type file stream. :type stream: stream - :keyword bool include_text_content: Include text lines and element references in the result. + :keyword bool include_text_content: + Whether or not to include text elements such as lines and words in addition to form fields. :keyword str content_type: Media type of the body sent to the API. Content-type is auto-detected, but can be overridden by passing this keyword argument. For options, see :class:`~azure.ai.formrecognizer.FormContentType`. @@ -318,7 +321,8 @@ async def recognize_custom_forms_from_url( :param str model_id: Custom model identifier. :param url: The url of the document. :type url: str - :keyword bool include_text_content: Include text lines and element references in the result. + :keyword bool include_text_content: + Whether or not to include text elements such as lines and words in addition to form fields. :keyword int polling_interval: Waiting time between two polls for LRO operations if no Retry-After header is present. Defaults to 5 seconds. :return: A list of RecognizedForm. diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/dev_requirements.txt b/sdk/formrecognizer/azure-ai-formrecognizer/dev_requirements.txt index 59dbb5dd126e..49b9236d82c3 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/dev_requirements.txt +++ b/sdk/formrecognizer/azure-ai-formrecognizer/dev_requirements.txt @@ -3,6 +3,5 @@ -e ../../cognitiveservices/azure-mgmt-cognitiveservices ../../core/azure-core -e ../../identity/azure-identity -../../storage/azure-storage-blob aiohttp>=3.0; python_version >= '3.5' msrest>=0.6.12 \ No newline at end of file diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/samples/async_samples/sample_recognize_content_async.py b/sdk/formrecognizer/azure-ai-formrecognizer/samples/async_samples/sample_recognize_content_async.py index 81cfd68c5e1b..630a1bb62548 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/samples/async_samples/sample_recognize_content_async.py +++ b/sdk/formrecognizer/azure-ai-formrecognizer/samples/async_samples/sample_recognize_content_async.py @@ -68,8 +68,9 @@ async def recognize_content(self): )) # [END recognize_content_async] for line_idx, line in enumerate(content.lines): - print("Line # {} has text '{}' within bounding box '{}'".format( + print("Line # {} has word count '{}' and text '{}' within bounding box '{}'".format( line_idx, + len(line.words), line.text, format_bounding_box(line.bounding_box) )) diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/samples/async_samples/sample_train_model_with_labels_async.py b/sdk/formrecognizer/azure-ai-formrecognizer/samples/async_samples/sample_train_model_with_labels_async.py index 98667b40cd48..aa71a7c9050c 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/samples/async_samples/sample_train_model_with_labels_async.py +++ b/sdk/formrecognizer/azure-ai-formrecognizer/samples/async_samples/sample_train_model_with_labels_async.py @@ -57,7 +57,7 @@ async def train_model_with_labels(self): # looping through the submodels, which contains the fields they were trained on # The labels are based on the ones you gave the training document. for submodel in model.models: - print("...The submodel has accuracy '{}'".format(submodel.accuracy)) + print("...The submodel with form type {} has accuracy '{}'".format(submodel.form_type, submodel.accuracy)) for name, field in submodel.fields.items(): print("...The model found field '{}' to have name '{}' with an accuracy of {}".format( name, field.name, field.accuracy diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/samples/async_samples/sample_train_model_without_labels_async.py b/sdk/formrecognizer/azure-ai-formrecognizer/samples/async_samples/sample_train_model_without_labels_async.py index 7d40e03eaf4e..1f28703a62b6 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/samples/async_samples/sample_train_model_without_labels_async.py +++ b/sdk/formrecognizer/azure-ai-formrecognizer/samples/async_samples/sample_train_model_without_labels_async.py @@ -54,6 +54,7 @@ async def train_model_without_labels(self): print("Recognized fields:") # Looping through the submodels, which contains the fields they were trained on for submodel in model.models: + print("...The submodel has form type '{}'".format(submodel.form_type)) for name, field in submodel.fields.items(): print("...The model found field '{}' to have label '{}'".format( name, field.label diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/samples/sample_recognize_content.py b/sdk/formrecognizer/azure-ai-formrecognizer/samples/sample_recognize_content.py index 09f5838b6324..53860003bc4e 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/samples/sample_recognize_content.py +++ b/sdk/formrecognizer/azure-ai-formrecognizer/samples/sample_recognize_content.py @@ -60,8 +60,9 @@ def recognize_content(self): )) # [END recognize_content] for line_idx, line in enumerate(content.lines): - print("Line # {} has text '{}' within bounding box '{}'".format( + print("Line # {} has word count '{}' and text '{}' within bounding box '{}'".format( line_idx, + len(line.words), line.text, format_bounding_box(line.bounding_box) )) diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/samples/sample_train_model_with_labels.py b/sdk/formrecognizer/azure-ai-formrecognizer/samples/sample_train_model_with_labels.py index 49a1addd0e3f..b8bf50fbe915 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/samples/sample_train_model_with_labels.py +++ b/sdk/formrecognizer/azure-ai-formrecognizer/samples/sample_train_model_with_labels.py @@ -55,7 +55,7 @@ def train_model_with_labels(self): # looping through the submodels, which contains the fields they were trained on # The labels are based on the ones you gave the training document. for submodel in model.models: - print("...The submodel has accuracy '{}'".format(submodel.accuracy)) + print("...The submodel with form type {} has accuracy '{}'".format(submodel.form_type, submodel.accuracy)) for name, field in submodel.fields.items(): print("...The model found field '{}' to have name '{}' with an accuracy of {}".format( name, field.name, field.accuracy diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/samples/sample_train_model_without_labels.py b/sdk/formrecognizer/azure-ai-formrecognizer/samples/sample_train_model_without_labels.py index 298491b6f945..9a0040309353 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/samples/sample_train_model_without_labels.py +++ b/sdk/formrecognizer/azure-ai-formrecognizer/samples/sample_train_model_without_labels.py @@ -52,6 +52,7 @@ def train_model_without_labels(self): print("Recognized fields:") # Looping through the submodels, which contains the fields they were trained on for submodel in model.models: + print("...The submodel has form type '{}'".format(submodel.form_type)) for name, field in submodel.fields.items(): print("...The model found field '{}' to have label '{}'".format( name, field.label diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/setup.py b/sdk/formrecognizer/azure-ai-formrecognizer/setup.py index 654689f70a5f..7fde2ad11ac3 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/setup.py +++ b/sdk/formrecognizer/azure-ai-formrecognizer/setup.py @@ -59,7 +59,7 @@ author_email='azpysdkhelp@microsoft.com', url='https://github.com/Azure/azure-sdk-for-python', classifiers=[ - 'Development Status :: 4 - Beta', + "Development Status :: 4 - Beta", 'Programming Language :: Python', 'Programming Language :: Python :: 2', 'Programming Language :: Python :: 2.7', diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/conftest.py b/sdk/formrecognizer/azure-ai-formrecognizer/tests/conftest.py index 2f206cb38d9a..c124f8c845a3 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/tests/conftest.py +++ b/sdk/formrecognizer/azure-ai-formrecognizer/tests/conftest.py @@ -9,7 +9,7 @@ import sys # fixture needs to be visible from conftest -from testcase import form_recognizer_account, form_recognizer_and_storage_account +from testcase import form_recognizer_account # Ignore async tests for Python < 3.5 collect_ignore_glob = [] @@ -20,7 +20,4 @@ def pytest_configure(config): # register an additional marker config.addinivalue_line( "usefixtures", "form_recognizer_account" - ) - config.addinivalue_line( - "usefixtures", "form_recognizer_and_storage_account" ) \ No newline at end of file diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_content.test_blank_page.yaml b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_content.test_blank_page.yaml new file mode 100644 index 000000000000..bb7970eb0352 --- /dev/null +++ b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_content.test_blank_page.yaml @@ -0,0 +1,566 @@ +interactions: +- request: + body: !!python/object/new:_io.BytesIO + state: !!python/tuple + - !!binary | + JVBERi0xLjcNCiW1tbW1DQoxIDAgb2JqDQo8PC9UeXBlL0NhdGFsb2cvUGFnZXMgMiAwIFIvTGFu + Zyhlbi1VUykgL1N0cnVjdFRyZWVSb290IDEwIDAgUi9NYXJrSW5mbzw8L01hcmtlZCB0cnVlPj4v + TWV0YWRhdGEgMjAgMCBSL1ZpZXdlclByZWZlcmVuY2VzIDIxIDAgUj4+DQplbmRvYmoNCjIgMCBv + YmoNCjw8L1R5cGUvUGFnZXMvQ291bnQgMS9LaWRzWyAzIDAgUl0gPj4NCmVuZG9iag0KMyAwIG9i + ag0KPDwvVHlwZS9QYWdlL1BhcmVudCAyIDAgUi9SZXNvdXJjZXM8PC9Gb250PDwvRjEgNSAwIFI+ + Pi9FeHRHU3RhdGU8PC9HUzcgNyAwIFIvR1M4IDggMCBSPj4vUHJvY1NldFsvUERGL1RleHQvSW1h + Z2VCL0ltYWdlQy9JbWFnZUldID4+L01lZGlhQm94WyAwIDAgNjEyIDc5Ml0gL0NvbnRlbnRzIDQg + MCBSL0dyb3VwPDwvVHlwZS9Hcm91cC9TL1RyYW5zcGFyZW5jeS9DUy9EZXZpY2VSR0I+Pi9UYWJz + L1MvU3RydWN0UGFyZW50cyAwPj4NCmVuZG9iag0KNCAwIG9iag0KPDwvRmlsdGVyL0ZsYXRlRGVj + b2RlL0xlbmd0aCAxMzI+Pg0Kc3RyZWFtDQp4nC2MsQrCQBBE+4X9hynV4m73iJ4HIUUuMSgEFA8s + xFJTKaj/D67iFAPDPB78HnXtx7ztIE2Dtst4MomTb5IGCFbWMQW8rkynBR5MbWHyG4WqkwrlxqTG + CRQxOAkVoiS3tOdu3HCMmN7mxPRb6/8amM4zzC8oO6bejAcm9GPGB3fjHKoNCmVuZHN0cmVhbQ0K + ZW5kb2JqDQo1IDAgb2JqDQo8PC9UeXBlL0ZvbnQvU3VidHlwZS9UcnVlVHlwZS9OYW1lL0YxL0Jh + c2VGb250L0JDREVFRStDYWxpYnJpL0VuY29kaW5nL1dpbkFuc2lFbmNvZGluZy9Gb250RGVzY3Jp + cHRvciA2IDAgUi9GaXJzdENoYXIgMzIvTGFzdENoYXIgMzIvV2lkdGhzIDE4IDAgUj4+DQplbmRv + YmoNCjYgMCBvYmoNCjw8L1R5cGUvRm9udERlc2NyaXB0b3IvRm9udE5hbWUvQkNERUVFK0NhbGli + cmkvRmxhZ3MgMzIvSXRhbGljQW5nbGUgMC9Bc2NlbnQgNzUwL0Rlc2NlbnQgLTI1MC9DYXBIZWln + aHQgNzUwL0F2Z1dpZHRoIDUyMS9NYXhXaWR0aCAxNzQzL0ZvbnRXZWlnaHQgNDAwL1hIZWlnaHQg + MjUwL1N0ZW1WIDUyL0ZvbnRCQm94WyAtNTAzIC0yNTAgMTI0MCA3NTBdIC9Gb250RmlsZTIgMTkg + MCBSPj4NCmVuZG9iag0KNyAwIG9iag0KPDwvVHlwZS9FeHRHU3RhdGUvQk0vTm9ybWFsL2NhIDE+ + Pg0KZW5kb2JqDQo4IDAgb2JqDQo8PC9UeXBlL0V4dEdTdGF0ZS9CTS9Ob3JtYWwvQ0EgMT4+DQpl + bmRvYmoNCjkgMCBvYmoNCjw8L0F1dGhvcihLcmlzdGEgUHJhdGljbykgL0NyZWF0b3Io/v8ATQBp + AGMAcgBvAHMAbwBmAHQArgAgAFcAbwByAGQAIABmAG8AcgAgAE8AZgBmAGkAYwBlACAAMwA2ADUp + IC9DcmVhdGlvbkRhdGUoRDoyMDIwMDMyMDEwNDQ0Ni0wNycwMCcpIC9Nb2REYXRlKEQ6MjAyMDAz + MjAxMDQ0NDYtMDcnMDAnKSAvUHJvZHVjZXIo/v8ATQBpAGMAcgBvAHMAbwBmAHQArgAgAFcAbwBy + AGQAIABmAG8AcgAgAE8AZgBmAGkAYwBlACAAMwA2ADUpID4+DQplbmRvYmoNCjE3IDAgb2JqDQo8 + PC9UeXBlL09ialN0bS9OIDcvRmlyc3QgNDYvRmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0aCAyOTY+ + Pg0Kc3RyZWFtDQp4nG1R0WrCMBR9F/yH+we3sa1jIMKYyoZYSivsofgQ610NtomkKejfL3ftsANf + wjk355ycJCKGAEQEsQDhQRCD8Oh1DmIGUTgDEUIU++EcopcAFgtMWR1AhjmmuL9fCXNnu9Kta2pw + W0BwAEwrCFmzXE4nvSUYLCtTdg1p98wpuEp2gME1UuwtUWaMw8zUtJNX7sh5qbQ+i3e5Lk84Jupj + RrsJ3dyW7iCG6I3P0sYRJrys9elB9l56NDfMqXT4QfJEtsfs+cOfulaa8rPkhjx40z5BOmX0wK1T + 39KDX/Zl7OVozOVxe560ZyLHJR3uZGnNiL+f/TriKyVrU40Gea1ONNL253hZZWWDG1V1loa7Jl3T + FvzH83+vm8iG2qKnj6efTn4AVAqiuw0KZW5kc3RyZWFtDQplbmRvYmoNCjE4IDAgb2JqDQpbIDIy + Nl0gDQplbmRvYmoNCjE5IDAgb2JqDQo8PC9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDE5Mzg5 + L0xlbmd0aDEgODE3NDA+Pg0Kc3RyZWFtDQp4nOx9B3xUVdr+OfdOy8wkM5NkkkkmYWaYJASGFCCB + BJAMpNA7gwk1IYWAAQKEIgJGUdAo9l7Rta1YJgNqwO5iWQv2vhZ2XVdXse3qKgL5nnPfORDY1f+3 + 1fX7z5s88zznPeWe+t6TH8kPxhljdnzoWG3lqIoZBf1stzPumcAYf6Jy1ITyq5qr4hnPzGBMKZw8 + vWDgtY/W3YO8s1Crtn5JXetF716EsiddgvwP6le3eXe1vlHM2LYLGNM/0NS6cMnGd9UhjC1dy1h8 + YGHLyU2vVu4oYuwW1LF90NxY1/DtxJPDaM+K9gY3wxF/Z8Z+pCuQzmpe0rZ2xDjjAaQ/YmzRHS3L + 6uvyGvrezNi9hSg+c0nd2tZ8c/abyG9Gee+Sxra6q07ftppxXzLSZyytW9J43YGv5zP2KfpbuLJ1 + 2cq2bjfbzHjGQVG+dUVja9LC3mmMnXITHvcJE3NhGLpv9uI1H8+3Df+apZmYsPs/Wf+s4NfHrpn8 + /YFD7XGfmgYjGccURoZ6BnaY8T3mbd8fOLAt7lOtpR6WdofwuPuxdmZnw6EVcAHbwljiYO25nKm6 + AL+A6ZlJf6V+EJrsRay+wDYrzMQUm15RFJ2q6D5g+d2PsKxTtB7AJk73elmQsexnqQ/G65QcL+Pd + Ik+9T58gRsqSdQlHe8OfZ//fm+F1dsdP3Yf/K6ZrZDf81H34e8xg+Pf0V93/85qHf4fpiljtT92H + mP3zpjzNrvyp+/BzMOX3bMw/Uo9/w1r+1X2JWcxiFrOY/eOmXM3NP5hXy/b/J/vyczG1mJ3zU/ch + ZjGLWcxi9o+b7lHW9B9/5hJ23n/6mTGLWcxiFrOYxSxmMYtZzGIWs/+7Fvs5M2Yxi1nMYhazmMUs + ZjGLWcxiFrOYxey/23jst9FjFrOYxSxmMYtZzGIWs5jFLGYxi1nMYhazmMUsZjGLWcxiFrOYxSxm + MYtZzGIWs5jFLGYxi1nMYhazmMUsZjGLWcz+S6x790/dg5jF7Cc2NYqM6P8k1YEUlLKa6dhSpFOY + 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 + +xG3mmhL96QrfW1pvHxyGl+Wdmra+WmqzfW8Swm6+vavsqU+n/pe6uepuqRgat/8KpZiT/GmqE4x + tpSJM6o0LqsgHlCsjdWT4s+psjm5zelxKpWfO/lmpnIv54zbQaoJZXZyp6dKfZCLX6LTM84vYDMC + 47tMbNr4sGnK7DA/K5w9XXwGp84KG84Ks9Cs2dWdnJ9Xo/1OQjhZ/FKJlj5z61aWOWp8OHN6dUTd + ti1zVM34cLvQwaCmu4VmKFITmLdy1cpAdfAE5njf8YVDdT5sf96u2GzcZuu2KUEbOm9L8CQo4qM7 + QQ0mDBhSZYv3xCviozteTQnGwyPG18c6ZUaVzeKxKKEyy2SLErSUlVcFLXmFVX81zh1inPTkQNs8 + fMxb2RbQvpGq4atEMiC84ntlG9Lia5WWZoEfNSoGmr8S1iadbT9e67/d+E/dgZ+/0W/yjOxWzmAN + yibgdOA0oB04FdgIbADWA6cA64CTgbXAGmA1sApoA1YCy4FWYBmwFFgCtAAnAYuBRUAzsBBoAhqB + BqAeWADUAbXAfGAeMBeYA8wGZgE1QDVwIjATCAEzgOnANGAqMAWYDEwCJgITgPHAOGAsMAYYDVQB + lUAFUA6MAkYCQaAMGAGcAAwHhgFDgVKgBBgCDAaKgSJgEDAQGAAUAgVAPpAH9AcCQD+gL5AL9AFy + gGwgC/ADvQEf4AU8QC8gE8gA3EA6kAa4gFQgBXACyUASkAg4ADtgAxKAeMAKWAAzEAeYACNgAPSA + bmQ3PlVAATjAWAOHjx8GDgEHge+BA8B3wLfAX4BvgK+BPwN/Ar4CvgS+AD4HPgP2A58CnwB/BD4G + PgL+AHwI/B74APgd8FtgH/A+8B7wLvAO8BvgbeAt4E3gDeB14DXgVeAV4GXgJeBF4AXgeWAv8Bzw + LPAM8DTwa+Ap4EngCeBxYA/wK+Ax4FHgEeBh4CHgQeAB4H5gN7AL6ALuA+4F7gF2AjuACNAJhIG7 + gbuAO4E7gO3A7cAvgduAW4FbgJuBm4BfADcCNwDbgOuB64BrgWuAq4GrgCuBK4DLgcuAS4FLgIuB + i4ALgQuA84HzgK3AucA5QAdwNnAWsAXYDJzJGka2c5x/jvPPcf45zj/H+ec4/xznn+P8c5x/jvPP + cf45zj/H+ec4/xznn+P8c5x/jvPPVwCIARwxgCMGcMQAjhjAEQM4YgBHDOCIARwxgCMGcMQAjhjA + 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 + uHNOntVntltoN7fZZcns+b3njj5RYD9zj2wYh93jRY32F+XYd7t63rI9HL47es2yJ/Lzkt3tQlaU + DZGNmzl6SlRiyln72V+ccO/r8eSz3lNExze9zb7aw4rjv/BG9zYrTm3xzCvteuW29FBk9/xRPk9c + Rq+cqR877Y8jHRlRnfZOdt6+fI2F/cK6rFdZnDnlnXp2yh4glHjZyFUD5829NvaP6hlPojpffBN+ + fGfIA1WHDdc3+tYdv/DEceN8v7J5cY7d7R5bTzrjVcNzu/Jwf8DPgxZ/K+xq+6Pt3h/Xb7i++bfz + riX9BAPCeCN93b+s/MP3xUV2N0I+b3PapCyVetVWfU0vC8uVeCe/HsU9XeIy7Kqr4p5envGlh9p1 + tGBV7vVenWTLaoaI0ifUeEq6lE2oPffkxeOWFQt8L/+0ouz4/SES/tVBVl9P7GGZZ/mLZWWOV4td + YvGWh7//2Ia1q5Z/wNHv/kVZ4L2yZxWD557FzlRE7Ux7UrbCpm+M8/xCr+OY//7KhSt6CvLahvx4 + YunSJaNGtXsVM8dr7eton8Kni1/szt7at+zK3Zx893t3QucXuPV9f6bKJyvnxsZXb6bctSu8Iw/f + +IasY8VOr63NUUpmdf9lUWp8wu7C/u0q8pvxvEc94NtW9ny9+ujyIXsqShb2H5kaHyOo7n1oYe4g + 28KY7LcFS/bsVCpHHBLpXBxGJf7ELWZtIotZ6xg4ThbN+acLV9O/Dqy/OVJetA8mHzqIbZhce9M7 + L0CK+p4d15E0nXUlfeoXsrggtb0tjVw1/fGjM0XNa/13KmeO++6u+0VSarLEnptKJpd3KvRr8qu7 + yR8+TaWiY2H7j+7sZONfERGNajOrGMeSoqevHPvdYvVAX8vz3KGiwO1V/ax6ch09R23Ii04evDs0 + 2CnU+WRSRvsUy3OiWa635i1oKdcOYm+ousbxd+7gGGX7Wj5xdrTix9nSvuf3TmbVZj3gTvj14reH + 18+qm7ay35fq/DU4a8fbHVu/P3i77u3+idi5m9sXSZedCD+gODDs9e3XP7geLwtT1HW2fPwgemKz + /OOe7/uH/3RlQNvUWwdKrJvvXamY//X119X+sheffcZcF/NtO/4o71U7brQ4OjPi9aA2dQm5bvxv + 3q6JcZocnrJtxN4dK3kXJM67ugyYbsHp6TFzyNJpN2+5T7pVOu+ngmc97npkFzuOwA/vSO2YtdzB + q7Zj8tm+7EHekyuKGX7geNK+3keW3GKGKxhqhkJz+j92Id70nTaTmBxCupmGpF39HUMcMDfOWHCd + 0C+Ou3BDeFz4GvhBREbcHhe+ONHvwN2OU11Vp6qzPBd+V9DokgnGCjfe5UvGpP5Mj7Q+Zfq7tmP7 + +Ae5+x8Y8uTc1cf3v1hbutDnFi+z+V37K+dOT4vvMKLjstoFhUPnB5zoMlTWYs1vVzeOaam8w291 + XH/hvfqBTUXvxY/7jPyyk2jgYq/7jKoAYWmk96n7L+2sxHdTCsZYF4wp07gMK5cN8rPwyjiw+WDG + olP3xRf5udFb3148d/1t8bvrkrRjP1zdXOYg33di5JxHT3Mjv7+0r+CXdz8v32a3hGuRdD122/bv + vVKGVDwZd3v2xWk7NtkV3XVZ1KPLiOyvjw7h/3J7+enzy6punTtvP9plwNne7FOq7b/6h4+729uh + eqxVv8vdnqxNi908ORd/sHGv/+OcFZO5XX+fFon9H5Hg2m4NCmVuZHN0cmVhbQ0KZW5kb2JqDQoy + MCAwIG9iag0KPDwvVHlwZS9NZXRhZGF0YS9TdWJ0eXBlL1hNTC9MZW5ndGggMzA4ND4+DQpzdHJl + YW0NCjw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+ + PHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iMy4xLTcwMSI+Cjxy + ZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4 + LW5zIyI+CjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiICB4bWxuczpwZGY9Imh0dHA6Ly9u + cy5hZG9iZS5jb20vcGRmLzEuMy8iPgo8cGRmOlByb2R1Y2VyPk1pY3Jvc29mdMKuIFdvcmQgZm9y + IE9mZmljZSAzNjU8L3BkZjpQcm9kdWNlcj48L3JkZjpEZXNjcmlwdGlvbj4KPHJkZjpEZXNjcmlw + dGlvbiByZGY6YWJvdXQ9IiIgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMv + MS4xLyI+CjxkYzpjcmVhdG9yPjxyZGY6U2VxPjxyZGY6bGk+S3Jpc3RhIFByYXRpY288L3JkZjps + aT48L3JkZjpTZXE+PC9kYzpjcmVhdG9yPjwvcmRmOkRlc2NyaXB0aW9uPgo8cmRmOkRlc2NyaXB0 + aW9uIHJkZjphYm91dD0iIiAgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAv + Ij4KPHhtcDpDcmVhdG9yVG9vbD5NaWNyb3NvZnTCriBXb3JkIGZvciBPZmZpY2UgMzY1PC94bXA6 + Q3JlYXRvclRvb2w+PHhtcDpDcmVhdGVEYXRlPjIwMjAtMDMtMjBUMTA6NDQ6NDYtMDc6MDA8L3ht + cDpDcmVhdGVEYXRlPjx4bXA6TW9kaWZ5RGF0ZT4yMDIwLTAzLTIwVDEwOjQ0OjQ2LTA3OjAwPC94 + bXA6TW9kaWZ5RGF0ZT48L3JkZjpEZXNjcmlwdGlvbj4KPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJv + dXQ9IiIgIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIj4KPHht + cE1NOkRvY3VtZW50SUQ+dXVpZDo4RjI5Q0E4Qy1FRThCLTQ3NTktQkM5Qi1BMDhFRkVFNjYyMDE8 + L3htcE1NOkRvY3VtZW50SUQ+PHhtcE1NOkluc3RhbmNlSUQ+dXVpZDo4RjI5Q0E4Qy1FRThCLTQ3 + NTktQkM5Qi1BMDhFRkVFNjYyMDE8L3htcE1NOkluc3RhbmNlSUQ+PC9yZGY6RGVzY3JpcHRpb24+ + CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgIAo8L3JkZjpSREY+PC94OnhtcG1ldGE+PD94cGFja2V0 + IGVuZD0idyI/Pg0KZW5kc3RyZWFtDQplbmRvYmoNCjIxIDAgb2JqDQo8PC9EaXNwbGF5RG9jVGl0 + bGUgdHJ1ZT4+DQplbmRvYmoNCjIyIDAgb2JqDQo8PC9UeXBlL1hSZWYvU2l6ZSAyMi9XWyAxIDQg + Ml0gL1Jvb3QgMSAwIFIvSW5mbyA5IDAgUi9JRFs8OENDQTI5OEY4QkVFNTk0N0JDOUJBMDhFRkVF + NjYyMDE+PDhDQ0EyOThGOEJFRTU5NDdCQzlCQTA4RUZFRTY2MjAxPl0gL0ZpbHRlci9GbGF0ZURl + Y29kZS9MZW5ndGggODM+Pg0Kc3RyZWFtDQp4nC3LsQFAQAyF4ZfcHbW1KJUKnTHYxgR6k1Ba48R7 + UuQrkh+IqdVid8DHLm5iD/GDpInkXmwibs7cRRJZFGHi/2yiKyfzdhALGVcyX8ALyoALUA0KZW5k + c3RyZWFtDQplbmRvYmoNCnhyZWYNCjAgMjMNCjAwMDAwMDAwMTAgNjU1MzUgZg0KMDAwMDAwMDAx + NyAwMDAwMCBuDQowMDAwMDAwMTY2IDAwMDAwIG4NCjAwMDAwMDAyMjIgMDAwMDAgbg0KMDAwMDAw + MDQ4NiAwMDAwMCBuDQowMDAwMDAwNjkyIDAwMDAwIG4NCjAwMDAwMDA4NTkgMDAwMDAgbg0KMDAw + MDAwMTA5OCAwMDAwMCBuDQowMDAwMDAxMTUxIDAwMDAwIG4NCjAwMDAwMDEyMDQgMDAwMDAgbg0K + MDAwMDAwMDAxMSA2NTUzNSBmDQowMDAwMDAwMDEyIDY1NTM1IGYNCjAwMDAwMDAwMTMgNjU1MzUg + Zg0KMDAwMDAwMDAxNCA2NTUzNSBmDQowMDAwMDAwMDE1IDY1NTM1IGYNCjAwMDAwMDAwMTYgNjU1 + MzUgZg0KMDAwMDAwMDAxNyA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDE4Njcg + MDAwMDAgbg0KMDAwMDAwMTg5NCAwMDAwMCBuDQowMDAwMDIxMzc0IDAwMDAwIG4NCjAwMDAwMjQ1 + NDEgMDAwMDAgbg0KMDAwMDAyNDU4NiAwMDAwMCBuDQp0cmFpbGVyDQo8PC9TaXplIDIzL1Jvb3Qg + MSAwIFIvSW5mbyA5IDAgUi9JRFs8OENDQTI5OEY4QkVFNTk0N0JDOUJBMDhFRkVFNjYyMDE+PDhD + Q0EyOThGOEJFRTU5NDdCQzlCQTA4RUZFRTY2MjAxPl0gPj4NCnN0YXJ0eHJlZg0KMjQ4NjgNCiUl + RU9GDQp4cmVmDQowIDANCnRyYWlsZXINCjw8L1NpemUgMjMvUm9vdCAxIDAgUi9JbmZvIDkgMCBS + L0lEWzw4Q0NBMjk4RjhCRUU1OTQ3QkM5QkEwOEVGRUU2NjIwMT48OENDQTI5OEY4QkVFNTk0N0JD + OUJBMDhFRkVFNjYyMDE+XSAvUHJldiAyNDg2OC9YUmVmU3RtIDI0NTg2Pj4NCnN0YXJ0eHJlZg0K + MjU0ODQNCiUlRU9G + - 0 + - null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '25662' + Content-Type: + - application/pdf + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/layout/analyze + response: + body: + string: '' + headers: + apim-request-id: + - cbe299f1-47e0-48b3-850f-a6cc79710055 + content-length: + - '0' + date: + - Wed, 22 Apr 2020 22:27:03 GMT + operation-location: + - https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/layout/analyzeResults/cbe299f1-47e0-48b3-850f-a6cc79710055 + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '276' + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/layout/analyzeResults/cbe299f1-47e0-48b3-850f-a6cc79710055 + response: + body: + string: '{"status":"running","createdDateTime":"2020-04-22T22:27:03Z","lastUpdatedDateTime":"2020-04-22T22:27:03Z"}' + headers: + apim-request-id: + - c42f16b5-93a1-4bca-a731-bbc6ea665f5e + content-type: + - application/json; charset=utf-8 + date: + - Wed, 22 Apr 2020 22:27:09 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + transfer-encoding: + - chunked + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '68' + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/layout/analyzeResults/cbe299f1-47e0-48b3-850f-a6cc79710055 + response: + body: + string: '{"status":"succeeded","createdDateTime":"2020-04-22T22:27:03Z","lastUpdatedDateTime":"2020-04-22T22:27:13Z","analyzeResult":{"version":"2.0.0","readResults":[{"page":1,"language":"en","angle":0,"width":8.4967,"height":10.9967,"unit":"inch","lines":[]}],"pageResults":[{"page":1,"tables":[]}]}}' + headers: + apim-request-id: + - 779eec93-c858-47c5-bfd0-b6b77ca12a15 + content-type: + - application/json; charset=utf-8 + date: + - Wed, 22 Apr 2020 22:27:14 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + transfer-encoding: + - chunked + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '236' + status: + code: 200 + message: OK +version: 1 diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_content.test_content_multipage.yaml b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_content.test_content_multipage.yaml new file mode 100644 index 000000000000..c8d443342092 --- /dev/null +++ b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_content.test_content_multipage.yaml @@ -0,0 +1,2047 @@ +interactions: +- request: + body: !!binary | + JVBERi0xLjcNCiW1tbW1DQoxIDAgb2JqDQo8PC9UeXBlL0NhdGFsb2cvUGFnZXMgMiAwIFIvTGFu + Zyhlbi1VUykgL1N0cnVjdFRyZWVSb290IDE2IDAgUi9NYXJrSW5mbzw8L01hcmtlZCB0cnVlPj4v + TWV0YWRhdGEgMjUzIDAgUi9WaWV3ZXJQcmVmZXJlbmNlcyAyNTQgMCBSPj4NCmVuZG9iag0KMiAw + IG9iag0KPDwvVHlwZS9QYWdlcy9Db3VudCAzL0tpZHNbIDMgMCBSIDExIDAgUiAxMyAwIFJdID4+ + DQplbmRvYmoNCjMgMCBvYmoNCjw8L1R5cGUvUGFnZS9QYXJlbnQgMiAwIFIvUmVzb3VyY2VzPDwv + Rm9udDw8L0YxIDUgMCBSL0YyIDkgMCBSPj4vRXh0R1N0YXRlPDwvR1M3IDcgMCBSL0dTOCA4IDAg + Uj4+L1Byb2NTZXRbL1BERi9UZXh0L0ltYWdlQi9JbWFnZUMvSW1hZ2VJXSA+Pi9NZWRpYUJveFsg + MCAwIDYxMiA3OTJdIC9Db250ZW50cyA0IDAgUi9Hcm91cDw8L1R5cGUvR3JvdXAvUy9UcmFuc3Bh + cmVuY3kvQ1MvRGV2aWNlUkdCPj4vVGFicy9TL1N0cnVjdFBhcmVudHMgMD4+DQplbmRvYmoNCjQg + MCBvYmoNCjw8L0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggMjg2ND4+DQpzdHJlYW0NCnicvZxZ + bxw3EsffBeg79ONMsGrzPhZBAMvXerEGkrWAPBiLwJYPGIilXVubbL79VrHvYRfZ3cOOAI2OLvJf + LFb/SPbB6tGP1fffP3r15OXTiv3wQ3X99En1n8sLVjP88lxUrDLwab2ovn64vPj5u+ru8uL65vLi + 0XNecVMzV918vLzgYMcqXikpam4ry1TtTHXzBexevLbVp29QZ/Up/OXav15cXrw5vLz77agP9/D9 + +WgOt/DzA3xXx39VN3+/vHgGOj9dXpzlkAOH+Nih4Ecr//x4JYP6V1D/azlVzVzNDKV60rzq2asn + VTXqCL6+I8RcLxjrayUi+eujgmhf+cOv+PEuxN+CUyYcefsJ/wsfrjG6g+PfNkfmxC9vau8pv3Jh + EaXCYmSt9Yl8dQV1OlXd3L45cCFLNVizmvt5xajBZ6iI2klK5W/HK25CF2NXvyulCX0oSM2QOQ/H + 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 + fvW3lN9NoKP8fgIt5fcTaCkfCZSmfCSw09UI6BG/5zmhhK3NXNLi2yxyv6sRhuO2Ndl2xSReu18C + SWJj63VjgCulDJhYt8bwpZRleJt/hbRauxkZKS1YnXrQP1Zeu/sWqczwsaPoQiXOyj7h6XqHU7Nw + 4j5Agofrl1/DFhRHCafxlSw3vgmNdx9P/alYcBMnVb/AV7HR2uNeVHHjrz9DKxFR4SLtfXVUh+u3 + 2N4QjPCBobkrNuZyvAMV+7FxL7PZQV3OCfxy5A4iij0481lKHXfbcTPqJ0nTd4eAs8CYcIeT1VbQ + t+LU2ltxVP7jrMGt4o1aeyuOlIaffhVkVamLzULb9D3+WLrUlRyhOO7ztEa61PJCAGLMOulS46lg + IcPXSJcaULmXuJ3hGulSIyq3DleUK6R1qRGVG5hGrGq1LjWkcmXwYaE10qVoxiXD+eoa6VI041zj + BgZrpEvRzPuam1Ug1aVohk8vi3XSHc04bmeEj9VUhsnwOhCMljA1gRHb9AMfw80Nf0dZqDxp/Xp4 + TA7MvFJgaGoPJlbVsrkCYqnn5PSIc8tK9/fXAS7TyBgJQ4uqLAzmohtYP/Xhid+vPlfPwtTZkXr3 + OJv90lxjdDiRlTildYc/cAPfx2Hvz5f4Gf75G0z37rvp7y0+uBxvgnWuuxwyB5hIuJvNHretowTd + UQYnabEnj3HPzvf9XP8bLHLV4Vu8cj/XCw7/gnk/4UU2Hn5z4s4HQ3MsdeqGPnb7VjRbEL8K9ww/ + Q0xY2N8U//f6AVcH8UOgZ7nFhcKt+Qi3sps3ssLRkbpW8S6K/XayZvFmr+cFRcraSsqbbFB44aDg + vdjTnS1ze6SeJew4LTy3Vep5YgoWKaRY4ZZ5DoOxWxLSwhkFY6rQf1JEOZRypFhuD9ozzxzgiKSk + iee8/w9kOwx8DQplbmRzdHJlYW0NCmVuZG9iag0KNSAwIG9iag0KPDwvVHlwZS9Gb250L1N1YnR5 + cGUvVHJ1ZVR5cGUvTmFtZS9GMS9CYXNlRm9udC9CQ0RFRUUrQ2FsaWJyaS9FbmNvZGluZy9XaW5B + bnNpRW5jb2RpbmcvRm9udERlc2NyaXB0b3IgNiAwIFIvRmlyc3RDaGFyIDMyL0xhc3RDaGFyIDEy + MS9XaWR0aHMgMjQ5IDAgUj4+DQplbmRvYmoNCjYgMCBvYmoNCjw8L1R5cGUvRm9udERlc2NyaXB0 + b3IvRm9udE5hbWUvQkNERUVFK0NhbGlicmkvRmxhZ3MgMzIvSXRhbGljQW5nbGUgMC9Bc2NlbnQg + NzUwL0Rlc2NlbnQgLTI1MC9DYXBIZWlnaHQgNzUwL0F2Z1dpZHRoIDUyMS9NYXhXaWR0aCAxNzQz + L0ZvbnRXZWlnaHQgNDAwL1hIZWlnaHQgMjUwL1N0ZW1WIDUyL0ZvbnRCQm94WyAtNTAzIC0yNTAg + MTI0MCA3NTBdIC9Gb250RmlsZTIgMjUwIDAgUj4+DQplbmRvYmoNCjcgMCBvYmoNCjw8L1R5cGUv + RXh0R1N0YXRlL0JNL05vcm1hbC9jYSAxPj4NCmVuZG9iag0KOCAwIG9iag0KPDwvVHlwZS9FeHRH + U3RhdGUvQk0vTm9ybWFsL0NBIDE+Pg0KZW5kb2JqDQo5IDAgb2JqDQo8PC9UeXBlL0ZvbnQvU3Vi + dHlwZS9UcnVlVHlwZS9OYW1lL0YyL0Jhc2VGb250L0JDREZFRStDYWxpYnJpLUJvbGQvRW5jb2Rp + bmcvV2luQW5zaUVuY29kaW5nL0ZvbnREZXNjcmlwdG9yIDEwIDAgUi9GaXJzdENoYXIgMzIvTGFz + dENoYXIgMTIwL1dpZHRocyAyNTEgMCBSPj4NCmVuZG9iag0KMTAgMCBvYmoNCjw8L1R5cGUvRm9u + dERlc2NyaXB0b3IvRm9udE5hbWUvQkNERkVFK0NhbGlicmktQm9sZC9GbGFncyAzMi9JdGFsaWNB + bmdsZSAwL0FzY2VudCA3NTAvRGVzY2VudCAtMjUwL0NhcEhlaWdodCA3NTAvQXZnV2lkdGggNTM2 + L01heFdpZHRoIDE3ODEvRm9udFdlaWdodCA3MDAvWEhlaWdodCAyNTAvU3RlbVYgNTMvRm9udEJC + b3hbIC01MTkgLTI1MCAxMjYzIDc1MF0gL0ZvbnRGaWxlMiAyNTIgMCBSPj4NCmVuZG9iag0KMTEg + MCBvYmoNCjw8L1R5cGUvUGFnZS9QYXJlbnQgMiAwIFIvUmVzb3VyY2VzPDwvRm9udDw8L0YyIDkg + MCBSPj4vRXh0R1N0YXRlPDwvR1M3IDcgMCBSL0dTOCA4IDAgUj4+L1Byb2NTZXRbL1BERi9UZXh0 + L0ltYWdlQi9JbWFnZUMvSW1hZ2VJXSA+Pi9NZWRpYUJveFsgMCAwIDYxMiA3OTJdIC9Db250ZW50 + cyAxMiAwIFIvR3JvdXA8PC9UeXBlL0dyb3VwL1MvVHJhbnNwYXJlbmN5L0NTL0RldmljZVJHQj4+ + L1RhYnMvUy9TdHJ1Y3RQYXJlbnRzIDE+Pg0KZW5kb2JqDQoxMiAwIG9iag0KPDwvRmlsdGVyL0Zs + YXRlRGVjb2RlL0xlbmd0aCA0NzY+Pg0Kc3RyZWFtDQp4nK2Yu2ocQRBF84H5hwplB7Vdj36BUKCV + LGwQ2GjBgVEoKZLA9v+Dy4sDh6rmTjDQzNCne6BO3xo6fKXLy8P98fMNlasrur450s99K1z+XlOU + CrW496n062nfvn+kt327Pu3b4ZNSPDg975vES4WEunJRp14Ge6PTa7x099Dp5XdMSC/n0fg3utu3 + Hxf04ZFOX/btNqb7tm90e38k+m9BAlpQm8pNzws6r+OdeEXhe+M+0nhD4VvhKWm8o/Be2fL4isLr + ZO9pfEPhxbhZGt9B+Do795nGDxR+CM/87icK3xqX/O4FJcJaC2vN81Heq+bs+dITlPiqDB4LfJT5 + alGe+doXlPp8dF7YPkp93oW15fko93mt7PljV1Dyc5tc8+euoOznatw9z0fpzyOHyULsQenPInZp + /vsrSn8Wucvz319R+rMIXvnyU5T9zJ37Ah9lP9PB+cNXUfazSF5lYfso+2lEL12oPpT9NLLXStOD + sp+2utL1KMp+6pNnvvoNZT+N8FXy4cNQ9tMIX5rP3oayn0b4snz9G0p/MhrXfPg2lP6kR9u9wEf5 + TyJ9LTQ/hvKfRPpaaH4M5T+J9LXQ/BjKf1I614X6R/lvCveF9OWwv4CVR3uff/8AMWTgdQ0KZW5k + c3RyZWFtDQplbmRvYmoNCjEzIDAgb2JqDQo8PC9UeXBlL1BhZ2UvUGFyZW50IDIgMCBSL1Jlc291 + cmNlczw8L0ZvbnQ8PC9GMSA1IDAgUi9GMiA5IDAgUj4+L0V4dEdTdGF0ZTw8L0dTNyA3IDAgUi9H + UzggOCAwIFI+Pi9Qcm9jU2V0Wy9QREYvVGV4dC9JbWFnZUIvSW1hZ2VDL0ltYWdlSV0gPj4vTWVk + aWFCb3hbIDAgMCA2MTIgNzkyXSAvQ29udGVudHMgMTQgMCBSL0dyb3VwPDwvVHlwZS9Hcm91cC9T + L1RyYW5zcGFyZW5jeS9DUy9EZXZpY2VSR0I+Pi9UYWJzL1MvU3RydWN0UGFyZW50cyAyPj4NCmVu + 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 + mxWDaazuLffHZf/XyULlydKvhoeloFgtJRTUpHahL93+mltBGOxpKTm6Y7Lu6v7GpCD11DNaQExK + 6AdgSOeZT717wkML9upBhyuL6n11mfRLsw1gXRIVLp3a0+/RA+T32sKAIVRhtoQn9+zXM8QITO+A + 9glKLNq+F87X3ru/nWXj+ea8/ouJHAe52xbDiDYr2x4OQ5UX8RyPeO0OBw4teexOr37fA/vb+QJ0 + +xYuIfZaweC/AN6IFYv+0NkZIO4MmKuL8ERtde5O1TH+MO+X/kbPZ/AJ9Sd9u/979eA4Gd6x3mUW + g6WWMJhZi94xhb0jFJHhecL9wep69bHn+5wihEsfiDWLTrGFneJuoM3PeF46LXyXMMzZUOHYoeH7 + xGCtb1Gxwi2rGcxq7BqXFo4omJxw9Qd5lMFVFhVbOo1958iBPCIwaeRJ4/8DtXV3Ww0KZW5kc3Ry + ZWFtDQplbmRvYmoNCjE1IDAgb2JqDQo8PC9BdXRob3IoS3Jpc3RhIFByYXRpY28pIC9DcmVhdG9y + KP7/AE0AaQBjAHIAbwBzAG8AZgB0AK4AIABXAG8AcgBkACAAZgBvAHIAIABPAGYAZgBpAGMAZQAg + ADMANgA1KSAvQ3JlYXRpb25EYXRlKEQ6MjAyMDA0MjIxNjQ1MjktMDcnMDAnKSAvTW9kRGF0ZShE + OjIwMjAwNDIyMTY0NTI5LTA3JzAwJykgL1Byb2R1Y2VyKP7/AE0AaQBjAHIAbwBzAG8AZgB0AK4A + IABXAG8AcgBkACAAZgBvAHIAIABPAGYAZgBpAGMAZQAgADMANgA1KSA+Pg0KZW5kb2JqDQoyMyAw + IG9iag0KPDwvVHlwZS9PYmpTdG0vTiAyMzIvRmlyc3QgMjAzNS9GaWx0ZXIvRmxhdGVEZWNvZGUv + TGVuZ3RoIDMwNTE+Pg0Kc3RyZWFtDQp4nO1b24ocyRF9N/gf8g+mIu8Jy4Jt7WKzrBCSwA/CDyOp + LQ07M72MWiD9vc+pipyetTOz1Gn7weCHmbrG/UTkpaKtmMXYYIIYG40s2dhkJOIezsQaW3DfG7cY + J9FYnMWMU+NjMM6CLBrnTIjJOG+i4FkwMRa8ZpIFUTIp4W1rsrXGi8nJGe9NAUPvTMnkBLEuGx9w + LLi9GBEPfsWIBcOAawuOHtfOigkWx5SpsXiwCR7HnExwRgKIfMaxRBNoB/QK4J+kmAD6lHAfzzOs + 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 + o7YHauOettT9bxfFC374xVj+v4b+R2qoOrMW0tkCqt2Sut9ed8Hr1nDdsK3bqHVDsm4T1s27ug1W + N6fqllHdfKlbInWjoi7560K8Lo/rQrMu/+qirC5v6qKjLgX+W4W/fs361q9fDMY/AFTdMPANCmVu + ZHN0cmVhbQ0KZW5kb2JqDQoyNDkgMCBvYmoNClsgMjI2IDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAy + NTAgMzA2IDI1MiAwIDUwNyA1MDcgNTA3IDUwNyA1MDcgNTA3IDUwNyA1MDcgNTA3IDUwNyAyNjgg + MCAwIDAgMCAwIDAgNTc5IDU0NCA1MzMgNjE1IDQ4OCA0NTkgNjMxIDYyMyAyNTIgMCAwIDQyMCA4 + NTUgMCAwIDUxNyA2NzMgNTQzIDQ1OSAwIDAgMCA4OTAgMCAwIDAgMCAwIDAgMCAwIDAgNDc5IDUy + NSA0MjMgNTI1IDQ5OCAwIDQ3MSAwIDIzMCAwIDAgMjMwIDc5OSA1MjUgNTI3IDUyNSAwIDM0OSAz + OTEgMzM1IDUyNSA0NTIgMCAwIDQ1M10gDQplbmRvYmoNCjI1MCAwIG9iag0KPDwvRmlsdGVyL0Zs + YXRlRGVjb2RlL0xlbmd0aCA1MzE4Mi9MZW5ndGgxIDEzNzU5Nj4+DQpzdHJlYW0NCnic7H0HXFTH + 2v475+zCUhaWKrLiLq6Auig2FEtklaJoLCirgA2k2LChGI0lJEZNSEy5Mb2ZnhtNsqwaMdXkphfT + e+/JjaZdzc01Ub5nzruDaDTJvfd/v3z3/9sXnvM8887Me2bmzMyZjRBIEJENFxNVFIzIL1mf7HuW + xJeZRLFJBSNOzbvntXVfkfhoNVGIb/ykrL7XPly5k0icg1oVVQsqF7/T99MUovmbicyDq5Yvc+5e + /EY20Y1fIH1/7eLZC9a+pw8kWvwCkdU9u25l7bvOlS6i228meumvc2oqq38cu9KHeJGIN2AOHNY7 + O+1HOh/prnMWLFuRPXOSG2nEm7utblFV5U2b53cjseoiFJ+8oHLF4l7W9G7In4PyzgU1yyqvOmvL + chI/yfpnL6xcUHPdoYMzSTSjfu+lixctXdZqpw3ozzRZfnF9zeK42V06Eq35GbdDP+ENGfzhP3a9 + WDAzeuhB6mghafd9tfpZya8XnTb+p0OHG8P2WQYgGUYasaFeCB0h8Wj4lp8OHdoSts+I1M46bpMe + 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 + wAKEAiGAGTANb8VVBzRAAETVAj5xBDgM/Az8BBwC/gH8CPwd+AE4CBwA/gZ8D3wHfAt8A3wN7Af2 + AV8BfwW+BL4APgc+Az4FPgE+Bj4CPgQ+AN4H3gPeBd4B3gbeAt4E3gBeB14DXgVeAV4GXgJeBF4A + ngf2As8BzwLPAE8DTwFPAk8AjwOPAY8CfwEeAR4G9gAPAQ8CDwD3A/cB9wK7gRZgF3APsBPYAWwH + /EAz4APuBu4C7gS2AVuBO4A/A7cDtwG3ArcANwM3ATcCNwBbgOuB64BrgWuAq4GrgCuBK4DLgcuA + S4HNwCXAn4CLgYuAC4ELgE3A+cB5QBNwLnAOsBHYAKyn6uGNAutfYP0LrH+B9S+w/gXWv8D6F1j/ + AutfYP0LrH+B9S+w/gXWv8D6F1j/AutfYP2LegB7gMAeILAHCOwBAnuAwB4gsAcI7AECe4DAHiCw + BwjsAQJ7gMAeILAHCOwBAnuAwB4gsAcI7AECe4DAHiCwBwjsAQJ7gMAeILAHCOwBAnuAwB4gsAcI + 7AEC619g/Qusf4G1L7D2Bda+wNoXWPsCa19g7QusfYG1L7D2/+h9+L/cyv7oBvyXGy1d2u5gJi1p + pvyFp9DriI5ccszvqUygebSUGvG1gTbRJfQQvU2zaB3UlbSFbqU/k48epqfo9d/xOy+/246sNC+g + SH0XhVAcUeuh1v1HbgVazFHtPJcgFWdyHvW02lq/Ps739ZFLWm1HWkJiKdyoa9Vegvdv4nDrIbxy + kW4dINPaRuhoo8Z3odcdufvIbceNQTGV01SaRtOpgirR/2qaQ3MxMvOpjhbQQiO1EHmzca1FaiZK + YXsx9NFSi2gxUE/LqIGW42sx9NJASuYtMdINdBq+VtBKOp1W0WpaE7ieZnhWI+d0I70CWEtn4Mmc + SWcZSjF71tHZtB5PbSOdQ+f+aurcNtVE59H5eM4X0IUn1ZuOSV2Er4vpT5gPm+lSuoyuwLy4mq45 + znu54b+KrqPrMWdk3qXwXG8omXs/PU476S66m+4xxrIKo8Yjosal1hjDxRiD1ejhunYt5vE7rW20 + 1qLvsm9NgZ6ugP+sdjWWB8ZRllyHkhyFn4OMsua4kbgIfWB9tEecutTo/1Fv+1H5Na8aj2vajczV + Rkqq470n05fRtViBN+AqR1WqG6FZXW/o9v7r2spuMdI30c10C57FbYZSzJ5boW+j27G276CttA1f + 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 + IDAgMCAwIDQ1OSAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCA0NzMgNDk1IDAgMCAwIDAgMCAwIDAg + MCAwIDAgNDk4IDAgNDk0IDUzNyAwIDUzNyA1MDMgMCA0NzQgMCAyNDYgMCAwIDI0NiAwIDUzNyA1 + MzggNTM3IDAgMzU1IDM5OSAzNDcgNTM3IDAgMCA0NTldIA0KZW5kb2JqDQoyNTIgMCBvYmoNCjw8 + L0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggMzM2MzMvTGVuZ3RoMSAxMDI3MDQ+Pg0Kc3RyZWFt + DQp4nOydCXiTVdb4z33fLM3WJl3SJU2aNk26J90otAUaulEoW6HBFgRaaLG4UYGqoAzgglhFVFzG + BUFHxwWUNIAUQUTFXdQZUccdlxnXjqjgKNDkf+570tIiuMz4jd//+XLa8/7uPffcfXsj8SkwANDj + QwZNVeWV9bcVPhsGrO2PAGqMj6t4/SnTOGBzDqBD98Qprvz1X835GoCtwlxNc85pblc9YVwHcNYN + mP7wnPMXWcseafgS4NpKAMWque1nnHPn5+WbANrHAaiizjh78dyPlhs+ArjpRYC5+rbW5pbvT198 + CZanxfKK2tCg25n4KsYxP6S2nbPowsefSy3F+KcA8zadPX9O81VvnncY4Ng76D71nOYL29Pvi7Ng + ehv6W89pXdR86yUbzge24HuMX3Zu8zmt75e/mgusoBAg96r2+QsXBUywEvuzh/u3L2ht/8H9/EKA + xU0Axg+Aj4Wi5IMVj770+KyI4YchPgy47Pzi4hc53xhzweSjb/UOUSeETUJfFQhAgvkU4Ae2V73h + 6FtHVqoTpJIGSPwmbjFlwlrQw4UgYk49uABr1X6P9QqYKsrGCrtADmHyW+QFWKSFKL4CjwgQBkKE + UhBlMlGQfQzOwB5IvQiLVfGyx0+xWsEKYH+R2qC8Q3BYgQV4mrhHHs57CtGy8OOtYS/jbL0JsfAr + RXYxrP61eX5OxE2/fZm/RBT+/0694rNQdlL7d6D9b9R/MpGNBvWvzjMM982p0q4bnCauObXvIL8G + WCm7HRp+ykfQ/3RZmB53yrRjJ8+rqMF6nzl5muwt8PxUfSeK2Hu8HJn9hHGYDxUnzXMRmAbVuQku + +zV1nkxkMnD8Ej/xWxj9q8uuhT/8Ct/aQXEljP219f1vFPGFwXPG5cS+nijsX3DWz5WLPj87tj/l + 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 + KrFHQKlmZxW8qHpfRETYMZZdos8K9Tc0bmVNGZWf8PP4qiK6kZk7D1Hp68k6+cqujnrMi0+QTUvB + 02LWgEvJpMfQvQGNGyJ9Cp8e2OiVa3QkzxGYHxUIMdPMzhyDZ2iKtYRjadyCZoFjccXgVeuxLKL/ + AfpFWhMNCmVuZHN0cmVhbQ0KZW5kb2JqDQoyNTMgMCBvYmoNCjw8L1R5cGUvTWV0YWRhdGEvU3Vi + dHlwZS9YTUwvTGVuZ3RoIDMwODQ+Pg0Kc3RyZWFtDQo8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9 + Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/Pjx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6 + bWV0YS8iIHg6eG1wdGs9IjMuMS03MDEiPgo8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cu + dzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgo8cmRmOkRlc2NyaXB0aW9uIHJkZjph + Ym91dD0iIiAgeG1sbnM6cGRmPSJodHRwOi8vbnMuYWRvYmUuY29tL3BkZi8xLjMvIj4KPHBkZjpQ + cm9kdWNlcj5NaWNyb3NvZnTCriBXb3JkIGZvciBPZmZpY2UgMzY1PC9wZGY6UHJvZHVjZXI+PC9y + ZGY6RGVzY3JpcHRpb24+CjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiICB4bWxuczpkYz0i + aHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iPgo8ZGM6Y3JlYXRvcj48cmRmOlNlcT48 + cmRmOmxpPktyaXN0YSBQcmF0aWNvPC9yZGY6bGk+PC9yZGY6U2VxPjwvZGM6Y3JlYXRvcj48L3Jk + ZjpEZXNjcmlwdGlvbj4KPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgIHhtbG5zOnhtcD0i + aHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyI+Cjx4bXA6Q3JlYXRvclRvb2w+TWljcm9zb2Z0 + wq4gV29yZCBmb3IgT2ZmaWNlIDM2NTwveG1wOkNyZWF0b3JUb29sPjx4bXA6Q3JlYXRlRGF0ZT4y + MDIwLTA0LTIyVDE2OjQ1OjI5LTA3OjAwPC94bXA6Q3JlYXRlRGF0ZT48eG1wOk1vZGlmeURhdGU+ + MjAyMC0wNC0yMlQxNjo0NToyOS0wNzowMDwveG1wOk1vZGlmeURhdGU+PC9yZGY6RGVzY3JpcHRp + b24+CjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiICB4bWxuczp4bXBNTT0iaHR0cDovL25z + LmFkb2JlLmNvbS94YXAvMS4wL21tLyI+Cjx4bXBNTTpEb2N1bWVudElEPnV1aWQ6NThCQjA4MDUt + RjY5Ri00NDBGLTgzOUItMURFMDI1NjUxREUyPC94bXBNTTpEb2N1bWVudElEPjx4bXBNTTpJbnN0 + YW5jZUlEPnV1aWQ6NThCQjA4MDUtRjY5Ri00NDBGLTgzOUItMURFMDI1NjUxREUyPC94bXBNTTpJ + bnN0YW5jZUlEPjwvcmRmOkRlc2NyaXB0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKPC9y + ZGY6UkRGPjwveDp4bXBtZXRhPjw/eHBhY2tldCBlbmQ9InciPz4NCmVuZHN0cmVhbQ0KZW5kb2Jq + DQoyNTQgMCBvYmoNCjw8L0Rpc3BsYXlEb2NUaXRsZSB0cnVlPj4NCmVuZG9iag0KMjU1IDAgb2Jq + DQo8PC9UeXBlL1hSZWYvU2l6ZSAyNTUvV1sgMSA0IDJdIC9Sb290IDEgMCBSL0luZm8gMTUgMCBS + L0lEWzwwNTA4QkI1ODlGRjYwRjQ0ODM5QjFERTAyNTY1MURFMj48MDUwOEJCNTg5RkY2MEY0NDgz + OUIxREUwMjU2NTFERTI+XSAvRmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0aCA1MDc+Pg0Kc3RyZWFt + DQp4nDXV93fPZxQH8E9sSojZGkG0tQmKGrVHFKU2tUeomrXTauy9YlMdKFV7U3vvHUWJvX7rv5B+ + 83nx3HOe17nn3Ht/fQdB5KWnR0X+mCDIYAv+C4lKD8mTFBJdJiRvASRgcki+SiExcSH5dQU7hhRK + DCk9JggyRU4XCZ7jBV7iFZ7h3eTryF5c8vsuO6KQCZmRBVmRDTmQE7nwAXIjD6LRCoVRCPmQF/kR + g4IogASUwIcogqL4CMVRDB+jJGJRGqVQBnGoiE/xCcqhLCqgPKqjMiqhKqqgGuJRB5+hBmqhJj5H + bTRCPdTFF6iPhmiAlmiCxmiGpmiB5vgSrdEGbfEV2qE9vkYHdEQndEYXdEU3dEcPfIOe6IXe6IO+ + 6If+eIMBGIhBSMRgDMG3GIrvMAzDMQIjMQqj8T3GYCzGYTwmYCImIQk/4EdMxk9IxhRMxTRMxwzM + xCzMxhzMxTzMx1ssxQIsxCIsxhKkYBmWYwVWYhVWYw3uYj1+x89Yi1+wDr/hV6RiCzZiAzbhD/yJ + zdiFrfgL27ENO7EDB7EHu7EPe3EA+3Ech3EIR/A3juEozuEkTuA0TuEszuAqLuA8LuEiruAy7uA6 + ruEmbuA2buEf3MN9PMC/eIhHSMNjPMHTSFpUSQ3DJj4jvSJVPCQqNmRGWkhK/SD4H/tbjC8NCmVu + ZHN0cmVhbQ0KZW5kb2JqDQp4cmVmDQowIDI1Ng0KMDAwMDAwMDAxNiA2NTUzNSBmDQowMDAwMDAw + MDE3IDAwMDAwIG4NCjAwMDAwMDAxNjggMDAwMDAgbg0KMDAwMDAwMDIzOCAwMDAwMCBuDQowMDAw + MDAwNTExIDAwMDAwIG4NCjAwMDAwMDM0NTAgMDAwMDAgbg0KMDAwMDAwMzYxOSAwMDAwMCBuDQow + MDAwMDAzODU5IDAwMDAwIG4NCjAwMDAwMDM5MTIgMDAwMDAgbg0KMDAwMDAwMzk2NSAwMDAwMCBu + DQowMDAwMDA0MTQwIDAwMDAwIG4NCjAwMDAwMDQzODYgMDAwMDAgbg0KMDAwMDAwNDY1MiAwMDAw + MCBuDQowMDAwMDA1MjAzIDAwMDAwIG4NCjAwMDAwMDU0NzggMDAwMDAgbg0KMDAwMDAwODU2MyAw + MDAwMCBuDQowMDAwMDAwMDE3IDY1NTM1IGYNCjAwMDAwMDAwMTggNjU1MzUgZg0KMDAwMDAwMDAx + OSA2NTUzNSBmDQowMDAwMDAwMDIwIDY1NTM1IGYNCjAwMDAwMDAwMjEgNjU1MzUgZg0KMDAwMDAw + MDAyMiA2NTUzNSBmDQowMDAwMDAwMDIzIDY1NTM1IGYNCjAwMDAwMDAwMjQgNjU1MzUgZg0KMDAw + MDAwMDAyNSA2NTUzNSBmDQowMDAwMDAwMDI2IDY1NTM1IGYNCjAwMDAwMDAwMjcgNjU1MzUgZg0K + MDAwMDAwMDAyOCA2NTUzNSBmDQowMDAwMDAwMDI5IDY1NTM1IGYNCjAwMDAwMDAwMzAgNjU1MzUg + Zg0KMDAwMDAwMDAzMSA2NTUzNSBmDQowMDAwMDAwMDMyIDY1NTM1IGYNCjAwMDAwMDAwMzMgNjU1 + MzUgZg0KMDAwMDAwMDAzNCA2NTUzNSBmDQowMDAwMDAwMDM1IDY1NTM1IGYNCjAwMDAwMDAwMzYg + NjU1MzUgZg0KMDAwMDAwMDAzNyA2NTUzNSBmDQowMDAwMDAwMDM4IDY1NTM1IGYNCjAwMDAwMDAw + MzkgNjU1MzUgZg0KMDAwMDAwMDA0MCA2NTUzNSBmDQowMDAwMDAwMDQxIDY1NTM1IGYNCjAwMDAw + MDAwNDIgNjU1MzUgZg0KMDAwMDAwMDA0MyA2NTUzNSBmDQowMDAwMDAwMDQ0IDY1NTM1IGYNCjAw + MDAwMDAwNDUgNjU1MzUgZg0KMDAwMDAwMDA0NiA2NTUzNSBmDQowMDAwMDAwMDQ3IDY1NTM1IGYN + CjAwMDAwMDAwNDggNjU1MzUgZg0KMDAwMDAwMDA0OSA2NTUzNSBmDQowMDAwMDAwMDUwIDY1NTM1 + IGYNCjAwMDAwMDAwNTEgNjU1MzUgZg0KMDAwMDAwMDA1MiA2NTUzNSBmDQowMDAwMDAwMDUzIDY1 + NTM1IGYNCjAwMDAwMDAwNTQgNjU1MzUgZg0KMDAwMDAwMDA1NSA2NTUzNSBmDQowMDAwMDAwMDU2 + IDY1NTM1IGYNCjAwMDAwMDAwNTcgNjU1MzUgZg0KMDAwMDAwMDA1OCA2NTUzNSBmDQowMDAwMDAw + MDU5IDY1NTM1IGYNCjAwMDAwMDAwNjAgNjU1MzUgZg0KMDAwMDAwMDA2MSA2NTUzNSBmDQowMDAw + MDAwMDYyIDY1NTM1IGYNCjAwMDAwMDAwNjMgNjU1MzUgZg0KMDAwMDAwMDA2NCA2NTUzNSBmDQow + MDAwMDAwMDY1IDY1NTM1IGYNCjAwMDAwMDAwNjYgNjU1MzUgZg0KMDAwMDAwMDA2NyA2NTUzNSBm + DQowMDAwMDAwMDY4IDY1NTM1IGYNCjAwMDAwMDAwNjkgNjU1MzUgZg0KMDAwMDAwMDA3MCA2NTUz + NSBmDQowMDAwMDAwMDcxIDY1NTM1IGYNCjAwMDAwMDAwNzIgNjU1MzUgZg0KMDAwMDAwMDA3MyA2 + NTUzNSBmDQowMDAwMDAwMDc0IDY1NTM1IGYNCjAwMDAwMDAwNzUgNjU1MzUgZg0KMDAwMDAwMDA3 + NiA2NTUzNSBmDQowMDAwMDAwMDc3IDY1NTM1IGYNCjAwMDAwMDAwNzggNjU1MzUgZg0KMDAwMDAw + MDA3OSA2NTUzNSBmDQowMDAwMDAwMDgwIDY1NTM1IGYNCjAwMDAwMDAwODEgNjU1MzUgZg0KMDAw + MDAwMDA4MiA2NTUzNSBmDQowMDAwMDAwMDgzIDY1NTM1IGYNCjAwMDAwMDAwODQgNjU1MzUgZg0K + MDAwMDAwMDA4NSA2NTUzNSBmDQowMDAwMDAwMDg2IDY1NTM1IGYNCjAwMDAwMDAwODcgNjU1MzUg + Zg0KMDAwMDAwMDA4OCA2NTUzNSBmDQowMDAwMDAwMDg5IDY1NTM1IGYNCjAwMDAwMDAwOTAgNjU1 + MzUgZg0KMDAwMDAwMDA5MSA2NTUzNSBmDQowMDAwMDAwMDkyIDY1NTM1IGYNCjAwMDAwMDAwOTMg + NjU1MzUgZg0KMDAwMDAwMDA5NCA2NTUzNSBmDQowMDAwMDAwMDk1IDY1NTM1IGYNCjAwMDAwMDAw + OTYgNjU1MzUgZg0KMDAwMDAwMDA5NyA2NTUzNSBmDQowMDAwMDAwMDk4IDY1NTM1IGYNCjAwMDAw + MDAwOTkgNjU1MzUgZg0KMDAwMDAwMDEwMCA2NTUzNSBmDQowMDAwMDAwMTAxIDY1NTM1IGYNCjAw + MDAwMDAxMDIgNjU1MzUgZg0KMDAwMDAwMDEwMyA2NTUzNSBmDQowMDAwMDAwMTA0IDY1NTM1IGYN + CjAwMDAwMDAxMDUgNjU1MzUgZg0KMDAwMDAwMDEwNiA2NTUzNSBmDQowMDAwMDAwMTA3IDY1NTM1 + IGYNCjAwMDAwMDAxMDggNjU1MzUgZg0KMDAwMDAwMDEwOSA2NTUzNSBmDQowMDAwMDAwMTEwIDY1 + NTM1IGYNCjAwMDAwMDAxMTEgNjU1MzUgZg0KMDAwMDAwMDExMiA2NTUzNSBmDQowMDAwMDAwMTEz + IDY1NTM1IGYNCjAwMDAwMDAxMTQgNjU1MzUgZg0KMDAwMDAwMDExNSA2NTUzNSBmDQowMDAwMDAw + MTE2IDY1NTM1IGYNCjAwMDAwMDAxMTcgNjU1MzUgZg0KMDAwMDAwMDExOCA2NTUzNSBmDQowMDAw + MDAwMTE5IDY1NTM1IGYNCjAwMDAwMDAxMjAgNjU1MzUgZg0KMDAwMDAwMDEyMSA2NTUzNSBmDQow + MDAwMDAwMTIyIDY1NTM1IGYNCjAwMDAwMDAxMjMgNjU1MzUgZg0KMDAwMDAwMDEyNCA2NTUzNSBm + DQowMDAwMDAwMTI1IDY1NTM1IGYNCjAwMDAwMDAxMjYgNjU1MzUgZg0KMDAwMDAwMDEyNyA2NTUz + NSBmDQowMDAwMDAwMTI4IDY1NTM1IGYNCjAwMDAwMDAxMjkgNjU1MzUgZg0KMDAwMDAwMDEzMCA2 + NTUzNSBmDQowMDAwMDAwMTMxIDY1NTM1IGYNCjAwMDAwMDAxMzIgNjU1MzUgZg0KMDAwMDAwMDEz + MyA2NTUzNSBmDQowMDAwMDAwMTM0IDY1NTM1IGYNCjAwMDAwMDAxMzUgNjU1MzUgZg0KMDAwMDAw + MDEzNiA2NTUzNSBmDQowMDAwMDAwMTM3IDY1NTM1IGYNCjAwMDAwMDAxMzggNjU1MzUgZg0KMDAw + MDAwMDEzOSA2NTUzNSBmDQowMDAwMDAwMTQwIDY1NTM1IGYNCjAwMDAwMDAxNDEgNjU1MzUgZg0K + MDAwMDAwMDE0MiA2NTUzNSBmDQowMDAwMDAwMTQzIDY1NTM1IGYNCjAwMDAwMDAxNDQgNjU1MzUg + Zg0KMDAwMDAwMDE0NSA2NTUzNSBmDQowMDAwMDAwMTQ2IDY1NTM1IGYNCjAwMDAwMDAxNDcgNjU1 + MzUgZg0KMDAwMDAwMDE0OCA2NTUzNSBmDQowMDAwMDAwMTQ5IDY1NTM1IGYNCjAwMDAwMDAxNTAg + NjU1MzUgZg0KMDAwMDAwMDE1MSA2NTUzNSBmDQowMDAwMDAwMTUyIDY1NTM1IGYNCjAwMDAwMDAx + NTMgNjU1MzUgZg0KMDAwMDAwMDE1NCA2NTUzNSBmDQowMDAwMDAwMTU1IDY1NTM1IGYNCjAwMDAw + MDAxNTYgNjU1MzUgZg0KMDAwMDAwMDE1NyA2NTUzNSBmDQowMDAwMDAwMTU4IDY1NTM1IGYNCjAw + MDAwMDAxNTkgNjU1MzUgZg0KMDAwMDAwMDE2MCA2NTUzNSBmDQowMDAwMDAwMTYxIDY1NTM1IGYN + CjAwMDAwMDAxNjIgNjU1MzUgZg0KMDAwMDAwMDE2MyA2NTUzNSBmDQowMDAwMDAwMTY0IDY1NTM1 + IGYNCjAwMDAwMDAxNjUgNjU1MzUgZg0KMDAwMDAwMDE2NiA2NTUzNSBmDQowMDAwMDAwMTY3IDY1 + NTM1IGYNCjAwMDAwMDAxNjggNjU1MzUgZg0KMDAwMDAwMDE2OSA2NTUzNSBmDQowMDAwMDAwMTcw + IDY1NTM1IGYNCjAwMDAwMDAxNzEgNjU1MzUgZg0KMDAwMDAwMDE3MiA2NTUzNSBmDQowMDAwMDAw + MTczIDY1NTM1IGYNCjAwMDAwMDAxNzQgNjU1MzUgZg0KMDAwMDAwMDE3NSA2NTUzNSBmDQowMDAw + MDAwMTc2IDY1NTM1IGYNCjAwMDAwMDAxNzcgNjU1MzUgZg0KMDAwMDAwMDE3OCA2NTUzNSBmDQow + MDAwMDAwMTc5IDY1NTM1IGYNCjAwMDAwMDAxODAgNjU1MzUgZg0KMDAwMDAwMDE4MSA2NTUzNSBm + DQowMDAwMDAwMTgyIDY1NTM1IGYNCjAwMDAwMDAxODMgNjU1MzUgZg0KMDAwMDAwMDE4NCA2NTUz + NSBmDQowMDAwMDAwMTg1IDY1NTM1IGYNCjAwMDAwMDAxODYgNjU1MzUgZg0KMDAwMDAwMDE4NyA2 + NTUzNSBmDQowMDAwMDAwMTg4IDY1NTM1IGYNCjAwMDAwMDAxODkgNjU1MzUgZg0KMDAwMDAwMDE5 + MCA2NTUzNSBmDQowMDAwMDAwMTkxIDY1NTM1IGYNCjAwMDAwMDAxOTIgNjU1MzUgZg0KMDAwMDAw + MDE5MyA2NTUzNSBmDQowMDAwMDAwMTk0IDY1NTM1IGYNCjAwMDAwMDAxOTUgNjU1MzUgZg0KMDAw + MDAwMDE5NiA2NTUzNSBmDQowMDAwMDAwMTk3IDY1NTM1IGYNCjAwMDAwMDAxOTggNjU1MzUgZg0K + MDAwMDAwMDE5OSA2NTUzNSBmDQowMDAwMDAwMjAwIDY1NTM1IGYNCjAwMDAwMDAyMDEgNjU1MzUg + Zg0KMDAwMDAwMDIwMiA2NTUzNSBmDQowMDAwMDAwMjAzIDY1NTM1IGYNCjAwMDAwMDAyMDQgNjU1 + MzUgZg0KMDAwMDAwMDIwNSA2NTUzNSBmDQowMDAwMDAwMjA2IDY1NTM1IGYNCjAwMDAwMDAyMDcg + NjU1MzUgZg0KMDAwMDAwMDIwOCA2NTUzNSBmDQowMDAwMDAwMjA5IDY1NTM1IGYNCjAwMDAwMDAy + MTAgNjU1MzUgZg0KMDAwMDAwMDIxMSA2NTUzNSBmDQowMDAwMDAwMjEyIDY1NTM1IGYNCjAwMDAw + MDAyMTMgNjU1MzUgZg0KMDAwMDAwMDIxNCA2NTUzNSBmDQowMDAwMDAwMjE1IDY1NTM1IGYNCjAw + MDAwMDAyMTYgNjU1MzUgZg0KMDAwMDAwMDIxNyA2NTUzNSBmDQowMDAwMDAwMjE4IDY1NTM1IGYN + CjAwMDAwMDAyMTkgNjU1MzUgZg0KMDAwMDAwMDIyMCA2NTUzNSBmDQowMDAwMDAwMjIxIDY1NTM1 + IGYNCjAwMDAwMDAyMjIgNjU1MzUgZg0KMDAwMDAwMDIyMyA2NTUzNSBmDQowMDAwMDAwMjI0IDY1 + NTM1IGYNCjAwMDAwMDAyMjUgNjU1MzUgZg0KMDAwMDAwMDIyNiA2NTUzNSBmDQowMDAwMDAwMjI3 + IDY1NTM1IGYNCjAwMDAwMDAyMjggNjU1MzUgZg0KMDAwMDAwMDIyOSA2NTUzNSBmDQowMDAwMDAw + MjMwIDY1NTM1IGYNCjAwMDAwMDAyMzEgNjU1MzUgZg0KMDAwMDAwMDIzMiA2NTUzNSBmDQowMDAw + MDAwMjMzIDY1NTM1IGYNCjAwMDAwMDAyMzQgNjU1MzUgZg0KMDAwMDAwMDIzNSA2NTUzNSBmDQow + MDAwMDAwMjM2IDY1NTM1IGYNCjAwMDAwMDAyMzcgNjU1MzUgZg0KMDAwMDAwMDIzOCA2NTUzNSBm + DQowMDAwMDAwMjM5IDY1NTM1IGYNCjAwMDAwMDAyNDAgNjU1MzUgZg0KMDAwMDAwMDI0MSA2NTUz + NSBmDQowMDAwMDAwMjQyIDY1NTM1IGYNCjAwMDAwMDAyNDMgNjU1MzUgZg0KMDAwMDAwMDI0NCA2 + NTUzNSBmDQowMDAwMDAwMjQ1IDY1NTM1IGYNCjAwMDAwMDAyNDYgNjU1MzUgZg0KMDAwMDAwMDI0 + NyA2NTUzNSBmDQowMDAwMDAwMjQ4IDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAx + MTk4NyAwMDAwMCBuDQowMDAwMDEyMjg5IDAwMDAwIG4NCjAwMDAwNjU1NjQgMDAwMDAgbg0KMDAw + MDA2NTgyMiAwMDAwMCBuDQowMDAwMDk5NTQ4IDAwMDAwIG4NCjAwMDAxMDI3MTYgMDAwMDAgbg0K + MDAwMDEwMjc2MiAwMDAwMCBuDQp0cmFpbGVyDQo8PC9TaXplIDI1Ni9Sb290IDEgMCBSL0luZm8g + MTUgMCBSL0lEWzwwNTA4QkI1ODlGRjYwRjQ0ODM5QjFERTAyNTY1MURFMj48MDUwOEJCNTg5RkY2 + MEY0NDgzOUIxREUwMjU2NTFERTI+XSA+Pg0Kc3RhcnR4cmVmDQoxMDM0NzINCiUlRU9GDQp4cmVm + DQowIDANCnRyYWlsZXINCjw8L1NpemUgMjU2L1Jvb3QgMSAwIFIvSW5mbyAxNSAwIFIvSURbPDA1 + MDhCQjU4OUZGNjBGNDQ4MzlCMURFMDI1NjUxREUyPjwwNTA4QkI1ODlGRjYwRjQ0ODM5QjFERTAy + NTY1MURFMj5dIC9QcmV2IDEwMzQ3Mi9YUmVmU3RtIDEwMjc2Mj4+DQpzdGFydHhyZWYNCjEwODc1 + Mg0KJSVFT0Y= + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '108935' + Content-Type: + - application/pdf + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/layout/analyze + response: + body: + string: '' + headers: + apim-request-id: + - e36fc7d7-d7a9-4a91-aef8-989d6d4bbce9 + content-length: + - '0' + date: + - Mon, 27 Apr 2020 22:36:27 GMT + operation-location: + - https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/layout/analyzeResults/e36fc7d7-d7a9-4a91-aef8-989d6d4bbce9 + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '164' + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/layout/analyzeResults/e36fc7d7-d7a9-4a91-aef8-989d6d4bbce9 + response: + body: + string: '{"status":"running","createdDateTime":"2020-04-27T22:36:28Z","lastUpdatedDateTime":"2020-04-27T22:36:33Z"}' + headers: + apim-request-id: + - ac03addf-8967-4f55-9483-105eb5c1d190 + content-type: + - application/json; charset=utf-8 + date: + - Mon, 27 Apr 2020 22:36:32 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + transfer-encoding: + - chunked + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '104' + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/layout/analyzeResults/e36fc7d7-d7a9-4a91-aef8-989d6d4bbce9 + response: + body: + string: '{"status":"succeeded","createdDateTime":"2020-04-27T22:36:28Z","lastUpdatedDateTime":"2020-04-27T22:36:37Z","analyzeResult":{"version":"2.0.0","readResults":[{"page":1,"language":"en","angle":0,"width":8.5,"height":11,"unit":"inch","lines":[{"language":"en","boundingBox":[0.8861,1.1217,2.3783,1.1217,2.3783,1.2812,0.8861,1.2812],"text":"Company + A Invoice","words":[{"boundingBox":[0.8861,1.1232,1.6203,1.1232,1.6203,1.2812,0.8861,1.2812],"text":"Company","confidence":1},{"boundingBox":[1.6696,1.1242,1.7749,1.1242,1.7749,1.2473,1.6696,1.2473],"text":"A","confidence":1},{"boundingBox":[1.8389,1.1217,2.3783,1.1217,2.3783,1.2485,1.8389,1.2485],"text":"Invoice","confidence":1}]},{"language":"en","boundingBox":[6.0211,1.0656,7.0357,1.0656,7.0357,1.2121,6.0211,1.2121],"text":"Invoice + For:","words":[{"boundingBox":[6.0211,1.0656,6.6362,1.0656,6.6362,1.2121,6.0211,1.2121],"text":"Invoice","confidence":1},{"boundingBox":[6.7147,1.0691,7.0357,1.0691,7.0357,1.2121,6.7147,1.2121],"text":"For:","confidence":1}]},{"language":"en","boundingBox":[0.8791,1.4825,1.5657,1.4825,1.5657,1.6155,0.8791,1.6155],"text":"Address:","words":[{"boundingBox":[0.8791,1.4825,1.5657,1.4825,1.5657,1.6155,0.8791,1.6155],"text":"Address:","confidence":1}]},{"language":"en","boundingBox":[6.0164,1.4503,6.8967,1.4503,6.8967,1.5931,6.0164,1.5931],"text":"Bilbo + Baggins","words":[{"boundingBox":[6.0164,1.4503,6.3392,1.4503,6.3392,1.5649,6.0164,1.5649],"text":"Bilbo","confidence":1},{"boundingBox":[6.3960,1.4556,6.8967,1.4556,6.8967,1.5931,6.3960,1.5931],"text":"Baggins","confidence":1}]},{"language":"en","boundingBox":[6.0165,1.6707,7.1006,1.6707,7.1006,1.7854,6.0165,1.7854],"text":"123 + Hobbit Lane","words":[{"boundingBox":[6.0165,1.6772,6.2434,1.6772,6.2434,1.7854,6.0165,1.7854],"text":"123","confidence":1},{"boundingBox":[6.3033,1.6707,6.7463,1.6707,6.7463,1.7854,6.3033,1.7854],"text":"Hobbit","confidence":1},{"boundingBox":[6.8030,1.6782,7.1006,1.6782,7.1006,1.7854,6.8030,1.7854],"text":"Lane","confidence":1}]},{"language":"en","boundingBox":[0.8852,1.8460,1.713,1.8460,1.713,1.9554,0.8852,1.9554],"text":"567 + Main St.","words":[{"boundingBox":[0.8852,1.8472,1.1203,1.8472,1.1203,1.9554,0.8852,1.9554],"text":"567","confidence":1},{"boundingBox":[1.1777,1.8460,1.5022,1.8460,1.5022,1.9554,1.1777,1.9554],"text":"Main","confidence":1},{"boundingBox":[1.5558,1.8472,1.713,1.8472,1.713,1.9554,1.5558,1.9554],"text":"St.","confidence":1}]},{"language":"en","boundingBox":[6.0164,1.8910,6.9793,1.8910,6.9793,2.0275,6.0164,2.0275],"text":"Redmond, + WA","words":[{"boundingBox":[6.0164,1.8910,6.6861,1.8910,6.6861,2.0275,6.0164,2.0275],"text":"Redmond,","confidence":1},{"boundingBox":[6.7408,1.8982,6.9793,1.8982,6.9793,2.0044,6.7408,2.0044],"text":"WA","confidence":1}]},{"language":"en","boundingBox":[0.891,2.0610,1.8537,2.0610,1.8537,2.1975,0.891,2.1975],"text":"Redmond, + WA","words":[{"boundingBox":[0.891,2.0610,1.5605,2.0610,1.5605,2.1975,0.891,2.1975],"text":"Redmond,","confidence":1},{"boundingBox":[1.6152,2.0682,1.8537,2.0682,1.8537,2.1744,1.6152,2.1744],"text":"WA","confidence":1}]},{"language":"en","boundingBox":[6.0105,2.1187,6.9371,2.1187,6.9371,2.2254,6.0105,2.2254],"text":"555-555-5555","words":[{"boundingBox":[6.0105,2.1187,6.9371,2.1187,6.9371,2.2254,6.0105,2.2254],"text":"555-555-5555","confidence":1}]},{"language":"en","boundingBox":[0.8852,2.2887,1.8119,2.2887,1.8119,2.3954,0.8852,2.3954],"text":"555-555-5555","words":[{"boundingBox":[0.8852,2.2887,1.8119,2.2887,1.8119,2.3954,0.8852,2.3954],"text":"555-555-5555","confidence":1}]},{"language":"en","boundingBox":[1.0943,3.0018,1.3842,3.0018,1.3842,3.1090,1.0943,3.1090],"text":"Item","words":[{"boundingBox":[1.0943,3.0018,1.3842,3.0018,1.3842,3.1090,1.0943,3.1090],"text":"Item","confidence":1}]},{"language":"en","boundingBox":[3.2527,2.9996,3.8367,2.9996,3.8367,3.1371,3.2527,3.1371],"text":"Quantity","words":[{"boundingBox":[3.2527,2.9996,3.8367,2.9996,3.8367,3.1371,3.2527,3.1371],"text":"Quantity","confidence":1}]},{"language":"en","boundingBox":[5.4230,2.9996,5.7372,2.9996,5.7372,3.1090,5.4230,3.1090],"text":"Price","words":[{"boundingBox":[5.4230,2.9996,5.7372,2.9996,5.7372,3.1090,5.4230,3.1090],"text":"Price","confidence":1}]},{"language":"en","boundingBox":[1.0832,3.2118,1.174,3.2118,1.174,3.3180,1.0832,3.3180],"text":"A","words":[{"boundingBox":[1.0832,3.2118,1.174,3.2118,1.174,3.3180,1.0832,3.3180],"text":"A","confidence":1}]},{"language":"en","boundingBox":[3.2589,3.2116,3.3202,3.2116,3.3202,3.3176,3.2589,3.3176],"text":"1","words":[{"boundingBox":[3.2589,3.2116,3.3202,3.2116,3.3202,3.3176,3.2589,3.3176],"text":"1","confidence":1}]},{"language":"en","boundingBox":[5.4232,3.2108,5.7784,3.2108,5.7784,3.3190,5.4232,3.3190],"text":"10.99","words":[{"boundingBox":[5.4232,3.2108,5.7784,3.2108,5.7784,3.3190,5.4232,3.3190],"text":"10.99","confidence":1}]},{"language":"en","boundingBox":[1.0943,3.4256,1.1637,3.4256,1.1637,3.5310,1.0943,3.5310],"text":"B","words":[{"boundingBox":[1.0943,3.4256,1.1637,3.4256,1.1637,3.5310,1.0943,3.5310],"text":"B","confidence":1}]},{"language":"en","boundingBox":[3.2541,3.4241,3.3199,3.4241,3.3199,3.5310,3.2541,3.5310],"text":"2","words":[{"boundingBox":[3.2541,3.4241,3.3199,3.4241,3.3199,3.5310,3.2541,3.5310],"text":"2","confidence":1}]},{"language":"en","boundingBox":[5.4232,3.4241,5.7789,3.4241,5.7789,3.5323,5.4232,3.5323],"text":"14.67","words":[{"boundingBox":[5.4232,3.4241,5.7789,3.4241,5.7789,3.5323,5.4232,3.5323],"text":"14.67","confidence":1}]},{"language":"en","boundingBox":[1.0882,3.6343,1.1647,3.6343,1.1647,3.7421,1.0882,3.7421],"text":"C","words":[{"boundingBox":[1.0882,3.6343,1.1647,3.6343,1.1647,3.7421,1.0882,3.7421],"text":"C","confidence":1}]},{"language":"en","boundingBox":[3.2486,3.6351,3.3244,3.6351,3.3244,3.7413,3.2486,3.7413],"text":"4","words":[{"boundingBox":[3.2486,3.6351,3.3244,3.6351,3.3244,3.7413,3.2486,3.7413],"text":"4","confidence":1}]},{"language":"en","boundingBox":[5.4232,3.6341,5.7800,3.6341,5.7800,3.7423,5.4232,3.7423],"text":"15.66","words":[{"boundingBox":[5.4232,3.6341,5.7800,3.6341,5.7800,3.7423,5.4232,3.7423],"text":"15.66","confidence":1}]},{"language":"en","boundingBox":[1.0943,3.8456,1.1753,3.8456,1.1753,3.9510,1.0943,3.9510],"text":"D","words":[{"boundingBox":[1.0943,3.8456,1.1753,3.8456,1.1753,3.9510,1.0943,3.9510],"text":"D","confidence":1}]},{"language":"en","boundingBox":[3.2589,3.8450,3.3202,3.8450,3.3202,3.9510,3.2589,3.9510],"text":"1","words":[{"boundingBox":[3.2589,3.8450,3.3202,3.8450,3.3202,3.9510,3.2589,3.9510],"text":"1","confidence":1}]},{"language":"en","boundingBox":[5.4232,3.8441,5.7809,3.8441,5.7809,3.9523,5.4232,3.9523],"text":"12.00","words":[{"boundingBox":[5.4232,3.8441,5.7809,3.8441,5.7809,3.9523,5.4232,3.9523],"text":"12.00","confidence":1}]},{"language":"en","boundingBox":[1.0943,4.0561,1.153,4.0561,1.153,4.1614,1.0943,4.1614],"text":"E","words":[{"boundingBox":[1.0943,4.0561,1.153,4.0561,1.153,4.1614,1.0943,4.1614],"text":"E","confidence":1}]},{"language":"en","boundingBox":[3.2486,4.0556,3.3244,4.0556,3.3244,4.1617,3.2486,4.1617],"text":"4","words":[{"boundingBox":[3.2486,4.0556,3.3244,4.0556,3.3244,4.1617,3.2486,4.1617],"text":"4","confidence":1}]},{"language":"en","boundingBox":[5.4232,4.0546,5.7810,4.0546,5.7810,4.1627,5.4232,4.1627],"text":"10.00","words":[{"boundingBox":[5.4232,4.0546,5.7810,4.0546,5.7810,4.1627,5.4232,4.1627],"text":"10.00","confidence":1}]},{"language":"en","boundingBox":[1.0943,4.2661,1.1497,4.2661,1.1497,4.3717,1.0943,4.3717],"text":"F","words":[{"boundingBox":[1.0943,4.2661,1.1497,4.2661,1.1497,4.3717,1.0943,4.3717],"text":"F","confidence":1}]},{"language":"en","boundingBox":[3.2534,4.2646,3.3226,4.2646,3.3226,4.3727,3.2534,4.3727],"text":"6","words":[{"boundingBox":[3.2534,4.2646,3.3226,4.2646,3.3226,4.3727,3.2534,4.3727],"text":"6","confidence":1}]},{"language":"en","boundingBox":[5.4232,4.2646,5.7809,4.2646,5.7809,4.3727,5.4232,4.3727],"text":"12.00","words":[{"boundingBox":[5.4232,4.2646,5.7809,4.2646,5.7809,4.3727,5.4232,4.3727],"text":"12.00","confidence":1}]},{"language":"en","boundingBox":[1.0877,4.4746,1.1735,4.4746,1.1735,4.5827,1.0877,4.5827],"text":"G","words":[{"boundingBox":[1.0877,4.4746,1.1735,4.4746,1.1735,4.5827,1.0877,4.5827],"text":"G","confidence":1}]},{"language":"en","boundingBox":[3.2514,4.4746,3.3224,4.4746,3.3224,4.5827,3.2514,4.5827],"text":"8","words":[{"boundingBox":[3.2514,4.4746,3.3224,4.4746,3.3224,4.5827,3.2514,4.5827],"text":"8","confidence":1}]},{"language":"en","boundingBox":[5.4184,4.4746,5.7810,4.4746,5.7810,4.5827,5.4184,4.5827],"text":"22.00","words":[{"boundingBox":[5.4184,4.4746,5.7810,4.4746,5.7810,4.5827,5.4184,4.5827],"text":"22.00","confidence":1}]},{"language":"en","boundingBox":[5.5075,4.8981,6.6320,4.8981,6.6320,5.0131,5.5075,5.0131],"text":"Subtotal: + 300.00","words":[{"boundingBox":[5.5075,4.8981,6.1249,4.8981,6.1249,5.0131,5.5075,5.0131],"text":"Subtotal:","confidence":1},{"boundingBox":[6.1794,4.9042,6.6320,4.9042,6.6320,5.0131,6.1794,5.0131],"text":"300.00","confidence":1}]},{"language":"en","boundingBox":[5.5034,5.1245,6.2022,5.1245,6.2022,5.2333,5.5034,5.2333],"text":"Tax: + 30.00","words":[{"boundingBox":[5.5034,5.1263,5.7812,5.1263,5.7812,5.2333,5.5034,5.2333],"text":"Tax:","confidence":1},{"boundingBox":[5.8360,5.1245,6.2022,5.1245,6.2022,5.2333,5.8360,5.2333],"text":"30.00","confidence":1}]},{"language":"en","boundingBox":[5.5034,5.3412,6.2587,5.3412,6.2587,5.481,5.5034,5.481],"text":"Tip: + 100.00","words":[{"boundingBox":[5.5034,5.3412,5.7515,5.3412,5.7515,5.481,5.5034,5.481],"text":"Tip:","confidence":1},{"boundingBox":[5.8110,5.3445,6.2587,5.3445,6.2587,5.4533,5.8110,5.4533],"text":"100.00","confidence":1}]},{"language":"en","boundingBox":[5.5034,5.5583,6.3987,5.5583,6.3987,5.6733,5.5034,5.6733],"text":"Total: + 430.00","words":[{"boundingBox":[5.5034,5.5583,5.8915,5.5583,5.8915,5.6733,5.5034,5.6733],"text":"Total:","confidence":1},{"boundingBox":[5.9420,5.5645,6.3987,5.5645,6.3987,5.6733,5.9420,5.6733],"text":"430.00","confidence":1}]},{"language":"en","boundingBox":[1.0055,6.6553,3.8342,6.6553,3.8342,6.7981,1.0055,6.7981],"text":"Signature: + ____ Bilbo Baggins__________","words":[{"boundingBox":[1.0055,6.6581,1.6987,6.6581,1.6987,6.7981,1.0055,6.7981],"text":"Signature:","confidence":1},{"boundingBox":[1.7470,6.7829,2.0809,6.7829,2.0809,6.7981,1.7470,6.7981],"text":"____","confidence":1},{"boundingBox":[2.0925,6.6553,2.4278,6.6553,2.4278,6.7703,2.0925,6.7703],"text":"Bilbo","confidence":1},{"boundingBox":[2.4823,6.6581,3.8342,6.6581,3.8342,6.7981,2.4823,6.7981],"text":"Baggins__________","confidence":1}]}]},{"page":2,"language":"en","angle":0,"width":8.4967,"height":10.9967,"unit":"inch","lines":[]},{"page":3,"language":"en","angle":0,"width":8.5,"height":11,"unit":"inch","lines":[{"language":"en","boundingBox":[0.8861,1.1217,2.3734,1.1217,2.3734,1.2812,0.8861,1.2812],"text":"Company + B Invoice","words":[{"boundingBox":[0.8861,1.1232,1.6203,1.1232,1.6203,1.2812,0.8861,1.2812],"text":"Company","confidence":1},{"boundingBox":[1.6836,1.1248,1.7640,1.1248,1.7640,1.2469,1.6836,1.2469],"text":"B","confidence":1},{"boundingBox":[1.8336,1.1217,2.3734,1.1217,2.3734,1.2485,1.8336,1.2485],"text":"Invoice","confidence":1}]},{"language":"en","boundingBox":[6.0211,1.0656,7.0357,1.0656,7.0357,1.2121,6.0211,1.2121],"text":"Invoice + For:","words":[{"boundingBox":[6.0211,1.0656,6.6362,1.0656,6.6362,1.2121,6.0211,1.2121],"text":"Invoice","confidence":1},{"boundingBox":[6.7147,1.0691,7.0357,1.0691,7.0357,1.2121,6.7147,1.2121],"text":"For:","confidence":1}]},{"language":"en","boundingBox":[0.8791,1.4825,1.5657,1.4825,1.5657,1.6155,0.8791,1.6155],"text":"Address:","words":[{"boundingBox":[0.8791,1.4825,1.5657,1.4825,1.5657,1.6155,0.8791,1.6155],"text":"Address:","confidence":1}]},{"language":"en","boundingBox":[6.0164,1.4506,6.9506,1.4506,6.9506,1.5931,6.0164,1.5931],"text":"Frodo + Baggins","words":[{"boundingBox":[6.0164,1.4506,6.3895,1.4506,6.3895,1.5649,6.0164,1.5649],"text":"Frodo","confidence":1},{"boundingBox":[6.4500,1.4556,6.9506,1.4556,6.9506,1.5931,6.4500,1.5931],"text":"Baggins","confidence":1}]},{"language":"en","boundingBox":[6.0165,1.6707,7.1006,1.6707,7.1006,1.7854,6.0165,1.7854],"text":"123 + Hobbit Lane","words":[{"boundingBox":[6.0165,1.6772,6.2434,1.6772,6.2434,1.7854,6.0165,1.7854],"text":"123","confidence":1},{"boundingBox":[6.3033,1.6707,6.7463,1.6707,6.7463,1.7854,6.3033,1.7854],"text":"Hobbit","confidence":1},{"boundingBox":[6.8030,1.6782,7.1006,1.6782,7.1006,1.7854,6.8030,1.7854],"text":"Lane","confidence":1}]},{"language":"en","boundingBox":[0.8852,1.8460,1.713,1.8460,1.713,1.9554,0.8852,1.9554],"text":"567 + Main St.","words":[{"boundingBox":[0.8852,1.8472,1.1203,1.8472,1.1203,1.9554,0.8852,1.9554],"text":"567","confidence":1},{"boundingBox":[1.1777,1.8460,1.5022,1.8460,1.5022,1.9554,1.1777,1.9554],"text":"Main","confidence":1},{"boundingBox":[1.5558,1.8472,1.713,1.8472,1.713,1.9554,1.5558,1.9554],"text":"St.","confidence":1}]},{"language":"en","boundingBox":[6.0164,1.8910,6.9793,1.8910,6.9793,2.0275,6.0164,2.0275],"text":"Redmond, + WA","words":[{"boundingBox":[6.0164,1.8910,6.6861,1.8910,6.6861,2.0275,6.0164,2.0275],"text":"Redmond,","confidence":1},{"boundingBox":[6.7408,1.8982,6.9793,1.8982,6.9793,2.0044,6.7408,2.0044],"text":"WA","confidence":1}]},{"language":"en","boundingBox":[0.891,2.0610,1.8537,2.0610,1.8537,2.1975,0.891,2.1975],"text":"Redmond, + WA","words":[{"boundingBox":[0.891,2.0610,1.5605,2.0610,1.5605,2.1975,0.891,2.1975],"text":"Redmond,","confidence":1},{"boundingBox":[1.6152,2.0682,1.8537,2.0682,1.8537,2.1744,1.6152,2.1744],"text":"WA","confidence":1}]},{"language":"en","boundingBox":[6.0105,2.1187,6.9371,2.1187,6.9371,2.2254,6.0105,2.2254],"text":"555-555-5555","words":[{"boundingBox":[6.0105,2.1187,6.9371,2.1187,6.9371,2.2254,6.0105,2.2254],"text":"555-555-5555","confidence":1}]},{"language":"en","boundingBox":[0.8852,2.2887,1.8119,2.2887,1.8119,2.3954,0.8852,2.3954],"text":"555-555-5555","words":[{"boundingBox":[0.8852,2.2887,1.8119,2.2887,1.8119,2.3954,0.8852,2.3954],"text":"555-555-5555","confidence":1}]},{"language":"en","boundingBox":[1.0943,3.0018,1.3842,3.0018,1.3842,3.1090,1.0943,3.1090],"text":"Item","words":[{"boundingBox":[1.0943,3.0018,1.3842,3.0018,1.3842,3.1090,1.0943,3.1090],"text":"Item","confidence":1}]},{"language":"en","boundingBox":[3.2527,2.9996,3.8367,2.9996,3.8367,3.1371,3.2527,3.1371],"text":"Quantity","words":[{"boundingBox":[3.2527,2.9996,3.8367,2.9996,3.8367,3.1371,3.2527,3.1371],"text":"Quantity","confidence":1}]},{"language":"en","boundingBox":[5.4230,2.9996,5.7372,2.9996,5.7372,3.1090,5.4230,3.1090],"text":"Price","words":[{"boundingBox":[5.4230,2.9996,5.7372,2.9996,5.7372,3.1090,5.4230,3.1090],"text":"Price","confidence":1}]},{"language":"en","boundingBox":[1.0832,3.2118,1.174,3.2118,1.174,3.3180,1.0832,3.3180],"text":"A","words":[{"boundingBox":[1.0832,3.2118,1.174,3.2118,1.174,3.3180,1.0832,3.3180],"text":"A","confidence":1}]},{"language":"en","boundingBox":[3.2589,3.2108,3.4067,3.2108,3.4067,3.3190,3.2589,3.3190],"text":"10","words":[{"boundingBox":[3.2589,3.2108,3.4067,3.2108,3.4067,3.3190,3.2589,3.3190],"text":"10","confidence":1}]},{"language":"en","boundingBox":[5.4232,3.2108,5.8617,3.2108,5.8617,3.3190,5.4232,3.3190],"text":"100.99","words":[{"boundingBox":[5.4232,3.2108,5.8617,3.2108,5.8617,3.3190,5.4232,3.3190],"text":"100.99","confidence":1}]},{"language":"en","boundingBox":[1.0943,3.4256,1.1637,3.4256,1.1637,3.5310,1.0943,3.5310],"text":"B","words":[{"boundingBox":[1.0943,3.4256,1.1637,3.4256,1.1637,3.5310,1.0943,3.5310],"text":"B","confidence":1}]},{"language":"en","boundingBox":[3.2541,3.4241,3.4067,3.4241,3.4067,3.5323,3.2541,3.5323],"text":"20","words":[{"boundingBox":[3.2541,3.4241,3.4067,3.4241,3.4067,3.5323,3.2541,3.5323],"text":"20","confidence":1}]},{"language":"en","boundingBox":[5.4232,3.4241,5.8622,3.4241,5.8622,3.5323,5.4232,3.5323],"text":"140.67","words":[{"boundingBox":[5.4232,3.4241,5.8622,3.4241,5.8622,3.5323,5.4232,3.5323],"text":"140.67","confidence":1}]},{"language":"en","boundingBox":[1.0882,3.6343,1.1647,3.6343,1.1647,3.7421,1.0882,3.7421],"text":"C","words":[{"boundingBox":[1.0882,3.6343,1.1647,3.6343,1.1647,3.7421,1.0882,3.7421],"text":"C","confidence":1}]},{"language":"en","boundingBox":[3.2486,3.6341,3.4067,3.6341,3.4067,3.7423,3.2486,3.7423],"text":"40","words":[{"boundingBox":[3.2486,3.6341,3.4067,3.6341,3.4067,3.7423,3.2486,3.7423],"text":"40","confidence":1}]},{"language":"en","boundingBox":[5.4232,3.6341,5.8634,3.6341,5.8634,3.7423,5.4232,3.7423],"text":"150.66","words":[{"boundingBox":[5.4232,3.6341,5.8634,3.6341,5.8634,3.7423,5.4232,3.7423],"text":"150.66","confidence":1}]},{"language":"en","boundingBox":[1.0943,3.8456,1.1753,3.8456,1.1753,3.9510,1.0943,3.9510],"text":"D","words":[{"boundingBox":[1.0943,3.8456,1.1753,3.8456,1.1753,3.9510,1.0943,3.9510],"text":"D","confidence":1}]},{"language":"en","boundingBox":[3.2589,3.8441,3.4067,3.8441,3.4067,3.9523,3.2589,3.9523],"text":"10","words":[{"boundingBox":[3.2589,3.8441,3.4067,3.8441,3.4067,3.9523,3.2589,3.9523],"text":"10","confidence":1}]},{"language":"en","boundingBox":[5.4232,3.8441,5.8642,3.8441,5.8642,3.9523,5.4232,3.9523],"text":"120.00","words":[{"boundingBox":[5.4232,3.8441,5.8642,3.8441,5.8642,3.9523,5.4232,3.9523],"text":"120.00","confidence":1}]},{"language":"en","boundingBox":[1.0943,4.0561,1.153,4.0561,1.153,4.1614,1.0943,4.1614],"text":"E","words":[{"boundingBox":[1.0943,4.0561,1.153,4.0561,1.153,4.1614,1.0943,4.1614],"text":"E","confidence":1}]},{"language":"en","boundingBox":[3.2486,4.0546,3.4067,4.0546,3.4067,4.1627,3.2486,4.1627],"text":"40","words":[{"boundingBox":[3.2486,4.0546,3.4067,4.0546,3.4067,4.1627,3.2486,4.1627],"text":"40","confidence":1}]},{"language":"en","boundingBox":[5.4232,4.0546,5.8644,4.0546,5.8644,4.1627,5.4232,4.1627],"text":"100.00","words":[{"boundingBox":[5.4232,4.0546,5.8644,4.0546,5.8644,4.1627,5.4232,4.1627],"text":"100.00","confidence":1}]},{"language":"en","boundingBox":[1.0943,4.2661,1.1497,4.2661,1.1497,4.3717,1.0943,4.3717],"text":"F","words":[{"boundingBox":[1.0943,4.2661,1.1497,4.2661,1.1497,4.3717,1.0943,4.3717],"text":"F","confidence":1}]},{"language":"en","boundingBox":[3.2534,4.2646,3.4067,4.2646,3.4067,4.3727,3.2534,4.3727],"text":"60","words":[{"boundingBox":[3.2534,4.2646,3.4067,4.2646,3.4067,4.3727,3.2534,4.3727],"text":"60","confidence":1}]},{"language":"en","boundingBox":[5.4232,4.2646,5.8642,4.2646,5.8642,4.3727,5.4232,4.3727],"text":"120.00","words":[{"boundingBox":[5.4232,4.2646,5.8642,4.2646,5.8642,4.3727,5.4232,4.3727],"text":"120.00","confidence":1}]},{"language":"en","boundingBox":[1.0877,4.4746,1.1735,4.4746,1.1735,4.5827,1.0877,4.5827],"text":"G","words":[{"boundingBox":[1.0877,4.4746,1.1735,4.4746,1.1735,4.5827,1.0877,4.5827],"text":"G","confidence":1}]},{"language":"en","boundingBox":[3.2514,4.4746,3.4067,4.4746,3.4067,4.5827,3.2514,4.5827],"text":"80","words":[{"boundingBox":[3.2514,4.4746,3.4067,4.4746,3.4067,4.5827,3.2514,4.5827],"text":"80","confidence":1}]},{"language":"en","boundingBox":[5.4184,4.4746,5.8644,4.4746,5.8644,4.5827,5.4184,4.5827],"text":"220.00","words":[{"boundingBox":[5.4184,4.4746,5.8644,4.4746,5.8644,4.5827,5.4184,4.5827],"text":"220.00","confidence":1}]},{"language":"en","boundingBox":[5.5075,4.8981,6.7158,4.8981,6.7158,5.0131,5.5075,5.0131],"text":"Subtotal: + 3000.00","words":[{"boundingBox":[5.5075,4.8981,6.1249,4.8981,6.1249,5.0131,5.5075,5.0131],"text":"Subtotal:","confidence":1},{"boundingBox":[6.1794,4.9042,6.7158,4.9042,6.7158,5.0131,6.1794,5.0131],"text":"3000.00","confidence":1}]},{"language":"en","boundingBox":[5.5034,5.1245,6.2887,5.1245,6.2887,5.2333,5.5034,5.2333],"text":"Tax: + 300.00","words":[{"boundingBox":[5.5034,5.1263,5.7812,5.1263,5.7812,5.2333,5.5034,5.2333],"text":"Tax:","confidence":1},{"boundingBox":[5.8360,5.1245,6.2887,5.1245,6.2887,5.2333,5.8360,5.2333],"text":"300.00","confidence":1}]},{"language":"en","boundingBox":[5.5034,5.3412,6.3422,5.3412,6.3422,5.481,5.5034,5.481],"text":"Tip: + 1000.00","words":[{"boundingBox":[5.5034,5.3412,5.7515,5.3412,5.7515,5.481,5.5034,5.481],"text":"Tip:","confidence":1},{"boundingBox":[5.8110,5.3445,6.3422,5.3445,6.3422,5.4533,5.8110,5.4533],"text":"1000.00","confidence":1}]},{"language":"en","boundingBox":[5.5034,5.5583,6.4825,5.5583,6.4825,5.6733,5.5034,5.6733],"text":"Total: + 4300.00","words":[{"boundingBox":[5.5034,5.5583,5.8915,5.5583,5.8915,5.6733,5.5034,5.6733],"text":"Total:","confidence":1},{"boundingBox":[5.9420,5.5645,6.4825,5.5645,6.4825,5.6733,5.9420,5.6733],"text":"4300.00","confidence":1}]},{"language":"en","boundingBox":[1.0055,6.6556,3.8842,6.6556,3.8842,6.7981,1.0055,6.7981],"text":"Signature: + ____ Frodo Baggins__________","words":[{"boundingBox":[1.0055,6.6581,1.6987,6.6581,1.6987,6.7981,1.0055,6.7981],"text":"Signature:","confidence":1},{"boundingBox":[1.7470,6.7829,2.0809,6.7829,2.0809,6.7981,1.7470,6.7981],"text":"____","confidence":1},{"boundingBox":[2.0925,6.6556,2.4778,6.6556,2.4778,6.7703,2.0925,6.7703],"text":"Frodo","confidence":1},{"boundingBox":[2.5325,6.6581,3.8842,6.6581,3.8842,6.7981,2.5325,6.7981],"text":"Baggins__________","confidence":1}]}]}],"pageResults":[{"page":1,"tables":[{"rows":8,"columns":3,"cells":[{"rowIndex":0,"columnIndex":0,"text":"Item","boundingBox":[1.0037,2.9443,3.1681,2.9443,3.1681,3.1543,1.0037,3.1543],"elements":["#/readResults/0/lines/10/words/0"]},{"rowIndex":0,"columnIndex":1,"text":"Quantity","boundingBox":[3.1681,2.9443,5.3353,2.9443,5.3353,3.1543,3.1681,3.1543],"elements":["#/readResults/0/lines/11/words/0"]},{"rowIndex":0,"columnIndex":2,"text":"Price","boundingBox":[5.3353,2.9443,7.4997,2.9443,7.4997,3.1543,5.3353,3.1543],"elements":["#/readResults/0/lines/12/words/0"]},{"rowIndex":1,"columnIndex":0,"text":"A","boundingBox":[1.0037,3.1543,3.1681,3.1543,3.1681,3.3643,1.0037,3.3643],"elements":["#/readResults/0/lines/13/words/0"]},{"rowIndex":1,"columnIndex":1,"text":"1","boundingBox":[3.1681,3.1543,5.3353,3.1543,5.3353,3.3643,3.1681,3.3643],"elements":["#/readResults/0/lines/14/words/0"]},{"rowIndex":1,"columnIndex":2,"text":"10.99","boundingBox":[5.3353,3.1543,7.4997,3.1543,7.4997,3.3643,5.3353,3.3643],"elements":["#/readResults/0/lines/15/words/0"]},{"rowIndex":2,"columnIndex":0,"text":"B","boundingBox":[1.0037,3.3643,3.1681,3.3643,3.1681,3.5776,1.0037,3.5776],"elements":["#/readResults/0/lines/16/words/0"]},{"rowIndex":2,"columnIndex":1,"text":"2","boundingBox":[3.1681,3.3643,5.3353,3.3643,5.3353,3.5776,3.1681,3.5776],"elements":["#/readResults/0/lines/17/words/0"]},{"rowIndex":2,"columnIndex":2,"text":"14.67","boundingBox":[5.3353,3.3643,7.4997,3.3643,7.4997,3.5776,5.3353,3.5776],"elements":["#/readResults/0/lines/18/words/0"]},{"rowIndex":3,"columnIndex":0,"text":"C","boundingBox":[1.0037,3.5776,3.1681,3.5776,3.1681,3.7876,1.0037,3.7876],"elements":["#/readResults/0/lines/19/words/0"]},{"rowIndex":3,"columnIndex":1,"text":"4","boundingBox":[3.1681,3.5776,5.3353,3.5776,5.3353,3.7876,3.1681,3.7876],"elements":["#/readResults/0/lines/20/words/0"]},{"rowIndex":3,"columnIndex":2,"text":"15.66","boundingBox":[5.3353,3.5776,7.4997,3.5776,7.4997,3.7876,5.3353,3.7876],"elements":["#/readResults/0/lines/21/words/0"]},{"rowIndex":4,"columnIndex":0,"text":"D","boundingBox":[1.0037,3.7876,3.1681,3.7876,3.1681,3.9976,1.0037,3.9976],"elements":["#/readResults/0/lines/22/words/0"]},{"rowIndex":4,"columnIndex":1,"text":"1","boundingBox":[3.1681,3.7876,5.3353,3.7876,5.3353,3.9976,3.1681,3.9976],"elements":["#/readResults/0/lines/23/words/0"]},{"rowIndex":4,"columnIndex":2,"text":"12.00","boundingBox":[5.3353,3.7876,7.4997,3.7876,7.4997,3.9976,5.3353,3.9976],"elements":["#/readResults/0/lines/24/words/0"]},{"rowIndex":5,"columnIndex":0,"text":"E","boundingBox":[1.0037,3.9976,3.1681,3.9976,3.1681,4.2081,1.0037,4.2081],"elements":["#/readResults/0/lines/25/words/0"]},{"rowIndex":5,"columnIndex":1,"text":"4","boundingBox":[3.1681,3.9976,5.3353,3.9976,5.3353,4.2081,3.1681,4.2081],"elements":["#/readResults/0/lines/26/words/0"]},{"rowIndex":5,"columnIndex":2,"text":"10.00","boundingBox":[5.3353,3.9976,7.4997,3.9976,7.4997,4.2081,5.3353,4.2081],"elements":["#/readResults/0/lines/27/words/0"]},{"rowIndex":6,"columnIndex":0,"text":"F","boundingBox":[1.0037,4.2081,3.1681,4.2081,3.1681,4.4181,1.0037,4.4181],"elements":["#/readResults/0/lines/28/words/0"]},{"rowIndex":6,"columnIndex":1,"text":"6","boundingBox":[3.1681,4.2081,5.3353,4.2081,5.3353,4.4181,3.1681,4.4181],"elements":["#/readResults/0/lines/29/words/0"]},{"rowIndex":6,"columnIndex":2,"text":"12.00","boundingBox":[5.3353,4.2081,7.4997,4.2081,7.4997,4.4181,5.3353,4.4181],"elements":["#/readResults/0/lines/30/words/0"]},{"rowIndex":7,"columnIndex":0,"text":"G","boundingBox":[1.0037,4.4181,3.1681,4.4181,3.1681,4.6281,1.0037,4.6281],"elements":["#/readResults/0/lines/31/words/0"]},{"rowIndex":7,"columnIndex":1,"text":"8","boundingBox":[3.1681,4.4181,5.3353,4.4181,5.3353,4.6281,3.1681,4.6281],"elements":["#/readResults/0/lines/32/words/0"]},{"rowIndex":7,"columnIndex":2,"text":"22.00","boundingBox":[5.3353,4.4181,7.4997,4.4181,7.4997,4.6281,5.3353,4.6281],"elements":["#/readResults/0/lines/33/words/0"]}]}]},{"page":2,"tables":[]},{"page":3,"tables":[{"rows":8,"columns":3,"cells":[{"rowIndex":0,"columnIndex":0,"text":"Item","boundingBox":[1.0037,2.9443,3.1681,2.9443,3.1681,3.1543,1.0037,3.1543],"elements":["#/readResults/2/lines/10/words/0"]},{"rowIndex":0,"columnIndex":1,"text":"Quantity","boundingBox":[3.1681,2.9443,5.3353,2.9443,5.3353,3.1543,3.1681,3.1543],"elements":["#/readResults/2/lines/11/words/0"]},{"rowIndex":0,"columnIndex":2,"text":"Price","boundingBox":[5.3353,2.9443,7.4997,2.9443,7.4997,3.1543,5.3353,3.1543],"elements":["#/readResults/2/lines/12/words/0"]},{"rowIndex":1,"columnIndex":0,"text":"A","boundingBox":[1.0037,3.1543,3.1681,3.1543,3.1681,3.3643,1.0037,3.3643],"elements":["#/readResults/2/lines/13/words/0"]},{"rowIndex":1,"columnIndex":1,"text":"10","boundingBox":[3.1681,3.1543,5.3353,3.1543,5.3353,3.3643,3.1681,3.3643],"elements":["#/readResults/2/lines/14/words/0"]},{"rowIndex":1,"columnIndex":2,"text":"100.99","boundingBox":[5.3353,3.1543,7.4997,3.1543,7.4997,3.3643,5.3353,3.3643],"elements":["#/readResults/2/lines/15/words/0"]},{"rowIndex":2,"columnIndex":0,"text":"B","boundingBox":[1.0037,3.3643,3.1681,3.3643,3.1681,3.5776,1.0037,3.5776],"elements":["#/readResults/2/lines/16/words/0"]},{"rowIndex":2,"columnIndex":1,"text":"20","boundingBox":[3.1681,3.3643,5.3353,3.3643,5.3353,3.5776,3.1681,3.5776],"elements":["#/readResults/2/lines/17/words/0"]},{"rowIndex":2,"columnIndex":2,"text":"140.67","boundingBox":[5.3353,3.3643,7.4997,3.3643,7.4997,3.5776,5.3353,3.5776],"elements":["#/readResults/2/lines/18/words/0"]},{"rowIndex":3,"columnIndex":0,"text":"C","boundingBox":[1.0037,3.5776,3.1681,3.5776,3.1681,3.7876,1.0037,3.7876],"elements":["#/readResults/2/lines/19/words/0"]},{"rowIndex":3,"columnIndex":1,"text":"40","boundingBox":[3.1681,3.5776,5.3353,3.5776,5.3353,3.7876,3.1681,3.7876],"elements":["#/readResults/2/lines/20/words/0"]},{"rowIndex":3,"columnIndex":2,"text":"150.66","boundingBox":[5.3353,3.5776,7.4997,3.5776,7.4997,3.7876,5.3353,3.7876],"elements":["#/readResults/2/lines/21/words/0"]},{"rowIndex":4,"columnIndex":0,"text":"D","boundingBox":[1.0037,3.7876,3.1681,3.7876,3.1681,3.9976,1.0037,3.9976],"elements":["#/readResults/2/lines/22/words/0"]},{"rowIndex":4,"columnIndex":1,"text":"10","boundingBox":[3.1681,3.7876,5.3353,3.7876,5.3353,3.9976,3.1681,3.9976],"elements":["#/readResults/2/lines/23/words/0"]},{"rowIndex":4,"columnIndex":2,"text":"120.00","boundingBox":[5.3353,3.7876,7.4997,3.7876,7.4997,3.9976,5.3353,3.9976],"elements":["#/readResults/2/lines/24/words/0"]},{"rowIndex":5,"columnIndex":0,"text":"E","boundingBox":[1.0037,3.9976,3.1681,3.9976,3.1681,4.2081,1.0037,4.2081],"elements":["#/readResults/2/lines/25/words/0"]},{"rowIndex":5,"columnIndex":1,"text":"40","boundingBox":[3.1681,3.9976,5.3353,3.9976,5.3353,4.2081,3.1681,4.2081],"elements":["#/readResults/2/lines/26/words/0"]},{"rowIndex":5,"columnIndex":2,"text":"100.00","boundingBox":[5.3353,3.9976,7.4997,3.9976,7.4997,4.2081,5.3353,4.2081],"elements":["#/readResults/2/lines/27/words/0"]},{"rowIndex":6,"columnIndex":0,"text":"F","boundingBox":[1.0037,4.2081,3.1681,4.2081,3.1681,4.4181,1.0037,4.4181],"elements":["#/readResults/2/lines/28/words/0"]},{"rowIndex":6,"columnIndex":1,"text":"60","boundingBox":[3.1681,4.2081,5.3353,4.2081,5.3353,4.4181,3.1681,4.4181],"elements":["#/readResults/2/lines/29/words/0"]},{"rowIndex":6,"columnIndex":2,"text":"120.00","boundingBox":[5.3353,4.2081,7.4997,4.2081,7.4997,4.4181,5.3353,4.4181],"elements":["#/readResults/2/lines/30/words/0"]},{"rowIndex":7,"columnIndex":0,"text":"G","boundingBox":[1.0037,4.4181,3.1681,4.4181,3.1681,4.6281,1.0037,4.6281],"elements":["#/readResults/2/lines/31/words/0"]},{"rowIndex":7,"columnIndex":1,"text":"80","boundingBox":[3.1681,4.4181,5.3353,4.4181,5.3353,4.6281,3.1681,4.6281],"elements":["#/readResults/2/lines/32/words/0"]},{"rowIndex":7,"columnIndex":2,"text":"220.00","boundingBox":[5.3353,4.4181,7.4997,4.4181,7.4997,4.6281,5.3353,4.6281],"elements":["#/readResults/2/lines/33/words/0"]}]}]}]}}' + headers: + apim-request-id: + - cda17111-7e2a-4cbd-b8a9-7248a8032acc + content-type: + - application/json; charset=utf-8 + date: + - Mon, 27 Apr 2020 22:36:37 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + transfer-encoding: + - chunked + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '196' + status: + code: 200 + message: OK +version: 1 diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_content.test_content_multipage_transform.yaml b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_content.test_content_multipage_transform.yaml new file mode 100644 index 000000000000..4fc0cd3108c8 --- /dev/null +++ b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_content.test_content_multipage_transform.yaml @@ -0,0 +1,2047 @@ +interactions: +- request: + body: !!binary | + JVBERi0xLjcNCiW1tbW1DQoxIDAgb2JqDQo8PC9UeXBlL0NhdGFsb2cvUGFnZXMgMiAwIFIvTGFu + Zyhlbi1VUykgL1N0cnVjdFRyZWVSb290IDE2IDAgUi9NYXJrSW5mbzw8L01hcmtlZCB0cnVlPj4v + TWV0YWRhdGEgMjUzIDAgUi9WaWV3ZXJQcmVmZXJlbmNlcyAyNTQgMCBSPj4NCmVuZG9iag0KMiAw + IG9iag0KPDwvVHlwZS9QYWdlcy9Db3VudCAzL0tpZHNbIDMgMCBSIDExIDAgUiAxMyAwIFJdID4+ + DQplbmRvYmoNCjMgMCBvYmoNCjw8L1R5cGUvUGFnZS9QYXJlbnQgMiAwIFIvUmVzb3VyY2VzPDwv + Rm9udDw8L0YxIDUgMCBSL0YyIDkgMCBSPj4vRXh0R1N0YXRlPDwvR1M3IDcgMCBSL0dTOCA4IDAg + Uj4+L1Byb2NTZXRbL1BERi9UZXh0L0ltYWdlQi9JbWFnZUMvSW1hZ2VJXSA+Pi9NZWRpYUJveFsg + MCAwIDYxMiA3OTJdIC9Db250ZW50cyA0IDAgUi9Hcm91cDw8L1R5cGUvR3JvdXAvUy9UcmFuc3Bh + cmVuY3kvQ1MvRGV2aWNlUkdCPj4vVGFicy9TL1N0cnVjdFBhcmVudHMgMD4+DQplbmRvYmoNCjQg + MCBvYmoNCjw8L0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggMjg2ND4+DQpzdHJlYW0NCnicvZxZ + bxw3EsffBeg79ONMsGrzPhZBAMvXerEGkrWAPBiLwJYPGIilXVubbL79VrHvYRfZ3cOOAI2OLvJf + LFb/SPbB6tGP1fffP3r15OXTiv3wQ3X99En1n8sLVjP88lxUrDLwab2ovn64vPj5u+ru8uL65vLi + 0XNecVMzV918vLzgYMcqXikpam4ry1TtTHXzBexevLbVp29QZ/Up/OXav15cXrw5vLz77agP9/D9 + +WgOt/DzA3xXx39VN3+/vHgGOj9dXpzlkAOH+Nih4Ecr//x4JYP6V1D/azlVzVzNDKV60rzq2asn + VTXqCL6+I8RcLxjrayUi+eujgmhf+cOv+PEuxN+CUyYcefsJ/wsfrjG6g+PfNkfmxC9vau8pv3Jh + EaXCYmSt9Yl8dQV1OlXd3L45cCFLNVizmvt5xajBZ6iI2klK5W/HK25CF2NXvyulCX0oSM2QOQ/H + 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 + fvW3lN9NoKP8fgIt5fcTaCkfCZSmfCSw09UI6BG/5zmhhK3NXNLi2yxyv6sRhuO2Ndl2xSReu18C + SWJj63VjgCulDJhYt8bwpZRleJt/hbRauxkZKS1YnXrQP1Zeu/sWqczwsaPoQiXOyj7h6XqHU7Nw + 4j5Agofrl1/DFhRHCafxlSw3vgmNdx9P/alYcBMnVb/AV7HR2uNeVHHjrz9DKxFR4SLtfXVUh+u3 + 2N4QjPCBobkrNuZyvAMV+7FxL7PZQV3OCfxy5A4iij0481lKHXfbcTPqJ0nTd4eAs8CYcIeT1VbQ + t+LU2ltxVP7jrMGt4o1aeyuOlIaffhVkVamLzULb9D3+WLrUlRyhOO7ztEa61PJCAGLMOulS46lg + IcPXSJcaULmXuJ3hGulSIyq3DleUK6R1qRGVG5hGrGq1LjWkcmXwYaE10qVoxiXD+eoa6VI041zj + BgZrpEvRzPuam1Ug1aVohk8vi3XSHc04bmeEj9VUhsnwOhCMljA1gRHb9AMfw80Nf0dZqDxp/Xp4 + TA7MvFJgaGoPJlbVsrkCYqnn5PSIc8tK9/fXAS7TyBgJQ4uqLAzmohtYP/Xhid+vPlfPwtTZkXr3 + OJv90lxjdDiRlTildYc/cAPfx2Hvz5f4Gf75G0z37rvp7y0+uBxvgnWuuxwyB5hIuJvNHretowTd + UQYnabEnj3HPzvf9XP8bLHLV4Vu8cj/XCw7/gnk/4UU2Hn5z4s4HQ3MsdeqGPnb7VjRbEL8K9ww/ + Q0xY2N8U//f6AVcH8UOgZ7nFhcKt+Qi3sps3ssLRkbpW8S6K/XayZvFmr+cFRcraSsqbbFB44aDg + vdjTnS1ze6SeJew4LTy3Vep5YgoWKaRY4ZZ5DoOxWxLSwhkFY6rQf1JEOZRypFhuD9ozzxzgiKSk + iee8/w9kOwx8DQplbmRzdHJlYW0NCmVuZG9iag0KNSAwIG9iag0KPDwvVHlwZS9Gb250L1N1YnR5 + cGUvVHJ1ZVR5cGUvTmFtZS9GMS9CYXNlRm9udC9CQ0RFRUUrQ2FsaWJyaS9FbmNvZGluZy9XaW5B + bnNpRW5jb2RpbmcvRm9udERlc2NyaXB0b3IgNiAwIFIvRmlyc3RDaGFyIDMyL0xhc3RDaGFyIDEy + MS9XaWR0aHMgMjQ5IDAgUj4+DQplbmRvYmoNCjYgMCBvYmoNCjw8L1R5cGUvRm9udERlc2NyaXB0 + b3IvRm9udE5hbWUvQkNERUVFK0NhbGlicmkvRmxhZ3MgMzIvSXRhbGljQW5nbGUgMC9Bc2NlbnQg + NzUwL0Rlc2NlbnQgLTI1MC9DYXBIZWlnaHQgNzUwL0F2Z1dpZHRoIDUyMS9NYXhXaWR0aCAxNzQz + L0ZvbnRXZWlnaHQgNDAwL1hIZWlnaHQgMjUwL1N0ZW1WIDUyL0ZvbnRCQm94WyAtNTAzIC0yNTAg + MTI0MCA3NTBdIC9Gb250RmlsZTIgMjUwIDAgUj4+DQplbmRvYmoNCjcgMCBvYmoNCjw8L1R5cGUv + RXh0R1N0YXRlL0JNL05vcm1hbC9jYSAxPj4NCmVuZG9iag0KOCAwIG9iag0KPDwvVHlwZS9FeHRH + U3RhdGUvQk0vTm9ybWFsL0NBIDE+Pg0KZW5kb2JqDQo5IDAgb2JqDQo8PC9UeXBlL0ZvbnQvU3Vi + dHlwZS9UcnVlVHlwZS9OYW1lL0YyL0Jhc2VGb250L0JDREZFRStDYWxpYnJpLUJvbGQvRW5jb2Rp + bmcvV2luQW5zaUVuY29kaW5nL0ZvbnREZXNjcmlwdG9yIDEwIDAgUi9GaXJzdENoYXIgMzIvTGFz + dENoYXIgMTIwL1dpZHRocyAyNTEgMCBSPj4NCmVuZG9iag0KMTAgMCBvYmoNCjw8L1R5cGUvRm9u + dERlc2NyaXB0b3IvRm9udE5hbWUvQkNERkVFK0NhbGlicmktQm9sZC9GbGFncyAzMi9JdGFsaWNB + bmdsZSAwL0FzY2VudCA3NTAvRGVzY2VudCAtMjUwL0NhcEhlaWdodCA3NTAvQXZnV2lkdGggNTM2 + L01heFdpZHRoIDE3ODEvRm9udFdlaWdodCA3MDAvWEhlaWdodCAyNTAvU3RlbVYgNTMvRm9udEJC + b3hbIC01MTkgLTI1MCAxMjYzIDc1MF0gL0ZvbnRGaWxlMiAyNTIgMCBSPj4NCmVuZG9iag0KMTEg + MCBvYmoNCjw8L1R5cGUvUGFnZS9QYXJlbnQgMiAwIFIvUmVzb3VyY2VzPDwvRm9udDw8L0YyIDkg + MCBSPj4vRXh0R1N0YXRlPDwvR1M3IDcgMCBSL0dTOCA4IDAgUj4+L1Byb2NTZXRbL1BERi9UZXh0 + L0ltYWdlQi9JbWFnZUMvSW1hZ2VJXSA+Pi9NZWRpYUJveFsgMCAwIDYxMiA3OTJdIC9Db250ZW50 + cyAxMiAwIFIvR3JvdXA8PC9UeXBlL0dyb3VwL1MvVHJhbnNwYXJlbmN5L0NTL0RldmljZVJHQj4+ + L1RhYnMvUy9TdHJ1Y3RQYXJlbnRzIDE+Pg0KZW5kb2JqDQoxMiAwIG9iag0KPDwvRmlsdGVyL0Zs + YXRlRGVjb2RlL0xlbmd0aCA0NzY+Pg0Kc3RyZWFtDQp4nK2Yu2ocQRBF84H5hwplB7Vdj36BUKCV + LGwQ2GjBgVEoKZLA9v+Dy4sDh6rmTjDQzNCne6BO3xo6fKXLy8P98fMNlasrur450s99K1z+XlOU + CrW496n062nfvn+kt327Pu3b4ZNSPDg975vES4WEunJRp14Ge6PTa7x099Dp5XdMSC/n0fg3utu3 + Hxf04ZFOX/btNqb7tm90e38k+m9BAlpQm8pNzws6r+OdeEXhe+M+0nhD4VvhKWm8o/Be2fL4isLr + ZO9pfEPhxbhZGt9B+Do795nGDxR+CM/87icK3xqX/O4FJcJaC2vN81Heq+bs+dITlPiqDB4LfJT5 + alGe+doXlPp8dF7YPkp93oW15fko93mt7PljV1Dyc5tc8+euoOznatw9z0fpzyOHyULsQenPInZp + /vsrSn8Wucvz319R+rMIXvnyU5T9zJ37Ah9lP9PB+cNXUfazSF5lYfso+2lEL12oPpT9NLLXStOD + sp+2utL1KMp+6pNnvvoNZT+N8FXy4cNQ9tMIX5rP3oayn0b4snz9G0p/MhrXfPg2lP6kR9u9wEf5 + TyJ9LTQ/hvKfRPpaaH4M5T+J9LXQ/BjKf1I614X6R/lvCveF9OWwv4CVR3uff/8AMWTgdQ0KZW5k + c3RyZWFtDQplbmRvYmoNCjEzIDAgb2JqDQo8PC9UeXBlL1BhZ2UvUGFyZW50IDIgMCBSL1Jlc291 + cmNlczw8L0ZvbnQ8PC9GMSA1IDAgUi9GMiA5IDAgUj4+L0V4dEdTdGF0ZTw8L0dTNyA3IDAgUi9H + UzggOCAwIFI+Pi9Qcm9jU2V0Wy9QREYvVGV4dC9JbWFnZUIvSW1hZ2VDL0ltYWdlSV0gPj4vTWVk + aWFCb3hbIDAgMCA2MTIgNzkyXSAvQ29udGVudHMgMTQgMCBSL0dyb3VwPDwvVHlwZS9Hcm91cC9T + L1RyYW5zcGFyZW5jeS9DUy9EZXZpY2VSR0I+Pi9UYWJzL1MvU3RydWN0UGFyZW50cyAyPj4NCmVu + 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 + mxWDaazuLffHZf/XyULlydKvhoeloFgtJRTUpHahL93+mltBGOxpKTm6Y7Lu6v7GpCD11DNaQExK + 6AdgSOeZT717wkML9upBhyuL6n11mfRLsw1gXRIVLp3a0+/RA+T32sKAIVRhtoQn9+zXM8QITO+A + 9glKLNq+F87X3ru/nWXj+ea8/ouJHAe52xbDiDYr2x4OQ5UX8RyPeO0OBw4teexOr37fA/vb+QJ0 + +xYuIfZaweC/AN6IFYv+0NkZIO4MmKuL8ERtde5O1TH+MO+X/kbPZ/AJ9Sd9u/979eA4Gd6x3mUW + g6WWMJhZi94xhb0jFJHhecL9wep69bHn+5wihEsfiDWLTrGFneJuoM3PeF46LXyXMMzZUOHYoeH7 + xGCtb1Gxwi2rGcxq7BqXFo4omJxw9Qd5lMFVFhVbOo1958iBPCIwaeRJ4/8DtXV3Ww0KZW5kc3Ry + ZWFtDQplbmRvYmoNCjE1IDAgb2JqDQo8PC9BdXRob3IoS3Jpc3RhIFByYXRpY28pIC9DcmVhdG9y + KP7/AE0AaQBjAHIAbwBzAG8AZgB0AK4AIABXAG8AcgBkACAAZgBvAHIAIABPAGYAZgBpAGMAZQAg + ADMANgA1KSAvQ3JlYXRpb25EYXRlKEQ6MjAyMDA0MjIxNjQ1MjktMDcnMDAnKSAvTW9kRGF0ZShE + OjIwMjAwNDIyMTY0NTI5LTA3JzAwJykgL1Byb2R1Y2VyKP7/AE0AaQBjAHIAbwBzAG8AZgB0AK4A + IABXAG8AcgBkACAAZgBvAHIAIABPAGYAZgBpAGMAZQAgADMANgA1KSA+Pg0KZW5kb2JqDQoyMyAw + IG9iag0KPDwvVHlwZS9PYmpTdG0vTiAyMzIvRmlyc3QgMjAzNS9GaWx0ZXIvRmxhdGVEZWNvZGUv + TGVuZ3RoIDMwNTE+Pg0Kc3RyZWFtDQp4nO1b24ocyRF9N/gf8g+mIu8Jy4Jt7WKzrBCSwA/CDyOp + LQ07M72MWiD9vc+pipyetTOz1Gn7weCHmbrG/UTkpaKtmMXYYIIYG40s2dhkJOIezsQaW3DfG7cY + J9FYnMWMU+NjMM6CLBrnTIjJOG+i4FkwMRa8ZpIFUTIp4W1rsrXGi8nJGe9NAUPvTMnkBLEuGx9w + LLi9GBEPfsWIBcOAawuOHtfOigkWx5SpsXiwCR7HnExwRgKIfMaxRBNoB/QK4J+kmAD6lHAfzzOs + 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 + o7YHauOettT9bxfFC374xVj+v4b+R2qoOrMW0tkCqt2Sut9ed8Hr1nDdsK3bqHVDsm4T1s27ug1W + N6fqllHdfKlbInWjoi7560K8Lo/rQrMu/+qirC5v6qKjLgX+W4W/fs361q9fDMY/AFTdMPANCmVu + ZHN0cmVhbQ0KZW5kb2JqDQoyNDkgMCBvYmoNClsgMjI2IDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAy + NTAgMzA2IDI1MiAwIDUwNyA1MDcgNTA3IDUwNyA1MDcgNTA3IDUwNyA1MDcgNTA3IDUwNyAyNjgg + MCAwIDAgMCAwIDAgNTc5IDU0NCA1MzMgNjE1IDQ4OCA0NTkgNjMxIDYyMyAyNTIgMCAwIDQyMCA4 + NTUgMCAwIDUxNyA2NzMgNTQzIDQ1OSAwIDAgMCA4OTAgMCAwIDAgMCAwIDAgMCAwIDAgNDc5IDUy + NSA0MjMgNTI1IDQ5OCAwIDQ3MSAwIDIzMCAwIDAgMjMwIDc5OSA1MjUgNTI3IDUyNSAwIDM0OSAz + OTEgMzM1IDUyNSA0NTIgMCAwIDQ1M10gDQplbmRvYmoNCjI1MCAwIG9iag0KPDwvRmlsdGVyL0Zs + YXRlRGVjb2RlL0xlbmd0aCA1MzE4Mi9MZW5ndGgxIDEzNzU5Nj4+DQpzdHJlYW0NCnic7H0HXFTH + 2v475+zCUhaWKrLiLq6Auig2FEtklaJoLCirgA2k2LChGI0lJEZNSEy5Mb2ZnhtNsqwaMdXkphfT + e+/JjaZdzc01Ub5nzruDaDTJvfd/v3z3/9sXnvM8887Me2bmzMyZjRBIEJENFxNVFIzIL1mf7HuW + xJeZRLFJBSNOzbvntXVfkfhoNVGIb/ykrL7XPly5k0icg1oVVQsqF7/T99MUovmbicyDq5Yvc+5e + /EY20Y1fIH1/7eLZC9a+pw8kWvwCkdU9u25l7bvOlS6i228meumvc2oqq38cu9KHeJGIN2AOHNY7 + O+1HOh/prnMWLFuRPXOSG2nEm7utblFV5U2b53cjseoiFJ+8oHLF4l7W9G7In4PyzgU1yyqvOmvL + chI/yfpnL6xcUHPdoYMzSTSjfu+lixctXdZqpw3ozzRZfnF9zeK42V06Eq35GbdDP+ENGfzhP3a9 + WDAzeuhB6mghafd9tfpZya8XnTb+p0OHG8P2WQYgGUYasaFeCB0h8Wj4lp8OHdoSts+I1M46bpMe + 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 + wAKEAiGAGTANb8VVBzRAAETVAj5xBDgM/Az8BBwC/gH8CPwd+AE4CBwA/gZ8D3wHfAt8A3wN7Af2 + AV8BfwW+BL4APgc+Az4FPgE+Bj4CPgQ+AN4H3gPeBd4B3gbeAt4E3gBeB14DXgVeAV4GXgJeBF4A + ngf2As8BzwLPAE8DTwFPAk8AjwOPAY8CfwEeAR4G9gAPAQ8CDwD3A/cB9wK7gRZgF3APsBPYAWwH + /EAz4APuBu4C7gS2AVuBO4A/A7cDtwG3ArcANwM3ATcCNwBbgOuB64BrgWuAq4GrgCuBK4DLgcuA + S4HNwCXAn4CLgYuAC4ELgE3A+cB5QBNwLnAOsBHYAKyn6uGNAutfYP0LrH+B9S+w/gXWv8D6F1j/ + AutfYP0LrH+B9S+w/gXWv8D6F1j/AutfYP2LegB7gMAeILAHCOwBAnuAwB4gsAcI7AECe4DAHiCw + BwjsAQJ7gMAeILAHCOwBAnuAwB4gsAcI7AECe4DAHiCwBwjsAQJ7gMAeILAHCOwBAnuAwB4gsAcI + 7AEC619g/Qusf4G1L7D2Bda+wNoXWPsCa19g7QusfYG1L7D2/+h9+L/cyv7oBvyXGy1d2u5gJi1p + pvyFp9DriI5ccszvqUygebSUGvG1gTbRJfQQvU2zaB3UlbSFbqU/k48epqfo9d/xOy+/246sNC+g + SH0XhVAcUeuh1v1HbgVazFHtPJcgFWdyHvW02lq/Ps739ZFLWm1HWkJiKdyoa9Vegvdv4nDrIbxy + kW4dINPaRuhoo8Z3odcdufvIbceNQTGV01SaRtOpgirR/2qaQ3MxMvOpjhbQQiO1EHmzca1FaiZK + YXsx9NFSi2gxUE/LqIGW42sx9NJASuYtMdINdBq+VtBKOp1W0WpaE7ieZnhWI+d0I70CWEtn4Mmc + SWcZSjF71tHZtB5PbSOdQ+f+aurcNtVE59H5eM4X0IUn1ZuOSV2Er4vpT5gPm+lSuoyuwLy4mq45 + znu54b+KrqPrMWdk3qXwXG8omXs/PU476S66m+4xxrIKo8Yjosal1hjDxRiD1ejhunYt5vE7rW20 + 1qLvsm9NgZ6ugP+sdjWWB8ZRllyHkhyFn4OMsua4kbgIfWB9tEecutTo/1Fv+1H5Na8aj2vajczV + Rkqq470n05fRtViBN+AqR1WqG6FZXW/o9v7r2spuMdI30c10C57FbYZSzJ5boW+j27G276CttA1f + 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 + IDAgMCAwIDQ1OSAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCA0NzMgNDk1IDAgMCAwIDAgMCAwIDAg + MCAwIDAgNDk4IDAgNDk0IDUzNyAwIDUzNyA1MDMgMCA0NzQgMCAyNDYgMCAwIDI0NiAwIDUzNyA1 + MzggNTM3IDAgMzU1IDM5OSAzNDcgNTM3IDAgMCA0NTldIA0KZW5kb2JqDQoyNTIgMCBvYmoNCjw8 + L0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggMzM2MzMvTGVuZ3RoMSAxMDI3MDQ+Pg0Kc3RyZWFt + DQp4nOydCXiTVdb4z33fLM3WJl3SJU2aNk26J90otAUaulEoW6HBFgRaaLG4UYGqoAzgglhFVFzG + BUFHxwWUNIAUQUTFXdQZUccdlxnXjqjgKNDkf+570tIiuMz4jd//+XLa8/7uPffcfXsj8SkwANDj + QwZNVeWV9bcVPhsGrO2PAGqMj6t4/SnTOGBzDqBD98Qprvz1X835GoCtwlxNc85pblc9YVwHcNYN + mP7wnPMXWcseafgS4NpKAMWque1nnHPn5+WbANrHAaiizjh78dyPlhs+ArjpRYC5+rbW5pbvT198 + CZanxfKK2tCg25n4KsYxP6S2nbPowsefSy3F+KcA8zadPX9O81VvnncY4Ng76D71nOYL29Pvi7Ng + ehv6W89pXdR86yUbzge24HuMX3Zu8zmt75e/mgusoBAg96r2+QsXBUywEvuzh/u3L2ht/8H9/EKA + xU0Axg+Aj4Wi5IMVj770+KyI4YchPgy47Pzi4hc53xhzweSjb/UOUSeETUJfFQhAgvkU4Ae2V73h + 6FtHVqoTpJIGSPwmbjFlwlrQw4UgYk49uABr1X6P9QqYKsrGCrtADmHyW+QFWKSFKL4CjwgQBkKE + UhBlMlGQfQzOwB5IvQiLVfGyx0+xWsEKYH+R2qC8Q3BYgQV4mrhHHs57CtGy8OOtYS/jbL0JsfAr + RXYxrP61eX5OxE2/fZm/RBT+/0694rNQdlL7d6D9b9R/MpGNBvWvzjMM982p0q4bnCauObXvIL8G + WCm7HRp+ykfQ/3RZmB53yrRjJ8+rqMF6nzl5muwt8PxUfSeK2Hu8HJn9hHGYDxUnzXMRmAbVuQku + +zV1nkxkMnD8Ej/xWxj9q8uuhT/8Ct/aQXEljP219f1vFPGFwXPG5cS+nijsX3DWz5WLPj87tj/l + 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 + KrFHQKlmZxW8qHpfRETYMZZdos8K9Tc0bmVNGZWf8PP4qiK6kZk7D1Hp68k6+cqujnrMi0+QTUvB + 02LWgEvJpMfQvQGNGyJ9Cp8e2OiVa3QkzxGYHxUIMdPMzhyDZ2iKtYRjadyCZoFjccXgVeuxLKL/ + AfpFWhMNCmVuZHN0cmVhbQ0KZW5kb2JqDQoyNTMgMCBvYmoNCjw8L1R5cGUvTWV0YWRhdGEvU3Vi + dHlwZS9YTUwvTGVuZ3RoIDMwODQ+Pg0Kc3RyZWFtDQo8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9 + Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/Pjx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6 + bWV0YS8iIHg6eG1wdGs9IjMuMS03MDEiPgo8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cu + dzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgo8cmRmOkRlc2NyaXB0aW9uIHJkZjph + Ym91dD0iIiAgeG1sbnM6cGRmPSJodHRwOi8vbnMuYWRvYmUuY29tL3BkZi8xLjMvIj4KPHBkZjpQ + cm9kdWNlcj5NaWNyb3NvZnTCriBXb3JkIGZvciBPZmZpY2UgMzY1PC9wZGY6UHJvZHVjZXI+PC9y + ZGY6RGVzY3JpcHRpb24+CjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiICB4bWxuczpkYz0i + aHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iPgo8ZGM6Y3JlYXRvcj48cmRmOlNlcT48 + cmRmOmxpPktyaXN0YSBQcmF0aWNvPC9yZGY6bGk+PC9yZGY6U2VxPjwvZGM6Y3JlYXRvcj48L3Jk + ZjpEZXNjcmlwdGlvbj4KPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgIHhtbG5zOnhtcD0i + aHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyI+Cjx4bXA6Q3JlYXRvclRvb2w+TWljcm9zb2Z0 + wq4gV29yZCBmb3IgT2ZmaWNlIDM2NTwveG1wOkNyZWF0b3JUb29sPjx4bXA6Q3JlYXRlRGF0ZT4y + MDIwLTA0LTIyVDE2OjQ1OjI5LTA3OjAwPC94bXA6Q3JlYXRlRGF0ZT48eG1wOk1vZGlmeURhdGU+ + MjAyMC0wNC0yMlQxNjo0NToyOS0wNzowMDwveG1wOk1vZGlmeURhdGU+PC9yZGY6RGVzY3JpcHRp + b24+CjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiICB4bWxuczp4bXBNTT0iaHR0cDovL25z + LmFkb2JlLmNvbS94YXAvMS4wL21tLyI+Cjx4bXBNTTpEb2N1bWVudElEPnV1aWQ6NThCQjA4MDUt + RjY5Ri00NDBGLTgzOUItMURFMDI1NjUxREUyPC94bXBNTTpEb2N1bWVudElEPjx4bXBNTTpJbnN0 + YW5jZUlEPnV1aWQ6NThCQjA4MDUtRjY5Ri00NDBGLTgzOUItMURFMDI1NjUxREUyPC94bXBNTTpJ + bnN0YW5jZUlEPjwvcmRmOkRlc2NyaXB0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKPC9y + ZGY6UkRGPjwveDp4bXBtZXRhPjw/eHBhY2tldCBlbmQ9InciPz4NCmVuZHN0cmVhbQ0KZW5kb2Jq + DQoyNTQgMCBvYmoNCjw8L0Rpc3BsYXlEb2NUaXRsZSB0cnVlPj4NCmVuZG9iag0KMjU1IDAgb2Jq + DQo8PC9UeXBlL1hSZWYvU2l6ZSAyNTUvV1sgMSA0IDJdIC9Sb290IDEgMCBSL0luZm8gMTUgMCBS + L0lEWzwwNTA4QkI1ODlGRjYwRjQ0ODM5QjFERTAyNTY1MURFMj48MDUwOEJCNTg5RkY2MEY0NDgz + OUIxREUwMjU2NTFERTI+XSAvRmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0aCA1MDc+Pg0Kc3RyZWFt + DQp4nDXV93fPZxQH8E9sSojZGkG0tQmKGrVHFKU2tUeomrXTauy9YlMdKFV7U3vvHUWJvX7rv5B+ + 83nx3HOe17nn3Ht/fQdB5KWnR0X+mCDIYAv+C4lKD8mTFBJdJiRvASRgcki+SiExcSH5dQU7hhRK + DCk9JggyRU4XCZ7jBV7iFZ7h3eTryF5c8vsuO6KQCZmRBVmRDTmQE7nwAXIjD6LRCoVRCPmQF/kR + g4IogASUwIcogqL4CMVRDB+jJGJRGqVQBnGoiE/xCcqhLCqgPKqjMiqhKqqgGuJRB5+hBmqhJj5H + bTRCPdTFF6iPhmiAlmiCxmiGpmiB5vgSrdEGbfEV2qE9vkYHdEQndEYXdEU3dEcPfIOe6IXe6IO+ + 6If+eIMBGIhBSMRgDMG3GIrvMAzDMQIjMQqj8T3GYCzGYTwmYCImIQk/4EdMxk9IxhRMxTRMxwzM + xCzMxhzMxTzMx1ssxQIsxCIsxhKkYBmWYwVWYhVWYw3uYj1+x89Yi1+wDr/hV6RiCzZiAzbhD/yJ + zdiFrfgL27ENO7EDB7EHu7EPe3EA+3Ech3EIR/A3juEozuEkTuA0TuEszuAqLuA8LuEiruAy7uA6 + ruEmbuA2buEf3MN9PMC/eIhHSMNjPMHTSFpUSQ3DJj4jvSJVPCQqNmRGWkhK/SD4H/tbjC8NCmVu + ZHN0cmVhbQ0KZW5kb2JqDQp4cmVmDQowIDI1Ng0KMDAwMDAwMDAxNiA2NTUzNSBmDQowMDAwMDAw + MDE3IDAwMDAwIG4NCjAwMDAwMDAxNjggMDAwMDAgbg0KMDAwMDAwMDIzOCAwMDAwMCBuDQowMDAw + MDAwNTExIDAwMDAwIG4NCjAwMDAwMDM0NTAgMDAwMDAgbg0KMDAwMDAwMzYxOSAwMDAwMCBuDQow + MDAwMDAzODU5IDAwMDAwIG4NCjAwMDAwMDM5MTIgMDAwMDAgbg0KMDAwMDAwMzk2NSAwMDAwMCBu + DQowMDAwMDA0MTQwIDAwMDAwIG4NCjAwMDAwMDQzODYgMDAwMDAgbg0KMDAwMDAwNDY1MiAwMDAw + MCBuDQowMDAwMDA1MjAzIDAwMDAwIG4NCjAwMDAwMDU0NzggMDAwMDAgbg0KMDAwMDAwODU2MyAw + MDAwMCBuDQowMDAwMDAwMDE3IDY1NTM1IGYNCjAwMDAwMDAwMTggNjU1MzUgZg0KMDAwMDAwMDAx + OSA2NTUzNSBmDQowMDAwMDAwMDIwIDY1NTM1IGYNCjAwMDAwMDAwMjEgNjU1MzUgZg0KMDAwMDAw + MDAyMiA2NTUzNSBmDQowMDAwMDAwMDIzIDY1NTM1IGYNCjAwMDAwMDAwMjQgNjU1MzUgZg0KMDAw + MDAwMDAyNSA2NTUzNSBmDQowMDAwMDAwMDI2IDY1NTM1IGYNCjAwMDAwMDAwMjcgNjU1MzUgZg0K + MDAwMDAwMDAyOCA2NTUzNSBmDQowMDAwMDAwMDI5IDY1NTM1IGYNCjAwMDAwMDAwMzAgNjU1MzUg + Zg0KMDAwMDAwMDAzMSA2NTUzNSBmDQowMDAwMDAwMDMyIDY1NTM1IGYNCjAwMDAwMDAwMzMgNjU1 + MzUgZg0KMDAwMDAwMDAzNCA2NTUzNSBmDQowMDAwMDAwMDM1IDY1NTM1IGYNCjAwMDAwMDAwMzYg + NjU1MzUgZg0KMDAwMDAwMDAzNyA2NTUzNSBmDQowMDAwMDAwMDM4IDY1NTM1IGYNCjAwMDAwMDAw + MzkgNjU1MzUgZg0KMDAwMDAwMDA0MCA2NTUzNSBmDQowMDAwMDAwMDQxIDY1NTM1IGYNCjAwMDAw + MDAwNDIgNjU1MzUgZg0KMDAwMDAwMDA0MyA2NTUzNSBmDQowMDAwMDAwMDQ0IDY1NTM1IGYNCjAw + MDAwMDAwNDUgNjU1MzUgZg0KMDAwMDAwMDA0NiA2NTUzNSBmDQowMDAwMDAwMDQ3IDY1NTM1IGYN + CjAwMDAwMDAwNDggNjU1MzUgZg0KMDAwMDAwMDA0OSA2NTUzNSBmDQowMDAwMDAwMDUwIDY1NTM1 + IGYNCjAwMDAwMDAwNTEgNjU1MzUgZg0KMDAwMDAwMDA1MiA2NTUzNSBmDQowMDAwMDAwMDUzIDY1 + NTM1IGYNCjAwMDAwMDAwNTQgNjU1MzUgZg0KMDAwMDAwMDA1NSA2NTUzNSBmDQowMDAwMDAwMDU2 + IDY1NTM1IGYNCjAwMDAwMDAwNTcgNjU1MzUgZg0KMDAwMDAwMDA1OCA2NTUzNSBmDQowMDAwMDAw + MDU5IDY1NTM1IGYNCjAwMDAwMDAwNjAgNjU1MzUgZg0KMDAwMDAwMDA2MSA2NTUzNSBmDQowMDAw + MDAwMDYyIDY1NTM1IGYNCjAwMDAwMDAwNjMgNjU1MzUgZg0KMDAwMDAwMDA2NCA2NTUzNSBmDQow + MDAwMDAwMDY1IDY1NTM1IGYNCjAwMDAwMDAwNjYgNjU1MzUgZg0KMDAwMDAwMDA2NyA2NTUzNSBm + DQowMDAwMDAwMDY4IDY1NTM1IGYNCjAwMDAwMDAwNjkgNjU1MzUgZg0KMDAwMDAwMDA3MCA2NTUz + NSBmDQowMDAwMDAwMDcxIDY1NTM1IGYNCjAwMDAwMDAwNzIgNjU1MzUgZg0KMDAwMDAwMDA3MyA2 + NTUzNSBmDQowMDAwMDAwMDc0IDY1NTM1IGYNCjAwMDAwMDAwNzUgNjU1MzUgZg0KMDAwMDAwMDA3 + NiA2NTUzNSBmDQowMDAwMDAwMDc3IDY1NTM1IGYNCjAwMDAwMDAwNzggNjU1MzUgZg0KMDAwMDAw + MDA3OSA2NTUzNSBmDQowMDAwMDAwMDgwIDY1NTM1IGYNCjAwMDAwMDAwODEgNjU1MzUgZg0KMDAw + MDAwMDA4MiA2NTUzNSBmDQowMDAwMDAwMDgzIDY1NTM1IGYNCjAwMDAwMDAwODQgNjU1MzUgZg0K + MDAwMDAwMDA4NSA2NTUzNSBmDQowMDAwMDAwMDg2IDY1NTM1IGYNCjAwMDAwMDAwODcgNjU1MzUg + Zg0KMDAwMDAwMDA4OCA2NTUzNSBmDQowMDAwMDAwMDg5IDY1NTM1IGYNCjAwMDAwMDAwOTAgNjU1 + MzUgZg0KMDAwMDAwMDA5MSA2NTUzNSBmDQowMDAwMDAwMDkyIDY1NTM1IGYNCjAwMDAwMDAwOTMg + NjU1MzUgZg0KMDAwMDAwMDA5NCA2NTUzNSBmDQowMDAwMDAwMDk1IDY1NTM1IGYNCjAwMDAwMDAw + OTYgNjU1MzUgZg0KMDAwMDAwMDA5NyA2NTUzNSBmDQowMDAwMDAwMDk4IDY1NTM1IGYNCjAwMDAw + MDAwOTkgNjU1MzUgZg0KMDAwMDAwMDEwMCA2NTUzNSBmDQowMDAwMDAwMTAxIDY1NTM1IGYNCjAw + MDAwMDAxMDIgNjU1MzUgZg0KMDAwMDAwMDEwMyA2NTUzNSBmDQowMDAwMDAwMTA0IDY1NTM1IGYN + CjAwMDAwMDAxMDUgNjU1MzUgZg0KMDAwMDAwMDEwNiA2NTUzNSBmDQowMDAwMDAwMTA3IDY1NTM1 + IGYNCjAwMDAwMDAxMDggNjU1MzUgZg0KMDAwMDAwMDEwOSA2NTUzNSBmDQowMDAwMDAwMTEwIDY1 + NTM1IGYNCjAwMDAwMDAxMTEgNjU1MzUgZg0KMDAwMDAwMDExMiA2NTUzNSBmDQowMDAwMDAwMTEz + IDY1NTM1IGYNCjAwMDAwMDAxMTQgNjU1MzUgZg0KMDAwMDAwMDExNSA2NTUzNSBmDQowMDAwMDAw + MTE2IDY1NTM1IGYNCjAwMDAwMDAxMTcgNjU1MzUgZg0KMDAwMDAwMDExOCA2NTUzNSBmDQowMDAw + MDAwMTE5IDY1NTM1IGYNCjAwMDAwMDAxMjAgNjU1MzUgZg0KMDAwMDAwMDEyMSA2NTUzNSBmDQow + MDAwMDAwMTIyIDY1NTM1IGYNCjAwMDAwMDAxMjMgNjU1MzUgZg0KMDAwMDAwMDEyNCA2NTUzNSBm + DQowMDAwMDAwMTI1IDY1NTM1IGYNCjAwMDAwMDAxMjYgNjU1MzUgZg0KMDAwMDAwMDEyNyA2NTUz + NSBmDQowMDAwMDAwMTI4IDY1NTM1IGYNCjAwMDAwMDAxMjkgNjU1MzUgZg0KMDAwMDAwMDEzMCA2 + NTUzNSBmDQowMDAwMDAwMTMxIDY1NTM1IGYNCjAwMDAwMDAxMzIgNjU1MzUgZg0KMDAwMDAwMDEz + MyA2NTUzNSBmDQowMDAwMDAwMTM0IDY1NTM1IGYNCjAwMDAwMDAxMzUgNjU1MzUgZg0KMDAwMDAw + MDEzNiA2NTUzNSBmDQowMDAwMDAwMTM3IDY1NTM1IGYNCjAwMDAwMDAxMzggNjU1MzUgZg0KMDAw + MDAwMDEzOSA2NTUzNSBmDQowMDAwMDAwMTQwIDY1NTM1IGYNCjAwMDAwMDAxNDEgNjU1MzUgZg0K + MDAwMDAwMDE0MiA2NTUzNSBmDQowMDAwMDAwMTQzIDY1NTM1IGYNCjAwMDAwMDAxNDQgNjU1MzUg + Zg0KMDAwMDAwMDE0NSA2NTUzNSBmDQowMDAwMDAwMTQ2IDY1NTM1IGYNCjAwMDAwMDAxNDcgNjU1 + MzUgZg0KMDAwMDAwMDE0OCA2NTUzNSBmDQowMDAwMDAwMTQ5IDY1NTM1IGYNCjAwMDAwMDAxNTAg + NjU1MzUgZg0KMDAwMDAwMDE1MSA2NTUzNSBmDQowMDAwMDAwMTUyIDY1NTM1IGYNCjAwMDAwMDAx + NTMgNjU1MzUgZg0KMDAwMDAwMDE1NCA2NTUzNSBmDQowMDAwMDAwMTU1IDY1NTM1IGYNCjAwMDAw + MDAxNTYgNjU1MzUgZg0KMDAwMDAwMDE1NyA2NTUzNSBmDQowMDAwMDAwMTU4IDY1NTM1IGYNCjAw + MDAwMDAxNTkgNjU1MzUgZg0KMDAwMDAwMDE2MCA2NTUzNSBmDQowMDAwMDAwMTYxIDY1NTM1IGYN + CjAwMDAwMDAxNjIgNjU1MzUgZg0KMDAwMDAwMDE2MyA2NTUzNSBmDQowMDAwMDAwMTY0IDY1NTM1 + IGYNCjAwMDAwMDAxNjUgNjU1MzUgZg0KMDAwMDAwMDE2NiA2NTUzNSBmDQowMDAwMDAwMTY3IDY1 + NTM1IGYNCjAwMDAwMDAxNjggNjU1MzUgZg0KMDAwMDAwMDE2OSA2NTUzNSBmDQowMDAwMDAwMTcw + IDY1NTM1IGYNCjAwMDAwMDAxNzEgNjU1MzUgZg0KMDAwMDAwMDE3MiA2NTUzNSBmDQowMDAwMDAw + MTczIDY1NTM1IGYNCjAwMDAwMDAxNzQgNjU1MzUgZg0KMDAwMDAwMDE3NSA2NTUzNSBmDQowMDAw + MDAwMTc2IDY1NTM1IGYNCjAwMDAwMDAxNzcgNjU1MzUgZg0KMDAwMDAwMDE3OCA2NTUzNSBmDQow + MDAwMDAwMTc5IDY1NTM1IGYNCjAwMDAwMDAxODAgNjU1MzUgZg0KMDAwMDAwMDE4MSA2NTUzNSBm + DQowMDAwMDAwMTgyIDY1NTM1IGYNCjAwMDAwMDAxODMgNjU1MzUgZg0KMDAwMDAwMDE4NCA2NTUz + NSBmDQowMDAwMDAwMTg1IDY1NTM1IGYNCjAwMDAwMDAxODYgNjU1MzUgZg0KMDAwMDAwMDE4NyA2 + NTUzNSBmDQowMDAwMDAwMTg4IDY1NTM1IGYNCjAwMDAwMDAxODkgNjU1MzUgZg0KMDAwMDAwMDE5 + MCA2NTUzNSBmDQowMDAwMDAwMTkxIDY1NTM1IGYNCjAwMDAwMDAxOTIgNjU1MzUgZg0KMDAwMDAw + MDE5MyA2NTUzNSBmDQowMDAwMDAwMTk0IDY1NTM1IGYNCjAwMDAwMDAxOTUgNjU1MzUgZg0KMDAw + MDAwMDE5NiA2NTUzNSBmDQowMDAwMDAwMTk3IDY1NTM1IGYNCjAwMDAwMDAxOTggNjU1MzUgZg0K + MDAwMDAwMDE5OSA2NTUzNSBmDQowMDAwMDAwMjAwIDY1NTM1IGYNCjAwMDAwMDAyMDEgNjU1MzUg + Zg0KMDAwMDAwMDIwMiA2NTUzNSBmDQowMDAwMDAwMjAzIDY1NTM1IGYNCjAwMDAwMDAyMDQgNjU1 + MzUgZg0KMDAwMDAwMDIwNSA2NTUzNSBmDQowMDAwMDAwMjA2IDY1NTM1IGYNCjAwMDAwMDAyMDcg + NjU1MzUgZg0KMDAwMDAwMDIwOCA2NTUzNSBmDQowMDAwMDAwMjA5IDY1NTM1IGYNCjAwMDAwMDAy + MTAgNjU1MzUgZg0KMDAwMDAwMDIxMSA2NTUzNSBmDQowMDAwMDAwMjEyIDY1NTM1IGYNCjAwMDAw + MDAyMTMgNjU1MzUgZg0KMDAwMDAwMDIxNCA2NTUzNSBmDQowMDAwMDAwMjE1IDY1NTM1IGYNCjAw + MDAwMDAyMTYgNjU1MzUgZg0KMDAwMDAwMDIxNyA2NTUzNSBmDQowMDAwMDAwMjE4IDY1NTM1IGYN + CjAwMDAwMDAyMTkgNjU1MzUgZg0KMDAwMDAwMDIyMCA2NTUzNSBmDQowMDAwMDAwMjIxIDY1NTM1 + IGYNCjAwMDAwMDAyMjIgNjU1MzUgZg0KMDAwMDAwMDIyMyA2NTUzNSBmDQowMDAwMDAwMjI0IDY1 + NTM1IGYNCjAwMDAwMDAyMjUgNjU1MzUgZg0KMDAwMDAwMDIyNiA2NTUzNSBmDQowMDAwMDAwMjI3 + IDY1NTM1IGYNCjAwMDAwMDAyMjggNjU1MzUgZg0KMDAwMDAwMDIyOSA2NTUzNSBmDQowMDAwMDAw + MjMwIDY1NTM1IGYNCjAwMDAwMDAyMzEgNjU1MzUgZg0KMDAwMDAwMDIzMiA2NTUzNSBmDQowMDAw + MDAwMjMzIDY1NTM1IGYNCjAwMDAwMDAyMzQgNjU1MzUgZg0KMDAwMDAwMDIzNSA2NTUzNSBmDQow + MDAwMDAwMjM2IDY1NTM1IGYNCjAwMDAwMDAyMzcgNjU1MzUgZg0KMDAwMDAwMDIzOCA2NTUzNSBm + DQowMDAwMDAwMjM5IDY1NTM1IGYNCjAwMDAwMDAyNDAgNjU1MzUgZg0KMDAwMDAwMDI0MSA2NTUz + NSBmDQowMDAwMDAwMjQyIDY1NTM1IGYNCjAwMDAwMDAyNDMgNjU1MzUgZg0KMDAwMDAwMDI0NCA2 + NTUzNSBmDQowMDAwMDAwMjQ1IDY1NTM1IGYNCjAwMDAwMDAyNDYgNjU1MzUgZg0KMDAwMDAwMDI0 + NyA2NTUzNSBmDQowMDAwMDAwMjQ4IDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAx + MTk4NyAwMDAwMCBuDQowMDAwMDEyMjg5IDAwMDAwIG4NCjAwMDAwNjU1NjQgMDAwMDAgbg0KMDAw + MDA2NTgyMiAwMDAwMCBuDQowMDAwMDk5NTQ4IDAwMDAwIG4NCjAwMDAxMDI3MTYgMDAwMDAgbg0K + MDAwMDEwMjc2MiAwMDAwMCBuDQp0cmFpbGVyDQo8PC9TaXplIDI1Ni9Sb290IDEgMCBSL0luZm8g + MTUgMCBSL0lEWzwwNTA4QkI1ODlGRjYwRjQ0ODM5QjFERTAyNTY1MURFMj48MDUwOEJCNTg5RkY2 + MEY0NDgzOUIxREUwMjU2NTFERTI+XSA+Pg0Kc3RhcnR4cmVmDQoxMDM0NzINCiUlRU9GDQp4cmVm + DQowIDANCnRyYWlsZXINCjw8L1NpemUgMjU2L1Jvb3QgMSAwIFIvSW5mbyAxNSAwIFIvSURbPDA1 + MDhCQjU4OUZGNjBGNDQ4MzlCMURFMDI1NjUxREUyPjwwNTA4QkI1ODlGRjYwRjQ0ODM5QjFERTAy + NTY1MURFMj5dIC9QcmV2IDEwMzQ3Mi9YUmVmU3RtIDEwMjc2Mj4+DQpzdGFydHhyZWYNCjEwODc1 + Mg0KJSVFT0Y= + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '108935' + Content-Type: + - application/pdf + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/layout/analyze + response: + body: + string: '' + headers: + apim-request-id: + - cffd56f9-5ac3-4fee-bbdd-c3695f0f7a5a + content-length: + - '0' + date: + - Mon, 27 Apr 2020 23:06:49 GMT + operation-location: + - https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/layout/analyzeResults/cffd56f9-5ac3-4fee-bbdd-c3695f0f7a5a + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '248' + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/layout/analyzeResults/cffd56f9-5ac3-4fee-bbdd-c3695f0f7a5a + response: + body: + string: '{"status":"running","createdDateTime":"2020-04-27T23:06:49Z","lastUpdatedDateTime":"2020-04-27T23:06:54Z"}' + headers: + apim-request-id: + - 0402f3da-e62c-45a0-bad7-f00281d61064 + content-type: + - application/json; charset=utf-8 + date: + - Mon, 27 Apr 2020 23:06:54 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + transfer-encoding: + - chunked + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '30' + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/layout/analyzeResults/cffd56f9-5ac3-4fee-bbdd-c3695f0f7a5a + response: + body: + string: '{"status":"succeeded","createdDateTime":"2020-04-27T23:06:49Z","lastUpdatedDateTime":"2020-04-27T23:06:59Z","analyzeResult":{"version":"2.0.0","readResults":[{"page":1,"language":"en","angle":0,"width":8.5,"height":11,"unit":"inch","lines":[{"language":"en","boundingBox":[0.8861,1.1217,2.3783,1.1217,2.3783,1.2812,0.8861,1.2812],"text":"Company + A Invoice","words":[{"boundingBox":[0.8861,1.1232,1.6203,1.1232,1.6203,1.2812,0.8861,1.2812],"text":"Company","confidence":1},{"boundingBox":[1.6696,1.1242,1.7749,1.1242,1.7749,1.2473,1.6696,1.2473],"text":"A","confidence":1},{"boundingBox":[1.8389,1.1217,2.3783,1.1217,2.3783,1.2485,1.8389,1.2485],"text":"Invoice","confidence":1}]},{"language":"en","boundingBox":[6.0211,1.0656,7.0357,1.0656,7.0357,1.2121,6.0211,1.2121],"text":"Invoice + For:","words":[{"boundingBox":[6.0211,1.0656,6.6362,1.0656,6.6362,1.2121,6.0211,1.2121],"text":"Invoice","confidence":1},{"boundingBox":[6.7147,1.0691,7.0357,1.0691,7.0357,1.2121,6.7147,1.2121],"text":"For:","confidence":1}]},{"language":"en","boundingBox":[0.8791,1.4825,1.5657,1.4825,1.5657,1.6155,0.8791,1.6155],"text":"Address:","words":[{"boundingBox":[0.8791,1.4825,1.5657,1.4825,1.5657,1.6155,0.8791,1.6155],"text":"Address:","confidence":1}]},{"language":"en","boundingBox":[6.0164,1.4503,6.8967,1.4503,6.8967,1.5931,6.0164,1.5931],"text":"Bilbo + Baggins","words":[{"boundingBox":[6.0164,1.4503,6.3392,1.4503,6.3392,1.5649,6.0164,1.5649],"text":"Bilbo","confidence":1},{"boundingBox":[6.3960,1.4556,6.8967,1.4556,6.8967,1.5931,6.3960,1.5931],"text":"Baggins","confidence":1}]},{"language":"en","boundingBox":[6.0165,1.6707,7.1006,1.6707,7.1006,1.7854,6.0165,1.7854],"text":"123 + Hobbit Lane","words":[{"boundingBox":[6.0165,1.6772,6.2434,1.6772,6.2434,1.7854,6.0165,1.7854],"text":"123","confidence":1},{"boundingBox":[6.3033,1.6707,6.7463,1.6707,6.7463,1.7854,6.3033,1.7854],"text":"Hobbit","confidence":1},{"boundingBox":[6.8030,1.6782,7.1006,1.6782,7.1006,1.7854,6.8030,1.7854],"text":"Lane","confidence":1}]},{"language":"en","boundingBox":[0.8852,1.8460,1.713,1.8460,1.713,1.9554,0.8852,1.9554],"text":"567 + Main St.","words":[{"boundingBox":[0.8852,1.8472,1.1203,1.8472,1.1203,1.9554,0.8852,1.9554],"text":"567","confidence":1},{"boundingBox":[1.1777,1.8460,1.5022,1.8460,1.5022,1.9554,1.1777,1.9554],"text":"Main","confidence":1},{"boundingBox":[1.5558,1.8472,1.713,1.8472,1.713,1.9554,1.5558,1.9554],"text":"St.","confidence":1}]},{"language":"en","boundingBox":[6.0164,1.8910,6.9793,1.8910,6.9793,2.0275,6.0164,2.0275],"text":"Redmond, + WA","words":[{"boundingBox":[6.0164,1.8910,6.6861,1.8910,6.6861,2.0275,6.0164,2.0275],"text":"Redmond,","confidence":1},{"boundingBox":[6.7408,1.8982,6.9793,1.8982,6.9793,2.0044,6.7408,2.0044],"text":"WA","confidence":1}]},{"language":"en","boundingBox":[0.891,2.0610,1.8537,2.0610,1.8537,2.1975,0.891,2.1975],"text":"Redmond, + WA","words":[{"boundingBox":[0.891,2.0610,1.5605,2.0610,1.5605,2.1975,0.891,2.1975],"text":"Redmond,","confidence":1},{"boundingBox":[1.6152,2.0682,1.8537,2.0682,1.8537,2.1744,1.6152,2.1744],"text":"WA","confidence":1}]},{"language":"en","boundingBox":[6.0105,2.1187,6.9371,2.1187,6.9371,2.2254,6.0105,2.2254],"text":"555-555-5555","words":[{"boundingBox":[6.0105,2.1187,6.9371,2.1187,6.9371,2.2254,6.0105,2.2254],"text":"555-555-5555","confidence":1}]},{"language":"en","boundingBox":[0.8852,2.2887,1.8119,2.2887,1.8119,2.3954,0.8852,2.3954],"text":"555-555-5555","words":[{"boundingBox":[0.8852,2.2887,1.8119,2.2887,1.8119,2.3954,0.8852,2.3954],"text":"555-555-5555","confidence":1}]},{"language":"en","boundingBox":[1.0943,3.0018,1.3842,3.0018,1.3842,3.1090,1.0943,3.1090],"text":"Item","words":[{"boundingBox":[1.0943,3.0018,1.3842,3.0018,1.3842,3.1090,1.0943,3.1090],"text":"Item","confidence":1}]},{"language":"en","boundingBox":[3.2527,2.9996,3.8367,2.9996,3.8367,3.1371,3.2527,3.1371],"text":"Quantity","words":[{"boundingBox":[3.2527,2.9996,3.8367,2.9996,3.8367,3.1371,3.2527,3.1371],"text":"Quantity","confidence":1}]},{"language":"en","boundingBox":[5.4230,2.9996,5.7372,2.9996,5.7372,3.1090,5.4230,3.1090],"text":"Price","words":[{"boundingBox":[5.4230,2.9996,5.7372,2.9996,5.7372,3.1090,5.4230,3.1090],"text":"Price","confidence":1}]},{"language":"en","boundingBox":[1.0832,3.2118,1.174,3.2118,1.174,3.3180,1.0832,3.3180],"text":"A","words":[{"boundingBox":[1.0832,3.2118,1.174,3.2118,1.174,3.3180,1.0832,3.3180],"text":"A","confidence":1}]},{"language":"en","boundingBox":[3.2589,3.2116,3.3202,3.2116,3.3202,3.3176,3.2589,3.3176],"text":"1","words":[{"boundingBox":[3.2589,3.2116,3.3202,3.2116,3.3202,3.3176,3.2589,3.3176],"text":"1","confidence":1}]},{"language":"en","boundingBox":[5.4232,3.2108,5.7784,3.2108,5.7784,3.3190,5.4232,3.3190],"text":"10.99","words":[{"boundingBox":[5.4232,3.2108,5.7784,3.2108,5.7784,3.3190,5.4232,3.3190],"text":"10.99","confidence":1}]},{"language":"en","boundingBox":[1.0943,3.4256,1.1637,3.4256,1.1637,3.5310,1.0943,3.5310],"text":"B","words":[{"boundingBox":[1.0943,3.4256,1.1637,3.4256,1.1637,3.5310,1.0943,3.5310],"text":"B","confidence":1}]},{"language":"en","boundingBox":[3.2541,3.4241,3.3199,3.4241,3.3199,3.5310,3.2541,3.5310],"text":"2","words":[{"boundingBox":[3.2541,3.4241,3.3199,3.4241,3.3199,3.5310,3.2541,3.5310],"text":"2","confidence":1}]},{"language":"en","boundingBox":[5.4232,3.4241,5.7789,3.4241,5.7789,3.5323,5.4232,3.5323],"text":"14.67","words":[{"boundingBox":[5.4232,3.4241,5.7789,3.4241,5.7789,3.5323,5.4232,3.5323],"text":"14.67","confidence":1}]},{"language":"en","boundingBox":[1.0882,3.6343,1.1647,3.6343,1.1647,3.7421,1.0882,3.7421],"text":"C","words":[{"boundingBox":[1.0882,3.6343,1.1647,3.6343,1.1647,3.7421,1.0882,3.7421],"text":"C","confidence":1}]},{"language":"en","boundingBox":[3.2486,3.6351,3.3244,3.6351,3.3244,3.7413,3.2486,3.7413],"text":"4","words":[{"boundingBox":[3.2486,3.6351,3.3244,3.6351,3.3244,3.7413,3.2486,3.7413],"text":"4","confidence":1}]},{"language":"en","boundingBox":[5.4232,3.6341,5.7800,3.6341,5.7800,3.7423,5.4232,3.7423],"text":"15.66","words":[{"boundingBox":[5.4232,3.6341,5.7800,3.6341,5.7800,3.7423,5.4232,3.7423],"text":"15.66","confidence":1}]},{"language":"en","boundingBox":[1.0943,3.8456,1.1753,3.8456,1.1753,3.9510,1.0943,3.9510],"text":"D","words":[{"boundingBox":[1.0943,3.8456,1.1753,3.8456,1.1753,3.9510,1.0943,3.9510],"text":"D","confidence":1}]},{"language":"en","boundingBox":[3.2589,3.8450,3.3202,3.8450,3.3202,3.9510,3.2589,3.9510],"text":"1","words":[{"boundingBox":[3.2589,3.8450,3.3202,3.8450,3.3202,3.9510,3.2589,3.9510],"text":"1","confidence":1}]},{"language":"en","boundingBox":[5.4232,3.8441,5.7809,3.8441,5.7809,3.9523,5.4232,3.9523],"text":"12.00","words":[{"boundingBox":[5.4232,3.8441,5.7809,3.8441,5.7809,3.9523,5.4232,3.9523],"text":"12.00","confidence":1}]},{"language":"en","boundingBox":[1.0943,4.0561,1.153,4.0561,1.153,4.1614,1.0943,4.1614],"text":"E","words":[{"boundingBox":[1.0943,4.0561,1.153,4.0561,1.153,4.1614,1.0943,4.1614],"text":"E","confidence":1}]},{"language":"en","boundingBox":[3.2486,4.0556,3.3244,4.0556,3.3244,4.1617,3.2486,4.1617],"text":"4","words":[{"boundingBox":[3.2486,4.0556,3.3244,4.0556,3.3244,4.1617,3.2486,4.1617],"text":"4","confidence":1}]},{"language":"en","boundingBox":[5.4232,4.0546,5.7810,4.0546,5.7810,4.1627,5.4232,4.1627],"text":"10.00","words":[{"boundingBox":[5.4232,4.0546,5.7810,4.0546,5.7810,4.1627,5.4232,4.1627],"text":"10.00","confidence":1}]},{"language":"en","boundingBox":[1.0943,4.2661,1.1497,4.2661,1.1497,4.3717,1.0943,4.3717],"text":"F","words":[{"boundingBox":[1.0943,4.2661,1.1497,4.2661,1.1497,4.3717,1.0943,4.3717],"text":"F","confidence":1}]},{"language":"en","boundingBox":[3.2534,4.2646,3.3226,4.2646,3.3226,4.3727,3.2534,4.3727],"text":"6","words":[{"boundingBox":[3.2534,4.2646,3.3226,4.2646,3.3226,4.3727,3.2534,4.3727],"text":"6","confidence":1}]},{"language":"en","boundingBox":[5.4232,4.2646,5.7809,4.2646,5.7809,4.3727,5.4232,4.3727],"text":"12.00","words":[{"boundingBox":[5.4232,4.2646,5.7809,4.2646,5.7809,4.3727,5.4232,4.3727],"text":"12.00","confidence":1}]},{"language":"en","boundingBox":[1.0877,4.4746,1.1735,4.4746,1.1735,4.5827,1.0877,4.5827],"text":"G","words":[{"boundingBox":[1.0877,4.4746,1.1735,4.4746,1.1735,4.5827,1.0877,4.5827],"text":"G","confidence":1}]},{"language":"en","boundingBox":[3.2514,4.4746,3.3224,4.4746,3.3224,4.5827,3.2514,4.5827],"text":"8","words":[{"boundingBox":[3.2514,4.4746,3.3224,4.4746,3.3224,4.5827,3.2514,4.5827],"text":"8","confidence":1}]},{"language":"en","boundingBox":[5.4184,4.4746,5.7810,4.4746,5.7810,4.5827,5.4184,4.5827],"text":"22.00","words":[{"boundingBox":[5.4184,4.4746,5.7810,4.4746,5.7810,4.5827,5.4184,4.5827],"text":"22.00","confidence":1}]},{"language":"en","boundingBox":[5.5075,4.8981,6.6320,4.8981,6.6320,5.0131,5.5075,5.0131],"text":"Subtotal: + 300.00","words":[{"boundingBox":[5.5075,4.8981,6.1249,4.8981,6.1249,5.0131,5.5075,5.0131],"text":"Subtotal:","confidence":1},{"boundingBox":[6.1794,4.9042,6.6320,4.9042,6.6320,5.0131,6.1794,5.0131],"text":"300.00","confidence":1}]},{"language":"en","boundingBox":[5.5034,5.1245,6.2022,5.1245,6.2022,5.2333,5.5034,5.2333],"text":"Tax: + 30.00","words":[{"boundingBox":[5.5034,5.1263,5.7812,5.1263,5.7812,5.2333,5.5034,5.2333],"text":"Tax:","confidence":1},{"boundingBox":[5.8360,5.1245,6.2022,5.1245,6.2022,5.2333,5.8360,5.2333],"text":"30.00","confidence":1}]},{"language":"en","boundingBox":[5.5034,5.3412,6.2587,5.3412,6.2587,5.481,5.5034,5.481],"text":"Tip: + 100.00","words":[{"boundingBox":[5.5034,5.3412,5.7515,5.3412,5.7515,5.481,5.5034,5.481],"text":"Tip:","confidence":1},{"boundingBox":[5.8110,5.3445,6.2587,5.3445,6.2587,5.4533,5.8110,5.4533],"text":"100.00","confidence":1}]},{"language":"en","boundingBox":[5.5034,5.5583,6.3987,5.5583,6.3987,5.6733,5.5034,5.6733],"text":"Total: + 430.00","words":[{"boundingBox":[5.5034,5.5583,5.8915,5.5583,5.8915,5.6733,5.5034,5.6733],"text":"Total:","confidence":1},{"boundingBox":[5.9420,5.5645,6.3987,5.5645,6.3987,5.6733,5.9420,5.6733],"text":"430.00","confidence":1}]},{"language":"en","boundingBox":[1.0055,6.6553,3.8342,6.6553,3.8342,6.7981,1.0055,6.7981],"text":"Signature: + ____ Bilbo Baggins__________","words":[{"boundingBox":[1.0055,6.6581,1.6987,6.6581,1.6987,6.7981,1.0055,6.7981],"text":"Signature:","confidence":1},{"boundingBox":[1.7470,6.7829,2.0809,6.7829,2.0809,6.7981,1.7470,6.7981],"text":"____","confidence":1},{"boundingBox":[2.0925,6.6553,2.4278,6.6553,2.4278,6.7703,2.0925,6.7703],"text":"Bilbo","confidence":1},{"boundingBox":[2.4823,6.6581,3.8342,6.6581,3.8342,6.7981,2.4823,6.7981],"text":"Baggins__________","confidence":1}]}]},{"page":2,"language":"en","angle":0,"width":8.4967,"height":10.9967,"unit":"inch","lines":[]},{"page":3,"language":"en","angle":0,"width":8.5,"height":11,"unit":"inch","lines":[{"language":"en","boundingBox":[0.8861,1.1217,2.3734,1.1217,2.3734,1.2812,0.8861,1.2812],"text":"Company + B Invoice","words":[{"boundingBox":[0.8861,1.1232,1.6203,1.1232,1.6203,1.2812,0.8861,1.2812],"text":"Company","confidence":1},{"boundingBox":[1.6836,1.1248,1.7640,1.1248,1.7640,1.2469,1.6836,1.2469],"text":"B","confidence":1},{"boundingBox":[1.8336,1.1217,2.3734,1.1217,2.3734,1.2485,1.8336,1.2485],"text":"Invoice","confidence":1}]},{"language":"en","boundingBox":[6.0211,1.0656,7.0357,1.0656,7.0357,1.2121,6.0211,1.2121],"text":"Invoice + For:","words":[{"boundingBox":[6.0211,1.0656,6.6362,1.0656,6.6362,1.2121,6.0211,1.2121],"text":"Invoice","confidence":1},{"boundingBox":[6.7147,1.0691,7.0357,1.0691,7.0357,1.2121,6.7147,1.2121],"text":"For:","confidence":1}]},{"language":"en","boundingBox":[0.8791,1.4825,1.5657,1.4825,1.5657,1.6155,0.8791,1.6155],"text":"Address:","words":[{"boundingBox":[0.8791,1.4825,1.5657,1.4825,1.5657,1.6155,0.8791,1.6155],"text":"Address:","confidence":1}]},{"language":"en","boundingBox":[6.0164,1.4506,6.9506,1.4506,6.9506,1.5931,6.0164,1.5931],"text":"Frodo + Baggins","words":[{"boundingBox":[6.0164,1.4506,6.3895,1.4506,6.3895,1.5649,6.0164,1.5649],"text":"Frodo","confidence":1},{"boundingBox":[6.4500,1.4556,6.9506,1.4556,6.9506,1.5931,6.4500,1.5931],"text":"Baggins","confidence":1}]},{"language":"en","boundingBox":[6.0165,1.6707,7.1006,1.6707,7.1006,1.7854,6.0165,1.7854],"text":"123 + Hobbit Lane","words":[{"boundingBox":[6.0165,1.6772,6.2434,1.6772,6.2434,1.7854,6.0165,1.7854],"text":"123","confidence":1},{"boundingBox":[6.3033,1.6707,6.7463,1.6707,6.7463,1.7854,6.3033,1.7854],"text":"Hobbit","confidence":1},{"boundingBox":[6.8030,1.6782,7.1006,1.6782,7.1006,1.7854,6.8030,1.7854],"text":"Lane","confidence":1}]},{"language":"en","boundingBox":[0.8852,1.8460,1.713,1.8460,1.713,1.9554,0.8852,1.9554],"text":"567 + Main St.","words":[{"boundingBox":[0.8852,1.8472,1.1203,1.8472,1.1203,1.9554,0.8852,1.9554],"text":"567","confidence":1},{"boundingBox":[1.1777,1.8460,1.5022,1.8460,1.5022,1.9554,1.1777,1.9554],"text":"Main","confidence":1},{"boundingBox":[1.5558,1.8472,1.713,1.8472,1.713,1.9554,1.5558,1.9554],"text":"St.","confidence":1}]},{"language":"en","boundingBox":[6.0164,1.8910,6.9793,1.8910,6.9793,2.0275,6.0164,2.0275],"text":"Redmond, + WA","words":[{"boundingBox":[6.0164,1.8910,6.6861,1.8910,6.6861,2.0275,6.0164,2.0275],"text":"Redmond,","confidence":1},{"boundingBox":[6.7408,1.8982,6.9793,1.8982,6.9793,2.0044,6.7408,2.0044],"text":"WA","confidence":1}]},{"language":"en","boundingBox":[0.891,2.0610,1.8537,2.0610,1.8537,2.1975,0.891,2.1975],"text":"Redmond, + WA","words":[{"boundingBox":[0.891,2.0610,1.5605,2.0610,1.5605,2.1975,0.891,2.1975],"text":"Redmond,","confidence":1},{"boundingBox":[1.6152,2.0682,1.8537,2.0682,1.8537,2.1744,1.6152,2.1744],"text":"WA","confidence":1}]},{"language":"en","boundingBox":[6.0105,2.1187,6.9371,2.1187,6.9371,2.2254,6.0105,2.2254],"text":"555-555-5555","words":[{"boundingBox":[6.0105,2.1187,6.9371,2.1187,6.9371,2.2254,6.0105,2.2254],"text":"555-555-5555","confidence":1}]},{"language":"en","boundingBox":[0.8852,2.2887,1.8119,2.2887,1.8119,2.3954,0.8852,2.3954],"text":"555-555-5555","words":[{"boundingBox":[0.8852,2.2887,1.8119,2.2887,1.8119,2.3954,0.8852,2.3954],"text":"555-555-5555","confidence":1}]},{"language":"en","boundingBox":[1.0943,3.0018,1.3842,3.0018,1.3842,3.1090,1.0943,3.1090],"text":"Item","words":[{"boundingBox":[1.0943,3.0018,1.3842,3.0018,1.3842,3.1090,1.0943,3.1090],"text":"Item","confidence":1}]},{"language":"en","boundingBox":[3.2527,2.9996,3.8367,2.9996,3.8367,3.1371,3.2527,3.1371],"text":"Quantity","words":[{"boundingBox":[3.2527,2.9996,3.8367,2.9996,3.8367,3.1371,3.2527,3.1371],"text":"Quantity","confidence":1}]},{"language":"en","boundingBox":[5.4230,2.9996,5.7372,2.9996,5.7372,3.1090,5.4230,3.1090],"text":"Price","words":[{"boundingBox":[5.4230,2.9996,5.7372,2.9996,5.7372,3.1090,5.4230,3.1090],"text":"Price","confidence":1}]},{"language":"en","boundingBox":[1.0832,3.2118,1.174,3.2118,1.174,3.3180,1.0832,3.3180],"text":"A","words":[{"boundingBox":[1.0832,3.2118,1.174,3.2118,1.174,3.3180,1.0832,3.3180],"text":"A","confidence":1}]},{"language":"en","boundingBox":[3.2589,3.2108,3.4067,3.2108,3.4067,3.3190,3.2589,3.3190],"text":"10","words":[{"boundingBox":[3.2589,3.2108,3.4067,3.2108,3.4067,3.3190,3.2589,3.3190],"text":"10","confidence":1}]},{"language":"en","boundingBox":[5.4232,3.2108,5.8617,3.2108,5.8617,3.3190,5.4232,3.3190],"text":"100.99","words":[{"boundingBox":[5.4232,3.2108,5.8617,3.2108,5.8617,3.3190,5.4232,3.3190],"text":"100.99","confidence":1}]},{"language":"en","boundingBox":[1.0943,3.4256,1.1637,3.4256,1.1637,3.5310,1.0943,3.5310],"text":"B","words":[{"boundingBox":[1.0943,3.4256,1.1637,3.4256,1.1637,3.5310,1.0943,3.5310],"text":"B","confidence":1}]},{"language":"en","boundingBox":[3.2541,3.4241,3.4067,3.4241,3.4067,3.5323,3.2541,3.5323],"text":"20","words":[{"boundingBox":[3.2541,3.4241,3.4067,3.4241,3.4067,3.5323,3.2541,3.5323],"text":"20","confidence":1}]},{"language":"en","boundingBox":[5.4232,3.4241,5.8622,3.4241,5.8622,3.5323,5.4232,3.5323],"text":"140.67","words":[{"boundingBox":[5.4232,3.4241,5.8622,3.4241,5.8622,3.5323,5.4232,3.5323],"text":"140.67","confidence":1}]},{"language":"en","boundingBox":[1.0882,3.6343,1.1647,3.6343,1.1647,3.7421,1.0882,3.7421],"text":"C","words":[{"boundingBox":[1.0882,3.6343,1.1647,3.6343,1.1647,3.7421,1.0882,3.7421],"text":"C","confidence":1}]},{"language":"en","boundingBox":[3.2486,3.6341,3.4067,3.6341,3.4067,3.7423,3.2486,3.7423],"text":"40","words":[{"boundingBox":[3.2486,3.6341,3.4067,3.6341,3.4067,3.7423,3.2486,3.7423],"text":"40","confidence":1}]},{"language":"en","boundingBox":[5.4232,3.6341,5.8634,3.6341,5.8634,3.7423,5.4232,3.7423],"text":"150.66","words":[{"boundingBox":[5.4232,3.6341,5.8634,3.6341,5.8634,3.7423,5.4232,3.7423],"text":"150.66","confidence":1}]},{"language":"en","boundingBox":[1.0943,3.8456,1.1753,3.8456,1.1753,3.9510,1.0943,3.9510],"text":"D","words":[{"boundingBox":[1.0943,3.8456,1.1753,3.8456,1.1753,3.9510,1.0943,3.9510],"text":"D","confidence":1}]},{"language":"en","boundingBox":[3.2589,3.8441,3.4067,3.8441,3.4067,3.9523,3.2589,3.9523],"text":"10","words":[{"boundingBox":[3.2589,3.8441,3.4067,3.8441,3.4067,3.9523,3.2589,3.9523],"text":"10","confidence":1}]},{"language":"en","boundingBox":[5.4232,3.8441,5.8642,3.8441,5.8642,3.9523,5.4232,3.9523],"text":"120.00","words":[{"boundingBox":[5.4232,3.8441,5.8642,3.8441,5.8642,3.9523,5.4232,3.9523],"text":"120.00","confidence":1}]},{"language":"en","boundingBox":[1.0943,4.0561,1.153,4.0561,1.153,4.1614,1.0943,4.1614],"text":"E","words":[{"boundingBox":[1.0943,4.0561,1.153,4.0561,1.153,4.1614,1.0943,4.1614],"text":"E","confidence":1}]},{"language":"en","boundingBox":[3.2486,4.0546,3.4067,4.0546,3.4067,4.1627,3.2486,4.1627],"text":"40","words":[{"boundingBox":[3.2486,4.0546,3.4067,4.0546,3.4067,4.1627,3.2486,4.1627],"text":"40","confidence":1}]},{"language":"en","boundingBox":[5.4232,4.0546,5.8644,4.0546,5.8644,4.1627,5.4232,4.1627],"text":"100.00","words":[{"boundingBox":[5.4232,4.0546,5.8644,4.0546,5.8644,4.1627,5.4232,4.1627],"text":"100.00","confidence":1}]},{"language":"en","boundingBox":[1.0943,4.2661,1.1497,4.2661,1.1497,4.3717,1.0943,4.3717],"text":"F","words":[{"boundingBox":[1.0943,4.2661,1.1497,4.2661,1.1497,4.3717,1.0943,4.3717],"text":"F","confidence":1}]},{"language":"en","boundingBox":[3.2534,4.2646,3.4067,4.2646,3.4067,4.3727,3.2534,4.3727],"text":"60","words":[{"boundingBox":[3.2534,4.2646,3.4067,4.2646,3.4067,4.3727,3.2534,4.3727],"text":"60","confidence":1}]},{"language":"en","boundingBox":[5.4232,4.2646,5.8642,4.2646,5.8642,4.3727,5.4232,4.3727],"text":"120.00","words":[{"boundingBox":[5.4232,4.2646,5.8642,4.2646,5.8642,4.3727,5.4232,4.3727],"text":"120.00","confidence":1}]},{"language":"en","boundingBox":[1.0877,4.4746,1.1735,4.4746,1.1735,4.5827,1.0877,4.5827],"text":"G","words":[{"boundingBox":[1.0877,4.4746,1.1735,4.4746,1.1735,4.5827,1.0877,4.5827],"text":"G","confidence":1}]},{"language":"en","boundingBox":[3.2514,4.4746,3.4067,4.4746,3.4067,4.5827,3.2514,4.5827],"text":"80","words":[{"boundingBox":[3.2514,4.4746,3.4067,4.4746,3.4067,4.5827,3.2514,4.5827],"text":"80","confidence":1}]},{"language":"en","boundingBox":[5.4184,4.4746,5.8644,4.4746,5.8644,4.5827,5.4184,4.5827],"text":"220.00","words":[{"boundingBox":[5.4184,4.4746,5.8644,4.4746,5.8644,4.5827,5.4184,4.5827],"text":"220.00","confidence":1}]},{"language":"en","boundingBox":[5.5075,4.8981,6.7158,4.8981,6.7158,5.0131,5.5075,5.0131],"text":"Subtotal: + 3000.00","words":[{"boundingBox":[5.5075,4.8981,6.1249,4.8981,6.1249,5.0131,5.5075,5.0131],"text":"Subtotal:","confidence":1},{"boundingBox":[6.1794,4.9042,6.7158,4.9042,6.7158,5.0131,6.1794,5.0131],"text":"3000.00","confidence":1}]},{"language":"en","boundingBox":[5.5034,5.1245,6.2887,5.1245,6.2887,5.2333,5.5034,5.2333],"text":"Tax: + 300.00","words":[{"boundingBox":[5.5034,5.1263,5.7812,5.1263,5.7812,5.2333,5.5034,5.2333],"text":"Tax:","confidence":1},{"boundingBox":[5.8360,5.1245,6.2887,5.1245,6.2887,5.2333,5.8360,5.2333],"text":"300.00","confidence":1}]},{"language":"en","boundingBox":[5.5034,5.3412,6.3422,5.3412,6.3422,5.481,5.5034,5.481],"text":"Tip: + 1000.00","words":[{"boundingBox":[5.5034,5.3412,5.7515,5.3412,5.7515,5.481,5.5034,5.481],"text":"Tip:","confidence":1},{"boundingBox":[5.8110,5.3445,6.3422,5.3445,6.3422,5.4533,5.8110,5.4533],"text":"1000.00","confidence":1}]},{"language":"en","boundingBox":[5.5034,5.5583,6.4825,5.5583,6.4825,5.6733,5.5034,5.6733],"text":"Total: + 4300.00","words":[{"boundingBox":[5.5034,5.5583,5.8915,5.5583,5.8915,5.6733,5.5034,5.6733],"text":"Total:","confidence":1},{"boundingBox":[5.9420,5.5645,6.4825,5.5645,6.4825,5.6733,5.9420,5.6733],"text":"4300.00","confidence":1}]},{"language":"en","boundingBox":[1.0055,6.6556,3.8842,6.6556,3.8842,6.7981,1.0055,6.7981],"text":"Signature: + ____ Frodo Baggins__________","words":[{"boundingBox":[1.0055,6.6581,1.6987,6.6581,1.6987,6.7981,1.0055,6.7981],"text":"Signature:","confidence":1},{"boundingBox":[1.7470,6.7829,2.0809,6.7829,2.0809,6.7981,1.7470,6.7981],"text":"____","confidence":1},{"boundingBox":[2.0925,6.6556,2.4778,6.6556,2.4778,6.7703,2.0925,6.7703],"text":"Frodo","confidence":1},{"boundingBox":[2.5325,6.6581,3.8842,6.6581,3.8842,6.7981,2.5325,6.7981],"text":"Baggins__________","confidence":1}]}]}],"pageResults":[{"page":1,"tables":[{"rows":8,"columns":3,"cells":[{"rowIndex":0,"columnIndex":0,"text":"Item","boundingBox":[1.0037,2.9443,3.1681,2.9443,3.1681,3.1543,1.0037,3.1543],"elements":["#/readResults/0/lines/10/words/0"]},{"rowIndex":0,"columnIndex":1,"text":"Quantity","boundingBox":[3.1681,2.9443,5.3353,2.9443,5.3353,3.1543,3.1681,3.1543],"elements":["#/readResults/0/lines/11/words/0"]},{"rowIndex":0,"columnIndex":2,"text":"Price","boundingBox":[5.3353,2.9443,7.4997,2.9443,7.4997,3.1543,5.3353,3.1543],"elements":["#/readResults/0/lines/12/words/0"]},{"rowIndex":1,"columnIndex":0,"text":"A","boundingBox":[1.0037,3.1543,3.1681,3.1543,3.1681,3.3643,1.0037,3.3643],"elements":["#/readResults/0/lines/13/words/0"]},{"rowIndex":1,"columnIndex":1,"text":"1","boundingBox":[3.1681,3.1543,5.3353,3.1543,5.3353,3.3643,3.1681,3.3643],"elements":["#/readResults/0/lines/14/words/0"]},{"rowIndex":1,"columnIndex":2,"text":"10.99","boundingBox":[5.3353,3.1543,7.4997,3.1543,7.4997,3.3643,5.3353,3.3643],"elements":["#/readResults/0/lines/15/words/0"]},{"rowIndex":2,"columnIndex":0,"text":"B","boundingBox":[1.0037,3.3643,3.1681,3.3643,3.1681,3.5776,1.0037,3.5776],"elements":["#/readResults/0/lines/16/words/0"]},{"rowIndex":2,"columnIndex":1,"text":"2","boundingBox":[3.1681,3.3643,5.3353,3.3643,5.3353,3.5776,3.1681,3.5776],"elements":["#/readResults/0/lines/17/words/0"]},{"rowIndex":2,"columnIndex":2,"text":"14.67","boundingBox":[5.3353,3.3643,7.4997,3.3643,7.4997,3.5776,5.3353,3.5776],"elements":["#/readResults/0/lines/18/words/0"]},{"rowIndex":3,"columnIndex":0,"text":"C","boundingBox":[1.0037,3.5776,3.1681,3.5776,3.1681,3.7876,1.0037,3.7876],"elements":["#/readResults/0/lines/19/words/0"]},{"rowIndex":3,"columnIndex":1,"text":"4","boundingBox":[3.1681,3.5776,5.3353,3.5776,5.3353,3.7876,3.1681,3.7876],"elements":["#/readResults/0/lines/20/words/0"]},{"rowIndex":3,"columnIndex":2,"text":"15.66","boundingBox":[5.3353,3.5776,7.4997,3.5776,7.4997,3.7876,5.3353,3.7876],"elements":["#/readResults/0/lines/21/words/0"]},{"rowIndex":4,"columnIndex":0,"text":"D","boundingBox":[1.0037,3.7876,3.1681,3.7876,3.1681,3.9976,1.0037,3.9976],"elements":["#/readResults/0/lines/22/words/0"]},{"rowIndex":4,"columnIndex":1,"text":"1","boundingBox":[3.1681,3.7876,5.3353,3.7876,5.3353,3.9976,3.1681,3.9976],"elements":["#/readResults/0/lines/23/words/0"]},{"rowIndex":4,"columnIndex":2,"text":"12.00","boundingBox":[5.3353,3.7876,7.4997,3.7876,7.4997,3.9976,5.3353,3.9976],"elements":["#/readResults/0/lines/24/words/0"]},{"rowIndex":5,"columnIndex":0,"text":"E","boundingBox":[1.0037,3.9976,3.1681,3.9976,3.1681,4.2081,1.0037,4.2081],"elements":["#/readResults/0/lines/25/words/0"]},{"rowIndex":5,"columnIndex":1,"text":"4","boundingBox":[3.1681,3.9976,5.3353,3.9976,5.3353,4.2081,3.1681,4.2081],"elements":["#/readResults/0/lines/26/words/0"]},{"rowIndex":5,"columnIndex":2,"text":"10.00","boundingBox":[5.3353,3.9976,7.4997,3.9976,7.4997,4.2081,5.3353,4.2081],"elements":["#/readResults/0/lines/27/words/0"]},{"rowIndex":6,"columnIndex":0,"text":"F","boundingBox":[1.0037,4.2081,3.1681,4.2081,3.1681,4.4181,1.0037,4.4181],"elements":["#/readResults/0/lines/28/words/0"]},{"rowIndex":6,"columnIndex":1,"text":"6","boundingBox":[3.1681,4.2081,5.3353,4.2081,5.3353,4.4181,3.1681,4.4181],"elements":["#/readResults/0/lines/29/words/0"]},{"rowIndex":6,"columnIndex":2,"text":"12.00","boundingBox":[5.3353,4.2081,7.4997,4.2081,7.4997,4.4181,5.3353,4.4181],"elements":["#/readResults/0/lines/30/words/0"]},{"rowIndex":7,"columnIndex":0,"text":"G","boundingBox":[1.0037,4.4181,3.1681,4.4181,3.1681,4.6281,1.0037,4.6281],"elements":["#/readResults/0/lines/31/words/0"]},{"rowIndex":7,"columnIndex":1,"text":"8","boundingBox":[3.1681,4.4181,5.3353,4.4181,5.3353,4.6281,3.1681,4.6281],"elements":["#/readResults/0/lines/32/words/0"]},{"rowIndex":7,"columnIndex":2,"text":"22.00","boundingBox":[5.3353,4.4181,7.4997,4.4181,7.4997,4.6281,5.3353,4.6281],"elements":["#/readResults/0/lines/33/words/0"]}]}]},{"page":2,"tables":[]},{"page":3,"tables":[{"rows":8,"columns":3,"cells":[{"rowIndex":0,"columnIndex":0,"text":"Item","boundingBox":[1.0037,2.9443,3.1681,2.9443,3.1681,3.1543,1.0037,3.1543],"elements":["#/readResults/2/lines/10/words/0"]},{"rowIndex":0,"columnIndex":1,"text":"Quantity","boundingBox":[3.1681,2.9443,5.3353,2.9443,5.3353,3.1543,3.1681,3.1543],"elements":["#/readResults/2/lines/11/words/0"]},{"rowIndex":0,"columnIndex":2,"text":"Price","boundingBox":[5.3353,2.9443,7.4997,2.9443,7.4997,3.1543,5.3353,3.1543],"elements":["#/readResults/2/lines/12/words/0"]},{"rowIndex":1,"columnIndex":0,"text":"A","boundingBox":[1.0037,3.1543,3.1681,3.1543,3.1681,3.3643,1.0037,3.3643],"elements":["#/readResults/2/lines/13/words/0"]},{"rowIndex":1,"columnIndex":1,"text":"10","boundingBox":[3.1681,3.1543,5.3353,3.1543,5.3353,3.3643,3.1681,3.3643],"elements":["#/readResults/2/lines/14/words/0"]},{"rowIndex":1,"columnIndex":2,"text":"100.99","boundingBox":[5.3353,3.1543,7.4997,3.1543,7.4997,3.3643,5.3353,3.3643],"elements":["#/readResults/2/lines/15/words/0"]},{"rowIndex":2,"columnIndex":0,"text":"B","boundingBox":[1.0037,3.3643,3.1681,3.3643,3.1681,3.5776,1.0037,3.5776],"elements":["#/readResults/2/lines/16/words/0"]},{"rowIndex":2,"columnIndex":1,"text":"20","boundingBox":[3.1681,3.3643,5.3353,3.3643,5.3353,3.5776,3.1681,3.5776],"elements":["#/readResults/2/lines/17/words/0"]},{"rowIndex":2,"columnIndex":2,"text":"140.67","boundingBox":[5.3353,3.3643,7.4997,3.3643,7.4997,3.5776,5.3353,3.5776],"elements":["#/readResults/2/lines/18/words/0"]},{"rowIndex":3,"columnIndex":0,"text":"C","boundingBox":[1.0037,3.5776,3.1681,3.5776,3.1681,3.7876,1.0037,3.7876],"elements":["#/readResults/2/lines/19/words/0"]},{"rowIndex":3,"columnIndex":1,"text":"40","boundingBox":[3.1681,3.5776,5.3353,3.5776,5.3353,3.7876,3.1681,3.7876],"elements":["#/readResults/2/lines/20/words/0"]},{"rowIndex":3,"columnIndex":2,"text":"150.66","boundingBox":[5.3353,3.5776,7.4997,3.5776,7.4997,3.7876,5.3353,3.7876],"elements":["#/readResults/2/lines/21/words/0"]},{"rowIndex":4,"columnIndex":0,"text":"D","boundingBox":[1.0037,3.7876,3.1681,3.7876,3.1681,3.9976,1.0037,3.9976],"elements":["#/readResults/2/lines/22/words/0"]},{"rowIndex":4,"columnIndex":1,"text":"10","boundingBox":[3.1681,3.7876,5.3353,3.7876,5.3353,3.9976,3.1681,3.9976],"elements":["#/readResults/2/lines/23/words/0"]},{"rowIndex":4,"columnIndex":2,"text":"120.00","boundingBox":[5.3353,3.7876,7.4997,3.7876,7.4997,3.9976,5.3353,3.9976],"elements":["#/readResults/2/lines/24/words/0"]},{"rowIndex":5,"columnIndex":0,"text":"E","boundingBox":[1.0037,3.9976,3.1681,3.9976,3.1681,4.2081,1.0037,4.2081],"elements":["#/readResults/2/lines/25/words/0"]},{"rowIndex":5,"columnIndex":1,"text":"40","boundingBox":[3.1681,3.9976,5.3353,3.9976,5.3353,4.2081,3.1681,4.2081],"elements":["#/readResults/2/lines/26/words/0"]},{"rowIndex":5,"columnIndex":2,"text":"100.00","boundingBox":[5.3353,3.9976,7.4997,3.9976,7.4997,4.2081,5.3353,4.2081],"elements":["#/readResults/2/lines/27/words/0"]},{"rowIndex":6,"columnIndex":0,"text":"F","boundingBox":[1.0037,4.2081,3.1681,4.2081,3.1681,4.4181,1.0037,4.4181],"elements":["#/readResults/2/lines/28/words/0"]},{"rowIndex":6,"columnIndex":1,"text":"60","boundingBox":[3.1681,4.2081,5.3353,4.2081,5.3353,4.4181,3.1681,4.4181],"elements":["#/readResults/2/lines/29/words/0"]},{"rowIndex":6,"columnIndex":2,"text":"120.00","boundingBox":[5.3353,4.2081,7.4997,4.2081,7.4997,4.4181,5.3353,4.4181],"elements":["#/readResults/2/lines/30/words/0"]},{"rowIndex":7,"columnIndex":0,"text":"G","boundingBox":[1.0037,4.4181,3.1681,4.4181,3.1681,4.6281,1.0037,4.6281],"elements":["#/readResults/2/lines/31/words/0"]},{"rowIndex":7,"columnIndex":1,"text":"80","boundingBox":[3.1681,4.4181,5.3353,4.4181,5.3353,4.6281,3.1681,4.6281],"elements":["#/readResults/2/lines/32/words/0"]},{"rowIndex":7,"columnIndex":2,"text":"220.00","boundingBox":[5.3353,4.4181,7.4997,4.4181,7.4997,4.6281,5.3353,4.6281],"elements":["#/readResults/2/lines/33/words/0"]}]}]}]}}' + headers: + apim-request-id: + - a2ce96ba-dc87-424f-849a-f8fb5de7bf80 + content-type: + - application/json; charset=utf-8 + date: + - Mon, 27 Apr 2020 23:06:59 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + transfer-encoding: + - chunked + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '108' + status: + code: 200 + message: OK +version: 1 diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_content.test_damaged_file_passed_as_bytes.yaml b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_content.test_damaged_file_passed_as_bytes.yaml new file mode 100644 index 000000000000..5ebffd0510fb --- /dev/null +++ b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_content.test_damaged_file_passed_as_bytes.yaml @@ -0,0 +1,42 @@ +interactions: +- request: + body: '%PDFUUU' + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '7' + Content-Type: + - application/pdf + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/layout/analyze + response: + body: + string: '{"error":{"code":"BadArgument","message":"Bad or unrecognizable request + JSON or binary file."}}' + headers: + apim-request-id: + - 100dcc45-7fa0-424b-8bc8-030eb44bccb8 + content-type: + - application/json; charset=utf-8 + date: + - Wed, 22 Apr 2020 22:21:05 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + transfer-encoding: + - chunked + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '4' + status: + code: 400 + message: Bad Request +version: 1 diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_content.test_damaged_file_passed_as_bytes_io.yaml b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_content.test_damaged_file_passed_as_bytes_io.yaml new file mode 100644 index 000000000000..64045d475708 --- /dev/null +++ b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_content.test_damaged_file_passed_as_bytes_io.yaml @@ -0,0 +1,47 @@ +interactions: +- request: + body: !!python/object/new:_io.BytesIO + state: !!python/tuple + - !!binary | + JVBERlVVVQ== + - 0 + - null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '7' + Content-Type: + - application/pdf + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/layout/analyze + response: + body: + string: '{"error":{"code":"BadArgument","message":"Bad or unrecognizable request + JSON or binary file."}}' + headers: + apim-request-id: + - ecf6a948-8913-441b-ae6f-63ddb0b5e895 + content-type: + - application/json; charset=utf-8 + date: + - Wed, 22 Apr 2020 22:23:35 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + transfer-encoding: + - chunked + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '4' + status: + code: 400 + message: Bad Request +version: 1 diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_content_async.test_blank_page.yaml b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_content_async.test_blank_page.yaml new file mode 100644 index 000000000000..6a92f89d05ad --- /dev/null +++ b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_content_async.test_blank_page.yaml @@ -0,0 +1,501 @@ +interactions: +- request: + body: !!binary | + JVBERi0xLjcNCiW1tbW1DQoxIDAgb2JqDQo8PC9UeXBlL0NhdGFsb2cvUGFnZXMgMiAwIFIvTGFu + Zyhlbi1VUykgL1N0cnVjdFRyZWVSb290IDEwIDAgUi9NYXJrSW5mbzw8L01hcmtlZCB0cnVlPj4v + TWV0YWRhdGEgMjAgMCBSL1ZpZXdlclByZWZlcmVuY2VzIDIxIDAgUj4+DQplbmRvYmoNCjIgMCBv + YmoNCjw8L1R5cGUvUGFnZXMvQ291bnQgMS9LaWRzWyAzIDAgUl0gPj4NCmVuZG9iag0KMyAwIG9i + ag0KPDwvVHlwZS9QYWdlL1BhcmVudCAyIDAgUi9SZXNvdXJjZXM8PC9Gb250PDwvRjEgNSAwIFI+ + Pi9FeHRHU3RhdGU8PC9HUzcgNyAwIFIvR1M4IDggMCBSPj4vUHJvY1NldFsvUERGL1RleHQvSW1h + Z2VCL0ltYWdlQy9JbWFnZUldID4+L01lZGlhQm94WyAwIDAgNjEyIDc5Ml0gL0NvbnRlbnRzIDQg + MCBSL0dyb3VwPDwvVHlwZS9Hcm91cC9TL1RyYW5zcGFyZW5jeS9DUy9EZXZpY2VSR0I+Pi9UYWJz + L1MvU3RydWN0UGFyZW50cyAwPj4NCmVuZG9iag0KNCAwIG9iag0KPDwvRmlsdGVyL0ZsYXRlRGVj + b2RlL0xlbmd0aCAxMzI+Pg0Kc3RyZWFtDQp4nC2MsQrCQBBE+4X9hynV4m73iJ4HIUUuMSgEFA8s + xFJTKaj/D67iFAPDPB78HnXtx7ztIE2Dtst4MomTb5IGCFbWMQW8rkynBR5MbWHyG4WqkwrlxqTG + CRQxOAkVoiS3tOdu3HCMmN7mxPRb6/8amM4zzC8oO6bejAcm9GPGB3fjHKoNCmVuZHN0cmVhbQ0K + ZW5kb2JqDQo1IDAgb2JqDQo8PC9UeXBlL0ZvbnQvU3VidHlwZS9UcnVlVHlwZS9OYW1lL0YxL0Jh + c2VGb250L0JDREVFRStDYWxpYnJpL0VuY29kaW5nL1dpbkFuc2lFbmNvZGluZy9Gb250RGVzY3Jp + cHRvciA2IDAgUi9GaXJzdENoYXIgMzIvTGFzdENoYXIgMzIvV2lkdGhzIDE4IDAgUj4+DQplbmRv + YmoNCjYgMCBvYmoNCjw8L1R5cGUvRm9udERlc2NyaXB0b3IvRm9udE5hbWUvQkNERUVFK0NhbGli + cmkvRmxhZ3MgMzIvSXRhbGljQW5nbGUgMC9Bc2NlbnQgNzUwL0Rlc2NlbnQgLTI1MC9DYXBIZWln + aHQgNzUwL0F2Z1dpZHRoIDUyMS9NYXhXaWR0aCAxNzQzL0ZvbnRXZWlnaHQgNDAwL1hIZWlnaHQg + MjUwL1N0ZW1WIDUyL0ZvbnRCQm94WyAtNTAzIC0yNTAgMTI0MCA3NTBdIC9Gb250RmlsZTIgMTkg + MCBSPj4NCmVuZG9iag0KNyAwIG9iag0KPDwvVHlwZS9FeHRHU3RhdGUvQk0vTm9ybWFsL2NhIDE+ + Pg0KZW5kb2JqDQo4IDAgb2JqDQo8PC9UeXBlL0V4dEdTdGF0ZS9CTS9Ob3JtYWwvQ0EgMT4+DQpl + bmRvYmoNCjkgMCBvYmoNCjw8L0F1dGhvcihLcmlzdGEgUHJhdGljbykgL0NyZWF0b3Io/v8ATQBp + AGMAcgBvAHMAbwBmAHQArgAgAFcAbwByAGQAIABmAG8AcgAgAE8AZgBmAGkAYwBlACAAMwA2ADUp + IC9DcmVhdGlvbkRhdGUoRDoyMDIwMDMyMDEwNDQ0Ni0wNycwMCcpIC9Nb2REYXRlKEQ6MjAyMDAz + MjAxMDQ0NDYtMDcnMDAnKSAvUHJvZHVjZXIo/v8ATQBpAGMAcgBvAHMAbwBmAHQArgAgAFcAbwBy + AGQAIABmAG8AcgAgAE8AZgBmAGkAYwBlACAAMwA2ADUpID4+DQplbmRvYmoNCjE3IDAgb2JqDQo8 + PC9UeXBlL09ialN0bS9OIDcvRmlyc3QgNDYvRmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0aCAyOTY+ + Pg0Kc3RyZWFtDQp4nG1R0WrCMBR9F/yH+we3sa1jIMKYyoZYSivsofgQ610NtomkKejfL3ftsANf + wjk355ycJCKGAEQEsQDhQRCD8Oh1DmIGUTgDEUIU++EcopcAFgtMWR1AhjmmuL9fCXNnu9Kta2pw + W0BwAEwrCFmzXE4nvSUYLCtTdg1p98wpuEp2gME1UuwtUWaMw8zUtJNX7sh5qbQ+i3e5Lk84Jupj + RrsJ3dyW7iCG6I3P0sYRJrys9elB9l56NDfMqXT4QfJEtsfs+cOfulaa8rPkhjx40z5BOmX0wK1T + 39KDX/Zl7OVozOVxe560ZyLHJR3uZGnNiL+f/TriKyVrU40Gea1ONNL253hZZWWDG1V1loa7Jl3T + FvzH83+vm8iG2qKnj6efTn4AVAqiuw0KZW5kc3RyZWFtDQplbmRvYmoNCjE4IDAgb2JqDQpbIDIy + Nl0gDQplbmRvYmoNCjE5IDAgb2JqDQo8PC9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDE5Mzg5 + L0xlbmd0aDEgODE3NDA+Pg0Kc3RyZWFtDQp4nOx9B3xUVdr+OfdOy8wkM5NkkkkmYWaYJASGFCCB + BJAMpNA7gwk1IYWAAQKEIgJGUdAo9l7Rta1YJgNqwO5iWQv2vhZ2XVdXse3qKgL5nnPfORDY1f+3 + 1fX7z5s88zznPeWe+t6TH8kPxhljdnzoWG3lqIoZBf1stzPumcAYf6Jy1ITyq5qr4hnPzGBMKZw8 + vWDgtY/W3YO8s1Crtn5JXetF716EsiddgvwP6le3eXe1vlHM2LYLGNM/0NS6cMnGd9UhjC1dy1h8 + YGHLyU2vVu4oYuwW1LF90NxY1/DtxJPDaM+K9gY3wxF/Z8Z+pCuQzmpe0rZ2xDjjAaQ/YmzRHS3L + 6uvyGvrezNi9hSg+c0nd2tZ8c/abyG9Gee+Sxra6q07ftppxXzLSZyytW9J43YGv5zP2KfpbuLJ1 + 2cq2bjfbzHjGQVG+dUVja9LC3mmMnXITHvcJE3NhGLpv9uI1H8+3Df+apZmYsPs/Wf+s4NfHrpn8 + /YFD7XGfmgYjGccURoZ6BnaY8T3mbd8fOLAt7lOtpR6WdofwuPuxdmZnw6EVcAHbwljiYO25nKm6 + AL+A6ZlJf6V+EJrsRay+wDYrzMQUm15RFJ2q6D5g+d2PsKxTtB7AJk73elmQsexnqQ/G65QcL+Pd + Ik+9T58gRsqSdQlHe8OfZ//fm+F1dsdP3Yf/K6ZrZDf81H34e8xg+Pf0V93/85qHf4fpiljtT92H + mP3zpjzNrvyp+/BzMOX3bMw/Uo9/w1r+1X2JWcxiFrOY/eOmXM3NP5hXy/b/J/vyczG1mJ3zU/ch + ZjGLWcxi9o+b7lHW9B9/5hJ23n/6mTGLWcxiFrOYxSxmMYtZzGIWs/+7Fvs5M2Yxi1nMYhazmMUs + ZjGLWcxiFrOYxey/23jst9FjFrOYxSxmMYtZzGIWs5jFLGYxi1nMYhazmMUsZjGLWcxiFrOYxSxm + MYtZzGIWs5jFLGYxi1nMYhazmMUsZjGLWcz+S6x790/dg5jF7Cc2NYqM6P8k1YEUlLKa6dhSpFOY + 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 + +xG3mmhL96QrfW1pvHxyGl+Wdmra+WmqzfW8Swm6+vavsqU+n/pe6uepuqRgat/8KpZiT/GmqE4x + tpSJM6o0LqsgHlCsjdWT4s+psjm5zelxKpWfO/lmpnIv54zbQaoJZXZyp6dKfZCLX6LTM84vYDMC + 47tMbNr4sGnK7DA/K5w9XXwGp84KG84Ks9Cs2dWdnJ9Xo/1OQjhZ/FKJlj5z61aWOWp8OHN6dUTd + ti1zVM34cLvQwaCmu4VmKFITmLdy1cpAdfAE5njf8YVDdT5sf96u2GzcZuu2KUEbOm9L8CQo4qM7 + QQ0mDBhSZYv3xCviozteTQnGwyPG18c6ZUaVzeKxKKEyy2SLErSUlVcFLXmFVX81zh1inPTkQNs8 + fMxb2RbQvpGq4atEMiC84ntlG9Lia5WWZoEfNSoGmr8S1iadbT9e67/d+E/dgZ+/0W/yjOxWzmAN + yibgdOA0oB04FdgIbADWA6cA64CTgbXAGmA1sApoA1YCy4FWYBmwFFgCtAAnAYuBRUAzsBBoAhqB + BqAeWADUAbXAfGAeMBeYA8wGZgE1QDVwIjATCAEzgOnANGAqMAWYDEwCJgITgPHAOGAsMAYYDVQB + lUAFUA6MAkYCQaAMGAGcAAwHhgFDgVKgBBgCDAaKgSJgEDAQGAAUAgVAPpAH9AcCQD+gL5AL9AFy + gGwgC/ADvQEf4AU8QC8gE8gA3EA6kAa4gFQgBXACyUASkAg4ADtgAxKAeMAKWAAzEAeYACNgAPSA + bmQ3PlVAATjAWAOHjx8GDgEHge+BA8B3wLfAX4BvgK+BPwN/Ar4CvgS+AD4HPgP2A58CnwB/BD4G + PgL+AHwI/B74APgd8FtgH/A+8B7wLvAO8BvgbeAt4E3gDeB14DXgVeAV4GXgJeBF4AXgeWAv8Bzw + LPAM8DTwa+Ap4EngCeBxYA/wK+Ax4FHgEeBh4CHgQeAB4H5gN7AL6ALuA+4F7gF2AjuACNAJhIG7 + gbuAO4E7gO3A7cAvgduAW4FbgJuBm4BfADcCNwDbgOuB64BrgWuAq4GrgCuBK4DLgcuAS4FLgIuB + i4ALgQuA84HzgK3AucA5QAdwNnAWsAXYDJzJGka2c5x/jvPPcf45zj/H+ec4/xznn+P8c5x/jvPP + cf45zj/H+ec4/xznn+P8c5x/jvPPVwCIARwxgCMGcMQAjhjAEQM4YgBHDOCIARwxgCMGcMQAjhjA + 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 + uHNOntVntltoN7fZZcns+b3njj5RYD9zj2wYh93jRY32F+XYd7t63rI9HL47es2yJ/Lzkt3tQlaU + DZGNmzl6SlRiyln72V+ccO/r8eSz3lNExze9zb7aw4rjv/BG9zYrTm3xzCvteuW29FBk9/xRPk9c + Rq+cqR877Y8jHRlRnfZOdt6+fI2F/cK6rFdZnDnlnXp2yh4glHjZyFUD5829NvaP6hlPojpffBN+ + fGfIA1WHDdc3+tYdv/DEceN8v7J5cY7d7R5bTzrjVcNzu/Jwf8DPgxZ/K+xq+6Pt3h/Xb7i++bfz + riX9BAPCeCN93b+s/MP3xUV2N0I+b3PapCyVetVWfU0vC8uVeCe/HsU9XeIy7Kqr4p5envGlh9p1 + tGBV7vVenWTLaoaI0ifUeEq6lE2oPffkxeOWFQt8L/+0ouz4/SES/tVBVl9P7GGZZ/mLZWWOV4td + YvGWh7//2Ia1q5Z/wNHv/kVZ4L2yZxWD557FzlRE7Ux7UrbCpm+M8/xCr+OY//7KhSt6CvLahvx4 + YunSJaNGtXsVM8dr7eton8Kni1/szt7at+zK3Zx893t3QucXuPV9f6bKJyvnxsZXb6bctSu8Iw/f + +IasY8VOr63NUUpmdf9lUWp8wu7C/u0q8pvxvEc94NtW9ny9+ujyIXsqShb2H5kaHyOo7n1oYe4g + 28KY7LcFS/bsVCpHHBLpXBxGJf7ELWZtIotZ6xg4ThbN+acLV9O/Dqy/OVJetA8mHzqIbZhce9M7 + L0CK+p4d15E0nXUlfeoXsrggtb0tjVw1/fGjM0XNa/13KmeO++6u+0VSarLEnptKJpd3KvRr8qu7 + yR8+TaWiY2H7j+7sZONfERGNajOrGMeSoqevHPvdYvVAX8vz3KGiwO1V/ax6ch09R23Ii04evDs0 + 2CnU+WRSRvsUy3OiWa635i1oKdcOYm+ousbxd+7gGGX7Wj5xdrTix9nSvuf3TmbVZj3gTvj14reH + 18+qm7ay35fq/DU4a8fbHVu/P3i77u3+idi5m9sXSZedCD+gODDs9e3XP7geLwtT1HW2fPwgemKz + /OOe7/uH/3RlQNvUWwdKrJvvXamY//X119X+sheffcZcF/NtO/4o71U7brQ4OjPi9aA2dQm5bvxv + 3q6JcZocnrJtxN4dK3kXJM67ugyYbsHp6TFzyNJpN2+5T7pVOu+ngmc97npkFzuOwA/vSO2YtdzB + q7Zj8tm+7EHekyuKGX7geNK+3keW3GKGKxhqhkJz+j92Id70nTaTmBxCupmGpF39HUMcMDfOWHCd + 0C+Ou3BDeFz4GvhBREbcHhe+ONHvwN2OU11Vp6qzPBd+V9DokgnGCjfe5UvGpP5Mj7Q+Zfq7tmP7 + +Ae5+x8Y8uTc1cf3v1hbutDnFi+z+V37K+dOT4vvMKLjstoFhUPnB5zoMlTWYs1vVzeOaam8w291 + XH/hvfqBTUXvxY/7jPyyk2jgYq/7jKoAYWmk96n7L+2sxHdTCsZYF4wp07gMK5cN8rPwyjiw+WDG + olP3xRf5udFb3148d/1t8bvrkrRjP1zdXOYg33di5JxHT3Mjv7+0r+CXdz8v32a3hGuRdD122/bv + vVKGVDwZd3v2xWk7NtkV3XVZ1KPLiOyvjw7h/3J7+enzy6punTtvP9plwNne7FOq7b/6h4+729uh + eqxVv8vdnqxNi908ORd/sHGv/+OcFZO5XX+fFon9H5Hg2m4NCmVuZHN0cmVhbQ0KZW5kb2JqDQoy + MCAwIG9iag0KPDwvVHlwZS9NZXRhZGF0YS9TdWJ0eXBlL1hNTC9MZW5ndGggMzA4ND4+DQpzdHJl + YW0NCjw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+ + PHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iMy4xLTcwMSI+Cjxy + ZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4 + LW5zIyI+CjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiICB4bWxuczpwZGY9Imh0dHA6Ly9u + cy5hZG9iZS5jb20vcGRmLzEuMy8iPgo8cGRmOlByb2R1Y2VyPk1pY3Jvc29mdMKuIFdvcmQgZm9y + IE9mZmljZSAzNjU8L3BkZjpQcm9kdWNlcj48L3JkZjpEZXNjcmlwdGlvbj4KPHJkZjpEZXNjcmlw + dGlvbiByZGY6YWJvdXQ9IiIgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMv + MS4xLyI+CjxkYzpjcmVhdG9yPjxyZGY6U2VxPjxyZGY6bGk+S3Jpc3RhIFByYXRpY288L3JkZjps + aT48L3JkZjpTZXE+PC9kYzpjcmVhdG9yPjwvcmRmOkRlc2NyaXB0aW9uPgo8cmRmOkRlc2NyaXB0 + aW9uIHJkZjphYm91dD0iIiAgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAv + Ij4KPHhtcDpDcmVhdG9yVG9vbD5NaWNyb3NvZnTCriBXb3JkIGZvciBPZmZpY2UgMzY1PC94bXA6 + Q3JlYXRvclRvb2w+PHhtcDpDcmVhdGVEYXRlPjIwMjAtMDMtMjBUMTA6NDQ6NDYtMDc6MDA8L3ht + cDpDcmVhdGVEYXRlPjx4bXA6TW9kaWZ5RGF0ZT4yMDIwLTAzLTIwVDEwOjQ0OjQ2LTA3OjAwPC94 + bXA6TW9kaWZ5RGF0ZT48L3JkZjpEZXNjcmlwdGlvbj4KPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJv + dXQ9IiIgIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIj4KPHht + cE1NOkRvY3VtZW50SUQ+dXVpZDo4RjI5Q0E4Qy1FRThCLTQ3NTktQkM5Qi1BMDhFRkVFNjYyMDE8 + L3htcE1NOkRvY3VtZW50SUQ+PHhtcE1NOkluc3RhbmNlSUQ+dXVpZDo4RjI5Q0E4Qy1FRThCLTQ3 + NTktQkM5Qi1BMDhFRkVFNjYyMDE8L3htcE1NOkluc3RhbmNlSUQ+PC9yZGY6RGVzY3JpcHRpb24+ + CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgIAo8L3JkZjpSREY+PC94OnhtcG1ldGE+PD94cGFja2V0 + IGVuZD0idyI/Pg0KZW5kc3RyZWFtDQplbmRvYmoNCjIxIDAgb2JqDQo8PC9EaXNwbGF5RG9jVGl0 + bGUgdHJ1ZT4+DQplbmRvYmoNCjIyIDAgb2JqDQo8PC9UeXBlL1hSZWYvU2l6ZSAyMi9XWyAxIDQg + Ml0gL1Jvb3QgMSAwIFIvSW5mbyA5IDAgUi9JRFs8OENDQTI5OEY4QkVFNTk0N0JDOUJBMDhFRkVF + NjYyMDE+PDhDQ0EyOThGOEJFRTU5NDdCQzlCQTA4RUZFRTY2MjAxPl0gL0ZpbHRlci9GbGF0ZURl + Y29kZS9MZW5ndGggODM+Pg0Kc3RyZWFtDQp4nC3LsQFAQAyF4ZfcHbW1KJUKnTHYxgR6k1Ba48R7 + UuQrkh+IqdVid8DHLm5iD/GDpInkXmwibs7cRRJZFGHi/2yiKyfzdhALGVcyX8ALyoALUA0KZW5k + c3RyZWFtDQplbmRvYmoNCnhyZWYNCjAgMjMNCjAwMDAwMDAwMTAgNjU1MzUgZg0KMDAwMDAwMDAx + NyAwMDAwMCBuDQowMDAwMDAwMTY2IDAwMDAwIG4NCjAwMDAwMDAyMjIgMDAwMDAgbg0KMDAwMDAw + MDQ4NiAwMDAwMCBuDQowMDAwMDAwNjkyIDAwMDAwIG4NCjAwMDAwMDA4NTkgMDAwMDAgbg0KMDAw + MDAwMTA5OCAwMDAwMCBuDQowMDAwMDAxMTUxIDAwMDAwIG4NCjAwMDAwMDEyMDQgMDAwMDAgbg0K + MDAwMDAwMDAxMSA2NTUzNSBmDQowMDAwMDAwMDEyIDY1NTM1IGYNCjAwMDAwMDAwMTMgNjU1MzUg + Zg0KMDAwMDAwMDAxNCA2NTUzNSBmDQowMDAwMDAwMDE1IDY1NTM1IGYNCjAwMDAwMDAwMTYgNjU1 + MzUgZg0KMDAwMDAwMDAxNyA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDE4Njcg + MDAwMDAgbg0KMDAwMDAwMTg5NCAwMDAwMCBuDQowMDAwMDIxMzc0IDAwMDAwIG4NCjAwMDAwMjQ1 + NDEgMDAwMDAgbg0KMDAwMDAyNDU4NiAwMDAwMCBuDQp0cmFpbGVyDQo8PC9TaXplIDIzL1Jvb3Qg + MSAwIFIvSW5mbyA5IDAgUi9JRFs8OENDQTI5OEY4QkVFNTk0N0JDOUJBMDhFRkVFNjYyMDE+PDhD + Q0EyOThGOEJFRTU5NDdCQzlCQTA4RUZFRTY2MjAxPl0gPj4NCnN0YXJ0eHJlZg0KMjQ4NjgNCiUl + RU9GDQp4cmVmDQowIDANCnRyYWlsZXINCjw8L1NpemUgMjMvUm9vdCAxIDAgUi9JbmZvIDkgMCBS + L0lEWzw4Q0NBMjk4RjhCRUU1OTQ3QkM5QkEwOEVGRUU2NjIwMT48OENDQTI5OEY4QkVFNTk0N0JD + OUJBMDhFRkVFNjYyMDE+XSAvUHJldiAyNDg2OC9YUmVmU3RtIDI0NTg2Pj4NCnN0YXJ0eHJlZg0K + MjU0ODQNCiUlRU9G + headers: + Content-Type: + - application/pdf + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/layout/analyze + response: + body: + string: '' + headers: + apim-request-id: 28e2754b-b27e-495e-bac0-b76bf8c625ac + content-length: '0' + date: Wed, 22 Apr 2020 22:13:16 GMT + operation-location: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/layout/analyzeResults/28e2754b-b27e-495e-bac0-b76bf8c625ac + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '435' + status: + code: 202 + message: Accepted + url: https://westus.api.cognitive.microsoft.com//formrecognizer/v2.0-preview/layout/analyze +- request: + body: null + headers: + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/layout/analyzeResults/28e2754b-b27e-495e-bac0-b76bf8c625ac + response: + body: + string: '{"status":"succeeded","createdDateTime":"2020-04-22T22:13:16Z","lastUpdatedDateTime":"2020-04-22T22:13:21Z","analyzeResult":{"version":"2.0.0","readResults":[{"page":1,"language":"en","angle":0,"width":8.4967,"height":10.9967,"unit":"inch","lines":[]}],"pageResults":[{"page":1,"tables":[]}]}}' + headers: + apim-request-id: fd0b1234-6081-47dc-8ad9-b6542aa082db + content-type: application/json; charset=utf-8 + date: Wed, 22 Apr 2020 22:13:22 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + transfer-encoding: chunked + x-content-type-options: nosniff + x-envoy-upstream-service-time: '265' + status: + code: 200 + message: OK + url: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/layout/analyzeResults/28e2754b-b27e-495e-bac0-b76bf8c625ac +version: 1 diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_content_async.test_content_multipage.yaml b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_content_async.test_content_multipage.yaml new file mode 100644 index 000000000000..7c05df784ef4 --- /dev/null +++ b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_content_async.test_content_multipage.yaml @@ -0,0 +1,2032 @@ +interactions: +- request: + body: !!binary | + JVBERi0xLjcNCiW1tbW1DQoxIDAgb2JqDQo8PC9UeXBlL0NhdGFsb2cvUGFnZXMgMiAwIFIvTGFu + Zyhlbi1VUykgL1N0cnVjdFRyZWVSb290IDE2IDAgUi9NYXJrSW5mbzw8L01hcmtlZCB0cnVlPj4v + TWV0YWRhdGEgMjUzIDAgUi9WaWV3ZXJQcmVmZXJlbmNlcyAyNTQgMCBSPj4NCmVuZG9iag0KMiAw + IG9iag0KPDwvVHlwZS9QYWdlcy9Db3VudCAzL0tpZHNbIDMgMCBSIDExIDAgUiAxMyAwIFJdID4+ + DQplbmRvYmoNCjMgMCBvYmoNCjw8L1R5cGUvUGFnZS9QYXJlbnQgMiAwIFIvUmVzb3VyY2VzPDwv + Rm9udDw8L0YxIDUgMCBSL0YyIDkgMCBSPj4vRXh0R1N0YXRlPDwvR1M3IDcgMCBSL0dTOCA4IDAg + Uj4+L1Byb2NTZXRbL1BERi9UZXh0L0ltYWdlQi9JbWFnZUMvSW1hZ2VJXSA+Pi9NZWRpYUJveFsg + MCAwIDYxMiA3OTJdIC9Db250ZW50cyA0IDAgUi9Hcm91cDw8L1R5cGUvR3JvdXAvUy9UcmFuc3Bh + cmVuY3kvQ1MvRGV2aWNlUkdCPj4vVGFicy9TL1N0cnVjdFBhcmVudHMgMD4+DQplbmRvYmoNCjQg + MCBvYmoNCjw8L0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggMjg2ND4+DQpzdHJlYW0NCnicvZxZ + bxw3EsffBeg79ONMsGrzPhZBAMvXerEGkrWAPBiLwJYPGIilXVubbL79VrHvYRfZ3cOOAI2OLvJf + LFb/SPbB6tGP1fffP3r15OXTiv3wQ3X99En1n8sLVjP88lxUrDLwab2ovn64vPj5u+ru8uL65vLi + 0XNecVMzV918vLzgYMcqXikpam4ry1TtTHXzBexevLbVp29QZ/Up/OXav15cXrw5vLz77agP9/D9 + +WgOt/DzA3xXx39VN3+/vHgGOj9dXpzlkAOH+Nih4Ecr//x4JYP6V1D/azlVzVzNDKV60rzq2asn + VTXqCL6+I8RcLxjrayUi+eujgmhf+cOv+PEuxN+CUyYcefsJ/wsfrjG6g+PfNkfmxC9vau8pv3Jh + EaXCYmSt9Yl8dQV1OlXd3L45cCFLNVizmvt5xajBZ6iI2klK5W/HK25CF2NXvyulCX0oSM2QOQ/H + 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 + fvW3lN9NoKP8fgIt5fcTaCkfCZSmfCSw09UI6BG/5zmhhK3NXNLi2yxyv6sRhuO2Ndl2xSReu18C + SWJj63VjgCulDJhYt8bwpZRleJt/hbRauxkZKS1YnXrQP1Zeu/sWqczwsaPoQiXOyj7h6XqHU7Nw + 4j5Agofrl1/DFhRHCafxlSw3vgmNdx9P/alYcBMnVb/AV7HR2uNeVHHjrz9DKxFR4SLtfXVUh+u3 + 2N4QjPCBobkrNuZyvAMV+7FxL7PZQV3OCfxy5A4iij0481lKHXfbcTPqJ0nTd4eAs8CYcIeT1VbQ + t+LU2ltxVP7jrMGt4o1aeyuOlIaffhVkVamLzULb9D3+WLrUlRyhOO7ztEa61PJCAGLMOulS46lg + IcPXSJcaULmXuJ3hGulSIyq3DleUK6R1qRGVG5hGrGq1LjWkcmXwYaE10qVoxiXD+eoa6VI041zj + BgZrpEvRzPuam1Ug1aVohk8vi3XSHc04bmeEj9VUhsnwOhCMljA1gRHb9AMfw80Nf0dZqDxp/Xp4 + TA7MvFJgaGoPJlbVsrkCYqnn5PSIc8tK9/fXAS7TyBgJQ4uqLAzmohtYP/Xhid+vPlfPwtTZkXr3 + OJv90lxjdDiRlTildYc/cAPfx2Hvz5f4Gf75G0z37rvp7y0+uBxvgnWuuxwyB5hIuJvNHretowTd + UQYnabEnj3HPzvf9XP8bLHLV4Vu8cj/XCw7/gnk/4UU2Hn5z4s4HQ3MsdeqGPnb7VjRbEL8K9ww/ + Q0xY2N8U//f6AVcH8UOgZ7nFhcKt+Qi3sps3ssLRkbpW8S6K/XayZvFmr+cFRcraSsqbbFB44aDg + vdjTnS1ze6SeJew4LTy3Vep5YgoWKaRY4ZZ5DoOxWxLSwhkFY6rQf1JEOZRypFhuD9ozzxzgiKSk + iee8/w9kOwx8DQplbmRzdHJlYW0NCmVuZG9iag0KNSAwIG9iag0KPDwvVHlwZS9Gb250L1N1YnR5 + cGUvVHJ1ZVR5cGUvTmFtZS9GMS9CYXNlRm9udC9CQ0RFRUUrQ2FsaWJyaS9FbmNvZGluZy9XaW5B + bnNpRW5jb2RpbmcvRm9udERlc2NyaXB0b3IgNiAwIFIvRmlyc3RDaGFyIDMyL0xhc3RDaGFyIDEy + MS9XaWR0aHMgMjQ5IDAgUj4+DQplbmRvYmoNCjYgMCBvYmoNCjw8L1R5cGUvRm9udERlc2NyaXB0 + b3IvRm9udE5hbWUvQkNERUVFK0NhbGlicmkvRmxhZ3MgMzIvSXRhbGljQW5nbGUgMC9Bc2NlbnQg + NzUwL0Rlc2NlbnQgLTI1MC9DYXBIZWlnaHQgNzUwL0F2Z1dpZHRoIDUyMS9NYXhXaWR0aCAxNzQz + L0ZvbnRXZWlnaHQgNDAwL1hIZWlnaHQgMjUwL1N0ZW1WIDUyL0ZvbnRCQm94WyAtNTAzIC0yNTAg + MTI0MCA3NTBdIC9Gb250RmlsZTIgMjUwIDAgUj4+DQplbmRvYmoNCjcgMCBvYmoNCjw8L1R5cGUv + RXh0R1N0YXRlL0JNL05vcm1hbC9jYSAxPj4NCmVuZG9iag0KOCAwIG9iag0KPDwvVHlwZS9FeHRH + U3RhdGUvQk0vTm9ybWFsL0NBIDE+Pg0KZW5kb2JqDQo5IDAgb2JqDQo8PC9UeXBlL0ZvbnQvU3Vi + dHlwZS9UcnVlVHlwZS9OYW1lL0YyL0Jhc2VGb250L0JDREZFRStDYWxpYnJpLUJvbGQvRW5jb2Rp + bmcvV2luQW5zaUVuY29kaW5nL0ZvbnREZXNjcmlwdG9yIDEwIDAgUi9GaXJzdENoYXIgMzIvTGFz + dENoYXIgMTIwL1dpZHRocyAyNTEgMCBSPj4NCmVuZG9iag0KMTAgMCBvYmoNCjw8L1R5cGUvRm9u + dERlc2NyaXB0b3IvRm9udE5hbWUvQkNERkVFK0NhbGlicmktQm9sZC9GbGFncyAzMi9JdGFsaWNB + bmdsZSAwL0FzY2VudCA3NTAvRGVzY2VudCAtMjUwL0NhcEhlaWdodCA3NTAvQXZnV2lkdGggNTM2 + L01heFdpZHRoIDE3ODEvRm9udFdlaWdodCA3MDAvWEhlaWdodCAyNTAvU3RlbVYgNTMvRm9udEJC + b3hbIC01MTkgLTI1MCAxMjYzIDc1MF0gL0ZvbnRGaWxlMiAyNTIgMCBSPj4NCmVuZG9iag0KMTEg + MCBvYmoNCjw8L1R5cGUvUGFnZS9QYXJlbnQgMiAwIFIvUmVzb3VyY2VzPDwvRm9udDw8L0YyIDkg + MCBSPj4vRXh0R1N0YXRlPDwvR1M3IDcgMCBSL0dTOCA4IDAgUj4+L1Byb2NTZXRbL1BERi9UZXh0 + L0ltYWdlQi9JbWFnZUMvSW1hZ2VJXSA+Pi9NZWRpYUJveFsgMCAwIDYxMiA3OTJdIC9Db250ZW50 + cyAxMiAwIFIvR3JvdXA8PC9UeXBlL0dyb3VwL1MvVHJhbnNwYXJlbmN5L0NTL0RldmljZVJHQj4+ + L1RhYnMvUy9TdHJ1Y3RQYXJlbnRzIDE+Pg0KZW5kb2JqDQoxMiAwIG9iag0KPDwvRmlsdGVyL0Zs + YXRlRGVjb2RlL0xlbmd0aCA0NzY+Pg0Kc3RyZWFtDQp4nK2Yu2ocQRBF84H5hwplB7Vdj36BUKCV + LGwQ2GjBgVEoKZLA9v+Dy4sDh6rmTjDQzNCne6BO3xo6fKXLy8P98fMNlasrur450s99K1z+XlOU + CrW496n062nfvn+kt327Pu3b4ZNSPDg975vES4WEunJRp14Ge6PTa7x099Dp5XdMSC/n0fg3utu3 + Hxf04ZFOX/btNqb7tm90e38k+m9BAlpQm8pNzws6r+OdeEXhe+M+0nhD4VvhKWm8o/Be2fL4isLr + ZO9pfEPhxbhZGt9B+Do795nGDxR+CM/87icK3xqX/O4FJcJaC2vN81Heq+bs+dITlPiqDB4LfJT5 + alGe+doXlPp8dF7YPkp93oW15fko93mt7PljV1Dyc5tc8+euoOznatw9z0fpzyOHyULsQenPInZp + /vsrSn8Wucvz319R+rMIXvnyU5T9zJ37Ah9lP9PB+cNXUfazSF5lYfso+2lEL12oPpT9NLLXStOD + sp+2utL1KMp+6pNnvvoNZT+N8FXy4cNQ9tMIX5rP3oayn0b4snz9G0p/MhrXfPg2lP6kR9u9wEf5 + TyJ9LTQ/hvKfRPpaaH4M5T+J9LXQ/BjKf1I614X6R/lvCveF9OWwv4CVR3uff/8AMWTgdQ0KZW5k + c3RyZWFtDQplbmRvYmoNCjEzIDAgb2JqDQo8PC9UeXBlL1BhZ2UvUGFyZW50IDIgMCBSL1Jlc291 + cmNlczw8L0ZvbnQ8PC9GMSA1IDAgUi9GMiA5IDAgUj4+L0V4dEdTdGF0ZTw8L0dTNyA3IDAgUi9H + UzggOCAwIFI+Pi9Qcm9jU2V0Wy9QREYvVGV4dC9JbWFnZUIvSW1hZ2VDL0ltYWdlSV0gPj4vTWVk + aWFCb3hbIDAgMCA2MTIgNzkyXSAvQ29udGVudHMgMTQgMCBSL0dyb3VwPDwvVHlwZS9Hcm91cC9T + L1RyYW5zcGFyZW5jeS9DUy9EZXZpY2VSR0I+Pi9UYWJzL1MvU3RydWN0UGFyZW50cyAyPj4NCmVu + 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 + mxWDaazuLffHZf/XyULlydKvhoeloFgtJRTUpHahL93+mltBGOxpKTm6Y7Lu6v7GpCD11DNaQExK + 6AdgSOeZT717wkML9upBhyuL6n11mfRLsw1gXRIVLp3a0+/RA+T32sKAIVRhtoQn9+zXM8QITO+A + 9glKLNq+F87X3ru/nWXj+ea8/ouJHAe52xbDiDYr2x4OQ5UX8RyPeO0OBw4teexOr37fA/vb+QJ0 + +xYuIfZaweC/AN6IFYv+0NkZIO4MmKuL8ERtde5O1TH+MO+X/kbPZ/AJ9Sd9u/979eA4Gd6x3mUW + g6WWMJhZi94xhb0jFJHhecL9wep69bHn+5wihEsfiDWLTrGFneJuoM3PeF46LXyXMMzZUOHYoeH7 + xGCtb1Gxwi2rGcxq7BqXFo4omJxw9Qd5lMFVFhVbOo1958iBPCIwaeRJ4/8DtXV3Ww0KZW5kc3Ry + ZWFtDQplbmRvYmoNCjE1IDAgb2JqDQo8PC9BdXRob3IoS3Jpc3RhIFByYXRpY28pIC9DcmVhdG9y + KP7/AE0AaQBjAHIAbwBzAG8AZgB0AK4AIABXAG8AcgBkACAAZgBvAHIAIABPAGYAZgBpAGMAZQAg + ADMANgA1KSAvQ3JlYXRpb25EYXRlKEQ6MjAyMDA0MjIxNjQ1MjktMDcnMDAnKSAvTW9kRGF0ZShE + OjIwMjAwNDIyMTY0NTI5LTA3JzAwJykgL1Byb2R1Y2VyKP7/AE0AaQBjAHIAbwBzAG8AZgB0AK4A + IABXAG8AcgBkACAAZgBvAHIAIABPAGYAZgBpAGMAZQAgADMANgA1KSA+Pg0KZW5kb2JqDQoyMyAw + IG9iag0KPDwvVHlwZS9PYmpTdG0vTiAyMzIvRmlyc3QgMjAzNS9GaWx0ZXIvRmxhdGVEZWNvZGUv + TGVuZ3RoIDMwNTE+Pg0Kc3RyZWFtDQp4nO1b24ocyRF9N/gf8g+mIu8Jy4Jt7WKzrBCSwA/CDyOp + LQ07M72MWiD9vc+pipyetTOz1Gn7weCHmbrG/UTkpaKtmMXYYIIYG40s2dhkJOIezsQaW3DfG7cY + J9FYnMWMU+NjMM6CLBrnTIjJOG+i4FkwMRa8ZpIFUTIp4W1rsrXGi8nJGe9NAUPvTMnkBLEuGx9w + LLi9GBEPfsWIBcOAawuOHtfOigkWx5SpsXiwCR7HnExwRgKIfMaxRBNoB/QK4J+kmAD6lHAfzzOs + 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 + o7YHauOettT9bxfFC374xVj+v4b+R2qoOrMW0tkCqt2Sut9ed8Hr1nDdsK3bqHVDsm4T1s27ug1W + N6fqllHdfKlbInWjoi7560K8Lo/rQrMu/+qirC5v6qKjLgX+W4W/fs361q9fDMY/AFTdMPANCmVu + ZHN0cmVhbQ0KZW5kb2JqDQoyNDkgMCBvYmoNClsgMjI2IDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAy + NTAgMzA2IDI1MiAwIDUwNyA1MDcgNTA3IDUwNyA1MDcgNTA3IDUwNyA1MDcgNTA3IDUwNyAyNjgg + MCAwIDAgMCAwIDAgNTc5IDU0NCA1MzMgNjE1IDQ4OCA0NTkgNjMxIDYyMyAyNTIgMCAwIDQyMCA4 + NTUgMCAwIDUxNyA2NzMgNTQzIDQ1OSAwIDAgMCA4OTAgMCAwIDAgMCAwIDAgMCAwIDAgNDc5IDUy + NSA0MjMgNTI1IDQ5OCAwIDQ3MSAwIDIzMCAwIDAgMjMwIDc5OSA1MjUgNTI3IDUyNSAwIDM0OSAz + OTEgMzM1IDUyNSA0NTIgMCAwIDQ1M10gDQplbmRvYmoNCjI1MCAwIG9iag0KPDwvRmlsdGVyL0Zs + YXRlRGVjb2RlL0xlbmd0aCA1MzE4Mi9MZW5ndGgxIDEzNzU5Nj4+DQpzdHJlYW0NCnic7H0HXFTH + 2v475+zCUhaWKrLiLq6Auig2FEtklaJoLCirgA2k2LChGI0lJEZNSEy5Mb2ZnhtNsqwaMdXkphfT + e+/JjaZdzc01Ub5nzruDaDTJvfd/v3z3/9sXnvM8887Me2bmzMyZjRBIEJENFxNVFIzIL1mf7HuW + xJeZRLFJBSNOzbvntXVfkfhoNVGIb/ykrL7XPly5k0icg1oVVQsqF7/T99MUovmbicyDq5Yvc+5e + /EY20Y1fIH1/7eLZC9a+pw8kWvwCkdU9u25l7bvOlS6i228meumvc2oqq38cu9KHeJGIN2AOHNY7 + O+1HOh/prnMWLFuRPXOSG2nEm7utblFV5U2b53cjseoiFJ+8oHLF4l7W9G7In4PyzgU1yyqvOmvL + chI/yfpnL6xcUHPdoYMzSTSjfu+lixctXdZqpw3ozzRZfnF9zeK42V06Eq35GbdDP+ENGfzhP3a9 + WDAzeuhB6mghafd9tfpZya8XnTb+p0OHG8P2WQYgGUYasaFeCB0h8Wj4lp8OHdoSts+I1M46bpMe + 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 + wAKEAiGAGTANb8VVBzRAAETVAj5xBDgM/Az8BBwC/gH8CPwd+AE4CBwA/gZ8D3wHfAt8A3wN7Af2 + AV8BfwW+BL4APgc+Az4FPgE+Bj4CPgQ+AN4H3gPeBd4B3gbeAt4E3gBeB14DXgVeAV4GXgJeBF4A + ngf2As8BzwLPAE8DTwFPAk8AjwOPAY8CfwEeAR4G9gAPAQ8CDwD3A/cB9wK7gRZgF3APsBPYAWwH + /EAz4APuBu4C7gS2AVuBO4A/A7cDtwG3ArcANwM3ATcCNwBbgOuB64BrgWuAq4GrgCuBK4DLgcuA + S4HNwCXAn4CLgYuAC4ELgE3A+cB5QBNwLnAOsBHYAKyn6uGNAutfYP0LrH+B9S+w/gXWv8D6F1j/ + AutfYP0LrH+B9S+w/gXWv8D6F1j/AutfYP2LegB7gMAeILAHCOwBAnuAwB4gsAcI7AECe4DAHiCw + BwjsAQJ7gMAeILAHCOwBAnuAwB4gsAcI7AECe4DAHiCwBwjsAQJ7gMAeILAHCOwBAnuAwB4gsAcI + 7AEC619g/Qusf4G1L7D2Bda+wNoXWPsCa19g7QusfYG1L7D2/+h9+L/cyv7oBvyXGy1d2u5gJi1p + pvyFp9DriI5ccszvqUygebSUGvG1gTbRJfQQvU2zaB3UlbSFbqU/k48epqfo9d/xOy+/246sNC+g + SH0XhVAcUeuh1v1HbgVazFHtPJcgFWdyHvW02lq/Ps739ZFLWm1HWkJiKdyoa9Vegvdv4nDrIbxy + kW4dINPaRuhoo8Z3odcdufvIbceNQTGV01SaRtOpgirR/2qaQ3MxMvOpjhbQQiO1EHmzca1FaiZK + YXsx9NFSi2gxUE/LqIGW42sx9NJASuYtMdINdBq+VtBKOp1W0WpaE7ieZnhWI+d0I70CWEtn4Mmc + SWcZSjF71tHZtB5PbSOdQ+f+aurcNtVE59H5eM4X0IUn1ZuOSV2Er4vpT5gPm+lSuoyuwLy4mq45 + znu54b+KrqPrMWdk3qXwXG8omXs/PU476S66m+4xxrIKo8Yjosal1hjDxRiD1ejhunYt5vE7rW20 + 1qLvsm9NgZ6ugP+sdjWWB8ZRllyHkhyFn4OMsua4kbgIfWB9tEecutTo/1Fv+1H5Na8aj2vajczV + Rkqq470n05fRtViBN+AqR1WqG6FZXW/o9v7r2spuMdI30c10C57FbYZSzJ5boW+j27G276CttA1f + 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 + IDAgMCAwIDQ1OSAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCA0NzMgNDk1IDAgMCAwIDAgMCAwIDAg + MCAwIDAgNDk4IDAgNDk0IDUzNyAwIDUzNyA1MDMgMCA0NzQgMCAyNDYgMCAwIDI0NiAwIDUzNyA1 + MzggNTM3IDAgMzU1IDM5OSAzNDcgNTM3IDAgMCA0NTldIA0KZW5kb2JqDQoyNTIgMCBvYmoNCjw8 + L0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggMzM2MzMvTGVuZ3RoMSAxMDI3MDQ+Pg0Kc3RyZWFt + DQp4nOydCXiTVdb4z33fLM3WJl3SJU2aNk26J90otAUaulEoW6HBFgRaaLG4UYGqoAzgglhFVFzG + BUFHxwWUNIAUQUTFXdQZUccdlxnXjqjgKNDkf+570tIiuMz4jd//+XLa8/7uPffcfXsj8SkwANDj + QwZNVeWV9bcVPhsGrO2PAGqMj6t4/SnTOGBzDqBD98Qprvz1X835GoCtwlxNc85pblc9YVwHcNYN + mP7wnPMXWcseafgS4NpKAMWque1nnHPn5+WbANrHAaiizjh78dyPlhs+ArjpRYC5+rbW5pbvT198 + CZanxfKK2tCg25n4KsYxP6S2nbPowsefSy3F+KcA8zadPX9O81VvnncY4Ng76D71nOYL29Pvi7Ng + ehv6W89pXdR86yUbzge24HuMX3Zu8zmt75e/mgusoBAg96r2+QsXBUywEvuzh/u3L2ht/8H9/EKA + xU0Axg+Aj4Wi5IMVj770+KyI4YchPgy47Pzi4hc53xhzweSjb/UOUSeETUJfFQhAgvkU4Ae2V73h + 6FtHVqoTpJIGSPwmbjFlwlrQw4UgYk49uABr1X6P9QqYKsrGCrtADmHyW+QFWKSFKL4CjwgQBkKE + UhBlMlGQfQzOwB5IvQiLVfGyx0+xWsEKYH+R2qC8Q3BYgQV4mrhHHs57CtGy8OOtYS/jbL0JsfAr + RXYxrP61eX5OxE2/fZm/RBT+/0694rNQdlL7d6D9b9R/MpGNBvWvzjMM982p0q4bnCauObXvIL8G + WCm7HRp+ykfQ/3RZmB53yrRjJ8+rqMF6nzl5muwt8PxUfSeK2Hu8HJn9hHGYDxUnzXMRmAbVuQku + +zV1nkxkMnD8Ej/xWxj9q8uuhT/8Ct/aQXEljP219f1vFPGFwXPG5cS+nijsX3DWz5WLPj87tj/l + 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 + KrFHQKlmZxW8qHpfRETYMZZdos8K9Tc0bmVNGZWf8PP4qiK6kZk7D1Hp68k6+cqujnrMi0+QTUvB + 02LWgEvJpMfQvQGNGyJ9Cp8e2OiVa3QkzxGYHxUIMdPMzhyDZ2iKtYRjadyCZoFjccXgVeuxLKL/ + AfpFWhMNCmVuZHN0cmVhbQ0KZW5kb2JqDQoyNTMgMCBvYmoNCjw8L1R5cGUvTWV0YWRhdGEvU3Vi + dHlwZS9YTUwvTGVuZ3RoIDMwODQ+Pg0Kc3RyZWFtDQo8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9 + Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/Pjx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6 + bWV0YS8iIHg6eG1wdGs9IjMuMS03MDEiPgo8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cu + dzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgo8cmRmOkRlc2NyaXB0aW9uIHJkZjph + Ym91dD0iIiAgeG1sbnM6cGRmPSJodHRwOi8vbnMuYWRvYmUuY29tL3BkZi8xLjMvIj4KPHBkZjpQ + cm9kdWNlcj5NaWNyb3NvZnTCriBXb3JkIGZvciBPZmZpY2UgMzY1PC9wZGY6UHJvZHVjZXI+PC9y + ZGY6RGVzY3JpcHRpb24+CjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiICB4bWxuczpkYz0i + aHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iPgo8ZGM6Y3JlYXRvcj48cmRmOlNlcT48 + cmRmOmxpPktyaXN0YSBQcmF0aWNvPC9yZGY6bGk+PC9yZGY6U2VxPjwvZGM6Y3JlYXRvcj48L3Jk + ZjpEZXNjcmlwdGlvbj4KPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgIHhtbG5zOnhtcD0i + aHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyI+Cjx4bXA6Q3JlYXRvclRvb2w+TWljcm9zb2Z0 + wq4gV29yZCBmb3IgT2ZmaWNlIDM2NTwveG1wOkNyZWF0b3JUb29sPjx4bXA6Q3JlYXRlRGF0ZT4y + MDIwLTA0LTIyVDE2OjQ1OjI5LTA3OjAwPC94bXA6Q3JlYXRlRGF0ZT48eG1wOk1vZGlmeURhdGU+ + MjAyMC0wNC0yMlQxNjo0NToyOS0wNzowMDwveG1wOk1vZGlmeURhdGU+PC9yZGY6RGVzY3JpcHRp + b24+CjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiICB4bWxuczp4bXBNTT0iaHR0cDovL25z + LmFkb2JlLmNvbS94YXAvMS4wL21tLyI+Cjx4bXBNTTpEb2N1bWVudElEPnV1aWQ6NThCQjA4MDUt + RjY5Ri00NDBGLTgzOUItMURFMDI1NjUxREUyPC94bXBNTTpEb2N1bWVudElEPjx4bXBNTTpJbnN0 + YW5jZUlEPnV1aWQ6NThCQjA4MDUtRjY5Ri00NDBGLTgzOUItMURFMDI1NjUxREUyPC94bXBNTTpJ + bnN0YW5jZUlEPjwvcmRmOkRlc2NyaXB0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKPC9y + ZGY6UkRGPjwveDp4bXBtZXRhPjw/eHBhY2tldCBlbmQ9InciPz4NCmVuZHN0cmVhbQ0KZW5kb2Jq + DQoyNTQgMCBvYmoNCjw8L0Rpc3BsYXlEb2NUaXRsZSB0cnVlPj4NCmVuZG9iag0KMjU1IDAgb2Jq + DQo8PC9UeXBlL1hSZWYvU2l6ZSAyNTUvV1sgMSA0IDJdIC9Sb290IDEgMCBSL0luZm8gMTUgMCBS + L0lEWzwwNTA4QkI1ODlGRjYwRjQ0ODM5QjFERTAyNTY1MURFMj48MDUwOEJCNTg5RkY2MEY0NDgz + OUIxREUwMjU2NTFERTI+XSAvRmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0aCA1MDc+Pg0Kc3RyZWFt + DQp4nDXV93fPZxQH8E9sSojZGkG0tQmKGrVHFKU2tUeomrXTauy9YlMdKFV7U3vvHUWJvX7rv5B+ + 83nx3HOe17nn3Ht/fQdB5KWnR0X+mCDIYAv+C4lKD8mTFBJdJiRvASRgcki+SiExcSH5dQU7hhRK + DCk9JggyRU4XCZ7jBV7iFZ7h3eTryF5c8vsuO6KQCZmRBVmRDTmQE7nwAXIjD6LRCoVRCPmQF/kR + g4IogASUwIcogqL4CMVRDB+jJGJRGqVQBnGoiE/xCcqhLCqgPKqjMiqhKqqgGuJRB5+hBmqhJj5H + bTRCPdTFF6iPhmiAlmiCxmiGpmiB5vgSrdEGbfEV2qE9vkYHdEQndEYXdEU3dEcPfIOe6IXe6IO+ + 6If+eIMBGIhBSMRgDMG3GIrvMAzDMQIjMQqj8T3GYCzGYTwmYCImIQk/4EdMxk9IxhRMxTRMxwzM + xCzMxhzMxTzMx1ssxQIsxCIsxhKkYBmWYwVWYhVWYw3uYj1+x89Yi1+wDr/hV6RiCzZiAzbhD/yJ + zdiFrfgL27ENO7EDB7EHu7EPe3EA+3Ech3EIR/A3juEozuEkTuA0TuEszuAqLuA8LuEiruAy7uA6 + ruEmbuA2buEf3MN9PMC/eIhHSMNjPMHTSFpUSQ3DJj4jvSJVPCQqNmRGWkhK/SD4H/tbjC8NCmVu + ZHN0cmVhbQ0KZW5kb2JqDQp4cmVmDQowIDI1Ng0KMDAwMDAwMDAxNiA2NTUzNSBmDQowMDAwMDAw + MDE3IDAwMDAwIG4NCjAwMDAwMDAxNjggMDAwMDAgbg0KMDAwMDAwMDIzOCAwMDAwMCBuDQowMDAw + MDAwNTExIDAwMDAwIG4NCjAwMDAwMDM0NTAgMDAwMDAgbg0KMDAwMDAwMzYxOSAwMDAwMCBuDQow + MDAwMDAzODU5IDAwMDAwIG4NCjAwMDAwMDM5MTIgMDAwMDAgbg0KMDAwMDAwMzk2NSAwMDAwMCBu + DQowMDAwMDA0MTQwIDAwMDAwIG4NCjAwMDAwMDQzODYgMDAwMDAgbg0KMDAwMDAwNDY1MiAwMDAw + MCBuDQowMDAwMDA1MjAzIDAwMDAwIG4NCjAwMDAwMDU0NzggMDAwMDAgbg0KMDAwMDAwODU2MyAw + MDAwMCBuDQowMDAwMDAwMDE3IDY1NTM1IGYNCjAwMDAwMDAwMTggNjU1MzUgZg0KMDAwMDAwMDAx + OSA2NTUzNSBmDQowMDAwMDAwMDIwIDY1NTM1IGYNCjAwMDAwMDAwMjEgNjU1MzUgZg0KMDAwMDAw + MDAyMiA2NTUzNSBmDQowMDAwMDAwMDIzIDY1NTM1IGYNCjAwMDAwMDAwMjQgNjU1MzUgZg0KMDAw + MDAwMDAyNSA2NTUzNSBmDQowMDAwMDAwMDI2IDY1NTM1IGYNCjAwMDAwMDAwMjcgNjU1MzUgZg0K + MDAwMDAwMDAyOCA2NTUzNSBmDQowMDAwMDAwMDI5IDY1NTM1IGYNCjAwMDAwMDAwMzAgNjU1MzUg + Zg0KMDAwMDAwMDAzMSA2NTUzNSBmDQowMDAwMDAwMDMyIDY1NTM1IGYNCjAwMDAwMDAwMzMgNjU1 + MzUgZg0KMDAwMDAwMDAzNCA2NTUzNSBmDQowMDAwMDAwMDM1IDY1NTM1IGYNCjAwMDAwMDAwMzYg + NjU1MzUgZg0KMDAwMDAwMDAzNyA2NTUzNSBmDQowMDAwMDAwMDM4IDY1NTM1IGYNCjAwMDAwMDAw + MzkgNjU1MzUgZg0KMDAwMDAwMDA0MCA2NTUzNSBmDQowMDAwMDAwMDQxIDY1NTM1IGYNCjAwMDAw + MDAwNDIgNjU1MzUgZg0KMDAwMDAwMDA0MyA2NTUzNSBmDQowMDAwMDAwMDQ0IDY1NTM1IGYNCjAw + MDAwMDAwNDUgNjU1MzUgZg0KMDAwMDAwMDA0NiA2NTUzNSBmDQowMDAwMDAwMDQ3IDY1NTM1IGYN + CjAwMDAwMDAwNDggNjU1MzUgZg0KMDAwMDAwMDA0OSA2NTUzNSBmDQowMDAwMDAwMDUwIDY1NTM1 + IGYNCjAwMDAwMDAwNTEgNjU1MzUgZg0KMDAwMDAwMDA1MiA2NTUzNSBmDQowMDAwMDAwMDUzIDY1 + NTM1IGYNCjAwMDAwMDAwNTQgNjU1MzUgZg0KMDAwMDAwMDA1NSA2NTUzNSBmDQowMDAwMDAwMDU2 + IDY1NTM1IGYNCjAwMDAwMDAwNTcgNjU1MzUgZg0KMDAwMDAwMDA1OCA2NTUzNSBmDQowMDAwMDAw + MDU5IDY1NTM1IGYNCjAwMDAwMDAwNjAgNjU1MzUgZg0KMDAwMDAwMDA2MSA2NTUzNSBmDQowMDAw + MDAwMDYyIDY1NTM1IGYNCjAwMDAwMDAwNjMgNjU1MzUgZg0KMDAwMDAwMDA2NCA2NTUzNSBmDQow + MDAwMDAwMDY1IDY1NTM1IGYNCjAwMDAwMDAwNjYgNjU1MzUgZg0KMDAwMDAwMDA2NyA2NTUzNSBm + DQowMDAwMDAwMDY4IDY1NTM1IGYNCjAwMDAwMDAwNjkgNjU1MzUgZg0KMDAwMDAwMDA3MCA2NTUz + NSBmDQowMDAwMDAwMDcxIDY1NTM1IGYNCjAwMDAwMDAwNzIgNjU1MzUgZg0KMDAwMDAwMDA3MyA2 + NTUzNSBmDQowMDAwMDAwMDc0IDY1NTM1IGYNCjAwMDAwMDAwNzUgNjU1MzUgZg0KMDAwMDAwMDA3 + NiA2NTUzNSBmDQowMDAwMDAwMDc3IDY1NTM1IGYNCjAwMDAwMDAwNzggNjU1MzUgZg0KMDAwMDAw + MDA3OSA2NTUzNSBmDQowMDAwMDAwMDgwIDY1NTM1IGYNCjAwMDAwMDAwODEgNjU1MzUgZg0KMDAw + MDAwMDA4MiA2NTUzNSBmDQowMDAwMDAwMDgzIDY1NTM1IGYNCjAwMDAwMDAwODQgNjU1MzUgZg0K + MDAwMDAwMDA4NSA2NTUzNSBmDQowMDAwMDAwMDg2IDY1NTM1IGYNCjAwMDAwMDAwODcgNjU1MzUg + Zg0KMDAwMDAwMDA4OCA2NTUzNSBmDQowMDAwMDAwMDg5IDY1NTM1IGYNCjAwMDAwMDAwOTAgNjU1 + MzUgZg0KMDAwMDAwMDA5MSA2NTUzNSBmDQowMDAwMDAwMDkyIDY1NTM1IGYNCjAwMDAwMDAwOTMg + NjU1MzUgZg0KMDAwMDAwMDA5NCA2NTUzNSBmDQowMDAwMDAwMDk1IDY1NTM1IGYNCjAwMDAwMDAw + OTYgNjU1MzUgZg0KMDAwMDAwMDA5NyA2NTUzNSBmDQowMDAwMDAwMDk4IDY1NTM1IGYNCjAwMDAw + MDAwOTkgNjU1MzUgZg0KMDAwMDAwMDEwMCA2NTUzNSBmDQowMDAwMDAwMTAxIDY1NTM1IGYNCjAw + MDAwMDAxMDIgNjU1MzUgZg0KMDAwMDAwMDEwMyA2NTUzNSBmDQowMDAwMDAwMTA0IDY1NTM1IGYN + CjAwMDAwMDAxMDUgNjU1MzUgZg0KMDAwMDAwMDEwNiA2NTUzNSBmDQowMDAwMDAwMTA3IDY1NTM1 + IGYNCjAwMDAwMDAxMDggNjU1MzUgZg0KMDAwMDAwMDEwOSA2NTUzNSBmDQowMDAwMDAwMTEwIDY1 + NTM1IGYNCjAwMDAwMDAxMTEgNjU1MzUgZg0KMDAwMDAwMDExMiA2NTUzNSBmDQowMDAwMDAwMTEz + IDY1NTM1IGYNCjAwMDAwMDAxMTQgNjU1MzUgZg0KMDAwMDAwMDExNSA2NTUzNSBmDQowMDAwMDAw + MTE2IDY1NTM1IGYNCjAwMDAwMDAxMTcgNjU1MzUgZg0KMDAwMDAwMDExOCA2NTUzNSBmDQowMDAw + MDAwMTE5IDY1NTM1IGYNCjAwMDAwMDAxMjAgNjU1MzUgZg0KMDAwMDAwMDEyMSA2NTUzNSBmDQow + MDAwMDAwMTIyIDY1NTM1IGYNCjAwMDAwMDAxMjMgNjU1MzUgZg0KMDAwMDAwMDEyNCA2NTUzNSBm + DQowMDAwMDAwMTI1IDY1NTM1IGYNCjAwMDAwMDAxMjYgNjU1MzUgZg0KMDAwMDAwMDEyNyA2NTUz + NSBmDQowMDAwMDAwMTI4IDY1NTM1IGYNCjAwMDAwMDAxMjkgNjU1MzUgZg0KMDAwMDAwMDEzMCA2 + NTUzNSBmDQowMDAwMDAwMTMxIDY1NTM1IGYNCjAwMDAwMDAxMzIgNjU1MzUgZg0KMDAwMDAwMDEz + MyA2NTUzNSBmDQowMDAwMDAwMTM0IDY1NTM1IGYNCjAwMDAwMDAxMzUgNjU1MzUgZg0KMDAwMDAw + MDEzNiA2NTUzNSBmDQowMDAwMDAwMTM3IDY1NTM1IGYNCjAwMDAwMDAxMzggNjU1MzUgZg0KMDAw + MDAwMDEzOSA2NTUzNSBmDQowMDAwMDAwMTQwIDY1NTM1IGYNCjAwMDAwMDAxNDEgNjU1MzUgZg0K + MDAwMDAwMDE0MiA2NTUzNSBmDQowMDAwMDAwMTQzIDY1NTM1IGYNCjAwMDAwMDAxNDQgNjU1MzUg + Zg0KMDAwMDAwMDE0NSA2NTUzNSBmDQowMDAwMDAwMTQ2IDY1NTM1IGYNCjAwMDAwMDAxNDcgNjU1 + MzUgZg0KMDAwMDAwMDE0OCA2NTUzNSBmDQowMDAwMDAwMTQ5IDY1NTM1IGYNCjAwMDAwMDAxNTAg + NjU1MzUgZg0KMDAwMDAwMDE1MSA2NTUzNSBmDQowMDAwMDAwMTUyIDY1NTM1IGYNCjAwMDAwMDAx + NTMgNjU1MzUgZg0KMDAwMDAwMDE1NCA2NTUzNSBmDQowMDAwMDAwMTU1IDY1NTM1IGYNCjAwMDAw + MDAxNTYgNjU1MzUgZg0KMDAwMDAwMDE1NyA2NTUzNSBmDQowMDAwMDAwMTU4IDY1NTM1IGYNCjAw + MDAwMDAxNTkgNjU1MzUgZg0KMDAwMDAwMDE2MCA2NTUzNSBmDQowMDAwMDAwMTYxIDY1NTM1IGYN + CjAwMDAwMDAxNjIgNjU1MzUgZg0KMDAwMDAwMDE2MyA2NTUzNSBmDQowMDAwMDAwMTY0IDY1NTM1 + IGYNCjAwMDAwMDAxNjUgNjU1MzUgZg0KMDAwMDAwMDE2NiA2NTUzNSBmDQowMDAwMDAwMTY3IDY1 + NTM1IGYNCjAwMDAwMDAxNjggNjU1MzUgZg0KMDAwMDAwMDE2OSA2NTUzNSBmDQowMDAwMDAwMTcw + IDY1NTM1IGYNCjAwMDAwMDAxNzEgNjU1MzUgZg0KMDAwMDAwMDE3MiA2NTUzNSBmDQowMDAwMDAw + MTczIDY1NTM1IGYNCjAwMDAwMDAxNzQgNjU1MzUgZg0KMDAwMDAwMDE3NSA2NTUzNSBmDQowMDAw + MDAwMTc2IDY1NTM1IGYNCjAwMDAwMDAxNzcgNjU1MzUgZg0KMDAwMDAwMDE3OCA2NTUzNSBmDQow + MDAwMDAwMTc5IDY1NTM1IGYNCjAwMDAwMDAxODAgNjU1MzUgZg0KMDAwMDAwMDE4MSA2NTUzNSBm + DQowMDAwMDAwMTgyIDY1NTM1IGYNCjAwMDAwMDAxODMgNjU1MzUgZg0KMDAwMDAwMDE4NCA2NTUz + NSBmDQowMDAwMDAwMTg1IDY1NTM1IGYNCjAwMDAwMDAxODYgNjU1MzUgZg0KMDAwMDAwMDE4NyA2 + NTUzNSBmDQowMDAwMDAwMTg4IDY1NTM1IGYNCjAwMDAwMDAxODkgNjU1MzUgZg0KMDAwMDAwMDE5 + MCA2NTUzNSBmDQowMDAwMDAwMTkxIDY1NTM1IGYNCjAwMDAwMDAxOTIgNjU1MzUgZg0KMDAwMDAw + MDE5MyA2NTUzNSBmDQowMDAwMDAwMTk0IDY1NTM1IGYNCjAwMDAwMDAxOTUgNjU1MzUgZg0KMDAw + MDAwMDE5NiA2NTUzNSBmDQowMDAwMDAwMTk3IDY1NTM1IGYNCjAwMDAwMDAxOTggNjU1MzUgZg0K + MDAwMDAwMDE5OSA2NTUzNSBmDQowMDAwMDAwMjAwIDY1NTM1IGYNCjAwMDAwMDAyMDEgNjU1MzUg + Zg0KMDAwMDAwMDIwMiA2NTUzNSBmDQowMDAwMDAwMjAzIDY1NTM1IGYNCjAwMDAwMDAyMDQgNjU1 + MzUgZg0KMDAwMDAwMDIwNSA2NTUzNSBmDQowMDAwMDAwMjA2IDY1NTM1IGYNCjAwMDAwMDAyMDcg + NjU1MzUgZg0KMDAwMDAwMDIwOCA2NTUzNSBmDQowMDAwMDAwMjA5IDY1NTM1IGYNCjAwMDAwMDAy + MTAgNjU1MzUgZg0KMDAwMDAwMDIxMSA2NTUzNSBmDQowMDAwMDAwMjEyIDY1NTM1IGYNCjAwMDAw + MDAyMTMgNjU1MzUgZg0KMDAwMDAwMDIxNCA2NTUzNSBmDQowMDAwMDAwMjE1IDY1NTM1IGYNCjAw + MDAwMDAyMTYgNjU1MzUgZg0KMDAwMDAwMDIxNyA2NTUzNSBmDQowMDAwMDAwMjE4IDY1NTM1IGYN + CjAwMDAwMDAyMTkgNjU1MzUgZg0KMDAwMDAwMDIyMCA2NTUzNSBmDQowMDAwMDAwMjIxIDY1NTM1 + IGYNCjAwMDAwMDAyMjIgNjU1MzUgZg0KMDAwMDAwMDIyMyA2NTUzNSBmDQowMDAwMDAwMjI0IDY1 + NTM1IGYNCjAwMDAwMDAyMjUgNjU1MzUgZg0KMDAwMDAwMDIyNiA2NTUzNSBmDQowMDAwMDAwMjI3 + IDY1NTM1IGYNCjAwMDAwMDAyMjggNjU1MzUgZg0KMDAwMDAwMDIyOSA2NTUzNSBmDQowMDAwMDAw + MjMwIDY1NTM1IGYNCjAwMDAwMDAyMzEgNjU1MzUgZg0KMDAwMDAwMDIzMiA2NTUzNSBmDQowMDAw + MDAwMjMzIDY1NTM1IGYNCjAwMDAwMDAyMzQgNjU1MzUgZg0KMDAwMDAwMDIzNSA2NTUzNSBmDQow + MDAwMDAwMjM2IDY1NTM1IGYNCjAwMDAwMDAyMzcgNjU1MzUgZg0KMDAwMDAwMDIzOCA2NTUzNSBm + DQowMDAwMDAwMjM5IDY1NTM1IGYNCjAwMDAwMDAyNDAgNjU1MzUgZg0KMDAwMDAwMDI0MSA2NTUz + NSBmDQowMDAwMDAwMjQyIDY1NTM1IGYNCjAwMDAwMDAyNDMgNjU1MzUgZg0KMDAwMDAwMDI0NCA2 + NTUzNSBmDQowMDAwMDAwMjQ1IDY1NTM1IGYNCjAwMDAwMDAyNDYgNjU1MzUgZg0KMDAwMDAwMDI0 + NyA2NTUzNSBmDQowMDAwMDAwMjQ4IDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAx + MTk4NyAwMDAwMCBuDQowMDAwMDEyMjg5IDAwMDAwIG4NCjAwMDAwNjU1NjQgMDAwMDAgbg0KMDAw + MDA2NTgyMiAwMDAwMCBuDQowMDAwMDk5NTQ4IDAwMDAwIG4NCjAwMDAxMDI3MTYgMDAwMDAgbg0K + MDAwMDEwMjc2MiAwMDAwMCBuDQp0cmFpbGVyDQo8PC9TaXplIDI1Ni9Sb290IDEgMCBSL0luZm8g + MTUgMCBSL0lEWzwwNTA4QkI1ODlGRjYwRjQ0ODM5QjFERTAyNTY1MURFMj48MDUwOEJCNTg5RkY2 + MEY0NDgzOUIxREUwMjU2NTFERTI+XSA+Pg0Kc3RhcnR4cmVmDQoxMDM0NzINCiUlRU9GDQp4cmVm + DQowIDANCnRyYWlsZXINCjw8L1NpemUgMjU2L1Jvb3QgMSAwIFIvSW5mbyAxNSAwIFIvSURbPDA1 + MDhCQjU4OUZGNjBGNDQ4MzlCMURFMDI1NjUxREUyPjwwNTA4QkI1ODlGRjYwRjQ0ODM5QjFERTAy + NTY1MURFMj5dIC9QcmV2IDEwMzQ3Mi9YUmVmU3RtIDEwMjc2Mj4+DQpzdGFydHhyZWYNCjEwODc1 + Mg0KJSVFT0Y= + headers: + Content-Type: + - application/pdf + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/layout/analyze + response: + body: + string: '' + headers: + apim-request-id: a73bfcff-f43c-487e-81d2-f83e2ba19994 + content-length: '0' + date: Mon, 27 Apr 2020 23:27:05 GMT + operation-location: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/layout/analyzeResults/a73bfcff-f43c-487e-81d2-f83e2ba19994 + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '339' + status: + code: 202 + message: Accepted + url: https://westus.api.cognitive.microsoft.com//formrecognizer/v2.0-preview/layout/analyze +- request: + body: null + headers: + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/layout/analyzeResults/a73bfcff-f43c-487e-81d2-f83e2ba19994 + response: + body: + string: '{"status":"running","createdDateTime":"2020-04-27T23:27:06Z","lastUpdatedDateTime":"2020-04-27T23:27:11Z"}' + headers: + apim-request-id: 83e86ddb-019b-486b-a6d7-ee55aeb35e83 + content-type: application/json; charset=utf-8 + date: Mon, 27 Apr 2020 23:27:11 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + transfer-encoding: chunked + x-content-type-options: nosniff + x-envoy-upstream-service-time: '90' + status: + code: 200 + message: OK + url: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/layout/analyzeResults/a73bfcff-f43c-487e-81d2-f83e2ba19994 +- request: + body: null + headers: + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/layout/analyzeResults/a73bfcff-f43c-487e-81d2-f83e2ba19994 + response: + body: + string: '{"status":"running","createdDateTime":"2020-04-27T23:27:06Z","lastUpdatedDateTime":"2020-04-27T23:27:15Z"}' + headers: + apim-request-id: 10294758-bd1d-47bc-8745-7b64baac8db0 + content-type: application/json; charset=utf-8 + date: Mon, 27 Apr 2020 23:27:16 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + transfer-encoding: chunked + x-content-type-options: nosniff + x-envoy-upstream-service-time: '104' + status: + code: 200 + message: OK + url: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/layout/analyzeResults/a73bfcff-f43c-487e-81d2-f83e2ba19994 +- request: + body: null + headers: + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/layout/analyzeResults/a73bfcff-f43c-487e-81d2-f83e2ba19994 + response: + body: + string: '{"status":"succeeded","createdDateTime":"2020-04-27T23:27:06Z","lastUpdatedDateTime":"2020-04-27T23:27:21Z","analyzeResult":{"version":"2.0.0","readResults":[{"page":1,"language":"en","angle":0,"width":8.5,"height":11,"unit":"inch","lines":[{"language":"en","boundingBox":[0.8861,1.1217,2.3783,1.1217,2.3783,1.2812,0.8861,1.2812],"text":"Company + A Invoice","words":[{"boundingBox":[0.8861,1.1232,1.6203,1.1232,1.6203,1.2812,0.8861,1.2812],"text":"Company","confidence":1},{"boundingBox":[1.6696,1.1242,1.7749,1.1242,1.7749,1.2473,1.6696,1.2473],"text":"A","confidence":1},{"boundingBox":[1.8389,1.1217,2.3783,1.1217,2.3783,1.2485,1.8389,1.2485],"text":"Invoice","confidence":1}]},{"language":"en","boundingBox":[6.0211,1.0656,7.0357,1.0656,7.0357,1.2121,6.0211,1.2121],"text":"Invoice + For:","words":[{"boundingBox":[6.0211,1.0656,6.6362,1.0656,6.6362,1.2121,6.0211,1.2121],"text":"Invoice","confidence":1},{"boundingBox":[6.7147,1.0691,7.0357,1.0691,7.0357,1.2121,6.7147,1.2121],"text":"For:","confidence":1}]},{"language":"en","boundingBox":[0.8791,1.4825,1.5657,1.4825,1.5657,1.6155,0.8791,1.6155],"text":"Address:","words":[{"boundingBox":[0.8791,1.4825,1.5657,1.4825,1.5657,1.6155,0.8791,1.6155],"text":"Address:","confidence":1}]},{"language":"en","boundingBox":[6.0164,1.4503,6.8967,1.4503,6.8967,1.5931,6.0164,1.5931],"text":"Bilbo + Baggins","words":[{"boundingBox":[6.0164,1.4503,6.3392,1.4503,6.3392,1.5649,6.0164,1.5649],"text":"Bilbo","confidence":1},{"boundingBox":[6.3960,1.4556,6.8967,1.4556,6.8967,1.5931,6.3960,1.5931],"text":"Baggins","confidence":1}]},{"language":"en","boundingBox":[6.0165,1.6707,7.1006,1.6707,7.1006,1.7854,6.0165,1.7854],"text":"123 + Hobbit Lane","words":[{"boundingBox":[6.0165,1.6772,6.2434,1.6772,6.2434,1.7854,6.0165,1.7854],"text":"123","confidence":1},{"boundingBox":[6.3033,1.6707,6.7463,1.6707,6.7463,1.7854,6.3033,1.7854],"text":"Hobbit","confidence":1},{"boundingBox":[6.8030,1.6782,7.1006,1.6782,7.1006,1.7854,6.8030,1.7854],"text":"Lane","confidence":1}]},{"language":"en","boundingBox":[0.8852,1.8460,1.713,1.8460,1.713,1.9554,0.8852,1.9554],"text":"567 + Main St.","words":[{"boundingBox":[0.8852,1.8472,1.1203,1.8472,1.1203,1.9554,0.8852,1.9554],"text":"567","confidence":1},{"boundingBox":[1.1777,1.8460,1.5022,1.8460,1.5022,1.9554,1.1777,1.9554],"text":"Main","confidence":1},{"boundingBox":[1.5558,1.8472,1.713,1.8472,1.713,1.9554,1.5558,1.9554],"text":"St.","confidence":1}]},{"language":"en","boundingBox":[6.0164,1.8910,6.9793,1.8910,6.9793,2.0275,6.0164,2.0275],"text":"Redmond, + WA","words":[{"boundingBox":[6.0164,1.8910,6.6861,1.8910,6.6861,2.0275,6.0164,2.0275],"text":"Redmond,","confidence":1},{"boundingBox":[6.7408,1.8982,6.9793,1.8982,6.9793,2.0044,6.7408,2.0044],"text":"WA","confidence":1}]},{"language":"en","boundingBox":[0.891,2.0610,1.8537,2.0610,1.8537,2.1975,0.891,2.1975],"text":"Redmond, + WA","words":[{"boundingBox":[0.891,2.0610,1.5605,2.0610,1.5605,2.1975,0.891,2.1975],"text":"Redmond,","confidence":1},{"boundingBox":[1.6152,2.0682,1.8537,2.0682,1.8537,2.1744,1.6152,2.1744],"text":"WA","confidence":1}]},{"language":"en","boundingBox":[6.0105,2.1187,6.9371,2.1187,6.9371,2.2254,6.0105,2.2254],"text":"555-555-5555","words":[{"boundingBox":[6.0105,2.1187,6.9371,2.1187,6.9371,2.2254,6.0105,2.2254],"text":"555-555-5555","confidence":1}]},{"language":"en","boundingBox":[0.8852,2.2887,1.8119,2.2887,1.8119,2.3954,0.8852,2.3954],"text":"555-555-5555","words":[{"boundingBox":[0.8852,2.2887,1.8119,2.2887,1.8119,2.3954,0.8852,2.3954],"text":"555-555-5555","confidence":1}]},{"language":"en","boundingBox":[1.0943,3.0018,1.3842,3.0018,1.3842,3.1090,1.0943,3.1090],"text":"Item","words":[{"boundingBox":[1.0943,3.0018,1.3842,3.0018,1.3842,3.1090,1.0943,3.1090],"text":"Item","confidence":1}]},{"language":"en","boundingBox":[3.2527,2.9996,3.8367,2.9996,3.8367,3.1371,3.2527,3.1371],"text":"Quantity","words":[{"boundingBox":[3.2527,2.9996,3.8367,2.9996,3.8367,3.1371,3.2527,3.1371],"text":"Quantity","confidence":1}]},{"language":"en","boundingBox":[5.4230,2.9996,5.7372,2.9996,5.7372,3.1090,5.4230,3.1090],"text":"Price","words":[{"boundingBox":[5.4230,2.9996,5.7372,2.9996,5.7372,3.1090,5.4230,3.1090],"text":"Price","confidence":1}]},{"language":"en","boundingBox":[1.0832,3.2118,1.174,3.2118,1.174,3.3180,1.0832,3.3180],"text":"A","words":[{"boundingBox":[1.0832,3.2118,1.174,3.2118,1.174,3.3180,1.0832,3.3180],"text":"A","confidence":1}]},{"language":"en","boundingBox":[3.2589,3.2116,3.3202,3.2116,3.3202,3.3176,3.2589,3.3176],"text":"1","words":[{"boundingBox":[3.2589,3.2116,3.3202,3.2116,3.3202,3.3176,3.2589,3.3176],"text":"1","confidence":1}]},{"language":"en","boundingBox":[5.4232,3.2108,5.7784,3.2108,5.7784,3.3190,5.4232,3.3190],"text":"10.99","words":[{"boundingBox":[5.4232,3.2108,5.7784,3.2108,5.7784,3.3190,5.4232,3.3190],"text":"10.99","confidence":1}]},{"language":"en","boundingBox":[1.0943,3.4256,1.1637,3.4256,1.1637,3.5310,1.0943,3.5310],"text":"B","words":[{"boundingBox":[1.0943,3.4256,1.1637,3.4256,1.1637,3.5310,1.0943,3.5310],"text":"B","confidence":1}]},{"language":"en","boundingBox":[3.2541,3.4241,3.3199,3.4241,3.3199,3.5310,3.2541,3.5310],"text":"2","words":[{"boundingBox":[3.2541,3.4241,3.3199,3.4241,3.3199,3.5310,3.2541,3.5310],"text":"2","confidence":1}]},{"language":"en","boundingBox":[5.4232,3.4241,5.7789,3.4241,5.7789,3.5323,5.4232,3.5323],"text":"14.67","words":[{"boundingBox":[5.4232,3.4241,5.7789,3.4241,5.7789,3.5323,5.4232,3.5323],"text":"14.67","confidence":1}]},{"language":"en","boundingBox":[1.0882,3.6343,1.1647,3.6343,1.1647,3.7421,1.0882,3.7421],"text":"C","words":[{"boundingBox":[1.0882,3.6343,1.1647,3.6343,1.1647,3.7421,1.0882,3.7421],"text":"C","confidence":1}]},{"language":"en","boundingBox":[3.2486,3.6351,3.3244,3.6351,3.3244,3.7413,3.2486,3.7413],"text":"4","words":[{"boundingBox":[3.2486,3.6351,3.3244,3.6351,3.3244,3.7413,3.2486,3.7413],"text":"4","confidence":1}]},{"language":"en","boundingBox":[5.4232,3.6341,5.7800,3.6341,5.7800,3.7423,5.4232,3.7423],"text":"15.66","words":[{"boundingBox":[5.4232,3.6341,5.7800,3.6341,5.7800,3.7423,5.4232,3.7423],"text":"15.66","confidence":1}]},{"language":"en","boundingBox":[1.0943,3.8456,1.1753,3.8456,1.1753,3.9510,1.0943,3.9510],"text":"D","words":[{"boundingBox":[1.0943,3.8456,1.1753,3.8456,1.1753,3.9510,1.0943,3.9510],"text":"D","confidence":1}]},{"language":"en","boundingBox":[3.2589,3.8450,3.3202,3.8450,3.3202,3.9510,3.2589,3.9510],"text":"1","words":[{"boundingBox":[3.2589,3.8450,3.3202,3.8450,3.3202,3.9510,3.2589,3.9510],"text":"1","confidence":1}]},{"language":"en","boundingBox":[5.4232,3.8441,5.7809,3.8441,5.7809,3.9523,5.4232,3.9523],"text":"12.00","words":[{"boundingBox":[5.4232,3.8441,5.7809,3.8441,5.7809,3.9523,5.4232,3.9523],"text":"12.00","confidence":1}]},{"language":"en","boundingBox":[1.0943,4.0561,1.153,4.0561,1.153,4.1614,1.0943,4.1614],"text":"E","words":[{"boundingBox":[1.0943,4.0561,1.153,4.0561,1.153,4.1614,1.0943,4.1614],"text":"E","confidence":1}]},{"language":"en","boundingBox":[3.2486,4.0556,3.3244,4.0556,3.3244,4.1617,3.2486,4.1617],"text":"4","words":[{"boundingBox":[3.2486,4.0556,3.3244,4.0556,3.3244,4.1617,3.2486,4.1617],"text":"4","confidence":1}]},{"language":"en","boundingBox":[5.4232,4.0546,5.7810,4.0546,5.7810,4.1627,5.4232,4.1627],"text":"10.00","words":[{"boundingBox":[5.4232,4.0546,5.7810,4.0546,5.7810,4.1627,5.4232,4.1627],"text":"10.00","confidence":1}]},{"language":"en","boundingBox":[1.0943,4.2661,1.1497,4.2661,1.1497,4.3717,1.0943,4.3717],"text":"F","words":[{"boundingBox":[1.0943,4.2661,1.1497,4.2661,1.1497,4.3717,1.0943,4.3717],"text":"F","confidence":1}]},{"language":"en","boundingBox":[3.2534,4.2646,3.3226,4.2646,3.3226,4.3727,3.2534,4.3727],"text":"6","words":[{"boundingBox":[3.2534,4.2646,3.3226,4.2646,3.3226,4.3727,3.2534,4.3727],"text":"6","confidence":1}]},{"language":"en","boundingBox":[5.4232,4.2646,5.7809,4.2646,5.7809,4.3727,5.4232,4.3727],"text":"12.00","words":[{"boundingBox":[5.4232,4.2646,5.7809,4.2646,5.7809,4.3727,5.4232,4.3727],"text":"12.00","confidence":1}]},{"language":"en","boundingBox":[1.0877,4.4746,1.1735,4.4746,1.1735,4.5827,1.0877,4.5827],"text":"G","words":[{"boundingBox":[1.0877,4.4746,1.1735,4.4746,1.1735,4.5827,1.0877,4.5827],"text":"G","confidence":1}]},{"language":"en","boundingBox":[3.2514,4.4746,3.3224,4.4746,3.3224,4.5827,3.2514,4.5827],"text":"8","words":[{"boundingBox":[3.2514,4.4746,3.3224,4.4746,3.3224,4.5827,3.2514,4.5827],"text":"8","confidence":1}]},{"language":"en","boundingBox":[5.4184,4.4746,5.7810,4.4746,5.7810,4.5827,5.4184,4.5827],"text":"22.00","words":[{"boundingBox":[5.4184,4.4746,5.7810,4.4746,5.7810,4.5827,5.4184,4.5827],"text":"22.00","confidence":1}]},{"language":"en","boundingBox":[5.5075,4.8981,6.6320,4.8981,6.6320,5.0131,5.5075,5.0131],"text":"Subtotal: + 300.00","words":[{"boundingBox":[5.5075,4.8981,6.1249,4.8981,6.1249,5.0131,5.5075,5.0131],"text":"Subtotal:","confidence":1},{"boundingBox":[6.1794,4.9042,6.6320,4.9042,6.6320,5.0131,6.1794,5.0131],"text":"300.00","confidence":1}]},{"language":"en","boundingBox":[5.5034,5.1245,6.2022,5.1245,6.2022,5.2333,5.5034,5.2333],"text":"Tax: + 30.00","words":[{"boundingBox":[5.5034,5.1263,5.7812,5.1263,5.7812,5.2333,5.5034,5.2333],"text":"Tax:","confidence":1},{"boundingBox":[5.8360,5.1245,6.2022,5.1245,6.2022,5.2333,5.8360,5.2333],"text":"30.00","confidence":1}]},{"language":"en","boundingBox":[5.5034,5.3412,6.2587,5.3412,6.2587,5.481,5.5034,5.481],"text":"Tip: + 100.00","words":[{"boundingBox":[5.5034,5.3412,5.7515,5.3412,5.7515,5.481,5.5034,5.481],"text":"Tip:","confidence":1},{"boundingBox":[5.8110,5.3445,6.2587,5.3445,6.2587,5.4533,5.8110,5.4533],"text":"100.00","confidence":1}]},{"language":"en","boundingBox":[5.5034,5.5583,6.3987,5.5583,6.3987,5.6733,5.5034,5.6733],"text":"Total: + 430.00","words":[{"boundingBox":[5.5034,5.5583,5.8915,5.5583,5.8915,5.6733,5.5034,5.6733],"text":"Total:","confidence":1},{"boundingBox":[5.9420,5.5645,6.3987,5.5645,6.3987,5.6733,5.9420,5.6733],"text":"430.00","confidence":1}]},{"language":"en","boundingBox":[1.0055,6.6553,3.8342,6.6553,3.8342,6.7981,1.0055,6.7981],"text":"Signature: + ____ Bilbo Baggins__________","words":[{"boundingBox":[1.0055,6.6581,1.6987,6.6581,1.6987,6.7981,1.0055,6.7981],"text":"Signature:","confidence":1},{"boundingBox":[1.7470,6.7829,2.0809,6.7829,2.0809,6.7981,1.7470,6.7981],"text":"____","confidence":1},{"boundingBox":[2.0925,6.6553,2.4278,6.6553,2.4278,6.7703,2.0925,6.7703],"text":"Bilbo","confidence":1},{"boundingBox":[2.4823,6.6581,3.8342,6.6581,3.8342,6.7981,2.4823,6.7981],"text":"Baggins__________","confidence":1}]}]},{"page":2,"language":"en","angle":0,"width":8.4967,"height":10.9967,"unit":"inch","lines":[]},{"page":3,"language":"en","angle":0,"width":8.5,"height":11,"unit":"inch","lines":[{"language":"en","boundingBox":[0.8861,1.1217,2.3734,1.1217,2.3734,1.2812,0.8861,1.2812],"text":"Company + B Invoice","words":[{"boundingBox":[0.8861,1.1232,1.6203,1.1232,1.6203,1.2812,0.8861,1.2812],"text":"Company","confidence":1},{"boundingBox":[1.6836,1.1248,1.7640,1.1248,1.7640,1.2469,1.6836,1.2469],"text":"B","confidence":1},{"boundingBox":[1.8336,1.1217,2.3734,1.1217,2.3734,1.2485,1.8336,1.2485],"text":"Invoice","confidence":1}]},{"language":"en","boundingBox":[6.0211,1.0656,7.0357,1.0656,7.0357,1.2121,6.0211,1.2121],"text":"Invoice + For:","words":[{"boundingBox":[6.0211,1.0656,6.6362,1.0656,6.6362,1.2121,6.0211,1.2121],"text":"Invoice","confidence":1},{"boundingBox":[6.7147,1.0691,7.0357,1.0691,7.0357,1.2121,6.7147,1.2121],"text":"For:","confidence":1}]},{"language":"en","boundingBox":[0.8791,1.4825,1.5657,1.4825,1.5657,1.6155,0.8791,1.6155],"text":"Address:","words":[{"boundingBox":[0.8791,1.4825,1.5657,1.4825,1.5657,1.6155,0.8791,1.6155],"text":"Address:","confidence":1}]},{"language":"en","boundingBox":[6.0164,1.4506,6.9506,1.4506,6.9506,1.5931,6.0164,1.5931],"text":"Frodo + Baggins","words":[{"boundingBox":[6.0164,1.4506,6.3895,1.4506,6.3895,1.5649,6.0164,1.5649],"text":"Frodo","confidence":1},{"boundingBox":[6.4500,1.4556,6.9506,1.4556,6.9506,1.5931,6.4500,1.5931],"text":"Baggins","confidence":1}]},{"language":"en","boundingBox":[6.0165,1.6707,7.1006,1.6707,7.1006,1.7854,6.0165,1.7854],"text":"123 + Hobbit Lane","words":[{"boundingBox":[6.0165,1.6772,6.2434,1.6772,6.2434,1.7854,6.0165,1.7854],"text":"123","confidence":1},{"boundingBox":[6.3033,1.6707,6.7463,1.6707,6.7463,1.7854,6.3033,1.7854],"text":"Hobbit","confidence":1},{"boundingBox":[6.8030,1.6782,7.1006,1.6782,7.1006,1.7854,6.8030,1.7854],"text":"Lane","confidence":1}]},{"language":"en","boundingBox":[0.8852,1.8460,1.713,1.8460,1.713,1.9554,0.8852,1.9554],"text":"567 + Main St.","words":[{"boundingBox":[0.8852,1.8472,1.1203,1.8472,1.1203,1.9554,0.8852,1.9554],"text":"567","confidence":1},{"boundingBox":[1.1777,1.8460,1.5022,1.8460,1.5022,1.9554,1.1777,1.9554],"text":"Main","confidence":1},{"boundingBox":[1.5558,1.8472,1.713,1.8472,1.713,1.9554,1.5558,1.9554],"text":"St.","confidence":1}]},{"language":"en","boundingBox":[6.0164,1.8910,6.9793,1.8910,6.9793,2.0275,6.0164,2.0275],"text":"Redmond, + WA","words":[{"boundingBox":[6.0164,1.8910,6.6861,1.8910,6.6861,2.0275,6.0164,2.0275],"text":"Redmond,","confidence":1},{"boundingBox":[6.7408,1.8982,6.9793,1.8982,6.9793,2.0044,6.7408,2.0044],"text":"WA","confidence":1}]},{"language":"en","boundingBox":[0.891,2.0610,1.8537,2.0610,1.8537,2.1975,0.891,2.1975],"text":"Redmond, + WA","words":[{"boundingBox":[0.891,2.0610,1.5605,2.0610,1.5605,2.1975,0.891,2.1975],"text":"Redmond,","confidence":1},{"boundingBox":[1.6152,2.0682,1.8537,2.0682,1.8537,2.1744,1.6152,2.1744],"text":"WA","confidence":1}]},{"language":"en","boundingBox":[6.0105,2.1187,6.9371,2.1187,6.9371,2.2254,6.0105,2.2254],"text":"555-555-5555","words":[{"boundingBox":[6.0105,2.1187,6.9371,2.1187,6.9371,2.2254,6.0105,2.2254],"text":"555-555-5555","confidence":1}]},{"language":"en","boundingBox":[0.8852,2.2887,1.8119,2.2887,1.8119,2.3954,0.8852,2.3954],"text":"555-555-5555","words":[{"boundingBox":[0.8852,2.2887,1.8119,2.2887,1.8119,2.3954,0.8852,2.3954],"text":"555-555-5555","confidence":1}]},{"language":"en","boundingBox":[1.0943,3.0018,1.3842,3.0018,1.3842,3.1090,1.0943,3.1090],"text":"Item","words":[{"boundingBox":[1.0943,3.0018,1.3842,3.0018,1.3842,3.1090,1.0943,3.1090],"text":"Item","confidence":1}]},{"language":"en","boundingBox":[3.2527,2.9996,3.8367,2.9996,3.8367,3.1371,3.2527,3.1371],"text":"Quantity","words":[{"boundingBox":[3.2527,2.9996,3.8367,2.9996,3.8367,3.1371,3.2527,3.1371],"text":"Quantity","confidence":1}]},{"language":"en","boundingBox":[5.4230,2.9996,5.7372,2.9996,5.7372,3.1090,5.4230,3.1090],"text":"Price","words":[{"boundingBox":[5.4230,2.9996,5.7372,2.9996,5.7372,3.1090,5.4230,3.1090],"text":"Price","confidence":1}]},{"language":"en","boundingBox":[1.0832,3.2118,1.174,3.2118,1.174,3.3180,1.0832,3.3180],"text":"A","words":[{"boundingBox":[1.0832,3.2118,1.174,3.2118,1.174,3.3180,1.0832,3.3180],"text":"A","confidence":1}]},{"language":"en","boundingBox":[3.2589,3.2108,3.4067,3.2108,3.4067,3.3190,3.2589,3.3190],"text":"10","words":[{"boundingBox":[3.2589,3.2108,3.4067,3.2108,3.4067,3.3190,3.2589,3.3190],"text":"10","confidence":1}]},{"language":"en","boundingBox":[5.4232,3.2108,5.8617,3.2108,5.8617,3.3190,5.4232,3.3190],"text":"100.99","words":[{"boundingBox":[5.4232,3.2108,5.8617,3.2108,5.8617,3.3190,5.4232,3.3190],"text":"100.99","confidence":1}]},{"language":"en","boundingBox":[1.0943,3.4256,1.1637,3.4256,1.1637,3.5310,1.0943,3.5310],"text":"B","words":[{"boundingBox":[1.0943,3.4256,1.1637,3.4256,1.1637,3.5310,1.0943,3.5310],"text":"B","confidence":1}]},{"language":"en","boundingBox":[3.2541,3.4241,3.4067,3.4241,3.4067,3.5323,3.2541,3.5323],"text":"20","words":[{"boundingBox":[3.2541,3.4241,3.4067,3.4241,3.4067,3.5323,3.2541,3.5323],"text":"20","confidence":1}]},{"language":"en","boundingBox":[5.4232,3.4241,5.8622,3.4241,5.8622,3.5323,5.4232,3.5323],"text":"140.67","words":[{"boundingBox":[5.4232,3.4241,5.8622,3.4241,5.8622,3.5323,5.4232,3.5323],"text":"140.67","confidence":1}]},{"language":"en","boundingBox":[1.0882,3.6343,1.1647,3.6343,1.1647,3.7421,1.0882,3.7421],"text":"C","words":[{"boundingBox":[1.0882,3.6343,1.1647,3.6343,1.1647,3.7421,1.0882,3.7421],"text":"C","confidence":1}]},{"language":"en","boundingBox":[3.2486,3.6341,3.4067,3.6341,3.4067,3.7423,3.2486,3.7423],"text":"40","words":[{"boundingBox":[3.2486,3.6341,3.4067,3.6341,3.4067,3.7423,3.2486,3.7423],"text":"40","confidence":1}]},{"language":"en","boundingBox":[5.4232,3.6341,5.8634,3.6341,5.8634,3.7423,5.4232,3.7423],"text":"150.66","words":[{"boundingBox":[5.4232,3.6341,5.8634,3.6341,5.8634,3.7423,5.4232,3.7423],"text":"150.66","confidence":1}]},{"language":"en","boundingBox":[1.0943,3.8456,1.1753,3.8456,1.1753,3.9510,1.0943,3.9510],"text":"D","words":[{"boundingBox":[1.0943,3.8456,1.1753,3.8456,1.1753,3.9510,1.0943,3.9510],"text":"D","confidence":1}]},{"language":"en","boundingBox":[3.2589,3.8441,3.4067,3.8441,3.4067,3.9523,3.2589,3.9523],"text":"10","words":[{"boundingBox":[3.2589,3.8441,3.4067,3.8441,3.4067,3.9523,3.2589,3.9523],"text":"10","confidence":1}]},{"language":"en","boundingBox":[5.4232,3.8441,5.8642,3.8441,5.8642,3.9523,5.4232,3.9523],"text":"120.00","words":[{"boundingBox":[5.4232,3.8441,5.8642,3.8441,5.8642,3.9523,5.4232,3.9523],"text":"120.00","confidence":1}]},{"language":"en","boundingBox":[1.0943,4.0561,1.153,4.0561,1.153,4.1614,1.0943,4.1614],"text":"E","words":[{"boundingBox":[1.0943,4.0561,1.153,4.0561,1.153,4.1614,1.0943,4.1614],"text":"E","confidence":1}]},{"language":"en","boundingBox":[3.2486,4.0546,3.4067,4.0546,3.4067,4.1627,3.2486,4.1627],"text":"40","words":[{"boundingBox":[3.2486,4.0546,3.4067,4.0546,3.4067,4.1627,3.2486,4.1627],"text":"40","confidence":1}]},{"language":"en","boundingBox":[5.4232,4.0546,5.8644,4.0546,5.8644,4.1627,5.4232,4.1627],"text":"100.00","words":[{"boundingBox":[5.4232,4.0546,5.8644,4.0546,5.8644,4.1627,5.4232,4.1627],"text":"100.00","confidence":1}]},{"language":"en","boundingBox":[1.0943,4.2661,1.1497,4.2661,1.1497,4.3717,1.0943,4.3717],"text":"F","words":[{"boundingBox":[1.0943,4.2661,1.1497,4.2661,1.1497,4.3717,1.0943,4.3717],"text":"F","confidence":1}]},{"language":"en","boundingBox":[3.2534,4.2646,3.4067,4.2646,3.4067,4.3727,3.2534,4.3727],"text":"60","words":[{"boundingBox":[3.2534,4.2646,3.4067,4.2646,3.4067,4.3727,3.2534,4.3727],"text":"60","confidence":1}]},{"language":"en","boundingBox":[5.4232,4.2646,5.8642,4.2646,5.8642,4.3727,5.4232,4.3727],"text":"120.00","words":[{"boundingBox":[5.4232,4.2646,5.8642,4.2646,5.8642,4.3727,5.4232,4.3727],"text":"120.00","confidence":1}]},{"language":"en","boundingBox":[1.0877,4.4746,1.1735,4.4746,1.1735,4.5827,1.0877,4.5827],"text":"G","words":[{"boundingBox":[1.0877,4.4746,1.1735,4.4746,1.1735,4.5827,1.0877,4.5827],"text":"G","confidence":1}]},{"language":"en","boundingBox":[3.2514,4.4746,3.4067,4.4746,3.4067,4.5827,3.2514,4.5827],"text":"80","words":[{"boundingBox":[3.2514,4.4746,3.4067,4.4746,3.4067,4.5827,3.2514,4.5827],"text":"80","confidence":1}]},{"language":"en","boundingBox":[5.4184,4.4746,5.8644,4.4746,5.8644,4.5827,5.4184,4.5827],"text":"220.00","words":[{"boundingBox":[5.4184,4.4746,5.8644,4.4746,5.8644,4.5827,5.4184,4.5827],"text":"220.00","confidence":1}]},{"language":"en","boundingBox":[5.5075,4.8981,6.7158,4.8981,6.7158,5.0131,5.5075,5.0131],"text":"Subtotal: + 3000.00","words":[{"boundingBox":[5.5075,4.8981,6.1249,4.8981,6.1249,5.0131,5.5075,5.0131],"text":"Subtotal:","confidence":1},{"boundingBox":[6.1794,4.9042,6.7158,4.9042,6.7158,5.0131,6.1794,5.0131],"text":"3000.00","confidence":1}]},{"language":"en","boundingBox":[5.5034,5.1245,6.2887,5.1245,6.2887,5.2333,5.5034,5.2333],"text":"Tax: + 300.00","words":[{"boundingBox":[5.5034,5.1263,5.7812,5.1263,5.7812,5.2333,5.5034,5.2333],"text":"Tax:","confidence":1},{"boundingBox":[5.8360,5.1245,6.2887,5.1245,6.2887,5.2333,5.8360,5.2333],"text":"300.00","confidence":1}]},{"language":"en","boundingBox":[5.5034,5.3412,6.3422,5.3412,6.3422,5.481,5.5034,5.481],"text":"Tip: + 1000.00","words":[{"boundingBox":[5.5034,5.3412,5.7515,5.3412,5.7515,5.481,5.5034,5.481],"text":"Tip:","confidence":1},{"boundingBox":[5.8110,5.3445,6.3422,5.3445,6.3422,5.4533,5.8110,5.4533],"text":"1000.00","confidence":1}]},{"language":"en","boundingBox":[5.5034,5.5583,6.4825,5.5583,6.4825,5.6733,5.5034,5.6733],"text":"Total: + 4300.00","words":[{"boundingBox":[5.5034,5.5583,5.8915,5.5583,5.8915,5.6733,5.5034,5.6733],"text":"Total:","confidence":1},{"boundingBox":[5.9420,5.5645,6.4825,5.5645,6.4825,5.6733,5.9420,5.6733],"text":"4300.00","confidence":1}]},{"language":"en","boundingBox":[1.0055,6.6556,3.8842,6.6556,3.8842,6.7981,1.0055,6.7981],"text":"Signature: + ____ Frodo Baggins__________","words":[{"boundingBox":[1.0055,6.6581,1.6987,6.6581,1.6987,6.7981,1.0055,6.7981],"text":"Signature:","confidence":1},{"boundingBox":[1.7470,6.7829,2.0809,6.7829,2.0809,6.7981,1.7470,6.7981],"text":"____","confidence":1},{"boundingBox":[2.0925,6.6556,2.4778,6.6556,2.4778,6.7703,2.0925,6.7703],"text":"Frodo","confidence":1},{"boundingBox":[2.5325,6.6581,3.8842,6.6581,3.8842,6.7981,2.5325,6.7981],"text":"Baggins__________","confidence":1}]}]}],"pageResults":[{"page":1,"tables":[{"rows":8,"columns":3,"cells":[{"rowIndex":0,"columnIndex":0,"text":"Item","boundingBox":[1.0037,2.9443,3.1681,2.9443,3.1681,3.1543,1.0037,3.1543],"elements":["#/readResults/0/lines/10/words/0"]},{"rowIndex":0,"columnIndex":1,"text":"Quantity","boundingBox":[3.1681,2.9443,5.3353,2.9443,5.3353,3.1543,3.1681,3.1543],"elements":["#/readResults/0/lines/11/words/0"]},{"rowIndex":0,"columnIndex":2,"text":"Price","boundingBox":[5.3353,2.9443,7.4997,2.9443,7.4997,3.1543,5.3353,3.1543],"elements":["#/readResults/0/lines/12/words/0"]},{"rowIndex":1,"columnIndex":0,"text":"A","boundingBox":[1.0037,3.1543,3.1681,3.1543,3.1681,3.3643,1.0037,3.3643],"elements":["#/readResults/0/lines/13/words/0"]},{"rowIndex":1,"columnIndex":1,"text":"1","boundingBox":[3.1681,3.1543,5.3353,3.1543,5.3353,3.3643,3.1681,3.3643],"elements":["#/readResults/0/lines/14/words/0"]},{"rowIndex":1,"columnIndex":2,"text":"10.99","boundingBox":[5.3353,3.1543,7.4997,3.1543,7.4997,3.3643,5.3353,3.3643],"elements":["#/readResults/0/lines/15/words/0"]},{"rowIndex":2,"columnIndex":0,"text":"B","boundingBox":[1.0037,3.3643,3.1681,3.3643,3.1681,3.5776,1.0037,3.5776],"elements":["#/readResults/0/lines/16/words/0"]},{"rowIndex":2,"columnIndex":1,"text":"2","boundingBox":[3.1681,3.3643,5.3353,3.3643,5.3353,3.5776,3.1681,3.5776],"elements":["#/readResults/0/lines/17/words/0"]},{"rowIndex":2,"columnIndex":2,"text":"14.67","boundingBox":[5.3353,3.3643,7.4997,3.3643,7.4997,3.5776,5.3353,3.5776],"elements":["#/readResults/0/lines/18/words/0"]},{"rowIndex":3,"columnIndex":0,"text":"C","boundingBox":[1.0037,3.5776,3.1681,3.5776,3.1681,3.7876,1.0037,3.7876],"elements":["#/readResults/0/lines/19/words/0"]},{"rowIndex":3,"columnIndex":1,"text":"4","boundingBox":[3.1681,3.5776,5.3353,3.5776,5.3353,3.7876,3.1681,3.7876],"elements":["#/readResults/0/lines/20/words/0"]},{"rowIndex":3,"columnIndex":2,"text":"15.66","boundingBox":[5.3353,3.5776,7.4997,3.5776,7.4997,3.7876,5.3353,3.7876],"elements":["#/readResults/0/lines/21/words/0"]},{"rowIndex":4,"columnIndex":0,"text":"D","boundingBox":[1.0037,3.7876,3.1681,3.7876,3.1681,3.9976,1.0037,3.9976],"elements":["#/readResults/0/lines/22/words/0"]},{"rowIndex":4,"columnIndex":1,"text":"1","boundingBox":[3.1681,3.7876,5.3353,3.7876,5.3353,3.9976,3.1681,3.9976],"elements":["#/readResults/0/lines/23/words/0"]},{"rowIndex":4,"columnIndex":2,"text":"12.00","boundingBox":[5.3353,3.7876,7.4997,3.7876,7.4997,3.9976,5.3353,3.9976],"elements":["#/readResults/0/lines/24/words/0"]},{"rowIndex":5,"columnIndex":0,"text":"E","boundingBox":[1.0037,3.9976,3.1681,3.9976,3.1681,4.2081,1.0037,4.2081],"elements":["#/readResults/0/lines/25/words/0"]},{"rowIndex":5,"columnIndex":1,"text":"4","boundingBox":[3.1681,3.9976,5.3353,3.9976,5.3353,4.2081,3.1681,4.2081],"elements":["#/readResults/0/lines/26/words/0"]},{"rowIndex":5,"columnIndex":2,"text":"10.00","boundingBox":[5.3353,3.9976,7.4997,3.9976,7.4997,4.2081,5.3353,4.2081],"elements":["#/readResults/0/lines/27/words/0"]},{"rowIndex":6,"columnIndex":0,"text":"F","boundingBox":[1.0037,4.2081,3.1681,4.2081,3.1681,4.4181,1.0037,4.4181],"elements":["#/readResults/0/lines/28/words/0"]},{"rowIndex":6,"columnIndex":1,"text":"6","boundingBox":[3.1681,4.2081,5.3353,4.2081,5.3353,4.4181,3.1681,4.4181],"elements":["#/readResults/0/lines/29/words/0"]},{"rowIndex":6,"columnIndex":2,"text":"12.00","boundingBox":[5.3353,4.2081,7.4997,4.2081,7.4997,4.4181,5.3353,4.4181],"elements":["#/readResults/0/lines/30/words/0"]},{"rowIndex":7,"columnIndex":0,"text":"G","boundingBox":[1.0037,4.4181,3.1681,4.4181,3.1681,4.6281,1.0037,4.6281],"elements":["#/readResults/0/lines/31/words/0"]},{"rowIndex":7,"columnIndex":1,"text":"8","boundingBox":[3.1681,4.4181,5.3353,4.4181,5.3353,4.6281,3.1681,4.6281],"elements":["#/readResults/0/lines/32/words/0"]},{"rowIndex":7,"columnIndex":2,"text":"22.00","boundingBox":[5.3353,4.4181,7.4997,4.4181,7.4997,4.6281,5.3353,4.6281],"elements":["#/readResults/0/lines/33/words/0"]}]}]},{"page":2,"tables":[]},{"page":3,"tables":[{"rows":8,"columns":3,"cells":[{"rowIndex":0,"columnIndex":0,"text":"Item","boundingBox":[1.0037,2.9443,3.1681,2.9443,3.1681,3.1543,1.0037,3.1543],"elements":["#/readResults/2/lines/10/words/0"]},{"rowIndex":0,"columnIndex":1,"text":"Quantity","boundingBox":[3.1681,2.9443,5.3353,2.9443,5.3353,3.1543,3.1681,3.1543],"elements":["#/readResults/2/lines/11/words/0"]},{"rowIndex":0,"columnIndex":2,"text":"Price","boundingBox":[5.3353,2.9443,7.4997,2.9443,7.4997,3.1543,5.3353,3.1543],"elements":["#/readResults/2/lines/12/words/0"]},{"rowIndex":1,"columnIndex":0,"text":"A","boundingBox":[1.0037,3.1543,3.1681,3.1543,3.1681,3.3643,1.0037,3.3643],"elements":["#/readResults/2/lines/13/words/0"]},{"rowIndex":1,"columnIndex":1,"text":"10","boundingBox":[3.1681,3.1543,5.3353,3.1543,5.3353,3.3643,3.1681,3.3643],"elements":["#/readResults/2/lines/14/words/0"]},{"rowIndex":1,"columnIndex":2,"text":"100.99","boundingBox":[5.3353,3.1543,7.4997,3.1543,7.4997,3.3643,5.3353,3.3643],"elements":["#/readResults/2/lines/15/words/0"]},{"rowIndex":2,"columnIndex":0,"text":"B","boundingBox":[1.0037,3.3643,3.1681,3.3643,3.1681,3.5776,1.0037,3.5776],"elements":["#/readResults/2/lines/16/words/0"]},{"rowIndex":2,"columnIndex":1,"text":"20","boundingBox":[3.1681,3.3643,5.3353,3.3643,5.3353,3.5776,3.1681,3.5776],"elements":["#/readResults/2/lines/17/words/0"]},{"rowIndex":2,"columnIndex":2,"text":"140.67","boundingBox":[5.3353,3.3643,7.4997,3.3643,7.4997,3.5776,5.3353,3.5776],"elements":["#/readResults/2/lines/18/words/0"]},{"rowIndex":3,"columnIndex":0,"text":"C","boundingBox":[1.0037,3.5776,3.1681,3.5776,3.1681,3.7876,1.0037,3.7876],"elements":["#/readResults/2/lines/19/words/0"]},{"rowIndex":3,"columnIndex":1,"text":"40","boundingBox":[3.1681,3.5776,5.3353,3.5776,5.3353,3.7876,3.1681,3.7876],"elements":["#/readResults/2/lines/20/words/0"]},{"rowIndex":3,"columnIndex":2,"text":"150.66","boundingBox":[5.3353,3.5776,7.4997,3.5776,7.4997,3.7876,5.3353,3.7876],"elements":["#/readResults/2/lines/21/words/0"]},{"rowIndex":4,"columnIndex":0,"text":"D","boundingBox":[1.0037,3.7876,3.1681,3.7876,3.1681,3.9976,1.0037,3.9976],"elements":["#/readResults/2/lines/22/words/0"]},{"rowIndex":4,"columnIndex":1,"text":"10","boundingBox":[3.1681,3.7876,5.3353,3.7876,5.3353,3.9976,3.1681,3.9976],"elements":["#/readResults/2/lines/23/words/0"]},{"rowIndex":4,"columnIndex":2,"text":"120.00","boundingBox":[5.3353,3.7876,7.4997,3.7876,7.4997,3.9976,5.3353,3.9976],"elements":["#/readResults/2/lines/24/words/0"]},{"rowIndex":5,"columnIndex":0,"text":"E","boundingBox":[1.0037,3.9976,3.1681,3.9976,3.1681,4.2081,1.0037,4.2081],"elements":["#/readResults/2/lines/25/words/0"]},{"rowIndex":5,"columnIndex":1,"text":"40","boundingBox":[3.1681,3.9976,5.3353,3.9976,5.3353,4.2081,3.1681,4.2081],"elements":["#/readResults/2/lines/26/words/0"]},{"rowIndex":5,"columnIndex":2,"text":"100.00","boundingBox":[5.3353,3.9976,7.4997,3.9976,7.4997,4.2081,5.3353,4.2081],"elements":["#/readResults/2/lines/27/words/0"]},{"rowIndex":6,"columnIndex":0,"text":"F","boundingBox":[1.0037,4.2081,3.1681,4.2081,3.1681,4.4181,1.0037,4.4181],"elements":["#/readResults/2/lines/28/words/0"]},{"rowIndex":6,"columnIndex":1,"text":"60","boundingBox":[3.1681,4.2081,5.3353,4.2081,5.3353,4.4181,3.1681,4.4181],"elements":["#/readResults/2/lines/29/words/0"]},{"rowIndex":6,"columnIndex":2,"text":"120.00","boundingBox":[5.3353,4.2081,7.4997,4.2081,7.4997,4.4181,5.3353,4.4181],"elements":["#/readResults/2/lines/30/words/0"]},{"rowIndex":7,"columnIndex":0,"text":"G","boundingBox":[1.0037,4.4181,3.1681,4.4181,3.1681,4.6281,1.0037,4.6281],"elements":["#/readResults/2/lines/31/words/0"]},{"rowIndex":7,"columnIndex":1,"text":"80","boundingBox":[3.1681,4.4181,5.3353,4.4181,5.3353,4.6281,3.1681,4.6281],"elements":["#/readResults/2/lines/32/words/0"]},{"rowIndex":7,"columnIndex":2,"text":"220.00","boundingBox":[5.3353,4.4181,7.4997,4.4181,7.4997,4.6281,5.3353,4.6281],"elements":["#/readResults/2/lines/33/words/0"]}]}]}]}}' + headers: + apim-request-id: 0799c7c1-defc-479e-ba0c-482521c62283 + content-type: application/json; charset=utf-8 + date: Mon, 27 Apr 2020 23:27:22 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + transfer-encoding: chunked + x-content-type-options: nosniff + x-envoy-upstream-service-time: '213' + status: + code: 200 + message: OK + url: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/layout/analyzeResults/a73bfcff-f43c-487e-81d2-f83e2ba19994 +version: 1 diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_content_async.test_content_multipage_transform.yaml b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_content_async.test_content_multipage_transform.yaml new file mode 100644 index 000000000000..44f9eb014fed --- /dev/null +++ b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_content_async.test_content_multipage_transform.yaml @@ -0,0 +1,2032 @@ +interactions: +- request: + body: !!binary | + JVBERi0xLjcNCiW1tbW1DQoxIDAgb2JqDQo8PC9UeXBlL0NhdGFsb2cvUGFnZXMgMiAwIFIvTGFu + Zyhlbi1VUykgL1N0cnVjdFRyZWVSb290IDE2IDAgUi9NYXJrSW5mbzw8L01hcmtlZCB0cnVlPj4v + TWV0YWRhdGEgMjUzIDAgUi9WaWV3ZXJQcmVmZXJlbmNlcyAyNTQgMCBSPj4NCmVuZG9iag0KMiAw + IG9iag0KPDwvVHlwZS9QYWdlcy9Db3VudCAzL0tpZHNbIDMgMCBSIDExIDAgUiAxMyAwIFJdID4+ + DQplbmRvYmoNCjMgMCBvYmoNCjw8L1R5cGUvUGFnZS9QYXJlbnQgMiAwIFIvUmVzb3VyY2VzPDwv + Rm9udDw8L0YxIDUgMCBSL0YyIDkgMCBSPj4vRXh0R1N0YXRlPDwvR1M3IDcgMCBSL0dTOCA4IDAg + Uj4+L1Byb2NTZXRbL1BERi9UZXh0L0ltYWdlQi9JbWFnZUMvSW1hZ2VJXSA+Pi9NZWRpYUJveFsg + MCAwIDYxMiA3OTJdIC9Db250ZW50cyA0IDAgUi9Hcm91cDw8L1R5cGUvR3JvdXAvUy9UcmFuc3Bh + cmVuY3kvQ1MvRGV2aWNlUkdCPj4vVGFicy9TL1N0cnVjdFBhcmVudHMgMD4+DQplbmRvYmoNCjQg + MCBvYmoNCjw8L0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggMjg2ND4+DQpzdHJlYW0NCnicvZxZ + bxw3EsffBeg79ONMsGrzPhZBAMvXerEGkrWAPBiLwJYPGIilXVubbL79VrHvYRfZ3cOOAI2OLvJf + LFb/SPbB6tGP1fffP3r15OXTiv3wQ3X99En1n8sLVjP88lxUrDLwab2ovn64vPj5u+ru8uL65vLi + 0XNecVMzV918vLzgYMcqXikpam4ry1TtTHXzBexevLbVp29QZ/Up/OXav15cXrw5vLz77agP9/D9 + +WgOt/DzA3xXx39VN3+/vHgGOj9dXpzlkAOH+Nih4Ecr//x4JYP6V1D/azlVzVzNDKV60rzq2asn + VTXqCL6+I8RcLxjrayUi+eujgmhf+cOv+PEuxN+CUyYcefsJ/wsfrjG6g+PfNkfmxC9vau8pv3Jh + EaXCYmSt9Yl8dQV1OlXd3L45cCFLNVizmvt5xajBZ6iI2klK5W/HK25CF2NXvyulCX0oSM2QOQ/H + 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 + fvW3lN9NoKP8fgIt5fcTaCkfCZSmfCSw09UI6BG/5zmhhK3NXNLi2yxyv6sRhuO2Ndl2xSReu18C + SWJj63VjgCulDJhYt8bwpZRleJt/hbRauxkZKS1YnXrQP1Zeu/sWqczwsaPoQiXOyj7h6XqHU7Nw + 4j5Agofrl1/DFhRHCafxlSw3vgmNdx9P/alYcBMnVb/AV7HR2uNeVHHjrz9DKxFR4SLtfXVUh+u3 + 2N4QjPCBobkrNuZyvAMV+7FxL7PZQV3OCfxy5A4iij0481lKHXfbcTPqJ0nTd4eAs8CYcIeT1VbQ + t+LU2ltxVP7jrMGt4o1aeyuOlIaffhVkVamLzULb9D3+WLrUlRyhOO7ztEa61PJCAGLMOulS46lg + IcPXSJcaULmXuJ3hGulSIyq3DleUK6R1qRGVG5hGrGq1LjWkcmXwYaE10qVoxiXD+eoa6VI041zj + BgZrpEvRzPuam1Ug1aVohk8vi3XSHc04bmeEj9VUhsnwOhCMljA1gRHb9AMfw80Nf0dZqDxp/Xp4 + TA7MvFJgaGoPJlbVsrkCYqnn5PSIc8tK9/fXAS7TyBgJQ4uqLAzmohtYP/Xhid+vPlfPwtTZkXr3 + OJv90lxjdDiRlTildYc/cAPfx2Hvz5f4Gf75G0z37rvp7y0+uBxvgnWuuxwyB5hIuJvNHretowTd + UQYnabEnj3HPzvf9XP8bLHLV4Vu8cj/XCw7/gnk/4UU2Hn5z4s4HQ3MsdeqGPnb7VjRbEL8K9ww/ + Q0xY2N8U//f6AVcH8UOgZ7nFhcKt+Qi3sps3ssLRkbpW8S6K/XayZvFmr+cFRcraSsqbbFB44aDg + vdjTnS1ze6SeJew4LTy3Vep5YgoWKaRY4ZZ5DoOxWxLSwhkFY6rQf1JEOZRypFhuD9ozzxzgiKSk + iee8/w9kOwx8DQplbmRzdHJlYW0NCmVuZG9iag0KNSAwIG9iag0KPDwvVHlwZS9Gb250L1N1YnR5 + cGUvVHJ1ZVR5cGUvTmFtZS9GMS9CYXNlRm9udC9CQ0RFRUUrQ2FsaWJyaS9FbmNvZGluZy9XaW5B + bnNpRW5jb2RpbmcvRm9udERlc2NyaXB0b3IgNiAwIFIvRmlyc3RDaGFyIDMyL0xhc3RDaGFyIDEy + MS9XaWR0aHMgMjQ5IDAgUj4+DQplbmRvYmoNCjYgMCBvYmoNCjw8L1R5cGUvRm9udERlc2NyaXB0 + b3IvRm9udE5hbWUvQkNERUVFK0NhbGlicmkvRmxhZ3MgMzIvSXRhbGljQW5nbGUgMC9Bc2NlbnQg + NzUwL0Rlc2NlbnQgLTI1MC9DYXBIZWlnaHQgNzUwL0F2Z1dpZHRoIDUyMS9NYXhXaWR0aCAxNzQz + L0ZvbnRXZWlnaHQgNDAwL1hIZWlnaHQgMjUwL1N0ZW1WIDUyL0ZvbnRCQm94WyAtNTAzIC0yNTAg + MTI0MCA3NTBdIC9Gb250RmlsZTIgMjUwIDAgUj4+DQplbmRvYmoNCjcgMCBvYmoNCjw8L1R5cGUv + RXh0R1N0YXRlL0JNL05vcm1hbC9jYSAxPj4NCmVuZG9iag0KOCAwIG9iag0KPDwvVHlwZS9FeHRH + U3RhdGUvQk0vTm9ybWFsL0NBIDE+Pg0KZW5kb2JqDQo5IDAgb2JqDQo8PC9UeXBlL0ZvbnQvU3Vi + dHlwZS9UcnVlVHlwZS9OYW1lL0YyL0Jhc2VGb250L0JDREZFRStDYWxpYnJpLUJvbGQvRW5jb2Rp + bmcvV2luQW5zaUVuY29kaW5nL0ZvbnREZXNjcmlwdG9yIDEwIDAgUi9GaXJzdENoYXIgMzIvTGFz + dENoYXIgMTIwL1dpZHRocyAyNTEgMCBSPj4NCmVuZG9iag0KMTAgMCBvYmoNCjw8L1R5cGUvRm9u + dERlc2NyaXB0b3IvRm9udE5hbWUvQkNERkVFK0NhbGlicmktQm9sZC9GbGFncyAzMi9JdGFsaWNB + bmdsZSAwL0FzY2VudCA3NTAvRGVzY2VudCAtMjUwL0NhcEhlaWdodCA3NTAvQXZnV2lkdGggNTM2 + L01heFdpZHRoIDE3ODEvRm9udFdlaWdodCA3MDAvWEhlaWdodCAyNTAvU3RlbVYgNTMvRm9udEJC + b3hbIC01MTkgLTI1MCAxMjYzIDc1MF0gL0ZvbnRGaWxlMiAyNTIgMCBSPj4NCmVuZG9iag0KMTEg + MCBvYmoNCjw8L1R5cGUvUGFnZS9QYXJlbnQgMiAwIFIvUmVzb3VyY2VzPDwvRm9udDw8L0YyIDkg + MCBSPj4vRXh0R1N0YXRlPDwvR1M3IDcgMCBSL0dTOCA4IDAgUj4+L1Byb2NTZXRbL1BERi9UZXh0 + L0ltYWdlQi9JbWFnZUMvSW1hZ2VJXSA+Pi9NZWRpYUJveFsgMCAwIDYxMiA3OTJdIC9Db250ZW50 + cyAxMiAwIFIvR3JvdXA8PC9UeXBlL0dyb3VwL1MvVHJhbnNwYXJlbmN5L0NTL0RldmljZVJHQj4+ + L1RhYnMvUy9TdHJ1Y3RQYXJlbnRzIDE+Pg0KZW5kb2JqDQoxMiAwIG9iag0KPDwvRmlsdGVyL0Zs + YXRlRGVjb2RlL0xlbmd0aCA0NzY+Pg0Kc3RyZWFtDQp4nK2Yu2ocQRBF84H5hwplB7Vdj36BUKCV + LGwQ2GjBgVEoKZLA9v+Dy4sDh6rmTjDQzNCne6BO3xo6fKXLy8P98fMNlasrur450s99K1z+XlOU + CrW496n062nfvn+kt327Pu3b4ZNSPDg975vES4WEunJRp14Ge6PTa7x099Dp5XdMSC/n0fg3utu3 + Hxf04ZFOX/btNqb7tm90e38k+m9BAlpQm8pNzws6r+OdeEXhe+M+0nhD4VvhKWm8o/Be2fL4isLr + ZO9pfEPhxbhZGt9B+Do795nGDxR+CM/87icK3xqX/O4FJcJaC2vN81Heq+bs+dITlPiqDB4LfJT5 + alGe+doXlPp8dF7YPkp93oW15fko93mt7PljV1Dyc5tc8+euoOznatw9z0fpzyOHyULsQenPInZp + /vsrSn8Wucvz319R+rMIXvnyU5T9zJ37Ah9lP9PB+cNXUfazSF5lYfso+2lEL12oPpT9NLLXStOD + sp+2utL1KMp+6pNnvvoNZT+N8FXy4cNQ9tMIX5rP3oayn0b4snz9G0p/MhrXfPg2lP6kR9u9wEf5 + TyJ9LTQ/hvKfRPpaaH4M5T+J9LXQ/BjKf1I614X6R/lvCveF9OWwv4CVR3uff/8AMWTgdQ0KZW5k + c3RyZWFtDQplbmRvYmoNCjEzIDAgb2JqDQo8PC9UeXBlL1BhZ2UvUGFyZW50IDIgMCBSL1Jlc291 + cmNlczw8L0ZvbnQ8PC9GMSA1IDAgUi9GMiA5IDAgUj4+L0V4dEdTdGF0ZTw8L0dTNyA3IDAgUi9H + UzggOCAwIFI+Pi9Qcm9jU2V0Wy9QREYvVGV4dC9JbWFnZUIvSW1hZ2VDL0ltYWdlSV0gPj4vTWVk + aWFCb3hbIDAgMCA2MTIgNzkyXSAvQ29udGVudHMgMTQgMCBSL0dyb3VwPDwvVHlwZS9Hcm91cC9T + L1RyYW5zcGFyZW5jeS9DUy9EZXZpY2VSR0I+Pi9UYWJzL1MvU3RydWN0UGFyZW50cyAyPj4NCmVu + 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 + mxWDaazuLffHZf/XyULlydKvhoeloFgtJRTUpHahL93+mltBGOxpKTm6Y7Lu6v7GpCD11DNaQExK + 6AdgSOeZT717wkML9upBhyuL6n11mfRLsw1gXRIVLp3a0+/RA+T32sKAIVRhtoQn9+zXM8QITO+A + 9glKLNq+F87X3ru/nWXj+ea8/ouJHAe52xbDiDYr2x4OQ5UX8RyPeO0OBw4teexOr37fA/vb+QJ0 + +xYuIfZaweC/AN6IFYv+0NkZIO4MmKuL8ERtde5O1TH+MO+X/kbPZ/AJ9Sd9u/979eA4Gd6x3mUW + g6WWMJhZi94xhb0jFJHhecL9wep69bHn+5wihEsfiDWLTrGFneJuoM3PeF46LXyXMMzZUOHYoeH7 + xGCtb1Gxwi2rGcxq7BqXFo4omJxw9Qd5lMFVFhVbOo1958iBPCIwaeRJ4/8DtXV3Ww0KZW5kc3Ry + ZWFtDQplbmRvYmoNCjE1IDAgb2JqDQo8PC9BdXRob3IoS3Jpc3RhIFByYXRpY28pIC9DcmVhdG9y + KP7/AE0AaQBjAHIAbwBzAG8AZgB0AK4AIABXAG8AcgBkACAAZgBvAHIAIABPAGYAZgBpAGMAZQAg + ADMANgA1KSAvQ3JlYXRpb25EYXRlKEQ6MjAyMDA0MjIxNjQ1MjktMDcnMDAnKSAvTW9kRGF0ZShE + OjIwMjAwNDIyMTY0NTI5LTA3JzAwJykgL1Byb2R1Y2VyKP7/AE0AaQBjAHIAbwBzAG8AZgB0AK4A + IABXAG8AcgBkACAAZgBvAHIAIABPAGYAZgBpAGMAZQAgADMANgA1KSA+Pg0KZW5kb2JqDQoyMyAw + IG9iag0KPDwvVHlwZS9PYmpTdG0vTiAyMzIvRmlyc3QgMjAzNS9GaWx0ZXIvRmxhdGVEZWNvZGUv + TGVuZ3RoIDMwNTE+Pg0Kc3RyZWFtDQp4nO1b24ocyRF9N/gf8g+mIu8Jy4Jt7WKzrBCSwA/CDyOp + LQ07M72MWiD9vc+pipyetTOz1Gn7weCHmbrG/UTkpaKtmMXYYIIYG40s2dhkJOIezsQaW3DfG7cY + J9FYnMWMU+NjMM6CLBrnTIjJOG+i4FkwMRa8ZpIFUTIp4W1rsrXGi8nJGe9NAUPvTMnkBLEuGx9w + LLi9GBEPfsWIBcOAawuOHtfOigkWx5SpsXiwCR7HnExwRgKIfMaxRBNoB/QK4J+kmAD6lHAfzzOs + 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 + o7YHauOettT9bxfFC374xVj+v4b+R2qoOrMW0tkCqt2Sut9ed8Hr1nDdsK3bqHVDsm4T1s27ug1W + N6fqllHdfKlbInWjoi7560K8Lo/rQrMu/+qirC5v6qKjLgX+W4W/fs361q9fDMY/AFTdMPANCmVu + ZHN0cmVhbQ0KZW5kb2JqDQoyNDkgMCBvYmoNClsgMjI2IDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAy + NTAgMzA2IDI1MiAwIDUwNyA1MDcgNTA3IDUwNyA1MDcgNTA3IDUwNyA1MDcgNTA3IDUwNyAyNjgg + MCAwIDAgMCAwIDAgNTc5IDU0NCA1MzMgNjE1IDQ4OCA0NTkgNjMxIDYyMyAyNTIgMCAwIDQyMCA4 + NTUgMCAwIDUxNyA2NzMgNTQzIDQ1OSAwIDAgMCA4OTAgMCAwIDAgMCAwIDAgMCAwIDAgNDc5IDUy + NSA0MjMgNTI1IDQ5OCAwIDQ3MSAwIDIzMCAwIDAgMjMwIDc5OSA1MjUgNTI3IDUyNSAwIDM0OSAz + OTEgMzM1IDUyNSA0NTIgMCAwIDQ1M10gDQplbmRvYmoNCjI1MCAwIG9iag0KPDwvRmlsdGVyL0Zs + YXRlRGVjb2RlL0xlbmd0aCA1MzE4Mi9MZW5ndGgxIDEzNzU5Nj4+DQpzdHJlYW0NCnic7H0HXFTH + 2v475+zCUhaWKrLiLq6Auig2FEtklaJoLCirgA2k2LChGI0lJEZNSEy5Mb2ZnhtNsqwaMdXkphfT + e+/JjaZdzc01Ub5nzruDaDTJvfd/v3z3/9sXnvM8887Me2bmzMyZjRBIEJENFxNVFIzIL1mf7HuW + xJeZRLFJBSNOzbvntXVfkfhoNVGIb/ykrL7XPly5k0icg1oVVQsqF7/T99MUovmbicyDq5Yvc+5e + /EY20Y1fIH1/7eLZC9a+pw8kWvwCkdU9u25l7bvOlS6i228meumvc2oqq38cu9KHeJGIN2AOHNY7 + O+1HOh/prnMWLFuRPXOSG2nEm7utblFV5U2b53cjseoiFJ+8oHLF4l7W9G7In4PyzgU1yyqvOmvL + chI/yfpnL6xcUHPdoYMzSTSjfu+lixctXdZqpw3ozzRZfnF9zeK42V06Eq35GbdDP+ENGfzhP3a9 + WDAzeuhB6mghafd9tfpZya8XnTb+p0OHG8P2WQYgGUYasaFeCB0h8Wj4lp8OHdoSts+I1M46bpMe + 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 + wAKEAiGAGTANb8VVBzRAAETVAj5xBDgM/Az8BBwC/gH8CPwd+AE4CBwA/gZ8D3wHfAt8A3wN7Af2 + AV8BfwW+BL4APgc+Az4FPgE+Bj4CPgQ+AN4H3gPeBd4B3gbeAt4E3gBeB14DXgVeAV4GXgJeBF4A + ngf2As8BzwLPAE8DTwFPAk8AjwOPAY8CfwEeAR4G9gAPAQ8CDwD3A/cB9wK7gRZgF3APsBPYAWwH + /EAz4APuBu4C7gS2AVuBO4A/A7cDtwG3ArcANwM3ATcCNwBbgOuB64BrgWuAq4GrgCuBK4DLgcuA + S4HNwCXAn4CLgYuAC4ELgE3A+cB5QBNwLnAOsBHYAKyn6uGNAutfYP0LrH+B9S+w/gXWv8D6F1j/ + AutfYP0LrH+B9S+w/gXWv8D6F1j/AutfYP2LegB7gMAeILAHCOwBAnuAwB4gsAcI7AECe4DAHiCw + BwjsAQJ7gMAeILAHCOwBAnuAwB4gsAcI7AECe4DAHiCwBwjsAQJ7gMAeILAHCOwBAnuAwB4gsAcI + 7AEC619g/Qusf4G1L7D2Bda+wNoXWPsCa19g7QusfYG1L7D2/+h9+L/cyv7oBvyXGy1d2u5gJi1p + pvyFp9DriI5ccszvqUygebSUGvG1gTbRJfQQvU2zaB3UlbSFbqU/k48epqfo9d/xOy+/246sNC+g + SH0XhVAcUeuh1v1HbgVazFHtPJcgFWdyHvW02lq/Ps739ZFLWm1HWkJiKdyoa9Vegvdv4nDrIbxy + kW4dINPaRuhoo8Z3odcdufvIbceNQTGV01SaRtOpgirR/2qaQ3MxMvOpjhbQQiO1EHmzca1FaiZK + YXsx9NFSi2gxUE/LqIGW42sx9NJASuYtMdINdBq+VtBKOp1W0WpaE7ieZnhWI+d0I70CWEtn4Mmc + SWcZSjF71tHZtB5PbSOdQ+f+aurcNtVE59H5eM4X0IUn1ZuOSV2Er4vpT5gPm+lSuoyuwLy4mq45 + znu54b+KrqPrMWdk3qXwXG8omXs/PU476S66m+4xxrIKo8Yjosal1hjDxRiD1ejhunYt5vE7rW20 + 1qLvsm9NgZ6ugP+sdjWWB8ZRllyHkhyFn4OMsua4kbgIfWB9tEecutTo/1Fv+1H5Na8aj2vajczV + Rkqq470n05fRtViBN+AqR1WqG6FZXW/o9v7r2spuMdI30c10C57FbYZSzJ5boW+j27G276CttA1f + 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 + IDAgMCAwIDQ1OSAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCA0NzMgNDk1IDAgMCAwIDAgMCAwIDAg + MCAwIDAgNDk4IDAgNDk0IDUzNyAwIDUzNyA1MDMgMCA0NzQgMCAyNDYgMCAwIDI0NiAwIDUzNyA1 + MzggNTM3IDAgMzU1IDM5OSAzNDcgNTM3IDAgMCA0NTldIA0KZW5kb2JqDQoyNTIgMCBvYmoNCjw8 + L0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggMzM2MzMvTGVuZ3RoMSAxMDI3MDQ+Pg0Kc3RyZWFt + DQp4nOydCXiTVdb4z33fLM3WJl3SJU2aNk26J90otAUaulEoW6HBFgRaaLG4UYGqoAzgglhFVFzG + BUFHxwWUNIAUQUTFXdQZUccdlxnXjqjgKNDkf+570tIiuMz4jd//+XLa8/7uPffcfXsj8SkwANDj + QwZNVeWV9bcVPhsGrO2PAGqMj6t4/SnTOGBzDqBD98Qprvz1X835GoCtwlxNc85pblc9YVwHcNYN + mP7wnPMXWcseafgS4NpKAMWque1nnHPn5+WbANrHAaiizjh78dyPlhs+ArjpRYC5+rbW5pbvT198 + CZanxfKK2tCg25n4KsYxP6S2nbPowsefSy3F+KcA8zadPX9O81VvnncY4Ng76D71nOYL29Pvi7Ng + ehv6W89pXdR86yUbzge24HuMX3Zu8zmt75e/mgusoBAg96r2+QsXBUywEvuzh/u3L2ht/8H9/EKA + xU0Axg+Aj4Wi5IMVj770+KyI4YchPgy47Pzi4hc53xhzweSjb/UOUSeETUJfFQhAgvkU4Ae2V73h + 6FtHVqoTpJIGSPwmbjFlwlrQw4UgYk49uABr1X6P9QqYKsrGCrtADmHyW+QFWKSFKL4CjwgQBkKE + UhBlMlGQfQzOwB5IvQiLVfGyx0+xWsEKYH+R2qC8Q3BYgQV4mrhHHs57CtGy8OOtYS/jbL0JsfAr + RXYxrP61eX5OxE2/fZm/RBT+/0694rNQdlL7d6D9b9R/MpGNBvWvzjMM982p0q4bnCauObXvIL8G + WCm7HRp+ykfQ/3RZmB53yrRjJ8+rqMF6nzl5muwt8PxUfSeK2Hu8HJn9hHGYDxUnzXMRmAbVuQku + +zV1nkxkMnD8Ej/xWxj9q8uuhT/8Ct/aQXEljP219f1vFPGFwXPG5cS+nijsX3DWz5WLPj87tj/l + 81NzIxsPNT9X9qnKEv42uFwxD8acLI98/2C78PSP7xXZ5p+/a7iP3E1+yvSf9+c+2N7FP+f3cyI+ + yO/OXyfCY1AkHIZpUvgwlAjPQIkUvp3OIrYEJvb5svODfj/ANPQt7s8HGC+B4ewIJApHySbZ7//1 + 7fn/VXBdA/vw925FSEISkpCQCLfBP06ZNg9ePql9CGwQbLD0f65Vv1zEY4Ef/ut1XvKf38O/lcju + gwnCexDPw+JBqJA1geWkfuFQjHpDMOxBTTip3yJoEB6ERKm8y2G8+CqknsxPXA9DURcHw1NQc35R + +yp/cftOXq8LRghyMPOw4IVhQg/YTub3W+cVtoEL89ql8CKwCR2g/0/8QhKSkPy+Insc5v6nZYhR + ECeq4cKBNuH6wfFBdd568jRhFX6u8p78bAxJSEISkpCEJCQhCUlIQhKSkPzfEP4ZU6L61J8rT5RT + fc7kEvqcGZKQhCQkIQlJSEISkpCEJCQhCUlIQvL7C7vl925BSEISkpCEJCQhCUlIQhKSkIQkJCEJ + SUhCMliEdshDrQ+GK1HTfvM65sIw1MZgeCyq65fnDtz3W7cnJCEJSUhCEpKQhCQkIQlJSEISkpCE + JCQhCUlIQhKSkIQkJCEJSUhCEhKSwCO/dwtCEpLfWcSgJtJfkmLnYgxDYgvI2GQ0VIMb5KDAkA5S + wAl5UAglUI728VAPs2A2tMIZMA/OhnbogAthA2yBHSzPnG12movNbqvK2m5dZF1hvcz+YkD6S1FY + jhXLyYUCLGeUVM4ULKcZWoLlnAsLTlnOMuulUjkscBjbmCnuwh8z7uQDgX9hnP5uymdwiIlSXyYE + 5ojV4kgY8sUV9NOT9tHKj1YCfHT5+yOCfzmrvH8kRkrP4ZKODNpK+kM/luy+ERTHijeDDAwwE1qY + wCJYArOw89lSdiW7ml3LbmXb2AGZXKYABftOyvHdiX+1C+NC8G98CfDTwgbUeVIRG1C/FHvw+ZV4 + cID9tEFuvL0kg/+aT+WAMPbnpDUswWZgP/GJPcXnJNQZUuPm879DwnuODPZdsj/9M7363yDi/0Sh + bG5oH8FvvY/AXT1r5ozTp09rbPDUT5lcN2nihPHjaseOqRldXVVZUT7KXTZyxPDSkuJhQ4uGuJw5 + 2ekOe6otJSku2qCP0GnUqjClQi4TBQbZVbbqJqvX0eSVOWw1NTk8bmtGQ/MAQ5PXiqbqwT5ea5Pk + Zh3s6UbPuSd4usnT3e/J9NbhMDwn21pls3r3Vdqs3WxaXQOGV1faGq3eHik8XgrLHFJEh5HkZMxh + rYprq7R6WZO1ylt9fltnVVMlltelUVfYKlrVOdnQpdZgUIMhb7qtvYulj2RSQEivKukSIEzHq/WK + 9qrmFu+kuoaqSlNycqNkgwqpLK+iwquUyrLO422Gq6xd2Xs6r+7Ww+ymLG2LraX59Aav2IyZOsWq + zs4rvIYsb4at0pux5OM47HKrN9tWWeXNsmFhtZP7K2BeuV1vs3YeBmy8refLwZbmoEVh1x8GHuRd + 7B8mTO8LA7YNW4j9S07mbbmq2w2zMeJdXtdAcSvMNvnA7cpq9ApNPGVPX0qMh6cs70vpz95kS+ZT + VdUU/D2/Lc67fLY1JxtHX/q14y+mW72io2n2nDbO5tZOW2UljVt9g9ddiQF3c7CvVV25LvRvbsJO + zOPDUNfgddnavdG2cnJAg5XPwbwpDVKWYDZvdIUXmuYEc3ldVZW8XdaqzqZKaiAvy1bXsAMKAge6 + Cq2mLQV4iDTydniNFTgpjqrOhpa53qQmUwuuz7nWBlOy192Iw9doa2ht5LNk03szDmB1yVKNUi7s + 2wnefc6850p7mLVBMImNfLbQYK3Gh618OCbocbqkKJ/R8uHWBmaCPjesJejBQ4PKwYhor6jhSSLP + WlFjSm5MJvmJJpmCbZLbvWEDytKjob9NVM8pm0bevEEZ1qrWygENHFSoPNjAYGknb6fAxyJYMeYI + 49NZ05ck2nHnok3AYiQTn8U4qxcmWRtsrbZGG64h96QG3jc+1tL81k6x1dZNa5BmO7hK6gfFKH0Y + xbyQjMl9EaEC12B1lqlvWqX4aCneH605IXlMX7K1M8xWO6WTF24LFghW3EHYaYVjTPNVwyILcWtW + 4+lmq262WfXW6s7m7sDy2Z1dbndne1VTWwkvwzampdM2pWG4SWrr5IalpiW8qkioZbX15TnZePaU + d9nYqrouN1s1ZVrDDj2AdVV9g09gQkVTeWNXKqY17LDi2S5ZBW7lRh6x8ggvaTJGwiR/0w43wHIp + VSYZpPicbgaSLazPxmBOt0A2fZ9NQJuMbG7JxgUnKa4NhxiP2yprC5+eixvbOpsa+eYCI04l/jIv + s40Er2Ab2cUEhdartrWWezW2cm4v4/Yysiu4XYkLgxkZDg4/kzqbbHhO4YJqABOjpSjyIq3dgUB9 + Q/I+U09jMi6101GnNXhVWXj2y+1j0W801yY0j/Yun9PM2wGeBp5XaR8zpxGXbV+B6DLGq8ISVMES + 0KNaysOXI2aag3ODEyjlX44R7/JGb2MWr7RhXqO0nPVeqLGV4LRTmXIHr8jV2Blpy5f2Jm4Ftf0K + DhW2DaY0kMWEUayskQZJqcWWz7Fh0pwmK462DOZMwaVOZ6naRJZWPBJljlZJ1aZgIvBuiXaNTu1V + ObFA/OVhjZNvSbld2dhIjZdiVwQdsG69V4MtcgwYymAGHB1MGsPbgr9XYFO56+O8mLpumGy7EE8W + 3mipJCUme3X2Mc14+FN+DVpsw/oyh/EzQhMsYy9ZlbznWhx30V7fHbjXtjh5gORk2/jlwBcmmHbg + wobGzhMN3ulZOdlhJ1p1krmzM0x38gw0XmG6fqIRfCrxi1FmsQKXfKk4Cp9XiblwG6oAMtEFLaiL + UPejysQcMROGQZKYHWSWmOkblpT6GEbvRt2KKgb2oNGWVr1DCiRaq0fNEYfDMLEUPGIJshg5DDkU + WYQcgixEFiBtyBRkMtIKHsgS+VY8iz/FEZSGsVK0pYp5UI8qSKHCYOwQqgyixTSoRP0YVcRWp6EP + WRahXoZ6A+p+1EOoYdj0FCyxEGtkmNeK3lb0tmKJVsxhxRxWUAg/+CzmpG7he58lC/EvnyUb8R3h + MOEQpX1LsW8IXxMOEr4i/JM8ewhfkvELwueEzwifEj4h/IPwd8LHPosK8RHFPiR84DNHIg74zPGI + 931mF+I9wruEdwhvk8tbFHuT8DfCG4TXCa8R9hNeJfyV8BfCK4SXCS9RI/YRXiS8QHieqn2OPJ8l + PEN4mvAUYS/hScIThMcJewiPUZm7CY+ScRdhJ+ERwg5CN2E74WHCNsJWwhaCj9DlS8xHeAmbfYkF + iIcIDxI2ETYSHvAl5iHuJ9xH+e4l/JlwD+Fuwp8Id1H2OwkbCOsJdxDWEW6nom8j3ErZbyH8kXAz + 4SbCjZTvBsJawvWE6wjXEtYQrqGiV1P2qwlXEToJVxJWUYYrCCsJlxMuI1xKuMRnKkSsICwnLCP8 + gbCUcDHhIsISwmLChYQLCOcTOgiLCAsJCwjnEdoJ830JQxDnEs4hnE04i3AmYR6hjXAGYS6hldBC + mEOYTWgmNBFmEWYSZhBOJ0wnTCM0+uKHIhoIpxGmEjyEesIUwmRCHWESYSJhAmE8YRyhljCWMIZQ + QxhNqCZUESoJFYRywiiCm1BGGEkYQRhOKCWUEIp9ccWIYYShhCLCEEIhoYCQT8gj5EoQmS/OiTEX + GZ2EHEI2IYuQScggpBPSCA6C3Rdbikgl2HyxfEGn+GJLEMlktBKSCBaCmZBIMBESCPGEOEIswUiI + oRqiqYYoMkYSDAQ9IYIQTtARtAQNQU1QUZlhBCUZFQQ5QUYQCQKBEUACCxD8hF7CMcJRwhHCD4Tv + Cf+SqmXfST1ih8l4iPAt4RvC14SDhK8I/yT0EL4kfEH4nPAZ4VPCJ1TfP3xGG+LvhI99Rlxg7CPC + hz7jMMQHhAM+YwXifZ+xEvEe4V3COz5jFeJtn7Ea8RbhTcLfqOg3CK9TYa9RYfsJrxL+SoX9hfK9 + QniZ8BJhH+FFwguU73kq+jnCs9T4ZwhPU31P+YzliL2U4Umq6Alq9eNU2B7CY4TdhEcJuwg7CY9Q + 0Tuo6G4qejsV/TBhG2ErVbSF4CN0UbVewmbCQ1T0g4RNhI2EBwj3+2Lw3GX3+WJGIe4l/NkXMx5x + jy9mAuJuX8xExJ98MZMRd/li3Ig7yWUDuawnlzvIZR2l3U6et1HsVvK8hfBHynAz4SZfzCTEjZT9 + BsJawvXUpOvI81ryXEO4xhdTh1hNnlcTriJ0+qIbEFf6ohsRq3zRpyOu8EXPQKz0RY9FXO6Lno64 + jNIuJc9LyGWFezPyYERV0lfhNUkHtBOSnkB9HHUP6mOaqUk+1C5UL+pm1IdQH0TdhLoR9QHU+1Hv + Q70X9c+o96Dejfon1LtQ70TdgLoe9Q51W9KtqLeg/hH1ZtSbUG9EvQF1Ler1qNehXqtqS1qDeg3q + atSrUUephGPCEZgKScJRZBsksWW+KL4d/+CL5EtrEWGhz8CX1gLCeYR2wnzCuYRzCGcTziKcSRhO + KPXpOUoIxYRhhKGEIsIQQiGhgJDvi+DrNI+QS4gkGAh6QgQhnKDz4aR0My1BQ1ATVIQwgtKn41Ot + cE9H/hO1B/VL1C9QP0f9DKfzfdT3UN9FfQf1bdS3UN/Eafkb6huou1EfRd2FuhP1EdR1OBW3o3az + 5TTSS3wGvuQX0+BcSLiAcD6hg1BBKKdxGEVwE8oIIwkjqMsxhGhCFMcOURQFnzvp7t2igB/uBNiL + KopAbbmIMIVmfTK1rI4wiTCRMIEwnjCOUEsYSxhDqCGMJlQTqgiVhBRCMjXeSkgiWAhmQiLBREgg + xBPiqJuxBKP7NmQv6jHUo6hHUH/ACf4e9V+o36EeRj2E+i3O6jeoX6N+gvoP1L+jfoz6EeqHqB/g + 7O5DfRH1BdTnUZ9DfRb1GdSnUZ9C3Yv6JGo36nac8YdRt6FuRd2CehuffaGXxngp4WLCPJ8BX4VY + G+EMGpa5hFZCC2EOYTahmdBEmEWYSZhBOJ0wnTCN0EhoIJxGmErwEOoJLoKThjqHkE3IImQSMgjp + hDSCg2CnuUkl2AhygowgEgQCox0J7ruQAVQ/6qc4sK+jvoa6H/VV1L+i/gX1FdSXUV/Cgd6Berlo + T7pMdCZdypxJl9Qs96zYuNyzrGap5w8bl3o0S0uX1i4VNUtNiIuWblz69lLFxTVLPBdtXOKRLYle + IqgX11zguXDjBR7NBUx7fk2Hp77j445DHWJ0R31HS8eijhs69qNBeXfH1o69HWJ3YI87smNYafXy + jms7hGhMF6CDRXBzcocmvHpRzQLPwo0LPLIFhQuE0kML2IEFTMhdwCYtaFogoNeWBanp1dx7yAJj + QrV+Qe4C9wLxvJr5nvaN8z0T58+fv2z++vmPzZcvm79mvrAZQ4J7vkpXfW7NOZ73z2GwSwiAHnWP + EPCJ6vk7BT8w+ErwuwPsLByAM3Eg5jnP8LRtPMMz19niad3Y4pnjnO1pdjZ5ZjlneGZunOE53TnN + M33jNE+js8FzGvpPddZ7PBvrPVOcdZ7JG+s8E50TPBPQPt5Z6xm3sdYz1lnjGbOxxjOpho12Vnuq + xKIkvEHAgr/tluWWgxaZpsncbhbazQfMB81ie+LBRGGZiUUkLEtYkyBG4EOgR3xS/Jr49fGb4+UR + UkDUtkcujxTaDcsNQq7BbXjFcMAgA8MGgxCxJmJ9xOYIcWLErIivIgIRss0RbHP4Y+Evh4sTw2eF + zw8XI8J5XNS7w5151RG6JJ17tEsnDnfpynQTdeIaHXPrnPnVbl1qWnWZdqJ2llZcr2VurSOj+it1 + QC241ZjwlSqgEgIqBiKzMgZMjxDDcG62spikavFRxv+pUw6MXQv1WbXdysDkWm/YpOletsprn8Kf + 7rppXsUqL3imTW/oYuyaxi4mVNR7o/l/W5fil69eDebyWq95SoNP3LDBXN5Y613Ow263FA7wMKBL + Y9bMhR0LFy7KWpiFD9SZC9GyqAN/JTB8IjsW8ZRFCwFdsk4h3GMhR4fktLBjVgeWgQloXiiZeWym + 5HKqMv6rcsqe/DeE/Z6V/98WwIXMV/XCgQuRLwZcpwvjZs2UviSgvAPAv3bAtwdW4M/tsBG2wSPw + ODwPr8K3TA1NcDk8Bh/B5/ANHMV9q2QxLJFl/MIvbfwC8V8qPwd04h5QQCxA4EjgM//9gc/weAgf + YFmLsViZ47glEBnoOdHmX+vv9r+k0IBeyqsXXkDrQdYTOCKU8XigiMeFK3hYynFQeYd/s3/9oOa0 + wwLpWyOLYQlcBEvhD7AMLoWVcAWsgitxLJZh+Cq4GlbDNbAGroXr4HpYCzfAjXAT3Ax/hFvgVrgN + x3Ed3AHrg2k8fgf+3CSl8pS74M9wP2xC/gnuhnvgXrgP4w/g6G+Ch9BGFoo/iJYNcCda/4xW7sVt + m/HHC13ggy2wFeeM4n2xbtgDD8N25A6czZ2wCx6F3TiPe3Bmn5Bs3NIXP7UnPZ+EvfAUPA3PwLPw + HK6MF+BF2Acvwcv/VspT/RYeewX+An/FtbYfXoPX4Q14E96G9+B9OAAf4qr78kfpf0OPt9Dn3aDX + B+j1d/gMPXvQk/zI5x0p9VOphP2Y9wB8zMLgMBPgKAQwxGfvJmmGbpHmkc8en527pXHm87EZ43yG + 7u2fmwdxjB/E+eQxHr41OBsPoW8XjmDf+J181F4Kzg6N9y704WPBU/YFx+KZ4Ezwcnb3531BSvNJ + +Z7oL/X4iFIPXxswOu8MGMO/wz+kkaHRo9Tjo8c9PkYfPsq8jMFj+yHmpdHnebl9YB6e9hbGP8PT + 4Uscac4vpJn4Aj7pD38STO+Bf8JXcFh6HoSv8Tz5Fg5h/Du0HMTYj60nWv6FP9/DD3AEZ/AY9A6I + 9Z6Q0gt+nGN8wWACE8F/PHTcKqmMyZkCz7QwpmJqpmU6Fs4i8HVFeUKKpj/F8KMU7UnSVJIlkkWx + aDwvY1kcS2AmPDfNzMKSWDJLGZAW359ixRQbS2X2YJpRyhnfnzcJPWIH+GawXHYBPrOYk7kwnMcK + 2RA2lBWjJQfj+RgvwbRcieUwCWbD2XBE/qnwIpYfjadK1797assfgBjYEPg+UO6/q3eX+DCrZy/i + iIRDAGfqXOaGDfKZcJa8PfAdSwl8LR8d+FJ2JPAlywscArW4QZyL++AD2Ti4GN8Cwb9QfBtPbBGU + UAzjYQLU7wIdW4fHegl7YWtlZViOcjdGBbCyFyAMp2+dO0om6EymMtsQxdVinWFMmfJqoR7Ket97 + 92l87Issdu1jrnd7Xu/R9z5tKHb17O/JzWOGZIOk0eGCUqlQ2FKcwpA0R1FBQf5IYUihw5YSLki2 + wqKhI8WCfIsgRvdZRgo8zsS3j00Uq3pThcXJpVPy5CzLHpsUFRYmJll09gJrRO14W1F6glwWphDl + Ycq0onKb54KxKS+p49ISzWlxaqQ5Edn7hDz8yDfy8KOnySqP7hI+LW4YmapYrNMIclXYunRLTGpe + 4ohaXYROHm6KTUhUhhnC1Zk1zb23JNhj1epYe0KinZdl7y3FEYkNHJE9KY+GFHDAu/wd2dOwA1ID + n27VRLBxtu7Ap24zD9m1OlucDows3OjQqG0papDZmMHmsOOnTrfFrQEtixS12jRzqs1mUeuMYEuJ + U0aaJ0d65B6IKysri4wtHmYoMODAzpo5oyChJ5/Fu2bOiNuXX7D0ir17WdzemTMomJuHb9CmwW3Y + xgP/QV25eVlZjXajkeYsTUxWhou2FIejaCijiYpV2sRkWZdWYRyWV1Bs0cpO8ydMlunMQ7KchdEK + LVuj0NtGFpRWpxkUT7DtbP7s1MwYuajS65isNzxKI1PEZtpkFxtiNKKoMUY93fsWrsXVALIiXJUW + yIJhsK5vbJOEtdsSNDExGuD/5pjtKOD/CqdJSMMP3lvy8pSp3cF+p+KHdbdKX1cYx2OF/GO9W1mP + /UvoySrrycLO9RQzV0++qwfXZ2Qxrk9T179XSm5eIy5pmS05xTHEUFhUkIwDEsPXuEVkhU7BZjPw + BR51PCgrclTMaF82wX9fck5OMqu64J7zhsc5K7KGzqhK92+Kyx0z4vK1xZU5xgpLybSa23cPrR2a + xC6rap86Mj0qLVvWlp2WXndxvWtKZaFenT/xTPZ+2sgMo99rcpX1/pAzOjfBf21sTgX/dvXqwBFx + Do5gGmyn0etSRnULN7iNOjNYzMr0CDZeGafVsXFKvQaDj7DTICpw8GEMR0XFK7oDB7agh0IainA2 + TtHNpm91p9TFS4sE+897n4XIYi7XXkMxXyYmt+G3K5bGVbAlG/pGFIN9J0LfQGMHNeEqfyNbrQrX + yKXwQm1SfpqjwKLLSRaauVV2lyUjTuu/Wx2XbrGkJ2j8Fo1eo1DgQ3ZjdpomPpPGSnEejtVweIPG + yq3R5ebGulxqZ1xcQrfQsjU1T6tVY2A7pBbVxWs1cTtZDrjBGTi4VW8TxuV1Bw66rTwUq+dPHT1j + Xbl5TkVSel2Sp39/8Q3GPxDgzsrPL2Ou/T35hgI9fxiKR7gKCgwFOJLbftNKcCzt/UNnY3z74kZm + tkHjKe1kVsD3NA/GKM7TmHPtqbmJWsF/pSwyKTclJTcpUvTfJGgsLrSbNUU5m5zluVYti5OxFF1S + xjB7lyktXpeq1qsVCnzIzEc/1hnUopyPdeLRj/rtKwqKImzFmcd6RZZZkhoRjrn4ii0LfCZeLbfD + GNjRt99HCTdvS81Pzdea+H4HrZOPyFBQs5yHDUPxxzi8b68O72Y5bu0okzxjilHarkb+Hwbd8qnB + 7RpZXNyTZSgudrn0PfoePuyRPMJ3/i5w/jal9q3ZFKes79Ki282pCMYVMcEh59ddTLRFIV497pKH + 5lQsbChN0MhUEerwgknzx+SOG5KYO3522+zxuVUd6xudp08aGa2UC6JSp9HkVp8+NMudFeOa2NLW + MiGXXTb31jMKjUkpCXnOpMwETXJ6cmzmSEd2WV5W7gjPoroZq2c4w+Ms0eGxtgRzeoI2MdkUYy80 + Z1H6Qhx1LZ4Tn+PaT4EpwXMCFHhObIkzKCL7hiFS2qbmOm3fNs1nrr29+/ip+VNOx/dw/0JL7rvQ + pe37uVwdofLv0lkKHHzL+nepw9VyOT7Ea3EscOuaM+K1R3v6F06UNj7DbMmM1/Bti/evGu/fkbJs + SIV0qN0WF5umdei6hbrtsQ60aBy4Ye/aBg67OROPdr1bpdVGmlsj2+RtwHcInt54y+FNGrcfb4Hi + yGL9u8TcvOO3XdqJt52MbrssTZixdGjesESNbJR/7gg5v+1y8qKUGjZBYUgdWZBRmpFgUMueFq5j + 9lm2dLzvlBG63d3huB0UxswU8RZ9lFrGZEqtQXuPfxz/fzZW4uMgfp6mG8/T5SjYKZwNGrzy1vVf + ea+4o7M1CcvSWNr7r+QdyBPm5zG8r+z833z0LQXdLKxLeQaU9ZTh2nbNOK9nRjFf53TD6fkJ/dM3 + VcwJN5V40FY2tXVBtd9nyciwsLrW61qKYtKLU12TSlP8j0Q6huZ2rnUVphjyY7IqS2/f4irJMLKK + 4TNr8pPDUx3i9Y5US/ncmrSq4kxtWFrZVHaR2WnVH4uxufyzrQWpUf5vIlP4t+Ww37IS7HckJEHa + YxAl/AnfbxOEZaCCOJbrC28xdbO8Ljn1iwVfJqVVNaAf8gH3a0ndja9d639PanPJNfuuGev/Lrlm + UdNZZzUsGO8QUm585ZJSap57xRNXVl/YmN/bnH3actwJfAZysCXZMIK/DAjLtqusUdYoUCV0s/CH + 9Q7mcCji+b/S6VpwPRm6FP1jfR42bB+dAjjK9hNbR7dXzICLTFr9OfIwXVjvE7yhQgkGZTJ8+Few + qrBwlUymCg/z72SXoknebMJ3T2qzyuhINKXGqj/GgCnBblT5/apYOz89V+I+VmPrbVDQJTd0C+u2 + J2o0Jkg0ybtZ5BaDIVbWzYZssbbE8tXPG91DN7cruDIUg1s4+Ko1imq9wX8nq8SmyeW8abu0lnyH + I9+ixcYnGvTi40Ocfnw9NvGm+i9Rk5ta3OVIzeGtawh8LrPIhuNtNmaLxRIRx79LBekRu4UNMATK + WCR+ELEx1cPxcvzJVfN/Vy2ZG93NhnflzgsOcv/J3bN/L1/TwVVw/CzF87Vo6BDb8QPGGGOIVijp + tguevzKZSa7SKAwFE86trb24MT936oWjk8pNO5U4yjgbSrbEkhxjtNU3zsxZ+dqNk+pve/PycYun + DcVX0xVJabFqk9WUO2153dRLGrJ1urfUMakJCakxqvRk/4R4u1Jn1KtqOl9Ycelfrx8flWiOzgnO + CuvEEyoGonbgibVuq1rfKp0/jF89x2/l4HURwzrx/cXOx1VnznfY85O0SWpaDWrxM5WOj6pOFQhA + HJa7Vn6f4ICHcLsoBEcc0AoWDmFtcfxbtlFYGyh1rTiMxV0yaa3iKpVqVQSXZ7BSaTkKh6Iie/2W + DD6vvF5WhXXKWoc6ceHt7qv52F58jQr2S/4krrZhULM1OyYnDSe00a1K0bnUOTkphXjwtrkNkDKk + JceoEc2OFnObPnjs8jcTeuuJxNcdnNY4/u5TXDxwMGwsePqe7BUlqiBKekUxxsif1Jhy7Y7cRLXg + f1U2rMyakxgh+t8Q0OpwuExqp2NzjtuZpH1T9r4uKask7cG07OODmXfseUOELEwbJhYde7nf6svI + 1qcUp/fuFYozS2wR2RnBvspG4aiWgrMrOZJ/vSpRlotw6yCxqFWTGcs3lXgGXSrBzgUPAoUN7440 + 0eFIs0Xzgf5xb4zG2AKneHwuZKOyHM9l5Ea+m+y2MEFgqrjMlJSceJXT8UpkUoJR9by9wiowgTFV + fGaKLSte5cnIdmSyp6uvG2Wprhlt8QsDO6OKMkf7T594fY1t0uRJqWwPv1X5nYvnrgd35OW4I6Pw + EwKeu9HCvbiQLMJ9oIZ43H4Rc2183cjn/ejcHfCRXDp2+3cfnr2Xj+584dIVT62sGoO8+MlVNf5v + TCNbx4ybW2YyjWwZM/YMd6KQvPLV68cNv/Qva1e8ct34kZe+eOuk5dNzh866uMpz2XTX0FnL+Z2A + Z9l2XF1mvAvzuhyKncJyMPDG+cCAR69ui1yutXPGtGgHHGf7+285fhmccILFWkR5oSPN4ei73baX + nnfPwjNxudsdBWat08Gy08ellrfVpPm/znNGZcaf2VEwPD1KeG/Wmlm5/t0DR1Wh1BROPHPq0AkR + crl/W4KzDIJt/gTbXIBnXPkOUAsPbM3TZxkK+RduHaUG/v3SxCwDXtVbSktji7Hx2/iyoU3R0/+B + VHotfX3A0ZCW5hR/1Jn+izs21mgc8DFT/ERrLcnJKrSGi+PDzXaXfWxf9/AurG9d01aSMGRCYXym + PUXvUYf5Hzc4hhedf25BWWZMlFItF2Vqvfaj9GJHpH9Zf3cfdfw/4r4DTo7qzLNeVXWq6q7qVJ1z + znE6TewJmukZTdIE5VGWUAIlFJAsgpFIC1iAsReDLc5hF4MxkmYkNUgGbGT7WCPv2ubHen2Hzj5z + h/Fatza7hgMzPfdeVfdMK4Lx+U4tTU2Xpqve+77v///C+16Nx1XaNj+7tCejpGzRFv+/WKz4jywJ + t7byv7TeBoSPzpnfEiFoSfOxBc9jHfhnTvoafA2MFbUKY0ziDEB1JQqoT2kK8GVoLQP6pLVTFN5g + QE5UMDAUR181OK9anPgTx9Oh1m1fmsisGS5opGKckMopebxnVau3MaQPdIwtHmsPNN1w/3BsYXdK + KRERhISW0aGW4YQz7VEHO8eXjHcEQdPgwUVxpdGqZjm7zh4wUBaXWWmPWFxJvzOQ7lnb0XfzcIjh + jEpG7zKanFqp3qRXWvw6V8Ln8qd6VkOJmKEtrIK24MDsxzES+uJJHUsqyyA3aV5H8QZbC6CR363T + rvuS8HiVSjmD3IA/aVXMSBVIIwopgUvlMpL4bj760SuzWmoRqlyoQuWH9z8EsR2AjBXGPGcxB/4Z + iGwdfvtJyrdeud48B+u2y2E95xGqgK7jpUDr3ud23vjs3ha5NeX1QwdlKwzFYgM5C21L+IJxKw2e + 3P341sb0hi/dgW+u+Yvpvx8dy5mtucH5+PraOTg+H5TPf4HjS2PjZzEPfhQzYQF8tEiljOmUCb4w + BnU7G1DG/dWiEpP7fPLoep9cY1+vmY3eIdEa4+m4AUbt8C9vL/CLkIbVVav8EmI2gIc8nM0KtKvP + IS+Sgj8nIYjvGoGlLZzMOxhxmaamRIw144m2WmE6LP2Dhta35uJZu0Ly9wz9pIixJCPpgpZWvbs+ + 4VGJSZlKAfotlsqkHKYnYpU7DM6Br3uCGhEpU8or/2yzAQ+jhv+jDboqKyFL9MAcdw/xz4glgF/I + t07I9JAklk1hfj/WWMbnFZUqQg/+XQ/0ZXkD+KgBNKCuChmqqTQ0xNpDZWAomn/pAsRB1wMuvOga + dq1yEazL7sLlpMtFWsszvywycpiQWQ1KMGD9MNbXgiqRMvim5a2ifIDEDPFqBSssVPkmJlZOoFwo + HkZJww5oFef4sLCAajrs/9/B8LULpEyfL5Oplo2RTaYzVd9TPUPyVioReECHQkFijzYcigZVuQcW + 9uxdlGi5ZWrvIpW/PdG2tj+tpFW0mLJ0r9jWtOnRVZH3V7UszBp72jJLYnZGKZEomZ6mDm/v1tLg + rvmebKgtpLW4LIzJp7d7rG6bJjh+1/JfqD1pZ76YbUDcf+vMOyQm2o6FsBbs81WtUs7sGXwVDPzC + +KGiDOOobMZJihK1bDlRBvOLCl+fuVvZX+BLCwXUelYUDVRLC22owqgvVL0aUsWpT3mJubIE7ueu + hLpQxK25colKp+NdOdaw5nPLooM98zww2bbZg0ZKbk14vQmr3NXVVQqsvW9RoPInVagzbUyks7bM + 6kyyK6oFv9v74l0lla8xuJpmKZKkWFrkpoR6G1XRuBJ2Zuiuyd2FzSNJxpUNVH7e1ZMa3gAlOB/i + 4jXRjZgP+opHqhKkzYUzOFotj+M7i5TG2U0X/GaSCdXmD42vtygz9M2WZ3unisyAqL9afhAmL3Cc + YMqyT3mJ+vpZvQ3CoGJWjJBb6iOhHPEaZQjaHAEjPe+Lyzc8sCSQXvPwyvn7m2leiBb5h9m12WRP + mFMHuxpMyXTW4aoJbG3fCJTRWiTIlibw65r0phu6SsmR9Zn85tEU68oFkN31QamdgmwSxhoAIUht + UqNxRtAOiXADdDxQbk4ioong5sgrJEKuXgEGMFJJ4v3D5CoSf5I8RuIkaYlDgaDCLDoWHfBn4m/5 + +gzvYYySwVUEIzPIwYDMAH9A9kHRwpvXdDj8OkTrxSpwJ3asmAhfXDGBYhjExnFe3v9Pb82bOcxs + qhpIC1GSuD5e5fxZXksS4lTQM/0rc9NEe8e63gQrg2kADrPvxqU3d+yd3NfUuuebm7cf3ZD4D2LZ + ykRP3IiDD2ORwkS7S6PXSNROo86uYxmDXtW8/4WDe1863N2x+8kVjs23eFpG4xiBmSuPEF8lfoa1 + YoPYSoBVK8pDbEJC5N196b5X+gh7H+j71atyACcnf3UU2EaBYRSM/uE8B/QcwDglh7MctypPfNBc + CjkiHWc7cKwDdJzP97HLgJJY9lrRMcRjHIqh7eLEhLrQxlMmYk/4duIN/sBD31wcr78x3Qc+/t5z + t27ueK0DJzsAe73br5gbwCX3n6hxDwxxdDqBeXx+MYzZdHoYjXN1yUQOsntDlv8q4AoG7KDBN8vm + qC7l8/sZovqO+KpOuUmnaVh971h4kJNr0rF/6d+7INx483O7d/6nG+IqZ8IejmfD7lBuzT0joQEn + MKu4yneGe715r3q4x5f3appKbZMmu0a8fnlhMKElViVihhbn4C2jYY5ReHRWLy4lvJ0rmjt2L0x5 + iksyzuZcSq8fijet9rvX9A4eGI9Sskjlg9KwMVywdw0ZQrnphdEELtK4HTZlqkHviyN8zoeW8BrE + Zws2jK08kbINl/EVUxjDYN0ImoqAFRvJ96Zah22kux21E0f75pfBvCLl7qfe02o8GlwD/edpNVfS + GD4QDWFt06+Hd1zkyyGQlVTpdL2n9l4tUs5cUv3A9Zlr01X7Ld/e2rRpNKNCUBDLJfJIaX1n41jW + 7G1vn+evMVigp7sUpI0Buz1ooK7gsPD2J1ZFaLVWodTbOZuPk6j1al1qQWGhK2VnBw8fW7377KEe + pacxtJISElGqcqGrJ7lgXUN+8wLIalk/ktqWmQ/BA6JB6DqdWKeAnpdg/PoSZsE46FEpzA4OnCwa + lb0CT79hqqWn5uev/K9L1j5qs9doUUABLQ6aGthf82u1o6Z1bLypZXys2VUbJbEf8jJkYZYCif7G + fG9/UwFGsbfCce4nflCr7ayaovj7Xru2c8Wd5m7wmdp3tevCaILDWqvcwSo4QNOApoACAzSJlfFV + J4uUsluYJYijafKh04R5snb2qhO/zhDm/DQmjIH4KbTcFHZbdVUgpEHhjA2j8ZUnMJuyPPP7SRoM + KJEnRfEdzG4GinQx2hcyenqN/cIYYJjOL+oJQUyB15Dyz/ngpZNAEYpYorpiVpwQ1XPET+WWpMeb + tMg1noIvsSZTmyRlCtodIT3V99josoMDrtk5g+n2voy1u3P6uSsVccPwcPMN962G9liC0R0JZYEq + Jdtq9qjFd/P1kt2oXlKNJoxlYCrK2D63QVh7B5a6YOxieM5KP+EH6gK3a1ZcyOb95QN7j92cb9l/ + +sC+Y7vylWkuNdqWh8DVJcdaC2NZE3hn59l7+jpuLe/Z+Z27+9pvLd/RsW0kFhza1gOP0eDgNhTB + Vh4lMTjH+gjWmaVqEezh60WwvcqhvzSC/ZhL1EewV1H/tSJYSFgr/O0tzY5ZOzAG7TYYyfrnD47G + 16AI9kNVsDNlTKIIdlVDcl6EAxf3vnRXibXH7JXlNUCQF2pGsSnQEtQO3HVib2HTSJJFEewvOntT + CzYIiMHP8JndTVXE+FiI06IcM7GUnYpThIKgUKwDjZ8qA5jtFsN9PpZz9HK8yaOMFk55JYqhzlWx + Qn3sj9dJRpj7NaQjxs/A+IaSao02NReKQohcBg13az5vUdgcBlpE4sR8T8xESaQSlac5Mv36leDY + lmr3sYRERsk5tH7eO/MO/i6cey/29tzKbWx25bar6MLkZAzE3spBCqPeVuWKiAFyjhxO8OutbDNo + RovbZn7N9S203tqnU6IkE9MBJal7t2YRUDrVRdcJvly0ciKsvDgB/16yoFt0/HVv9inWefF3Cxsf + HE0tKyV0clIql9Hh4njWlfFrvS0DCwZavKkVd4+FhooRjZQkCIlcKvMV5idcKYfS1zq0YKjVB2z9 + Nw/6Wb2Bi0asbk5itJkYU8BkCzssrkhxaVtxS39IruZYlrPrzS6thDNwjMmttYccFmekuETQkegJ + 0Q7sYewLL2F5PIatx5bjXVg7th3vnPIENQcOl/GVRY41sje2r2/XsKymfT05cAc2cABtYbEULbu7 + 88s3d/vfjs1/eyQGX4vSb/k29y16t3vgMIv2OxlL95ZBz3HZAF8xTsEv6bmangrZK1qAeP0cxHM8 + joo1fNuD8gJiB6XgMMW1Kpjv0hwfsd3lEuWuqwGdvhZLIggIuQBfadPVcgPRE7hYyrpiWUv/TT3u + TWpORLOyjRp/wetuDOqMFhkhpZEa+uvVcH0lZsa35rQu1mjIbHp8w9qHV8W/h/Ci1bwSbdY6jCqJ + mJKS+y0uTsHAaMI3tG8EvBrPWQN6qiHaFdVxvqwjmjc1BK+iv5bra79zU8krIrWdvuJNI7H40kML + Byl9wJqLVyZ6eyUyiYTzIJ+un/kd/iB5HGvEHhJQelqlUjQFMXcUPRVAr4jWaDkK1TnpLlkVtRMK + pF99KYn2wRUlAjogM5/nnVp6OnUupRJSvuex6Ke4huDlySuUfz314Q/Sanc8Z5l/U8m1RaNFpLSZ + tgrevyb2WJMgdlos2h+Jay4T+g8hvYtEkN5/eLmwZmaQrMgu0SDuA+j3vUpwL34aq8qQTEAZtmNt + J+LtSii4qbDNFoZMv/IUkQm3l5RhNPGmTEkLJzrpHZChgPBi2/mLqNdHSI2h1aPVS359crYvom5q + 3PVkQfyPkLMW5VS21c2QUnuuIQ7iZY/ro6dq1I3/dG6ilkiUu6ZUhNmKpOSvIFVMwNkyyEzCg4sR + T+gUHQoLfGGZ8Bg2WGovlUpNixk09xOZkhrp2DuwHNGBRKADSAip86k4ClbPxdM8Uwvw52Uxp/3L + 5HAlIdTk4PwYdEtpjTuWM/dDeVTuqBMTIZIoXbGrCwrcNmdBDC3i1DxwDWoIXAm0oJiWkVdlVSdC + i1PHKphrCfH9Wu/K+1cgUrAy8Yu8lU0JViZK1qxM/DSU+2bshhP21iEkcPnm1GZm88TEZoYwDyJF + dCQxdPCaR6GYi8y6gVJ/aylZyufDQ5gZ6cFbIpECuCofC+JvQ2t5ab5Gw9MwrwRkjZ/U/urk7vwE + Fgy+Xid7WuO6honOSR4vhlxz9l0nf/7DvD7x/6i34IT6mhY8J/xrA6Du40jyt6A6JMzpUtimahRH + +4UipB0qgdVEe/20yNjrMVT7QwcurRcK678wzOcrL8wn+Omr1RYvW4bJ5uaqjK+hENYJc+++x0aW + Hxxw8mKDYZzaCxOe1bladdFVn8VsvHcDPnuiIu3mUx58QV3G6YDZ3gNw1nHssDDrs5gLvw8zYB48 + VJTFDPCF6Wl5GV9d5NuYCR0dx9xumirjJ4sMVqSDvW5aZe1VzaVv/PKMyYAIzwh9vUH5JirZqQvq + uWY589U/hySiqwb7BCEUMHKaurWbupWbw1JgaUxEc3aW/MY3SMbaEIo0GIDs/bdkwFRIRjI2RnT0 + K4TcFPVHMnpAX2hQ6RgRIVNQoKXyCqWQESJGpwKnwRNqIyMmxAqq8gYISeVSkmSM2soWVI3I4mfx + 9SIbFkXPfj0h4RrL4NtTcPJYQxk8W9SwDoeZuz8ep8xfDOzIPUrdTOziCZ9f0lUV4tAaztdKNEAo + O1xjGWMuXqlfxcDX+8JRt3NJS2yw0RkY2jOUoQwhR6AlaqfUOmXnlmLphnb7ixlX0q4IuBxJI/5L + RiFnfa6AHsYUye4oZ+bsHKXmVImQ3mjTGTMj+fulKqPaarNY4OyWwtmdEcsxH5bDGk5Q9sQZcAwl + uuD5ogrT2Ckm8m3XDuONzK70MdHN/Joh34szl9PVrSxcbryCviTVtJ0TsjL8jLO4vMnWkIjoPAnU + v0/pfBarVycNjafblxaMP5LpvRZL2mPL2MxeA038sbRrJELr3IYMoySltIRQiikxQcAvlbfdzsTI + lm5bNmx0hL/o8RhDDXBGjXBGj4tpzINlsNQJmTGDZoRhUTBVVKrsNxplROBbuh2pZ+V1mqpbJQDV + aXyiOj9Uz+OuuMGulURXN3dNFEzO4qq2WL8XNWdZfTrZ92xZuzlgoGV6v8Wcd+O/FuaQjSaSC7Y2 + w5mFnU7ASYQJSSp9Hp8plDXbciGzK4xV53IftD0vFsPaj8cgnx+bMqtUZl8ZfKuox8wMIyMfOOZ7 + 2Yf7fIbgI44dsscMN881pfHmVws5qj1es9VxnUDSvitq4/h9ZnPlKdadDwbb004IEsrsy3ZHnzwa + Gt7V17ely3GWSDeYAyYGJ96326wRGyuTU3q3x8rIKelDj5V2D4cDPasL+nyL2h4yYQRmAO/iu0Um + rBnrx5Zh+9ppbAH4GyyAqcERLIzNA5/DklgLOFKkJOGkRJIME94B9FgXzDyGEObwkl8sbAsseJQr + PcTGJET2mPxlOS6XO4oPZXcsOuLYMztf6NEuXrhYaKv2iAkOTslnF29erC61X7cOnb2iDA3/Sa4s + Q/Mf5Y15N0M30zJ3cXleH2KklNV0d2YoYwoM7h7s3zLPEfWbrV6b0ebtWJ6zpnVnaeadSICzaamI + n7NrKbvPvcakaki5QiaK/Ae3XW5mY6WUUSqVqmhWhYtwQ7DZE+zOWDlfxuntNMmTFleLXtsSi/c2 + mMVi+9+6AwrOyrp9cs5cWafTAZKzKI16Sq1HtjOEfx+EIQ5QFdVxFrL2v2EW6OGOnabs/2ZUbhch + 479wRWPPrJ3n6kukNhnntVq9ehkEJzxyMkWsvRiNt7VH8V9LaNS4SEtwrZSCjCyhpC9kgoF0Q5Dv + E1sKR2GB/CLUSKH5Usob+VuD+FVvCyxSnddq8emoGi/M3WEO+tUr40chNiJY9LhHhUBuwWhwHLoj + C3PMv8Ojd2zX7+JvhYqJF2dLkHX39F1WTkRznS0m4kdRr6XFp5cFwqaMTaaDtASH5Y7H3Ym12ebR + lH5uZCCez3lcladmZcEx8E8+EfO0jBSgLgoQx2fhWDUQya6zmBacQrVDcKooo4xH2R3urwnceq02 + K8klRT/okCJjtwyO7h30BEcOjA7tGfT/Z9oSc9vjNpY2x9xN7cQfu3eNxAL923u7dy6IBPq39bub + IkZ9uNnnawrp+5F1LAV/xM/AESHez52wJygkQI7nfS3GUYm4nRQh6jdvV+6up3791an/EjXOyvBK + 6m9b2WIM+bxcTclSjV2fcMfXtRSX5U089ZuzLlsGShpRf++uBRGZyqT6PUqcSSklxt+WQDOAko0l + 4gu29iDmdwW/4PEi5hds7QLvqX2TLhPGQhIpyk3Ud/07XCxn284hW+DLECA+fU5duLSB9Eo7ENq9 + wQVcREkklEKlUBhMNlVt5O54wqXze11qxqqVEIB8yeSERxEpVdt1le9caghN8AMyUiJVo+d5NkNb + EMFRtmHznscK4OGTjogjIjeWwdNTmDz0YJJ/DofOWEpmjxgLIu8O6ohKdwQpYPp1vk9q+vXw1Tqk + 6uogWRhT1N6Sc2UTSFo2EhcF5q0quFqTdjkcrVQss4VybnfE3zyvKeApLsna8xErFLFYKhKbA2mr + zxlqKbUEiQPxnoSRZli51aYxMCJWxRgsehOnD7ZnIx1RvZRW0Ba7Rq8g5Uq5RWswcboAenKrBT8L + fiA6CqPpyCTmtvuRRpQwD7dv83/DSH9Dsy38tESw/PN8c+q56XNvnqu2qaNAqcpAl5QCdHyqJ0RH + /LbAH0gVBpdPc8OqIqNgmDYEVERVOxj4dqfJabSLRBJIG1arSyGTiFav/cgZDNluhoZEkvDLzbZQ + 0PlLr0cuYo28DZ3FnxRpob+NHpe5hdDBilhF5ZYRwe367Y4Ts4FDGx8ICcH+5WFDXQivuySCx590 + JQwOtTS2Idc8ktLL9DzLyYIhY84G7Z8PG2pxQiGR8LSOFsAgsnoCfqn8NJf3uMCi2nvEgw7Ig/fA + EcexURi1g9+gqB0xy1zUDt6ZgvE6DNbBbyE7uungdjctsm5XzbIjH6t/n4/V+Vaquhgd1CJxv6QW + ift91cVEfXWjpkSCf1aM66I+d9hA4ePLCLRLwx/T4eLHHhADLuJzhwwUMTJCUDqv3RvmgOgQ/q80 + DF3QlsvnnhPLoHakChowH1KshMTFMslXjoplIniSod9Dv0eEeJlfD6QxOaZFK20vTYllhLyEtV04 + X3Ujdb4KPFBbvqvsIl+rrtZVnkHXIX3ggOipuev8hL/Oumtc50DT8HBj8/BwoXJYFO3JZ+fBf5Up + eJ3/OfMHHBNthHQZxOzQs+JlzIFx+IOnaJHXPKDshkJ988c1Kq9utiLmlh4v29X6K0AZw3ZHyEgB + k9yeCQQa7AqRwpkNBnMOhcKRCwazTgV4qrYWQdyv0CrEEoVG8aehYN7Fsq58MFRws6y7gHj9H2fe + AT8nb+LHhrw+/lV+bF89RStDcHSbMDg05bnL/QwxZ62Xje5FSh90OEN6mUlmyYTDaatMbkv7fWm7 + QmFP+/xpmxxsgOkUTCQVMvx1RgOHJtcwHzV4Uw6GcaS8vgZ0RHH5kzP/Dl4gnuNX0czHMW0ZL5+m + bG5jv4iFmjzfdp6vS1zp/K4Y0gsMEk7WKZcLR+by94QulPewrCcfCjd6lEpP43QpVEAnCqFQEzo2 + IdwchOP5OxCA1iA7ISP64RCEhu1ZA/i79rGxYvv4aPHIRLFt8YpiG/zUzAeVR0h8ZgBTYOxJTEL9 + kRzCkD+pdnI6hQ87UzoS1+g+6oO5qp44pdNUfp8Kh1KpSAjK4RZiHf4L0d6a9XC4GA7BiYtPBUVm + X4+yB1rP+RRU0BtXVdCszyV8gqvFX5FxLpPZrZUZ5OaIwxExU5WtMq3bZHZxUqAH6GR7kniwVgoB + L9XKI5X2S89xHBzd4Mw75FKyZa4r/Di/ynmM7wrvOMEud5dB53HRyj+rK3xp56Hv33Hf9w7kOw+f + 44+VP1hbVhSblrc5bcLRgRv2nf/C2MjD/7AXHRc88uqd44eWxqOLbhsdv3NZLLL4Nqgx48yHeCOZ + gPGs/bieLuPPTmIqOV0Gt09alolWQLlNn+d77+vX3iVisRDN57wCWXF4I7/DIW1j/klnVUkQyQAd + JH+f3R8zSpw0KyMJGSsnJLtosSrsM7n1SslxUkwAQkqj3tXOygzxBJTQUmzj81gaf7OoGB4PDHcE + hocDHQTqev7jCYyRnQH7oAx7wN5TLRr4MuTRY/Dmj8fKQHvS5RLNX24ogz3HRauF5uf4xYLysv5n + oToHCfniNVo7+K7v2TJC7cxcQ6Q4XWsT52wE8UTrgTMHu3ctyjEy5PdpCZ2Yv749O9po9fZs7NrC + aihSRKkUWxuXNjt04c5YZllPihbTUhHkaK5l+b7SiiNrUtamRYW2LYORIwseuqmds1oZpTXqNDrU + YovDYk7NC4d7Umapzme3eTiJJTUv5GqOGB1eh4Tz2fVOnUrrdRsjo/sGmjYMFRhcnBji6yu2GQXZ + QUawEPS5hRMxp7KMb5vykyQWLePe07qw0rksZoaRw56TyglqFTnB98unUlBqQmkFkkZtq8VsHJqp + bTOsbVHnVAjRbuAkO3TqZ+S2hM+TtNLTv1MalRKRXMuAo2JLoite6A2yzygNlQRe+RzYtTGdebUG + kVclhojHkYpFzPhraDurWK5WfPRGEv/m9D0ovp95h3ijHjXP8ah5jkfNbgE1e/5M1BBvNOyYvP3e + Y+v96Z2Tt8FjoPK+JjpQaJif0Klj/fCY1OG6fa89ClHzo337zn8eoeezS+5cHAmO374QHsOBcYSa + z0P/eYxMo9+w9DwWxJ8tsiqbioYvzKBRu5cFVWXQflwMxXox1fYmBNC5Wm1+diNbzcauAiYV/6CG + Y2LozaezEElitAf7D/+kt6rEuJSRI2AZ/HZf3CD9mYylRessQos6eiADja/fRYtUIZ/BrmMlU6SI + QO360o9O0wY/4udxiLNTUKaLsTXPY0n8vxUVg6O+waJvcNBXJBgzetI9xsyDbDTZ1KTLInj1jkYQ + vBwOUe9yHoAqmPUKIBNi5yrM4tdDWPZTAuxU36HyjR03L2lSQYAplVSyf0N7bqzJ6p63qWe7Qi2H + lKuS72hc2gLh1RVrWN6blqM6IyGSKdsmDvateGht2ta4qNC1dX7gkdVfuCGrNdtUamvQkvCa7RZz + sisQ7U3Pgsuc6ok4GxG47GKtz2506liVz2OeAxeVGVoP7dI0oyAuVrGVvwxbbogtyrnMb4actGeK + ROCC0Ep/emgRFzn1Lrk16UWl++kZFmoVhnUy8DXSFOmMNZTCml2sobIJr/wt2HwptIyxgCPud6vx + 38gUMhKd++gfBWjBOSyGHslSj62v8dj6Go+trLBPKfvn7lOyNO9/4TOfndqeatn//MHbT25LV96z + 54YT2eG8xZYfSmUW5Cy46dBPHprf8zevHbrrJ0fm99x3/sGN94w4I4sOLb7h3gWuyOI7UX4DPZKF + jM96pC9POnmPdNukRdjlN80/COUaHilX80gW6JH83pRNflpnUopwiYK+wBqtQbsvZpA6ZKxMhHaG + E8o1FKkJeoxuo0p8t4wW4zADkCKkDMz8lugmmyFSdiOkfOMKpPwcIeUMUGNNmAzki3LV55qONuFN + qiYVAo66qITI+VelA2xzAASeDboySMxuzEEbiWveaeKq7gn8xeDp7rrl6ysb1/QlVTDsVzKUv2Vh + Id6TMpkKi1o3KFRCX/TWaCllYl1ZX2K0GJGhkgDMzFW50a3F4dsXR02pUhQFEiA3dnA0yHBGldoU + sITtnInTuhvszoxHI9Z6bGa3Wsx5M3YYcmuMNoNY47JyNp1KabNqXZ3ru5Ij7XE5IQ4Xx9Dv8Zj5 + E2TOMBbBEljziYSTLeObpvwiERYvg/8+qfObE2WgKlJk1Anx7lzPb+xRo83WCDf1CAIfjyAY1yII + HdOyd9DWhBut4VR6WC0jhqqXg3m0NdYRb5gXUt0hUcjElXV45QLwgNZk4kVK2BZEvSg2RH3mgMul + AxW1iZWIoN1MPwYzSlxRySMc5aCVbIRWguJOP+qn/DLEkQO/HSZDZpA6odrgLYPU1XFEXtNHbYyv + +8pNA3uXtPpU8XVf3rbr8Ql/5SO1r+BHqYnG2+gLFZwMrvvsj4/0u9tX739k7M4ff65/4MiP7tl6 + /4gzvPjOxVuEI1p5g36qSMZQ5o381MHTNhV0UbRGXQa3TrrXIz+lFLZcp3hYnePFez0nlbvESRVh + iiKZfhTJD333ymnODLEG8863pVpr2OaLGCRPQboSrTR7UJ3TYzb7dBS+ay0FdDGvzqFjxfeL0EMY + oOF99Cyl86H121Eo034oUzHxEzGScXTmQ+JAlW+bBb7dXOVb8F+RxUCuTUGLCf9fsBiBcw9olasU + lqTHk7DQlQ2MTiFG3UMgTpsjnQ3peSH1KkZXuROv/DtgQTiZeKa2Y+wZiT7it0c9dhVOc2ZWAlNL + +fSRGKhUErUsQOTFtFgA2QqHfwl+a8cfg5xrAmMn2FFPGYwfFy28HudyV0kDDv/w0D0v35LvOPzD + w/e+dAtMAxxty5o6VrRYncLRgt/9+AfPTix++n8f/fKHz00sffr9ryjunroxVtjx9E54jOZ3frOW + B4gMkHUtz8PM6eGiTK+i5bRlRDSOUm9oG+fTF/+SJMBNo4dPUDAJ+O1OlAR4zW49K50iRCSA0pUJ + ex7fIZ6AElqMsoAk/sMrOPdtgXMX8Zy74pSqxrbjQphC8mHKKGTahVU5fmwW8JfT7BPNB87e2rVz + YR7FKKySTvRtmE0BNis0qMCgkm+ZTQGW9iQZCU+zUl3rxO6ulY+snU0BwJ4FR25s01psrNoScUbd + ZofZlIAZQHfKItH57VavVmpOdYdcTRGj3WuXan1Wg1Ov5DOAsVvmN20YzjOEKDFczQA+JL0iLY+a + FgE1e2pRirqKmnEYoSipcBmsn3SOUOPVPb+fFjakl4NZgDXl8SWs8opsNgu4E2UBsUaUBag5lAV8 + CywEt+UT71Es2rvIUu8JaUA0asafkEO/JJZr5NOiOL5v+jRWywOgVWiwMPb9WidkdOblUyw+gEWB + 9gX8UQybeb1IofcYYAnMcQaeojCz0OhprjVLmctgrMiwo14DPOvl2we8yHZmnzzDb5hDyENNitA4 + JsLmohreQuYAMgrgWoCjy5vLn+66Qi85vOrV+o/JOlCTxBupHSfvPPztDcH0jpOfPfzcBpilUJw9 + knc1DUTVunhfg785atNI8Psf//DYimXPvP/El/7EH7+5/IGNpbC6sPPpHfed3BI2pvrX3VrLVkR6 + aAmT1d53hSwIZAEg9QOgBgl+9yGUXjEBCCxYxh+etBloVXnmwkl4UoWcxcGizD0SZJWAFinRw72L + 4rFaN6fgOMLnz6XR1tuVE2FsAqCe+aIhGABBeJu6O6EbfILLQZtbOSFcZmJiyV83YSL6ZhMmRooS + Jp6N/vQzlDDBfAntBUOMBNqq3X3SHkB1A3ppuWqAS0GyjL96GVO9gL8DTfI3U+gHGLQFi7dNBhoP + oq+Fl9GXYE7ZmjnV8VlRJRAaMqzZRyUtrDesKsGF65/ChKz39fClPAfVsgIpRVEdPxw3S/zVx4IU + uWIC3XnJX060tWSwUf1nJYO4WKZtXXGgVJ8MggOrv7Aho7HYlFpz0IqyQbMp3hmMltJ1RNsTdjaF + IdE6/g97XwLf1lHuO+doOVqOJO+W9+NNtmNZli3HW5x4d+zEW7ylLtlkSbbVypIqyY7dmCRNS8sS + 7q+UtglwgZZCWUpLQ1saAqUuCS70l1IoXAi0j6Y/yi0/KOBSehsujvy+mTlHlp2FtBfee/dd6YuO + ZuZ8883/W+abOT5HCpdkyoarwbhEU0GaeXCumyZa1cZ+F9nP/qfsNTHPvinOriTOwnCljDKT4eIY + Ts8odYyWTDItDgMrWJ7k4wmaj0+xapSy8ucmHZxMybAUEdsWgW0j2fnxJpKeyQNOOEFfLD0DGbp0 + NUVjj5Psgl1cXWRgiixMUSljymSK4pgiPWPSMZeBRJBc84DUl+Io4mv0mrdUr+HLWPEvROF4Pb6M + 5XQa5i6FsbSl3NZZmhSMS8WXsQ8xO5mQbePvpOeofsellRcJ5aa8RPZ7+DoW/+zZ8tsV7G0XH8Z7 + xc3sKfYtxW9YTq6AHHcPtGSx32OOKV6BFqXYUgs8NxEeldiSz36PfU7xC2hR4xbw4uaVQvYttp9c + D5N7ya+Te8mv43vJjxjm8h9RzEdvywrXJXBu3a6Mfat0522ju28dKITP6/bcusP04+SCKqHAJsQl + FWzMKbDlxj2197i7tm7y3t17jt1QW+e+x9E7VpeSUb+3pddRC5978H4oa8XKHGO3wZ4sC/ZkzDeb + NGRPtpQ5qzggXgeTTZniKtfBzDF1SnF2NmS82fhkXsEqNeqvwrKck5aVnyB/XLrnxW6pV7G67LTE + tHheOcnKWUYG+3KMoRYscxNYpheNwKrLvNmk6+gq6Kgt6OgoqJXp006y9U2ZSL/5wY1NSWmdG61f + bd624f7sbEXznPrR+JSHsdlW/0wUuct61b8SVa/PC9WRXzI1rSYFJc4J7E0b33egw7K9NlfNyVkt + z2WVNRQ2tiYUby7drOVVMjmk8qbODmtVbp05R6XTsDIFb96yo7zF2Sx0bi9uK0/Patq9OVsbZ1Dr + EoW0nEx9vN5SllKYxivjs1KS0w1Km6VgQ1xKXHZRvNGg4Y3JhqyqbeatYwmsLLt8M96d5K9Y2efY + tqi/tDKPS1cnR5sMKUVGy8Pipcms5sCVLk2u9OegxDXzSGZjnzPwdk2qidwtDy/CZFDARpJ7R5aQ + Zysors012LVx4e8wz37fWGi6RXLuLYqEvKzU/Mx0HXNUqeJk+A5tuKmI2Rv+PtagfOVP7O3s8dXY + f5zE/uP0OYpD+fcpjlz7cxQQ+7fnbwv2DwfaMvO6gjtGgy3pi7yxOCPNlMbr001pWaZUDdPVd+j6 + ysrR+e3b37/LVr3r5m01PdaU5PLt1Vv6yuJTrdsh7gpX/pN5gP04fs4Gx/6pJj41/rCWwZckhxS3 + iJcku694TRIJ/wdUqcU52SUQ/gkpvJxRalWPyrUJQlp2QaIiiYOVBD8kxvywlpNrM9LijQlahYNl + WYZVKOWAIh9s0wm22YFmcPQvNek6ewo66ws6OwvqZTxEf3FTJeI3bixB1jgrm2Q91opKmJSSu3IM + Bri2i8th65ZymEdzmJwcReuhp5NeSGKTjhNz7sZxcFNgz27yHNme3fhNniy7/OyQX2XZrF7zQ79R + iybMj07LYKijZGttcYJKq1FnlNRvyDFn6PR5NSWNcLlOvhTT1rRlQ2VWVWm2SqHGN2SU2g1b+i2b + dzfmxOfZ8jY0liQtVPZuzFTr4xMKcoQkXZyOT0w3JGQlaRT6tMREo05ekp9RaIg3KPTGREOyXqVJ + TuBTSpuKMyuLs1XytCIbxFgcXF1OsR8ls6Rx3Sz5SFMSXI48bXnBwlqOiVPloOaW1amy+73MFc7G + Tun5JrVRnCu/18Sp8X0X7keyhNzKwg3VebomTVz4PHv/Ayfz8uzSQ1B2hSEnPTnbmKxjuuRgDzmn + UYY/mM1khmHdKGdn2NsVObBuJMHEuQNaCtlbmAcU6dCSLLbkA08n4UkVW+LYW9gpRRK0GHELikPj + 6Hr5++S9iEMGlIp/oQ+VoxrUiLaiPrQT7UUTyIf2o0PoZ03e/knPkKd2dr5hvtgfMoeEfc4Cp6qz + m+9GTW3ytjhrVVKVZz7k7G6rqmrrdobmPVzmdbuMmdsCM70zLTcf7DhYeYO32pt+/Z7sPQkDIykj + bP0W5RbNBoveMnPQu2dki8WyZWSP9+AMZxofyzOh8ufLn4+nXyWiz7E/X3n1A4N7JLybHjiD5Odt + rLJVFomfieJnqvgpnefW1dd/rj/PpaytF66TL40n+6m1qsp6Nz68Y6uwVRTgUrimEl4P2yoqbOwA + Pl5Mxw3srRHei49YqyorC5iKqqoK5ll8MrwLH9/B3HfjkuzeShygFbbwz222ilegwhyDwgiWdgAO + zFOV5RsvdkLpHqu1ihVEpjAHhd/ibr+oslZZoIB/i449y/5N8VtWqXoM4Z3OLPsj9ruK16D+BPk2 + wyz7ArtD8RrKQJYTCv1J5mtNuiS1GiXpHlIo4uWPGE+xYRTPrqz+jteZqAdW8yOP/MTTm/Piz3mx + OxL1F97Sxsdr3yqqqykRjMxhQ4LintLcu/OKTcXhF/QGnZ79XnpGHkV0Vp5HEC0QRPXsabZX8WfU + ilq+UfpFG/+FhAT8PxglpXba8N5Xb0jstCXYElJrH9ycrjCdZMNfT/2K4iSGGPVTVaWl4nWDdEve + IluzMYj81ZQ8Y6qM+u6anO0t3T6xWWisseh0cWqZllfnVXVY6hsquka6KszdjtqMhqoi2BbKYf+r + yrHU52WbUtUV23Zuq5Cd2rJ7c46Sj9Oo45KFDFNmkjGpLDevtNBUN9xcN1yXqdInaJR8fBpcCMQl + xulT0vi80vyC6kGwQjb46S5ihWcRXk1Fv6ECmNVNTamFOr0+xcRrtbKC9KJC07d1RTk8r8zB/xNT + IlJi5W2RHQGDf6nY+HwlGIMc8INCKaKSkd9MxY/SipkuVWYrYt9UKIo25hWnqmTWcLhMpk4y5VSY + lIo/ybWpxfkmS7pW8dMHB2SJfKoyWY3vbfzLh/HPXWmTFKk69gSv51i4QtaFey7iX0sVYwxykoBK + UPdjyQlZpm8xLyENMjIvP5aQoMk9ybzSFIc0yVmnDhfeWcgWFnKZp/TYlaZTnOhK+pR0HX2arvwP + 5IcISdTh36eXYo2GH5eSUgRrF47G6kSpwH63eoN5qvMFY16e8fRdH60uaxz4Y3VjaVWdrbilp66n + rkX2dOOurKz09Gz2C1npY+6Ng6nxe/5mNj1iC79cZXumhMwNEpmoFDygzkOCXpWbm6LEmiAUx7z0 + ZEouZ5Bpi9Ix8ESZlgC32Rpt5EHMP2Dc2BN1CavfLoiXkV9LKpJFzZfV701gbeR5BbUbTc9wRbbK + DYpvmqqrC4uEm7JLs1PUn/yMOjmjIC1UnMe+YYiPN7D8xT8n8AYDa7j4Fqk/lpevTSkwhgeYh9Py + U7X5eXg2iXGFUpBwAilOMi8/EaeV8+cS8bxW0XlNfu7sTOTnziiw/MjTMuxdiXFPFtXVFn8jAV5s + WVyi4u6ygotfJmPuLCizCgLEawVjZhvloxCN+cj4NEqTtSKDrAXlwqdCtok49Ep7PqX06GxjTrNr + 6zZHQ1p2s6tzu2NT2sf12WXZjTZ8bLGy39uHL3Xc9+4SP507b2pJ/9CdI/6WjI+ApkNMI5spH0DZ + yHiCT30KBteiDBheRoavbLSteQwI//2HTIKaavJEKV7t2UyNPnyzTmfQHrkjMUGjO6bNK9iQHNDq + mFkhLU3IN7KqAR42zVmacZVSq7k4k44t3Mbks2bQvAWZTjRlnJS1Ppafryj5DoxcBxiSiQE2ShEd + /ZBzkckUnZNM+dITlWuvVOh/uUDiPDklhTWX9bo3F2yxCrAF16i5jJKqnK3d/btrIdtq6tt7Khty + bEVZKo1GbeALKhpLJv07tu12sOmbd20R+PhEpcqYm5ZjSDA019Y3GoWs1NZac0MihF9udrZWnRiv + 3WPfPpkk17hwDipiqtgueQ/snQtR3gkIcFnrN7Lz0mG2pp8C1Ths2EjWIetxfrL4LZpc8Zl9+nUg + Yl0Zvu7oSm3JNRVnhX+t5NUKnfZHSkP6BmHLhhYt/xv21V+z8Q138Ho9f4fckGUsq0th7tAlaORJ + ieGSDOaZ8PUYUy16gi2TuVfjzAJx1ghxZgEzN11bnJVlbbG3bt1TZ8zabG/burcu9ag+c0PWZis+ + NpWx8QO3XF9uvf5Qn/g5sm1fbcr0zV34CP4eRWdYXuZAWSj96zo+5SkYPR1pYXw5GR8C7fnVn3EV + I219oPFaPvxRHa/XHjhcoOHv1OTmFSdNafn/yEpOycxKZk61J21OM6quU8JV9sVzKTjKtqFH2AzQ + uwmVnticf1JmeTwjQ2EpeRrGrQEEyfAZBxbYDBkITGB7r6FGMYqhllG6zVWfX1+Wo1QpNSou3VSR + 3dbZPVqlNRjUtS3brPVZFaYMTq1R61N3dY95ejtG9zCHbX0bMzSGOAWXlJmUqTPoasorq5My0hLr + rIU2WPTisozpakPujh2No/Fy9TC+bkRPsTWyvWKUZReAbt+Q5aVrtTjKGiHKmt51lNWkNOYUmjLD + b4L9FFrts0p9WlHOpuJGDf8S87OfM7OVIY1WqwnJ4ULcZE1itvMGtSw+LuwzMofCn8DWRistinSI + MB3SfwuxsmakkxUgHFnJG3OpfWARlf9ngl6tLdjlDjR851W4os/lkkvzkxGz8iXFV+VxShvikeoE + r0DkAUTcS4oI2ZuGuJy//cwQF2dQ2rJMbaVp6fi3bFdOcQ+zHaoKWEFVJ7BhIGPJcpNzO9ijF0Oq + ittg1fkMJWb7FemNayX2yHsnWfu7JzmKoj3/JTpzJVI0raEPiPTapaS0Kb+2jl5aR/8eTVxGFH2M + W14l1bYr0OcxqXNF+koU/Y6Spv7v0pOXkvZzVyK+9bL0K0q6L//zSf+IRIaudfTpS+gH6ylOu4Y+ + Fk3xsivQ5zEl5In0l1VKfJtS0kcidGw9JeuTvwP03HpKuSOV/bt05xVpxTgJ9MO0CqA30t5ILye0 + C+jr6X/LcAGdzLRk3pF5HlPWjv8rNJ31iRjF6B9Ar0dTdlUUzWcf+wfQyfdKOdw/hIZzjuccF5qE + z0XRUm430B/z+qPoM3mv5r2a/9H8v6xSQVvBZ4AeLNRE0Wjhpwo/ZWo2PbhKRVuLXit6rfjtksej + 6KmSRaAXSs5djjbkb3ABvV06clm6v/S10tfMHzT/Por+Yr5ovlimLDPE6P8fsuT+XSqxVIgUWEM3 + R9HblosxilGMYhSjGP3PpvL3AT19ObLmrqHhGMUoRjGKUYxiFKMYxShGMYpRjGIUoxjFSKR7rS9a + X6xorPjQNdNzlQqgQOW319FLhN6JUYxiFKMYxShGMYpRjGIUoxjFKEbXTjZVjGL0P5cQfpWxeQh/ + cxt/9TyOtMjId/H1pCYj30hXyX8mlmXIIn9ULMuRUb4olhVQ/pVYVkL5P8Qyh2YUerGsQhsUd4ll + NRK4e8Wyhr0vMpYWjXDfEMs82qDixbJOr1RVi2U92gY8DMGKGFVKg1hmEJfaJpZZJDd+USzLUKrx + brEsR7zxs2JZAeWHxLISyk+KZQ5tMp4WyyqUnNIqltUozhgWyxqmPzKWFpWm6cUyj5LT6sSyjpOl + 9YplPSoEHhli8O9FsQmK28QytTMtUzvTMrUzLVM70zK1My1TO9MytTMtUzvTMrUzLVM70zK1My1T + O9OyTm8UdohlaucvIwFVIiuqQLVQ6kFu5EAB5ENBeI+jELS1QimA/ORohxY3lLzIAmeakQdIQAPQ + NoEm4VyQ1Fzw6QLuGTg6gVOHOqE0Bi0utB84+kCaC2QMoTlSElA3SJ4DudNkRA+UJggSAd4+4JmD + vtIYQgSzFdmgZIrUapCZjG8HCX7gFWBcO4yDZTjQjSLvNqhNQis+Ow34ghF9hqDdTXTwXBHPOLGD + gFqgPgZncKudWGGtjlSOT9RUIKNMw1kH0Vey7n7oGyAt08DlJFYToH2StPWgLsCEreMm/bzErptI + fxfhcKEpGBNb2UmOgohI4hVIe5D41A1YJO+t6oHPhwCFG3oGwQqtRBs30cQd0cMO7ynoQRFSfexk + DEH0tRskYql24MOy5qC2H0oh4ocg6DcGZQ/BFCC2wPq64TghWopKDRGd6JheopGDIPWSUYLET13E + K+PQguNxmlgwSOS6RF+4iU7UFkESFUGQahfjFXvML7ZLo0yBHA+xj19E6YWWKTIqlRkkllpFgEf0 + E13o3JBsS7F7SNTgSJgUIxejmgJeO4wfIjUv8bUU19RmdBTqR6+ol4/YdoxwriKO1ghbbZb0o1rf + CHULmbvR3iwi0qaIhDlih2lxlkbbW4o+rxjJWH/qlwCJBilGXcTXOHL9EW0oxgmRJwi1m0XpIdCC + emgm4iU7iRE8A6bW6CVlHgcgsZPxHeL4lstkqPpL9MSz0wd1JxoRo0aK+mqQUAlZYy1/WYT/ytEf + IjicJDoxphsjflmdrZfmzgkx1v0RbhzNNAq8wO8i8fR/JgdrYln4v00W7gYkDlRMZl6JeF5AW0lU + +AiyEBDOYfWoHMhJbIt7Tl0SPRYx5sqhPEdiaIJEEfbNHLTaATu1sSSVyvQQDBjBOEFLcx+VdbkY + DZI49xPdqRWkftiro2QMmn3miKWpZUIRb0vcUq5wiPkcz3wzsQHm84tREZ27/cSuXjFnUCkusW4X + 87SLZBk30ZCiGyM4JC+v91hI7EHjJ3BJy3hEB/M1ZQK6UjiJTUPiikTnJx3XHBlnvQY0s+4ndnKQ + +XQ5m+0XNXWTmeYhc4rO/Ettj/vQ1aYY+EvWRPDlpVMM79W20fODrviCuGaHiOcca9bO9RqsrpTr + cW2KigGsCdWF7iCkXBmI7EacZD32kjxiv6KmNPbsa6KK5gOfeKRa0fI0mS80PznJ2uYWcwuVgzk9 + JPtfOUZpFveKnlmVLs0Qd9ROY5LkO7doZ5zVdSRfukQdpF2HZOW1UW0mnrGTshNJe671eW79TChe + lxdcJE/vJ7sMN/E+9qod2rCFJoBDOlcuyty7LneWiLN3NVus7hAkNO9mdbrG1UDIXCejW5IhZEWi + +QZoo36SoobuWDziKrIa3Vdb4aSovPIqhz3XH5k5wag9CvU3jQKXOBbN2F7R72aic0BcfaR9Bd0r + TYh+luKYxpVf3AfREXxkL24nekqRYkerq/z6fPZP8EXEQnaiO7abW8z1TnGuOsT9t5dgjV4z3WSH + HiSxKWK8sm+hPLh2nQdvl0TZyBl11RA9H65ZHlq90pG4L5/dzOuym2T79b095ErBvU5vCdfqHmx1 + 1qyuRJIPzUi6YsNXZlLdFRUhfnJN5iHxNhm1wlLUYwSLS1yppiO+jM4l1IfloseDZJZ4Ihikeb02 + lq7dqtErPNUyeqVZG9OrlthP7Dj1Hv0orQbT5IqTWsYVhcBJjnjMVbvcAByOqLUjdJV8TDO/k2gg + rXj1a7I43Y3NkPLldt1eskZIq0z0NZu0Tlwup6ztFSS5gvpqTNT78muu/QoeDUS0D5Io9RLpdBZd + ejX8XiNAWt86UTs524c6oLYTVssB0tIFbQJk0QE4MwK1Nmhtg5Yi4BgUzxcRT+0k61An8A2TNY7K + GIBjL9RHSY7rQAKp49p24O8FWbhvO7qOjNEO0gYJ5wCR3QOt3fDZLvLhHq3QMgx1XN5KsiAdrxd6 + 0WuILnFNpEiHoF2IaLgWVRcZUULWA7UBkN8pnm0G2V1EHsaPx+8g5d4Izg4RaTOxEZaMZbYCom5S + w63D8NkPfINk/GaiM0XbS3TogPNUl3aCAI9sEXWlfNg+I+IZ7COMrxtoVatmYoNOgmbVfq3w2Q/I + sfytcHaIrBB90LONaDpIrNcu2gxr201qq1pRT7USbbBVsQ3aoNwD760R2w2QI8UyECVtre12kvOr + XFS/ZvHYSizXR2rUG62kNkR8hc+aRV8OED3Wj7qTRGI74WomGg9GIqSDRC9FL0UnHaMvCgkdD/s2 + GosU1cJV5giVIp0fFj19qV2w1ZuJTTCuwcjIV5IMc/PLQqW1olbocTsCvqBvPCS0+gJ+X8Aecvu8 + FqHZ4xEG3BOToaAw4Aq6AjMup0XX6RoLuPYLfX6Xd2jO7xK67XO+6ZDg8U24HYLD558L4B4Clmy1 + CSb8UWMWBuwe/6TQafc6fI4boXWbb9IrdE47g3icoUl3UPBEyxn3BYQW95jH7bB7BHFE4PHBoELQ + Nx1wuAQMd7894BKmvU5XQAhNuoSeriGh2+1weYOuTULQ5RJcU2Mup9PlFDy0VXC6go6A24/VI2M4 + XSG72xO0tNo97rGAG49hF6Z8IBDGsXuDICXgHhfG7VNuz5yw3x2aFILTYyGPSwj4YFy3dwJAAWvI + NQU9vU4wQMDrCgQtQldIGHfZQ9MBV1AIuEALdwjGcATNQnDKDnZ12P1Qxl2mpj0htx9EeqenXAHg + DLpCREBQ8Ad84A2MFqR7PL79wiQYV3BP+e2OkOD2CiFsa0AGXUBHL4zlGxfG3BNEMB0o5JoNQWf3 + jS6LIKpZFBSm7N45wTENLqW4sfm8YOSAHXQJuIPYoi77lDDtx8OAxAloCbpvBvaQDxSawSrZBXDA + FB0LB49j0h4AYK6AJRJQ9dKYQovP4xwB02DTV1sqbWJ7GW5fY/5QwO50TdkDN2JdiFsj0TkBVvfj + ZocPTOB1u4KW7mlHsT1YAp4UtgZ8vtBkKOQP1peXO32OoGVK6mmBDuWhOb9vImD3T86V28cg1jAr + cHqmHfbguM8LRgeu1cGC036/xw3Bg89ZhFHfNFhtTpiGMArhgMXN2BgOcG/IZRac7qAfgpg61R9w + w1kHsLjg0w6udAWm3KEQiBubI1pJIQnmgtjxBaTCOB7BfKnuEAvOaUfIjENyBvqacR9pAPDR/km3 + YzIK2X4Y1O11eKYh/lfR+7wQLcXuEjo1othBwtXQ0pkE8Q6+D4YCbgcNSmkAEouSrE3EAsVuGAXm + BU4nATx7nL79Xo/P7lxrPTs1FUQXqAPuw4XpkB8ygdOF1cQ8ky6Pf61FITdB/FJ27BA3mSuT7jF3 + COco3RBAHvfhGYMhi6Y2C2P2IGD1eSPZQnJCsRgLLq9lv/tGt9/ldNstvsBEOa6VA+deMa+UgHtJ + WJB5gMVcPhFeLoG9KHJ0Y46fYDPf4AOdsGlgPnkguRFzr02V2JRrkqVO14+dEyQTCfQGE7igFwQ2 + WMZpFsYDkPjwFIHJOAE6YxuDrcCj0F3wjUHC82Kj2EmyluLs2rXAgOzBoM/htuP4gHkGacsbstOc + 6vaAZYqxxDXaCoNitv5JCUHkJBmR+uGyfCTX4uaocDOL4YbRS6c9bohTOjaWFaCrFYxAJhHW0Izz + uXscf7qIQfzToFBwkkxYED02jSdvEDeKUQIaloPiQRdO0z6/m2bVK0KlEx6GpJNGtDQBsX/SN3UV + HfE0mA54AYyLCHD6II8SLDe4HCEpwFbjGILf6SYTr56GOKSxGVfUouv1hfCUoQndLU5jGiniqeAk + XhPGXGtmrj1K0QAePhiCYHKDiyKrz9UMgOdbZ7sw2NcxtLN5oF3oGhT6B/pGutra24Si5kGoF5mF + nV1DnX3DQwJwDDT3Do0KfR1Cc++osL2rt80stF/XP9A+OCj0DQhdPf3dXe3Q1tXb2j3c1tW7VWiB + fr19sLZ3wUwEoUN9Ah5QFNXVPoiF9bQPtHZCtbmlq7traNQsdHQN9WKZHSC0WehvHhjqah3ubh4Q + +ocH+vsG22H4NhDb29XbMQCjtPe09w7BstsLbUL7CFSEwc7m7m4yVPMwoB8g+Fr7+kcHurZ2Dgmd + fd1t7dDY0g7Imlu62+lQoFRrd3NXj1loa+5p3tpOevWBlAHCJqLb2dlOmmC8ZvjXOtTV14vVaO3r + HRqAqhm0HBiKdN3ZNdhuFpoHugaxQToG+kA8Nif06CNCoF9vO5WCTS2s8Qiw4PrwYPsqlrb25m6Q + NYg7RzNbdLFbA7FbA+/CtrFbA/+8WwMa8o7dHvjveXuAei92iyB2iyB2iyB2i2B9No/dJlh7m0Cy + TuxWQexWQexWwf9ztwpgbtLvICC0YkS3o8u9WPFJfcQUw+dx8sT/1V5yeR7PM8DDLFwrv06H+dnr + rpXfYCD8S9fKHxeH+WUfvFb++HjMLxeulT8xEfjlsr8i/M0FOeGXw1sgx3gwswmlg3uK0B7UAOm5 + i2HRCGNAdiYdeZlsdIDpR7czu9HHGR+6n5lBjzDvR99kPoTOMEfRj5k70cvMJ9HrzBPoLWYRhWXb + GLVsJ5Miu47Jld3MFMuOMRbZG0y17A9Mq+xPTL9sidkte4e5QfZXJgTQD67FxRy5Rlw+wPV+wPVB + wHUP4HoAcJ0AXN8GXM8Crp8CrlcA1+8A1zvMIsMCLh3gygBcJsBVBrhsgGsT4OoEXMOAawxw+QDX + HOC4dS0umSIKVyrgKgRcNsC1DXBdB7jGAVcAcN0CuO4EXP8KuB4CXKcA1w8A178BrlcB1xLgWmY+ + yaiYJ5gUwJUHuCyAazPg6gJc/YBrBHDtBVxTgOsA4PoQ4DoGuO4HXA+txUW+dSPhSgNcxYCrBnD1 + A669gMsLuG4GXB8GXJ8EXA8CricA1xnA9VPAdR5wvQG4/sbcyXCAKxFw5QKuMsBVB7i6ANcw4NoF + uByAywO4DgCuDwOuTwCuLwGux8lcWoNL6Y/ClQG4SgHXJsA1ArjGAdcM4LoVcN0NuL4AuL4OuL4L + uF4EXL8GXKA1usgcZXSAKx1wFQGuasDVCrj6AZcdcE0BrhDgOgC4bgNcdwOuzwOuxwHXGcD1I8D1 + 8lpcqu4oXFmAqx5wbQdck4BrDnB9GHAdB1xfAVzfBlzPAa7XAdcFZobRMO9njMyHGBPgqgFc7YBr + EHA5ANdNgOsQ4PoY4PoM4PoC4HoEcJ0EXD8AXL8EXL8HXMuyv7IqyA1JOG+puBUVZzQ2FIwfHB9X + KaF+4exZ+Hf2gkqBVMoLCwvwb2FBpUYqzTOHfw30zuF/O/y/Dv8AiHD4v7+wNGs87sd9lctW+lIq + kFK5ZJw9d26WMC0sLJ2D1xKpGHE7nCFM/nMgfxY6K5Xz5875F2bPLalZpJYtLKAF8lKxSCVbEF9U + Lu59TuwNL78q0roELDKklJ+n3HKkVPgXzvut5zn5Cifft7QPXhTcuVUIIAHkqFhGJSfdYGAli5QY + AhRZFrFQZJRoRbkskzEqxX333Uc1JzLOUc2t/kex4sv0zHGj3yjZpLb2uuuOLxuNCqxW00JTU5NC + htTyBaFJWFBxSKWqrfV4POHFRZWSibY+E219RqV9T9ZXK5GaAwlY5tkLpMbz/DyuzSvB6Nzs2eWF + hfmr2F+sSQ7AfYiws2J3eBH30dYLotWX1jtAJUcqxT7JA5j/LAWx6gE1y6ipByQXyC/nAgVSY++R + WCXDUwAqLuICcuYoP8vzR+mZiAtkSCPbdx4gKORIIz9v3Wc9r1YjtToTZaJqIAfQIfTM4WcOq5WM + WkU8QQ3HqLnlBdEdai2j1p2H15vnf7zvJaDn9v0QSK0AJnDIeX8teITYWvKIlVMiDmMCy89rlIxG + Jfnk7AVSlZxydp5TMpwK9FpeODMLpzhu/hzxC2ipYRmNPOKYBbEqvUhHKvOsJATbRrPajtFzcoYT + 3UPKSuIfsAPYFRx0ATtoXy0RcFZExAH2RY8HwnQRj6lYiDiJYxmOOIl4iWGhzHBohQvLFYyGw7OD + mEF001kajqKfrMv03FGeeorUjFGu0solV2kVxFUaDdJoeJQNZAOyHz4ERCzBMRr1Mkwh/A4vY4ty + y+CuC8RdGp7R6M/7l+D1i0cxvWB9wboIRCw/u3xm4cI8f3R5VqNCGtXKilF8UXsug1+W57Uco1Vj + WS/DAIvhl0ldCa8ZUp+h9l4Gpy3PAxhOdRBruzC/uDi/zmlaltFGOW2BA241kbq4SMrzRCKRohZH + w2wK8NS5C1FeW1rYZ10iXlOC17DbZmuJACIKIEV5DQ8qee0KboMVYQWUB79pid80HBhjnuLCcLCp + rEtL1HHL4tnblfMHlbdjsFDNbGjweM6GwzzPyRBPfbdvHydHPHgP3Gc9r1UjrUaaatVkqtHJ9sxh + rYrRaqgHT58+HV7WKhmtCrtwgRwWtDpGazhfe752aXaJrB7PH3/++AvHnzU+aySs2IvnZzOxG7Uq + pI1yoxGnVTh/FObXsofnGH7VkWBb0hDxJNhNxTEq7ITwwnfD2O8q1cHw2eXZheWDYAbRe5IzF3iW + 4aO9uUB6vxz+d2I2SRSxoJaeWZQ8ShL8uQt0pcIVbvYCzuUXljQKpJF8Ck4lUkQ/zJAFA3sVu5Vn + WV4ZGVr0qyLKr4pov/LEryRyJb9iWEpWq5YcC54Vz4NnYX0A12LHqPXZ1dXj44srK0olLKQ6uTiD + OQXS0bXuuJ/XIp7XIz3stDBVHK44fGjh0MK+Bfi3j9cwvHYFrRymzo4qQZl4IByOuHqB1zN8PP5v + CJcalhrOec55cOp49uizR0/zp3nC3XDwu+DtBr3y9uVZXoV4dZS7jWqOURMNDmKD6VSMTkMd/jpE + 1uvhl0mLDF6bDpGWQ5vUKkataTj4+umVhVcPbeHxgtAIkTkOdBB2/fvguIJOw3seYYcrogJgQccy + usjUIi8i7Vcrvz5NXhHZMNLBBh7XIkgwM14zpChYIIsOhDJEMg5kPBelOIBAIKKo1GdXDhA1Fxc9 + 87XznsVFHcvqVkMB48P7GRoLUcGgRitqsPlhhYLRqcjuBRDxIr4IRF5jnL1wnFpzZQVbXIPtKYUE + 4dBnp0ghATGB9IpITDB6KSairgvxdTHr9HgnxLIlSMsjuNwcsI+ZhebAlNcstM4FPGZhq8t3IzkG + 4BhwQRk/hWEWuu0h77vjJhgYggPeWZ+FzyQKKeuY9UjWx5XqDbd33v6OjuHY+45k3QZNh1mGqdBa + 1UpFqV7GpiuQ1a7UlCoZOXOkhmXk9w1ad1jNUS2Zn8s+nAlhgqmP/L3QR/6Cj/++vAWTNTdKmDxp + Nnw0sHvim+/7vP3cB17cs+vNP2oLv3XfEeOw9Yj8tPWI7KH7ZOAsNtEGEE8aG770c9mB9x8hgE9a + dRG0jAJw7ScwZcNyZSI7PFiRaI3HFVWiZqc9OOn2ToR83oo4qx43concgMs55fM6K7KtmbhFk5h8 + 2ccfK3KtOfi8LNG4en7IPeUqGwzZp/xCf2uzNTtVV1FtrbPWVNRsrK3aeD1Ua6Oq1lse+6cg01m1 + +Lw2Ud7T1z9QUWQtpNVsb6vbjx+JahtsF9oHe+tr2irby2w1tZVlLdaOmopCaz7VKPOyGg3SB8us + R5i8aAszCiQ7Apdi0K5hjzAM+vTnFn/U95Nv/fDRB+Q9v1V94YmbX/7EF1/8xJOuP52+dfRjJf/6 + 9szDe6c/NVxxpn3ijaf2PfnOifyCe4uNlT+p5HZ94JlPj/7Lpm81vP6C8qLm8UOntp8dfSX5puaz + VteIYuvx7IWP/+XO33/O/JuKDfvb/pz681fSL37p/p2/HP3DXa8mv/jFb9qblw7cdzD7lzVfO/W1 + uU6uxzhqq0+44VMZn0y5Z/PD/h986YE3m+u/9vRzn/3fxVx5OJTrGzZj7EQGyZJlxNjGN2NP9j37 + EiLZtzSIyZ4Ye5Ilu8TImrLmULZsWStJ0kqWZIssIcpvhpLT6Sy/P851zHWZ6/ne+d73nfe9n/t+ + nu97vsnKTSdZFgzo4cjHWfBMmztSYx44gUVCL9YwJzgLG95b35A9Bp3Kbx006RuiMT+FNvA3UT75 + bjTI3FjjTr+90s3hSnf6etEcrOggIEEjzxCoCgqcvy122xmL3VqqDp1lXT8PJsb70XUsiAK/IiQA + O35J2fdBmCAMCU3+4SPqGQkPpumtZfliqS4idbHbGGKHQZgBpmAGmNjac0M1D8o5hQ3vjSrB8lbx + KlrAmPABDogOoAVo5qjnqEYof6tFs/M881MBo4erC+GoyLdSQC+R3W0k7OL2JuJRicB/BDAjJcc7 + JgkJGQgE0QaOARrfbQAccfTbAD4+Pr8awMHzL3rGAFDCfA9DqPFR47cuicl/ckhiAkpgdjhEKg+u + y+Eub9Jwvy1RUhHGLO60yivHrBHt2yLpzi9igfzKAwIrMZ7jHiO+9xUmSyf7aSMd4by979xgzL62 + MoGkhavJqIbclqeoQPRzu5709mqi0najZdU1ndJsZeuXEugC0KzhoWUxySCJ1SPTEOtIGANFII/q + Vmo8zYm26uyBWP4ionMiXwp4M8OeImoO+7Y3qt8haY72PpEWOCT8rLBkPI89WuvZJ8RQoD8te9Ym + Jy6nchjIbkBLFdrXa00rbYy/XF4IDEnhdyog6pU5D1949AHT8YpbHlR1RAjIljp7VE7xUDOW0+KR + 7fiVc4igXmtNOKcX3IXnAnUqORwRAmBJQXgam9pDY21T0Wv+IfpTW9s01rZ31ajwNBb0r5AFHODd + cXqOve32DpxGLk7bhYD4jSVUgSO32UwSkEIiUQD+JbbDZj9MAPOvzO9bO/GftP8tG0VdrOVpJYvL + CPZj3OS13vSMEvq8fD01KkWt5nqPVbTIEVHEoQTfz4HFHFhQtX8PSz1xt9pMe/rqBoR9MZxyi9sN + t+gk287HPAHnWIEkKdrNjt1lvDQHzRB/I+Vh7C4ze0uVAtBsbowD0ql7vLtWvZKZfB7H1CV1kIdz + zh0qEv94tmUEQ6R1sf9Vwsyg79fYz7eso2Qb7nCU2qY2tYdVxJcOlgk+Md4Qf/HgbOK7Q1uzZ117 + LpB7Y0boDDQGPhJ1amhfJxOfOEHzJfBq5zvzsfCVwQxajssF42EHmge7s9lBHV80CqGJoqlcGqi1 + Fp5cospGo+5QN36LkHkpt+Clulko1cx3NgrGr0jgDt0cJtDNrjJrk4N2PZV4D131DNqGPbKWnt5y + ajnZ31lXUtMKTQMMCc37IXguylMHVH9WGjEARTBJoIIoUQBAogTtpAAxW3EHG2ExaVsxYTGUqJSw + lKgEStheShzpaINCiYs52v2OAjXc7Cf0SZ5gbxyQlOSuRhd1nwMn/zkF/pKh3D28tlkQDxc8jvEo + xgOYgF8rwj9hQFIYkNqmQJs9FHgcwEcreyhQ9W8H+M6CfzEEBqAmTBwKAm1BwADRT+5MjAWDiEiZ + OF6atuh3wvRyDXyfza19edDw9N7HdVaTOaNOF3WSp209s6Ob6RbJVvul4PdIVKEjGX5R9Y4lL+tm + wMdhNbIwX0V06dpHIvOk9ItsvRTJfRlsKkBxPlPHXXWLFUGxmOw4M8lWXbYy7m66B0NYumLxhVLu + zjiegpCYYT62cUf2aDnElimxTrNbaA5q5naViL6JJWkF46VOdrsaL+qxQX9eWoEU1UJUqFyKnKmm + Dyz6awVdx8UJckaDdkFzpIX06ZSivCjXFLj7x7bS6QbVA722uiHVxizql9Py0ffc+O6v8XF0znEW + U1V8fEiVkTR6OsslFCfxDM35NfzpVmttqgTFV1mG5jSG4nsRvfPY5pLjPMrM1RrhvhF96/1Z8gef + M0RPxmY780Q5yxR3BOvyTpJzadt9uXqFUUe02sRa79mxO1KXtxCvK6zylF27fB9V1LnGhZ6J9Lwx + nb+R/ZplUHrTvgstRz4RGFpxq/763YBHKSZ5/mY99Oq2/Vzzm0fbkFSrInL2+ZLu1vryNSrxejlU + MY1BZp86nCJtXl5La+u81OOu/vYeImmu4lM5gJ49rVk0leLd2UDe9lVmpdRLkrTS5NHBgbqVpO5I + tsXg0yC931hDvKqeWHDLHzFjHo764NSmWSjy6nCM7Km+WTGVBPb6BGpvrNx825AwDgK+rLE+/xr8 + iDgXLwJkeBGY3xEBShsmZ7Ft7mf7OYS12qZTSopE3ugri0L2oINMxHg0Ig8CB353kGIXrHgYCu7w + Js8P3jR0d8eTJx66Lo4udjYYB07Fcxhnd08XjB+B3AFJQAwQRaLERQFpPLmjkNumKEAw/7sY+u/4 + PRt3pmL4pUaiQKAr4uDbhtGx9nQDmP6th6+ZdXloPzwufKx9CwNw7p8he2qczKiZxKqUWJp2EuB9 + QeT6PqBhNpqMdnUfJG0hupejR5QnMmtx2YlNaDNgMop9elL3Oq4ZZtQd+1n1EUXfqbK+ciVI7nrB + mStOz+Cv1IzKI/om4GoIvpsRescNqceJhTZOx8cDbpFLJ4Csz0GDqVXvuVKD1vqhS+Q1RmjD26rx + 2RpEx9Qd9/PxOxaljj8hDTmWux5WuF+dgQKbHTZ33PcrKINdnzyciA5Qm6t5A1OraxM2zi475KuI + 9OnNHJYJvYKzAVez01RsrmZWgh5yaxlvrZO0tnBSfef3EvyKFAK0u4xDAhDj3/bw+S+jSwJ9s9NC + IHj8RQB0pBTfNIERRDhCBISk7XBzSDwQEhvMsO8m1lrBhC914jB0U+AtpVHyifE8nF2ezb8OTyyd + 3y0m3LGc/FvaXmbLZFCEA6C/IwqaAF6HcpRzFCPk/3lcvNtMeCKIQOXbgmC8RxA0ADVAZY8gSP0/ + MTHheyjv9PoP42H8WtOlXmw9Sawi8Xrq9i2flw/9DHRAFQjMWQs0NbTkYWNAXC1igD73Etq21hTc + o8sJ1U9/7a8walpXZpbB9pYdFHGzzncxpm9WBvRhtDGOkqQzVmN0wYjxtV5J4vhk7Omnwc3vkhZJ + RcKJpxIEeLg9Nj5tjvumI2hWyUY96pl1sy67Unom1+KkrzoJtxvsm7Y9Kc+UFsMpP0rGglrvRR7z + RsoKelJ1TnvIboVTQodbKG0uLzyrPTCjG3OhXVzw1PWmmfrzVEoBA0aeXB+A7jpfh5MWoAOUDPv6 + XzCkrRy942hWJSwyuR4e0Wtg8j7LI+nMTWntgU9+TTeY/W3553Mz+cVIfVhsu2QPoTmwC1QdQnWP + lKsm1mfPV4/lFWHEa3Xbz8Loeb2pjhpeOmuupsxQX1VVruPUma20FezHFXyNEXB8r0R/iqXzGjdX + n/KU4FTdskav0MAQKlibV0CDx8p82mS+4E16VvcR94YQPgzp/g/eXE2Z2GY+498qTstG47xtbrvh + oAVNN9QX6N2/XESdqfw6bNB5Cdbl2JDFHklvD5YVLjsRVzvONVFd3m1329eYZEARoX8zqTzft6Qq + J+Ucy/PESOg5bhFUEblbjsWlw00582HdXIMzh/S6Mj5ojqyCHNyjqc53unS+c5suTH2I5N/a125x + ckiHFTf0WeSaPOI4k2sX9PoXAEvmD2BJbL9Lwb74/m0pIP45DQiJ+leoGAUAOw7J/08c8kdGgMTL + hhQKEJfeEQ2JbRMJEMz/PGPBgv+oHWCCdoDx2oH3uZKFz550bIhbQ243sHQ6YncXfzPjylZiFXCd + Mte/UUsqxQLRvHuhlfrQa0nX+/RDVAtSLemk5Z3ST0EMSKUn0TR+9pFBSdY8Z8quaV6dcj7VP5xp + VEkp1Fr2vFiw1J+i7FnKiW5rFpIpR+/3KENeepHJEnL9R1UqNZZDbQjicyXOSz3opSMncUzLandH + pOxvutmL+xbk2NEKP1G4sjb2hozm6Um/fE3+SZrGHKhPY5Ls/MaYoDkdh44JPNffc4T+SI3mqaG5 + OeWE0OcBlQERrM/lKi5Zvo/WC2NZxImcGI+XES4VNWuvkfuKelJFLFtRWZYoFdSfFSy0omuSwCV+ + uFXazf6C0d2rtLcOwsJ6lu8SR8SuWi30GTZdSoqsv8eFOWzFDP+tlw8udThN+pjEo8CKxFI2WGGx + 46wNx+m3cM0sq6jRw5ZPuLTkDNuqTeV5iBce+1uIPIWNeVjSGqj5VK0Rva2/CcZavbzHWNXAOnBc + a1IaRzsF06xnrlUJVB1vbvX0H/Gc5BluUktvn29hM30ZGjurowkUllwenrXILtt8Xe442pwaEjA3 + OKc1qclfCIUXFJ53Cn530dbXqlIk7Jnp1ZNNPnD4xzl0KzxOKE5BUq/5bbhKdBuFdvtAvrIIJnnV + bc2X00wIammdnCGnJxr2ojzqwJtrussp5fVqOWfS+kcGoy7tauccXjunfiF/P8Tzl3nJwd0TGMAQ + 6kOUREbbhZDKRIq/19U/iPLejMdT+AgYGa98h4FE9+10YQfyMSxaDDDfETfCJVS9HJ0crQjN/+ui + D95v8V6Ld9bdpMQKELVCobZl7tQemTME9AHdPTKn9M9k7i/6xwAh2YTJc0JCUoGQJCAkYXeREMRA + SCgg/304MIhJ9O/SLMJTuvhv5oK28fSz8/BCOGPQgMJuB2BA7BCKk51Im8iByGm75tRqu+Z0p0bZ + D295fauedtitIUdwsv8qEXNajMhPGzH2Y0E8GcI4cWdSpex/a5eYrpRyvt+POr7ZwQohJLfW6vkY + Hfq1Uf49ZbdMk3rx9SWXl3ZN3OL5qZYOYfHnY9T0jw9RJwb2s2ixLR1VijHsK//iOiZHhuDPfCfL + mj9Qze6TJD06Zd+lIuvrD1uCni+Ix4TGLvfwgtUEWi7S1eUVk1Bnzjl/dkYk5wjIC7iaadpxULi4 + maeljIcu34tbUhN8synT1yA+73a4dKKMb67v9dK+snR4aprOPlmqRfLoQY5WFPPoQrvwQ4trtzWl + Ke9Ttty/VTpR+fwlY5SBqpkU6iwfy4WKZb61N0JHOF3SKk9EO7u5F9ZgWhVISAtAAnA5rDxUx5Hq + XpXOytu4C2zujOdVC70nFAQcrrdaGtpGtLLbSaRGDL9YWltkwmXwvX2Qn9r3wdJOccyC7GqkHKkP + 6WPSinMcDI02NtULr+6zQhqHFTv2wT+8cRCZTf2EO5kyRDSIU2s4sZSaT6GlQZcezNFHxN9ekZkv + r+pzSPx+f25utr8/92eNZI6SDXVY8Mq1tSbXGq3U0Zlzviyz05LpfsxaW4NVMOdz78o+b8bMUAVP + u8iUbQJzEO3Lw8Pn0HYJso+zTHT1moJNuXG++1Fc/vOKlBXyG0W9eZbNuKhM07Mmuhqq95S6Mr0t + KIM1XL/4ZTc3oNGnuwy9oDT++g+QWEg5gIXcBINAQEjyfy1cv74c+OPmSE5IG4F8voGYghhJvffO + C34WPywq5D5gbysjAPtxIgSJp7a0XkeXNFfVjVXe7A+lshe1VMBtUMB+zynUSBPAOEcgGP7LR9uM + //iLgzjeYJ4/9Wzj3afsOX/SZggWRMSUX5GNAV3wyxnr8LHNPp9P95Xhckcdf2dT3s2OSdEBp9k6 + FLVA651b3eSSbLAWuctJd+4J1VpqlOTuV2+XUs0XcY1hWWqsPMp2g/G4HDJ2oBhJ2iYaH2PjGwAj + 5ywOE0MSF3Ob1ka0V8fZRSbOWLx+Ea6yRGWcnOAjJHrnib48zuAKdqlR8FUj6pXevOdvXfNWfF4W + QqeKZ1XTF+eZjmorcpzz9RL/1H7leMD9966qdsZYyWkD7SMLIiZsFrNipyftz6wH8WMSeM095THX + i8c7UNjRUxLhkiuJazYXblbkNU46+Ty9e7x9Lc6+1ON5LyVrFIBTfnJbhp91PH2hx3q12OULDguG + 48MTnh97RIrEghnxh/ZvQ/Pyf5aI//pO2x5MWgLMeyFJ9eOOIQg/+G4LCZJ2+8KxBFIchST8mf8B + kbLHOQN0k2jS9vMGzCmUBLmovJIi+SllImCFsd/+fmVNnVjatSKffqduwHJEzSeo7+H5uvrAos4G + AAVCX9BDz8Te8KFBFTn1D7ovIRXsejzVBS4Xd3O1S3HEltG7JSiEvTO9qgxcMR2pNYpb0awW+tR7 + bF27QihDXdsv6rV6ZV7Xb4vL7dG8w0gqNxNpFaZmzOSaarmEocJ4wWc3lknPR6am4K4+I2aTm3kk + KrFHQKlmZxW8qHpfRETYMZZdos8K9Tc0bmVNGZWf8PP4qiK6kZk7D1Hp68k6+cqujnrMi0+QTUvB + 02LWgEvJpMfQvQGNGyJ9Cp8e2OiVa3QkzxGYHxUIMdPMzhyDZ2iKtYRjadyCZoFjccXgVeuxLKL/ + AfpFWhMNCmVuZHN0cmVhbQ0KZW5kb2JqDQoyNTMgMCBvYmoNCjw8L1R5cGUvTWV0YWRhdGEvU3Vi + dHlwZS9YTUwvTGVuZ3RoIDMwODQ+Pg0Kc3RyZWFtDQo8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9 + Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/Pjx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6 + bWV0YS8iIHg6eG1wdGs9IjMuMS03MDEiPgo8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cu + dzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgo8cmRmOkRlc2NyaXB0aW9uIHJkZjph + Ym91dD0iIiAgeG1sbnM6cGRmPSJodHRwOi8vbnMuYWRvYmUuY29tL3BkZi8xLjMvIj4KPHBkZjpQ + cm9kdWNlcj5NaWNyb3NvZnTCriBXb3JkIGZvciBPZmZpY2UgMzY1PC9wZGY6UHJvZHVjZXI+PC9y + ZGY6RGVzY3JpcHRpb24+CjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiICB4bWxuczpkYz0i + aHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iPgo8ZGM6Y3JlYXRvcj48cmRmOlNlcT48 + cmRmOmxpPktyaXN0YSBQcmF0aWNvPC9yZGY6bGk+PC9yZGY6U2VxPjwvZGM6Y3JlYXRvcj48L3Jk + ZjpEZXNjcmlwdGlvbj4KPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgIHhtbG5zOnhtcD0i + aHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyI+Cjx4bXA6Q3JlYXRvclRvb2w+TWljcm9zb2Z0 + wq4gV29yZCBmb3IgT2ZmaWNlIDM2NTwveG1wOkNyZWF0b3JUb29sPjx4bXA6Q3JlYXRlRGF0ZT4y + MDIwLTA0LTIyVDE2OjQ1OjI5LTA3OjAwPC94bXA6Q3JlYXRlRGF0ZT48eG1wOk1vZGlmeURhdGU+ + MjAyMC0wNC0yMlQxNjo0NToyOS0wNzowMDwveG1wOk1vZGlmeURhdGU+PC9yZGY6RGVzY3JpcHRp + b24+CjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiICB4bWxuczp4bXBNTT0iaHR0cDovL25z + LmFkb2JlLmNvbS94YXAvMS4wL21tLyI+Cjx4bXBNTTpEb2N1bWVudElEPnV1aWQ6NThCQjA4MDUt + RjY5Ri00NDBGLTgzOUItMURFMDI1NjUxREUyPC94bXBNTTpEb2N1bWVudElEPjx4bXBNTTpJbnN0 + YW5jZUlEPnV1aWQ6NThCQjA4MDUtRjY5Ri00NDBGLTgzOUItMURFMDI1NjUxREUyPC94bXBNTTpJ + bnN0YW5jZUlEPjwvcmRmOkRlc2NyaXB0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKPC9y + ZGY6UkRGPjwveDp4bXBtZXRhPjw/eHBhY2tldCBlbmQ9InciPz4NCmVuZHN0cmVhbQ0KZW5kb2Jq + DQoyNTQgMCBvYmoNCjw8L0Rpc3BsYXlEb2NUaXRsZSB0cnVlPj4NCmVuZG9iag0KMjU1IDAgb2Jq + DQo8PC9UeXBlL1hSZWYvU2l6ZSAyNTUvV1sgMSA0IDJdIC9Sb290IDEgMCBSL0luZm8gMTUgMCBS + L0lEWzwwNTA4QkI1ODlGRjYwRjQ0ODM5QjFERTAyNTY1MURFMj48MDUwOEJCNTg5RkY2MEY0NDgz + OUIxREUwMjU2NTFERTI+XSAvRmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0aCA1MDc+Pg0Kc3RyZWFt + DQp4nDXV93fPZxQH8E9sSojZGkG0tQmKGrVHFKU2tUeomrXTauy9YlMdKFV7U3vvHUWJvX7rv5B+ + 83nx3HOe17nn3Ht/fQdB5KWnR0X+mCDIYAv+C4lKD8mTFBJdJiRvASRgcki+SiExcSH5dQU7hhRK + DCk9JggyRU4XCZ7jBV7iFZ7h3eTryF5c8vsuO6KQCZmRBVmRDTmQE7nwAXIjD6LRCoVRCPmQF/kR + g4IogASUwIcogqL4CMVRDB+jJGJRGqVQBnGoiE/xCcqhLCqgPKqjMiqhKqqgGuJRB5+hBmqhJj5H + bTRCPdTFF6iPhmiAlmiCxmiGpmiB5vgSrdEGbfEV2qE9vkYHdEQndEYXdEU3dEcPfIOe6IXe6IO+ + 6If+eIMBGIhBSMRgDMG3GIrvMAzDMQIjMQqj8T3GYCzGYTwmYCImIQk/4EdMxk9IxhRMxTRMxwzM + xCzMxhzMxTzMx1ssxQIsxCIsxhKkYBmWYwVWYhVWYw3uYj1+x89Yi1+wDr/hV6RiCzZiAzbhD/yJ + zdiFrfgL27ENO7EDB7EHu7EPe3EA+3Ech3EIR/A3juEozuEkTuA0TuEszuAqLuA8LuEiruAy7uA6 + ruEmbuA2buEf3MN9PMC/eIhHSMNjPMHTSFpUSQ3DJj4jvSJVPCQqNmRGWkhK/SD4H/tbjC8NCmVu + ZHN0cmVhbQ0KZW5kb2JqDQp4cmVmDQowIDI1Ng0KMDAwMDAwMDAxNiA2NTUzNSBmDQowMDAwMDAw + MDE3IDAwMDAwIG4NCjAwMDAwMDAxNjggMDAwMDAgbg0KMDAwMDAwMDIzOCAwMDAwMCBuDQowMDAw + MDAwNTExIDAwMDAwIG4NCjAwMDAwMDM0NTAgMDAwMDAgbg0KMDAwMDAwMzYxOSAwMDAwMCBuDQow + MDAwMDAzODU5IDAwMDAwIG4NCjAwMDAwMDM5MTIgMDAwMDAgbg0KMDAwMDAwMzk2NSAwMDAwMCBu + DQowMDAwMDA0MTQwIDAwMDAwIG4NCjAwMDAwMDQzODYgMDAwMDAgbg0KMDAwMDAwNDY1MiAwMDAw + MCBuDQowMDAwMDA1MjAzIDAwMDAwIG4NCjAwMDAwMDU0NzggMDAwMDAgbg0KMDAwMDAwODU2MyAw + MDAwMCBuDQowMDAwMDAwMDE3IDY1NTM1IGYNCjAwMDAwMDAwMTggNjU1MzUgZg0KMDAwMDAwMDAx + OSA2NTUzNSBmDQowMDAwMDAwMDIwIDY1NTM1IGYNCjAwMDAwMDAwMjEgNjU1MzUgZg0KMDAwMDAw + MDAyMiA2NTUzNSBmDQowMDAwMDAwMDIzIDY1NTM1IGYNCjAwMDAwMDAwMjQgNjU1MzUgZg0KMDAw + MDAwMDAyNSA2NTUzNSBmDQowMDAwMDAwMDI2IDY1NTM1IGYNCjAwMDAwMDAwMjcgNjU1MzUgZg0K + MDAwMDAwMDAyOCA2NTUzNSBmDQowMDAwMDAwMDI5IDY1NTM1IGYNCjAwMDAwMDAwMzAgNjU1MzUg + Zg0KMDAwMDAwMDAzMSA2NTUzNSBmDQowMDAwMDAwMDMyIDY1NTM1IGYNCjAwMDAwMDAwMzMgNjU1 + MzUgZg0KMDAwMDAwMDAzNCA2NTUzNSBmDQowMDAwMDAwMDM1IDY1NTM1IGYNCjAwMDAwMDAwMzYg + NjU1MzUgZg0KMDAwMDAwMDAzNyA2NTUzNSBmDQowMDAwMDAwMDM4IDY1NTM1IGYNCjAwMDAwMDAw + MzkgNjU1MzUgZg0KMDAwMDAwMDA0MCA2NTUzNSBmDQowMDAwMDAwMDQxIDY1NTM1IGYNCjAwMDAw + MDAwNDIgNjU1MzUgZg0KMDAwMDAwMDA0MyA2NTUzNSBmDQowMDAwMDAwMDQ0IDY1NTM1IGYNCjAw + MDAwMDAwNDUgNjU1MzUgZg0KMDAwMDAwMDA0NiA2NTUzNSBmDQowMDAwMDAwMDQ3IDY1NTM1IGYN + CjAwMDAwMDAwNDggNjU1MzUgZg0KMDAwMDAwMDA0OSA2NTUzNSBmDQowMDAwMDAwMDUwIDY1NTM1 + IGYNCjAwMDAwMDAwNTEgNjU1MzUgZg0KMDAwMDAwMDA1MiA2NTUzNSBmDQowMDAwMDAwMDUzIDY1 + NTM1IGYNCjAwMDAwMDAwNTQgNjU1MzUgZg0KMDAwMDAwMDA1NSA2NTUzNSBmDQowMDAwMDAwMDU2 + IDY1NTM1IGYNCjAwMDAwMDAwNTcgNjU1MzUgZg0KMDAwMDAwMDA1OCA2NTUzNSBmDQowMDAwMDAw + MDU5IDY1NTM1IGYNCjAwMDAwMDAwNjAgNjU1MzUgZg0KMDAwMDAwMDA2MSA2NTUzNSBmDQowMDAw + MDAwMDYyIDY1NTM1IGYNCjAwMDAwMDAwNjMgNjU1MzUgZg0KMDAwMDAwMDA2NCA2NTUzNSBmDQow + MDAwMDAwMDY1IDY1NTM1IGYNCjAwMDAwMDAwNjYgNjU1MzUgZg0KMDAwMDAwMDA2NyA2NTUzNSBm + DQowMDAwMDAwMDY4IDY1NTM1IGYNCjAwMDAwMDAwNjkgNjU1MzUgZg0KMDAwMDAwMDA3MCA2NTUz + NSBmDQowMDAwMDAwMDcxIDY1NTM1IGYNCjAwMDAwMDAwNzIgNjU1MzUgZg0KMDAwMDAwMDA3MyA2 + NTUzNSBmDQowMDAwMDAwMDc0IDY1NTM1IGYNCjAwMDAwMDAwNzUgNjU1MzUgZg0KMDAwMDAwMDA3 + NiA2NTUzNSBmDQowMDAwMDAwMDc3IDY1NTM1IGYNCjAwMDAwMDAwNzggNjU1MzUgZg0KMDAwMDAw + MDA3OSA2NTUzNSBmDQowMDAwMDAwMDgwIDY1NTM1IGYNCjAwMDAwMDAwODEgNjU1MzUgZg0KMDAw + MDAwMDA4MiA2NTUzNSBmDQowMDAwMDAwMDgzIDY1NTM1IGYNCjAwMDAwMDAwODQgNjU1MzUgZg0K + MDAwMDAwMDA4NSA2NTUzNSBmDQowMDAwMDAwMDg2IDY1NTM1IGYNCjAwMDAwMDAwODcgNjU1MzUg + Zg0KMDAwMDAwMDA4OCA2NTUzNSBmDQowMDAwMDAwMDg5IDY1NTM1IGYNCjAwMDAwMDAwOTAgNjU1 + MzUgZg0KMDAwMDAwMDA5MSA2NTUzNSBmDQowMDAwMDAwMDkyIDY1NTM1IGYNCjAwMDAwMDAwOTMg + NjU1MzUgZg0KMDAwMDAwMDA5NCA2NTUzNSBmDQowMDAwMDAwMDk1IDY1NTM1IGYNCjAwMDAwMDAw + OTYgNjU1MzUgZg0KMDAwMDAwMDA5NyA2NTUzNSBmDQowMDAwMDAwMDk4IDY1NTM1IGYNCjAwMDAw + MDAwOTkgNjU1MzUgZg0KMDAwMDAwMDEwMCA2NTUzNSBmDQowMDAwMDAwMTAxIDY1NTM1IGYNCjAw + MDAwMDAxMDIgNjU1MzUgZg0KMDAwMDAwMDEwMyA2NTUzNSBmDQowMDAwMDAwMTA0IDY1NTM1IGYN + CjAwMDAwMDAxMDUgNjU1MzUgZg0KMDAwMDAwMDEwNiA2NTUzNSBmDQowMDAwMDAwMTA3IDY1NTM1 + IGYNCjAwMDAwMDAxMDggNjU1MzUgZg0KMDAwMDAwMDEwOSA2NTUzNSBmDQowMDAwMDAwMTEwIDY1 + NTM1IGYNCjAwMDAwMDAxMTEgNjU1MzUgZg0KMDAwMDAwMDExMiA2NTUzNSBmDQowMDAwMDAwMTEz + IDY1NTM1IGYNCjAwMDAwMDAxMTQgNjU1MzUgZg0KMDAwMDAwMDExNSA2NTUzNSBmDQowMDAwMDAw + MTE2IDY1NTM1IGYNCjAwMDAwMDAxMTcgNjU1MzUgZg0KMDAwMDAwMDExOCA2NTUzNSBmDQowMDAw + MDAwMTE5IDY1NTM1IGYNCjAwMDAwMDAxMjAgNjU1MzUgZg0KMDAwMDAwMDEyMSA2NTUzNSBmDQow + MDAwMDAwMTIyIDY1NTM1IGYNCjAwMDAwMDAxMjMgNjU1MzUgZg0KMDAwMDAwMDEyNCA2NTUzNSBm + DQowMDAwMDAwMTI1IDY1NTM1IGYNCjAwMDAwMDAxMjYgNjU1MzUgZg0KMDAwMDAwMDEyNyA2NTUz + NSBmDQowMDAwMDAwMTI4IDY1NTM1IGYNCjAwMDAwMDAxMjkgNjU1MzUgZg0KMDAwMDAwMDEzMCA2 + NTUzNSBmDQowMDAwMDAwMTMxIDY1NTM1IGYNCjAwMDAwMDAxMzIgNjU1MzUgZg0KMDAwMDAwMDEz + MyA2NTUzNSBmDQowMDAwMDAwMTM0IDY1NTM1IGYNCjAwMDAwMDAxMzUgNjU1MzUgZg0KMDAwMDAw + MDEzNiA2NTUzNSBmDQowMDAwMDAwMTM3IDY1NTM1IGYNCjAwMDAwMDAxMzggNjU1MzUgZg0KMDAw + MDAwMDEzOSA2NTUzNSBmDQowMDAwMDAwMTQwIDY1NTM1IGYNCjAwMDAwMDAxNDEgNjU1MzUgZg0K + MDAwMDAwMDE0MiA2NTUzNSBmDQowMDAwMDAwMTQzIDY1NTM1IGYNCjAwMDAwMDAxNDQgNjU1MzUg + Zg0KMDAwMDAwMDE0NSA2NTUzNSBmDQowMDAwMDAwMTQ2IDY1NTM1IGYNCjAwMDAwMDAxNDcgNjU1 + MzUgZg0KMDAwMDAwMDE0OCA2NTUzNSBmDQowMDAwMDAwMTQ5IDY1NTM1IGYNCjAwMDAwMDAxNTAg + NjU1MzUgZg0KMDAwMDAwMDE1MSA2NTUzNSBmDQowMDAwMDAwMTUyIDY1NTM1IGYNCjAwMDAwMDAx + NTMgNjU1MzUgZg0KMDAwMDAwMDE1NCA2NTUzNSBmDQowMDAwMDAwMTU1IDY1NTM1IGYNCjAwMDAw + MDAxNTYgNjU1MzUgZg0KMDAwMDAwMDE1NyA2NTUzNSBmDQowMDAwMDAwMTU4IDY1NTM1IGYNCjAw + MDAwMDAxNTkgNjU1MzUgZg0KMDAwMDAwMDE2MCA2NTUzNSBmDQowMDAwMDAwMTYxIDY1NTM1IGYN + CjAwMDAwMDAxNjIgNjU1MzUgZg0KMDAwMDAwMDE2MyA2NTUzNSBmDQowMDAwMDAwMTY0IDY1NTM1 + IGYNCjAwMDAwMDAxNjUgNjU1MzUgZg0KMDAwMDAwMDE2NiA2NTUzNSBmDQowMDAwMDAwMTY3IDY1 + NTM1IGYNCjAwMDAwMDAxNjggNjU1MzUgZg0KMDAwMDAwMDE2OSA2NTUzNSBmDQowMDAwMDAwMTcw + IDY1NTM1IGYNCjAwMDAwMDAxNzEgNjU1MzUgZg0KMDAwMDAwMDE3MiA2NTUzNSBmDQowMDAwMDAw + MTczIDY1NTM1IGYNCjAwMDAwMDAxNzQgNjU1MzUgZg0KMDAwMDAwMDE3NSA2NTUzNSBmDQowMDAw + MDAwMTc2IDY1NTM1IGYNCjAwMDAwMDAxNzcgNjU1MzUgZg0KMDAwMDAwMDE3OCA2NTUzNSBmDQow + MDAwMDAwMTc5IDY1NTM1IGYNCjAwMDAwMDAxODAgNjU1MzUgZg0KMDAwMDAwMDE4MSA2NTUzNSBm + DQowMDAwMDAwMTgyIDY1NTM1IGYNCjAwMDAwMDAxODMgNjU1MzUgZg0KMDAwMDAwMDE4NCA2NTUz + NSBmDQowMDAwMDAwMTg1IDY1NTM1IGYNCjAwMDAwMDAxODYgNjU1MzUgZg0KMDAwMDAwMDE4NyA2 + NTUzNSBmDQowMDAwMDAwMTg4IDY1NTM1IGYNCjAwMDAwMDAxODkgNjU1MzUgZg0KMDAwMDAwMDE5 + MCA2NTUzNSBmDQowMDAwMDAwMTkxIDY1NTM1IGYNCjAwMDAwMDAxOTIgNjU1MzUgZg0KMDAwMDAw + MDE5MyA2NTUzNSBmDQowMDAwMDAwMTk0IDY1NTM1IGYNCjAwMDAwMDAxOTUgNjU1MzUgZg0KMDAw + MDAwMDE5NiA2NTUzNSBmDQowMDAwMDAwMTk3IDY1NTM1IGYNCjAwMDAwMDAxOTggNjU1MzUgZg0K + MDAwMDAwMDE5OSA2NTUzNSBmDQowMDAwMDAwMjAwIDY1NTM1IGYNCjAwMDAwMDAyMDEgNjU1MzUg + Zg0KMDAwMDAwMDIwMiA2NTUzNSBmDQowMDAwMDAwMjAzIDY1NTM1IGYNCjAwMDAwMDAyMDQgNjU1 + MzUgZg0KMDAwMDAwMDIwNSA2NTUzNSBmDQowMDAwMDAwMjA2IDY1NTM1IGYNCjAwMDAwMDAyMDcg + NjU1MzUgZg0KMDAwMDAwMDIwOCA2NTUzNSBmDQowMDAwMDAwMjA5IDY1NTM1IGYNCjAwMDAwMDAy + MTAgNjU1MzUgZg0KMDAwMDAwMDIxMSA2NTUzNSBmDQowMDAwMDAwMjEyIDY1NTM1IGYNCjAwMDAw + MDAyMTMgNjU1MzUgZg0KMDAwMDAwMDIxNCA2NTUzNSBmDQowMDAwMDAwMjE1IDY1NTM1IGYNCjAw + MDAwMDAyMTYgNjU1MzUgZg0KMDAwMDAwMDIxNyA2NTUzNSBmDQowMDAwMDAwMjE4IDY1NTM1IGYN + CjAwMDAwMDAyMTkgNjU1MzUgZg0KMDAwMDAwMDIyMCA2NTUzNSBmDQowMDAwMDAwMjIxIDY1NTM1 + IGYNCjAwMDAwMDAyMjIgNjU1MzUgZg0KMDAwMDAwMDIyMyA2NTUzNSBmDQowMDAwMDAwMjI0IDY1 + NTM1IGYNCjAwMDAwMDAyMjUgNjU1MzUgZg0KMDAwMDAwMDIyNiA2NTUzNSBmDQowMDAwMDAwMjI3 + IDY1NTM1IGYNCjAwMDAwMDAyMjggNjU1MzUgZg0KMDAwMDAwMDIyOSA2NTUzNSBmDQowMDAwMDAw + MjMwIDY1NTM1IGYNCjAwMDAwMDAyMzEgNjU1MzUgZg0KMDAwMDAwMDIzMiA2NTUzNSBmDQowMDAw + MDAwMjMzIDY1NTM1IGYNCjAwMDAwMDAyMzQgNjU1MzUgZg0KMDAwMDAwMDIzNSA2NTUzNSBmDQow + MDAwMDAwMjM2IDY1NTM1IGYNCjAwMDAwMDAyMzcgNjU1MzUgZg0KMDAwMDAwMDIzOCA2NTUzNSBm + DQowMDAwMDAwMjM5IDY1NTM1IGYNCjAwMDAwMDAyNDAgNjU1MzUgZg0KMDAwMDAwMDI0MSA2NTUz + NSBmDQowMDAwMDAwMjQyIDY1NTM1IGYNCjAwMDAwMDAyNDMgNjU1MzUgZg0KMDAwMDAwMDI0NCA2 + NTUzNSBmDQowMDAwMDAwMjQ1IDY1NTM1IGYNCjAwMDAwMDAyNDYgNjU1MzUgZg0KMDAwMDAwMDI0 + NyA2NTUzNSBmDQowMDAwMDAwMjQ4IDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAx + MTk4NyAwMDAwMCBuDQowMDAwMDEyMjg5IDAwMDAwIG4NCjAwMDAwNjU1NjQgMDAwMDAgbg0KMDAw + MDA2NTgyMiAwMDAwMCBuDQowMDAwMDk5NTQ4IDAwMDAwIG4NCjAwMDAxMDI3MTYgMDAwMDAgbg0K + MDAwMDEwMjc2MiAwMDAwMCBuDQp0cmFpbGVyDQo8PC9TaXplIDI1Ni9Sb290IDEgMCBSL0luZm8g + MTUgMCBSL0lEWzwwNTA4QkI1ODlGRjYwRjQ0ODM5QjFERTAyNTY1MURFMj48MDUwOEJCNTg5RkY2 + MEY0NDgzOUIxREUwMjU2NTFERTI+XSA+Pg0Kc3RhcnR4cmVmDQoxMDM0NzINCiUlRU9GDQp4cmVm + DQowIDANCnRyYWlsZXINCjw8L1NpemUgMjU2L1Jvb3QgMSAwIFIvSW5mbyAxNSAwIFIvSURbPDA1 + MDhCQjU4OUZGNjBGNDQ4MzlCMURFMDI1NjUxREUyPjwwNTA4QkI1ODlGRjYwRjQ0ODM5QjFERTAy + NTY1MURFMj5dIC9QcmV2IDEwMzQ3Mi9YUmVmU3RtIDEwMjc2Mj4+DQpzdGFydHhyZWYNCjEwODc1 + Mg0KJSVFT0Y= + headers: + Content-Type: + - application/pdf + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/layout/analyze + response: + body: + string: '' + headers: + apim-request-id: 7cee5c27-fe1c-45d3-aab3-fb4d1d206ad1 + content-length: '0' + date: Mon, 27 Apr 2020 23:35:47 GMT + operation-location: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/layout/analyzeResults/7cee5c27-fe1c-45d3-aab3-fb4d1d206ad1 + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '184' + status: + code: 202 + message: Accepted + url: https://westus.api.cognitive.microsoft.com//formrecognizer/v2.0-preview/layout/analyze +- request: + body: null + headers: + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/layout/analyzeResults/7cee5c27-fe1c-45d3-aab3-fb4d1d206ad1 + response: + body: + string: '{"status":"running","createdDateTime":"2020-04-27T23:35:47Z","lastUpdatedDateTime":"2020-04-27T23:35:52Z"}' + headers: + apim-request-id: bb6cad46-74f4-4132-b96f-7ad60455b2ba + content-type: application/json; charset=utf-8 + date: Mon, 27 Apr 2020 23:35:52 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + transfer-encoding: chunked + x-content-type-options: nosniff + x-envoy-upstream-service-time: '27' + status: + code: 200 + message: OK + url: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/layout/analyzeResults/7cee5c27-fe1c-45d3-aab3-fb4d1d206ad1 +- request: + body: null + headers: + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/layout/analyzeResults/7cee5c27-fe1c-45d3-aab3-fb4d1d206ad1 + response: + body: + string: '{"status":"running","createdDateTime":"2020-04-27T23:35:47Z","lastUpdatedDateTime":"2020-04-27T23:35:52Z"}' + headers: + apim-request-id: 7808a3bb-f06c-487a-bda1-56bf632081f4 + content-type: application/json; charset=utf-8 + date: Mon, 27 Apr 2020 23:35:57 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + transfer-encoding: chunked + x-content-type-options: nosniff + x-envoy-upstream-service-time: '135' + status: + code: 200 + message: OK + url: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/layout/analyzeResults/7cee5c27-fe1c-45d3-aab3-fb4d1d206ad1 +- request: + body: null + headers: + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/layout/analyzeResults/7cee5c27-fe1c-45d3-aab3-fb4d1d206ad1 + response: + body: + string: '{"status":"succeeded","createdDateTime":"2020-04-27T23:35:47Z","lastUpdatedDateTime":"2020-04-27T23:36:02Z","analyzeResult":{"version":"2.0.0","readResults":[{"page":1,"language":"en","angle":0,"width":8.5,"height":11,"unit":"inch","lines":[{"language":"en","boundingBox":[0.8861,1.1217,2.3783,1.1217,2.3783,1.2812,0.8861,1.2812],"text":"Company + A Invoice","words":[{"boundingBox":[0.8861,1.1232,1.6203,1.1232,1.6203,1.2812,0.8861,1.2812],"text":"Company","confidence":1},{"boundingBox":[1.6696,1.1242,1.7749,1.1242,1.7749,1.2473,1.6696,1.2473],"text":"A","confidence":1},{"boundingBox":[1.8389,1.1217,2.3783,1.1217,2.3783,1.2485,1.8389,1.2485],"text":"Invoice","confidence":1}]},{"language":"en","boundingBox":[6.0211,1.0656,7.0357,1.0656,7.0357,1.2121,6.0211,1.2121],"text":"Invoice + For:","words":[{"boundingBox":[6.0211,1.0656,6.6362,1.0656,6.6362,1.2121,6.0211,1.2121],"text":"Invoice","confidence":1},{"boundingBox":[6.7147,1.0691,7.0357,1.0691,7.0357,1.2121,6.7147,1.2121],"text":"For:","confidence":1}]},{"language":"en","boundingBox":[0.8791,1.4825,1.5657,1.4825,1.5657,1.6155,0.8791,1.6155],"text":"Address:","words":[{"boundingBox":[0.8791,1.4825,1.5657,1.4825,1.5657,1.6155,0.8791,1.6155],"text":"Address:","confidence":1}]},{"language":"en","boundingBox":[6.0164,1.4503,6.8967,1.4503,6.8967,1.5931,6.0164,1.5931],"text":"Bilbo + Baggins","words":[{"boundingBox":[6.0164,1.4503,6.3392,1.4503,6.3392,1.5649,6.0164,1.5649],"text":"Bilbo","confidence":1},{"boundingBox":[6.3960,1.4556,6.8967,1.4556,6.8967,1.5931,6.3960,1.5931],"text":"Baggins","confidence":1}]},{"language":"en","boundingBox":[6.0165,1.6707,7.1006,1.6707,7.1006,1.7854,6.0165,1.7854],"text":"123 + Hobbit Lane","words":[{"boundingBox":[6.0165,1.6772,6.2434,1.6772,6.2434,1.7854,6.0165,1.7854],"text":"123","confidence":1},{"boundingBox":[6.3033,1.6707,6.7463,1.6707,6.7463,1.7854,6.3033,1.7854],"text":"Hobbit","confidence":1},{"boundingBox":[6.8030,1.6782,7.1006,1.6782,7.1006,1.7854,6.8030,1.7854],"text":"Lane","confidence":1}]},{"language":"en","boundingBox":[0.8852,1.8460,1.713,1.8460,1.713,1.9554,0.8852,1.9554],"text":"567 + Main St.","words":[{"boundingBox":[0.8852,1.8472,1.1203,1.8472,1.1203,1.9554,0.8852,1.9554],"text":"567","confidence":1},{"boundingBox":[1.1777,1.8460,1.5022,1.8460,1.5022,1.9554,1.1777,1.9554],"text":"Main","confidence":1},{"boundingBox":[1.5558,1.8472,1.713,1.8472,1.713,1.9554,1.5558,1.9554],"text":"St.","confidence":1}]},{"language":"en","boundingBox":[6.0164,1.8910,6.9793,1.8910,6.9793,2.0275,6.0164,2.0275],"text":"Redmond, + WA","words":[{"boundingBox":[6.0164,1.8910,6.6861,1.8910,6.6861,2.0275,6.0164,2.0275],"text":"Redmond,","confidence":1},{"boundingBox":[6.7408,1.8982,6.9793,1.8982,6.9793,2.0044,6.7408,2.0044],"text":"WA","confidence":1}]},{"language":"en","boundingBox":[0.891,2.0610,1.8537,2.0610,1.8537,2.1975,0.891,2.1975],"text":"Redmond, + WA","words":[{"boundingBox":[0.891,2.0610,1.5605,2.0610,1.5605,2.1975,0.891,2.1975],"text":"Redmond,","confidence":1},{"boundingBox":[1.6152,2.0682,1.8537,2.0682,1.8537,2.1744,1.6152,2.1744],"text":"WA","confidence":1}]},{"language":"en","boundingBox":[6.0105,2.1187,6.9371,2.1187,6.9371,2.2254,6.0105,2.2254],"text":"555-555-5555","words":[{"boundingBox":[6.0105,2.1187,6.9371,2.1187,6.9371,2.2254,6.0105,2.2254],"text":"555-555-5555","confidence":1}]},{"language":"en","boundingBox":[0.8852,2.2887,1.8119,2.2887,1.8119,2.3954,0.8852,2.3954],"text":"555-555-5555","words":[{"boundingBox":[0.8852,2.2887,1.8119,2.2887,1.8119,2.3954,0.8852,2.3954],"text":"555-555-5555","confidence":1}]},{"language":"en","boundingBox":[1.0943,3.0018,1.3842,3.0018,1.3842,3.1090,1.0943,3.1090],"text":"Item","words":[{"boundingBox":[1.0943,3.0018,1.3842,3.0018,1.3842,3.1090,1.0943,3.1090],"text":"Item","confidence":1}]},{"language":"en","boundingBox":[3.2527,2.9996,3.8367,2.9996,3.8367,3.1371,3.2527,3.1371],"text":"Quantity","words":[{"boundingBox":[3.2527,2.9996,3.8367,2.9996,3.8367,3.1371,3.2527,3.1371],"text":"Quantity","confidence":1}]},{"language":"en","boundingBox":[5.4230,2.9996,5.7372,2.9996,5.7372,3.1090,5.4230,3.1090],"text":"Price","words":[{"boundingBox":[5.4230,2.9996,5.7372,2.9996,5.7372,3.1090,5.4230,3.1090],"text":"Price","confidence":1}]},{"language":"en","boundingBox":[1.0832,3.2118,1.174,3.2118,1.174,3.3180,1.0832,3.3180],"text":"A","words":[{"boundingBox":[1.0832,3.2118,1.174,3.2118,1.174,3.3180,1.0832,3.3180],"text":"A","confidence":1}]},{"language":"en","boundingBox":[3.2589,3.2116,3.3202,3.2116,3.3202,3.3176,3.2589,3.3176],"text":"1","words":[{"boundingBox":[3.2589,3.2116,3.3202,3.2116,3.3202,3.3176,3.2589,3.3176],"text":"1","confidence":1}]},{"language":"en","boundingBox":[5.4232,3.2108,5.7784,3.2108,5.7784,3.3190,5.4232,3.3190],"text":"10.99","words":[{"boundingBox":[5.4232,3.2108,5.7784,3.2108,5.7784,3.3190,5.4232,3.3190],"text":"10.99","confidence":1}]},{"language":"en","boundingBox":[1.0943,3.4256,1.1637,3.4256,1.1637,3.5310,1.0943,3.5310],"text":"B","words":[{"boundingBox":[1.0943,3.4256,1.1637,3.4256,1.1637,3.5310,1.0943,3.5310],"text":"B","confidence":1}]},{"language":"en","boundingBox":[3.2541,3.4241,3.3199,3.4241,3.3199,3.5310,3.2541,3.5310],"text":"2","words":[{"boundingBox":[3.2541,3.4241,3.3199,3.4241,3.3199,3.5310,3.2541,3.5310],"text":"2","confidence":1}]},{"language":"en","boundingBox":[5.4232,3.4241,5.7789,3.4241,5.7789,3.5323,5.4232,3.5323],"text":"14.67","words":[{"boundingBox":[5.4232,3.4241,5.7789,3.4241,5.7789,3.5323,5.4232,3.5323],"text":"14.67","confidence":1}]},{"language":"en","boundingBox":[1.0882,3.6343,1.1647,3.6343,1.1647,3.7421,1.0882,3.7421],"text":"C","words":[{"boundingBox":[1.0882,3.6343,1.1647,3.6343,1.1647,3.7421,1.0882,3.7421],"text":"C","confidence":1}]},{"language":"en","boundingBox":[3.2486,3.6351,3.3244,3.6351,3.3244,3.7413,3.2486,3.7413],"text":"4","words":[{"boundingBox":[3.2486,3.6351,3.3244,3.6351,3.3244,3.7413,3.2486,3.7413],"text":"4","confidence":1}]},{"language":"en","boundingBox":[5.4232,3.6341,5.7800,3.6341,5.7800,3.7423,5.4232,3.7423],"text":"15.66","words":[{"boundingBox":[5.4232,3.6341,5.7800,3.6341,5.7800,3.7423,5.4232,3.7423],"text":"15.66","confidence":1}]},{"language":"en","boundingBox":[1.0943,3.8456,1.1753,3.8456,1.1753,3.9510,1.0943,3.9510],"text":"D","words":[{"boundingBox":[1.0943,3.8456,1.1753,3.8456,1.1753,3.9510,1.0943,3.9510],"text":"D","confidence":1}]},{"language":"en","boundingBox":[3.2589,3.8450,3.3202,3.8450,3.3202,3.9510,3.2589,3.9510],"text":"1","words":[{"boundingBox":[3.2589,3.8450,3.3202,3.8450,3.3202,3.9510,3.2589,3.9510],"text":"1","confidence":1}]},{"language":"en","boundingBox":[5.4232,3.8441,5.7809,3.8441,5.7809,3.9523,5.4232,3.9523],"text":"12.00","words":[{"boundingBox":[5.4232,3.8441,5.7809,3.8441,5.7809,3.9523,5.4232,3.9523],"text":"12.00","confidence":1}]},{"language":"en","boundingBox":[1.0943,4.0561,1.153,4.0561,1.153,4.1614,1.0943,4.1614],"text":"E","words":[{"boundingBox":[1.0943,4.0561,1.153,4.0561,1.153,4.1614,1.0943,4.1614],"text":"E","confidence":1}]},{"language":"en","boundingBox":[3.2486,4.0556,3.3244,4.0556,3.3244,4.1617,3.2486,4.1617],"text":"4","words":[{"boundingBox":[3.2486,4.0556,3.3244,4.0556,3.3244,4.1617,3.2486,4.1617],"text":"4","confidence":1}]},{"language":"en","boundingBox":[5.4232,4.0546,5.7810,4.0546,5.7810,4.1627,5.4232,4.1627],"text":"10.00","words":[{"boundingBox":[5.4232,4.0546,5.7810,4.0546,5.7810,4.1627,5.4232,4.1627],"text":"10.00","confidence":1}]},{"language":"en","boundingBox":[1.0943,4.2661,1.1497,4.2661,1.1497,4.3717,1.0943,4.3717],"text":"F","words":[{"boundingBox":[1.0943,4.2661,1.1497,4.2661,1.1497,4.3717,1.0943,4.3717],"text":"F","confidence":1}]},{"language":"en","boundingBox":[3.2534,4.2646,3.3226,4.2646,3.3226,4.3727,3.2534,4.3727],"text":"6","words":[{"boundingBox":[3.2534,4.2646,3.3226,4.2646,3.3226,4.3727,3.2534,4.3727],"text":"6","confidence":1}]},{"language":"en","boundingBox":[5.4232,4.2646,5.7809,4.2646,5.7809,4.3727,5.4232,4.3727],"text":"12.00","words":[{"boundingBox":[5.4232,4.2646,5.7809,4.2646,5.7809,4.3727,5.4232,4.3727],"text":"12.00","confidence":1}]},{"language":"en","boundingBox":[1.0877,4.4746,1.1735,4.4746,1.1735,4.5827,1.0877,4.5827],"text":"G","words":[{"boundingBox":[1.0877,4.4746,1.1735,4.4746,1.1735,4.5827,1.0877,4.5827],"text":"G","confidence":1}]},{"language":"en","boundingBox":[3.2514,4.4746,3.3224,4.4746,3.3224,4.5827,3.2514,4.5827],"text":"8","words":[{"boundingBox":[3.2514,4.4746,3.3224,4.4746,3.3224,4.5827,3.2514,4.5827],"text":"8","confidence":1}]},{"language":"en","boundingBox":[5.4184,4.4746,5.7810,4.4746,5.7810,4.5827,5.4184,4.5827],"text":"22.00","words":[{"boundingBox":[5.4184,4.4746,5.7810,4.4746,5.7810,4.5827,5.4184,4.5827],"text":"22.00","confidence":1}]},{"language":"en","boundingBox":[5.5075,4.8981,6.6320,4.8981,6.6320,5.0131,5.5075,5.0131],"text":"Subtotal: + 300.00","words":[{"boundingBox":[5.5075,4.8981,6.1249,4.8981,6.1249,5.0131,5.5075,5.0131],"text":"Subtotal:","confidence":1},{"boundingBox":[6.1794,4.9042,6.6320,4.9042,6.6320,5.0131,6.1794,5.0131],"text":"300.00","confidence":1}]},{"language":"en","boundingBox":[5.5034,5.1245,6.2022,5.1245,6.2022,5.2333,5.5034,5.2333],"text":"Tax: + 30.00","words":[{"boundingBox":[5.5034,5.1263,5.7812,5.1263,5.7812,5.2333,5.5034,5.2333],"text":"Tax:","confidence":1},{"boundingBox":[5.8360,5.1245,6.2022,5.1245,6.2022,5.2333,5.8360,5.2333],"text":"30.00","confidence":1}]},{"language":"en","boundingBox":[5.5034,5.3412,6.2587,5.3412,6.2587,5.481,5.5034,5.481],"text":"Tip: + 100.00","words":[{"boundingBox":[5.5034,5.3412,5.7515,5.3412,5.7515,5.481,5.5034,5.481],"text":"Tip:","confidence":1},{"boundingBox":[5.8110,5.3445,6.2587,5.3445,6.2587,5.4533,5.8110,5.4533],"text":"100.00","confidence":1}]},{"language":"en","boundingBox":[5.5034,5.5583,6.3987,5.5583,6.3987,5.6733,5.5034,5.6733],"text":"Total: + 430.00","words":[{"boundingBox":[5.5034,5.5583,5.8915,5.5583,5.8915,5.6733,5.5034,5.6733],"text":"Total:","confidence":1},{"boundingBox":[5.9420,5.5645,6.3987,5.5645,6.3987,5.6733,5.9420,5.6733],"text":"430.00","confidence":1}]},{"language":"en","boundingBox":[1.0055,6.6553,3.8342,6.6553,3.8342,6.7981,1.0055,6.7981],"text":"Signature: + ____ Bilbo Baggins__________","words":[{"boundingBox":[1.0055,6.6581,1.6987,6.6581,1.6987,6.7981,1.0055,6.7981],"text":"Signature:","confidence":1},{"boundingBox":[1.7470,6.7829,2.0809,6.7829,2.0809,6.7981,1.7470,6.7981],"text":"____","confidence":1},{"boundingBox":[2.0925,6.6553,2.4278,6.6553,2.4278,6.7703,2.0925,6.7703],"text":"Bilbo","confidence":1},{"boundingBox":[2.4823,6.6581,3.8342,6.6581,3.8342,6.7981,2.4823,6.7981],"text":"Baggins__________","confidence":1}]}]},{"page":2,"language":"en","angle":0,"width":8.4967,"height":10.9967,"unit":"inch","lines":[]},{"page":3,"language":"en","angle":0,"width":8.5,"height":11,"unit":"inch","lines":[{"language":"en","boundingBox":[0.8861,1.1217,2.3734,1.1217,2.3734,1.2812,0.8861,1.2812],"text":"Company + B Invoice","words":[{"boundingBox":[0.8861,1.1232,1.6203,1.1232,1.6203,1.2812,0.8861,1.2812],"text":"Company","confidence":1},{"boundingBox":[1.6836,1.1248,1.7640,1.1248,1.7640,1.2469,1.6836,1.2469],"text":"B","confidence":1},{"boundingBox":[1.8336,1.1217,2.3734,1.1217,2.3734,1.2485,1.8336,1.2485],"text":"Invoice","confidence":1}]},{"language":"en","boundingBox":[6.0211,1.0656,7.0357,1.0656,7.0357,1.2121,6.0211,1.2121],"text":"Invoice + For:","words":[{"boundingBox":[6.0211,1.0656,6.6362,1.0656,6.6362,1.2121,6.0211,1.2121],"text":"Invoice","confidence":1},{"boundingBox":[6.7147,1.0691,7.0357,1.0691,7.0357,1.2121,6.7147,1.2121],"text":"For:","confidence":1}]},{"language":"en","boundingBox":[0.8791,1.4825,1.5657,1.4825,1.5657,1.6155,0.8791,1.6155],"text":"Address:","words":[{"boundingBox":[0.8791,1.4825,1.5657,1.4825,1.5657,1.6155,0.8791,1.6155],"text":"Address:","confidence":1}]},{"language":"en","boundingBox":[6.0164,1.4506,6.9506,1.4506,6.9506,1.5931,6.0164,1.5931],"text":"Frodo + Baggins","words":[{"boundingBox":[6.0164,1.4506,6.3895,1.4506,6.3895,1.5649,6.0164,1.5649],"text":"Frodo","confidence":1},{"boundingBox":[6.4500,1.4556,6.9506,1.4556,6.9506,1.5931,6.4500,1.5931],"text":"Baggins","confidence":1}]},{"language":"en","boundingBox":[6.0165,1.6707,7.1006,1.6707,7.1006,1.7854,6.0165,1.7854],"text":"123 + Hobbit Lane","words":[{"boundingBox":[6.0165,1.6772,6.2434,1.6772,6.2434,1.7854,6.0165,1.7854],"text":"123","confidence":1},{"boundingBox":[6.3033,1.6707,6.7463,1.6707,6.7463,1.7854,6.3033,1.7854],"text":"Hobbit","confidence":1},{"boundingBox":[6.8030,1.6782,7.1006,1.6782,7.1006,1.7854,6.8030,1.7854],"text":"Lane","confidence":1}]},{"language":"en","boundingBox":[0.8852,1.8460,1.713,1.8460,1.713,1.9554,0.8852,1.9554],"text":"567 + Main St.","words":[{"boundingBox":[0.8852,1.8472,1.1203,1.8472,1.1203,1.9554,0.8852,1.9554],"text":"567","confidence":1},{"boundingBox":[1.1777,1.8460,1.5022,1.8460,1.5022,1.9554,1.1777,1.9554],"text":"Main","confidence":1},{"boundingBox":[1.5558,1.8472,1.713,1.8472,1.713,1.9554,1.5558,1.9554],"text":"St.","confidence":1}]},{"language":"en","boundingBox":[6.0164,1.8910,6.9793,1.8910,6.9793,2.0275,6.0164,2.0275],"text":"Redmond, + WA","words":[{"boundingBox":[6.0164,1.8910,6.6861,1.8910,6.6861,2.0275,6.0164,2.0275],"text":"Redmond,","confidence":1},{"boundingBox":[6.7408,1.8982,6.9793,1.8982,6.9793,2.0044,6.7408,2.0044],"text":"WA","confidence":1}]},{"language":"en","boundingBox":[0.891,2.0610,1.8537,2.0610,1.8537,2.1975,0.891,2.1975],"text":"Redmond, + WA","words":[{"boundingBox":[0.891,2.0610,1.5605,2.0610,1.5605,2.1975,0.891,2.1975],"text":"Redmond,","confidence":1},{"boundingBox":[1.6152,2.0682,1.8537,2.0682,1.8537,2.1744,1.6152,2.1744],"text":"WA","confidence":1}]},{"language":"en","boundingBox":[6.0105,2.1187,6.9371,2.1187,6.9371,2.2254,6.0105,2.2254],"text":"555-555-5555","words":[{"boundingBox":[6.0105,2.1187,6.9371,2.1187,6.9371,2.2254,6.0105,2.2254],"text":"555-555-5555","confidence":1}]},{"language":"en","boundingBox":[0.8852,2.2887,1.8119,2.2887,1.8119,2.3954,0.8852,2.3954],"text":"555-555-5555","words":[{"boundingBox":[0.8852,2.2887,1.8119,2.2887,1.8119,2.3954,0.8852,2.3954],"text":"555-555-5555","confidence":1}]},{"language":"en","boundingBox":[1.0943,3.0018,1.3842,3.0018,1.3842,3.1090,1.0943,3.1090],"text":"Item","words":[{"boundingBox":[1.0943,3.0018,1.3842,3.0018,1.3842,3.1090,1.0943,3.1090],"text":"Item","confidence":1}]},{"language":"en","boundingBox":[3.2527,2.9996,3.8367,2.9996,3.8367,3.1371,3.2527,3.1371],"text":"Quantity","words":[{"boundingBox":[3.2527,2.9996,3.8367,2.9996,3.8367,3.1371,3.2527,3.1371],"text":"Quantity","confidence":1}]},{"language":"en","boundingBox":[5.4230,2.9996,5.7372,2.9996,5.7372,3.1090,5.4230,3.1090],"text":"Price","words":[{"boundingBox":[5.4230,2.9996,5.7372,2.9996,5.7372,3.1090,5.4230,3.1090],"text":"Price","confidence":1}]},{"language":"en","boundingBox":[1.0832,3.2118,1.174,3.2118,1.174,3.3180,1.0832,3.3180],"text":"A","words":[{"boundingBox":[1.0832,3.2118,1.174,3.2118,1.174,3.3180,1.0832,3.3180],"text":"A","confidence":1}]},{"language":"en","boundingBox":[3.2589,3.2108,3.4067,3.2108,3.4067,3.3190,3.2589,3.3190],"text":"10","words":[{"boundingBox":[3.2589,3.2108,3.4067,3.2108,3.4067,3.3190,3.2589,3.3190],"text":"10","confidence":1}]},{"language":"en","boundingBox":[5.4232,3.2108,5.8617,3.2108,5.8617,3.3190,5.4232,3.3190],"text":"100.99","words":[{"boundingBox":[5.4232,3.2108,5.8617,3.2108,5.8617,3.3190,5.4232,3.3190],"text":"100.99","confidence":1}]},{"language":"en","boundingBox":[1.0943,3.4256,1.1637,3.4256,1.1637,3.5310,1.0943,3.5310],"text":"B","words":[{"boundingBox":[1.0943,3.4256,1.1637,3.4256,1.1637,3.5310,1.0943,3.5310],"text":"B","confidence":1}]},{"language":"en","boundingBox":[3.2541,3.4241,3.4067,3.4241,3.4067,3.5323,3.2541,3.5323],"text":"20","words":[{"boundingBox":[3.2541,3.4241,3.4067,3.4241,3.4067,3.5323,3.2541,3.5323],"text":"20","confidence":1}]},{"language":"en","boundingBox":[5.4232,3.4241,5.8622,3.4241,5.8622,3.5323,5.4232,3.5323],"text":"140.67","words":[{"boundingBox":[5.4232,3.4241,5.8622,3.4241,5.8622,3.5323,5.4232,3.5323],"text":"140.67","confidence":1}]},{"language":"en","boundingBox":[1.0882,3.6343,1.1647,3.6343,1.1647,3.7421,1.0882,3.7421],"text":"C","words":[{"boundingBox":[1.0882,3.6343,1.1647,3.6343,1.1647,3.7421,1.0882,3.7421],"text":"C","confidence":1}]},{"language":"en","boundingBox":[3.2486,3.6341,3.4067,3.6341,3.4067,3.7423,3.2486,3.7423],"text":"40","words":[{"boundingBox":[3.2486,3.6341,3.4067,3.6341,3.4067,3.7423,3.2486,3.7423],"text":"40","confidence":1}]},{"language":"en","boundingBox":[5.4232,3.6341,5.8634,3.6341,5.8634,3.7423,5.4232,3.7423],"text":"150.66","words":[{"boundingBox":[5.4232,3.6341,5.8634,3.6341,5.8634,3.7423,5.4232,3.7423],"text":"150.66","confidence":1}]},{"language":"en","boundingBox":[1.0943,3.8456,1.1753,3.8456,1.1753,3.9510,1.0943,3.9510],"text":"D","words":[{"boundingBox":[1.0943,3.8456,1.1753,3.8456,1.1753,3.9510,1.0943,3.9510],"text":"D","confidence":1}]},{"language":"en","boundingBox":[3.2589,3.8441,3.4067,3.8441,3.4067,3.9523,3.2589,3.9523],"text":"10","words":[{"boundingBox":[3.2589,3.8441,3.4067,3.8441,3.4067,3.9523,3.2589,3.9523],"text":"10","confidence":1}]},{"language":"en","boundingBox":[5.4232,3.8441,5.8642,3.8441,5.8642,3.9523,5.4232,3.9523],"text":"120.00","words":[{"boundingBox":[5.4232,3.8441,5.8642,3.8441,5.8642,3.9523,5.4232,3.9523],"text":"120.00","confidence":1}]},{"language":"en","boundingBox":[1.0943,4.0561,1.153,4.0561,1.153,4.1614,1.0943,4.1614],"text":"E","words":[{"boundingBox":[1.0943,4.0561,1.153,4.0561,1.153,4.1614,1.0943,4.1614],"text":"E","confidence":1}]},{"language":"en","boundingBox":[3.2486,4.0546,3.4067,4.0546,3.4067,4.1627,3.2486,4.1627],"text":"40","words":[{"boundingBox":[3.2486,4.0546,3.4067,4.0546,3.4067,4.1627,3.2486,4.1627],"text":"40","confidence":1}]},{"language":"en","boundingBox":[5.4232,4.0546,5.8644,4.0546,5.8644,4.1627,5.4232,4.1627],"text":"100.00","words":[{"boundingBox":[5.4232,4.0546,5.8644,4.0546,5.8644,4.1627,5.4232,4.1627],"text":"100.00","confidence":1}]},{"language":"en","boundingBox":[1.0943,4.2661,1.1497,4.2661,1.1497,4.3717,1.0943,4.3717],"text":"F","words":[{"boundingBox":[1.0943,4.2661,1.1497,4.2661,1.1497,4.3717,1.0943,4.3717],"text":"F","confidence":1}]},{"language":"en","boundingBox":[3.2534,4.2646,3.4067,4.2646,3.4067,4.3727,3.2534,4.3727],"text":"60","words":[{"boundingBox":[3.2534,4.2646,3.4067,4.2646,3.4067,4.3727,3.2534,4.3727],"text":"60","confidence":1}]},{"language":"en","boundingBox":[5.4232,4.2646,5.8642,4.2646,5.8642,4.3727,5.4232,4.3727],"text":"120.00","words":[{"boundingBox":[5.4232,4.2646,5.8642,4.2646,5.8642,4.3727,5.4232,4.3727],"text":"120.00","confidence":1}]},{"language":"en","boundingBox":[1.0877,4.4746,1.1735,4.4746,1.1735,4.5827,1.0877,4.5827],"text":"G","words":[{"boundingBox":[1.0877,4.4746,1.1735,4.4746,1.1735,4.5827,1.0877,4.5827],"text":"G","confidence":1}]},{"language":"en","boundingBox":[3.2514,4.4746,3.4067,4.4746,3.4067,4.5827,3.2514,4.5827],"text":"80","words":[{"boundingBox":[3.2514,4.4746,3.4067,4.4746,3.4067,4.5827,3.2514,4.5827],"text":"80","confidence":1}]},{"language":"en","boundingBox":[5.4184,4.4746,5.8644,4.4746,5.8644,4.5827,5.4184,4.5827],"text":"220.00","words":[{"boundingBox":[5.4184,4.4746,5.8644,4.4746,5.8644,4.5827,5.4184,4.5827],"text":"220.00","confidence":1}]},{"language":"en","boundingBox":[5.5075,4.8981,6.7158,4.8981,6.7158,5.0131,5.5075,5.0131],"text":"Subtotal: + 3000.00","words":[{"boundingBox":[5.5075,4.8981,6.1249,4.8981,6.1249,5.0131,5.5075,5.0131],"text":"Subtotal:","confidence":1},{"boundingBox":[6.1794,4.9042,6.7158,4.9042,6.7158,5.0131,6.1794,5.0131],"text":"3000.00","confidence":1}]},{"language":"en","boundingBox":[5.5034,5.1245,6.2887,5.1245,6.2887,5.2333,5.5034,5.2333],"text":"Tax: + 300.00","words":[{"boundingBox":[5.5034,5.1263,5.7812,5.1263,5.7812,5.2333,5.5034,5.2333],"text":"Tax:","confidence":1},{"boundingBox":[5.8360,5.1245,6.2887,5.1245,6.2887,5.2333,5.8360,5.2333],"text":"300.00","confidence":1}]},{"language":"en","boundingBox":[5.5034,5.3412,6.3422,5.3412,6.3422,5.481,5.5034,5.481],"text":"Tip: + 1000.00","words":[{"boundingBox":[5.5034,5.3412,5.7515,5.3412,5.7515,5.481,5.5034,5.481],"text":"Tip:","confidence":1},{"boundingBox":[5.8110,5.3445,6.3422,5.3445,6.3422,5.4533,5.8110,5.4533],"text":"1000.00","confidence":1}]},{"language":"en","boundingBox":[5.5034,5.5583,6.4825,5.5583,6.4825,5.6733,5.5034,5.6733],"text":"Total: + 4300.00","words":[{"boundingBox":[5.5034,5.5583,5.8915,5.5583,5.8915,5.6733,5.5034,5.6733],"text":"Total:","confidence":1},{"boundingBox":[5.9420,5.5645,6.4825,5.5645,6.4825,5.6733,5.9420,5.6733],"text":"4300.00","confidence":1}]},{"language":"en","boundingBox":[1.0055,6.6556,3.8842,6.6556,3.8842,6.7981,1.0055,6.7981],"text":"Signature: + ____ Frodo Baggins__________","words":[{"boundingBox":[1.0055,6.6581,1.6987,6.6581,1.6987,6.7981,1.0055,6.7981],"text":"Signature:","confidence":1},{"boundingBox":[1.7470,6.7829,2.0809,6.7829,2.0809,6.7981,1.7470,6.7981],"text":"____","confidence":1},{"boundingBox":[2.0925,6.6556,2.4778,6.6556,2.4778,6.7703,2.0925,6.7703],"text":"Frodo","confidence":1},{"boundingBox":[2.5325,6.6581,3.8842,6.6581,3.8842,6.7981,2.5325,6.7981],"text":"Baggins__________","confidence":1}]}]}],"pageResults":[{"page":1,"tables":[{"rows":8,"columns":3,"cells":[{"rowIndex":0,"columnIndex":0,"text":"Item","boundingBox":[1.0037,2.9443,3.1681,2.9443,3.1681,3.1543,1.0037,3.1543],"elements":["#/readResults/0/lines/10/words/0"]},{"rowIndex":0,"columnIndex":1,"text":"Quantity","boundingBox":[3.1681,2.9443,5.3353,2.9443,5.3353,3.1543,3.1681,3.1543],"elements":["#/readResults/0/lines/11/words/0"]},{"rowIndex":0,"columnIndex":2,"text":"Price","boundingBox":[5.3353,2.9443,7.4997,2.9443,7.4997,3.1543,5.3353,3.1543],"elements":["#/readResults/0/lines/12/words/0"]},{"rowIndex":1,"columnIndex":0,"text":"A","boundingBox":[1.0037,3.1543,3.1681,3.1543,3.1681,3.3643,1.0037,3.3643],"elements":["#/readResults/0/lines/13/words/0"]},{"rowIndex":1,"columnIndex":1,"text":"1","boundingBox":[3.1681,3.1543,5.3353,3.1543,5.3353,3.3643,3.1681,3.3643],"elements":["#/readResults/0/lines/14/words/0"]},{"rowIndex":1,"columnIndex":2,"text":"10.99","boundingBox":[5.3353,3.1543,7.4997,3.1543,7.4997,3.3643,5.3353,3.3643],"elements":["#/readResults/0/lines/15/words/0"]},{"rowIndex":2,"columnIndex":0,"text":"B","boundingBox":[1.0037,3.3643,3.1681,3.3643,3.1681,3.5776,1.0037,3.5776],"elements":["#/readResults/0/lines/16/words/0"]},{"rowIndex":2,"columnIndex":1,"text":"2","boundingBox":[3.1681,3.3643,5.3353,3.3643,5.3353,3.5776,3.1681,3.5776],"elements":["#/readResults/0/lines/17/words/0"]},{"rowIndex":2,"columnIndex":2,"text":"14.67","boundingBox":[5.3353,3.3643,7.4997,3.3643,7.4997,3.5776,5.3353,3.5776],"elements":["#/readResults/0/lines/18/words/0"]},{"rowIndex":3,"columnIndex":0,"text":"C","boundingBox":[1.0037,3.5776,3.1681,3.5776,3.1681,3.7876,1.0037,3.7876],"elements":["#/readResults/0/lines/19/words/0"]},{"rowIndex":3,"columnIndex":1,"text":"4","boundingBox":[3.1681,3.5776,5.3353,3.5776,5.3353,3.7876,3.1681,3.7876],"elements":["#/readResults/0/lines/20/words/0"]},{"rowIndex":3,"columnIndex":2,"text":"15.66","boundingBox":[5.3353,3.5776,7.4997,3.5776,7.4997,3.7876,5.3353,3.7876],"elements":["#/readResults/0/lines/21/words/0"]},{"rowIndex":4,"columnIndex":0,"text":"D","boundingBox":[1.0037,3.7876,3.1681,3.7876,3.1681,3.9976,1.0037,3.9976],"elements":["#/readResults/0/lines/22/words/0"]},{"rowIndex":4,"columnIndex":1,"text":"1","boundingBox":[3.1681,3.7876,5.3353,3.7876,5.3353,3.9976,3.1681,3.9976],"elements":["#/readResults/0/lines/23/words/0"]},{"rowIndex":4,"columnIndex":2,"text":"12.00","boundingBox":[5.3353,3.7876,7.4997,3.7876,7.4997,3.9976,5.3353,3.9976],"elements":["#/readResults/0/lines/24/words/0"]},{"rowIndex":5,"columnIndex":0,"text":"E","boundingBox":[1.0037,3.9976,3.1681,3.9976,3.1681,4.2081,1.0037,4.2081],"elements":["#/readResults/0/lines/25/words/0"]},{"rowIndex":5,"columnIndex":1,"text":"4","boundingBox":[3.1681,3.9976,5.3353,3.9976,5.3353,4.2081,3.1681,4.2081],"elements":["#/readResults/0/lines/26/words/0"]},{"rowIndex":5,"columnIndex":2,"text":"10.00","boundingBox":[5.3353,3.9976,7.4997,3.9976,7.4997,4.2081,5.3353,4.2081],"elements":["#/readResults/0/lines/27/words/0"]},{"rowIndex":6,"columnIndex":0,"text":"F","boundingBox":[1.0037,4.2081,3.1681,4.2081,3.1681,4.4181,1.0037,4.4181],"elements":["#/readResults/0/lines/28/words/0"]},{"rowIndex":6,"columnIndex":1,"text":"6","boundingBox":[3.1681,4.2081,5.3353,4.2081,5.3353,4.4181,3.1681,4.4181],"elements":["#/readResults/0/lines/29/words/0"]},{"rowIndex":6,"columnIndex":2,"text":"12.00","boundingBox":[5.3353,4.2081,7.4997,4.2081,7.4997,4.4181,5.3353,4.4181],"elements":["#/readResults/0/lines/30/words/0"]},{"rowIndex":7,"columnIndex":0,"text":"G","boundingBox":[1.0037,4.4181,3.1681,4.4181,3.1681,4.6281,1.0037,4.6281],"elements":["#/readResults/0/lines/31/words/0"]},{"rowIndex":7,"columnIndex":1,"text":"8","boundingBox":[3.1681,4.4181,5.3353,4.4181,5.3353,4.6281,3.1681,4.6281],"elements":["#/readResults/0/lines/32/words/0"]},{"rowIndex":7,"columnIndex":2,"text":"22.00","boundingBox":[5.3353,4.4181,7.4997,4.4181,7.4997,4.6281,5.3353,4.6281],"elements":["#/readResults/0/lines/33/words/0"]}]}]},{"page":2,"tables":[]},{"page":3,"tables":[{"rows":8,"columns":3,"cells":[{"rowIndex":0,"columnIndex":0,"text":"Item","boundingBox":[1.0037,2.9443,3.1681,2.9443,3.1681,3.1543,1.0037,3.1543],"elements":["#/readResults/2/lines/10/words/0"]},{"rowIndex":0,"columnIndex":1,"text":"Quantity","boundingBox":[3.1681,2.9443,5.3353,2.9443,5.3353,3.1543,3.1681,3.1543],"elements":["#/readResults/2/lines/11/words/0"]},{"rowIndex":0,"columnIndex":2,"text":"Price","boundingBox":[5.3353,2.9443,7.4997,2.9443,7.4997,3.1543,5.3353,3.1543],"elements":["#/readResults/2/lines/12/words/0"]},{"rowIndex":1,"columnIndex":0,"text":"A","boundingBox":[1.0037,3.1543,3.1681,3.1543,3.1681,3.3643,1.0037,3.3643],"elements":["#/readResults/2/lines/13/words/0"]},{"rowIndex":1,"columnIndex":1,"text":"10","boundingBox":[3.1681,3.1543,5.3353,3.1543,5.3353,3.3643,3.1681,3.3643],"elements":["#/readResults/2/lines/14/words/0"]},{"rowIndex":1,"columnIndex":2,"text":"100.99","boundingBox":[5.3353,3.1543,7.4997,3.1543,7.4997,3.3643,5.3353,3.3643],"elements":["#/readResults/2/lines/15/words/0"]},{"rowIndex":2,"columnIndex":0,"text":"B","boundingBox":[1.0037,3.3643,3.1681,3.3643,3.1681,3.5776,1.0037,3.5776],"elements":["#/readResults/2/lines/16/words/0"]},{"rowIndex":2,"columnIndex":1,"text":"20","boundingBox":[3.1681,3.3643,5.3353,3.3643,5.3353,3.5776,3.1681,3.5776],"elements":["#/readResults/2/lines/17/words/0"]},{"rowIndex":2,"columnIndex":2,"text":"140.67","boundingBox":[5.3353,3.3643,7.4997,3.3643,7.4997,3.5776,5.3353,3.5776],"elements":["#/readResults/2/lines/18/words/0"]},{"rowIndex":3,"columnIndex":0,"text":"C","boundingBox":[1.0037,3.5776,3.1681,3.5776,3.1681,3.7876,1.0037,3.7876],"elements":["#/readResults/2/lines/19/words/0"]},{"rowIndex":3,"columnIndex":1,"text":"40","boundingBox":[3.1681,3.5776,5.3353,3.5776,5.3353,3.7876,3.1681,3.7876],"elements":["#/readResults/2/lines/20/words/0"]},{"rowIndex":3,"columnIndex":2,"text":"150.66","boundingBox":[5.3353,3.5776,7.4997,3.5776,7.4997,3.7876,5.3353,3.7876],"elements":["#/readResults/2/lines/21/words/0"]},{"rowIndex":4,"columnIndex":0,"text":"D","boundingBox":[1.0037,3.7876,3.1681,3.7876,3.1681,3.9976,1.0037,3.9976],"elements":["#/readResults/2/lines/22/words/0"]},{"rowIndex":4,"columnIndex":1,"text":"10","boundingBox":[3.1681,3.7876,5.3353,3.7876,5.3353,3.9976,3.1681,3.9976],"elements":["#/readResults/2/lines/23/words/0"]},{"rowIndex":4,"columnIndex":2,"text":"120.00","boundingBox":[5.3353,3.7876,7.4997,3.7876,7.4997,3.9976,5.3353,3.9976],"elements":["#/readResults/2/lines/24/words/0"]},{"rowIndex":5,"columnIndex":0,"text":"E","boundingBox":[1.0037,3.9976,3.1681,3.9976,3.1681,4.2081,1.0037,4.2081],"elements":["#/readResults/2/lines/25/words/0"]},{"rowIndex":5,"columnIndex":1,"text":"40","boundingBox":[3.1681,3.9976,5.3353,3.9976,5.3353,4.2081,3.1681,4.2081],"elements":["#/readResults/2/lines/26/words/0"]},{"rowIndex":5,"columnIndex":2,"text":"100.00","boundingBox":[5.3353,3.9976,7.4997,3.9976,7.4997,4.2081,5.3353,4.2081],"elements":["#/readResults/2/lines/27/words/0"]},{"rowIndex":6,"columnIndex":0,"text":"F","boundingBox":[1.0037,4.2081,3.1681,4.2081,3.1681,4.4181,1.0037,4.4181],"elements":["#/readResults/2/lines/28/words/0"]},{"rowIndex":6,"columnIndex":1,"text":"60","boundingBox":[3.1681,4.2081,5.3353,4.2081,5.3353,4.4181,3.1681,4.4181],"elements":["#/readResults/2/lines/29/words/0"]},{"rowIndex":6,"columnIndex":2,"text":"120.00","boundingBox":[5.3353,4.2081,7.4997,4.2081,7.4997,4.4181,5.3353,4.4181],"elements":["#/readResults/2/lines/30/words/0"]},{"rowIndex":7,"columnIndex":0,"text":"G","boundingBox":[1.0037,4.4181,3.1681,4.4181,3.1681,4.6281,1.0037,4.6281],"elements":["#/readResults/2/lines/31/words/0"]},{"rowIndex":7,"columnIndex":1,"text":"80","boundingBox":[3.1681,4.4181,5.3353,4.4181,5.3353,4.6281,3.1681,4.6281],"elements":["#/readResults/2/lines/32/words/0"]},{"rowIndex":7,"columnIndex":2,"text":"220.00","boundingBox":[5.3353,4.4181,7.4997,4.4181,7.4997,4.6281,5.3353,4.6281],"elements":["#/readResults/2/lines/33/words/0"]}]}]}]}}' + headers: + apim-request-id: f4bce355-ffa1-4714-b911-07cee1d68216 + content-type: application/json; charset=utf-8 + date: Mon, 27 Apr 2020 23:36:02 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + transfer-encoding: chunked + x-content-type-options: nosniff + x-envoy-upstream-service-time: '181' + status: + code: 200 + message: OK + url: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/layout/analyzeResults/7cee5c27-fe1c-45d3-aab3-fb4d1d206ad1 +version: 1 diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_content_async.test_damaged_file_passed_as_bytes.yaml b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_content_async.test_damaged_file_passed_as_bytes.yaml new file mode 100644 index 000000000000..75040d21befb --- /dev/null +++ b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_content_async.test_damaged_file_passed_as_bytes.yaml @@ -0,0 +1,28 @@ +interactions: +- request: + body: '%PDFUUU' + headers: + Content-Type: + - application/pdf + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/layout/analyze + response: + body: + string: '{"error":{"code":"BadArgument","message":"Bad or unrecognizable request + JSON or binary file."}}' + headers: + apim-request-id: e8935d10-a4a4-4aed-8723-5603965c9f8f + content-type: application/json; charset=utf-8 + date: Wed, 22 Apr 2020 22:04:44 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + transfer-encoding: chunked + x-content-type-options: nosniff + x-envoy-upstream-service-time: '6' + status: + code: 400 + message: Bad Request + url: https://westus.api.cognitive.microsoft.com//formrecognizer/v2.0-preview/layout/analyze +version: 1 diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_content_async.test_damaged_file_passed_as_bytes_io.yaml b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_content_async.test_damaged_file_passed_as_bytes_io.yaml new file mode 100644 index 000000000000..01e73441087e --- /dev/null +++ b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_content_async.test_damaged_file_passed_as_bytes_io.yaml @@ -0,0 +1,33 @@ +interactions: +- request: + body: !!python/object/new:_io.BytesIO + state: !!python/tuple + - !!binary | + JVBERlVVVQ== + - 0 + - null + headers: + Content-Type: + - application/pdf + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/layout/analyze + response: + body: + string: '{"error":{"code":"BadArgument","message":"Bad or unrecognizable request + JSON or binary file."}}' + headers: + apim-request-id: 40f7904b-52c9-4e43-9dd0-61520bcfe8fa + content-type: application/json; charset=utf-8 + date: Wed, 22 Apr 2020 22:08:04 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + transfer-encoding: chunked + x-content-type-options: nosniff + x-envoy-upstream-service-time: '4' + status: + code: 400 + message: Bad Request + url: https://westus.api.cognitive.microsoft.com//formrecognizer/v2.0-preview/layout/analyze +version: 1 diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_content_from_url.test_content_multipage_transform_url.yaml b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_content_from_url.test_content_multipage_transform_url.yaml new file mode 100644 index 000000000000..1a09ef9fe2f5 --- /dev/null +++ b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_content_from_url.test_content_multipage_transform_url.yaml @@ -0,0 +1,135 @@ +interactions: +- request: + body: '{"source": "https://raw.githubusercontent.com/Azure/azure-sdk-for-python/master/sdk/formrecognizer/azure-ai-formrecognizer/tests/sample_forms/training_multipage/multipage_invoice1.pdf"}' + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '116' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/layout/analyze + response: + body: + string: '' + headers: + apim-request-id: + - b71d3125-dc99-413d-9c59-0513ed7c0602 + content-length: + - '0' + date: + - Mon, 27 Apr 2020 23:53:24 GMT + operation-location: + - https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/layout/analyzeResults/b71d3125-dc99-413d-9c59-0513ed7c0602 + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '788' + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/layout/analyzeResults/b71d3125-dc99-413d-9c59-0513ed7c0602 + response: + body: + string: '{"status":"running","createdDateTime":"2020-04-27T23:53:24Z","lastUpdatedDateTime":"2020-04-27T23:53:29Z"}' + headers: + apim-request-id: + - 8ba74b57-dbbd-4a86-9f32-8a9fff9b56d4 + content-type: + - application/json; charset=utf-8 + date: + - Mon, 27 Apr 2020 23:53:29 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + transfer-encoding: + - chunked + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '185' + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/layout/analyzeResults/b71d3125-dc99-413d-9c59-0513ed7c0602 + response: + body: + string: '{"status":"succeeded","createdDateTime":"2020-04-27T23:53:24Z","lastUpdatedDateTime":"2020-04-27T23:53:34Z","analyzeResult":{"version":"2.0.0","readResults":[{"page":1,"language":"en","angle":0,"width":8.5,"height":11,"unit":"inch","lines":[{"language":"en","boundingBox":[0.8861,1.1217,2.3783,1.1217,2.3783,1.2812,0.8861,1.2812],"text":"Company + A Invoice","words":[{"boundingBox":[0.8861,1.1232,1.6203,1.1232,1.6203,1.2812,0.8861,1.2812],"text":"Company","confidence":1},{"boundingBox":[1.6696,1.1242,1.7749,1.1242,1.7749,1.2473,1.6696,1.2473],"text":"A","confidence":1},{"boundingBox":[1.8389,1.1217,2.3783,1.1217,2.3783,1.2485,1.8389,1.2485],"text":"Invoice","confidence":1}]},{"language":"en","boundingBox":[6.0211,1.0656,7.0357,1.0656,7.0357,1.2121,6.0211,1.2121],"text":"Invoice + For:","words":[{"boundingBox":[6.0211,1.0656,6.6362,1.0656,6.6362,1.2121,6.0211,1.2121],"text":"Invoice","confidence":1},{"boundingBox":[6.7147,1.0691,7.0357,1.0691,7.0357,1.2121,6.7147,1.2121],"text":"For:","confidence":1}]},{"language":"en","boundingBox":[0.8791,1.4825,1.5657,1.4825,1.5657,1.6155,0.8791,1.6155],"text":"Address:","words":[{"boundingBox":[0.8791,1.4825,1.5657,1.4825,1.5657,1.6155,0.8791,1.6155],"text":"Address:","confidence":1}]},{"language":"en","boundingBox":[6.0164,1.4503,6.8967,1.4503,6.8967,1.5931,6.0164,1.5931],"text":"Bilbo + Baggins","words":[{"boundingBox":[6.0164,1.4503,6.3392,1.4503,6.3392,1.5649,6.0164,1.5649],"text":"Bilbo","confidence":1},{"boundingBox":[6.3960,1.4556,6.8967,1.4556,6.8967,1.5931,6.3960,1.5931],"text":"Baggins","confidence":1}]},{"language":"en","boundingBox":[6.0165,1.6707,7.1006,1.6707,7.1006,1.7854,6.0165,1.7854],"text":"123 + Hobbit Lane","words":[{"boundingBox":[6.0165,1.6772,6.2434,1.6772,6.2434,1.7854,6.0165,1.7854],"text":"123","confidence":1},{"boundingBox":[6.3033,1.6707,6.7463,1.6707,6.7463,1.7854,6.3033,1.7854],"text":"Hobbit","confidence":1},{"boundingBox":[6.8030,1.6782,7.1006,1.6782,7.1006,1.7854,6.8030,1.7854],"text":"Lane","confidence":1}]},{"language":"en","boundingBox":[0.8852,1.8460,1.713,1.8460,1.713,1.9554,0.8852,1.9554],"text":"567 + Main St.","words":[{"boundingBox":[0.8852,1.8472,1.1203,1.8472,1.1203,1.9554,0.8852,1.9554],"text":"567","confidence":1},{"boundingBox":[1.1777,1.8460,1.5022,1.8460,1.5022,1.9554,1.1777,1.9554],"text":"Main","confidence":1},{"boundingBox":[1.5558,1.8472,1.713,1.8472,1.713,1.9554,1.5558,1.9554],"text":"St.","confidence":1}]},{"language":"en","boundingBox":[6.0164,1.8910,6.9793,1.8910,6.9793,2.0275,6.0164,2.0275],"text":"Redmond, + WA","words":[{"boundingBox":[6.0164,1.8910,6.6861,1.8910,6.6861,2.0275,6.0164,2.0275],"text":"Redmond,","confidence":1},{"boundingBox":[6.7408,1.8982,6.9793,1.8982,6.9793,2.0044,6.7408,2.0044],"text":"WA","confidence":1}]},{"language":"en","boundingBox":[0.891,2.0610,1.8537,2.0610,1.8537,2.1975,0.891,2.1975],"text":"Redmond, + WA","words":[{"boundingBox":[0.891,2.0610,1.5605,2.0610,1.5605,2.1975,0.891,2.1975],"text":"Redmond,","confidence":1},{"boundingBox":[1.6152,2.0682,1.8537,2.0682,1.8537,2.1744,1.6152,2.1744],"text":"WA","confidence":1}]},{"language":"en","boundingBox":[6.0105,2.1187,6.9371,2.1187,6.9371,2.2254,6.0105,2.2254],"text":"555-555-5555","words":[{"boundingBox":[6.0105,2.1187,6.9371,2.1187,6.9371,2.2254,6.0105,2.2254],"text":"555-555-5555","confidence":1}]},{"language":"en","boundingBox":[0.8852,2.2887,1.8119,2.2887,1.8119,2.3954,0.8852,2.3954],"text":"555-555-5555","words":[{"boundingBox":[0.8852,2.2887,1.8119,2.2887,1.8119,2.3954,0.8852,2.3954],"text":"555-555-5555","confidence":1}]},{"language":"en","boundingBox":[1.0943,3.0018,1.3842,3.0018,1.3842,3.1090,1.0943,3.1090],"text":"Item","words":[{"boundingBox":[1.0943,3.0018,1.3842,3.0018,1.3842,3.1090,1.0943,3.1090],"text":"Item","confidence":1}]},{"language":"en","boundingBox":[3.2527,2.9996,3.8367,2.9996,3.8367,3.1371,3.2527,3.1371],"text":"Quantity","words":[{"boundingBox":[3.2527,2.9996,3.8367,2.9996,3.8367,3.1371,3.2527,3.1371],"text":"Quantity","confidence":1}]},{"language":"en","boundingBox":[5.4230,2.9996,5.7372,2.9996,5.7372,3.1090,5.4230,3.1090],"text":"Price","words":[{"boundingBox":[5.4230,2.9996,5.7372,2.9996,5.7372,3.1090,5.4230,3.1090],"text":"Price","confidence":1}]},{"language":"en","boundingBox":[1.0832,3.2118,1.174,3.2118,1.174,3.3180,1.0832,3.3180],"text":"A","words":[{"boundingBox":[1.0832,3.2118,1.174,3.2118,1.174,3.3180,1.0832,3.3180],"text":"A","confidence":1}]},{"language":"en","boundingBox":[3.2589,3.2116,3.3202,3.2116,3.3202,3.3176,3.2589,3.3176],"text":"1","words":[{"boundingBox":[3.2589,3.2116,3.3202,3.2116,3.3202,3.3176,3.2589,3.3176],"text":"1","confidence":1}]},{"language":"en","boundingBox":[5.4232,3.2108,5.7784,3.2108,5.7784,3.3190,5.4232,3.3190],"text":"10.99","words":[{"boundingBox":[5.4232,3.2108,5.7784,3.2108,5.7784,3.3190,5.4232,3.3190],"text":"10.99","confidence":1}]},{"language":"en","boundingBox":[1.0943,3.4256,1.1637,3.4256,1.1637,3.5310,1.0943,3.5310],"text":"B","words":[{"boundingBox":[1.0943,3.4256,1.1637,3.4256,1.1637,3.5310,1.0943,3.5310],"text":"B","confidence":1}]},{"language":"en","boundingBox":[3.2541,3.4241,3.3199,3.4241,3.3199,3.5310,3.2541,3.5310],"text":"2","words":[{"boundingBox":[3.2541,3.4241,3.3199,3.4241,3.3199,3.5310,3.2541,3.5310],"text":"2","confidence":1}]},{"language":"en","boundingBox":[5.4232,3.4241,5.7789,3.4241,5.7789,3.5323,5.4232,3.5323],"text":"14.67","words":[{"boundingBox":[5.4232,3.4241,5.7789,3.4241,5.7789,3.5323,5.4232,3.5323],"text":"14.67","confidence":1}]},{"language":"en","boundingBox":[1.0882,3.6343,1.1647,3.6343,1.1647,3.7421,1.0882,3.7421],"text":"C","words":[{"boundingBox":[1.0882,3.6343,1.1647,3.6343,1.1647,3.7421,1.0882,3.7421],"text":"C","confidence":1}]},{"language":"en","boundingBox":[3.2486,3.6351,3.3244,3.6351,3.3244,3.7413,3.2486,3.7413],"text":"4","words":[{"boundingBox":[3.2486,3.6351,3.3244,3.6351,3.3244,3.7413,3.2486,3.7413],"text":"4","confidence":1}]},{"language":"en","boundingBox":[5.4232,3.6341,5.7800,3.6341,5.7800,3.7423,5.4232,3.7423],"text":"15.66","words":[{"boundingBox":[5.4232,3.6341,5.7800,3.6341,5.7800,3.7423,5.4232,3.7423],"text":"15.66","confidence":1}]},{"language":"en","boundingBox":[1.0943,3.8456,1.1753,3.8456,1.1753,3.9510,1.0943,3.9510],"text":"D","words":[{"boundingBox":[1.0943,3.8456,1.1753,3.8456,1.1753,3.9510,1.0943,3.9510],"text":"D","confidence":1}]},{"language":"en","boundingBox":[3.2589,3.8450,3.3202,3.8450,3.3202,3.9510,3.2589,3.9510],"text":"1","words":[{"boundingBox":[3.2589,3.8450,3.3202,3.8450,3.3202,3.9510,3.2589,3.9510],"text":"1","confidence":1}]},{"language":"en","boundingBox":[5.4232,3.8441,5.7809,3.8441,5.7809,3.9523,5.4232,3.9523],"text":"12.00","words":[{"boundingBox":[5.4232,3.8441,5.7809,3.8441,5.7809,3.9523,5.4232,3.9523],"text":"12.00","confidence":1}]},{"language":"en","boundingBox":[1.0943,4.0561,1.153,4.0561,1.153,4.1614,1.0943,4.1614],"text":"E","words":[{"boundingBox":[1.0943,4.0561,1.153,4.0561,1.153,4.1614,1.0943,4.1614],"text":"E","confidence":1}]},{"language":"en","boundingBox":[3.2486,4.0556,3.3244,4.0556,3.3244,4.1617,3.2486,4.1617],"text":"4","words":[{"boundingBox":[3.2486,4.0556,3.3244,4.0556,3.3244,4.1617,3.2486,4.1617],"text":"4","confidence":1}]},{"language":"en","boundingBox":[5.4232,4.0546,5.7810,4.0546,5.7810,4.1627,5.4232,4.1627],"text":"10.00","words":[{"boundingBox":[5.4232,4.0546,5.7810,4.0546,5.7810,4.1627,5.4232,4.1627],"text":"10.00","confidence":1}]},{"language":"en","boundingBox":[1.0943,4.2661,1.1497,4.2661,1.1497,4.3717,1.0943,4.3717],"text":"F","words":[{"boundingBox":[1.0943,4.2661,1.1497,4.2661,1.1497,4.3717,1.0943,4.3717],"text":"F","confidence":1}]},{"language":"en","boundingBox":[3.2534,4.2646,3.3226,4.2646,3.3226,4.3727,3.2534,4.3727],"text":"6","words":[{"boundingBox":[3.2534,4.2646,3.3226,4.2646,3.3226,4.3727,3.2534,4.3727],"text":"6","confidence":1}]},{"language":"en","boundingBox":[5.4232,4.2646,5.7809,4.2646,5.7809,4.3727,5.4232,4.3727],"text":"12.00","words":[{"boundingBox":[5.4232,4.2646,5.7809,4.2646,5.7809,4.3727,5.4232,4.3727],"text":"12.00","confidence":1}]},{"language":"en","boundingBox":[1.0877,4.4746,1.1735,4.4746,1.1735,4.5827,1.0877,4.5827],"text":"G","words":[{"boundingBox":[1.0877,4.4746,1.1735,4.4746,1.1735,4.5827,1.0877,4.5827],"text":"G","confidence":1}]},{"language":"en","boundingBox":[3.2514,4.4746,3.3224,4.4746,3.3224,4.5827,3.2514,4.5827],"text":"8","words":[{"boundingBox":[3.2514,4.4746,3.3224,4.4746,3.3224,4.5827,3.2514,4.5827],"text":"8","confidence":1}]},{"language":"en","boundingBox":[5.4184,4.4746,5.7810,4.4746,5.7810,4.5827,5.4184,4.5827],"text":"22.00","words":[{"boundingBox":[5.4184,4.4746,5.7810,4.4746,5.7810,4.5827,5.4184,4.5827],"text":"22.00","confidence":1}]},{"language":"en","boundingBox":[5.5075,4.8981,6.6320,4.8981,6.6320,5.0131,5.5075,5.0131],"text":"Subtotal: + 300.00","words":[{"boundingBox":[5.5075,4.8981,6.1249,4.8981,6.1249,5.0131,5.5075,5.0131],"text":"Subtotal:","confidence":1},{"boundingBox":[6.1794,4.9042,6.6320,4.9042,6.6320,5.0131,6.1794,5.0131],"text":"300.00","confidence":1}]},{"language":"en","boundingBox":[5.5034,5.1245,6.2022,5.1245,6.2022,5.2333,5.5034,5.2333],"text":"Tax: + 30.00","words":[{"boundingBox":[5.5034,5.1263,5.7812,5.1263,5.7812,5.2333,5.5034,5.2333],"text":"Tax:","confidence":1},{"boundingBox":[5.8360,5.1245,6.2022,5.1245,6.2022,5.2333,5.8360,5.2333],"text":"30.00","confidence":1}]},{"language":"en","boundingBox":[5.5034,5.3412,6.2587,5.3412,6.2587,5.481,5.5034,5.481],"text":"Tip: + 100.00","words":[{"boundingBox":[5.5034,5.3412,5.7515,5.3412,5.7515,5.481,5.5034,5.481],"text":"Tip:","confidence":1},{"boundingBox":[5.8110,5.3445,6.2587,5.3445,6.2587,5.4533,5.8110,5.4533],"text":"100.00","confidence":1}]},{"language":"en","boundingBox":[5.5034,5.5583,6.3987,5.5583,6.3987,5.6733,5.5034,5.6733],"text":"Total: + 430.00","words":[{"boundingBox":[5.5034,5.5583,5.8915,5.5583,5.8915,5.6733,5.5034,5.6733],"text":"Total:","confidence":1},{"boundingBox":[5.9420,5.5645,6.3987,5.5645,6.3987,5.6733,5.9420,5.6733],"text":"430.00","confidence":1}]},{"language":"en","boundingBox":[1.0055,6.6553,3.8342,6.6553,3.8342,6.7981,1.0055,6.7981],"text":"Signature: + ____ Bilbo Baggins__________","words":[{"boundingBox":[1.0055,6.6581,1.6987,6.6581,1.6987,6.7981,1.0055,6.7981],"text":"Signature:","confidence":1},{"boundingBox":[1.7470,6.7829,2.0809,6.7829,2.0809,6.7981,1.7470,6.7981],"text":"____","confidence":1},{"boundingBox":[2.0925,6.6553,2.4278,6.6553,2.4278,6.7703,2.0925,6.7703],"text":"Bilbo","confidence":1},{"boundingBox":[2.4823,6.6581,3.8342,6.6581,3.8342,6.7981,2.4823,6.7981],"text":"Baggins__________","confidence":1}]}]},{"page":2,"language":"en","angle":0,"width":8.4967,"height":10.9967,"unit":"inch","lines":[]},{"page":3,"language":"en","angle":0,"width":8.5,"height":11,"unit":"inch","lines":[{"language":"en","boundingBox":[0.8861,1.1217,2.3734,1.1217,2.3734,1.2812,0.8861,1.2812],"text":"Company + B Invoice","words":[{"boundingBox":[0.8861,1.1232,1.6203,1.1232,1.6203,1.2812,0.8861,1.2812],"text":"Company","confidence":1},{"boundingBox":[1.6836,1.1248,1.7640,1.1248,1.7640,1.2469,1.6836,1.2469],"text":"B","confidence":1},{"boundingBox":[1.8336,1.1217,2.3734,1.1217,2.3734,1.2485,1.8336,1.2485],"text":"Invoice","confidence":1}]},{"language":"en","boundingBox":[6.0211,1.0656,7.0357,1.0656,7.0357,1.2121,6.0211,1.2121],"text":"Invoice + For:","words":[{"boundingBox":[6.0211,1.0656,6.6362,1.0656,6.6362,1.2121,6.0211,1.2121],"text":"Invoice","confidence":1},{"boundingBox":[6.7147,1.0691,7.0357,1.0691,7.0357,1.2121,6.7147,1.2121],"text":"For:","confidence":1}]},{"language":"en","boundingBox":[0.8791,1.4825,1.5657,1.4825,1.5657,1.6155,0.8791,1.6155],"text":"Address:","words":[{"boundingBox":[0.8791,1.4825,1.5657,1.4825,1.5657,1.6155,0.8791,1.6155],"text":"Address:","confidence":1}]},{"language":"en","boundingBox":[6.0164,1.4506,6.9506,1.4506,6.9506,1.5931,6.0164,1.5931],"text":"Frodo + Baggins","words":[{"boundingBox":[6.0164,1.4506,6.3895,1.4506,6.3895,1.5649,6.0164,1.5649],"text":"Frodo","confidence":1},{"boundingBox":[6.4500,1.4556,6.9506,1.4556,6.9506,1.5931,6.4500,1.5931],"text":"Baggins","confidence":1}]},{"language":"en","boundingBox":[6.0165,1.6707,7.1006,1.6707,7.1006,1.7854,6.0165,1.7854],"text":"123 + Hobbit Lane","words":[{"boundingBox":[6.0165,1.6772,6.2434,1.6772,6.2434,1.7854,6.0165,1.7854],"text":"123","confidence":1},{"boundingBox":[6.3033,1.6707,6.7463,1.6707,6.7463,1.7854,6.3033,1.7854],"text":"Hobbit","confidence":1},{"boundingBox":[6.8030,1.6782,7.1006,1.6782,7.1006,1.7854,6.8030,1.7854],"text":"Lane","confidence":1}]},{"language":"en","boundingBox":[0.8852,1.8460,1.713,1.8460,1.713,1.9554,0.8852,1.9554],"text":"567 + Main St.","words":[{"boundingBox":[0.8852,1.8472,1.1203,1.8472,1.1203,1.9554,0.8852,1.9554],"text":"567","confidence":1},{"boundingBox":[1.1777,1.8460,1.5022,1.8460,1.5022,1.9554,1.1777,1.9554],"text":"Main","confidence":1},{"boundingBox":[1.5558,1.8472,1.713,1.8472,1.713,1.9554,1.5558,1.9554],"text":"St.","confidence":1}]},{"language":"en","boundingBox":[6.0164,1.8910,6.9793,1.8910,6.9793,2.0275,6.0164,2.0275],"text":"Redmond, + WA","words":[{"boundingBox":[6.0164,1.8910,6.6861,1.8910,6.6861,2.0275,6.0164,2.0275],"text":"Redmond,","confidence":1},{"boundingBox":[6.7408,1.8982,6.9793,1.8982,6.9793,2.0044,6.7408,2.0044],"text":"WA","confidence":1}]},{"language":"en","boundingBox":[0.891,2.0610,1.8537,2.0610,1.8537,2.1975,0.891,2.1975],"text":"Redmond, + WA","words":[{"boundingBox":[0.891,2.0610,1.5605,2.0610,1.5605,2.1975,0.891,2.1975],"text":"Redmond,","confidence":1},{"boundingBox":[1.6152,2.0682,1.8537,2.0682,1.8537,2.1744,1.6152,2.1744],"text":"WA","confidence":1}]},{"language":"en","boundingBox":[6.0105,2.1187,6.9371,2.1187,6.9371,2.2254,6.0105,2.2254],"text":"555-555-5555","words":[{"boundingBox":[6.0105,2.1187,6.9371,2.1187,6.9371,2.2254,6.0105,2.2254],"text":"555-555-5555","confidence":1}]},{"language":"en","boundingBox":[0.8852,2.2887,1.8119,2.2887,1.8119,2.3954,0.8852,2.3954],"text":"555-555-5555","words":[{"boundingBox":[0.8852,2.2887,1.8119,2.2887,1.8119,2.3954,0.8852,2.3954],"text":"555-555-5555","confidence":1}]},{"language":"en","boundingBox":[1.0943,3.0018,1.3842,3.0018,1.3842,3.1090,1.0943,3.1090],"text":"Item","words":[{"boundingBox":[1.0943,3.0018,1.3842,3.0018,1.3842,3.1090,1.0943,3.1090],"text":"Item","confidence":1}]},{"language":"en","boundingBox":[3.2527,2.9996,3.8367,2.9996,3.8367,3.1371,3.2527,3.1371],"text":"Quantity","words":[{"boundingBox":[3.2527,2.9996,3.8367,2.9996,3.8367,3.1371,3.2527,3.1371],"text":"Quantity","confidence":1}]},{"language":"en","boundingBox":[5.4230,2.9996,5.7372,2.9996,5.7372,3.1090,5.4230,3.1090],"text":"Price","words":[{"boundingBox":[5.4230,2.9996,5.7372,2.9996,5.7372,3.1090,5.4230,3.1090],"text":"Price","confidence":1}]},{"language":"en","boundingBox":[1.0832,3.2118,1.174,3.2118,1.174,3.3180,1.0832,3.3180],"text":"A","words":[{"boundingBox":[1.0832,3.2118,1.174,3.2118,1.174,3.3180,1.0832,3.3180],"text":"A","confidence":1}]},{"language":"en","boundingBox":[3.2589,3.2108,3.4067,3.2108,3.4067,3.3190,3.2589,3.3190],"text":"10","words":[{"boundingBox":[3.2589,3.2108,3.4067,3.2108,3.4067,3.3190,3.2589,3.3190],"text":"10","confidence":1}]},{"language":"en","boundingBox":[5.4232,3.2108,5.8617,3.2108,5.8617,3.3190,5.4232,3.3190],"text":"100.99","words":[{"boundingBox":[5.4232,3.2108,5.8617,3.2108,5.8617,3.3190,5.4232,3.3190],"text":"100.99","confidence":1}]},{"language":"en","boundingBox":[1.0943,3.4256,1.1637,3.4256,1.1637,3.5310,1.0943,3.5310],"text":"B","words":[{"boundingBox":[1.0943,3.4256,1.1637,3.4256,1.1637,3.5310,1.0943,3.5310],"text":"B","confidence":1}]},{"language":"en","boundingBox":[3.2541,3.4241,3.4067,3.4241,3.4067,3.5323,3.2541,3.5323],"text":"20","words":[{"boundingBox":[3.2541,3.4241,3.4067,3.4241,3.4067,3.5323,3.2541,3.5323],"text":"20","confidence":1}]},{"language":"en","boundingBox":[5.4232,3.4241,5.8622,3.4241,5.8622,3.5323,5.4232,3.5323],"text":"140.67","words":[{"boundingBox":[5.4232,3.4241,5.8622,3.4241,5.8622,3.5323,5.4232,3.5323],"text":"140.67","confidence":1}]},{"language":"en","boundingBox":[1.0882,3.6343,1.1647,3.6343,1.1647,3.7421,1.0882,3.7421],"text":"C","words":[{"boundingBox":[1.0882,3.6343,1.1647,3.6343,1.1647,3.7421,1.0882,3.7421],"text":"C","confidence":1}]},{"language":"en","boundingBox":[3.2486,3.6341,3.4067,3.6341,3.4067,3.7423,3.2486,3.7423],"text":"40","words":[{"boundingBox":[3.2486,3.6341,3.4067,3.6341,3.4067,3.7423,3.2486,3.7423],"text":"40","confidence":1}]},{"language":"en","boundingBox":[5.4232,3.6341,5.8634,3.6341,5.8634,3.7423,5.4232,3.7423],"text":"150.66","words":[{"boundingBox":[5.4232,3.6341,5.8634,3.6341,5.8634,3.7423,5.4232,3.7423],"text":"150.66","confidence":1}]},{"language":"en","boundingBox":[1.0943,3.8456,1.1753,3.8456,1.1753,3.9510,1.0943,3.9510],"text":"D","words":[{"boundingBox":[1.0943,3.8456,1.1753,3.8456,1.1753,3.9510,1.0943,3.9510],"text":"D","confidence":1}]},{"language":"en","boundingBox":[3.2589,3.8441,3.4067,3.8441,3.4067,3.9523,3.2589,3.9523],"text":"10","words":[{"boundingBox":[3.2589,3.8441,3.4067,3.8441,3.4067,3.9523,3.2589,3.9523],"text":"10","confidence":1}]},{"language":"en","boundingBox":[5.4232,3.8441,5.8642,3.8441,5.8642,3.9523,5.4232,3.9523],"text":"120.00","words":[{"boundingBox":[5.4232,3.8441,5.8642,3.8441,5.8642,3.9523,5.4232,3.9523],"text":"120.00","confidence":1}]},{"language":"en","boundingBox":[1.0943,4.0561,1.153,4.0561,1.153,4.1614,1.0943,4.1614],"text":"E","words":[{"boundingBox":[1.0943,4.0561,1.153,4.0561,1.153,4.1614,1.0943,4.1614],"text":"E","confidence":1}]},{"language":"en","boundingBox":[3.2486,4.0546,3.4067,4.0546,3.4067,4.1627,3.2486,4.1627],"text":"40","words":[{"boundingBox":[3.2486,4.0546,3.4067,4.0546,3.4067,4.1627,3.2486,4.1627],"text":"40","confidence":1}]},{"language":"en","boundingBox":[5.4232,4.0546,5.8644,4.0546,5.8644,4.1627,5.4232,4.1627],"text":"100.00","words":[{"boundingBox":[5.4232,4.0546,5.8644,4.0546,5.8644,4.1627,5.4232,4.1627],"text":"100.00","confidence":1}]},{"language":"en","boundingBox":[1.0943,4.2661,1.1497,4.2661,1.1497,4.3717,1.0943,4.3717],"text":"F","words":[{"boundingBox":[1.0943,4.2661,1.1497,4.2661,1.1497,4.3717,1.0943,4.3717],"text":"F","confidence":1}]},{"language":"en","boundingBox":[3.2534,4.2646,3.4067,4.2646,3.4067,4.3727,3.2534,4.3727],"text":"60","words":[{"boundingBox":[3.2534,4.2646,3.4067,4.2646,3.4067,4.3727,3.2534,4.3727],"text":"60","confidence":1}]},{"language":"en","boundingBox":[5.4232,4.2646,5.8642,4.2646,5.8642,4.3727,5.4232,4.3727],"text":"120.00","words":[{"boundingBox":[5.4232,4.2646,5.8642,4.2646,5.8642,4.3727,5.4232,4.3727],"text":"120.00","confidence":1}]},{"language":"en","boundingBox":[1.0877,4.4746,1.1735,4.4746,1.1735,4.5827,1.0877,4.5827],"text":"G","words":[{"boundingBox":[1.0877,4.4746,1.1735,4.4746,1.1735,4.5827,1.0877,4.5827],"text":"G","confidence":1}]},{"language":"en","boundingBox":[3.2514,4.4746,3.4067,4.4746,3.4067,4.5827,3.2514,4.5827],"text":"80","words":[{"boundingBox":[3.2514,4.4746,3.4067,4.4746,3.4067,4.5827,3.2514,4.5827],"text":"80","confidence":1}]},{"language":"en","boundingBox":[5.4184,4.4746,5.8644,4.4746,5.8644,4.5827,5.4184,4.5827],"text":"220.00","words":[{"boundingBox":[5.4184,4.4746,5.8644,4.4746,5.8644,4.5827,5.4184,4.5827],"text":"220.00","confidence":1}]},{"language":"en","boundingBox":[5.5075,4.8981,6.7158,4.8981,6.7158,5.0131,5.5075,5.0131],"text":"Subtotal: + 3000.00","words":[{"boundingBox":[5.5075,4.8981,6.1249,4.8981,6.1249,5.0131,5.5075,5.0131],"text":"Subtotal:","confidence":1},{"boundingBox":[6.1794,4.9042,6.7158,4.9042,6.7158,5.0131,6.1794,5.0131],"text":"3000.00","confidence":1}]},{"language":"en","boundingBox":[5.5034,5.1245,6.2887,5.1245,6.2887,5.2333,5.5034,5.2333],"text":"Tax: + 300.00","words":[{"boundingBox":[5.5034,5.1263,5.7812,5.1263,5.7812,5.2333,5.5034,5.2333],"text":"Tax:","confidence":1},{"boundingBox":[5.8360,5.1245,6.2887,5.1245,6.2887,5.2333,5.8360,5.2333],"text":"300.00","confidence":1}]},{"language":"en","boundingBox":[5.5034,5.3412,6.3422,5.3412,6.3422,5.481,5.5034,5.481],"text":"Tip: + 1000.00","words":[{"boundingBox":[5.5034,5.3412,5.7515,5.3412,5.7515,5.481,5.5034,5.481],"text":"Tip:","confidence":1},{"boundingBox":[5.8110,5.3445,6.3422,5.3445,6.3422,5.4533,5.8110,5.4533],"text":"1000.00","confidence":1}]},{"language":"en","boundingBox":[5.5034,5.5583,6.4825,5.5583,6.4825,5.6733,5.5034,5.6733],"text":"Total: + 4300.00","words":[{"boundingBox":[5.5034,5.5583,5.8915,5.5583,5.8915,5.6733,5.5034,5.6733],"text":"Total:","confidence":1},{"boundingBox":[5.9420,5.5645,6.4825,5.5645,6.4825,5.6733,5.9420,5.6733],"text":"4300.00","confidence":1}]},{"language":"en","boundingBox":[1.0055,6.6556,3.8842,6.6556,3.8842,6.7981,1.0055,6.7981],"text":"Signature: + ____ Frodo Baggins__________","words":[{"boundingBox":[1.0055,6.6581,1.6987,6.6581,1.6987,6.7981,1.0055,6.7981],"text":"Signature:","confidence":1},{"boundingBox":[1.7470,6.7829,2.0809,6.7829,2.0809,6.7981,1.7470,6.7981],"text":"____","confidence":1},{"boundingBox":[2.0925,6.6556,2.4778,6.6556,2.4778,6.7703,2.0925,6.7703],"text":"Frodo","confidence":1},{"boundingBox":[2.5325,6.6581,3.8842,6.6581,3.8842,6.7981,2.5325,6.7981],"text":"Baggins__________","confidence":1}]}]}],"pageResults":[{"page":1,"tables":[{"rows":8,"columns":3,"cells":[{"rowIndex":0,"columnIndex":0,"text":"Item","boundingBox":[1.0037,2.9443,3.1681,2.9443,3.1681,3.1543,1.0037,3.1543],"elements":["#/readResults/0/lines/10/words/0"]},{"rowIndex":0,"columnIndex":1,"text":"Quantity","boundingBox":[3.1681,2.9443,5.3353,2.9443,5.3353,3.1543,3.1681,3.1543],"elements":["#/readResults/0/lines/11/words/0"]},{"rowIndex":0,"columnIndex":2,"text":"Price","boundingBox":[5.3353,2.9443,7.4997,2.9443,7.4997,3.1543,5.3353,3.1543],"elements":["#/readResults/0/lines/12/words/0"]},{"rowIndex":1,"columnIndex":0,"text":"A","boundingBox":[1.0037,3.1543,3.1681,3.1543,3.1681,3.3643,1.0037,3.3643],"elements":["#/readResults/0/lines/13/words/0"]},{"rowIndex":1,"columnIndex":1,"text":"1","boundingBox":[3.1681,3.1543,5.3353,3.1543,5.3353,3.3643,3.1681,3.3643],"elements":["#/readResults/0/lines/14/words/0"]},{"rowIndex":1,"columnIndex":2,"text":"10.99","boundingBox":[5.3353,3.1543,7.4997,3.1543,7.4997,3.3643,5.3353,3.3643],"elements":["#/readResults/0/lines/15/words/0"]},{"rowIndex":2,"columnIndex":0,"text":"B","boundingBox":[1.0037,3.3643,3.1681,3.3643,3.1681,3.5776,1.0037,3.5776],"elements":["#/readResults/0/lines/16/words/0"]},{"rowIndex":2,"columnIndex":1,"text":"2","boundingBox":[3.1681,3.3643,5.3353,3.3643,5.3353,3.5776,3.1681,3.5776],"elements":["#/readResults/0/lines/17/words/0"]},{"rowIndex":2,"columnIndex":2,"text":"14.67","boundingBox":[5.3353,3.3643,7.4997,3.3643,7.4997,3.5776,5.3353,3.5776],"elements":["#/readResults/0/lines/18/words/0"]},{"rowIndex":3,"columnIndex":0,"text":"C","boundingBox":[1.0037,3.5776,3.1681,3.5776,3.1681,3.7876,1.0037,3.7876],"elements":["#/readResults/0/lines/19/words/0"]},{"rowIndex":3,"columnIndex":1,"text":"4","boundingBox":[3.1681,3.5776,5.3353,3.5776,5.3353,3.7876,3.1681,3.7876],"elements":["#/readResults/0/lines/20/words/0"]},{"rowIndex":3,"columnIndex":2,"text":"15.66","boundingBox":[5.3353,3.5776,7.4997,3.5776,7.4997,3.7876,5.3353,3.7876],"elements":["#/readResults/0/lines/21/words/0"]},{"rowIndex":4,"columnIndex":0,"text":"D","boundingBox":[1.0037,3.7876,3.1681,3.7876,3.1681,3.9976,1.0037,3.9976],"elements":["#/readResults/0/lines/22/words/0"]},{"rowIndex":4,"columnIndex":1,"text":"1","boundingBox":[3.1681,3.7876,5.3353,3.7876,5.3353,3.9976,3.1681,3.9976],"elements":["#/readResults/0/lines/23/words/0"]},{"rowIndex":4,"columnIndex":2,"text":"12.00","boundingBox":[5.3353,3.7876,7.4997,3.7876,7.4997,3.9976,5.3353,3.9976],"elements":["#/readResults/0/lines/24/words/0"]},{"rowIndex":5,"columnIndex":0,"text":"E","boundingBox":[1.0037,3.9976,3.1681,3.9976,3.1681,4.2081,1.0037,4.2081],"elements":["#/readResults/0/lines/25/words/0"]},{"rowIndex":5,"columnIndex":1,"text":"4","boundingBox":[3.1681,3.9976,5.3353,3.9976,5.3353,4.2081,3.1681,4.2081],"elements":["#/readResults/0/lines/26/words/0"]},{"rowIndex":5,"columnIndex":2,"text":"10.00","boundingBox":[5.3353,3.9976,7.4997,3.9976,7.4997,4.2081,5.3353,4.2081],"elements":["#/readResults/0/lines/27/words/0"]},{"rowIndex":6,"columnIndex":0,"text":"F","boundingBox":[1.0037,4.2081,3.1681,4.2081,3.1681,4.4181,1.0037,4.4181],"elements":["#/readResults/0/lines/28/words/0"]},{"rowIndex":6,"columnIndex":1,"text":"6","boundingBox":[3.1681,4.2081,5.3353,4.2081,5.3353,4.4181,3.1681,4.4181],"elements":["#/readResults/0/lines/29/words/0"]},{"rowIndex":6,"columnIndex":2,"text":"12.00","boundingBox":[5.3353,4.2081,7.4997,4.2081,7.4997,4.4181,5.3353,4.4181],"elements":["#/readResults/0/lines/30/words/0"]},{"rowIndex":7,"columnIndex":0,"text":"G","boundingBox":[1.0037,4.4181,3.1681,4.4181,3.1681,4.6281,1.0037,4.6281],"elements":["#/readResults/0/lines/31/words/0"]},{"rowIndex":7,"columnIndex":1,"text":"8","boundingBox":[3.1681,4.4181,5.3353,4.4181,5.3353,4.6281,3.1681,4.6281],"elements":["#/readResults/0/lines/32/words/0"]},{"rowIndex":7,"columnIndex":2,"text":"22.00","boundingBox":[5.3353,4.4181,7.4997,4.4181,7.4997,4.6281,5.3353,4.6281],"elements":["#/readResults/0/lines/33/words/0"]}]}]},{"page":2,"tables":[]},{"page":3,"tables":[{"rows":8,"columns":3,"cells":[{"rowIndex":0,"columnIndex":0,"text":"Item","boundingBox":[1.0037,2.9443,3.1681,2.9443,3.1681,3.1543,1.0037,3.1543],"elements":["#/readResults/2/lines/10/words/0"]},{"rowIndex":0,"columnIndex":1,"text":"Quantity","boundingBox":[3.1681,2.9443,5.3353,2.9443,5.3353,3.1543,3.1681,3.1543],"elements":["#/readResults/2/lines/11/words/0"]},{"rowIndex":0,"columnIndex":2,"text":"Price","boundingBox":[5.3353,2.9443,7.4997,2.9443,7.4997,3.1543,5.3353,3.1543],"elements":["#/readResults/2/lines/12/words/0"]},{"rowIndex":1,"columnIndex":0,"text":"A","boundingBox":[1.0037,3.1543,3.1681,3.1543,3.1681,3.3643,1.0037,3.3643],"elements":["#/readResults/2/lines/13/words/0"]},{"rowIndex":1,"columnIndex":1,"text":"10","boundingBox":[3.1681,3.1543,5.3353,3.1543,5.3353,3.3643,3.1681,3.3643],"elements":["#/readResults/2/lines/14/words/0"]},{"rowIndex":1,"columnIndex":2,"text":"100.99","boundingBox":[5.3353,3.1543,7.4997,3.1543,7.4997,3.3643,5.3353,3.3643],"elements":["#/readResults/2/lines/15/words/0"]},{"rowIndex":2,"columnIndex":0,"text":"B","boundingBox":[1.0037,3.3643,3.1681,3.3643,3.1681,3.5776,1.0037,3.5776],"elements":["#/readResults/2/lines/16/words/0"]},{"rowIndex":2,"columnIndex":1,"text":"20","boundingBox":[3.1681,3.3643,5.3353,3.3643,5.3353,3.5776,3.1681,3.5776],"elements":["#/readResults/2/lines/17/words/0"]},{"rowIndex":2,"columnIndex":2,"text":"140.67","boundingBox":[5.3353,3.3643,7.4997,3.3643,7.4997,3.5776,5.3353,3.5776],"elements":["#/readResults/2/lines/18/words/0"]},{"rowIndex":3,"columnIndex":0,"text":"C","boundingBox":[1.0037,3.5776,3.1681,3.5776,3.1681,3.7876,1.0037,3.7876],"elements":["#/readResults/2/lines/19/words/0"]},{"rowIndex":3,"columnIndex":1,"text":"40","boundingBox":[3.1681,3.5776,5.3353,3.5776,5.3353,3.7876,3.1681,3.7876],"elements":["#/readResults/2/lines/20/words/0"]},{"rowIndex":3,"columnIndex":2,"text":"150.66","boundingBox":[5.3353,3.5776,7.4997,3.5776,7.4997,3.7876,5.3353,3.7876],"elements":["#/readResults/2/lines/21/words/0"]},{"rowIndex":4,"columnIndex":0,"text":"D","boundingBox":[1.0037,3.7876,3.1681,3.7876,3.1681,3.9976,1.0037,3.9976],"elements":["#/readResults/2/lines/22/words/0"]},{"rowIndex":4,"columnIndex":1,"text":"10","boundingBox":[3.1681,3.7876,5.3353,3.7876,5.3353,3.9976,3.1681,3.9976],"elements":["#/readResults/2/lines/23/words/0"]},{"rowIndex":4,"columnIndex":2,"text":"120.00","boundingBox":[5.3353,3.7876,7.4997,3.7876,7.4997,3.9976,5.3353,3.9976],"elements":["#/readResults/2/lines/24/words/0"]},{"rowIndex":5,"columnIndex":0,"text":"E","boundingBox":[1.0037,3.9976,3.1681,3.9976,3.1681,4.2081,1.0037,4.2081],"elements":["#/readResults/2/lines/25/words/0"]},{"rowIndex":5,"columnIndex":1,"text":"40","boundingBox":[3.1681,3.9976,5.3353,3.9976,5.3353,4.2081,3.1681,4.2081],"elements":["#/readResults/2/lines/26/words/0"]},{"rowIndex":5,"columnIndex":2,"text":"100.00","boundingBox":[5.3353,3.9976,7.4997,3.9976,7.4997,4.2081,5.3353,4.2081],"elements":["#/readResults/2/lines/27/words/0"]},{"rowIndex":6,"columnIndex":0,"text":"F","boundingBox":[1.0037,4.2081,3.1681,4.2081,3.1681,4.4181,1.0037,4.4181],"elements":["#/readResults/2/lines/28/words/0"]},{"rowIndex":6,"columnIndex":1,"text":"60","boundingBox":[3.1681,4.2081,5.3353,4.2081,5.3353,4.4181,3.1681,4.4181],"elements":["#/readResults/2/lines/29/words/0"]},{"rowIndex":6,"columnIndex":2,"text":"120.00","boundingBox":[5.3353,4.2081,7.4997,4.2081,7.4997,4.4181,5.3353,4.4181],"elements":["#/readResults/2/lines/30/words/0"]},{"rowIndex":7,"columnIndex":0,"text":"G","boundingBox":[1.0037,4.4181,3.1681,4.4181,3.1681,4.6281,1.0037,4.6281],"elements":["#/readResults/2/lines/31/words/0"]},{"rowIndex":7,"columnIndex":1,"text":"80","boundingBox":[3.1681,4.4181,5.3353,4.4181,5.3353,4.6281,3.1681,4.6281],"elements":["#/readResults/2/lines/32/words/0"]},{"rowIndex":7,"columnIndex":2,"text":"220.00","boundingBox":[5.3353,4.4181,7.4997,4.4181,7.4997,4.6281,5.3353,4.6281],"elements":["#/readResults/2/lines/33/words/0"]}]}]}]}}' + headers: + apim-request-id: + - 4c398d35-637b-429a-9906-988686c5ce99 + content-type: + - application/json; charset=utf-8 + date: + - Mon, 27 Apr 2020 23:53:35 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + transfer-encoding: + - chunked + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '136' + status: + code: 200 + message: OK +version: 1 diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_content_from_url.test_content_multipage_url.yaml b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_content_from_url.test_content_multipage_url.yaml new file mode 100644 index 000000000000..2e60e97a6b43 --- /dev/null +++ b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_content_from_url.test_content_multipage_url.yaml @@ -0,0 +1,135 @@ +interactions: +- request: + body: '{"source": "https://raw.githubusercontent.com/Azure/azure-sdk-for-python/master/sdk/formrecognizer/azure-ai-formrecognizer/tests/sample_forms/training_multipage/multipage_invoice1.pdf"}' + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '116' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/layout/analyze + response: + body: + string: '' + headers: + apim-request-id: + - 7e640ce7-9357-4b9e-b884-c3d82f2686aa + content-length: + - '0' + date: + - Mon, 27 Apr 2020 23:53:39 GMT + operation-location: + - https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/layout/analyzeResults/7e640ce7-9357-4b9e-b884-c3d82f2686aa + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '477' + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/layout/analyzeResults/7e640ce7-9357-4b9e-b884-c3d82f2686aa + response: + body: + string: '{"status":"running","createdDateTime":"2020-04-27T23:53:39Z","lastUpdatedDateTime":"2020-04-27T23:53:44Z"}' + headers: + apim-request-id: + - 0802e965-3fcc-483f-9612-770948471515 + content-type: + - application/json; charset=utf-8 + date: + - Mon, 27 Apr 2020 23:53:44 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + transfer-encoding: + - chunked + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '28' + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/layout/analyzeResults/7e640ce7-9357-4b9e-b884-c3d82f2686aa + response: + body: + string: '{"status":"succeeded","createdDateTime":"2020-04-27T23:53:39Z","lastUpdatedDateTime":"2020-04-27T23:53:48Z","analyzeResult":{"version":"2.0.0","readResults":[{"page":1,"language":"en","angle":0,"width":8.5,"height":11,"unit":"inch","lines":[{"language":"en","boundingBox":[0.8861,1.1217,2.3783,1.1217,2.3783,1.2812,0.8861,1.2812],"text":"Company + A Invoice","words":[{"boundingBox":[0.8861,1.1232,1.6203,1.1232,1.6203,1.2812,0.8861,1.2812],"text":"Company","confidence":1},{"boundingBox":[1.6696,1.1242,1.7749,1.1242,1.7749,1.2473,1.6696,1.2473],"text":"A","confidence":1},{"boundingBox":[1.8389,1.1217,2.3783,1.1217,2.3783,1.2485,1.8389,1.2485],"text":"Invoice","confidence":1}]},{"language":"en","boundingBox":[6.0211,1.0656,7.0357,1.0656,7.0357,1.2121,6.0211,1.2121],"text":"Invoice + For:","words":[{"boundingBox":[6.0211,1.0656,6.6362,1.0656,6.6362,1.2121,6.0211,1.2121],"text":"Invoice","confidence":1},{"boundingBox":[6.7147,1.0691,7.0357,1.0691,7.0357,1.2121,6.7147,1.2121],"text":"For:","confidence":1}]},{"language":"en","boundingBox":[0.8791,1.4825,1.5657,1.4825,1.5657,1.6155,0.8791,1.6155],"text":"Address:","words":[{"boundingBox":[0.8791,1.4825,1.5657,1.4825,1.5657,1.6155,0.8791,1.6155],"text":"Address:","confidence":1}]},{"language":"en","boundingBox":[6.0164,1.4503,6.8967,1.4503,6.8967,1.5931,6.0164,1.5931],"text":"Bilbo + Baggins","words":[{"boundingBox":[6.0164,1.4503,6.3392,1.4503,6.3392,1.5649,6.0164,1.5649],"text":"Bilbo","confidence":1},{"boundingBox":[6.3960,1.4556,6.8967,1.4556,6.8967,1.5931,6.3960,1.5931],"text":"Baggins","confidence":1}]},{"language":"en","boundingBox":[6.0165,1.6707,7.1006,1.6707,7.1006,1.7854,6.0165,1.7854],"text":"123 + Hobbit Lane","words":[{"boundingBox":[6.0165,1.6772,6.2434,1.6772,6.2434,1.7854,6.0165,1.7854],"text":"123","confidence":1},{"boundingBox":[6.3033,1.6707,6.7463,1.6707,6.7463,1.7854,6.3033,1.7854],"text":"Hobbit","confidence":1},{"boundingBox":[6.8030,1.6782,7.1006,1.6782,7.1006,1.7854,6.8030,1.7854],"text":"Lane","confidence":1}]},{"language":"en","boundingBox":[0.8852,1.8460,1.713,1.8460,1.713,1.9554,0.8852,1.9554],"text":"567 + Main St.","words":[{"boundingBox":[0.8852,1.8472,1.1203,1.8472,1.1203,1.9554,0.8852,1.9554],"text":"567","confidence":1},{"boundingBox":[1.1777,1.8460,1.5022,1.8460,1.5022,1.9554,1.1777,1.9554],"text":"Main","confidence":1},{"boundingBox":[1.5558,1.8472,1.713,1.8472,1.713,1.9554,1.5558,1.9554],"text":"St.","confidence":1}]},{"language":"en","boundingBox":[6.0164,1.8910,6.9793,1.8910,6.9793,2.0275,6.0164,2.0275],"text":"Redmond, + WA","words":[{"boundingBox":[6.0164,1.8910,6.6861,1.8910,6.6861,2.0275,6.0164,2.0275],"text":"Redmond,","confidence":1},{"boundingBox":[6.7408,1.8982,6.9793,1.8982,6.9793,2.0044,6.7408,2.0044],"text":"WA","confidence":1}]},{"language":"en","boundingBox":[0.891,2.0610,1.8537,2.0610,1.8537,2.1975,0.891,2.1975],"text":"Redmond, + WA","words":[{"boundingBox":[0.891,2.0610,1.5605,2.0610,1.5605,2.1975,0.891,2.1975],"text":"Redmond,","confidence":1},{"boundingBox":[1.6152,2.0682,1.8537,2.0682,1.8537,2.1744,1.6152,2.1744],"text":"WA","confidence":1}]},{"language":"en","boundingBox":[6.0105,2.1187,6.9371,2.1187,6.9371,2.2254,6.0105,2.2254],"text":"555-555-5555","words":[{"boundingBox":[6.0105,2.1187,6.9371,2.1187,6.9371,2.2254,6.0105,2.2254],"text":"555-555-5555","confidence":1}]},{"language":"en","boundingBox":[0.8852,2.2887,1.8119,2.2887,1.8119,2.3954,0.8852,2.3954],"text":"555-555-5555","words":[{"boundingBox":[0.8852,2.2887,1.8119,2.2887,1.8119,2.3954,0.8852,2.3954],"text":"555-555-5555","confidence":1}]},{"language":"en","boundingBox":[1.0943,3.0018,1.3842,3.0018,1.3842,3.1090,1.0943,3.1090],"text":"Item","words":[{"boundingBox":[1.0943,3.0018,1.3842,3.0018,1.3842,3.1090,1.0943,3.1090],"text":"Item","confidence":1}]},{"language":"en","boundingBox":[3.2527,2.9996,3.8367,2.9996,3.8367,3.1371,3.2527,3.1371],"text":"Quantity","words":[{"boundingBox":[3.2527,2.9996,3.8367,2.9996,3.8367,3.1371,3.2527,3.1371],"text":"Quantity","confidence":1}]},{"language":"en","boundingBox":[5.4230,2.9996,5.7372,2.9996,5.7372,3.1090,5.4230,3.1090],"text":"Price","words":[{"boundingBox":[5.4230,2.9996,5.7372,2.9996,5.7372,3.1090,5.4230,3.1090],"text":"Price","confidence":1}]},{"language":"en","boundingBox":[1.0832,3.2118,1.174,3.2118,1.174,3.3180,1.0832,3.3180],"text":"A","words":[{"boundingBox":[1.0832,3.2118,1.174,3.2118,1.174,3.3180,1.0832,3.3180],"text":"A","confidence":1}]},{"language":"en","boundingBox":[3.2589,3.2116,3.3202,3.2116,3.3202,3.3176,3.2589,3.3176],"text":"1","words":[{"boundingBox":[3.2589,3.2116,3.3202,3.2116,3.3202,3.3176,3.2589,3.3176],"text":"1","confidence":1}]},{"language":"en","boundingBox":[5.4232,3.2108,5.7784,3.2108,5.7784,3.3190,5.4232,3.3190],"text":"10.99","words":[{"boundingBox":[5.4232,3.2108,5.7784,3.2108,5.7784,3.3190,5.4232,3.3190],"text":"10.99","confidence":1}]},{"language":"en","boundingBox":[1.0943,3.4256,1.1637,3.4256,1.1637,3.5310,1.0943,3.5310],"text":"B","words":[{"boundingBox":[1.0943,3.4256,1.1637,3.4256,1.1637,3.5310,1.0943,3.5310],"text":"B","confidence":1}]},{"language":"en","boundingBox":[3.2541,3.4241,3.3199,3.4241,3.3199,3.5310,3.2541,3.5310],"text":"2","words":[{"boundingBox":[3.2541,3.4241,3.3199,3.4241,3.3199,3.5310,3.2541,3.5310],"text":"2","confidence":1}]},{"language":"en","boundingBox":[5.4232,3.4241,5.7789,3.4241,5.7789,3.5323,5.4232,3.5323],"text":"14.67","words":[{"boundingBox":[5.4232,3.4241,5.7789,3.4241,5.7789,3.5323,5.4232,3.5323],"text":"14.67","confidence":1}]},{"language":"en","boundingBox":[1.0882,3.6343,1.1647,3.6343,1.1647,3.7421,1.0882,3.7421],"text":"C","words":[{"boundingBox":[1.0882,3.6343,1.1647,3.6343,1.1647,3.7421,1.0882,3.7421],"text":"C","confidence":1}]},{"language":"en","boundingBox":[3.2486,3.6351,3.3244,3.6351,3.3244,3.7413,3.2486,3.7413],"text":"4","words":[{"boundingBox":[3.2486,3.6351,3.3244,3.6351,3.3244,3.7413,3.2486,3.7413],"text":"4","confidence":1}]},{"language":"en","boundingBox":[5.4232,3.6341,5.7800,3.6341,5.7800,3.7423,5.4232,3.7423],"text":"15.66","words":[{"boundingBox":[5.4232,3.6341,5.7800,3.6341,5.7800,3.7423,5.4232,3.7423],"text":"15.66","confidence":1}]},{"language":"en","boundingBox":[1.0943,3.8456,1.1753,3.8456,1.1753,3.9510,1.0943,3.9510],"text":"D","words":[{"boundingBox":[1.0943,3.8456,1.1753,3.8456,1.1753,3.9510,1.0943,3.9510],"text":"D","confidence":1}]},{"language":"en","boundingBox":[3.2589,3.8450,3.3202,3.8450,3.3202,3.9510,3.2589,3.9510],"text":"1","words":[{"boundingBox":[3.2589,3.8450,3.3202,3.8450,3.3202,3.9510,3.2589,3.9510],"text":"1","confidence":1}]},{"language":"en","boundingBox":[5.4232,3.8441,5.7809,3.8441,5.7809,3.9523,5.4232,3.9523],"text":"12.00","words":[{"boundingBox":[5.4232,3.8441,5.7809,3.8441,5.7809,3.9523,5.4232,3.9523],"text":"12.00","confidence":1}]},{"language":"en","boundingBox":[1.0943,4.0561,1.153,4.0561,1.153,4.1614,1.0943,4.1614],"text":"E","words":[{"boundingBox":[1.0943,4.0561,1.153,4.0561,1.153,4.1614,1.0943,4.1614],"text":"E","confidence":1}]},{"language":"en","boundingBox":[3.2486,4.0556,3.3244,4.0556,3.3244,4.1617,3.2486,4.1617],"text":"4","words":[{"boundingBox":[3.2486,4.0556,3.3244,4.0556,3.3244,4.1617,3.2486,4.1617],"text":"4","confidence":1}]},{"language":"en","boundingBox":[5.4232,4.0546,5.7810,4.0546,5.7810,4.1627,5.4232,4.1627],"text":"10.00","words":[{"boundingBox":[5.4232,4.0546,5.7810,4.0546,5.7810,4.1627,5.4232,4.1627],"text":"10.00","confidence":1}]},{"language":"en","boundingBox":[1.0943,4.2661,1.1497,4.2661,1.1497,4.3717,1.0943,4.3717],"text":"F","words":[{"boundingBox":[1.0943,4.2661,1.1497,4.2661,1.1497,4.3717,1.0943,4.3717],"text":"F","confidence":1}]},{"language":"en","boundingBox":[3.2534,4.2646,3.3226,4.2646,3.3226,4.3727,3.2534,4.3727],"text":"6","words":[{"boundingBox":[3.2534,4.2646,3.3226,4.2646,3.3226,4.3727,3.2534,4.3727],"text":"6","confidence":1}]},{"language":"en","boundingBox":[5.4232,4.2646,5.7809,4.2646,5.7809,4.3727,5.4232,4.3727],"text":"12.00","words":[{"boundingBox":[5.4232,4.2646,5.7809,4.2646,5.7809,4.3727,5.4232,4.3727],"text":"12.00","confidence":1}]},{"language":"en","boundingBox":[1.0877,4.4746,1.1735,4.4746,1.1735,4.5827,1.0877,4.5827],"text":"G","words":[{"boundingBox":[1.0877,4.4746,1.1735,4.4746,1.1735,4.5827,1.0877,4.5827],"text":"G","confidence":1}]},{"language":"en","boundingBox":[3.2514,4.4746,3.3224,4.4746,3.3224,4.5827,3.2514,4.5827],"text":"8","words":[{"boundingBox":[3.2514,4.4746,3.3224,4.4746,3.3224,4.5827,3.2514,4.5827],"text":"8","confidence":1}]},{"language":"en","boundingBox":[5.4184,4.4746,5.7810,4.4746,5.7810,4.5827,5.4184,4.5827],"text":"22.00","words":[{"boundingBox":[5.4184,4.4746,5.7810,4.4746,5.7810,4.5827,5.4184,4.5827],"text":"22.00","confidence":1}]},{"language":"en","boundingBox":[5.5075,4.8981,6.6320,4.8981,6.6320,5.0131,5.5075,5.0131],"text":"Subtotal: + 300.00","words":[{"boundingBox":[5.5075,4.8981,6.1249,4.8981,6.1249,5.0131,5.5075,5.0131],"text":"Subtotal:","confidence":1},{"boundingBox":[6.1794,4.9042,6.6320,4.9042,6.6320,5.0131,6.1794,5.0131],"text":"300.00","confidence":1}]},{"language":"en","boundingBox":[5.5034,5.1245,6.2022,5.1245,6.2022,5.2333,5.5034,5.2333],"text":"Tax: + 30.00","words":[{"boundingBox":[5.5034,5.1263,5.7812,5.1263,5.7812,5.2333,5.5034,5.2333],"text":"Tax:","confidence":1},{"boundingBox":[5.8360,5.1245,6.2022,5.1245,6.2022,5.2333,5.8360,5.2333],"text":"30.00","confidence":1}]},{"language":"en","boundingBox":[5.5034,5.3412,6.2587,5.3412,6.2587,5.481,5.5034,5.481],"text":"Tip: + 100.00","words":[{"boundingBox":[5.5034,5.3412,5.7515,5.3412,5.7515,5.481,5.5034,5.481],"text":"Tip:","confidence":1},{"boundingBox":[5.8110,5.3445,6.2587,5.3445,6.2587,5.4533,5.8110,5.4533],"text":"100.00","confidence":1}]},{"language":"en","boundingBox":[5.5034,5.5583,6.3987,5.5583,6.3987,5.6733,5.5034,5.6733],"text":"Total: + 430.00","words":[{"boundingBox":[5.5034,5.5583,5.8915,5.5583,5.8915,5.6733,5.5034,5.6733],"text":"Total:","confidence":1},{"boundingBox":[5.9420,5.5645,6.3987,5.5645,6.3987,5.6733,5.9420,5.6733],"text":"430.00","confidence":1}]},{"language":"en","boundingBox":[1.0055,6.6553,3.8342,6.6553,3.8342,6.7981,1.0055,6.7981],"text":"Signature: + ____ Bilbo Baggins__________","words":[{"boundingBox":[1.0055,6.6581,1.6987,6.6581,1.6987,6.7981,1.0055,6.7981],"text":"Signature:","confidence":1},{"boundingBox":[1.7470,6.7829,2.0809,6.7829,2.0809,6.7981,1.7470,6.7981],"text":"____","confidence":1},{"boundingBox":[2.0925,6.6553,2.4278,6.6553,2.4278,6.7703,2.0925,6.7703],"text":"Bilbo","confidence":1},{"boundingBox":[2.4823,6.6581,3.8342,6.6581,3.8342,6.7981,2.4823,6.7981],"text":"Baggins__________","confidence":1}]}]},{"page":2,"language":"en","angle":0,"width":8.4967,"height":10.9967,"unit":"inch","lines":[]},{"page":3,"language":"en","angle":0,"width":8.5,"height":11,"unit":"inch","lines":[{"language":"en","boundingBox":[0.8861,1.1217,2.3734,1.1217,2.3734,1.2812,0.8861,1.2812],"text":"Company + B Invoice","words":[{"boundingBox":[0.8861,1.1232,1.6203,1.1232,1.6203,1.2812,0.8861,1.2812],"text":"Company","confidence":1},{"boundingBox":[1.6836,1.1248,1.7640,1.1248,1.7640,1.2469,1.6836,1.2469],"text":"B","confidence":1},{"boundingBox":[1.8336,1.1217,2.3734,1.1217,2.3734,1.2485,1.8336,1.2485],"text":"Invoice","confidence":1}]},{"language":"en","boundingBox":[6.0211,1.0656,7.0357,1.0656,7.0357,1.2121,6.0211,1.2121],"text":"Invoice + For:","words":[{"boundingBox":[6.0211,1.0656,6.6362,1.0656,6.6362,1.2121,6.0211,1.2121],"text":"Invoice","confidence":1},{"boundingBox":[6.7147,1.0691,7.0357,1.0691,7.0357,1.2121,6.7147,1.2121],"text":"For:","confidence":1}]},{"language":"en","boundingBox":[0.8791,1.4825,1.5657,1.4825,1.5657,1.6155,0.8791,1.6155],"text":"Address:","words":[{"boundingBox":[0.8791,1.4825,1.5657,1.4825,1.5657,1.6155,0.8791,1.6155],"text":"Address:","confidence":1}]},{"language":"en","boundingBox":[6.0164,1.4506,6.9506,1.4506,6.9506,1.5931,6.0164,1.5931],"text":"Frodo + Baggins","words":[{"boundingBox":[6.0164,1.4506,6.3895,1.4506,6.3895,1.5649,6.0164,1.5649],"text":"Frodo","confidence":1},{"boundingBox":[6.4500,1.4556,6.9506,1.4556,6.9506,1.5931,6.4500,1.5931],"text":"Baggins","confidence":1}]},{"language":"en","boundingBox":[6.0165,1.6707,7.1006,1.6707,7.1006,1.7854,6.0165,1.7854],"text":"123 + Hobbit Lane","words":[{"boundingBox":[6.0165,1.6772,6.2434,1.6772,6.2434,1.7854,6.0165,1.7854],"text":"123","confidence":1},{"boundingBox":[6.3033,1.6707,6.7463,1.6707,6.7463,1.7854,6.3033,1.7854],"text":"Hobbit","confidence":1},{"boundingBox":[6.8030,1.6782,7.1006,1.6782,7.1006,1.7854,6.8030,1.7854],"text":"Lane","confidence":1}]},{"language":"en","boundingBox":[0.8852,1.8460,1.713,1.8460,1.713,1.9554,0.8852,1.9554],"text":"567 + Main St.","words":[{"boundingBox":[0.8852,1.8472,1.1203,1.8472,1.1203,1.9554,0.8852,1.9554],"text":"567","confidence":1},{"boundingBox":[1.1777,1.8460,1.5022,1.8460,1.5022,1.9554,1.1777,1.9554],"text":"Main","confidence":1},{"boundingBox":[1.5558,1.8472,1.713,1.8472,1.713,1.9554,1.5558,1.9554],"text":"St.","confidence":1}]},{"language":"en","boundingBox":[6.0164,1.8910,6.9793,1.8910,6.9793,2.0275,6.0164,2.0275],"text":"Redmond, + WA","words":[{"boundingBox":[6.0164,1.8910,6.6861,1.8910,6.6861,2.0275,6.0164,2.0275],"text":"Redmond,","confidence":1},{"boundingBox":[6.7408,1.8982,6.9793,1.8982,6.9793,2.0044,6.7408,2.0044],"text":"WA","confidence":1}]},{"language":"en","boundingBox":[0.891,2.0610,1.8537,2.0610,1.8537,2.1975,0.891,2.1975],"text":"Redmond, + WA","words":[{"boundingBox":[0.891,2.0610,1.5605,2.0610,1.5605,2.1975,0.891,2.1975],"text":"Redmond,","confidence":1},{"boundingBox":[1.6152,2.0682,1.8537,2.0682,1.8537,2.1744,1.6152,2.1744],"text":"WA","confidence":1}]},{"language":"en","boundingBox":[6.0105,2.1187,6.9371,2.1187,6.9371,2.2254,6.0105,2.2254],"text":"555-555-5555","words":[{"boundingBox":[6.0105,2.1187,6.9371,2.1187,6.9371,2.2254,6.0105,2.2254],"text":"555-555-5555","confidence":1}]},{"language":"en","boundingBox":[0.8852,2.2887,1.8119,2.2887,1.8119,2.3954,0.8852,2.3954],"text":"555-555-5555","words":[{"boundingBox":[0.8852,2.2887,1.8119,2.2887,1.8119,2.3954,0.8852,2.3954],"text":"555-555-5555","confidence":1}]},{"language":"en","boundingBox":[1.0943,3.0018,1.3842,3.0018,1.3842,3.1090,1.0943,3.1090],"text":"Item","words":[{"boundingBox":[1.0943,3.0018,1.3842,3.0018,1.3842,3.1090,1.0943,3.1090],"text":"Item","confidence":1}]},{"language":"en","boundingBox":[3.2527,2.9996,3.8367,2.9996,3.8367,3.1371,3.2527,3.1371],"text":"Quantity","words":[{"boundingBox":[3.2527,2.9996,3.8367,2.9996,3.8367,3.1371,3.2527,3.1371],"text":"Quantity","confidence":1}]},{"language":"en","boundingBox":[5.4230,2.9996,5.7372,2.9996,5.7372,3.1090,5.4230,3.1090],"text":"Price","words":[{"boundingBox":[5.4230,2.9996,5.7372,2.9996,5.7372,3.1090,5.4230,3.1090],"text":"Price","confidence":1}]},{"language":"en","boundingBox":[1.0832,3.2118,1.174,3.2118,1.174,3.3180,1.0832,3.3180],"text":"A","words":[{"boundingBox":[1.0832,3.2118,1.174,3.2118,1.174,3.3180,1.0832,3.3180],"text":"A","confidence":1}]},{"language":"en","boundingBox":[3.2589,3.2108,3.4067,3.2108,3.4067,3.3190,3.2589,3.3190],"text":"10","words":[{"boundingBox":[3.2589,3.2108,3.4067,3.2108,3.4067,3.3190,3.2589,3.3190],"text":"10","confidence":1}]},{"language":"en","boundingBox":[5.4232,3.2108,5.8617,3.2108,5.8617,3.3190,5.4232,3.3190],"text":"100.99","words":[{"boundingBox":[5.4232,3.2108,5.8617,3.2108,5.8617,3.3190,5.4232,3.3190],"text":"100.99","confidence":1}]},{"language":"en","boundingBox":[1.0943,3.4256,1.1637,3.4256,1.1637,3.5310,1.0943,3.5310],"text":"B","words":[{"boundingBox":[1.0943,3.4256,1.1637,3.4256,1.1637,3.5310,1.0943,3.5310],"text":"B","confidence":1}]},{"language":"en","boundingBox":[3.2541,3.4241,3.4067,3.4241,3.4067,3.5323,3.2541,3.5323],"text":"20","words":[{"boundingBox":[3.2541,3.4241,3.4067,3.4241,3.4067,3.5323,3.2541,3.5323],"text":"20","confidence":1}]},{"language":"en","boundingBox":[5.4232,3.4241,5.8622,3.4241,5.8622,3.5323,5.4232,3.5323],"text":"140.67","words":[{"boundingBox":[5.4232,3.4241,5.8622,3.4241,5.8622,3.5323,5.4232,3.5323],"text":"140.67","confidence":1}]},{"language":"en","boundingBox":[1.0882,3.6343,1.1647,3.6343,1.1647,3.7421,1.0882,3.7421],"text":"C","words":[{"boundingBox":[1.0882,3.6343,1.1647,3.6343,1.1647,3.7421,1.0882,3.7421],"text":"C","confidence":1}]},{"language":"en","boundingBox":[3.2486,3.6341,3.4067,3.6341,3.4067,3.7423,3.2486,3.7423],"text":"40","words":[{"boundingBox":[3.2486,3.6341,3.4067,3.6341,3.4067,3.7423,3.2486,3.7423],"text":"40","confidence":1}]},{"language":"en","boundingBox":[5.4232,3.6341,5.8634,3.6341,5.8634,3.7423,5.4232,3.7423],"text":"150.66","words":[{"boundingBox":[5.4232,3.6341,5.8634,3.6341,5.8634,3.7423,5.4232,3.7423],"text":"150.66","confidence":1}]},{"language":"en","boundingBox":[1.0943,3.8456,1.1753,3.8456,1.1753,3.9510,1.0943,3.9510],"text":"D","words":[{"boundingBox":[1.0943,3.8456,1.1753,3.8456,1.1753,3.9510,1.0943,3.9510],"text":"D","confidence":1}]},{"language":"en","boundingBox":[3.2589,3.8441,3.4067,3.8441,3.4067,3.9523,3.2589,3.9523],"text":"10","words":[{"boundingBox":[3.2589,3.8441,3.4067,3.8441,3.4067,3.9523,3.2589,3.9523],"text":"10","confidence":1}]},{"language":"en","boundingBox":[5.4232,3.8441,5.8642,3.8441,5.8642,3.9523,5.4232,3.9523],"text":"120.00","words":[{"boundingBox":[5.4232,3.8441,5.8642,3.8441,5.8642,3.9523,5.4232,3.9523],"text":"120.00","confidence":1}]},{"language":"en","boundingBox":[1.0943,4.0561,1.153,4.0561,1.153,4.1614,1.0943,4.1614],"text":"E","words":[{"boundingBox":[1.0943,4.0561,1.153,4.0561,1.153,4.1614,1.0943,4.1614],"text":"E","confidence":1}]},{"language":"en","boundingBox":[3.2486,4.0546,3.4067,4.0546,3.4067,4.1627,3.2486,4.1627],"text":"40","words":[{"boundingBox":[3.2486,4.0546,3.4067,4.0546,3.4067,4.1627,3.2486,4.1627],"text":"40","confidence":1}]},{"language":"en","boundingBox":[5.4232,4.0546,5.8644,4.0546,5.8644,4.1627,5.4232,4.1627],"text":"100.00","words":[{"boundingBox":[5.4232,4.0546,5.8644,4.0546,5.8644,4.1627,5.4232,4.1627],"text":"100.00","confidence":1}]},{"language":"en","boundingBox":[1.0943,4.2661,1.1497,4.2661,1.1497,4.3717,1.0943,4.3717],"text":"F","words":[{"boundingBox":[1.0943,4.2661,1.1497,4.2661,1.1497,4.3717,1.0943,4.3717],"text":"F","confidence":1}]},{"language":"en","boundingBox":[3.2534,4.2646,3.4067,4.2646,3.4067,4.3727,3.2534,4.3727],"text":"60","words":[{"boundingBox":[3.2534,4.2646,3.4067,4.2646,3.4067,4.3727,3.2534,4.3727],"text":"60","confidence":1}]},{"language":"en","boundingBox":[5.4232,4.2646,5.8642,4.2646,5.8642,4.3727,5.4232,4.3727],"text":"120.00","words":[{"boundingBox":[5.4232,4.2646,5.8642,4.2646,5.8642,4.3727,5.4232,4.3727],"text":"120.00","confidence":1}]},{"language":"en","boundingBox":[1.0877,4.4746,1.1735,4.4746,1.1735,4.5827,1.0877,4.5827],"text":"G","words":[{"boundingBox":[1.0877,4.4746,1.1735,4.4746,1.1735,4.5827,1.0877,4.5827],"text":"G","confidence":1}]},{"language":"en","boundingBox":[3.2514,4.4746,3.4067,4.4746,3.4067,4.5827,3.2514,4.5827],"text":"80","words":[{"boundingBox":[3.2514,4.4746,3.4067,4.4746,3.4067,4.5827,3.2514,4.5827],"text":"80","confidence":1}]},{"language":"en","boundingBox":[5.4184,4.4746,5.8644,4.4746,5.8644,4.5827,5.4184,4.5827],"text":"220.00","words":[{"boundingBox":[5.4184,4.4746,5.8644,4.4746,5.8644,4.5827,5.4184,4.5827],"text":"220.00","confidence":1}]},{"language":"en","boundingBox":[5.5075,4.8981,6.7158,4.8981,6.7158,5.0131,5.5075,5.0131],"text":"Subtotal: + 3000.00","words":[{"boundingBox":[5.5075,4.8981,6.1249,4.8981,6.1249,5.0131,5.5075,5.0131],"text":"Subtotal:","confidence":1},{"boundingBox":[6.1794,4.9042,6.7158,4.9042,6.7158,5.0131,6.1794,5.0131],"text":"3000.00","confidence":1}]},{"language":"en","boundingBox":[5.5034,5.1245,6.2887,5.1245,6.2887,5.2333,5.5034,5.2333],"text":"Tax: + 300.00","words":[{"boundingBox":[5.5034,5.1263,5.7812,5.1263,5.7812,5.2333,5.5034,5.2333],"text":"Tax:","confidence":1},{"boundingBox":[5.8360,5.1245,6.2887,5.1245,6.2887,5.2333,5.8360,5.2333],"text":"300.00","confidence":1}]},{"language":"en","boundingBox":[5.5034,5.3412,6.3422,5.3412,6.3422,5.481,5.5034,5.481],"text":"Tip: + 1000.00","words":[{"boundingBox":[5.5034,5.3412,5.7515,5.3412,5.7515,5.481,5.5034,5.481],"text":"Tip:","confidence":1},{"boundingBox":[5.8110,5.3445,6.3422,5.3445,6.3422,5.4533,5.8110,5.4533],"text":"1000.00","confidence":1}]},{"language":"en","boundingBox":[5.5034,5.5583,6.4825,5.5583,6.4825,5.6733,5.5034,5.6733],"text":"Total: + 4300.00","words":[{"boundingBox":[5.5034,5.5583,5.8915,5.5583,5.8915,5.6733,5.5034,5.6733],"text":"Total:","confidence":1},{"boundingBox":[5.9420,5.5645,6.4825,5.5645,6.4825,5.6733,5.9420,5.6733],"text":"4300.00","confidence":1}]},{"language":"en","boundingBox":[1.0055,6.6556,3.8842,6.6556,3.8842,6.7981,1.0055,6.7981],"text":"Signature: + ____ Frodo Baggins__________","words":[{"boundingBox":[1.0055,6.6581,1.6987,6.6581,1.6987,6.7981,1.0055,6.7981],"text":"Signature:","confidence":1},{"boundingBox":[1.7470,6.7829,2.0809,6.7829,2.0809,6.7981,1.7470,6.7981],"text":"____","confidence":1},{"boundingBox":[2.0925,6.6556,2.4778,6.6556,2.4778,6.7703,2.0925,6.7703],"text":"Frodo","confidence":1},{"boundingBox":[2.5325,6.6581,3.8842,6.6581,3.8842,6.7981,2.5325,6.7981],"text":"Baggins__________","confidence":1}]}]}],"pageResults":[{"page":1,"tables":[{"rows":8,"columns":3,"cells":[{"rowIndex":0,"columnIndex":0,"text":"Item","boundingBox":[1.0037,2.9443,3.1681,2.9443,3.1681,3.1543,1.0037,3.1543],"elements":["#/readResults/0/lines/10/words/0"]},{"rowIndex":0,"columnIndex":1,"text":"Quantity","boundingBox":[3.1681,2.9443,5.3353,2.9443,5.3353,3.1543,3.1681,3.1543],"elements":["#/readResults/0/lines/11/words/0"]},{"rowIndex":0,"columnIndex":2,"text":"Price","boundingBox":[5.3353,2.9443,7.4997,2.9443,7.4997,3.1543,5.3353,3.1543],"elements":["#/readResults/0/lines/12/words/0"]},{"rowIndex":1,"columnIndex":0,"text":"A","boundingBox":[1.0037,3.1543,3.1681,3.1543,3.1681,3.3643,1.0037,3.3643],"elements":["#/readResults/0/lines/13/words/0"]},{"rowIndex":1,"columnIndex":1,"text":"1","boundingBox":[3.1681,3.1543,5.3353,3.1543,5.3353,3.3643,3.1681,3.3643],"elements":["#/readResults/0/lines/14/words/0"]},{"rowIndex":1,"columnIndex":2,"text":"10.99","boundingBox":[5.3353,3.1543,7.4997,3.1543,7.4997,3.3643,5.3353,3.3643],"elements":["#/readResults/0/lines/15/words/0"]},{"rowIndex":2,"columnIndex":0,"text":"B","boundingBox":[1.0037,3.3643,3.1681,3.3643,3.1681,3.5776,1.0037,3.5776],"elements":["#/readResults/0/lines/16/words/0"]},{"rowIndex":2,"columnIndex":1,"text":"2","boundingBox":[3.1681,3.3643,5.3353,3.3643,5.3353,3.5776,3.1681,3.5776],"elements":["#/readResults/0/lines/17/words/0"]},{"rowIndex":2,"columnIndex":2,"text":"14.67","boundingBox":[5.3353,3.3643,7.4997,3.3643,7.4997,3.5776,5.3353,3.5776],"elements":["#/readResults/0/lines/18/words/0"]},{"rowIndex":3,"columnIndex":0,"text":"C","boundingBox":[1.0037,3.5776,3.1681,3.5776,3.1681,3.7876,1.0037,3.7876],"elements":["#/readResults/0/lines/19/words/0"]},{"rowIndex":3,"columnIndex":1,"text":"4","boundingBox":[3.1681,3.5776,5.3353,3.5776,5.3353,3.7876,3.1681,3.7876],"elements":["#/readResults/0/lines/20/words/0"]},{"rowIndex":3,"columnIndex":2,"text":"15.66","boundingBox":[5.3353,3.5776,7.4997,3.5776,7.4997,3.7876,5.3353,3.7876],"elements":["#/readResults/0/lines/21/words/0"]},{"rowIndex":4,"columnIndex":0,"text":"D","boundingBox":[1.0037,3.7876,3.1681,3.7876,3.1681,3.9976,1.0037,3.9976],"elements":["#/readResults/0/lines/22/words/0"]},{"rowIndex":4,"columnIndex":1,"text":"1","boundingBox":[3.1681,3.7876,5.3353,3.7876,5.3353,3.9976,3.1681,3.9976],"elements":["#/readResults/0/lines/23/words/0"]},{"rowIndex":4,"columnIndex":2,"text":"12.00","boundingBox":[5.3353,3.7876,7.4997,3.7876,7.4997,3.9976,5.3353,3.9976],"elements":["#/readResults/0/lines/24/words/0"]},{"rowIndex":5,"columnIndex":0,"text":"E","boundingBox":[1.0037,3.9976,3.1681,3.9976,3.1681,4.2081,1.0037,4.2081],"elements":["#/readResults/0/lines/25/words/0"]},{"rowIndex":5,"columnIndex":1,"text":"4","boundingBox":[3.1681,3.9976,5.3353,3.9976,5.3353,4.2081,3.1681,4.2081],"elements":["#/readResults/0/lines/26/words/0"]},{"rowIndex":5,"columnIndex":2,"text":"10.00","boundingBox":[5.3353,3.9976,7.4997,3.9976,7.4997,4.2081,5.3353,4.2081],"elements":["#/readResults/0/lines/27/words/0"]},{"rowIndex":6,"columnIndex":0,"text":"F","boundingBox":[1.0037,4.2081,3.1681,4.2081,3.1681,4.4181,1.0037,4.4181],"elements":["#/readResults/0/lines/28/words/0"]},{"rowIndex":6,"columnIndex":1,"text":"6","boundingBox":[3.1681,4.2081,5.3353,4.2081,5.3353,4.4181,3.1681,4.4181],"elements":["#/readResults/0/lines/29/words/0"]},{"rowIndex":6,"columnIndex":2,"text":"12.00","boundingBox":[5.3353,4.2081,7.4997,4.2081,7.4997,4.4181,5.3353,4.4181],"elements":["#/readResults/0/lines/30/words/0"]},{"rowIndex":7,"columnIndex":0,"text":"G","boundingBox":[1.0037,4.4181,3.1681,4.4181,3.1681,4.6281,1.0037,4.6281],"elements":["#/readResults/0/lines/31/words/0"]},{"rowIndex":7,"columnIndex":1,"text":"8","boundingBox":[3.1681,4.4181,5.3353,4.4181,5.3353,4.6281,3.1681,4.6281],"elements":["#/readResults/0/lines/32/words/0"]},{"rowIndex":7,"columnIndex":2,"text":"22.00","boundingBox":[5.3353,4.4181,7.4997,4.4181,7.4997,4.6281,5.3353,4.6281],"elements":["#/readResults/0/lines/33/words/0"]}]}]},{"page":2,"tables":[]},{"page":3,"tables":[{"rows":8,"columns":3,"cells":[{"rowIndex":0,"columnIndex":0,"text":"Item","boundingBox":[1.0037,2.9443,3.1681,2.9443,3.1681,3.1543,1.0037,3.1543],"elements":["#/readResults/2/lines/10/words/0"]},{"rowIndex":0,"columnIndex":1,"text":"Quantity","boundingBox":[3.1681,2.9443,5.3353,2.9443,5.3353,3.1543,3.1681,3.1543],"elements":["#/readResults/2/lines/11/words/0"]},{"rowIndex":0,"columnIndex":2,"text":"Price","boundingBox":[5.3353,2.9443,7.4997,2.9443,7.4997,3.1543,5.3353,3.1543],"elements":["#/readResults/2/lines/12/words/0"]},{"rowIndex":1,"columnIndex":0,"text":"A","boundingBox":[1.0037,3.1543,3.1681,3.1543,3.1681,3.3643,1.0037,3.3643],"elements":["#/readResults/2/lines/13/words/0"]},{"rowIndex":1,"columnIndex":1,"text":"10","boundingBox":[3.1681,3.1543,5.3353,3.1543,5.3353,3.3643,3.1681,3.3643],"elements":["#/readResults/2/lines/14/words/0"]},{"rowIndex":1,"columnIndex":2,"text":"100.99","boundingBox":[5.3353,3.1543,7.4997,3.1543,7.4997,3.3643,5.3353,3.3643],"elements":["#/readResults/2/lines/15/words/0"]},{"rowIndex":2,"columnIndex":0,"text":"B","boundingBox":[1.0037,3.3643,3.1681,3.3643,3.1681,3.5776,1.0037,3.5776],"elements":["#/readResults/2/lines/16/words/0"]},{"rowIndex":2,"columnIndex":1,"text":"20","boundingBox":[3.1681,3.3643,5.3353,3.3643,5.3353,3.5776,3.1681,3.5776],"elements":["#/readResults/2/lines/17/words/0"]},{"rowIndex":2,"columnIndex":2,"text":"140.67","boundingBox":[5.3353,3.3643,7.4997,3.3643,7.4997,3.5776,5.3353,3.5776],"elements":["#/readResults/2/lines/18/words/0"]},{"rowIndex":3,"columnIndex":0,"text":"C","boundingBox":[1.0037,3.5776,3.1681,3.5776,3.1681,3.7876,1.0037,3.7876],"elements":["#/readResults/2/lines/19/words/0"]},{"rowIndex":3,"columnIndex":1,"text":"40","boundingBox":[3.1681,3.5776,5.3353,3.5776,5.3353,3.7876,3.1681,3.7876],"elements":["#/readResults/2/lines/20/words/0"]},{"rowIndex":3,"columnIndex":2,"text":"150.66","boundingBox":[5.3353,3.5776,7.4997,3.5776,7.4997,3.7876,5.3353,3.7876],"elements":["#/readResults/2/lines/21/words/0"]},{"rowIndex":4,"columnIndex":0,"text":"D","boundingBox":[1.0037,3.7876,3.1681,3.7876,3.1681,3.9976,1.0037,3.9976],"elements":["#/readResults/2/lines/22/words/0"]},{"rowIndex":4,"columnIndex":1,"text":"10","boundingBox":[3.1681,3.7876,5.3353,3.7876,5.3353,3.9976,3.1681,3.9976],"elements":["#/readResults/2/lines/23/words/0"]},{"rowIndex":4,"columnIndex":2,"text":"120.00","boundingBox":[5.3353,3.7876,7.4997,3.7876,7.4997,3.9976,5.3353,3.9976],"elements":["#/readResults/2/lines/24/words/0"]},{"rowIndex":5,"columnIndex":0,"text":"E","boundingBox":[1.0037,3.9976,3.1681,3.9976,3.1681,4.2081,1.0037,4.2081],"elements":["#/readResults/2/lines/25/words/0"]},{"rowIndex":5,"columnIndex":1,"text":"40","boundingBox":[3.1681,3.9976,5.3353,3.9976,5.3353,4.2081,3.1681,4.2081],"elements":["#/readResults/2/lines/26/words/0"]},{"rowIndex":5,"columnIndex":2,"text":"100.00","boundingBox":[5.3353,3.9976,7.4997,3.9976,7.4997,4.2081,5.3353,4.2081],"elements":["#/readResults/2/lines/27/words/0"]},{"rowIndex":6,"columnIndex":0,"text":"F","boundingBox":[1.0037,4.2081,3.1681,4.2081,3.1681,4.4181,1.0037,4.4181],"elements":["#/readResults/2/lines/28/words/0"]},{"rowIndex":6,"columnIndex":1,"text":"60","boundingBox":[3.1681,4.2081,5.3353,4.2081,5.3353,4.4181,3.1681,4.4181],"elements":["#/readResults/2/lines/29/words/0"]},{"rowIndex":6,"columnIndex":2,"text":"120.00","boundingBox":[5.3353,4.2081,7.4997,4.2081,7.4997,4.4181,5.3353,4.4181],"elements":["#/readResults/2/lines/30/words/0"]},{"rowIndex":7,"columnIndex":0,"text":"G","boundingBox":[1.0037,4.4181,3.1681,4.4181,3.1681,4.6281,1.0037,4.6281],"elements":["#/readResults/2/lines/31/words/0"]},{"rowIndex":7,"columnIndex":1,"text":"80","boundingBox":[3.1681,4.4181,5.3353,4.4181,5.3353,4.6281,3.1681,4.6281],"elements":["#/readResults/2/lines/32/words/0"]},{"rowIndex":7,"columnIndex":2,"text":"220.00","boundingBox":[5.3353,4.4181,7.4997,4.4181,7.4997,4.6281,5.3353,4.6281],"elements":["#/readResults/2/lines/33/words/0"]}]}]}]}}' + headers: + apim-request-id: + - b2350657-107a-405c-bd55-1dda354f91d5 + content-type: + - application/json; charset=utf-8 + date: + - Mon, 27 Apr 2020 23:53:49 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + transfer-encoding: + - chunked + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '127' + status: + code: 200 + message: OK +version: 1 diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_content_from_url_async.test_content_multipage_transform_url.yaml b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_content_from_url_async.test_content_multipage_transform_url.yaml new file mode 100644 index 000000000000..f4dce8abfe3f --- /dev/null +++ b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_content_from_url_async.test_content_multipage_transform_url.yaml @@ -0,0 +1,99 @@ +interactions: +- request: + body: '{"source": "https://raw.githubusercontent.com/Azure/azure-sdk-for-python/master/sdk/formrecognizer/azure-ai-formrecognizer/tests/sample_forms/training_multipage/multipage_invoice1.pdf"}' + headers: + Content-Length: + - '116' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/layout/analyze + response: + body: + string: '' + headers: + apim-request-id: 72d1f47c-f9d8-4a74-a92b-09966574c012 + content-length: '0' + date: Mon, 27 Apr 2020 23:57:22 GMT + operation-location: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/layout/analyzeResults/72d1f47c-f9d8-4a74-a92b-09966574c012 + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '618' + status: + code: 202 + message: Accepted + url: https://westus.api.cognitive.microsoft.com//formrecognizer/v2.0-preview/layout/analyze +- request: + body: null + headers: + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/layout/analyzeResults/72d1f47c-f9d8-4a74-a92b-09966574c012 + response: + body: + string: '{"status":"running","createdDateTime":"2020-04-27T23:57:23Z","lastUpdatedDateTime":"2020-04-27T23:57:27Z"}' + headers: + apim-request-id: 4ccf78f3-b906-4b1b-bf30-d02c46908e70 + content-type: application/json; charset=utf-8 + date: Mon, 27 Apr 2020 23:57:27 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + transfer-encoding: chunked + x-content-type-options: nosniff + x-envoy-upstream-service-time: '35' + status: + code: 200 + message: OK + url: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/layout/analyzeResults/72d1f47c-f9d8-4a74-a92b-09966574c012 +- request: + body: null + headers: + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/layout/analyzeResults/72d1f47c-f9d8-4a74-a92b-09966574c012 + response: + body: + string: '{"status":"succeeded","createdDateTime":"2020-04-27T23:57:23Z","lastUpdatedDateTime":"2020-04-27T23:57:32Z","analyzeResult":{"version":"2.0.0","readResults":[{"page":1,"language":"en","angle":0,"width":8.5,"height":11,"unit":"inch","lines":[{"language":"en","boundingBox":[0.8861,1.1217,2.3783,1.1217,2.3783,1.2812,0.8861,1.2812],"text":"Company + A Invoice","words":[{"boundingBox":[0.8861,1.1232,1.6203,1.1232,1.6203,1.2812,0.8861,1.2812],"text":"Company","confidence":1},{"boundingBox":[1.6696,1.1242,1.7749,1.1242,1.7749,1.2473,1.6696,1.2473],"text":"A","confidence":1},{"boundingBox":[1.8389,1.1217,2.3783,1.1217,2.3783,1.2485,1.8389,1.2485],"text":"Invoice","confidence":1}]},{"language":"en","boundingBox":[6.0211,1.0656,7.0357,1.0656,7.0357,1.2121,6.0211,1.2121],"text":"Invoice + For:","words":[{"boundingBox":[6.0211,1.0656,6.6362,1.0656,6.6362,1.2121,6.0211,1.2121],"text":"Invoice","confidence":1},{"boundingBox":[6.7147,1.0691,7.0357,1.0691,7.0357,1.2121,6.7147,1.2121],"text":"For:","confidence":1}]},{"language":"en","boundingBox":[0.8791,1.4825,1.5657,1.4825,1.5657,1.6155,0.8791,1.6155],"text":"Address:","words":[{"boundingBox":[0.8791,1.4825,1.5657,1.4825,1.5657,1.6155,0.8791,1.6155],"text":"Address:","confidence":1}]},{"language":"en","boundingBox":[6.0164,1.4503,6.8967,1.4503,6.8967,1.5931,6.0164,1.5931],"text":"Bilbo + Baggins","words":[{"boundingBox":[6.0164,1.4503,6.3392,1.4503,6.3392,1.5649,6.0164,1.5649],"text":"Bilbo","confidence":1},{"boundingBox":[6.3960,1.4556,6.8967,1.4556,6.8967,1.5931,6.3960,1.5931],"text":"Baggins","confidence":1}]},{"language":"en","boundingBox":[6.0165,1.6707,7.1006,1.6707,7.1006,1.7854,6.0165,1.7854],"text":"123 + Hobbit Lane","words":[{"boundingBox":[6.0165,1.6772,6.2434,1.6772,6.2434,1.7854,6.0165,1.7854],"text":"123","confidence":1},{"boundingBox":[6.3033,1.6707,6.7463,1.6707,6.7463,1.7854,6.3033,1.7854],"text":"Hobbit","confidence":1},{"boundingBox":[6.8030,1.6782,7.1006,1.6782,7.1006,1.7854,6.8030,1.7854],"text":"Lane","confidence":1}]},{"language":"en","boundingBox":[0.8852,1.8460,1.713,1.8460,1.713,1.9554,0.8852,1.9554],"text":"567 + Main St.","words":[{"boundingBox":[0.8852,1.8472,1.1203,1.8472,1.1203,1.9554,0.8852,1.9554],"text":"567","confidence":1},{"boundingBox":[1.1777,1.8460,1.5022,1.8460,1.5022,1.9554,1.1777,1.9554],"text":"Main","confidence":1},{"boundingBox":[1.5558,1.8472,1.713,1.8472,1.713,1.9554,1.5558,1.9554],"text":"St.","confidence":1}]},{"language":"en","boundingBox":[6.0164,1.8910,6.9793,1.8910,6.9793,2.0275,6.0164,2.0275],"text":"Redmond, + WA","words":[{"boundingBox":[6.0164,1.8910,6.6861,1.8910,6.6861,2.0275,6.0164,2.0275],"text":"Redmond,","confidence":1},{"boundingBox":[6.7408,1.8982,6.9793,1.8982,6.9793,2.0044,6.7408,2.0044],"text":"WA","confidence":1}]},{"language":"en","boundingBox":[0.891,2.0610,1.8537,2.0610,1.8537,2.1975,0.891,2.1975],"text":"Redmond, + WA","words":[{"boundingBox":[0.891,2.0610,1.5605,2.0610,1.5605,2.1975,0.891,2.1975],"text":"Redmond,","confidence":1},{"boundingBox":[1.6152,2.0682,1.8537,2.0682,1.8537,2.1744,1.6152,2.1744],"text":"WA","confidence":1}]},{"language":"en","boundingBox":[6.0105,2.1187,6.9371,2.1187,6.9371,2.2254,6.0105,2.2254],"text":"555-555-5555","words":[{"boundingBox":[6.0105,2.1187,6.9371,2.1187,6.9371,2.2254,6.0105,2.2254],"text":"555-555-5555","confidence":1}]},{"language":"en","boundingBox":[0.8852,2.2887,1.8119,2.2887,1.8119,2.3954,0.8852,2.3954],"text":"555-555-5555","words":[{"boundingBox":[0.8852,2.2887,1.8119,2.2887,1.8119,2.3954,0.8852,2.3954],"text":"555-555-5555","confidence":1}]},{"language":"en","boundingBox":[1.0943,3.0018,1.3842,3.0018,1.3842,3.1090,1.0943,3.1090],"text":"Item","words":[{"boundingBox":[1.0943,3.0018,1.3842,3.0018,1.3842,3.1090,1.0943,3.1090],"text":"Item","confidence":1}]},{"language":"en","boundingBox":[3.2527,2.9996,3.8367,2.9996,3.8367,3.1371,3.2527,3.1371],"text":"Quantity","words":[{"boundingBox":[3.2527,2.9996,3.8367,2.9996,3.8367,3.1371,3.2527,3.1371],"text":"Quantity","confidence":1}]},{"language":"en","boundingBox":[5.4230,2.9996,5.7372,2.9996,5.7372,3.1090,5.4230,3.1090],"text":"Price","words":[{"boundingBox":[5.4230,2.9996,5.7372,2.9996,5.7372,3.1090,5.4230,3.1090],"text":"Price","confidence":1}]},{"language":"en","boundingBox":[1.0832,3.2118,1.174,3.2118,1.174,3.3180,1.0832,3.3180],"text":"A","words":[{"boundingBox":[1.0832,3.2118,1.174,3.2118,1.174,3.3180,1.0832,3.3180],"text":"A","confidence":1}]},{"language":"en","boundingBox":[3.2589,3.2116,3.3202,3.2116,3.3202,3.3176,3.2589,3.3176],"text":"1","words":[{"boundingBox":[3.2589,3.2116,3.3202,3.2116,3.3202,3.3176,3.2589,3.3176],"text":"1","confidence":1}]},{"language":"en","boundingBox":[5.4232,3.2108,5.7784,3.2108,5.7784,3.3190,5.4232,3.3190],"text":"10.99","words":[{"boundingBox":[5.4232,3.2108,5.7784,3.2108,5.7784,3.3190,5.4232,3.3190],"text":"10.99","confidence":1}]},{"language":"en","boundingBox":[1.0943,3.4256,1.1637,3.4256,1.1637,3.5310,1.0943,3.5310],"text":"B","words":[{"boundingBox":[1.0943,3.4256,1.1637,3.4256,1.1637,3.5310,1.0943,3.5310],"text":"B","confidence":1}]},{"language":"en","boundingBox":[3.2541,3.4241,3.3199,3.4241,3.3199,3.5310,3.2541,3.5310],"text":"2","words":[{"boundingBox":[3.2541,3.4241,3.3199,3.4241,3.3199,3.5310,3.2541,3.5310],"text":"2","confidence":1}]},{"language":"en","boundingBox":[5.4232,3.4241,5.7789,3.4241,5.7789,3.5323,5.4232,3.5323],"text":"14.67","words":[{"boundingBox":[5.4232,3.4241,5.7789,3.4241,5.7789,3.5323,5.4232,3.5323],"text":"14.67","confidence":1}]},{"language":"en","boundingBox":[1.0882,3.6343,1.1647,3.6343,1.1647,3.7421,1.0882,3.7421],"text":"C","words":[{"boundingBox":[1.0882,3.6343,1.1647,3.6343,1.1647,3.7421,1.0882,3.7421],"text":"C","confidence":1}]},{"language":"en","boundingBox":[3.2486,3.6351,3.3244,3.6351,3.3244,3.7413,3.2486,3.7413],"text":"4","words":[{"boundingBox":[3.2486,3.6351,3.3244,3.6351,3.3244,3.7413,3.2486,3.7413],"text":"4","confidence":1}]},{"language":"en","boundingBox":[5.4232,3.6341,5.7800,3.6341,5.7800,3.7423,5.4232,3.7423],"text":"15.66","words":[{"boundingBox":[5.4232,3.6341,5.7800,3.6341,5.7800,3.7423,5.4232,3.7423],"text":"15.66","confidence":1}]},{"language":"en","boundingBox":[1.0943,3.8456,1.1753,3.8456,1.1753,3.9510,1.0943,3.9510],"text":"D","words":[{"boundingBox":[1.0943,3.8456,1.1753,3.8456,1.1753,3.9510,1.0943,3.9510],"text":"D","confidence":1}]},{"language":"en","boundingBox":[3.2589,3.8450,3.3202,3.8450,3.3202,3.9510,3.2589,3.9510],"text":"1","words":[{"boundingBox":[3.2589,3.8450,3.3202,3.8450,3.3202,3.9510,3.2589,3.9510],"text":"1","confidence":1}]},{"language":"en","boundingBox":[5.4232,3.8441,5.7809,3.8441,5.7809,3.9523,5.4232,3.9523],"text":"12.00","words":[{"boundingBox":[5.4232,3.8441,5.7809,3.8441,5.7809,3.9523,5.4232,3.9523],"text":"12.00","confidence":1}]},{"language":"en","boundingBox":[1.0943,4.0561,1.153,4.0561,1.153,4.1614,1.0943,4.1614],"text":"E","words":[{"boundingBox":[1.0943,4.0561,1.153,4.0561,1.153,4.1614,1.0943,4.1614],"text":"E","confidence":1}]},{"language":"en","boundingBox":[3.2486,4.0556,3.3244,4.0556,3.3244,4.1617,3.2486,4.1617],"text":"4","words":[{"boundingBox":[3.2486,4.0556,3.3244,4.0556,3.3244,4.1617,3.2486,4.1617],"text":"4","confidence":1}]},{"language":"en","boundingBox":[5.4232,4.0546,5.7810,4.0546,5.7810,4.1627,5.4232,4.1627],"text":"10.00","words":[{"boundingBox":[5.4232,4.0546,5.7810,4.0546,5.7810,4.1627,5.4232,4.1627],"text":"10.00","confidence":1}]},{"language":"en","boundingBox":[1.0943,4.2661,1.1497,4.2661,1.1497,4.3717,1.0943,4.3717],"text":"F","words":[{"boundingBox":[1.0943,4.2661,1.1497,4.2661,1.1497,4.3717,1.0943,4.3717],"text":"F","confidence":1}]},{"language":"en","boundingBox":[3.2534,4.2646,3.3226,4.2646,3.3226,4.3727,3.2534,4.3727],"text":"6","words":[{"boundingBox":[3.2534,4.2646,3.3226,4.2646,3.3226,4.3727,3.2534,4.3727],"text":"6","confidence":1}]},{"language":"en","boundingBox":[5.4232,4.2646,5.7809,4.2646,5.7809,4.3727,5.4232,4.3727],"text":"12.00","words":[{"boundingBox":[5.4232,4.2646,5.7809,4.2646,5.7809,4.3727,5.4232,4.3727],"text":"12.00","confidence":1}]},{"language":"en","boundingBox":[1.0877,4.4746,1.1735,4.4746,1.1735,4.5827,1.0877,4.5827],"text":"G","words":[{"boundingBox":[1.0877,4.4746,1.1735,4.4746,1.1735,4.5827,1.0877,4.5827],"text":"G","confidence":1}]},{"language":"en","boundingBox":[3.2514,4.4746,3.3224,4.4746,3.3224,4.5827,3.2514,4.5827],"text":"8","words":[{"boundingBox":[3.2514,4.4746,3.3224,4.4746,3.3224,4.5827,3.2514,4.5827],"text":"8","confidence":1}]},{"language":"en","boundingBox":[5.4184,4.4746,5.7810,4.4746,5.7810,4.5827,5.4184,4.5827],"text":"22.00","words":[{"boundingBox":[5.4184,4.4746,5.7810,4.4746,5.7810,4.5827,5.4184,4.5827],"text":"22.00","confidence":1}]},{"language":"en","boundingBox":[5.5075,4.8981,6.6320,4.8981,6.6320,5.0131,5.5075,5.0131],"text":"Subtotal: + 300.00","words":[{"boundingBox":[5.5075,4.8981,6.1249,4.8981,6.1249,5.0131,5.5075,5.0131],"text":"Subtotal:","confidence":1},{"boundingBox":[6.1794,4.9042,6.6320,4.9042,6.6320,5.0131,6.1794,5.0131],"text":"300.00","confidence":1}]},{"language":"en","boundingBox":[5.5034,5.1245,6.2022,5.1245,6.2022,5.2333,5.5034,5.2333],"text":"Tax: + 30.00","words":[{"boundingBox":[5.5034,5.1263,5.7812,5.1263,5.7812,5.2333,5.5034,5.2333],"text":"Tax:","confidence":1},{"boundingBox":[5.8360,5.1245,6.2022,5.1245,6.2022,5.2333,5.8360,5.2333],"text":"30.00","confidence":1}]},{"language":"en","boundingBox":[5.5034,5.3412,6.2587,5.3412,6.2587,5.481,5.5034,5.481],"text":"Tip: + 100.00","words":[{"boundingBox":[5.5034,5.3412,5.7515,5.3412,5.7515,5.481,5.5034,5.481],"text":"Tip:","confidence":1},{"boundingBox":[5.8110,5.3445,6.2587,5.3445,6.2587,5.4533,5.8110,5.4533],"text":"100.00","confidence":1}]},{"language":"en","boundingBox":[5.5034,5.5583,6.3987,5.5583,6.3987,5.6733,5.5034,5.6733],"text":"Total: + 430.00","words":[{"boundingBox":[5.5034,5.5583,5.8915,5.5583,5.8915,5.6733,5.5034,5.6733],"text":"Total:","confidence":1},{"boundingBox":[5.9420,5.5645,6.3987,5.5645,6.3987,5.6733,5.9420,5.6733],"text":"430.00","confidence":1}]},{"language":"en","boundingBox":[1.0055,6.6553,3.8342,6.6553,3.8342,6.7981,1.0055,6.7981],"text":"Signature: + ____ Bilbo Baggins__________","words":[{"boundingBox":[1.0055,6.6581,1.6987,6.6581,1.6987,6.7981,1.0055,6.7981],"text":"Signature:","confidence":1},{"boundingBox":[1.7470,6.7829,2.0809,6.7829,2.0809,6.7981,1.7470,6.7981],"text":"____","confidence":1},{"boundingBox":[2.0925,6.6553,2.4278,6.6553,2.4278,6.7703,2.0925,6.7703],"text":"Bilbo","confidence":1},{"boundingBox":[2.4823,6.6581,3.8342,6.6581,3.8342,6.7981,2.4823,6.7981],"text":"Baggins__________","confidence":1}]}]},{"page":2,"language":"en","angle":0,"width":8.4967,"height":10.9967,"unit":"inch","lines":[]},{"page":3,"language":"en","angle":0,"width":8.5,"height":11,"unit":"inch","lines":[{"language":"en","boundingBox":[0.8861,1.1217,2.3734,1.1217,2.3734,1.2812,0.8861,1.2812],"text":"Company + B Invoice","words":[{"boundingBox":[0.8861,1.1232,1.6203,1.1232,1.6203,1.2812,0.8861,1.2812],"text":"Company","confidence":1},{"boundingBox":[1.6836,1.1248,1.7640,1.1248,1.7640,1.2469,1.6836,1.2469],"text":"B","confidence":1},{"boundingBox":[1.8336,1.1217,2.3734,1.1217,2.3734,1.2485,1.8336,1.2485],"text":"Invoice","confidence":1}]},{"language":"en","boundingBox":[6.0211,1.0656,7.0357,1.0656,7.0357,1.2121,6.0211,1.2121],"text":"Invoice + For:","words":[{"boundingBox":[6.0211,1.0656,6.6362,1.0656,6.6362,1.2121,6.0211,1.2121],"text":"Invoice","confidence":1},{"boundingBox":[6.7147,1.0691,7.0357,1.0691,7.0357,1.2121,6.7147,1.2121],"text":"For:","confidence":1}]},{"language":"en","boundingBox":[0.8791,1.4825,1.5657,1.4825,1.5657,1.6155,0.8791,1.6155],"text":"Address:","words":[{"boundingBox":[0.8791,1.4825,1.5657,1.4825,1.5657,1.6155,0.8791,1.6155],"text":"Address:","confidence":1}]},{"language":"en","boundingBox":[6.0164,1.4506,6.9506,1.4506,6.9506,1.5931,6.0164,1.5931],"text":"Frodo + Baggins","words":[{"boundingBox":[6.0164,1.4506,6.3895,1.4506,6.3895,1.5649,6.0164,1.5649],"text":"Frodo","confidence":1},{"boundingBox":[6.4500,1.4556,6.9506,1.4556,6.9506,1.5931,6.4500,1.5931],"text":"Baggins","confidence":1}]},{"language":"en","boundingBox":[6.0165,1.6707,7.1006,1.6707,7.1006,1.7854,6.0165,1.7854],"text":"123 + Hobbit Lane","words":[{"boundingBox":[6.0165,1.6772,6.2434,1.6772,6.2434,1.7854,6.0165,1.7854],"text":"123","confidence":1},{"boundingBox":[6.3033,1.6707,6.7463,1.6707,6.7463,1.7854,6.3033,1.7854],"text":"Hobbit","confidence":1},{"boundingBox":[6.8030,1.6782,7.1006,1.6782,7.1006,1.7854,6.8030,1.7854],"text":"Lane","confidence":1}]},{"language":"en","boundingBox":[0.8852,1.8460,1.713,1.8460,1.713,1.9554,0.8852,1.9554],"text":"567 + Main St.","words":[{"boundingBox":[0.8852,1.8472,1.1203,1.8472,1.1203,1.9554,0.8852,1.9554],"text":"567","confidence":1},{"boundingBox":[1.1777,1.8460,1.5022,1.8460,1.5022,1.9554,1.1777,1.9554],"text":"Main","confidence":1},{"boundingBox":[1.5558,1.8472,1.713,1.8472,1.713,1.9554,1.5558,1.9554],"text":"St.","confidence":1}]},{"language":"en","boundingBox":[6.0164,1.8910,6.9793,1.8910,6.9793,2.0275,6.0164,2.0275],"text":"Redmond, + WA","words":[{"boundingBox":[6.0164,1.8910,6.6861,1.8910,6.6861,2.0275,6.0164,2.0275],"text":"Redmond,","confidence":1},{"boundingBox":[6.7408,1.8982,6.9793,1.8982,6.9793,2.0044,6.7408,2.0044],"text":"WA","confidence":1}]},{"language":"en","boundingBox":[0.891,2.0610,1.8537,2.0610,1.8537,2.1975,0.891,2.1975],"text":"Redmond, + WA","words":[{"boundingBox":[0.891,2.0610,1.5605,2.0610,1.5605,2.1975,0.891,2.1975],"text":"Redmond,","confidence":1},{"boundingBox":[1.6152,2.0682,1.8537,2.0682,1.8537,2.1744,1.6152,2.1744],"text":"WA","confidence":1}]},{"language":"en","boundingBox":[6.0105,2.1187,6.9371,2.1187,6.9371,2.2254,6.0105,2.2254],"text":"555-555-5555","words":[{"boundingBox":[6.0105,2.1187,6.9371,2.1187,6.9371,2.2254,6.0105,2.2254],"text":"555-555-5555","confidence":1}]},{"language":"en","boundingBox":[0.8852,2.2887,1.8119,2.2887,1.8119,2.3954,0.8852,2.3954],"text":"555-555-5555","words":[{"boundingBox":[0.8852,2.2887,1.8119,2.2887,1.8119,2.3954,0.8852,2.3954],"text":"555-555-5555","confidence":1}]},{"language":"en","boundingBox":[1.0943,3.0018,1.3842,3.0018,1.3842,3.1090,1.0943,3.1090],"text":"Item","words":[{"boundingBox":[1.0943,3.0018,1.3842,3.0018,1.3842,3.1090,1.0943,3.1090],"text":"Item","confidence":1}]},{"language":"en","boundingBox":[3.2527,2.9996,3.8367,2.9996,3.8367,3.1371,3.2527,3.1371],"text":"Quantity","words":[{"boundingBox":[3.2527,2.9996,3.8367,2.9996,3.8367,3.1371,3.2527,3.1371],"text":"Quantity","confidence":1}]},{"language":"en","boundingBox":[5.4230,2.9996,5.7372,2.9996,5.7372,3.1090,5.4230,3.1090],"text":"Price","words":[{"boundingBox":[5.4230,2.9996,5.7372,2.9996,5.7372,3.1090,5.4230,3.1090],"text":"Price","confidence":1}]},{"language":"en","boundingBox":[1.0832,3.2118,1.174,3.2118,1.174,3.3180,1.0832,3.3180],"text":"A","words":[{"boundingBox":[1.0832,3.2118,1.174,3.2118,1.174,3.3180,1.0832,3.3180],"text":"A","confidence":1}]},{"language":"en","boundingBox":[3.2589,3.2108,3.4067,3.2108,3.4067,3.3190,3.2589,3.3190],"text":"10","words":[{"boundingBox":[3.2589,3.2108,3.4067,3.2108,3.4067,3.3190,3.2589,3.3190],"text":"10","confidence":1}]},{"language":"en","boundingBox":[5.4232,3.2108,5.8617,3.2108,5.8617,3.3190,5.4232,3.3190],"text":"100.99","words":[{"boundingBox":[5.4232,3.2108,5.8617,3.2108,5.8617,3.3190,5.4232,3.3190],"text":"100.99","confidence":1}]},{"language":"en","boundingBox":[1.0943,3.4256,1.1637,3.4256,1.1637,3.5310,1.0943,3.5310],"text":"B","words":[{"boundingBox":[1.0943,3.4256,1.1637,3.4256,1.1637,3.5310,1.0943,3.5310],"text":"B","confidence":1}]},{"language":"en","boundingBox":[3.2541,3.4241,3.4067,3.4241,3.4067,3.5323,3.2541,3.5323],"text":"20","words":[{"boundingBox":[3.2541,3.4241,3.4067,3.4241,3.4067,3.5323,3.2541,3.5323],"text":"20","confidence":1}]},{"language":"en","boundingBox":[5.4232,3.4241,5.8622,3.4241,5.8622,3.5323,5.4232,3.5323],"text":"140.67","words":[{"boundingBox":[5.4232,3.4241,5.8622,3.4241,5.8622,3.5323,5.4232,3.5323],"text":"140.67","confidence":1}]},{"language":"en","boundingBox":[1.0882,3.6343,1.1647,3.6343,1.1647,3.7421,1.0882,3.7421],"text":"C","words":[{"boundingBox":[1.0882,3.6343,1.1647,3.6343,1.1647,3.7421,1.0882,3.7421],"text":"C","confidence":1}]},{"language":"en","boundingBox":[3.2486,3.6341,3.4067,3.6341,3.4067,3.7423,3.2486,3.7423],"text":"40","words":[{"boundingBox":[3.2486,3.6341,3.4067,3.6341,3.4067,3.7423,3.2486,3.7423],"text":"40","confidence":1}]},{"language":"en","boundingBox":[5.4232,3.6341,5.8634,3.6341,5.8634,3.7423,5.4232,3.7423],"text":"150.66","words":[{"boundingBox":[5.4232,3.6341,5.8634,3.6341,5.8634,3.7423,5.4232,3.7423],"text":"150.66","confidence":1}]},{"language":"en","boundingBox":[1.0943,3.8456,1.1753,3.8456,1.1753,3.9510,1.0943,3.9510],"text":"D","words":[{"boundingBox":[1.0943,3.8456,1.1753,3.8456,1.1753,3.9510,1.0943,3.9510],"text":"D","confidence":1}]},{"language":"en","boundingBox":[3.2589,3.8441,3.4067,3.8441,3.4067,3.9523,3.2589,3.9523],"text":"10","words":[{"boundingBox":[3.2589,3.8441,3.4067,3.8441,3.4067,3.9523,3.2589,3.9523],"text":"10","confidence":1}]},{"language":"en","boundingBox":[5.4232,3.8441,5.8642,3.8441,5.8642,3.9523,5.4232,3.9523],"text":"120.00","words":[{"boundingBox":[5.4232,3.8441,5.8642,3.8441,5.8642,3.9523,5.4232,3.9523],"text":"120.00","confidence":1}]},{"language":"en","boundingBox":[1.0943,4.0561,1.153,4.0561,1.153,4.1614,1.0943,4.1614],"text":"E","words":[{"boundingBox":[1.0943,4.0561,1.153,4.0561,1.153,4.1614,1.0943,4.1614],"text":"E","confidence":1}]},{"language":"en","boundingBox":[3.2486,4.0546,3.4067,4.0546,3.4067,4.1627,3.2486,4.1627],"text":"40","words":[{"boundingBox":[3.2486,4.0546,3.4067,4.0546,3.4067,4.1627,3.2486,4.1627],"text":"40","confidence":1}]},{"language":"en","boundingBox":[5.4232,4.0546,5.8644,4.0546,5.8644,4.1627,5.4232,4.1627],"text":"100.00","words":[{"boundingBox":[5.4232,4.0546,5.8644,4.0546,5.8644,4.1627,5.4232,4.1627],"text":"100.00","confidence":1}]},{"language":"en","boundingBox":[1.0943,4.2661,1.1497,4.2661,1.1497,4.3717,1.0943,4.3717],"text":"F","words":[{"boundingBox":[1.0943,4.2661,1.1497,4.2661,1.1497,4.3717,1.0943,4.3717],"text":"F","confidence":1}]},{"language":"en","boundingBox":[3.2534,4.2646,3.4067,4.2646,3.4067,4.3727,3.2534,4.3727],"text":"60","words":[{"boundingBox":[3.2534,4.2646,3.4067,4.2646,3.4067,4.3727,3.2534,4.3727],"text":"60","confidence":1}]},{"language":"en","boundingBox":[5.4232,4.2646,5.8642,4.2646,5.8642,4.3727,5.4232,4.3727],"text":"120.00","words":[{"boundingBox":[5.4232,4.2646,5.8642,4.2646,5.8642,4.3727,5.4232,4.3727],"text":"120.00","confidence":1}]},{"language":"en","boundingBox":[1.0877,4.4746,1.1735,4.4746,1.1735,4.5827,1.0877,4.5827],"text":"G","words":[{"boundingBox":[1.0877,4.4746,1.1735,4.4746,1.1735,4.5827,1.0877,4.5827],"text":"G","confidence":1}]},{"language":"en","boundingBox":[3.2514,4.4746,3.4067,4.4746,3.4067,4.5827,3.2514,4.5827],"text":"80","words":[{"boundingBox":[3.2514,4.4746,3.4067,4.4746,3.4067,4.5827,3.2514,4.5827],"text":"80","confidence":1}]},{"language":"en","boundingBox":[5.4184,4.4746,5.8644,4.4746,5.8644,4.5827,5.4184,4.5827],"text":"220.00","words":[{"boundingBox":[5.4184,4.4746,5.8644,4.4746,5.8644,4.5827,5.4184,4.5827],"text":"220.00","confidence":1}]},{"language":"en","boundingBox":[5.5075,4.8981,6.7158,4.8981,6.7158,5.0131,5.5075,5.0131],"text":"Subtotal: + 3000.00","words":[{"boundingBox":[5.5075,4.8981,6.1249,4.8981,6.1249,5.0131,5.5075,5.0131],"text":"Subtotal:","confidence":1},{"boundingBox":[6.1794,4.9042,6.7158,4.9042,6.7158,5.0131,6.1794,5.0131],"text":"3000.00","confidence":1}]},{"language":"en","boundingBox":[5.5034,5.1245,6.2887,5.1245,6.2887,5.2333,5.5034,5.2333],"text":"Tax: + 300.00","words":[{"boundingBox":[5.5034,5.1263,5.7812,5.1263,5.7812,5.2333,5.5034,5.2333],"text":"Tax:","confidence":1},{"boundingBox":[5.8360,5.1245,6.2887,5.1245,6.2887,5.2333,5.8360,5.2333],"text":"300.00","confidence":1}]},{"language":"en","boundingBox":[5.5034,5.3412,6.3422,5.3412,6.3422,5.481,5.5034,5.481],"text":"Tip: + 1000.00","words":[{"boundingBox":[5.5034,5.3412,5.7515,5.3412,5.7515,5.481,5.5034,5.481],"text":"Tip:","confidence":1},{"boundingBox":[5.8110,5.3445,6.3422,5.3445,6.3422,5.4533,5.8110,5.4533],"text":"1000.00","confidence":1}]},{"language":"en","boundingBox":[5.5034,5.5583,6.4825,5.5583,6.4825,5.6733,5.5034,5.6733],"text":"Total: + 4300.00","words":[{"boundingBox":[5.5034,5.5583,5.8915,5.5583,5.8915,5.6733,5.5034,5.6733],"text":"Total:","confidence":1},{"boundingBox":[5.9420,5.5645,6.4825,5.5645,6.4825,5.6733,5.9420,5.6733],"text":"4300.00","confidence":1}]},{"language":"en","boundingBox":[1.0055,6.6556,3.8842,6.6556,3.8842,6.7981,1.0055,6.7981],"text":"Signature: + ____ Frodo Baggins__________","words":[{"boundingBox":[1.0055,6.6581,1.6987,6.6581,1.6987,6.7981,1.0055,6.7981],"text":"Signature:","confidence":1},{"boundingBox":[1.7470,6.7829,2.0809,6.7829,2.0809,6.7981,1.7470,6.7981],"text":"____","confidence":1},{"boundingBox":[2.0925,6.6556,2.4778,6.6556,2.4778,6.7703,2.0925,6.7703],"text":"Frodo","confidence":1},{"boundingBox":[2.5325,6.6581,3.8842,6.6581,3.8842,6.7981,2.5325,6.7981],"text":"Baggins__________","confidence":1}]}]}],"pageResults":[{"page":1,"tables":[{"rows":8,"columns":3,"cells":[{"rowIndex":0,"columnIndex":0,"text":"Item","boundingBox":[1.0037,2.9443,3.1681,2.9443,3.1681,3.1543,1.0037,3.1543],"elements":["#/readResults/0/lines/10/words/0"]},{"rowIndex":0,"columnIndex":1,"text":"Quantity","boundingBox":[3.1681,2.9443,5.3353,2.9443,5.3353,3.1543,3.1681,3.1543],"elements":["#/readResults/0/lines/11/words/0"]},{"rowIndex":0,"columnIndex":2,"text":"Price","boundingBox":[5.3353,2.9443,7.4997,2.9443,7.4997,3.1543,5.3353,3.1543],"elements":["#/readResults/0/lines/12/words/0"]},{"rowIndex":1,"columnIndex":0,"text":"A","boundingBox":[1.0037,3.1543,3.1681,3.1543,3.1681,3.3643,1.0037,3.3643],"elements":["#/readResults/0/lines/13/words/0"]},{"rowIndex":1,"columnIndex":1,"text":"1","boundingBox":[3.1681,3.1543,5.3353,3.1543,5.3353,3.3643,3.1681,3.3643],"elements":["#/readResults/0/lines/14/words/0"]},{"rowIndex":1,"columnIndex":2,"text":"10.99","boundingBox":[5.3353,3.1543,7.4997,3.1543,7.4997,3.3643,5.3353,3.3643],"elements":["#/readResults/0/lines/15/words/0"]},{"rowIndex":2,"columnIndex":0,"text":"B","boundingBox":[1.0037,3.3643,3.1681,3.3643,3.1681,3.5776,1.0037,3.5776],"elements":["#/readResults/0/lines/16/words/0"]},{"rowIndex":2,"columnIndex":1,"text":"2","boundingBox":[3.1681,3.3643,5.3353,3.3643,5.3353,3.5776,3.1681,3.5776],"elements":["#/readResults/0/lines/17/words/0"]},{"rowIndex":2,"columnIndex":2,"text":"14.67","boundingBox":[5.3353,3.3643,7.4997,3.3643,7.4997,3.5776,5.3353,3.5776],"elements":["#/readResults/0/lines/18/words/0"]},{"rowIndex":3,"columnIndex":0,"text":"C","boundingBox":[1.0037,3.5776,3.1681,3.5776,3.1681,3.7876,1.0037,3.7876],"elements":["#/readResults/0/lines/19/words/0"]},{"rowIndex":3,"columnIndex":1,"text":"4","boundingBox":[3.1681,3.5776,5.3353,3.5776,5.3353,3.7876,3.1681,3.7876],"elements":["#/readResults/0/lines/20/words/0"]},{"rowIndex":3,"columnIndex":2,"text":"15.66","boundingBox":[5.3353,3.5776,7.4997,3.5776,7.4997,3.7876,5.3353,3.7876],"elements":["#/readResults/0/lines/21/words/0"]},{"rowIndex":4,"columnIndex":0,"text":"D","boundingBox":[1.0037,3.7876,3.1681,3.7876,3.1681,3.9976,1.0037,3.9976],"elements":["#/readResults/0/lines/22/words/0"]},{"rowIndex":4,"columnIndex":1,"text":"1","boundingBox":[3.1681,3.7876,5.3353,3.7876,5.3353,3.9976,3.1681,3.9976],"elements":["#/readResults/0/lines/23/words/0"]},{"rowIndex":4,"columnIndex":2,"text":"12.00","boundingBox":[5.3353,3.7876,7.4997,3.7876,7.4997,3.9976,5.3353,3.9976],"elements":["#/readResults/0/lines/24/words/0"]},{"rowIndex":5,"columnIndex":0,"text":"E","boundingBox":[1.0037,3.9976,3.1681,3.9976,3.1681,4.2081,1.0037,4.2081],"elements":["#/readResults/0/lines/25/words/0"]},{"rowIndex":5,"columnIndex":1,"text":"4","boundingBox":[3.1681,3.9976,5.3353,3.9976,5.3353,4.2081,3.1681,4.2081],"elements":["#/readResults/0/lines/26/words/0"]},{"rowIndex":5,"columnIndex":2,"text":"10.00","boundingBox":[5.3353,3.9976,7.4997,3.9976,7.4997,4.2081,5.3353,4.2081],"elements":["#/readResults/0/lines/27/words/0"]},{"rowIndex":6,"columnIndex":0,"text":"F","boundingBox":[1.0037,4.2081,3.1681,4.2081,3.1681,4.4181,1.0037,4.4181],"elements":["#/readResults/0/lines/28/words/0"]},{"rowIndex":6,"columnIndex":1,"text":"6","boundingBox":[3.1681,4.2081,5.3353,4.2081,5.3353,4.4181,3.1681,4.4181],"elements":["#/readResults/0/lines/29/words/0"]},{"rowIndex":6,"columnIndex":2,"text":"12.00","boundingBox":[5.3353,4.2081,7.4997,4.2081,7.4997,4.4181,5.3353,4.4181],"elements":["#/readResults/0/lines/30/words/0"]},{"rowIndex":7,"columnIndex":0,"text":"G","boundingBox":[1.0037,4.4181,3.1681,4.4181,3.1681,4.6281,1.0037,4.6281],"elements":["#/readResults/0/lines/31/words/0"]},{"rowIndex":7,"columnIndex":1,"text":"8","boundingBox":[3.1681,4.4181,5.3353,4.4181,5.3353,4.6281,3.1681,4.6281],"elements":["#/readResults/0/lines/32/words/0"]},{"rowIndex":7,"columnIndex":2,"text":"22.00","boundingBox":[5.3353,4.4181,7.4997,4.4181,7.4997,4.6281,5.3353,4.6281],"elements":["#/readResults/0/lines/33/words/0"]}]}]},{"page":2,"tables":[]},{"page":3,"tables":[{"rows":8,"columns":3,"cells":[{"rowIndex":0,"columnIndex":0,"text":"Item","boundingBox":[1.0037,2.9443,3.1681,2.9443,3.1681,3.1543,1.0037,3.1543],"elements":["#/readResults/2/lines/10/words/0"]},{"rowIndex":0,"columnIndex":1,"text":"Quantity","boundingBox":[3.1681,2.9443,5.3353,2.9443,5.3353,3.1543,3.1681,3.1543],"elements":["#/readResults/2/lines/11/words/0"]},{"rowIndex":0,"columnIndex":2,"text":"Price","boundingBox":[5.3353,2.9443,7.4997,2.9443,7.4997,3.1543,5.3353,3.1543],"elements":["#/readResults/2/lines/12/words/0"]},{"rowIndex":1,"columnIndex":0,"text":"A","boundingBox":[1.0037,3.1543,3.1681,3.1543,3.1681,3.3643,1.0037,3.3643],"elements":["#/readResults/2/lines/13/words/0"]},{"rowIndex":1,"columnIndex":1,"text":"10","boundingBox":[3.1681,3.1543,5.3353,3.1543,5.3353,3.3643,3.1681,3.3643],"elements":["#/readResults/2/lines/14/words/0"]},{"rowIndex":1,"columnIndex":2,"text":"100.99","boundingBox":[5.3353,3.1543,7.4997,3.1543,7.4997,3.3643,5.3353,3.3643],"elements":["#/readResults/2/lines/15/words/0"]},{"rowIndex":2,"columnIndex":0,"text":"B","boundingBox":[1.0037,3.3643,3.1681,3.3643,3.1681,3.5776,1.0037,3.5776],"elements":["#/readResults/2/lines/16/words/0"]},{"rowIndex":2,"columnIndex":1,"text":"20","boundingBox":[3.1681,3.3643,5.3353,3.3643,5.3353,3.5776,3.1681,3.5776],"elements":["#/readResults/2/lines/17/words/0"]},{"rowIndex":2,"columnIndex":2,"text":"140.67","boundingBox":[5.3353,3.3643,7.4997,3.3643,7.4997,3.5776,5.3353,3.5776],"elements":["#/readResults/2/lines/18/words/0"]},{"rowIndex":3,"columnIndex":0,"text":"C","boundingBox":[1.0037,3.5776,3.1681,3.5776,3.1681,3.7876,1.0037,3.7876],"elements":["#/readResults/2/lines/19/words/0"]},{"rowIndex":3,"columnIndex":1,"text":"40","boundingBox":[3.1681,3.5776,5.3353,3.5776,5.3353,3.7876,3.1681,3.7876],"elements":["#/readResults/2/lines/20/words/0"]},{"rowIndex":3,"columnIndex":2,"text":"150.66","boundingBox":[5.3353,3.5776,7.4997,3.5776,7.4997,3.7876,5.3353,3.7876],"elements":["#/readResults/2/lines/21/words/0"]},{"rowIndex":4,"columnIndex":0,"text":"D","boundingBox":[1.0037,3.7876,3.1681,3.7876,3.1681,3.9976,1.0037,3.9976],"elements":["#/readResults/2/lines/22/words/0"]},{"rowIndex":4,"columnIndex":1,"text":"10","boundingBox":[3.1681,3.7876,5.3353,3.7876,5.3353,3.9976,3.1681,3.9976],"elements":["#/readResults/2/lines/23/words/0"]},{"rowIndex":4,"columnIndex":2,"text":"120.00","boundingBox":[5.3353,3.7876,7.4997,3.7876,7.4997,3.9976,5.3353,3.9976],"elements":["#/readResults/2/lines/24/words/0"]},{"rowIndex":5,"columnIndex":0,"text":"E","boundingBox":[1.0037,3.9976,3.1681,3.9976,3.1681,4.2081,1.0037,4.2081],"elements":["#/readResults/2/lines/25/words/0"]},{"rowIndex":5,"columnIndex":1,"text":"40","boundingBox":[3.1681,3.9976,5.3353,3.9976,5.3353,4.2081,3.1681,4.2081],"elements":["#/readResults/2/lines/26/words/0"]},{"rowIndex":5,"columnIndex":2,"text":"100.00","boundingBox":[5.3353,3.9976,7.4997,3.9976,7.4997,4.2081,5.3353,4.2081],"elements":["#/readResults/2/lines/27/words/0"]},{"rowIndex":6,"columnIndex":0,"text":"F","boundingBox":[1.0037,4.2081,3.1681,4.2081,3.1681,4.4181,1.0037,4.4181],"elements":["#/readResults/2/lines/28/words/0"]},{"rowIndex":6,"columnIndex":1,"text":"60","boundingBox":[3.1681,4.2081,5.3353,4.2081,5.3353,4.4181,3.1681,4.4181],"elements":["#/readResults/2/lines/29/words/0"]},{"rowIndex":6,"columnIndex":2,"text":"120.00","boundingBox":[5.3353,4.2081,7.4997,4.2081,7.4997,4.4181,5.3353,4.4181],"elements":["#/readResults/2/lines/30/words/0"]},{"rowIndex":7,"columnIndex":0,"text":"G","boundingBox":[1.0037,4.4181,3.1681,4.4181,3.1681,4.6281,1.0037,4.6281],"elements":["#/readResults/2/lines/31/words/0"]},{"rowIndex":7,"columnIndex":1,"text":"80","boundingBox":[3.1681,4.4181,5.3353,4.4181,5.3353,4.6281,3.1681,4.6281],"elements":["#/readResults/2/lines/32/words/0"]},{"rowIndex":7,"columnIndex":2,"text":"220.00","boundingBox":[5.3353,4.4181,7.4997,4.4181,7.4997,4.6281,5.3353,4.6281],"elements":["#/readResults/2/lines/33/words/0"]}]}]}]}}' + headers: + apim-request-id: c5cfd120-e09d-455c-9b67-cfb7b909130f + content-type: application/json; charset=utf-8 + date: Mon, 27 Apr 2020 23:57:32 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + transfer-encoding: chunked + x-content-type-options: nosniff + x-envoy-upstream-service-time: '112' + status: + code: 200 + message: OK + url: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/layout/analyzeResults/72d1f47c-f9d8-4a74-a92b-09966574c012 +version: 1 diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_content_from_url_async.test_content_multipage_url.yaml b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_content_from_url_async.test_content_multipage_url.yaml new file mode 100644 index 000000000000..43638b4e2906 --- /dev/null +++ b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_content_from_url_async.test_content_multipage_url.yaml @@ -0,0 +1,99 @@ +interactions: +- request: + body: '{"source": "https://raw.githubusercontent.com/Azure/azure-sdk-for-python/master/sdk/formrecognizer/azure-ai-formrecognizer/tests/sample_forms/training_multipage/multipage_invoice1.pdf"}' + headers: + Content-Length: + - '116' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/layout/analyze + response: + body: + string: '' + headers: + apim-request-id: c9de89e8-dc39-44ff-bbd5-05f959c942f6 + content-length: '0' + date: Mon, 27 Apr 2020 23:57:34 GMT + operation-location: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/layout/analyzeResults/c9de89e8-dc39-44ff-bbd5-05f959c942f6 + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '410' + status: + code: 202 + message: Accepted + url: https://westus.api.cognitive.microsoft.com//formrecognizer/v2.0-preview/layout/analyze +- request: + body: null + headers: + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/layout/analyzeResults/c9de89e8-dc39-44ff-bbd5-05f959c942f6 + response: + body: + string: '{"status":"running","createdDateTime":"2020-04-27T23:57:34Z","lastUpdatedDateTime":"2020-04-27T23:57:39Z"}' + headers: + apim-request-id: a6cf8b78-b5e6-4c80-8b0c-698826219016 + content-type: application/json; charset=utf-8 + date: Mon, 27 Apr 2020 23:57:39 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + transfer-encoding: chunked + x-content-type-options: nosniff + x-envoy-upstream-service-time: '7' + status: + code: 200 + message: OK + url: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/layout/analyzeResults/c9de89e8-dc39-44ff-bbd5-05f959c942f6 +- request: + body: null + headers: + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/layout/analyzeResults/c9de89e8-dc39-44ff-bbd5-05f959c942f6 + response: + body: + string: '{"status":"succeeded","createdDateTime":"2020-04-27T23:57:34Z","lastUpdatedDateTime":"2020-04-27T23:57:44Z","analyzeResult":{"version":"2.0.0","readResults":[{"page":1,"language":"en","angle":0,"width":8.5,"height":11,"unit":"inch","lines":[{"language":"en","boundingBox":[0.8861,1.1217,2.3783,1.1217,2.3783,1.2812,0.8861,1.2812],"text":"Company + A Invoice","words":[{"boundingBox":[0.8861,1.1232,1.6203,1.1232,1.6203,1.2812,0.8861,1.2812],"text":"Company","confidence":1},{"boundingBox":[1.6696,1.1242,1.7749,1.1242,1.7749,1.2473,1.6696,1.2473],"text":"A","confidence":1},{"boundingBox":[1.8389,1.1217,2.3783,1.1217,2.3783,1.2485,1.8389,1.2485],"text":"Invoice","confidence":1}]},{"language":"en","boundingBox":[6.0211,1.0656,7.0357,1.0656,7.0357,1.2121,6.0211,1.2121],"text":"Invoice + For:","words":[{"boundingBox":[6.0211,1.0656,6.6362,1.0656,6.6362,1.2121,6.0211,1.2121],"text":"Invoice","confidence":1},{"boundingBox":[6.7147,1.0691,7.0357,1.0691,7.0357,1.2121,6.7147,1.2121],"text":"For:","confidence":1}]},{"language":"en","boundingBox":[0.8791,1.4825,1.5657,1.4825,1.5657,1.6155,0.8791,1.6155],"text":"Address:","words":[{"boundingBox":[0.8791,1.4825,1.5657,1.4825,1.5657,1.6155,0.8791,1.6155],"text":"Address:","confidence":1}]},{"language":"en","boundingBox":[6.0164,1.4503,6.8967,1.4503,6.8967,1.5931,6.0164,1.5931],"text":"Bilbo + Baggins","words":[{"boundingBox":[6.0164,1.4503,6.3392,1.4503,6.3392,1.5649,6.0164,1.5649],"text":"Bilbo","confidence":1},{"boundingBox":[6.3960,1.4556,6.8967,1.4556,6.8967,1.5931,6.3960,1.5931],"text":"Baggins","confidence":1}]},{"language":"en","boundingBox":[6.0165,1.6707,7.1006,1.6707,7.1006,1.7854,6.0165,1.7854],"text":"123 + Hobbit Lane","words":[{"boundingBox":[6.0165,1.6772,6.2434,1.6772,6.2434,1.7854,6.0165,1.7854],"text":"123","confidence":1},{"boundingBox":[6.3033,1.6707,6.7463,1.6707,6.7463,1.7854,6.3033,1.7854],"text":"Hobbit","confidence":1},{"boundingBox":[6.8030,1.6782,7.1006,1.6782,7.1006,1.7854,6.8030,1.7854],"text":"Lane","confidence":1}]},{"language":"en","boundingBox":[0.8852,1.8460,1.713,1.8460,1.713,1.9554,0.8852,1.9554],"text":"567 + Main St.","words":[{"boundingBox":[0.8852,1.8472,1.1203,1.8472,1.1203,1.9554,0.8852,1.9554],"text":"567","confidence":1},{"boundingBox":[1.1777,1.8460,1.5022,1.8460,1.5022,1.9554,1.1777,1.9554],"text":"Main","confidence":1},{"boundingBox":[1.5558,1.8472,1.713,1.8472,1.713,1.9554,1.5558,1.9554],"text":"St.","confidence":1}]},{"language":"en","boundingBox":[6.0164,1.8910,6.9793,1.8910,6.9793,2.0275,6.0164,2.0275],"text":"Redmond, + WA","words":[{"boundingBox":[6.0164,1.8910,6.6861,1.8910,6.6861,2.0275,6.0164,2.0275],"text":"Redmond,","confidence":1},{"boundingBox":[6.7408,1.8982,6.9793,1.8982,6.9793,2.0044,6.7408,2.0044],"text":"WA","confidence":1}]},{"language":"en","boundingBox":[0.891,2.0610,1.8537,2.0610,1.8537,2.1975,0.891,2.1975],"text":"Redmond, + WA","words":[{"boundingBox":[0.891,2.0610,1.5605,2.0610,1.5605,2.1975,0.891,2.1975],"text":"Redmond,","confidence":1},{"boundingBox":[1.6152,2.0682,1.8537,2.0682,1.8537,2.1744,1.6152,2.1744],"text":"WA","confidence":1}]},{"language":"en","boundingBox":[6.0105,2.1187,6.9371,2.1187,6.9371,2.2254,6.0105,2.2254],"text":"555-555-5555","words":[{"boundingBox":[6.0105,2.1187,6.9371,2.1187,6.9371,2.2254,6.0105,2.2254],"text":"555-555-5555","confidence":1}]},{"language":"en","boundingBox":[0.8852,2.2887,1.8119,2.2887,1.8119,2.3954,0.8852,2.3954],"text":"555-555-5555","words":[{"boundingBox":[0.8852,2.2887,1.8119,2.2887,1.8119,2.3954,0.8852,2.3954],"text":"555-555-5555","confidence":1}]},{"language":"en","boundingBox":[1.0943,3.0018,1.3842,3.0018,1.3842,3.1090,1.0943,3.1090],"text":"Item","words":[{"boundingBox":[1.0943,3.0018,1.3842,3.0018,1.3842,3.1090,1.0943,3.1090],"text":"Item","confidence":1}]},{"language":"en","boundingBox":[3.2527,2.9996,3.8367,2.9996,3.8367,3.1371,3.2527,3.1371],"text":"Quantity","words":[{"boundingBox":[3.2527,2.9996,3.8367,2.9996,3.8367,3.1371,3.2527,3.1371],"text":"Quantity","confidence":1}]},{"language":"en","boundingBox":[5.4230,2.9996,5.7372,2.9996,5.7372,3.1090,5.4230,3.1090],"text":"Price","words":[{"boundingBox":[5.4230,2.9996,5.7372,2.9996,5.7372,3.1090,5.4230,3.1090],"text":"Price","confidence":1}]},{"language":"en","boundingBox":[1.0832,3.2118,1.174,3.2118,1.174,3.3180,1.0832,3.3180],"text":"A","words":[{"boundingBox":[1.0832,3.2118,1.174,3.2118,1.174,3.3180,1.0832,3.3180],"text":"A","confidence":1}]},{"language":"en","boundingBox":[3.2589,3.2116,3.3202,3.2116,3.3202,3.3176,3.2589,3.3176],"text":"1","words":[{"boundingBox":[3.2589,3.2116,3.3202,3.2116,3.3202,3.3176,3.2589,3.3176],"text":"1","confidence":1}]},{"language":"en","boundingBox":[5.4232,3.2108,5.7784,3.2108,5.7784,3.3190,5.4232,3.3190],"text":"10.99","words":[{"boundingBox":[5.4232,3.2108,5.7784,3.2108,5.7784,3.3190,5.4232,3.3190],"text":"10.99","confidence":1}]},{"language":"en","boundingBox":[1.0943,3.4256,1.1637,3.4256,1.1637,3.5310,1.0943,3.5310],"text":"B","words":[{"boundingBox":[1.0943,3.4256,1.1637,3.4256,1.1637,3.5310,1.0943,3.5310],"text":"B","confidence":1}]},{"language":"en","boundingBox":[3.2541,3.4241,3.3199,3.4241,3.3199,3.5310,3.2541,3.5310],"text":"2","words":[{"boundingBox":[3.2541,3.4241,3.3199,3.4241,3.3199,3.5310,3.2541,3.5310],"text":"2","confidence":1}]},{"language":"en","boundingBox":[5.4232,3.4241,5.7789,3.4241,5.7789,3.5323,5.4232,3.5323],"text":"14.67","words":[{"boundingBox":[5.4232,3.4241,5.7789,3.4241,5.7789,3.5323,5.4232,3.5323],"text":"14.67","confidence":1}]},{"language":"en","boundingBox":[1.0882,3.6343,1.1647,3.6343,1.1647,3.7421,1.0882,3.7421],"text":"C","words":[{"boundingBox":[1.0882,3.6343,1.1647,3.6343,1.1647,3.7421,1.0882,3.7421],"text":"C","confidence":1}]},{"language":"en","boundingBox":[3.2486,3.6351,3.3244,3.6351,3.3244,3.7413,3.2486,3.7413],"text":"4","words":[{"boundingBox":[3.2486,3.6351,3.3244,3.6351,3.3244,3.7413,3.2486,3.7413],"text":"4","confidence":1}]},{"language":"en","boundingBox":[5.4232,3.6341,5.7800,3.6341,5.7800,3.7423,5.4232,3.7423],"text":"15.66","words":[{"boundingBox":[5.4232,3.6341,5.7800,3.6341,5.7800,3.7423,5.4232,3.7423],"text":"15.66","confidence":1}]},{"language":"en","boundingBox":[1.0943,3.8456,1.1753,3.8456,1.1753,3.9510,1.0943,3.9510],"text":"D","words":[{"boundingBox":[1.0943,3.8456,1.1753,3.8456,1.1753,3.9510,1.0943,3.9510],"text":"D","confidence":1}]},{"language":"en","boundingBox":[3.2589,3.8450,3.3202,3.8450,3.3202,3.9510,3.2589,3.9510],"text":"1","words":[{"boundingBox":[3.2589,3.8450,3.3202,3.8450,3.3202,3.9510,3.2589,3.9510],"text":"1","confidence":1}]},{"language":"en","boundingBox":[5.4232,3.8441,5.7809,3.8441,5.7809,3.9523,5.4232,3.9523],"text":"12.00","words":[{"boundingBox":[5.4232,3.8441,5.7809,3.8441,5.7809,3.9523,5.4232,3.9523],"text":"12.00","confidence":1}]},{"language":"en","boundingBox":[1.0943,4.0561,1.153,4.0561,1.153,4.1614,1.0943,4.1614],"text":"E","words":[{"boundingBox":[1.0943,4.0561,1.153,4.0561,1.153,4.1614,1.0943,4.1614],"text":"E","confidence":1}]},{"language":"en","boundingBox":[3.2486,4.0556,3.3244,4.0556,3.3244,4.1617,3.2486,4.1617],"text":"4","words":[{"boundingBox":[3.2486,4.0556,3.3244,4.0556,3.3244,4.1617,3.2486,4.1617],"text":"4","confidence":1}]},{"language":"en","boundingBox":[5.4232,4.0546,5.7810,4.0546,5.7810,4.1627,5.4232,4.1627],"text":"10.00","words":[{"boundingBox":[5.4232,4.0546,5.7810,4.0546,5.7810,4.1627,5.4232,4.1627],"text":"10.00","confidence":1}]},{"language":"en","boundingBox":[1.0943,4.2661,1.1497,4.2661,1.1497,4.3717,1.0943,4.3717],"text":"F","words":[{"boundingBox":[1.0943,4.2661,1.1497,4.2661,1.1497,4.3717,1.0943,4.3717],"text":"F","confidence":1}]},{"language":"en","boundingBox":[3.2534,4.2646,3.3226,4.2646,3.3226,4.3727,3.2534,4.3727],"text":"6","words":[{"boundingBox":[3.2534,4.2646,3.3226,4.2646,3.3226,4.3727,3.2534,4.3727],"text":"6","confidence":1}]},{"language":"en","boundingBox":[5.4232,4.2646,5.7809,4.2646,5.7809,4.3727,5.4232,4.3727],"text":"12.00","words":[{"boundingBox":[5.4232,4.2646,5.7809,4.2646,5.7809,4.3727,5.4232,4.3727],"text":"12.00","confidence":1}]},{"language":"en","boundingBox":[1.0877,4.4746,1.1735,4.4746,1.1735,4.5827,1.0877,4.5827],"text":"G","words":[{"boundingBox":[1.0877,4.4746,1.1735,4.4746,1.1735,4.5827,1.0877,4.5827],"text":"G","confidence":1}]},{"language":"en","boundingBox":[3.2514,4.4746,3.3224,4.4746,3.3224,4.5827,3.2514,4.5827],"text":"8","words":[{"boundingBox":[3.2514,4.4746,3.3224,4.4746,3.3224,4.5827,3.2514,4.5827],"text":"8","confidence":1}]},{"language":"en","boundingBox":[5.4184,4.4746,5.7810,4.4746,5.7810,4.5827,5.4184,4.5827],"text":"22.00","words":[{"boundingBox":[5.4184,4.4746,5.7810,4.4746,5.7810,4.5827,5.4184,4.5827],"text":"22.00","confidence":1}]},{"language":"en","boundingBox":[5.5075,4.8981,6.6320,4.8981,6.6320,5.0131,5.5075,5.0131],"text":"Subtotal: + 300.00","words":[{"boundingBox":[5.5075,4.8981,6.1249,4.8981,6.1249,5.0131,5.5075,5.0131],"text":"Subtotal:","confidence":1},{"boundingBox":[6.1794,4.9042,6.6320,4.9042,6.6320,5.0131,6.1794,5.0131],"text":"300.00","confidence":1}]},{"language":"en","boundingBox":[5.5034,5.1245,6.2022,5.1245,6.2022,5.2333,5.5034,5.2333],"text":"Tax: + 30.00","words":[{"boundingBox":[5.5034,5.1263,5.7812,5.1263,5.7812,5.2333,5.5034,5.2333],"text":"Tax:","confidence":1},{"boundingBox":[5.8360,5.1245,6.2022,5.1245,6.2022,5.2333,5.8360,5.2333],"text":"30.00","confidence":1}]},{"language":"en","boundingBox":[5.5034,5.3412,6.2587,5.3412,6.2587,5.481,5.5034,5.481],"text":"Tip: + 100.00","words":[{"boundingBox":[5.5034,5.3412,5.7515,5.3412,5.7515,5.481,5.5034,5.481],"text":"Tip:","confidence":1},{"boundingBox":[5.8110,5.3445,6.2587,5.3445,6.2587,5.4533,5.8110,5.4533],"text":"100.00","confidence":1}]},{"language":"en","boundingBox":[5.5034,5.5583,6.3987,5.5583,6.3987,5.6733,5.5034,5.6733],"text":"Total: + 430.00","words":[{"boundingBox":[5.5034,5.5583,5.8915,5.5583,5.8915,5.6733,5.5034,5.6733],"text":"Total:","confidence":1},{"boundingBox":[5.9420,5.5645,6.3987,5.5645,6.3987,5.6733,5.9420,5.6733],"text":"430.00","confidence":1}]},{"language":"en","boundingBox":[1.0055,6.6553,3.8342,6.6553,3.8342,6.7981,1.0055,6.7981],"text":"Signature: + ____ Bilbo Baggins__________","words":[{"boundingBox":[1.0055,6.6581,1.6987,6.6581,1.6987,6.7981,1.0055,6.7981],"text":"Signature:","confidence":1},{"boundingBox":[1.7470,6.7829,2.0809,6.7829,2.0809,6.7981,1.7470,6.7981],"text":"____","confidence":1},{"boundingBox":[2.0925,6.6553,2.4278,6.6553,2.4278,6.7703,2.0925,6.7703],"text":"Bilbo","confidence":1},{"boundingBox":[2.4823,6.6581,3.8342,6.6581,3.8342,6.7981,2.4823,6.7981],"text":"Baggins__________","confidence":1}]}]},{"page":2,"language":"en","angle":0,"width":8.4967,"height":10.9967,"unit":"inch","lines":[]},{"page":3,"language":"en","angle":0,"width":8.5,"height":11,"unit":"inch","lines":[{"language":"en","boundingBox":[0.8861,1.1217,2.3734,1.1217,2.3734,1.2812,0.8861,1.2812],"text":"Company + B Invoice","words":[{"boundingBox":[0.8861,1.1232,1.6203,1.1232,1.6203,1.2812,0.8861,1.2812],"text":"Company","confidence":1},{"boundingBox":[1.6836,1.1248,1.7640,1.1248,1.7640,1.2469,1.6836,1.2469],"text":"B","confidence":1},{"boundingBox":[1.8336,1.1217,2.3734,1.1217,2.3734,1.2485,1.8336,1.2485],"text":"Invoice","confidence":1}]},{"language":"en","boundingBox":[6.0211,1.0656,7.0357,1.0656,7.0357,1.2121,6.0211,1.2121],"text":"Invoice + For:","words":[{"boundingBox":[6.0211,1.0656,6.6362,1.0656,6.6362,1.2121,6.0211,1.2121],"text":"Invoice","confidence":1},{"boundingBox":[6.7147,1.0691,7.0357,1.0691,7.0357,1.2121,6.7147,1.2121],"text":"For:","confidence":1}]},{"language":"en","boundingBox":[0.8791,1.4825,1.5657,1.4825,1.5657,1.6155,0.8791,1.6155],"text":"Address:","words":[{"boundingBox":[0.8791,1.4825,1.5657,1.4825,1.5657,1.6155,0.8791,1.6155],"text":"Address:","confidence":1}]},{"language":"en","boundingBox":[6.0164,1.4506,6.9506,1.4506,6.9506,1.5931,6.0164,1.5931],"text":"Frodo + Baggins","words":[{"boundingBox":[6.0164,1.4506,6.3895,1.4506,6.3895,1.5649,6.0164,1.5649],"text":"Frodo","confidence":1},{"boundingBox":[6.4500,1.4556,6.9506,1.4556,6.9506,1.5931,6.4500,1.5931],"text":"Baggins","confidence":1}]},{"language":"en","boundingBox":[6.0165,1.6707,7.1006,1.6707,7.1006,1.7854,6.0165,1.7854],"text":"123 + Hobbit Lane","words":[{"boundingBox":[6.0165,1.6772,6.2434,1.6772,6.2434,1.7854,6.0165,1.7854],"text":"123","confidence":1},{"boundingBox":[6.3033,1.6707,6.7463,1.6707,6.7463,1.7854,6.3033,1.7854],"text":"Hobbit","confidence":1},{"boundingBox":[6.8030,1.6782,7.1006,1.6782,7.1006,1.7854,6.8030,1.7854],"text":"Lane","confidence":1}]},{"language":"en","boundingBox":[0.8852,1.8460,1.713,1.8460,1.713,1.9554,0.8852,1.9554],"text":"567 + Main St.","words":[{"boundingBox":[0.8852,1.8472,1.1203,1.8472,1.1203,1.9554,0.8852,1.9554],"text":"567","confidence":1},{"boundingBox":[1.1777,1.8460,1.5022,1.8460,1.5022,1.9554,1.1777,1.9554],"text":"Main","confidence":1},{"boundingBox":[1.5558,1.8472,1.713,1.8472,1.713,1.9554,1.5558,1.9554],"text":"St.","confidence":1}]},{"language":"en","boundingBox":[6.0164,1.8910,6.9793,1.8910,6.9793,2.0275,6.0164,2.0275],"text":"Redmond, + WA","words":[{"boundingBox":[6.0164,1.8910,6.6861,1.8910,6.6861,2.0275,6.0164,2.0275],"text":"Redmond,","confidence":1},{"boundingBox":[6.7408,1.8982,6.9793,1.8982,6.9793,2.0044,6.7408,2.0044],"text":"WA","confidence":1}]},{"language":"en","boundingBox":[0.891,2.0610,1.8537,2.0610,1.8537,2.1975,0.891,2.1975],"text":"Redmond, + WA","words":[{"boundingBox":[0.891,2.0610,1.5605,2.0610,1.5605,2.1975,0.891,2.1975],"text":"Redmond,","confidence":1},{"boundingBox":[1.6152,2.0682,1.8537,2.0682,1.8537,2.1744,1.6152,2.1744],"text":"WA","confidence":1}]},{"language":"en","boundingBox":[6.0105,2.1187,6.9371,2.1187,6.9371,2.2254,6.0105,2.2254],"text":"555-555-5555","words":[{"boundingBox":[6.0105,2.1187,6.9371,2.1187,6.9371,2.2254,6.0105,2.2254],"text":"555-555-5555","confidence":1}]},{"language":"en","boundingBox":[0.8852,2.2887,1.8119,2.2887,1.8119,2.3954,0.8852,2.3954],"text":"555-555-5555","words":[{"boundingBox":[0.8852,2.2887,1.8119,2.2887,1.8119,2.3954,0.8852,2.3954],"text":"555-555-5555","confidence":1}]},{"language":"en","boundingBox":[1.0943,3.0018,1.3842,3.0018,1.3842,3.1090,1.0943,3.1090],"text":"Item","words":[{"boundingBox":[1.0943,3.0018,1.3842,3.0018,1.3842,3.1090,1.0943,3.1090],"text":"Item","confidence":1}]},{"language":"en","boundingBox":[3.2527,2.9996,3.8367,2.9996,3.8367,3.1371,3.2527,3.1371],"text":"Quantity","words":[{"boundingBox":[3.2527,2.9996,3.8367,2.9996,3.8367,3.1371,3.2527,3.1371],"text":"Quantity","confidence":1}]},{"language":"en","boundingBox":[5.4230,2.9996,5.7372,2.9996,5.7372,3.1090,5.4230,3.1090],"text":"Price","words":[{"boundingBox":[5.4230,2.9996,5.7372,2.9996,5.7372,3.1090,5.4230,3.1090],"text":"Price","confidence":1}]},{"language":"en","boundingBox":[1.0832,3.2118,1.174,3.2118,1.174,3.3180,1.0832,3.3180],"text":"A","words":[{"boundingBox":[1.0832,3.2118,1.174,3.2118,1.174,3.3180,1.0832,3.3180],"text":"A","confidence":1}]},{"language":"en","boundingBox":[3.2589,3.2108,3.4067,3.2108,3.4067,3.3190,3.2589,3.3190],"text":"10","words":[{"boundingBox":[3.2589,3.2108,3.4067,3.2108,3.4067,3.3190,3.2589,3.3190],"text":"10","confidence":1}]},{"language":"en","boundingBox":[5.4232,3.2108,5.8617,3.2108,5.8617,3.3190,5.4232,3.3190],"text":"100.99","words":[{"boundingBox":[5.4232,3.2108,5.8617,3.2108,5.8617,3.3190,5.4232,3.3190],"text":"100.99","confidence":1}]},{"language":"en","boundingBox":[1.0943,3.4256,1.1637,3.4256,1.1637,3.5310,1.0943,3.5310],"text":"B","words":[{"boundingBox":[1.0943,3.4256,1.1637,3.4256,1.1637,3.5310,1.0943,3.5310],"text":"B","confidence":1}]},{"language":"en","boundingBox":[3.2541,3.4241,3.4067,3.4241,3.4067,3.5323,3.2541,3.5323],"text":"20","words":[{"boundingBox":[3.2541,3.4241,3.4067,3.4241,3.4067,3.5323,3.2541,3.5323],"text":"20","confidence":1}]},{"language":"en","boundingBox":[5.4232,3.4241,5.8622,3.4241,5.8622,3.5323,5.4232,3.5323],"text":"140.67","words":[{"boundingBox":[5.4232,3.4241,5.8622,3.4241,5.8622,3.5323,5.4232,3.5323],"text":"140.67","confidence":1}]},{"language":"en","boundingBox":[1.0882,3.6343,1.1647,3.6343,1.1647,3.7421,1.0882,3.7421],"text":"C","words":[{"boundingBox":[1.0882,3.6343,1.1647,3.6343,1.1647,3.7421,1.0882,3.7421],"text":"C","confidence":1}]},{"language":"en","boundingBox":[3.2486,3.6341,3.4067,3.6341,3.4067,3.7423,3.2486,3.7423],"text":"40","words":[{"boundingBox":[3.2486,3.6341,3.4067,3.6341,3.4067,3.7423,3.2486,3.7423],"text":"40","confidence":1}]},{"language":"en","boundingBox":[5.4232,3.6341,5.8634,3.6341,5.8634,3.7423,5.4232,3.7423],"text":"150.66","words":[{"boundingBox":[5.4232,3.6341,5.8634,3.6341,5.8634,3.7423,5.4232,3.7423],"text":"150.66","confidence":1}]},{"language":"en","boundingBox":[1.0943,3.8456,1.1753,3.8456,1.1753,3.9510,1.0943,3.9510],"text":"D","words":[{"boundingBox":[1.0943,3.8456,1.1753,3.8456,1.1753,3.9510,1.0943,3.9510],"text":"D","confidence":1}]},{"language":"en","boundingBox":[3.2589,3.8441,3.4067,3.8441,3.4067,3.9523,3.2589,3.9523],"text":"10","words":[{"boundingBox":[3.2589,3.8441,3.4067,3.8441,3.4067,3.9523,3.2589,3.9523],"text":"10","confidence":1}]},{"language":"en","boundingBox":[5.4232,3.8441,5.8642,3.8441,5.8642,3.9523,5.4232,3.9523],"text":"120.00","words":[{"boundingBox":[5.4232,3.8441,5.8642,3.8441,5.8642,3.9523,5.4232,3.9523],"text":"120.00","confidence":1}]},{"language":"en","boundingBox":[1.0943,4.0561,1.153,4.0561,1.153,4.1614,1.0943,4.1614],"text":"E","words":[{"boundingBox":[1.0943,4.0561,1.153,4.0561,1.153,4.1614,1.0943,4.1614],"text":"E","confidence":1}]},{"language":"en","boundingBox":[3.2486,4.0546,3.4067,4.0546,3.4067,4.1627,3.2486,4.1627],"text":"40","words":[{"boundingBox":[3.2486,4.0546,3.4067,4.0546,3.4067,4.1627,3.2486,4.1627],"text":"40","confidence":1}]},{"language":"en","boundingBox":[5.4232,4.0546,5.8644,4.0546,5.8644,4.1627,5.4232,4.1627],"text":"100.00","words":[{"boundingBox":[5.4232,4.0546,5.8644,4.0546,5.8644,4.1627,5.4232,4.1627],"text":"100.00","confidence":1}]},{"language":"en","boundingBox":[1.0943,4.2661,1.1497,4.2661,1.1497,4.3717,1.0943,4.3717],"text":"F","words":[{"boundingBox":[1.0943,4.2661,1.1497,4.2661,1.1497,4.3717,1.0943,4.3717],"text":"F","confidence":1}]},{"language":"en","boundingBox":[3.2534,4.2646,3.4067,4.2646,3.4067,4.3727,3.2534,4.3727],"text":"60","words":[{"boundingBox":[3.2534,4.2646,3.4067,4.2646,3.4067,4.3727,3.2534,4.3727],"text":"60","confidence":1}]},{"language":"en","boundingBox":[5.4232,4.2646,5.8642,4.2646,5.8642,4.3727,5.4232,4.3727],"text":"120.00","words":[{"boundingBox":[5.4232,4.2646,5.8642,4.2646,5.8642,4.3727,5.4232,4.3727],"text":"120.00","confidence":1}]},{"language":"en","boundingBox":[1.0877,4.4746,1.1735,4.4746,1.1735,4.5827,1.0877,4.5827],"text":"G","words":[{"boundingBox":[1.0877,4.4746,1.1735,4.4746,1.1735,4.5827,1.0877,4.5827],"text":"G","confidence":1}]},{"language":"en","boundingBox":[3.2514,4.4746,3.4067,4.4746,3.4067,4.5827,3.2514,4.5827],"text":"80","words":[{"boundingBox":[3.2514,4.4746,3.4067,4.4746,3.4067,4.5827,3.2514,4.5827],"text":"80","confidence":1}]},{"language":"en","boundingBox":[5.4184,4.4746,5.8644,4.4746,5.8644,4.5827,5.4184,4.5827],"text":"220.00","words":[{"boundingBox":[5.4184,4.4746,5.8644,4.4746,5.8644,4.5827,5.4184,4.5827],"text":"220.00","confidence":1}]},{"language":"en","boundingBox":[5.5075,4.8981,6.7158,4.8981,6.7158,5.0131,5.5075,5.0131],"text":"Subtotal: + 3000.00","words":[{"boundingBox":[5.5075,4.8981,6.1249,4.8981,6.1249,5.0131,5.5075,5.0131],"text":"Subtotal:","confidence":1},{"boundingBox":[6.1794,4.9042,6.7158,4.9042,6.7158,5.0131,6.1794,5.0131],"text":"3000.00","confidence":1}]},{"language":"en","boundingBox":[5.5034,5.1245,6.2887,5.1245,6.2887,5.2333,5.5034,5.2333],"text":"Tax: + 300.00","words":[{"boundingBox":[5.5034,5.1263,5.7812,5.1263,5.7812,5.2333,5.5034,5.2333],"text":"Tax:","confidence":1},{"boundingBox":[5.8360,5.1245,6.2887,5.1245,6.2887,5.2333,5.8360,5.2333],"text":"300.00","confidence":1}]},{"language":"en","boundingBox":[5.5034,5.3412,6.3422,5.3412,6.3422,5.481,5.5034,5.481],"text":"Tip: + 1000.00","words":[{"boundingBox":[5.5034,5.3412,5.7515,5.3412,5.7515,5.481,5.5034,5.481],"text":"Tip:","confidence":1},{"boundingBox":[5.8110,5.3445,6.3422,5.3445,6.3422,5.4533,5.8110,5.4533],"text":"1000.00","confidence":1}]},{"language":"en","boundingBox":[5.5034,5.5583,6.4825,5.5583,6.4825,5.6733,5.5034,5.6733],"text":"Total: + 4300.00","words":[{"boundingBox":[5.5034,5.5583,5.8915,5.5583,5.8915,5.6733,5.5034,5.6733],"text":"Total:","confidence":1},{"boundingBox":[5.9420,5.5645,6.4825,5.5645,6.4825,5.6733,5.9420,5.6733],"text":"4300.00","confidence":1}]},{"language":"en","boundingBox":[1.0055,6.6556,3.8842,6.6556,3.8842,6.7981,1.0055,6.7981],"text":"Signature: + ____ Frodo Baggins__________","words":[{"boundingBox":[1.0055,6.6581,1.6987,6.6581,1.6987,6.7981,1.0055,6.7981],"text":"Signature:","confidence":1},{"boundingBox":[1.7470,6.7829,2.0809,6.7829,2.0809,6.7981,1.7470,6.7981],"text":"____","confidence":1},{"boundingBox":[2.0925,6.6556,2.4778,6.6556,2.4778,6.7703,2.0925,6.7703],"text":"Frodo","confidence":1},{"boundingBox":[2.5325,6.6581,3.8842,6.6581,3.8842,6.7981,2.5325,6.7981],"text":"Baggins__________","confidence":1}]}]}],"pageResults":[{"page":1,"tables":[{"rows":8,"columns":3,"cells":[{"rowIndex":0,"columnIndex":0,"text":"Item","boundingBox":[1.0037,2.9443,3.1681,2.9443,3.1681,3.1543,1.0037,3.1543],"elements":["#/readResults/0/lines/10/words/0"]},{"rowIndex":0,"columnIndex":1,"text":"Quantity","boundingBox":[3.1681,2.9443,5.3353,2.9443,5.3353,3.1543,3.1681,3.1543],"elements":["#/readResults/0/lines/11/words/0"]},{"rowIndex":0,"columnIndex":2,"text":"Price","boundingBox":[5.3353,2.9443,7.4997,2.9443,7.4997,3.1543,5.3353,3.1543],"elements":["#/readResults/0/lines/12/words/0"]},{"rowIndex":1,"columnIndex":0,"text":"A","boundingBox":[1.0037,3.1543,3.1681,3.1543,3.1681,3.3643,1.0037,3.3643],"elements":["#/readResults/0/lines/13/words/0"]},{"rowIndex":1,"columnIndex":1,"text":"1","boundingBox":[3.1681,3.1543,5.3353,3.1543,5.3353,3.3643,3.1681,3.3643],"elements":["#/readResults/0/lines/14/words/0"]},{"rowIndex":1,"columnIndex":2,"text":"10.99","boundingBox":[5.3353,3.1543,7.4997,3.1543,7.4997,3.3643,5.3353,3.3643],"elements":["#/readResults/0/lines/15/words/0"]},{"rowIndex":2,"columnIndex":0,"text":"B","boundingBox":[1.0037,3.3643,3.1681,3.3643,3.1681,3.5776,1.0037,3.5776],"elements":["#/readResults/0/lines/16/words/0"]},{"rowIndex":2,"columnIndex":1,"text":"2","boundingBox":[3.1681,3.3643,5.3353,3.3643,5.3353,3.5776,3.1681,3.5776],"elements":["#/readResults/0/lines/17/words/0"]},{"rowIndex":2,"columnIndex":2,"text":"14.67","boundingBox":[5.3353,3.3643,7.4997,3.3643,7.4997,3.5776,5.3353,3.5776],"elements":["#/readResults/0/lines/18/words/0"]},{"rowIndex":3,"columnIndex":0,"text":"C","boundingBox":[1.0037,3.5776,3.1681,3.5776,3.1681,3.7876,1.0037,3.7876],"elements":["#/readResults/0/lines/19/words/0"]},{"rowIndex":3,"columnIndex":1,"text":"4","boundingBox":[3.1681,3.5776,5.3353,3.5776,5.3353,3.7876,3.1681,3.7876],"elements":["#/readResults/0/lines/20/words/0"]},{"rowIndex":3,"columnIndex":2,"text":"15.66","boundingBox":[5.3353,3.5776,7.4997,3.5776,7.4997,3.7876,5.3353,3.7876],"elements":["#/readResults/0/lines/21/words/0"]},{"rowIndex":4,"columnIndex":0,"text":"D","boundingBox":[1.0037,3.7876,3.1681,3.7876,3.1681,3.9976,1.0037,3.9976],"elements":["#/readResults/0/lines/22/words/0"]},{"rowIndex":4,"columnIndex":1,"text":"1","boundingBox":[3.1681,3.7876,5.3353,3.7876,5.3353,3.9976,3.1681,3.9976],"elements":["#/readResults/0/lines/23/words/0"]},{"rowIndex":4,"columnIndex":2,"text":"12.00","boundingBox":[5.3353,3.7876,7.4997,3.7876,7.4997,3.9976,5.3353,3.9976],"elements":["#/readResults/0/lines/24/words/0"]},{"rowIndex":5,"columnIndex":0,"text":"E","boundingBox":[1.0037,3.9976,3.1681,3.9976,3.1681,4.2081,1.0037,4.2081],"elements":["#/readResults/0/lines/25/words/0"]},{"rowIndex":5,"columnIndex":1,"text":"4","boundingBox":[3.1681,3.9976,5.3353,3.9976,5.3353,4.2081,3.1681,4.2081],"elements":["#/readResults/0/lines/26/words/0"]},{"rowIndex":5,"columnIndex":2,"text":"10.00","boundingBox":[5.3353,3.9976,7.4997,3.9976,7.4997,4.2081,5.3353,4.2081],"elements":["#/readResults/0/lines/27/words/0"]},{"rowIndex":6,"columnIndex":0,"text":"F","boundingBox":[1.0037,4.2081,3.1681,4.2081,3.1681,4.4181,1.0037,4.4181],"elements":["#/readResults/0/lines/28/words/0"]},{"rowIndex":6,"columnIndex":1,"text":"6","boundingBox":[3.1681,4.2081,5.3353,4.2081,5.3353,4.4181,3.1681,4.4181],"elements":["#/readResults/0/lines/29/words/0"]},{"rowIndex":6,"columnIndex":2,"text":"12.00","boundingBox":[5.3353,4.2081,7.4997,4.2081,7.4997,4.4181,5.3353,4.4181],"elements":["#/readResults/0/lines/30/words/0"]},{"rowIndex":7,"columnIndex":0,"text":"G","boundingBox":[1.0037,4.4181,3.1681,4.4181,3.1681,4.6281,1.0037,4.6281],"elements":["#/readResults/0/lines/31/words/0"]},{"rowIndex":7,"columnIndex":1,"text":"8","boundingBox":[3.1681,4.4181,5.3353,4.4181,5.3353,4.6281,3.1681,4.6281],"elements":["#/readResults/0/lines/32/words/0"]},{"rowIndex":7,"columnIndex":2,"text":"22.00","boundingBox":[5.3353,4.4181,7.4997,4.4181,7.4997,4.6281,5.3353,4.6281],"elements":["#/readResults/0/lines/33/words/0"]}]}]},{"page":2,"tables":[]},{"page":3,"tables":[{"rows":8,"columns":3,"cells":[{"rowIndex":0,"columnIndex":0,"text":"Item","boundingBox":[1.0037,2.9443,3.1681,2.9443,3.1681,3.1543,1.0037,3.1543],"elements":["#/readResults/2/lines/10/words/0"]},{"rowIndex":0,"columnIndex":1,"text":"Quantity","boundingBox":[3.1681,2.9443,5.3353,2.9443,5.3353,3.1543,3.1681,3.1543],"elements":["#/readResults/2/lines/11/words/0"]},{"rowIndex":0,"columnIndex":2,"text":"Price","boundingBox":[5.3353,2.9443,7.4997,2.9443,7.4997,3.1543,5.3353,3.1543],"elements":["#/readResults/2/lines/12/words/0"]},{"rowIndex":1,"columnIndex":0,"text":"A","boundingBox":[1.0037,3.1543,3.1681,3.1543,3.1681,3.3643,1.0037,3.3643],"elements":["#/readResults/2/lines/13/words/0"]},{"rowIndex":1,"columnIndex":1,"text":"10","boundingBox":[3.1681,3.1543,5.3353,3.1543,5.3353,3.3643,3.1681,3.3643],"elements":["#/readResults/2/lines/14/words/0"]},{"rowIndex":1,"columnIndex":2,"text":"100.99","boundingBox":[5.3353,3.1543,7.4997,3.1543,7.4997,3.3643,5.3353,3.3643],"elements":["#/readResults/2/lines/15/words/0"]},{"rowIndex":2,"columnIndex":0,"text":"B","boundingBox":[1.0037,3.3643,3.1681,3.3643,3.1681,3.5776,1.0037,3.5776],"elements":["#/readResults/2/lines/16/words/0"]},{"rowIndex":2,"columnIndex":1,"text":"20","boundingBox":[3.1681,3.3643,5.3353,3.3643,5.3353,3.5776,3.1681,3.5776],"elements":["#/readResults/2/lines/17/words/0"]},{"rowIndex":2,"columnIndex":2,"text":"140.67","boundingBox":[5.3353,3.3643,7.4997,3.3643,7.4997,3.5776,5.3353,3.5776],"elements":["#/readResults/2/lines/18/words/0"]},{"rowIndex":3,"columnIndex":0,"text":"C","boundingBox":[1.0037,3.5776,3.1681,3.5776,3.1681,3.7876,1.0037,3.7876],"elements":["#/readResults/2/lines/19/words/0"]},{"rowIndex":3,"columnIndex":1,"text":"40","boundingBox":[3.1681,3.5776,5.3353,3.5776,5.3353,3.7876,3.1681,3.7876],"elements":["#/readResults/2/lines/20/words/0"]},{"rowIndex":3,"columnIndex":2,"text":"150.66","boundingBox":[5.3353,3.5776,7.4997,3.5776,7.4997,3.7876,5.3353,3.7876],"elements":["#/readResults/2/lines/21/words/0"]},{"rowIndex":4,"columnIndex":0,"text":"D","boundingBox":[1.0037,3.7876,3.1681,3.7876,3.1681,3.9976,1.0037,3.9976],"elements":["#/readResults/2/lines/22/words/0"]},{"rowIndex":4,"columnIndex":1,"text":"10","boundingBox":[3.1681,3.7876,5.3353,3.7876,5.3353,3.9976,3.1681,3.9976],"elements":["#/readResults/2/lines/23/words/0"]},{"rowIndex":4,"columnIndex":2,"text":"120.00","boundingBox":[5.3353,3.7876,7.4997,3.7876,7.4997,3.9976,5.3353,3.9976],"elements":["#/readResults/2/lines/24/words/0"]},{"rowIndex":5,"columnIndex":0,"text":"E","boundingBox":[1.0037,3.9976,3.1681,3.9976,3.1681,4.2081,1.0037,4.2081],"elements":["#/readResults/2/lines/25/words/0"]},{"rowIndex":5,"columnIndex":1,"text":"40","boundingBox":[3.1681,3.9976,5.3353,3.9976,5.3353,4.2081,3.1681,4.2081],"elements":["#/readResults/2/lines/26/words/0"]},{"rowIndex":5,"columnIndex":2,"text":"100.00","boundingBox":[5.3353,3.9976,7.4997,3.9976,7.4997,4.2081,5.3353,4.2081],"elements":["#/readResults/2/lines/27/words/0"]},{"rowIndex":6,"columnIndex":0,"text":"F","boundingBox":[1.0037,4.2081,3.1681,4.2081,3.1681,4.4181,1.0037,4.4181],"elements":["#/readResults/2/lines/28/words/0"]},{"rowIndex":6,"columnIndex":1,"text":"60","boundingBox":[3.1681,4.2081,5.3353,4.2081,5.3353,4.4181,3.1681,4.4181],"elements":["#/readResults/2/lines/29/words/0"]},{"rowIndex":6,"columnIndex":2,"text":"120.00","boundingBox":[5.3353,4.2081,7.4997,4.2081,7.4997,4.4181,5.3353,4.4181],"elements":["#/readResults/2/lines/30/words/0"]},{"rowIndex":7,"columnIndex":0,"text":"G","boundingBox":[1.0037,4.4181,3.1681,4.4181,3.1681,4.6281,1.0037,4.6281],"elements":["#/readResults/2/lines/31/words/0"]},{"rowIndex":7,"columnIndex":1,"text":"80","boundingBox":[3.1681,4.4181,5.3353,4.4181,5.3353,4.6281,3.1681,4.6281],"elements":["#/readResults/2/lines/32/words/0"]},{"rowIndex":7,"columnIndex":2,"text":"220.00","boundingBox":[5.3353,4.4181,7.4997,4.4181,7.4997,4.6281,5.3353,4.6281],"elements":["#/readResults/2/lines/33/words/0"]}]}]}]}}' + headers: + apim-request-id: dc4f486f-afc8-47e5-afa3-2a439c48f07c + content-type: application/json; charset=utf-8 + date: Mon, 27 Apr 2020 23:57:44 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + transfer-encoding: chunked + x-content-type-options: nosniff + x-envoy-upstream-service-time: '103' + status: + code: 200 + message: OK + url: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/layout/analyzeResults/c9de89e8-dc39-44ff-bbd5-05f959c942f6 +version: 1 diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_custom_forms.test_custom_form_damaged_file.yaml b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_custom_forms.test_custom_form_damaged_file.yaml new file mode 100644 index 000000000000..ac34ed2b0d25 --- /dev/null +++ b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_custom_forms.test_custom_form_damaged_file.yaml @@ -0,0 +1,191 @@ +interactions: +- request: + body: 'b''{"source": "containersasurl", "sourceFilter": {"prefix": "", "includeSubFolders": + false}, "useLabelFile": false}''' + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '288' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models + response: + body: + string: '' + headers: + apim-request-id: + - bdf96ca2-276c-487d-8f64-4caf7b0c45d3 + content-length: + - '0' + date: + - Thu, 30 Apr 2020 22:47:31 GMT + location: + - https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/f186beca-4334-4b66-84ad-3f6cf8a66d18 + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '214' + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/f186beca-4334-4b66-84ad-3f6cf8a66d18?includeKeys=true + response: + body: + string: '{"modelInfo":{"modelId":"f186beca-4334-4b66-84ad-3f6cf8a66d18","status":"creating","createdDateTime":"2020-04-30T22:47:32Z","lastUpdatedDateTime":"2020-04-30T22:47:32Z"}}' + headers: + apim-request-id: + - 1df357b3-0807-4e6e-84b3-5f2fc62c77f8 + content-type: + - application/json; charset=utf-8 + date: + - Thu, 30 Apr 2020 22:47:37 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + transfer-encoding: + - chunked + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '186' + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/f186beca-4334-4b66-84ad-3f6cf8a66d18?includeKeys=true + response: + body: + string: '{"modelInfo":{"modelId":"f186beca-4334-4b66-84ad-3f6cf8a66d18","status":"ready","createdDateTime":"2020-04-30T22:47:32Z","lastUpdatedDateTime":"2020-04-30T22:47:39Z"},"keys":{"clusters":{"0":["Additional + Notes:","Address:","Address:","Company Name:","Company Phone:","Dated As:","Email:","Hero + Limited","Name:","Phone:","Purchase Order","Purchase Order","Purchase Order + #:","SUBTOTAL","Seattle, WA 93849 Phone:","Shipped From","Shipped To","TAX","TOTAL","Vendor + Name:","Website:"]}},"trainResult":{"trainingDocuments":[{"documentName":"Form_1.jpg","pages":1,"errors":[],"status":"succeeded"},{"documentName":"Form_2.jpg","pages":1,"errors":[],"status":"succeeded"},{"documentName":"Form_3.jpg","pages":1,"errors":[],"status":"succeeded"},{"documentName":"Form_4.jpg","pages":1,"errors":[],"status":"succeeded"},{"documentName":"Form_5.jpg","pages":1,"errors":[],"status":"succeeded"}],"errors":[]}}' + headers: + apim-request-id: + - 1ae2ce29-a7f5-4d30-b8d4-94aae89db5f4 + content-type: + - application/json; charset=utf-8 + date: + - Thu, 30 Apr 2020 22:47:42 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + transfer-encoding: + - chunked + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '54' + status: + code: 200 + message: OK +- request: + body: '%PDFUUU' + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '7' + Content-Type: + - application/pdf + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/f186beca-4334-4b66-84ad-3f6cf8a66d18/analyze?includeTextDetails=false + response: + body: + string: '' + headers: + apim-request-id: + - edd6fc1c-e193-450d-8760-d0b6ab8500d0 + content-length: + - '0' + date: + - Thu, 30 Apr 2020 22:47:42 GMT + operation-location: + - https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/f186beca-4334-4b66-84ad-3f6cf8a66d18/analyzeresults/f22bfbff-8e29-4b2f-ba00-501d5ac893ba + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '233' + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/f186beca-4334-4b66-84ad-3f6cf8a66d18/analyzeresults/f22bfbff-8e29-4b2f-ba00-501d5ac893ba + response: + body: + string: '{"status":"failed","createdDateTime":"2020-04-30T22:47:43Z","lastUpdatedDateTime":"2020-04-30T22:47:43Z","analyzeResult":{"version":"2.0.0","readResults":[],"pageResults":[],"documentResults":[],"errors":[{"code":"2005","message":"Unable + to read file."}]}}' + headers: + apim-request-id: + - 04e6c4db-7bdd-4178-ba68-79034ca2383f + content-type: + - application/json; charset=utf-8 + date: + - Thu, 30 Apr 2020 22:47:48 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + transfer-encoding: + - chunked + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '23' + status: + code: 200 + message: OK +version: 1 diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_custom_forms.test_custom_form_multipage_labeled.yaml b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_custom_forms.test_custom_form_multipage_labeled.yaml new file mode 100644 index 000000000000..ac8ca8b726d6 --- /dev/null +++ b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_custom_forms.test_custom_form_multipage_labeled.yaml @@ -0,0 +1,2209 @@ +interactions: +- request: + body: 'b''{"source": "containersasurl", "sourceFilter": {"prefix": "", "includeSubFolders": + false}, "useLabelFile": true}''' + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '315' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models + response: + body: + string: '' + headers: + apim-request-id: + - dcae5aa4-8968-4b9c-91ee-9a06b0979d00 + content-length: + - '0' + date: + - Thu, 23 Apr 2020 23:35:41 GMT + location: + - https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/920b2bed-8863-4e68-9c1d-7b11d036212e + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '226' + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/920b2bed-8863-4e68-9c1d-7b11d036212e?includeKeys=true + response: + body: + string: '{"modelInfo":{"modelId":"920b2bed-8863-4e68-9c1d-7b11d036212e","status":"creating","createdDateTime":"2020-04-23T23:35:41Z","lastUpdatedDateTime":"2020-04-23T23:35:41Z"}}' + headers: + apim-request-id: + - eb066378-8ccc-4d5a-8e7a-b7f9e756a5c7 + content-type: + - application/json; charset=utf-8 + date: + - Thu, 23 Apr 2020 23:35:46 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + transfer-encoding: + - chunked + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '122' + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/920b2bed-8863-4e68-9c1d-7b11d036212e?includeKeys=true + response: + body: + string: '{"modelInfo":{"modelId":"920b2bed-8863-4e68-9c1d-7b11d036212e","status":"ready","createdDateTime":"2020-04-23T23:35:41Z","lastUpdatedDateTime":"2020-04-23T23:35:48Z"},"trainResult":{"averageModelAccuracy":0.889,"trainingDocuments":[{"documentName":"multipage_invoice1.pdf","pages":3,"status":"succeeded"},{"documentName":"multipage_invoice2.pdf","pages":3,"status":"succeeded"},{"documentName":"multipage_invoice3.pdf","pages":3,"status":"succeeded"},{"documentName":"multipage_invoice4.pdf","pages":3,"status":"succeeded"},{"documentName":"multipage_invoice5.pdf","pages":3,"status":"succeeded"}],"fields":[{"fieldName":"Customer2","accuracy":1.0},{"fieldName":"CustomerAddress","accuracy":1.0},{"fieldName":"CustomerName","accuracy":1.0},{"fieldName":"CustomerPhoneNumber","accuracy":1.0},{"fieldName":"FirstItem","accuracy":1.0},{"fieldName":"FirstPrice","accuracy":1.0},{"fieldName":"FirstQuantity","accuracy":1.0},{"fieldName":"Merchant","accuracy":0.0},{"fieldName":"Merchant2","accuracy":0.0},{"fieldName":"MerchantAddress","accuracy":1.0},{"fieldName":"MerchantPhoneNumber","accuracy":1.0},{"fieldName":"Signature","accuracy":1.0},{"fieldName":"Signature2","accuracy":1.0},{"fieldName":"Subtotal","accuracy":1.0},{"fieldName":"Tax","accuracy":1.0},{"fieldName":"Tip","accuracy":1.0},{"fieldName":"Total","accuracy":1.0},{"fieldName":"Total2","accuracy":1.0}],"errors":[]}}' + headers: + apim-request-id: + - 01190e50-b30c-4910-ba2f-81a9eb0b2f24 + content-type: + - application/json; charset=utf-8 + date: + - Thu, 23 Apr 2020 23:35:52 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + transfer-encoding: + - chunked + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '279' + status: + code: 200 + message: OK +- request: + body: !!binary | + JVBERi0xLjcNCiW1tbW1DQoxIDAgb2JqDQo8PC9UeXBlL0NhdGFsb2cvUGFnZXMgMiAwIFIvTGFu + Zyhlbi1VUykgL1N0cnVjdFRyZWVSb290IDE2IDAgUi9NYXJrSW5mbzw8L01hcmtlZCB0cnVlPj4v + TWV0YWRhdGEgMjUzIDAgUi9WaWV3ZXJQcmVmZXJlbmNlcyAyNTQgMCBSPj4NCmVuZG9iag0KMiAw + IG9iag0KPDwvVHlwZS9QYWdlcy9Db3VudCAzL0tpZHNbIDMgMCBSIDExIDAgUiAxMyAwIFJdID4+ + DQplbmRvYmoNCjMgMCBvYmoNCjw8L1R5cGUvUGFnZS9QYXJlbnQgMiAwIFIvUmVzb3VyY2VzPDwv + Rm9udDw8L0YxIDUgMCBSL0YyIDkgMCBSPj4vRXh0R1N0YXRlPDwvR1M3IDcgMCBSL0dTOCA4IDAg + Uj4+L1Byb2NTZXRbL1BERi9UZXh0L0ltYWdlQi9JbWFnZUMvSW1hZ2VJXSA+Pi9NZWRpYUJveFsg + MCAwIDYxMiA3OTJdIC9Db250ZW50cyA0IDAgUi9Hcm91cDw8L1R5cGUvR3JvdXAvUy9UcmFuc3Bh + cmVuY3kvQ1MvRGV2aWNlUkdCPj4vVGFicy9TL1N0cnVjdFBhcmVudHMgMD4+DQplbmRvYmoNCjQg + MCBvYmoNCjw8L0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggMjg2ND4+DQpzdHJlYW0NCnicvZxZ + bxw3EsffBeg79ONMsGrzPhZBAMvXerEGkrWAPBiLwJYPGIilXVubbL79VrHvYRfZ3cOOAI2OLvJf + LFb/SPbB6tGP1fffP3r15OXTiv3wQ3X99En1n8sLVjP88lxUrDLwab2ovn64vPj5u+ru8uL65vLi + 0XNecVMzV918vLzgYMcqXikpam4ry1TtTHXzBexevLbVp29QZ/Up/OXav15cXrw5vLz77agP9/D9 + +WgOt/DzA3xXx39VN3+/vHgGOj9dXpzlkAOH+Nih4Ecr//x4JYP6V1D/azlVzVzNDKV60rzq2asn + VTXqCL6+I8RcLxjrayUi+eujgmhf+cOv+PEuxN+CUyYcefsJ/wsfrjG6g+PfNkfmxC9vau8pv3Jh + EaXCYmSt9Yl8dQV1OlXd3L45cCFLNVizmvt5xajBZ6iI2klK5W/HK25CF2NXvyulCX0oSM2QOQ/H + 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 + fvW3lN9NoKP8fgIt5fcTaCkfCZSmfCSw09UI6BG/5zmhhK3NXNLi2yxyv6sRhuO2Ndl2xSReu18C + SWJj63VjgCulDJhYt8bwpZRleJt/hbRauxkZKS1YnXrQP1Zeu/sWqczwsaPoQiXOyj7h6XqHU7Nw + 4j5Agofrl1/DFhRHCafxlSw3vgmNdx9P/alYcBMnVb/AV7HR2uNeVHHjrz9DKxFR4SLtfXVUh+u3 + 2N4QjPCBobkrNuZyvAMV+7FxL7PZQV3OCfxy5A4iij0481lKHXfbcTPqJ0nTd4eAs8CYcIeT1VbQ + t+LU2ltxVP7jrMGt4o1aeyuOlIaffhVkVamLzULb9D3+WLrUlRyhOO7ztEa61PJCAGLMOulS46lg + IcPXSJcaULmXuJ3hGulSIyq3DleUK6R1qRGVG5hGrGq1LjWkcmXwYaE10qVoxiXD+eoa6VI041zj + BgZrpEvRzPuam1Ug1aVohk8vi3XSHc04bmeEj9VUhsnwOhCMljA1gRHb9AMfw80Nf0dZqDxp/Xp4 + TA7MvFJgaGoPJlbVsrkCYqnn5PSIc8tK9/fXAS7TyBgJQ4uqLAzmohtYP/Xhid+vPlfPwtTZkXr3 + OJv90lxjdDiRlTildYc/cAPfx2Hvz5f4Gf75G0z37rvp7y0+uBxvgnWuuxwyB5hIuJvNHretowTd + UQYnabEnj3HPzvf9XP8bLHLV4Vu8cj/XCw7/gnk/4UU2Hn5z4s4HQ3MsdeqGPnb7VjRbEL8K9ww/ + Q0xY2N8U//f6AVcH8UOgZ7nFhcKt+Qi3sps3ssLRkbpW8S6K/XayZvFmr+cFRcraSsqbbFB44aDg + vdjTnS1ze6SeJew4LTy3Vep5YgoWKaRY4ZZ5DoOxWxLSwhkFY6rQf1JEOZRypFhuD9ozzxzgiKSk + iee8/w9kOwx8DQplbmRzdHJlYW0NCmVuZG9iag0KNSAwIG9iag0KPDwvVHlwZS9Gb250L1N1YnR5 + cGUvVHJ1ZVR5cGUvTmFtZS9GMS9CYXNlRm9udC9CQ0RFRUUrQ2FsaWJyaS9FbmNvZGluZy9XaW5B + bnNpRW5jb2RpbmcvRm9udERlc2NyaXB0b3IgNiAwIFIvRmlyc3RDaGFyIDMyL0xhc3RDaGFyIDEy + MS9XaWR0aHMgMjQ5IDAgUj4+DQplbmRvYmoNCjYgMCBvYmoNCjw8L1R5cGUvRm9udERlc2NyaXB0 + b3IvRm9udE5hbWUvQkNERUVFK0NhbGlicmkvRmxhZ3MgMzIvSXRhbGljQW5nbGUgMC9Bc2NlbnQg + NzUwL0Rlc2NlbnQgLTI1MC9DYXBIZWlnaHQgNzUwL0F2Z1dpZHRoIDUyMS9NYXhXaWR0aCAxNzQz + L0ZvbnRXZWlnaHQgNDAwL1hIZWlnaHQgMjUwL1N0ZW1WIDUyL0ZvbnRCQm94WyAtNTAzIC0yNTAg + MTI0MCA3NTBdIC9Gb250RmlsZTIgMjUwIDAgUj4+DQplbmRvYmoNCjcgMCBvYmoNCjw8L1R5cGUv + RXh0R1N0YXRlL0JNL05vcm1hbC9jYSAxPj4NCmVuZG9iag0KOCAwIG9iag0KPDwvVHlwZS9FeHRH + U3RhdGUvQk0vTm9ybWFsL0NBIDE+Pg0KZW5kb2JqDQo5IDAgb2JqDQo8PC9UeXBlL0ZvbnQvU3Vi + dHlwZS9UcnVlVHlwZS9OYW1lL0YyL0Jhc2VGb250L0JDREZFRStDYWxpYnJpLUJvbGQvRW5jb2Rp + bmcvV2luQW5zaUVuY29kaW5nL0ZvbnREZXNjcmlwdG9yIDEwIDAgUi9GaXJzdENoYXIgMzIvTGFz + dENoYXIgMTIwL1dpZHRocyAyNTEgMCBSPj4NCmVuZG9iag0KMTAgMCBvYmoNCjw8L1R5cGUvRm9u + dERlc2NyaXB0b3IvRm9udE5hbWUvQkNERkVFK0NhbGlicmktQm9sZC9GbGFncyAzMi9JdGFsaWNB + bmdsZSAwL0FzY2VudCA3NTAvRGVzY2VudCAtMjUwL0NhcEhlaWdodCA3NTAvQXZnV2lkdGggNTM2 + L01heFdpZHRoIDE3ODEvRm9udFdlaWdodCA3MDAvWEhlaWdodCAyNTAvU3RlbVYgNTMvRm9udEJC + b3hbIC01MTkgLTI1MCAxMjYzIDc1MF0gL0ZvbnRGaWxlMiAyNTIgMCBSPj4NCmVuZG9iag0KMTEg + MCBvYmoNCjw8L1R5cGUvUGFnZS9QYXJlbnQgMiAwIFIvUmVzb3VyY2VzPDwvRm9udDw8L0YyIDkg + MCBSPj4vRXh0R1N0YXRlPDwvR1M3IDcgMCBSL0dTOCA4IDAgUj4+L1Byb2NTZXRbL1BERi9UZXh0 + L0ltYWdlQi9JbWFnZUMvSW1hZ2VJXSA+Pi9NZWRpYUJveFsgMCAwIDYxMiA3OTJdIC9Db250ZW50 + cyAxMiAwIFIvR3JvdXA8PC9UeXBlL0dyb3VwL1MvVHJhbnNwYXJlbmN5L0NTL0RldmljZVJHQj4+ + L1RhYnMvUy9TdHJ1Y3RQYXJlbnRzIDE+Pg0KZW5kb2JqDQoxMiAwIG9iag0KPDwvRmlsdGVyL0Zs + YXRlRGVjb2RlL0xlbmd0aCA0NzY+Pg0Kc3RyZWFtDQp4nK2Yu2ocQRBF84H5hwplB7Vdj36BUKCV + LGwQ2GjBgVEoKZLA9v+Dy4sDh6rmTjDQzNCne6BO3xo6fKXLy8P98fMNlasrur450s99K1z+XlOU + CrW496n062nfvn+kt327Pu3b4ZNSPDg975vES4WEunJRp14Ge6PTa7x099Dp5XdMSC/n0fg3utu3 + Hxf04ZFOX/btNqb7tm90e38k+m9BAlpQm8pNzws6r+OdeEXhe+M+0nhD4VvhKWm8o/Be2fL4isLr + ZO9pfEPhxbhZGt9B+Do795nGDxR+CM/87icK3xqX/O4FJcJaC2vN81Heq+bs+dITlPiqDB4LfJT5 + alGe+doXlPp8dF7YPkp93oW15fko93mt7PljV1Dyc5tc8+euoOznatw9z0fpzyOHyULsQenPInZp + /vsrSn8Wucvz319R+rMIXvnyU5T9zJ37Ah9lP9PB+cNXUfazSF5lYfso+2lEL12oPpT9NLLXStOD + sp+2utL1KMp+6pNnvvoNZT+N8FXy4cNQ9tMIX5rP3oayn0b4snz9G0p/MhrXfPg2lP6kR9u9wEf5 + TyJ9LTQ/hvKfRPpaaH4M5T+J9LXQ/BjKf1I614X6R/lvCveF9OWwv4CVR3uff/8AMWTgdQ0KZW5k + c3RyZWFtDQplbmRvYmoNCjEzIDAgb2JqDQo8PC9UeXBlL1BhZ2UvUGFyZW50IDIgMCBSL1Jlc291 + cmNlczw8L0ZvbnQ8PC9GMSA1IDAgUi9GMiA5IDAgUj4+L0V4dEdTdGF0ZTw8L0dTNyA3IDAgUi9H + UzggOCAwIFI+Pi9Qcm9jU2V0Wy9QREYvVGV4dC9JbWFnZUIvSW1hZ2VDL0ltYWdlSV0gPj4vTWVk + aWFCb3hbIDAgMCA2MTIgNzkyXSAvQ29udGVudHMgMTQgMCBSL0dyb3VwPDwvVHlwZS9Hcm91cC9T + L1RyYW5zcGFyZW5jeS9DUy9EZXZpY2VSR0I+Pi9UYWJzL1MvU3RydWN0UGFyZW50cyAyPj4NCmVu + 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 + mxWDaazuLffHZf/XyULlydKvhoeloFgtJRTUpHahL93+mltBGOxpKTm6Y7Lu6v7GpCD11DNaQExK + 6AdgSOeZT717wkML9upBhyuL6n11mfRLsw1gXRIVLp3a0+/RA+T32sKAIVRhtoQn9+zXM8QITO+A + 9glKLNq+F87X3ru/nWXj+ea8/ouJHAe52xbDiDYr2x4OQ5UX8RyPeO0OBw4teexOr37fA/vb+QJ0 + +xYuIfZaweC/AN6IFYv+0NkZIO4MmKuL8ERtde5O1TH+MO+X/kbPZ/AJ9Sd9u/979eA4Gd6x3mUW + g6WWMJhZi94xhb0jFJHhecL9wep69bHn+5wihEsfiDWLTrGFneJuoM3PeF46LXyXMMzZUOHYoeH7 + xGCtb1Gxwi2rGcxq7BqXFo4omJxw9Qd5lMFVFhVbOo1958iBPCIwaeRJ4/8DtXV3Ww0KZW5kc3Ry + ZWFtDQplbmRvYmoNCjE1IDAgb2JqDQo8PC9BdXRob3IoS3Jpc3RhIFByYXRpY28pIC9DcmVhdG9y + KP7/AE0AaQBjAHIAbwBzAG8AZgB0AK4AIABXAG8AcgBkACAAZgBvAHIAIABPAGYAZgBpAGMAZQAg + ADMANgA1KSAvQ3JlYXRpb25EYXRlKEQ6MjAyMDA0MjIxNjQ1MjktMDcnMDAnKSAvTW9kRGF0ZShE + OjIwMjAwNDIyMTY0NTI5LTA3JzAwJykgL1Byb2R1Y2VyKP7/AE0AaQBjAHIAbwBzAG8AZgB0AK4A + IABXAG8AcgBkACAAZgBvAHIAIABPAGYAZgBpAGMAZQAgADMANgA1KSA+Pg0KZW5kb2JqDQoyMyAw + IG9iag0KPDwvVHlwZS9PYmpTdG0vTiAyMzIvRmlyc3QgMjAzNS9GaWx0ZXIvRmxhdGVEZWNvZGUv + TGVuZ3RoIDMwNTE+Pg0Kc3RyZWFtDQp4nO1b24ocyRF9N/gf8g+mIu8Jy4Jt7WKzrBCSwA/CDyOp + LQ07M72MWiD9vc+pipyetTOz1Gn7weCHmbrG/UTkpaKtmMXYYIIYG40s2dhkJOIezsQaW3DfG7cY + J9FYnMWMU+NjMM6CLBrnTIjJOG+i4FkwMRa8ZpIFUTIp4W1rsrXGi8nJGe9NAUPvTMnkBLEuGx9w + LLi9GBEPfsWIBcOAawuOHtfOigkWx5SpsXiwCR7HnExwRgKIfMaxRBNoB/QK4J+kmAD6lHAfzzOs + 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 + o7YHauOettT9bxfFC374xVj+v4b+R2qoOrMW0tkCqt2Sut9ed8Hr1nDdsK3bqHVDsm4T1s27ug1W + N6fqllHdfKlbInWjoi7560K8Lo/rQrMu/+qirC5v6qKjLgX+W4W/fs361q9fDMY/AFTdMPANCmVu + ZHN0cmVhbQ0KZW5kb2JqDQoyNDkgMCBvYmoNClsgMjI2IDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAy + NTAgMzA2IDI1MiAwIDUwNyA1MDcgNTA3IDUwNyA1MDcgNTA3IDUwNyA1MDcgNTA3IDUwNyAyNjgg + MCAwIDAgMCAwIDAgNTc5IDU0NCA1MzMgNjE1IDQ4OCA0NTkgNjMxIDYyMyAyNTIgMCAwIDQyMCA4 + NTUgMCAwIDUxNyA2NzMgNTQzIDQ1OSAwIDAgMCA4OTAgMCAwIDAgMCAwIDAgMCAwIDAgNDc5IDUy + NSA0MjMgNTI1IDQ5OCAwIDQ3MSAwIDIzMCAwIDAgMjMwIDc5OSA1MjUgNTI3IDUyNSAwIDM0OSAz + OTEgMzM1IDUyNSA0NTIgMCAwIDQ1M10gDQplbmRvYmoNCjI1MCAwIG9iag0KPDwvRmlsdGVyL0Zs + YXRlRGVjb2RlL0xlbmd0aCA1MzE4Mi9MZW5ndGgxIDEzNzU5Nj4+DQpzdHJlYW0NCnic7H0HXFTH + 2v475+zCUhaWKrLiLq6Auig2FEtklaJoLCirgA2k2LChGI0lJEZNSEy5Mb2ZnhtNsqwaMdXkphfT + e+/JjaZdzc01Ub5nzruDaDTJvfd/v3z3/9sXnvM8887Me2bmzMyZjRBIEJENFxNVFIzIL1mf7HuW + xJeZRLFJBSNOzbvntXVfkfhoNVGIb/ykrL7XPly5k0icg1oVVQsqF7/T99MUovmbicyDq5Yvc+5e + /EY20Y1fIH1/7eLZC9a+pw8kWvwCkdU9u25l7bvOlS6i228meumvc2oqq38cu9KHeJGIN2AOHNY7 + O+1HOh/prnMWLFuRPXOSG2nEm7utblFV5U2b53cjseoiFJ+8oHLF4l7W9G7In4PyzgU1yyqvOmvL + chI/yfpnL6xcUHPdoYMzSTSjfu+lixctXdZqpw3ozzRZfnF9zeK42V06Eq35GbdDP+ENGfzhP3a9 + WDAzeuhB6mghafd9tfpZya8XnTb+p0OHG8P2WQYgGUYasaFeCB0h8Wj4lp8OHdoSts+I1M46bpMe + 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 + wAKEAiGAGTANb8VVBzRAAETVAj5xBDgM/Az8BBwC/gH8CPwd+AE4CBwA/gZ8D3wHfAt8A3wN7Af2 + AV8BfwW+BL4APgc+Az4FPgE+Bj4CPgQ+AN4H3gPeBd4B3gbeAt4E3gBeB14DXgVeAV4GXgJeBF4A + ngf2As8BzwLPAE8DTwFPAk8AjwOPAY8CfwEeAR4G9gAPAQ8CDwD3A/cB9wK7gRZgF3APsBPYAWwH + /EAz4APuBu4C7gS2AVuBO4A/A7cDtwG3ArcANwM3ATcCNwBbgOuB64BrgWuAq4GrgCuBK4DLgcuA + S4HNwCXAn4CLgYuAC4ELgE3A+cB5QBNwLnAOsBHYAKyn6uGNAutfYP0LrH+B9S+w/gXWv8D6F1j/ + AutfYP0LrH+B9S+w/gXWv8D6F1j/AutfYP2LegB7gMAeILAHCOwBAnuAwB4gsAcI7AECe4DAHiCw + BwjsAQJ7gMAeILAHCOwBAnuAwB4gsAcI7AECe4DAHiCwBwjsAQJ7gMAeILAHCOwBAnuAwB4gsAcI + 7AEC619g/Qusf4G1L7D2Bda+wNoXWPsCa19g7QusfYG1L7D2/+h9+L/cyv7oBvyXGy1d2u5gJi1p + pvyFp9DriI5ccszvqUygebSUGvG1gTbRJfQQvU2zaB3UlbSFbqU/k48epqfo9d/xOy+/246sNC+g + SH0XhVAcUeuh1v1HbgVazFHtPJcgFWdyHvW02lq/Ps739ZFLWm1HWkJiKdyoa9Vegvdv4nDrIbxy + kW4dINPaRuhoo8Z3odcdufvIbceNQTGV01SaRtOpgirR/2qaQ3MxMvOpjhbQQiO1EHmzca1FaiZK + YXsx9NFSi2gxUE/LqIGW42sx9NJASuYtMdINdBq+VtBKOp1W0WpaE7ieZnhWI+d0I70CWEtn4Mmc + SWcZSjF71tHZtB5PbSOdQ+f+aurcNtVE59H5eM4X0IUn1ZuOSV2Er4vpT5gPm+lSuoyuwLy4mq45 + znu54b+KrqPrMWdk3qXwXG8omXs/PU476S66m+4xxrIKo8Yjosal1hjDxRiD1ejhunYt5vE7rW20 + 1qLvsm9NgZ6ugP+sdjWWB8ZRllyHkhyFn4OMsua4kbgIfWB9tEecutTo/1Fv+1H5Na8aj2vajczV + Rkqq470n05fRtViBN+AqR1WqG6FZXW/o9v7r2spuMdI30c10C57FbYZSzJ5boW+j27G276CttA1f + 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 + IDAgMCAwIDQ1OSAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCA0NzMgNDk1IDAgMCAwIDAgMCAwIDAg + MCAwIDAgNDk4IDAgNDk0IDUzNyAwIDUzNyA1MDMgMCA0NzQgMCAyNDYgMCAwIDI0NiAwIDUzNyA1 + MzggNTM3IDAgMzU1IDM5OSAzNDcgNTM3IDAgMCA0NTldIA0KZW5kb2JqDQoyNTIgMCBvYmoNCjw8 + L0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggMzM2MzMvTGVuZ3RoMSAxMDI3MDQ+Pg0Kc3RyZWFt + DQp4nOydCXiTVdb4z33fLM3WJl3SJU2aNk26J90otAUaulEoW6HBFgRaaLG4UYGqoAzgglhFVFzG + BUFHxwWUNIAUQUTFXdQZUccdlxnXjqjgKNDkf+570tIiuMz4jd//+XLa8/7uPffcfXsj8SkwANDj + QwZNVeWV9bcVPhsGrO2PAGqMj6t4/SnTOGBzDqBD98Qprvz1X835GoCtwlxNc85pblc9YVwHcNYN + mP7wnPMXWcseafgS4NpKAMWque1nnHPn5+WbANrHAaiizjh78dyPlhs+ArjpRYC5+rbW5pbvT198 + CZanxfKK2tCg25n4KsYxP6S2nbPowsefSy3F+KcA8zadPX9O81VvnncY4Ng76D71nOYL29Pvi7Ng + ehv6W89pXdR86yUbzge24HuMX3Zu8zmt75e/mgusoBAg96r2+QsXBUywEvuzh/u3L2ht/8H9/EKA + xU0Axg+Aj4Wi5IMVj770+KyI4YchPgy47Pzi4hc53xhzweSjb/UOUSeETUJfFQhAgvkU4Ae2V73h + 6FtHVqoTpJIGSPwmbjFlwlrQw4UgYk49uABr1X6P9QqYKsrGCrtADmHyW+QFWKSFKL4CjwgQBkKE + UhBlMlGQfQzOwB5IvQiLVfGyx0+xWsEKYH+R2qC8Q3BYgQV4mrhHHs57CtGy8OOtYS/jbL0JsfAr + RXYxrP61eX5OxE2/fZm/RBT+/0694rNQdlL7d6D9b9R/MpGNBvWvzjMM982p0q4bnCauObXvIL8G + WCm7HRp+ykfQ/3RZmB53yrRjJ8+rqMF6nzl5muwt8PxUfSeK2Hu8HJn9hHGYDxUnzXMRmAbVuQku + +zV1nkxkMnD8Ej/xWxj9q8uuhT/8Ct/aQXEljP219f1vFPGFwXPG5cS+nijsX3DWz5WLPj87tj/l + 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 + KrFHQKlmZxW8qHpfRETYMZZdos8K9Tc0bmVNGZWf8PP4qiK6kZk7D1Hp68k6+cqujnrMi0+QTUvB + 02LWgEvJpMfQvQGNGyJ9Cp8e2OiVa3QkzxGYHxUIMdPMzhyDZ2iKtYRjadyCZoFjccXgVeuxLKL/ + AfpFWhMNCmVuZHN0cmVhbQ0KZW5kb2JqDQoyNTMgMCBvYmoNCjw8L1R5cGUvTWV0YWRhdGEvU3Vi + dHlwZS9YTUwvTGVuZ3RoIDMwODQ+Pg0Kc3RyZWFtDQo8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9 + Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/Pjx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6 + bWV0YS8iIHg6eG1wdGs9IjMuMS03MDEiPgo8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cu + dzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgo8cmRmOkRlc2NyaXB0aW9uIHJkZjph + Ym91dD0iIiAgeG1sbnM6cGRmPSJodHRwOi8vbnMuYWRvYmUuY29tL3BkZi8xLjMvIj4KPHBkZjpQ + cm9kdWNlcj5NaWNyb3NvZnTCriBXb3JkIGZvciBPZmZpY2UgMzY1PC9wZGY6UHJvZHVjZXI+PC9y + ZGY6RGVzY3JpcHRpb24+CjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiICB4bWxuczpkYz0i + aHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iPgo8ZGM6Y3JlYXRvcj48cmRmOlNlcT48 + cmRmOmxpPktyaXN0YSBQcmF0aWNvPC9yZGY6bGk+PC9yZGY6U2VxPjwvZGM6Y3JlYXRvcj48L3Jk + ZjpEZXNjcmlwdGlvbj4KPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgIHhtbG5zOnhtcD0i + aHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyI+Cjx4bXA6Q3JlYXRvclRvb2w+TWljcm9zb2Z0 + wq4gV29yZCBmb3IgT2ZmaWNlIDM2NTwveG1wOkNyZWF0b3JUb29sPjx4bXA6Q3JlYXRlRGF0ZT4y + MDIwLTA0LTIyVDE2OjQ1OjI5LTA3OjAwPC94bXA6Q3JlYXRlRGF0ZT48eG1wOk1vZGlmeURhdGU+ + MjAyMC0wNC0yMlQxNjo0NToyOS0wNzowMDwveG1wOk1vZGlmeURhdGU+PC9yZGY6RGVzY3JpcHRp + b24+CjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiICB4bWxuczp4bXBNTT0iaHR0cDovL25z + LmFkb2JlLmNvbS94YXAvMS4wL21tLyI+Cjx4bXBNTTpEb2N1bWVudElEPnV1aWQ6NThCQjA4MDUt + RjY5Ri00NDBGLTgzOUItMURFMDI1NjUxREUyPC94bXBNTTpEb2N1bWVudElEPjx4bXBNTTpJbnN0 + YW5jZUlEPnV1aWQ6NThCQjA4MDUtRjY5Ri00NDBGLTgzOUItMURFMDI1NjUxREUyPC94bXBNTTpJ + bnN0YW5jZUlEPjwvcmRmOkRlc2NyaXB0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKPC9y + ZGY6UkRGPjwveDp4bXBtZXRhPjw/eHBhY2tldCBlbmQ9InciPz4NCmVuZHN0cmVhbQ0KZW5kb2Jq + DQoyNTQgMCBvYmoNCjw8L0Rpc3BsYXlEb2NUaXRsZSB0cnVlPj4NCmVuZG9iag0KMjU1IDAgb2Jq + DQo8PC9UeXBlL1hSZWYvU2l6ZSAyNTUvV1sgMSA0IDJdIC9Sb290IDEgMCBSL0luZm8gMTUgMCBS + L0lEWzwwNTA4QkI1ODlGRjYwRjQ0ODM5QjFERTAyNTY1MURFMj48MDUwOEJCNTg5RkY2MEY0NDgz + OUIxREUwMjU2NTFERTI+XSAvRmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0aCA1MDc+Pg0Kc3RyZWFt + DQp4nDXV93fPZxQH8E9sSojZGkG0tQmKGrVHFKU2tUeomrXTauy9YlMdKFV7U3vvHUWJvX7rv5B+ + 83nx3HOe17nn3Ht/fQdB5KWnR0X+mCDIYAv+C4lKD8mTFBJdJiRvASRgcki+SiExcSH5dQU7hhRK + DCk9JggyRU4XCZ7jBV7iFZ7h3eTryF5c8vsuO6KQCZmRBVmRDTmQE7nwAXIjD6LRCoVRCPmQF/kR + g4IogASUwIcogqL4CMVRDB+jJGJRGqVQBnGoiE/xCcqhLCqgPKqjMiqhKqqgGuJRB5+hBmqhJj5H + bTRCPdTFF6iPhmiAlmiCxmiGpmiB5vgSrdEGbfEV2qE9vkYHdEQndEYXdEU3dEcPfIOe6IXe6IO+ + 6If+eIMBGIhBSMRgDMG3GIrvMAzDMQIjMQqj8T3GYCzGYTwmYCImIQk/4EdMxk9IxhRMxTRMxwzM + xCzMxhzMxTzMx1ssxQIsxCIsxhKkYBmWYwVWYhVWYw3uYj1+x89Yi1+wDr/hV6RiCzZiAzbhD/yJ + zdiFrfgL27ENO7EDB7EHu7EPe3EA+3Ech3EIR/A3juEozuEkTuA0TuEszuAqLuA8LuEiruAy7uA6 + ruEmbuA2buEf3MN9PMC/eIhHSMNjPMHTSFpUSQ3DJj4jvSJVPCQqNmRGWkhK/SD4H/tbjC8NCmVu + ZHN0cmVhbQ0KZW5kb2JqDQp4cmVmDQowIDI1Ng0KMDAwMDAwMDAxNiA2NTUzNSBmDQowMDAwMDAw + MDE3IDAwMDAwIG4NCjAwMDAwMDAxNjggMDAwMDAgbg0KMDAwMDAwMDIzOCAwMDAwMCBuDQowMDAw + MDAwNTExIDAwMDAwIG4NCjAwMDAwMDM0NTAgMDAwMDAgbg0KMDAwMDAwMzYxOSAwMDAwMCBuDQow + MDAwMDAzODU5IDAwMDAwIG4NCjAwMDAwMDM5MTIgMDAwMDAgbg0KMDAwMDAwMzk2NSAwMDAwMCBu + DQowMDAwMDA0MTQwIDAwMDAwIG4NCjAwMDAwMDQzODYgMDAwMDAgbg0KMDAwMDAwNDY1MiAwMDAw + MCBuDQowMDAwMDA1MjAzIDAwMDAwIG4NCjAwMDAwMDU0NzggMDAwMDAgbg0KMDAwMDAwODU2MyAw + MDAwMCBuDQowMDAwMDAwMDE3IDY1NTM1IGYNCjAwMDAwMDAwMTggNjU1MzUgZg0KMDAwMDAwMDAx + OSA2NTUzNSBmDQowMDAwMDAwMDIwIDY1NTM1IGYNCjAwMDAwMDAwMjEgNjU1MzUgZg0KMDAwMDAw + MDAyMiA2NTUzNSBmDQowMDAwMDAwMDIzIDY1NTM1IGYNCjAwMDAwMDAwMjQgNjU1MzUgZg0KMDAw + MDAwMDAyNSA2NTUzNSBmDQowMDAwMDAwMDI2IDY1NTM1IGYNCjAwMDAwMDAwMjcgNjU1MzUgZg0K + MDAwMDAwMDAyOCA2NTUzNSBmDQowMDAwMDAwMDI5IDY1NTM1IGYNCjAwMDAwMDAwMzAgNjU1MzUg + Zg0KMDAwMDAwMDAzMSA2NTUzNSBmDQowMDAwMDAwMDMyIDY1NTM1IGYNCjAwMDAwMDAwMzMgNjU1 + MzUgZg0KMDAwMDAwMDAzNCA2NTUzNSBmDQowMDAwMDAwMDM1IDY1NTM1IGYNCjAwMDAwMDAwMzYg + NjU1MzUgZg0KMDAwMDAwMDAzNyA2NTUzNSBmDQowMDAwMDAwMDM4IDY1NTM1IGYNCjAwMDAwMDAw + MzkgNjU1MzUgZg0KMDAwMDAwMDA0MCA2NTUzNSBmDQowMDAwMDAwMDQxIDY1NTM1IGYNCjAwMDAw + MDAwNDIgNjU1MzUgZg0KMDAwMDAwMDA0MyA2NTUzNSBmDQowMDAwMDAwMDQ0IDY1NTM1IGYNCjAw + MDAwMDAwNDUgNjU1MzUgZg0KMDAwMDAwMDA0NiA2NTUzNSBmDQowMDAwMDAwMDQ3IDY1NTM1IGYN + CjAwMDAwMDAwNDggNjU1MzUgZg0KMDAwMDAwMDA0OSA2NTUzNSBmDQowMDAwMDAwMDUwIDY1NTM1 + IGYNCjAwMDAwMDAwNTEgNjU1MzUgZg0KMDAwMDAwMDA1MiA2NTUzNSBmDQowMDAwMDAwMDUzIDY1 + NTM1IGYNCjAwMDAwMDAwNTQgNjU1MzUgZg0KMDAwMDAwMDA1NSA2NTUzNSBmDQowMDAwMDAwMDU2 + IDY1NTM1IGYNCjAwMDAwMDAwNTcgNjU1MzUgZg0KMDAwMDAwMDA1OCA2NTUzNSBmDQowMDAwMDAw + MDU5IDY1NTM1IGYNCjAwMDAwMDAwNjAgNjU1MzUgZg0KMDAwMDAwMDA2MSA2NTUzNSBmDQowMDAw + MDAwMDYyIDY1NTM1IGYNCjAwMDAwMDAwNjMgNjU1MzUgZg0KMDAwMDAwMDA2NCA2NTUzNSBmDQow + MDAwMDAwMDY1IDY1NTM1IGYNCjAwMDAwMDAwNjYgNjU1MzUgZg0KMDAwMDAwMDA2NyA2NTUzNSBm + DQowMDAwMDAwMDY4IDY1NTM1IGYNCjAwMDAwMDAwNjkgNjU1MzUgZg0KMDAwMDAwMDA3MCA2NTUz + NSBmDQowMDAwMDAwMDcxIDY1NTM1IGYNCjAwMDAwMDAwNzIgNjU1MzUgZg0KMDAwMDAwMDA3MyA2 + NTUzNSBmDQowMDAwMDAwMDc0IDY1NTM1IGYNCjAwMDAwMDAwNzUgNjU1MzUgZg0KMDAwMDAwMDA3 + NiA2NTUzNSBmDQowMDAwMDAwMDc3IDY1NTM1IGYNCjAwMDAwMDAwNzggNjU1MzUgZg0KMDAwMDAw + MDA3OSA2NTUzNSBmDQowMDAwMDAwMDgwIDY1NTM1IGYNCjAwMDAwMDAwODEgNjU1MzUgZg0KMDAw + MDAwMDA4MiA2NTUzNSBmDQowMDAwMDAwMDgzIDY1NTM1IGYNCjAwMDAwMDAwODQgNjU1MzUgZg0K + MDAwMDAwMDA4NSA2NTUzNSBmDQowMDAwMDAwMDg2IDY1NTM1IGYNCjAwMDAwMDAwODcgNjU1MzUg + Zg0KMDAwMDAwMDA4OCA2NTUzNSBmDQowMDAwMDAwMDg5IDY1NTM1IGYNCjAwMDAwMDAwOTAgNjU1 + MzUgZg0KMDAwMDAwMDA5MSA2NTUzNSBmDQowMDAwMDAwMDkyIDY1NTM1IGYNCjAwMDAwMDAwOTMg + NjU1MzUgZg0KMDAwMDAwMDA5NCA2NTUzNSBmDQowMDAwMDAwMDk1IDY1NTM1IGYNCjAwMDAwMDAw + OTYgNjU1MzUgZg0KMDAwMDAwMDA5NyA2NTUzNSBmDQowMDAwMDAwMDk4IDY1NTM1IGYNCjAwMDAw + MDAwOTkgNjU1MzUgZg0KMDAwMDAwMDEwMCA2NTUzNSBmDQowMDAwMDAwMTAxIDY1NTM1IGYNCjAw + MDAwMDAxMDIgNjU1MzUgZg0KMDAwMDAwMDEwMyA2NTUzNSBmDQowMDAwMDAwMTA0IDY1NTM1IGYN + CjAwMDAwMDAxMDUgNjU1MzUgZg0KMDAwMDAwMDEwNiA2NTUzNSBmDQowMDAwMDAwMTA3IDY1NTM1 + IGYNCjAwMDAwMDAxMDggNjU1MzUgZg0KMDAwMDAwMDEwOSA2NTUzNSBmDQowMDAwMDAwMTEwIDY1 + NTM1IGYNCjAwMDAwMDAxMTEgNjU1MzUgZg0KMDAwMDAwMDExMiA2NTUzNSBmDQowMDAwMDAwMTEz + IDY1NTM1IGYNCjAwMDAwMDAxMTQgNjU1MzUgZg0KMDAwMDAwMDExNSA2NTUzNSBmDQowMDAwMDAw + MTE2IDY1NTM1IGYNCjAwMDAwMDAxMTcgNjU1MzUgZg0KMDAwMDAwMDExOCA2NTUzNSBmDQowMDAw + MDAwMTE5IDY1NTM1IGYNCjAwMDAwMDAxMjAgNjU1MzUgZg0KMDAwMDAwMDEyMSA2NTUzNSBmDQow + MDAwMDAwMTIyIDY1NTM1IGYNCjAwMDAwMDAxMjMgNjU1MzUgZg0KMDAwMDAwMDEyNCA2NTUzNSBm + DQowMDAwMDAwMTI1IDY1NTM1IGYNCjAwMDAwMDAxMjYgNjU1MzUgZg0KMDAwMDAwMDEyNyA2NTUz + NSBmDQowMDAwMDAwMTI4IDY1NTM1IGYNCjAwMDAwMDAxMjkgNjU1MzUgZg0KMDAwMDAwMDEzMCA2 + NTUzNSBmDQowMDAwMDAwMTMxIDY1NTM1IGYNCjAwMDAwMDAxMzIgNjU1MzUgZg0KMDAwMDAwMDEz + MyA2NTUzNSBmDQowMDAwMDAwMTM0IDY1NTM1IGYNCjAwMDAwMDAxMzUgNjU1MzUgZg0KMDAwMDAw + MDEzNiA2NTUzNSBmDQowMDAwMDAwMTM3IDY1NTM1IGYNCjAwMDAwMDAxMzggNjU1MzUgZg0KMDAw + MDAwMDEzOSA2NTUzNSBmDQowMDAwMDAwMTQwIDY1NTM1IGYNCjAwMDAwMDAxNDEgNjU1MzUgZg0K + MDAwMDAwMDE0MiA2NTUzNSBmDQowMDAwMDAwMTQzIDY1NTM1IGYNCjAwMDAwMDAxNDQgNjU1MzUg + Zg0KMDAwMDAwMDE0NSA2NTUzNSBmDQowMDAwMDAwMTQ2IDY1NTM1IGYNCjAwMDAwMDAxNDcgNjU1 + MzUgZg0KMDAwMDAwMDE0OCA2NTUzNSBmDQowMDAwMDAwMTQ5IDY1NTM1IGYNCjAwMDAwMDAxNTAg + NjU1MzUgZg0KMDAwMDAwMDE1MSA2NTUzNSBmDQowMDAwMDAwMTUyIDY1NTM1IGYNCjAwMDAwMDAx + NTMgNjU1MzUgZg0KMDAwMDAwMDE1NCA2NTUzNSBmDQowMDAwMDAwMTU1IDY1NTM1IGYNCjAwMDAw + MDAxNTYgNjU1MzUgZg0KMDAwMDAwMDE1NyA2NTUzNSBmDQowMDAwMDAwMTU4IDY1NTM1IGYNCjAw + MDAwMDAxNTkgNjU1MzUgZg0KMDAwMDAwMDE2MCA2NTUzNSBmDQowMDAwMDAwMTYxIDY1NTM1IGYN + CjAwMDAwMDAxNjIgNjU1MzUgZg0KMDAwMDAwMDE2MyA2NTUzNSBmDQowMDAwMDAwMTY0IDY1NTM1 + IGYNCjAwMDAwMDAxNjUgNjU1MzUgZg0KMDAwMDAwMDE2NiA2NTUzNSBmDQowMDAwMDAwMTY3IDY1 + NTM1IGYNCjAwMDAwMDAxNjggNjU1MzUgZg0KMDAwMDAwMDE2OSA2NTUzNSBmDQowMDAwMDAwMTcw + IDY1NTM1IGYNCjAwMDAwMDAxNzEgNjU1MzUgZg0KMDAwMDAwMDE3MiA2NTUzNSBmDQowMDAwMDAw + MTczIDY1NTM1IGYNCjAwMDAwMDAxNzQgNjU1MzUgZg0KMDAwMDAwMDE3NSA2NTUzNSBmDQowMDAw + MDAwMTc2IDY1NTM1IGYNCjAwMDAwMDAxNzcgNjU1MzUgZg0KMDAwMDAwMDE3OCA2NTUzNSBmDQow + MDAwMDAwMTc5IDY1NTM1IGYNCjAwMDAwMDAxODAgNjU1MzUgZg0KMDAwMDAwMDE4MSA2NTUzNSBm + DQowMDAwMDAwMTgyIDY1NTM1IGYNCjAwMDAwMDAxODMgNjU1MzUgZg0KMDAwMDAwMDE4NCA2NTUz + NSBmDQowMDAwMDAwMTg1IDY1NTM1IGYNCjAwMDAwMDAxODYgNjU1MzUgZg0KMDAwMDAwMDE4NyA2 + NTUzNSBmDQowMDAwMDAwMTg4IDY1NTM1IGYNCjAwMDAwMDAxODkgNjU1MzUgZg0KMDAwMDAwMDE5 + MCA2NTUzNSBmDQowMDAwMDAwMTkxIDY1NTM1IGYNCjAwMDAwMDAxOTIgNjU1MzUgZg0KMDAwMDAw + MDE5MyA2NTUzNSBmDQowMDAwMDAwMTk0IDY1NTM1IGYNCjAwMDAwMDAxOTUgNjU1MzUgZg0KMDAw + MDAwMDE5NiA2NTUzNSBmDQowMDAwMDAwMTk3IDY1NTM1IGYNCjAwMDAwMDAxOTggNjU1MzUgZg0K + MDAwMDAwMDE5OSA2NTUzNSBmDQowMDAwMDAwMjAwIDY1NTM1IGYNCjAwMDAwMDAyMDEgNjU1MzUg + Zg0KMDAwMDAwMDIwMiA2NTUzNSBmDQowMDAwMDAwMjAzIDY1NTM1IGYNCjAwMDAwMDAyMDQgNjU1 + MzUgZg0KMDAwMDAwMDIwNSA2NTUzNSBmDQowMDAwMDAwMjA2IDY1NTM1IGYNCjAwMDAwMDAyMDcg + NjU1MzUgZg0KMDAwMDAwMDIwOCA2NTUzNSBmDQowMDAwMDAwMjA5IDY1NTM1IGYNCjAwMDAwMDAy + MTAgNjU1MzUgZg0KMDAwMDAwMDIxMSA2NTUzNSBmDQowMDAwMDAwMjEyIDY1NTM1IGYNCjAwMDAw + MDAyMTMgNjU1MzUgZg0KMDAwMDAwMDIxNCA2NTUzNSBmDQowMDAwMDAwMjE1IDY1NTM1IGYNCjAw + MDAwMDAyMTYgNjU1MzUgZg0KMDAwMDAwMDIxNyA2NTUzNSBmDQowMDAwMDAwMjE4IDY1NTM1IGYN + CjAwMDAwMDAyMTkgNjU1MzUgZg0KMDAwMDAwMDIyMCA2NTUzNSBmDQowMDAwMDAwMjIxIDY1NTM1 + IGYNCjAwMDAwMDAyMjIgNjU1MzUgZg0KMDAwMDAwMDIyMyA2NTUzNSBmDQowMDAwMDAwMjI0IDY1 + NTM1IGYNCjAwMDAwMDAyMjUgNjU1MzUgZg0KMDAwMDAwMDIyNiA2NTUzNSBmDQowMDAwMDAwMjI3 + IDY1NTM1IGYNCjAwMDAwMDAyMjggNjU1MzUgZg0KMDAwMDAwMDIyOSA2NTUzNSBmDQowMDAwMDAw + MjMwIDY1NTM1IGYNCjAwMDAwMDAyMzEgNjU1MzUgZg0KMDAwMDAwMDIzMiA2NTUzNSBmDQowMDAw + MDAwMjMzIDY1NTM1IGYNCjAwMDAwMDAyMzQgNjU1MzUgZg0KMDAwMDAwMDIzNSA2NTUzNSBmDQow + MDAwMDAwMjM2IDY1NTM1IGYNCjAwMDAwMDAyMzcgNjU1MzUgZg0KMDAwMDAwMDIzOCA2NTUzNSBm + DQowMDAwMDAwMjM5IDY1NTM1IGYNCjAwMDAwMDAyNDAgNjU1MzUgZg0KMDAwMDAwMDI0MSA2NTUz + NSBmDQowMDAwMDAwMjQyIDY1NTM1IGYNCjAwMDAwMDAyNDMgNjU1MzUgZg0KMDAwMDAwMDI0NCA2 + NTUzNSBmDQowMDAwMDAwMjQ1IDY1NTM1IGYNCjAwMDAwMDAyNDYgNjU1MzUgZg0KMDAwMDAwMDI0 + NyA2NTUzNSBmDQowMDAwMDAwMjQ4IDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAx + MTk4NyAwMDAwMCBuDQowMDAwMDEyMjg5IDAwMDAwIG4NCjAwMDAwNjU1NjQgMDAwMDAgbg0KMDAw + MDA2NTgyMiAwMDAwMCBuDQowMDAwMDk5NTQ4IDAwMDAwIG4NCjAwMDAxMDI3MTYgMDAwMDAgbg0K + MDAwMDEwMjc2MiAwMDAwMCBuDQp0cmFpbGVyDQo8PC9TaXplIDI1Ni9Sb290IDEgMCBSL0luZm8g + MTUgMCBSL0lEWzwwNTA4QkI1ODlGRjYwRjQ0ODM5QjFERTAyNTY1MURFMj48MDUwOEJCNTg5RkY2 + MEY0NDgzOUIxREUwMjU2NTFERTI+XSA+Pg0Kc3RhcnR4cmVmDQoxMDM0NzINCiUlRU9GDQp4cmVm + DQowIDANCnRyYWlsZXINCjw8L1NpemUgMjU2L1Jvb3QgMSAwIFIvSW5mbyAxNSAwIFIvSURbPDA1 + MDhCQjU4OUZGNjBGNDQ4MzlCMURFMDI1NjUxREUyPjwwNTA4QkI1ODlGRjYwRjQ0ODM5QjFERTAy + NTY1MURFMj5dIC9QcmV2IDEwMzQ3Mi9YUmVmU3RtIDEwMjc2Mj4+DQpzdGFydHhyZWYNCjEwODc1 + Mg0KJSVFT0Y= + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '108935' + Content-Type: + - application/pdf + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/920b2bed-8863-4e68-9c1d-7b11d036212e/analyze?includeTextDetails=false + response: + body: + string: '' + headers: + apim-request-id: + - 0db3f0b1-cfc3-4344-b4fd-78379ad2c3cb + content-length: + - '0' + date: + - Thu, 23 Apr 2020 23:35:53 GMT + operation-location: + - https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/920b2bed-8863-4e68-9c1d-7b11d036212e/analyzeresults/f007a613-dcd6-4b59-9987-b8688c3b7493 + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '1068' + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/920b2bed-8863-4e68-9c1d-7b11d036212e/analyzeresults/f007a613-dcd6-4b59-9987-b8688c3b7493 + response: + body: + string: '{"status":"notStarted","createdDateTime":"2020-04-23T23:35:54Z","lastUpdatedDateTime":"2020-04-23T23:35:54Z"}' + headers: + apim-request-id: + - 50056d4f-102e-46b1-917b-bc6200e97e9f + content-type: + - application/json; charset=utf-8 + date: + - Thu, 23 Apr 2020 23:35:58 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + transfer-encoding: + - chunked + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '143' + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/920b2bed-8863-4e68-9c1d-7b11d036212e/analyzeresults/f007a613-dcd6-4b59-9987-b8688c3b7493 + response: + body: + string: '{"status":"notStarted","createdDateTime":"2020-04-23T23:35:54Z","lastUpdatedDateTime":"2020-04-23T23:35:54Z"}' + headers: + apim-request-id: + - 7f4366a3-bdd3-40a6-a3f5-2c29c0ae6610 + content-type: + - application/json; charset=utf-8 + date: + - Thu, 23 Apr 2020 23:36:03 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + transfer-encoding: + - chunked + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '42' + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/920b2bed-8863-4e68-9c1d-7b11d036212e/analyzeresults/f007a613-dcd6-4b59-9987-b8688c3b7493 + response: + body: + string: '{"status":"notStarted","createdDateTime":"2020-04-23T23:35:54Z","lastUpdatedDateTime":"2020-04-23T23:35:54Z"}' + headers: + apim-request-id: + - ac6d32f2-69e9-4a58-b9eb-f8141252e97f + content-type: + - application/json; charset=utf-8 + date: + - Thu, 23 Apr 2020 23:36:09 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + transfer-encoding: + - chunked + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '98' + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/920b2bed-8863-4e68-9c1d-7b11d036212e/analyzeresults/f007a613-dcd6-4b59-9987-b8688c3b7493 + response: + body: + string: '{"status":"succeeded","createdDateTime":"2020-04-23T23:35:54Z","lastUpdatedDateTime":"2020-04-23T23:36:14Z","analyzeResult":{"version":"2.0.0","readResults":[{"page":1,"language":"en","angle":0,"width":8.5,"height":11,"unit":"inch"},{"page":2,"language":"en","angle":0,"width":8.4967,"height":10.9967,"unit":"inch"},{"page":3,"language":"en","angle":0,"width":8.5,"height":11,"unit":"inch"}],"pageResults":[{"page":1,"tables":[{"rows":8,"columns":3,"cells":[{"rowIndex":0,"columnIndex":0,"text":"Item","boundingBox":[1.0037,2.9443,3.1681,2.9443,3.1681,3.1543,1.0037,3.1543]},{"rowIndex":0,"columnIndex":1,"text":"Quantity","boundingBox":[3.1681,2.9443,5.3353,2.9443,5.3353,3.1543,3.1681,3.1543]},{"rowIndex":0,"columnIndex":2,"text":"Price","boundingBox":[5.3353,2.9443,7.4997,2.9443,7.4997,3.1543,5.3353,3.1543]},{"rowIndex":1,"columnIndex":0,"text":"A","boundingBox":[1.0037,3.1543,3.1681,3.1543,3.1681,3.3643,1.0037,3.3643]},{"rowIndex":1,"columnIndex":1,"text":"1","boundingBox":[3.1681,3.1543,5.3353,3.1543,5.3353,3.3643,3.1681,3.3643]},{"rowIndex":1,"columnIndex":2,"text":"10.99","boundingBox":[5.3353,3.1543,7.4997,3.1543,7.4997,3.3643,5.3353,3.3643]},{"rowIndex":2,"columnIndex":0,"text":"B","boundingBox":[1.0037,3.3643,3.1681,3.3643,3.1681,3.5776,1.0037,3.5776]},{"rowIndex":2,"columnIndex":1,"text":"2","boundingBox":[3.1681,3.3643,5.3353,3.3643,5.3353,3.5776,3.1681,3.5776]},{"rowIndex":2,"columnIndex":2,"text":"14.67","boundingBox":[5.3353,3.3643,7.4997,3.3643,7.4997,3.5776,5.3353,3.5776]},{"rowIndex":3,"columnIndex":0,"text":"C","boundingBox":[1.0037,3.5776,3.1681,3.5776,3.1681,3.7876,1.0037,3.7876]},{"rowIndex":3,"columnIndex":1,"text":"4","boundingBox":[3.1681,3.5776,5.3353,3.5776,5.3353,3.7876,3.1681,3.7876]},{"rowIndex":3,"columnIndex":2,"text":"15.66","boundingBox":[5.3353,3.5776,7.4997,3.5776,7.4997,3.7876,5.3353,3.7876]},{"rowIndex":4,"columnIndex":0,"text":"D","boundingBox":[1.0037,3.7876,3.1681,3.7876,3.1681,3.9976,1.0037,3.9976]},{"rowIndex":4,"columnIndex":1,"text":"1","boundingBox":[3.1681,3.7876,5.3353,3.7876,5.3353,3.9976,3.1681,3.9976]},{"rowIndex":4,"columnIndex":2,"text":"12.00","boundingBox":[5.3353,3.7876,7.4997,3.7876,7.4997,3.9976,5.3353,3.9976]},{"rowIndex":5,"columnIndex":0,"text":"E","boundingBox":[1.0037,3.9976,3.1681,3.9976,3.1681,4.2081,1.0037,4.2081]},{"rowIndex":5,"columnIndex":1,"text":"4","boundingBox":[3.1681,3.9976,5.3353,3.9976,5.3353,4.2081,3.1681,4.2081]},{"rowIndex":5,"columnIndex":2,"text":"10.00","boundingBox":[5.3353,3.9976,7.4997,3.9976,7.4997,4.2081,5.3353,4.2081]},{"rowIndex":6,"columnIndex":0,"text":"F","boundingBox":[1.0037,4.2081,3.1681,4.2081,3.1681,4.4181,1.0037,4.4181]},{"rowIndex":6,"columnIndex":1,"text":"6","boundingBox":[3.1681,4.2081,5.3353,4.2081,5.3353,4.4181,3.1681,4.4181]},{"rowIndex":6,"columnIndex":2,"text":"12.00","boundingBox":[5.3353,4.2081,7.4997,4.2081,7.4997,4.4181,5.3353,4.4181]},{"rowIndex":7,"columnIndex":0,"text":"G","boundingBox":[1.0037,4.4181,3.1681,4.4181,3.1681,4.6281,1.0037,4.6281]},{"rowIndex":7,"columnIndex":1,"text":"8","boundingBox":[3.1681,4.4181,5.3353,4.4181,5.3353,4.6281,3.1681,4.6281]},{"rowIndex":7,"columnIndex":2,"text":"22.00","boundingBox":[5.3353,4.4181,7.4997,4.4181,7.4997,4.6281,5.3353,4.6281]}]}]},{"page":2,"tables":[]},{"page":3,"tables":[{"rows":8,"columns":3,"cells":[{"rowIndex":0,"columnIndex":0,"text":"Item","boundingBox":[1.0037,2.9443,3.1681,2.9443,3.1681,3.1543,1.0037,3.1543]},{"rowIndex":0,"columnIndex":1,"text":"Quantity","boundingBox":[3.1681,2.9443,5.3353,2.9443,5.3353,3.1543,3.1681,3.1543]},{"rowIndex":0,"columnIndex":2,"text":"Price","boundingBox":[5.3353,2.9443,7.4997,2.9443,7.4997,3.1543,5.3353,3.1543]},{"rowIndex":1,"columnIndex":0,"text":"A","boundingBox":[1.0037,3.1543,3.1681,3.1543,3.1681,3.3643,1.0037,3.3643]},{"rowIndex":1,"columnIndex":1,"text":"10","boundingBox":[3.1681,3.1543,5.3353,3.1543,5.3353,3.3643,3.1681,3.3643]},{"rowIndex":1,"columnIndex":2,"text":"100.99","boundingBox":[5.3353,3.1543,7.4997,3.1543,7.4997,3.3643,5.3353,3.3643]},{"rowIndex":2,"columnIndex":0,"text":"B","boundingBox":[1.0037,3.3643,3.1681,3.3643,3.1681,3.5776,1.0037,3.5776]},{"rowIndex":2,"columnIndex":1,"text":"20","boundingBox":[3.1681,3.3643,5.3353,3.3643,5.3353,3.5776,3.1681,3.5776]},{"rowIndex":2,"columnIndex":2,"text":"140.67","boundingBox":[5.3353,3.3643,7.4997,3.3643,7.4997,3.5776,5.3353,3.5776]},{"rowIndex":3,"columnIndex":0,"text":"C","boundingBox":[1.0037,3.5776,3.1681,3.5776,3.1681,3.7876,1.0037,3.7876]},{"rowIndex":3,"columnIndex":1,"text":"40","boundingBox":[3.1681,3.5776,5.3353,3.5776,5.3353,3.7876,3.1681,3.7876]},{"rowIndex":3,"columnIndex":2,"text":"150.66","boundingBox":[5.3353,3.5776,7.4997,3.5776,7.4997,3.7876,5.3353,3.7876]},{"rowIndex":4,"columnIndex":0,"text":"D","boundingBox":[1.0037,3.7876,3.1681,3.7876,3.1681,3.9976,1.0037,3.9976]},{"rowIndex":4,"columnIndex":1,"text":"10","boundingBox":[3.1681,3.7876,5.3353,3.7876,5.3353,3.9976,3.1681,3.9976]},{"rowIndex":4,"columnIndex":2,"text":"120.00","boundingBox":[5.3353,3.7876,7.4997,3.7876,7.4997,3.9976,5.3353,3.9976]},{"rowIndex":5,"columnIndex":0,"text":"E","boundingBox":[1.0037,3.9976,3.1681,3.9976,3.1681,4.2081,1.0037,4.2081]},{"rowIndex":5,"columnIndex":1,"text":"40","boundingBox":[3.1681,3.9976,5.3353,3.9976,5.3353,4.2081,3.1681,4.2081]},{"rowIndex":5,"columnIndex":2,"text":"100.00","boundingBox":[5.3353,3.9976,7.4997,3.9976,7.4997,4.2081,5.3353,4.2081]},{"rowIndex":6,"columnIndex":0,"text":"F","boundingBox":[1.0037,4.2081,3.1681,4.2081,3.1681,4.4181,1.0037,4.4181]},{"rowIndex":6,"columnIndex":1,"text":"60","boundingBox":[3.1681,4.2081,5.3353,4.2081,5.3353,4.4181,3.1681,4.4181]},{"rowIndex":6,"columnIndex":2,"text":"120.00","boundingBox":[5.3353,4.2081,7.4997,4.2081,7.4997,4.4181,5.3353,4.4181]},{"rowIndex":7,"columnIndex":0,"text":"G","boundingBox":[1.0037,4.4181,3.1681,4.4181,3.1681,4.6281,1.0037,4.6281]},{"rowIndex":7,"columnIndex":1,"text":"80","boundingBox":[3.1681,4.4181,5.3353,4.4181,5.3353,4.6281,3.1681,4.6281]},{"rowIndex":7,"columnIndex":2,"text":"220.00","boundingBox":[5.3353,4.4181,7.4997,4.4181,7.4997,4.6281,5.3353,4.6281]}]}]}],"documentResults":[{"docType":"custom:form","pageRange":[1,3],"fields":{"Customer2":{"type":"string","valueString":"Frodo + Baggins","text":"Frodo Baggins","page":3,"boundingBox":[6.0150000000000006,1.45,6.95,1.45,6.95,1.595,6.0150000000000006,1.595],"confidence":1.0},"Subtotal":{"type":"string","valueString":"300.00","text":"300.00","page":1,"boundingBox":[6.18,4.905,6.63,4.905,6.63,5.015,6.18,5.015],"confidence":1.0},"CustomerAddress":{"type":"string","valueString":"123 + Hobbit Lane Redmond, WA","text":"123 Hobbit Lane Redmond, WA","page":1,"boundingBox":[6.0150000000000006,1.67,7.1000000000000005,1.67,7.1000000000000005,2.0300000000000002,6.0150000000000006,2.0300000000000002],"confidence":1.0},"FirstItem":{"type":"string","valueString":"A","text":"A","page":1,"boundingBox":[1.085,3.21,1.175,3.21,1.175,3.3200000000000003,1.085,3.3200000000000003],"confidence":1.0},"Tip":{"type":"string","valueString":"100.00","text":"100.00","page":1,"boundingBox":[5.8100000000000005,5.345,6.26,5.345,6.26,5.455,5.8100000000000005,5.455],"confidence":1.0},"FirstPrice":{"type":"string","valueString":"10.99","text":"10.99","page":1,"boundingBox":[5.425,3.21,5.78,3.21,5.78,3.3200000000000003,5.425,3.3200000000000003],"confidence":1.0},"Merchant":{"type":"string","valueString":"A","text":"A","page":1,"boundingBox":[1.67,1.125,1.7750000000000001,1.125,1.7750000000000001,1.245,1.67,1.245],"confidence":1.0},"Signature2":{"type":"string","valueString":"Frodo + Baggins","text":"Frodo Baggins","page":3,"boundingBox":[2.09,6.655,3.09,6.655,3.09,6.8,2.09,6.8],"confidence":1.0},"Signature":{"type":"string","valueString":"Bilbo + Baggins","text":"Bilbo Baggins","page":1,"boundingBox":[2.09,6.655,3.04,6.655,3.04,6.8,2.09,6.8],"confidence":1.0},"FirstQuantity":{"type":"string","valueString":"1","text":"1","page":1,"boundingBox":[3.2600000000000002,3.21,3.3200000000000003,3.21,3.3200000000000003,3.3200000000000003,3.2600000000000002,3.3200000000000003],"confidence":1.0},"Merchant2":{"type":"string","valueString":"Company","text":"Company","page":1,"boundingBox":[0.885,1.125,1.62,1.125,1.62,1.28,0.885,1.28],"confidence":1.0},"MerchantPhoneNumber":{"type":"string","valueString":"555-555-5555","text":"555-555-5555","page":1,"boundingBox":[0.885,2.29,1.81,2.29,1.81,2.395,0.885,2.395],"confidence":1.0},"Total":{"type":"string","valueString":"430.00","text":"430.00","page":1,"boundingBox":[5.94,5.565,6.4,5.565,6.4,5.675,5.94,5.675],"confidence":1.0},"CustomerPhoneNumber":{"type":"string","valueString":"555-555-5555","text":"555-555-5555","page":1,"boundingBox":[6.01,2.12,6.9350000000000005,2.12,6.9350000000000005,2.225,6.01,2.225],"confidence":1.0},"CustomerName":{"type":"string","valueString":"Bilbo + Baggins","text":"Bilbo Baggins","page":1,"boundingBox":[6.0150000000000006,1.45,6.8950000000000005,1.45,6.8950000000000005,1.595,6.0150000000000006,1.595],"confidence":1.0},"Tax":{"type":"string","valueString":"30.00","text":"30.00","page":1,"boundingBox":[5.835,5.125,6.2,5.125,6.2,5.235,5.835,5.235],"confidence":1.0},"MerchantAddress":{"type":"string","valueString":"567 + Main St. Redmond, WA","text":"567 Main St. Redmond, WA","page":1,"boundingBox":[0.885,1.845,1.855,1.845,1.855,2.2,0.885,2.2],"confidence":1.0},"Total2":{"type":"string","valueString":"4300.00","text":"4300.00","page":3,"boundingBox":[5.94,5.565,6.48,5.565,6.48,5.675,5.94,5.675],"confidence":1.0}}}],"errors":[]}}' + headers: + apim-request-id: + - 4ed20a49-cc67-4ef3-a2fa-29f9d4b0e92e + content-type: + - application/json; charset=utf-8 + date: + - Thu, 23 Apr 2020 23:36:14 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + transfer-encoding: + - chunked + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '104' + status: + code: 200 + message: OK +version: 1 diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_custom_forms.test_custom_form_multipage_labeled_transform.yaml b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_custom_forms.test_custom_form_multipage_labeled_transform.yaml new file mode 100644 index 000000000000..650d1981470a --- /dev/null +++ b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_custom_forms.test_custom_form_multipage_labeled_transform.yaml @@ -0,0 +1,2128 @@ +interactions: +- request: + body: 'b''{"source": "containersasurl", "sourceFilter": {"prefix": "", "includeSubFolders": + false}, "useLabelFile": true}''' + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '300' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models + response: + body: + string: '' + headers: + apim-request-id: + - 06b97261-83d8-4d14-a04c-2970ea6f3a22 + content-length: + - '0' + date: + - Thu, 30 Apr 2020 23:01:56 GMT + location: + - https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/d60f64c4-e74e-41bc-a816-1ffdc20d424a + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '130' + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/d60f64c4-e74e-41bc-a816-1ffdc20d424a?includeKeys=true + response: + body: + string: '{"modelInfo":{"modelId":"d60f64c4-e74e-41bc-a816-1ffdc20d424a","status":"creating","createdDateTime":"2020-04-30T23:01:57Z","lastUpdatedDateTime":"2020-04-30T23:01:57Z"}}' + headers: + apim-request-id: + - e767852a-8a92-4a4d-872d-97f3e39d21ee + content-type: + - application/json; charset=utf-8 + date: + - Thu, 30 Apr 2020 23:02:02 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + transfer-encoding: + - chunked + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '132' + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/d60f64c4-e74e-41bc-a816-1ffdc20d424a?includeKeys=true + response: + body: + string: '{"modelInfo":{"modelId":"d60f64c4-e74e-41bc-a816-1ffdc20d424a","status":"ready","createdDateTime":"2020-04-30T23:01:57Z","lastUpdatedDateTime":"2020-04-30T23:02:03Z"},"trainResult":{"averageModelAccuracy":0.889,"trainingDocuments":[{"documentName":"multipage_invoice1.pdf","pages":3,"status":"succeeded"},{"documentName":"multipage_invoice2.pdf","pages":3,"status":"succeeded"},{"documentName":"multipage_invoice3.pdf","pages":3,"status":"succeeded"},{"documentName":"multipage_invoice4.pdf","pages":3,"status":"succeeded"},{"documentName":"multipage_invoice5.pdf","pages":3,"status":"succeeded"}],"fields":[{"fieldName":"Customer2","accuracy":1.0},{"fieldName":"CustomerAddress","accuracy":1.0},{"fieldName":"CustomerName","accuracy":1.0},{"fieldName":"CustomerPhoneNumber","accuracy":1.0},{"fieldName":"FirstItem","accuracy":1.0},{"fieldName":"FirstPrice","accuracy":1.0},{"fieldName":"FirstQuantity","accuracy":1.0},{"fieldName":"Merchant","accuracy":0.0},{"fieldName":"Merchant2","accuracy":0.0},{"fieldName":"MerchantAddress","accuracy":1.0},{"fieldName":"MerchantPhoneNumber","accuracy":1.0},{"fieldName":"Signature","accuracy":1.0},{"fieldName":"Signature2","accuracy":1.0},{"fieldName":"Subtotal","accuracy":1.0},{"fieldName":"Tax","accuracy":1.0},{"fieldName":"Tip","accuracy":1.0},{"fieldName":"Total","accuracy":1.0},{"fieldName":"Total2","accuracy":1.0}],"errors":[]}}' + headers: + apim-request-id: + - bf87a39b-9730-4bdc-ad0d-3a645c60b1e6 + content-type: + - application/json; charset=utf-8 + date: + - Thu, 30 Apr 2020 23:02:07 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + transfer-encoding: + - chunked + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '116' + status: + code: 200 + message: OK +- request: + body: !!binary | + JVBERi0xLjcNCiW1tbW1DQoxIDAgb2JqDQo8PC9UeXBlL0NhdGFsb2cvUGFnZXMgMiAwIFIvTGFu + Zyhlbi1VUykgL1N0cnVjdFRyZWVSb290IDE2IDAgUi9NYXJrSW5mbzw8L01hcmtlZCB0cnVlPj4v + TWV0YWRhdGEgMjUzIDAgUi9WaWV3ZXJQcmVmZXJlbmNlcyAyNTQgMCBSPj4NCmVuZG9iag0KMiAw + IG9iag0KPDwvVHlwZS9QYWdlcy9Db3VudCAzL0tpZHNbIDMgMCBSIDExIDAgUiAxMyAwIFJdID4+ + DQplbmRvYmoNCjMgMCBvYmoNCjw8L1R5cGUvUGFnZS9QYXJlbnQgMiAwIFIvUmVzb3VyY2VzPDwv + Rm9udDw8L0YxIDUgMCBSL0YyIDkgMCBSPj4vRXh0R1N0YXRlPDwvR1M3IDcgMCBSL0dTOCA4IDAg + Uj4+L1Byb2NTZXRbL1BERi9UZXh0L0ltYWdlQi9JbWFnZUMvSW1hZ2VJXSA+Pi9NZWRpYUJveFsg + MCAwIDYxMiA3OTJdIC9Db250ZW50cyA0IDAgUi9Hcm91cDw8L1R5cGUvR3JvdXAvUy9UcmFuc3Bh + cmVuY3kvQ1MvRGV2aWNlUkdCPj4vVGFicy9TL1N0cnVjdFBhcmVudHMgMD4+DQplbmRvYmoNCjQg + MCBvYmoNCjw8L0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggMjg2ND4+DQpzdHJlYW0NCnicvZxZ + bxw3EsffBeg79ONMsGrzPhZBAMvXerEGkrWAPBiLwJYPGIilXVubbL79VrHvYRfZ3cOOAI2OLvJf + LFb/SPbB6tGP1fffP3r15OXTiv3wQ3X99En1n8sLVjP88lxUrDLwab2ovn64vPj5u+ru8uL65vLi + 0XNecVMzV918vLzgYMcqXikpam4ry1TtTHXzBexevLbVp29QZ/Up/OXav15cXrw5vLz77agP9/D9 + +WgOt/DzA3xXx39VN3+/vHgGOj9dXpzlkAOH+Nih4Ecr//x4JYP6V1D/azlVzVzNDKV60rzq2asn + VTXqCL6+I8RcLxjrayUi+eujgmhf+cOv+PEuxN+CUyYcefsJ/wsfrjG6g+PfNkfmxC9vau8pv3Jh + EaXCYmSt9Yl8dQV1OlXd3L45cCFLNVizmvt5xajBZ6iI2klK5W/HK25CF2NXvyulCX0oSM2QOQ/H + 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 + fvW3lN9NoKP8fgIt5fcTaCkfCZSmfCSw09UI6BG/5zmhhK3NXNLi2yxyv6sRhuO2Ndl2xSReu18C + SWJj63VjgCulDJhYt8bwpZRleJt/hbRauxkZKS1YnXrQP1Zeu/sWqczwsaPoQiXOyj7h6XqHU7Nw + 4j5Agofrl1/DFhRHCafxlSw3vgmNdx9P/alYcBMnVb/AV7HR2uNeVHHjrz9DKxFR4SLtfXVUh+u3 + 2N4QjPCBobkrNuZyvAMV+7FxL7PZQV3OCfxy5A4iij0481lKHXfbcTPqJ0nTd4eAs8CYcIeT1VbQ + t+LU2ltxVP7jrMGt4o1aeyuOlIaffhVkVamLzULb9D3+WLrUlRyhOO7ztEa61PJCAGLMOulS46lg + IcPXSJcaULmXuJ3hGulSIyq3DleUK6R1qRGVG5hGrGq1LjWkcmXwYaE10qVoxiXD+eoa6VI041zj + BgZrpEvRzPuam1Ug1aVohk8vi3XSHc04bmeEj9VUhsnwOhCMljA1gRHb9AMfw80Nf0dZqDxp/Xp4 + TA7MvFJgaGoPJlbVsrkCYqnn5PSIc8tK9/fXAS7TyBgJQ4uqLAzmohtYP/Xhid+vPlfPwtTZkXr3 + OJv90lxjdDiRlTildYc/cAPfx2Hvz5f4Gf75G0z37rvp7y0+uBxvgnWuuxwyB5hIuJvNHretowTd + UQYnabEnj3HPzvf9XP8bLHLV4Vu8cj/XCw7/gnk/4UU2Hn5z4s4HQ3MsdeqGPnb7VjRbEL8K9ww/ + Q0xY2N8U//f6AVcH8UOgZ7nFhcKt+Qi3sps3ssLRkbpW8S6K/XayZvFmr+cFRcraSsqbbFB44aDg + vdjTnS1ze6SeJew4LTy3Vep5YgoWKaRY4ZZ5DoOxWxLSwhkFY6rQf1JEOZRypFhuD9ozzxzgiKSk + iee8/w9kOwx8DQplbmRzdHJlYW0NCmVuZG9iag0KNSAwIG9iag0KPDwvVHlwZS9Gb250L1N1YnR5 + cGUvVHJ1ZVR5cGUvTmFtZS9GMS9CYXNlRm9udC9CQ0RFRUUrQ2FsaWJyaS9FbmNvZGluZy9XaW5B + bnNpRW5jb2RpbmcvRm9udERlc2NyaXB0b3IgNiAwIFIvRmlyc3RDaGFyIDMyL0xhc3RDaGFyIDEy + MS9XaWR0aHMgMjQ5IDAgUj4+DQplbmRvYmoNCjYgMCBvYmoNCjw8L1R5cGUvRm9udERlc2NyaXB0 + b3IvRm9udE5hbWUvQkNERUVFK0NhbGlicmkvRmxhZ3MgMzIvSXRhbGljQW5nbGUgMC9Bc2NlbnQg + NzUwL0Rlc2NlbnQgLTI1MC9DYXBIZWlnaHQgNzUwL0F2Z1dpZHRoIDUyMS9NYXhXaWR0aCAxNzQz + L0ZvbnRXZWlnaHQgNDAwL1hIZWlnaHQgMjUwL1N0ZW1WIDUyL0ZvbnRCQm94WyAtNTAzIC0yNTAg + MTI0MCA3NTBdIC9Gb250RmlsZTIgMjUwIDAgUj4+DQplbmRvYmoNCjcgMCBvYmoNCjw8L1R5cGUv + RXh0R1N0YXRlL0JNL05vcm1hbC9jYSAxPj4NCmVuZG9iag0KOCAwIG9iag0KPDwvVHlwZS9FeHRH + U3RhdGUvQk0vTm9ybWFsL0NBIDE+Pg0KZW5kb2JqDQo5IDAgb2JqDQo8PC9UeXBlL0ZvbnQvU3Vi + dHlwZS9UcnVlVHlwZS9OYW1lL0YyL0Jhc2VGb250L0JDREZFRStDYWxpYnJpLUJvbGQvRW5jb2Rp + bmcvV2luQW5zaUVuY29kaW5nL0ZvbnREZXNjcmlwdG9yIDEwIDAgUi9GaXJzdENoYXIgMzIvTGFz + dENoYXIgMTIwL1dpZHRocyAyNTEgMCBSPj4NCmVuZG9iag0KMTAgMCBvYmoNCjw8L1R5cGUvRm9u + dERlc2NyaXB0b3IvRm9udE5hbWUvQkNERkVFK0NhbGlicmktQm9sZC9GbGFncyAzMi9JdGFsaWNB + bmdsZSAwL0FzY2VudCA3NTAvRGVzY2VudCAtMjUwL0NhcEhlaWdodCA3NTAvQXZnV2lkdGggNTM2 + L01heFdpZHRoIDE3ODEvRm9udFdlaWdodCA3MDAvWEhlaWdodCAyNTAvU3RlbVYgNTMvRm9udEJC + b3hbIC01MTkgLTI1MCAxMjYzIDc1MF0gL0ZvbnRGaWxlMiAyNTIgMCBSPj4NCmVuZG9iag0KMTEg + MCBvYmoNCjw8L1R5cGUvUGFnZS9QYXJlbnQgMiAwIFIvUmVzb3VyY2VzPDwvRm9udDw8L0YyIDkg + MCBSPj4vRXh0R1N0YXRlPDwvR1M3IDcgMCBSL0dTOCA4IDAgUj4+L1Byb2NTZXRbL1BERi9UZXh0 + L0ltYWdlQi9JbWFnZUMvSW1hZ2VJXSA+Pi9NZWRpYUJveFsgMCAwIDYxMiA3OTJdIC9Db250ZW50 + cyAxMiAwIFIvR3JvdXA8PC9UeXBlL0dyb3VwL1MvVHJhbnNwYXJlbmN5L0NTL0RldmljZVJHQj4+ + L1RhYnMvUy9TdHJ1Y3RQYXJlbnRzIDE+Pg0KZW5kb2JqDQoxMiAwIG9iag0KPDwvRmlsdGVyL0Zs + YXRlRGVjb2RlL0xlbmd0aCA0NzY+Pg0Kc3RyZWFtDQp4nK2Yu2ocQRBF84H5hwplB7Vdj36BUKCV + LGwQ2GjBgVEoKZLA9v+Dy4sDh6rmTjDQzNCne6BO3xo6fKXLy8P98fMNlasrur450s99K1z+XlOU + CrW496n062nfvn+kt327Pu3b4ZNSPDg975vES4WEunJRp14Ge6PTa7x099Dp5XdMSC/n0fg3utu3 + Hxf04ZFOX/btNqb7tm90e38k+m9BAlpQm8pNzws6r+OdeEXhe+M+0nhD4VvhKWm8o/Be2fL4isLr + ZO9pfEPhxbhZGt9B+Do795nGDxR+CM/87icK3xqX/O4FJcJaC2vN81Heq+bs+dITlPiqDB4LfJT5 + alGe+doXlPp8dF7YPkp93oW15fko93mt7PljV1Dyc5tc8+euoOznatw9z0fpzyOHyULsQenPInZp + /vsrSn8Wucvz319R+rMIXvnyU5T9zJ37Ah9lP9PB+cNXUfazSF5lYfso+2lEL12oPpT9NLLXStOD + sp+2utL1KMp+6pNnvvoNZT+N8FXy4cNQ9tMIX5rP3oayn0b4snz9G0p/MhrXfPg2lP6kR9u9wEf5 + TyJ9LTQ/hvKfRPpaaH4M5T+J9LXQ/BjKf1I614X6R/lvCveF9OWwv4CVR3uff/8AMWTgdQ0KZW5k + c3RyZWFtDQplbmRvYmoNCjEzIDAgb2JqDQo8PC9UeXBlL1BhZ2UvUGFyZW50IDIgMCBSL1Jlc291 + cmNlczw8L0ZvbnQ8PC9GMSA1IDAgUi9GMiA5IDAgUj4+L0V4dEdTdGF0ZTw8L0dTNyA3IDAgUi9H + UzggOCAwIFI+Pi9Qcm9jU2V0Wy9QREYvVGV4dC9JbWFnZUIvSW1hZ2VDL0ltYWdlSV0gPj4vTWVk + aWFCb3hbIDAgMCA2MTIgNzkyXSAvQ29udGVudHMgMTQgMCBSL0dyb3VwPDwvVHlwZS9Hcm91cC9T + L1RyYW5zcGFyZW5jeS9DUy9EZXZpY2VSR0I+Pi9UYWJzL1MvU3RydWN0UGFyZW50cyAyPj4NCmVu + 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 + mxWDaazuLffHZf/XyULlydKvhoeloFgtJRTUpHahL93+mltBGOxpKTm6Y7Lu6v7GpCD11DNaQExK + 6AdgSOeZT717wkML9upBhyuL6n11mfRLsw1gXRIVLp3a0+/RA+T32sKAIVRhtoQn9+zXM8QITO+A + 9glKLNq+F87X3ru/nWXj+ea8/ouJHAe52xbDiDYr2x4OQ5UX8RyPeO0OBw4teexOr37fA/vb+QJ0 + +xYuIfZaweC/AN6IFYv+0NkZIO4MmKuL8ERtde5O1TH+MO+X/kbPZ/AJ9Sd9u/979eA4Gd6x3mUW + g6WWMJhZi94xhb0jFJHhecL9wep69bHn+5wihEsfiDWLTrGFneJuoM3PeF46LXyXMMzZUOHYoeH7 + xGCtb1Gxwi2rGcxq7BqXFo4omJxw9Qd5lMFVFhVbOo1958iBPCIwaeRJ4/8DtXV3Ww0KZW5kc3Ry + ZWFtDQplbmRvYmoNCjE1IDAgb2JqDQo8PC9BdXRob3IoS3Jpc3RhIFByYXRpY28pIC9DcmVhdG9y + KP7/AE0AaQBjAHIAbwBzAG8AZgB0AK4AIABXAG8AcgBkACAAZgBvAHIAIABPAGYAZgBpAGMAZQAg + ADMANgA1KSAvQ3JlYXRpb25EYXRlKEQ6MjAyMDA0MjIxNjQ1MjktMDcnMDAnKSAvTW9kRGF0ZShE + OjIwMjAwNDIyMTY0NTI5LTA3JzAwJykgL1Byb2R1Y2VyKP7/AE0AaQBjAHIAbwBzAG8AZgB0AK4A + IABXAG8AcgBkACAAZgBvAHIAIABPAGYAZgBpAGMAZQAgADMANgA1KSA+Pg0KZW5kb2JqDQoyMyAw + IG9iag0KPDwvVHlwZS9PYmpTdG0vTiAyMzIvRmlyc3QgMjAzNS9GaWx0ZXIvRmxhdGVEZWNvZGUv + TGVuZ3RoIDMwNTE+Pg0Kc3RyZWFtDQp4nO1b24ocyRF9N/gf8g+mIu8Jy4Jt7WKzrBCSwA/CDyOp + LQ07M72MWiD9vc+pipyetTOz1Gn7weCHmbrG/UTkpaKtmMXYYIIYG40s2dhkJOIezsQaW3DfG7cY + J9FYnMWMU+NjMM6CLBrnTIjJOG+i4FkwMRa8ZpIFUTIp4W1rsrXGi8nJGe9NAUPvTMnkBLEuGx9w + LLi9GBEPfsWIBcOAawuOHtfOigkWx5SpsXiwCR7HnExwRgKIfMaxRBNoB/QK4J+kmAD6lHAfzzOs + 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 + o7YHauOettT9bxfFC374xVj+v4b+R2qoOrMW0tkCqt2Sut9ed8Hr1nDdsK3bqHVDsm4T1s27ug1W + N6fqllHdfKlbInWjoi7560K8Lo/rQrMu/+qirC5v6qKjLgX+W4W/fs361q9fDMY/AFTdMPANCmVu + ZHN0cmVhbQ0KZW5kb2JqDQoyNDkgMCBvYmoNClsgMjI2IDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAy + NTAgMzA2IDI1MiAwIDUwNyA1MDcgNTA3IDUwNyA1MDcgNTA3IDUwNyA1MDcgNTA3IDUwNyAyNjgg + MCAwIDAgMCAwIDAgNTc5IDU0NCA1MzMgNjE1IDQ4OCA0NTkgNjMxIDYyMyAyNTIgMCAwIDQyMCA4 + NTUgMCAwIDUxNyA2NzMgNTQzIDQ1OSAwIDAgMCA4OTAgMCAwIDAgMCAwIDAgMCAwIDAgNDc5IDUy + NSA0MjMgNTI1IDQ5OCAwIDQ3MSAwIDIzMCAwIDAgMjMwIDc5OSA1MjUgNTI3IDUyNSAwIDM0OSAz + OTEgMzM1IDUyNSA0NTIgMCAwIDQ1M10gDQplbmRvYmoNCjI1MCAwIG9iag0KPDwvRmlsdGVyL0Zs + YXRlRGVjb2RlL0xlbmd0aCA1MzE4Mi9MZW5ndGgxIDEzNzU5Nj4+DQpzdHJlYW0NCnic7H0HXFTH + 2v475+zCUhaWKrLiLq6Auig2FEtklaJoLCirgA2k2LChGI0lJEZNSEy5Mb2ZnhtNsqwaMdXkphfT + e+/JjaZdzc01Ub5nzruDaDTJvfd/v3z3/9sXnvM8887Me2bmzMyZjRBIEJENFxNVFIzIL1mf7HuW + xJeZRLFJBSNOzbvntXVfkfhoNVGIb/ykrL7XPly5k0icg1oVVQsqF7/T99MUovmbicyDq5Yvc+5e + /EY20Y1fIH1/7eLZC9a+pw8kWvwCkdU9u25l7bvOlS6i228meumvc2oqq38cu9KHeJGIN2AOHNY7 + O+1HOh/prnMWLFuRPXOSG2nEm7utblFV5U2b53cjseoiFJ+8oHLF4l7W9G7In4PyzgU1yyqvOmvL + chI/yfpnL6xcUHPdoYMzSTSjfu+lixctXdZqpw3ozzRZfnF9zeK42V06Eq35GbdDP+ENGfzhP3a9 + WDAzeuhB6mghafd9tfpZya8XnTb+p0OHG8P2WQYgGUYasaFeCB0h8Wj4lp8OHdoSts+I1M46bpMe + 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 + wAKEAiGAGTANb8VVBzRAAETVAj5xBDgM/Az8BBwC/gH8CPwd+AE4CBwA/gZ8D3wHfAt8A3wN7Af2 + AV8BfwW+BL4APgc+Az4FPgE+Bj4CPgQ+AN4H3gPeBd4B3gbeAt4E3gBeB14DXgVeAV4GXgJeBF4A + ngf2As8BzwLPAE8DTwFPAk8AjwOPAY8CfwEeAR4G9gAPAQ8CDwD3A/cB9wK7gRZgF3APsBPYAWwH + /EAz4APuBu4C7gS2AVuBO4A/A7cDtwG3ArcANwM3ATcCNwBbgOuB64BrgWuAq4GrgCuBK4DLgcuA + S4HNwCXAn4CLgYuAC4ELgE3A+cB5QBNwLnAOsBHYAKyn6uGNAutfYP0LrH+B9S+w/gXWv8D6F1j/ + AutfYP0LrH+B9S+w/gXWv8D6F1j/AutfYP2LegB7gMAeILAHCOwBAnuAwB4gsAcI7AECe4DAHiCw + BwjsAQJ7gMAeILAHCOwBAnuAwB4gsAcI7AECe4DAHiCwBwjsAQJ7gMAeILAHCOwBAnuAwB4gsAcI + 7AEC619g/Qusf4G1L7D2Bda+wNoXWPsCa19g7QusfYG1L7D2/+h9+L/cyv7oBvyXGy1d2u5gJi1p + pvyFp9DriI5ccszvqUygebSUGvG1gTbRJfQQvU2zaB3UlbSFbqU/k48epqfo9d/xOy+/246sNC+g + SH0XhVAcUeuh1v1HbgVazFHtPJcgFWdyHvW02lq/Ps739ZFLWm1HWkJiKdyoa9Vegvdv4nDrIbxy + kW4dINPaRuhoo8Z3odcdufvIbceNQTGV01SaRtOpgirR/2qaQ3MxMvOpjhbQQiO1EHmzca1FaiZK + YXsx9NFSi2gxUE/LqIGW42sx9NJASuYtMdINdBq+VtBKOp1W0WpaE7ieZnhWI+d0I70CWEtn4Mmc + SWcZSjF71tHZtB5PbSOdQ+f+aurcNtVE59H5eM4X0IUn1ZuOSV2Er4vpT5gPm+lSuoyuwLy4mq45 + znu54b+KrqPrMWdk3qXwXG8omXs/PU476S66m+4xxrIKo8Yjosal1hjDxRiD1ejhunYt5vE7rW20 + 1qLvsm9NgZ6ugP+sdjWWB8ZRllyHkhyFn4OMsua4kbgIfWB9tEecutTo/1Fv+1H5Na8aj2vajczV + Rkqq470n05fRtViBN+AqR1WqG6FZXW/o9v7r2spuMdI30c10C57FbYZSzJ5boW+j27G276CttA1f + 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 + IDAgMCAwIDQ1OSAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCA0NzMgNDk1IDAgMCAwIDAgMCAwIDAg + MCAwIDAgNDk4IDAgNDk0IDUzNyAwIDUzNyA1MDMgMCA0NzQgMCAyNDYgMCAwIDI0NiAwIDUzNyA1 + MzggNTM3IDAgMzU1IDM5OSAzNDcgNTM3IDAgMCA0NTldIA0KZW5kb2JqDQoyNTIgMCBvYmoNCjw8 + L0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggMzM2MzMvTGVuZ3RoMSAxMDI3MDQ+Pg0Kc3RyZWFt + DQp4nOydCXiTVdb4z33fLM3WJl3SJU2aNk26J90otAUaulEoW6HBFgRaaLG4UYGqoAzgglhFVFzG + BUFHxwWUNIAUQUTFXdQZUccdlxnXjqjgKNDkf+570tIiuMz4jd//+XLa8/7uPffcfXsj8SkwANDj + QwZNVeWV9bcVPhsGrO2PAGqMj6t4/SnTOGBzDqBD98Qprvz1X835GoCtwlxNc85pblc9YVwHcNYN + mP7wnPMXWcseafgS4NpKAMWque1nnHPn5+WbANrHAaiizjh78dyPlhs+ArjpRYC5+rbW5pbvT198 + CZanxfKK2tCg25n4KsYxP6S2nbPowsefSy3F+KcA8zadPX9O81VvnncY4Ng76D71nOYL29Pvi7Ng + ehv6W89pXdR86yUbzge24HuMX3Zu8zmt75e/mgusoBAg96r2+QsXBUywEvuzh/u3L2ht/8H9/EKA + xU0Axg+Aj4Wi5IMVj770+KyI4YchPgy47Pzi4hc53xhzweSjb/UOUSeETUJfFQhAgvkU4Ae2V73h + 6FtHVqoTpJIGSPwmbjFlwlrQw4UgYk49uABr1X6P9QqYKsrGCrtADmHyW+QFWKSFKL4CjwgQBkKE + UhBlMlGQfQzOwB5IvQiLVfGyx0+xWsEKYH+R2qC8Q3BYgQV4mrhHHs57CtGy8OOtYS/jbL0JsfAr + RXYxrP61eX5OxE2/fZm/RBT+/0694rNQdlL7d6D9b9R/MpGNBvWvzjMM982p0q4bnCauObXvIL8G + WCm7HRp+ykfQ/3RZmB53yrRjJ8+rqMF6nzl5muwt8PxUfSeK2Hu8HJn9hHGYDxUnzXMRmAbVuQku + +zV1nkxkMnD8Ej/xWxj9q8uuhT/8Ct/aQXEljP219f1vFPGFwXPG5cS+nijsX3DWz5WLPj87tj/l + 81NzIxsPNT9X9qnKEv42uFwxD8acLI98/2C78PSP7xXZ5p+/a7iP3E1+yvSf9+c+2N7FP+f3cyI+ + yO/OXyfCY1AkHIZpUvgwlAjPQIkUvp3OIrYEJvb5svODfj/ANPQt7s8HGC+B4ewIJApHySbZ7//1 + 7fn/VXBdA/vw925FSEISkpCQCLfBP06ZNg9ePql9CGwQbLD0f65Vv1zEY4Ef/ut1XvKf38O/lcju + gwnCexDPw+JBqJA1geWkfuFQjHpDMOxBTTip3yJoEB6ERKm8y2G8+CqknsxPXA9DURcHw1NQc35R + +yp/cftOXq8LRghyMPOw4IVhQg/YTub3W+cVtoEL89ql8CKwCR2g/0/8QhKSkPy+Insc5v6nZYhR + ECeq4cKBNuH6wfFBdd568jRhFX6u8p78bAxJSEISkpCEJCQhCUlIQhKSkPzfEP4ZU6L61J8rT5RT + fc7kEvqcGZKQhCQkIQlJSEISkpCEJCQhCUlIQvL7C7vl925BSEISkpCEJCQhCUlIQhKSkIQkJCEJ + SUhCMliEdshDrQ+GK1HTfvM65sIw1MZgeCyq65fnDtz3W7cnJCEJSUhCEpKQhCQkIQlJSEISkpCE + JCQhCUlIQhKSkIQkJCEJSUhCEhKSwCO/dwtCEpLfWcSgJtJfkmLnYgxDYgvI2GQ0VIMb5KDAkA5S + wAl5UAglUI728VAPs2A2tMIZMA/OhnbogAthA2yBHSzPnG12movNbqvK2m5dZF1hvcz+YkD6S1FY + jhXLyYUCLGeUVM4ULKcZWoLlnAsLTlnOMuulUjkscBjbmCnuwh8z7uQDgX9hnP5uymdwiIlSXyYE + 5ojV4kgY8sUV9NOT9tHKj1YCfHT5+yOCfzmrvH8kRkrP4ZKODNpK+kM/luy+ERTHijeDDAwwE1qY + wCJYArOw89lSdiW7ml3LbmXb2AGZXKYABftOyvHdiX+1C+NC8G98CfDTwgbUeVIRG1C/FHvw+ZV4 + cID9tEFuvL0kg/+aT+WAMPbnpDUswWZgP/GJPcXnJNQZUuPm879DwnuODPZdsj/9M7363yDi/0Sh + bG5oH8FvvY/AXT1r5ozTp09rbPDUT5lcN2nihPHjaseOqRldXVVZUT7KXTZyxPDSkuJhQ4uGuJw5 + 2ekOe6otJSku2qCP0GnUqjClQi4TBQbZVbbqJqvX0eSVOWw1NTk8bmtGQ/MAQ5PXiqbqwT5ea5Pk + Zh3s6UbPuSd4usnT3e/J9NbhMDwn21pls3r3Vdqs3WxaXQOGV1faGq3eHik8XgrLHFJEh5HkZMxh + rYprq7R6WZO1ylt9fltnVVMlltelUVfYKlrVOdnQpdZgUIMhb7qtvYulj2RSQEivKukSIEzHq/WK + 9qrmFu+kuoaqSlNycqNkgwqpLK+iwquUyrLO422Gq6xd2Xs6r+7Ww+ymLG2LraX59Aav2IyZOsWq + zs4rvIYsb4at0pux5OM47HKrN9tWWeXNsmFhtZP7K2BeuV1vs3YeBmy8refLwZbmoEVh1x8GHuRd + 7B8mTO8LA7YNW4j9S07mbbmq2w2zMeJdXtdAcSvMNvnA7cpq9ApNPGVPX0qMh6cs70vpz95kS+ZT + VdUU/D2/Lc67fLY1JxtHX/q14y+mW72io2n2nDbO5tZOW2UljVt9g9ddiQF3c7CvVV25LvRvbsJO + zOPDUNfgddnavdG2cnJAg5XPwbwpDVKWYDZvdIUXmuYEc3ldVZW8XdaqzqZKaiAvy1bXsAMKAge6 + Cq2mLQV4iDTydniNFTgpjqrOhpa53qQmUwuuz7nWBlOy192Iw9doa2ht5LNk03szDmB1yVKNUi7s + 2wnefc6850p7mLVBMImNfLbQYK3Gh618OCbocbqkKJ/R8uHWBmaCPjesJejBQ4PKwYhor6jhSSLP + WlFjSm5MJvmJJpmCbZLbvWEDytKjob9NVM8pm0bevEEZ1qrWygENHFSoPNjAYGknb6fAxyJYMeYI + 49NZ05ck2nHnok3AYiQTn8U4qxcmWRtsrbZGG64h96QG3jc+1tL81k6x1dZNa5BmO7hK6gfFKH0Y + xbyQjMl9EaEC12B1lqlvWqX4aCneH605IXlMX7K1M8xWO6WTF24LFghW3EHYaYVjTPNVwyILcWtW + 4+lmq262WfXW6s7m7sDy2Z1dbndne1VTWwkvwzampdM2pWG4SWrr5IalpiW8qkioZbX15TnZePaU + d9nYqrouN1s1ZVrDDj2AdVV9g09gQkVTeWNXKqY17LDi2S5ZBW7lRh6x8ggvaTJGwiR/0w43wHIp + VSYZpPicbgaSLazPxmBOt0A2fZ9NQJuMbG7JxgUnKa4NhxiP2yprC5+eixvbOpsa+eYCI04l/jIv + s40Er2Ab2cUEhdartrWWezW2cm4v4/Yysiu4XYkLgxkZDg4/kzqbbHhO4YJqABOjpSjyIq3dgUB9 + Q/I+U09jMi6101GnNXhVWXj2y+1j0W801yY0j/Yun9PM2wGeBp5XaR8zpxGXbV+B6DLGq8ISVMES + 0KNaysOXI2aag3ODEyjlX44R7/JGb2MWr7RhXqO0nPVeqLGV4LRTmXIHr8jV2Blpy5f2Jm4Ftf0K + DhW2DaY0kMWEUayskQZJqcWWz7Fh0pwmK462DOZMwaVOZ6naRJZWPBJljlZJ1aZgIvBuiXaNTu1V + ObFA/OVhjZNvSbld2dhIjZdiVwQdsG69V4MtcgwYymAGHB1MGsPbgr9XYFO56+O8mLpumGy7EE8W + 3mipJCUme3X2Mc14+FN+DVpsw/oyh/EzQhMsYy9ZlbznWhx30V7fHbjXtjh5gORk2/jlwBcmmHbg + wobGzhMN3ulZOdlhJ1p1krmzM0x38gw0XmG6fqIRfCrxi1FmsQKXfKk4Cp9XiblwG6oAMtEFLaiL + UPejysQcMROGQZKYHWSWmOkblpT6GEbvRt2KKgb2oNGWVr1DCiRaq0fNEYfDMLEUPGIJshg5DDkU + WYQcgixEFiBtyBRkMtIKHsgS+VY8iz/FEZSGsVK0pYp5UI8qSKHCYOwQqgyixTSoRP0YVcRWp6EP + WRahXoZ6A+p+1EOoYdj0FCyxEGtkmNeK3lb0tmKJVsxhxRxWUAg/+CzmpG7he58lC/EvnyUb8R3h + MOEQpX1LsW8IXxMOEr4i/JM8ewhfkvELwueEzwifEj4h/IPwd8LHPosK8RHFPiR84DNHIg74zPGI + 931mF+I9wruEdwhvk8tbFHuT8DfCG4TXCa8R9hNeJfyV8BfCK4SXCS9RI/YRXiS8QHieqn2OPJ8l + PEN4mvAUYS/hScIThMcJewiPUZm7CY+ScRdhJ+ERwg5CN2E74WHCNsJWwhaCj9DlS8xHeAmbfYkF + iIcIDxI2ETYSHvAl5iHuJ9xH+e4l/JlwD+Fuwp8Id1H2OwkbCOsJdxDWEW6nom8j3ErZbyH8kXAz + 4SbCjZTvBsJawvWE6wjXEtYQrqGiV1P2qwlXEToJVxJWUYYrCCsJlxMuI1xKuMRnKkSsICwnLCP8 + gbCUcDHhIsISwmLChYQLCOcTOgiLCAsJCwjnEdoJ830JQxDnEs4hnE04i3AmYR6hjXAGYS6hldBC + mEOYTWgmNBFmEWYSZhBOJ0wnTCM0+uKHIhoIpxGmEjyEesIUwmRCHWESYSJhAmE8YRyhljCWMIZQ + QxhNqCZUESoJFYRywiiCm1BGGEkYQRhOKCWUEIp9ccWIYYShhCLCEEIhoYCQT8gj5EoQmS/OiTEX + GZ2EHEI2IYuQScggpBPSCA6C3Rdbikgl2HyxfEGn+GJLEMlktBKSCBaCmZBIMBESCPGEOEIswUiI + oRqiqYYoMkYSDAQ9IYIQTtARtAQNQU1QUZlhBCUZFQQ5QUYQCQKBEUACCxD8hF7CMcJRwhHCD4Tv + Cf+SqmXfST1ih8l4iPAt4RvC14SDhK8I/yT0EL4kfEH4nPAZ4VPCJ1TfP3xGG+LvhI99Rlxg7CPC + hz7jMMQHhAM+YwXifZ+xEvEe4V3COz5jFeJtn7Ea8RbhTcLfqOg3CK9TYa9RYfsJrxL+SoX9hfK9 + QniZ8BJhH+FFwguU73kq+jnCs9T4ZwhPU31P+YzliL2U4Umq6Alq9eNU2B7CY4TdhEcJuwg7CY9Q + 0Tuo6G4qejsV/TBhG2ErVbSF4CN0UbVewmbCQ1T0g4RNhI2EBwj3+2Lw3GX3+WJGIe4l/NkXMx5x + jy9mAuJuX8xExJ98MZMRd/li3Ig7yWUDuawnlzvIZR2l3U6et1HsVvK8hfBHynAz4SZfzCTEjZT9 + BsJawvXUpOvI81ryXEO4xhdTh1hNnlcTriJ0+qIbEFf6ohsRq3zRpyOu8EXPQKz0RY9FXO6Lno64 + jNIuJc9LyGWFezPyYERV0lfhNUkHtBOSnkB9HHUP6mOaqUk+1C5UL+pm1IdQH0TdhLoR9QHU+1Hv + Q70X9c+o96Dejfon1LtQ70TdgLoe9Q51W9KtqLeg/hH1ZtSbUG9EvQF1Ler1qNehXqtqS1qDeg3q + atSrUUephGPCEZgKScJRZBsksWW+KL4d/+CL5EtrEWGhz8CX1gLCeYR2wnzCuYRzCGcTziKcSRhO + KPXpOUoIxYRhhKGEIsIQQiGhgJDvi+DrNI+QS4gkGAh6QgQhnKDz4aR0My1BQ1ATVIQwgtKn41Ot + cE9H/hO1B/VL1C9QP0f9DKfzfdT3UN9FfQf1bdS3UN/Eafkb6huou1EfRd2FuhP1EdR1OBW3o3az + 5TTSS3wGvuQX0+BcSLiAcD6hg1BBKKdxGEVwE8oIIwkjqMsxhGhCFMcOURQFnzvp7t2igB/uBNiL + KopAbbmIMIVmfTK1rI4wiTCRMIEwnjCOUEsYSxhDqCGMJlQTqgiVhBRCMjXeSkgiWAhmQiLBREgg + xBPiqJuxBKP7NmQv6jHUo6hHUH/ACf4e9V+o36EeRj2E+i3O6jeoX6N+gvoP1L+jfoz6EeqHqB/g + 7O5DfRH1BdTnUZ9DfRb1GdSnUZ9C3Yv6JGo36nac8YdRt6FuRd2CehuffaGXxngp4WLCPJ8BX4VY + G+EMGpa5hFZCC2EOYTahmdBEmEWYSZhBOJ0wnTCN0EhoIJxGmErwEOoJLoKThjqHkE3IImQSMgjp + hDSCg2CnuUkl2AhygowgEgQCox0J7ruQAVQ/6qc4sK+jvoa6H/VV1L+i/gX1FdSXUV/Cgd6Berlo + T7pMdCZdypxJl9Qs96zYuNyzrGap5w8bl3o0S0uX1i4VNUtNiIuWblz69lLFxTVLPBdtXOKRLYle + IqgX11zguXDjBR7NBUx7fk2Hp77j445DHWJ0R31HS8eijhs69qNBeXfH1o69HWJ3YI87smNYafXy + jms7hGhMF6CDRXBzcocmvHpRzQLPwo0LPLIFhQuE0kML2IEFTMhdwCYtaFogoNeWBanp1dx7yAJj + QrV+Qe4C9wLxvJr5nvaN8z0T58+fv2z++vmPzZcvm79mvrAZQ4J7vkpXfW7NOZ73z2GwSwiAHnWP + EPCJ6vk7BT8w+ErwuwPsLByAM3Eg5jnP8LRtPMMz19niad3Y4pnjnO1pdjZ5ZjlneGZunOE53TnN + M33jNE+js8FzGvpPddZ7PBvrPVOcdZ7JG+s8E50TPBPQPt5Z6xm3sdYz1lnjGbOxxjOpho12Vnuq + xKIkvEHAgr/tluWWgxaZpsncbhbazQfMB81ie+LBRGGZiUUkLEtYkyBG4EOgR3xS/Jr49fGb4+UR + UkDUtkcujxTaDcsNQq7BbXjFcMAgA8MGgxCxJmJ9xOYIcWLErIivIgIRss0RbHP4Y+Evh4sTw2eF + zw8XI8J5XNS7w5151RG6JJ17tEsnDnfpynQTdeIaHXPrnPnVbl1qWnWZdqJ2llZcr2VurSOj+it1 + QC241ZjwlSqgEgIqBiKzMgZMjxDDcG62spikavFRxv+pUw6MXQv1WbXdysDkWm/YpOletsprn8Kf + 7rppXsUqL3imTW/oYuyaxi4mVNR7o/l/W5fil69eDebyWq95SoNP3LDBXN5Y613Ow263FA7wMKBL + Y9bMhR0LFy7KWpiFD9SZC9GyqAN/JTB8IjsW8ZRFCwFdsk4h3GMhR4fktLBjVgeWgQloXiiZeWym + 5HKqMv6rcsqe/DeE/Z6V/98WwIXMV/XCgQuRLwZcpwvjZs2UviSgvAPAv3bAtwdW4M/tsBG2wSPw + ODwPr8K3TA1NcDk8Bh/B5/ANHMV9q2QxLJFl/MIvbfwC8V8qPwd04h5QQCxA4EjgM//9gc/weAgf + YFmLsViZ47glEBnoOdHmX+vv9r+k0IBeyqsXXkDrQdYTOCKU8XigiMeFK3hYynFQeYd/s3/9oOa0 + wwLpWyOLYQlcBEvhD7AMLoWVcAWsgitxLJZh+Cq4GlbDNbAGroXr4HpYCzfAjXAT3Ax/hFvgVrgN + x3Ed3AHrg2k8fgf+3CSl8pS74M9wP2xC/gnuhnvgXrgP4w/g6G+Ch9BGFoo/iJYNcCda/4xW7sVt + m/HHC13ggy2wFeeM4n2xbtgDD8N25A6czZ2wCx6F3TiPe3Bmn5Bs3NIXP7UnPZ+EvfAUPA3PwLPw + HK6MF+BF2Acvwcv/VspT/RYeewX+An/FtbYfXoPX4Q14E96G9+B9OAAf4qr78kfpf0OPt9Dn3aDX + B+j1d/gMPXvQk/zI5x0p9VOphP2Y9wB8zMLgMBPgKAQwxGfvJmmGbpHmkc8en527pXHm87EZ43yG + 7u2fmwdxjB/E+eQxHr41OBsPoW8XjmDf+J181F4Kzg6N9y704WPBU/YFx+KZ4Ezwcnb3531BSvNJ + +Z7oL/X4iFIPXxswOu8MGMO/wz+kkaHRo9Tjo8c9PkYfPsq8jMFj+yHmpdHnebl9YB6e9hbGP8PT + 4Uscac4vpJn4Aj7pD38STO+Bf8JXcFh6HoSv8Tz5Fg5h/Du0HMTYj60nWv6FP9/DD3AEZ/AY9A6I + 9Z6Q0gt+nGN8wWACE8F/PHTcKqmMyZkCz7QwpmJqpmU6Fs4i8HVFeUKKpj/F8KMU7UnSVJIlkkWx + aDwvY1kcS2AmPDfNzMKSWDJLGZAW359ixRQbS2X2YJpRyhnfnzcJPWIH+GawXHYBPrOYk7kwnMcK + 2RA2lBWjJQfj+RgvwbRcieUwCWbD2XBE/qnwIpYfjadK1797assfgBjYEPg+UO6/q3eX+DCrZy/i + iIRDAGfqXOaGDfKZcJa8PfAdSwl8LR8d+FJ2JPAlywscArW4QZyL++AD2Ti4GN8Cwb9QfBtPbBGU + UAzjYQLU7wIdW4fHegl7YWtlZViOcjdGBbCyFyAMp2+dO0om6EymMtsQxdVinWFMmfJqoR7Ket97 + 92l87Issdu1jrnd7Xu/R9z5tKHb17O/JzWOGZIOk0eGCUqlQ2FKcwpA0R1FBQf5IYUihw5YSLki2 + wqKhI8WCfIsgRvdZRgo8zsS3j00Uq3pThcXJpVPy5CzLHpsUFRYmJll09gJrRO14W1F6glwWphDl + Ycq0onKb54KxKS+p49ISzWlxaqQ5Edn7hDz8yDfy8KOnySqP7hI+LW4YmapYrNMIclXYunRLTGpe + 4ohaXYROHm6KTUhUhhnC1Zk1zb23JNhj1epYe0KinZdl7y3FEYkNHJE9KY+GFHDAu/wd2dOwA1ID + n27VRLBxtu7Ap24zD9m1OlucDows3OjQqG0papDZmMHmsOOnTrfFrQEtixS12jRzqs1mUeuMYEuJ + U0aaJ0d65B6IKysri4wtHmYoMODAzpo5oyChJ5/Fu2bOiNuXX7D0ir17WdzemTMomJuHb9CmwW3Y + xgP/QV25eVlZjXajkeYsTUxWhou2FIejaCijiYpV2sRkWZdWYRyWV1Bs0cpO8ydMlunMQ7KchdEK + LVuj0NtGFpRWpxkUT7DtbP7s1MwYuajS65isNzxKI1PEZtpkFxtiNKKoMUY93fsWrsXVALIiXJUW + yIJhsK5vbJOEtdsSNDExGuD/5pjtKOD/CqdJSMMP3lvy8pSp3cF+p+KHdbdKX1cYx2OF/GO9W1mP + /UvoySrrycLO9RQzV0++qwfXZ2Qxrk9T179XSm5eIy5pmS05xTHEUFhUkIwDEsPXuEVkhU7BZjPw + BR51PCgrclTMaF82wX9fck5OMqu64J7zhsc5K7KGzqhK92+Kyx0z4vK1xZU5xgpLybSa23cPrR2a + xC6rap86Mj0qLVvWlp2WXndxvWtKZaFenT/xTPZ+2sgMo99rcpX1/pAzOjfBf21sTgX/dvXqwBFx + Do5gGmyn0etSRnULN7iNOjNYzMr0CDZeGafVsXFKvQaDj7DTICpw8GEMR0XFK7oDB7agh0IainA2 + TtHNpm91p9TFS4sE+897n4XIYi7XXkMxXyYmt+G3K5bGVbAlG/pGFIN9J0LfQGMHNeEqfyNbrQrX + yKXwQm1SfpqjwKLLSRaauVV2lyUjTuu/Wx2XbrGkJ2j8Fo1eo1DgQ3ZjdpomPpPGSnEejtVweIPG + yq3R5ebGulxqZ1xcQrfQsjU1T6tVY2A7pBbVxWs1cTtZDrjBGTi4VW8TxuV1Bw66rTwUq+dPHT1j + Xbl5TkVSel2Sp39/8Q3GPxDgzsrPL2Ou/T35hgI9fxiKR7gKCgwFOJLbftNKcCzt/UNnY3z74kZm + tkHjKe1kVsD3NA/GKM7TmHPtqbmJWsF/pSwyKTclJTcpUvTfJGgsLrSbNUU5m5zluVYti5OxFF1S + xjB7lyktXpeq1qsVCnzIzEc/1hnUopyPdeLRj/rtKwqKImzFmcd6RZZZkhoRjrn4ii0LfCZeLbfD + GNjRt99HCTdvS81Pzdea+H4HrZOPyFBQs5yHDUPxxzi8b68O72Y5bu0okzxjilHarkb+Hwbd8qnB + 7RpZXNyTZSgudrn0PfoePuyRPMJ3/i5w/jal9q3ZFKes79Ki282pCMYVMcEh59ddTLRFIV497pKH + 5lQsbChN0MhUEerwgknzx+SOG5KYO3522+zxuVUd6xudp08aGa2UC6JSp9HkVp8+NMudFeOa2NLW + MiGXXTb31jMKjUkpCXnOpMwETXJ6cmzmSEd2WV5W7gjPoroZq2c4w+Ms0eGxtgRzeoI2MdkUYy80 + Z1H6Qhx1LZ4Tn+PaT4EpwXMCFHhObIkzKCL7hiFS2qbmOm3fNs1nrr29+/ip+VNOx/dw/0JL7rvQ + pe37uVwdofLv0lkKHHzL+nepw9VyOT7Ea3EscOuaM+K1R3v6F06UNj7DbMmM1/Bti/evGu/fkbJs + SIV0qN0WF5umdei6hbrtsQ60aBy4Ye/aBg67OROPdr1bpdVGmlsj2+RtwHcInt54y+FNGrcfb4Hi + yGL9u8TcvOO3XdqJt52MbrssTZixdGjesESNbJR/7gg5v+1y8qKUGjZBYUgdWZBRmpFgUMueFq5j + 9lm2dLzvlBG63d3huB0UxswU8RZ9lFrGZEqtQXuPfxz/fzZW4uMgfp6mG8/T5SjYKZwNGrzy1vVf + ea+4o7M1CcvSWNr7r+QdyBPm5zG8r+z833z0LQXdLKxLeQaU9ZTh2nbNOK9nRjFf53TD6fkJ/dM3 + VcwJN5V40FY2tXVBtd9nyciwsLrW61qKYtKLU12TSlP8j0Q6huZ2rnUVphjyY7IqS2/f4irJMLKK + 4TNr8pPDUx3i9Y5US/ncmrSq4kxtWFrZVHaR2WnVH4uxufyzrQWpUf5vIlP4t+Ww37IS7HckJEHa + YxAl/AnfbxOEZaCCOJbrC28xdbO8Ljn1iwVfJqVVNaAf8gH3a0ndja9d639PanPJNfuuGev/Lrlm + UdNZZzUsGO8QUm585ZJSap57xRNXVl/YmN/bnH3actwJfAZysCXZMIK/DAjLtqusUdYoUCV0s/CH + 9Q7mcCji+b/S6VpwPRm6FP1jfR42bB+dAjjK9hNbR7dXzICLTFr9OfIwXVjvE7yhQgkGZTJ8+Few + qrBwlUymCg/z72SXoknebMJ3T2qzyuhINKXGqj/GgCnBblT5/apYOz89V+I+VmPrbVDQJTd0C+u2 + J2o0Jkg0ybtZ5BaDIVbWzYZssbbE8tXPG91DN7cruDIUg1s4+Ko1imq9wX8nq8SmyeW8abu0lnyH + I9+ixcYnGvTi40Ocfnw9NvGm+i9Rk5ta3OVIzeGtawh8LrPIhuNtNmaLxRIRx79LBekRu4UNMATK + WCR+ELEx1cPxcvzJVfN/Vy2ZG93NhnflzgsOcv/J3bN/L1/TwVVw/CzF87Vo6BDb8QPGGGOIVijp + tguevzKZSa7SKAwFE86trb24MT936oWjk8pNO5U4yjgbSrbEkhxjtNU3zsxZ+dqNk+pve/PycYun + DcVX0xVJabFqk9WUO2153dRLGrJ1urfUMakJCakxqvRk/4R4u1Jn1KtqOl9Ycelfrx8flWiOzgnO + CuvEEyoGonbgibVuq1rfKp0/jF89x2/l4HURwzrx/cXOx1VnznfY85O0SWpaDWrxM5WOj6pOFQhA + HJa7Vn6f4ICHcLsoBEcc0AoWDmFtcfxbtlFYGyh1rTiMxV0yaa3iKpVqVQSXZ7BSaTkKh6Iie/2W + DD6vvF5WhXXKWoc6ceHt7qv52F58jQr2S/4krrZhULM1OyYnDSe00a1K0bnUOTkphXjwtrkNkDKk + JceoEc2OFnObPnjs8jcTeuuJxNcdnNY4/u5TXDxwMGwsePqe7BUlqiBKekUxxsif1Jhy7Y7cRLXg + f1U2rMyakxgh+t8Q0OpwuExqp2NzjtuZpH1T9r4uKask7cG07OODmXfseUOELEwbJhYde7nf6svI + 1qcUp/fuFYozS2wR2RnBvspG4aiWgrMrOZJ/vSpRlotw6yCxqFWTGcs3lXgGXSrBzgUPAoUN7440 + 0eFIs0Xzgf5xb4zG2AKneHwuZKOyHM9l5Ea+m+y2MEFgqrjMlJSceJXT8UpkUoJR9by9wiowgTFV + fGaKLSte5cnIdmSyp6uvG2Wprhlt8QsDO6OKMkf7T594fY1t0uRJqWwPv1X5nYvnrgd35OW4I6Pw + EwKeu9HCvbiQLMJ9oIZ43H4Rc2183cjn/ejcHfCRXDp2+3cfnr2Xj+584dIVT62sGoO8+MlVNf5v + TCNbx4ybW2YyjWwZM/YMd6KQvPLV68cNv/Qva1e8ct34kZe+eOuk5dNzh866uMpz2XTX0FnL+Z2A + Z9l2XF1mvAvzuhyKncJyMPDG+cCAR69ui1yutXPGtGgHHGf7+285fhmccILFWkR5oSPN4ei73baX + nnfPwjNxudsdBWat08Gy08ellrfVpPm/znNGZcaf2VEwPD1KeG/Wmlm5/t0DR1Wh1BROPHPq0AkR + crl/W4KzDIJt/gTbXIBnXPkOUAsPbM3TZxkK+RduHaUG/v3SxCwDXtVbSktji7Hx2/iyoU3R0/+B + VHotfX3A0ZCW5hR/1Jn+izs21mgc8DFT/ERrLcnJKrSGi+PDzXaXfWxf9/AurG9d01aSMGRCYXym + PUXvUYf5Hzc4hhedf25BWWZMlFItF2Vqvfaj9GJHpH9Zf3cfdfw/4r4DTo7qzLNeVXWq6q7qVJ1z + znE6TewJmukZTdIE5VGWUAIlFJAsgpFIC1iAsReDLc5hF4MxkmYkNUgGbGT7WCPv2ubHen2Hzj5z + h/Fatza7hgMzPfdeVfdMK4Lx+U4tTU2Xpqve+77v///C+16Nx1XaNj+7tCejpGzRFv+/WKz4jywJ + t7byv7TeBoSPzpnfEiFoSfOxBc9jHfhnTvoafA2MFbUKY0ziDEB1JQqoT2kK8GVoLQP6pLVTFN5g + QE5UMDAUR181OK9anPgTx9Oh1m1fmsisGS5opGKckMopebxnVau3MaQPdIwtHmsPNN1w/3BsYXdK + KRERhISW0aGW4YQz7VEHO8eXjHcEQdPgwUVxpdGqZjm7zh4wUBaXWWmPWFxJvzOQ7lnb0XfzcIjh + jEpG7zKanFqp3qRXWvw6V8Ln8qd6VkOJmKEtrIK24MDsxzES+uJJHUsqyyA3aV5H8QZbC6CR363T + rvuS8HiVSjmD3IA/aVXMSBVIIwopgUvlMpL4bj760SuzWmoRqlyoQuWH9z8EsR2AjBXGPGcxB/4Z + iGwdfvtJyrdeud48B+u2y2E95xGqgK7jpUDr3ud23vjs3ha5NeX1QwdlKwzFYgM5C21L+IJxKw2e + 3P341sb0hi/dgW+u+Yvpvx8dy5mtucH5+PraOTg+H5TPf4HjS2PjZzEPfhQzYQF8tEiljOmUCb4w + BnU7G1DG/dWiEpP7fPLoep9cY1+vmY3eIdEa4+m4AUbt8C9vL/CLkIbVVav8EmI2gIc8nM0KtKvP + IS+Sgj8nIYjvGoGlLZzMOxhxmaamRIw144m2WmE6LP2Dhta35uJZu0Ly9wz9pIixJCPpgpZWvbs+ + 4VGJSZlKAfotlsqkHKYnYpU7DM6Br3uCGhEpU8or/2yzAQ+jhv+jDboqKyFL9MAcdw/xz4glgF/I + t07I9JAklk1hfj/WWMbnFZUqQg/+XQ/0ZXkD+KgBNKCuChmqqTQ0xNpDZWAomn/pAsRB1wMuvOga + dq1yEazL7sLlpMtFWsszvywycpiQWQ1KMGD9MNbXgiqRMvim5a2ifIDEDPFqBSssVPkmJlZOoFwo + HkZJww5oFef4sLCAajrs/9/B8LULpEyfL5Oplo2RTaYzVd9TPUPyVioReECHQkFijzYcigZVuQcW + 9uxdlGi5ZWrvIpW/PdG2tj+tpFW0mLJ0r9jWtOnRVZH3V7UszBp72jJLYnZGKZEomZ6mDm/v1tLg + rvmebKgtpLW4LIzJp7d7rG6bJjh+1/JfqD1pZ76YbUDcf+vMOyQm2o6FsBbs81WtUs7sGXwVDPzC + +KGiDOOobMZJihK1bDlRBvOLCl+fuVvZX+BLCwXUelYUDVRLC22owqgvVL0aUsWpT3mJubIE7ueu + hLpQxK25colKp+NdOdaw5nPLooM98zww2bbZg0ZKbk14vQmr3NXVVQqsvW9RoPInVagzbUyks7bM + 6kyyK6oFv9v74l0lla8xuJpmKZKkWFrkpoR6G1XRuBJ2Zuiuyd2FzSNJxpUNVH7e1ZMa3gAlOB/i + 4jXRjZgP+opHqhKkzYUzOFotj+M7i5TG2U0X/GaSCdXmD42vtygz9M2WZ3unisyAqL9afhAmL3Cc + YMqyT3mJ+vpZvQ3CoGJWjJBb6iOhHPEaZQjaHAEjPe+Lyzc8sCSQXvPwyvn7m2leiBb5h9m12WRP + mFMHuxpMyXTW4aoJbG3fCJTRWiTIlibw65r0phu6SsmR9Zn85tEU68oFkN31QamdgmwSxhoAIUht + UqNxRtAOiXADdDxQbk4ioong5sgrJEKuXgEGMFJJ4v3D5CoSf5I8RuIkaYlDgaDCLDoWHfBn4m/5 + +gzvYYySwVUEIzPIwYDMAH9A9kHRwpvXdDj8OkTrxSpwJ3asmAhfXDGBYhjExnFe3v9Pb82bOcxs + qhpIC1GSuD5e5fxZXksS4lTQM/0rc9NEe8e63gQrg2kADrPvxqU3d+yd3NfUuuebm7cf3ZD4D2LZ + ykRP3IiDD2ORwkS7S6PXSNROo86uYxmDXtW8/4WDe1863N2x+8kVjs23eFpG4xiBmSuPEF8lfoa1 + YoPYSoBVK8pDbEJC5N196b5X+gh7H+j71atyACcnf3UU2EaBYRSM/uE8B/QcwDglh7MctypPfNBc + CjkiHWc7cKwDdJzP97HLgJJY9lrRMcRjHIqh7eLEhLrQxlMmYk/4duIN/sBD31wcr78x3Qc+/t5z + t27ueK0DJzsAe73br5gbwCX3n6hxDwxxdDqBeXx+MYzZdHoYjXN1yUQOsntDlv8q4AoG7KDBN8vm + qC7l8/sZovqO+KpOuUmnaVh971h4kJNr0rF/6d+7INx483O7d/6nG+IqZ8IejmfD7lBuzT0joQEn + MKu4yneGe715r3q4x5f3appKbZMmu0a8fnlhMKElViVihhbn4C2jYY5ReHRWLy4lvJ0rmjt2L0x5 + iksyzuZcSq8fijet9rvX9A4eGI9Sskjlg9KwMVywdw0ZQrnphdEELtK4HTZlqkHviyN8zoeW8BrE + Zws2jK08kbINl/EVUxjDYN0ImoqAFRvJ96Zah22kux21E0f75pfBvCLl7qfe02o8GlwD/edpNVfS + GD4QDWFt06+Hd1zkyyGQlVTpdL2n9l4tUs5cUv3A9Zlr01X7Ld/e2rRpNKNCUBDLJfJIaX1n41jW + 7G1vn+evMVigp7sUpI0Buz1ooK7gsPD2J1ZFaLVWodTbOZuPk6j1al1qQWGhK2VnBw8fW7377KEe + pacxtJISElGqcqGrJ7lgXUN+8wLIalk/ktqWmQ/BA6JB6DqdWKeAnpdg/PoSZsE46FEpzA4OnCwa + lb0CT79hqqWn5uev/K9L1j5qs9doUUABLQ6aGthf82u1o6Z1bLypZXys2VUbJbEf8jJkYZYCif7G + fG9/UwFGsbfCce4nflCr7ayaovj7Xru2c8Wd5m7wmdp3tevCaILDWqvcwSo4QNOApoACAzSJlfFV + J4uUsluYJYijafKh04R5snb2qhO/zhDm/DQmjIH4KbTcFHZbdVUgpEHhjA2j8ZUnMJuyPPP7SRoM + KJEnRfEdzG4GinQx2hcyenqN/cIYYJjOL+oJQUyB15Dyz/ngpZNAEYpYorpiVpwQ1XPET+WWpMeb + tMg1noIvsSZTmyRlCtodIT3V99josoMDrtk5g+n2voy1u3P6uSsVccPwcPMN962G9liC0R0JZYEq + Jdtq9qjFd/P1kt2oXlKNJoxlYCrK2D63QVh7B5a6YOxieM5KP+EH6gK3a1ZcyOb95QN7j92cb9l/ + +sC+Y7vylWkuNdqWh8DVJcdaC2NZE3hn59l7+jpuLe/Z+Z27+9pvLd/RsW0kFhza1gOP0eDgNhTB + Vh4lMTjH+gjWmaVqEezh60WwvcqhvzSC/ZhL1EewV1H/tSJYSFgr/O0tzY5ZOzAG7TYYyfrnD47G + 16AI9kNVsDNlTKIIdlVDcl6EAxf3vnRXibXH7JXlNUCQF2pGsSnQEtQO3HVib2HTSJJFEewvOntT + CzYIiMHP8JndTVXE+FiI06IcM7GUnYpThIKgUKwDjZ8qA5jtFsN9PpZz9HK8yaOMFk55JYqhzlWx + Qn3sj9dJRpj7NaQjxs/A+IaSao02NReKQohcBg13az5vUdgcBlpE4sR8T8xESaQSlac5Mv36leDY + lmr3sYRERsk5tH7eO/MO/i6cey/29tzKbWx25bar6MLkZAzE3spBCqPeVuWKiAFyjhxO8OutbDNo + RovbZn7N9S203tqnU6IkE9MBJal7t2YRUDrVRdcJvly0ciKsvDgB/16yoFt0/HVv9inWefF3Cxsf + HE0tKyV0clIql9Hh4njWlfFrvS0DCwZavKkVd4+FhooRjZQkCIlcKvMV5idcKYfS1zq0YKjVB2z9 + Nw/6Wb2Bi0asbk5itJkYU8BkCzssrkhxaVtxS39IruZYlrPrzS6thDNwjMmttYccFmekuETQkegJ + 0Q7sYewLL2F5PIatx5bjXVg7th3vnPIENQcOl/GVRY41sje2r2/XsKymfT05cAc2cABtYbEULbu7 + 88s3d/vfjs1/eyQGX4vSb/k29y16t3vgMIv2OxlL95ZBz3HZAF8xTsEv6bmangrZK1qAeP0cxHM8 + joo1fNuD8gJiB6XgMMW1Kpjv0hwfsd3lEuWuqwGdvhZLIggIuQBfadPVcgPRE7hYyrpiWUv/TT3u + TWpORLOyjRp/wetuDOqMFhkhpZEa+uvVcH0lZsa35rQu1mjIbHp8w9qHV8W/h/Ci1bwSbdY6jCqJ + mJKS+y0uTsHAaMI3tG8EvBrPWQN6qiHaFdVxvqwjmjc1BK+iv5bra79zU8krIrWdvuJNI7H40kML + Byl9wJqLVyZ6eyUyiYTzIJ+un/kd/iB5HGvEHhJQelqlUjQFMXcUPRVAr4jWaDkK1TnpLlkVtRMK + pF99KYn2wRUlAjogM5/nnVp6OnUupRJSvuex6Ke4huDlySuUfz314Q/Sanc8Z5l/U8m1RaNFpLSZ + tgrevyb2WJMgdlos2h+Jay4T+g8hvYtEkN5/eLmwZmaQrMgu0SDuA+j3vUpwL34aq8qQTEAZtmNt + J+LtSii4qbDNFoZMv/IUkQm3l5RhNPGmTEkLJzrpHZChgPBi2/mLqNdHSI2h1aPVS359crYvom5q + 3PVkQfyPkLMW5VS21c2QUnuuIQ7iZY/ro6dq1I3/dG6ilkiUu6ZUhNmKpOSvIFVMwNkyyEzCg4sR + T+gUHQoLfGGZ8Bg2WGovlUpNixk09xOZkhrp2DuwHNGBRKADSAip86k4ClbPxdM8Uwvw52Uxp/3L + 5HAlIdTk4PwYdEtpjTuWM/dDeVTuqBMTIZIoXbGrCwrcNmdBDC3i1DxwDWoIXAm0oJiWkVdlVSdC + i1PHKphrCfH9Wu/K+1cgUrAy8Yu8lU0JViZK1qxM/DSU+2bshhP21iEkcPnm1GZm88TEZoYwDyJF + dCQxdPCaR6GYi8y6gVJ/aylZyufDQ5gZ6cFbIpECuCofC+JvQ2t5ab5Gw9MwrwRkjZ/U/urk7vwE + Fgy+Xid7WuO6honOSR4vhlxz9l0nf/7DvD7x/6i34IT6mhY8J/xrA6Du40jyt6A6JMzpUtimahRH + +4UipB0qgdVEe/20yNjrMVT7QwcurRcK678wzOcrL8wn+Omr1RYvW4bJ5uaqjK+hENYJc+++x0aW + Hxxw8mKDYZzaCxOe1bladdFVn8VsvHcDPnuiIu3mUx58QV3G6YDZ3gNw1nHssDDrs5gLvw8zYB48 + VJTFDPCF6Wl5GV9d5NuYCR0dx9xumirjJ4sMVqSDvW5aZe1VzaVv/PKMyYAIzwh9vUH5JirZqQvq + uWY589U/hySiqwb7BCEUMHKaurWbupWbw1JgaUxEc3aW/MY3SMbaEIo0GIDs/bdkwFRIRjI2RnT0 + K4TcFPVHMnpAX2hQ6RgRIVNQoKXyCqWQESJGpwKnwRNqIyMmxAqq8gYISeVSkmSM2soWVI3I4mfx + 9SIbFkXPfj0h4RrL4NtTcPJYQxk8W9SwDoeZuz8ep8xfDOzIPUrdTOziCZ9f0lUV4tAaztdKNEAo + O1xjGWMuXqlfxcDX+8JRt3NJS2yw0RkY2jOUoQwhR6AlaqfUOmXnlmLphnb7ixlX0q4IuBxJI/5L + RiFnfa6AHsYUye4oZ+bsHKXmVImQ3mjTGTMj+fulKqPaarNY4OyWwtmdEcsxH5bDGk5Q9sQZcAwl + uuD5ogrT2Ckm8m3XDuONzK70MdHN/Joh34szl9PVrSxcbryCviTVtJ0TsjL8jLO4vMnWkIjoPAnU + v0/pfBarVycNjafblxaMP5LpvRZL2mPL2MxeA038sbRrJELr3IYMoySltIRQiikxQcAvlbfdzsTI + lm5bNmx0hL/o8RhDDXBGjXBGj4tpzINlsNQJmTGDZoRhUTBVVKrsNxplROBbuh2pZ+V1mqpbJQDV + aXyiOj9Uz+OuuMGulURXN3dNFEzO4qq2WL8XNWdZfTrZ92xZuzlgoGV6v8Wcd+O/FuaQjSaSC7Y2 + w5mFnU7ASYQJSSp9Hp8plDXbciGzK4xV53IftD0vFsPaj8cgnx+bMqtUZl8ZfKuox8wMIyMfOOZ7 + 2Yf7fIbgI44dsscMN881pfHmVws5qj1es9VxnUDSvitq4/h9ZnPlKdadDwbb004IEsrsy3ZHnzwa + Gt7V17ely3GWSDeYAyYGJ96326wRGyuTU3q3x8rIKelDj5V2D4cDPasL+nyL2h4yYQRmAO/iu0Um + rBnrx5Zh+9ppbAH4GyyAqcERLIzNA5/DklgLOFKkJOGkRJIME94B9FgXzDyGEObwkl8sbAsseJQr + PcTGJET2mPxlOS6XO4oPZXcsOuLYMztf6NEuXrhYaKv2iAkOTslnF29erC61X7cOnb2iDA3/Sa4s + Q/Mf5Y15N0M30zJ3cXleH2KklNV0d2YoYwoM7h7s3zLPEfWbrV6b0ebtWJ6zpnVnaeadSICzaamI + n7NrKbvPvcakaki5QiaK/Ae3XW5mY6WUUSqVqmhWhYtwQ7DZE+zOWDlfxuntNMmTFleLXtsSi/c2 + mMVi+9+6AwrOyrp9cs5cWafTAZKzKI16Sq1HtjOEfx+EIQ5QFdVxFrL2v2EW6OGOnabs/2ZUbhch + 479wRWPPrJ3n6kukNhnntVq9ehkEJzxyMkWsvRiNt7VH8V9LaNS4SEtwrZSCjCyhpC9kgoF0Q5Dv + E1sKR2GB/CLUSKH5Usob+VuD+FVvCyxSnddq8emoGi/M3WEO+tUr40chNiJY9LhHhUBuwWhwHLoj + C3PMv8Ojd2zX7+JvhYqJF2dLkHX39F1WTkRznS0m4kdRr6XFp5cFwqaMTaaDtASH5Y7H3Ym12ebR + lH5uZCCez3lcladmZcEx8E8+EfO0jBSgLgoQx2fhWDUQya6zmBacQrVDcKooo4xH2R3urwnceq02 + K8klRT/okCJjtwyO7h30BEcOjA7tGfT/Z9oSc9vjNpY2x9xN7cQfu3eNxAL923u7dy6IBPq39bub + IkZ9uNnnawrp+5F1LAV/xM/AESHez52wJygkQI7nfS3GUYm4nRQh6jdvV+6up3791an/EjXOyvBK + 6m9b2WIM+bxcTclSjV2fcMfXtRSX5U089ZuzLlsGShpRf++uBRGZyqT6PUqcSSklxt+WQDOAko0l + 4gu29iDmdwW/4PEi5hds7QLvqX2TLhPGQhIpyk3Ud/07XCxn284hW+DLECA+fU5duLSB9Eo7ENq9 + wQVcREkklEKlUBhMNlVt5O54wqXze11qxqqVEIB8yeSERxEpVdt1le9caghN8AMyUiJVo+d5NkNb + EMFRtmHznscK4OGTjogjIjeWwdNTmDz0YJJ/DofOWEpmjxgLIu8O6ohKdwQpYPp1vk9q+vXw1Tqk + 6uogWRhT1N6Sc2UTSFo2EhcF5q0quFqTdjkcrVQss4VybnfE3zyvKeApLsna8xErFLFYKhKbA2mr + zxlqKbUEiQPxnoSRZli51aYxMCJWxRgsehOnD7ZnIx1RvZRW0Ba7Rq8g5Uq5RWswcboAenKrBT8L + fiA6CqPpyCTmtvuRRpQwD7dv83/DSH9Dsy38tESw/PN8c+q56XNvnqu2qaNAqcpAl5QCdHyqJ0RH + /LbAH0gVBpdPc8OqIqNgmDYEVERVOxj4dqfJabSLRBJIG1arSyGTiFav/cgZDNluhoZEkvDLzbZQ + 0PlLr0cuYo28DZ3FnxRpob+NHpe5hdDBilhF5ZYRwe367Y4Ts4FDGx8ICcH+5WFDXQivuySCx590 + JQwOtTS2Idc8ktLL9DzLyYIhY84G7Z8PG2pxQiGR8LSOFsAgsnoCfqn8NJf3uMCi2nvEgw7Ig/fA + EcexURi1g9+gqB0xy1zUDt6ZgvE6DNbBbyE7uungdjctsm5XzbIjH6t/n4/V+Vaquhgd1CJxv6QW + ift91cVEfXWjpkSCf1aM66I+d9hA4ePLCLRLwx/T4eLHHhADLuJzhwwUMTJCUDqv3RvmgOgQ/q80 + DF3QlsvnnhPLoHakChowH1KshMTFMslXjoplIniSod9Dv0eEeJlfD6QxOaZFK20vTYllhLyEtV04 + X3Ujdb4KPFBbvqvsIl+rrtZVnkHXIX3ggOipuev8hL/Oumtc50DT8HBj8/BwoXJYFO3JZ+fBf5Up + eJ3/OfMHHBNthHQZxOzQs+JlzIFx+IOnaJHXPKDshkJ988c1Kq9utiLmlh4v29X6K0AZw3ZHyEgB + k9yeCQQa7AqRwpkNBnMOhcKRCwazTgV4qrYWQdyv0CrEEoVG8aehYN7Fsq58MFRws6y7gHj9H2fe + AT8nb+LHhrw+/lV+bF89RStDcHSbMDg05bnL/QwxZ62Xje5FSh90OEN6mUlmyYTDaatMbkv7fWm7 + QmFP+/xpmxxsgOkUTCQVMvx1RgOHJtcwHzV4Uw6GcaS8vgZ0RHH5kzP/Dl4gnuNX0czHMW0ZL5+m + bG5jv4iFmjzfdp6vS1zp/K4Y0gsMEk7WKZcLR+by94QulPewrCcfCjd6lEpP43QpVEAnCqFQEzo2 + IdwchOP5OxCA1iA7ISP64RCEhu1ZA/i79rGxYvv4aPHIRLFt8YpiG/zUzAeVR0h8ZgBTYOxJTEL9 + kRzCkD+pdnI6hQ87UzoS1+g+6oO5qp44pdNUfp8Kh1KpSAjK4RZiHf4L0d6a9XC4GA7BiYtPBUVm + X4+yB1rP+RRU0BtXVdCszyV8gqvFX5FxLpPZrZUZ5OaIwxExU5WtMq3bZHZxUqAH6GR7kniwVgoB + L9XKI5X2S89xHBzd4Mw75FKyZa4r/Di/ynmM7wrvOMEud5dB53HRyj+rK3xp56Hv33Hf9w7kOw+f + 44+VP1hbVhSblrc5bcLRgRv2nf/C2MjD/7AXHRc88uqd44eWxqOLbhsdv3NZLLL4Nqgx48yHeCOZ + gPGs/bieLuPPTmIqOV0Gt09alolWQLlNn+d77+vX3iVisRDN57wCWXF4I7/DIW1j/klnVUkQyQAd + JH+f3R8zSpw0KyMJGSsnJLtosSrsM7n1SslxUkwAQkqj3tXOygzxBJTQUmzj81gaf7OoGB4PDHcE + hocDHQTqev7jCYyRnQH7oAx7wN5TLRr4MuTRY/Dmj8fKQHvS5RLNX24ogz3HRauF5uf4xYLysv5n + oToHCfniNVo7+K7v2TJC7cxcQ6Q4XWsT52wE8UTrgTMHu3ctyjEy5PdpCZ2Yv749O9po9fZs7NrC + aihSRKkUWxuXNjt04c5YZllPihbTUhHkaK5l+b7SiiNrUtamRYW2LYORIwseuqmds1oZpTXqNDrU + YovDYk7NC4d7Umapzme3eTiJJTUv5GqOGB1eh4Tz2fVOnUrrdRsjo/sGmjYMFRhcnBji6yu2GQXZ + QUawEPS5hRMxp7KMb5vykyQWLePe07qw0rksZoaRw56TyglqFTnB98unUlBqQmkFkkZtq8VsHJqp + bTOsbVHnVAjRbuAkO3TqZ+S2hM+TtNLTv1MalRKRXMuAo2JLoite6A2yzygNlQRe+RzYtTGdebUG + kVclhojHkYpFzPhraDurWK5WfPRGEv/m9D0ovp95h3ijHjXP8ah5jkfNbgE1e/5M1BBvNOyYvP3e + Y+v96Z2Tt8FjoPK+JjpQaJif0Klj/fCY1OG6fa89ClHzo337zn8eoeezS+5cHAmO374QHsOBcYSa + z0P/eYxMo9+w9DwWxJ8tsiqbioYvzKBRu5cFVWXQflwMxXox1fYmBNC5Wm1+diNbzcauAiYV/6CG + Y2LozaezEElitAf7D/+kt6rEuJSRI2AZ/HZf3CD9mYylRessQos6eiADja/fRYtUIZ/BrmMlU6SI + QO360o9O0wY/4udxiLNTUKaLsTXPY0n8vxUVg6O+waJvcNBXJBgzetI9xsyDbDTZ1KTLInj1jkYQ + vBwOUe9yHoAqmPUKIBNi5yrM4tdDWPZTAuxU36HyjR03L2lSQYAplVSyf0N7bqzJ6p63qWe7Qi2H + lKuS72hc2gLh1RVrWN6blqM6IyGSKdsmDvateGht2ta4qNC1dX7gkdVfuCGrNdtUamvQkvCa7RZz + sisQ7U3Pgsuc6ok4GxG47GKtz2506liVz2OeAxeVGVoP7dI0oyAuVrGVvwxbbogtyrnMb4actGeK + ROCC0Ep/emgRFzn1Lrk16UWl++kZFmoVhnUy8DXSFOmMNZTCml2sobIJr/wt2HwptIyxgCPud6vx + 38gUMhKd++gfBWjBOSyGHslSj62v8dj6Go+trLBPKfvn7lOyNO9/4TOfndqeatn//MHbT25LV96z + 54YT2eG8xZYfSmUW5Cy46dBPHprf8zevHbrrJ0fm99x3/sGN94w4I4sOLb7h3gWuyOI7UX4DPZKF + jM96pC9POnmPdNukRdjlN80/COUaHilX80gW6JH83pRNflpnUopwiYK+wBqtQbsvZpA6ZKxMhHaG + E8o1FKkJeoxuo0p8t4wW4zADkCKkDMz8lugmmyFSdiOkfOMKpPwcIeUMUGNNmAzki3LV55qONuFN + qiYVAo66qITI+VelA2xzAASeDboySMxuzEEbiWveaeKq7gn8xeDp7rrl6ysb1/QlVTDsVzKUv2Vh + Id6TMpkKi1o3KFRCX/TWaCllYl1ZX2K0GJGhkgDMzFW50a3F4dsXR02pUhQFEiA3dnA0yHBGldoU + sITtnInTuhvszoxHI9Z6bGa3Wsx5M3YYcmuMNoNY47JyNp1KabNqXZ3ru5Ij7XE5IQ4Xx9Dv8Zj5 + E2TOMBbBEljziYSTLeObpvwiERYvg/8+qfObE2WgKlJk1Anx7lzPb+xRo83WCDf1CAIfjyAY1yII + HdOyd9DWhBut4VR6WC0jhqqXg3m0NdYRb5gXUt0hUcjElXV45QLwgNZk4kVK2BZEvSg2RH3mgMul + AxW1iZWIoN1MPwYzSlxRySMc5aCVbIRWguJOP+qn/DLEkQO/HSZDZpA6odrgLYPU1XFEXtNHbYyv + +8pNA3uXtPpU8XVf3rbr8Ql/5SO1r+BHqYnG2+gLFZwMrvvsj4/0u9tX739k7M4ff65/4MiP7tl6 + /4gzvPjOxVuEI1p5g36qSMZQ5o381MHTNhV0UbRGXQa3TrrXIz+lFLZcp3hYnePFez0nlbvESRVh + iiKZfhTJD333ymnODLEG8863pVpr2OaLGCRPQboSrTR7UJ3TYzb7dBS+ay0FdDGvzqFjxfeL0EMY + oOF99Cyl86H121Eo034oUzHxEzGScXTmQ+JAlW+bBb7dXOVb8F+RxUCuTUGLCf9fsBiBcw9olasU + lqTHk7DQlQ2MTiFG3UMgTpsjnQ3peSH1KkZXuROv/DtgQTiZeKa2Y+wZiT7it0c9dhVOc2ZWAlNL + +fSRGKhUErUsQOTFtFgA2QqHfwl+a8cfg5xrAmMn2FFPGYwfFy28HudyV0kDDv/w0D0v35LvOPzD + w/e+dAtMAxxty5o6VrRYncLRgt/9+AfPTix++n8f/fKHz00sffr9ryjunroxVtjx9E54jOZ3frOW + B4gMkHUtz8PM6eGiTK+i5bRlRDSOUm9oG+fTF/+SJMBNo4dPUDAJ+O1OlAR4zW49K50iRCSA0pUJ + ex7fIZ6AElqMsoAk/sMrOPdtgXMX8Zy74pSqxrbjQphC8mHKKGTahVU5fmwW8JfT7BPNB87e2rVz + YR7FKKySTvRtmE0BNis0qMCgkm+ZTQGW9iQZCU+zUl3rxO6ulY+snU0BwJ4FR25s01psrNoScUbd + ZofZlIAZQHfKItH57VavVmpOdYdcTRGj3WuXan1Wg1Ov5DOAsVvmN20YzjOEKDFczQA+JL0iLY+a + FgE1e2pRirqKmnEYoSipcBmsn3SOUOPVPb+fFjakl4NZgDXl8SWs8opsNgu4E2UBsUaUBag5lAV8 + CywEt+UT71Es2rvIUu8JaUA0asafkEO/JJZr5NOiOL5v+jRWywOgVWiwMPb9WidkdOblUyw+gEWB + 9gX8UQybeb1IofcYYAnMcQaeojCz0OhprjVLmctgrMiwo14DPOvl2we8yHZmnzzDb5hDyENNitA4 + JsLmohreQuYAMgrgWoCjy5vLn+66Qi85vOrV+o/JOlCTxBupHSfvPPztDcH0jpOfPfzcBpilUJw9 + knc1DUTVunhfg785atNI8Psf//DYimXPvP/El/7EH7+5/IGNpbC6sPPpHfed3BI2pvrX3VrLVkR6 + aAmT1d53hSwIZAEg9QOgBgl+9yGUXjEBCCxYxh+etBloVXnmwkl4UoWcxcGizD0SZJWAFinRw72L + 4rFaN6fgOMLnz6XR1tuVE2FsAqCe+aIhGABBeJu6O6EbfILLQZtbOSFcZmJiyV83YSL6ZhMmRooS + Jp6N/vQzlDDBfAntBUOMBNqq3X3SHkB1A3ppuWqAS0GyjL96GVO9gL8DTfI3U+gHGLQFi7dNBhoP + oq+Fl9GXYE7ZmjnV8VlRJRAaMqzZRyUtrDesKsGF65/ChKz39fClPAfVsgIpRVEdPxw3S/zVx4IU + uWIC3XnJX060tWSwUf1nJYO4WKZtXXGgVJ8MggOrv7Aho7HYlFpz0IqyQbMp3hmMltJ1RNsTdjaF + IdE6/g97XwLf1lHuO+doOVqOJO+W9+NNtmNZli3HW5x4d+zEW7ylLtlkSbbVypIqyY7dmCRNS8sS + 7q+UtglwgZZCWUpLQ1saAqUuCS70l1IoXAi0j6Y/yi0/KOBSehsujvy+mTlHlp2FtBfee/dd6YuO + ZuZ8883/W+abOT5HCpdkyoarwbhEU0GaeXCumyZa1cZ+F9nP/qfsNTHPvinOriTOwnCljDKT4eIY + Ts8odYyWTDItDgMrWJ7k4wmaj0+xapSy8ucmHZxMybAUEdsWgW0j2fnxJpKeyQNOOEFfLD0DGbp0 + NUVjj5Psgl1cXWRgiixMUSljymSK4pgiPWPSMZeBRJBc84DUl+Io4mv0mrdUr+HLWPEvROF4Pb6M + 5XQa5i6FsbSl3NZZmhSMS8WXsQ8xO5mQbePvpOeofsellRcJ5aa8RPZ7+DoW/+zZ8tsV7G0XH8Z7 + xc3sKfYtxW9YTq6AHHcPtGSx32OOKV6BFqXYUgs8NxEeldiSz36PfU7xC2hR4xbw4uaVQvYttp9c + D5N7ya+Te8mv43vJjxjm8h9RzEdvywrXJXBu3a6Mfat0522ju28dKITP6/bcusP04+SCKqHAJsQl + FWzMKbDlxj2197i7tm7y3t17jt1QW+e+x9E7VpeSUb+3pddRC5978H4oa8XKHGO3wZ4sC/ZkzDeb + NGRPtpQ5qzggXgeTTZniKtfBzDF1SnF2NmS82fhkXsEqNeqvwrKck5aVnyB/XLrnxW6pV7G67LTE + tHheOcnKWUYG+3KMoRYscxNYpheNwKrLvNmk6+gq6Kgt6OgoqJXp006y9U2ZSL/5wY1NSWmdG61f + bd624f7sbEXznPrR+JSHsdlW/0wUuct61b8SVa/PC9WRXzI1rSYFJc4J7E0b33egw7K9NlfNyVkt + z2WVNRQ2tiYUby7drOVVMjmk8qbODmtVbp05R6XTsDIFb96yo7zF2Sx0bi9uK0/Patq9OVsbZ1Dr + EoW0nEx9vN5SllKYxivjs1KS0w1Km6VgQ1xKXHZRvNGg4Y3JhqyqbeatYwmsLLt8M96d5K9Y2efY + tqi/tDKPS1cnR5sMKUVGy8Pipcms5sCVLk2u9OegxDXzSGZjnzPwdk2qidwtDy/CZFDARpJ7R5aQ + Zysors012LVx4e8wz37fWGi6RXLuLYqEvKzU/Mx0HXNUqeJk+A5tuKmI2Rv+PtagfOVP7O3s8dXY + f5zE/uP0OYpD+fcpjlz7cxQQ+7fnbwv2DwfaMvO6gjtGgy3pi7yxOCPNlMbr001pWaZUDdPVd+j6 + ysrR+e3b37/LVr3r5m01PdaU5PLt1Vv6yuJTrdsh7gpX/pN5gP04fs4Gx/6pJj41/rCWwZckhxS3 + iJcku694TRIJ/wdUqcU52SUQ/gkpvJxRalWPyrUJQlp2QaIiiYOVBD8kxvywlpNrM9LijQlahYNl + WYZVKOWAIh9s0wm22YFmcPQvNek6ewo66ws6OwvqZTxEf3FTJeI3bixB1jgrm2Q91opKmJSSu3IM + Bri2i8th65ZymEdzmJwcReuhp5NeSGKTjhNz7sZxcFNgz27yHNme3fhNniy7/OyQX2XZrF7zQ79R + iybMj07LYKijZGttcYJKq1FnlNRvyDFn6PR5NSWNcLlOvhTT1rRlQ2VWVWm2SqHGN2SU2g1b+i2b + dzfmxOfZ8jY0liQtVPZuzFTr4xMKcoQkXZyOT0w3JGQlaRT6tMREo05ekp9RaIg3KPTGREOyXqVJ + TuBTSpuKMyuLs1XytCIbxFgcXF1OsR8ls6Rx3Sz5SFMSXI48bXnBwlqOiVPloOaW1amy+73MFc7G + Tun5JrVRnCu/18Sp8X0X7keyhNzKwg3VebomTVz4PHv/Ayfz8uzSQ1B2hSEnPTnbmKxjuuRgDzmn + UYY/mM1khmHdKGdn2NsVObBuJMHEuQNaCtlbmAcU6dCSLLbkA08n4UkVW+LYW9gpRRK0GHELikPj + 6Hr5++S9iEMGlIp/oQ+VoxrUiLaiPrQT7UUTyIf2o0PoZ03e/knPkKd2dr5hvtgfMoeEfc4Cp6qz + m+9GTW3ytjhrVVKVZz7k7G6rqmrrdobmPVzmdbuMmdsCM70zLTcf7DhYeYO32pt+/Z7sPQkDIykj + bP0W5RbNBoveMnPQu2dki8WyZWSP9+AMZxofyzOh8ufLn4+nXyWiz7E/X3n1A4N7JLybHjiD5Odt + rLJVFomfieJnqvgpnefW1dd/rj/PpaytF66TL40n+6m1qsp6Nz68Y6uwVRTgUrimEl4P2yoqbOwA + Pl5Mxw3srRHei49YqyorC5iKqqoK5ll8MrwLH9/B3HfjkuzeShygFbbwz222ilegwhyDwgiWdgAO + zFOV5RsvdkLpHqu1ihVEpjAHhd/ibr+oslZZoIB/i449y/5N8VtWqXoM4Z3OLPsj9ruK16D+BPk2 + wyz7ArtD8RrKQJYTCv1J5mtNuiS1GiXpHlIo4uWPGE+xYRTPrqz+jteZqAdW8yOP/MTTm/Piz3mx + OxL1F97Sxsdr3yqqqykRjMxhQ4LintLcu/OKTcXhF/QGnZ79XnpGHkV0Vp5HEC0QRPXsabZX8WfU + ilq+UfpFG/+FhAT8PxglpXba8N5Xb0jstCXYElJrH9ycrjCdZMNfT/2K4iSGGPVTVaWl4nWDdEve + IluzMYj81ZQ8Y6qM+u6anO0t3T6xWWisseh0cWqZllfnVXVY6hsquka6KszdjtqMhqoi2BbKYf+r + yrHU52WbUtUV23Zuq5Cd2rJ7c46Sj9Oo45KFDFNmkjGpLDevtNBUN9xcN1yXqdInaJR8fBpcCMQl + xulT0vi80vyC6kGwQjb46S5ihWcRXk1Fv6ECmNVNTamFOr0+xcRrtbKC9KJC07d1RTk8r8zB/xNT + IlJi5W2RHQGDf6nY+HwlGIMc8INCKaKSkd9MxY/SipkuVWYrYt9UKIo25hWnqmTWcLhMpk4y5VSY + lIo/ybWpxfkmS7pW8dMHB2SJfKoyWY3vbfzLh/HPXWmTFKk69gSv51i4QtaFey7iX0sVYwxykoBK + UPdjyQlZpm8xLyENMjIvP5aQoMk9ybzSFIc0yVmnDhfeWcgWFnKZp/TYlaZTnOhK+pR0HX2arvwP + 5IcISdTh36eXYo2GH5eSUgRrF47G6kSpwH63eoN5qvMFY16e8fRdH60uaxz4Y3VjaVWdrbilp66n + rkX2dOOurKz09Gz2C1npY+6Ng6nxe/5mNj1iC79cZXumhMwNEpmoFDygzkOCXpWbm6LEmiAUx7z0 + ZEouZ5Bpi9Ix8ESZlgC32Rpt5EHMP2Dc2BN1CavfLoiXkV9LKpJFzZfV701gbeR5BbUbTc9wRbbK + DYpvmqqrC4uEm7JLs1PUn/yMOjmjIC1UnMe+YYiPN7D8xT8n8AYDa7j4Fqk/lpevTSkwhgeYh9Py + U7X5eXg2iXGFUpBwAilOMi8/EaeV8+cS8bxW0XlNfu7sTOTnziiw/MjTMuxdiXFPFtXVFn8jAV5s + WVyi4u6ygotfJmPuLCizCgLEawVjZhvloxCN+cj4NEqTtSKDrAXlwqdCtok49Ep7PqX06GxjTrNr + 6zZHQ1p2s6tzu2NT2sf12WXZjTZ8bLGy39uHL3Xc9+4SP507b2pJ/9CdI/6WjI+ApkNMI5spH0DZ + yHiCT30KBteiDBheRoavbLSteQwI//2HTIKaavJEKV7t2UyNPnyzTmfQHrkjMUGjO6bNK9iQHNDq + mFkhLU3IN7KqAR42zVmacZVSq7k4k44t3Mbks2bQvAWZTjRlnJS1Ppafryj5DoxcBxiSiQE2ShEd + /ZBzkckUnZNM+dITlWuvVOh/uUDiPDklhTWX9bo3F2yxCrAF16i5jJKqnK3d/btrIdtq6tt7Khty + bEVZKo1GbeALKhpLJv07tu12sOmbd20R+PhEpcqYm5ZjSDA019Y3GoWs1NZac0MihF9udrZWnRiv + 3WPfPpkk17hwDipiqtgueQ/snQtR3gkIcFnrN7Lz0mG2pp8C1Ths2EjWIetxfrL4LZpc8Zl9+nUg + Yl0Zvu7oSm3JNRVnhX+t5NUKnfZHSkP6BmHLhhYt/xv21V+z8Q138Ho9f4fckGUsq0th7tAlaORJ + ieGSDOaZ8PUYUy16gi2TuVfjzAJx1ghxZgEzN11bnJVlbbG3bt1TZ8zabG/burcu9ag+c0PWZis+ + NpWx8QO3XF9uvf5Qn/g5sm1fbcr0zV34CP4eRWdYXuZAWSj96zo+5SkYPR1pYXw5GR8C7fnVn3EV + I219oPFaPvxRHa/XHjhcoOHv1OTmFSdNafn/yEpOycxKZk61J21OM6quU8JV9sVzKTjKtqFH2AzQ + uwmVnticf1JmeTwjQ2EpeRrGrQEEyfAZBxbYDBkITGB7r6FGMYqhllG6zVWfX1+Wo1QpNSou3VSR + 3dbZPVqlNRjUtS3brPVZFaYMTq1R61N3dY95ejtG9zCHbX0bMzSGOAWXlJmUqTPoasorq5My0hLr + rIU2WPTisozpakPujh2No/Fy9TC+bkRPsTWyvWKUZReAbt+Q5aVrtTjKGiHKmt51lNWkNOYUmjLD + b4L9FFrts0p9WlHOpuJGDf8S87OfM7OVIY1WqwnJ4ULcZE1itvMGtSw+LuwzMofCn8DWRistinSI + MB3SfwuxsmakkxUgHFnJG3OpfWARlf9ngl6tLdjlDjR851W4os/lkkvzkxGz8iXFV+VxShvikeoE + r0DkAUTcS4oI2ZuGuJy//cwQF2dQ2rJMbaVp6fi3bFdOcQ+zHaoKWEFVJ7BhIGPJcpNzO9ijF0Oq + ittg1fkMJWb7FemNayX2yHsnWfu7JzmKoj3/JTpzJVI0raEPiPTapaS0Kb+2jl5aR/8eTVxGFH2M + W14l1bYr0OcxqXNF+koU/Y6Spv7v0pOXkvZzVyK+9bL0K0q6L//zSf+IRIaudfTpS+gH6ylOu4Y+ + Fk3xsivQ5zEl5In0l1VKfJtS0kcidGw9JeuTvwP03HpKuSOV/bt05xVpxTgJ9MO0CqA30t5ILye0 + C+jr6X/LcAGdzLRk3pF5HlPWjv8rNJ31iRjF6B9Ar0dTdlUUzWcf+wfQyfdKOdw/hIZzjuccF5qE + z0XRUm430B/z+qPoM3mv5r2a/9H8v6xSQVvBZ4AeLNRE0Wjhpwo/ZWo2PbhKRVuLXit6rfjtksej + 6KmSRaAXSs5djjbkb3ABvV06clm6v/S10tfMHzT/Por+Yr5ovlimLDPE6P8fsuT+XSqxVIgUWEM3 + R9HblosxilGMYhSjGP3PpvL3AT19ObLmrqHhGMUoRjGKUYxiFKMYxShGMYpRjGIUoxjFSKR7rS9a + X6xorPjQNdNzlQqgQOW319FLhN6JUYxiFKMYxShGMYpRjGIUoxjFKEbXTjZVjGL0P5cQfpWxeQh/ + cxt/9TyOtMjId/H1pCYj30hXyX8mlmXIIn9ULMuRUb4olhVQ/pVYVkL5P8Qyh2YUerGsQhsUd4ll + NRK4e8Wyhr0vMpYWjXDfEMs82qDixbJOr1RVi2U92gY8DMGKGFVKg1hmEJfaJpZZJDd+USzLUKrx + brEsR7zxs2JZAeWHxLISyk+KZQ5tMp4WyyqUnNIqltUozhgWyxqmPzKWFpWm6cUyj5LT6sSyjpOl + 9YplPSoEHhli8O9FsQmK28QytTMtUzvTMrUzLVM70zK1My1TO9MytTMtUzvTMrUzLVM70zK1My1T + O9OyTm8UdohlaucvIwFVIiuqQLVQ6kFu5EAB5ENBeI+jELS1QimA/ORohxY3lLzIAmeakQdIQAPQ + NoEm4VyQ1Fzw6QLuGTg6gVOHOqE0Bi0utB84+kCaC2QMoTlSElA3SJ4DudNkRA+UJggSAd4+4JmD + vtIYQgSzFdmgZIrUapCZjG8HCX7gFWBcO4yDZTjQjSLvNqhNQis+Ow34ghF9hqDdTXTwXBHPOLGD + gFqgPgZncKudWGGtjlSOT9RUIKNMw1kH0Vey7n7oGyAt08DlJFYToH2StPWgLsCEreMm/bzErptI + fxfhcKEpGBNb2UmOgohI4hVIe5D41A1YJO+t6oHPhwCFG3oGwQqtRBs30cQd0cMO7ynoQRFSfexk + DEH0tRskYql24MOy5qC2H0oh4ocg6DcGZQ/BFCC2wPq64TghWopKDRGd6JheopGDIPWSUYLET13E + K+PQguNxmlgwSOS6RF+4iU7UFkESFUGQahfjFXvML7ZLo0yBHA+xj19E6YWWKTIqlRkkllpFgEf0 + E13o3JBsS7F7SNTgSJgUIxejmgJeO4wfIjUv8bUU19RmdBTqR6+ol4/YdoxwriKO1ghbbZb0o1rf + CHULmbvR3iwi0qaIhDlih2lxlkbbW4o+rxjJWH/qlwCJBilGXcTXOHL9EW0oxgmRJwi1m0XpIdCC + emgm4iU7iRE8A6bW6CVlHgcgsZPxHeL4lstkqPpL9MSz0wd1JxoRo0aK+mqQUAlZYy1/WYT/ytEf + IjicJDoxphsjflmdrZfmzgkx1v0RbhzNNAq8wO8i8fR/JgdrYln4v00W7gYkDlRMZl6JeF5AW0lU + +AiyEBDOYfWoHMhJbIt7Tl0SPRYx5sqhPEdiaIJEEfbNHLTaATu1sSSVyvQQDBjBOEFLcx+VdbkY + DZI49xPdqRWkftiro2QMmn3miKWpZUIRb0vcUq5wiPkcz3wzsQHm84tREZ27/cSuXjFnUCkusW4X + 87SLZBk30ZCiGyM4JC+v91hI7EHjJ3BJy3hEB/M1ZQK6UjiJTUPiikTnJx3XHBlnvQY0s+4ndnKQ + +XQ5m+0XNXWTmeYhc4rO/Ettj/vQ1aYY+EvWRPDlpVMM79W20fODrviCuGaHiOcca9bO9RqsrpTr + cW2KigGsCdWF7iCkXBmI7EacZD32kjxiv6KmNPbsa6KK5gOfeKRa0fI0mS80PznJ2uYWcwuVgzk9 + JPtfOUZpFveKnlmVLs0Qd9ROY5LkO7doZ5zVdSRfukQdpF2HZOW1UW0mnrGTshNJe671eW79TChe + lxdcJE/vJ7sMN/E+9qod2rCFJoBDOlcuyty7LneWiLN3NVus7hAkNO9mdbrG1UDIXCejW5IhZEWi + +QZoo36SoobuWDziKrIa3Vdb4aSovPIqhz3XH5k5wag9CvU3jQKXOBbN2F7R72aic0BcfaR9Bd0r + TYh+luKYxpVf3AfREXxkL24nekqRYkerq/z6fPZP8EXEQnaiO7abW8z1TnGuOsT9t5dgjV4z3WSH + HiSxKWK8sm+hPLh2nQdvl0TZyBl11RA9H65ZHlq90pG4L5/dzOuym2T79b095ErBvU5vCdfqHmx1 + 1qyuRJIPzUi6YsNXZlLdFRUhfnJN5iHxNhm1wlLUYwSLS1yppiO+jM4l1IfloseDZJZ4Ihikeb02 + lq7dqtErPNUyeqVZG9OrlthP7Dj1Hv0orQbT5IqTWsYVhcBJjnjMVbvcAByOqLUjdJV8TDO/k2gg + rXj1a7I43Y3NkPLldt1eskZIq0z0NZu0Tlwup6ztFSS5gvpqTNT78muu/QoeDUS0D5Io9RLpdBZd + ejX8XiNAWt86UTs524c6oLYTVssB0tIFbQJk0QE4MwK1Nmhtg5Yi4BgUzxcRT+0k61An8A2TNY7K + GIBjL9RHSY7rQAKp49p24O8FWbhvO7qOjNEO0gYJ5wCR3QOt3fDZLvLhHq3QMgx1XN5KsiAdrxd6 + 0WuILnFNpEiHoF2IaLgWVRcZUULWA7UBkN8pnm0G2V1EHsaPx+8g5d4Izg4RaTOxEZaMZbYCom5S + w63D8NkPfINk/GaiM0XbS3TogPNUl3aCAI9sEXWlfNg+I+IZ7COMrxtoVatmYoNOgmbVfq3w2Q/I + sfytcHaIrBB90LONaDpIrNcu2gxr201qq1pRT7USbbBVsQ3aoNwD760R2w2QI8UyECVtre12kvOr + XFS/ZvHYSizXR2rUG62kNkR8hc+aRV8OED3Wj7qTRGI74WomGg9GIqSDRC9FL0UnHaMvCgkdD/s2 + GosU1cJV5giVIp0fFj19qV2w1ZuJTTCuwcjIV5IMc/PLQqW1olbocTsCvqBvPCS0+gJ+X8Aecvu8 + FqHZ4xEG3BOToaAw4Aq6AjMup0XX6RoLuPYLfX6Xd2jO7xK67XO+6ZDg8U24HYLD558L4B4Clmy1 + CSb8UWMWBuwe/6TQafc6fI4boXWbb9IrdE47g3icoUl3UPBEyxn3BYQW95jH7bB7BHFE4PHBoELQ + Nx1wuAQMd7894BKmvU5XQAhNuoSeriGh2+1weYOuTULQ5RJcU2Mup9PlFDy0VXC6go6A24/VI2M4 + XSG72xO0tNo97rGAG49hF6Z8IBDGsXuDICXgHhfG7VNuz5yw3x2aFILTYyGPSwj4YFy3dwJAAWvI + NQU9vU4wQMDrCgQtQldIGHfZQ9MBV1AIuEALdwjGcATNQnDKDnZ12P1Qxl2mpj0htx9EeqenXAHg + DLpCREBQ8Ad84A2MFqR7PL79wiQYV3BP+e2OkOD2CiFsa0AGXUBHL4zlGxfG3BNEMB0o5JoNQWf3 + jS6LIKpZFBSm7N45wTENLqW4sfm8YOSAHXQJuIPYoi77lDDtx8OAxAloCbpvBvaQDxSawSrZBXDA + FB0LB49j0h4AYK6AJRJQ9dKYQovP4xwB02DTV1sqbWJ7GW5fY/5QwO50TdkDN2JdiFsj0TkBVvfj + ZocPTOB1u4KW7mlHsT1YAp4UtgZ8vtBkKOQP1peXO32OoGVK6mmBDuWhOb9vImD3T86V28cg1jAr + cHqmHfbguM8LRgeu1cGC036/xw3Bg89ZhFHfNFhtTpiGMArhgMXN2BgOcG/IZRac7qAfgpg61R9w + w1kHsLjg0w6udAWm3KEQiBubI1pJIQnmgtjxBaTCOB7BfKnuEAvOaUfIjENyBvqacR9pAPDR/km3 + YzIK2X4Y1O11eKYh/lfR+7wQLcXuEjo1othBwtXQ0pkE8Q6+D4YCbgcNSmkAEouSrE3EAsVuGAXm + BU4nATx7nL79Xo/P7lxrPTs1FUQXqAPuw4XpkB8ygdOF1cQ8ky6Pf61FITdB/FJ27BA3mSuT7jF3 + COco3RBAHvfhGYMhi6Y2C2P2IGD1eSPZQnJCsRgLLq9lv/tGt9/ldNstvsBEOa6VA+deMa+UgHtJ + WJB5gMVcPhFeLoG9KHJ0Y46fYDPf4AOdsGlgPnkguRFzr02V2JRrkqVO14+dEyQTCfQGE7igFwQ2 + WMZpFsYDkPjwFIHJOAE6YxuDrcCj0F3wjUHC82Kj2EmyluLs2rXAgOzBoM/htuP4gHkGacsbstOc + 6vaAZYqxxDXaCoNitv5JCUHkJBmR+uGyfCTX4uaocDOL4YbRS6c9bohTOjaWFaCrFYxAJhHW0Izz + uXscf7qIQfzToFBwkkxYED02jSdvEDeKUQIaloPiQRdO0z6/m2bVK0KlEx6GpJNGtDQBsX/SN3UV + HfE0mA54AYyLCHD6II8SLDe4HCEpwFbjGILf6SYTr56GOKSxGVfUouv1hfCUoQndLU5jGiniqeAk + XhPGXGtmrj1K0QAePhiCYHKDiyKrz9UMgOdbZ7sw2NcxtLN5oF3oGhT6B/pGutra24Si5kGoF5mF + nV1DnX3DQwJwDDT3Do0KfR1Cc++osL2rt80stF/XP9A+OCj0DQhdPf3dXe3Q1tXb2j3c1tW7VWiB + fr19sLZ3wUwEoUN9Ah5QFNXVPoiF9bQPtHZCtbmlq7traNQsdHQN9WKZHSC0WehvHhjqah3ubh4Q + +ocH+vsG22H4NhDb29XbMQCjtPe09w7BstsLbUL7CFSEwc7m7m4yVPMwoB8g+Fr7+kcHurZ2Dgmd + fd1t7dDY0g7Imlu62+lQoFRrd3NXj1loa+5p3tpOevWBlAHCJqLb2dlOmmC8ZvjXOtTV14vVaO3r + HRqAqhm0HBiKdN3ZNdhuFpoHugaxQToG+kA8Nif06CNCoF9vO5WCTS2s8Qiw4PrwYPsqlrb25m6Q + NYg7RzNbdLFbA7FbA+/CtrFbA/+8WwMa8o7dHvjveXuAei92iyB2iyB2iyB2i2B9No/dJlh7m0Cy + TuxWQexWQexWwf9ztwpgbtLvICC0YkS3o8u9WPFJfcQUw+dx8sT/1V5yeR7PM8DDLFwrv06H+dnr + rpXfYCD8S9fKHxeH+WUfvFb++HjMLxeulT8xEfjlsr8i/M0FOeGXw1sgx3gwswmlg3uK0B7UAOm5 + i2HRCGNAdiYdeZlsdIDpR7czu9HHGR+6n5lBjzDvR99kPoTOMEfRj5k70cvMJ9HrzBPoLWYRhWXb + GLVsJ5Miu47Jld3MFMuOMRbZG0y17A9Mq+xPTL9sidkte4e5QfZXJgTQD67FxRy5Rlw+wPV+wPVB + wHUP4HoAcJ0AXN8GXM8Crp8CrlcA1+8A1zvMIsMCLh3gygBcJsBVBrhsgGsT4OoEXMOAawxw+QDX + HOC4dS0umSIKVyrgKgRcNsC1DXBdB7jGAVcAcN0CuO4EXP8KuB4CXKcA1w8A178BrlcB1xLgWmY+ + yaiYJ5gUwJUHuCyAazPg6gJc/YBrBHDtBVxTgOsA4PoQ4DoGuO4HXA+txUW+dSPhSgNcxYCrBnD1 + A669gMsLuG4GXB8GXJ8EXA8CricA1xnA9VPAdR5wvQG4/sbcyXCAKxFw5QKuMsBVB7i6ANcw4NoF + uByAywO4DgCuDwOuTwCuLwGux8lcWoNL6Y/ClQG4SgHXJsA1ArjGAdcM4LoVcN0NuL4AuL4OuL4L + uF4EXL8GXKA1usgcZXSAKx1wFQGuasDVCrj6AZcdcE0BrhDgOgC4bgNcdwOuzwOuxwHXGcD1I8D1 + 8lpcqu4oXFmAqx5wbQdck4BrDnB9GHAdB1xfAVzfBlzPAa7XAdcFZobRMO9njMyHGBPgqgFc7YBr + EHA5ANdNgOsQ4PoY4PoM4PoC4HoEcJ0EXD8AXL8EXL8HXMuyv7IqyA1JOG+puBUVZzQ2FIwfHB9X + KaF+4exZ+Hf2gkqBVMoLCwvwb2FBpUYqzTOHfw30zuF/O/y/Dv8AiHD4v7+wNGs87sd9lctW+lIq + kFK5ZJw9d26WMC0sLJ2D1xKpGHE7nCFM/nMgfxY6K5Xz5875F2bPLalZpJYtLKAF8lKxSCVbEF9U + Lu59TuwNL78q0roELDKklJ+n3HKkVPgXzvut5zn5Cifft7QPXhTcuVUIIAHkqFhGJSfdYGAli5QY + AhRZFrFQZJRoRbkskzEqxX333Uc1JzLOUc2t/kex4sv0zHGj3yjZpLb2uuuOLxuNCqxW00JTU5NC + htTyBaFJWFBxSKWqrfV4POHFRZWSibY+E219RqV9T9ZXK5GaAwlY5tkLpMbz/DyuzSvB6Nzs2eWF + hfmr2F+sSQ7AfYiws2J3eBH30dYLotWX1jtAJUcqxT7JA5j/LAWx6gE1y6ipByQXyC/nAgVSY++R + WCXDUwAqLuICcuYoP8vzR+mZiAtkSCPbdx4gKORIIz9v3Wc9r1YjtToTZaJqIAfQIfTM4WcOq5WM + WkU8QQ3HqLnlBdEdai2j1p2H15vnf7zvJaDn9v0QSK0AJnDIeX8teITYWvKIlVMiDmMCy89rlIxG + Jfnk7AVSlZxydp5TMpwK9FpeODMLpzhu/hzxC2ipYRmNPOKYBbEqvUhHKvOsJATbRrPajtFzcoYT + 3UPKSuIfsAPYFRx0ATtoXy0RcFZExAH2RY8HwnQRj6lYiDiJYxmOOIl4iWGhzHBohQvLFYyGw7OD + mEF001kajqKfrMv03FGeeorUjFGu0solV2kVxFUaDdJoeJQNZAOyHz4ERCzBMRr1Mkwh/A4vY4ty + y+CuC8RdGp7R6M/7l+D1i0cxvWB9wboIRCw/u3xm4cI8f3R5VqNCGtXKilF8UXsug1+W57Uco1Vj + WS/DAIvhl0ldCa8ZUp+h9l4Gpy3PAxhOdRBruzC/uDi/zmlaltFGOW2BA241kbq4SMrzRCKRohZH + w2wK8NS5C1FeW1rYZ10iXlOC17DbZmuJACIKIEV5DQ8qee0KboMVYQWUB79pid80HBhjnuLCcLCp + rEtL1HHL4tnblfMHlbdjsFDNbGjweM6GwzzPyRBPfbdvHydHPHgP3Gc9r1UjrUaaatVkqtHJ9sxh + rYrRaqgHT58+HV7WKhmtCrtwgRwWtDpGazhfe752aXaJrB7PH3/++AvHnzU+aySs2IvnZzOxG7Uq + pI1yoxGnVTh/FObXsofnGH7VkWBb0hDxJNhNxTEq7ITwwnfD2O8q1cHw2eXZheWDYAbRe5IzF3iW + 4aO9uUB6vxz+d2I2SRSxoJaeWZQ8ShL8uQt0pcIVbvYCzuUXljQKpJF8Ck4lUkQ/zJAFA3sVu5Vn + WV4ZGVr0qyLKr4pov/LEryRyJb9iWEpWq5YcC54Vz4NnYX0A12LHqPXZ1dXj44srK0olLKQ6uTiD + OQXS0bXuuJ/XIp7XIz3stDBVHK44fGjh0MK+Bfi3j9cwvHYFrRymzo4qQZl4IByOuHqB1zN8PP5v + CJcalhrOec55cOp49uizR0/zp3nC3XDwu+DtBr3y9uVZXoV4dZS7jWqOURMNDmKD6VSMTkMd/jpE + 1uvhl0mLDF6bDpGWQ5vUKkataTj4+umVhVcPbeHxgtAIkTkOdBB2/fvguIJOw3seYYcrogJgQccy + usjUIi8i7Vcrvz5NXhHZMNLBBh7XIkgwM14zpChYIIsOhDJEMg5kPBelOIBAIKKo1GdXDhA1Fxc9 + 87XznsVFHcvqVkMB48P7GRoLUcGgRitqsPlhhYLRqcjuBRDxIr4IRF5jnL1wnFpzZQVbXIPtKYUE + 4dBnp0ghATGB9IpITDB6KSairgvxdTHr9HgnxLIlSMsjuNwcsI+ZhebAlNcstM4FPGZhq8t3IzkG + 4BhwQRk/hWEWuu0h77vjJhgYggPeWZ+FzyQKKeuY9UjWx5XqDbd33v6OjuHY+45k3QZNh1mGqdBa + 1UpFqV7GpiuQ1a7UlCoZOXOkhmXk9w1ad1jNUS2Zn8s+nAlhgqmP/L3QR/6Cj/++vAWTNTdKmDxp + Nnw0sHvim+/7vP3cB17cs+vNP2oLv3XfEeOw9Yj8tPWI7KH7ZOAsNtEGEE8aG770c9mB9x8hgE9a + dRG0jAJw7ScwZcNyZSI7PFiRaI3HFVWiZqc9OOn2ToR83oo4qx43concgMs55fM6K7KtmbhFk5h8 + 2ccfK3KtOfi8LNG4en7IPeUqGwzZp/xCf2uzNTtVV1FtrbPWVNRsrK3aeD1Ua6Oq1lse+6cg01m1 + +Lw2Ud7T1z9QUWQtpNVsb6vbjx+JahtsF9oHe+tr2irby2w1tZVlLdaOmopCaz7VKPOyGg3SB8us + R5i8aAszCiQ7Apdi0K5hjzAM+vTnFn/U95Nv/fDRB+Q9v1V94YmbX/7EF1/8xJOuP52+dfRjJf/6 + 9szDe6c/NVxxpn3ijaf2PfnOifyCe4uNlT+p5HZ94JlPj/7Lpm81vP6C8qLm8UOntp8dfSX5puaz + VteIYuvx7IWP/+XO33/O/JuKDfvb/pz681fSL37p/p2/HP3DXa8mv/jFb9qblw7cdzD7lzVfO/W1 + uU6uxzhqq0+44VMZn0y5Z/PD/h986YE3m+u/9vRzn/3fxVx5OJTrGzZj7EQGyZJlxNjGN2NP9j37 + EiLZtzSIyZ4Ye5Ilu8TImrLmULZsWStJ0kqWZIssIcpvhpLT6Sy/P851zHWZ6/ne+d73nfe9n/t+ + nu97vsnKTSdZFgzo4cjHWfBMmztSYx44gUVCL9YwJzgLG95b35A9Bp3Kbx006RuiMT+FNvA3UT75 + bjTI3FjjTr+90s3hSnf6etEcrOggIEEjzxCoCgqcvy122xmL3VqqDp1lXT8PJsb70XUsiAK/IiQA + O35J2fdBmCAMCU3+4SPqGQkPpumtZfliqS4idbHbGGKHQZgBpmAGmNjac0M1D8o5hQ3vjSrB8lbx + KlrAmPABDogOoAVo5qjnqEYof6tFs/M881MBo4erC+GoyLdSQC+R3W0k7OL2JuJRicB/BDAjJcc7 + JgkJGQgE0QaOARrfbQAccfTbAD4+Pr8awMHzL3rGAFDCfA9DqPFR47cuicl/ckhiAkpgdjhEKg+u + y+Eub9Jwvy1RUhHGLO60yivHrBHt2yLpzi9igfzKAwIrMZ7jHiO+9xUmSyf7aSMd4by979xgzL62 + MoGkhavJqIbclqeoQPRzu5709mqi0najZdU1ndJsZeuXEugC0KzhoWUxySCJ1SPTEOtIGANFII/q + Vmo8zYm26uyBWP4ionMiXwp4M8OeImoO+7Y3qt8haY72PpEWOCT8rLBkPI89WuvZJ8RQoD8te9Ym + Jy6nchjIbkBLFdrXa00rbYy/XF4IDEnhdyog6pU5D1949AHT8YpbHlR1RAjIljp7VE7xUDOW0+KR + 7fiVc4igXmtNOKcX3IXnAnUqORwRAmBJQXgam9pDY21T0Wv+IfpTW9s01rZ31ajwNBb0r5AFHODd + cXqOve32DpxGLk7bhYD4jSVUgSO32UwSkEIiUQD+JbbDZj9MAPOvzO9bO/GftP8tG0VdrOVpJYvL + CPZj3OS13vSMEvq8fD01KkWt5nqPVbTIEVHEoQTfz4HFHFhQtX8PSz1xt9pMe/rqBoR9MZxyi9sN + t+gk287HPAHnWIEkKdrNjt1lvDQHzRB/I+Vh7C4ze0uVAtBsbowD0ql7vLtWvZKZfB7H1CV1kIdz + zh0qEv94tmUEQ6R1sf9Vwsyg79fYz7eso2Qb7nCU2qY2tYdVxJcOlgk+Md4Qf/HgbOK7Q1uzZ117 + LpB7Y0boDDQGPhJ1amhfJxOfOEHzJfBq5zvzsfCVwQxajssF42EHmge7s9lBHV80CqGJoqlcGqi1 + Fp5cospGo+5QN36LkHkpt+Clulko1cx3NgrGr0jgDt0cJtDNrjJrk4N2PZV4D131DNqGPbKWnt5y + ajnZ31lXUtMKTQMMCc37IXguylMHVH9WGjEARTBJoIIoUQBAogTtpAAxW3EHG2ExaVsxYTGUqJSw + lKgEStheShzpaINCiYs52v2OAjXc7Cf0SZ5gbxyQlOSuRhd1nwMn/zkF/pKh3D28tlkQDxc8jvEo + xgOYgF8rwj9hQFIYkNqmQJs9FHgcwEcreyhQ9W8H+M6CfzEEBqAmTBwKAm1BwADRT+5MjAWDiEiZ + OF6atuh3wvRyDXyfza19edDw9N7HdVaTOaNOF3WSp209s6Ob6RbJVvul4PdIVKEjGX5R9Y4lL+tm + wMdhNbIwX0V06dpHIvOk9ItsvRTJfRlsKkBxPlPHXXWLFUGxmOw4M8lWXbYy7m66B0NYumLxhVLu + zjiegpCYYT62cUf2aDnElimxTrNbaA5q5naViL6JJWkF46VOdrsaL+qxQX9eWoEU1UJUqFyKnKmm + Dyz6awVdx8UJckaDdkFzpIX06ZSivCjXFLj7x7bS6QbVA722uiHVxizql9Py0ffc+O6v8XF0znEW + U1V8fEiVkTR6OsslFCfxDM35NfzpVmttqgTFV1mG5jSG4nsRvfPY5pLjPMrM1RrhvhF96/1Z8gef + M0RPxmY780Q5yxR3BOvyTpJzadt9uXqFUUe02sRa79mxO1KXtxCvK6zylF27fB9V1LnGhZ6J9Lwx + nb+R/ZplUHrTvgstRz4RGFpxq/763YBHKSZ5/mY99Oq2/Vzzm0fbkFSrInL2+ZLu1vryNSrxejlU + MY1BZp86nCJtXl5La+u81OOu/vYeImmu4lM5gJ49rVk0leLd2UDe9lVmpdRLkrTS5NHBgbqVpO5I + tsXg0yC931hDvKqeWHDLHzFjHo764NSmWSjy6nCM7Km+WTGVBPb6BGpvrNx825AwDgK+rLE+/xr8 + iDgXLwJkeBGY3xEBShsmZ7Ft7mf7OYS12qZTSopE3ugri0L2oINMxHg0Ig8CB353kGIXrHgYCu7w + Js8P3jR0d8eTJx66Lo4udjYYB07Fcxhnd08XjB+B3AFJQAwQRaLERQFpPLmjkNumKEAw/7sY+u/4 + PRt3pmL4pUaiQKAr4uDbhtGx9nQDmP6th6+ZdXloPzwufKx9CwNw7p8he2qczKiZxKqUWJp2EuB9 + QeT6PqBhNpqMdnUfJG0hupejR5QnMmtx2YlNaDNgMop9elL3Oq4ZZtQd+1n1EUXfqbK+ciVI7nrB + mStOz+Cv1IzKI/om4GoIvpsRescNqceJhTZOx8cDbpFLJ4Csz0GDqVXvuVKD1vqhS+Q1RmjD26rx + 2RpEx9Qd9/PxOxaljj8hDTmWux5WuF+dgQKbHTZ33PcrKINdnzyciA5Qm6t5A1OraxM2zi475KuI + 9OnNHJYJvYKzAVez01RsrmZWgh5yaxlvrZO0tnBSfef3EvyKFAK0u4xDAhDj3/bw+S+jSwJ9s9NC + IHj8RQB0pBTfNIERRDhCBISk7XBzSDwQEhvMsO8m1lrBhC914jB0U+AtpVHyifE8nF2ezb8OTyyd + 3y0m3LGc/FvaXmbLZFCEA6C/IwqaAF6HcpRzFCPk/3lcvNtMeCKIQOXbgmC8RxA0ADVAZY8gSP0/ + MTHheyjv9PoP42H8WtOlXmw9Sawi8Xrq9i2flw/9DHRAFQjMWQs0NbTkYWNAXC1igD73Etq21hTc + o8sJ1U9/7a8walpXZpbB9pYdFHGzzncxpm9WBvRhtDGOkqQzVmN0wYjxtV5J4vhk7Omnwc3vkhZJ + RcKJpxIEeLg9Nj5tjvumI2hWyUY96pl1sy67Unom1+KkrzoJtxvsm7Y9Kc+UFsMpP0rGglrvRR7z + RsoKelJ1TnvIboVTQodbKG0uLzyrPTCjG3OhXVzw1PWmmfrzVEoBA0aeXB+A7jpfh5MWoAOUDPv6 + XzCkrRy942hWJSwyuR4e0Wtg8j7LI+nMTWntgU9+TTeY/W3553Mz+cVIfVhsu2QPoTmwC1QdQnWP + lKsm1mfPV4/lFWHEa3Xbz8Loeb2pjhpeOmuupsxQX1VVruPUma20FezHFXyNEXB8r0R/iqXzGjdX + n/KU4FTdskav0MAQKlibV0CDx8p82mS+4E16VvcR94YQPgzp/g/eXE2Z2GY+498qTstG47xtbrvh + oAVNN9QX6N2/XESdqfw6bNB5Cdbl2JDFHklvD5YVLjsRVzvONVFd3m1329eYZEARoX8zqTzft6Qq + J+Ucy/PESOg5bhFUEblbjsWlw00582HdXIMzh/S6Mj5ojqyCHNyjqc53unS+c5suTH2I5N/a125x + ckiHFTf0WeSaPOI4k2sX9PoXAEvmD2BJbL9Lwb74/m0pIP45DQiJ+leoGAUAOw7J/08c8kdGgMTL + hhQKEJfeEQ2JbRMJEMz/PGPBgv+oHWCCdoDx2oH3uZKFz550bIhbQ243sHQ6YncXfzPjylZiFXCd + Mte/UUsqxQLRvHuhlfrQa0nX+/RDVAtSLemk5Z3ST0EMSKUn0TR+9pFBSdY8Z8quaV6dcj7VP5xp + VEkp1Fr2vFiw1J+i7FnKiW5rFpIpR+/3KENeepHJEnL9R1UqNZZDbQjicyXOSz3opSMncUzLandH + pOxvutmL+xbk2NEKP1G4sjb2hozm6Um/fE3+SZrGHKhPY5Ls/MaYoDkdh44JPNffc4T+SI3mqaG5 + OeWE0OcBlQERrM/lKi5Zvo/WC2NZxImcGI+XES4VNWuvkfuKelJFLFtRWZYoFdSfFSy0omuSwCV+ + uFXazf6C0d2rtLcOwsJ6lu8SR8SuWi30GTZdSoqsv8eFOWzFDP+tlw8udThN+pjEo8CKxFI2WGGx + 46wNx+m3cM0sq6jRw5ZPuLTkDNuqTeV5iBce+1uIPIWNeVjSGqj5VK0Rva2/CcZavbzHWNXAOnBc + a1IaRzsF06xnrlUJVB1vbvX0H/Gc5BluUktvn29hM30ZGjurowkUllwenrXILtt8Xe442pwaEjA3 + OKc1qclfCIUXFJ53Cn530dbXqlIk7Jnp1ZNNPnD4xzl0KzxOKE5BUq/5bbhKdBuFdvtAvrIIJnnV + bc2X00wIammdnCGnJxr2ojzqwJtrussp5fVqOWfS+kcGoy7tauccXjunfiF/P8Tzl3nJwd0TGMAQ + 6kOUREbbhZDKRIq/19U/iPLejMdT+AgYGa98h4FE9+10YQfyMSxaDDDfETfCJVS9HJ0crQjN/+ui + D95v8V6Ld9bdpMQKELVCobZl7tQemTME9AHdPTKn9M9k7i/6xwAh2YTJc0JCUoGQJCAkYXeREMRA + SCgg/304MIhJ9O/SLMJTuvhv5oK28fSz8/BCOGPQgMJuB2BA7BCKk51Im8iByGm75tRqu+Z0p0bZ + D295fauedtitIUdwsv8qEXNajMhPGzH2Y0E8GcI4cWdSpex/a5eYrpRyvt+POr7ZwQohJLfW6vkY + Hfq1Uf49ZbdMk3rx9SWXl3ZN3OL5qZYOYfHnY9T0jw9RJwb2s2ixLR1VijHsK//iOiZHhuDPfCfL + mj9Qze6TJD06Zd+lIuvrD1uCni+Ix4TGLvfwgtUEWi7S1eUVk1Bnzjl/dkYk5wjIC7iaadpxULi4 + maeljIcu34tbUhN8synT1yA+73a4dKKMb67v9dK+snR4aprOPlmqRfLoQY5WFPPoQrvwQ4trtzWl + Ke9Ttty/VTpR+fwlY5SBqpkU6iwfy4WKZb61N0JHOF3SKk9EO7u5F9ZgWhVISAtAAnA5rDxUx5Hq + XpXOytu4C2zujOdVC70nFAQcrrdaGtpGtLLbSaRGDL9YWltkwmXwvX2Qn9r3wdJOccyC7GqkHKkP + 6WPSinMcDI02NtULr+6zQhqHFTv2wT+8cRCZTf2EO5kyRDSIU2s4sZSaT6GlQZcezNFHxN9ekZkv + r+pzSPx+f25utr8/92eNZI6SDXVY8Mq1tSbXGq3U0Zlzviyz05LpfsxaW4NVMOdz78o+b8bMUAVP + u8iUbQJzEO3Lw8Pn0HYJso+zTHT1moJNuXG++1Fc/vOKlBXyG0W9eZbNuKhM07Mmuhqq95S6Mr0t + KIM1XL/4ZTc3oNGnuwy9oDT++g+QWEg5gIXcBINAQEjyfy1cv74c+OPmSE5IG4F8voGYghhJvffO + C34WPywq5D5gbysjAPtxIgSJp7a0XkeXNFfVjVXe7A+lshe1VMBtUMB+zynUSBPAOEcgGP7LR9uM + //iLgzjeYJ4/9Wzj3afsOX/SZggWRMSUX5GNAV3wyxnr8LHNPp9P95Xhckcdf2dT3s2OSdEBp9k6 + FLVA651b3eSSbLAWuctJd+4J1VpqlOTuV2+XUs0XcY1hWWqsPMp2g/G4HDJ2oBhJ2iYaH2PjGwAj + 5ywOE0MSF3Ob1ka0V8fZRSbOWLx+Ea6yRGWcnOAjJHrnib48zuAKdqlR8FUj6pXevOdvXfNWfF4W + QqeKZ1XTF+eZjmorcpzz9RL/1H7leMD9966qdsZYyWkD7SMLIiZsFrNipyftz6wH8WMSeM095THX + i8c7UNjRUxLhkiuJazYXblbkNU46+Ty9e7x9Lc6+1ON5LyVrFIBTfnJbhp91PH2hx3q12OULDguG + 48MTnh97RIrEghnxh/ZvQ/Pyf5aI//pO2x5MWgLMeyFJ9eOOIQg/+G4LCZJ2+8KxBFIchST8mf8B + kbLHOQN0k2jS9vMGzCmUBLmovJIi+SllImCFsd/+fmVNnVjatSKffqduwHJEzSeo7+H5uvrAos4G + AAVCX9BDz8Te8KFBFTn1D7ovIRXsejzVBS4Xd3O1S3HEltG7JSiEvTO9qgxcMR2pNYpb0awW+tR7 + bF27QihDXdsv6rV6ZV7Xb4vL7dG8w0gqNxNpFaZmzOSaarmEocJ4wWc3lknPR6am4K4+I2aTm3kk + KrFHQKlmZxW8qHpfRETYMZZdos8K9Tc0bmVNGZWf8PP4qiK6kZk7D1Hp68k6+cqujnrMi0+QTUvB + 02LWgEvJpMfQvQGNGyJ9Cp8e2OiVa3QkzxGYHxUIMdPMzhyDZ2iKtYRjadyCZoFjccXgVeuxLKL/ + AfpFWhMNCmVuZHN0cmVhbQ0KZW5kb2JqDQoyNTMgMCBvYmoNCjw8L1R5cGUvTWV0YWRhdGEvU3Vi + dHlwZS9YTUwvTGVuZ3RoIDMwODQ+Pg0Kc3RyZWFtDQo8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9 + Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/Pjx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6 + bWV0YS8iIHg6eG1wdGs9IjMuMS03MDEiPgo8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cu + dzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgo8cmRmOkRlc2NyaXB0aW9uIHJkZjph + Ym91dD0iIiAgeG1sbnM6cGRmPSJodHRwOi8vbnMuYWRvYmUuY29tL3BkZi8xLjMvIj4KPHBkZjpQ + cm9kdWNlcj5NaWNyb3NvZnTCriBXb3JkIGZvciBPZmZpY2UgMzY1PC9wZGY6UHJvZHVjZXI+PC9y + ZGY6RGVzY3JpcHRpb24+CjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiICB4bWxuczpkYz0i + aHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iPgo8ZGM6Y3JlYXRvcj48cmRmOlNlcT48 + cmRmOmxpPktyaXN0YSBQcmF0aWNvPC9yZGY6bGk+PC9yZGY6U2VxPjwvZGM6Y3JlYXRvcj48L3Jk + ZjpEZXNjcmlwdGlvbj4KPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgIHhtbG5zOnhtcD0i + aHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyI+Cjx4bXA6Q3JlYXRvclRvb2w+TWljcm9zb2Z0 + wq4gV29yZCBmb3IgT2ZmaWNlIDM2NTwveG1wOkNyZWF0b3JUb29sPjx4bXA6Q3JlYXRlRGF0ZT4y + MDIwLTA0LTIyVDE2OjQ1OjI5LTA3OjAwPC94bXA6Q3JlYXRlRGF0ZT48eG1wOk1vZGlmeURhdGU+ + MjAyMC0wNC0yMlQxNjo0NToyOS0wNzowMDwveG1wOk1vZGlmeURhdGU+PC9yZGY6RGVzY3JpcHRp + b24+CjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiICB4bWxuczp4bXBNTT0iaHR0cDovL25z + LmFkb2JlLmNvbS94YXAvMS4wL21tLyI+Cjx4bXBNTTpEb2N1bWVudElEPnV1aWQ6NThCQjA4MDUt + RjY5Ri00NDBGLTgzOUItMURFMDI1NjUxREUyPC94bXBNTTpEb2N1bWVudElEPjx4bXBNTTpJbnN0 + YW5jZUlEPnV1aWQ6NThCQjA4MDUtRjY5Ri00NDBGLTgzOUItMURFMDI1NjUxREUyPC94bXBNTTpJ + bnN0YW5jZUlEPjwvcmRmOkRlc2NyaXB0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKPC9y + ZGY6UkRGPjwveDp4bXBtZXRhPjw/eHBhY2tldCBlbmQ9InciPz4NCmVuZHN0cmVhbQ0KZW5kb2Jq + DQoyNTQgMCBvYmoNCjw8L0Rpc3BsYXlEb2NUaXRsZSB0cnVlPj4NCmVuZG9iag0KMjU1IDAgb2Jq + DQo8PC9UeXBlL1hSZWYvU2l6ZSAyNTUvV1sgMSA0IDJdIC9Sb290IDEgMCBSL0luZm8gMTUgMCBS + L0lEWzwwNTA4QkI1ODlGRjYwRjQ0ODM5QjFERTAyNTY1MURFMj48MDUwOEJCNTg5RkY2MEY0NDgz + OUIxREUwMjU2NTFERTI+XSAvRmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0aCA1MDc+Pg0Kc3RyZWFt + DQp4nDXV93fPZxQH8E9sSojZGkG0tQmKGrVHFKU2tUeomrXTauy9YlMdKFV7U3vvHUWJvX7rv5B+ + 83nx3HOe17nn3Ht/fQdB5KWnR0X+mCDIYAv+C4lKD8mTFBJdJiRvASRgcki+SiExcSH5dQU7hhRK + DCk9JggyRU4XCZ7jBV7iFZ7h3eTryF5c8vsuO6KQCZmRBVmRDTmQE7nwAXIjD6LRCoVRCPmQF/kR + g4IogASUwIcogqL4CMVRDB+jJGJRGqVQBnGoiE/xCcqhLCqgPKqjMiqhKqqgGuJRB5+hBmqhJj5H + bTRCPdTFF6iPhmiAlmiCxmiGpmiB5vgSrdEGbfEV2qE9vkYHdEQndEYXdEU3dEcPfIOe6IXe6IO+ + 6If+eIMBGIhBSMRgDMG3GIrvMAzDMQIjMQqj8T3GYCzGYTwmYCImIQk/4EdMxk9IxhRMxTRMxwzM + xCzMxhzMxTzMx1ssxQIsxCIsxhKkYBmWYwVWYhVWYw3uYj1+x89Yi1+wDr/hV6RiCzZiAzbhD/yJ + zdiFrfgL27ENO7EDB7EHu7EPe3EA+3Ech3EIR/A3juEozuEkTuA0TuEszuAqLuA8LuEiruAy7uA6 + ruEmbuA2buEf3MN9PMC/eIhHSMNjPMHTSFpUSQ3DJj4jvSJVPCQqNmRGWkhK/SD4H/tbjC8NCmVu + ZHN0cmVhbQ0KZW5kb2JqDQp4cmVmDQowIDI1Ng0KMDAwMDAwMDAxNiA2NTUzNSBmDQowMDAwMDAw + MDE3IDAwMDAwIG4NCjAwMDAwMDAxNjggMDAwMDAgbg0KMDAwMDAwMDIzOCAwMDAwMCBuDQowMDAw + MDAwNTExIDAwMDAwIG4NCjAwMDAwMDM0NTAgMDAwMDAgbg0KMDAwMDAwMzYxOSAwMDAwMCBuDQow + MDAwMDAzODU5IDAwMDAwIG4NCjAwMDAwMDM5MTIgMDAwMDAgbg0KMDAwMDAwMzk2NSAwMDAwMCBu + DQowMDAwMDA0MTQwIDAwMDAwIG4NCjAwMDAwMDQzODYgMDAwMDAgbg0KMDAwMDAwNDY1MiAwMDAw + MCBuDQowMDAwMDA1MjAzIDAwMDAwIG4NCjAwMDAwMDU0NzggMDAwMDAgbg0KMDAwMDAwODU2MyAw + MDAwMCBuDQowMDAwMDAwMDE3IDY1NTM1IGYNCjAwMDAwMDAwMTggNjU1MzUgZg0KMDAwMDAwMDAx + OSA2NTUzNSBmDQowMDAwMDAwMDIwIDY1NTM1IGYNCjAwMDAwMDAwMjEgNjU1MzUgZg0KMDAwMDAw + MDAyMiA2NTUzNSBmDQowMDAwMDAwMDIzIDY1NTM1IGYNCjAwMDAwMDAwMjQgNjU1MzUgZg0KMDAw + MDAwMDAyNSA2NTUzNSBmDQowMDAwMDAwMDI2IDY1NTM1IGYNCjAwMDAwMDAwMjcgNjU1MzUgZg0K + MDAwMDAwMDAyOCA2NTUzNSBmDQowMDAwMDAwMDI5IDY1NTM1IGYNCjAwMDAwMDAwMzAgNjU1MzUg + Zg0KMDAwMDAwMDAzMSA2NTUzNSBmDQowMDAwMDAwMDMyIDY1NTM1IGYNCjAwMDAwMDAwMzMgNjU1 + MzUgZg0KMDAwMDAwMDAzNCA2NTUzNSBmDQowMDAwMDAwMDM1IDY1NTM1IGYNCjAwMDAwMDAwMzYg + NjU1MzUgZg0KMDAwMDAwMDAzNyA2NTUzNSBmDQowMDAwMDAwMDM4IDY1NTM1IGYNCjAwMDAwMDAw + MzkgNjU1MzUgZg0KMDAwMDAwMDA0MCA2NTUzNSBmDQowMDAwMDAwMDQxIDY1NTM1IGYNCjAwMDAw + MDAwNDIgNjU1MzUgZg0KMDAwMDAwMDA0MyA2NTUzNSBmDQowMDAwMDAwMDQ0IDY1NTM1IGYNCjAw + MDAwMDAwNDUgNjU1MzUgZg0KMDAwMDAwMDA0NiA2NTUzNSBmDQowMDAwMDAwMDQ3IDY1NTM1IGYN + CjAwMDAwMDAwNDggNjU1MzUgZg0KMDAwMDAwMDA0OSA2NTUzNSBmDQowMDAwMDAwMDUwIDY1NTM1 + IGYNCjAwMDAwMDAwNTEgNjU1MzUgZg0KMDAwMDAwMDA1MiA2NTUzNSBmDQowMDAwMDAwMDUzIDY1 + NTM1IGYNCjAwMDAwMDAwNTQgNjU1MzUgZg0KMDAwMDAwMDA1NSA2NTUzNSBmDQowMDAwMDAwMDU2 + IDY1NTM1IGYNCjAwMDAwMDAwNTcgNjU1MzUgZg0KMDAwMDAwMDA1OCA2NTUzNSBmDQowMDAwMDAw + MDU5IDY1NTM1IGYNCjAwMDAwMDAwNjAgNjU1MzUgZg0KMDAwMDAwMDA2MSA2NTUzNSBmDQowMDAw + MDAwMDYyIDY1NTM1IGYNCjAwMDAwMDAwNjMgNjU1MzUgZg0KMDAwMDAwMDA2NCA2NTUzNSBmDQow + MDAwMDAwMDY1IDY1NTM1IGYNCjAwMDAwMDAwNjYgNjU1MzUgZg0KMDAwMDAwMDA2NyA2NTUzNSBm + DQowMDAwMDAwMDY4IDY1NTM1IGYNCjAwMDAwMDAwNjkgNjU1MzUgZg0KMDAwMDAwMDA3MCA2NTUz + NSBmDQowMDAwMDAwMDcxIDY1NTM1IGYNCjAwMDAwMDAwNzIgNjU1MzUgZg0KMDAwMDAwMDA3MyA2 + NTUzNSBmDQowMDAwMDAwMDc0IDY1NTM1IGYNCjAwMDAwMDAwNzUgNjU1MzUgZg0KMDAwMDAwMDA3 + NiA2NTUzNSBmDQowMDAwMDAwMDc3IDY1NTM1IGYNCjAwMDAwMDAwNzggNjU1MzUgZg0KMDAwMDAw + MDA3OSA2NTUzNSBmDQowMDAwMDAwMDgwIDY1NTM1IGYNCjAwMDAwMDAwODEgNjU1MzUgZg0KMDAw + MDAwMDA4MiA2NTUzNSBmDQowMDAwMDAwMDgzIDY1NTM1IGYNCjAwMDAwMDAwODQgNjU1MzUgZg0K + MDAwMDAwMDA4NSA2NTUzNSBmDQowMDAwMDAwMDg2IDY1NTM1IGYNCjAwMDAwMDAwODcgNjU1MzUg + Zg0KMDAwMDAwMDA4OCA2NTUzNSBmDQowMDAwMDAwMDg5IDY1NTM1IGYNCjAwMDAwMDAwOTAgNjU1 + MzUgZg0KMDAwMDAwMDA5MSA2NTUzNSBmDQowMDAwMDAwMDkyIDY1NTM1IGYNCjAwMDAwMDAwOTMg + NjU1MzUgZg0KMDAwMDAwMDA5NCA2NTUzNSBmDQowMDAwMDAwMDk1IDY1NTM1IGYNCjAwMDAwMDAw + OTYgNjU1MzUgZg0KMDAwMDAwMDA5NyA2NTUzNSBmDQowMDAwMDAwMDk4IDY1NTM1IGYNCjAwMDAw + MDAwOTkgNjU1MzUgZg0KMDAwMDAwMDEwMCA2NTUzNSBmDQowMDAwMDAwMTAxIDY1NTM1IGYNCjAw + MDAwMDAxMDIgNjU1MzUgZg0KMDAwMDAwMDEwMyA2NTUzNSBmDQowMDAwMDAwMTA0IDY1NTM1IGYN + CjAwMDAwMDAxMDUgNjU1MzUgZg0KMDAwMDAwMDEwNiA2NTUzNSBmDQowMDAwMDAwMTA3IDY1NTM1 + IGYNCjAwMDAwMDAxMDggNjU1MzUgZg0KMDAwMDAwMDEwOSA2NTUzNSBmDQowMDAwMDAwMTEwIDY1 + NTM1IGYNCjAwMDAwMDAxMTEgNjU1MzUgZg0KMDAwMDAwMDExMiA2NTUzNSBmDQowMDAwMDAwMTEz + IDY1NTM1IGYNCjAwMDAwMDAxMTQgNjU1MzUgZg0KMDAwMDAwMDExNSA2NTUzNSBmDQowMDAwMDAw + MTE2IDY1NTM1IGYNCjAwMDAwMDAxMTcgNjU1MzUgZg0KMDAwMDAwMDExOCA2NTUzNSBmDQowMDAw + MDAwMTE5IDY1NTM1IGYNCjAwMDAwMDAxMjAgNjU1MzUgZg0KMDAwMDAwMDEyMSA2NTUzNSBmDQow + MDAwMDAwMTIyIDY1NTM1IGYNCjAwMDAwMDAxMjMgNjU1MzUgZg0KMDAwMDAwMDEyNCA2NTUzNSBm + DQowMDAwMDAwMTI1IDY1NTM1IGYNCjAwMDAwMDAxMjYgNjU1MzUgZg0KMDAwMDAwMDEyNyA2NTUz + NSBmDQowMDAwMDAwMTI4IDY1NTM1IGYNCjAwMDAwMDAxMjkgNjU1MzUgZg0KMDAwMDAwMDEzMCA2 + NTUzNSBmDQowMDAwMDAwMTMxIDY1NTM1IGYNCjAwMDAwMDAxMzIgNjU1MzUgZg0KMDAwMDAwMDEz + MyA2NTUzNSBmDQowMDAwMDAwMTM0IDY1NTM1IGYNCjAwMDAwMDAxMzUgNjU1MzUgZg0KMDAwMDAw + MDEzNiA2NTUzNSBmDQowMDAwMDAwMTM3IDY1NTM1IGYNCjAwMDAwMDAxMzggNjU1MzUgZg0KMDAw + MDAwMDEzOSA2NTUzNSBmDQowMDAwMDAwMTQwIDY1NTM1IGYNCjAwMDAwMDAxNDEgNjU1MzUgZg0K + MDAwMDAwMDE0MiA2NTUzNSBmDQowMDAwMDAwMTQzIDY1NTM1IGYNCjAwMDAwMDAxNDQgNjU1MzUg + Zg0KMDAwMDAwMDE0NSA2NTUzNSBmDQowMDAwMDAwMTQ2IDY1NTM1IGYNCjAwMDAwMDAxNDcgNjU1 + MzUgZg0KMDAwMDAwMDE0OCA2NTUzNSBmDQowMDAwMDAwMTQ5IDY1NTM1IGYNCjAwMDAwMDAxNTAg + NjU1MzUgZg0KMDAwMDAwMDE1MSA2NTUzNSBmDQowMDAwMDAwMTUyIDY1NTM1IGYNCjAwMDAwMDAx + NTMgNjU1MzUgZg0KMDAwMDAwMDE1NCA2NTUzNSBmDQowMDAwMDAwMTU1IDY1NTM1IGYNCjAwMDAw + MDAxNTYgNjU1MzUgZg0KMDAwMDAwMDE1NyA2NTUzNSBmDQowMDAwMDAwMTU4IDY1NTM1IGYNCjAw + MDAwMDAxNTkgNjU1MzUgZg0KMDAwMDAwMDE2MCA2NTUzNSBmDQowMDAwMDAwMTYxIDY1NTM1IGYN + CjAwMDAwMDAxNjIgNjU1MzUgZg0KMDAwMDAwMDE2MyA2NTUzNSBmDQowMDAwMDAwMTY0IDY1NTM1 + IGYNCjAwMDAwMDAxNjUgNjU1MzUgZg0KMDAwMDAwMDE2NiA2NTUzNSBmDQowMDAwMDAwMTY3IDY1 + NTM1IGYNCjAwMDAwMDAxNjggNjU1MzUgZg0KMDAwMDAwMDE2OSA2NTUzNSBmDQowMDAwMDAwMTcw + IDY1NTM1IGYNCjAwMDAwMDAxNzEgNjU1MzUgZg0KMDAwMDAwMDE3MiA2NTUzNSBmDQowMDAwMDAw + MTczIDY1NTM1IGYNCjAwMDAwMDAxNzQgNjU1MzUgZg0KMDAwMDAwMDE3NSA2NTUzNSBmDQowMDAw + MDAwMTc2IDY1NTM1IGYNCjAwMDAwMDAxNzcgNjU1MzUgZg0KMDAwMDAwMDE3OCA2NTUzNSBmDQow + MDAwMDAwMTc5IDY1NTM1IGYNCjAwMDAwMDAxODAgNjU1MzUgZg0KMDAwMDAwMDE4MSA2NTUzNSBm + DQowMDAwMDAwMTgyIDY1NTM1IGYNCjAwMDAwMDAxODMgNjU1MzUgZg0KMDAwMDAwMDE4NCA2NTUz + NSBmDQowMDAwMDAwMTg1IDY1NTM1IGYNCjAwMDAwMDAxODYgNjU1MzUgZg0KMDAwMDAwMDE4NyA2 + NTUzNSBmDQowMDAwMDAwMTg4IDY1NTM1IGYNCjAwMDAwMDAxODkgNjU1MzUgZg0KMDAwMDAwMDE5 + MCA2NTUzNSBmDQowMDAwMDAwMTkxIDY1NTM1IGYNCjAwMDAwMDAxOTIgNjU1MzUgZg0KMDAwMDAw + MDE5MyA2NTUzNSBmDQowMDAwMDAwMTk0IDY1NTM1IGYNCjAwMDAwMDAxOTUgNjU1MzUgZg0KMDAw + MDAwMDE5NiA2NTUzNSBmDQowMDAwMDAwMTk3IDY1NTM1IGYNCjAwMDAwMDAxOTggNjU1MzUgZg0K + MDAwMDAwMDE5OSA2NTUzNSBmDQowMDAwMDAwMjAwIDY1NTM1IGYNCjAwMDAwMDAyMDEgNjU1MzUg + Zg0KMDAwMDAwMDIwMiA2NTUzNSBmDQowMDAwMDAwMjAzIDY1NTM1IGYNCjAwMDAwMDAyMDQgNjU1 + MzUgZg0KMDAwMDAwMDIwNSA2NTUzNSBmDQowMDAwMDAwMjA2IDY1NTM1IGYNCjAwMDAwMDAyMDcg + NjU1MzUgZg0KMDAwMDAwMDIwOCA2NTUzNSBmDQowMDAwMDAwMjA5IDY1NTM1IGYNCjAwMDAwMDAy + MTAgNjU1MzUgZg0KMDAwMDAwMDIxMSA2NTUzNSBmDQowMDAwMDAwMjEyIDY1NTM1IGYNCjAwMDAw + MDAyMTMgNjU1MzUgZg0KMDAwMDAwMDIxNCA2NTUzNSBmDQowMDAwMDAwMjE1IDY1NTM1IGYNCjAw + MDAwMDAyMTYgNjU1MzUgZg0KMDAwMDAwMDIxNyA2NTUzNSBmDQowMDAwMDAwMjE4IDY1NTM1IGYN + CjAwMDAwMDAyMTkgNjU1MzUgZg0KMDAwMDAwMDIyMCA2NTUzNSBmDQowMDAwMDAwMjIxIDY1NTM1 + IGYNCjAwMDAwMDAyMjIgNjU1MzUgZg0KMDAwMDAwMDIyMyA2NTUzNSBmDQowMDAwMDAwMjI0IDY1 + NTM1IGYNCjAwMDAwMDAyMjUgNjU1MzUgZg0KMDAwMDAwMDIyNiA2NTUzNSBmDQowMDAwMDAwMjI3 + IDY1NTM1IGYNCjAwMDAwMDAyMjggNjU1MzUgZg0KMDAwMDAwMDIyOSA2NTUzNSBmDQowMDAwMDAw + MjMwIDY1NTM1IGYNCjAwMDAwMDAyMzEgNjU1MzUgZg0KMDAwMDAwMDIzMiA2NTUzNSBmDQowMDAw + MDAwMjMzIDY1NTM1IGYNCjAwMDAwMDAyMzQgNjU1MzUgZg0KMDAwMDAwMDIzNSA2NTUzNSBmDQow + MDAwMDAwMjM2IDY1NTM1IGYNCjAwMDAwMDAyMzcgNjU1MzUgZg0KMDAwMDAwMDIzOCA2NTUzNSBm + DQowMDAwMDAwMjM5IDY1NTM1IGYNCjAwMDAwMDAyNDAgNjU1MzUgZg0KMDAwMDAwMDI0MSA2NTUz + NSBmDQowMDAwMDAwMjQyIDY1NTM1IGYNCjAwMDAwMDAyNDMgNjU1MzUgZg0KMDAwMDAwMDI0NCA2 + NTUzNSBmDQowMDAwMDAwMjQ1IDY1NTM1IGYNCjAwMDAwMDAyNDYgNjU1MzUgZg0KMDAwMDAwMDI0 + NyA2NTUzNSBmDQowMDAwMDAwMjQ4IDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAx + MTk4NyAwMDAwMCBuDQowMDAwMDEyMjg5IDAwMDAwIG4NCjAwMDAwNjU1NjQgMDAwMDAgbg0KMDAw + MDA2NTgyMiAwMDAwMCBuDQowMDAwMDk5NTQ4IDAwMDAwIG4NCjAwMDAxMDI3MTYgMDAwMDAgbg0K + MDAwMDEwMjc2MiAwMDAwMCBuDQp0cmFpbGVyDQo8PC9TaXplIDI1Ni9Sb290IDEgMCBSL0luZm8g + MTUgMCBSL0lEWzwwNTA4QkI1ODlGRjYwRjQ0ODM5QjFERTAyNTY1MURFMj48MDUwOEJCNTg5RkY2 + MEY0NDgzOUIxREUwMjU2NTFERTI+XSA+Pg0Kc3RhcnR4cmVmDQoxMDM0NzINCiUlRU9GDQp4cmVm + DQowIDANCnRyYWlsZXINCjw8L1NpemUgMjU2L1Jvb3QgMSAwIFIvSW5mbyAxNSAwIFIvSURbPDA1 + MDhCQjU4OUZGNjBGNDQ4MzlCMURFMDI1NjUxREUyPjwwNTA4QkI1ODlGRjYwRjQ0ODM5QjFERTAy + NTY1MURFMj5dIC9QcmV2IDEwMzQ3Mi9YUmVmU3RtIDEwMjc2Mj4+DQpzdGFydHhyZWYNCjEwODc1 + Mg0KJSVFT0Y= + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '108935' + Content-Type: + - application/pdf + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/d60f64c4-e74e-41bc-a816-1ffdc20d424a/analyze?includeTextDetails=true + response: + body: + string: '' + headers: + apim-request-id: + - fabf4b88-1452-4d1c-997f-8009db9a5d92 + content-length: + - '0' + date: + - Thu, 30 Apr 2020 23:02:08 GMT + operation-location: + - https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/d60f64c4-e74e-41bc-a816-1ffdc20d424a/analyzeresults/63dd6e78-8f11-4137-9902-09128d16d1ca + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '78' + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/d60f64c4-e74e-41bc-a816-1ffdc20d424a/analyzeresults/63dd6e78-8f11-4137-9902-09128d16d1ca + response: + body: + string: '{"status":"succeeded","createdDateTime":"2020-04-30T23:02:08Z","lastUpdatedDateTime":"2020-04-30T23:02:14Z","analyzeResult":{"version":"2.0.0","readResults":[{"page":1,"language":"en","angle":0,"width":8.5,"height":11,"unit":"inch","lines":[{"language":"en","boundingBox":[0.8861,1.1217,2.3783,1.1217,2.3783,1.2812,0.8861,1.2812],"text":"Company + A Invoice","words":[{"boundingBox":[0.8861,1.1232,1.6203,1.1232,1.6203,1.2812,0.8861,1.2812],"text":"Company","confidence":1},{"boundingBox":[1.6696,1.1242,1.7749,1.1242,1.7749,1.2473,1.6696,1.2473],"text":"A","confidence":1},{"boundingBox":[1.8389,1.1217,2.3783,1.1217,2.3783,1.2485,1.8389,1.2485],"text":"Invoice","confidence":1}]},{"language":"en","boundingBox":[6.0211,1.0656,7.0357,1.0656,7.0357,1.2121,6.0211,1.2121],"text":"Invoice + For:","words":[{"boundingBox":[6.0211,1.0656,6.6362,1.0656,6.6362,1.2121,6.0211,1.2121],"text":"Invoice","confidence":1},{"boundingBox":[6.7147,1.0691,7.0357,1.0691,7.0357,1.2121,6.7147,1.2121],"text":"For:","confidence":1}]},{"language":"en","boundingBox":[0.8791,1.4825,1.5657,1.4825,1.5657,1.6155,0.8791,1.6155],"text":"Address:","words":[{"boundingBox":[0.8791,1.4825,1.5657,1.4825,1.5657,1.6155,0.8791,1.6155],"text":"Address:","confidence":1}]},{"language":"en","boundingBox":[6.0164,1.4503,6.8967,1.4503,6.8967,1.5931,6.0164,1.5931],"text":"Bilbo + Baggins","words":[{"boundingBox":[6.0164,1.4503,6.3392,1.4503,6.3392,1.5649,6.0164,1.5649],"text":"Bilbo","confidence":1},{"boundingBox":[6.396,1.4556,6.8967,1.4556,6.8967,1.5931,6.396,1.5931],"text":"Baggins","confidence":1}]},{"language":"en","boundingBox":[6.0165,1.6707,7.1006,1.6707,7.1006,1.7854,6.0165,1.7854],"text":"123 + Hobbit Lane","words":[{"boundingBox":[6.0165,1.6772,6.2434,1.6772,6.2434,1.7854,6.0165,1.7854],"text":"123","confidence":1},{"boundingBox":[6.3033,1.6707,6.7463,1.6707,6.7463,1.7854,6.3033,1.7854],"text":"Hobbit","confidence":1},{"boundingBox":[6.803,1.6782,7.1006,1.6782,7.1006,1.7854,6.803,1.7854],"text":"Lane","confidence":1}]},{"language":"en","boundingBox":[0.8852,1.846,1.713,1.846,1.713,1.9554,0.8852,1.9554],"text":"567 + Main St.","words":[{"boundingBox":[0.8852,1.8472,1.1203,1.8472,1.1203,1.9554,0.8852,1.9554],"text":"567","confidence":1},{"boundingBox":[1.1777,1.846,1.5022,1.846,1.5022,1.9554,1.1777,1.9554],"text":"Main","confidence":1},{"boundingBox":[1.5558,1.8472,1.713,1.8472,1.713,1.9554,1.5558,1.9554],"text":"St.","confidence":1}]},{"language":"en","boundingBox":[6.0164,1.891,6.9793,1.891,6.9793,2.0275,6.0164,2.0275],"text":"Redmond, + WA","words":[{"boundingBox":[6.0164,1.891,6.6861,1.891,6.6861,2.0275,6.0164,2.0275],"text":"Redmond,","confidence":1},{"boundingBox":[6.7408,1.8982,6.9793,1.8982,6.9793,2.0044,6.7408,2.0044],"text":"WA","confidence":1}]},{"language":"en","boundingBox":[0.891,2.061,1.8537,2.061,1.8537,2.1975,0.891,2.1975],"text":"Redmond, + WA","words":[{"boundingBox":[0.891,2.061,1.5605,2.061,1.5605,2.1975,0.891,2.1975],"text":"Redmond,","confidence":1},{"boundingBox":[1.6152,2.0682,1.8537,2.0682,1.8537,2.1744,1.6152,2.1744],"text":"WA","confidence":1}]},{"language":"en","boundingBox":[6.0105,2.1187,6.9371,2.1187,6.9371,2.2254,6.0105,2.2254],"text":"555-555-5555","words":[{"boundingBox":[6.0105,2.1187,6.9371,2.1187,6.9371,2.2254,6.0105,2.2254],"text":"555-555-5555","confidence":1}]},{"language":"en","boundingBox":[0.8852,2.2887,1.8119,2.2887,1.8119,2.3954,0.8852,2.3954],"text":"555-555-5555","words":[{"boundingBox":[0.8852,2.2887,1.8119,2.2887,1.8119,2.3954,0.8852,2.3954],"text":"555-555-5555","confidence":1}]},{"language":"en","boundingBox":[1.0943,3.0018,1.3842,3.0018,1.3842,3.109,1.0943,3.109],"text":"Item","words":[{"boundingBox":[1.0943,3.0018,1.3842,3.0018,1.3842,3.109,1.0943,3.109],"text":"Item","confidence":1}]},{"language":"en","boundingBox":[3.2527,2.9996,3.8367,2.9996,3.8367,3.1371,3.2527,3.1371],"text":"Quantity","words":[{"boundingBox":[3.2527,2.9996,3.8367,2.9996,3.8367,3.1371,3.2527,3.1371],"text":"Quantity","confidence":1}]},{"language":"en","boundingBox":[5.423,2.9996,5.7372,2.9996,5.7372,3.109,5.423,3.109],"text":"Price","words":[{"boundingBox":[5.423,2.9996,5.7372,2.9996,5.7372,3.109,5.423,3.109],"text":"Price","confidence":1}]},{"language":"en","boundingBox":[1.0832,3.2118,1.174,3.2118,1.174,3.318,1.0832,3.318],"text":"A","words":[{"boundingBox":[1.0832,3.2118,1.174,3.2118,1.174,3.318,1.0832,3.318],"text":"A","confidence":1}]},{"language":"en","boundingBox":[3.2589,3.2116,3.3202,3.2116,3.3202,3.3176,3.2589,3.3176],"text":"1","words":[{"boundingBox":[3.2589,3.2116,3.3202,3.2116,3.3202,3.3176,3.2589,3.3176],"text":"1","confidence":1}]},{"language":"en","boundingBox":[5.4232,3.2108,5.7784,3.2108,5.7784,3.319,5.4232,3.319],"text":"10.99","words":[{"boundingBox":[5.4232,3.2108,5.7784,3.2108,5.7784,3.319,5.4232,3.319],"text":"10.99","confidence":1}]},{"language":"en","boundingBox":[1.0943,3.4256,1.1637,3.4256,1.1637,3.531,1.0943,3.531],"text":"B","words":[{"boundingBox":[1.0943,3.4256,1.1637,3.4256,1.1637,3.531,1.0943,3.531],"text":"B","confidence":1}]},{"language":"en","boundingBox":[3.2541,3.4241,3.3199,3.4241,3.3199,3.531,3.2541,3.531],"text":"2","words":[{"boundingBox":[3.2541,3.4241,3.3199,3.4241,3.3199,3.531,3.2541,3.531],"text":"2","confidence":1}]},{"language":"en","boundingBox":[5.4232,3.4241,5.7789,3.4241,5.7789,3.5323,5.4232,3.5323],"text":"14.67","words":[{"boundingBox":[5.4232,3.4241,5.7789,3.4241,5.7789,3.5323,5.4232,3.5323],"text":"14.67","confidence":1}]},{"language":"en","boundingBox":[1.0882,3.6343,1.1647,3.6343,1.1647,3.7421,1.0882,3.7421],"text":"C","words":[{"boundingBox":[1.0882,3.6343,1.1647,3.6343,1.1647,3.7421,1.0882,3.7421],"text":"C","confidence":1}]},{"language":"en","boundingBox":[3.2486,3.6351,3.3244,3.6351,3.3244,3.7413,3.2486,3.7413],"text":"4","words":[{"boundingBox":[3.2486,3.6351,3.3244,3.6351,3.3244,3.7413,3.2486,3.7413],"text":"4","confidence":1}]},{"language":"en","boundingBox":[5.4232,3.6341,5.78,3.6341,5.78,3.7423,5.4232,3.7423],"text":"15.66","words":[{"boundingBox":[5.4232,3.6341,5.78,3.6341,5.78,3.7423,5.4232,3.7423],"text":"15.66","confidence":1}]},{"language":"en","boundingBox":[1.0943,3.8456,1.1753,3.8456,1.1753,3.951,1.0943,3.951],"text":"D","words":[{"boundingBox":[1.0943,3.8456,1.1753,3.8456,1.1753,3.951,1.0943,3.951],"text":"D","confidence":1}]},{"language":"en","boundingBox":[3.2589,3.845,3.3202,3.845,3.3202,3.951,3.2589,3.951],"text":"1","words":[{"boundingBox":[3.2589,3.845,3.3202,3.845,3.3202,3.951,3.2589,3.951],"text":"1","confidence":1}]},{"language":"en","boundingBox":[5.4232,3.8441,5.7809,3.8441,5.7809,3.9523,5.4232,3.9523],"text":"12.00","words":[{"boundingBox":[5.4232,3.8441,5.7809,3.8441,5.7809,3.9523,5.4232,3.9523],"text":"12.00","confidence":1}]},{"language":"en","boundingBox":[1.0943,4.0561,1.153,4.0561,1.153,4.1614,1.0943,4.1614],"text":"E","words":[{"boundingBox":[1.0943,4.0561,1.153,4.0561,1.153,4.1614,1.0943,4.1614],"text":"E","confidence":1}]},{"language":"en","boundingBox":[3.2486,4.0556,3.3244,4.0556,3.3244,4.1617,3.2486,4.1617],"text":"4","words":[{"boundingBox":[3.2486,4.0556,3.3244,4.0556,3.3244,4.1617,3.2486,4.1617],"text":"4","confidence":1}]},{"language":"en","boundingBox":[5.4232,4.0546,5.781,4.0546,5.781,4.1627,5.4232,4.1627],"text":"10.00","words":[{"boundingBox":[5.4232,4.0546,5.781,4.0546,5.781,4.1627,5.4232,4.1627],"text":"10.00","confidence":1}]},{"language":"en","boundingBox":[1.0943,4.2661,1.1497,4.2661,1.1497,4.3717,1.0943,4.3717],"text":"F","words":[{"boundingBox":[1.0943,4.2661,1.1497,4.2661,1.1497,4.3717,1.0943,4.3717],"text":"F","confidence":1}]},{"language":"en","boundingBox":[3.2534,4.2646,3.3226,4.2646,3.3226,4.3727,3.2534,4.3727],"text":"6","words":[{"boundingBox":[3.2534,4.2646,3.3226,4.2646,3.3226,4.3727,3.2534,4.3727],"text":"6","confidence":1}]},{"language":"en","boundingBox":[5.4232,4.2646,5.7809,4.2646,5.7809,4.3727,5.4232,4.3727],"text":"12.00","words":[{"boundingBox":[5.4232,4.2646,5.7809,4.2646,5.7809,4.3727,5.4232,4.3727],"text":"12.00","confidence":1}]},{"language":"en","boundingBox":[1.0877,4.4746,1.1735,4.4746,1.1735,4.5827,1.0877,4.5827],"text":"G","words":[{"boundingBox":[1.0877,4.4746,1.1735,4.4746,1.1735,4.5827,1.0877,4.5827],"text":"G","confidence":1}]},{"language":"en","boundingBox":[3.2514,4.4746,3.3224,4.4746,3.3224,4.5827,3.2514,4.5827],"text":"8","words":[{"boundingBox":[3.2514,4.4746,3.3224,4.4746,3.3224,4.5827,3.2514,4.5827],"text":"8","confidence":1}]},{"language":"en","boundingBox":[5.4184,4.4746,5.781,4.4746,5.781,4.5827,5.4184,4.5827],"text":"22.00","words":[{"boundingBox":[5.4184,4.4746,5.781,4.4746,5.781,4.5827,5.4184,4.5827],"text":"22.00","confidence":1}]},{"language":"en","boundingBox":[5.5075,4.8981,6.632,4.8981,6.632,5.0131,5.5075,5.0131],"text":"Subtotal: + 300.00","words":[{"boundingBox":[5.5075,4.8981,6.1249,4.8981,6.1249,5.0131,5.5075,5.0131],"text":"Subtotal:","confidence":1},{"boundingBox":[6.1794,4.9042,6.632,4.9042,6.632,5.0131,6.1794,5.0131],"text":"300.00","confidence":1}]},{"language":"en","boundingBox":[5.5034,5.1245,6.2022,5.1245,6.2022,5.2333,5.5034,5.2333],"text":"Tax: + 30.00","words":[{"boundingBox":[5.5034,5.1263,5.7812,5.1263,5.7812,5.2333,5.5034,5.2333],"text":"Tax:","confidence":1},{"boundingBox":[5.836,5.1245,6.2022,5.1245,6.2022,5.2333,5.836,5.2333],"text":"30.00","confidence":1}]},{"language":"en","boundingBox":[5.5034,5.3412,6.2587,5.3412,6.2587,5.481,5.5034,5.481],"text":"Tip: + 100.00","words":[{"boundingBox":[5.5034,5.3412,5.7515,5.3412,5.7515,5.481,5.5034,5.481],"text":"Tip:","confidence":1},{"boundingBox":[5.811,5.3445,6.2587,5.3445,6.2587,5.4533,5.811,5.4533],"text":"100.00","confidence":1}]},{"language":"en","boundingBox":[5.5034,5.5583,6.3987,5.5583,6.3987,5.6733,5.5034,5.6733],"text":"Total: + 430.00","words":[{"boundingBox":[5.5034,5.5583,5.8915,5.5583,5.8915,5.6733,5.5034,5.6733],"text":"Total:","confidence":1},{"boundingBox":[5.942,5.5645,6.3987,5.5645,6.3987,5.6733,5.942,5.6733],"text":"430.00","confidence":1}]},{"language":"en","boundingBox":[1.0055,6.6553,3.8342,6.6553,3.8342,6.7981,1.0055,6.7981],"text":"Signature: + ____ Bilbo Baggins__________","words":[{"boundingBox":[1.0055,6.6581,1.6987,6.6581,1.6987,6.7981,1.0055,6.7981],"text":"Signature:","confidence":1},{"boundingBox":[1.747,6.7829,2.0809,6.7829,2.0809,6.7981,1.747,6.7981],"text":"____","confidence":1},{"boundingBox":[2.0925,6.6553,2.4278,6.6553,2.4278,6.7703,2.0925,6.7703],"text":"Bilbo","confidence":1},{"boundingBox":[2.4823,6.6581,3.8342,6.6581,3.8342,6.7981,2.4823,6.7981],"text":"Baggins__________","confidence":1}]}]},{"page":2,"language":"en","angle":0,"width":8.4967,"height":10.9967,"unit":"inch","lines":[]},{"page":3,"language":"en","angle":0,"width":8.5,"height":11,"unit":"inch","lines":[{"language":"en","boundingBox":[0.8861,1.1217,2.3734,1.1217,2.3734,1.2812,0.8861,1.2812],"text":"Company + B Invoice","words":[{"boundingBox":[0.8861,1.1232,1.6203,1.1232,1.6203,1.2812,0.8861,1.2812],"text":"Company","confidence":1},{"boundingBox":[1.6836,1.1248,1.764,1.1248,1.764,1.2469,1.6836,1.2469],"text":"B","confidence":1},{"boundingBox":[1.8336,1.1217,2.3734,1.1217,2.3734,1.2485,1.8336,1.2485],"text":"Invoice","confidence":1}]},{"language":"en","boundingBox":[6.0211,1.0656,7.0357,1.0656,7.0357,1.2121,6.0211,1.2121],"text":"Invoice + For:","words":[{"boundingBox":[6.0211,1.0656,6.6362,1.0656,6.6362,1.2121,6.0211,1.2121],"text":"Invoice","confidence":1},{"boundingBox":[6.7147,1.0691,7.0357,1.0691,7.0357,1.2121,6.7147,1.2121],"text":"For:","confidence":1}]},{"language":"en","boundingBox":[0.8791,1.4825,1.5657,1.4825,1.5657,1.6155,0.8791,1.6155],"text":"Address:","words":[{"boundingBox":[0.8791,1.4825,1.5657,1.4825,1.5657,1.6155,0.8791,1.6155],"text":"Address:","confidence":1}]},{"language":"en","boundingBox":[6.0164,1.4506,6.9506,1.4506,6.9506,1.5931,6.0164,1.5931],"text":"Frodo + Baggins","words":[{"boundingBox":[6.0164,1.4506,6.3895,1.4506,6.3895,1.5649,6.0164,1.5649],"text":"Frodo","confidence":1},{"boundingBox":[6.45,1.4556,6.9506,1.4556,6.9506,1.5931,6.45,1.5931],"text":"Baggins","confidence":1}]},{"language":"en","boundingBox":[6.0165,1.6707,7.1006,1.6707,7.1006,1.7854,6.0165,1.7854],"text":"123 + Hobbit Lane","words":[{"boundingBox":[6.0165,1.6772,6.2434,1.6772,6.2434,1.7854,6.0165,1.7854],"text":"123","confidence":1},{"boundingBox":[6.3033,1.6707,6.7463,1.6707,6.7463,1.7854,6.3033,1.7854],"text":"Hobbit","confidence":1},{"boundingBox":[6.803,1.6782,7.1006,1.6782,7.1006,1.7854,6.803,1.7854],"text":"Lane","confidence":1}]},{"language":"en","boundingBox":[0.8852,1.846,1.713,1.846,1.713,1.9554,0.8852,1.9554],"text":"567 + Main St.","words":[{"boundingBox":[0.8852,1.8472,1.1203,1.8472,1.1203,1.9554,0.8852,1.9554],"text":"567","confidence":1},{"boundingBox":[1.1777,1.846,1.5022,1.846,1.5022,1.9554,1.1777,1.9554],"text":"Main","confidence":1},{"boundingBox":[1.5558,1.8472,1.713,1.8472,1.713,1.9554,1.5558,1.9554],"text":"St.","confidence":1}]},{"language":"en","boundingBox":[6.0164,1.891,6.9793,1.891,6.9793,2.0275,6.0164,2.0275],"text":"Redmond, + WA","words":[{"boundingBox":[6.0164,1.891,6.6861,1.891,6.6861,2.0275,6.0164,2.0275],"text":"Redmond,","confidence":1},{"boundingBox":[6.7408,1.8982,6.9793,1.8982,6.9793,2.0044,6.7408,2.0044],"text":"WA","confidence":1}]},{"language":"en","boundingBox":[0.891,2.061,1.8537,2.061,1.8537,2.1975,0.891,2.1975],"text":"Redmond, + WA","words":[{"boundingBox":[0.891,2.061,1.5605,2.061,1.5605,2.1975,0.891,2.1975],"text":"Redmond,","confidence":1},{"boundingBox":[1.6152,2.0682,1.8537,2.0682,1.8537,2.1744,1.6152,2.1744],"text":"WA","confidence":1}]},{"language":"en","boundingBox":[6.0105,2.1187,6.9371,2.1187,6.9371,2.2254,6.0105,2.2254],"text":"555-555-5555","words":[{"boundingBox":[6.0105,2.1187,6.9371,2.1187,6.9371,2.2254,6.0105,2.2254],"text":"555-555-5555","confidence":1}]},{"language":"en","boundingBox":[0.8852,2.2887,1.8119,2.2887,1.8119,2.3954,0.8852,2.3954],"text":"555-555-5555","words":[{"boundingBox":[0.8852,2.2887,1.8119,2.2887,1.8119,2.3954,0.8852,2.3954],"text":"555-555-5555","confidence":1}]},{"language":"en","boundingBox":[1.0943,3.0018,1.3842,3.0018,1.3842,3.109,1.0943,3.109],"text":"Item","words":[{"boundingBox":[1.0943,3.0018,1.3842,3.0018,1.3842,3.109,1.0943,3.109],"text":"Item","confidence":1}]},{"language":"en","boundingBox":[3.2527,2.9996,3.8367,2.9996,3.8367,3.1371,3.2527,3.1371],"text":"Quantity","words":[{"boundingBox":[3.2527,2.9996,3.8367,2.9996,3.8367,3.1371,3.2527,3.1371],"text":"Quantity","confidence":1}]},{"language":"en","boundingBox":[5.423,2.9996,5.7372,2.9996,5.7372,3.109,5.423,3.109],"text":"Price","words":[{"boundingBox":[5.423,2.9996,5.7372,2.9996,5.7372,3.109,5.423,3.109],"text":"Price","confidence":1}]},{"language":"en","boundingBox":[1.0832,3.2118,1.174,3.2118,1.174,3.318,1.0832,3.318],"text":"A","words":[{"boundingBox":[1.0832,3.2118,1.174,3.2118,1.174,3.318,1.0832,3.318],"text":"A","confidence":1}]},{"language":"en","boundingBox":[3.2589,3.2108,3.4067,3.2108,3.4067,3.319,3.2589,3.319],"text":"10","words":[{"boundingBox":[3.2589,3.2108,3.4067,3.2108,3.4067,3.319,3.2589,3.319],"text":"10","confidence":1}]},{"language":"en","boundingBox":[5.4232,3.2108,5.8617,3.2108,5.8617,3.319,5.4232,3.319],"text":"100.99","words":[{"boundingBox":[5.4232,3.2108,5.8617,3.2108,5.8617,3.319,5.4232,3.319],"text":"100.99","confidence":1}]},{"language":"en","boundingBox":[1.0943,3.4256,1.1637,3.4256,1.1637,3.531,1.0943,3.531],"text":"B","words":[{"boundingBox":[1.0943,3.4256,1.1637,3.4256,1.1637,3.531,1.0943,3.531],"text":"B","confidence":1}]},{"language":"en","boundingBox":[3.2541,3.4241,3.4067,3.4241,3.4067,3.5323,3.2541,3.5323],"text":"20","words":[{"boundingBox":[3.2541,3.4241,3.4067,3.4241,3.4067,3.5323,3.2541,3.5323],"text":"20","confidence":1}]},{"language":"en","boundingBox":[5.4232,3.4241,5.8622,3.4241,5.8622,3.5323,5.4232,3.5323],"text":"140.67","words":[{"boundingBox":[5.4232,3.4241,5.8622,3.4241,5.8622,3.5323,5.4232,3.5323],"text":"140.67","confidence":1}]},{"language":"en","boundingBox":[1.0882,3.6343,1.1647,3.6343,1.1647,3.7421,1.0882,3.7421],"text":"C","words":[{"boundingBox":[1.0882,3.6343,1.1647,3.6343,1.1647,3.7421,1.0882,3.7421],"text":"C","confidence":1}]},{"language":"en","boundingBox":[3.2486,3.6341,3.4067,3.6341,3.4067,3.7423,3.2486,3.7423],"text":"40","words":[{"boundingBox":[3.2486,3.6341,3.4067,3.6341,3.4067,3.7423,3.2486,3.7423],"text":"40","confidence":1}]},{"language":"en","boundingBox":[5.4232,3.6341,5.8634,3.6341,5.8634,3.7423,5.4232,3.7423],"text":"150.66","words":[{"boundingBox":[5.4232,3.6341,5.8634,3.6341,5.8634,3.7423,5.4232,3.7423],"text":"150.66","confidence":1}]},{"language":"en","boundingBox":[1.0943,3.8456,1.1753,3.8456,1.1753,3.951,1.0943,3.951],"text":"D","words":[{"boundingBox":[1.0943,3.8456,1.1753,3.8456,1.1753,3.951,1.0943,3.951],"text":"D","confidence":1}]},{"language":"en","boundingBox":[3.2589,3.8441,3.4067,3.8441,3.4067,3.9523,3.2589,3.9523],"text":"10","words":[{"boundingBox":[3.2589,3.8441,3.4067,3.8441,3.4067,3.9523,3.2589,3.9523],"text":"10","confidence":1}]},{"language":"en","boundingBox":[5.4232,3.8441,5.8642,3.8441,5.8642,3.9523,5.4232,3.9523],"text":"120.00","words":[{"boundingBox":[5.4232,3.8441,5.8642,3.8441,5.8642,3.9523,5.4232,3.9523],"text":"120.00","confidence":1}]},{"language":"en","boundingBox":[1.0943,4.0561,1.153,4.0561,1.153,4.1614,1.0943,4.1614],"text":"E","words":[{"boundingBox":[1.0943,4.0561,1.153,4.0561,1.153,4.1614,1.0943,4.1614],"text":"E","confidence":1}]},{"language":"en","boundingBox":[3.2486,4.0546,3.4067,4.0546,3.4067,4.1627,3.2486,4.1627],"text":"40","words":[{"boundingBox":[3.2486,4.0546,3.4067,4.0546,3.4067,4.1627,3.2486,4.1627],"text":"40","confidence":1}]},{"language":"en","boundingBox":[5.4232,4.0546,5.8644,4.0546,5.8644,4.1627,5.4232,4.1627],"text":"100.00","words":[{"boundingBox":[5.4232,4.0546,5.8644,4.0546,5.8644,4.1627,5.4232,4.1627],"text":"100.00","confidence":1}]},{"language":"en","boundingBox":[1.0943,4.2661,1.1497,4.2661,1.1497,4.3717,1.0943,4.3717],"text":"F","words":[{"boundingBox":[1.0943,4.2661,1.1497,4.2661,1.1497,4.3717,1.0943,4.3717],"text":"F","confidence":1}]},{"language":"en","boundingBox":[3.2534,4.2646,3.4067,4.2646,3.4067,4.3727,3.2534,4.3727],"text":"60","words":[{"boundingBox":[3.2534,4.2646,3.4067,4.2646,3.4067,4.3727,3.2534,4.3727],"text":"60","confidence":1}]},{"language":"en","boundingBox":[5.4232,4.2646,5.8642,4.2646,5.8642,4.3727,5.4232,4.3727],"text":"120.00","words":[{"boundingBox":[5.4232,4.2646,5.8642,4.2646,5.8642,4.3727,5.4232,4.3727],"text":"120.00","confidence":1}]},{"language":"en","boundingBox":[1.0877,4.4746,1.1735,4.4746,1.1735,4.5827,1.0877,4.5827],"text":"G","words":[{"boundingBox":[1.0877,4.4746,1.1735,4.4746,1.1735,4.5827,1.0877,4.5827],"text":"G","confidence":1}]},{"language":"en","boundingBox":[3.2514,4.4746,3.4067,4.4746,3.4067,4.5827,3.2514,4.5827],"text":"80","words":[{"boundingBox":[3.2514,4.4746,3.4067,4.4746,3.4067,4.5827,3.2514,4.5827],"text":"80","confidence":1}]},{"language":"en","boundingBox":[5.4184,4.4746,5.8644,4.4746,5.8644,4.5827,5.4184,4.5827],"text":"220.00","words":[{"boundingBox":[5.4184,4.4746,5.8644,4.4746,5.8644,4.5827,5.4184,4.5827],"text":"220.00","confidence":1}]},{"language":"en","boundingBox":[5.5075,4.8981,6.7158,4.8981,6.7158,5.0131,5.5075,5.0131],"text":"Subtotal: + 3000.00","words":[{"boundingBox":[5.5075,4.8981,6.1249,4.8981,6.1249,5.0131,5.5075,5.0131],"text":"Subtotal:","confidence":1},{"boundingBox":[6.1794,4.9042,6.7158,4.9042,6.7158,5.0131,6.1794,5.0131],"text":"3000.00","confidence":1}]},{"language":"en","boundingBox":[5.5034,5.1245,6.2887,5.1245,6.2887,5.2333,5.5034,5.2333],"text":"Tax: + 300.00","words":[{"boundingBox":[5.5034,5.1263,5.7812,5.1263,5.7812,5.2333,5.5034,5.2333],"text":"Tax:","confidence":1},{"boundingBox":[5.836,5.1245,6.2887,5.1245,6.2887,5.2333,5.836,5.2333],"text":"300.00","confidence":1}]},{"language":"en","boundingBox":[5.5034,5.3412,6.3422,5.3412,6.3422,5.481,5.5034,5.481],"text":"Tip: + 1000.00","words":[{"boundingBox":[5.5034,5.3412,5.7515,5.3412,5.7515,5.481,5.5034,5.481],"text":"Tip:","confidence":1},{"boundingBox":[5.811,5.3445,6.3422,5.3445,6.3422,5.4533,5.811,5.4533],"text":"1000.00","confidence":1}]},{"language":"en","boundingBox":[5.5034,5.5583,6.4825,5.5583,6.4825,5.6733,5.5034,5.6733],"text":"Total: + 4300.00","words":[{"boundingBox":[5.5034,5.5583,5.8915,5.5583,5.8915,5.6733,5.5034,5.6733],"text":"Total:","confidence":1},{"boundingBox":[5.942,5.5645,6.4825,5.5645,6.4825,5.6733,5.942,5.6733],"text":"4300.00","confidence":1}]},{"language":"en","boundingBox":[1.0055,6.6556,3.8842,6.6556,3.8842,6.7981,1.0055,6.7981],"text":"Signature: + ____ Frodo Baggins__________","words":[{"boundingBox":[1.0055,6.6581,1.6987,6.6581,1.6987,6.7981,1.0055,6.7981],"text":"Signature:","confidence":1},{"boundingBox":[1.747,6.7829,2.0809,6.7829,2.0809,6.7981,1.747,6.7981],"text":"____","confidence":1},{"boundingBox":[2.0925,6.6556,2.4778,6.6556,2.4778,6.7703,2.0925,6.7703],"text":"Frodo","confidence":1},{"boundingBox":[2.5325,6.6581,3.8842,6.6581,3.8842,6.7981,2.5325,6.7981],"text":"Baggins__________","confidence":1}]}]}],"pageResults":[{"page":1,"tables":[{"rows":8,"columns":3,"cells":[{"rowIndex":0,"columnIndex":0,"text":"Item","boundingBox":[1.0037,2.9443,3.1681,2.9443,3.1681,3.1543,1.0037,3.1543],"elements":["#/readResults/0/lines/10/words/0"]},{"rowIndex":0,"columnIndex":1,"text":"Quantity","boundingBox":[3.1681,2.9443,5.3353,2.9443,5.3353,3.1543,3.1681,3.1543],"elements":["#/readResults/0/lines/11/words/0"]},{"rowIndex":0,"columnIndex":2,"text":"Price","boundingBox":[5.3353,2.9443,7.4997,2.9443,7.4997,3.1543,5.3353,3.1543],"elements":["#/readResults/0/lines/12/words/0"]},{"rowIndex":1,"columnIndex":0,"text":"A","boundingBox":[1.0037,3.1543,3.1681,3.1543,3.1681,3.3643,1.0037,3.3643],"elements":["#/readResults/0/lines/13/words/0"]},{"rowIndex":1,"columnIndex":1,"text":"1","boundingBox":[3.1681,3.1543,5.3353,3.1543,5.3353,3.3643,3.1681,3.3643],"elements":["#/readResults/0/lines/14/words/0"]},{"rowIndex":1,"columnIndex":2,"text":"10.99","boundingBox":[5.3353,3.1543,7.4997,3.1543,7.4997,3.3643,5.3353,3.3643],"elements":["#/readResults/0/lines/15/words/0"]},{"rowIndex":2,"columnIndex":0,"text":"B","boundingBox":[1.0037,3.3643,3.1681,3.3643,3.1681,3.5776,1.0037,3.5776],"elements":["#/readResults/0/lines/16/words/0"]},{"rowIndex":2,"columnIndex":1,"text":"2","boundingBox":[3.1681,3.3643,5.3353,3.3643,5.3353,3.5776,3.1681,3.5776],"elements":["#/readResults/0/lines/17/words/0"]},{"rowIndex":2,"columnIndex":2,"text":"14.67","boundingBox":[5.3353,3.3643,7.4997,3.3643,7.4997,3.5776,5.3353,3.5776],"elements":["#/readResults/0/lines/18/words/0"]},{"rowIndex":3,"columnIndex":0,"text":"C","boundingBox":[1.0037,3.5776,3.1681,3.5776,3.1681,3.7876,1.0037,3.7876],"elements":["#/readResults/0/lines/19/words/0"]},{"rowIndex":3,"columnIndex":1,"text":"4","boundingBox":[3.1681,3.5776,5.3353,3.5776,5.3353,3.7876,3.1681,3.7876],"elements":["#/readResults/0/lines/20/words/0"]},{"rowIndex":3,"columnIndex":2,"text":"15.66","boundingBox":[5.3353,3.5776,7.4997,3.5776,7.4997,3.7876,5.3353,3.7876],"elements":["#/readResults/0/lines/21/words/0"]},{"rowIndex":4,"columnIndex":0,"text":"D","boundingBox":[1.0037,3.7876,3.1681,3.7876,3.1681,3.9976,1.0037,3.9976],"elements":["#/readResults/0/lines/22/words/0"]},{"rowIndex":4,"columnIndex":1,"text":"1","boundingBox":[3.1681,3.7876,5.3353,3.7876,5.3353,3.9976,3.1681,3.9976],"elements":["#/readResults/0/lines/23/words/0"]},{"rowIndex":4,"columnIndex":2,"text":"12.00","boundingBox":[5.3353,3.7876,7.4997,3.7876,7.4997,3.9976,5.3353,3.9976],"elements":["#/readResults/0/lines/24/words/0"]},{"rowIndex":5,"columnIndex":0,"text":"E","boundingBox":[1.0037,3.9976,3.1681,3.9976,3.1681,4.2081,1.0037,4.2081],"elements":["#/readResults/0/lines/25/words/0"]},{"rowIndex":5,"columnIndex":1,"text":"4","boundingBox":[3.1681,3.9976,5.3353,3.9976,5.3353,4.2081,3.1681,4.2081],"elements":["#/readResults/0/lines/26/words/0"]},{"rowIndex":5,"columnIndex":2,"text":"10.00","boundingBox":[5.3353,3.9976,7.4997,3.9976,7.4997,4.2081,5.3353,4.2081],"elements":["#/readResults/0/lines/27/words/0"]},{"rowIndex":6,"columnIndex":0,"text":"F","boundingBox":[1.0037,4.2081,3.1681,4.2081,3.1681,4.4181,1.0037,4.4181],"elements":["#/readResults/0/lines/28/words/0"]},{"rowIndex":6,"columnIndex":1,"text":"6","boundingBox":[3.1681,4.2081,5.3353,4.2081,5.3353,4.4181,3.1681,4.4181],"elements":["#/readResults/0/lines/29/words/0"]},{"rowIndex":6,"columnIndex":2,"text":"12.00","boundingBox":[5.3353,4.2081,7.4997,4.2081,7.4997,4.4181,5.3353,4.4181],"elements":["#/readResults/0/lines/30/words/0"]},{"rowIndex":7,"columnIndex":0,"text":"G","boundingBox":[1.0037,4.4181,3.1681,4.4181,3.1681,4.6281,1.0037,4.6281],"elements":["#/readResults/0/lines/31/words/0"]},{"rowIndex":7,"columnIndex":1,"text":"8","boundingBox":[3.1681,4.4181,5.3353,4.4181,5.3353,4.6281,3.1681,4.6281],"elements":["#/readResults/0/lines/32/words/0"]},{"rowIndex":7,"columnIndex":2,"text":"22.00","boundingBox":[5.3353,4.4181,7.4997,4.4181,7.4997,4.6281,5.3353,4.6281],"elements":["#/readResults/0/lines/33/words/0"]}]}]},{"page":2,"tables":[]},{"page":3,"tables":[{"rows":8,"columns":3,"cells":[{"rowIndex":0,"columnIndex":0,"text":"Item","boundingBox":[1.0037,2.9443,3.1681,2.9443,3.1681,3.1543,1.0037,3.1543],"elements":["#/readResults/2/lines/10/words/0"]},{"rowIndex":0,"columnIndex":1,"text":"Quantity","boundingBox":[3.1681,2.9443,5.3353,2.9443,5.3353,3.1543,3.1681,3.1543],"elements":["#/readResults/2/lines/11/words/0"]},{"rowIndex":0,"columnIndex":2,"text":"Price","boundingBox":[5.3353,2.9443,7.4997,2.9443,7.4997,3.1543,5.3353,3.1543],"elements":["#/readResults/2/lines/12/words/0"]},{"rowIndex":1,"columnIndex":0,"text":"A","boundingBox":[1.0037,3.1543,3.1681,3.1543,3.1681,3.3643,1.0037,3.3643],"elements":["#/readResults/2/lines/13/words/0"]},{"rowIndex":1,"columnIndex":1,"text":"10","boundingBox":[3.1681,3.1543,5.3353,3.1543,5.3353,3.3643,3.1681,3.3643],"elements":["#/readResults/2/lines/14/words/0"]},{"rowIndex":1,"columnIndex":2,"text":"100.99","boundingBox":[5.3353,3.1543,7.4997,3.1543,7.4997,3.3643,5.3353,3.3643],"elements":["#/readResults/2/lines/15/words/0"]},{"rowIndex":2,"columnIndex":0,"text":"B","boundingBox":[1.0037,3.3643,3.1681,3.3643,3.1681,3.5776,1.0037,3.5776],"elements":["#/readResults/2/lines/16/words/0"]},{"rowIndex":2,"columnIndex":1,"text":"20","boundingBox":[3.1681,3.3643,5.3353,3.3643,5.3353,3.5776,3.1681,3.5776],"elements":["#/readResults/2/lines/17/words/0"]},{"rowIndex":2,"columnIndex":2,"text":"140.67","boundingBox":[5.3353,3.3643,7.4997,3.3643,7.4997,3.5776,5.3353,3.5776],"elements":["#/readResults/2/lines/18/words/0"]},{"rowIndex":3,"columnIndex":0,"text":"C","boundingBox":[1.0037,3.5776,3.1681,3.5776,3.1681,3.7876,1.0037,3.7876],"elements":["#/readResults/2/lines/19/words/0"]},{"rowIndex":3,"columnIndex":1,"text":"40","boundingBox":[3.1681,3.5776,5.3353,3.5776,5.3353,3.7876,3.1681,3.7876],"elements":["#/readResults/2/lines/20/words/0"]},{"rowIndex":3,"columnIndex":2,"text":"150.66","boundingBox":[5.3353,3.5776,7.4997,3.5776,7.4997,3.7876,5.3353,3.7876],"elements":["#/readResults/2/lines/21/words/0"]},{"rowIndex":4,"columnIndex":0,"text":"D","boundingBox":[1.0037,3.7876,3.1681,3.7876,3.1681,3.9976,1.0037,3.9976],"elements":["#/readResults/2/lines/22/words/0"]},{"rowIndex":4,"columnIndex":1,"text":"10","boundingBox":[3.1681,3.7876,5.3353,3.7876,5.3353,3.9976,3.1681,3.9976],"elements":["#/readResults/2/lines/23/words/0"]},{"rowIndex":4,"columnIndex":2,"text":"120.00","boundingBox":[5.3353,3.7876,7.4997,3.7876,7.4997,3.9976,5.3353,3.9976],"elements":["#/readResults/2/lines/24/words/0"]},{"rowIndex":5,"columnIndex":0,"text":"E","boundingBox":[1.0037,3.9976,3.1681,3.9976,3.1681,4.2081,1.0037,4.2081],"elements":["#/readResults/2/lines/25/words/0"]},{"rowIndex":5,"columnIndex":1,"text":"40","boundingBox":[3.1681,3.9976,5.3353,3.9976,5.3353,4.2081,3.1681,4.2081],"elements":["#/readResults/2/lines/26/words/0"]},{"rowIndex":5,"columnIndex":2,"text":"100.00","boundingBox":[5.3353,3.9976,7.4997,3.9976,7.4997,4.2081,5.3353,4.2081],"elements":["#/readResults/2/lines/27/words/0"]},{"rowIndex":6,"columnIndex":0,"text":"F","boundingBox":[1.0037,4.2081,3.1681,4.2081,3.1681,4.4181,1.0037,4.4181],"elements":["#/readResults/2/lines/28/words/0"]},{"rowIndex":6,"columnIndex":1,"text":"60","boundingBox":[3.1681,4.2081,5.3353,4.2081,5.3353,4.4181,3.1681,4.4181],"elements":["#/readResults/2/lines/29/words/0"]},{"rowIndex":6,"columnIndex":2,"text":"120.00","boundingBox":[5.3353,4.2081,7.4997,4.2081,7.4997,4.4181,5.3353,4.4181],"elements":["#/readResults/2/lines/30/words/0"]},{"rowIndex":7,"columnIndex":0,"text":"G","boundingBox":[1.0037,4.4181,3.1681,4.4181,3.1681,4.6281,1.0037,4.6281],"elements":["#/readResults/2/lines/31/words/0"]},{"rowIndex":7,"columnIndex":1,"text":"80","boundingBox":[3.1681,4.4181,5.3353,4.4181,5.3353,4.6281,3.1681,4.6281],"elements":["#/readResults/2/lines/32/words/0"]},{"rowIndex":7,"columnIndex":2,"text":"220.00","boundingBox":[5.3353,4.4181,7.4997,4.4181,7.4997,4.6281,5.3353,4.6281],"elements":["#/readResults/2/lines/33/words/0"]}]}]}],"documentResults":[{"docType":"custom:form","pageRange":[1,3],"fields":{"Total":{"type":"string","valueString":"430.00","text":"430.00","page":1,"boundingBox":[5.94,5.565,6.4,5.565,6.4,5.675,5.94,5.675],"confidence":1.0,"elements":["#/analyzeResult/readResults/0/lines/37/words/1"]},"Signature":{"type":"string","valueString":"Bilbo + Baggins","text":"Bilbo Baggins","page":1,"boundingBox":[2.09,6.655,3.04,6.655,3.04,6.8,2.09,6.8],"confidence":1.0,"elements":["#/analyzeResult/readResults/0/lines/38/words/2","#/analyzeResult/readResults/0/lines/38/words/3"]},"CustomerAddress":{"type":"string","valueString":"123 + Hobbit Lane Redmond, WA","text":"123 Hobbit Lane Redmond, WA","page":1,"boundingBox":[6.0150000000000006,1.67,7.1000000000000005,1.67,7.1000000000000005,2.0300000000000002,6.0150000000000006,2.0300000000000002],"confidence":1.0,"elements":["#/analyzeResult/readResults/0/lines/4/words/0","#/analyzeResult/readResults/0/lines/4/words/1","#/analyzeResult/readResults/0/lines/4/words/2","#/analyzeResult/readResults/0/lines/6/words/0","#/analyzeResult/readResults/0/lines/6/words/1"]},"CustomerName":{"type":"string","valueString":"Bilbo + Baggins","text":"Bilbo Baggins","page":1,"boundingBox":[6.0150000000000006,1.45,6.8950000000000005,1.45,6.8950000000000005,1.595,6.0150000000000006,1.595],"confidence":1.0,"elements":["#/analyzeResult/readResults/0/lines/3/words/0","#/analyzeResult/readResults/0/lines/3/words/1"]},"Merchant2":{"type":"string","valueString":"Company","text":"Company","page":1,"boundingBox":[0.885,1.125,1.62,1.125,1.62,1.28,0.885,1.28],"confidence":1.0,"elements":["#/analyzeResult/readResults/0/lines/0/words/0"]},"Tax":{"type":"string","valueString":"30.00","text":"30.00","page":1,"boundingBox":[5.835,5.125,6.2,5.125,6.2,5.235,5.835,5.235],"confidence":1.0,"elements":["#/analyzeResult/readResults/0/lines/35/words/1"]},"Subtotal":{"type":"string","valueString":"300.00","text":"300.00","page":1,"boundingBox":[6.18,4.905,6.63,4.905,6.63,5.015,6.18,5.015],"confidence":1.0,"elements":["#/analyzeResult/readResults/0/lines/34/words/1"]},"Customer2":{"type":"string","valueString":"Frodo + Baggins","text":"Frodo Baggins","page":3,"boundingBox":[6.0150000000000006,1.45,6.95,1.45,6.95,1.595,6.0150000000000006,1.595],"confidence":1.0,"elements":["#/analyzeResult/readResults/2/lines/3/words/0","#/analyzeResult/readResults/2/lines/3/words/1"]},"Tip":{"type":"string","valueString":"100.00","text":"100.00","page":1,"boundingBox":[5.8100000000000005,5.345,6.26,5.345,6.26,5.455,5.8100000000000005,5.455],"confidence":1.0,"elements":["#/analyzeResult/readResults/0/lines/36/words/1"]},"Total2":{"type":"string","valueString":"4300.00","text":"4300.00","page":3,"boundingBox":[5.94,5.565,6.48,5.565,6.48,5.675,5.94,5.675],"confidence":1.0,"elements":["#/analyzeResult/readResults/2/lines/37/words/1"]},"Merchant":{"type":"string","valueString":"A","text":"A","page":1,"boundingBox":[1.67,1.125,1.7750000000000001,1.125,1.7750000000000001,1.245,1.67,1.245],"confidence":1.0,"elements":["#/analyzeResult/readResults/0/lines/0/words/1"]},"Signature2":{"type":"string","valueString":"Frodo + Baggins","text":"Frodo Baggins","page":3,"boundingBox":[2.09,6.655,3.09,6.655,3.09,6.8,2.09,6.8],"confidence":1.0,"elements":["#/analyzeResult/readResults/2/lines/38/words/2","#/analyzeResult/readResults/2/lines/38/words/3"]},"MerchantAddress":{"type":"string","valueString":"567 + Main St. Redmond, WA","text":"567 Main St. Redmond, WA","page":1,"boundingBox":[0.885,1.845,1.855,1.845,1.855,2.2,0.885,2.2],"confidence":1.0,"elements":["#/analyzeResult/readResults/0/lines/5/words/0","#/analyzeResult/readResults/0/lines/5/words/1","#/analyzeResult/readResults/0/lines/5/words/2","#/analyzeResult/readResults/0/lines/7/words/0","#/analyzeResult/readResults/0/lines/7/words/1"]},"FirstItem":{"type":"string","valueString":"A","text":"A","page":1,"boundingBox":[1.085,3.21,1.175,3.21,1.175,3.3200000000000003,1.085,3.3200000000000003],"confidence":1.0,"elements":["#/analyzeResult/readResults/0/lines/13/words/0"]},"CustomerPhoneNumber":{"type":"string","valueString":"555-555-5555","text":"555-555-5555","page":1,"boundingBox":[6.01,2.12,6.9350000000000005,2.12,6.9350000000000005,2.225,6.01,2.225],"confidence":1.0,"elements":["#/analyzeResult/readResults/0/lines/8/words/0"]},"FirstQuantity":{"type":"string","valueString":"1","text":"1","page":1,"boundingBox":[3.2600000000000002,3.21,3.3200000000000003,3.21,3.3200000000000003,3.3200000000000003,3.2600000000000002,3.3200000000000003],"confidence":1.0,"elements":["#/analyzeResult/readResults/0/lines/14/words/0"]},"FirstPrice":{"type":"string","valueString":"10.99","text":"10.99","page":1,"boundingBox":[5.425,3.21,5.78,3.21,5.78,3.3200000000000003,5.425,3.3200000000000003],"confidence":1.0,"elements":["#/analyzeResult/readResults/0/lines/15/words/0"]},"MerchantPhoneNumber":{"type":"string","valueString":"555-555-5555","text":"555-555-5555","page":1,"boundingBox":[0.885,2.29,1.81,2.29,1.81,2.395,0.885,2.395],"confidence":1.0,"elements":["#/analyzeResult/readResults/0/lines/9/words/0"]}}}],"errors":[]}}' + headers: + apim-request-id: + - bdd1d032-7d43-49f0-aeaf-7cb2c1426fae + content-type: + - application/json; charset=utf-8 + date: + - Thu, 30 Apr 2020 23:02:17 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + transfer-encoding: + - chunked + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '5058' + status: + code: 200 + message: OK +version: 1 diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_custom_forms.test_custom_form_multipage_unlabeled.yaml b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_custom_forms.test_custom_form_multipage_unlabeled.yaml new file mode 100644 index 000000000000..d5f9a0b8a20f --- /dev/null +++ b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_custom_forms.test_custom_form_multipage_unlabeled.yaml @@ -0,0 +1,2152 @@ +interactions: +- request: + body: 'b''{"source": "containersasurl", "sourceFilter": {"prefix": "", "includeSubFolders": + false}, "useLabelFile": false}''' + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '318' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models + response: + body: + string: '' + headers: + apim-request-id: + - e6063a6a-7cd9-4868-8cee-632c40652dbc + content-length: + - '0' + date: + - Thu, 23 Apr 2020 23:19:12 GMT + location: + - https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/d476c84d-6282-47ac-8768-53e15dec405b + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '149' + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/d476c84d-6282-47ac-8768-53e15dec405b?includeKeys=true + response: + body: + string: '{"modelInfo":{"modelId":"d476c84d-6282-47ac-8768-53e15dec405b","status":"creating","createdDateTime":"2020-04-23T23:19:12Z","lastUpdatedDateTime":"2020-04-23T23:19:12Z"}}' + headers: + apim-request-id: + - cac8a33a-b4fd-4d20-944b-984daa5db8c6 + content-type: + - application/json; charset=utf-8 + date: + - Thu, 23 Apr 2020 23:19:17 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + transfer-encoding: + - chunked + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '221' + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/d476c84d-6282-47ac-8768-53e15dec405b?includeKeys=true + response: + body: + string: '{"modelInfo":{"modelId":"d476c84d-6282-47ac-8768-53e15dec405b","status":"creating","createdDateTime":"2020-04-23T23:19:12Z","lastUpdatedDateTime":"2020-04-23T23:19:12Z"}}' + headers: + apim-request-id: + - 2b08996b-393a-4a4c-bb25-997b6f6d22f5 + content-type: + - application/json; charset=utf-8 + date: + - Thu, 23 Apr 2020 23:19:22 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + transfer-encoding: + - chunked + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '110' + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/d476c84d-6282-47ac-8768-53e15dec405b?includeKeys=true + response: + body: + string: '{"modelInfo":{"modelId":"d476c84d-6282-47ac-8768-53e15dec405b","status":"ready","createdDateTime":"2020-04-23T23:19:12Z","lastUpdatedDateTime":"2020-04-23T23:19:25Z"},"keys":{"clusters":{"0":["Address:","Invoice + For:","Redmond, WA","Signature:","Subtotal:","Tax:","Tip:","Total:"]}},"trainResult":{"trainingDocuments":[{"documentName":"multipage_invoice1.pdf","pages":3,"errors":[],"status":"succeeded"},{"documentName":"multipage_invoice2.pdf","pages":3,"errors":[],"status":"succeeded"},{"documentName":"multipage_invoice3.pdf","pages":3,"errors":[],"status":"succeeded"},{"documentName":"multipage_invoice4.pdf","pages":3,"errors":[],"status":"succeeded"},{"documentName":"multipage_invoice5.pdf","pages":3,"errors":[],"status":"succeeded"}],"errors":[]}}' + headers: + apim-request-id: + - 39858f3f-3dca-40cb-9683-df4f72de943c + content-type: + - application/json; charset=utf-8 + date: + - Thu, 23 Apr 2020 23:19:28 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + transfer-encoding: + - chunked + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '124' + status: + code: 200 + message: OK +- request: + body: !!python/object/new:_io.BytesIO + state: !!python/tuple + - !!binary | + JVBERi0xLjcNCiW1tbW1DQoxIDAgb2JqDQo8PC9UeXBlL0NhdGFsb2cvUGFnZXMgMiAwIFIvTGFu + Zyhlbi1VUykgL1N0cnVjdFRyZWVSb290IDE2IDAgUi9NYXJrSW5mbzw8L01hcmtlZCB0cnVlPj4v + TWV0YWRhdGEgMjUzIDAgUi9WaWV3ZXJQcmVmZXJlbmNlcyAyNTQgMCBSPj4NCmVuZG9iag0KMiAw + IG9iag0KPDwvVHlwZS9QYWdlcy9Db3VudCAzL0tpZHNbIDMgMCBSIDExIDAgUiAxMyAwIFJdID4+ + DQplbmRvYmoNCjMgMCBvYmoNCjw8L1R5cGUvUGFnZS9QYXJlbnQgMiAwIFIvUmVzb3VyY2VzPDwv + Rm9udDw8L0YxIDUgMCBSL0YyIDkgMCBSPj4vRXh0R1N0YXRlPDwvR1M3IDcgMCBSL0dTOCA4IDAg + Uj4+L1Byb2NTZXRbL1BERi9UZXh0L0ltYWdlQi9JbWFnZUMvSW1hZ2VJXSA+Pi9NZWRpYUJveFsg + MCAwIDYxMiA3OTJdIC9Db250ZW50cyA0IDAgUi9Hcm91cDw8L1R5cGUvR3JvdXAvUy9UcmFuc3Bh + cmVuY3kvQ1MvRGV2aWNlUkdCPj4vVGFicy9TL1N0cnVjdFBhcmVudHMgMD4+DQplbmRvYmoNCjQg + MCBvYmoNCjw8L0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggMjg2ND4+DQpzdHJlYW0NCnicvZxZ + bxw3EsffBeg79ONMsGrzPhZBAMvXerEGkrWAPBiLwJYPGIilXVubbL79VrHvYRfZ3cOOAI2OLvJf + LFb/SPbB6tGP1fffP3r15OXTiv3wQ3X99En1n8sLVjP88lxUrDLwab2ovn64vPj5u+ru8uL65vLi + 0XNecVMzV918vLzgYMcqXikpam4ry1TtTHXzBexevLbVp29QZ/Up/OXav15cXrw5vLz77agP9/D9 + +WgOt/DzA3xXx39VN3+/vHgGOj9dXpzlkAOH+Nih4Ecr//x4JYP6V1D/azlVzVzNDKV60rzq2asn + VTXqCL6+I8RcLxjrayUi+eujgmhf+cOv+PEuxN+CUyYcefsJ/wsfrjG6g+PfNkfmxC9vau8pv3Jh + EaXCYmSt9Yl8dQV1OlXd3L45cCFLNVizmvt5xajBZ6iI2klK5W/HK25CF2NXvyulCX0oSM2QOQ/H + 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 + fvW3lN9NoKP8fgIt5fcTaCkfCZSmfCSw09UI6BG/5zmhhK3NXNLi2yxyv6sRhuO2Ndl2xSReu18C + SWJj63VjgCulDJhYt8bwpZRleJt/hbRauxkZKS1YnXrQP1Zeu/sWqczwsaPoQiXOyj7h6XqHU7Nw + 4j5Agofrl1/DFhRHCafxlSw3vgmNdx9P/alYcBMnVb/AV7HR2uNeVHHjrz9DKxFR4SLtfXVUh+u3 + 2N4QjPCBobkrNuZyvAMV+7FxL7PZQV3OCfxy5A4iij0481lKHXfbcTPqJ0nTd4eAs8CYcIeT1VbQ + t+LU2ltxVP7jrMGt4o1aeyuOlIaffhVkVamLzULb9D3+WLrUlRyhOO7ztEa61PJCAGLMOulS46lg + IcPXSJcaULmXuJ3hGulSIyq3DleUK6R1qRGVG5hGrGq1LjWkcmXwYaE10qVoxiXD+eoa6VI041zj + BgZrpEvRzPuam1Ug1aVohk8vi3XSHc04bmeEj9VUhsnwOhCMljA1gRHb9AMfw80Nf0dZqDxp/Xp4 + TA7MvFJgaGoPJlbVsrkCYqnn5PSIc8tK9/fXAS7TyBgJQ4uqLAzmohtYP/Xhid+vPlfPwtTZkXr3 + OJv90lxjdDiRlTildYc/cAPfx2Hvz5f4Gf75G0z37rvp7y0+uBxvgnWuuxwyB5hIuJvNHretowTd + UQYnabEnj3HPzvf9XP8bLHLV4Vu8cj/XCw7/gnk/4UU2Hn5z4s4HQ3MsdeqGPnb7VjRbEL8K9ww/ + Q0xY2N8U//f6AVcH8UOgZ7nFhcKt+Qi3sps3ssLRkbpW8S6K/XayZvFmr+cFRcraSsqbbFB44aDg + vdjTnS1ze6SeJew4LTy3Vep5YgoWKaRY4ZZ5DoOxWxLSwhkFY6rQf1JEOZRypFhuD9ozzxzgiKSk + iee8/w9kOwx8DQplbmRzdHJlYW0NCmVuZG9iag0KNSAwIG9iag0KPDwvVHlwZS9Gb250L1N1YnR5 + cGUvVHJ1ZVR5cGUvTmFtZS9GMS9CYXNlRm9udC9CQ0RFRUUrQ2FsaWJyaS9FbmNvZGluZy9XaW5B + bnNpRW5jb2RpbmcvRm9udERlc2NyaXB0b3IgNiAwIFIvRmlyc3RDaGFyIDMyL0xhc3RDaGFyIDEy + MS9XaWR0aHMgMjQ5IDAgUj4+DQplbmRvYmoNCjYgMCBvYmoNCjw8L1R5cGUvRm9udERlc2NyaXB0 + b3IvRm9udE5hbWUvQkNERUVFK0NhbGlicmkvRmxhZ3MgMzIvSXRhbGljQW5nbGUgMC9Bc2NlbnQg + NzUwL0Rlc2NlbnQgLTI1MC9DYXBIZWlnaHQgNzUwL0F2Z1dpZHRoIDUyMS9NYXhXaWR0aCAxNzQz + L0ZvbnRXZWlnaHQgNDAwL1hIZWlnaHQgMjUwL1N0ZW1WIDUyL0ZvbnRCQm94WyAtNTAzIC0yNTAg + MTI0MCA3NTBdIC9Gb250RmlsZTIgMjUwIDAgUj4+DQplbmRvYmoNCjcgMCBvYmoNCjw8L1R5cGUv + RXh0R1N0YXRlL0JNL05vcm1hbC9jYSAxPj4NCmVuZG9iag0KOCAwIG9iag0KPDwvVHlwZS9FeHRH + U3RhdGUvQk0vTm9ybWFsL0NBIDE+Pg0KZW5kb2JqDQo5IDAgb2JqDQo8PC9UeXBlL0ZvbnQvU3Vi + dHlwZS9UcnVlVHlwZS9OYW1lL0YyL0Jhc2VGb250L0JDREZFRStDYWxpYnJpLUJvbGQvRW5jb2Rp + bmcvV2luQW5zaUVuY29kaW5nL0ZvbnREZXNjcmlwdG9yIDEwIDAgUi9GaXJzdENoYXIgMzIvTGFz + dENoYXIgMTIwL1dpZHRocyAyNTEgMCBSPj4NCmVuZG9iag0KMTAgMCBvYmoNCjw8L1R5cGUvRm9u + dERlc2NyaXB0b3IvRm9udE5hbWUvQkNERkVFK0NhbGlicmktQm9sZC9GbGFncyAzMi9JdGFsaWNB + bmdsZSAwL0FzY2VudCA3NTAvRGVzY2VudCAtMjUwL0NhcEhlaWdodCA3NTAvQXZnV2lkdGggNTM2 + L01heFdpZHRoIDE3ODEvRm9udFdlaWdodCA3MDAvWEhlaWdodCAyNTAvU3RlbVYgNTMvRm9udEJC + b3hbIC01MTkgLTI1MCAxMjYzIDc1MF0gL0ZvbnRGaWxlMiAyNTIgMCBSPj4NCmVuZG9iag0KMTEg + MCBvYmoNCjw8L1R5cGUvUGFnZS9QYXJlbnQgMiAwIFIvUmVzb3VyY2VzPDwvRm9udDw8L0YyIDkg + MCBSPj4vRXh0R1N0YXRlPDwvR1M3IDcgMCBSL0dTOCA4IDAgUj4+L1Byb2NTZXRbL1BERi9UZXh0 + L0ltYWdlQi9JbWFnZUMvSW1hZ2VJXSA+Pi9NZWRpYUJveFsgMCAwIDYxMiA3OTJdIC9Db250ZW50 + cyAxMiAwIFIvR3JvdXA8PC9UeXBlL0dyb3VwL1MvVHJhbnNwYXJlbmN5L0NTL0RldmljZVJHQj4+ + L1RhYnMvUy9TdHJ1Y3RQYXJlbnRzIDE+Pg0KZW5kb2JqDQoxMiAwIG9iag0KPDwvRmlsdGVyL0Zs + YXRlRGVjb2RlL0xlbmd0aCA0NzY+Pg0Kc3RyZWFtDQp4nK2Yu2ocQRBF84H5hwplB7Vdj36BUKCV + LGwQ2GjBgVEoKZLA9v+Dy4sDh6rmTjDQzNCne6BO3xo6fKXLy8P98fMNlasrur450s99K1z+XlOU + CrW496n062nfvn+kt327Pu3b4ZNSPDg975vES4WEunJRp14Ge6PTa7x099Dp5XdMSC/n0fg3utu3 + Hxf04ZFOX/btNqb7tm90e38k+m9BAlpQm8pNzws6r+OdeEXhe+M+0nhD4VvhKWm8o/Be2fL4isLr + ZO9pfEPhxbhZGt9B+Do795nGDxR+CM/87icK3xqX/O4FJcJaC2vN81Heq+bs+dITlPiqDB4LfJT5 + alGe+doXlPp8dF7YPkp93oW15fko93mt7PljV1Dyc5tc8+euoOznatw9z0fpzyOHyULsQenPInZp + /vsrSn8Wucvz319R+rMIXvnyU5T9zJ37Ah9lP9PB+cNXUfazSF5lYfso+2lEL12oPpT9NLLXStOD + sp+2utL1KMp+6pNnvvoNZT+N8FXy4cNQ9tMIX5rP3oayn0b4snz9G0p/MhrXfPg2lP6kR9u9wEf5 + TyJ9LTQ/hvKfRPpaaH4M5T+J9LXQ/BjKf1I614X6R/lvCveF9OWwv4CVR3uff/8AMWTgdQ0KZW5k + c3RyZWFtDQplbmRvYmoNCjEzIDAgb2JqDQo8PC9UeXBlL1BhZ2UvUGFyZW50IDIgMCBSL1Jlc291 + cmNlczw8L0ZvbnQ8PC9GMSA1IDAgUi9GMiA5IDAgUj4+L0V4dEdTdGF0ZTw8L0dTNyA3IDAgUi9H + UzggOCAwIFI+Pi9Qcm9jU2V0Wy9QREYvVGV4dC9JbWFnZUIvSW1hZ2VDL0ltYWdlSV0gPj4vTWVk + aWFCb3hbIDAgMCA2MTIgNzkyXSAvQ29udGVudHMgMTQgMCBSL0dyb3VwPDwvVHlwZS9Hcm91cC9T + L1RyYW5zcGFyZW5jeS9DUy9EZXZpY2VSR0I+Pi9UYWJzL1MvU3RydWN0UGFyZW50cyAyPj4NCmVu + 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 + mxWDaazuLffHZf/XyULlydKvhoeloFgtJRTUpHahL93+mltBGOxpKTm6Y7Lu6v7GpCD11DNaQExK + 6AdgSOeZT717wkML9upBhyuL6n11mfRLsw1gXRIVLp3a0+/RA+T32sKAIVRhtoQn9+zXM8QITO+A + 9glKLNq+F87X3ru/nWXj+ea8/ouJHAe52xbDiDYr2x4OQ5UX8RyPeO0OBw4teexOr37fA/vb+QJ0 + +xYuIfZaweC/AN6IFYv+0NkZIO4MmKuL8ERtde5O1TH+MO+X/kbPZ/AJ9Sd9u/979eA4Gd6x3mUW + g6WWMJhZi94xhb0jFJHhecL9wep69bHn+5wihEsfiDWLTrGFneJuoM3PeF46LXyXMMzZUOHYoeH7 + xGCtb1Gxwi2rGcxq7BqXFo4omJxw9Qd5lMFVFhVbOo1958iBPCIwaeRJ4/8DtXV3Ww0KZW5kc3Ry + ZWFtDQplbmRvYmoNCjE1IDAgb2JqDQo8PC9BdXRob3IoS3Jpc3RhIFByYXRpY28pIC9DcmVhdG9y + KP7/AE0AaQBjAHIAbwBzAG8AZgB0AK4AIABXAG8AcgBkACAAZgBvAHIAIABPAGYAZgBpAGMAZQAg + ADMANgA1KSAvQ3JlYXRpb25EYXRlKEQ6MjAyMDA0MjIxNjQ1MjktMDcnMDAnKSAvTW9kRGF0ZShE + OjIwMjAwNDIyMTY0NTI5LTA3JzAwJykgL1Byb2R1Y2VyKP7/AE0AaQBjAHIAbwBzAG8AZgB0AK4A + IABXAG8AcgBkACAAZgBvAHIAIABPAGYAZgBpAGMAZQAgADMANgA1KSA+Pg0KZW5kb2JqDQoyMyAw + IG9iag0KPDwvVHlwZS9PYmpTdG0vTiAyMzIvRmlyc3QgMjAzNS9GaWx0ZXIvRmxhdGVEZWNvZGUv + TGVuZ3RoIDMwNTE+Pg0Kc3RyZWFtDQp4nO1b24ocyRF9N/gf8g+mIu8Jy4Jt7WKzrBCSwA/CDyOp + LQ07M72MWiD9vc+pipyetTOz1Gn7weCHmbrG/UTkpaKtmMXYYIIYG40s2dhkJOIezsQaW3DfG7cY + J9FYnMWMU+NjMM6CLBrnTIjJOG+i4FkwMRa8ZpIFUTIp4W1rsrXGi8nJGe9NAUPvTMnkBLEuGx9w + LLi9GBEPfsWIBcOAawuOHtfOigkWx5SpsXiwCR7HnExwRgKIfMaxRBNoB/QK4J+kmAD6lHAfzzOs + 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 + o7YHauOettT9bxfFC374xVj+v4b+R2qoOrMW0tkCqt2Sut9ed8Hr1nDdsK3bqHVDsm4T1s27ug1W + N6fqllHdfKlbInWjoi7560K8Lo/rQrMu/+qirC5v6qKjLgX+W4W/fs361q9fDMY/AFTdMPANCmVu + ZHN0cmVhbQ0KZW5kb2JqDQoyNDkgMCBvYmoNClsgMjI2IDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAy + NTAgMzA2IDI1MiAwIDUwNyA1MDcgNTA3IDUwNyA1MDcgNTA3IDUwNyA1MDcgNTA3IDUwNyAyNjgg + MCAwIDAgMCAwIDAgNTc5IDU0NCA1MzMgNjE1IDQ4OCA0NTkgNjMxIDYyMyAyNTIgMCAwIDQyMCA4 + NTUgMCAwIDUxNyA2NzMgNTQzIDQ1OSAwIDAgMCA4OTAgMCAwIDAgMCAwIDAgMCAwIDAgNDc5IDUy + NSA0MjMgNTI1IDQ5OCAwIDQ3MSAwIDIzMCAwIDAgMjMwIDc5OSA1MjUgNTI3IDUyNSAwIDM0OSAz + OTEgMzM1IDUyNSA0NTIgMCAwIDQ1M10gDQplbmRvYmoNCjI1MCAwIG9iag0KPDwvRmlsdGVyL0Zs + YXRlRGVjb2RlL0xlbmd0aCA1MzE4Mi9MZW5ndGgxIDEzNzU5Nj4+DQpzdHJlYW0NCnic7H0HXFTH + 2v475+zCUhaWKrLiLq6Auig2FEtklaJoLCirgA2k2LChGI0lJEZNSEy5Mb2ZnhtNsqwaMdXkphfT + e+/JjaZdzc01Ub5nzruDaDTJvfd/v3z3/9sXnvM8887Me2bmzMyZjRBIEJENFxNVFIzIL1mf7HuW + xJeZRLFJBSNOzbvntXVfkfhoNVGIb/ykrL7XPly5k0icg1oVVQsqF7/T99MUovmbicyDq5Yvc+5e + /EY20Y1fIH1/7eLZC9a+pw8kWvwCkdU9u25l7bvOlS6i228meumvc2oqq38cu9KHeJGIN2AOHNY7 + O+1HOh/prnMWLFuRPXOSG2nEm7utblFV5U2b53cjseoiFJ+8oHLF4l7W9G7In4PyzgU1yyqvOmvL + chI/yfpnL6xcUHPdoYMzSTSjfu+lixctXdZqpw3ozzRZfnF9zeK42V06Eq35GbdDP+ENGfzhP3a9 + WDAzeuhB6mghafd9tfpZya8XnTb+p0OHG8P2WQYgGUYasaFeCB0h8Wj4lp8OHdoSts+I1M46bpMe + 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 + wAKEAiGAGTANb8VVBzRAAETVAj5xBDgM/Az8BBwC/gH8CPwd+AE4CBwA/gZ8D3wHfAt8A3wN7Af2 + AV8BfwW+BL4APgc+Az4FPgE+Bj4CPgQ+AN4H3gPeBd4B3gbeAt4E3gBeB14DXgVeAV4GXgJeBF4A + ngf2As8BzwLPAE8DTwFPAk8AjwOPAY8CfwEeAR4G9gAPAQ8CDwD3A/cB9wK7gRZgF3APsBPYAWwH + /EAz4APuBu4C7gS2AVuBO4A/A7cDtwG3ArcANwM3ATcCNwBbgOuB64BrgWuAq4GrgCuBK4DLgcuA + S4HNwCXAn4CLgYuAC4ELgE3A+cB5QBNwLnAOsBHYAKyn6uGNAutfYP0LrH+B9S+w/gXWv8D6F1j/ + AutfYP0LrH+B9S+w/gXWv8D6F1j/AutfYP2LegB7gMAeILAHCOwBAnuAwB4gsAcI7AECe4DAHiCw + BwjsAQJ7gMAeILAHCOwBAnuAwB4gsAcI7AECe4DAHiCwBwjsAQJ7gMAeILAHCOwBAnuAwB4gsAcI + 7AEC619g/Qusf4G1L7D2Bda+wNoXWPsCa19g7QusfYG1L7D2/+h9+L/cyv7oBvyXGy1d2u5gJi1p + pvyFp9DriI5ccszvqUygebSUGvG1gTbRJfQQvU2zaB3UlbSFbqU/k48epqfo9d/xOy+/246sNC+g + SH0XhVAcUeuh1v1HbgVazFHtPJcgFWdyHvW02lq/Ps739ZFLWm1HWkJiKdyoa9Vegvdv4nDrIbxy + kW4dINPaRuhoo8Z3odcdufvIbceNQTGV01SaRtOpgirR/2qaQ3MxMvOpjhbQQiO1EHmzca1FaiZK + YXsx9NFSi2gxUE/LqIGW42sx9NJASuYtMdINdBq+VtBKOp1W0WpaE7ieZnhWI+d0I70CWEtn4Mmc + SWcZSjF71tHZtB5PbSOdQ+f+aurcNtVE59H5eM4X0IUn1ZuOSV2Er4vpT5gPm+lSuoyuwLy4mq45 + znu54b+KrqPrMWdk3qXwXG8omXs/PU476S66m+4xxrIKo8Yjosal1hjDxRiD1ejhunYt5vE7rW20 + 1qLvsm9NgZ6ugP+sdjWWB8ZRllyHkhyFn4OMsua4kbgIfWB9tEecutTo/1Fv+1H5Na8aj2vajczV + Rkqq470n05fRtViBN+AqR1WqG6FZXW/o9v7r2spuMdI30c10C57FbYZSzJ5boW+j27G276CttA1f + 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 + IDAgMCAwIDQ1OSAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCA0NzMgNDk1IDAgMCAwIDAgMCAwIDAg + MCAwIDAgNDk4IDAgNDk0IDUzNyAwIDUzNyA1MDMgMCA0NzQgMCAyNDYgMCAwIDI0NiAwIDUzNyA1 + MzggNTM3IDAgMzU1IDM5OSAzNDcgNTM3IDAgMCA0NTldIA0KZW5kb2JqDQoyNTIgMCBvYmoNCjw8 + L0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggMzM2MzMvTGVuZ3RoMSAxMDI3MDQ+Pg0Kc3RyZWFt + DQp4nOydCXiTVdb4z33fLM3WJl3SJU2aNk26J90otAUaulEoW6HBFgRaaLG4UYGqoAzgglhFVFzG + BUFHxwWUNIAUQUTFXdQZUccdlxnXjqjgKNDkf+570tIiuMz4jd//+XLa8/7uPffcfXsj8SkwANDj + QwZNVeWV9bcVPhsGrO2PAGqMj6t4/SnTOGBzDqBD98Qprvz1X835GoCtwlxNc85pblc9YVwHcNYN + mP7wnPMXWcseafgS4NpKAMWque1nnHPn5+WbANrHAaiizjh78dyPlhs+ArjpRYC5+rbW5pbvT198 + CZanxfKK2tCg25n4KsYxP6S2nbPowsefSy3F+KcA8zadPX9O81VvnncY4Ng76D71nOYL29Pvi7Ng + ehv6W89pXdR86yUbzge24HuMX3Zu8zmt75e/mgusoBAg96r2+QsXBUywEvuzh/u3L2ht/8H9/EKA + xU0Axg+Aj4Wi5IMVj770+KyI4YchPgy47Pzi4hc53xhzweSjb/UOUSeETUJfFQhAgvkU4Ae2V73h + 6FtHVqoTpJIGSPwmbjFlwlrQw4UgYk49uABr1X6P9QqYKsrGCrtADmHyW+QFWKSFKL4CjwgQBkKE + UhBlMlGQfQzOwB5IvQiLVfGyx0+xWsEKYH+R2qC8Q3BYgQV4mrhHHs57CtGy8OOtYS/jbL0JsfAr + RXYxrP61eX5OxE2/fZm/RBT+/0694rNQdlL7d6D9b9R/MpGNBvWvzjMM982p0q4bnCauObXvIL8G + WCm7HRp+ykfQ/3RZmB53yrRjJ8+rqMF6nzl5muwt8PxUfSeK2Hu8HJn9hHGYDxUnzXMRmAbVuQku + +zV1nkxkMnD8Ej/xWxj9q8uuhT/8Ct/aQXEljP219f1vFPGFwXPG5cS+nijsX3DWz5WLPj87tj/l + 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 + KrFHQKlmZxW8qHpfRETYMZZdos8K9Tc0bmVNGZWf8PP4qiK6kZk7D1Hp68k6+cqujnrMi0+QTUvB + 02LWgEvJpMfQvQGNGyJ9Cp8e2OiVa3QkzxGYHxUIMdPMzhyDZ2iKtYRjadyCZoFjccXgVeuxLKL/ + AfpFWhMNCmVuZHN0cmVhbQ0KZW5kb2JqDQoyNTMgMCBvYmoNCjw8L1R5cGUvTWV0YWRhdGEvU3Vi + dHlwZS9YTUwvTGVuZ3RoIDMwODQ+Pg0Kc3RyZWFtDQo8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9 + Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/Pjx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6 + bWV0YS8iIHg6eG1wdGs9IjMuMS03MDEiPgo8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cu + dzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgo8cmRmOkRlc2NyaXB0aW9uIHJkZjph + Ym91dD0iIiAgeG1sbnM6cGRmPSJodHRwOi8vbnMuYWRvYmUuY29tL3BkZi8xLjMvIj4KPHBkZjpQ + cm9kdWNlcj5NaWNyb3NvZnTCriBXb3JkIGZvciBPZmZpY2UgMzY1PC9wZGY6UHJvZHVjZXI+PC9y + ZGY6RGVzY3JpcHRpb24+CjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiICB4bWxuczpkYz0i + aHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iPgo8ZGM6Y3JlYXRvcj48cmRmOlNlcT48 + cmRmOmxpPktyaXN0YSBQcmF0aWNvPC9yZGY6bGk+PC9yZGY6U2VxPjwvZGM6Y3JlYXRvcj48L3Jk + ZjpEZXNjcmlwdGlvbj4KPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgIHhtbG5zOnhtcD0i + aHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyI+Cjx4bXA6Q3JlYXRvclRvb2w+TWljcm9zb2Z0 + wq4gV29yZCBmb3IgT2ZmaWNlIDM2NTwveG1wOkNyZWF0b3JUb29sPjx4bXA6Q3JlYXRlRGF0ZT4y + MDIwLTA0LTIyVDE2OjQ1OjI5LTA3OjAwPC94bXA6Q3JlYXRlRGF0ZT48eG1wOk1vZGlmeURhdGU+ + MjAyMC0wNC0yMlQxNjo0NToyOS0wNzowMDwveG1wOk1vZGlmeURhdGU+PC9yZGY6RGVzY3JpcHRp + b24+CjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiICB4bWxuczp4bXBNTT0iaHR0cDovL25z + LmFkb2JlLmNvbS94YXAvMS4wL21tLyI+Cjx4bXBNTTpEb2N1bWVudElEPnV1aWQ6NThCQjA4MDUt + RjY5Ri00NDBGLTgzOUItMURFMDI1NjUxREUyPC94bXBNTTpEb2N1bWVudElEPjx4bXBNTTpJbnN0 + YW5jZUlEPnV1aWQ6NThCQjA4MDUtRjY5Ri00NDBGLTgzOUItMURFMDI1NjUxREUyPC94bXBNTTpJ + bnN0YW5jZUlEPjwvcmRmOkRlc2NyaXB0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKPC9y + ZGY6UkRGPjwveDp4bXBtZXRhPjw/eHBhY2tldCBlbmQ9InciPz4NCmVuZHN0cmVhbQ0KZW5kb2Jq + DQoyNTQgMCBvYmoNCjw8L0Rpc3BsYXlEb2NUaXRsZSB0cnVlPj4NCmVuZG9iag0KMjU1IDAgb2Jq + DQo8PC9UeXBlL1hSZWYvU2l6ZSAyNTUvV1sgMSA0IDJdIC9Sb290IDEgMCBSL0luZm8gMTUgMCBS + L0lEWzwwNTA4QkI1ODlGRjYwRjQ0ODM5QjFERTAyNTY1MURFMj48MDUwOEJCNTg5RkY2MEY0NDgz + OUIxREUwMjU2NTFERTI+XSAvRmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0aCA1MDc+Pg0Kc3RyZWFt + DQp4nDXV93fPZxQH8E9sSojZGkG0tQmKGrVHFKU2tUeomrXTauy9YlMdKFV7U3vvHUWJvX7rv5B+ + 83nx3HOe17nn3Ht/fQdB5KWnR0X+mCDIYAv+C4lKD8mTFBJdJiRvASRgcki+SiExcSH5dQU7hhRK + DCk9JggyRU4XCZ7jBV7iFZ7h3eTryF5c8vsuO6KQCZmRBVmRDTmQE7nwAXIjD6LRCoVRCPmQF/kR + g4IogASUwIcogqL4CMVRDB+jJGJRGqVQBnGoiE/xCcqhLCqgPKqjMiqhKqqgGuJRB5+hBmqhJj5H + bTRCPdTFF6iPhmiAlmiCxmiGpmiB5vgSrdEGbfEV2qE9vkYHdEQndEYXdEU3dEcPfIOe6IXe6IO+ + 6If+eIMBGIhBSMRgDMG3GIrvMAzDMQIjMQqj8T3GYCzGYTwmYCImIQk/4EdMxk9IxhRMxTRMxwzM + xCzMxhzMxTzMx1ssxQIsxCIsxhKkYBmWYwVWYhVWYw3uYj1+x89Yi1+wDr/hV6RiCzZiAzbhD/yJ + zdiFrfgL27ENO7EDB7EHu7EPe3EA+3Ech3EIR/A3juEozuEkTuA0TuEszuAqLuA8LuEiruAy7uA6 + ruEmbuA2buEf3MN9PMC/eIhHSMNjPMHTSFpUSQ3DJj4jvSJVPCQqNmRGWkhK/SD4H/tbjC8NCmVu + ZHN0cmVhbQ0KZW5kb2JqDQp4cmVmDQowIDI1Ng0KMDAwMDAwMDAxNiA2NTUzNSBmDQowMDAwMDAw + MDE3IDAwMDAwIG4NCjAwMDAwMDAxNjggMDAwMDAgbg0KMDAwMDAwMDIzOCAwMDAwMCBuDQowMDAw + MDAwNTExIDAwMDAwIG4NCjAwMDAwMDM0NTAgMDAwMDAgbg0KMDAwMDAwMzYxOSAwMDAwMCBuDQow + MDAwMDAzODU5IDAwMDAwIG4NCjAwMDAwMDM5MTIgMDAwMDAgbg0KMDAwMDAwMzk2NSAwMDAwMCBu + DQowMDAwMDA0MTQwIDAwMDAwIG4NCjAwMDAwMDQzODYgMDAwMDAgbg0KMDAwMDAwNDY1MiAwMDAw + MCBuDQowMDAwMDA1MjAzIDAwMDAwIG4NCjAwMDAwMDU0NzggMDAwMDAgbg0KMDAwMDAwODU2MyAw + MDAwMCBuDQowMDAwMDAwMDE3IDY1NTM1IGYNCjAwMDAwMDAwMTggNjU1MzUgZg0KMDAwMDAwMDAx + OSA2NTUzNSBmDQowMDAwMDAwMDIwIDY1NTM1IGYNCjAwMDAwMDAwMjEgNjU1MzUgZg0KMDAwMDAw + MDAyMiA2NTUzNSBmDQowMDAwMDAwMDIzIDY1NTM1IGYNCjAwMDAwMDAwMjQgNjU1MzUgZg0KMDAw + MDAwMDAyNSA2NTUzNSBmDQowMDAwMDAwMDI2IDY1NTM1IGYNCjAwMDAwMDAwMjcgNjU1MzUgZg0K + MDAwMDAwMDAyOCA2NTUzNSBmDQowMDAwMDAwMDI5IDY1NTM1IGYNCjAwMDAwMDAwMzAgNjU1MzUg + Zg0KMDAwMDAwMDAzMSA2NTUzNSBmDQowMDAwMDAwMDMyIDY1NTM1IGYNCjAwMDAwMDAwMzMgNjU1 + MzUgZg0KMDAwMDAwMDAzNCA2NTUzNSBmDQowMDAwMDAwMDM1IDY1NTM1IGYNCjAwMDAwMDAwMzYg + NjU1MzUgZg0KMDAwMDAwMDAzNyA2NTUzNSBmDQowMDAwMDAwMDM4IDY1NTM1IGYNCjAwMDAwMDAw + MzkgNjU1MzUgZg0KMDAwMDAwMDA0MCA2NTUzNSBmDQowMDAwMDAwMDQxIDY1NTM1IGYNCjAwMDAw + MDAwNDIgNjU1MzUgZg0KMDAwMDAwMDA0MyA2NTUzNSBmDQowMDAwMDAwMDQ0IDY1NTM1IGYNCjAw + MDAwMDAwNDUgNjU1MzUgZg0KMDAwMDAwMDA0NiA2NTUzNSBmDQowMDAwMDAwMDQ3IDY1NTM1IGYN + CjAwMDAwMDAwNDggNjU1MzUgZg0KMDAwMDAwMDA0OSA2NTUzNSBmDQowMDAwMDAwMDUwIDY1NTM1 + IGYNCjAwMDAwMDAwNTEgNjU1MzUgZg0KMDAwMDAwMDA1MiA2NTUzNSBmDQowMDAwMDAwMDUzIDY1 + NTM1IGYNCjAwMDAwMDAwNTQgNjU1MzUgZg0KMDAwMDAwMDA1NSA2NTUzNSBmDQowMDAwMDAwMDU2 + IDY1NTM1IGYNCjAwMDAwMDAwNTcgNjU1MzUgZg0KMDAwMDAwMDA1OCA2NTUzNSBmDQowMDAwMDAw + MDU5IDY1NTM1IGYNCjAwMDAwMDAwNjAgNjU1MzUgZg0KMDAwMDAwMDA2MSA2NTUzNSBmDQowMDAw + MDAwMDYyIDY1NTM1IGYNCjAwMDAwMDAwNjMgNjU1MzUgZg0KMDAwMDAwMDA2NCA2NTUzNSBmDQow + MDAwMDAwMDY1IDY1NTM1IGYNCjAwMDAwMDAwNjYgNjU1MzUgZg0KMDAwMDAwMDA2NyA2NTUzNSBm + DQowMDAwMDAwMDY4IDY1NTM1IGYNCjAwMDAwMDAwNjkgNjU1MzUgZg0KMDAwMDAwMDA3MCA2NTUz + NSBmDQowMDAwMDAwMDcxIDY1NTM1IGYNCjAwMDAwMDAwNzIgNjU1MzUgZg0KMDAwMDAwMDA3MyA2 + NTUzNSBmDQowMDAwMDAwMDc0IDY1NTM1IGYNCjAwMDAwMDAwNzUgNjU1MzUgZg0KMDAwMDAwMDA3 + NiA2NTUzNSBmDQowMDAwMDAwMDc3IDY1NTM1IGYNCjAwMDAwMDAwNzggNjU1MzUgZg0KMDAwMDAw + MDA3OSA2NTUzNSBmDQowMDAwMDAwMDgwIDY1NTM1IGYNCjAwMDAwMDAwODEgNjU1MzUgZg0KMDAw + MDAwMDA4MiA2NTUzNSBmDQowMDAwMDAwMDgzIDY1NTM1IGYNCjAwMDAwMDAwODQgNjU1MzUgZg0K + MDAwMDAwMDA4NSA2NTUzNSBmDQowMDAwMDAwMDg2IDY1NTM1IGYNCjAwMDAwMDAwODcgNjU1MzUg + Zg0KMDAwMDAwMDA4OCA2NTUzNSBmDQowMDAwMDAwMDg5IDY1NTM1IGYNCjAwMDAwMDAwOTAgNjU1 + MzUgZg0KMDAwMDAwMDA5MSA2NTUzNSBmDQowMDAwMDAwMDkyIDY1NTM1IGYNCjAwMDAwMDAwOTMg + NjU1MzUgZg0KMDAwMDAwMDA5NCA2NTUzNSBmDQowMDAwMDAwMDk1IDY1NTM1IGYNCjAwMDAwMDAw + OTYgNjU1MzUgZg0KMDAwMDAwMDA5NyA2NTUzNSBmDQowMDAwMDAwMDk4IDY1NTM1IGYNCjAwMDAw + MDAwOTkgNjU1MzUgZg0KMDAwMDAwMDEwMCA2NTUzNSBmDQowMDAwMDAwMTAxIDY1NTM1IGYNCjAw + MDAwMDAxMDIgNjU1MzUgZg0KMDAwMDAwMDEwMyA2NTUzNSBmDQowMDAwMDAwMTA0IDY1NTM1IGYN + CjAwMDAwMDAxMDUgNjU1MzUgZg0KMDAwMDAwMDEwNiA2NTUzNSBmDQowMDAwMDAwMTA3IDY1NTM1 + IGYNCjAwMDAwMDAxMDggNjU1MzUgZg0KMDAwMDAwMDEwOSA2NTUzNSBmDQowMDAwMDAwMTEwIDY1 + NTM1IGYNCjAwMDAwMDAxMTEgNjU1MzUgZg0KMDAwMDAwMDExMiA2NTUzNSBmDQowMDAwMDAwMTEz + IDY1NTM1IGYNCjAwMDAwMDAxMTQgNjU1MzUgZg0KMDAwMDAwMDExNSA2NTUzNSBmDQowMDAwMDAw + MTE2IDY1NTM1IGYNCjAwMDAwMDAxMTcgNjU1MzUgZg0KMDAwMDAwMDExOCA2NTUzNSBmDQowMDAw + MDAwMTE5IDY1NTM1IGYNCjAwMDAwMDAxMjAgNjU1MzUgZg0KMDAwMDAwMDEyMSA2NTUzNSBmDQow + MDAwMDAwMTIyIDY1NTM1IGYNCjAwMDAwMDAxMjMgNjU1MzUgZg0KMDAwMDAwMDEyNCA2NTUzNSBm + DQowMDAwMDAwMTI1IDY1NTM1IGYNCjAwMDAwMDAxMjYgNjU1MzUgZg0KMDAwMDAwMDEyNyA2NTUz + NSBmDQowMDAwMDAwMTI4IDY1NTM1IGYNCjAwMDAwMDAxMjkgNjU1MzUgZg0KMDAwMDAwMDEzMCA2 + NTUzNSBmDQowMDAwMDAwMTMxIDY1NTM1IGYNCjAwMDAwMDAxMzIgNjU1MzUgZg0KMDAwMDAwMDEz + MyA2NTUzNSBmDQowMDAwMDAwMTM0IDY1NTM1IGYNCjAwMDAwMDAxMzUgNjU1MzUgZg0KMDAwMDAw + MDEzNiA2NTUzNSBmDQowMDAwMDAwMTM3IDY1NTM1IGYNCjAwMDAwMDAxMzggNjU1MzUgZg0KMDAw + MDAwMDEzOSA2NTUzNSBmDQowMDAwMDAwMTQwIDY1NTM1IGYNCjAwMDAwMDAxNDEgNjU1MzUgZg0K + MDAwMDAwMDE0MiA2NTUzNSBmDQowMDAwMDAwMTQzIDY1NTM1IGYNCjAwMDAwMDAxNDQgNjU1MzUg + Zg0KMDAwMDAwMDE0NSA2NTUzNSBmDQowMDAwMDAwMTQ2IDY1NTM1IGYNCjAwMDAwMDAxNDcgNjU1 + MzUgZg0KMDAwMDAwMDE0OCA2NTUzNSBmDQowMDAwMDAwMTQ5IDY1NTM1IGYNCjAwMDAwMDAxNTAg + NjU1MzUgZg0KMDAwMDAwMDE1MSA2NTUzNSBmDQowMDAwMDAwMTUyIDY1NTM1IGYNCjAwMDAwMDAx + NTMgNjU1MzUgZg0KMDAwMDAwMDE1NCA2NTUzNSBmDQowMDAwMDAwMTU1IDY1NTM1IGYNCjAwMDAw + MDAxNTYgNjU1MzUgZg0KMDAwMDAwMDE1NyA2NTUzNSBmDQowMDAwMDAwMTU4IDY1NTM1IGYNCjAw + MDAwMDAxNTkgNjU1MzUgZg0KMDAwMDAwMDE2MCA2NTUzNSBmDQowMDAwMDAwMTYxIDY1NTM1IGYN + CjAwMDAwMDAxNjIgNjU1MzUgZg0KMDAwMDAwMDE2MyA2NTUzNSBmDQowMDAwMDAwMTY0IDY1NTM1 + IGYNCjAwMDAwMDAxNjUgNjU1MzUgZg0KMDAwMDAwMDE2NiA2NTUzNSBmDQowMDAwMDAwMTY3IDY1 + NTM1IGYNCjAwMDAwMDAxNjggNjU1MzUgZg0KMDAwMDAwMDE2OSA2NTUzNSBmDQowMDAwMDAwMTcw + IDY1NTM1IGYNCjAwMDAwMDAxNzEgNjU1MzUgZg0KMDAwMDAwMDE3MiA2NTUzNSBmDQowMDAwMDAw + MTczIDY1NTM1IGYNCjAwMDAwMDAxNzQgNjU1MzUgZg0KMDAwMDAwMDE3NSA2NTUzNSBmDQowMDAw + MDAwMTc2IDY1NTM1IGYNCjAwMDAwMDAxNzcgNjU1MzUgZg0KMDAwMDAwMDE3OCA2NTUzNSBmDQow + MDAwMDAwMTc5IDY1NTM1IGYNCjAwMDAwMDAxODAgNjU1MzUgZg0KMDAwMDAwMDE4MSA2NTUzNSBm + DQowMDAwMDAwMTgyIDY1NTM1IGYNCjAwMDAwMDAxODMgNjU1MzUgZg0KMDAwMDAwMDE4NCA2NTUz + NSBmDQowMDAwMDAwMTg1IDY1NTM1IGYNCjAwMDAwMDAxODYgNjU1MzUgZg0KMDAwMDAwMDE4NyA2 + NTUzNSBmDQowMDAwMDAwMTg4IDY1NTM1IGYNCjAwMDAwMDAxODkgNjU1MzUgZg0KMDAwMDAwMDE5 + MCA2NTUzNSBmDQowMDAwMDAwMTkxIDY1NTM1IGYNCjAwMDAwMDAxOTIgNjU1MzUgZg0KMDAwMDAw + MDE5MyA2NTUzNSBmDQowMDAwMDAwMTk0IDY1NTM1IGYNCjAwMDAwMDAxOTUgNjU1MzUgZg0KMDAw + MDAwMDE5NiA2NTUzNSBmDQowMDAwMDAwMTk3IDY1NTM1IGYNCjAwMDAwMDAxOTggNjU1MzUgZg0K + MDAwMDAwMDE5OSA2NTUzNSBmDQowMDAwMDAwMjAwIDY1NTM1IGYNCjAwMDAwMDAyMDEgNjU1MzUg + Zg0KMDAwMDAwMDIwMiA2NTUzNSBmDQowMDAwMDAwMjAzIDY1NTM1IGYNCjAwMDAwMDAyMDQgNjU1 + MzUgZg0KMDAwMDAwMDIwNSA2NTUzNSBmDQowMDAwMDAwMjA2IDY1NTM1IGYNCjAwMDAwMDAyMDcg + NjU1MzUgZg0KMDAwMDAwMDIwOCA2NTUzNSBmDQowMDAwMDAwMjA5IDY1NTM1IGYNCjAwMDAwMDAy + MTAgNjU1MzUgZg0KMDAwMDAwMDIxMSA2NTUzNSBmDQowMDAwMDAwMjEyIDY1NTM1IGYNCjAwMDAw + MDAyMTMgNjU1MzUgZg0KMDAwMDAwMDIxNCA2NTUzNSBmDQowMDAwMDAwMjE1IDY1NTM1IGYNCjAw + MDAwMDAyMTYgNjU1MzUgZg0KMDAwMDAwMDIxNyA2NTUzNSBmDQowMDAwMDAwMjE4IDY1NTM1IGYN + CjAwMDAwMDAyMTkgNjU1MzUgZg0KMDAwMDAwMDIyMCA2NTUzNSBmDQowMDAwMDAwMjIxIDY1NTM1 + IGYNCjAwMDAwMDAyMjIgNjU1MzUgZg0KMDAwMDAwMDIyMyA2NTUzNSBmDQowMDAwMDAwMjI0IDY1 + NTM1IGYNCjAwMDAwMDAyMjUgNjU1MzUgZg0KMDAwMDAwMDIyNiA2NTUzNSBmDQowMDAwMDAwMjI3 + IDY1NTM1IGYNCjAwMDAwMDAyMjggNjU1MzUgZg0KMDAwMDAwMDIyOSA2NTUzNSBmDQowMDAwMDAw + MjMwIDY1NTM1IGYNCjAwMDAwMDAyMzEgNjU1MzUgZg0KMDAwMDAwMDIzMiA2NTUzNSBmDQowMDAw + MDAwMjMzIDY1NTM1IGYNCjAwMDAwMDAyMzQgNjU1MzUgZg0KMDAwMDAwMDIzNSA2NTUzNSBmDQow + MDAwMDAwMjM2IDY1NTM1IGYNCjAwMDAwMDAyMzcgNjU1MzUgZg0KMDAwMDAwMDIzOCA2NTUzNSBm + DQowMDAwMDAwMjM5IDY1NTM1IGYNCjAwMDAwMDAyNDAgNjU1MzUgZg0KMDAwMDAwMDI0MSA2NTUz + NSBmDQowMDAwMDAwMjQyIDY1NTM1IGYNCjAwMDAwMDAyNDMgNjU1MzUgZg0KMDAwMDAwMDI0NCA2 + NTUzNSBmDQowMDAwMDAwMjQ1IDY1NTM1IGYNCjAwMDAwMDAyNDYgNjU1MzUgZg0KMDAwMDAwMDI0 + NyA2NTUzNSBmDQowMDAwMDAwMjQ4IDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAx + MTk4NyAwMDAwMCBuDQowMDAwMDEyMjg5IDAwMDAwIG4NCjAwMDAwNjU1NjQgMDAwMDAgbg0KMDAw + MDA2NTgyMiAwMDAwMCBuDQowMDAwMDk5NTQ4IDAwMDAwIG4NCjAwMDAxMDI3MTYgMDAwMDAgbg0K + MDAwMDEwMjc2MiAwMDAwMCBuDQp0cmFpbGVyDQo8PC9TaXplIDI1Ni9Sb290IDEgMCBSL0luZm8g + MTUgMCBSL0lEWzwwNTA4QkI1ODlGRjYwRjQ0ODM5QjFERTAyNTY1MURFMj48MDUwOEJCNTg5RkY2 + MEY0NDgzOUIxREUwMjU2NTFERTI+XSA+Pg0Kc3RhcnR4cmVmDQoxMDM0NzINCiUlRU9GDQp4cmVm + DQowIDANCnRyYWlsZXINCjw8L1NpemUgMjU2L1Jvb3QgMSAwIFIvSW5mbyAxNSAwIFIvSURbPDA1 + MDhCQjU4OUZGNjBGNDQ4MzlCMURFMDI1NjUxREUyPjwwNTA4QkI1ODlGRjYwRjQ0ODM5QjFERTAy + NTY1MURFMj5dIC9QcmV2IDEwMzQ3Mi9YUmVmU3RtIDEwMjc2Mj4+DQpzdGFydHhyZWYNCjEwODc1 + Mg0KJSVFT0Y= + - 0 + - null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '108935' + Content-Type: + - application/pdf + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/d476c84d-6282-47ac-8768-53e15dec405b/analyze?includeTextDetails=false + response: + body: + string: '' + headers: + apim-request-id: + - 0919e915-97dd-4d29-8c99-cb164af6b957 + content-length: + - '0' + date: + - Thu, 23 Apr 2020 23:19:28 GMT + operation-location: + - https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/d476c84d-6282-47ac-8768-53e15dec405b/analyzeresults/533ec8a4-0633-432a-85aa-df9f4abf3fff + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '88' + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/d476c84d-6282-47ac-8768-53e15dec405b/analyzeresults/533ec8a4-0633-432a-85aa-df9f4abf3fff + response: + body: + string: '{"status":"succeeded","createdDateTime":"2020-04-23T23:19:28Z","lastUpdatedDateTime":"2020-04-23T23:19:33Z","analyzeResult":{"version":"2.0.0","readResults":[{"page":1,"angle":0,"width":8.5,"height":11.0,"unit":"inch","lines":[]},{"page":3,"angle":0,"width":8.5,"height":11.0,"unit":"inch","lines":[]}],"pageResults":[{"page":1,"keyValuePairs":[{"key":{"text":"Invoice + For:","boundingBox":[6.0028,1.0431,7.0528,1.0431,7.0528,1.2667,6.0028,1.2667],"elements":null},"value":{"text":"Bilbo + Baggins 123 Hobbit Lane","boundingBox":[6.0028,1.4389,7.1083,1.4389,7.1083,1.8264,6.0028,1.8264],"elements":null},"confidence":1.0},{"key":{"text":"Address:","boundingBox":[0.8764,1.4681,1.5778,1.4681,1.5778,1.6625,0.8764,1.6625],"elements":null},"value":{"text":"567 + Main St.","boundingBox":[0.8764,1.8292,1.725,1.8292,1.725,1.9958,0.8764,1.9958],"elements":null},"confidence":1.0},{"key":{"text":"Redmond, + WA","boundingBox":[6.0028,1.8792,6.9819,1.8792,6.9819,2.0458,6.0028,2.0458],"elements":null},"value":{"text":"555-555-5555","boundingBox":[6.0028,2.0986,6.9472,2.0986,6.9472,2.2653,6.0028,2.2653],"elements":null},"confidence":1.0},{"key":{"text":"Redmond, + WA","boundingBox":[0.8764,2.0486,1.8569,2.0486,1.8569,2.2153,0.8764,2.2153],"elements":null},"value":{"text":"555-555-5555","boundingBox":[0.8764,2.2694,1.8222,2.2694,1.8222,2.4361,0.8764,2.4361],"elements":null},"confidence":0.29},{"key":{"text":"Subtotal:","boundingBox":[5.5028,4.8861,6.1347,4.8861,6.1347,5.0528,5.5028,5.0528],"elements":null},"value":{"text":"300.00","boundingBox":[6.1722,4.8861,6.6361,4.8861,6.6361,5.0528,6.1722,5.0528],"elements":null},"confidence":1.0},{"key":{"text":"Tax:","boundingBox":[5.5028,5.1069,5.7917,5.1069,5.7917,5.2736,5.5028,5.2736],"elements":null},"value":{"text":"30.00","boundingBox":[5.8292,5.1069,6.2069,5.1069,6.2069,5.2736,5.8292,5.2736],"elements":null},"confidence":1.0},{"key":{"text":"Tip:","boundingBox":[5.5028,5.3264,5.7611,5.3264,5.7611,5.4931,5.5028,5.4931],"elements":null},"value":{"text":"100.00","boundingBox":[5.7986,5.3264,6.2639,5.3264,6.2639,5.4931,5.7986,5.4931],"elements":null},"confidence":1.0},{"key":{"text":"Total:","boundingBox":[5.5028,5.5472,5.9014,5.5472,5.9014,5.7139,5.5028,5.7139],"elements":null},"value":{"text":"430.00","boundingBox":[5.9389,5.5472,6.4028,5.5472,6.4028,5.7139,5.9389,5.7139],"elements":null},"confidence":1.0},{"key":{"text":"Signature:","boundingBox":[1.0,6.6431,1.7083,6.6431,1.7083,6.8097,1.0,6.8097],"elements":null},"value":{"text":"____Bilbo + Baggins__________","boundingBox":[1.7472,6.6431,3.8333,6.6431,3.8333,6.8097,1.7472,6.8097],"elements":null},"confidence":1.0},{"key":{"text":"__Tokens__1","boundingBox":null,"elements":null},"value":{"text":"Company + A Invoice","boundingBox":[0.8764,1.1014,2.3875,1.1014,2.3875,1.2958,0.8764,1.2958],"elements":null},"confidence":1.0}],"tables":[{"rows":8,"columns":3,"cells":[{"text":"Item","rowIndex":0,"columnIndex":0,"boundingBox":[1.0806,2.9833,1.3958,2.9833,1.3958,3.15,1.0806,3.15],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":true,"isFooter":false},{"text":"Quantity","rowIndex":0,"columnIndex":1,"boundingBox":[3.2444,2.9833,3.8389,2.9833,3.8389,3.15,3.2444,3.15],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":true,"isFooter":false},{"text":"Price","rowIndex":0,"columnIndex":2,"boundingBox":[5.4083,2.9833,5.7458,2.9833,5.7458,3.15,5.4083,3.15],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":true,"isFooter":false},{"text":"A","rowIndex":1,"columnIndex":0,"boundingBox":[1.0806,3.1931,1.1764,3.1931,1.1764,3.3597,1.0806,3.3597],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"1","rowIndex":1,"columnIndex":1,"boundingBox":[3.2444,3.1931,3.3292,3.1931,3.3292,3.3597,3.2444,3.3597],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"10.99","rowIndex":1,"columnIndex":2,"boundingBox":[5.4083,3.1931,5.7875,3.1931,5.7875,3.3597,5.4083,3.3597],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"B","rowIndex":2,"columnIndex":0,"boundingBox":[1.0806,3.4056,1.1708,3.4056,1.1708,3.5722,1.0806,3.5722],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"2","rowIndex":2,"columnIndex":1,"boundingBox":[3.2444,3.4056,3.3292,3.4056,3.3292,3.5722,3.2444,3.5722],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"14.67","rowIndex":2,"columnIndex":2,"boundingBox":[5.4083,3.4056,5.7861,3.4056,5.7861,3.5722,5.4083,3.5722],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"C","rowIndex":3,"columnIndex":0,"boundingBox":[1.0806,3.6167,1.1694,3.6167,1.1694,3.7833,1.0806,3.7833],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"4","rowIndex":3,"columnIndex":1,"boundingBox":[3.2444,3.6167,3.3292,3.6167,3.3292,3.7833,3.2444,3.7833],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"15.66","rowIndex":3,"columnIndex":2,"boundingBox":[5.4083,3.6167,5.7861,3.6167,5.7861,3.7833,5.4083,3.7833],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"D","rowIndex":4,"columnIndex":0,"boundingBox":[1.0806,3.8264,1.1833,3.8264,1.1833,3.9931,1.0806,3.9931],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"1","rowIndex":4,"columnIndex":1,"boundingBox":[3.2444,3.8264,3.3292,3.8264,3.3292,3.9931,3.2444,3.9931],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"12.00","rowIndex":4,"columnIndex":2,"boundingBox":[5.4083,3.8264,5.7861,3.8264,5.7861,3.9931,5.4083,3.9931],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"E","rowIndex":5,"columnIndex":0,"boundingBox":[1.0806,4.0361,1.1611,4.0361,1.1611,4.2028,1.0806,4.2028],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"4","rowIndex":5,"columnIndex":1,"boundingBox":[3.2444,4.0361,3.3292,4.0361,3.3292,4.2028,3.2444,4.2028],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"10.00","rowIndex":5,"columnIndex":2,"boundingBox":[5.4083,4.0361,5.7875,4.0361,5.7875,4.2028,5.4083,4.2028],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"F","rowIndex":6,"columnIndex":0,"boundingBox":[1.0806,4.2458,1.1569,4.2458,1.1569,4.4125,1.0806,4.4125],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"6","rowIndex":6,"columnIndex":1,"boundingBox":[3.2444,4.2458,3.3292,4.2458,3.3292,4.4125,3.2444,4.4125],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"12.00","rowIndex":6,"columnIndex":2,"boundingBox":[5.4083,4.2458,5.7861,4.2458,5.7861,4.4125,5.4083,4.4125],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"G","rowIndex":7,"columnIndex":0,"boundingBox":[1.0806,4.4569,1.1861,4.4569,1.1861,4.6236,1.0806,4.6236],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"8","rowIndex":7,"columnIndex":1,"boundingBox":[3.2444,4.4569,3.3292,4.4569,3.3292,4.6236,3.2444,4.6236],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"22.00","rowIndex":7,"columnIndex":2,"boundingBox":[5.4083,4.4569,5.7875,4.4569,5.7875,4.6236,5.4083,4.6236],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false}]}],"clusterId":0},{"page":3,"keyValuePairs":[{"key":{"text":"Invoice + For:","boundingBox":[6.0028,1.0431,7.0528,1.0431,7.0528,1.2667,6.0028,1.2667],"elements":null},"value":{"text":"Frodo + Baggins 123 Hobbit Lane","boundingBox":[6.0028,1.4389,7.1083,1.4389,7.1083,1.8264,6.0028,1.8264],"elements":null},"confidence":1.0},{"key":{"text":"Address:","boundingBox":[0.8764,1.4681,1.5778,1.4681,1.5778,1.6625,0.8764,1.6625],"elements":null},"value":{"text":"567 + Main St.","boundingBox":[0.8764,1.8292,1.725,1.8292,1.725,1.9958,0.8764,1.9958],"elements":null},"confidence":1.0},{"key":{"text":"Redmond, + WA","boundingBox":[6.0028,1.8792,6.9819,1.8792,6.9819,2.0458,6.0028,2.0458],"elements":null},"value":{"text":"555-555-5555","boundingBox":[6.0028,2.0986,6.9472,2.0986,6.9472,2.2653,6.0028,2.2653],"elements":null},"confidence":1.0},{"key":{"text":"Redmond, + WA","boundingBox":[0.8764,2.0486,1.8569,2.0486,1.8569,2.2153,0.8764,2.2153],"elements":null},"value":{"text":"555-555-5555","boundingBox":[0.8764,2.2694,1.8222,2.2694,1.8222,2.4361,0.8764,2.4361],"elements":null},"confidence":0.29},{"key":{"text":"Subtotal:","boundingBox":[5.5028,4.8861,6.1347,4.8861,6.1347,5.0528,5.5028,5.0528],"elements":null},"value":{"text":"3000.00","boundingBox":[6.1722,4.8861,6.7208,4.8861,6.7208,5.0528,6.1722,5.0528],"elements":null},"confidence":1.0},{"key":{"text":"Tax:","boundingBox":[5.5028,5.1069,5.7917,5.1069,5.7917,5.2736,5.5028,5.2736],"elements":null},"value":{"text":"300.00","boundingBox":[5.8292,5.1069,6.2931,5.1069,6.2931,5.2736,5.8292,5.2736],"elements":null},"confidence":1.0},{"key":{"text":"Tip:","boundingBox":[5.5028,5.3264,5.7611,5.3264,5.7611,5.4931,5.5028,5.4931],"elements":null},"value":{"text":"1000.00","boundingBox":[5.7986,5.3264,6.3472,5.3264,6.3472,5.4931,5.7986,5.4931],"elements":null},"confidence":1.0},{"key":{"text":"Total:","boundingBox":[5.5028,5.5472,5.9014,5.5472,5.9014,5.7139,5.5028,5.7139],"elements":null},"value":{"text":"4300.00","boundingBox":[5.9389,5.5472,6.4875,5.5472,6.4875,5.7139,5.9389,5.7139],"elements":null},"confidence":1.0},{"key":{"text":"Signature:","boundingBox":[1.0,6.6431,1.7083,6.6431,1.7083,6.8097,1.0,6.8097],"elements":null},"value":{"text":"____Frodo + Baggins__________","boundingBox":[1.7472,6.6431,3.8833,6.6431,3.8833,6.8097,1.7472,6.8097],"elements":null},"confidence":1.0},{"key":{"text":"__Tokens__1","boundingBox":null,"elements":null},"value":{"text":"Company + B Invoice","boundingBox":[0.8764,1.1014,2.3833,1.1014,2.3833,1.2958,0.8764,1.2958],"elements":null},"confidence":1.0}],"tables":[{"rows":8,"columns":3,"cells":[{"text":"Item","rowIndex":0,"columnIndex":0,"boundingBox":[1.0806,2.9833,1.3958,2.9833,1.3958,3.15,1.0806,3.15],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":true,"isFooter":false},{"text":"Quantity","rowIndex":0,"columnIndex":1,"boundingBox":[3.2444,2.9833,3.8389,2.9833,3.8389,3.15,3.2444,3.15],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":true,"isFooter":false},{"text":"Price","rowIndex":0,"columnIndex":2,"boundingBox":[5.4083,2.9833,5.7458,2.9833,5.7458,3.15,5.4083,3.15],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":true,"isFooter":false},{"text":"A","rowIndex":1,"columnIndex":0,"boundingBox":[1.0806,3.1931,1.1764,3.1931,1.1764,3.3597,1.0806,3.3597],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"10","rowIndex":1,"columnIndex":1,"boundingBox":[3.2444,3.1931,3.4125,3.1931,3.4125,3.3597,3.2444,3.3597],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"100.99","rowIndex":1,"columnIndex":2,"boundingBox":[5.4083,3.1931,5.8708,3.1931,5.8708,3.3597,5.4083,3.3597],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"B","rowIndex":2,"columnIndex":0,"boundingBox":[1.0806,3.4056,1.1708,3.4056,1.1708,3.5722,1.0806,3.5722],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"20","rowIndex":2,"columnIndex":1,"boundingBox":[3.2444,3.4056,3.4125,3.4056,3.4125,3.5722,3.2444,3.5722],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"140.67","rowIndex":2,"columnIndex":2,"boundingBox":[5.4083,3.4056,5.8694,3.4056,5.8694,3.5722,5.4083,3.5722],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"C","rowIndex":3,"columnIndex":0,"boundingBox":[1.0806,3.6167,1.1694,3.6167,1.1694,3.7833,1.0806,3.7833],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"40","rowIndex":3,"columnIndex":1,"boundingBox":[3.2444,3.6167,3.4125,3.6167,3.4125,3.7833,3.2444,3.7833],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"150.66","rowIndex":3,"columnIndex":2,"boundingBox":[5.4083,3.6167,5.8694,3.6167,5.8694,3.7833,5.4083,3.7833],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"D","rowIndex":4,"columnIndex":0,"boundingBox":[1.0806,3.8264,1.1833,3.8264,1.1833,3.9931,1.0806,3.9931],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"10","rowIndex":4,"columnIndex":1,"boundingBox":[3.2444,3.8264,3.4125,3.8264,3.4125,3.9931,3.2444,3.9931],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"120.00","rowIndex":4,"columnIndex":2,"boundingBox":[5.4083,3.8264,5.8694,3.8264,5.8694,3.9931,5.4083,3.9931],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"E","rowIndex":5,"columnIndex":0,"boundingBox":[1.0806,4.0361,1.1611,4.0361,1.1611,4.2028,1.0806,4.2028],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"40","rowIndex":5,"columnIndex":1,"boundingBox":[3.2444,4.0361,3.4125,4.0361,3.4125,4.2028,3.2444,4.2028],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"100.00","rowIndex":5,"columnIndex":2,"boundingBox":[5.4083,4.0361,5.8708,4.0361,5.8708,4.2028,5.4083,4.2028],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"F","rowIndex":6,"columnIndex":0,"boundingBox":[1.0806,4.2458,1.1569,4.2458,1.1569,4.4125,1.0806,4.4125],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"60","rowIndex":6,"columnIndex":1,"boundingBox":[3.2444,4.2458,3.4125,4.2458,3.4125,4.4125,3.2444,4.4125],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"120.00","rowIndex":6,"columnIndex":2,"boundingBox":[5.4083,4.2458,5.8694,4.2458,5.8694,4.4125,5.4083,4.4125],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"G","rowIndex":7,"columnIndex":0,"boundingBox":[1.0806,4.4569,1.1861,4.4569,1.1861,4.6236,1.0806,4.6236],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"80","rowIndex":7,"columnIndex":1,"boundingBox":[3.2444,4.4569,3.4125,4.4569,3.4125,4.6236,3.2444,4.6236],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"220.00","rowIndex":7,"columnIndex":2,"boundingBox":[5.4083,4.4569,5.8708,4.4569,5.8708,4.6236,5.4083,4.6236],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false}]}],"clusterId":0}],"documentResults":[],"errors":[]}}' + headers: + apim-request-id: + - 02a1be55-4dab-426f-ad76-bfab4977d215 + content-type: + - application/json; charset=utf-8 + date: + - Thu, 23 Apr 2020 23:19:34 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + transfer-encoding: + - chunked + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '53' + status: + code: 200 + message: OK +version: 1 diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_custom_forms.test_custom_form_multipage_unlabeled_transform.yaml b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_custom_forms.test_custom_form_multipage_unlabeled_transform.yaml new file mode 100644 index 000000000000..e905b72728c3 --- /dev/null +++ b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_custom_forms.test_custom_form_multipage_unlabeled_transform.yaml @@ -0,0 +1,2164 @@ +interactions: +- request: + body: 'b''{"source": "containersasurl", "sourceFilter": {"prefix": "", "includeSubFolders": + false}, "useLabelFile": false}''' + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '301' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models + response: + body: + string: '' + headers: + apim-request-id: + - 407ac53f-a311-4b1d-948f-fb1aeaf9fd99 + content-length: + - '0' + date: + - Thu, 30 Apr 2020 23:04:04 GMT + location: + - https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/01902db6-41d7-4970-b21f-348997464824 + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '109' + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/01902db6-41d7-4970-b21f-348997464824?includeKeys=true + response: + body: + string: '{"modelInfo":{"modelId":"01902db6-41d7-4970-b21f-348997464824","status":"creating","createdDateTime":"2020-04-30T23:04:05Z","lastUpdatedDateTime":"2020-04-30T23:04:05Z"}}' + headers: + apim-request-id: + - b3a8125b-589b-49b0-a598-40015566004f + content-type: + - application/json; charset=utf-8 + date: + - Thu, 30 Apr 2020 23:04:09 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + transfer-encoding: + - chunked + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '179' + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/01902db6-41d7-4970-b21f-348997464824?includeKeys=true + response: + body: + string: '{"modelInfo":{"modelId":"01902db6-41d7-4970-b21f-348997464824","status":"creating","createdDateTime":"2020-04-30T23:04:05Z","lastUpdatedDateTime":"2020-04-30T23:04:05Z"}}' + headers: + apim-request-id: + - 196559ad-1f0e-4ca6-bbee-4a30c9c04f18 + content-type: + - application/json; charset=utf-8 + date: + - Thu, 30 Apr 2020 23:04:14 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + transfer-encoding: + - chunked + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '42' + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/01902db6-41d7-4970-b21f-348997464824?includeKeys=true + response: + body: + string: '{"modelInfo":{"modelId":"01902db6-41d7-4970-b21f-348997464824","status":"ready","createdDateTime":"2020-04-30T23:04:05Z","lastUpdatedDateTime":"2020-04-30T23:04:17Z"},"keys":{"clusters":{"0":["Address:","Invoice + For:","Redmond, WA","Signature:","Subtotal:","Tax:","Tip:","Total:"]}},"trainResult":{"trainingDocuments":[{"documentName":"multipage_invoice1.pdf","pages":3,"errors":[],"status":"succeeded"},{"documentName":"multipage_invoice2.pdf","pages":3,"errors":[],"status":"succeeded"},{"documentName":"multipage_invoice3.pdf","pages":3,"errors":[],"status":"succeeded"},{"documentName":"multipage_invoice4.pdf","pages":3,"errors":[],"status":"succeeded"},{"documentName":"multipage_invoice5.pdf","pages":3,"errors":[],"status":"succeeded"}],"errors":[]}}' + headers: + apim-request-id: + - 6f36d7bc-d594-42ad-adc8-0e8ae331a681 + content-type: + - application/json; charset=utf-8 + date: + - Thu, 30 Apr 2020 23:04:20 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + transfer-encoding: + - chunked + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '193' + status: + code: 200 + message: OK +- request: + body: !!binary | + JVBERi0xLjcNCiW1tbW1DQoxIDAgb2JqDQo8PC9UeXBlL0NhdGFsb2cvUGFnZXMgMiAwIFIvTGFu + Zyhlbi1VUykgL1N0cnVjdFRyZWVSb290IDE2IDAgUi9NYXJrSW5mbzw8L01hcmtlZCB0cnVlPj4v + TWV0YWRhdGEgMjUzIDAgUi9WaWV3ZXJQcmVmZXJlbmNlcyAyNTQgMCBSPj4NCmVuZG9iag0KMiAw + IG9iag0KPDwvVHlwZS9QYWdlcy9Db3VudCAzL0tpZHNbIDMgMCBSIDExIDAgUiAxMyAwIFJdID4+ + DQplbmRvYmoNCjMgMCBvYmoNCjw8L1R5cGUvUGFnZS9QYXJlbnQgMiAwIFIvUmVzb3VyY2VzPDwv + Rm9udDw8L0YxIDUgMCBSL0YyIDkgMCBSPj4vRXh0R1N0YXRlPDwvR1M3IDcgMCBSL0dTOCA4IDAg + Uj4+L1Byb2NTZXRbL1BERi9UZXh0L0ltYWdlQi9JbWFnZUMvSW1hZ2VJXSA+Pi9NZWRpYUJveFsg + MCAwIDYxMiA3OTJdIC9Db250ZW50cyA0IDAgUi9Hcm91cDw8L1R5cGUvR3JvdXAvUy9UcmFuc3Bh + cmVuY3kvQ1MvRGV2aWNlUkdCPj4vVGFicy9TL1N0cnVjdFBhcmVudHMgMD4+DQplbmRvYmoNCjQg + MCBvYmoNCjw8L0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggMjg2ND4+DQpzdHJlYW0NCnicvZxZ + bxw3EsffBeg79ONMsGrzPhZBAMvXerEGkrWAPBiLwJYPGIilXVubbL79VrHvYRfZ3cOOAI2OLvJf + LFb/SPbB6tGP1fffP3r15OXTiv3wQ3X99En1n8sLVjP88lxUrDLwab2ovn64vPj5u+ru8uL65vLi + 0XNecVMzV918vLzgYMcqXikpam4ry1TtTHXzBexevLbVp29QZ/Up/OXav15cXrw5vLz77agP9/D9 + +WgOt/DzA3xXx39VN3+/vHgGOj9dXpzlkAOH+Nih4Ecr//x4JYP6V1D/azlVzVzNDKV60rzq2asn + VTXqCL6+I8RcLxjrayUi+eujgmhf+cOv+PEuxN+CUyYcefsJ/wsfrjG6g+PfNkfmxC9vau8pv3Jh + EaXCYmSt9Yl8dQV1OlXd3L45cCFLNVizmvt5xajBZ6iI2klK5W/HK25CF2NXvyulCX0oSM2QOQ/H + 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 + fvW3lN9NoKP8fgIt5fcTaCkfCZSmfCSw09UI6BG/5zmhhK3NXNLi2yxyv6sRhuO2Ndl2xSReu18C + SWJj63VjgCulDJhYt8bwpZRleJt/hbRauxkZKS1YnXrQP1Zeu/sWqczwsaPoQiXOyj7h6XqHU7Nw + 4j5Agofrl1/DFhRHCafxlSw3vgmNdx9P/alYcBMnVb/AV7HR2uNeVHHjrz9DKxFR4SLtfXVUh+u3 + 2N4QjPCBobkrNuZyvAMV+7FxL7PZQV3OCfxy5A4iij0481lKHXfbcTPqJ0nTd4eAs8CYcIeT1VbQ + t+LU2ltxVP7jrMGt4o1aeyuOlIaffhVkVamLzULb9D3+WLrUlRyhOO7ztEa61PJCAGLMOulS46lg + IcPXSJcaULmXuJ3hGulSIyq3DleUK6R1qRGVG5hGrGq1LjWkcmXwYaE10qVoxiXD+eoa6VI041zj + BgZrpEvRzPuam1Ug1aVohk8vi3XSHc04bmeEj9VUhsnwOhCMljA1gRHb9AMfw80Nf0dZqDxp/Xp4 + TA7MvFJgaGoPJlbVsrkCYqnn5PSIc8tK9/fXAS7TyBgJQ4uqLAzmohtYP/Xhid+vPlfPwtTZkXr3 + OJv90lxjdDiRlTildYc/cAPfx2Hvz5f4Gf75G0z37rvp7y0+uBxvgnWuuxwyB5hIuJvNHretowTd + UQYnabEnj3HPzvf9XP8bLHLV4Vu8cj/XCw7/gnk/4UU2Hn5z4s4HQ3MsdeqGPnb7VjRbEL8K9ww/ + Q0xY2N8U//f6AVcH8UOgZ7nFhcKt+Qi3sps3ssLRkbpW8S6K/XayZvFmr+cFRcraSsqbbFB44aDg + vdjTnS1ze6SeJew4LTy3Vep5YgoWKaRY4ZZ5DoOxWxLSwhkFY6rQf1JEOZRypFhuD9ozzxzgiKSk + iee8/w9kOwx8DQplbmRzdHJlYW0NCmVuZG9iag0KNSAwIG9iag0KPDwvVHlwZS9Gb250L1N1YnR5 + cGUvVHJ1ZVR5cGUvTmFtZS9GMS9CYXNlRm9udC9CQ0RFRUUrQ2FsaWJyaS9FbmNvZGluZy9XaW5B + bnNpRW5jb2RpbmcvRm9udERlc2NyaXB0b3IgNiAwIFIvRmlyc3RDaGFyIDMyL0xhc3RDaGFyIDEy + MS9XaWR0aHMgMjQ5IDAgUj4+DQplbmRvYmoNCjYgMCBvYmoNCjw8L1R5cGUvRm9udERlc2NyaXB0 + b3IvRm9udE5hbWUvQkNERUVFK0NhbGlicmkvRmxhZ3MgMzIvSXRhbGljQW5nbGUgMC9Bc2NlbnQg + NzUwL0Rlc2NlbnQgLTI1MC9DYXBIZWlnaHQgNzUwL0F2Z1dpZHRoIDUyMS9NYXhXaWR0aCAxNzQz + L0ZvbnRXZWlnaHQgNDAwL1hIZWlnaHQgMjUwL1N0ZW1WIDUyL0ZvbnRCQm94WyAtNTAzIC0yNTAg + MTI0MCA3NTBdIC9Gb250RmlsZTIgMjUwIDAgUj4+DQplbmRvYmoNCjcgMCBvYmoNCjw8L1R5cGUv + RXh0R1N0YXRlL0JNL05vcm1hbC9jYSAxPj4NCmVuZG9iag0KOCAwIG9iag0KPDwvVHlwZS9FeHRH + U3RhdGUvQk0vTm9ybWFsL0NBIDE+Pg0KZW5kb2JqDQo5IDAgb2JqDQo8PC9UeXBlL0ZvbnQvU3Vi + dHlwZS9UcnVlVHlwZS9OYW1lL0YyL0Jhc2VGb250L0JDREZFRStDYWxpYnJpLUJvbGQvRW5jb2Rp + bmcvV2luQW5zaUVuY29kaW5nL0ZvbnREZXNjcmlwdG9yIDEwIDAgUi9GaXJzdENoYXIgMzIvTGFz + dENoYXIgMTIwL1dpZHRocyAyNTEgMCBSPj4NCmVuZG9iag0KMTAgMCBvYmoNCjw8L1R5cGUvRm9u + dERlc2NyaXB0b3IvRm9udE5hbWUvQkNERkVFK0NhbGlicmktQm9sZC9GbGFncyAzMi9JdGFsaWNB + bmdsZSAwL0FzY2VudCA3NTAvRGVzY2VudCAtMjUwL0NhcEhlaWdodCA3NTAvQXZnV2lkdGggNTM2 + L01heFdpZHRoIDE3ODEvRm9udFdlaWdodCA3MDAvWEhlaWdodCAyNTAvU3RlbVYgNTMvRm9udEJC + b3hbIC01MTkgLTI1MCAxMjYzIDc1MF0gL0ZvbnRGaWxlMiAyNTIgMCBSPj4NCmVuZG9iag0KMTEg + MCBvYmoNCjw8L1R5cGUvUGFnZS9QYXJlbnQgMiAwIFIvUmVzb3VyY2VzPDwvRm9udDw8L0YyIDkg + MCBSPj4vRXh0R1N0YXRlPDwvR1M3IDcgMCBSL0dTOCA4IDAgUj4+L1Byb2NTZXRbL1BERi9UZXh0 + L0ltYWdlQi9JbWFnZUMvSW1hZ2VJXSA+Pi9NZWRpYUJveFsgMCAwIDYxMiA3OTJdIC9Db250ZW50 + cyAxMiAwIFIvR3JvdXA8PC9UeXBlL0dyb3VwL1MvVHJhbnNwYXJlbmN5L0NTL0RldmljZVJHQj4+ + L1RhYnMvUy9TdHJ1Y3RQYXJlbnRzIDE+Pg0KZW5kb2JqDQoxMiAwIG9iag0KPDwvRmlsdGVyL0Zs + YXRlRGVjb2RlL0xlbmd0aCA0NzY+Pg0Kc3RyZWFtDQp4nK2Yu2ocQRBF84H5hwplB7Vdj36BUKCV + LGwQ2GjBgVEoKZLA9v+Dy4sDh6rmTjDQzNCne6BO3xo6fKXLy8P98fMNlasrur450s99K1z+XlOU + CrW496n062nfvn+kt327Pu3b4ZNSPDg975vES4WEunJRp14Ge6PTa7x099Dp5XdMSC/n0fg3utu3 + Hxf04ZFOX/btNqb7tm90e38k+m9BAlpQm8pNzws6r+OdeEXhe+M+0nhD4VvhKWm8o/Be2fL4isLr + ZO9pfEPhxbhZGt9B+Do795nGDxR+CM/87icK3xqX/O4FJcJaC2vN81Heq+bs+dITlPiqDB4LfJT5 + alGe+doXlPp8dF7YPkp93oW15fko93mt7PljV1Dyc5tc8+euoOznatw9z0fpzyOHyULsQenPInZp + /vsrSn8Wucvz319R+rMIXvnyU5T9zJ37Ah9lP9PB+cNXUfazSF5lYfso+2lEL12oPpT9NLLXStOD + sp+2utL1KMp+6pNnvvoNZT+N8FXy4cNQ9tMIX5rP3oayn0b4snz9G0p/MhrXfPg2lP6kR9u9wEf5 + TyJ9LTQ/hvKfRPpaaH4M5T+J9LXQ/BjKf1I614X6R/lvCveF9OWwv4CVR3uff/8AMWTgdQ0KZW5k + c3RyZWFtDQplbmRvYmoNCjEzIDAgb2JqDQo8PC9UeXBlL1BhZ2UvUGFyZW50IDIgMCBSL1Jlc291 + cmNlczw8L0ZvbnQ8PC9GMSA1IDAgUi9GMiA5IDAgUj4+L0V4dEdTdGF0ZTw8L0dTNyA3IDAgUi9H + UzggOCAwIFI+Pi9Qcm9jU2V0Wy9QREYvVGV4dC9JbWFnZUIvSW1hZ2VDL0ltYWdlSV0gPj4vTWVk + aWFCb3hbIDAgMCA2MTIgNzkyXSAvQ29udGVudHMgMTQgMCBSL0dyb3VwPDwvVHlwZS9Hcm91cC9T + L1RyYW5zcGFyZW5jeS9DUy9EZXZpY2VSR0I+Pi9UYWJzL1MvU3RydWN0UGFyZW50cyAyPj4NCmVu + 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 + mxWDaazuLffHZf/XyULlydKvhoeloFgtJRTUpHahL93+mltBGOxpKTm6Y7Lu6v7GpCD11DNaQExK + 6AdgSOeZT717wkML9upBhyuL6n11mfRLsw1gXRIVLp3a0+/RA+T32sKAIVRhtoQn9+zXM8QITO+A + 9glKLNq+F87X3ru/nWXj+ea8/ouJHAe52xbDiDYr2x4OQ5UX8RyPeO0OBw4teexOr37fA/vb+QJ0 + +xYuIfZaweC/AN6IFYv+0NkZIO4MmKuL8ERtde5O1TH+MO+X/kbPZ/AJ9Sd9u/979eA4Gd6x3mUW + g6WWMJhZi94xhb0jFJHhecL9wep69bHn+5wihEsfiDWLTrGFneJuoM3PeF46LXyXMMzZUOHYoeH7 + xGCtb1Gxwi2rGcxq7BqXFo4omJxw9Qd5lMFVFhVbOo1958iBPCIwaeRJ4/8DtXV3Ww0KZW5kc3Ry + ZWFtDQplbmRvYmoNCjE1IDAgb2JqDQo8PC9BdXRob3IoS3Jpc3RhIFByYXRpY28pIC9DcmVhdG9y + KP7/AE0AaQBjAHIAbwBzAG8AZgB0AK4AIABXAG8AcgBkACAAZgBvAHIAIABPAGYAZgBpAGMAZQAg + ADMANgA1KSAvQ3JlYXRpb25EYXRlKEQ6MjAyMDA0MjIxNjQ1MjktMDcnMDAnKSAvTW9kRGF0ZShE + OjIwMjAwNDIyMTY0NTI5LTA3JzAwJykgL1Byb2R1Y2VyKP7/AE0AaQBjAHIAbwBzAG8AZgB0AK4A + IABXAG8AcgBkACAAZgBvAHIAIABPAGYAZgBpAGMAZQAgADMANgA1KSA+Pg0KZW5kb2JqDQoyMyAw + IG9iag0KPDwvVHlwZS9PYmpTdG0vTiAyMzIvRmlyc3QgMjAzNS9GaWx0ZXIvRmxhdGVEZWNvZGUv + TGVuZ3RoIDMwNTE+Pg0Kc3RyZWFtDQp4nO1b24ocyRF9N/gf8g+mIu8Jy4Jt7WKzrBCSwA/CDyOp + LQ07M72MWiD9vc+pipyetTOz1Gn7weCHmbrG/UTkpaKtmMXYYIIYG40s2dhkJOIezsQaW3DfG7cY + J9FYnMWMU+NjMM6CLBrnTIjJOG+i4FkwMRa8ZpIFUTIp4W1rsrXGi8nJGe9NAUPvTMnkBLEuGx9w + LLi9GBEPfsWIBcOAawuOHtfOigkWx5SpsXiwCR7HnExwRgKIfMaxRBNoB/QK4J+kmAD6lHAfzzOs + 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 + o7YHauOettT9bxfFC374xVj+v4b+R2qoOrMW0tkCqt2Sut9ed8Hr1nDdsK3bqHVDsm4T1s27ug1W + N6fqllHdfKlbInWjoi7560K8Lo/rQrMu/+qirC5v6qKjLgX+W4W/fs361q9fDMY/AFTdMPANCmVu + ZHN0cmVhbQ0KZW5kb2JqDQoyNDkgMCBvYmoNClsgMjI2IDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAy + NTAgMzA2IDI1MiAwIDUwNyA1MDcgNTA3IDUwNyA1MDcgNTA3IDUwNyA1MDcgNTA3IDUwNyAyNjgg + MCAwIDAgMCAwIDAgNTc5IDU0NCA1MzMgNjE1IDQ4OCA0NTkgNjMxIDYyMyAyNTIgMCAwIDQyMCA4 + NTUgMCAwIDUxNyA2NzMgNTQzIDQ1OSAwIDAgMCA4OTAgMCAwIDAgMCAwIDAgMCAwIDAgNDc5IDUy + NSA0MjMgNTI1IDQ5OCAwIDQ3MSAwIDIzMCAwIDAgMjMwIDc5OSA1MjUgNTI3IDUyNSAwIDM0OSAz + OTEgMzM1IDUyNSA0NTIgMCAwIDQ1M10gDQplbmRvYmoNCjI1MCAwIG9iag0KPDwvRmlsdGVyL0Zs + YXRlRGVjb2RlL0xlbmd0aCA1MzE4Mi9MZW5ndGgxIDEzNzU5Nj4+DQpzdHJlYW0NCnic7H0HXFTH + 2v475+zCUhaWKrLiLq6Auig2FEtklaJoLCirgA2k2LChGI0lJEZNSEy5Mb2ZnhtNsqwaMdXkphfT + e+/JjaZdzc01Ub5nzruDaDTJvfd/v3z3/9sXnvM8887Me2bmzMyZjRBIEJENFxNVFIzIL1mf7HuW + xJeZRLFJBSNOzbvntXVfkfhoNVGIb/ykrL7XPly5k0icg1oVVQsqF7/T99MUovmbicyDq5Yvc+5e + /EY20Y1fIH1/7eLZC9a+pw8kWvwCkdU9u25l7bvOlS6i228meumvc2oqq38cu9KHeJGIN2AOHNY7 + O+1HOh/prnMWLFuRPXOSG2nEm7utblFV5U2b53cjseoiFJ+8oHLF4l7W9G7In4PyzgU1yyqvOmvL + chI/yfpnL6xcUHPdoYMzSTSjfu+lixctXdZqpw3ozzRZfnF9zeK42V06Eq35GbdDP+ENGfzhP3a9 + WDAzeuhB6mghafd9tfpZya8XnTb+p0OHG8P2WQYgGUYasaFeCB0h8Wj4lp8OHdoSts+I1M46bpMe + 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 + wAKEAiGAGTANb8VVBzRAAETVAj5xBDgM/Az8BBwC/gH8CPwd+AE4CBwA/gZ8D3wHfAt8A3wN7Af2 + AV8BfwW+BL4APgc+Az4FPgE+Bj4CPgQ+AN4H3gPeBd4B3gbeAt4E3gBeB14DXgVeAV4GXgJeBF4A + ngf2As8BzwLPAE8DTwFPAk8AjwOPAY8CfwEeAR4G9gAPAQ8CDwD3A/cB9wK7gRZgF3APsBPYAWwH + /EAz4APuBu4C7gS2AVuBO4A/A7cDtwG3ArcANwM3ATcCNwBbgOuB64BrgWuAq4GrgCuBK4DLgcuA + S4HNwCXAn4CLgYuAC4ELgE3A+cB5QBNwLnAOsBHYAKyn6uGNAutfYP0LrH+B9S+w/gXWv8D6F1j/ + AutfYP0LrH+B9S+w/gXWv8D6F1j/AutfYP2LegB7gMAeILAHCOwBAnuAwB4gsAcI7AECe4DAHiCw + BwjsAQJ7gMAeILAHCOwBAnuAwB4gsAcI7AECe4DAHiCwBwjsAQJ7gMAeILAHCOwBAnuAwB4gsAcI + 7AEC619g/Qusf4G1L7D2Bda+wNoXWPsCa19g7QusfYG1L7D2/+h9+L/cyv7oBvyXGy1d2u5gJi1p + pvyFp9DriI5ccszvqUygebSUGvG1gTbRJfQQvU2zaB3UlbSFbqU/k48epqfo9d/xOy+/246sNC+g + SH0XhVAcUeuh1v1HbgVazFHtPJcgFWdyHvW02lq/Ps739ZFLWm1HWkJiKdyoa9Vegvdv4nDrIbxy + kW4dINPaRuhoo8Z3odcdufvIbceNQTGV01SaRtOpgirR/2qaQ3MxMvOpjhbQQiO1EHmzca1FaiZK + YXsx9NFSi2gxUE/LqIGW42sx9NJASuYtMdINdBq+VtBKOp1W0WpaE7ieZnhWI+d0I70CWEtn4Mmc + SWcZSjF71tHZtB5PbSOdQ+f+aurcNtVE59H5eM4X0IUn1ZuOSV2Er4vpT5gPm+lSuoyuwLy4mq45 + znu54b+KrqPrMWdk3qXwXG8omXs/PU476S66m+4xxrIKo8Yjosal1hjDxRiD1ejhunYt5vE7rW20 + 1qLvsm9NgZ6ugP+sdjWWB8ZRllyHkhyFn4OMsua4kbgIfWB9tEecutTo/1Fv+1H5Na8aj2vajczV + Rkqq470n05fRtViBN+AqR1WqG6FZXW/o9v7r2spuMdI30c10C57FbYZSzJ5boW+j27G276CttA1f + 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 + IDAgMCAwIDQ1OSAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCA0NzMgNDk1IDAgMCAwIDAgMCAwIDAg + MCAwIDAgNDk4IDAgNDk0IDUzNyAwIDUzNyA1MDMgMCA0NzQgMCAyNDYgMCAwIDI0NiAwIDUzNyA1 + MzggNTM3IDAgMzU1IDM5OSAzNDcgNTM3IDAgMCA0NTldIA0KZW5kb2JqDQoyNTIgMCBvYmoNCjw8 + L0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggMzM2MzMvTGVuZ3RoMSAxMDI3MDQ+Pg0Kc3RyZWFt + DQp4nOydCXiTVdb4z33fLM3WJl3SJU2aNk26J90otAUaulEoW6HBFgRaaLG4UYGqoAzgglhFVFzG + BUFHxwWUNIAUQUTFXdQZUccdlxnXjqjgKNDkf+570tIiuMz4jd//+XLa8/7uPffcfXsj8SkwANDj + QwZNVeWV9bcVPhsGrO2PAGqMj6t4/SnTOGBzDqBD98Qprvz1X835GoCtwlxNc85pblc9YVwHcNYN + mP7wnPMXWcseafgS4NpKAMWque1nnHPn5+WbANrHAaiizjh78dyPlhs+ArjpRYC5+rbW5pbvT198 + CZanxfKK2tCg25n4KsYxP6S2nbPowsefSy3F+KcA8zadPX9O81VvnncY4Ng76D71nOYL29Pvi7Ng + ehv6W89pXdR86yUbzge24HuMX3Zu8zmt75e/mgusoBAg96r2+QsXBUywEvuzh/u3L2ht/8H9/EKA + xU0Axg+Aj4Wi5IMVj770+KyI4YchPgy47Pzi4hc53xhzweSjb/UOUSeETUJfFQhAgvkU4Ae2V73h + 6FtHVqoTpJIGSPwmbjFlwlrQw4UgYk49uABr1X6P9QqYKsrGCrtADmHyW+QFWKSFKL4CjwgQBkKE + UhBlMlGQfQzOwB5IvQiLVfGyx0+xWsEKYH+R2qC8Q3BYgQV4mrhHHs57CtGy8OOtYS/jbL0JsfAr + RXYxrP61eX5OxE2/fZm/RBT+/0694rNQdlL7d6D9b9R/MpGNBvWvzjMM982p0q4bnCauObXvIL8G + WCm7HRp+ykfQ/3RZmB53yrRjJ8+rqMF6nzl5muwt8PxUfSeK2Hu8HJn9hHGYDxUnzXMRmAbVuQku + +zV1nkxkMnD8Ej/xWxj9q8uuhT/8Ct/aQXEljP219f1vFPGFwXPG5cS+nijsX3DWz5WLPj87tj/l + 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 + KrFHQKlmZxW8qHpfRETYMZZdos8K9Tc0bmVNGZWf8PP4qiK6kZk7D1Hp68k6+cqujnrMi0+QTUvB + 02LWgEvJpMfQvQGNGyJ9Cp8e2OiVa3QkzxGYHxUIMdPMzhyDZ2iKtYRjadyCZoFjccXgVeuxLKL/ + AfpFWhMNCmVuZHN0cmVhbQ0KZW5kb2JqDQoyNTMgMCBvYmoNCjw8L1R5cGUvTWV0YWRhdGEvU3Vi + dHlwZS9YTUwvTGVuZ3RoIDMwODQ+Pg0Kc3RyZWFtDQo8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9 + Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/Pjx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6 + bWV0YS8iIHg6eG1wdGs9IjMuMS03MDEiPgo8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cu + dzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgo8cmRmOkRlc2NyaXB0aW9uIHJkZjph + Ym91dD0iIiAgeG1sbnM6cGRmPSJodHRwOi8vbnMuYWRvYmUuY29tL3BkZi8xLjMvIj4KPHBkZjpQ + cm9kdWNlcj5NaWNyb3NvZnTCriBXb3JkIGZvciBPZmZpY2UgMzY1PC9wZGY6UHJvZHVjZXI+PC9y + ZGY6RGVzY3JpcHRpb24+CjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiICB4bWxuczpkYz0i + aHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iPgo8ZGM6Y3JlYXRvcj48cmRmOlNlcT48 + cmRmOmxpPktyaXN0YSBQcmF0aWNvPC9yZGY6bGk+PC9yZGY6U2VxPjwvZGM6Y3JlYXRvcj48L3Jk + ZjpEZXNjcmlwdGlvbj4KPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgIHhtbG5zOnhtcD0i + aHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyI+Cjx4bXA6Q3JlYXRvclRvb2w+TWljcm9zb2Z0 + wq4gV29yZCBmb3IgT2ZmaWNlIDM2NTwveG1wOkNyZWF0b3JUb29sPjx4bXA6Q3JlYXRlRGF0ZT4y + MDIwLTA0LTIyVDE2OjQ1OjI5LTA3OjAwPC94bXA6Q3JlYXRlRGF0ZT48eG1wOk1vZGlmeURhdGU+ + MjAyMC0wNC0yMlQxNjo0NToyOS0wNzowMDwveG1wOk1vZGlmeURhdGU+PC9yZGY6RGVzY3JpcHRp + b24+CjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiICB4bWxuczp4bXBNTT0iaHR0cDovL25z + LmFkb2JlLmNvbS94YXAvMS4wL21tLyI+Cjx4bXBNTTpEb2N1bWVudElEPnV1aWQ6NThCQjA4MDUt + RjY5Ri00NDBGLTgzOUItMURFMDI1NjUxREUyPC94bXBNTTpEb2N1bWVudElEPjx4bXBNTTpJbnN0 + YW5jZUlEPnV1aWQ6NThCQjA4MDUtRjY5Ri00NDBGLTgzOUItMURFMDI1NjUxREUyPC94bXBNTTpJ + bnN0YW5jZUlEPjwvcmRmOkRlc2NyaXB0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKPC9y + ZGY6UkRGPjwveDp4bXBtZXRhPjw/eHBhY2tldCBlbmQ9InciPz4NCmVuZHN0cmVhbQ0KZW5kb2Jq + DQoyNTQgMCBvYmoNCjw8L0Rpc3BsYXlEb2NUaXRsZSB0cnVlPj4NCmVuZG9iag0KMjU1IDAgb2Jq + DQo8PC9UeXBlL1hSZWYvU2l6ZSAyNTUvV1sgMSA0IDJdIC9Sb290IDEgMCBSL0luZm8gMTUgMCBS + L0lEWzwwNTA4QkI1ODlGRjYwRjQ0ODM5QjFERTAyNTY1MURFMj48MDUwOEJCNTg5RkY2MEY0NDgz + OUIxREUwMjU2NTFERTI+XSAvRmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0aCA1MDc+Pg0Kc3RyZWFt + DQp4nDXV93fPZxQH8E9sSojZGkG0tQmKGrVHFKU2tUeomrXTauy9YlMdKFV7U3vvHUWJvX7rv5B+ + 83nx3HOe17nn3Ht/fQdB5KWnR0X+mCDIYAv+C4lKD8mTFBJdJiRvASRgcki+SiExcSH5dQU7hhRK + DCk9JggyRU4XCZ7jBV7iFZ7h3eTryF5c8vsuO6KQCZmRBVmRDTmQE7nwAXIjD6LRCoVRCPmQF/kR + g4IogASUwIcogqL4CMVRDB+jJGJRGqVQBnGoiE/xCcqhLCqgPKqjMiqhKqqgGuJRB5+hBmqhJj5H + bTRCPdTFF6iPhmiAlmiCxmiGpmiB5vgSrdEGbfEV2qE9vkYHdEQndEYXdEU3dEcPfIOe6IXe6IO+ + 6If+eIMBGIhBSMRgDMG3GIrvMAzDMQIjMQqj8T3GYCzGYTwmYCImIQk/4EdMxk9IxhRMxTRMxwzM + xCzMxhzMxTzMx1ssxQIsxCIsxhKkYBmWYwVWYhVWYw3uYj1+x89Yi1+wDr/hV6RiCzZiAzbhD/yJ + zdiFrfgL27ENO7EDB7EHu7EPe3EA+3Ech3EIR/A3juEozuEkTuA0TuEszuAqLuA8LuEiruAy7uA6 + ruEmbuA2buEf3MN9PMC/eIhHSMNjPMHTSFpUSQ3DJj4jvSJVPCQqNmRGWkhK/SD4H/tbjC8NCmVu + ZHN0cmVhbQ0KZW5kb2JqDQp4cmVmDQowIDI1Ng0KMDAwMDAwMDAxNiA2NTUzNSBmDQowMDAwMDAw + MDE3IDAwMDAwIG4NCjAwMDAwMDAxNjggMDAwMDAgbg0KMDAwMDAwMDIzOCAwMDAwMCBuDQowMDAw + MDAwNTExIDAwMDAwIG4NCjAwMDAwMDM0NTAgMDAwMDAgbg0KMDAwMDAwMzYxOSAwMDAwMCBuDQow + MDAwMDAzODU5IDAwMDAwIG4NCjAwMDAwMDM5MTIgMDAwMDAgbg0KMDAwMDAwMzk2NSAwMDAwMCBu + DQowMDAwMDA0MTQwIDAwMDAwIG4NCjAwMDAwMDQzODYgMDAwMDAgbg0KMDAwMDAwNDY1MiAwMDAw + MCBuDQowMDAwMDA1MjAzIDAwMDAwIG4NCjAwMDAwMDU0NzggMDAwMDAgbg0KMDAwMDAwODU2MyAw + MDAwMCBuDQowMDAwMDAwMDE3IDY1NTM1IGYNCjAwMDAwMDAwMTggNjU1MzUgZg0KMDAwMDAwMDAx + OSA2NTUzNSBmDQowMDAwMDAwMDIwIDY1NTM1IGYNCjAwMDAwMDAwMjEgNjU1MzUgZg0KMDAwMDAw + MDAyMiA2NTUzNSBmDQowMDAwMDAwMDIzIDY1NTM1IGYNCjAwMDAwMDAwMjQgNjU1MzUgZg0KMDAw + MDAwMDAyNSA2NTUzNSBmDQowMDAwMDAwMDI2IDY1NTM1IGYNCjAwMDAwMDAwMjcgNjU1MzUgZg0K + MDAwMDAwMDAyOCA2NTUzNSBmDQowMDAwMDAwMDI5IDY1NTM1IGYNCjAwMDAwMDAwMzAgNjU1MzUg + Zg0KMDAwMDAwMDAzMSA2NTUzNSBmDQowMDAwMDAwMDMyIDY1NTM1IGYNCjAwMDAwMDAwMzMgNjU1 + MzUgZg0KMDAwMDAwMDAzNCA2NTUzNSBmDQowMDAwMDAwMDM1IDY1NTM1IGYNCjAwMDAwMDAwMzYg + NjU1MzUgZg0KMDAwMDAwMDAzNyA2NTUzNSBmDQowMDAwMDAwMDM4IDY1NTM1IGYNCjAwMDAwMDAw + MzkgNjU1MzUgZg0KMDAwMDAwMDA0MCA2NTUzNSBmDQowMDAwMDAwMDQxIDY1NTM1IGYNCjAwMDAw + MDAwNDIgNjU1MzUgZg0KMDAwMDAwMDA0MyA2NTUzNSBmDQowMDAwMDAwMDQ0IDY1NTM1IGYNCjAw + MDAwMDAwNDUgNjU1MzUgZg0KMDAwMDAwMDA0NiA2NTUzNSBmDQowMDAwMDAwMDQ3IDY1NTM1IGYN + CjAwMDAwMDAwNDggNjU1MzUgZg0KMDAwMDAwMDA0OSA2NTUzNSBmDQowMDAwMDAwMDUwIDY1NTM1 + IGYNCjAwMDAwMDAwNTEgNjU1MzUgZg0KMDAwMDAwMDA1MiA2NTUzNSBmDQowMDAwMDAwMDUzIDY1 + NTM1IGYNCjAwMDAwMDAwNTQgNjU1MzUgZg0KMDAwMDAwMDA1NSA2NTUzNSBmDQowMDAwMDAwMDU2 + IDY1NTM1IGYNCjAwMDAwMDAwNTcgNjU1MzUgZg0KMDAwMDAwMDA1OCA2NTUzNSBmDQowMDAwMDAw + MDU5IDY1NTM1IGYNCjAwMDAwMDAwNjAgNjU1MzUgZg0KMDAwMDAwMDA2MSA2NTUzNSBmDQowMDAw + MDAwMDYyIDY1NTM1IGYNCjAwMDAwMDAwNjMgNjU1MzUgZg0KMDAwMDAwMDA2NCA2NTUzNSBmDQow + MDAwMDAwMDY1IDY1NTM1IGYNCjAwMDAwMDAwNjYgNjU1MzUgZg0KMDAwMDAwMDA2NyA2NTUzNSBm + DQowMDAwMDAwMDY4IDY1NTM1IGYNCjAwMDAwMDAwNjkgNjU1MzUgZg0KMDAwMDAwMDA3MCA2NTUz + NSBmDQowMDAwMDAwMDcxIDY1NTM1IGYNCjAwMDAwMDAwNzIgNjU1MzUgZg0KMDAwMDAwMDA3MyA2 + NTUzNSBmDQowMDAwMDAwMDc0IDY1NTM1IGYNCjAwMDAwMDAwNzUgNjU1MzUgZg0KMDAwMDAwMDA3 + NiA2NTUzNSBmDQowMDAwMDAwMDc3IDY1NTM1IGYNCjAwMDAwMDAwNzggNjU1MzUgZg0KMDAwMDAw + MDA3OSA2NTUzNSBmDQowMDAwMDAwMDgwIDY1NTM1IGYNCjAwMDAwMDAwODEgNjU1MzUgZg0KMDAw + MDAwMDA4MiA2NTUzNSBmDQowMDAwMDAwMDgzIDY1NTM1IGYNCjAwMDAwMDAwODQgNjU1MzUgZg0K + MDAwMDAwMDA4NSA2NTUzNSBmDQowMDAwMDAwMDg2IDY1NTM1IGYNCjAwMDAwMDAwODcgNjU1MzUg + Zg0KMDAwMDAwMDA4OCA2NTUzNSBmDQowMDAwMDAwMDg5IDY1NTM1IGYNCjAwMDAwMDAwOTAgNjU1 + MzUgZg0KMDAwMDAwMDA5MSA2NTUzNSBmDQowMDAwMDAwMDkyIDY1NTM1IGYNCjAwMDAwMDAwOTMg + NjU1MzUgZg0KMDAwMDAwMDA5NCA2NTUzNSBmDQowMDAwMDAwMDk1IDY1NTM1IGYNCjAwMDAwMDAw + OTYgNjU1MzUgZg0KMDAwMDAwMDA5NyA2NTUzNSBmDQowMDAwMDAwMDk4IDY1NTM1IGYNCjAwMDAw + MDAwOTkgNjU1MzUgZg0KMDAwMDAwMDEwMCA2NTUzNSBmDQowMDAwMDAwMTAxIDY1NTM1IGYNCjAw + MDAwMDAxMDIgNjU1MzUgZg0KMDAwMDAwMDEwMyA2NTUzNSBmDQowMDAwMDAwMTA0IDY1NTM1IGYN + CjAwMDAwMDAxMDUgNjU1MzUgZg0KMDAwMDAwMDEwNiA2NTUzNSBmDQowMDAwMDAwMTA3IDY1NTM1 + IGYNCjAwMDAwMDAxMDggNjU1MzUgZg0KMDAwMDAwMDEwOSA2NTUzNSBmDQowMDAwMDAwMTEwIDY1 + NTM1IGYNCjAwMDAwMDAxMTEgNjU1MzUgZg0KMDAwMDAwMDExMiA2NTUzNSBmDQowMDAwMDAwMTEz + IDY1NTM1IGYNCjAwMDAwMDAxMTQgNjU1MzUgZg0KMDAwMDAwMDExNSA2NTUzNSBmDQowMDAwMDAw + MTE2IDY1NTM1IGYNCjAwMDAwMDAxMTcgNjU1MzUgZg0KMDAwMDAwMDExOCA2NTUzNSBmDQowMDAw + MDAwMTE5IDY1NTM1IGYNCjAwMDAwMDAxMjAgNjU1MzUgZg0KMDAwMDAwMDEyMSA2NTUzNSBmDQow + MDAwMDAwMTIyIDY1NTM1IGYNCjAwMDAwMDAxMjMgNjU1MzUgZg0KMDAwMDAwMDEyNCA2NTUzNSBm + DQowMDAwMDAwMTI1IDY1NTM1IGYNCjAwMDAwMDAxMjYgNjU1MzUgZg0KMDAwMDAwMDEyNyA2NTUz + NSBmDQowMDAwMDAwMTI4IDY1NTM1IGYNCjAwMDAwMDAxMjkgNjU1MzUgZg0KMDAwMDAwMDEzMCA2 + NTUzNSBmDQowMDAwMDAwMTMxIDY1NTM1IGYNCjAwMDAwMDAxMzIgNjU1MzUgZg0KMDAwMDAwMDEz + MyA2NTUzNSBmDQowMDAwMDAwMTM0IDY1NTM1IGYNCjAwMDAwMDAxMzUgNjU1MzUgZg0KMDAwMDAw + MDEzNiA2NTUzNSBmDQowMDAwMDAwMTM3IDY1NTM1IGYNCjAwMDAwMDAxMzggNjU1MzUgZg0KMDAw + MDAwMDEzOSA2NTUzNSBmDQowMDAwMDAwMTQwIDY1NTM1IGYNCjAwMDAwMDAxNDEgNjU1MzUgZg0K + MDAwMDAwMDE0MiA2NTUzNSBmDQowMDAwMDAwMTQzIDY1NTM1IGYNCjAwMDAwMDAxNDQgNjU1MzUg + Zg0KMDAwMDAwMDE0NSA2NTUzNSBmDQowMDAwMDAwMTQ2IDY1NTM1IGYNCjAwMDAwMDAxNDcgNjU1 + MzUgZg0KMDAwMDAwMDE0OCA2NTUzNSBmDQowMDAwMDAwMTQ5IDY1NTM1IGYNCjAwMDAwMDAxNTAg + NjU1MzUgZg0KMDAwMDAwMDE1MSA2NTUzNSBmDQowMDAwMDAwMTUyIDY1NTM1IGYNCjAwMDAwMDAx + NTMgNjU1MzUgZg0KMDAwMDAwMDE1NCA2NTUzNSBmDQowMDAwMDAwMTU1IDY1NTM1IGYNCjAwMDAw + MDAxNTYgNjU1MzUgZg0KMDAwMDAwMDE1NyA2NTUzNSBmDQowMDAwMDAwMTU4IDY1NTM1IGYNCjAw + MDAwMDAxNTkgNjU1MzUgZg0KMDAwMDAwMDE2MCA2NTUzNSBmDQowMDAwMDAwMTYxIDY1NTM1IGYN + CjAwMDAwMDAxNjIgNjU1MzUgZg0KMDAwMDAwMDE2MyA2NTUzNSBmDQowMDAwMDAwMTY0IDY1NTM1 + IGYNCjAwMDAwMDAxNjUgNjU1MzUgZg0KMDAwMDAwMDE2NiA2NTUzNSBmDQowMDAwMDAwMTY3IDY1 + NTM1IGYNCjAwMDAwMDAxNjggNjU1MzUgZg0KMDAwMDAwMDE2OSA2NTUzNSBmDQowMDAwMDAwMTcw + IDY1NTM1IGYNCjAwMDAwMDAxNzEgNjU1MzUgZg0KMDAwMDAwMDE3MiA2NTUzNSBmDQowMDAwMDAw + MTczIDY1NTM1IGYNCjAwMDAwMDAxNzQgNjU1MzUgZg0KMDAwMDAwMDE3NSA2NTUzNSBmDQowMDAw + MDAwMTc2IDY1NTM1IGYNCjAwMDAwMDAxNzcgNjU1MzUgZg0KMDAwMDAwMDE3OCA2NTUzNSBmDQow + MDAwMDAwMTc5IDY1NTM1IGYNCjAwMDAwMDAxODAgNjU1MzUgZg0KMDAwMDAwMDE4MSA2NTUzNSBm + DQowMDAwMDAwMTgyIDY1NTM1IGYNCjAwMDAwMDAxODMgNjU1MzUgZg0KMDAwMDAwMDE4NCA2NTUz + NSBmDQowMDAwMDAwMTg1IDY1NTM1IGYNCjAwMDAwMDAxODYgNjU1MzUgZg0KMDAwMDAwMDE4NyA2 + NTUzNSBmDQowMDAwMDAwMTg4IDY1NTM1IGYNCjAwMDAwMDAxODkgNjU1MzUgZg0KMDAwMDAwMDE5 + MCA2NTUzNSBmDQowMDAwMDAwMTkxIDY1NTM1IGYNCjAwMDAwMDAxOTIgNjU1MzUgZg0KMDAwMDAw + MDE5MyA2NTUzNSBmDQowMDAwMDAwMTk0IDY1NTM1IGYNCjAwMDAwMDAxOTUgNjU1MzUgZg0KMDAw + MDAwMDE5NiA2NTUzNSBmDQowMDAwMDAwMTk3IDY1NTM1IGYNCjAwMDAwMDAxOTggNjU1MzUgZg0K + MDAwMDAwMDE5OSA2NTUzNSBmDQowMDAwMDAwMjAwIDY1NTM1IGYNCjAwMDAwMDAyMDEgNjU1MzUg + Zg0KMDAwMDAwMDIwMiA2NTUzNSBmDQowMDAwMDAwMjAzIDY1NTM1IGYNCjAwMDAwMDAyMDQgNjU1 + MzUgZg0KMDAwMDAwMDIwNSA2NTUzNSBmDQowMDAwMDAwMjA2IDY1NTM1IGYNCjAwMDAwMDAyMDcg + NjU1MzUgZg0KMDAwMDAwMDIwOCA2NTUzNSBmDQowMDAwMDAwMjA5IDY1NTM1IGYNCjAwMDAwMDAy + MTAgNjU1MzUgZg0KMDAwMDAwMDIxMSA2NTUzNSBmDQowMDAwMDAwMjEyIDY1NTM1IGYNCjAwMDAw + MDAyMTMgNjU1MzUgZg0KMDAwMDAwMDIxNCA2NTUzNSBmDQowMDAwMDAwMjE1IDY1NTM1IGYNCjAw + MDAwMDAyMTYgNjU1MzUgZg0KMDAwMDAwMDIxNyA2NTUzNSBmDQowMDAwMDAwMjE4IDY1NTM1IGYN + CjAwMDAwMDAyMTkgNjU1MzUgZg0KMDAwMDAwMDIyMCA2NTUzNSBmDQowMDAwMDAwMjIxIDY1NTM1 + IGYNCjAwMDAwMDAyMjIgNjU1MzUgZg0KMDAwMDAwMDIyMyA2NTUzNSBmDQowMDAwMDAwMjI0IDY1 + NTM1IGYNCjAwMDAwMDAyMjUgNjU1MzUgZg0KMDAwMDAwMDIyNiA2NTUzNSBmDQowMDAwMDAwMjI3 + IDY1NTM1IGYNCjAwMDAwMDAyMjggNjU1MzUgZg0KMDAwMDAwMDIyOSA2NTUzNSBmDQowMDAwMDAw + MjMwIDY1NTM1IGYNCjAwMDAwMDAyMzEgNjU1MzUgZg0KMDAwMDAwMDIzMiA2NTUzNSBmDQowMDAw + MDAwMjMzIDY1NTM1IGYNCjAwMDAwMDAyMzQgNjU1MzUgZg0KMDAwMDAwMDIzNSA2NTUzNSBmDQow + MDAwMDAwMjM2IDY1NTM1IGYNCjAwMDAwMDAyMzcgNjU1MzUgZg0KMDAwMDAwMDIzOCA2NTUzNSBm + DQowMDAwMDAwMjM5IDY1NTM1IGYNCjAwMDAwMDAyNDAgNjU1MzUgZg0KMDAwMDAwMDI0MSA2NTUz + NSBmDQowMDAwMDAwMjQyIDY1NTM1IGYNCjAwMDAwMDAyNDMgNjU1MzUgZg0KMDAwMDAwMDI0NCA2 + NTUzNSBmDQowMDAwMDAwMjQ1IDY1NTM1IGYNCjAwMDAwMDAyNDYgNjU1MzUgZg0KMDAwMDAwMDI0 + NyA2NTUzNSBmDQowMDAwMDAwMjQ4IDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAx + MTk4NyAwMDAwMCBuDQowMDAwMDEyMjg5IDAwMDAwIG4NCjAwMDAwNjU1NjQgMDAwMDAgbg0KMDAw + MDA2NTgyMiAwMDAwMCBuDQowMDAwMDk5NTQ4IDAwMDAwIG4NCjAwMDAxMDI3MTYgMDAwMDAgbg0K + MDAwMDEwMjc2MiAwMDAwMCBuDQp0cmFpbGVyDQo8PC9TaXplIDI1Ni9Sb290IDEgMCBSL0luZm8g + MTUgMCBSL0lEWzwwNTA4QkI1ODlGRjYwRjQ0ODM5QjFERTAyNTY1MURFMj48MDUwOEJCNTg5RkY2 + MEY0NDgzOUIxREUwMjU2NTFERTI+XSA+Pg0Kc3RhcnR4cmVmDQoxMDM0NzINCiUlRU9GDQp4cmVm + DQowIDANCnRyYWlsZXINCjw8L1NpemUgMjU2L1Jvb3QgMSAwIFIvSW5mbyAxNSAwIFIvSURbPDA1 + MDhCQjU4OUZGNjBGNDQ4MzlCMURFMDI1NjUxREUyPjwwNTA4QkI1ODlGRjYwRjQ0ODM5QjFERTAy + NTY1MURFMj5dIC9QcmV2IDEwMzQ3Mi9YUmVmU3RtIDEwMjc2Mj4+DQpzdGFydHhyZWYNCjEwODc1 + Mg0KJSVFT0Y= + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '108935' + Content-Type: + - application/pdf + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/01902db6-41d7-4970-b21f-348997464824/analyze?includeTextDetails=true + response: + body: + string: '' + headers: + apim-request-id: + - 48170622-2ad3-4db6-a84c-323d81e44c2c + content-length: + - '0' + date: + - Thu, 30 Apr 2020 23:04:21 GMT + operation-location: + - https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/01902db6-41d7-4970-b21f-348997464824/analyzeresults/13b8e938-297d-425b-b22f-2f591550bd76 + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '645' + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/01902db6-41d7-4970-b21f-348997464824/analyzeresults/13b8e938-297d-425b-b22f-2f591550bd76 + response: + body: + string: '{"status":"succeeded","createdDateTime":"2020-04-30T23:04:21Z","lastUpdatedDateTime":"2020-04-30T23:04:25Z","analyzeResult":{"version":"2.0.0","readResults":[{"page":1,"angle":0,"width":8.5,"height":11.0,"unit":"inch","lines":[{"text":"Company + A Invoice","boundingBox":[0.8764,1.1014,2.3875,1.1014,2.3875,1.2958,0.8764,1.2958],"words":[{"text":"Company","boundingBox":[0.8764,1.1014,1.6236,1.1014,1.6236,1.2958,0.8764,1.2958]},{"text":"A","boundingBox":[1.6667,1.1014,1.7778,1.1014,1.7778,1.2958,1.6667,1.2958]},{"text":"Invoice","boundingBox":[1.8222,1.1014,2.3875,1.1014,2.3875,1.2958,1.8222,1.2958]}]},{"text":"Invoice + For:","boundingBox":[6.0028,1.0431,7.0528,1.0431,7.0528,1.2667,6.0028,1.2667],"words":[{"text":"Invoice","boundingBox":[6.0028,1.0431,6.6472,1.0431,6.6472,1.2667,6.0028,1.2667]},{"text":"For:","boundingBox":[6.6958,1.0431,7.0528,1.0431,7.0528,1.2667,6.6958,1.2667]}]},{"text":"Address:","boundingBox":[0.8764,1.4681,1.5778,1.4681,1.5778,1.6625,0.8764,1.6625],"words":[{"text":"Address:","boundingBox":[0.8764,1.4681,1.5778,1.4681,1.5778,1.6625,0.8764,1.6625]}]},{"text":"Bilbo + Baggins","boundingBox":[6.0028,1.4389,6.9028,1.4389,6.9028,1.6056,6.0028,1.6056],"words":[{"text":"Bilbo","boundingBox":[6.0028,1.4389,6.3472,1.4389,6.3472,1.6056,6.0028,1.6056]},{"text":"Baggins","boundingBox":[6.3819,1.4389,6.9028,1.4389,6.9028,1.6056,6.3819,1.6056]}]},{"text":"123 + Hobbit Lane","boundingBox":[6.0028,1.6597,7.1083,1.6597,7.1083,1.8264,6.0028,1.8264],"words":[{"text":"123","boundingBox":[6.0028,1.6597,6.2542,1.6597,6.2542,1.8264,6.0028,1.8264]},{"text":"Hobbit","boundingBox":[6.2889,1.6597,6.7514,1.6597,6.7514,1.8264,6.2889,1.8264]},{"text":"Lane","boundingBox":[6.7889,1.6597,7.1083,1.6597,7.1083,1.8264,6.7889,1.8264]}]},{"text":"567 + Main St.","boundingBox":[0.8764,1.8292,1.725,1.8292,1.725,1.9958,0.8764,1.9958],"words":[{"text":"567","boundingBox":[0.8764,1.8292,1.1278,1.8292,1.1278,1.9958,0.8764,1.9958]},{"text":"Main","boundingBox":[1.1639,1.8292,1.5139,1.8292,1.5139,1.9958,1.1639,1.9958]},{"text":"St.","boundingBox":[1.55,1.8292,1.725,1.8292,1.725,1.9958,1.55,1.9958]}]},{"text":"Redmond, + WA","boundingBox":[6.0028,1.8792,6.9819,1.8792,6.9819,2.0458,6.0028,2.0458],"words":[{"text":"Redmond,","boundingBox":[6.0028,1.8792,6.6972,1.8792,6.6972,2.0458,6.0028,2.0458]},{"text":"WA","boundingBox":[6.7361,1.8792,6.9819,1.8792,6.9819,2.0458,6.7361,2.0458]}]},{"text":"Redmond, + WA","boundingBox":[0.8764,2.0486,1.8569,2.0486,1.8569,2.2153,0.8764,2.2153],"words":[{"text":"Redmond,","boundingBox":[0.8764,2.0486,1.5722,2.0486,1.5722,2.2153,0.8764,2.2153]},{"text":"WA","boundingBox":[1.6097,2.0486,1.8569,2.0486,1.8569,2.2153,1.6097,2.2153]}]},{"text":"555-555-5555","boundingBox":[6.0028,2.0986,6.9472,2.0986,6.9472,2.2653,6.0028,2.2653],"words":[{"text":"555-555-5555","boundingBox":[6.0028,2.0986,6.9472,2.0986,6.9472,2.2653,6.0028,2.2653]}]},{"text":"555-555-5555","boundingBox":[0.8764,2.2694,1.8222,2.2694,1.8222,2.4361,0.8764,2.4361],"words":[{"text":"555-555-5555","boundingBox":[0.8764,2.2694,1.8222,2.2694,1.8222,2.4361,0.8764,2.4361]}]},{"text":"Item","boundingBox":[1.0806,2.9833,1.3958,2.9833,1.3958,3.15,1.0806,3.15],"words":[{"text":"Item","boundingBox":[1.0806,2.9833,1.3958,2.9833,1.3958,3.15,1.0806,3.15]}]},{"text":"Quantity","boundingBox":[3.2444,2.9833,3.8389,2.9833,3.8389,3.15,3.2444,3.15],"words":[{"text":"Quantity","boundingBox":[3.2444,2.9833,3.8389,2.9833,3.8389,3.15,3.2444,3.15]}]},{"text":"Price","boundingBox":[5.4083,2.9833,5.7458,2.9833,5.7458,3.15,5.4083,3.15],"words":[{"text":"Price","boundingBox":[5.4083,2.9833,5.7458,2.9833,5.7458,3.15,5.4083,3.15]}]},{"text":"A","boundingBox":[1.0806,3.1931,1.1764,3.1931,1.1764,3.3597,1.0806,3.3597],"words":[{"text":"A","boundingBox":[1.0806,3.1931,1.1764,3.1931,1.1764,3.3597,1.0806,3.3597]}]},{"text":"1","boundingBox":[3.2444,3.1931,3.3292,3.1931,3.3292,3.3597,3.2444,3.3597],"words":[{"text":"1","boundingBox":[3.2444,3.1931,3.3292,3.1931,3.3292,3.3597,3.2444,3.3597]}]},{"text":"10.99","boundingBox":[5.4083,3.1931,5.7875,3.1931,5.7875,3.3597,5.4083,3.3597],"words":[{"text":"10.99","boundingBox":[5.4083,3.1931,5.7875,3.1931,5.7875,3.3597,5.4083,3.3597]}]},{"text":"B","boundingBox":[1.0806,3.4056,1.1708,3.4056,1.1708,3.5722,1.0806,3.5722],"words":[{"text":"B","boundingBox":[1.0806,3.4056,1.1708,3.4056,1.1708,3.5722,1.0806,3.5722]}]},{"text":"2","boundingBox":[3.2444,3.4056,3.3292,3.4056,3.3292,3.5722,3.2444,3.5722],"words":[{"text":"2","boundingBox":[3.2444,3.4056,3.3292,3.4056,3.3292,3.5722,3.2444,3.5722]}]},{"text":"14.67","boundingBox":[5.4083,3.4056,5.7861,3.4056,5.7861,3.5722,5.4083,3.5722],"words":[{"text":"14.67","boundingBox":[5.4083,3.4056,5.7861,3.4056,5.7861,3.5722,5.4083,3.5722]}]},{"text":"C","boundingBox":[1.0806,3.6167,1.1694,3.6167,1.1694,3.7833,1.0806,3.7833],"words":[{"text":"C","boundingBox":[1.0806,3.6167,1.1694,3.6167,1.1694,3.7833,1.0806,3.7833]}]},{"text":"4","boundingBox":[3.2444,3.6167,3.3292,3.6167,3.3292,3.7833,3.2444,3.7833],"words":[{"text":"4","boundingBox":[3.2444,3.6167,3.3292,3.6167,3.3292,3.7833,3.2444,3.7833]}]},{"text":"15.66","boundingBox":[5.4083,3.6167,5.7861,3.6167,5.7861,3.7833,5.4083,3.7833],"words":[{"text":"15.66","boundingBox":[5.4083,3.6167,5.7861,3.6167,5.7861,3.7833,5.4083,3.7833]}]},{"text":"D","boundingBox":[1.0806,3.8264,1.1833,3.8264,1.1833,3.9931,1.0806,3.9931],"words":[{"text":"D","boundingBox":[1.0806,3.8264,1.1833,3.8264,1.1833,3.9931,1.0806,3.9931]}]},{"text":"1","boundingBox":[3.2444,3.8264,3.3292,3.8264,3.3292,3.9931,3.2444,3.9931],"words":[{"text":"1","boundingBox":[3.2444,3.8264,3.3292,3.8264,3.3292,3.9931,3.2444,3.9931]}]},{"text":"12.00","boundingBox":[5.4083,3.8264,5.7861,3.8264,5.7861,3.9931,5.4083,3.9931],"words":[{"text":"12.00","boundingBox":[5.4083,3.8264,5.7861,3.8264,5.7861,3.9931,5.4083,3.9931]}]},{"text":"E","boundingBox":[1.0806,4.0361,1.1611,4.0361,1.1611,4.2028,1.0806,4.2028],"words":[{"text":"E","boundingBox":[1.0806,4.0361,1.1611,4.0361,1.1611,4.2028,1.0806,4.2028]}]},{"text":"4","boundingBox":[3.2444,4.0361,3.3292,4.0361,3.3292,4.2028,3.2444,4.2028],"words":[{"text":"4","boundingBox":[3.2444,4.0361,3.3292,4.0361,3.3292,4.2028,3.2444,4.2028]}]},{"text":"10.00","boundingBox":[5.4083,4.0361,5.7875,4.0361,5.7875,4.2028,5.4083,4.2028],"words":[{"text":"10.00","boundingBox":[5.4083,4.0361,5.7875,4.0361,5.7875,4.2028,5.4083,4.2028]}]},{"text":"F","boundingBox":[1.0806,4.2458,1.1569,4.2458,1.1569,4.4125,1.0806,4.4125],"words":[{"text":"F","boundingBox":[1.0806,4.2458,1.1569,4.2458,1.1569,4.4125,1.0806,4.4125]}]},{"text":"6","boundingBox":[3.2444,4.2458,3.3292,4.2458,3.3292,4.4125,3.2444,4.4125],"words":[{"text":"6","boundingBox":[3.2444,4.2458,3.3292,4.2458,3.3292,4.4125,3.2444,4.4125]}]},{"text":"12.00","boundingBox":[5.4083,4.2458,5.7861,4.2458,5.7861,4.4125,5.4083,4.4125],"words":[{"text":"12.00","boundingBox":[5.4083,4.2458,5.7861,4.2458,5.7861,4.4125,5.4083,4.4125]}]},{"text":"G","boundingBox":[1.0806,4.4569,1.1861,4.4569,1.1861,4.6236,1.0806,4.6236],"words":[{"text":"G","boundingBox":[1.0806,4.4569,1.1861,4.4569,1.1861,4.6236,1.0806,4.6236]}]},{"text":"8","boundingBox":[3.2444,4.4569,3.3292,4.4569,3.3292,4.6236,3.2444,4.6236],"words":[{"text":"8","boundingBox":[3.2444,4.4569,3.3292,4.4569,3.3292,4.6236,3.2444,4.6236]}]},{"text":"22.00","boundingBox":[5.4083,4.4569,5.7875,4.4569,5.7875,4.6236,5.4083,4.6236],"words":[{"text":"22.00","boundingBox":[5.4083,4.4569,5.7875,4.4569,5.7875,4.6236,5.4083,4.6236]}]},{"text":"Subtotal:","boundingBox":[5.5028,4.8861,6.1347,4.8861,6.1347,5.0528,5.5028,5.0528],"words":[{"text":"Subtotal:","boundingBox":[5.5028,4.8861,6.1347,4.8861,6.1347,5.0528,5.5028,5.0528]}]},{"text":"300.00","boundingBox":[6.1722,4.8861,6.6361,4.8861,6.6361,5.0528,6.1722,5.0528],"words":[{"text":"300.00","boundingBox":[6.1722,4.8861,6.6361,4.8861,6.6361,5.0528,6.1722,5.0528]}]},{"text":"Tax:","boundingBox":[5.5028,5.1069,5.7917,5.1069,5.7917,5.2736,5.5028,5.2736],"words":[{"text":"Tax:","boundingBox":[5.5028,5.1069,5.7917,5.1069,5.7917,5.2736,5.5028,5.2736]}]},{"text":"30.00","boundingBox":[5.8292,5.1069,6.2069,5.1069,6.2069,5.2736,5.8292,5.2736],"words":[{"text":"30.00","boundingBox":[5.8292,5.1069,6.2069,5.1069,6.2069,5.2736,5.8292,5.2736]}]},{"text":"Tip:","boundingBox":[5.5028,5.3264,5.7611,5.3264,5.7611,5.4931,5.5028,5.4931],"words":[{"text":"Tip:","boundingBox":[5.5028,5.3264,5.7611,5.3264,5.7611,5.4931,5.5028,5.4931]}]},{"text":"100.00","boundingBox":[5.7986,5.3264,6.2639,5.3264,6.2639,5.4931,5.7986,5.4931],"words":[{"text":"100.00","boundingBox":[5.7986,5.3264,6.2639,5.3264,6.2639,5.4931,5.7986,5.4931]}]},{"text":"Total:","boundingBox":[5.5028,5.5472,5.9014,5.5472,5.9014,5.7139,5.5028,5.7139],"words":[{"text":"Total:","boundingBox":[5.5028,5.5472,5.9014,5.5472,5.9014,5.7139,5.5028,5.7139]}]},{"text":"430.00","boundingBox":[5.9389,5.5472,6.4028,5.5472,6.4028,5.7139,5.9389,5.7139],"words":[{"text":"430.00","boundingBox":[5.9389,5.5472,6.4028,5.5472,6.4028,5.7139,5.9389,5.7139]}]},{"text":"Signature:","boundingBox":[1.0,6.6431,1.7083,6.6431,1.7083,6.8097,1.0,6.8097],"words":[{"text":"Signature:","boundingBox":[1.0,6.6431,1.7083,6.6431,1.7083,6.8097,1.0,6.8097]}]},{"text":"____Bilbo + Baggins__________","boundingBox":[1.7472,6.6431,3.8333,6.6431,3.8333,6.8097,1.7472,6.8097],"words":[{"text":"____Bilbo","boundingBox":[1.7472,6.6431,2.4333,6.6431,2.4333,6.8097,1.7472,6.8097]},{"text":"Baggins__________","boundingBox":[2.4708,6.6431,3.8333,6.6431,3.8333,6.8097,2.4708,6.8097]}]}]},{"page":3,"angle":0,"width":8.5,"height":11.0,"unit":"inch","lines":[{"text":"Company + B Invoice","boundingBox":[0.8764,1.1014,2.3833,1.1014,2.3833,1.2958,0.8764,1.2958],"words":[{"text":"Company","boundingBox":[0.8764,1.1014,1.6236,1.1014,1.6236,1.2958,0.8764,1.2958]},{"text":"B","boundingBox":[1.6667,1.1014,1.7722,1.1014,1.7722,1.2958,1.6667,1.2958]},{"text":"Invoice","boundingBox":[1.8167,1.1014,2.3833,1.1014,2.3833,1.2958,1.8167,1.2958]}]},{"text":"Invoice + For:","boundingBox":[6.0028,1.0431,7.0528,1.0431,7.0528,1.2667,6.0028,1.2667],"words":[{"text":"Invoice","boundingBox":[6.0028,1.0431,6.6472,1.0431,6.6472,1.2667,6.0028,1.2667]},{"text":"For:","boundingBox":[6.6958,1.0431,7.0528,1.0431,7.0528,1.2667,6.6958,1.2667]}]},{"text":"Address:","boundingBox":[0.8764,1.4681,1.5778,1.4681,1.5778,1.6625,0.8764,1.6625],"words":[{"text":"Address:","boundingBox":[0.8764,1.4681,1.5778,1.4681,1.5778,1.6625,0.8764,1.6625]}]},{"text":"Frodo + Baggins","boundingBox":[6.0028,1.4389,6.9569,1.4389,6.9569,1.6056,6.0028,1.6056],"words":[{"text":"Frodo","boundingBox":[6.0028,1.4389,6.3972,1.4389,6.3972,1.6056,6.0028,1.6056]},{"text":"Baggins","boundingBox":[6.4361,1.4389,6.9569,1.4389,6.9569,1.6056,6.4361,1.6056]}]},{"text":"123 + Hobbit Lane","boundingBox":[6.0028,1.6597,7.1083,1.6597,7.1083,1.8264,6.0028,1.8264],"words":[{"text":"123","boundingBox":[6.0028,1.6597,6.2542,1.6597,6.2542,1.8264,6.0028,1.8264]},{"text":"Hobbit","boundingBox":[6.2889,1.6597,6.7514,1.6597,6.7514,1.8264,6.2889,1.8264]},{"text":"Lane","boundingBox":[6.7889,1.6597,7.1083,1.6597,7.1083,1.8264,6.7889,1.8264]}]},{"text":"567 + Main St.","boundingBox":[0.8764,1.8292,1.725,1.8292,1.725,1.9958,0.8764,1.9958],"words":[{"text":"567","boundingBox":[0.8764,1.8292,1.1278,1.8292,1.1278,1.9958,0.8764,1.9958]},{"text":"Main","boundingBox":[1.1639,1.8292,1.5139,1.8292,1.5139,1.9958,1.1639,1.9958]},{"text":"St.","boundingBox":[1.55,1.8292,1.725,1.8292,1.725,1.9958,1.55,1.9958]}]},{"text":"Redmond, + WA","boundingBox":[6.0028,1.8792,6.9819,1.8792,6.9819,2.0458,6.0028,2.0458],"words":[{"text":"Redmond,","boundingBox":[6.0028,1.8792,6.6972,1.8792,6.6972,2.0458,6.0028,2.0458]},{"text":"WA","boundingBox":[6.7361,1.8792,6.9819,1.8792,6.9819,2.0458,6.7361,2.0458]}]},{"text":"Redmond, + WA","boundingBox":[0.8764,2.0486,1.8569,2.0486,1.8569,2.2153,0.8764,2.2153],"words":[{"text":"Redmond,","boundingBox":[0.8764,2.0486,1.5722,2.0486,1.5722,2.2153,0.8764,2.2153]},{"text":"WA","boundingBox":[1.6097,2.0486,1.8569,2.0486,1.8569,2.2153,1.6097,2.2153]}]},{"text":"555-555-5555","boundingBox":[6.0028,2.0986,6.9472,2.0986,6.9472,2.2653,6.0028,2.2653],"words":[{"text":"555-555-5555","boundingBox":[6.0028,2.0986,6.9472,2.0986,6.9472,2.2653,6.0028,2.2653]}]},{"text":"555-555-5555","boundingBox":[0.8764,2.2694,1.8222,2.2694,1.8222,2.4361,0.8764,2.4361],"words":[{"text":"555-555-5555","boundingBox":[0.8764,2.2694,1.8222,2.2694,1.8222,2.4361,0.8764,2.4361]}]},{"text":"Item","boundingBox":[1.0806,2.9833,1.3958,2.9833,1.3958,3.15,1.0806,3.15],"words":[{"text":"Item","boundingBox":[1.0806,2.9833,1.3958,2.9833,1.3958,3.15,1.0806,3.15]}]},{"text":"Quantity","boundingBox":[3.2444,2.9833,3.8389,2.9833,3.8389,3.15,3.2444,3.15],"words":[{"text":"Quantity","boundingBox":[3.2444,2.9833,3.8389,2.9833,3.8389,3.15,3.2444,3.15]}]},{"text":"Price","boundingBox":[5.4083,2.9833,5.7458,2.9833,5.7458,3.15,5.4083,3.15],"words":[{"text":"Price","boundingBox":[5.4083,2.9833,5.7458,2.9833,5.7458,3.15,5.4083,3.15]}]},{"text":"A","boundingBox":[1.0806,3.1931,1.1764,3.1931,1.1764,3.3597,1.0806,3.3597],"words":[{"text":"A","boundingBox":[1.0806,3.1931,1.1764,3.1931,1.1764,3.3597,1.0806,3.3597]}]},{"text":"10","boundingBox":[3.2444,3.1931,3.4125,3.1931,3.4125,3.3597,3.2444,3.3597],"words":[{"text":"10","boundingBox":[3.2444,3.1931,3.4125,3.1931,3.4125,3.3597,3.2444,3.3597]}]},{"text":"100.99","boundingBox":[5.4083,3.1931,5.8708,3.1931,5.8708,3.3597,5.4083,3.3597],"words":[{"text":"100.99","boundingBox":[5.4083,3.1931,5.8708,3.1931,5.8708,3.3597,5.4083,3.3597]}]},{"text":"B","boundingBox":[1.0806,3.4056,1.1708,3.4056,1.1708,3.5722,1.0806,3.5722],"words":[{"text":"B","boundingBox":[1.0806,3.4056,1.1708,3.4056,1.1708,3.5722,1.0806,3.5722]}]},{"text":"20","boundingBox":[3.2444,3.4056,3.4125,3.4056,3.4125,3.5722,3.2444,3.5722],"words":[{"text":"20","boundingBox":[3.2444,3.4056,3.4125,3.4056,3.4125,3.5722,3.2444,3.5722]}]},{"text":"140.67","boundingBox":[5.4083,3.4056,5.8694,3.4056,5.8694,3.5722,5.4083,3.5722],"words":[{"text":"140.67","boundingBox":[5.4083,3.4056,5.8694,3.4056,5.8694,3.5722,5.4083,3.5722]}]},{"text":"C","boundingBox":[1.0806,3.6167,1.1694,3.6167,1.1694,3.7833,1.0806,3.7833],"words":[{"text":"C","boundingBox":[1.0806,3.6167,1.1694,3.6167,1.1694,3.7833,1.0806,3.7833]}]},{"text":"40","boundingBox":[3.2444,3.6167,3.4125,3.6167,3.4125,3.7833,3.2444,3.7833],"words":[{"text":"40","boundingBox":[3.2444,3.6167,3.4125,3.6167,3.4125,3.7833,3.2444,3.7833]}]},{"text":"150.66","boundingBox":[5.4083,3.6167,5.8694,3.6167,5.8694,3.7833,5.4083,3.7833],"words":[{"text":"150.66","boundingBox":[5.4083,3.6167,5.8694,3.6167,5.8694,3.7833,5.4083,3.7833]}]},{"text":"D","boundingBox":[1.0806,3.8264,1.1833,3.8264,1.1833,3.9931,1.0806,3.9931],"words":[{"text":"D","boundingBox":[1.0806,3.8264,1.1833,3.8264,1.1833,3.9931,1.0806,3.9931]}]},{"text":"10","boundingBox":[3.2444,3.8264,3.4125,3.8264,3.4125,3.9931,3.2444,3.9931],"words":[{"text":"10","boundingBox":[3.2444,3.8264,3.4125,3.8264,3.4125,3.9931,3.2444,3.9931]}]},{"text":"120.00","boundingBox":[5.4083,3.8264,5.8694,3.8264,5.8694,3.9931,5.4083,3.9931],"words":[{"text":"120.00","boundingBox":[5.4083,3.8264,5.8694,3.8264,5.8694,3.9931,5.4083,3.9931]}]},{"text":"E","boundingBox":[1.0806,4.0361,1.1611,4.0361,1.1611,4.2028,1.0806,4.2028],"words":[{"text":"E","boundingBox":[1.0806,4.0361,1.1611,4.0361,1.1611,4.2028,1.0806,4.2028]}]},{"text":"40","boundingBox":[3.2444,4.0361,3.4125,4.0361,3.4125,4.2028,3.2444,4.2028],"words":[{"text":"40","boundingBox":[3.2444,4.0361,3.4125,4.0361,3.4125,4.2028,3.2444,4.2028]}]},{"text":"100.00","boundingBox":[5.4083,4.0361,5.8708,4.0361,5.8708,4.2028,5.4083,4.2028],"words":[{"text":"100.00","boundingBox":[5.4083,4.0361,5.8708,4.0361,5.8708,4.2028,5.4083,4.2028]}]},{"text":"F","boundingBox":[1.0806,4.2458,1.1569,4.2458,1.1569,4.4125,1.0806,4.4125],"words":[{"text":"F","boundingBox":[1.0806,4.2458,1.1569,4.2458,1.1569,4.4125,1.0806,4.4125]}]},{"text":"60","boundingBox":[3.2444,4.2458,3.4125,4.2458,3.4125,4.4125,3.2444,4.4125],"words":[{"text":"60","boundingBox":[3.2444,4.2458,3.4125,4.2458,3.4125,4.4125,3.2444,4.4125]}]},{"text":"120.00","boundingBox":[5.4083,4.2458,5.8694,4.2458,5.8694,4.4125,5.4083,4.4125],"words":[{"text":"120.00","boundingBox":[5.4083,4.2458,5.8694,4.2458,5.8694,4.4125,5.4083,4.4125]}]},{"text":"G","boundingBox":[1.0806,4.4569,1.1861,4.4569,1.1861,4.6236,1.0806,4.6236],"words":[{"text":"G","boundingBox":[1.0806,4.4569,1.1861,4.4569,1.1861,4.6236,1.0806,4.6236]}]},{"text":"80","boundingBox":[3.2444,4.4569,3.4125,4.4569,3.4125,4.6236,3.2444,4.6236],"words":[{"text":"80","boundingBox":[3.2444,4.4569,3.4125,4.4569,3.4125,4.6236,3.2444,4.6236]}]},{"text":"220.00","boundingBox":[5.4083,4.4569,5.8708,4.4569,5.8708,4.6236,5.4083,4.6236],"words":[{"text":"220.00","boundingBox":[5.4083,4.4569,5.8708,4.4569,5.8708,4.6236,5.4083,4.6236]}]},{"text":"Subtotal:","boundingBox":[5.5028,4.8861,6.1347,4.8861,6.1347,5.0528,5.5028,5.0528],"words":[{"text":"Subtotal:","boundingBox":[5.5028,4.8861,6.1347,4.8861,6.1347,5.0528,5.5028,5.0528]}]},{"text":"3000.00","boundingBox":[6.1722,4.8861,6.7208,4.8861,6.7208,5.0528,6.1722,5.0528],"words":[{"text":"3000.00","boundingBox":[6.1722,4.8861,6.7208,4.8861,6.7208,5.0528,6.1722,5.0528]}]},{"text":"Tax:","boundingBox":[5.5028,5.1069,5.7917,5.1069,5.7917,5.2736,5.5028,5.2736],"words":[{"text":"Tax:","boundingBox":[5.5028,5.1069,5.7917,5.1069,5.7917,5.2736,5.5028,5.2736]}]},{"text":"300.00","boundingBox":[5.8292,5.1069,6.2931,5.1069,6.2931,5.2736,5.8292,5.2736],"words":[{"text":"300.00","boundingBox":[5.8292,5.1069,6.2931,5.1069,6.2931,5.2736,5.8292,5.2736]}]},{"text":"Tip:","boundingBox":[5.5028,5.3264,5.7611,5.3264,5.7611,5.4931,5.5028,5.4931],"words":[{"text":"Tip:","boundingBox":[5.5028,5.3264,5.7611,5.3264,5.7611,5.4931,5.5028,5.4931]}]},{"text":"1000.00","boundingBox":[5.7986,5.3264,6.3472,5.3264,6.3472,5.4931,5.7986,5.4931],"words":[{"text":"1000.00","boundingBox":[5.7986,5.3264,6.3472,5.3264,6.3472,5.4931,5.7986,5.4931]}]},{"text":"Total:","boundingBox":[5.5028,5.5472,5.9014,5.5472,5.9014,5.7139,5.5028,5.7139],"words":[{"text":"Total:","boundingBox":[5.5028,5.5472,5.9014,5.5472,5.9014,5.7139,5.5028,5.7139]}]},{"text":"4300.00","boundingBox":[5.9389,5.5472,6.4875,5.5472,6.4875,5.7139,5.9389,5.7139],"words":[{"text":"4300.00","boundingBox":[5.9389,5.5472,6.4875,5.5472,6.4875,5.7139,5.9389,5.7139]}]},{"text":"Signature:","boundingBox":[1.0,6.6431,1.7083,6.6431,1.7083,6.8097,1.0,6.8097],"words":[{"text":"Signature:","boundingBox":[1.0,6.6431,1.7083,6.6431,1.7083,6.8097,1.0,6.8097]}]},{"text":"____Frodo + Baggins__________","boundingBox":[1.7472,6.6431,3.8833,6.6431,3.8833,6.8097,1.7472,6.8097],"words":[{"text":"____Frodo","boundingBox":[1.7472,6.6431,2.4833,6.6431,2.4833,6.8097,1.7472,6.8097]},{"text":"Baggins__________","boundingBox":[2.5208,6.6431,3.8833,6.6431,3.8833,6.8097,2.5208,6.8097]}]}]}],"pageResults":[{"page":1,"keyValuePairs":[{"key":{"text":"Invoice + For:","boundingBox":[6.0028,1.0431,7.0528,1.0431,7.0528,1.2667,6.0028,1.2667],"elements":["#/readResults/0/lines/1/words/0","#/readResults/0/lines/1/words/1"]},"value":{"text":"Bilbo + Baggins 123 Hobbit Lane","boundingBox":[6.0028,1.4389,7.1083,1.4389,7.1083,1.8264,6.0028,1.8264],"elements":["#/readResults/0/lines/3/words/0","#/readResults/0/lines/3/words/1","#/readResults/0/lines/4/words/0","#/readResults/0/lines/4/words/1","#/readResults/0/lines/4/words/2"]},"confidence":1.0},{"key":{"text":"Address:","boundingBox":[0.8764,1.4681,1.5778,1.4681,1.5778,1.6625,0.8764,1.6625],"elements":["#/readResults/0/lines/2/words/0"]},"value":{"text":"567 + Main St.","boundingBox":[0.8764,1.8292,1.725,1.8292,1.725,1.9958,0.8764,1.9958],"elements":["#/readResults/0/lines/5/words/0","#/readResults/0/lines/5/words/1","#/readResults/0/lines/5/words/2"]},"confidence":1.0},{"key":{"text":"Redmond, + WA","boundingBox":[6.0028,1.8792,6.9819,1.8792,6.9819,2.0458,6.0028,2.0458],"elements":["#/readResults/0/lines/6/words/0","#/readResults/0/lines/6/words/1"]},"value":{"text":"555-555-5555","boundingBox":[6.0028,2.0986,6.9472,2.0986,6.9472,2.2653,6.0028,2.2653],"elements":["#/readResults/0/lines/8/words/0"]},"confidence":1.0},{"key":{"text":"Redmond, + WA","boundingBox":[0.8764,2.0486,1.8569,2.0486,1.8569,2.2153,0.8764,2.2153],"elements":["#/readResults/0/lines/7/words/0","#/readResults/0/lines/7/words/1"]},"value":{"text":"555-555-5555","boundingBox":[0.8764,2.2694,1.8222,2.2694,1.8222,2.4361,0.8764,2.4361],"elements":["#/readResults/0/lines/9/words/0"]},"confidence":0.29},{"key":{"text":"Subtotal:","boundingBox":[5.5028,4.8861,6.1347,4.8861,6.1347,5.0528,5.5028,5.0528],"elements":["#/readResults/0/lines/34/words/0"]},"value":{"text":"300.00","boundingBox":[6.1722,4.8861,6.6361,4.8861,6.6361,5.0528,6.1722,5.0528],"elements":["#/readResults/0/lines/35/words/0"]},"confidence":1.0},{"key":{"text":"Tax:","boundingBox":[5.5028,5.1069,5.7917,5.1069,5.7917,5.2736,5.5028,5.2736],"elements":["#/readResults/0/lines/36/words/0"]},"value":{"text":"30.00","boundingBox":[5.8292,5.1069,6.2069,5.1069,6.2069,5.2736,5.8292,5.2736],"elements":["#/readResults/0/lines/37/words/0"]},"confidence":1.0},{"key":{"text":"Tip:","boundingBox":[5.5028,5.3264,5.7611,5.3264,5.7611,5.4931,5.5028,5.4931],"elements":["#/readResults/0/lines/38/words/0"]},"value":{"text":"100.00","boundingBox":[5.7986,5.3264,6.2639,5.3264,6.2639,5.4931,5.7986,5.4931],"elements":["#/readResults/0/lines/39/words/0"]},"confidence":1.0},{"key":{"text":"Total:","boundingBox":[5.5028,5.5472,5.9014,5.5472,5.9014,5.7139,5.5028,5.7139],"elements":["#/readResults/0/lines/40/words/0"]},"value":{"text":"430.00","boundingBox":[5.9389,5.5472,6.4028,5.5472,6.4028,5.7139,5.9389,5.7139],"elements":["#/readResults/0/lines/41/words/0"]},"confidence":1.0},{"key":{"text":"Signature:","boundingBox":[1.0,6.6431,1.7083,6.6431,1.7083,6.8097,1.0,6.8097],"elements":["#/readResults/0/lines/42/words/0"]},"value":{"text":"____Bilbo + Baggins__________","boundingBox":[1.7472,6.6431,3.8333,6.6431,3.8333,6.8097,1.7472,6.8097],"elements":["#/readResults/0/lines/43/words/0","#/readResults/0/lines/43/words/1"]},"confidence":1.0},{"key":{"text":"__Tokens__1","boundingBox":null,"elements":null},"value":{"text":"Company + A Invoice","boundingBox":[0.8764,1.1014,2.3875,1.1014,2.3875,1.2958,0.8764,1.2958],"elements":["#/readResults/0/lines/0/words/0","#/readResults/0/lines/0/words/1","#/readResults/0/lines/0/words/2"]},"confidence":1.0}],"tables":[{"rows":8,"columns":3,"cells":[{"text":"Item","rowIndex":0,"columnIndex":0,"boundingBox":[1.0806,2.9833,1.3958,2.9833,1.3958,3.15,1.0806,3.15],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/0/lines/10/words/0"],"isHeader":true,"isFooter":false},{"text":"Quantity","rowIndex":0,"columnIndex":1,"boundingBox":[3.2444,2.9833,3.8389,2.9833,3.8389,3.15,3.2444,3.15],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/0/lines/11/words/0"],"isHeader":true,"isFooter":false},{"text":"Price","rowIndex":0,"columnIndex":2,"boundingBox":[5.4083,2.9833,5.7458,2.9833,5.7458,3.15,5.4083,3.15],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/0/lines/12/words/0"],"isHeader":true,"isFooter":false},{"text":"A","rowIndex":1,"columnIndex":0,"boundingBox":[1.0806,3.1931,1.1764,3.1931,1.1764,3.3597,1.0806,3.3597],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/0/lines/13/words/0"],"isHeader":false,"isFooter":false},{"text":"1","rowIndex":1,"columnIndex":1,"boundingBox":[3.2444,3.1931,3.3292,3.1931,3.3292,3.3597,3.2444,3.3597],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/0/lines/14/words/0"],"isHeader":false,"isFooter":false},{"text":"10.99","rowIndex":1,"columnIndex":2,"boundingBox":[5.4083,3.1931,5.7875,3.1931,5.7875,3.3597,5.4083,3.3597],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/0/lines/15/words/0"],"isHeader":false,"isFooter":false},{"text":"B","rowIndex":2,"columnIndex":0,"boundingBox":[1.0806,3.4056,1.1708,3.4056,1.1708,3.5722,1.0806,3.5722],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/0/lines/16/words/0"],"isHeader":false,"isFooter":false},{"text":"2","rowIndex":2,"columnIndex":1,"boundingBox":[3.2444,3.4056,3.3292,3.4056,3.3292,3.5722,3.2444,3.5722],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/0/lines/17/words/0"],"isHeader":false,"isFooter":false},{"text":"14.67","rowIndex":2,"columnIndex":2,"boundingBox":[5.4083,3.4056,5.7861,3.4056,5.7861,3.5722,5.4083,3.5722],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/0/lines/18/words/0"],"isHeader":false,"isFooter":false},{"text":"C","rowIndex":3,"columnIndex":0,"boundingBox":[1.0806,3.6167,1.1694,3.6167,1.1694,3.7833,1.0806,3.7833],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/0/lines/19/words/0"],"isHeader":false,"isFooter":false},{"text":"4","rowIndex":3,"columnIndex":1,"boundingBox":[3.2444,3.6167,3.3292,3.6167,3.3292,3.7833,3.2444,3.7833],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/0/lines/20/words/0"],"isHeader":false,"isFooter":false},{"text":"15.66","rowIndex":3,"columnIndex":2,"boundingBox":[5.4083,3.6167,5.7861,3.6167,5.7861,3.7833,5.4083,3.7833],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/0/lines/21/words/0"],"isHeader":false,"isFooter":false},{"text":"D","rowIndex":4,"columnIndex":0,"boundingBox":[1.0806,3.8264,1.1833,3.8264,1.1833,3.9931,1.0806,3.9931],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/0/lines/22/words/0"],"isHeader":false,"isFooter":false},{"text":"1","rowIndex":4,"columnIndex":1,"boundingBox":[3.2444,3.8264,3.3292,3.8264,3.3292,3.9931,3.2444,3.9931],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/0/lines/23/words/0"],"isHeader":false,"isFooter":false},{"text":"12.00","rowIndex":4,"columnIndex":2,"boundingBox":[5.4083,3.8264,5.7861,3.8264,5.7861,3.9931,5.4083,3.9931],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/0/lines/24/words/0"],"isHeader":false,"isFooter":false},{"text":"E","rowIndex":5,"columnIndex":0,"boundingBox":[1.0806,4.0361,1.1611,4.0361,1.1611,4.2028,1.0806,4.2028],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/0/lines/25/words/0"],"isHeader":false,"isFooter":false},{"text":"4","rowIndex":5,"columnIndex":1,"boundingBox":[3.2444,4.0361,3.3292,4.0361,3.3292,4.2028,3.2444,4.2028],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/0/lines/26/words/0"],"isHeader":false,"isFooter":false},{"text":"10.00","rowIndex":5,"columnIndex":2,"boundingBox":[5.4083,4.0361,5.7875,4.0361,5.7875,4.2028,5.4083,4.2028],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/0/lines/27/words/0"],"isHeader":false,"isFooter":false},{"text":"F","rowIndex":6,"columnIndex":0,"boundingBox":[1.0806,4.2458,1.1569,4.2458,1.1569,4.4125,1.0806,4.4125],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/0/lines/28/words/0"],"isHeader":false,"isFooter":false},{"text":"6","rowIndex":6,"columnIndex":1,"boundingBox":[3.2444,4.2458,3.3292,4.2458,3.3292,4.4125,3.2444,4.4125],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/0/lines/29/words/0"],"isHeader":false,"isFooter":false},{"text":"12.00","rowIndex":6,"columnIndex":2,"boundingBox":[5.4083,4.2458,5.7861,4.2458,5.7861,4.4125,5.4083,4.4125],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/0/lines/30/words/0"],"isHeader":false,"isFooter":false},{"text":"G","rowIndex":7,"columnIndex":0,"boundingBox":[1.0806,4.4569,1.1861,4.4569,1.1861,4.6236,1.0806,4.6236],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/0/lines/31/words/0"],"isHeader":false,"isFooter":false},{"text":"8","rowIndex":7,"columnIndex":1,"boundingBox":[3.2444,4.4569,3.3292,4.4569,3.3292,4.6236,3.2444,4.6236],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/0/lines/32/words/0"],"isHeader":false,"isFooter":false},{"text":"22.00","rowIndex":7,"columnIndex":2,"boundingBox":[5.4083,4.4569,5.7875,4.4569,5.7875,4.6236,5.4083,4.6236],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/0/lines/33/words/0"],"isHeader":false,"isFooter":false}]}],"clusterId":0},{"page":3,"keyValuePairs":[{"key":{"text":"Invoice + For:","boundingBox":[6.0028,1.0431,7.0528,1.0431,7.0528,1.2667,6.0028,1.2667],"elements":["#/readResults/2/lines/1/words/0","#/readResults/2/lines/1/words/1"]},"value":{"text":"Frodo + Baggins 123 Hobbit Lane","boundingBox":[6.0028,1.4389,7.1083,1.4389,7.1083,1.8264,6.0028,1.8264],"elements":["#/readResults/2/lines/3/words/0","#/readResults/2/lines/3/words/1","#/readResults/2/lines/4/words/0","#/readResults/2/lines/4/words/1","#/readResults/2/lines/4/words/2"]},"confidence":1.0},{"key":{"text":"Address:","boundingBox":[0.8764,1.4681,1.5778,1.4681,1.5778,1.6625,0.8764,1.6625],"elements":["#/readResults/2/lines/2/words/0"]},"value":{"text":"567 + Main St.","boundingBox":[0.8764,1.8292,1.725,1.8292,1.725,1.9958,0.8764,1.9958],"elements":["#/readResults/2/lines/5/words/0","#/readResults/2/lines/5/words/1","#/readResults/2/lines/5/words/2"]},"confidence":1.0},{"key":{"text":"Redmond, + WA","boundingBox":[6.0028,1.8792,6.9819,1.8792,6.9819,2.0458,6.0028,2.0458],"elements":["#/readResults/2/lines/6/words/0","#/readResults/2/lines/6/words/1"]},"value":{"text":"555-555-5555","boundingBox":[6.0028,2.0986,6.9472,2.0986,6.9472,2.2653,6.0028,2.2653],"elements":["#/readResults/2/lines/8/words/0"]},"confidence":1.0},{"key":{"text":"Redmond, + WA","boundingBox":[0.8764,2.0486,1.8569,2.0486,1.8569,2.2153,0.8764,2.2153],"elements":["#/readResults/2/lines/7/words/0","#/readResults/2/lines/7/words/1"]},"value":{"text":"555-555-5555","boundingBox":[0.8764,2.2694,1.8222,2.2694,1.8222,2.4361,0.8764,2.4361],"elements":["#/readResults/2/lines/9/words/0"]},"confidence":0.29},{"key":{"text":"Subtotal:","boundingBox":[5.5028,4.8861,6.1347,4.8861,6.1347,5.0528,5.5028,5.0528],"elements":["#/readResults/2/lines/34/words/0"]},"value":{"text":"3000.00","boundingBox":[6.1722,4.8861,6.7208,4.8861,6.7208,5.0528,6.1722,5.0528],"elements":["#/readResults/2/lines/35/words/0"]},"confidence":1.0},{"key":{"text":"Tax:","boundingBox":[5.5028,5.1069,5.7917,5.1069,5.7917,5.2736,5.5028,5.2736],"elements":["#/readResults/2/lines/36/words/0"]},"value":{"text":"300.00","boundingBox":[5.8292,5.1069,6.2931,5.1069,6.2931,5.2736,5.8292,5.2736],"elements":["#/readResults/2/lines/37/words/0"]},"confidence":1.0},{"key":{"text":"Tip:","boundingBox":[5.5028,5.3264,5.7611,5.3264,5.7611,5.4931,5.5028,5.4931],"elements":["#/readResults/2/lines/38/words/0"]},"value":{"text":"1000.00","boundingBox":[5.7986,5.3264,6.3472,5.3264,6.3472,5.4931,5.7986,5.4931],"elements":["#/readResults/2/lines/39/words/0"]},"confidence":1.0},{"key":{"text":"Total:","boundingBox":[5.5028,5.5472,5.9014,5.5472,5.9014,5.7139,5.5028,5.7139],"elements":["#/readResults/2/lines/40/words/0"]},"value":{"text":"4300.00","boundingBox":[5.9389,5.5472,6.4875,5.5472,6.4875,5.7139,5.9389,5.7139],"elements":["#/readResults/2/lines/41/words/0"]},"confidence":1.0},{"key":{"text":"Signature:","boundingBox":[1.0,6.6431,1.7083,6.6431,1.7083,6.8097,1.0,6.8097],"elements":["#/readResults/2/lines/42/words/0"]},"value":{"text":"____Frodo + Baggins__________","boundingBox":[1.7472,6.6431,3.8833,6.6431,3.8833,6.8097,1.7472,6.8097],"elements":["#/readResults/2/lines/43/words/0","#/readResults/2/lines/43/words/1"]},"confidence":1.0},{"key":{"text":"__Tokens__1","boundingBox":null,"elements":null},"value":{"text":"Company + B Invoice","boundingBox":[0.8764,1.1014,2.3833,1.1014,2.3833,1.2958,0.8764,1.2958],"elements":["#/readResults/2/lines/0/words/0","#/readResults/2/lines/0/words/1","#/readResults/2/lines/0/words/2"]},"confidence":1.0}],"tables":[{"rows":8,"columns":3,"cells":[{"text":"Item","rowIndex":0,"columnIndex":0,"boundingBox":[1.0806,2.9833,1.3958,2.9833,1.3958,3.15,1.0806,3.15],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/2/lines/10/words/0"],"isHeader":true,"isFooter":false},{"text":"Quantity","rowIndex":0,"columnIndex":1,"boundingBox":[3.2444,2.9833,3.8389,2.9833,3.8389,3.15,3.2444,3.15],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/2/lines/11/words/0"],"isHeader":true,"isFooter":false},{"text":"Price","rowIndex":0,"columnIndex":2,"boundingBox":[5.4083,2.9833,5.7458,2.9833,5.7458,3.15,5.4083,3.15],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/2/lines/12/words/0"],"isHeader":true,"isFooter":false},{"text":"A","rowIndex":1,"columnIndex":0,"boundingBox":[1.0806,3.1931,1.1764,3.1931,1.1764,3.3597,1.0806,3.3597],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/2/lines/13/words/0"],"isHeader":false,"isFooter":false},{"text":"10","rowIndex":1,"columnIndex":1,"boundingBox":[3.2444,3.1931,3.4125,3.1931,3.4125,3.3597,3.2444,3.3597],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/2/lines/14/words/0"],"isHeader":false,"isFooter":false},{"text":"100.99","rowIndex":1,"columnIndex":2,"boundingBox":[5.4083,3.1931,5.8708,3.1931,5.8708,3.3597,5.4083,3.3597],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/2/lines/15/words/0"],"isHeader":false,"isFooter":false},{"text":"B","rowIndex":2,"columnIndex":0,"boundingBox":[1.0806,3.4056,1.1708,3.4056,1.1708,3.5722,1.0806,3.5722],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/2/lines/16/words/0"],"isHeader":false,"isFooter":false},{"text":"20","rowIndex":2,"columnIndex":1,"boundingBox":[3.2444,3.4056,3.4125,3.4056,3.4125,3.5722,3.2444,3.5722],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/2/lines/17/words/0"],"isHeader":false,"isFooter":false},{"text":"140.67","rowIndex":2,"columnIndex":2,"boundingBox":[5.4083,3.4056,5.8694,3.4056,5.8694,3.5722,5.4083,3.5722],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/2/lines/18/words/0"],"isHeader":false,"isFooter":false},{"text":"C","rowIndex":3,"columnIndex":0,"boundingBox":[1.0806,3.6167,1.1694,3.6167,1.1694,3.7833,1.0806,3.7833],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/2/lines/19/words/0"],"isHeader":false,"isFooter":false},{"text":"40","rowIndex":3,"columnIndex":1,"boundingBox":[3.2444,3.6167,3.4125,3.6167,3.4125,3.7833,3.2444,3.7833],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/2/lines/20/words/0"],"isHeader":false,"isFooter":false},{"text":"150.66","rowIndex":3,"columnIndex":2,"boundingBox":[5.4083,3.6167,5.8694,3.6167,5.8694,3.7833,5.4083,3.7833],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/2/lines/21/words/0"],"isHeader":false,"isFooter":false},{"text":"D","rowIndex":4,"columnIndex":0,"boundingBox":[1.0806,3.8264,1.1833,3.8264,1.1833,3.9931,1.0806,3.9931],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/2/lines/22/words/0"],"isHeader":false,"isFooter":false},{"text":"10","rowIndex":4,"columnIndex":1,"boundingBox":[3.2444,3.8264,3.4125,3.8264,3.4125,3.9931,3.2444,3.9931],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/2/lines/23/words/0"],"isHeader":false,"isFooter":false},{"text":"120.00","rowIndex":4,"columnIndex":2,"boundingBox":[5.4083,3.8264,5.8694,3.8264,5.8694,3.9931,5.4083,3.9931],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/2/lines/24/words/0"],"isHeader":false,"isFooter":false},{"text":"E","rowIndex":5,"columnIndex":0,"boundingBox":[1.0806,4.0361,1.1611,4.0361,1.1611,4.2028,1.0806,4.2028],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/2/lines/25/words/0"],"isHeader":false,"isFooter":false},{"text":"40","rowIndex":5,"columnIndex":1,"boundingBox":[3.2444,4.0361,3.4125,4.0361,3.4125,4.2028,3.2444,4.2028],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/2/lines/26/words/0"],"isHeader":false,"isFooter":false},{"text":"100.00","rowIndex":5,"columnIndex":2,"boundingBox":[5.4083,4.0361,5.8708,4.0361,5.8708,4.2028,5.4083,4.2028],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/2/lines/27/words/0"],"isHeader":false,"isFooter":false},{"text":"F","rowIndex":6,"columnIndex":0,"boundingBox":[1.0806,4.2458,1.1569,4.2458,1.1569,4.4125,1.0806,4.4125],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/2/lines/28/words/0"],"isHeader":false,"isFooter":false},{"text":"60","rowIndex":6,"columnIndex":1,"boundingBox":[3.2444,4.2458,3.4125,4.2458,3.4125,4.4125,3.2444,4.4125],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/2/lines/29/words/0"],"isHeader":false,"isFooter":false},{"text":"120.00","rowIndex":6,"columnIndex":2,"boundingBox":[5.4083,4.2458,5.8694,4.2458,5.8694,4.4125,5.4083,4.4125],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/2/lines/30/words/0"],"isHeader":false,"isFooter":false},{"text":"G","rowIndex":7,"columnIndex":0,"boundingBox":[1.0806,4.4569,1.1861,4.4569,1.1861,4.6236,1.0806,4.6236],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/2/lines/31/words/0"],"isHeader":false,"isFooter":false},{"text":"80","rowIndex":7,"columnIndex":1,"boundingBox":[3.2444,4.4569,3.4125,4.4569,3.4125,4.6236,3.2444,4.6236],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/2/lines/32/words/0"],"isHeader":false,"isFooter":false},{"text":"220.00","rowIndex":7,"columnIndex":2,"boundingBox":[5.4083,4.4569,5.8708,4.4569,5.8708,4.6236,5.4083,4.6236],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/2/lines/33/words/0"],"isHeader":false,"isFooter":false}]}],"clusterId":0}],"documentResults":[],"errors":[]}}' + headers: + apim-request-id: + - d9e94b6e-bfab-470b-87cf-62c36d7393a6 + content-type: + - application/json; charset=utf-8 + date: + - Thu, 30 Apr 2020 23:04:26 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + transfer-encoding: + - chunked + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '41' + status: + code: 200 + message: OK +version: 1 diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_custom_forms_async.test_custom_form_damaged_file.yaml b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_custom_forms_async.test_custom_form_damaged_file.yaml new file mode 100644 index 000000000000..83d125cda169 --- /dev/null +++ b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_custom_forms_async.test_custom_form_damaged_file.yaml @@ -0,0 +1,106 @@ +interactions: +- request: + body: 'b''{"source": "containersasurl", "sourceFilter": {"prefix": "", "includeSubFolders": + false}, "useLabelFile": false}''' + headers: + Content-Length: + - '288' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models + response: + body: + string: '' + headers: + apim-request-id: 5e36568c-aca4-421a-b531-c2ba2b5400cd + content-length: '0' + date: Thu, 30 Apr 2020 22:48:22 GMT + location: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/3ca1cd6f-f42b-4477-9b8b-1be0674dac58 + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '5127' + status: + code: 201 + message: Created + url: https://westus.api.cognitive.microsoft.com//formrecognizer/v2.0-preview/custom/models +- request: + body: null + headers: + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/3ca1cd6f-f42b-4477-9b8b-1be0674dac58?includeKeys=true + response: + body: + string: '{"modelInfo":{"modelId":"3ca1cd6f-f42b-4477-9b8b-1be0674dac58","status":"ready","createdDateTime":"2020-04-30T22:48:22Z","lastUpdatedDateTime":"2020-04-30T22:48:30Z"},"keys":{"clusters":{"0":["Additional + Notes:","Address:","Address:","Company Name:","Company Phone:","Dated As:","Email:","Hero + Limited","Name:","Phone:","Purchase Order","Purchase Order","Purchase Order + #:","SUBTOTAL","Seattle, WA 93849 Phone:","Shipped From","Shipped To","TAX","TOTAL","Vendor + Name:","Website:"]}},"trainResult":{"trainingDocuments":[{"documentName":"Form_1.jpg","pages":1,"errors":[],"status":"succeeded"},{"documentName":"Form_2.jpg","pages":1,"errors":[],"status":"succeeded"},{"documentName":"Form_3.jpg","pages":1,"errors":[],"status":"succeeded"},{"documentName":"Form_4.jpg","pages":1,"errors":[],"status":"succeeded"},{"documentName":"Form_5.jpg","pages":1,"errors":[],"status":"succeeded"}],"errors":[]}}' + headers: + apim-request-id: e45cbfc7-0196-475e-aa3b-678616ac6271 + content-type: application/json; charset=utf-8 + date: Thu, 30 Apr 2020 22:48:32 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + transfer-encoding: chunked + x-content-type-options: nosniff + x-envoy-upstream-service-time: '5189' + status: + code: 200 + message: OK + url: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/3ca1cd6f-f42b-4477-9b8b-1be0674dac58?includeKeys=true +- request: + body: '%PDFUUU' + headers: + Content-Type: + - application/pdf + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/3ca1cd6f-f42b-4477-9b8b-1be0674dac58/analyze?includeTextDetails=false + response: + body: + string: '' + headers: + apim-request-id: f091a1f4-3874-4cfc-8d78-8473f74610fd + content-length: '0' + date: Thu, 30 Apr 2020 22:48:33 GMT + operation-location: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/3ca1cd6f-f42b-4477-9b8b-1be0674dac58/analyzeresults/1578b154-7287-4bd3-92b9-bf748dda9d6e + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '227' + status: + code: 202 + message: Accepted + url: https://westus.api.cognitive.microsoft.com//formrecognizer/v2.0-preview/custom/models/3ca1cd6f-f42b-4477-9b8b-1be0674dac58/analyze?includeTextDetails=false +- request: + body: null + headers: + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/3ca1cd6f-f42b-4477-9b8b-1be0674dac58/analyzeresults/1578b154-7287-4bd3-92b9-bf748dda9d6e + response: + body: + string: '{"status":"failed","createdDateTime":"2020-04-30T22:48:33Z","lastUpdatedDateTime":"2020-04-30T22:48:33Z","analyzeResult":{"version":"2.0.0","readResults":[],"pageResults":[],"documentResults":[],"errors":[{"code":"2005","message":"Unable + to read file."}]}}' + headers: + apim-request-id: 5bdbcc94-f07e-48fd-bc2b-3f8c32967c22 + content-type: application/json; charset=utf-8 + date: Thu, 30 Apr 2020 22:48:43 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + transfer-encoding: chunked + x-content-type-options: nosniff + x-envoy-upstream-service-time: '5267' + status: + code: 200 + message: OK + url: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/3ca1cd6f-f42b-4477-9b8b-1be0674dac58/analyzeresults/1578b154-7287-4bd3-92b9-bf748dda9d6e +version: 1 diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_custom_forms_async.test_custom_form_multipage_labeled.yaml b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_custom_forms_async.test_custom_form_multipage_labeled.yaml new file mode 100644 index 000000000000..101e4677e336 --- /dev/null +++ b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_custom_forms_async.test_custom_form_multipage_labeled.yaml @@ -0,0 +1,2088 @@ +interactions: +- request: + body: 'b''{"source": "containersasurl", "sourceFilter": {"prefix": "", "includeSubFolders": + false}, "useLabelFile": true}''' + headers: + Content-Length: + - '300' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models + response: + body: + string: '' + headers: + apim-request-id: 9b151d58-fb33-461e-a5bd-fde89c51bebe + content-length: '0' + date: Thu, 30 Apr 2020 23:09:01 GMT + location: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/e6d1e6eb-1e59-421c-aee5-361f7ef877fe + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '208' + status: + code: 201 + message: Created + url: https://westus.api.cognitive.microsoft.com//formrecognizer/v2.0-preview/custom/models +- request: + body: null + headers: + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/e6d1e6eb-1e59-421c-aee5-361f7ef877fe?includeKeys=true + response: + body: + string: '{"modelInfo":{"modelId":"e6d1e6eb-1e59-421c-aee5-361f7ef877fe","status":"ready","createdDateTime":"2020-04-30T23:09:02Z","lastUpdatedDateTime":"2020-04-30T23:09:04Z"},"trainResult":{"averageModelAccuracy":0.889,"trainingDocuments":[{"documentName":"multipage_invoice1.pdf","pages":3,"status":"succeeded"},{"documentName":"multipage_invoice2.pdf","pages":3,"status":"succeeded"},{"documentName":"multipage_invoice3.pdf","pages":3,"status":"succeeded"},{"documentName":"multipage_invoice4.pdf","pages":3,"status":"succeeded"},{"documentName":"multipage_invoice5.pdf","pages":3,"status":"succeeded"}],"fields":[{"fieldName":"Customer2","accuracy":1.0},{"fieldName":"CustomerAddress","accuracy":1.0},{"fieldName":"CustomerName","accuracy":1.0},{"fieldName":"CustomerPhoneNumber","accuracy":1.0},{"fieldName":"FirstItem","accuracy":1.0},{"fieldName":"FirstPrice","accuracy":1.0},{"fieldName":"FirstQuantity","accuracy":1.0},{"fieldName":"Merchant","accuracy":0.0},{"fieldName":"Merchant2","accuracy":0.0},{"fieldName":"MerchantAddress","accuracy":1.0},{"fieldName":"MerchantPhoneNumber","accuracy":1.0},{"fieldName":"Signature","accuracy":1.0},{"fieldName":"Signature2","accuracy":1.0},{"fieldName":"Subtotal","accuracy":1.0},{"fieldName":"Tax","accuracy":1.0},{"fieldName":"Tip","accuracy":1.0},{"fieldName":"Total","accuracy":1.0},{"fieldName":"Total2","accuracy":1.0}],"errors":[]}}' + headers: + apim-request-id: f27e2b27-5479-4ba7-8d5c-ed67f7219435 + content-type: application/json; charset=utf-8 + date: Thu, 30 Apr 2020 23:09:07 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + transfer-encoding: chunked + x-content-type-options: nosniff + x-envoy-upstream-service-time: '166' + status: + code: 200 + message: OK + url: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/e6d1e6eb-1e59-421c-aee5-361f7ef877fe?includeKeys=true +- request: + body: !!binary | + JVBERi0xLjcNCiW1tbW1DQoxIDAgb2JqDQo8PC9UeXBlL0NhdGFsb2cvUGFnZXMgMiAwIFIvTGFu + Zyhlbi1VUykgL1N0cnVjdFRyZWVSb290IDE2IDAgUi9NYXJrSW5mbzw8L01hcmtlZCB0cnVlPj4v + TWV0YWRhdGEgMjUzIDAgUi9WaWV3ZXJQcmVmZXJlbmNlcyAyNTQgMCBSPj4NCmVuZG9iag0KMiAw + IG9iag0KPDwvVHlwZS9QYWdlcy9Db3VudCAzL0tpZHNbIDMgMCBSIDExIDAgUiAxMyAwIFJdID4+ + DQplbmRvYmoNCjMgMCBvYmoNCjw8L1R5cGUvUGFnZS9QYXJlbnQgMiAwIFIvUmVzb3VyY2VzPDwv + Rm9udDw8L0YxIDUgMCBSL0YyIDkgMCBSPj4vRXh0R1N0YXRlPDwvR1M3IDcgMCBSL0dTOCA4IDAg + Uj4+L1Byb2NTZXRbL1BERi9UZXh0L0ltYWdlQi9JbWFnZUMvSW1hZ2VJXSA+Pi9NZWRpYUJveFsg + MCAwIDYxMiA3OTJdIC9Db250ZW50cyA0IDAgUi9Hcm91cDw8L1R5cGUvR3JvdXAvUy9UcmFuc3Bh + cmVuY3kvQ1MvRGV2aWNlUkdCPj4vVGFicy9TL1N0cnVjdFBhcmVudHMgMD4+DQplbmRvYmoNCjQg + MCBvYmoNCjw8L0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggMjg2ND4+DQpzdHJlYW0NCnicvZxZ + bxw3EsffBeg79ONMsGrzPhZBAMvXerEGkrWAPBiLwJYPGIilXVubbL79VrHvYRfZ3cOOAI2OLvJf + LFb/SPbB6tGP1fffP3r15OXTiv3wQ3X99En1n8sLVjP88lxUrDLwab2ovn64vPj5u+ru8uL65vLi + 0XNecVMzV918vLzgYMcqXikpam4ry1TtTHXzBexevLbVp29QZ/Up/OXav15cXrw5vLz77agP9/D9 + +WgOt/DzA3xXx39VN3+/vHgGOj9dXpzlkAOH+Nih4Ecr//x4JYP6V1D/azlVzVzNDKV60rzq2asn + VTXqCL6+I8RcLxjrayUi+eujgmhf+cOv+PEuxN+CUyYcefsJ/wsfrjG6g+PfNkfmxC9vau8pv3Jh + EaXCYmSt9Yl8dQV1OlXd3L45cCFLNVizmvt5xajBZ6iI2klK5W/HK25CF2NXvyulCX0oSM2QOQ/H + KxXS6h9v7yCxPhRS1hx6US2MaZREslQSKVtbHsn/88N7aPCX+1JRNqa2mhLDU/M9fP8Fo42B/hl/ + eVwqzkwktHNxVqXiLHntbOJk1VoXPlnnFN8croqpqJrJP7VdVtSCiGTBdlmN1RMqGvCjAUSi/a1U + irJaakozl6K6VIri+C9Xy5tS8hAEtV7eFpLXTtV6WfBBClJRM1Vpo2suK6419h9XtVEjwbGbbnBz + UVnCWQsQc1jW1SIeNF4er2wzXH34EqXmObIcE9RSsicxGoVJCFfLiSaEOBUmP4RpUVnCXyFlbQTl + 70/HK3P4Lww4YTwP8RoG+j+iwJ3liDW1NOsDJyEbpVuRX3y06llUmHBYOpjTasrhH3F9EWJ1e5Qz + M6FzlBWHPvMrQ/Xo8deHzx/f3j5U1/BXKAB5zgR0F0zsrK2AKa75QAc+frfoeDhPmuNtGyYWQlhc + DpE1dAkz1KDt1EI6WftxBYzxU4smkrQXWsKhcTus9261SReNpsfCoaG/xo0lDdq2DMexLVOTzo/e + JvgxtTklK0xisJ4Fmc9jtCYLZ9CqJTrZ5F9IvXgieo4M9KtVczJ5ig5yGYpyEWM0WTiD0chXTkJy + m4yfl8nzcXmWyJiPW7qv4+OJr5NlN6tJMG6RVCzMTFKS3pdVhJmg48s7ZErhHikgphOAbY6nAEvV + 0I/IfQ0EYIcKSMDSXvTU6iqh6dkEOUFP0qB1dDhO07O3WUBPOW5V8rxQMT2ThTP0lBaHmlHKXJP0 + 3CIDnSbMnEyennKcLMmQ6JieycIZeka+CpKe22T8vEyensuzxMT03NJ9HT0jXzmsphV817iCMfCL + JYG2RbcD2tIYzQNN+VrLBNCa4ymgUTV0/T/UQABtqIAEGu1FB5K+EhpociAvhNjFLSENWkflhLxT + k84POQHr1OYUaHzcqmSq2hhoycIZoAmBTo5S5gkJtC0yHdAimTzQ+DhZkiFxMdCShTNAi3xVJNC2 + yfh5mTzQlmeJj4G2pfs6oEW+8nB5cAQ0QwJti24HtKUxmgcanIB8tIDFM/WUaY3JiCZjoxEMqHpG + IxufrIXHRgMz+HQ5PDXq+U97NEILn654TxoX2s8HHM9P20iD1mM+wfH8tI1PaJuetsFMXy1azggW + Uy5ZOEM5ZtHJUR49JSm3RcbpWog5mTzlBrkM5QSPKZcsnKFc5Cu96N0m4+dl8pRbniUiptyW7uso + NxMSC7PZlnLsiN8U5bbodpRbGqN5ysEJyIZVZDgLTynXmAxMmRiNYEDVMxru2HhBOjEamMEma9IT + o35QoD0aoYVNVqanjQvtbyKfoBxp0Ho8HKcp19vkKacgm4QZpwKdwDLCXKZ0mnPKC4zuKJOeUZzb + pgMB02pOJwu6kV4LEToqKiJdpnQadbG35IRuq46f18mybk2u6Ah22/qwpV3sLT82kGtpR5Bum6ji + DCMaixbXCUhd3BXzSGXABZlGamOSQWqinn5s7euhkTpUk0Jq0qOeY11VKaS2oe+JGTM1YdH4PDLo + oBpTdTDqqZrAqlX4PNGSaYGJqZosnIEq/BRmnEvPSahukYF4STYnk2fqIJebPNoYqcnCGaJGvsbL + v/Nk/LxMHqjLs8TFPN3SfR1OI1+XTx436XakWxqjWdIp5yDHk0vk1iS9RE7V0w+tfT3kEnlUTWKJ + nPaoZ0tXVWqJ3EaenjzSBq3Hw3Fy8jjYLJg8apjzikX562PKJQtnKGfC45qjPHpBUm6LDCyRlZmT + yVNukMtQTrKYcsnCGcpFvjqScttk/LxMnnKLs0TymHJbuq+j3Imv45u0QpD3hTdJtveFU5KMRuom + xRapSztkHqkWksekkdqYZJCaqKcfW/t6aKQO1aSQmvSo51hXVRKpTeRniNkbOFhEkrPrBSYNhIJJ + egJO+9Ib0EL9qd0LkTP0kU48CnQmvVJiEp9uVdcPvdrMeNLbdHKzE/1lVvFT+We/29F1sLLYBPoU + i6XPfiOgk5a85qml4WYBjm8T6T0FlNpZwEE5u6OAAMLyPevXYt/6YVYJ/9pPQAq1s4BhOLgVExCR + gDd4byoWeN08lnwlDu/w46GQnuKu9nN69w/4CPTxSh9+3f7WYCynOD5jsV/8lAqXmmMBeeyWkWFN + yQWxqNwoax2+HZFtVwzmta8QRdIdmDkMeqkxYbNAB+b9BFow7yfQgnk3gRbM+9XfgHm/+lsw7ybQ + gXk/gRbM+wm0YI4EbvC9kADK/xWjJLf7nhCKe3yb4lRgvDiUWHMxKC9rT0zHtW+vUXSU3uMiZT86 + 7ijQ0HFHgYaO+wk0dNyx/kDHHetv6LifQEvHHQUaOu4o0NAxFrgphRAm5gVwR41/44y4HHxV7fyO + sUK6axkJTF8SKYZeqefE3uwxB9Yw+V0Aqpjya18SJinvJF7M2ZHy+wm0lN9PoKX8bgIt5ferv6H8 + fvW3lN9NoKP8fgIt5fcTaCkfCZSmfCSw09UI6BG/5zmhhK3NXNLi2yxyv6sRhuO2Ndl2xSReu18C + SWJj63VjgCulDJhYt8bwpZRleJt/hbRauxkZKS1YnXrQP1Zeu/sWqczwsaPoQiXOyj7h6XqHU7Nw + 4j5Agofrl1/DFhRHCafxlSw3vgmNdx9P/alYcBMnVb/AV7HR2uNeVHHjrz9DKxFR4SLtfXVUh+u3 + 2N4QjPCBobkrNuZyvAMV+7FxL7PZQV3OCfxy5A4iij0481lKHXfbcTPqJ0nTd4eAs8CYcIeT1VbQ + t+LU2ltxVP7jrMGt4o1aeyuOlIaffhVkVamLzULb9D3+WLrUlRyhOO7ztEa61PJCAGLMOulS46lg + IcPXSJcaULmXuJ3hGulSIyq3DleUK6R1qRGVG5hGrGq1LjWkcmXwYaE10qVoxiXD+eoa6VI041zj + BgZrpEvRzPuam1Ug1aVohk8vi3XSHc04bmeEj9VUhsnwOhCMljA1gRHb9AMfw80Nf0dZqDxp/Xp4 + TA7MvFJgaGoPJlbVsrkCYqnn5PSIc8tK9/fXAS7TyBgJQ4uqLAzmohtYP/Xhid+vPlfPwtTZkXr3 + OJv90lxjdDiRlTildYc/cAPfx2Hvz5f4Gf75G0z37rvp7y0+uBxvgnWuuxwyB5hIuJvNHretowTd + UQYnabEnj3HPzvf9XP8bLHLV4Vu8cj/XCw7/gnk/4UU2Hn5z4s4HQ3MsdeqGPnb7VjRbEL8K9ww/ + Q0xY2N8U//f6AVcH8UOgZ7nFhcKt+Qi3sps3ssLRkbpW8S6K/XayZvFmr+cFRcraSsqbbFB44aDg + vdjTnS1ze6SeJew4LTy3Vep5YgoWKaRY4ZZ5DoOxWxLSwhkFY6rQf1JEOZRypFhuD9ozzxzgiKSk + iee8/w9kOwx8DQplbmRzdHJlYW0NCmVuZG9iag0KNSAwIG9iag0KPDwvVHlwZS9Gb250L1N1YnR5 + cGUvVHJ1ZVR5cGUvTmFtZS9GMS9CYXNlRm9udC9CQ0RFRUUrQ2FsaWJyaS9FbmNvZGluZy9XaW5B + bnNpRW5jb2RpbmcvRm9udERlc2NyaXB0b3IgNiAwIFIvRmlyc3RDaGFyIDMyL0xhc3RDaGFyIDEy + MS9XaWR0aHMgMjQ5IDAgUj4+DQplbmRvYmoNCjYgMCBvYmoNCjw8L1R5cGUvRm9udERlc2NyaXB0 + b3IvRm9udE5hbWUvQkNERUVFK0NhbGlicmkvRmxhZ3MgMzIvSXRhbGljQW5nbGUgMC9Bc2NlbnQg + NzUwL0Rlc2NlbnQgLTI1MC9DYXBIZWlnaHQgNzUwL0F2Z1dpZHRoIDUyMS9NYXhXaWR0aCAxNzQz + L0ZvbnRXZWlnaHQgNDAwL1hIZWlnaHQgMjUwL1N0ZW1WIDUyL0ZvbnRCQm94WyAtNTAzIC0yNTAg + MTI0MCA3NTBdIC9Gb250RmlsZTIgMjUwIDAgUj4+DQplbmRvYmoNCjcgMCBvYmoNCjw8L1R5cGUv + RXh0R1N0YXRlL0JNL05vcm1hbC9jYSAxPj4NCmVuZG9iag0KOCAwIG9iag0KPDwvVHlwZS9FeHRH + U3RhdGUvQk0vTm9ybWFsL0NBIDE+Pg0KZW5kb2JqDQo5IDAgb2JqDQo8PC9UeXBlL0ZvbnQvU3Vi + dHlwZS9UcnVlVHlwZS9OYW1lL0YyL0Jhc2VGb250L0JDREZFRStDYWxpYnJpLUJvbGQvRW5jb2Rp + bmcvV2luQW5zaUVuY29kaW5nL0ZvbnREZXNjcmlwdG9yIDEwIDAgUi9GaXJzdENoYXIgMzIvTGFz + dENoYXIgMTIwL1dpZHRocyAyNTEgMCBSPj4NCmVuZG9iag0KMTAgMCBvYmoNCjw8L1R5cGUvRm9u + dERlc2NyaXB0b3IvRm9udE5hbWUvQkNERkVFK0NhbGlicmktQm9sZC9GbGFncyAzMi9JdGFsaWNB + bmdsZSAwL0FzY2VudCA3NTAvRGVzY2VudCAtMjUwL0NhcEhlaWdodCA3NTAvQXZnV2lkdGggNTM2 + L01heFdpZHRoIDE3ODEvRm9udFdlaWdodCA3MDAvWEhlaWdodCAyNTAvU3RlbVYgNTMvRm9udEJC + b3hbIC01MTkgLTI1MCAxMjYzIDc1MF0gL0ZvbnRGaWxlMiAyNTIgMCBSPj4NCmVuZG9iag0KMTEg + MCBvYmoNCjw8L1R5cGUvUGFnZS9QYXJlbnQgMiAwIFIvUmVzb3VyY2VzPDwvRm9udDw8L0YyIDkg + MCBSPj4vRXh0R1N0YXRlPDwvR1M3IDcgMCBSL0dTOCA4IDAgUj4+L1Byb2NTZXRbL1BERi9UZXh0 + L0ltYWdlQi9JbWFnZUMvSW1hZ2VJXSA+Pi9NZWRpYUJveFsgMCAwIDYxMiA3OTJdIC9Db250ZW50 + cyAxMiAwIFIvR3JvdXA8PC9UeXBlL0dyb3VwL1MvVHJhbnNwYXJlbmN5L0NTL0RldmljZVJHQj4+ + L1RhYnMvUy9TdHJ1Y3RQYXJlbnRzIDE+Pg0KZW5kb2JqDQoxMiAwIG9iag0KPDwvRmlsdGVyL0Zs + YXRlRGVjb2RlL0xlbmd0aCA0NzY+Pg0Kc3RyZWFtDQp4nK2Yu2ocQRBF84H5hwplB7Vdj36BUKCV + LGwQ2GjBgVEoKZLA9v+Dy4sDh6rmTjDQzNCne6BO3xo6fKXLy8P98fMNlasrur450s99K1z+XlOU + CrW496n062nfvn+kt327Pu3b4ZNSPDg975vES4WEunJRp14Ge6PTa7x099Dp5XdMSC/n0fg3utu3 + Hxf04ZFOX/btNqb7tm90e38k+m9BAlpQm8pNzws6r+OdeEXhe+M+0nhD4VvhKWm8o/Be2fL4isLr + ZO9pfEPhxbhZGt9B+Do795nGDxR+CM/87icK3xqX/O4FJcJaC2vN81Heq+bs+dITlPiqDB4LfJT5 + alGe+doXlPp8dF7YPkp93oW15fko93mt7PljV1Dyc5tc8+euoOznatw9z0fpzyOHyULsQenPInZp + /vsrSn8Wucvz319R+rMIXvnyU5T9zJ37Ah9lP9PB+cNXUfazSF5lYfso+2lEL12oPpT9NLLXStOD + sp+2utL1KMp+6pNnvvoNZT+N8FXy4cNQ9tMIX5rP3oayn0b4snz9G0p/MhrXfPg2lP6kR9u9wEf5 + TyJ9LTQ/hvKfRPpaaH4M5T+J9LXQ/BjKf1I614X6R/lvCveF9OWwv4CVR3uff/8AMWTgdQ0KZW5k + c3RyZWFtDQplbmRvYmoNCjEzIDAgb2JqDQo8PC9UeXBlL1BhZ2UvUGFyZW50IDIgMCBSL1Jlc291 + cmNlczw8L0ZvbnQ8PC9GMSA1IDAgUi9GMiA5IDAgUj4+L0V4dEdTdGF0ZTw8L0dTNyA3IDAgUi9H + UzggOCAwIFI+Pi9Qcm9jU2V0Wy9QREYvVGV4dC9JbWFnZUIvSW1hZ2VDL0ltYWdlSV0gPj4vTWVk + aWFCb3hbIDAgMCA2MTIgNzkyXSAvQ29udGVudHMgMTQgMCBSL0dyb3VwPDwvVHlwZS9Hcm91cC9T + L1RyYW5zcGFyZW5jeS9DUy9EZXZpY2VSR0I+Pi9UYWJzL1MvU3RydWN0UGFyZW50cyAyPj4NCmVu + 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 + mxWDaazuLffHZf/XyULlydKvhoeloFgtJRTUpHahL93+mltBGOxpKTm6Y7Lu6v7GpCD11DNaQExK + 6AdgSOeZT717wkML9upBhyuL6n11mfRLsw1gXRIVLp3a0+/RA+T32sKAIVRhtoQn9+zXM8QITO+A + 9glKLNq+F87X3ru/nWXj+ea8/ouJHAe52xbDiDYr2x4OQ5UX8RyPeO0OBw4teexOr37fA/vb+QJ0 + +xYuIfZaweC/AN6IFYv+0NkZIO4MmKuL8ERtde5O1TH+MO+X/kbPZ/AJ9Sd9u/979eA4Gd6x3mUW + g6WWMJhZi94xhb0jFJHhecL9wep69bHn+5wihEsfiDWLTrGFneJuoM3PeF46LXyXMMzZUOHYoeH7 + xGCtb1Gxwi2rGcxq7BqXFo4omJxw9Qd5lMFVFhVbOo1958iBPCIwaeRJ4/8DtXV3Ww0KZW5kc3Ry + ZWFtDQplbmRvYmoNCjE1IDAgb2JqDQo8PC9BdXRob3IoS3Jpc3RhIFByYXRpY28pIC9DcmVhdG9y + KP7/AE0AaQBjAHIAbwBzAG8AZgB0AK4AIABXAG8AcgBkACAAZgBvAHIAIABPAGYAZgBpAGMAZQAg + ADMANgA1KSAvQ3JlYXRpb25EYXRlKEQ6MjAyMDA0MjIxNjQ1MjktMDcnMDAnKSAvTW9kRGF0ZShE + OjIwMjAwNDIyMTY0NTI5LTA3JzAwJykgL1Byb2R1Y2VyKP7/AE0AaQBjAHIAbwBzAG8AZgB0AK4A + IABXAG8AcgBkACAAZgBvAHIAIABPAGYAZgBpAGMAZQAgADMANgA1KSA+Pg0KZW5kb2JqDQoyMyAw + IG9iag0KPDwvVHlwZS9PYmpTdG0vTiAyMzIvRmlyc3QgMjAzNS9GaWx0ZXIvRmxhdGVEZWNvZGUv + TGVuZ3RoIDMwNTE+Pg0Kc3RyZWFtDQp4nO1b24ocyRF9N/gf8g+mIu8Jy4Jt7WKzrBCSwA/CDyOp + LQ07M72MWiD9vc+pipyetTOz1Gn7weCHmbrG/UTkpaKtmMXYYIIYG40s2dhkJOIezsQaW3DfG7cY + J9FYnMWMU+NjMM6CLBrnTIjJOG+i4FkwMRa8ZpIFUTIp4W1rsrXGi8nJGe9NAUPvTMnkBLEuGx9w + LLi9GBEPfsWIBcOAawuOHtfOigkWx5SpsXiwCR7HnExwRgKIfMaxRBNoB/QK4J+kmAD6lHAfzzOs + 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 + o7YHauOettT9bxfFC374xVj+v4b+R2qoOrMW0tkCqt2Sut9ed8Hr1nDdsK3bqHVDsm4T1s27ug1W + N6fqllHdfKlbInWjoi7560K8Lo/rQrMu/+qirC5v6qKjLgX+W4W/fs361q9fDMY/AFTdMPANCmVu + ZHN0cmVhbQ0KZW5kb2JqDQoyNDkgMCBvYmoNClsgMjI2IDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAy + NTAgMzA2IDI1MiAwIDUwNyA1MDcgNTA3IDUwNyA1MDcgNTA3IDUwNyA1MDcgNTA3IDUwNyAyNjgg + MCAwIDAgMCAwIDAgNTc5IDU0NCA1MzMgNjE1IDQ4OCA0NTkgNjMxIDYyMyAyNTIgMCAwIDQyMCA4 + NTUgMCAwIDUxNyA2NzMgNTQzIDQ1OSAwIDAgMCA4OTAgMCAwIDAgMCAwIDAgMCAwIDAgNDc5IDUy + NSA0MjMgNTI1IDQ5OCAwIDQ3MSAwIDIzMCAwIDAgMjMwIDc5OSA1MjUgNTI3IDUyNSAwIDM0OSAz + OTEgMzM1IDUyNSA0NTIgMCAwIDQ1M10gDQplbmRvYmoNCjI1MCAwIG9iag0KPDwvRmlsdGVyL0Zs + YXRlRGVjb2RlL0xlbmd0aCA1MzE4Mi9MZW5ndGgxIDEzNzU5Nj4+DQpzdHJlYW0NCnic7H0HXFTH + 2v475+zCUhaWKrLiLq6Auig2FEtklaJoLCirgA2k2LChGI0lJEZNSEy5Mb2ZnhtNsqwaMdXkphfT + e+/JjaZdzc01Ub5nzruDaDTJvfd/v3z3/9sXnvM8887Me2bmzMyZjRBIEJENFxNVFIzIL1mf7HuW + xJeZRLFJBSNOzbvntXVfkfhoNVGIb/ykrL7XPly5k0icg1oVVQsqF7/T99MUovmbicyDq5Yvc+5e + /EY20Y1fIH1/7eLZC9a+pw8kWvwCkdU9u25l7bvOlS6i228meumvc2oqq38cu9KHeJGIN2AOHNY7 + O+1HOh/prnMWLFuRPXOSG2nEm7utblFV5U2b53cjseoiFJ+8oHLF4l7W9G7In4PyzgU1yyqvOmvL + chI/yfpnL6xcUHPdoYMzSTSjfu+lixctXdZqpw3ozzRZfnF9zeK42V06Eq35GbdDP+ENGfzhP3a9 + WDAzeuhB6mghafd9tfpZya8XnTb+p0OHG8P2WQYgGUYasaFeCB0h8Wj4lp8OHdoSts+I1M46bpMe + ew+6hGy0gnTUtFEWbcQoD8B9NeTqJre4iMxkMV9p7oeQnZn1F2iDRhbSos2appl0zfQJ9WrdQ11X + GS2AjZ3kdJKHKO1ZbkPodVq6k0SrzNN3maNkTyneFHW0NeJ5PO4byEX/pJnKaZspnypPmLePtrVP + 618cmz6Z6XfSNnMkTf1FvJ+P1tdMvy/WCeNPP3HdkNf/9ZjHm6kLxzLPoipT6XHjcCeN/H91n/YW + 2plO+Vfr6gcw+/5JM5noBv0ZWnDCvBq64Zj4jcemT9qOCXSD6Syq+0W8FUfri32/Hgv5MSfL0z44 + cd2QENz34hPnme6g2l+73/GmP8ZxTM1Uq+8/bhzGU9EJ65RRp2PuuYmu/933O0ypIcNo4Anz1v32 + c9VfpWm/917KTP3pSn0Wlf9amRDB+Shbccz9fqLp/+z9/i+a/ihlH+87vq/Hm3iN1v9WXJS58l8t + E1JNV8pnc7J6ppxff2a/KN8ulvb0sXH1VCo+UR3zXcf6tbso9RdxG37pO1EZcxyXC3nzt8vLMmjv + 5t8qp0y/lrqcNO/6k+edyLRtlK99SnXaOINHaS28x2uXUw/JouroO1LMoDrTZJT9zECBrGf4f0C6 + N40QH5NL+xJ6PTna4m84qv9/NsxrEnv/6FYELWhBCxqbdrUIP2leBe1vn8ZnLGO/17rSfZqZLv9P + t82411K8Q4D/jXv9XtOz6bw/ug3KTJtppvYMufR9NAsoNnmpi/46eACt1f2UDa4CpuHz8CjgLqAe + mA04gRpgPlAFTDSQR7O1TdRRP5Om6UupTN9G6focqtR30UK9iLL0nTRGv58m4gwxAdgE1ACzgMHA + bKASmAEUyzK/aF+3392+3idqH85lo8SPOEP4aIx2Jw3X3qY07VbMkfdpqnYx9dU+hP99yj/RWP07 + dbVrKUccpD7aRBqqFVFPbTTFa4WoU0y9tRzqok1BrLGI/TvL/WdnRdCCFrTfMtPD/9x/+ziRaQep + k/Y5XaCHULk+hi7QbgfORzof6al0gbiVLmgri7RpQbv0GyjXQOXa1TRFa6TCY9pW8M99Rgta0IIW + tKAFLWhBC1rQgha0oP33m/yMafDn/NlRfc409O/4nNnmx+dN+VlTpYOfMYMWtKAFLWhBC1rQgha0 + oAUtaEELWtD+OBO/+VPyQQta0IIWtKAFLWhBC1rQgha0oAUtaEEL2v+uaYspFhgIpAHpQGegG9AR + sAPxUv9b96ilYcAMYHwAvYBiIB8YCXikPnHt1tv/nXsHLWhBC1rQgha0oAUtaEELWtCCFrSgBS1o + QQta0IIWtKAFLWhBC1rQgnZya733j25B0IL2B5seQCf+S1LChxSUfiuZhPybF/nkITOZoKzUhXrR + YCqisTSJplANzaa5tJiW00raQnfSdtot+qRkpvRK6ZOSnTIoJTdlhDPMaXMudq50npv2bKvxd6IQ + xUmZ1JuG06k0AVEqjSh1VB+I4m+L0julX0pOyrC2KMucZxhRROvBY3qQAnxJB4zWj2ut0h7TC/Vh + lP3VxvZf+zM+nvXxho83EL1/SuBvZnnQt1E0DfdeiFS94VtOa3/HmFXzyOmj9ct1r16vl+r79P36 + 1/o3+rf6d/r3+t/0A/pBfQpGLYZiKQljm04Z6HUWDcM9p1AZldMMoYloYRPJorNYJBrEcrFGnCvO + FxeJq8ROsUd8YDKbQkyhJospzBRuijBFmqymKAoRPxj3/uH4v/uFtBb4K2Ea/bqJo63/ZSb3B3zi + HrW3X/ZO2rDATwAFehkou+wEzWjrP/QEwPjrPUfHArptNIycJ36jX3+86f+JoKI2uBJPan/cSiRP + +Yb1y5bWL1m8aOGCuvnz5s6ZXVtTPWvmjOnTppaXlXpLJk0snjB+3NhTx4wuGjWysCA/b8RwT+6w + U4YOGTwoZ+CA7KxePTO7pad1dXVxJMXH2KKtEeFhltAQs0nXBGUWuAornL70Cp8p3TVqVE+ZdlXC + UdnOUeFzwlV4bBmfs8Io5jy2pAcla48r6eGSnraSwuYcSkN7ZjoLXE7fc/kuZ4soLy6F3pTvKnP6 + 9ht6rKFN6UbCikRqKmo4C5Lm5Dt9osJZ4CtcPqepoCIf8ZojwvNceTXhPTOpOTwCMgLK1821uFl0 + GyYMoXUrGNyskcUqb+vT0woqq30TiksL8u2pqWWGj/KMWL6QPF+oEcs5V7aZznM2Z+5pOr/FRrMq + 3JHVrurKaaU+vRKVmvSCpqaNvhi3r7sr39f99E+S0OUaX6Yrv8DndiHYmIltNxA+c5rN5Ww6SGi8 + a/++Yz2VAU9Imu0gSSm72DZMyFea0Da0EP1LTZVtOa/FQ7OQ8DUWl3LaSbPsfvJkuct8WoXM2aNy + Erwyp1HltFWvcKXKR1VQEfhePifJ1zjL2TMTo298p+Eb+U6fnl4xq2qO5MqaJld+Po9bSanPkw/h + qQz0taC5dxbKV1agE3PlMBSX+rJci33xrhFcAA6nfAZzJ5UaVQLVfPF5PqqoCtTyZRXky3Y5C5oq + 8rmBMparuHQ39Wv9oLm/0769H/WnMtkOX2IeHkp6QVNpda3PUWGvxvysdZbaU32eMgxfmau0pkw+ + JZfN1/0D3C7VuKNRC307rrQqLHsemmZxlmp2vUw+LTichbi4RgxFhg2Py0jKJzpiqLNU2EkVw10C + JaQ6Jg4SelreKJmly6p5o+ypZalsv9Ike6BN5jSfpV0sGxxtbeL7nLRpXFo2qLuzoCa/XQOPCWoO + NDAQ7cTt1ORYBG6MGhb5OEepLD0NKxc+DWEMl3yKSU4fTXCWumpcZS7MIc+EUtk3OdbG8x0zyTWm + uLzUeNqBWVJyTIrzczjlo1Rkq4SWhzlY6Larx2qkRxrptuSo47KLVLZLtqupqbqZ9DQ5le3NwhDm + vPPKfOPdZS7fLLcrVbazZ2azhSJTSyrysFYLsd25CitdeFEVNlW2tDbOamr2eJoWF1TMGYx10eQq + qm5yTSodajcaP7F0jf10ee9YGiPGlIxAKI1GNLvEOcXNHnHOpPLS3TYi5zklpX5NaHkVI8qauyKv + dLcTLwDDq0mvdMqEUyZkpIlIWIzy9t0eokYj12Q4jHRViyDDZ1E+QVUtGvtsfKN040YenOeqWkyc + 41GlTfBZ2NfIpbsFSluQY5M59xJeJGRksjWTHGBPuNlj8YR5IjWrhiGVLj8896JsmKDtkcIq7M2I + OdFwt4jG5jCPfbcRaWKgZCNKSl9jmw8tl8XaBcL9uOPeoz3wlpdujyTEN64oMUIaZmHSHMwhvE8K + nNVy/q0um9NUUSZ3D0rEXMW38AnXMPJprmFocUikL9xVM8IX4Roh/bnSn8v+EOkPxcwXiQIPW266 + TRUubMRYMaVkF7zWdBnS2dLaWlKa+px9f1kq1tI0oLzUF+bGy82cNhrlRkpUwD3S11hVKdtB3lJZ + NzStqKoM61IFRJEiXxgihAUioEShUUeuN1SqwlyrdBkSbmwdjWW+Mre8aencMmO92nw0yjXYF5LO + Mc3p8kZZZU2xrr7G5oO1Hp62UVIY2kaTStljRxI3K+NBCo1Ey6tcyKqqcPIcmYS1zC+LcDt7arDn + m9JrDITbA5kku6WnRVjDfWG9EBDfUkf0knuOOS20rIwbb6Q2Bgrg3jZfBFqU3m4oAxUwOsgqkm3B + 90Y0VRZ9WIYpbqGJrhXYOmWjjUihyPZZ04oq8Xbj+hHwuHJUZYvcBCMCMR5lb6jseSTGHVtCS+tt + rpWp7Qx7h3z7yflH9t3yeFnWdLzDN9XdM9NyvNdquJuaLNYTV+Dxsljb2HBqaVXyrQCWE86Yb84C + +ap0jW7WxrkNFgY3jXbhDaKlSeCgo2P5pDqry2QpNHmCsZedtJBoV0i+po3gTbYhKiUCKX6YTb7Z + xybntCULJXAYTOvFZwh0Re61mCvz7L46zExVRD4RZ5PT5hrskhej8kiJCjyktmWB6Y9ZJxdNY5Wz + dBYmOwIWVjQVNskjalVlYNgCd/ItdB8TEutCYPIgkOyOr3GCs6LMWYGjqSguTU21YzWCnbU4p7oq + 5atgAvdnQrlxVKlsklOccFIps/tC8WKqraxxpeIN4pM7EI++bKMpsGzI3tTkavIZ67YQhRE+Hcuu + SBK+F7tdlTXyCF0rT9A1Rt1CNNcYHRnNXuDCWq6B2xhLDBy2vlnyUtUkD+jTK9wYiZim2CbnoCZs + wdPx9jClV02uwKtKvpGcxqOutCOFQSiSqTIE4oJhabIgLwHZmgXu5umhaUc9xvciNxe2GFHRsoml + vgmqiLGepFji9mkdcpApOy8mlpeqfUqX2UUYXg9mlV3Wdvq0ktLA4zHqF8mqdvXAuBo8xjsksL7a + 3jbqPTTNjjE9qR8vB334JO1J7XHKIYf2RIDfpRztLfJqb4JfB78R4NfAr4JfAb8Mfgn8Ivgh8IPg + B8D3k5dM2tvUHygB9DZVDdwMvAKYaT4iCYpAfUHx2iOUD1QDy4DNgBllH0TezYgoyKmdvSMsSYzG + A12nxFlKnKlEoxJnKLFWiTVKrFZilRKnK7FSiRVKnKbEciUalFimxFIlliixWIlFSixUYoESdUrM + V2KeEnOVmKPEbCVqlahRolqJKiVmKVGpRIUSM5WYocR0JaYpMVWJciXKlChVYooSk5XwKlGixCQl + JipRrMQEJcYrMU6JsUqcqsQYJUYrUaTEKCVGKlGoRIES+UrkKTFCieFKeJTIVWKYEqcoMVSJIUoM + VmKQEjlKDFRigBLZSvRXop8SfZXoo0RvJbKU6KVETyUylXAr0UOJ7kp0UyJDiXQl0pToqoRLiS5K + pCrhVMKhRGclUpTopIRdiWQlOiqRpEQHJRKVSFAiXok4JWKViFHCpkS0ElFKWJWIVCJCiXAlwpSw + KBGqRIgSZiVMSuhKaEoIJSggRKsSR5Q4rMTPSvykxCEl/qHEj0r8XYkflDioxAEl/qbE90p8p8S3 + SnyjxNdK7FdinxJfKfFXJb5U4gslPlfiMyU+VeITJT5W4iMlPlTiAyXeV+I9Jd5V4h0l3lbiLSXe + VOINJV5X4jUlXlXiFSVeVuIlJV5U4gUlnldirxLPKfGsEs8o8bQSTynxpBJPKPG4Eo8p8agSf1Hi + ESUeVmKPEg8p8aASDyhxvxL3KXGvEruVaFFilxL3KLFTiR1KbFfCr0SzEj4l7lbiLiXuVGKbEluV + uEOJPytxuxK3KXGrErcocbMSNylxoxI3KLFFieuVuE6Ja5W4RomrlbhKiSuVuEKJy5W4TIlLldis + xCVK/EmJi5W4SIkLlbhAiU1KnK/EeUo0KXGuEucosVGJDUqsV0Ide4Q69gh17BHq2CPUsUeoY49Q + xx6hjj1CHXuEOvYIdewR6tgj1LFHqGOPUMceoY49Qh17hDr2iHol1PlHqPOPUOcfoc4/Qp1/hDr/ + CHX+Eer8I9T5R6jzj1DnH6HOP0Kdf4Q6/wh1/hHq/CPU+Ueo849Q5x+hzj9CnX+EOv8Idf4R6vwj + 1PlHqPOPUOcfoc4/Qp1/hDr/CHX+Eer8I9SxR6hjj1DHHqFOO0KddoQ67Qh12hHqtCPUaUeo045Q + px2hTjsib7sULdrZ/s7DHDgz+zsngM7i1Jn+zoNBjZw6g2mtv3MkaA2nVjOtYjqdaaU/ZThohT8l + D3Qa03KmBs5bxqmlTPXsXOJPGQFazLSIaSEXWcBUxzTf36kANI9pLtMcptlMtf5O+aAaTlUzVTHN + YqpkqmCayTSD603n1DSmqUzlTGVMpUxTmCYzeZlKmCYxTWQqZprANJ5pHNNYplOZxjCN9tuLQEVM + o/z20aCRTIV++xhQgd9+KiifKY9pBOcN53oeplyuN4zpFKahXHII02CuPogph2kg0wCmbA7Wn6kf + R+nL1IepNwfLYurF9XoyZTK5mXowdWfqxpTBodOZ0jhmVyYXUxcOncrk5HoOps5MKUydmOxMyf7k + caCOTEn+5PGgDkyJ7ExgimdnHFMsUwzn2Zii2RnFZGWK5LwIpnCmMM6zMIUyhfg7TgCZ/R2LQSYm + nZ0apwQTGSRamY4YRcRhTv3M9BPTIc77B6d+ZPo70w9MB/1JJaAD/qRJoL9x6num75i+5bxvOPU1 + 036mfZz3FdNf2fkl0xdMnzN9xkU+5dQnnPqYUx8xfcj0Aee9z/QeO99leofpbaa3uMibnHqD6XV/ + hymg1/wdJoNeZXqFnS8zvcT0ItMLXOR5pr3sfI7pWaZnmJ7mIk8xPcnOJ5geZ3qM6VGmv3DJRzj1 + MNMepoc470GmB9h5P9N9TPcy7WZq4ZK7OHUP006mHUzb/Ym5IL8/cSqomcnHdDfTXUx3Mm1j2sp0 + hz8R+7X4M0e5nek2zruV6Ramm5luYrqR6QamLUzXc7DrOMq1TNdw3tVMVzFdyXQFV7icU5cxXcq0 + mfMu4Sh/YrqY8y5iupDpAqZNTOdzyfM41cR0LtM5TBuZNvgTKkHr/QmzQGczrfMn1ILOYjrTn+AF + NfoTsBmLM/wJA0BrmdZw9dVcbxXT6f6EatBKrr6C6TSm5UwNTMuYlnLoeq6+hGmxP6EKtIiDLeSS + C5jqmOYzzWOay/XmMM3mltVy9Rqmai5ZxTSLqZKpgmkm0wzu9HRu2TSmqdzpcg5dxjcqZZrCzZ3M + N/JylBKmSUwTmYr98R7QBH+8vMN4f7yc3uP88etAY/3xPUGncpExTKP98TgXiCJOjWIayc5Cf/xa + UIE/fiMo3x9/BijPH98IGuGPLQQNZ/Iw5TIN88fi/S5O4dRQf0wZaAjTYH+MnBqDmHL8MSNBA/0x + paAB/phyUDbn9Wfq54/JBPXlkn38MbJjvf0xcm1mMfXi6j35DplMbg7Wg6k7B+vGlMGUzpTmj5Gj + 1JXJxTG7cMxUDubkKA6mzlwvhakTk50pmamj3zYdlOS3zQB18NtmghKZEpjimeKYYrlCDFewsTOa + KYrJyhTJJSO4ZDg7w5gsTKFMIVzSzCVN7NSZNCbBRJ7W6FkOiSPRVY7D0dWOn6F/Ag4B/4DvR/j+ + DvwAHAQOwP834HvkfYf0t8A3wNfAfvj3AV8h769Ifwl8AXwOfBY12/Fp1BzHJ8DHwEfAh/B9AH4f + eA94F+l3wG8DbwFvAm9Y5ztet/ZxvAZ+1VrneMWa7ngZeAn6Ravb8QLwPLAX+c/B96x1geMZ6Keh + n4J+0jrP8YR1ruNx6xzHY9bZjkdR9y+I9wjwMOBp3YPrQ8CDwAORSxz3R9Y77otc6rg3cpljN9AC + 7IL/HmAn8nYgbzt8fqAZ8AF3R6x03BVxuuPOiNWObRFrHFsj1jruAP4M3A7cBtwK3BLR03Ez+Cbg + RtS5AbwlYr7jeujroK8FroG+GrGuQqwrEesK+C4HLgMuBTYDlwB/Qr2LEe+i8HGOC8PHOy4In+3Y + FH6L4/zw2xzr9TTH2XqOY53IcZzlbfSeubXRe4Z3jXft1jXeiDUiYo19zZg1q9ZsXfP2Gk9sSPhq + 7+neVVtP9670nuZdsfU0773aBqrV1nuGepdvbfCaGuIbljXoBxrE1gaR3yB6NwiNGmwNzgY9cpm3 + 3rt0a72X6ifUN9b76k1DfPUf1GtUL8JbWvdsr7d3LgR7VtdbbYVLvIu8i7cu8i6sXeCdhwbOzZnt + nbN1trc2p9pbs7XaW5Uzy1uZU+GdmTPdO2PrdO+0nHLv1K3l3rKcUu8UlJ+cU+L1bi3xTsop9k7c + WuwdnzPOOw7+sTljvKduHeMdnTPKW7R1lHdkTqG3AJ2nTrZOzk66TTZgXCe0hOxiRG+7x/6B/Vu7 + iew++x67Hhud7EjWukd3FHnjO4pFHc/oeGFHPTrp+STNk9Q9szC6w/Md3u/wTQdTnKdD916FlGhL + dCbqCbJviWNLCg3OzWfuk2301ZHoSi+MThDRCY4EreCbBLGBdOEUgoQNpFtQZodIcBTqDwj5I35m + EuIiKnGPabHQxDE+y4SpPnGOL22SvHqKy30h5/jIWz61tFmIC8qMn0nwxcsfKjHS6zdtopQRY3wp + k0r9+pYtKSPKxvgapfZ4DN0qNaFImXvG0oal7lLPKRTzQcy3MXrCQ7bnbVp0tIiObo3WPNFofHSU + I0qTl9Yo3RPVZ2BhtNVh1eSl1aoneqzwyP5lRE4oKYyOcERo3tyI8RGaJyI3r9AT0bN34S/6uV32 + k+/sXjYDlxlLl7mNb6TKRINMuqVXfi9dhrT8ajDS5P5V42KgmUthy5Rz2a/X+r9u4o9uwH+/8U/y + DG/VzqZqbR1wFnAm0AicAawF1gCrgVXA6cBKYAVwGrAcaACWAUuBJcBiYBGwEFgA1AHzgXnAXGAO + MBuoBWqAaqAKmAVUAhXATGAGMB2YBkwFyoEyoBSYAkwGvEAJMAmYCBQDE4DxwDhgLHAqMAYYDRQB + o4CRQCFQAOQDecAIYDjgAXKBYcApwFBgCDAYGATkAAOBAUA20B/oB/QF+gC9gSygF9ATyATcQA+g + O9ANyADSgTSgK+ACugCpgBNwAJ2BFKATYAeSgY5AEtABSAQSgHggDogFYgAbEA1EAVYgEogAwoEw + wAKEAiGAGTANb8VVBzRAAETVAj5xBDgM/Az8BBwC/gH8CPwd+AE4CBwA/gZ8D3wHfAt8A3wN7Af2 + AV8BfwW+BL4APgc+Az4FPgE+Bj4CPgQ+AN4H3gPeBd4B3gbeAt4E3gBeB14DXgVeAV4GXgJeBF4A + ngf2As8BzwLPAE8DTwFPAk8AjwOPAY8CfwEeAR4G9gAPAQ8CDwD3A/cB9wK7gRZgF3APsBPYAWwH + /EAz4APuBu4C7gS2AVuBO4A/A7cDtwG3ArcANwM3ATcCNwBbgOuB64BrgWuAq4GrgCuBK4DLgcuA + S4HNwCXAn4CLgYuAC4ELgE3A+cB5QBNwLnAOsBHYAKyn6uGNAutfYP0LrH+B9S+w/gXWv8D6F1j/ + AutfYP0LrH+B9S+w/gXWv8D6F1j/AutfYP2LegB7gMAeILAHCOwBAnuAwB4gsAcI7AECe4DAHiCw + BwjsAQJ7gMAeILAHCOwBAnuAwB4gsAcI7AECe4DAHiCwBwjsAQJ7gMAeILAHCOwBAnuAwB4gsAcI + 7AEC619g/Qusf4G1L7D2Bda+wNoXWPsCa19g7QusfYG1L7D2/+h9+L/cyv7oBvyXGy1d2u5gJi1p + pvyFp9DriI5ccszvqUygebSUGvG1gTbRJfQQvU2zaB3UlbSFbqU/k48epqfo9d/xOy+/246sNC+g + SH0XhVAcUeuh1v1HbgVazFHtPJcgFWdyHvW02lq/Ps739ZFLWm1HWkJiKdyoa9Vegvdv4nDrIbxy + kW4dINPaRuhoo8Z3odcdufvIbceNQTGV01SaRtOpgirR/2qaQ3MxMvOpjhbQQiO1EHmzca1FaiZK + YXsx9NFSi2gxUE/LqIGW42sx9NJASuYtMdINdBq+VtBKOp1W0WpaE7ieZnhWI+d0I70CWEtn4Mmc + SWcZSjF71tHZtB5PbSOdQ+f+aurcNtVE59H5eM4X0IUn1ZuOSV2Er4vpT5gPm+lSuoyuwLy4mq45 + znu54b+KrqPrMWdk3qXwXG8omXs/PU476S66m+4xxrIKo8Yjosal1hjDxRiD1ejhunYt5vE7rW20 + 1qLvsm9NgZ6ugP+sdjWWB8ZRllyHkhyFn4OMsua4kbgIfWB9tEecutTo/1Fv+1H5Na8aj2vajczV + Rkqq470n05fRtViBN+AqR1WqG6FZXW/o9v7r2spuMdI30c10C57FbYZSzJ5boW+j27G276CttA1f + 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 + IDAgMCAwIDQ1OSAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCA0NzMgNDk1IDAgMCAwIDAgMCAwIDAg + MCAwIDAgNDk4IDAgNDk0IDUzNyAwIDUzNyA1MDMgMCA0NzQgMCAyNDYgMCAwIDI0NiAwIDUzNyA1 + MzggNTM3IDAgMzU1IDM5OSAzNDcgNTM3IDAgMCA0NTldIA0KZW5kb2JqDQoyNTIgMCBvYmoNCjw8 + L0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggMzM2MzMvTGVuZ3RoMSAxMDI3MDQ+Pg0Kc3RyZWFt + DQp4nOydCXiTVdb4z33fLM3WJl3SJU2aNk26J90otAUaulEoW6HBFgRaaLG4UYGqoAzgglhFVFzG + BUFHxwWUNIAUQUTFXdQZUccdlxnXjqjgKNDkf+570tIiuMz4jd//+XLa8/7uPffcfXsj8SkwANDj + QwZNVeWV9bcVPhsGrO2PAGqMj6t4/SnTOGBzDqBD98Qprvz1X835GoCtwlxNc85pblc9YVwHcNYN + mP7wnPMXWcseafgS4NpKAMWque1nnHPn5+WbANrHAaiizjh78dyPlhs+ArjpRYC5+rbW5pbvT198 + CZanxfKK2tCg25n4KsYxP6S2nbPowsefSy3F+KcA8zadPX9O81VvnncY4Ng76D71nOYL29Pvi7Ng + ehv6W89pXdR86yUbzge24HuMX3Zu8zmt75e/mgusoBAg96r2+QsXBUywEvuzh/u3L2ht/8H9/EKA + xU0Axg+Aj4Wi5IMVj770+KyI4YchPgy47Pzi4hc53xhzweSjb/UOUSeETUJfFQhAgvkU4Ae2V73h + 6FtHVqoTpJIGSPwmbjFlwlrQw4UgYk49uABr1X6P9QqYKsrGCrtADmHyW+QFWKSFKL4CjwgQBkKE + UhBlMlGQfQzOwB5IvQiLVfGyx0+xWsEKYH+R2qC8Q3BYgQV4mrhHHs57CtGy8OOtYS/jbL0JsfAr + RXYxrP61eX5OxE2/fZm/RBT+/0694rNQdlL7d6D9b9R/MpGNBvWvzjMM982p0q4bnCauObXvIL8G + WCm7HRp+ykfQ/3RZmB53yrRjJ8+rqMF6nzl5muwt8PxUfSeK2Hu8HJn9hHGYDxUnzXMRmAbVuQku + +zV1nkxkMnD8Ej/xWxj9q8uuhT/8Ct/aQXEljP219f1vFPGFwXPG5cS+nijsX3DWz5WLPj87tj/l + 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 + KrFHQKlmZxW8qHpfRETYMZZdos8K9Tc0bmVNGZWf8PP4qiK6kZk7D1Hp68k6+cqujnrMi0+QTUvB + 02LWgEvJpMfQvQGNGyJ9Cp8e2OiVa3QkzxGYHxUIMdPMzhyDZ2iKtYRjadyCZoFjccXgVeuxLKL/ + AfpFWhMNCmVuZHN0cmVhbQ0KZW5kb2JqDQoyNTMgMCBvYmoNCjw8L1R5cGUvTWV0YWRhdGEvU3Vi + dHlwZS9YTUwvTGVuZ3RoIDMwODQ+Pg0Kc3RyZWFtDQo8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9 + Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/Pjx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6 + bWV0YS8iIHg6eG1wdGs9IjMuMS03MDEiPgo8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cu + dzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgo8cmRmOkRlc2NyaXB0aW9uIHJkZjph + Ym91dD0iIiAgeG1sbnM6cGRmPSJodHRwOi8vbnMuYWRvYmUuY29tL3BkZi8xLjMvIj4KPHBkZjpQ + cm9kdWNlcj5NaWNyb3NvZnTCriBXb3JkIGZvciBPZmZpY2UgMzY1PC9wZGY6UHJvZHVjZXI+PC9y + ZGY6RGVzY3JpcHRpb24+CjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiICB4bWxuczpkYz0i + aHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iPgo8ZGM6Y3JlYXRvcj48cmRmOlNlcT48 + cmRmOmxpPktyaXN0YSBQcmF0aWNvPC9yZGY6bGk+PC9yZGY6U2VxPjwvZGM6Y3JlYXRvcj48L3Jk + ZjpEZXNjcmlwdGlvbj4KPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgIHhtbG5zOnhtcD0i + aHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyI+Cjx4bXA6Q3JlYXRvclRvb2w+TWljcm9zb2Z0 + wq4gV29yZCBmb3IgT2ZmaWNlIDM2NTwveG1wOkNyZWF0b3JUb29sPjx4bXA6Q3JlYXRlRGF0ZT4y + MDIwLTA0LTIyVDE2OjQ1OjI5LTA3OjAwPC94bXA6Q3JlYXRlRGF0ZT48eG1wOk1vZGlmeURhdGU+ + MjAyMC0wNC0yMlQxNjo0NToyOS0wNzowMDwveG1wOk1vZGlmeURhdGU+PC9yZGY6RGVzY3JpcHRp + b24+CjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiICB4bWxuczp4bXBNTT0iaHR0cDovL25z + LmFkb2JlLmNvbS94YXAvMS4wL21tLyI+Cjx4bXBNTTpEb2N1bWVudElEPnV1aWQ6NThCQjA4MDUt + RjY5Ri00NDBGLTgzOUItMURFMDI1NjUxREUyPC94bXBNTTpEb2N1bWVudElEPjx4bXBNTTpJbnN0 + YW5jZUlEPnV1aWQ6NThCQjA4MDUtRjY5Ri00NDBGLTgzOUItMURFMDI1NjUxREUyPC94bXBNTTpJ + bnN0YW5jZUlEPjwvcmRmOkRlc2NyaXB0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKPC9y + ZGY6UkRGPjwveDp4bXBtZXRhPjw/eHBhY2tldCBlbmQ9InciPz4NCmVuZHN0cmVhbQ0KZW5kb2Jq + DQoyNTQgMCBvYmoNCjw8L0Rpc3BsYXlEb2NUaXRsZSB0cnVlPj4NCmVuZG9iag0KMjU1IDAgb2Jq + DQo8PC9UeXBlL1hSZWYvU2l6ZSAyNTUvV1sgMSA0IDJdIC9Sb290IDEgMCBSL0luZm8gMTUgMCBS + L0lEWzwwNTA4QkI1ODlGRjYwRjQ0ODM5QjFERTAyNTY1MURFMj48MDUwOEJCNTg5RkY2MEY0NDgz + OUIxREUwMjU2NTFERTI+XSAvRmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0aCA1MDc+Pg0Kc3RyZWFt + DQp4nDXV93fPZxQH8E9sSojZGkG0tQmKGrVHFKU2tUeomrXTauy9YlMdKFV7U3vvHUWJvX7rv5B+ + 83nx3HOe17nn3Ht/fQdB5KWnR0X+mCDIYAv+C4lKD8mTFBJdJiRvASRgcki+SiExcSH5dQU7hhRK + DCk9JggyRU4XCZ7jBV7iFZ7h3eTryF5c8vsuO6KQCZmRBVmRDTmQE7nwAXIjD6LRCoVRCPmQF/kR + g4IogASUwIcogqL4CMVRDB+jJGJRGqVQBnGoiE/xCcqhLCqgPKqjMiqhKqqgGuJRB5+hBmqhJj5H + bTRCPdTFF6iPhmiAlmiCxmiGpmiB5vgSrdEGbfEV2qE9vkYHdEQndEYXdEU3dEcPfIOe6IXe6IO+ + 6If+eIMBGIhBSMRgDMG3GIrvMAzDMQIjMQqj8T3GYCzGYTwmYCImIQk/4EdMxk9IxhRMxTRMxwzM + xCzMxhzMxTzMx1ssxQIsxCIsxhKkYBmWYwVWYhVWYw3uYj1+x89Yi1+wDr/hV6RiCzZiAzbhD/yJ + zdiFrfgL27ENO7EDB7EHu7EPe3EA+3Ech3EIR/A3juEozuEkTuA0TuEszuAqLuA8LuEiruAy7uA6 + ruEmbuA2buEf3MN9PMC/eIhHSMNjPMHTSFpUSQ3DJj4jvSJVPCQqNmRGWkhK/SD4H/tbjC8NCmVu + ZHN0cmVhbQ0KZW5kb2JqDQp4cmVmDQowIDI1Ng0KMDAwMDAwMDAxNiA2NTUzNSBmDQowMDAwMDAw + MDE3IDAwMDAwIG4NCjAwMDAwMDAxNjggMDAwMDAgbg0KMDAwMDAwMDIzOCAwMDAwMCBuDQowMDAw + MDAwNTExIDAwMDAwIG4NCjAwMDAwMDM0NTAgMDAwMDAgbg0KMDAwMDAwMzYxOSAwMDAwMCBuDQow + MDAwMDAzODU5IDAwMDAwIG4NCjAwMDAwMDM5MTIgMDAwMDAgbg0KMDAwMDAwMzk2NSAwMDAwMCBu + DQowMDAwMDA0MTQwIDAwMDAwIG4NCjAwMDAwMDQzODYgMDAwMDAgbg0KMDAwMDAwNDY1MiAwMDAw + MCBuDQowMDAwMDA1MjAzIDAwMDAwIG4NCjAwMDAwMDU0NzggMDAwMDAgbg0KMDAwMDAwODU2MyAw + MDAwMCBuDQowMDAwMDAwMDE3IDY1NTM1IGYNCjAwMDAwMDAwMTggNjU1MzUgZg0KMDAwMDAwMDAx + OSA2NTUzNSBmDQowMDAwMDAwMDIwIDY1NTM1IGYNCjAwMDAwMDAwMjEgNjU1MzUgZg0KMDAwMDAw + MDAyMiA2NTUzNSBmDQowMDAwMDAwMDIzIDY1NTM1IGYNCjAwMDAwMDAwMjQgNjU1MzUgZg0KMDAw + MDAwMDAyNSA2NTUzNSBmDQowMDAwMDAwMDI2IDY1NTM1IGYNCjAwMDAwMDAwMjcgNjU1MzUgZg0K + MDAwMDAwMDAyOCA2NTUzNSBmDQowMDAwMDAwMDI5IDY1NTM1IGYNCjAwMDAwMDAwMzAgNjU1MzUg + Zg0KMDAwMDAwMDAzMSA2NTUzNSBmDQowMDAwMDAwMDMyIDY1NTM1IGYNCjAwMDAwMDAwMzMgNjU1 + MzUgZg0KMDAwMDAwMDAzNCA2NTUzNSBmDQowMDAwMDAwMDM1IDY1NTM1IGYNCjAwMDAwMDAwMzYg + NjU1MzUgZg0KMDAwMDAwMDAzNyA2NTUzNSBmDQowMDAwMDAwMDM4IDY1NTM1IGYNCjAwMDAwMDAw + MzkgNjU1MzUgZg0KMDAwMDAwMDA0MCA2NTUzNSBmDQowMDAwMDAwMDQxIDY1NTM1IGYNCjAwMDAw + MDAwNDIgNjU1MzUgZg0KMDAwMDAwMDA0MyA2NTUzNSBmDQowMDAwMDAwMDQ0IDY1NTM1IGYNCjAw + MDAwMDAwNDUgNjU1MzUgZg0KMDAwMDAwMDA0NiA2NTUzNSBmDQowMDAwMDAwMDQ3IDY1NTM1IGYN + CjAwMDAwMDAwNDggNjU1MzUgZg0KMDAwMDAwMDA0OSA2NTUzNSBmDQowMDAwMDAwMDUwIDY1NTM1 + IGYNCjAwMDAwMDAwNTEgNjU1MzUgZg0KMDAwMDAwMDA1MiA2NTUzNSBmDQowMDAwMDAwMDUzIDY1 + NTM1IGYNCjAwMDAwMDAwNTQgNjU1MzUgZg0KMDAwMDAwMDA1NSA2NTUzNSBmDQowMDAwMDAwMDU2 + IDY1NTM1IGYNCjAwMDAwMDAwNTcgNjU1MzUgZg0KMDAwMDAwMDA1OCA2NTUzNSBmDQowMDAwMDAw + MDU5IDY1NTM1IGYNCjAwMDAwMDAwNjAgNjU1MzUgZg0KMDAwMDAwMDA2MSA2NTUzNSBmDQowMDAw + MDAwMDYyIDY1NTM1IGYNCjAwMDAwMDAwNjMgNjU1MzUgZg0KMDAwMDAwMDA2NCA2NTUzNSBmDQow + MDAwMDAwMDY1IDY1NTM1IGYNCjAwMDAwMDAwNjYgNjU1MzUgZg0KMDAwMDAwMDA2NyA2NTUzNSBm + DQowMDAwMDAwMDY4IDY1NTM1IGYNCjAwMDAwMDAwNjkgNjU1MzUgZg0KMDAwMDAwMDA3MCA2NTUz + NSBmDQowMDAwMDAwMDcxIDY1NTM1IGYNCjAwMDAwMDAwNzIgNjU1MzUgZg0KMDAwMDAwMDA3MyA2 + NTUzNSBmDQowMDAwMDAwMDc0IDY1NTM1IGYNCjAwMDAwMDAwNzUgNjU1MzUgZg0KMDAwMDAwMDA3 + NiA2NTUzNSBmDQowMDAwMDAwMDc3IDY1NTM1IGYNCjAwMDAwMDAwNzggNjU1MzUgZg0KMDAwMDAw + MDA3OSA2NTUzNSBmDQowMDAwMDAwMDgwIDY1NTM1IGYNCjAwMDAwMDAwODEgNjU1MzUgZg0KMDAw + MDAwMDA4MiA2NTUzNSBmDQowMDAwMDAwMDgzIDY1NTM1IGYNCjAwMDAwMDAwODQgNjU1MzUgZg0K + MDAwMDAwMDA4NSA2NTUzNSBmDQowMDAwMDAwMDg2IDY1NTM1IGYNCjAwMDAwMDAwODcgNjU1MzUg + Zg0KMDAwMDAwMDA4OCA2NTUzNSBmDQowMDAwMDAwMDg5IDY1NTM1IGYNCjAwMDAwMDAwOTAgNjU1 + MzUgZg0KMDAwMDAwMDA5MSA2NTUzNSBmDQowMDAwMDAwMDkyIDY1NTM1IGYNCjAwMDAwMDAwOTMg + NjU1MzUgZg0KMDAwMDAwMDA5NCA2NTUzNSBmDQowMDAwMDAwMDk1IDY1NTM1IGYNCjAwMDAwMDAw + OTYgNjU1MzUgZg0KMDAwMDAwMDA5NyA2NTUzNSBmDQowMDAwMDAwMDk4IDY1NTM1IGYNCjAwMDAw + MDAwOTkgNjU1MzUgZg0KMDAwMDAwMDEwMCA2NTUzNSBmDQowMDAwMDAwMTAxIDY1NTM1IGYNCjAw + MDAwMDAxMDIgNjU1MzUgZg0KMDAwMDAwMDEwMyA2NTUzNSBmDQowMDAwMDAwMTA0IDY1NTM1IGYN + CjAwMDAwMDAxMDUgNjU1MzUgZg0KMDAwMDAwMDEwNiA2NTUzNSBmDQowMDAwMDAwMTA3IDY1NTM1 + IGYNCjAwMDAwMDAxMDggNjU1MzUgZg0KMDAwMDAwMDEwOSA2NTUzNSBmDQowMDAwMDAwMTEwIDY1 + NTM1IGYNCjAwMDAwMDAxMTEgNjU1MzUgZg0KMDAwMDAwMDExMiA2NTUzNSBmDQowMDAwMDAwMTEz + IDY1NTM1IGYNCjAwMDAwMDAxMTQgNjU1MzUgZg0KMDAwMDAwMDExNSA2NTUzNSBmDQowMDAwMDAw + MTE2IDY1NTM1IGYNCjAwMDAwMDAxMTcgNjU1MzUgZg0KMDAwMDAwMDExOCA2NTUzNSBmDQowMDAw + MDAwMTE5IDY1NTM1IGYNCjAwMDAwMDAxMjAgNjU1MzUgZg0KMDAwMDAwMDEyMSA2NTUzNSBmDQow + MDAwMDAwMTIyIDY1NTM1IGYNCjAwMDAwMDAxMjMgNjU1MzUgZg0KMDAwMDAwMDEyNCA2NTUzNSBm + DQowMDAwMDAwMTI1IDY1NTM1IGYNCjAwMDAwMDAxMjYgNjU1MzUgZg0KMDAwMDAwMDEyNyA2NTUz + NSBmDQowMDAwMDAwMTI4IDY1NTM1IGYNCjAwMDAwMDAxMjkgNjU1MzUgZg0KMDAwMDAwMDEzMCA2 + NTUzNSBmDQowMDAwMDAwMTMxIDY1NTM1IGYNCjAwMDAwMDAxMzIgNjU1MzUgZg0KMDAwMDAwMDEz + MyA2NTUzNSBmDQowMDAwMDAwMTM0IDY1NTM1IGYNCjAwMDAwMDAxMzUgNjU1MzUgZg0KMDAwMDAw + MDEzNiA2NTUzNSBmDQowMDAwMDAwMTM3IDY1NTM1IGYNCjAwMDAwMDAxMzggNjU1MzUgZg0KMDAw + MDAwMDEzOSA2NTUzNSBmDQowMDAwMDAwMTQwIDY1NTM1IGYNCjAwMDAwMDAxNDEgNjU1MzUgZg0K + MDAwMDAwMDE0MiA2NTUzNSBmDQowMDAwMDAwMTQzIDY1NTM1IGYNCjAwMDAwMDAxNDQgNjU1MzUg + Zg0KMDAwMDAwMDE0NSA2NTUzNSBmDQowMDAwMDAwMTQ2IDY1NTM1IGYNCjAwMDAwMDAxNDcgNjU1 + MzUgZg0KMDAwMDAwMDE0OCA2NTUzNSBmDQowMDAwMDAwMTQ5IDY1NTM1IGYNCjAwMDAwMDAxNTAg + NjU1MzUgZg0KMDAwMDAwMDE1MSA2NTUzNSBmDQowMDAwMDAwMTUyIDY1NTM1IGYNCjAwMDAwMDAx + NTMgNjU1MzUgZg0KMDAwMDAwMDE1NCA2NTUzNSBmDQowMDAwMDAwMTU1IDY1NTM1IGYNCjAwMDAw + MDAxNTYgNjU1MzUgZg0KMDAwMDAwMDE1NyA2NTUzNSBmDQowMDAwMDAwMTU4IDY1NTM1IGYNCjAw + MDAwMDAxNTkgNjU1MzUgZg0KMDAwMDAwMDE2MCA2NTUzNSBmDQowMDAwMDAwMTYxIDY1NTM1IGYN + CjAwMDAwMDAxNjIgNjU1MzUgZg0KMDAwMDAwMDE2MyA2NTUzNSBmDQowMDAwMDAwMTY0IDY1NTM1 + IGYNCjAwMDAwMDAxNjUgNjU1MzUgZg0KMDAwMDAwMDE2NiA2NTUzNSBmDQowMDAwMDAwMTY3IDY1 + NTM1IGYNCjAwMDAwMDAxNjggNjU1MzUgZg0KMDAwMDAwMDE2OSA2NTUzNSBmDQowMDAwMDAwMTcw + IDY1NTM1IGYNCjAwMDAwMDAxNzEgNjU1MzUgZg0KMDAwMDAwMDE3MiA2NTUzNSBmDQowMDAwMDAw + MTczIDY1NTM1IGYNCjAwMDAwMDAxNzQgNjU1MzUgZg0KMDAwMDAwMDE3NSA2NTUzNSBmDQowMDAw + MDAwMTc2IDY1NTM1IGYNCjAwMDAwMDAxNzcgNjU1MzUgZg0KMDAwMDAwMDE3OCA2NTUzNSBmDQow + MDAwMDAwMTc5IDY1NTM1IGYNCjAwMDAwMDAxODAgNjU1MzUgZg0KMDAwMDAwMDE4MSA2NTUzNSBm + DQowMDAwMDAwMTgyIDY1NTM1IGYNCjAwMDAwMDAxODMgNjU1MzUgZg0KMDAwMDAwMDE4NCA2NTUz + NSBmDQowMDAwMDAwMTg1IDY1NTM1IGYNCjAwMDAwMDAxODYgNjU1MzUgZg0KMDAwMDAwMDE4NyA2 + NTUzNSBmDQowMDAwMDAwMTg4IDY1NTM1IGYNCjAwMDAwMDAxODkgNjU1MzUgZg0KMDAwMDAwMDE5 + MCA2NTUzNSBmDQowMDAwMDAwMTkxIDY1NTM1IGYNCjAwMDAwMDAxOTIgNjU1MzUgZg0KMDAwMDAw + MDE5MyA2NTUzNSBmDQowMDAwMDAwMTk0IDY1NTM1IGYNCjAwMDAwMDAxOTUgNjU1MzUgZg0KMDAw + MDAwMDE5NiA2NTUzNSBmDQowMDAwMDAwMTk3IDY1NTM1IGYNCjAwMDAwMDAxOTggNjU1MzUgZg0K + MDAwMDAwMDE5OSA2NTUzNSBmDQowMDAwMDAwMjAwIDY1NTM1IGYNCjAwMDAwMDAyMDEgNjU1MzUg + Zg0KMDAwMDAwMDIwMiA2NTUzNSBmDQowMDAwMDAwMjAzIDY1NTM1IGYNCjAwMDAwMDAyMDQgNjU1 + MzUgZg0KMDAwMDAwMDIwNSA2NTUzNSBmDQowMDAwMDAwMjA2IDY1NTM1IGYNCjAwMDAwMDAyMDcg + NjU1MzUgZg0KMDAwMDAwMDIwOCA2NTUzNSBmDQowMDAwMDAwMjA5IDY1NTM1IGYNCjAwMDAwMDAy + MTAgNjU1MzUgZg0KMDAwMDAwMDIxMSA2NTUzNSBmDQowMDAwMDAwMjEyIDY1NTM1IGYNCjAwMDAw + MDAyMTMgNjU1MzUgZg0KMDAwMDAwMDIxNCA2NTUzNSBmDQowMDAwMDAwMjE1IDY1NTM1IGYNCjAw + MDAwMDAyMTYgNjU1MzUgZg0KMDAwMDAwMDIxNyA2NTUzNSBmDQowMDAwMDAwMjE4IDY1NTM1IGYN + CjAwMDAwMDAyMTkgNjU1MzUgZg0KMDAwMDAwMDIyMCA2NTUzNSBmDQowMDAwMDAwMjIxIDY1NTM1 + IGYNCjAwMDAwMDAyMjIgNjU1MzUgZg0KMDAwMDAwMDIyMyA2NTUzNSBmDQowMDAwMDAwMjI0IDY1 + NTM1IGYNCjAwMDAwMDAyMjUgNjU1MzUgZg0KMDAwMDAwMDIyNiA2NTUzNSBmDQowMDAwMDAwMjI3 + IDY1NTM1IGYNCjAwMDAwMDAyMjggNjU1MzUgZg0KMDAwMDAwMDIyOSA2NTUzNSBmDQowMDAwMDAw + MjMwIDY1NTM1IGYNCjAwMDAwMDAyMzEgNjU1MzUgZg0KMDAwMDAwMDIzMiA2NTUzNSBmDQowMDAw + MDAwMjMzIDY1NTM1IGYNCjAwMDAwMDAyMzQgNjU1MzUgZg0KMDAwMDAwMDIzNSA2NTUzNSBmDQow + MDAwMDAwMjM2IDY1NTM1IGYNCjAwMDAwMDAyMzcgNjU1MzUgZg0KMDAwMDAwMDIzOCA2NTUzNSBm + DQowMDAwMDAwMjM5IDY1NTM1IGYNCjAwMDAwMDAyNDAgNjU1MzUgZg0KMDAwMDAwMDI0MSA2NTUz + NSBmDQowMDAwMDAwMjQyIDY1NTM1IGYNCjAwMDAwMDAyNDMgNjU1MzUgZg0KMDAwMDAwMDI0NCA2 + NTUzNSBmDQowMDAwMDAwMjQ1IDY1NTM1IGYNCjAwMDAwMDAyNDYgNjU1MzUgZg0KMDAwMDAwMDI0 + NyA2NTUzNSBmDQowMDAwMDAwMjQ4IDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAx + MTk4NyAwMDAwMCBuDQowMDAwMDEyMjg5IDAwMDAwIG4NCjAwMDAwNjU1NjQgMDAwMDAgbg0KMDAw + MDA2NTgyMiAwMDAwMCBuDQowMDAwMDk5NTQ4IDAwMDAwIG4NCjAwMDAxMDI3MTYgMDAwMDAgbg0K + MDAwMDEwMjc2MiAwMDAwMCBuDQp0cmFpbGVyDQo8PC9TaXplIDI1Ni9Sb290IDEgMCBSL0luZm8g + MTUgMCBSL0lEWzwwNTA4QkI1ODlGRjYwRjQ0ODM5QjFERTAyNTY1MURFMj48MDUwOEJCNTg5RkY2 + MEY0NDgzOUIxREUwMjU2NTFERTI+XSA+Pg0Kc3RhcnR4cmVmDQoxMDM0NzINCiUlRU9GDQp4cmVm + DQowIDANCnRyYWlsZXINCjw8L1NpemUgMjU2L1Jvb3QgMSAwIFIvSW5mbyAxNSAwIFIvSURbPDA1 + MDhCQjU4OUZGNjBGNDQ4MzlCMURFMDI1NjUxREUyPjwwNTA4QkI1ODlGRjYwRjQ0ODM5QjFERTAy + NTY1MURFMj5dIC9QcmV2IDEwMzQ3Mi9YUmVmU3RtIDEwMjc2Mj4+DQpzdGFydHhyZWYNCjEwODc1 + Mg0KJSVFT0Y= + headers: + Content-Type: + - application/pdf + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/e6d1e6eb-1e59-421c-aee5-361f7ef877fe/analyze?includeTextDetails=false + response: + body: + string: '' + headers: + apim-request-id: eef62aa2-1bbf-461d-8af0-a55bc9bba174 + content-length: '0' + date: Thu, 30 Apr 2020 23:09:11 GMT + operation-location: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/e6d1e6eb-1e59-421c-aee5-361f7ef877fe/analyzeresults/e3a9bad6-d7e1-479d-b3ce-916515012a09 + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '185' + status: + code: 202 + message: Accepted + url: https://westus.api.cognitive.microsoft.com//formrecognizer/v2.0-preview/custom/models/e6d1e6eb-1e59-421c-aee5-361f7ef877fe/analyze?includeTextDetails=false +- request: + body: null + headers: + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/e6d1e6eb-1e59-421c-aee5-361f7ef877fe/analyzeresults/e3a9bad6-d7e1-479d-b3ce-916515012a09 + response: + body: + string: '{"status":"notStarted","createdDateTime":"2020-04-30T23:09:11Z","lastUpdatedDateTime":"2020-04-30T23:09:11Z"}' + headers: + apim-request-id: b0a02c13-3cda-46e0-8e25-c76eca70e31b + content-type: application/json; charset=utf-8 + date: Thu, 30 Apr 2020 23:09:16 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + transfer-encoding: chunked + x-content-type-options: nosniff + x-envoy-upstream-service-time: '22' + status: + code: 200 + message: OK + url: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/e6d1e6eb-1e59-421c-aee5-361f7ef877fe/analyzeresults/e3a9bad6-d7e1-479d-b3ce-916515012a09 +- request: + body: null + headers: + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/e6d1e6eb-1e59-421c-aee5-361f7ef877fe/analyzeresults/e3a9bad6-d7e1-479d-b3ce-916515012a09 + response: + body: + string: '{"status":"notStarted","createdDateTime":"2020-04-30T23:09:11Z","lastUpdatedDateTime":"2020-04-30T23:09:11Z"}' + headers: + apim-request-id: 649ae6d3-ca18-457e-a514-746ab2d980b4 + content-type: application/json; charset=utf-8 + date: Thu, 30 Apr 2020 23:09:21 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + transfer-encoding: chunked + x-content-type-options: nosniff + x-envoy-upstream-service-time: '129' + status: + code: 200 + message: OK + url: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/e6d1e6eb-1e59-421c-aee5-361f7ef877fe/analyzeresults/e3a9bad6-d7e1-479d-b3ce-916515012a09 +- request: + body: null + headers: + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/e6d1e6eb-1e59-421c-aee5-361f7ef877fe/analyzeresults/e3a9bad6-d7e1-479d-b3ce-916515012a09 + response: + body: + string: '{"status":"notStarted","createdDateTime":"2020-04-30T23:09:11Z","lastUpdatedDateTime":"2020-04-30T23:09:11Z"}' + headers: + apim-request-id: 9a9676ac-7e67-4fa3-94ac-b5249361edd2 + content-type: application/json; charset=utf-8 + date: Thu, 30 Apr 2020 23:09:25 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + transfer-encoding: chunked + x-content-type-options: nosniff + x-envoy-upstream-service-time: '50' + status: + code: 200 + message: OK + url: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/e6d1e6eb-1e59-421c-aee5-361f7ef877fe/analyzeresults/e3a9bad6-d7e1-479d-b3ce-916515012a09 +- request: + body: null + headers: + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/e6d1e6eb-1e59-421c-aee5-361f7ef877fe/analyzeresults/e3a9bad6-d7e1-479d-b3ce-916515012a09 + response: + body: + string: '{"status":"succeeded","createdDateTime":"2020-04-30T23:09:11Z","lastUpdatedDateTime":"2020-04-30T23:09:28Z","analyzeResult":{"version":"2.0.0","readResults":[{"page":1,"language":"en","angle":0,"width":8.5,"height":11,"unit":"inch"},{"page":2,"language":"en","angle":0,"width":8.4967,"height":10.9967,"unit":"inch"},{"page":3,"language":"en","angle":0,"width":8.5,"height":11,"unit":"inch"}],"pageResults":[{"page":1,"tables":[{"rows":8,"columns":3,"cells":[{"rowIndex":0,"columnIndex":0,"text":"Item","boundingBox":[1.0037,2.9443,3.1681,2.9443,3.1681,3.1543,1.0037,3.1543]},{"rowIndex":0,"columnIndex":1,"text":"Quantity","boundingBox":[3.1681,2.9443,5.3353,2.9443,5.3353,3.1543,3.1681,3.1543]},{"rowIndex":0,"columnIndex":2,"text":"Price","boundingBox":[5.3353,2.9443,7.4997,2.9443,7.4997,3.1543,5.3353,3.1543]},{"rowIndex":1,"columnIndex":0,"text":"A","boundingBox":[1.0037,3.1543,3.1681,3.1543,3.1681,3.3643,1.0037,3.3643]},{"rowIndex":1,"columnIndex":1,"text":"1","boundingBox":[3.1681,3.1543,5.3353,3.1543,5.3353,3.3643,3.1681,3.3643]},{"rowIndex":1,"columnIndex":2,"text":"10.99","boundingBox":[5.3353,3.1543,7.4997,3.1543,7.4997,3.3643,5.3353,3.3643]},{"rowIndex":2,"columnIndex":0,"text":"B","boundingBox":[1.0037,3.3643,3.1681,3.3643,3.1681,3.5776,1.0037,3.5776]},{"rowIndex":2,"columnIndex":1,"text":"2","boundingBox":[3.1681,3.3643,5.3353,3.3643,5.3353,3.5776,3.1681,3.5776]},{"rowIndex":2,"columnIndex":2,"text":"14.67","boundingBox":[5.3353,3.3643,7.4997,3.3643,7.4997,3.5776,5.3353,3.5776]},{"rowIndex":3,"columnIndex":0,"text":"C","boundingBox":[1.0037,3.5776,3.1681,3.5776,3.1681,3.7876,1.0037,3.7876]},{"rowIndex":3,"columnIndex":1,"text":"4","boundingBox":[3.1681,3.5776,5.3353,3.5776,5.3353,3.7876,3.1681,3.7876]},{"rowIndex":3,"columnIndex":2,"text":"15.66","boundingBox":[5.3353,3.5776,7.4997,3.5776,7.4997,3.7876,5.3353,3.7876]},{"rowIndex":4,"columnIndex":0,"text":"D","boundingBox":[1.0037,3.7876,3.1681,3.7876,3.1681,3.9976,1.0037,3.9976]},{"rowIndex":4,"columnIndex":1,"text":"1","boundingBox":[3.1681,3.7876,5.3353,3.7876,5.3353,3.9976,3.1681,3.9976]},{"rowIndex":4,"columnIndex":2,"text":"12.00","boundingBox":[5.3353,3.7876,7.4997,3.7876,7.4997,3.9976,5.3353,3.9976]},{"rowIndex":5,"columnIndex":0,"text":"E","boundingBox":[1.0037,3.9976,3.1681,3.9976,3.1681,4.2081,1.0037,4.2081]},{"rowIndex":5,"columnIndex":1,"text":"4","boundingBox":[3.1681,3.9976,5.3353,3.9976,5.3353,4.2081,3.1681,4.2081]},{"rowIndex":5,"columnIndex":2,"text":"10.00","boundingBox":[5.3353,3.9976,7.4997,3.9976,7.4997,4.2081,5.3353,4.2081]},{"rowIndex":6,"columnIndex":0,"text":"F","boundingBox":[1.0037,4.2081,3.1681,4.2081,3.1681,4.4181,1.0037,4.4181]},{"rowIndex":6,"columnIndex":1,"text":"6","boundingBox":[3.1681,4.2081,5.3353,4.2081,5.3353,4.4181,3.1681,4.4181]},{"rowIndex":6,"columnIndex":2,"text":"12.00","boundingBox":[5.3353,4.2081,7.4997,4.2081,7.4997,4.4181,5.3353,4.4181]},{"rowIndex":7,"columnIndex":0,"text":"G","boundingBox":[1.0037,4.4181,3.1681,4.4181,3.1681,4.6281,1.0037,4.6281]},{"rowIndex":7,"columnIndex":1,"text":"8","boundingBox":[3.1681,4.4181,5.3353,4.4181,5.3353,4.6281,3.1681,4.6281]},{"rowIndex":7,"columnIndex":2,"text":"22.00","boundingBox":[5.3353,4.4181,7.4997,4.4181,7.4997,4.6281,5.3353,4.6281]}]}]},{"page":2,"tables":[]},{"page":3,"tables":[{"rows":8,"columns":3,"cells":[{"rowIndex":0,"columnIndex":0,"text":"Item","boundingBox":[1.0037,2.9443,3.1681,2.9443,3.1681,3.1543,1.0037,3.1543]},{"rowIndex":0,"columnIndex":1,"text":"Quantity","boundingBox":[3.1681,2.9443,5.3353,2.9443,5.3353,3.1543,3.1681,3.1543]},{"rowIndex":0,"columnIndex":2,"text":"Price","boundingBox":[5.3353,2.9443,7.4997,2.9443,7.4997,3.1543,5.3353,3.1543]},{"rowIndex":1,"columnIndex":0,"text":"A","boundingBox":[1.0037,3.1543,3.1681,3.1543,3.1681,3.3643,1.0037,3.3643]},{"rowIndex":1,"columnIndex":1,"text":"10","boundingBox":[3.1681,3.1543,5.3353,3.1543,5.3353,3.3643,3.1681,3.3643]},{"rowIndex":1,"columnIndex":2,"text":"100.99","boundingBox":[5.3353,3.1543,7.4997,3.1543,7.4997,3.3643,5.3353,3.3643]},{"rowIndex":2,"columnIndex":0,"text":"B","boundingBox":[1.0037,3.3643,3.1681,3.3643,3.1681,3.5776,1.0037,3.5776]},{"rowIndex":2,"columnIndex":1,"text":"20","boundingBox":[3.1681,3.3643,5.3353,3.3643,5.3353,3.5776,3.1681,3.5776]},{"rowIndex":2,"columnIndex":2,"text":"140.67","boundingBox":[5.3353,3.3643,7.4997,3.3643,7.4997,3.5776,5.3353,3.5776]},{"rowIndex":3,"columnIndex":0,"text":"C","boundingBox":[1.0037,3.5776,3.1681,3.5776,3.1681,3.7876,1.0037,3.7876]},{"rowIndex":3,"columnIndex":1,"text":"40","boundingBox":[3.1681,3.5776,5.3353,3.5776,5.3353,3.7876,3.1681,3.7876]},{"rowIndex":3,"columnIndex":2,"text":"150.66","boundingBox":[5.3353,3.5776,7.4997,3.5776,7.4997,3.7876,5.3353,3.7876]},{"rowIndex":4,"columnIndex":0,"text":"D","boundingBox":[1.0037,3.7876,3.1681,3.7876,3.1681,3.9976,1.0037,3.9976]},{"rowIndex":4,"columnIndex":1,"text":"10","boundingBox":[3.1681,3.7876,5.3353,3.7876,5.3353,3.9976,3.1681,3.9976]},{"rowIndex":4,"columnIndex":2,"text":"120.00","boundingBox":[5.3353,3.7876,7.4997,3.7876,7.4997,3.9976,5.3353,3.9976]},{"rowIndex":5,"columnIndex":0,"text":"E","boundingBox":[1.0037,3.9976,3.1681,3.9976,3.1681,4.2081,1.0037,4.2081]},{"rowIndex":5,"columnIndex":1,"text":"40","boundingBox":[3.1681,3.9976,5.3353,3.9976,5.3353,4.2081,3.1681,4.2081]},{"rowIndex":5,"columnIndex":2,"text":"100.00","boundingBox":[5.3353,3.9976,7.4997,3.9976,7.4997,4.2081,5.3353,4.2081]},{"rowIndex":6,"columnIndex":0,"text":"F","boundingBox":[1.0037,4.2081,3.1681,4.2081,3.1681,4.4181,1.0037,4.4181]},{"rowIndex":6,"columnIndex":1,"text":"60","boundingBox":[3.1681,4.2081,5.3353,4.2081,5.3353,4.4181,3.1681,4.4181]},{"rowIndex":6,"columnIndex":2,"text":"120.00","boundingBox":[5.3353,4.2081,7.4997,4.2081,7.4997,4.4181,5.3353,4.4181]},{"rowIndex":7,"columnIndex":0,"text":"G","boundingBox":[1.0037,4.4181,3.1681,4.4181,3.1681,4.6281,1.0037,4.6281]},{"rowIndex":7,"columnIndex":1,"text":"80","boundingBox":[3.1681,4.4181,5.3353,4.4181,5.3353,4.6281,3.1681,4.6281]},{"rowIndex":7,"columnIndex":2,"text":"220.00","boundingBox":[5.3353,4.4181,7.4997,4.4181,7.4997,4.6281,5.3353,4.6281]}]}]}],"documentResults":[{"docType":"custom:form","pageRange":[1,3],"fields":{"Merchant2":{"type":"string","valueString":"Company","text":"Company","page":1,"boundingBox":[0.885,1.125,1.62,1.125,1.62,1.28,0.885,1.28],"confidence":1.0},"Signature2":{"type":"string","valueString":"Frodo + Baggins","text":"Frodo Baggins","page":3,"boundingBox":[2.09,6.655,3.09,6.655,3.09,6.8,2.09,6.8],"confidence":1.0},"Merchant":{"type":"string","valueString":"A","text":"A","page":1,"boundingBox":[1.67,1.125,1.7750000000000001,1.125,1.7750000000000001,1.245,1.67,1.245],"confidence":1.0},"Signature":{"type":"string","valueString":"Bilbo + Baggins","text":"Bilbo Baggins","page":1,"boundingBox":[2.09,6.655,3.04,6.655,3.04,6.8,2.09,6.8],"confidence":1.0},"FirstPrice":{"type":"string","valueString":"10.99","text":"10.99","page":1,"boundingBox":[5.425,3.21,5.78,3.21,5.78,3.3200000000000003,5.425,3.3200000000000003],"confidence":1.0},"Total2":{"type":"string","valueString":"4300.00","text":"4300.00","page":3,"boundingBox":[5.94,5.565,6.48,5.565,6.48,5.675,5.94,5.675],"confidence":1.0},"MerchantAddress":{"type":"string","valueString":"567 + Main St. Redmond, WA","text":"567 Main St. Redmond, WA","page":1,"boundingBox":[0.885,1.845,1.855,1.845,1.855,2.2,0.885,2.2],"confidence":1.0},"Tax":{"type":"string","valueString":"30.00","text":"30.00","page":1,"boundingBox":[5.835,5.125,6.2,5.125,6.2,5.235,5.835,5.235],"confidence":1.0},"Total":{"type":"string","valueString":"430.00","text":"430.00","page":1,"boundingBox":[5.94,5.565,6.4,5.565,6.4,5.675,5.94,5.675],"confidence":1.0},"Tip":{"type":"string","valueString":"100.00","text":"100.00","page":1,"boundingBox":[5.8100000000000005,5.345,6.26,5.345,6.26,5.455,5.8100000000000005,5.455],"confidence":1.0},"Customer2":{"type":"string","valueString":"Frodo + Baggins","text":"Frodo Baggins","page":3,"boundingBox":[6.0150000000000006,1.45,6.95,1.45,6.95,1.595,6.0150000000000006,1.595],"confidence":1.0},"Subtotal":{"type":"string","valueString":"300.00","text":"300.00","page":1,"boundingBox":[6.18,4.905,6.63,4.905,6.63,5.015,6.18,5.015],"confidence":1.0},"CustomerAddress":{"type":"string","valueString":"123 + Hobbit Lane Redmond, WA","text":"123 Hobbit Lane Redmond, WA","page":1,"boundingBox":[6.0150000000000006,1.67,7.1000000000000005,1.67,7.1000000000000005,2.0300000000000002,6.0150000000000006,2.0300000000000002],"confidence":1.0},"CustomerName":{"type":"string","valueString":"Bilbo + Baggins","text":"Bilbo Baggins","page":1,"boundingBox":[6.0150000000000006,1.45,6.8950000000000005,1.45,6.8950000000000005,1.595,6.0150000000000006,1.595],"confidence":1.0},"FirstQuantity":{"type":"string","valueString":"1","text":"1","page":1,"boundingBox":[3.2600000000000002,3.21,3.3200000000000003,3.21,3.3200000000000003,3.3200000000000003,3.2600000000000002,3.3200000000000003],"confidence":1.0},"MerchantPhoneNumber":{"type":"string","valueString":"555-555-5555","text":"555-555-5555","page":1,"boundingBox":[0.885,2.29,1.81,2.29,1.81,2.395,0.885,2.395],"confidence":1.0},"FirstItem":{"type":"string","valueString":"A","text":"A","page":1,"boundingBox":[1.085,3.21,1.175,3.21,1.175,3.3200000000000003,1.085,3.3200000000000003],"confidence":1.0},"CustomerPhoneNumber":{"type":"string","valueString":"555-555-5555","text":"555-555-5555","page":1,"boundingBox":[6.01,2.12,6.9350000000000005,2.12,6.9350000000000005,2.225,6.01,2.225],"confidence":1.0}}}],"errors":[]}}' + headers: + apim-request-id: 0859da14-2166-41f9-9586-3871e7970f54 + content-type: application/json; charset=utf-8 + date: Thu, 30 Apr 2020 23:09:30 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + transfer-encoding: chunked + x-content-type-options: nosniff + x-envoy-upstream-service-time: '108' + status: + code: 200 + message: OK + url: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/e6d1e6eb-1e59-421c-aee5-361f7ef877fe/analyzeresults/e3a9bad6-d7e1-479d-b3ce-916515012a09 +version: 1 diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_custom_forms_async.test_custom_form_multipage_unlabeled.yaml b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_custom_forms_async.test_custom_form_multipage_unlabeled.yaml new file mode 100644 index 000000000000..f783cc1a3576 --- /dev/null +++ b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_custom_forms_async.test_custom_form_multipage_unlabeled.yaml @@ -0,0 +1,2074 @@ +interactions: +- request: + body: 'b''{"source": "containersasurl", "sourceFilter": {"prefix": "", "includeSubFolders": + false}, "useLabelFile": false}''' + headers: + Content-Length: + - '301' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models + response: + body: + string: '' + headers: + apim-request-id: 06d7de0c-d92b-4374-bdc1-0feff4918058 + content-length: '0' + date: Thu, 30 Apr 2020 23:10:58 GMT + location: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/1ccb3371-4e01-4e89-af1d-ea4d36d95c3b + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '229' + status: + code: 201 + message: Created + url: https://westus.api.cognitive.microsoft.com//formrecognizer/v2.0-preview/custom/models +- request: + body: null + headers: + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/1ccb3371-4e01-4e89-af1d-ea4d36d95c3b?includeKeys=true + response: + body: + string: '{"modelInfo":{"modelId":"1ccb3371-4e01-4e89-af1d-ea4d36d95c3b","status":"creating","createdDateTime":"2020-04-30T23:10:58Z","lastUpdatedDateTime":"2020-04-30T23:10:58Z"}}' + headers: + apim-request-id: 76301a3a-b2c3-4853-8b0b-1d38fde142fe + content-type: application/json; charset=utf-8 + date: Thu, 30 Apr 2020 23:11:03 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + transfer-encoding: chunked + x-content-type-options: nosniff + x-envoy-upstream-service-time: '25' + status: + code: 200 + message: OK + url: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/1ccb3371-4e01-4e89-af1d-ea4d36d95c3b?includeKeys=true +- request: + body: null + headers: + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/1ccb3371-4e01-4e89-af1d-ea4d36d95c3b?includeKeys=true + response: + body: + string: '{"modelInfo":{"modelId":"1ccb3371-4e01-4e89-af1d-ea4d36d95c3b","status":"creating","createdDateTime":"2020-04-30T23:10:58Z","lastUpdatedDateTime":"2020-04-30T23:10:58Z"}}' + headers: + apim-request-id: ef4d53a5-b17e-498e-84bf-59c5973da881 + content-type: application/json; charset=utf-8 + date: Thu, 30 Apr 2020 23:11:08 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + transfer-encoding: chunked + x-content-type-options: nosniff + x-envoy-upstream-service-time: '32' + status: + code: 200 + message: OK + url: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/1ccb3371-4e01-4e89-af1d-ea4d36d95c3b?includeKeys=true +- request: + body: null + headers: + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/1ccb3371-4e01-4e89-af1d-ea4d36d95c3b?includeKeys=true + response: + body: + string: '{"modelInfo":{"modelId":"1ccb3371-4e01-4e89-af1d-ea4d36d95c3b","status":"ready","createdDateTime":"2020-04-30T23:10:58Z","lastUpdatedDateTime":"2020-04-30T23:11:09Z"},"keys":{"clusters":{"0":["Address:","Invoice + For:","Redmond, WA","Signature:","Subtotal:","Tax:","Tip:","Total:"]}},"trainResult":{"trainingDocuments":[{"documentName":"multipage_invoice1.pdf","pages":3,"errors":[],"status":"succeeded"},{"documentName":"multipage_invoice2.pdf","pages":3,"errors":[],"status":"succeeded"},{"documentName":"multipage_invoice3.pdf","pages":3,"errors":[],"status":"succeeded"},{"documentName":"multipage_invoice4.pdf","pages":3,"errors":[],"status":"succeeded"},{"documentName":"multipage_invoice5.pdf","pages":3,"errors":[],"status":"succeeded"}],"errors":[]}}' + headers: + apim-request-id: 06a59a33-5921-4e06-b105-4f7e0409e118 + content-type: application/json; charset=utf-8 + date: Thu, 30 Apr 2020 23:11:14 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + transfer-encoding: chunked + x-content-type-options: nosniff + x-envoy-upstream-service-time: '33' + status: + code: 200 + message: OK + url: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/1ccb3371-4e01-4e89-af1d-ea4d36d95c3b?includeKeys=true +- request: + body: !!binary | + JVBERi0xLjcNCiW1tbW1DQoxIDAgb2JqDQo8PC9UeXBlL0NhdGFsb2cvUGFnZXMgMiAwIFIvTGFu + Zyhlbi1VUykgL1N0cnVjdFRyZWVSb290IDE2IDAgUi9NYXJrSW5mbzw8L01hcmtlZCB0cnVlPj4v + TWV0YWRhdGEgMjUzIDAgUi9WaWV3ZXJQcmVmZXJlbmNlcyAyNTQgMCBSPj4NCmVuZG9iag0KMiAw + IG9iag0KPDwvVHlwZS9QYWdlcy9Db3VudCAzL0tpZHNbIDMgMCBSIDExIDAgUiAxMyAwIFJdID4+ + DQplbmRvYmoNCjMgMCBvYmoNCjw8L1R5cGUvUGFnZS9QYXJlbnQgMiAwIFIvUmVzb3VyY2VzPDwv + Rm9udDw8L0YxIDUgMCBSL0YyIDkgMCBSPj4vRXh0R1N0YXRlPDwvR1M3IDcgMCBSL0dTOCA4IDAg + Uj4+L1Byb2NTZXRbL1BERi9UZXh0L0ltYWdlQi9JbWFnZUMvSW1hZ2VJXSA+Pi9NZWRpYUJveFsg + MCAwIDYxMiA3OTJdIC9Db250ZW50cyA0IDAgUi9Hcm91cDw8L1R5cGUvR3JvdXAvUy9UcmFuc3Bh + cmVuY3kvQ1MvRGV2aWNlUkdCPj4vVGFicy9TL1N0cnVjdFBhcmVudHMgMD4+DQplbmRvYmoNCjQg + MCBvYmoNCjw8L0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggMjg2ND4+DQpzdHJlYW0NCnicvZxZ + bxw3EsffBeg79ONMsGrzPhZBAMvXerEGkrWAPBiLwJYPGIilXVubbL79VrHvYRfZ3cOOAI2OLvJf + LFb/SPbB6tGP1fffP3r15OXTiv3wQ3X99En1n8sLVjP88lxUrDLwab2ovn64vPj5u+ru8uL65vLi + 0XNecVMzV918vLzgYMcqXikpam4ry1TtTHXzBexevLbVp29QZ/Up/OXav15cXrw5vLz77agP9/D9 + +WgOt/DzA3xXx39VN3+/vHgGOj9dXpzlkAOH+Nih4Ecr//x4JYP6V1D/azlVzVzNDKV60rzq2asn + VTXqCL6+I8RcLxjrayUi+eujgmhf+cOv+PEuxN+CUyYcefsJ/wsfrjG6g+PfNkfmxC9vau8pv3Jh + EaXCYmSt9Yl8dQV1OlXd3L45cCFLNVizmvt5xajBZ6iI2klK5W/HK25CF2NXvyulCX0oSM2QOQ/H + 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 + fvW3lN9NoKP8fgIt5fcTaCkfCZSmfCSw09UI6BG/5zmhhK3NXNLi2yxyv6sRhuO2Ndl2xSReu18C + SWJj63VjgCulDJhYt8bwpZRleJt/hbRauxkZKS1YnXrQP1Zeu/sWqczwsaPoQiXOyj7h6XqHU7Nw + 4j5Agofrl1/DFhRHCafxlSw3vgmNdx9P/alYcBMnVb/AV7HR2uNeVHHjrz9DKxFR4SLtfXVUh+u3 + 2N4QjPCBobkrNuZyvAMV+7FxL7PZQV3OCfxy5A4iij0481lKHXfbcTPqJ0nTd4eAs8CYcIeT1VbQ + t+LU2ltxVP7jrMGt4o1aeyuOlIaffhVkVamLzULb9D3+WLrUlRyhOO7ztEa61PJCAGLMOulS46lg + IcPXSJcaULmXuJ3hGulSIyq3DleUK6R1qRGVG5hGrGq1LjWkcmXwYaE10qVoxiXD+eoa6VI041zj + BgZrpEvRzPuam1Ug1aVohk8vi3XSHc04bmeEj9VUhsnwOhCMljA1gRHb9AMfw80Nf0dZqDxp/Xp4 + TA7MvFJgaGoPJlbVsrkCYqnn5PSIc8tK9/fXAS7TyBgJQ4uqLAzmohtYP/Xhid+vPlfPwtTZkXr3 + OJv90lxjdDiRlTildYc/cAPfx2Hvz5f4Gf75G0z37rvp7y0+uBxvgnWuuxwyB5hIuJvNHretowTd + UQYnabEnj3HPzvf9XP8bLHLV4Vu8cj/XCw7/gnk/4UU2Hn5z4s4HQ3MsdeqGPnb7VjRbEL8K9ww/ + Q0xY2N8U//f6AVcH8UOgZ7nFhcKt+Qi3sps3ssLRkbpW8S6K/XayZvFmr+cFRcraSsqbbFB44aDg + vdjTnS1ze6SeJew4LTy3Vep5YgoWKaRY4ZZ5DoOxWxLSwhkFY6rQf1JEOZRypFhuD9ozzxzgiKSk + iee8/w9kOwx8DQplbmRzdHJlYW0NCmVuZG9iag0KNSAwIG9iag0KPDwvVHlwZS9Gb250L1N1YnR5 + cGUvVHJ1ZVR5cGUvTmFtZS9GMS9CYXNlRm9udC9CQ0RFRUUrQ2FsaWJyaS9FbmNvZGluZy9XaW5B + bnNpRW5jb2RpbmcvRm9udERlc2NyaXB0b3IgNiAwIFIvRmlyc3RDaGFyIDMyL0xhc3RDaGFyIDEy + MS9XaWR0aHMgMjQ5IDAgUj4+DQplbmRvYmoNCjYgMCBvYmoNCjw8L1R5cGUvRm9udERlc2NyaXB0 + b3IvRm9udE5hbWUvQkNERUVFK0NhbGlicmkvRmxhZ3MgMzIvSXRhbGljQW5nbGUgMC9Bc2NlbnQg + NzUwL0Rlc2NlbnQgLTI1MC9DYXBIZWlnaHQgNzUwL0F2Z1dpZHRoIDUyMS9NYXhXaWR0aCAxNzQz + L0ZvbnRXZWlnaHQgNDAwL1hIZWlnaHQgMjUwL1N0ZW1WIDUyL0ZvbnRCQm94WyAtNTAzIC0yNTAg + MTI0MCA3NTBdIC9Gb250RmlsZTIgMjUwIDAgUj4+DQplbmRvYmoNCjcgMCBvYmoNCjw8L1R5cGUv + RXh0R1N0YXRlL0JNL05vcm1hbC9jYSAxPj4NCmVuZG9iag0KOCAwIG9iag0KPDwvVHlwZS9FeHRH + U3RhdGUvQk0vTm9ybWFsL0NBIDE+Pg0KZW5kb2JqDQo5IDAgb2JqDQo8PC9UeXBlL0ZvbnQvU3Vi + dHlwZS9UcnVlVHlwZS9OYW1lL0YyL0Jhc2VGb250L0JDREZFRStDYWxpYnJpLUJvbGQvRW5jb2Rp + bmcvV2luQW5zaUVuY29kaW5nL0ZvbnREZXNjcmlwdG9yIDEwIDAgUi9GaXJzdENoYXIgMzIvTGFz + dENoYXIgMTIwL1dpZHRocyAyNTEgMCBSPj4NCmVuZG9iag0KMTAgMCBvYmoNCjw8L1R5cGUvRm9u + dERlc2NyaXB0b3IvRm9udE5hbWUvQkNERkVFK0NhbGlicmktQm9sZC9GbGFncyAzMi9JdGFsaWNB + bmdsZSAwL0FzY2VudCA3NTAvRGVzY2VudCAtMjUwL0NhcEhlaWdodCA3NTAvQXZnV2lkdGggNTM2 + L01heFdpZHRoIDE3ODEvRm9udFdlaWdodCA3MDAvWEhlaWdodCAyNTAvU3RlbVYgNTMvRm9udEJC + b3hbIC01MTkgLTI1MCAxMjYzIDc1MF0gL0ZvbnRGaWxlMiAyNTIgMCBSPj4NCmVuZG9iag0KMTEg + MCBvYmoNCjw8L1R5cGUvUGFnZS9QYXJlbnQgMiAwIFIvUmVzb3VyY2VzPDwvRm9udDw8L0YyIDkg + MCBSPj4vRXh0R1N0YXRlPDwvR1M3IDcgMCBSL0dTOCA4IDAgUj4+L1Byb2NTZXRbL1BERi9UZXh0 + L0ltYWdlQi9JbWFnZUMvSW1hZ2VJXSA+Pi9NZWRpYUJveFsgMCAwIDYxMiA3OTJdIC9Db250ZW50 + cyAxMiAwIFIvR3JvdXA8PC9UeXBlL0dyb3VwL1MvVHJhbnNwYXJlbmN5L0NTL0RldmljZVJHQj4+ + L1RhYnMvUy9TdHJ1Y3RQYXJlbnRzIDE+Pg0KZW5kb2JqDQoxMiAwIG9iag0KPDwvRmlsdGVyL0Zs + YXRlRGVjb2RlL0xlbmd0aCA0NzY+Pg0Kc3RyZWFtDQp4nK2Yu2ocQRBF84H5hwplB7Vdj36BUKCV + LGwQ2GjBgVEoKZLA9v+Dy4sDh6rmTjDQzNCne6BO3xo6fKXLy8P98fMNlasrur450s99K1z+XlOU + CrW496n062nfvn+kt327Pu3b4ZNSPDg975vES4WEunJRp14Ge6PTa7x099Dp5XdMSC/n0fg3utu3 + Hxf04ZFOX/btNqb7tm90e38k+m9BAlpQm8pNzws6r+OdeEXhe+M+0nhD4VvhKWm8o/Be2fL4isLr + ZO9pfEPhxbhZGt9B+Do795nGDxR+CM/87icK3xqX/O4FJcJaC2vN81Heq+bs+dITlPiqDB4LfJT5 + alGe+doXlPp8dF7YPkp93oW15fko93mt7PljV1Dyc5tc8+euoOznatw9z0fpzyOHyULsQenPInZp + /vsrSn8Wucvz319R+rMIXvnyU5T9zJ37Ah9lP9PB+cNXUfazSF5lYfso+2lEL12oPpT9NLLXStOD + sp+2utL1KMp+6pNnvvoNZT+N8FXy4cNQ9tMIX5rP3oayn0b4snz9G0p/MhrXfPg2lP6kR9u9wEf5 + TyJ9LTQ/hvKfRPpaaH4M5T+J9LXQ/BjKf1I614X6R/lvCveF9OWwv4CVR3uff/8AMWTgdQ0KZW5k + c3RyZWFtDQplbmRvYmoNCjEzIDAgb2JqDQo8PC9UeXBlL1BhZ2UvUGFyZW50IDIgMCBSL1Jlc291 + cmNlczw8L0ZvbnQ8PC9GMSA1IDAgUi9GMiA5IDAgUj4+L0V4dEdTdGF0ZTw8L0dTNyA3IDAgUi9H + UzggOCAwIFI+Pi9Qcm9jU2V0Wy9QREYvVGV4dC9JbWFnZUIvSW1hZ2VDL0ltYWdlSV0gPj4vTWVk + aWFCb3hbIDAgMCA2MTIgNzkyXSAvQ29udGVudHMgMTQgMCBSL0dyb3VwPDwvVHlwZS9Hcm91cC9T + L1RyYW5zcGFyZW5jeS9DUy9EZXZpY2VSR0I+Pi9UYWJzL1MvU3RydWN0UGFyZW50cyAyPj4NCmVu + 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 + mxWDaazuLffHZf/XyULlydKvhoeloFgtJRTUpHahL93+mltBGOxpKTm6Y7Lu6v7GpCD11DNaQExK + 6AdgSOeZT717wkML9upBhyuL6n11mfRLsw1gXRIVLp3a0+/RA+T32sKAIVRhtoQn9+zXM8QITO+A + 9glKLNq+F87X3ru/nWXj+ea8/ouJHAe52xbDiDYr2x4OQ5UX8RyPeO0OBw4teexOr37fA/vb+QJ0 + +xYuIfZaweC/AN6IFYv+0NkZIO4MmKuL8ERtde5O1TH+MO+X/kbPZ/AJ9Sd9u/979eA4Gd6x3mUW + g6WWMJhZi94xhb0jFJHhecL9wep69bHn+5wihEsfiDWLTrGFneJuoM3PeF46LXyXMMzZUOHYoeH7 + xGCtb1Gxwi2rGcxq7BqXFo4omJxw9Qd5lMFVFhVbOo1958iBPCIwaeRJ4/8DtXV3Ww0KZW5kc3Ry + ZWFtDQplbmRvYmoNCjE1IDAgb2JqDQo8PC9BdXRob3IoS3Jpc3RhIFByYXRpY28pIC9DcmVhdG9y + KP7/AE0AaQBjAHIAbwBzAG8AZgB0AK4AIABXAG8AcgBkACAAZgBvAHIAIABPAGYAZgBpAGMAZQAg + ADMANgA1KSAvQ3JlYXRpb25EYXRlKEQ6MjAyMDA0MjIxNjQ1MjktMDcnMDAnKSAvTW9kRGF0ZShE + OjIwMjAwNDIyMTY0NTI5LTA3JzAwJykgL1Byb2R1Y2VyKP7/AE0AaQBjAHIAbwBzAG8AZgB0AK4A + IABXAG8AcgBkACAAZgBvAHIAIABPAGYAZgBpAGMAZQAgADMANgA1KSA+Pg0KZW5kb2JqDQoyMyAw + IG9iag0KPDwvVHlwZS9PYmpTdG0vTiAyMzIvRmlyc3QgMjAzNS9GaWx0ZXIvRmxhdGVEZWNvZGUv + TGVuZ3RoIDMwNTE+Pg0Kc3RyZWFtDQp4nO1b24ocyRF9N/gf8g+mIu8Jy4Jt7WKzrBCSwA/CDyOp + LQ07M72MWiD9vc+pipyetTOz1Gn7weCHmbrG/UTkpaKtmMXYYIIYG40s2dhkJOIezsQaW3DfG7cY + J9FYnMWMU+NjMM6CLBrnTIjJOG+i4FkwMRa8ZpIFUTIp4W1rsrXGi8nJGe9NAUPvTMnkBLEuGx9w + LLi9GBEPfsWIBcOAawuOHtfOigkWx5SpsXiwCR7HnExwRgKIfMaxRBNoB/QK4J+kmAD6lHAfzzOs + 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 + o7YHauOettT9bxfFC374xVj+v4b+R2qoOrMW0tkCqt2Sut9ed8Hr1nDdsK3bqHVDsm4T1s27ug1W + N6fqllHdfKlbInWjoi7560K8Lo/rQrMu/+qirC5v6qKjLgX+W4W/fs361q9fDMY/AFTdMPANCmVu + ZHN0cmVhbQ0KZW5kb2JqDQoyNDkgMCBvYmoNClsgMjI2IDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAy + NTAgMzA2IDI1MiAwIDUwNyA1MDcgNTA3IDUwNyA1MDcgNTA3IDUwNyA1MDcgNTA3IDUwNyAyNjgg + MCAwIDAgMCAwIDAgNTc5IDU0NCA1MzMgNjE1IDQ4OCA0NTkgNjMxIDYyMyAyNTIgMCAwIDQyMCA4 + NTUgMCAwIDUxNyA2NzMgNTQzIDQ1OSAwIDAgMCA4OTAgMCAwIDAgMCAwIDAgMCAwIDAgNDc5IDUy + NSA0MjMgNTI1IDQ5OCAwIDQ3MSAwIDIzMCAwIDAgMjMwIDc5OSA1MjUgNTI3IDUyNSAwIDM0OSAz + OTEgMzM1IDUyNSA0NTIgMCAwIDQ1M10gDQplbmRvYmoNCjI1MCAwIG9iag0KPDwvRmlsdGVyL0Zs + YXRlRGVjb2RlL0xlbmd0aCA1MzE4Mi9MZW5ndGgxIDEzNzU5Nj4+DQpzdHJlYW0NCnic7H0HXFTH + 2v475+zCUhaWKrLiLq6Auig2FEtklaJoLCirgA2k2LChGI0lJEZNSEy5Mb2ZnhtNsqwaMdXkphfT + e+/JjaZdzc01Ub5nzruDaDTJvfd/v3z3/9sXnvM8887Me2bmzMyZjRBIEJENFxNVFIzIL1mf7HuW + xJeZRLFJBSNOzbvntXVfkfhoNVGIb/ykrL7XPly5k0icg1oVVQsqF7/T99MUovmbicyDq5Yvc+5e + /EY20Y1fIH1/7eLZC9a+pw8kWvwCkdU9u25l7bvOlS6i228meumvc2oqq38cu9KHeJGIN2AOHNY7 + O+1HOh/prnMWLFuRPXOSG2nEm7utblFV5U2b53cjseoiFJ+8oHLF4l7W9G7In4PyzgU1yyqvOmvL + chI/yfpnL6xcUHPdoYMzSTSjfu+lixctXdZqpw3ozzRZfnF9zeK42V06Eq35GbdDP+ENGfzhP3a9 + WDAzeuhB6mghafd9tfpZya8XnTb+p0OHG8P2WQYgGUYasaFeCB0h8Wj4lp8OHdoSts+I1M46bpMe + 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 + wAKEAiGAGTANb8VVBzRAAETVAj5xBDgM/Az8BBwC/gH8CPwd+AE4CBwA/gZ8D3wHfAt8A3wN7Af2 + AV8BfwW+BL4APgc+Az4FPgE+Bj4CPgQ+AN4H3gPeBd4B3gbeAt4E3gBeB14DXgVeAV4GXgJeBF4A + ngf2As8BzwLPAE8DTwFPAk8AjwOPAY8CfwEeAR4G9gAPAQ8CDwD3A/cB9wK7gRZgF3APsBPYAWwH + /EAz4APuBu4C7gS2AVuBO4A/A7cDtwG3ArcANwM3ATcCNwBbgOuB64BrgWuAq4GrgCuBK4DLgcuA + S4HNwCXAn4CLgYuAC4ELgE3A+cB5QBNwLnAOsBHYAKyn6uGNAutfYP0LrH+B9S+w/gXWv8D6F1j/ + AutfYP0LrH+B9S+w/gXWv8D6F1j/AutfYP2LegB7gMAeILAHCOwBAnuAwB4gsAcI7AECe4DAHiCw + BwjsAQJ7gMAeILAHCOwBAnuAwB4gsAcI7AECe4DAHiCwBwjsAQJ7gMAeILAHCOwBAnuAwB4gsAcI + 7AEC619g/Qusf4G1L7D2Bda+wNoXWPsCa19g7QusfYG1L7D2/+h9+L/cyv7oBvyXGy1d2u5gJi1p + pvyFp9DriI5ccszvqUygebSUGvG1gTbRJfQQvU2zaB3UlbSFbqU/k48epqfo9d/xOy+/246sNC+g + SH0XhVAcUeuh1v1HbgVazFHtPJcgFWdyHvW02lq/Ps739ZFLWm1HWkJiKdyoa9Vegvdv4nDrIbxy + kW4dINPaRuhoo8Z3odcdufvIbceNQTGV01SaRtOpgirR/2qaQ3MxMvOpjhbQQiO1EHmzca1FaiZK + YXsx9NFSi2gxUE/LqIGW42sx9NJASuYtMdINdBq+VtBKOp1W0WpaE7ieZnhWI+d0I70CWEtn4Mmc + SWcZSjF71tHZtB5PbSOdQ+f+aurcNtVE59H5eM4X0IUn1ZuOSV2Er4vpT5gPm+lSuoyuwLy4mq45 + znu54b+KrqPrMWdk3qXwXG8omXs/PU476S66m+4xxrIKo8Yjosal1hjDxRiD1ejhunYt5vE7rW20 + 1qLvsm9NgZ6ugP+sdjWWB8ZRllyHkhyFn4OMsua4kbgIfWB9tEecutTo/1Fv+1H5Na8aj2vajczV + Rkqq470n05fRtViBN+AqR1WqG6FZXW/o9v7r2spuMdI30c10C57FbYZSzJ5boW+j27G276CttA1f + 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 + IDAgMCAwIDQ1OSAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCA0NzMgNDk1IDAgMCAwIDAgMCAwIDAg + MCAwIDAgNDk4IDAgNDk0IDUzNyAwIDUzNyA1MDMgMCA0NzQgMCAyNDYgMCAwIDI0NiAwIDUzNyA1 + MzggNTM3IDAgMzU1IDM5OSAzNDcgNTM3IDAgMCA0NTldIA0KZW5kb2JqDQoyNTIgMCBvYmoNCjw8 + L0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggMzM2MzMvTGVuZ3RoMSAxMDI3MDQ+Pg0Kc3RyZWFt + DQp4nOydCXiTVdb4z33fLM3WJl3SJU2aNk26J90otAUaulEoW6HBFgRaaLG4UYGqoAzgglhFVFzG + BUFHxwWUNIAUQUTFXdQZUccdlxnXjqjgKNDkf+570tIiuMz4jd//+XLa8/7uPffcfXsj8SkwANDj + QwZNVeWV9bcVPhsGrO2PAGqMj6t4/SnTOGBzDqBD98Qprvz1X835GoCtwlxNc85pblc9YVwHcNYN + mP7wnPMXWcseafgS4NpKAMWque1nnHPn5+WbANrHAaiizjh78dyPlhs+ArjpRYC5+rbW5pbvT198 + CZanxfKK2tCg25n4KsYxP6S2nbPowsefSy3F+KcA8zadPX9O81VvnncY4Ng76D71nOYL29Pvi7Ng + ehv6W89pXdR86yUbzge24HuMX3Zu8zmt75e/mgusoBAg96r2+QsXBUywEvuzh/u3L2ht/8H9/EKA + xU0Axg+Aj4Wi5IMVj770+KyI4YchPgy47Pzi4hc53xhzweSjb/UOUSeETUJfFQhAgvkU4Ae2V73h + 6FtHVqoTpJIGSPwmbjFlwlrQw4UgYk49uABr1X6P9QqYKsrGCrtADmHyW+QFWKSFKL4CjwgQBkKE + UhBlMlGQfQzOwB5IvQiLVfGyx0+xWsEKYH+R2qC8Q3BYgQV4mrhHHs57CtGy8OOtYS/jbL0JsfAr + RXYxrP61eX5OxE2/fZm/RBT+/0694rNQdlL7d6D9b9R/MpGNBvWvzjMM982p0q4bnCauObXvIL8G + WCm7HRp+ykfQ/3RZmB53yrRjJ8+rqMF6nzl5muwt8PxUfSeK2Hu8HJn9hHGYDxUnzXMRmAbVuQku + +zV1nkxkMnD8Ej/xWxj9q8uuhT/8Ct/aQXEljP219f1vFPGFwXPG5cS+nijsX3DWz5WLPj87tj/l + 81NzIxsPNT9X9qnKEv42uFwxD8acLI98/2C78PSP7xXZ5p+/a7iP3E1+yvSf9+c+2N7FP+f3cyI+ + yO/OXyfCY1AkHIZpUvgwlAjPQIkUvp3OIrYEJvb5svODfj/ANPQt7s8HGC+B4ewIJApHySbZ7//1 + 7fn/VXBdA/vw925FSEISkpCQCLfBP06ZNg9ePql9CGwQbLD0f65Vv1zEY4Ef/ut1XvKf38O/lcju + gwnCexDPw+JBqJA1geWkfuFQjHpDMOxBTTip3yJoEB6ERKm8y2G8+CqknsxPXA9DURcHw1NQc35R + +yp/cftOXq8LRghyMPOw4IVhQg/YTub3W+cVtoEL89ql8CKwCR2g/0/8QhKSkPy+Insc5v6nZYhR + ECeq4cKBNuH6wfFBdd568jRhFX6u8p78bAxJSEISkpCEJCQhCUlIQhKSkPzfEP4ZU6L61J8rT5RT + fc7kEvqcGZKQhCQkIQlJSEISkpCEJCQhCUlIQvL7C7vl925BSEISkpCEJCQhCUlIQhKSkIQkJCEJ + SUhCMliEdshDrQ+GK1HTfvM65sIw1MZgeCyq65fnDtz3W7cnJCEJSUhCEpKQhCQkIQlJSEISkpCE + JCQhCUlIQhKSkIQkJCEJSUhCEhKSwCO/dwtCEpLfWcSgJtJfkmLnYgxDYgvI2GQ0VIMb5KDAkA5S + wAl5UAglUI728VAPs2A2tMIZMA/OhnbogAthA2yBHSzPnG12movNbqvK2m5dZF1hvcz+YkD6S1FY + jhXLyYUCLGeUVM4ULKcZWoLlnAsLTlnOMuulUjkscBjbmCnuwh8z7uQDgX9hnP5uymdwiIlSXyYE + 5ojV4kgY8sUV9NOT9tHKj1YCfHT5+yOCfzmrvH8kRkrP4ZKODNpK+kM/luy+ERTHijeDDAwwE1qY + wCJYArOw89lSdiW7ml3LbmXb2AGZXKYABftOyvHdiX+1C+NC8G98CfDTwgbUeVIRG1C/FHvw+ZV4 + cID9tEFuvL0kg/+aT+WAMPbnpDUswWZgP/GJPcXnJNQZUuPm879DwnuODPZdsj/9M7363yDi/0Sh + bG5oH8FvvY/AXT1r5ozTp09rbPDUT5lcN2nihPHjaseOqRldXVVZUT7KXTZyxPDSkuJhQ4uGuJw5 + 2ekOe6otJSku2qCP0GnUqjClQi4TBQbZVbbqJqvX0eSVOWw1NTk8bmtGQ/MAQ5PXiqbqwT5ea5Pk + Zh3s6UbPuSd4usnT3e/J9NbhMDwn21pls3r3Vdqs3WxaXQOGV1faGq3eHik8XgrLHFJEh5HkZMxh + rYprq7R6WZO1ylt9fltnVVMlltelUVfYKlrVOdnQpdZgUIMhb7qtvYulj2RSQEivKukSIEzHq/WK + 9qrmFu+kuoaqSlNycqNkgwqpLK+iwquUyrLO422Gq6xd2Xs6r+7Ww+ymLG2LraX59Aav2IyZOsWq + zs4rvIYsb4at0pux5OM47HKrN9tWWeXNsmFhtZP7K2BeuV1vs3YeBmy8refLwZbmoEVh1x8GHuRd + 7B8mTO8LA7YNW4j9S07mbbmq2w2zMeJdXtdAcSvMNvnA7cpq9ApNPGVPX0qMh6cs70vpz95kS+ZT + VdUU/D2/Lc67fLY1JxtHX/q14y+mW72io2n2nDbO5tZOW2UljVt9g9ddiQF3c7CvVV25LvRvbsJO + zOPDUNfgddnavdG2cnJAg5XPwbwpDVKWYDZvdIUXmuYEc3ldVZW8XdaqzqZKaiAvy1bXsAMKAge6 + Cq2mLQV4iDTydniNFTgpjqrOhpa53qQmUwuuz7nWBlOy192Iw9doa2ht5LNk03szDmB1yVKNUi7s + 2wnefc6850p7mLVBMImNfLbQYK3Gh618OCbocbqkKJ/R8uHWBmaCPjesJejBQ4PKwYhor6jhSSLP + WlFjSm5MJvmJJpmCbZLbvWEDytKjob9NVM8pm0bevEEZ1qrWygENHFSoPNjAYGknb6fAxyJYMeYI + 49NZ05ck2nHnok3AYiQTn8U4qxcmWRtsrbZGG64h96QG3jc+1tL81k6x1dZNa5BmO7hK6gfFKH0Y + xbyQjMl9EaEC12B1lqlvWqX4aCneH605IXlMX7K1M8xWO6WTF24LFghW3EHYaYVjTPNVwyILcWtW + 4+lmq262WfXW6s7m7sDy2Z1dbndne1VTWwkvwzampdM2pWG4SWrr5IalpiW8qkioZbX15TnZePaU + d9nYqrouN1s1ZVrDDj2AdVV9g09gQkVTeWNXKqY17LDi2S5ZBW7lRh6x8ggvaTJGwiR/0w43wHIp + VSYZpPicbgaSLazPxmBOt0A2fZ9NQJuMbG7JxgUnKa4NhxiP2yprC5+eixvbOpsa+eYCI04l/jIv + s40Er2Ab2cUEhdartrWWezW2cm4v4/Yysiu4XYkLgxkZDg4/kzqbbHhO4YJqABOjpSjyIq3dgUB9 + Q/I+U09jMi6101GnNXhVWXj2y+1j0W801yY0j/Yun9PM2wGeBp5XaR8zpxGXbV+B6DLGq8ISVMES + 0KNaysOXI2aag3ODEyjlX44R7/JGb2MWr7RhXqO0nPVeqLGV4LRTmXIHr8jV2Blpy5f2Jm4Ftf0K + DhW2DaY0kMWEUayskQZJqcWWz7Fh0pwmK462DOZMwaVOZ6naRJZWPBJljlZJ1aZgIvBuiXaNTu1V + ObFA/OVhjZNvSbld2dhIjZdiVwQdsG69V4MtcgwYymAGHB1MGsPbgr9XYFO56+O8mLpumGy7EE8W + 3mipJCUme3X2Mc14+FN+DVpsw/oyh/EzQhMsYy9ZlbznWhx30V7fHbjXtjh5gORk2/jlwBcmmHbg + wobGzhMN3ulZOdlhJ1p1krmzM0x38gw0XmG6fqIRfCrxi1FmsQKXfKk4Cp9XiblwG6oAMtEFLaiL + UPejysQcMROGQZKYHWSWmOkblpT6GEbvRt2KKgb2oNGWVr1DCiRaq0fNEYfDMLEUPGIJshg5DDkU + WYQcgixEFiBtyBRkMtIKHsgS+VY8iz/FEZSGsVK0pYp5UI8qSKHCYOwQqgyixTSoRP0YVcRWp6EP + WRahXoZ6A+p+1EOoYdj0FCyxEGtkmNeK3lb0tmKJVsxhxRxWUAg/+CzmpG7he58lC/EvnyUb8R3h + MOEQpX1LsW8IXxMOEr4i/JM8ewhfkvELwueEzwifEj4h/IPwd8LHPosK8RHFPiR84DNHIg74zPGI + 931mF+I9wruEdwhvk8tbFHuT8DfCG4TXCa8R9hNeJfyV8BfCK4SXCS9RI/YRXiS8QHieqn2OPJ8l + PEN4mvAUYS/hScIThMcJewiPUZm7CY+ScRdhJ+ERwg5CN2E74WHCNsJWwhaCj9DlS8xHeAmbfYkF + iIcIDxI2ETYSHvAl5iHuJ9xH+e4l/JlwD+Fuwp8Id1H2OwkbCOsJdxDWEW6nom8j3ErZbyH8kXAz + 4SbCjZTvBsJawvWE6wjXEtYQrqGiV1P2qwlXEToJVxJWUYYrCCsJlxMuI1xKuMRnKkSsICwnLCP8 + gbCUcDHhIsISwmLChYQLCOcTOgiLCAsJCwjnEdoJ830JQxDnEs4hnE04i3AmYR6hjXAGYS6hldBC + mEOYTWgmNBFmEWYSZhBOJ0wnTCM0+uKHIhoIpxGmEjyEesIUwmRCHWESYSJhAmE8YRyhljCWMIZQ + QxhNqCZUESoJFYRywiiCm1BGGEkYQRhOKCWUEIp9ccWIYYShhCLCEEIhoYCQT8gj5EoQmS/OiTEX + GZ2EHEI2IYuQScggpBPSCA6C3Rdbikgl2HyxfEGn+GJLEMlktBKSCBaCmZBIMBESCPGEOEIswUiI + oRqiqYYoMkYSDAQ9IYIQTtARtAQNQU1QUZlhBCUZFQQ5QUYQCQKBEUACCxD8hF7CMcJRwhHCD4Tv + Cf+SqmXfST1ih8l4iPAt4RvC14SDhK8I/yT0EL4kfEH4nPAZ4VPCJ1TfP3xGG+LvhI99Rlxg7CPC + hz7jMMQHhAM+YwXifZ+xEvEe4V3COz5jFeJtn7Ea8RbhTcLfqOg3CK9TYa9RYfsJrxL+SoX9hfK9 + QniZ8BJhH+FFwguU73kq+jnCs9T4ZwhPU31P+YzliL2U4Umq6Alq9eNU2B7CY4TdhEcJuwg7CY9Q + 0Tuo6G4qejsV/TBhG2ErVbSF4CN0UbVewmbCQ1T0g4RNhI2EBwj3+2Lw3GX3+WJGIe4l/NkXMx5x + jy9mAuJuX8xExJ98MZMRd/li3Ig7yWUDuawnlzvIZR2l3U6et1HsVvK8hfBHynAz4SZfzCTEjZT9 + BsJawvXUpOvI81ryXEO4xhdTh1hNnlcTriJ0+qIbEFf6ohsRq3zRpyOu8EXPQKz0RY9FXO6Lno64 + jNIuJc9LyGWFezPyYERV0lfhNUkHtBOSnkB9HHUP6mOaqUk+1C5UL+pm1IdQH0TdhLoR9QHU+1Hv + Q70X9c+o96Dejfon1LtQ70TdgLoe9Q51W9KtqLeg/hH1ZtSbUG9EvQF1Ler1qNehXqtqS1qDeg3q + atSrUUephGPCEZgKScJRZBsksWW+KL4d/+CL5EtrEWGhz8CX1gLCeYR2wnzCuYRzCGcTziKcSRhO + KPXpOUoIxYRhhKGEIsIQQiGhgJDvi+DrNI+QS4gkGAh6QgQhnKDz4aR0My1BQ1ATVIQwgtKn41Ot + cE9H/hO1B/VL1C9QP0f9DKfzfdT3UN9FfQf1bdS3UN/Eafkb6huou1EfRd2FuhP1EdR1OBW3o3az + 5TTSS3wGvuQX0+BcSLiAcD6hg1BBKKdxGEVwE8oIIwkjqMsxhGhCFMcOURQFnzvp7t2igB/uBNiL + KopAbbmIMIVmfTK1rI4wiTCRMIEwnjCOUEsYSxhDqCGMJlQTqgiVhBRCMjXeSkgiWAhmQiLBREgg + xBPiqJuxBKP7NmQv6jHUo6hHUH/ACf4e9V+o36EeRj2E+i3O6jeoX6N+gvoP1L+jfoz6EeqHqB/g + 7O5DfRH1BdTnUZ9DfRb1GdSnUZ9C3Yv6JGo36nac8YdRt6FuRd2CehuffaGXxngp4WLCPJ8BX4VY + G+EMGpa5hFZCC2EOYTahmdBEmEWYSZhBOJ0wnTCN0EhoIJxGmErwEOoJLoKThjqHkE3IImQSMgjp + hDSCg2CnuUkl2AhygowgEgQCox0J7ruQAVQ/6qc4sK+jvoa6H/VV1L+i/gX1FdSXUV/Cgd6Berlo + T7pMdCZdypxJl9Qs96zYuNyzrGap5w8bl3o0S0uX1i4VNUtNiIuWblz69lLFxTVLPBdtXOKRLYle + IqgX11zguXDjBR7NBUx7fk2Hp77j445DHWJ0R31HS8eijhs69qNBeXfH1o69HWJ3YI87smNYafXy + jms7hGhMF6CDRXBzcocmvHpRzQLPwo0LPLIFhQuE0kML2IEFTMhdwCYtaFogoNeWBanp1dx7yAJj + QrV+Qe4C9wLxvJr5nvaN8z0T58+fv2z++vmPzZcvm79mvrAZQ4J7vkpXfW7NOZ73z2GwSwiAHnWP + EPCJ6vk7BT8w+ErwuwPsLByAM3Eg5jnP8LRtPMMz19niad3Y4pnjnO1pdjZ5ZjlneGZunOE53TnN + M33jNE+js8FzGvpPddZ7PBvrPVOcdZ7JG+s8E50TPBPQPt5Z6xm3sdYz1lnjGbOxxjOpho12Vnuq + xKIkvEHAgr/tluWWgxaZpsncbhbazQfMB81ie+LBRGGZiUUkLEtYkyBG4EOgR3xS/Jr49fGb4+UR + UkDUtkcujxTaDcsNQq7BbXjFcMAgA8MGgxCxJmJ9xOYIcWLErIivIgIRss0RbHP4Y+Evh4sTw2eF + zw8XI8J5XNS7w5151RG6JJ17tEsnDnfpynQTdeIaHXPrnPnVbl1qWnWZdqJ2llZcr2VurSOj+it1 + QC241ZjwlSqgEgIqBiKzMgZMjxDDcG62spikavFRxv+pUw6MXQv1WbXdysDkWm/YpOletsprn8Kf + 7rppXsUqL3imTW/oYuyaxi4mVNR7o/l/W5fil69eDebyWq95SoNP3LDBXN5Y613Ow263FA7wMKBL + Y9bMhR0LFy7KWpiFD9SZC9GyqAN/JTB8IjsW8ZRFCwFdsk4h3GMhR4fktLBjVgeWgQloXiiZeWym + 5HKqMv6rcsqe/DeE/Z6V/98WwIXMV/XCgQuRLwZcpwvjZs2UviSgvAPAv3bAtwdW4M/tsBG2wSPw + ODwPr8K3TA1NcDk8Bh/B5/ANHMV9q2QxLJFl/MIvbfwC8V8qPwd04h5QQCxA4EjgM//9gc/weAgf + YFmLsViZ47glEBnoOdHmX+vv9r+k0IBeyqsXXkDrQdYTOCKU8XigiMeFK3hYynFQeYd/s3/9oOa0 + wwLpWyOLYQlcBEvhD7AMLoWVcAWsgitxLJZh+Cq4GlbDNbAGroXr4HpYCzfAjXAT3Ax/hFvgVrgN + x3Ed3AHrg2k8fgf+3CSl8pS74M9wP2xC/gnuhnvgXrgP4w/g6G+Ch9BGFoo/iJYNcCda/4xW7sVt + m/HHC13ggy2wFeeM4n2xbtgDD8N25A6czZ2wCx6F3TiPe3Bmn5Bs3NIXP7UnPZ+EvfAUPA3PwLPw + HK6MF+BF2Acvwcv/VspT/RYeewX+An/FtbYfXoPX4Q14E96G9+B9OAAf4qr78kfpf0OPt9Dn3aDX + B+j1d/gMPXvQk/zI5x0p9VOphP2Y9wB8zMLgMBPgKAQwxGfvJmmGbpHmkc8en527pXHm87EZ43yG + 7u2fmwdxjB/E+eQxHr41OBsPoW8XjmDf+J181F4Kzg6N9y704WPBU/YFx+KZ4Ezwcnb3531BSvNJ + +Z7oL/X4iFIPXxswOu8MGMO/wz+kkaHRo9Tjo8c9PkYfPsq8jMFj+yHmpdHnebl9YB6e9hbGP8PT + 4Uscac4vpJn4Aj7pD38STO+Bf8JXcFh6HoSv8Tz5Fg5h/Du0HMTYj60nWv6FP9/DD3AEZ/AY9A6I + 9Z6Q0gt+nGN8wWACE8F/PHTcKqmMyZkCz7QwpmJqpmU6Fs4i8HVFeUKKpj/F8KMU7UnSVJIlkkWx + aDwvY1kcS2AmPDfNzMKSWDJLGZAW359ixRQbS2X2YJpRyhnfnzcJPWIH+GawXHYBPrOYk7kwnMcK + 2RA2lBWjJQfj+RgvwbRcieUwCWbD2XBE/qnwIpYfjadK1797assfgBjYEPg+UO6/q3eX+DCrZy/i + iIRDAGfqXOaGDfKZcJa8PfAdSwl8LR8d+FJ2JPAlywscArW4QZyL++AD2Ti4GN8Cwb9QfBtPbBGU + UAzjYQLU7wIdW4fHegl7YWtlZViOcjdGBbCyFyAMp2+dO0om6EymMtsQxdVinWFMmfJqoR7Ket97 + 92l87Issdu1jrnd7Xu/R9z5tKHb17O/JzWOGZIOk0eGCUqlQ2FKcwpA0R1FBQf5IYUihw5YSLki2 + wqKhI8WCfIsgRvdZRgo8zsS3j00Uq3pThcXJpVPy5CzLHpsUFRYmJll09gJrRO14W1F6glwWphDl + Ycq0onKb54KxKS+p49ISzWlxaqQ5Edn7hDz8yDfy8KOnySqP7hI+LW4YmapYrNMIclXYunRLTGpe + 4ohaXYROHm6KTUhUhhnC1Zk1zb23JNhj1epYe0KinZdl7y3FEYkNHJE9KY+GFHDAu/wd2dOwA1ID + n27VRLBxtu7Ap24zD9m1OlucDows3OjQqG0papDZmMHmsOOnTrfFrQEtixS12jRzqs1mUeuMYEuJ + U0aaJ0d65B6IKysri4wtHmYoMODAzpo5oyChJ5/Fu2bOiNuXX7D0ir17WdzemTMomJuHb9CmwW3Y + xgP/QV25eVlZjXajkeYsTUxWhou2FIejaCijiYpV2sRkWZdWYRyWV1Bs0cpO8ydMlunMQ7KchdEK + LVuj0NtGFpRWpxkUT7DtbP7s1MwYuajS65isNzxKI1PEZtpkFxtiNKKoMUY93fsWrsXVALIiXJUW + yIJhsK5vbJOEtdsSNDExGuD/5pjtKOD/CqdJSMMP3lvy8pSp3cF+p+KHdbdKX1cYx2OF/GO9W1mP + /UvoySrrycLO9RQzV0++qwfXZ2Qxrk9T179XSm5eIy5pmS05xTHEUFhUkIwDEsPXuEVkhU7BZjPw + BR51PCgrclTMaF82wX9fck5OMqu64J7zhsc5K7KGzqhK92+Kyx0z4vK1xZU5xgpLybSa23cPrR2a + xC6rap86Mj0qLVvWlp2WXndxvWtKZaFenT/xTPZ+2sgMo99rcpX1/pAzOjfBf21sTgX/dvXqwBFx + Do5gGmyn0etSRnULN7iNOjNYzMr0CDZeGafVsXFKvQaDj7DTICpw8GEMR0XFK7oDB7agh0IainA2 + TtHNpm91p9TFS4sE+897n4XIYi7XXkMxXyYmt+G3K5bGVbAlG/pGFIN9J0LfQGMHNeEqfyNbrQrX + yKXwQm1SfpqjwKLLSRaauVV2lyUjTuu/Wx2XbrGkJ2j8Fo1eo1DgQ3ZjdpomPpPGSnEejtVweIPG + yq3R5ebGulxqZ1xcQrfQsjU1T6tVY2A7pBbVxWs1cTtZDrjBGTi4VW8TxuV1Bw66rTwUq+dPHT1j + Xbl5TkVSel2Sp39/8Q3GPxDgzsrPL2Ou/T35hgI9fxiKR7gKCgwFOJLbftNKcCzt/UNnY3z74kZm + tkHjKe1kVsD3NA/GKM7TmHPtqbmJWsF/pSwyKTclJTcpUvTfJGgsLrSbNUU5m5zluVYti5OxFF1S + xjB7lyktXpeq1qsVCnzIzEc/1hnUopyPdeLRj/rtKwqKImzFmcd6RZZZkhoRjrn4ii0LfCZeLbfD + GNjRt99HCTdvS81Pzdea+H4HrZOPyFBQs5yHDUPxxzi8b68O72Y5bu0okzxjilHarkb+Hwbd8qnB + 7RpZXNyTZSgudrn0PfoePuyRPMJ3/i5w/jal9q3ZFKes79Ki282pCMYVMcEh59ddTLRFIV497pKH + 5lQsbChN0MhUEerwgknzx+SOG5KYO3522+zxuVUd6xudp08aGa2UC6JSp9HkVp8+NMudFeOa2NLW + MiGXXTb31jMKjUkpCXnOpMwETXJ6cmzmSEd2WV5W7gjPoroZq2c4w+Ms0eGxtgRzeoI2MdkUYy80 + Z1H6Qhx1LZ4Tn+PaT4EpwXMCFHhObIkzKCL7hiFS2qbmOm3fNs1nrr29+/ip+VNOx/dw/0JL7rvQ + pe37uVwdofLv0lkKHHzL+nepw9VyOT7Ea3EscOuaM+K1R3v6F06UNj7DbMmM1/Bti/evGu/fkbJs + SIV0qN0WF5umdei6hbrtsQ60aBy4Ye/aBg67OROPdr1bpdVGmlsj2+RtwHcInt54y+FNGrcfb4Hi + yGL9u8TcvOO3XdqJt52MbrssTZixdGjesESNbJR/7gg5v+1y8qKUGjZBYUgdWZBRmpFgUMueFq5j + 9lm2dLzvlBG63d3huB0UxswU8RZ9lFrGZEqtQXuPfxz/fzZW4uMgfp6mG8/T5SjYKZwNGrzy1vVf + ea+4o7M1CcvSWNr7r+QdyBPm5zG8r+z833z0LQXdLKxLeQaU9ZTh2nbNOK9nRjFf53TD6fkJ/dM3 + VcwJN5V40FY2tXVBtd9nyciwsLrW61qKYtKLU12TSlP8j0Q6huZ2rnUVphjyY7IqS2/f4irJMLKK + 4TNr8pPDUx3i9Y5US/ncmrSq4kxtWFrZVHaR2WnVH4uxufyzrQWpUf5vIlP4t+Ww37IS7HckJEHa + YxAl/AnfbxOEZaCCOJbrC28xdbO8Ljn1iwVfJqVVNaAf8gH3a0ndja9d639PanPJNfuuGev/Lrlm + UdNZZzUsGO8QUm585ZJSap57xRNXVl/YmN/bnH3actwJfAZysCXZMIK/DAjLtqusUdYoUCV0s/CH + 9Q7mcCji+b/S6VpwPRm6FP1jfR42bB+dAjjK9hNbR7dXzICLTFr9OfIwXVjvE7yhQgkGZTJ8+Few + qrBwlUymCg/z72SXoknebMJ3T2qzyuhINKXGqj/GgCnBblT5/apYOz89V+I+VmPrbVDQJTd0C+u2 + J2o0Jkg0ybtZ5BaDIVbWzYZssbbE8tXPG91DN7cruDIUg1s4+Ko1imq9wX8nq8SmyeW8abu0lnyH + I9+ixcYnGvTi40Ocfnw9NvGm+i9Rk5ta3OVIzeGtawh8LrPIhuNtNmaLxRIRx79LBekRu4UNMATK + WCR+ELEx1cPxcvzJVfN/Vy2ZG93NhnflzgsOcv/J3bN/L1/TwVVw/CzF87Vo6BDb8QPGGGOIVijp + tguevzKZSa7SKAwFE86trb24MT936oWjk8pNO5U4yjgbSrbEkhxjtNU3zsxZ+dqNk+pve/PycYun + DcVX0xVJabFqk9WUO2153dRLGrJ1urfUMakJCakxqvRk/4R4u1Jn1KtqOl9Ycelfrx8flWiOzgnO + CuvEEyoGonbgibVuq1rfKp0/jF89x2/l4HURwzrx/cXOx1VnznfY85O0SWpaDWrxM5WOj6pOFQhA + HJa7Vn6f4ICHcLsoBEcc0AoWDmFtcfxbtlFYGyh1rTiMxV0yaa3iKpVqVQSXZ7BSaTkKh6Iie/2W + DD6vvF5WhXXKWoc6ceHt7qv52F58jQr2S/4krrZhULM1OyYnDSe00a1K0bnUOTkphXjwtrkNkDKk + JceoEc2OFnObPnjs8jcTeuuJxNcdnNY4/u5TXDxwMGwsePqe7BUlqiBKekUxxsif1Jhy7Y7cRLXg + f1U2rMyakxgh+t8Q0OpwuExqp2NzjtuZpH1T9r4uKask7cG07OODmXfseUOELEwbJhYde7nf6svI + 1qcUp/fuFYozS2wR2RnBvspG4aiWgrMrOZJ/vSpRlotw6yCxqFWTGcs3lXgGXSrBzgUPAoUN7440 + 0eFIs0Xzgf5xb4zG2AKneHwuZKOyHM9l5Ea+m+y2MEFgqrjMlJSceJXT8UpkUoJR9by9wiowgTFV + fGaKLSte5cnIdmSyp6uvG2Wprhlt8QsDO6OKMkf7T594fY1t0uRJqWwPv1X5nYvnrgd35OW4I6Pw + EwKeu9HCvbiQLMJ9oIZ43H4Rc2183cjn/ejcHfCRXDp2+3cfnr2Xj+584dIVT62sGoO8+MlVNf5v + TCNbx4ybW2YyjWwZM/YMd6KQvPLV68cNv/Qva1e8ct34kZe+eOuk5dNzh866uMpz2XTX0FnL+Z2A + Z9l2XF1mvAvzuhyKncJyMPDG+cCAR69ui1yutXPGtGgHHGf7+285fhmccILFWkR5oSPN4ei73baX + nnfPwjNxudsdBWat08Gy08ellrfVpPm/znNGZcaf2VEwPD1KeG/Wmlm5/t0DR1Wh1BROPHPq0AkR + crl/W4KzDIJt/gTbXIBnXPkOUAsPbM3TZxkK+RduHaUG/v3SxCwDXtVbSktji7Hx2/iyoU3R0/+B + VHotfX3A0ZCW5hR/1Jn+izs21mgc8DFT/ERrLcnJKrSGi+PDzXaXfWxf9/AurG9d01aSMGRCYXym + PUXvUYf5Hzc4hhedf25BWWZMlFItF2Vqvfaj9GJHpH9Zf3cfdfw/4r4DTo7qzLNeVXWq6q7qVJ1z + znE6TewJmukZTdIE5VGWUAIlFJAsgpFIC1iAsReDLc5hF4MxkmYkNUgGbGT7WCPv2ubHen2Hzj5z + h/Fatza7hgMzPfdeVfdMK4Lx+U4tTU2Xpqve+77v///C+16Nx1XaNj+7tCejpGzRFv+/WKz4jywJ + t7byv7TeBoSPzpnfEiFoSfOxBc9jHfhnTvoafA2MFbUKY0ziDEB1JQqoT2kK8GVoLQP6pLVTFN5g + QE5UMDAUR181OK9anPgTx9Oh1m1fmsisGS5opGKckMopebxnVau3MaQPdIwtHmsPNN1w/3BsYXdK + KRERhISW0aGW4YQz7VEHO8eXjHcEQdPgwUVxpdGqZjm7zh4wUBaXWWmPWFxJvzOQ7lnb0XfzcIjh + jEpG7zKanFqp3qRXWvw6V8Ln8qd6VkOJmKEtrIK24MDsxzES+uJJHUsqyyA3aV5H8QZbC6CR363T + rvuS8HiVSjmD3IA/aVXMSBVIIwopgUvlMpL4bj760SuzWmoRqlyoQuWH9z8EsR2AjBXGPGcxB/4Z + iGwdfvtJyrdeud48B+u2y2E95xGqgK7jpUDr3ud23vjs3ha5NeX1QwdlKwzFYgM5C21L+IJxKw2e + 3P341sb0hi/dgW+u+Yvpvx8dy5mtucH5+PraOTg+H5TPf4HjS2PjZzEPfhQzYQF8tEiljOmUCb4w + BnU7G1DG/dWiEpP7fPLoep9cY1+vmY3eIdEa4+m4AUbt8C9vL/CLkIbVVav8EmI2gIc8nM0KtKvP + IS+Sgj8nIYjvGoGlLZzMOxhxmaamRIw144m2WmE6LP2Dhta35uJZu0Ly9wz9pIixJCPpgpZWvbs+ + 4VGJSZlKAfotlsqkHKYnYpU7DM6Br3uCGhEpU8or/2yzAQ+jhv+jDboqKyFL9MAcdw/xz4glgF/I + t07I9JAklk1hfj/WWMbnFZUqQg/+XQ/0ZXkD+KgBNKCuChmqqTQ0xNpDZWAomn/pAsRB1wMuvOga + dq1yEazL7sLlpMtFWsszvywycpiQWQ1KMGD9MNbXgiqRMvim5a2ifIDEDPFqBSssVPkmJlZOoFwo + HkZJww5oFef4sLCAajrs/9/B8LULpEyfL5Oplo2RTaYzVd9TPUPyVioReECHQkFijzYcigZVuQcW + 9uxdlGi5ZWrvIpW/PdG2tj+tpFW0mLJ0r9jWtOnRVZH3V7UszBp72jJLYnZGKZEomZ6mDm/v1tLg + rvmebKgtpLW4LIzJp7d7rG6bJjh+1/JfqD1pZ76YbUDcf+vMOyQm2o6FsBbs81WtUs7sGXwVDPzC + +KGiDOOobMZJihK1bDlRBvOLCl+fuVvZX+BLCwXUelYUDVRLC22owqgvVL0aUsWpT3mJubIE7ueu + hLpQxK25colKp+NdOdaw5nPLooM98zww2bbZg0ZKbk14vQmr3NXVVQqsvW9RoPInVagzbUyks7bM + 6kyyK6oFv9v74l0lla8xuJpmKZKkWFrkpoR6G1XRuBJ2Zuiuyd2FzSNJxpUNVH7e1ZMa3gAlOB/i + 4jXRjZgP+opHqhKkzYUzOFotj+M7i5TG2U0X/GaSCdXmD42vtygz9M2WZ3unisyAqL9afhAmL3Cc + YMqyT3mJ+vpZvQ3CoGJWjJBb6iOhHPEaZQjaHAEjPe+Lyzc8sCSQXvPwyvn7m2leiBb5h9m12WRP + mFMHuxpMyXTW4aoJbG3fCJTRWiTIlibw65r0phu6SsmR9Zn85tEU68oFkN31QamdgmwSxhoAIUht + UqNxRtAOiXADdDxQbk4ioong5sgrJEKuXgEGMFJJ4v3D5CoSf5I8RuIkaYlDgaDCLDoWHfBn4m/5 + +gzvYYySwVUEIzPIwYDMAH9A9kHRwpvXdDj8OkTrxSpwJ3asmAhfXDGBYhjExnFe3v9Pb82bOcxs + qhpIC1GSuD5e5fxZXksS4lTQM/0rc9NEe8e63gQrg2kADrPvxqU3d+yd3NfUuuebm7cf3ZD4D2LZ + ykRP3IiDD2ORwkS7S6PXSNROo86uYxmDXtW8/4WDe1863N2x+8kVjs23eFpG4xiBmSuPEF8lfoa1 + YoPYSoBVK8pDbEJC5N196b5X+gh7H+j71atyACcnf3UU2EaBYRSM/uE8B/QcwDglh7MctypPfNBc + CjkiHWc7cKwDdJzP97HLgJJY9lrRMcRjHIqh7eLEhLrQxlMmYk/4duIN/sBD31wcr78x3Qc+/t5z + t27ueK0DJzsAe73br5gbwCX3n6hxDwxxdDqBeXx+MYzZdHoYjXN1yUQOsntDlv8q4AoG7KDBN8vm + qC7l8/sZovqO+KpOuUmnaVh971h4kJNr0rF/6d+7INx483O7d/6nG+IqZ8IejmfD7lBuzT0joQEn + MKu4yneGe715r3q4x5f3appKbZMmu0a8fnlhMKElViVihhbn4C2jYY5ReHRWLy4lvJ0rmjt2L0x5 + iksyzuZcSq8fijet9rvX9A4eGI9Sskjlg9KwMVywdw0ZQrnphdEELtK4HTZlqkHviyN8zoeW8BrE + Zws2jK08kbINl/EVUxjDYN0ImoqAFRvJ96Zah22kux21E0f75pfBvCLl7qfe02o8GlwD/edpNVfS + GD4QDWFt06+Hd1zkyyGQlVTpdL2n9l4tUs5cUv3A9Zlr01X7Ld/e2rRpNKNCUBDLJfJIaX1n41jW + 7G1vn+evMVigp7sUpI0Buz1ooK7gsPD2J1ZFaLVWodTbOZuPk6j1al1qQWGhK2VnBw8fW7377KEe + pacxtJISElGqcqGrJ7lgXUN+8wLIalk/ktqWmQ/BA6JB6DqdWKeAnpdg/PoSZsE46FEpzA4OnCwa + lb0CT79hqqWn5uev/K9L1j5qs9doUUABLQ6aGthf82u1o6Z1bLypZXys2VUbJbEf8jJkYZYCif7G + fG9/UwFGsbfCce4nflCr7ayaovj7Xru2c8Wd5m7wmdp3tevCaILDWqvcwSo4QNOApoACAzSJlfFV + J4uUsluYJYijafKh04R5snb2qhO/zhDm/DQmjIH4KbTcFHZbdVUgpEHhjA2j8ZUnMJuyPPP7SRoM + KJEnRfEdzG4GinQx2hcyenqN/cIYYJjOL+oJQUyB15Dyz/ngpZNAEYpYorpiVpwQ1XPET+WWpMeb + tMg1noIvsSZTmyRlCtodIT3V99josoMDrtk5g+n2voy1u3P6uSsVccPwcPMN962G9liC0R0JZYEq + Jdtq9qjFd/P1kt2oXlKNJoxlYCrK2D63QVh7B5a6YOxieM5KP+EH6gK3a1ZcyOb95QN7j92cb9l/ + +sC+Y7vylWkuNdqWh8DVJcdaC2NZE3hn59l7+jpuLe/Z+Z27+9pvLd/RsW0kFhza1gOP0eDgNhTB + Vh4lMTjH+gjWmaVqEezh60WwvcqhvzSC/ZhL1EewV1H/tSJYSFgr/O0tzY5ZOzAG7TYYyfrnD47G + 16AI9kNVsDNlTKIIdlVDcl6EAxf3vnRXibXH7JXlNUCQF2pGsSnQEtQO3HVib2HTSJJFEewvOntT + CzYIiMHP8JndTVXE+FiI06IcM7GUnYpThIKgUKwDjZ8qA5jtFsN9PpZz9HK8yaOMFk55JYqhzlWx + Qn3sj9dJRpj7NaQjxs/A+IaSao02NReKQohcBg13az5vUdgcBlpE4sR8T8xESaQSlac5Mv36leDY + lmr3sYRERsk5tH7eO/MO/i6cey/29tzKbWx25bar6MLkZAzE3spBCqPeVuWKiAFyjhxO8OutbDNo + RovbZn7N9S203tqnU6IkE9MBJal7t2YRUDrVRdcJvly0ciKsvDgB/16yoFt0/HVv9inWefF3Cxsf + HE0tKyV0clIql9Hh4njWlfFrvS0DCwZavKkVd4+FhooRjZQkCIlcKvMV5idcKYfS1zq0YKjVB2z9 + Nw/6Wb2Bi0asbk5itJkYU8BkCzssrkhxaVtxS39IruZYlrPrzS6thDNwjMmttYccFmekuETQkegJ + 0Q7sYewLL2F5PIatx5bjXVg7th3vnPIENQcOl/GVRY41sje2r2/XsKymfT05cAc2cABtYbEULbu7 + 88s3d/vfjs1/eyQGX4vSb/k29y16t3vgMIv2OxlL95ZBz3HZAF8xTsEv6bmangrZK1qAeP0cxHM8 + joo1fNuD8gJiB6XgMMW1Kpjv0hwfsd3lEuWuqwGdvhZLIggIuQBfadPVcgPRE7hYyrpiWUv/TT3u + TWpORLOyjRp/wetuDOqMFhkhpZEa+uvVcH0lZsa35rQu1mjIbHp8w9qHV8W/h/Ci1bwSbdY6jCqJ + mJKS+y0uTsHAaMI3tG8EvBrPWQN6qiHaFdVxvqwjmjc1BK+iv5bra79zU8krIrWdvuJNI7H40kML + Byl9wJqLVyZ6eyUyiYTzIJ+un/kd/iB5HGvEHhJQelqlUjQFMXcUPRVAr4jWaDkK1TnpLlkVtRMK + pF99KYn2wRUlAjogM5/nnVp6OnUupRJSvuex6Ke4huDlySuUfz314Q/Sanc8Z5l/U8m1RaNFpLSZ + tgrevyb2WJMgdlos2h+Jay4T+g8hvYtEkN5/eLmwZmaQrMgu0SDuA+j3vUpwL34aq8qQTEAZtmNt + J+LtSii4qbDNFoZMv/IUkQm3l5RhNPGmTEkLJzrpHZChgPBi2/mLqNdHSI2h1aPVS359crYvom5q + 3PVkQfyPkLMW5VS21c2QUnuuIQ7iZY/ro6dq1I3/dG6ilkiUu6ZUhNmKpOSvIFVMwNkyyEzCg4sR + T+gUHQoLfGGZ8Bg2WGovlUpNixk09xOZkhrp2DuwHNGBRKADSAip86k4ClbPxdM8Uwvw52Uxp/3L + 5HAlIdTk4PwYdEtpjTuWM/dDeVTuqBMTIZIoXbGrCwrcNmdBDC3i1DxwDWoIXAm0oJiWkVdlVSdC + i1PHKphrCfH9Wu/K+1cgUrAy8Yu8lU0JViZK1qxM/DSU+2bshhP21iEkcPnm1GZm88TEZoYwDyJF + dCQxdPCaR6GYi8y6gVJ/aylZyufDQ5gZ6cFbIpECuCofC+JvQ2t5ab5Gw9MwrwRkjZ/U/urk7vwE + Fgy+Xid7WuO6honOSR4vhlxz9l0nf/7DvD7x/6i34IT6mhY8J/xrA6Du40jyt6A6JMzpUtimahRH + +4UipB0qgdVEe/20yNjrMVT7QwcurRcK678wzOcrL8wn+Omr1RYvW4bJ5uaqjK+hENYJc+++x0aW + Hxxw8mKDYZzaCxOe1bladdFVn8VsvHcDPnuiIu3mUx58QV3G6YDZ3gNw1nHssDDrs5gLvw8zYB48 + VJTFDPCF6Wl5GV9d5NuYCR0dx9xumirjJ4sMVqSDvW5aZe1VzaVv/PKMyYAIzwh9vUH5JirZqQvq + uWY589U/hySiqwb7BCEUMHKaurWbupWbw1JgaUxEc3aW/MY3SMbaEIo0GIDs/bdkwFRIRjI2RnT0 + K4TcFPVHMnpAX2hQ6RgRIVNQoKXyCqWQESJGpwKnwRNqIyMmxAqq8gYISeVSkmSM2soWVI3I4mfx + 9SIbFkXPfj0h4RrL4NtTcPJYQxk8W9SwDoeZuz8ep8xfDOzIPUrdTOziCZ9f0lUV4tAaztdKNEAo + O1xjGWMuXqlfxcDX+8JRt3NJS2yw0RkY2jOUoQwhR6AlaqfUOmXnlmLphnb7ixlX0q4IuBxJI/5L + RiFnfa6AHsYUye4oZ+bsHKXmVImQ3mjTGTMj+fulKqPaarNY4OyWwtmdEcsxH5bDGk5Q9sQZcAwl + uuD5ogrT2Ckm8m3XDuONzK70MdHN/Joh34szl9PVrSxcbryCviTVtJ0TsjL8jLO4vMnWkIjoPAnU + v0/pfBarVycNjafblxaMP5LpvRZL2mPL2MxeA038sbRrJELr3IYMoySltIRQiikxQcAvlbfdzsTI + lm5bNmx0hL/o8RhDDXBGjXBGj4tpzINlsNQJmTGDZoRhUTBVVKrsNxplROBbuh2pZ+V1mqpbJQDV + aXyiOj9Uz+OuuMGulURXN3dNFEzO4qq2WL8XNWdZfTrZ92xZuzlgoGV6v8Wcd+O/FuaQjSaSC7Y2 + w5mFnU7ASYQJSSp9Hp8plDXbciGzK4xV53IftD0vFsPaj8cgnx+bMqtUZl8ZfKuox8wMIyMfOOZ7 + 2Yf7fIbgI44dsscMN881pfHmVws5qj1es9VxnUDSvitq4/h9ZnPlKdadDwbb004IEsrsy3ZHnzwa + Gt7V17ely3GWSDeYAyYGJ96326wRGyuTU3q3x8rIKelDj5V2D4cDPasL+nyL2h4yYQRmAO/iu0Um + rBnrx5Zh+9ppbAH4GyyAqcERLIzNA5/DklgLOFKkJOGkRJIME94B9FgXzDyGEObwkl8sbAsseJQr + PcTGJET2mPxlOS6XO4oPZXcsOuLYMztf6NEuXrhYaKv2iAkOTslnF29erC61X7cOnb2iDA3/Sa4s + Q/Mf5Y15N0M30zJ3cXleH2KklNV0d2YoYwoM7h7s3zLPEfWbrV6b0ebtWJ6zpnVnaeadSICzaamI + n7NrKbvPvcakaki5QiaK/Ae3XW5mY6WUUSqVqmhWhYtwQ7DZE+zOWDlfxuntNMmTFleLXtsSi/c2 + mMVi+9+6AwrOyrp9cs5cWafTAZKzKI16Sq1HtjOEfx+EIQ5QFdVxFrL2v2EW6OGOnabs/2ZUbhch + 479wRWPPrJ3n6kukNhnntVq9ehkEJzxyMkWsvRiNt7VH8V9LaNS4SEtwrZSCjCyhpC9kgoF0Q5Dv + E1sKR2GB/CLUSKH5Usob+VuD+FVvCyxSnddq8emoGi/M3WEO+tUr40chNiJY9LhHhUBuwWhwHLoj + C3PMv8Ojd2zX7+JvhYqJF2dLkHX39F1WTkRznS0m4kdRr6XFp5cFwqaMTaaDtASH5Y7H3Ym12ebR + lH5uZCCez3lcladmZcEx8E8+EfO0jBSgLgoQx2fhWDUQya6zmBacQrVDcKooo4xH2R3urwnceq02 + K8klRT/okCJjtwyO7h30BEcOjA7tGfT/Z9oSc9vjNpY2x9xN7cQfu3eNxAL923u7dy6IBPq39bub + IkZ9uNnnawrp+5F1LAV/xM/AESHez52wJygkQI7nfS3GUYm4nRQh6jdvV+6up3791an/EjXOyvBK + 6m9b2WIM+bxcTclSjV2fcMfXtRSX5U089ZuzLlsGShpRf++uBRGZyqT6PUqcSSklxt+WQDOAko0l + 4gu29iDmdwW/4PEi5hds7QLvqX2TLhPGQhIpyk3Ud/07XCxn284hW+DLECA+fU5duLSB9Eo7ENq9 + wQVcREkklEKlUBhMNlVt5O54wqXze11qxqqVEIB8yeSERxEpVdt1le9caghN8AMyUiJVo+d5NkNb + EMFRtmHznscK4OGTjogjIjeWwdNTmDz0YJJ/DofOWEpmjxgLIu8O6ohKdwQpYPp1vk9q+vXw1Tqk + 6uogWRhT1N6Sc2UTSFo2EhcF5q0quFqTdjkcrVQss4VybnfE3zyvKeApLsna8xErFLFYKhKbA2mr + zxlqKbUEiQPxnoSRZli51aYxMCJWxRgsehOnD7ZnIx1RvZRW0Ba7Rq8g5Uq5RWswcboAenKrBT8L + fiA6CqPpyCTmtvuRRpQwD7dv83/DSH9Dsy38tESw/PN8c+q56XNvnqu2qaNAqcpAl5QCdHyqJ0RH + /LbAH0gVBpdPc8OqIqNgmDYEVERVOxj4dqfJabSLRBJIG1arSyGTiFav/cgZDNluhoZEkvDLzbZQ + 0PlLr0cuYo28DZ3FnxRpob+NHpe5hdDBilhF5ZYRwe367Y4Ts4FDGx8ICcH+5WFDXQivuySCx590 + JQwOtTS2Idc8ktLL9DzLyYIhY84G7Z8PG2pxQiGR8LSOFsAgsnoCfqn8NJf3uMCi2nvEgw7Ig/fA + EcexURi1g9+gqB0xy1zUDt6ZgvE6DNbBbyE7uungdjctsm5XzbIjH6t/n4/V+Vaquhgd1CJxv6QW + ift91cVEfXWjpkSCf1aM66I+d9hA4ePLCLRLwx/T4eLHHhADLuJzhwwUMTJCUDqv3RvmgOgQ/q80 + DF3QlsvnnhPLoHakChowH1KshMTFMslXjoplIniSod9Dv0eEeJlfD6QxOaZFK20vTYllhLyEtV04 + X3Ujdb4KPFBbvqvsIl+rrtZVnkHXIX3ggOipuev8hL/Oumtc50DT8HBj8/BwoXJYFO3JZ+fBf5Up + eJ3/OfMHHBNthHQZxOzQs+JlzIFx+IOnaJHXPKDshkJ988c1Kq9utiLmlh4v29X6K0AZw3ZHyEgB + k9yeCQQa7AqRwpkNBnMOhcKRCwazTgV4qrYWQdyv0CrEEoVG8aehYN7Fsq58MFRws6y7gHj9H2fe + AT8nb+LHhrw+/lV+bF89RStDcHSbMDg05bnL/QwxZ62Xje5FSh90OEN6mUlmyYTDaatMbkv7fWm7 + QmFP+/xpmxxsgOkUTCQVMvx1RgOHJtcwHzV4Uw6GcaS8vgZ0RHH5kzP/Dl4gnuNX0czHMW0ZL5+m + bG5jv4iFmjzfdp6vS1zp/K4Y0gsMEk7WKZcLR+by94QulPewrCcfCjd6lEpP43QpVEAnCqFQEzo2 + IdwchOP5OxCA1iA7ISP64RCEhu1ZA/i79rGxYvv4aPHIRLFt8YpiG/zUzAeVR0h8ZgBTYOxJTEL9 + kRzCkD+pdnI6hQ87UzoS1+g+6oO5qp44pdNUfp8Kh1KpSAjK4RZiHf4L0d6a9XC4GA7BiYtPBUVm + X4+yB1rP+RRU0BtXVdCszyV8gqvFX5FxLpPZrZUZ5OaIwxExU5WtMq3bZHZxUqAH6GR7kniwVgoB + L9XKI5X2S89xHBzd4Mw75FKyZa4r/Di/ynmM7wrvOMEud5dB53HRyj+rK3xp56Hv33Hf9w7kOw+f + 44+VP1hbVhSblrc5bcLRgRv2nf/C2MjD/7AXHRc88uqd44eWxqOLbhsdv3NZLLL4Nqgx48yHeCOZ + gPGs/bieLuPPTmIqOV0Gt09alolWQLlNn+d77+vX3iVisRDN57wCWXF4I7/DIW1j/klnVUkQyQAd + JH+f3R8zSpw0KyMJGSsnJLtosSrsM7n1SslxUkwAQkqj3tXOygzxBJTQUmzj81gaf7OoGB4PDHcE + hocDHQTqev7jCYyRnQH7oAx7wN5TLRr4MuTRY/Dmj8fKQHvS5RLNX24ogz3HRauF5uf4xYLysv5n + oToHCfniNVo7+K7v2TJC7cxcQ6Q4XWsT52wE8UTrgTMHu3ctyjEy5PdpCZ2Yv749O9po9fZs7NrC + aihSRKkUWxuXNjt04c5YZllPihbTUhHkaK5l+b7SiiNrUtamRYW2LYORIwseuqmds1oZpTXqNDrU + YovDYk7NC4d7Umapzme3eTiJJTUv5GqOGB1eh4Tz2fVOnUrrdRsjo/sGmjYMFRhcnBji6yu2GQXZ + QUawEPS5hRMxp7KMb5vykyQWLePe07qw0rksZoaRw56TyglqFTnB98unUlBqQmkFkkZtq8VsHJqp + bTOsbVHnVAjRbuAkO3TqZ+S2hM+TtNLTv1MalRKRXMuAo2JLoite6A2yzygNlQRe+RzYtTGdebUG + kVclhojHkYpFzPhraDurWK5WfPRGEv/m9D0ovp95h3ijHjXP8ah5jkfNbgE1e/5M1BBvNOyYvP3e + Y+v96Z2Tt8FjoPK+JjpQaJif0Klj/fCY1OG6fa89ClHzo337zn8eoeezS+5cHAmO374QHsOBcYSa + z0P/eYxMo9+w9DwWxJ8tsiqbioYvzKBRu5cFVWXQflwMxXox1fYmBNC5Wm1+diNbzcauAiYV/6CG + Y2LozaezEElitAf7D/+kt6rEuJSRI2AZ/HZf3CD9mYylRessQos6eiADja/fRYtUIZ/BrmMlU6SI + QO360o9O0wY/4udxiLNTUKaLsTXPY0n8vxUVg6O+waJvcNBXJBgzetI9xsyDbDTZ1KTLInj1jkYQ + vBwOUe9yHoAqmPUKIBNi5yrM4tdDWPZTAuxU36HyjR03L2lSQYAplVSyf0N7bqzJ6p63qWe7Qi2H + lKuS72hc2gLh1RVrWN6blqM6IyGSKdsmDvateGht2ta4qNC1dX7gkdVfuCGrNdtUamvQkvCa7RZz + sisQ7U3Pgsuc6ok4GxG47GKtz2506liVz2OeAxeVGVoP7dI0oyAuVrGVvwxbbogtyrnMb4actGeK + ROCC0Ep/emgRFzn1Lrk16UWl++kZFmoVhnUy8DXSFOmMNZTCml2sobIJr/wt2HwptIyxgCPud6vx + 38gUMhKd++gfBWjBOSyGHslSj62v8dj6Go+trLBPKfvn7lOyNO9/4TOfndqeatn//MHbT25LV96z + 54YT2eG8xZYfSmUW5Cy46dBPHprf8zevHbrrJ0fm99x3/sGN94w4I4sOLb7h3gWuyOI7UX4DPZKF + jM96pC9POnmPdNukRdjlN80/COUaHilX80gW6JH83pRNflpnUopwiYK+wBqtQbsvZpA6ZKxMhHaG + E8o1FKkJeoxuo0p8t4wW4zADkCKkDMz8lugmmyFSdiOkfOMKpPwcIeUMUGNNmAzki3LV55qONuFN + qiYVAo66qITI+VelA2xzAASeDboySMxuzEEbiWveaeKq7gn8xeDp7rrl6ysb1/QlVTDsVzKUv2Vh + Id6TMpkKi1o3KFRCX/TWaCllYl1ZX2K0GJGhkgDMzFW50a3F4dsXR02pUhQFEiA3dnA0yHBGldoU + sITtnInTuhvszoxHI9Z6bGa3Wsx5M3YYcmuMNoNY47JyNp1KabNqXZ3ru5Ij7XE5IQ4Xx9Dv8Zj5 + E2TOMBbBEljziYSTLeObpvwiERYvg/8+qfObE2WgKlJk1Anx7lzPb+xRo83WCDf1CAIfjyAY1yII + HdOyd9DWhBut4VR6WC0jhqqXg3m0NdYRb5gXUt0hUcjElXV45QLwgNZk4kVK2BZEvSg2RH3mgMul + AxW1iZWIoN1MPwYzSlxRySMc5aCVbIRWguJOP+qn/DLEkQO/HSZDZpA6odrgLYPU1XFEXtNHbYyv + +8pNA3uXtPpU8XVf3rbr8Ql/5SO1r+BHqYnG2+gLFZwMrvvsj4/0u9tX739k7M4ff65/4MiP7tl6 + /4gzvPjOxVuEI1p5g36qSMZQ5o381MHTNhV0UbRGXQa3TrrXIz+lFLZcp3hYnePFez0nlbvESRVh + iiKZfhTJD333ymnODLEG8863pVpr2OaLGCRPQboSrTR7UJ3TYzb7dBS+ay0FdDGvzqFjxfeL0EMY + oOF99Cyl86H121Eo034oUzHxEzGScXTmQ+JAlW+bBb7dXOVb8F+RxUCuTUGLCf9fsBiBcw9olasU + lqTHk7DQlQ2MTiFG3UMgTpsjnQ3peSH1KkZXuROv/DtgQTiZeKa2Y+wZiT7it0c9dhVOc2ZWAlNL + +fSRGKhUErUsQOTFtFgA2QqHfwl+a8cfg5xrAmMn2FFPGYwfFy28HudyV0kDDv/w0D0v35LvOPzD + w/e+dAtMAxxty5o6VrRYncLRgt/9+AfPTix++n8f/fKHz00sffr9ryjunroxVtjx9E54jOZ3frOW + B4gMkHUtz8PM6eGiTK+i5bRlRDSOUm9oG+fTF/+SJMBNo4dPUDAJ+O1OlAR4zW49K50iRCSA0pUJ + ex7fIZ6AElqMsoAk/sMrOPdtgXMX8Zy74pSqxrbjQphC8mHKKGTahVU5fmwW8JfT7BPNB87e2rVz + YR7FKKySTvRtmE0BNis0qMCgkm+ZTQGW9iQZCU+zUl3rxO6ulY+snU0BwJ4FR25s01psrNoScUbd + ZofZlIAZQHfKItH57VavVmpOdYdcTRGj3WuXan1Wg1Ov5DOAsVvmN20YzjOEKDFczQA+JL0iLY+a + FgE1e2pRirqKmnEYoSipcBmsn3SOUOPVPb+fFjakl4NZgDXl8SWs8opsNgu4E2UBsUaUBag5lAV8 + CywEt+UT71Es2rvIUu8JaUA0asafkEO/JJZr5NOiOL5v+jRWywOgVWiwMPb9WidkdOblUyw+gEWB + 9gX8UQybeb1IofcYYAnMcQaeojCz0OhprjVLmctgrMiwo14DPOvl2we8yHZmnzzDb5hDyENNitA4 + JsLmohreQuYAMgrgWoCjy5vLn+66Qi85vOrV+o/JOlCTxBupHSfvPPztDcH0jpOfPfzcBpilUJw9 + knc1DUTVunhfg785atNI8Psf//DYimXPvP/El/7EH7+5/IGNpbC6sPPpHfed3BI2pvrX3VrLVkR6 + aAmT1d53hSwIZAEg9QOgBgl+9yGUXjEBCCxYxh+etBloVXnmwkl4UoWcxcGizD0SZJWAFinRw72L + 4rFaN6fgOMLnz6XR1tuVE2FsAqCe+aIhGABBeJu6O6EbfILLQZtbOSFcZmJiyV83YSL6ZhMmRooS + Jp6N/vQzlDDBfAntBUOMBNqq3X3SHkB1A3ppuWqAS0GyjL96GVO9gL8DTfI3U+gHGLQFi7dNBhoP + oq+Fl9GXYE7ZmjnV8VlRJRAaMqzZRyUtrDesKsGF65/ChKz39fClPAfVsgIpRVEdPxw3S/zVx4IU + uWIC3XnJX060tWSwUf1nJYO4WKZtXXGgVJ8MggOrv7Aho7HYlFpz0IqyQbMp3hmMltJ1RNsTdjaF + IdE6/g97XwLf1lHuO+doOVqOJO+W9+NNtmNZli3HW5x4d+zEW7ylLtlkSbbVypIqyY7dmCRNS8sS + 7q+UtglwgZZCWUpLQ1saAqUuCS70l1IoXAi0j6Y/yi0/KOBSehsujvy+mTlHlp2FtBfee/dd6YuO + ZuZ8883/W+abOT5HCpdkyoarwbhEU0GaeXCumyZa1cZ+F9nP/qfsNTHPvinOriTOwnCljDKT4eIY + Ts8odYyWTDItDgMrWJ7k4wmaj0+xapSy8ucmHZxMybAUEdsWgW0j2fnxJpKeyQNOOEFfLD0DGbp0 + NUVjj5Psgl1cXWRgiixMUSljymSK4pgiPWPSMZeBRJBc84DUl+Io4mv0mrdUr+HLWPEvROF4Pb6M + 5XQa5i6FsbSl3NZZmhSMS8WXsQ8xO5mQbePvpOeofsellRcJ5aa8RPZ7+DoW/+zZ8tsV7G0XH8Z7 + xc3sKfYtxW9YTq6AHHcPtGSx32OOKV6BFqXYUgs8NxEeldiSz36PfU7xC2hR4xbw4uaVQvYttp9c + D5N7ya+Te8mv43vJjxjm8h9RzEdvywrXJXBu3a6Mfat0522ju28dKITP6/bcusP04+SCKqHAJsQl + FWzMKbDlxj2197i7tm7y3t17jt1QW+e+x9E7VpeSUb+3pddRC5978H4oa8XKHGO3wZ4sC/ZkzDeb + NGRPtpQ5qzggXgeTTZniKtfBzDF1SnF2NmS82fhkXsEqNeqvwrKck5aVnyB/XLrnxW6pV7G67LTE + tHheOcnKWUYG+3KMoRYscxNYpheNwKrLvNmk6+gq6Kgt6OgoqJXp006y9U2ZSL/5wY1NSWmdG61f + bd624f7sbEXznPrR+JSHsdlW/0wUuct61b8SVa/PC9WRXzI1rSYFJc4J7E0b33egw7K9NlfNyVkt + z2WVNRQ2tiYUby7drOVVMjmk8qbODmtVbp05R6XTsDIFb96yo7zF2Sx0bi9uK0/Patq9OVsbZ1Dr + EoW0nEx9vN5SllKYxivjs1KS0w1Km6VgQ1xKXHZRvNGg4Y3JhqyqbeatYwmsLLt8M96d5K9Y2efY + tqi/tDKPS1cnR5sMKUVGy8Pipcms5sCVLk2u9OegxDXzSGZjnzPwdk2qidwtDy/CZFDARpJ7R5aQ + Zysors012LVx4e8wz37fWGi6RXLuLYqEvKzU/Mx0HXNUqeJk+A5tuKmI2Rv+PtagfOVP7O3s8dXY + f5zE/uP0OYpD+fcpjlz7cxQQ+7fnbwv2DwfaMvO6gjtGgy3pi7yxOCPNlMbr001pWaZUDdPVd+j6 + ysrR+e3b37/LVr3r5m01PdaU5PLt1Vv6yuJTrdsh7gpX/pN5gP04fs4Gx/6pJj41/rCWwZckhxS3 + iJcku694TRIJ/wdUqcU52SUQ/gkpvJxRalWPyrUJQlp2QaIiiYOVBD8kxvywlpNrM9LijQlahYNl + WYZVKOWAIh9s0wm22YFmcPQvNek6ewo66ws6OwvqZTxEf3FTJeI3bixB1jgrm2Q91opKmJSSu3IM + Bri2i8th65ZymEdzmJwcReuhp5NeSGKTjhNz7sZxcFNgz27yHNme3fhNniy7/OyQX2XZrF7zQ79R + iybMj07LYKijZGttcYJKq1FnlNRvyDFn6PR5NSWNcLlOvhTT1rRlQ2VWVWm2SqHGN2SU2g1b+i2b + dzfmxOfZ8jY0liQtVPZuzFTr4xMKcoQkXZyOT0w3JGQlaRT6tMREo05ekp9RaIg3KPTGREOyXqVJ + TuBTSpuKMyuLs1XytCIbxFgcXF1OsR8ls6Rx3Sz5SFMSXI48bXnBwlqOiVPloOaW1amy+73MFc7G + Tun5JrVRnCu/18Sp8X0X7keyhNzKwg3VebomTVz4PHv/Ayfz8uzSQ1B2hSEnPTnbmKxjuuRgDzmn + UYY/mM1khmHdKGdn2NsVObBuJMHEuQNaCtlbmAcU6dCSLLbkA08n4UkVW+LYW9gpRRK0GHELikPj + 6Hr5++S9iEMGlIp/oQ+VoxrUiLaiPrQT7UUTyIf2o0PoZ03e/knPkKd2dr5hvtgfMoeEfc4Cp6qz + m+9GTW3ytjhrVVKVZz7k7G6rqmrrdobmPVzmdbuMmdsCM70zLTcf7DhYeYO32pt+/Z7sPQkDIykj + bP0W5RbNBoveMnPQu2dki8WyZWSP9+AMZxofyzOh8ufLn4+nXyWiz7E/X3n1A4N7JLybHjiD5Odt + rLJVFomfieJnqvgpnefW1dd/rj/PpaytF66TL40n+6m1qsp6Nz68Y6uwVRTgUrimEl4P2yoqbOwA + Pl5Mxw3srRHei49YqyorC5iKqqoK5ll8MrwLH9/B3HfjkuzeShygFbbwz222ilegwhyDwgiWdgAO + zFOV5RsvdkLpHqu1ihVEpjAHhd/ibr+oslZZoIB/i449y/5N8VtWqXoM4Z3OLPsj9ruK16D+BPk2 + wyz7ArtD8RrKQJYTCv1J5mtNuiS1GiXpHlIo4uWPGE+xYRTPrqz+jteZqAdW8yOP/MTTm/Piz3mx + OxL1F97Sxsdr3yqqqykRjMxhQ4LintLcu/OKTcXhF/QGnZ79XnpGHkV0Vp5HEC0QRPXsabZX8WfU + ilq+UfpFG/+FhAT8PxglpXba8N5Xb0jstCXYElJrH9ycrjCdZMNfT/2K4iSGGPVTVaWl4nWDdEve + IluzMYj81ZQ8Y6qM+u6anO0t3T6xWWisseh0cWqZllfnVXVY6hsquka6KszdjtqMhqoi2BbKYf+r + yrHU52WbUtUV23Zuq5Cd2rJ7c46Sj9Oo45KFDFNmkjGpLDevtNBUN9xcN1yXqdInaJR8fBpcCMQl + xulT0vi80vyC6kGwQjb46S5ihWcRXk1Fv6ECmNVNTamFOr0+xcRrtbKC9KJC07d1RTk8r8zB/xNT + IlJi5W2RHQGDf6nY+HwlGIMc8INCKaKSkd9MxY/SipkuVWYrYt9UKIo25hWnqmTWcLhMpk4y5VSY + lIo/ybWpxfkmS7pW8dMHB2SJfKoyWY3vbfzLh/HPXWmTFKk69gSv51i4QtaFey7iX0sVYwxykoBK + UPdjyQlZpm8xLyENMjIvP5aQoMk9ybzSFIc0yVmnDhfeWcgWFnKZp/TYlaZTnOhK+pR0HX2arvwP + 5IcISdTh36eXYo2GH5eSUgRrF47G6kSpwH63eoN5qvMFY16e8fRdH60uaxz4Y3VjaVWdrbilp66n + rkX2dOOurKz09Gz2C1npY+6Ng6nxe/5mNj1iC79cZXumhMwNEpmoFDygzkOCXpWbm6LEmiAUx7z0 + ZEouZ5Bpi9Ix8ESZlgC32Rpt5EHMP2Dc2BN1CavfLoiXkV9LKpJFzZfV701gbeR5BbUbTc9wRbbK + DYpvmqqrC4uEm7JLs1PUn/yMOjmjIC1UnMe+YYiPN7D8xT8n8AYDa7j4Fqk/lpevTSkwhgeYh9Py + U7X5eXg2iXGFUpBwAilOMi8/EaeV8+cS8bxW0XlNfu7sTOTnziiw/MjTMuxdiXFPFtXVFn8jAV5s + WVyi4u6ygotfJmPuLCizCgLEawVjZhvloxCN+cj4NEqTtSKDrAXlwqdCtok49Ep7PqX06GxjTrNr + 6zZHQ1p2s6tzu2NT2sf12WXZjTZ8bLGy39uHL3Xc9+4SP507b2pJ/9CdI/6WjI+ApkNMI5spH0DZ + yHiCT30KBteiDBheRoavbLSteQwI//2HTIKaavJEKV7t2UyNPnyzTmfQHrkjMUGjO6bNK9iQHNDq + mFkhLU3IN7KqAR42zVmacZVSq7k4k44t3Mbks2bQvAWZTjRlnJS1Ppafryj5DoxcBxiSiQE2ShEd + /ZBzkckUnZNM+dITlWuvVOh/uUDiPDklhTWX9bo3F2yxCrAF16i5jJKqnK3d/btrIdtq6tt7Khty + bEVZKo1GbeALKhpLJv07tu12sOmbd20R+PhEpcqYm5ZjSDA019Y3GoWs1NZac0MihF9udrZWnRiv + 3WPfPpkk17hwDipiqtgueQ/snQtR3gkIcFnrN7Lz0mG2pp8C1Ths2EjWIetxfrL4LZpc8Zl9+nUg + Yl0Zvu7oSm3JNRVnhX+t5NUKnfZHSkP6BmHLhhYt/xv21V+z8Q138Ho9f4fckGUsq0th7tAlaORJ + ieGSDOaZ8PUYUy16gi2TuVfjzAJx1ghxZgEzN11bnJVlbbG3bt1TZ8zabG/burcu9ag+c0PWZis+ + NpWx8QO3XF9uvf5Qn/g5sm1fbcr0zV34CP4eRWdYXuZAWSj96zo+5SkYPR1pYXw5GR8C7fnVn3EV + I219oPFaPvxRHa/XHjhcoOHv1OTmFSdNafn/yEpOycxKZk61J21OM6quU8JV9sVzKTjKtqFH2AzQ + uwmVnticf1JmeTwjQ2EpeRrGrQEEyfAZBxbYDBkITGB7r6FGMYqhllG6zVWfX1+Wo1QpNSou3VSR + 3dbZPVqlNRjUtS3brPVZFaYMTq1R61N3dY95ejtG9zCHbX0bMzSGOAWXlJmUqTPoasorq5My0hLr + rIU2WPTisozpakPujh2No/Fy9TC+bkRPsTWyvWKUZReAbt+Q5aVrtTjKGiHKmt51lNWkNOYUmjLD + b4L9FFrts0p9WlHOpuJGDf8S87OfM7OVIY1WqwnJ4ULcZE1itvMGtSw+LuwzMofCn8DWRistinSI + MB3SfwuxsmakkxUgHFnJG3OpfWARlf9ngl6tLdjlDjR851W4os/lkkvzkxGz8iXFV+VxShvikeoE + r0DkAUTcS4oI2ZuGuJy//cwQF2dQ2rJMbaVp6fi3bFdOcQ+zHaoKWEFVJ7BhIGPJcpNzO9ijF0Oq + ittg1fkMJWb7FemNayX2yHsnWfu7JzmKoj3/JTpzJVI0raEPiPTapaS0Kb+2jl5aR/8eTVxGFH2M + W14l1bYr0OcxqXNF+koU/Y6Spv7v0pOXkvZzVyK+9bL0K0q6L//zSf+IRIaudfTpS+gH6ylOu4Y+ + Fk3xsivQ5zEl5In0l1VKfJtS0kcidGw9JeuTvwP03HpKuSOV/bt05xVpxTgJ9MO0CqA30t5ILye0 + C+jr6X/LcAGdzLRk3pF5HlPWjv8rNJ31iRjF6B9Ar0dTdlUUzWcf+wfQyfdKOdw/hIZzjuccF5qE + z0XRUm430B/z+qPoM3mv5r2a/9H8v6xSQVvBZ4AeLNRE0Wjhpwo/ZWo2PbhKRVuLXit6rfjtksej + 6KmSRaAXSs5djjbkb3ABvV06clm6v/S10tfMHzT/Por+Yr5ovlimLDPE6P8fsuT+XSqxVIgUWEM3 + R9HblosxilGMYhSjGP3PpvL3AT19ObLmrqHhGMUoRjGKUYxiFKMYxShGMYpRjGIUoxjFSKR7rS9a + X6xorPjQNdNzlQqgQOW319FLhN6JUYxiFKMYxShGMYpRjGIUoxjFKEbXTjZVjGL0P5cQfpWxeQh/ + cxt/9TyOtMjId/H1pCYj30hXyX8mlmXIIn9ULMuRUb4olhVQ/pVYVkL5P8Qyh2YUerGsQhsUd4ll + NRK4e8Wyhr0vMpYWjXDfEMs82qDixbJOr1RVi2U92gY8DMGKGFVKg1hmEJfaJpZZJDd+USzLUKrx + brEsR7zxs2JZAeWHxLISyk+KZQ5tMp4WyyqUnNIqltUozhgWyxqmPzKWFpWm6cUyj5LT6sSyjpOl + 9YplPSoEHhli8O9FsQmK28QytTMtUzvTMrUzLVM70zK1My1TO9MytTMtUzvTMrUzLVM70zK1My1T + O9OyTm8UdohlaucvIwFVIiuqQLVQ6kFu5EAB5ENBeI+jELS1QimA/ORohxY3lLzIAmeakQdIQAPQ + NoEm4VyQ1Fzw6QLuGTg6gVOHOqE0Bi0utB84+kCaC2QMoTlSElA3SJ4DudNkRA+UJggSAd4+4JmD + vtIYQgSzFdmgZIrUapCZjG8HCX7gFWBcO4yDZTjQjSLvNqhNQis+Ow34ghF9hqDdTXTwXBHPOLGD + gFqgPgZncKudWGGtjlSOT9RUIKNMw1kH0Vey7n7oGyAt08DlJFYToH2StPWgLsCEreMm/bzErptI + fxfhcKEpGBNb2UmOgohI4hVIe5D41A1YJO+t6oHPhwCFG3oGwQqtRBs30cQd0cMO7ynoQRFSfexk + DEH0tRskYql24MOy5qC2H0oh4ocg6DcGZQ/BFCC2wPq64TghWopKDRGd6JheopGDIPWSUYLET13E + K+PQguNxmlgwSOS6RF+4iU7UFkESFUGQahfjFXvML7ZLo0yBHA+xj19E6YWWKTIqlRkkllpFgEf0 + E13o3JBsS7F7SNTgSJgUIxejmgJeO4wfIjUv8bUU19RmdBTqR6+ol4/YdoxwriKO1ghbbZb0o1rf + CHULmbvR3iwi0qaIhDlih2lxlkbbW4o+rxjJWH/qlwCJBilGXcTXOHL9EW0oxgmRJwi1m0XpIdCC + emgm4iU7iRE8A6bW6CVlHgcgsZPxHeL4lstkqPpL9MSz0wd1JxoRo0aK+mqQUAlZYy1/WYT/ytEf + IjicJDoxphsjflmdrZfmzgkx1v0RbhzNNAq8wO8i8fR/JgdrYln4v00W7gYkDlRMZl6JeF5AW0lU + +AiyEBDOYfWoHMhJbIt7Tl0SPRYx5sqhPEdiaIJEEfbNHLTaATu1sSSVyvQQDBjBOEFLcx+VdbkY + DZI49xPdqRWkftiro2QMmn3miKWpZUIRb0vcUq5wiPkcz3wzsQHm84tREZ27/cSuXjFnUCkusW4X + 87SLZBk30ZCiGyM4JC+v91hI7EHjJ3BJy3hEB/M1ZQK6UjiJTUPiikTnJx3XHBlnvQY0s+4ndnKQ + +XQ5m+0XNXWTmeYhc4rO/Ettj/vQ1aYY+EvWRPDlpVMM79W20fODrviCuGaHiOcca9bO9RqsrpTr + cW2KigGsCdWF7iCkXBmI7EacZD32kjxiv6KmNPbsa6KK5gOfeKRa0fI0mS80PznJ2uYWcwuVgzk9 + JPtfOUZpFveKnlmVLs0Qd9ROY5LkO7doZ5zVdSRfukQdpF2HZOW1UW0mnrGTshNJe671eW79TChe + lxdcJE/vJ7sMN/E+9qod2rCFJoBDOlcuyty7LneWiLN3NVus7hAkNO9mdbrG1UDIXCejW5IhZEWi + +QZoo36SoobuWDziKrIa3Vdb4aSovPIqhz3XH5k5wag9CvU3jQKXOBbN2F7R72aic0BcfaR9Bd0r + TYh+luKYxpVf3AfREXxkL24nekqRYkerq/z6fPZP8EXEQnaiO7abW8z1TnGuOsT9t5dgjV4z3WSH + HiSxKWK8sm+hPLh2nQdvl0TZyBl11RA9H65ZHlq90pG4L5/dzOuym2T79b095ErBvU5vCdfqHmx1 + 1qyuRJIPzUi6YsNXZlLdFRUhfnJN5iHxNhm1wlLUYwSLS1yppiO+jM4l1IfloseDZJZ4Ihikeb02 + lq7dqtErPNUyeqVZG9OrlthP7Dj1Hv0orQbT5IqTWsYVhcBJjnjMVbvcAByOqLUjdJV8TDO/k2gg + rXj1a7I43Y3NkPLldt1eskZIq0z0NZu0Tlwup6ztFSS5gvpqTNT78muu/QoeDUS0D5Io9RLpdBZd + ejX8XiNAWt86UTs524c6oLYTVssB0tIFbQJk0QE4MwK1Nmhtg5Yi4BgUzxcRT+0k61An8A2TNY7K + GIBjL9RHSY7rQAKp49p24O8FWbhvO7qOjNEO0gYJ5wCR3QOt3fDZLvLhHq3QMgx1XN5KsiAdrxd6 + 0WuILnFNpEiHoF2IaLgWVRcZUULWA7UBkN8pnm0G2V1EHsaPx+8g5d4Izg4RaTOxEZaMZbYCom5S + w63D8NkPfINk/GaiM0XbS3TogPNUl3aCAI9sEXWlfNg+I+IZ7COMrxtoVatmYoNOgmbVfq3w2Q/I + sfytcHaIrBB90LONaDpIrNcu2gxr201qq1pRT7USbbBVsQ3aoNwD760R2w2QI8UyECVtre12kvOr + XFS/ZvHYSizXR2rUG62kNkR8hc+aRV8OED3Wj7qTRGI74WomGg9GIqSDRC9FL0UnHaMvCgkdD/s2 + GosU1cJV5giVIp0fFj19qV2w1ZuJTTCuwcjIV5IMc/PLQqW1olbocTsCvqBvPCS0+gJ+X8Aecvu8 + FqHZ4xEG3BOToaAw4Aq6AjMup0XX6RoLuPYLfX6Xd2jO7xK67XO+6ZDg8U24HYLD558L4B4Clmy1 + CSb8UWMWBuwe/6TQafc6fI4boXWbb9IrdE47g3icoUl3UPBEyxn3BYQW95jH7bB7BHFE4PHBoELQ + Nx1wuAQMd7894BKmvU5XQAhNuoSeriGh2+1weYOuTULQ5RJcU2Mup9PlFDy0VXC6go6A24/VI2M4 + XSG72xO0tNo97rGAG49hF6Z8IBDGsXuDICXgHhfG7VNuz5yw3x2aFILTYyGPSwj4YFy3dwJAAWvI + NQU9vU4wQMDrCgQtQldIGHfZQ9MBV1AIuEALdwjGcATNQnDKDnZ12P1Qxl2mpj0htx9EeqenXAHg + DLpCREBQ8Ad84A2MFqR7PL79wiQYV3BP+e2OkOD2CiFsa0AGXUBHL4zlGxfG3BNEMB0o5JoNQWf3 + jS6LIKpZFBSm7N45wTENLqW4sfm8YOSAHXQJuIPYoi77lDDtx8OAxAloCbpvBvaQDxSawSrZBXDA + FB0LB49j0h4AYK6AJRJQ9dKYQovP4xwB02DTV1sqbWJ7GW5fY/5QwO50TdkDN2JdiFsj0TkBVvfj + ZocPTOB1u4KW7mlHsT1YAp4UtgZ8vtBkKOQP1peXO32OoGVK6mmBDuWhOb9vImD3T86V28cg1jAr + cHqmHfbguM8LRgeu1cGC036/xw3Bg89ZhFHfNFhtTpiGMArhgMXN2BgOcG/IZRac7qAfgpg61R9w + w1kHsLjg0w6udAWm3KEQiBubI1pJIQnmgtjxBaTCOB7BfKnuEAvOaUfIjENyBvqacR9pAPDR/km3 + YzIK2X4Y1O11eKYh/lfR+7wQLcXuEjo1othBwtXQ0pkE8Q6+D4YCbgcNSmkAEouSrE3EAsVuGAXm + BU4nATx7nL79Xo/P7lxrPTs1FUQXqAPuw4XpkB8ygdOF1cQ8ky6Pf61FITdB/FJ27BA3mSuT7jF3 + COco3RBAHvfhGYMhi6Y2C2P2IGD1eSPZQnJCsRgLLq9lv/tGt9/ldNstvsBEOa6VA+deMa+UgHtJ + WJB5gMVcPhFeLoG9KHJ0Y46fYDPf4AOdsGlgPnkguRFzr02V2JRrkqVO14+dEyQTCfQGE7igFwQ2 + WMZpFsYDkPjwFIHJOAE6YxuDrcCj0F3wjUHC82Kj2EmyluLs2rXAgOzBoM/htuP4gHkGacsbstOc + 6vaAZYqxxDXaCoNitv5JCUHkJBmR+uGyfCTX4uaocDOL4YbRS6c9bohTOjaWFaCrFYxAJhHW0Izz + uXscf7qIQfzToFBwkkxYED02jSdvEDeKUQIaloPiQRdO0z6/m2bVK0KlEx6GpJNGtDQBsX/SN3UV + HfE0mA54AYyLCHD6II8SLDe4HCEpwFbjGILf6SYTr56GOKSxGVfUouv1hfCUoQndLU5jGiniqeAk + XhPGXGtmrj1K0QAePhiCYHKDiyKrz9UMgOdbZ7sw2NcxtLN5oF3oGhT6B/pGutra24Si5kGoF5mF + nV1DnX3DQwJwDDT3Do0KfR1Cc++osL2rt80stF/XP9A+OCj0DQhdPf3dXe3Q1tXb2j3c1tW7VWiB + fr19sLZ3wUwEoUN9Ah5QFNXVPoiF9bQPtHZCtbmlq7traNQsdHQN9WKZHSC0WehvHhjqah3ubh4Q + +ocH+vsG22H4NhDb29XbMQCjtPe09w7BstsLbUL7CFSEwc7m7m4yVPMwoB8g+Fr7+kcHurZ2Dgmd + fd1t7dDY0g7Imlu62+lQoFRrd3NXj1loa+5p3tpOevWBlAHCJqLb2dlOmmC8ZvjXOtTV14vVaO3r + HRqAqhm0HBiKdN3ZNdhuFpoHugaxQToG+kA8Nif06CNCoF9vO5WCTS2s8Qiw4PrwYPsqlrb25m6Q + NYg7RzNbdLFbA7FbA+/CtrFbA/+8WwMa8o7dHvjveXuAei92iyB2iyB2iyB2i2B9No/dJlh7m0Cy + TuxWQexWQexWwf9ztwpgbtLvICC0YkS3o8u9WPFJfcQUw+dx8sT/1V5yeR7PM8DDLFwrv06H+dnr + rpXfYCD8S9fKHxeH+WUfvFb++HjMLxeulT8xEfjlsr8i/M0FOeGXw1sgx3gwswmlg3uK0B7UAOm5 + i2HRCGNAdiYdeZlsdIDpR7czu9HHGR+6n5lBjzDvR99kPoTOMEfRj5k70cvMJ9HrzBPoLWYRhWXb + GLVsJ5Miu47Jld3MFMuOMRbZG0y17A9Mq+xPTL9sidkte4e5QfZXJgTQD67FxRy5Rlw+wPV+wPVB + wHUP4HoAcJ0AXN8GXM8Crp8CrlcA1+8A1zvMIsMCLh3gygBcJsBVBrhsgGsT4OoEXMOAawxw+QDX + HOC4dS0umSIKVyrgKgRcNsC1DXBdB7jGAVcAcN0CuO4EXP8KuB4CXKcA1w8A178BrlcB1xLgWmY+ + yaiYJ5gUwJUHuCyAazPg6gJc/YBrBHDtBVxTgOsA4PoQ4DoGuO4HXA+txUW+dSPhSgNcxYCrBnD1 + A669gMsLuG4GXB8GXJ8EXA8CricA1xnA9VPAdR5wvQG4/sbcyXCAKxFw5QKuMsBVB7i6ANcw4NoF + uByAywO4DgCuDwOuTwCuLwGux8lcWoNL6Y/ClQG4SgHXJsA1ArjGAdcM4LoVcN0NuL4AuL4OuL4L + uF4EXL8GXKA1usgcZXSAKx1wFQGuasDVCrj6AZcdcE0BrhDgOgC4bgNcdwOuzwOuxwHXGcD1I8D1 + 8lpcqu4oXFmAqx5wbQdck4BrDnB9GHAdB1xfAVzfBlzPAa7XAdcFZobRMO9njMyHGBPgqgFc7YBr + EHA5ANdNgOsQ4PoY4PoM4PoC4HoEcJ0EXD8AXL8EXL8HXMuyv7IqyA1JOG+puBUVZzQ2FIwfHB9X + KaF+4exZ+Hf2gkqBVMoLCwvwb2FBpUYqzTOHfw30zuF/O/y/Dv8AiHD4v7+wNGs87sd9lctW+lIq + kFK5ZJw9d26WMC0sLJ2D1xKpGHE7nCFM/nMgfxY6K5Xz5875F2bPLalZpJYtLKAF8lKxSCVbEF9U + Lu59TuwNL78q0roELDKklJ+n3HKkVPgXzvut5zn5Cifft7QPXhTcuVUIIAHkqFhGJSfdYGAli5QY + AhRZFrFQZJRoRbkskzEqxX333Uc1JzLOUc2t/kex4sv0zHGj3yjZpLb2uuuOLxuNCqxW00JTU5NC + htTyBaFJWFBxSKWqrfV4POHFRZWSibY+E219RqV9T9ZXK5GaAwlY5tkLpMbz/DyuzSvB6Nzs2eWF + hfmr2F+sSQ7AfYiws2J3eBH30dYLotWX1jtAJUcqxT7JA5j/LAWx6gE1y6ipByQXyC/nAgVSY++R + WCXDUwAqLuICcuYoP8vzR+mZiAtkSCPbdx4gKORIIz9v3Wc9r1YjtToTZaJqIAfQIfTM4WcOq5WM + WkU8QQ3HqLnlBdEdai2j1p2H15vnf7zvJaDn9v0QSK0AJnDIeX8teITYWvKIlVMiDmMCy89rlIxG + Jfnk7AVSlZxydp5TMpwK9FpeODMLpzhu/hzxC2ipYRmNPOKYBbEqvUhHKvOsJATbRrPajtFzcoYT + 3UPKSuIfsAPYFRx0ATtoXy0RcFZExAH2RY8HwnQRj6lYiDiJYxmOOIl4iWGhzHBohQvLFYyGw7OD + mEF001kajqKfrMv03FGeeorUjFGu0solV2kVxFUaDdJoeJQNZAOyHz4ERCzBMRr1Mkwh/A4vY4ty + y+CuC8RdGp7R6M/7l+D1i0cxvWB9wboIRCw/u3xm4cI8f3R5VqNCGtXKilF8UXsug1+W57Uco1Vj + WS/DAIvhl0ldCa8ZUp+h9l4Gpy3PAxhOdRBruzC/uDi/zmlaltFGOW2BA241kbq4SMrzRCKRohZH + w2wK8NS5C1FeW1rYZ10iXlOC17DbZmuJACIKIEV5DQ8qee0KboMVYQWUB79pid80HBhjnuLCcLCp + rEtL1HHL4tnblfMHlbdjsFDNbGjweM6GwzzPyRBPfbdvHydHPHgP3Gc9r1UjrUaaatVkqtHJ9sxh + rYrRaqgHT58+HV7WKhmtCrtwgRwWtDpGazhfe752aXaJrB7PH3/++AvHnzU+aySs2IvnZzOxG7Uq + pI1yoxGnVTh/FObXsofnGH7VkWBb0hDxJNhNxTEq7ITwwnfD2O8q1cHw2eXZheWDYAbRe5IzF3iW + 4aO9uUB6vxz+d2I2SRSxoJaeWZQ8ShL8uQt0pcIVbvYCzuUXljQKpJF8Ck4lUkQ/zJAFA3sVu5Vn + WV4ZGVr0qyLKr4pov/LEryRyJb9iWEpWq5YcC54Vz4NnYX0A12LHqPXZ1dXj44srK0olLKQ6uTiD + OQXS0bXuuJ/XIp7XIz3stDBVHK44fGjh0MK+Bfi3j9cwvHYFrRymzo4qQZl4IByOuHqB1zN8PP5v + CJcalhrOec55cOp49uizR0/zp3nC3XDwu+DtBr3y9uVZXoV4dZS7jWqOURMNDmKD6VSMTkMd/jpE + 1uvhl0mLDF6bDpGWQ5vUKkataTj4+umVhVcPbeHxgtAIkTkOdBB2/fvguIJOw3seYYcrogJgQccy + usjUIi8i7Vcrvz5NXhHZMNLBBh7XIkgwM14zpChYIIsOhDJEMg5kPBelOIBAIKKo1GdXDhA1Fxc9 + 87XznsVFHcvqVkMB48P7GRoLUcGgRitqsPlhhYLRqcjuBRDxIr4IRF5jnL1wnFpzZQVbXIPtKYUE + 4dBnp0ghATGB9IpITDB6KSairgvxdTHr9HgnxLIlSMsjuNwcsI+ZhebAlNcstM4FPGZhq8t3IzkG + 4BhwQRk/hWEWuu0h77vjJhgYggPeWZ+FzyQKKeuY9UjWx5XqDbd33v6OjuHY+45k3QZNh1mGqdBa + 1UpFqV7GpiuQ1a7UlCoZOXOkhmXk9w1ad1jNUS2Zn8s+nAlhgqmP/L3QR/6Cj/++vAWTNTdKmDxp + Nnw0sHvim+/7vP3cB17cs+vNP2oLv3XfEeOw9Yj8tPWI7KH7ZOAsNtEGEE8aG770c9mB9x8hgE9a + dRG0jAJw7ScwZcNyZSI7PFiRaI3HFVWiZqc9OOn2ToR83oo4qx43concgMs55fM6K7KtmbhFk5h8 + 2ccfK3KtOfi8LNG4en7IPeUqGwzZp/xCf2uzNTtVV1FtrbPWVNRsrK3aeD1Ua6Oq1lse+6cg01m1 + +Lw2Ud7T1z9QUWQtpNVsb6vbjx+JahtsF9oHe+tr2irby2w1tZVlLdaOmopCaz7VKPOyGg3SB8us + R5i8aAszCiQ7Apdi0K5hjzAM+vTnFn/U95Nv/fDRB+Q9v1V94YmbX/7EF1/8xJOuP52+dfRjJf/6 + 9szDe6c/NVxxpn3ijaf2PfnOifyCe4uNlT+p5HZ94JlPj/7Lpm81vP6C8qLm8UOntp8dfSX5puaz + VteIYuvx7IWP/+XO33/O/JuKDfvb/pz681fSL37p/p2/HP3DXa8mv/jFb9qblw7cdzD7lzVfO/W1 + uU6uxzhqq0+44VMZn0y5Z/PD/h986YE3m+u/9vRzn/3fxVx5OJTrGzZj7EQGyZJlxNjGN2NP9j37 + EiLZtzSIyZ4Ye5Ilu8TImrLmULZsWStJ0kqWZIssIcpvhpLT6Sy/P851zHWZ6/ne+d73nfe9n/t+ + nu97vsnKTSdZFgzo4cjHWfBMmztSYx44gUVCL9YwJzgLG95b35A9Bp3Kbx006RuiMT+FNvA3UT75 + bjTI3FjjTr+90s3hSnf6etEcrOggIEEjzxCoCgqcvy122xmL3VqqDp1lXT8PJsb70XUsiAK/IiQA + O35J2fdBmCAMCU3+4SPqGQkPpumtZfliqS4idbHbGGKHQZgBpmAGmNjac0M1D8o5hQ3vjSrB8lbx + KlrAmPABDogOoAVo5qjnqEYof6tFs/M881MBo4erC+GoyLdSQC+R3W0k7OL2JuJRicB/BDAjJcc7 + JgkJGQgE0QaOARrfbQAccfTbAD4+Pr8awMHzL3rGAFDCfA9DqPFR47cuicl/ckhiAkpgdjhEKg+u + y+Eub9Jwvy1RUhHGLO60yivHrBHt2yLpzi9igfzKAwIrMZ7jHiO+9xUmSyf7aSMd4by979xgzL62 + MoGkhavJqIbclqeoQPRzu5709mqi0najZdU1ndJsZeuXEugC0KzhoWUxySCJ1SPTEOtIGANFII/q + Vmo8zYm26uyBWP4ionMiXwp4M8OeImoO+7Y3qt8haY72PpEWOCT8rLBkPI89WuvZJ8RQoD8te9Ym + Jy6nchjIbkBLFdrXa00rbYy/XF4IDEnhdyog6pU5D1949AHT8YpbHlR1RAjIljp7VE7xUDOW0+KR + 7fiVc4igXmtNOKcX3IXnAnUqORwRAmBJQXgam9pDY21T0Wv+IfpTW9s01rZ31ajwNBb0r5AFHODd + cXqOve32DpxGLk7bhYD4jSVUgSO32UwSkEIiUQD+JbbDZj9MAPOvzO9bO/GftP8tG0VdrOVpJYvL + CPZj3OS13vSMEvq8fD01KkWt5nqPVbTIEVHEoQTfz4HFHFhQtX8PSz1xt9pMe/rqBoR9MZxyi9sN + t+gk287HPAHnWIEkKdrNjt1lvDQHzRB/I+Vh7C4ze0uVAtBsbowD0ql7vLtWvZKZfB7H1CV1kIdz + zh0qEv94tmUEQ6R1sf9Vwsyg79fYz7eso2Qb7nCU2qY2tYdVxJcOlgk+Md4Qf/HgbOK7Q1uzZ117 + LpB7Y0boDDQGPhJ1amhfJxOfOEHzJfBq5zvzsfCVwQxajssF42EHmge7s9lBHV80CqGJoqlcGqi1 + Fp5cospGo+5QN36LkHkpt+Clulko1cx3NgrGr0jgDt0cJtDNrjJrk4N2PZV4D131DNqGPbKWnt5y + ajnZ31lXUtMKTQMMCc37IXguylMHVH9WGjEARTBJoIIoUQBAogTtpAAxW3EHG2ExaVsxYTGUqJSw + lKgEStheShzpaINCiYs52v2OAjXc7Cf0SZ5gbxyQlOSuRhd1nwMn/zkF/pKh3D28tlkQDxc8jvEo + xgOYgF8rwj9hQFIYkNqmQJs9FHgcwEcreyhQ9W8H+M6CfzEEBqAmTBwKAm1BwADRT+5MjAWDiEiZ + OF6atuh3wvRyDXyfza19edDw9N7HdVaTOaNOF3WSp209s6Ob6RbJVvul4PdIVKEjGX5R9Y4lL+tm + wMdhNbIwX0V06dpHIvOk9ItsvRTJfRlsKkBxPlPHXXWLFUGxmOw4M8lWXbYy7m66B0NYumLxhVLu + zjiegpCYYT62cUf2aDnElimxTrNbaA5q5naViL6JJWkF46VOdrsaL+qxQX9eWoEU1UJUqFyKnKmm + Dyz6awVdx8UJckaDdkFzpIX06ZSivCjXFLj7x7bS6QbVA722uiHVxizql9Py0ffc+O6v8XF0znEW + U1V8fEiVkTR6OsslFCfxDM35NfzpVmttqgTFV1mG5jSG4nsRvfPY5pLjPMrM1RrhvhF96/1Z8gef + M0RPxmY780Q5yxR3BOvyTpJzadt9uXqFUUe02sRa79mxO1KXtxCvK6zylF27fB9V1LnGhZ6J9Lwx + nb+R/ZplUHrTvgstRz4RGFpxq/763YBHKSZ5/mY99Oq2/Vzzm0fbkFSrInL2+ZLu1vryNSrxejlU + MY1BZp86nCJtXl5La+u81OOu/vYeImmu4lM5gJ49rVk0leLd2UDe9lVmpdRLkrTS5NHBgbqVpO5I + tsXg0yC931hDvKqeWHDLHzFjHo764NSmWSjy6nCM7Km+WTGVBPb6BGpvrNx825AwDgK+rLE+/xr8 + iDgXLwJkeBGY3xEBShsmZ7Ft7mf7OYS12qZTSopE3ugri0L2oINMxHg0Ig8CB353kGIXrHgYCu7w + Js8P3jR0d8eTJx66Lo4udjYYB07Fcxhnd08XjB+B3AFJQAwQRaLERQFpPLmjkNumKEAw/7sY+u/4 + PRt3pmL4pUaiQKAr4uDbhtGx9nQDmP6th6+ZdXloPzwufKx9CwNw7p8he2qczKiZxKqUWJp2EuB9 + QeT6PqBhNpqMdnUfJG0hupejR5QnMmtx2YlNaDNgMop9elL3Oq4ZZtQd+1n1EUXfqbK+ciVI7nrB + mStOz+Cv1IzKI/om4GoIvpsRescNqceJhTZOx8cDbpFLJ4Csz0GDqVXvuVKD1vqhS+Q1RmjD26rx + 2RpEx9Qd9/PxOxaljj8hDTmWux5WuF+dgQKbHTZ33PcrKINdnzyciA5Qm6t5A1OraxM2zi475KuI + 9OnNHJYJvYKzAVez01RsrmZWgh5yaxlvrZO0tnBSfef3EvyKFAK0u4xDAhDj3/bw+S+jSwJ9s9NC + IHj8RQB0pBTfNIERRDhCBISk7XBzSDwQEhvMsO8m1lrBhC914jB0U+AtpVHyifE8nF2ezb8OTyyd + 3y0m3LGc/FvaXmbLZFCEA6C/IwqaAF6HcpRzFCPk/3lcvNtMeCKIQOXbgmC8RxA0ADVAZY8gSP0/ + MTHheyjv9PoP42H8WtOlXmw9Sawi8Xrq9i2flw/9DHRAFQjMWQs0NbTkYWNAXC1igD73Etq21hTc + o8sJ1U9/7a8walpXZpbB9pYdFHGzzncxpm9WBvRhtDGOkqQzVmN0wYjxtV5J4vhk7Omnwc3vkhZJ + RcKJpxIEeLg9Nj5tjvumI2hWyUY96pl1sy67Unom1+KkrzoJtxvsm7Y9Kc+UFsMpP0rGglrvRR7z + RsoKelJ1TnvIboVTQodbKG0uLzyrPTCjG3OhXVzw1PWmmfrzVEoBA0aeXB+A7jpfh5MWoAOUDPv6 + XzCkrRy942hWJSwyuR4e0Wtg8j7LI+nMTWntgU9+TTeY/W3553Mz+cVIfVhsu2QPoTmwC1QdQnWP + lKsm1mfPV4/lFWHEa3Xbz8Loeb2pjhpeOmuupsxQX1VVruPUma20FezHFXyNEXB8r0R/iqXzGjdX + n/KU4FTdskav0MAQKlibV0CDx8p82mS+4E16VvcR94YQPgzp/g/eXE2Z2GY+498qTstG47xtbrvh + oAVNN9QX6N2/XESdqfw6bNB5Cdbl2JDFHklvD5YVLjsRVzvONVFd3m1329eYZEARoX8zqTzft6Qq + J+Ucy/PESOg5bhFUEblbjsWlw00582HdXIMzh/S6Mj5ojqyCHNyjqc53unS+c5suTH2I5N/a125x + ckiHFTf0WeSaPOI4k2sX9PoXAEvmD2BJbL9Lwb74/m0pIP45DQiJ+leoGAUAOw7J/08c8kdGgMTL + hhQKEJfeEQ2JbRMJEMz/PGPBgv+oHWCCdoDx2oH3uZKFz550bIhbQ243sHQ6YncXfzPjylZiFXCd + Mte/UUsqxQLRvHuhlfrQa0nX+/RDVAtSLemk5Z3ST0EMSKUn0TR+9pFBSdY8Z8quaV6dcj7VP5xp + VEkp1Fr2vFiw1J+i7FnKiW5rFpIpR+/3KENeepHJEnL9R1UqNZZDbQjicyXOSz3opSMncUzLandH + pOxvutmL+xbk2NEKP1G4sjb2hozm6Um/fE3+SZrGHKhPY5Ls/MaYoDkdh44JPNffc4T+SI3mqaG5 + OeWE0OcBlQERrM/lKi5Zvo/WC2NZxImcGI+XES4VNWuvkfuKelJFLFtRWZYoFdSfFSy0omuSwCV+ + uFXazf6C0d2rtLcOwsJ6lu8SR8SuWi30GTZdSoqsv8eFOWzFDP+tlw8udThN+pjEo8CKxFI2WGGx + 46wNx+m3cM0sq6jRw5ZPuLTkDNuqTeV5iBce+1uIPIWNeVjSGqj5VK0Rva2/CcZavbzHWNXAOnBc + a1IaRzsF06xnrlUJVB1vbvX0H/Gc5BluUktvn29hM30ZGjurowkUllwenrXILtt8Xe442pwaEjA3 + OKc1qclfCIUXFJ53Cn530dbXqlIk7Jnp1ZNNPnD4xzl0KzxOKE5BUq/5bbhKdBuFdvtAvrIIJnnV + bc2X00wIammdnCGnJxr2ojzqwJtrussp5fVqOWfS+kcGoy7tauccXjunfiF/P8Tzl3nJwd0TGMAQ + 6kOUREbbhZDKRIq/19U/iPLejMdT+AgYGa98h4FE9+10YQfyMSxaDDDfETfCJVS9HJ0crQjN/+ui + D95v8V6Ld9bdpMQKELVCobZl7tQemTME9AHdPTKn9M9k7i/6xwAh2YTJc0JCUoGQJCAkYXeREMRA + SCgg/304MIhJ9O/SLMJTuvhv5oK28fSz8/BCOGPQgMJuB2BA7BCKk51Im8iByGm75tRqu+Z0p0bZ + D295fauedtitIUdwsv8qEXNajMhPGzH2Y0E8GcI4cWdSpex/a5eYrpRyvt+POr7ZwQohJLfW6vkY + Hfq1Uf49ZbdMk3rx9SWXl3ZN3OL5qZYOYfHnY9T0jw9RJwb2s2ixLR1VijHsK//iOiZHhuDPfCfL + mj9Qze6TJD06Zd+lIuvrD1uCni+Ix4TGLvfwgtUEWi7S1eUVk1Bnzjl/dkYk5wjIC7iaadpxULi4 + maeljIcu34tbUhN8synT1yA+73a4dKKMb67v9dK+snR4aprOPlmqRfLoQY5WFPPoQrvwQ4trtzWl + Ke9Ttty/VTpR+fwlY5SBqpkU6iwfy4WKZb61N0JHOF3SKk9EO7u5F9ZgWhVISAtAAnA5rDxUx5Hq + XpXOytu4C2zujOdVC70nFAQcrrdaGtpGtLLbSaRGDL9YWltkwmXwvX2Qn9r3wdJOccyC7GqkHKkP + 6WPSinMcDI02NtULr+6zQhqHFTv2wT+8cRCZTf2EO5kyRDSIU2s4sZSaT6GlQZcezNFHxN9ekZkv + r+pzSPx+f25utr8/92eNZI6SDXVY8Mq1tSbXGq3U0Zlzviyz05LpfsxaW4NVMOdz78o+b8bMUAVP + u8iUbQJzEO3Lw8Pn0HYJso+zTHT1moJNuXG++1Fc/vOKlBXyG0W9eZbNuKhM07Mmuhqq95S6Mr0t + KIM1XL/4ZTc3oNGnuwy9oDT++g+QWEg5gIXcBINAQEjyfy1cv74c+OPmSE5IG4F8voGYghhJvffO + C34WPywq5D5gbysjAPtxIgSJp7a0XkeXNFfVjVXe7A+lshe1VMBtUMB+zynUSBPAOEcgGP7LR9uM + //iLgzjeYJ4/9Wzj3afsOX/SZggWRMSUX5GNAV3wyxnr8LHNPp9P95Xhckcdf2dT3s2OSdEBp9k6 + FLVA651b3eSSbLAWuctJd+4J1VpqlOTuV2+XUs0XcY1hWWqsPMp2g/G4HDJ2oBhJ2iYaH2PjGwAj + 5ywOE0MSF3Ob1ka0V8fZRSbOWLx+Ea6yRGWcnOAjJHrnib48zuAKdqlR8FUj6pXevOdvXfNWfF4W + QqeKZ1XTF+eZjmorcpzz9RL/1H7leMD9966qdsZYyWkD7SMLIiZsFrNipyftz6wH8WMSeM095THX + i8c7UNjRUxLhkiuJazYXblbkNU46+Ty9e7x9Lc6+1ON5LyVrFIBTfnJbhp91PH2hx3q12OULDguG + 48MTnh97RIrEghnxh/ZvQ/Pyf5aI//pO2x5MWgLMeyFJ9eOOIQg/+G4LCZJ2+8KxBFIchST8mf8B + kbLHOQN0k2jS9vMGzCmUBLmovJIi+SllImCFsd/+fmVNnVjatSKffqduwHJEzSeo7+H5uvrAos4G + AAVCX9BDz8Te8KFBFTn1D7ovIRXsejzVBS4Xd3O1S3HEltG7JSiEvTO9qgxcMR2pNYpb0awW+tR7 + bF27QihDXdsv6rV6ZV7Xb4vL7dG8w0gqNxNpFaZmzOSaarmEocJ4wWc3lknPR6am4K4+I2aTm3kk + KrFHQKlmZxW8qHpfRETYMZZdos8K9Tc0bmVNGZWf8PP4qiK6kZk7D1Hp68k6+cqujnrMi0+QTUvB + 02LWgEvJpMfQvQGNGyJ9Cp8e2OiVa3QkzxGYHxUIMdPMzhyDZ2iKtYRjadyCZoFjccXgVeuxLKL/ + AfpFWhMNCmVuZHN0cmVhbQ0KZW5kb2JqDQoyNTMgMCBvYmoNCjw8L1R5cGUvTWV0YWRhdGEvU3Vi + dHlwZS9YTUwvTGVuZ3RoIDMwODQ+Pg0Kc3RyZWFtDQo8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9 + Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/Pjx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6 + bWV0YS8iIHg6eG1wdGs9IjMuMS03MDEiPgo8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cu + dzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgo8cmRmOkRlc2NyaXB0aW9uIHJkZjph + Ym91dD0iIiAgeG1sbnM6cGRmPSJodHRwOi8vbnMuYWRvYmUuY29tL3BkZi8xLjMvIj4KPHBkZjpQ + cm9kdWNlcj5NaWNyb3NvZnTCriBXb3JkIGZvciBPZmZpY2UgMzY1PC9wZGY6UHJvZHVjZXI+PC9y + ZGY6RGVzY3JpcHRpb24+CjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiICB4bWxuczpkYz0i + aHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iPgo8ZGM6Y3JlYXRvcj48cmRmOlNlcT48 + cmRmOmxpPktyaXN0YSBQcmF0aWNvPC9yZGY6bGk+PC9yZGY6U2VxPjwvZGM6Y3JlYXRvcj48L3Jk + ZjpEZXNjcmlwdGlvbj4KPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgIHhtbG5zOnhtcD0i + aHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyI+Cjx4bXA6Q3JlYXRvclRvb2w+TWljcm9zb2Z0 + wq4gV29yZCBmb3IgT2ZmaWNlIDM2NTwveG1wOkNyZWF0b3JUb29sPjx4bXA6Q3JlYXRlRGF0ZT4y + MDIwLTA0LTIyVDE2OjQ1OjI5LTA3OjAwPC94bXA6Q3JlYXRlRGF0ZT48eG1wOk1vZGlmeURhdGU+ + MjAyMC0wNC0yMlQxNjo0NToyOS0wNzowMDwveG1wOk1vZGlmeURhdGU+PC9yZGY6RGVzY3JpcHRp + b24+CjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiICB4bWxuczp4bXBNTT0iaHR0cDovL25z + LmFkb2JlLmNvbS94YXAvMS4wL21tLyI+Cjx4bXBNTTpEb2N1bWVudElEPnV1aWQ6NThCQjA4MDUt + RjY5Ri00NDBGLTgzOUItMURFMDI1NjUxREUyPC94bXBNTTpEb2N1bWVudElEPjx4bXBNTTpJbnN0 + YW5jZUlEPnV1aWQ6NThCQjA4MDUtRjY5Ri00NDBGLTgzOUItMURFMDI1NjUxREUyPC94bXBNTTpJ + bnN0YW5jZUlEPjwvcmRmOkRlc2NyaXB0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKPC9y + ZGY6UkRGPjwveDp4bXBtZXRhPjw/eHBhY2tldCBlbmQ9InciPz4NCmVuZHN0cmVhbQ0KZW5kb2Jq + DQoyNTQgMCBvYmoNCjw8L0Rpc3BsYXlEb2NUaXRsZSB0cnVlPj4NCmVuZG9iag0KMjU1IDAgb2Jq + DQo8PC9UeXBlL1hSZWYvU2l6ZSAyNTUvV1sgMSA0IDJdIC9Sb290IDEgMCBSL0luZm8gMTUgMCBS + L0lEWzwwNTA4QkI1ODlGRjYwRjQ0ODM5QjFERTAyNTY1MURFMj48MDUwOEJCNTg5RkY2MEY0NDgz + OUIxREUwMjU2NTFERTI+XSAvRmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0aCA1MDc+Pg0Kc3RyZWFt + DQp4nDXV93fPZxQH8E9sSojZGkG0tQmKGrVHFKU2tUeomrXTauy9YlMdKFV7U3vvHUWJvX7rv5B+ + 83nx3HOe17nn3Ht/fQdB5KWnR0X+mCDIYAv+C4lKD8mTFBJdJiRvASRgcki+SiExcSH5dQU7hhRK + DCk9JggyRU4XCZ7jBV7iFZ7h3eTryF5c8vsuO6KQCZmRBVmRDTmQE7nwAXIjD6LRCoVRCPmQF/kR + g4IogASUwIcogqL4CMVRDB+jJGJRGqVQBnGoiE/xCcqhLCqgPKqjMiqhKqqgGuJRB5+hBmqhJj5H + bTRCPdTFF6iPhmiAlmiCxmiGpmiB5vgSrdEGbfEV2qE9vkYHdEQndEYXdEU3dEcPfIOe6IXe6IO+ + 6If+eIMBGIhBSMRgDMG3GIrvMAzDMQIjMQqj8T3GYCzGYTwmYCImIQk/4EdMxk9IxhRMxTRMxwzM + xCzMxhzMxTzMx1ssxQIsxCIsxhKkYBmWYwVWYhVWYw3uYj1+x89Yi1+wDr/hV6RiCzZiAzbhD/yJ + zdiFrfgL27ENO7EDB7EHu7EPe3EA+3Ech3EIR/A3juEozuEkTuA0TuEszuAqLuA8LuEiruAy7uA6 + ruEmbuA2buEf3MN9PMC/eIhHSMNjPMHTSFpUSQ3DJj4jvSJVPCQqNmRGWkhK/SD4H/tbjC8NCmVu + ZHN0cmVhbQ0KZW5kb2JqDQp4cmVmDQowIDI1Ng0KMDAwMDAwMDAxNiA2NTUzNSBmDQowMDAwMDAw + MDE3IDAwMDAwIG4NCjAwMDAwMDAxNjggMDAwMDAgbg0KMDAwMDAwMDIzOCAwMDAwMCBuDQowMDAw + MDAwNTExIDAwMDAwIG4NCjAwMDAwMDM0NTAgMDAwMDAgbg0KMDAwMDAwMzYxOSAwMDAwMCBuDQow + MDAwMDAzODU5IDAwMDAwIG4NCjAwMDAwMDM5MTIgMDAwMDAgbg0KMDAwMDAwMzk2NSAwMDAwMCBu + DQowMDAwMDA0MTQwIDAwMDAwIG4NCjAwMDAwMDQzODYgMDAwMDAgbg0KMDAwMDAwNDY1MiAwMDAw + MCBuDQowMDAwMDA1MjAzIDAwMDAwIG4NCjAwMDAwMDU0NzggMDAwMDAgbg0KMDAwMDAwODU2MyAw + MDAwMCBuDQowMDAwMDAwMDE3IDY1NTM1IGYNCjAwMDAwMDAwMTggNjU1MzUgZg0KMDAwMDAwMDAx + OSA2NTUzNSBmDQowMDAwMDAwMDIwIDY1NTM1IGYNCjAwMDAwMDAwMjEgNjU1MzUgZg0KMDAwMDAw + MDAyMiA2NTUzNSBmDQowMDAwMDAwMDIzIDY1NTM1IGYNCjAwMDAwMDAwMjQgNjU1MzUgZg0KMDAw + MDAwMDAyNSA2NTUzNSBmDQowMDAwMDAwMDI2IDY1NTM1IGYNCjAwMDAwMDAwMjcgNjU1MzUgZg0K + MDAwMDAwMDAyOCA2NTUzNSBmDQowMDAwMDAwMDI5IDY1NTM1IGYNCjAwMDAwMDAwMzAgNjU1MzUg + Zg0KMDAwMDAwMDAzMSA2NTUzNSBmDQowMDAwMDAwMDMyIDY1NTM1IGYNCjAwMDAwMDAwMzMgNjU1 + MzUgZg0KMDAwMDAwMDAzNCA2NTUzNSBmDQowMDAwMDAwMDM1IDY1NTM1IGYNCjAwMDAwMDAwMzYg + NjU1MzUgZg0KMDAwMDAwMDAzNyA2NTUzNSBmDQowMDAwMDAwMDM4IDY1NTM1IGYNCjAwMDAwMDAw + MzkgNjU1MzUgZg0KMDAwMDAwMDA0MCA2NTUzNSBmDQowMDAwMDAwMDQxIDY1NTM1IGYNCjAwMDAw + MDAwNDIgNjU1MzUgZg0KMDAwMDAwMDA0MyA2NTUzNSBmDQowMDAwMDAwMDQ0IDY1NTM1IGYNCjAw + MDAwMDAwNDUgNjU1MzUgZg0KMDAwMDAwMDA0NiA2NTUzNSBmDQowMDAwMDAwMDQ3IDY1NTM1IGYN + CjAwMDAwMDAwNDggNjU1MzUgZg0KMDAwMDAwMDA0OSA2NTUzNSBmDQowMDAwMDAwMDUwIDY1NTM1 + IGYNCjAwMDAwMDAwNTEgNjU1MzUgZg0KMDAwMDAwMDA1MiA2NTUzNSBmDQowMDAwMDAwMDUzIDY1 + NTM1IGYNCjAwMDAwMDAwNTQgNjU1MzUgZg0KMDAwMDAwMDA1NSA2NTUzNSBmDQowMDAwMDAwMDU2 + IDY1NTM1IGYNCjAwMDAwMDAwNTcgNjU1MzUgZg0KMDAwMDAwMDA1OCA2NTUzNSBmDQowMDAwMDAw + MDU5IDY1NTM1IGYNCjAwMDAwMDAwNjAgNjU1MzUgZg0KMDAwMDAwMDA2MSA2NTUzNSBmDQowMDAw + MDAwMDYyIDY1NTM1IGYNCjAwMDAwMDAwNjMgNjU1MzUgZg0KMDAwMDAwMDA2NCA2NTUzNSBmDQow + MDAwMDAwMDY1IDY1NTM1IGYNCjAwMDAwMDAwNjYgNjU1MzUgZg0KMDAwMDAwMDA2NyA2NTUzNSBm + DQowMDAwMDAwMDY4IDY1NTM1IGYNCjAwMDAwMDAwNjkgNjU1MzUgZg0KMDAwMDAwMDA3MCA2NTUz + NSBmDQowMDAwMDAwMDcxIDY1NTM1IGYNCjAwMDAwMDAwNzIgNjU1MzUgZg0KMDAwMDAwMDA3MyA2 + NTUzNSBmDQowMDAwMDAwMDc0IDY1NTM1IGYNCjAwMDAwMDAwNzUgNjU1MzUgZg0KMDAwMDAwMDA3 + NiA2NTUzNSBmDQowMDAwMDAwMDc3IDY1NTM1IGYNCjAwMDAwMDAwNzggNjU1MzUgZg0KMDAwMDAw + MDA3OSA2NTUzNSBmDQowMDAwMDAwMDgwIDY1NTM1IGYNCjAwMDAwMDAwODEgNjU1MzUgZg0KMDAw + MDAwMDA4MiA2NTUzNSBmDQowMDAwMDAwMDgzIDY1NTM1IGYNCjAwMDAwMDAwODQgNjU1MzUgZg0K + MDAwMDAwMDA4NSA2NTUzNSBmDQowMDAwMDAwMDg2IDY1NTM1IGYNCjAwMDAwMDAwODcgNjU1MzUg + Zg0KMDAwMDAwMDA4OCA2NTUzNSBmDQowMDAwMDAwMDg5IDY1NTM1IGYNCjAwMDAwMDAwOTAgNjU1 + MzUgZg0KMDAwMDAwMDA5MSA2NTUzNSBmDQowMDAwMDAwMDkyIDY1NTM1IGYNCjAwMDAwMDAwOTMg + NjU1MzUgZg0KMDAwMDAwMDA5NCA2NTUzNSBmDQowMDAwMDAwMDk1IDY1NTM1IGYNCjAwMDAwMDAw + OTYgNjU1MzUgZg0KMDAwMDAwMDA5NyA2NTUzNSBmDQowMDAwMDAwMDk4IDY1NTM1IGYNCjAwMDAw + MDAwOTkgNjU1MzUgZg0KMDAwMDAwMDEwMCA2NTUzNSBmDQowMDAwMDAwMTAxIDY1NTM1IGYNCjAw + MDAwMDAxMDIgNjU1MzUgZg0KMDAwMDAwMDEwMyA2NTUzNSBmDQowMDAwMDAwMTA0IDY1NTM1IGYN + CjAwMDAwMDAxMDUgNjU1MzUgZg0KMDAwMDAwMDEwNiA2NTUzNSBmDQowMDAwMDAwMTA3IDY1NTM1 + IGYNCjAwMDAwMDAxMDggNjU1MzUgZg0KMDAwMDAwMDEwOSA2NTUzNSBmDQowMDAwMDAwMTEwIDY1 + NTM1IGYNCjAwMDAwMDAxMTEgNjU1MzUgZg0KMDAwMDAwMDExMiA2NTUzNSBmDQowMDAwMDAwMTEz + IDY1NTM1IGYNCjAwMDAwMDAxMTQgNjU1MzUgZg0KMDAwMDAwMDExNSA2NTUzNSBmDQowMDAwMDAw + MTE2IDY1NTM1IGYNCjAwMDAwMDAxMTcgNjU1MzUgZg0KMDAwMDAwMDExOCA2NTUzNSBmDQowMDAw + MDAwMTE5IDY1NTM1IGYNCjAwMDAwMDAxMjAgNjU1MzUgZg0KMDAwMDAwMDEyMSA2NTUzNSBmDQow + MDAwMDAwMTIyIDY1NTM1IGYNCjAwMDAwMDAxMjMgNjU1MzUgZg0KMDAwMDAwMDEyNCA2NTUzNSBm + DQowMDAwMDAwMTI1IDY1NTM1IGYNCjAwMDAwMDAxMjYgNjU1MzUgZg0KMDAwMDAwMDEyNyA2NTUz + NSBmDQowMDAwMDAwMTI4IDY1NTM1IGYNCjAwMDAwMDAxMjkgNjU1MzUgZg0KMDAwMDAwMDEzMCA2 + NTUzNSBmDQowMDAwMDAwMTMxIDY1NTM1IGYNCjAwMDAwMDAxMzIgNjU1MzUgZg0KMDAwMDAwMDEz + MyA2NTUzNSBmDQowMDAwMDAwMTM0IDY1NTM1IGYNCjAwMDAwMDAxMzUgNjU1MzUgZg0KMDAwMDAw + MDEzNiA2NTUzNSBmDQowMDAwMDAwMTM3IDY1NTM1IGYNCjAwMDAwMDAxMzggNjU1MzUgZg0KMDAw + MDAwMDEzOSA2NTUzNSBmDQowMDAwMDAwMTQwIDY1NTM1IGYNCjAwMDAwMDAxNDEgNjU1MzUgZg0K + MDAwMDAwMDE0MiA2NTUzNSBmDQowMDAwMDAwMTQzIDY1NTM1IGYNCjAwMDAwMDAxNDQgNjU1MzUg + Zg0KMDAwMDAwMDE0NSA2NTUzNSBmDQowMDAwMDAwMTQ2IDY1NTM1IGYNCjAwMDAwMDAxNDcgNjU1 + MzUgZg0KMDAwMDAwMDE0OCA2NTUzNSBmDQowMDAwMDAwMTQ5IDY1NTM1IGYNCjAwMDAwMDAxNTAg + NjU1MzUgZg0KMDAwMDAwMDE1MSA2NTUzNSBmDQowMDAwMDAwMTUyIDY1NTM1IGYNCjAwMDAwMDAx + NTMgNjU1MzUgZg0KMDAwMDAwMDE1NCA2NTUzNSBmDQowMDAwMDAwMTU1IDY1NTM1IGYNCjAwMDAw + MDAxNTYgNjU1MzUgZg0KMDAwMDAwMDE1NyA2NTUzNSBmDQowMDAwMDAwMTU4IDY1NTM1IGYNCjAw + MDAwMDAxNTkgNjU1MzUgZg0KMDAwMDAwMDE2MCA2NTUzNSBmDQowMDAwMDAwMTYxIDY1NTM1IGYN + CjAwMDAwMDAxNjIgNjU1MzUgZg0KMDAwMDAwMDE2MyA2NTUzNSBmDQowMDAwMDAwMTY0IDY1NTM1 + IGYNCjAwMDAwMDAxNjUgNjU1MzUgZg0KMDAwMDAwMDE2NiA2NTUzNSBmDQowMDAwMDAwMTY3IDY1 + NTM1IGYNCjAwMDAwMDAxNjggNjU1MzUgZg0KMDAwMDAwMDE2OSA2NTUzNSBmDQowMDAwMDAwMTcw + IDY1NTM1IGYNCjAwMDAwMDAxNzEgNjU1MzUgZg0KMDAwMDAwMDE3MiA2NTUzNSBmDQowMDAwMDAw + MTczIDY1NTM1IGYNCjAwMDAwMDAxNzQgNjU1MzUgZg0KMDAwMDAwMDE3NSA2NTUzNSBmDQowMDAw + MDAwMTc2IDY1NTM1IGYNCjAwMDAwMDAxNzcgNjU1MzUgZg0KMDAwMDAwMDE3OCA2NTUzNSBmDQow + MDAwMDAwMTc5IDY1NTM1IGYNCjAwMDAwMDAxODAgNjU1MzUgZg0KMDAwMDAwMDE4MSA2NTUzNSBm + DQowMDAwMDAwMTgyIDY1NTM1IGYNCjAwMDAwMDAxODMgNjU1MzUgZg0KMDAwMDAwMDE4NCA2NTUz + NSBmDQowMDAwMDAwMTg1IDY1NTM1IGYNCjAwMDAwMDAxODYgNjU1MzUgZg0KMDAwMDAwMDE4NyA2 + NTUzNSBmDQowMDAwMDAwMTg4IDY1NTM1IGYNCjAwMDAwMDAxODkgNjU1MzUgZg0KMDAwMDAwMDE5 + MCA2NTUzNSBmDQowMDAwMDAwMTkxIDY1NTM1IGYNCjAwMDAwMDAxOTIgNjU1MzUgZg0KMDAwMDAw + MDE5MyA2NTUzNSBmDQowMDAwMDAwMTk0IDY1NTM1IGYNCjAwMDAwMDAxOTUgNjU1MzUgZg0KMDAw + MDAwMDE5NiA2NTUzNSBmDQowMDAwMDAwMTk3IDY1NTM1IGYNCjAwMDAwMDAxOTggNjU1MzUgZg0K + MDAwMDAwMDE5OSA2NTUzNSBmDQowMDAwMDAwMjAwIDY1NTM1IGYNCjAwMDAwMDAyMDEgNjU1MzUg + Zg0KMDAwMDAwMDIwMiA2NTUzNSBmDQowMDAwMDAwMjAzIDY1NTM1IGYNCjAwMDAwMDAyMDQgNjU1 + MzUgZg0KMDAwMDAwMDIwNSA2NTUzNSBmDQowMDAwMDAwMjA2IDY1NTM1IGYNCjAwMDAwMDAyMDcg + NjU1MzUgZg0KMDAwMDAwMDIwOCA2NTUzNSBmDQowMDAwMDAwMjA5IDY1NTM1IGYNCjAwMDAwMDAy + MTAgNjU1MzUgZg0KMDAwMDAwMDIxMSA2NTUzNSBmDQowMDAwMDAwMjEyIDY1NTM1IGYNCjAwMDAw + MDAyMTMgNjU1MzUgZg0KMDAwMDAwMDIxNCA2NTUzNSBmDQowMDAwMDAwMjE1IDY1NTM1IGYNCjAw + MDAwMDAyMTYgNjU1MzUgZg0KMDAwMDAwMDIxNyA2NTUzNSBmDQowMDAwMDAwMjE4IDY1NTM1IGYN + CjAwMDAwMDAyMTkgNjU1MzUgZg0KMDAwMDAwMDIyMCA2NTUzNSBmDQowMDAwMDAwMjIxIDY1NTM1 + IGYNCjAwMDAwMDAyMjIgNjU1MzUgZg0KMDAwMDAwMDIyMyA2NTUzNSBmDQowMDAwMDAwMjI0IDY1 + NTM1IGYNCjAwMDAwMDAyMjUgNjU1MzUgZg0KMDAwMDAwMDIyNiA2NTUzNSBmDQowMDAwMDAwMjI3 + IDY1NTM1IGYNCjAwMDAwMDAyMjggNjU1MzUgZg0KMDAwMDAwMDIyOSA2NTUzNSBmDQowMDAwMDAw + MjMwIDY1NTM1IGYNCjAwMDAwMDAyMzEgNjU1MzUgZg0KMDAwMDAwMDIzMiA2NTUzNSBmDQowMDAw + MDAwMjMzIDY1NTM1IGYNCjAwMDAwMDAyMzQgNjU1MzUgZg0KMDAwMDAwMDIzNSA2NTUzNSBmDQow + MDAwMDAwMjM2IDY1NTM1IGYNCjAwMDAwMDAyMzcgNjU1MzUgZg0KMDAwMDAwMDIzOCA2NTUzNSBm + DQowMDAwMDAwMjM5IDY1NTM1IGYNCjAwMDAwMDAyNDAgNjU1MzUgZg0KMDAwMDAwMDI0MSA2NTUz + NSBmDQowMDAwMDAwMjQyIDY1NTM1IGYNCjAwMDAwMDAyNDMgNjU1MzUgZg0KMDAwMDAwMDI0NCA2 + NTUzNSBmDQowMDAwMDAwMjQ1IDY1NTM1IGYNCjAwMDAwMDAyNDYgNjU1MzUgZg0KMDAwMDAwMDI0 + NyA2NTUzNSBmDQowMDAwMDAwMjQ4IDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAx + MTk4NyAwMDAwMCBuDQowMDAwMDEyMjg5IDAwMDAwIG4NCjAwMDAwNjU1NjQgMDAwMDAgbg0KMDAw + MDA2NTgyMiAwMDAwMCBuDQowMDAwMDk5NTQ4IDAwMDAwIG4NCjAwMDAxMDI3MTYgMDAwMDAgbg0K + MDAwMDEwMjc2MiAwMDAwMCBuDQp0cmFpbGVyDQo8PC9TaXplIDI1Ni9Sb290IDEgMCBSL0luZm8g + MTUgMCBSL0lEWzwwNTA4QkI1ODlGRjYwRjQ0ODM5QjFERTAyNTY1MURFMj48MDUwOEJCNTg5RkY2 + MEY0NDgzOUIxREUwMjU2NTFERTI+XSA+Pg0Kc3RhcnR4cmVmDQoxMDM0NzINCiUlRU9GDQp4cmVm + DQowIDANCnRyYWlsZXINCjw8L1NpemUgMjU2L1Jvb3QgMSAwIFIvSW5mbyAxNSAwIFIvSURbPDA1 + MDhCQjU4OUZGNjBGNDQ4MzlCMURFMDI1NjUxREUyPjwwNTA4QkI1ODlGRjYwRjQ0ODM5QjFERTAy + NTY1MURFMj5dIC9QcmV2IDEwMzQ3Mi9YUmVmU3RtIDEwMjc2Mj4+DQpzdGFydHhyZWYNCjEwODc1 + Mg0KJSVFT0Y= + headers: + Content-Type: + - application/pdf + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/1ccb3371-4e01-4e89-af1d-ea4d36d95c3b/analyze?includeTextDetails=false + response: + body: + string: '' + headers: + apim-request-id: 55cb4394-34b8-434d-a4d5-b90725d5f76a + content-length: '0' + date: Thu, 30 Apr 2020 23:11:18 GMT + operation-location: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/1ccb3371-4e01-4e89-af1d-ea4d36d95c3b/analyzeresults/2807c261-eb6d-4cb4-aedb-70af179691f3 + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '201' + status: + code: 202 + message: Accepted + url: https://westus.api.cognitive.microsoft.com//formrecognizer/v2.0-preview/custom/models/1ccb3371-4e01-4e89-af1d-ea4d36d95c3b/analyze?includeTextDetails=false +- request: + body: null + headers: + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/1ccb3371-4e01-4e89-af1d-ea4d36d95c3b/analyzeresults/2807c261-eb6d-4cb4-aedb-70af179691f3 + response: + body: + string: '{"status":"succeeded","createdDateTime":"2020-04-30T23:11:18Z","lastUpdatedDateTime":"2020-04-30T23:11:22Z","analyzeResult":{"version":"2.0.0","readResults":[{"page":1,"angle":0,"width":8.5,"height":11.0,"unit":"inch","lines":[]},{"page":3,"angle":0,"width":8.5,"height":11.0,"unit":"inch","lines":[]}],"pageResults":[{"page":1,"keyValuePairs":[{"key":{"text":"Invoice + For:","boundingBox":[6.0028,1.0431,7.0528,1.0431,7.0528,1.2667,6.0028,1.2667],"elements":null},"value":{"text":"Bilbo + Baggins 123 Hobbit Lane","boundingBox":[6.0028,1.4389,7.1083,1.4389,7.1083,1.8264,6.0028,1.8264],"elements":null},"confidence":1.0},{"key":{"text":"Address:","boundingBox":[0.8764,1.4681,1.5778,1.4681,1.5778,1.6625,0.8764,1.6625],"elements":null},"value":{"text":"567 + Main St.","boundingBox":[0.8764,1.8292,1.725,1.8292,1.725,1.9958,0.8764,1.9958],"elements":null},"confidence":1.0},{"key":{"text":"Redmond, + WA","boundingBox":[6.0028,1.8792,6.9819,1.8792,6.9819,2.0458,6.0028,2.0458],"elements":null},"value":{"text":"555-555-5555","boundingBox":[6.0028,2.0986,6.9472,2.0986,6.9472,2.2653,6.0028,2.2653],"elements":null},"confidence":1.0},{"key":{"text":"Redmond, + WA","boundingBox":[0.8764,2.0486,1.8569,2.0486,1.8569,2.2153,0.8764,2.2153],"elements":null},"value":{"text":"555-555-5555","boundingBox":[0.8764,2.2694,1.8222,2.2694,1.8222,2.4361,0.8764,2.4361],"elements":null},"confidence":0.29},{"key":{"text":"Subtotal:","boundingBox":[5.5028,4.8861,6.1347,4.8861,6.1347,5.0528,5.5028,5.0528],"elements":null},"value":{"text":"300.00","boundingBox":[6.1722,4.8861,6.6361,4.8861,6.6361,5.0528,6.1722,5.0528],"elements":null},"confidence":1.0},{"key":{"text":"Tax:","boundingBox":[5.5028,5.1069,5.7917,5.1069,5.7917,5.2736,5.5028,5.2736],"elements":null},"value":{"text":"30.00","boundingBox":[5.8292,5.1069,6.2069,5.1069,6.2069,5.2736,5.8292,5.2736],"elements":null},"confidence":1.0},{"key":{"text":"Tip:","boundingBox":[5.5028,5.3264,5.7611,5.3264,5.7611,5.4931,5.5028,5.4931],"elements":null},"value":{"text":"100.00","boundingBox":[5.7986,5.3264,6.2639,5.3264,6.2639,5.4931,5.7986,5.4931],"elements":null},"confidence":1.0},{"key":{"text":"Total:","boundingBox":[5.5028,5.5472,5.9014,5.5472,5.9014,5.7139,5.5028,5.7139],"elements":null},"value":{"text":"430.00","boundingBox":[5.9389,5.5472,6.4028,5.5472,6.4028,5.7139,5.9389,5.7139],"elements":null},"confidence":1.0},{"key":{"text":"Signature:","boundingBox":[1.0,6.6431,1.7083,6.6431,1.7083,6.8097,1.0,6.8097],"elements":null},"value":{"text":"____Bilbo + Baggins__________","boundingBox":[1.7472,6.6431,3.8333,6.6431,3.8333,6.8097,1.7472,6.8097],"elements":null},"confidence":1.0},{"key":{"text":"__Tokens__1","boundingBox":null,"elements":null},"value":{"text":"Company + A Invoice","boundingBox":[0.8764,1.1014,2.3875,1.1014,2.3875,1.2958,0.8764,1.2958],"elements":null},"confidence":1.0}],"tables":[{"rows":8,"columns":3,"cells":[{"text":"Item","rowIndex":0,"columnIndex":0,"boundingBox":[1.0806,2.9833,1.3958,2.9833,1.3958,3.15,1.0806,3.15],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":true,"isFooter":false},{"text":"Quantity","rowIndex":0,"columnIndex":1,"boundingBox":[3.2444,2.9833,3.8389,2.9833,3.8389,3.15,3.2444,3.15],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":true,"isFooter":false},{"text":"Price","rowIndex":0,"columnIndex":2,"boundingBox":[5.4083,2.9833,5.7458,2.9833,5.7458,3.15,5.4083,3.15],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":true,"isFooter":false},{"text":"A","rowIndex":1,"columnIndex":0,"boundingBox":[1.0806,3.1931,1.1764,3.1931,1.1764,3.3597,1.0806,3.3597],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"1","rowIndex":1,"columnIndex":1,"boundingBox":[3.2444,3.1931,3.3292,3.1931,3.3292,3.3597,3.2444,3.3597],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"10.99","rowIndex":1,"columnIndex":2,"boundingBox":[5.4083,3.1931,5.7875,3.1931,5.7875,3.3597,5.4083,3.3597],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"B","rowIndex":2,"columnIndex":0,"boundingBox":[1.0806,3.4056,1.1708,3.4056,1.1708,3.5722,1.0806,3.5722],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"2","rowIndex":2,"columnIndex":1,"boundingBox":[3.2444,3.4056,3.3292,3.4056,3.3292,3.5722,3.2444,3.5722],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"14.67","rowIndex":2,"columnIndex":2,"boundingBox":[5.4083,3.4056,5.7861,3.4056,5.7861,3.5722,5.4083,3.5722],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"C","rowIndex":3,"columnIndex":0,"boundingBox":[1.0806,3.6167,1.1694,3.6167,1.1694,3.7833,1.0806,3.7833],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"4","rowIndex":3,"columnIndex":1,"boundingBox":[3.2444,3.6167,3.3292,3.6167,3.3292,3.7833,3.2444,3.7833],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"15.66","rowIndex":3,"columnIndex":2,"boundingBox":[5.4083,3.6167,5.7861,3.6167,5.7861,3.7833,5.4083,3.7833],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"D","rowIndex":4,"columnIndex":0,"boundingBox":[1.0806,3.8264,1.1833,3.8264,1.1833,3.9931,1.0806,3.9931],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"1","rowIndex":4,"columnIndex":1,"boundingBox":[3.2444,3.8264,3.3292,3.8264,3.3292,3.9931,3.2444,3.9931],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"12.00","rowIndex":4,"columnIndex":2,"boundingBox":[5.4083,3.8264,5.7861,3.8264,5.7861,3.9931,5.4083,3.9931],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"E","rowIndex":5,"columnIndex":0,"boundingBox":[1.0806,4.0361,1.1611,4.0361,1.1611,4.2028,1.0806,4.2028],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"4","rowIndex":5,"columnIndex":1,"boundingBox":[3.2444,4.0361,3.3292,4.0361,3.3292,4.2028,3.2444,4.2028],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"10.00","rowIndex":5,"columnIndex":2,"boundingBox":[5.4083,4.0361,5.7875,4.0361,5.7875,4.2028,5.4083,4.2028],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"F","rowIndex":6,"columnIndex":0,"boundingBox":[1.0806,4.2458,1.1569,4.2458,1.1569,4.4125,1.0806,4.4125],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"6","rowIndex":6,"columnIndex":1,"boundingBox":[3.2444,4.2458,3.3292,4.2458,3.3292,4.4125,3.2444,4.4125],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"12.00","rowIndex":6,"columnIndex":2,"boundingBox":[5.4083,4.2458,5.7861,4.2458,5.7861,4.4125,5.4083,4.4125],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"G","rowIndex":7,"columnIndex":0,"boundingBox":[1.0806,4.4569,1.1861,4.4569,1.1861,4.6236,1.0806,4.6236],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"8","rowIndex":7,"columnIndex":1,"boundingBox":[3.2444,4.4569,3.3292,4.4569,3.3292,4.6236,3.2444,4.6236],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"22.00","rowIndex":7,"columnIndex":2,"boundingBox":[5.4083,4.4569,5.7875,4.4569,5.7875,4.6236,5.4083,4.6236],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false}]}],"clusterId":0},{"page":3,"keyValuePairs":[{"key":{"text":"Invoice + For:","boundingBox":[6.0028,1.0431,7.0528,1.0431,7.0528,1.2667,6.0028,1.2667],"elements":null},"value":{"text":"Frodo + Baggins 123 Hobbit Lane","boundingBox":[6.0028,1.4389,7.1083,1.4389,7.1083,1.8264,6.0028,1.8264],"elements":null},"confidence":1.0},{"key":{"text":"Address:","boundingBox":[0.8764,1.4681,1.5778,1.4681,1.5778,1.6625,0.8764,1.6625],"elements":null},"value":{"text":"567 + Main St.","boundingBox":[0.8764,1.8292,1.725,1.8292,1.725,1.9958,0.8764,1.9958],"elements":null},"confidence":1.0},{"key":{"text":"Redmond, + WA","boundingBox":[6.0028,1.8792,6.9819,1.8792,6.9819,2.0458,6.0028,2.0458],"elements":null},"value":{"text":"555-555-5555","boundingBox":[6.0028,2.0986,6.9472,2.0986,6.9472,2.2653,6.0028,2.2653],"elements":null},"confidence":1.0},{"key":{"text":"Redmond, + WA","boundingBox":[0.8764,2.0486,1.8569,2.0486,1.8569,2.2153,0.8764,2.2153],"elements":null},"value":{"text":"555-555-5555","boundingBox":[0.8764,2.2694,1.8222,2.2694,1.8222,2.4361,0.8764,2.4361],"elements":null},"confidence":0.29},{"key":{"text":"Subtotal:","boundingBox":[5.5028,4.8861,6.1347,4.8861,6.1347,5.0528,5.5028,5.0528],"elements":null},"value":{"text":"3000.00","boundingBox":[6.1722,4.8861,6.7208,4.8861,6.7208,5.0528,6.1722,5.0528],"elements":null},"confidence":1.0},{"key":{"text":"Tax:","boundingBox":[5.5028,5.1069,5.7917,5.1069,5.7917,5.2736,5.5028,5.2736],"elements":null},"value":{"text":"300.00","boundingBox":[5.8292,5.1069,6.2931,5.1069,6.2931,5.2736,5.8292,5.2736],"elements":null},"confidence":1.0},{"key":{"text":"Tip:","boundingBox":[5.5028,5.3264,5.7611,5.3264,5.7611,5.4931,5.5028,5.4931],"elements":null},"value":{"text":"1000.00","boundingBox":[5.7986,5.3264,6.3472,5.3264,6.3472,5.4931,5.7986,5.4931],"elements":null},"confidence":1.0},{"key":{"text":"Total:","boundingBox":[5.5028,5.5472,5.9014,5.5472,5.9014,5.7139,5.5028,5.7139],"elements":null},"value":{"text":"4300.00","boundingBox":[5.9389,5.5472,6.4875,5.5472,6.4875,5.7139,5.9389,5.7139],"elements":null},"confidence":1.0},{"key":{"text":"Signature:","boundingBox":[1.0,6.6431,1.7083,6.6431,1.7083,6.8097,1.0,6.8097],"elements":null},"value":{"text":"____Frodo + Baggins__________","boundingBox":[1.7472,6.6431,3.8833,6.6431,3.8833,6.8097,1.7472,6.8097],"elements":null},"confidence":1.0},{"key":{"text":"__Tokens__1","boundingBox":null,"elements":null},"value":{"text":"Company + B Invoice","boundingBox":[0.8764,1.1014,2.3833,1.1014,2.3833,1.2958,0.8764,1.2958],"elements":null},"confidence":1.0}],"tables":[{"rows":8,"columns":3,"cells":[{"text":"Item","rowIndex":0,"columnIndex":0,"boundingBox":[1.0806,2.9833,1.3958,2.9833,1.3958,3.15,1.0806,3.15],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":true,"isFooter":false},{"text":"Quantity","rowIndex":0,"columnIndex":1,"boundingBox":[3.2444,2.9833,3.8389,2.9833,3.8389,3.15,3.2444,3.15],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":true,"isFooter":false},{"text":"Price","rowIndex":0,"columnIndex":2,"boundingBox":[5.4083,2.9833,5.7458,2.9833,5.7458,3.15,5.4083,3.15],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":true,"isFooter":false},{"text":"A","rowIndex":1,"columnIndex":0,"boundingBox":[1.0806,3.1931,1.1764,3.1931,1.1764,3.3597,1.0806,3.3597],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"10","rowIndex":1,"columnIndex":1,"boundingBox":[3.2444,3.1931,3.4125,3.1931,3.4125,3.3597,3.2444,3.3597],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"100.99","rowIndex":1,"columnIndex":2,"boundingBox":[5.4083,3.1931,5.8708,3.1931,5.8708,3.3597,5.4083,3.3597],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"B","rowIndex":2,"columnIndex":0,"boundingBox":[1.0806,3.4056,1.1708,3.4056,1.1708,3.5722,1.0806,3.5722],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"20","rowIndex":2,"columnIndex":1,"boundingBox":[3.2444,3.4056,3.4125,3.4056,3.4125,3.5722,3.2444,3.5722],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"140.67","rowIndex":2,"columnIndex":2,"boundingBox":[5.4083,3.4056,5.8694,3.4056,5.8694,3.5722,5.4083,3.5722],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"C","rowIndex":3,"columnIndex":0,"boundingBox":[1.0806,3.6167,1.1694,3.6167,1.1694,3.7833,1.0806,3.7833],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"40","rowIndex":3,"columnIndex":1,"boundingBox":[3.2444,3.6167,3.4125,3.6167,3.4125,3.7833,3.2444,3.7833],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"150.66","rowIndex":3,"columnIndex":2,"boundingBox":[5.4083,3.6167,5.8694,3.6167,5.8694,3.7833,5.4083,3.7833],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"D","rowIndex":4,"columnIndex":0,"boundingBox":[1.0806,3.8264,1.1833,3.8264,1.1833,3.9931,1.0806,3.9931],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"10","rowIndex":4,"columnIndex":1,"boundingBox":[3.2444,3.8264,3.4125,3.8264,3.4125,3.9931,3.2444,3.9931],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"120.00","rowIndex":4,"columnIndex":2,"boundingBox":[5.4083,3.8264,5.8694,3.8264,5.8694,3.9931,5.4083,3.9931],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"E","rowIndex":5,"columnIndex":0,"boundingBox":[1.0806,4.0361,1.1611,4.0361,1.1611,4.2028,1.0806,4.2028],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"40","rowIndex":5,"columnIndex":1,"boundingBox":[3.2444,4.0361,3.4125,4.0361,3.4125,4.2028,3.2444,4.2028],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"100.00","rowIndex":5,"columnIndex":2,"boundingBox":[5.4083,4.0361,5.8708,4.0361,5.8708,4.2028,5.4083,4.2028],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"F","rowIndex":6,"columnIndex":0,"boundingBox":[1.0806,4.2458,1.1569,4.2458,1.1569,4.4125,1.0806,4.4125],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"60","rowIndex":6,"columnIndex":1,"boundingBox":[3.2444,4.2458,3.4125,4.2458,3.4125,4.4125,3.2444,4.4125],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"120.00","rowIndex":6,"columnIndex":2,"boundingBox":[5.4083,4.2458,5.8694,4.2458,5.8694,4.4125,5.4083,4.4125],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"G","rowIndex":7,"columnIndex":0,"boundingBox":[1.0806,4.4569,1.1861,4.4569,1.1861,4.6236,1.0806,4.6236],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"80","rowIndex":7,"columnIndex":1,"boundingBox":[3.2444,4.4569,3.4125,4.4569,3.4125,4.6236,3.2444,4.6236],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"220.00","rowIndex":7,"columnIndex":2,"boundingBox":[5.4083,4.4569,5.8708,4.4569,5.8708,4.6236,5.4083,4.6236],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false}]}],"clusterId":0}],"documentResults":[],"errors":[]}}' + headers: + apim-request-id: 0765a009-5bf6-4ba1-ac50-86ec17de4466 + content-type: application/json; charset=utf-8 + date: Thu, 30 Apr 2020 23:11:22 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + transfer-encoding: chunked + x-content-type-options: nosniff + x-envoy-upstream-service-time: '100' + status: + code: 200 + message: OK + url: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/1ccb3371-4e01-4e89-af1d-ea4d36d95c3b/analyzeresults/2807c261-eb6d-4cb4-aedb-70af179691f3 +version: 1 diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_custom_forms_async.test_custom_forms_multipage_labeled_transform.yaml b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_custom_forms_async.test_custom_forms_multipage_labeled_transform.yaml new file mode 100644 index 000000000000..73d74a277fc7 --- /dev/null +++ b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_custom_forms_async.test_custom_forms_multipage_labeled_transform.yaml @@ -0,0 +1,2112 @@ +interactions: +- request: + body: 'b''{"source": "containersasurl", "sourceFilter": {"prefix": "", "includeSubFolders": + false}, "useLabelFile": true}''' + headers: + Content-Length: + - '300' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models + response: + body: + string: '' + headers: + apim-request-id: 42aaeabf-9480-4de8-b262-cd39368b6c6d + content-length: '0' + date: Thu, 30 Apr 2020 23:07:06 GMT + location: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/4a056f7f-86e8-4720-9f7c-98c05ea376d8 + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '113' + status: + code: 201 + message: Created + url: https://westus.api.cognitive.microsoft.com//formrecognizer/v2.0-preview/custom/models +- request: + body: null + headers: + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/4a056f7f-86e8-4720-9f7c-98c05ea376d8?includeKeys=true + response: + body: + string: '{"modelInfo":{"modelId":"4a056f7f-86e8-4720-9f7c-98c05ea376d8","status":"ready","createdDateTime":"2020-04-30T23:07:07Z","lastUpdatedDateTime":"2020-04-30T23:07:08Z"},"trainResult":{"averageModelAccuracy":0.889,"trainingDocuments":[{"documentName":"multipage_invoice1.pdf","pages":3,"status":"succeeded"},{"documentName":"multipage_invoice2.pdf","pages":3,"status":"succeeded"},{"documentName":"multipage_invoice3.pdf","pages":3,"status":"succeeded"},{"documentName":"multipage_invoice4.pdf","pages":3,"status":"succeeded"},{"documentName":"multipage_invoice5.pdf","pages":3,"status":"succeeded"}],"fields":[{"fieldName":"Customer2","accuracy":1.0},{"fieldName":"CustomerAddress","accuracy":1.0},{"fieldName":"CustomerName","accuracy":1.0},{"fieldName":"CustomerPhoneNumber","accuracy":1.0},{"fieldName":"FirstItem","accuracy":1.0},{"fieldName":"FirstPrice","accuracy":1.0},{"fieldName":"FirstQuantity","accuracy":1.0},{"fieldName":"Merchant","accuracy":0.0},{"fieldName":"Merchant2","accuracy":0.0},{"fieldName":"MerchantAddress","accuracy":1.0},{"fieldName":"MerchantPhoneNumber","accuracy":1.0},{"fieldName":"Signature","accuracy":1.0},{"fieldName":"Signature2","accuracy":1.0},{"fieldName":"Subtotal","accuracy":1.0},{"fieldName":"Tax","accuracy":1.0},{"fieldName":"Tip","accuracy":1.0},{"fieldName":"Total","accuracy":1.0},{"fieldName":"Total2","accuracy":1.0}],"errors":[]}}' + headers: + apim-request-id: 085a0929-e493-466e-8a15-0beb0817fda4 + content-type: application/json; charset=utf-8 + date: Thu, 30 Apr 2020 23:07:12 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + transfer-encoding: chunked + x-content-type-options: nosniff + x-envoy-upstream-service-time: '121' + status: + code: 200 + message: OK + url: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/4a056f7f-86e8-4720-9f7c-98c05ea376d8?includeKeys=true +- request: + body: !!binary | + JVBERi0xLjcNCiW1tbW1DQoxIDAgb2JqDQo8PC9UeXBlL0NhdGFsb2cvUGFnZXMgMiAwIFIvTGFu + Zyhlbi1VUykgL1N0cnVjdFRyZWVSb290IDE2IDAgUi9NYXJrSW5mbzw8L01hcmtlZCB0cnVlPj4v + TWV0YWRhdGEgMjUzIDAgUi9WaWV3ZXJQcmVmZXJlbmNlcyAyNTQgMCBSPj4NCmVuZG9iag0KMiAw + IG9iag0KPDwvVHlwZS9QYWdlcy9Db3VudCAzL0tpZHNbIDMgMCBSIDExIDAgUiAxMyAwIFJdID4+ + DQplbmRvYmoNCjMgMCBvYmoNCjw8L1R5cGUvUGFnZS9QYXJlbnQgMiAwIFIvUmVzb3VyY2VzPDwv + Rm9udDw8L0YxIDUgMCBSL0YyIDkgMCBSPj4vRXh0R1N0YXRlPDwvR1M3IDcgMCBSL0dTOCA4IDAg + Uj4+L1Byb2NTZXRbL1BERi9UZXh0L0ltYWdlQi9JbWFnZUMvSW1hZ2VJXSA+Pi9NZWRpYUJveFsg + MCAwIDYxMiA3OTJdIC9Db250ZW50cyA0IDAgUi9Hcm91cDw8L1R5cGUvR3JvdXAvUy9UcmFuc3Bh + cmVuY3kvQ1MvRGV2aWNlUkdCPj4vVGFicy9TL1N0cnVjdFBhcmVudHMgMD4+DQplbmRvYmoNCjQg + MCBvYmoNCjw8L0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggMjg2ND4+DQpzdHJlYW0NCnicvZxZ + bxw3EsffBeg79ONMsGrzPhZBAMvXerEGkrWAPBiLwJYPGIilXVubbL79VrHvYRfZ3cOOAI2OLvJf + LFb/SPbB6tGP1fffP3r15OXTiv3wQ3X99En1n8sLVjP88lxUrDLwab2ovn64vPj5u+ru8uL65vLi + 0XNecVMzV918vLzgYMcqXikpam4ry1TtTHXzBexevLbVp29QZ/Up/OXav15cXrw5vLz77agP9/D9 + +WgOt/DzA3xXx39VN3+/vHgGOj9dXpzlkAOH+Nih4Ecr//x4JYP6V1D/azlVzVzNDKV60rzq2asn + VTXqCL6+I8RcLxjrayUi+eujgmhf+cOv+PEuxN+CUyYcefsJ/wsfrjG6g+PfNkfmxC9vau8pv3Jh + EaXCYmSt9Yl8dQV1OlXd3L45cCFLNVizmvt5xajBZ6iI2klK5W/HK25CF2NXvyulCX0oSM2QOQ/H + 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 + fvW3lN9NoKP8fgIt5fcTaCkfCZSmfCSw09UI6BG/5zmhhK3NXNLi2yxyv6sRhuO2Ndl2xSReu18C + SWJj63VjgCulDJhYt8bwpZRleJt/hbRauxkZKS1YnXrQP1Zeu/sWqczwsaPoQiXOyj7h6XqHU7Nw + 4j5Agofrl1/DFhRHCafxlSw3vgmNdx9P/alYcBMnVb/AV7HR2uNeVHHjrz9DKxFR4SLtfXVUh+u3 + 2N4QjPCBobkrNuZyvAMV+7FxL7PZQV3OCfxy5A4iij0481lKHXfbcTPqJ0nTd4eAs8CYcIeT1VbQ + t+LU2ltxVP7jrMGt4o1aeyuOlIaffhVkVamLzULb9D3+WLrUlRyhOO7ztEa61PJCAGLMOulS46lg + IcPXSJcaULmXuJ3hGulSIyq3DleUK6R1qRGVG5hGrGq1LjWkcmXwYaE10qVoxiXD+eoa6VI041zj + BgZrpEvRzPuam1Ug1aVohk8vi3XSHc04bmeEj9VUhsnwOhCMljA1gRHb9AMfw80Nf0dZqDxp/Xp4 + TA7MvFJgaGoPJlbVsrkCYqnn5PSIc8tK9/fXAS7TyBgJQ4uqLAzmohtYP/Xhid+vPlfPwtTZkXr3 + OJv90lxjdDiRlTildYc/cAPfx2Hvz5f4Gf75G0z37rvp7y0+uBxvgnWuuxwyB5hIuJvNHretowTd + UQYnabEnj3HPzvf9XP8bLHLV4Vu8cj/XCw7/gnk/4UU2Hn5z4s4HQ3MsdeqGPnb7VjRbEL8K9ww/ + Q0xY2N8U//f6AVcH8UOgZ7nFhcKt+Qi3sps3ssLRkbpW8S6K/XayZvFmr+cFRcraSsqbbFB44aDg + vdjTnS1ze6SeJew4LTy3Vep5YgoWKaRY4ZZ5DoOxWxLSwhkFY6rQf1JEOZRypFhuD9ozzxzgiKSk + iee8/w9kOwx8DQplbmRzdHJlYW0NCmVuZG9iag0KNSAwIG9iag0KPDwvVHlwZS9Gb250L1N1YnR5 + cGUvVHJ1ZVR5cGUvTmFtZS9GMS9CYXNlRm9udC9CQ0RFRUUrQ2FsaWJyaS9FbmNvZGluZy9XaW5B + bnNpRW5jb2RpbmcvRm9udERlc2NyaXB0b3IgNiAwIFIvRmlyc3RDaGFyIDMyL0xhc3RDaGFyIDEy + MS9XaWR0aHMgMjQ5IDAgUj4+DQplbmRvYmoNCjYgMCBvYmoNCjw8L1R5cGUvRm9udERlc2NyaXB0 + b3IvRm9udE5hbWUvQkNERUVFK0NhbGlicmkvRmxhZ3MgMzIvSXRhbGljQW5nbGUgMC9Bc2NlbnQg + NzUwL0Rlc2NlbnQgLTI1MC9DYXBIZWlnaHQgNzUwL0F2Z1dpZHRoIDUyMS9NYXhXaWR0aCAxNzQz + L0ZvbnRXZWlnaHQgNDAwL1hIZWlnaHQgMjUwL1N0ZW1WIDUyL0ZvbnRCQm94WyAtNTAzIC0yNTAg + MTI0MCA3NTBdIC9Gb250RmlsZTIgMjUwIDAgUj4+DQplbmRvYmoNCjcgMCBvYmoNCjw8L1R5cGUv + RXh0R1N0YXRlL0JNL05vcm1hbC9jYSAxPj4NCmVuZG9iag0KOCAwIG9iag0KPDwvVHlwZS9FeHRH + U3RhdGUvQk0vTm9ybWFsL0NBIDE+Pg0KZW5kb2JqDQo5IDAgb2JqDQo8PC9UeXBlL0ZvbnQvU3Vi + dHlwZS9UcnVlVHlwZS9OYW1lL0YyL0Jhc2VGb250L0JDREZFRStDYWxpYnJpLUJvbGQvRW5jb2Rp + bmcvV2luQW5zaUVuY29kaW5nL0ZvbnREZXNjcmlwdG9yIDEwIDAgUi9GaXJzdENoYXIgMzIvTGFz + dENoYXIgMTIwL1dpZHRocyAyNTEgMCBSPj4NCmVuZG9iag0KMTAgMCBvYmoNCjw8L1R5cGUvRm9u + dERlc2NyaXB0b3IvRm9udE5hbWUvQkNERkVFK0NhbGlicmktQm9sZC9GbGFncyAzMi9JdGFsaWNB + bmdsZSAwL0FzY2VudCA3NTAvRGVzY2VudCAtMjUwL0NhcEhlaWdodCA3NTAvQXZnV2lkdGggNTM2 + L01heFdpZHRoIDE3ODEvRm9udFdlaWdodCA3MDAvWEhlaWdodCAyNTAvU3RlbVYgNTMvRm9udEJC + b3hbIC01MTkgLTI1MCAxMjYzIDc1MF0gL0ZvbnRGaWxlMiAyNTIgMCBSPj4NCmVuZG9iag0KMTEg + MCBvYmoNCjw8L1R5cGUvUGFnZS9QYXJlbnQgMiAwIFIvUmVzb3VyY2VzPDwvRm9udDw8L0YyIDkg + MCBSPj4vRXh0R1N0YXRlPDwvR1M3IDcgMCBSL0dTOCA4IDAgUj4+L1Byb2NTZXRbL1BERi9UZXh0 + L0ltYWdlQi9JbWFnZUMvSW1hZ2VJXSA+Pi9NZWRpYUJveFsgMCAwIDYxMiA3OTJdIC9Db250ZW50 + cyAxMiAwIFIvR3JvdXA8PC9UeXBlL0dyb3VwL1MvVHJhbnNwYXJlbmN5L0NTL0RldmljZVJHQj4+ + L1RhYnMvUy9TdHJ1Y3RQYXJlbnRzIDE+Pg0KZW5kb2JqDQoxMiAwIG9iag0KPDwvRmlsdGVyL0Zs + YXRlRGVjb2RlL0xlbmd0aCA0NzY+Pg0Kc3RyZWFtDQp4nK2Yu2ocQRBF84H5hwplB7Vdj36BUKCV + LGwQ2GjBgVEoKZLA9v+Dy4sDh6rmTjDQzNCne6BO3xo6fKXLy8P98fMNlasrur450s99K1z+XlOU + CrW496n062nfvn+kt327Pu3b4ZNSPDg975vES4WEunJRp14Ge6PTa7x099Dp5XdMSC/n0fg3utu3 + Hxf04ZFOX/btNqb7tm90e38k+m9BAlpQm8pNzws6r+OdeEXhe+M+0nhD4VvhKWm8o/Be2fL4isLr + ZO9pfEPhxbhZGt9B+Do795nGDxR+CM/87icK3xqX/O4FJcJaC2vN81Heq+bs+dITlPiqDB4LfJT5 + alGe+doXlPp8dF7YPkp93oW15fko93mt7PljV1Dyc5tc8+euoOznatw9z0fpzyOHyULsQenPInZp + /vsrSn8Wucvz319R+rMIXvnyU5T9zJ37Ah9lP9PB+cNXUfazSF5lYfso+2lEL12oPpT9NLLXStOD + sp+2utL1KMp+6pNnvvoNZT+N8FXy4cNQ9tMIX5rP3oayn0b4snz9G0p/MhrXfPg2lP6kR9u9wEf5 + TyJ9LTQ/hvKfRPpaaH4M5T+J9LXQ/BjKf1I614X6R/lvCveF9OWwv4CVR3uff/8AMWTgdQ0KZW5k + c3RyZWFtDQplbmRvYmoNCjEzIDAgb2JqDQo8PC9UeXBlL1BhZ2UvUGFyZW50IDIgMCBSL1Jlc291 + cmNlczw8L0ZvbnQ8PC9GMSA1IDAgUi9GMiA5IDAgUj4+L0V4dEdTdGF0ZTw8L0dTNyA3IDAgUi9H + UzggOCAwIFI+Pi9Qcm9jU2V0Wy9QREYvVGV4dC9JbWFnZUIvSW1hZ2VDL0ltYWdlSV0gPj4vTWVk + aWFCb3hbIDAgMCA2MTIgNzkyXSAvQ29udGVudHMgMTQgMCBSL0dyb3VwPDwvVHlwZS9Hcm91cC9T + L1RyYW5zcGFyZW5jeS9DUy9EZXZpY2VSR0I+Pi9UYWJzL1MvU3RydWN0UGFyZW50cyAyPj4NCmVu + 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 + mxWDaazuLffHZf/XyULlydKvhoeloFgtJRTUpHahL93+mltBGOxpKTm6Y7Lu6v7GpCD11DNaQExK + 6AdgSOeZT717wkML9upBhyuL6n11mfRLsw1gXRIVLp3a0+/RA+T32sKAIVRhtoQn9+zXM8QITO+A + 9glKLNq+F87X3ru/nWXj+ea8/ouJHAe52xbDiDYr2x4OQ5UX8RyPeO0OBw4teexOr37fA/vb+QJ0 + +xYuIfZaweC/AN6IFYv+0NkZIO4MmKuL8ERtde5O1TH+MO+X/kbPZ/AJ9Sd9u/979eA4Gd6x3mUW + g6WWMJhZi94xhb0jFJHhecL9wep69bHn+5wihEsfiDWLTrGFneJuoM3PeF46LXyXMMzZUOHYoeH7 + xGCtb1Gxwi2rGcxq7BqXFo4omJxw9Qd5lMFVFhVbOo1958iBPCIwaeRJ4/8DtXV3Ww0KZW5kc3Ry + ZWFtDQplbmRvYmoNCjE1IDAgb2JqDQo8PC9BdXRob3IoS3Jpc3RhIFByYXRpY28pIC9DcmVhdG9y + KP7/AE0AaQBjAHIAbwBzAG8AZgB0AK4AIABXAG8AcgBkACAAZgBvAHIAIABPAGYAZgBpAGMAZQAg + ADMANgA1KSAvQ3JlYXRpb25EYXRlKEQ6MjAyMDA0MjIxNjQ1MjktMDcnMDAnKSAvTW9kRGF0ZShE + OjIwMjAwNDIyMTY0NTI5LTA3JzAwJykgL1Byb2R1Y2VyKP7/AE0AaQBjAHIAbwBzAG8AZgB0AK4A + IABXAG8AcgBkACAAZgBvAHIAIABPAGYAZgBpAGMAZQAgADMANgA1KSA+Pg0KZW5kb2JqDQoyMyAw + IG9iag0KPDwvVHlwZS9PYmpTdG0vTiAyMzIvRmlyc3QgMjAzNS9GaWx0ZXIvRmxhdGVEZWNvZGUv + TGVuZ3RoIDMwNTE+Pg0Kc3RyZWFtDQp4nO1b24ocyRF9N/gf8g+mIu8Jy4Jt7WKzrBCSwA/CDyOp + LQ07M72MWiD9vc+pipyetTOz1Gn7weCHmbrG/UTkpaKtmMXYYIIYG40s2dhkJOIezsQaW3DfG7cY + J9FYnMWMU+NjMM6CLBrnTIjJOG+i4FkwMRa8ZpIFUTIp4W1rsrXGi8nJGe9NAUPvTMnkBLEuGx9w + LLi9GBEPfsWIBcOAawuOHtfOigkWx5SpsXiwCR7HnExwRgKIfMaxRBNoB/QK4J+kmAD6lHAfzzOs + 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 + o7YHauOettT9bxfFC374xVj+v4b+R2qoOrMW0tkCqt2Sut9ed8Hr1nDdsK3bqHVDsm4T1s27ug1W + N6fqllHdfKlbInWjoi7560K8Lo/rQrMu/+qirC5v6qKjLgX+W4W/fs361q9fDMY/AFTdMPANCmVu + ZHN0cmVhbQ0KZW5kb2JqDQoyNDkgMCBvYmoNClsgMjI2IDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAy + NTAgMzA2IDI1MiAwIDUwNyA1MDcgNTA3IDUwNyA1MDcgNTA3IDUwNyA1MDcgNTA3IDUwNyAyNjgg + MCAwIDAgMCAwIDAgNTc5IDU0NCA1MzMgNjE1IDQ4OCA0NTkgNjMxIDYyMyAyNTIgMCAwIDQyMCA4 + NTUgMCAwIDUxNyA2NzMgNTQzIDQ1OSAwIDAgMCA4OTAgMCAwIDAgMCAwIDAgMCAwIDAgNDc5IDUy + NSA0MjMgNTI1IDQ5OCAwIDQ3MSAwIDIzMCAwIDAgMjMwIDc5OSA1MjUgNTI3IDUyNSAwIDM0OSAz + OTEgMzM1IDUyNSA0NTIgMCAwIDQ1M10gDQplbmRvYmoNCjI1MCAwIG9iag0KPDwvRmlsdGVyL0Zs + YXRlRGVjb2RlL0xlbmd0aCA1MzE4Mi9MZW5ndGgxIDEzNzU5Nj4+DQpzdHJlYW0NCnic7H0HXFTH + 2v475+zCUhaWKrLiLq6Auig2FEtklaJoLCirgA2k2LChGI0lJEZNSEy5Mb2ZnhtNsqwaMdXkphfT + e+/JjaZdzc01Ub5nzruDaDTJvfd/v3z3/9sXnvM8887Me2bmzMyZjRBIEJENFxNVFIzIL1mf7HuW + xJeZRLFJBSNOzbvntXVfkfhoNVGIb/ykrL7XPly5k0icg1oVVQsqF7/T99MUovmbicyDq5Yvc+5e + /EY20Y1fIH1/7eLZC9a+pw8kWvwCkdU9u25l7bvOlS6i228meumvc2oqq38cu9KHeJGIN2AOHNY7 + O+1HOh/prnMWLFuRPXOSG2nEm7utblFV5U2b53cjseoiFJ+8oHLF4l7W9G7In4PyzgU1yyqvOmvL + chI/yfpnL6xcUHPdoYMzSTSjfu+lixctXdZqpw3ozzRZfnF9zeK42V06Eq35GbdDP+ENGfzhP3a9 + WDAzeuhB6mghafd9tfpZya8XnTb+p0OHG8P2WQYgGUYasaFeCB0h8Wj4lp8OHdoSts+I1M46bpMe + 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 + wAKEAiGAGTANb8VVBzRAAETVAj5xBDgM/Az8BBwC/gH8CPwd+AE4CBwA/gZ8D3wHfAt8A3wN7Af2 + AV8BfwW+BL4APgc+Az4FPgE+Bj4CPgQ+AN4H3gPeBd4B3gbeAt4E3gBeB14DXgVeAV4GXgJeBF4A + ngf2As8BzwLPAE8DTwFPAk8AjwOPAY8CfwEeAR4G9gAPAQ8CDwD3A/cB9wK7gRZgF3APsBPYAWwH + /EAz4APuBu4C7gS2AVuBO4A/A7cDtwG3ArcANwM3ATcCNwBbgOuB64BrgWuAq4GrgCuBK4DLgcuA + S4HNwCXAn4CLgYuAC4ELgE3A+cB5QBNwLnAOsBHYAKyn6uGNAutfYP0LrH+B9S+w/gXWv8D6F1j/ + AutfYP0LrH+B9S+w/gXWv8D6F1j/AutfYP2LegB7gMAeILAHCOwBAnuAwB4gsAcI7AECe4DAHiCw + BwjsAQJ7gMAeILAHCOwBAnuAwB4gsAcI7AECe4DAHiCwBwjsAQJ7gMAeILAHCOwBAnuAwB4gsAcI + 7AEC619g/Qusf4G1L7D2Bda+wNoXWPsCa19g7QusfYG1L7D2/+h9+L/cyv7oBvyXGy1d2u5gJi1p + pvyFp9DriI5ccszvqUygebSUGvG1gTbRJfQQvU2zaB3UlbSFbqU/k48epqfo9d/xOy+/246sNC+g + SH0XhVAcUeuh1v1HbgVazFHtPJcgFWdyHvW02lq/Ps739ZFLWm1HWkJiKdyoa9Vegvdv4nDrIbxy + kW4dINPaRuhoo8Z3odcdufvIbceNQTGV01SaRtOpgirR/2qaQ3MxMvOpjhbQQiO1EHmzca1FaiZK + YXsx9NFSi2gxUE/LqIGW42sx9NJASuYtMdINdBq+VtBKOp1W0WpaE7ieZnhWI+d0I70CWEtn4Mmc + SWcZSjF71tHZtB5PbSOdQ+f+aurcNtVE59H5eM4X0IUn1ZuOSV2Er4vpT5gPm+lSuoyuwLy4mq45 + znu54b+KrqPrMWdk3qXwXG8omXs/PU476S66m+4xxrIKo8Yjosal1hjDxRiD1ejhunYt5vE7rW20 + 1qLvsm9NgZ6ugP+sdjWWB8ZRllyHkhyFn4OMsua4kbgIfWB9tEecutTo/1Fv+1H5Na8aj2vajczV + Rkqq470n05fRtViBN+AqR1WqG6FZXW/o9v7r2spuMdI30c10C57FbYZSzJ5boW+j27G276CttA1f + R3V7xXwX3Wk8OR81k5+20w48yXtoF7UY/l/LO5F/e8Dvb/PspnvpPsyQB2kPdppH8KU8D8D3UMD7 + qOHj9CP0F6RlKU49Tk9gh3qanqFn6Xl6DKm9xvVJpF6gl+hlel1YoV6kL3E9TC+YP6EoGo6P//di + nK+hGW2/DfofMXMyJdCW1h9bT2v9UR9FtaIEB8hteEo76Hx8Yl94tKRwULjpI4qnHa0/6NPA3Q6/ + ZZ5z5MbWb8iMXXOp/hJ2OZ1CaRCNpXF0uW+9u/R+suKUkkiDxc6dCfn5lp6hD+IEopETZxgLCZHn + iTZp1l3JybmuXdkhm/SYohbRc0du6CacznMPv3d4b9bh9/bHDsraL7Le/fC9D23f7Y0ZlNXvw1c+ + 7NPb7olPtu6qQ9Vs1666bD1kU50ekyvre8Lqcj1a6KY6BEnKdSfvde/Ncu91I4y7d58yEZMaYyA+ + SgsNjQ9xdemlZWekD+jXr+8wLbt/uqtLlGb4+g8YOEzv17ezpscrzzBNpoX+0s/l+vjDIdpaV+7k + fubOydHx1hCz1ikptufQNNukqWlDe6WE6qEhutkS2m3giC5j6gq6vBUak5KQmBJrscSmJCakxIQe + ftscdeh7c9RPeaa6nzbrIUOm5XbVrwi3aKaQkJbOSR17DEktmhwdZzNFxNliEi2hsTGR3fKnHd6Q + 0EnG6JSQwLEOj8VwuloPmdaa46kLpdM7ctx3U9fWL3ZE2sSprpaASG9p/XZHBESEEuEQnmSp0mzy + ajWukcbV002kyezMCDG2qys97UBkRGRSlxRXuFUkmiIp0hap3e16yPW8S3dFuiJjUybGes1eys3N + jR00KCtr+vSYDoNiIGP62fb3jenXp7dwTw+8/d1uu6czQkamHahrH7N9nCQVqC2MG1Hw8NISE0OM + J5ahp+pRuqtLevqAgYIfU4dQl55qarAIW5rDkRYXZlp0+LN5enicq1NKWrSwCL/J2jGjs7NHcpRp + lXhfPHJKoj3KpIdGhokhR54Ks4aZzFH2RJM/Isqi65boiE2HV2E2byMyCczrzuSmHPq7HFtPsiPJ + JsY6bNHyYsUlKRIXJ0ZK/su7p1tyggf5CR7kJyREZMrCmbJwpiycKQtnysKZ9+JDNLXu2QlN6f3w + nLajJPjb7dEBthr8w/ZIg7/YHiFZs3msWyL2RGgRyRkH+vQJ7Wr8t/7i/i0iojm0hHL35xorZpDI + mv6hMeR9X3GzkCvAPYi1XEDhyX0yDtQhhE3G2FFnKw6VUfx1CIOFk2tUGCTXTHyUyZXaJT07pv+A + fqkY6wS5eDrron8vzeWKkSsn7qg0CUfO+KolRUfu6tC9eweRvmxzVd9E9/Ae2dMKuh05nJxTPtr/ + aN7EAR3HpY2cX7z30JDSvHSx9JTZE4f1SHBkmM7KcGSWnD62V8nInNjw7IkLNZF1ananI9NdQ8Yf + fndw6VDHkZxOAyfK38evbP3WFGnujP3G2Gu2d6Ih7sAougOjCN4nRxH8tRxFd2AU3Q9q/bDLJoks + SqV0kemPm2S6T/SgbOotejWHTcbm88p+CZHFw2V77VGMWHNqUovI2l6XGpfeIjJ31MVNyja1iB7b + 67LDest/dKpDTQzco24JOV3jo0La7RwhCYGdRO4xCfGdNTlacuqaIjWzJd4zc1XR2mcuHDvpshfP + yJlXXmi3mHWTJcIS1Xf8kvGTN1UPzK66aOrYpcX9o0PDQ/RdtqTYqPjuGfaSm7+79oaf756W4Oxh + j4pLjo3vFBeWkZVRsOHh1aseOGN4elZ6SExn+f83kHP5QszlWHLQFcZMTslNFXFyfsbJ+RkXj5GK + i8UwxSVhjOLuk/OTknlEkwMjmhyYl8mBeZkcGNHk+7QYCsOIRvqjiu0tIr3ZzHNRjeArat5NtzdH + YRgjd9RFFZtlSX+dOTDfeKppx0y10HYT68LJt3x765GvjWmVdvsX1xbv7L/ojg13N6++o36QdtXt + P90ykSfQlJu+uHLuzrNH/xwzrPFhzBT0XF+NnmfSXbLfzckZgXmSEehVRqBXGYFeZQR6ldGixXjC + wuKccU50LrlFWDzWxnSxJ128kC7S00M6yn98sxZngJpD2tbe9CX16HaWsYPZAmtQzp50I0BEHWZc + oo7a1o7GMFiLQ2QAf13I0WU3c8b0wATSfrHwXKkxx0l9tSncajl8iRwYrdZitZjNuBwJEX4L9jVT + GPQ4TVis4aaRsfZYCw+SJdYeH2uPsRyZF2brFBebbAs90scSY5cra1vrIb0E45VB64zxCo0LjFdc + YLziAuMVFxivuMB4xWG8dlpTqHNKKHq0PS6uY0iL6La9y/9w9iXwbVVX3m+TnpYn6T3t+75almVL + 3uRNsuN4dxzbiROSOKudkPBCEgINJClLEuiwtIWyNZRpy7Sly7TQJE7iAi3MfCmUtvSjv6GdoaX8 + oPOVtaa0M9AEEuW7574nW3Yc2pkE9K6kd+9793/OPcv/nqcMO8A5yJ48fUbIlaFiglNPiujcIJw8 + JeKzkQuY9diXzLnkkEuo0CvQ/NkiEgyL5ojbBZXZ77QHzSqESBf+9IzJjSbbw/Iui8klqC/8gdWx + CgV6YR4DMDxo3msvvsdcr/ATeeJ30vpwuw12WB92WB92sN92DQctNFc76IaOeDpG+mOF2MYYHTPI + KBlklAyy9THI1scgo2SA5wrStWQtWgaaqWAwl257ktSgKEpDJo7nRs3IthxLj4E2IQskSKDJtvyl + 8fEzs8Yc0AvCGKdEGETRhponREVOM00mpsTcaBpGOi6mxyS1OpMUyhGdZ4fqGwRQM7BTGGcBLP6c + 5WKY6xkVx3KN6w+vueo7n8ov3f/tyZYDdcWXBIFRIw/6Ja3VqDE2rds8UfPAH782Nv7tmbv7Dk0u + dWqY9SaPSRWtii6740e7Dj5zpNPjIW8IhpEAVCrebSyanFFP0M6Nf/f9+x766PubnKGEMyhrILMc + RTRp4g2QxFS+hgxxMrycDC8nKyEnKyEnw8uBYNy2sBYkpwXJaUFyWpCcFiybFnyojShYkOMtmOCF + F8gBooC+J2ywOYW+gOMp9J2tYgQ5x8qC4RmOfJEjufmxDlrqM3kSedWXQCSyUs8t+XHXiYoRTuov + Ehxa9dyCGAcv9HxppWOdLldvyT1Y0GelJrNcZQ7YnX6z6sIJ1HKAiqvMQbsjYFZRg1jpUcuJhIV0 + m1NRbRf+tdRmflNqXfiIUpbaMtrkaoS2hdgEaJ/O24Zsj9toQgackAEnZMAJGXBCBpx4Atl+zcVn + TiPcNPwIBgeBMmfwT+AP0YznTbQ0JXJ1aSJqS8DmKL/9uVuWrXg/ukundJc/ICzS7Vnk27PIt2eR + b88i354Fnk4h1IYRyzSZlM00mX5hNg46YRhRwlezBni+4Z2VARiafmRM1RfO2BIlzMkXIXTsN7tM + amRWHyvd7sePqAW3hKwyiSxpC/FrbFH4jW272yhddbUtndZU2e3O6b/TvYJOe8M1HKcBrdaAVmtA + qzWg1RrQag1IAcWTBQeIJFw/rLXbdGl7TZXSFx/2rSwpbd6IYuosAqAUFaLImp9tCbnWdDYLEfs4 + SrAWHcM+N8g8cYZICMhRaE6G5hloHJuTWYjSMZDKpMrsc9gCJhVVzNJai8ds8Zq1VLGbRNrrsPtN + bKXrSn912K4m9ynI27ROX9Sx0+AycXNase3j+1gNSzMoDkLJ09HZzx+tCHPOuOv8KvpRb4VDqzZ5 + LBD3IG/2HJKBm0gQX8H+LKyUYVfKsCtl2JUy7EoZdiXAbhM8gLkHMPfwnI4c8ED87oESXEKIgNFV + KrkQipxPWIa5MkcnhTzlEYASzj4potMtcP6UiDss9HWhhQ6OKQuC6OcK+753/b1qU8AB+lfhJC0V + g9t3DiRONq8ar/zKl5Zt6wrT9256+OqWYtUsMN+JB1lbft0Nq4Z21OovnIt3b4FfF7jYrviMIoC8 + fDPxI8nfaQLGOMw1DnONQzwYh3gwDvoVR/MtaAi/u9p9s5t2Z2QIMzKEGdnZZWRnl5EhzMDTdMaA + RpcCr2QbjTANsAx14N9eegGgys2GiHO+LYfQmkKdbNALJfSoX4HR6RrwMtVhh8a/5HwBcIMERSED + FlOWx9tymqLAaUpZyI1mreGU5iuuPdJW88CWL/zqzs6++169785/+3yPKdFW0Xt1T9ysKn43tvaL + u3d/cUMiuubBa/Y8tD5+jc0nKAP5NS3eyrFH//rVh849vmHsG3/5x+H7juxOtSwJGkwh6rWrn7pz + 2ehnn7jymqfvGlzx+R8SkvYxWqR99UQn8UOMspevEhpUCJoGQLkBa1QDoN4AMDcgvE4nIINM5AXA + FrUEGWNBVlNBVlNBxliAMml3FY/Cy1O7C2ShYGtF2nUyMGyTFz2OSmdmgS7LCAHo41UF6HpSRB0D + 0POUKHeFtT6bBZaWeoyuoi/RUavNS8tZoc1ktZK10Vg0WorbtUpz2OsMmLXMPkuqbUXz3pL2ojje + VNPu7N+7LBbqWJfz16bi5mv1quKFzuWOfPaeb3Vu6fChZa9CMSzPkTW1q/KhCy/PajWK2xS0rnFs + 15L2bUNNZn2yZVlN8T/DHvrWge02VlkcCDQvRza4++IMvQXpeS8Zl/xG+8W3pgw8OdAuw9kuw4yP + HD5iWNunqcpCMlMwmcmBTEEgB8OZcIZz2aGvC4yvi+fhBXVxgehcT1A1YIFPuLBvfOaEQz6apeMp + A4QZXNWTZIxoQMFetKAV/A1kQ0HLkQMCVNBooNUgNAjWFgiK212KxKgVrYBjChwOInHNCJBVJJPj + /AwPJmYu7jBKX8y6tWMNVVDXKAooHIyeFvGoCRj2tIjHVcDAKPeSokPUOykPPRcgMqWFJHFjVcrL + JLJKesuSfY+Mt+9a1WzTokBRpc8u39PXOL4knBnZfvWVI9nm7fesSK4abDEpGYpWalltunO8qX55 + rTMzuuPqHaNZ8qq1n9uSsfqD9ojP6jGywXjI27A827CsuSbbtmLP0PBNYymDw2fSCnaTEeW37pDH + U90RqV/Wksm2ju6BGKYVedrXUHTQQtyB2YBoC4lM0NnCEoA0kiHTKmjE02SEx59EyKAdGokgafdD + I1VDpqrJVJhMhciGkYqRULWWLg/2bLl8HrlF9AfILPmvq2BYeK69dDIsmVmXSJda0Wh9fZlLLGtZ + rUpWcZjh3QmvL+nWM8U/Ux/RemfCH6h0G+jid5SkEPX7wiaWIkMkaabV5ojXHTCraTJBkR5aaQp5 + vCGeVET1AiR9gp7+5fl0qc38s82pZ2iVXvvxGaZJa0BLSmXQfvws06xBbYXeaUO2ikee8v8xUSJM + xIk9gOJJuy3GRXXTFFlQ26J+9Lk2qpmmmgs8EY14KmJnIZ6dNF6puFKOhyFdIR1p+0uvI2Uy5pz8 + 76QG0E086sHFzopzfeQYGPKSeeReLMDOJ/cYTO7Rv2FpPhoIRMwqelWxMMJoTGG3J6SnVOR2hrPH + vI6Q3ahV0Z+mHie3tVhhvkpOPfOumlPRCr3bQv9Yq2dpklYgDb25qIFfHnwEvXyN8cv83lYcHUSz + T1I0oSV8lPUEEHjTVCuar9YZ+31NDRt5g5/IfsBuK+fZXnodNV7nX89IrHRN7PeYVIu8IfITbPYD + EZ39d9Fp9KJ0Gv01d3bpyi3txf9jDofNZHzDjWOVpnB9KDmYC/7Jklra8u2Tufa4pdnVMNr5o1fr + OrMeMls7tjQT5D0B+usBT7BzS3ussymlV1UsWU0+FGqKW4tPu1Itxf5kR5W9+HVrsg3Wz86L79OH + mWqijrgKUDhuJ2LTVFtBw1k/TnvyHsoTnCaNyGBtpc76a6prqJrKabLuGLsdqLLxGfyC3MtLQJOd + 8lg/Fj0C7qARha011FmxhoXzj4uowwKGbF6eeTmGjD6sctb2jjeIx2/q6r75hJhe1dfsVKMAkNVG + 8+OFrr3Dlemxfb2tq1rjOqVKQX/RE3AG3Kbu258/dMvPP9fHuwPOUMDoFFS+sLdh2wPjmx+YyHpD + XiUK0pHegxacR1oAzFibtG9honJAflHmglptP6efcJ1TbCvxWdL2A6e3nxP1EwrXOVGxbT5/FVqc + v6LP997xk89+jMUo3PEvhzu/H1/5GfGeu7fedkUl5bvr57e1SxJbeuTpG0fu2tZ0/r2ayQdBNnB/ + egZ+d3J1ib9CN2ZW+01+E6F2/hWYqLO6idhZ5ZxeogxH4p+wVpqizr+KmHI6K+omlGgVKsuU8n/A + NOkZVqu88CbMgTKyWpZB79niRnIbqwXeHLWPkt9EFp7pRGiz0nxY3mU0Ogyq4s9Z3mkSHDxb/AbL + O/DMLn5EvY9mFiKW45kpBJiZ0a3Vugi3S3FOEGzMx/4J25Xz6aPStAyC4pyIzvEzH4v4rHmhtPKT + WCMr9b7BULyB3K3kYBKcsni3CkUlkD0j8ZwzGOjfhv3FKRXvMBmd6N5XqKTJquifBjwBuHfx4nv0 + e0yGKBC7scfxeg12eHqNiBumqcaCpi70gUOB/lZroHy/aasZrYdj1dtlCYFspBWDLCRQOQWtI/SB + iDs0QY8psWlrNfQ5LlZvL8kKHPTlCJzZdYQmZxHMSlZyOaWlRb+nYNWMoWZg58DYHZtqG7bcPly1 + KfbHkgzJDVY/LwSWrxhL3PT8Xb1Ddz9/YMk1KxvMGvouk4tXeSKelh33X7H5gW11VgvpReIDkbIe + X3GL2cManSbtwF3P7r/pF3cPWXw+k0+WLf3vyJukiTVYtiEOHvGzhbXwQxKErWIyDAZCfYkLgdz0 + 9Ywk4RMVk1xYsiOXuo3/CW9C/7vKgqTrN7NFL84zA8CbBOwOP8rhf8+a/Sibt6hss2g8W2wqtem/ + zOr5FvIfS215hmQ/mqGFCEuRJYFmpuEn8VyQbGEC+N1lqY/+0r2o4Q7QvczeAf1fSqmlJC5eJAR0 + pXWKW6ko8RgyS0oqKsh2gXoZXd9O1ErXNwGyrG4SqY3+GLOtxHTAfegmGfj0uMhsmyM5lItwHNTL + vKHoM4dn0dkFsfbSMNJ6+uelezp/Cyu4JAQUk2j9NhI7ME9XaUnF7NPkxYI6qEtrUqlgrQbeCUSw + biJl1dKe6ITnSl4WNg6TsLCNuVagy5HMBZyRFAwLTy+xDgs5Bzli+CTOwWpRTLImv83hN7JU8U4m + FLe4jWq6eJRijX6Hw2dko3bRVxmwq8kEQ2Y4RyDh3uoIz0li3/kjHEcr1Ur64PnbZz99LugHsuFC + LfUTb4VT6w+WdP59JJFmYgDrfMAIjze6mepp8mcFHeGun9RW2MBS0dvk3dJybS9oy7+Xd0FLkkJO + BaLHWMgs8bMLZouSLlu2ip4TJv1+0LnXF+WLb8WHYiRJkazgtto9MNuDgsssqIrJlShwRH+URrfN + 7hGUHUG/L0Bp+x8aCPb19wUv/Kh8riqDnS+Ghx8Zia9cORYnP8BZmQr4Q4rYevE9phNZQhMRI3pg + 3k8TZqoZKaoXvWoIB2k4btgamiYNxxTb5znRYwYH+nRKNGxVwNcoG9k+35OWJfPsgiye6Wy/6an9 + +08faOm4+an91508WDge6Lt+9eob+kP+fnTcPxCgvIf+7z3LOj/z09tufOHuZZ23Pfv51feKLYVd + 9w6vfWBnc8fu+8H3I4ntQBrsQRHgMin+Uz5JmQkB3XwLEpkQ+0Ch4CIfWia4K8upnZIHUsSQ0VZw + lsiHIj7lb5E5kCiz5dkxvaN2y+cn7ysZgqid1IU6/U1rC8ETHW2WtPULX27urXFQfxg9tDZdvKdc + JEqWyy6b7OvZLCgUxZ2+hn5JFuuYp5EsIkSO2Ij9ktovROFpc8JVDb+QJPjVXBLAtm6tgwPDIZmc + mSkxMcgfyfQLOs+axOKxbuXg1BMinGvPn0nO8S7y+luEd0H6CDzAAqE9rdRrhRu2DAUTNw/uP33D + rOyMkfpg3fXten3x32al2IuOBwaC6yxeS1VrPmQLd/7Dz2678WdIkp957siSA1etCVe1W5QRqn/1 + fTuRVL+wfN2DYkvH7ntlqT6MpJpF3nlCso0ayjJVwyeFWngAP9qMAw2DOym80dxsy30Ia06ySqWo + /vUMxPW5X+Ngz5hsFt4Q0Zn+3IeifO7i5EhsEXJkNsK3IUjKonz6YZUl4nYFLBp6zBCubq/dVtIC + FII4N966ttpTN1DjSkUC/BUa9o+W6v7C/Z9rW5ZxmFhkjGi1XvuXis60szg0qxU/C3iiXdvaIf7n + tYHqQvxtp4N6NdSSdBQfc6Th91J7L75HnUf60U8ckXDpoIwno7XRWr0Hfm+A0CNTpSuoc23nPEsU + ya3IfAun/KZqE2VCdl2HFzAO+BE0eH8cg5TGvu5YDvfViblk2zkRdzdB/xOiSQGdS8v7jEQ3nClb + 5cq/l2mgzjdv/dxodsNAHc8qKArFY9pU16aW1ECDL9m1ZnxNd0XtuoM9FSNLavT4ezWrTrSOZGOF + Sntl95r1a7oryVjftUOVRpeb1/IW3uwxqz0hjzXRHE20piMV2aWb2gvb+xK81WHQCnbehHIGp8dp + iWQ9ybaqWDzTuR7svBvpVxvSLz/RhG0GwSB1OmE1MDzysSdcExpsKzJk+syffwwMG+OCL6ZE/A2Y + iMxshDoXwMzFbyjQbjPoi6+rjQGH02dWFV8vhdfUWyBr+reRwPlDs1K/USWgCNslsKy0f/sVHJlG + kUUrSNmMnzIha2ylzCc10Ul+0jVnivMlU3wSvoD9+DkrnC+3wnNBgryUyzzNe61Xf3nzhod3NSH1 + tTsDJlVo6YZcbn1nQGXy2z0+E0s+dO2D2xuzk/ffRO0uhRAXHt402RlE2elqatdsqEMSAYTsK+je + g0Q/zkMJG1KdP50M2vwamwWF1wWN1uaZtCrkKMuIHCjmGySyATMNp2e/t+MTyomYhfQLkC7U1YzG + FvUFK+wcU/ySkjGE/b6QmaXJDIUiArU56PEEdAzrlUqD9Bz9Y6tLh0uHzj9Cr9PogF1wWdG9N1z8 + SMmie28hbsBMrzqt4YiW6mouM02+X9C0cDa7LhIKccFpyloQ7FzDZMVkdQioo7kAGJij0owcaeBO + 7LzUNuaMcnC0sN9ilBO9COVkyppkykluweyZNxidM+4NJu1a+jX6JYazx33+pBNB8R8saYz6vQET + S/839UdaZQx43EEjS58l/5NWmQAVPaWUUeE56qMLCs6wACHN+e/Qo1odfKpTn/9nqc3oXTaEFrBN + ezHb1C1ZIhtKnnScE36DI2wnwD6rOd+kXWmcVJZEnf5z7levIzmDlGe/mpUyObeYLpk0FrRDbQra + HEhBi1Mca4gGvRGLmjlP/TcScsgdjOgVWvL+4uy6Im+khiQWSasuVpMvqrRKhjE4rMi/rLs4Q+fp + n2L/8iGWtd/Q4etId9Bata2W48jBWiCIa4EWruWBMK6dJv9a0BOxmIEgOQKYf6JJ5pubgG/WyUet + dMQEddM0pSqYBduPiVq+lmp+ppYkasna2qr2imkSqcGLQTIYZDzvVPW1vsINMkS6VH+CiwbG96wf + L1XfnEmuH8/JtSgZpEPrx10FndZG1tp+LMJ4QTygVSSCpJVBY1Z53hGr+rjWV0QY154uq0rBNQTj + UkyqBI6urq7M+WfrZIcvf8JgA8FK1tsKaSqd590up0/ffM9w997hVNu139p+0FqzLNe6qbeGU3Fq + hnV1jG2t3fQPK6Jf/2znRIfviuXtu1rtHKdUctyafFeka2v7wO6+SFft8joXstwoQTc4PM6Qx1S5 + 8sYVZ2ypfKJrtKMTyegoktGvFHuICqKVOIXZTLSyNIF6efOkXmb/62XU4T1GvX6aPFtwWZKw85X0 + Q/UYSDEJOzRJHheVUZqCmrBo6usCjAK5PMWpaJ+rix/IoeYxxSA2q0gQtlxpCzA5h/y467TULwod + C2pR6qqAvsjwDkqGF6Fty5VZ35jlUjMsreRSVMwKVisOKX6V3XL3eLK3qyumMrosZrdRiXIflMgZ + VfH+np745jtXxR+z1I4V/G2FpbHOg0vaVjc4yDeve/JIlxBtSlytktgQlaKxFOBf+EOiMcQvO/z9 + 65Yemmg1VnRkikdHV7VsOQCeZg3C2E8/T9QRP8F+0I33O6SagdfkWoG3pmBDepGSq/fml1pdfEcq + waK0BV1aT+odb/oKGl2PD+X/1JSpj363Bh6QVut6gHpUHlMPQiSSnMEvswUyZ+St1gLnc7wpSgOY + YITToqmvhn5XhEFOwiBqGOW4qB6UQhLMSC5etKeUAhDlPELSTylYR0v/6vSmBybr2vccvSI53Fln + Vyspo84Qa1nZtO+mQGG8JTeWT3KwV/1PgkPQOSIeY+HAietufXp/M+8M2vUmuzHmC8QDpx9bdXh1 + MpwMqUweCVXF04pdxI1SNe8UsW/7EA0/ONnTMAS1c+cK2mxrdgj93WeOrgHArPvyI0MjVPVEYYIa + mRiZ2LDqzb6DPRvQDAvqawaz9hl9a497mmROpgaXzKi6cBKWz85k8Ksg1ezi4F8qu82i7IZ/FiU5 + ZwTscZyGEd8IRUzwExRH4/EPrnpTRFe4Bl9CJ6JrtNpnRHSVFFwG6XVqULVkRkSXwvlcPpvM4Fd8 + LWRHwIIgGz2bMVikvEEJsbO1BLKlxA4LIbk4ada+IFkwi0vGMk9+VqrBaq5ae2h09NMjyTfAvgj8 + Gw1dtrDbolKolDSrd8cyru4tBe8+g5FR69h9jlRHIt5R5fBWqxWUkdNFGodzC4RZLvqC+LkhS5Ke + cnUmO3aNVFWN3bJyPSs4TWF/0btng1qjVujtRm9Qp9Oykf69m8mP/GEUU7J9LasaXO5MV0XjcEZv + dAgxnzfsK1cDc7nCHPnh9Y1KyO42ovX2sGInEUXZ3VPY7/jyzaTWlQNvk4NakBzsSebATuXAbOWe + JM+h0C8trca0vAjT8iJMyx4oLS/CNJg2jSnQpc3FXIy+AoySvQ+5LuaEflAxADEtNmz5BVWdkmUr + aEod7dBzSrT36aHvlIg7Q9iLDds8Dqfce6DkeC6ojEbLE8cG+mFWcJuh+r376Notd62KZzbfs2Ho + cIE1+8C6qR9d8unOPLJlyLa1B1oLXTFHyZTtGxwbPHxs87VPHuleuoTSlsr+LixFVmzzwULnoUlk + 1ZbUIHTHEbpHkVdPErXEOxjdinR9vn5XPW0CP2DyQ+mjKVAJO76VgK5U0o39O7Im5052Jr+epKD4 + +CT4iVpGNoKMbOvwey0+Sg6eAbwDgcrnbmbuZqhnGPJFhmQYd/qVaJ/9nY363XpKr37HPSinXHO1 + pZI7+V1SMnq4rhsLIMhUPid+Co8RTb+CfIve/o5I6Hk9ZaD1bvU7oluydrjqDPqNzzLll11B6H2s + HsuCpY/GHBeOe7t2DxcmetMcCthpima19WN7Cru+eU1Ty56vbtlx/8bUo/QN+1rXtQUpiooF+q8f + q7I4LazeYdSZDJzWYTe17Z/ef+0PblnaufdLq02H7qsamGyAvbi64r307fRPiDZiGbGBtGL8LcZU + N+hytwrB1+3nTeRAdzY/ffEswJmXtRgdXzsFX+XZIdQs6AxGcmDIxRiq6SzLAuawTQ/76zrUSGVZ + l4vNphhwUYVa8E2r4RKr/TzqtroiUtCiY8RQzdKNfb/hRt+yWDY20m+39FT4O15u7Fv7sn9IpvDz + UnHmryVXn8y+AO7Hhuwb7KIL6EP+hST6L1l6AUsaw+Nyfb8ROYtl9C0RBm+h3xZh+MaOl8XGPv/a + l0V0CZnwz0sBF//sbESATKTVKsUD0ZgSmT6rTa69KMmsAexqfUPJulptgQwUZMwGYbC9GI3F9LT8 + jr7dZLgl5M6M37ysYYvLaGuvf3fJ7pGq2qse3bPz6OZKPlDjr0lnIr5w7bpbBhLdPpIXhGJxcry6 + O22bXFvTk7aNbhh+25+wq498qn+yzUVfG/KFV6WXXT9a6bEaq7yhKkpDBVqvaG7bvbImUriiNtDW + mHU4BipbN0Yj4x2D+1ek1KpA8c/rtvkbe+NXbPU19FxY35SnVI5UIm5pX+KpbsO2D+nHw2h1thLL + ic/g3DDjXQ6/0Ezo9UQXrCRd3EOMNPZm2pZ7mVA7/LJRqq8fHU6GBuzvKiSxSfZLyGbRKjqDN5Kw + h9OV9UxB1ykx1ReCzsiXhQYU9ndFhSwUyYahEebM2Hz6om7exgtlq7u8TWsQHxFrtozWm1U0xSjV + SnWqd3tnYVOHP9HX3R0rmblE99LuhMoI5k9gLzF0kZ1HN1ZqjRadgTdzZnSGyWFytk4OTCZyYcPg + 4cc3733icLcQaU7sVEskgrr4V2z68iigazEmkOlD6N568SNyWJEmLESA+KZUBRoaCu0K0VY5O7HK + cTN+b8JHvLCs8iq0yj7E+iS1h3ATlssVY8pRtgVF2ac0PnhKBn4gbMrB92IH8+uZpGzfZN8iPTLg + gJNOitJZyJM8m6xebEPFBCEBaD9Se7JNZZQKCksRsKmyuSkJ/ztUWghuERxHWCnMZcnqpopEDv2P + 4q+jCIs2+qmyfR3y7JRGvsHSvo58I4vv61xy6bIrIgHQNBIFUboSylEsxPBs5e0uXHm7eKVtCT1i + Gt9RV+mO5iptu/53tzUX70t3pXgRrbTlpBdbYZcRCt7xUyFRXD0Tw6Uzu0fIrkufAJBqqcqeFHhH + elIAJVVerxU1vd6MVLWK61dx6Sr2oBq0lk8vhzqr5W2XPoghDXvJAxtPkmeJDMGjSL6/L4xj0fa+ + tq5UY29qwDGA0ZE2UcqeRMnJ1W9CrlSjDNEL/lUh17F+Hg0yJfb3tePR9OL84eyl8aQ9ijKIcRzK + Cp/wQSnSlXkJKX+zKF5EMkGyMKnMlZ1Vub1LgTOzBUystXJJVe7azpLEYJPG6uHZgc/3Nl7RWc2n + hvu7w6s+1eubFSEVyq3vDK9eeeHOy38yp337Vg450+3xms4KU+vW2wckqdNfRVLPENNY6gZJ6vCS + ryUrFpHsZZ4BgfTZq+X5UuE9LsEvq74nz56Wiu29AHZBk+qrcIR7S+ICv0qmS6Lh50nIdSyFu2jF + sj7SPtnflMd8+C30VyXcjSp7VW9128FLgX5wcM2BgcAcvIbBTwITgbgR7ChkxK8iFGEv7HmMozuf + IONGMiGQUR0Z5cioioyyZAUu2/LKAblXBtUrR4xeOWL0yqB6wb150xpSYwYewgyQmiEmNQNLYQZc + zU9QGqg+PG0gBncjcTrgt/wMfSGU+8qkBGTJMqyldFkqaMN/pM04cko09MFmHDXLRvw9m3H0q017 + v3fNrm9cXZ/b+9296NjwmKttxxByZgFXfsdQz45OP/mHq39wW3/HjVPXoGMfOh7sPbQ5V7vh0GDf + oU252vWHAL2jxfvoXyH0gLM5VuJsAvUaWdc0sq5pSnZQI+OjAaWzWSS6BhM3uEpTYm4W5Wt6+aHL + 8jWfTNegnn+LrllE7S5P13xhfbyzvRAu0z+zxWVkEwODw6nNdwBdk8V0TVesc/+StisanOTbn3rq + cDcfrA0V20pWm3m75NxvqGhLWAaOPH7d0lsmWkzIuxcfGl3dMnFQWuHUNzFreRvmFXbXkVGDDOnc + w0kytAYZcwNAa5QflEHGmQCMCSdCPFJQJ/uiBou/1zJAyGaWTJ8pVaRi+I4l8Ykace5Mu2xBF9Sx + LLZWMWhK6puUUq1S2Txhi6O6rim0cKVG2ptyHl0g7OEYmqQ3W72CWq1WmasGGi58/9K1eri+M2ag + VRqNWg8VDMMXZ6hfIEx6SR6vVi7dn+8f6r+p//F+RVmB8IdyYTBepe1AcpkWFA7jgmHylYJPqhLG + 9cFg9OQiYagPhlXregL+MWqo9QUKmCvgB5bQ2ygaL889zlFc1e8aNO8Ky4WNwm6BloqBfwsVu33W + tyRlnS0DlouAx+H5o7Ii4LK4qRBpqPqdKGjeFQmBF/wCraflQuDf4irgPoX1rZIaz5YAQ3b4v6kC + pn6RXX9oWfWqpdVWDQNVvsn8WGNFZ8YVKyxfOVyIJUYOjIR7mhIWlqZpVqNUB+t70xWFhCVeGFk5 + WoiR+qUi0hKbwxz2mZw86/K7jKH6SLQ27gsm28Za6jb1VnJGC88ZrDxUkVkdVlOo2h2ri/uDFS0r + CEmaip2KXcQXiP+S6hAayVeISWIdwryd2E2+NhVOmA7cCgxak8Fh2Nk+2W4yGEztk8zgLcTggR7f + zHVdjet2dPW/O7J8ZOPI7hG6aqRqZFX2+eiOvlVvdQ3eaphx9Nw+TTKYfUQWtZxA4yEdzOGSm5fO + GKU80JiTuLRXoWCAx1vJtQd6rvPNiNKFRvqRZEb4Ef8Ikgy+1o7s8yK6Wteqt0R0PYdhRnT0qOGS + Jaoyv4BJSwpSPFJOXS7Kl1EL5WX5RPlabX+LnlPspBiW88XT1u6JgveAwQhPne53VHUk4kuqnSGP + iobt12BdX7mQP1lFUsuvanMkjVZb9brDK0YOrqh4A55gNRrerO+xRtxmVqlSMmsFq6DVGtTKSP/e + ZZS+nE+r6UoU+tx+7yLa0fTJutW0aWlUqbT3RDt2Dc8j8TTjMomH9yb/RO1kvkc0Ebdj+5kghFBK + tgkp2VakZFuRkj17SrarKTCjnE2Xmgn1eHQztp4aUCNWUqMXwHBmZS7thTOYwEZDz4joXFvBppsR + bT1sDVYCVlYCJ/9Cfl4FbbnMP0lq1E4V709U2bomCp4bJZl9upQOvAkEKUK7odsWdptVCrWCWesJ + 8vr5WP+a5aConEONBRhdvAgY0X9SpKko+S2CIFgqQn0ZfjwEf/4Kwq6duBLn7ul2HnKYpNebNMB6 + 5Oi6ZHsPn5xprusxA+EYGVRLhOMLaJWR6Qxs7kK6jmsldejUuuSM2Fyo64mYMceIz8cco/MFtETA + fuE6yLL6wE8mlkug0d/yWlW4XsykKqbLoLg8bvRpl/P8g7O+xjKHiNETEC4Ln4wL80vmP5CRelTG + RQ//ikBy2WpAxafr0LnRX6IuuYJY1tPe09zs76nuoXpW65MzdT1GUInI4LoyVUI2KXNmPJeGtPBM + OlvG58vQOaRhiB6+h9LSPXWr9QAkgtEow8ium6doyN5keGAMYcx5CrcA0UtNTwnRuTJMYTGNZH6p + ErwJsCJ5b7G9DHCKZg3e+OKQk09DooTCABVm9Y36N+u7kYmwIBMBShvg9RoZ9TJhCGZBp9NdThwk + WXq0qHhxcc1WjmLNnpI0W0GVNFvZjiS4gziBJehrG8IKvSOzQ79jfHyHnnYtg38foqMGsvbjEdco + 7JDYJgZ7Btp6anqSSX9jdSPVOES4ZiI9DIjSIjsXWZB5yTrACsBeBYsTP/09gYfyinNjEY18IxJr + Y2SIiLhmxEiPhcHStJR8x5ws81II9vcui0B5mejfXljkZPnKEXyXWTlzYqSWeGyo7bBBjW66TJhz + ykFXlS+sT7BL5ZK8/MosGwDkeB/srdBPzea/PpT1amMQx8UgjovBI3sxzFTEeExJkOdOSRGxT7b9 + Ptn2o+NZHEND4wT+YRg5qPbJkaIPNERtSvXGtApHbxhlE3MbLFJRqBzEvVRGUbgKarmDPoz3V+a2 + VWbrRBfsqiyo2qlvmNtfeZg1eiw2j6AcfAAnulADDXKwpXuq2/4/aWcC3cZxJug+0A2gG0B3o3E0 + DgKN+z5IAiDBCyB4HxIP3RQlkdQtQSJpSj4iR5Hj+xpbsmQ7h8dx4nHGnk1s3Rx7/ZJ9z0lmJpY3 + zouz+7JONh4nfnmZUSaZWUdxYoJb1Q2QICU5zowOgmhUN7qr6q//q7/+/69jXUqDE0C2Xr00/71t + w9qWvQ9OYe4KSC/8v6EdHb7NG7Cj1RYt9+If8WOgFqOoVradeRbBzAyai5xSBJbPiTrkXxyoqVwb + xvKrYdmIJL3ql+IbF3+bb4DBkWAOzaEBFg0SqDsIDrS6Ua8bdcFfcy7U60JF6aiIekU0wKC3ulDX + /OIP8mrO2OsSAWGDd7/Kq4FadsG1HPgOtpcLXl8DTnQF+1y0tY8erLibSHWPRLZJ8+SI/A+Fs2W5 + dWAMWMR2EXGhLCF9EQ2+aOkasl9KBIhbGaaVSyHSVdZh3txQ9srBj6EYjpWuSP44jqBFpyi9pSBQ + Fe8013h4taKkwP+EUbzLZnZwSvxZhZrSKD9+EfrfKFQ6Ct+k0atx0O8x8EO9YNVosA9g5BOmoqV2 + ATPrO0G7eOXIrr9HbOCZ07BObWjIhgqScU9A/bqMDguoUSucmDRZUUsjeG22oM4+C8X3UQOKIWSg + bFSD0XARuTpgtcAl9+pCZVMZ7JYuXO6ODbwf+jCnllyweAk0TQYlVn87WVtnFTmMvFPN4qVvqViv + w+E2qAkUxf9Acm7R7uXI0kWWIzQGHZpV6Cl83CjoCFzFaBfi2I95moAyDW0Indh3sDxhQ2KA0x6R + RmSlsQluB4Z4PEhqHt2Sr2F8Z0TRZjwpxtFkPB/H4nHKdiY42/AEdQSfK69ySskdOMnbt3qhwCf6 + zhTByXHjySISZ+O/jeMaHJwftJ0pBmephieK0jXKi51ln5nliBT3Tf1llmG72l0Gy9scLqtvW1N0 + IOMMDhQ71mud9X5fS8yh0up1zbtaO7dlrfeNBpv9+rpoNOfF3tdoaG3SFzJFc+F4V8zksYXtWr2R + 89h5g0OoyaxJnNCYRFMg4A2AuiqCunqG5BE/0oCMS3VFOZOvoZug+Qp9KM8hvJPSRV9xz1oO6ebq + zxJHKsaSbLbsBC1VCizljr5SlMsR9WeLoGTFNJJd5cmyemSSe4OybLEzyoYR7Bm44m6vi8cEm5s1 + 6QiStRoMVpao21KfH2u0/pXWWef1dSeCPSFPnZPFr3XPDkcok0do0WjhQgpuJ6D/J/hR+seYLzF8 + oNPXmRZDmdfjMWeqA8gD7CUCYUGSyGg53s03D56YoYxP1bifZmbxL0SDX1Yeqc4EJQW35U01xqeK + NYz76SIzG8W/UIwqg18uKo+sCGuTIvyWWrRqokzKzSo9MSaA6ZN7rPm+hyID+9oMkaDfTJM4TlJK + JRXMuXoGB/oj7X5aqQQclNLqtZTgevLRobkBL0lzHKXT62iDnlK4zBOTE1trPGpOAO3ZC57qMyQH + pDwtR92cU1vSr6GbAajE0AfzLOc8ZFHjwVdMs3Vf0lT19azsB1ppTVjIFHylaJrV1H2pqKnu0LKj + XbkRP9XiPejEn7G4OBNDJiZbCluzVrF9R652NKhkpBYlHwj2BL0pJ6Nx1Pm9fXHsF3ILtidqE0P7 + W7rnhiJ+PxonVAocjHNEaV08LqY6PN7utCuShvLeA575MJB3HxJH7pS8kOIKuG2jjeNs/nl0U96M + 2PjTOp06flKES+NC6JQ4qz4jHKnEys0upRjUL0WWOXX86SI4RxEHYq5AbTg4TwydKoqzgvpMUTiy + IlNTdcTZ0jq6ybiiEyyvomOHrXzppD5UqPXn6lwUpdK5I7UN4pkzgf6Dnd0Ac+5XdHV6Ul4eUyBW + S6A1bKIZDW+1W3QaNXHqTPfs2nCwe3uG6x4wB1MOuHIeRq9hu0FfbkEGka1yxpxvISNoJxJE9Ogo + EkG60HWXayPgr8/WCjcIUiJroJDbkPXoxnzQpzidnQ6OnM4bh42YsfckE1fiGREmuxHzJzOz4iZ0 + 08m8iIrQ/UpF94q3IrnItquzct0BJL36421Xs+Wgjh+9+x5XTnzFvif5aeZrs4rTRfAFxpHTRcTI + gq/QaHpPFqVv+bn0LZn8ySL8HlDVIqrFq75IkNRn2VcBfFWE/e62SMV2+OdWwjPXLYSD/8rrF8JJ + svwO261VD+h1rraNaWejntL6xSfigym7p296oHdPuyMasIseq8nibttUb08YL9H0600NtpBN25Sy + R2zaeDpxv0cY6Iw0eRjF/7GY+IgQ762zajWUmdULGIkZ/Y3uYEeqxuRPi8F2hzZh9TSbTdlIorfe + RhLCs8kGriZgSKbYGm/pgAPMi2wBk0dkBBH28kns+yhG/Elan83LLWxCf4LYgW7fhFCIE7VesLAz + BJTony3H18BlU+uloiUvfQRk2PoWrDv+OlNrQ9XC6YcEYzVCyYRjrtHKEFp3Mu5yx5Mu7BdAMBVQ + OjGBVJEYBn5cDjscobDTASMise8j/wG0SdW66aYLFHtIuqvKuukh+UZueBf/QcijPFkZ7Ze/cHlA + R+Rvwn8NZL4bOSxJfMYD98SKt3BwrLMj3UDqDZTubPuseDY725IJ1c2E5sxz0n1Urwcm3suCf7CT + mtt1Z4vts1nxbHHlCatW/Kr84f2rFphWv4dVKS83mSqLffivwYPx8AFTabEjSDJW3mhjlHVpdyFU + eXSLx2Ou217bt0Gw1ScSQtPaWsNyLaCNvT2JWOnMzd5jggb8KdTHGxJ2v4X2to42yrWFHQO1FS1H + OHk5KP12hEY353WIXfdKYNZrFmcqFSSvwEHtLlWNLqB7pVhVomq97RNqY/npwXNjx2CD8uBRM42e + nmClEiwel6Vuor55tNZU/Yh98JFOX/dI0sMASegC4/1z4Gl4MOKXo7UN6IMw2gxoODVleZKZ9Twt + k0pVtDZjeRIobMLzdAVN/vyyVgZ7LjR0S+/QTJ87MHh0bf/hPt+jjK81Hm4NGuDr2g34tY6Z0Vhg + 8FBPx/RINDRwqC/Yk3bYUz3RcHeqZju82yL6B+wZcLeQsKZk+0CSgtVvlAjLgBghXlHJhFNB2GbY + o0uQBZ1MrlZDlkkmrOWi1ZwFS0c+YQlqqS2u56zc9lZrNBw0VzogoTOxbmv9ZMsyZ/XGgt1Bbz3k + rJ7ZoYiarzGUFggYg0SqCewqFE/QRLXJxNBBibMiqddjcZmzQN9D35ZovFuKRnNbEQYqZY2VeiMw + 62aMjhnj3PLq0e/ekJNFaAPUG8Xlzz/FmpHc4eR0EejbAK0IFc0YOQaM2aZq2RLCfg+vc5mUgAV+ + yAk6JUEStBCsKf3tyh7X4wyaVQoVqYOxCgXsO+hV8BQ55AF5ZMui6y+KUTGqscyjG/I1iCZ88ue1 + v63FajOnLFnCN0ud/Db3Aw7jTKeII9URU9tWhkzlfbXhk0U5oYIvc6oonctRJ6XlGjBecITpVLmN + Zac9KXBq241XZzJgMlF5q1jBnKBGrnpzW9Jic9ypIXFCqaBqghlfrC3c1pcLidmROkd9wEoT4BOC + NHkTzrpIJNefC+O3RQoxgWYYjdmo5TUEq2fcAbvLbA7m04GWiEmt0VLgE05DaFltyOrwCCaflE3C + A+rrZeI5pA7ZKLU64nEGYKuzPEM7pwNPWein+OnIF5SylF6RwpTf+N133pEI2+ic5gNPFS18nqef + KvLTysgXyoAtmb0juSrC5spaa4XR27RsYZT6PPoySZkcLmZi/VqapjVryDJ5Pgze0Q+LYaufVJAE + hrMmgVaRivHtqF+osQufJVSEQgF+fFaw1wil39TWMQpaL/Xp72Aw33K8nLVA7ZERuwaOp5xHjYdm + zDPiK0uAnSuHVsrjKVMuoBFfqULrXGWeRN7MgGNaYb/Bjls8erOWSO6ubx6pNZGszWCwsGRD1tUb + qgy2SyhdJw2e6CApiyxZ+oeevkQMLVbeg2dyYm8ChjQggXLcld7lhJug8y6VC+jWsTytFF0urXVG + O4fMyEoCtSSsAmTmpbirpc9lFSGZ4B2YgVRWQpHAvGCl2QNzGmyMCle8ilMGt93uMVL4awShZu0G + k11P4qcw/AFMxdoIA0xYyGhLOpVGCVe5Vei/aziNCrQZfJodPI8+p1SROHwOwMJ7wHO45PkPZJBL + 51UqyjyPPnjRZRLVJsM8+nBeQ5nsM0Y1M6O+Bb+1rPRWBpLJ8klVlRKWDBrlsPOGBnw5zKhhKcwI + XYtHwuYaBlWseVeJ6hxWwc6pFaex+zCSqxEEB4MSGKOlFSotdRYzMQaNAlNq6NJRDH1USYHKoHkW + ag4Evyx55NGIBglW8gvMXiDVuKYXyf3sigxUF9R4HrwXctafXVm2McgOcOhIxeGt9LLiStm/rXQW + XlshogPEvSuvfZt07V2rrr3rJtceiGYbw5FsY6R0kfA1REINjeDabyAYSi3+Hn2X2A4UXAjxST4c + hM+2hu0GtfzTt2B6GMKXl95DHP3pW9VqGPcv+fGtVMzo60qY89yuV3Koyuix2zxGlU5tCTqdIUGt + FkJOZ9CiRo9WvCHwVzV6DUGCLvKnrCtio2lbxOWKWWjaEoM1e3XxKvqyYod0h40yQZiwXYiIGLHs + JZoNg/vdj4CbZd+o8MMleDBvg3GRVni8WtPiqZvd9BklYzOabCyJciTvtdvcvFKtNnlr7H6zWm32 + 22u8JjWahhEFOPiBLWpYiiDAZO9jsSYg0LQQqKkJWijKEgT9Olz6GTqH/BzM2Wok+aTNdoT9EfQp + Pk/nwe8CzIdXNgEry6k/GvilW5kDeox7kNDyFp4zU6jiXlrwWi1eM/2YMxWPWd6CHQ9XalQof8Im + Qv4WQT29tngNfRQ/I/ky1clxroZ57NhlyuGxDBIM6IVXclekpQlYRfBYnpG6Ijh8A7riVtfPo7AF + xSBswaAIW3D1e1wUo7D1oqI7Bl9jC0GXfAA0p1WjscZAzTwF7vIwqBkaCcn3SMJcazCLoxofROAN + Rv4HrCZ1Hh+Ubq6cUGGpKx9OtLXE4f9DPYl4F/gPNVgXegGLY60Ig4hyDI6SvqpApLw6UDIU9NUi + jIxbmvfLV5MSaMT1XGm7HvxBv6rSqgn0o4DD6fc7SM66uAjotRNc9wqmxG8BGuNxUMsP43uwLxJH + q+XF5u9he4C8XJEqlrDlpfdQXq7UrZCXCreuOmIyYneTrFmvFxjSTBlcZsFlUKOl+1ccS/rx+yoC + g/7Pym+l2pXHWGks2rF4VZFW1K/M8NAtZXjoljI8mM4x40BPmM4SO67P8GC6UGTGoVOZ6VwRfP6p + MzykW469dvzzl29tgK93zd/acM47ePu6NXNDQe/gbevWHBkKYvyh7z09NvrE944W4eup731u01Mz + +ZaDpzZtenIWvD4BWWTxjxipCAKN0CL1DzM9j1nPI5yGnkcL5+1bwVCVyy1ckfJwwH6iydvhJxeK + 0kdQOS8JlqySlSQpmxQafOV5HUZSRtFsEo30H3mzjoABo2hYoeEEPUwvYlFDpaWkKXzLaVqhdQic + hdOQ38IIDIVyD3vbFBjtHwT124YckUdjE7b/Ur0P/EWy89g9F2hRzNrm0Wxe3ciZcDI+zmbn0aaz + 5DYE+qBAGwyXTYA6L+d8ktI3iNm4dApdrJxDwpPOFcFZAvQigfYUcNpy9qdy+AB4qlVhnORSVgel + FJz+IEEx6oWs1qRTKdSMFjX2jNXzQu1Afduu/iRN0ioFTqi45k23FDbcszVh7Zzb/C9YrYqhiF69 + Ta9Wcg7BKFp49a9bJoa7XIF83CoGRJK1m8DMQ8t63UJgcLo7NbX/1u5vqXkpon2kVMLvAPUzhjwm + 10891pfXDm8IDheCw8PBAg6zF+y/jOj4Vr5VaJxHhTw1sCG+6HYTA+PCPGo5S0zKrlOJq1lWdtiR + QFxeUAUMI43y0tkD0una4gZ3fLEoXQBmL7CArjtZ9pNKRMqeUjeLAJBSPCzZ+CtHblSfRgeO39F8 + y0vTXXObGjVKAoe8RqdGp7sKOzvd0XV3DH5Gw6gBhDL0TGF/X8CaHk43T/XXUaRaqcAUKmPzhkO5 + sQfGYmLb1qbc4XWJ4yMP72sxOZ201ugw8RaGdPlFd9vG+szmnFvJWo08gERPbksm1JdxekIegrWZ + GBOnM/g85vj6o92t+0cbNRhRN3oYSL17kVLUKfxIGJCulEvkXNzFzmPkhYBCgcTmMeKyKcK6tsZt + gO3NF9lt1IRim5RCo64O8iHsjlA5QKm6LBdkYclLxXJRKYOGVLaS42bJeJde6o3lLInQdcCEelCX + oo7XvwkTDQguXrkwT+u1JBit1OgfCIMr5vTUOnRvMqbSPqwUQ9/pcft+DINZCYCNPwYdzGxw2u0s + 3q6GMfsqRv3xIx7c93FJ9hxDpDwwbUhR7mEN6P+6GKwL1mls81jPOUQjzqPI+aYmIgN3Lo+OmZY7 + 1VJOmOVMGE2w9MUiKB6F5S8Uo2Mw3+ZyJ1qRd+16H6ylNaHlBCIwV4TMmviBrs9+Y292z0jaQBHQ + icpX2N2fOzgUcw/cvtGZCHh5u+CswRxqHU0Y+FKLq9c7/dX99RcPfm26kTEKhoCLtbBqwW4WO/f3 + 5ba1OXBCYfVhrCiqeDvvDZbOKPDM5ANw3D++eBX/CSGCeVw3slcaPUOt81jnBY3Vqqmfx7ouI5r4 + YmMj4QWPe47fUphHjRUNsFwpFZu6uhEIFCgM43GRC0V+CwHLL6uEldnpFeXw8RU5AZWr3Ggr7sc/ + SR/++uzondtyfo5PDN3xwuHAYHuCU6GkRk35s2vrt9+3MYJbC2s3Jw+c2hp4RWgcK/gGe3JWV35H + vn2izYF+ZcMzt/cF+4sPPb993Ut//fDeFrVOz9VY9VZWpWN1a0787TjjEJjs7ocnWncUPFqzU3/i + mwditcO7Yd9JL1L4cdB3nEin3HdYbN95kjRz81j/ecRMcPNoy3nrGD1RTgqyNL04R1jhZxeK0ofL + eUEqS8VSBkxZEso7HRzHCTDhqSV1gsfm8rMoif5q4YyaURMGPfZvOiNN4j/W11ituj9dgcOGUsdr + Ff0Ub9cHfKTeDtcKdoIW/aGU9TmNdMm5Hv87EscscEMnzJKnHIzHYQB/qcxrWCdQ8HmsE0yW6puJ + yIJlS8fCUuPKE1qpx0uZu2TnRgYUtEQWipYtRMdCVcNmV6n7hji+MkkzjksWRKj6zZkMTH9ZiU/L + 4D9sveWFAzufnW0NrTnU3bIt76rd/YU9U49ti7vatzf3zAwEfzJ34OCcLbupdffhiKdrb1duIue8 + /97P3YcObrh7LBYauX2odc/GAbeza3g803HbWH1i5FBbZsf6Xqenf8MObHL95NSGQEdr1lF/YuG5 + +EC+zSW2FvqikwcOSJkeEHweaJ4kUkB2SxJQUwslAAadNQMJuBTIl9xuZQYKQBSqGuNZZfWoUF47 + lvq/O18CCkUJhwTQ/6PjSkHq/8rJ1f1fsXpIaFgZUrbKTonPG2rXHXtpJjTcWctTClKjUgfb1qUn + HxmLYdb2wY3JQ6fHAqniC3N3fGUq+LK7YzLfvr3FbmnaWhh8FH1z3X979pE9LRTL8zU2aI1meXbg + +AvjTI1J27TnkZGNX76te+yr7x858XIxkRzanWqe7PBJs6he0JO+t5oJuyQm7JKY0CwzofmGTGiu + MKH5L2JC/Hu1xW8cv+vFXaHkoW8cP/Hi7tArQuv+kf597TVCi/TqwPTFMhMe+i5kwn84vvmp6VzT + gSc2l1+BxH4TiMKzihDQayOyxIYwa57hHBwN/iICr/dsDQHJNFQI66cAD9+ouNJBdcbr86AICcss + A5X1p1dWw1S96wa4KHnB4c+SlFa5MA6m/iQJFBKqW8GOekEviHry12CaS3RCj1WYO1Nv5dTYv0gQ + aeYEjia/XYHIj+9Uc1Y4FoFZBf5l0CpNsrUZkuTBSwkP+Iuk57E7LtCmBNy2Jns+PM6mqxiyLNJV + AAkKhmHJi0VQlEyvQMeySN+AG/3XZf9YxsYvE2CkWkjrjIwSpxgNKvSP1bKTO1t3DtRpCVpNUKbc + 2Fxuy71bopbOI2NXsRSgntXImJsc7vauGRODLhVn560uk9djCQ4UCw27D5RxEUX2Alo8Bepgc4UW + a7H+vHbtOv/avH/tWn8e1wGdfgDQYjPXzJkyEi32rYsuiiLRN2761LQond2XkWlxnRhdLEoXWKno + b0aLmf8kLJ5qO/LSwfbZzU2MisR1WnV63XRnYVenO7LujjXHQH0pSVqnnpVQMTWSbpocrKNgiiic + UOqa1s91jD2wFaDiWHPH9HDsns2P720wOhyMzlBj9Nqcfqe7bUN9ZssyKLrzWxpCvRmnG4AiYzNx + Zr1G5/XalkFRmRo5CMcCEWjAfy6T4vZlUjSXSRH9EJAi5doasMWh5Csg/wFdWH9DUJTKsbDgxaJc + EijG+r+YE/F/NuhPqXiXlB1g4U0aTLmgPzp6VWEQY05X0smcYk2lr6ClFvQ7qzjRYTY4rIIWHwTH + oG+V6uMHlzhxN9AHT0qc+JmVnAhnIL0XwQyEFzKvoc1IFGkCCAjmD9GxVRMQVp6sVfHiBXCSBIrn + iu4moBwuF6Xzrp93VM/XbjTpcJM3hcYnu0+cLbYU16dZaOpW0Uoq3LO/t2NmJB4YuXNj62a/BI2t + cJZm0JdqPH3J6Rems+f2PTfdpLcIWi1n5eB2URaHxVnY19+2I+fUrIRGAktPPgT6wkGgF14HzJhC + epHvynXUv/jtvJnB1kz0o5GjOXRPDu3Ioakc6s2huXmsI2/Q2O2az6TRA2l0II02pdFIGgWjVcel + GQQVQaXDqDh5A5pfXQaXQZIaVDO/+Mc8Bd5omhaTScIvA2jndQAa2fajSGTbtvekGDeJRaXf4O48 + EaCSk02LRXA63NBNRtLOT4Gk5KdB0teBwp0duXO81cfq40O3vXDYN5iP6sCkDVXSatqfWVO/7b4N + IdzavmZj7f7Ht/i/ac4AKO3vAlCa257Lb2+rQb+24dk7VkIpo6e1DK+TsJTTDZ54sYylD0407Sh4 + IZbe9c39seTIblBpO4FMvixltlxBpUZApXvPI0ZCD6lUuCGVCnqJSoVPpNIlgxf+sgSlcYIxe61u + P4eR6K8XnuB5gKT/fhMkDXr9EpDiyCjoLa9KPNqA9KDPy3eage6yHEzFBH6B+2Ok58tH0pUjqcqR + VOWItGUit7yFYp+05QLodH1oslImWXHErT4i5eRIzgP6tRiC0nYcQcnNt/y7KG9+IuStkI1BdcOA + S/gDUnKjVKYR+n4aa9A1jdKJ5YPwxMZXsQ4EWfzRedhtl7vx0p4Q5VxJ3y5He39bypVUgP6oFLxG + IQkuWqjcdKFy04XyTReg8HAU9NWk0q1EDCB61wpEL3sP/0h2V12xUYRE7cvRjlAekEj5D0zA20pY + YhLId/2lIL+Ukuc6kn+1ZfaFg7v++nBTcOBwV8s4IPmdEslHobNfz/RA4H/XNK5LF6cBy7fsLobd + XXs7cztanffec+JudHD93WPx8Ojta8osPzKe6bxtM2D5w7n67ev7RInld4Q7kxZI8y1ZZ+r4wlfj + A+2tLmebRPMHwdg0CkbvFySa75QtbStpvuOCDw7fYCzIq8N5wAPKcDXSVw3ey1gPx+6wdIqmKOYh + A4CTVpJ91ch9Q7hfkT1VcR3yvmBIjhx7EdB9IWFQAT5UUeHcSO3kw5ujWPr0RPGJLYG6A8/fMvLZ + 8XyAe9ldmMi1jzfbLWCK6+/vaEXfXP93Mt8bDC4DTIHP6pn+z/3NuDPZvPeR0Y1furUbTKseeq4b + 8H0yMbQr1TLV4aNN0o6Re4Fsvrua8Bskwm+QCF8n5/XV3TCvr66S11f3F+X1xd/N3vLS9KGvFdNN + My/NwNdvBnummjp3d7gDPVPN8BUT7nrr8cH2e77/yF1vPTaYv+fN00eemQg2HXhyHLyGmg88CcOf + F/+IvqsIIK5yhk5o9eXPuySrb/t5u5w9cuG7cNiDrXhOA42+7ReK9nLeyMh3b2LzLe8KbETfpQyi + YHYaVb9gjRoCV1Cqj2jebNMLTk4pSOuUEB8m7qIwbY2ZM3MaxZeUannFEtzfOOD0iKIOaUGmK5w+ + uWzx/XzF4pu6VG8i43uguTd9VkrvX1eO/7yxuTeVVxflM6CxN32unOe/rhzdeb2xt+GTjb0mcJMq + rWrhAZ1RSxKUXvvDzs31BnOsI16/PhdRkzAblkLFZdZOpjd+djRkbT+y9evou3qum7Pq1SRgRqPD + Yta+3Tk9NuhyN0cFm9sK8zhpDZyWddQYowO7sqldcw9u+moA1MkW0N98ErffXeH2xuu4PZ83VcD9 + IwDt70Pm3mP6SO6Bn0zseUsZ2T+CuP6+hOt7CNNHle65ktXR/zKr+5qKX5xs2N5XywC1r6HpcGFb + a9OWFofYub/7Fjixg9t2FlObcm4+XEjUb+6KwQBHWKFsA6jQtbeNhBzpwVjLRMGLhntvHY2xZiuj + 4W0G0QIwzJooBMNdcQupsxj0Fh1hTXaFxIaQYHVbCZ2FZ4yslnHYDZ6Oqba6DR0xCifChS1Aqv2L + H+P3KrwAUJNlq27SxcyjixcCBIEk5tEX84wpYEteU8RcLEu5dlNy8s2EPgt5fQWs51lA6slrxaqi + QqUsAPaKl+Yn07oDk3D9Xj3zjNLgNMGooFIUTA8JOK9FHyQNzojDHXdonwHiRJaexUpPowfQZpf7 + vcrC6XsEWyPo7YJZh43QOkqSu4XblKwFG174ubxT8L/hAiChgrxTA/TeeWGJ2ZtkZm+cR9m8Jtr2 + S9AporuEqv50E1yXTmCLYtsvi9IphLCiHy2P9zcgdf/15l0ok+WcjrjQNffFjcmNHTGttF8SkLJA + dri+MJF3PnKfNehxsmaD1Yr+q7y5q0ZdmtWarTX68cd3ptGNm+4dT9CcgaI5K8+adUrOxImNQ7GJ + MZzABSf693abSjIk8OrSv6I4ikaGZkCfOLz4G3wfGI3qgF4synbeZrhNQ9nOa8jziCbzQTzOE05n + 3nuN35P/fXnIB4/JXW/qNcczHxTLxXnvtSK/h8j/fkkLlM/51MZe/wqw3le387Hxvtl1TR6Wi3Tv + f2yHo70pwqowklJRrtpCeO10jwczNnT0BzZ/bjTw0uTemtbmlNHRMJJKra0T0PWD9+xocOXGZu7r + 7/mrz8+sSypphrUI0HmG0lBNk8c7NSaOSoweGR7fq+ZMup33jrjdzWthP0os/lHah6WKqNvLRN0K + iZoDI+55YRe97wZEDT8DRA0/vBFRp1YStQ4nVUTpqEJn8lhcAY5A/2bhGsfpWexxDUcT+E/0dotZ + 8/E3YDZdQsPS+H6/1wvXcqCFdwC05X7QlpCoB5CjsoU3iWGShRersvA2voYZgTIvwGTEVGOhNZ0M + kkTkHcuennfKjSvlxLiBmddQKW2JvFO07CF63llq25WZMD7B1itr/GpELLfv/sy+p6emTk0lnfkd + 7QAHLbHxh3eM3bMpIqTWNeeBEHx/Ylddf9JsSA41T20SLQ1jhcKGWoBtG1s7tqSNKN1+oD/o65po + iQ/35p2WbH4g2rizP+IrjDdG+gvNdntL9xD6m9waoy/ldNRFo5bY1hLrb6xNWmsaUim72Bg026NS + ZMEoqMlBUJMppFuOWj7rBLNS/gLCskhO2qgmZDRamz6MFz7wepXxPdZrytWjRpX51wTKxps+LHoL + HxSl4krrtfJ+SDcgRPLm5t8qQpSTiAzqAh37n9gVXtsW0JEkplBShNqfXZMcONTvw0yNhT7flhPr + AsmJxye6p9e1+LgXHdnhutSalGVqt6O1JYVlc/fffXRzWsOyNMXotUarTqHltA0TJ3q0QBTio0e6 + ez8/lXW2bJp9IDN1/6jH07w2sm0PxcBMyMOgjoZAHUHvhbaKL00GdCsRM+bVGts1bo/vD6vwMK/h + bNeK3B7C94cbkKHipmQ4FB4/faDr8PpWPxfaevrgvpNjoW9YMyOZ3HBCb0uPNORG4hymP/ZPjw+B + KfQdT2y88x8fH+p/+J8emvvKznhb8cwm8BprLZ4BkvwoEJQooMM4MlSx/+ovOzgOEWgezH3zlzy7 + Q9yHZd6CvgFvSEoPugfweQ8skaeKoAzJfbhEWFVuAkvW3/qbWn+jhJomF14laBWhUNPE/32fM2oU + cAxDVQSY3+sFh578lhJ82g732VEycL8dVon9/vNqlHGaORNDE1/DFTh0wVd+PAeU3eIishs8VQq0 + BYn/QA13jZkCPBUHPEXib6thf24C41fx+vVctGKle17S/PFrisin0/xxoPkj/wXNL9vpijxzl5p3 + mQUnryzlaBYwMqEm0TtJvSPqdCUcuru0xtI8Vvo6uhUNu1xvV9Jzv00wdsFQI5g02BTNyapwYb+I + DSy8A23AQOfHqnV+M9D54VRY2uegUdb5TZLOj7e973YT8V3Ch39O58ebZJ3vbnu/KJ1CCB9+ap1/ + ozVdSemX7XOx5kNfnGzZ0R2mYcCXAih9d8vW9qZtBa+jsKfXWRvyQLUvwISbailjXWnc2hnc/viO + JLp+471bEzqDQa3hrAbGpFUagDpLjTQmupMWhQI3ieg8UPsACDibXl36DYZFhmekmJKy7EKtL0X/ + nY0ArY9fgNY4oPWRPINoGn8ZjxP+D4HG/6CiFK7T9ny88ZdA2xO8/0NJ03+wrA0+hf1spV/6kqzH + tj820T8z2uhi2EDHvscnfV0Nfg1JoKBzKJViuie69nCPiIfv27j12KD4vCHWn+maC9syI+mGtbUm + dD1MKuXJbZ29u6/jobtv2VCv0jA0peU1vJUhaS2dnTrRawknNhwZjvel7AHL1H2jXl/LGqjltwMp + aV+5mpsvr+a2lVdz0+etN9TyVlnLWz9Ry1et5raDhyFKc4QWqHl3gCXR5xd+B9PWcjrsKS1HLSn6 + v6PBdFJW9BRv+//EfQmYG8W1ble3Wku31Ita+76vo12a0eyaffMy3vd9xRY2BrOYxYYEskEgCxBC + 8n3JfUlYjR1jDMMOYRK+QJxLAgGSvHzAu7kkuV/8BRJeuI9g+VVVtzSasTFwX957A1a3SlVS9alT + p/4659Q5Rnmpp4hFcPzmw/ELEjmir77SJ8AZwkiE4OgxLoPXZYT/afMooyFBdJFURdTmu9oyiZCa + iv7Kur33VepjVvp6bWv0V1Xrdqr31So1Z6VXn3OhV5/fpjv/J0+vumlj3tuzrqd1suRMrvjc2tXX + Lo7uurBnfa/3+dXr160xpydaly/3OcvLO0vzcrZde3fvAuavfMPfv3Ugu2ik22lr75vX0rllNBEZ + XFtafkPW1TW4APyxd/78iqeQSVojm2vmYHs+67Bm8p2BiUWTylrVo/D7cln7A9nc+CBHdCNu56L9 + /x4IaMpvt2y3va1pZva3XmlXOD3Q/+/YhFt+u9qyXWN7u76Af3LjrWqu8bZHiA/tvnVzfKwzIuhI + NQu33W0TuUUXjwaBqdg7nthwaL4/te7mTeMXLW0LcPc4Ib3KC3JmKTNRHt5Ltvff+Jn9y/M6TjDY + 3SY7D7nE0LHp2iEEYtNLLxkeuw7Pg73X57bAlTvctSCWGiu4gnWfPtqPYCExLvOOmcxANvGSmQcJ + xjEFmAf5JSF4UdLPouBeb8n+LTz69KEqvwR5fjCNLLLn0u+Yz3br6z345DVXn7is3H3wiUPXwOuD + iYX7x1deMe6PT14yseKKCT953W3vHd6w/N73/+WO949uWH7f+9/Vf+WF6zrnf/HJfcq17tdHWwk/ + UZDnqZ8UKzqryOpZl5yEHlltT+JV+2E9W3EpSeibrLT/J+58ep1q+FaW0nusRuzOB/dXAIU0qnvz + Qcr2EFfVdTtrZnQ71z7CiuV2Wb2TxuqdJUi9E5NT0zfUO3PtsY/IjZCSJ60oeZZgJU+snri+oeQ5 + l3FW+gROfcg6W6479X2w8oI20QV3TR0bRzMMfGaaVOvEjuV7etZ/eV3aMnL9hSfJDDLQjqOMvBrB + YzF5rFYDYNZ+7YrNyeT8jkAg6teKbjNnFTkhHHKU1l451HP1V47se1VnVCKvUQcglZqstMWztD2r + m6y0LLbS/g1pbVBWZLaRFfmTWWlZ2Ur7N6z2wemP2ab0x/9czc+B9n337+u7aEW7qKUpA8cWJ/cM + 1x36DtSttHsbDn2bxgsGRfMjlVbs7VvzxRmHPrBr0Zd2dJo8Ps5g8liCTu9cfz5eE6isbEP+fIG4 + Hx1tMViNvNEfcmaW7h/pvmBRO0vS+aWyP98HKhVtwvhv+wz+M9Tx3z+OW7CFFhJawXWLmWUfCQGP + y1ZatsJWm2qfCwWenePobK8+lcn4gpxy0Kg9/XbDq+8F2uRPe4I5L/eCJCGvvjXgbnBdzFt7ox7e + HfjVgtsqeV1OkfyfWoNOduz7tZ989fSEwmW7aA7iwMvqup/pBg7MN3Q/LRVduudvCNQtss1mrY+A + griNHkLBv2EouAjZamfz06dGg+oZDRD28OvdtTDDaVQU8vFjYgPbRs7j4yd6fWEb8vID39v9vb3t + gtXK6iWXSbALWqvLFhjYNd6zvturwo5+vN+nM2Kb7e0kCUBp8xfgXkHx9CPV1DOE7NP2AXUQ0q0J + BS1TUFAJoSC4B0oddyxil50DBaHPIApCH/5TfNpU00a308794+d6QUupDciAqJNcUiSCTIiw74pP + G+z7jwgC+2z9mZqCkgX5bC3DsXywVf69lspf0dq9BA6V7phm9gjjLG/YDP9eNVD5K17klyAzju7B + quZcg/r/0EeLfGzJ4e/etKOLFcxGt8PsFNTYR+vutYIL+WjduBj7aH3v3y459EPZR6tr00BoxkcL + UkIikoDFlLDPCUUbroeiTaEolGFkL02BpiCzKGKzCcU/MiFzpsmG7h4nU2iDLwe48ynmVp8S6dmn + BEGC1z+iUxghFDmATFV0jA8OSIWgUPDWig5ln2AWMiSB4/PwOAg0NpE+g636BEMwqRanjEHCTRhE + NALZfomC7whvrWuOEoyNmE3xbJ11kBL+OJACB0vVhFFU1POZC3943ZV3b09mqz+89ip4/SHnTHbN + zy7b1W3x9G0bLS/rjtl05Jdu+/uxTSvuff+7t76Pr4c33XnZsjb75E1PVL/64rUdoYH1F99A1P3N + IFZJAz0ehVDIA0JuEHKBoBOEHCBkByj4jhXE8egYfQKySKOMBWhAsoBAxCfiSkzBuELyuBJ3Kq6Q + PK6Em4pPQSTEeWyokY1Fr6yo2J7hFduiRcX23FT+DPoKHGpJB1t8VwQiUoX0Hg8ujgtTQFOHJ0gb + ooQ/OpmcThbexbc/VgzIYN1MQGFFVdJ7ogq/Qo2+YwapnEtZ8k93laNev42RXeUEBNBUKoCSzP3j + FuQqp3jKYZT2Ah4TQ7wVJD0g7gYRD6hM1V1WKsCCZoMF2/QtiJgWyM4NOCePSPtj5CGClUnIorwS + LIp5/YlhHjLNK0ivbopfhyj5fx/0zXHJ+8eKC9qNrtJkEafjQpoWktbaOlft7pRB3+f2niQL5wd9 + sYDW6DHzFoEzh4I2DPquuuXoxRj0Yb3MKeprCPUBJevbakhoFyL0apDTQlLmkNjJYWrnELVzcMGp + MAgWLrBJYH4FRfCKwCoRFMGrgRS1Qj2+Lm7pRC2dynSAMDJ1gtCySjYqJF04he05ZSZxaLglOHhc + J8pI0FlBX5LpBHhaKNND9sj4FGAUiagkjiH2SsP3AmNTFHze2D7jd4HCE3QClvq0UHUmstj/F59C + Uq2VOpbtrTT7FIKLV92yvc3s9nLYqdDlC0O0uizftrLShFZXtcXQ6ZMYdirk4fZAgpySXnqpglY1 + pUnkq5GFCORlGa0CfC6u0hFOg0gKRFtAKApCERB2gYgTBLH4DNtA2AoiFhAxg4gJQBgBmSREg5AK + JJ0Ay1KjLEtTFhu8sfgEJYeFnLvizUdQbgtXOi1Mnfmw4oY1BDTtBcRTAgoCKKBFUECR/4THSZGI + EipZkqrgAlZP7lNhUHYfVTZzfhiN1jDEBErE12ReRLljcOKy+syf8/fPBdvUy8g10iRH0T79H3rB + APd2jAb8kpY8LR5/ziN8TTTX/kUG2xf5I7V36kEAAYQeHpuEbPqUER20pVFex58EyT+d7pC9I09R + t0PU2EN8KMvUaBuItuKQ9xSWqQ/LIrVNkZttyKOJhdOq7TFI0xgcpBgsjaE5GOMW5vfmD+WpvBsN + hBsNhBtPbjea3O7HyAJBwG9RUAPKuERUpCkUAF8A82Q3HojQWzre86E8iXTLHGC/TsZ9SSC8qszO + 6XWvyBNVHgY0Dg3PzJaKWA10vIcyJLIU/razAD8Om/1xmP/j/TNb+U/jnwm+u/O/7e0Q7TZOLzqM + InLQdDt8gzsaDpozYF9x0IR4WfHQhHj5BYz1t8CZdhRj/b/KMlmEMpYR/WCeKMgY4Y+KEMRwQ1TC + JsLrf2KO34/DMgpT9VYCaiUorQSlFf6YRZEfLxXQ9FQrQR/9da7wgyaHuNexI5xZQSVN2WPwd8Lr + mydgG2xynbUNkWEJHsGkEqWxHqxR0c9+7M4kMpOE9yMcG2mG08mujTM7E16n7ExicGsm6ZSdieLd + CCn9M0K2KJ6i7lJ2Jn/AM0SKp0GCRpnn4xRIRECEAYNIWPkQSQbhkmior4buK3OgPTeWuyBHJXMA + Lotwz0pwnI9ABnwsyGQXw4fQTOhEax9s2onwnBE1v7QTtHYOd27vpEKdoHOKTFa4TBiEK3/1+TSt + 7yXQpkirbIoUrSd2msUpFdcpfrP55rkBZ0eF98GtEvJ4g7umBN4uaRvbpfOqRM/n8tZa93hLLupr + MemQxxsb615c+AQebxM3kY8tPfydG3d2soLR6HVYHBzNG3l0nsWb7dx+05Kz/N1KnZsHwyk0VqPk + NPkb+g+kRkVDZPgtWBIkXwSX0r+HJWqlZIL8BbkD19EoJX2w1SpcolVKwuSL5An6DViiU0qGYJ2l + 9G9gCaOUrIEld+JWrFKSh6024jr6xm9Nk3fgOgalZBCWXI9LOFSC93dx8jfkPOyh14iFdBzHQnoQ + xUJ6jj8QfI6++qxYSM9V+QN08Lkq/Ki+JQqfvSWapbYlfxNdfM3yZVdNRmKL0HVh9OuOzGBLfigh + ObODyfxg0vjE2lt3tZd23LZh9W27Olp33LZtyd4Bd3R0Zx+8uiKjO3FkmDNZcCk5Vj+N/SjhB0ce + wkrbKSAdd11BX6WcxpYVt8ppbOmhKv6ocRqbPp9n3qVaoxMFeNHcxhkZZE3UPEaxEJGa7AbVlEZH + Q+Si05D7JzUkg46+Ghh6L1CRgFJpaNjDiTOt5A5I01ZZK/4opOh7J1L+lJ8oTJH9FUZnfT12QF98 + jrpSPjhT19Ji2hpi1ter8GOq+FwVVpD3Ori/6jk+dx95UMZC7tBztQSLHD20Buab+e4AU+kMd6Z8 + WpVOTamNic7RWO+GHq8hvWJsF1ig529xe1R6iyhYJJG9Pbug0mrLdJksJjVvFSxOo93M+coLUsGh + ZTsHt3nQGPRBrlkFn3BB3c8uBX5ZMQyPhYbLoeHhUJni7FPgbxUHwY0nKhbHaOLoS543PaTHQ2ef + 7Ttg+ZHCUHgRTbafw8/OOe5JHK0SHsFDWijYrC/7bLXvAG35UYPhlPWyPXuOMzGtc+Fra5PHVAO7 + qhF0JVclF14ynJnX5kPaU0av9uUH4vMW23Kj2VEtgxSEjGZoycqu7lBvzg+3iyRF61s6RyM967rd + C+bHhoouc3lll08vihqWtxotLqNJ7GpzZ3yCmoM7GJNe3d+ZbpWsks1tMBp0equJcxVHkqNbBZJy + 5ypwBobPZMkT5OAcmzq4v65T/QyyqdvSzyqo7QrmqvPZ1G1C+tlqU9U5AO+TnX2hCuQJveEyrYAn + gbr2AIpCQdIaNXDDkQ3ZXTG7/jKWq71NfvCh1eH6Zj0K0DdV8Pl4u9nEgEfUGlimgYtfzAe+VcM6 + jCHINUvJXojt1tZPvlxX96IDv6jwBBd4Cp2Pfi11ue3ZGRaZE/BK6gg8hc5Fp1pfq6Yup23PNrNE + MvvpzrYoMc3IpakllwwH+0oRvUqFsrPSGnu8NxPtS9tMyZFCpOgw8pIFXAIxrooz1H4rpW3DO4cC + ucrmgaCWExkGbn/h2q3hjRwfaI35sl5Oa7SA+VaTlrNybt9DJPB2LkPr9xpIgzvhzEkTFVmDfiza + NgV++BBjszGZKXC0YiUYnKz7nSIoHkkk6MAz4oGup5uosW7fHNt5onikCiuKgWeq4gG66+mPoEdd + TKg+3nZO3hkar44u3VNx6j3FhRdNWDMJn16LZJ7WHsq6ywsLNuBb3Tm8octxC+crRlLzPVKoLRwt + Bfh024aRWNuWL0xmt21a1hemtXq9xSyaDbRWqwn3rciZ3KHKqu5AKSjZTEOrW62WcAFyRh7OgY2Q + M7xyZMpHCQH8VfaLA++hzEuU8TXH5exVczXFFR3lML5WxR+dzydOQWPkRorSqmpvUgbJY3b5eAqk + a1826Ck1owZ/gYiMJlWc2WhkT39Dq1NDoW/Qkvu9Lij2tbTBiv3i4uQdcOy8RAvRRRySV8sIeIAQ + CB94oMI4WLdDgP9pU4+DY3AJbQPHKi5tMk8RQSFIvhMEwcPmA3yHt4M80wE6DlNoTNftQ/8+8jQ0 + bGwOHq6aD1Adh6tUY1zrx9iUKKWzzeYWS7PZfJbVnLzjOzf3756IrVoZbouYAoM7Bge39HrmjS1b + d19Pb6WH9+fD++1StDsWLgWEsfnzxsDuC6258fzIlrgYz5T9LRMljyM3lOjdFIpvAgPplmzcEvR5 + hHLtSXs0GJAkXyhqLeYyOIo2pNb1kFoIqW6tn5SAnI583zrhTcUS5SveCnmmAipH0AHoZ1oO2J7W + zGb0Ju83KVA5Ih9+fqbackBje7qqOYvPVXPUGHM16mmqOTjj9XpvcXLvhKct7YdAnGT1anu8HG5b + VHRQQiRVcA9v6nKGx/agieD4CmkKl0LhUpDn/MVIct6vs9s3LusLqVmOYfQ8G7CweiZcWZ7XiQZt + sG9FoW3jSLy85QsdfavLdku04PIXg5IVUqV85l1yG3n7DN6qGE2EhxHswH6UP+SFPHKU/gwkAWQL + +PjPvvKsgreOVvlDdPBoFX74Sc9BkNsCw7tHx3b2e/2Du8cW7q44bhL8reFg0S9IwVIgVvAawMj8 + g6vy6RXXTI5dvbrYuubKsfKKDrervKQ8uKZk9nQugXMzd+YD8FnyaxBvlet462iFwYDrQ9ch+rpZ + aKvCILj1YRV/cN7INw2s9Vmt6DRLThFjLRWAy8jjKp3BLJjtPC2iYIokiun5nws0lM4kwnJGtQeQ + AJAqGmGtLshqDkjPVmJpHWu98jDCWikEtlQVQSdYgfVo7JDBCwXqUepaRNs8Jm6TaRyhrqNVWIkq + Hq3COg3UFf40qMthYGpb9HB7TapZ9oZw3mNoTQdKUQdE9jRFc9FSXxBS1inGx9o2ADdnKLnsEHVJ + vNnI664MFtMt9mhekBBwEE0mwWTUO/ODcX/vwPzUJEZdKcg7AnzWRcRX66jreMUwOj802hEaHQ11 + UCiW5K8qPkJfKsWFLMjeN+CNg/g9Xp43eb30wCGvCZjuV9gLo4KMcGof/L9un5xz1gF+y0D2vqo3 + fk+1/g206f46C8pfMOdAqeo8OsTW2cSb0SBCFCbERrf3BHqLYV6t02ldia5EMOfljdGeln4NIwfV + 7BsZL7a7i3G3WgWhGqBoJtQ6ECkvbnNKwYIn1h23PJoaL7p1nCjYHU4jL3KC3S/CfbcBRfznJVZV + SAUzgsSr9BLH8notI4kGe7I77M7H3VqVI4Y9dk1nPiC7yS9jNLZ1Bo19ro7GDlWMlqjTmwbp+xSU + dZC5bgaQ7Tunl+N91aa6nxCRSU2IjEKIrFvPTmggIkP2idr/QMZroNKo/0xx1qDNFbUzE4zhz+Tz + P51yuPYhTwAKvuxT6W2SYDEKDNil0sjBVmv7rWCo9ksCr7rvkhL5eaIs+yY/SuTAoROhllCL3jkF + OctG6NGcuRvCbwHyx5H4NV4LsNzXEE9IRu+bg808xbursH48c6Qav4a23NeQV+eNVhOZBc0ss5CZ + FJ+4oJLoS7ugEKDVap010pHyFiOW0bF0u1XkJRNYyhr0+tr/kjJC17q+wC+KSzq8OoOBsdogIlPr + eb3BmXDni1reBBySaHO7nTcCYM+OElhD/C6ZgjMKreeyf3a4gKA3Y7EwcLDvhzRg0ES6KxajBR/w + 3Q1FdBmU7z0XDRrrVCx7VxXW5313I5ldvvcjaNDQXZwTj0Wa4Vgq0L+ha3Bjt9szduUaUzLi1iNH + D7R/iTtyAwkJeBekuhcXrDdmurx9Lt6TcrmTTu5XqSW94eTk/rH5N2xupzUsKwqCSa/SaNSe4lDE + aPKWxnOldonPj2esRl9Syb1C8pAjZs4ngJcVHPZqRU+YacEIjEds17CI5SGzz8JitM14pIo/m4XF + lNCds44nwB8htfT7FCuhCAwCqQJ07XnWYGDBCZ1BQ5FLDCbRyNT0SPyrdHotOONwe2wUa4YoLAzH + LA/HDPksDhCX1H0WrydMRAhcj04n+OXTCfnHwf3IZxEcrhiZVBstREH0B/ZD3j7Qd1fTAH4E8oIN + 7NEfVO2H6L67mkawfc4AfiT2QiG7Zx1MaCXzvv6tg/2bKj5zpBz0ZANGZ+f6gb41Zcdo19CSb6e7 + OnKlLlPYKYhCoBCwxryizpWP9ZcOx4byLkuyknBlExGB90bT7kBv1m1LdgSLC9zexUAVTMSD3pSd + MdudtRckj8PB6W1Or1H0WLkk5PIgpJgPUiwBuVzec9iTU+DwQ4ReT5QQl1v9XghI73K5aMTs90Tw + QnHPXCZvxmKujruqsHoke081AheFe+byODh7OZitsTsrUrbPO3rFSlcx4dLDPYPOFsz4Un0JifTN + b+leUrAG+jb2Dmzodt0keJMuR8LNs/aYxzMA1o9fv61Dw+oNIuezMywDOTtqNLlLo4m0zPztbeMZ + k+hLOpxxt0FEWroyeQW5jXaTGpUJioDPw5IceR34LG2HJWalpIv8POnAdSxKSQq2EnCJVSkxkdeR + 3bQJltiUkjysI9GQ5VV2pSQLS1K4lUMpCcBWPK7jVErCsE4e13EpJUFY4sMlblQCtxfbidWqNaoF + hIbgCSvcf0SJDNFG9BIjxEJiBbGB2EHsJS4nDoF5GFHumdxZXVotX3F119Wxi/a37Pdt3Braqh2d + p59HVAZVg0K2aCpWr96/dd5gsTg4b+v+q6sa18q1Ntf4xZctuKz/yoPDB/O79rTucaxe71lvXLzc + spzs6FH3MIk0l77s4J71y3vS6Z7l6/ccvEwT2b45ECEyJzMnRTldpZxc7GT+/C8AtTB+mhaI6cr/ + tf5VIoQt4/i0XcQ8HAyUioV8VLlKytWqXOufa+a8n3ud+7nGMvt9eM7313+PeiVbLGZvRS/vF3KF + XAjd1dry8O+BQi5XIBej19MOVEB+tlH39JFsMZ8PgVyxmAPPow9ra9Hr+6j2reiOuj2PoEeuUHut + UMi9Ad+Ab8Cb5ejbroIv4Ml8pnR6FN7dls0WSZ9SqaaBN39EzX5dzBbT8Abyqos8Sb5C/4lUa48T + aHbdTL5Efof+PXx/AluGVpM/Jh+m3yEKStZGwhZBWXIEw8LchtwbOcqZc+bi/mnjFPm54/Fp7X7l + SCBKhwoyp+SEORKf8+a+k6MMcm2jf7qK6p/Qxqer2v31E4FN5my1pnnfZ7FaMKQIRKL1rDL41FMb + zqxAPgyhVKJ3smXBtWsKxXWfWdC3PyHoOFbnYB1LuzKTHf6LtrnbMmG9YNaxemqpz63XWK1iYevX + N2z+VrU9EOQCJrgD1gi+8OiuoRs/pzMIGkZvkWnxC/JdTItHiPr7lfj9FKbNzZB2ffTvCacSBZw2 + oNxSepOOMNHTBoOomrZNkTccE3EMcEURNi2cxjTRG+jpKqxjU01X67Vsvb2zMsk0BTJvhldkHyPW + 3j0jGAzCGU80ApcLsFVk6Hvc3jctfneg9jonSRz5nNfkhn1eTU6Tv6PfgX1+THmGk+RJPN6P198D + G37/ROMZ++j/gO+fVt7/K/UG/Uf4/hnl/YvkQUyDH2N71mpyM3UF/Re4Hy4QG3Cc3BZXwEQ8Dr4E + lysG3PhwoMXlpaejcLwfsvLTXsQgP1NiU5x65dQ0vEGuzbBSFBIEVavorN6Kl5+uejFrOISfNcJO + zNkgS7IGJapWN7LsQHrBNdwKdyQ3mbKTnV2TebOUXdjVtShv/rOZY0tDC0K+ReUH702v+cLqex9Y + 2zYkGUQdpVrbtX0ikZq/ra17B7pur10Zskmhkl+wvjC97o5dHT9/6sk9ybBWreVMkAYrIA0OYBr8 + BPPBMJwjHZAGQ3IukkchZFl5IpQL5QyOKfD5ioEw8AW+YG0/1uWg42iiWJUUD408zpAxTmEEcwpv + ZnH1ePuxqtLgBG1tJHpoJGlurNKRKMIwaJ54KEV3Hp1BNXjy1OeOrFOC1OlIjG3r7Frn4ow6yso6 + 9Kw3mnV3jlojBWdotDMU7l/d6iylQyyjteitrKkn1VqyRvOu0HhHmDrevqrb60RhES3igKjRCDzT + WXREPQ69GClNtBYnW11aXmIYi2mQo1l3KeKIeO3ws9ZxvH6+qMrQf4C0+ynmH0X+EAEiLGPWR0LT + Qbdeb3TDSXHc2EhIArHdKVk/EZquzqlgq9fAM8dikYFKNOrXNIy68mbMqoH7sJ/TgPXYbC5Breqv + vd1FakWXzeZlAQ0YUic6zRaPyJBLt/+c/Dsn6EhAa9THj9FaNUlpRQP5O41ORZIqRn1n7V8hllWk + JeEhknAXdgXOdOAgIoWnwAqCJbzgi4SZaIHikiNYR2T6pTzI57XhaR71vDCtvXjGiIJsKHA6QOEg + 4hQBRkc+Ml0l8sBCwSZ8eLqKGp3QFqDEvPgsAwo2sNYlxNxILEGznOeocUt+Rwrmu0ZafsnbHdzU + 6LpuH+eI2X3lmO0Jg7MluGKDL+YwpI2h1tjOg55kQKKOhXryEYdBspFP2SRnYSLjKiSDLLK0gHZz + wKb/mdGbqD3pSrr5tzh3HI2qIjkJI8Q6/TLCl6BEIAgHWHVcZ582IAo4ptUXK3ZJ+OjIrdpghzIR + PafaMV1VXzxbU9b8fBh8BkX8NO8Wt3992z2c08k9tP2WjbmbnR0rB9es6VvR6VHt2P7NbXnY7Sdt + Umnrl9e2bRmNnX4rMLQTy24sy+HOUUbUjiiS3YLOJxE6x/RLERCJqJV+Ruv9xCMFt0wNIS5GYD+J + CBwkWHum89GZziuDVH8G/1mH/8z14YKDg3dWK/Em/3IePg+4gdbRKHAbXfv1B/AV334AWmikCmB5 + C6eRn03DWwXewmt+otXbOMHGqd/WCFa8dmPZD3EmPtF/3OXibVNg9YNEjEdruL5I04xtOhDIMNPt + SCyZpjONlGjoH17A667RPKwcsE1XYfV2ZrqKGpzImKarmZlMaOhfk16zOQFcKdikx0epY1XNO2jy + dygjiTbQPtnWsbYSCPetafV0OQ4zDAUnHmDVPKc2hMqd3R4U4aB9x1dXphb2JAQ1vZQ16lVWlzUx + vqNzYMdoiOOmAgHexOI4JbWfijajhde2X/C1Nevv2N0lWOyhsLJqwxUQInA5zkFQj2hiDbFTAMIb + awIOYUUXnH4JJSY7Swqtw8ndTysM8CiRgJUN+iDkAj3kgnNJJZy0pVnbi9Ll1m9nEurOpPU4KafF + 4zW1l9WCUzJ6UDB+j1FCWQRS9c/INyHBKGSvBvNqD9Xvyb/X72ovg1T9Xn5mtMpDaZSQZyMBVhMM + IUDcoaTmOoUfRymQs3OBs7oJbHN7NNOPmd9WZhdEEYSDKGIaa8DjYBXcB1kgccC0AU8n+Jsn8Y/C + whMGACePPGfQL4szEwTPGCVdgBWY6boa7GbeqeWdJtgJmn7t9CWQ40VlRvxW6QjuB0YvRKdsmT2W + sqNBDmYZPNbBEpquaStLeWLoznOJ2MgQZkUJEV85lRdO5XEnS+eqaatXnUWtRq6TYFN+M1luWaUC + 0gtiYlJvaAS7WXJymj8BHZy+goXTgf8OgEawmVHuFo80bPXZBfVPqZc1RrPdOM5Ieh35b/Dh4B+k + d+X0ExRyFFOpVfD+uUb5qw4z/Arx9F9Jg9HBq2m9aMASGeM2wkXEZU37sZAajYlIuKEoYAgxNK1W + Q0Y2Iyyqb0asp+qIVQ1XXljHDLm9XmsWYkUyTJzzxKpmSX0wPLJ5aKmWQ7nleI1DvM+Z7RvJ2G92 + J1OWBfMihYBRdbpny1C09pfGw7xuN6m4SHm8FC7YNLUPzeEifBYFfxGtxKCcjel4updogyLteNzV + KyI5bnOle6cJEaAkSj7xTfEdkRZFa8+0D83OepYzJcMrXHrhfIZQVF553WmxF07nWW11FGzt65mu + zrS3yZlN0fTel5yV3xRir7PoYFHSEsI12WrFOiYEx5Tl+IBKbzEKbqdBPc5Y3QlXGU1yM6SQk7/f + E+czozmbGC4HTV6XzTCso38SiOo99pHF/pyPJ9+QlwVG+5grG5RqTzUI91ubkQLaQGkwHu3NhvRa + ZyjrecBihGORYynqFRGt06COxoguYj6i4+NEG3kDkmknskGWmiP8IJv3QgJ9ZB1bvRIiRmMKNCX+ + qefJKSiq8fodyphDraZYyW0xeySW/Ar5GZIxuq1WL3zzkgrwHrvdDYXfndQtpJpzmk02Xk1+m7qd + onmP1eE2AIp8W8cgOxOjA7UaWb8nX0cAjlTpNKefJ8so8hZyBDr9Y7IL5SyjtAIHKTDzh89lOPHL + qlVZhGKMIEquU12EbX04ohn54vEqTwcfJ18kqgRN/pLoTSLe/1hD3jrfyL5Fk3uGvN7hfYsn9w55 + rzK39LUU+iK8paUfXsMceXLDt/Z2l6vf3rLxW3u7yru/vXvtoclgbvllw2sOTYZyyy9Ho9UGWsmy + qgrRpvUhg9VJsXJHKNyRfKaAetJIRIICT+Dkl/I2GdshyLKBrQ0zPMceecQiMPoXtQ6733I7awBb + 7CaT3WEmN+7Um7xWs+YgXO2Z0x1m+Kth0E5OqC6H66X3uEAFJEyFAJVq/nG09Df/+ixTG3qvGEMU + Uxs5YeBqdlHiTN8vDcfF8Ylgdy6oM2s4XaxjJNa3sddrKqwe/jK4xgmqNqfZ6wkaf1BaPtLpbJ8w + 280Q0ek1ZjMfaJ+XjC5YvXvgi7CXEeAnx1QXE2NE14O5rhbcycGAA14rUpUPeAOZwIbA3gAdCNBd + PG2qD+EvMOWQIEi2I5V3YxYjK2fDGSkSrCcZm3N0T3kyS92RnhxLLblsPD5SDmsY2qgNFIZT6zfv + unQJKwrsZGKo4BICpUikvxDSsjr4tPGO0fgVV9pbesO5ha1u0lZeUwkZJJNGa3KlJJs02TeyQHLY + JEu0LeBIBUwWu8XosFrgnszE7dgUHSiFtKTKXxhCvOoBKXKJ6gIo331E6LjDyPrQo+uqlNvCshqL + ZgqNU6bJcAVMyGwl56NWBg00OAXOWz+5xD7pcbsdtWdYXqsDBm0kkYpP2n9L1gBBWlLfR+r+7xv9 + 3pAIfisaBO70h+CZWgXxaQz4yBHVOqJAxI9lnLAfJ6qZDB1O4kEJ0+Zm4meU9WMW4VubKN9sWYIb + 2YZdaSS19PLx9GjBq9ZqNIzOlR7IrN+zbX+4y2sUzEZwg91em7J1uMf2jIXJQv/24TDL8Sra5hIt + vMgvWjNvoc5oBwtM5lzuLZIMdK+ANLTD+b4czvck0Q17Hs3hnkejtOjFPRfp9tkzf3bPZXtyQ1l1 + Xv+c5cGRCyeW7qnY9Z7C5N7xrvmsQaNj1ZZwKdS7suygQhf2D21ot18iRjqT7WuDFigtUr0xI9ne + vmUi2bHzlmWF3dtW9keMGq1odolaRptdtLvTEg5XVvaEOxMWj3Vhtd/lyfai0XCCBLlUtZmwEuYH + KRPcobz4YNWk8IPM8moNTmc2O6qrhVyqY2ovanwhq4MlVWCstpnXcwbwgSSqMo6A6fROUY/doO+H + 2+f/zd63wDdZnn3fz/PknLRNz6X08BToCUKbAj3QQknoGdqm9EApJ5smaRtIkyxJaasIsUMsDEfd + 3HR7N0V99805pyDOObdp/Yp172TOediYulHnptsrm+icVu3gu+77fp4cSmHob37ft9+b56LJfbzu + 639d//u6n5CkXZiAf+9UArOI3Q7+W4jy0Cq01KBcoMzN1ek40X/cCjFnBCK/kvzPTuDvigX+Uu/8 + n4TJEf9Sbwm7/au3HvqK1dq1Oauqr7amZ1365q5e6xc3NDXXx+as1d2csqW7s7lj+5Z2Vu7a09e3 + cdfyXFu1bmNZZvqK2ryq3qUFNmbbqnWVJSlLs5fEGy6cKGvKz24pXVu1HhEeZBMe5MN9o/6hlIWr + CREWLpRmFxpVBEE2+wKSovgQNtD7oNUiHXJCeXzpeyfhn2PZnLFp3FNkSojTwFZdkFuaY9xWsZBd + bKuq7ylfsKjOsbHDaUjdw8RkV5UUGHJjtdmVBau3suea7zrQHgPJICU1XqVW6VvsqxOylhi2FJcS + jnyxqry3cXmGvjJrScWyZPIXhCvRg3AQ7yLnGQ/nmQAmhj0DYBYLYH6F6Ivuf3qo5S6suKZq/bby + 1NSKHdXrd5Sn9sUtKcleWpIZFbekNHtZSaaajTLdsH1FYdcNbaZR/Dza1bhrfUZevaW80Y6fe/Dv + WkGPsXLOBmfawhOa5EfZXz8Ucq69hLPzOjjXsv/JuSZXKy7cotRolOO3x0XJ1ffKkhPS4/Yq1NOJ + sXEJkA0+3KyOS0mIk/VLJArFPx6Kw/vChH7CJnMDqADlPhzDJmfF0VWz2DMPKVkdrbCCCctW4vMt + O+Eqj7fkpAu7o2PUsYd0qxdFr63MWJmXroiVqeWL9BVZJS3FC7TLNpTvYdYmvblUm5qaFnNoed2a + oqTCtbGJsfmxCUpZXKxmod6wJMvQsGW1h1j6XTaJ242q0MqHDKmLgI2POFJTpYXlSx8nVpaTACbg + jR0jfRRHcOUyYnIIIa9wpJXMf6KRvxDLJmXX9FQuqijMkCmkMfK0ZeXZzZu2mKuVMVEqY+2WqDQd + n1m6DDoVAG+xfk2WtbdpXesOZqhgY0m6OiZWKo9NztbGa9eXVBhjkhK0VauTctK0cYlxMUlx8QpZ + fKy607R+SzSr2AL8LEDfZ0s5CznDcvAZhvPGD8Qj7DH210iO47HuyqdYfOgptpItTWpPTl2YeOEV + dbRcMaPgc/Oy2pOeYf76NrMn55BCpVIciklbkBHNHI5Ww81RG7P3wgHy14DQfWwCtx3pUeGJglSS + AAoKpEvyqceXgC2Xenyek+yKB9kKTN2E7FrL2tyKpanwyjZanpJTltu8rc2cuTIlJjouhqlKTLxw + PkGfMnItc7S0oyJDGaXhpPHJvCZaU9W4ziiPSWSA4vlLH2Pt5DN7sMOzYIfno9Wo4ET2cmJ3drY0 + Jj1srxeH7fVLjjH28sdY2McastIrtlXWbitJTDH6duirFCq5QimNz1iWUbyhIJnJ2Fa6ulmf2F1R + X9iYHpddsiS7OCuG+VJh29ol+s176gwHB2q0MllMbHKMXCnPq+4qisvMKGlYubY+NW59V2lKSv4q + HIc69BCbye1ECSjlIS5W/RNieWyACuEHGD6+xNMrU664cFGWmpEbrWBiL9wLFGL+UxvNrUpKi/3H + b6JVsdFs2bKEpFh8bhlgf+WA1xagJTjeBqUyefHivDxOK3pNC17jUIGQlQJeu+TwCp5dYR8kCD+5 + cvZd69nb1n7LQojn6k3FKbd0tA2tNayrXNMwmNBgqjfWbWyoZezbezZ3VHbmGB3Z6wpSU5aWLxow + 5nQwvG7VKl1+Bb/qwluF6xZnGgtXlpXSuH8vEPfCEwtLgwfW48J5dYaeVw85oufn6z85sEJ/32AJ + m7WganjnUmNstEqhlCVmFWSWNOqT2fTNJWs2FSWmV2ytrN1ekmjR8GW6nOKs6PKN+o1srvHgQG2U + Qg7pWAv3K3nrO/WxCzOKG3QFbZXAh6EyfYche0HeqoUQfxx3dHFI8i5ERINiT2jYH7FTgELDTiB8 + NCUW4x1E3iSUvB6jVOZ0dttWHbp7QWwqF8MvjEXMxXulN0u00neRGkWfkKnBGyccMkTACp9Owm/Q + cu9Fw/Xxc2lp0ncT09KTi1bBzMfkR1m9/O8QbgX+M6n4RRWXlZhVy+75x2H533vJK8UnqDCOywlb + zj4fFM4kyJuXisQizQvIWSyyFVeUI0GRN1+VvCx/WXGzspmKyvgJ5PUriXr7ZeU1zTUh8iCVqLR5 + 5NpoVUCuI3J8jvwoTGaDEnMg5mJQtDsuI09pn4qtj32JStxwiDxNJT57Xvl8QmqIDM+VxA2Xldmk + b4dL8sPJD6dYqCxY9NlL6oqAvBYuC/sukW9cIm8GJe336TeGSsaSy8gLWDJ3UOGrg5LlpQIvvEWJ + vUS+udgDsm+uLOnJls4rvwyVnNrLyKu5Xbmn8irznsh7Iv9E/omlHJGypb9YVrLsZl0UiHu5YvnQ + 8tcKaojc9/9AzhTKIhKRf4F0hskJQd4qfEtfqbd/CvmK/o5/kZz/V0hRc9GxFfoVb600rzy3av+q + l4oHij8q2VLyVGldGSobXC1b/bPy9Ir2irfWNKz52trFa39VaaqcXuddN2XYbfiHcYtx0viM8YX1 + Detfqeqt+lF1W/XLNeU1N9Wm1r5Q11T3Wt2f69fV19WfbhjfsHVjYuPSJknTr5vONh9pvtXUY9pt + 8pmuNx00HTXdbrrLdJ/ppOnHQWlJbOlt+fWm6ze92+prvdjW2vbndl+I/LwjreNLm6s3P9ZZ0Tm5 + JXHLA13FXZVddV0tXV1dPV27u3xd13cd7DoakX932frqP5U/bD23bdc2z7Zrt53e9uK2V7f9gci5 + be8Rmd2+Z/u+HQmCpEUkIhGJSEQi8j9Wrttx3U45yJadP9v5s2s6rvlFt5zIxu7nRDGXmF/B0rM9 + IhGJSEQiEpGIROTfWnZFJCIRiUhEIhKRiETkXyQP9fzFYrBMWGXWHuvPbayt1/b8laU3rber94G+ + RX39fZP9uv6d/U/Y84jUEbFGJCIRiUhEIhKRiEQkIhGJSEQiEpFPIIMRicj/XCHfK1vOLkL4+4j4 + F+NpSQtHfr9gNKlx5PflRUuOC2UOLZE8LpQlIWOkKEXye6EsC2mXoz2Sj4SyAi2V7hPKSsTLR4Wy + ij0WGK9Gm+V3C2UNWiqfEcpR0TKFaGc02gBjhN+iwiiS8oQyg+TJeqHMInmKXyhzKCXlJqEsCRkj + RZqUO4WyLKRdjipSviuUFSgxqVAoK5E25Q2hrGJaAuPVaFnK+0JZgxIXZAnlKDm3oEQoR6NsGMMh + Bv91LjZO6hbK1M+0TP1My9TPtCwJGUP9TMuykHbqZ1qmfqZl6mdapn6mZepnWqZ+puWo6BR+tVCm + fv4O4tEKpEdFqAxKTciOLMiDXMgLP73IB21VUPIgN3k0Q4sdSk5UAD1G5ADhUSu09aF+6POSmg2e + bTB6DzxaYWQUqodSD7TY0BCMMIE2G+hoRyOkxKNG0DwCegfJig4o9RFLePhxwZgRmCuuwQds1qOV + +FvdgVop0pH1zaDBDWN5WNcM62AdFrRbGLsBav3QinsHwT5vAE87tNsJBsdl7eklfuDReqj3QA9u + NRMvhGOkelwCUp6sMgi9FoJX9O4QzPWQlkEYZSVe46G9n7Q1oQawCXvHTuY5iV8ryHwbGWFDA7Am + 9rKVPPKCReJYnrR7SUztYIsYvSAO3O8DK+ww0wteqCJo7ASJPYDDDD8DMINaSPGYyRq8EGs7aMRa + zTAO6xqB2hCUfCQOXsDXA2UHsclDfIHx2uGxT/AU1eojmOiaToLIQix1klW8JE4NJCq90IL5OEg8 + 6CV6bUIs7AQT9YWXsMILWs0CX3HE3EK7uMoA6HEQ/7gFK53QMkBWpTq9xFNBC/CKboKF7g3Rt9R2 + B2ENZkK/wFxs1QCMNcP6PlJzkliLvKY+o6vQODoFXC7i2x4yMmhxKCLstWEyj6LeDfUCsndDo5lL + tA0QDSPED4PCLg31t8g+p8BkjJ/GxUPYIHLURmKNmesOoKE29gljvFC7VtDuAxQ0QnsCUTITjuAd + MBCGS8w8FrDETNa3COsXkOzSR2KFey7NV+WXoN4sMEdkfgloWQGZ4/JM95E1rYSJeJXdgRgEd+al + ebJP4LU7MBozl0bcCeNthDv/d/KtKpJx/20ybiNYYkF5ZJflC/08qiOscBHLfCA4X5WjQhAr8S2e + OXAJewoEzhVCeYRwqI+wCMdmBFrNYDv1saiV6nQQG7AFvcRamueorvk46iU8dxPs1AviPBzVLrIG + zTQjxNPUM75AtMXRYl6wCLkb73Id8QEe5xZYEZqn3cSvTiE/UC02oW4WcrKNZBQ7QUit6yF2iFGe + GzGfMIPyx3NJS28Ag+6qMgE9FazEpz7h9KH7k66rC6wzFwHNokPETxayn+bz2ZCA1E52moPsKbrz + L/U9nkNPljwYnx/G4Pm1Uxs+rW9D9wc93XnhfPaRyFnCzsm5CIKn4ly7KkI4gJFQLPRuQcyVnsCd + h5WcvU6SR8yXRUq5Zw5jFc0HLuGRoqLlQbJfaH6yknPMLuQWqgePdJDsf3mO0izuFCIT1C7uEHvI + XUU/yXd2wc84q0eRfGkTMIh3GKKXw1mtI5Exk7IVifdXc/Pc3J2QNycv2EieHiJ3FHYSfRxVM7Rh + D/XBCLGvUNB5zZzcmS/s3mC2CN4NiNZ8ktPpKk8DPm2OjkZRB58eYPMuaKNxEllD704cwikSZPeV + TjiRlZc/5XDkWgI7xxtyL0LjTVlgE9aiGdspxF1HMHuE00e8r6D3RX1CnEUeU165hfsduoKL3Heb + CU6RKWYUPOXn5rPPIBYBD5kJduw3u5DrrcJetQj32k5ia+iZaSd3417CTcHGy8cWym3h5zxEOz/E + R9aQVwih++Gq9aHgqxpx9PzZTTcnu4m+nzvbQV4V2OfgFu0K3oMFd03wJBJjqEPiqzP8Kkys20IY + 4iavvxyEb/0hJyy1uofYYhNOqsFALENzCY1hoRBxL9kljoAN4r4O59LVezX0hKcoQ0+acE4HPTFE + /DjwKeMongaD5NUl9YwtxAIrecRrBv2yC0ZYQs4O3xXyMc38VoJAPPHKw7I4vRvbQ8rz3XU7yRkh + njKhr8/Ec2K+nBI+y0tyBY1Vj4B7/jPXfJmIegLovYSlTqKd7qJLX/l+WgaI51s9qiG9JlQLtU44 + LVtJSwO08ZBFW6FnM9SqobUaWnJhRJvQn0si1UnOoXoY10HOOKqjFR6bod5Fclwt4kkd1zbC+GbQ + hefWoC1kjRrQ1kZGthLdTdDaCM81wjg8owpaOqCOy3UkC9L1mmEWfQ3RIJyJ1NJ2aOcDCMOtaiAr + ipY1Qa0V9NcLvUbQ3UD0Yfvx+rWk3Byws1aw1Eh8hDVjnVVgUSOp4dYOeG6BcW1kfSPBTK1tJhhq + oZ9iqSEW4JULBKx0HPbPZqEHxwjb1wgSRGUkPqgn1gT9VwXPLWA51l8Hve3khDDBzGqCtI14r0bw + GUbbSGpBVDRSVQQN9ir2QTWUm+CnLuC7VvJIbWkN0Rbuu07SHxxF8RmFxyriOROp0WhUkVo7iRXu + 1QmxbCU45q7aSZhYQ0YZCeK2AENqCXup9SI76RqmEEvoeji2obaIrOavsEeoFrG/Q4j0pX7BXjcS + n2C72gIrX04z7M3v8Cv0RWV8k93icXldvT6+yuVxuzxmn93lLOCNDgffau/r93n5VpvX5tljsxZE + 1dt6PLYh3uS2OdtH3Da+0TziGvTxDlef3cJbXO4RD57BY836lXwOfirV8a1mh7ufrzc7LS7Lbmjd + 4Op38vWDVi9ep73f7uUdoXp6XR5+vb3HYbeYHbywIoxxwaK81zXosdh4bO6Q2WPjB51Wm4f39dv4 + poZ2vtFusTm9tgrea7PxtoEem9Vqs/IO2spbbV6Lx+7G8MgaVpvPbHd4C6rMDnuPx47XMPMDLlAI + 65idXtDisffyveYBu2OEH7L7+nnvYI/PYeM9LljX7uwDo2CozzYAM51WcIDHafN4C/gGH99rM/sG + PTYv77EBCrsP1rB4dbx3wAx+tZjdUMZTBgYdPrsbVDoHB2weGOm1+YgCL+/2uCAa2FrQ7nC4hvh+ + cC5vH3CbLT7e7uR92NdgGUwBjE5Yy9XL99j7iGK6kM827IPJ9t22Al6AmevlB8zOEd4yCCGldmP3 + OcHJHjNg8di92KM28wA/6MbLgMY+aPHar4XhPhcA2oMhmXkIwABdC5PH0m/2gGE2T0GrrW/QYfYE + eFUuLl2O+VC8GVyEQ1BSsGJlmOt9HrPVNmD27MY4SEgDzOwDj7txs8UF8J12m7egcdCSZ/bmQxT5 + Oo/L5ev3+dze8sJCq8viLRgQZxbAhELfiNvV5zG7+0cKzT3AMzwURjoGLWZvr8sJDodRwcW8g263 + ww7EwX0FfJdrEDw2wg8ChXyYrLgZO8ICofXZdLzV7nUDgWlA3R479FpgiA2ezRBGm2fA7vOBup4R + gkqkI7gKeOPyiIVevILuUuzAA+ugxafDdNwDc3V4jrgAxGeo327pD7FsCBa1Oy2OQeB+0HqXE5iS + Z8+n2yJkOGi4krV0FwHXIe5en8duoYQUFyA8FHVVEA/k2WEV2BM4lXjwzrG6hpwOl9ka7j0zdRUw + C+BA+HBh0OeGLGC1YZh4TL/N4Q73KOQl4C4djgNiJ/uk395j9+H8FNUOJve68G7BJguu1vE9Zi/Y + 6nIGMoUYhDyBCzZnwZB9t91ts9rNBS5PXyGuFcLIa4Sckg/hJbQgewCrmT8Jzpe8nhdGNOIRL2A3 + 73IBJuwa2EsOSGzE3eFpErsyLFFGRbXg4HjJ5gHc4AIbzAJig2esOr7XA0kPbxHYiH2AGfsYfAUR + hem8qweSnRM7xUwStcizq0eBDTJ7vS6L3Yz5AfsMUpbTZ6b51O4Az+RhjWFo+TYhU7+QTyyykmxI + 4zDvOJJncXMI3XQC3bD1YrfDDjyla2NdHnpSwQpkE2GEOpzL7b342UYc4h4EQN5+smFBdc8g3rxe + 3CiwBBAWAnCvDadol9tOM+plTaUbHpakm0bwNDFiqN81cAWMeBsMepxgjI0osLoghxJbdtksPpFg + QR4D+a12svHKKcUhje2xhRy4TpcPbxmazO3CNqZMEbq8/fg86LGF7VxzCFAPXt7rAzLZIUSBk+dK + DsD7rb6GbzPVtncaW2v4hja+pdW0uaG6pprPNbZBPVfHdza015s62nkY0Wpsbu/iTbW8sbmL39jQ + XK3ja7a0tNa0tfGmVr6hqaWxoQbaGpqrGjuqG5rr+PUwr9kE53oD7ERQ2m7i8YKCqoaaNqysqaa1 + qh6qxvUNjQ3tXTq+tqG9GeusBaVGvsXY2t5Q1dFobOVbOlpbTG01sHw1qG1uaK5thVVqmmqa2+HI + bYY2vmYzVPi2emNjI1nK2AHWtxL7qkwtXa0NdfXtfL2psboGGtfXgGXG9Y01dCkAVdVobGjS8dXG + JmNdDZllAi2tZJhgXWd9DWmC9Yzwr6q9wdSMYVSZmttboaoDlK3tgamdDW01Ot7Y2tCGHVLbagL1 + 2J0ww0SUwLzmGqoFu5oPiwgMwfWOtpqgLdU1xkbQ1YYnhw4uiIq8LRB5W+AT+DbytsBn97aAivxE + 3hr493xrgEYv8vZA5O2ByNsDkbcH5mbzyFsE4W8RiN6JvE0QeZsg8jbB/3dvE8DepN81QOhiCjqI + 5rtY4RP5iMmD53Pkk/1XuiSSXI2GgTFswtWOj4rC44khVzU+JoaMP3e147VaPF5y5mrHx8bi8dJT + Vzs+Ph7GS7gPEf6GgoSMl8BPMXmMBTfHoVSUAoksDa1COeD+XAiMDm2DA7gfVUIqrUajEJajQOVv + oK3oPrQT/QAS6SmGRb9hYtAfGC16h0lFs0wGo2RamARmB5PFuJgCZpCpYPYwtcz1zCbmELOdOcLY + mXHGx3yd2c98n/kCM8F8lXmauYvbwDzAdTA/4jqZSW4L8yznYV7kbmNe5s4xv+f+wrzN/ZWZ5d5m + ldx5Nol7h13Mvcvqub+xa7n32A3c39lO7gPWys2wA9yH7B6I6/5wrOznPwXW2wDrfwLWhwDrE4D1 + NGB9DbCeA6wfMamMFLDGA9YMwLoMsJYB1lrAugmwbgesfYDVB1j3A9bDgPU2wHo3YP0eYH0MsP4U + sD4HWF8BrK8B1jcB69uAdZb7K+B8G3CeB5zvAM53AeffAOd7gPPvgPMD9nOA9TrAeiNgOxqOVRoX + gjUZsGYD1pWA1QhYTYB1B2DdDVhHAOtNgPUrgPV+wPoYYH0BsL4GWN9mWEbGxDBxjBbimMosB5Rr + AGs9YO0ErDbA6gOsNwHWLwPWOwHrA4D1McA6BVhfBKzTgPUcYP2Y62BVXCcbz21hMzkPm8Pdxuq4 + c2wx9xe2CrBuAqzXANYBwHodYD0EWG8DrN8CrCcB65OA9RnA+hJgPRuOVf5OCNYFgDUPsJYC1lrA + 2gFY8csZL2AdBay3ANZjgPWHgPWngPV1wPou8jEMYE0FrDmAtQRK6wFrK2DdCVgHAOt1gPULgPUO + wHofYH0EsD4FWH8JWH8LWN8CrB8wT7Mct4GNA6yLAOsywFoKWCsBazVgbQKs2wHrbsB6LWA9BFhv + B6zfBqyPANanAOuLgPV1wPo2YP0Ycoc8HKtqJgTrQsC6DLBWANaNgHUbYN0NWA8C1rsA6wnA+iRg + fRWwnkNbGSXaySwArPmAtRqwbgKsPYDVBVj9gPVmwPpNqN0PWH8CWJ8HrGcB6znAOsuMs0rm62wS + 8302m5lgVwDWdYDVBFi7AasdsO4BrNcD1s8D1iOA9RuA9X7A+mPAehqwvgpYzwHWWe49TsP9nUvj + PuB03AxXxn3IVQPWlnCs0fUhWNMBawFg3QhY+wHrCGA9DFi/DVhPAdaXAOsbqJPhUBeTAFiLAWsr + YLUAVj9g/SJgPQZYHwCsE4D1WcB6FrC+wwyyHLOHTWWuZ/OYQ2wJc4StA6wdgNUCWL2A9QbAejtg + /T5gfRqw/hKwngWsbwDWc4D1fe4vnJz7K5fCvc3lc+e5cu4drpN7l+vn/saNANbDgPU/AOv9gPVR + wAr5mnsOn1cKOfzTavPyqveOjiqkjEI+PT5+fmxs7DyuyNxjfrjG3AoZo1CcHzsAF/RIoOe83w// + /GEVPxlWVu33f+NAdRmpwIRZPEvBMAqJX7jwHKlQPq9QMArV5OS34Pra18iiZHnoUspBwfABcg3L + iHGka3xsjKzaPe438NrxboUaKdQH+AP8BsMGwyYQ3s/7ZVJGJj+vGB4bGyYzYaUxPFkmYWRSN17Z + TdoVeAgMIuPdYzN+Px4vkw2Pj3f73QCWGI4Ew0NRyBSMTPXIfx2Ci0w+/lOsSNADF9Yvk9NVYTTH + yCTTdCKYIHP7J/TaabkEySWG8wa49GQmHn17v0yKZNKxsZYWnlcEiwZDyPrIz7GI4QwGv4xhZJwf + n69+yCEM5wcGSiTTHAdOPnbsGCjAcRwTTIJK9zEeXzNCj0Kh5Q2BiluhEIbp9S0t4zNaLanMkEgJ + PWUG4kxamVFotcQ2YR13oAeXhhXaaQmLFJxhwmCQcEghmeYN07Rg4CeuQD9gjxxTye8XqPQZ0U/J + KNRP+p/03w1yK8gYSJBrmIZAUGVZ9Shc1Wu4K9NQcwUaKqWMUu4P5aGM8pB0KAJExB3d4+cpQS9D + RCXDKAN4PikT8Q44PjGHiQoJhMQwPxVlQSrKRCqGWnA1XFRSLoLzglyESpCLpEfkIq0IXIRKkItQ + CXIRUyTARdwT4CJdxx3oEbkoZZGKcNEg5ZBKMgGjp4USiFKJlEoFSgBZBGJE+4m/lTJGqcCrzACV + ZiAtKRVr1hPk69fgmnLmAGbHKPThUM74KR+DtRk/TWdKJZ73xdFRYR6edAE/hMcTz5OJlRmlilFq + JuC6y3CX4UtEjoAQo4hBeJRKyShVa+Cl3g0BWQ9nEuMPDhuD/UMswkmduFapZpRRmLGHBc4W+TFn + 5VJGjt0/DOFXyRiVAvQ/egpUnHoUd9FDYcxNuiQSie8IdB3xyWWMHGfrWb9/L3TJ5Xux8/3QMkzR + CdT1qxhGFcTqlysZueYkOk02HhWiiqx44ICoFp8BqkD7qUfxTAkjF4hMyng7dWu100oJUkoFKhv0 + RAGZDzZiZJjBQGFVSBkoo2JYlZgUwFLIWSxsB4NfzjBysBYz2s/CLRqUGY6RSKclEkYlG4dL8KnA + alITWM3PCH0KzEtDsEa9D5GRp+Tl1dePzSoUIleA2QpBC1CbcpuMnJVgLUDvwHruQB9lN6W3WkLp + LUFq6TSsel4odWunVUqkAnoHCb4fKE5CImdUSkISTORZlQKqlUbqDGMlrqpmR28gF/TiuM+KrJ4F + P6qCJPeTwWTu0RtuEObieRfJ7Dmxx6rkgdqsSs2ooia6J7ohVRy7hb8FeHmYx/wkS2L7KNnVKkal + rhRsFy8jWofQRAAJ8P3AgVFiHOZrtxa7FS8QfYAXk3QI5SnLJHuBJGoZo8aUD+W8XOA86ZNchvRy + KO/DPPXDYbY3nPRqhlGHAP9XsR6bNkx28/lPxXo1w6pF1l817dWE9iQmwt0ZtlLKqhR8gPhCL/4D + 8sDB2UB1GHxHIKkUKQHuk+peWDakd41BCACtBthvCKw7fCDQO0xwwmLn5RzSSAQr4OZKA8THk86L + ZZwf1CqkVmngbh5LFojBv98Pyxn8BrWcUQv0ITtBrYB6htlA/GMwZ+C6auYg3QujB2cIH2b9gc0Q + rM/SsCsZtToTdfsNCNyLjlI9/m5/JiJdQUJcDCHHXLJgrcFtAqtEMeqYiZSJlGN5x/LG68frcea5 + UXGjYlQhACCHER6rUcEqacgStlmMUE+HzRIYTDfLKLF++ABYqFfgQJB1RkFrjZZKHl7wmNagNZC7 + K7JhwPEaOaNR0h2DD7NTj4bdvJFeFq7yWtxbWy7cpuFNU12mxjf5gV0zupdmiICxGobRhLrCr1Az + iugfTkzxB0JEAUqUdHG4jZQH79eIeqVolp/e+8mE3eMX7gxwcoDcAKlCZjDMkP1jKCNaqEKwGG5T + FaCuOi9Pq1WHVoBcGobVBE7rsE2kYFh8o4nm7CIp2UUaOd5FJATUWNFetVLfMq6l1wVSHz4A3pPg + jRSsw05iWQgRJqgmIWFJdfWBi7B7SD/dSizpx3W6l4L6L7AScTsF1q+mD0F7asthkRnYT1HB/cRE + yQL7iZbxftKokUYdjaLRQiJF/iJ/98R+yOM4lWsUjEY1OzU1dWp2anJycmpWo4SGTOT2d6OJEOmG + lkwEdNVoLqBJuB+fCLme9E/6LyBCpAu4PktaLwQbLtBxZHqm322gup8WpndPuCcy/aQzqPNi6AIT + GhaCGNYAuhUh9QuaaEajnU6bTju/5jndGccZx08bT58+deTpI5OaSY2AkgAkw6M1jCYqE31O8IIo + 3ROfA0vQNNITN8yiKTRJZArhMq096SfA1vROTEwPp0XLZKeHNTGMJvZJ2ZOyyYOWI5Yjvad7T5ec + WbVlzXCKPkVPbiX3Tslk+6amnt0TpWCiVNiEV9+YxNcbr9Ib1l5iV+8a0s/BVdFH+vsq4AUO3Jj2 + Tk2BF3vWaHBtPwRsau/EPujfF8UyUZKJCcgX4iW0hFxKDaOMeXX6Tf1UmGDNKsGOyUlSW9NLyr1k + HVXARqwD39ecmRY14vvW4VPYA5ojw2opnDrd3TPd9CojqgS1AADftuPXcBaEpQQkDUQzf3MKiB5F + sWxUSMABnJRjWCkon/BDtlJKMWKEQePUBTVGwkhl56UyJkpxGl8k5AIaEZBGVTZ8JkW4LpKGvVPg + aplMk6LvDjbI1sigdWovIUE0ykBJYFsO6kW1QIGLfhnCQkbvw3D3CqNxQ4YeLCRME1a8CNplGg0s + qNcHbOolhgkjSNmyDlsxA+dgtNR9XI8v2MPRsmkodE+cF8vdev10yP/j4/cxWKvD2SeUC7y0vBmX + jR5zj443egacOr5qxOPQ8XU2127y6IFHjw3K+FOzOr7R7HN+stHEBobYAT/pd8JzAjUp/Tb9aPqX + ZcqlB+sPfhDFyNljo+kHoAkn2CK1XimTLovm2FQp0ptlqmUyCNtoKctIjrXpN+l1IS1pd2f409Aa + Iiby/q6LfOICfx6gEos+K0SZJOEe7vrvvtT+8OaPM5/4asWD37Zs2rzk+mOjKR36UcmkfpT77jGO + ZVg2fiWYODXsL2EGU+0eYvCUPipgLeR+pB8iZnIdElk829FWFK+PxRVFvKrT7O23O/t8LmeRVh+N + G+Xx8labdcDltBZl6NNwiyo+cd6vqhRl6TNxPxefEuxvtw/Ylrf5zANuvqXKqM9Ijioq0a/WlxaV + FpcVr9wK1bKQqv6Gk5+JZVF6Ne5Xx0uaTC2tRbn6bFrNcFbZ3fgj7NVtNXxNW3N5bfGKsuUrS0tL + l5cZS0uKsvWLKaK0eRG10S8C6EeZRaEeZqSIG2ViELSr2FGGQd9TL15478/G8hJKXp/s3yE7kDdo + vCnu3m98ZxXbfdf3ah9RRd3/rReiamv+9OAdaX/z7rzomn3k9uVfeX/h4rH3N5188z86N/+j6Zm7 + i3/4R/MzfQlscvXMocS6Y8tVR9GDz9w0scH6X2WPv3Zk2X9PHlz5yLKJ1OMf5n5dpneXnf1x/Cn/ + LzZ03/6511+bdP1gvLzu91r1dz1j2/ctqYr+1X3fzlo19vL9Q+N/fC1m75eTDy6+ecELT39u6lvv + H2/R3bn19NbjzNO3jp5iPk5kbeecjyej5TdJbzm88+bSI8o7H++ddg68NH1swyu/u/WOa6//TVLv + BLO00JT70dY/zryT/la05P3dNRkJ109Yv/rKcz+8WPvsrie8mSwH++ieUUYJHpHq08Gl6dGSJEnC + i0+8v+L4WFHMGwtufafyiaKPtrExSsKh9MWSFH2SP2HxqpnftNa6VX8xfLzn45PLjk8Wn4zRt+MB + mZIm/UZ9w7G6YzUHq4TvDlg8jjlfOHHvtuPWQuGrG97CQBhxFEkQgZUFMES/RaaAjSmVwssOSaN+ + g75erOvZg2uEBYaGhuZbwOa5gmafPh7bmy3R6FWiSk4xZ0NymCW3b0Ovvn1P/Rf+0LK679YlE66j + jxvOrv5fuqZDunu7Kleodp2e3Z4suV1vev6i5u4bf5f9vyXlig+a/8Cc/J2zytY8vbagxp0/+LzJ + bkoaPvnsdZVvL7i/6cQDgytal0hvGz9T//Kfqj8eNyd17fz5iWUdX7mzdfuTE/pc+V9/1Zg7cnLy + gw3FUQua7il66tUXUhfdnKtcZSh99o76tMODh6u+eSa//eF7Sx0Jd/x02PGDBffdNHxPqfVx5kvn + fmvYf02stv1W6daX95/M2xh3x6rRLxTmdZdq3+lLfXHU+8rZFR+fXXnP64birB+XblvR73rmzLI/ + MWbLLbeNvfHf54+zD374wfbZszdMrtr38KbfLsw813ruI/2ojIE09ueQNHbqz4dmrr2h5c8XSRo7 + Feo1NaSxfZ9JssjT59BNnxnab7XxbfY+8sUNCCz+xl4RyWal+rKiohV6kFU0mwWret9nYp/Qz12m + /59mo7HDjy6ZlB/9un8kcTane9YzpvvovXtuG/tq7Q/ueeaaQ4XlKwsybhn+aO93MkeZ71/7TOqP + uZ/VvvXU1/5PMecZ1VTSxnESOkFaABFBeodwE7oISAfpvYv0DopIs0FAehOBUKSEKiJdBaU3QUBF + RERYQJrUAIIFpb0JrMi67rv7fnjP5kNy5s65d+6d/J//b565Z+bLJgHz2g2yXXZP9JqTTAcPwwwv + yyeCJHm7panHdDEYaLrYmOR5Qy/ppVJlUkC9pTEeSCPv8X365WIyvd/L6LqkTpIbrJgTd8Q+XGh9 + 54OnEdX/283FQf+d2G+l5yJkGh6xlNmimjpCKxPKBssFXhluig0/u5D4/sTu0gW3nuskvj7vqPTU + Bj7gdalp5hGLzZgd2b5yu+u9+dSNT4PplCxxhdOhR1sGu7OZQZ3bakXQRBEUmxpio5UzF6+q0aA7 + xJPPInhF0jNovW4JCln87kZB2B65sm83XDi7OSCzJgnoIFLxD9lVz6Bt6ItzUgu7Tq2W/V11JTVt + 0FRAH1dNTYD1onxVQPln0ogCCFyRECqAEAEAOELAThIQtRVzsBESlbIVFRJFiEgKSYqII4TsJcXg + jjYIhJioo90fLFDN035Gl/AV8u5RCQn2Bx53ui+Bk//aAn/pUF7nL+65IFYuWB1jVYwVME6/1rgv + IUBCCJDcs0CbQxZoBGBHK4csUPlvG/jugv+lCR+AHHfjUBBolwAM4P0UzvhIMAiPiJ5lxKRVt4tD + J1fP/w1mY/tZw+vmD1+PG2MMulxUCV+39yxNbqVZJFtTS/I2EypD36UHRNQ7lozULYKNOGpkOPzl + Pco2PuCZJ6VFMfWSJvelMykBxQX0nY9VLT4JiEZnx5tKtGkzlbN3Uz0bQlIVi62WsXfFcxYGR4/z + ME07MkfKwnZN8LVaPENyEIv3q4V1ja2IKuliupjtai6STw0GclPypygXIUJkU2RN1P04IncqqTqj + Zkjo9DoEzOEWUq4pd/Ij3FJ4vT60ly00KB/ttdUOfmDIqBqXWuDR7MnzZIOHpQvDWgyp/PAckp40 + 6ZrpEoIWf+PBunPj9W5bLUqcdEeGtiWVtrg5rHcF2VJixKnI8EDthn9Y39f+TLljb2kjZ2OznTkj + nKWLO4O0uWdJ2DTttm/fotMSeWB8TufNmUeScbuw0UrrfEW3p/4vKuvc4kPcw73vLhRsZo8yDkpt + 2T/1kCWZuRJSWVqf9/jyixTj/EDTHhpV2362la1T7XDIF2FZ+wIJr3O6cjVKCTo5kOjGa6afO53C + bUayUtu7Ynq8VCeaYUmYys8VgMeSq/qd+RTfrgaS9h3pT2UXJYiqjF8cG6j7lNQdzrQW5ArSeXg8 + +GL1Kwt2uZOmDOMRy07t6kXCv3FFy5ztWxJVuslcf5PcFym70j4khCYAx6l9XRkFv8DPxUKAGAuB + lX0IkNnQO4vueT/Tz0NY6z07JSNN5I68tSZoDzpGj49VI/wYcPQPB0kPxIqVocC+b3L+8E19Ly+s + eWKl6+LoYmfj48Aqf8nH2cvbxScAZ+6ABCAKiMARYiKAFNbcEfC9ogiAK/57Y+i/8/dstHvl+Iha + Iv8VN9ixiYbJqY40PQ7d0uejDNqclMsvi15qlvoArNSLxK8Nk+nUk44rJJalWgLcw3huc5cbliKJ + Kb9QEKSuRvay9IhwhmeufXRiEty6PBvBvDCrnYdu4TDojv2m/IK072x5X4UCQe7XQvdbTm94f1Mx + qAjrm+FVgfHcC9Mx0iefxhfcdE1IADzD182AzG/XBlHVc2yoaxv90HWSGgMP/fvKCdlqeGdUHal5 + +BzvoKZfEQWfyf0aWkStSkuKzA7FGPnvgNKZdUlu4FEBKpiaMQ6VunYhw+zyE/7ycL/ejHHpkFto + G/AD5iOVW18yqkDP2TUMd78StrWyQr77ewm2R4oAygPHIQTwsT+H/PyXo0ucfTNTEhBg9RcGUBGR + /s4EOhDuCB4QnLrvzcEJQHBsEC3FPeS508Y8qBku6Bb/BJlBstl0Ptou3+b/Lk8kVUApPfpMTkGp + 5kXTj8RQmAOguw8FdQDLoRzFHPkwuX8+Lj6oxq3gxln5HhAMDwFBDVABlA4BQfJ/GRPjnkNx/6r/ + cDyM7WsqVFSbJb6S+Oj8/VK/kecBelqgSpjPBQsPcmjJ88bL8bWwAZrcGA/bWhNwjzYrVDdtNPD0 + pElduWk60wQzKOxenf9adN+SNGh5sjGejLArVm1y1YBuVKckcXo21vV1UMv7pDUi4Rv48zf5OdnP + b37emvZPgx35Qjx5vp5BOzPOjcw7uRYtddtJqEOPYsHWUo4+NZpVbpKYEfG1F37GFy4j4A3pWjgv + s3uDDDreSmYTt/qm9uiidvT1DjGBs3lNi/VXIQqXBwy82ZaB7jp/B0sL0FEyWor+YdrUT6ceOZpW + CwnPfr0R1qtnPJd5Psn9npTmwOeAprsMgbZ8K7kZfKJEfoy2T2VOeLAgVyGdgnUvFKtnvi5dfTCV + f8dHrFa74wIHDbcv5JR+zAVzFUXa+urqCi2nrmyF3aAAtqAsOsBxToHmLGNXFjtbn+K8wHzdR7Ve + wYEhRJAmN78ap7X5gvFK4VhaZvdJr4ZgHh8i6mVftqYMZAuP4cNKV5lItK/NfU80tLDpruoqjdd2 + FMK9amdcryuG46ljQyZzOI09WEao3Cy+dppt5kFFt919f0PCAXmY7r2kigL/kuqclEuMbxPDoZfY + hRF3SDxzLGK4mnJWQrvZBhdP6DxNX1Z/9wXk4BUJudrl0vXec6EI9RzOt0vRYWE5pHUcPfRNOEsO + ZkTv9hSatw0giQMBJKHtdxRQJPTvoQD/5zQgOOL/YsUIANgPSL5/EpA/MgI4FhuSCEBMah8a4ntF + OIAr/usZCxL8Z3aAcewAY9mBjbmS1W/eVEyw0iHPu0gqLdHHaw9N2bIVjvO7zZvr3q0lkmQkUH98 + vY38xKiE2xOaIciqZGsaUUWX1GsQLVzhVeSRAPvwa0nnON3Ls9Rvzzuf7R/PMKgiE2wrf1ssUBZI + Wv4mxaz7HCPhvKPvHEKfm0Z4toRE90W1Uo3VUDsM/1KJ83qPx/pJSzT9R5XH7yTt73nai/kX5thR + Cr06fWtjaoz4yGvLgAJ1vtkjjTlQv8YkmZXNKQFzKhYtY97cQO93NCdr1M8OYTCKN0PeXq66HHb8 + rWxljNVcpE4o4xpa2Gw6QVqoTMS0o0Z2B/GqGl+msqo8UfJaf2aQ4Cdt45tsYlxtUp721w0e36Ys + PcYR2vPxMX5Y7Bfr1T79ppik8PpmNh8uawbeh708vJJcqVJnxF9cqUwsY+IoKnZcsmFxneBVz7SO + mOSyesWmIavf/sBEjhN/9WWghfBrjqnzVpR6Kn7VG3gT9ffASOuRZrrqhuMDRhqzUmjKeQ71eoZa + pSvK0y1t3oHvvGc5x5tU0jpWWplMRkJil7TUgaKSuPEli+zyrdEKx8kWVPBlzCBGY1adrwjKW1h0 + 1SnofZStv3WVcOgbk9uWTX68vB8wHm288YLxpyV0WiZuKEW2k2p2DBQoCvskf/Hc8Gc1FYRanUtO + l9URCR2uiDg6lqX9MaWiXiXHPbX/3WBEzAE7MVh2zv8Cfz/g+cu85NjBCbRgAvITZHgGewtXFPHk + /8jVP0H5cMbjLXQSDE9QfERLqD2xUNQJf8kRKQqY78MNN4Wqk6OVoxGm/j9N+mDjFhu12GA9SEqs + ARFrBGIPc2cPYU4f0AW0D2FO4Z9h7r9c3wcIzsbdPCtBMAoITgKCbx50EgwfCA4B5L43BwbRi/xd + moXbVQX7ZC4eNt4Bducvwpx9PIDTBxcAA6InEKzMeJp4uI2ccWuErPfWCO2vKQvAli7+vtrN4WDN + H4yV+VeJmNNaWEHqO8MARtirIR8n9gxICvWEXWKaQsrV/gDyhBYHa5ig7Eab90uPkJ1GuTmybukm + 1eK8dZcRuyZ2sQKUlUNowtVoFV2jIfLEK/2MGkzrpxSi9fsqtt2mZIlhfBnvZY4XDDxg9kuSmpy3 + f6ok4x/IsQ69WpjgExL7sYcbrMLfGkVVl19MSJ6Bcf7mDEvO4ZfjdzNVt2MhdfE0T02ZDvnYHL+u + IjC2Jd3XILbiyVU2U86D6RtdpyhP40WlalHIQNZIIgdZ2hAMk6sdQs8tsu6rS5E9IWt9Ulo2U/V2 + hC5CT9lUEnGBh/F65UeejTHBk6wuqVVmkc6eXkU1Pm2nCYkKQfy8skg5qJYjpLla69NE/HUmL7qr + ykW+M6f5HfLarPRtw9qY7cRRYePD6xtr9Oh0nolnBai+ZSs7+SkL4tvhskR+RC+JKi+x0Dba2DxY + /e3JcYLGcflOCt7lMQfhJdRntGXKEN4gWqXBbB1VQKqhRpUWxNKHx9dRmVEgp+x3QuxJf25udmAg + +ze1ZJaSTVWOoE9ZG01uNRqoycVL/oxLCxJpAQwau4PVHM6X3pd/24pehAQtuEiXbwEYAs248fFL + HnY3ZV5mGmvrNAWZsKP9qRFsgSvyZJVym3d6861a0BEZJheMtdWUmxWeZvhakAWpuW0HZLc0eHi4 + PtW/CD0SqPsMjiSoAJAE98AgEBCc/G+D69fTgT9ejuQEt+PM53cRk+LDyQ+/ecHexY8SBE4BHK6l + Azh+nEgAx1rbdpJSUdzah8FgmnG+Bo+E0IeLjGOA/aFTyOHGgGEOfxDvL7ciMPzz7tBo7iDOv4xs + w4NdkVh/YjMBEoRnoBpXGPIwy8uch2gEflZfuK5aj1gOTsEcWOanamjZJCFKKUH1ysCR04hoWP8m + 3VxqOr2Lt4VgWfU0jI+Ki0KFbNMlPFHV/UmivcZIaxTBuPMKPOzN2P3u0puY2EK9617+xSCC+u36 + mkdd85jtjnC84dm6TPu8fulO907rzfnNx3R9KEl3jADR2opqOLV/H/OuifSzSdMTxnOdESQ0rYXu + abdnNpv5HDZOncK/p3afXT6Qraj+PW1vguKmxXGMji+D/N3tYjXKKGmjWtfW+kLEqB1Vo7hpHCFM + jinBKjd2do4xci4p9VnAZ9lFJjckhSuou96Y2zn/CMs4t+GQhqAFWxQaCebFDk84f/xHRHAkmA57 + iHpPmnH/WiL+6zdthzRpBTAcliTkxxtDELbxgxpCOOXexLE4XAwBx33M/6RIxflQ6Sxd3s5F7hg6 + z4FmZ+aMhwE/pUw4rcC1odfBkSb4TGZnUD6LZCFn+EQY+Tqt1oen1pavlCRlcMwhnGgWySeHX8dq + c7ly542nB51NE+oXP+tAW/x2qvwavceC/NE+n9FdrxVStELW2pkL1/n1zbNYlsHVQupJSmwDy18h + xDaLRgHXSAKuoc5DrXMcLHgJWRw7q7ocMweWbcbkfVVrtseGZ7aROzN2Zi8eT1Whjri0919I/vDJ + V+nRu/aAlzvP82sh2XBCgxnN2rpHLEZW6PXQ+cSx2PoKSPAiNFNW3NXtdq+V/Mv5/NcjedVzwyPk + V6GmQwqCA551b/ikQxcVjjSHEOtNnFwvMdOsivIFrZS38q1dKoiCS/0Wq4T3H6C++08NCmVuZHN0 + cmVhbQ0KZW5kb2JqDQoyNTEgMCBvYmoNClsgMjI2IDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAg + MjY3IDAgNTA3IDUwNyAwIDUwNyA1MDcgMCAwIDAgMCAwIDI3NiAwIDAgMCAwIDAgMCA2MDYgNTYx + IDAgMCAwIDQ1OSAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCA0NzMgNDk1IDAgMCAwIDAgMCAwIDAg + MCAwIDAgNDk4IDAgNDk0IDUzNyAwIDUzNyA1MDMgMCA0NzQgMCAyNDYgMCAwIDI0NiAwIDUzNyA1 + MzggNTM3IDAgMzU1IDM5OSAzNDcgNTM3IDAgMCA0NTldIA0KZW5kb2JqDQoyNTIgMCBvYmoNCjw8 + L0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggMzM2MzMvTGVuZ3RoMSAxMDI3MDQ+Pg0Kc3RyZWFt + DQp4nOydCXiTVdb4z33fLM3WJl3SJU2aNk26J90otAUaulEoW6HBFgRaaLG4UYGqoAzgglhFVFzG + BUFHxwWUNIAUQUTFXdQZUccdlxnXjqjgKNDkf+570tIiuMz4jd//+XLa8/7uPffcfXsj8SkwANDj + QwZNVeWV9bcVPhsGrO2PAGqMj6t4/SnTOGBzDqBD98Qprvz1X835GoCtwlxNc85pblc9YVwHcNYN + mP7wnPMXWcseafgS4NpKAMWque1nnHPn5+WbANrHAaiizjh78dyPlhs+ArjpRYC5+rbW5pbvT198 + CZanxfKK2tCg25n4KsYxP6S2nbPowsefSy3F+KcA8zadPX9O81VvnncY4Ng76D71nOYL29Pvi7Ng + ehv6W89pXdR86yUbzge24HuMX3Zu8zmt75e/mgusoBAg96r2+QsXBUywEvuzh/u3L2ht/8H9/EKA + xU0Axg+Aj4Wi5IMVj770+KyI4YchPgy47Pzi4hc53xhzweSjb/UOUSeETUJfFQhAgvkU4Ae2V73h + 6FtHVqoTpJIGSPwmbjFlwlrQw4UgYk49uABr1X6P9QqYKsrGCrtADmHyW+QFWKSFKL4CjwgQBkKE + UhBlMlGQfQzOwB5IvQiLVfGyx0+xWsEKYH+R2qC8Q3BYgQV4mrhHHs57CtGy8OOtYS/jbL0JsfAr + RXYxrP61eX5OxE2/fZm/RBT+/0694rNQdlL7d6D9b9R/MpGNBvWvzjMM982p0q4bnCauObXvIL8G + WCm7HRp+ykfQ/3RZmB53yrRjJ8+rqMF6nzl5muwt8PxUfSeK2Hu8HJn9hHGYDxUnzXMRmAbVuQku + +zV1nkxkMnD8Ej/xWxj9q8uuhT/8Ct/aQXEljP219f1vFPGFwXPG5cS+nijsX3DWz5WLPj87tj/l + 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 + KrFHQKlmZxW8qHpfRETYMZZdos8K9Tc0bmVNGZWf8PP4qiK6kZk7D1Hp68k6+cqujnrMi0+QTUvB + 02LWgEvJpMfQvQGNGyJ9Cp8e2OiVa3QkzxGYHxUIMdPMzhyDZ2iKtYRjadyCZoFjccXgVeuxLKL/ + AfpFWhMNCmVuZHN0cmVhbQ0KZW5kb2JqDQoyNTMgMCBvYmoNCjw8L1R5cGUvTWV0YWRhdGEvU3Vi + dHlwZS9YTUwvTGVuZ3RoIDMwODQ+Pg0Kc3RyZWFtDQo8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9 + Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/Pjx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6 + bWV0YS8iIHg6eG1wdGs9IjMuMS03MDEiPgo8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cu + dzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgo8cmRmOkRlc2NyaXB0aW9uIHJkZjph + Ym91dD0iIiAgeG1sbnM6cGRmPSJodHRwOi8vbnMuYWRvYmUuY29tL3BkZi8xLjMvIj4KPHBkZjpQ + cm9kdWNlcj5NaWNyb3NvZnTCriBXb3JkIGZvciBPZmZpY2UgMzY1PC9wZGY6UHJvZHVjZXI+PC9y + ZGY6RGVzY3JpcHRpb24+CjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiICB4bWxuczpkYz0i + aHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iPgo8ZGM6Y3JlYXRvcj48cmRmOlNlcT48 + cmRmOmxpPktyaXN0YSBQcmF0aWNvPC9yZGY6bGk+PC9yZGY6U2VxPjwvZGM6Y3JlYXRvcj48L3Jk + ZjpEZXNjcmlwdGlvbj4KPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgIHhtbG5zOnhtcD0i + aHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyI+Cjx4bXA6Q3JlYXRvclRvb2w+TWljcm9zb2Z0 + wq4gV29yZCBmb3IgT2ZmaWNlIDM2NTwveG1wOkNyZWF0b3JUb29sPjx4bXA6Q3JlYXRlRGF0ZT4y + MDIwLTA0LTIyVDE2OjQ1OjI5LTA3OjAwPC94bXA6Q3JlYXRlRGF0ZT48eG1wOk1vZGlmeURhdGU+ + MjAyMC0wNC0yMlQxNjo0NToyOS0wNzowMDwveG1wOk1vZGlmeURhdGU+PC9yZGY6RGVzY3JpcHRp + b24+CjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiICB4bWxuczp4bXBNTT0iaHR0cDovL25z + LmFkb2JlLmNvbS94YXAvMS4wL21tLyI+Cjx4bXBNTTpEb2N1bWVudElEPnV1aWQ6NThCQjA4MDUt + RjY5Ri00NDBGLTgzOUItMURFMDI1NjUxREUyPC94bXBNTTpEb2N1bWVudElEPjx4bXBNTTpJbnN0 + YW5jZUlEPnV1aWQ6NThCQjA4MDUtRjY5Ri00NDBGLTgzOUItMURFMDI1NjUxREUyPC94bXBNTTpJ + bnN0YW5jZUlEPjwvcmRmOkRlc2NyaXB0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKPC9y + ZGY6UkRGPjwveDp4bXBtZXRhPjw/eHBhY2tldCBlbmQ9InciPz4NCmVuZHN0cmVhbQ0KZW5kb2Jq + DQoyNTQgMCBvYmoNCjw8L0Rpc3BsYXlEb2NUaXRsZSB0cnVlPj4NCmVuZG9iag0KMjU1IDAgb2Jq + DQo8PC9UeXBlL1hSZWYvU2l6ZSAyNTUvV1sgMSA0IDJdIC9Sb290IDEgMCBSL0luZm8gMTUgMCBS + L0lEWzwwNTA4QkI1ODlGRjYwRjQ0ODM5QjFERTAyNTY1MURFMj48MDUwOEJCNTg5RkY2MEY0NDgz + OUIxREUwMjU2NTFERTI+XSAvRmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0aCA1MDc+Pg0Kc3RyZWFt + DQp4nDXV93fPZxQH8E9sSojZGkG0tQmKGrVHFKU2tUeomrXTauy9YlMdKFV7U3vvHUWJvX7rv5B+ + 83nx3HOe17nn3Ht/fQdB5KWnR0X+mCDIYAv+C4lKD8mTFBJdJiRvASRgcki+SiExcSH5dQU7hhRK + DCk9JggyRU4XCZ7jBV7iFZ7h3eTryF5c8vsuO6KQCZmRBVmRDTmQE7nwAXIjD6LRCoVRCPmQF/kR + g4IogASUwIcogqL4CMVRDB+jJGJRGqVQBnGoiE/xCcqhLCqgPKqjMiqhKqqgGuJRB5+hBmqhJj5H + bTRCPdTFF6iPhmiAlmiCxmiGpmiB5vgSrdEGbfEV2qE9vkYHdEQndEYXdEU3dEcPfIOe6IXe6IO+ + 6If+eIMBGIhBSMRgDMG3GIrvMAzDMQIjMQqj8T3GYCzGYTwmYCImIQk/4EdMxk9IxhRMxTRMxwzM + xCzMxhzMxTzMx1ssxQIsxCIsxhKkYBmWYwVWYhVWYw3uYj1+x89Yi1+wDr/hV6RiCzZiAzbhD/yJ + zdiFrfgL27ENO7EDB7EHu7EPe3EA+3Ech3EIR/A3juEozuEkTuA0TuEszuAqLuA8LuEiruAy7uA6 + ruEmbuA2buEf3MN9PMC/eIhHSMNjPMHTSFpUSQ3DJj4jvSJVPCQqNmRGWkhK/SD4H/tbjC8NCmVu + ZHN0cmVhbQ0KZW5kb2JqDQp4cmVmDQowIDI1Ng0KMDAwMDAwMDAxNiA2NTUzNSBmDQowMDAwMDAw + MDE3IDAwMDAwIG4NCjAwMDAwMDAxNjggMDAwMDAgbg0KMDAwMDAwMDIzOCAwMDAwMCBuDQowMDAw + MDAwNTExIDAwMDAwIG4NCjAwMDAwMDM0NTAgMDAwMDAgbg0KMDAwMDAwMzYxOSAwMDAwMCBuDQow + MDAwMDAzODU5IDAwMDAwIG4NCjAwMDAwMDM5MTIgMDAwMDAgbg0KMDAwMDAwMzk2NSAwMDAwMCBu + DQowMDAwMDA0MTQwIDAwMDAwIG4NCjAwMDAwMDQzODYgMDAwMDAgbg0KMDAwMDAwNDY1MiAwMDAw + MCBuDQowMDAwMDA1MjAzIDAwMDAwIG4NCjAwMDAwMDU0NzggMDAwMDAgbg0KMDAwMDAwODU2MyAw + MDAwMCBuDQowMDAwMDAwMDE3IDY1NTM1IGYNCjAwMDAwMDAwMTggNjU1MzUgZg0KMDAwMDAwMDAx + OSA2NTUzNSBmDQowMDAwMDAwMDIwIDY1NTM1IGYNCjAwMDAwMDAwMjEgNjU1MzUgZg0KMDAwMDAw + MDAyMiA2NTUzNSBmDQowMDAwMDAwMDIzIDY1NTM1IGYNCjAwMDAwMDAwMjQgNjU1MzUgZg0KMDAw + MDAwMDAyNSA2NTUzNSBmDQowMDAwMDAwMDI2IDY1NTM1IGYNCjAwMDAwMDAwMjcgNjU1MzUgZg0K + MDAwMDAwMDAyOCA2NTUzNSBmDQowMDAwMDAwMDI5IDY1NTM1IGYNCjAwMDAwMDAwMzAgNjU1MzUg + Zg0KMDAwMDAwMDAzMSA2NTUzNSBmDQowMDAwMDAwMDMyIDY1NTM1IGYNCjAwMDAwMDAwMzMgNjU1 + MzUgZg0KMDAwMDAwMDAzNCA2NTUzNSBmDQowMDAwMDAwMDM1IDY1NTM1IGYNCjAwMDAwMDAwMzYg + NjU1MzUgZg0KMDAwMDAwMDAzNyA2NTUzNSBmDQowMDAwMDAwMDM4IDY1NTM1IGYNCjAwMDAwMDAw + MzkgNjU1MzUgZg0KMDAwMDAwMDA0MCA2NTUzNSBmDQowMDAwMDAwMDQxIDY1NTM1IGYNCjAwMDAw + MDAwNDIgNjU1MzUgZg0KMDAwMDAwMDA0MyA2NTUzNSBmDQowMDAwMDAwMDQ0IDY1NTM1IGYNCjAw + MDAwMDAwNDUgNjU1MzUgZg0KMDAwMDAwMDA0NiA2NTUzNSBmDQowMDAwMDAwMDQ3IDY1NTM1IGYN + CjAwMDAwMDAwNDggNjU1MzUgZg0KMDAwMDAwMDA0OSA2NTUzNSBmDQowMDAwMDAwMDUwIDY1NTM1 + IGYNCjAwMDAwMDAwNTEgNjU1MzUgZg0KMDAwMDAwMDA1MiA2NTUzNSBmDQowMDAwMDAwMDUzIDY1 + NTM1IGYNCjAwMDAwMDAwNTQgNjU1MzUgZg0KMDAwMDAwMDA1NSA2NTUzNSBmDQowMDAwMDAwMDU2 + IDY1NTM1IGYNCjAwMDAwMDAwNTcgNjU1MzUgZg0KMDAwMDAwMDA1OCA2NTUzNSBmDQowMDAwMDAw + MDU5IDY1NTM1IGYNCjAwMDAwMDAwNjAgNjU1MzUgZg0KMDAwMDAwMDA2MSA2NTUzNSBmDQowMDAw + MDAwMDYyIDY1NTM1IGYNCjAwMDAwMDAwNjMgNjU1MzUgZg0KMDAwMDAwMDA2NCA2NTUzNSBmDQow + MDAwMDAwMDY1IDY1NTM1IGYNCjAwMDAwMDAwNjYgNjU1MzUgZg0KMDAwMDAwMDA2NyA2NTUzNSBm + DQowMDAwMDAwMDY4IDY1NTM1IGYNCjAwMDAwMDAwNjkgNjU1MzUgZg0KMDAwMDAwMDA3MCA2NTUz + NSBmDQowMDAwMDAwMDcxIDY1NTM1IGYNCjAwMDAwMDAwNzIgNjU1MzUgZg0KMDAwMDAwMDA3MyA2 + NTUzNSBmDQowMDAwMDAwMDc0IDY1NTM1IGYNCjAwMDAwMDAwNzUgNjU1MzUgZg0KMDAwMDAwMDA3 + NiA2NTUzNSBmDQowMDAwMDAwMDc3IDY1NTM1IGYNCjAwMDAwMDAwNzggNjU1MzUgZg0KMDAwMDAw + MDA3OSA2NTUzNSBmDQowMDAwMDAwMDgwIDY1NTM1IGYNCjAwMDAwMDAwODEgNjU1MzUgZg0KMDAw + MDAwMDA4MiA2NTUzNSBmDQowMDAwMDAwMDgzIDY1NTM1IGYNCjAwMDAwMDAwODQgNjU1MzUgZg0K + MDAwMDAwMDA4NSA2NTUzNSBmDQowMDAwMDAwMDg2IDY1NTM1IGYNCjAwMDAwMDAwODcgNjU1MzUg + Zg0KMDAwMDAwMDA4OCA2NTUzNSBmDQowMDAwMDAwMDg5IDY1NTM1IGYNCjAwMDAwMDAwOTAgNjU1 + MzUgZg0KMDAwMDAwMDA5MSA2NTUzNSBmDQowMDAwMDAwMDkyIDY1NTM1IGYNCjAwMDAwMDAwOTMg + NjU1MzUgZg0KMDAwMDAwMDA5NCA2NTUzNSBmDQowMDAwMDAwMDk1IDY1NTM1IGYNCjAwMDAwMDAw + OTYgNjU1MzUgZg0KMDAwMDAwMDA5NyA2NTUzNSBmDQowMDAwMDAwMDk4IDY1NTM1IGYNCjAwMDAw + MDAwOTkgNjU1MzUgZg0KMDAwMDAwMDEwMCA2NTUzNSBmDQowMDAwMDAwMTAxIDY1NTM1IGYNCjAw + MDAwMDAxMDIgNjU1MzUgZg0KMDAwMDAwMDEwMyA2NTUzNSBmDQowMDAwMDAwMTA0IDY1NTM1IGYN + CjAwMDAwMDAxMDUgNjU1MzUgZg0KMDAwMDAwMDEwNiA2NTUzNSBmDQowMDAwMDAwMTA3IDY1NTM1 + IGYNCjAwMDAwMDAxMDggNjU1MzUgZg0KMDAwMDAwMDEwOSA2NTUzNSBmDQowMDAwMDAwMTEwIDY1 + NTM1IGYNCjAwMDAwMDAxMTEgNjU1MzUgZg0KMDAwMDAwMDExMiA2NTUzNSBmDQowMDAwMDAwMTEz + IDY1NTM1IGYNCjAwMDAwMDAxMTQgNjU1MzUgZg0KMDAwMDAwMDExNSA2NTUzNSBmDQowMDAwMDAw + MTE2IDY1NTM1IGYNCjAwMDAwMDAxMTcgNjU1MzUgZg0KMDAwMDAwMDExOCA2NTUzNSBmDQowMDAw + MDAwMTE5IDY1NTM1IGYNCjAwMDAwMDAxMjAgNjU1MzUgZg0KMDAwMDAwMDEyMSA2NTUzNSBmDQow + MDAwMDAwMTIyIDY1NTM1IGYNCjAwMDAwMDAxMjMgNjU1MzUgZg0KMDAwMDAwMDEyNCA2NTUzNSBm + DQowMDAwMDAwMTI1IDY1NTM1IGYNCjAwMDAwMDAxMjYgNjU1MzUgZg0KMDAwMDAwMDEyNyA2NTUz + NSBmDQowMDAwMDAwMTI4IDY1NTM1IGYNCjAwMDAwMDAxMjkgNjU1MzUgZg0KMDAwMDAwMDEzMCA2 + NTUzNSBmDQowMDAwMDAwMTMxIDY1NTM1IGYNCjAwMDAwMDAxMzIgNjU1MzUgZg0KMDAwMDAwMDEz + MyA2NTUzNSBmDQowMDAwMDAwMTM0IDY1NTM1IGYNCjAwMDAwMDAxMzUgNjU1MzUgZg0KMDAwMDAw + MDEzNiA2NTUzNSBmDQowMDAwMDAwMTM3IDY1NTM1IGYNCjAwMDAwMDAxMzggNjU1MzUgZg0KMDAw + MDAwMDEzOSA2NTUzNSBmDQowMDAwMDAwMTQwIDY1NTM1IGYNCjAwMDAwMDAxNDEgNjU1MzUgZg0K + MDAwMDAwMDE0MiA2NTUzNSBmDQowMDAwMDAwMTQzIDY1NTM1IGYNCjAwMDAwMDAxNDQgNjU1MzUg + Zg0KMDAwMDAwMDE0NSA2NTUzNSBmDQowMDAwMDAwMTQ2IDY1NTM1IGYNCjAwMDAwMDAxNDcgNjU1 + MzUgZg0KMDAwMDAwMDE0OCA2NTUzNSBmDQowMDAwMDAwMTQ5IDY1NTM1IGYNCjAwMDAwMDAxNTAg + NjU1MzUgZg0KMDAwMDAwMDE1MSA2NTUzNSBmDQowMDAwMDAwMTUyIDY1NTM1IGYNCjAwMDAwMDAx + NTMgNjU1MzUgZg0KMDAwMDAwMDE1NCA2NTUzNSBmDQowMDAwMDAwMTU1IDY1NTM1IGYNCjAwMDAw + MDAxNTYgNjU1MzUgZg0KMDAwMDAwMDE1NyA2NTUzNSBmDQowMDAwMDAwMTU4IDY1NTM1IGYNCjAw + MDAwMDAxNTkgNjU1MzUgZg0KMDAwMDAwMDE2MCA2NTUzNSBmDQowMDAwMDAwMTYxIDY1NTM1IGYN + CjAwMDAwMDAxNjIgNjU1MzUgZg0KMDAwMDAwMDE2MyA2NTUzNSBmDQowMDAwMDAwMTY0IDY1NTM1 + IGYNCjAwMDAwMDAxNjUgNjU1MzUgZg0KMDAwMDAwMDE2NiA2NTUzNSBmDQowMDAwMDAwMTY3IDY1 + NTM1IGYNCjAwMDAwMDAxNjggNjU1MzUgZg0KMDAwMDAwMDE2OSA2NTUzNSBmDQowMDAwMDAwMTcw + IDY1NTM1IGYNCjAwMDAwMDAxNzEgNjU1MzUgZg0KMDAwMDAwMDE3MiA2NTUzNSBmDQowMDAwMDAw + MTczIDY1NTM1IGYNCjAwMDAwMDAxNzQgNjU1MzUgZg0KMDAwMDAwMDE3NSA2NTUzNSBmDQowMDAw + MDAwMTc2IDY1NTM1IGYNCjAwMDAwMDAxNzcgNjU1MzUgZg0KMDAwMDAwMDE3OCA2NTUzNSBmDQow + MDAwMDAwMTc5IDY1NTM1IGYNCjAwMDAwMDAxODAgNjU1MzUgZg0KMDAwMDAwMDE4MSA2NTUzNSBm + DQowMDAwMDAwMTgyIDY1NTM1IGYNCjAwMDAwMDAxODMgNjU1MzUgZg0KMDAwMDAwMDE4NCA2NTUz + NSBmDQowMDAwMDAwMTg1IDY1NTM1IGYNCjAwMDAwMDAxODYgNjU1MzUgZg0KMDAwMDAwMDE4NyA2 + NTUzNSBmDQowMDAwMDAwMTg4IDY1NTM1IGYNCjAwMDAwMDAxODkgNjU1MzUgZg0KMDAwMDAwMDE5 + MCA2NTUzNSBmDQowMDAwMDAwMTkxIDY1NTM1IGYNCjAwMDAwMDAxOTIgNjU1MzUgZg0KMDAwMDAw + MDE5MyA2NTUzNSBmDQowMDAwMDAwMTk0IDY1NTM1IGYNCjAwMDAwMDAxOTUgNjU1MzUgZg0KMDAw + MDAwMDE5NiA2NTUzNSBmDQowMDAwMDAwMTk3IDY1NTM1IGYNCjAwMDAwMDAxOTggNjU1MzUgZg0K + MDAwMDAwMDE5OSA2NTUzNSBmDQowMDAwMDAwMjAwIDY1NTM1IGYNCjAwMDAwMDAyMDEgNjU1MzUg + Zg0KMDAwMDAwMDIwMiA2NTUzNSBmDQowMDAwMDAwMjAzIDY1NTM1IGYNCjAwMDAwMDAyMDQgNjU1 + MzUgZg0KMDAwMDAwMDIwNSA2NTUzNSBmDQowMDAwMDAwMjA2IDY1NTM1IGYNCjAwMDAwMDAyMDcg + NjU1MzUgZg0KMDAwMDAwMDIwOCA2NTUzNSBmDQowMDAwMDAwMjA5IDY1NTM1IGYNCjAwMDAwMDAy + MTAgNjU1MzUgZg0KMDAwMDAwMDIxMSA2NTUzNSBmDQowMDAwMDAwMjEyIDY1NTM1IGYNCjAwMDAw + MDAyMTMgNjU1MzUgZg0KMDAwMDAwMDIxNCA2NTUzNSBmDQowMDAwMDAwMjE1IDY1NTM1IGYNCjAw + MDAwMDAyMTYgNjU1MzUgZg0KMDAwMDAwMDIxNyA2NTUzNSBmDQowMDAwMDAwMjE4IDY1NTM1IGYN + CjAwMDAwMDAyMTkgNjU1MzUgZg0KMDAwMDAwMDIyMCA2NTUzNSBmDQowMDAwMDAwMjIxIDY1NTM1 + IGYNCjAwMDAwMDAyMjIgNjU1MzUgZg0KMDAwMDAwMDIyMyA2NTUzNSBmDQowMDAwMDAwMjI0IDY1 + NTM1IGYNCjAwMDAwMDAyMjUgNjU1MzUgZg0KMDAwMDAwMDIyNiA2NTUzNSBmDQowMDAwMDAwMjI3 + IDY1NTM1IGYNCjAwMDAwMDAyMjggNjU1MzUgZg0KMDAwMDAwMDIyOSA2NTUzNSBmDQowMDAwMDAw + MjMwIDY1NTM1IGYNCjAwMDAwMDAyMzEgNjU1MzUgZg0KMDAwMDAwMDIzMiA2NTUzNSBmDQowMDAw + MDAwMjMzIDY1NTM1IGYNCjAwMDAwMDAyMzQgNjU1MzUgZg0KMDAwMDAwMDIzNSA2NTUzNSBmDQow + MDAwMDAwMjM2IDY1NTM1IGYNCjAwMDAwMDAyMzcgNjU1MzUgZg0KMDAwMDAwMDIzOCA2NTUzNSBm + DQowMDAwMDAwMjM5IDY1NTM1IGYNCjAwMDAwMDAyNDAgNjU1MzUgZg0KMDAwMDAwMDI0MSA2NTUz + NSBmDQowMDAwMDAwMjQyIDY1NTM1IGYNCjAwMDAwMDAyNDMgNjU1MzUgZg0KMDAwMDAwMDI0NCA2 + NTUzNSBmDQowMDAwMDAwMjQ1IDY1NTM1IGYNCjAwMDAwMDAyNDYgNjU1MzUgZg0KMDAwMDAwMDI0 + NyA2NTUzNSBmDQowMDAwMDAwMjQ4IDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAx + MTk4NyAwMDAwMCBuDQowMDAwMDEyMjg5IDAwMDAwIG4NCjAwMDAwNjU1NjQgMDAwMDAgbg0KMDAw + MDA2NTgyMiAwMDAwMCBuDQowMDAwMDk5NTQ4IDAwMDAwIG4NCjAwMDAxMDI3MTYgMDAwMDAgbg0K + MDAwMDEwMjc2MiAwMDAwMCBuDQp0cmFpbGVyDQo8PC9TaXplIDI1Ni9Sb290IDEgMCBSL0luZm8g + MTUgMCBSL0lEWzwwNTA4QkI1ODlGRjYwRjQ0ODM5QjFERTAyNTY1MURFMj48MDUwOEJCNTg5RkY2 + MEY0NDgzOUIxREUwMjU2NTFERTI+XSA+Pg0Kc3RhcnR4cmVmDQoxMDM0NzINCiUlRU9GDQp4cmVm + DQowIDANCnRyYWlsZXINCjw8L1NpemUgMjU2L1Jvb3QgMSAwIFIvSW5mbyAxNSAwIFIvSURbPDA1 + MDhCQjU4OUZGNjBGNDQ4MzlCMURFMDI1NjUxREUyPjwwNTA4QkI1ODlGRjYwRjQ0ODM5QjFERTAy + NTY1MURFMj5dIC9QcmV2IDEwMzQ3Mi9YUmVmU3RtIDEwMjc2Mj4+DQpzdGFydHhyZWYNCjEwODc1 + Mg0KJSVFT0Y= + headers: + Content-Type: + - application/pdf + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/4a056f7f-86e8-4720-9f7c-98c05ea376d8/analyze?includeTextDetails=true + response: + body: + string: '' + headers: + apim-request-id: 4082742d-b29c-45fe-901e-1797d48bd02c + content-length: '0' + date: Thu, 30 Apr 2020 23:07:12 GMT + operation-location: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/4a056f7f-86e8-4720-9f7c-98c05ea376d8/analyzeresults/232e2d4b-f75a-4bce-9ab0-04740d100207 + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '84' + status: + code: 202 + message: Accepted + url: https://westus.api.cognitive.microsoft.com//formrecognizer/v2.0-preview/custom/models/4a056f7f-86e8-4720-9f7c-98c05ea376d8/analyze?includeTextDetails=true +- request: + body: null + headers: + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/4a056f7f-86e8-4720-9f7c-98c05ea376d8/analyzeresults/232e2d4b-f75a-4bce-9ab0-04740d100207 + response: + body: + string: '{"status":"notStarted","createdDateTime":"2020-04-30T23:07:13Z","lastUpdatedDateTime":"2020-04-30T23:07:13Z"}' + headers: + apim-request-id: 60c43f9b-e89c-4a65-8783-e8d9160c5a5d + content-type: application/json; charset=utf-8 + date: Thu, 30 Apr 2020 23:07:17 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + transfer-encoding: chunked + x-content-type-options: nosniff + x-envoy-upstream-service-time: '41' + status: + code: 200 + message: OK + url: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/4a056f7f-86e8-4720-9f7c-98c05ea376d8/analyzeresults/232e2d4b-f75a-4bce-9ab0-04740d100207 +- request: + body: null + headers: + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/4a056f7f-86e8-4720-9f7c-98c05ea376d8/analyzeresults/232e2d4b-f75a-4bce-9ab0-04740d100207 + response: + body: + string: '{"status":"notStarted","createdDateTime":"2020-04-30T23:07:13Z","lastUpdatedDateTime":"2020-04-30T23:07:13Z"}' + headers: + apim-request-id: 156e47ec-3741-4f1f-a492-e01faf3f5b0d + content-type: application/json; charset=utf-8 + date: Thu, 30 Apr 2020 23:07:23 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + transfer-encoding: chunked + x-content-type-options: nosniff + x-envoy-upstream-service-time: '170' + status: + code: 200 + message: OK + url: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/4a056f7f-86e8-4720-9f7c-98c05ea376d8/analyzeresults/232e2d4b-f75a-4bce-9ab0-04740d100207 +- request: + body: null + headers: + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/4a056f7f-86e8-4720-9f7c-98c05ea376d8/analyzeresults/232e2d4b-f75a-4bce-9ab0-04740d100207 + response: + body: + string: '{"status":"notStarted","createdDateTime":"2020-04-30T23:07:13Z","lastUpdatedDateTime":"2020-04-30T23:07:13Z"}' + headers: + apim-request-id: 4ac6b871-ad23-4123-a867-e154d5199123 + content-type: application/json; charset=utf-8 + date: Thu, 30 Apr 2020 23:07:28 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + transfer-encoding: chunked + x-content-type-options: nosniff + x-envoy-upstream-service-time: '101' + status: + code: 200 + message: OK + url: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/4a056f7f-86e8-4720-9f7c-98c05ea376d8/analyzeresults/232e2d4b-f75a-4bce-9ab0-04740d100207 +- request: + body: null + headers: + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/4a056f7f-86e8-4720-9f7c-98c05ea376d8/analyzeresults/232e2d4b-f75a-4bce-9ab0-04740d100207 + response: + body: + string: '{"status":"succeeded","createdDateTime":"2020-04-30T23:07:13Z","lastUpdatedDateTime":"2020-04-30T23:07:30Z","analyzeResult":{"version":"2.0.0","readResults":[{"page":1,"language":"en","angle":0,"width":8.5,"height":11,"unit":"inch","lines":[{"language":"en","boundingBox":[0.8861,1.1217,2.3783,1.1217,2.3783,1.2812,0.8861,1.2812],"text":"Company + A Invoice","words":[{"boundingBox":[0.8861,1.1232,1.6203,1.1232,1.6203,1.2812,0.8861,1.2812],"text":"Company","confidence":1},{"boundingBox":[1.6696,1.1242,1.7749,1.1242,1.7749,1.2473,1.6696,1.2473],"text":"A","confidence":1},{"boundingBox":[1.8389,1.1217,2.3783,1.1217,2.3783,1.2485,1.8389,1.2485],"text":"Invoice","confidence":1}]},{"language":"en","boundingBox":[6.0211,1.0656,7.0357,1.0656,7.0357,1.2121,6.0211,1.2121],"text":"Invoice + For:","words":[{"boundingBox":[6.0211,1.0656,6.6362,1.0656,6.6362,1.2121,6.0211,1.2121],"text":"Invoice","confidence":1},{"boundingBox":[6.7147,1.0691,7.0357,1.0691,7.0357,1.2121,6.7147,1.2121],"text":"For:","confidence":1}]},{"language":"en","boundingBox":[0.8791,1.4825,1.5657,1.4825,1.5657,1.6155,0.8791,1.6155],"text":"Address:","words":[{"boundingBox":[0.8791,1.4825,1.5657,1.4825,1.5657,1.6155,0.8791,1.6155],"text":"Address:","confidence":1}]},{"language":"en","boundingBox":[6.0164,1.4503,6.8967,1.4503,6.8967,1.5931,6.0164,1.5931],"text":"Bilbo + Baggins","words":[{"boundingBox":[6.0164,1.4503,6.3392,1.4503,6.3392,1.5649,6.0164,1.5649],"text":"Bilbo","confidence":1},{"boundingBox":[6.396,1.4556,6.8967,1.4556,6.8967,1.5931,6.396,1.5931],"text":"Baggins","confidence":1}]},{"language":"en","boundingBox":[6.0165,1.6707,7.1006,1.6707,7.1006,1.7854,6.0165,1.7854],"text":"123 + Hobbit Lane","words":[{"boundingBox":[6.0165,1.6772,6.2434,1.6772,6.2434,1.7854,6.0165,1.7854],"text":"123","confidence":1},{"boundingBox":[6.3033,1.6707,6.7463,1.6707,6.7463,1.7854,6.3033,1.7854],"text":"Hobbit","confidence":1},{"boundingBox":[6.803,1.6782,7.1006,1.6782,7.1006,1.7854,6.803,1.7854],"text":"Lane","confidence":1}]},{"language":"en","boundingBox":[0.8852,1.846,1.713,1.846,1.713,1.9554,0.8852,1.9554],"text":"567 + Main St.","words":[{"boundingBox":[0.8852,1.8472,1.1203,1.8472,1.1203,1.9554,0.8852,1.9554],"text":"567","confidence":1},{"boundingBox":[1.1777,1.846,1.5022,1.846,1.5022,1.9554,1.1777,1.9554],"text":"Main","confidence":1},{"boundingBox":[1.5558,1.8472,1.713,1.8472,1.713,1.9554,1.5558,1.9554],"text":"St.","confidence":1}]},{"language":"en","boundingBox":[6.0164,1.891,6.9793,1.891,6.9793,2.0275,6.0164,2.0275],"text":"Redmond, + WA","words":[{"boundingBox":[6.0164,1.891,6.6861,1.891,6.6861,2.0275,6.0164,2.0275],"text":"Redmond,","confidence":1},{"boundingBox":[6.7408,1.8982,6.9793,1.8982,6.9793,2.0044,6.7408,2.0044],"text":"WA","confidence":1}]},{"language":"en","boundingBox":[0.891,2.061,1.8537,2.061,1.8537,2.1975,0.891,2.1975],"text":"Redmond, + WA","words":[{"boundingBox":[0.891,2.061,1.5605,2.061,1.5605,2.1975,0.891,2.1975],"text":"Redmond,","confidence":1},{"boundingBox":[1.6152,2.0682,1.8537,2.0682,1.8537,2.1744,1.6152,2.1744],"text":"WA","confidence":1}]},{"language":"en","boundingBox":[6.0105,2.1187,6.9371,2.1187,6.9371,2.2254,6.0105,2.2254],"text":"555-555-5555","words":[{"boundingBox":[6.0105,2.1187,6.9371,2.1187,6.9371,2.2254,6.0105,2.2254],"text":"555-555-5555","confidence":1}]},{"language":"en","boundingBox":[0.8852,2.2887,1.8119,2.2887,1.8119,2.3954,0.8852,2.3954],"text":"555-555-5555","words":[{"boundingBox":[0.8852,2.2887,1.8119,2.2887,1.8119,2.3954,0.8852,2.3954],"text":"555-555-5555","confidence":1}]},{"language":"en","boundingBox":[1.0943,3.0018,1.3842,3.0018,1.3842,3.109,1.0943,3.109],"text":"Item","words":[{"boundingBox":[1.0943,3.0018,1.3842,3.0018,1.3842,3.109,1.0943,3.109],"text":"Item","confidence":1}]},{"language":"en","boundingBox":[3.2527,2.9996,3.8367,2.9996,3.8367,3.1371,3.2527,3.1371],"text":"Quantity","words":[{"boundingBox":[3.2527,2.9996,3.8367,2.9996,3.8367,3.1371,3.2527,3.1371],"text":"Quantity","confidence":1}]},{"language":"en","boundingBox":[5.423,2.9996,5.7372,2.9996,5.7372,3.109,5.423,3.109],"text":"Price","words":[{"boundingBox":[5.423,2.9996,5.7372,2.9996,5.7372,3.109,5.423,3.109],"text":"Price","confidence":1}]},{"language":"en","boundingBox":[1.0832,3.2118,1.174,3.2118,1.174,3.318,1.0832,3.318],"text":"A","words":[{"boundingBox":[1.0832,3.2118,1.174,3.2118,1.174,3.318,1.0832,3.318],"text":"A","confidence":1}]},{"language":"en","boundingBox":[3.2589,3.2116,3.3202,3.2116,3.3202,3.3176,3.2589,3.3176],"text":"1","words":[{"boundingBox":[3.2589,3.2116,3.3202,3.2116,3.3202,3.3176,3.2589,3.3176],"text":"1","confidence":1}]},{"language":"en","boundingBox":[5.4232,3.2108,5.7784,3.2108,5.7784,3.319,5.4232,3.319],"text":"10.99","words":[{"boundingBox":[5.4232,3.2108,5.7784,3.2108,5.7784,3.319,5.4232,3.319],"text":"10.99","confidence":1}]},{"language":"en","boundingBox":[1.0943,3.4256,1.1637,3.4256,1.1637,3.531,1.0943,3.531],"text":"B","words":[{"boundingBox":[1.0943,3.4256,1.1637,3.4256,1.1637,3.531,1.0943,3.531],"text":"B","confidence":1}]},{"language":"en","boundingBox":[3.2541,3.4241,3.3199,3.4241,3.3199,3.531,3.2541,3.531],"text":"2","words":[{"boundingBox":[3.2541,3.4241,3.3199,3.4241,3.3199,3.531,3.2541,3.531],"text":"2","confidence":1}]},{"language":"en","boundingBox":[5.4232,3.4241,5.7789,3.4241,5.7789,3.5323,5.4232,3.5323],"text":"14.67","words":[{"boundingBox":[5.4232,3.4241,5.7789,3.4241,5.7789,3.5323,5.4232,3.5323],"text":"14.67","confidence":1}]},{"language":"en","boundingBox":[1.0882,3.6343,1.1647,3.6343,1.1647,3.7421,1.0882,3.7421],"text":"C","words":[{"boundingBox":[1.0882,3.6343,1.1647,3.6343,1.1647,3.7421,1.0882,3.7421],"text":"C","confidence":1}]},{"language":"en","boundingBox":[3.2486,3.6351,3.3244,3.6351,3.3244,3.7413,3.2486,3.7413],"text":"4","words":[{"boundingBox":[3.2486,3.6351,3.3244,3.6351,3.3244,3.7413,3.2486,3.7413],"text":"4","confidence":1}]},{"language":"en","boundingBox":[5.4232,3.6341,5.78,3.6341,5.78,3.7423,5.4232,3.7423],"text":"15.66","words":[{"boundingBox":[5.4232,3.6341,5.78,3.6341,5.78,3.7423,5.4232,3.7423],"text":"15.66","confidence":1}]},{"language":"en","boundingBox":[1.0943,3.8456,1.1753,3.8456,1.1753,3.951,1.0943,3.951],"text":"D","words":[{"boundingBox":[1.0943,3.8456,1.1753,3.8456,1.1753,3.951,1.0943,3.951],"text":"D","confidence":1}]},{"language":"en","boundingBox":[3.2589,3.845,3.3202,3.845,3.3202,3.951,3.2589,3.951],"text":"1","words":[{"boundingBox":[3.2589,3.845,3.3202,3.845,3.3202,3.951,3.2589,3.951],"text":"1","confidence":1}]},{"language":"en","boundingBox":[5.4232,3.8441,5.7809,3.8441,5.7809,3.9523,5.4232,3.9523],"text":"12.00","words":[{"boundingBox":[5.4232,3.8441,5.7809,3.8441,5.7809,3.9523,5.4232,3.9523],"text":"12.00","confidence":1}]},{"language":"en","boundingBox":[1.0943,4.0561,1.153,4.0561,1.153,4.1614,1.0943,4.1614],"text":"E","words":[{"boundingBox":[1.0943,4.0561,1.153,4.0561,1.153,4.1614,1.0943,4.1614],"text":"E","confidence":1}]},{"language":"en","boundingBox":[3.2486,4.0556,3.3244,4.0556,3.3244,4.1617,3.2486,4.1617],"text":"4","words":[{"boundingBox":[3.2486,4.0556,3.3244,4.0556,3.3244,4.1617,3.2486,4.1617],"text":"4","confidence":1}]},{"language":"en","boundingBox":[5.4232,4.0546,5.781,4.0546,5.781,4.1627,5.4232,4.1627],"text":"10.00","words":[{"boundingBox":[5.4232,4.0546,5.781,4.0546,5.781,4.1627,5.4232,4.1627],"text":"10.00","confidence":1}]},{"language":"en","boundingBox":[1.0943,4.2661,1.1497,4.2661,1.1497,4.3717,1.0943,4.3717],"text":"F","words":[{"boundingBox":[1.0943,4.2661,1.1497,4.2661,1.1497,4.3717,1.0943,4.3717],"text":"F","confidence":1}]},{"language":"en","boundingBox":[3.2534,4.2646,3.3226,4.2646,3.3226,4.3727,3.2534,4.3727],"text":"6","words":[{"boundingBox":[3.2534,4.2646,3.3226,4.2646,3.3226,4.3727,3.2534,4.3727],"text":"6","confidence":1}]},{"language":"en","boundingBox":[5.4232,4.2646,5.7809,4.2646,5.7809,4.3727,5.4232,4.3727],"text":"12.00","words":[{"boundingBox":[5.4232,4.2646,5.7809,4.2646,5.7809,4.3727,5.4232,4.3727],"text":"12.00","confidence":1}]},{"language":"en","boundingBox":[1.0877,4.4746,1.1735,4.4746,1.1735,4.5827,1.0877,4.5827],"text":"G","words":[{"boundingBox":[1.0877,4.4746,1.1735,4.4746,1.1735,4.5827,1.0877,4.5827],"text":"G","confidence":1}]},{"language":"en","boundingBox":[3.2514,4.4746,3.3224,4.4746,3.3224,4.5827,3.2514,4.5827],"text":"8","words":[{"boundingBox":[3.2514,4.4746,3.3224,4.4746,3.3224,4.5827,3.2514,4.5827],"text":"8","confidence":1}]},{"language":"en","boundingBox":[5.4184,4.4746,5.781,4.4746,5.781,4.5827,5.4184,4.5827],"text":"22.00","words":[{"boundingBox":[5.4184,4.4746,5.781,4.4746,5.781,4.5827,5.4184,4.5827],"text":"22.00","confidence":1}]},{"language":"en","boundingBox":[5.5075,4.8981,6.632,4.8981,6.632,5.0131,5.5075,5.0131],"text":"Subtotal: + 300.00","words":[{"boundingBox":[5.5075,4.8981,6.1249,4.8981,6.1249,5.0131,5.5075,5.0131],"text":"Subtotal:","confidence":1},{"boundingBox":[6.1794,4.9042,6.632,4.9042,6.632,5.0131,6.1794,5.0131],"text":"300.00","confidence":1}]},{"language":"en","boundingBox":[5.5034,5.1245,6.2022,5.1245,6.2022,5.2333,5.5034,5.2333],"text":"Tax: + 30.00","words":[{"boundingBox":[5.5034,5.1263,5.7812,5.1263,5.7812,5.2333,5.5034,5.2333],"text":"Tax:","confidence":1},{"boundingBox":[5.836,5.1245,6.2022,5.1245,6.2022,5.2333,5.836,5.2333],"text":"30.00","confidence":1}]},{"language":"en","boundingBox":[5.5034,5.3412,6.2587,5.3412,6.2587,5.481,5.5034,5.481],"text":"Tip: + 100.00","words":[{"boundingBox":[5.5034,5.3412,5.7515,5.3412,5.7515,5.481,5.5034,5.481],"text":"Tip:","confidence":1},{"boundingBox":[5.811,5.3445,6.2587,5.3445,6.2587,5.4533,5.811,5.4533],"text":"100.00","confidence":1}]},{"language":"en","boundingBox":[5.5034,5.5583,6.3987,5.5583,6.3987,5.6733,5.5034,5.6733],"text":"Total: + 430.00","words":[{"boundingBox":[5.5034,5.5583,5.8915,5.5583,5.8915,5.6733,5.5034,5.6733],"text":"Total:","confidence":1},{"boundingBox":[5.942,5.5645,6.3987,5.5645,6.3987,5.6733,5.942,5.6733],"text":"430.00","confidence":1}]},{"language":"en","boundingBox":[1.0055,6.6553,3.8342,6.6553,3.8342,6.7981,1.0055,6.7981],"text":"Signature: + ____ Bilbo Baggins__________","words":[{"boundingBox":[1.0055,6.6581,1.6987,6.6581,1.6987,6.7981,1.0055,6.7981],"text":"Signature:","confidence":1},{"boundingBox":[1.747,6.7829,2.0809,6.7829,2.0809,6.7981,1.747,6.7981],"text":"____","confidence":1},{"boundingBox":[2.0925,6.6553,2.4278,6.6553,2.4278,6.7703,2.0925,6.7703],"text":"Bilbo","confidence":1},{"boundingBox":[2.4823,6.6581,3.8342,6.6581,3.8342,6.7981,2.4823,6.7981],"text":"Baggins__________","confidence":1}]}]},{"page":2,"language":"en","angle":0,"width":8.4967,"height":10.9967,"unit":"inch","lines":[]},{"page":3,"language":"en","angle":0,"width":8.5,"height":11,"unit":"inch","lines":[{"language":"en","boundingBox":[0.8861,1.1217,2.3734,1.1217,2.3734,1.2812,0.8861,1.2812],"text":"Company + B Invoice","words":[{"boundingBox":[0.8861,1.1232,1.6203,1.1232,1.6203,1.2812,0.8861,1.2812],"text":"Company","confidence":1},{"boundingBox":[1.6836,1.1248,1.764,1.1248,1.764,1.2469,1.6836,1.2469],"text":"B","confidence":1},{"boundingBox":[1.8336,1.1217,2.3734,1.1217,2.3734,1.2485,1.8336,1.2485],"text":"Invoice","confidence":1}]},{"language":"en","boundingBox":[6.0211,1.0656,7.0357,1.0656,7.0357,1.2121,6.0211,1.2121],"text":"Invoice + For:","words":[{"boundingBox":[6.0211,1.0656,6.6362,1.0656,6.6362,1.2121,6.0211,1.2121],"text":"Invoice","confidence":1},{"boundingBox":[6.7147,1.0691,7.0357,1.0691,7.0357,1.2121,6.7147,1.2121],"text":"For:","confidence":1}]},{"language":"en","boundingBox":[0.8791,1.4825,1.5657,1.4825,1.5657,1.6155,0.8791,1.6155],"text":"Address:","words":[{"boundingBox":[0.8791,1.4825,1.5657,1.4825,1.5657,1.6155,0.8791,1.6155],"text":"Address:","confidence":1}]},{"language":"en","boundingBox":[6.0164,1.4506,6.9506,1.4506,6.9506,1.5931,6.0164,1.5931],"text":"Frodo + Baggins","words":[{"boundingBox":[6.0164,1.4506,6.3895,1.4506,6.3895,1.5649,6.0164,1.5649],"text":"Frodo","confidence":1},{"boundingBox":[6.45,1.4556,6.9506,1.4556,6.9506,1.5931,6.45,1.5931],"text":"Baggins","confidence":1}]},{"language":"en","boundingBox":[6.0165,1.6707,7.1006,1.6707,7.1006,1.7854,6.0165,1.7854],"text":"123 + Hobbit Lane","words":[{"boundingBox":[6.0165,1.6772,6.2434,1.6772,6.2434,1.7854,6.0165,1.7854],"text":"123","confidence":1},{"boundingBox":[6.3033,1.6707,6.7463,1.6707,6.7463,1.7854,6.3033,1.7854],"text":"Hobbit","confidence":1},{"boundingBox":[6.803,1.6782,7.1006,1.6782,7.1006,1.7854,6.803,1.7854],"text":"Lane","confidence":1}]},{"language":"en","boundingBox":[0.8852,1.846,1.713,1.846,1.713,1.9554,0.8852,1.9554],"text":"567 + Main St.","words":[{"boundingBox":[0.8852,1.8472,1.1203,1.8472,1.1203,1.9554,0.8852,1.9554],"text":"567","confidence":1},{"boundingBox":[1.1777,1.846,1.5022,1.846,1.5022,1.9554,1.1777,1.9554],"text":"Main","confidence":1},{"boundingBox":[1.5558,1.8472,1.713,1.8472,1.713,1.9554,1.5558,1.9554],"text":"St.","confidence":1}]},{"language":"en","boundingBox":[6.0164,1.891,6.9793,1.891,6.9793,2.0275,6.0164,2.0275],"text":"Redmond, + WA","words":[{"boundingBox":[6.0164,1.891,6.6861,1.891,6.6861,2.0275,6.0164,2.0275],"text":"Redmond,","confidence":1},{"boundingBox":[6.7408,1.8982,6.9793,1.8982,6.9793,2.0044,6.7408,2.0044],"text":"WA","confidence":1}]},{"language":"en","boundingBox":[0.891,2.061,1.8537,2.061,1.8537,2.1975,0.891,2.1975],"text":"Redmond, + WA","words":[{"boundingBox":[0.891,2.061,1.5605,2.061,1.5605,2.1975,0.891,2.1975],"text":"Redmond,","confidence":1},{"boundingBox":[1.6152,2.0682,1.8537,2.0682,1.8537,2.1744,1.6152,2.1744],"text":"WA","confidence":1}]},{"language":"en","boundingBox":[6.0105,2.1187,6.9371,2.1187,6.9371,2.2254,6.0105,2.2254],"text":"555-555-5555","words":[{"boundingBox":[6.0105,2.1187,6.9371,2.1187,6.9371,2.2254,6.0105,2.2254],"text":"555-555-5555","confidence":1}]},{"language":"en","boundingBox":[0.8852,2.2887,1.8119,2.2887,1.8119,2.3954,0.8852,2.3954],"text":"555-555-5555","words":[{"boundingBox":[0.8852,2.2887,1.8119,2.2887,1.8119,2.3954,0.8852,2.3954],"text":"555-555-5555","confidence":1}]},{"language":"en","boundingBox":[1.0943,3.0018,1.3842,3.0018,1.3842,3.109,1.0943,3.109],"text":"Item","words":[{"boundingBox":[1.0943,3.0018,1.3842,3.0018,1.3842,3.109,1.0943,3.109],"text":"Item","confidence":1}]},{"language":"en","boundingBox":[3.2527,2.9996,3.8367,2.9996,3.8367,3.1371,3.2527,3.1371],"text":"Quantity","words":[{"boundingBox":[3.2527,2.9996,3.8367,2.9996,3.8367,3.1371,3.2527,3.1371],"text":"Quantity","confidence":1}]},{"language":"en","boundingBox":[5.423,2.9996,5.7372,2.9996,5.7372,3.109,5.423,3.109],"text":"Price","words":[{"boundingBox":[5.423,2.9996,5.7372,2.9996,5.7372,3.109,5.423,3.109],"text":"Price","confidence":1}]},{"language":"en","boundingBox":[1.0832,3.2118,1.174,3.2118,1.174,3.318,1.0832,3.318],"text":"A","words":[{"boundingBox":[1.0832,3.2118,1.174,3.2118,1.174,3.318,1.0832,3.318],"text":"A","confidence":1}]},{"language":"en","boundingBox":[3.2589,3.2108,3.4067,3.2108,3.4067,3.319,3.2589,3.319],"text":"10","words":[{"boundingBox":[3.2589,3.2108,3.4067,3.2108,3.4067,3.319,3.2589,3.319],"text":"10","confidence":1}]},{"language":"en","boundingBox":[5.4232,3.2108,5.8617,3.2108,5.8617,3.319,5.4232,3.319],"text":"100.99","words":[{"boundingBox":[5.4232,3.2108,5.8617,3.2108,5.8617,3.319,5.4232,3.319],"text":"100.99","confidence":1}]},{"language":"en","boundingBox":[1.0943,3.4256,1.1637,3.4256,1.1637,3.531,1.0943,3.531],"text":"B","words":[{"boundingBox":[1.0943,3.4256,1.1637,3.4256,1.1637,3.531,1.0943,3.531],"text":"B","confidence":1}]},{"language":"en","boundingBox":[3.2541,3.4241,3.4067,3.4241,3.4067,3.5323,3.2541,3.5323],"text":"20","words":[{"boundingBox":[3.2541,3.4241,3.4067,3.4241,3.4067,3.5323,3.2541,3.5323],"text":"20","confidence":1}]},{"language":"en","boundingBox":[5.4232,3.4241,5.8622,3.4241,5.8622,3.5323,5.4232,3.5323],"text":"140.67","words":[{"boundingBox":[5.4232,3.4241,5.8622,3.4241,5.8622,3.5323,5.4232,3.5323],"text":"140.67","confidence":1}]},{"language":"en","boundingBox":[1.0882,3.6343,1.1647,3.6343,1.1647,3.7421,1.0882,3.7421],"text":"C","words":[{"boundingBox":[1.0882,3.6343,1.1647,3.6343,1.1647,3.7421,1.0882,3.7421],"text":"C","confidence":1}]},{"language":"en","boundingBox":[3.2486,3.6341,3.4067,3.6341,3.4067,3.7423,3.2486,3.7423],"text":"40","words":[{"boundingBox":[3.2486,3.6341,3.4067,3.6341,3.4067,3.7423,3.2486,3.7423],"text":"40","confidence":1}]},{"language":"en","boundingBox":[5.4232,3.6341,5.8634,3.6341,5.8634,3.7423,5.4232,3.7423],"text":"150.66","words":[{"boundingBox":[5.4232,3.6341,5.8634,3.6341,5.8634,3.7423,5.4232,3.7423],"text":"150.66","confidence":1}]},{"language":"en","boundingBox":[1.0943,3.8456,1.1753,3.8456,1.1753,3.951,1.0943,3.951],"text":"D","words":[{"boundingBox":[1.0943,3.8456,1.1753,3.8456,1.1753,3.951,1.0943,3.951],"text":"D","confidence":1}]},{"language":"en","boundingBox":[3.2589,3.8441,3.4067,3.8441,3.4067,3.9523,3.2589,3.9523],"text":"10","words":[{"boundingBox":[3.2589,3.8441,3.4067,3.8441,3.4067,3.9523,3.2589,3.9523],"text":"10","confidence":1}]},{"language":"en","boundingBox":[5.4232,3.8441,5.8642,3.8441,5.8642,3.9523,5.4232,3.9523],"text":"120.00","words":[{"boundingBox":[5.4232,3.8441,5.8642,3.8441,5.8642,3.9523,5.4232,3.9523],"text":"120.00","confidence":1}]},{"language":"en","boundingBox":[1.0943,4.0561,1.153,4.0561,1.153,4.1614,1.0943,4.1614],"text":"E","words":[{"boundingBox":[1.0943,4.0561,1.153,4.0561,1.153,4.1614,1.0943,4.1614],"text":"E","confidence":1}]},{"language":"en","boundingBox":[3.2486,4.0546,3.4067,4.0546,3.4067,4.1627,3.2486,4.1627],"text":"40","words":[{"boundingBox":[3.2486,4.0546,3.4067,4.0546,3.4067,4.1627,3.2486,4.1627],"text":"40","confidence":1}]},{"language":"en","boundingBox":[5.4232,4.0546,5.8644,4.0546,5.8644,4.1627,5.4232,4.1627],"text":"100.00","words":[{"boundingBox":[5.4232,4.0546,5.8644,4.0546,5.8644,4.1627,5.4232,4.1627],"text":"100.00","confidence":1}]},{"language":"en","boundingBox":[1.0943,4.2661,1.1497,4.2661,1.1497,4.3717,1.0943,4.3717],"text":"F","words":[{"boundingBox":[1.0943,4.2661,1.1497,4.2661,1.1497,4.3717,1.0943,4.3717],"text":"F","confidence":1}]},{"language":"en","boundingBox":[3.2534,4.2646,3.4067,4.2646,3.4067,4.3727,3.2534,4.3727],"text":"60","words":[{"boundingBox":[3.2534,4.2646,3.4067,4.2646,3.4067,4.3727,3.2534,4.3727],"text":"60","confidence":1}]},{"language":"en","boundingBox":[5.4232,4.2646,5.8642,4.2646,5.8642,4.3727,5.4232,4.3727],"text":"120.00","words":[{"boundingBox":[5.4232,4.2646,5.8642,4.2646,5.8642,4.3727,5.4232,4.3727],"text":"120.00","confidence":1}]},{"language":"en","boundingBox":[1.0877,4.4746,1.1735,4.4746,1.1735,4.5827,1.0877,4.5827],"text":"G","words":[{"boundingBox":[1.0877,4.4746,1.1735,4.4746,1.1735,4.5827,1.0877,4.5827],"text":"G","confidence":1}]},{"language":"en","boundingBox":[3.2514,4.4746,3.4067,4.4746,3.4067,4.5827,3.2514,4.5827],"text":"80","words":[{"boundingBox":[3.2514,4.4746,3.4067,4.4746,3.4067,4.5827,3.2514,4.5827],"text":"80","confidence":1}]},{"language":"en","boundingBox":[5.4184,4.4746,5.8644,4.4746,5.8644,4.5827,5.4184,4.5827],"text":"220.00","words":[{"boundingBox":[5.4184,4.4746,5.8644,4.4746,5.8644,4.5827,5.4184,4.5827],"text":"220.00","confidence":1}]},{"language":"en","boundingBox":[5.5075,4.8981,6.7158,4.8981,6.7158,5.0131,5.5075,5.0131],"text":"Subtotal: + 3000.00","words":[{"boundingBox":[5.5075,4.8981,6.1249,4.8981,6.1249,5.0131,5.5075,5.0131],"text":"Subtotal:","confidence":1},{"boundingBox":[6.1794,4.9042,6.7158,4.9042,6.7158,5.0131,6.1794,5.0131],"text":"3000.00","confidence":1}]},{"language":"en","boundingBox":[5.5034,5.1245,6.2887,5.1245,6.2887,5.2333,5.5034,5.2333],"text":"Tax: + 300.00","words":[{"boundingBox":[5.5034,5.1263,5.7812,5.1263,5.7812,5.2333,5.5034,5.2333],"text":"Tax:","confidence":1},{"boundingBox":[5.836,5.1245,6.2887,5.1245,6.2887,5.2333,5.836,5.2333],"text":"300.00","confidence":1}]},{"language":"en","boundingBox":[5.5034,5.3412,6.3422,5.3412,6.3422,5.481,5.5034,5.481],"text":"Tip: + 1000.00","words":[{"boundingBox":[5.5034,5.3412,5.7515,5.3412,5.7515,5.481,5.5034,5.481],"text":"Tip:","confidence":1},{"boundingBox":[5.811,5.3445,6.3422,5.3445,6.3422,5.4533,5.811,5.4533],"text":"1000.00","confidence":1}]},{"language":"en","boundingBox":[5.5034,5.5583,6.4825,5.5583,6.4825,5.6733,5.5034,5.6733],"text":"Total: + 4300.00","words":[{"boundingBox":[5.5034,5.5583,5.8915,5.5583,5.8915,5.6733,5.5034,5.6733],"text":"Total:","confidence":1},{"boundingBox":[5.942,5.5645,6.4825,5.5645,6.4825,5.6733,5.942,5.6733],"text":"4300.00","confidence":1}]},{"language":"en","boundingBox":[1.0055,6.6556,3.8842,6.6556,3.8842,6.7981,1.0055,6.7981],"text":"Signature: + ____ Frodo Baggins__________","words":[{"boundingBox":[1.0055,6.6581,1.6987,6.6581,1.6987,6.7981,1.0055,6.7981],"text":"Signature:","confidence":1},{"boundingBox":[1.747,6.7829,2.0809,6.7829,2.0809,6.7981,1.747,6.7981],"text":"____","confidence":1},{"boundingBox":[2.0925,6.6556,2.4778,6.6556,2.4778,6.7703,2.0925,6.7703],"text":"Frodo","confidence":1},{"boundingBox":[2.5325,6.6581,3.8842,6.6581,3.8842,6.7981,2.5325,6.7981],"text":"Baggins__________","confidence":1}]}]}],"pageResults":[{"page":1,"tables":[{"rows":8,"columns":3,"cells":[{"rowIndex":0,"columnIndex":0,"text":"Item","boundingBox":[1.0037,2.9443,3.1681,2.9443,3.1681,3.1543,1.0037,3.1543],"elements":["#/readResults/0/lines/10/words/0"]},{"rowIndex":0,"columnIndex":1,"text":"Quantity","boundingBox":[3.1681,2.9443,5.3353,2.9443,5.3353,3.1543,3.1681,3.1543],"elements":["#/readResults/0/lines/11/words/0"]},{"rowIndex":0,"columnIndex":2,"text":"Price","boundingBox":[5.3353,2.9443,7.4997,2.9443,7.4997,3.1543,5.3353,3.1543],"elements":["#/readResults/0/lines/12/words/0"]},{"rowIndex":1,"columnIndex":0,"text":"A","boundingBox":[1.0037,3.1543,3.1681,3.1543,3.1681,3.3643,1.0037,3.3643],"elements":["#/readResults/0/lines/13/words/0"]},{"rowIndex":1,"columnIndex":1,"text":"1","boundingBox":[3.1681,3.1543,5.3353,3.1543,5.3353,3.3643,3.1681,3.3643],"elements":["#/readResults/0/lines/14/words/0"]},{"rowIndex":1,"columnIndex":2,"text":"10.99","boundingBox":[5.3353,3.1543,7.4997,3.1543,7.4997,3.3643,5.3353,3.3643],"elements":["#/readResults/0/lines/15/words/0"]},{"rowIndex":2,"columnIndex":0,"text":"B","boundingBox":[1.0037,3.3643,3.1681,3.3643,3.1681,3.5776,1.0037,3.5776],"elements":["#/readResults/0/lines/16/words/0"]},{"rowIndex":2,"columnIndex":1,"text":"2","boundingBox":[3.1681,3.3643,5.3353,3.3643,5.3353,3.5776,3.1681,3.5776],"elements":["#/readResults/0/lines/17/words/0"]},{"rowIndex":2,"columnIndex":2,"text":"14.67","boundingBox":[5.3353,3.3643,7.4997,3.3643,7.4997,3.5776,5.3353,3.5776],"elements":["#/readResults/0/lines/18/words/0"]},{"rowIndex":3,"columnIndex":0,"text":"C","boundingBox":[1.0037,3.5776,3.1681,3.5776,3.1681,3.7876,1.0037,3.7876],"elements":["#/readResults/0/lines/19/words/0"]},{"rowIndex":3,"columnIndex":1,"text":"4","boundingBox":[3.1681,3.5776,5.3353,3.5776,5.3353,3.7876,3.1681,3.7876],"elements":["#/readResults/0/lines/20/words/0"]},{"rowIndex":3,"columnIndex":2,"text":"15.66","boundingBox":[5.3353,3.5776,7.4997,3.5776,7.4997,3.7876,5.3353,3.7876],"elements":["#/readResults/0/lines/21/words/0"]},{"rowIndex":4,"columnIndex":0,"text":"D","boundingBox":[1.0037,3.7876,3.1681,3.7876,3.1681,3.9976,1.0037,3.9976],"elements":["#/readResults/0/lines/22/words/0"]},{"rowIndex":4,"columnIndex":1,"text":"1","boundingBox":[3.1681,3.7876,5.3353,3.7876,5.3353,3.9976,3.1681,3.9976],"elements":["#/readResults/0/lines/23/words/0"]},{"rowIndex":4,"columnIndex":2,"text":"12.00","boundingBox":[5.3353,3.7876,7.4997,3.7876,7.4997,3.9976,5.3353,3.9976],"elements":["#/readResults/0/lines/24/words/0"]},{"rowIndex":5,"columnIndex":0,"text":"E","boundingBox":[1.0037,3.9976,3.1681,3.9976,3.1681,4.2081,1.0037,4.2081],"elements":["#/readResults/0/lines/25/words/0"]},{"rowIndex":5,"columnIndex":1,"text":"4","boundingBox":[3.1681,3.9976,5.3353,3.9976,5.3353,4.2081,3.1681,4.2081],"elements":["#/readResults/0/lines/26/words/0"]},{"rowIndex":5,"columnIndex":2,"text":"10.00","boundingBox":[5.3353,3.9976,7.4997,3.9976,7.4997,4.2081,5.3353,4.2081],"elements":["#/readResults/0/lines/27/words/0"]},{"rowIndex":6,"columnIndex":0,"text":"F","boundingBox":[1.0037,4.2081,3.1681,4.2081,3.1681,4.4181,1.0037,4.4181],"elements":["#/readResults/0/lines/28/words/0"]},{"rowIndex":6,"columnIndex":1,"text":"6","boundingBox":[3.1681,4.2081,5.3353,4.2081,5.3353,4.4181,3.1681,4.4181],"elements":["#/readResults/0/lines/29/words/0"]},{"rowIndex":6,"columnIndex":2,"text":"12.00","boundingBox":[5.3353,4.2081,7.4997,4.2081,7.4997,4.4181,5.3353,4.4181],"elements":["#/readResults/0/lines/30/words/0"]},{"rowIndex":7,"columnIndex":0,"text":"G","boundingBox":[1.0037,4.4181,3.1681,4.4181,3.1681,4.6281,1.0037,4.6281],"elements":["#/readResults/0/lines/31/words/0"]},{"rowIndex":7,"columnIndex":1,"text":"8","boundingBox":[3.1681,4.4181,5.3353,4.4181,5.3353,4.6281,3.1681,4.6281],"elements":["#/readResults/0/lines/32/words/0"]},{"rowIndex":7,"columnIndex":2,"text":"22.00","boundingBox":[5.3353,4.4181,7.4997,4.4181,7.4997,4.6281,5.3353,4.6281],"elements":["#/readResults/0/lines/33/words/0"]}]}]},{"page":2,"tables":[]},{"page":3,"tables":[{"rows":8,"columns":3,"cells":[{"rowIndex":0,"columnIndex":0,"text":"Item","boundingBox":[1.0037,2.9443,3.1681,2.9443,3.1681,3.1543,1.0037,3.1543],"elements":["#/readResults/2/lines/10/words/0"]},{"rowIndex":0,"columnIndex":1,"text":"Quantity","boundingBox":[3.1681,2.9443,5.3353,2.9443,5.3353,3.1543,3.1681,3.1543],"elements":["#/readResults/2/lines/11/words/0"]},{"rowIndex":0,"columnIndex":2,"text":"Price","boundingBox":[5.3353,2.9443,7.4997,2.9443,7.4997,3.1543,5.3353,3.1543],"elements":["#/readResults/2/lines/12/words/0"]},{"rowIndex":1,"columnIndex":0,"text":"A","boundingBox":[1.0037,3.1543,3.1681,3.1543,3.1681,3.3643,1.0037,3.3643],"elements":["#/readResults/2/lines/13/words/0"]},{"rowIndex":1,"columnIndex":1,"text":"10","boundingBox":[3.1681,3.1543,5.3353,3.1543,5.3353,3.3643,3.1681,3.3643],"elements":["#/readResults/2/lines/14/words/0"]},{"rowIndex":1,"columnIndex":2,"text":"100.99","boundingBox":[5.3353,3.1543,7.4997,3.1543,7.4997,3.3643,5.3353,3.3643],"elements":["#/readResults/2/lines/15/words/0"]},{"rowIndex":2,"columnIndex":0,"text":"B","boundingBox":[1.0037,3.3643,3.1681,3.3643,3.1681,3.5776,1.0037,3.5776],"elements":["#/readResults/2/lines/16/words/0"]},{"rowIndex":2,"columnIndex":1,"text":"20","boundingBox":[3.1681,3.3643,5.3353,3.3643,5.3353,3.5776,3.1681,3.5776],"elements":["#/readResults/2/lines/17/words/0"]},{"rowIndex":2,"columnIndex":2,"text":"140.67","boundingBox":[5.3353,3.3643,7.4997,3.3643,7.4997,3.5776,5.3353,3.5776],"elements":["#/readResults/2/lines/18/words/0"]},{"rowIndex":3,"columnIndex":0,"text":"C","boundingBox":[1.0037,3.5776,3.1681,3.5776,3.1681,3.7876,1.0037,3.7876],"elements":["#/readResults/2/lines/19/words/0"]},{"rowIndex":3,"columnIndex":1,"text":"40","boundingBox":[3.1681,3.5776,5.3353,3.5776,5.3353,3.7876,3.1681,3.7876],"elements":["#/readResults/2/lines/20/words/0"]},{"rowIndex":3,"columnIndex":2,"text":"150.66","boundingBox":[5.3353,3.5776,7.4997,3.5776,7.4997,3.7876,5.3353,3.7876],"elements":["#/readResults/2/lines/21/words/0"]},{"rowIndex":4,"columnIndex":0,"text":"D","boundingBox":[1.0037,3.7876,3.1681,3.7876,3.1681,3.9976,1.0037,3.9976],"elements":["#/readResults/2/lines/22/words/0"]},{"rowIndex":4,"columnIndex":1,"text":"10","boundingBox":[3.1681,3.7876,5.3353,3.7876,5.3353,3.9976,3.1681,3.9976],"elements":["#/readResults/2/lines/23/words/0"]},{"rowIndex":4,"columnIndex":2,"text":"120.00","boundingBox":[5.3353,3.7876,7.4997,3.7876,7.4997,3.9976,5.3353,3.9976],"elements":["#/readResults/2/lines/24/words/0"]},{"rowIndex":5,"columnIndex":0,"text":"E","boundingBox":[1.0037,3.9976,3.1681,3.9976,3.1681,4.2081,1.0037,4.2081],"elements":["#/readResults/2/lines/25/words/0"]},{"rowIndex":5,"columnIndex":1,"text":"40","boundingBox":[3.1681,3.9976,5.3353,3.9976,5.3353,4.2081,3.1681,4.2081],"elements":["#/readResults/2/lines/26/words/0"]},{"rowIndex":5,"columnIndex":2,"text":"100.00","boundingBox":[5.3353,3.9976,7.4997,3.9976,7.4997,4.2081,5.3353,4.2081],"elements":["#/readResults/2/lines/27/words/0"]},{"rowIndex":6,"columnIndex":0,"text":"F","boundingBox":[1.0037,4.2081,3.1681,4.2081,3.1681,4.4181,1.0037,4.4181],"elements":["#/readResults/2/lines/28/words/0"]},{"rowIndex":6,"columnIndex":1,"text":"60","boundingBox":[3.1681,4.2081,5.3353,4.2081,5.3353,4.4181,3.1681,4.4181],"elements":["#/readResults/2/lines/29/words/0"]},{"rowIndex":6,"columnIndex":2,"text":"120.00","boundingBox":[5.3353,4.2081,7.4997,4.2081,7.4997,4.4181,5.3353,4.4181],"elements":["#/readResults/2/lines/30/words/0"]},{"rowIndex":7,"columnIndex":0,"text":"G","boundingBox":[1.0037,4.4181,3.1681,4.4181,3.1681,4.6281,1.0037,4.6281],"elements":["#/readResults/2/lines/31/words/0"]},{"rowIndex":7,"columnIndex":1,"text":"80","boundingBox":[3.1681,4.4181,5.3353,4.4181,5.3353,4.6281,3.1681,4.6281],"elements":["#/readResults/2/lines/32/words/0"]},{"rowIndex":7,"columnIndex":2,"text":"220.00","boundingBox":[5.3353,4.4181,7.4997,4.4181,7.4997,4.6281,5.3353,4.6281],"elements":["#/readResults/2/lines/33/words/0"]}]}]}],"documentResults":[{"docType":"custom:form","pageRange":[1,3],"fields":{"MerchantAddress":{"type":"string","valueString":"567 + Main St. Redmond, WA","text":"567 Main St. Redmond, WA","page":1,"boundingBox":[0.885,1.845,1.855,1.845,1.855,2.2,0.885,2.2],"confidence":1.0,"elements":["#/analyzeResult/readResults/0/lines/5/words/0","#/analyzeResult/readResults/0/lines/5/words/1","#/analyzeResult/readResults/0/lines/5/words/2","#/analyzeResult/readResults/0/lines/7/words/0","#/analyzeResult/readResults/0/lines/7/words/1"]},"CustomerName":{"type":"string","valueString":"Bilbo + Baggins","text":"Bilbo Baggins","page":1,"boundingBox":[6.0150000000000006,1.45,6.8950000000000005,1.45,6.8950000000000005,1.595,6.0150000000000006,1.595],"confidence":1.0,"elements":["#/analyzeResult/readResults/0/lines/3/words/0","#/analyzeResult/readResults/0/lines/3/words/1"]},"CustomerPhoneNumber":{"type":"string","valueString":"555-555-5555","text":"555-555-5555","page":1,"boundingBox":[6.01,2.12,6.9350000000000005,2.12,6.9350000000000005,2.225,6.01,2.225],"confidence":1.0,"elements":["#/analyzeResult/readResults/0/lines/8/words/0"]},"FirstPrice":{"type":"string","valueString":"10.99","text":"10.99","page":1,"boundingBox":[5.425,3.21,5.78,3.21,5.78,3.3200000000000003,5.425,3.3200000000000003],"confidence":1.0,"elements":["#/analyzeResult/readResults/0/lines/15/words/0"]},"MerchantPhoneNumber":{"type":"string","valueString":"555-555-5555","text":"555-555-5555","page":1,"boundingBox":[0.885,2.29,1.81,2.29,1.81,2.395,0.885,2.395],"confidence":1.0,"elements":["#/analyzeResult/readResults/0/lines/9/words/0"]},"CustomerAddress":{"type":"string","valueString":"123 + Hobbit Lane Redmond, WA","text":"123 Hobbit Lane Redmond, WA","page":1,"boundingBox":[6.0150000000000006,1.67,7.1000000000000005,1.67,7.1000000000000005,2.0300000000000002,6.0150000000000006,2.0300000000000002],"confidence":1.0,"elements":["#/analyzeResult/readResults/0/lines/4/words/0","#/analyzeResult/readResults/0/lines/4/words/1","#/analyzeResult/readResults/0/lines/4/words/2","#/analyzeResult/readResults/0/lines/6/words/0","#/analyzeResult/readResults/0/lines/6/words/1"]},"Total":{"type":"string","valueString":"430.00","text":"430.00","page":1,"boundingBox":[5.94,5.565,6.4,5.565,6.4,5.675,5.94,5.675],"confidence":1.0,"elements":["#/analyzeResult/readResults/0/lines/37/words/1"]},"Customer2":{"type":"string","valueString":"Frodo + Baggins","text":"Frodo Baggins","page":3,"boundingBox":[6.0150000000000006,1.45,6.95,1.45,6.95,1.595,6.0150000000000006,1.595],"confidence":1.0,"elements":["#/analyzeResult/readResults/2/lines/3/words/0","#/analyzeResult/readResults/2/lines/3/words/1"]},"Tip":{"type":"string","valueString":"100.00","text":"100.00","page":1,"boundingBox":[5.8100000000000005,5.345,6.26,5.345,6.26,5.455,5.8100000000000005,5.455],"confidence":1.0,"elements":["#/analyzeResult/readResults/0/lines/36/words/1"]},"Merchant2":{"type":"string","valueString":"Company","text":"Company","page":1,"boundingBox":[0.885,1.125,1.62,1.125,1.62,1.28,0.885,1.28],"confidence":1.0,"elements":["#/analyzeResult/readResults/0/lines/0/words/0"]},"Merchant":{"type":"string","valueString":"A","text":"A","page":1,"boundingBox":[1.67,1.125,1.7750000000000001,1.125,1.7750000000000001,1.245,1.67,1.245],"confidence":1.0,"elements":["#/analyzeResult/readResults/0/lines/0/words/1"]},"Subtotal":{"type":"string","valueString":"300.00","text":"300.00","page":1,"boundingBox":[6.18,4.905,6.63,4.905,6.63,5.015,6.18,5.015],"confidence":1.0,"elements":["#/analyzeResult/readResults/0/lines/34/words/1"]},"Signature2":{"type":"string","valueString":"Frodo + Baggins","text":"Frodo Baggins","page":3,"boundingBox":[2.09,6.655,3.09,6.655,3.09,6.8,2.09,6.8],"confidence":1.0,"elements":["#/analyzeResult/readResults/2/lines/38/words/2","#/analyzeResult/readResults/2/lines/38/words/3"]},"Signature":{"type":"string","valueString":"Bilbo + Baggins","text":"Bilbo Baggins","page":1,"boundingBox":[2.09,6.655,3.04,6.655,3.04,6.8,2.09,6.8],"confidence":1.0,"elements":["#/analyzeResult/readResults/0/lines/38/words/2","#/analyzeResult/readResults/0/lines/38/words/3"]},"Tax":{"type":"string","valueString":"30.00","text":"30.00","page":1,"boundingBox":[5.835,5.125,6.2,5.125,6.2,5.235,5.835,5.235],"confidence":1.0,"elements":["#/analyzeResult/readResults/0/lines/35/words/1"]},"Total2":{"type":"string","valueString":"4300.00","text":"4300.00","page":3,"boundingBox":[5.94,5.565,6.48,5.565,6.48,5.675,5.94,5.675],"confidence":1.0,"elements":["#/analyzeResult/readResults/2/lines/37/words/1"]},"FirstQuantity":{"type":"string","valueString":"1","text":"1","page":1,"boundingBox":[3.2600000000000002,3.21,3.3200000000000003,3.21,3.3200000000000003,3.3200000000000003,3.2600000000000002,3.3200000000000003],"confidence":1.0,"elements":["#/analyzeResult/readResults/0/lines/14/words/0"]},"FirstItem":{"type":"string","valueString":"A","text":"A","page":1,"boundingBox":[1.085,3.21,1.175,3.21,1.175,3.3200000000000003,1.085,3.3200000000000003],"confidence":1.0,"elements":["#/analyzeResult/readResults/0/lines/13/words/0"]}}}],"errors":[]}}' + headers: + apim-request-id: f1aa1441-28ca-4882-a2bd-d3fdee813056 + content-type: application/json; charset=utf-8 + date: Thu, 30 Apr 2020 23:07:33 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + transfer-encoding: chunked + x-content-type-options: nosniff + x-envoy-upstream-service-time: '174' + status: + code: 200 + message: OK + url: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/4a056f7f-86e8-4720-9f7c-98c05ea376d8/analyzeresults/232e2d4b-f75a-4bce-9ab0-04740d100207 +version: 1 diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_custom_forms_async.test_custom_forms_multipage_unlabeled_transform.yaml b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_custom_forms_async.test_custom_forms_multipage_unlabeled_transform.yaml new file mode 100644 index 000000000000..9d1384323303 --- /dev/null +++ b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_custom_forms_async.test_custom_forms_multipage_unlabeled_transform.yaml @@ -0,0 +1,2090 @@ +interactions: +- request: + body: 'b''{"source": "containersasurl", "sourceFilter": {"prefix": "", "includeSubFolders": + false}, "useLabelFile": false}''' + headers: + Content-Length: + - '301' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models + response: + body: + string: '' + headers: + apim-request-id: f1adde27-4109-4da2-a174-d408e3a97864 + content-length: '0' + date: Thu, 30 Apr 2020 23:07:57 GMT + location: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/3533d683-d679-4fb9-bf32-39f69b144588 + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '127' + status: + code: 201 + message: Created + url: https://westus.api.cognitive.microsoft.com//formrecognizer/v2.0-preview/custom/models +- request: + body: null + headers: + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/3533d683-d679-4fb9-bf32-39f69b144588?includeKeys=true + response: + body: + string: '{"modelInfo":{"modelId":"3533d683-d679-4fb9-bf32-39f69b144588","status":"creating","createdDateTime":"2020-04-30T23:07:57Z","lastUpdatedDateTime":"2020-04-30T23:07:57Z"}}' + headers: + apim-request-id: ce2abc5e-3862-4e1c-b5fd-089992eae12b + content-type: application/json; charset=utf-8 + date: Thu, 30 Apr 2020 23:08:02 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + transfer-encoding: chunked + x-content-type-options: nosniff + x-envoy-upstream-service-time: '178' + status: + code: 200 + message: OK + url: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/3533d683-d679-4fb9-bf32-39f69b144588?includeKeys=true +- request: + body: null + headers: + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/3533d683-d679-4fb9-bf32-39f69b144588?includeKeys=true + response: + body: + string: '{"modelInfo":{"modelId":"3533d683-d679-4fb9-bf32-39f69b144588","status":"creating","createdDateTime":"2020-04-30T23:07:57Z","lastUpdatedDateTime":"2020-04-30T23:07:57Z"}}' + headers: + apim-request-id: 00b2db79-64c3-4bbc-a872-aa861f68b702 + content-type: application/json; charset=utf-8 + date: Thu, 30 Apr 2020 23:08:07 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + transfer-encoding: chunked + x-content-type-options: nosniff + x-envoy-upstream-service-time: '178' + status: + code: 200 + message: OK + url: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/3533d683-d679-4fb9-bf32-39f69b144588?includeKeys=true +- request: + body: null + headers: + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/3533d683-d679-4fb9-bf32-39f69b144588?includeKeys=true + response: + body: + string: '{"modelInfo":{"modelId":"3533d683-d679-4fb9-bf32-39f69b144588","status":"ready","createdDateTime":"2020-04-30T23:07:57Z","lastUpdatedDateTime":"2020-04-30T23:08:08Z"},"keys":{"clusters":{"0":["Address:","Invoice + For:","Redmond, WA","Signature:","Subtotal:","Tax:","Tip:","Total:"]}},"trainResult":{"trainingDocuments":[{"documentName":"multipage_invoice1.pdf","pages":3,"errors":[],"status":"succeeded"},{"documentName":"multipage_invoice2.pdf","pages":3,"errors":[],"status":"succeeded"},{"documentName":"multipage_invoice3.pdf","pages":3,"errors":[],"status":"succeeded"},{"documentName":"multipage_invoice4.pdf","pages":3,"errors":[],"status":"succeeded"},{"documentName":"multipage_invoice5.pdf","pages":3,"errors":[],"status":"succeeded"}],"errors":[]}}' + headers: + apim-request-id: ca8e7774-bbfe-4423-9316-51160306b0d3 + content-type: application/json; charset=utf-8 + date: Thu, 30 Apr 2020 23:08:12 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + transfer-encoding: chunked + x-content-type-options: nosniff + x-envoy-upstream-service-time: '73' + status: + code: 200 + message: OK + url: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/3533d683-d679-4fb9-bf32-39f69b144588?includeKeys=true +- request: + body: !!binary | + JVBERi0xLjcNCiW1tbW1DQoxIDAgb2JqDQo8PC9UeXBlL0NhdGFsb2cvUGFnZXMgMiAwIFIvTGFu + Zyhlbi1VUykgL1N0cnVjdFRyZWVSb290IDE2IDAgUi9NYXJrSW5mbzw8L01hcmtlZCB0cnVlPj4v + TWV0YWRhdGEgMjUzIDAgUi9WaWV3ZXJQcmVmZXJlbmNlcyAyNTQgMCBSPj4NCmVuZG9iag0KMiAw + IG9iag0KPDwvVHlwZS9QYWdlcy9Db3VudCAzL0tpZHNbIDMgMCBSIDExIDAgUiAxMyAwIFJdID4+ + DQplbmRvYmoNCjMgMCBvYmoNCjw8L1R5cGUvUGFnZS9QYXJlbnQgMiAwIFIvUmVzb3VyY2VzPDwv + Rm9udDw8L0YxIDUgMCBSL0YyIDkgMCBSPj4vRXh0R1N0YXRlPDwvR1M3IDcgMCBSL0dTOCA4IDAg + Uj4+L1Byb2NTZXRbL1BERi9UZXh0L0ltYWdlQi9JbWFnZUMvSW1hZ2VJXSA+Pi9NZWRpYUJveFsg + MCAwIDYxMiA3OTJdIC9Db250ZW50cyA0IDAgUi9Hcm91cDw8L1R5cGUvR3JvdXAvUy9UcmFuc3Bh + cmVuY3kvQ1MvRGV2aWNlUkdCPj4vVGFicy9TL1N0cnVjdFBhcmVudHMgMD4+DQplbmRvYmoNCjQg + MCBvYmoNCjw8L0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggMjg2ND4+DQpzdHJlYW0NCnicvZxZ + bxw3EsffBeg79ONMsGrzPhZBAMvXerEGkrWAPBiLwJYPGIilXVubbL79VrHvYRfZ3cOOAI2OLvJf + LFb/SPbB6tGP1fffP3r15OXTiv3wQ3X99En1n8sLVjP88lxUrDLwab2ovn64vPj5u+ru8uL65vLi + 0XNecVMzV918vLzgYMcqXikpam4ry1TtTHXzBexevLbVp29QZ/Up/OXav15cXrw5vLz77agP9/D9 + +WgOt/DzA3xXx39VN3+/vHgGOj9dXpzlkAOH+Nih4Ecr//x4JYP6V1D/azlVzVzNDKV60rzq2asn + VTXqCL6+I8RcLxjrayUi+eujgmhf+cOv+PEuxN+CUyYcefsJ/wsfrjG6g+PfNkfmxC9vau8pv3Jh + EaXCYmSt9Yl8dQV1OlXd3L45cCFLNVizmvt5xajBZ6iI2klK5W/HK25CF2NXvyulCX0oSM2QOQ/H + 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 + fvW3lN9NoKP8fgIt5fcTaCkfCZSmfCSw09UI6BG/5zmhhK3NXNLi2yxyv6sRhuO2Ndl2xSReu18C + SWJj63VjgCulDJhYt8bwpZRleJt/hbRauxkZKS1YnXrQP1Zeu/sWqczwsaPoQiXOyj7h6XqHU7Nw + 4j5Agofrl1/DFhRHCafxlSw3vgmNdx9P/alYcBMnVb/AV7HR2uNeVHHjrz9DKxFR4SLtfXVUh+u3 + 2N4QjPCBobkrNuZyvAMV+7FxL7PZQV3OCfxy5A4iij0481lKHXfbcTPqJ0nTd4eAs8CYcIeT1VbQ + t+LU2ltxVP7jrMGt4o1aeyuOlIaffhVkVamLzULb9D3+WLrUlRyhOO7ztEa61PJCAGLMOulS46lg + IcPXSJcaULmXuJ3hGulSIyq3DleUK6R1qRGVG5hGrGq1LjWkcmXwYaE10qVoxiXD+eoa6VI041zj + BgZrpEvRzPuam1Ug1aVohk8vi3XSHc04bmeEj9VUhsnwOhCMljA1gRHb9AMfw80Nf0dZqDxp/Xp4 + TA7MvFJgaGoPJlbVsrkCYqnn5PSIc8tK9/fXAS7TyBgJQ4uqLAzmohtYP/Xhid+vPlfPwtTZkXr3 + OJv90lxjdDiRlTildYc/cAPfx2Hvz5f4Gf75G0z37rvp7y0+uBxvgnWuuxwyB5hIuJvNHretowTd + UQYnabEnj3HPzvf9XP8bLHLV4Vu8cj/XCw7/gnk/4UU2Hn5z4s4HQ3MsdeqGPnb7VjRbEL8K9ww/ + Q0xY2N8U//f6AVcH8UOgZ7nFhcKt+Qi3sps3ssLRkbpW8S6K/XayZvFmr+cFRcraSsqbbFB44aDg + vdjTnS1ze6SeJew4LTy3Vep5YgoWKaRY4ZZ5DoOxWxLSwhkFY6rQf1JEOZRypFhuD9ozzxzgiKSk + iee8/w9kOwx8DQplbmRzdHJlYW0NCmVuZG9iag0KNSAwIG9iag0KPDwvVHlwZS9Gb250L1N1YnR5 + cGUvVHJ1ZVR5cGUvTmFtZS9GMS9CYXNlRm9udC9CQ0RFRUUrQ2FsaWJyaS9FbmNvZGluZy9XaW5B + bnNpRW5jb2RpbmcvRm9udERlc2NyaXB0b3IgNiAwIFIvRmlyc3RDaGFyIDMyL0xhc3RDaGFyIDEy + MS9XaWR0aHMgMjQ5IDAgUj4+DQplbmRvYmoNCjYgMCBvYmoNCjw8L1R5cGUvRm9udERlc2NyaXB0 + b3IvRm9udE5hbWUvQkNERUVFK0NhbGlicmkvRmxhZ3MgMzIvSXRhbGljQW5nbGUgMC9Bc2NlbnQg + NzUwL0Rlc2NlbnQgLTI1MC9DYXBIZWlnaHQgNzUwL0F2Z1dpZHRoIDUyMS9NYXhXaWR0aCAxNzQz + L0ZvbnRXZWlnaHQgNDAwL1hIZWlnaHQgMjUwL1N0ZW1WIDUyL0ZvbnRCQm94WyAtNTAzIC0yNTAg + MTI0MCA3NTBdIC9Gb250RmlsZTIgMjUwIDAgUj4+DQplbmRvYmoNCjcgMCBvYmoNCjw8L1R5cGUv + RXh0R1N0YXRlL0JNL05vcm1hbC9jYSAxPj4NCmVuZG9iag0KOCAwIG9iag0KPDwvVHlwZS9FeHRH + U3RhdGUvQk0vTm9ybWFsL0NBIDE+Pg0KZW5kb2JqDQo5IDAgb2JqDQo8PC9UeXBlL0ZvbnQvU3Vi + dHlwZS9UcnVlVHlwZS9OYW1lL0YyL0Jhc2VGb250L0JDREZFRStDYWxpYnJpLUJvbGQvRW5jb2Rp + bmcvV2luQW5zaUVuY29kaW5nL0ZvbnREZXNjcmlwdG9yIDEwIDAgUi9GaXJzdENoYXIgMzIvTGFz + dENoYXIgMTIwL1dpZHRocyAyNTEgMCBSPj4NCmVuZG9iag0KMTAgMCBvYmoNCjw8L1R5cGUvRm9u + dERlc2NyaXB0b3IvRm9udE5hbWUvQkNERkVFK0NhbGlicmktQm9sZC9GbGFncyAzMi9JdGFsaWNB + bmdsZSAwL0FzY2VudCA3NTAvRGVzY2VudCAtMjUwL0NhcEhlaWdodCA3NTAvQXZnV2lkdGggNTM2 + L01heFdpZHRoIDE3ODEvRm9udFdlaWdodCA3MDAvWEhlaWdodCAyNTAvU3RlbVYgNTMvRm9udEJC + b3hbIC01MTkgLTI1MCAxMjYzIDc1MF0gL0ZvbnRGaWxlMiAyNTIgMCBSPj4NCmVuZG9iag0KMTEg + MCBvYmoNCjw8L1R5cGUvUGFnZS9QYXJlbnQgMiAwIFIvUmVzb3VyY2VzPDwvRm9udDw8L0YyIDkg + MCBSPj4vRXh0R1N0YXRlPDwvR1M3IDcgMCBSL0dTOCA4IDAgUj4+L1Byb2NTZXRbL1BERi9UZXh0 + L0ltYWdlQi9JbWFnZUMvSW1hZ2VJXSA+Pi9NZWRpYUJveFsgMCAwIDYxMiA3OTJdIC9Db250ZW50 + cyAxMiAwIFIvR3JvdXA8PC9UeXBlL0dyb3VwL1MvVHJhbnNwYXJlbmN5L0NTL0RldmljZVJHQj4+ + L1RhYnMvUy9TdHJ1Y3RQYXJlbnRzIDE+Pg0KZW5kb2JqDQoxMiAwIG9iag0KPDwvRmlsdGVyL0Zs + YXRlRGVjb2RlL0xlbmd0aCA0NzY+Pg0Kc3RyZWFtDQp4nK2Yu2ocQRBF84H5hwplB7Vdj36BUKCV + LGwQ2GjBgVEoKZLA9v+Dy4sDh6rmTjDQzNCne6BO3xo6fKXLy8P98fMNlasrur450s99K1z+XlOU + CrW496n062nfvn+kt327Pu3b4ZNSPDg975vES4WEunJRp14Ge6PTa7x099Dp5XdMSC/n0fg3utu3 + Hxf04ZFOX/btNqb7tm90e38k+m9BAlpQm8pNzws6r+OdeEXhe+M+0nhD4VvhKWm8o/Be2fL4isLr + ZO9pfEPhxbhZGt9B+Do795nGDxR+CM/87icK3xqX/O4FJcJaC2vN81Heq+bs+dITlPiqDB4LfJT5 + alGe+doXlPp8dF7YPkp93oW15fko93mt7PljV1Dyc5tc8+euoOznatw9z0fpzyOHyULsQenPInZp + /vsrSn8Wucvz319R+rMIXvnyU5T9zJ37Ah9lP9PB+cNXUfazSF5lYfso+2lEL12oPpT9NLLXStOD + sp+2utL1KMp+6pNnvvoNZT+N8FXy4cNQ9tMIX5rP3oayn0b4snz9G0p/MhrXfPg2lP6kR9u9wEf5 + TyJ9LTQ/hvKfRPpaaH4M5T+J9LXQ/BjKf1I614X6R/lvCveF9OWwv4CVR3uff/8AMWTgdQ0KZW5k + c3RyZWFtDQplbmRvYmoNCjEzIDAgb2JqDQo8PC9UeXBlL1BhZ2UvUGFyZW50IDIgMCBSL1Jlc291 + cmNlczw8L0ZvbnQ8PC9GMSA1IDAgUi9GMiA5IDAgUj4+L0V4dEdTdGF0ZTw8L0dTNyA3IDAgUi9H + UzggOCAwIFI+Pi9Qcm9jU2V0Wy9QREYvVGV4dC9JbWFnZUIvSW1hZ2VDL0ltYWdlSV0gPj4vTWVk + aWFCb3hbIDAgMCA2MTIgNzkyXSAvQ29udGVudHMgMTQgMCBSL0dyb3VwPDwvVHlwZS9Hcm91cC9T + L1RyYW5zcGFyZW5jeS9DUy9EZXZpY2VSR0I+Pi9UYWJzL1MvU3RydWN0UGFyZW50cyAyPj4NCmVu + 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 + mxWDaazuLffHZf/XyULlydKvhoeloFgtJRTUpHahL93+mltBGOxpKTm6Y7Lu6v7GpCD11DNaQExK + 6AdgSOeZT717wkML9upBhyuL6n11mfRLsw1gXRIVLp3a0+/RA+T32sKAIVRhtoQn9+zXM8QITO+A + 9glKLNq+F87X3ru/nWXj+ea8/ouJHAe52xbDiDYr2x4OQ5UX8RyPeO0OBw4teexOr37fA/vb+QJ0 + +xYuIfZaweC/AN6IFYv+0NkZIO4MmKuL8ERtde5O1TH+MO+X/kbPZ/AJ9Sd9u/979eA4Gd6x3mUW + g6WWMJhZi94xhb0jFJHhecL9wep69bHn+5wihEsfiDWLTrGFneJuoM3PeF46LXyXMMzZUOHYoeH7 + xGCtb1Gxwi2rGcxq7BqXFo4omJxw9Qd5lMFVFhVbOo1958iBPCIwaeRJ4/8DtXV3Ww0KZW5kc3Ry + ZWFtDQplbmRvYmoNCjE1IDAgb2JqDQo8PC9BdXRob3IoS3Jpc3RhIFByYXRpY28pIC9DcmVhdG9y + KP7/AE0AaQBjAHIAbwBzAG8AZgB0AK4AIABXAG8AcgBkACAAZgBvAHIAIABPAGYAZgBpAGMAZQAg + ADMANgA1KSAvQ3JlYXRpb25EYXRlKEQ6MjAyMDA0MjIxNjQ1MjktMDcnMDAnKSAvTW9kRGF0ZShE + OjIwMjAwNDIyMTY0NTI5LTA3JzAwJykgL1Byb2R1Y2VyKP7/AE0AaQBjAHIAbwBzAG8AZgB0AK4A + IABXAG8AcgBkACAAZgBvAHIAIABPAGYAZgBpAGMAZQAgADMANgA1KSA+Pg0KZW5kb2JqDQoyMyAw + IG9iag0KPDwvVHlwZS9PYmpTdG0vTiAyMzIvRmlyc3QgMjAzNS9GaWx0ZXIvRmxhdGVEZWNvZGUv + TGVuZ3RoIDMwNTE+Pg0Kc3RyZWFtDQp4nO1b24ocyRF9N/gf8g+mIu8Jy4Jt7WKzrBCSwA/CDyOp + LQ07M72MWiD9vc+pipyetTOz1Gn7weCHmbrG/UTkpaKtmMXYYIIYG40s2dhkJOIezsQaW3DfG7cY + J9FYnMWMU+NjMM6CLBrnTIjJOG+i4FkwMRa8ZpIFUTIp4W1rsrXGi8nJGe9NAUPvTMnkBLEuGx9w + LLi9GBEPfsWIBcOAawuOHtfOigkWx5SpsXiwCR7HnExwRgKIfMaxRBNoB/QK4J+kmAD6lHAfzzOs + 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 + o7YHauOettT9bxfFC374xVj+v4b+R2qoOrMW0tkCqt2Sut9ed8Hr1nDdsK3bqHVDsm4T1s27ug1W + N6fqllHdfKlbInWjoi7560K8Lo/rQrMu/+qirC5v6qKjLgX+W4W/fs361q9fDMY/AFTdMPANCmVu + ZHN0cmVhbQ0KZW5kb2JqDQoyNDkgMCBvYmoNClsgMjI2IDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAy + NTAgMzA2IDI1MiAwIDUwNyA1MDcgNTA3IDUwNyA1MDcgNTA3IDUwNyA1MDcgNTA3IDUwNyAyNjgg + MCAwIDAgMCAwIDAgNTc5IDU0NCA1MzMgNjE1IDQ4OCA0NTkgNjMxIDYyMyAyNTIgMCAwIDQyMCA4 + NTUgMCAwIDUxNyA2NzMgNTQzIDQ1OSAwIDAgMCA4OTAgMCAwIDAgMCAwIDAgMCAwIDAgNDc5IDUy + NSA0MjMgNTI1IDQ5OCAwIDQ3MSAwIDIzMCAwIDAgMjMwIDc5OSA1MjUgNTI3IDUyNSAwIDM0OSAz + OTEgMzM1IDUyNSA0NTIgMCAwIDQ1M10gDQplbmRvYmoNCjI1MCAwIG9iag0KPDwvRmlsdGVyL0Zs + YXRlRGVjb2RlL0xlbmd0aCA1MzE4Mi9MZW5ndGgxIDEzNzU5Nj4+DQpzdHJlYW0NCnic7H0HXFTH + 2v475+zCUhaWKrLiLq6Auig2FEtklaJoLCirgA2k2LChGI0lJEZNSEy5Mb2ZnhtNsqwaMdXkphfT + e+/JjaZdzc01Ub5nzruDaDTJvfd/v3z3/9sXnvM8887Me2bmzMyZjRBIEJENFxNVFIzIL1mf7HuW + xJeZRLFJBSNOzbvntXVfkfhoNVGIb/ykrL7XPly5k0icg1oVVQsqF7/T99MUovmbicyDq5Yvc+5e + /EY20Y1fIH1/7eLZC9a+pw8kWvwCkdU9u25l7bvOlS6i228meumvc2oqq38cu9KHeJGIN2AOHNY7 + O+1HOh/prnMWLFuRPXOSG2nEm7utblFV5U2b53cjseoiFJ+8oHLF4l7W9G7In4PyzgU1yyqvOmvL + chI/yfpnL6xcUHPdoYMzSTSjfu+lixctXdZqpw3ozzRZfnF9zeK42V06Eq35GbdDP+ENGfzhP3a9 + WDAzeuhB6mghafd9tfpZya8XnTb+p0OHG8P2WQYgGUYasaFeCB0h8Wj4lp8OHdoSts+I1M46bpMe + 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 + wAKEAiGAGTANb8VVBzRAAETVAj5xBDgM/Az8BBwC/gH8CPwd+AE4CBwA/gZ8D3wHfAt8A3wN7Af2 + AV8BfwW+BL4APgc+Az4FPgE+Bj4CPgQ+AN4H3gPeBd4B3gbeAt4E3gBeB14DXgVeAV4GXgJeBF4A + ngf2As8BzwLPAE8DTwFPAk8AjwOPAY8CfwEeAR4G9gAPAQ8CDwD3A/cB9wK7gRZgF3APsBPYAWwH + /EAz4APuBu4C7gS2AVuBO4A/A7cDtwG3ArcANwM3ATcCNwBbgOuB64BrgWuAq4GrgCuBK4DLgcuA + S4HNwCXAn4CLgYuAC4ELgE3A+cB5QBNwLnAOsBHYAKyn6uGNAutfYP0LrH+B9S+w/gXWv8D6F1j/ + AutfYP0LrH+B9S+w/gXWv8D6F1j/AutfYP2LegB7gMAeILAHCOwBAnuAwB4gsAcI7AECe4DAHiCw + BwjsAQJ7gMAeILAHCOwBAnuAwB4gsAcI7AECe4DAHiCwBwjsAQJ7gMAeILAHCOwBAnuAwB4gsAcI + 7AEC619g/Qusf4G1L7D2Bda+wNoXWPsCa19g7QusfYG1L7D2/+h9+L/cyv7oBvyXGy1d2u5gJi1p + pvyFp9DriI5ccszvqUygebSUGvG1gTbRJfQQvU2zaB3UlbSFbqU/k48epqfo9d/xOy+/246sNC+g + SH0XhVAcUeuh1v1HbgVazFHtPJcgFWdyHvW02lq/Ps739ZFLWm1HWkJiKdyoa9Vegvdv4nDrIbxy + kW4dINPaRuhoo8Z3odcdufvIbceNQTGV01SaRtOpgirR/2qaQ3MxMvOpjhbQQiO1EHmzca1FaiZK + YXsx9NFSi2gxUE/LqIGW42sx9NJASuYtMdINdBq+VtBKOp1W0WpaE7ieZnhWI+d0I70CWEtn4Mmc + SWcZSjF71tHZtB5PbSOdQ+f+aurcNtVE59H5eM4X0IUn1ZuOSV2Er4vpT5gPm+lSuoyuwLy4mq45 + znu54b+KrqPrMWdk3qXwXG8omXs/PU476S66m+4xxrIKo8Yjosal1hjDxRiD1ejhunYt5vE7rW20 + 1qLvsm9NgZ6ugP+sdjWWB8ZRllyHkhyFn4OMsua4kbgIfWB9tEecutTo/1Fv+1H5Na8aj2vajczV + Rkqq470n05fRtViBN+AqR1WqG6FZXW/o9v7r2spuMdI30c10C57FbYZSzJ5boW+j27G276CttA1f + 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 + IDAgMCAwIDQ1OSAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCA0NzMgNDk1IDAgMCAwIDAgMCAwIDAg + MCAwIDAgNDk4IDAgNDk0IDUzNyAwIDUzNyA1MDMgMCA0NzQgMCAyNDYgMCAwIDI0NiAwIDUzNyA1 + MzggNTM3IDAgMzU1IDM5OSAzNDcgNTM3IDAgMCA0NTldIA0KZW5kb2JqDQoyNTIgMCBvYmoNCjw8 + L0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggMzM2MzMvTGVuZ3RoMSAxMDI3MDQ+Pg0Kc3RyZWFt + DQp4nOydCXiTVdb4z33fLM3WJl3SJU2aNk26J90otAUaulEoW6HBFgRaaLG4UYGqoAzgglhFVFzG + BUFHxwWUNIAUQUTFXdQZUccdlxnXjqjgKNDkf+570tIiuMz4jd//+XLa8/7uPffcfXsj8SkwANDj + QwZNVeWV9bcVPhsGrO2PAGqMj6t4/SnTOGBzDqBD98Qprvz1X835GoCtwlxNc85pblc9YVwHcNYN + mP7wnPMXWcseafgS4NpKAMWque1nnHPn5+WbANrHAaiizjh78dyPlhs+ArjpRYC5+rbW5pbvT198 + CZanxfKK2tCg25n4KsYxP6S2nbPowsefSy3F+KcA8zadPX9O81VvnncY4Ng76D71nOYL29Pvi7Ng + ehv6W89pXdR86yUbzge24HuMX3Zu8zmt75e/mgusoBAg96r2+QsXBUywEvuzh/u3L2ht/8H9/EKA + xU0Axg+Aj4Wi5IMVj770+KyI4YchPgy47Pzi4hc53xhzweSjb/UOUSeETUJfFQhAgvkU4Ae2V73h + 6FtHVqoTpJIGSPwmbjFlwlrQw4UgYk49uABr1X6P9QqYKsrGCrtADmHyW+QFWKSFKL4CjwgQBkKE + UhBlMlGQfQzOwB5IvQiLVfGyx0+xWsEKYH+R2qC8Q3BYgQV4mrhHHs57CtGy8OOtYS/jbL0JsfAr + RXYxrP61eX5OxE2/fZm/RBT+/0694rNQdlL7d6D9b9R/MpGNBvWvzjMM982p0q4bnCauObXvIL8G + WCm7HRp+ykfQ/3RZmB53yrRjJ8+rqMF6nzl5muwt8PxUfSeK2Hu8HJn9hHGYDxUnzXMRmAbVuQku + +zV1nkxkMnD8Ej/xWxj9q8uuhT/8Ct/aQXEljP219f1vFPGFwXPG5cS+nijsX3DWz5WLPj87tj/l + 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 + KrFHQKlmZxW8qHpfRETYMZZdos8K9Tc0bmVNGZWf8PP4qiK6kZk7D1Hp68k6+cqujnrMi0+QTUvB + 02LWgEvJpMfQvQGNGyJ9Cp8e2OiVa3QkzxGYHxUIMdPMzhyDZ2iKtYRjadyCZoFjccXgVeuxLKL/ + AfpFWhMNCmVuZHN0cmVhbQ0KZW5kb2JqDQoyNTMgMCBvYmoNCjw8L1R5cGUvTWV0YWRhdGEvU3Vi + dHlwZS9YTUwvTGVuZ3RoIDMwODQ+Pg0Kc3RyZWFtDQo8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9 + Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/Pjx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6 + bWV0YS8iIHg6eG1wdGs9IjMuMS03MDEiPgo8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cu + dzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgo8cmRmOkRlc2NyaXB0aW9uIHJkZjph + Ym91dD0iIiAgeG1sbnM6cGRmPSJodHRwOi8vbnMuYWRvYmUuY29tL3BkZi8xLjMvIj4KPHBkZjpQ + cm9kdWNlcj5NaWNyb3NvZnTCriBXb3JkIGZvciBPZmZpY2UgMzY1PC9wZGY6UHJvZHVjZXI+PC9y + ZGY6RGVzY3JpcHRpb24+CjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiICB4bWxuczpkYz0i + aHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iPgo8ZGM6Y3JlYXRvcj48cmRmOlNlcT48 + cmRmOmxpPktyaXN0YSBQcmF0aWNvPC9yZGY6bGk+PC9yZGY6U2VxPjwvZGM6Y3JlYXRvcj48L3Jk + ZjpEZXNjcmlwdGlvbj4KPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgIHhtbG5zOnhtcD0i + aHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyI+Cjx4bXA6Q3JlYXRvclRvb2w+TWljcm9zb2Z0 + wq4gV29yZCBmb3IgT2ZmaWNlIDM2NTwveG1wOkNyZWF0b3JUb29sPjx4bXA6Q3JlYXRlRGF0ZT4y + MDIwLTA0LTIyVDE2OjQ1OjI5LTA3OjAwPC94bXA6Q3JlYXRlRGF0ZT48eG1wOk1vZGlmeURhdGU+ + MjAyMC0wNC0yMlQxNjo0NToyOS0wNzowMDwveG1wOk1vZGlmeURhdGU+PC9yZGY6RGVzY3JpcHRp + b24+CjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiICB4bWxuczp4bXBNTT0iaHR0cDovL25z + LmFkb2JlLmNvbS94YXAvMS4wL21tLyI+Cjx4bXBNTTpEb2N1bWVudElEPnV1aWQ6NThCQjA4MDUt + RjY5Ri00NDBGLTgzOUItMURFMDI1NjUxREUyPC94bXBNTTpEb2N1bWVudElEPjx4bXBNTTpJbnN0 + YW5jZUlEPnV1aWQ6NThCQjA4MDUtRjY5Ri00NDBGLTgzOUItMURFMDI1NjUxREUyPC94bXBNTTpJ + bnN0YW5jZUlEPjwvcmRmOkRlc2NyaXB0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKPC9y + ZGY6UkRGPjwveDp4bXBtZXRhPjw/eHBhY2tldCBlbmQ9InciPz4NCmVuZHN0cmVhbQ0KZW5kb2Jq + DQoyNTQgMCBvYmoNCjw8L0Rpc3BsYXlEb2NUaXRsZSB0cnVlPj4NCmVuZG9iag0KMjU1IDAgb2Jq + DQo8PC9UeXBlL1hSZWYvU2l6ZSAyNTUvV1sgMSA0IDJdIC9Sb290IDEgMCBSL0luZm8gMTUgMCBS + L0lEWzwwNTA4QkI1ODlGRjYwRjQ0ODM5QjFERTAyNTY1MURFMj48MDUwOEJCNTg5RkY2MEY0NDgz + OUIxREUwMjU2NTFERTI+XSAvRmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0aCA1MDc+Pg0Kc3RyZWFt + DQp4nDXV93fPZxQH8E9sSojZGkG0tQmKGrVHFKU2tUeomrXTauy9YlMdKFV7U3vvHUWJvX7rv5B+ + 83nx3HOe17nn3Ht/fQdB5KWnR0X+mCDIYAv+C4lKD8mTFBJdJiRvASRgcki+SiExcSH5dQU7hhRK + DCk9JggyRU4XCZ7jBV7iFZ7h3eTryF5c8vsuO6KQCZmRBVmRDTmQE7nwAXIjD6LRCoVRCPmQF/kR + g4IogASUwIcogqL4CMVRDB+jJGJRGqVQBnGoiE/xCcqhLCqgPKqjMiqhKqqgGuJRB5+hBmqhJj5H + bTRCPdTFF6iPhmiAlmiCxmiGpmiB5vgSrdEGbfEV2qE9vkYHdEQndEYXdEU3dEcPfIOe6IXe6IO+ + 6If+eIMBGIhBSMRgDMG3GIrvMAzDMQIjMQqj8T3GYCzGYTwmYCImIQk/4EdMxk9IxhRMxTRMxwzM + xCzMxhzMxTzMx1ssxQIsxCIsxhKkYBmWYwVWYhVWYw3uYj1+x89Yi1+wDr/hV6RiCzZiAzbhD/yJ + zdiFrfgL27ENO7EDB7EHu7EPe3EA+3Ech3EIR/A3juEozuEkTuA0TuEszuAqLuA8LuEiruAy7uA6 + ruEmbuA2buEf3MN9PMC/eIhHSMNjPMHTSFpUSQ3DJj4jvSJVPCQqNmRGWkhK/SD4H/tbjC8NCmVu + ZHN0cmVhbQ0KZW5kb2JqDQp4cmVmDQowIDI1Ng0KMDAwMDAwMDAxNiA2NTUzNSBmDQowMDAwMDAw + MDE3IDAwMDAwIG4NCjAwMDAwMDAxNjggMDAwMDAgbg0KMDAwMDAwMDIzOCAwMDAwMCBuDQowMDAw + MDAwNTExIDAwMDAwIG4NCjAwMDAwMDM0NTAgMDAwMDAgbg0KMDAwMDAwMzYxOSAwMDAwMCBuDQow + MDAwMDAzODU5IDAwMDAwIG4NCjAwMDAwMDM5MTIgMDAwMDAgbg0KMDAwMDAwMzk2NSAwMDAwMCBu + DQowMDAwMDA0MTQwIDAwMDAwIG4NCjAwMDAwMDQzODYgMDAwMDAgbg0KMDAwMDAwNDY1MiAwMDAw + MCBuDQowMDAwMDA1MjAzIDAwMDAwIG4NCjAwMDAwMDU0NzggMDAwMDAgbg0KMDAwMDAwODU2MyAw + MDAwMCBuDQowMDAwMDAwMDE3IDY1NTM1IGYNCjAwMDAwMDAwMTggNjU1MzUgZg0KMDAwMDAwMDAx + OSA2NTUzNSBmDQowMDAwMDAwMDIwIDY1NTM1IGYNCjAwMDAwMDAwMjEgNjU1MzUgZg0KMDAwMDAw + MDAyMiA2NTUzNSBmDQowMDAwMDAwMDIzIDY1NTM1IGYNCjAwMDAwMDAwMjQgNjU1MzUgZg0KMDAw + MDAwMDAyNSA2NTUzNSBmDQowMDAwMDAwMDI2IDY1NTM1IGYNCjAwMDAwMDAwMjcgNjU1MzUgZg0K + MDAwMDAwMDAyOCA2NTUzNSBmDQowMDAwMDAwMDI5IDY1NTM1IGYNCjAwMDAwMDAwMzAgNjU1MzUg + Zg0KMDAwMDAwMDAzMSA2NTUzNSBmDQowMDAwMDAwMDMyIDY1NTM1IGYNCjAwMDAwMDAwMzMgNjU1 + MzUgZg0KMDAwMDAwMDAzNCA2NTUzNSBmDQowMDAwMDAwMDM1IDY1NTM1IGYNCjAwMDAwMDAwMzYg + NjU1MzUgZg0KMDAwMDAwMDAzNyA2NTUzNSBmDQowMDAwMDAwMDM4IDY1NTM1IGYNCjAwMDAwMDAw + MzkgNjU1MzUgZg0KMDAwMDAwMDA0MCA2NTUzNSBmDQowMDAwMDAwMDQxIDY1NTM1IGYNCjAwMDAw + MDAwNDIgNjU1MzUgZg0KMDAwMDAwMDA0MyA2NTUzNSBmDQowMDAwMDAwMDQ0IDY1NTM1IGYNCjAw + MDAwMDAwNDUgNjU1MzUgZg0KMDAwMDAwMDA0NiA2NTUzNSBmDQowMDAwMDAwMDQ3IDY1NTM1IGYN + CjAwMDAwMDAwNDggNjU1MzUgZg0KMDAwMDAwMDA0OSA2NTUzNSBmDQowMDAwMDAwMDUwIDY1NTM1 + IGYNCjAwMDAwMDAwNTEgNjU1MzUgZg0KMDAwMDAwMDA1MiA2NTUzNSBmDQowMDAwMDAwMDUzIDY1 + NTM1IGYNCjAwMDAwMDAwNTQgNjU1MzUgZg0KMDAwMDAwMDA1NSA2NTUzNSBmDQowMDAwMDAwMDU2 + IDY1NTM1IGYNCjAwMDAwMDAwNTcgNjU1MzUgZg0KMDAwMDAwMDA1OCA2NTUzNSBmDQowMDAwMDAw + MDU5IDY1NTM1IGYNCjAwMDAwMDAwNjAgNjU1MzUgZg0KMDAwMDAwMDA2MSA2NTUzNSBmDQowMDAw + MDAwMDYyIDY1NTM1IGYNCjAwMDAwMDAwNjMgNjU1MzUgZg0KMDAwMDAwMDA2NCA2NTUzNSBmDQow + MDAwMDAwMDY1IDY1NTM1IGYNCjAwMDAwMDAwNjYgNjU1MzUgZg0KMDAwMDAwMDA2NyA2NTUzNSBm + DQowMDAwMDAwMDY4IDY1NTM1IGYNCjAwMDAwMDAwNjkgNjU1MzUgZg0KMDAwMDAwMDA3MCA2NTUz + NSBmDQowMDAwMDAwMDcxIDY1NTM1IGYNCjAwMDAwMDAwNzIgNjU1MzUgZg0KMDAwMDAwMDA3MyA2 + NTUzNSBmDQowMDAwMDAwMDc0IDY1NTM1IGYNCjAwMDAwMDAwNzUgNjU1MzUgZg0KMDAwMDAwMDA3 + NiA2NTUzNSBmDQowMDAwMDAwMDc3IDY1NTM1IGYNCjAwMDAwMDAwNzggNjU1MzUgZg0KMDAwMDAw + MDA3OSA2NTUzNSBmDQowMDAwMDAwMDgwIDY1NTM1IGYNCjAwMDAwMDAwODEgNjU1MzUgZg0KMDAw + MDAwMDA4MiA2NTUzNSBmDQowMDAwMDAwMDgzIDY1NTM1IGYNCjAwMDAwMDAwODQgNjU1MzUgZg0K + MDAwMDAwMDA4NSA2NTUzNSBmDQowMDAwMDAwMDg2IDY1NTM1IGYNCjAwMDAwMDAwODcgNjU1MzUg + Zg0KMDAwMDAwMDA4OCA2NTUzNSBmDQowMDAwMDAwMDg5IDY1NTM1IGYNCjAwMDAwMDAwOTAgNjU1 + MzUgZg0KMDAwMDAwMDA5MSA2NTUzNSBmDQowMDAwMDAwMDkyIDY1NTM1IGYNCjAwMDAwMDAwOTMg + NjU1MzUgZg0KMDAwMDAwMDA5NCA2NTUzNSBmDQowMDAwMDAwMDk1IDY1NTM1IGYNCjAwMDAwMDAw + OTYgNjU1MzUgZg0KMDAwMDAwMDA5NyA2NTUzNSBmDQowMDAwMDAwMDk4IDY1NTM1IGYNCjAwMDAw + MDAwOTkgNjU1MzUgZg0KMDAwMDAwMDEwMCA2NTUzNSBmDQowMDAwMDAwMTAxIDY1NTM1IGYNCjAw + MDAwMDAxMDIgNjU1MzUgZg0KMDAwMDAwMDEwMyA2NTUzNSBmDQowMDAwMDAwMTA0IDY1NTM1IGYN + CjAwMDAwMDAxMDUgNjU1MzUgZg0KMDAwMDAwMDEwNiA2NTUzNSBmDQowMDAwMDAwMTA3IDY1NTM1 + IGYNCjAwMDAwMDAxMDggNjU1MzUgZg0KMDAwMDAwMDEwOSA2NTUzNSBmDQowMDAwMDAwMTEwIDY1 + NTM1IGYNCjAwMDAwMDAxMTEgNjU1MzUgZg0KMDAwMDAwMDExMiA2NTUzNSBmDQowMDAwMDAwMTEz + IDY1NTM1IGYNCjAwMDAwMDAxMTQgNjU1MzUgZg0KMDAwMDAwMDExNSA2NTUzNSBmDQowMDAwMDAw + MTE2IDY1NTM1IGYNCjAwMDAwMDAxMTcgNjU1MzUgZg0KMDAwMDAwMDExOCA2NTUzNSBmDQowMDAw + MDAwMTE5IDY1NTM1IGYNCjAwMDAwMDAxMjAgNjU1MzUgZg0KMDAwMDAwMDEyMSA2NTUzNSBmDQow + MDAwMDAwMTIyIDY1NTM1IGYNCjAwMDAwMDAxMjMgNjU1MzUgZg0KMDAwMDAwMDEyNCA2NTUzNSBm + DQowMDAwMDAwMTI1IDY1NTM1IGYNCjAwMDAwMDAxMjYgNjU1MzUgZg0KMDAwMDAwMDEyNyA2NTUz + NSBmDQowMDAwMDAwMTI4IDY1NTM1IGYNCjAwMDAwMDAxMjkgNjU1MzUgZg0KMDAwMDAwMDEzMCA2 + NTUzNSBmDQowMDAwMDAwMTMxIDY1NTM1IGYNCjAwMDAwMDAxMzIgNjU1MzUgZg0KMDAwMDAwMDEz + MyA2NTUzNSBmDQowMDAwMDAwMTM0IDY1NTM1IGYNCjAwMDAwMDAxMzUgNjU1MzUgZg0KMDAwMDAw + MDEzNiA2NTUzNSBmDQowMDAwMDAwMTM3IDY1NTM1IGYNCjAwMDAwMDAxMzggNjU1MzUgZg0KMDAw + MDAwMDEzOSA2NTUzNSBmDQowMDAwMDAwMTQwIDY1NTM1IGYNCjAwMDAwMDAxNDEgNjU1MzUgZg0K + MDAwMDAwMDE0MiA2NTUzNSBmDQowMDAwMDAwMTQzIDY1NTM1IGYNCjAwMDAwMDAxNDQgNjU1MzUg + Zg0KMDAwMDAwMDE0NSA2NTUzNSBmDQowMDAwMDAwMTQ2IDY1NTM1IGYNCjAwMDAwMDAxNDcgNjU1 + MzUgZg0KMDAwMDAwMDE0OCA2NTUzNSBmDQowMDAwMDAwMTQ5IDY1NTM1IGYNCjAwMDAwMDAxNTAg + NjU1MzUgZg0KMDAwMDAwMDE1MSA2NTUzNSBmDQowMDAwMDAwMTUyIDY1NTM1IGYNCjAwMDAwMDAx + NTMgNjU1MzUgZg0KMDAwMDAwMDE1NCA2NTUzNSBmDQowMDAwMDAwMTU1IDY1NTM1IGYNCjAwMDAw + MDAxNTYgNjU1MzUgZg0KMDAwMDAwMDE1NyA2NTUzNSBmDQowMDAwMDAwMTU4IDY1NTM1IGYNCjAw + MDAwMDAxNTkgNjU1MzUgZg0KMDAwMDAwMDE2MCA2NTUzNSBmDQowMDAwMDAwMTYxIDY1NTM1IGYN + CjAwMDAwMDAxNjIgNjU1MzUgZg0KMDAwMDAwMDE2MyA2NTUzNSBmDQowMDAwMDAwMTY0IDY1NTM1 + IGYNCjAwMDAwMDAxNjUgNjU1MzUgZg0KMDAwMDAwMDE2NiA2NTUzNSBmDQowMDAwMDAwMTY3IDY1 + NTM1IGYNCjAwMDAwMDAxNjggNjU1MzUgZg0KMDAwMDAwMDE2OSA2NTUzNSBmDQowMDAwMDAwMTcw + IDY1NTM1IGYNCjAwMDAwMDAxNzEgNjU1MzUgZg0KMDAwMDAwMDE3MiA2NTUzNSBmDQowMDAwMDAw + MTczIDY1NTM1IGYNCjAwMDAwMDAxNzQgNjU1MzUgZg0KMDAwMDAwMDE3NSA2NTUzNSBmDQowMDAw + MDAwMTc2IDY1NTM1IGYNCjAwMDAwMDAxNzcgNjU1MzUgZg0KMDAwMDAwMDE3OCA2NTUzNSBmDQow + MDAwMDAwMTc5IDY1NTM1IGYNCjAwMDAwMDAxODAgNjU1MzUgZg0KMDAwMDAwMDE4MSA2NTUzNSBm + DQowMDAwMDAwMTgyIDY1NTM1IGYNCjAwMDAwMDAxODMgNjU1MzUgZg0KMDAwMDAwMDE4NCA2NTUz + NSBmDQowMDAwMDAwMTg1IDY1NTM1IGYNCjAwMDAwMDAxODYgNjU1MzUgZg0KMDAwMDAwMDE4NyA2 + NTUzNSBmDQowMDAwMDAwMTg4IDY1NTM1IGYNCjAwMDAwMDAxODkgNjU1MzUgZg0KMDAwMDAwMDE5 + MCA2NTUzNSBmDQowMDAwMDAwMTkxIDY1NTM1IGYNCjAwMDAwMDAxOTIgNjU1MzUgZg0KMDAwMDAw + MDE5MyA2NTUzNSBmDQowMDAwMDAwMTk0IDY1NTM1IGYNCjAwMDAwMDAxOTUgNjU1MzUgZg0KMDAw + MDAwMDE5NiA2NTUzNSBmDQowMDAwMDAwMTk3IDY1NTM1IGYNCjAwMDAwMDAxOTggNjU1MzUgZg0K + MDAwMDAwMDE5OSA2NTUzNSBmDQowMDAwMDAwMjAwIDY1NTM1IGYNCjAwMDAwMDAyMDEgNjU1MzUg + Zg0KMDAwMDAwMDIwMiA2NTUzNSBmDQowMDAwMDAwMjAzIDY1NTM1IGYNCjAwMDAwMDAyMDQgNjU1 + MzUgZg0KMDAwMDAwMDIwNSA2NTUzNSBmDQowMDAwMDAwMjA2IDY1NTM1IGYNCjAwMDAwMDAyMDcg + NjU1MzUgZg0KMDAwMDAwMDIwOCA2NTUzNSBmDQowMDAwMDAwMjA5IDY1NTM1IGYNCjAwMDAwMDAy + MTAgNjU1MzUgZg0KMDAwMDAwMDIxMSA2NTUzNSBmDQowMDAwMDAwMjEyIDY1NTM1IGYNCjAwMDAw + MDAyMTMgNjU1MzUgZg0KMDAwMDAwMDIxNCA2NTUzNSBmDQowMDAwMDAwMjE1IDY1NTM1IGYNCjAw + MDAwMDAyMTYgNjU1MzUgZg0KMDAwMDAwMDIxNyA2NTUzNSBmDQowMDAwMDAwMjE4IDY1NTM1IGYN + CjAwMDAwMDAyMTkgNjU1MzUgZg0KMDAwMDAwMDIyMCA2NTUzNSBmDQowMDAwMDAwMjIxIDY1NTM1 + IGYNCjAwMDAwMDAyMjIgNjU1MzUgZg0KMDAwMDAwMDIyMyA2NTUzNSBmDQowMDAwMDAwMjI0IDY1 + NTM1IGYNCjAwMDAwMDAyMjUgNjU1MzUgZg0KMDAwMDAwMDIyNiA2NTUzNSBmDQowMDAwMDAwMjI3 + IDY1NTM1IGYNCjAwMDAwMDAyMjggNjU1MzUgZg0KMDAwMDAwMDIyOSA2NTUzNSBmDQowMDAwMDAw + MjMwIDY1NTM1IGYNCjAwMDAwMDAyMzEgNjU1MzUgZg0KMDAwMDAwMDIzMiA2NTUzNSBmDQowMDAw + MDAwMjMzIDY1NTM1IGYNCjAwMDAwMDAyMzQgNjU1MzUgZg0KMDAwMDAwMDIzNSA2NTUzNSBmDQow + MDAwMDAwMjM2IDY1NTM1IGYNCjAwMDAwMDAyMzcgNjU1MzUgZg0KMDAwMDAwMDIzOCA2NTUzNSBm + DQowMDAwMDAwMjM5IDY1NTM1IGYNCjAwMDAwMDAyNDAgNjU1MzUgZg0KMDAwMDAwMDI0MSA2NTUz + NSBmDQowMDAwMDAwMjQyIDY1NTM1IGYNCjAwMDAwMDAyNDMgNjU1MzUgZg0KMDAwMDAwMDI0NCA2 + NTUzNSBmDQowMDAwMDAwMjQ1IDY1NTM1IGYNCjAwMDAwMDAyNDYgNjU1MzUgZg0KMDAwMDAwMDI0 + NyA2NTUzNSBmDQowMDAwMDAwMjQ4IDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAx + MTk4NyAwMDAwMCBuDQowMDAwMDEyMjg5IDAwMDAwIG4NCjAwMDAwNjU1NjQgMDAwMDAgbg0KMDAw + MDA2NTgyMiAwMDAwMCBuDQowMDAwMDk5NTQ4IDAwMDAwIG4NCjAwMDAxMDI3MTYgMDAwMDAgbg0K + MDAwMDEwMjc2MiAwMDAwMCBuDQp0cmFpbGVyDQo8PC9TaXplIDI1Ni9Sb290IDEgMCBSL0luZm8g + MTUgMCBSL0lEWzwwNTA4QkI1ODlGRjYwRjQ0ODM5QjFERTAyNTY1MURFMj48MDUwOEJCNTg5RkY2 + MEY0NDgzOUIxREUwMjU2NTFERTI+XSA+Pg0Kc3RhcnR4cmVmDQoxMDM0NzINCiUlRU9GDQp4cmVm + DQowIDANCnRyYWlsZXINCjw8L1NpemUgMjU2L1Jvb3QgMSAwIFIvSW5mbyAxNSAwIFIvSURbPDA1 + MDhCQjU4OUZGNjBGNDQ4MzlCMURFMDI1NjUxREUyPjwwNTA4QkI1ODlGRjYwRjQ0ODM5QjFERTAy + NTY1MURFMj5dIC9QcmV2IDEwMzQ3Mi9YUmVmU3RtIDEwMjc2Mj4+DQpzdGFydHhyZWYNCjEwODc1 + Mg0KJSVFT0Y= + headers: + Content-Type: + - application/pdf + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/3533d683-d679-4fb9-bf32-39f69b144588/analyze?includeTextDetails=true + response: + body: + string: '' + headers: + apim-request-id: 22a516d3-c23a-439a-9f45-47d3c8c701e3 + content-length: '0' + date: Thu, 30 Apr 2020 23:08:13 GMT + operation-location: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/3533d683-d679-4fb9-bf32-39f69b144588/analyzeresults/85e45621-9a76-40df-bb80-633b148b4335 + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '84' + status: + code: 202 + message: Accepted + url: https://westus.api.cognitive.microsoft.com//formrecognizer/v2.0-preview/custom/models/3533d683-d679-4fb9-bf32-39f69b144588/analyze?includeTextDetails=true +- request: + body: null + headers: + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/3533d683-d679-4fb9-bf32-39f69b144588/analyzeresults/85e45621-9a76-40df-bb80-633b148b4335 + response: + body: + string: '{"status":"succeeded","createdDateTime":"2020-04-30T23:08:13Z","lastUpdatedDateTime":"2020-04-30T23:08:18Z","analyzeResult":{"version":"2.0.0","readResults":[{"page":1,"angle":0,"width":8.5,"height":11.0,"unit":"inch","lines":[{"text":"Company + A Invoice","boundingBox":[0.8764,1.1014,2.3875,1.1014,2.3875,1.2958,0.8764,1.2958],"words":[{"text":"Company","boundingBox":[0.8764,1.1014,1.6236,1.1014,1.6236,1.2958,0.8764,1.2958]},{"text":"A","boundingBox":[1.6667,1.1014,1.7778,1.1014,1.7778,1.2958,1.6667,1.2958]},{"text":"Invoice","boundingBox":[1.8222,1.1014,2.3875,1.1014,2.3875,1.2958,1.8222,1.2958]}]},{"text":"Invoice + For:","boundingBox":[6.0028,1.0431,7.0528,1.0431,7.0528,1.2667,6.0028,1.2667],"words":[{"text":"Invoice","boundingBox":[6.0028,1.0431,6.6472,1.0431,6.6472,1.2667,6.0028,1.2667]},{"text":"For:","boundingBox":[6.6958,1.0431,7.0528,1.0431,7.0528,1.2667,6.6958,1.2667]}]},{"text":"Address:","boundingBox":[0.8764,1.4681,1.5778,1.4681,1.5778,1.6625,0.8764,1.6625],"words":[{"text":"Address:","boundingBox":[0.8764,1.4681,1.5778,1.4681,1.5778,1.6625,0.8764,1.6625]}]},{"text":"Bilbo + Baggins","boundingBox":[6.0028,1.4389,6.9028,1.4389,6.9028,1.6056,6.0028,1.6056],"words":[{"text":"Bilbo","boundingBox":[6.0028,1.4389,6.3472,1.4389,6.3472,1.6056,6.0028,1.6056]},{"text":"Baggins","boundingBox":[6.3819,1.4389,6.9028,1.4389,6.9028,1.6056,6.3819,1.6056]}]},{"text":"123 + Hobbit Lane","boundingBox":[6.0028,1.6597,7.1083,1.6597,7.1083,1.8264,6.0028,1.8264],"words":[{"text":"123","boundingBox":[6.0028,1.6597,6.2542,1.6597,6.2542,1.8264,6.0028,1.8264]},{"text":"Hobbit","boundingBox":[6.2889,1.6597,6.7514,1.6597,6.7514,1.8264,6.2889,1.8264]},{"text":"Lane","boundingBox":[6.7889,1.6597,7.1083,1.6597,7.1083,1.8264,6.7889,1.8264]}]},{"text":"567 + Main St.","boundingBox":[0.8764,1.8292,1.725,1.8292,1.725,1.9958,0.8764,1.9958],"words":[{"text":"567","boundingBox":[0.8764,1.8292,1.1278,1.8292,1.1278,1.9958,0.8764,1.9958]},{"text":"Main","boundingBox":[1.1639,1.8292,1.5139,1.8292,1.5139,1.9958,1.1639,1.9958]},{"text":"St.","boundingBox":[1.55,1.8292,1.725,1.8292,1.725,1.9958,1.55,1.9958]}]},{"text":"Redmond, + WA","boundingBox":[6.0028,1.8792,6.9819,1.8792,6.9819,2.0458,6.0028,2.0458],"words":[{"text":"Redmond,","boundingBox":[6.0028,1.8792,6.6972,1.8792,6.6972,2.0458,6.0028,2.0458]},{"text":"WA","boundingBox":[6.7361,1.8792,6.9819,1.8792,6.9819,2.0458,6.7361,2.0458]}]},{"text":"Redmond, + WA","boundingBox":[0.8764,2.0486,1.8569,2.0486,1.8569,2.2153,0.8764,2.2153],"words":[{"text":"Redmond,","boundingBox":[0.8764,2.0486,1.5722,2.0486,1.5722,2.2153,0.8764,2.2153]},{"text":"WA","boundingBox":[1.6097,2.0486,1.8569,2.0486,1.8569,2.2153,1.6097,2.2153]}]},{"text":"555-555-5555","boundingBox":[6.0028,2.0986,6.9472,2.0986,6.9472,2.2653,6.0028,2.2653],"words":[{"text":"555-555-5555","boundingBox":[6.0028,2.0986,6.9472,2.0986,6.9472,2.2653,6.0028,2.2653]}]},{"text":"555-555-5555","boundingBox":[0.8764,2.2694,1.8222,2.2694,1.8222,2.4361,0.8764,2.4361],"words":[{"text":"555-555-5555","boundingBox":[0.8764,2.2694,1.8222,2.2694,1.8222,2.4361,0.8764,2.4361]}]},{"text":"Item","boundingBox":[1.0806,2.9833,1.3958,2.9833,1.3958,3.15,1.0806,3.15],"words":[{"text":"Item","boundingBox":[1.0806,2.9833,1.3958,2.9833,1.3958,3.15,1.0806,3.15]}]},{"text":"Quantity","boundingBox":[3.2444,2.9833,3.8389,2.9833,3.8389,3.15,3.2444,3.15],"words":[{"text":"Quantity","boundingBox":[3.2444,2.9833,3.8389,2.9833,3.8389,3.15,3.2444,3.15]}]},{"text":"Price","boundingBox":[5.4083,2.9833,5.7458,2.9833,5.7458,3.15,5.4083,3.15],"words":[{"text":"Price","boundingBox":[5.4083,2.9833,5.7458,2.9833,5.7458,3.15,5.4083,3.15]}]},{"text":"A","boundingBox":[1.0806,3.1931,1.1764,3.1931,1.1764,3.3597,1.0806,3.3597],"words":[{"text":"A","boundingBox":[1.0806,3.1931,1.1764,3.1931,1.1764,3.3597,1.0806,3.3597]}]},{"text":"1","boundingBox":[3.2444,3.1931,3.3292,3.1931,3.3292,3.3597,3.2444,3.3597],"words":[{"text":"1","boundingBox":[3.2444,3.1931,3.3292,3.1931,3.3292,3.3597,3.2444,3.3597]}]},{"text":"10.99","boundingBox":[5.4083,3.1931,5.7875,3.1931,5.7875,3.3597,5.4083,3.3597],"words":[{"text":"10.99","boundingBox":[5.4083,3.1931,5.7875,3.1931,5.7875,3.3597,5.4083,3.3597]}]},{"text":"B","boundingBox":[1.0806,3.4056,1.1708,3.4056,1.1708,3.5722,1.0806,3.5722],"words":[{"text":"B","boundingBox":[1.0806,3.4056,1.1708,3.4056,1.1708,3.5722,1.0806,3.5722]}]},{"text":"2","boundingBox":[3.2444,3.4056,3.3292,3.4056,3.3292,3.5722,3.2444,3.5722],"words":[{"text":"2","boundingBox":[3.2444,3.4056,3.3292,3.4056,3.3292,3.5722,3.2444,3.5722]}]},{"text":"14.67","boundingBox":[5.4083,3.4056,5.7861,3.4056,5.7861,3.5722,5.4083,3.5722],"words":[{"text":"14.67","boundingBox":[5.4083,3.4056,5.7861,3.4056,5.7861,3.5722,5.4083,3.5722]}]},{"text":"C","boundingBox":[1.0806,3.6167,1.1694,3.6167,1.1694,3.7833,1.0806,3.7833],"words":[{"text":"C","boundingBox":[1.0806,3.6167,1.1694,3.6167,1.1694,3.7833,1.0806,3.7833]}]},{"text":"4","boundingBox":[3.2444,3.6167,3.3292,3.6167,3.3292,3.7833,3.2444,3.7833],"words":[{"text":"4","boundingBox":[3.2444,3.6167,3.3292,3.6167,3.3292,3.7833,3.2444,3.7833]}]},{"text":"15.66","boundingBox":[5.4083,3.6167,5.7861,3.6167,5.7861,3.7833,5.4083,3.7833],"words":[{"text":"15.66","boundingBox":[5.4083,3.6167,5.7861,3.6167,5.7861,3.7833,5.4083,3.7833]}]},{"text":"D","boundingBox":[1.0806,3.8264,1.1833,3.8264,1.1833,3.9931,1.0806,3.9931],"words":[{"text":"D","boundingBox":[1.0806,3.8264,1.1833,3.8264,1.1833,3.9931,1.0806,3.9931]}]},{"text":"1","boundingBox":[3.2444,3.8264,3.3292,3.8264,3.3292,3.9931,3.2444,3.9931],"words":[{"text":"1","boundingBox":[3.2444,3.8264,3.3292,3.8264,3.3292,3.9931,3.2444,3.9931]}]},{"text":"12.00","boundingBox":[5.4083,3.8264,5.7861,3.8264,5.7861,3.9931,5.4083,3.9931],"words":[{"text":"12.00","boundingBox":[5.4083,3.8264,5.7861,3.8264,5.7861,3.9931,5.4083,3.9931]}]},{"text":"E","boundingBox":[1.0806,4.0361,1.1611,4.0361,1.1611,4.2028,1.0806,4.2028],"words":[{"text":"E","boundingBox":[1.0806,4.0361,1.1611,4.0361,1.1611,4.2028,1.0806,4.2028]}]},{"text":"4","boundingBox":[3.2444,4.0361,3.3292,4.0361,3.3292,4.2028,3.2444,4.2028],"words":[{"text":"4","boundingBox":[3.2444,4.0361,3.3292,4.0361,3.3292,4.2028,3.2444,4.2028]}]},{"text":"10.00","boundingBox":[5.4083,4.0361,5.7875,4.0361,5.7875,4.2028,5.4083,4.2028],"words":[{"text":"10.00","boundingBox":[5.4083,4.0361,5.7875,4.0361,5.7875,4.2028,5.4083,4.2028]}]},{"text":"F","boundingBox":[1.0806,4.2458,1.1569,4.2458,1.1569,4.4125,1.0806,4.4125],"words":[{"text":"F","boundingBox":[1.0806,4.2458,1.1569,4.2458,1.1569,4.4125,1.0806,4.4125]}]},{"text":"6","boundingBox":[3.2444,4.2458,3.3292,4.2458,3.3292,4.4125,3.2444,4.4125],"words":[{"text":"6","boundingBox":[3.2444,4.2458,3.3292,4.2458,3.3292,4.4125,3.2444,4.4125]}]},{"text":"12.00","boundingBox":[5.4083,4.2458,5.7861,4.2458,5.7861,4.4125,5.4083,4.4125],"words":[{"text":"12.00","boundingBox":[5.4083,4.2458,5.7861,4.2458,5.7861,4.4125,5.4083,4.4125]}]},{"text":"G","boundingBox":[1.0806,4.4569,1.1861,4.4569,1.1861,4.6236,1.0806,4.6236],"words":[{"text":"G","boundingBox":[1.0806,4.4569,1.1861,4.4569,1.1861,4.6236,1.0806,4.6236]}]},{"text":"8","boundingBox":[3.2444,4.4569,3.3292,4.4569,3.3292,4.6236,3.2444,4.6236],"words":[{"text":"8","boundingBox":[3.2444,4.4569,3.3292,4.4569,3.3292,4.6236,3.2444,4.6236]}]},{"text":"22.00","boundingBox":[5.4083,4.4569,5.7875,4.4569,5.7875,4.6236,5.4083,4.6236],"words":[{"text":"22.00","boundingBox":[5.4083,4.4569,5.7875,4.4569,5.7875,4.6236,5.4083,4.6236]}]},{"text":"Subtotal:","boundingBox":[5.5028,4.8861,6.1347,4.8861,6.1347,5.0528,5.5028,5.0528],"words":[{"text":"Subtotal:","boundingBox":[5.5028,4.8861,6.1347,4.8861,6.1347,5.0528,5.5028,5.0528]}]},{"text":"300.00","boundingBox":[6.1722,4.8861,6.6361,4.8861,6.6361,5.0528,6.1722,5.0528],"words":[{"text":"300.00","boundingBox":[6.1722,4.8861,6.6361,4.8861,6.6361,5.0528,6.1722,5.0528]}]},{"text":"Tax:","boundingBox":[5.5028,5.1069,5.7917,5.1069,5.7917,5.2736,5.5028,5.2736],"words":[{"text":"Tax:","boundingBox":[5.5028,5.1069,5.7917,5.1069,5.7917,5.2736,5.5028,5.2736]}]},{"text":"30.00","boundingBox":[5.8292,5.1069,6.2069,5.1069,6.2069,5.2736,5.8292,5.2736],"words":[{"text":"30.00","boundingBox":[5.8292,5.1069,6.2069,5.1069,6.2069,5.2736,5.8292,5.2736]}]},{"text":"Tip:","boundingBox":[5.5028,5.3264,5.7611,5.3264,5.7611,5.4931,5.5028,5.4931],"words":[{"text":"Tip:","boundingBox":[5.5028,5.3264,5.7611,5.3264,5.7611,5.4931,5.5028,5.4931]}]},{"text":"100.00","boundingBox":[5.7986,5.3264,6.2639,5.3264,6.2639,5.4931,5.7986,5.4931],"words":[{"text":"100.00","boundingBox":[5.7986,5.3264,6.2639,5.3264,6.2639,5.4931,5.7986,5.4931]}]},{"text":"Total:","boundingBox":[5.5028,5.5472,5.9014,5.5472,5.9014,5.7139,5.5028,5.7139],"words":[{"text":"Total:","boundingBox":[5.5028,5.5472,5.9014,5.5472,5.9014,5.7139,5.5028,5.7139]}]},{"text":"430.00","boundingBox":[5.9389,5.5472,6.4028,5.5472,6.4028,5.7139,5.9389,5.7139],"words":[{"text":"430.00","boundingBox":[5.9389,5.5472,6.4028,5.5472,6.4028,5.7139,5.9389,5.7139]}]},{"text":"Signature:","boundingBox":[1.0,6.6431,1.7083,6.6431,1.7083,6.8097,1.0,6.8097],"words":[{"text":"Signature:","boundingBox":[1.0,6.6431,1.7083,6.6431,1.7083,6.8097,1.0,6.8097]}]},{"text":"____Bilbo + Baggins__________","boundingBox":[1.7472,6.6431,3.8333,6.6431,3.8333,6.8097,1.7472,6.8097],"words":[{"text":"____Bilbo","boundingBox":[1.7472,6.6431,2.4333,6.6431,2.4333,6.8097,1.7472,6.8097]},{"text":"Baggins__________","boundingBox":[2.4708,6.6431,3.8333,6.6431,3.8333,6.8097,2.4708,6.8097]}]}]},{"page":3,"angle":0,"width":8.5,"height":11.0,"unit":"inch","lines":[{"text":"Company + B Invoice","boundingBox":[0.8764,1.1014,2.3833,1.1014,2.3833,1.2958,0.8764,1.2958],"words":[{"text":"Company","boundingBox":[0.8764,1.1014,1.6236,1.1014,1.6236,1.2958,0.8764,1.2958]},{"text":"B","boundingBox":[1.6667,1.1014,1.7722,1.1014,1.7722,1.2958,1.6667,1.2958]},{"text":"Invoice","boundingBox":[1.8167,1.1014,2.3833,1.1014,2.3833,1.2958,1.8167,1.2958]}]},{"text":"Invoice + For:","boundingBox":[6.0028,1.0431,7.0528,1.0431,7.0528,1.2667,6.0028,1.2667],"words":[{"text":"Invoice","boundingBox":[6.0028,1.0431,6.6472,1.0431,6.6472,1.2667,6.0028,1.2667]},{"text":"For:","boundingBox":[6.6958,1.0431,7.0528,1.0431,7.0528,1.2667,6.6958,1.2667]}]},{"text":"Address:","boundingBox":[0.8764,1.4681,1.5778,1.4681,1.5778,1.6625,0.8764,1.6625],"words":[{"text":"Address:","boundingBox":[0.8764,1.4681,1.5778,1.4681,1.5778,1.6625,0.8764,1.6625]}]},{"text":"Frodo + Baggins","boundingBox":[6.0028,1.4389,6.9569,1.4389,6.9569,1.6056,6.0028,1.6056],"words":[{"text":"Frodo","boundingBox":[6.0028,1.4389,6.3972,1.4389,6.3972,1.6056,6.0028,1.6056]},{"text":"Baggins","boundingBox":[6.4361,1.4389,6.9569,1.4389,6.9569,1.6056,6.4361,1.6056]}]},{"text":"123 + Hobbit Lane","boundingBox":[6.0028,1.6597,7.1083,1.6597,7.1083,1.8264,6.0028,1.8264],"words":[{"text":"123","boundingBox":[6.0028,1.6597,6.2542,1.6597,6.2542,1.8264,6.0028,1.8264]},{"text":"Hobbit","boundingBox":[6.2889,1.6597,6.7514,1.6597,6.7514,1.8264,6.2889,1.8264]},{"text":"Lane","boundingBox":[6.7889,1.6597,7.1083,1.6597,7.1083,1.8264,6.7889,1.8264]}]},{"text":"567 + Main St.","boundingBox":[0.8764,1.8292,1.725,1.8292,1.725,1.9958,0.8764,1.9958],"words":[{"text":"567","boundingBox":[0.8764,1.8292,1.1278,1.8292,1.1278,1.9958,0.8764,1.9958]},{"text":"Main","boundingBox":[1.1639,1.8292,1.5139,1.8292,1.5139,1.9958,1.1639,1.9958]},{"text":"St.","boundingBox":[1.55,1.8292,1.725,1.8292,1.725,1.9958,1.55,1.9958]}]},{"text":"Redmond, + WA","boundingBox":[6.0028,1.8792,6.9819,1.8792,6.9819,2.0458,6.0028,2.0458],"words":[{"text":"Redmond,","boundingBox":[6.0028,1.8792,6.6972,1.8792,6.6972,2.0458,6.0028,2.0458]},{"text":"WA","boundingBox":[6.7361,1.8792,6.9819,1.8792,6.9819,2.0458,6.7361,2.0458]}]},{"text":"Redmond, + WA","boundingBox":[0.8764,2.0486,1.8569,2.0486,1.8569,2.2153,0.8764,2.2153],"words":[{"text":"Redmond,","boundingBox":[0.8764,2.0486,1.5722,2.0486,1.5722,2.2153,0.8764,2.2153]},{"text":"WA","boundingBox":[1.6097,2.0486,1.8569,2.0486,1.8569,2.2153,1.6097,2.2153]}]},{"text":"555-555-5555","boundingBox":[6.0028,2.0986,6.9472,2.0986,6.9472,2.2653,6.0028,2.2653],"words":[{"text":"555-555-5555","boundingBox":[6.0028,2.0986,6.9472,2.0986,6.9472,2.2653,6.0028,2.2653]}]},{"text":"555-555-5555","boundingBox":[0.8764,2.2694,1.8222,2.2694,1.8222,2.4361,0.8764,2.4361],"words":[{"text":"555-555-5555","boundingBox":[0.8764,2.2694,1.8222,2.2694,1.8222,2.4361,0.8764,2.4361]}]},{"text":"Item","boundingBox":[1.0806,2.9833,1.3958,2.9833,1.3958,3.15,1.0806,3.15],"words":[{"text":"Item","boundingBox":[1.0806,2.9833,1.3958,2.9833,1.3958,3.15,1.0806,3.15]}]},{"text":"Quantity","boundingBox":[3.2444,2.9833,3.8389,2.9833,3.8389,3.15,3.2444,3.15],"words":[{"text":"Quantity","boundingBox":[3.2444,2.9833,3.8389,2.9833,3.8389,3.15,3.2444,3.15]}]},{"text":"Price","boundingBox":[5.4083,2.9833,5.7458,2.9833,5.7458,3.15,5.4083,3.15],"words":[{"text":"Price","boundingBox":[5.4083,2.9833,5.7458,2.9833,5.7458,3.15,5.4083,3.15]}]},{"text":"A","boundingBox":[1.0806,3.1931,1.1764,3.1931,1.1764,3.3597,1.0806,3.3597],"words":[{"text":"A","boundingBox":[1.0806,3.1931,1.1764,3.1931,1.1764,3.3597,1.0806,3.3597]}]},{"text":"10","boundingBox":[3.2444,3.1931,3.4125,3.1931,3.4125,3.3597,3.2444,3.3597],"words":[{"text":"10","boundingBox":[3.2444,3.1931,3.4125,3.1931,3.4125,3.3597,3.2444,3.3597]}]},{"text":"100.99","boundingBox":[5.4083,3.1931,5.8708,3.1931,5.8708,3.3597,5.4083,3.3597],"words":[{"text":"100.99","boundingBox":[5.4083,3.1931,5.8708,3.1931,5.8708,3.3597,5.4083,3.3597]}]},{"text":"B","boundingBox":[1.0806,3.4056,1.1708,3.4056,1.1708,3.5722,1.0806,3.5722],"words":[{"text":"B","boundingBox":[1.0806,3.4056,1.1708,3.4056,1.1708,3.5722,1.0806,3.5722]}]},{"text":"20","boundingBox":[3.2444,3.4056,3.4125,3.4056,3.4125,3.5722,3.2444,3.5722],"words":[{"text":"20","boundingBox":[3.2444,3.4056,3.4125,3.4056,3.4125,3.5722,3.2444,3.5722]}]},{"text":"140.67","boundingBox":[5.4083,3.4056,5.8694,3.4056,5.8694,3.5722,5.4083,3.5722],"words":[{"text":"140.67","boundingBox":[5.4083,3.4056,5.8694,3.4056,5.8694,3.5722,5.4083,3.5722]}]},{"text":"C","boundingBox":[1.0806,3.6167,1.1694,3.6167,1.1694,3.7833,1.0806,3.7833],"words":[{"text":"C","boundingBox":[1.0806,3.6167,1.1694,3.6167,1.1694,3.7833,1.0806,3.7833]}]},{"text":"40","boundingBox":[3.2444,3.6167,3.4125,3.6167,3.4125,3.7833,3.2444,3.7833],"words":[{"text":"40","boundingBox":[3.2444,3.6167,3.4125,3.6167,3.4125,3.7833,3.2444,3.7833]}]},{"text":"150.66","boundingBox":[5.4083,3.6167,5.8694,3.6167,5.8694,3.7833,5.4083,3.7833],"words":[{"text":"150.66","boundingBox":[5.4083,3.6167,5.8694,3.6167,5.8694,3.7833,5.4083,3.7833]}]},{"text":"D","boundingBox":[1.0806,3.8264,1.1833,3.8264,1.1833,3.9931,1.0806,3.9931],"words":[{"text":"D","boundingBox":[1.0806,3.8264,1.1833,3.8264,1.1833,3.9931,1.0806,3.9931]}]},{"text":"10","boundingBox":[3.2444,3.8264,3.4125,3.8264,3.4125,3.9931,3.2444,3.9931],"words":[{"text":"10","boundingBox":[3.2444,3.8264,3.4125,3.8264,3.4125,3.9931,3.2444,3.9931]}]},{"text":"120.00","boundingBox":[5.4083,3.8264,5.8694,3.8264,5.8694,3.9931,5.4083,3.9931],"words":[{"text":"120.00","boundingBox":[5.4083,3.8264,5.8694,3.8264,5.8694,3.9931,5.4083,3.9931]}]},{"text":"E","boundingBox":[1.0806,4.0361,1.1611,4.0361,1.1611,4.2028,1.0806,4.2028],"words":[{"text":"E","boundingBox":[1.0806,4.0361,1.1611,4.0361,1.1611,4.2028,1.0806,4.2028]}]},{"text":"40","boundingBox":[3.2444,4.0361,3.4125,4.0361,3.4125,4.2028,3.2444,4.2028],"words":[{"text":"40","boundingBox":[3.2444,4.0361,3.4125,4.0361,3.4125,4.2028,3.2444,4.2028]}]},{"text":"100.00","boundingBox":[5.4083,4.0361,5.8708,4.0361,5.8708,4.2028,5.4083,4.2028],"words":[{"text":"100.00","boundingBox":[5.4083,4.0361,5.8708,4.0361,5.8708,4.2028,5.4083,4.2028]}]},{"text":"F","boundingBox":[1.0806,4.2458,1.1569,4.2458,1.1569,4.4125,1.0806,4.4125],"words":[{"text":"F","boundingBox":[1.0806,4.2458,1.1569,4.2458,1.1569,4.4125,1.0806,4.4125]}]},{"text":"60","boundingBox":[3.2444,4.2458,3.4125,4.2458,3.4125,4.4125,3.2444,4.4125],"words":[{"text":"60","boundingBox":[3.2444,4.2458,3.4125,4.2458,3.4125,4.4125,3.2444,4.4125]}]},{"text":"120.00","boundingBox":[5.4083,4.2458,5.8694,4.2458,5.8694,4.4125,5.4083,4.4125],"words":[{"text":"120.00","boundingBox":[5.4083,4.2458,5.8694,4.2458,5.8694,4.4125,5.4083,4.4125]}]},{"text":"G","boundingBox":[1.0806,4.4569,1.1861,4.4569,1.1861,4.6236,1.0806,4.6236],"words":[{"text":"G","boundingBox":[1.0806,4.4569,1.1861,4.4569,1.1861,4.6236,1.0806,4.6236]}]},{"text":"80","boundingBox":[3.2444,4.4569,3.4125,4.4569,3.4125,4.6236,3.2444,4.6236],"words":[{"text":"80","boundingBox":[3.2444,4.4569,3.4125,4.4569,3.4125,4.6236,3.2444,4.6236]}]},{"text":"220.00","boundingBox":[5.4083,4.4569,5.8708,4.4569,5.8708,4.6236,5.4083,4.6236],"words":[{"text":"220.00","boundingBox":[5.4083,4.4569,5.8708,4.4569,5.8708,4.6236,5.4083,4.6236]}]},{"text":"Subtotal:","boundingBox":[5.5028,4.8861,6.1347,4.8861,6.1347,5.0528,5.5028,5.0528],"words":[{"text":"Subtotal:","boundingBox":[5.5028,4.8861,6.1347,4.8861,6.1347,5.0528,5.5028,5.0528]}]},{"text":"3000.00","boundingBox":[6.1722,4.8861,6.7208,4.8861,6.7208,5.0528,6.1722,5.0528],"words":[{"text":"3000.00","boundingBox":[6.1722,4.8861,6.7208,4.8861,6.7208,5.0528,6.1722,5.0528]}]},{"text":"Tax:","boundingBox":[5.5028,5.1069,5.7917,5.1069,5.7917,5.2736,5.5028,5.2736],"words":[{"text":"Tax:","boundingBox":[5.5028,5.1069,5.7917,5.1069,5.7917,5.2736,5.5028,5.2736]}]},{"text":"300.00","boundingBox":[5.8292,5.1069,6.2931,5.1069,6.2931,5.2736,5.8292,5.2736],"words":[{"text":"300.00","boundingBox":[5.8292,5.1069,6.2931,5.1069,6.2931,5.2736,5.8292,5.2736]}]},{"text":"Tip:","boundingBox":[5.5028,5.3264,5.7611,5.3264,5.7611,5.4931,5.5028,5.4931],"words":[{"text":"Tip:","boundingBox":[5.5028,5.3264,5.7611,5.3264,5.7611,5.4931,5.5028,5.4931]}]},{"text":"1000.00","boundingBox":[5.7986,5.3264,6.3472,5.3264,6.3472,5.4931,5.7986,5.4931],"words":[{"text":"1000.00","boundingBox":[5.7986,5.3264,6.3472,5.3264,6.3472,5.4931,5.7986,5.4931]}]},{"text":"Total:","boundingBox":[5.5028,5.5472,5.9014,5.5472,5.9014,5.7139,5.5028,5.7139],"words":[{"text":"Total:","boundingBox":[5.5028,5.5472,5.9014,5.5472,5.9014,5.7139,5.5028,5.7139]}]},{"text":"4300.00","boundingBox":[5.9389,5.5472,6.4875,5.5472,6.4875,5.7139,5.9389,5.7139],"words":[{"text":"4300.00","boundingBox":[5.9389,5.5472,6.4875,5.5472,6.4875,5.7139,5.9389,5.7139]}]},{"text":"Signature:","boundingBox":[1.0,6.6431,1.7083,6.6431,1.7083,6.8097,1.0,6.8097],"words":[{"text":"Signature:","boundingBox":[1.0,6.6431,1.7083,6.6431,1.7083,6.8097,1.0,6.8097]}]},{"text":"____Frodo + Baggins__________","boundingBox":[1.7472,6.6431,3.8833,6.6431,3.8833,6.8097,1.7472,6.8097],"words":[{"text":"____Frodo","boundingBox":[1.7472,6.6431,2.4833,6.6431,2.4833,6.8097,1.7472,6.8097]},{"text":"Baggins__________","boundingBox":[2.5208,6.6431,3.8833,6.6431,3.8833,6.8097,2.5208,6.8097]}]}]}],"pageResults":[{"page":1,"keyValuePairs":[{"key":{"text":"Invoice + For:","boundingBox":[6.0028,1.0431,7.0528,1.0431,7.0528,1.2667,6.0028,1.2667],"elements":["#/readResults/0/lines/1/words/0","#/readResults/0/lines/1/words/1"]},"value":{"text":"Bilbo + Baggins 123 Hobbit Lane","boundingBox":[6.0028,1.4389,7.1083,1.4389,7.1083,1.8264,6.0028,1.8264],"elements":["#/readResults/0/lines/3/words/0","#/readResults/0/lines/3/words/1","#/readResults/0/lines/4/words/0","#/readResults/0/lines/4/words/1","#/readResults/0/lines/4/words/2"]},"confidence":1.0},{"key":{"text":"Address:","boundingBox":[0.8764,1.4681,1.5778,1.4681,1.5778,1.6625,0.8764,1.6625],"elements":["#/readResults/0/lines/2/words/0"]},"value":{"text":"567 + Main St.","boundingBox":[0.8764,1.8292,1.725,1.8292,1.725,1.9958,0.8764,1.9958],"elements":["#/readResults/0/lines/5/words/0","#/readResults/0/lines/5/words/1","#/readResults/0/lines/5/words/2"]},"confidence":1.0},{"key":{"text":"Redmond, + WA","boundingBox":[6.0028,1.8792,6.9819,1.8792,6.9819,2.0458,6.0028,2.0458],"elements":["#/readResults/0/lines/6/words/0","#/readResults/0/lines/6/words/1"]},"value":{"text":"555-555-5555","boundingBox":[6.0028,2.0986,6.9472,2.0986,6.9472,2.2653,6.0028,2.2653],"elements":["#/readResults/0/lines/8/words/0"]},"confidence":1.0},{"key":{"text":"Redmond, + WA","boundingBox":[0.8764,2.0486,1.8569,2.0486,1.8569,2.2153,0.8764,2.2153],"elements":["#/readResults/0/lines/7/words/0","#/readResults/0/lines/7/words/1"]},"value":{"text":"555-555-5555","boundingBox":[0.8764,2.2694,1.8222,2.2694,1.8222,2.4361,0.8764,2.4361],"elements":["#/readResults/0/lines/9/words/0"]},"confidence":0.29},{"key":{"text":"Subtotal:","boundingBox":[5.5028,4.8861,6.1347,4.8861,6.1347,5.0528,5.5028,5.0528],"elements":["#/readResults/0/lines/34/words/0"]},"value":{"text":"300.00","boundingBox":[6.1722,4.8861,6.6361,4.8861,6.6361,5.0528,6.1722,5.0528],"elements":["#/readResults/0/lines/35/words/0"]},"confidence":1.0},{"key":{"text":"Tax:","boundingBox":[5.5028,5.1069,5.7917,5.1069,5.7917,5.2736,5.5028,5.2736],"elements":["#/readResults/0/lines/36/words/0"]},"value":{"text":"30.00","boundingBox":[5.8292,5.1069,6.2069,5.1069,6.2069,5.2736,5.8292,5.2736],"elements":["#/readResults/0/lines/37/words/0"]},"confidence":1.0},{"key":{"text":"Tip:","boundingBox":[5.5028,5.3264,5.7611,5.3264,5.7611,5.4931,5.5028,5.4931],"elements":["#/readResults/0/lines/38/words/0"]},"value":{"text":"100.00","boundingBox":[5.7986,5.3264,6.2639,5.3264,6.2639,5.4931,5.7986,5.4931],"elements":["#/readResults/0/lines/39/words/0"]},"confidence":1.0},{"key":{"text":"Total:","boundingBox":[5.5028,5.5472,5.9014,5.5472,5.9014,5.7139,5.5028,5.7139],"elements":["#/readResults/0/lines/40/words/0"]},"value":{"text":"430.00","boundingBox":[5.9389,5.5472,6.4028,5.5472,6.4028,5.7139,5.9389,5.7139],"elements":["#/readResults/0/lines/41/words/0"]},"confidence":1.0},{"key":{"text":"Signature:","boundingBox":[1.0,6.6431,1.7083,6.6431,1.7083,6.8097,1.0,6.8097],"elements":["#/readResults/0/lines/42/words/0"]},"value":{"text":"____Bilbo + Baggins__________","boundingBox":[1.7472,6.6431,3.8333,6.6431,3.8333,6.8097,1.7472,6.8097],"elements":["#/readResults/0/lines/43/words/0","#/readResults/0/lines/43/words/1"]},"confidence":1.0},{"key":{"text":"__Tokens__1","boundingBox":null,"elements":null},"value":{"text":"Company + A Invoice","boundingBox":[0.8764,1.1014,2.3875,1.1014,2.3875,1.2958,0.8764,1.2958],"elements":["#/readResults/0/lines/0/words/0","#/readResults/0/lines/0/words/1","#/readResults/0/lines/0/words/2"]},"confidence":1.0}],"tables":[{"rows":8,"columns":3,"cells":[{"text":"Item","rowIndex":0,"columnIndex":0,"boundingBox":[1.0806,2.9833,1.3958,2.9833,1.3958,3.15,1.0806,3.15],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/0/lines/10/words/0"],"isHeader":true,"isFooter":false},{"text":"Quantity","rowIndex":0,"columnIndex":1,"boundingBox":[3.2444,2.9833,3.8389,2.9833,3.8389,3.15,3.2444,3.15],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/0/lines/11/words/0"],"isHeader":true,"isFooter":false},{"text":"Price","rowIndex":0,"columnIndex":2,"boundingBox":[5.4083,2.9833,5.7458,2.9833,5.7458,3.15,5.4083,3.15],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/0/lines/12/words/0"],"isHeader":true,"isFooter":false},{"text":"A","rowIndex":1,"columnIndex":0,"boundingBox":[1.0806,3.1931,1.1764,3.1931,1.1764,3.3597,1.0806,3.3597],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/0/lines/13/words/0"],"isHeader":false,"isFooter":false},{"text":"1","rowIndex":1,"columnIndex":1,"boundingBox":[3.2444,3.1931,3.3292,3.1931,3.3292,3.3597,3.2444,3.3597],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/0/lines/14/words/0"],"isHeader":false,"isFooter":false},{"text":"10.99","rowIndex":1,"columnIndex":2,"boundingBox":[5.4083,3.1931,5.7875,3.1931,5.7875,3.3597,5.4083,3.3597],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/0/lines/15/words/0"],"isHeader":false,"isFooter":false},{"text":"B","rowIndex":2,"columnIndex":0,"boundingBox":[1.0806,3.4056,1.1708,3.4056,1.1708,3.5722,1.0806,3.5722],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/0/lines/16/words/0"],"isHeader":false,"isFooter":false},{"text":"2","rowIndex":2,"columnIndex":1,"boundingBox":[3.2444,3.4056,3.3292,3.4056,3.3292,3.5722,3.2444,3.5722],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/0/lines/17/words/0"],"isHeader":false,"isFooter":false},{"text":"14.67","rowIndex":2,"columnIndex":2,"boundingBox":[5.4083,3.4056,5.7861,3.4056,5.7861,3.5722,5.4083,3.5722],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/0/lines/18/words/0"],"isHeader":false,"isFooter":false},{"text":"C","rowIndex":3,"columnIndex":0,"boundingBox":[1.0806,3.6167,1.1694,3.6167,1.1694,3.7833,1.0806,3.7833],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/0/lines/19/words/0"],"isHeader":false,"isFooter":false},{"text":"4","rowIndex":3,"columnIndex":1,"boundingBox":[3.2444,3.6167,3.3292,3.6167,3.3292,3.7833,3.2444,3.7833],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/0/lines/20/words/0"],"isHeader":false,"isFooter":false},{"text":"15.66","rowIndex":3,"columnIndex":2,"boundingBox":[5.4083,3.6167,5.7861,3.6167,5.7861,3.7833,5.4083,3.7833],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/0/lines/21/words/0"],"isHeader":false,"isFooter":false},{"text":"D","rowIndex":4,"columnIndex":0,"boundingBox":[1.0806,3.8264,1.1833,3.8264,1.1833,3.9931,1.0806,3.9931],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/0/lines/22/words/0"],"isHeader":false,"isFooter":false},{"text":"1","rowIndex":4,"columnIndex":1,"boundingBox":[3.2444,3.8264,3.3292,3.8264,3.3292,3.9931,3.2444,3.9931],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/0/lines/23/words/0"],"isHeader":false,"isFooter":false},{"text":"12.00","rowIndex":4,"columnIndex":2,"boundingBox":[5.4083,3.8264,5.7861,3.8264,5.7861,3.9931,5.4083,3.9931],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/0/lines/24/words/0"],"isHeader":false,"isFooter":false},{"text":"E","rowIndex":5,"columnIndex":0,"boundingBox":[1.0806,4.0361,1.1611,4.0361,1.1611,4.2028,1.0806,4.2028],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/0/lines/25/words/0"],"isHeader":false,"isFooter":false},{"text":"4","rowIndex":5,"columnIndex":1,"boundingBox":[3.2444,4.0361,3.3292,4.0361,3.3292,4.2028,3.2444,4.2028],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/0/lines/26/words/0"],"isHeader":false,"isFooter":false},{"text":"10.00","rowIndex":5,"columnIndex":2,"boundingBox":[5.4083,4.0361,5.7875,4.0361,5.7875,4.2028,5.4083,4.2028],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/0/lines/27/words/0"],"isHeader":false,"isFooter":false},{"text":"F","rowIndex":6,"columnIndex":0,"boundingBox":[1.0806,4.2458,1.1569,4.2458,1.1569,4.4125,1.0806,4.4125],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/0/lines/28/words/0"],"isHeader":false,"isFooter":false},{"text":"6","rowIndex":6,"columnIndex":1,"boundingBox":[3.2444,4.2458,3.3292,4.2458,3.3292,4.4125,3.2444,4.4125],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/0/lines/29/words/0"],"isHeader":false,"isFooter":false},{"text":"12.00","rowIndex":6,"columnIndex":2,"boundingBox":[5.4083,4.2458,5.7861,4.2458,5.7861,4.4125,5.4083,4.4125],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/0/lines/30/words/0"],"isHeader":false,"isFooter":false},{"text":"G","rowIndex":7,"columnIndex":0,"boundingBox":[1.0806,4.4569,1.1861,4.4569,1.1861,4.6236,1.0806,4.6236],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/0/lines/31/words/0"],"isHeader":false,"isFooter":false},{"text":"8","rowIndex":7,"columnIndex":1,"boundingBox":[3.2444,4.4569,3.3292,4.4569,3.3292,4.6236,3.2444,4.6236],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/0/lines/32/words/0"],"isHeader":false,"isFooter":false},{"text":"22.00","rowIndex":7,"columnIndex":2,"boundingBox":[5.4083,4.4569,5.7875,4.4569,5.7875,4.6236,5.4083,4.6236],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/0/lines/33/words/0"],"isHeader":false,"isFooter":false}]}],"clusterId":0},{"page":3,"keyValuePairs":[{"key":{"text":"Invoice + For:","boundingBox":[6.0028,1.0431,7.0528,1.0431,7.0528,1.2667,6.0028,1.2667],"elements":["#/readResults/2/lines/1/words/0","#/readResults/2/lines/1/words/1"]},"value":{"text":"Frodo + Baggins 123 Hobbit Lane","boundingBox":[6.0028,1.4389,7.1083,1.4389,7.1083,1.8264,6.0028,1.8264],"elements":["#/readResults/2/lines/3/words/0","#/readResults/2/lines/3/words/1","#/readResults/2/lines/4/words/0","#/readResults/2/lines/4/words/1","#/readResults/2/lines/4/words/2"]},"confidence":1.0},{"key":{"text":"Address:","boundingBox":[0.8764,1.4681,1.5778,1.4681,1.5778,1.6625,0.8764,1.6625],"elements":["#/readResults/2/lines/2/words/0"]},"value":{"text":"567 + Main St.","boundingBox":[0.8764,1.8292,1.725,1.8292,1.725,1.9958,0.8764,1.9958],"elements":["#/readResults/2/lines/5/words/0","#/readResults/2/lines/5/words/1","#/readResults/2/lines/5/words/2"]},"confidence":1.0},{"key":{"text":"Redmond, + WA","boundingBox":[6.0028,1.8792,6.9819,1.8792,6.9819,2.0458,6.0028,2.0458],"elements":["#/readResults/2/lines/6/words/0","#/readResults/2/lines/6/words/1"]},"value":{"text":"555-555-5555","boundingBox":[6.0028,2.0986,6.9472,2.0986,6.9472,2.2653,6.0028,2.2653],"elements":["#/readResults/2/lines/8/words/0"]},"confidence":1.0},{"key":{"text":"Redmond, + WA","boundingBox":[0.8764,2.0486,1.8569,2.0486,1.8569,2.2153,0.8764,2.2153],"elements":["#/readResults/2/lines/7/words/0","#/readResults/2/lines/7/words/1"]},"value":{"text":"555-555-5555","boundingBox":[0.8764,2.2694,1.8222,2.2694,1.8222,2.4361,0.8764,2.4361],"elements":["#/readResults/2/lines/9/words/0"]},"confidence":0.29},{"key":{"text":"Subtotal:","boundingBox":[5.5028,4.8861,6.1347,4.8861,6.1347,5.0528,5.5028,5.0528],"elements":["#/readResults/2/lines/34/words/0"]},"value":{"text":"3000.00","boundingBox":[6.1722,4.8861,6.7208,4.8861,6.7208,5.0528,6.1722,5.0528],"elements":["#/readResults/2/lines/35/words/0"]},"confidence":1.0},{"key":{"text":"Tax:","boundingBox":[5.5028,5.1069,5.7917,5.1069,5.7917,5.2736,5.5028,5.2736],"elements":["#/readResults/2/lines/36/words/0"]},"value":{"text":"300.00","boundingBox":[5.8292,5.1069,6.2931,5.1069,6.2931,5.2736,5.8292,5.2736],"elements":["#/readResults/2/lines/37/words/0"]},"confidence":1.0},{"key":{"text":"Tip:","boundingBox":[5.5028,5.3264,5.7611,5.3264,5.7611,5.4931,5.5028,5.4931],"elements":["#/readResults/2/lines/38/words/0"]},"value":{"text":"1000.00","boundingBox":[5.7986,5.3264,6.3472,5.3264,6.3472,5.4931,5.7986,5.4931],"elements":["#/readResults/2/lines/39/words/0"]},"confidence":1.0},{"key":{"text":"Total:","boundingBox":[5.5028,5.5472,5.9014,5.5472,5.9014,5.7139,5.5028,5.7139],"elements":["#/readResults/2/lines/40/words/0"]},"value":{"text":"4300.00","boundingBox":[5.9389,5.5472,6.4875,5.5472,6.4875,5.7139,5.9389,5.7139],"elements":["#/readResults/2/lines/41/words/0"]},"confidence":1.0},{"key":{"text":"Signature:","boundingBox":[1.0,6.6431,1.7083,6.6431,1.7083,6.8097,1.0,6.8097],"elements":["#/readResults/2/lines/42/words/0"]},"value":{"text":"____Frodo + Baggins__________","boundingBox":[1.7472,6.6431,3.8833,6.6431,3.8833,6.8097,1.7472,6.8097],"elements":["#/readResults/2/lines/43/words/0","#/readResults/2/lines/43/words/1"]},"confidence":1.0},{"key":{"text":"__Tokens__1","boundingBox":null,"elements":null},"value":{"text":"Company + B Invoice","boundingBox":[0.8764,1.1014,2.3833,1.1014,2.3833,1.2958,0.8764,1.2958],"elements":["#/readResults/2/lines/0/words/0","#/readResults/2/lines/0/words/1","#/readResults/2/lines/0/words/2"]},"confidence":1.0}],"tables":[{"rows":8,"columns":3,"cells":[{"text":"Item","rowIndex":0,"columnIndex":0,"boundingBox":[1.0806,2.9833,1.3958,2.9833,1.3958,3.15,1.0806,3.15],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/2/lines/10/words/0"],"isHeader":true,"isFooter":false},{"text":"Quantity","rowIndex":0,"columnIndex":1,"boundingBox":[3.2444,2.9833,3.8389,2.9833,3.8389,3.15,3.2444,3.15],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/2/lines/11/words/0"],"isHeader":true,"isFooter":false},{"text":"Price","rowIndex":0,"columnIndex":2,"boundingBox":[5.4083,2.9833,5.7458,2.9833,5.7458,3.15,5.4083,3.15],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/2/lines/12/words/0"],"isHeader":true,"isFooter":false},{"text":"A","rowIndex":1,"columnIndex":0,"boundingBox":[1.0806,3.1931,1.1764,3.1931,1.1764,3.3597,1.0806,3.3597],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/2/lines/13/words/0"],"isHeader":false,"isFooter":false},{"text":"10","rowIndex":1,"columnIndex":1,"boundingBox":[3.2444,3.1931,3.4125,3.1931,3.4125,3.3597,3.2444,3.3597],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/2/lines/14/words/0"],"isHeader":false,"isFooter":false},{"text":"100.99","rowIndex":1,"columnIndex":2,"boundingBox":[5.4083,3.1931,5.8708,3.1931,5.8708,3.3597,5.4083,3.3597],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/2/lines/15/words/0"],"isHeader":false,"isFooter":false},{"text":"B","rowIndex":2,"columnIndex":0,"boundingBox":[1.0806,3.4056,1.1708,3.4056,1.1708,3.5722,1.0806,3.5722],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/2/lines/16/words/0"],"isHeader":false,"isFooter":false},{"text":"20","rowIndex":2,"columnIndex":1,"boundingBox":[3.2444,3.4056,3.4125,3.4056,3.4125,3.5722,3.2444,3.5722],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/2/lines/17/words/0"],"isHeader":false,"isFooter":false},{"text":"140.67","rowIndex":2,"columnIndex":2,"boundingBox":[5.4083,3.4056,5.8694,3.4056,5.8694,3.5722,5.4083,3.5722],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/2/lines/18/words/0"],"isHeader":false,"isFooter":false},{"text":"C","rowIndex":3,"columnIndex":0,"boundingBox":[1.0806,3.6167,1.1694,3.6167,1.1694,3.7833,1.0806,3.7833],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/2/lines/19/words/0"],"isHeader":false,"isFooter":false},{"text":"40","rowIndex":3,"columnIndex":1,"boundingBox":[3.2444,3.6167,3.4125,3.6167,3.4125,3.7833,3.2444,3.7833],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/2/lines/20/words/0"],"isHeader":false,"isFooter":false},{"text":"150.66","rowIndex":3,"columnIndex":2,"boundingBox":[5.4083,3.6167,5.8694,3.6167,5.8694,3.7833,5.4083,3.7833],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/2/lines/21/words/0"],"isHeader":false,"isFooter":false},{"text":"D","rowIndex":4,"columnIndex":0,"boundingBox":[1.0806,3.8264,1.1833,3.8264,1.1833,3.9931,1.0806,3.9931],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/2/lines/22/words/0"],"isHeader":false,"isFooter":false},{"text":"10","rowIndex":4,"columnIndex":1,"boundingBox":[3.2444,3.8264,3.4125,3.8264,3.4125,3.9931,3.2444,3.9931],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/2/lines/23/words/0"],"isHeader":false,"isFooter":false},{"text":"120.00","rowIndex":4,"columnIndex":2,"boundingBox":[5.4083,3.8264,5.8694,3.8264,5.8694,3.9931,5.4083,3.9931],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/2/lines/24/words/0"],"isHeader":false,"isFooter":false},{"text":"E","rowIndex":5,"columnIndex":0,"boundingBox":[1.0806,4.0361,1.1611,4.0361,1.1611,4.2028,1.0806,4.2028],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/2/lines/25/words/0"],"isHeader":false,"isFooter":false},{"text":"40","rowIndex":5,"columnIndex":1,"boundingBox":[3.2444,4.0361,3.4125,4.0361,3.4125,4.2028,3.2444,4.2028],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/2/lines/26/words/0"],"isHeader":false,"isFooter":false},{"text":"100.00","rowIndex":5,"columnIndex":2,"boundingBox":[5.4083,4.0361,5.8708,4.0361,5.8708,4.2028,5.4083,4.2028],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/2/lines/27/words/0"],"isHeader":false,"isFooter":false},{"text":"F","rowIndex":6,"columnIndex":0,"boundingBox":[1.0806,4.2458,1.1569,4.2458,1.1569,4.4125,1.0806,4.4125],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/2/lines/28/words/0"],"isHeader":false,"isFooter":false},{"text":"60","rowIndex":6,"columnIndex":1,"boundingBox":[3.2444,4.2458,3.4125,4.2458,3.4125,4.4125,3.2444,4.4125],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/2/lines/29/words/0"],"isHeader":false,"isFooter":false},{"text":"120.00","rowIndex":6,"columnIndex":2,"boundingBox":[5.4083,4.2458,5.8694,4.2458,5.8694,4.4125,5.4083,4.4125],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/2/lines/30/words/0"],"isHeader":false,"isFooter":false},{"text":"G","rowIndex":7,"columnIndex":0,"boundingBox":[1.0806,4.4569,1.1861,4.4569,1.1861,4.6236,1.0806,4.6236],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/2/lines/31/words/0"],"isHeader":false,"isFooter":false},{"text":"80","rowIndex":7,"columnIndex":1,"boundingBox":[3.2444,4.4569,3.4125,4.4569,3.4125,4.6236,3.2444,4.6236],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/2/lines/32/words/0"],"isHeader":false,"isFooter":false},{"text":"220.00","rowIndex":7,"columnIndex":2,"boundingBox":[5.4083,4.4569,5.8708,4.4569,5.8708,4.6236,5.4083,4.6236],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/2/lines/33/words/0"],"isHeader":false,"isFooter":false}]}],"clusterId":0}],"documentResults":[],"errors":[]}}' + headers: + apim-request-id: 52d0c598-f04f-48a8-a55c-5f3721a42abe + content-type: application/json; charset=utf-8 + date: Thu, 30 Apr 2020 23:08:18 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + transfer-encoding: chunked + x-content-type-options: nosniff + x-envoy-upstream-service-time: '39' + status: + code: 200 + message: OK + url: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/3533d683-d679-4fb9-bf32-39f69b144588/analyzeresults/85e45621-9a76-40df-bb80-633b148b4335 +version: 1 diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_custom_forms_from_url.test_custom_form_bad_url.yaml b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_custom_forms_from_url.test_custom_form_bad_url.yaml new file mode 100644 index 000000000000..d0bc55559904 --- /dev/null +++ b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_custom_forms_from_url.test_custom_form_bad_url.yaml @@ -0,0 +1,188 @@ +interactions: +- request: + body: 'b''{"source": "containersasurl", "sourceFilter": {"prefix": "", "includeSubFolders": + false}, "useLabelFile": true}''' + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '316' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models + response: + body: + string: '' + headers: + apim-request-id: + - 42f191a6-873e-4b66-9399-c0a74071b89b + content-length: + - '0' + date: + - Tue, 28 Apr 2020 22:07:34 GMT + location: + - https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/2742dffa-c924-4bb3-b1b9-965551eb821b + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '249' + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/2742dffa-c924-4bb3-b1b9-965551eb821b?includeKeys=true + response: + body: + string: '{"modelInfo":{"modelId":"2742dffa-c924-4bb3-b1b9-965551eb821b","status":"creating","createdDateTime":"2020-04-28T22:07:34Z","lastUpdatedDateTime":"2020-04-28T22:07:34Z"}}' + headers: + apim-request-id: + - 1e88af82-92e2-4f06-8e22-4cf7568d6573 + content-type: + - application/json; charset=utf-8 + date: + - Tue, 28 Apr 2020 22:07:39 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + transfer-encoding: + - chunked + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '134' + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/2742dffa-c924-4bb3-b1b9-965551eb821b?includeKeys=true + response: + body: + string: '{"modelInfo":{"modelId":"2742dffa-c924-4bb3-b1b9-965551eb821b","status":"ready","createdDateTime":"2020-04-28T22:07:34Z","lastUpdatedDateTime":"2020-04-28T22:07:41Z"},"trainResult":{"averageModelAccuracy":0.973,"trainingDocuments":[{"documentName":"Form_1.jpg","pages":1,"status":"succeeded"},{"documentName":"Form_2.jpg","pages":1,"status":"succeeded"},{"documentName":"Form_3.jpg","pages":1,"status":"succeeded"},{"documentName":"Form_4.jpg","pages":1,"status":"succeeded"},{"documentName":"Form_5.jpg","pages":1,"status":"succeeded"}],"fields":[{"fieldName":"CompanyAddress","accuracy":0.8},{"fieldName":"CompanyName","accuracy":1.0},{"fieldName":"CompanyPhoneNumber","accuracy":1.0},{"fieldName":"DatedAs","accuracy":1.0},{"fieldName":"Email","accuracy":0.8},{"fieldName":"Merchant","accuracy":1.0},{"fieldName":"PhoneNumber","accuracy":1.0},{"fieldName":"PurchaseOrderNumber","accuracy":1.0},{"fieldName":"Quantity","accuracy":1.0},{"fieldName":"Signature","accuracy":1.0},{"fieldName":"Subtotal","accuracy":1.0},{"fieldName":"Tax","accuracy":1.0},{"fieldName":"Total","accuracy":1.0},{"fieldName":"VendorName","accuracy":1.0},{"fieldName":"Website","accuracy":1.0}],"errors":[]}}' + headers: + apim-request-id: + - adcdb5e7-9df6-4081-b5d1-69535590c509 + content-type: + - application/json; charset=utf-8 + date: + - Tue, 28 Apr 2020 22:07:44 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + transfer-encoding: + - chunked + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '44' + status: + code: 200 + message: OK +- request: + body: '{"source": "https://badurl.jpg"}' + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '32' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/2742dffa-c924-4bb3-b1b9-965551eb821b/analyze?includeTextDetails=false + response: + body: + string: '' + headers: + apim-request-id: + - af4311fd-3ef7-4b80-aa62-9f436256cca8 + content-length: + - '0' + date: + - Tue, 28 Apr 2020 22:07:45 GMT + operation-location: + - https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/2742dffa-c924-4bb3-b1b9-965551eb821b/analyzeresults/6b395c3f-dfad-4206-a51b-4f7386691292 + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '352' + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/2742dffa-c924-4bb3-b1b9-965551eb821b/analyzeresults/6b395c3f-dfad-4206-a51b-4f7386691292 + response: + body: + string: '{"status":"failed","createdDateTime":"2020-04-28T22:07:46Z","lastUpdatedDateTime":"2020-04-28T22:07:46Z","analyzeResult":{"version":"2.0.0","errors":[{"code":"3003","message":"OCR + extraction error: [Wrong response code: FailedToDownloadImage. Message: Failed + to download image from input URL..]"}]}}' + headers: + apim-request-id: + - f9f6a1af-7c65-4c66-9b94-cedb2eab2fef + content-type: + - application/json; charset=utf-8 + date: + - Tue, 28 Apr 2020 22:07:55 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + transfer-encoding: + - chunked + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '5174' + status: + code: 200 + message: OK +version: 1 diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_custom_forms_from_url.test_custom_form_multipage_labeled_transform.yaml b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_custom_forms_from_url.test_custom_form_multipage_labeled_transform.yaml new file mode 100644 index 000000000000..57e9baea25d8 --- /dev/null +++ b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_custom_forms_from_url.test_custom_form_multipage_labeled_transform.yaml @@ -0,0 +1,286 @@ +interactions: +- request: + body: 'b''{"source": "containersasurl", "sourceFilter": {"prefix": "", "includeSubFolders": + false}, "useLabelFile": true}''' + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '300' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models + response: + body: + string: '' + headers: + apim-request-id: + - cfc74783-ec5f-4838-8c32-7f9baca0bda7 + content-length: + - '0' + date: + - Thu, 30 Apr 2020 23:41:57 GMT + location: + - https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/d88dbc67-38b8-4d7a-893c-13a2193ade6f + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '204' + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/d88dbc67-38b8-4d7a-893c-13a2193ade6f?includeKeys=true + response: + body: + string: '{"modelInfo":{"modelId":"d88dbc67-38b8-4d7a-893c-13a2193ade6f","status":"ready","createdDateTime":"2020-04-30T23:41:58Z","lastUpdatedDateTime":"2020-04-30T23:41:59Z"},"trainResult":{"averageModelAccuracy":0.889,"trainingDocuments":[{"documentName":"multipage_invoice1.pdf","pages":3,"status":"succeeded"},{"documentName":"multipage_invoice2.pdf","pages":3,"status":"succeeded"},{"documentName":"multipage_invoice3.pdf","pages":3,"status":"succeeded"},{"documentName":"multipage_invoice4.pdf","pages":3,"status":"succeeded"},{"documentName":"multipage_invoice5.pdf","pages":3,"status":"succeeded"}],"fields":[{"fieldName":"Customer2","accuracy":1.0},{"fieldName":"CustomerAddress","accuracy":1.0},{"fieldName":"CustomerName","accuracy":1.0},{"fieldName":"CustomerPhoneNumber","accuracy":1.0},{"fieldName":"FirstItem","accuracy":1.0},{"fieldName":"FirstPrice","accuracy":1.0},{"fieldName":"FirstQuantity","accuracy":1.0},{"fieldName":"Merchant","accuracy":0.0},{"fieldName":"Merchant2","accuracy":0.0},{"fieldName":"MerchantAddress","accuracy":1.0},{"fieldName":"MerchantPhoneNumber","accuracy":1.0},{"fieldName":"Signature","accuracy":1.0},{"fieldName":"Signature2","accuracy":1.0},{"fieldName":"Subtotal","accuracy":1.0},{"fieldName":"Tax","accuracy":1.0},{"fieldName":"Tip","accuracy":1.0},{"fieldName":"Total","accuracy":1.0},{"fieldName":"Total2","accuracy":1.0}],"errors":[]}}' + headers: + apim-request-id: + - 27fda395-d15f-45b1-8c17-fa191b5477a4 + content-type: + - application/json; charset=utf-8 + date: + - Thu, 30 Apr 2020 23:42:02 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + transfer-encoding: + - chunked + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '141' + status: + code: 200 + message: OK +- request: + body: 'b''{"source": "blob_sas_url"}''' + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '241' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/d88dbc67-38b8-4d7a-893c-13a2193ade6f/analyze?includeTextDetails=true + response: + body: + string: '' + headers: + apim-request-id: + - 14307614-5937-4a3b-b635-0dee98b31115 + content-length: + - '0' + date: + - Thu, 30 Apr 2020 23:42:03 GMT + operation-location: + - https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/d88dbc67-38b8-4d7a-893c-13a2193ade6f/analyzeresults/db96dcf0-93d3-44eb-a1a8-fe8ee307cb05 + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '103' + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/d88dbc67-38b8-4d7a-893c-13a2193ade6f/analyzeresults/db96dcf0-93d3-44eb-a1a8-fe8ee307cb05 + response: + body: + string: '{"status":"notStarted","createdDateTime":"2020-04-30T23:42:03Z","lastUpdatedDateTime":"2020-04-30T23:42:03Z"}' + headers: + apim-request-id: + - d298f3eb-ae2c-4f88-98ff-b57cfc9a409c + content-type: + - application/json; charset=utf-8 + date: + - Thu, 30 Apr 2020 23:42:08 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + transfer-encoding: + - chunked + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '110' + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/d88dbc67-38b8-4d7a-893c-13a2193ade6f/analyzeresults/db96dcf0-93d3-44eb-a1a8-fe8ee307cb05 + response: + body: + string: '{"status":"notStarted","createdDateTime":"2020-04-30T23:42:03Z","lastUpdatedDateTime":"2020-04-30T23:42:03Z"}' + headers: + apim-request-id: + - 5eba0c73-2e89-46be-bc6e-f9cd8a7d1ec7 + content-type: + - application/json; charset=utf-8 + date: + - Thu, 30 Apr 2020 23:42:13 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + transfer-encoding: + - chunked + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '18' + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/d88dbc67-38b8-4d7a-893c-13a2193ade6f/analyzeresults/db96dcf0-93d3-44eb-a1a8-fe8ee307cb05 + response: + body: + string: '{"status":"notStarted","createdDateTime":"2020-04-30T23:42:03Z","lastUpdatedDateTime":"2020-04-30T23:42:03Z"}' + headers: + apim-request-id: + - 69fa6d0a-d369-414d-890c-c652c780dd23 + content-type: + - application/json; charset=utf-8 + date: + - Thu, 30 Apr 2020 23:42:18 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + transfer-encoding: + - chunked + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '131' + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/d88dbc67-38b8-4d7a-893c-13a2193ade6f/analyzeresults/db96dcf0-93d3-44eb-a1a8-fe8ee307cb05 + response: + body: + string: '{"status":"succeeded","createdDateTime":"2020-04-30T23:42:03Z","lastUpdatedDateTime":"2020-04-30T23:42:24Z","analyzeResult":{"version":"2.0.0","readResults":[{"page":1,"language":"en","angle":0,"width":8.5,"height":11,"unit":"inch","lines":[{"language":"en","boundingBox":[0.8861,1.1217,2.3783,1.1217,2.3783,1.2812,0.8861,1.2812],"text":"Company + A Invoice","words":[{"boundingBox":[0.8861,1.1232,1.6203,1.1232,1.6203,1.2812,0.8861,1.2812],"text":"Company","confidence":1},{"boundingBox":[1.6696,1.1242,1.7749,1.1242,1.7749,1.2473,1.6696,1.2473],"text":"A","confidence":1},{"boundingBox":[1.8389,1.1217,2.3783,1.1217,2.3783,1.2485,1.8389,1.2485],"text":"Invoice","confidence":1}]},{"language":"en","boundingBox":[6.0211,1.0656,7.0357,1.0656,7.0357,1.2121,6.0211,1.2121],"text":"Invoice + For:","words":[{"boundingBox":[6.0211,1.0656,6.6362,1.0656,6.6362,1.2121,6.0211,1.2121],"text":"Invoice","confidence":1},{"boundingBox":[6.7147,1.0691,7.0357,1.0691,7.0357,1.2121,6.7147,1.2121],"text":"For:","confidence":1}]},{"language":"en","boundingBox":[0.8791,1.4825,1.5657,1.4825,1.5657,1.6155,0.8791,1.6155],"text":"Address:","words":[{"boundingBox":[0.8791,1.4825,1.5657,1.4825,1.5657,1.6155,0.8791,1.6155],"text":"Address:","confidence":1}]},{"language":"en","boundingBox":[6.0164,1.4503,6.8967,1.4503,6.8967,1.5931,6.0164,1.5931],"text":"Bilbo + Baggins","words":[{"boundingBox":[6.0164,1.4503,6.3392,1.4503,6.3392,1.5649,6.0164,1.5649],"text":"Bilbo","confidence":1},{"boundingBox":[6.396,1.4556,6.8967,1.4556,6.8967,1.5931,6.396,1.5931],"text":"Baggins","confidence":1}]},{"language":"en","boundingBox":[6.0165,1.6707,7.1006,1.6707,7.1006,1.7854,6.0165,1.7854],"text":"123 + Hobbit Lane","words":[{"boundingBox":[6.0165,1.6772,6.2434,1.6772,6.2434,1.7854,6.0165,1.7854],"text":"123","confidence":1},{"boundingBox":[6.3033,1.6707,6.7463,1.6707,6.7463,1.7854,6.3033,1.7854],"text":"Hobbit","confidence":1},{"boundingBox":[6.803,1.6782,7.1006,1.6782,7.1006,1.7854,6.803,1.7854],"text":"Lane","confidence":1}]},{"language":"en","boundingBox":[0.8852,1.846,1.713,1.846,1.713,1.9554,0.8852,1.9554],"text":"567 + Main St.","words":[{"boundingBox":[0.8852,1.8472,1.1203,1.8472,1.1203,1.9554,0.8852,1.9554],"text":"567","confidence":1},{"boundingBox":[1.1777,1.846,1.5022,1.846,1.5022,1.9554,1.1777,1.9554],"text":"Main","confidence":1},{"boundingBox":[1.5558,1.8472,1.713,1.8472,1.713,1.9554,1.5558,1.9554],"text":"St.","confidence":1}]},{"language":"en","boundingBox":[6.0164,1.891,6.9793,1.891,6.9793,2.0275,6.0164,2.0275],"text":"Redmond, + WA","words":[{"boundingBox":[6.0164,1.891,6.6861,1.891,6.6861,2.0275,6.0164,2.0275],"text":"Redmond,","confidence":1},{"boundingBox":[6.7408,1.8982,6.9793,1.8982,6.9793,2.0044,6.7408,2.0044],"text":"WA","confidence":1}]},{"language":"en","boundingBox":[0.891,2.061,1.8537,2.061,1.8537,2.1975,0.891,2.1975],"text":"Redmond, + WA","words":[{"boundingBox":[0.891,2.061,1.5605,2.061,1.5605,2.1975,0.891,2.1975],"text":"Redmond,","confidence":1},{"boundingBox":[1.6152,2.0682,1.8537,2.0682,1.8537,2.1744,1.6152,2.1744],"text":"WA","confidence":1}]},{"language":"en","boundingBox":[6.0105,2.1187,6.9371,2.1187,6.9371,2.2254,6.0105,2.2254],"text":"555-555-5555","words":[{"boundingBox":[6.0105,2.1187,6.9371,2.1187,6.9371,2.2254,6.0105,2.2254],"text":"555-555-5555","confidence":1}]},{"language":"en","boundingBox":[0.8852,2.2887,1.8119,2.2887,1.8119,2.3954,0.8852,2.3954],"text":"555-555-5555","words":[{"boundingBox":[0.8852,2.2887,1.8119,2.2887,1.8119,2.3954,0.8852,2.3954],"text":"555-555-5555","confidence":1}]},{"language":"en","boundingBox":[1.0943,3.0018,1.3842,3.0018,1.3842,3.109,1.0943,3.109],"text":"Item","words":[{"boundingBox":[1.0943,3.0018,1.3842,3.0018,1.3842,3.109,1.0943,3.109],"text":"Item","confidence":1}]},{"language":"en","boundingBox":[3.2527,2.9996,3.8367,2.9996,3.8367,3.1371,3.2527,3.1371],"text":"Quantity","words":[{"boundingBox":[3.2527,2.9996,3.8367,2.9996,3.8367,3.1371,3.2527,3.1371],"text":"Quantity","confidence":1}]},{"language":"en","boundingBox":[5.423,2.9996,5.7372,2.9996,5.7372,3.109,5.423,3.109],"text":"Price","words":[{"boundingBox":[5.423,2.9996,5.7372,2.9996,5.7372,3.109,5.423,3.109],"text":"Price","confidence":1}]},{"language":"en","boundingBox":[1.0832,3.2118,1.174,3.2118,1.174,3.318,1.0832,3.318],"text":"A","words":[{"boundingBox":[1.0832,3.2118,1.174,3.2118,1.174,3.318,1.0832,3.318],"text":"A","confidence":1}]},{"language":"en","boundingBox":[3.2589,3.2116,3.3202,3.2116,3.3202,3.3176,3.2589,3.3176],"text":"1","words":[{"boundingBox":[3.2589,3.2116,3.3202,3.2116,3.3202,3.3176,3.2589,3.3176],"text":"1","confidence":1}]},{"language":"en","boundingBox":[5.4232,3.2108,5.7784,3.2108,5.7784,3.319,5.4232,3.319],"text":"10.99","words":[{"boundingBox":[5.4232,3.2108,5.7784,3.2108,5.7784,3.319,5.4232,3.319],"text":"10.99","confidence":1}]},{"language":"en","boundingBox":[1.0943,3.4256,1.1637,3.4256,1.1637,3.531,1.0943,3.531],"text":"B","words":[{"boundingBox":[1.0943,3.4256,1.1637,3.4256,1.1637,3.531,1.0943,3.531],"text":"B","confidence":1}]},{"language":"en","boundingBox":[3.2541,3.4241,3.3199,3.4241,3.3199,3.531,3.2541,3.531],"text":"2","words":[{"boundingBox":[3.2541,3.4241,3.3199,3.4241,3.3199,3.531,3.2541,3.531],"text":"2","confidence":1}]},{"language":"en","boundingBox":[5.4232,3.4241,5.7789,3.4241,5.7789,3.5323,5.4232,3.5323],"text":"14.67","words":[{"boundingBox":[5.4232,3.4241,5.7789,3.4241,5.7789,3.5323,5.4232,3.5323],"text":"14.67","confidence":1}]},{"language":"en","boundingBox":[1.0882,3.6343,1.1647,3.6343,1.1647,3.7421,1.0882,3.7421],"text":"C","words":[{"boundingBox":[1.0882,3.6343,1.1647,3.6343,1.1647,3.7421,1.0882,3.7421],"text":"C","confidence":1}]},{"language":"en","boundingBox":[3.2486,3.6351,3.3244,3.6351,3.3244,3.7413,3.2486,3.7413],"text":"4","words":[{"boundingBox":[3.2486,3.6351,3.3244,3.6351,3.3244,3.7413,3.2486,3.7413],"text":"4","confidence":1}]},{"language":"en","boundingBox":[5.4232,3.6341,5.78,3.6341,5.78,3.7423,5.4232,3.7423],"text":"15.66","words":[{"boundingBox":[5.4232,3.6341,5.78,3.6341,5.78,3.7423,5.4232,3.7423],"text":"15.66","confidence":1}]},{"language":"en","boundingBox":[1.0943,3.8456,1.1753,3.8456,1.1753,3.951,1.0943,3.951],"text":"D","words":[{"boundingBox":[1.0943,3.8456,1.1753,3.8456,1.1753,3.951,1.0943,3.951],"text":"D","confidence":1}]},{"language":"en","boundingBox":[3.2589,3.845,3.3202,3.845,3.3202,3.951,3.2589,3.951],"text":"1","words":[{"boundingBox":[3.2589,3.845,3.3202,3.845,3.3202,3.951,3.2589,3.951],"text":"1","confidence":1}]},{"language":"en","boundingBox":[5.4232,3.8441,5.7809,3.8441,5.7809,3.9523,5.4232,3.9523],"text":"12.00","words":[{"boundingBox":[5.4232,3.8441,5.7809,3.8441,5.7809,3.9523,5.4232,3.9523],"text":"12.00","confidence":1}]},{"language":"en","boundingBox":[1.0943,4.0561,1.153,4.0561,1.153,4.1614,1.0943,4.1614],"text":"E","words":[{"boundingBox":[1.0943,4.0561,1.153,4.0561,1.153,4.1614,1.0943,4.1614],"text":"E","confidence":1}]},{"language":"en","boundingBox":[3.2486,4.0556,3.3244,4.0556,3.3244,4.1617,3.2486,4.1617],"text":"4","words":[{"boundingBox":[3.2486,4.0556,3.3244,4.0556,3.3244,4.1617,3.2486,4.1617],"text":"4","confidence":1}]},{"language":"en","boundingBox":[5.4232,4.0546,5.781,4.0546,5.781,4.1627,5.4232,4.1627],"text":"10.00","words":[{"boundingBox":[5.4232,4.0546,5.781,4.0546,5.781,4.1627,5.4232,4.1627],"text":"10.00","confidence":1}]},{"language":"en","boundingBox":[1.0943,4.2661,1.1497,4.2661,1.1497,4.3717,1.0943,4.3717],"text":"F","words":[{"boundingBox":[1.0943,4.2661,1.1497,4.2661,1.1497,4.3717,1.0943,4.3717],"text":"F","confidence":1}]},{"language":"en","boundingBox":[3.2534,4.2646,3.3226,4.2646,3.3226,4.3727,3.2534,4.3727],"text":"6","words":[{"boundingBox":[3.2534,4.2646,3.3226,4.2646,3.3226,4.3727,3.2534,4.3727],"text":"6","confidence":1}]},{"language":"en","boundingBox":[5.4232,4.2646,5.7809,4.2646,5.7809,4.3727,5.4232,4.3727],"text":"12.00","words":[{"boundingBox":[5.4232,4.2646,5.7809,4.2646,5.7809,4.3727,5.4232,4.3727],"text":"12.00","confidence":1}]},{"language":"en","boundingBox":[1.0877,4.4746,1.1735,4.4746,1.1735,4.5827,1.0877,4.5827],"text":"G","words":[{"boundingBox":[1.0877,4.4746,1.1735,4.4746,1.1735,4.5827,1.0877,4.5827],"text":"G","confidence":1}]},{"language":"en","boundingBox":[3.2514,4.4746,3.3224,4.4746,3.3224,4.5827,3.2514,4.5827],"text":"8","words":[{"boundingBox":[3.2514,4.4746,3.3224,4.4746,3.3224,4.5827,3.2514,4.5827],"text":"8","confidence":1}]},{"language":"en","boundingBox":[5.4184,4.4746,5.781,4.4746,5.781,4.5827,5.4184,4.5827],"text":"22.00","words":[{"boundingBox":[5.4184,4.4746,5.781,4.4746,5.781,4.5827,5.4184,4.5827],"text":"22.00","confidence":1}]},{"language":"en","boundingBox":[5.5075,4.8981,6.632,4.8981,6.632,5.0131,5.5075,5.0131],"text":"Subtotal: + 300.00","words":[{"boundingBox":[5.5075,4.8981,6.1249,4.8981,6.1249,5.0131,5.5075,5.0131],"text":"Subtotal:","confidence":1},{"boundingBox":[6.1794,4.9042,6.632,4.9042,6.632,5.0131,6.1794,5.0131],"text":"300.00","confidence":1}]},{"language":"en","boundingBox":[5.5034,5.1245,6.2022,5.1245,6.2022,5.2333,5.5034,5.2333],"text":"Tax: + 30.00","words":[{"boundingBox":[5.5034,5.1263,5.7812,5.1263,5.7812,5.2333,5.5034,5.2333],"text":"Tax:","confidence":1},{"boundingBox":[5.836,5.1245,6.2022,5.1245,6.2022,5.2333,5.836,5.2333],"text":"30.00","confidence":1}]},{"language":"en","boundingBox":[5.5034,5.3412,6.2587,5.3412,6.2587,5.481,5.5034,5.481],"text":"Tip: + 100.00","words":[{"boundingBox":[5.5034,5.3412,5.7515,5.3412,5.7515,5.481,5.5034,5.481],"text":"Tip:","confidence":1},{"boundingBox":[5.811,5.3445,6.2587,5.3445,6.2587,5.4533,5.811,5.4533],"text":"100.00","confidence":1}]},{"language":"en","boundingBox":[5.5034,5.5583,6.3987,5.5583,6.3987,5.6733,5.5034,5.6733],"text":"Total: + 430.00","words":[{"boundingBox":[5.5034,5.5583,5.8915,5.5583,5.8915,5.6733,5.5034,5.6733],"text":"Total:","confidence":1},{"boundingBox":[5.942,5.5645,6.3987,5.5645,6.3987,5.6733,5.942,5.6733],"text":"430.00","confidence":1}]},{"language":"en","boundingBox":[1.0055,6.6553,3.8342,6.6553,3.8342,6.7981,1.0055,6.7981],"text":"Signature: + ____ Bilbo Baggins__________","words":[{"boundingBox":[1.0055,6.6581,1.6987,6.6581,1.6987,6.7981,1.0055,6.7981],"text":"Signature:","confidence":1},{"boundingBox":[1.747,6.7829,2.0809,6.7829,2.0809,6.7981,1.747,6.7981],"text":"____","confidence":1},{"boundingBox":[2.0925,6.6553,2.4278,6.6553,2.4278,6.7703,2.0925,6.7703],"text":"Bilbo","confidence":1},{"boundingBox":[2.4823,6.6581,3.8342,6.6581,3.8342,6.7981,2.4823,6.7981],"text":"Baggins__________","confidence":1}]}]},{"page":2,"language":"en","angle":0,"width":8.4967,"height":10.9967,"unit":"inch","lines":[]},{"page":3,"language":"en","angle":0,"width":8.5,"height":11,"unit":"inch","lines":[{"language":"en","boundingBox":[0.8861,1.1217,2.3734,1.1217,2.3734,1.2812,0.8861,1.2812],"text":"Company + B Invoice","words":[{"boundingBox":[0.8861,1.1232,1.6203,1.1232,1.6203,1.2812,0.8861,1.2812],"text":"Company","confidence":1},{"boundingBox":[1.6836,1.1248,1.764,1.1248,1.764,1.2469,1.6836,1.2469],"text":"B","confidence":1},{"boundingBox":[1.8336,1.1217,2.3734,1.1217,2.3734,1.2485,1.8336,1.2485],"text":"Invoice","confidence":1}]},{"language":"en","boundingBox":[6.0211,1.0656,7.0357,1.0656,7.0357,1.2121,6.0211,1.2121],"text":"Invoice + For:","words":[{"boundingBox":[6.0211,1.0656,6.6362,1.0656,6.6362,1.2121,6.0211,1.2121],"text":"Invoice","confidence":1},{"boundingBox":[6.7147,1.0691,7.0357,1.0691,7.0357,1.2121,6.7147,1.2121],"text":"For:","confidence":1}]},{"language":"en","boundingBox":[0.8791,1.4825,1.5657,1.4825,1.5657,1.6155,0.8791,1.6155],"text":"Address:","words":[{"boundingBox":[0.8791,1.4825,1.5657,1.4825,1.5657,1.6155,0.8791,1.6155],"text":"Address:","confidence":1}]},{"language":"en","boundingBox":[6.0164,1.4506,6.9506,1.4506,6.9506,1.5931,6.0164,1.5931],"text":"Frodo + Baggins","words":[{"boundingBox":[6.0164,1.4506,6.3895,1.4506,6.3895,1.5649,6.0164,1.5649],"text":"Frodo","confidence":1},{"boundingBox":[6.45,1.4556,6.9506,1.4556,6.9506,1.5931,6.45,1.5931],"text":"Baggins","confidence":1}]},{"language":"en","boundingBox":[6.0165,1.6707,7.1006,1.6707,7.1006,1.7854,6.0165,1.7854],"text":"123 + Hobbit Lane","words":[{"boundingBox":[6.0165,1.6772,6.2434,1.6772,6.2434,1.7854,6.0165,1.7854],"text":"123","confidence":1},{"boundingBox":[6.3033,1.6707,6.7463,1.6707,6.7463,1.7854,6.3033,1.7854],"text":"Hobbit","confidence":1},{"boundingBox":[6.803,1.6782,7.1006,1.6782,7.1006,1.7854,6.803,1.7854],"text":"Lane","confidence":1}]},{"language":"en","boundingBox":[0.8852,1.846,1.713,1.846,1.713,1.9554,0.8852,1.9554],"text":"567 + Main St.","words":[{"boundingBox":[0.8852,1.8472,1.1203,1.8472,1.1203,1.9554,0.8852,1.9554],"text":"567","confidence":1},{"boundingBox":[1.1777,1.846,1.5022,1.846,1.5022,1.9554,1.1777,1.9554],"text":"Main","confidence":1},{"boundingBox":[1.5558,1.8472,1.713,1.8472,1.713,1.9554,1.5558,1.9554],"text":"St.","confidence":1}]},{"language":"en","boundingBox":[6.0164,1.891,6.9793,1.891,6.9793,2.0275,6.0164,2.0275],"text":"Redmond, + WA","words":[{"boundingBox":[6.0164,1.891,6.6861,1.891,6.6861,2.0275,6.0164,2.0275],"text":"Redmond,","confidence":1},{"boundingBox":[6.7408,1.8982,6.9793,1.8982,6.9793,2.0044,6.7408,2.0044],"text":"WA","confidence":1}]},{"language":"en","boundingBox":[0.891,2.061,1.8537,2.061,1.8537,2.1975,0.891,2.1975],"text":"Redmond, + WA","words":[{"boundingBox":[0.891,2.061,1.5605,2.061,1.5605,2.1975,0.891,2.1975],"text":"Redmond,","confidence":1},{"boundingBox":[1.6152,2.0682,1.8537,2.0682,1.8537,2.1744,1.6152,2.1744],"text":"WA","confidence":1}]},{"language":"en","boundingBox":[6.0105,2.1187,6.9371,2.1187,6.9371,2.2254,6.0105,2.2254],"text":"555-555-5555","words":[{"boundingBox":[6.0105,2.1187,6.9371,2.1187,6.9371,2.2254,6.0105,2.2254],"text":"555-555-5555","confidence":1}]},{"language":"en","boundingBox":[0.8852,2.2887,1.8119,2.2887,1.8119,2.3954,0.8852,2.3954],"text":"555-555-5555","words":[{"boundingBox":[0.8852,2.2887,1.8119,2.2887,1.8119,2.3954,0.8852,2.3954],"text":"555-555-5555","confidence":1}]},{"language":"en","boundingBox":[1.0943,3.0018,1.3842,3.0018,1.3842,3.109,1.0943,3.109],"text":"Item","words":[{"boundingBox":[1.0943,3.0018,1.3842,3.0018,1.3842,3.109,1.0943,3.109],"text":"Item","confidence":1}]},{"language":"en","boundingBox":[3.2527,2.9996,3.8367,2.9996,3.8367,3.1371,3.2527,3.1371],"text":"Quantity","words":[{"boundingBox":[3.2527,2.9996,3.8367,2.9996,3.8367,3.1371,3.2527,3.1371],"text":"Quantity","confidence":1}]},{"language":"en","boundingBox":[5.423,2.9996,5.7372,2.9996,5.7372,3.109,5.423,3.109],"text":"Price","words":[{"boundingBox":[5.423,2.9996,5.7372,2.9996,5.7372,3.109,5.423,3.109],"text":"Price","confidence":1}]},{"language":"en","boundingBox":[1.0832,3.2118,1.174,3.2118,1.174,3.318,1.0832,3.318],"text":"A","words":[{"boundingBox":[1.0832,3.2118,1.174,3.2118,1.174,3.318,1.0832,3.318],"text":"A","confidence":1}]},{"language":"en","boundingBox":[3.2589,3.2108,3.4067,3.2108,3.4067,3.319,3.2589,3.319],"text":"10","words":[{"boundingBox":[3.2589,3.2108,3.4067,3.2108,3.4067,3.319,3.2589,3.319],"text":"10","confidence":1}]},{"language":"en","boundingBox":[5.4232,3.2108,5.8617,3.2108,5.8617,3.319,5.4232,3.319],"text":"100.99","words":[{"boundingBox":[5.4232,3.2108,5.8617,3.2108,5.8617,3.319,5.4232,3.319],"text":"100.99","confidence":1}]},{"language":"en","boundingBox":[1.0943,3.4256,1.1637,3.4256,1.1637,3.531,1.0943,3.531],"text":"B","words":[{"boundingBox":[1.0943,3.4256,1.1637,3.4256,1.1637,3.531,1.0943,3.531],"text":"B","confidence":1}]},{"language":"en","boundingBox":[3.2541,3.4241,3.4067,3.4241,3.4067,3.5323,3.2541,3.5323],"text":"20","words":[{"boundingBox":[3.2541,3.4241,3.4067,3.4241,3.4067,3.5323,3.2541,3.5323],"text":"20","confidence":1}]},{"language":"en","boundingBox":[5.4232,3.4241,5.8622,3.4241,5.8622,3.5323,5.4232,3.5323],"text":"140.67","words":[{"boundingBox":[5.4232,3.4241,5.8622,3.4241,5.8622,3.5323,5.4232,3.5323],"text":"140.67","confidence":1}]},{"language":"en","boundingBox":[1.0882,3.6343,1.1647,3.6343,1.1647,3.7421,1.0882,3.7421],"text":"C","words":[{"boundingBox":[1.0882,3.6343,1.1647,3.6343,1.1647,3.7421,1.0882,3.7421],"text":"C","confidence":1}]},{"language":"en","boundingBox":[3.2486,3.6341,3.4067,3.6341,3.4067,3.7423,3.2486,3.7423],"text":"40","words":[{"boundingBox":[3.2486,3.6341,3.4067,3.6341,3.4067,3.7423,3.2486,3.7423],"text":"40","confidence":1}]},{"language":"en","boundingBox":[5.4232,3.6341,5.8634,3.6341,5.8634,3.7423,5.4232,3.7423],"text":"150.66","words":[{"boundingBox":[5.4232,3.6341,5.8634,3.6341,5.8634,3.7423,5.4232,3.7423],"text":"150.66","confidence":1}]},{"language":"en","boundingBox":[1.0943,3.8456,1.1753,3.8456,1.1753,3.951,1.0943,3.951],"text":"D","words":[{"boundingBox":[1.0943,3.8456,1.1753,3.8456,1.1753,3.951,1.0943,3.951],"text":"D","confidence":1}]},{"language":"en","boundingBox":[3.2589,3.8441,3.4067,3.8441,3.4067,3.9523,3.2589,3.9523],"text":"10","words":[{"boundingBox":[3.2589,3.8441,3.4067,3.8441,3.4067,3.9523,3.2589,3.9523],"text":"10","confidence":1}]},{"language":"en","boundingBox":[5.4232,3.8441,5.8642,3.8441,5.8642,3.9523,5.4232,3.9523],"text":"120.00","words":[{"boundingBox":[5.4232,3.8441,5.8642,3.8441,5.8642,3.9523,5.4232,3.9523],"text":"120.00","confidence":1}]},{"language":"en","boundingBox":[1.0943,4.0561,1.153,4.0561,1.153,4.1614,1.0943,4.1614],"text":"E","words":[{"boundingBox":[1.0943,4.0561,1.153,4.0561,1.153,4.1614,1.0943,4.1614],"text":"E","confidence":1}]},{"language":"en","boundingBox":[3.2486,4.0546,3.4067,4.0546,3.4067,4.1627,3.2486,4.1627],"text":"40","words":[{"boundingBox":[3.2486,4.0546,3.4067,4.0546,3.4067,4.1627,3.2486,4.1627],"text":"40","confidence":1}]},{"language":"en","boundingBox":[5.4232,4.0546,5.8644,4.0546,5.8644,4.1627,5.4232,4.1627],"text":"100.00","words":[{"boundingBox":[5.4232,4.0546,5.8644,4.0546,5.8644,4.1627,5.4232,4.1627],"text":"100.00","confidence":1}]},{"language":"en","boundingBox":[1.0943,4.2661,1.1497,4.2661,1.1497,4.3717,1.0943,4.3717],"text":"F","words":[{"boundingBox":[1.0943,4.2661,1.1497,4.2661,1.1497,4.3717,1.0943,4.3717],"text":"F","confidence":1}]},{"language":"en","boundingBox":[3.2534,4.2646,3.4067,4.2646,3.4067,4.3727,3.2534,4.3727],"text":"60","words":[{"boundingBox":[3.2534,4.2646,3.4067,4.2646,3.4067,4.3727,3.2534,4.3727],"text":"60","confidence":1}]},{"language":"en","boundingBox":[5.4232,4.2646,5.8642,4.2646,5.8642,4.3727,5.4232,4.3727],"text":"120.00","words":[{"boundingBox":[5.4232,4.2646,5.8642,4.2646,5.8642,4.3727,5.4232,4.3727],"text":"120.00","confidence":1}]},{"language":"en","boundingBox":[1.0877,4.4746,1.1735,4.4746,1.1735,4.5827,1.0877,4.5827],"text":"G","words":[{"boundingBox":[1.0877,4.4746,1.1735,4.4746,1.1735,4.5827,1.0877,4.5827],"text":"G","confidence":1}]},{"language":"en","boundingBox":[3.2514,4.4746,3.4067,4.4746,3.4067,4.5827,3.2514,4.5827],"text":"80","words":[{"boundingBox":[3.2514,4.4746,3.4067,4.4746,3.4067,4.5827,3.2514,4.5827],"text":"80","confidence":1}]},{"language":"en","boundingBox":[5.4184,4.4746,5.8644,4.4746,5.8644,4.5827,5.4184,4.5827],"text":"220.00","words":[{"boundingBox":[5.4184,4.4746,5.8644,4.4746,5.8644,4.5827,5.4184,4.5827],"text":"220.00","confidence":1}]},{"language":"en","boundingBox":[5.5075,4.8981,6.7158,4.8981,6.7158,5.0131,5.5075,5.0131],"text":"Subtotal: + 3000.00","words":[{"boundingBox":[5.5075,4.8981,6.1249,4.8981,6.1249,5.0131,5.5075,5.0131],"text":"Subtotal:","confidence":1},{"boundingBox":[6.1794,4.9042,6.7158,4.9042,6.7158,5.0131,6.1794,5.0131],"text":"3000.00","confidence":1}]},{"language":"en","boundingBox":[5.5034,5.1245,6.2887,5.1245,6.2887,5.2333,5.5034,5.2333],"text":"Tax: + 300.00","words":[{"boundingBox":[5.5034,5.1263,5.7812,5.1263,5.7812,5.2333,5.5034,5.2333],"text":"Tax:","confidence":1},{"boundingBox":[5.836,5.1245,6.2887,5.1245,6.2887,5.2333,5.836,5.2333],"text":"300.00","confidence":1}]},{"language":"en","boundingBox":[5.5034,5.3412,6.3422,5.3412,6.3422,5.481,5.5034,5.481],"text":"Tip: + 1000.00","words":[{"boundingBox":[5.5034,5.3412,5.7515,5.3412,5.7515,5.481,5.5034,5.481],"text":"Tip:","confidence":1},{"boundingBox":[5.811,5.3445,6.3422,5.3445,6.3422,5.4533,5.811,5.4533],"text":"1000.00","confidence":1}]},{"language":"en","boundingBox":[5.5034,5.5583,6.4825,5.5583,6.4825,5.6733,5.5034,5.6733],"text":"Total: + 4300.00","words":[{"boundingBox":[5.5034,5.5583,5.8915,5.5583,5.8915,5.6733,5.5034,5.6733],"text":"Total:","confidence":1},{"boundingBox":[5.942,5.5645,6.4825,5.5645,6.4825,5.6733,5.942,5.6733],"text":"4300.00","confidence":1}]},{"language":"en","boundingBox":[1.0055,6.6556,3.8842,6.6556,3.8842,6.7981,1.0055,6.7981],"text":"Signature: + ____ Frodo Baggins__________","words":[{"boundingBox":[1.0055,6.6581,1.6987,6.6581,1.6987,6.7981,1.0055,6.7981],"text":"Signature:","confidence":1},{"boundingBox":[1.747,6.7829,2.0809,6.7829,2.0809,6.7981,1.747,6.7981],"text":"____","confidence":1},{"boundingBox":[2.0925,6.6556,2.4778,6.6556,2.4778,6.7703,2.0925,6.7703],"text":"Frodo","confidence":1},{"boundingBox":[2.5325,6.6581,3.8842,6.6581,3.8842,6.7981,2.5325,6.7981],"text":"Baggins__________","confidence":1}]}]}],"pageResults":[{"page":1,"tables":[{"rows":8,"columns":3,"cells":[{"rowIndex":0,"columnIndex":0,"text":"Item","boundingBox":[1.0037,2.9443,3.1681,2.9443,3.1681,3.1543,1.0037,3.1543],"elements":["#/readResults/0/lines/10/words/0"]},{"rowIndex":0,"columnIndex":1,"text":"Quantity","boundingBox":[3.1681,2.9443,5.3353,2.9443,5.3353,3.1543,3.1681,3.1543],"elements":["#/readResults/0/lines/11/words/0"]},{"rowIndex":0,"columnIndex":2,"text":"Price","boundingBox":[5.3353,2.9443,7.4997,2.9443,7.4997,3.1543,5.3353,3.1543],"elements":["#/readResults/0/lines/12/words/0"]},{"rowIndex":1,"columnIndex":0,"text":"A","boundingBox":[1.0037,3.1543,3.1681,3.1543,3.1681,3.3643,1.0037,3.3643],"elements":["#/readResults/0/lines/13/words/0"]},{"rowIndex":1,"columnIndex":1,"text":"1","boundingBox":[3.1681,3.1543,5.3353,3.1543,5.3353,3.3643,3.1681,3.3643],"elements":["#/readResults/0/lines/14/words/0"]},{"rowIndex":1,"columnIndex":2,"text":"10.99","boundingBox":[5.3353,3.1543,7.4997,3.1543,7.4997,3.3643,5.3353,3.3643],"elements":["#/readResults/0/lines/15/words/0"]},{"rowIndex":2,"columnIndex":0,"text":"B","boundingBox":[1.0037,3.3643,3.1681,3.3643,3.1681,3.5776,1.0037,3.5776],"elements":["#/readResults/0/lines/16/words/0"]},{"rowIndex":2,"columnIndex":1,"text":"2","boundingBox":[3.1681,3.3643,5.3353,3.3643,5.3353,3.5776,3.1681,3.5776],"elements":["#/readResults/0/lines/17/words/0"]},{"rowIndex":2,"columnIndex":2,"text":"14.67","boundingBox":[5.3353,3.3643,7.4997,3.3643,7.4997,3.5776,5.3353,3.5776],"elements":["#/readResults/0/lines/18/words/0"]},{"rowIndex":3,"columnIndex":0,"text":"C","boundingBox":[1.0037,3.5776,3.1681,3.5776,3.1681,3.7876,1.0037,3.7876],"elements":["#/readResults/0/lines/19/words/0"]},{"rowIndex":3,"columnIndex":1,"text":"4","boundingBox":[3.1681,3.5776,5.3353,3.5776,5.3353,3.7876,3.1681,3.7876],"elements":["#/readResults/0/lines/20/words/0"]},{"rowIndex":3,"columnIndex":2,"text":"15.66","boundingBox":[5.3353,3.5776,7.4997,3.5776,7.4997,3.7876,5.3353,3.7876],"elements":["#/readResults/0/lines/21/words/0"]},{"rowIndex":4,"columnIndex":0,"text":"D","boundingBox":[1.0037,3.7876,3.1681,3.7876,3.1681,3.9976,1.0037,3.9976],"elements":["#/readResults/0/lines/22/words/0"]},{"rowIndex":4,"columnIndex":1,"text":"1","boundingBox":[3.1681,3.7876,5.3353,3.7876,5.3353,3.9976,3.1681,3.9976],"elements":["#/readResults/0/lines/23/words/0"]},{"rowIndex":4,"columnIndex":2,"text":"12.00","boundingBox":[5.3353,3.7876,7.4997,3.7876,7.4997,3.9976,5.3353,3.9976],"elements":["#/readResults/0/lines/24/words/0"]},{"rowIndex":5,"columnIndex":0,"text":"E","boundingBox":[1.0037,3.9976,3.1681,3.9976,3.1681,4.2081,1.0037,4.2081],"elements":["#/readResults/0/lines/25/words/0"]},{"rowIndex":5,"columnIndex":1,"text":"4","boundingBox":[3.1681,3.9976,5.3353,3.9976,5.3353,4.2081,3.1681,4.2081],"elements":["#/readResults/0/lines/26/words/0"]},{"rowIndex":5,"columnIndex":2,"text":"10.00","boundingBox":[5.3353,3.9976,7.4997,3.9976,7.4997,4.2081,5.3353,4.2081],"elements":["#/readResults/0/lines/27/words/0"]},{"rowIndex":6,"columnIndex":0,"text":"F","boundingBox":[1.0037,4.2081,3.1681,4.2081,3.1681,4.4181,1.0037,4.4181],"elements":["#/readResults/0/lines/28/words/0"]},{"rowIndex":6,"columnIndex":1,"text":"6","boundingBox":[3.1681,4.2081,5.3353,4.2081,5.3353,4.4181,3.1681,4.4181],"elements":["#/readResults/0/lines/29/words/0"]},{"rowIndex":6,"columnIndex":2,"text":"12.00","boundingBox":[5.3353,4.2081,7.4997,4.2081,7.4997,4.4181,5.3353,4.4181],"elements":["#/readResults/0/lines/30/words/0"]},{"rowIndex":7,"columnIndex":0,"text":"G","boundingBox":[1.0037,4.4181,3.1681,4.4181,3.1681,4.6281,1.0037,4.6281],"elements":["#/readResults/0/lines/31/words/0"]},{"rowIndex":7,"columnIndex":1,"text":"8","boundingBox":[3.1681,4.4181,5.3353,4.4181,5.3353,4.6281,3.1681,4.6281],"elements":["#/readResults/0/lines/32/words/0"]},{"rowIndex":7,"columnIndex":2,"text":"22.00","boundingBox":[5.3353,4.4181,7.4997,4.4181,7.4997,4.6281,5.3353,4.6281],"elements":["#/readResults/0/lines/33/words/0"]}]}]},{"page":2,"tables":[]},{"page":3,"tables":[{"rows":8,"columns":3,"cells":[{"rowIndex":0,"columnIndex":0,"text":"Item","boundingBox":[1.0037,2.9443,3.1681,2.9443,3.1681,3.1543,1.0037,3.1543],"elements":["#/readResults/2/lines/10/words/0"]},{"rowIndex":0,"columnIndex":1,"text":"Quantity","boundingBox":[3.1681,2.9443,5.3353,2.9443,5.3353,3.1543,3.1681,3.1543],"elements":["#/readResults/2/lines/11/words/0"]},{"rowIndex":0,"columnIndex":2,"text":"Price","boundingBox":[5.3353,2.9443,7.4997,2.9443,7.4997,3.1543,5.3353,3.1543],"elements":["#/readResults/2/lines/12/words/0"]},{"rowIndex":1,"columnIndex":0,"text":"A","boundingBox":[1.0037,3.1543,3.1681,3.1543,3.1681,3.3643,1.0037,3.3643],"elements":["#/readResults/2/lines/13/words/0"]},{"rowIndex":1,"columnIndex":1,"text":"10","boundingBox":[3.1681,3.1543,5.3353,3.1543,5.3353,3.3643,3.1681,3.3643],"elements":["#/readResults/2/lines/14/words/0"]},{"rowIndex":1,"columnIndex":2,"text":"100.99","boundingBox":[5.3353,3.1543,7.4997,3.1543,7.4997,3.3643,5.3353,3.3643],"elements":["#/readResults/2/lines/15/words/0"]},{"rowIndex":2,"columnIndex":0,"text":"B","boundingBox":[1.0037,3.3643,3.1681,3.3643,3.1681,3.5776,1.0037,3.5776],"elements":["#/readResults/2/lines/16/words/0"]},{"rowIndex":2,"columnIndex":1,"text":"20","boundingBox":[3.1681,3.3643,5.3353,3.3643,5.3353,3.5776,3.1681,3.5776],"elements":["#/readResults/2/lines/17/words/0"]},{"rowIndex":2,"columnIndex":2,"text":"140.67","boundingBox":[5.3353,3.3643,7.4997,3.3643,7.4997,3.5776,5.3353,3.5776],"elements":["#/readResults/2/lines/18/words/0"]},{"rowIndex":3,"columnIndex":0,"text":"C","boundingBox":[1.0037,3.5776,3.1681,3.5776,3.1681,3.7876,1.0037,3.7876],"elements":["#/readResults/2/lines/19/words/0"]},{"rowIndex":3,"columnIndex":1,"text":"40","boundingBox":[3.1681,3.5776,5.3353,3.5776,5.3353,3.7876,3.1681,3.7876],"elements":["#/readResults/2/lines/20/words/0"]},{"rowIndex":3,"columnIndex":2,"text":"150.66","boundingBox":[5.3353,3.5776,7.4997,3.5776,7.4997,3.7876,5.3353,3.7876],"elements":["#/readResults/2/lines/21/words/0"]},{"rowIndex":4,"columnIndex":0,"text":"D","boundingBox":[1.0037,3.7876,3.1681,3.7876,3.1681,3.9976,1.0037,3.9976],"elements":["#/readResults/2/lines/22/words/0"]},{"rowIndex":4,"columnIndex":1,"text":"10","boundingBox":[3.1681,3.7876,5.3353,3.7876,5.3353,3.9976,3.1681,3.9976],"elements":["#/readResults/2/lines/23/words/0"]},{"rowIndex":4,"columnIndex":2,"text":"120.00","boundingBox":[5.3353,3.7876,7.4997,3.7876,7.4997,3.9976,5.3353,3.9976],"elements":["#/readResults/2/lines/24/words/0"]},{"rowIndex":5,"columnIndex":0,"text":"E","boundingBox":[1.0037,3.9976,3.1681,3.9976,3.1681,4.2081,1.0037,4.2081],"elements":["#/readResults/2/lines/25/words/0"]},{"rowIndex":5,"columnIndex":1,"text":"40","boundingBox":[3.1681,3.9976,5.3353,3.9976,5.3353,4.2081,3.1681,4.2081],"elements":["#/readResults/2/lines/26/words/0"]},{"rowIndex":5,"columnIndex":2,"text":"100.00","boundingBox":[5.3353,3.9976,7.4997,3.9976,7.4997,4.2081,5.3353,4.2081],"elements":["#/readResults/2/lines/27/words/0"]},{"rowIndex":6,"columnIndex":0,"text":"F","boundingBox":[1.0037,4.2081,3.1681,4.2081,3.1681,4.4181,1.0037,4.4181],"elements":["#/readResults/2/lines/28/words/0"]},{"rowIndex":6,"columnIndex":1,"text":"60","boundingBox":[3.1681,4.2081,5.3353,4.2081,5.3353,4.4181,3.1681,4.4181],"elements":["#/readResults/2/lines/29/words/0"]},{"rowIndex":6,"columnIndex":2,"text":"120.00","boundingBox":[5.3353,4.2081,7.4997,4.2081,7.4997,4.4181,5.3353,4.4181],"elements":["#/readResults/2/lines/30/words/0"]},{"rowIndex":7,"columnIndex":0,"text":"G","boundingBox":[1.0037,4.4181,3.1681,4.4181,3.1681,4.6281,1.0037,4.6281],"elements":["#/readResults/2/lines/31/words/0"]},{"rowIndex":7,"columnIndex":1,"text":"80","boundingBox":[3.1681,4.4181,5.3353,4.4181,5.3353,4.6281,3.1681,4.6281],"elements":["#/readResults/2/lines/32/words/0"]},{"rowIndex":7,"columnIndex":2,"text":"220.00","boundingBox":[5.3353,4.4181,7.4997,4.4181,7.4997,4.6281,5.3353,4.6281],"elements":["#/readResults/2/lines/33/words/0"]}]}]}],"documentResults":[{"docType":"custom:form","pageRange":[1,3],"fields":{"Signature2":{"type":"string","valueString":"Frodo + Baggins","text":"Frodo Baggins","page":3,"boundingBox":[2.09,6.655,3.09,6.655,3.09,6.8,2.09,6.8],"confidence":1.0,"elements":["#/analyzeResult/readResults/2/lines/38/words/2","#/analyzeResult/readResults/2/lines/38/words/3"]},"Tip":{"type":"string","valueString":"100.00","text":"100.00","page":1,"boundingBox":[5.8100000000000005,5.345,6.26,5.345,6.26,5.455,5.8100000000000005,5.455],"confidence":1.0,"elements":["#/analyzeResult/readResults/0/lines/36/words/1"]},"Subtotal":{"type":"string","valueString":"300.00","text":"300.00","page":1,"boundingBox":[6.18,4.905,6.63,4.905,6.63,5.015,6.18,5.015],"confidence":1.0,"elements":["#/analyzeResult/readResults/0/lines/34/words/1"]},"Total2":{"type":"string","valueString":"4300.00","text":"4300.00","page":3,"boundingBox":[5.94,5.565,6.48,5.565,6.48,5.675,5.94,5.675],"confidence":1.0,"elements":["#/analyzeResult/readResults/2/lines/37/words/1"]},"Tax":{"type":"string","valueString":"30.00","text":"30.00","page":1,"boundingBox":[5.835,5.125,6.2,5.125,6.2,5.235,5.835,5.235],"confidence":1.0,"elements":["#/analyzeResult/readResults/0/lines/35/words/1"]},"Customer2":{"type":"string","valueString":"Frodo + Baggins","text":"Frodo Baggins","page":3,"boundingBox":[6.0150000000000006,1.45,6.95,1.45,6.95,1.595,6.0150000000000006,1.595],"confidence":1.0,"elements":["#/analyzeResult/readResults/2/lines/3/words/0","#/analyzeResult/readResults/2/lines/3/words/1"]},"MerchantPhoneNumber":{"type":"string","valueString":"555-555-5555","text":"555-555-5555","page":1,"boundingBox":[0.885,2.29,1.81,2.29,1.81,2.395,0.885,2.395],"confidence":1.0,"elements":["#/analyzeResult/readResults/0/lines/9/words/0"]},"Merchant2":{"type":"string","valueString":"Company","text":"Company","page":1,"boundingBox":[0.885,1.125,1.62,1.125,1.62,1.28,0.885,1.28],"confidence":1.0,"elements":["#/analyzeResult/readResults/0/lines/0/words/0"]},"Total":{"type":"string","valueString":"430.00","text":"430.00","page":1,"boundingBox":[5.94,5.565,6.4,5.565,6.4,5.675,5.94,5.675],"confidence":1.0,"elements":["#/analyzeResult/readResults/0/lines/37/words/1"]},"FirstQuantity":{"type":"string","valueString":"1","text":"1","page":1,"boundingBox":[3.2600000000000002,3.21,3.3200000000000003,3.21,3.3200000000000003,3.3200000000000003,3.2600000000000002,3.3200000000000003],"confidence":1.0,"elements":["#/analyzeResult/readResults/0/lines/14/words/0"]},"Merchant":{"type":"string","valueString":"A","text":"A","page":1,"boundingBox":[1.67,1.125,1.7750000000000001,1.125,1.7750000000000001,1.245,1.67,1.245],"confidence":1.0,"elements":["#/analyzeResult/readResults/0/lines/0/words/1"]},"FirstItem":{"type":"string","valueString":"A","text":"A","page":1,"boundingBox":[1.085,3.21,1.175,3.21,1.175,3.3200000000000003,1.085,3.3200000000000003],"confidence":1.0,"elements":["#/analyzeResult/readResults/0/lines/13/words/0"]},"Signature":{"type":"string","valueString":"Bilbo + Baggins","text":"Bilbo Baggins","page":1,"boundingBox":[2.09,6.655,3.04,6.655,3.04,6.8,2.09,6.8],"confidence":1.0,"elements":["#/analyzeResult/readResults/0/lines/38/words/2","#/analyzeResult/readResults/0/lines/38/words/3"]},"CustomerName":{"type":"string","valueString":"Bilbo + Baggins","text":"Bilbo Baggins","page":1,"boundingBox":[6.0150000000000006,1.45,6.8950000000000005,1.45,6.8950000000000005,1.595,6.0150000000000006,1.595],"confidence":1.0,"elements":["#/analyzeResult/readResults/0/lines/3/words/0","#/analyzeResult/readResults/0/lines/3/words/1"]},"FirstPrice":{"type":"string","valueString":"10.99","text":"10.99","page":1,"boundingBox":[5.425,3.21,5.78,3.21,5.78,3.3200000000000003,5.425,3.3200000000000003],"confidence":1.0,"elements":["#/analyzeResult/readResults/0/lines/15/words/0"]},"CustomerPhoneNumber":{"type":"string","valueString":"555-555-5555","text":"555-555-5555","page":1,"boundingBox":[6.01,2.12,6.9350000000000005,2.12,6.9350000000000005,2.225,6.01,2.225],"confidence":1.0,"elements":["#/analyzeResult/readResults/0/lines/8/words/0"]},"CustomerAddress":{"type":"string","valueString":"123 + Hobbit Lane Redmond, WA","text":"123 Hobbit Lane Redmond, WA","page":1,"boundingBox":[6.0150000000000006,1.67,7.1000000000000005,1.67,7.1000000000000005,2.0300000000000002,6.0150000000000006,2.0300000000000002],"confidence":1.0,"elements":["#/analyzeResult/readResults/0/lines/4/words/0","#/analyzeResult/readResults/0/lines/4/words/1","#/analyzeResult/readResults/0/lines/4/words/2","#/analyzeResult/readResults/0/lines/6/words/0","#/analyzeResult/readResults/0/lines/6/words/1"]},"MerchantAddress":{"type":"string","valueString":"567 + Main St. Redmond, WA","text":"567 Main St. Redmond, WA","page":1,"boundingBox":[0.885,1.845,1.855,1.845,1.855,2.2,0.885,2.2],"confidence":1.0,"elements":["#/analyzeResult/readResults/0/lines/5/words/0","#/analyzeResult/readResults/0/lines/5/words/1","#/analyzeResult/readResults/0/lines/5/words/2","#/analyzeResult/readResults/0/lines/7/words/0","#/analyzeResult/readResults/0/lines/7/words/1"]}}}],"errors":[]}}' + headers: + apim-request-id: + - fa2928ee-c362-4139-a078-1f9a4842cce5 + content-type: + - application/json; charset=utf-8 + date: + - Thu, 30 Apr 2020 23:42:24 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + transfer-encoding: + - chunked + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '303' + status: + code: 200 + message: OK +version: 1 diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_custom_forms_from_url.test_custom_form_multipage_unlabeled_transform.yaml b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_custom_forms_from_url.test_custom_form_multipage_unlabeled_transform.yaml new file mode 100644 index 000000000000..e8d95f375a94 --- /dev/null +++ b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_custom_forms_from_url.test_custom_form_multipage_unlabeled_transform.yaml @@ -0,0 +1,252 @@ +interactions: +- request: + body: 'b''{"source": "containersasurl", "sourceFilter": {"prefix": "", "includeSubFolders": + false}, "useLabelFile": false}''' + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '301' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models + response: + body: + string: '' + headers: + apim-request-id: + - cba911af-5089-49f1-9ed7-c4e7f7b857a6 + content-length: + - '0' + date: + - Thu, 30 Apr 2020 23:41:07 GMT + location: + - https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/4f5645e0-9247-4ae6-9b9f-52f34a706a22 + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '251' + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/4f5645e0-9247-4ae6-9b9f-52f34a706a22?includeKeys=true + response: + body: + string: '{"modelInfo":{"modelId":"4f5645e0-9247-4ae6-9b9f-52f34a706a22","status":"creating","createdDateTime":"2020-04-30T23:41:08Z","lastUpdatedDateTime":"2020-04-30T23:41:08Z"}}' + headers: + apim-request-id: + - 47a55f1b-5cb0-4102-b2ec-6564d05b41bb + content-type: + - application/json; charset=utf-8 + date: + - Thu, 30 Apr 2020 23:41:12 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + transfer-encoding: + - chunked + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '117' + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/4f5645e0-9247-4ae6-9b9f-52f34a706a22?includeKeys=true + response: + body: + string: '{"modelInfo":{"modelId":"4f5645e0-9247-4ae6-9b9f-52f34a706a22","status":"creating","createdDateTime":"2020-04-30T23:41:08Z","lastUpdatedDateTime":"2020-04-30T23:41:08Z"}}' + headers: + apim-request-id: + - 1dce3a1e-12bc-4752-a7c1-aaac35c1dd74 + content-type: + - application/json; charset=utf-8 + date: + - Thu, 30 Apr 2020 23:41:17 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + transfer-encoding: + - chunked + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '151' + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/4f5645e0-9247-4ae6-9b9f-52f34a706a22?includeKeys=true + response: + body: + string: '{"modelInfo":{"modelId":"4f5645e0-9247-4ae6-9b9f-52f34a706a22","status":"ready","createdDateTime":"2020-04-30T23:41:08Z","lastUpdatedDateTime":"2020-04-30T23:41:19Z"},"keys":{"clusters":{"0":["Address:","Invoice + For:","Redmond, WA","Signature:","Subtotal:","Tax:","Tip:","Total:"]}},"trainResult":{"trainingDocuments":[{"documentName":"multipage_invoice1.pdf","pages":3,"errors":[],"status":"succeeded"},{"documentName":"multipage_invoice2.pdf","pages":3,"errors":[],"status":"succeeded"},{"documentName":"multipage_invoice3.pdf","pages":3,"errors":[],"status":"succeeded"},{"documentName":"multipage_invoice4.pdf","pages":3,"errors":[],"status":"succeeded"},{"documentName":"multipage_invoice5.pdf","pages":3,"errors":[],"status":"succeeded"}],"errors":[]}}' + headers: + apim-request-id: + - d7c0cc31-1f4f-4b50-840f-4dc3d0ff4403 + content-type: + - application/json; charset=utf-8 + date: + - Thu, 30 Apr 2020 23:41:22 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + transfer-encoding: + - chunked + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '113' + status: + code: 200 + message: OK +- request: + body: 'b''{"source": "blob_sas_url"}''' + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '241' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/4f5645e0-9247-4ae6-9b9f-52f34a706a22/analyze?includeTextDetails=true + response: + body: + string: '' + headers: + apim-request-id: + - d3c46268-80b2-4eb7-adc8-4de89d3681c2 + content-length: + - '0' + date: + - Thu, 30 Apr 2020 23:41:26 GMT + operation-location: + - https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/4f5645e0-9247-4ae6-9b9f-52f34a706a22/analyzeresults/58927fed-6241-4ac2-8b2d-1669460d26e8 + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '129' + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/4f5645e0-9247-4ae6-9b9f-52f34a706a22/analyzeresults/58927fed-6241-4ac2-8b2d-1669460d26e8 + response: + body: + string: '{"status":"succeeded","createdDateTime":"2020-04-30T23:41:27Z","lastUpdatedDateTime":"2020-04-30T23:41:31Z","analyzeResult":{"version":"2.0.0","readResults":[{"page":1,"angle":0,"width":8.5,"height":11.0,"unit":"inch","lines":[{"text":"Company + A Invoice","boundingBox":[0.8764,1.1014,2.3875,1.1014,2.3875,1.2958,0.8764,1.2958],"words":[{"text":"Company","boundingBox":[0.8764,1.1014,1.6236,1.1014,1.6236,1.2958,0.8764,1.2958]},{"text":"A","boundingBox":[1.6667,1.1014,1.7778,1.1014,1.7778,1.2958,1.6667,1.2958]},{"text":"Invoice","boundingBox":[1.8222,1.1014,2.3875,1.1014,2.3875,1.2958,1.8222,1.2958]}]},{"text":"Invoice + For:","boundingBox":[6.0028,1.0431,7.0528,1.0431,7.0528,1.2667,6.0028,1.2667],"words":[{"text":"Invoice","boundingBox":[6.0028,1.0431,6.6472,1.0431,6.6472,1.2667,6.0028,1.2667]},{"text":"For:","boundingBox":[6.6958,1.0431,7.0528,1.0431,7.0528,1.2667,6.6958,1.2667]}]},{"text":"Address:","boundingBox":[0.8764,1.4681,1.5778,1.4681,1.5778,1.6625,0.8764,1.6625],"words":[{"text":"Address:","boundingBox":[0.8764,1.4681,1.5778,1.4681,1.5778,1.6625,0.8764,1.6625]}]},{"text":"Bilbo + Baggins","boundingBox":[6.0028,1.4389,6.9028,1.4389,6.9028,1.6056,6.0028,1.6056],"words":[{"text":"Bilbo","boundingBox":[6.0028,1.4389,6.3472,1.4389,6.3472,1.6056,6.0028,1.6056]},{"text":"Baggins","boundingBox":[6.3819,1.4389,6.9028,1.4389,6.9028,1.6056,6.3819,1.6056]}]},{"text":"123 + Hobbit Lane","boundingBox":[6.0028,1.6597,7.1083,1.6597,7.1083,1.8264,6.0028,1.8264],"words":[{"text":"123","boundingBox":[6.0028,1.6597,6.2542,1.6597,6.2542,1.8264,6.0028,1.8264]},{"text":"Hobbit","boundingBox":[6.2889,1.6597,6.7514,1.6597,6.7514,1.8264,6.2889,1.8264]},{"text":"Lane","boundingBox":[6.7889,1.6597,7.1083,1.6597,7.1083,1.8264,6.7889,1.8264]}]},{"text":"567 + Main St.","boundingBox":[0.8764,1.8292,1.725,1.8292,1.725,1.9958,0.8764,1.9958],"words":[{"text":"567","boundingBox":[0.8764,1.8292,1.1278,1.8292,1.1278,1.9958,0.8764,1.9958]},{"text":"Main","boundingBox":[1.1639,1.8292,1.5139,1.8292,1.5139,1.9958,1.1639,1.9958]},{"text":"St.","boundingBox":[1.55,1.8292,1.725,1.8292,1.725,1.9958,1.55,1.9958]}]},{"text":"Redmond, + WA","boundingBox":[6.0028,1.8792,6.9819,1.8792,6.9819,2.0458,6.0028,2.0458],"words":[{"text":"Redmond,","boundingBox":[6.0028,1.8792,6.6972,1.8792,6.6972,2.0458,6.0028,2.0458]},{"text":"WA","boundingBox":[6.7361,1.8792,6.9819,1.8792,6.9819,2.0458,6.7361,2.0458]}]},{"text":"Redmond, + WA","boundingBox":[0.8764,2.0486,1.8569,2.0486,1.8569,2.2153,0.8764,2.2153],"words":[{"text":"Redmond,","boundingBox":[0.8764,2.0486,1.5722,2.0486,1.5722,2.2153,0.8764,2.2153]},{"text":"WA","boundingBox":[1.6097,2.0486,1.8569,2.0486,1.8569,2.2153,1.6097,2.2153]}]},{"text":"555-555-5555","boundingBox":[6.0028,2.0986,6.9472,2.0986,6.9472,2.2653,6.0028,2.2653],"words":[{"text":"555-555-5555","boundingBox":[6.0028,2.0986,6.9472,2.0986,6.9472,2.2653,6.0028,2.2653]}]},{"text":"555-555-5555","boundingBox":[0.8764,2.2694,1.8222,2.2694,1.8222,2.4361,0.8764,2.4361],"words":[{"text":"555-555-5555","boundingBox":[0.8764,2.2694,1.8222,2.2694,1.8222,2.4361,0.8764,2.4361]}]},{"text":"Item","boundingBox":[1.0806,2.9833,1.3958,2.9833,1.3958,3.15,1.0806,3.15],"words":[{"text":"Item","boundingBox":[1.0806,2.9833,1.3958,2.9833,1.3958,3.15,1.0806,3.15]}]},{"text":"Quantity","boundingBox":[3.2444,2.9833,3.8389,2.9833,3.8389,3.15,3.2444,3.15],"words":[{"text":"Quantity","boundingBox":[3.2444,2.9833,3.8389,2.9833,3.8389,3.15,3.2444,3.15]}]},{"text":"Price","boundingBox":[5.4083,2.9833,5.7458,2.9833,5.7458,3.15,5.4083,3.15],"words":[{"text":"Price","boundingBox":[5.4083,2.9833,5.7458,2.9833,5.7458,3.15,5.4083,3.15]}]},{"text":"A","boundingBox":[1.0806,3.1931,1.1764,3.1931,1.1764,3.3597,1.0806,3.3597],"words":[{"text":"A","boundingBox":[1.0806,3.1931,1.1764,3.1931,1.1764,3.3597,1.0806,3.3597]}]},{"text":"1","boundingBox":[3.2444,3.1931,3.3292,3.1931,3.3292,3.3597,3.2444,3.3597],"words":[{"text":"1","boundingBox":[3.2444,3.1931,3.3292,3.1931,3.3292,3.3597,3.2444,3.3597]}]},{"text":"10.99","boundingBox":[5.4083,3.1931,5.7875,3.1931,5.7875,3.3597,5.4083,3.3597],"words":[{"text":"10.99","boundingBox":[5.4083,3.1931,5.7875,3.1931,5.7875,3.3597,5.4083,3.3597]}]},{"text":"B","boundingBox":[1.0806,3.4056,1.1708,3.4056,1.1708,3.5722,1.0806,3.5722],"words":[{"text":"B","boundingBox":[1.0806,3.4056,1.1708,3.4056,1.1708,3.5722,1.0806,3.5722]}]},{"text":"2","boundingBox":[3.2444,3.4056,3.3292,3.4056,3.3292,3.5722,3.2444,3.5722],"words":[{"text":"2","boundingBox":[3.2444,3.4056,3.3292,3.4056,3.3292,3.5722,3.2444,3.5722]}]},{"text":"14.67","boundingBox":[5.4083,3.4056,5.7861,3.4056,5.7861,3.5722,5.4083,3.5722],"words":[{"text":"14.67","boundingBox":[5.4083,3.4056,5.7861,3.4056,5.7861,3.5722,5.4083,3.5722]}]},{"text":"C","boundingBox":[1.0806,3.6167,1.1694,3.6167,1.1694,3.7833,1.0806,3.7833],"words":[{"text":"C","boundingBox":[1.0806,3.6167,1.1694,3.6167,1.1694,3.7833,1.0806,3.7833]}]},{"text":"4","boundingBox":[3.2444,3.6167,3.3292,3.6167,3.3292,3.7833,3.2444,3.7833],"words":[{"text":"4","boundingBox":[3.2444,3.6167,3.3292,3.6167,3.3292,3.7833,3.2444,3.7833]}]},{"text":"15.66","boundingBox":[5.4083,3.6167,5.7861,3.6167,5.7861,3.7833,5.4083,3.7833],"words":[{"text":"15.66","boundingBox":[5.4083,3.6167,5.7861,3.6167,5.7861,3.7833,5.4083,3.7833]}]},{"text":"D","boundingBox":[1.0806,3.8264,1.1833,3.8264,1.1833,3.9931,1.0806,3.9931],"words":[{"text":"D","boundingBox":[1.0806,3.8264,1.1833,3.8264,1.1833,3.9931,1.0806,3.9931]}]},{"text":"1","boundingBox":[3.2444,3.8264,3.3292,3.8264,3.3292,3.9931,3.2444,3.9931],"words":[{"text":"1","boundingBox":[3.2444,3.8264,3.3292,3.8264,3.3292,3.9931,3.2444,3.9931]}]},{"text":"12.00","boundingBox":[5.4083,3.8264,5.7861,3.8264,5.7861,3.9931,5.4083,3.9931],"words":[{"text":"12.00","boundingBox":[5.4083,3.8264,5.7861,3.8264,5.7861,3.9931,5.4083,3.9931]}]},{"text":"E","boundingBox":[1.0806,4.0361,1.1611,4.0361,1.1611,4.2028,1.0806,4.2028],"words":[{"text":"E","boundingBox":[1.0806,4.0361,1.1611,4.0361,1.1611,4.2028,1.0806,4.2028]}]},{"text":"4","boundingBox":[3.2444,4.0361,3.3292,4.0361,3.3292,4.2028,3.2444,4.2028],"words":[{"text":"4","boundingBox":[3.2444,4.0361,3.3292,4.0361,3.3292,4.2028,3.2444,4.2028]}]},{"text":"10.00","boundingBox":[5.4083,4.0361,5.7875,4.0361,5.7875,4.2028,5.4083,4.2028],"words":[{"text":"10.00","boundingBox":[5.4083,4.0361,5.7875,4.0361,5.7875,4.2028,5.4083,4.2028]}]},{"text":"F","boundingBox":[1.0806,4.2458,1.1569,4.2458,1.1569,4.4125,1.0806,4.4125],"words":[{"text":"F","boundingBox":[1.0806,4.2458,1.1569,4.2458,1.1569,4.4125,1.0806,4.4125]}]},{"text":"6","boundingBox":[3.2444,4.2458,3.3292,4.2458,3.3292,4.4125,3.2444,4.4125],"words":[{"text":"6","boundingBox":[3.2444,4.2458,3.3292,4.2458,3.3292,4.4125,3.2444,4.4125]}]},{"text":"12.00","boundingBox":[5.4083,4.2458,5.7861,4.2458,5.7861,4.4125,5.4083,4.4125],"words":[{"text":"12.00","boundingBox":[5.4083,4.2458,5.7861,4.2458,5.7861,4.4125,5.4083,4.4125]}]},{"text":"G","boundingBox":[1.0806,4.4569,1.1861,4.4569,1.1861,4.6236,1.0806,4.6236],"words":[{"text":"G","boundingBox":[1.0806,4.4569,1.1861,4.4569,1.1861,4.6236,1.0806,4.6236]}]},{"text":"8","boundingBox":[3.2444,4.4569,3.3292,4.4569,3.3292,4.6236,3.2444,4.6236],"words":[{"text":"8","boundingBox":[3.2444,4.4569,3.3292,4.4569,3.3292,4.6236,3.2444,4.6236]}]},{"text":"22.00","boundingBox":[5.4083,4.4569,5.7875,4.4569,5.7875,4.6236,5.4083,4.6236],"words":[{"text":"22.00","boundingBox":[5.4083,4.4569,5.7875,4.4569,5.7875,4.6236,5.4083,4.6236]}]},{"text":"Subtotal:","boundingBox":[5.5028,4.8861,6.1347,4.8861,6.1347,5.0528,5.5028,5.0528],"words":[{"text":"Subtotal:","boundingBox":[5.5028,4.8861,6.1347,4.8861,6.1347,5.0528,5.5028,5.0528]}]},{"text":"300.00","boundingBox":[6.1722,4.8861,6.6361,4.8861,6.6361,5.0528,6.1722,5.0528],"words":[{"text":"300.00","boundingBox":[6.1722,4.8861,6.6361,4.8861,6.6361,5.0528,6.1722,5.0528]}]},{"text":"Tax:","boundingBox":[5.5028,5.1069,5.7917,5.1069,5.7917,5.2736,5.5028,5.2736],"words":[{"text":"Tax:","boundingBox":[5.5028,5.1069,5.7917,5.1069,5.7917,5.2736,5.5028,5.2736]}]},{"text":"30.00","boundingBox":[5.8292,5.1069,6.2069,5.1069,6.2069,5.2736,5.8292,5.2736],"words":[{"text":"30.00","boundingBox":[5.8292,5.1069,6.2069,5.1069,6.2069,5.2736,5.8292,5.2736]}]},{"text":"Tip:","boundingBox":[5.5028,5.3264,5.7611,5.3264,5.7611,5.4931,5.5028,5.4931],"words":[{"text":"Tip:","boundingBox":[5.5028,5.3264,5.7611,5.3264,5.7611,5.4931,5.5028,5.4931]}]},{"text":"100.00","boundingBox":[5.7986,5.3264,6.2639,5.3264,6.2639,5.4931,5.7986,5.4931],"words":[{"text":"100.00","boundingBox":[5.7986,5.3264,6.2639,5.3264,6.2639,5.4931,5.7986,5.4931]}]},{"text":"Total:","boundingBox":[5.5028,5.5472,5.9014,5.5472,5.9014,5.7139,5.5028,5.7139],"words":[{"text":"Total:","boundingBox":[5.5028,5.5472,5.9014,5.5472,5.9014,5.7139,5.5028,5.7139]}]},{"text":"430.00","boundingBox":[5.9389,5.5472,6.4028,5.5472,6.4028,5.7139,5.9389,5.7139],"words":[{"text":"430.00","boundingBox":[5.9389,5.5472,6.4028,5.5472,6.4028,5.7139,5.9389,5.7139]}]},{"text":"Signature:","boundingBox":[1.0,6.6431,1.7083,6.6431,1.7083,6.8097,1.0,6.8097],"words":[{"text":"Signature:","boundingBox":[1.0,6.6431,1.7083,6.6431,1.7083,6.8097,1.0,6.8097]}]},{"text":"____Bilbo + Baggins__________","boundingBox":[1.7472,6.6431,3.8333,6.6431,3.8333,6.8097,1.7472,6.8097],"words":[{"text":"____Bilbo","boundingBox":[1.7472,6.6431,2.4333,6.6431,2.4333,6.8097,1.7472,6.8097]},{"text":"Baggins__________","boundingBox":[2.4708,6.6431,3.8333,6.6431,3.8333,6.8097,2.4708,6.8097]}]}]},{"page":3,"angle":0,"width":8.5,"height":11.0,"unit":"inch","lines":[{"text":"Company + B Invoice","boundingBox":[0.8764,1.1014,2.3833,1.1014,2.3833,1.2958,0.8764,1.2958],"words":[{"text":"Company","boundingBox":[0.8764,1.1014,1.6236,1.1014,1.6236,1.2958,0.8764,1.2958]},{"text":"B","boundingBox":[1.6667,1.1014,1.7722,1.1014,1.7722,1.2958,1.6667,1.2958]},{"text":"Invoice","boundingBox":[1.8167,1.1014,2.3833,1.1014,2.3833,1.2958,1.8167,1.2958]}]},{"text":"Invoice + For:","boundingBox":[6.0028,1.0431,7.0528,1.0431,7.0528,1.2667,6.0028,1.2667],"words":[{"text":"Invoice","boundingBox":[6.0028,1.0431,6.6472,1.0431,6.6472,1.2667,6.0028,1.2667]},{"text":"For:","boundingBox":[6.6958,1.0431,7.0528,1.0431,7.0528,1.2667,6.6958,1.2667]}]},{"text":"Address:","boundingBox":[0.8764,1.4681,1.5778,1.4681,1.5778,1.6625,0.8764,1.6625],"words":[{"text":"Address:","boundingBox":[0.8764,1.4681,1.5778,1.4681,1.5778,1.6625,0.8764,1.6625]}]},{"text":"Frodo + Baggins","boundingBox":[6.0028,1.4389,6.9569,1.4389,6.9569,1.6056,6.0028,1.6056],"words":[{"text":"Frodo","boundingBox":[6.0028,1.4389,6.3972,1.4389,6.3972,1.6056,6.0028,1.6056]},{"text":"Baggins","boundingBox":[6.4361,1.4389,6.9569,1.4389,6.9569,1.6056,6.4361,1.6056]}]},{"text":"123 + Hobbit Lane","boundingBox":[6.0028,1.6597,7.1083,1.6597,7.1083,1.8264,6.0028,1.8264],"words":[{"text":"123","boundingBox":[6.0028,1.6597,6.2542,1.6597,6.2542,1.8264,6.0028,1.8264]},{"text":"Hobbit","boundingBox":[6.2889,1.6597,6.7514,1.6597,6.7514,1.8264,6.2889,1.8264]},{"text":"Lane","boundingBox":[6.7889,1.6597,7.1083,1.6597,7.1083,1.8264,6.7889,1.8264]}]},{"text":"567 + Main St.","boundingBox":[0.8764,1.8292,1.725,1.8292,1.725,1.9958,0.8764,1.9958],"words":[{"text":"567","boundingBox":[0.8764,1.8292,1.1278,1.8292,1.1278,1.9958,0.8764,1.9958]},{"text":"Main","boundingBox":[1.1639,1.8292,1.5139,1.8292,1.5139,1.9958,1.1639,1.9958]},{"text":"St.","boundingBox":[1.55,1.8292,1.725,1.8292,1.725,1.9958,1.55,1.9958]}]},{"text":"Redmond, + WA","boundingBox":[6.0028,1.8792,6.9819,1.8792,6.9819,2.0458,6.0028,2.0458],"words":[{"text":"Redmond,","boundingBox":[6.0028,1.8792,6.6972,1.8792,6.6972,2.0458,6.0028,2.0458]},{"text":"WA","boundingBox":[6.7361,1.8792,6.9819,1.8792,6.9819,2.0458,6.7361,2.0458]}]},{"text":"Redmond, + WA","boundingBox":[0.8764,2.0486,1.8569,2.0486,1.8569,2.2153,0.8764,2.2153],"words":[{"text":"Redmond,","boundingBox":[0.8764,2.0486,1.5722,2.0486,1.5722,2.2153,0.8764,2.2153]},{"text":"WA","boundingBox":[1.6097,2.0486,1.8569,2.0486,1.8569,2.2153,1.6097,2.2153]}]},{"text":"555-555-5555","boundingBox":[6.0028,2.0986,6.9472,2.0986,6.9472,2.2653,6.0028,2.2653],"words":[{"text":"555-555-5555","boundingBox":[6.0028,2.0986,6.9472,2.0986,6.9472,2.2653,6.0028,2.2653]}]},{"text":"555-555-5555","boundingBox":[0.8764,2.2694,1.8222,2.2694,1.8222,2.4361,0.8764,2.4361],"words":[{"text":"555-555-5555","boundingBox":[0.8764,2.2694,1.8222,2.2694,1.8222,2.4361,0.8764,2.4361]}]},{"text":"Item","boundingBox":[1.0806,2.9833,1.3958,2.9833,1.3958,3.15,1.0806,3.15],"words":[{"text":"Item","boundingBox":[1.0806,2.9833,1.3958,2.9833,1.3958,3.15,1.0806,3.15]}]},{"text":"Quantity","boundingBox":[3.2444,2.9833,3.8389,2.9833,3.8389,3.15,3.2444,3.15],"words":[{"text":"Quantity","boundingBox":[3.2444,2.9833,3.8389,2.9833,3.8389,3.15,3.2444,3.15]}]},{"text":"Price","boundingBox":[5.4083,2.9833,5.7458,2.9833,5.7458,3.15,5.4083,3.15],"words":[{"text":"Price","boundingBox":[5.4083,2.9833,5.7458,2.9833,5.7458,3.15,5.4083,3.15]}]},{"text":"A","boundingBox":[1.0806,3.1931,1.1764,3.1931,1.1764,3.3597,1.0806,3.3597],"words":[{"text":"A","boundingBox":[1.0806,3.1931,1.1764,3.1931,1.1764,3.3597,1.0806,3.3597]}]},{"text":"10","boundingBox":[3.2444,3.1931,3.4125,3.1931,3.4125,3.3597,3.2444,3.3597],"words":[{"text":"10","boundingBox":[3.2444,3.1931,3.4125,3.1931,3.4125,3.3597,3.2444,3.3597]}]},{"text":"100.99","boundingBox":[5.4083,3.1931,5.8708,3.1931,5.8708,3.3597,5.4083,3.3597],"words":[{"text":"100.99","boundingBox":[5.4083,3.1931,5.8708,3.1931,5.8708,3.3597,5.4083,3.3597]}]},{"text":"B","boundingBox":[1.0806,3.4056,1.1708,3.4056,1.1708,3.5722,1.0806,3.5722],"words":[{"text":"B","boundingBox":[1.0806,3.4056,1.1708,3.4056,1.1708,3.5722,1.0806,3.5722]}]},{"text":"20","boundingBox":[3.2444,3.4056,3.4125,3.4056,3.4125,3.5722,3.2444,3.5722],"words":[{"text":"20","boundingBox":[3.2444,3.4056,3.4125,3.4056,3.4125,3.5722,3.2444,3.5722]}]},{"text":"140.67","boundingBox":[5.4083,3.4056,5.8694,3.4056,5.8694,3.5722,5.4083,3.5722],"words":[{"text":"140.67","boundingBox":[5.4083,3.4056,5.8694,3.4056,5.8694,3.5722,5.4083,3.5722]}]},{"text":"C","boundingBox":[1.0806,3.6167,1.1694,3.6167,1.1694,3.7833,1.0806,3.7833],"words":[{"text":"C","boundingBox":[1.0806,3.6167,1.1694,3.6167,1.1694,3.7833,1.0806,3.7833]}]},{"text":"40","boundingBox":[3.2444,3.6167,3.4125,3.6167,3.4125,3.7833,3.2444,3.7833],"words":[{"text":"40","boundingBox":[3.2444,3.6167,3.4125,3.6167,3.4125,3.7833,3.2444,3.7833]}]},{"text":"150.66","boundingBox":[5.4083,3.6167,5.8694,3.6167,5.8694,3.7833,5.4083,3.7833],"words":[{"text":"150.66","boundingBox":[5.4083,3.6167,5.8694,3.6167,5.8694,3.7833,5.4083,3.7833]}]},{"text":"D","boundingBox":[1.0806,3.8264,1.1833,3.8264,1.1833,3.9931,1.0806,3.9931],"words":[{"text":"D","boundingBox":[1.0806,3.8264,1.1833,3.8264,1.1833,3.9931,1.0806,3.9931]}]},{"text":"10","boundingBox":[3.2444,3.8264,3.4125,3.8264,3.4125,3.9931,3.2444,3.9931],"words":[{"text":"10","boundingBox":[3.2444,3.8264,3.4125,3.8264,3.4125,3.9931,3.2444,3.9931]}]},{"text":"120.00","boundingBox":[5.4083,3.8264,5.8694,3.8264,5.8694,3.9931,5.4083,3.9931],"words":[{"text":"120.00","boundingBox":[5.4083,3.8264,5.8694,3.8264,5.8694,3.9931,5.4083,3.9931]}]},{"text":"E","boundingBox":[1.0806,4.0361,1.1611,4.0361,1.1611,4.2028,1.0806,4.2028],"words":[{"text":"E","boundingBox":[1.0806,4.0361,1.1611,4.0361,1.1611,4.2028,1.0806,4.2028]}]},{"text":"40","boundingBox":[3.2444,4.0361,3.4125,4.0361,3.4125,4.2028,3.2444,4.2028],"words":[{"text":"40","boundingBox":[3.2444,4.0361,3.4125,4.0361,3.4125,4.2028,3.2444,4.2028]}]},{"text":"100.00","boundingBox":[5.4083,4.0361,5.8708,4.0361,5.8708,4.2028,5.4083,4.2028],"words":[{"text":"100.00","boundingBox":[5.4083,4.0361,5.8708,4.0361,5.8708,4.2028,5.4083,4.2028]}]},{"text":"F","boundingBox":[1.0806,4.2458,1.1569,4.2458,1.1569,4.4125,1.0806,4.4125],"words":[{"text":"F","boundingBox":[1.0806,4.2458,1.1569,4.2458,1.1569,4.4125,1.0806,4.4125]}]},{"text":"60","boundingBox":[3.2444,4.2458,3.4125,4.2458,3.4125,4.4125,3.2444,4.4125],"words":[{"text":"60","boundingBox":[3.2444,4.2458,3.4125,4.2458,3.4125,4.4125,3.2444,4.4125]}]},{"text":"120.00","boundingBox":[5.4083,4.2458,5.8694,4.2458,5.8694,4.4125,5.4083,4.4125],"words":[{"text":"120.00","boundingBox":[5.4083,4.2458,5.8694,4.2458,5.8694,4.4125,5.4083,4.4125]}]},{"text":"G","boundingBox":[1.0806,4.4569,1.1861,4.4569,1.1861,4.6236,1.0806,4.6236],"words":[{"text":"G","boundingBox":[1.0806,4.4569,1.1861,4.4569,1.1861,4.6236,1.0806,4.6236]}]},{"text":"80","boundingBox":[3.2444,4.4569,3.4125,4.4569,3.4125,4.6236,3.2444,4.6236],"words":[{"text":"80","boundingBox":[3.2444,4.4569,3.4125,4.4569,3.4125,4.6236,3.2444,4.6236]}]},{"text":"220.00","boundingBox":[5.4083,4.4569,5.8708,4.4569,5.8708,4.6236,5.4083,4.6236],"words":[{"text":"220.00","boundingBox":[5.4083,4.4569,5.8708,4.4569,5.8708,4.6236,5.4083,4.6236]}]},{"text":"Subtotal:","boundingBox":[5.5028,4.8861,6.1347,4.8861,6.1347,5.0528,5.5028,5.0528],"words":[{"text":"Subtotal:","boundingBox":[5.5028,4.8861,6.1347,4.8861,6.1347,5.0528,5.5028,5.0528]}]},{"text":"3000.00","boundingBox":[6.1722,4.8861,6.7208,4.8861,6.7208,5.0528,6.1722,5.0528],"words":[{"text":"3000.00","boundingBox":[6.1722,4.8861,6.7208,4.8861,6.7208,5.0528,6.1722,5.0528]}]},{"text":"Tax:","boundingBox":[5.5028,5.1069,5.7917,5.1069,5.7917,5.2736,5.5028,5.2736],"words":[{"text":"Tax:","boundingBox":[5.5028,5.1069,5.7917,5.1069,5.7917,5.2736,5.5028,5.2736]}]},{"text":"300.00","boundingBox":[5.8292,5.1069,6.2931,5.1069,6.2931,5.2736,5.8292,5.2736],"words":[{"text":"300.00","boundingBox":[5.8292,5.1069,6.2931,5.1069,6.2931,5.2736,5.8292,5.2736]}]},{"text":"Tip:","boundingBox":[5.5028,5.3264,5.7611,5.3264,5.7611,5.4931,5.5028,5.4931],"words":[{"text":"Tip:","boundingBox":[5.5028,5.3264,5.7611,5.3264,5.7611,5.4931,5.5028,5.4931]}]},{"text":"1000.00","boundingBox":[5.7986,5.3264,6.3472,5.3264,6.3472,5.4931,5.7986,5.4931],"words":[{"text":"1000.00","boundingBox":[5.7986,5.3264,6.3472,5.3264,6.3472,5.4931,5.7986,5.4931]}]},{"text":"Total:","boundingBox":[5.5028,5.5472,5.9014,5.5472,5.9014,5.7139,5.5028,5.7139],"words":[{"text":"Total:","boundingBox":[5.5028,5.5472,5.9014,5.5472,5.9014,5.7139,5.5028,5.7139]}]},{"text":"4300.00","boundingBox":[5.9389,5.5472,6.4875,5.5472,6.4875,5.7139,5.9389,5.7139],"words":[{"text":"4300.00","boundingBox":[5.9389,5.5472,6.4875,5.5472,6.4875,5.7139,5.9389,5.7139]}]},{"text":"Signature:","boundingBox":[1.0,6.6431,1.7083,6.6431,1.7083,6.8097,1.0,6.8097],"words":[{"text":"Signature:","boundingBox":[1.0,6.6431,1.7083,6.6431,1.7083,6.8097,1.0,6.8097]}]},{"text":"____Frodo + Baggins__________","boundingBox":[1.7472,6.6431,3.8833,6.6431,3.8833,6.8097,1.7472,6.8097],"words":[{"text":"____Frodo","boundingBox":[1.7472,6.6431,2.4833,6.6431,2.4833,6.8097,1.7472,6.8097]},{"text":"Baggins__________","boundingBox":[2.5208,6.6431,3.8833,6.6431,3.8833,6.8097,2.5208,6.8097]}]}]}],"pageResults":[{"page":1,"keyValuePairs":[{"key":{"text":"Invoice + For:","boundingBox":[6.0028,1.0431,7.0528,1.0431,7.0528,1.2667,6.0028,1.2667],"elements":["#/readResults/0/lines/1/words/0","#/readResults/0/lines/1/words/1"]},"value":{"text":"Bilbo + Baggins 123 Hobbit Lane","boundingBox":[6.0028,1.4389,7.1083,1.4389,7.1083,1.8264,6.0028,1.8264],"elements":["#/readResults/0/lines/3/words/0","#/readResults/0/lines/3/words/1","#/readResults/0/lines/4/words/0","#/readResults/0/lines/4/words/1","#/readResults/0/lines/4/words/2"]},"confidence":1.0},{"key":{"text":"Address:","boundingBox":[0.8764,1.4681,1.5778,1.4681,1.5778,1.6625,0.8764,1.6625],"elements":["#/readResults/0/lines/2/words/0"]},"value":{"text":"567 + Main St.","boundingBox":[0.8764,1.8292,1.725,1.8292,1.725,1.9958,0.8764,1.9958],"elements":["#/readResults/0/lines/5/words/0","#/readResults/0/lines/5/words/1","#/readResults/0/lines/5/words/2"]},"confidence":1.0},{"key":{"text":"Redmond, + WA","boundingBox":[6.0028,1.8792,6.9819,1.8792,6.9819,2.0458,6.0028,2.0458],"elements":["#/readResults/0/lines/6/words/0","#/readResults/0/lines/6/words/1"]},"value":{"text":"555-555-5555","boundingBox":[6.0028,2.0986,6.9472,2.0986,6.9472,2.2653,6.0028,2.2653],"elements":["#/readResults/0/lines/8/words/0"]},"confidence":1.0},{"key":{"text":"Redmond, + WA","boundingBox":[0.8764,2.0486,1.8569,2.0486,1.8569,2.2153,0.8764,2.2153],"elements":["#/readResults/0/lines/7/words/0","#/readResults/0/lines/7/words/1"]},"value":{"text":"555-555-5555","boundingBox":[0.8764,2.2694,1.8222,2.2694,1.8222,2.4361,0.8764,2.4361],"elements":["#/readResults/0/lines/9/words/0"]},"confidence":0.29},{"key":{"text":"Subtotal:","boundingBox":[5.5028,4.8861,6.1347,4.8861,6.1347,5.0528,5.5028,5.0528],"elements":["#/readResults/0/lines/34/words/0"]},"value":{"text":"300.00","boundingBox":[6.1722,4.8861,6.6361,4.8861,6.6361,5.0528,6.1722,5.0528],"elements":["#/readResults/0/lines/35/words/0"]},"confidence":1.0},{"key":{"text":"Tax:","boundingBox":[5.5028,5.1069,5.7917,5.1069,5.7917,5.2736,5.5028,5.2736],"elements":["#/readResults/0/lines/36/words/0"]},"value":{"text":"30.00","boundingBox":[5.8292,5.1069,6.2069,5.1069,6.2069,5.2736,5.8292,5.2736],"elements":["#/readResults/0/lines/37/words/0"]},"confidence":1.0},{"key":{"text":"Tip:","boundingBox":[5.5028,5.3264,5.7611,5.3264,5.7611,5.4931,5.5028,5.4931],"elements":["#/readResults/0/lines/38/words/0"]},"value":{"text":"100.00","boundingBox":[5.7986,5.3264,6.2639,5.3264,6.2639,5.4931,5.7986,5.4931],"elements":["#/readResults/0/lines/39/words/0"]},"confidence":1.0},{"key":{"text":"Total:","boundingBox":[5.5028,5.5472,5.9014,5.5472,5.9014,5.7139,5.5028,5.7139],"elements":["#/readResults/0/lines/40/words/0"]},"value":{"text":"430.00","boundingBox":[5.9389,5.5472,6.4028,5.5472,6.4028,5.7139,5.9389,5.7139],"elements":["#/readResults/0/lines/41/words/0"]},"confidence":1.0},{"key":{"text":"Signature:","boundingBox":[1.0,6.6431,1.7083,6.6431,1.7083,6.8097,1.0,6.8097],"elements":["#/readResults/0/lines/42/words/0"]},"value":{"text":"____Bilbo + Baggins__________","boundingBox":[1.7472,6.6431,3.8333,6.6431,3.8333,6.8097,1.7472,6.8097],"elements":["#/readResults/0/lines/43/words/0","#/readResults/0/lines/43/words/1"]},"confidence":1.0},{"key":{"text":"__Tokens__1","boundingBox":null,"elements":null},"value":{"text":"Company + A Invoice","boundingBox":[0.8764,1.1014,2.3875,1.1014,2.3875,1.2958,0.8764,1.2958],"elements":["#/readResults/0/lines/0/words/0","#/readResults/0/lines/0/words/1","#/readResults/0/lines/0/words/2"]},"confidence":1.0}],"tables":[{"rows":8,"columns":3,"cells":[{"text":"Item","rowIndex":0,"columnIndex":0,"boundingBox":[1.0806,2.9833,1.3958,2.9833,1.3958,3.15,1.0806,3.15],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/0/lines/10/words/0"],"isHeader":true,"isFooter":false},{"text":"Quantity","rowIndex":0,"columnIndex":1,"boundingBox":[3.2444,2.9833,3.8389,2.9833,3.8389,3.15,3.2444,3.15],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/0/lines/11/words/0"],"isHeader":true,"isFooter":false},{"text":"Price","rowIndex":0,"columnIndex":2,"boundingBox":[5.4083,2.9833,5.7458,2.9833,5.7458,3.15,5.4083,3.15],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/0/lines/12/words/0"],"isHeader":true,"isFooter":false},{"text":"A","rowIndex":1,"columnIndex":0,"boundingBox":[1.0806,3.1931,1.1764,3.1931,1.1764,3.3597,1.0806,3.3597],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/0/lines/13/words/0"],"isHeader":false,"isFooter":false},{"text":"1","rowIndex":1,"columnIndex":1,"boundingBox":[3.2444,3.1931,3.3292,3.1931,3.3292,3.3597,3.2444,3.3597],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/0/lines/14/words/0"],"isHeader":false,"isFooter":false},{"text":"10.99","rowIndex":1,"columnIndex":2,"boundingBox":[5.4083,3.1931,5.7875,3.1931,5.7875,3.3597,5.4083,3.3597],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/0/lines/15/words/0"],"isHeader":false,"isFooter":false},{"text":"B","rowIndex":2,"columnIndex":0,"boundingBox":[1.0806,3.4056,1.1708,3.4056,1.1708,3.5722,1.0806,3.5722],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/0/lines/16/words/0"],"isHeader":false,"isFooter":false},{"text":"2","rowIndex":2,"columnIndex":1,"boundingBox":[3.2444,3.4056,3.3292,3.4056,3.3292,3.5722,3.2444,3.5722],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/0/lines/17/words/0"],"isHeader":false,"isFooter":false},{"text":"14.67","rowIndex":2,"columnIndex":2,"boundingBox":[5.4083,3.4056,5.7861,3.4056,5.7861,3.5722,5.4083,3.5722],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/0/lines/18/words/0"],"isHeader":false,"isFooter":false},{"text":"C","rowIndex":3,"columnIndex":0,"boundingBox":[1.0806,3.6167,1.1694,3.6167,1.1694,3.7833,1.0806,3.7833],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/0/lines/19/words/0"],"isHeader":false,"isFooter":false},{"text":"4","rowIndex":3,"columnIndex":1,"boundingBox":[3.2444,3.6167,3.3292,3.6167,3.3292,3.7833,3.2444,3.7833],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/0/lines/20/words/0"],"isHeader":false,"isFooter":false},{"text":"15.66","rowIndex":3,"columnIndex":2,"boundingBox":[5.4083,3.6167,5.7861,3.6167,5.7861,3.7833,5.4083,3.7833],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/0/lines/21/words/0"],"isHeader":false,"isFooter":false},{"text":"D","rowIndex":4,"columnIndex":0,"boundingBox":[1.0806,3.8264,1.1833,3.8264,1.1833,3.9931,1.0806,3.9931],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/0/lines/22/words/0"],"isHeader":false,"isFooter":false},{"text":"1","rowIndex":4,"columnIndex":1,"boundingBox":[3.2444,3.8264,3.3292,3.8264,3.3292,3.9931,3.2444,3.9931],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/0/lines/23/words/0"],"isHeader":false,"isFooter":false},{"text":"12.00","rowIndex":4,"columnIndex":2,"boundingBox":[5.4083,3.8264,5.7861,3.8264,5.7861,3.9931,5.4083,3.9931],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/0/lines/24/words/0"],"isHeader":false,"isFooter":false},{"text":"E","rowIndex":5,"columnIndex":0,"boundingBox":[1.0806,4.0361,1.1611,4.0361,1.1611,4.2028,1.0806,4.2028],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/0/lines/25/words/0"],"isHeader":false,"isFooter":false},{"text":"4","rowIndex":5,"columnIndex":1,"boundingBox":[3.2444,4.0361,3.3292,4.0361,3.3292,4.2028,3.2444,4.2028],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/0/lines/26/words/0"],"isHeader":false,"isFooter":false},{"text":"10.00","rowIndex":5,"columnIndex":2,"boundingBox":[5.4083,4.0361,5.7875,4.0361,5.7875,4.2028,5.4083,4.2028],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/0/lines/27/words/0"],"isHeader":false,"isFooter":false},{"text":"F","rowIndex":6,"columnIndex":0,"boundingBox":[1.0806,4.2458,1.1569,4.2458,1.1569,4.4125,1.0806,4.4125],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/0/lines/28/words/0"],"isHeader":false,"isFooter":false},{"text":"6","rowIndex":6,"columnIndex":1,"boundingBox":[3.2444,4.2458,3.3292,4.2458,3.3292,4.4125,3.2444,4.4125],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/0/lines/29/words/0"],"isHeader":false,"isFooter":false},{"text":"12.00","rowIndex":6,"columnIndex":2,"boundingBox":[5.4083,4.2458,5.7861,4.2458,5.7861,4.4125,5.4083,4.4125],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/0/lines/30/words/0"],"isHeader":false,"isFooter":false},{"text":"G","rowIndex":7,"columnIndex":0,"boundingBox":[1.0806,4.4569,1.1861,4.4569,1.1861,4.6236,1.0806,4.6236],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/0/lines/31/words/0"],"isHeader":false,"isFooter":false},{"text":"8","rowIndex":7,"columnIndex":1,"boundingBox":[3.2444,4.4569,3.3292,4.4569,3.3292,4.6236,3.2444,4.6236],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/0/lines/32/words/0"],"isHeader":false,"isFooter":false},{"text":"22.00","rowIndex":7,"columnIndex":2,"boundingBox":[5.4083,4.4569,5.7875,4.4569,5.7875,4.6236,5.4083,4.6236],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/0/lines/33/words/0"],"isHeader":false,"isFooter":false}]}],"clusterId":0},{"page":3,"keyValuePairs":[{"key":{"text":"Invoice + For:","boundingBox":[6.0028,1.0431,7.0528,1.0431,7.0528,1.2667,6.0028,1.2667],"elements":["#/readResults/2/lines/1/words/0","#/readResults/2/lines/1/words/1"]},"value":{"text":"Frodo + Baggins 123 Hobbit Lane","boundingBox":[6.0028,1.4389,7.1083,1.4389,7.1083,1.8264,6.0028,1.8264],"elements":["#/readResults/2/lines/3/words/0","#/readResults/2/lines/3/words/1","#/readResults/2/lines/4/words/0","#/readResults/2/lines/4/words/1","#/readResults/2/lines/4/words/2"]},"confidence":1.0},{"key":{"text":"Address:","boundingBox":[0.8764,1.4681,1.5778,1.4681,1.5778,1.6625,0.8764,1.6625],"elements":["#/readResults/2/lines/2/words/0"]},"value":{"text":"567 + Main St.","boundingBox":[0.8764,1.8292,1.725,1.8292,1.725,1.9958,0.8764,1.9958],"elements":["#/readResults/2/lines/5/words/0","#/readResults/2/lines/5/words/1","#/readResults/2/lines/5/words/2"]},"confidence":1.0},{"key":{"text":"Redmond, + WA","boundingBox":[6.0028,1.8792,6.9819,1.8792,6.9819,2.0458,6.0028,2.0458],"elements":["#/readResults/2/lines/6/words/0","#/readResults/2/lines/6/words/1"]},"value":{"text":"555-555-5555","boundingBox":[6.0028,2.0986,6.9472,2.0986,6.9472,2.2653,6.0028,2.2653],"elements":["#/readResults/2/lines/8/words/0"]},"confidence":1.0},{"key":{"text":"Redmond, + WA","boundingBox":[0.8764,2.0486,1.8569,2.0486,1.8569,2.2153,0.8764,2.2153],"elements":["#/readResults/2/lines/7/words/0","#/readResults/2/lines/7/words/1"]},"value":{"text":"555-555-5555","boundingBox":[0.8764,2.2694,1.8222,2.2694,1.8222,2.4361,0.8764,2.4361],"elements":["#/readResults/2/lines/9/words/0"]},"confidence":0.29},{"key":{"text":"Subtotal:","boundingBox":[5.5028,4.8861,6.1347,4.8861,6.1347,5.0528,5.5028,5.0528],"elements":["#/readResults/2/lines/34/words/0"]},"value":{"text":"3000.00","boundingBox":[6.1722,4.8861,6.7208,4.8861,6.7208,5.0528,6.1722,5.0528],"elements":["#/readResults/2/lines/35/words/0"]},"confidence":1.0},{"key":{"text":"Tax:","boundingBox":[5.5028,5.1069,5.7917,5.1069,5.7917,5.2736,5.5028,5.2736],"elements":["#/readResults/2/lines/36/words/0"]},"value":{"text":"300.00","boundingBox":[5.8292,5.1069,6.2931,5.1069,6.2931,5.2736,5.8292,5.2736],"elements":["#/readResults/2/lines/37/words/0"]},"confidence":1.0},{"key":{"text":"Tip:","boundingBox":[5.5028,5.3264,5.7611,5.3264,5.7611,5.4931,5.5028,5.4931],"elements":["#/readResults/2/lines/38/words/0"]},"value":{"text":"1000.00","boundingBox":[5.7986,5.3264,6.3472,5.3264,6.3472,5.4931,5.7986,5.4931],"elements":["#/readResults/2/lines/39/words/0"]},"confidence":1.0},{"key":{"text":"Total:","boundingBox":[5.5028,5.5472,5.9014,5.5472,5.9014,5.7139,5.5028,5.7139],"elements":["#/readResults/2/lines/40/words/0"]},"value":{"text":"4300.00","boundingBox":[5.9389,5.5472,6.4875,5.5472,6.4875,5.7139,5.9389,5.7139],"elements":["#/readResults/2/lines/41/words/0"]},"confidence":1.0},{"key":{"text":"Signature:","boundingBox":[1.0,6.6431,1.7083,6.6431,1.7083,6.8097,1.0,6.8097],"elements":["#/readResults/2/lines/42/words/0"]},"value":{"text":"____Frodo + Baggins__________","boundingBox":[1.7472,6.6431,3.8833,6.6431,3.8833,6.8097,1.7472,6.8097],"elements":["#/readResults/2/lines/43/words/0","#/readResults/2/lines/43/words/1"]},"confidence":1.0},{"key":{"text":"__Tokens__1","boundingBox":null,"elements":null},"value":{"text":"Company + B Invoice","boundingBox":[0.8764,1.1014,2.3833,1.1014,2.3833,1.2958,0.8764,1.2958],"elements":["#/readResults/2/lines/0/words/0","#/readResults/2/lines/0/words/1","#/readResults/2/lines/0/words/2"]},"confidence":1.0}],"tables":[{"rows":8,"columns":3,"cells":[{"text":"Item","rowIndex":0,"columnIndex":0,"boundingBox":[1.0806,2.9833,1.3958,2.9833,1.3958,3.15,1.0806,3.15],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/2/lines/10/words/0"],"isHeader":true,"isFooter":false},{"text":"Quantity","rowIndex":0,"columnIndex":1,"boundingBox":[3.2444,2.9833,3.8389,2.9833,3.8389,3.15,3.2444,3.15],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/2/lines/11/words/0"],"isHeader":true,"isFooter":false},{"text":"Price","rowIndex":0,"columnIndex":2,"boundingBox":[5.4083,2.9833,5.7458,2.9833,5.7458,3.15,5.4083,3.15],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/2/lines/12/words/0"],"isHeader":true,"isFooter":false},{"text":"A","rowIndex":1,"columnIndex":0,"boundingBox":[1.0806,3.1931,1.1764,3.1931,1.1764,3.3597,1.0806,3.3597],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/2/lines/13/words/0"],"isHeader":false,"isFooter":false},{"text":"10","rowIndex":1,"columnIndex":1,"boundingBox":[3.2444,3.1931,3.4125,3.1931,3.4125,3.3597,3.2444,3.3597],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/2/lines/14/words/0"],"isHeader":false,"isFooter":false},{"text":"100.99","rowIndex":1,"columnIndex":2,"boundingBox":[5.4083,3.1931,5.8708,3.1931,5.8708,3.3597,5.4083,3.3597],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/2/lines/15/words/0"],"isHeader":false,"isFooter":false},{"text":"B","rowIndex":2,"columnIndex":0,"boundingBox":[1.0806,3.4056,1.1708,3.4056,1.1708,3.5722,1.0806,3.5722],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/2/lines/16/words/0"],"isHeader":false,"isFooter":false},{"text":"20","rowIndex":2,"columnIndex":1,"boundingBox":[3.2444,3.4056,3.4125,3.4056,3.4125,3.5722,3.2444,3.5722],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/2/lines/17/words/0"],"isHeader":false,"isFooter":false},{"text":"140.67","rowIndex":2,"columnIndex":2,"boundingBox":[5.4083,3.4056,5.8694,3.4056,5.8694,3.5722,5.4083,3.5722],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/2/lines/18/words/0"],"isHeader":false,"isFooter":false},{"text":"C","rowIndex":3,"columnIndex":0,"boundingBox":[1.0806,3.6167,1.1694,3.6167,1.1694,3.7833,1.0806,3.7833],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/2/lines/19/words/0"],"isHeader":false,"isFooter":false},{"text":"40","rowIndex":3,"columnIndex":1,"boundingBox":[3.2444,3.6167,3.4125,3.6167,3.4125,3.7833,3.2444,3.7833],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/2/lines/20/words/0"],"isHeader":false,"isFooter":false},{"text":"150.66","rowIndex":3,"columnIndex":2,"boundingBox":[5.4083,3.6167,5.8694,3.6167,5.8694,3.7833,5.4083,3.7833],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/2/lines/21/words/0"],"isHeader":false,"isFooter":false},{"text":"D","rowIndex":4,"columnIndex":0,"boundingBox":[1.0806,3.8264,1.1833,3.8264,1.1833,3.9931,1.0806,3.9931],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/2/lines/22/words/0"],"isHeader":false,"isFooter":false},{"text":"10","rowIndex":4,"columnIndex":1,"boundingBox":[3.2444,3.8264,3.4125,3.8264,3.4125,3.9931,3.2444,3.9931],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/2/lines/23/words/0"],"isHeader":false,"isFooter":false},{"text":"120.00","rowIndex":4,"columnIndex":2,"boundingBox":[5.4083,3.8264,5.8694,3.8264,5.8694,3.9931,5.4083,3.9931],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/2/lines/24/words/0"],"isHeader":false,"isFooter":false},{"text":"E","rowIndex":5,"columnIndex":0,"boundingBox":[1.0806,4.0361,1.1611,4.0361,1.1611,4.2028,1.0806,4.2028],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/2/lines/25/words/0"],"isHeader":false,"isFooter":false},{"text":"40","rowIndex":5,"columnIndex":1,"boundingBox":[3.2444,4.0361,3.4125,4.0361,3.4125,4.2028,3.2444,4.2028],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/2/lines/26/words/0"],"isHeader":false,"isFooter":false},{"text":"100.00","rowIndex":5,"columnIndex":2,"boundingBox":[5.4083,4.0361,5.8708,4.0361,5.8708,4.2028,5.4083,4.2028],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/2/lines/27/words/0"],"isHeader":false,"isFooter":false},{"text":"F","rowIndex":6,"columnIndex":0,"boundingBox":[1.0806,4.2458,1.1569,4.2458,1.1569,4.4125,1.0806,4.4125],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/2/lines/28/words/0"],"isHeader":false,"isFooter":false},{"text":"60","rowIndex":6,"columnIndex":1,"boundingBox":[3.2444,4.2458,3.4125,4.2458,3.4125,4.4125,3.2444,4.4125],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/2/lines/29/words/0"],"isHeader":false,"isFooter":false},{"text":"120.00","rowIndex":6,"columnIndex":2,"boundingBox":[5.4083,4.2458,5.8694,4.2458,5.8694,4.4125,5.4083,4.4125],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/2/lines/30/words/0"],"isHeader":false,"isFooter":false},{"text":"G","rowIndex":7,"columnIndex":0,"boundingBox":[1.0806,4.4569,1.1861,4.4569,1.1861,4.6236,1.0806,4.6236],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/2/lines/31/words/0"],"isHeader":false,"isFooter":false},{"text":"80","rowIndex":7,"columnIndex":1,"boundingBox":[3.2444,4.4569,3.4125,4.4569,3.4125,4.6236,3.2444,4.6236],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/2/lines/32/words/0"],"isHeader":false,"isFooter":false},{"text":"220.00","rowIndex":7,"columnIndex":2,"boundingBox":[5.4083,4.4569,5.8708,4.4569,5.8708,4.6236,5.4083,4.6236],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/2/lines/33/words/0"],"isHeader":false,"isFooter":false}]}],"clusterId":0}],"documentResults":[],"errors":[]}}' + headers: + apim-request-id: + - 31a10ac4-72e6-427f-989e-94685e365375 + content-type: + - application/json; charset=utf-8 + date: + - Thu, 30 Apr 2020 23:41:31 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + transfer-encoding: + - chunked + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '359' + status: + code: 200 + message: OK +version: 1 diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_custom_forms_from_url.test_form_unlbld_transform.yaml b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_custom_forms_from_url.test_custom_form_unlabeled_transform.yaml similarity index 88% rename from sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_custom_forms_from_url.test_form_unlbld_transform.yaml rename to sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_custom_forms_from_url.test_custom_form_unlabeled_transform.yaml index 094bfaa79727..a13aa87bca2e 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_custom_forms_from_url.test_form_unlbld_transform.yaml +++ b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_custom_forms_from_url.test_custom_form_unlabeled_transform.yaml @@ -10,11 +10,11 @@ interactions: Connection: - keep-alive Content-Length: - - '317' + - '288' Content-Type: - application/json User-Agent: - - azsdk-python-ai-formrecognizer/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) Python/3.7.3 (Windows-10-10.0.18362-SP0) method: POST uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models @@ -23,19 +23,19 @@ interactions: string: '' headers: apim-request-id: - - 3f804da4-3b16-4acb-b83c-c72053c67597 + - 2d0cf316-4785-48b6-8d2b-e65237647b61 content-length: - '0' date: - - Wed, 15 Apr 2020 18:51:17 GMT + - Thu, 30 Apr 2020 23:39:34 GMT location: - - https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/2e7d34f3-203a-44fa-815d-14e05bd6df97 + - https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/be9729be-247b-4f42-a7cc-aa0979a4c25b strict-transport-security: - max-age=31536000; includeSubDomains; preload x-content-type-options: - nosniff x-envoy-upstream-service-time: - - '142' + - '234' status: code: 201 message: Created @@ -49,20 +49,20 @@ interactions: Connection: - keep-alive User-Agent: - - azsdk-python-ai-formrecognizer/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) Python/3.7.3 (Windows-10-10.0.18362-SP0) method: GET - uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/2e7d34f3-203a-44fa-815d-14e05bd6df97?includeKeys=true + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/be9729be-247b-4f42-a7cc-aa0979a4c25b?includeKeys=true response: body: - string: '{"modelInfo":{"modelId":"2e7d34f3-203a-44fa-815d-14e05bd6df97","status":"creating","createdDateTime":"2020-04-15T18:51:17Z","lastUpdatedDateTime":"2020-04-15T18:51:17Z"}}' + string: '{"modelInfo":{"modelId":"be9729be-247b-4f42-a7cc-aa0979a4c25b","status":"creating","createdDateTime":"2020-04-30T23:39:34Z","lastUpdatedDateTime":"2020-04-30T23:39:34Z"}}' headers: apim-request-id: - - 50e9c81c-e83b-45c6-bfc6-b5e26dc332e4 + - 5d398c15-c543-4fbf-bd96-0798a9cc49db content-type: - application/json; charset=utf-8 date: - - Wed, 15 Apr 2020 18:51:22 GMT + - Thu, 30 Apr 2020 23:39:39 GMT strict-transport-security: - max-age=31536000; includeSubDomains; preload transfer-encoding: @@ -70,7 +70,7 @@ interactions: x-content-type-options: - nosniff x-envoy-upstream-service-time: - - '38' + - '129' status: code: 200 message: OK @@ -84,24 +84,24 @@ interactions: Connection: - keep-alive User-Agent: - - azsdk-python-ai-formrecognizer/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) Python/3.7.3 (Windows-10-10.0.18362-SP0) method: GET - uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/2e7d34f3-203a-44fa-815d-14e05bd6df97?includeKeys=true + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/be9729be-247b-4f42-a7cc-aa0979a4c25b?includeKeys=true response: body: - string: '{"modelInfo":{"modelId":"2e7d34f3-203a-44fa-815d-14e05bd6df97","status":"ready","createdDateTime":"2020-04-15T18:51:17Z","lastUpdatedDateTime":"2020-04-15T18:51:25Z"},"keys":{"clusters":{"0":["Additional + string: '{"modelInfo":{"modelId":"be9729be-247b-4f42-a7cc-aa0979a4c25b","status":"ready","createdDateTime":"2020-04-30T23:39:34Z","lastUpdatedDateTime":"2020-04-30T23:39:41Z"},"keys":{"clusters":{"0":["Additional Notes:","Address:","Address:","Company Name:","Company Phone:","Dated As:","Email:","Hero Limited","Name:","Phone:","Phone:","Purchase Order","Purchase Order","Purchase Order #:","SUBTOTAL","Seattle, WA 93849 Phone:","Shipped From","Shipped To","TAX","TOTAL","Vendor Name:","Website:"]}},"trainResult":{"trainingDocuments":[{"documentName":"Form_1.jpg","pages":1,"errors":[],"status":"succeeded"},{"documentName":"Form_2.jpg","pages":1,"errors":[],"status":"succeeded"},{"documentName":"Form_3.jpg","pages":1,"errors":[],"status":"succeeded"},{"documentName":"Form_4.jpg","pages":1,"errors":[],"status":"succeeded"},{"documentName":"Form_5.jpg","pages":1,"errors":[],"status":"succeeded"}],"errors":[]}}' headers: apim-request-id: - - 7506fce8-e52e-48b9-9281-8584b32fd0cb + - 5a1bd4d0-7bd5-4d10-979c-24c306c83d1a content-type: - application/json; charset=utf-8 date: - - Wed, 15 Apr 2020 18:51:28 GMT + - Thu, 30 Apr 2020 23:39:44 GMT strict-transport-security: - max-age=31536000; includeSubDomains; preload transfer-encoding: @@ -109,7 +109,7 @@ interactions: x-content-type-options: - nosniff x-envoy-upstream-service-time: - - '130' + - '184' status: code: 200 message: OK @@ -127,28 +127,28 @@ interactions: Content-Type: - application/json User-Agent: - - azsdk-python-ai-formrecognizer/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) Python/3.7.3 (Windows-10-10.0.18362-SP0) method: POST - uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/2e7d34f3-203a-44fa-815d-14e05bd6df97/analyze?includeTextDetails=true + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/be9729be-247b-4f42-a7cc-aa0979a4c25b/analyze?includeTextDetails=true response: body: string: '' headers: apim-request-id: - - 1f7b64c1-23dc-4faa-817b-485e55de4c4b + - ccb4a8d6-2f74-4ef1-88c6-fc68e11b99e4 content-length: - '0' date: - - Wed, 15 Apr 2020 18:51:28 GMT + - Thu, 30 Apr 2020 23:39:44 GMT operation-location: - - https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/2e7d34f3-203a-44fa-815d-14e05bd6df97/analyzeresults/ff6221ad-3b1a-4bed-8223-05caf14cd270 + - https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/be9729be-247b-4f42-a7cc-aa0979a4c25b/analyzeresults/0556d8cb-28f5-4f6d-8a09-36a7d7768b30 strict-transport-security: - max-age=31536000; includeSubDomains; preload x-content-type-options: - nosniff x-envoy-upstream-service-time: - - '77' + - '284' status: code: 202 message: Accepted @@ -162,90 +162,20 @@ interactions: Connection: - keep-alive User-Agent: - - azsdk-python-ai-formrecognizer/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) Python/3.7.3 (Windows-10-10.0.18362-SP0) method: GET - uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/2e7d34f3-203a-44fa-815d-14e05bd6df97/analyzeresults/ff6221ad-3b1a-4bed-8223-05caf14cd270 + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/be9729be-247b-4f42-a7cc-aa0979a4c25b/analyzeresults/0556d8cb-28f5-4f6d-8a09-36a7d7768b30 response: body: - string: '{"status":"running","createdDateTime":"2020-04-15T18:51:28Z","lastUpdatedDateTime":"2020-04-15T18:51:29Z","analyzeResult":null}' + string: '{"status":"running","createdDateTime":"2020-04-30T23:39:45Z","lastUpdatedDateTime":"2020-04-30T23:39:46Z","analyzeResult":null}' headers: apim-request-id: - - 91917386-40e8-4471-9cc2-9a8c8444309a + - bb8370ac-847f-4e71-8ce9-d1388ae11cba content-type: - application/json; charset=utf-8 date: - - Wed, 15 Apr 2020 18:51:33 GMT - strict-transport-security: - - max-age=31536000; includeSubDomains; preload - transfer-encoding: - - chunked - x-content-type-options: - - nosniff - x-envoy-upstream-service-time: - - '47' - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - User-Agent: - - azsdk-python-ai-formrecognizer/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) - Python/3.7.3 (Windows-10-10.0.18362-SP0) - method: GET - uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/2e7d34f3-203a-44fa-815d-14e05bd6df97/analyzeresults/ff6221ad-3b1a-4bed-8223-05caf14cd270 - response: - body: - string: '{"status":"running","createdDateTime":"2020-04-15T18:51:28Z","lastUpdatedDateTime":"2020-04-15T18:51:29Z","analyzeResult":null}' - headers: - apim-request-id: - - e46b071e-1be8-40e7-9f4d-538adc43b0a4 - content-type: - - application/json; charset=utf-8 - date: - - Wed, 15 Apr 2020 18:51:38 GMT - strict-transport-security: - - max-age=31536000; includeSubDomains; preload - transfer-encoding: - - chunked - x-content-type-options: - - nosniff - x-envoy-upstream-service-time: - - '28' - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - User-Agent: - - azsdk-python-ai-formrecognizer/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) - Python/3.7.3 (Windows-10-10.0.18362-SP0) - method: GET - uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/2e7d34f3-203a-44fa-815d-14e05bd6df97/analyzeresults/ff6221ad-3b1a-4bed-8223-05caf14cd270 - response: - body: - string: '{"status":"running","createdDateTime":"2020-04-15T18:51:28Z","lastUpdatedDateTime":"2020-04-15T18:51:29Z","analyzeResult":null}' - headers: - apim-request-id: - - 505e71dd-daa3-40fc-95ce-94786b48ca5b - content-type: - - application/json; charset=utf-8 - date: - - Wed, 15 Apr 2020 18:51:43 GMT + - Thu, 30 Apr 2020 23:39:50 GMT strict-transport-security: - max-age=31536000; includeSubDomains; preload transfer-encoding: @@ -267,13 +197,13 @@ interactions: Connection: - keep-alive User-Agent: - - azsdk-python-ai-formrecognizer/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) Python/3.7.3 (Windows-10-10.0.18362-SP0) method: GET - uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/2e7d34f3-203a-44fa-815d-14e05bd6df97/analyzeresults/ff6221ad-3b1a-4bed-8223-05caf14cd270 + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/be9729be-247b-4f42-a7cc-aa0979a4c25b/analyzeresults/0556d8cb-28f5-4f6d-8a09-36a7d7768b30 response: body: - string: '{"status":"succeeded","createdDateTime":"2020-04-15T18:51:28Z","lastUpdatedDateTime":"2020-04-15T18:51:46Z","analyzeResult":{"version":"2.0.0","readResults":[{"page":1,"angle":0.12,"width":1700,"height":2200,"unit":"pixel","lines":[{"text":"Purchase + string: '{"status":"succeeded","createdDateTime":"2020-04-30T23:39:45Z","lastUpdatedDateTime":"2020-04-30T23:39:50Z","analyzeResult":{"version":"2.0.0","readResults":[{"page":1,"angle":0.12,"width":1700,"height":2200,"unit":"pixel","lines":[{"text":"Purchase Order","boundingBox":[141,140,348,140,348,168,141,168],"words":[{"text":"Purchase","boundingBox":[141,140,267,140,267,168,141,168]},{"text":"Order","boundingBox":[273,140,348,140,348,168,273,168]}]},{"text":"Hero Limited","boundingBox":[620,203,1078,203,1078,271,620,271],"words":[{"text":"Hero","boundingBox":[620,203,793,203,793,271,620,271]},{"text":"Limited","boundingBox":[811,203,1078,203,1078,271,811,271]}]},{"text":"Purchase Order","boundingBox":[1117,319,1551,319,1551,372,1117,372],"words":[{"text":"Purchase","boundingBox":[1117,319,1380,319,1380,372,1117,372]},{"text":"Order","boundingBox":[1397,319,1551,319,1551,372,1397,372]}]},{"text":"Company @@ -333,11 +263,11 @@ interactions: Swirl Marker","rowIndex":4,"columnIndex":0,"boundingBox":[171,1224,426,1224,426,1248,171,1248],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/0/lines/49/words/0","#/readResults/0/lines/49/words/1","#/readResults/0/lines/49/words/2"],"isHeader":false,"isFooter":false},{"text":"20","rowIndex":4,"columnIndex":1,"boundingBox":[863,1221,888,1221,888,1244,863,1244],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/0/lines/50/words/0"],"isHeader":false,"isFooter":false},{"text":"5.00","rowIndex":4,"columnIndex":2,"boundingBox":[1242,1222,1291,1222,1291,1248,1242,1248],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/0/lines/51/words/0"],"isHeader":false,"isFooter":false},{"text":"100.00","rowIndex":4,"columnIndex":3,"boundingBox":[1449,1225,1530,1225,1530,1248,1449,1248],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/0/lines/52/words/0"],"isHeader":false,"isFooter":false}]}],"clusterId":0}],"documentResults":[],"errors":[]}}' headers: apim-request-id: - - 46b9855f-5f14-4146-a195-d8985d7bf8a7 + - 1141cb3e-f373-43c4-ac19-ee67223312f8 content-type: - application/json; charset=utf-8 date: - - Wed, 15 Apr 2020 18:51:48 GMT + - Thu, 30 Apr 2020 23:39:55 GMT strict-transport-security: - max-age=31536000; includeSubDomains; preload transfer-encoding: @@ -345,7 +275,7 @@ interactions: x-content-type-options: - nosniff x-envoy-upstream-service-time: - - '97' + - '159' status: code: 200 message: OK diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_custom_forms_from_url.test_form_multipage_labeled.yaml b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_custom_forms_from_url.test_form_multipage_labeled.yaml new file mode 100644 index 000000000000..65e0641b5dd5 --- /dev/null +++ b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_custom_forms_from_url.test_form_multipage_labeled.yaml @@ -0,0 +1,227 @@ +interactions: +- request: + body: 'b''{"source": "containersasurl", "sourceFilter": {"prefix": "", "includeSubFolders": + false}, "useLabelFile": true}''' + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '300' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models + response: + body: + string: '' + headers: + apim-request-id: + - f27aeba3-2db2-40a4-8082-e91cfed7df60 + content-length: + - '0' + date: + - Thu, 30 Apr 2020 20:10:42 GMT + location: + - https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/6a491bef-b049-49d8-8603-c7b0624060d9 + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '120' + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/6a491bef-b049-49d8-8603-c7b0624060d9?includeKeys=true + response: + body: + string: '{"modelInfo":{"modelId":"6a491bef-b049-49d8-8603-c7b0624060d9","status":"ready","createdDateTime":"2020-04-30T20:10:42Z","lastUpdatedDateTime":"2020-04-30T20:10:44Z"},"trainResult":{"averageModelAccuracy":0.889,"trainingDocuments":[{"documentName":"multipage_invoice1.pdf","pages":3,"status":"succeeded"},{"documentName":"multipage_invoice2.pdf","pages":3,"status":"succeeded"},{"documentName":"multipage_invoice3.pdf","pages":3,"status":"succeeded"},{"documentName":"multipage_invoice4.pdf","pages":3,"status":"succeeded"},{"documentName":"multipage_invoice5.pdf","pages":3,"status":"succeeded"}],"fields":[{"fieldName":"Customer2","accuracy":1.0},{"fieldName":"CustomerAddress","accuracy":1.0},{"fieldName":"CustomerName","accuracy":1.0},{"fieldName":"CustomerPhoneNumber","accuracy":1.0},{"fieldName":"FirstItem","accuracy":1.0},{"fieldName":"FirstPrice","accuracy":1.0},{"fieldName":"FirstQuantity","accuracy":1.0},{"fieldName":"Merchant","accuracy":0.0},{"fieldName":"Merchant2","accuracy":0.0},{"fieldName":"MerchantAddress","accuracy":1.0},{"fieldName":"MerchantPhoneNumber","accuracy":1.0},{"fieldName":"Signature","accuracy":1.0},{"fieldName":"Signature2","accuracy":1.0},{"fieldName":"Subtotal","accuracy":1.0},{"fieldName":"Tax","accuracy":1.0},{"fieldName":"Tip","accuracy":1.0},{"fieldName":"Total","accuracy":1.0},{"fieldName":"Total2","accuracy":1.0}],"errors":[]}}' + headers: + apim-request-id: + - da3c5f19-8a4a-440a-9eba-761eb789798d + content-type: + - application/json; charset=utf-8 + date: + - Thu, 30 Apr 2020 20:10:47 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + transfer-encoding: + - chunked + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '122' + status: + code: 200 + message: OK +- request: + body: 'b''{"source": "blob_sas_url"}''' + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '241' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/6a491bef-b049-49d8-8603-c7b0624060d9/analyze?includeTextDetails=false + response: + body: + string: '' + headers: + apim-request-id: + - ad124c70-0016-492a-8213-dfb38bc4011d + content-length: + - '0' + date: + - Thu, 30 Apr 2020 20:10:51 GMT + operation-location: + - https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/6a491bef-b049-49d8-8603-c7b0624060d9/analyzeresults/14e769a4-2bf3-4ee0-8dbe-6a1956499d12 + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '169' + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/6a491bef-b049-49d8-8603-c7b0624060d9/analyzeresults/14e769a4-2bf3-4ee0-8dbe-6a1956499d12 + response: + body: + string: '{"status":"notStarted","createdDateTime":"2020-04-30T20:10:51Z","lastUpdatedDateTime":"2020-04-30T20:10:51Z"}' + headers: + apim-request-id: + - 26281812-fbd7-4e47-a759-da52832eee12 + content-type: + - application/json; charset=utf-8 + date: + - Thu, 30 Apr 2020 20:10:56 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + transfer-encoding: + - chunked + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '84' + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/6a491bef-b049-49d8-8603-c7b0624060d9/analyzeresults/14e769a4-2bf3-4ee0-8dbe-6a1956499d12 + response: + body: + string: '{"status":"notStarted","createdDateTime":"2020-04-30T20:10:51Z","lastUpdatedDateTime":"2020-04-30T20:10:51Z"}' + headers: + apim-request-id: + - cfb4de5f-95c5-4c72-919e-92a098091bd8 + content-type: + - application/json; charset=utf-8 + date: + - Thu, 30 Apr 2020 20:11:01 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + transfer-encoding: + - chunked + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '161' + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/6a491bef-b049-49d8-8603-c7b0624060d9/analyzeresults/14e769a4-2bf3-4ee0-8dbe-6a1956499d12 + response: + body: + string: '{"status":"succeeded","createdDateTime":"2020-04-30T20:10:51Z","lastUpdatedDateTime":"2020-04-30T20:11:03Z","analyzeResult":{"version":"2.0.0","readResults":[{"page":1,"language":"en","angle":0,"width":8.5,"height":11,"unit":"inch"},{"page":2,"language":"en","angle":0,"width":8.4967,"height":10.9967,"unit":"inch"},{"page":3,"language":"en","angle":0,"width":8.5,"height":11,"unit":"inch"}],"pageResults":[{"page":1,"tables":[{"rows":8,"columns":3,"cells":[{"rowIndex":0,"columnIndex":0,"text":"Item","boundingBox":[1.0037,2.9443,3.1681,2.9443,3.1681,3.1543,1.0037,3.1543]},{"rowIndex":0,"columnIndex":1,"text":"Quantity","boundingBox":[3.1681,2.9443,5.3353,2.9443,5.3353,3.1543,3.1681,3.1543]},{"rowIndex":0,"columnIndex":2,"text":"Price","boundingBox":[5.3353,2.9443,7.4997,2.9443,7.4997,3.1543,5.3353,3.1543]},{"rowIndex":1,"columnIndex":0,"text":"A","boundingBox":[1.0037,3.1543,3.1681,3.1543,3.1681,3.3643,1.0037,3.3643]},{"rowIndex":1,"columnIndex":1,"text":"1","boundingBox":[3.1681,3.1543,5.3353,3.1543,5.3353,3.3643,3.1681,3.3643]},{"rowIndex":1,"columnIndex":2,"text":"10.99","boundingBox":[5.3353,3.1543,7.4997,3.1543,7.4997,3.3643,5.3353,3.3643]},{"rowIndex":2,"columnIndex":0,"text":"B","boundingBox":[1.0037,3.3643,3.1681,3.3643,3.1681,3.5776,1.0037,3.5776]},{"rowIndex":2,"columnIndex":1,"text":"2","boundingBox":[3.1681,3.3643,5.3353,3.3643,5.3353,3.5776,3.1681,3.5776]},{"rowIndex":2,"columnIndex":2,"text":"14.67","boundingBox":[5.3353,3.3643,7.4997,3.3643,7.4997,3.5776,5.3353,3.5776]},{"rowIndex":3,"columnIndex":0,"text":"C","boundingBox":[1.0037,3.5776,3.1681,3.5776,3.1681,3.7876,1.0037,3.7876]},{"rowIndex":3,"columnIndex":1,"text":"4","boundingBox":[3.1681,3.5776,5.3353,3.5776,5.3353,3.7876,3.1681,3.7876]},{"rowIndex":3,"columnIndex":2,"text":"15.66","boundingBox":[5.3353,3.5776,7.4997,3.5776,7.4997,3.7876,5.3353,3.7876]},{"rowIndex":4,"columnIndex":0,"text":"D","boundingBox":[1.0037,3.7876,3.1681,3.7876,3.1681,3.9976,1.0037,3.9976]},{"rowIndex":4,"columnIndex":1,"text":"1","boundingBox":[3.1681,3.7876,5.3353,3.7876,5.3353,3.9976,3.1681,3.9976]},{"rowIndex":4,"columnIndex":2,"text":"12.00","boundingBox":[5.3353,3.7876,7.4997,3.7876,7.4997,3.9976,5.3353,3.9976]},{"rowIndex":5,"columnIndex":0,"text":"E","boundingBox":[1.0037,3.9976,3.1681,3.9976,3.1681,4.2081,1.0037,4.2081]},{"rowIndex":5,"columnIndex":1,"text":"4","boundingBox":[3.1681,3.9976,5.3353,3.9976,5.3353,4.2081,3.1681,4.2081]},{"rowIndex":5,"columnIndex":2,"text":"10.00","boundingBox":[5.3353,3.9976,7.4997,3.9976,7.4997,4.2081,5.3353,4.2081]},{"rowIndex":6,"columnIndex":0,"text":"F","boundingBox":[1.0037,4.2081,3.1681,4.2081,3.1681,4.4181,1.0037,4.4181]},{"rowIndex":6,"columnIndex":1,"text":"6","boundingBox":[3.1681,4.2081,5.3353,4.2081,5.3353,4.4181,3.1681,4.4181]},{"rowIndex":6,"columnIndex":2,"text":"12.00","boundingBox":[5.3353,4.2081,7.4997,4.2081,7.4997,4.4181,5.3353,4.4181]},{"rowIndex":7,"columnIndex":0,"text":"G","boundingBox":[1.0037,4.4181,3.1681,4.4181,3.1681,4.6281,1.0037,4.6281]},{"rowIndex":7,"columnIndex":1,"text":"8","boundingBox":[3.1681,4.4181,5.3353,4.4181,5.3353,4.6281,3.1681,4.6281]},{"rowIndex":7,"columnIndex":2,"text":"22.00","boundingBox":[5.3353,4.4181,7.4997,4.4181,7.4997,4.6281,5.3353,4.6281]}]}]},{"page":2,"tables":[]},{"page":3,"tables":[{"rows":8,"columns":3,"cells":[{"rowIndex":0,"columnIndex":0,"text":"Item","boundingBox":[1.0037,2.9443,3.1681,2.9443,3.1681,3.1543,1.0037,3.1543]},{"rowIndex":0,"columnIndex":1,"text":"Quantity","boundingBox":[3.1681,2.9443,5.3353,2.9443,5.3353,3.1543,3.1681,3.1543]},{"rowIndex":0,"columnIndex":2,"text":"Price","boundingBox":[5.3353,2.9443,7.4997,2.9443,7.4997,3.1543,5.3353,3.1543]},{"rowIndex":1,"columnIndex":0,"text":"A","boundingBox":[1.0037,3.1543,3.1681,3.1543,3.1681,3.3643,1.0037,3.3643]},{"rowIndex":1,"columnIndex":1,"text":"10","boundingBox":[3.1681,3.1543,5.3353,3.1543,5.3353,3.3643,3.1681,3.3643]},{"rowIndex":1,"columnIndex":2,"text":"100.99","boundingBox":[5.3353,3.1543,7.4997,3.1543,7.4997,3.3643,5.3353,3.3643]},{"rowIndex":2,"columnIndex":0,"text":"B","boundingBox":[1.0037,3.3643,3.1681,3.3643,3.1681,3.5776,1.0037,3.5776]},{"rowIndex":2,"columnIndex":1,"text":"20","boundingBox":[3.1681,3.3643,5.3353,3.3643,5.3353,3.5776,3.1681,3.5776]},{"rowIndex":2,"columnIndex":2,"text":"140.67","boundingBox":[5.3353,3.3643,7.4997,3.3643,7.4997,3.5776,5.3353,3.5776]},{"rowIndex":3,"columnIndex":0,"text":"C","boundingBox":[1.0037,3.5776,3.1681,3.5776,3.1681,3.7876,1.0037,3.7876]},{"rowIndex":3,"columnIndex":1,"text":"40","boundingBox":[3.1681,3.5776,5.3353,3.5776,5.3353,3.7876,3.1681,3.7876]},{"rowIndex":3,"columnIndex":2,"text":"150.66","boundingBox":[5.3353,3.5776,7.4997,3.5776,7.4997,3.7876,5.3353,3.7876]},{"rowIndex":4,"columnIndex":0,"text":"D","boundingBox":[1.0037,3.7876,3.1681,3.7876,3.1681,3.9976,1.0037,3.9976]},{"rowIndex":4,"columnIndex":1,"text":"10","boundingBox":[3.1681,3.7876,5.3353,3.7876,5.3353,3.9976,3.1681,3.9976]},{"rowIndex":4,"columnIndex":2,"text":"120.00","boundingBox":[5.3353,3.7876,7.4997,3.7876,7.4997,3.9976,5.3353,3.9976]},{"rowIndex":5,"columnIndex":0,"text":"E","boundingBox":[1.0037,3.9976,3.1681,3.9976,3.1681,4.2081,1.0037,4.2081]},{"rowIndex":5,"columnIndex":1,"text":"40","boundingBox":[3.1681,3.9976,5.3353,3.9976,5.3353,4.2081,3.1681,4.2081]},{"rowIndex":5,"columnIndex":2,"text":"100.00","boundingBox":[5.3353,3.9976,7.4997,3.9976,7.4997,4.2081,5.3353,4.2081]},{"rowIndex":6,"columnIndex":0,"text":"F","boundingBox":[1.0037,4.2081,3.1681,4.2081,3.1681,4.4181,1.0037,4.4181]},{"rowIndex":6,"columnIndex":1,"text":"60","boundingBox":[3.1681,4.2081,5.3353,4.2081,5.3353,4.4181,3.1681,4.4181]},{"rowIndex":6,"columnIndex":2,"text":"120.00","boundingBox":[5.3353,4.2081,7.4997,4.2081,7.4997,4.4181,5.3353,4.4181]},{"rowIndex":7,"columnIndex":0,"text":"G","boundingBox":[1.0037,4.4181,3.1681,4.4181,3.1681,4.6281,1.0037,4.6281]},{"rowIndex":7,"columnIndex":1,"text":"80","boundingBox":[3.1681,4.4181,5.3353,4.4181,5.3353,4.6281,3.1681,4.6281]},{"rowIndex":7,"columnIndex":2,"text":"220.00","boundingBox":[5.3353,4.4181,7.4997,4.4181,7.4997,4.6281,5.3353,4.6281]}]}]}],"documentResults":[{"docType":"custom:form","pageRange":[1,3],"fields":{"FirstItem":{"type":"string","valueString":"A","text":"A","page":1,"boundingBox":[1.085,3.21,1.175,3.21,1.175,3.3200000000000003,1.085,3.3200000000000003],"confidence":1.0},"Total2":{"type":"string","valueString":"4300.00","text":"4300.00","page":3,"boundingBox":[5.94,5.565,6.48,5.565,6.48,5.675,5.94,5.675],"confidence":1.0},"CustomerName":{"type":"string","valueString":"Bilbo + Baggins","text":"Bilbo Baggins","page":1,"boundingBox":[6.0150000000000006,1.45,6.8950000000000005,1.45,6.8950000000000005,1.595,6.0150000000000006,1.595],"confidence":1.0},"MerchantPhoneNumber":{"type":"string","valueString":"555-555-5555","text":"555-555-5555","page":1,"boundingBox":[0.885,2.29,1.81,2.29,1.81,2.395,0.885,2.395],"confidence":1.0},"FirstPrice":{"type":"string","valueString":"10.99","text":"10.99","page":1,"boundingBox":[5.425,3.21,5.78,3.21,5.78,3.3200000000000003,5.425,3.3200000000000003],"confidence":1.0},"Merchant":{"type":"string","valueString":"A","text":"A","page":1,"boundingBox":[1.67,1.125,1.7750000000000001,1.125,1.7750000000000001,1.245,1.67,1.245],"confidence":1.0},"Subtotal":{"type":"string","valueString":"300.00","text":"300.00","page":1,"boundingBox":[6.18,4.905,6.63,4.905,6.63,5.015,6.18,5.015],"confidence":1.0},"Total":{"type":"string","valueString":"430.00","text":"430.00","page":1,"boundingBox":[5.94,5.565,6.4,5.565,6.4,5.675,5.94,5.675],"confidence":1.0},"Tip":{"type":"string","valueString":"100.00","text":"100.00","page":1,"boundingBox":[5.8100000000000005,5.345,6.26,5.345,6.26,5.455,5.8100000000000005,5.455],"confidence":1.0},"Customer2":{"type":"string","valueString":"Frodo + Baggins","text":"Frodo Baggins","page":3,"boundingBox":[6.0150000000000006,1.45,6.95,1.45,6.95,1.595,6.0150000000000006,1.595],"confidence":1.0},"Tax":{"type":"string","valueString":"30.00","text":"30.00","page":1,"boundingBox":[5.835,5.125,6.2,5.125,6.2,5.235,5.835,5.235],"confidence":1.0},"CustomerPhoneNumber":{"type":"string","valueString":"555-555-5555","text":"555-555-5555","page":1,"boundingBox":[6.01,2.12,6.9350000000000005,2.12,6.9350000000000005,2.225,6.01,2.225],"confidence":1.0},"MerchantAddress":{"type":"string","valueString":"567 + Main St. Redmond, WA","text":"567 Main St. Redmond, WA","page":1,"boundingBox":[0.885,1.845,1.855,1.845,1.855,2.2,0.885,2.2],"confidence":1.0},"Signature2":{"type":"string","valueString":"Frodo + Baggins","text":"Frodo Baggins","page":3,"boundingBox":[2.09,6.655,3.09,6.655,3.09,6.8,2.09,6.8],"confidence":1.0},"Merchant2":{"type":"string","valueString":"Company","text":"Company","page":1,"boundingBox":[0.885,1.125,1.62,1.125,1.62,1.28,0.885,1.28],"confidence":1.0},"FirstQuantity":{"type":"string","valueString":"1","text":"1","page":1,"boundingBox":[3.2600000000000002,3.21,3.3200000000000003,3.21,3.3200000000000003,3.3200000000000003,3.2600000000000002,3.3200000000000003],"confidence":1.0},"CustomerAddress":{"type":"string","valueString":"123 + Hobbit Lane Redmond, WA","text":"123 Hobbit Lane Redmond, WA","page":1,"boundingBox":[6.0150000000000006,1.67,7.1000000000000005,1.67,7.1000000000000005,2.0300000000000002,6.0150000000000006,2.0300000000000002],"confidence":1.0},"Signature":{"type":"string","valueString":"Bilbo + Baggins","text":"Bilbo Baggins","page":1,"boundingBox":[2.09,6.655,3.04,6.655,3.04,6.8,2.09,6.8],"confidence":1.0}}}],"errors":[]}}' + headers: + apim-request-id: + - a66b892d-b8f3-4563-995c-9b947924b1a2 + content-type: + - application/json; charset=utf-8 + date: + - Thu, 30 Apr 2020 20:11:06 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + transfer-encoding: + - chunked + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '48' + status: + code: 200 + message: OK +version: 1 diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_custom_forms_from_url.test_form_multipage_unlabeled.yaml b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_custom_forms_from_url.test_form_multipage_unlabeled.yaml new file mode 100644 index 000000000000..e51425cb84ac --- /dev/null +++ b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_custom_forms_from_url.test_form_multipage_unlabeled.yaml @@ -0,0 +1,236 @@ +interactions: +- request: + body: 'b''{"source": "containersasurl", "sourceFilter": {"prefix": "", "includeSubFolders": + false}, "useLabelFile": false}''' + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '301' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models + response: + body: + string: '' + headers: + apim-request-id: + - 1116e4b7-8c1f-48ea-a08e-f6f69a25f682 + content-length: + - '0' + date: + - Thu, 30 Apr 2020 23:19:31 GMT + location: + - https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/880bf152-b00a-4748-b50b-c67e25df09fc + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '216' + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/880bf152-b00a-4748-b50b-c67e25df09fc?includeKeys=true + response: + body: + string: '{"modelInfo":{"modelId":"880bf152-b00a-4748-b50b-c67e25df09fc","status":"creating","createdDateTime":"2020-04-30T23:19:32Z","lastUpdatedDateTime":"2020-04-30T23:19:32Z"}}' + headers: + apim-request-id: + - 1b29396a-0b65-422c-a48d-76a63ccc31b0 + content-type: + - application/json; charset=utf-8 + date: + - Thu, 30 Apr 2020 23:19:36 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + transfer-encoding: + - chunked + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '119' + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/880bf152-b00a-4748-b50b-c67e25df09fc?includeKeys=true + response: + body: + string: '{"modelInfo":{"modelId":"880bf152-b00a-4748-b50b-c67e25df09fc","status":"creating","createdDateTime":"2020-04-30T23:19:32Z","lastUpdatedDateTime":"2020-04-30T23:19:32Z"}}' + headers: + apim-request-id: + - 9c109e29-812d-40b2-af43-443f07069349 + content-type: + - application/json; charset=utf-8 + date: + - Thu, 30 Apr 2020 23:19:41 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + transfer-encoding: + - chunked + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '267' + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/880bf152-b00a-4748-b50b-c67e25df09fc?includeKeys=true + response: + body: + string: '{"modelInfo":{"modelId":"880bf152-b00a-4748-b50b-c67e25df09fc","status":"ready","createdDateTime":"2020-04-30T23:19:32Z","lastUpdatedDateTime":"2020-04-30T23:19:43Z"},"keys":{"clusters":{"0":["Address:","Invoice + For:","Redmond, WA","Signature:","Subtotal:","Tax:","Tip:","Total:"]}},"trainResult":{"trainingDocuments":[{"documentName":"multipage_invoice1.pdf","pages":3,"errors":[],"status":"succeeded"},{"documentName":"multipage_invoice2.pdf","pages":3,"errors":[],"status":"succeeded"},{"documentName":"multipage_invoice3.pdf","pages":3,"errors":[],"status":"succeeded"},{"documentName":"multipage_invoice4.pdf","pages":3,"errors":[],"status":"succeeded"},{"documentName":"multipage_invoice5.pdf","pages":3,"errors":[],"status":"succeeded"}],"errors":[]}}' + headers: + apim-request-id: + - 0e068612-bdbc-42a4-b2ef-e0925c4b9601 + content-type: + - application/json; charset=utf-8 + date: + - Thu, 30 Apr 2020 23:19:46 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + transfer-encoding: + - chunked + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '70' + status: + code: 200 + message: OK +- request: + body: 'b''{"source": "blob_sas_url"}''' + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '241' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/880bf152-b00a-4748-b50b-c67e25df09fc/analyze?includeTextDetails=false + response: + body: + string: '' + headers: + apim-request-id: + - 7a884c58-1064-480b-a142-c24cadb29dd8 + content-length: + - '0' + date: + - Thu, 30 Apr 2020 23:19:50 GMT + operation-location: + - https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/880bf152-b00a-4748-b50b-c67e25df09fc/analyzeresults/420f94b0-37f4-48b4-aaae-867c7c46dc99 + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '101' + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/880bf152-b00a-4748-b50b-c67e25df09fc/analyzeresults/420f94b0-37f4-48b4-aaae-867c7c46dc99 + response: + body: + string: '{"status":"succeeded","createdDateTime":"2020-04-30T23:19:51Z","lastUpdatedDateTime":"2020-04-30T23:19:55Z","analyzeResult":{"version":"2.0.0","readResults":[{"page":1,"angle":0,"width":8.5,"height":11.0,"unit":"inch","lines":[]},{"page":3,"angle":0,"width":8.5,"height":11.0,"unit":"inch","lines":[]}],"pageResults":[{"page":1,"keyValuePairs":[{"key":{"text":"Invoice + For:","boundingBox":[6.0028,1.0431,7.0528,1.0431,7.0528,1.2667,6.0028,1.2667],"elements":null},"value":{"text":"Bilbo + Baggins 123 Hobbit Lane","boundingBox":[6.0028,1.4389,7.1083,1.4389,7.1083,1.8264,6.0028,1.8264],"elements":null},"confidence":1.0},{"key":{"text":"Address:","boundingBox":[0.8764,1.4681,1.5778,1.4681,1.5778,1.6625,0.8764,1.6625],"elements":null},"value":{"text":"567 + Main St.","boundingBox":[0.8764,1.8292,1.725,1.8292,1.725,1.9958,0.8764,1.9958],"elements":null},"confidence":1.0},{"key":{"text":"Redmond, + WA","boundingBox":[6.0028,1.8792,6.9819,1.8792,6.9819,2.0458,6.0028,2.0458],"elements":null},"value":{"text":"555-555-5555","boundingBox":[6.0028,2.0986,6.9472,2.0986,6.9472,2.2653,6.0028,2.2653],"elements":null},"confidence":1.0},{"key":{"text":"Redmond, + WA","boundingBox":[0.8764,2.0486,1.8569,2.0486,1.8569,2.2153,0.8764,2.2153],"elements":null},"value":{"text":"555-555-5555","boundingBox":[0.8764,2.2694,1.8222,2.2694,1.8222,2.4361,0.8764,2.4361],"elements":null},"confidence":0.29},{"key":{"text":"Subtotal:","boundingBox":[5.5028,4.8861,6.1347,4.8861,6.1347,5.0528,5.5028,5.0528],"elements":null},"value":{"text":"300.00","boundingBox":[6.1722,4.8861,6.6361,4.8861,6.6361,5.0528,6.1722,5.0528],"elements":null},"confidence":1.0},{"key":{"text":"Tax:","boundingBox":[5.5028,5.1069,5.7917,5.1069,5.7917,5.2736,5.5028,5.2736],"elements":null},"value":{"text":"30.00","boundingBox":[5.8292,5.1069,6.2069,5.1069,6.2069,5.2736,5.8292,5.2736],"elements":null},"confidence":1.0},{"key":{"text":"Tip:","boundingBox":[5.5028,5.3264,5.7611,5.3264,5.7611,5.4931,5.5028,5.4931],"elements":null},"value":{"text":"100.00","boundingBox":[5.7986,5.3264,6.2639,5.3264,6.2639,5.4931,5.7986,5.4931],"elements":null},"confidence":1.0},{"key":{"text":"Total:","boundingBox":[5.5028,5.5472,5.9014,5.5472,5.9014,5.7139,5.5028,5.7139],"elements":null},"value":{"text":"430.00","boundingBox":[5.9389,5.5472,6.4028,5.5472,6.4028,5.7139,5.9389,5.7139],"elements":null},"confidence":1.0},{"key":{"text":"Signature:","boundingBox":[1.0,6.6431,1.7083,6.6431,1.7083,6.8097,1.0,6.8097],"elements":null},"value":{"text":"____Bilbo + Baggins__________","boundingBox":[1.7472,6.6431,3.8333,6.6431,3.8333,6.8097,1.7472,6.8097],"elements":null},"confidence":1.0},{"key":{"text":"__Tokens__1","boundingBox":null,"elements":null},"value":{"text":"Company + A Invoice","boundingBox":[0.8764,1.1014,2.3875,1.1014,2.3875,1.2958,0.8764,1.2958],"elements":null},"confidence":1.0}],"tables":[{"rows":8,"columns":3,"cells":[{"text":"Item","rowIndex":0,"columnIndex":0,"boundingBox":[1.0806,2.9833,1.3958,2.9833,1.3958,3.15,1.0806,3.15],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":true,"isFooter":false},{"text":"Quantity","rowIndex":0,"columnIndex":1,"boundingBox":[3.2444,2.9833,3.8389,2.9833,3.8389,3.15,3.2444,3.15],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":true,"isFooter":false},{"text":"Price","rowIndex":0,"columnIndex":2,"boundingBox":[5.4083,2.9833,5.7458,2.9833,5.7458,3.15,5.4083,3.15],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":true,"isFooter":false},{"text":"A","rowIndex":1,"columnIndex":0,"boundingBox":[1.0806,3.1931,1.1764,3.1931,1.1764,3.3597,1.0806,3.3597],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"1","rowIndex":1,"columnIndex":1,"boundingBox":[3.2444,3.1931,3.3292,3.1931,3.3292,3.3597,3.2444,3.3597],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"10.99","rowIndex":1,"columnIndex":2,"boundingBox":[5.4083,3.1931,5.7875,3.1931,5.7875,3.3597,5.4083,3.3597],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"B","rowIndex":2,"columnIndex":0,"boundingBox":[1.0806,3.4056,1.1708,3.4056,1.1708,3.5722,1.0806,3.5722],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"2","rowIndex":2,"columnIndex":1,"boundingBox":[3.2444,3.4056,3.3292,3.4056,3.3292,3.5722,3.2444,3.5722],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"14.67","rowIndex":2,"columnIndex":2,"boundingBox":[5.4083,3.4056,5.7861,3.4056,5.7861,3.5722,5.4083,3.5722],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"C","rowIndex":3,"columnIndex":0,"boundingBox":[1.0806,3.6167,1.1694,3.6167,1.1694,3.7833,1.0806,3.7833],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"4","rowIndex":3,"columnIndex":1,"boundingBox":[3.2444,3.6167,3.3292,3.6167,3.3292,3.7833,3.2444,3.7833],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"15.66","rowIndex":3,"columnIndex":2,"boundingBox":[5.4083,3.6167,5.7861,3.6167,5.7861,3.7833,5.4083,3.7833],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"D","rowIndex":4,"columnIndex":0,"boundingBox":[1.0806,3.8264,1.1833,3.8264,1.1833,3.9931,1.0806,3.9931],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"1","rowIndex":4,"columnIndex":1,"boundingBox":[3.2444,3.8264,3.3292,3.8264,3.3292,3.9931,3.2444,3.9931],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"12.00","rowIndex":4,"columnIndex":2,"boundingBox":[5.4083,3.8264,5.7861,3.8264,5.7861,3.9931,5.4083,3.9931],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"E","rowIndex":5,"columnIndex":0,"boundingBox":[1.0806,4.0361,1.1611,4.0361,1.1611,4.2028,1.0806,4.2028],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"4","rowIndex":5,"columnIndex":1,"boundingBox":[3.2444,4.0361,3.3292,4.0361,3.3292,4.2028,3.2444,4.2028],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"10.00","rowIndex":5,"columnIndex":2,"boundingBox":[5.4083,4.0361,5.7875,4.0361,5.7875,4.2028,5.4083,4.2028],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"F","rowIndex":6,"columnIndex":0,"boundingBox":[1.0806,4.2458,1.1569,4.2458,1.1569,4.4125,1.0806,4.4125],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"6","rowIndex":6,"columnIndex":1,"boundingBox":[3.2444,4.2458,3.3292,4.2458,3.3292,4.4125,3.2444,4.4125],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"12.00","rowIndex":6,"columnIndex":2,"boundingBox":[5.4083,4.2458,5.7861,4.2458,5.7861,4.4125,5.4083,4.4125],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"G","rowIndex":7,"columnIndex":0,"boundingBox":[1.0806,4.4569,1.1861,4.4569,1.1861,4.6236,1.0806,4.6236],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"8","rowIndex":7,"columnIndex":1,"boundingBox":[3.2444,4.4569,3.3292,4.4569,3.3292,4.6236,3.2444,4.6236],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"22.00","rowIndex":7,"columnIndex":2,"boundingBox":[5.4083,4.4569,5.7875,4.4569,5.7875,4.6236,5.4083,4.6236],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false}]}],"clusterId":0},{"page":3,"keyValuePairs":[{"key":{"text":"Invoice + For:","boundingBox":[6.0028,1.0431,7.0528,1.0431,7.0528,1.2667,6.0028,1.2667],"elements":null},"value":{"text":"Frodo + Baggins 123 Hobbit Lane","boundingBox":[6.0028,1.4389,7.1083,1.4389,7.1083,1.8264,6.0028,1.8264],"elements":null},"confidence":1.0},{"key":{"text":"Address:","boundingBox":[0.8764,1.4681,1.5778,1.4681,1.5778,1.6625,0.8764,1.6625],"elements":null},"value":{"text":"567 + Main St.","boundingBox":[0.8764,1.8292,1.725,1.8292,1.725,1.9958,0.8764,1.9958],"elements":null},"confidence":1.0},{"key":{"text":"Redmond, + WA","boundingBox":[6.0028,1.8792,6.9819,1.8792,6.9819,2.0458,6.0028,2.0458],"elements":null},"value":{"text":"555-555-5555","boundingBox":[6.0028,2.0986,6.9472,2.0986,6.9472,2.2653,6.0028,2.2653],"elements":null},"confidence":1.0},{"key":{"text":"Redmond, + WA","boundingBox":[0.8764,2.0486,1.8569,2.0486,1.8569,2.2153,0.8764,2.2153],"elements":null},"value":{"text":"555-555-5555","boundingBox":[0.8764,2.2694,1.8222,2.2694,1.8222,2.4361,0.8764,2.4361],"elements":null},"confidence":0.29},{"key":{"text":"Subtotal:","boundingBox":[5.5028,4.8861,6.1347,4.8861,6.1347,5.0528,5.5028,5.0528],"elements":null},"value":{"text":"3000.00","boundingBox":[6.1722,4.8861,6.7208,4.8861,6.7208,5.0528,6.1722,5.0528],"elements":null},"confidence":1.0},{"key":{"text":"Tax:","boundingBox":[5.5028,5.1069,5.7917,5.1069,5.7917,5.2736,5.5028,5.2736],"elements":null},"value":{"text":"300.00","boundingBox":[5.8292,5.1069,6.2931,5.1069,6.2931,5.2736,5.8292,5.2736],"elements":null},"confidence":1.0},{"key":{"text":"Tip:","boundingBox":[5.5028,5.3264,5.7611,5.3264,5.7611,5.4931,5.5028,5.4931],"elements":null},"value":{"text":"1000.00","boundingBox":[5.7986,5.3264,6.3472,5.3264,6.3472,5.4931,5.7986,5.4931],"elements":null},"confidence":1.0},{"key":{"text":"Total:","boundingBox":[5.5028,5.5472,5.9014,5.5472,5.9014,5.7139,5.5028,5.7139],"elements":null},"value":{"text":"4300.00","boundingBox":[5.9389,5.5472,6.4875,5.5472,6.4875,5.7139,5.9389,5.7139],"elements":null},"confidence":1.0},{"key":{"text":"Signature:","boundingBox":[1.0,6.6431,1.7083,6.6431,1.7083,6.8097,1.0,6.8097],"elements":null},"value":{"text":"____Frodo + Baggins__________","boundingBox":[1.7472,6.6431,3.8833,6.6431,3.8833,6.8097,1.7472,6.8097],"elements":null},"confidence":1.0},{"key":{"text":"__Tokens__1","boundingBox":null,"elements":null},"value":{"text":"Company + B Invoice","boundingBox":[0.8764,1.1014,2.3833,1.1014,2.3833,1.2958,0.8764,1.2958],"elements":null},"confidence":1.0}],"tables":[{"rows":8,"columns":3,"cells":[{"text":"Item","rowIndex":0,"columnIndex":0,"boundingBox":[1.0806,2.9833,1.3958,2.9833,1.3958,3.15,1.0806,3.15],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":true,"isFooter":false},{"text":"Quantity","rowIndex":0,"columnIndex":1,"boundingBox":[3.2444,2.9833,3.8389,2.9833,3.8389,3.15,3.2444,3.15],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":true,"isFooter":false},{"text":"Price","rowIndex":0,"columnIndex":2,"boundingBox":[5.4083,2.9833,5.7458,2.9833,5.7458,3.15,5.4083,3.15],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":true,"isFooter":false},{"text":"A","rowIndex":1,"columnIndex":0,"boundingBox":[1.0806,3.1931,1.1764,3.1931,1.1764,3.3597,1.0806,3.3597],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"10","rowIndex":1,"columnIndex":1,"boundingBox":[3.2444,3.1931,3.4125,3.1931,3.4125,3.3597,3.2444,3.3597],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"100.99","rowIndex":1,"columnIndex":2,"boundingBox":[5.4083,3.1931,5.8708,3.1931,5.8708,3.3597,5.4083,3.3597],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"B","rowIndex":2,"columnIndex":0,"boundingBox":[1.0806,3.4056,1.1708,3.4056,1.1708,3.5722,1.0806,3.5722],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"20","rowIndex":2,"columnIndex":1,"boundingBox":[3.2444,3.4056,3.4125,3.4056,3.4125,3.5722,3.2444,3.5722],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"140.67","rowIndex":2,"columnIndex":2,"boundingBox":[5.4083,3.4056,5.8694,3.4056,5.8694,3.5722,5.4083,3.5722],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"C","rowIndex":3,"columnIndex":0,"boundingBox":[1.0806,3.6167,1.1694,3.6167,1.1694,3.7833,1.0806,3.7833],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"40","rowIndex":3,"columnIndex":1,"boundingBox":[3.2444,3.6167,3.4125,3.6167,3.4125,3.7833,3.2444,3.7833],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"150.66","rowIndex":3,"columnIndex":2,"boundingBox":[5.4083,3.6167,5.8694,3.6167,5.8694,3.7833,5.4083,3.7833],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"D","rowIndex":4,"columnIndex":0,"boundingBox":[1.0806,3.8264,1.1833,3.8264,1.1833,3.9931,1.0806,3.9931],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"10","rowIndex":4,"columnIndex":1,"boundingBox":[3.2444,3.8264,3.4125,3.8264,3.4125,3.9931,3.2444,3.9931],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"120.00","rowIndex":4,"columnIndex":2,"boundingBox":[5.4083,3.8264,5.8694,3.8264,5.8694,3.9931,5.4083,3.9931],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"E","rowIndex":5,"columnIndex":0,"boundingBox":[1.0806,4.0361,1.1611,4.0361,1.1611,4.2028,1.0806,4.2028],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"40","rowIndex":5,"columnIndex":1,"boundingBox":[3.2444,4.0361,3.4125,4.0361,3.4125,4.2028,3.2444,4.2028],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"100.00","rowIndex":5,"columnIndex":2,"boundingBox":[5.4083,4.0361,5.8708,4.0361,5.8708,4.2028,5.4083,4.2028],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"F","rowIndex":6,"columnIndex":0,"boundingBox":[1.0806,4.2458,1.1569,4.2458,1.1569,4.4125,1.0806,4.4125],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"60","rowIndex":6,"columnIndex":1,"boundingBox":[3.2444,4.2458,3.4125,4.2458,3.4125,4.4125,3.2444,4.4125],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"120.00","rowIndex":6,"columnIndex":2,"boundingBox":[5.4083,4.2458,5.8694,4.2458,5.8694,4.4125,5.4083,4.4125],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"G","rowIndex":7,"columnIndex":0,"boundingBox":[1.0806,4.4569,1.1861,4.4569,1.1861,4.6236,1.0806,4.6236],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"80","rowIndex":7,"columnIndex":1,"boundingBox":[3.2444,4.4569,3.4125,4.4569,3.4125,4.6236,3.2444,4.6236],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"220.00","rowIndex":7,"columnIndex":2,"boundingBox":[5.4083,4.4569,5.8708,4.4569,5.8708,4.6236,5.4083,4.6236],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false}]}],"clusterId":0}],"documentResults":[],"errors":[]}}' + headers: + apim-request-id: + - a405ecde-02ce-4099-b8d8-9354b69082b9 + content-type: + - application/json; charset=utf-8 + date: + - Thu, 30 Apr 2020 23:19:55 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + transfer-encoding: + - chunked + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '103' + status: + code: 200 + message: OK +version: 1 diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_custom_forms_from_url_async.test_custom_form_multipage_unlabeled.yaml b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_custom_forms_from_url_async.test_custom_form_multipage_unlabeled.yaml new file mode 100644 index 000000000000..cf598a685b53 --- /dev/null +++ b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_custom_forms_from_url_async.test_custom_form_multipage_unlabeled.yaml @@ -0,0 +1,164 @@ +interactions: +- request: + body: 'b''{"source": "containersasurl", "sourceFilter": {"prefix": "", "includeSubFolders": + false}, "useLabelFile": false}''' + headers: + Content-Length: + - '301' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models + response: + body: + string: '' + headers: + apim-request-id: 64a2d762-17d1-4521-a299-9de81447d154 + content-length: '0' + date: Thu, 30 Apr 2020 23:44:17 GMT + location: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/d74d4c00-2acd-4d31-9de2-ab186269b891 + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '175' + status: + code: 201 + message: Created + url: https://westus.api.cognitive.microsoft.com//formrecognizer/v2.0-preview/custom/models +- request: + body: null + headers: + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/d74d4c00-2acd-4d31-9de2-ab186269b891?includeKeys=true + response: + body: + string: '{"modelInfo":{"modelId":"d74d4c00-2acd-4d31-9de2-ab186269b891","status":"creating","createdDateTime":"2020-04-30T23:44:17Z","lastUpdatedDateTime":"2020-04-30T23:44:17Z"}}' + headers: + apim-request-id: c8cd387d-e01b-4e23-96f6-31c07de6c825 + content-type: application/json; charset=utf-8 + date: Thu, 30 Apr 2020 23:44:22 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + transfer-encoding: chunked + x-content-type-options: nosniff + x-envoy-upstream-service-time: '206' + status: + code: 200 + message: OK + url: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/d74d4c00-2acd-4d31-9de2-ab186269b891?includeKeys=true +- request: + body: null + headers: + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/d74d4c00-2acd-4d31-9de2-ab186269b891?includeKeys=true + response: + body: + string: '{"modelInfo":{"modelId":"d74d4c00-2acd-4d31-9de2-ab186269b891","status":"creating","createdDateTime":"2020-04-30T23:44:17Z","lastUpdatedDateTime":"2020-04-30T23:44:17Z"}}' + headers: + apim-request-id: dcaa43fd-f53e-4446-adf8-d14b2f3f22c2 + content-type: application/json; charset=utf-8 + date: Thu, 30 Apr 2020 23:44:27 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + transfer-encoding: chunked + x-content-type-options: nosniff + x-envoy-upstream-service-time: '120' + status: + code: 200 + message: OK + url: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/d74d4c00-2acd-4d31-9de2-ab186269b891?includeKeys=true +- request: + body: null + headers: + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/d74d4c00-2acd-4d31-9de2-ab186269b891?includeKeys=true + response: + body: + string: '{"modelInfo":{"modelId":"d74d4c00-2acd-4d31-9de2-ab186269b891","status":"ready","createdDateTime":"2020-04-30T23:44:17Z","lastUpdatedDateTime":"2020-04-30T23:44:28Z"},"keys":{"clusters":{"0":["Address:","Invoice + For:","Redmond, WA","Signature:","Subtotal:","Tax:","Tip:","Total:"]}},"trainResult":{"trainingDocuments":[{"documentName":"multipage_invoice1.pdf","pages":3,"errors":[],"status":"succeeded"},{"documentName":"multipage_invoice2.pdf","pages":3,"errors":[],"status":"succeeded"},{"documentName":"multipage_invoice3.pdf","pages":3,"errors":[],"status":"succeeded"},{"documentName":"multipage_invoice4.pdf","pages":3,"errors":[],"status":"succeeded"},{"documentName":"multipage_invoice5.pdf","pages":3,"errors":[],"status":"succeeded"}],"errors":[]}}' + headers: + apim-request-id: 68d10286-7c83-4619-b9d3-340ed9927a67 + content-type: application/json; charset=utf-8 + date: Thu, 30 Apr 2020 23:44:32 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + transfer-encoding: chunked + x-content-type-options: nosniff + x-envoy-upstream-service-time: '119' + status: + code: 200 + message: OK + url: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/d74d4c00-2acd-4d31-9de2-ab186269b891?includeKeys=true +- request: + body: 'b''{"source": "blob_sas_url"}''' + headers: + Content-Length: + - '241' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/d74d4c00-2acd-4d31-9de2-ab186269b891/analyze?includeTextDetails=false + response: + body: + string: '' + headers: + apim-request-id: 9855ecae-52e2-4840-9f99-04378236c36f + content-length: '0' + date: Thu, 30 Apr 2020 23:44:37 GMT + operation-location: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/d74d4c00-2acd-4d31-9de2-ab186269b891/analyzeresults/1d639fec-778e-4fec-a9ac-1e955ae9d2ab + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '116' + status: + code: 202 + message: Accepted + url: https://westus.api.cognitive.microsoft.com//formrecognizer/v2.0-preview/custom/models/d74d4c00-2acd-4d31-9de2-ab186269b891/analyze?includeTextDetails=false +- request: + body: null + headers: + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/d74d4c00-2acd-4d31-9de2-ab186269b891/analyzeresults/1d639fec-778e-4fec-a9ac-1e955ae9d2ab + response: + body: + string: '{"status":"succeeded","createdDateTime":"2020-04-30T23:44:37Z","lastUpdatedDateTime":"2020-04-30T23:44:41Z","analyzeResult":{"version":"2.0.0","readResults":[{"page":1,"angle":0,"width":8.5,"height":11.0,"unit":"inch","lines":[]},{"page":3,"angle":0,"width":8.5,"height":11.0,"unit":"inch","lines":[]}],"pageResults":[{"page":1,"keyValuePairs":[{"key":{"text":"Invoice + For:","boundingBox":[6.0028,1.0431,7.0528,1.0431,7.0528,1.2667,6.0028,1.2667],"elements":null},"value":{"text":"Bilbo + Baggins 123 Hobbit Lane","boundingBox":[6.0028,1.4389,7.1083,1.4389,7.1083,1.8264,6.0028,1.8264],"elements":null},"confidence":1.0},{"key":{"text":"Address:","boundingBox":[0.8764,1.4681,1.5778,1.4681,1.5778,1.6625,0.8764,1.6625],"elements":null},"value":{"text":"567 + Main St.","boundingBox":[0.8764,1.8292,1.725,1.8292,1.725,1.9958,0.8764,1.9958],"elements":null},"confidence":1.0},{"key":{"text":"Redmond, + WA","boundingBox":[6.0028,1.8792,6.9819,1.8792,6.9819,2.0458,6.0028,2.0458],"elements":null},"value":{"text":"555-555-5555","boundingBox":[6.0028,2.0986,6.9472,2.0986,6.9472,2.2653,6.0028,2.2653],"elements":null},"confidence":1.0},{"key":{"text":"Redmond, + WA","boundingBox":[0.8764,2.0486,1.8569,2.0486,1.8569,2.2153,0.8764,2.2153],"elements":null},"value":{"text":"555-555-5555","boundingBox":[0.8764,2.2694,1.8222,2.2694,1.8222,2.4361,0.8764,2.4361],"elements":null},"confidence":0.29},{"key":{"text":"Subtotal:","boundingBox":[5.5028,4.8861,6.1347,4.8861,6.1347,5.0528,5.5028,5.0528],"elements":null},"value":{"text":"300.00","boundingBox":[6.1722,4.8861,6.6361,4.8861,6.6361,5.0528,6.1722,5.0528],"elements":null},"confidence":1.0},{"key":{"text":"Tax:","boundingBox":[5.5028,5.1069,5.7917,5.1069,5.7917,5.2736,5.5028,5.2736],"elements":null},"value":{"text":"30.00","boundingBox":[5.8292,5.1069,6.2069,5.1069,6.2069,5.2736,5.8292,5.2736],"elements":null},"confidence":1.0},{"key":{"text":"Tip:","boundingBox":[5.5028,5.3264,5.7611,5.3264,5.7611,5.4931,5.5028,5.4931],"elements":null},"value":{"text":"100.00","boundingBox":[5.7986,5.3264,6.2639,5.3264,6.2639,5.4931,5.7986,5.4931],"elements":null},"confidence":1.0},{"key":{"text":"Total:","boundingBox":[5.5028,5.5472,5.9014,5.5472,5.9014,5.7139,5.5028,5.7139],"elements":null},"value":{"text":"430.00","boundingBox":[5.9389,5.5472,6.4028,5.5472,6.4028,5.7139,5.9389,5.7139],"elements":null},"confidence":1.0},{"key":{"text":"Signature:","boundingBox":[1.0,6.6431,1.7083,6.6431,1.7083,6.8097,1.0,6.8097],"elements":null},"value":{"text":"____Bilbo + Baggins__________","boundingBox":[1.7472,6.6431,3.8333,6.6431,3.8333,6.8097,1.7472,6.8097],"elements":null},"confidence":1.0},{"key":{"text":"__Tokens__1","boundingBox":null,"elements":null},"value":{"text":"Company + A Invoice","boundingBox":[0.8764,1.1014,2.3875,1.1014,2.3875,1.2958,0.8764,1.2958],"elements":null},"confidence":1.0}],"tables":[{"rows":8,"columns":3,"cells":[{"text":"Item","rowIndex":0,"columnIndex":0,"boundingBox":[1.0806,2.9833,1.3958,2.9833,1.3958,3.15,1.0806,3.15],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":true,"isFooter":false},{"text":"Quantity","rowIndex":0,"columnIndex":1,"boundingBox":[3.2444,2.9833,3.8389,2.9833,3.8389,3.15,3.2444,3.15],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":true,"isFooter":false},{"text":"Price","rowIndex":0,"columnIndex":2,"boundingBox":[5.4083,2.9833,5.7458,2.9833,5.7458,3.15,5.4083,3.15],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":true,"isFooter":false},{"text":"A","rowIndex":1,"columnIndex":0,"boundingBox":[1.0806,3.1931,1.1764,3.1931,1.1764,3.3597,1.0806,3.3597],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"1","rowIndex":1,"columnIndex":1,"boundingBox":[3.2444,3.1931,3.3292,3.1931,3.3292,3.3597,3.2444,3.3597],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"10.99","rowIndex":1,"columnIndex":2,"boundingBox":[5.4083,3.1931,5.7875,3.1931,5.7875,3.3597,5.4083,3.3597],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"B","rowIndex":2,"columnIndex":0,"boundingBox":[1.0806,3.4056,1.1708,3.4056,1.1708,3.5722,1.0806,3.5722],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"2","rowIndex":2,"columnIndex":1,"boundingBox":[3.2444,3.4056,3.3292,3.4056,3.3292,3.5722,3.2444,3.5722],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"14.67","rowIndex":2,"columnIndex":2,"boundingBox":[5.4083,3.4056,5.7861,3.4056,5.7861,3.5722,5.4083,3.5722],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"C","rowIndex":3,"columnIndex":0,"boundingBox":[1.0806,3.6167,1.1694,3.6167,1.1694,3.7833,1.0806,3.7833],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"4","rowIndex":3,"columnIndex":1,"boundingBox":[3.2444,3.6167,3.3292,3.6167,3.3292,3.7833,3.2444,3.7833],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"15.66","rowIndex":3,"columnIndex":2,"boundingBox":[5.4083,3.6167,5.7861,3.6167,5.7861,3.7833,5.4083,3.7833],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"D","rowIndex":4,"columnIndex":0,"boundingBox":[1.0806,3.8264,1.1833,3.8264,1.1833,3.9931,1.0806,3.9931],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"1","rowIndex":4,"columnIndex":1,"boundingBox":[3.2444,3.8264,3.3292,3.8264,3.3292,3.9931,3.2444,3.9931],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"12.00","rowIndex":4,"columnIndex":2,"boundingBox":[5.4083,3.8264,5.7861,3.8264,5.7861,3.9931,5.4083,3.9931],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"E","rowIndex":5,"columnIndex":0,"boundingBox":[1.0806,4.0361,1.1611,4.0361,1.1611,4.2028,1.0806,4.2028],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"4","rowIndex":5,"columnIndex":1,"boundingBox":[3.2444,4.0361,3.3292,4.0361,3.3292,4.2028,3.2444,4.2028],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"10.00","rowIndex":5,"columnIndex":2,"boundingBox":[5.4083,4.0361,5.7875,4.0361,5.7875,4.2028,5.4083,4.2028],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"F","rowIndex":6,"columnIndex":0,"boundingBox":[1.0806,4.2458,1.1569,4.2458,1.1569,4.4125,1.0806,4.4125],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"6","rowIndex":6,"columnIndex":1,"boundingBox":[3.2444,4.2458,3.3292,4.2458,3.3292,4.4125,3.2444,4.4125],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"12.00","rowIndex":6,"columnIndex":2,"boundingBox":[5.4083,4.2458,5.7861,4.2458,5.7861,4.4125,5.4083,4.4125],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"G","rowIndex":7,"columnIndex":0,"boundingBox":[1.0806,4.4569,1.1861,4.4569,1.1861,4.6236,1.0806,4.6236],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"8","rowIndex":7,"columnIndex":1,"boundingBox":[3.2444,4.4569,3.3292,4.4569,3.3292,4.6236,3.2444,4.6236],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"22.00","rowIndex":7,"columnIndex":2,"boundingBox":[5.4083,4.4569,5.7875,4.4569,5.7875,4.6236,5.4083,4.6236],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false}]}],"clusterId":0},{"page":3,"keyValuePairs":[{"key":{"text":"Invoice + For:","boundingBox":[6.0028,1.0431,7.0528,1.0431,7.0528,1.2667,6.0028,1.2667],"elements":null},"value":{"text":"Frodo + Baggins 123 Hobbit Lane","boundingBox":[6.0028,1.4389,7.1083,1.4389,7.1083,1.8264,6.0028,1.8264],"elements":null},"confidence":1.0},{"key":{"text":"Address:","boundingBox":[0.8764,1.4681,1.5778,1.4681,1.5778,1.6625,0.8764,1.6625],"elements":null},"value":{"text":"567 + Main St.","boundingBox":[0.8764,1.8292,1.725,1.8292,1.725,1.9958,0.8764,1.9958],"elements":null},"confidence":1.0},{"key":{"text":"Redmond, + WA","boundingBox":[6.0028,1.8792,6.9819,1.8792,6.9819,2.0458,6.0028,2.0458],"elements":null},"value":{"text":"555-555-5555","boundingBox":[6.0028,2.0986,6.9472,2.0986,6.9472,2.2653,6.0028,2.2653],"elements":null},"confidence":1.0},{"key":{"text":"Redmond, + WA","boundingBox":[0.8764,2.0486,1.8569,2.0486,1.8569,2.2153,0.8764,2.2153],"elements":null},"value":{"text":"555-555-5555","boundingBox":[0.8764,2.2694,1.8222,2.2694,1.8222,2.4361,0.8764,2.4361],"elements":null},"confidence":0.29},{"key":{"text":"Subtotal:","boundingBox":[5.5028,4.8861,6.1347,4.8861,6.1347,5.0528,5.5028,5.0528],"elements":null},"value":{"text":"3000.00","boundingBox":[6.1722,4.8861,6.7208,4.8861,6.7208,5.0528,6.1722,5.0528],"elements":null},"confidence":1.0},{"key":{"text":"Tax:","boundingBox":[5.5028,5.1069,5.7917,5.1069,5.7917,5.2736,5.5028,5.2736],"elements":null},"value":{"text":"300.00","boundingBox":[5.8292,5.1069,6.2931,5.1069,6.2931,5.2736,5.8292,5.2736],"elements":null},"confidence":1.0},{"key":{"text":"Tip:","boundingBox":[5.5028,5.3264,5.7611,5.3264,5.7611,5.4931,5.5028,5.4931],"elements":null},"value":{"text":"1000.00","boundingBox":[5.7986,5.3264,6.3472,5.3264,6.3472,5.4931,5.7986,5.4931],"elements":null},"confidence":1.0},{"key":{"text":"Total:","boundingBox":[5.5028,5.5472,5.9014,5.5472,5.9014,5.7139,5.5028,5.7139],"elements":null},"value":{"text":"4300.00","boundingBox":[5.9389,5.5472,6.4875,5.5472,6.4875,5.7139,5.9389,5.7139],"elements":null},"confidence":1.0},{"key":{"text":"Signature:","boundingBox":[1.0,6.6431,1.7083,6.6431,1.7083,6.8097,1.0,6.8097],"elements":null},"value":{"text":"____Frodo + Baggins__________","boundingBox":[1.7472,6.6431,3.8833,6.6431,3.8833,6.8097,1.7472,6.8097],"elements":null},"confidence":1.0},{"key":{"text":"__Tokens__1","boundingBox":null,"elements":null},"value":{"text":"Company + B Invoice","boundingBox":[0.8764,1.1014,2.3833,1.1014,2.3833,1.2958,0.8764,1.2958],"elements":null},"confidence":1.0}],"tables":[{"rows":8,"columns":3,"cells":[{"text":"Item","rowIndex":0,"columnIndex":0,"boundingBox":[1.0806,2.9833,1.3958,2.9833,1.3958,3.15,1.0806,3.15],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":true,"isFooter":false},{"text":"Quantity","rowIndex":0,"columnIndex":1,"boundingBox":[3.2444,2.9833,3.8389,2.9833,3.8389,3.15,3.2444,3.15],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":true,"isFooter":false},{"text":"Price","rowIndex":0,"columnIndex":2,"boundingBox":[5.4083,2.9833,5.7458,2.9833,5.7458,3.15,5.4083,3.15],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":true,"isFooter":false},{"text":"A","rowIndex":1,"columnIndex":0,"boundingBox":[1.0806,3.1931,1.1764,3.1931,1.1764,3.3597,1.0806,3.3597],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"10","rowIndex":1,"columnIndex":1,"boundingBox":[3.2444,3.1931,3.4125,3.1931,3.4125,3.3597,3.2444,3.3597],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"100.99","rowIndex":1,"columnIndex":2,"boundingBox":[5.4083,3.1931,5.8708,3.1931,5.8708,3.3597,5.4083,3.3597],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"B","rowIndex":2,"columnIndex":0,"boundingBox":[1.0806,3.4056,1.1708,3.4056,1.1708,3.5722,1.0806,3.5722],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"20","rowIndex":2,"columnIndex":1,"boundingBox":[3.2444,3.4056,3.4125,3.4056,3.4125,3.5722,3.2444,3.5722],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"140.67","rowIndex":2,"columnIndex":2,"boundingBox":[5.4083,3.4056,5.8694,3.4056,5.8694,3.5722,5.4083,3.5722],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"C","rowIndex":3,"columnIndex":0,"boundingBox":[1.0806,3.6167,1.1694,3.6167,1.1694,3.7833,1.0806,3.7833],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"40","rowIndex":3,"columnIndex":1,"boundingBox":[3.2444,3.6167,3.4125,3.6167,3.4125,3.7833,3.2444,3.7833],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"150.66","rowIndex":3,"columnIndex":2,"boundingBox":[5.4083,3.6167,5.8694,3.6167,5.8694,3.7833,5.4083,3.7833],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"D","rowIndex":4,"columnIndex":0,"boundingBox":[1.0806,3.8264,1.1833,3.8264,1.1833,3.9931,1.0806,3.9931],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"10","rowIndex":4,"columnIndex":1,"boundingBox":[3.2444,3.8264,3.4125,3.8264,3.4125,3.9931,3.2444,3.9931],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"120.00","rowIndex":4,"columnIndex":2,"boundingBox":[5.4083,3.8264,5.8694,3.8264,5.8694,3.9931,5.4083,3.9931],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"E","rowIndex":5,"columnIndex":0,"boundingBox":[1.0806,4.0361,1.1611,4.0361,1.1611,4.2028,1.0806,4.2028],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"40","rowIndex":5,"columnIndex":1,"boundingBox":[3.2444,4.0361,3.4125,4.0361,3.4125,4.2028,3.2444,4.2028],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"100.00","rowIndex":5,"columnIndex":2,"boundingBox":[5.4083,4.0361,5.8708,4.0361,5.8708,4.2028,5.4083,4.2028],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"F","rowIndex":6,"columnIndex":0,"boundingBox":[1.0806,4.2458,1.1569,4.2458,1.1569,4.4125,1.0806,4.4125],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"60","rowIndex":6,"columnIndex":1,"boundingBox":[3.2444,4.2458,3.4125,4.2458,3.4125,4.4125,3.2444,4.4125],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"120.00","rowIndex":6,"columnIndex":2,"boundingBox":[5.4083,4.2458,5.8694,4.2458,5.8694,4.4125,5.4083,4.4125],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"G","rowIndex":7,"columnIndex":0,"boundingBox":[1.0806,4.4569,1.1861,4.4569,1.1861,4.6236,1.0806,4.6236],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"80","rowIndex":7,"columnIndex":1,"boundingBox":[3.2444,4.4569,3.4125,4.4569,3.4125,4.6236,3.2444,4.6236],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false},{"text":"220.00","rowIndex":7,"columnIndex":2,"boundingBox":[5.4083,4.4569,5.8708,4.4569,5.8708,4.6236,5.4083,4.6236],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":null,"isHeader":false,"isFooter":false}]}],"clusterId":0}],"documentResults":[],"errors":[]}}' + headers: + apim-request-id: 91edbdd4-83bf-4178-8151-46458999eb2c + content-type: application/json; charset=utf-8 + date: Thu, 30 Apr 2020 23:44:46 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + transfer-encoding: chunked + x-content-type-options: nosniff + x-envoy-upstream-service-time: '5113' + status: + code: 200 + message: OK + url: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/d74d4c00-2acd-4d31-9de2-ab186269b891/analyzeresults/1d639fec-778e-4fec-a9ac-1e955ae9d2ab +version: 1 diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_custom_forms_from_url_async.test_form_bad_url.yaml b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_custom_forms_from_url_async.test_form_bad_url.yaml new file mode 100644 index 000000000000..eafc9458673b --- /dev/null +++ b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_custom_forms_from_url_async.test_form_bad_url.yaml @@ -0,0 +1,105 @@ +interactions: +- request: + body: 'b''{"source": "containersasurl", "sourceFilter": {"prefix": "", "includeSubFolders": + false}, "useLabelFile": true}''' + headers: + Content-Length: + - '317' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models + response: + body: + string: '' + headers: + apim-request-id: 9df27d38-34ff-4074-8dba-751fcaf83d38 + content-length: '0' + date: Tue, 28 Apr 2020 22:09:36 GMT + location: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/ca0ad905-6aa8-40a5-ac1c-69477d06fd12 + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '212' + status: + code: 201 + message: Created + url: https://westus.api.cognitive.microsoft.com//formrecognizer/v2.0-preview/custom/models +- request: + body: null + headers: + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/ca0ad905-6aa8-40a5-ac1c-69477d06fd12?includeKeys=true + response: + body: + string: '{"modelInfo":{"modelId":"ca0ad905-6aa8-40a5-ac1c-69477d06fd12","status":"ready","createdDateTime":"2020-04-28T22:09:37Z","lastUpdatedDateTime":"2020-04-28T22:09:39Z"},"trainResult":{"averageModelAccuracy":0.973,"trainingDocuments":[{"documentName":"Form_1.jpg","pages":1,"status":"succeeded"},{"documentName":"Form_2.jpg","pages":1,"status":"succeeded"},{"documentName":"Form_3.jpg","pages":1,"status":"succeeded"},{"documentName":"Form_4.jpg","pages":1,"status":"succeeded"},{"documentName":"Form_5.jpg","pages":1,"status":"succeeded"}],"fields":[{"fieldName":"CompanyAddress","accuracy":0.8},{"fieldName":"CompanyName","accuracy":1.0},{"fieldName":"CompanyPhoneNumber","accuracy":1.0},{"fieldName":"DatedAs","accuracy":1.0},{"fieldName":"Email","accuracy":0.8},{"fieldName":"Merchant","accuracy":1.0},{"fieldName":"PhoneNumber","accuracy":1.0},{"fieldName":"PurchaseOrderNumber","accuracy":1.0},{"fieldName":"Quantity","accuracy":1.0},{"fieldName":"Signature","accuracy":1.0},{"fieldName":"Subtotal","accuracy":1.0},{"fieldName":"Tax","accuracy":1.0},{"fieldName":"Total","accuracy":1.0},{"fieldName":"VendorName","accuracy":1.0},{"fieldName":"Website","accuracy":1.0}],"errors":[]}}' + headers: + apim-request-id: c826db40-8e38-4b6b-99d6-850a9b08ca3c + content-type: application/json; charset=utf-8 + date: Tue, 28 Apr 2020 22:09:41 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + transfer-encoding: chunked + x-content-type-options: nosniff + x-envoy-upstream-service-time: '127' + status: + code: 200 + message: OK + url: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/ca0ad905-6aa8-40a5-ac1c-69477d06fd12?includeKeys=true +- request: + body: '{"source": "https://badurl.jpg"}' + headers: + Content-Length: + - '32' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/ca0ad905-6aa8-40a5-ac1c-69477d06fd12/analyze?includeTextDetails=false + response: + body: + string: '' + headers: + apim-request-id: ba29b766-5436-48ff-ad13-9a9ba1167abc + content-length: '0' + date: Tue, 28 Apr 2020 22:09:42 GMT + operation-location: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/ca0ad905-6aa8-40a5-ac1c-69477d06fd12/analyzeresults/83bc96a7-1bec-4956-a259-c3fd0fc06f2b + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '168' + status: + code: 202 + message: Accepted + url: https://westus.api.cognitive.microsoft.com//formrecognizer/v2.0-preview/custom/models/ca0ad905-6aa8-40a5-ac1c-69477d06fd12/analyze?includeTextDetails=false +- request: + body: null + headers: + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/ca0ad905-6aa8-40a5-ac1c-69477d06fd12/analyzeresults/83bc96a7-1bec-4956-a259-c3fd0fc06f2b + response: + body: + string: '{"status":"failed","createdDateTime":"2020-04-28T22:09:43Z","lastUpdatedDateTime":"2020-04-28T22:09:43Z","analyzeResult":{"version":"2.0.0","errors":[{"code":"3003","message":"OCR + extraction error: [Wrong response code: FailedToDownloadImage. Message: Failed + to download image from input URL..]"}]}}' + headers: + apim-request-id: 37d11226-e658-413d-b991-c455b77659f1 + content-type: application/json; charset=utf-8 + date: Tue, 28 Apr 2020 22:09:47 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + transfer-encoding: chunked + x-content-type-options: nosniff + x-envoy-upstream-service-time: '101' + status: + code: 200 + message: OK + url: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/ca0ad905-6aa8-40a5-ac1c-69477d06fd12/analyzeresults/83bc96a7-1bec-4956-a259-c3fd0fc06f2b +version: 1 diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_custom_forms_from_url_async.test_fr_lbld_transform.yaml b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_custom_forms_from_url_async.test_form_labeled_transform.yaml similarity index 79% rename from sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_custom_forms_from_url_async.test_fr_lbld_transform.yaml rename to sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_custom_forms_from_url_async.test_form_labeled_transform.yaml index ebb76661577a..47c2e2eaf8b0 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_custom_forms_from_url_async.test_fr_lbld_transform.yaml +++ b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_custom_forms_from_url_async.test_form_labeled_transform.yaml @@ -4,11 +4,11 @@ interactions: false}, "useLabelFile": true}''' headers: Content-Length: - - '318' + - '287' Content-Type: - application/json User-Agent: - - azsdk-python-ai-formrecognizer/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) Python/3.7.3 (Windows-10-10.0.18362-SP0) method: POST uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models @@ -16,13 +16,13 @@ interactions: body: string: '' headers: - apim-request-id: a29f2af9-a6fc-453e-bd82-aaa4f041ca54 + apim-request-id: d4f713d2-4b0a-4099-a3ff-c846efa555aa content-length: '0' - date: Wed, 15 Apr 2020 18:56:50 GMT - location: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/0a28a255-b07d-4e4b-8d5f-ba9a82f92722 + date: Thu, 30 Apr 2020 23:48:03 GMT + location: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/00407048-3545-42b9-ab78-e945df6cc20c strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '122' + x-envoy-upstream-service-time: '227' status: code: 201 message: Created @@ -31,25 +31,48 @@ interactions: body: null headers: User-Agent: - - azsdk-python-ai-formrecognizer/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) Python/3.7.3 (Windows-10-10.0.18362-SP0) method: GET - uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/0a28a255-b07d-4e4b-8d5f-ba9a82f92722?includeKeys=true + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/00407048-3545-42b9-ab78-e945df6cc20c?includeKeys=true response: body: - string: '{"modelInfo":{"modelId":"0a28a255-b07d-4e4b-8d5f-ba9a82f92722","status":"ready","createdDateTime":"2020-04-15T18:56:50Z","lastUpdatedDateTime":"2020-04-15T18:56:53Z"},"trainResult":{"averageModelAccuracy":0.973,"trainingDocuments":[{"documentName":"Form_1.jpg","pages":1,"status":"succeeded"},{"documentName":"Form_2.jpg","pages":1,"status":"succeeded"},{"documentName":"Form_3.jpg","pages":1,"status":"succeeded"},{"documentName":"Form_4.jpg","pages":1,"status":"succeeded"},{"documentName":"Form_5.jpg","pages":1,"status":"succeeded"}],"fields":[{"fieldName":"CompanyAddress","accuracy":0.8},{"fieldName":"CompanyName","accuracy":1.0},{"fieldName":"CompanyPhoneNumber","accuracy":1.0},{"fieldName":"DatedAs","accuracy":1.0},{"fieldName":"Email","accuracy":0.8},{"fieldName":"Merchant","accuracy":1.0},{"fieldName":"PhoneNumber","accuracy":1.0},{"fieldName":"PurchaseOrderNumber","accuracy":1.0},{"fieldName":"Quantity","accuracy":1.0},{"fieldName":"Signature","accuracy":1.0},{"fieldName":"Subtotal","accuracy":1.0},{"fieldName":"Tax","accuracy":1.0},{"fieldName":"Total","accuracy":1.0},{"fieldName":"VendorName","accuracy":1.0},{"fieldName":"Website","accuracy":1.0}],"errors":[]}}' + string: '{"modelInfo":{"modelId":"00407048-3545-42b9-ab78-e945df6cc20c","status":"creating","createdDateTime":"2020-04-30T23:48:03Z","lastUpdatedDateTime":"2020-04-30T23:48:03Z"}}' headers: - apim-request-id: 56b2a6e9-1c22-47c7-920d-a0db3bf23da2 + apim-request-id: 9b5a9161-a8e2-416e-8e39-119d09b8b408 content-type: application/json; charset=utf-8 - date: Wed, 15 Apr 2020 18:56:55 GMT + date: Thu, 30 Apr 2020 23:48:08 GMT strict-transport-security: max-age=31536000; includeSubDomains; preload transfer-encoding: chunked x-content-type-options: nosniff - x-envoy-upstream-service-time: '48' + x-envoy-upstream-service-time: '80' status: code: 200 message: OK - url: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/0a28a255-b07d-4e4b-8d5f-ba9a82f92722?includeKeys=true + url: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/00407048-3545-42b9-ab78-e945df6cc20c?includeKeys=true +- request: + body: null + headers: + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/00407048-3545-42b9-ab78-e945df6cc20c?includeKeys=true + response: + body: + string: '{"modelInfo":{"modelId":"00407048-3545-42b9-ab78-e945df6cc20c","status":"ready","createdDateTime":"2020-04-30T23:48:03Z","lastUpdatedDateTime":"2020-04-30T23:48:09Z"},"trainResult":{"averageModelAccuracy":0.973,"trainingDocuments":[{"documentName":"Form_1.jpg","pages":1,"status":"succeeded"},{"documentName":"Form_2.jpg","pages":1,"status":"succeeded"},{"documentName":"Form_3.jpg","pages":1,"status":"succeeded"},{"documentName":"Form_4.jpg","pages":1,"status":"succeeded"},{"documentName":"Form_5.jpg","pages":1,"status":"succeeded"}],"fields":[{"fieldName":"CompanyAddress","accuracy":0.8},{"fieldName":"CompanyName","accuracy":1.0},{"fieldName":"CompanyPhoneNumber","accuracy":1.0},{"fieldName":"DatedAs","accuracy":1.0},{"fieldName":"Email","accuracy":0.8},{"fieldName":"Merchant","accuracy":1.0},{"fieldName":"PhoneNumber","accuracy":1.0},{"fieldName":"PurchaseOrderNumber","accuracy":1.0},{"fieldName":"Quantity","accuracy":1.0},{"fieldName":"Signature","accuracy":1.0},{"fieldName":"Subtotal","accuracy":1.0},{"fieldName":"Tax","accuracy":1.0},{"fieldName":"Total","accuracy":1.0},{"fieldName":"VendorName","accuracy":1.0},{"fieldName":"Website","accuracy":1.0}],"errors":[]}}' + headers: + apim-request-id: 79ab0de5-cae9-46ce-b490-016712488dff + content-type: application/json; charset=utf-8 + date: Thu, 30 Apr 2020 23:48:14 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + transfer-encoding: chunked + x-content-type-options: nosniff + x-envoy-upstream-service-time: '675' + status: + code: 200 + message: OK + url: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/00407048-3545-42b9-ab78-e945df6cc20c?includeKeys=true - request: body: '{"source": "https://raw.githubusercontent.com/Azure/azure-sdk-for-python/master/sdk/formrecognizer/azure-ai-formrecognizer/tests/sample_forms/forms/Form_1.jpg"}' headers: @@ -58,36 +81,59 @@ interactions: Content-Type: - application/json User-Agent: - - azsdk-python-ai-formrecognizer/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) Python/3.7.3 (Windows-10-10.0.18362-SP0) method: POST - uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/0a28a255-b07d-4e4b-8d5f-ba9a82f92722/analyze?includeTextDetails=true + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/00407048-3545-42b9-ab78-e945df6cc20c/analyze?includeTextDetails=true response: body: string: '' headers: - apim-request-id: 099c730f-df34-4085-8846-67cf9d8ec8e5 + apim-request-id: 18d9e249-3939-4f7d-a458-319b18cbe3d7 content-length: '0' - date: Wed, 15 Apr 2020 18:56:55 GMT - operation-location: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/0a28a255-b07d-4e4b-8d5f-ba9a82f92722/analyzeresults/e52a13b4-68db-46f2-b4ca-9ac62a5c8fbe + date: Thu, 30 Apr 2020 23:48:14 GMT + operation-location: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/00407048-3545-42b9-ab78-e945df6cc20c/analyzeresults/5079cfbc-e345-4c27-af20-8b4f1881b5bd strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '337' + x-envoy-upstream-service-time: '81' status: code: 202 message: Accepted - url: https://westus.api.cognitive.microsoft.com//formrecognizer/v2.0-preview/custom/models/0a28a255-b07d-4e4b-8d5f-ba9a82f92722/analyze?includeTextDetails=true + url: https://westus.api.cognitive.microsoft.com//formrecognizer/v2.0-preview/custom/models/00407048-3545-42b9-ab78-e945df6cc20c/analyze?includeTextDetails=true +- request: + body: null + headers: + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/00407048-3545-42b9-ab78-e945df6cc20c/analyzeresults/5079cfbc-e345-4c27-af20-8b4f1881b5bd + response: + body: + string: '{"status":"notStarted","createdDateTime":"2020-04-30T23:48:14Z","lastUpdatedDateTime":"2020-04-30T23:48:14Z"}' + headers: + apim-request-id: 75b8b3af-3990-4332-8b59-66b47424d4a9 + content-type: application/json; charset=utf-8 + date: Thu, 30 Apr 2020 23:48:19 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + transfer-encoding: chunked + x-content-type-options: nosniff + x-envoy-upstream-service-time: '44' + status: + code: 200 + message: OK + url: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/00407048-3545-42b9-ab78-e945df6cc20c/analyzeresults/5079cfbc-e345-4c27-af20-8b4f1881b5bd - request: body: null headers: User-Agent: - - azsdk-python-ai-formrecognizer/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) Python/3.7.3 (Windows-10-10.0.18362-SP0) method: GET - uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/0a28a255-b07d-4e4b-8d5f-ba9a82f92722/analyzeresults/e52a13b4-68db-46f2-b4ca-9ac62a5c8fbe + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/00407048-3545-42b9-ab78-e945df6cc20c/analyzeresults/5079cfbc-e345-4c27-af20-8b4f1881b5bd response: body: - string: '{"status":"succeeded","createdDateTime":"2020-04-15T18:56:56Z","lastUpdatedDateTime":"2020-04-15T18:57:00Z","analyzeResult":{"version":"2.0.0","readResults":[{"page":1,"language":"en","angle":0,"width":1700,"height":2200,"unit":"pixel","lines":[{"language":"en","boundingBox":[137,140,351,140,351,167,137,166],"text":"Purchase + string: '{"status":"succeeded","createdDateTime":"2020-04-30T23:48:14Z","lastUpdatedDateTime":"2020-04-30T23:48:22Z","analyzeResult":{"version":"2.0.0","readResults":[{"page":1,"language":"en","angle":0,"width":1700,"height":2200,"unit":"pixel","lines":[{"language":"en","boundingBox":[137,140,351,140,351,167,137,166],"text":"Purchase Order","words":[{"boundingBox":[137,140,263,140,263,168,138,166],"text":"Purchase","confidence":0.959},{"boundingBox":[271,140,351,140,351,168,272,168],"text":"Order","confidence":0.959}]},{"language":"en","boundingBox":[620,204,1073,201,1074,264,620,266],"text":"Hero Limited","words":[{"boundingBox":[622,207,788,204,787,266,621,266],"text":"Hero","confidence":0.959},{"boundingBox":[811,204,1075,202,1075,266,811,266],"text":"Limited","confidence":0.959}]},{"language":"en","boundingBox":[165,351,529,350,530,377,165,379],"text":"Company Phone: 555-348-6512","words":[{"boundingBox":[167,352,275,351,275,379,167,379],"text":"Company","confidence":0.959},{"boundingBox":[281,351,362,351,362,378,280,379],"text":"Phone:","confidence":0.958},{"boundingBox":[367,351,529,352,529,374,367,378],"text":"555-348-6512","confidence":0.946}]},{"language":"en","boundingBox":[1114,320,1551,320,1551,370,1114,370],"text":"Purchase @@ -122,23 +168,23 @@ interactions: Price","boundingBox":[1072,1038,1309,1038,1309,1087,1072,1087],"elements":["#/readResults/0/lines/23/words/0","#/readResults/0/lines/23/words/1"]},{"rowIndex":0,"columnIndex":3,"text":"Total","boundingBox":[1309,1038,1544,1038,1544,1087,1309,1087],"elements":["#/readResults/0/lines/24/words/0"]},{"rowIndex":1,"columnIndex":0,"text":"Bindings","boundingBox":[156,1087,847,1087,847,1128,156,1128],"elements":["#/readResults/0/lines/25/words/0"]},{"rowIndex":1,"columnIndex":1,"text":"20","boundingBox":[847,1087,1072,1087,1072,1128,847,1128],"elements":["#/readResults/0/lines/26/words/0"]},{"rowIndex":1,"columnIndex":2,"text":"1.00","boundingBox":[1072,1087,1309,1087,1309,1128,1072,1128],"elements":["#/readResults/0/lines/27/words/0"]},{"rowIndex":1,"columnIndex":3,"text":"20.00","boundingBox":[1309,1087,1544,1087,1544,1128,1309,1128],"elements":["#/readResults/0/lines/28/words/0"]},{"rowIndex":2,"columnIndex":0,"text":"Covers Small","boundingBox":[156,1128,847,1128,847,1172,156,1172],"elements":["#/readResults/0/lines/29/words/0","#/readResults/0/lines/29/words/1"]},{"rowIndex":2,"columnIndex":1,"text":"20","boundingBox":[847,1128,1072,1128,1072,1172,847,1172],"elements":["#/readResults/0/lines/30/words/0"]},{"rowIndex":2,"columnIndex":2,"text":"1.00","boundingBox":[1072,1128,1309,1128,1309,1172,1072,1172],"elements":["#/readResults/0/lines/31/words/0"]},{"rowIndex":2,"columnIndex":3,"text":"20.00","boundingBox":[1309,1128,1544,1128,1544,1172,1309,1172],"elements":["#/readResults/0/lines/32/words/0"]},{"rowIndex":3,"columnIndex":0,"text":"Feather Bookmark","boundingBox":[156,1172,847,1172,847,1216,156,1216],"elements":["#/readResults/0/lines/33/words/0","#/readResults/0/lines/33/words/1"]},{"rowIndex":3,"columnIndex":1,"text":"20","boundingBox":[847,1172,1072,1172,1072,1216,847,1216],"elements":["#/readResults/0/lines/34/words/0"]},{"rowIndex":3,"columnIndex":2,"text":"5,00","boundingBox":[1072,1172,1309,1172,1309,1216,1072,1216],"elements":["#/readResults/0/lines/35/words/0"]},{"rowIndex":3,"columnIndex":3,"text":"100.00","boundingBox":[1309,1172,1544,1172,1544,1216,1309,1216],"elements":["#/readResults/0/lines/36/words/0"]},{"rowIndex":4,"columnIndex":0,"text":"Copper - Swirl Marker","boundingBox":[156,1216,847,1216,847,1260,156,1260],"elements":["#/readResults/0/lines/37/words/0","#/readResults/0/lines/37/words/1","#/readResults/0/lines/37/words/2"]},{"rowIndex":4,"columnIndex":1,"text":"20","boundingBox":[847,1216,1072,1216,1072,1260,847,1260],"elements":["#/readResults/0/lines/38/words/0"]},{"rowIndex":4,"columnIndex":2,"text":"5,00","boundingBox":[1072,1216,1309,1216,1309,1260,1072,1260],"elements":["#/readResults/0/lines/39/words/0"]},{"rowIndex":4,"columnIndex":3,"text":"100.00","boundingBox":[1309,1216,1544,1216,1544,1260,1309,1260],"elements":["#/readResults/0/lines/40/words/0"]}]}]}],"documentResults":[{"docType":"custom:form","pageRange":[1,1],"fields":{"Quantity":{"type":"number","text":"20","page":1,"boundingBox":[861.0,1089.0,895.0,1089.0,895.0,1120.0,861.0,1120.0],"confidence":1.0,"elements":["#/analyzeResult/readResults/0/lines/26/words/0"]},"Signature":{"type":"string","valueString":"Bernie - Sanders","text":"Bernie Sanders","page":1,"boundingBox":[482.0,1670.0,764.0,1670.0,764.0,1709.0,482.0,1709.0],"confidence":1.0,"elements":["#/analyzeResult/readResults/0/lines/45/words/0","#/analyzeResult/readResults/0/lines/45/words/1"]},"PhoneNumber":{"type":"string","valueString":"555-348-6512","text":"555-348-6512","page":1,"boundingBox":[367.0,351.0,529.0,351.0,529.0,378.0,367.0,378.0],"confidence":1.0,"elements":["#/analyzeResult/readResults/0/lines/2/words/2"]},"Tax":{"type":"string","valueString":"$4.00","text":"$4.00","page":1,"boundingBox":[1461.0,1614.0,1530.0,1614.0,1530.0,1642.0,1461.0,1642.0],"confidence":1.0,"elements":["#/analyzeResult/readResults/0/lines/44/words/0"]},"CompanyName":{"type":"string","valueString":"Higgly - Wiggly Books","text":"Higgly Wiggly Books","page":1,"boundingBox":[378.0,646.0,629.0,646.0,629.0,682.0,378.0,682.0],"confidence":1.0,"elements":["#/analyzeResult/readResults/0/lines/11/words/2","#/analyzeResult/readResults/0/lines/11/words/3","#/analyzeResult/readResults/0/lines/11/words/4"]},"PurchaseOrderNumber":{"type":"string","valueString":"948284","text":"948284","page":1,"boundingBox":[1282.0,461.0,1377.0,461.0,1377.0,489.0,1282.0,489.0],"confidence":1.0,"elements":["#/analyzeResult/readResults/0/lines/8/words/3"]},"Website":{"type":"string","valueString":"www.herolimited.com","text":"www.herolimited.com","page":1,"boundingBox":[274.0,393.0,529.0,393.0,529.0,419.0,274.0,419.0],"confidence":1.0,"elements":["#/analyzeResult/readResults/0/lines/4/words/1"]},"CompanyAddress":{"type":"string","valueString":"938 + Swirl Marker","boundingBox":[156,1216,847,1216,847,1260,156,1260],"elements":["#/readResults/0/lines/37/words/0","#/readResults/0/lines/37/words/1","#/readResults/0/lines/37/words/2"]},{"rowIndex":4,"columnIndex":1,"text":"20","boundingBox":[847,1216,1072,1216,1072,1260,847,1260],"elements":["#/readResults/0/lines/38/words/0"]},{"rowIndex":4,"columnIndex":2,"text":"5,00","boundingBox":[1072,1216,1309,1216,1309,1260,1072,1260],"elements":["#/readResults/0/lines/39/words/0"]},{"rowIndex":4,"columnIndex":3,"text":"100.00","boundingBox":[1309,1216,1544,1216,1544,1260,1309,1260],"elements":["#/readResults/0/lines/40/words/0"]}]}]}],"documentResults":[{"docType":"custom:form","pageRange":[1,1],"fields":{"VendorName":{"type":"string","valueString":"Hillary + Swank","text":"Hillary Swank","page":1,"boundingBox":[351.0,609.0,518.0,609.0,518.0,641.0,351.0,641.0],"confidence":1.0,"elements":["#/analyzeResult/readResults/0/lines/10/words/2","#/analyzeResult/readResults/0/lines/10/words/3"]},"DatedAs":{"type":"string","valueString":"12/20/2020","text":"12/20/2020","page":1,"boundingBox":[1168.0,420.0,1317.0,420.0,1317.0,450.0,1168.0,450.0],"confidence":1.0,"elements":["#/analyzeResult/readResults/0/lines/6/words/2"]},"Tax":{"type":"string","valueString":"$4.00","text":"$4.00","page":1,"boundingBox":[1461.0,1614.0,1530.0,1614.0,1530.0,1642.0,1461.0,1642.0],"confidence":1.0,"elements":["#/analyzeResult/readResults/0/lines/44/words/0"]},"Total":{"type":"string","valueString":"$144.00","text":"$144.00","page":1,"boundingBox":[1429.0,1669.0,1530.0,1669.0,1530.0,1697.0,1429.0,1697.0],"confidence":1.0,"elements":["#/analyzeResult/readResults/0/lines/47/words/0"]},"Signature":{"type":"string","valueString":"Bernie + Sanders","text":"Bernie Sanders","page":1,"boundingBox":[482.0,1670.0,764.0,1670.0,764.0,1709.0,482.0,1709.0],"confidence":1.0,"elements":["#/analyzeResult/readResults/0/lines/45/words/0","#/analyzeResult/readResults/0/lines/45/words/1"]},"Email":{"type":"string","valueString":"accounts@herolimited.com","text":"accounts@herolimited.com","page":1,"boundingBox":[166.0,480.0,475.0,480.0,475.0,503.0,166.0,503.0],"confidence":1.0,"elements":["#/analyzeResult/readResults/0/lines/7/words/0"]},"Merchant":{"type":"string","valueString":"Hero + Limited","text":"Hero Limited","page":1,"boundingBox":[621.0,202.0,1075.0,202.0,1075.0,266.0,621.0,266.0],"confidence":1.0,"elements":["#/analyzeResult/readResults/0/lines/1/words/0","#/analyzeResult/readResults/0/lines/1/words/1"]},"CompanyAddress":{"type":"string","valueString":"938 NE Burner Road Boulder City, CO 92848","text":"938 NE Burner Road Boulder - City, CO 92848","page":1,"boundingBox":[277.0,685.0,568.0,685.0,568.0,754.0,277.0,754.0],"confidence":1.0,"elements":["#/analyzeResult/readResults/0/lines/12/words/1","#/analyzeResult/readResults/0/lines/12/words/2","#/analyzeResult/readResults/0/lines/12/words/3","#/analyzeResult/readResults/0/lines/12/words/4","#/analyzeResult/readResults/0/lines/13/words/0","#/analyzeResult/readResults/0/lines/13/words/1","#/analyzeResult/readResults/0/lines/13/words/2","#/analyzeResult/readResults/0/lines/13/words/3"]},"CompanyPhoneNumber":{"type":"string","valueString":"938-294-2949","text":"938-294-2949","page":1,"boundingBox":[713.0,722.0,884.0,722.0,884.0,750.0,713.0,750.0],"confidence":1.0,"elements":["#/analyzeResult/readResults/0/lines/14/words/1"]},"Merchant":{"type":"string","valueString":"Hero - Limited","text":"Hero Limited","page":1,"boundingBox":[621.0,202.0,1075.0,202.0,1075.0,266.0,621.0,266.0],"confidence":1.0,"elements":["#/analyzeResult/readResults/0/lines/1/words/0","#/analyzeResult/readResults/0/lines/1/words/1"]},"Email":{"type":"string","valueString":"accounts@herolimited.com","text":"accounts@herolimited.com","page":1,"boundingBox":[166.0,480.0,475.0,480.0,475.0,503.0,166.0,503.0],"confidence":1.0,"elements":["#/analyzeResult/readResults/0/lines/7/words/0"]},"Total":{"type":"string","valueString":"$144.00","text":"$144.00","page":1,"boundingBox":[1429.0,1669.0,1530.0,1669.0,1530.0,1697.0,1429.0,1697.0],"confidence":1.0,"elements":["#/analyzeResult/readResults/0/lines/47/words/0"]},"DatedAs":{"type":"string","valueString":"12/20/2020","text":"12/20/2020","page":1,"boundingBox":[1168.0,420.0,1317.0,420.0,1317.0,450.0,1168.0,450.0],"confidence":1.0,"elements":["#/analyzeResult/readResults/0/lines/6/words/2"]},"VendorName":{"type":"string","valueString":"Hillary - Swank","text":"Hillary Swank","page":1,"boundingBox":[351.0,609.0,518.0,609.0,518.0,641.0,351.0,641.0],"confidence":1.0,"elements":["#/analyzeResult/readResults/0/lines/10/words/2","#/analyzeResult/readResults/0/lines/10/words/3"]},"Subtotal":{"type":"string","valueString":"$140.00","text":"$140.00","page":1,"boundingBox":[1429.0,1570.0,1530.0,1570.0,1530.0,1599.0,1429.0,1599.0],"confidence":1.0,"elements":["#/analyzeResult/readResults/0/lines/42/words/0"]}}}],"errors":[]}}' + City, CO 92848","page":1,"boundingBox":[277.0,685.0,568.0,685.0,568.0,754.0,277.0,754.0],"confidence":1.0,"elements":["#/analyzeResult/readResults/0/lines/12/words/1","#/analyzeResult/readResults/0/lines/12/words/2","#/analyzeResult/readResults/0/lines/12/words/3","#/analyzeResult/readResults/0/lines/12/words/4","#/analyzeResult/readResults/0/lines/13/words/0","#/analyzeResult/readResults/0/lines/13/words/1","#/analyzeResult/readResults/0/lines/13/words/2","#/analyzeResult/readResults/0/lines/13/words/3"]},"PurchaseOrderNumber":{"type":"string","valueString":"948284","text":"948284","page":1,"boundingBox":[1282.0,461.0,1377.0,461.0,1377.0,489.0,1282.0,489.0],"confidence":1.0,"elements":["#/analyzeResult/readResults/0/lines/8/words/3"]},"CompanyName":{"type":"string","valueString":"Higgly + Wiggly Books","text":"Higgly Wiggly Books","page":1,"boundingBox":[378.0,646.0,629.0,646.0,629.0,682.0,378.0,682.0],"confidence":1.0,"elements":["#/analyzeResult/readResults/0/lines/11/words/2","#/analyzeResult/readResults/0/lines/11/words/3","#/analyzeResult/readResults/0/lines/11/words/4"]},"Quantity":{"type":"number","text":"20","page":1,"boundingBox":[861.0,1089.0,895.0,1089.0,895.0,1120.0,861.0,1120.0],"confidence":1.0,"elements":["#/analyzeResult/readResults/0/lines/26/words/0"]},"Subtotal":{"type":"string","valueString":"$140.00","text":"$140.00","page":1,"boundingBox":[1429.0,1570.0,1530.0,1570.0,1530.0,1599.0,1429.0,1599.0],"confidence":1.0,"elements":["#/analyzeResult/readResults/0/lines/42/words/0"]},"Website":{"type":"string","valueString":"www.herolimited.com","text":"www.herolimited.com","page":1,"boundingBox":[274.0,393.0,529.0,393.0,529.0,419.0,274.0,419.0],"confidence":1.0,"elements":["#/analyzeResult/readResults/0/lines/4/words/1"]},"PhoneNumber":{"type":"string","valueString":"555-348-6512","text":"555-348-6512","page":1,"boundingBox":[367.0,351.0,529.0,351.0,529.0,378.0,367.0,378.0],"confidence":1.0,"elements":["#/analyzeResult/readResults/0/lines/2/words/2"]},"CompanyPhoneNumber":{"type":"string","valueString":"938-294-2949","text":"938-294-2949","page":1,"boundingBox":[713.0,722.0,884.0,722.0,884.0,750.0,713.0,750.0],"confidence":1.0,"elements":["#/analyzeResult/readResults/0/lines/14/words/1"]}}}],"errors":[]}}' headers: - apim-request-id: 5bca5612-63a9-414c-8021-68569d4c1860 + apim-request-id: 34c196de-4f52-48b6-8b81-9638a188331b content-type: application/json; charset=utf-8 - date: Wed, 15 Apr 2020 18:57:00 GMT + date: Thu, 30 Apr 2020 23:48:24 GMT strict-transport-security: max-age=31536000; includeSubDomains; preload transfer-encoding: chunked x-content-type-options: nosniff - x-envoy-upstream-service-time: '42' + x-envoy-upstream-service-time: '24' status: code: 200 message: OK - url: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/0a28a255-b07d-4e4b-8d5f-ba9a82f92722/analyzeresults/e52a13b4-68db-46f2-b4ca-9ac62a5c8fbe + url: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/00407048-3545-42b9-ab78-e945df6cc20c/analyzeresults/5079cfbc-e345-4c27-af20-8b4f1881b5bd version: 1 diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_custom_forms_from_url_async.test_form_multipage_labeled.yaml b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_custom_forms_from_url_async.test_form_multipage_labeled.yaml new file mode 100644 index 000000000000..598042fed724 --- /dev/null +++ b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_custom_forms_from_url_async.test_form_multipage_labeled.yaml @@ -0,0 +1,201 @@ +interactions: +- request: + body: 'b''{"source": "containersasurl", "sourceFilter": {"prefix": "", "includeSubFolders": + false}, "useLabelFile": true}''' + headers: + Content-Length: + - '300' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models + response: + body: + string: '' + headers: + apim-request-id: 3631e91f-847a-4695-9e09-e11a43019b30 + content-length: '0' + date: Thu, 30 Apr 2020 23:45:18 GMT + location: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/5c031e67-a410-4775-8789-838aa8ce36aa + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '208' + status: + code: 201 + message: Created + url: https://westus.api.cognitive.microsoft.com//formrecognizer/v2.0-preview/custom/models +- request: + body: null + headers: + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/5c031e67-a410-4775-8789-838aa8ce36aa?includeKeys=true + response: + body: + string: '{"modelInfo":{"modelId":"5c031e67-a410-4775-8789-838aa8ce36aa","status":"ready","createdDateTime":"2020-04-30T23:45:19Z","lastUpdatedDateTime":"2020-04-30T23:45:20Z"},"trainResult":{"averageModelAccuracy":0.889,"trainingDocuments":[{"documentName":"multipage_invoice1.pdf","pages":3,"status":"succeeded"},{"documentName":"multipage_invoice2.pdf","pages":3,"status":"succeeded"},{"documentName":"multipage_invoice3.pdf","pages":3,"status":"succeeded"},{"documentName":"multipage_invoice4.pdf","pages":3,"status":"succeeded"},{"documentName":"multipage_invoice5.pdf","pages":3,"status":"succeeded"}],"fields":[{"fieldName":"Customer2","accuracy":1.0},{"fieldName":"CustomerAddress","accuracy":1.0},{"fieldName":"CustomerName","accuracy":1.0},{"fieldName":"CustomerPhoneNumber","accuracy":1.0},{"fieldName":"FirstItem","accuracy":1.0},{"fieldName":"FirstPrice","accuracy":1.0},{"fieldName":"FirstQuantity","accuracy":1.0},{"fieldName":"Merchant","accuracy":0.0},{"fieldName":"Merchant2","accuracy":0.0},{"fieldName":"MerchantAddress","accuracy":1.0},{"fieldName":"MerchantPhoneNumber","accuracy":1.0},{"fieldName":"Signature","accuracy":1.0},{"fieldName":"Signature2","accuracy":1.0},{"fieldName":"Subtotal","accuracy":1.0},{"fieldName":"Tax","accuracy":1.0},{"fieldName":"Tip","accuracy":1.0},{"fieldName":"Total","accuracy":1.0},{"fieldName":"Total2","accuracy":1.0}],"errors":[]}}' + headers: + apim-request-id: cd3e1374-33b1-45d2-9159-7b759bcf9e3f + content-type: application/json; charset=utf-8 + date: Thu, 30 Apr 2020 23:45:24 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + transfer-encoding: chunked + x-content-type-options: nosniff + x-envoy-upstream-service-time: '198' + status: + code: 200 + message: OK + url: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/5c031e67-a410-4775-8789-838aa8ce36aa?includeKeys=true +- request: + body: 'b''{"source": "blob_sas_url"}''' + headers: + Content-Length: + - '241' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/5c031e67-a410-4775-8789-838aa8ce36aa/analyze?includeTextDetails=false + response: + body: + string: '' + headers: + apim-request-id: f47c588b-543b-4ca2-88c1-284b3e1a3fae + content-length: '0' + date: Thu, 30 Apr 2020 23:45:24 GMT + operation-location: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/5c031e67-a410-4775-8789-838aa8ce36aa/analyzeresults/aa9bc66c-a742-4e84-b5b8-67b7a8a1657e + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '164' + status: + code: 202 + message: Accepted + url: https://westus.api.cognitive.microsoft.com//formrecognizer/v2.0-preview/custom/models/5c031e67-a410-4775-8789-838aa8ce36aa/analyze?includeTextDetails=false +- request: + body: null + headers: + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/5c031e67-a410-4775-8789-838aa8ce36aa/analyzeresults/aa9bc66c-a742-4e84-b5b8-67b7a8a1657e + response: + body: + string: '{"status":"notStarted","createdDateTime":"2020-04-30T23:45:25Z","lastUpdatedDateTime":"2020-04-30T23:45:25Z"}' + headers: + apim-request-id: 268634c3-d2d8-46de-aa61-f65af15fe7b2 + content-type: application/json; charset=utf-8 + date: Thu, 30 Apr 2020 23:45:29 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + transfer-encoding: chunked + x-content-type-options: nosniff + x-envoy-upstream-service-time: '101' + status: + code: 200 + message: OK + url: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/5c031e67-a410-4775-8789-838aa8ce36aa/analyzeresults/aa9bc66c-a742-4e84-b5b8-67b7a8a1657e +- request: + body: null + headers: + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/5c031e67-a410-4775-8789-838aa8ce36aa/analyzeresults/aa9bc66c-a742-4e84-b5b8-67b7a8a1657e + response: + body: + string: '{"status":"notStarted","createdDateTime":"2020-04-30T23:45:25Z","lastUpdatedDateTime":"2020-04-30T23:45:25Z"}' + headers: + apim-request-id: f291ee25-28ef-4e89-b270-60c2a285a1d6 + content-type: application/json; charset=utf-8 + date: Thu, 30 Apr 2020 23:45:34 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + transfer-encoding: chunked + x-content-type-options: nosniff + x-envoy-upstream-service-time: '108' + status: + code: 200 + message: OK + url: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/5c031e67-a410-4775-8789-838aa8ce36aa/analyzeresults/aa9bc66c-a742-4e84-b5b8-67b7a8a1657e +- request: + body: null + headers: + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/5c031e67-a410-4775-8789-838aa8ce36aa/analyzeresults/aa9bc66c-a742-4e84-b5b8-67b7a8a1657e + response: + body: + string: '{"status":"notStarted","createdDateTime":"2020-04-30T23:45:25Z","lastUpdatedDateTime":"2020-04-30T23:45:25Z"}' + headers: + apim-request-id: 4b52a070-ede9-4974-915d-7f2d970ebe74 + content-type: application/json; charset=utf-8 + date: Thu, 30 Apr 2020 23:45:39 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + transfer-encoding: chunked + x-content-type-options: nosniff + x-envoy-upstream-service-time: '102' + status: + code: 200 + message: OK + url: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/5c031e67-a410-4775-8789-838aa8ce36aa/analyzeresults/aa9bc66c-a742-4e84-b5b8-67b7a8a1657e +- request: + body: null + headers: + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/5c031e67-a410-4775-8789-838aa8ce36aa/analyzeresults/aa9bc66c-a742-4e84-b5b8-67b7a8a1657e + response: + body: + string: '{"status":"notStarted","createdDateTime":"2020-04-30T23:45:25Z","lastUpdatedDateTime":"2020-04-30T23:45:25Z"}' + headers: + apim-request-id: 890b5762-1f66-412d-8f7d-a937c15fcf76 + content-type: application/json; charset=utf-8 + date: Thu, 30 Apr 2020 23:45:45 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + transfer-encoding: chunked + x-content-type-options: nosniff + x-envoy-upstream-service-time: '136' + status: + code: 200 + message: OK + url: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/5c031e67-a410-4775-8789-838aa8ce36aa/analyzeresults/aa9bc66c-a742-4e84-b5b8-67b7a8a1657e +- request: + body: null + headers: + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/5c031e67-a410-4775-8789-838aa8ce36aa/analyzeresults/aa9bc66c-a742-4e84-b5b8-67b7a8a1657e + response: + body: + string: '{"status":"succeeded","createdDateTime":"2020-04-30T23:45:25Z","lastUpdatedDateTime":"2020-04-30T23:45:45Z","analyzeResult":{"version":"2.0.0","readResults":[{"page":1,"language":"en","angle":0,"width":8.5,"height":11,"unit":"inch"},{"page":2,"language":"en","angle":0,"width":8.4967,"height":10.9967,"unit":"inch"},{"page":3,"language":"en","angle":0,"width":8.5,"height":11,"unit":"inch"}],"pageResults":[{"page":1,"tables":[{"rows":8,"columns":3,"cells":[{"rowIndex":0,"columnIndex":0,"text":"Item","boundingBox":[1.0037,2.9443,3.1681,2.9443,3.1681,3.1543,1.0037,3.1543]},{"rowIndex":0,"columnIndex":1,"text":"Quantity","boundingBox":[3.1681,2.9443,5.3353,2.9443,5.3353,3.1543,3.1681,3.1543]},{"rowIndex":0,"columnIndex":2,"text":"Price","boundingBox":[5.3353,2.9443,7.4997,2.9443,7.4997,3.1543,5.3353,3.1543]},{"rowIndex":1,"columnIndex":0,"text":"A","boundingBox":[1.0037,3.1543,3.1681,3.1543,3.1681,3.3643,1.0037,3.3643]},{"rowIndex":1,"columnIndex":1,"text":"1","boundingBox":[3.1681,3.1543,5.3353,3.1543,5.3353,3.3643,3.1681,3.3643]},{"rowIndex":1,"columnIndex":2,"text":"10.99","boundingBox":[5.3353,3.1543,7.4997,3.1543,7.4997,3.3643,5.3353,3.3643]},{"rowIndex":2,"columnIndex":0,"text":"B","boundingBox":[1.0037,3.3643,3.1681,3.3643,3.1681,3.5776,1.0037,3.5776]},{"rowIndex":2,"columnIndex":1,"text":"2","boundingBox":[3.1681,3.3643,5.3353,3.3643,5.3353,3.5776,3.1681,3.5776]},{"rowIndex":2,"columnIndex":2,"text":"14.67","boundingBox":[5.3353,3.3643,7.4997,3.3643,7.4997,3.5776,5.3353,3.5776]},{"rowIndex":3,"columnIndex":0,"text":"C","boundingBox":[1.0037,3.5776,3.1681,3.5776,3.1681,3.7876,1.0037,3.7876]},{"rowIndex":3,"columnIndex":1,"text":"4","boundingBox":[3.1681,3.5776,5.3353,3.5776,5.3353,3.7876,3.1681,3.7876]},{"rowIndex":3,"columnIndex":2,"text":"15.66","boundingBox":[5.3353,3.5776,7.4997,3.5776,7.4997,3.7876,5.3353,3.7876]},{"rowIndex":4,"columnIndex":0,"text":"D","boundingBox":[1.0037,3.7876,3.1681,3.7876,3.1681,3.9976,1.0037,3.9976]},{"rowIndex":4,"columnIndex":1,"text":"1","boundingBox":[3.1681,3.7876,5.3353,3.7876,5.3353,3.9976,3.1681,3.9976]},{"rowIndex":4,"columnIndex":2,"text":"12.00","boundingBox":[5.3353,3.7876,7.4997,3.7876,7.4997,3.9976,5.3353,3.9976]},{"rowIndex":5,"columnIndex":0,"text":"E","boundingBox":[1.0037,3.9976,3.1681,3.9976,3.1681,4.2081,1.0037,4.2081]},{"rowIndex":5,"columnIndex":1,"text":"4","boundingBox":[3.1681,3.9976,5.3353,3.9976,5.3353,4.2081,3.1681,4.2081]},{"rowIndex":5,"columnIndex":2,"text":"10.00","boundingBox":[5.3353,3.9976,7.4997,3.9976,7.4997,4.2081,5.3353,4.2081]},{"rowIndex":6,"columnIndex":0,"text":"F","boundingBox":[1.0037,4.2081,3.1681,4.2081,3.1681,4.4181,1.0037,4.4181]},{"rowIndex":6,"columnIndex":1,"text":"6","boundingBox":[3.1681,4.2081,5.3353,4.2081,5.3353,4.4181,3.1681,4.4181]},{"rowIndex":6,"columnIndex":2,"text":"12.00","boundingBox":[5.3353,4.2081,7.4997,4.2081,7.4997,4.4181,5.3353,4.4181]},{"rowIndex":7,"columnIndex":0,"text":"G","boundingBox":[1.0037,4.4181,3.1681,4.4181,3.1681,4.6281,1.0037,4.6281]},{"rowIndex":7,"columnIndex":1,"text":"8","boundingBox":[3.1681,4.4181,5.3353,4.4181,5.3353,4.6281,3.1681,4.6281]},{"rowIndex":7,"columnIndex":2,"text":"22.00","boundingBox":[5.3353,4.4181,7.4997,4.4181,7.4997,4.6281,5.3353,4.6281]}]}]},{"page":2,"tables":[]},{"page":3,"tables":[{"rows":8,"columns":3,"cells":[{"rowIndex":0,"columnIndex":0,"text":"Item","boundingBox":[1.0037,2.9443,3.1681,2.9443,3.1681,3.1543,1.0037,3.1543]},{"rowIndex":0,"columnIndex":1,"text":"Quantity","boundingBox":[3.1681,2.9443,5.3353,2.9443,5.3353,3.1543,3.1681,3.1543]},{"rowIndex":0,"columnIndex":2,"text":"Price","boundingBox":[5.3353,2.9443,7.4997,2.9443,7.4997,3.1543,5.3353,3.1543]},{"rowIndex":1,"columnIndex":0,"text":"A","boundingBox":[1.0037,3.1543,3.1681,3.1543,3.1681,3.3643,1.0037,3.3643]},{"rowIndex":1,"columnIndex":1,"text":"10","boundingBox":[3.1681,3.1543,5.3353,3.1543,5.3353,3.3643,3.1681,3.3643]},{"rowIndex":1,"columnIndex":2,"text":"100.99","boundingBox":[5.3353,3.1543,7.4997,3.1543,7.4997,3.3643,5.3353,3.3643]},{"rowIndex":2,"columnIndex":0,"text":"B","boundingBox":[1.0037,3.3643,3.1681,3.3643,3.1681,3.5776,1.0037,3.5776]},{"rowIndex":2,"columnIndex":1,"text":"20","boundingBox":[3.1681,3.3643,5.3353,3.3643,5.3353,3.5776,3.1681,3.5776]},{"rowIndex":2,"columnIndex":2,"text":"140.67","boundingBox":[5.3353,3.3643,7.4997,3.3643,7.4997,3.5776,5.3353,3.5776]},{"rowIndex":3,"columnIndex":0,"text":"C","boundingBox":[1.0037,3.5776,3.1681,3.5776,3.1681,3.7876,1.0037,3.7876]},{"rowIndex":3,"columnIndex":1,"text":"40","boundingBox":[3.1681,3.5776,5.3353,3.5776,5.3353,3.7876,3.1681,3.7876]},{"rowIndex":3,"columnIndex":2,"text":"150.66","boundingBox":[5.3353,3.5776,7.4997,3.5776,7.4997,3.7876,5.3353,3.7876]},{"rowIndex":4,"columnIndex":0,"text":"D","boundingBox":[1.0037,3.7876,3.1681,3.7876,3.1681,3.9976,1.0037,3.9976]},{"rowIndex":4,"columnIndex":1,"text":"10","boundingBox":[3.1681,3.7876,5.3353,3.7876,5.3353,3.9976,3.1681,3.9976]},{"rowIndex":4,"columnIndex":2,"text":"120.00","boundingBox":[5.3353,3.7876,7.4997,3.7876,7.4997,3.9976,5.3353,3.9976]},{"rowIndex":5,"columnIndex":0,"text":"E","boundingBox":[1.0037,3.9976,3.1681,3.9976,3.1681,4.2081,1.0037,4.2081]},{"rowIndex":5,"columnIndex":1,"text":"40","boundingBox":[3.1681,3.9976,5.3353,3.9976,5.3353,4.2081,3.1681,4.2081]},{"rowIndex":5,"columnIndex":2,"text":"100.00","boundingBox":[5.3353,3.9976,7.4997,3.9976,7.4997,4.2081,5.3353,4.2081]},{"rowIndex":6,"columnIndex":0,"text":"F","boundingBox":[1.0037,4.2081,3.1681,4.2081,3.1681,4.4181,1.0037,4.4181]},{"rowIndex":6,"columnIndex":1,"text":"60","boundingBox":[3.1681,4.2081,5.3353,4.2081,5.3353,4.4181,3.1681,4.4181]},{"rowIndex":6,"columnIndex":2,"text":"120.00","boundingBox":[5.3353,4.2081,7.4997,4.2081,7.4997,4.4181,5.3353,4.4181]},{"rowIndex":7,"columnIndex":0,"text":"G","boundingBox":[1.0037,4.4181,3.1681,4.4181,3.1681,4.6281,1.0037,4.6281]},{"rowIndex":7,"columnIndex":1,"text":"80","boundingBox":[3.1681,4.4181,5.3353,4.4181,5.3353,4.6281,3.1681,4.6281]},{"rowIndex":7,"columnIndex":2,"text":"220.00","boundingBox":[5.3353,4.4181,7.4997,4.4181,7.4997,4.6281,5.3353,4.6281]}]}]}],"documentResults":[{"docType":"custom:form","pageRange":[1,3],"fields":{"Signature":{"type":"string","valueString":"Bilbo + Baggins","text":"Bilbo Baggins","page":1,"boundingBox":[2.09,6.655,3.04,6.655,3.04,6.8,2.09,6.8],"confidence":1.0},"Signature2":{"type":"string","valueString":"Frodo + Baggins","text":"Frodo Baggins","page":3,"boundingBox":[2.09,6.655,3.09,6.655,3.09,6.8,2.09,6.8],"confidence":1.0},"MerchantAddress":{"type":"string","valueString":"567 + Main St. Redmond, WA","text":"567 Main St. Redmond, WA","page":1,"boundingBox":[0.885,1.845,1.855,1.845,1.855,2.2,0.885,2.2],"confidence":1.0},"Tax":{"type":"string","valueString":"30.00","text":"30.00","page":1,"boundingBox":[5.835,5.125,6.2,5.125,6.2,5.235,5.835,5.235],"confidence":1.0},"Subtotal":{"type":"string","valueString":"300.00","text":"300.00","page":1,"boundingBox":[6.18,4.905,6.63,4.905,6.63,5.015,6.18,5.015],"confidence":1.0},"FirstPrice":{"type":"string","valueString":"10.99","text":"10.99","page":1,"boundingBox":[5.425,3.21,5.78,3.21,5.78,3.3200000000000003,5.425,3.3200000000000003],"confidence":1.0},"CustomerName":{"type":"string","valueString":"Bilbo + Baggins","text":"Bilbo Baggins","page":1,"boundingBox":[6.0150000000000006,1.45,6.8950000000000005,1.45,6.8950000000000005,1.595,6.0150000000000006,1.595],"confidence":1.0},"Merchant":{"type":"string","valueString":"A","text":"A","page":1,"boundingBox":[1.67,1.125,1.7750000000000001,1.125,1.7750000000000001,1.245,1.67,1.245],"confidence":1.0},"CustomerPhoneNumber":{"type":"string","valueString":"555-555-5555","text":"555-555-5555","page":1,"boundingBox":[6.01,2.12,6.9350000000000005,2.12,6.9350000000000005,2.225,6.01,2.225],"confidence":1.0},"FirstQuantity":{"type":"string","valueString":"1","text":"1","page":1,"boundingBox":[3.2600000000000002,3.21,3.3200000000000003,3.21,3.3200000000000003,3.3200000000000003,3.2600000000000002,3.3200000000000003],"confidence":1.0},"Total2":{"type":"string","valueString":"4300.00","text":"4300.00","page":3,"boundingBox":[5.94,5.565,6.48,5.565,6.48,5.675,5.94,5.675],"confidence":1.0},"FirstItem":{"type":"string","valueString":"A","text":"A","page":1,"boundingBox":[1.085,3.21,1.175,3.21,1.175,3.3200000000000003,1.085,3.3200000000000003],"confidence":1.0},"Total":{"type":"string","valueString":"430.00","text":"430.00","page":1,"boundingBox":[5.94,5.565,6.4,5.565,6.4,5.675,5.94,5.675],"confidence":1.0},"Merchant2":{"type":"string","valueString":"Company","text":"Company","page":1,"boundingBox":[0.885,1.125,1.62,1.125,1.62,1.28,0.885,1.28],"confidence":1.0},"CustomerAddress":{"type":"string","valueString":"123 + Hobbit Lane Redmond, WA","text":"123 Hobbit Lane Redmond, WA","page":1,"boundingBox":[6.0150000000000006,1.67,7.1000000000000005,1.67,7.1000000000000005,2.0300000000000002,6.0150000000000006,2.0300000000000002],"confidence":1.0},"Tip":{"type":"string","valueString":"100.00","text":"100.00","page":1,"boundingBox":[5.8100000000000005,5.345,6.26,5.345,6.26,5.455,5.8100000000000005,5.455],"confidence":1.0},"MerchantPhoneNumber":{"type":"string","valueString":"555-555-5555","text":"555-555-5555","page":1,"boundingBox":[0.885,2.29,1.81,2.29,1.81,2.395,0.885,2.395],"confidence":1.0},"Customer2":{"type":"string","valueString":"Frodo + Baggins","text":"Frodo Baggins","page":3,"boundingBox":[6.0150000000000006,1.45,6.95,1.45,6.95,1.595,6.0150000000000006,1.595],"confidence":1.0}}}],"errors":[]}}' + headers: + apim-request-id: ac48fb5b-5c81-42eb-b0f8-8cf4b1e2803c + content-type: application/json; charset=utf-8 + date: Thu, 30 Apr 2020 23:45:50 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + transfer-encoding: chunked + x-content-type-options: nosniff + x-envoy-upstream-service-time: '112' + status: + code: 200 + message: OK + url: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/5c031e67-a410-4775-8789-838aa8ce36aa/analyzeresults/aa9bc66c-a742-4e84-b5b8-67b7a8a1657e +version: 1 diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_custom_forms_from_url_async.test_fr_unlbld_trnsfrm.yaml b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_custom_forms_from_url_async.test_form_unlabeled_transform.yaml similarity index 93% rename from sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_custom_forms_from_url_async.test_fr_unlbld_trnsfrm.yaml rename to sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_custom_forms_from_url_async.test_form_unlabeled_transform.yaml index be1576940ca8..56b791980c89 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_custom_forms_from_url_async.test_fr_unlbld_trnsfrm.yaml +++ b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_custom_forms_from_url_async.test_form_unlabeled_transform.yaml @@ -4,11 +4,11 @@ interactions: false}, "useLabelFile": false}''' headers: Content-Length: - - '323' + - '288' Content-Type: - application/json User-Agent: - - azsdk-python-ai-formrecognizer/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) Python/3.7.3 (Windows-10-10.0.18362-SP0) method: POST uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models @@ -16,13 +16,13 @@ interactions: body: string: '' headers: - apim-request-id: 7b1edb95-ea86-4d45-aab7-d4e54e9557be + apim-request-id: 1e33c7f6-f729-4554-b6b4-cb24bc1ec548 content-length: '0' - date: Wed, 15 Apr 2020 18:57:12 GMT - location: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/fec0a858-8c8a-4b45-9c9e-a5b1fe6c89a0 + date: Thu, 30 Apr 2020 23:46:19 GMT + location: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/e3593aad-7112-48d1-b978-87ac3fa0bdfb strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '32' + x-envoy-upstream-service-time: '5214' status: code: 201 message: Created @@ -31,52 +31,52 @@ interactions: body: null headers: User-Agent: - - azsdk-python-ai-formrecognizer/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) Python/3.7.3 (Windows-10-10.0.18362-SP0) method: GET - uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/fec0a858-8c8a-4b45-9c9e-a5b1fe6c89a0?includeKeys=true + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/e3593aad-7112-48d1-b978-87ac3fa0bdfb?includeKeys=true response: body: - string: '{"modelInfo":{"modelId":"fec0a858-8c8a-4b45-9c9e-a5b1fe6c89a0","status":"creating","createdDateTime":"2020-04-15T18:57:12Z","lastUpdatedDateTime":"2020-04-15T18:57:12Z"}}' + string: '{"modelInfo":{"modelId":"e3593aad-7112-48d1-b978-87ac3fa0bdfb","status":"creating","createdDateTime":"2020-04-30T23:46:20Z","lastUpdatedDateTime":"2020-04-30T23:46:20Z"}}' headers: - apim-request-id: ca8bb832-6ccd-4c7d-8b05-daf800bbadcb + apim-request-id: 70520845-53ab-4760-ab25-5e8eb7263ff1 content-type: application/json; charset=utf-8 - date: Wed, 15 Apr 2020 18:57:17 GMT + date: Thu, 30 Apr 2020 23:46:24 GMT strict-transport-security: max-age=31536000; includeSubDomains; preload transfer-encoding: chunked x-content-type-options: nosniff - x-envoy-upstream-service-time: '30' + x-envoy-upstream-service-time: '190' status: code: 200 message: OK - url: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/fec0a858-8c8a-4b45-9c9e-a5b1fe6c89a0?includeKeys=true + url: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/e3593aad-7112-48d1-b978-87ac3fa0bdfb?includeKeys=true - request: body: null headers: User-Agent: - - azsdk-python-ai-formrecognizer/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) Python/3.7.3 (Windows-10-10.0.18362-SP0) method: GET - uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/fec0a858-8c8a-4b45-9c9e-a5b1fe6c89a0?includeKeys=true + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/e3593aad-7112-48d1-b978-87ac3fa0bdfb?includeKeys=true response: body: - string: '{"modelInfo":{"modelId":"fec0a858-8c8a-4b45-9c9e-a5b1fe6c89a0","status":"ready","createdDateTime":"2020-04-15T18:57:12Z","lastUpdatedDateTime":"2020-04-15T18:57:20Z"},"keys":{"clusters":{"0":["Additional + string: '{"modelInfo":{"modelId":"e3593aad-7112-48d1-b978-87ac3fa0bdfb","status":"ready","createdDateTime":"2020-04-30T23:46:20Z","lastUpdatedDateTime":"2020-04-30T23:46:27Z"},"keys":{"clusters":{"0":["Additional Notes:","Address:","Address:","Company Name:","Company Phone:","Dated As:","Email:","Hero Limited","Name:","Phone:","Phone:","Purchase Order","Purchase Order","Purchase Order #:","SUBTOTAL","Seattle, WA 93849 Phone:","Shipped From","Shipped To","TAX","TOTAL","Vendor Name:","Website:"]}},"trainResult":{"trainingDocuments":[{"documentName":"Form_1.jpg","pages":1,"errors":[],"status":"succeeded"},{"documentName":"Form_2.jpg","pages":1,"errors":[],"status":"succeeded"},{"documentName":"Form_3.jpg","pages":1,"errors":[],"status":"succeeded"},{"documentName":"Form_4.jpg","pages":1,"errors":[],"status":"succeeded"},{"documentName":"Form_5.jpg","pages":1,"errors":[],"status":"succeeded"}],"errors":[]}}' headers: - apim-request-id: 4d0221db-db2d-4ffe-94e2-3991f6776fcc + apim-request-id: 44300c2b-9e36-466e-b2fc-fe58c4b24a22 content-type: application/json; charset=utf-8 - date: Wed, 15 Apr 2020 18:57:22 GMT + date: Thu, 30 Apr 2020 23:46:29 GMT strict-transport-security: max-age=31536000; includeSubDomains; preload transfer-encoding: chunked x-content-type-options: nosniff - x-envoy-upstream-service-time: '497' + x-envoy-upstream-service-time: '119' status: code: 200 message: OK - url: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/fec0a858-8c8a-4b45-9c9e-a5b1fe6c89a0?includeKeys=true + url: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/e3593aad-7112-48d1-b978-87ac3fa0bdfb?includeKeys=true - request: body: '{"source": "https://raw.githubusercontent.com/Azure/azure-sdk-for-python/master/sdk/formrecognizer/azure-ai-formrecognizer/tests/sample_forms/forms/Form_1.jpg"}' headers: @@ -85,36 +85,36 @@ interactions: Content-Type: - application/json User-Agent: - - azsdk-python-ai-formrecognizer/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) Python/3.7.3 (Windows-10-10.0.18362-SP0) method: POST - uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/fec0a858-8c8a-4b45-9c9e-a5b1fe6c89a0/analyze?includeTextDetails=true + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/e3593aad-7112-48d1-b978-87ac3fa0bdfb/analyze?includeTextDetails=true response: body: string: '' headers: - apim-request-id: 6b948056-477f-453e-8639-2aa281d89b40 + apim-request-id: 59ff71f3-2a61-42c9-8126-fffc992d03d7 content-length: '0' - date: Wed, 15 Apr 2020 18:57:23 GMT - operation-location: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/fec0a858-8c8a-4b45-9c9e-a5b1fe6c89a0/analyzeresults/38eba8c7-7db3-4796-bfa2-fbe2dd4f9299 + date: Thu, 30 Apr 2020 23:46:30 GMT + operation-location: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/e3593aad-7112-48d1-b978-87ac3fa0bdfb/analyzeresults/9aa6ff72-18e3-4312-b108-b5214074e82c strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '91' + x-envoy-upstream-service-time: '92' status: code: 202 message: Accepted - url: https://westus.api.cognitive.microsoft.com//formrecognizer/v2.0-preview/custom/models/fec0a858-8c8a-4b45-9c9e-a5b1fe6c89a0/analyze?includeTextDetails=true + url: https://westus.api.cognitive.microsoft.com//formrecognizer/v2.0-preview/custom/models/e3593aad-7112-48d1-b978-87ac3fa0bdfb/analyze?includeTextDetails=true - request: body: null headers: User-Agent: - - azsdk-python-ai-formrecognizer/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) Python/3.7.3 (Windows-10-10.0.18362-SP0) method: GET - uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/fec0a858-8c8a-4b45-9c9e-a5b1fe6c89a0/analyzeresults/38eba8c7-7db3-4796-bfa2-fbe2dd4f9299 + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/e3593aad-7112-48d1-b978-87ac3fa0bdfb/analyzeresults/9aa6ff72-18e3-4312-b108-b5214074e82c response: body: - string: '{"status":"succeeded","createdDateTime":"2020-04-15T18:57:23Z","lastUpdatedDateTime":"2020-04-15T18:57:28Z","analyzeResult":{"version":"2.0.0","readResults":[{"page":1,"angle":0.12,"width":1700,"height":2200,"unit":"pixel","lines":[{"text":"Purchase + string: '{"status":"succeeded","createdDateTime":"2020-04-30T23:46:31Z","lastUpdatedDateTime":"2020-04-30T23:46:34Z","analyzeResult":{"version":"2.0.0","readResults":[{"page":1,"angle":0.12,"width":1700,"height":2200,"unit":"pixel","lines":[{"text":"Purchase Order","boundingBox":[141,140,348,140,348,168,141,168],"words":[{"text":"Purchase","boundingBox":[141,140,267,140,267,168,141,168]},{"text":"Order","boundingBox":[273,140,348,140,348,168,273,168]}]},{"text":"Hero Limited","boundingBox":[620,203,1078,203,1078,271,620,271],"words":[{"text":"Hero","boundingBox":[620,203,793,203,793,271,620,271]},{"text":"Limited","boundingBox":[811,203,1078,203,1078,271,811,271]}]},{"text":"Purchase Order","boundingBox":[1117,319,1551,319,1551,372,1117,372],"words":[{"text":"Purchase","boundingBox":[1117,319,1380,319,1380,372,1117,372]},{"text":"Order","boundingBox":[1397,319,1551,319,1551,372,1397,372]}]},{"text":"Company @@ -173,9 +173,9 @@ interactions: Bookmark","rowIndex":3,"columnIndex":0,"boundingBox":[172,1179,403,1179,403,1205,172,1205],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/0/lines/45/words/0","#/readResults/0/lines/45/words/1"],"isHeader":false,"isFooter":false},{"text":"20","rowIndex":3,"columnIndex":1,"boundingBox":[863,1177,888,1177,888,1199,863,1199],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/0/lines/46/words/0"],"isHeader":false,"isFooter":false},{"text":"5.00","rowIndex":3,"columnIndex":2,"boundingBox":[1243,1179,1298,1179,1298,1205,1243,1205],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/0/lines/47/words/0"],"isHeader":false,"isFooter":false},{"text":"100.00","rowIndex":3,"columnIndex":3,"boundingBox":[1448,1180,1530,1180,1530,1205,1448,1205],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/0/lines/48/words/0"],"isHeader":false,"isFooter":false},{"text":"Copper Swirl Marker","rowIndex":4,"columnIndex":0,"boundingBox":[171,1224,426,1224,426,1248,171,1248],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/0/lines/49/words/0","#/readResults/0/lines/49/words/1","#/readResults/0/lines/49/words/2"],"isHeader":false,"isFooter":false},{"text":"20","rowIndex":4,"columnIndex":1,"boundingBox":[863,1221,888,1221,888,1244,863,1244],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/0/lines/50/words/0"],"isHeader":false,"isFooter":false},{"text":"5.00","rowIndex":4,"columnIndex":2,"boundingBox":[1242,1222,1291,1222,1291,1248,1242,1248],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/0/lines/51/words/0"],"isHeader":false,"isFooter":false},{"text":"100.00","rowIndex":4,"columnIndex":3,"boundingBox":[1449,1225,1530,1225,1530,1248,1449,1248],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/0/lines/52/words/0"],"isHeader":false,"isFooter":false}]}],"clusterId":0}],"documentResults":[],"errors":[]}}' headers: - apim-request-id: c7a36567-e976-4d95-a7df-14a3593c0afa + apim-request-id: db60e516-efb6-4620-974a-f54daa076a1c content-type: application/json; charset=utf-8 - date: Wed, 15 Apr 2020 18:57:27 GMT + date: Thu, 30 Apr 2020 23:46:35 GMT strict-transport-security: max-age=31536000; includeSubDomains; preload transfer-encoding: chunked x-content-type-options: nosniff @@ -183,5 +183,5 @@ interactions: status: code: 200 message: OK - url: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/fec0a858-8c8a-4b45-9c9e-a5b1fe6c89a0/analyzeresults/38eba8c7-7db3-4796-bfa2-fbe2dd4f9299 + url: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/e3593aad-7112-48d1-b978-87ac3fa0bdfb/analyzeresults/9aa6ff72-18e3-4312-b108-b5214074e82c version: 1 diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_custom_forms_from_url_async.test_multipage_labeled_transform.yaml b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_custom_forms_from_url_async.test_multipage_labeled_transform.yaml new file mode 100644 index 000000000000..6f831c8aaa03 --- /dev/null +++ b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_custom_forms_from_url_async.test_multipage_labeled_transform.yaml @@ -0,0 +1,179 @@ +interactions: +- request: + body: 'b''{"source": "containersasurl", "sourceFilter": {"prefix": "", "includeSubFolders": + false}, "useLabelFile": true}''' + headers: + Content-Length: + - '300' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models + response: + body: + string: '' + headers: + apim-request-id: ad2e8246-9f8a-456a-ba29-ce0a16d508c7 + content-length: '0' + date: Thu, 30 Apr 2020 23:48:51 GMT + location: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/6322ba2f-c632-40c4-98a1-ec2a62822f8b + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '36' + status: + code: 201 + message: Created + url: https://westus.api.cognitive.microsoft.com//formrecognizer/v2.0-preview/custom/models +- request: + body: null + headers: + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/6322ba2f-c632-40c4-98a1-ec2a62822f8b?includeKeys=true + response: + body: + string: '{"modelInfo":{"modelId":"6322ba2f-c632-40c4-98a1-ec2a62822f8b","status":"ready","createdDateTime":"2020-04-30T23:48:51Z","lastUpdatedDateTime":"2020-04-30T23:48:52Z"},"trainResult":{"averageModelAccuracy":0.889,"trainingDocuments":[{"documentName":"multipage_invoice1.pdf","pages":3,"status":"succeeded"},{"documentName":"multipage_invoice2.pdf","pages":3,"status":"succeeded"},{"documentName":"multipage_invoice3.pdf","pages":3,"status":"succeeded"},{"documentName":"multipage_invoice4.pdf","pages":3,"status":"succeeded"},{"documentName":"multipage_invoice5.pdf","pages":3,"status":"succeeded"}],"fields":[{"fieldName":"Customer2","accuracy":1.0},{"fieldName":"CustomerAddress","accuracy":1.0},{"fieldName":"CustomerName","accuracy":1.0},{"fieldName":"CustomerPhoneNumber","accuracy":1.0},{"fieldName":"FirstItem","accuracy":1.0},{"fieldName":"FirstPrice","accuracy":1.0},{"fieldName":"FirstQuantity","accuracy":1.0},{"fieldName":"Merchant","accuracy":0.0},{"fieldName":"Merchant2","accuracy":0.0},{"fieldName":"MerchantAddress","accuracy":1.0},{"fieldName":"MerchantPhoneNumber","accuracy":1.0},{"fieldName":"Signature","accuracy":1.0},{"fieldName":"Signature2","accuracy":1.0},{"fieldName":"Subtotal","accuracy":1.0},{"fieldName":"Tax","accuracy":1.0},{"fieldName":"Tip","accuracy":1.0},{"fieldName":"Total","accuracy":1.0},{"fieldName":"Total2","accuracy":1.0}],"errors":[]}}' + headers: + apim-request-id: 1a6b8d2b-cddf-4029-850c-09ccaa94a7f1 + content-type: application/json; charset=utf-8 + date: Thu, 30 Apr 2020 23:48:55 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + transfer-encoding: chunked + x-content-type-options: nosniff + x-envoy-upstream-service-time: '346' + status: + code: 200 + message: OK + url: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/6322ba2f-c632-40c4-98a1-ec2a62822f8b?includeKeys=true +- request: + body: 'b''{"source": "blob_sas_url"}''' + headers: + Content-Length: + - '241' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/6322ba2f-c632-40c4-98a1-ec2a62822f8b/analyze?includeTextDetails=true + response: + body: + string: '' + headers: + apim-request-id: f3784518-73cd-4668-accf-c131c3ce99d1 + content-length: '0' + date: Thu, 30 Apr 2020 23:48:59 GMT + operation-location: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/6322ba2f-c632-40c4-98a1-ec2a62822f8b/analyzeresults/10dca97e-349e-41a2-850d-29b98a4a0484 + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '184' + status: + code: 202 + message: Accepted + url: https://westus.api.cognitive.microsoft.com//formrecognizer/v2.0-preview/custom/models/6322ba2f-c632-40c4-98a1-ec2a62822f8b/analyze?includeTextDetails=true +- request: + body: null + headers: + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/6322ba2f-c632-40c4-98a1-ec2a62822f8b/analyzeresults/10dca97e-349e-41a2-850d-29b98a4a0484 + response: + body: + string: '{"status":"notStarted","createdDateTime":"2020-04-30T23:48:59Z","lastUpdatedDateTime":"2020-04-30T23:48:59Z"}' + headers: + apim-request-id: 23a0d24b-c90e-45cf-892d-649d91ba4bba + content-type: application/json; charset=utf-8 + date: Thu, 30 Apr 2020 23:49:05 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + transfer-encoding: chunked + x-content-type-options: nosniff + x-envoy-upstream-service-time: '29' + status: + code: 200 + message: OK + url: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/6322ba2f-c632-40c4-98a1-ec2a62822f8b/analyzeresults/10dca97e-349e-41a2-850d-29b98a4a0484 +- request: + body: null + headers: + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/6322ba2f-c632-40c4-98a1-ec2a62822f8b/analyzeresults/10dca97e-349e-41a2-850d-29b98a4a0484 + response: + body: + string: '{"status":"notStarted","createdDateTime":"2020-04-30T23:48:59Z","lastUpdatedDateTime":"2020-04-30T23:48:59Z"}' + headers: + apim-request-id: 7d1a48d6-aed8-4753-99e4-20f74f80bc65 + content-type: application/json; charset=utf-8 + date: Thu, 30 Apr 2020 23:49:10 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + transfer-encoding: chunked + x-content-type-options: nosniff + x-envoy-upstream-service-time: '18' + status: + code: 200 + message: OK + url: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/6322ba2f-c632-40c4-98a1-ec2a62822f8b/analyzeresults/10dca97e-349e-41a2-850d-29b98a4a0484 +- request: + body: null + headers: + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/6322ba2f-c632-40c4-98a1-ec2a62822f8b/analyzeresults/10dca97e-349e-41a2-850d-29b98a4a0484 + response: + body: + string: '{"status":"succeeded","createdDateTime":"2020-04-30T23:48:59Z","lastUpdatedDateTime":"2020-04-30T23:49:11Z","analyzeResult":{"version":"2.0.0","readResults":[{"page":1,"language":"en","angle":0,"width":8.5,"height":11,"unit":"inch","lines":[{"language":"en","boundingBox":[0.8861,1.1217,2.3783,1.1217,2.3783,1.2812,0.8861,1.2812],"text":"Company + A Invoice","words":[{"boundingBox":[0.8861,1.1232,1.6203,1.1232,1.6203,1.2812,0.8861,1.2812],"text":"Company","confidence":1},{"boundingBox":[1.6696,1.1242,1.7749,1.1242,1.7749,1.2473,1.6696,1.2473],"text":"A","confidence":1},{"boundingBox":[1.8389,1.1217,2.3783,1.1217,2.3783,1.2485,1.8389,1.2485],"text":"Invoice","confidence":1}]},{"language":"en","boundingBox":[6.0211,1.0656,7.0357,1.0656,7.0357,1.2121,6.0211,1.2121],"text":"Invoice + For:","words":[{"boundingBox":[6.0211,1.0656,6.6362,1.0656,6.6362,1.2121,6.0211,1.2121],"text":"Invoice","confidence":1},{"boundingBox":[6.7147,1.0691,7.0357,1.0691,7.0357,1.2121,6.7147,1.2121],"text":"For:","confidence":1}]},{"language":"en","boundingBox":[0.8791,1.4825,1.5657,1.4825,1.5657,1.6155,0.8791,1.6155],"text":"Address:","words":[{"boundingBox":[0.8791,1.4825,1.5657,1.4825,1.5657,1.6155,0.8791,1.6155],"text":"Address:","confidence":1}]},{"language":"en","boundingBox":[6.0164,1.4503,6.8967,1.4503,6.8967,1.5931,6.0164,1.5931],"text":"Bilbo + Baggins","words":[{"boundingBox":[6.0164,1.4503,6.3392,1.4503,6.3392,1.5649,6.0164,1.5649],"text":"Bilbo","confidence":1},{"boundingBox":[6.396,1.4556,6.8967,1.4556,6.8967,1.5931,6.396,1.5931],"text":"Baggins","confidence":1}]},{"language":"en","boundingBox":[6.0165,1.6707,7.1006,1.6707,7.1006,1.7854,6.0165,1.7854],"text":"123 + Hobbit Lane","words":[{"boundingBox":[6.0165,1.6772,6.2434,1.6772,6.2434,1.7854,6.0165,1.7854],"text":"123","confidence":1},{"boundingBox":[6.3033,1.6707,6.7463,1.6707,6.7463,1.7854,6.3033,1.7854],"text":"Hobbit","confidence":1},{"boundingBox":[6.803,1.6782,7.1006,1.6782,7.1006,1.7854,6.803,1.7854],"text":"Lane","confidence":1}]},{"language":"en","boundingBox":[0.8852,1.846,1.713,1.846,1.713,1.9554,0.8852,1.9554],"text":"567 + Main St.","words":[{"boundingBox":[0.8852,1.8472,1.1203,1.8472,1.1203,1.9554,0.8852,1.9554],"text":"567","confidence":1},{"boundingBox":[1.1777,1.846,1.5022,1.846,1.5022,1.9554,1.1777,1.9554],"text":"Main","confidence":1},{"boundingBox":[1.5558,1.8472,1.713,1.8472,1.713,1.9554,1.5558,1.9554],"text":"St.","confidence":1}]},{"language":"en","boundingBox":[6.0164,1.891,6.9793,1.891,6.9793,2.0275,6.0164,2.0275],"text":"Redmond, + WA","words":[{"boundingBox":[6.0164,1.891,6.6861,1.891,6.6861,2.0275,6.0164,2.0275],"text":"Redmond,","confidence":1},{"boundingBox":[6.7408,1.8982,6.9793,1.8982,6.9793,2.0044,6.7408,2.0044],"text":"WA","confidence":1}]},{"language":"en","boundingBox":[0.891,2.061,1.8537,2.061,1.8537,2.1975,0.891,2.1975],"text":"Redmond, + WA","words":[{"boundingBox":[0.891,2.061,1.5605,2.061,1.5605,2.1975,0.891,2.1975],"text":"Redmond,","confidence":1},{"boundingBox":[1.6152,2.0682,1.8537,2.0682,1.8537,2.1744,1.6152,2.1744],"text":"WA","confidence":1}]},{"language":"en","boundingBox":[6.0105,2.1187,6.9371,2.1187,6.9371,2.2254,6.0105,2.2254],"text":"555-555-5555","words":[{"boundingBox":[6.0105,2.1187,6.9371,2.1187,6.9371,2.2254,6.0105,2.2254],"text":"555-555-5555","confidence":1}]},{"language":"en","boundingBox":[0.8852,2.2887,1.8119,2.2887,1.8119,2.3954,0.8852,2.3954],"text":"555-555-5555","words":[{"boundingBox":[0.8852,2.2887,1.8119,2.2887,1.8119,2.3954,0.8852,2.3954],"text":"555-555-5555","confidence":1}]},{"language":"en","boundingBox":[1.0943,3.0018,1.3842,3.0018,1.3842,3.109,1.0943,3.109],"text":"Item","words":[{"boundingBox":[1.0943,3.0018,1.3842,3.0018,1.3842,3.109,1.0943,3.109],"text":"Item","confidence":1}]},{"language":"en","boundingBox":[3.2527,2.9996,3.8367,2.9996,3.8367,3.1371,3.2527,3.1371],"text":"Quantity","words":[{"boundingBox":[3.2527,2.9996,3.8367,2.9996,3.8367,3.1371,3.2527,3.1371],"text":"Quantity","confidence":1}]},{"language":"en","boundingBox":[5.423,2.9996,5.7372,2.9996,5.7372,3.109,5.423,3.109],"text":"Price","words":[{"boundingBox":[5.423,2.9996,5.7372,2.9996,5.7372,3.109,5.423,3.109],"text":"Price","confidence":1}]},{"language":"en","boundingBox":[1.0832,3.2118,1.174,3.2118,1.174,3.318,1.0832,3.318],"text":"A","words":[{"boundingBox":[1.0832,3.2118,1.174,3.2118,1.174,3.318,1.0832,3.318],"text":"A","confidence":1}]},{"language":"en","boundingBox":[3.2589,3.2116,3.3202,3.2116,3.3202,3.3176,3.2589,3.3176],"text":"1","words":[{"boundingBox":[3.2589,3.2116,3.3202,3.2116,3.3202,3.3176,3.2589,3.3176],"text":"1","confidence":1}]},{"language":"en","boundingBox":[5.4232,3.2108,5.7784,3.2108,5.7784,3.319,5.4232,3.319],"text":"10.99","words":[{"boundingBox":[5.4232,3.2108,5.7784,3.2108,5.7784,3.319,5.4232,3.319],"text":"10.99","confidence":1}]},{"language":"en","boundingBox":[1.0943,3.4256,1.1637,3.4256,1.1637,3.531,1.0943,3.531],"text":"B","words":[{"boundingBox":[1.0943,3.4256,1.1637,3.4256,1.1637,3.531,1.0943,3.531],"text":"B","confidence":1}]},{"language":"en","boundingBox":[3.2541,3.4241,3.3199,3.4241,3.3199,3.531,3.2541,3.531],"text":"2","words":[{"boundingBox":[3.2541,3.4241,3.3199,3.4241,3.3199,3.531,3.2541,3.531],"text":"2","confidence":1}]},{"language":"en","boundingBox":[5.4232,3.4241,5.7789,3.4241,5.7789,3.5323,5.4232,3.5323],"text":"14.67","words":[{"boundingBox":[5.4232,3.4241,5.7789,3.4241,5.7789,3.5323,5.4232,3.5323],"text":"14.67","confidence":1}]},{"language":"en","boundingBox":[1.0882,3.6343,1.1647,3.6343,1.1647,3.7421,1.0882,3.7421],"text":"C","words":[{"boundingBox":[1.0882,3.6343,1.1647,3.6343,1.1647,3.7421,1.0882,3.7421],"text":"C","confidence":1}]},{"language":"en","boundingBox":[3.2486,3.6351,3.3244,3.6351,3.3244,3.7413,3.2486,3.7413],"text":"4","words":[{"boundingBox":[3.2486,3.6351,3.3244,3.6351,3.3244,3.7413,3.2486,3.7413],"text":"4","confidence":1}]},{"language":"en","boundingBox":[5.4232,3.6341,5.78,3.6341,5.78,3.7423,5.4232,3.7423],"text":"15.66","words":[{"boundingBox":[5.4232,3.6341,5.78,3.6341,5.78,3.7423,5.4232,3.7423],"text":"15.66","confidence":1}]},{"language":"en","boundingBox":[1.0943,3.8456,1.1753,3.8456,1.1753,3.951,1.0943,3.951],"text":"D","words":[{"boundingBox":[1.0943,3.8456,1.1753,3.8456,1.1753,3.951,1.0943,3.951],"text":"D","confidence":1}]},{"language":"en","boundingBox":[3.2589,3.845,3.3202,3.845,3.3202,3.951,3.2589,3.951],"text":"1","words":[{"boundingBox":[3.2589,3.845,3.3202,3.845,3.3202,3.951,3.2589,3.951],"text":"1","confidence":1}]},{"language":"en","boundingBox":[5.4232,3.8441,5.7809,3.8441,5.7809,3.9523,5.4232,3.9523],"text":"12.00","words":[{"boundingBox":[5.4232,3.8441,5.7809,3.8441,5.7809,3.9523,5.4232,3.9523],"text":"12.00","confidence":1}]},{"language":"en","boundingBox":[1.0943,4.0561,1.153,4.0561,1.153,4.1614,1.0943,4.1614],"text":"E","words":[{"boundingBox":[1.0943,4.0561,1.153,4.0561,1.153,4.1614,1.0943,4.1614],"text":"E","confidence":1}]},{"language":"en","boundingBox":[3.2486,4.0556,3.3244,4.0556,3.3244,4.1617,3.2486,4.1617],"text":"4","words":[{"boundingBox":[3.2486,4.0556,3.3244,4.0556,3.3244,4.1617,3.2486,4.1617],"text":"4","confidence":1}]},{"language":"en","boundingBox":[5.4232,4.0546,5.781,4.0546,5.781,4.1627,5.4232,4.1627],"text":"10.00","words":[{"boundingBox":[5.4232,4.0546,5.781,4.0546,5.781,4.1627,5.4232,4.1627],"text":"10.00","confidence":1}]},{"language":"en","boundingBox":[1.0943,4.2661,1.1497,4.2661,1.1497,4.3717,1.0943,4.3717],"text":"F","words":[{"boundingBox":[1.0943,4.2661,1.1497,4.2661,1.1497,4.3717,1.0943,4.3717],"text":"F","confidence":1}]},{"language":"en","boundingBox":[3.2534,4.2646,3.3226,4.2646,3.3226,4.3727,3.2534,4.3727],"text":"6","words":[{"boundingBox":[3.2534,4.2646,3.3226,4.2646,3.3226,4.3727,3.2534,4.3727],"text":"6","confidence":1}]},{"language":"en","boundingBox":[5.4232,4.2646,5.7809,4.2646,5.7809,4.3727,5.4232,4.3727],"text":"12.00","words":[{"boundingBox":[5.4232,4.2646,5.7809,4.2646,5.7809,4.3727,5.4232,4.3727],"text":"12.00","confidence":1}]},{"language":"en","boundingBox":[1.0877,4.4746,1.1735,4.4746,1.1735,4.5827,1.0877,4.5827],"text":"G","words":[{"boundingBox":[1.0877,4.4746,1.1735,4.4746,1.1735,4.5827,1.0877,4.5827],"text":"G","confidence":1}]},{"language":"en","boundingBox":[3.2514,4.4746,3.3224,4.4746,3.3224,4.5827,3.2514,4.5827],"text":"8","words":[{"boundingBox":[3.2514,4.4746,3.3224,4.4746,3.3224,4.5827,3.2514,4.5827],"text":"8","confidence":1}]},{"language":"en","boundingBox":[5.4184,4.4746,5.781,4.4746,5.781,4.5827,5.4184,4.5827],"text":"22.00","words":[{"boundingBox":[5.4184,4.4746,5.781,4.4746,5.781,4.5827,5.4184,4.5827],"text":"22.00","confidence":1}]},{"language":"en","boundingBox":[5.5075,4.8981,6.632,4.8981,6.632,5.0131,5.5075,5.0131],"text":"Subtotal: + 300.00","words":[{"boundingBox":[5.5075,4.8981,6.1249,4.8981,6.1249,5.0131,5.5075,5.0131],"text":"Subtotal:","confidence":1},{"boundingBox":[6.1794,4.9042,6.632,4.9042,6.632,5.0131,6.1794,5.0131],"text":"300.00","confidence":1}]},{"language":"en","boundingBox":[5.5034,5.1245,6.2022,5.1245,6.2022,5.2333,5.5034,5.2333],"text":"Tax: + 30.00","words":[{"boundingBox":[5.5034,5.1263,5.7812,5.1263,5.7812,5.2333,5.5034,5.2333],"text":"Tax:","confidence":1},{"boundingBox":[5.836,5.1245,6.2022,5.1245,6.2022,5.2333,5.836,5.2333],"text":"30.00","confidence":1}]},{"language":"en","boundingBox":[5.5034,5.3412,6.2587,5.3412,6.2587,5.481,5.5034,5.481],"text":"Tip: + 100.00","words":[{"boundingBox":[5.5034,5.3412,5.7515,5.3412,5.7515,5.481,5.5034,5.481],"text":"Tip:","confidence":1},{"boundingBox":[5.811,5.3445,6.2587,5.3445,6.2587,5.4533,5.811,5.4533],"text":"100.00","confidence":1}]},{"language":"en","boundingBox":[5.5034,5.5583,6.3987,5.5583,6.3987,5.6733,5.5034,5.6733],"text":"Total: + 430.00","words":[{"boundingBox":[5.5034,5.5583,5.8915,5.5583,5.8915,5.6733,5.5034,5.6733],"text":"Total:","confidence":1},{"boundingBox":[5.942,5.5645,6.3987,5.5645,6.3987,5.6733,5.942,5.6733],"text":"430.00","confidence":1}]},{"language":"en","boundingBox":[1.0055,6.6553,3.8342,6.6553,3.8342,6.7981,1.0055,6.7981],"text":"Signature: + ____ Bilbo Baggins__________","words":[{"boundingBox":[1.0055,6.6581,1.6987,6.6581,1.6987,6.7981,1.0055,6.7981],"text":"Signature:","confidence":1},{"boundingBox":[1.747,6.7829,2.0809,6.7829,2.0809,6.7981,1.747,6.7981],"text":"____","confidence":1},{"boundingBox":[2.0925,6.6553,2.4278,6.6553,2.4278,6.7703,2.0925,6.7703],"text":"Bilbo","confidence":1},{"boundingBox":[2.4823,6.6581,3.8342,6.6581,3.8342,6.7981,2.4823,6.7981],"text":"Baggins__________","confidence":1}]}]},{"page":2,"language":"en","angle":0,"width":8.4967,"height":10.9967,"unit":"inch","lines":[]},{"page":3,"language":"en","angle":0,"width":8.5,"height":11,"unit":"inch","lines":[{"language":"en","boundingBox":[0.8861,1.1217,2.3734,1.1217,2.3734,1.2812,0.8861,1.2812],"text":"Company + B Invoice","words":[{"boundingBox":[0.8861,1.1232,1.6203,1.1232,1.6203,1.2812,0.8861,1.2812],"text":"Company","confidence":1},{"boundingBox":[1.6836,1.1248,1.764,1.1248,1.764,1.2469,1.6836,1.2469],"text":"B","confidence":1},{"boundingBox":[1.8336,1.1217,2.3734,1.1217,2.3734,1.2485,1.8336,1.2485],"text":"Invoice","confidence":1}]},{"language":"en","boundingBox":[6.0211,1.0656,7.0357,1.0656,7.0357,1.2121,6.0211,1.2121],"text":"Invoice + For:","words":[{"boundingBox":[6.0211,1.0656,6.6362,1.0656,6.6362,1.2121,6.0211,1.2121],"text":"Invoice","confidence":1},{"boundingBox":[6.7147,1.0691,7.0357,1.0691,7.0357,1.2121,6.7147,1.2121],"text":"For:","confidence":1}]},{"language":"en","boundingBox":[0.8791,1.4825,1.5657,1.4825,1.5657,1.6155,0.8791,1.6155],"text":"Address:","words":[{"boundingBox":[0.8791,1.4825,1.5657,1.4825,1.5657,1.6155,0.8791,1.6155],"text":"Address:","confidence":1}]},{"language":"en","boundingBox":[6.0164,1.4506,6.9506,1.4506,6.9506,1.5931,6.0164,1.5931],"text":"Frodo + Baggins","words":[{"boundingBox":[6.0164,1.4506,6.3895,1.4506,6.3895,1.5649,6.0164,1.5649],"text":"Frodo","confidence":1},{"boundingBox":[6.45,1.4556,6.9506,1.4556,6.9506,1.5931,6.45,1.5931],"text":"Baggins","confidence":1}]},{"language":"en","boundingBox":[6.0165,1.6707,7.1006,1.6707,7.1006,1.7854,6.0165,1.7854],"text":"123 + Hobbit Lane","words":[{"boundingBox":[6.0165,1.6772,6.2434,1.6772,6.2434,1.7854,6.0165,1.7854],"text":"123","confidence":1},{"boundingBox":[6.3033,1.6707,6.7463,1.6707,6.7463,1.7854,6.3033,1.7854],"text":"Hobbit","confidence":1},{"boundingBox":[6.803,1.6782,7.1006,1.6782,7.1006,1.7854,6.803,1.7854],"text":"Lane","confidence":1}]},{"language":"en","boundingBox":[0.8852,1.846,1.713,1.846,1.713,1.9554,0.8852,1.9554],"text":"567 + Main St.","words":[{"boundingBox":[0.8852,1.8472,1.1203,1.8472,1.1203,1.9554,0.8852,1.9554],"text":"567","confidence":1},{"boundingBox":[1.1777,1.846,1.5022,1.846,1.5022,1.9554,1.1777,1.9554],"text":"Main","confidence":1},{"boundingBox":[1.5558,1.8472,1.713,1.8472,1.713,1.9554,1.5558,1.9554],"text":"St.","confidence":1}]},{"language":"en","boundingBox":[6.0164,1.891,6.9793,1.891,6.9793,2.0275,6.0164,2.0275],"text":"Redmond, + WA","words":[{"boundingBox":[6.0164,1.891,6.6861,1.891,6.6861,2.0275,6.0164,2.0275],"text":"Redmond,","confidence":1},{"boundingBox":[6.7408,1.8982,6.9793,1.8982,6.9793,2.0044,6.7408,2.0044],"text":"WA","confidence":1}]},{"language":"en","boundingBox":[0.891,2.061,1.8537,2.061,1.8537,2.1975,0.891,2.1975],"text":"Redmond, + WA","words":[{"boundingBox":[0.891,2.061,1.5605,2.061,1.5605,2.1975,0.891,2.1975],"text":"Redmond,","confidence":1},{"boundingBox":[1.6152,2.0682,1.8537,2.0682,1.8537,2.1744,1.6152,2.1744],"text":"WA","confidence":1}]},{"language":"en","boundingBox":[6.0105,2.1187,6.9371,2.1187,6.9371,2.2254,6.0105,2.2254],"text":"555-555-5555","words":[{"boundingBox":[6.0105,2.1187,6.9371,2.1187,6.9371,2.2254,6.0105,2.2254],"text":"555-555-5555","confidence":1}]},{"language":"en","boundingBox":[0.8852,2.2887,1.8119,2.2887,1.8119,2.3954,0.8852,2.3954],"text":"555-555-5555","words":[{"boundingBox":[0.8852,2.2887,1.8119,2.2887,1.8119,2.3954,0.8852,2.3954],"text":"555-555-5555","confidence":1}]},{"language":"en","boundingBox":[1.0943,3.0018,1.3842,3.0018,1.3842,3.109,1.0943,3.109],"text":"Item","words":[{"boundingBox":[1.0943,3.0018,1.3842,3.0018,1.3842,3.109,1.0943,3.109],"text":"Item","confidence":1}]},{"language":"en","boundingBox":[3.2527,2.9996,3.8367,2.9996,3.8367,3.1371,3.2527,3.1371],"text":"Quantity","words":[{"boundingBox":[3.2527,2.9996,3.8367,2.9996,3.8367,3.1371,3.2527,3.1371],"text":"Quantity","confidence":1}]},{"language":"en","boundingBox":[5.423,2.9996,5.7372,2.9996,5.7372,3.109,5.423,3.109],"text":"Price","words":[{"boundingBox":[5.423,2.9996,5.7372,2.9996,5.7372,3.109,5.423,3.109],"text":"Price","confidence":1}]},{"language":"en","boundingBox":[1.0832,3.2118,1.174,3.2118,1.174,3.318,1.0832,3.318],"text":"A","words":[{"boundingBox":[1.0832,3.2118,1.174,3.2118,1.174,3.318,1.0832,3.318],"text":"A","confidence":1}]},{"language":"en","boundingBox":[3.2589,3.2108,3.4067,3.2108,3.4067,3.319,3.2589,3.319],"text":"10","words":[{"boundingBox":[3.2589,3.2108,3.4067,3.2108,3.4067,3.319,3.2589,3.319],"text":"10","confidence":1}]},{"language":"en","boundingBox":[5.4232,3.2108,5.8617,3.2108,5.8617,3.319,5.4232,3.319],"text":"100.99","words":[{"boundingBox":[5.4232,3.2108,5.8617,3.2108,5.8617,3.319,5.4232,3.319],"text":"100.99","confidence":1}]},{"language":"en","boundingBox":[1.0943,3.4256,1.1637,3.4256,1.1637,3.531,1.0943,3.531],"text":"B","words":[{"boundingBox":[1.0943,3.4256,1.1637,3.4256,1.1637,3.531,1.0943,3.531],"text":"B","confidence":1}]},{"language":"en","boundingBox":[3.2541,3.4241,3.4067,3.4241,3.4067,3.5323,3.2541,3.5323],"text":"20","words":[{"boundingBox":[3.2541,3.4241,3.4067,3.4241,3.4067,3.5323,3.2541,3.5323],"text":"20","confidence":1}]},{"language":"en","boundingBox":[5.4232,3.4241,5.8622,3.4241,5.8622,3.5323,5.4232,3.5323],"text":"140.67","words":[{"boundingBox":[5.4232,3.4241,5.8622,3.4241,5.8622,3.5323,5.4232,3.5323],"text":"140.67","confidence":1}]},{"language":"en","boundingBox":[1.0882,3.6343,1.1647,3.6343,1.1647,3.7421,1.0882,3.7421],"text":"C","words":[{"boundingBox":[1.0882,3.6343,1.1647,3.6343,1.1647,3.7421,1.0882,3.7421],"text":"C","confidence":1}]},{"language":"en","boundingBox":[3.2486,3.6341,3.4067,3.6341,3.4067,3.7423,3.2486,3.7423],"text":"40","words":[{"boundingBox":[3.2486,3.6341,3.4067,3.6341,3.4067,3.7423,3.2486,3.7423],"text":"40","confidence":1}]},{"language":"en","boundingBox":[5.4232,3.6341,5.8634,3.6341,5.8634,3.7423,5.4232,3.7423],"text":"150.66","words":[{"boundingBox":[5.4232,3.6341,5.8634,3.6341,5.8634,3.7423,5.4232,3.7423],"text":"150.66","confidence":1}]},{"language":"en","boundingBox":[1.0943,3.8456,1.1753,3.8456,1.1753,3.951,1.0943,3.951],"text":"D","words":[{"boundingBox":[1.0943,3.8456,1.1753,3.8456,1.1753,3.951,1.0943,3.951],"text":"D","confidence":1}]},{"language":"en","boundingBox":[3.2589,3.8441,3.4067,3.8441,3.4067,3.9523,3.2589,3.9523],"text":"10","words":[{"boundingBox":[3.2589,3.8441,3.4067,3.8441,3.4067,3.9523,3.2589,3.9523],"text":"10","confidence":1}]},{"language":"en","boundingBox":[5.4232,3.8441,5.8642,3.8441,5.8642,3.9523,5.4232,3.9523],"text":"120.00","words":[{"boundingBox":[5.4232,3.8441,5.8642,3.8441,5.8642,3.9523,5.4232,3.9523],"text":"120.00","confidence":1}]},{"language":"en","boundingBox":[1.0943,4.0561,1.153,4.0561,1.153,4.1614,1.0943,4.1614],"text":"E","words":[{"boundingBox":[1.0943,4.0561,1.153,4.0561,1.153,4.1614,1.0943,4.1614],"text":"E","confidence":1}]},{"language":"en","boundingBox":[3.2486,4.0546,3.4067,4.0546,3.4067,4.1627,3.2486,4.1627],"text":"40","words":[{"boundingBox":[3.2486,4.0546,3.4067,4.0546,3.4067,4.1627,3.2486,4.1627],"text":"40","confidence":1}]},{"language":"en","boundingBox":[5.4232,4.0546,5.8644,4.0546,5.8644,4.1627,5.4232,4.1627],"text":"100.00","words":[{"boundingBox":[5.4232,4.0546,5.8644,4.0546,5.8644,4.1627,5.4232,4.1627],"text":"100.00","confidence":1}]},{"language":"en","boundingBox":[1.0943,4.2661,1.1497,4.2661,1.1497,4.3717,1.0943,4.3717],"text":"F","words":[{"boundingBox":[1.0943,4.2661,1.1497,4.2661,1.1497,4.3717,1.0943,4.3717],"text":"F","confidence":1}]},{"language":"en","boundingBox":[3.2534,4.2646,3.4067,4.2646,3.4067,4.3727,3.2534,4.3727],"text":"60","words":[{"boundingBox":[3.2534,4.2646,3.4067,4.2646,3.4067,4.3727,3.2534,4.3727],"text":"60","confidence":1}]},{"language":"en","boundingBox":[5.4232,4.2646,5.8642,4.2646,5.8642,4.3727,5.4232,4.3727],"text":"120.00","words":[{"boundingBox":[5.4232,4.2646,5.8642,4.2646,5.8642,4.3727,5.4232,4.3727],"text":"120.00","confidence":1}]},{"language":"en","boundingBox":[1.0877,4.4746,1.1735,4.4746,1.1735,4.5827,1.0877,4.5827],"text":"G","words":[{"boundingBox":[1.0877,4.4746,1.1735,4.4746,1.1735,4.5827,1.0877,4.5827],"text":"G","confidence":1}]},{"language":"en","boundingBox":[3.2514,4.4746,3.4067,4.4746,3.4067,4.5827,3.2514,4.5827],"text":"80","words":[{"boundingBox":[3.2514,4.4746,3.4067,4.4746,3.4067,4.5827,3.2514,4.5827],"text":"80","confidence":1}]},{"language":"en","boundingBox":[5.4184,4.4746,5.8644,4.4746,5.8644,4.5827,5.4184,4.5827],"text":"220.00","words":[{"boundingBox":[5.4184,4.4746,5.8644,4.4746,5.8644,4.5827,5.4184,4.5827],"text":"220.00","confidence":1}]},{"language":"en","boundingBox":[5.5075,4.8981,6.7158,4.8981,6.7158,5.0131,5.5075,5.0131],"text":"Subtotal: + 3000.00","words":[{"boundingBox":[5.5075,4.8981,6.1249,4.8981,6.1249,5.0131,5.5075,5.0131],"text":"Subtotal:","confidence":1},{"boundingBox":[6.1794,4.9042,6.7158,4.9042,6.7158,5.0131,6.1794,5.0131],"text":"3000.00","confidence":1}]},{"language":"en","boundingBox":[5.5034,5.1245,6.2887,5.1245,6.2887,5.2333,5.5034,5.2333],"text":"Tax: + 300.00","words":[{"boundingBox":[5.5034,5.1263,5.7812,5.1263,5.7812,5.2333,5.5034,5.2333],"text":"Tax:","confidence":1},{"boundingBox":[5.836,5.1245,6.2887,5.1245,6.2887,5.2333,5.836,5.2333],"text":"300.00","confidence":1}]},{"language":"en","boundingBox":[5.5034,5.3412,6.3422,5.3412,6.3422,5.481,5.5034,5.481],"text":"Tip: + 1000.00","words":[{"boundingBox":[5.5034,5.3412,5.7515,5.3412,5.7515,5.481,5.5034,5.481],"text":"Tip:","confidence":1},{"boundingBox":[5.811,5.3445,6.3422,5.3445,6.3422,5.4533,5.811,5.4533],"text":"1000.00","confidence":1}]},{"language":"en","boundingBox":[5.5034,5.5583,6.4825,5.5583,6.4825,5.6733,5.5034,5.6733],"text":"Total: + 4300.00","words":[{"boundingBox":[5.5034,5.5583,5.8915,5.5583,5.8915,5.6733,5.5034,5.6733],"text":"Total:","confidence":1},{"boundingBox":[5.942,5.5645,6.4825,5.5645,6.4825,5.6733,5.942,5.6733],"text":"4300.00","confidence":1}]},{"language":"en","boundingBox":[1.0055,6.6556,3.8842,6.6556,3.8842,6.7981,1.0055,6.7981],"text":"Signature: + ____ Frodo Baggins__________","words":[{"boundingBox":[1.0055,6.6581,1.6987,6.6581,1.6987,6.7981,1.0055,6.7981],"text":"Signature:","confidence":1},{"boundingBox":[1.747,6.7829,2.0809,6.7829,2.0809,6.7981,1.747,6.7981],"text":"____","confidence":1},{"boundingBox":[2.0925,6.6556,2.4778,6.6556,2.4778,6.7703,2.0925,6.7703],"text":"Frodo","confidence":1},{"boundingBox":[2.5325,6.6581,3.8842,6.6581,3.8842,6.7981,2.5325,6.7981],"text":"Baggins__________","confidence":1}]}]}],"pageResults":[{"page":1,"tables":[{"rows":8,"columns":3,"cells":[{"rowIndex":0,"columnIndex":0,"text":"Item","boundingBox":[1.0037,2.9443,3.1681,2.9443,3.1681,3.1543,1.0037,3.1543],"elements":["#/readResults/0/lines/10/words/0"]},{"rowIndex":0,"columnIndex":1,"text":"Quantity","boundingBox":[3.1681,2.9443,5.3353,2.9443,5.3353,3.1543,3.1681,3.1543],"elements":["#/readResults/0/lines/11/words/0"]},{"rowIndex":0,"columnIndex":2,"text":"Price","boundingBox":[5.3353,2.9443,7.4997,2.9443,7.4997,3.1543,5.3353,3.1543],"elements":["#/readResults/0/lines/12/words/0"]},{"rowIndex":1,"columnIndex":0,"text":"A","boundingBox":[1.0037,3.1543,3.1681,3.1543,3.1681,3.3643,1.0037,3.3643],"elements":["#/readResults/0/lines/13/words/0"]},{"rowIndex":1,"columnIndex":1,"text":"1","boundingBox":[3.1681,3.1543,5.3353,3.1543,5.3353,3.3643,3.1681,3.3643],"elements":["#/readResults/0/lines/14/words/0"]},{"rowIndex":1,"columnIndex":2,"text":"10.99","boundingBox":[5.3353,3.1543,7.4997,3.1543,7.4997,3.3643,5.3353,3.3643],"elements":["#/readResults/0/lines/15/words/0"]},{"rowIndex":2,"columnIndex":0,"text":"B","boundingBox":[1.0037,3.3643,3.1681,3.3643,3.1681,3.5776,1.0037,3.5776],"elements":["#/readResults/0/lines/16/words/0"]},{"rowIndex":2,"columnIndex":1,"text":"2","boundingBox":[3.1681,3.3643,5.3353,3.3643,5.3353,3.5776,3.1681,3.5776],"elements":["#/readResults/0/lines/17/words/0"]},{"rowIndex":2,"columnIndex":2,"text":"14.67","boundingBox":[5.3353,3.3643,7.4997,3.3643,7.4997,3.5776,5.3353,3.5776],"elements":["#/readResults/0/lines/18/words/0"]},{"rowIndex":3,"columnIndex":0,"text":"C","boundingBox":[1.0037,3.5776,3.1681,3.5776,3.1681,3.7876,1.0037,3.7876],"elements":["#/readResults/0/lines/19/words/0"]},{"rowIndex":3,"columnIndex":1,"text":"4","boundingBox":[3.1681,3.5776,5.3353,3.5776,5.3353,3.7876,3.1681,3.7876],"elements":["#/readResults/0/lines/20/words/0"]},{"rowIndex":3,"columnIndex":2,"text":"15.66","boundingBox":[5.3353,3.5776,7.4997,3.5776,7.4997,3.7876,5.3353,3.7876],"elements":["#/readResults/0/lines/21/words/0"]},{"rowIndex":4,"columnIndex":0,"text":"D","boundingBox":[1.0037,3.7876,3.1681,3.7876,3.1681,3.9976,1.0037,3.9976],"elements":["#/readResults/0/lines/22/words/0"]},{"rowIndex":4,"columnIndex":1,"text":"1","boundingBox":[3.1681,3.7876,5.3353,3.7876,5.3353,3.9976,3.1681,3.9976],"elements":["#/readResults/0/lines/23/words/0"]},{"rowIndex":4,"columnIndex":2,"text":"12.00","boundingBox":[5.3353,3.7876,7.4997,3.7876,7.4997,3.9976,5.3353,3.9976],"elements":["#/readResults/0/lines/24/words/0"]},{"rowIndex":5,"columnIndex":0,"text":"E","boundingBox":[1.0037,3.9976,3.1681,3.9976,3.1681,4.2081,1.0037,4.2081],"elements":["#/readResults/0/lines/25/words/0"]},{"rowIndex":5,"columnIndex":1,"text":"4","boundingBox":[3.1681,3.9976,5.3353,3.9976,5.3353,4.2081,3.1681,4.2081],"elements":["#/readResults/0/lines/26/words/0"]},{"rowIndex":5,"columnIndex":2,"text":"10.00","boundingBox":[5.3353,3.9976,7.4997,3.9976,7.4997,4.2081,5.3353,4.2081],"elements":["#/readResults/0/lines/27/words/0"]},{"rowIndex":6,"columnIndex":0,"text":"F","boundingBox":[1.0037,4.2081,3.1681,4.2081,3.1681,4.4181,1.0037,4.4181],"elements":["#/readResults/0/lines/28/words/0"]},{"rowIndex":6,"columnIndex":1,"text":"6","boundingBox":[3.1681,4.2081,5.3353,4.2081,5.3353,4.4181,3.1681,4.4181],"elements":["#/readResults/0/lines/29/words/0"]},{"rowIndex":6,"columnIndex":2,"text":"12.00","boundingBox":[5.3353,4.2081,7.4997,4.2081,7.4997,4.4181,5.3353,4.4181],"elements":["#/readResults/0/lines/30/words/0"]},{"rowIndex":7,"columnIndex":0,"text":"G","boundingBox":[1.0037,4.4181,3.1681,4.4181,3.1681,4.6281,1.0037,4.6281],"elements":["#/readResults/0/lines/31/words/0"]},{"rowIndex":7,"columnIndex":1,"text":"8","boundingBox":[3.1681,4.4181,5.3353,4.4181,5.3353,4.6281,3.1681,4.6281],"elements":["#/readResults/0/lines/32/words/0"]},{"rowIndex":7,"columnIndex":2,"text":"22.00","boundingBox":[5.3353,4.4181,7.4997,4.4181,7.4997,4.6281,5.3353,4.6281],"elements":["#/readResults/0/lines/33/words/0"]}]}]},{"page":2,"tables":[]},{"page":3,"tables":[{"rows":8,"columns":3,"cells":[{"rowIndex":0,"columnIndex":0,"text":"Item","boundingBox":[1.0037,2.9443,3.1681,2.9443,3.1681,3.1543,1.0037,3.1543],"elements":["#/readResults/2/lines/10/words/0"]},{"rowIndex":0,"columnIndex":1,"text":"Quantity","boundingBox":[3.1681,2.9443,5.3353,2.9443,5.3353,3.1543,3.1681,3.1543],"elements":["#/readResults/2/lines/11/words/0"]},{"rowIndex":0,"columnIndex":2,"text":"Price","boundingBox":[5.3353,2.9443,7.4997,2.9443,7.4997,3.1543,5.3353,3.1543],"elements":["#/readResults/2/lines/12/words/0"]},{"rowIndex":1,"columnIndex":0,"text":"A","boundingBox":[1.0037,3.1543,3.1681,3.1543,3.1681,3.3643,1.0037,3.3643],"elements":["#/readResults/2/lines/13/words/0"]},{"rowIndex":1,"columnIndex":1,"text":"10","boundingBox":[3.1681,3.1543,5.3353,3.1543,5.3353,3.3643,3.1681,3.3643],"elements":["#/readResults/2/lines/14/words/0"]},{"rowIndex":1,"columnIndex":2,"text":"100.99","boundingBox":[5.3353,3.1543,7.4997,3.1543,7.4997,3.3643,5.3353,3.3643],"elements":["#/readResults/2/lines/15/words/0"]},{"rowIndex":2,"columnIndex":0,"text":"B","boundingBox":[1.0037,3.3643,3.1681,3.3643,3.1681,3.5776,1.0037,3.5776],"elements":["#/readResults/2/lines/16/words/0"]},{"rowIndex":2,"columnIndex":1,"text":"20","boundingBox":[3.1681,3.3643,5.3353,3.3643,5.3353,3.5776,3.1681,3.5776],"elements":["#/readResults/2/lines/17/words/0"]},{"rowIndex":2,"columnIndex":2,"text":"140.67","boundingBox":[5.3353,3.3643,7.4997,3.3643,7.4997,3.5776,5.3353,3.5776],"elements":["#/readResults/2/lines/18/words/0"]},{"rowIndex":3,"columnIndex":0,"text":"C","boundingBox":[1.0037,3.5776,3.1681,3.5776,3.1681,3.7876,1.0037,3.7876],"elements":["#/readResults/2/lines/19/words/0"]},{"rowIndex":3,"columnIndex":1,"text":"40","boundingBox":[3.1681,3.5776,5.3353,3.5776,5.3353,3.7876,3.1681,3.7876],"elements":["#/readResults/2/lines/20/words/0"]},{"rowIndex":3,"columnIndex":2,"text":"150.66","boundingBox":[5.3353,3.5776,7.4997,3.5776,7.4997,3.7876,5.3353,3.7876],"elements":["#/readResults/2/lines/21/words/0"]},{"rowIndex":4,"columnIndex":0,"text":"D","boundingBox":[1.0037,3.7876,3.1681,3.7876,3.1681,3.9976,1.0037,3.9976],"elements":["#/readResults/2/lines/22/words/0"]},{"rowIndex":4,"columnIndex":1,"text":"10","boundingBox":[3.1681,3.7876,5.3353,3.7876,5.3353,3.9976,3.1681,3.9976],"elements":["#/readResults/2/lines/23/words/0"]},{"rowIndex":4,"columnIndex":2,"text":"120.00","boundingBox":[5.3353,3.7876,7.4997,3.7876,7.4997,3.9976,5.3353,3.9976],"elements":["#/readResults/2/lines/24/words/0"]},{"rowIndex":5,"columnIndex":0,"text":"E","boundingBox":[1.0037,3.9976,3.1681,3.9976,3.1681,4.2081,1.0037,4.2081],"elements":["#/readResults/2/lines/25/words/0"]},{"rowIndex":5,"columnIndex":1,"text":"40","boundingBox":[3.1681,3.9976,5.3353,3.9976,5.3353,4.2081,3.1681,4.2081],"elements":["#/readResults/2/lines/26/words/0"]},{"rowIndex":5,"columnIndex":2,"text":"100.00","boundingBox":[5.3353,3.9976,7.4997,3.9976,7.4997,4.2081,5.3353,4.2081],"elements":["#/readResults/2/lines/27/words/0"]},{"rowIndex":6,"columnIndex":0,"text":"F","boundingBox":[1.0037,4.2081,3.1681,4.2081,3.1681,4.4181,1.0037,4.4181],"elements":["#/readResults/2/lines/28/words/0"]},{"rowIndex":6,"columnIndex":1,"text":"60","boundingBox":[3.1681,4.2081,5.3353,4.2081,5.3353,4.4181,3.1681,4.4181],"elements":["#/readResults/2/lines/29/words/0"]},{"rowIndex":6,"columnIndex":2,"text":"120.00","boundingBox":[5.3353,4.2081,7.4997,4.2081,7.4997,4.4181,5.3353,4.4181],"elements":["#/readResults/2/lines/30/words/0"]},{"rowIndex":7,"columnIndex":0,"text":"G","boundingBox":[1.0037,4.4181,3.1681,4.4181,3.1681,4.6281,1.0037,4.6281],"elements":["#/readResults/2/lines/31/words/0"]},{"rowIndex":7,"columnIndex":1,"text":"80","boundingBox":[3.1681,4.4181,5.3353,4.4181,5.3353,4.6281,3.1681,4.6281],"elements":["#/readResults/2/lines/32/words/0"]},{"rowIndex":7,"columnIndex":2,"text":"220.00","boundingBox":[5.3353,4.4181,7.4997,4.4181,7.4997,4.6281,5.3353,4.6281],"elements":["#/readResults/2/lines/33/words/0"]}]}]}],"documentResults":[{"docType":"custom:form","pageRange":[1,3],"fields":{"FirstPrice":{"type":"string","valueString":"10.99","text":"10.99","page":1,"boundingBox":[5.425,3.21,5.78,3.21,5.78,3.3200000000000003,5.425,3.3200000000000003],"confidence":1.0,"elements":["#/analyzeResult/readResults/0/lines/15/words/0"]},"Tax":{"type":"string","valueString":"30.00","text":"30.00","page":1,"boundingBox":[5.835,5.125,6.2,5.125,6.2,5.235,5.835,5.235],"confidence":1.0,"elements":["#/analyzeResult/readResults/0/lines/35/words/1"]},"MerchantAddress":{"type":"string","valueString":"567 + Main St. Redmond, WA","text":"567 Main St. Redmond, WA","page":1,"boundingBox":[0.885,1.845,1.855,1.845,1.855,2.2,0.885,2.2],"confidence":1.0,"elements":["#/analyzeResult/readResults/0/lines/5/words/0","#/analyzeResult/readResults/0/lines/5/words/1","#/analyzeResult/readResults/0/lines/5/words/2","#/analyzeResult/readResults/0/lines/7/words/0","#/analyzeResult/readResults/0/lines/7/words/1"]},"CustomerPhoneNumber":{"type":"string","valueString":"555-555-5555","text":"555-555-5555","page":1,"boundingBox":[6.01,2.12,6.9350000000000005,2.12,6.9350000000000005,2.225,6.01,2.225],"confidence":1.0,"elements":["#/analyzeResult/readResults/0/lines/8/words/0"]},"Subtotal":{"type":"string","valueString":"300.00","text":"300.00","page":1,"boundingBox":[6.18,4.905,6.63,4.905,6.63,5.015,6.18,5.015],"confidence":1.0,"elements":["#/analyzeResult/readResults/0/lines/34/words/1"]},"Total":{"type":"string","valueString":"430.00","text":"430.00","page":1,"boundingBox":[5.94,5.565,6.4,5.565,6.4,5.675,5.94,5.675],"confidence":1.0,"elements":["#/analyzeResult/readResults/0/lines/37/words/1"]},"MerchantPhoneNumber":{"type":"string","valueString":"555-555-5555","text":"555-555-5555","page":1,"boundingBox":[0.885,2.29,1.81,2.29,1.81,2.395,0.885,2.395],"confidence":1.0,"elements":["#/analyzeResult/readResults/0/lines/9/words/0"]},"Signature2":{"type":"string","valueString":"Frodo + Baggins","text":"Frodo Baggins","page":3,"boundingBox":[2.09,6.655,3.09,6.655,3.09,6.8,2.09,6.8],"confidence":1.0,"elements":["#/analyzeResult/readResults/2/lines/38/words/2","#/analyzeResult/readResults/2/lines/38/words/3"]},"CustomerName":{"type":"string","valueString":"Bilbo + Baggins","text":"Bilbo Baggins","page":1,"boundingBox":[6.0150000000000006,1.45,6.8950000000000005,1.45,6.8950000000000005,1.595,6.0150000000000006,1.595],"confidence":1.0,"elements":["#/analyzeResult/readResults/0/lines/3/words/0","#/analyzeResult/readResults/0/lines/3/words/1"]},"FirstQuantity":{"type":"string","valueString":"1","text":"1","page":1,"boundingBox":[3.2600000000000002,3.21,3.3200000000000003,3.21,3.3200000000000003,3.3200000000000003,3.2600000000000002,3.3200000000000003],"confidence":1.0,"elements":["#/analyzeResult/readResults/0/lines/14/words/0"]},"Signature":{"type":"string","valueString":"Bilbo + Baggins","text":"Bilbo Baggins","page":1,"boundingBox":[2.09,6.655,3.04,6.655,3.04,6.8,2.09,6.8],"confidence":1.0,"elements":["#/analyzeResult/readResults/0/lines/38/words/2","#/analyzeResult/readResults/0/lines/38/words/3"]},"CustomerAddress":{"type":"string","valueString":"123 + Hobbit Lane Redmond, WA","text":"123 Hobbit Lane Redmond, WA","page":1,"boundingBox":[6.0150000000000006,1.67,7.1000000000000005,1.67,7.1000000000000005,2.0300000000000002,6.0150000000000006,2.0300000000000002],"confidence":1.0,"elements":["#/analyzeResult/readResults/0/lines/4/words/0","#/analyzeResult/readResults/0/lines/4/words/1","#/analyzeResult/readResults/0/lines/4/words/2","#/analyzeResult/readResults/0/lines/6/words/0","#/analyzeResult/readResults/0/lines/6/words/1"]},"Tip":{"type":"string","valueString":"100.00","text":"100.00","page":1,"boundingBox":[5.8100000000000005,5.345,6.26,5.345,6.26,5.455,5.8100000000000005,5.455],"confidence":1.0,"elements":["#/analyzeResult/readResults/0/lines/36/words/1"]},"Merchant":{"type":"string","valueString":"A","text":"A","page":1,"boundingBox":[1.67,1.125,1.7750000000000001,1.125,1.7750000000000001,1.245,1.67,1.245],"confidence":1.0,"elements":["#/analyzeResult/readResults/0/lines/0/words/1"]},"FirstItem":{"type":"string","valueString":"A","text":"A","page":1,"boundingBox":[1.085,3.21,1.175,3.21,1.175,3.3200000000000003,1.085,3.3200000000000003],"confidence":1.0,"elements":["#/analyzeResult/readResults/0/lines/13/words/0"]},"Customer2":{"type":"string","valueString":"Frodo + Baggins","text":"Frodo Baggins","page":3,"boundingBox":[6.0150000000000006,1.45,6.95,1.45,6.95,1.595,6.0150000000000006,1.595],"confidence":1.0,"elements":["#/analyzeResult/readResults/2/lines/3/words/0","#/analyzeResult/readResults/2/lines/3/words/1"]},"Total2":{"type":"string","valueString":"4300.00","text":"4300.00","page":3,"boundingBox":[5.94,5.565,6.48,5.565,6.48,5.675,5.94,5.675],"confidence":1.0,"elements":["#/analyzeResult/readResults/2/lines/37/words/1"]},"Merchant2":{"type":"string","valueString":"Company","text":"Company","page":1,"boundingBox":[0.885,1.125,1.62,1.125,1.62,1.28,0.885,1.28],"confidence":1.0,"elements":["#/analyzeResult/readResults/0/lines/0/words/0"]}}}],"errors":[]}}' + headers: + apim-request-id: 96785b07-2e10-4d4c-87c7-463fda30d479 + content-type: application/json; charset=utf-8 + date: Thu, 30 Apr 2020 23:49:14 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + transfer-encoding: chunked + x-content-type-options: nosniff + x-envoy-upstream-service-time: '46' + status: + code: 200 + message: OK + url: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/6322ba2f-c632-40c4-98a1-ec2a62822f8b/analyzeresults/10dca97e-349e-41a2-850d-29b98a4a0484 +version: 1 diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_custom_forms_from_url_async.test_multipage_unlabeled_transform.yaml b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_custom_forms_from_url_async.test_multipage_unlabeled_transform.yaml new file mode 100644 index 000000000000..cd5f715b7fd1 --- /dev/null +++ b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_custom_forms_from_url_async.test_multipage_unlabeled_transform.yaml @@ -0,0 +1,180 @@ +interactions: +- request: + body: 'b''{"source": "containersasurl", "sourceFilter": {"prefix": "", "includeSubFolders": + false}, "useLabelFile": false}''' + headers: + Content-Length: + - '301' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models + response: + body: + string: '' + headers: + apim-request-id: 37238d11-dbec-4e11-8db0-4477fb5a7e45 + content-length: '0' + date: Thu, 30 Apr 2020 23:47:07 GMT + location: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/d60aa71d-0ce2-440f-8b60-1a40c77d0b9a + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '67' + status: + code: 201 + message: Created + url: https://westus.api.cognitive.microsoft.com//formrecognizer/v2.0-preview/custom/models +- request: + body: null + headers: + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/d60aa71d-0ce2-440f-8b60-1a40c77d0b9a?includeKeys=true + response: + body: + string: '{"modelInfo":{"modelId":"d60aa71d-0ce2-440f-8b60-1a40c77d0b9a","status":"creating","createdDateTime":"2020-04-30T23:47:07Z","lastUpdatedDateTime":"2020-04-30T23:47:07Z"}}' + headers: + apim-request-id: d789b9bc-5caf-4d21-aa29-33de031771db + content-type: application/json; charset=utf-8 + date: Thu, 30 Apr 2020 23:47:12 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + transfer-encoding: chunked + x-content-type-options: nosniff + x-envoy-upstream-service-time: '111' + status: + code: 200 + message: OK + url: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/d60aa71d-0ce2-440f-8b60-1a40c77d0b9a?includeKeys=true +- request: + body: null + headers: + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/d60aa71d-0ce2-440f-8b60-1a40c77d0b9a?includeKeys=true + response: + body: + string: '{"modelInfo":{"modelId":"d60aa71d-0ce2-440f-8b60-1a40c77d0b9a","status":"ready","createdDateTime":"2020-04-30T23:47:07Z","lastUpdatedDateTime":"2020-04-30T23:47:17Z"},"keys":{"clusters":{"0":["Address:","Invoice + For:","Redmond, WA","Signature:","Subtotal:","Tax:","Tip:","Total:"]}},"trainResult":{"trainingDocuments":[{"documentName":"multipage_invoice1.pdf","pages":3,"errors":[],"status":"succeeded"},{"documentName":"multipage_invoice2.pdf","pages":3,"errors":[],"status":"succeeded"},{"documentName":"multipage_invoice3.pdf","pages":3,"errors":[],"status":"succeeded"},{"documentName":"multipage_invoice4.pdf","pages":3,"errors":[],"status":"succeeded"},{"documentName":"multipage_invoice5.pdf","pages":3,"errors":[],"status":"succeeded"}],"errors":[]}}' + headers: + apim-request-id: 4b34d1f1-711a-4a67-99f3-dbfb9821ed9a + content-type: application/json; charset=utf-8 + date: Thu, 30 Apr 2020 23:47:18 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + transfer-encoding: chunked + x-content-type-options: nosniff + x-envoy-upstream-service-time: '358' + status: + code: 200 + message: OK + url: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/d60aa71d-0ce2-440f-8b60-1a40c77d0b9a?includeKeys=true +- request: + body: 'b''{"source": "blob_sas_url"}''' + headers: + Content-Length: + - '241' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/d60aa71d-0ce2-440f-8b60-1a40c77d0b9a/analyze?includeTextDetails=true + response: + body: + string: '' + headers: + apim-request-id: 89407d31-791c-4de6-8f0f-eb303a05df44 + content-length: '0' + date: Thu, 30 Apr 2020 23:47:18 GMT + operation-location: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/d60aa71d-0ce2-440f-8b60-1a40c77d0b9a/analyzeresults/49ce814b-e3e6-466a-863b-c9259eab75e4 + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '230' + status: + code: 202 + message: Accepted + url: https://westus.api.cognitive.microsoft.com//formrecognizer/v2.0-preview/custom/models/d60aa71d-0ce2-440f-8b60-1a40c77d0b9a/analyze?includeTextDetails=true +- request: + body: null + headers: + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/d60aa71d-0ce2-440f-8b60-1a40c77d0b9a/analyzeresults/49ce814b-e3e6-466a-863b-c9259eab75e4 + response: + body: + string: '{"status":"running","createdDateTime":"2020-04-30T23:47:18Z","lastUpdatedDateTime":"2020-04-30T23:47:20Z","analyzeResult":null}' + headers: + apim-request-id: b7fa3f8d-37a3-4c51-ba0c-e99b408a2859 + content-type: application/json; charset=utf-8 + date: Thu, 30 Apr 2020 23:47:23 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + transfer-encoding: chunked + x-content-type-options: nosniff + x-envoy-upstream-service-time: '21' + status: + code: 200 + message: OK + url: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/d60aa71d-0ce2-440f-8b60-1a40c77d0b9a/analyzeresults/49ce814b-e3e6-466a-863b-c9259eab75e4 +- request: + body: null + headers: + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/d60aa71d-0ce2-440f-8b60-1a40c77d0b9a/analyzeresults/49ce814b-e3e6-466a-863b-c9259eab75e4 + response: + body: + string: '{"status":"succeeded","createdDateTime":"2020-04-30T23:47:18Z","lastUpdatedDateTime":"2020-04-30T23:47:23Z","analyzeResult":{"version":"2.0.0","readResults":[{"page":1,"angle":0,"width":8.5,"height":11.0,"unit":"inch","lines":[{"text":"Company + A Invoice","boundingBox":[0.8764,1.1014,2.3875,1.1014,2.3875,1.2958,0.8764,1.2958],"words":[{"text":"Company","boundingBox":[0.8764,1.1014,1.6236,1.1014,1.6236,1.2958,0.8764,1.2958]},{"text":"A","boundingBox":[1.6667,1.1014,1.7778,1.1014,1.7778,1.2958,1.6667,1.2958]},{"text":"Invoice","boundingBox":[1.8222,1.1014,2.3875,1.1014,2.3875,1.2958,1.8222,1.2958]}]},{"text":"Invoice + For:","boundingBox":[6.0028,1.0431,7.0528,1.0431,7.0528,1.2667,6.0028,1.2667],"words":[{"text":"Invoice","boundingBox":[6.0028,1.0431,6.6472,1.0431,6.6472,1.2667,6.0028,1.2667]},{"text":"For:","boundingBox":[6.6958,1.0431,7.0528,1.0431,7.0528,1.2667,6.6958,1.2667]}]},{"text":"Address:","boundingBox":[0.8764,1.4681,1.5778,1.4681,1.5778,1.6625,0.8764,1.6625],"words":[{"text":"Address:","boundingBox":[0.8764,1.4681,1.5778,1.4681,1.5778,1.6625,0.8764,1.6625]}]},{"text":"Bilbo + Baggins","boundingBox":[6.0028,1.4389,6.9028,1.4389,6.9028,1.6056,6.0028,1.6056],"words":[{"text":"Bilbo","boundingBox":[6.0028,1.4389,6.3472,1.4389,6.3472,1.6056,6.0028,1.6056]},{"text":"Baggins","boundingBox":[6.3819,1.4389,6.9028,1.4389,6.9028,1.6056,6.3819,1.6056]}]},{"text":"123 + Hobbit Lane","boundingBox":[6.0028,1.6597,7.1083,1.6597,7.1083,1.8264,6.0028,1.8264],"words":[{"text":"123","boundingBox":[6.0028,1.6597,6.2542,1.6597,6.2542,1.8264,6.0028,1.8264]},{"text":"Hobbit","boundingBox":[6.2889,1.6597,6.7514,1.6597,6.7514,1.8264,6.2889,1.8264]},{"text":"Lane","boundingBox":[6.7889,1.6597,7.1083,1.6597,7.1083,1.8264,6.7889,1.8264]}]},{"text":"567 + Main St.","boundingBox":[0.8764,1.8292,1.725,1.8292,1.725,1.9958,0.8764,1.9958],"words":[{"text":"567","boundingBox":[0.8764,1.8292,1.1278,1.8292,1.1278,1.9958,0.8764,1.9958]},{"text":"Main","boundingBox":[1.1639,1.8292,1.5139,1.8292,1.5139,1.9958,1.1639,1.9958]},{"text":"St.","boundingBox":[1.55,1.8292,1.725,1.8292,1.725,1.9958,1.55,1.9958]}]},{"text":"Redmond, + WA","boundingBox":[6.0028,1.8792,6.9819,1.8792,6.9819,2.0458,6.0028,2.0458],"words":[{"text":"Redmond,","boundingBox":[6.0028,1.8792,6.6972,1.8792,6.6972,2.0458,6.0028,2.0458]},{"text":"WA","boundingBox":[6.7361,1.8792,6.9819,1.8792,6.9819,2.0458,6.7361,2.0458]}]},{"text":"Redmond, + WA","boundingBox":[0.8764,2.0486,1.8569,2.0486,1.8569,2.2153,0.8764,2.2153],"words":[{"text":"Redmond,","boundingBox":[0.8764,2.0486,1.5722,2.0486,1.5722,2.2153,0.8764,2.2153]},{"text":"WA","boundingBox":[1.6097,2.0486,1.8569,2.0486,1.8569,2.2153,1.6097,2.2153]}]},{"text":"555-555-5555","boundingBox":[6.0028,2.0986,6.9472,2.0986,6.9472,2.2653,6.0028,2.2653],"words":[{"text":"555-555-5555","boundingBox":[6.0028,2.0986,6.9472,2.0986,6.9472,2.2653,6.0028,2.2653]}]},{"text":"555-555-5555","boundingBox":[0.8764,2.2694,1.8222,2.2694,1.8222,2.4361,0.8764,2.4361],"words":[{"text":"555-555-5555","boundingBox":[0.8764,2.2694,1.8222,2.2694,1.8222,2.4361,0.8764,2.4361]}]},{"text":"Item","boundingBox":[1.0806,2.9833,1.3958,2.9833,1.3958,3.15,1.0806,3.15],"words":[{"text":"Item","boundingBox":[1.0806,2.9833,1.3958,2.9833,1.3958,3.15,1.0806,3.15]}]},{"text":"Quantity","boundingBox":[3.2444,2.9833,3.8389,2.9833,3.8389,3.15,3.2444,3.15],"words":[{"text":"Quantity","boundingBox":[3.2444,2.9833,3.8389,2.9833,3.8389,3.15,3.2444,3.15]}]},{"text":"Price","boundingBox":[5.4083,2.9833,5.7458,2.9833,5.7458,3.15,5.4083,3.15],"words":[{"text":"Price","boundingBox":[5.4083,2.9833,5.7458,2.9833,5.7458,3.15,5.4083,3.15]}]},{"text":"A","boundingBox":[1.0806,3.1931,1.1764,3.1931,1.1764,3.3597,1.0806,3.3597],"words":[{"text":"A","boundingBox":[1.0806,3.1931,1.1764,3.1931,1.1764,3.3597,1.0806,3.3597]}]},{"text":"1","boundingBox":[3.2444,3.1931,3.3292,3.1931,3.3292,3.3597,3.2444,3.3597],"words":[{"text":"1","boundingBox":[3.2444,3.1931,3.3292,3.1931,3.3292,3.3597,3.2444,3.3597]}]},{"text":"10.99","boundingBox":[5.4083,3.1931,5.7875,3.1931,5.7875,3.3597,5.4083,3.3597],"words":[{"text":"10.99","boundingBox":[5.4083,3.1931,5.7875,3.1931,5.7875,3.3597,5.4083,3.3597]}]},{"text":"B","boundingBox":[1.0806,3.4056,1.1708,3.4056,1.1708,3.5722,1.0806,3.5722],"words":[{"text":"B","boundingBox":[1.0806,3.4056,1.1708,3.4056,1.1708,3.5722,1.0806,3.5722]}]},{"text":"2","boundingBox":[3.2444,3.4056,3.3292,3.4056,3.3292,3.5722,3.2444,3.5722],"words":[{"text":"2","boundingBox":[3.2444,3.4056,3.3292,3.4056,3.3292,3.5722,3.2444,3.5722]}]},{"text":"14.67","boundingBox":[5.4083,3.4056,5.7861,3.4056,5.7861,3.5722,5.4083,3.5722],"words":[{"text":"14.67","boundingBox":[5.4083,3.4056,5.7861,3.4056,5.7861,3.5722,5.4083,3.5722]}]},{"text":"C","boundingBox":[1.0806,3.6167,1.1694,3.6167,1.1694,3.7833,1.0806,3.7833],"words":[{"text":"C","boundingBox":[1.0806,3.6167,1.1694,3.6167,1.1694,3.7833,1.0806,3.7833]}]},{"text":"4","boundingBox":[3.2444,3.6167,3.3292,3.6167,3.3292,3.7833,3.2444,3.7833],"words":[{"text":"4","boundingBox":[3.2444,3.6167,3.3292,3.6167,3.3292,3.7833,3.2444,3.7833]}]},{"text":"15.66","boundingBox":[5.4083,3.6167,5.7861,3.6167,5.7861,3.7833,5.4083,3.7833],"words":[{"text":"15.66","boundingBox":[5.4083,3.6167,5.7861,3.6167,5.7861,3.7833,5.4083,3.7833]}]},{"text":"D","boundingBox":[1.0806,3.8264,1.1833,3.8264,1.1833,3.9931,1.0806,3.9931],"words":[{"text":"D","boundingBox":[1.0806,3.8264,1.1833,3.8264,1.1833,3.9931,1.0806,3.9931]}]},{"text":"1","boundingBox":[3.2444,3.8264,3.3292,3.8264,3.3292,3.9931,3.2444,3.9931],"words":[{"text":"1","boundingBox":[3.2444,3.8264,3.3292,3.8264,3.3292,3.9931,3.2444,3.9931]}]},{"text":"12.00","boundingBox":[5.4083,3.8264,5.7861,3.8264,5.7861,3.9931,5.4083,3.9931],"words":[{"text":"12.00","boundingBox":[5.4083,3.8264,5.7861,3.8264,5.7861,3.9931,5.4083,3.9931]}]},{"text":"E","boundingBox":[1.0806,4.0361,1.1611,4.0361,1.1611,4.2028,1.0806,4.2028],"words":[{"text":"E","boundingBox":[1.0806,4.0361,1.1611,4.0361,1.1611,4.2028,1.0806,4.2028]}]},{"text":"4","boundingBox":[3.2444,4.0361,3.3292,4.0361,3.3292,4.2028,3.2444,4.2028],"words":[{"text":"4","boundingBox":[3.2444,4.0361,3.3292,4.0361,3.3292,4.2028,3.2444,4.2028]}]},{"text":"10.00","boundingBox":[5.4083,4.0361,5.7875,4.0361,5.7875,4.2028,5.4083,4.2028],"words":[{"text":"10.00","boundingBox":[5.4083,4.0361,5.7875,4.0361,5.7875,4.2028,5.4083,4.2028]}]},{"text":"F","boundingBox":[1.0806,4.2458,1.1569,4.2458,1.1569,4.4125,1.0806,4.4125],"words":[{"text":"F","boundingBox":[1.0806,4.2458,1.1569,4.2458,1.1569,4.4125,1.0806,4.4125]}]},{"text":"6","boundingBox":[3.2444,4.2458,3.3292,4.2458,3.3292,4.4125,3.2444,4.4125],"words":[{"text":"6","boundingBox":[3.2444,4.2458,3.3292,4.2458,3.3292,4.4125,3.2444,4.4125]}]},{"text":"12.00","boundingBox":[5.4083,4.2458,5.7861,4.2458,5.7861,4.4125,5.4083,4.4125],"words":[{"text":"12.00","boundingBox":[5.4083,4.2458,5.7861,4.2458,5.7861,4.4125,5.4083,4.4125]}]},{"text":"G","boundingBox":[1.0806,4.4569,1.1861,4.4569,1.1861,4.6236,1.0806,4.6236],"words":[{"text":"G","boundingBox":[1.0806,4.4569,1.1861,4.4569,1.1861,4.6236,1.0806,4.6236]}]},{"text":"8","boundingBox":[3.2444,4.4569,3.3292,4.4569,3.3292,4.6236,3.2444,4.6236],"words":[{"text":"8","boundingBox":[3.2444,4.4569,3.3292,4.4569,3.3292,4.6236,3.2444,4.6236]}]},{"text":"22.00","boundingBox":[5.4083,4.4569,5.7875,4.4569,5.7875,4.6236,5.4083,4.6236],"words":[{"text":"22.00","boundingBox":[5.4083,4.4569,5.7875,4.4569,5.7875,4.6236,5.4083,4.6236]}]},{"text":"Subtotal:","boundingBox":[5.5028,4.8861,6.1347,4.8861,6.1347,5.0528,5.5028,5.0528],"words":[{"text":"Subtotal:","boundingBox":[5.5028,4.8861,6.1347,4.8861,6.1347,5.0528,5.5028,5.0528]}]},{"text":"300.00","boundingBox":[6.1722,4.8861,6.6361,4.8861,6.6361,5.0528,6.1722,5.0528],"words":[{"text":"300.00","boundingBox":[6.1722,4.8861,6.6361,4.8861,6.6361,5.0528,6.1722,5.0528]}]},{"text":"Tax:","boundingBox":[5.5028,5.1069,5.7917,5.1069,5.7917,5.2736,5.5028,5.2736],"words":[{"text":"Tax:","boundingBox":[5.5028,5.1069,5.7917,5.1069,5.7917,5.2736,5.5028,5.2736]}]},{"text":"30.00","boundingBox":[5.8292,5.1069,6.2069,5.1069,6.2069,5.2736,5.8292,5.2736],"words":[{"text":"30.00","boundingBox":[5.8292,5.1069,6.2069,5.1069,6.2069,5.2736,5.8292,5.2736]}]},{"text":"Tip:","boundingBox":[5.5028,5.3264,5.7611,5.3264,5.7611,5.4931,5.5028,5.4931],"words":[{"text":"Tip:","boundingBox":[5.5028,5.3264,5.7611,5.3264,5.7611,5.4931,5.5028,5.4931]}]},{"text":"100.00","boundingBox":[5.7986,5.3264,6.2639,5.3264,6.2639,5.4931,5.7986,5.4931],"words":[{"text":"100.00","boundingBox":[5.7986,5.3264,6.2639,5.3264,6.2639,5.4931,5.7986,5.4931]}]},{"text":"Total:","boundingBox":[5.5028,5.5472,5.9014,5.5472,5.9014,5.7139,5.5028,5.7139],"words":[{"text":"Total:","boundingBox":[5.5028,5.5472,5.9014,5.5472,5.9014,5.7139,5.5028,5.7139]}]},{"text":"430.00","boundingBox":[5.9389,5.5472,6.4028,5.5472,6.4028,5.7139,5.9389,5.7139],"words":[{"text":"430.00","boundingBox":[5.9389,5.5472,6.4028,5.5472,6.4028,5.7139,5.9389,5.7139]}]},{"text":"Signature:","boundingBox":[1.0,6.6431,1.7083,6.6431,1.7083,6.8097,1.0,6.8097],"words":[{"text":"Signature:","boundingBox":[1.0,6.6431,1.7083,6.6431,1.7083,6.8097,1.0,6.8097]}]},{"text":"____Bilbo + Baggins__________","boundingBox":[1.7472,6.6431,3.8333,6.6431,3.8333,6.8097,1.7472,6.8097],"words":[{"text":"____Bilbo","boundingBox":[1.7472,6.6431,2.4333,6.6431,2.4333,6.8097,1.7472,6.8097]},{"text":"Baggins__________","boundingBox":[2.4708,6.6431,3.8333,6.6431,3.8333,6.8097,2.4708,6.8097]}]}]},{"page":3,"angle":0,"width":8.5,"height":11.0,"unit":"inch","lines":[{"text":"Company + B Invoice","boundingBox":[0.8764,1.1014,2.3833,1.1014,2.3833,1.2958,0.8764,1.2958],"words":[{"text":"Company","boundingBox":[0.8764,1.1014,1.6236,1.1014,1.6236,1.2958,0.8764,1.2958]},{"text":"B","boundingBox":[1.6667,1.1014,1.7722,1.1014,1.7722,1.2958,1.6667,1.2958]},{"text":"Invoice","boundingBox":[1.8167,1.1014,2.3833,1.1014,2.3833,1.2958,1.8167,1.2958]}]},{"text":"Invoice + For:","boundingBox":[6.0028,1.0431,7.0528,1.0431,7.0528,1.2667,6.0028,1.2667],"words":[{"text":"Invoice","boundingBox":[6.0028,1.0431,6.6472,1.0431,6.6472,1.2667,6.0028,1.2667]},{"text":"For:","boundingBox":[6.6958,1.0431,7.0528,1.0431,7.0528,1.2667,6.6958,1.2667]}]},{"text":"Address:","boundingBox":[0.8764,1.4681,1.5778,1.4681,1.5778,1.6625,0.8764,1.6625],"words":[{"text":"Address:","boundingBox":[0.8764,1.4681,1.5778,1.4681,1.5778,1.6625,0.8764,1.6625]}]},{"text":"Frodo + Baggins","boundingBox":[6.0028,1.4389,6.9569,1.4389,6.9569,1.6056,6.0028,1.6056],"words":[{"text":"Frodo","boundingBox":[6.0028,1.4389,6.3972,1.4389,6.3972,1.6056,6.0028,1.6056]},{"text":"Baggins","boundingBox":[6.4361,1.4389,6.9569,1.4389,6.9569,1.6056,6.4361,1.6056]}]},{"text":"123 + Hobbit Lane","boundingBox":[6.0028,1.6597,7.1083,1.6597,7.1083,1.8264,6.0028,1.8264],"words":[{"text":"123","boundingBox":[6.0028,1.6597,6.2542,1.6597,6.2542,1.8264,6.0028,1.8264]},{"text":"Hobbit","boundingBox":[6.2889,1.6597,6.7514,1.6597,6.7514,1.8264,6.2889,1.8264]},{"text":"Lane","boundingBox":[6.7889,1.6597,7.1083,1.6597,7.1083,1.8264,6.7889,1.8264]}]},{"text":"567 + Main St.","boundingBox":[0.8764,1.8292,1.725,1.8292,1.725,1.9958,0.8764,1.9958],"words":[{"text":"567","boundingBox":[0.8764,1.8292,1.1278,1.8292,1.1278,1.9958,0.8764,1.9958]},{"text":"Main","boundingBox":[1.1639,1.8292,1.5139,1.8292,1.5139,1.9958,1.1639,1.9958]},{"text":"St.","boundingBox":[1.55,1.8292,1.725,1.8292,1.725,1.9958,1.55,1.9958]}]},{"text":"Redmond, + WA","boundingBox":[6.0028,1.8792,6.9819,1.8792,6.9819,2.0458,6.0028,2.0458],"words":[{"text":"Redmond,","boundingBox":[6.0028,1.8792,6.6972,1.8792,6.6972,2.0458,6.0028,2.0458]},{"text":"WA","boundingBox":[6.7361,1.8792,6.9819,1.8792,6.9819,2.0458,6.7361,2.0458]}]},{"text":"Redmond, + WA","boundingBox":[0.8764,2.0486,1.8569,2.0486,1.8569,2.2153,0.8764,2.2153],"words":[{"text":"Redmond,","boundingBox":[0.8764,2.0486,1.5722,2.0486,1.5722,2.2153,0.8764,2.2153]},{"text":"WA","boundingBox":[1.6097,2.0486,1.8569,2.0486,1.8569,2.2153,1.6097,2.2153]}]},{"text":"555-555-5555","boundingBox":[6.0028,2.0986,6.9472,2.0986,6.9472,2.2653,6.0028,2.2653],"words":[{"text":"555-555-5555","boundingBox":[6.0028,2.0986,6.9472,2.0986,6.9472,2.2653,6.0028,2.2653]}]},{"text":"555-555-5555","boundingBox":[0.8764,2.2694,1.8222,2.2694,1.8222,2.4361,0.8764,2.4361],"words":[{"text":"555-555-5555","boundingBox":[0.8764,2.2694,1.8222,2.2694,1.8222,2.4361,0.8764,2.4361]}]},{"text":"Item","boundingBox":[1.0806,2.9833,1.3958,2.9833,1.3958,3.15,1.0806,3.15],"words":[{"text":"Item","boundingBox":[1.0806,2.9833,1.3958,2.9833,1.3958,3.15,1.0806,3.15]}]},{"text":"Quantity","boundingBox":[3.2444,2.9833,3.8389,2.9833,3.8389,3.15,3.2444,3.15],"words":[{"text":"Quantity","boundingBox":[3.2444,2.9833,3.8389,2.9833,3.8389,3.15,3.2444,3.15]}]},{"text":"Price","boundingBox":[5.4083,2.9833,5.7458,2.9833,5.7458,3.15,5.4083,3.15],"words":[{"text":"Price","boundingBox":[5.4083,2.9833,5.7458,2.9833,5.7458,3.15,5.4083,3.15]}]},{"text":"A","boundingBox":[1.0806,3.1931,1.1764,3.1931,1.1764,3.3597,1.0806,3.3597],"words":[{"text":"A","boundingBox":[1.0806,3.1931,1.1764,3.1931,1.1764,3.3597,1.0806,3.3597]}]},{"text":"10","boundingBox":[3.2444,3.1931,3.4125,3.1931,3.4125,3.3597,3.2444,3.3597],"words":[{"text":"10","boundingBox":[3.2444,3.1931,3.4125,3.1931,3.4125,3.3597,3.2444,3.3597]}]},{"text":"100.99","boundingBox":[5.4083,3.1931,5.8708,3.1931,5.8708,3.3597,5.4083,3.3597],"words":[{"text":"100.99","boundingBox":[5.4083,3.1931,5.8708,3.1931,5.8708,3.3597,5.4083,3.3597]}]},{"text":"B","boundingBox":[1.0806,3.4056,1.1708,3.4056,1.1708,3.5722,1.0806,3.5722],"words":[{"text":"B","boundingBox":[1.0806,3.4056,1.1708,3.4056,1.1708,3.5722,1.0806,3.5722]}]},{"text":"20","boundingBox":[3.2444,3.4056,3.4125,3.4056,3.4125,3.5722,3.2444,3.5722],"words":[{"text":"20","boundingBox":[3.2444,3.4056,3.4125,3.4056,3.4125,3.5722,3.2444,3.5722]}]},{"text":"140.67","boundingBox":[5.4083,3.4056,5.8694,3.4056,5.8694,3.5722,5.4083,3.5722],"words":[{"text":"140.67","boundingBox":[5.4083,3.4056,5.8694,3.4056,5.8694,3.5722,5.4083,3.5722]}]},{"text":"C","boundingBox":[1.0806,3.6167,1.1694,3.6167,1.1694,3.7833,1.0806,3.7833],"words":[{"text":"C","boundingBox":[1.0806,3.6167,1.1694,3.6167,1.1694,3.7833,1.0806,3.7833]}]},{"text":"40","boundingBox":[3.2444,3.6167,3.4125,3.6167,3.4125,3.7833,3.2444,3.7833],"words":[{"text":"40","boundingBox":[3.2444,3.6167,3.4125,3.6167,3.4125,3.7833,3.2444,3.7833]}]},{"text":"150.66","boundingBox":[5.4083,3.6167,5.8694,3.6167,5.8694,3.7833,5.4083,3.7833],"words":[{"text":"150.66","boundingBox":[5.4083,3.6167,5.8694,3.6167,5.8694,3.7833,5.4083,3.7833]}]},{"text":"D","boundingBox":[1.0806,3.8264,1.1833,3.8264,1.1833,3.9931,1.0806,3.9931],"words":[{"text":"D","boundingBox":[1.0806,3.8264,1.1833,3.8264,1.1833,3.9931,1.0806,3.9931]}]},{"text":"10","boundingBox":[3.2444,3.8264,3.4125,3.8264,3.4125,3.9931,3.2444,3.9931],"words":[{"text":"10","boundingBox":[3.2444,3.8264,3.4125,3.8264,3.4125,3.9931,3.2444,3.9931]}]},{"text":"120.00","boundingBox":[5.4083,3.8264,5.8694,3.8264,5.8694,3.9931,5.4083,3.9931],"words":[{"text":"120.00","boundingBox":[5.4083,3.8264,5.8694,3.8264,5.8694,3.9931,5.4083,3.9931]}]},{"text":"E","boundingBox":[1.0806,4.0361,1.1611,4.0361,1.1611,4.2028,1.0806,4.2028],"words":[{"text":"E","boundingBox":[1.0806,4.0361,1.1611,4.0361,1.1611,4.2028,1.0806,4.2028]}]},{"text":"40","boundingBox":[3.2444,4.0361,3.4125,4.0361,3.4125,4.2028,3.2444,4.2028],"words":[{"text":"40","boundingBox":[3.2444,4.0361,3.4125,4.0361,3.4125,4.2028,3.2444,4.2028]}]},{"text":"100.00","boundingBox":[5.4083,4.0361,5.8708,4.0361,5.8708,4.2028,5.4083,4.2028],"words":[{"text":"100.00","boundingBox":[5.4083,4.0361,5.8708,4.0361,5.8708,4.2028,5.4083,4.2028]}]},{"text":"F","boundingBox":[1.0806,4.2458,1.1569,4.2458,1.1569,4.4125,1.0806,4.4125],"words":[{"text":"F","boundingBox":[1.0806,4.2458,1.1569,4.2458,1.1569,4.4125,1.0806,4.4125]}]},{"text":"60","boundingBox":[3.2444,4.2458,3.4125,4.2458,3.4125,4.4125,3.2444,4.4125],"words":[{"text":"60","boundingBox":[3.2444,4.2458,3.4125,4.2458,3.4125,4.4125,3.2444,4.4125]}]},{"text":"120.00","boundingBox":[5.4083,4.2458,5.8694,4.2458,5.8694,4.4125,5.4083,4.4125],"words":[{"text":"120.00","boundingBox":[5.4083,4.2458,5.8694,4.2458,5.8694,4.4125,5.4083,4.4125]}]},{"text":"G","boundingBox":[1.0806,4.4569,1.1861,4.4569,1.1861,4.6236,1.0806,4.6236],"words":[{"text":"G","boundingBox":[1.0806,4.4569,1.1861,4.4569,1.1861,4.6236,1.0806,4.6236]}]},{"text":"80","boundingBox":[3.2444,4.4569,3.4125,4.4569,3.4125,4.6236,3.2444,4.6236],"words":[{"text":"80","boundingBox":[3.2444,4.4569,3.4125,4.4569,3.4125,4.6236,3.2444,4.6236]}]},{"text":"220.00","boundingBox":[5.4083,4.4569,5.8708,4.4569,5.8708,4.6236,5.4083,4.6236],"words":[{"text":"220.00","boundingBox":[5.4083,4.4569,5.8708,4.4569,5.8708,4.6236,5.4083,4.6236]}]},{"text":"Subtotal:","boundingBox":[5.5028,4.8861,6.1347,4.8861,6.1347,5.0528,5.5028,5.0528],"words":[{"text":"Subtotal:","boundingBox":[5.5028,4.8861,6.1347,4.8861,6.1347,5.0528,5.5028,5.0528]}]},{"text":"3000.00","boundingBox":[6.1722,4.8861,6.7208,4.8861,6.7208,5.0528,6.1722,5.0528],"words":[{"text":"3000.00","boundingBox":[6.1722,4.8861,6.7208,4.8861,6.7208,5.0528,6.1722,5.0528]}]},{"text":"Tax:","boundingBox":[5.5028,5.1069,5.7917,5.1069,5.7917,5.2736,5.5028,5.2736],"words":[{"text":"Tax:","boundingBox":[5.5028,5.1069,5.7917,5.1069,5.7917,5.2736,5.5028,5.2736]}]},{"text":"300.00","boundingBox":[5.8292,5.1069,6.2931,5.1069,6.2931,5.2736,5.8292,5.2736],"words":[{"text":"300.00","boundingBox":[5.8292,5.1069,6.2931,5.1069,6.2931,5.2736,5.8292,5.2736]}]},{"text":"Tip:","boundingBox":[5.5028,5.3264,5.7611,5.3264,5.7611,5.4931,5.5028,5.4931],"words":[{"text":"Tip:","boundingBox":[5.5028,5.3264,5.7611,5.3264,5.7611,5.4931,5.5028,5.4931]}]},{"text":"1000.00","boundingBox":[5.7986,5.3264,6.3472,5.3264,6.3472,5.4931,5.7986,5.4931],"words":[{"text":"1000.00","boundingBox":[5.7986,5.3264,6.3472,5.3264,6.3472,5.4931,5.7986,5.4931]}]},{"text":"Total:","boundingBox":[5.5028,5.5472,5.9014,5.5472,5.9014,5.7139,5.5028,5.7139],"words":[{"text":"Total:","boundingBox":[5.5028,5.5472,5.9014,5.5472,5.9014,5.7139,5.5028,5.7139]}]},{"text":"4300.00","boundingBox":[5.9389,5.5472,6.4875,5.5472,6.4875,5.7139,5.9389,5.7139],"words":[{"text":"4300.00","boundingBox":[5.9389,5.5472,6.4875,5.5472,6.4875,5.7139,5.9389,5.7139]}]},{"text":"Signature:","boundingBox":[1.0,6.6431,1.7083,6.6431,1.7083,6.8097,1.0,6.8097],"words":[{"text":"Signature:","boundingBox":[1.0,6.6431,1.7083,6.6431,1.7083,6.8097,1.0,6.8097]}]},{"text":"____Frodo + Baggins__________","boundingBox":[1.7472,6.6431,3.8833,6.6431,3.8833,6.8097,1.7472,6.8097],"words":[{"text":"____Frodo","boundingBox":[1.7472,6.6431,2.4833,6.6431,2.4833,6.8097,1.7472,6.8097]},{"text":"Baggins__________","boundingBox":[2.5208,6.6431,3.8833,6.6431,3.8833,6.8097,2.5208,6.8097]}]}]}],"pageResults":[{"page":1,"keyValuePairs":[{"key":{"text":"Invoice + For:","boundingBox":[6.0028,1.0431,7.0528,1.0431,7.0528,1.2667,6.0028,1.2667],"elements":["#/readResults/0/lines/1/words/0","#/readResults/0/lines/1/words/1"]},"value":{"text":"Bilbo + Baggins 123 Hobbit Lane","boundingBox":[6.0028,1.4389,7.1083,1.4389,7.1083,1.8264,6.0028,1.8264],"elements":["#/readResults/0/lines/3/words/0","#/readResults/0/lines/3/words/1","#/readResults/0/lines/4/words/0","#/readResults/0/lines/4/words/1","#/readResults/0/lines/4/words/2"]},"confidence":1.0},{"key":{"text":"Address:","boundingBox":[0.8764,1.4681,1.5778,1.4681,1.5778,1.6625,0.8764,1.6625],"elements":["#/readResults/0/lines/2/words/0"]},"value":{"text":"567 + Main St.","boundingBox":[0.8764,1.8292,1.725,1.8292,1.725,1.9958,0.8764,1.9958],"elements":["#/readResults/0/lines/5/words/0","#/readResults/0/lines/5/words/1","#/readResults/0/lines/5/words/2"]},"confidence":1.0},{"key":{"text":"Redmond, + WA","boundingBox":[6.0028,1.8792,6.9819,1.8792,6.9819,2.0458,6.0028,2.0458],"elements":["#/readResults/0/lines/6/words/0","#/readResults/0/lines/6/words/1"]},"value":{"text":"555-555-5555","boundingBox":[6.0028,2.0986,6.9472,2.0986,6.9472,2.2653,6.0028,2.2653],"elements":["#/readResults/0/lines/8/words/0"]},"confidence":1.0},{"key":{"text":"Redmond, + WA","boundingBox":[0.8764,2.0486,1.8569,2.0486,1.8569,2.2153,0.8764,2.2153],"elements":["#/readResults/0/lines/7/words/0","#/readResults/0/lines/7/words/1"]},"value":{"text":"555-555-5555","boundingBox":[0.8764,2.2694,1.8222,2.2694,1.8222,2.4361,0.8764,2.4361],"elements":["#/readResults/0/lines/9/words/0"]},"confidence":0.29},{"key":{"text":"Subtotal:","boundingBox":[5.5028,4.8861,6.1347,4.8861,6.1347,5.0528,5.5028,5.0528],"elements":["#/readResults/0/lines/34/words/0"]},"value":{"text":"300.00","boundingBox":[6.1722,4.8861,6.6361,4.8861,6.6361,5.0528,6.1722,5.0528],"elements":["#/readResults/0/lines/35/words/0"]},"confidence":1.0},{"key":{"text":"Tax:","boundingBox":[5.5028,5.1069,5.7917,5.1069,5.7917,5.2736,5.5028,5.2736],"elements":["#/readResults/0/lines/36/words/0"]},"value":{"text":"30.00","boundingBox":[5.8292,5.1069,6.2069,5.1069,6.2069,5.2736,5.8292,5.2736],"elements":["#/readResults/0/lines/37/words/0"]},"confidence":1.0},{"key":{"text":"Tip:","boundingBox":[5.5028,5.3264,5.7611,5.3264,5.7611,5.4931,5.5028,5.4931],"elements":["#/readResults/0/lines/38/words/0"]},"value":{"text":"100.00","boundingBox":[5.7986,5.3264,6.2639,5.3264,6.2639,5.4931,5.7986,5.4931],"elements":["#/readResults/0/lines/39/words/0"]},"confidence":1.0},{"key":{"text":"Total:","boundingBox":[5.5028,5.5472,5.9014,5.5472,5.9014,5.7139,5.5028,5.7139],"elements":["#/readResults/0/lines/40/words/0"]},"value":{"text":"430.00","boundingBox":[5.9389,5.5472,6.4028,5.5472,6.4028,5.7139,5.9389,5.7139],"elements":["#/readResults/0/lines/41/words/0"]},"confidence":1.0},{"key":{"text":"Signature:","boundingBox":[1.0,6.6431,1.7083,6.6431,1.7083,6.8097,1.0,6.8097],"elements":["#/readResults/0/lines/42/words/0"]},"value":{"text":"____Bilbo + Baggins__________","boundingBox":[1.7472,6.6431,3.8333,6.6431,3.8333,6.8097,1.7472,6.8097],"elements":["#/readResults/0/lines/43/words/0","#/readResults/0/lines/43/words/1"]},"confidence":1.0},{"key":{"text":"__Tokens__1","boundingBox":null,"elements":null},"value":{"text":"Company + A Invoice","boundingBox":[0.8764,1.1014,2.3875,1.1014,2.3875,1.2958,0.8764,1.2958],"elements":["#/readResults/0/lines/0/words/0","#/readResults/0/lines/0/words/1","#/readResults/0/lines/0/words/2"]},"confidence":1.0}],"tables":[{"rows":8,"columns":3,"cells":[{"text":"Item","rowIndex":0,"columnIndex":0,"boundingBox":[1.0806,2.9833,1.3958,2.9833,1.3958,3.15,1.0806,3.15],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/0/lines/10/words/0"],"isHeader":true,"isFooter":false},{"text":"Quantity","rowIndex":0,"columnIndex":1,"boundingBox":[3.2444,2.9833,3.8389,2.9833,3.8389,3.15,3.2444,3.15],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/0/lines/11/words/0"],"isHeader":true,"isFooter":false},{"text":"Price","rowIndex":0,"columnIndex":2,"boundingBox":[5.4083,2.9833,5.7458,2.9833,5.7458,3.15,5.4083,3.15],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/0/lines/12/words/0"],"isHeader":true,"isFooter":false},{"text":"A","rowIndex":1,"columnIndex":0,"boundingBox":[1.0806,3.1931,1.1764,3.1931,1.1764,3.3597,1.0806,3.3597],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/0/lines/13/words/0"],"isHeader":false,"isFooter":false},{"text":"1","rowIndex":1,"columnIndex":1,"boundingBox":[3.2444,3.1931,3.3292,3.1931,3.3292,3.3597,3.2444,3.3597],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/0/lines/14/words/0"],"isHeader":false,"isFooter":false},{"text":"10.99","rowIndex":1,"columnIndex":2,"boundingBox":[5.4083,3.1931,5.7875,3.1931,5.7875,3.3597,5.4083,3.3597],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/0/lines/15/words/0"],"isHeader":false,"isFooter":false},{"text":"B","rowIndex":2,"columnIndex":0,"boundingBox":[1.0806,3.4056,1.1708,3.4056,1.1708,3.5722,1.0806,3.5722],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/0/lines/16/words/0"],"isHeader":false,"isFooter":false},{"text":"2","rowIndex":2,"columnIndex":1,"boundingBox":[3.2444,3.4056,3.3292,3.4056,3.3292,3.5722,3.2444,3.5722],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/0/lines/17/words/0"],"isHeader":false,"isFooter":false},{"text":"14.67","rowIndex":2,"columnIndex":2,"boundingBox":[5.4083,3.4056,5.7861,3.4056,5.7861,3.5722,5.4083,3.5722],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/0/lines/18/words/0"],"isHeader":false,"isFooter":false},{"text":"C","rowIndex":3,"columnIndex":0,"boundingBox":[1.0806,3.6167,1.1694,3.6167,1.1694,3.7833,1.0806,3.7833],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/0/lines/19/words/0"],"isHeader":false,"isFooter":false},{"text":"4","rowIndex":3,"columnIndex":1,"boundingBox":[3.2444,3.6167,3.3292,3.6167,3.3292,3.7833,3.2444,3.7833],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/0/lines/20/words/0"],"isHeader":false,"isFooter":false},{"text":"15.66","rowIndex":3,"columnIndex":2,"boundingBox":[5.4083,3.6167,5.7861,3.6167,5.7861,3.7833,5.4083,3.7833],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/0/lines/21/words/0"],"isHeader":false,"isFooter":false},{"text":"D","rowIndex":4,"columnIndex":0,"boundingBox":[1.0806,3.8264,1.1833,3.8264,1.1833,3.9931,1.0806,3.9931],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/0/lines/22/words/0"],"isHeader":false,"isFooter":false},{"text":"1","rowIndex":4,"columnIndex":1,"boundingBox":[3.2444,3.8264,3.3292,3.8264,3.3292,3.9931,3.2444,3.9931],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/0/lines/23/words/0"],"isHeader":false,"isFooter":false},{"text":"12.00","rowIndex":4,"columnIndex":2,"boundingBox":[5.4083,3.8264,5.7861,3.8264,5.7861,3.9931,5.4083,3.9931],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/0/lines/24/words/0"],"isHeader":false,"isFooter":false},{"text":"E","rowIndex":5,"columnIndex":0,"boundingBox":[1.0806,4.0361,1.1611,4.0361,1.1611,4.2028,1.0806,4.2028],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/0/lines/25/words/0"],"isHeader":false,"isFooter":false},{"text":"4","rowIndex":5,"columnIndex":1,"boundingBox":[3.2444,4.0361,3.3292,4.0361,3.3292,4.2028,3.2444,4.2028],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/0/lines/26/words/0"],"isHeader":false,"isFooter":false},{"text":"10.00","rowIndex":5,"columnIndex":2,"boundingBox":[5.4083,4.0361,5.7875,4.0361,5.7875,4.2028,5.4083,4.2028],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/0/lines/27/words/0"],"isHeader":false,"isFooter":false},{"text":"F","rowIndex":6,"columnIndex":0,"boundingBox":[1.0806,4.2458,1.1569,4.2458,1.1569,4.4125,1.0806,4.4125],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/0/lines/28/words/0"],"isHeader":false,"isFooter":false},{"text":"6","rowIndex":6,"columnIndex":1,"boundingBox":[3.2444,4.2458,3.3292,4.2458,3.3292,4.4125,3.2444,4.4125],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/0/lines/29/words/0"],"isHeader":false,"isFooter":false},{"text":"12.00","rowIndex":6,"columnIndex":2,"boundingBox":[5.4083,4.2458,5.7861,4.2458,5.7861,4.4125,5.4083,4.4125],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/0/lines/30/words/0"],"isHeader":false,"isFooter":false},{"text":"G","rowIndex":7,"columnIndex":0,"boundingBox":[1.0806,4.4569,1.1861,4.4569,1.1861,4.6236,1.0806,4.6236],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/0/lines/31/words/0"],"isHeader":false,"isFooter":false},{"text":"8","rowIndex":7,"columnIndex":1,"boundingBox":[3.2444,4.4569,3.3292,4.4569,3.3292,4.6236,3.2444,4.6236],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/0/lines/32/words/0"],"isHeader":false,"isFooter":false},{"text":"22.00","rowIndex":7,"columnIndex":2,"boundingBox":[5.4083,4.4569,5.7875,4.4569,5.7875,4.6236,5.4083,4.6236],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/0/lines/33/words/0"],"isHeader":false,"isFooter":false}]}],"clusterId":0},{"page":3,"keyValuePairs":[{"key":{"text":"Invoice + For:","boundingBox":[6.0028,1.0431,7.0528,1.0431,7.0528,1.2667,6.0028,1.2667],"elements":["#/readResults/2/lines/1/words/0","#/readResults/2/lines/1/words/1"]},"value":{"text":"Frodo + Baggins 123 Hobbit Lane","boundingBox":[6.0028,1.4389,7.1083,1.4389,7.1083,1.8264,6.0028,1.8264],"elements":["#/readResults/2/lines/3/words/0","#/readResults/2/lines/3/words/1","#/readResults/2/lines/4/words/0","#/readResults/2/lines/4/words/1","#/readResults/2/lines/4/words/2"]},"confidence":1.0},{"key":{"text":"Address:","boundingBox":[0.8764,1.4681,1.5778,1.4681,1.5778,1.6625,0.8764,1.6625],"elements":["#/readResults/2/lines/2/words/0"]},"value":{"text":"567 + Main St.","boundingBox":[0.8764,1.8292,1.725,1.8292,1.725,1.9958,0.8764,1.9958],"elements":["#/readResults/2/lines/5/words/0","#/readResults/2/lines/5/words/1","#/readResults/2/lines/5/words/2"]},"confidence":1.0},{"key":{"text":"Redmond, + WA","boundingBox":[6.0028,1.8792,6.9819,1.8792,6.9819,2.0458,6.0028,2.0458],"elements":["#/readResults/2/lines/6/words/0","#/readResults/2/lines/6/words/1"]},"value":{"text":"555-555-5555","boundingBox":[6.0028,2.0986,6.9472,2.0986,6.9472,2.2653,6.0028,2.2653],"elements":["#/readResults/2/lines/8/words/0"]},"confidence":1.0},{"key":{"text":"Redmond, + WA","boundingBox":[0.8764,2.0486,1.8569,2.0486,1.8569,2.2153,0.8764,2.2153],"elements":["#/readResults/2/lines/7/words/0","#/readResults/2/lines/7/words/1"]},"value":{"text":"555-555-5555","boundingBox":[0.8764,2.2694,1.8222,2.2694,1.8222,2.4361,0.8764,2.4361],"elements":["#/readResults/2/lines/9/words/0"]},"confidence":0.29},{"key":{"text":"Subtotal:","boundingBox":[5.5028,4.8861,6.1347,4.8861,6.1347,5.0528,5.5028,5.0528],"elements":["#/readResults/2/lines/34/words/0"]},"value":{"text":"3000.00","boundingBox":[6.1722,4.8861,6.7208,4.8861,6.7208,5.0528,6.1722,5.0528],"elements":["#/readResults/2/lines/35/words/0"]},"confidence":1.0},{"key":{"text":"Tax:","boundingBox":[5.5028,5.1069,5.7917,5.1069,5.7917,5.2736,5.5028,5.2736],"elements":["#/readResults/2/lines/36/words/0"]},"value":{"text":"300.00","boundingBox":[5.8292,5.1069,6.2931,5.1069,6.2931,5.2736,5.8292,5.2736],"elements":["#/readResults/2/lines/37/words/0"]},"confidence":1.0},{"key":{"text":"Tip:","boundingBox":[5.5028,5.3264,5.7611,5.3264,5.7611,5.4931,5.5028,5.4931],"elements":["#/readResults/2/lines/38/words/0"]},"value":{"text":"1000.00","boundingBox":[5.7986,5.3264,6.3472,5.3264,6.3472,5.4931,5.7986,5.4931],"elements":["#/readResults/2/lines/39/words/0"]},"confidence":1.0},{"key":{"text":"Total:","boundingBox":[5.5028,5.5472,5.9014,5.5472,5.9014,5.7139,5.5028,5.7139],"elements":["#/readResults/2/lines/40/words/0"]},"value":{"text":"4300.00","boundingBox":[5.9389,5.5472,6.4875,5.5472,6.4875,5.7139,5.9389,5.7139],"elements":["#/readResults/2/lines/41/words/0"]},"confidence":1.0},{"key":{"text":"Signature:","boundingBox":[1.0,6.6431,1.7083,6.6431,1.7083,6.8097,1.0,6.8097],"elements":["#/readResults/2/lines/42/words/0"]},"value":{"text":"____Frodo + Baggins__________","boundingBox":[1.7472,6.6431,3.8833,6.6431,3.8833,6.8097,1.7472,6.8097],"elements":["#/readResults/2/lines/43/words/0","#/readResults/2/lines/43/words/1"]},"confidence":1.0},{"key":{"text":"__Tokens__1","boundingBox":null,"elements":null},"value":{"text":"Company + B Invoice","boundingBox":[0.8764,1.1014,2.3833,1.1014,2.3833,1.2958,0.8764,1.2958],"elements":["#/readResults/2/lines/0/words/0","#/readResults/2/lines/0/words/1","#/readResults/2/lines/0/words/2"]},"confidence":1.0}],"tables":[{"rows":8,"columns":3,"cells":[{"text":"Item","rowIndex":0,"columnIndex":0,"boundingBox":[1.0806,2.9833,1.3958,2.9833,1.3958,3.15,1.0806,3.15],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/2/lines/10/words/0"],"isHeader":true,"isFooter":false},{"text":"Quantity","rowIndex":0,"columnIndex":1,"boundingBox":[3.2444,2.9833,3.8389,2.9833,3.8389,3.15,3.2444,3.15],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/2/lines/11/words/0"],"isHeader":true,"isFooter":false},{"text":"Price","rowIndex":0,"columnIndex":2,"boundingBox":[5.4083,2.9833,5.7458,2.9833,5.7458,3.15,5.4083,3.15],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/2/lines/12/words/0"],"isHeader":true,"isFooter":false},{"text":"A","rowIndex":1,"columnIndex":0,"boundingBox":[1.0806,3.1931,1.1764,3.1931,1.1764,3.3597,1.0806,3.3597],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/2/lines/13/words/0"],"isHeader":false,"isFooter":false},{"text":"10","rowIndex":1,"columnIndex":1,"boundingBox":[3.2444,3.1931,3.4125,3.1931,3.4125,3.3597,3.2444,3.3597],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/2/lines/14/words/0"],"isHeader":false,"isFooter":false},{"text":"100.99","rowIndex":1,"columnIndex":2,"boundingBox":[5.4083,3.1931,5.8708,3.1931,5.8708,3.3597,5.4083,3.3597],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/2/lines/15/words/0"],"isHeader":false,"isFooter":false},{"text":"B","rowIndex":2,"columnIndex":0,"boundingBox":[1.0806,3.4056,1.1708,3.4056,1.1708,3.5722,1.0806,3.5722],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/2/lines/16/words/0"],"isHeader":false,"isFooter":false},{"text":"20","rowIndex":2,"columnIndex":1,"boundingBox":[3.2444,3.4056,3.4125,3.4056,3.4125,3.5722,3.2444,3.5722],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/2/lines/17/words/0"],"isHeader":false,"isFooter":false},{"text":"140.67","rowIndex":2,"columnIndex":2,"boundingBox":[5.4083,3.4056,5.8694,3.4056,5.8694,3.5722,5.4083,3.5722],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/2/lines/18/words/0"],"isHeader":false,"isFooter":false},{"text":"C","rowIndex":3,"columnIndex":0,"boundingBox":[1.0806,3.6167,1.1694,3.6167,1.1694,3.7833,1.0806,3.7833],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/2/lines/19/words/0"],"isHeader":false,"isFooter":false},{"text":"40","rowIndex":3,"columnIndex":1,"boundingBox":[3.2444,3.6167,3.4125,3.6167,3.4125,3.7833,3.2444,3.7833],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/2/lines/20/words/0"],"isHeader":false,"isFooter":false},{"text":"150.66","rowIndex":3,"columnIndex":2,"boundingBox":[5.4083,3.6167,5.8694,3.6167,5.8694,3.7833,5.4083,3.7833],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/2/lines/21/words/0"],"isHeader":false,"isFooter":false},{"text":"D","rowIndex":4,"columnIndex":0,"boundingBox":[1.0806,3.8264,1.1833,3.8264,1.1833,3.9931,1.0806,3.9931],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/2/lines/22/words/0"],"isHeader":false,"isFooter":false},{"text":"10","rowIndex":4,"columnIndex":1,"boundingBox":[3.2444,3.8264,3.4125,3.8264,3.4125,3.9931,3.2444,3.9931],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/2/lines/23/words/0"],"isHeader":false,"isFooter":false},{"text":"120.00","rowIndex":4,"columnIndex":2,"boundingBox":[5.4083,3.8264,5.8694,3.8264,5.8694,3.9931,5.4083,3.9931],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/2/lines/24/words/0"],"isHeader":false,"isFooter":false},{"text":"E","rowIndex":5,"columnIndex":0,"boundingBox":[1.0806,4.0361,1.1611,4.0361,1.1611,4.2028,1.0806,4.2028],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/2/lines/25/words/0"],"isHeader":false,"isFooter":false},{"text":"40","rowIndex":5,"columnIndex":1,"boundingBox":[3.2444,4.0361,3.4125,4.0361,3.4125,4.2028,3.2444,4.2028],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/2/lines/26/words/0"],"isHeader":false,"isFooter":false},{"text":"100.00","rowIndex":5,"columnIndex":2,"boundingBox":[5.4083,4.0361,5.8708,4.0361,5.8708,4.2028,5.4083,4.2028],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/2/lines/27/words/0"],"isHeader":false,"isFooter":false},{"text":"F","rowIndex":6,"columnIndex":0,"boundingBox":[1.0806,4.2458,1.1569,4.2458,1.1569,4.4125,1.0806,4.4125],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/2/lines/28/words/0"],"isHeader":false,"isFooter":false},{"text":"60","rowIndex":6,"columnIndex":1,"boundingBox":[3.2444,4.2458,3.4125,4.2458,3.4125,4.4125,3.2444,4.4125],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/2/lines/29/words/0"],"isHeader":false,"isFooter":false},{"text":"120.00","rowIndex":6,"columnIndex":2,"boundingBox":[5.4083,4.2458,5.8694,4.2458,5.8694,4.4125,5.4083,4.4125],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/2/lines/30/words/0"],"isHeader":false,"isFooter":false},{"text":"G","rowIndex":7,"columnIndex":0,"boundingBox":[1.0806,4.4569,1.1861,4.4569,1.1861,4.6236,1.0806,4.6236],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/2/lines/31/words/0"],"isHeader":false,"isFooter":false},{"text":"80","rowIndex":7,"columnIndex":1,"boundingBox":[3.2444,4.4569,3.4125,4.4569,3.4125,4.6236,3.2444,4.6236],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/2/lines/32/words/0"],"isHeader":false,"isFooter":false},{"text":"220.00","rowIndex":7,"columnIndex":2,"boundingBox":[5.4083,4.4569,5.8708,4.4569,5.8708,4.6236,5.4083,4.6236],"confidence":1.0,"rowSpan":1,"columnSpan":1,"elements":["#/readResults/2/lines/33/words/0"],"isHeader":false,"isFooter":false}]}],"clusterId":0}],"documentResults":[],"errors":[]}}' + headers: + apim-request-id: 39072493-d0e7-4a94-881f-9f16649bc4a0 + content-type: application/json; charset=utf-8 + date: Thu, 30 Apr 2020 23:47:28 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + transfer-encoding: chunked + x-content-type-options: nosniff + x-envoy-upstream-service-time: '27' + status: + code: 200 + message: OK + url: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/d60aa71d-0ce2-440f-8b60-1a40c77d0b9a/analyzeresults/49ce814b-e3e6-466a-863b-c9259eab75e4 +version: 1 diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_receipt.test_blank_page.yaml b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_receipt.test_blank_page.yaml new file mode 100644 index 000000000000..609723bf3fb0 --- /dev/null +++ b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_receipt.test_blank_page.yaml @@ -0,0 +1,597 @@ +interactions: +- request: + body: !!binary | + JVBERi0xLjcNCiW1tbW1DQoxIDAgb2JqDQo8PC9UeXBlL0NhdGFsb2cvUGFnZXMgMiAwIFIvTGFu + Zyhlbi1VUykgL1N0cnVjdFRyZWVSb290IDEwIDAgUi9NYXJrSW5mbzw8L01hcmtlZCB0cnVlPj4v + TWV0YWRhdGEgMjAgMCBSL1ZpZXdlclByZWZlcmVuY2VzIDIxIDAgUj4+DQplbmRvYmoNCjIgMCBv + YmoNCjw8L1R5cGUvUGFnZXMvQ291bnQgMS9LaWRzWyAzIDAgUl0gPj4NCmVuZG9iag0KMyAwIG9i + ag0KPDwvVHlwZS9QYWdlL1BhcmVudCAyIDAgUi9SZXNvdXJjZXM8PC9Gb250PDwvRjEgNSAwIFI+ + Pi9FeHRHU3RhdGU8PC9HUzcgNyAwIFIvR1M4IDggMCBSPj4vUHJvY1NldFsvUERGL1RleHQvSW1h + Z2VCL0ltYWdlQy9JbWFnZUldID4+L01lZGlhQm94WyAwIDAgNjEyIDc5Ml0gL0NvbnRlbnRzIDQg + MCBSL0dyb3VwPDwvVHlwZS9Hcm91cC9TL1RyYW5zcGFyZW5jeS9DUy9EZXZpY2VSR0I+Pi9UYWJz + L1MvU3RydWN0UGFyZW50cyAwPj4NCmVuZG9iag0KNCAwIG9iag0KPDwvRmlsdGVyL0ZsYXRlRGVj + b2RlL0xlbmd0aCAxMzI+Pg0Kc3RyZWFtDQp4nC2MsQrCQBBE+4X9hynV4m73iJ4HIUUuMSgEFA8s + xFJTKaj/D67iFAPDPB78HnXtx7ztIE2Dtst4MomTb5IGCFbWMQW8rkynBR5MbWHyG4WqkwrlxqTG + CRQxOAkVoiS3tOdu3HCMmN7mxPRb6/8amM4zzC8oO6bejAcm9GPGB3fjHKoNCmVuZHN0cmVhbQ0K + ZW5kb2JqDQo1IDAgb2JqDQo8PC9UeXBlL0ZvbnQvU3VidHlwZS9UcnVlVHlwZS9OYW1lL0YxL0Jh + c2VGb250L0JDREVFRStDYWxpYnJpL0VuY29kaW5nL1dpbkFuc2lFbmNvZGluZy9Gb250RGVzY3Jp + cHRvciA2IDAgUi9GaXJzdENoYXIgMzIvTGFzdENoYXIgMzIvV2lkdGhzIDE4IDAgUj4+DQplbmRv + YmoNCjYgMCBvYmoNCjw8L1R5cGUvRm9udERlc2NyaXB0b3IvRm9udE5hbWUvQkNERUVFK0NhbGli + cmkvRmxhZ3MgMzIvSXRhbGljQW5nbGUgMC9Bc2NlbnQgNzUwL0Rlc2NlbnQgLTI1MC9DYXBIZWln + aHQgNzUwL0F2Z1dpZHRoIDUyMS9NYXhXaWR0aCAxNzQzL0ZvbnRXZWlnaHQgNDAwL1hIZWlnaHQg + MjUwL1N0ZW1WIDUyL0ZvbnRCQm94WyAtNTAzIC0yNTAgMTI0MCA3NTBdIC9Gb250RmlsZTIgMTkg + MCBSPj4NCmVuZG9iag0KNyAwIG9iag0KPDwvVHlwZS9FeHRHU3RhdGUvQk0vTm9ybWFsL2NhIDE+ + Pg0KZW5kb2JqDQo4IDAgb2JqDQo8PC9UeXBlL0V4dEdTdGF0ZS9CTS9Ob3JtYWwvQ0EgMT4+DQpl + bmRvYmoNCjkgMCBvYmoNCjw8L0F1dGhvcihLcmlzdGEgUHJhdGljbykgL0NyZWF0b3Io/v8ATQBp + AGMAcgBvAHMAbwBmAHQArgAgAFcAbwByAGQAIABmAG8AcgAgAE8AZgBmAGkAYwBlACAAMwA2ADUp + IC9DcmVhdGlvbkRhdGUoRDoyMDIwMDMyMDEwNDQ0Ni0wNycwMCcpIC9Nb2REYXRlKEQ6MjAyMDAz + MjAxMDQ0NDYtMDcnMDAnKSAvUHJvZHVjZXIo/v8ATQBpAGMAcgBvAHMAbwBmAHQArgAgAFcAbwBy + AGQAIABmAG8AcgAgAE8AZgBmAGkAYwBlACAAMwA2ADUpID4+DQplbmRvYmoNCjE3IDAgb2JqDQo8 + PC9UeXBlL09ialN0bS9OIDcvRmlyc3QgNDYvRmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0aCAyOTY+ + Pg0Kc3RyZWFtDQp4nG1R0WrCMBR9F/yH+we3sa1jIMKYyoZYSivsofgQ610NtomkKejfL3ftsANf + wjk355ycJCKGAEQEsQDhQRCD8Oh1DmIGUTgDEUIU++EcopcAFgtMWR1AhjmmuL9fCXNnu9Kta2pw + W0BwAEwrCFmzXE4nvSUYLCtTdg1p98wpuEp2gME1UuwtUWaMw8zUtJNX7sh5qbQ+i3e5Lk84Jupj + RrsJ3dyW7iCG6I3P0sYRJrys9elB9l56NDfMqXT4QfJEtsfs+cOfulaa8rPkhjx40z5BOmX0wK1T + 39KDX/Zl7OVozOVxe560ZyLHJR3uZGnNiL+f/TriKyVrU40Gea1ONNL253hZZWWDG1V1loa7Jl3T + FvzH83+vm8iG2qKnj6efTn4AVAqiuw0KZW5kc3RyZWFtDQplbmRvYmoNCjE4IDAgb2JqDQpbIDIy + Nl0gDQplbmRvYmoNCjE5IDAgb2JqDQo8PC9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDE5Mzg5 + L0xlbmd0aDEgODE3NDA+Pg0Kc3RyZWFtDQp4nOx9B3xUVdr+OfdOy8wkM5NkkkkmYWaYJASGFCCB + BJAMpNA7gwk1IYWAAQKEIgJGUdAo9l7Rta1YJgNqwO5iWQv2vhZ2XVdXse3qKgL5nnPfORDY1f+3 + 1fX7z5s88zznPeWe+t6TH8kPxhljdnzoWG3lqIoZBf1stzPumcAYf6Jy1ITyq5qr4hnPzGBMKZw8 + vWDgtY/W3YO8s1Crtn5JXetF716EsiddgvwP6le3eXe1vlHM2LYLGNM/0NS6cMnGd9UhjC1dy1h8 + YGHLyU2vVu4oYuwW1LF90NxY1/DtxJPDaM+K9gY3wxF/Z8Z+pCuQzmpe0rZ2xDjjAaQ/YmzRHS3L + 6uvyGvrezNi9hSg+c0nd2tZ8c/abyG9Gee+Sxra6q07ftppxXzLSZyytW9J43YGv5zP2KfpbuLJ1 + 2cq2bjfbzHjGQVG+dUVja9LC3mmMnXITHvcJE3NhGLpv9uI1H8+3Df+apZmYsPs/Wf+s4NfHrpn8 + /YFD7XGfmgYjGccURoZ6BnaY8T3mbd8fOLAt7lOtpR6WdofwuPuxdmZnw6EVcAHbwljiYO25nKm6 + AL+A6ZlJf6V+EJrsRay+wDYrzMQUm15RFJ2q6D5g+d2PsKxTtB7AJk73elmQsexnqQ/G65QcL+Pd + Ik+9T58gRsqSdQlHe8OfZ//fm+F1dsdP3Yf/K6ZrZDf81H34e8xg+Pf0V93/85qHf4fpiljtT92H + mP3zpjzNrvyp+/BzMOX3bMw/Uo9/w1r+1X2JWcxiFrOY/eOmXM3NP5hXy/b/J/vyczG1mJ3zU/ch + ZjGLWcxi9o+b7lHW9B9/5hJ23n/6mTGLWcxiFrOYxSxmMYtZzGIWs/+7Fvs5M2Yxi1nMYhazmMUs + ZjGLWcxiFrOYxey/23jst9FjFrOYxSxmMYtZzGIWs5jFLGYxi1nMYhazmMUsZjGLWcxiFrOYxSxm + MYtZzGIWs5jFLGYxi1nMYhazmMUsZjGLWcz+S6x790/dg5jF7Cc2NYqM6P8k1YEUlLKa6dhSpFOY + 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 + +xG3mmhL96QrfW1pvHxyGl+Wdmra+WmqzfW8Swm6+vavsqU+n/pe6uepuqRgat/8KpZiT/GmqE4x + tpSJM6o0LqsgHlCsjdWT4s+psjm5zelxKpWfO/lmpnIv54zbQaoJZXZyp6dKfZCLX6LTM84vYDMC + 47tMbNr4sGnK7DA/K5w9XXwGp84KG84Ks9Cs2dWdnJ9Xo/1OQjhZ/FKJlj5z61aWOWp8OHN6dUTd + ti1zVM34cLvQwaCmu4VmKFITmLdy1cpAdfAE5njf8YVDdT5sf96u2GzcZuu2KUEbOm9L8CQo4qM7 + QQ0mDBhSZYv3xCviozteTQnGwyPG18c6ZUaVzeKxKKEyy2SLErSUlVcFLXmFVX81zh1inPTkQNs8 + fMxb2RbQvpGq4atEMiC84ntlG9Lia5WWZoEfNSoGmr8S1iadbT9e67/d+E/dgZ+/0W/yjOxWzmAN + yibgdOA0oB04FdgIbADWA6cA64CTgbXAGmA1sApoA1YCy4FWYBmwFFgCtAAnAYuBRUAzsBBoAhqB + BqAeWADUAbXAfGAeMBeYA8wGZgE1QDVwIjATCAEzgOnANGAqMAWYDEwCJgITgPHAOGAsMAYYDVQB + lUAFUA6MAkYCQaAMGAGcAAwHhgFDgVKgBBgCDAaKgSJgEDAQGAAUAgVAPpAH9AcCQD+gL5AL9AFy + gGwgC/ADvQEf4AU8QC8gE8gA3EA6kAa4gFQgBXACyUASkAg4ADtgAxKAeMAKWAAzEAeYACNgAPSA + bmQ3PlVAATjAWAOHjx8GDgEHge+BA8B3wLfAX4BvgK+BPwN/Ar4CvgS+AD4HPgP2A58CnwB/BD4G + PgL+AHwI/B74APgd8FtgH/A+8B7wLvAO8BvgbeAt4E3gDeB14DXgVeAV4GXgJeBF4AXgeWAv8Bzw + LPAM8DTwa+Ap4EngCeBxYA/wK+Ax4FHgEeBh4CHgQeAB4H5gN7AL6ALuA+4F7gF2AjuACNAJhIG7 + gbuAO4E7gO3A7cAvgduAW4FbgJuBm4BfADcCNwDbgOuB64BrgWuAq4GrgCuBK4DLgcuAS4FLgIuB + i4ALgQuA84HzgK3AucA5QAdwNnAWsAXYDJzJGka2c5x/jvPPcf45zj/H+ec4/xznn+P8c5x/jvPP + cf45zj/H+ec4/xznn+P8c5x/jvPPVwCIARwxgCMGcMQAjhjAEQM4YgBHDOCIARwxgCMGcMQAjhjA + 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 + uHNOntVntltoN7fZZcns+b3njj5RYD9zj2wYh93jRY32F+XYd7t63rI9HL47es2yJ/Lzkt3tQlaU + DZGNmzl6SlRiyln72V+ccO/r8eSz3lNExze9zb7aw4rjv/BG9zYrTm3xzCvteuW29FBk9/xRPk9c + Rq+cqR877Y8jHRlRnfZOdt6+fI2F/cK6rFdZnDnlnXp2yh4glHjZyFUD5829NvaP6hlPojpffBN+ + fGfIA1WHDdc3+tYdv/DEceN8v7J5cY7d7R5bTzrjVcNzu/Jwf8DPgxZ/K+xq+6Pt3h/Xb7i++bfz + riX9BAPCeCN93b+s/MP3xUV2N0I+b3PapCyVetVWfU0vC8uVeCe/HsU9XeIy7Kqr4p5envGlh9p1 + tGBV7vVenWTLaoaI0ifUeEq6lE2oPffkxeOWFQt8L/+0ouz4/SES/tVBVl9P7GGZZ/mLZWWOV4td + YvGWh7//2Ia1q5Z/wNHv/kVZ4L2yZxWD557FzlRE7Ux7UrbCpm+M8/xCr+OY//7KhSt6CvLahvx4 + YunSJaNGtXsVM8dr7eton8Kni1/szt7at+zK3Zx893t3QucXuPV9f6bKJyvnxsZXb6bctSu8Iw/f + +IasY8VOr63NUUpmdf9lUWp8wu7C/u0q8pvxvEc94NtW9ny9+ujyIXsqShb2H5kaHyOo7n1oYe4g + 28KY7LcFS/bsVCpHHBLpXBxGJf7ELWZtIotZ6xg4ThbN+acLV9O/Dqy/OVJetA8mHzqIbZhce9M7 + L0CK+p4d15E0nXUlfeoXsrggtb0tjVw1/fGjM0XNa/13KmeO++6u+0VSarLEnptKJpd3KvRr8qu7 + yR8+TaWiY2H7j+7sZONfERGNajOrGMeSoqevHPvdYvVAX8vz3KGiwO1V/ax6ch09R23Ii04evDs0 + 2CnU+WRSRvsUy3OiWa635i1oKdcOYm+ousbxd+7gGGX7Wj5xdrTix9nSvuf3TmbVZj3gTvj14reH + 18+qm7ay35fq/DU4a8fbHVu/P3i77u3+idi5m9sXSZedCD+gODDs9e3XP7geLwtT1HW2fPwgemKz + /OOe7/uH/3RlQNvUWwdKrJvvXamY//X119X+sheffcZcF/NtO/4o71U7brQ4OjPi9aA2dQm5bvxv + 3q6JcZocnrJtxN4dK3kXJM67ugyYbsHp6TFzyNJpN2+5T7pVOu+ngmc97npkFzuOwA/vSO2YtdzB + q7Zj8tm+7EHekyuKGX7geNK+3keW3GKGKxhqhkJz+j92Id70nTaTmBxCupmGpF39HUMcMDfOWHCd + 0C+Ou3BDeFz4GvhBREbcHhe+ONHvwN2OU11Vp6qzPBd+V9DokgnGCjfe5UvGpP5Mj7Q+Zfq7tmP7 + +Ae5+x8Y8uTc1cf3v1hbutDnFi+z+V37K+dOT4vvMKLjstoFhUPnB5zoMlTWYs1vVzeOaam8w291 + XH/hvfqBTUXvxY/7jPyyk2jgYq/7jKoAYWmk96n7L+2sxHdTCsZYF4wp07gMK5cN8rPwyjiw+WDG + olP3xRf5udFb3148d/1t8bvrkrRjP1zdXOYg33di5JxHT3Mjv7+0r+CXdz8v32a3hGuRdD122/bv + vVKGVDwZd3v2xWk7NtkV3XVZ1KPLiOyvjw7h/3J7+enzy6punTtvP9plwNne7FOq7b/6h4+729uh + eqxVv8vdnqxNi908ORd/sHGv/+OcFZO5XX+fFon9H5Hg2m4NCmVuZHN0cmVhbQ0KZW5kb2JqDQoy + MCAwIG9iag0KPDwvVHlwZS9NZXRhZGF0YS9TdWJ0eXBlL1hNTC9MZW5ndGggMzA4ND4+DQpzdHJl + YW0NCjw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+ + PHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iMy4xLTcwMSI+Cjxy + ZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4 + LW5zIyI+CjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiICB4bWxuczpwZGY9Imh0dHA6Ly9u + cy5hZG9iZS5jb20vcGRmLzEuMy8iPgo8cGRmOlByb2R1Y2VyPk1pY3Jvc29mdMKuIFdvcmQgZm9y + IE9mZmljZSAzNjU8L3BkZjpQcm9kdWNlcj48L3JkZjpEZXNjcmlwdGlvbj4KPHJkZjpEZXNjcmlw + dGlvbiByZGY6YWJvdXQ9IiIgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMv + MS4xLyI+CjxkYzpjcmVhdG9yPjxyZGY6U2VxPjxyZGY6bGk+S3Jpc3RhIFByYXRpY288L3JkZjps + aT48L3JkZjpTZXE+PC9kYzpjcmVhdG9yPjwvcmRmOkRlc2NyaXB0aW9uPgo8cmRmOkRlc2NyaXB0 + aW9uIHJkZjphYm91dD0iIiAgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAv + Ij4KPHhtcDpDcmVhdG9yVG9vbD5NaWNyb3NvZnTCriBXb3JkIGZvciBPZmZpY2UgMzY1PC94bXA6 + Q3JlYXRvclRvb2w+PHhtcDpDcmVhdGVEYXRlPjIwMjAtMDMtMjBUMTA6NDQ6NDYtMDc6MDA8L3ht + cDpDcmVhdGVEYXRlPjx4bXA6TW9kaWZ5RGF0ZT4yMDIwLTAzLTIwVDEwOjQ0OjQ2LTA3OjAwPC94 + bXA6TW9kaWZ5RGF0ZT48L3JkZjpEZXNjcmlwdGlvbj4KPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJv + dXQ9IiIgIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIj4KPHht + cE1NOkRvY3VtZW50SUQ+dXVpZDo4RjI5Q0E4Qy1FRThCLTQ3NTktQkM5Qi1BMDhFRkVFNjYyMDE8 + L3htcE1NOkRvY3VtZW50SUQ+PHhtcE1NOkluc3RhbmNlSUQ+dXVpZDo4RjI5Q0E4Qy1FRThCLTQ3 + NTktQkM5Qi1BMDhFRkVFNjYyMDE8L3htcE1NOkluc3RhbmNlSUQ+PC9yZGY6RGVzY3JpcHRpb24+ + CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgIAo8L3JkZjpSREY+PC94OnhtcG1ldGE+PD94cGFja2V0 + IGVuZD0idyI/Pg0KZW5kc3RyZWFtDQplbmRvYmoNCjIxIDAgb2JqDQo8PC9EaXNwbGF5RG9jVGl0 + bGUgdHJ1ZT4+DQplbmRvYmoNCjIyIDAgb2JqDQo8PC9UeXBlL1hSZWYvU2l6ZSAyMi9XWyAxIDQg + Ml0gL1Jvb3QgMSAwIFIvSW5mbyA5IDAgUi9JRFs8OENDQTI5OEY4QkVFNTk0N0JDOUJBMDhFRkVF + NjYyMDE+PDhDQ0EyOThGOEJFRTU5NDdCQzlCQTA4RUZFRTY2MjAxPl0gL0ZpbHRlci9GbGF0ZURl + Y29kZS9MZW5ndGggODM+Pg0Kc3RyZWFtDQp4nC3LsQFAQAyF4ZfcHbW1KJUKnTHYxgR6k1Ba48R7 + UuQrkh+IqdVid8DHLm5iD/GDpInkXmwibs7cRRJZFGHi/2yiKyfzdhALGVcyX8ALyoALUA0KZW5k + c3RyZWFtDQplbmRvYmoNCnhyZWYNCjAgMjMNCjAwMDAwMDAwMTAgNjU1MzUgZg0KMDAwMDAwMDAx + NyAwMDAwMCBuDQowMDAwMDAwMTY2IDAwMDAwIG4NCjAwMDAwMDAyMjIgMDAwMDAgbg0KMDAwMDAw + MDQ4NiAwMDAwMCBuDQowMDAwMDAwNjkyIDAwMDAwIG4NCjAwMDAwMDA4NTkgMDAwMDAgbg0KMDAw + MDAwMTA5OCAwMDAwMCBuDQowMDAwMDAxMTUxIDAwMDAwIG4NCjAwMDAwMDEyMDQgMDAwMDAgbg0K + MDAwMDAwMDAxMSA2NTUzNSBmDQowMDAwMDAwMDEyIDY1NTM1IGYNCjAwMDAwMDAwMTMgNjU1MzUg + Zg0KMDAwMDAwMDAxNCA2NTUzNSBmDQowMDAwMDAwMDE1IDY1NTM1IGYNCjAwMDAwMDAwMTYgNjU1 + MzUgZg0KMDAwMDAwMDAxNyA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDE4Njcg + MDAwMDAgbg0KMDAwMDAwMTg5NCAwMDAwMCBuDQowMDAwMDIxMzc0IDAwMDAwIG4NCjAwMDAwMjQ1 + NDEgMDAwMDAgbg0KMDAwMDAyNDU4NiAwMDAwMCBuDQp0cmFpbGVyDQo8PC9TaXplIDIzL1Jvb3Qg + MSAwIFIvSW5mbyA5IDAgUi9JRFs8OENDQTI5OEY4QkVFNTk0N0JDOUJBMDhFRkVFNjYyMDE+PDhD + Q0EyOThGOEJFRTU5NDdCQzlCQTA4RUZFRTY2MjAxPl0gPj4NCnN0YXJ0eHJlZg0KMjQ4NjgNCiUl + RU9GDQp4cmVmDQowIDANCnRyYWlsZXINCjw8L1NpemUgMjMvUm9vdCAxIDAgUi9JbmZvIDkgMCBS + L0lEWzw4Q0NBMjk4RjhCRUU1OTQ3QkM5QkEwOEVGRUU2NjIwMT48OENDQTI5OEY4QkVFNTk0N0JD + OUJBMDhFRkVFNjYyMDE+XSAvUHJldiAyNDg2OC9YUmVmU3RtIDI0NTg2Pj4NCnN0YXJ0eHJlZg0K + MjU0ODQNCiUlRU9G + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '25662' + Content-Type: + - application/pdf + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/prebuilt/receipt/analyze?includeTextDetails=false + response: + body: + string: '' + headers: + apim-request-id: + - 92e9a3b5-4577-4477-97b0-e76a1a5c0b84 + content-length: + - '0' + date: + - Wed, 22 Apr 2020 22:31:43 GMT + operation-location: + - https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/prebuilt/receipt/analyzeResults/92e9a3b5-4577-4477-97b0-e76a1a5c0b84 + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '630' + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/prebuilt/receipt/analyzeResults/92e9a3b5-4577-4477-97b0-e76a1a5c0b84 + response: + body: + string: '{"status":"running","createdDateTime":"2020-04-22T22:31:43Z","lastUpdatedDateTime":"2020-04-22T22:31:44Z"}' + headers: + apim-request-id: + - 8b86c6f6-96bb-40d7-9c65-2548a77c29f4 + content-type: + - application/json; charset=utf-8 + date: + - Wed, 22 Apr 2020 22:31:49 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + transfer-encoding: + - chunked + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '301' + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/prebuilt/receipt/analyzeResults/92e9a3b5-4577-4477-97b0-e76a1a5c0b84 + response: + body: + string: '{"status":"running","createdDateTime":"2020-04-22T22:31:43Z","lastUpdatedDateTime":"2020-04-22T22:31:44Z"}' + headers: + apim-request-id: + - 9fbdfb47-ef48-4a8d-8d66-e3ecb8e6d4de + content-type: + - application/json; charset=utf-8 + date: + - Wed, 22 Apr 2020 22:31:54 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + transfer-encoding: + - chunked + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '164' + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/prebuilt/receipt/analyzeResults/92e9a3b5-4577-4477-97b0-e76a1a5c0b84 + response: + body: + string: '{"status":"succeeded","createdDateTime":"2020-04-22T22:31:43Z","lastUpdatedDateTime":"2020-04-22T22:31:55Z","analyzeResult":{"version":"2.0.0","readResults":[{"page":1,"angle":0,"width":8.4967,"height":10.9967,"unit":"inch","language":"en"}],"documentResults":[{"docType":"prebuilt:receipt","pageRange":[1,1]}]}}' + headers: + apim-request-id: + - 8b1b874c-785f-4151-8a08-f36212b6794d + content-type: + - application/json; charset=utf-8 + date: + - Wed, 22 Apr 2020 22:32:00 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + transfer-encoding: + - chunked + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '856' + status: + code: 200 + message: OK +version: 1 diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_receipt.test_damaged_file_passed_as_bytes.yaml b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_receipt.test_damaged_file_passed_as_bytes.yaml new file mode 100644 index 000000000000..d6797764c1f5 --- /dev/null +++ b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_receipt.test_damaged_file_passed_as_bytes.yaml @@ -0,0 +1,42 @@ +interactions: +- request: + body: '%PDFUUU' + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '7' + Content-Type: + - application/pdf + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/prebuilt/receipt/analyze?includeTextDetails=false + response: + body: + string: '{"error":{"code":"BadArgument","innerError":{"requestId":"4b367f6a-d057-400b-ac1a-b61c42468fea"},"message":"Bad + or unrecognizable request JSON or binary file."}}' + headers: + apim-request-id: + - 4b367f6a-d057-400b-ac1a-b61c42468fea + content-type: + - application/json; charset=utf-8 + date: + - Wed, 22 Apr 2020 22:37:40 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + transfer-encoding: + - chunked + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '220' + status: + code: 400 + message: Bad Request +version: 1 diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_receipt.test_damaged_file_passed_as_bytes_io.yaml b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_receipt.test_damaged_file_passed_as_bytes_io.yaml new file mode 100644 index 000000000000..59055e4df7da --- /dev/null +++ b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_receipt.test_damaged_file_passed_as_bytes_io.yaml @@ -0,0 +1,47 @@ +interactions: +- request: + body: !!python/object/new:_io.BytesIO + state: !!python/tuple + - !!binary | + JVBERlVVVQ== + - 0 + - null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '7' + Content-Type: + - application/pdf + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/prebuilt/receipt/analyze?includeTextDetails=false + response: + body: + string: '{"error":{"code":"BadArgument","innerError":{"requestId":"180905cc-b574-4901-bce3-112c7a5da6a3"},"message":"Bad + or unrecognizable request JSON or binary file."}}' + headers: + apim-request-id: + - 180905cc-b574-4901-bce3-112c7a5da6a3 + content-type: + - application/json; charset=utf-8 + date: + - Wed, 22 Apr 2020 22:35:16 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + transfer-encoding: + - chunked + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '38' + status: + code: 400 + message: Bad Request +version: 1 diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_receipt.test_receipt_multipage.yaml b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_receipt.test_receipt_multipage.yaml new file mode 100644 index 000000000000..7018ed31fae6 --- /dev/null +++ b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_receipt.test_receipt_multipage.yaml @@ -0,0 +1,2088 @@ +interactions: +- request: + body: !!binary | + JVBERi0xLjcNCiW1tbW1DQoxIDAgb2JqDQo8PC9UeXBlL0NhdGFsb2cvUGFnZXMgMiAwIFIvTGFu + Zyhlbi1VUykgL1N0cnVjdFRyZWVSb290IDE2IDAgUi9NYXJrSW5mbzw8L01hcmtlZCB0cnVlPj4v + TWV0YWRhdGEgMjUzIDAgUi9WaWV3ZXJQcmVmZXJlbmNlcyAyNTQgMCBSPj4NCmVuZG9iag0KMiAw + IG9iag0KPDwvVHlwZS9QYWdlcy9Db3VudCAzL0tpZHNbIDMgMCBSIDExIDAgUiAxMyAwIFJdID4+ + DQplbmRvYmoNCjMgMCBvYmoNCjw8L1R5cGUvUGFnZS9QYXJlbnQgMiAwIFIvUmVzb3VyY2VzPDwv + Rm9udDw8L0YxIDUgMCBSL0YyIDkgMCBSPj4vRXh0R1N0YXRlPDwvR1M3IDcgMCBSL0dTOCA4IDAg + Uj4+L1Byb2NTZXRbL1BERi9UZXh0L0ltYWdlQi9JbWFnZUMvSW1hZ2VJXSA+Pi9NZWRpYUJveFsg + MCAwIDYxMiA3OTJdIC9Db250ZW50cyA0IDAgUi9Hcm91cDw8L1R5cGUvR3JvdXAvUy9UcmFuc3Bh + cmVuY3kvQ1MvRGV2aWNlUkdCPj4vVGFicy9TL1N0cnVjdFBhcmVudHMgMD4+DQplbmRvYmoNCjQg + MCBvYmoNCjw8L0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggMjg2ND4+DQpzdHJlYW0NCnicvZxZ + bxw3EsffBeg79ONMsGrzPhZBAMvXerEGkrWAPBiLwJYPGIilXVubbL79VrHvYRfZ3cOOAI2OLvJf + LFb/SPbB6tGP1fffP3r15OXTiv3wQ3X99En1n8sLVjP88lxUrDLwab2ovn64vPj5u+ru8uL65vLi + 0XNecVMzV918vLzgYMcqXikpam4ry1TtTHXzBexevLbVp29QZ/Up/OXav15cXrw5vLz77agP9/D9 + +WgOt/DzA3xXx39VN3+/vHgGOj9dXpzlkAOH+Nih4Ecr//x4JYP6V1D/azlVzVzNDKV60rzq2asn + VTXqCL6+I8RcLxjrayUi+eujgmhf+cOv+PEuxN+CUyYcefsJ/wsfrjG6g+PfNkfmxC9vau8pv3Jh + EaXCYmSt9Yl8dQV1OlXd3L45cCFLNVizmvt5xajBZ6iI2klK5W/HK25CF2NXvyulCX0oSM2QOQ/H + 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 + fvW3lN9NoKP8fgIt5fcTaCkfCZSmfCSw09UI6BG/5zmhhK3NXNLi2yxyv6sRhuO2Ndl2xSReu18C + SWJj63VjgCulDJhYt8bwpZRleJt/hbRauxkZKS1YnXrQP1Zeu/sWqczwsaPoQiXOyj7h6XqHU7Nw + 4j5Agofrl1/DFhRHCafxlSw3vgmNdx9P/alYcBMnVb/AV7HR2uNeVHHjrz9DKxFR4SLtfXVUh+u3 + 2N4QjPCBobkrNuZyvAMV+7FxL7PZQV3OCfxy5A4iij0481lKHXfbcTPqJ0nTd4eAs8CYcIeT1VbQ + t+LU2ltxVP7jrMGt4o1aeyuOlIaffhVkVamLzULb9D3+WLrUlRyhOO7ztEa61PJCAGLMOulS46lg + IcPXSJcaULmXuJ3hGulSIyq3DleUK6R1qRGVG5hGrGq1LjWkcmXwYaE10qVoxiXD+eoa6VI041zj + BgZrpEvRzPuam1Ug1aVohk8vi3XSHc04bmeEj9VUhsnwOhCMljA1gRHb9AMfw80Nf0dZqDxp/Xp4 + TA7MvFJgaGoPJlbVsrkCYqnn5PSIc8tK9/fXAS7TyBgJQ4uqLAzmohtYP/Xhid+vPlfPwtTZkXr3 + OJv90lxjdDiRlTildYc/cAPfx2Hvz5f4Gf75G0z37rvp7y0+uBxvgnWuuxwyB5hIuJvNHretowTd + UQYnabEnj3HPzvf9XP8bLHLV4Vu8cj/XCw7/gnk/4UU2Hn5z4s4HQ3MsdeqGPnb7VjRbEL8K9ww/ + Q0xY2N8U//f6AVcH8UOgZ7nFhcKt+Qi3sps3ssLRkbpW8S6K/XayZvFmr+cFRcraSsqbbFB44aDg + vdjTnS1ze6SeJew4LTy3Vep5YgoWKaRY4ZZ5DoOxWxLSwhkFY6rQf1JEOZRypFhuD9ozzxzgiKSk + iee8/w9kOwx8DQplbmRzdHJlYW0NCmVuZG9iag0KNSAwIG9iag0KPDwvVHlwZS9Gb250L1N1YnR5 + cGUvVHJ1ZVR5cGUvTmFtZS9GMS9CYXNlRm9udC9CQ0RFRUUrQ2FsaWJyaS9FbmNvZGluZy9XaW5B + bnNpRW5jb2RpbmcvRm9udERlc2NyaXB0b3IgNiAwIFIvRmlyc3RDaGFyIDMyL0xhc3RDaGFyIDEy + MS9XaWR0aHMgMjQ5IDAgUj4+DQplbmRvYmoNCjYgMCBvYmoNCjw8L1R5cGUvRm9udERlc2NyaXB0 + b3IvRm9udE5hbWUvQkNERUVFK0NhbGlicmkvRmxhZ3MgMzIvSXRhbGljQW5nbGUgMC9Bc2NlbnQg + NzUwL0Rlc2NlbnQgLTI1MC9DYXBIZWlnaHQgNzUwL0F2Z1dpZHRoIDUyMS9NYXhXaWR0aCAxNzQz + L0ZvbnRXZWlnaHQgNDAwL1hIZWlnaHQgMjUwL1N0ZW1WIDUyL0ZvbnRCQm94WyAtNTAzIC0yNTAg + MTI0MCA3NTBdIC9Gb250RmlsZTIgMjUwIDAgUj4+DQplbmRvYmoNCjcgMCBvYmoNCjw8L1R5cGUv + RXh0R1N0YXRlL0JNL05vcm1hbC9jYSAxPj4NCmVuZG9iag0KOCAwIG9iag0KPDwvVHlwZS9FeHRH + U3RhdGUvQk0vTm9ybWFsL0NBIDE+Pg0KZW5kb2JqDQo5IDAgb2JqDQo8PC9UeXBlL0ZvbnQvU3Vi + dHlwZS9UcnVlVHlwZS9OYW1lL0YyL0Jhc2VGb250L0JDREZFRStDYWxpYnJpLUJvbGQvRW5jb2Rp + bmcvV2luQW5zaUVuY29kaW5nL0ZvbnREZXNjcmlwdG9yIDEwIDAgUi9GaXJzdENoYXIgMzIvTGFz + dENoYXIgMTIwL1dpZHRocyAyNTEgMCBSPj4NCmVuZG9iag0KMTAgMCBvYmoNCjw8L1R5cGUvRm9u + dERlc2NyaXB0b3IvRm9udE5hbWUvQkNERkVFK0NhbGlicmktQm9sZC9GbGFncyAzMi9JdGFsaWNB + bmdsZSAwL0FzY2VudCA3NTAvRGVzY2VudCAtMjUwL0NhcEhlaWdodCA3NTAvQXZnV2lkdGggNTM2 + L01heFdpZHRoIDE3ODEvRm9udFdlaWdodCA3MDAvWEhlaWdodCAyNTAvU3RlbVYgNTMvRm9udEJC + b3hbIC01MTkgLTI1MCAxMjYzIDc1MF0gL0ZvbnRGaWxlMiAyNTIgMCBSPj4NCmVuZG9iag0KMTEg + MCBvYmoNCjw8L1R5cGUvUGFnZS9QYXJlbnQgMiAwIFIvUmVzb3VyY2VzPDwvRm9udDw8L0YyIDkg + MCBSPj4vRXh0R1N0YXRlPDwvR1M3IDcgMCBSL0dTOCA4IDAgUj4+L1Byb2NTZXRbL1BERi9UZXh0 + L0ltYWdlQi9JbWFnZUMvSW1hZ2VJXSA+Pi9NZWRpYUJveFsgMCAwIDYxMiA3OTJdIC9Db250ZW50 + cyAxMiAwIFIvR3JvdXA8PC9UeXBlL0dyb3VwL1MvVHJhbnNwYXJlbmN5L0NTL0RldmljZVJHQj4+ + L1RhYnMvUy9TdHJ1Y3RQYXJlbnRzIDE+Pg0KZW5kb2JqDQoxMiAwIG9iag0KPDwvRmlsdGVyL0Zs + YXRlRGVjb2RlL0xlbmd0aCA0NzY+Pg0Kc3RyZWFtDQp4nK2Yu2ocQRBF84H5hwplB7Vdj36BUKCV + LGwQ2GjBgVEoKZLA9v+Dy4sDh6rmTjDQzNCne6BO3xo6fKXLy8P98fMNlasrur450s99K1z+XlOU + CrW496n062nfvn+kt327Pu3b4ZNSPDg975vES4WEunJRp14Ge6PTa7x099Dp5XdMSC/n0fg3utu3 + Hxf04ZFOX/btNqb7tm90e38k+m9BAlpQm8pNzws6r+OdeEXhe+M+0nhD4VvhKWm8o/Be2fL4isLr + ZO9pfEPhxbhZGt9B+Do795nGDxR+CM/87icK3xqX/O4FJcJaC2vN81Heq+bs+dITlPiqDB4LfJT5 + alGe+doXlPp8dF7YPkp93oW15fko93mt7PljV1Dyc5tc8+euoOznatw9z0fpzyOHyULsQenPInZp + /vsrSn8Wucvz319R+rMIXvnyU5T9zJ37Ah9lP9PB+cNXUfazSF5lYfso+2lEL12oPpT9NLLXStOD + sp+2utL1KMp+6pNnvvoNZT+N8FXy4cNQ9tMIX5rP3oayn0b4snz9G0p/MhrXfPg2lP6kR9u9wEf5 + TyJ9LTQ/hvKfRPpaaH4M5T+J9LXQ/BjKf1I614X6R/lvCveF9OWwv4CVR3uff/8AMWTgdQ0KZW5k + c3RyZWFtDQplbmRvYmoNCjEzIDAgb2JqDQo8PC9UeXBlL1BhZ2UvUGFyZW50IDIgMCBSL1Jlc291 + cmNlczw8L0ZvbnQ8PC9GMSA1IDAgUi9GMiA5IDAgUj4+L0V4dEdTdGF0ZTw8L0dTNyA3IDAgUi9H + UzggOCAwIFI+Pi9Qcm9jU2V0Wy9QREYvVGV4dC9JbWFnZUIvSW1hZ2VDL0ltYWdlSV0gPj4vTWVk + aWFCb3hbIDAgMCA2MTIgNzkyXSAvQ29udGVudHMgMTQgMCBSL0dyb3VwPDwvVHlwZS9Hcm91cC9T + L1RyYW5zcGFyZW5jeS9DUy9EZXZpY2VSR0I+Pi9UYWJzL1MvU3RydWN0UGFyZW50cyAyPj4NCmVu + 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 + mxWDaazuLffHZf/XyULlydKvhoeloFgtJRTUpHahL93+mltBGOxpKTm6Y7Lu6v7GpCD11DNaQExK + 6AdgSOeZT717wkML9upBhyuL6n11mfRLsw1gXRIVLp3a0+/RA+T32sKAIVRhtoQn9+zXM8QITO+A + 9glKLNq+F87X3ru/nWXj+ea8/ouJHAe52xbDiDYr2x4OQ5UX8RyPeO0OBw4teexOr37fA/vb+QJ0 + +xYuIfZaweC/AN6IFYv+0NkZIO4MmKuL8ERtde5O1TH+MO+X/kbPZ/AJ9Sd9u/979eA4Gd6x3mUW + g6WWMJhZi94xhb0jFJHhecL9wep69bHn+5wihEsfiDWLTrGFneJuoM3PeF46LXyXMMzZUOHYoeH7 + xGCtb1Gxwi2rGcxq7BqXFo4omJxw9Qd5lMFVFhVbOo1958iBPCIwaeRJ4/8DtXV3Ww0KZW5kc3Ry + ZWFtDQplbmRvYmoNCjE1IDAgb2JqDQo8PC9BdXRob3IoS3Jpc3RhIFByYXRpY28pIC9DcmVhdG9y + KP7/AE0AaQBjAHIAbwBzAG8AZgB0AK4AIABXAG8AcgBkACAAZgBvAHIAIABPAGYAZgBpAGMAZQAg + ADMANgA1KSAvQ3JlYXRpb25EYXRlKEQ6MjAyMDA0MjIxNjQ1MjktMDcnMDAnKSAvTW9kRGF0ZShE + OjIwMjAwNDIyMTY0NTI5LTA3JzAwJykgL1Byb2R1Y2VyKP7/AE0AaQBjAHIAbwBzAG8AZgB0AK4A + IABXAG8AcgBkACAAZgBvAHIAIABPAGYAZgBpAGMAZQAgADMANgA1KSA+Pg0KZW5kb2JqDQoyMyAw + IG9iag0KPDwvVHlwZS9PYmpTdG0vTiAyMzIvRmlyc3QgMjAzNS9GaWx0ZXIvRmxhdGVEZWNvZGUv + TGVuZ3RoIDMwNTE+Pg0Kc3RyZWFtDQp4nO1b24ocyRF9N/gf8g+mIu8Jy4Jt7WKzrBCSwA/CDyOp + LQ07M72MWiD9vc+pipyetTOz1Gn7weCHmbrG/UTkpaKtmMXYYIIYG40s2dhkJOIezsQaW3DfG7cY + J9FYnMWMU+NjMM6CLBrnTIjJOG+i4FkwMRa8ZpIFUTIp4W1rsrXGi8nJGe9NAUPvTMnkBLEuGx9w + LLi9GBEPfsWIBcOAawuOHtfOigkWx5SpsXiwCR7HnExwRgKIfMaxRBNoB/QK4J+kmAD6lHAfzzOs + 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 + o7YHauOettT9bxfFC374xVj+v4b+R2qoOrMW0tkCqt2Sut9ed8Hr1nDdsK3bqHVDsm4T1s27ug1W + N6fqllHdfKlbInWjoi7560K8Lo/rQrMu/+qirC5v6qKjLgX+W4W/fs361q9fDMY/AFTdMPANCmVu + ZHN0cmVhbQ0KZW5kb2JqDQoyNDkgMCBvYmoNClsgMjI2IDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAy + NTAgMzA2IDI1MiAwIDUwNyA1MDcgNTA3IDUwNyA1MDcgNTA3IDUwNyA1MDcgNTA3IDUwNyAyNjgg + MCAwIDAgMCAwIDAgNTc5IDU0NCA1MzMgNjE1IDQ4OCA0NTkgNjMxIDYyMyAyNTIgMCAwIDQyMCA4 + NTUgMCAwIDUxNyA2NzMgNTQzIDQ1OSAwIDAgMCA4OTAgMCAwIDAgMCAwIDAgMCAwIDAgNDc5IDUy + NSA0MjMgNTI1IDQ5OCAwIDQ3MSAwIDIzMCAwIDAgMjMwIDc5OSA1MjUgNTI3IDUyNSAwIDM0OSAz + OTEgMzM1IDUyNSA0NTIgMCAwIDQ1M10gDQplbmRvYmoNCjI1MCAwIG9iag0KPDwvRmlsdGVyL0Zs + YXRlRGVjb2RlL0xlbmd0aCA1MzE4Mi9MZW5ndGgxIDEzNzU5Nj4+DQpzdHJlYW0NCnic7H0HXFTH + 2v475+zCUhaWKrLiLq6Auig2FEtklaJoLCirgA2k2LChGI0lJEZNSEy5Mb2ZnhtNsqwaMdXkphfT + e+/JjaZdzc01Ub5nzruDaDTJvfd/v3z3/9sXnvM8887Me2bmzMyZjRBIEJENFxNVFIzIL1mf7HuW + xJeZRLFJBSNOzbvntXVfkfhoNVGIb/ykrL7XPly5k0icg1oVVQsqF7/T99MUovmbicyDq5Yvc+5e + /EY20Y1fIH1/7eLZC9a+pw8kWvwCkdU9u25l7bvOlS6i228meumvc2oqq38cu9KHeJGIN2AOHNY7 + O+1HOh/prnMWLFuRPXOSG2nEm7utblFV5U2b53cjseoiFJ+8oHLF4l7W9G7In4PyzgU1yyqvOmvL + chI/yfpnL6xcUHPdoYMzSTSjfu+lixctXdZqpw3ozzRZfnF9zeK42V06Eq35GbdDP+ENGfzhP3a9 + WDAzeuhB6mghafd9tfpZya8XnTb+p0OHG8P2WQYgGUYasaFeCB0h8Wj4lp8OHdoSts+I1M46bpMe + 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 + wAKEAiGAGTANb8VVBzRAAETVAj5xBDgM/Az8BBwC/gH8CPwd+AE4CBwA/gZ8D3wHfAt8A3wN7Af2 + AV8BfwW+BL4APgc+Az4FPgE+Bj4CPgQ+AN4H3gPeBd4B3gbeAt4E3gBeB14DXgVeAV4GXgJeBF4A + ngf2As8BzwLPAE8DTwFPAk8AjwOPAY8CfwEeAR4G9gAPAQ8CDwD3A/cB9wK7gRZgF3APsBPYAWwH + /EAz4APuBu4C7gS2AVuBO4A/A7cDtwG3ArcANwM3ATcCNwBbgOuB64BrgWuAq4GrgCuBK4DLgcuA + S4HNwCXAn4CLgYuAC4ELgE3A+cB5QBNwLnAOsBHYAKyn6uGNAutfYP0LrH+B9S+w/gXWv8D6F1j/ + AutfYP0LrH+B9S+w/gXWv8D6F1j/AutfYP2LegB7gMAeILAHCOwBAnuAwB4gsAcI7AECe4DAHiCw + BwjsAQJ7gMAeILAHCOwBAnuAwB4gsAcI7AECe4DAHiCwBwjsAQJ7gMAeILAHCOwBAnuAwB4gsAcI + 7AEC619g/Qusf4G1L7D2Bda+wNoXWPsCa19g7QusfYG1L7D2/+h9+L/cyv7oBvyXGy1d2u5gJi1p + pvyFp9DriI5ccszvqUygebSUGvG1gTbRJfQQvU2zaB3UlbSFbqU/k48epqfo9d/xOy+/246sNC+g + SH0XhVAcUeuh1v1HbgVazFHtPJcgFWdyHvW02lq/Ps739ZFLWm1HWkJiKdyoa9Vegvdv4nDrIbxy + kW4dINPaRuhoo8Z3odcdufvIbceNQTGV01SaRtOpgirR/2qaQ3MxMvOpjhbQQiO1EHmzca1FaiZK + YXsx9NFSi2gxUE/LqIGW42sx9NJASuYtMdINdBq+VtBKOp1W0WpaE7ieZnhWI+d0I70CWEtn4Mmc + SWcZSjF71tHZtB5PbSOdQ+f+aurcNtVE59H5eM4X0IUn1ZuOSV2Er4vpT5gPm+lSuoyuwLy4mq45 + znu54b+KrqPrMWdk3qXwXG8omXs/PU476S66m+4xxrIKo8Yjosal1hjDxRiD1ejhunYt5vE7rW20 + 1qLvsm9NgZ6ugP+sdjWWB8ZRllyHkhyFn4OMsua4kbgIfWB9tEecutTo/1Fv+1H5Na8aj2vajczV + Rkqq470n05fRtViBN+AqR1WqG6FZXW/o9v7r2spuMdI30c10C57FbYZSzJ5boW+j27G276CttA1f + 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 + IDAgMCAwIDQ1OSAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCA0NzMgNDk1IDAgMCAwIDAgMCAwIDAg + MCAwIDAgNDk4IDAgNDk0IDUzNyAwIDUzNyA1MDMgMCA0NzQgMCAyNDYgMCAwIDI0NiAwIDUzNyA1 + MzggNTM3IDAgMzU1IDM5OSAzNDcgNTM3IDAgMCA0NTldIA0KZW5kb2JqDQoyNTIgMCBvYmoNCjw8 + L0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggMzM2MzMvTGVuZ3RoMSAxMDI3MDQ+Pg0Kc3RyZWFt + DQp4nOydCXiTVdb4z33fLM3WJl3SJU2aNk26J90otAUaulEoW6HBFgRaaLG4UYGqoAzgglhFVFzG + BUFHxwWUNIAUQUTFXdQZUccdlxnXjqjgKNDkf+570tIiuMz4jd//+XLa8/7uPffcfXsj8SkwANDj + QwZNVeWV9bcVPhsGrO2PAGqMj6t4/SnTOGBzDqBD98Qprvz1X835GoCtwlxNc85pblc9YVwHcNYN + mP7wnPMXWcseafgS4NpKAMWque1nnHPn5+WbANrHAaiizjh78dyPlhs+ArjpRYC5+rbW5pbvT198 + CZanxfKK2tCg25n4KsYxP6S2nbPowsefSy3F+KcA8zadPX9O81VvnncY4Ng76D71nOYL29Pvi7Ng + ehv6W89pXdR86yUbzge24HuMX3Zu8zmt75e/mgusoBAg96r2+QsXBUywEvuzh/u3L2ht/8H9/EKA + xU0Axg+Aj4Wi5IMVj770+KyI4YchPgy47Pzi4hc53xhzweSjb/UOUSeETUJfFQhAgvkU4Ae2V73h + 6FtHVqoTpJIGSPwmbjFlwlrQw4UgYk49uABr1X6P9QqYKsrGCrtADmHyW+QFWKSFKL4CjwgQBkKE + UhBlMlGQfQzOwB5IvQiLVfGyx0+xWsEKYH+R2qC8Q3BYgQV4mrhHHs57CtGy8OOtYS/jbL0JsfAr + RXYxrP61eX5OxE2/fZm/RBT+/0694rNQdlL7d6D9b9R/MpGNBvWvzjMM982p0q4bnCauObXvIL8G + WCm7HRp+ykfQ/3RZmB53yrRjJ8+rqMF6nzl5muwt8PxUfSeK2Hu8HJn9hHGYDxUnzXMRmAbVuQku + +zV1nkxkMnD8Ej/xWxj9q8uuhT/8Ct/aQXEljP219f1vFPGFwXPG5cS+nijsX3DWz5WLPj87tj/l + 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 + KrFHQKlmZxW8qHpfRETYMZZdos8K9Tc0bmVNGZWf8PP4qiK6kZk7D1Hp68k6+cqujnrMi0+QTUvB + 02LWgEvJpMfQvQGNGyJ9Cp8e2OiVa3QkzxGYHxUIMdPMzhyDZ2iKtYRjadyCZoFjccXgVeuxLKL/ + AfpFWhMNCmVuZHN0cmVhbQ0KZW5kb2JqDQoyNTMgMCBvYmoNCjw8L1R5cGUvTWV0YWRhdGEvU3Vi + dHlwZS9YTUwvTGVuZ3RoIDMwODQ+Pg0Kc3RyZWFtDQo8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9 + Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/Pjx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6 + bWV0YS8iIHg6eG1wdGs9IjMuMS03MDEiPgo8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cu + dzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgo8cmRmOkRlc2NyaXB0aW9uIHJkZjph + Ym91dD0iIiAgeG1sbnM6cGRmPSJodHRwOi8vbnMuYWRvYmUuY29tL3BkZi8xLjMvIj4KPHBkZjpQ + cm9kdWNlcj5NaWNyb3NvZnTCriBXb3JkIGZvciBPZmZpY2UgMzY1PC9wZGY6UHJvZHVjZXI+PC9y + ZGY6RGVzY3JpcHRpb24+CjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiICB4bWxuczpkYz0i + aHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iPgo8ZGM6Y3JlYXRvcj48cmRmOlNlcT48 + cmRmOmxpPktyaXN0YSBQcmF0aWNvPC9yZGY6bGk+PC9yZGY6U2VxPjwvZGM6Y3JlYXRvcj48L3Jk + ZjpEZXNjcmlwdGlvbj4KPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgIHhtbG5zOnhtcD0i + aHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyI+Cjx4bXA6Q3JlYXRvclRvb2w+TWljcm9zb2Z0 + wq4gV29yZCBmb3IgT2ZmaWNlIDM2NTwveG1wOkNyZWF0b3JUb29sPjx4bXA6Q3JlYXRlRGF0ZT4y + MDIwLTA0LTIyVDE2OjQ1OjI5LTA3OjAwPC94bXA6Q3JlYXRlRGF0ZT48eG1wOk1vZGlmeURhdGU+ + MjAyMC0wNC0yMlQxNjo0NToyOS0wNzowMDwveG1wOk1vZGlmeURhdGU+PC9yZGY6RGVzY3JpcHRp + b24+CjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiICB4bWxuczp4bXBNTT0iaHR0cDovL25z + LmFkb2JlLmNvbS94YXAvMS4wL21tLyI+Cjx4bXBNTTpEb2N1bWVudElEPnV1aWQ6NThCQjA4MDUt + RjY5Ri00NDBGLTgzOUItMURFMDI1NjUxREUyPC94bXBNTTpEb2N1bWVudElEPjx4bXBNTTpJbnN0 + YW5jZUlEPnV1aWQ6NThCQjA4MDUtRjY5Ri00NDBGLTgzOUItMURFMDI1NjUxREUyPC94bXBNTTpJ + bnN0YW5jZUlEPjwvcmRmOkRlc2NyaXB0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKPC9y + ZGY6UkRGPjwveDp4bXBtZXRhPjw/eHBhY2tldCBlbmQ9InciPz4NCmVuZHN0cmVhbQ0KZW5kb2Jq + DQoyNTQgMCBvYmoNCjw8L0Rpc3BsYXlEb2NUaXRsZSB0cnVlPj4NCmVuZG9iag0KMjU1IDAgb2Jq + DQo8PC9UeXBlL1hSZWYvU2l6ZSAyNTUvV1sgMSA0IDJdIC9Sb290IDEgMCBSL0luZm8gMTUgMCBS + L0lEWzwwNTA4QkI1ODlGRjYwRjQ0ODM5QjFERTAyNTY1MURFMj48MDUwOEJCNTg5RkY2MEY0NDgz + OUIxREUwMjU2NTFERTI+XSAvRmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0aCA1MDc+Pg0Kc3RyZWFt + DQp4nDXV93fPZxQH8E9sSojZGkG0tQmKGrVHFKU2tUeomrXTauy9YlMdKFV7U3vvHUWJvX7rv5B+ + 83nx3HOe17nn3Ht/fQdB5KWnR0X+mCDIYAv+C4lKD8mTFBJdJiRvASRgcki+SiExcSH5dQU7hhRK + DCk9JggyRU4XCZ7jBV7iFZ7h3eTryF5c8vsuO6KQCZmRBVmRDTmQE7nwAXIjD6LRCoVRCPmQF/kR + g4IogASUwIcogqL4CMVRDB+jJGJRGqVQBnGoiE/xCcqhLCqgPKqjMiqhKqqgGuJRB5+hBmqhJj5H + bTRCPdTFF6iPhmiAlmiCxmiGpmiB5vgSrdEGbfEV2qE9vkYHdEQndEYXdEU3dEcPfIOe6IXe6IO+ + 6If+eIMBGIhBSMRgDMG3GIrvMAzDMQIjMQqj8T3GYCzGYTwmYCImIQk/4EdMxk9IxhRMxTRMxwzM + xCzMxhzMxTzMx1ssxQIsxCIsxhKkYBmWYwVWYhVWYw3uYj1+x89Yi1+wDr/hV6RiCzZiAzbhD/yJ + zdiFrfgL27ENO7EDB7EHu7EPe3EA+3Ech3EIR/A3juEozuEkTuA0TuEszuAqLuA8LuEiruAy7uA6 + ruEmbuA2buEf3MN9PMC/eIhHSMNjPMHTSFpUSQ3DJj4jvSJVPCQqNmRGWkhK/SD4H/tbjC8NCmVu + ZHN0cmVhbQ0KZW5kb2JqDQp4cmVmDQowIDI1Ng0KMDAwMDAwMDAxNiA2NTUzNSBmDQowMDAwMDAw + MDE3IDAwMDAwIG4NCjAwMDAwMDAxNjggMDAwMDAgbg0KMDAwMDAwMDIzOCAwMDAwMCBuDQowMDAw + MDAwNTExIDAwMDAwIG4NCjAwMDAwMDM0NTAgMDAwMDAgbg0KMDAwMDAwMzYxOSAwMDAwMCBuDQow + MDAwMDAzODU5IDAwMDAwIG4NCjAwMDAwMDM5MTIgMDAwMDAgbg0KMDAwMDAwMzk2NSAwMDAwMCBu + DQowMDAwMDA0MTQwIDAwMDAwIG4NCjAwMDAwMDQzODYgMDAwMDAgbg0KMDAwMDAwNDY1MiAwMDAw + MCBuDQowMDAwMDA1MjAzIDAwMDAwIG4NCjAwMDAwMDU0NzggMDAwMDAgbg0KMDAwMDAwODU2MyAw + MDAwMCBuDQowMDAwMDAwMDE3IDY1NTM1IGYNCjAwMDAwMDAwMTggNjU1MzUgZg0KMDAwMDAwMDAx + OSA2NTUzNSBmDQowMDAwMDAwMDIwIDY1NTM1IGYNCjAwMDAwMDAwMjEgNjU1MzUgZg0KMDAwMDAw + MDAyMiA2NTUzNSBmDQowMDAwMDAwMDIzIDY1NTM1IGYNCjAwMDAwMDAwMjQgNjU1MzUgZg0KMDAw + MDAwMDAyNSA2NTUzNSBmDQowMDAwMDAwMDI2IDY1NTM1IGYNCjAwMDAwMDAwMjcgNjU1MzUgZg0K + MDAwMDAwMDAyOCA2NTUzNSBmDQowMDAwMDAwMDI5IDY1NTM1IGYNCjAwMDAwMDAwMzAgNjU1MzUg + Zg0KMDAwMDAwMDAzMSA2NTUzNSBmDQowMDAwMDAwMDMyIDY1NTM1IGYNCjAwMDAwMDAwMzMgNjU1 + MzUgZg0KMDAwMDAwMDAzNCA2NTUzNSBmDQowMDAwMDAwMDM1IDY1NTM1IGYNCjAwMDAwMDAwMzYg + NjU1MzUgZg0KMDAwMDAwMDAzNyA2NTUzNSBmDQowMDAwMDAwMDM4IDY1NTM1IGYNCjAwMDAwMDAw + MzkgNjU1MzUgZg0KMDAwMDAwMDA0MCA2NTUzNSBmDQowMDAwMDAwMDQxIDY1NTM1IGYNCjAwMDAw + MDAwNDIgNjU1MzUgZg0KMDAwMDAwMDA0MyA2NTUzNSBmDQowMDAwMDAwMDQ0IDY1NTM1IGYNCjAw + MDAwMDAwNDUgNjU1MzUgZg0KMDAwMDAwMDA0NiA2NTUzNSBmDQowMDAwMDAwMDQ3IDY1NTM1IGYN + CjAwMDAwMDAwNDggNjU1MzUgZg0KMDAwMDAwMDA0OSA2NTUzNSBmDQowMDAwMDAwMDUwIDY1NTM1 + IGYNCjAwMDAwMDAwNTEgNjU1MzUgZg0KMDAwMDAwMDA1MiA2NTUzNSBmDQowMDAwMDAwMDUzIDY1 + NTM1IGYNCjAwMDAwMDAwNTQgNjU1MzUgZg0KMDAwMDAwMDA1NSA2NTUzNSBmDQowMDAwMDAwMDU2 + IDY1NTM1IGYNCjAwMDAwMDAwNTcgNjU1MzUgZg0KMDAwMDAwMDA1OCA2NTUzNSBmDQowMDAwMDAw + MDU5IDY1NTM1IGYNCjAwMDAwMDAwNjAgNjU1MzUgZg0KMDAwMDAwMDA2MSA2NTUzNSBmDQowMDAw + MDAwMDYyIDY1NTM1IGYNCjAwMDAwMDAwNjMgNjU1MzUgZg0KMDAwMDAwMDA2NCA2NTUzNSBmDQow + MDAwMDAwMDY1IDY1NTM1IGYNCjAwMDAwMDAwNjYgNjU1MzUgZg0KMDAwMDAwMDA2NyA2NTUzNSBm + DQowMDAwMDAwMDY4IDY1NTM1IGYNCjAwMDAwMDAwNjkgNjU1MzUgZg0KMDAwMDAwMDA3MCA2NTUz + NSBmDQowMDAwMDAwMDcxIDY1NTM1IGYNCjAwMDAwMDAwNzIgNjU1MzUgZg0KMDAwMDAwMDA3MyA2 + NTUzNSBmDQowMDAwMDAwMDc0IDY1NTM1IGYNCjAwMDAwMDAwNzUgNjU1MzUgZg0KMDAwMDAwMDA3 + NiA2NTUzNSBmDQowMDAwMDAwMDc3IDY1NTM1IGYNCjAwMDAwMDAwNzggNjU1MzUgZg0KMDAwMDAw + MDA3OSA2NTUzNSBmDQowMDAwMDAwMDgwIDY1NTM1IGYNCjAwMDAwMDAwODEgNjU1MzUgZg0KMDAw + MDAwMDA4MiA2NTUzNSBmDQowMDAwMDAwMDgzIDY1NTM1IGYNCjAwMDAwMDAwODQgNjU1MzUgZg0K + MDAwMDAwMDA4NSA2NTUzNSBmDQowMDAwMDAwMDg2IDY1NTM1IGYNCjAwMDAwMDAwODcgNjU1MzUg + Zg0KMDAwMDAwMDA4OCA2NTUzNSBmDQowMDAwMDAwMDg5IDY1NTM1IGYNCjAwMDAwMDAwOTAgNjU1 + MzUgZg0KMDAwMDAwMDA5MSA2NTUzNSBmDQowMDAwMDAwMDkyIDY1NTM1IGYNCjAwMDAwMDAwOTMg + NjU1MzUgZg0KMDAwMDAwMDA5NCA2NTUzNSBmDQowMDAwMDAwMDk1IDY1NTM1IGYNCjAwMDAwMDAw + OTYgNjU1MzUgZg0KMDAwMDAwMDA5NyA2NTUzNSBmDQowMDAwMDAwMDk4IDY1NTM1IGYNCjAwMDAw + MDAwOTkgNjU1MzUgZg0KMDAwMDAwMDEwMCA2NTUzNSBmDQowMDAwMDAwMTAxIDY1NTM1IGYNCjAw + MDAwMDAxMDIgNjU1MzUgZg0KMDAwMDAwMDEwMyA2NTUzNSBmDQowMDAwMDAwMTA0IDY1NTM1IGYN + CjAwMDAwMDAxMDUgNjU1MzUgZg0KMDAwMDAwMDEwNiA2NTUzNSBmDQowMDAwMDAwMTA3IDY1NTM1 + IGYNCjAwMDAwMDAxMDggNjU1MzUgZg0KMDAwMDAwMDEwOSA2NTUzNSBmDQowMDAwMDAwMTEwIDY1 + NTM1IGYNCjAwMDAwMDAxMTEgNjU1MzUgZg0KMDAwMDAwMDExMiA2NTUzNSBmDQowMDAwMDAwMTEz + IDY1NTM1IGYNCjAwMDAwMDAxMTQgNjU1MzUgZg0KMDAwMDAwMDExNSA2NTUzNSBmDQowMDAwMDAw + MTE2IDY1NTM1IGYNCjAwMDAwMDAxMTcgNjU1MzUgZg0KMDAwMDAwMDExOCA2NTUzNSBmDQowMDAw + MDAwMTE5IDY1NTM1IGYNCjAwMDAwMDAxMjAgNjU1MzUgZg0KMDAwMDAwMDEyMSA2NTUzNSBmDQow + MDAwMDAwMTIyIDY1NTM1IGYNCjAwMDAwMDAxMjMgNjU1MzUgZg0KMDAwMDAwMDEyNCA2NTUzNSBm + DQowMDAwMDAwMTI1IDY1NTM1IGYNCjAwMDAwMDAxMjYgNjU1MzUgZg0KMDAwMDAwMDEyNyA2NTUz + NSBmDQowMDAwMDAwMTI4IDY1NTM1IGYNCjAwMDAwMDAxMjkgNjU1MzUgZg0KMDAwMDAwMDEzMCA2 + NTUzNSBmDQowMDAwMDAwMTMxIDY1NTM1IGYNCjAwMDAwMDAxMzIgNjU1MzUgZg0KMDAwMDAwMDEz + MyA2NTUzNSBmDQowMDAwMDAwMTM0IDY1NTM1IGYNCjAwMDAwMDAxMzUgNjU1MzUgZg0KMDAwMDAw + MDEzNiA2NTUzNSBmDQowMDAwMDAwMTM3IDY1NTM1IGYNCjAwMDAwMDAxMzggNjU1MzUgZg0KMDAw + MDAwMDEzOSA2NTUzNSBmDQowMDAwMDAwMTQwIDY1NTM1IGYNCjAwMDAwMDAxNDEgNjU1MzUgZg0K + MDAwMDAwMDE0MiA2NTUzNSBmDQowMDAwMDAwMTQzIDY1NTM1IGYNCjAwMDAwMDAxNDQgNjU1MzUg + Zg0KMDAwMDAwMDE0NSA2NTUzNSBmDQowMDAwMDAwMTQ2IDY1NTM1IGYNCjAwMDAwMDAxNDcgNjU1 + MzUgZg0KMDAwMDAwMDE0OCA2NTUzNSBmDQowMDAwMDAwMTQ5IDY1NTM1IGYNCjAwMDAwMDAxNTAg + NjU1MzUgZg0KMDAwMDAwMDE1MSA2NTUzNSBmDQowMDAwMDAwMTUyIDY1NTM1IGYNCjAwMDAwMDAx + NTMgNjU1MzUgZg0KMDAwMDAwMDE1NCA2NTUzNSBmDQowMDAwMDAwMTU1IDY1NTM1IGYNCjAwMDAw + MDAxNTYgNjU1MzUgZg0KMDAwMDAwMDE1NyA2NTUzNSBmDQowMDAwMDAwMTU4IDY1NTM1IGYNCjAw + MDAwMDAxNTkgNjU1MzUgZg0KMDAwMDAwMDE2MCA2NTUzNSBmDQowMDAwMDAwMTYxIDY1NTM1IGYN + CjAwMDAwMDAxNjIgNjU1MzUgZg0KMDAwMDAwMDE2MyA2NTUzNSBmDQowMDAwMDAwMTY0IDY1NTM1 + IGYNCjAwMDAwMDAxNjUgNjU1MzUgZg0KMDAwMDAwMDE2NiA2NTUzNSBmDQowMDAwMDAwMTY3IDY1 + NTM1IGYNCjAwMDAwMDAxNjggNjU1MzUgZg0KMDAwMDAwMDE2OSA2NTUzNSBmDQowMDAwMDAwMTcw + IDY1NTM1IGYNCjAwMDAwMDAxNzEgNjU1MzUgZg0KMDAwMDAwMDE3MiA2NTUzNSBmDQowMDAwMDAw + MTczIDY1NTM1IGYNCjAwMDAwMDAxNzQgNjU1MzUgZg0KMDAwMDAwMDE3NSA2NTUzNSBmDQowMDAw + MDAwMTc2IDY1NTM1IGYNCjAwMDAwMDAxNzcgNjU1MzUgZg0KMDAwMDAwMDE3OCA2NTUzNSBmDQow + MDAwMDAwMTc5IDY1NTM1IGYNCjAwMDAwMDAxODAgNjU1MzUgZg0KMDAwMDAwMDE4MSA2NTUzNSBm + DQowMDAwMDAwMTgyIDY1NTM1IGYNCjAwMDAwMDAxODMgNjU1MzUgZg0KMDAwMDAwMDE4NCA2NTUz + NSBmDQowMDAwMDAwMTg1IDY1NTM1IGYNCjAwMDAwMDAxODYgNjU1MzUgZg0KMDAwMDAwMDE4NyA2 + NTUzNSBmDQowMDAwMDAwMTg4IDY1NTM1IGYNCjAwMDAwMDAxODkgNjU1MzUgZg0KMDAwMDAwMDE5 + MCA2NTUzNSBmDQowMDAwMDAwMTkxIDY1NTM1IGYNCjAwMDAwMDAxOTIgNjU1MzUgZg0KMDAwMDAw + MDE5MyA2NTUzNSBmDQowMDAwMDAwMTk0IDY1NTM1IGYNCjAwMDAwMDAxOTUgNjU1MzUgZg0KMDAw + MDAwMDE5NiA2NTUzNSBmDQowMDAwMDAwMTk3IDY1NTM1IGYNCjAwMDAwMDAxOTggNjU1MzUgZg0K + MDAwMDAwMDE5OSA2NTUzNSBmDQowMDAwMDAwMjAwIDY1NTM1IGYNCjAwMDAwMDAyMDEgNjU1MzUg + Zg0KMDAwMDAwMDIwMiA2NTUzNSBmDQowMDAwMDAwMjAzIDY1NTM1IGYNCjAwMDAwMDAyMDQgNjU1 + MzUgZg0KMDAwMDAwMDIwNSA2NTUzNSBmDQowMDAwMDAwMjA2IDY1NTM1IGYNCjAwMDAwMDAyMDcg + NjU1MzUgZg0KMDAwMDAwMDIwOCA2NTUzNSBmDQowMDAwMDAwMjA5IDY1NTM1IGYNCjAwMDAwMDAy + MTAgNjU1MzUgZg0KMDAwMDAwMDIxMSA2NTUzNSBmDQowMDAwMDAwMjEyIDY1NTM1IGYNCjAwMDAw + MDAyMTMgNjU1MzUgZg0KMDAwMDAwMDIxNCA2NTUzNSBmDQowMDAwMDAwMjE1IDY1NTM1IGYNCjAw + MDAwMDAyMTYgNjU1MzUgZg0KMDAwMDAwMDIxNyA2NTUzNSBmDQowMDAwMDAwMjE4IDY1NTM1IGYN + CjAwMDAwMDAyMTkgNjU1MzUgZg0KMDAwMDAwMDIyMCA2NTUzNSBmDQowMDAwMDAwMjIxIDY1NTM1 + IGYNCjAwMDAwMDAyMjIgNjU1MzUgZg0KMDAwMDAwMDIyMyA2NTUzNSBmDQowMDAwMDAwMjI0IDY1 + NTM1IGYNCjAwMDAwMDAyMjUgNjU1MzUgZg0KMDAwMDAwMDIyNiA2NTUzNSBmDQowMDAwMDAwMjI3 + IDY1NTM1IGYNCjAwMDAwMDAyMjggNjU1MzUgZg0KMDAwMDAwMDIyOSA2NTUzNSBmDQowMDAwMDAw + MjMwIDY1NTM1IGYNCjAwMDAwMDAyMzEgNjU1MzUgZg0KMDAwMDAwMDIzMiA2NTUzNSBmDQowMDAw + MDAwMjMzIDY1NTM1IGYNCjAwMDAwMDAyMzQgNjU1MzUgZg0KMDAwMDAwMDIzNSA2NTUzNSBmDQow + MDAwMDAwMjM2IDY1NTM1IGYNCjAwMDAwMDAyMzcgNjU1MzUgZg0KMDAwMDAwMDIzOCA2NTUzNSBm + DQowMDAwMDAwMjM5IDY1NTM1IGYNCjAwMDAwMDAyNDAgNjU1MzUgZg0KMDAwMDAwMDI0MSA2NTUz + NSBmDQowMDAwMDAwMjQyIDY1NTM1IGYNCjAwMDAwMDAyNDMgNjU1MzUgZg0KMDAwMDAwMDI0NCA2 + NTUzNSBmDQowMDAwMDAwMjQ1IDY1NTM1IGYNCjAwMDAwMDAyNDYgNjU1MzUgZg0KMDAwMDAwMDI0 + NyA2NTUzNSBmDQowMDAwMDAwMjQ4IDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAx + MTk4NyAwMDAwMCBuDQowMDAwMDEyMjg5IDAwMDAwIG4NCjAwMDAwNjU1NjQgMDAwMDAgbg0KMDAw + MDA2NTgyMiAwMDAwMCBuDQowMDAwMDk5NTQ4IDAwMDAwIG4NCjAwMDAxMDI3MTYgMDAwMDAgbg0K + MDAwMDEwMjc2MiAwMDAwMCBuDQp0cmFpbGVyDQo8PC9TaXplIDI1Ni9Sb290IDEgMCBSL0luZm8g + MTUgMCBSL0lEWzwwNTA4QkI1ODlGRjYwRjQ0ODM5QjFERTAyNTY1MURFMj48MDUwOEJCNTg5RkY2 + MEY0NDgzOUIxREUwMjU2NTFERTI+XSA+Pg0Kc3RhcnR4cmVmDQoxMDM0NzINCiUlRU9GDQp4cmVm + DQowIDANCnRyYWlsZXINCjw8L1NpemUgMjU2L1Jvb3QgMSAwIFIvSW5mbyAxNSAwIFIvSURbPDA1 + MDhCQjU4OUZGNjBGNDQ4MzlCMURFMDI1NjUxREUyPjwwNTA4QkI1ODlGRjYwRjQ0ODM5QjFERTAy + NTY1MURFMj5dIC9QcmV2IDEwMzQ3Mi9YUmVmU3RtIDEwMjc2Mj4+DQpzdGFydHhyZWYNCjEwODc1 + Mg0KJSVFT0Y= + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '108935' + Content-Type: + - application/pdf + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/prebuilt/receipt/analyze?includeTextDetails=true + response: + body: + string: '' + headers: + apim-request-id: + - ded1f61d-9761-4ed8-8f98-264c3393df50 + content-length: + - '0' + date: + - Mon, 27 Apr 2020 16:01:14 GMT + operation-location: + - https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/prebuilt/receipt/analyzeResults/ded1f61d-9761-4ed8-8f98-264c3393df50 + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '815' + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/prebuilt/receipt/analyzeResults/ded1f61d-9761-4ed8-8f98-264c3393df50 + response: + body: + string: '{"status":"running","createdDateTime":"2020-04-27T16:01:14Z","lastUpdatedDateTime":"2020-04-27T16:01:15Z"}' + headers: + apim-request-id: + - 4fd5dd50-e841-44b4-bdb1-fd442124e3ef + content-type: + - application/json; charset=utf-8 + date: + - Mon, 27 Apr 2020 16:01:19 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + transfer-encoding: + - chunked + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '94' + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/prebuilt/receipt/analyzeResults/ded1f61d-9761-4ed8-8f98-264c3393df50 + response: + body: + string: '{"status":"running","createdDateTime":"2020-04-27T16:01:14Z","lastUpdatedDateTime":"2020-04-27T16:01:15Z"}' + headers: + apim-request-id: + - 7da8580a-d118-418d-80ad-de9f31aadaf0 + content-type: + - application/json; charset=utf-8 + date: + - Mon, 27 Apr 2020 16:01:24 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + transfer-encoding: + - chunked + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '235' + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/prebuilt/receipt/analyzeResults/ded1f61d-9761-4ed8-8f98-264c3393df50 + response: + body: + string: '{"status":"succeeded","createdDateTime":"2020-04-27T16:01:14Z","lastUpdatedDateTime":"2020-04-27T16:01:27Z","analyzeResult":{"version":"2.0.0","readResults":[{"page":1,"angle":0,"width":8.5,"height":11,"unit":"inch","language":"en","lines":[{"text":"Company + A Invoice","boundingBox":[0.8861,1.1217,2.3783,1.1217,2.3783,1.2812,0.8861,1.2812],"words":[{"text":"Company","boundingBox":[0.8861,1.1232,1.6203,1.1232,1.6203,1.2812,0.8861,1.2812],"confidence":1},{"text":"A","boundingBox":[1.6696,1.1242,1.7749,1.1242,1.7749,1.2473,1.6696,1.2473],"confidence":1},{"text":"Invoice","boundingBox":[1.8389,1.1217,2.3783,1.1217,2.3783,1.2485,1.8389,1.2485],"confidence":1}]},{"text":"Invoice + For:","boundingBox":[6.0211,1.0656,7.0357,1.0656,7.0357,1.2121,6.0211,1.2121],"words":[{"text":"Invoice","boundingBox":[6.0211,1.0656,6.6362,1.0656,6.6362,1.2121,6.0211,1.2121],"confidence":1},{"text":"For:","boundingBox":[6.7147,1.0691,7.0357,1.0691,7.0357,1.2121,6.7147,1.2121],"confidence":1}]},{"text":"Address:","boundingBox":[0.8791,1.4825,1.5657,1.4825,1.5657,1.6155,0.8791,1.6155],"words":[{"text":"Address:","boundingBox":[0.8791,1.4825,1.5657,1.4825,1.5657,1.6155,0.8791,1.6155],"confidence":1}]},{"text":"Bilbo + Baggins","boundingBox":[6.0164,1.4503,6.8967,1.4503,6.8967,1.5931,6.0164,1.5931],"words":[{"text":"Bilbo","boundingBox":[6.0164,1.4503,6.3392,1.4503,6.3392,1.5649,6.0164,1.5649],"confidence":1},{"text":"Baggins","boundingBox":[6.396,1.4556,6.8967,1.4556,6.8967,1.5931,6.396,1.5931],"confidence":1}]},{"text":"123 + Hobbit Lane","boundingBox":[6.0165,1.6707,7.1006,1.6707,7.1006,1.7854,6.0165,1.7854],"words":[{"text":"123","boundingBox":[6.0165,1.6772,6.2434,1.6772,6.2434,1.7854,6.0165,1.7854],"confidence":1},{"text":"Hobbit","boundingBox":[6.3033,1.6707,6.7463,1.6707,6.7463,1.7854,6.3033,1.7854],"confidence":1},{"text":"Lane","boundingBox":[6.803,1.6782,7.1006,1.6782,7.1006,1.7854,6.803,1.7854],"confidence":1}]},{"text":"567 + Main St.","boundingBox":[0.8852,1.846,1.713,1.846,1.713,1.9554,0.8852,1.9554],"words":[{"text":"567","boundingBox":[0.8852,1.8472,1.1203,1.8472,1.1203,1.9554,0.8852,1.9554],"confidence":1},{"text":"Main","boundingBox":[1.1777,1.846,1.5022,1.846,1.5022,1.9554,1.1777,1.9554],"confidence":1},{"text":"St.","boundingBox":[1.5558,1.8472,1.713,1.8472,1.713,1.9554,1.5558,1.9554],"confidence":1}]},{"text":"Redmond, + WA","boundingBox":[6.0164,1.891,6.9793,1.891,6.9793,2.0275,6.0164,2.0275],"words":[{"text":"Redmond,","boundingBox":[6.0164,1.891,6.6861,1.891,6.6861,2.0275,6.0164,2.0275],"confidence":1},{"text":"WA","boundingBox":[6.7408,1.8982,6.9793,1.8982,6.9793,2.0044,6.7408,2.0044],"confidence":1}]},{"text":"Redmond, + WA","boundingBox":[0.891,2.061,1.8537,2.061,1.8537,2.1975,0.891,2.1975],"words":[{"text":"Redmond,","boundingBox":[0.891,2.061,1.5605,2.061,1.5605,2.1975,0.891,2.1975],"confidence":1},{"text":"WA","boundingBox":[1.6152,2.0682,1.8537,2.0682,1.8537,2.1744,1.6152,2.1744],"confidence":1}]},{"text":"555-555-5555","boundingBox":[6.0105,2.1187,6.9371,2.1187,6.9371,2.2254,6.0105,2.2254],"words":[{"text":"555-555-5555","boundingBox":[6.0105,2.1187,6.9371,2.1187,6.9371,2.2254,6.0105,2.2254],"confidence":1}]},{"text":"555-555-5555","boundingBox":[0.8852,2.2887,1.8119,2.2887,1.8119,2.3954,0.8852,2.3954],"words":[{"text":"555-555-5555","boundingBox":[0.8852,2.2887,1.8119,2.2887,1.8119,2.3954,0.8852,2.3954],"confidence":1}]},{"text":"Item","boundingBox":[1.0943,3.0018,1.3842,3.0018,1.3842,3.109,1.0943,3.109],"words":[{"text":"Item","boundingBox":[1.0943,3.0018,1.3842,3.0018,1.3842,3.109,1.0943,3.109],"confidence":1}]},{"text":"Quantity","boundingBox":[3.2527,2.9996,3.8367,2.9996,3.8367,3.1371,3.2527,3.1371],"words":[{"text":"Quantity","boundingBox":[3.2527,2.9996,3.8367,2.9996,3.8367,3.1371,3.2527,3.1371],"confidence":1}]},{"text":"Price","boundingBox":[5.423,2.9996,5.7372,2.9996,5.7372,3.109,5.423,3.109],"words":[{"text":"Price","boundingBox":[5.423,2.9996,5.7372,2.9996,5.7372,3.109,5.423,3.109],"confidence":1}]},{"text":"A","boundingBox":[1.0832,3.2118,1.174,3.2118,1.174,3.318,1.0832,3.318],"words":[{"text":"A","boundingBox":[1.0832,3.2118,1.174,3.2118,1.174,3.318,1.0832,3.318],"confidence":1}]},{"text":"1","boundingBox":[3.2589,3.2116,3.3202,3.2116,3.3202,3.3176,3.2589,3.3176],"words":[{"text":"1","boundingBox":[3.2589,3.2116,3.3202,3.2116,3.3202,3.3176,3.2589,3.3176],"confidence":1}]},{"text":"10.99","boundingBox":[5.4232,3.2108,5.7784,3.2108,5.7784,3.319,5.4232,3.319],"words":[{"text":"10.99","boundingBox":[5.4232,3.2108,5.7784,3.2108,5.7784,3.319,5.4232,3.319],"confidence":1}]},{"text":"B","boundingBox":[1.0943,3.4256,1.1637,3.4256,1.1637,3.531,1.0943,3.531],"words":[{"text":"B","boundingBox":[1.0943,3.4256,1.1637,3.4256,1.1637,3.531,1.0943,3.531],"confidence":1}]},{"text":"2","boundingBox":[3.2541,3.4241,3.3199,3.4241,3.3199,3.531,3.2541,3.531],"words":[{"text":"2","boundingBox":[3.2541,3.4241,3.3199,3.4241,3.3199,3.531,3.2541,3.531],"confidence":1}]},{"text":"14.67","boundingBox":[5.4232,3.4241,5.7789,3.4241,5.7789,3.5323,5.4232,3.5323],"words":[{"text":"14.67","boundingBox":[5.4232,3.4241,5.7789,3.4241,5.7789,3.5323,5.4232,3.5323],"confidence":1}]},{"text":"C","boundingBox":[1.0882,3.6343,1.1647,3.6343,1.1647,3.7421,1.0882,3.7421],"words":[{"text":"C","boundingBox":[1.0882,3.6343,1.1647,3.6343,1.1647,3.7421,1.0882,3.7421],"confidence":1}]},{"text":"4","boundingBox":[3.2486,3.6351,3.3244,3.6351,3.3244,3.7413,3.2486,3.7413],"words":[{"text":"4","boundingBox":[3.2486,3.6351,3.3244,3.6351,3.3244,3.7413,3.2486,3.7413],"confidence":1}]},{"text":"15.66","boundingBox":[5.4232,3.6341,5.78,3.6341,5.78,3.7423,5.4232,3.7423],"words":[{"text":"15.66","boundingBox":[5.4232,3.6341,5.78,3.6341,5.78,3.7423,5.4232,3.7423],"confidence":1}]},{"text":"D","boundingBox":[1.0943,3.8456,1.1753,3.8456,1.1753,3.951,1.0943,3.951],"words":[{"text":"D","boundingBox":[1.0943,3.8456,1.1753,3.8456,1.1753,3.951,1.0943,3.951],"confidence":1}]},{"text":"1","boundingBox":[3.2589,3.845,3.3202,3.845,3.3202,3.951,3.2589,3.951],"words":[{"text":"1","boundingBox":[3.2589,3.845,3.3202,3.845,3.3202,3.951,3.2589,3.951],"confidence":1}]},{"text":"12.00","boundingBox":[5.4232,3.8441,5.7809,3.8441,5.7809,3.9523,5.4232,3.9523],"words":[{"text":"12.00","boundingBox":[5.4232,3.8441,5.7809,3.8441,5.7809,3.9523,5.4232,3.9523],"confidence":1}]},{"text":"E","boundingBox":[1.0943,4.0561,1.153,4.0561,1.153,4.1614,1.0943,4.1614],"words":[{"text":"E","boundingBox":[1.0943,4.0561,1.153,4.0561,1.153,4.1614,1.0943,4.1614],"confidence":1}]},{"text":"4","boundingBox":[3.2486,4.0556,3.3244,4.0556,3.3244,4.1617,3.2486,4.1617],"words":[{"text":"4","boundingBox":[3.2486,4.0556,3.3244,4.0556,3.3244,4.1617,3.2486,4.1617],"confidence":1}]},{"text":"10.00","boundingBox":[5.4232,4.0546,5.781,4.0546,5.781,4.1627,5.4232,4.1627],"words":[{"text":"10.00","boundingBox":[5.4232,4.0546,5.781,4.0546,5.781,4.1627,5.4232,4.1627],"confidence":1}]},{"text":"F","boundingBox":[1.0943,4.2661,1.1497,4.2661,1.1497,4.3717,1.0943,4.3717],"words":[{"text":"F","boundingBox":[1.0943,4.2661,1.1497,4.2661,1.1497,4.3717,1.0943,4.3717],"confidence":1}]},{"text":"6","boundingBox":[3.2534,4.2646,3.3226,4.2646,3.3226,4.3727,3.2534,4.3727],"words":[{"text":"6","boundingBox":[3.2534,4.2646,3.3226,4.2646,3.3226,4.3727,3.2534,4.3727],"confidence":1}]},{"text":"12.00","boundingBox":[5.4232,4.2646,5.7809,4.2646,5.7809,4.3727,5.4232,4.3727],"words":[{"text":"12.00","boundingBox":[5.4232,4.2646,5.7809,4.2646,5.7809,4.3727,5.4232,4.3727],"confidence":1}]},{"text":"G","boundingBox":[1.0877,4.4746,1.1735,4.4746,1.1735,4.5827,1.0877,4.5827],"words":[{"text":"G","boundingBox":[1.0877,4.4746,1.1735,4.4746,1.1735,4.5827,1.0877,4.5827],"confidence":1}]},{"text":"8","boundingBox":[3.2514,4.4746,3.3224,4.4746,3.3224,4.5827,3.2514,4.5827],"words":[{"text":"8","boundingBox":[3.2514,4.4746,3.3224,4.4746,3.3224,4.5827,3.2514,4.5827],"confidence":1}]},{"text":"22.00","boundingBox":[5.4184,4.4746,5.781,4.4746,5.781,4.5827,5.4184,4.5827],"words":[{"text":"22.00","boundingBox":[5.4184,4.4746,5.781,4.4746,5.781,4.5827,5.4184,4.5827],"confidence":1}]},{"text":"Subtotal: + 300.00","boundingBox":[5.5075,4.8981,6.632,4.8981,6.632,5.0131,5.5075,5.0131],"words":[{"text":"Subtotal:","boundingBox":[5.5075,4.8981,6.1249,4.8981,6.1249,5.0131,5.5075,5.0131],"confidence":1},{"text":"300.00","boundingBox":[6.1794,4.9042,6.632,4.9042,6.632,5.0131,6.1794,5.0131],"confidence":1}]},{"text":"Tax: + 30.00","boundingBox":[5.5034,5.1245,6.2022,5.1245,6.2022,5.2333,5.5034,5.2333],"words":[{"text":"Tax:","boundingBox":[5.5034,5.1263,5.7812,5.1263,5.7812,5.2333,5.5034,5.2333],"confidence":1},{"text":"30.00","boundingBox":[5.836,5.1245,6.2022,5.1245,6.2022,5.2333,5.836,5.2333],"confidence":1}]},{"text":"Tip: + 100.00","boundingBox":[5.5034,5.3412,6.2587,5.3412,6.2587,5.481,5.5034,5.481],"words":[{"text":"Tip:","boundingBox":[5.5034,5.3412,5.7515,5.3412,5.7515,5.481,5.5034,5.481],"confidence":1},{"text":"100.00","boundingBox":[5.811,5.3445,6.2587,5.3445,6.2587,5.4533,5.811,5.4533],"confidence":1}]},{"text":"Total: + 430.00","boundingBox":[5.5034,5.5583,6.3987,5.5583,6.3987,5.6733,5.5034,5.6733],"words":[{"text":"Total:","boundingBox":[5.5034,5.5583,5.8915,5.5583,5.8915,5.6733,5.5034,5.6733],"confidence":1},{"text":"430.00","boundingBox":[5.942,5.5645,6.3987,5.5645,6.3987,5.6733,5.942,5.6733],"confidence":1}]},{"text":"Signature: + ____ Bilbo Baggins__________","boundingBox":[1.0055,6.6553,3.8342,6.6553,3.8342,6.7981,1.0055,6.7981],"words":[{"text":"Signature:","boundingBox":[1.0055,6.6581,1.6987,6.6581,1.6987,6.7981,1.0055,6.7981],"confidence":1},{"text":"____","boundingBox":[1.747,6.7829,2.0809,6.7829,2.0809,6.7981,1.747,6.7981],"confidence":1},{"text":"Bilbo","boundingBox":[2.0925,6.6553,2.4278,6.6553,2.4278,6.7703,2.0925,6.7703],"confidence":1},{"text":"Baggins__________","boundingBox":[2.4823,6.6581,3.8342,6.6581,3.8342,6.7981,2.4823,6.7981],"confidence":1}]}]},{"page":2,"angle":0,"width":8.4967,"height":10.9967,"unit":"inch","language":"en"},{"page":3,"angle":0,"width":8.5,"height":11,"unit":"inch","language":"en","lines":[{"text":"Company + B Invoice","boundingBox":[0.8861,1.1217,2.3734,1.1217,2.3734,1.2812,0.8861,1.2812],"words":[{"text":"Company","boundingBox":[0.8861,1.1232,1.6203,1.1232,1.6203,1.2812,0.8861,1.2812],"confidence":1},{"text":"B","boundingBox":[1.6836,1.1248,1.764,1.1248,1.764,1.2469,1.6836,1.2469],"confidence":1},{"text":"Invoice","boundingBox":[1.8336,1.1217,2.3734,1.1217,2.3734,1.2485,1.8336,1.2485],"confidence":1}]},{"text":"Invoice + For:","boundingBox":[6.0211,1.0656,7.0357,1.0656,7.0357,1.2121,6.0211,1.2121],"words":[{"text":"Invoice","boundingBox":[6.0211,1.0656,6.6362,1.0656,6.6362,1.2121,6.0211,1.2121],"confidence":1},{"text":"For:","boundingBox":[6.7147,1.0691,7.0357,1.0691,7.0357,1.2121,6.7147,1.2121],"confidence":1}]},{"text":"Address:","boundingBox":[0.8791,1.4825,1.5657,1.4825,1.5657,1.6155,0.8791,1.6155],"words":[{"text":"Address:","boundingBox":[0.8791,1.4825,1.5657,1.4825,1.5657,1.6155,0.8791,1.6155],"confidence":1}]},{"text":"Frodo + Baggins","boundingBox":[6.0164,1.4506,6.9506,1.4506,6.9506,1.5931,6.0164,1.5931],"words":[{"text":"Frodo","boundingBox":[6.0164,1.4506,6.3895,1.4506,6.3895,1.5649,6.0164,1.5649],"confidence":1},{"text":"Baggins","boundingBox":[6.45,1.4556,6.9506,1.4556,6.9506,1.5931,6.45,1.5931],"confidence":1}]},{"text":"123 + Hobbit Lane","boundingBox":[6.0165,1.6707,7.1006,1.6707,7.1006,1.7854,6.0165,1.7854],"words":[{"text":"123","boundingBox":[6.0165,1.6772,6.2434,1.6772,6.2434,1.7854,6.0165,1.7854],"confidence":1},{"text":"Hobbit","boundingBox":[6.3033,1.6707,6.7463,1.6707,6.7463,1.7854,6.3033,1.7854],"confidence":1},{"text":"Lane","boundingBox":[6.803,1.6782,7.1006,1.6782,7.1006,1.7854,6.803,1.7854],"confidence":1}]},{"text":"567 + Main St.","boundingBox":[0.8852,1.846,1.713,1.846,1.713,1.9554,0.8852,1.9554],"words":[{"text":"567","boundingBox":[0.8852,1.8472,1.1203,1.8472,1.1203,1.9554,0.8852,1.9554],"confidence":1},{"text":"Main","boundingBox":[1.1777,1.846,1.5022,1.846,1.5022,1.9554,1.1777,1.9554],"confidence":1},{"text":"St.","boundingBox":[1.5558,1.8472,1.713,1.8472,1.713,1.9554,1.5558,1.9554],"confidence":1}]},{"text":"Redmond, + WA","boundingBox":[6.0164,1.891,6.9793,1.891,6.9793,2.0275,6.0164,2.0275],"words":[{"text":"Redmond,","boundingBox":[6.0164,1.891,6.6861,1.891,6.6861,2.0275,6.0164,2.0275],"confidence":1},{"text":"WA","boundingBox":[6.7408,1.8982,6.9793,1.8982,6.9793,2.0044,6.7408,2.0044],"confidence":1}]},{"text":"Redmond, + WA","boundingBox":[0.891,2.061,1.8537,2.061,1.8537,2.1975,0.891,2.1975],"words":[{"text":"Redmond,","boundingBox":[0.891,2.061,1.5605,2.061,1.5605,2.1975,0.891,2.1975],"confidence":1},{"text":"WA","boundingBox":[1.6152,2.0682,1.8537,2.0682,1.8537,2.1744,1.6152,2.1744],"confidence":1}]},{"text":"555-555-5555","boundingBox":[6.0105,2.1187,6.9371,2.1187,6.9371,2.2254,6.0105,2.2254],"words":[{"text":"555-555-5555","boundingBox":[6.0105,2.1187,6.9371,2.1187,6.9371,2.2254,6.0105,2.2254],"confidence":1}]},{"text":"555-555-5555","boundingBox":[0.8852,2.2887,1.8119,2.2887,1.8119,2.3954,0.8852,2.3954],"words":[{"text":"555-555-5555","boundingBox":[0.8852,2.2887,1.8119,2.2887,1.8119,2.3954,0.8852,2.3954],"confidence":1}]},{"text":"Item","boundingBox":[1.0943,3.0018,1.3842,3.0018,1.3842,3.109,1.0943,3.109],"words":[{"text":"Item","boundingBox":[1.0943,3.0018,1.3842,3.0018,1.3842,3.109,1.0943,3.109],"confidence":1}]},{"text":"Quantity","boundingBox":[3.2527,2.9996,3.8367,2.9996,3.8367,3.1371,3.2527,3.1371],"words":[{"text":"Quantity","boundingBox":[3.2527,2.9996,3.8367,2.9996,3.8367,3.1371,3.2527,3.1371],"confidence":1}]},{"text":"Price","boundingBox":[5.423,2.9996,5.7372,2.9996,5.7372,3.109,5.423,3.109],"words":[{"text":"Price","boundingBox":[5.423,2.9996,5.7372,2.9996,5.7372,3.109,5.423,3.109],"confidence":1}]},{"text":"A","boundingBox":[1.0832,3.2118,1.174,3.2118,1.174,3.318,1.0832,3.318],"words":[{"text":"A","boundingBox":[1.0832,3.2118,1.174,3.2118,1.174,3.318,1.0832,3.318],"confidence":1}]},{"text":"10","boundingBox":[3.2589,3.2108,3.4067,3.2108,3.4067,3.319,3.2589,3.319],"words":[{"text":"10","boundingBox":[3.2589,3.2108,3.4067,3.2108,3.4067,3.319,3.2589,3.319],"confidence":1}]},{"text":"100.99","boundingBox":[5.4232,3.2108,5.8617,3.2108,5.8617,3.319,5.4232,3.319],"words":[{"text":"100.99","boundingBox":[5.4232,3.2108,5.8617,3.2108,5.8617,3.319,5.4232,3.319],"confidence":1}]},{"text":"B","boundingBox":[1.0943,3.4256,1.1637,3.4256,1.1637,3.531,1.0943,3.531],"words":[{"text":"B","boundingBox":[1.0943,3.4256,1.1637,3.4256,1.1637,3.531,1.0943,3.531],"confidence":1}]},{"text":"20","boundingBox":[3.2541,3.4241,3.4067,3.4241,3.4067,3.5323,3.2541,3.5323],"words":[{"text":"20","boundingBox":[3.2541,3.4241,3.4067,3.4241,3.4067,3.5323,3.2541,3.5323],"confidence":1}]},{"text":"140.67","boundingBox":[5.4232,3.4241,5.8622,3.4241,5.8622,3.5323,5.4232,3.5323],"words":[{"text":"140.67","boundingBox":[5.4232,3.4241,5.8622,3.4241,5.8622,3.5323,5.4232,3.5323],"confidence":1}]},{"text":"C","boundingBox":[1.0882,3.6343,1.1647,3.6343,1.1647,3.7421,1.0882,3.7421],"words":[{"text":"C","boundingBox":[1.0882,3.6343,1.1647,3.6343,1.1647,3.7421,1.0882,3.7421],"confidence":1}]},{"text":"40","boundingBox":[3.2486,3.6341,3.4067,3.6341,3.4067,3.7423,3.2486,3.7423],"words":[{"text":"40","boundingBox":[3.2486,3.6341,3.4067,3.6341,3.4067,3.7423,3.2486,3.7423],"confidence":1}]},{"text":"150.66","boundingBox":[5.4232,3.6341,5.8634,3.6341,5.8634,3.7423,5.4232,3.7423],"words":[{"text":"150.66","boundingBox":[5.4232,3.6341,5.8634,3.6341,5.8634,3.7423,5.4232,3.7423],"confidence":1}]},{"text":"D","boundingBox":[1.0943,3.8456,1.1753,3.8456,1.1753,3.951,1.0943,3.951],"words":[{"text":"D","boundingBox":[1.0943,3.8456,1.1753,3.8456,1.1753,3.951,1.0943,3.951],"confidence":1}]},{"text":"10","boundingBox":[3.2589,3.8441,3.4067,3.8441,3.4067,3.9523,3.2589,3.9523],"words":[{"text":"10","boundingBox":[3.2589,3.8441,3.4067,3.8441,3.4067,3.9523,3.2589,3.9523],"confidence":1}]},{"text":"120.00","boundingBox":[5.4232,3.8441,5.8642,3.8441,5.8642,3.9523,5.4232,3.9523],"words":[{"text":"120.00","boundingBox":[5.4232,3.8441,5.8642,3.8441,5.8642,3.9523,5.4232,3.9523],"confidence":1}]},{"text":"E","boundingBox":[1.0943,4.0561,1.153,4.0561,1.153,4.1614,1.0943,4.1614],"words":[{"text":"E","boundingBox":[1.0943,4.0561,1.153,4.0561,1.153,4.1614,1.0943,4.1614],"confidence":1}]},{"text":"40","boundingBox":[3.2486,4.0546,3.4067,4.0546,3.4067,4.1627,3.2486,4.1627],"words":[{"text":"40","boundingBox":[3.2486,4.0546,3.4067,4.0546,3.4067,4.1627,3.2486,4.1627],"confidence":1}]},{"text":"100.00","boundingBox":[5.4232,4.0546,5.8644,4.0546,5.8644,4.1627,5.4232,4.1627],"words":[{"text":"100.00","boundingBox":[5.4232,4.0546,5.8644,4.0546,5.8644,4.1627,5.4232,4.1627],"confidence":1}]},{"text":"F","boundingBox":[1.0943,4.2661,1.1497,4.2661,1.1497,4.3717,1.0943,4.3717],"words":[{"text":"F","boundingBox":[1.0943,4.2661,1.1497,4.2661,1.1497,4.3717,1.0943,4.3717],"confidence":1}]},{"text":"60","boundingBox":[3.2534,4.2646,3.4067,4.2646,3.4067,4.3727,3.2534,4.3727],"words":[{"text":"60","boundingBox":[3.2534,4.2646,3.4067,4.2646,3.4067,4.3727,3.2534,4.3727],"confidence":1}]},{"text":"120.00","boundingBox":[5.4232,4.2646,5.8642,4.2646,5.8642,4.3727,5.4232,4.3727],"words":[{"text":"120.00","boundingBox":[5.4232,4.2646,5.8642,4.2646,5.8642,4.3727,5.4232,4.3727],"confidence":1}]},{"text":"G","boundingBox":[1.0877,4.4746,1.1735,4.4746,1.1735,4.5827,1.0877,4.5827],"words":[{"text":"G","boundingBox":[1.0877,4.4746,1.1735,4.4746,1.1735,4.5827,1.0877,4.5827],"confidence":1}]},{"text":"80","boundingBox":[3.2514,4.4746,3.4067,4.4746,3.4067,4.5827,3.2514,4.5827],"words":[{"text":"80","boundingBox":[3.2514,4.4746,3.4067,4.4746,3.4067,4.5827,3.2514,4.5827],"confidence":1}]},{"text":"220.00","boundingBox":[5.4184,4.4746,5.8644,4.4746,5.8644,4.5827,5.4184,4.5827],"words":[{"text":"220.00","boundingBox":[5.4184,4.4746,5.8644,4.4746,5.8644,4.5827,5.4184,4.5827],"confidence":1}]},{"text":"Subtotal: + 3000.00","boundingBox":[5.5075,4.8981,6.7158,4.8981,6.7158,5.0131,5.5075,5.0131],"words":[{"text":"Subtotal:","boundingBox":[5.5075,4.8981,6.1249,4.8981,6.1249,5.0131,5.5075,5.0131],"confidence":1},{"text":"3000.00","boundingBox":[6.1794,4.9042,6.7158,4.9042,6.7158,5.0131,6.1794,5.0131],"confidence":1}]},{"text":"Tax: + 300.00","boundingBox":[5.5034,5.1245,6.2887,5.1245,6.2887,5.2333,5.5034,5.2333],"words":[{"text":"Tax:","boundingBox":[5.5034,5.1263,5.7812,5.1263,5.7812,5.2333,5.5034,5.2333],"confidence":1},{"text":"300.00","boundingBox":[5.836,5.1245,6.2887,5.1245,6.2887,5.2333,5.836,5.2333],"confidence":1}]},{"text":"Tip: + 1000.00","boundingBox":[5.5034,5.3412,6.3422,5.3412,6.3422,5.481,5.5034,5.481],"words":[{"text":"Tip:","boundingBox":[5.5034,5.3412,5.7515,5.3412,5.7515,5.481,5.5034,5.481],"confidence":1},{"text":"1000.00","boundingBox":[5.811,5.3445,6.3422,5.3445,6.3422,5.4533,5.811,5.4533],"confidence":1}]},{"text":"Total: + 4300.00","boundingBox":[5.5034,5.5583,6.4825,5.5583,6.4825,5.6733,5.5034,5.6733],"words":[{"text":"Total:","boundingBox":[5.5034,5.5583,5.8915,5.5583,5.8915,5.6733,5.5034,5.6733],"confidence":1},{"text":"4300.00","boundingBox":[5.942,5.5645,6.4825,5.5645,6.4825,5.6733,5.942,5.6733],"confidence":1}]},{"text":"Signature: + ____ Frodo Baggins__________","boundingBox":[1.0055,6.6556,3.8842,6.6556,3.8842,6.7981,1.0055,6.7981],"words":[{"text":"Signature:","boundingBox":[1.0055,6.6581,1.6987,6.6581,1.6987,6.7981,1.0055,6.7981],"confidence":1},{"text":"____","boundingBox":[1.747,6.7829,2.0809,6.7829,2.0809,6.7981,1.747,6.7981],"confidence":1},{"text":"Frodo","boundingBox":[2.0925,6.6556,2.4778,6.6556,2.4778,6.7703,2.0925,6.7703],"confidence":1},{"text":"Baggins__________","boundingBox":[2.5325,6.6581,3.8842,6.6581,3.8842,6.7981,2.5325,6.7981],"confidence":1}]}]}],"documentResults":[{"docType":"prebuilt:receipt","pageRange":[1,1],"fields":{"ReceiptType":{"type":"string","valueString":"Itemized","confidence":0.99},"MerchantName":{"type":"string","valueString":"Bilbo + Baggins","text":"Bilbo Baggins","boundingBox":[6.0164,1.4503,6.8967,1.4503,6.8967,1.5931,6.0164,1.5931],"page":1,"confidence":0.987,"elements":["#/readResults/0/lines/3/words/0","#/readResults/0/lines/3/words/1"]},"MerchantAddress":{"type":"string","valueString":"123 + Hobbit Lane 567 Main St. Redmond, WA Redmond, WA","text":"123 Hobbit Lane + 567 Main St. Redmond, WA Redmond, WA","boundingBox":[0.8852,1.6707,7.1006,1.6707,7.1006,2.1975,0.8852,2.1975],"page":1,"confidence":0.99,"elements":["#/readResults/0/lines/4/words/0","#/readResults/0/lines/4/words/1","#/readResults/0/lines/4/words/2","#/readResults/0/lines/5/words/0","#/readResults/0/lines/5/words/1","#/readResults/0/lines/5/words/2","#/readResults/0/lines/6/words/0","#/readResults/0/lines/6/words/1","#/readResults/0/lines/7/words/0","#/readResults/0/lines/7/words/1"]},"MerchantPhoneNumber":{"type":"phoneNumber","valuePhoneNumber":"+15555555555","text":"555-555-5555","boundingBox":[6.0105,2.1187,6.9371,2.1187,6.9371,2.2254,6.0105,2.2254],"page":1,"confidence":0.99,"elements":["#/readResults/0/lines/8/words/0"]},"Items":{"type":"array","valueArray":[{"type":"object","valueObject":{"Name":{"type":"string","valueString":"F","text":"F","boundingBox":[1.0943,4.2661,1.1497,4.2661,1.1497,4.3717,1.0943,4.3717],"page":1,"confidence":0.964,"elements":["#/readResults/0/lines/28/words/0"]},"TotalPrice":{"type":"number","valueNumber":12,"text":"12.00","boundingBox":[5.4232,4.2646,5.7809,4.2646,5.7809,4.3727,5.4232,4.3727],"page":1,"confidence":0.947,"elements":["#/readResults/0/lines/30/words/0"]}}},{"type":"object","valueObject":{"TotalPrice":{"type":"number","valueNumber":22,"text":"22.00","boundingBox":[5.4184,4.4746,5.781,4.4746,5.781,4.5827,5.4184,4.5827],"page":1,"confidence":0.935,"elements":["#/readResults/0/lines/33/words/0"]}}}]},"Subtotal":{"type":"number","valueNumber":300,"text":"300.00","boundingBox":[6.1794,4.9042,6.632,4.9042,6.632,5.0131,6.1794,5.0131],"page":1,"confidence":0.99,"elements":["#/readResults/0/lines/34/words/1"]},"Total":{"type":"number","valueNumber":430,"text":"430.00","boundingBox":[5.942,5.5645,6.3987,5.5645,6.3987,5.6733,5.942,5.6733],"page":1,"confidence":0.985,"elements":["#/readResults/0/lines/37/words/1"]}}},{"docType":"prebuilt:receipt","pageRange":[2,2]},{"docType":"prebuilt:receipt","pageRange":[3,3],"fields":{"ReceiptType":{"type":"string","valueString":"Itemized","confidence":0.99},"MerchantName":{"type":"string","valueString":"Frodo + Baggins","text":"Frodo Baggins","boundingBox":[6.0164,1.4506,6.9506,1.4506,6.9506,1.5931,6.0164,1.5931],"page":3,"confidence":0.984,"elements":["#/readResults/2/lines/3/words/0","#/readResults/2/lines/3/words/1"]},"MerchantAddress":{"type":"string","valueString":"123 + Hobbit Lane 567 Main St. Redmond, WA Redmond, WA","text":"123 Hobbit Lane + 567 Main St. Redmond, WA Redmond, WA","boundingBox":[0.8852,1.6707,7.1006,1.6707,7.1006,2.1975,0.8852,2.1975],"page":3,"confidence":0.99,"elements":["#/readResults/2/lines/4/words/0","#/readResults/2/lines/4/words/1","#/readResults/2/lines/4/words/2","#/readResults/2/lines/5/words/0","#/readResults/2/lines/5/words/1","#/readResults/2/lines/5/words/2","#/readResults/2/lines/6/words/0","#/readResults/2/lines/6/words/1","#/readResults/2/lines/7/words/0","#/readResults/2/lines/7/words/1"]},"MerchantPhoneNumber":{"type":"phoneNumber","valuePhoneNumber":"+15555555555","text":"555-555-5555","boundingBox":[6.0105,2.1187,6.9371,2.1187,6.9371,2.2254,6.0105,2.2254],"page":3,"confidence":0.99,"elements":["#/readResults/2/lines/8/words/0"]},"Items":{"type":"array","valueArray":[{"type":"object","valueObject":{"Name":{"type":"string","valueString":"E","text":"E","boundingBox":[1.0943,4.0561,1.153,4.0561,1.153,4.1614,1.0943,4.1614],"page":3,"confidence":0.935,"elements":["#/readResults/2/lines/25/words/0"]},"Quantity":{"type":"number","text":"40","boundingBox":[3.2486,4.0546,3.4067,4.0546,3.4067,4.1627,3.2486,4.1627],"page":3,"confidence":0,"elements":["#/readResults/2/lines/26/words/0"]},"TotalPrice":{"type":"number","valueNumber":100,"text":"100.00","boundingBox":[5.4232,4.0546,5.8644,4.0546,5.8644,4.1627,5.4232,4.1627],"page":3,"confidence":0.723,"elements":["#/readResults/2/lines/27/words/0"]}}},{"type":"object","valueObject":{"Name":{"type":"string","valueString":"F","text":"F","boundingBox":[1.0943,4.2661,1.1497,4.2661,1.1497,4.3717,1.0943,4.3717],"page":3,"confidence":0.905,"elements":["#/readResults/2/lines/28/words/0"]},"TotalPrice":{"type":"number","valueNumber":120,"text":"120.00","boundingBox":[5.4232,4.2646,5.8642,4.2646,5.8642,4.3727,5.4232,4.3727],"page":3,"confidence":0.967,"elements":["#/readResults/2/lines/30/words/0"]}}},{"type":"object","valueObject":{"Name":{"type":"string","valueString":"G","text":"G","boundingBox":[1.0877,4.4746,1.1735,4.4746,1.1735,4.5827,1.0877,4.5827],"page":3,"confidence":0.896,"elements":["#/readResults/2/lines/31/words/0"]},"TotalPrice":{"type":"number","valueNumber":220,"text":"220.00","boundingBox":[5.4184,4.4746,5.8644,4.4746,5.8644,4.5827,5.4184,4.5827],"page":3,"confidence":0.958,"elements":["#/readResults/2/lines/33/words/0"]}}}]},"Subtotal":{"type":"number","valueNumber":3000,"text":"3000.00","boundingBox":[6.1794,4.9042,6.7158,4.9042,6.7158,5.0131,6.1794,5.0131],"page":3,"confidence":0.99,"elements":["#/readResults/2/lines/34/words/1"]},"Total":{"type":"number","valueNumber":1000,"text":"1000.00","boundingBox":[5.811,5.3445,6.3422,5.3445,6.3422,5.4533,5.811,5.4533],"page":3,"confidence":0.985,"elements":["#/readResults/2/lines/36/words/1"]}}}]}}' + headers: + apim-request-id: + - c0b1f9e1-f60f-4925-9d09-13e97d988ab8 + content-type: + - application/json; charset=utf-8 + date: + - Mon, 27 Apr 2020 16:01:30 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + transfer-encoding: + - chunked + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '206' + status: + code: 200 + message: OK +version: 1 diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_receipt.test_receipt_multipage_transform.yaml b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_receipt.test_receipt_multipage_transform.yaml new file mode 100644 index 000000000000..feca8c09a580 --- /dev/null +++ b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_receipt.test_receipt_multipage_transform.yaml @@ -0,0 +1,2088 @@ +interactions: +- request: + body: !!binary | + JVBERi0xLjcNCiW1tbW1DQoxIDAgb2JqDQo8PC9UeXBlL0NhdGFsb2cvUGFnZXMgMiAwIFIvTGFu + Zyhlbi1VUykgL1N0cnVjdFRyZWVSb290IDE2IDAgUi9NYXJrSW5mbzw8L01hcmtlZCB0cnVlPj4v + TWV0YWRhdGEgMjUzIDAgUi9WaWV3ZXJQcmVmZXJlbmNlcyAyNTQgMCBSPj4NCmVuZG9iag0KMiAw + IG9iag0KPDwvVHlwZS9QYWdlcy9Db3VudCAzL0tpZHNbIDMgMCBSIDExIDAgUiAxMyAwIFJdID4+ + DQplbmRvYmoNCjMgMCBvYmoNCjw8L1R5cGUvUGFnZS9QYXJlbnQgMiAwIFIvUmVzb3VyY2VzPDwv + Rm9udDw8L0YxIDUgMCBSL0YyIDkgMCBSPj4vRXh0R1N0YXRlPDwvR1M3IDcgMCBSL0dTOCA4IDAg + Uj4+L1Byb2NTZXRbL1BERi9UZXh0L0ltYWdlQi9JbWFnZUMvSW1hZ2VJXSA+Pi9NZWRpYUJveFsg + MCAwIDYxMiA3OTJdIC9Db250ZW50cyA0IDAgUi9Hcm91cDw8L1R5cGUvR3JvdXAvUy9UcmFuc3Bh + cmVuY3kvQ1MvRGV2aWNlUkdCPj4vVGFicy9TL1N0cnVjdFBhcmVudHMgMD4+DQplbmRvYmoNCjQg + MCBvYmoNCjw8L0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggMjg2ND4+DQpzdHJlYW0NCnicvZxZ + bxw3EsffBeg79ONMsGrzPhZBAMvXerEGkrWAPBiLwJYPGIilXVubbL79VrHvYRfZ3cOOAI2OLvJf + LFb/SPbB6tGP1fffP3r15OXTiv3wQ3X99En1n8sLVjP88lxUrDLwab2ovn64vPj5u+ru8uL65vLi + 0XNecVMzV918vLzgYMcqXikpam4ry1TtTHXzBexevLbVp29QZ/Up/OXav15cXrw5vLz77agP9/D9 + +WgOt/DzA3xXx39VN3+/vHgGOj9dXpzlkAOH+Nih4Ecr//x4JYP6V1D/azlVzVzNDKV60rzq2asn + VTXqCL6+I8RcLxjrayUi+eujgmhf+cOv+PEuxN+CUyYcefsJ/wsfrjG6g+PfNkfmxC9vau8pv3Jh + EaXCYmSt9Yl8dQV1OlXd3L45cCFLNVizmvt5xajBZ6iI2klK5W/HK25CF2NXvyulCX0oSM2QOQ/H + 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 + fvW3lN9NoKP8fgIt5fcTaCkfCZSmfCSw09UI6BG/5zmhhK3NXNLi2yxyv6sRhuO2Ndl2xSReu18C + SWJj63VjgCulDJhYt8bwpZRleJt/hbRauxkZKS1YnXrQP1Zeu/sWqczwsaPoQiXOyj7h6XqHU7Nw + 4j5Agofrl1/DFhRHCafxlSw3vgmNdx9P/alYcBMnVb/AV7HR2uNeVHHjrz9DKxFR4SLtfXVUh+u3 + 2N4QjPCBobkrNuZyvAMV+7FxL7PZQV3OCfxy5A4iij0481lKHXfbcTPqJ0nTd4eAs8CYcIeT1VbQ + t+LU2ltxVP7jrMGt4o1aeyuOlIaffhVkVamLzULb9D3+WLrUlRyhOO7ztEa61PJCAGLMOulS46lg + IcPXSJcaULmXuJ3hGulSIyq3DleUK6R1qRGVG5hGrGq1LjWkcmXwYaE10qVoxiXD+eoa6VI041zj + BgZrpEvRzPuam1Ug1aVohk8vi3XSHc04bmeEj9VUhsnwOhCMljA1gRHb9AMfw80Nf0dZqDxp/Xp4 + TA7MvFJgaGoPJlbVsrkCYqnn5PSIc8tK9/fXAS7TyBgJQ4uqLAzmohtYP/Xhid+vPlfPwtTZkXr3 + OJv90lxjdDiRlTildYc/cAPfx2Hvz5f4Gf75G0z37rvp7y0+uBxvgnWuuxwyB5hIuJvNHretowTd + UQYnabEnj3HPzvf9XP8bLHLV4Vu8cj/XCw7/gnk/4UU2Hn5z4s4HQ3MsdeqGPnb7VjRbEL8K9ww/ + Q0xY2N8U//f6AVcH8UOgZ7nFhcKt+Qi3sps3ssLRkbpW8S6K/XayZvFmr+cFRcraSsqbbFB44aDg + vdjTnS1ze6SeJew4LTy3Vep5YgoWKaRY4ZZ5DoOxWxLSwhkFY6rQf1JEOZRypFhuD9ozzxzgiKSk + iee8/w9kOwx8DQplbmRzdHJlYW0NCmVuZG9iag0KNSAwIG9iag0KPDwvVHlwZS9Gb250L1N1YnR5 + cGUvVHJ1ZVR5cGUvTmFtZS9GMS9CYXNlRm9udC9CQ0RFRUUrQ2FsaWJyaS9FbmNvZGluZy9XaW5B + bnNpRW5jb2RpbmcvRm9udERlc2NyaXB0b3IgNiAwIFIvRmlyc3RDaGFyIDMyL0xhc3RDaGFyIDEy + MS9XaWR0aHMgMjQ5IDAgUj4+DQplbmRvYmoNCjYgMCBvYmoNCjw8L1R5cGUvRm9udERlc2NyaXB0 + b3IvRm9udE5hbWUvQkNERUVFK0NhbGlicmkvRmxhZ3MgMzIvSXRhbGljQW5nbGUgMC9Bc2NlbnQg + NzUwL0Rlc2NlbnQgLTI1MC9DYXBIZWlnaHQgNzUwL0F2Z1dpZHRoIDUyMS9NYXhXaWR0aCAxNzQz + L0ZvbnRXZWlnaHQgNDAwL1hIZWlnaHQgMjUwL1N0ZW1WIDUyL0ZvbnRCQm94WyAtNTAzIC0yNTAg + MTI0MCA3NTBdIC9Gb250RmlsZTIgMjUwIDAgUj4+DQplbmRvYmoNCjcgMCBvYmoNCjw8L1R5cGUv + RXh0R1N0YXRlL0JNL05vcm1hbC9jYSAxPj4NCmVuZG9iag0KOCAwIG9iag0KPDwvVHlwZS9FeHRH + U3RhdGUvQk0vTm9ybWFsL0NBIDE+Pg0KZW5kb2JqDQo5IDAgb2JqDQo8PC9UeXBlL0ZvbnQvU3Vi + dHlwZS9UcnVlVHlwZS9OYW1lL0YyL0Jhc2VGb250L0JDREZFRStDYWxpYnJpLUJvbGQvRW5jb2Rp + bmcvV2luQW5zaUVuY29kaW5nL0ZvbnREZXNjcmlwdG9yIDEwIDAgUi9GaXJzdENoYXIgMzIvTGFz + dENoYXIgMTIwL1dpZHRocyAyNTEgMCBSPj4NCmVuZG9iag0KMTAgMCBvYmoNCjw8L1R5cGUvRm9u + dERlc2NyaXB0b3IvRm9udE5hbWUvQkNERkVFK0NhbGlicmktQm9sZC9GbGFncyAzMi9JdGFsaWNB + bmdsZSAwL0FzY2VudCA3NTAvRGVzY2VudCAtMjUwL0NhcEhlaWdodCA3NTAvQXZnV2lkdGggNTM2 + L01heFdpZHRoIDE3ODEvRm9udFdlaWdodCA3MDAvWEhlaWdodCAyNTAvU3RlbVYgNTMvRm9udEJC + b3hbIC01MTkgLTI1MCAxMjYzIDc1MF0gL0ZvbnRGaWxlMiAyNTIgMCBSPj4NCmVuZG9iag0KMTEg + MCBvYmoNCjw8L1R5cGUvUGFnZS9QYXJlbnQgMiAwIFIvUmVzb3VyY2VzPDwvRm9udDw8L0YyIDkg + MCBSPj4vRXh0R1N0YXRlPDwvR1M3IDcgMCBSL0dTOCA4IDAgUj4+L1Byb2NTZXRbL1BERi9UZXh0 + L0ltYWdlQi9JbWFnZUMvSW1hZ2VJXSA+Pi9NZWRpYUJveFsgMCAwIDYxMiA3OTJdIC9Db250ZW50 + cyAxMiAwIFIvR3JvdXA8PC9UeXBlL0dyb3VwL1MvVHJhbnNwYXJlbmN5L0NTL0RldmljZVJHQj4+ + L1RhYnMvUy9TdHJ1Y3RQYXJlbnRzIDE+Pg0KZW5kb2JqDQoxMiAwIG9iag0KPDwvRmlsdGVyL0Zs + YXRlRGVjb2RlL0xlbmd0aCA0NzY+Pg0Kc3RyZWFtDQp4nK2Yu2ocQRBF84H5hwplB7Vdj36BUKCV + LGwQ2GjBgVEoKZLA9v+Dy4sDh6rmTjDQzNCne6BO3xo6fKXLy8P98fMNlasrur450s99K1z+XlOU + CrW496n062nfvn+kt327Pu3b4ZNSPDg975vES4WEunJRp14Ge6PTa7x099Dp5XdMSC/n0fg3utu3 + Hxf04ZFOX/btNqb7tm90e38k+m9BAlpQm8pNzws6r+OdeEXhe+M+0nhD4VvhKWm8o/Be2fL4isLr + ZO9pfEPhxbhZGt9B+Do795nGDxR+CM/87icK3xqX/O4FJcJaC2vN81Heq+bs+dITlPiqDB4LfJT5 + alGe+doXlPp8dF7YPkp93oW15fko93mt7PljV1Dyc5tc8+euoOznatw9z0fpzyOHyULsQenPInZp + /vsrSn8Wucvz319R+rMIXvnyU5T9zJ37Ah9lP9PB+cNXUfazSF5lYfso+2lEL12oPpT9NLLXStOD + sp+2utL1KMp+6pNnvvoNZT+N8FXy4cNQ9tMIX5rP3oayn0b4snz9G0p/MhrXfPg2lP6kR9u9wEf5 + TyJ9LTQ/hvKfRPpaaH4M5T+J9LXQ/BjKf1I614X6R/lvCveF9OWwv4CVR3uff/8AMWTgdQ0KZW5k + c3RyZWFtDQplbmRvYmoNCjEzIDAgb2JqDQo8PC9UeXBlL1BhZ2UvUGFyZW50IDIgMCBSL1Jlc291 + cmNlczw8L0ZvbnQ8PC9GMSA1IDAgUi9GMiA5IDAgUj4+L0V4dEdTdGF0ZTw8L0dTNyA3IDAgUi9H + UzggOCAwIFI+Pi9Qcm9jU2V0Wy9QREYvVGV4dC9JbWFnZUIvSW1hZ2VDL0ltYWdlSV0gPj4vTWVk + aWFCb3hbIDAgMCA2MTIgNzkyXSAvQ29udGVudHMgMTQgMCBSL0dyb3VwPDwvVHlwZS9Hcm91cC9T + L1RyYW5zcGFyZW5jeS9DUy9EZXZpY2VSR0I+Pi9UYWJzL1MvU3RydWN0UGFyZW50cyAyPj4NCmVu + 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 + mxWDaazuLffHZf/XyULlydKvhoeloFgtJRTUpHahL93+mltBGOxpKTm6Y7Lu6v7GpCD11DNaQExK + 6AdgSOeZT717wkML9upBhyuL6n11mfRLsw1gXRIVLp3a0+/RA+T32sKAIVRhtoQn9+zXM8QITO+A + 9glKLNq+F87X3ru/nWXj+ea8/ouJHAe52xbDiDYr2x4OQ5UX8RyPeO0OBw4teexOr37fA/vb+QJ0 + +xYuIfZaweC/AN6IFYv+0NkZIO4MmKuL8ERtde5O1TH+MO+X/kbPZ/AJ9Sd9u/979eA4Gd6x3mUW + g6WWMJhZi94xhb0jFJHhecL9wep69bHn+5wihEsfiDWLTrGFneJuoM3PeF46LXyXMMzZUOHYoeH7 + xGCtb1Gxwi2rGcxq7BqXFo4omJxw9Qd5lMFVFhVbOo1958iBPCIwaeRJ4/8DtXV3Ww0KZW5kc3Ry + ZWFtDQplbmRvYmoNCjE1IDAgb2JqDQo8PC9BdXRob3IoS3Jpc3RhIFByYXRpY28pIC9DcmVhdG9y + KP7/AE0AaQBjAHIAbwBzAG8AZgB0AK4AIABXAG8AcgBkACAAZgBvAHIAIABPAGYAZgBpAGMAZQAg + ADMANgA1KSAvQ3JlYXRpb25EYXRlKEQ6MjAyMDA0MjIxNjQ1MjktMDcnMDAnKSAvTW9kRGF0ZShE + OjIwMjAwNDIyMTY0NTI5LTA3JzAwJykgL1Byb2R1Y2VyKP7/AE0AaQBjAHIAbwBzAG8AZgB0AK4A + IABXAG8AcgBkACAAZgBvAHIAIABPAGYAZgBpAGMAZQAgADMANgA1KSA+Pg0KZW5kb2JqDQoyMyAw + IG9iag0KPDwvVHlwZS9PYmpTdG0vTiAyMzIvRmlyc3QgMjAzNS9GaWx0ZXIvRmxhdGVEZWNvZGUv + TGVuZ3RoIDMwNTE+Pg0Kc3RyZWFtDQp4nO1b24ocyRF9N/gf8g+mIu8Jy4Jt7WKzrBCSwA/CDyOp + LQ07M72MWiD9vc+pipyetTOz1Gn7weCHmbrG/UTkpaKtmMXYYIIYG40s2dhkJOIezsQaW3DfG7cY + J9FYnMWMU+NjMM6CLBrnTIjJOG+i4FkwMRa8ZpIFUTIp4W1rsrXGi8nJGe9NAUPvTMnkBLEuGx9w + LLi9GBEPfsWIBcOAawuOHtfOigkWx5SpsXiwCR7HnExwRgKIfMaxRBNoB/QK4J+kmAD6lHAfzzOs + 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 + o7YHauOettT9bxfFC374xVj+v4b+R2qoOrMW0tkCqt2Sut9ed8Hr1nDdsK3bqHVDsm4T1s27ug1W + N6fqllHdfKlbInWjoi7560K8Lo/rQrMu/+qirC5v6qKjLgX+W4W/fs361q9fDMY/AFTdMPANCmVu + ZHN0cmVhbQ0KZW5kb2JqDQoyNDkgMCBvYmoNClsgMjI2IDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAy + NTAgMzA2IDI1MiAwIDUwNyA1MDcgNTA3IDUwNyA1MDcgNTA3IDUwNyA1MDcgNTA3IDUwNyAyNjgg + MCAwIDAgMCAwIDAgNTc5IDU0NCA1MzMgNjE1IDQ4OCA0NTkgNjMxIDYyMyAyNTIgMCAwIDQyMCA4 + NTUgMCAwIDUxNyA2NzMgNTQzIDQ1OSAwIDAgMCA4OTAgMCAwIDAgMCAwIDAgMCAwIDAgNDc5IDUy + NSA0MjMgNTI1IDQ5OCAwIDQ3MSAwIDIzMCAwIDAgMjMwIDc5OSA1MjUgNTI3IDUyNSAwIDM0OSAz + OTEgMzM1IDUyNSA0NTIgMCAwIDQ1M10gDQplbmRvYmoNCjI1MCAwIG9iag0KPDwvRmlsdGVyL0Zs + YXRlRGVjb2RlL0xlbmd0aCA1MzE4Mi9MZW5ndGgxIDEzNzU5Nj4+DQpzdHJlYW0NCnic7H0HXFTH + 2v475+zCUhaWKrLiLq6Auig2FEtklaJoLCirgA2k2LChGI0lJEZNSEy5Mb2ZnhtNsqwaMdXkphfT + e+/JjaZdzc01Ub5nzruDaDTJvfd/v3z3/9sXnvM8887Me2bmzMyZjRBIEJENFxNVFIzIL1mf7HuW + xJeZRLFJBSNOzbvntXVfkfhoNVGIb/ykrL7XPly5k0icg1oVVQsqF7/T99MUovmbicyDq5Yvc+5e + /EY20Y1fIH1/7eLZC9a+pw8kWvwCkdU9u25l7bvOlS6i228meumvc2oqq38cu9KHeJGIN2AOHNY7 + O+1HOh/prnMWLFuRPXOSG2nEm7utblFV5U2b53cjseoiFJ+8oHLF4l7W9G7In4PyzgU1yyqvOmvL + chI/yfpnL6xcUHPdoYMzSTSjfu+lixctXdZqpw3ozzRZfnF9zeK42V06Eq35GbdDP+ENGfzhP3a9 + WDAzeuhB6mghafd9tfpZya8XnTb+p0OHG8P2WQYgGUYasaFeCB0h8Wj4lp8OHdoSts+I1M46bpMe + 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 + wAKEAiGAGTANb8VVBzRAAETVAj5xBDgM/Az8BBwC/gH8CPwd+AE4CBwA/gZ8D3wHfAt8A3wN7Af2 + AV8BfwW+BL4APgc+Az4FPgE+Bj4CPgQ+AN4H3gPeBd4B3gbeAt4E3gBeB14DXgVeAV4GXgJeBF4A + ngf2As8BzwLPAE8DTwFPAk8AjwOPAY8CfwEeAR4G9gAPAQ8CDwD3A/cB9wK7gRZgF3APsBPYAWwH + /EAz4APuBu4C7gS2AVuBO4A/A7cDtwG3ArcANwM3ATcCNwBbgOuB64BrgWuAq4GrgCuBK4DLgcuA + S4HNwCXAn4CLgYuAC4ELgE3A+cB5QBNwLnAOsBHYAKyn6uGNAutfYP0LrH+B9S+w/gXWv8D6F1j/ + AutfYP0LrH+B9S+w/gXWv8D6F1j/AutfYP2LegB7gMAeILAHCOwBAnuAwB4gsAcI7AECe4DAHiCw + BwjsAQJ7gMAeILAHCOwBAnuAwB4gsAcI7AECe4DAHiCwBwjsAQJ7gMAeILAHCOwBAnuAwB4gsAcI + 7AEC619g/Qusf4G1L7D2Bda+wNoXWPsCa19g7QusfYG1L7D2/+h9+L/cyv7oBvyXGy1d2u5gJi1p + pvyFp9DriI5ccszvqUygebSUGvG1gTbRJfQQvU2zaB3UlbSFbqU/k48epqfo9d/xOy+/246sNC+g + SH0XhVAcUeuh1v1HbgVazFHtPJcgFWdyHvW02lq/Ps739ZFLWm1HWkJiKdyoa9Vegvdv4nDrIbxy + kW4dINPaRuhoo8Z3odcdufvIbceNQTGV01SaRtOpgirR/2qaQ3MxMvOpjhbQQiO1EHmzca1FaiZK + YXsx9NFSi2gxUE/LqIGW42sx9NJASuYtMdINdBq+VtBKOp1W0WpaE7ieZnhWI+d0I70CWEtn4Mmc + SWcZSjF71tHZtB5PbSOdQ+f+aurcNtVE59H5eM4X0IUn1ZuOSV2Er4vpT5gPm+lSuoyuwLy4mq45 + znu54b+KrqPrMWdk3qXwXG8omXs/PU476S66m+4xxrIKo8Yjosal1hjDxRiD1ejhunYt5vE7rW20 + 1qLvsm9NgZ6ugP+sdjWWB8ZRllyHkhyFn4OMsua4kbgIfWB9tEecutTo/1Fv+1H5Na8aj2vajczV + Rkqq470n05fRtViBN+AqR1WqG6FZXW/o9v7r2spuMdI30c10C57FbYZSzJ5boW+j27G276CttA1f + R3V7xXwX3Wk8OR81k5+20w48yXtoF7UY/l/LO5F/e8Dvb/PspnvpPsyQB2kPdppH8KU8D8D3UMD7 + qOHj9CP0F6RlKU49Tk9gh3qanqFn6Xl6DKm9xvVJpF6gl+hlel1YoV6kL3E9TC+YP6EoGo6P//di + nK+hGW2/DfofMXMyJdCW1h9bT2v9UR9FtaIEB8hteEo76Hx8Yl94tKRwULjpI4qnHa0/6NPA3Q6/ + ZZ5z5MbWb8iMXXOp/hJ2OZ1CaRCNpXF0uW+9u/R+suKUkkiDxc6dCfn5lp6hD+IEopETZxgLCZHn + iTZp1l3JybmuXdkhm/SYohbRc0du6CacznMPv3d4b9bh9/bHDsraL7Le/fC9D23f7Y0ZlNXvw1c+ + 7NPb7olPtu6qQ9Vs1666bD1kU50ekyvre8Lqcj1a6KY6BEnKdSfvde/Ncu91I4y7d58yEZMaYyA+ + SgsNjQ9xdemlZWekD+jXr+8wLbt/uqtLlGb4+g8YOEzv17ezpscrzzBNpoX+0s/l+vjDIdpaV+7k + fubOydHx1hCz1ikptufQNNukqWlDe6WE6qEhutkS2m3giC5j6gq6vBUak5KQmBJrscSmJCakxIQe + ftscdeh7c9RPeaa6nzbrIUOm5XbVrwi3aKaQkJbOSR17DEktmhwdZzNFxNliEi2hsTGR3fKnHd6Q + 0EnG6JSQwLEOj8VwuloPmdaa46kLpdM7ctx3U9fWL3ZE2sSprpaASG9p/XZHBESEEuEQnmSp0mzy + ajWukcbV002kyezMCDG2qys97UBkRGRSlxRXuFUkmiIp0hap3e16yPW8S3dFuiJjUybGes1eys3N + jR00KCtr+vSYDoNiIGP62fb3jenXp7dwTw+8/d1uu6czQkamHahrH7N9nCQVqC2MG1Hw8NISE0OM + J5ahp+pRuqtLevqAgYIfU4dQl55qarAIW5rDkRYXZlp0+LN5enicq1NKWrSwCL/J2jGjs7NHcpRp + lXhfPHJKoj3KpIdGhokhR54Ks4aZzFH2RJM/Isqi65boiE2HV2E2byMyCczrzuSmHPq7HFtPsiPJ + JsY6bNHyYsUlKRIXJ0ZK/su7p1tyggf5CR7kJyREZMrCmbJwpiycKQtnysKZ9+JDNLXu2QlN6f3w + nLajJPjb7dEBthr8w/ZIg7/YHiFZs3msWyL2RGgRyRkH+vQJ7Wr8t/7i/i0iojm0hHL35xorZpDI + mv6hMeR9X3GzkCvAPYi1XEDhyX0yDtQhhE3G2FFnKw6VUfx1CIOFk2tUGCTXTHyUyZXaJT07pv+A + fqkY6wS5eDrron8vzeWKkSsn7qg0CUfO+KolRUfu6tC9eweRvmxzVd9E9/Ae2dMKuh05nJxTPtr/ + aN7EAR3HpY2cX7z30JDSvHSx9JTZE4f1SHBkmM7KcGSWnD62V8nInNjw7IkLNZF1ananI9NdQ8Yf + fndw6VDHkZxOAyfK38evbP3WFGnujP3G2Gu2d6Ih7sAougOjCN4nRxH8tRxFd2AU3Q9q/bDLJoks + SqV0kemPm2S6T/SgbOotejWHTcbm88p+CZHFw2V77VGMWHNqUovI2l6XGpfeIjJ31MVNyja1iB7b + 67LDest/dKpDTQzco24JOV3jo0La7RwhCYGdRO4xCfGdNTlacuqaIjWzJd4zc1XR2mcuHDvpshfP + yJlXXmi3mHWTJcIS1Xf8kvGTN1UPzK66aOrYpcX9o0PDQ/RdtqTYqPjuGfaSm7+79oaf756W4Oxh + j4pLjo3vFBeWkZVRsOHh1aseOGN4elZ6SExn+f83kHP5QszlWHLQFcZMTslNFXFyfsbJ+RkXj5GK + i8UwxSVhjOLuk/OTknlEkwMjmhyYl8mBeZkcGNHk+7QYCsOIRvqjiu0tIr3ZzHNRjeArat5NtzdH + YRgjd9RFFZtlSX+dOTDfeKppx0y10HYT68LJt3x765GvjWmVdvsX1xbv7L/ojg13N6++o36QdtXt + P90ykSfQlJu+uHLuzrNH/xwzrPFhzBT0XF+NnmfSXbLfzckZgXmSEehVRqBXGYFeZQR6ldGixXjC + wuKccU50LrlFWDzWxnSxJ128kC7S00M6yn98sxZngJpD2tbe9CX16HaWsYPZAmtQzp50I0BEHWZc + oo7a1o7GMFiLQ2QAf13I0WU3c8b0wATSfrHwXKkxx0l9tSncajl8iRwYrdZitZjNuBwJEX4L9jVT + GPQ4TVis4aaRsfZYCw+SJdYeH2uPsRyZF2brFBebbAs90scSY5cra1vrIb0E45VB64zxCo0LjFdc + YLziAuMVFxivuMB4xWG8dlpTqHNKKHq0PS6uY0iL6La9y/9w9iXwbVVX3m+TnpYn6T3t+75almVL + 3uRNsuN4dxzbiROSOKudkPBCEgINJClLEuiwtIWyNZRpy7Sly7TQJE7iAi3MfCmUtvSjv6GdoaX8 + oPOVtaa0M9AEEuW7574nW3Yc2pkE9K6kd+9793/OPcv/nqcMO8A5yJ48fUbIlaFiglNPiujcIJw8 + JeKzkQuY9diXzLnkkEuo0CvQ/NkiEgyL5ojbBZXZ77QHzSqESBf+9IzJjSbbw/Iui8klqC/8gdWx + CgV6YR4DMDxo3msvvsdcr/ATeeJ30vpwuw12WB92WB92sN92DQctNFc76IaOeDpG+mOF2MYYHTPI + KBlklAyy9THI1scgo2SA5wrStWQtWgaaqWAwl257ktSgKEpDJo7nRs3IthxLj4E2IQskSKDJtvyl + 8fEzs8Yc0AvCGKdEGETRhponREVOM00mpsTcaBpGOi6mxyS1OpMUyhGdZ4fqGwRQM7BTGGcBLP6c + 5WKY6xkVx3KN6w+vueo7n8ov3f/tyZYDdcWXBIFRIw/6Ja3VqDE2rds8UfPAH782Nv7tmbv7Dk0u + dWqY9SaPSRWtii6740e7Dj5zpNPjIW8IhpEAVCrebSyanFFP0M6Nf/f9+x766PubnKGEMyhrILMc + RTRp4g2QxFS+hgxxMrycDC8nKyEnKyEnw8uBYNy2sBYkpwXJaUFyWpCcFiybFnyojShYkOMtmOCF + F8gBooC+J2ywOYW+gOMp9J2tYgQ5x8qC4RmOfJEjufmxDlrqM3kSedWXQCSyUs8t+XHXiYoRTuov + Ehxa9dyCGAcv9HxppWOdLldvyT1Y0GelJrNcZQ7YnX6z6sIJ1HKAiqvMQbsjYFZRg1jpUcuJhIV0 + m1NRbRf+tdRmflNqXfiIUpbaMtrkaoS2hdgEaJ/O24Zsj9toQgackAEnZMAJGXBCBpx4Atl+zcVn + TiPcNPwIBgeBMmfwT+AP0YznTbQ0JXJ1aSJqS8DmKL/9uVuWrXg/ukundJc/ICzS7Vnk27PIt2eR + b88i354Fnk4h1IYRyzSZlM00mX5hNg46YRhRwlezBni+4Z2VARiafmRM1RfO2BIlzMkXIXTsN7tM + amRWHyvd7sePqAW3hKwyiSxpC/FrbFH4jW272yhddbUtndZU2e3O6b/TvYJOe8M1HKcBrdaAVmtA + qzWg1RrQag1IAcWTBQeIJFw/rLXbdGl7TZXSFx/2rSwpbd6IYuosAqAUFaLImp9tCbnWdDYLEfs4 + SrAWHcM+N8g8cYZICMhRaE6G5hloHJuTWYjSMZDKpMrsc9gCJhVVzNJai8ds8Zq1VLGbRNrrsPtN + bKXrSn912K4m9ynI27ROX9Sx0+AycXNase3j+1gNSzMoDkLJ09HZzx+tCHPOuOv8KvpRb4VDqzZ5 + LBD3IG/2HJKBm0gQX8H+LKyUYVfKsCtl2JUy7EoZdiXAbhM8gLkHMPfwnI4c8ED87oESXEKIgNFV + KrkQipxPWIa5MkcnhTzlEYASzj4potMtcP6UiDss9HWhhQ6OKQuC6OcK+753/b1qU8AB+lfhJC0V + g9t3DiRONq8ar/zKl5Zt6wrT9256+OqWYtUsMN+JB1lbft0Nq4Z21OovnIt3b4FfF7jYrviMIoC8 + fDPxI8nfaQLGOMw1DnONQzwYh3gwDvoVR/MtaAi/u9p9s5t2Z2QIMzKEGdnZZWRnl5EhzMDTdMaA + RpcCr2QbjTANsAx14N9eegGgys2GiHO+LYfQmkKdbNALJfSoX4HR6RrwMtVhh8a/5HwBcIMERSED + FlOWx9tymqLAaUpZyI1mreGU5iuuPdJW88CWL/zqzs6++169785/+3yPKdFW0Xt1T9ysKn43tvaL + u3d/cUMiuubBa/Y8tD5+jc0nKAP5NS3eyrFH//rVh849vmHsG3/5x+H7juxOtSwJGkwh6rWrn7pz + 2ehnn7jymqfvGlzx+R8SkvYxWqR99UQn8UOMspevEhpUCJoGQLkBa1QDoN4AMDcgvE4nIINM5AXA + FrUEGWNBVlNBVlNBxliAMml3FY/Cy1O7C2ShYGtF2nUyMGyTFz2OSmdmgS7LCAHo41UF6HpSRB0D + 0POUKHeFtT6bBZaWeoyuoi/RUavNS8tZoc1ktZK10Vg0WorbtUpz2OsMmLXMPkuqbUXz3pL2ojje + VNPu7N+7LBbqWJfz16bi5mv1quKFzuWOfPaeb3Vu6fChZa9CMSzPkTW1q/KhCy/PajWK2xS0rnFs + 15L2bUNNZn2yZVlN8T/DHvrWge02VlkcCDQvRza4++IMvQXpeS8Zl/xG+8W3pgw8OdAuw9kuw4yP + HD5iWNunqcpCMlMwmcmBTEEgB8OZcIZz2aGvC4yvi+fhBXVxgehcT1A1YIFPuLBvfOaEQz6apeMp + A4QZXNWTZIxoQMFetKAV/A1kQ0HLkQMCVNBooNUgNAjWFgiK212KxKgVrYBjChwOInHNCJBVJJPj + /AwPJmYu7jBKX8y6tWMNVVDXKAooHIyeFvGoCRj2tIjHVcDAKPeSokPUOykPPRcgMqWFJHFjVcrL + JLJKesuSfY+Mt+9a1WzTokBRpc8u39PXOL4knBnZfvWVI9nm7fesSK4abDEpGYpWalltunO8qX55 + rTMzuuPqHaNZ8qq1n9uSsfqD9ojP6jGywXjI27A827CsuSbbtmLP0PBNYymDw2fSCnaTEeW37pDH + U90RqV/Wksm2ju6BGKYVedrXUHTQQtyB2YBoC4lM0NnCEoA0kiHTKmjE02SEx59EyKAdGokgafdD + I1VDpqrJVJhMhciGkYqRULWWLg/2bLl8HrlF9AfILPmvq2BYeK69dDIsmVmXSJda0Wh9fZlLLGtZ + rUpWcZjh3QmvL+nWM8U/Ux/RemfCH6h0G+jid5SkEPX7wiaWIkMkaabV5ojXHTCraTJBkR5aaQp5 + vCGeVET1AiR9gp7+5fl0qc38s82pZ2iVXvvxGaZJa0BLSmXQfvws06xBbYXeaUO2ikee8v8xUSJM + xIk9gOJJuy3GRXXTFFlQ26J+9Lk2qpmmmgs8EY14KmJnIZ6dNF6puFKOhyFdIR1p+0uvI2Uy5pz8 + 76QG0E086sHFzopzfeQYGPKSeeReLMDOJ/cYTO7Rv2FpPhoIRMwqelWxMMJoTGG3J6SnVOR2hrPH + vI6Q3ahV0Z+mHie3tVhhvkpOPfOumlPRCr3bQv9Yq2dpklYgDb25qIFfHnwEvXyN8cv83lYcHUSz + T1I0oSV8lPUEEHjTVCuar9YZ+31NDRt5g5/IfsBuK+fZXnodNV7nX89IrHRN7PeYVIu8IfITbPYD + EZ39d9Fp9KJ0Gv01d3bpyi3txf9jDofNZHzDjWOVpnB9KDmYC/7Jklra8u2Tufa4pdnVMNr5o1fr + OrMeMls7tjQT5D0B+usBT7BzS3ussymlV1UsWU0+FGqKW4tPu1Itxf5kR5W9+HVrsg3Wz86L79OH + mWqijrgKUDhuJ2LTVFtBw1k/TnvyHsoTnCaNyGBtpc76a6prqJrKabLuGLsdqLLxGfyC3MtLQJOd + 8lg/Fj0C7qARha011FmxhoXzj4uowwKGbF6eeTmGjD6sctb2jjeIx2/q6r75hJhe1dfsVKMAkNVG + 8+OFrr3Dlemxfb2tq1rjOqVKQX/RE3AG3Kbu258/dMvPP9fHuwPOUMDoFFS+sLdh2wPjmx+YyHpD + XiUK0pHegxacR1oAzFibtG9honJAflHmglptP6efcJ1TbCvxWdL2A6e3nxP1EwrXOVGxbT5/FVqc + v6LP997xk89+jMUo3PEvhzu/H1/5GfGeu7fedkUl5bvr57e1SxJbeuTpG0fu2tZ0/r2ayQdBNnB/ + egZ+d3J1ib9CN2ZW+01+E6F2/hWYqLO6idhZ5ZxeogxH4p+wVpqizr+KmHI6K+omlGgVKsuU8n/A + NOkZVqu88CbMgTKyWpZB79niRnIbqwXeHLWPkt9EFp7pRGiz0nxY3mU0Ogyq4s9Z3mkSHDxb/AbL + O/DMLn5EvY9mFiKW45kpBJiZ0a3Vugi3S3FOEGzMx/4J25Xz6aPStAyC4pyIzvEzH4v4rHmhtPKT + WCMr9b7BULyB3K3kYBKcsni3CkUlkD0j8ZwzGOjfhv3FKRXvMBmd6N5XqKTJquifBjwBuHfx4nv0 + e0yGKBC7scfxeg12eHqNiBumqcaCpi70gUOB/lZroHy/aasZrYdj1dtlCYFspBWDLCRQOQWtI/SB + iDs0QY8psWlrNfQ5LlZvL8kKHPTlCJzZdYQmZxHMSlZyOaWlRb+nYNWMoWZg58DYHZtqG7bcPly1 + KfbHkgzJDVY/LwSWrxhL3PT8Xb1Ddz9/YMk1KxvMGvouk4tXeSKelh33X7H5gW11VgvpReIDkbIe + X3GL2cManSbtwF3P7r/pF3cPWXw+k0+WLf3vyJukiTVYtiEOHvGzhbXwQxKErWIyDAZCfYkLgdz0 + 9Ywk4RMVk1xYsiOXuo3/CW9C/7vKgqTrN7NFL84zA8CbBOwOP8rhf8+a/Sibt6hss2g8W2wqtem/ + zOr5FvIfS215hmQ/mqGFCEuRJYFmpuEn8VyQbGEC+N1lqY/+0r2o4Q7QvczeAf1fSqmlJC5eJAR0 + pXWKW6ko8RgyS0oqKsh2gXoZXd9O1ErXNwGyrG4SqY3+GLOtxHTAfegmGfj0uMhsmyM5lItwHNTL + vKHoM4dn0dkFsfbSMNJ6+uelezp/Cyu4JAQUk2j9NhI7ME9XaUnF7NPkxYI6qEtrUqlgrQbeCUSw + biJl1dKe6ITnSl4WNg6TsLCNuVagy5HMBZyRFAwLTy+xDgs5Bzli+CTOwWpRTLImv83hN7JU8U4m + FLe4jWq6eJRijX6Hw2dko3bRVxmwq8kEQ2Y4RyDh3uoIz0li3/kjHEcr1Ur64PnbZz99LugHsuFC + LfUTb4VT6w+WdP59JJFmYgDrfMAIjze6mepp8mcFHeGun9RW2MBS0dvk3dJybS9oy7+Xd0FLkkJO + BaLHWMgs8bMLZouSLlu2ip4TJv1+0LnXF+WLb8WHYiRJkazgtto9MNuDgsssqIrJlShwRH+URrfN + 7hGUHUG/L0Bp+x8aCPb19wUv/Kh8riqDnS+Ghx8Zia9cORYnP8BZmQr4Q4rYevE9phNZQhMRI3pg + 3k8TZqoZKaoXvWoIB2k4btgamiYNxxTb5znRYwYH+nRKNGxVwNcoG9k+35OWJfPsgiye6Wy/6an9 + +08faOm4+an91508WDge6Lt+9eob+kP+fnTcPxCgvIf+7z3LOj/z09tufOHuZZ23Pfv51feKLYVd + 9w6vfWBnc8fu+8H3I4ntQBrsQRHgMin+Uz5JmQkB3XwLEpkQ+0Ch4CIfWia4K8upnZIHUsSQ0VZw + lsiHIj7lb5E5kCiz5dkxvaN2y+cn7ysZgqid1IU6/U1rC8ETHW2WtPULX27urXFQfxg9tDZdvKdc + JEqWyy6b7OvZLCgUxZ2+hn5JFuuYp5EsIkSO2Ij9ktovROFpc8JVDb+QJPjVXBLAtm6tgwPDIZmc + mSkxMcgfyfQLOs+axOKxbuXg1BMinGvPn0nO8S7y+luEd0H6CDzAAqE9rdRrhRu2DAUTNw/uP33D + rOyMkfpg3fXten3x32al2IuOBwaC6yxeS1VrPmQLd/7Dz2678WdIkp957siSA1etCVe1W5QRqn/1 + fTuRVL+wfN2DYkvH7ntlqT6MpJpF3nlCso0ayjJVwyeFWngAP9qMAw2DOym80dxsy30Ia06ySqWo + /vUMxPW5X+Ngz5hsFt4Q0Zn+3IeifO7i5EhsEXJkNsK3IUjKonz6YZUl4nYFLBp6zBCubq/dVtIC + FII4N966ttpTN1DjSkUC/BUa9o+W6v7C/Z9rW5ZxmFhkjGi1XvuXis60szg0qxU/C3iiXdvaIf7n + tYHqQvxtp4N6NdSSdBQfc6Th91J7L75HnUf60U8ckXDpoIwno7XRWr0Hfm+A0CNTpSuoc23nPEsU + ya3IfAun/KZqE2VCdl2HFzAO+BE0eH8cg5TGvu5YDvfViblk2zkRdzdB/xOiSQGdS8v7jEQ3nClb + 5cq/l2mgzjdv/dxodsNAHc8qKArFY9pU16aW1ECDL9m1ZnxNd0XtuoM9FSNLavT4ezWrTrSOZGOF + Sntl95r1a7oryVjftUOVRpeb1/IW3uwxqz0hjzXRHE20piMV2aWb2gvb+xK81WHQCnbehHIGp8dp + iWQ9ybaqWDzTuR7svBvpVxvSLz/RhG0GwSB1OmE1MDzysSdcExpsKzJk+syffwwMG+OCL6ZE/A2Y + iMxshDoXwMzFbyjQbjPoi6+rjQGH02dWFV8vhdfUWyBr+reRwPlDs1K/USWgCNslsKy0f/sVHJlG + kUUrSNmMnzIha2ylzCc10Ul+0jVnivMlU3wSvoD9+DkrnC+3wnNBgryUyzzNe61Xf3nzhod3NSH1 + tTsDJlVo6YZcbn1nQGXy2z0+E0s+dO2D2xuzk/ffRO0uhRAXHt402RlE2elqatdsqEMSAYTsK+je + g0Q/zkMJG1KdP50M2vwamwWF1wWN1uaZtCrkKMuIHCjmGySyATMNp2e/t+MTyomYhfQLkC7U1YzG + FvUFK+wcU/ySkjGE/b6QmaXJDIUiArU56PEEdAzrlUqD9Bz9Y6tLh0uHzj9Cr9PogF1wWdG9N1z8 + SMmie28hbsBMrzqt4YiW6mouM02+X9C0cDa7LhIKccFpyloQ7FzDZMVkdQioo7kAGJij0owcaeBO + 7LzUNuaMcnC0sN9ilBO9COVkyppkykluweyZNxidM+4NJu1a+jX6JYazx33+pBNB8R8saYz6vQET + S/839UdaZQx43EEjS58l/5NWmQAVPaWUUeE56qMLCs6wACHN+e/Qo1odfKpTn/9nqc3oXTaEFrBN + ezHb1C1ZIhtKnnScE36DI2wnwD6rOd+kXWmcVJZEnf5z7levIzmDlGe/mpUyObeYLpk0FrRDbQra + HEhBi1Mca4gGvRGLmjlP/TcScsgdjOgVWvL+4uy6Im+khiQWSasuVpMvqrRKhjE4rMi/rLs4Q+fp + n2L/8iGWtd/Q4etId9Bata2W48jBWiCIa4EWruWBMK6dJv9a0BOxmIEgOQKYf6JJ5pubgG/WyUet + dMQEddM0pSqYBduPiVq+lmp+ppYkasna2qr2imkSqcGLQTIYZDzvVPW1vsINMkS6VH+CiwbG96wf + L1XfnEmuH8/JtSgZpEPrx10FndZG1tp+LMJ4QTygVSSCpJVBY1Z53hGr+rjWV0QY154uq0rBNQTj + UkyqBI6urq7M+WfrZIcvf8JgA8FK1tsKaSqd590up0/ffM9w997hVNu139p+0FqzLNe6qbeGU3Fq + hnV1jG2t3fQPK6Jf/2znRIfviuXtu1rtHKdUctyafFeka2v7wO6+SFft8joXstwoQTc4PM6Qx1S5 + 8sYVZ2ypfKJrtKMTyegoktGvFHuICqKVOIXZTLSyNIF6efOkXmb/62XU4T1GvX6aPFtwWZKw85X0 + Q/UYSDEJOzRJHheVUZqCmrBo6usCjAK5PMWpaJ+rix/IoeYxxSA2q0gQtlxpCzA5h/y467TULwod + C2pR6qqAvsjwDkqGF6Fty5VZ35jlUjMsreRSVMwKVisOKX6V3XL3eLK3qyumMrosZrdRiXIflMgZ + VfH+np745jtXxR+z1I4V/G2FpbHOg0vaVjc4yDeve/JIlxBtSlytktgQlaKxFOBf+EOiMcQvO/z9 + 65Yemmg1VnRkikdHV7VsOQCeZg3C2E8/T9QRP8F+0I33O6SagdfkWoG3pmBDepGSq/fml1pdfEcq + waK0BV1aT+odb/oKGl2PD+X/1JSpj363Bh6QVut6gHpUHlMPQiSSnMEvswUyZ+St1gLnc7wpSgOY + YITToqmvhn5XhEFOwiBqGOW4qB6UQhLMSC5etKeUAhDlPELSTylYR0v/6vSmBybr2vccvSI53Fln + Vyspo84Qa1nZtO+mQGG8JTeWT3KwV/1PgkPQOSIeY+HAietufXp/M+8M2vUmuzHmC8QDpx9bdXh1 + MpwMqUweCVXF04pdxI1SNe8UsW/7EA0/ONnTMAS1c+cK2mxrdgj93WeOrgHArPvyI0MjVPVEYYIa + mRiZ2LDqzb6DPRvQDAvqawaz9hl9a497mmROpgaXzKi6cBKWz85k8Ksg1ezi4F8qu82i7IZ/FiU5 + ZwTscZyGEd8IRUzwExRH4/EPrnpTRFe4Bl9CJ6JrtNpnRHSVFFwG6XVqULVkRkSXwvlcPpvM4Fd8 + LWRHwIIgGz2bMVikvEEJsbO1BLKlxA4LIbk4ada+IFkwi0vGMk9+VqrBaq5ae2h09NMjyTfAvgj8 + Gw1dtrDbolKolDSrd8cyru4tBe8+g5FR69h9jlRHIt5R5fBWqxWUkdNFGodzC4RZLvqC+LkhS5Ke + cnUmO3aNVFWN3bJyPSs4TWF/0btng1qjVujtRm9Qp9Oykf69m8mP/GEUU7J9LasaXO5MV0XjcEZv + dAgxnzfsK1cDc7nCHPnh9Y1KyO42ovX2sGInEUXZ3VPY7/jyzaTWlQNvk4NakBzsSebATuXAbOWe + JM+h0C8trca0vAjT8iJMyx4oLS/CNJg2jSnQpc3FXIy+AoySvQ+5LuaEflAxADEtNmz5BVWdkmUr + aEod7dBzSrT36aHvlIg7Q9iLDds8Dqfce6DkeC6ojEbLE8cG+mFWcJuh+r376Notd62KZzbfs2Ho + cIE1+8C6qR9d8unOPLJlyLa1B1oLXTFHyZTtGxwbPHxs87VPHuleuoTSlsr+LixFVmzzwULnoUlk + 1ZbUIHTHEbpHkVdPErXEOxjdinR9vn5XPW0CP2DyQ+mjKVAJO76VgK5U0o39O7Im5052Jr+epKD4 + +CT4iVpGNoKMbOvwey0+Sg6eAbwDgcrnbmbuZqhnGPJFhmQYd/qVaJ/9nY363XpKr37HPSinXHO1 + pZI7+V1SMnq4rhsLIMhUPid+Co8RTb+CfIve/o5I6Hk9ZaD1bvU7oluydrjqDPqNzzLll11B6H2s + HsuCpY/GHBeOe7t2DxcmetMcCthpima19WN7Cru+eU1Ty56vbtlx/8bUo/QN+1rXtQUpiooF+q8f + q7I4LazeYdSZDJzWYTe17Z/ef+0PblnaufdLq02H7qsamGyAvbi64r307fRPiDZiGbGBtGL8LcZU + N+hytwrB1+3nTeRAdzY/ffEswJmXtRgdXzsFX+XZIdQs6AxGcmDIxRiq6SzLAuawTQ/76zrUSGVZ + l4vNphhwUYVa8E2r4RKr/TzqtroiUtCiY8RQzdKNfb/hRt+yWDY20m+39FT4O15u7Fv7sn9IpvDz + UnHmryVXn8y+AO7Hhuwb7KIL6EP+hST6L1l6AUsaw+Nyfb8ROYtl9C0RBm+h3xZh+MaOl8XGPv/a + l0V0CZnwz0sBF//sbESATKTVKsUD0ZgSmT6rTa69KMmsAexqfUPJulptgQwUZMwGYbC9GI3F9LT8 + jr7dZLgl5M6M37ysYYvLaGuvf3fJ7pGq2qse3bPz6OZKPlDjr0lnIr5w7bpbBhLdPpIXhGJxcry6 + O22bXFvTk7aNbhh+25+wq498qn+yzUVfG/KFV6WXXT9a6bEaq7yhKkpDBVqvaG7bvbImUriiNtDW + mHU4BipbN0Yj4x2D+1ek1KpA8c/rtvkbe+NXbPU19FxY35SnVI5UIm5pX+KpbsO2D+nHw2h1thLL + ic/g3DDjXQ6/0Ezo9UQXrCRd3EOMNPZm2pZ7mVA7/LJRqq8fHU6GBuzvKiSxSfZLyGbRKjqDN5Kw + h9OV9UxB1ykx1ReCzsiXhQYU9ndFhSwUyYahEebM2Hz6om7exgtlq7u8TWsQHxFrtozWm1U0xSjV + SnWqd3tnYVOHP9HX3R0rmblE99LuhMoI5k9gLzF0kZ1HN1ZqjRadgTdzZnSGyWFytk4OTCZyYcPg + 4cc3733icLcQaU7sVEskgrr4V2z68iigazEmkOlD6N568SNyWJEmLESA+KZUBRoaCu0K0VY5O7HK + cTN+b8JHvLCs8iq0yj7E+iS1h3ATlssVY8pRtgVF2ac0PnhKBn4gbMrB92IH8+uZpGzfZN8iPTLg + gJNOitJZyJM8m6xebEPFBCEBaD9Se7JNZZQKCksRsKmyuSkJ/ztUWghuERxHWCnMZcnqpopEDv2P + 4q+jCIs2+qmyfR3y7JRGvsHSvo58I4vv61xy6bIrIgHQNBIFUboSylEsxPBs5e0uXHm7eKVtCT1i + Gt9RV+mO5iptu/53tzUX70t3pXgRrbTlpBdbYZcRCt7xUyFRXD0Tw6Uzu0fIrkufAJBqqcqeFHhH + elIAJVVerxU1vd6MVLWK61dx6Sr2oBq0lk8vhzqr5W2XPoghDXvJAxtPkmeJDMGjSL6/L4xj0fa+ + tq5UY29qwDGA0ZE2UcqeRMnJ1W9CrlSjDNEL/lUh17F+Hg0yJfb3tePR9OL84eyl8aQ9ijKIcRzK + Cp/wQSnSlXkJKX+zKF5EMkGyMKnMlZ1Vub1LgTOzBUystXJJVe7azpLEYJPG6uHZgc/3Nl7RWc2n + hvu7w6s+1eubFSEVyq3vDK9eeeHOy38yp337Vg450+3xms4KU+vW2wckqdNfRVLPENNY6gZJ6vCS + ryUrFpHsZZ4BgfTZq+X5UuE9LsEvq74nz56Wiu29AHZBk+qrcIR7S+ICv0qmS6Lh50nIdSyFu2jF + sj7SPtnflMd8+C30VyXcjSp7VW9128FLgX5wcM2BgcAcvIbBTwITgbgR7ChkxK8iFGEv7HmMozuf + IONGMiGQUR0Z5cioioyyZAUu2/LKAblXBtUrR4xeOWL0yqB6wb150xpSYwYewgyQmiEmNQNLYQZc + zU9QGqg+PG0gBncjcTrgt/wMfSGU+8qkBGTJMqyldFkqaMN/pM04cko09MFmHDXLRvw9m3H0q017 + v3fNrm9cXZ/b+9296NjwmKttxxByZgFXfsdQz45OP/mHq39wW3/HjVPXoGMfOh7sPbQ5V7vh0GDf + oU252vWHAL2jxfvoXyH0gLM5VuJsAvUaWdc0sq5pSnZQI+OjAaWzWSS6BhM3uEpTYm4W5Wt6+aHL + 8jWfTNegnn+LrllE7S5P13xhfbyzvRAu0z+zxWVkEwODw6nNdwBdk8V0TVesc/+StisanOTbn3rq + cDcfrA0V20pWm3m75NxvqGhLWAaOPH7d0lsmWkzIuxcfGl3dMnFQWuHUNzFreRvmFXbXkVGDDOnc + w0kytAYZcwNAa5QflEHGmQCMCSdCPFJQJ/uiBou/1zJAyGaWTJ8pVaRi+I4l8Ykace5Mu2xBF9Sx + LLZWMWhK6puUUq1S2Txhi6O6rim0cKVG2ptyHl0g7OEYmqQ3W72CWq1WmasGGi58/9K1eri+M2ag + VRqNWg8VDMMXZ6hfIEx6SR6vVi7dn+8f6r+p//F+RVmB8IdyYTBepe1AcpkWFA7jgmHylYJPqhLG + 9cFg9OQiYagPhlXregL+MWqo9QUKmCvgB5bQ2ygaL889zlFc1e8aNO8Ky4WNwm6BloqBfwsVu33W + tyRlnS0DlouAx+H5o7Ii4LK4qRBpqPqdKGjeFQmBF/wCraflQuDf4irgPoX1rZIaz5YAQ3b4v6kC + pn6RXX9oWfWqpdVWDQNVvsn8WGNFZ8YVKyxfOVyIJUYOjIR7mhIWlqZpVqNUB+t70xWFhCVeGFk5 + WoiR+qUi0hKbwxz2mZw86/K7jKH6SLQ27gsm28Za6jb1VnJGC88ZrDxUkVkdVlOo2h2ri/uDFS0r + CEmaip2KXcQXiP+S6hAayVeISWIdwryd2E2+NhVOmA7cCgxak8Fh2Nk+2W4yGEztk8zgLcTggR7f + zHVdjet2dPW/O7J8ZOPI7hG6aqRqZFX2+eiOvlVvdQ3eaphx9Nw+TTKYfUQWtZxA4yEdzOGSm5fO + GKU80JiTuLRXoWCAx1vJtQd6rvPNiNKFRvqRZEb4Ef8Ikgy+1o7s8yK6Wteqt0R0PYdhRnT0qOGS + Jaoyv4BJSwpSPFJOXS7Kl1EL5WX5RPlabX+LnlPspBiW88XT1u6JgveAwQhPne53VHUk4kuqnSGP + iobt12BdX7mQP1lFUsuvanMkjVZb9brDK0YOrqh4A55gNRrerO+xRtxmVqlSMmsFq6DVGtTKSP/e + ZZS+nE+r6UoU+tx+7yLa0fTJutW0aWlUqbT3RDt2Dc8j8TTjMomH9yb/RO1kvkc0Ebdj+5kghFBK + tgkp2VakZFuRkj17SrarKTCjnE2Xmgn1eHQztp4aUCNWUqMXwHBmZS7thTOYwEZDz4joXFvBppsR + bT1sDVYCVlYCJ/9Cfl4FbbnMP0lq1E4V709U2bomCp4bJZl9upQOvAkEKUK7odsWdptVCrWCWesJ + 8vr5WP+a5aConEONBRhdvAgY0X9SpKko+S2CIFgqQn0ZfjwEf/4Kwq6duBLn7ul2HnKYpNebNMB6 + 5Oi6ZHsPn5xprusxA+EYGVRLhOMLaJWR6Qxs7kK6jmsldejUuuSM2Fyo64mYMceIz8cco/MFtETA + fuE6yLL6wE8mlkug0d/yWlW4XsykKqbLoLg8bvRpl/P8g7O+xjKHiNETEC4Ln4wL80vmP5CRelTG + RQ//ikBy2WpAxafr0LnRX6IuuYJY1tPe09zs76nuoXpW65MzdT1GUInI4LoyVUI2KXNmPJeGtPBM + OlvG58vQOaRhiB6+h9LSPXWr9QAkgtEow8ium6doyN5keGAMYcx5CrcA0UtNTwnRuTJMYTGNZH6p + ErwJsCJ5b7G9DHCKZg3e+OKQk09DooTCABVm9Y36N+u7kYmwIBMBShvg9RoZ9TJhCGZBp9NdThwk + WXq0qHhxcc1WjmLNnpI0W0GVNFvZjiS4gziBJehrG8IKvSOzQ79jfHyHnnYtg38foqMGsvbjEdco + 7JDYJgZ7Btp6anqSSX9jdSPVOES4ZiI9DIjSIjsXWZB5yTrACsBeBYsTP/09gYfyinNjEY18IxJr + Y2SIiLhmxEiPhcHStJR8x5ws81II9vcui0B5mejfXljkZPnKEXyXWTlzYqSWeGyo7bBBjW66TJhz + ykFXlS+sT7BL5ZK8/MosGwDkeB/srdBPzea/PpT1amMQx8UgjovBI3sxzFTEeExJkOdOSRGxT7b9 + Ptn2o+NZHEND4wT+YRg5qPbJkaIPNERtSvXGtApHbxhlE3MbLFJRqBzEvVRGUbgKarmDPoz3V+a2 + VWbrRBfsqiyo2qlvmNtfeZg1eiw2j6AcfAAnulADDXKwpXuq2/4/aWcC3cZxJug+0A2gG0B3o3E0 + DgKN+z5IAiDBCyB4HxIP3RQlkdQtQSJpSj4iR5Hj+xpbsmQ7h8dx4nHGnk1s3Rx7/ZJ9z0lmJpY3 + zouz+7JONh4nfnmZUSaZWUdxYoJb1Q2QICU5zowOgmhUN7qr6q//q7/+/69jXUqDE0C2Xr00/71t + w9qWvQ9OYe4KSC/8v6EdHb7NG7Cj1RYt9+If8WOgFqOoVradeRbBzAyai5xSBJbPiTrkXxyoqVwb + xvKrYdmIJL3ql+IbF3+bb4DBkWAOzaEBFg0SqDsIDrS6Ua8bdcFfcy7U60JF6aiIekU0wKC3ulDX + /OIP8mrO2OsSAWGDd7/Kq4FadsG1HPgOtpcLXl8DTnQF+1y0tY8erLibSHWPRLZJ8+SI/A+Fs2W5 + dWAMWMR2EXGhLCF9EQ2+aOkasl9KBIhbGaaVSyHSVdZh3txQ9srBj6EYjpWuSP44jqBFpyi9pSBQ + Fe8013h4taKkwP+EUbzLZnZwSvxZhZrSKD9+EfrfKFQ6Ct+k0atx0O8x8EO9YNVosA9g5BOmoqV2 + ATPrO0G7eOXIrr9HbOCZ07BObWjIhgqScU9A/bqMDguoUSucmDRZUUsjeG22oM4+C8X3UQOKIWSg + bFSD0XARuTpgtcAl9+pCZVMZ7JYuXO6ODbwf+jCnllyweAk0TQYlVn87WVtnFTmMvFPN4qVvqViv + w+E2qAkUxf9Acm7R7uXI0kWWIzQGHZpV6Cl83CjoCFzFaBfi2I95moAyDW0Indh3sDxhQ2KA0x6R + RmSlsQluB4Z4PEhqHt2Sr2F8Z0TRZjwpxtFkPB/H4nHKdiY42/AEdQSfK69ySskdOMnbt3qhwCf6 + zhTByXHjySISZ+O/jeMaHJwftJ0pBmephieK0jXKi51ln5nliBT3Tf1llmG72l0Gy9scLqtvW1N0 + IOMMDhQ71mud9X5fS8yh0up1zbtaO7dlrfeNBpv9+rpoNOfF3tdoaG3SFzJFc+F4V8zksYXtWr2R + 89h5g0OoyaxJnNCYRFMg4A2AuiqCunqG5BE/0oCMS3VFOZOvoZug+Qp9KM8hvJPSRV9xz1oO6ebq + zxJHKsaSbLbsBC1VCizljr5SlMsR9WeLoGTFNJJd5cmyemSSe4OybLEzyoYR7Bm44m6vi8cEm5s1 + 6QiStRoMVpao21KfH2u0/pXWWef1dSeCPSFPnZPFr3XPDkcok0do0WjhQgpuJ6D/J/hR+seYLzF8 + oNPXmRZDmdfjMWeqA8gD7CUCYUGSyGg53s03D56YoYxP1bifZmbxL0SDX1Yeqc4EJQW35U01xqeK + NYz76SIzG8W/UIwqg18uKo+sCGuTIvyWWrRqokzKzSo9MSaA6ZN7rPm+hyID+9oMkaDfTJM4TlJK + JRXMuXoGB/oj7X5aqQQclNLqtZTgevLRobkBL0lzHKXT62iDnlK4zBOTE1trPGpOAO3ZC57qMyQH + pDwtR92cU1vSr6GbAajE0AfzLOc8ZFHjwVdMs3Vf0lT19azsB1ppTVjIFHylaJrV1H2pqKnu0LKj + XbkRP9XiPejEn7G4OBNDJiZbCluzVrF9R652NKhkpBYlHwj2BL0pJ6Nx1Pm9fXHsF3ILtidqE0P7 + W7rnhiJ+PxonVAocjHNEaV08LqY6PN7utCuShvLeA575MJB3HxJH7pS8kOIKuG2jjeNs/nl0U96M + 2PjTOp06flKES+NC6JQ4qz4jHKnEys0upRjUL0WWOXX86SI4RxEHYq5AbTg4TwydKoqzgvpMUTiy + IlNTdcTZ0jq6ybiiEyyvomOHrXzppD5UqPXn6lwUpdK5I7UN4pkzgf6Dnd0Ac+5XdHV6Ul4eUyBW + S6A1bKIZDW+1W3QaNXHqTPfs2nCwe3uG6x4wB1MOuHIeRq9hu0FfbkEGka1yxpxvISNoJxJE9Ogo + EkG60HWXayPgr8/WCjcIUiJroJDbkPXoxnzQpzidnQ6OnM4bh42YsfckE1fiGREmuxHzJzOz4iZ0 + 08m8iIrQ/UpF94q3IrnItquzct0BJL36421Xs+Wgjh+9+x5XTnzFvif5aeZrs4rTRfAFxpHTRcTI + gq/QaHpPFqVv+bn0LZn8ySL8HlDVIqrFq75IkNRn2VcBfFWE/e62SMV2+OdWwjPXLYSD/8rrF8JJ + svwO261VD+h1rraNaWejntL6xSfigym7p296oHdPuyMasIseq8nibttUb08YL9H0600NtpBN25Sy + R2zaeDpxv0cY6Iw0eRjF/7GY+IgQ762zajWUmdULGIkZ/Y3uYEeqxuRPi8F2hzZh9TSbTdlIorfe + RhLCs8kGriZgSKbYGm/pgAPMi2wBk0dkBBH28kns+yhG/Elan83LLWxCf4LYgW7fhFCIE7VesLAz + BJTony3H18BlU+uloiUvfQRk2PoWrDv+OlNrQ9XC6YcEYzVCyYRjrtHKEFp3Mu5yx5Mu7BdAMBVQ + OjGBVJEYBn5cDjscobDTASMise8j/wG0SdW66aYLFHtIuqvKuukh+UZueBf/QcijPFkZ7Ze/cHlA + R+Rvwn8NZL4bOSxJfMYD98SKt3BwrLMj3UDqDZTubPuseDY725IJ1c2E5sxz0n1Urwcm3suCf7CT + mtt1Z4vts1nxbHHlCatW/Kr84f2rFphWv4dVKS83mSqLffivwYPx8AFTabEjSDJW3mhjlHVpdyFU + eXSLx2Ou217bt0Gw1ScSQtPaWsNyLaCNvT2JWOnMzd5jggb8KdTHGxJ2v4X2to42yrWFHQO1FS1H + OHk5KP12hEY353WIXfdKYNZrFmcqFSSvwEHtLlWNLqB7pVhVomq97RNqY/npwXNjx2CD8uBRM42e + nmClEiwel6Vuor55tNZU/Yh98JFOX/dI0sMASegC4/1z4Gl4MOKXo7UN6IMw2gxoODVleZKZ9Twt + k0pVtDZjeRIobMLzdAVN/vyyVgZ7LjR0S+/QTJ87MHh0bf/hPt+jjK81Hm4NGuDr2g34tY6Z0Vhg + 8FBPx/RINDRwqC/Yk3bYUz3RcHeqZju82yL6B+wZcLeQsKZk+0CSgtVvlAjLgBghXlHJhFNB2GbY + o0uQBZ1MrlZDlkkmrOWi1ZwFS0c+YQlqqS2u56zc9lZrNBw0VzogoTOxbmv9ZMsyZ/XGgt1Bbz3k + rJ7ZoYiarzGUFggYg0SqCewqFE/QRLXJxNBBibMiqddjcZmzQN9D35ZovFuKRnNbEQYqZY2VeiMw + 62aMjhnj3PLq0e/ekJNFaAPUG8Xlzz/FmpHc4eR0EejbAK0IFc0YOQaM2aZq2RLCfg+vc5mUgAV+ + yAk6JUEStBCsKf3tyh7X4wyaVQoVqYOxCgXsO+hV8BQ55AF5ZMui6y+KUTGqscyjG/I1iCZ88ue1 + v63FajOnLFnCN0ud/Db3Aw7jTKeII9URU9tWhkzlfbXhk0U5oYIvc6oonctRJ6XlGjBecITpVLmN + Zac9KXBq241XZzJgMlF5q1jBnKBGrnpzW9Jic9ypIXFCqaBqghlfrC3c1pcLidmROkd9wEoT4BOC + NHkTzrpIJNefC+O3RQoxgWYYjdmo5TUEq2fcAbvLbA7m04GWiEmt0VLgE05DaFltyOrwCCaflE3C + A+rrZeI5pA7ZKLU64nEGYKuzPEM7pwNPWein+OnIF5SylF6RwpTf+N133pEI2+ic5gNPFS18nqef + KvLTysgXyoAtmb0juSrC5spaa4XR27RsYZT6PPoySZkcLmZi/VqapjVryDJ5Pgze0Q+LYaufVJAE + hrMmgVaRivHtqF+osQufJVSEQgF+fFaw1wil39TWMQpaL/Xp72Aw33K8nLVA7ZERuwaOp5xHjYdm + zDPiK0uAnSuHVsrjKVMuoBFfqULrXGWeRN7MgGNaYb/Bjls8erOWSO6ubx6pNZGszWCwsGRD1tUb + qgy2SyhdJw2e6CApiyxZ+oeevkQMLVbeg2dyYm8ChjQggXLcld7lhJug8y6VC+jWsTytFF0urXVG + O4fMyEoCtSSsAmTmpbirpc9lFSGZ4B2YgVRWQpHAvGCl2QNzGmyMCle8ilMGt93uMVL4awShZu0G + k11P4qcw/AFMxdoIA0xYyGhLOpVGCVe5Vei/aziNCrQZfJodPI8+p1SROHwOwMJ7wHO45PkPZJBL + 51UqyjyPPnjRZRLVJsM8+nBeQ5nsM0Y1M6O+Bb+1rPRWBpLJ8klVlRKWDBrlsPOGBnw5zKhhKcwI + XYtHwuYaBlWseVeJ6hxWwc6pFaex+zCSqxEEB4MSGKOlFSotdRYzMQaNAlNq6NJRDH1USYHKoHkW + ag4Evyx55NGIBglW8gvMXiDVuKYXyf3sigxUF9R4HrwXctafXVm2McgOcOhIxeGt9LLiStm/rXQW + XlshogPEvSuvfZt07V2rrr3rJtceiGYbw5FsY6R0kfA1REINjeDabyAYSi3+Hn2X2A4UXAjxST4c + hM+2hu0GtfzTt2B6GMKXl95DHP3pW9VqGPcv+fGtVMzo60qY89yuV3Koyuix2zxGlU5tCTqdIUGt + FkJOZ9CiRo9WvCHwVzV6DUGCLvKnrCtio2lbxOWKWWjaEoM1e3XxKvqyYod0h40yQZiwXYiIGLHs + JZoNg/vdj4CbZd+o8MMleDBvg3GRVni8WtPiqZvd9BklYzOabCyJciTvtdvcvFKtNnlr7H6zWm32 + 22u8JjWahhEFOPiBLWpYiiDAZO9jsSYg0LQQqKkJWijKEgT9Olz6GTqH/BzM2Wok+aTNdoT9EfQp + Pk/nwe8CzIdXNgEry6k/GvilW5kDeox7kNDyFp4zU6jiXlrwWi1eM/2YMxWPWd6CHQ9XalQof8Im + Qv4WQT29tngNfRQ/I/ky1clxroZ57NhlyuGxDBIM6IVXclekpQlYRfBYnpG6Ijh8A7riVtfPo7AF + xSBswaAIW3D1e1wUo7D1oqI7Bl9jC0GXfAA0p1WjscZAzTwF7vIwqBkaCcn3SMJcazCLoxofROAN + Rv4HrCZ1Hh+Ubq6cUGGpKx9OtLXE4f9DPYl4F/gPNVgXegGLY60Ig4hyDI6SvqpApLw6UDIU9NUi + jIxbmvfLV5MSaMT1XGm7HvxBv6rSqgn0o4DD6fc7SM66uAjotRNc9wqmxG8BGuNxUMsP43uwLxJH + q+XF5u9he4C8XJEqlrDlpfdQXq7UrZCXCreuOmIyYneTrFmvFxjSTBlcZsFlUKOl+1ccS/rx+yoC + g/7Pym+l2pXHWGks2rF4VZFW1K/M8NAtZXjoljI8mM4x40BPmM4SO67P8GC6UGTGoVOZ6VwRfP6p + MzykW469dvzzl29tgK93zd/acM47ePu6NXNDQe/gbevWHBkKYvyh7z09NvrE944W4eup731u01Mz + +ZaDpzZtenIWvD4BWWTxjxipCAKN0CL1DzM9j1nPI5yGnkcL5+1bwVCVyy1ckfJwwH6iydvhJxeK + 0kdQOS8JlqySlSQpmxQafOV5HUZSRtFsEo30H3mzjoABo2hYoeEEPUwvYlFDpaWkKXzLaVqhdQic + hdOQ38IIDIVyD3vbFBjtHwT124YckUdjE7b/Ur0P/EWy89g9F2hRzNrm0Wxe3ciZcDI+zmbn0aaz + 5DYE+qBAGwyXTYA6L+d8ktI3iNm4dApdrJxDwpPOFcFZAvQigfYUcNpy9qdy+AB4qlVhnORSVgel + FJz+IEEx6oWs1qRTKdSMFjX2jNXzQu1Afduu/iRN0ioFTqi45k23FDbcszVh7Zzb/C9YrYqhiF69 + Ta9Wcg7BKFp49a9bJoa7XIF83CoGRJK1m8DMQ8t63UJgcLo7NbX/1u5vqXkpon2kVMLvAPUzhjwm + 10891pfXDm8IDheCw8PBAg6zF+y/jOj4Vr5VaJxHhTw1sCG+6HYTA+PCPGo5S0zKrlOJq1lWdtiR + QFxeUAUMI43y0tkD0una4gZ3fLEoXQBmL7CArjtZ9pNKRMqeUjeLAJBSPCzZ+CtHblSfRgeO39F8 + y0vTXXObGjVKAoe8RqdGp7sKOzvd0XV3DH5Gw6gBhDL0TGF/X8CaHk43T/XXUaRaqcAUKmPzhkO5 + sQfGYmLb1qbc4XWJ4yMP72sxOZ201ugw8RaGdPlFd9vG+szmnFvJWo08gERPbksm1JdxekIegrWZ + GBOnM/g85vj6o92t+0cbNRhRN3oYSL17kVLUKfxIGJCulEvkXNzFzmPkhYBCgcTmMeKyKcK6tsZt + gO3NF9lt1IRim5RCo64O8iHsjlA5QKm6LBdkYclLxXJRKYOGVLaS42bJeJde6o3lLInQdcCEelCX + oo7XvwkTDQguXrkwT+u1JBit1OgfCIMr5vTUOnRvMqbSPqwUQ9/pcft+DINZCYCNPwYdzGxw2u0s + 3q6GMfsqRv3xIx7c93FJ9hxDpDwwbUhR7mEN6P+6GKwL1mls81jPOUQjzqPI+aYmIgN3Lo+OmZY7 + 1VJOmOVMGE2w9MUiKB6F5S8Uo2Mw3+ZyJ1qRd+16H6ylNaHlBCIwV4TMmviBrs9+Y292z0jaQBHQ + icpX2N2fOzgUcw/cvtGZCHh5u+CswRxqHU0Y+FKLq9c7/dX99RcPfm26kTEKhoCLtbBqwW4WO/f3 + 5ba1OXBCYfVhrCiqeDvvDZbOKPDM5ANw3D++eBX/CSGCeVw3slcaPUOt81jnBY3Vqqmfx7ouI5r4 + YmMj4QWPe47fUphHjRUNsFwpFZu6uhEIFCgM43GRC0V+CwHLL6uEldnpFeXw8RU5AZWr3Ggr7sc/ + SR/++uzondtyfo5PDN3xwuHAYHuCU6GkRk35s2vrt9+3MYJbC2s3Jw+c2hp4RWgcK/gGe3JWV35H + vn2izYF+ZcMzt/cF+4sPPb993Ut//fDeFrVOz9VY9VZWpWN1a0787TjjEJjs7ocnWncUPFqzU3/i + mwditcO7Yd9JL1L4cdB3nEin3HdYbN95kjRz81j/ecRMcPNoy3nrGD1RTgqyNL04R1jhZxeK0ofL + eUEqS8VSBkxZEso7HRzHCTDhqSV1gsfm8rMoif5q4YyaURMGPfZvOiNN4j/W11ituj9dgcOGUsdr + Ff0Ub9cHfKTeDtcKdoIW/aGU9TmNdMm5Hv87EscscEMnzJKnHIzHYQB/qcxrWCdQ8HmsE0yW6puJ + yIJlS8fCUuPKE1qpx0uZu2TnRgYUtEQWipYtRMdCVcNmV6n7hji+MkkzjksWRKj6zZkMTH9ZiU/L + 4D9sveWFAzufnW0NrTnU3bIt76rd/YU9U49ti7vatzf3zAwEfzJ34OCcLbupdffhiKdrb1duIue8 + /97P3YcObrh7LBYauX2odc/GAbeza3g803HbWH1i5FBbZsf6Xqenf8MObHL95NSGQEdr1lF/YuG5 + +EC+zSW2FvqikwcOSJkeEHweaJ4kUkB2SxJQUwslAAadNQMJuBTIl9xuZQYKQBSqGuNZZfWoUF47 + lvq/O18CCkUJhwTQ/6PjSkHq/8rJ1f1fsXpIaFgZUrbKTonPG2rXHXtpJjTcWctTClKjUgfb1qUn + HxmLYdb2wY3JQ6fHAqniC3N3fGUq+LK7YzLfvr3FbmnaWhh8FH1z3X979pE9LRTL8zU2aI1meXbg + +AvjTI1J27TnkZGNX76te+yr7x858XIxkRzanWqe7PBJs6he0JO+t5oJuyQm7JKY0CwzofmGTGiu + MKH5L2JC/Hu1xW8cv+vFXaHkoW8cP/Hi7tArQuv+kf597TVCi/TqwPTFMhMe+i5kwn84vvmp6VzT + gSc2l1+BxH4TiMKzihDQayOyxIYwa57hHBwN/iICr/dsDQHJNFQI66cAD9+ouNJBdcbr86AICcss + A5X1p1dWw1S96wa4KHnB4c+SlFa5MA6m/iQJFBKqW8GOekEviHry12CaS3RCj1WYO1Nv5dTYv0gQ + aeYEjia/XYHIj+9Uc1Y4FoFZBf5l0CpNsrUZkuTBSwkP+Iuk57E7LtCmBNy2Jns+PM6mqxiyLNJV + AAkKhmHJi0VQlEyvQMeySN+AG/3XZf9YxsYvE2CkWkjrjIwSpxgNKvSP1bKTO1t3DtRpCVpNUKbc + 2Fxuy71bopbOI2NXsRSgntXImJsc7vauGRODLhVn560uk9djCQ4UCw27D5RxEUX2Alo8Bepgc4UW + a7H+vHbtOv/avH/tWn8e1wGdfgDQYjPXzJkyEi32rYsuiiLRN2761LQond2XkWlxnRhdLEoXWKno + b0aLmf8kLJ5qO/LSwfbZzU2MisR1WnV63XRnYVenO7LujjXHQH0pSVqnnpVQMTWSbpocrKNgiiic + UOqa1s91jD2wFaDiWHPH9HDsns2P720wOhyMzlBj9Nqcfqe7bUN9ZssyKLrzWxpCvRmnG4AiYzNx + Zr1G5/XalkFRmRo5CMcCEWjAfy6T4vZlUjSXSRH9EJAi5doasMWh5Csg/wFdWH9DUJTKsbDgxaJc + EijG+r+YE/F/NuhPqXiXlB1g4U0aTLmgPzp6VWEQY05X0smcYk2lr6ClFvQ7qzjRYTY4rIIWHwTH + oG+V6uMHlzhxN9AHT0qc+JmVnAhnIL0XwQyEFzKvoc1IFGkCCAjmD9GxVRMQVp6sVfHiBXCSBIrn + iu4moBwuF6Xzrp93VM/XbjTpcJM3hcYnu0+cLbYU16dZaOpW0Uoq3LO/t2NmJB4YuXNj62a/BI2t + cJZm0JdqPH3J6Rems+f2PTfdpLcIWi1n5eB2URaHxVnY19+2I+fUrIRGAktPPgT6wkGgF14HzJhC + epHvynXUv/jtvJnB1kz0o5GjOXRPDu3Ioakc6s2huXmsI2/Q2O2az6TRA2l0II02pdFIGgWjVcel + GQQVQaXDqDh5A5pfXQaXQZIaVDO/+Mc8Bd5omhaTScIvA2jndQAa2fajSGTbtvekGDeJRaXf4O48 + EaCSk02LRXA63NBNRtLOT4Gk5KdB0teBwp0duXO81cfq40O3vXDYN5iP6sCkDVXSatqfWVO/7b4N + IdzavmZj7f7Ht/i/ac4AKO3vAlCa257Lb2+rQb+24dk7VkIpo6e1DK+TsJTTDZ54sYylD0407Sh4 + IZbe9c39seTIblBpO4FMvixltlxBpUZApXvPI0ZCD6lUuCGVCnqJSoVPpNIlgxf+sgSlcYIxe61u + P4eR6K8XnuB5gKT/fhMkDXr9EpDiyCjoLa9KPNqA9KDPy3eage6yHEzFBH6B+2Ok58tH0pUjqcqR + VOWItGUit7yFYp+05QLodH1oslImWXHErT4i5eRIzgP6tRiC0nYcQcnNt/y7KG9+IuStkI1BdcOA + S/gDUnKjVKYR+n4aa9A1jdKJ5YPwxMZXsQ4EWfzRedhtl7vx0p4Q5VxJ3y5He39bypVUgP6oFLxG + IQkuWqjcdKFy04XyTReg8HAU9NWk0q1EDCB61wpEL3sP/0h2V12xUYRE7cvRjlAekEj5D0zA20pY + YhLId/2lIL+Ukuc6kn+1ZfaFg7v++nBTcOBwV8s4IPmdEslHobNfz/RA4H/XNK5LF6cBy7fsLobd + XXs7cztanffec+JudHD93WPx8Ojta8osPzKe6bxtM2D5w7n67ev7RInld4Q7kxZI8y1ZZ+r4wlfj + A+2tLmebRPMHwdg0CkbvFySa75QtbStpvuOCDw7fYCzIq8N5wAPKcDXSVw3ey1gPx+6wdIqmKOYh + A4CTVpJ91ch9Q7hfkT1VcR3yvmBIjhx7EdB9IWFQAT5UUeHcSO3kw5ujWPr0RPGJLYG6A8/fMvLZ + 8XyAe9ldmMi1jzfbLWCK6+/vaEXfXP93Mt8bDC4DTIHP6pn+z/3NuDPZvPeR0Y1furUbTKseeq4b + 8H0yMbQr1TLV4aNN0o6Re4Fsvrua8Bskwm+QCF8n5/XV3TCvr66S11f3F+X1xd/N3vLS9KGvFdNN + My/NwNdvBnummjp3d7gDPVPN8BUT7nrr8cH2e77/yF1vPTaYv+fN00eemQg2HXhyHLyGmg88CcOf + F/+IvqsIIK5yhk5o9eXPuySrb/t5u5w9cuG7cNiDrXhOA42+7ReK9nLeyMh3b2LzLe8KbETfpQyi + YHYaVb9gjRoCV1Cqj2jebNMLTk4pSOuUEB8m7qIwbY2ZM3MaxZeUannFEtzfOOD0iKIOaUGmK5w+ + uWzx/XzF4pu6VG8i43uguTd9VkrvX1eO/7yxuTeVVxflM6CxN32unOe/rhzdeb2xt+GTjb0mcJMq + rWrhAZ1RSxKUXvvDzs31BnOsI16/PhdRkzAblkLFZdZOpjd+djRkbT+y9evou3qum7Pq1SRgRqPD + Yta+3Tk9NuhyN0cFm9sK8zhpDZyWddQYowO7sqldcw9u+moA1MkW0N98ErffXeH2xuu4PZ83VcD9 + IwDt70Pm3mP6SO6Bn0zseUsZ2T+CuP6+hOt7CNNHle65ktXR/zKr+5qKX5xs2N5XywC1r6HpcGFb + a9OWFofYub/7Fjixg9t2FlObcm4+XEjUb+6KwQBHWKFsA6jQtbeNhBzpwVjLRMGLhntvHY2xZiuj + 4W0G0QIwzJooBMNdcQupsxj0Fh1hTXaFxIaQYHVbCZ2FZ4yslnHYDZ6Oqba6DR0xCifChS1Aqv2L + H+P3KrwAUJNlq27SxcyjixcCBIEk5tEX84wpYEteU8RcLEu5dlNy8s2EPgt5fQWs51lA6slrxaqi + QqUsAPaKl+Yn07oDk3D9Xj3zjNLgNMGooFIUTA8JOK9FHyQNzojDHXdonwHiRJaexUpPowfQZpf7 + vcrC6XsEWyPo7YJZh43QOkqSu4XblKwFG174ubxT8L/hAiChgrxTA/TeeWGJ2ZtkZm+cR9m8Jtr2 + S9AporuEqv50E1yXTmCLYtsvi9IphLCiHy2P9zcgdf/15l0ok+WcjrjQNffFjcmNHTGttF8SkLJA + dri+MJF3PnKfNehxsmaD1Yr+q7y5q0ZdmtWarTX68cd3ptGNm+4dT9CcgaI5K8+adUrOxImNQ7GJ + MZzABSf693abSjIk8OrSv6I4ikaGZkCfOLz4G3wfGI3qgF4synbeZrhNQ9nOa8jziCbzQTzOE05n + 3nuN35P/fXnIB4/JXW/qNcczHxTLxXnvtSK/h8j/fkkLlM/51MZe/wqw3le387Hxvtl1TR6Wi3Tv + f2yHo70pwqowklJRrtpCeO10jwczNnT0BzZ/bjTw0uTemtbmlNHRMJJKra0T0PWD9+xocOXGZu7r + 7/mrz8+sSypphrUI0HmG0lBNk8c7NSaOSoweGR7fq+ZMup33jrjdzWthP0os/lHah6WKqNvLRN0K + iZoDI+55YRe97wZEDT8DRA0/vBFRp1YStQ4nVUTpqEJn8lhcAY5A/2bhGsfpWexxDUcT+E/0dotZ + 8/E3YDZdQsPS+H6/1wvXcqCFdwC05X7QlpCoB5CjsoU3iWGShRersvA2voYZgTIvwGTEVGOhNZ0M + kkTkHcuennfKjSvlxLiBmddQKW2JvFO07CF63llq25WZMD7B1itr/GpELLfv/sy+p6emTk0lnfkd + 7QAHLbHxh3eM3bMpIqTWNeeBEHx/Ylddf9JsSA41T20SLQ1jhcKGWoBtG1s7tqSNKN1+oD/o65po + iQ/35p2WbH4g2rizP+IrjDdG+gvNdntL9xD6m9waoy/ldNRFo5bY1hLrb6xNWmsaUim72Bg026NS + ZMEoqMlBUJMppFuOWj7rBLNS/gLCskhO2qgmZDRamz6MFz7wepXxPdZrytWjRpX51wTKxps+LHoL + HxSl4krrtfJ+SDcgRPLm5t8qQpSTiAzqAh37n9gVXtsW0JEkplBShNqfXZMcONTvw0yNhT7flhPr + AsmJxye6p9e1+LgXHdnhutSalGVqt6O1JYVlc/fffXRzWsOyNMXotUarTqHltA0TJ3q0QBTio0e6 + ez8/lXW2bJp9IDN1/6jH07w2sm0PxcBMyMOgjoZAHUHvhbaKL00GdCsRM+bVGts1bo/vD6vwMK/h + bNeK3B7C94cbkKHipmQ4FB4/faDr8PpWPxfaevrgvpNjoW9YMyOZ3HBCb0uPNORG4hymP/ZPjw+B + KfQdT2y88x8fH+p/+J8emvvKznhb8cwm8BprLZ4BkvwoEJQooMM4MlSx/+ovOzgOEWgezH3zlzy7 + Q9yHZd6CvgFvSEoPugfweQ8skaeKoAzJfbhEWFVuAkvW3/qbWn+jhJomF14laBWhUNPE/32fM2oU + cAxDVQSY3+sFh578lhJ82g732VEycL8dVon9/vNqlHGaORNDE1/DFTh0wVd+PAeU3eIishs8VQq0 + BYn/QA13jZkCPBUHPEXib6thf24C41fx+vVctGKle17S/PFrisin0/xxoPkj/wXNL9vpijxzl5p3 + mQUnryzlaBYwMqEm0TtJvSPqdCUcuru0xtI8Vvo6uhUNu1xvV9Jzv00wdsFQI5g02BTNyapwYb+I + DSy8A23AQOfHqnV+M9D54VRY2uegUdb5TZLOj7e973YT8V3Ch39O58ebZJ3vbnu/KJ1CCB9+ap1/ + ozVdSemX7XOx5kNfnGzZ0R2mYcCXAih9d8vW9qZtBa+jsKfXWRvyQLUvwISbailjXWnc2hnc/viO + JLp+471bEzqDQa3hrAbGpFUagDpLjTQmupMWhQI3ieg8UPsACDibXl36DYZFhmekmJKy7EKtL0X/ + nY0ArY9fgNY4oPWRPINoGn8ZjxP+D4HG/6CiFK7T9ny88ZdA2xO8/0NJ03+wrA0+hf1spV/6kqzH + tj820T8z2uhi2EDHvscnfV0Nfg1JoKBzKJViuie69nCPiIfv27j12KD4vCHWn+maC9syI+mGtbUm + dD1MKuXJbZ29u6/jobtv2VCv0jA0peU1vJUhaS2dnTrRawknNhwZjvel7AHL1H2jXl/LGqjltwMp + aV+5mpsvr+a2lVdz0+etN9TyVlnLWz9Ry1et5raDhyFKc4QWqHl3gCXR5xd+B9PWcjrsKS1HLSn6 + v6PBdFJW9BRv+//EfQmYG8W1ble3Wku31Ita+76vo12a0eyaffMy3vd9xRY2BrOYxYYEskEgCxBC + 8n3JfUlYjR1jDMMOYRK+QJxLAgGSvHzAu7kkuV/8BRJeuI9g+VVVtzSasTFwX957A1a3SlVS9alT + p/4659Q5Rnmpp4hFcPzmw/ELEjmir77SJ8AZwkiE4OgxLoPXZYT/afMooyFBdJFURdTmu9oyiZCa + iv7Kur33VepjVvp6bWv0V1Xrdqr31So1Z6VXn3OhV5/fpjv/J0+vumlj3tuzrqd1suRMrvjc2tXX + Lo7uurBnfa/3+dXr160xpydaly/3OcvLO0vzcrZde3fvAuavfMPfv3Ugu2ik22lr75vX0rllNBEZ + XFtafkPW1TW4APyxd/78iqeQSVojm2vmYHs+67Bm8p2BiUWTylrVo/D7cln7A9nc+CBHdCNu56L9 + /x4IaMpvt2y3va1pZva3XmlXOD3Q/+/YhFt+u9qyXWN7u76Af3LjrWqu8bZHiA/tvnVzfKwzIuhI + NQu33W0TuUUXjwaBqdg7nthwaL4/te7mTeMXLW0LcPc4Ib3KC3JmKTNRHt5Ltvff+Jn9y/M6TjDY + 3SY7D7nE0LHp2iEEYtNLLxkeuw7Pg73X57bAlTvctSCWGiu4gnWfPtqPYCExLvOOmcxANvGSmQcJ + xjEFmAf5JSF4UdLPouBeb8n+LTz69KEqvwR5fjCNLLLn0u+Yz3br6z345DVXn7is3H3wiUPXwOuD + iYX7x1deMe6PT14yseKKCT953W3vHd6w/N73/+WO949uWH7f+9/Vf+WF6zrnf/HJfcq17tdHWwk/ + UZDnqZ8UKzqryOpZl5yEHlltT+JV+2E9W3EpSeibrLT/J+58ep1q+FaW0nusRuzOB/dXAIU0qnvz + Qcr2EFfVdTtrZnQ71z7CiuV2Wb2TxuqdJUi9E5NT0zfUO3PtsY/IjZCSJ60oeZZgJU+snri+oeQ5 + l3FW+gROfcg6W6479X2w8oI20QV3TR0bRzMMfGaaVOvEjuV7etZ/eV3aMnL9hSfJDDLQjqOMvBrB + YzF5rFYDYNZ+7YrNyeT8jkAg6teKbjNnFTkhHHKU1l451HP1V47se1VnVCKvUQcglZqstMWztD2r + m6y0LLbS/g1pbVBWZLaRFfmTWWlZ2Ur7N6z2wemP2ab0x/9czc+B9n337+u7aEW7qKUpA8cWJ/cM + 1x36DtSttHsbDn2bxgsGRfMjlVbs7VvzxRmHPrBr0Zd2dJo8Ps5g8liCTu9cfz5eE6isbEP+fIG4 + Hx1tMViNvNEfcmaW7h/pvmBRO0vS+aWyP98HKhVtwvhv+wz+M9Tx3z+OW7CFFhJawXWLmWUfCQGP + y1ZatsJWm2qfCwWenePobK8+lcn4gpxy0Kg9/XbDq+8F2uRPe4I5L/eCJCGvvjXgbnBdzFt7ox7e + HfjVgtsqeV1OkfyfWoNOduz7tZ989fSEwmW7aA7iwMvqup/pBg7MN3Q/LRVduudvCNQtss1mrY+A + griNHkLBv2EouAjZamfz06dGg+oZDRD28OvdtTDDaVQU8vFjYgPbRs7j4yd6fWEb8vID39v9vb3t + gtXK6iWXSbALWqvLFhjYNd6zvturwo5+vN+nM2Kb7e0kCUBp8xfgXkHx9CPV1DOE7NP2AXUQ0q0J + BS1TUFAJoSC4B0oddyxil50DBaHPIApCH/5TfNpU00a308794+d6QUupDciAqJNcUiSCTIiw74pP + G+z7jwgC+2z9mZqCkgX5bC3DsXywVf69lspf0dq9BA6V7phm9gjjLG/YDP9eNVD5K17klyAzju7B + quZcg/r/0EeLfGzJ4e/etKOLFcxGt8PsFNTYR+vutYIL+WjduBj7aH3v3y459EPZR6tr00BoxkcL + UkIikoDFlLDPCUUbroeiTaEolGFkL02BpiCzKGKzCcU/MiFzpsmG7h4nU2iDLwe48ynmVp8S6dmn + BEGC1z+iUxghFDmATFV0jA8OSIWgUPDWig5ln2AWMiSB4/PwOAg0NpE+g636BEMwqRanjEHCTRhE + NALZfomC7whvrWuOEoyNmE3xbJ11kBL+OJACB0vVhFFU1POZC3943ZV3b09mqz+89ip4/SHnTHbN + zy7b1W3x9G0bLS/rjtl05Jdu+/uxTSvuff+7t76Pr4c33XnZsjb75E1PVL/64rUdoYH1F99A1P3N + IFZJAz0ehVDIA0JuEHKBoBOEHCBkByj4jhXE8egYfQKySKOMBWhAsoBAxCfiSkzBuELyuBJ3Kq6Q + PK6Em4pPQSTEeWyokY1Fr6yo2J7hFduiRcX23FT+DPoKHGpJB1t8VwQiUoX0Hg8ujgtTQFOHJ0gb + ooQ/OpmcThbexbc/VgzIYN1MQGFFVdJ7ogq/Qo2+YwapnEtZ8k93laNev42RXeUEBNBUKoCSzP3j + FuQqp3jKYZT2Ah4TQ7wVJD0g7gYRD6hM1V1WKsCCZoMF2/QtiJgWyM4NOCePSPtj5CGClUnIorwS + LIp5/YlhHjLNK0ivbopfhyj5fx/0zXHJ+8eKC9qNrtJkEafjQpoWktbaOlft7pRB3+f2niQL5wd9 + sYDW6DHzFoEzh4I2DPquuuXoxRj0Yb3MKeprCPUBJevbakhoFyL0apDTQlLmkNjJYWrnELVzcMGp + MAgWLrBJYH4FRfCKwCoRFMGrgRS1Qj2+Lm7pRC2dynSAMDJ1gtCySjYqJF04he05ZSZxaLglOHhc + J8pI0FlBX5LpBHhaKNND9sj4FGAUiagkjiH2SsP3AmNTFHze2D7jd4HCE3QClvq0UHUmstj/F59C + Uq2VOpbtrTT7FIKLV92yvc3s9nLYqdDlC0O0uizftrLShFZXtcXQ6ZMYdirk4fZAgpySXnqpglY1 + pUnkq5GFCORlGa0CfC6u0hFOg0gKRFtAKApCERB2gYgTBLH4DNtA2AoiFhAxg4gJQBgBmSREg5AK + JJ0Ay1KjLEtTFhu8sfgEJYeFnLvizUdQbgtXOi1Mnfmw4oY1BDTtBcRTAgoCKKBFUECR/4THSZGI + EipZkqrgAlZP7lNhUHYfVTZzfhiN1jDEBErE12ReRLljcOKy+syf8/fPBdvUy8g10iRH0T79H3rB + APd2jAb8kpY8LR5/ziN8TTTX/kUG2xf5I7V36kEAAYQeHpuEbPqUER20pVFex58EyT+d7pC9I09R + t0PU2EN8KMvUaBuItuKQ9xSWqQ/LIrVNkZttyKOJhdOq7TFI0xgcpBgsjaE5GOMW5vfmD+WpvBsN + hBsNhBtPbjea3O7HyAJBwG9RUAPKuERUpCkUAF8A82Q3HojQWzre86E8iXTLHGC/TsZ9SSC8qszO + 6XWvyBNVHgY0Dg3PzJaKWA10vIcyJLIU/razAD8Om/1xmP/j/TNb+U/jnwm+u/O/7e0Q7TZOLzqM + InLQdDt8gzsaDpozYF9x0IR4WfHQhHj5BYz1t8CZdhRj/b/KMlmEMpYR/WCeKMgY4Y+KEMRwQ1TC + JsLrf2KO34/DMgpT9VYCaiUorQSlFf6YRZEfLxXQ9FQrQR/9da7wgyaHuNexI5xZQSVN2WPwd8Lr + mydgG2xynbUNkWEJHsGkEqWxHqxR0c9+7M4kMpOE9yMcG2mG08mujTM7E16n7ExicGsm6ZSdieLd + CCn9M0K2KJ6i7lJ2Jn/AM0SKp0GCRpnn4xRIRECEAYNIWPkQSQbhkmior4buK3OgPTeWuyBHJXMA + Lotwz0pwnI9ABnwsyGQXw4fQTOhEax9s2onwnBE1v7QTtHYOd27vpEKdoHOKTFa4TBiEK3/1+TSt + 7yXQpkirbIoUrSd2msUpFdcpfrP55rkBZ0eF98GtEvJ4g7umBN4uaRvbpfOqRM/n8tZa93hLLupr + MemQxxsb615c+AQebxM3kY8tPfydG3d2soLR6HVYHBzNG3l0nsWb7dx+05Kz/N1KnZsHwyk0VqPk + NPkb+g+kRkVDZPgtWBIkXwSX0r+HJWqlZIL8BbkD19EoJX2w1SpcolVKwuSL5An6DViiU0qGYJ2l + 9G9gCaOUrIEld+JWrFKSh6024jr6xm9Nk3fgOgalZBCWXI9LOFSC93dx8jfkPOyh14iFdBzHQnoQ + xUJ6jj8QfI6++qxYSM9V+QN08Lkq/Ki+JQqfvSWapbYlfxNdfM3yZVdNRmKL0HVh9OuOzGBLfigh + ObODyfxg0vjE2lt3tZd23LZh9W27Olp33LZtyd4Bd3R0Zx+8uiKjO3FkmDNZcCk5Vj+N/SjhB0ce + wkrbKSAdd11BX6WcxpYVt8ppbOmhKv6ocRqbPp9n3qVaoxMFeNHcxhkZZE3UPEaxEJGa7AbVlEZH + Q+Si05D7JzUkg46+Ghh6L1CRgFJpaNjDiTOt5A5I01ZZK/4opOh7J1L+lJ8oTJH9FUZnfT12QF98 + jrpSPjhT19Ji2hpi1ter8GOq+FwVVpD3Ori/6jk+dx95UMZC7tBztQSLHD20Buab+e4AU+kMd6Z8 + WpVOTamNic7RWO+GHq8hvWJsF1ig529xe1R6iyhYJJG9Pbug0mrLdJksJjVvFSxOo93M+coLUsGh + ZTsHt3nQGPRBrlkFn3BB3c8uBX5ZMQyPhYbLoeHhUJni7FPgbxUHwY0nKhbHaOLoS543PaTHQ2ef + 7Ttg+ZHCUHgRTbafw8/OOe5JHK0SHsFDWijYrC/7bLXvAG35UYPhlPWyPXuOMzGtc+Fra5PHVAO7 + qhF0JVclF14ynJnX5kPaU0av9uUH4vMW23Kj2VEtgxSEjGZoycqu7lBvzg+3iyRF61s6RyM967rd + C+bHhoouc3lll08vihqWtxotLqNJ7GpzZ3yCmoM7GJNe3d+ZbpWsks1tMBp0equJcxVHkqNbBZJy + 5ypwBobPZMkT5OAcmzq4v65T/QyyqdvSzyqo7QrmqvPZ1G1C+tlqU9U5AO+TnX2hCuQJveEyrYAn + gbr2AIpCQdIaNXDDkQ3ZXTG7/jKWq71NfvCh1eH6Zj0K0DdV8Pl4u9nEgEfUGlimgYtfzAe+VcM6 + jCHINUvJXojt1tZPvlxX96IDv6jwBBd4Cp2Pfi11ue3ZGRaZE/BK6gg8hc5Fp1pfq6Yup23PNrNE + MvvpzrYoMc3IpakllwwH+0oRvUqFsrPSGnu8NxPtS9tMyZFCpOgw8pIFXAIxrooz1H4rpW3DO4cC + ucrmgaCWExkGbn/h2q3hjRwfaI35sl5Oa7SA+VaTlrNybt9DJPB2LkPr9xpIgzvhzEkTFVmDfiza + NgV++BBjszGZKXC0YiUYnKz7nSIoHkkk6MAz4oGup5uosW7fHNt5onikCiuKgWeq4gG66+mPoEdd + TKg+3nZO3hkar44u3VNx6j3FhRdNWDMJn16LZJ7WHsq6ywsLNuBb3Tm8octxC+crRlLzPVKoLRwt + Bfh024aRWNuWL0xmt21a1hemtXq9xSyaDbRWqwn3rciZ3KHKqu5AKSjZTEOrW62WcAFyRh7OgY2Q + M7xyZMpHCQH8VfaLA++hzEuU8TXH5exVczXFFR3lML5WxR+dzydOQWPkRorSqmpvUgbJY3b5eAqk + a1826Ck1owZ/gYiMJlWc2WhkT39Dq1NDoW/Qkvu9Lij2tbTBiv3i4uQdcOy8RAvRRRySV8sIeIAQ + CB94oMI4WLdDgP9pU4+DY3AJbQPHKi5tMk8RQSFIvhMEwcPmA3yHt4M80wE6DlNoTNftQ/8+8jQ0 + bGwOHq6aD1Adh6tUY1zrx9iUKKWzzeYWS7PZfJbVnLzjOzf3756IrVoZbouYAoM7Bge39HrmjS1b + d19Pb6WH9+fD++1StDsWLgWEsfnzxsDuC6258fzIlrgYz5T9LRMljyM3lOjdFIpvAgPplmzcEvR5 + hHLtSXs0GJAkXyhqLeYyOIo2pNb1kFoIqW6tn5SAnI583zrhTcUS5SveCnmmAipH0AHoZ1oO2J7W + zGb0Ju83KVA5Ih9+fqbackBje7qqOYvPVXPUGHM16mmqOTjj9XpvcXLvhKct7YdAnGT1anu8HG5b + VHRQQiRVcA9v6nKGx/agieD4CmkKl0LhUpDn/MVIct6vs9s3LusLqVmOYfQ8G7CweiZcWZ7XiQZt + sG9FoW3jSLy85QsdfavLdku04PIXg5IVUqV85l1yG3n7DN6qGE2EhxHswH6UP+SFPHKU/gwkAWQL + +PjPvvKsgreOVvlDdPBoFX74Sc9BkNsCw7tHx3b2e/2Du8cW7q44bhL8reFg0S9IwVIgVvAawMj8 + g6vy6RXXTI5dvbrYuubKsfKKDrervKQ8uKZk9nQugXMzd+YD8FnyaxBvlet462iFwYDrQ9ch+rpZ + aKvCILj1YRV/cN7INw2s9Vmt6DRLThFjLRWAy8jjKp3BLJjtPC2iYIokiun5nws0lM4kwnJGtQeQ + AJAqGmGtLshqDkjPVmJpHWu98jDCWikEtlQVQSdYgfVo7JDBCwXqUepaRNs8Jm6TaRyhrqNVWIkq + Hq3COg3UFf40qMthYGpb9HB7TapZ9oZw3mNoTQdKUQdE9jRFc9FSXxBS1inGx9o2ADdnKLnsEHVJ + vNnI664MFtMt9mhekBBwEE0mwWTUO/ODcX/vwPzUJEZdKcg7AnzWRcRX66jreMUwOj802hEaHQ11 + UCiW5K8qPkJfKsWFLMjeN+CNg/g9Xp43eb30wCGvCZjuV9gLo4KMcGof/L9un5xz1gF+y0D2vqo3 + fk+1/g206f46C8pfMOdAqeo8OsTW2cSb0SBCFCbERrf3BHqLYV6t02ldia5EMOfljdGeln4NIwfV + 7BsZL7a7i3G3WgWhGqBoJtQ6ECkvbnNKwYIn1h23PJoaL7p1nCjYHU4jL3KC3S/CfbcBRfznJVZV + SAUzgsSr9BLH8notI4kGe7I77M7H3VqVI4Y9dk1nPiC7yS9jNLZ1Bo19ro7GDlWMlqjTmwbp+xSU + dZC5bgaQ7Tunl+N91aa6nxCRSU2IjEKIrFvPTmggIkP2idr/QMZroNKo/0xx1qDNFbUzE4zhz+Tz + P51yuPYhTwAKvuxT6W2SYDEKDNil0sjBVmv7rWCo9ksCr7rvkhL5eaIs+yY/SuTAoROhllCL3jkF + OctG6NGcuRvCbwHyx5H4NV4LsNzXEE9IRu+bg808xbursH48c6Qav4a23NeQV+eNVhOZBc0ss5CZ + FJ+4oJLoS7ugEKDVap010pHyFiOW0bF0u1XkJRNYyhr0+tr/kjJC17q+wC+KSzq8OoOBsdogIlPr + eb3BmXDni1reBBySaHO7nTcCYM+OElhD/C6ZgjMKreeyf3a4gKA3Y7EwcLDvhzRg0ES6KxajBR/w + 3Q1FdBmU7z0XDRrrVCx7VxXW5313I5ldvvcjaNDQXZwTj0Wa4Vgq0L+ha3Bjt9szduUaUzLi1iNH + D7R/iTtyAwkJeBekuhcXrDdmurx9Lt6TcrmTTu5XqSW94eTk/rH5N2xupzUsKwqCSa/SaNSe4lDE + aPKWxnOldonPj2esRl9Syb1C8pAjZs4ngJcVHPZqRU+YacEIjEds17CI5SGzz8JitM14pIo/m4XF + lNCds44nwB8htfT7FCuhCAwCqQJ07XnWYGDBCZ1BQ5FLDCbRyNT0SPyrdHotOONwe2wUa4YoLAzH + LA/HDPksDhCX1H0WrydMRAhcj04n+OXTCfnHwf3IZxEcrhiZVBstREH0B/ZD3j7Qd1fTAH4E8oIN + 7NEfVO2H6L67mkawfc4AfiT2QiG7Zx1MaCXzvv6tg/2bKj5zpBz0ZANGZ+f6gb41Zcdo19CSb6e7 + OnKlLlPYKYhCoBCwxryizpWP9ZcOx4byLkuyknBlExGB90bT7kBv1m1LdgSLC9zexUAVTMSD3pSd + MdudtRckj8PB6W1Or1H0WLkk5PIgpJgPUiwBuVzec9iTU+DwQ4ReT5QQl1v9XghI73K5aMTs90Tw + QnHPXCZvxmKujruqsHoke081AheFe+byODh7OZitsTsrUrbPO3rFSlcx4dLDPYPOFsz4Un0JifTN + b+leUrAG+jb2Dmzodt0keJMuR8LNs/aYxzMA1o9fv61Dw+oNIuezMywDOTtqNLlLo4m0zPztbeMZ + k+hLOpxxt0FEWroyeQW5jXaTGpUJioDPw5IceR34LG2HJWalpIv8POnAdSxKSQq2EnCJVSkxkdeR + 3bQJltiUkjysI9GQ5VV2pSQLS1K4lUMpCcBWPK7jVErCsE4e13EpJUFY4sMlblQCtxfbidWqNaoF + hIbgCSvcf0SJDNFG9BIjxEJiBbGB2EHsJS4nDoF5GFHumdxZXVotX3F119Wxi/a37Pdt3Braqh2d + p59HVAZVg0K2aCpWr96/dd5gsTg4b+v+q6sa18q1Ntf4xZctuKz/yoPDB/O79rTucaxe71lvXLzc + spzs6FH3MIk0l77s4J71y3vS6Z7l6/ccvEwT2b45ECEyJzMnRTldpZxc7GT+/C8AtTB+mhaI6cr/ + tf5VIoQt4/i0XcQ8HAyUioV8VLlKytWqXOufa+a8n3ud+7nGMvt9eM7313+PeiVbLGZvRS/vF3KF + XAjd1dry8O+BQi5XIBej19MOVEB+tlH39JFsMZ8PgVyxmAPPow9ra9Hr+6j2reiOuj2PoEeuUHut + UMi9Ad+Ab8Cb5ejbroIv4Ml8pnR6FN7dls0WSZ9SqaaBN39EzX5dzBbT8Abyqos8Sb5C/4lUa48T + aHbdTL5Efof+PXx/AluGVpM/Jh+m3yEKStZGwhZBWXIEw8LchtwbOcqZc+bi/mnjFPm54/Fp7X7l + SCBKhwoyp+SEORKf8+a+k6MMcm2jf7qK6p/Qxqer2v31E4FN5my1pnnfZ7FaMKQIRKL1rDL41FMb + zqxAPgyhVKJ3smXBtWsKxXWfWdC3PyHoOFbnYB1LuzKTHf6LtrnbMmG9YNaxemqpz63XWK1iYevX + N2z+VrU9EOQCJrgD1gi+8OiuoRs/pzMIGkZvkWnxC/JdTItHiPr7lfj9FKbNzZB2ffTvCacSBZw2 + oNxSepOOMNHTBoOomrZNkTccE3EMcEURNi2cxjTRG+jpKqxjU01X67Vsvb2zMsk0BTJvhldkHyPW + 3j0jGAzCGU80ApcLsFVk6Hvc3jctfneg9jonSRz5nNfkhn1eTU6Tv6PfgX1+THmGk+RJPN6P198D + G37/ROMZ++j/gO+fVt7/K/UG/Uf4/hnl/YvkQUyDH2N71mpyM3UF/Re4Hy4QG3Cc3BZXwEQ8Dr4E + lysG3PhwoMXlpaejcLwfsvLTXsQgP1NiU5x65dQ0vEGuzbBSFBIEVavorN6Kl5+uejFrOISfNcJO + zNkgS7IGJapWN7LsQHrBNdwKdyQ3mbKTnV2TebOUXdjVtShv/rOZY0tDC0K+ReUH702v+cLqex9Y + 2zYkGUQdpVrbtX0ikZq/ra17B7pur10Zskmhkl+wvjC97o5dHT9/6sk9ybBWreVMkAYrIA0OYBr8 + BPPBMJwjHZAGQ3IukkchZFl5IpQL5QyOKfD5ioEw8AW+YG0/1uWg42iiWJUUD408zpAxTmEEcwpv + ZnH1ePuxqtLgBG1tJHpoJGlurNKRKMIwaJ54KEV3Hp1BNXjy1OeOrFOC1OlIjG3r7Frn4ow6yso6 + 9Kw3mnV3jlojBWdotDMU7l/d6iylQyyjteitrKkn1VqyRvOu0HhHmDrevqrb60RhES3igKjRCDzT + WXREPQ69GClNtBYnW11aXmIYi2mQo1l3KeKIeO3ws9ZxvH6+qMrQf4C0+ynmH0X+EAEiLGPWR0LT + Qbdeb3TDSXHc2EhIArHdKVk/EZquzqlgq9fAM8dikYFKNOrXNIy68mbMqoH7sJ/TgPXYbC5Breqv + vd1FakWXzeZlAQ0YUic6zRaPyJBLt/+c/Dsn6EhAa9THj9FaNUlpRQP5O41ORZIqRn1n7V8hllWk + JeEhknAXdgXOdOAgIoWnwAqCJbzgi4SZaIHikiNYR2T6pTzI57XhaR71vDCtvXjGiIJsKHA6QOEg + 4hQBRkc+Ml0l8sBCwSZ8eLqKGp3QFqDEvPgsAwo2sNYlxNxILEGznOeocUt+Rwrmu0ZafsnbHdzU + 6LpuH+eI2X3lmO0Jg7MluGKDL+YwpI2h1tjOg55kQKKOhXryEYdBspFP2SRnYSLjKiSDLLK0gHZz + wKb/mdGbqD3pSrr5tzh3HI2qIjkJI8Q6/TLCl6BEIAgHWHVcZ582IAo4ptUXK3ZJ+OjIrdpghzIR + PafaMV1VXzxbU9b8fBh8BkX8NO8Wt3992z2c08k9tP2WjbmbnR0rB9es6VvR6VHt2P7NbXnY7Sdt + Umnrl9e2bRmNnX4rMLQTy24sy+HOUUbUjiiS3YLOJxE6x/RLERCJqJV+Ruv9xCMFt0wNIS5GYD+J + CBwkWHum89GZziuDVH8G/1mH/8z14YKDg3dWK/Em/3IePg+4gdbRKHAbXfv1B/AV334AWmikCmB5 + C6eRn03DWwXewmt+otXbOMHGqd/WCFa8dmPZD3EmPtF/3OXibVNg9YNEjEdruL5I04xtOhDIMNPt + SCyZpjONlGjoH17A667RPKwcsE1XYfV2ZrqKGpzImKarmZlMaOhfk16zOQFcKdikx0epY1XNO2jy + dygjiTbQPtnWsbYSCPetafV0OQ4zDAUnHmDVPKc2hMqd3R4U4aB9x1dXphb2JAQ1vZQ16lVWlzUx + vqNzYMdoiOOmAgHexOI4JbWfijajhde2X/C1Nevv2N0lWOyhsLJqwxUQInA5zkFQj2hiDbFTAMIb + awIOYUUXnH4JJSY7Swqtw8ndTysM8CiRgJUN+iDkAj3kgnNJJZy0pVnbi9Ll1m9nEurOpPU4KafF + 4zW1l9WCUzJ6UDB+j1FCWQRS9c/INyHBKGSvBvNqD9Xvyb/X72ovg1T9Xn5mtMpDaZSQZyMBVhMM + IUDcoaTmOoUfRymQs3OBs7oJbHN7NNOPmd9WZhdEEYSDKGIaa8DjYBXcB1kgccC0AU8n+Jsn8Y/C + whMGACePPGfQL4szEwTPGCVdgBWY6boa7GbeqeWdJtgJmn7t9CWQ40VlRvxW6QjuB0YvRKdsmT2W + sqNBDmYZPNbBEpquaStLeWLoznOJ2MgQZkUJEV85lRdO5XEnS+eqaatXnUWtRq6TYFN+M1luWaUC + 0gtiYlJvaAS7WXJymj8BHZy+goXTgf8OgEawmVHuFo80bPXZBfVPqZc1RrPdOM5Ieh35b/Dh4B+k + d+X0ExRyFFOpVfD+uUb5qw4z/Arx9F9Jg9HBq2m9aMASGeM2wkXEZU37sZAajYlIuKEoYAgxNK1W + Q0Y2Iyyqb0asp+qIVQ1XXljHDLm9XmsWYkUyTJzzxKpmSX0wPLJ5aKmWQ7nleI1DvM+Z7RvJ2G92 + J1OWBfMihYBRdbpny1C09pfGw7xuN6m4SHm8FC7YNLUPzeEifBYFfxGtxKCcjel4updogyLteNzV + KyI5bnOle6cJEaAkSj7xTfEdkRZFa8+0D83OepYzJcMrXHrhfIZQVF553WmxF07nWW11FGzt65mu + zrS3yZlN0fTel5yV3xRir7PoYFHSEsI12WrFOiYEx5Tl+IBKbzEKbqdBPc5Y3QlXGU1yM6SQk7/f + E+czozmbGC4HTV6XzTCso38SiOo99pHF/pyPJ9+QlwVG+5grG5RqTzUI91ubkQLaQGkwHu3NhvRa + ZyjrecBihGORYynqFRGt06COxoguYj6i4+NEG3kDkmknskGWmiP8IJv3QgJ9ZB1bvRIiRmMKNCX+ + qefJKSiq8fodyphDraZYyW0xeySW/Ar5GZIxuq1WL3zzkgrwHrvdDYXfndQtpJpzmk02Xk1+m7qd + onmP1eE2AIp8W8cgOxOjA7UaWb8nX0cAjlTpNKefJ8so8hZyBDr9Y7IL5SyjtAIHKTDzh89lOPHL + qlVZhGKMIEquU12EbX04ohn54vEqTwcfJ18kqgRN/pLoTSLe/1hD3jrfyL5Fk3uGvN7hfYsn9w55 + rzK39LUU+iK8paUfXsMceXLDt/Z2l6vf3rLxW3u7yru/vXvtoclgbvllw2sOTYZyyy9Ho9UGWsmy + qgrRpvUhg9VJsXJHKNyRfKaAetJIRIICT+Dkl/I2GdshyLKBrQ0zPMceecQiMPoXtQ6733I7awBb + 7CaT3WEmN+7Um7xWs+YgXO2Z0x1m+Kth0E5OqC6H66X3uEAFJEyFAJVq/nG09Df/+ixTG3qvGEMU + Uxs5YeBqdlHiTN8vDcfF8Ylgdy6oM2s4XaxjJNa3sddrKqwe/jK4xgmqNqfZ6wkaf1BaPtLpbJ8w + 280Q0ek1ZjMfaJ+XjC5YvXvgi7CXEeAnx1QXE2NE14O5rhbcycGAA14rUpUPeAOZwIbA3gAdCNBd + PG2qD+EvMOWQIEi2I5V3YxYjK2fDGSkSrCcZm3N0T3kyS92RnhxLLblsPD5SDmsY2qgNFIZT6zfv + unQJKwrsZGKo4BICpUikvxDSsjr4tPGO0fgVV9pbesO5ha1u0lZeUwkZJJNGa3KlJJs02TeyQHLY + JEu0LeBIBUwWu8XosFrgnszE7dgUHSiFtKTKXxhCvOoBKXKJ6gIo331E6LjDyPrQo+uqlNvCshqL + ZgqNU6bJcAVMyGwl56NWBg00OAXOWz+5xD7pcbsdtWdYXqsDBm0kkYpP2n9L1gBBWlLfR+r+7xv9 + 3pAIfisaBO70h+CZWgXxaQz4yBHVOqJAxI9lnLAfJ6qZDB1O4kEJ0+Zm4meU9WMW4VubKN9sWYIb + 2YZdaSS19PLx9GjBq9ZqNIzOlR7IrN+zbX+4y2sUzEZwg91em7J1uMf2jIXJQv/24TDL8Sra5hIt + vMgvWjNvoc5oBwtM5lzuLZIMdK+ANLTD+b4czvck0Q17Hs3hnkejtOjFPRfp9tkzf3bPZXtyQ1l1 + Xv+c5cGRCyeW7qnY9Z7C5N7xrvmsQaNj1ZZwKdS7suygQhf2D21ot18iRjqT7WuDFigtUr0xI9ne + vmUi2bHzlmWF3dtW9keMGq1odolaRptdtLvTEg5XVvaEOxMWj3Vhtd/lyfai0XCCBLlUtZmwEuYH + KRPcobz4YNWk8IPM8moNTmc2O6qrhVyqY2ovanwhq4MlVWCstpnXcwbwgSSqMo6A6fROUY/doO+H + 2+f/zd63wDdZnn3fz/PknLRNz6X08BToCUKbAj3QQknoGdqm9EApJ5smaRtIkyxJaasIsUMsDEfd + 3HR7N0V99805pyDOObdp/Yp172TOediYulHnptsrm+icVu3gu+77fp4cSmHob37ft9+b56LJfbzu + 639d//u6n5CkXZiAf+9UArOI3Q7+W4jy0Cq01KBcoMzN1ek40X/cCjFnBCK/kvzPTuDvigX+Uu/8 + n4TJEf9Sbwm7/au3HvqK1dq1Oauqr7amZ1365q5e6xc3NDXXx+as1d2csqW7s7lj+5Z2Vu7a09e3 + cdfyXFu1bmNZZvqK2ryq3qUFNmbbqnWVJSlLs5fEGy6cKGvKz24pXVu1HhEeZBMe5MN9o/6hlIWr + CREWLpRmFxpVBEE2+wKSovgQNtD7oNUiHXJCeXzpeyfhn2PZnLFp3FNkSojTwFZdkFuaY9xWsZBd + bKuq7ylfsKjOsbHDaUjdw8RkV5UUGHJjtdmVBau3suea7zrQHgPJICU1XqVW6VvsqxOylhi2FJcS + jnyxqry3cXmGvjJrScWyZPIXhCvRg3AQ7yLnGQ/nmQAmhj0DYBYLYH6F6Ivuf3qo5S6suKZq/bby + 1NSKHdXrd5Sn9sUtKcleWpIZFbekNHtZSaaajTLdsH1FYdcNbaZR/Dza1bhrfUZevaW80Y6fe/Dv + WkGPsXLOBmfawhOa5EfZXz8Ucq69hLPzOjjXsv/JuSZXKy7cotRolOO3x0XJ1ffKkhPS4/Yq1NOJ + sXEJkA0+3KyOS0mIk/VLJArFPx6Kw/vChH7CJnMDqADlPhzDJmfF0VWz2DMPKVkdrbCCCctW4vMt + O+Eqj7fkpAu7o2PUsYd0qxdFr63MWJmXroiVqeWL9BVZJS3FC7TLNpTvYdYmvblUm5qaFnNoed2a + oqTCtbGJsfmxCUpZXKxmod6wJMvQsGW1h1j6XTaJ242q0MqHDKmLgI2POFJTpYXlSx8nVpaTACbg + jR0jfRRHcOUyYnIIIa9wpJXMf6KRvxDLJmXX9FQuqijMkCmkMfK0ZeXZzZu2mKuVMVEqY+2WqDQd + n1m6DDoVAG+xfk2WtbdpXesOZqhgY0m6OiZWKo9NztbGa9eXVBhjkhK0VauTctK0cYlxMUlx8QpZ + fKy607R+SzSr2AL8LEDfZ0s5CznDcvAZhvPGD8Qj7DH210iO47HuyqdYfOgptpItTWpPTl2YeOEV + dbRcMaPgc/Oy2pOeYf76NrMn55BCpVIciklbkBHNHI5Ww81RG7P3wgHy14DQfWwCtx3pUeGJglSS + AAoKpEvyqceXgC2Xenyek+yKB9kKTN2E7FrL2tyKpanwyjZanpJTltu8rc2cuTIlJjouhqlKTLxw + PkGfMnItc7S0oyJDGaXhpPHJvCZaU9W4ziiPSWSA4vlLH2Pt5DN7sMOzYIfno9Wo4ET2cmJ3drY0 + Jj1srxeH7fVLjjH28sdY2McastIrtlXWbitJTDH6duirFCq5QimNz1iWUbyhIJnJ2Fa6ulmf2F1R + X9iYHpddsiS7OCuG+VJh29ol+s176gwHB2q0MllMbHKMXCnPq+4qisvMKGlYubY+NW59V2lKSv4q + HIc69BCbye1ECSjlIS5W/RNieWyACuEHGD6+xNMrU664cFGWmpEbrWBiL9wLFGL+UxvNrUpKi/3H + b6JVsdFs2bKEpFh8bhlgf+WA1xagJTjeBqUyefHivDxOK3pNC17jUIGQlQJeu+TwCp5dYR8kCD+5 + cvZd69nb1n7LQojn6k3FKbd0tA2tNayrXNMwmNBgqjfWbWyoZezbezZ3VHbmGB3Z6wpSU5aWLxow + 5nQwvG7VKl1+Bb/qwluF6xZnGgtXlpXSuH8vEPfCEwtLgwfW48J5dYaeVw85oufn6z85sEJ/32AJ + m7WganjnUmNstEqhlCVmFWSWNOqT2fTNJWs2FSWmV2ytrN1ekmjR8GW6nOKs6PKN+o1srvHgQG2U + Qg7pWAv3K3nrO/WxCzOKG3QFbZXAh6EyfYche0HeqoUQfxx3dHFI8i5ERINiT2jYH7FTgELDTiB8 + NCUW4x1E3iSUvB6jVOZ0dttWHbp7QWwqF8MvjEXMxXulN0u00neRGkWfkKnBGyccMkTACp9Owm/Q + cu9Fw/Xxc2lp0ncT09KTi1bBzMfkR1m9/O8QbgX+M6n4RRWXlZhVy+75x2H533vJK8UnqDCOywlb + zj4fFM4kyJuXisQizQvIWSyyFVeUI0GRN1+VvCx/WXGzspmKyvgJ5PUriXr7ZeU1zTUh8iCVqLR5 + 5NpoVUCuI3J8jvwoTGaDEnMg5mJQtDsuI09pn4qtj32JStxwiDxNJT57Xvl8QmqIDM+VxA2Xldmk + b4dL8sPJD6dYqCxY9NlL6oqAvBYuC/sukW9cIm8GJe336TeGSsaSy8gLWDJ3UOGrg5LlpQIvvEWJ + vUS+udgDsm+uLOnJls4rvwyVnNrLyKu5Xbmn8irznsh7Iv9E/omlHJGypb9YVrLsZl0UiHu5YvnQ + 8tcKaojc9/9AzhTKIhKRf4F0hskJQd4qfEtfqbd/CvmK/o5/kZz/V0hRc9GxFfoVb600rzy3av+q + l4oHij8q2VLyVGldGSobXC1b/bPy9Ir2irfWNKz52trFa39VaaqcXuddN2XYbfiHcYtx0viM8YX1 + Detfqeqt+lF1W/XLNeU1N9Wm1r5Q11T3Wt2f69fV19WfbhjfsHVjYuPSJknTr5vONh9pvtXUY9pt + 8pmuNx00HTXdbrrLdJ/ppOnHQWlJbOlt+fWm6ze92+prvdjW2vbndl+I/LwjreNLm6s3P9ZZ0Tm5 + JXHLA13FXZVddV0tXV1dPV27u3xd13cd7DoakX932frqP5U/bD23bdc2z7Zrt53e9uK2V7f9gci5 + be8Rmd2+Z/u+HQmCpEUkIhGJSEQi8j9Wrttx3U45yJadP9v5s2s6rvlFt5zIxu7nRDGXmF/B0rM9 + IhGJSEQiEpGIROTfWnZFJCIRiUhEIhKRiETkXyQP9fzFYrBMWGXWHuvPbayt1/b8laU3rber94G+ + RX39fZP9uv6d/U/Y84jUEbFGJCIRiUhEIhKRiEQkIhGJSEQiEpFPIIMRicj/XCHfK1vOLkL4+4j4 + F+NpSQtHfr9gNKlx5PflRUuOC2UOLZE8LpQlIWOkKEXye6EsC2mXoz2Sj4SyAi2V7hPKSsTLR4Wy + ij0WGK9Gm+V3C2UNWiqfEcpR0TKFaGc02gBjhN+iwiiS8oQyg+TJeqHMInmKXyhzKCXlJqEsCRkj + RZqUO4WyLKRdjipSviuUFSgxqVAoK5E25Q2hrGJaAuPVaFnK+0JZgxIXZAnlKDm3oEQoR6NsGMMh + Bv91LjZO6hbK1M+0TP1My9TPtCwJGUP9TMuykHbqZ1qmfqZl6mdapn6mZepnWqZ+puWo6BR+tVCm + fv4O4tEKpEdFqAxKTciOLMiDXMgLP73IB21VUPIgN3k0Q4sdSk5UAD1G5ADhUSu09aF+6POSmg2e + bTB6DzxaYWQUqodSD7TY0BCMMIE2G+hoRyOkxKNG0DwCegfJig4o9RFLePhxwZgRmCuuwQds1qOV + +FvdgVop0pH1zaDBDWN5WNcM62AdFrRbGLsBav3QinsHwT5vAE87tNsJBsdl7eklfuDReqj3QA9u + NRMvhGOkelwCUp6sMgi9FoJX9O4QzPWQlkEYZSVe46G9n7Q1oQawCXvHTuY5iV8ryHwbGWFDA7Am + 9rKVPPKCReJYnrR7SUztYIsYvSAO3O8DK+ww0wteqCJo7ASJPYDDDD8DMINaSPGYyRq8EGs7aMRa + zTAO6xqB2hCUfCQOXsDXA2UHsclDfIHx2uGxT/AU1eojmOiaToLIQix1klW8JE4NJCq90IL5OEg8 + 6CV6bUIs7AQT9YWXsMILWs0CX3HE3EK7uMoA6HEQ/7gFK53QMkBWpTq9xFNBC/CKboKF7g3Rt9R2 + B2ENZkK/wFxs1QCMNcP6PlJzkliLvKY+o6vQODoFXC7i2x4yMmhxKCLstWEyj6LeDfUCsndDo5lL + tA0QDSPED4PCLg31t8g+p8BkjJ/GxUPYIHLURmKNmesOoKE29gljvFC7VtDuAxQ0QnsCUTITjuAd + MBCGS8w8FrDETNa3COsXkOzSR2KFey7NV+WXoN4sMEdkfgloWQGZ4/JM95E1rYSJeJXdgRgEd+al + ebJP4LU7MBozl0bcCeNthDv/d/KtKpJx/20ybiNYYkF5ZJflC/08qiOscBHLfCA4X5WjQhAr8S2e + OXAJewoEzhVCeYRwqI+wCMdmBFrNYDv1saiV6nQQG7AFvcRamueorvk46iU8dxPs1AviPBzVLrIG + zTQjxNPUM75AtMXRYl6wCLkb73Id8QEe5xZYEZqn3cSvTiE/UC02oW4WcrKNZBQ7QUit6yF2iFGe + GzGfMIPyx3NJS28Ag+6qMgE9FazEpz7h9KH7k66rC6wzFwHNokPETxayn+bz2ZCA1E52moPsKbrz + L/U9nkNPljwYnx/G4Pm1Uxs+rW9D9wc93XnhfPaRyFnCzsm5CIKn4ly7KkI4gJFQLPRuQcyVnsCd + h5WcvU6SR8yXRUq5Zw5jFc0HLuGRoqLlQbJfaH6yknPMLuQWqgePdJDsf3mO0izuFCIT1C7uEHvI + XUU/yXd2wc84q0eRfGkTMIh3GKKXw1mtI5Exk7IVifdXc/Pc3J2QNycv2EieHiJ3FHYSfRxVM7Rh + D/XBCLGvUNB5zZzcmS/s3mC2CN4NiNZ8ktPpKk8DPm2OjkZRB58eYPMuaKNxEllD704cwikSZPeV + TjiRlZc/5XDkWgI7xxtyL0LjTVlgE9aiGdspxF1HMHuE00e8r6D3RX1CnEUeU165hfsduoKL3Heb + CU6RKWYUPOXn5rPPIBYBD5kJduw3u5DrrcJetQj32k5ia+iZaSd3417CTcHGy8cWym3h5zxEOz/E + R9aQVwih++Gq9aHgqxpx9PzZTTcnu4m+nzvbQV4V2OfgFu0K3oMFd03wJBJjqEPiqzP8Kkys20IY + 4iavvxyEb/0hJyy1uofYYhNOqsFALENzCY1hoRBxL9kljoAN4r4O59LVezX0hKcoQ0+acE4HPTFE + /DjwKeMongaD5NUl9YwtxAIrecRrBv2yC0ZYQs4O3xXyMc38VoJAPPHKw7I4vRvbQ8rz3XU7yRkh + njKhr8/Ec2K+nBI+y0tyBY1Vj4B7/jPXfJmIegLovYSlTqKd7qJLX/l+WgaI51s9qiG9JlQLtU44 + LVtJSwO08ZBFW6FnM9SqobUaWnJhRJvQn0si1UnOoXoY10HOOKqjFR6bod5Fclwt4kkd1zbC+GbQ + hefWoC1kjRrQ1kZGthLdTdDaCM81wjg8owpaOqCOy3UkC9L1mmEWfQ3RIJyJ1NJ2aOcDCMOtaiAr + ipY1Qa0V9NcLvUbQ3UD0Yfvx+rWk3Byws1aw1Eh8hDVjnVVgUSOp4dYOeG6BcW1kfSPBTK1tJhhq + oZ9iqSEW4JULBKx0HPbPZqEHxwjb1wgSRGUkPqgn1gT9VwXPLWA51l8Hve3khDDBzGqCtI14r0bw + GUbbSGpBVDRSVQQN9ir2QTWUm+CnLuC7VvJIbWkN0Rbuu07SHxxF8RmFxyriOROp0WhUkVo7iRXu + 1QmxbCU45q7aSZhYQ0YZCeK2AENqCXup9SI76RqmEEvoeji2obaIrOavsEeoFrG/Q4j0pX7BXjcS + n2C72gIrX04z7M3v8Cv0RWV8k93icXldvT6+yuVxuzxmn93lLOCNDgffau/r93n5VpvX5tljsxZE + 1dt6PLYh3uS2OdtH3Da+0TziGvTxDlef3cJbXO4RD57BY836lXwOfirV8a1mh7ufrzc7LS7Lbmjd + 4Op38vWDVi9ep73f7uUdoXp6XR5+vb3HYbeYHbywIoxxwaK81zXosdh4bO6Q2WPjB51Wm4f39dv4 + poZ2vtFusTm9tgrea7PxtoEem9Vqs/IO2spbbV6Lx+7G8MgaVpvPbHd4C6rMDnuPx47XMPMDLlAI + 65idXtDisffyveYBu2OEH7L7+nnvYI/PYeM9LljX7uwDo2CozzYAM51WcIDHafN4C/gGH99rM/sG + PTYv77EBCrsP1rB4dbx3wAx+tZjdUMZTBgYdPrsbVDoHB2weGOm1+YgCL+/2uCAa2FrQ7nC4hvh+ + cC5vH3CbLT7e7uR92NdgGUwBjE5Yy9XL99j7iGK6kM827IPJ9t22Al6AmevlB8zOEd4yCCGldmP3 + OcHJHjNg8di92KM28wA/6MbLgMY+aPHar4XhPhcA2oMhmXkIwABdC5PH0m/2gGE2T0GrrW/QYfYE + eFUuLl2O+VC8GVyEQ1BSsGJlmOt9HrPVNmD27MY4SEgDzOwDj7txs8UF8J12m7egcdCSZ/bmQxT5 + Oo/L5ev3+dze8sJCq8viLRgQZxbAhELfiNvV5zG7+0cKzT3AMzwURjoGLWZvr8sJDodRwcW8g263 + ww7EwX0FfJdrEDw2wg8ChXyYrLgZO8ICofXZdLzV7nUDgWlA3R479FpgiA2ezRBGm2fA7vOBup4R + gkqkI7gKeOPyiIVevILuUuzAA+ugxafDdNwDc3V4jrgAxGeo327pD7FsCBa1Oy2OQeB+0HqXE5iS + Z8+n2yJkOGi4krV0FwHXIe5en8duoYQUFyA8FHVVEA/k2WEV2BM4lXjwzrG6hpwOl9ka7j0zdRUw + C+BA+HBh0OeGLGC1YZh4TL/N4Q73KOQl4C4djgNiJ/uk395j9+H8FNUOJve68G7BJguu1vE9Zi/Y + 6nIGMoUYhDyBCzZnwZB9t91ts9rNBS5PXyGuFcLIa4Sckg/hJbQgewCrmT8Jzpe8nhdGNOIRL2A3 + 73IBJuwa2EsOSGzE3eFpErsyLFFGRbXg4HjJ5gHc4AIbzAJig2esOr7XA0kPbxHYiH2AGfsYfAUR + hem8qweSnRM7xUwStcizq0eBDTJ7vS6L3Yz5AfsMUpbTZ6b51O4Az+RhjWFo+TYhU7+QTyyykmxI + 4zDvOJJncXMI3XQC3bD1YrfDDjyla2NdHnpSwQpkE2GEOpzL7b342UYc4h4EQN5+smFBdc8g3rxe + 3CiwBBAWAnCvDadol9tOM+plTaUbHpakm0bwNDFiqN81cAWMeBsMepxgjI0osLoghxJbdtksPpFg + QR4D+a12svHKKcUhje2xhRy4TpcPbxmazO3CNqZMEbq8/fg86LGF7VxzCFAPXt7rAzLZIUSBk+dK + DsD7rb6GbzPVtncaW2v4hja+pdW0uaG6pprPNbZBPVfHdza015s62nkY0Wpsbu/iTbW8sbmL39jQ + XK3ja7a0tNa0tfGmVr6hqaWxoQbaGpqrGjuqG5rr+PUwr9kE53oD7ERQ2m7i8YKCqoaaNqysqaa1 + qh6qxvUNjQ3tXTq+tqG9GeusBaVGvsXY2t5Q1dFobOVbOlpbTG01sHw1qG1uaK5thVVqmmqa2+HI + bYY2vmYzVPi2emNjI1nK2AHWtxL7qkwtXa0NdfXtfL2psboGGtfXgGXG9Y01dCkAVdVobGjS8dXG + JmNdDZllAi2tZJhgXWd9DWmC9Yzwr6q9wdSMYVSZmttboaoDlK3tgamdDW01Ot7Y2tCGHVLbagL1 + 2J0ww0SUwLzmGqoFu5oPiwgMwfWOtpqgLdU1xkbQ1YYnhw4uiIq8LRB5W+AT+DbytsBn97aAivxE + 3hr493xrgEYv8vZA5O2ByNsDkbcH5mbzyFsE4W8RiN6JvE0QeZsg8jbB/3dvE8DepN81QOhiCjqI + 5rtY4RP5iMmD53Pkk/1XuiSSXI2GgTFswtWOj4rC44khVzU+JoaMP3e147VaPF5y5mrHx8bi8dJT + Vzs+Ph7GS7gPEf6GgoSMl8BPMXmMBTfHoVSUAoksDa1COeD+XAiMDm2DA7gfVUIqrUajEJajQOVv + oK3oPrQT/QAS6SmGRb9hYtAfGC16h0lFs0wGo2RamARmB5PFuJgCZpCpYPYwtcz1zCbmELOdOcLY + mXHGx3yd2c98n/kCM8F8lXmauYvbwDzAdTA/4jqZSW4L8yznYV7kbmNe5s4xv+f+wrzN/ZWZ5d5m + ldx5Nol7h13Mvcvqub+xa7n32A3c39lO7gPWys2wA9yH7B6I6/5wrOznPwXW2wDrfwLWhwDrE4D1 + NGB9DbCeA6wfMamMFLDGA9YMwLoMsJYB1lrAugmwbgesfYDVB1j3A9bDgPU2wHo3YP0eYH0MsP4U + sD4HWF8BrK8B1jcB69uAdZb7K+B8G3CeB5zvAM53AeffAOd7gPPvgPMD9nOA9TrAeiNgOxqOVRoX + gjUZsGYD1pWA1QhYTYB1B2DdDVhHAOtNgPUrgPV+wPoYYH0BsL4GWN9mWEbGxDBxjBbimMosB5Rr + AGs9YO0ErDbA6gOsNwHWLwPWOwHrA4D1McA6BVhfBKzTgPUcYP2Y62BVXCcbz21hMzkPm8Pdxuq4 + c2wx9xe2CrBuAqzXANYBwHodYD0EWG8DrN8CrCcB65OA9RnA+hJgPRuOVf5OCNYFgDUPsJYC1lrA + 2gFY8csZL2AdBay3ANZjgPWHgPWngPV1wPou8jEMYE0FrDmAtQRK6wFrK2DdCVgHAOt1gPULgPUO + wHofYH0EsD4FWH8JWH8LWN8CrB8wT7Mct4GNA6yLAOsywFoKWCsBazVgbQKs2wHrbsB6LWA9BFhv + B6zfBqyPANanAOuLgPV1wPo2YP0Ycoc8HKtqJgTrQsC6DLBWANaNgHUbYN0NWA8C1rsA6wnA+iRg + fRWwnkNbGSXaySwArPmAtRqwbgKsPYDVBVj9gPVmwPpNqN0PWH8CWJ8HrGcB6znAOsuMs0rm62wS + 8302m5lgVwDWdYDVBFi7AasdsO4BrNcD1s8D1iOA9RuA9X7A+mPAehqwvgpYzwHWWe49TsP9nUvj + PuB03AxXxn3IVQPWlnCs0fUhWNMBawFg3QhY+wHrCGA9DFi/DVhPAdaXAOsbqJPhUBeTAFiLAWsr + YLUAVj9g/SJgPQZYHwCsE4D1WcB6FrC+wwyyHLOHTWWuZ/OYQ2wJc4StA6wdgNUCWL2A9QbAejtg + /T5gfRqw/hKwngWsbwDWc4D1fe4vnJz7K5fCvc3lc+e5cu4drpN7l+vn/saNANbDgPU/AOv9gPVR + wAr5mnsOn1cKOfzTavPyqveOjiqkjEI+PT5+fmxs7DyuyNxjfrjG3AoZo1CcHzsAF/RIoOe83w// + /GEVPxlWVu33f+NAdRmpwIRZPEvBMAqJX7jwHKlQPq9QMArV5OS34Pra18iiZHnoUspBwfABcg3L + iHGka3xsjKzaPe438NrxboUaKdQH+AP8BsMGwyYQ3s/7ZVJGJj+vGB4bGyYzYaUxPFkmYWRSN17Z + TdoVeAgMIuPdYzN+Px4vkw2Pj3f73QCWGI4Ew0NRyBSMTPXIfx2Ci0w+/lOsSNADF9Yvk9NVYTTH + yCTTdCKYIHP7J/TaabkEySWG8wa49GQmHn17v0yKZNKxsZYWnlcEiwZDyPrIz7GI4QwGv4xhZJwf + n69+yCEM5wcGSiTTHAdOPnbsGCjAcRwTTIJK9zEeXzNCj0Kh5Q2BiluhEIbp9S0t4zNaLanMkEgJ + PWUG4kxamVFotcQ2YR13oAeXhhXaaQmLFJxhwmCQcEghmeYN07Rg4CeuQD9gjxxTye8XqPQZ0U/J + KNRP+p/03w1yK8gYSJBrmIZAUGVZ9Shc1Wu4K9NQcwUaKqWMUu4P5aGM8pB0KAJExB3d4+cpQS9D + RCXDKAN4PikT8Q44PjGHiQoJhMQwPxVlQSrKRCqGWnA1XFRSLoLzglyESpCLpEfkIq0IXIRKkItQ + CXIRUyTARdwT4CJdxx3oEbkoZZGKcNEg5ZBKMgGjp4USiFKJlEoFSgBZBGJE+4m/lTJGqcCrzACV + ZiAtKRVr1hPk69fgmnLmAGbHKPThUM74KR+DtRk/TWdKJZ73xdFRYR6edAE/hMcTz5OJlRmlilFq + JuC6y3CX4UtEjoAQo4hBeJRKyShVa+Cl3g0BWQ9nEuMPDhuD/UMswkmduFapZpRRmLGHBc4W+TFn + 5VJGjt0/DOFXyRiVAvQ/egpUnHoUd9FDYcxNuiQSie8IdB3xyWWMHGfrWb9/L3TJ5Xux8/3QMkzR + CdT1qxhGFcTqlysZueYkOk02HhWiiqx44ICoFp8BqkD7qUfxTAkjF4hMyng7dWu100oJUkoFKhv0 + RAGZDzZiZJjBQGFVSBkoo2JYlZgUwFLIWSxsB4NfzjBysBYz2s/CLRqUGY6RSKclEkYlG4dL8KnA + alITWM3PCH0KzEtDsEa9D5GRp+Tl1dePzSoUIleA2QpBC1CbcpuMnJVgLUDvwHruQB9lN6W3WkLp + LUFq6TSsel4odWunVUqkAnoHCb4fKE5CImdUSkISTORZlQKqlUbqDGMlrqpmR28gF/TiuM+KrJ4F + P6qCJPeTwWTu0RtuEObieRfJ7Dmxx6rkgdqsSs2ooia6J7ohVRy7hb8FeHmYx/wkS2L7KNnVKkal + rhRsFy8jWofQRAAJ8P3AgVFiHOZrtxa7FS8QfYAXk3QI5SnLJHuBJGoZo8aUD+W8XOA86ZNchvRy + KO/DPPXDYbY3nPRqhlGHAP9XsR6bNkx28/lPxXo1w6pF1l817dWE9iQmwt0ZtlLKqhR8gPhCL/4D + 8sDB2UB1GHxHIKkUKQHuk+peWDakd41BCACtBthvCKw7fCDQO0xwwmLn5RzSSAQr4OZKA8THk86L + ZZwf1CqkVmngbh5LFojBv98Pyxn8BrWcUQv0ITtBrYB6htlA/GMwZ+C6auYg3QujB2cIH2b9gc0Q + rM/SsCsZtToTdfsNCNyLjlI9/m5/JiJdQUJcDCHHXLJgrcFtAqtEMeqYiZSJlGN5x/LG68frcea5 + UXGjYlQhACCHER6rUcEqacgStlmMUE+HzRIYTDfLKLF++ABYqFfgQJB1RkFrjZZKHl7wmNagNZC7 + K7JhwPEaOaNR0h2DD7NTj4bdvJFeFq7yWtxbWy7cpuFNU12mxjf5gV0zupdmiICxGobRhLrCr1Az + iugfTkzxB0JEAUqUdHG4jZQH79eIeqVolp/e+8mE3eMX7gxwcoDcAKlCZjDMkP1jKCNaqEKwGG5T + FaCuOi9Pq1WHVoBcGobVBE7rsE2kYFh8o4nm7CIp2UUaOd5FJATUWNFetVLfMq6l1wVSHz4A3pPg + jRSsw05iWQgRJqgmIWFJdfWBi7B7SD/dSizpx3W6l4L6L7AScTsF1q+mD0F7asthkRnYT1HB/cRE + yQL7iZbxftKokUYdjaLRQiJF/iJ/98R+yOM4lWsUjEY1OzU1dWp2anJycmpWo4SGTOT2d6OJEOmG + lkwEdNVoLqBJuB+fCLme9E/6LyBCpAu4PktaLwQbLtBxZHqm322gup8WpndPuCcy/aQzqPNi6AIT + GhaCGNYAuhUh9QuaaEajnU6bTju/5jndGccZx08bT58+deTpI5OaSY2AkgAkw6M1jCYqE31O8IIo + 3ROfA0vQNNITN8yiKTRJZArhMq096SfA1vROTEwPp0XLZKeHNTGMJvZJ2ZOyyYOWI5Yjvad7T5ec + WbVlzXCKPkVPbiX3Tslk+6amnt0TpWCiVNiEV9+YxNcbr9Ib1l5iV+8a0s/BVdFH+vsq4AUO3Jj2 + Tk2BF3vWaHBtPwRsau/EPujfF8UyUZKJCcgX4iW0hFxKDaOMeXX6Tf1UmGDNKsGOyUlSW9NLyr1k + HVXARqwD39ecmRY14vvW4VPYA5ojw2opnDrd3TPd9CojqgS1AADftuPXcBaEpQQkDUQzf3MKiB5F + sWxUSMABnJRjWCkon/BDtlJKMWKEQePUBTVGwkhl56UyJkpxGl8k5AIaEZBGVTZ8JkW4LpKGvVPg + aplMk6LvDjbI1sigdWovIUE0ykBJYFsO6kW1QIGLfhnCQkbvw3D3CqNxQ4YeLCRME1a8CNplGg0s + qNcHbOolhgkjSNmyDlsxA+dgtNR9XI8v2MPRsmkodE+cF8vdev10yP/j4/cxWKvD2SeUC7y0vBmX + jR5zj443egacOr5qxOPQ8XU2127y6IFHjw3K+FOzOr7R7HN+stHEBobYAT/pd8JzAjUp/Tb9aPqX + ZcqlB+sPfhDFyNljo+kHoAkn2CK1XimTLovm2FQp0ptlqmUyCNtoKctIjrXpN+l1IS1pd2f409Aa + Iiby/q6LfOICfx6gEos+K0SZJOEe7vrvvtT+8OaPM5/4asWD37Zs2rzk+mOjKR36UcmkfpT77jGO + ZVg2fiWYODXsL2EGU+0eYvCUPipgLeR+pB8iZnIdElk829FWFK+PxRVFvKrT7O23O/t8LmeRVh+N + G+Xx8labdcDltBZl6NNwiyo+cd6vqhRl6TNxPxefEuxvtw/Ylrf5zANuvqXKqM9Ijioq0a/WlxaV + FpcVr9wK1bKQqv6Gk5+JZVF6Ne5Xx0uaTC2tRbn6bFrNcFbZ3fgj7NVtNXxNW3N5bfGKsuUrS0tL + l5cZS0uKsvWLKaK0eRG10S8C6EeZRaEeZqSIG2ViELSr2FGGQd9TL15478/G8hJKXp/s3yE7kDdo + vCnu3m98ZxXbfdf3ah9RRd3/rReiamv+9OAdaX/z7rzomn3k9uVfeX/h4rH3N5188z86N/+j6Zm7 + i3/4R/MzfQlscvXMocS6Y8tVR9GDz9w0scH6X2WPv3Zk2X9PHlz5yLKJ1OMf5n5dpneXnf1x/Cn/ + LzZ03/6511+bdP1gvLzu91r1dz1j2/ctqYr+1X3fzlo19vL9Q+N/fC1m75eTDy6+ecELT39u6lvv + H2/R3bn19NbjzNO3jp5iPk5kbeecjyej5TdJbzm88+bSI8o7H++ddg68NH1swyu/u/WOa6//TVLv + BLO00JT70dY/zryT/la05P3dNRkJ109Yv/rKcz+8WPvsrie8mSwH++ieUUYJHpHq08Gl6dGSJEnC + i0+8v+L4WFHMGwtufafyiaKPtrExSsKh9MWSFH2SP2HxqpnftNa6VX8xfLzn45PLjk8Wn4zRt+MB + mZIm/UZ9w7G6YzUHq4TvDlg8jjlfOHHvtuPWQuGrG97CQBhxFEkQgZUFMES/RaaAjSmVwssOSaN+ + g75erOvZg2uEBYaGhuZbwOa5gmafPh7bmy3R6FWiSk4xZ0NymCW3b0Ovvn1P/Rf+0LK679YlE66j + jxvOrv5fuqZDunu7Kleodp2e3Z4suV1vev6i5u4bf5f9vyXlig+a/8Cc/J2zytY8vbagxp0/+LzJ + bkoaPvnsdZVvL7i/6cQDgytal0hvGz9T//Kfqj8eNyd17fz5iWUdX7mzdfuTE/pc+V9/1Zg7cnLy + gw3FUQua7il66tUXUhfdnKtcZSh99o76tMODh6u+eSa//eF7Sx0Jd/x02PGDBffdNHxPqfVx5kvn + fmvYf02stv1W6daX95/M2xh3x6rRLxTmdZdq3+lLfXHU+8rZFR+fXXnP64birB+XblvR73rmzLI/ + MWbLLbeNvfHf54+zD374wfbZszdMrtr38KbfLsw813ruI/2ojIE09ueQNHbqz4dmrr2h5c8XSRo7 + Feo1NaSxfZ9JssjT59BNnxnab7XxbfY+8sUNCCz+xl4RyWal+rKiohV6kFU0mwWret9nYp/Qz12m + /59mo7HDjy6ZlB/9un8kcTane9YzpvvovXtuG/tq7Q/ueeaaQ4XlKwsybhn+aO93MkeZ71/7TOqP + uZ/VvvXU1/5PMecZ1VTSxnESOkFaABFBeodwE7oISAfpvYv0DopIs0FAehOBUKSEKiJdBaU3QUBF + RERYQJrUAIIFpb0JrMi67rv7fnjP5kNy5s65d+6d/J//b565Z+bLJgHz2g2yXXZP9JqTTAcPwwwv + yyeCJHm7panHdDEYaLrYmOR5Qy/ppVJlUkC9pTEeSCPv8X365WIyvd/L6LqkTpIbrJgTd8Q+XGh9 + 54OnEdX/283FQf+d2G+l5yJkGh6xlNmimjpCKxPKBssFXhluig0/u5D4/sTu0gW3nuskvj7vqPTU + Bj7gdalp5hGLzZgd2b5yu+u9+dSNT4PplCxxhdOhR1sGu7OZQZ3bakXQRBEUmxpio5UzF6+q0aA7 + xJPPInhF0jNovW4JCln87kZB2B65sm83XDi7OSCzJgnoIFLxD9lVz6Bt6ItzUgu7Tq2W/V11JTVt + 0FRAH1dNTYD1onxVQPln0ogCCFyRECqAEAEAOELAThIQtRVzsBESlbIVFRJFiEgKSYqII4TsJcXg + jjYIhJioo90fLFDN035Gl/AV8u5RCQn2Bx53ui+Bk//aAn/pUF7nL+65IFYuWB1jVYwVME6/1rgv + IUBCCJDcs0CbQxZoBGBHK4csUPlvG/jugv+lCR+AHHfjUBBolwAM4P0UzvhIMAiPiJ5lxKRVt4tD + J1fP/w1mY/tZw+vmD1+PG2MMulxUCV+39yxNbqVZJFtTS/I2EypD36UHRNQ7lozULYKNOGpkOPzl + Pco2PuCZJ6VFMfWSJvelMykBxQX0nY9VLT4JiEZnx5tKtGkzlbN3Uz0bQlIVi62WsXfFcxYGR4/z + ME07MkfKwnZN8LVaPENyEIv3q4V1ja2IKuliupjtai6STw0GclPypygXIUJkU2RN1P04IncqqTqj + Zkjo9DoEzOEWUq4pd/Ij3FJ4vT60ly00KB/ttdUOfmDIqBqXWuDR7MnzZIOHpQvDWgyp/PAckp40 + 6ZrpEoIWf+PBunPj9W5bLUqcdEeGtiWVtrg5rHcF2VJixKnI8EDthn9Y39f+TLljb2kjZ2OznTkj + nKWLO4O0uWdJ2DTttm/fotMSeWB8TufNmUeScbuw0UrrfEW3p/4vKuvc4kPcw73vLhRsZo8yDkpt + 2T/1kCWZuRJSWVqf9/jyixTj/EDTHhpV2362la1T7XDIF2FZ+wIJr3O6cjVKCTo5kOjGa6afO53C + bUayUtu7Ynq8VCeaYUmYys8VgMeSq/qd+RTfrgaS9h3pT2UXJYiqjF8cG6j7lNQdzrQW5ArSeXg8 + +GL1Kwt2uZOmDOMRy07t6kXCv3FFy5ztWxJVuslcf5PcFym70j4khCYAx6l9XRkFv8DPxUKAGAuB + lX0IkNnQO4vueT/Tz0NY6z07JSNN5I68tSZoDzpGj49VI/wYcPQPB0kPxIqVocC+b3L+8E19Ly+s + eWKl6+LoYmfj48Aqf8nH2cvbxScAZ+6ABCAKiMARYiKAFNbcEfC9ogiAK/57Y+i/8/dstHvl+Iha + Iv8VN9ixiYbJqY40PQ7d0uejDNqclMsvi15qlvoArNSLxK8Nk+nUk44rJJalWgLcw3huc5cbliKJ + Kb9QEKSuRvay9IhwhmeufXRiEty6PBvBvDCrnYdu4TDojv2m/IK072x5X4UCQe7XQvdbTm94f1Mx + qAjrm+FVgfHcC9Mx0iefxhfcdE1IADzD182AzG/XBlHVc2yoaxv90HWSGgMP/fvKCdlqeGdUHal5 + +BzvoKZfEQWfyf0aWkStSkuKzA7FGPnvgNKZdUlu4FEBKpiaMQ6VunYhw+zyE/7ycL/ejHHpkFto + G/AD5iOVW18yqkDP2TUMd78StrWyQr77ewm2R4oAygPHIQTwsT+H/PyXo0ucfTNTEhBg9RcGUBGR + /s4EOhDuCB4QnLrvzcEJQHBsEC3FPeS508Y8qBku6Bb/BJlBstl0Ptou3+b/Lk8kVUApPfpMTkGp + 5kXTj8RQmAOguw8FdQDLoRzFHPkwuX8+Lj6oxq3gxln5HhAMDwFBDVABlA4BQfJ/GRPjnkNx/6r/ + cDyM7WsqVFSbJb6S+Oj8/VK/kecBelqgSpjPBQsPcmjJ88bL8bWwAZrcGA/bWhNwjzYrVDdtNPD0 + pElduWk60wQzKOxenf9adN+SNGh5sjGejLArVm1y1YBuVKckcXo21vV1UMv7pDUi4Rv48zf5OdnP + b37emvZPgx35Qjx5vp5BOzPOjcw7uRYtddtJqEOPYsHWUo4+NZpVbpKYEfG1F37GFy4j4A3pWjgv + s3uDDDreSmYTt/qm9uiidvT1DjGBs3lNi/VXIQqXBwy82ZaB7jp/B0sL0FEyWor+YdrUT6ceOZpW + CwnPfr0R1qtnPJd5Psn9npTmwOeAprsMgbZ8K7kZfKJEfoy2T2VOeLAgVyGdgnUvFKtnvi5dfTCV + f8dHrFa74wIHDbcv5JR+zAVzFUXa+urqCi2nrmyF3aAAtqAsOsBxToHmLGNXFjtbn+K8wHzdR7Ve + wYEhRJAmN78ap7X5gvFK4VhaZvdJr4ZgHh8i6mVftqYMZAuP4cNKV5lItK/NfU80tLDpruoqjdd2 + FMK9amdcryuG46ljQyZzOI09WEao3Cy+dppt5kFFt919f0PCAXmY7r2kigL/kuqclEuMbxPDoZfY + hRF3SDxzLGK4mnJWQrvZBhdP6DxNX1Z/9wXk4BUJudrl0vXec6EI9RzOt0vRYWE5pHUcPfRNOEsO + ZkTv9hSatw0giQMBJKHtdxRQJPTvoQD/5zQgOOL/YsUIANgPSL5/EpA/MgI4FhuSCEBMah8a4ntF + OIAr/usZCxL8Z3aAcewAY9mBjbmS1W/eVEyw0iHPu0gqLdHHaw9N2bIVjvO7zZvr3q0lkmQkUH98 + vY38xKiE2xOaIciqZGsaUUWX1GsQLVzhVeSRAPvwa0nnON3Ls9Rvzzuf7R/PMKgiE2wrf1ssUBZI + Wv4mxaz7HCPhvKPvHEKfm0Z4toRE90W1Uo3VUDsM/1KJ83qPx/pJSzT9R5XH7yTt73nai/kX5thR + Cr06fWtjaoz4yGvLgAJ1vtkjjTlQv8YkmZXNKQFzKhYtY97cQO93NCdr1M8OYTCKN0PeXq66HHb8 + rWxljNVcpE4o4xpa2Gw6QVqoTMS0o0Z2B/GqGl+msqo8UfJaf2aQ4Cdt45tsYlxtUp721w0e36Ys + PcYR2vPxMX5Y7Bfr1T79ppik8PpmNh8uawbeh708vJJcqVJnxF9cqUwsY+IoKnZcsmFxneBVz7SO + mOSyesWmIavf/sBEjhN/9WWghfBrjqnzVpR6Kn7VG3gT9ffASOuRZrrqhuMDRhqzUmjKeQ71eoZa + pSvK0y1t3oHvvGc5x5tU0jpWWplMRkJil7TUgaKSuPEli+zyrdEKx8kWVPBlzCBGY1adrwjKW1h0 + 1SnofZStv3WVcOgbk9uWTX68vB8wHm288YLxpyV0WiZuKEW2k2p2DBQoCvskf/Hc8Gc1FYRanUtO + l9URCR2uiDg6lqX9MaWiXiXHPbX/3WBEzAE7MVh2zv8Cfz/g+cu85NjBCbRgAvITZHgGewtXFPHk + /8jVP0H5cMbjLXQSDE9QfERLqD2xUNQJf8kRKQqY78MNN4Wqk6OVoxGm/j9N+mDjFhu12GA9SEqs + ARFrBGIPc2cPYU4f0AW0D2FO4Z9h7r9c3wcIzsbdPCtBMAoITgKCbx50EgwfCA4B5L43BwbRi/xd + moXbVQX7ZC4eNt4Bducvwpx9PIDTBxcAA6InEKzMeJp4uI2ccWuErPfWCO2vKQvAli7+vtrN4WDN + H4yV+VeJmNNaWEHqO8MARtirIR8n9gxICvWEXWKaQsrV/gDyhBYHa5ig7Eab90uPkJ1GuTmybukm + 1eK8dZcRuyZ2sQKUlUNowtVoFV2jIfLEK/2MGkzrpxSi9fsqtt2mZIlhfBnvZY4XDDxg9kuSmpy3 + f6ok4x/IsQ69WpjgExL7sYcbrMLfGkVVl19MSJ6Bcf7mDEvO4ZfjdzNVt2MhdfE0T02ZDvnYHL+u + IjC2Jd3XILbiyVU2U86D6RtdpyhP40WlalHIQNZIIgdZ2hAMk6sdQs8tsu6rS5E9IWt9Ulo2U/V2 + hC5CT9lUEnGBh/F65UeejTHBk6wuqVVmkc6eXkU1Pm2nCYkKQfy8skg5qJYjpLla69NE/HUmL7qr + ykW+M6f5HfLarPRtw9qY7cRRYePD6xtr9Oh0nolnBai+ZSs7+SkL4tvhskR+RC+JKi+x0Dba2DxY + /e3JcYLGcflOCt7lMQfhJdRntGXKEN4gWqXBbB1VQKqhRpUWxNKHx9dRmVEgp+x3QuxJf25udmAg + +ze1ZJaSTVWOoE9ZG01uNRqoycVL/oxLCxJpAQwau4PVHM6X3pd/24pehAQtuEiXbwEYAs248fFL + HnY3ZV5mGmvrNAWZsKP9qRFsgSvyZJVym3d6861a0BEZJheMtdWUmxWeZvhakAWpuW0HZLc0eHi4 + PtW/CD0SqPsMjiSoAJAE98AgEBCc/G+D69fTgT9ejuQEt+PM53cRk+LDyQ+/ecHexY8SBE4BHK6l + Azh+nEgAx1rbdpJSUdzah8FgmnG+Bo+E0IeLjGOA/aFTyOHGgGEOfxDvL7ciMPzz7tBo7iDOv4xs + w4NdkVh/YjMBEoRnoBpXGPIwy8uch2gEflZfuK5aj1gOTsEcWOanamjZJCFKKUH1ysCR04hoWP8m + 3VxqOr2Lt4VgWfU0jI+Ki0KFbNMlPFHV/UmivcZIaxTBuPMKPOzN2P3u0puY2EK9617+xSCC+u36 + mkdd85jtjnC84dm6TPu8fulO907rzfnNx3R9KEl3jADR2opqOLV/H/OuifSzSdMTxnOdESQ0rYXu + abdnNpv5HDZOncK/p3afXT6Qraj+PW1vguKmxXGMji+D/N3tYjXKKGmjWtfW+kLEqB1Vo7hpHCFM + jinBKjd2do4xci4p9VnAZ9lFJjckhSuou96Y2zn/CMs4t+GQhqAFWxQaCebFDk84f/xHRHAkmA57 + iHpPmnH/WiL+6zdthzRpBTAcliTkxxtDELbxgxpCOOXexLE4XAwBx33M/6RIxflQ6Sxd3s5F7hg6 + z4FmZ+aMhwE/pUw4rcC1odfBkSb4TGZnUD6LZCFn+EQY+Tqt1oen1pavlCRlcMwhnGgWySeHX8dq + c7ly542nB51NE+oXP+tAW/x2qvwavceC/NE+n9FdrxVStELW2pkL1/n1zbNYlsHVQupJSmwDy18h + xDaLRgHXSAKuoc5DrXMcLHgJWRw7q7ocMweWbcbkfVVrtseGZ7aROzN2Zi8eT1Whjri0919I/vDJ + V+nRu/aAlzvP82sh2XBCgxnN2rpHLEZW6PXQ+cSx2PoKSPAiNFNW3NXtdq+V/Mv5/NcjedVzwyPk + V6GmQwqCA551b/ikQxcVjjSHEOtNnFwvMdOsivIFrZS38q1dKoiCS/0Wq4T3H6C++08NCmVuZHN0 + cmVhbQ0KZW5kb2JqDQoyNTEgMCBvYmoNClsgMjI2IDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAg + MjY3IDAgNTA3IDUwNyAwIDUwNyA1MDcgMCAwIDAgMCAwIDI3NiAwIDAgMCAwIDAgMCA2MDYgNTYx + IDAgMCAwIDQ1OSAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCA0NzMgNDk1IDAgMCAwIDAgMCAwIDAg + MCAwIDAgNDk4IDAgNDk0IDUzNyAwIDUzNyA1MDMgMCA0NzQgMCAyNDYgMCAwIDI0NiAwIDUzNyA1 + MzggNTM3IDAgMzU1IDM5OSAzNDcgNTM3IDAgMCA0NTldIA0KZW5kb2JqDQoyNTIgMCBvYmoNCjw8 + L0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggMzM2MzMvTGVuZ3RoMSAxMDI3MDQ+Pg0Kc3RyZWFt + DQp4nOydCXiTVdb4z33fLM3WJl3SJU2aNk26J90otAUaulEoW6HBFgRaaLG4UYGqoAzgglhFVFzG + BUFHxwWUNIAUQUTFXdQZUccdlxnXjqjgKNDkf+570tIiuMz4jd//+XLa8/7uPffcfXsj8SkwANDj + QwZNVeWV9bcVPhsGrO2PAGqMj6t4/SnTOGBzDqBD98Qprvz1X835GoCtwlxNc85pblc9YVwHcNYN + mP7wnPMXWcseafgS4NpKAMWque1nnHPn5+WbANrHAaiizjh78dyPlhs+ArjpRYC5+rbW5pbvT198 + CZanxfKK2tCg25n4KsYxP6S2nbPowsefSy3F+KcA8zadPX9O81VvnncY4Ng76D71nOYL29Pvi7Ng + ehv6W89pXdR86yUbzge24HuMX3Zu8zmt75e/mgusoBAg96r2+QsXBUywEvuzh/u3L2ht/8H9/EKA + xU0Axg+Aj4Wi5IMVj770+KyI4YchPgy47Pzi4hc53xhzweSjb/UOUSeETUJfFQhAgvkU4Ae2V73h + 6FtHVqoTpJIGSPwmbjFlwlrQw4UgYk49uABr1X6P9QqYKsrGCrtADmHyW+QFWKSFKL4CjwgQBkKE + UhBlMlGQfQzOwB5IvQiLVfGyx0+xWsEKYH+R2qC8Q3BYgQV4mrhHHs57CtGy8OOtYS/jbL0JsfAr + RXYxrP61eX5OxE2/fZm/RBT+/0694rNQdlL7d6D9b9R/MpGNBvWvzjMM982p0q4bnCauObXvIL8G + WCm7HRp+ykfQ/3RZmB53yrRjJ8+rqMF6nzl5muwt8PxUfSeK2Hu8HJn9hHGYDxUnzXMRmAbVuQku + +zV1nkxkMnD8Ej/xWxj9q8uuhT/8Ct/aQXEljP219f1vFPGFwXPG5cS+nijsX3DWz5WLPj87tj/l + 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 + KrFHQKlmZxW8qHpfRETYMZZdos8K9Tc0bmVNGZWf8PP4qiK6kZk7D1Hp68k6+cqujnrMi0+QTUvB + 02LWgEvJpMfQvQGNGyJ9Cp8e2OiVa3QkzxGYHxUIMdPMzhyDZ2iKtYRjadyCZoFjccXgVeuxLKL/ + AfpFWhMNCmVuZHN0cmVhbQ0KZW5kb2JqDQoyNTMgMCBvYmoNCjw8L1R5cGUvTWV0YWRhdGEvU3Vi + dHlwZS9YTUwvTGVuZ3RoIDMwODQ+Pg0Kc3RyZWFtDQo8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9 + Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/Pjx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6 + bWV0YS8iIHg6eG1wdGs9IjMuMS03MDEiPgo8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cu + dzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgo8cmRmOkRlc2NyaXB0aW9uIHJkZjph + Ym91dD0iIiAgeG1sbnM6cGRmPSJodHRwOi8vbnMuYWRvYmUuY29tL3BkZi8xLjMvIj4KPHBkZjpQ + cm9kdWNlcj5NaWNyb3NvZnTCriBXb3JkIGZvciBPZmZpY2UgMzY1PC9wZGY6UHJvZHVjZXI+PC9y + ZGY6RGVzY3JpcHRpb24+CjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiICB4bWxuczpkYz0i + aHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iPgo8ZGM6Y3JlYXRvcj48cmRmOlNlcT48 + cmRmOmxpPktyaXN0YSBQcmF0aWNvPC9yZGY6bGk+PC9yZGY6U2VxPjwvZGM6Y3JlYXRvcj48L3Jk + ZjpEZXNjcmlwdGlvbj4KPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgIHhtbG5zOnhtcD0i + aHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyI+Cjx4bXA6Q3JlYXRvclRvb2w+TWljcm9zb2Z0 + wq4gV29yZCBmb3IgT2ZmaWNlIDM2NTwveG1wOkNyZWF0b3JUb29sPjx4bXA6Q3JlYXRlRGF0ZT4y + MDIwLTA0LTIyVDE2OjQ1OjI5LTA3OjAwPC94bXA6Q3JlYXRlRGF0ZT48eG1wOk1vZGlmeURhdGU+ + MjAyMC0wNC0yMlQxNjo0NToyOS0wNzowMDwveG1wOk1vZGlmeURhdGU+PC9yZGY6RGVzY3JpcHRp + b24+CjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiICB4bWxuczp4bXBNTT0iaHR0cDovL25z + LmFkb2JlLmNvbS94YXAvMS4wL21tLyI+Cjx4bXBNTTpEb2N1bWVudElEPnV1aWQ6NThCQjA4MDUt + RjY5Ri00NDBGLTgzOUItMURFMDI1NjUxREUyPC94bXBNTTpEb2N1bWVudElEPjx4bXBNTTpJbnN0 + YW5jZUlEPnV1aWQ6NThCQjA4MDUtRjY5Ri00NDBGLTgzOUItMURFMDI1NjUxREUyPC94bXBNTTpJ + bnN0YW5jZUlEPjwvcmRmOkRlc2NyaXB0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKPC9y + ZGY6UkRGPjwveDp4bXBtZXRhPjw/eHBhY2tldCBlbmQ9InciPz4NCmVuZHN0cmVhbQ0KZW5kb2Jq + DQoyNTQgMCBvYmoNCjw8L0Rpc3BsYXlEb2NUaXRsZSB0cnVlPj4NCmVuZG9iag0KMjU1IDAgb2Jq + DQo8PC9UeXBlL1hSZWYvU2l6ZSAyNTUvV1sgMSA0IDJdIC9Sb290IDEgMCBSL0luZm8gMTUgMCBS + L0lEWzwwNTA4QkI1ODlGRjYwRjQ0ODM5QjFERTAyNTY1MURFMj48MDUwOEJCNTg5RkY2MEY0NDgz + OUIxREUwMjU2NTFERTI+XSAvRmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0aCA1MDc+Pg0Kc3RyZWFt + DQp4nDXV93fPZxQH8E9sSojZGkG0tQmKGrVHFKU2tUeomrXTauy9YlMdKFV7U3vvHUWJvX7rv5B+ + 83nx3HOe17nn3Ht/fQdB5KWnR0X+mCDIYAv+C4lKD8mTFBJdJiRvASRgcki+SiExcSH5dQU7hhRK + DCk9JggyRU4XCZ7jBV7iFZ7h3eTryF5c8vsuO6KQCZmRBVmRDTmQE7nwAXIjD6LRCoVRCPmQF/kR + g4IogASUwIcogqL4CMVRDB+jJGJRGqVQBnGoiE/xCcqhLCqgPKqjMiqhKqqgGuJRB5+hBmqhJj5H + bTRCPdTFF6iPhmiAlmiCxmiGpmiB5vgSrdEGbfEV2qE9vkYHdEQndEYXdEU3dEcPfIOe6IXe6IO+ + 6If+eIMBGIhBSMRgDMG3GIrvMAzDMQIjMQqj8T3GYCzGYTwmYCImIQk/4EdMxk9IxhRMxTRMxwzM + xCzMxhzMxTzMx1ssxQIsxCIsxhKkYBmWYwVWYhVWYw3uYj1+x89Yi1+wDr/hV6RiCzZiAzbhD/yJ + zdiFrfgL27ENO7EDB7EHu7EPe3EA+3Ech3EIR/A3juEozuEkTuA0TuEszuAqLuA8LuEiruAy7uA6 + ruEmbuA2buEf3MN9PMC/eIhHSMNjPMHTSFpUSQ3DJj4jvSJVPCQqNmRGWkhK/SD4H/tbjC8NCmVu + ZHN0cmVhbQ0KZW5kb2JqDQp4cmVmDQowIDI1Ng0KMDAwMDAwMDAxNiA2NTUzNSBmDQowMDAwMDAw + MDE3IDAwMDAwIG4NCjAwMDAwMDAxNjggMDAwMDAgbg0KMDAwMDAwMDIzOCAwMDAwMCBuDQowMDAw + MDAwNTExIDAwMDAwIG4NCjAwMDAwMDM0NTAgMDAwMDAgbg0KMDAwMDAwMzYxOSAwMDAwMCBuDQow + MDAwMDAzODU5IDAwMDAwIG4NCjAwMDAwMDM5MTIgMDAwMDAgbg0KMDAwMDAwMzk2NSAwMDAwMCBu + DQowMDAwMDA0MTQwIDAwMDAwIG4NCjAwMDAwMDQzODYgMDAwMDAgbg0KMDAwMDAwNDY1MiAwMDAw + MCBuDQowMDAwMDA1MjAzIDAwMDAwIG4NCjAwMDAwMDU0NzggMDAwMDAgbg0KMDAwMDAwODU2MyAw + MDAwMCBuDQowMDAwMDAwMDE3IDY1NTM1IGYNCjAwMDAwMDAwMTggNjU1MzUgZg0KMDAwMDAwMDAx + OSA2NTUzNSBmDQowMDAwMDAwMDIwIDY1NTM1IGYNCjAwMDAwMDAwMjEgNjU1MzUgZg0KMDAwMDAw + MDAyMiA2NTUzNSBmDQowMDAwMDAwMDIzIDY1NTM1IGYNCjAwMDAwMDAwMjQgNjU1MzUgZg0KMDAw + MDAwMDAyNSA2NTUzNSBmDQowMDAwMDAwMDI2IDY1NTM1IGYNCjAwMDAwMDAwMjcgNjU1MzUgZg0K + MDAwMDAwMDAyOCA2NTUzNSBmDQowMDAwMDAwMDI5IDY1NTM1IGYNCjAwMDAwMDAwMzAgNjU1MzUg + Zg0KMDAwMDAwMDAzMSA2NTUzNSBmDQowMDAwMDAwMDMyIDY1NTM1IGYNCjAwMDAwMDAwMzMgNjU1 + MzUgZg0KMDAwMDAwMDAzNCA2NTUzNSBmDQowMDAwMDAwMDM1IDY1NTM1IGYNCjAwMDAwMDAwMzYg + NjU1MzUgZg0KMDAwMDAwMDAzNyA2NTUzNSBmDQowMDAwMDAwMDM4IDY1NTM1IGYNCjAwMDAwMDAw + MzkgNjU1MzUgZg0KMDAwMDAwMDA0MCA2NTUzNSBmDQowMDAwMDAwMDQxIDY1NTM1IGYNCjAwMDAw + MDAwNDIgNjU1MzUgZg0KMDAwMDAwMDA0MyA2NTUzNSBmDQowMDAwMDAwMDQ0IDY1NTM1IGYNCjAw + MDAwMDAwNDUgNjU1MzUgZg0KMDAwMDAwMDA0NiA2NTUzNSBmDQowMDAwMDAwMDQ3IDY1NTM1IGYN + CjAwMDAwMDAwNDggNjU1MzUgZg0KMDAwMDAwMDA0OSA2NTUzNSBmDQowMDAwMDAwMDUwIDY1NTM1 + IGYNCjAwMDAwMDAwNTEgNjU1MzUgZg0KMDAwMDAwMDA1MiA2NTUzNSBmDQowMDAwMDAwMDUzIDY1 + NTM1IGYNCjAwMDAwMDAwNTQgNjU1MzUgZg0KMDAwMDAwMDA1NSA2NTUzNSBmDQowMDAwMDAwMDU2 + IDY1NTM1IGYNCjAwMDAwMDAwNTcgNjU1MzUgZg0KMDAwMDAwMDA1OCA2NTUzNSBmDQowMDAwMDAw + MDU5IDY1NTM1IGYNCjAwMDAwMDAwNjAgNjU1MzUgZg0KMDAwMDAwMDA2MSA2NTUzNSBmDQowMDAw + MDAwMDYyIDY1NTM1IGYNCjAwMDAwMDAwNjMgNjU1MzUgZg0KMDAwMDAwMDA2NCA2NTUzNSBmDQow + MDAwMDAwMDY1IDY1NTM1IGYNCjAwMDAwMDAwNjYgNjU1MzUgZg0KMDAwMDAwMDA2NyA2NTUzNSBm + DQowMDAwMDAwMDY4IDY1NTM1IGYNCjAwMDAwMDAwNjkgNjU1MzUgZg0KMDAwMDAwMDA3MCA2NTUz + NSBmDQowMDAwMDAwMDcxIDY1NTM1IGYNCjAwMDAwMDAwNzIgNjU1MzUgZg0KMDAwMDAwMDA3MyA2 + NTUzNSBmDQowMDAwMDAwMDc0IDY1NTM1IGYNCjAwMDAwMDAwNzUgNjU1MzUgZg0KMDAwMDAwMDA3 + NiA2NTUzNSBmDQowMDAwMDAwMDc3IDY1NTM1IGYNCjAwMDAwMDAwNzggNjU1MzUgZg0KMDAwMDAw + MDA3OSA2NTUzNSBmDQowMDAwMDAwMDgwIDY1NTM1IGYNCjAwMDAwMDAwODEgNjU1MzUgZg0KMDAw + MDAwMDA4MiA2NTUzNSBmDQowMDAwMDAwMDgzIDY1NTM1IGYNCjAwMDAwMDAwODQgNjU1MzUgZg0K + MDAwMDAwMDA4NSA2NTUzNSBmDQowMDAwMDAwMDg2IDY1NTM1IGYNCjAwMDAwMDAwODcgNjU1MzUg + Zg0KMDAwMDAwMDA4OCA2NTUzNSBmDQowMDAwMDAwMDg5IDY1NTM1IGYNCjAwMDAwMDAwOTAgNjU1 + MzUgZg0KMDAwMDAwMDA5MSA2NTUzNSBmDQowMDAwMDAwMDkyIDY1NTM1IGYNCjAwMDAwMDAwOTMg + NjU1MzUgZg0KMDAwMDAwMDA5NCA2NTUzNSBmDQowMDAwMDAwMDk1IDY1NTM1IGYNCjAwMDAwMDAw + OTYgNjU1MzUgZg0KMDAwMDAwMDA5NyA2NTUzNSBmDQowMDAwMDAwMDk4IDY1NTM1IGYNCjAwMDAw + MDAwOTkgNjU1MzUgZg0KMDAwMDAwMDEwMCA2NTUzNSBmDQowMDAwMDAwMTAxIDY1NTM1IGYNCjAw + MDAwMDAxMDIgNjU1MzUgZg0KMDAwMDAwMDEwMyA2NTUzNSBmDQowMDAwMDAwMTA0IDY1NTM1IGYN + CjAwMDAwMDAxMDUgNjU1MzUgZg0KMDAwMDAwMDEwNiA2NTUzNSBmDQowMDAwMDAwMTA3IDY1NTM1 + IGYNCjAwMDAwMDAxMDggNjU1MzUgZg0KMDAwMDAwMDEwOSA2NTUzNSBmDQowMDAwMDAwMTEwIDY1 + NTM1IGYNCjAwMDAwMDAxMTEgNjU1MzUgZg0KMDAwMDAwMDExMiA2NTUzNSBmDQowMDAwMDAwMTEz + IDY1NTM1IGYNCjAwMDAwMDAxMTQgNjU1MzUgZg0KMDAwMDAwMDExNSA2NTUzNSBmDQowMDAwMDAw + MTE2IDY1NTM1IGYNCjAwMDAwMDAxMTcgNjU1MzUgZg0KMDAwMDAwMDExOCA2NTUzNSBmDQowMDAw + MDAwMTE5IDY1NTM1IGYNCjAwMDAwMDAxMjAgNjU1MzUgZg0KMDAwMDAwMDEyMSA2NTUzNSBmDQow + MDAwMDAwMTIyIDY1NTM1IGYNCjAwMDAwMDAxMjMgNjU1MzUgZg0KMDAwMDAwMDEyNCA2NTUzNSBm + DQowMDAwMDAwMTI1IDY1NTM1IGYNCjAwMDAwMDAxMjYgNjU1MzUgZg0KMDAwMDAwMDEyNyA2NTUz + NSBmDQowMDAwMDAwMTI4IDY1NTM1IGYNCjAwMDAwMDAxMjkgNjU1MzUgZg0KMDAwMDAwMDEzMCA2 + NTUzNSBmDQowMDAwMDAwMTMxIDY1NTM1IGYNCjAwMDAwMDAxMzIgNjU1MzUgZg0KMDAwMDAwMDEz + MyA2NTUzNSBmDQowMDAwMDAwMTM0IDY1NTM1IGYNCjAwMDAwMDAxMzUgNjU1MzUgZg0KMDAwMDAw + MDEzNiA2NTUzNSBmDQowMDAwMDAwMTM3IDY1NTM1IGYNCjAwMDAwMDAxMzggNjU1MzUgZg0KMDAw + MDAwMDEzOSA2NTUzNSBmDQowMDAwMDAwMTQwIDY1NTM1IGYNCjAwMDAwMDAxNDEgNjU1MzUgZg0K + MDAwMDAwMDE0MiA2NTUzNSBmDQowMDAwMDAwMTQzIDY1NTM1IGYNCjAwMDAwMDAxNDQgNjU1MzUg + Zg0KMDAwMDAwMDE0NSA2NTUzNSBmDQowMDAwMDAwMTQ2IDY1NTM1IGYNCjAwMDAwMDAxNDcgNjU1 + MzUgZg0KMDAwMDAwMDE0OCA2NTUzNSBmDQowMDAwMDAwMTQ5IDY1NTM1IGYNCjAwMDAwMDAxNTAg + NjU1MzUgZg0KMDAwMDAwMDE1MSA2NTUzNSBmDQowMDAwMDAwMTUyIDY1NTM1IGYNCjAwMDAwMDAx + NTMgNjU1MzUgZg0KMDAwMDAwMDE1NCA2NTUzNSBmDQowMDAwMDAwMTU1IDY1NTM1IGYNCjAwMDAw + MDAxNTYgNjU1MzUgZg0KMDAwMDAwMDE1NyA2NTUzNSBmDQowMDAwMDAwMTU4IDY1NTM1IGYNCjAw + MDAwMDAxNTkgNjU1MzUgZg0KMDAwMDAwMDE2MCA2NTUzNSBmDQowMDAwMDAwMTYxIDY1NTM1IGYN + CjAwMDAwMDAxNjIgNjU1MzUgZg0KMDAwMDAwMDE2MyA2NTUzNSBmDQowMDAwMDAwMTY0IDY1NTM1 + IGYNCjAwMDAwMDAxNjUgNjU1MzUgZg0KMDAwMDAwMDE2NiA2NTUzNSBmDQowMDAwMDAwMTY3IDY1 + NTM1IGYNCjAwMDAwMDAxNjggNjU1MzUgZg0KMDAwMDAwMDE2OSA2NTUzNSBmDQowMDAwMDAwMTcw + IDY1NTM1IGYNCjAwMDAwMDAxNzEgNjU1MzUgZg0KMDAwMDAwMDE3MiA2NTUzNSBmDQowMDAwMDAw + MTczIDY1NTM1IGYNCjAwMDAwMDAxNzQgNjU1MzUgZg0KMDAwMDAwMDE3NSA2NTUzNSBmDQowMDAw + MDAwMTc2IDY1NTM1IGYNCjAwMDAwMDAxNzcgNjU1MzUgZg0KMDAwMDAwMDE3OCA2NTUzNSBmDQow + MDAwMDAwMTc5IDY1NTM1IGYNCjAwMDAwMDAxODAgNjU1MzUgZg0KMDAwMDAwMDE4MSA2NTUzNSBm + DQowMDAwMDAwMTgyIDY1NTM1IGYNCjAwMDAwMDAxODMgNjU1MzUgZg0KMDAwMDAwMDE4NCA2NTUz + NSBmDQowMDAwMDAwMTg1IDY1NTM1IGYNCjAwMDAwMDAxODYgNjU1MzUgZg0KMDAwMDAwMDE4NyA2 + NTUzNSBmDQowMDAwMDAwMTg4IDY1NTM1IGYNCjAwMDAwMDAxODkgNjU1MzUgZg0KMDAwMDAwMDE5 + MCA2NTUzNSBmDQowMDAwMDAwMTkxIDY1NTM1IGYNCjAwMDAwMDAxOTIgNjU1MzUgZg0KMDAwMDAw + MDE5MyA2NTUzNSBmDQowMDAwMDAwMTk0IDY1NTM1IGYNCjAwMDAwMDAxOTUgNjU1MzUgZg0KMDAw + MDAwMDE5NiA2NTUzNSBmDQowMDAwMDAwMTk3IDY1NTM1IGYNCjAwMDAwMDAxOTggNjU1MzUgZg0K + MDAwMDAwMDE5OSA2NTUzNSBmDQowMDAwMDAwMjAwIDY1NTM1IGYNCjAwMDAwMDAyMDEgNjU1MzUg + Zg0KMDAwMDAwMDIwMiA2NTUzNSBmDQowMDAwMDAwMjAzIDY1NTM1IGYNCjAwMDAwMDAyMDQgNjU1 + MzUgZg0KMDAwMDAwMDIwNSA2NTUzNSBmDQowMDAwMDAwMjA2IDY1NTM1IGYNCjAwMDAwMDAyMDcg + NjU1MzUgZg0KMDAwMDAwMDIwOCA2NTUzNSBmDQowMDAwMDAwMjA5IDY1NTM1IGYNCjAwMDAwMDAy + MTAgNjU1MzUgZg0KMDAwMDAwMDIxMSA2NTUzNSBmDQowMDAwMDAwMjEyIDY1NTM1IGYNCjAwMDAw + MDAyMTMgNjU1MzUgZg0KMDAwMDAwMDIxNCA2NTUzNSBmDQowMDAwMDAwMjE1IDY1NTM1IGYNCjAw + MDAwMDAyMTYgNjU1MzUgZg0KMDAwMDAwMDIxNyA2NTUzNSBmDQowMDAwMDAwMjE4IDY1NTM1IGYN + CjAwMDAwMDAyMTkgNjU1MzUgZg0KMDAwMDAwMDIyMCA2NTUzNSBmDQowMDAwMDAwMjIxIDY1NTM1 + IGYNCjAwMDAwMDAyMjIgNjU1MzUgZg0KMDAwMDAwMDIyMyA2NTUzNSBmDQowMDAwMDAwMjI0IDY1 + NTM1IGYNCjAwMDAwMDAyMjUgNjU1MzUgZg0KMDAwMDAwMDIyNiA2NTUzNSBmDQowMDAwMDAwMjI3 + IDY1NTM1IGYNCjAwMDAwMDAyMjggNjU1MzUgZg0KMDAwMDAwMDIyOSA2NTUzNSBmDQowMDAwMDAw + MjMwIDY1NTM1IGYNCjAwMDAwMDAyMzEgNjU1MzUgZg0KMDAwMDAwMDIzMiA2NTUzNSBmDQowMDAw + MDAwMjMzIDY1NTM1IGYNCjAwMDAwMDAyMzQgNjU1MzUgZg0KMDAwMDAwMDIzNSA2NTUzNSBmDQow + MDAwMDAwMjM2IDY1NTM1IGYNCjAwMDAwMDAyMzcgNjU1MzUgZg0KMDAwMDAwMDIzOCA2NTUzNSBm + DQowMDAwMDAwMjM5IDY1NTM1IGYNCjAwMDAwMDAyNDAgNjU1MzUgZg0KMDAwMDAwMDI0MSA2NTUz + NSBmDQowMDAwMDAwMjQyIDY1NTM1IGYNCjAwMDAwMDAyNDMgNjU1MzUgZg0KMDAwMDAwMDI0NCA2 + NTUzNSBmDQowMDAwMDAwMjQ1IDY1NTM1IGYNCjAwMDAwMDAyNDYgNjU1MzUgZg0KMDAwMDAwMDI0 + NyA2NTUzNSBmDQowMDAwMDAwMjQ4IDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAx + MTk4NyAwMDAwMCBuDQowMDAwMDEyMjg5IDAwMDAwIG4NCjAwMDAwNjU1NjQgMDAwMDAgbg0KMDAw + MDA2NTgyMiAwMDAwMCBuDQowMDAwMDk5NTQ4IDAwMDAwIG4NCjAwMDAxMDI3MTYgMDAwMDAgbg0K + MDAwMDEwMjc2MiAwMDAwMCBuDQp0cmFpbGVyDQo8PC9TaXplIDI1Ni9Sb290IDEgMCBSL0luZm8g + MTUgMCBSL0lEWzwwNTA4QkI1ODlGRjYwRjQ0ODM5QjFERTAyNTY1MURFMj48MDUwOEJCNTg5RkY2 + MEY0NDgzOUIxREUwMjU2NTFERTI+XSA+Pg0Kc3RhcnR4cmVmDQoxMDM0NzINCiUlRU9GDQp4cmVm + DQowIDANCnRyYWlsZXINCjw8L1NpemUgMjU2L1Jvb3QgMSAwIFIvSW5mbyAxNSAwIFIvSURbPDA1 + MDhCQjU4OUZGNjBGNDQ4MzlCMURFMDI1NjUxREUyPjwwNTA4QkI1ODlGRjYwRjQ0ODM5QjFERTAy + NTY1MURFMj5dIC9QcmV2IDEwMzQ3Mi9YUmVmU3RtIDEwMjc2Mj4+DQpzdGFydHhyZWYNCjEwODc1 + Mg0KJSVFT0Y= + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '108935' + Content-Type: + - application/pdf + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/prebuilt/receipt/analyze?includeTextDetails=true + response: + body: + string: '' + headers: + apim-request-id: + - b786755b-8fed-49f4-a90b-f52092dc72e7 + content-length: + - '0' + date: + - Mon, 27 Apr 2020 18:03:18 GMT + operation-location: + - https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/prebuilt/receipt/analyzeResults/b786755b-8fed-49f4-a90b-f52092dc72e7 + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '646' + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/prebuilt/receipt/analyzeResults/b786755b-8fed-49f4-a90b-f52092dc72e7 + response: + body: + string: '{"status":"running","createdDateTime":"2020-04-27T18:03:18Z","lastUpdatedDateTime":"2020-04-27T18:03:19Z"}' + headers: + apim-request-id: + - cbafb79d-2787-405d-bd1a-e360ab0346ac + content-type: + - application/json; charset=utf-8 + date: + - Mon, 27 Apr 2020 18:03:23 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + transfer-encoding: + - chunked + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '108' + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/prebuilt/receipt/analyzeResults/b786755b-8fed-49f4-a90b-f52092dc72e7 + response: + body: + string: '{"status":"running","createdDateTime":"2020-04-27T18:03:18Z","lastUpdatedDateTime":"2020-04-27T18:03:19Z"}' + headers: + apim-request-id: + - 41cb3c45-3833-4b25-819a-d42691a15c9d + content-type: + - application/json; charset=utf-8 + date: + - Mon, 27 Apr 2020 18:03:28 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + transfer-encoding: + - chunked + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '109' + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/prebuilt/receipt/analyzeResults/b786755b-8fed-49f4-a90b-f52092dc72e7 + response: + body: + string: '{"status":"succeeded","createdDateTime":"2020-04-27T18:03:18Z","lastUpdatedDateTime":"2020-04-27T18:03:31Z","analyzeResult":{"version":"2.0.0","readResults":[{"page":1,"angle":0,"width":8.5,"height":11,"unit":"inch","language":"en","lines":[{"text":"Company + A Invoice","boundingBox":[0.8861,1.1217,2.3783,1.1217,2.3783,1.2812,0.8861,1.2812],"words":[{"text":"Company","boundingBox":[0.8861,1.1232,1.6203,1.1232,1.6203,1.2812,0.8861,1.2812],"confidence":1},{"text":"A","boundingBox":[1.6696,1.1242,1.7749,1.1242,1.7749,1.2473,1.6696,1.2473],"confidence":1},{"text":"Invoice","boundingBox":[1.8389,1.1217,2.3783,1.1217,2.3783,1.2485,1.8389,1.2485],"confidence":1}]},{"text":"Invoice + For:","boundingBox":[6.0211,1.0656,7.0357,1.0656,7.0357,1.2121,6.0211,1.2121],"words":[{"text":"Invoice","boundingBox":[6.0211,1.0656,6.6362,1.0656,6.6362,1.2121,6.0211,1.2121],"confidence":1},{"text":"For:","boundingBox":[6.7147,1.0691,7.0357,1.0691,7.0357,1.2121,6.7147,1.2121],"confidence":1}]},{"text":"Address:","boundingBox":[0.8791,1.4825,1.5657,1.4825,1.5657,1.6155,0.8791,1.6155],"words":[{"text":"Address:","boundingBox":[0.8791,1.4825,1.5657,1.4825,1.5657,1.6155,0.8791,1.6155],"confidence":1}]},{"text":"Bilbo + Baggins","boundingBox":[6.0164,1.4503,6.8967,1.4503,6.8967,1.5931,6.0164,1.5931],"words":[{"text":"Bilbo","boundingBox":[6.0164,1.4503,6.3392,1.4503,6.3392,1.5649,6.0164,1.5649],"confidence":1},{"text":"Baggins","boundingBox":[6.396,1.4556,6.8967,1.4556,6.8967,1.5931,6.396,1.5931],"confidence":1}]},{"text":"123 + Hobbit Lane","boundingBox":[6.0165,1.6707,7.1006,1.6707,7.1006,1.7854,6.0165,1.7854],"words":[{"text":"123","boundingBox":[6.0165,1.6772,6.2434,1.6772,6.2434,1.7854,6.0165,1.7854],"confidence":1},{"text":"Hobbit","boundingBox":[6.3033,1.6707,6.7463,1.6707,6.7463,1.7854,6.3033,1.7854],"confidence":1},{"text":"Lane","boundingBox":[6.803,1.6782,7.1006,1.6782,7.1006,1.7854,6.803,1.7854],"confidence":1}]},{"text":"567 + Main St.","boundingBox":[0.8852,1.846,1.713,1.846,1.713,1.9554,0.8852,1.9554],"words":[{"text":"567","boundingBox":[0.8852,1.8472,1.1203,1.8472,1.1203,1.9554,0.8852,1.9554],"confidence":1},{"text":"Main","boundingBox":[1.1777,1.846,1.5022,1.846,1.5022,1.9554,1.1777,1.9554],"confidence":1},{"text":"St.","boundingBox":[1.5558,1.8472,1.713,1.8472,1.713,1.9554,1.5558,1.9554],"confidence":1}]},{"text":"Redmond, + WA","boundingBox":[6.0164,1.891,6.9793,1.891,6.9793,2.0275,6.0164,2.0275],"words":[{"text":"Redmond,","boundingBox":[6.0164,1.891,6.6861,1.891,6.6861,2.0275,6.0164,2.0275],"confidence":1},{"text":"WA","boundingBox":[6.7408,1.8982,6.9793,1.8982,6.9793,2.0044,6.7408,2.0044],"confidence":1}]},{"text":"Redmond, + WA","boundingBox":[0.891,2.061,1.8537,2.061,1.8537,2.1975,0.891,2.1975],"words":[{"text":"Redmond,","boundingBox":[0.891,2.061,1.5605,2.061,1.5605,2.1975,0.891,2.1975],"confidence":1},{"text":"WA","boundingBox":[1.6152,2.0682,1.8537,2.0682,1.8537,2.1744,1.6152,2.1744],"confidence":1}]},{"text":"555-555-5555","boundingBox":[6.0105,2.1187,6.9371,2.1187,6.9371,2.2254,6.0105,2.2254],"words":[{"text":"555-555-5555","boundingBox":[6.0105,2.1187,6.9371,2.1187,6.9371,2.2254,6.0105,2.2254],"confidence":1}]},{"text":"555-555-5555","boundingBox":[0.8852,2.2887,1.8119,2.2887,1.8119,2.3954,0.8852,2.3954],"words":[{"text":"555-555-5555","boundingBox":[0.8852,2.2887,1.8119,2.2887,1.8119,2.3954,0.8852,2.3954],"confidence":1}]},{"text":"Item","boundingBox":[1.0943,3.0018,1.3842,3.0018,1.3842,3.109,1.0943,3.109],"words":[{"text":"Item","boundingBox":[1.0943,3.0018,1.3842,3.0018,1.3842,3.109,1.0943,3.109],"confidence":1}]},{"text":"Quantity","boundingBox":[3.2527,2.9996,3.8367,2.9996,3.8367,3.1371,3.2527,3.1371],"words":[{"text":"Quantity","boundingBox":[3.2527,2.9996,3.8367,2.9996,3.8367,3.1371,3.2527,3.1371],"confidence":1}]},{"text":"Price","boundingBox":[5.423,2.9996,5.7372,2.9996,5.7372,3.109,5.423,3.109],"words":[{"text":"Price","boundingBox":[5.423,2.9996,5.7372,2.9996,5.7372,3.109,5.423,3.109],"confidence":1}]},{"text":"A","boundingBox":[1.0832,3.2118,1.174,3.2118,1.174,3.318,1.0832,3.318],"words":[{"text":"A","boundingBox":[1.0832,3.2118,1.174,3.2118,1.174,3.318,1.0832,3.318],"confidence":1}]},{"text":"1","boundingBox":[3.2589,3.2116,3.3202,3.2116,3.3202,3.3176,3.2589,3.3176],"words":[{"text":"1","boundingBox":[3.2589,3.2116,3.3202,3.2116,3.3202,3.3176,3.2589,3.3176],"confidence":1}]},{"text":"10.99","boundingBox":[5.4232,3.2108,5.7784,3.2108,5.7784,3.319,5.4232,3.319],"words":[{"text":"10.99","boundingBox":[5.4232,3.2108,5.7784,3.2108,5.7784,3.319,5.4232,3.319],"confidence":1}]},{"text":"B","boundingBox":[1.0943,3.4256,1.1637,3.4256,1.1637,3.531,1.0943,3.531],"words":[{"text":"B","boundingBox":[1.0943,3.4256,1.1637,3.4256,1.1637,3.531,1.0943,3.531],"confidence":1}]},{"text":"2","boundingBox":[3.2541,3.4241,3.3199,3.4241,3.3199,3.531,3.2541,3.531],"words":[{"text":"2","boundingBox":[3.2541,3.4241,3.3199,3.4241,3.3199,3.531,3.2541,3.531],"confidence":1}]},{"text":"14.67","boundingBox":[5.4232,3.4241,5.7789,3.4241,5.7789,3.5323,5.4232,3.5323],"words":[{"text":"14.67","boundingBox":[5.4232,3.4241,5.7789,3.4241,5.7789,3.5323,5.4232,3.5323],"confidence":1}]},{"text":"C","boundingBox":[1.0882,3.6343,1.1647,3.6343,1.1647,3.7421,1.0882,3.7421],"words":[{"text":"C","boundingBox":[1.0882,3.6343,1.1647,3.6343,1.1647,3.7421,1.0882,3.7421],"confidence":1}]},{"text":"4","boundingBox":[3.2486,3.6351,3.3244,3.6351,3.3244,3.7413,3.2486,3.7413],"words":[{"text":"4","boundingBox":[3.2486,3.6351,3.3244,3.6351,3.3244,3.7413,3.2486,3.7413],"confidence":1}]},{"text":"15.66","boundingBox":[5.4232,3.6341,5.78,3.6341,5.78,3.7423,5.4232,3.7423],"words":[{"text":"15.66","boundingBox":[5.4232,3.6341,5.78,3.6341,5.78,3.7423,5.4232,3.7423],"confidence":1}]},{"text":"D","boundingBox":[1.0943,3.8456,1.1753,3.8456,1.1753,3.951,1.0943,3.951],"words":[{"text":"D","boundingBox":[1.0943,3.8456,1.1753,3.8456,1.1753,3.951,1.0943,3.951],"confidence":1}]},{"text":"1","boundingBox":[3.2589,3.845,3.3202,3.845,3.3202,3.951,3.2589,3.951],"words":[{"text":"1","boundingBox":[3.2589,3.845,3.3202,3.845,3.3202,3.951,3.2589,3.951],"confidence":1}]},{"text":"12.00","boundingBox":[5.4232,3.8441,5.7809,3.8441,5.7809,3.9523,5.4232,3.9523],"words":[{"text":"12.00","boundingBox":[5.4232,3.8441,5.7809,3.8441,5.7809,3.9523,5.4232,3.9523],"confidence":1}]},{"text":"E","boundingBox":[1.0943,4.0561,1.153,4.0561,1.153,4.1614,1.0943,4.1614],"words":[{"text":"E","boundingBox":[1.0943,4.0561,1.153,4.0561,1.153,4.1614,1.0943,4.1614],"confidence":1}]},{"text":"4","boundingBox":[3.2486,4.0556,3.3244,4.0556,3.3244,4.1617,3.2486,4.1617],"words":[{"text":"4","boundingBox":[3.2486,4.0556,3.3244,4.0556,3.3244,4.1617,3.2486,4.1617],"confidence":1}]},{"text":"10.00","boundingBox":[5.4232,4.0546,5.781,4.0546,5.781,4.1627,5.4232,4.1627],"words":[{"text":"10.00","boundingBox":[5.4232,4.0546,5.781,4.0546,5.781,4.1627,5.4232,4.1627],"confidence":1}]},{"text":"F","boundingBox":[1.0943,4.2661,1.1497,4.2661,1.1497,4.3717,1.0943,4.3717],"words":[{"text":"F","boundingBox":[1.0943,4.2661,1.1497,4.2661,1.1497,4.3717,1.0943,4.3717],"confidence":1}]},{"text":"6","boundingBox":[3.2534,4.2646,3.3226,4.2646,3.3226,4.3727,3.2534,4.3727],"words":[{"text":"6","boundingBox":[3.2534,4.2646,3.3226,4.2646,3.3226,4.3727,3.2534,4.3727],"confidence":1}]},{"text":"12.00","boundingBox":[5.4232,4.2646,5.7809,4.2646,5.7809,4.3727,5.4232,4.3727],"words":[{"text":"12.00","boundingBox":[5.4232,4.2646,5.7809,4.2646,5.7809,4.3727,5.4232,4.3727],"confidence":1}]},{"text":"G","boundingBox":[1.0877,4.4746,1.1735,4.4746,1.1735,4.5827,1.0877,4.5827],"words":[{"text":"G","boundingBox":[1.0877,4.4746,1.1735,4.4746,1.1735,4.5827,1.0877,4.5827],"confidence":1}]},{"text":"8","boundingBox":[3.2514,4.4746,3.3224,4.4746,3.3224,4.5827,3.2514,4.5827],"words":[{"text":"8","boundingBox":[3.2514,4.4746,3.3224,4.4746,3.3224,4.5827,3.2514,4.5827],"confidence":1}]},{"text":"22.00","boundingBox":[5.4184,4.4746,5.781,4.4746,5.781,4.5827,5.4184,4.5827],"words":[{"text":"22.00","boundingBox":[5.4184,4.4746,5.781,4.4746,5.781,4.5827,5.4184,4.5827],"confidence":1}]},{"text":"Subtotal: + 300.00","boundingBox":[5.5075,4.8981,6.632,4.8981,6.632,5.0131,5.5075,5.0131],"words":[{"text":"Subtotal:","boundingBox":[5.5075,4.8981,6.1249,4.8981,6.1249,5.0131,5.5075,5.0131],"confidence":1},{"text":"300.00","boundingBox":[6.1794,4.9042,6.632,4.9042,6.632,5.0131,6.1794,5.0131],"confidence":1}]},{"text":"Tax: + 30.00","boundingBox":[5.5034,5.1245,6.2022,5.1245,6.2022,5.2333,5.5034,5.2333],"words":[{"text":"Tax:","boundingBox":[5.5034,5.1263,5.7812,5.1263,5.7812,5.2333,5.5034,5.2333],"confidence":1},{"text":"30.00","boundingBox":[5.836,5.1245,6.2022,5.1245,6.2022,5.2333,5.836,5.2333],"confidence":1}]},{"text":"Tip: + 100.00","boundingBox":[5.5034,5.3412,6.2587,5.3412,6.2587,5.481,5.5034,5.481],"words":[{"text":"Tip:","boundingBox":[5.5034,5.3412,5.7515,5.3412,5.7515,5.481,5.5034,5.481],"confidence":1},{"text":"100.00","boundingBox":[5.811,5.3445,6.2587,5.3445,6.2587,5.4533,5.811,5.4533],"confidence":1}]},{"text":"Total: + 430.00","boundingBox":[5.5034,5.5583,6.3987,5.5583,6.3987,5.6733,5.5034,5.6733],"words":[{"text":"Total:","boundingBox":[5.5034,5.5583,5.8915,5.5583,5.8915,5.6733,5.5034,5.6733],"confidence":1},{"text":"430.00","boundingBox":[5.942,5.5645,6.3987,5.5645,6.3987,5.6733,5.942,5.6733],"confidence":1}]},{"text":"Signature: + ____ Bilbo Baggins__________","boundingBox":[1.0055,6.6553,3.8342,6.6553,3.8342,6.7981,1.0055,6.7981],"words":[{"text":"Signature:","boundingBox":[1.0055,6.6581,1.6987,6.6581,1.6987,6.7981,1.0055,6.7981],"confidence":1},{"text":"____","boundingBox":[1.747,6.7829,2.0809,6.7829,2.0809,6.7981,1.747,6.7981],"confidence":1},{"text":"Bilbo","boundingBox":[2.0925,6.6553,2.4278,6.6553,2.4278,6.7703,2.0925,6.7703],"confidence":1},{"text":"Baggins__________","boundingBox":[2.4823,6.6581,3.8342,6.6581,3.8342,6.7981,2.4823,6.7981],"confidence":1}]}]},{"page":2,"angle":0,"width":8.4967,"height":10.9967,"unit":"inch","language":"en"},{"page":3,"angle":0,"width":8.5,"height":11,"unit":"inch","language":"en","lines":[{"text":"Company + B Invoice","boundingBox":[0.8861,1.1217,2.3734,1.1217,2.3734,1.2812,0.8861,1.2812],"words":[{"text":"Company","boundingBox":[0.8861,1.1232,1.6203,1.1232,1.6203,1.2812,0.8861,1.2812],"confidence":1},{"text":"B","boundingBox":[1.6836,1.1248,1.764,1.1248,1.764,1.2469,1.6836,1.2469],"confidence":1},{"text":"Invoice","boundingBox":[1.8336,1.1217,2.3734,1.1217,2.3734,1.2485,1.8336,1.2485],"confidence":1}]},{"text":"Invoice + For:","boundingBox":[6.0211,1.0656,7.0357,1.0656,7.0357,1.2121,6.0211,1.2121],"words":[{"text":"Invoice","boundingBox":[6.0211,1.0656,6.6362,1.0656,6.6362,1.2121,6.0211,1.2121],"confidence":1},{"text":"For:","boundingBox":[6.7147,1.0691,7.0357,1.0691,7.0357,1.2121,6.7147,1.2121],"confidence":1}]},{"text":"Address:","boundingBox":[0.8791,1.4825,1.5657,1.4825,1.5657,1.6155,0.8791,1.6155],"words":[{"text":"Address:","boundingBox":[0.8791,1.4825,1.5657,1.4825,1.5657,1.6155,0.8791,1.6155],"confidence":1}]},{"text":"Frodo + Baggins","boundingBox":[6.0164,1.4506,6.9506,1.4506,6.9506,1.5931,6.0164,1.5931],"words":[{"text":"Frodo","boundingBox":[6.0164,1.4506,6.3895,1.4506,6.3895,1.5649,6.0164,1.5649],"confidence":1},{"text":"Baggins","boundingBox":[6.45,1.4556,6.9506,1.4556,6.9506,1.5931,6.45,1.5931],"confidence":1}]},{"text":"123 + Hobbit Lane","boundingBox":[6.0165,1.6707,7.1006,1.6707,7.1006,1.7854,6.0165,1.7854],"words":[{"text":"123","boundingBox":[6.0165,1.6772,6.2434,1.6772,6.2434,1.7854,6.0165,1.7854],"confidence":1},{"text":"Hobbit","boundingBox":[6.3033,1.6707,6.7463,1.6707,6.7463,1.7854,6.3033,1.7854],"confidence":1},{"text":"Lane","boundingBox":[6.803,1.6782,7.1006,1.6782,7.1006,1.7854,6.803,1.7854],"confidence":1}]},{"text":"567 + Main St.","boundingBox":[0.8852,1.846,1.713,1.846,1.713,1.9554,0.8852,1.9554],"words":[{"text":"567","boundingBox":[0.8852,1.8472,1.1203,1.8472,1.1203,1.9554,0.8852,1.9554],"confidence":1},{"text":"Main","boundingBox":[1.1777,1.846,1.5022,1.846,1.5022,1.9554,1.1777,1.9554],"confidence":1},{"text":"St.","boundingBox":[1.5558,1.8472,1.713,1.8472,1.713,1.9554,1.5558,1.9554],"confidence":1}]},{"text":"Redmond, + WA","boundingBox":[6.0164,1.891,6.9793,1.891,6.9793,2.0275,6.0164,2.0275],"words":[{"text":"Redmond,","boundingBox":[6.0164,1.891,6.6861,1.891,6.6861,2.0275,6.0164,2.0275],"confidence":1},{"text":"WA","boundingBox":[6.7408,1.8982,6.9793,1.8982,6.9793,2.0044,6.7408,2.0044],"confidence":1}]},{"text":"Redmond, + WA","boundingBox":[0.891,2.061,1.8537,2.061,1.8537,2.1975,0.891,2.1975],"words":[{"text":"Redmond,","boundingBox":[0.891,2.061,1.5605,2.061,1.5605,2.1975,0.891,2.1975],"confidence":1},{"text":"WA","boundingBox":[1.6152,2.0682,1.8537,2.0682,1.8537,2.1744,1.6152,2.1744],"confidence":1}]},{"text":"555-555-5555","boundingBox":[6.0105,2.1187,6.9371,2.1187,6.9371,2.2254,6.0105,2.2254],"words":[{"text":"555-555-5555","boundingBox":[6.0105,2.1187,6.9371,2.1187,6.9371,2.2254,6.0105,2.2254],"confidence":1}]},{"text":"555-555-5555","boundingBox":[0.8852,2.2887,1.8119,2.2887,1.8119,2.3954,0.8852,2.3954],"words":[{"text":"555-555-5555","boundingBox":[0.8852,2.2887,1.8119,2.2887,1.8119,2.3954,0.8852,2.3954],"confidence":1}]},{"text":"Item","boundingBox":[1.0943,3.0018,1.3842,3.0018,1.3842,3.109,1.0943,3.109],"words":[{"text":"Item","boundingBox":[1.0943,3.0018,1.3842,3.0018,1.3842,3.109,1.0943,3.109],"confidence":1}]},{"text":"Quantity","boundingBox":[3.2527,2.9996,3.8367,2.9996,3.8367,3.1371,3.2527,3.1371],"words":[{"text":"Quantity","boundingBox":[3.2527,2.9996,3.8367,2.9996,3.8367,3.1371,3.2527,3.1371],"confidence":1}]},{"text":"Price","boundingBox":[5.423,2.9996,5.7372,2.9996,5.7372,3.109,5.423,3.109],"words":[{"text":"Price","boundingBox":[5.423,2.9996,5.7372,2.9996,5.7372,3.109,5.423,3.109],"confidence":1}]},{"text":"A","boundingBox":[1.0832,3.2118,1.174,3.2118,1.174,3.318,1.0832,3.318],"words":[{"text":"A","boundingBox":[1.0832,3.2118,1.174,3.2118,1.174,3.318,1.0832,3.318],"confidence":1}]},{"text":"10","boundingBox":[3.2589,3.2108,3.4067,3.2108,3.4067,3.319,3.2589,3.319],"words":[{"text":"10","boundingBox":[3.2589,3.2108,3.4067,3.2108,3.4067,3.319,3.2589,3.319],"confidence":1}]},{"text":"100.99","boundingBox":[5.4232,3.2108,5.8617,3.2108,5.8617,3.319,5.4232,3.319],"words":[{"text":"100.99","boundingBox":[5.4232,3.2108,5.8617,3.2108,5.8617,3.319,5.4232,3.319],"confidence":1}]},{"text":"B","boundingBox":[1.0943,3.4256,1.1637,3.4256,1.1637,3.531,1.0943,3.531],"words":[{"text":"B","boundingBox":[1.0943,3.4256,1.1637,3.4256,1.1637,3.531,1.0943,3.531],"confidence":1}]},{"text":"20","boundingBox":[3.2541,3.4241,3.4067,3.4241,3.4067,3.5323,3.2541,3.5323],"words":[{"text":"20","boundingBox":[3.2541,3.4241,3.4067,3.4241,3.4067,3.5323,3.2541,3.5323],"confidence":1}]},{"text":"140.67","boundingBox":[5.4232,3.4241,5.8622,3.4241,5.8622,3.5323,5.4232,3.5323],"words":[{"text":"140.67","boundingBox":[5.4232,3.4241,5.8622,3.4241,5.8622,3.5323,5.4232,3.5323],"confidence":1}]},{"text":"C","boundingBox":[1.0882,3.6343,1.1647,3.6343,1.1647,3.7421,1.0882,3.7421],"words":[{"text":"C","boundingBox":[1.0882,3.6343,1.1647,3.6343,1.1647,3.7421,1.0882,3.7421],"confidence":1}]},{"text":"40","boundingBox":[3.2486,3.6341,3.4067,3.6341,3.4067,3.7423,3.2486,3.7423],"words":[{"text":"40","boundingBox":[3.2486,3.6341,3.4067,3.6341,3.4067,3.7423,3.2486,3.7423],"confidence":1}]},{"text":"150.66","boundingBox":[5.4232,3.6341,5.8634,3.6341,5.8634,3.7423,5.4232,3.7423],"words":[{"text":"150.66","boundingBox":[5.4232,3.6341,5.8634,3.6341,5.8634,3.7423,5.4232,3.7423],"confidence":1}]},{"text":"D","boundingBox":[1.0943,3.8456,1.1753,3.8456,1.1753,3.951,1.0943,3.951],"words":[{"text":"D","boundingBox":[1.0943,3.8456,1.1753,3.8456,1.1753,3.951,1.0943,3.951],"confidence":1}]},{"text":"10","boundingBox":[3.2589,3.8441,3.4067,3.8441,3.4067,3.9523,3.2589,3.9523],"words":[{"text":"10","boundingBox":[3.2589,3.8441,3.4067,3.8441,3.4067,3.9523,3.2589,3.9523],"confidence":1}]},{"text":"120.00","boundingBox":[5.4232,3.8441,5.8642,3.8441,5.8642,3.9523,5.4232,3.9523],"words":[{"text":"120.00","boundingBox":[5.4232,3.8441,5.8642,3.8441,5.8642,3.9523,5.4232,3.9523],"confidence":1}]},{"text":"E","boundingBox":[1.0943,4.0561,1.153,4.0561,1.153,4.1614,1.0943,4.1614],"words":[{"text":"E","boundingBox":[1.0943,4.0561,1.153,4.0561,1.153,4.1614,1.0943,4.1614],"confidence":1}]},{"text":"40","boundingBox":[3.2486,4.0546,3.4067,4.0546,3.4067,4.1627,3.2486,4.1627],"words":[{"text":"40","boundingBox":[3.2486,4.0546,3.4067,4.0546,3.4067,4.1627,3.2486,4.1627],"confidence":1}]},{"text":"100.00","boundingBox":[5.4232,4.0546,5.8644,4.0546,5.8644,4.1627,5.4232,4.1627],"words":[{"text":"100.00","boundingBox":[5.4232,4.0546,5.8644,4.0546,5.8644,4.1627,5.4232,4.1627],"confidence":1}]},{"text":"F","boundingBox":[1.0943,4.2661,1.1497,4.2661,1.1497,4.3717,1.0943,4.3717],"words":[{"text":"F","boundingBox":[1.0943,4.2661,1.1497,4.2661,1.1497,4.3717,1.0943,4.3717],"confidence":1}]},{"text":"60","boundingBox":[3.2534,4.2646,3.4067,4.2646,3.4067,4.3727,3.2534,4.3727],"words":[{"text":"60","boundingBox":[3.2534,4.2646,3.4067,4.2646,3.4067,4.3727,3.2534,4.3727],"confidence":1}]},{"text":"120.00","boundingBox":[5.4232,4.2646,5.8642,4.2646,5.8642,4.3727,5.4232,4.3727],"words":[{"text":"120.00","boundingBox":[5.4232,4.2646,5.8642,4.2646,5.8642,4.3727,5.4232,4.3727],"confidence":1}]},{"text":"G","boundingBox":[1.0877,4.4746,1.1735,4.4746,1.1735,4.5827,1.0877,4.5827],"words":[{"text":"G","boundingBox":[1.0877,4.4746,1.1735,4.4746,1.1735,4.5827,1.0877,4.5827],"confidence":1}]},{"text":"80","boundingBox":[3.2514,4.4746,3.4067,4.4746,3.4067,4.5827,3.2514,4.5827],"words":[{"text":"80","boundingBox":[3.2514,4.4746,3.4067,4.4746,3.4067,4.5827,3.2514,4.5827],"confidence":1}]},{"text":"220.00","boundingBox":[5.4184,4.4746,5.8644,4.4746,5.8644,4.5827,5.4184,4.5827],"words":[{"text":"220.00","boundingBox":[5.4184,4.4746,5.8644,4.4746,5.8644,4.5827,5.4184,4.5827],"confidence":1}]},{"text":"Subtotal: + 3000.00","boundingBox":[5.5075,4.8981,6.7158,4.8981,6.7158,5.0131,5.5075,5.0131],"words":[{"text":"Subtotal:","boundingBox":[5.5075,4.8981,6.1249,4.8981,6.1249,5.0131,5.5075,5.0131],"confidence":1},{"text":"3000.00","boundingBox":[6.1794,4.9042,6.7158,4.9042,6.7158,5.0131,6.1794,5.0131],"confidence":1}]},{"text":"Tax: + 300.00","boundingBox":[5.5034,5.1245,6.2887,5.1245,6.2887,5.2333,5.5034,5.2333],"words":[{"text":"Tax:","boundingBox":[5.5034,5.1263,5.7812,5.1263,5.7812,5.2333,5.5034,5.2333],"confidence":1},{"text":"300.00","boundingBox":[5.836,5.1245,6.2887,5.1245,6.2887,5.2333,5.836,5.2333],"confidence":1}]},{"text":"Tip: + 1000.00","boundingBox":[5.5034,5.3412,6.3422,5.3412,6.3422,5.481,5.5034,5.481],"words":[{"text":"Tip:","boundingBox":[5.5034,5.3412,5.7515,5.3412,5.7515,5.481,5.5034,5.481],"confidence":1},{"text":"1000.00","boundingBox":[5.811,5.3445,6.3422,5.3445,6.3422,5.4533,5.811,5.4533],"confidence":1}]},{"text":"Total: + 4300.00","boundingBox":[5.5034,5.5583,6.4825,5.5583,6.4825,5.6733,5.5034,5.6733],"words":[{"text":"Total:","boundingBox":[5.5034,5.5583,5.8915,5.5583,5.8915,5.6733,5.5034,5.6733],"confidence":1},{"text":"4300.00","boundingBox":[5.942,5.5645,6.4825,5.5645,6.4825,5.6733,5.942,5.6733],"confidence":1}]},{"text":"Signature: + ____ Frodo Baggins__________","boundingBox":[1.0055,6.6556,3.8842,6.6556,3.8842,6.7981,1.0055,6.7981],"words":[{"text":"Signature:","boundingBox":[1.0055,6.6581,1.6987,6.6581,1.6987,6.7981,1.0055,6.7981],"confidence":1},{"text":"____","boundingBox":[1.747,6.7829,2.0809,6.7829,2.0809,6.7981,1.747,6.7981],"confidence":1},{"text":"Frodo","boundingBox":[2.0925,6.6556,2.4778,6.6556,2.4778,6.7703,2.0925,6.7703],"confidence":1},{"text":"Baggins__________","boundingBox":[2.5325,6.6581,3.8842,6.6581,3.8842,6.7981,2.5325,6.7981],"confidence":1}]}]}],"documentResults":[{"docType":"prebuilt:receipt","pageRange":[1,1],"fields":{"ReceiptType":{"type":"string","valueString":"Itemized","confidence":0.99},"MerchantName":{"type":"string","valueString":"Bilbo + Baggins","text":"Bilbo Baggins","boundingBox":[6.0164,1.4503,6.8967,1.4503,6.8967,1.5931,6.0164,1.5931],"page":1,"confidence":0.987,"elements":["#/readResults/0/lines/3/words/0","#/readResults/0/lines/3/words/1"]},"MerchantAddress":{"type":"string","valueString":"123 + Hobbit Lane 567 Main St. Redmond, WA Redmond, WA","text":"123 Hobbit Lane + 567 Main St. Redmond, WA Redmond, WA","boundingBox":[0.8852,1.6707,7.1006,1.6707,7.1006,2.1975,0.8852,2.1975],"page":1,"confidence":0.99,"elements":["#/readResults/0/lines/4/words/0","#/readResults/0/lines/4/words/1","#/readResults/0/lines/4/words/2","#/readResults/0/lines/5/words/0","#/readResults/0/lines/5/words/1","#/readResults/0/lines/5/words/2","#/readResults/0/lines/6/words/0","#/readResults/0/lines/6/words/1","#/readResults/0/lines/7/words/0","#/readResults/0/lines/7/words/1"]},"MerchantPhoneNumber":{"type":"phoneNumber","valuePhoneNumber":"+15555555555","text":"555-555-5555","boundingBox":[6.0105,2.1187,6.9371,2.1187,6.9371,2.2254,6.0105,2.2254],"page":1,"confidence":0.99,"elements":["#/readResults/0/lines/8/words/0"]},"Items":{"type":"array","valueArray":[{"type":"object","valueObject":{"Name":{"type":"string","valueString":"F","text":"F","boundingBox":[1.0943,4.2661,1.1497,4.2661,1.1497,4.3717,1.0943,4.3717],"page":1,"confidence":0.964,"elements":["#/readResults/0/lines/28/words/0"]},"TotalPrice":{"type":"number","valueNumber":12,"text":"12.00","boundingBox":[5.4232,4.2646,5.7809,4.2646,5.7809,4.3727,5.4232,4.3727],"page":1,"confidence":0.947,"elements":["#/readResults/0/lines/30/words/0"]}}},{"type":"object","valueObject":{"TotalPrice":{"type":"number","valueNumber":22,"text":"22.00","boundingBox":[5.4184,4.4746,5.781,4.4746,5.781,4.5827,5.4184,4.5827],"page":1,"confidence":0.935,"elements":["#/readResults/0/lines/33/words/0"]}}}]},"Subtotal":{"type":"number","valueNumber":300,"text":"300.00","boundingBox":[6.1794,4.9042,6.632,4.9042,6.632,5.0131,6.1794,5.0131],"page":1,"confidence":0.99,"elements":["#/readResults/0/lines/34/words/1"]},"Total":{"type":"number","valueNumber":430,"text":"430.00","boundingBox":[5.942,5.5645,6.3987,5.5645,6.3987,5.6733,5.942,5.6733],"page":1,"confidence":0.985,"elements":["#/readResults/0/lines/37/words/1"]}}},{"docType":"prebuilt:receipt","pageRange":[2,2]},{"docType":"prebuilt:receipt","pageRange":[3,3],"fields":{"ReceiptType":{"type":"string","valueString":"Itemized","confidence":0.99},"MerchantName":{"type":"string","valueString":"Frodo + Baggins","text":"Frodo Baggins","boundingBox":[6.0164,1.4506,6.9506,1.4506,6.9506,1.5931,6.0164,1.5931],"page":3,"confidence":0.984,"elements":["#/readResults/2/lines/3/words/0","#/readResults/2/lines/3/words/1"]},"MerchantAddress":{"type":"string","valueString":"123 + Hobbit Lane 567 Main St. Redmond, WA Redmond, WA","text":"123 Hobbit Lane + 567 Main St. Redmond, WA Redmond, WA","boundingBox":[0.8852,1.6707,7.1006,1.6707,7.1006,2.1975,0.8852,2.1975],"page":3,"confidence":0.99,"elements":["#/readResults/2/lines/4/words/0","#/readResults/2/lines/4/words/1","#/readResults/2/lines/4/words/2","#/readResults/2/lines/5/words/0","#/readResults/2/lines/5/words/1","#/readResults/2/lines/5/words/2","#/readResults/2/lines/6/words/0","#/readResults/2/lines/6/words/1","#/readResults/2/lines/7/words/0","#/readResults/2/lines/7/words/1"]},"MerchantPhoneNumber":{"type":"phoneNumber","valuePhoneNumber":"+15555555555","text":"555-555-5555","boundingBox":[6.0105,2.1187,6.9371,2.1187,6.9371,2.2254,6.0105,2.2254],"page":3,"confidence":0.99,"elements":["#/readResults/2/lines/8/words/0"]},"Items":{"type":"array","valueArray":[{"type":"object","valueObject":{"Name":{"type":"string","valueString":"E","text":"E","boundingBox":[1.0943,4.0561,1.153,4.0561,1.153,4.1614,1.0943,4.1614],"page":3,"confidence":0.935,"elements":["#/readResults/2/lines/25/words/0"]},"Quantity":{"type":"number","text":"40","boundingBox":[3.2486,4.0546,3.4067,4.0546,3.4067,4.1627,3.2486,4.1627],"page":3,"confidence":0,"elements":["#/readResults/2/lines/26/words/0"]},"TotalPrice":{"type":"number","valueNumber":100,"text":"100.00","boundingBox":[5.4232,4.0546,5.8644,4.0546,5.8644,4.1627,5.4232,4.1627],"page":3,"confidence":0.723,"elements":["#/readResults/2/lines/27/words/0"]}}},{"type":"object","valueObject":{"Name":{"type":"string","valueString":"F","text":"F","boundingBox":[1.0943,4.2661,1.1497,4.2661,1.1497,4.3717,1.0943,4.3717],"page":3,"confidence":0.905,"elements":["#/readResults/2/lines/28/words/0"]},"TotalPrice":{"type":"number","valueNumber":120,"text":"120.00","boundingBox":[5.4232,4.2646,5.8642,4.2646,5.8642,4.3727,5.4232,4.3727],"page":3,"confidence":0.967,"elements":["#/readResults/2/lines/30/words/0"]}}},{"type":"object","valueObject":{"Name":{"type":"string","valueString":"G","text":"G","boundingBox":[1.0877,4.4746,1.1735,4.4746,1.1735,4.5827,1.0877,4.5827],"page":3,"confidence":0.896,"elements":["#/readResults/2/lines/31/words/0"]},"TotalPrice":{"type":"number","valueNumber":220,"text":"220.00","boundingBox":[5.4184,4.4746,5.8644,4.4746,5.8644,4.5827,5.4184,4.5827],"page":3,"confidence":0.958,"elements":["#/readResults/2/lines/33/words/0"]}}}]},"Subtotal":{"type":"number","valueNumber":3000,"text":"3000.00","boundingBox":[6.1794,4.9042,6.7158,4.9042,6.7158,5.0131,6.1794,5.0131],"page":3,"confidence":0.99,"elements":["#/readResults/2/lines/34/words/1"]},"Total":{"type":"number","valueNumber":1000,"text":"1000.00","boundingBox":[5.811,5.3445,6.3422,5.3445,6.3422,5.4533,5.811,5.4533],"page":3,"confidence":0.985,"elements":["#/readResults/2/lines/36/words/1"]}}}]}}' + headers: + apim-request-id: + - e21838cf-755d-4b77-9aac-9bd4888c2547 + content-type: + - application/json; charset=utf-8 + date: + - Mon, 27 Apr 2020 18:03:34 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + transfer-encoding: + - chunked + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '292' + status: + code: 200 + message: OK +version: 1 diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_receipt_async.test_blank_page.yaml b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_receipt_async.test_blank_page.yaml new file mode 100644 index 000000000000..0c4db7f750a6 --- /dev/null +++ b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_receipt_async.test_blank_page.yaml @@ -0,0 +1,501 @@ +interactions: +- request: + body: !!binary | + JVBERi0xLjcNCiW1tbW1DQoxIDAgb2JqDQo8PC9UeXBlL0NhdGFsb2cvUGFnZXMgMiAwIFIvTGFu + Zyhlbi1VUykgL1N0cnVjdFRyZWVSb290IDEwIDAgUi9NYXJrSW5mbzw8L01hcmtlZCB0cnVlPj4v + TWV0YWRhdGEgMjAgMCBSL1ZpZXdlclByZWZlcmVuY2VzIDIxIDAgUj4+DQplbmRvYmoNCjIgMCBv + YmoNCjw8L1R5cGUvUGFnZXMvQ291bnQgMS9LaWRzWyAzIDAgUl0gPj4NCmVuZG9iag0KMyAwIG9i + ag0KPDwvVHlwZS9QYWdlL1BhcmVudCAyIDAgUi9SZXNvdXJjZXM8PC9Gb250PDwvRjEgNSAwIFI+ + Pi9FeHRHU3RhdGU8PC9HUzcgNyAwIFIvR1M4IDggMCBSPj4vUHJvY1NldFsvUERGL1RleHQvSW1h + Z2VCL0ltYWdlQy9JbWFnZUldID4+L01lZGlhQm94WyAwIDAgNjEyIDc5Ml0gL0NvbnRlbnRzIDQg + MCBSL0dyb3VwPDwvVHlwZS9Hcm91cC9TL1RyYW5zcGFyZW5jeS9DUy9EZXZpY2VSR0I+Pi9UYWJz + L1MvU3RydWN0UGFyZW50cyAwPj4NCmVuZG9iag0KNCAwIG9iag0KPDwvRmlsdGVyL0ZsYXRlRGVj + b2RlL0xlbmd0aCAxMzI+Pg0Kc3RyZWFtDQp4nC2MsQrCQBBE+4X9hynV4m73iJ4HIUUuMSgEFA8s + xFJTKaj/D67iFAPDPB78HnXtx7ztIE2Dtst4MomTb5IGCFbWMQW8rkynBR5MbWHyG4WqkwrlxqTG + CRQxOAkVoiS3tOdu3HCMmN7mxPRb6/8amM4zzC8oO6bejAcm9GPGB3fjHKoNCmVuZHN0cmVhbQ0K + ZW5kb2JqDQo1IDAgb2JqDQo8PC9UeXBlL0ZvbnQvU3VidHlwZS9UcnVlVHlwZS9OYW1lL0YxL0Jh + c2VGb250L0JDREVFRStDYWxpYnJpL0VuY29kaW5nL1dpbkFuc2lFbmNvZGluZy9Gb250RGVzY3Jp + cHRvciA2IDAgUi9GaXJzdENoYXIgMzIvTGFzdENoYXIgMzIvV2lkdGhzIDE4IDAgUj4+DQplbmRv + YmoNCjYgMCBvYmoNCjw8L1R5cGUvRm9udERlc2NyaXB0b3IvRm9udE5hbWUvQkNERUVFK0NhbGli + cmkvRmxhZ3MgMzIvSXRhbGljQW5nbGUgMC9Bc2NlbnQgNzUwL0Rlc2NlbnQgLTI1MC9DYXBIZWln + aHQgNzUwL0F2Z1dpZHRoIDUyMS9NYXhXaWR0aCAxNzQzL0ZvbnRXZWlnaHQgNDAwL1hIZWlnaHQg + MjUwL1N0ZW1WIDUyL0ZvbnRCQm94WyAtNTAzIC0yNTAgMTI0MCA3NTBdIC9Gb250RmlsZTIgMTkg + MCBSPj4NCmVuZG9iag0KNyAwIG9iag0KPDwvVHlwZS9FeHRHU3RhdGUvQk0vTm9ybWFsL2NhIDE+ + Pg0KZW5kb2JqDQo4IDAgb2JqDQo8PC9UeXBlL0V4dEdTdGF0ZS9CTS9Ob3JtYWwvQ0EgMT4+DQpl + bmRvYmoNCjkgMCBvYmoNCjw8L0F1dGhvcihLcmlzdGEgUHJhdGljbykgL0NyZWF0b3Io/v8ATQBp + AGMAcgBvAHMAbwBmAHQArgAgAFcAbwByAGQAIABmAG8AcgAgAE8AZgBmAGkAYwBlACAAMwA2ADUp + IC9DcmVhdGlvbkRhdGUoRDoyMDIwMDMyMDEwNDQ0Ni0wNycwMCcpIC9Nb2REYXRlKEQ6MjAyMDAz + MjAxMDQ0NDYtMDcnMDAnKSAvUHJvZHVjZXIo/v8ATQBpAGMAcgBvAHMAbwBmAHQArgAgAFcAbwBy + AGQAIABmAG8AcgAgAE8AZgBmAGkAYwBlACAAMwA2ADUpID4+DQplbmRvYmoNCjE3IDAgb2JqDQo8 + PC9UeXBlL09ialN0bS9OIDcvRmlyc3QgNDYvRmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0aCAyOTY+ + Pg0Kc3RyZWFtDQp4nG1R0WrCMBR9F/yH+we3sa1jIMKYyoZYSivsofgQ610NtomkKejfL3ftsANf + wjk355ycJCKGAEQEsQDhQRCD8Oh1DmIGUTgDEUIU++EcopcAFgtMWR1AhjmmuL9fCXNnu9Kta2pw + W0BwAEwrCFmzXE4nvSUYLCtTdg1p98wpuEp2gME1UuwtUWaMw8zUtJNX7sh5qbQ+i3e5Lk84Jupj + RrsJ3dyW7iCG6I3P0sYRJrys9elB9l56NDfMqXT4QfJEtsfs+cOfulaa8rPkhjx40z5BOmX0wK1T + 39KDX/Zl7OVozOVxe560ZyLHJR3uZGnNiL+f/TriKyVrU40Gea1ONNL253hZZWWDG1V1loa7Jl3T + FvzH83+vm8iG2qKnj6efTn4AVAqiuw0KZW5kc3RyZWFtDQplbmRvYmoNCjE4IDAgb2JqDQpbIDIy + Nl0gDQplbmRvYmoNCjE5IDAgb2JqDQo8PC9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDE5Mzg5 + L0xlbmd0aDEgODE3NDA+Pg0Kc3RyZWFtDQp4nOx9B3xUVdr+OfdOy8wkM5NkkkkmYWaYJASGFCCB + BJAMpNA7gwk1IYWAAQKEIgJGUdAo9l7Rta1YJgNqwO5iWQv2vhZ2XVdXse3qKgL5nnPfORDY1f+3 + 1fX7z5s88zznPeWe+t6TH8kPxhljdnzoWG3lqIoZBf1stzPumcAYf6Jy1ITyq5qr4hnPzGBMKZw8 + vWDgtY/W3YO8s1Crtn5JXetF716EsiddgvwP6le3eXe1vlHM2LYLGNM/0NS6cMnGd9UhjC1dy1h8 + YGHLyU2vVu4oYuwW1LF90NxY1/DtxJPDaM+K9gY3wxF/Z8Z+pCuQzmpe0rZ2xDjjAaQ/YmzRHS3L + 6uvyGvrezNi9hSg+c0nd2tZ8c/abyG9Gee+Sxra6q07ftppxXzLSZyytW9J43YGv5zP2KfpbuLJ1 + 2cq2bjfbzHjGQVG+dUVja9LC3mmMnXITHvcJE3NhGLpv9uI1H8+3Df+apZmYsPs/Wf+s4NfHrpn8 + /YFD7XGfmgYjGccURoZ6BnaY8T3mbd8fOLAt7lOtpR6WdofwuPuxdmZnw6EVcAHbwljiYO25nKm6 + AL+A6ZlJf6V+EJrsRay+wDYrzMQUm15RFJ2q6D5g+d2PsKxTtB7AJk73elmQsexnqQ/G65QcL+Pd + Ik+9T58gRsqSdQlHe8OfZ//fm+F1dsdP3Yf/K6ZrZDf81H34e8xg+Pf0V93/85qHf4fpiljtT92H + mP3zpjzNrvyp+/BzMOX3bMw/Uo9/w1r+1X2JWcxiFrOY/eOmXM3NP5hXy/b/J/vyczG1mJ3zU/ch + ZjGLWcxi9o+b7lHW9B9/5hJ23n/6mTGLWcxiFrOYxSxmMYtZzGIWs/+7Fvs5M2Yxi1nMYhazmMUs + ZjGLWcxiFrOYxey/23jst9FjFrOYxSxmMYtZzGIWs5jFLGYxi1nMYhazmMUsZjGLWcxiFrOYxSxm + MYtZzGIWs5jFLGYxi1nMYhazmMUsZjGLWcz+S6x790/dg5jF7Cc2NYqM6P8k1YEUlLKa6dhSpFOY + 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 + +xG3mmhL96QrfW1pvHxyGl+Wdmra+WmqzfW8Swm6+vavsqU+n/pe6uepuqRgat/8KpZiT/GmqE4x + tpSJM6o0LqsgHlCsjdWT4s+psjm5zelxKpWfO/lmpnIv54zbQaoJZXZyp6dKfZCLX6LTM84vYDMC + 47tMbNr4sGnK7DA/K5w9XXwGp84KG84Ks9Cs2dWdnJ9Xo/1OQjhZ/FKJlj5z61aWOWp8OHN6dUTd + ti1zVM34cLvQwaCmu4VmKFITmLdy1cpAdfAE5njf8YVDdT5sf96u2GzcZuu2KUEbOm9L8CQo4qM7 + QQ0mDBhSZYv3xCviozteTQnGwyPG18c6ZUaVzeKxKKEyy2SLErSUlVcFLXmFVX81zh1inPTkQNs8 + fMxb2RbQvpGq4atEMiC84ntlG9Lia5WWZoEfNSoGmr8S1iadbT9e67/d+E/dgZ+/0W/yjOxWzmAN + yibgdOA0oB04FdgIbADWA6cA64CTgbXAGmA1sApoA1YCy4FWYBmwFFgCtAAnAYuBRUAzsBBoAhqB + BqAeWADUAbXAfGAeMBeYA8wGZgE1QDVwIjATCAEzgOnANGAqMAWYDEwCJgITgPHAOGAsMAYYDVQB + lUAFUA6MAkYCQaAMGAGcAAwHhgFDgVKgBBgCDAaKgSJgEDAQGAAUAgVAPpAH9AcCQD+gL5AL9AFy + gGwgC/ADvQEf4AU8QC8gE8gA3EA6kAa4gFQgBXACyUASkAg4ADtgAxKAeMAKWAAzEAeYACNgAPSA + bmQ3PlVAATjAWAOHjx8GDgEHge+BA8B3wLfAX4BvgK+BPwN/Ar4CvgS+AD4HPgP2A58CnwB/BD4G + PgL+AHwI/B74APgd8FtgH/A+8B7wLvAO8BvgbeAt4E3gDeB14DXgVeAV4GXgJeBF4AXgeWAv8Bzw + LPAM8DTwa+Ap4EngCeBxYA/wK+Ax4FHgEeBh4CHgQeAB4H5gN7AL6ALuA+4F7gF2AjuACNAJhIG7 + gbuAO4E7gO3A7cAvgduAW4FbgJuBm4BfADcCNwDbgOuB64BrgWuAq4GrgCuBK4DLgcuAS4FLgIuB + i4ALgQuA84HzgK3AucA5QAdwNnAWsAXYDJzJGka2c5x/jvPPcf45zj/H+ec4/xznn+P8c5x/jvPP + cf45zj/H+ec4/xznn+P8c5x/jvPPVwCIARwxgCMGcMQAjhjAEQM4YgBHDOCIARwxgCMGcMQAjhjA + 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 + uHNOntVntltoN7fZZcns+b3njj5RYD9zj2wYh93jRY32F+XYd7t63rI9HL47es2yJ/Lzkt3tQlaU + DZGNmzl6SlRiyln72V+ccO/r8eSz3lNExze9zb7aw4rjv/BG9zYrTm3xzCvteuW29FBk9/xRPk9c + Rq+cqR877Y8jHRlRnfZOdt6+fI2F/cK6rFdZnDnlnXp2yh4glHjZyFUD5829NvaP6hlPojpffBN+ + fGfIA1WHDdc3+tYdv/DEceN8v7J5cY7d7R5bTzrjVcNzu/Jwf8DPgxZ/K+xq+6Pt3h/Xb7i++bfz + riX9BAPCeCN93b+s/MP3xUV2N0I+b3PapCyVetVWfU0vC8uVeCe/HsU9XeIy7Kqr4p5envGlh9p1 + tGBV7vVenWTLaoaI0ifUeEq6lE2oPffkxeOWFQt8L/+0ouz4/SES/tVBVl9P7GGZZ/mLZWWOV4td + YvGWh7//2Ia1q5Z/wNHv/kVZ4L2yZxWD557FzlRE7Ux7UrbCpm+M8/xCr+OY//7KhSt6CvLahvx4 + YunSJaNGtXsVM8dr7eton8Kni1/szt7at+zK3Zx893t3QucXuPV9f6bKJyvnxsZXb6bctSu8Iw/f + +IasY8VOr63NUUpmdf9lUWp8wu7C/u0q8pvxvEc94NtW9ny9+ujyIXsqShb2H5kaHyOo7n1oYe4g + 28KY7LcFS/bsVCpHHBLpXBxGJf7ELWZtIotZ6xg4ThbN+acLV9O/Dqy/OVJetA8mHzqIbZhce9M7 + L0CK+p4d15E0nXUlfeoXsrggtb0tjVw1/fGjM0XNa/13KmeO++6u+0VSarLEnptKJpd3KvRr8qu7 + yR8+TaWiY2H7j+7sZONfERGNajOrGMeSoqevHPvdYvVAX8vz3KGiwO1V/ax6ch09R23Ii04evDs0 + 2CnU+WRSRvsUy3OiWa635i1oKdcOYm+ousbxd+7gGGX7Wj5xdrTix9nSvuf3TmbVZj3gTvj14reH + 18+qm7ay35fq/DU4a8fbHVu/P3i77u3+idi5m9sXSZedCD+gODDs9e3XP7geLwtT1HW2fPwgemKz + /OOe7/uH/3RlQNvUWwdKrJvvXamY//X119X+sheffcZcF/NtO/4o71U7brQ4OjPi9aA2dQm5bvxv + 3q6JcZocnrJtxN4dK3kXJM67ugyYbsHp6TFzyNJpN2+5T7pVOu+ngmc97npkFzuOwA/vSO2YtdzB + q7Zj8tm+7EHekyuKGX7geNK+3keW3GKGKxhqhkJz+j92Id70nTaTmBxCupmGpF39HUMcMDfOWHCd + 0C+Ou3BDeFz4GvhBREbcHhe+ONHvwN2OU11Vp6qzPBd+V9DokgnGCjfe5UvGpP5Mj7Q+Zfq7tmP7 + +Ae5+x8Y8uTc1cf3v1hbutDnFi+z+V37K+dOT4vvMKLjstoFhUPnB5zoMlTWYs1vVzeOaam8w291 + XH/hvfqBTUXvxY/7jPyyk2jgYq/7jKoAYWmk96n7L+2sxHdTCsZYF4wp07gMK5cN8rPwyjiw+WDG + olP3xRf5udFb3148d/1t8bvrkrRjP1zdXOYg33di5JxHT3Mjv7+0r+CXdz8v32a3hGuRdD122/bv + vVKGVDwZd3v2xWk7NtkV3XVZ1KPLiOyvjw7h/3J7+enzy6punTtvP9plwNne7FOq7b/6h4+729uh + eqxVv8vdnqxNi908ORd/sHGv/+OcFZO5XX+fFon9H5Hg2m4NCmVuZHN0cmVhbQ0KZW5kb2JqDQoy + MCAwIG9iag0KPDwvVHlwZS9NZXRhZGF0YS9TdWJ0eXBlL1hNTC9MZW5ndGggMzA4ND4+DQpzdHJl + YW0NCjw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+ + PHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iMy4xLTcwMSI+Cjxy + ZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4 + LW5zIyI+CjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiICB4bWxuczpwZGY9Imh0dHA6Ly9u + cy5hZG9iZS5jb20vcGRmLzEuMy8iPgo8cGRmOlByb2R1Y2VyPk1pY3Jvc29mdMKuIFdvcmQgZm9y + IE9mZmljZSAzNjU8L3BkZjpQcm9kdWNlcj48L3JkZjpEZXNjcmlwdGlvbj4KPHJkZjpEZXNjcmlw + dGlvbiByZGY6YWJvdXQ9IiIgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMv + MS4xLyI+CjxkYzpjcmVhdG9yPjxyZGY6U2VxPjxyZGY6bGk+S3Jpc3RhIFByYXRpY288L3JkZjps + aT48L3JkZjpTZXE+PC9kYzpjcmVhdG9yPjwvcmRmOkRlc2NyaXB0aW9uPgo8cmRmOkRlc2NyaXB0 + aW9uIHJkZjphYm91dD0iIiAgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAv + Ij4KPHhtcDpDcmVhdG9yVG9vbD5NaWNyb3NvZnTCriBXb3JkIGZvciBPZmZpY2UgMzY1PC94bXA6 + Q3JlYXRvclRvb2w+PHhtcDpDcmVhdGVEYXRlPjIwMjAtMDMtMjBUMTA6NDQ6NDYtMDc6MDA8L3ht + cDpDcmVhdGVEYXRlPjx4bXA6TW9kaWZ5RGF0ZT4yMDIwLTAzLTIwVDEwOjQ0OjQ2LTA3OjAwPC94 + bXA6TW9kaWZ5RGF0ZT48L3JkZjpEZXNjcmlwdGlvbj4KPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJv + dXQ9IiIgIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIj4KPHht + cE1NOkRvY3VtZW50SUQ+dXVpZDo4RjI5Q0E4Qy1FRThCLTQ3NTktQkM5Qi1BMDhFRkVFNjYyMDE8 + L3htcE1NOkRvY3VtZW50SUQ+PHhtcE1NOkluc3RhbmNlSUQ+dXVpZDo4RjI5Q0E4Qy1FRThCLTQ3 + NTktQkM5Qi1BMDhFRkVFNjYyMDE8L3htcE1NOkluc3RhbmNlSUQ+PC9yZGY6RGVzY3JpcHRpb24+ + CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgIAo8L3JkZjpSREY+PC94OnhtcG1ldGE+PD94cGFja2V0 + IGVuZD0idyI/Pg0KZW5kc3RyZWFtDQplbmRvYmoNCjIxIDAgb2JqDQo8PC9EaXNwbGF5RG9jVGl0 + bGUgdHJ1ZT4+DQplbmRvYmoNCjIyIDAgb2JqDQo8PC9UeXBlL1hSZWYvU2l6ZSAyMi9XWyAxIDQg + Ml0gL1Jvb3QgMSAwIFIvSW5mbyA5IDAgUi9JRFs8OENDQTI5OEY4QkVFNTk0N0JDOUJBMDhFRkVF + NjYyMDE+PDhDQ0EyOThGOEJFRTU5NDdCQzlCQTA4RUZFRTY2MjAxPl0gL0ZpbHRlci9GbGF0ZURl + Y29kZS9MZW5ndGggODM+Pg0Kc3RyZWFtDQp4nC3LsQFAQAyF4ZfcHbW1KJUKnTHYxgR6k1Ba48R7 + UuQrkh+IqdVid8DHLm5iD/GDpInkXmwibs7cRRJZFGHi/2yiKyfzdhALGVcyX8ALyoALUA0KZW5k + c3RyZWFtDQplbmRvYmoNCnhyZWYNCjAgMjMNCjAwMDAwMDAwMTAgNjU1MzUgZg0KMDAwMDAwMDAx + NyAwMDAwMCBuDQowMDAwMDAwMTY2IDAwMDAwIG4NCjAwMDAwMDAyMjIgMDAwMDAgbg0KMDAwMDAw + MDQ4NiAwMDAwMCBuDQowMDAwMDAwNjkyIDAwMDAwIG4NCjAwMDAwMDA4NTkgMDAwMDAgbg0KMDAw + MDAwMTA5OCAwMDAwMCBuDQowMDAwMDAxMTUxIDAwMDAwIG4NCjAwMDAwMDEyMDQgMDAwMDAgbg0K + MDAwMDAwMDAxMSA2NTUzNSBmDQowMDAwMDAwMDEyIDY1NTM1IGYNCjAwMDAwMDAwMTMgNjU1MzUg + Zg0KMDAwMDAwMDAxNCA2NTUzNSBmDQowMDAwMDAwMDE1IDY1NTM1IGYNCjAwMDAwMDAwMTYgNjU1 + MzUgZg0KMDAwMDAwMDAxNyA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDE4Njcg + MDAwMDAgbg0KMDAwMDAwMTg5NCAwMDAwMCBuDQowMDAwMDIxMzc0IDAwMDAwIG4NCjAwMDAwMjQ1 + NDEgMDAwMDAgbg0KMDAwMDAyNDU4NiAwMDAwMCBuDQp0cmFpbGVyDQo8PC9TaXplIDIzL1Jvb3Qg + MSAwIFIvSW5mbyA5IDAgUi9JRFs8OENDQTI5OEY4QkVFNTk0N0JDOUJBMDhFRkVFNjYyMDE+PDhD + Q0EyOThGOEJFRTU5NDdCQzlCQTA4RUZFRTY2MjAxPl0gPj4NCnN0YXJ0eHJlZg0KMjQ4NjgNCiUl + RU9GDQp4cmVmDQowIDANCnRyYWlsZXINCjw8L1NpemUgMjMvUm9vdCAxIDAgUi9JbmZvIDkgMCBS + L0lEWzw4Q0NBMjk4RjhCRUU1OTQ3QkM5QkEwOEVGRUU2NjIwMT48OENDQTI5OEY4QkVFNTk0N0JD + OUJBMDhFRkVFNjYyMDE+XSAvUHJldiAyNDg2OC9YUmVmU3RtIDI0NTg2Pj4NCnN0YXJ0eHJlZg0K + MjU0ODQNCiUlRU9G + headers: + Content-Type: + - application/pdf + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/prebuilt/receipt/analyze?includeTextDetails=false + response: + body: + string: '' + headers: + apim-request-id: db660ec1-18f6-4abf-822e-181077831ee1 + content-length: '0' + date: Wed, 22 Apr 2020 22:53:11 GMT + operation-location: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/prebuilt/receipt/analyzeResults/db660ec1-18f6-4abf-822e-181077831ee1 + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '748' + status: + code: 202 + message: Accepted + url: https://westus.api.cognitive.microsoft.com//formrecognizer/v2.0-preview/prebuilt/receipt/analyze?includeTextDetails=false +- request: + body: null + headers: + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/prebuilt/receipt/analyzeResults/db660ec1-18f6-4abf-822e-181077831ee1 + response: + body: + string: '{"status":"succeeded","createdDateTime":"2020-04-22T22:53:11Z","lastUpdatedDateTime":"2020-04-22T22:53:15Z","analyzeResult":{"version":"2.0.0","readResults":[{"page":1,"angle":0,"width":8.4967,"height":10.9967,"unit":"inch","language":"en"}],"documentResults":[{"docType":"prebuilt:receipt","pageRange":[1,1]}]}}' + headers: + apim-request-id: d0a496cc-96f4-4dcc-afd8-d1c50545a6b5 + content-type: application/json; charset=utf-8 + date: Wed, 22 Apr 2020 22:53:16 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + transfer-encoding: chunked + x-content-type-options: nosniff + x-envoy-upstream-service-time: '317' + status: + code: 200 + message: OK + url: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/prebuilt/receipt/analyzeResults/db660ec1-18f6-4abf-822e-181077831ee1 +version: 1 diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_receipt_async.test_damaged_file_passed_as_bytes.yaml b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_receipt_async.test_damaged_file_passed_as_bytes.yaml new file mode 100644 index 000000000000..0748286b4e37 --- /dev/null +++ b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_receipt_async.test_damaged_file_passed_as_bytes.yaml @@ -0,0 +1,28 @@ +interactions: +- request: + body: '%PDFUUU' + headers: + Content-Type: + - application/pdf + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/prebuilt/receipt/analyze?includeTextDetails=false + response: + body: + string: '{"error":{"code":"BadArgument","innerError":{"requestId":"d69e6a49-8069-4ede-9b91-565076cc3f84"},"message":"Bad + or unrecognizable request JSON or binary file."}}' + headers: + apim-request-id: d69e6a49-8069-4ede-9b91-565076cc3f84 + content-type: application/json; charset=utf-8 + date: Wed, 22 Apr 2020 22:47:57 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + transfer-encoding: chunked + x-content-type-options: nosniff + x-envoy-upstream-service-time: '4' + status: + code: 400 + message: Bad Request + url: https://westus.api.cognitive.microsoft.com//formrecognizer/v2.0-preview/prebuilt/receipt/analyze?includeTextDetails=false +version: 1 diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_receipt_async.test_damaged_file_passed_as_bytes_io.yaml b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_receipt_async.test_damaged_file_passed_as_bytes_io.yaml new file mode 100644 index 000000000000..bdb747586366 --- /dev/null +++ b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_receipt_async.test_damaged_file_passed_as_bytes_io.yaml @@ -0,0 +1,33 @@ +interactions: +- request: + body: !!python/object/new:_io.BytesIO + state: !!python/tuple + - !!binary | + JVBERlVVVQ== + - 0 + - null + headers: + Content-Type: + - application/pdf + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/prebuilt/receipt/analyze?includeTextDetails=false + response: + body: + string: '{"error":{"code":"InvalidImage","innerError":{"requestId":"3df7211e-e7e2-4c08-bb5b-c5a4189a1044"},"message":"The + input data is not a valid image or password protected."}}' + headers: + apim-request-id: 3df7211e-e7e2-4c08-bb5b-c5a4189a1044 + content-type: application/json; charset=utf-8 + date: Wed, 22 Apr 2020 22:50:25 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + transfer-encoding: chunked + x-content-type-options: nosniff + x-envoy-upstream-service-time: '19' + status: + code: 400 + message: Bad Request + url: https://westus.api.cognitive.microsoft.com//formrecognizer/v2.0-preview/prebuilt/receipt/analyze?includeTextDetails=false +version: 1 diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_receipt_async.test_receipt_multipage.yaml b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_receipt_async.test_receipt_multipage.yaml new file mode 100644 index 000000000000..1451a7aac24a --- /dev/null +++ b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_receipt_async.test_receipt_multipage.yaml @@ -0,0 +1,2015 @@ +interactions: +- request: + body: !!binary | + JVBERi0xLjcNCiW1tbW1DQoxIDAgb2JqDQo8PC9UeXBlL0NhdGFsb2cvUGFnZXMgMiAwIFIvTGFu + Zyhlbi1VUykgL1N0cnVjdFRyZWVSb290IDE2IDAgUi9NYXJrSW5mbzw8L01hcmtlZCB0cnVlPj4v + TWV0YWRhdGEgMjUzIDAgUi9WaWV3ZXJQcmVmZXJlbmNlcyAyNTQgMCBSPj4NCmVuZG9iag0KMiAw + IG9iag0KPDwvVHlwZS9QYWdlcy9Db3VudCAzL0tpZHNbIDMgMCBSIDExIDAgUiAxMyAwIFJdID4+ + DQplbmRvYmoNCjMgMCBvYmoNCjw8L1R5cGUvUGFnZS9QYXJlbnQgMiAwIFIvUmVzb3VyY2VzPDwv + Rm9udDw8L0YxIDUgMCBSL0YyIDkgMCBSPj4vRXh0R1N0YXRlPDwvR1M3IDcgMCBSL0dTOCA4IDAg + Uj4+L1Byb2NTZXRbL1BERi9UZXh0L0ltYWdlQi9JbWFnZUMvSW1hZ2VJXSA+Pi9NZWRpYUJveFsg + MCAwIDYxMiA3OTJdIC9Db250ZW50cyA0IDAgUi9Hcm91cDw8L1R5cGUvR3JvdXAvUy9UcmFuc3Bh + cmVuY3kvQ1MvRGV2aWNlUkdCPj4vVGFicy9TL1N0cnVjdFBhcmVudHMgMD4+DQplbmRvYmoNCjQg + MCBvYmoNCjw8L0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggMjg2ND4+DQpzdHJlYW0NCnicvZxZ + bxw3EsffBeg79ONMsGrzPhZBAMvXerEGkrWAPBiLwJYPGIilXVubbL79VrHvYRfZ3cOOAI2OLvJf + LFb/SPbB6tGP1fffP3r15OXTiv3wQ3X99En1n8sLVjP88lxUrDLwab2ovn64vPj5u+ru8uL65vLi + 0XNecVMzV918vLzgYMcqXikpam4ry1TtTHXzBexevLbVp29QZ/Up/OXav15cXrw5vLz77agP9/D9 + +WgOt/DzA3xXx39VN3+/vHgGOj9dXpzlkAOH+Nih4Ecr//x4JYP6V1D/azlVzVzNDKV60rzq2asn + VTXqCL6+I8RcLxjrayUi+eujgmhf+cOv+PEuxN+CUyYcefsJ/wsfrjG6g+PfNkfmxC9vau8pv3Jh + EaXCYmSt9Yl8dQV1OlXd3L45cCFLNVizmvt5xajBZ6iI2klK5W/HK25CF2NXvyulCX0oSM2QOQ/H + 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 + fvW3lN9NoKP8fgIt5fcTaCkfCZSmfCSw09UI6BG/5zmhhK3NXNLi2yxyv6sRhuO2Ndl2xSReu18C + SWJj63VjgCulDJhYt8bwpZRleJt/hbRauxkZKS1YnXrQP1Zeu/sWqczwsaPoQiXOyj7h6XqHU7Nw + 4j5Agofrl1/DFhRHCafxlSw3vgmNdx9P/alYcBMnVb/AV7HR2uNeVHHjrz9DKxFR4SLtfXVUh+u3 + 2N4QjPCBobkrNuZyvAMV+7FxL7PZQV3OCfxy5A4iij0481lKHXfbcTPqJ0nTd4eAs8CYcIeT1VbQ + t+LU2ltxVP7jrMGt4o1aeyuOlIaffhVkVamLzULb9D3+WLrUlRyhOO7ztEa61PJCAGLMOulS46lg + IcPXSJcaULmXuJ3hGulSIyq3DleUK6R1qRGVG5hGrGq1LjWkcmXwYaE10qVoxiXD+eoa6VI041zj + BgZrpEvRzPuam1Ug1aVohk8vi3XSHc04bmeEj9VUhsnwOhCMljA1gRHb9AMfw80Nf0dZqDxp/Xp4 + TA7MvFJgaGoPJlbVsrkCYqnn5PSIc8tK9/fXAS7TyBgJQ4uqLAzmohtYP/Xhid+vPlfPwtTZkXr3 + OJv90lxjdDiRlTildYc/cAPfx2Hvz5f4Gf75G0z37rvp7y0+uBxvgnWuuxwyB5hIuJvNHretowTd + UQYnabEnj3HPzvf9XP8bLHLV4Vu8cj/XCw7/gnk/4UU2Hn5z4s4HQ3MsdeqGPnb7VjRbEL8K9ww/ + Q0xY2N8U//f6AVcH8UOgZ7nFhcKt+Qi3sps3ssLRkbpW8S6K/XayZvFmr+cFRcraSsqbbFB44aDg + vdjTnS1ze6SeJew4LTy3Vep5YgoWKaRY4ZZ5DoOxWxLSwhkFY6rQf1JEOZRypFhuD9ozzxzgiKSk + iee8/w9kOwx8DQplbmRzdHJlYW0NCmVuZG9iag0KNSAwIG9iag0KPDwvVHlwZS9Gb250L1N1YnR5 + cGUvVHJ1ZVR5cGUvTmFtZS9GMS9CYXNlRm9udC9CQ0RFRUUrQ2FsaWJyaS9FbmNvZGluZy9XaW5B + bnNpRW5jb2RpbmcvRm9udERlc2NyaXB0b3IgNiAwIFIvRmlyc3RDaGFyIDMyL0xhc3RDaGFyIDEy + MS9XaWR0aHMgMjQ5IDAgUj4+DQplbmRvYmoNCjYgMCBvYmoNCjw8L1R5cGUvRm9udERlc2NyaXB0 + b3IvRm9udE5hbWUvQkNERUVFK0NhbGlicmkvRmxhZ3MgMzIvSXRhbGljQW5nbGUgMC9Bc2NlbnQg + NzUwL0Rlc2NlbnQgLTI1MC9DYXBIZWlnaHQgNzUwL0F2Z1dpZHRoIDUyMS9NYXhXaWR0aCAxNzQz + L0ZvbnRXZWlnaHQgNDAwL1hIZWlnaHQgMjUwL1N0ZW1WIDUyL0ZvbnRCQm94WyAtNTAzIC0yNTAg + MTI0MCA3NTBdIC9Gb250RmlsZTIgMjUwIDAgUj4+DQplbmRvYmoNCjcgMCBvYmoNCjw8L1R5cGUv + RXh0R1N0YXRlL0JNL05vcm1hbC9jYSAxPj4NCmVuZG9iag0KOCAwIG9iag0KPDwvVHlwZS9FeHRH + U3RhdGUvQk0vTm9ybWFsL0NBIDE+Pg0KZW5kb2JqDQo5IDAgb2JqDQo8PC9UeXBlL0ZvbnQvU3Vi + dHlwZS9UcnVlVHlwZS9OYW1lL0YyL0Jhc2VGb250L0JDREZFRStDYWxpYnJpLUJvbGQvRW5jb2Rp + bmcvV2luQW5zaUVuY29kaW5nL0ZvbnREZXNjcmlwdG9yIDEwIDAgUi9GaXJzdENoYXIgMzIvTGFz + dENoYXIgMTIwL1dpZHRocyAyNTEgMCBSPj4NCmVuZG9iag0KMTAgMCBvYmoNCjw8L1R5cGUvRm9u + dERlc2NyaXB0b3IvRm9udE5hbWUvQkNERkVFK0NhbGlicmktQm9sZC9GbGFncyAzMi9JdGFsaWNB + bmdsZSAwL0FzY2VudCA3NTAvRGVzY2VudCAtMjUwL0NhcEhlaWdodCA3NTAvQXZnV2lkdGggNTM2 + L01heFdpZHRoIDE3ODEvRm9udFdlaWdodCA3MDAvWEhlaWdodCAyNTAvU3RlbVYgNTMvRm9udEJC + b3hbIC01MTkgLTI1MCAxMjYzIDc1MF0gL0ZvbnRGaWxlMiAyNTIgMCBSPj4NCmVuZG9iag0KMTEg + MCBvYmoNCjw8L1R5cGUvUGFnZS9QYXJlbnQgMiAwIFIvUmVzb3VyY2VzPDwvRm9udDw8L0YyIDkg + MCBSPj4vRXh0R1N0YXRlPDwvR1M3IDcgMCBSL0dTOCA4IDAgUj4+L1Byb2NTZXRbL1BERi9UZXh0 + L0ltYWdlQi9JbWFnZUMvSW1hZ2VJXSA+Pi9NZWRpYUJveFsgMCAwIDYxMiA3OTJdIC9Db250ZW50 + cyAxMiAwIFIvR3JvdXA8PC9UeXBlL0dyb3VwL1MvVHJhbnNwYXJlbmN5L0NTL0RldmljZVJHQj4+ + L1RhYnMvUy9TdHJ1Y3RQYXJlbnRzIDE+Pg0KZW5kb2JqDQoxMiAwIG9iag0KPDwvRmlsdGVyL0Zs + YXRlRGVjb2RlL0xlbmd0aCA0NzY+Pg0Kc3RyZWFtDQp4nK2Yu2ocQRBF84H5hwplB7Vdj36BUKCV + LGwQ2GjBgVEoKZLA9v+Dy4sDh6rmTjDQzNCne6BO3xo6fKXLy8P98fMNlasrur450s99K1z+XlOU + CrW496n062nfvn+kt327Pu3b4ZNSPDg975vES4WEunJRp14Ge6PTa7x099Dp5XdMSC/n0fg3utu3 + Hxf04ZFOX/btNqb7tm90e38k+m9BAlpQm8pNzws6r+OdeEXhe+M+0nhD4VvhKWm8o/Be2fL4isLr + ZO9pfEPhxbhZGt9B+Do795nGDxR+CM/87icK3xqX/O4FJcJaC2vN81Heq+bs+dITlPiqDB4LfJT5 + alGe+doXlPp8dF7YPkp93oW15fko93mt7PljV1Dyc5tc8+euoOznatw9z0fpzyOHyULsQenPInZp + /vsrSn8Wucvz319R+rMIXvnyU5T9zJ37Ah9lP9PB+cNXUfazSF5lYfso+2lEL12oPpT9NLLXStOD + sp+2utL1KMp+6pNnvvoNZT+N8FXy4cNQ9tMIX5rP3oayn0b4snz9G0p/MhrXfPg2lP6kR9u9wEf5 + TyJ9LTQ/hvKfRPpaaH4M5T+J9LXQ/BjKf1I614X6R/lvCveF9OWwv4CVR3uff/8AMWTgdQ0KZW5k + c3RyZWFtDQplbmRvYmoNCjEzIDAgb2JqDQo8PC9UeXBlL1BhZ2UvUGFyZW50IDIgMCBSL1Jlc291 + cmNlczw8L0ZvbnQ8PC9GMSA1IDAgUi9GMiA5IDAgUj4+L0V4dEdTdGF0ZTw8L0dTNyA3IDAgUi9H + UzggOCAwIFI+Pi9Qcm9jU2V0Wy9QREYvVGV4dC9JbWFnZUIvSW1hZ2VDL0ltYWdlSV0gPj4vTWVk + aWFCb3hbIDAgMCA2MTIgNzkyXSAvQ29udGVudHMgMTQgMCBSL0dyb3VwPDwvVHlwZS9Hcm91cC9T + L1RyYW5zcGFyZW5jeS9DUy9EZXZpY2VSR0I+Pi9UYWJzL1MvU3RydWN0UGFyZW50cyAyPj4NCmVu + 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 + mxWDaazuLffHZf/XyULlydKvhoeloFgtJRTUpHahL93+mltBGOxpKTm6Y7Lu6v7GpCD11DNaQExK + 6AdgSOeZT717wkML9upBhyuL6n11mfRLsw1gXRIVLp3a0+/RA+T32sKAIVRhtoQn9+zXM8QITO+A + 9glKLNq+F87X3ru/nWXj+ea8/ouJHAe52xbDiDYr2x4OQ5UX8RyPeO0OBw4teexOr37fA/vb+QJ0 + +xYuIfZaweC/AN6IFYv+0NkZIO4MmKuL8ERtde5O1TH+MO+X/kbPZ/AJ9Sd9u/979eA4Gd6x3mUW + g6WWMJhZi94xhb0jFJHhecL9wep69bHn+5wihEsfiDWLTrGFneJuoM3PeF46LXyXMMzZUOHYoeH7 + xGCtb1Gxwi2rGcxq7BqXFo4omJxw9Qd5lMFVFhVbOo1958iBPCIwaeRJ4/8DtXV3Ww0KZW5kc3Ry + ZWFtDQplbmRvYmoNCjE1IDAgb2JqDQo8PC9BdXRob3IoS3Jpc3RhIFByYXRpY28pIC9DcmVhdG9y + KP7/AE0AaQBjAHIAbwBzAG8AZgB0AK4AIABXAG8AcgBkACAAZgBvAHIAIABPAGYAZgBpAGMAZQAg + ADMANgA1KSAvQ3JlYXRpb25EYXRlKEQ6MjAyMDA0MjIxNjQ1MjktMDcnMDAnKSAvTW9kRGF0ZShE + OjIwMjAwNDIyMTY0NTI5LTA3JzAwJykgL1Byb2R1Y2VyKP7/AE0AaQBjAHIAbwBzAG8AZgB0AK4A + IABXAG8AcgBkACAAZgBvAHIAIABPAGYAZgBpAGMAZQAgADMANgA1KSA+Pg0KZW5kb2JqDQoyMyAw + IG9iag0KPDwvVHlwZS9PYmpTdG0vTiAyMzIvRmlyc3QgMjAzNS9GaWx0ZXIvRmxhdGVEZWNvZGUv + TGVuZ3RoIDMwNTE+Pg0Kc3RyZWFtDQp4nO1b24ocyRF9N/gf8g+mIu8Jy4Jt7WKzrBCSwA/CDyOp + LQ07M72MWiD9vc+pipyetTOz1Gn7weCHmbrG/UTkpaKtmMXYYIIYG40s2dhkJOIezsQaW3DfG7cY + J9FYnMWMU+NjMM6CLBrnTIjJOG+i4FkwMRa8ZpIFUTIp4W1rsrXGi8nJGe9NAUPvTMnkBLEuGx9w + LLi9GBEPfsWIBcOAawuOHtfOigkWx5SpsXiwCR7HnExwRgKIfMaxRBNoB/QK4J+kmAD6lHAfzzOs + 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 + o7YHauOettT9bxfFC374xVj+v4b+R2qoOrMW0tkCqt2Sut9ed8Hr1nDdsK3bqHVDsm4T1s27ug1W + N6fqllHdfKlbInWjoi7560K8Lo/rQrMu/+qirC5v6qKjLgX+W4W/fs361q9fDMY/AFTdMPANCmVu + ZHN0cmVhbQ0KZW5kb2JqDQoyNDkgMCBvYmoNClsgMjI2IDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAy + NTAgMzA2IDI1MiAwIDUwNyA1MDcgNTA3IDUwNyA1MDcgNTA3IDUwNyA1MDcgNTA3IDUwNyAyNjgg + MCAwIDAgMCAwIDAgNTc5IDU0NCA1MzMgNjE1IDQ4OCA0NTkgNjMxIDYyMyAyNTIgMCAwIDQyMCA4 + NTUgMCAwIDUxNyA2NzMgNTQzIDQ1OSAwIDAgMCA4OTAgMCAwIDAgMCAwIDAgMCAwIDAgNDc5IDUy + NSA0MjMgNTI1IDQ5OCAwIDQ3MSAwIDIzMCAwIDAgMjMwIDc5OSA1MjUgNTI3IDUyNSAwIDM0OSAz + OTEgMzM1IDUyNSA0NTIgMCAwIDQ1M10gDQplbmRvYmoNCjI1MCAwIG9iag0KPDwvRmlsdGVyL0Zs + YXRlRGVjb2RlL0xlbmd0aCA1MzE4Mi9MZW5ndGgxIDEzNzU5Nj4+DQpzdHJlYW0NCnic7H0HXFTH + 2v475+zCUhaWKrLiLq6Auig2FEtklaJoLCirgA2k2LChGI0lJEZNSEy5Mb2ZnhtNsqwaMdXkphfT + e+/JjaZdzc01Ub5nzruDaDTJvfd/v3z3/9sXnvM8887Me2bmzMyZjRBIEJENFxNVFIzIL1mf7HuW + xJeZRLFJBSNOzbvntXVfkfhoNVGIb/ykrL7XPly5k0icg1oVVQsqF7/T99MUovmbicyDq5Yvc+5e + /EY20Y1fIH1/7eLZC9a+pw8kWvwCkdU9u25l7bvOlS6i228meumvc2oqq38cu9KHeJGIN2AOHNY7 + O+1HOh/prnMWLFuRPXOSG2nEm7utblFV5U2b53cjseoiFJ+8oHLF4l7W9G7In4PyzgU1yyqvOmvL + chI/yfpnL6xcUHPdoYMzSTSjfu+lixctXdZqpw3ozzRZfnF9zeK42V06Eq35GbdDP+ENGfzhP3a9 + WDAzeuhB6mghafd9tfpZya8XnTb+p0OHG8P2WQYgGUYasaFeCB0h8Wj4lp8OHdoSts+I1M46bpMe + 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 + wAKEAiGAGTANb8VVBzRAAETVAj5xBDgM/Az8BBwC/gH8CPwd+AE4CBwA/gZ8D3wHfAt8A3wN7Af2 + AV8BfwW+BL4APgc+Az4FPgE+Bj4CPgQ+AN4H3gPeBd4B3gbeAt4E3gBeB14DXgVeAV4GXgJeBF4A + ngf2As8BzwLPAE8DTwFPAk8AjwOPAY8CfwEeAR4G9gAPAQ8CDwD3A/cB9wK7gRZgF3APsBPYAWwH + /EAz4APuBu4C7gS2AVuBO4A/A7cDtwG3ArcANwM3ATcCNwBbgOuB64BrgWuAq4GrgCuBK4DLgcuA + S4HNwCXAn4CLgYuAC4ELgE3A+cB5QBNwLnAOsBHYAKyn6uGNAutfYP0LrH+B9S+w/gXWv8D6F1j/ + AutfYP0LrH+B9S+w/gXWv8D6F1j/AutfYP2LegB7gMAeILAHCOwBAnuAwB4gsAcI7AECe4DAHiCw + BwjsAQJ7gMAeILAHCOwBAnuAwB4gsAcI7AECe4DAHiCwBwjsAQJ7gMAeILAHCOwBAnuAwB4gsAcI + 7AEC619g/Qusf4G1L7D2Bda+wNoXWPsCa19g7QusfYG1L7D2/+h9+L/cyv7oBvyXGy1d2u5gJi1p + pvyFp9DriI5ccszvqUygebSUGvG1gTbRJfQQvU2zaB3UlbSFbqU/k48epqfo9d/xOy+/246sNC+g + SH0XhVAcUeuh1v1HbgVazFHtPJcgFWdyHvW02lq/Ps739ZFLWm1HWkJiKdyoa9Vegvdv4nDrIbxy + kW4dINPaRuhoo8Z3odcdufvIbceNQTGV01SaRtOpgirR/2qaQ3MxMvOpjhbQQiO1EHmzca1FaiZK + YXsx9NFSi2gxUE/LqIGW42sx9NJASuYtMdINdBq+VtBKOp1W0WpaE7ieZnhWI+d0I70CWEtn4Mmc + SWcZSjF71tHZtB5PbSOdQ+f+aurcNtVE59H5eM4X0IUn1ZuOSV2Er4vpT5gPm+lSuoyuwLy4mq45 + znu54b+KrqPrMWdk3qXwXG8omXs/PU476S66m+4xxrIKo8Yjosal1hjDxRiD1ejhunYt5vE7rW20 + 1qLvsm9NgZ6ugP+sdjWWB8ZRllyHkhyFn4OMsua4kbgIfWB9tEecutTo/1Fv+1H5Na8aj2vajczV + Rkqq470n05fRtViBN+AqR1WqG6FZXW/o9v7r2spuMdI30c10C57FbYZSzJ5boW+j27G276CttA1f + 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 + IDAgMCAwIDQ1OSAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCA0NzMgNDk1IDAgMCAwIDAgMCAwIDAg + MCAwIDAgNDk4IDAgNDk0IDUzNyAwIDUzNyA1MDMgMCA0NzQgMCAyNDYgMCAwIDI0NiAwIDUzNyA1 + MzggNTM3IDAgMzU1IDM5OSAzNDcgNTM3IDAgMCA0NTldIA0KZW5kb2JqDQoyNTIgMCBvYmoNCjw8 + L0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggMzM2MzMvTGVuZ3RoMSAxMDI3MDQ+Pg0Kc3RyZWFt + DQp4nOydCXiTVdb4z33fLM3WJl3SJU2aNk26J90otAUaulEoW6HBFgRaaLG4UYGqoAzgglhFVFzG + BUFHxwWUNIAUQUTFXdQZUccdlxnXjqjgKNDkf+570tIiuMz4jd//+XLa8/7uPffcfXsj8SkwANDj + QwZNVeWV9bcVPhsGrO2PAGqMj6t4/SnTOGBzDqBD98Qprvz1X835GoCtwlxNc85pblc9YVwHcNYN + mP7wnPMXWcseafgS4NpKAMWque1nnHPn5+WbANrHAaiizjh78dyPlhs+ArjpRYC5+rbW5pbvT198 + CZanxfKK2tCg25n4KsYxP6S2nbPowsefSy3F+KcA8zadPX9O81VvnncY4Ng76D71nOYL29Pvi7Ng + ehv6W89pXdR86yUbzge24HuMX3Zu8zmt75e/mgusoBAg96r2+QsXBUywEvuzh/u3L2ht/8H9/EKA + xU0Axg+Aj4Wi5IMVj770+KyI4YchPgy47Pzi4hc53xhzweSjb/UOUSeETUJfFQhAgvkU4Ae2V73h + 6FtHVqoTpJIGSPwmbjFlwlrQw4UgYk49uABr1X6P9QqYKsrGCrtADmHyW+QFWKSFKL4CjwgQBkKE + UhBlMlGQfQzOwB5IvQiLVfGyx0+xWsEKYH+R2qC8Q3BYgQV4mrhHHs57CtGy8OOtYS/jbL0JsfAr + RXYxrP61eX5OxE2/fZm/RBT+/0694rNQdlL7d6D9b9R/MpGNBvWvzjMM982p0q4bnCauObXvIL8G + WCm7HRp+ykfQ/3RZmB53yrRjJ8+rqMF6nzl5muwt8PxUfSeK2Hu8HJn9hHGYDxUnzXMRmAbVuQku + +zV1nkxkMnD8Ej/xWxj9q8uuhT/8Ct/aQXEljP219f1vFPGFwXPG5cS+nijsX3DWz5WLPj87tj/l + 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 + KrFHQKlmZxW8qHpfRETYMZZdos8K9Tc0bmVNGZWf8PP4qiK6kZk7D1Hp68k6+cqujnrMi0+QTUvB + 02LWgEvJpMfQvQGNGyJ9Cp8e2OiVa3QkzxGYHxUIMdPMzhyDZ2iKtYRjadyCZoFjccXgVeuxLKL/ + AfpFWhMNCmVuZHN0cmVhbQ0KZW5kb2JqDQoyNTMgMCBvYmoNCjw8L1R5cGUvTWV0YWRhdGEvU3Vi + dHlwZS9YTUwvTGVuZ3RoIDMwODQ+Pg0Kc3RyZWFtDQo8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9 + Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/Pjx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6 + bWV0YS8iIHg6eG1wdGs9IjMuMS03MDEiPgo8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cu + dzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgo8cmRmOkRlc2NyaXB0aW9uIHJkZjph + Ym91dD0iIiAgeG1sbnM6cGRmPSJodHRwOi8vbnMuYWRvYmUuY29tL3BkZi8xLjMvIj4KPHBkZjpQ + cm9kdWNlcj5NaWNyb3NvZnTCriBXb3JkIGZvciBPZmZpY2UgMzY1PC9wZGY6UHJvZHVjZXI+PC9y + ZGY6RGVzY3JpcHRpb24+CjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiICB4bWxuczpkYz0i + aHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iPgo8ZGM6Y3JlYXRvcj48cmRmOlNlcT48 + cmRmOmxpPktyaXN0YSBQcmF0aWNvPC9yZGY6bGk+PC9yZGY6U2VxPjwvZGM6Y3JlYXRvcj48L3Jk + ZjpEZXNjcmlwdGlvbj4KPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgIHhtbG5zOnhtcD0i + aHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyI+Cjx4bXA6Q3JlYXRvclRvb2w+TWljcm9zb2Z0 + wq4gV29yZCBmb3IgT2ZmaWNlIDM2NTwveG1wOkNyZWF0b3JUb29sPjx4bXA6Q3JlYXRlRGF0ZT4y + MDIwLTA0LTIyVDE2OjQ1OjI5LTA3OjAwPC94bXA6Q3JlYXRlRGF0ZT48eG1wOk1vZGlmeURhdGU+ + MjAyMC0wNC0yMlQxNjo0NToyOS0wNzowMDwveG1wOk1vZGlmeURhdGU+PC9yZGY6RGVzY3JpcHRp + b24+CjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiICB4bWxuczp4bXBNTT0iaHR0cDovL25z + LmFkb2JlLmNvbS94YXAvMS4wL21tLyI+Cjx4bXBNTTpEb2N1bWVudElEPnV1aWQ6NThCQjA4MDUt + RjY5Ri00NDBGLTgzOUItMURFMDI1NjUxREUyPC94bXBNTTpEb2N1bWVudElEPjx4bXBNTTpJbnN0 + YW5jZUlEPnV1aWQ6NThCQjA4MDUtRjY5Ri00NDBGLTgzOUItMURFMDI1NjUxREUyPC94bXBNTTpJ + bnN0YW5jZUlEPjwvcmRmOkRlc2NyaXB0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKPC9y + ZGY6UkRGPjwveDp4bXBtZXRhPjw/eHBhY2tldCBlbmQ9InciPz4NCmVuZHN0cmVhbQ0KZW5kb2Jq + DQoyNTQgMCBvYmoNCjw8L0Rpc3BsYXlEb2NUaXRsZSB0cnVlPj4NCmVuZG9iag0KMjU1IDAgb2Jq + DQo8PC9UeXBlL1hSZWYvU2l6ZSAyNTUvV1sgMSA0IDJdIC9Sb290IDEgMCBSL0luZm8gMTUgMCBS + L0lEWzwwNTA4QkI1ODlGRjYwRjQ0ODM5QjFERTAyNTY1MURFMj48MDUwOEJCNTg5RkY2MEY0NDgz + OUIxREUwMjU2NTFERTI+XSAvRmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0aCA1MDc+Pg0Kc3RyZWFt + DQp4nDXV93fPZxQH8E9sSojZGkG0tQmKGrVHFKU2tUeomrXTauy9YlMdKFV7U3vvHUWJvX7rv5B+ + 83nx3HOe17nn3Ht/fQdB5KWnR0X+mCDIYAv+C4lKD8mTFBJdJiRvASRgcki+SiExcSH5dQU7hhRK + DCk9JggyRU4XCZ7jBV7iFZ7h3eTryF5c8vsuO6KQCZmRBVmRDTmQE7nwAXIjD6LRCoVRCPmQF/kR + g4IogASUwIcogqL4CMVRDB+jJGJRGqVQBnGoiE/xCcqhLCqgPKqjMiqhKqqgGuJRB5+hBmqhJj5H + bTRCPdTFF6iPhmiAlmiCxmiGpmiB5vgSrdEGbfEV2qE9vkYHdEQndEYXdEU3dEcPfIOe6IXe6IO+ + 6If+eIMBGIhBSMRgDMG3GIrvMAzDMQIjMQqj8T3GYCzGYTwmYCImIQk/4EdMxk9IxhRMxTRMxwzM + xCzMxhzMxTzMx1ssxQIsxCIsxhKkYBmWYwVWYhVWYw3uYj1+x89Yi1+wDr/hV6RiCzZiAzbhD/yJ + zdiFrfgL27ENO7EDB7EHu7EPe3EA+3Ech3EIR/A3juEozuEkTuA0TuEszuAqLuA8LuEiruAy7uA6 + ruEmbuA2buEf3MN9PMC/eIhHSMNjPMHTSFpUSQ3DJj4jvSJVPCQqNmRGWkhK/SD4H/tbjC8NCmVu + ZHN0cmVhbQ0KZW5kb2JqDQp4cmVmDQowIDI1Ng0KMDAwMDAwMDAxNiA2NTUzNSBmDQowMDAwMDAw + MDE3IDAwMDAwIG4NCjAwMDAwMDAxNjggMDAwMDAgbg0KMDAwMDAwMDIzOCAwMDAwMCBuDQowMDAw + MDAwNTExIDAwMDAwIG4NCjAwMDAwMDM0NTAgMDAwMDAgbg0KMDAwMDAwMzYxOSAwMDAwMCBuDQow + MDAwMDAzODU5IDAwMDAwIG4NCjAwMDAwMDM5MTIgMDAwMDAgbg0KMDAwMDAwMzk2NSAwMDAwMCBu + DQowMDAwMDA0MTQwIDAwMDAwIG4NCjAwMDAwMDQzODYgMDAwMDAgbg0KMDAwMDAwNDY1MiAwMDAw + MCBuDQowMDAwMDA1MjAzIDAwMDAwIG4NCjAwMDAwMDU0NzggMDAwMDAgbg0KMDAwMDAwODU2MyAw + MDAwMCBuDQowMDAwMDAwMDE3IDY1NTM1IGYNCjAwMDAwMDAwMTggNjU1MzUgZg0KMDAwMDAwMDAx + OSA2NTUzNSBmDQowMDAwMDAwMDIwIDY1NTM1IGYNCjAwMDAwMDAwMjEgNjU1MzUgZg0KMDAwMDAw + MDAyMiA2NTUzNSBmDQowMDAwMDAwMDIzIDY1NTM1IGYNCjAwMDAwMDAwMjQgNjU1MzUgZg0KMDAw + MDAwMDAyNSA2NTUzNSBmDQowMDAwMDAwMDI2IDY1NTM1IGYNCjAwMDAwMDAwMjcgNjU1MzUgZg0K + MDAwMDAwMDAyOCA2NTUzNSBmDQowMDAwMDAwMDI5IDY1NTM1IGYNCjAwMDAwMDAwMzAgNjU1MzUg + Zg0KMDAwMDAwMDAzMSA2NTUzNSBmDQowMDAwMDAwMDMyIDY1NTM1IGYNCjAwMDAwMDAwMzMgNjU1 + MzUgZg0KMDAwMDAwMDAzNCA2NTUzNSBmDQowMDAwMDAwMDM1IDY1NTM1IGYNCjAwMDAwMDAwMzYg + NjU1MzUgZg0KMDAwMDAwMDAzNyA2NTUzNSBmDQowMDAwMDAwMDM4IDY1NTM1IGYNCjAwMDAwMDAw + MzkgNjU1MzUgZg0KMDAwMDAwMDA0MCA2NTUzNSBmDQowMDAwMDAwMDQxIDY1NTM1IGYNCjAwMDAw + MDAwNDIgNjU1MzUgZg0KMDAwMDAwMDA0MyA2NTUzNSBmDQowMDAwMDAwMDQ0IDY1NTM1IGYNCjAw + MDAwMDAwNDUgNjU1MzUgZg0KMDAwMDAwMDA0NiA2NTUzNSBmDQowMDAwMDAwMDQ3IDY1NTM1IGYN + CjAwMDAwMDAwNDggNjU1MzUgZg0KMDAwMDAwMDA0OSA2NTUzNSBmDQowMDAwMDAwMDUwIDY1NTM1 + IGYNCjAwMDAwMDAwNTEgNjU1MzUgZg0KMDAwMDAwMDA1MiA2NTUzNSBmDQowMDAwMDAwMDUzIDY1 + NTM1IGYNCjAwMDAwMDAwNTQgNjU1MzUgZg0KMDAwMDAwMDA1NSA2NTUzNSBmDQowMDAwMDAwMDU2 + IDY1NTM1IGYNCjAwMDAwMDAwNTcgNjU1MzUgZg0KMDAwMDAwMDA1OCA2NTUzNSBmDQowMDAwMDAw + MDU5IDY1NTM1IGYNCjAwMDAwMDAwNjAgNjU1MzUgZg0KMDAwMDAwMDA2MSA2NTUzNSBmDQowMDAw + MDAwMDYyIDY1NTM1IGYNCjAwMDAwMDAwNjMgNjU1MzUgZg0KMDAwMDAwMDA2NCA2NTUzNSBmDQow + MDAwMDAwMDY1IDY1NTM1IGYNCjAwMDAwMDAwNjYgNjU1MzUgZg0KMDAwMDAwMDA2NyA2NTUzNSBm + DQowMDAwMDAwMDY4IDY1NTM1IGYNCjAwMDAwMDAwNjkgNjU1MzUgZg0KMDAwMDAwMDA3MCA2NTUz + NSBmDQowMDAwMDAwMDcxIDY1NTM1IGYNCjAwMDAwMDAwNzIgNjU1MzUgZg0KMDAwMDAwMDA3MyA2 + NTUzNSBmDQowMDAwMDAwMDc0IDY1NTM1IGYNCjAwMDAwMDAwNzUgNjU1MzUgZg0KMDAwMDAwMDA3 + NiA2NTUzNSBmDQowMDAwMDAwMDc3IDY1NTM1IGYNCjAwMDAwMDAwNzggNjU1MzUgZg0KMDAwMDAw + MDA3OSA2NTUzNSBmDQowMDAwMDAwMDgwIDY1NTM1IGYNCjAwMDAwMDAwODEgNjU1MzUgZg0KMDAw + MDAwMDA4MiA2NTUzNSBmDQowMDAwMDAwMDgzIDY1NTM1IGYNCjAwMDAwMDAwODQgNjU1MzUgZg0K + MDAwMDAwMDA4NSA2NTUzNSBmDQowMDAwMDAwMDg2IDY1NTM1IGYNCjAwMDAwMDAwODcgNjU1MzUg + Zg0KMDAwMDAwMDA4OCA2NTUzNSBmDQowMDAwMDAwMDg5IDY1NTM1IGYNCjAwMDAwMDAwOTAgNjU1 + MzUgZg0KMDAwMDAwMDA5MSA2NTUzNSBmDQowMDAwMDAwMDkyIDY1NTM1IGYNCjAwMDAwMDAwOTMg + NjU1MzUgZg0KMDAwMDAwMDA5NCA2NTUzNSBmDQowMDAwMDAwMDk1IDY1NTM1IGYNCjAwMDAwMDAw + OTYgNjU1MzUgZg0KMDAwMDAwMDA5NyA2NTUzNSBmDQowMDAwMDAwMDk4IDY1NTM1IGYNCjAwMDAw + MDAwOTkgNjU1MzUgZg0KMDAwMDAwMDEwMCA2NTUzNSBmDQowMDAwMDAwMTAxIDY1NTM1IGYNCjAw + MDAwMDAxMDIgNjU1MzUgZg0KMDAwMDAwMDEwMyA2NTUzNSBmDQowMDAwMDAwMTA0IDY1NTM1IGYN + CjAwMDAwMDAxMDUgNjU1MzUgZg0KMDAwMDAwMDEwNiA2NTUzNSBmDQowMDAwMDAwMTA3IDY1NTM1 + IGYNCjAwMDAwMDAxMDggNjU1MzUgZg0KMDAwMDAwMDEwOSA2NTUzNSBmDQowMDAwMDAwMTEwIDY1 + NTM1IGYNCjAwMDAwMDAxMTEgNjU1MzUgZg0KMDAwMDAwMDExMiA2NTUzNSBmDQowMDAwMDAwMTEz + IDY1NTM1IGYNCjAwMDAwMDAxMTQgNjU1MzUgZg0KMDAwMDAwMDExNSA2NTUzNSBmDQowMDAwMDAw + MTE2IDY1NTM1IGYNCjAwMDAwMDAxMTcgNjU1MzUgZg0KMDAwMDAwMDExOCA2NTUzNSBmDQowMDAw + MDAwMTE5IDY1NTM1IGYNCjAwMDAwMDAxMjAgNjU1MzUgZg0KMDAwMDAwMDEyMSA2NTUzNSBmDQow + MDAwMDAwMTIyIDY1NTM1IGYNCjAwMDAwMDAxMjMgNjU1MzUgZg0KMDAwMDAwMDEyNCA2NTUzNSBm + DQowMDAwMDAwMTI1IDY1NTM1IGYNCjAwMDAwMDAxMjYgNjU1MzUgZg0KMDAwMDAwMDEyNyA2NTUz + NSBmDQowMDAwMDAwMTI4IDY1NTM1IGYNCjAwMDAwMDAxMjkgNjU1MzUgZg0KMDAwMDAwMDEzMCA2 + NTUzNSBmDQowMDAwMDAwMTMxIDY1NTM1IGYNCjAwMDAwMDAxMzIgNjU1MzUgZg0KMDAwMDAwMDEz + MyA2NTUzNSBmDQowMDAwMDAwMTM0IDY1NTM1IGYNCjAwMDAwMDAxMzUgNjU1MzUgZg0KMDAwMDAw + MDEzNiA2NTUzNSBmDQowMDAwMDAwMTM3IDY1NTM1IGYNCjAwMDAwMDAxMzggNjU1MzUgZg0KMDAw + MDAwMDEzOSA2NTUzNSBmDQowMDAwMDAwMTQwIDY1NTM1IGYNCjAwMDAwMDAxNDEgNjU1MzUgZg0K + MDAwMDAwMDE0MiA2NTUzNSBmDQowMDAwMDAwMTQzIDY1NTM1IGYNCjAwMDAwMDAxNDQgNjU1MzUg + Zg0KMDAwMDAwMDE0NSA2NTUzNSBmDQowMDAwMDAwMTQ2IDY1NTM1IGYNCjAwMDAwMDAxNDcgNjU1 + MzUgZg0KMDAwMDAwMDE0OCA2NTUzNSBmDQowMDAwMDAwMTQ5IDY1NTM1IGYNCjAwMDAwMDAxNTAg + NjU1MzUgZg0KMDAwMDAwMDE1MSA2NTUzNSBmDQowMDAwMDAwMTUyIDY1NTM1IGYNCjAwMDAwMDAx + NTMgNjU1MzUgZg0KMDAwMDAwMDE1NCA2NTUzNSBmDQowMDAwMDAwMTU1IDY1NTM1IGYNCjAwMDAw + MDAxNTYgNjU1MzUgZg0KMDAwMDAwMDE1NyA2NTUzNSBmDQowMDAwMDAwMTU4IDY1NTM1IGYNCjAw + MDAwMDAxNTkgNjU1MzUgZg0KMDAwMDAwMDE2MCA2NTUzNSBmDQowMDAwMDAwMTYxIDY1NTM1IGYN + CjAwMDAwMDAxNjIgNjU1MzUgZg0KMDAwMDAwMDE2MyA2NTUzNSBmDQowMDAwMDAwMTY0IDY1NTM1 + IGYNCjAwMDAwMDAxNjUgNjU1MzUgZg0KMDAwMDAwMDE2NiA2NTUzNSBmDQowMDAwMDAwMTY3IDY1 + NTM1IGYNCjAwMDAwMDAxNjggNjU1MzUgZg0KMDAwMDAwMDE2OSA2NTUzNSBmDQowMDAwMDAwMTcw + IDY1NTM1IGYNCjAwMDAwMDAxNzEgNjU1MzUgZg0KMDAwMDAwMDE3MiA2NTUzNSBmDQowMDAwMDAw + MTczIDY1NTM1IGYNCjAwMDAwMDAxNzQgNjU1MzUgZg0KMDAwMDAwMDE3NSA2NTUzNSBmDQowMDAw + MDAwMTc2IDY1NTM1IGYNCjAwMDAwMDAxNzcgNjU1MzUgZg0KMDAwMDAwMDE3OCA2NTUzNSBmDQow + MDAwMDAwMTc5IDY1NTM1IGYNCjAwMDAwMDAxODAgNjU1MzUgZg0KMDAwMDAwMDE4MSA2NTUzNSBm + DQowMDAwMDAwMTgyIDY1NTM1IGYNCjAwMDAwMDAxODMgNjU1MzUgZg0KMDAwMDAwMDE4NCA2NTUz + NSBmDQowMDAwMDAwMTg1IDY1NTM1IGYNCjAwMDAwMDAxODYgNjU1MzUgZg0KMDAwMDAwMDE4NyA2 + NTUzNSBmDQowMDAwMDAwMTg4IDY1NTM1IGYNCjAwMDAwMDAxODkgNjU1MzUgZg0KMDAwMDAwMDE5 + MCA2NTUzNSBmDQowMDAwMDAwMTkxIDY1NTM1IGYNCjAwMDAwMDAxOTIgNjU1MzUgZg0KMDAwMDAw + MDE5MyA2NTUzNSBmDQowMDAwMDAwMTk0IDY1NTM1IGYNCjAwMDAwMDAxOTUgNjU1MzUgZg0KMDAw + MDAwMDE5NiA2NTUzNSBmDQowMDAwMDAwMTk3IDY1NTM1IGYNCjAwMDAwMDAxOTggNjU1MzUgZg0K + MDAwMDAwMDE5OSA2NTUzNSBmDQowMDAwMDAwMjAwIDY1NTM1IGYNCjAwMDAwMDAyMDEgNjU1MzUg + Zg0KMDAwMDAwMDIwMiA2NTUzNSBmDQowMDAwMDAwMjAzIDY1NTM1IGYNCjAwMDAwMDAyMDQgNjU1 + MzUgZg0KMDAwMDAwMDIwNSA2NTUzNSBmDQowMDAwMDAwMjA2IDY1NTM1IGYNCjAwMDAwMDAyMDcg + NjU1MzUgZg0KMDAwMDAwMDIwOCA2NTUzNSBmDQowMDAwMDAwMjA5IDY1NTM1IGYNCjAwMDAwMDAy + MTAgNjU1MzUgZg0KMDAwMDAwMDIxMSA2NTUzNSBmDQowMDAwMDAwMjEyIDY1NTM1IGYNCjAwMDAw + MDAyMTMgNjU1MzUgZg0KMDAwMDAwMDIxNCA2NTUzNSBmDQowMDAwMDAwMjE1IDY1NTM1IGYNCjAw + MDAwMDAyMTYgNjU1MzUgZg0KMDAwMDAwMDIxNyA2NTUzNSBmDQowMDAwMDAwMjE4IDY1NTM1IGYN + CjAwMDAwMDAyMTkgNjU1MzUgZg0KMDAwMDAwMDIyMCA2NTUzNSBmDQowMDAwMDAwMjIxIDY1NTM1 + IGYNCjAwMDAwMDAyMjIgNjU1MzUgZg0KMDAwMDAwMDIyMyA2NTUzNSBmDQowMDAwMDAwMjI0IDY1 + NTM1IGYNCjAwMDAwMDAyMjUgNjU1MzUgZg0KMDAwMDAwMDIyNiA2NTUzNSBmDQowMDAwMDAwMjI3 + IDY1NTM1IGYNCjAwMDAwMDAyMjggNjU1MzUgZg0KMDAwMDAwMDIyOSA2NTUzNSBmDQowMDAwMDAw + MjMwIDY1NTM1IGYNCjAwMDAwMDAyMzEgNjU1MzUgZg0KMDAwMDAwMDIzMiA2NTUzNSBmDQowMDAw + MDAwMjMzIDY1NTM1IGYNCjAwMDAwMDAyMzQgNjU1MzUgZg0KMDAwMDAwMDIzNSA2NTUzNSBmDQow + MDAwMDAwMjM2IDY1NTM1IGYNCjAwMDAwMDAyMzcgNjU1MzUgZg0KMDAwMDAwMDIzOCA2NTUzNSBm + DQowMDAwMDAwMjM5IDY1NTM1IGYNCjAwMDAwMDAyNDAgNjU1MzUgZg0KMDAwMDAwMDI0MSA2NTUz + NSBmDQowMDAwMDAwMjQyIDY1NTM1IGYNCjAwMDAwMDAyNDMgNjU1MzUgZg0KMDAwMDAwMDI0NCA2 + NTUzNSBmDQowMDAwMDAwMjQ1IDY1NTM1IGYNCjAwMDAwMDAyNDYgNjU1MzUgZg0KMDAwMDAwMDI0 + NyA2NTUzNSBmDQowMDAwMDAwMjQ4IDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAx + MTk4NyAwMDAwMCBuDQowMDAwMDEyMjg5IDAwMDAwIG4NCjAwMDAwNjU1NjQgMDAwMDAgbg0KMDAw + MDA2NTgyMiAwMDAwMCBuDQowMDAwMDk5NTQ4IDAwMDAwIG4NCjAwMDAxMDI3MTYgMDAwMDAgbg0K + MDAwMDEwMjc2MiAwMDAwMCBuDQp0cmFpbGVyDQo8PC9TaXplIDI1Ni9Sb290IDEgMCBSL0luZm8g + MTUgMCBSL0lEWzwwNTA4QkI1ODlGRjYwRjQ0ODM5QjFERTAyNTY1MURFMj48MDUwOEJCNTg5RkY2 + MEY0NDgzOUIxREUwMjU2NTFERTI+XSA+Pg0Kc3RhcnR4cmVmDQoxMDM0NzINCiUlRU9GDQp4cmVm + DQowIDANCnRyYWlsZXINCjw8L1NpemUgMjU2L1Jvb3QgMSAwIFIvSW5mbyAxNSAwIFIvSURbPDA1 + MDhCQjU4OUZGNjBGNDQ4MzlCMURFMDI1NjUxREUyPjwwNTA4QkI1ODlGRjYwRjQ0ODM5QjFERTAy + NTY1MURFMj5dIC9QcmV2IDEwMzQ3Mi9YUmVmU3RtIDEwMjc2Mj4+DQpzdGFydHhyZWYNCjEwODc1 + Mg0KJSVFT0Y= + headers: + Content-Type: + - application/pdf + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/prebuilt/receipt/analyze?includeTextDetails=true + response: + body: + string: '' + headers: + apim-request-id: ef55b20c-a9a2-414d-8e5f-054017fde397 + content-length: '0' + date: Mon, 27 Apr 2020 21:52:20 GMT + operation-location: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/prebuilt/receipt/analyzeResults/ef55b20c-a9a2-414d-8e5f-054017fde397 + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '623' + status: + code: 202 + message: Accepted + url: https://westus.api.cognitive.microsoft.com//formrecognizer/v2.0-preview/prebuilt/receipt/analyze?includeTextDetails=true +- request: + body: null + headers: + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/prebuilt/receipt/analyzeResults/ef55b20c-a9a2-414d-8e5f-054017fde397 + response: + body: + string: '{"status":"running","createdDateTime":"2020-04-27T21:52:20Z","lastUpdatedDateTime":"2020-04-27T21:52:21Z"}' + headers: + apim-request-id: 667d90ef-f527-44a6-9236-f815ea016837 + content-type: application/json; charset=utf-8 + date: Mon, 27 Apr 2020 21:52:26 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + transfer-encoding: chunked + x-content-type-options: nosniff + x-envoy-upstream-service-time: '213' + status: + code: 200 + message: OK + url: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/prebuilt/receipt/analyzeResults/ef55b20c-a9a2-414d-8e5f-054017fde397 +- request: + body: null + headers: + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/prebuilt/receipt/analyzeResults/ef55b20c-a9a2-414d-8e5f-054017fde397 + response: + body: + string: '{"status":"succeeded","createdDateTime":"2020-04-27T21:52:20Z","lastUpdatedDateTime":"2020-04-27T21:52:30Z","analyzeResult":{"version":"2.0.0","readResults":[{"page":1,"angle":0,"width":8.5,"height":11,"unit":"inch","language":"en","lines":[{"text":"Company + A Invoice","boundingBox":[0.8861,1.1217,2.3783,1.1217,2.3783,1.2812,0.8861,1.2812],"words":[{"text":"Company","boundingBox":[0.8861,1.1232,1.6203,1.1232,1.6203,1.2812,0.8861,1.2812],"confidence":1},{"text":"A","boundingBox":[1.6696,1.1242,1.7749,1.1242,1.7749,1.2473,1.6696,1.2473],"confidence":1},{"text":"Invoice","boundingBox":[1.8389,1.1217,2.3783,1.1217,2.3783,1.2485,1.8389,1.2485],"confidence":1}]},{"text":"Invoice + For:","boundingBox":[6.0211,1.0656,7.0357,1.0656,7.0357,1.2121,6.0211,1.2121],"words":[{"text":"Invoice","boundingBox":[6.0211,1.0656,6.6362,1.0656,6.6362,1.2121,6.0211,1.2121],"confidence":1},{"text":"For:","boundingBox":[6.7147,1.0691,7.0357,1.0691,7.0357,1.2121,6.7147,1.2121],"confidence":1}]},{"text":"Address:","boundingBox":[0.8791,1.4825,1.5657,1.4825,1.5657,1.6155,0.8791,1.6155],"words":[{"text":"Address:","boundingBox":[0.8791,1.4825,1.5657,1.4825,1.5657,1.6155,0.8791,1.6155],"confidence":1}]},{"text":"Bilbo + Baggins","boundingBox":[6.0164,1.4503,6.8967,1.4503,6.8967,1.5931,6.0164,1.5931],"words":[{"text":"Bilbo","boundingBox":[6.0164,1.4503,6.3392,1.4503,6.3392,1.5649,6.0164,1.5649],"confidence":1},{"text":"Baggins","boundingBox":[6.396,1.4556,6.8967,1.4556,6.8967,1.5931,6.396,1.5931],"confidence":1}]},{"text":"123 + Hobbit Lane","boundingBox":[6.0165,1.6707,7.1006,1.6707,7.1006,1.7854,6.0165,1.7854],"words":[{"text":"123","boundingBox":[6.0165,1.6772,6.2434,1.6772,6.2434,1.7854,6.0165,1.7854],"confidence":1},{"text":"Hobbit","boundingBox":[6.3033,1.6707,6.7463,1.6707,6.7463,1.7854,6.3033,1.7854],"confidence":1},{"text":"Lane","boundingBox":[6.803,1.6782,7.1006,1.6782,7.1006,1.7854,6.803,1.7854],"confidence":1}]},{"text":"567 + Main St.","boundingBox":[0.8852,1.846,1.713,1.846,1.713,1.9554,0.8852,1.9554],"words":[{"text":"567","boundingBox":[0.8852,1.8472,1.1203,1.8472,1.1203,1.9554,0.8852,1.9554],"confidence":1},{"text":"Main","boundingBox":[1.1777,1.846,1.5022,1.846,1.5022,1.9554,1.1777,1.9554],"confidence":1},{"text":"St.","boundingBox":[1.5558,1.8472,1.713,1.8472,1.713,1.9554,1.5558,1.9554],"confidence":1}]},{"text":"Redmond, + WA","boundingBox":[6.0164,1.891,6.9793,1.891,6.9793,2.0275,6.0164,2.0275],"words":[{"text":"Redmond,","boundingBox":[6.0164,1.891,6.6861,1.891,6.6861,2.0275,6.0164,2.0275],"confidence":1},{"text":"WA","boundingBox":[6.7408,1.8982,6.9793,1.8982,6.9793,2.0044,6.7408,2.0044],"confidence":1}]},{"text":"Redmond, + WA","boundingBox":[0.891,2.061,1.8537,2.061,1.8537,2.1975,0.891,2.1975],"words":[{"text":"Redmond,","boundingBox":[0.891,2.061,1.5605,2.061,1.5605,2.1975,0.891,2.1975],"confidence":1},{"text":"WA","boundingBox":[1.6152,2.0682,1.8537,2.0682,1.8537,2.1744,1.6152,2.1744],"confidence":1}]},{"text":"555-555-5555","boundingBox":[6.0105,2.1187,6.9371,2.1187,6.9371,2.2254,6.0105,2.2254],"words":[{"text":"555-555-5555","boundingBox":[6.0105,2.1187,6.9371,2.1187,6.9371,2.2254,6.0105,2.2254],"confidence":1}]},{"text":"555-555-5555","boundingBox":[0.8852,2.2887,1.8119,2.2887,1.8119,2.3954,0.8852,2.3954],"words":[{"text":"555-555-5555","boundingBox":[0.8852,2.2887,1.8119,2.2887,1.8119,2.3954,0.8852,2.3954],"confidence":1}]},{"text":"Item","boundingBox":[1.0943,3.0018,1.3842,3.0018,1.3842,3.109,1.0943,3.109],"words":[{"text":"Item","boundingBox":[1.0943,3.0018,1.3842,3.0018,1.3842,3.109,1.0943,3.109],"confidence":1}]},{"text":"Quantity","boundingBox":[3.2527,2.9996,3.8367,2.9996,3.8367,3.1371,3.2527,3.1371],"words":[{"text":"Quantity","boundingBox":[3.2527,2.9996,3.8367,2.9996,3.8367,3.1371,3.2527,3.1371],"confidence":1}]},{"text":"Price","boundingBox":[5.423,2.9996,5.7372,2.9996,5.7372,3.109,5.423,3.109],"words":[{"text":"Price","boundingBox":[5.423,2.9996,5.7372,2.9996,5.7372,3.109,5.423,3.109],"confidence":1}]},{"text":"A","boundingBox":[1.0832,3.2118,1.174,3.2118,1.174,3.318,1.0832,3.318],"words":[{"text":"A","boundingBox":[1.0832,3.2118,1.174,3.2118,1.174,3.318,1.0832,3.318],"confidence":1}]},{"text":"1","boundingBox":[3.2589,3.2116,3.3202,3.2116,3.3202,3.3176,3.2589,3.3176],"words":[{"text":"1","boundingBox":[3.2589,3.2116,3.3202,3.2116,3.3202,3.3176,3.2589,3.3176],"confidence":1}]},{"text":"10.99","boundingBox":[5.4232,3.2108,5.7784,3.2108,5.7784,3.319,5.4232,3.319],"words":[{"text":"10.99","boundingBox":[5.4232,3.2108,5.7784,3.2108,5.7784,3.319,5.4232,3.319],"confidence":1}]},{"text":"B","boundingBox":[1.0943,3.4256,1.1637,3.4256,1.1637,3.531,1.0943,3.531],"words":[{"text":"B","boundingBox":[1.0943,3.4256,1.1637,3.4256,1.1637,3.531,1.0943,3.531],"confidence":1}]},{"text":"2","boundingBox":[3.2541,3.4241,3.3199,3.4241,3.3199,3.531,3.2541,3.531],"words":[{"text":"2","boundingBox":[3.2541,3.4241,3.3199,3.4241,3.3199,3.531,3.2541,3.531],"confidence":1}]},{"text":"14.67","boundingBox":[5.4232,3.4241,5.7789,3.4241,5.7789,3.5323,5.4232,3.5323],"words":[{"text":"14.67","boundingBox":[5.4232,3.4241,5.7789,3.4241,5.7789,3.5323,5.4232,3.5323],"confidence":1}]},{"text":"C","boundingBox":[1.0882,3.6343,1.1647,3.6343,1.1647,3.7421,1.0882,3.7421],"words":[{"text":"C","boundingBox":[1.0882,3.6343,1.1647,3.6343,1.1647,3.7421,1.0882,3.7421],"confidence":1}]},{"text":"4","boundingBox":[3.2486,3.6351,3.3244,3.6351,3.3244,3.7413,3.2486,3.7413],"words":[{"text":"4","boundingBox":[3.2486,3.6351,3.3244,3.6351,3.3244,3.7413,3.2486,3.7413],"confidence":1}]},{"text":"15.66","boundingBox":[5.4232,3.6341,5.78,3.6341,5.78,3.7423,5.4232,3.7423],"words":[{"text":"15.66","boundingBox":[5.4232,3.6341,5.78,3.6341,5.78,3.7423,5.4232,3.7423],"confidence":1}]},{"text":"D","boundingBox":[1.0943,3.8456,1.1753,3.8456,1.1753,3.951,1.0943,3.951],"words":[{"text":"D","boundingBox":[1.0943,3.8456,1.1753,3.8456,1.1753,3.951,1.0943,3.951],"confidence":1}]},{"text":"1","boundingBox":[3.2589,3.845,3.3202,3.845,3.3202,3.951,3.2589,3.951],"words":[{"text":"1","boundingBox":[3.2589,3.845,3.3202,3.845,3.3202,3.951,3.2589,3.951],"confidence":1}]},{"text":"12.00","boundingBox":[5.4232,3.8441,5.7809,3.8441,5.7809,3.9523,5.4232,3.9523],"words":[{"text":"12.00","boundingBox":[5.4232,3.8441,5.7809,3.8441,5.7809,3.9523,5.4232,3.9523],"confidence":1}]},{"text":"E","boundingBox":[1.0943,4.0561,1.153,4.0561,1.153,4.1614,1.0943,4.1614],"words":[{"text":"E","boundingBox":[1.0943,4.0561,1.153,4.0561,1.153,4.1614,1.0943,4.1614],"confidence":1}]},{"text":"4","boundingBox":[3.2486,4.0556,3.3244,4.0556,3.3244,4.1617,3.2486,4.1617],"words":[{"text":"4","boundingBox":[3.2486,4.0556,3.3244,4.0556,3.3244,4.1617,3.2486,4.1617],"confidence":1}]},{"text":"10.00","boundingBox":[5.4232,4.0546,5.781,4.0546,5.781,4.1627,5.4232,4.1627],"words":[{"text":"10.00","boundingBox":[5.4232,4.0546,5.781,4.0546,5.781,4.1627,5.4232,4.1627],"confidence":1}]},{"text":"F","boundingBox":[1.0943,4.2661,1.1497,4.2661,1.1497,4.3717,1.0943,4.3717],"words":[{"text":"F","boundingBox":[1.0943,4.2661,1.1497,4.2661,1.1497,4.3717,1.0943,4.3717],"confidence":1}]},{"text":"6","boundingBox":[3.2534,4.2646,3.3226,4.2646,3.3226,4.3727,3.2534,4.3727],"words":[{"text":"6","boundingBox":[3.2534,4.2646,3.3226,4.2646,3.3226,4.3727,3.2534,4.3727],"confidence":1}]},{"text":"12.00","boundingBox":[5.4232,4.2646,5.7809,4.2646,5.7809,4.3727,5.4232,4.3727],"words":[{"text":"12.00","boundingBox":[5.4232,4.2646,5.7809,4.2646,5.7809,4.3727,5.4232,4.3727],"confidence":1}]},{"text":"G","boundingBox":[1.0877,4.4746,1.1735,4.4746,1.1735,4.5827,1.0877,4.5827],"words":[{"text":"G","boundingBox":[1.0877,4.4746,1.1735,4.4746,1.1735,4.5827,1.0877,4.5827],"confidence":1}]},{"text":"8","boundingBox":[3.2514,4.4746,3.3224,4.4746,3.3224,4.5827,3.2514,4.5827],"words":[{"text":"8","boundingBox":[3.2514,4.4746,3.3224,4.4746,3.3224,4.5827,3.2514,4.5827],"confidence":1}]},{"text":"22.00","boundingBox":[5.4184,4.4746,5.781,4.4746,5.781,4.5827,5.4184,4.5827],"words":[{"text":"22.00","boundingBox":[5.4184,4.4746,5.781,4.4746,5.781,4.5827,5.4184,4.5827],"confidence":1}]},{"text":"Subtotal: + 300.00","boundingBox":[5.5075,4.8981,6.632,4.8981,6.632,5.0131,5.5075,5.0131],"words":[{"text":"Subtotal:","boundingBox":[5.5075,4.8981,6.1249,4.8981,6.1249,5.0131,5.5075,5.0131],"confidence":1},{"text":"300.00","boundingBox":[6.1794,4.9042,6.632,4.9042,6.632,5.0131,6.1794,5.0131],"confidence":1}]},{"text":"Tax: + 30.00","boundingBox":[5.5034,5.1245,6.2022,5.1245,6.2022,5.2333,5.5034,5.2333],"words":[{"text":"Tax:","boundingBox":[5.5034,5.1263,5.7812,5.1263,5.7812,5.2333,5.5034,5.2333],"confidence":1},{"text":"30.00","boundingBox":[5.836,5.1245,6.2022,5.1245,6.2022,5.2333,5.836,5.2333],"confidence":1}]},{"text":"Tip: + 100.00","boundingBox":[5.5034,5.3412,6.2587,5.3412,6.2587,5.481,5.5034,5.481],"words":[{"text":"Tip:","boundingBox":[5.5034,5.3412,5.7515,5.3412,5.7515,5.481,5.5034,5.481],"confidence":1},{"text":"100.00","boundingBox":[5.811,5.3445,6.2587,5.3445,6.2587,5.4533,5.811,5.4533],"confidence":1}]},{"text":"Total: + 430.00","boundingBox":[5.5034,5.5583,6.3987,5.5583,6.3987,5.6733,5.5034,5.6733],"words":[{"text":"Total:","boundingBox":[5.5034,5.5583,5.8915,5.5583,5.8915,5.6733,5.5034,5.6733],"confidence":1},{"text":"430.00","boundingBox":[5.942,5.5645,6.3987,5.5645,6.3987,5.6733,5.942,5.6733],"confidence":1}]},{"text":"Signature: + ____ Bilbo Baggins__________","boundingBox":[1.0055,6.6553,3.8342,6.6553,3.8342,6.7981,1.0055,6.7981],"words":[{"text":"Signature:","boundingBox":[1.0055,6.6581,1.6987,6.6581,1.6987,6.7981,1.0055,6.7981],"confidence":1},{"text":"____","boundingBox":[1.747,6.7829,2.0809,6.7829,2.0809,6.7981,1.747,6.7981],"confidence":1},{"text":"Bilbo","boundingBox":[2.0925,6.6553,2.4278,6.6553,2.4278,6.7703,2.0925,6.7703],"confidence":1},{"text":"Baggins__________","boundingBox":[2.4823,6.6581,3.8342,6.6581,3.8342,6.7981,2.4823,6.7981],"confidence":1}]}]},{"page":2,"angle":0,"width":8.4967,"height":10.9967,"unit":"inch","language":"en"},{"page":3,"angle":0,"width":8.5,"height":11,"unit":"inch","language":"en","lines":[{"text":"Company + B Invoice","boundingBox":[0.8861,1.1217,2.3734,1.1217,2.3734,1.2812,0.8861,1.2812],"words":[{"text":"Company","boundingBox":[0.8861,1.1232,1.6203,1.1232,1.6203,1.2812,0.8861,1.2812],"confidence":1},{"text":"B","boundingBox":[1.6836,1.1248,1.764,1.1248,1.764,1.2469,1.6836,1.2469],"confidence":1},{"text":"Invoice","boundingBox":[1.8336,1.1217,2.3734,1.1217,2.3734,1.2485,1.8336,1.2485],"confidence":1}]},{"text":"Invoice + For:","boundingBox":[6.0211,1.0656,7.0357,1.0656,7.0357,1.2121,6.0211,1.2121],"words":[{"text":"Invoice","boundingBox":[6.0211,1.0656,6.6362,1.0656,6.6362,1.2121,6.0211,1.2121],"confidence":1},{"text":"For:","boundingBox":[6.7147,1.0691,7.0357,1.0691,7.0357,1.2121,6.7147,1.2121],"confidence":1}]},{"text":"Address:","boundingBox":[0.8791,1.4825,1.5657,1.4825,1.5657,1.6155,0.8791,1.6155],"words":[{"text":"Address:","boundingBox":[0.8791,1.4825,1.5657,1.4825,1.5657,1.6155,0.8791,1.6155],"confidence":1}]},{"text":"Frodo + Baggins","boundingBox":[6.0164,1.4506,6.9506,1.4506,6.9506,1.5931,6.0164,1.5931],"words":[{"text":"Frodo","boundingBox":[6.0164,1.4506,6.3895,1.4506,6.3895,1.5649,6.0164,1.5649],"confidence":1},{"text":"Baggins","boundingBox":[6.45,1.4556,6.9506,1.4556,6.9506,1.5931,6.45,1.5931],"confidence":1}]},{"text":"123 + Hobbit Lane","boundingBox":[6.0165,1.6707,7.1006,1.6707,7.1006,1.7854,6.0165,1.7854],"words":[{"text":"123","boundingBox":[6.0165,1.6772,6.2434,1.6772,6.2434,1.7854,6.0165,1.7854],"confidence":1},{"text":"Hobbit","boundingBox":[6.3033,1.6707,6.7463,1.6707,6.7463,1.7854,6.3033,1.7854],"confidence":1},{"text":"Lane","boundingBox":[6.803,1.6782,7.1006,1.6782,7.1006,1.7854,6.803,1.7854],"confidence":1}]},{"text":"567 + Main St.","boundingBox":[0.8852,1.846,1.713,1.846,1.713,1.9554,0.8852,1.9554],"words":[{"text":"567","boundingBox":[0.8852,1.8472,1.1203,1.8472,1.1203,1.9554,0.8852,1.9554],"confidence":1},{"text":"Main","boundingBox":[1.1777,1.846,1.5022,1.846,1.5022,1.9554,1.1777,1.9554],"confidence":1},{"text":"St.","boundingBox":[1.5558,1.8472,1.713,1.8472,1.713,1.9554,1.5558,1.9554],"confidence":1}]},{"text":"Redmond, + WA","boundingBox":[6.0164,1.891,6.9793,1.891,6.9793,2.0275,6.0164,2.0275],"words":[{"text":"Redmond,","boundingBox":[6.0164,1.891,6.6861,1.891,6.6861,2.0275,6.0164,2.0275],"confidence":1},{"text":"WA","boundingBox":[6.7408,1.8982,6.9793,1.8982,6.9793,2.0044,6.7408,2.0044],"confidence":1}]},{"text":"Redmond, + WA","boundingBox":[0.891,2.061,1.8537,2.061,1.8537,2.1975,0.891,2.1975],"words":[{"text":"Redmond,","boundingBox":[0.891,2.061,1.5605,2.061,1.5605,2.1975,0.891,2.1975],"confidence":1},{"text":"WA","boundingBox":[1.6152,2.0682,1.8537,2.0682,1.8537,2.1744,1.6152,2.1744],"confidence":1}]},{"text":"555-555-5555","boundingBox":[6.0105,2.1187,6.9371,2.1187,6.9371,2.2254,6.0105,2.2254],"words":[{"text":"555-555-5555","boundingBox":[6.0105,2.1187,6.9371,2.1187,6.9371,2.2254,6.0105,2.2254],"confidence":1}]},{"text":"555-555-5555","boundingBox":[0.8852,2.2887,1.8119,2.2887,1.8119,2.3954,0.8852,2.3954],"words":[{"text":"555-555-5555","boundingBox":[0.8852,2.2887,1.8119,2.2887,1.8119,2.3954,0.8852,2.3954],"confidence":1}]},{"text":"Item","boundingBox":[1.0943,3.0018,1.3842,3.0018,1.3842,3.109,1.0943,3.109],"words":[{"text":"Item","boundingBox":[1.0943,3.0018,1.3842,3.0018,1.3842,3.109,1.0943,3.109],"confidence":1}]},{"text":"Quantity","boundingBox":[3.2527,2.9996,3.8367,2.9996,3.8367,3.1371,3.2527,3.1371],"words":[{"text":"Quantity","boundingBox":[3.2527,2.9996,3.8367,2.9996,3.8367,3.1371,3.2527,3.1371],"confidence":1}]},{"text":"Price","boundingBox":[5.423,2.9996,5.7372,2.9996,5.7372,3.109,5.423,3.109],"words":[{"text":"Price","boundingBox":[5.423,2.9996,5.7372,2.9996,5.7372,3.109,5.423,3.109],"confidence":1}]},{"text":"A","boundingBox":[1.0832,3.2118,1.174,3.2118,1.174,3.318,1.0832,3.318],"words":[{"text":"A","boundingBox":[1.0832,3.2118,1.174,3.2118,1.174,3.318,1.0832,3.318],"confidence":1}]},{"text":"10","boundingBox":[3.2589,3.2108,3.4067,3.2108,3.4067,3.319,3.2589,3.319],"words":[{"text":"10","boundingBox":[3.2589,3.2108,3.4067,3.2108,3.4067,3.319,3.2589,3.319],"confidence":1}]},{"text":"100.99","boundingBox":[5.4232,3.2108,5.8617,3.2108,5.8617,3.319,5.4232,3.319],"words":[{"text":"100.99","boundingBox":[5.4232,3.2108,5.8617,3.2108,5.8617,3.319,5.4232,3.319],"confidence":1}]},{"text":"B","boundingBox":[1.0943,3.4256,1.1637,3.4256,1.1637,3.531,1.0943,3.531],"words":[{"text":"B","boundingBox":[1.0943,3.4256,1.1637,3.4256,1.1637,3.531,1.0943,3.531],"confidence":1}]},{"text":"20","boundingBox":[3.2541,3.4241,3.4067,3.4241,3.4067,3.5323,3.2541,3.5323],"words":[{"text":"20","boundingBox":[3.2541,3.4241,3.4067,3.4241,3.4067,3.5323,3.2541,3.5323],"confidence":1}]},{"text":"140.67","boundingBox":[5.4232,3.4241,5.8622,3.4241,5.8622,3.5323,5.4232,3.5323],"words":[{"text":"140.67","boundingBox":[5.4232,3.4241,5.8622,3.4241,5.8622,3.5323,5.4232,3.5323],"confidence":1}]},{"text":"C","boundingBox":[1.0882,3.6343,1.1647,3.6343,1.1647,3.7421,1.0882,3.7421],"words":[{"text":"C","boundingBox":[1.0882,3.6343,1.1647,3.6343,1.1647,3.7421,1.0882,3.7421],"confidence":1}]},{"text":"40","boundingBox":[3.2486,3.6341,3.4067,3.6341,3.4067,3.7423,3.2486,3.7423],"words":[{"text":"40","boundingBox":[3.2486,3.6341,3.4067,3.6341,3.4067,3.7423,3.2486,3.7423],"confidence":1}]},{"text":"150.66","boundingBox":[5.4232,3.6341,5.8634,3.6341,5.8634,3.7423,5.4232,3.7423],"words":[{"text":"150.66","boundingBox":[5.4232,3.6341,5.8634,3.6341,5.8634,3.7423,5.4232,3.7423],"confidence":1}]},{"text":"D","boundingBox":[1.0943,3.8456,1.1753,3.8456,1.1753,3.951,1.0943,3.951],"words":[{"text":"D","boundingBox":[1.0943,3.8456,1.1753,3.8456,1.1753,3.951,1.0943,3.951],"confidence":1}]},{"text":"10","boundingBox":[3.2589,3.8441,3.4067,3.8441,3.4067,3.9523,3.2589,3.9523],"words":[{"text":"10","boundingBox":[3.2589,3.8441,3.4067,3.8441,3.4067,3.9523,3.2589,3.9523],"confidence":1}]},{"text":"120.00","boundingBox":[5.4232,3.8441,5.8642,3.8441,5.8642,3.9523,5.4232,3.9523],"words":[{"text":"120.00","boundingBox":[5.4232,3.8441,5.8642,3.8441,5.8642,3.9523,5.4232,3.9523],"confidence":1}]},{"text":"E","boundingBox":[1.0943,4.0561,1.153,4.0561,1.153,4.1614,1.0943,4.1614],"words":[{"text":"E","boundingBox":[1.0943,4.0561,1.153,4.0561,1.153,4.1614,1.0943,4.1614],"confidence":1}]},{"text":"40","boundingBox":[3.2486,4.0546,3.4067,4.0546,3.4067,4.1627,3.2486,4.1627],"words":[{"text":"40","boundingBox":[3.2486,4.0546,3.4067,4.0546,3.4067,4.1627,3.2486,4.1627],"confidence":1}]},{"text":"100.00","boundingBox":[5.4232,4.0546,5.8644,4.0546,5.8644,4.1627,5.4232,4.1627],"words":[{"text":"100.00","boundingBox":[5.4232,4.0546,5.8644,4.0546,5.8644,4.1627,5.4232,4.1627],"confidence":1}]},{"text":"F","boundingBox":[1.0943,4.2661,1.1497,4.2661,1.1497,4.3717,1.0943,4.3717],"words":[{"text":"F","boundingBox":[1.0943,4.2661,1.1497,4.2661,1.1497,4.3717,1.0943,4.3717],"confidence":1}]},{"text":"60","boundingBox":[3.2534,4.2646,3.4067,4.2646,3.4067,4.3727,3.2534,4.3727],"words":[{"text":"60","boundingBox":[3.2534,4.2646,3.4067,4.2646,3.4067,4.3727,3.2534,4.3727],"confidence":1}]},{"text":"120.00","boundingBox":[5.4232,4.2646,5.8642,4.2646,5.8642,4.3727,5.4232,4.3727],"words":[{"text":"120.00","boundingBox":[5.4232,4.2646,5.8642,4.2646,5.8642,4.3727,5.4232,4.3727],"confidence":1}]},{"text":"G","boundingBox":[1.0877,4.4746,1.1735,4.4746,1.1735,4.5827,1.0877,4.5827],"words":[{"text":"G","boundingBox":[1.0877,4.4746,1.1735,4.4746,1.1735,4.5827,1.0877,4.5827],"confidence":1}]},{"text":"80","boundingBox":[3.2514,4.4746,3.4067,4.4746,3.4067,4.5827,3.2514,4.5827],"words":[{"text":"80","boundingBox":[3.2514,4.4746,3.4067,4.4746,3.4067,4.5827,3.2514,4.5827],"confidence":1}]},{"text":"220.00","boundingBox":[5.4184,4.4746,5.8644,4.4746,5.8644,4.5827,5.4184,4.5827],"words":[{"text":"220.00","boundingBox":[5.4184,4.4746,5.8644,4.4746,5.8644,4.5827,5.4184,4.5827],"confidence":1}]},{"text":"Subtotal: + 3000.00","boundingBox":[5.5075,4.8981,6.7158,4.8981,6.7158,5.0131,5.5075,5.0131],"words":[{"text":"Subtotal:","boundingBox":[5.5075,4.8981,6.1249,4.8981,6.1249,5.0131,5.5075,5.0131],"confidence":1},{"text":"3000.00","boundingBox":[6.1794,4.9042,6.7158,4.9042,6.7158,5.0131,6.1794,5.0131],"confidence":1}]},{"text":"Tax: + 300.00","boundingBox":[5.5034,5.1245,6.2887,5.1245,6.2887,5.2333,5.5034,5.2333],"words":[{"text":"Tax:","boundingBox":[5.5034,5.1263,5.7812,5.1263,5.7812,5.2333,5.5034,5.2333],"confidence":1},{"text":"300.00","boundingBox":[5.836,5.1245,6.2887,5.1245,6.2887,5.2333,5.836,5.2333],"confidence":1}]},{"text":"Tip: + 1000.00","boundingBox":[5.5034,5.3412,6.3422,5.3412,6.3422,5.481,5.5034,5.481],"words":[{"text":"Tip:","boundingBox":[5.5034,5.3412,5.7515,5.3412,5.7515,5.481,5.5034,5.481],"confidence":1},{"text":"1000.00","boundingBox":[5.811,5.3445,6.3422,5.3445,6.3422,5.4533,5.811,5.4533],"confidence":1}]},{"text":"Total: + 4300.00","boundingBox":[5.5034,5.5583,6.4825,5.5583,6.4825,5.6733,5.5034,5.6733],"words":[{"text":"Total:","boundingBox":[5.5034,5.5583,5.8915,5.5583,5.8915,5.6733,5.5034,5.6733],"confidence":1},{"text":"4300.00","boundingBox":[5.942,5.5645,6.4825,5.5645,6.4825,5.6733,5.942,5.6733],"confidence":1}]},{"text":"Signature: + ____ Frodo Baggins__________","boundingBox":[1.0055,6.6556,3.8842,6.6556,3.8842,6.7981,1.0055,6.7981],"words":[{"text":"Signature:","boundingBox":[1.0055,6.6581,1.6987,6.6581,1.6987,6.7981,1.0055,6.7981],"confidence":1},{"text":"____","boundingBox":[1.747,6.7829,2.0809,6.7829,2.0809,6.7981,1.747,6.7981],"confidence":1},{"text":"Frodo","boundingBox":[2.0925,6.6556,2.4778,6.6556,2.4778,6.7703,2.0925,6.7703],"confidence":1},{"text":"Baggins__________","boundingBox":[2.5325,6.6581,3.8842,6.6581,3.8842,6.7981,2.5325,6.7981],"confidence":1}]}]}],"documentResults":[{"docType":"prebuilt:receipt","pageRange":[1,1],"fields":{"ReceiptType":{"type":"string","valueString":"Itemized","confidence":0.99},"MerchantName":{"type":"string","valueString":"Bilbo + Baggins","text":"Bilbo Baggins","boundingBox":[6.0164,1.4503,6.8967,1.4503,6.8967,1.5931,6.0164,1.5931],"page":1,"confidence":0.987,"elements":["#/readResults/0/lines/3/words/0","#/readResults/0/lines/3/words/1"]},"MerchantAddress":{"type":"string","valueString":"123 + Hobbit Lane 567 Main St. Redmond, WA Redmond, WA","text":"123 Hobbit Lane + 567 Main St. Redmond, WA Redmond, WA","boundingBox":[0.8852,1.6707,7.1006,1.6707,7.1006,2.1975,0.8852,2.1975],"page":1,"confidence":0.99,"elements":["#/readResults/0/lines/4/words/0","#/readResults/0/lines/4/words/1","#/readResults/0/lines/4/words/2","#/readResults/0/lines/5/words/0","#/readResults/0/lines/5/words/1","#/readResults/0/lines/5/words/2","#/readResults/0/lines/6/words/0","#/readResults/0/lines/6/words/1","#/readResults/0/lines/7/words/0","#/readResults/0/lines/7/words/1"]},"MerchantPhoneNumber":{"type":"phoneNumber","valuePhoneNumber":"+15555555555","text":"555-555-5555","boundingBox":[6.0105,2.1187,6.9371,2.1187,6.9371,2.2254,6.0105,2.2254],"page":1,"confidence":0.99,"elements":["#/readResults/0/lines/8/words/0"]},"Items":{"type":"array","valueArray":[{"type":"object","valueObject":{"Name":{"type":"string","valueString":"F","text":"F","boundingBox":[1.0943,4.2661,1.1497,4.2661,1.1497,4.3717,1.0943,4.3717],"page":1,"confidence":0.964,"elements":["#/readResults/0/lines/28/words/0"]},"TotalPrice":{"type":"number","valueNumber":12,"text":"12.00","boundingBox":[5.4232,4.2646,5.7809,4.2646,5.7809,4.3727,5.4232,4.3727],"page":1,"confidence":0.947,"elements":["#/readResults/0/lines/30/words/0"]}}},{"type":"object","valueObject":{"TotalPrice":{"type":"number","valueNumber":22,"text":"22.00","boundingBox":[5.4184,4.4746,5.781,4.4746,5.781,4.5827,5.4184,4.5827],"page":1,"confidence":0.935,"elements":["#/readResults/0/lines/33/words/0"]}}}]},"Subtotal":{"type":"number","valueNumber":300,"text":"300.00","boundingBox":[6.1794,4.9042,6.632,4.9042,6.632,5.0131,6.1794,5.0131],"page":1,"confidence":0.99,"elements":["#/readResults/0/lines/34/words/1"]},"Total":{"type":"number","valueNumber":430,"text":"430.00","boundingBox":[5.942,5.5645,6.3987,5.5645,6.3987,5.6733,5.942,5.6733],"page":1,"confidence":0.985,"elements":["#/readResults/0/lines/37/words/1"]}}},{"docType":"prebuilt:receipt","pageRange":[2,2]},{"docType":"prebuilt:receipt","pageRange":[3,3],"fields":{"ReceiptType":{"type":"string","valueString":"Itemized","confidence":0.99},"MerchantName":{"type":"string","valueString":"Frodo + Baggins","text":"Frodo Baggins","boundingBox":[6.0164,1.4506,6.9506,1.4506,6.9506,1.5931,6.0164,1.5931],"page":3,"confidence":0.984,"elements":["#/readResults/2/lines/3/words/0","#/readResults/2/lines/3/words/1"]},"MerchantAddress":{"type":"string","valueString":"123 + Hobbit Lane 567 Main St. Redmond, WA Redmond, WA","text":"123 Hobbit Lane + 567 Main St. Redmond, WA Redmond, WA","boundingBox":[0.8852,1.6707,7.1006,1.6707,7.1006,2.1975,0.8852,2.1975],"page":3,"confidence":0.99,"elements":["#/readResults/2/lines/4/words/0","#/readResults/2/lines/4/words/1","#/readResults/2/lines/4/words/2","#/readResults/2/lines/5/words/0","#/readResults/2/lines/5/words/1","#/readResults/2/lines/5/words/2","#/readResults/2/lines/6/words/0","#/readResults/2/lines/6/words/1","#/readResults/2/lines/7/words/0","#/readResults/2/lines/7/words/1"]},"MerchantPhoneNumber":{"type":"phoneNumber","valuePhoneNumber":"+15555555555","text":"555-555-5555","boundingBox":[6.0105,2.1187,6.9371,2.1187,6.9371,2.2254,6.0105,2.2254],"page":3,"confidence":0.99,"elements":["#/readResults/2/lines/8/words/0"]},"Items":{"type":"array","valueArray":[{"type":"object","valueObject":{"Name":{"type":"string","valueString":"E","text":"E","boundingBox":[1.0943,4.0561,1.153,4.0561,1.153,4.1614,1.0943,4.1614],"page":3,"confidence":0.935,"elements":["#/readResults/2/lines/25/words/0"]},"Quantity":{"type":"number","text":"40","boundingBox":[3.2486,4.0546,3.4067,4.0546,3.4067,4.1627,3.2486,4.1627],"page":3,"confidence":0,"elements":["#/readResults/2/lines/26/words/0"]},"TotalPrice":{"type":"number","valueNumber":100,"text":"100.00","boundingBox":[5.4232,4.0546,5.8644,4.0546,5.8644,4.1627,5.4232,4.1627],"page":3,"confidence":0.723,"elements":["#/readResults/2/lines/27/words/0"]}}},{"type":"object","valueObject":{"Name":{"type":"string","valueString":"F","text":"F","boundingBox":[1.0943,4.2661,1.1497,4.2661,1.1497,4.3717,1.0943,4.3717],"page":3,"confidence":0.905,"elements":["#/readResults/2/lines/28/words/0"]},"TotalPrice":{"type":"number","valueNumber":120,"text":"120.00","boundingBox":[5.4232,4.2646,5.8642,4.2646,5.8642,4.3727,5.4232,4.3727],"page":3,"confidence":0.967,"elements":["#/readResults/2/lines/30/words/0"]}}},{"type":"object","valueObject":{"Name":{"type":"string","valueString":"G","text":"G","boundingBox":[1.0877,4.4746,1.1735,4.4746,1.1735,4.5827,1.0877,4.5827],"page":3,"confidence":0.896,"elements":["#/readResults/2/lines/31/words/0"]},"TotalPrice":{"type":"number","valueNumber":220,"text":"220.00","boundingBox":[5.4184,4.4746,5.8644,4.4746,5.8644,4.5827,5.4184,4.5827],"page":3,"confidence":0.958,"elements":["#/readResults/2/lines/33/words/0"]}}}]},"Subtotal":{"type":"number","valueNumber":3000,"text":"3000.00","boundingBox":[6.1794,4.9042,6.7158,4.9042,6.7158,5.0131,6.1794,5.0131],"page":3,"confidence":0.99,"elements":["#/readResults/2/lines/34/words/1"]},"Total":{"type":"number","valueNumber":1000,"text":"1000.00","boundingBox":[5.811,5.3445,6.3422,5.3445,6.3422,5.4533,5.811,5.4533],"page":3,"confidence":0.985,"elements":["#/readResults/2/lines/36/words/1"]}}}]}}' + headers: + apim-request-id: 2add7464-1389-4081-a794-ba4476bc8c47 + content-type: application/json; charset=utf-8 + date: Mon, 27 Apr 2020 21:52:31 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + transfer-encoding: chunked + x-content-type-options: nosniff + x-envoy-upstream-service-time: '87' + status: + code: 200 + message: OK + url: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/prebuilt/receipt/analyzeResults/ef55b20c-a9a2-414d-8e5f-054017fde397 +version: 1 diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_receipt_async.test_receipt_multipage_transform.yaml b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_receipt_async.test_receipt_multipage_transform.yaml new file mode 100644 index 000000000000..f644585caaa5 --- /dev/null +++ b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_receipt_async.test_receipt_multipage_transform.yaml @@ -0,0 +1,2015 @@ +interactions: +- request: + body: !!binary | + JVBERi0xLjcNCiW1tbW1DQoxIDAgb2JqDQo8PC9UeXBlL0NhdGFsb2cvUGFnZXMgMiAwIFIvTGFu + Zyhlbi1VUykgL1N0cnVjdFRyZWVSb290IDE2IDAgUi9NYXJrSW5mbzw8L01hcmtlZCB0cnVlPj4v + TWV0YWRhdGEgMjUzIDAgUi9WaWV3ZXJQcmVmZXJlbmNlcyAyNTQgMCBSPj4NCmVuZG9iag0KMiAw + IG9iag0KPDwvVHlwZS9QYWdlcy9Db3VudCAzL0tpZHNbIDMgMCBSIDExIDAgUiAxMyAwIFJdID4+ + DQplbmRvYmoNCjMgMCBvYmoNCjw8L1R5cGUvUGFnZS9QYXJlbnQgMiAwIFIvUmVzb3VyY2VzPDwv + Rm9udDw8L0YxIDUgMCBSL0YyIDkgMCBSPj4vRXh0R1N0YXRlPDwvR1M3IDcgMCBSL0dTOCA4IDAg + Uj4+L1Byb2NTZXRbL1BERi9UZXh0L0ltYWdlQi9JbWFnZUMvSW1hZ2VJXSA+Pi9NZWRpYUJveFsg + MCAwIDYxMiA3OTJdIC9Db250ZW50cyA0IDAgUi9Hcm91cDw8L1R5cGUvR3JvdXAvUy9UcmFuc3Bh + cmVuY3kvQ1MvRGV2aWNlUkdCPj4vVGFicy9TL1N0cnVjdFBhcmVudHMgMD4+DQplbmRvYmoNCjQg + MCBvYmoNCjw8L0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggMjg2ND4+DQpzdHJlYW0NCnicvZxZ + bxw3EsffBeg79ONMsGrzPhZBAMvXerEGkrWAPBiLwJYPGIilXVubbL79VrHvYRfZ3cOOAI2OLvJf + LFb/SPbB6tGP1fffP3r15OXTiv3wQ3X99En1n8sLVjP88lxUrDLwab2ovn64vPj5u+ru8uL65vLi + 0XNecVMzV918vLzgYMcqXikpam4ry1TtTHXzBexevLbVp29QZ/Up/OXav15cXrw5vLz77agP9/D9 + +WgOt/DzA3xXx39VN3+/vHgGOj9dXpzlkAOH+Nih4Ecr//x4JYP6V1D/azlVzVzNDKV60rzq2asn + VTXqCL6+I8RcLxjrayUi+eujgmhf+cOv+PEuxN+CUyYcefsJ/wsfrjG6g+PfNkfmxC9vau8pv3Jh + EaXCYmSt9Yl8dQV1OlXd3L45cCFLNVizmvt5xajBZ6iI2klK5W/HK25CF2NXvyulCX0oSM2QOQ/H + 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 + fvW3lN9NoKP8fgIt5fcTaCkfCZSmfCSw09UI6BG/5zmhhK3NXNLi2yxyv6sRhuO2Ndl2xSReu18C + SWJj63VjgCulDJhYt8bwpZRleJt/hbRauxkZKS1YnXrQP1Zeu/sWqczwsaPoQiXOyj7h6XqHU7Nw + 4j5Agofrl1/DFhRHCafxlSw3vgmNdx9P/alYcBMnVb/AV7HR2uNeVHHjrz9DKxFR4SLtfXVUh+u3 + 2N4QjPCBobkrNuZyvAMV+7FxL7PZQV3OCfxy5A4iij0481lKHXfbcTPqJ0nTd4eAs8CYcIeT1VbQ + t+LU2ltxVP7jrMGt4o1aeyuOlIaffhVkVamLzULb9D3+WLrUlRyhOO7ztEa61PJCAGLMOulS46lg + IcPXSJcaULmXuJ3hGulSIyq3DleUK6R1qRGVG5hGrGq1LjWkcmXwYaE10qVoxiXD+eoa6VI041zj + BgZrpEvRzPuam1Ug1aVohk8vi3XSHc04bmeEj9VUhsnwOhCMljA1gRHb9AMfw80Nf0dZqDxp/Xp4 + TA7MvFJgaGoPJlbVsrkCYqnn5PSIc8tK9/fXAS7TyBgJQ4uqLAzmohtYP/Xhid+vPlfPwtTZkXr3 + OJv90lxjdDiRlTildYc/cAPfx2Hvz5f4Gf75G0z37rvp7y0+uBxvgnWuuxwyB5hIuJvNHretowTd + UQYnabEnj3HPzvf9XP8bLHLV4Vu8cj/XCw7/gnk/4UU2Hn5z4s4HQ3MsdeqGPnb7VjRbEL8K9ww/ + Q0xY2N8U//f6AVcH8UOgZ7nFhcKt+Qi3sps3ssLRkbpW8S6K/XayZvFmr+cFRcraSsqbbFB44aDg + vdjTnS1ze6SeJew4LTy3Vep5YgoWKaRY4ZZ5DoOxWxLSwhkFY6rQf1JEOZRypFhuD9ozzxzgiKSk + iee8/w9kOwx8DQplbmRzdHJlYW0NCmVuZG9iag0KNSAwIG9iag0KPDwvVHlwZS9Gb250L1N1YnR5 + cGUvVHJ1ZVR5cGUvTmFtZS9GMS9CYXNlRm9udC9CQ0RFRUUrQ2FsaWJyaS9FbmNvZGluZy9XaW5B + bnNpRW5jb2RpbmcvRm9udERlc2NyaXB0b3IgNiAwIFIvRmlyc3RDaGFyIDMyL0xhc3RDaGFyIDEy + MS9XaWR0aHMgMjQ5IDAgUj4+DQplbmRvYmoNCjYgMCBvYmoNCjw8L1R5cGUvRm9udERlc2NyaXB0 + b3IvRm9udE5hbWUvQkNERUVFK0NhbGlicmkvRmxhZ3MgMzIvSXRhbGljQW5nbGUgMC9Bc2NlbnQg + NzUwL0Rlc2NlbnQgLTI1MC9DYXBIZWlnaHQgNzUwL0F2Z1dpZHRoIDUyMS9NYXhXaWR0aCAxNzQz + L0ZvbnRXZWlnaHQgNDAwL1hIZWlnaHQgMjUwL1N0ZW1WIDUyL0ZvbnRCQm94WyAtNTAzIC0yNTAg + MTI0MCA3NTBdIC9Gb250RmlsZTIgMjUwIDAgUj4+DQplbmRvYmoNCjcgMCBvYmoNCjw8L1R5cGUv + RXh0R1N0YXRlL0JNL05vcm1hbC9jYSAxPj4NCmVuZG9iag0KOCAwIG9iag0KPDwvVHlwZS9FeHRH + U3RhdGUvQk0vTm9ybWFsL0NBIDE+Pg0KZW5kb2JqDQo5IDAgb2JqDQo8PC9UeXBlL0ZvbnQvU3Vi + dHlwZS9UcnVlVHlwZS9OYW1lL0YyL0Jhc2VGb250L0JDREZFRStDYWxpYnJpLUJvbGQvRW5jb2Rp + bmcvV2luQW5zaUVuY29kaW5nL0ZvbnREZXNjcmlwdG9yIDEwIDAgUi9GaXJzdENoYXIgMzIvTGFz + dENoYXIgMTIwL1dpZHRocyAyNTEgMCBSPj4NCmVuZG9iag0KMTAgMCBvYmoNCjw8L1R5cGUvRm9u + dERlc2NyaXB0b3IvRm9udE5hbWUvQkNERkVFK0NhbGlicmktQm9sZC9GbGFncyAzMi9JdGFsaWNB + bmdsZSAwL0FzY2VudCA3NTAvRGVzY2VudCAtMjUwL0NhcEhlaWdodCA3NTAvQXZnV2lkdGggNTM2 + L01heFdpZHRoIDE3ODEvRm9udFdlaWdodCA3MDAvWEhlaWdodCAyNTAvU3RlbVYgNTMvRm9udEJC + b3hbIC01MTkgLTI1MCAxMjYzIDc1MF0gL0ZvbnRGaWxlMiAyNTIgMCBSPj4NCmVuZG9iag0KMTEg + MCBvYmoNCjw8L1R5cGUvUGFnZS9QYXJlbnQgMiAwIFIvUmVzb3VyY2VzPDwvRm9udDw8L0YyIDkg + MCBSPj4vRXh0R1N0YXRlPDwvR1M3IDcgMCBSL0dTOCA4IDAgUj4+L1Byb2NTZXRbL1BERi9UZXh0 + L0ltYWdlQi9JbWFnZUMvSW1hZ2VJXSA+Pi9NZWRpYUJveFsgMCAwIDYxMiA3OTJdIC9Db250ZW50 + cyAxMiAwIFIvR3JvdXA8PC9UeXBlL0dyb3VwL1MvVHJhbnNwYXJlbmN5L0NTL0RldmljZVJHQj4+ + L1RhYnMvUy9TdHJ1Y3RQYXJlbnRzIDE+Pg0KZW5kb2JqDQoxMiAwIG9iag0KPDwvRmlsdGVyL0Zs + YXRlRGVjb2RlL0xlbmd0aCA0NzY+Pg0Kc3RyZWFtDQp4nK2Yu2ocQRBF84H5hwplB7Vdj36BUKCV + LGwQ2GjBgVEoKZLA9v+Dy4sDh6rmTjDQzNCne6BO3xo6fKXLy8P98fMNlasrur450s99K1z+XlOU + CrW496n062nfvn+kt327Pu3b4ZNSPDg975vES4WEunJRp14Ge6PTa7x099Dp5XdMSC/n0fg3utu3 + Hxf04ZFOX/btNqb7tm90e38k+m9BAlpQm8pNzws6r+OdeEXhe+M+0nhD4VvhKWm8o/Be2fL4isLr + ZO9pfEPhxbhZGt9B+Do795nGDxR+CM/87icK3xqX/O4FJcJaC2vN81Heq+bs+dITlPiqDB4LfJT5 + alGe+doXlPp8dF7YPkp93oW15fko93mt7PljV1Dyc5tc8+euoOznatw9z0fpzyOHyULsQenPInZp + /vsrSn8Wucvz319R+rMIXvnyU5T9zJ37Ah9lP9PB+cNXUfazSF5lYfso+2lEL12oPpT9NLLXStOD + sp+2utL1KMp+6pNnvvoNZT+N8FXy4cNQ9tMIX5rP3oayn0b4snz9G0p/MhrXfPg2lP6kR9u9wEf5 + TyJ9LTQ/hvKfRPpaaH4M5T+J9LXQ/BjKf1I614X6R/lvCveF9OWwv4CVR3uff/8AMWTgdQ0KZW5k + c3RyZWFtDQplbmRvYmoNCjEzIDAgb2JqDQo8PC9UeXBlL1BhZ2UvUGFyZW50IDIgMCBSL1Jlc291 + cmNlczw8L0ZvbnQ8PC9GMSA1IDAgUi9GMiA5IDAgUj4+L0V4dEdTdGF0ZTw8L0dTNyA3IDAgUi9H + UzggOCAwIFI+Pi9Qcm9jU2V0Wy9QREYvVGV4dC9JbWFnZUIvSW1hZ2VDL0ltYWdlSV0gPj4vTWVk + aWFCb3hbIDAgMCA2MTIgNzkyXSAvQ29udGVudHMgMTQgMCBSL0dyb3VwPDwvVHlwZS9Hcm91cC9T + L1RyYW5zcGFyZW5jeS9DUy9EZXZpY2VSR0I+Pi9UYWJzL1MvU3RydWN0UGFyZW50cyAyPj4NCmVu + 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 + mxWDaazuLffHZf/XyULlydKvhoeloFgtJRTUpHahL93+mltBGOxpKTm6Y7Lu6v7GpCD11DNaQExK + 6AdgSOeZT717wkML9upBhyuL6n11mfRLsw1gXRIVLp3a0+/RA+T32sKAIVRhtoQn9+zXM8QITO+A + 9glKLNq+F87X3ru/nWXj+ea8/ouJHAe52xbDiDYr2x4OQ5UX8RyPeO0OBw4teexOr37fA/vb+QJ0 + +xYuIfZaweC/AN6IFYv+0NkZIO4MmKuL8ERtde5O1TH+MO+X/kbPZ/AJ9Sd9u/979eA4Gd6x3mUW + g6WWMJhZi94xhb0jFJHhecL9wep69bHn+5wihEsfiDWLTrGFneJuoM3PeF46LXyXMMzZUOHYoeH7 + xGCtb1Gxwi2rGcxq7BqXFo4omJxw9Qd5lMFVFhVbOo1958iBPCIwaeRJ4/8DtXV3Ww0KZW5kc3Ry + ZWFtDQplbmRvYmoNCjE1IDAgb2JqDQo8PC9BdXRob3IoS3Jpc3RhIFByYXRpY28pIC9DcmVhdG9y + KP7/AE0AaQBjAHIAbwBzAG8AZgB0AK4AIABXAG8AcgBkACAAZgBvAHIAIABPAGYAZgBpAGMAZQAg + ADMANgA1KSAvQ3JlYXRpb25EYXRlKEQ6MjAyMDA0MjIxNjQ1MjktMDcnMDAnKSAvTW9kRGF0ZShE + OjIwMjAwNDIyMTY0NTI5LTA3JzAwJykgL1Byb2R1Y2VyKP7/AE0AaQBjAHIAbwBzAG8AZgB0AK4A + IABXAG8AcgBkACAAZgBvAHIAIABPAGYAZgBpAGMAZQAgADMANgA1KSA+Pg0KZW5kb2JqDQoyMyAw + IG9iag0KPDwvVHlwZS9PYmpTdG0vTiAyMzIvRmlyc3QgMjAzNS9GaWx0ZXIvRmxhdGVEZWNvZGUv + TGVuZ3RoIDMwNTE+Pg0Kc3RyZWFtDQp4nO1b24ocyRF9N/gf8g+mIu8Jy4Jt7WKzrBCSwA/CDyOp + LQ07M72MWiD9vc+pipyetTOz1Gn7weCHmbrG/UTkpaKtmMXYYIIYG40s2dhkJOIezsQaW3DfG7cY + J9FYnMWMU+NjMM6CLBrnTIjJOG+i4FkwMRa8ZpIFUTIp4W1rsrXGi8nJGe9NAUPvTMnkBLEuGx9w + LLi9GBEPfsWIBcOAawuOHtfOigkWx5SpsXiwCR7HnExwRgKIfMaxRBNoB/QK4J+kmAD6lHAfzzOs + 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 + o7YHauOettT9bxfFC374xVj+v4b+R2qoOrMW0tkCqt2Sut9ed8Hr1nDdsK3bqHVDsm4T1s27ug1W + N6fqllHdfKlbInWjoi7560K8Lo/rQrMu/+qirC5v6qKjLgX+W4W/fs361q9fDMY/AFTdMPANCmVu + ZHN0cmVhbQ0KZW5kb2JqDQoyNDkgMCBvYmoNClsgMjI2IDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAy + NTAgMzA2IDI1MiAwIDUwNyA1MDcgNTA3IDUwNyA1MDcgNTA3IDUwNyA1MDcgNTA3IDUwNyAyNjgg + MCAwIDAgMCAwIDAgNTc5IDU0NCA1MzMgNjE1IDQ4OCA0NTkgNjMxIDYyMyAyNTIgMCAwIDQyMCA4 + NTUgMCAwIDUxNyA2NzMgNTQzIDQ1OSAwIDAgMCA4OTAgMCAwIDAgMCAwIDAgMCAwIDAgNDc5IDUy + NSA0MjMgNTI1IDQ5OCAwIDQ3MSAwIDIzMCAwIDAgMjMwIDc5OSA1MjUgNTI3IDUyNSAwIDM0OSAz + OTEgMzM1IDUyNSA0NTIgMCAwIDQ1M10gDQplbmRvYmoNCjI1MCAwIG9iag0KPDwvRmlsdGVyL0Zs + YXRlRGVjb2RlL0xlbmd0aCA1MzE4Mi9MZW5ndGgxIDEzNzU5Nj4+DQpzdHJlYW0NCnic7H0HXFTH + 2v475+zCUhaWKrLiLq6Auig2FEtklaJoLCirgA2k2LChGI0lJEZNSEy5Mb2ZnhtNsqwaMdXkphfT + e+/JjaZdzc01Ub5nzruDaDTJvfd/v3z3/9sXnvM8887Me2bmzMyZjRBIEJENFxNVFIzIL1mf7HuW + xJeZRLFJBSNOzbvntXVfkfhoNVGIb/ykrL7XPly5k0icg1oVVQsqF7/T99MUovmbicyDq5Yvc+5e + /EY20Y1fIH1/7eLZC9a+pw8kWvwCkdU9u25l7bvOlS6i228meumvc2oqq38cu9KHeJGIN2AOHNY7 + O+1HOh/prnMWLFuRPXOSG2nEm7utblFV5U2b53cjseoiFJ+8oHLF4l7W9G7In4PyzgU1yyqvOmvL + chI/yfpnL6xcUHPdoYMzSTSjfu+lixctXdZqpw3ozzRZfnF9zeK42V06Eq35GbdDP+ENGfzhP3a9 + WDAzeuhB6mghafd9tfpZya8XnTb+p0OHG8P2WQYgGUYasaFeCB0h8Wj4lp8OHdoSts+I1M46bpMe + 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 + wAKEAiGAGTANb8VVBzRAAETVAj5xBDgM/Az8BBwC/gH8CPwd+AE4CBwA/gZ8D3wHfAt8A3wN7Af2 + AV8BfwW+BL4APgc+Az4FPgE+Bj4CPgQ+AN4H3gPeBd4B3gbeAt4E3gBeB14DXgVeAV4GXgJeBF4A + ngf2As8BzwLPAE8DTwFPAk8AjwOPAY8CfwEeAR4G9gAPAQ8CDwD3A/cB9wK7gRZgF3APsBPYAWwH + /EAz4APuBu4C7gS2AVuBO4A/A7cDtwG3ArcANwM3ATcCNwBbgOuB64BrgWuAq4GrgCuBK4DLgcuA + S4HNwCXAn4CLgYuAC4ELgE3A+cB5QBNwLnAOsBHYAKyn6uGNAutfYP0LrH+B9S+w/gXWv8D6F1j/ + AutfYP0LrH+B9S+w/gXWv8D6F1j/AutfYP2LegB7gMAeILAHCOwBAnuAwB4gsAcI7AECe4DAHiCw + BwjsAQJ7gMAeILAHCOwBAnuAwB4gsAcI7AECe4DAHiCwBwjsAQJ7gMAeILAHCOwBAnuAwB4gsAcI + 7AEC619g/Qusf4G1L7D2Bda+wNoXWPsCa19g7QusfYG1L7D2/+h9+L/cyv7oBvyXGy1d2u5gJi1p + pvyFp9DriI5ccszvqUygebSUGvG1gTbRJfQQvU2zaB3UlbSFbqU/k48epqfo9d/xOy+/246sNC+g + SH0XhVAcUeuh1v1HbgVazFHtPJcgFWdyHvW02lq/Ps739ZFLWm1HWkJiKdyoa9Vegvdv4nDrIbxy + kW4dINPaRuhoo8Z3odcdufvIbceNQTGV01SaRtOpgirR/2qaQ3MxMvOpjhbQQiO1EHmzca1FaiZK + YXsx9NFSi2gxUE/LqIGW42sx9NJASuYtMdINdBq+VtBKOp1W0WpaE7ieZnhWI+d0I70CWEtn4Mmc + SWcZSjF71tHZtB5PbSOdQ+f+aurcNtVE59H5eM4X0IUn1ZuOSV2Er4vpT5gPm+lSuoyuwLy4mq45 + znu54b+KrqPrMWdk3qXwXG8omXs/PU476S66m+4xxrIKo8Yjosal1hjDxRiD1ejhunYt5vE7rW20 + 1qLvsm9NgZ6ugP+sdjWWB8ZRllyHkhyFn4OMsua4kbgIfWB9tEecutTo/1Fv+1H5Na8aj2vajczV + Rkqq470n05fRtViBN+AqR1WqG6FZXW/o9v7r2spuMdI30c10C57FbYZSzJ5boW+j27G276CttA1f + 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 + IDAgMCAwIDQ1OSAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCA0NzMgNDk1IDAgMCAwIDAgMCAwIDAg + MCAwIDAgNDk4IDAgNDk0IDUzNyAwIDUzNyA1MDMgMCA0NzQgMCAyNDYgMCAwIDI0NiAwIDUzNyA1 + MzggNTM3IDAgMzU1IDM5OSAzNDcgNTM3IDAgMCA0NTldIA0KZW5kb2JqDQoyNTIgMCBvYmoNCjw8 + L0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggMzM2MzMvTGVuZ3RoMSAxMDI3MDQ+Pg0Kc3RyZWFt + DQp4nOydCXiTVdb4z33fLM3WJl3SJU2aNk26J90otAUaulEoW6HBFgRaaLG4UYGqoAzgglhFVFzG + BUFHxwWUNIAUQUTFXdQZUccdlxnXjqjgKNDkf+570tIiuMz4jd//+XLa8/7uPffcfXsj8SkwANDj + QwZNVeWV9bcVPhsGrO2PAGqMj6t4/SnTOGBzDqBD98Qprvz1X835GoCtwlxNc85pblc9YVwHcNYN + mP7wnPMXWcseafgS4NpKAMWque1nnHPn5+WbANrHAaiizjh78dyPlhs+ArjpRYC5+rbW5pbvT198 + CZanxfKK2tCg25n4KsYxP6S2nbPowsefSy3F+KcA8zadPX9O81VvnncY4Ng76D71nOYL29Pvi7Ng + ehv6W89pXdR86yUbzge24HuMX3Zu8zmt75e/mgusoBAg96r2+QsXBUywEvuzh/u3L2ht/8H9/EKA + xU0Axg+Aj4Wi5IMVj770+KyI4YchPgy47Pzi4hc53xhzweSjb/UOUSeETUJfFQhAgvkU4Ae2V73h + 6FtHVqoTpJIGSPwmbjFlwlrQw4UgYk49uABr1X6P9QqYKsrGCrtADmHyW+QFWKSFKL4CjwgQBkKE + UhBlMlGQfQzOwB5IvQiLVfGyx0+xWsEKYH+R2qC8Q3BYgQV4mrhHHs57CtGy8OOtYS/jbL0JsfAr + RXYxrP61eX5OxE2/fZm/RBT+/0694rNQdlL7d6D9b9R/MpGNBvWvzjMM982p0q4bnCauObXvIL8G + WCm7HRp+ykfQ/3RZmB53yrRjJ8+rqMF6nzl5muwt8PxUfSeK2Hu8HJn9hHGYDxUnzXMRmAbVuQku + +zV1nkxkMnD8Ej/xWxj9q8uuhT/8Ct/aQXEljP219f1vFPGFwXPG5cS+nijsX3DWz5WLPj87tj/l + 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 + KrFHQKlmZxW8qHpfRETYMZZdos8K9Tc0bmVNGZWf8PP4qiK6kZk7D1Hp68k6+cqujnrMi0+QTUvB + 02LWgEvJpMfQvQGNGyJ9Cp8e2OiVa3QkzxGYHxUIMdPMzhyDZ2iKtYRjadyCZoFjccXgVeuxLKL/ + AfpFWhMNCmVuZHN0cmVhbQ0KZW5kb2JqDQoyNTMgMCBvYmoNCjw8L1R5cGUvTWV0YWRhdGEvU3Vi + dHlwZS9YTUwvTGVuZ3RoIDMwODQ+Pg0Kc3RyZWFtDQo8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9 + Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/Pjx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6 + bWV0YS8iIHg6eG1wdGs9IjMuMS03MDEiPgo8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cu + dzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgo8cmRmOkRlc2NyaXB0aW9uIHJkZjph + Ym91dD0iIiAgeG1sbnM6cGRmPSJodHRwOi8vbnMuYWRvYmUuY29tL3BkZi8xLjMvIj4KPHBkZjpQ + cm9kdWNlcj5NaWNyb3NvZnTCriBXb3JkIGZvciBPZmZpY2UgMzY1PC9wZGY6UHJvZHVjZXI+PC9y + ZGY6RGVzY3JpcHRpb24+CjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiICB4bWxuczpkYz0i + aHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iPgo8ZGM6Y3JlYXRvcj48cmRmOlNlcT48 + cmRmOmxpPktyaXN0YSBQcmF0aWNvPC9yZGY6bGk+PC9yZGY6U2VxPjwvZGM6Y3JlYXRvcj48L3Jk + ZjpEZXNjcmlwdGlvbj4KPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgIHhtbG5zOnhtcD0i + aHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyI+Cjx4bXA6Q3JlYXRvclRvb2w+TWljcm9zb2Z0 + wq4gV29yZCBmb3IgT2ZmaWNlIDM2NTwveG1wOkNyZWF0b3JUb29sPjx4bXA6Q3JlYXRlRGF0ZT4y + MDIwLTA0LTIyVDE2OjQ1OjI5LTA3OjAwPC94bXA6Q3JlYXRlRGF0ZT48eG1wOk1vZGlmeURhdGU+ + MjAyMC0wNC0yMlQxNjo0NToyOS0wNzowMDwveG1wOk1vZGlmeURhdGU+PC9yZGY6RGVzY3JpcHRp + b24+CjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiICB4bWxuczp4bXBNTT0iaHR0cDovL25z + LmFkb2JlLmNvbS94YXAvMS4wL21tLyI+Cjx4bXBNTTpEb2N1bWVudElEPnV1aWQ6NThCQjA4MDUt + RjY5Ri00NDBGLTgzOUItMURFMDI1NjUxREUyPC94bXBNTTpEb2N1bWVudElEPjx4bXBNTTpJbnN0 + YW5jZUlEPnV1aWQ6NThCQjA4MDUtRjY5Ri00NDBGLTgzOUItMURFMDI1NjUxREUyPC94bXBNTTpJ + bnN0YW5jZUlEPjwvcmRmOkRlc2NyaXB0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKPC9y + ZGY6UkRGPjwveDp4bXBtZXRhPjw/eHBhY2tldCBlbmQ9InciPz4NCmVuZHN0cmVhbQ0KZW5kb2Jq + DQoyNTQgMCBvYmoNCjw8L0Rpc3BsYXlEb2NUaXRsZSB0cnVlPj4NCmVuZG9iag0KMjU1IDAgb2Jq + DQo8PC9UeXBlL1hSZWYvU2l6ZSAyNTUvV1sgMSA0IDJdIC9Sb290IDEgMCBSL0luZm8gMTUgMCBS + L0lEWzwwNTA4QkI1ODlGRjYwRjQ0ODM5QjFERTAyNTY1MURFMj48MDUwOEJCNTg5RkY2MEY0NDgz + OUIxREUwMjU2NTFERTI+XSAvRmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0aCA1MDc+Pg0Kc3RyZWFt + DQp4nDXV93fPZxQH8E9sSojZGkG0tQmKGrVHFKU2tUeomrXTauy9YlMdKFV7U3vvHUWJvX7rv5B+ + 83nx3HOe17nn3Ht/fQdB5KWnR0X+mCDIYAv+C4lKD8mTFBJdJiRvASRgcki+SiExcSH5dQU7hhRK + DCk9JggyRU4XCZ7jBV7iFZ7h3eTryF5c8vsuO6KQCZmRBVmRDTmQE7nwAXIjD6LRCoVRCPmQF/kR + g4IogASUwIcogqL4CMVRDB+jJGJRGqVQBnGoiE/xCcqhLCqgPKqjMiqhKqqgGuJRB5+hBmqhJj5H + bTRCPdTFF6iPhmiAlmiCxmiGpmiB5vgSrdEGbfEV2qE9vkYHdEQndEYXdEU3dEcPfIOe6IXe6IO+ + 6If+eIMBGIhBSMRgDMG3GIrvMAzDMQIjMQqj8T3GYCzGYTwmYCImIQk/4EdMxk9IxhRMxTRMxwzM + xCzMxhzMxTzMx1ssxQIsxCIsxhKkYBmWYwVWYhVWYw3uYj1+x89Yi1+wDr/hV6RiCzZiAzbhD/yJ + zdiFrfgL27ENO7EDB7EHu7EPe3EA+3Ech3EIR/A3juEozuEkTuA0TuEszuAqLuA8LuEiruAy7uA6 + ruEmbuA2buEf3MN9PMC/eIhHSMNjPMHTSFpUSQ3DJj4jvSJVPCQqNmRGWkhK/SD4H/tbjC8NCmVu + ZHN0cmVhbQ0KZW5kb2JqDQp4cmVmDQowIDI1Ng0KMDAwMDAwMDAxNiA2NTUzNSBmDQowMDAwMDAw + MDE3IDAwMDAwIG4NCjAwMDAwMDAxNjggMDAwMDAgbg0KMDAwMDAwMDIzOCAwMDAwMCBuDQowMDAw + MDAwNTExIDAwMDAwIG4NCjAwMDAwMDM0NTAgMDAwMDAgbg0KMDAwMDAwMzYxOSAwMDAwMCBuDQow + MDAwMDAzODU5IDAwMDAwIG4NCjAwMDAwMDM5MTIgMDAwMDAgbg0KMDAwMDAwMzk2NSAwMDAwMCBu + DQowMDAwMDA0MTQwIDAwMDAwIG4NCjAwMDAwMDQzODYgMDAwMDAgbg0KMDAwMDAwNDY1MiAwMDAw + MCBuDQowMDAwMDA1MjAzIDAwMDAwIG4NCjAwMDAwMDU0NzggMDAwMDAgbg0KMDAwMDAwODU2MyAw + MDAwMCBuDQowMDAwMDAwMDE3IDY1NTM1IGYNCjAwMDAwMDAwMTggNjU1MzUgZg0KMDAwMDAwMDAx + OSA2NTUzNSBmDQowMDAwMDAwMDIwIDY1NTM1IGYNCjAwMDAwMDAwMjEgNjU1MzUgZg0KMDAwMDAw + MDAyMiA2NTUzNSBmDQowMDAwMDAwMDIzIDY1NTM1IGYNCjAwMDAwMDAwMjQgNjU1MzUgZg0KMDAw + MDAwMDAyNSA2NTUzNSBmDQowMDAwMDAwMDI2IDY1NTM1IGYNCjAwMDAwMDAwMjcgNjU1MzUgZg0K + MDAwMDAwMDAyOCA2NTUzNSBmDQowMDAwMDAwMDI5IDY1NTM1IGYNCjAwMDAwMDAwMzAgNjU1MzUg + Zg0KMDAwMDAwMDAzMSA2NTUzNSBmDQowMDAwMDAwMDMyIDY1NTM1IGYNCjAwMDAwMDAwMzMgNjU1 + MzUgZg0KMDAwMDAwMDAzNCA2NTUzNSBmDQowMDAwMDAwMDM1IDY1NTM1IGYNCjAwMDAwMDAwMzYg + NjU1MzUgZg0KMDAwMDAwMDAzNyA2NTUzNSBmDQowMDAwMDAwMDM4IDY1NTM1IGYNCjAwMDAwMDAw + MzkgNjU1MzUgZg0KMDAwMDAwMDA0MCA2NTUzNSBmDQowMDAwMDAwMDQxIDY1NTM1IGYNCjAwMDAw + MDAwNDIgNjU1MzUgZg0KMDAwMDAwMDA0MyA2NTUzNSBmDQowMDAwMDAwMDQ0IDY1NTM1IGYNCjAw + MDAwMDAwNDUgNjU1MzUgZg0KMDAwMDAwMDA0NiA2NTUzNSBmDQowMDAwMDAwMDQ3IDY1NTM1IGYN + CjAwMDAwMDAwNDggNjU1MzUgZg0KMDAwMDAwMDA0OSA2NTUzNSBmDQowMDAwMDAwMDUwIDY1NTM1 + IGYNCjAwMDAwMDAwNTEgNjU1MzUgZg0KMDAwMDAwMDA1MiA2NTUzNSBmDQowMDAwMDAwMDUzIDY1 + NTM1IGYNCjAwMDAwMDAwNTQgNjU1MzUgZg0KMDAwMDAwMDA1NSA2NTUzNSBmDQowMDAwMDAwMDU2 + IDY1NTM1IGYNCjAwMDAwMDAwNTcgNjU1MzUgZg0KMDAwMDAwMDA1OCA2NTUzNSBmDQowMDAwMDAw + MDU5IDY1NTM1IGYNCjAwMDAwMDAwNjAgNjU1MzUgZg0KMDAwMDAwMDA2MSA2NTUzNSBmDQowMDAw + MDAwMDYyIDY1NTM1IGYNCjAwMDAwMDAwNjMgNjU1MzUgZg0KMDAwMDAwMDA2NCA2NTUzNSBmDQow + MDAwMDAwMDY1IDY1NTM1IGYNCjAwMDAwMDAwNjYgNjU1MzUgZg0KMDAwMDAwMDA2NyA2NTUzNSBm + DQowMDAwMDAwMDY4IDY1NTM1IGYNCjAwMDAwMDAwNjkgNjU1MzUgZg0KMDAwMDAwMDA3MCA2NTUz + NSBmDQowMDAwMDAwMDcxIDY1NTM1IGYNCjAwMDAwMDAwNzIgNjU1MzUgZg0KMDAwMDAwMDA3MyA2 + NTUzNSBmDQowMDAwMDAwMDc0IDY1NTM1IGYNCjAwMDAwMDAwNzUgNjU1MzUgZg0KMDAwMDAwMDA3 + NiA2NTUzNSBmDQowMDAwMDAwMDc3IDY1NTM1IGYNCjAwMDAwMDAwNzggNjU1MzUgZg0KMDAwMDAw + MDA3OSA2NTUzNSBmDQowMDAwMDAwMDgwIDY1NTM1IGYNCjAwMDAwMDAwODEgNjU1MzUgZg0KMDAw + MDAwMDA4MiA2NTUzNSBmDQowMDAwMDAwMDgzIDY1NTM1IGYNCjAwMDAwMDAwODQgNjU1MzUgZg0K + MDAwMDAwMDA4NSA2NTUzNSBmDQowMDAwMDAwMDg2IDY1NTM1IGYNCjAwMDAwMDAwODcgNjU1MzUg + Zg0KMDAwMDAwMDA4OCA2NTUzNSBmDQowMDAwMDAwMDg5IDY1NTM1IGYNCjAwMDAwMDAwOTAgNjU1 + MzUgZg0KMDAwMDAwMDA5MSA2NTUzNSBmDQowMDAwMDAwMDkyIDY1NTM1IGYNCjAwMDAwMDAwOTMg + NjU1MzUgZg0KMDAwMDAwMDA5NCA2NTUzNSBmDQowMDAwMDAwMDk1IDY1NTM1IGYNCjAwMDAwMDAw + OTYgNjU1MzUgZg0KMDAwMDAwMDA5NyA2NTUzNSBmDQowMDAwMDAwMDk4IDY1NTM1IGYNCjAwMDAw + MDAwOTkgNjU1MzUgZg0KMDAwMDAwMDEwMCA2NTUzNSBmDQowMDAwMDAwMTAxIDY1NTM1IGYNCjAw + MDAwMDAxMDIgNjU1MzUgZg0KMDAwMDAwMDEwMyA2NTUzNSBmDQowMDAwMDAwMTA0IDY1NTM1IGYN + CjAwMDAwMDAxMDUgNjU1MzUgZg0KMDAwMDAwMDEwNiA2NTUzNSBmDQowMDAwMDAwMTA3IDY1NTM1 + IGYNCjAwMDAwMDAxMDggNjU1MzUgZg0KMDAwMDAwMDEwOSA2NTUzNSBmDQowMDAwMDAwMTEwIDY1 + NTM1IGYNCjAwMDAwMDAxMTEgNjU1MzUgZg0KMDAwMDAwMDExMiA2NTUzNSBmDQowMDAwMDAwMTEz + IDY1NTM1IGYNCjAwMDAwMDAxMTQgNjU1MzUgZg0KMDAwMDAwMDExNSA2NTUzNSBmDQowMDAwMDAw + MTE2IDY1NTM1IGYNCjAwMDAwMDAxMTcgNjU1MzUgZg0KMDAwMDAwMDExOCA2NTUzNSBmDQowMDAw + MDAwMTE5IDY1NTM1IGYNCjAwMDAwMDAxMjAgNjU1MzUgZg0KMDAwMDAwMDEyMSA2NTUzNSBmDQow + MDAwMDAwMTIyIDY1NTM1IGYNCjAwMDAwMDAxMjMgNjU1MzUgZg0KMDAwMDAwMDEyNCA2NTUzNSBm + DQowMDAwMDAwMTI1IDY1NTM1IGYNCjAwMDAwMDAxMjYgNjU1MzUgZg0KMDAwMDAwMDEyNyA2NTUz + NSBmDQowMDAwMDAwMTI4IDY1NTM1IGYNCjAwMDAwMDAxMjkgNjU1MzUgZg0KMDAwMDAwMDEzMCA2 + NTUzNSBmDQowMDAwMDAwMTMxIDY1NTM1IGYNCjAwMDAwMDAxMzIgNjU1MzUgZg0KMDAwMDAwMDEz + MyA2NTUzNSBmDQowMDAwMDAwMTM0IDY1NTM1IGYNCjAwMDAwMDAxMzUgNjU1MzUgZg0KMDAwMDAw + MDEzNiA2NTUzNSBmDQowMDAwMDAwMTM3IDY1NTM1IGYNCjAwMDAwMDAxMzggNjU1MzUgZg0KMDAw + MDAwMDEzOSA2NTUzNSBmDQowMDAwMDAwMTQwIDY1NTM1IGYNCjAwMDAwMDAxNDEgNjU1MzUgZg0K + MDAwMDAwMDE0MiA2NTUzNSBmDQowMDAwMDAwMTQzIDY1NTM1IGYNCjAwMDAwMDAxNDQgNjU1MzUg + Zg0KMDAwMDAwMDE0NSA2NTUzNSBmDQowMDAwMDAwMTQ2IDY1NTM1IGYNCjAwMDAwMDAxNDcgNjU1 + MzUgZg0KMDAwMDAwMDE0OCA2NTUzNSBmDQowMDAwMDAwMTQ5IDY1NTM1IGYNCjAwMDAwMDAxNTAg + NjU1MzUgZg0KMDAwMDAwMDE1MSA2NTUzNSBmDQowMDAwMDAwMTUyIDY1NTM1IGYNCjAwMDAwMDAx + NTMgNjU1MzUgZg0KMDAwMDAwMDE1NCA2NTUzNSBmDQowMDAwMDAwMTU1IDY1NTM1IGYNCjAwMDAw + MDAxNTYgNjU1MzUgZg0KMDAwMDAwMDE1NyA2NTUzNSBmDQowMDAwMDAwMTU4IDY1NTM1IGYNCjAw + MDAwMDAxNTkgNjU1MzUgZg0KMDAwMDAwMDE2MCA2NTUzNSBmDQowMDAwMDAwMTYxIDY1NTM1IGYN + CjAwMDAwMDAxNjIgNjU1MzUgZg0KMDAwMDAwMDE2MyA2NTUzNSBmDQowMDAwMDAwMTY0IDY1NTM1 + IGYNCjAwMDAwMDAxNjUgNjU1MzUgZg0KMDAwMDAwMDE2NiA2NTUzNSBmDQowMDAwMDAwMTY3IDY1 + NTM1IGYNCjAwMDAwMDAxNjggNjU1MzUgZg0KMDAwMDAwMDE2OSA2NTUzNSBmDQowMDAwMDAwMTcw + IDY1NTM1IGYNCjAwMDAwMDAxNzEgNjU1MzUgZg0KMDAwMDAwMDE3MiA2NTUzNSBmDQowMDAwMDAw + MTczIDY1NTM1IGYNCjAwMDAwMDAxNzQgNjU1MzUgZg0KMDAwMDAwMDE3NSA2NTUzNSBmDQowMDAw + MDAwMTc2IDY1NTM1IGYNCjAwMDAwMDAxNzcgNjU1MzUgZg0KMDAwMDAwMDE3OCA2NTUzNSBmDQow + MDAwMDAwMTc5IDY1NTM1IGYNCjAwMDAwMDAxODAgNjU1MzUgZg0KMDAwMDAwMDE4MSA2NTUzNSBm + DQowMDAwMDAwMTgyIDY1NTM1IGYNCjAwMDAwMDAxODMgNjU1MzUgZg0KMDAwMDAwMDE4NCA2NTUz + NSBmDQowMDAwMDAwMTg1IDY1NTM1IGYNCjAwMDAwMDAxODYgNjU1MzUgZg0KMDAwMDAwMDE4NyA2 + NTUzNSBmDQowMDAwMDAwMTg4IDY1NTM1IGYNCjAwMDAwMDAxODkgNjU1MzUgZg0KMDAwMDAwMDE5 + MCA2NTUzNSBmDQowMDAwMDAwMTkxIDY1NTM1IGYNCjAwMDAwMDAxOTIgNjU1MzUgZg0KMDAwMDAw + MDE5MyA2NTUzNSBmDQowMDAwMDAwMTk0IDY1NTM1IGYNCjAwMDAwMDAxOTUgNjU1MzUgZg0KMDAw + MDAwMDE5NiA2NTUzNSBmDQowMDAwMDAwMTk3IDY1NTM1IGYNCjAwMDAwMDAxOTggNjU1MzUgZg0K + MDAwMDAwMDE5OSA2NTUzNSBmDQowMDAwMDAwMjAwIDY1NTM1IGYNCjAwMDAwMDAyMDEgNjU1MzUg + Zg0KMDAwMDAwMDIwMiA2NTUzNSBmDQowMDAwMDAwMjAzIDY1NTM1IGYNCjAwMDAwMDAyMDQgNjU1 + MzUgZg0KMDAwMDAwMDIwNSA2NTUzNSBmDQowMDAwMDAwMjA2IDY1NTM1IGYNCjAwMDAwMDAyMDcg + NjU1MzUgZg0KMDAwMDAwMDIwOCA2NTUzNSBmDQowMDAwMDAwMjA5IDY1NTM1IGYNCjAwMDAwMDAy + MTAgNjU1MzUgZg0KMDAwMDAwMDIxMSA2NTUzNSBmDQowMDAwMDAwMjEyIDY1NTM1IGYNCjAwMDAw + MDAyMTMgNjU1MzUgZg0KMDAwMDAwMDIxNCA2NTUzNSBmDQowMDAwMDAwMjE1IDY1NTM1IGYNCjAw + MDAwMDAyMTYgNjU1MzUgZg0KMDAwMDAwMDIxNyA2NTUzNSBmDQowMDAwMDAwMjE4IDY1NTM1IGYN + CjAwMDAwMDAyMTkgNjU1MzUgZg0KMDAwMDAwMDIyMCA2NTUzNSBmDQowMDAwMDAwMjIxIDY1NTM1 + IGYNCjAwMDAwMDAyMjIgNjU1MzUgZg0KMDAwMDAwMDIyMyA2NTUzNSBmDQowMDAwMDAwMjI0IDY1 + NTM1IGYNCjAwMDAwMDAyMjUgNjU1MzUgZg0KMDAwMDAwMDIyNiA2NTUzNSBmDQowMDAwMDAwMjI3 + IDY1NTM1IGYNCjAwMDAwMDAyMjggNjU1MzUgZg0KMDAwMDAwMDIyOSA2NTUzNSBmDQowMDAwMDAw + MjMwIDY1NTM1IGYNCjAwMDAwMDAyMzEgNjU1MzUgZg0KMDAwMDAwMDIzMiA2NTUzNSBmDQowMDAw + MDAwMjMzIDY1NTM1IGYNCjAwMDAwMDAyMzQgNjU1MzUgZg0KMDAwMDAwMDIzNSA2NTUzNSBmDQow + MDAwMDAwMjM2IDY1NTM1IGYNCjAwMDAwMDAyMzcgNjU1MzUgZg0KMDAwMDAwMDIzOCA2NTUzNSBm + DQowMDAwMDAwMjM5IDY1NTM1IGYNCjAwMDAwMDAyNDAgNjU1MzUgZg0KMDAwMDAwMDI0MSA2NTUz + NSBmDQowMDAwMDAwMjQyIDY1NTM1IGYNCjAwMDAwMDAyNDMgNjU1MzUgZg0KMDAwMDAwMDI0NCA2 + NTUzNSBmDQowMDAwMDAwMjQ1IDY1NTM1IGYNCjAwMDAwMDAyNDYgNjU1MzUgZg0KMDAwMDAwMDI0 + NyA2NTUzNSBmDQowMDAwMDAwMjQ4IDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAx + MTk4NyAwMDAwMCBuDQowMDAwMDEyMjg5IDAwMDAwIG4NCjAwMDAwNjU1NjQgMDAwMDAgbg0KMDAw + MDA2NTgyMiAwMDAwMCBuDQowMDAwMDk5NTQ4IDAwMDAwIG4NCjAwMDAxMDI3MTYgMDAwMDAgbg0K + MDAwMDEwMjc2MiAwMDAwMCBuDQp0cmFpbGVyDQo8PC9TaXplIDI1Ni9Sb290IDEgMCBSL0luZm8g + MTUgMCBSL0lEWzwwNTA4QkI1ODlGRjYwRjQ0ODM5QjFERTAyNTY1MURFMj48MDUwOEJCNTg5RkY2 + MEY0NDgzOUIxREUwMjU2NTFERTI+XSA+Pg0Kc3RhcnR4cmVmDQoxMDM0NzINCiUlRU9GDQp4cmVm + DQowIDANCnRyYWlsZXINCjw8L1NpemUgMjU2L1Jvb3QgMSAwIFIvSW5mbyAxNSAwIFIvSURbPDA1 + MDhCQjU4OUZGNjBGNDQ4MzlCMURFMDI1NjUxREUyPjwwNTA4QkI1ODlGRjYwRjQ0ODM5QjFERTAy + NTY1MURFMj5dIC9QcmV2IDEwMzQ3Mi9YUmVmU3RtIDEwMjc2Mj4+DQpzdGFydHhyZWYNCjEwODc1 + Mg0KJSVFT0Y= + headers: + Content-Type: + - application/pdf + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/prebuilt/receipt/analyze?includeTextDetails=true + response: + body: + string: '' + headers: + apim-request-id: 30775cd2-b4b5-49e0-acf4-5615c1bcf567 + content-length: '0' + date: Mon, 27 Apr 2020 21:53:27 GMT + operation-location: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/prebuilt/receipt/analyzeResults/30775cd2-b4b5-49e0-acf4-5615c1bcf567 + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '629' + status: + code: 202 + message: Accepted + url: https://westus.api.cognitive.microsoft.com//formrecognizer/v2.0-preview/prebuilt/receipt/analyze?includeTextDetails=true +- request: + body: null + headers: + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/prebuilt/receipt/analyzeResults/30775cd2-b4b5-49e0-acf4-5615c1bcf567 + response: + body: + string: '{"status":"running","createdDateTime":"2020-04-27T21:53:27Z","lastUpdatedDateTime":"2020-04-27T21:53:28Z"}' + headers: + apim-request-id: d59900e7-5dd6-46a0-a1b0-26000f040372 + content-type: application/json; charset=utf-8 + date: Mon, 27 Apr 2020 21:53:32 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + transfer-encoding: chunked + x-content-type-options: nosniff + x-envoy-upstream-service-time: '10' + status: + code: 200 + message: OK + url: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/prebuilt/receipt/analyzeResults/30775cd2-b4b5-49e0-acf4-5615c1bcf567 +- request: + body: null + headers: + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/prebuilt/receipt/analyzeResults/30775cd2-b4b5-49e0-acf4-5615c1bcf567 + response: + body: + string: '{"status":"succeeded","createdDateTime":"2020-04-27T21:53:27Z","lastUpdatedDateTime":"2020-04-27T21:53:37Z","analyzeResult":{"version":"2.0.0","readResults":[{"page":1,"angle":0,"width":8.5,"height":11,"unit":"inch","language":"en","lines":[{"text":"Company + A Invoice","boundingBox":[0.8861,1.1217,2.3783,1.1217,2.3783,1.2812,0.8861,1.2812],"words":[{"text":"Company","boundingBox":[0.8861,1.1232,1.6203,1.1232,1.6203,1.2812,0.8861,1.2812],"confidence":1},{"text":"A","boundingBox":[1.6696,1.1242,1.7749,1.1242,1.7749,1.2473,1.6696,1.2473],"confidence":1},{"text":"Invoice","boundingBox":[1.8389,1.1217,2.3783,1.1217,2.3783,1.2485,1.8389,1.2485],"confidence":1}]},{"text":"Invoice + For:","boundingBox":[6.0211,1.0656,7.0357,1.0656,7.0357,1.2121,6.0211,1.2121],"words":[{"text":"Invoice","boundingBox":[6.0211,1.0656,6.6362,1.0656,6.6362,1.2121,6.0211,1.2121],"confidence":1},{"text":"For:","boundingBox":[6.7147,1.0691,7.0357,1.0691,7.0357,1.2121,6.7147,1.2121],"confidence":1}]},{"text":"Address:","boundingBox":[0.8791,1.4825,1.5657,1.4825,1.5657,1.6155,0.8791,1.6155],"words":[{"text":"Address:","boundingBox":[0.8791,1.4825,1.5657,1.4825,1.5657,1.6155,0.8791,1.6155],"confidence":1}]},{"text":"Bilbo + Baggins","boundingBox":[6.0164,1.4503,6.8967,1.4503,6.8967,1.5931,6.0164,1.5931],"words":[{"text":"Bilbo","boundingBox":[6.0164,1.4503,6.3392,1.4503,6.3392,1.5649,6.0164,1.5649],"confidence":1},{"text":"Baggins","boundingBox":[6.396,1.4556,6.8967,1.4556,6.8967,1.5931,6.396,1.5931],"confidence":1}]},{"text":"123 + Hobbit Lane","boundingBox":[6.0165,1.6707,7.1006,1.6707,7.1006,1.7854,6.0165,1.7854],"words":[{"text":"123","boundingBox":[6.0165,1.6772,6.2434,1.6772,6.2434,1.7854,6.0165,1.7854],"confidence":1},{"text":"Hobbit","boundingBox":[6.3033,1.6707,6.7463,1.6707,6.7463,1.7854,6.3033,1.7854],"confidence":1},{"text":"Lane","boundingBox":[6.803,1.6782,7.1006,1.6782,7.1006,1.7854,6.803,1.7854],"confidence":1}]},{"text":"567 + Main St.","boundingBox":[0.8852,1.846,1.713,1.846,1.713,1.9554,0.8852,1.9554],"words":[{"text":"567","boundingBox":[0.8852,1.8472,1.1203,1.8472,1.1203,1.9554,0.8852,1.9554],"confidence":1},{"text":"Main","boundingBox":[1.1777,1.846,1.5022,1.846,1.5022,1.9554,1.1777,1.9554],"confidence":1},{"text":"St.","boundingBox":[1.5558,1.8472,1.713,1.8472,1.713,1.9554,1.5558,1.9554],"confidence":1}]},{"text":"Redmond, + WA","boundingBox":[6.0164,1.891,6.9793,1.891,6.9793,2.0275,6.0164,2.0275],"words":[{"text":"Redmond,","boundingBox":[6.0164,1.891,6.6861,1.891,6.6861,2.0275,6.0164,2.0275],"confidence":1},{"text":"WA","boundingBox":[6.7408,1.8982,6.9793,1.8982,6.9793,2.0044,6.7408,2.0044],"confidence":1}]},{"text":"Redmond, + WA","boundingBox":[0.891,2.061,1.8537,2.061,1.8537,2.1975,0.891,2.1975],"words":[{"text":"Redmond,","boundingBox":[0.891,2.061,1.5605,2.061,1.5605,2.1975,0.891,2.1975],"confidence":1},{"text":"WA","boundingBox":[1.6152,2.0682,1.8537,2.0682,1.8537,2.1744,1.6152,2.1744],"confidence":1}]},{"text":"555-555-5555","boundingBox":[6.0105,2.1187,6.9371,2.1187,6.9371,2.2254,6.0105,2.2254],"words":[{"text":"555-555-5555","boundingBox":[6.0105,2.1187,6.9371,2.1187,6.9371,2.2254,6.0105,2.2254],"confidence":1}]},{"text":"555-555-5555","boundingBox":[0.8852,2.2887,1.8119,2.2887,1.8119,2.3954,0.8852,2.3954],"words":[{"text":"555-555-5555","boundingBox":[0.8852,2.2887,1.8119,2.2887,1.8119,2.3954,0.8852,2.3954],"confidence":1}]},{"text":"Item","boundingBox":[1.0943,3.0018,1.3842,3.0018,1.3842,3.109,1.0943,3.109],"words":[{"text":"Item","boundingBox":[1.0943,3.0018,1.3842,3.0018,1.3842,3.109,1.0943,3.109],"confidence":1}]},{"text":"Quantity","boundingBox":[3.2527,2.9996,3.8367,2.9996,3.8367,3.1371,3.2527,3.1371],"words":[{"text":"Quantity","boundingBox":[3.2527,2.9996,3.8367,2.9996,3.8367,3.1371,3.2527,3.1371],"confidence":1}]},{"text":"Price","boundingBox":[5.423,2.9996,5.7372,2.9996,5.7372,3.109,5.423,3.109],"words":[{"text":"Price","boundingBox":[5.423,2.9996,5.7372,2.9996,5.7372,3.109,5.423,3.109],"confidence":1}]},{"text":"A","boundingBox":[1.0832,3.2118,1.174,3.2118,1.174,3.318,1.0832,3.318],"words":[{"text":"A","boundingBox":[1.0832,3.2118,1.174,3.2118,1.174,3.318,1.0832,3.318],"confidence":1}]},{"text":"1","boundingBox":[3.2589,3.2116,3.3202,3.2116,3.3202,3.3176,3.2589,3.3176],"words":[{"text":"1","boundingBox":[3.2589,3.2116,3.3202,3.2116,3.3202,3.3176,3.2589,3.3176],"confidence":1}]},{"text":"10.99","boundingBox":[5.4232,3.2108,5.7784,3.2108,5.7784,3.319,5.4232,3.319],"words":[{"text":"10.99","boundingBox":[5.4232,3.2108,5.7784,3.2108,5.7784,3.319,5.4232,3.319],"confidence":1}]},{"text":"B","boundingBox":[1.0943,3.4256,1.1637,3.4256,1.1637,3.531,1.0943,3.531],"words":[{"text":"B","boundingBox":[1.0943,3.4256,1.1637,3.4256,1.1637,3.531,1.0943,3.531],"confidence":1}]},{"text":"2","boundingBox":[3.2541,3.4241,3.3199,3.4241,3.3199,3.531,3.2541,3.531],"words":[{"text":"2","boundingBox":[3.2541,3.4241,3.3199,3.4241,3.3199,3.531,3.2541,3.531],"confidence":1}]},{"text":"14.67","boundingBox":[5.4232,3.4241,5.7789,3.4241,5.7789,3.5323,5.4232,3.5323],"words":[{"text":"14.67","boundingBox":[5.4232,3.4241,5.7789,3.4241,5.7789,3.5323,5.4232,3.5323],"confidence":1}]},{"text":"C","boundingBox":[1.0882,3.6343,1.1647,3.6343,1.1647,3.7421,1.0882,3.7421],"words":[{"text":"C","boundingBox":[1.0882,3.6343,1.1647,3.6343,1.1647,3.7421,1.0882,3.7421],"confidence":1}]},{"text":"4","boundingBox":[3.2486,3.6351,3.3244,3.6351,3.3244,3.7413,3.2486,3.7413],"words":[{"text":"4","boundingBox":[3.2486,3.6351,3.3244,3.6351,3.3244,3.7413,3.2486,3.7413],"confidence":1}]},{"text":"15.66","boundingBox":[5.4232,3.6341,5.78,3.6341,5.78,3.7423,5.4232,3.7423],"words":[{"text":"15.66","boundingBox":[5.4232,3.6341,5.78,3.6341,5.78,3.7423,5.4232,3.7423],"confidence":1}]},{"text":"D","boundingBox":[1.0943,3.8456,1.1753,3.8456,1.1753,3.951,1.0943,3.951],"words":[{"text":"D","boundingBox":[1.0943,3.8456,1.1753,3.8456,1.1753,3.951,1.0943,3.951],"confidence":1}]},{"text":"1","boundingBox":[3.2589,3.845,3.3202,3.845,3.3202,3.951,3.2589,3.951],"words":[{"text":"1","boundingBox":[3.2589,3.845,3.3202,3.845,3.3202,3.951,3.2589,3.951],"confidence":1}]},{"text":"12.00","boundingBox":[5.4232,3.8441,5.7809,3.8441,5.7809,3.9523,5.4232,3.9523],"words":[{"text":"12.00","boundingBox":[5.4232,3.8441,5.7809,3.8441,5.7809,3.9523,5.4232,3.9523],"confidence":1}]},{"text":"E","boundingBox":[1.0943,4.0561,1.153,4.0561,1.153,4.1614,1.0943,4.1614],"words":[{"text":"E","boundingBox":[1.0943,4.0561,1.153,4.0561,1.153,4.1614,1.0943,4.1614],"confidence":1}]},{"text":"4","boundingBox":[3.2486,4.0556,3.3244,4.0556,3.3244,4.1617,3.2486,4.1617],"words":[{"text":"4","boundingBox":[3.2486,4.0556,3.3244,4.0556,3.3244,4.1617,3.2486,4.1617],"confidence":1}]},{"text":"10.00","boundingBox":[5.4232,4.0546,5.781,4.0546,5.781,4.1627,5.4232,4.1627],"words":[{"text":"10.00","boundingBox":[5.4232,4.0546,5.781,4.0546,5.781,4.1627,5.4232,4.1627],"confidence":1}]},{"text":"F","boundingBox":[1.0943,4.2661,1.1497,4.2661,1.1497,4.3717,1.0943,4.3717],"words":[{"text":"F","boundingBox":[1.0943,4.2661,1.1497,4.2661,1.1497,4.3717,1.0943,4.3717],"confidence":1}]},{"text":"6","boundingBox":[3.2534,4.2646,3.3226,4.2646,3.3226,4.3727,3.2534,4.3727],"words":[{"text":"6","boundingBox":[3.2534,4.2646,3.3226,4.2646,3.3226,4.3727,3.2534,4.3727],"confidence":1}]},{"text":"12.00","boundingBox":[5.4232,4.2646,5.7809,4.2646,5.7809,4.3727,5.4232,4.3727],"words":[{"text":"12.00","boundingBox":[5.4232,4.2646,5.7809,4.2646,5.7809,4.3727,5.4232,4.3727],"confidence":1}]},{"text":"G","boundingBox":[1.0877,4.4746,1.1735,4.4746,1.1735,4.5827,1.0877,4.5827],"words":[{"text":"G","boundingBox":[1.0877,4.4746,1.1735,4.4746,1.1735,4.5827,1.0877,4.5827],"confidence":1}]},{"text":"8","boundingBox":[3.2514,4.4746,3.3224,4.4746,3.3224,4.5827,3.2514,4.5827],"words":[{"text":"8","boundingBox":[3.2514,4.4746,3.3224,4.4746,3.3224,4.5827,3.2514,4.5827],"confidence":1}]},{"text":"22.00","boundingBox":[5.4184,4.4746,5.781,4.4746,5.781,4.5827,5.4184,4.5827],"words":[{"text":"22.00","boundingBox":[5.4184,4.4746,5.781,4.4746,5.781,4.5827,5.4184,4.5827],"confidence":1}]},{"text":"Subtotal: + 300.00","boundingBox":[5.5075,4.8981,6.632,4.8981,6.632,5.0131,5.5075,5.0131],"words":[{"text":"Subtotal:","boundingBox":[5.5075,4.8981,6.1249,4.8981,6.1249,5.0131,5.5075,5.0131],"confidence":1},{"text":"300.00","boundingBox":[6.1794,4.9042,6.632,4.9042,6.632,5.0131,6.1794,5.0131],"confidence":1}]},{"text":"Tax: + 30.00","boundingBox":[5.5034,5.1245,6.2022,5.1245,6.2022,5.2333,5.5034,5.2333],"words":[{"text":"Tax:","boundingBox":[5.5034,5.1263,5.7812,5.1263,5.7812,5.2333,5.5034,5.2333],"confidence":1},{"text":"30.00","boundingBox":[5.836,5.1245,6.2022,5.1245,6.2022,5.2333,5.836,5.2333],"confidence":1}]},{"text":"Tip: + 100.00","boundingBox":[5.5034,5.3412,6.2587,5.3412,6.2587,5.481,5.5034,5.481],"words":[{"text":"Tip:","boundingBox":[5.5034,5.3412,5.7515,5.3412,5.7515,5.481,5.5034,5.481],"confidence":1},{"text":"100.00","boundingBox":[5.811,5.3445,6.2587,5.3445,6.2587,5.4533,5.811,5.4533],"confidence":1}]},{"text":"Total: + 430.00","boundingBox":[5.5034,5.5583,6.3987,5.5583,6.3987,5.6733,5.5034,5.6733],"words":[{"text":"Total:","boundingBox":[5.5034,5.5583,5.8915,5.5583,5.8915,5.6733,5.5034,5.6733],"confidence":1},{"text":"430.00","boundingBox":[5.942,5.5645,6.3987,5.5645,6.3987,5.6733,5.942,5.6733],"confidence":1}]},{"text":"Signature: + ____ Bilbo Baggins__________","boundingBox":[1.0055,6.6553,3.8342,6.6553,3.8342,6.7981,1.0055,6.7981],"words":[{"text":"Signature:","boundingBox":[1.0055,6.6581,1.6987,6.6581,1.6987,6.7981,1.0055,6.7981],"confidence":1},{"text":"____","boundingBox":[1.747,6.7829,2.0809,6.7829,2.0809,6.7981,1.747,6.7981],"confidence":1},{"text":"Bilbo","boundingBox":[2.0925,6.6553,2.4278,6.6553,2.4278,6.7703,2.0925,6.7703],"confidence":1},{"text":"Baggins__________","boundingBox":[2.4823,6.6581,3.8342,6.6581,3.8342,6.7981,2.4823,6.7981],"confidence":1}]}]},{"page":2,"angle":0,"width":8.4967,"height":10.9967,"unit":"inch","language":"en"},{"page":3,"angle":0,"width":8.5,"height":11,"unit":"inch","language":"en","lines":[{"text":"Company + B Invoice","boundingBox":[0.8861,1.1217,2.3734,1.1217,2.3734,1.2812,0.8861,1.2812],"words":[{"text":"Company","boundingBox":[0.8861,1.1232,1.6203,1.1232,1.6203,1.2812,0.8861,1.2812],"confidence":1},{"text":"B","boundingBox":[1.6836,1.1248,1.764,1.1248,1.764,1.2469,1.6836,1.2469],"confidence":1},{"text":"Invoice","boundingBox":[1.8336,1.1217,2.3734,1.1217,2.3734,1.2485,1.8336,1.2485],"confidence":1}]},{"text":"Invoice + For:","boundingBox":[6.0211,1.0656,7.0357,1.0656,7.0357,1.2121,6.0211,1.2121],"words":[{"text":"Invoice","boundingBox":[6.0211,1.0656,6.6362,1.0656,6.6362,1.2121,6.0211,1.2121],"confidence":1},{"text":"For:","boundingBox":[6.7147,1.0691,7.0357,1.0691,7.0357,1.2121,6.7147,1.2121],"confidence":1}]},{"text":"Address:","boundingBox":[0.8791,1.4825,1.5657,1.4825,1.5657,1.6155,0.8791,1.6155],"words":[{"text":"Address:","boundingBox":[0.8791,1.4825,1.5657,1.4825,1.5657,1.6155,0.8791,1.6155],"confidence":1}]},{"text":"Frodo + Baggins","boundingBox":[6.0164,1.4506,6.9506,1.4506,6.9506,1.5931,6.0164,1.5931],"words":[{"text":"Frodo","boundingBox":[6.0164,1.4506,6.3895,1.4506,6.3895,1.5649,6.0164,1.5649],"confidence":1},{"text":"Baggins","boundingBox":[6.45,1.4556,6.9506,1.4556,6.9506,1.5931,6.45,1.5931],"confidence":1}]},{"text":"123 + Hobbit Lane","boundingBox":[6.0165,1.6707,7.1006,1.6707,7.1006,1.7854,6.0165,1.7854],"words":[{"text":"123","boundingBox":[6.0165,1.6772,6.2434,1.6772,6.2434,1.7854,6.0165,1.7854],"confidence":1},{"text":"Hobbit","boundingBox":[6.3033,1.6707,6.7463,1.6707,6.7463,1.7854,6.3033,1.7854],"confidence":1},{"text":"Lane","boundingBox":[6.803,1.6782,7.1006,1.6782,7.1006,1.7854,6.803,1.7854],"confidence":1}]},{"text":"567 + Main St.","boundingBox":[0.8852,1.846,1.713,1.846,1.713,1.9554,0.8852,1.9554],"words":[{"text":"567","boundingBox":[0.8852,1.8472,1.1203,1.8472,1.1203,1.9554,0.8852,1.9554],"confidence":1},{"text":"Main","boundingBox":[1.1777,1.846,1.5022,1.846,1.5022,1.9554,1.1777,1.9554],"confidence":1},{"text":"St.","boundingBox":[1.5558,1.8472,1.713,1.8472,1.713,1.9554,1.5558,1.9554],"confidence":1}]},{"text":"Redmond, + WA","boundingBox":[6.0164,1.891,6.9793,1.891,6.9793,2.0275,6.0164,2.0275],"words":[{"text":"Redmond,","boundingBox":[6.0164,1.891,6.6861,1.891,6.6861,2.0275,6.0164,2.0275],"confidence":1},{"text":"WA","boundingBox":[6.7408,1.8982,6.9793,1.8982,6.9793,2.0044,6.7408,2.0044],"confidence":1}]},{"text":"Redmond, + WA","boundingBox":[0.891,2.061,1.8537,2.061,1.8537,2.1975,0.891,2.1975],"words":[{"text":"Redmond,","boundingBox":[0.891,2.061,1.5605,2.061,1.5605,2.1975,0.891,2.1975],"confidence":1},{"text":"WA","boundingBox":[1.6152,2.0682,1.8537,2.0682,1.8537,2.1744,1.6152,2.1744],"confidence":1}]},{"text":"555-555-5555","boundingBox":[6.0105,2.1187,6.9371,2.1187,6.9371,2.2254,6.0105,2.2254],"words":[{"text":"555-555-5555","boundingBox":[6.0105,2.1187,6.9371,2.1187,6.9371,2.2254,6.0105,2.2254],"confidence":1}]},{"text":"555-555-5555","boundingBox":[0.8852,2.2887,1.8119,2.2887,1.8119,2.3954,0.8852,2.3954],"words":[{"text":"555-555-5555","boundingBox":[0.8852,2.2887,1.8119,2.2887,1.8119,2.3954,0.8852,2.3954],"confidence":1}]},{"text":"Item","boundingBox":[1.0943,3.0018,1.3842,3.0018,1.3842,3.109,1.0943,3.109],"words":[{"text":"Item","boundingBox":[1.0943,3.0018,1.3842,3.0018,1.3842,3.109,1.0943,3.109],"confidence":1}]},{"text":"Quantity","boundingBox":[3.2527,2.9996,3.8367,2.9996,3.8367,3.1371,3.2527,3.1371],"words":[{"text":"Quantity","boundingBox":[3.2527,2.9996,3.8367,2.9996,3.8367,3.1371,3.2527,3.1371],"confidence":1}]},{"text":"Price","boundingBox":[5.423,2.9996,5.7372,2.9996,5.7372,3.109,5.423,3.109],"words":[{"text":"Price","boundingBox":[5.423,2.9996,5.7372,2.9996,5.7372,3.109,5.423,3.109],"confidence":1}]},{"text":"A","boundingBox":[1.0832,3.2118,1.174,3.2118,1.174,3.318,1.0832,3.318],"words":[{"text":"A","boundingBox":[1.0832,3.2118,1.174,3.2118,1.174,3.318,1.0832,3.318],"confidence":1}]},{"text":"10","boundingBox":[3.2589,3.2108,3.4067,3.2108,3.4067,3.319,3.2589,3.319],"words":[{"text":"10","boundingBox":[3.2589,3.2108,3.4067,3.2108,3.4067,3.319,3.2589,3.319],"confidence":1}]},{"text":"100.99","boundingBox":[5.4232,3.2108,5.8617,3.2108,5.8617,3.319,5.4232,3.319],"words":[{"text":"100.99","boundingBox":[5.4232,3.2108,5.8617,3.2108,5.8617,3.319,5.4232,3.319],"confidence":1}]},{"text":"B","boundingBox":[1.0943,3.4256,1.1637,3.4256,1.1637,3.531,1.0943,3.531],"words":[{"text":"B","boundingBox":[1.0943,3.4256,1.1637,3.4256,1.1637,3.531,1.0943,3.531],"confidence":1}]},{"text":"20","boundingBox":[3.2541,3.4241,3.4067,3.4241,3.4067,3.5323,3.2541,3.5323],"words":[{"text":"20","boundingBox":[3.2541,3.4241,3.4067,3.4241,3.4067,3.5323,3.2541,3.5323],"confidence":1}]},{"text":"140.67","boundingBox":[5.4232,3.4241,5.8622,3.4241,5.8622,3.5323,5.4232,3.5323],"words":[{"text":"140.67","boundingBox":[5.4232,3.4241,5.8622,3.4241,5.8622,3.5323,5.4232,3.5323],"confidence":1}]},{"text":"C","boundingBox":[1.0882,3.6343,1.1647,3.6343,1.1647,3.7421,1.0882,3.7421],"words":[{"text":"C","boundingBox":[1.0882,3.6343,1.1647,3.6343,1.1647,3.7421,1.0882,3.7421],"confidence":1}]},{"text":"40","boundingBox":[3.2486,3.6341,3.4067,3.6341,3.4067,3.7423,3.2486,3.7423],"words":[{"text":"40","boundingBox":[3.2486,3.6341,3.4067,3.6341,3.4067,3.7423,3.2486,3.7423],"confidence":1}]},{"text":"150.66","boundingBox":[5.4232,3.6341,5.8634,3.6341,5.8634,3.7423,5.4232,3.7423],"words":[{"text":"150.66","boundingBox":[5.4232,3.6341,5.8634,3.6341,5.8634,3.7423,5.4232,3.7423],"confidence":1}]},{"text":"D","boundingBox":[1.0943,3.8456,1.1753,3.8456,1.1753,3.951,1.0943,3.951],"words":[{"text":"D","boundingBox":[1.0943,3.8456,1.1753,3.8456,1.1753,3.951,1.0943,3.951],"confidence":1}]},{"text":"10","boundingBox":[3.2589,3.8441,3.4067,3.8441,3.4067,3.9523,3.2589,3.9523],"words":[{"text":"10","boundingBox":[3.2589,3.8441,3.4067,3.8441,3.4067,3.9523,3.2589,3.9523],"confidence":1}]},{"text":"120.00","boundingBox":[5.4232,3.8441,5.8642,3.8441,5.8642,3.9523,5.4232,3.9523],"words":[{"text":"120.00","boundingBox":[5.4232,3.8441,5.8642,3.8441,5.8642,3.9523,5.4232,3.9523],"confidence":1}]},{"text":"E","boundingBox":[1.0943,4.0561,1.153,4.0561,1.153,4.1614,1.0943,4.1614],"words":[{"text":"E","boundingBox":[1.0943,4.0561,1.153,4.0561,1.153,4.1614,1.0943,4.1614],"confidence":1}]},{"text":"40","boundingBox":[3.2486,4.0546,3.4067,4.0546,3.4067,4.1627,3.2486,4.1627],"words":[{"text":"40","boundingBox":[3.2486,4.0546,3.4067,4.0546,3.4067,4.1627,3.2486,4.1627],"confidence":1}]},{"text":"100.00","boundingBox":[5.4232,4.0546,5.8644,4.0546,5.8644,4.1627,5.4232,4.1627],"words":[{"text":"100.00","boundingBox":[5.4232,4.0546,5.8644,4.0546,5.8644,4.1627,5.4232,4.1627],"confidence":1}]},{"text":"F","boundingBox":[1.0943,4.2661,1.1497,4.2661,1.1497,4.3717,1.0943,4.3717],"words":[{"text":"F","boundingBox":[1.0943,4.2661,1.1497,4.2661,1.1497,4.3717,1.0943,4.3717],"confidence":1}]},{"text":"60","boundingBox":[3.2534,4.2646,3.4067,4.2646,3.4067,4.3727,3.2534,4.3727],"words":[{"text":"60","boundingBox":[3.2534,4.2646,3.4067,4.2646,3.4067,4.3727,3.2534,4.3727],"confidence":1}]},{"text":"120.00","boundingBox":[5.4232,4.2646,5.8642,4.2646,5.8642,4.3727,5.4232,4.3727],"words":[{"text":"120.00","boundingBox":[5.4232,4.2646,5.8642,4.2646,5.8642,4.3727,5.4232,4.3727],"confidence":1}]},{"text":"G","boundingBox":[1.0877,4.4746,1.1735,4.4746,1.1735,4.5827,1.0877,4.5827],"words":[{"text":"G","boundingBox":[1.0877,4.4746,1.1735,4.4746,1.1735,4.5827,1.0877,4.5827],"confidence":1}]},{"text":"80","boundingBox":[3.2514,4.4746,3.4067,4.4746,3.4067,4.5827,3.2514,4.5827],"words":[{"text":"80","boundingBox":[3.2514,4.4746,3.4067,4.4746,3.4067,4.5827,3.2514,4.5827],"confidence":1}]},{"text":"220.00","boundingBox":[5.4184,4.4746,5.8644,4.4746,5.8644,4.5827,5.4184,4.5827],"words":[{"text":"220.00","boundingBox":[5.4184,4.4746,5.8644,4.4746,5.8644,4.5827,5.4184,4.5827],"confidence":1}]},{"text":"Subtotal: + 3000.00","boundingBox":[5.5075,4.8981,6.7158,4.8981,6.7158,5.0131,5.5075,5.0131],"words":[{"text":"Subtotal:","boundingBox":[5.5075,4.8981,6.1249,4.8981,6.1249,5.0131,5.5075,5.0131],"confidence":1},{"text":"3000.00","boundingBox":[6.1794,4.9042,6.7158,4.9042,6.7158,5.0131,6.1794,5.0131],"confidence":1}]},{"text":"Tax: + 300.00","boundingBox":[5.5034,5.1245,6.2887,5.1245,6.2887,5.2333,5.5034,5.2333],"words":[{"text":"Tax:","boundingBox":[5.5034,5.1263,5.7812,5.1263,5.7812,5.2333,5.5034,5.2333],"confidence":1},{"text":"300.00","boundingBox":[5.836,5.1245,6.2887,5.1245,6.2887,5.2333,5.836,5.2333],"confidence":1}]},{"text":"Tip: + 1000.00","boundingBox":[5.5034,5.3412,6.3422,5.3412,6.3422,5.481,5.5034,5.481],"words":[{"text":"Tip:","boundingBox":[5.5034,5.3412,5.7515,5.3412,5.7515,5.481,5.5034,5.481],"confidence":1},{"text":"1000.00","boundingBox":[5.811,5.3445,6.3422,5.3445,6.3422,5.4533,5.811,5.4533],"confidence":1}]},{"text":"Total: + 4300.00","boundingBox":[5.5034,5.5583,6.4825,5.5583,6.4825,5.6733,5.5034,5.6733],"words":[{"text":"Total:","boundingBox":[5.5034,5.5583,5.8915,5.5583,5.8915,5.6733,5.5034,5.6733],"confidence":1},{"text":"4300.00","boundingBox":[5.942,5.5645,6.4825,5.5645,6.4825,5.6733,5.942,5.6733],"confidence":1}]},{"text":"Signature: + ____ Frodo Baggins__________","boundingBox":[1.0055,6.6556,3.8842,6.6556,3.8842,6.7981,1.0055,6.7981],"words":[{"text":"Signature:","boundingBox":[1.0055,6.6581,1.6987,6.6581,1.6987,6.7981,1.0055,6.7981],"confidence":1},{"text":"____","boundingBox":[1.747,6.7829,2.0809,6.7829,2.0809,6.7981,1.747,6.7981],"confidence":1},{"text":"Frodo","boundingBox":[2.0925,6.6556,2.4778,6.6556,2.4778,6.7703,2.0925,6.7703],"confidence":1},{"text":"Baggins__________","boundingBox":[2.5325,6.6581,3.8842,6.6581,3.8842,6.7981,2.5325,6.7981],"confidence":1}]}]}],"documentResults":[{"docType":"prebuilt:receipt","pageRange":[1,1],"fields":{"ReceiptType":{"type":"string","valueString":"Itemized","confidence":0.99},"MerchantName":{"type":"string","valueString":"Bilbo + Baggins","text":"Bilbo Baggins","boundingBox":[6.0164,1.4503,6.8967,1.4503,6.8967,1.5931,6.0164,1.5931],"page":1,"confidence":0.987,"elements":["#/readResults/0/lines/3/words/0","#/readResults/0/lines/3/words/1"]},"MerchantAddress":{"type":"string","valueString":"123 + Hobbit Lane 567 Main St. Redmond, WA Redmond, WA","text":"123 Hobbit Lane + 567 Main St. Redmond, WA Redmond, WA","boundingBox":[0.8852,1.6707,7.1006,1.6707,7.1006,2.1975,0.8852,2.1975],"page":1,"confidence":0.99,"elements":["#/readResults/0/lines/4/words/0","#/readResults/0/lines/4/words/1","#/readResults/0/lines/4/words/2","#/readResults/0/lines/5/words/0","#/readResults/0/lines/5/words/1","#/readResults/0/lines/5/words/2","#/readResults/0/lines/6/words/0","#/readResults/0/lines/6/words/1","#/readResults/0/lines/7/words/0","#/readResults/0/lines/7/words/1"]},"MerchantPhoneNumber":{"type":"phoneNumber","valuePhoneNumber":"+15555555555","text":"555-555-5555","boundingBox":[6.0105,2.1187,6.9371,2.1187,6.9371,2.2254,6.0105,2.2254],"page":1,"confidence":0.99,"elements":["#/readResults/0/lines/8/words/0"]},"Items":{"type":"array","valueArray":[{"type":"object","valueObject":{"Name":{"type":"string","valueString":"F","text":"F","boundingBox":[1.0943,4.2661,1.1497,4.2661,1.1497,4.3717,1.0943,4.3717],"page":1,"confidence":0.964,"elements":["#/readResults/0/lines/28/words/0"]},"TotalPrice":{"type":"number","valueNumber":12,"text":"12.00","boundingBox":[5.4232,4.2646,5.7809,4.2646,5.7809,4.3727,5.4232,4.3727],"page":1,"confidence":0.947,"elements":["#/readResults/0/lines/30/words/0"]}}},{"type":"object","valueObject":{"TotalPrice":{"type":"number","valueNumber":22,"text":"22.00","boundingBox":[5.4184,4.4746,5.781,4.4746,5.781,4.5827,5.4184,4.5827],"page":1,"confidence":0.935,"elements":["#/readResults/0/lines/33/words/0"]}}}]},"Subtotal":{"type":"number","valueNumber":300,"text":"300.00","boundingBox":[6.1794,4.9042,6.632,4.9042,6.632,5.0131,6.1794,5.0131],"page":1,"confidence":0.99,"elements":["#/readResults/0/lines/34/words/1"]},"Total":{"type":"number","valueNumber":430,"text":"430.00","boundingBox":[5.942,5.5645,6.3987,5.5645,6.3987,5.6733,5.942,5.6733],"page":1,"confidence":0.985,"elements":["#/readResults/0/lines/37/words/1"]}}},{"docType":"prebuilt:receipt","pageRange":[2,2]},{"docType":"prebuilt:receipt","pageRange":[3,3],"fields":{"ReceiptType":{"type":"string","valueString":"Itemized","confidence":0.99},"MerchantName":{"type":"string","valueString":"Frodo + Baggins","text":"Frodo Baggins","boundingBox":[6.0164,1.4506,6.9506,1.4506,6.9506,1.5931,6.0164,1.5931],"page":3,"confidence":0.984,"elements":["#/readResults/2/lines/3/words/0","#/readResults/2/lines/3/words/1"]},"MerchantAddress":{"type":"string","valueString":"123 + Hobbit Lane 567 Main St. Redmond, WA Redmond, WA","text":"123 Hobbit Lane + 567 Main St. Redmond, WA Redmond, WA","boundingBox":[0.8852,1.6707,7.1006,1.6707,7.1006,2.1975,0.8852,2.1975],"page":3,"confidence":0.99,"elements":["#/readResults/2/lines/4/words/0","#/readResults/2/lines/4/words/1","#/readResults/2/lines/4/words/2","#/readResults/2/lines/5/words/0","#/readResults/2/lines/5/words/1","#/readResults/2/lines/5/words/2","#/readResults/2/lines/6/words/0","#/readResults/2/lines/6/words/1","#/readResults/2/lines/7/words/0","#/readResults/2/lines/7/words/1"]},"MerchantPhoneNumber":{"type":"phoneNumber","valuePhoneNumber":"+15555555555","text":"555-555-5555","boundingBox":[6.0105,2.1187,6.9371,2.1187,6.9371,2.2254,6.0105,2.2254],"page":3,"confidence":0.99,"elements":["#/readResults/2/lines/8/words/0"]},"Items":{"type":"array","valueArray":[{"type":"object","valueObject":{"Name":{"type":"string","valueString":"E","text":"E","boundingBox":[1.0943,4.0561,1.153,4.0561,1.153,4.1614,1.0943,4.1614],"page":3,"confidence":0.935,"elements":["#/readResults/2/lines/25/words/0"]},"Quantity":{"type":"number","text":"40","boundingBox":[3.2486,4.0546,3.4067,4.0546,3.4067,4.1627,3.2486,4.1627],"page":3,"confidence":0,"elements":["#/readResults/2/lines/26/words/0"]},"TotalPrice":{"type":"number","valueNumber":100,"text":"100.00","boundingBox":[5.4232,4.0546,5.8644,4.0546,5.8644,4.1627,5.4232,4.1627],"page":3,"confidence":0.723,"elements":["#/readResults/2/lines/27/words/0"]}}},{"type":"object","valueObject":{"Name":{"type":"string","valueString":"F","text":"F","boundingBox":[1.0943,4.2661,1.1497,4.2661,1.1497,4.3717,1.0943,4.3717],"page":3,"confidence":0.905,"elements":["#/readResults/2/lines/28/words/0"]},"TotalPrice":{"type":"number","valueNumber":120,"text":"120.00","boundingBox":[5.4232,4.2646,5.8642,4.2646,5.8642,4.3727,5.4232,4.3727],"page":3,"confidence":0.967,"elements":["#/readResults/2/lines/30/words/0"]}}},{"type":"object","valueObject":{"Name":{"type":"string","valueString":"G","text":"G","boundingBox":[1.0877,4.4746,1.1735,4.4746,1.1735,4.5827,1.0877,4.5827],"page":3,"confidence":0.896,"elements":["#/readResults/2/lines/31/words/0"]},"TotalPrice":{"type":"number","valueNumber":220,"text":"220.00","boundingBox":[5.4184,4.4746,5.8644,4.4746,5.8644,4.5827,5.4184,4.5827],"page":3,"confidence":0.958,"elements":["#/readResults/2/lines/33/words/0"]}}}]},"Subtotal":{"type":"number","valueNumber":3000,"text":"3000.00","boundingBox":[6.1794,4.9042,6.7158,4.9042,6.7158,5.0131,6.1794,5.0131],"page":3,"confidence":0.99,"elements":["#/readResults/2/lines/34/words/1"]},"Total":{"type":"number","valueNumber":1000,"text":"1000.00","boundingBox":[5.811,5.3445,6.3422,5.3445,6.3422,5.4533,5.811,5.4533],"page":3,"confidence":0.985,"elements":["#/readResults/2/lines/36/words/1"]}}}]}}' + headers: + apim-request-id: 88828437-fb80-4275-b806-b14334c8d273 + content-type: application/json; charset=utf-8 + date: Mon, 27 Apr 2020 21:53:37 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + transfer-encoding: chunked + x-content-type-options: nosniff + x-envoy-upstream-service-time: '186' + status: + code: 200 + message: OK + url: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/prebuilt/receipt/analyzeResults/30775cd2-b4b5-49e0-acf4-5615c1bcf567 +version: 1 diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_receipt_from_url.test_receipt_multipage_transform_url.yaml b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_receipt_from_url.test_receipt_multipage_transform_url.yaml new file mode 100644 index 000000000000..b4fcf3fe54cf --- /dev/null +++ b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_receipt_from_url.test_receipt_multipage_transform_url.yaml @@ -0,0 +1,141 @@ +interactions: +- request: + body: '{"source": "https://raw.githubusercontent.com/Azure/azure-sdk-for-python/master/sdk/formrecognizer/azure-ai-formrecognizer/tests/sample_forms/training_multipage/multipage_invoice1.pdf"}' + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '116' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/prebuilt/receipt/analyze?includeTextDetails=true + response: + body: + string: '' + headers: + apim-request-id: + - 59a4a4a2-45fd-47d9-bd4a-85b4b23d7c8e + content-length: + - '0' + date: + - Mon, 27 Apr 2020 22:15:46 GMT + operation-location: + - https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/prebuilt/receipt/analyzeResults/59a4a4a2-45fd-47d9-bd4a-85b4b23d7c8e + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '1181' + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/prebuilt/receipt/analyzeResults/59a4a4a2-45fd-47d9-bd4a-85b4b23d7c8e + response: + body: + string: '{"status":"running","createdDateTime":"2020-04-27T22:15:46Z","lastUpdatedDateTime":"2020-04-27T22:15:47Z"}' + headers: + apim-request-id: + - feb0907f-49d0-47b6-8ca6-c9e34ecdb055 + content-type: + - application/json; charset=utf-8 + date: + - Mon, 27 Apr 2020 22:15:51 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + transfer-encoding: + - chunked + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '33' + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/prebuilt/receipt/analyzeResults/59a4a4a2-45fd-47d9-bd4a-85b4b23d7c8e + response: + body: + string: '{"status":"succeeded","createdDateTime":"2020-04-27T22:15:46Z","lastUpdatedDateTime":"2020-04-27T22:15:55Z","analyzeResult":{"version":"2.0.0","readResults":[{"page":1,"angle":0,"width":8.5,"height":11,"unit":"inch","language":"en","lines":[{"text":"Company + A Invoice","boundingBox":[0.8861,1.1217,2.3783,1.1217,2.3783,1.2812,0.8861,1.2812],"words":[{"text":"Company","boundingBox":[0.8861,1.1232,1.6203,1.1232,1.6203,1.2812,0.8861,1.2812],"confidence":1},{"text":"A","boundingBox":[1.6696,1.1242,1.7749,1.1242,1.7749,1.2473,1.6696,1.2473],"confidence":1},{"text":"Invoice","boundingBox":[1.8389,1.1217,2.3783,1.1217,2.3783,1.2485,1.8389,1.2485],"confidence":1}]},{"text":"Invoice + For:","boundingBox":[6.0211,1.0656,7.0357,1.0656,7.0357,1.2121,6.0211,1.2121],"words":[{"text":"Invoice","boundingBox":[6.0211,1.0656,6.6362,1.0656,6.6362,1.2121,6.0211,1.2121],"confidence":1},{"text":"For:","boundingBox":[6.7147,1.0691,7.0357,1.0691,7.0357,1.2121,6.7147,1.2121],"confidence":1}]},{"text":"Address:","boundingBox":[0.8791,1.4825,1.5657,1.4825,1.5657,1.6155,0.8791,1.6155],"words":[{"text":"Address:","boundingBox":[0.8791,1.4825,1.5657,1.4825,1.5657,1.6155,0.8791,1.6155],"confidence":1}]},{"text":"Bilbo + Baggins","boundingBox":[6.0164,1.4503,6.8967,1.4503,6.8967,1.5931,6.0164,1.5931],"words":[{"text":"Bilbo","boundingBox":[6.0164,1.4503,6.3392,1.4503,6.3392,1.5649,6.0164,1.5649],"confidence":1},{"text":"Baggins","boundingBox":[6.396,1.4556,6.8967,1.4556,6.8967,1.5931,6.396,1.5931],"confidence":1}]},{"text":"123 + Hobbit Lane","boundingBox":[6.0165,1.6707,7.1006,1.6707,7.1006,1.7854,6.0165,1.7854],"words":[{"text":"123","boundingBox":[6.0165,1.6772,6.2434,1.6772,6.2434,1.7854,6.0165,1.7854],"confidence":1},{"text":"Hobbit","boundingBox":[6.3033,1.6707,6.7463,1.6707,6.7463,1.7854,6.3033,1.7854],"confidence":1},{"text":"Lane","boundingBox":[6.803,1.6782,7.1006,1.6782,7.1006,1.7854,6.803,1.7854],"confidence":1}]},{"text":"567 + Main St.","boundingBox":[0.8852,1.846,1.713,1.846,1.713,1.9554,0.8852,1.9554],"words":[{"text":"567","boundingBox":[0.8852,1.8472,1.1203,1.8472,1.1203,1.9554,0.8852,1.9554],"confidence":1},{"text":"Main","boundingBox":[1.1777,1.846,1.5022,1.846,1.5022,1.9554,1.1777,1.9554],"confidence":1},{"text":"St.","boundingBox":[1.5558,1.8472,1.713,1.8472,1.713,1.9554,1.5558,1.9554],"confidence":1}]},{"text":"Redmond, + WA","boundingBox":[6.0164,1.891,6.9793,1.891,6.9793,2.0275,6.0164,2.0275],"words":[{"text":"Redmond,","boundingBox":[6.0164,1.891,6.6861,1.891,6.6861,2.0275,6.0164,2.0275],"confidence":1},{"text":"WA","boundingBox":[6.7408,1.8982,6.9793,1.8982,6.9793,2.0044,6.7408,2.0044],"confidence":1}]},{"text":"Redmond, + WA","boundingBox":[0.891,2.061,1.8537,2.061,1.8537,2.1975,0.891,2.1975],"words":[{"text":"Redmond,","boundingBox":[0.891,2.061,1.5605,2.061,1.5605,2.1975,0.891,2.1975],"confidence":1},{"text":"WA","boundingBox":[1.6152,2.0682,1.8537,2.0682,1.8537,2.1744,1.6152,2.1744],"confidence":1}]},{"text":"555-555-5555","boundingBox":[6.0105,2.1187,6.9371,2.1187,6.9371,2.2254,6.0105,2.2254],"words":[{"text":"555-555-5555","boundingBox":[6.0105,2.1187,6.9371,2.1187,6.9371,2.2254,6.0105,2.2254],"confidence":1}]},{"text":"555-555-5555","boundingBox":[0.8852,2.2887,1.8119,2.2887,1.8119,2.3954,0.8852,2.3954],"words":[{"text":"555-555-5555","boundingBox":[0.8852,2.2887,1.8119,2.2887,1.8119,2.3954,0.8852,2.3954],"confidence":1}]},{"text":"Item","boundingBox":[1.0943,3.0018,1.3842,3.0018,1.3842,3.109,1.0943,3.109],"words":[{"text":"Item","boundingBox":[1.0943,3.0018,1.3842,3.0018,1.3842,3.109,1.0943,3.109],"confidence":1}]},{"text":"Quantity","boundingBox":[3.2527,2.9996,3.8367,2.9996,3.8367,3.1371,3.2527,3.1371],"words":[{"text":"Quantity","boundingBox":[3.2527,2.9996,3.8367,2.9996,3.8367,3.1371,3.2527,3.1371],"confidence":1}]},{"text":"Price","boundingBox":[5.423,2.9996,5.7372,2.9996,5.7372,3.109,5.423,3.109],"words":[{"text":"Price","boundingBox":[5.423,2.9996,5.7372,2.9996,5.7372,3.109,5.423,3.109],"confidence":1}]},{"text":"A","boundingBox":[1.0832,3.2118,1.174,3.2118,1.174,3.318,1.0832,3.318],"words":[{"text":"A","boundingBox":[1.0832,3.2118,1.174,3.2118,1.174,3.318,1.0832,3.318],"confidence":1}]},{"text":"1","boundingBox":[3.2589,3.2116,3.3202,3.2116,3.3202,3.3176,3.2589,3.3176],"words":[{"text":"1","boundingBox":[3.2589,3.2116,3.3202,3.2116,3.3202,3.3176,3.2589,3.3176],"confidence":1}]},{"text":"10.99","boundingBox":[5.4232,3.2108,5.7784,3.2108,5.7784,3.319,5.4232,3.319],"words":[{"text":"10.99","boundingBox":[5.4232,3.2108,5.7784,3.2108,5.7784,3.319,5.4232,3.319],"confidence":1}]},{"text":"B","boundingBox":[1.0943,3.4256,1.1637,3.4256,1.1637,3.531,1.0943,3.531],"words":[{"text":"B","boundingBox":[1.0943,3.4256,1.1637,3.4256,1.1637,3.531,1.0943,3.531],"confidence":1}]},{"text":"2","boundingBox":[3.2541,3.4241,3.3199,3.4241,3.3199,3.531,3.2541,3.531],"words":[{"text":"2","boundingBox":[3.2541,3.4241,3.3199,3.4241,3.3199,3.531,3.2541,3.531],"confidence":1}]},{"text":"14.67","boundingBox":[5.4232,3.4241,5.7789,3.4241,5.7789,3.5323,5.4232,3.5323],"words":[{"text":"14.67","boundingBox":[5.4232,3.4241,5.7789,3.4241,5.7789,3.5323,5.4232,3.5323],"confidence":1}]},{"text":"C","boundingBox":[1.0882,3.6343,1.1647,3.6343,1.1647,3.7421,1.0882,3.7421],"words":[{"text":"C","boundingBox":[1.0882,3.6343,1.1647,3.6343,1.1647,3.7421,1.0882,3.7421],"confidence":1}]},{"text":"4","boundingBox":[3.2486,3.6351,3.3244,3.6351,3.3244,3.7413,3.2486,3.7413],"words":[{"text":"4","boundingBox":[3.2486,3.6351,3.3244,3.6351,3.3244,3.7413,3.2486,3.7413],"confidence":1}]},{"text":"15.66","boundingBox":[5.4232,3.6341,5.78,3.6341,5.78,3.7423,5.4232,3.7423],"words":[{"text":"15.66","boundingBox":[5.4232,3.6341,5.78,3.6341,5.78,3.7423,5.4232,3.7423],"confidence":1}]},{"text":"D","boundingBox":[1.0943,3.8456,1.1753,3.8456,1.1753,3.951,1.0943,3.951],"words":[{"text":"D","boundingBox":[1.0943,3.8456,1.1753,3.8456,1.1753,3.951,1.0943,3.951],"confidence":1}]},{"text":"1","boundingBox":[3.2589,3.845,3.3202,3.845,3.3202,3.951,3.2589,3.951],"words":[{"text":"1","boundingBox":[3.2589,3.845,3.3202,3.845,3.3202,3.951,3.2589,3.951],"confidence":1}]},{"text":"12.00","boundingBox":[5.4232,3.8441,5.7809,3.8441,5.7809,3.9523,5.4232,3.9523],"words":[{"text":"12.00","boundingBox":[5.4232,3.8441,5.7809,3.8441,5.7809,3.9523,5.4232,3.9523],"confidence":1}]},{"text":"E","boundingBox":[1.0943,4.0561,1.153,4.0561,1.153,4.1614,1.0943,4.1614],"words":[{"text":"E","boundingBox":[1.0943,4.0561,1.153,4.0561,1.153,4.1614,1.0943,4.1614],"confidence":1}]},{"text":"4","boundingBox":[3.2486,4.0556,3.3244,4.0556,3.3244,4.1617,3.2486,4.1617],"words":[{"text":"4","boundingBox":[3.2486,4.0556,3.3244,4.0556,3.3244,4.1617,3.2486,4.1617],"confidence":1}]},{"text":"10.00","boundingBox":[5.4232,4.0546,5.781,4.0546,5.781,4.1627,5.4232,4.1627],"words":[{"text":"10.00","boundingBox":[5.4232,4.0546,5.781,4.0546,5.781,4.1627,5.4232,4.1627],"confidence":1}]},{"text":"F","boundingBox":[1.0943,4.2661,1.1497,4.2661,1.1497,4.3717,1.0943,4.3717],"words":[{"text":"F","boundingBox":[1.0943,4.2661,1.1497,4.2661,1.1497,4.3717,1.0943,4.3717],"confidence":1}]},{"text":"6","boundingBox":[3.2534,4.2646,3.3226,4.2646,3.3226,4.3727,3.2534,4.3727],"words":[{"text":"6","boundingBox":[3.2534,4.2646,3.3226,4.2646,3.3226,4.3727,3.2534,4.3727],"confidence":1}]},{"text":"12.00","boundingBox":[5.4232,4.2646,5.7809,4.2646,5.7809,4.3727,5.4232,4.3727],"words":[{"text":"12.00","boundingBox":[5.4232,4.2646,5.7809,4.2646,5.7809,4.3727,5.4232,4.3727],"confidence":1}]},{"text":"G","boundingBox":[1.0877,4.4746,1.1735,4.4746,1.1735,4.5827,1.0877,4.5827],"words":[{"text":"G","boundingBox":[1.0877,4.4746,1.1735,4.4746,1.1735,4.5827,1.0877,4.5827],"confidence":1}]},{"text":"8","boundingBox":[3.2514,4.4746,3.3224,4.4746,3.3224,4.5827,3.2514,4.5827],"words":[{"text":"8","boundingBox":[3.2514,4.4746,3.3224,4.4746,3.3224,4.5827,3.2514,4.5827],"confidence":1}]},{"text":"22.00","boundingBox":[5.4184,4.4746,5.781,4.4746,5.781,4.5827,5.4184,4.5827],"words":[{"text":"22.00","boundingBox":[5.4184,4.4746,5.781,4.4746,5.781,4.5827,5.4184,4.5827],"confidence":1}]},{"text":"Subtotal: + 300.00","boundingBox":[5.5075,4.8981,6.632,4.8981,6.632,5.0131,5.5075,5.0131],"words":[{"text":"Subtotal:","boundingBox":[5.5075,4.8981,6.1249,4.8981,6.1249,5.0131,5.5075,5.0131],"confidence":1},{"text":"300.00","boundingBox":[6.1794,4.9042,6.632,4.9042,6.632,5.0131,6.1794,5.0131],"confidence":1}]},{"text":"Tax: + 30.00","boundingBox":[5.5034,5.1245,6.2022,5.1245,6.2022,5.2333,5.5034,5.2333],"words":[{"text":"Tax:","boundingBox":[5.5034,5.1263,5.7812,5.1263,5.7812,5.2333,5.5034,5.2333],"confidence":1},{"text":"30.00","boundingBox":[5.836,5.1245,6.2022,5.1245,6.2022,5.2333,5.836,5.2333],"confidence":1}]},{"text":"Tip: + 100.00","boundingBox":[5.5034,5.3412,6.2587,5.3412,6.2587,5.481,5.5034,5.481],"words":[{"text":"Tip:","boundingBox":[5.5034,5.3412,5.7515,5.3412,5.7515,5.481,5.5034,5.481],"confidence":1},{"text":"100.00","boundingBox":[5.811,5.3445,6.2587,5.3445,6.2587,5.4533,5.811,5.4533],"confidence":1}]},{"text":"Total: + 430.00","boundingBox":[5.5034,5.5583,6.3987,5.5583,6.3987,5.6733,5.5034,5.6733],"words":[{"text":"Total:","boundingBox":[5.5034,5.5583,5.8915,5.5583,5.8915,5.6733,5.5034,5.6733],"confidence":1},{"text":"430.00","boundingBox":[5.942,5.5645,6.3987,5.5645,6.3987,5.6733,5.942,5.6733],"confidence":1}]},{"text":"Signature: + ____ Bilbo Baggins__________","boundingBox":[1.0055,6.6553,3.8342,6.6553,3.8342,6.7981,1.0055,6.7981],"words":[{"text":"Signature:","boundingBox":[1.0055,6.6581,1.6987,6.6581,1.6987,6.7981,1.0055,6.7981],"confidence":1},{"text":"____","boundingBox":[1.747,6.7829,2.0809,6.7829,2.0809,6.7981,1.747,6.7981],"confidence":1},{"text":"Bilbo","boundingBox":[2.0925,6.6553,2.4278,6.6553,2.4278,6.7703,2.0925,6.7703],"confidence":1},{"text":"Baggins__________","boundingBox":[2.4823,6.6581,3.8342,6.6581,3.8342,6.7981,2.4823,6.7981],"confidence":1}]}]},{"page":2,"angle":0,"width":8.4967,"height":10.9967,"unit":"inch","language":"en"},{"page":3,"angle":0,"width":8.5,"height":11,"unit":"inch","language":"en","lines":[{"text":"Company + B Invoice","boundingBox":[0.8861,1.1217,2.3734,1.1217,2.3734,1.2812,0.8861,1.2812],"words":[{"text":"Company","boundingBox":[0.8861,1.1232,1.6203,1.1232,1.6203,1.2812,0.8861,1.2812],"confidence":1},{"text":"B","boundingBox":[1.6836,1.1248,1.764,1.1248,1.764,1.2469,1.6836,1.2469],"confidence":1},{"text":"Invoice","boundingBox":[1.8336,1.1217,2.3734,1.1217,2.3734,1.2485,1.8336,1.2485],"confidence":1}]},{"text":"Invoice + For:","boundingBox":[6.0211,1.0656,7.0357,1.0656,7.0357,1.2121,6.0211,1.2121],"words":[{"text":"Invoice","boundingBox":[6.0211,1.0656,6.6362,1.0656,6.6362,1.2121,6.0211,1.2121],"confidence":1},{"text":"For:","boundingBox":[6.7147,1.0691,7.0357,1.0691,7.0357,1.2121,6.7147,1.2121],"confidence":1}]},{"text":"Address:","boundingBox":[0.8791,1.4825,1.5657,1.4825,1.5657,1.6155,0.8791,1.6155],"words":[{"text":"Address:","boundingBox":[0.8791,1.4825,1.5657,1.4825,1.5657,1.6155,0.8791,1.6155],"confidence":1}]},{"text":"Frodo + Baggins","boundingBox":[6.0164,1.4506,6.9506,1.4506,6.9506,1.5931,6.0164,1.5931],"words":[{"text":"Frodo","boundingBox":[6.0164,1.4506,6.3895,1.4506,6.3895,1.5649,6.0164,1.5649],"confidence":1},{"text":"Baggins","boundingBox":[6.45,1.4556,6.9506,1.4556,6.9506,1.5931,6.45,1.5931],"confidence":1}]},{"text":"123 + Hobbit Lane","boundingBox":[6.0165,1.6707,7.1006,1.6707,7.1006,1.7854,6.0165,1.7854],"words":[{"text":"123","boundingBox":[6.0165,1.6772,6.2434,1.6772,6.2434,1.7854,6.0165,1.7854],"confidence":1},{"text":"Hobbit","boundingBox":[6.3033,1.6707,6.7463,1.6707,6.7463,1.7854,6.3033,1.7854],"confidence":1},{"text":"Lane","boundingBox":[6.803,1.6782,7.1006,1.6782,7.1006,1.7854,6.803,1.7854],"confidence":1}]},{"text":"567 + Main St.","boundingBox":[0.8852,1.846,1.713,1.846,1.713,1.9554,0.8852,1.9554],"words":[{"text":"567","boundingBox":[0.8852,1.8472,1.1203,1.8472,1.1203,1.9554,0.8852,1.9554],"confidence":1},{"text":"Main","boundingBox":[1.1777,1.846,1.5022,1.846,1.5022,1.9554,1.1777,1.9554],"confidence":1},{"text":"St.","boundingBox":[1.5558,1.8472,1.713,1.8472,1.713,1.9554,1.5558,1.9554],"confidence":1}]},{"text":"Redmond, + WA","boundingBox":[6.0164,1.891,6.9793,1.891,6.9793,2.0275,6.0164,2.0275],"words":[{"text":"Redmond,","boundingBox":[6.0164,1.891,6.6861,1.891,6.6861,2.0275,6.0164,2.0275],"confidence":1},{"text":"WA","boundingBox":[6.7408,1.8982,6.9793,1.8982,6.9793,2.0044,6.7408,2.0044],"confidence":1}]},{"text":"Redmond, + WA","boundingBox":[0.891,2.061,1.8537,2.061,1.8537,2.1975,0.891,2.1975],"words":[{"text":"Redmond,","boundingBox":[0.891,2.061,1.5605,2.061,1.5605,2.1975,0.891,2.1975],"confidence":1},{"text":"WA","boundingBox":[1.6152,2.0682,1.8537,2.0682,1.8537,2.1744,1.6152,2.1744],"confidence":1}]},{"text":"555-555-5555","boundingBox":[6.0105,2.1187,6.9371,2.1187,6.9371,2.2254,6.0105,2.2254],"words":[{"text":"555-555-5555","boundingBox":[6.0105,2.1187,6.9371,2.1187,6.9371,2.2254,6.0105,2.2254],"confidence":1}]},{"text":"555-555-5555","boundingBox":[0.8852,2.2887,1.8119,2.2887,1.8119,2.3954,0.8852,2.3954],"words":[{"text":"555-555-5555","boundingBox":[0.8852,2.2887,1.8119,2.2887,1.8119,2.3954,0.8852,2.3954],"confidence":1}]},{"text":"Item","boundingBox":[1.0943,3.0018,1.3842,3.0018,1.3842,3.109,1.0943,3.109],"words":[{"text":"Item","boundingBox":[1.0943,3.0018,1.3842,3.0018,1.3842,3.109,1.0943,3.109],"confidence":1}]},{"text":"Quantity","boundingBox":[3.2527,2.9996,3.8367,2.9996,3.8367,3.1371,3.2527,3.1371],"words":[{"text":"Quantity","boundingBox":[3.2527,2.9996,3.8367,2.9996,3.8367,3.1371,3.2527,3.1371],"confidence":1}]},{"text":"Price","boundingBox":[5.423,2.9996,5.7372,2.9996,5.7372,3.109,5.423,3.109],"words":[{"text":"Price","boundingBox":[5.423,2.9996,5.7372,2.9996,5.7372,3.109,5.423,3.109],"confidence":1}]},{"text":"A","boundingBox":[1.0832,3.2118,1.174,3.2118,1.174,3.318,1.0832,3.318],"words":[{"text":"A","boundingBox":[1.0832,3.2118,1.174,3.2118,1.174,3.318,1.0832,3.318],"confidence":1}]},{"text":"10","boundingBox":[3.2589,3.2108,3.4067,3.2108,3.4067,3.319,3.2589,3.319],"words":[{"text":"10","boundingBox":[3.2589,3.2108,3.4067,3.2108,3.4067,3.319,3.2589,3.319],"confidence":1}]},{"text":"100.99","boundingBox":[5.4232,3.2108,5.8617,3.2108,5.8617,3.319,5.4232,3.319],"words":[{"text":"100.99","boundingBox":[5.4232,3.2108,5.8617,3.2108,5.8617,3.319,5.4232,3.319],"confidence":1}]},{"text":"B","boundingBox":[1.0943,3.4256,1.1637,3.4256,1.1637,3.531,1.0943,3.531],"words":[{"text":"B","boundingBox":[1.0943,3.4256,1.1637,3.4256,1.1637,3.531,1.0943,3.531],"confidence":1}]},{"text":"20","boundingBox":[3.2541,3.4241,3.4067,3.4241,3.4067,3.5323,3.2541,3.5323],"words":[{"text":"20","boundingBox":[3.2541,3.4241,3.4067,3.4241,3.4067,3.5323,3.2541,3.5323],"confidence":1}]},{"text":"140.67","boundingBox":[5.4232,3.4241,5.8622,3.4241,5.8622,3.5323,5.4232,3.5323],"words":[{"text":"140.67","boundingBox":[5.4232,3.4241,5.8622,3.4241,5.8622,3.5323,5.4232,3.5323],"confidence":1}]},{"text":"C","boundingBox":[1.0882,3.6343,1.1647,3.6343,1.1647,3.7421,1.0882,3.7421],"words":[{"text":"C","boundingBox":[1.0882,3.6343,1.1647,3.6343,1.1647,3.7421,1.0882,3.7421],"confidence":1}]},{"text":"40","boundingBox":[3.2486,3.6341,3.4067,3.6341,3.4067,3.7423,3.2486,3.7423],"words":[{"text":"40","boundingBox":[3.2486,3.6341,3.4067,3.6341,3.4067,3.7423,3.2486,3.7423],"confidence":1}]},{"text":"150.66","boundingBox":[5.4232,3.6341,5.8634,3.6341,5.8634,3.7423,5.4232,3.7423],"words":[{"text":"150.66","boundingBox":[5.4232,3.6341,5.8634,3.6341,5.8634,3.7423,5.4232,3.7423],"confidence":1}]},{"text":"D","boundingBox":[1.0943,3.8456,1.1753,3.8456,1.1753,3.951,1.0943,3.951],"words":[{"text":"D","boundingBox":[1.0943,3.8456,1.1753,3.8456,1.1753,3.951,1.0943,3.951],"confidence":1}]},{"text":"10","boundingBox":[3.2589,3.8441,3.4067,3.8441,3.4067,3.9523,3.2589,3.9523],"words":[{"text":"10","boundingBox":[3.2589,3.8441,3.4067,3.8441,3.4067,3.9523,3.2589,3.9523],"confidence":1}]},{"text":"120.00","boundingBox":[5.4232,3.8441,5.8642,3.8441,5.8642,3.9523,5.4232,3.9523],"words":[{"text":"120.00","boundingBox":[5.4232,3.8441,5.8642,3.8441,5.8642,3.9523,5.4232,3.9523],"confidence":1}]},{"text":"E","boundingBox":[1.0943,4.0561,1.153,4.0561,1.153,4.1614,1.0943,4.1614],"words":[{"text":"E","boundingBox":[1.0943,4.0561,1.153,4.0561,1.153,4.1614,1.0943,4.1614],"confidence":1}]},{"text":"40","boundingBox":[3.2486,4.0546,3.4067,4.0546,3.4067,4.1627,3.2486,4.1627],"words":[{"text":"40","boundingBox":[3.2486,4.0546,3.4067,4.0546,3.4067,4.1627,3.2486,4.1627],"confidence":1}]},{"text":"100.00","boundingBox":[5.4232,4.0546,5.8644,4.0546,5.8644,4.1627,5.4232,4.1627],"words":[{"text":"100.00","boundingBox":[5.4232,4.0546,5.8644,4.0546,5.8644,4.1627,5.4232,4.1627],"confidence":1}]},{"text":"F","boundingBox":[1.0943,4.2661,1.1497,4.2661,1.1497,4.3717,1.0943,4.3717],"words":[{"text":"F","boundingBox":[1.0943,4.2661,1.1497,4.2661,1.1497,4.3717,1.0943,4.3717],"confidence":1}]},{"text":"60","boundingBox":[3.2534,4.2646,3.4067,4.2646,3.4067,4.3727,3.2534,4.3727],"words":[{"text":"60","boundingBox":[3.2534,4.2646,3.4067,4.2646,3.4067,4.3727,3.2534,4.3727],"confidence":1}]},{"text":"120.00","boundingBox":[5.4232,4.2646,5.8642,4.2646,5.8642,4.3727,5.4232,4.3727],"words":[{"text":"120.00","boundingBox":[5.4232,4.2646,5.8642,4.2646,5.8642,4.3727,5.4232,4.3727],"confidence":1}]},{"text":"G","boundingBox":[1.0877,4.4746,1.1735,4.4746,1.1735,4.5827,1.0877,4.5827],"words":[{"text":"G","boundingBox":[1.0877,4.4746,1.1735,4.4746,1.1735,4.5827,1.0877,4.5827],"confidence":1}]},{"text":"80","boundingBox":[3.2514,4.4746,3.4067,4.4746,3.4067,4.5827,3.2514,4.5827],"words":[{"text":"80","boundingBox":[3.2514,4.4746,3.4067,4.4746,3.4067,4.5827,3.2514,4.5827],"confidence":1}]},{"text":"220.00","boundingBox":[5.4184,4.4746,5.8644,4.4746,5.8644,4.5827,5.4184,4.5827],"words":[{"text":"220.00","boundingBox":[5.4184,4.4746,5.8644,4.4746,5.8644,4.5827,5.4184,4.5827],"confidence":1}]},{"text":"Subtotal: + 3000.00","boundingBox":[5.5075,4.8981,6.7158,4.8981,6.7158,5.0131,5.5075,5.0131],"words":[{"text":"Subtotal:","boundingBox":[5.5075,4.8981,6.1249,4.8981,6.1249,5.0131,5.5075,5.0131],"confidence":1},{"text":"3000.00","boundingBox":[6.1794,4.9042,6.7158,4.9042,6.7158,5.0131,6.1794,5.0131],"confidence":1}]},{"text":"Tax: + 300.00","boundingBox":[5.5034,5.1245,6.2887,5.1245,6.2887,5.2333,5.5034,5.2333],"words":[{"text":"Tax:","boundingBox":[5.5034,5.1263,5.7812,5.1263,5.7812,5.2333,5.5034,5.2333],"confidence":1},{"text":"300.00","boundingBox":[5.836,5.1245,6.2887,5.1245,6.2887,5.2333,5.836,5.2333],"confidence":1}]},{"text":"Tip: + 1000.00","boundingBox":[5.5034,5.3412,6.3422,5.3412,6.3422,5.481,5.5034,5.481],"words":[{"text":"Tip:","boundingBox":[5.5034,5.3412,5.7515,5.3412,5.7515,5.481,5.5034,5.481],"confidence":1},{"text":"1000.00","boundingBox":[5.811,5.3445,6.3422,5.3445,6.3422,5.4533,5.811,5.4533],"confidence":1}]},{"text":"Total: + 4300.00","boundingBox":[5.5034,5.5583,6.4825,5.5583,6.4825,5.6733,5.5034,5.6733],"words":[{"text":"Total:","boundingBox":[5.5034,5.5583,5.8915,5.5583,5.8915,5.6733,5.5034,5.6733],"confidence":1},{"text":"4300.00","boundingBox":[5.942,5.5645,6.4825,5.5645,6.4825,5.6733,5.942,5.6733],"confidence":1}]},{"text":"Signature: + ____ Frodo Baggins__________","boundingBox":[1.0055,6.6556,3.8842,6.6556,3.8842,6.7981,1.0055,6.7981],"words":[{"text":"Signature:","boundingBox":[1.0055,6.6581,1.6987,6.6581,1.6987,6.7981,1.0055,6.7981],"confidence":1},{"text":"____","boundingBox":[1.747,6.7829,2.0809,6.7829,2.0809,6.7981,1.747,6.7981],"confidence":1},{"text":"Frodo","boundingBox":[2.0925,6.6556,2.4778,6.6556,2.4778,6.7703,2.0925,6.7703],"confidence":1},{"text":"Baggins__________","boundingBox":[2.5325,6.6581,3.8842,6.6581,3.8842,6.7981,2.5325,6.7981],"confidence":1}]}]}],"documentResults":[{"docType":"prebuilt:receipt","pageRange":[1,1],"fields":{"ReceiptType":{"type":"string","valueString":"Itemized","confidence":0.99},"MerchantName":{"type":"string","valueString":"Bilbo + Baggins","text":"Bilbo Baggins","boundingBox":[6.0164,1.4503,6.8967,1.4503,6.8967,1.5931,6.0164,1.5931],"page":1,"confidence":0.987,"elements":["#/readResults/0/lines/3/words/0","#/readResults/0/lines/3/words/1"]},"MerchantAddress":{"type":"string","valueString":"123 + Hobbit Lane 567 Main St. Redmond, WA Redmond, WA","text":"123 Hobbit Lane + 567 Main St. Redmond, WA Redmond, WA","boundingBox":[0.8852,1.6707,7.1006,1.6707,7.1006,2.1975,0.8852,2.1975],"page":1,"confidence":0.99,"elements":["#/readResults/0/lines/4/words/0","#/readResults/0/lines/4/words/1","#/readResults/0/lines/4/words/2","#/readResults/0/lines/5/words/0","#/readResults/0/lines/5/words/1","#/readResults/0/lines/5/words/2","#/readResults/0/lines/6/words/0","#/readResults/0/lines/6/words/1","#/readResults/0/lines/7/words/0","#/readResults/0/lines/7/words/1"]},"MerchantPhoneNumber":{"type":"phoneNumber","valuePhoneNumber":"+15555555555","text":"555-555-5555","boundingBox":[6.0105,2.1187,6.9371,2.1187,6.9371,2.2254,6.0105,2.2254],"page":1,"confidence":0.99,"elements":["#/readResults/0/lines/8/words/0"]},"Items":{"type":"array","valueArray":[{"type":"object","valueObject":{"Name":{"type":"string","valueString":"F","text":"F","boundingBox":[1.0943,4.2661,1.1497,4.2661,1.1497,4.3717,1.0943,4.3717],"page":1,"confidence":0.964,"elements":["#/readResults/0/lines/28/words/0"]},"TotalPrice":{"type":"number","valueNumber":12,"text":"12.00","boundingBox":[5.4232,4.2646,5.7809,4.2646,5.7809,4.3727,5.4232,4.3727],"page":1,"confidence":0.947,"elements":["#/readResults/0/lines/30/words/0"]}}},{"type":"object","valueObject":{"TotalPrice":{"type":"number","valueNumber":22,"text":"22.00","boundingBox":[5.4184,4.4746,5.781,4.4746,5.781,4.5827,5.4184,4.5827],"page":1,"confidence":0.935,"elements":["#/readResults/0/lines/33/words/0"]}}}]},"Subtotal":{"type":"number","valueNumber":300,"text":"300.00","boundingBox":[6.1794,4.9042,6.632,4.9042,6.632,5.0131,6.1794,5.0131],"page":1,"confidence":0.99,"elements":["#/readResults/0/lines/34/words/1"]},"Total":{"type":"number","valueNumber":430,"text":"430.00","boundingBox":[5.942,5.5645,6.3987,5.5645,6.3987,5.6733,5.942,5.6733],"page":1,"confidence":0.985,"elements":["#/readResults/0/lines/37/words/1"]}}},{"docType":"prebuilt:receipt","pageRange":[2,2]},{"docType":"prebuilt:receipt","pageRange":[3,3],"fields":{"ReceiptType":{"type":"string","valueString":"Itemized","confidence":0.99},"MerchantName":{"type":"string","valueString":"Frodo + Baggins","text":"Frodo Baggins","boundingBox":[6.0164,1.4506,6.9506,1.4506,6.9506,1.5931,6.0164,1.5931],"page":3,"confidence":0.984,"elements":["#/readResults/2/lines/3/words/0","#/readResults/2/lines/3/words/1"]},"MerchantAddress":{"type":"string","valueString":"123 + Hobbit Lane 567 Main St. Redmond, WA Redmond, WA","text":"123 Hobbit Lane + 567 Main St. Redmond, WA Redmond, WA","boundingBox":[0.8852,1.6707,7.1006,1.6707,7.1006,2.1975,0.8852,2.1975],"page":3,"confidence":0.99,"elements":["#/readResults/2/lines/4/words/0","#/readResults/2/lines/4/words/1","#/readResults/2/lines/4/words/2","#/readResults/2/lines/5/words/0","#/readResults/2/lines/5/words/1","#/readResults/2/lines/5/words/2","#/readResults/2/lines/6/words/0","#/readResults/2/lines/6/words/1","#/readResults/2/lines/7/words/0","#/readResults/2/lines/7/words/1"]},"MerchantPhoneNumber":{"type":"phoneNumber","valuePhoneNumber":"+15555555555","text":"555-555-5555","boundingBox":[6.0105,2.1187,6.9371,2.1187,6.9371,2.2254,6.0105,2.2254],"page":3,"confidence":0.99,"elements":["#/readResults/2/lines/8/words/0"]},"Items":{"type":"array","valueArray":[{"type":"object","valueObject":{"Name":{"type":"string","valueString":"E","text":"E","boundingBox":[1.0943,4.0561,1.153,4.0561,1.153,4.1614,1.0943,4.1614],"page":3,"confidence":0.935,"elements":["#/readResults/2/lines/25/words/0"]},"Quantity":{"type":"number","text":"40","boundingBox":[3.2486,4.0546,3.4067,4.0546,3.4067,4.1627,3.2486,4.1627],"page":3,"confidence":0,"elements":["#/readResults/2/lines/26/words/0"]},"TotalPrice":{"type":"number","valueNumber":100,"text":"100.00","boundingBox":[5.4232,4.0546,5.8644,4.0546,5.8644,4.1627,5.4232,4.1627],"page":3,"confidence":0.723,"elements":["#/readResults/2/lines/27/words/0"]}}},{"type":"object","valueObject":{"Name":{"type":"string","valueString":"F","text":"F","boundingBox":[1.0943,4.2661,1.1497,4.2661,1.1497,4.3717,1.0943,4.3717],"page":3,"confidence":0.905,"elements":["#/readResults/2/lines/28/words/0"]},"TotalPrice":{"type":"number","valueNumber":120,"text":"120.00","boundingBox":[5.4232,4.2646,5.8642,4.2646,5.8642,4.3727,5.4232,4.3727],"page":3,"confidence":0.967,"elements":["#/readResults/2/lines/30/words/0"]}}},{"type":"object","valueObject":{"Name":{"type":"string","valueString":"G","text":"G","boundingBox":[1.0877,4.4746,1.1735,4.4746,1.1735,4.5827,1.0877,4.5827],"page":3,"confidence":0.896,"elements":["#/readResults/2/lines/31/words/0"]},"TotalPrice":{"type":"number","valueNumber":220,"text":"220.00","boundingBox":[5.4184,4.4746,5.8644,4.4746,5.8644,4.5827,5.4184,4.5827],"page":3,"confidence":0.958,"elements":["#/readResults/2/lines/33/words/0"]}}}]},"Subtotal":{"type":"number","valueNumber":3000,"text":"3000.00","boundingBox":[6.1794,4.9042,6.7158,4.9042,6.7158,5.0131,6.1794,5.0131],"page":3,"confidence":0.99,"elements":["#/readResults/2/lines/34/words/1"]},"Total":{"type":"number","valueNumber":1000,"text":"1000.00","boundingBox":[5.811,5.3445,6.3422,5.3445,6.3422,5.4533,5.811,5.4533],"page":3,"confidence":0.985,"elements":["#/readResults/2/lines/36/words/1"]}}}]}}' + headers: + apim-request-id: + - 3c69f201-0800-41ec-bfeb-e1c02715f1dc + content-type: + - application/json; charset=utf-8 + date: + - Mon, 27 Apr 2020 22:15:56 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + transfer-encoding: + - chunked + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '339' + status: + code: 200 + message: OK +version: 1 diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_receipt_from_url.test_receipt_multipage_url.yaml b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_receipt_from_url.test_receipt_multipage_url.yaml new file mode 100644 index 000000000000..3ed49597137c --- /dev/null +++ b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_receipt_from_url.test_receipt_multipage_url.yaml @@ -0,0 +1,141 @@ +interactions: +- request: + body: '{"source": "https://raw.githubusercontent.com/Azure/azure-sdk-for-python/master/sdk/formrecognizer/azure-ai-formrecognizer/tests/sample_forms/training_multipage/multipage_invoice1.pdf"}' + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '116' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/prebuilt/receipt/analyze?includeTextDetails=true + response: + body: + string: '' + headers: + apim-request-id: + - 78c83238-ac92-413b-8d8f-0926c425ab2a + content-length: + - '0' + date: + - Mon, 27 Apr 2020 22:13:21 GMT + operation-location: + - https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/prebuilt/receipt/analyzeResults/78c83238-ac92-413b-8d8f-0926c425ab2a + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '1149' + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/prebuilt/receipt/analyzeResults/78c83238-ac92-413b-8d8f-0926c425ab2a + response: + body: + string: '{"status":"running","createdDateTime":"2020-04-27T22:13:20Z","lastUpdatedDateTime":"2020-04-27T22:13:21Z"}' + headers: + apim-request-id: + - 243f90eb-20ce-4563-a6b6-36bf89bfbbc1 + content-type: + - application/json; charset=utf-8 + date: + - Mon, 27 Apr 2020 22:13:26 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + transfer-encoding: + - chunked + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '112' + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/prebuilt/receipt/analyzeResults/78c83238-ac92-413b-8d8f-0926c425ab2a + response: + body: + string: '{"status":"succeeded","createdDateTime":"2020-04-27T22:13:20Z","lastUpdatedDateTime":"2020-04-27T22:13:30Z","analyzeResult":{"version":"2.0.0","readResults":[{"page":1,"angle":0,"width":8.5,"height":11,"unit":"inch","language":"en","lines":[{"text":"Company + A Invoice","boundingBox":[0.8861,1.1217,2.3783,1.1217,2.3783,1.2812,0.8861,1.2812],"words":[{"text":"Company","boundingBox":[0.8861,1.1232,1.6203,1.1232,1.6203,1.2812,0.8861,1.2812],"confidence":1},{"text":"A","boundingBox":[1.6696,1.1242,1.7749,1.1242,1.7749,1.2473,1.6696,1.2473],"confidence":1},{"text":"Invoice","boundingBox":[1.8389,1.1217,2.3783,1.1217,2.3783,1.2485,1.8389,1.2485],"confidence":1}]},{"text":"Invoice + For:","boundingBox":[6.0211,1.0656,7.0357,1.0656,7.0357,1.2121,6.0211,1.2121],"words":[{"text":"Invoice","boundingBox":[6.0211,1.0656,6.6362,1.0656,6.6362,1.2121,6.0211,1.2121],"confidence":1},{"text":"For:","boundingBox":[6.7147,1.0691,7.0357,1.0691,7.0357,1.2121,6.7147,1.2121],"confidence":1}]},{"text":"Address:","boundingBox":[0.8791,1.4825,1.5657,1.4825,1.5657,1.6155,0.8791,1.6155],"words":[{"text":"Address:","boundingBox":[0.8791,1.4825,1.5657,1.4825,1.5657,1.6155,0.8791,1.6155],"confidence":1}]},{"text":"Bilbo + Baggins","boundingBox":[6.0164,1.4503,6.8967,1.4503,6.8967,1.5931,6.0164,1.5931],"words":[{"text":"Bilbo","boundingBox":[6.0164,1.4503,6.3392,1.4503,6.3392,1.5649,6.0164,1.5649],"confidence":1},{"text":"Baggins","boundingBox":[6.396,1.4556,6.8967,1.4556,6.8967,1.5931,6.396,1.5931],"confidence":1}]},{"text":"123 + Hobbit Lane","boundingBox":[6.0165,1.6707,7.1006,1.6707,7.1006,1.7854,6.0165,1.7854],"words":[{"text":"123","boundingBox":[6.0165,1.6772,6.2434,1.6772,6.2434,1.7854,6.0165,1.7854],"confidence":1},{"text":"Hobbit","boundingBox":[6.3033,1.6707,6.7463,1.6707,6.7463,1.7854,6.3033,1.7854],"confidence":1},{"text":"Lane","boundingBox":[6.803,1.6782,7.1006,1.6782,7.1006,1.7854,6.803,1.7854],"confidence":1}]},{"text":"567 + Main St.","boundingBox":[0.8852,1.846,1.713,1.846,1.713,1.9554,0.8852,1.9554],"words":[{"text":"567","boundingBox":[0.8852,1.8472,1.1203,1.8472,1.1203,1.9554,0.8852,1.9554],"confidence":1},{"text":"Main","boundingBox":[1.1777,1.846,1.5022,1.846,1.5022,1.9554,1.1777,1.9554],"confidence":1},{"text":"St.","boundingBox":[1.5558,1.8472,1.713,1.8472,1.713,1.9554,1.5558,1.9554],"confidence":1}]},{"text":"Redmond, + WA","boundingBox":[6.0164,1.891,6.9793,1.891,6.9793,2.0275,6.0164,2.0275],"words":[{"text":"Redmond,","boundingBox":[6.0164,1.891,6.6861,1.891,6.6861,2.0275,6.0164,2.0275],"confidence":1},{"text":"WA","boundingBox":[6.7408,1.8982,6.9793,1.8982,6.9793,2.0044,6.7408,2.0044],"confidence":1}]},{"text":"Redmond, + WA","boundingBox":[0.891,2.061,1.8537,2.061,1.8537,2.1975,0.891,2.1975],"words":[{"text":"Redmond,","boundingBox":[0.891,2.061,1.5605,2.061,1.5605,2.1975,0.891,2.1975],"confidence":1},{"text":"WA","boundingBox":[1.6152,2.0682,1.8537,2.0682,1.8537,2.1744,1.6152,2.1744],"confidence":1}]},{"text":"555-555-5555","boundingBox":[6.0105,2.1187,6.9371,2.1187,6.9371,2.2254,6.0105,2.2254],"words":[{"text":"555-555-5555","boundingBox":[6.0105,2.1187,6.9371,2.1187,6.9371,2.2254,6.0105,2.2254],"confidence":1}]},{"text":"555-555-5555","boundingBox":[0.8852,2.2887,1.8119,2.2887,1.8119,2.3954,0.8852,2.3954],"words":[{"text":"555-555-5555","boundingBox":[0.8852,2.2887,1.8119,2.2887,1.8119,2.3954,0.8852,2.3954],"confidence":1}]},{"text":"Item","boundingBox":[1.0943,3.0018,1.3842,3.0018,1.3842,3.109,1.0943,3.109],"words":[{"text":"Item","boundingBox":[1.0943,3.0018,1.3842,3.0018,1.3842,3.109,1.0943,3.109],"confidence":1}]},{"text":"Quantity","boundingBox":[3.2527,2.9996,3.8367,2.9996,3.8367,3.1371,3.2527,3.1371],"words":[{"text":"Quantity","boundingBox":[3.2527,2.9996,3.8367,2.9996,3.8367,3.1371,3.2527,3.1371],"confidence":1}]},{"text":"Price","boundingBox":[5.423,2.9996,5.7372,2.9996,5.7372,3.109,5.423,3.109],"words":[{"text":"Price","boundingBox":[5.423,2.9996,5.7372,2.9996,5.7372,3.109,5.423,3.109],"confidence":1}]},{"text":"A","boundingBox":[1.0832,3.2118,1.174,3.2118,1.174,3.318,1.0832,3.318],"words":[{"text":"A","boundingBox":[1.0832,3.2118,1.174,3.2118,1.174,3.318,1.0832,3.318],"confidence":1}]},{"text":"1","boundingBox":[3.2589,3.2116,3.3202,3.2116,3.3202,3.3176,3.2589,3.3176],"words":[{"text":"1","boundingBox":[3.2589,3.2116,3.3202,3.2116,3.3202,3.3176,3.2589,3.3176],"confidence":1}]},{"text":"10.99","boundingBox":[5.4232,3.2108,5.7784,3.2108,5.7784,3.319,5.4232,3.319],"words":[{"text":"10.99","boundingBox":[5.4232,3.2108,5.7784,3.2108,5.7784,3.319,5.4232,3.319],"confidence":1}]},{"text":"B","boundingBox":[1.0943,3.4256,1.1637,3.4256,1.1637,3.531,1.0943,3.531],"words":[{"text":"B","boundingBox":[1.0943,3.4256,1.1637,3.4256,1.1637,3.531,1.0943,3.531],"confidence":1}]},{"text":"2","boundingBox":[3.2541,3.4241,3.3199,3.4241,3.3199,3.531,3.2541,3.531],"words":[{"text":"2","boundingBox":[3.2541,3.4241,3.3199,3.4241,3.3199,3.531,3.2541,3.531],"confidence":1}]},{"text":"14.67","boundingBox":[5.4232,3.4241,5.7789,3.4241,5.7789,3.5323,5.4232,3.5323],"words":[{"text":"14.67","boundingBox":[5.4232,3.4241,5.7789,3.4241,5.7789,3.5323,5.4232,3.5323],"confidence":1}]},{"text":"C","boundingBox":[1.0882,3.6343,1.1647,3.6343,1.1647,3.7421,1.0882,3.7421],"words":[{"text":"C","boundingBox":[1.0882,3.6343,1.1647,3.6343,1.1647,3.7421,1.0882,3.7421],"confidence":1}]},{"text":"4","boundingBox":[3.2486,3.6351,3.3244,3.6351,3.3244,3.7413,3.2486,3.7413],"words":[{"text":"4","boundingBox":[3.2486,3.6351,3.3244,3.6351,3.3244,3.7413,3.2486,3.7413],"confidence":1}]},{"text":"15.66","boundingBox":[5.4232,3.6341,5.78,3.6341,5.78,3.7423,5.4232,3.7423],"words":[{"text":"15.66","boundingBox":[5.4232,3.6341,5.78,3.6341,5.78,3.7423,5.4232,3.7423],"confidence":1}]},{"text":"D","boundingBox":[1.0943,3.8456,1.1753,3.8456,1.1753,3.951,1.0943,3.951],"words":[{"text":"D","boundingBox":[1.0943,3.8456,1.1753,3.8456,1.1753,3.951,1.0943,3.951],"confidence":1}]},{"text":"1","boundingBox":[3.2589,3.845,3.3202,3.845,3.3202,3.951,3.2589,3.951],"words":[{"text":"1","boundingBox":[3.2589,3.845,3.3202,3.845,3.3202,3.951,3.2589,3.951],"confidence":1}]},{"text":"12.00","boundingBox":[5.4232,3.8441,5.7809,3.8441,5.7809,3.9523,5.4232,3.9523],"words":[{"text":"12.00","boundingBox":[5.4232,3.8441,5.7809,3.8441,5.7809,3.9523,5.4232,3.9523],"confidence":1}]},{"text":"E","boundingBox":[1.0943,4.0561,1.153,4.0561,1.153,4.1614,1.0943,4.1614],"words":[{"text":"E","boundingBox":[1.0943,4.0561,1.153,4.0561,1.153,4.1614,1.0943,4.1614],"confidence":1}]},{"text":"4","boundingBox":[3.2486,4.0556,3.3244,4.0556,3.3244,4.1617,3.2486,4.1617],"words":[{"text":"4","boundingBox":[3.2486,4.0556,3.3244,4.0556,3.3244,4.1617,3.2486,4.1617],"confidence":1}]},{"text":"10.00","boundingBox":[5.4232,4.0546,5.781,4.0546,5.781,4.1627,5.4232,4.1627],"words":[{"text":"10.00","boundingBox":[5.4232,4.0546,5.781,4.0546,5.781,4.1627,5.4232,4.1627],"confidence":1}]},{"text":"F","boundingBox":[1.0943,4.2661,1.1497,4.2661,1.1497,4.3717,1.0943,4.3717],"words":[{"text":"F","boundingBox":[1.0943,4.2661,1.1497,4.2661,1.1497,4.3717,1.0943,4.3717],"confidence":1}]},{"text":"6","boundingBox":[3.2534,4.2646,3.3226,4.2646,3.3226,4.3727,3.2534,4.3727],"words":[{"text":"6","boundingBox":[3.2534,4.2646,3.3226,4.2646,3.3226,4.3727,3.2534,4.3727],"confidence":1}]},{"text":"12.00","boundingBox":[5.4232,4.2646,5.7809,4.2646,5.7809,4.3727,5.4232,4.3727],"words":[{"text":"12.00","boundingBox":[5.4232,4.2646,5.7809,4.2646,5.7809,4.3727,5.4232,4.3727],"confidence":1}]},{"text":"G","boundingBox":[1.0877,4.4746,1.1735,4.4746,1.1735,4.5827,1.0877,4.5827],"words":[{"text":"G","boundingBox":[1.0877,4.4746,1.1735,4.4746,1.1735,4.5827,1.0877,4.5827],"confidence":1}]},{"text":"8","boundingBox":[3.2514,4.4746,3.3224,4.4746,3.3224,4.5827,3.2514,4.5827],"words":[{"text":"8","boundingBox":[3.2514,4.4746,3.3224,4.4746,3.3224,4.5827,3.2514,4.5827],"confidence":1}]},{"text":"22.00","boundingBox":[5.4184,4.4746,5.781,4.4746,5.781,4.5827,5.4184,4.5827],"words":[{"text":"22.00","boundingBox":[5.4184,4.4746,5.781,4.4746,5.781,4.5827,5.4184,4.5827],"confidence":1}]},{"text":"Subtotal: + 300.00","boundingBox":[5.5075,4.8981,6.632,4.8981,6.632,5.0131,5.5075,5.0131],"words":[{"text":"Subtotal:","boundingBox":[5.5075,4.8981,6.1249,4.8981,6.1249,5.0131,5.5075,5.0131],"confidence":1},{"text":"300.00","boundingBox":[6.1794,4.9042,6.632,4.9042,6.632,5.0131,6.1794,5.0131],"confidence":1}]},{"text":"Tax: + 30.00","boundingBox":[5.5034,5.1245,6.2022,5.1245,6.2022,5.2333,5.5034,5.2333],"words":[{"text":"Tax:","boundingBox":[5.5034,5.1263,5.7812,5.1263,5.7812,5.2333,5.5034,5.2333],"confidence":1},{"text":"30.00","boundingBox":[5.836,5.1245,6.2022,5.1245,6.2022,5.2333,5.836,5.2333],"confidence":1}]},{"text":"Tip: + 100.00","boundingBox":[5.5034,5.3412,6.2587,5.3412,6.2587,5.481,5.5034,5.481],"words":[{"text":"Tip:","boundingBox":[5.5034,5.3412,5.7515,5.3412,5.7515,5.481,5.5034,5.481],"confidence":1},{"text":"100.00","boundingBox":[5.811,5.3445,6.2587,5.3445,6.2587,5.4533,5.811,5.4533],"confidence":1}]},{"text":"Total: + 430.00","boundingBox":[5.5034,5.5583,6.3987,5.5583,6.3987,5.6733,5.5034,5.6733],"words":[{"text":"Total:","boundingBox":[5.5034,5.5583,5.8915,5.5583,5.8915,5.6733,5.5034,5.6733],"confidence":1},{"text":"430.00","boundingBox":[5.942,5.5645,6.3987,5.5645,6.3987,5.6733,5.942,5.6733],"confidence":1}]},{"text":"Signature: + ____ Bilbo Baggins__________","boundingBox":[1.0055,6.6553,3.8342,6.6553,3.8342,6.7981,1.0055,6.7981],"words":[{"text":"Signature:","boundingBox":[1.0055,6.6581,1.6987,6.6581,1.6987,6.7981,1.0055,6.7981],"confidence":1},{"text":"____","boundingBox":[1.747,6.7829,2.0809,6.7829,2.0809,6.7981,1.747,6.7981],"confidence":1},{"text":"Bilbo","boundingBox":[2.0925,6.6553,2.4278,6.6553,2.4278,6.7703,2.0925,6.7703],"confidence":1},{"text":"Baggins__________","boundingBox":[2.4823,6.6581,3.8342,6.6581,3.8342,6.7981,2.4823,6.7981],"confidence":1}]}]},{"page":2,"angle":0,"width":8.4967,"height":10.9967,"unit":"inch","language":"en"},{"page":3,"angle":0,"width":8.5,"height":11,"unit":"inch","language":"en","lines":[{"text":"Company + B Invoice","boundingBox":[0.8861,1.1217,2.3734,1.1217,2.3734,1.2812,0.8861,1.2812],"words":[{"text":"Company","boundingBox":[0.8861,1.1232,1.6203,1.1232,1.6203,1.2812,0.8861,1.2812],"confidence":1},{"text":"B","boundingBox":[1.6836,1.1248,1.764,1.1248,1.764,1.2469,1.6836,1.2469],"confidence":1},{"text":"Invoice","boundingBox":[1.8336,1.1217,2.3734,1.1217,2.3734,1.2485,1.8336,1.2485],"confidence":1}]},{"text":"Invoice + For:","boundingBox":[6.0211,1.0656,7.0357,1.0656,7.0357,1.2121,6.0211,1.2121],"words":[{"text":"Invoice","boundingBox":[6.0211,1.0656,6.6362,1.0656,6.6362,1.2121,6.0211,1.2121],"confidence":1},{"text":"For:","boundingBox":[6.7147,1.0691,7.0357,1.0691,7.0357,1.2121,6.7147,1.2121],"confidence":1}]},{"text":"Address:","boundingBox":[0.8791,1.4825,1.5657,1.4825,1.5657,1.6155,0.8791,1.6155],"words":[{"text":"Address:","boundingBox":[0.8791,1.4825,1.5657,1.4825,1.5657,1.6155,0.8791,1.6155],"confidence":1}]},{"text":"Frodo + Baggins","boundingBox":[6.0164,1.4506,6.9506,1.4506,6.9506,1.5931,6.0164,1.5931],"words":[{"text":"Frodo","boundingBox":[6.0164,1.4506,6.3895,1.4506,6.3895,1.5649,6.0164,1.5649],"confidence":1},{"text":"Baggins","boundingBox":[6.45,1.4556,6.9506,1.4556,6.9506,1.5931,6.45,1.5931],"confidence":1}]},{"text":"123 + Hobbit Lane","boundingBox":[6.0165,1.6707,7.1006,1.6707,7.1006,1.7854,6.0165,1.7854],"words":[{"text":"123","boundingBox":[6.0165,1.6772,6.2434,1.6772,6.2434,1.7854,6.0165,1.7854],"confidence":1},{"text":"Hobbit","boundingBox":[6.3033,1.6707,6.7463,1.6707,6.7463,1.7854,6.3033,1.7854],"confidence":1},{"text":"Lane","boundingBox":[6.803,1.6782,7.1006,1.6782,7.1006,1.7854,6.803,1.7854],"confidence":1}]},{"text":"567 + Main St.","boundingBox":[0.8852,1.846,1.713,1.846,1.713,1.9554,0.8852,1.9554],"words":[{"text":"567","boundingBox":[0.8852,1.8472,1.1203,1.8472,1.1203,1.9554,0.8852,1.9554],"confidence":1},{"text":"Main","boundingBox":[1.1777,1.846,1.5022,1.846,1.5022,1.9554,1.1777,1.9554],"confidence":1},{"text":"St.","boundingBox":[1.5558,1.8472,1.713,1.8472,1.713,1.9554,1.5558,1.9554],"confidence":1}]},{"text":"Redmond, + WA","boundingBox":[6.0164,1.891,6.9793,1.891,6.9793,2.0275,6.0164,2.0275],"words":[{"text":"Redmond,","boundingBox":[6.0164,1.891,6.6861,1.891,6.6861,2.0275,6.0164,2.0275],"confidence":1},{"text":"WA","boundingBox":[6.7408,1.8982,6.9793,1.8982,6.9793,2.0044,6.7408,2.0044],"confidence":1}]},{"text":"Redmond, + WA","boundingBox":[0.891,2.061,1.8537,2.061,1.8537,2.1975,0.891,2.1975],"words":[{"text":"Redmond,","boundingBox":[0.891,2.061,1.5605,2.061,1.5605,2.1975,0.891,2.1975],"confidence":1},{"text":"WA","boundingBox":[1.6152,2.0682,1.8537,2.0682,1.8537,2.1744,1.6152,2.1744],"confidence":1}]},{"text":"555-555-5555","boundingBox":[6.0105,2.1187,6.9371,2.1187,6.9371,2.2254,6.0105,2.2254],"words":[{"text":"555-555-5555","boundingBox":[6.0105,2.1187,6.9371,2.1187,6.9371,2.2254,6.0105,2.2254],"confidence":1}]},{"text":"555-555-5555","boundingBox":[0.8852,2.2887,1.8119,2.2887,1.8119,2.3954,0.8852,2.3954],"words":[{"text":"555-555-5555","boundingBox":[0.8852,2.2887,1.8119,2.2887,1.8119,2.3954,0.8852,2.3954],"confidence":1}]},{"text":"Item","boundingBox":[1.0943,3.0018,1.3842,3.0018,1.3842,3.109,1.0943,3.109],"words":[{"text":"Item","boundingBox":[1.0943,3.0018,1.3842,3.0018,1.3842,3.109,1.0943,3.109],"confidence":1}]},{"text":"Quantity","boundingBox":[3.2527,2.9996,3.8367,2.9996,3.8367,3.1371,3.2527,3.1371],"words":[{"text":"Quantity","boundingBox":[3.2527,2.9996,3.8367,2.9996,3.8367,3.1371,3.2527,3.1371],"confidence":1}]},{"text":"Price","boundingBox":[5.423,2.9996,5.7372,2.9996,5.7372,3.109,5.423,3.109],"words":[{"text":"Price","boundingBox":[5.423,2.9996,5.7372,2.9996,5.7372,3.109,5.423,3.109],"confidence":1}]},{"text":"A","boundingBox":[1.0832,3.2118,1.174,3.2118,1.174,3.318,1.0832,3.318],"words":[{"text":"A","boundingBox":[1.0832,3.2118,1.174,3.2118,1.174,3.318,1.0832,3.318],"confidence":1}]},{"text":"10","boundingBox":[3.2589,3.2108,3.4067,3.2108,3.4067,3.319,3.2589,3.319],"words":[{"text":"10","boundingBox":[3.2589,3.2108,3.4067,3.2108,3.4067,3.319,3.2589,3.319],"confidence":1}]},{"text":"100.99","boundingBox":[5.4232,3.2108,5.8617,3.2108,5.8617,3.319,5.4232,3.319],"words":[{"text":"100.99","boundingBox":[5.4232,3.2108,5.8617,3.2108,5.8617,3.319,5.4232,3.319],"confidence":1}]},{"text":"B","boundingBox":[1.0943,3.4256,1.1637,3.4256,1.1637,3.531,1.0943,3.531],"words":[{"text":"B","boundingBox":[1.0943,3.4256,1.1637,3.4256,1.1637,3.531,1.0943,3.531],"confidence":1}]},{"text":"20","boundingBox":[3.2541,3.4241,3.4067,3.4241,3.4067,3.5323,3.2541,3.5323],"words":[{"text":"20","boundingBox":[3.2541,3.4241,3.4067,3.4241,3.4067,3.5323,3.2541,3.5323],"confidence":1}]},{"text":"140.67","boundingBox":[5.4232,3.4241,5.8622,3.4241,5.8622,3.5323,5.4232,3.5323],"words":[{"text":"140.67","boundingBox":[5.4232,3.4241,5.8622,3.4241,5.8622,3.5323,5.4232,3.5323],"confidence":1}]},{"text":"C","boundingBox":[1.0882,3.6343,1.1647,3.6343,1.1647,3.7421,1.0882,3.7421],"words":[{"text":"C","boundingBox":[1.0882,3.6343,1.1647,3.6343,1.1647,3.7421,1.0882,3.7421],"confidence":1}]},{"text":"40","boundingBox":[3.2486,3.6341,3.4067,3.6341,3.4067,3.7423,3.2486,3.7423],"words":[{"text":"40","boundingBox":[3.2486,3.6341,3.4067,3.6341,3.4067,3.7423,3.2486,3.7423],"confidence":1}]},{"text":"150.66","boundingBox":[5.4232,3.6341,5.8634,3.6341,5.8634,3.7423,5.4232,3.7423],"words":[{"text":"150.66","boundingBox":[5.4232,3.6341,5.8634,3.6341,5.8634,3.7423,5.4232,3.7423],"confidence":1}]},{"text":"D","boundingBox":[1.0943,3.8456,1.1753,3.8456,1.1753,3.951,1.0943,3.951],"words":[{"text":"D","boundingBox":[1.0943,3.8456,1.1753,3.8456,1.1753,3.951,1.0943,3.951],"confidence":1}]},{"text":"10","boundingBox":[3.2589,3.8441,3.4067,3.8441,3.4067,3.9523,3.2589,3.9523],"words":[{"text":"10","boundingBox":[3.2589,3.8441,3.4067,3.8441,3.4067,3.9523,3.2589,3.9523],"confidence":1}]},{"text":"120.00","boundingBox":[5.4232,3.8441,5.8642,3.8441,5.8642,3.9523,5.4232,3.9523],"words":[{"text":"120.00","boundingBox":[5.4232,3.8441,5.8642,3.8441,5.8642,3.9523,5.4232,3.9523],"confidence":1}]},{"text":"E","boundingBox":[1.0943,4.0561,1.153,4.0561,1.153,4.1614,1.0943,4.1614],"words":[{"text":"E","boundingBox":[1.0943,4.0561,1.153,4.0561,1.153,4.1614,1.0943,4.1614],"confidence":1}]},{"text":"40","boundingBox":[3.2486,4.0546,3.4067,4.0546,3.4067,4.1627,3.2486,4.1627],"words":[{"text":"40","boundingBox":[3.2486,4.0546,3.4067,4.0546,3.4067,4.1627,3.2486,4.1627],"confidence":1}]},{"text":"100.00","boundingBox":[5.4232,4.0546,5.8644,4.0546,5.8644,4.1627,5.4232,4.1627],"words":[{"text":"100.00","boundingBox":[5.4232,4.0546,5.8644,4.0546,5.8644,4.1627,5.4232,4.1627],"confidence":1}]},{"text":"F","boundingBox":[1.0943,4.2661,1.1497,4.2661,1.1497,4.3717,1.0943,4.3717],"words":[{"text":"F","boundingBox":[1.0943,4.2661,1.1497,4.2661,1.1497,4.3717,1.0943,4.3717],"confidence":1}]},{"text":"60","boundingBox":[3.2534,4.2646,3.4067,4.2646,3.4067,4.3727,3.2534,4.3727],"words":[{"text":"60","boundingBox":[3.2534,4.2646,3.4067,4.2646,3.4067,4.3727,3.2534,4.3727],"confidence":1}]},{"text":"120.00","boundingBox":[5.4232,4.2646,5.8642,4.2646,5.8642,4.3727,5.4232,4.3727],"words":[{"text":"120.00","boundingBox":[5.4232,4.2646,5.8642,4.2646,5.8642,4.3727,5.4232,4.3727],"confidence":1}]},{"text":"G","boundingBox":[1.0877,4.4746,1.1735,4.4746,1.1735,4.5827,1.0877,4.5827],"words":[{"text":"G","boundingBox":[1.0877,4.4746,1.1735,4.4746,1.1735,4.5827,1.0877,4.5827],"confidence":1}]},{"text":"80","boundingBox":[3.2514,4.4746,3.4067,4.4746,3.4067,4.5827,3.2514,4.5827],"words":[{"text":"80","boundingBox":[3.2514,4.4746,3.4067,4.4746,3.4067,4.5827,3.2514,4.5827],"confidence":1}]},{"text":"220.00","boundingBox":[5.4184,4.4746,5.8644,4.4746,5.8644,4.5827,5.4184,4.5827],"words":[{"text":"220.00","boundingBox":[5.4184,4.4746,5.8644,4.4746,5.8644,4.5827,5.4184,4.5827],"confidence":1}]},{"text":"Subtotal: + 3000.00","boundingBox":[5.5075,4.8981,6.7158,4.8981,6.7158,5.0131,5.5075,5.0131],"words":[{"text":"Subtotal:","boundingBox":[5.5075,4.8981,6.1249,4.8981,6.1249,5.0131,5.5075,5.0131],"confidence":1},{"text":"3000.00","boundingBox":[6.1794,4.9042,6.7158,4.9042,6.7158,5.0131,6.1794,5.0131],"confidence":1}]},{"text":"Tax: + 300.00","boundingBox":[5.5034,5.1245,6.2887,5.1245,6.2887,5.2333,5.5034,5.2333],"words":[{"text":"Tax:","boundingBox":[5.5034,5.1263,5.7812,5.1263,5.7812,5.2333,5.5034,5.2333],"confidence":1},{"text":"300.00","boundingBox":[5.836,5.1245,6.2887,5.1245,6.2887,5.2333,5.836,5.2333],"confidence":1}]},{"text":"Tip: + 1000.00","boundingBox":[5.5034,5.3412,6.3422,5.3412,6.3422,5.481,5.5034,5.481],"words":[{"text":"Tip:","boundingBox":[5.5034,5.3412,5.7515,5.3412,5.7515,5.481,5.5034,5.481],"confidence":1},{"text":"1000.00","boundingBox":[5.811,5.3445,6.3422,5.3445,6.3422,5.4533,5.811,5.4533],"confidence":1}]},{"text":"Total: + 4300.00","boundingBox":[5.5034,5.5583,6.4825,5.5583,6.4825,5.6733,5.5034,5.6733],"words":[{"text":"Total:","boundingBox":[5.5034,5.5583,5.8915,5.5583,5.8915,5.6733,5.5034,5.6733],"confidence":1},{"text":"4300.00","boundingBox":[5.942,5.5645,6.4825,5.5645,6.4825,5.6733,5.942,5.6733],"confidence":1}]},{"text":"Signature: + ____ Frodo Baggins__________","boundingBox":[1.0055,6.6556,3.8842,6.6556,3.8842,6.7981,1.0055,6.7981],"words":[{"text":"Signature:","boundingBox":[1.0055,6.6581,1.6987,6.6581,1.6987,6.7981,1.0055,6.7981],"confidence":1},{"text":"____","boundingBox":[1.747,6.7829,2.0809,6.7829,2.0809,6.7981,1.747,6.7981],"confidence":1},{"text":"Frodo","boundingBox":[2.0925,6.6556,2.4778,6.6556,2.4778,6.7703,2.0925,6.7703],"confidence":1},{"text":"Baggins__________","boundingBox":[2.5325,6.6581,3.8842,6.6581,3.8842,6.7981,2.5325,6.7981],"confidence":1}]}]}],"documentResults":[{"docType":"prebuilt:receipt","pageRange":[1,1],"fields":{"ReceiptType":{"type":"string","valueString":"Itemized","confidence":0.99},"MerchantName":{"type":"string","valueString":"Bilbo + Baggins","text":"Bilbo Baggins","boundingBox":[6.0164,1.4503,6.8967,1.4503,6.8967,1.5931,6.0164,1.5931],"page":1,"confidence":0.987,"elements":["#/readResults/0/lines/3/words/0","#/readResults/0/lines/3/words/1"]},"MerchantAddress":{"type":"string","valueString":"123 + Hobbit Lane 567 Main St. Redmond, WA Redmond, WA","text":"123 Hobbit Lane + 567 Main St. Redmond, WA Redmond, WA","boundingBox":[0.8852,1.6707,7.1006,1.6707,7.1006,2.1975,0.8852,2.1975],"page":1,"confidence":0.99,"elements":["#/readResults/0/lines/4/words/0","#/readResults/0/lines/4/words/1","#/readResults/0/lines/4/words/2","#/readResults/0/lines/5/words/0","#/readResults/0/lines/5/words/1","#/readResults/0/lines/5/words/2","#/readResults/0/lines/6/words/0","#/readResults/0/lines/6/words/1","#/readResults/0/lines/7/words/0","#/readResults/0/lines/7/words/1"]},"MerchantPhoneNumber":{"type":"phoneNumber","valuePhoneNumber":"+15555555555","text":"555-555-5555","boundingBox":[6.0105,2.1187,6.9371,2.1187,6.9371,2.2254,6.0105,2.2254],"page":1,"confidence":0.99,"elements":["#/readResults/0/lines/8/words/0"]},"Items":{"type":"array","valueArray":[{"type":"object","valueObject":{"Name":{"type":"string","valueString":"F","text":"F","boundingBox":[1.0943,4.2661,1.1497,4.2661,1.1497,4.3717,1.0943,4.3717],"page":1,"confidence":0.964,"elements":["#/readResults/0/lines/28/words/0"]},"TotalPrice":{"type":"number","valueNumber":12,"text":"12.00","boundingBox":[5.4232,4.2646,5.7809,4.2646,5.7809,4.3727,5.4232,4.3727],"page":1,"confidence":0.947,"elements":["#/readResults/0/lines/30/words/0"]}}},{"type":"object","valueObject":{"TotalPrice":{"type":"number","valueNumber":22,"text":"22.00","boundingBox":[5.4184,4.4746,5.781,4.4746,5.781,4.5827,5.4184,4.5827],"page":1,"confidence":0.935,"elements":["#/readResults/0/lines/33/words/0"]}}}]},"Subtotal":{"type":"number","valueNumber":300,"text":"300.00","boundingBox":[6.1794,4.9042,6.632,4.9042,6.632,5.0131,6.1794,5.0131],"page":1,"confidence":0.99,"elements":["#/readResults/0/lines/34/words/1"]},"Total":{"type":"number","valueNumber":430,"text":"430.00","boundingBox":[5.942,5.5645,6.3987,5.5645,6.3987,5.6733,5.942,5.6733],"page":1,"confidence":0.985,"elements":["#/readResults/0/lines/37/words/1"]}}},{"docType":"prebuilt:receipt","pageRange":[2,2]},{"docType":"prebuilt:receipt","pageRange":[3,3],"fields":{"ReceiptType":{"type":"string","valueString":"Itemized","confidence":0.99},"MerchantName":{"type":"string","valueString":"Frodo + Baggins","text":"Frodo Baggins","boundingBox":[6.0164,1.4506,6.9506,1.4506,6.9506,1.5931,6.0164,1.5931],"page":3,"confidence":0.984,"elements":["#/readResults/2/lines/3/words/0","#/readResults/2/lines/3/words/1"]},"MerchantAddress":{"type":"string","valueString":"123 + Hobbit Lane 567 Main St. Redmond, WA Redmond, WA","text":"123 Hobbit Lane + 567 Main St. Redmond, WA Redmond, WA","boundingBox":[0.8852,1.6707,7.1006,1.6707,7.1006,2.1975,0.8852,2.1975],"page":3,"confidence":0.99,"elements":["#/readResults/2/lines/4/words/0","#/readResults/2/lines/4/words/1","#/readResults/2/lines/4/words/2","#/readResults/2/lines/5/words/0","#/readResults/2/lines/5/words/1","#/readResults/2/lines/5/words/2","#/readResults/2/lines/6/words/0","#/readResults/2/lines/6/words/1","#/readResults/2/lines/7/words/0","#/readResults/2/lines/7/words/1"]},"MerchantPhoneNumber":{"type":"phoneNumber","valuePhoneNumber":"+15555555555","text":"555-555-5555","boundingBox":[6.0105,2.1187,6.9371,2.1187,6.9371,2.2254,6.0105,2.2254],"page":3,"confidence":0.99,"elements":["#/readResults/2/lines/8/words/0"]},"Items":{"type":"array","valueArray":[{"type":"object","valueObject":{"Name":{"type":"string","valueString":"E","text":"E","boundingBox":[1.0943,4.0561,1.153,4.0561,1.153,4.1614,1.0943,4.1614],"page":3,"confidence":0.935,"elements":["#/readResults/2/lines/25/words/0"]},"Quantity":{"type":"number","text":"40","boundingBox":[3.2486,4.0546,3.4067,4.0546,3.4067,4.1627,3.2486,4.1627],"page":3,"confidence":0,"elements":["#/readResults/2/lines/26/words/0"]},"TotalPrice":{"type":"number","valueNumber":100,"text":"100.00","boundingBox":[5.4232,4.0546,5.8644,4.0546,5.8644,4.1627,5.4232,4.1627],"page":3,"confidence":0.723,"elements":["#/readResults/2/lines/27/words/0"]}}},{"type":"object","valueObject":{"Name":{"type":"string","valueString":"F","text":"F","boundingBox":[1.0943,4.2661,1.1497,4.2661,1.1497,4.3717,1.0943,4.3717],"page":3,"confidence":0.905,"elements":["#/readResults/2/lines/28/words/0"]},"TotalPrice":{"type":"number","valueNumber":120,"text":"120.00","boundingBox":[5.4232,4.2646,5.8642,4.2646,5.8642,4.3727,5.4232,4.3727],"page":3,"confidence":0.967,"elements":["#/readResults/2/lines/30/words/0"]}}},{"type":"object","valueObject":{"Name":{"type":"string","valueString":"G","text":"G","boundingBox":[1.0877,4.4746,1.1735,4.4746,1.1735,4.5827,1.0877,4.5827],"page":3,"confidence":0.896,"elements":["#/readResults/2/lines/31/words/0"]},"TotalPrice":{"type":"number","valueNumber":220,"text":"220.00","boundingBox":[5.4184,4.4746,5.8644,4.4746,5.8644,4.5827,5.4184,4.5827],"page":3,"confidence":0.958,"elements":["#/readResults/2/lines/33/words/0"]}}}]},"Subtotal":{"type":"number","valueNumber":3000,"text":"3000.00","boundingBox":[6.1794,4.9042,6.7158,4.9042,6.7158,5.0131,6.1794,5.0131],"page":3,"confidence":0.99,"elements":["#/readResults/2/lines/34/words/1"]},"Total":{"type":"number","valueNumber":1000,"text":"1000.00","boundingBox":[5.811,5.3445,6.3422,5.3445,6.3422,5.4533,5.811,5.4533],"page":3,"confidence":0.985,"elements":["#/readResults/2/lines/36/words/1"]}}}]}}' + headers: + apim-request-id: + - 8d384873-0417-4a79-b23f-595b234cee69 + content-type: + - application/json; charset=utf-8 + date: + - Mon, 27 Apr 2020 22:13:31 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + transfer-encoding: + - chunked + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '147' + status: + code: 200 + message: OK +version: 1 diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_receipt_from_url.test_receipt_url_jpg.yaml b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_receipt_from_url.test_receipt_url_jpg.yaml index 10810691e1a9..50df11dbce9d 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_receipt_from_url.test_receipt_url_jpg.yaml +++ b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_receipt_from_url.test_receipt_url_jpg.yaml @@ -22,19 +22,19 @@ interactions: string: '' headers: apim-request-id: - - ee64ec07-2f25-4843-bd34-ddeb3de760be + - a966450a-ad9c-4265-90b1-0265542c4a1a content-length: - '0' date: - - Wed, 15 Apr 2020 19:04:15 GMT + - Fri, 24 Apr 2020 18:05:51 GMT operation-location: - - https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/prebuilt/receipt/analyzeResults/ee64ec07-2f25-4843-bd34-ddeb3de760be + - https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/prebuilt/receipt/analyzeResults/a966450a-ad9c-4265-90b1-0265542c4a1a strict-transport-security: - max-age=31536000; includeSubDomains; preload x-content-type-options: - nosniff x-envoy-upstream-service-time: - - '486' + - '1386' status: code: 202 message: Accepted @@ -51,20 +51,20 @@ interactions: - azsdk-python-ai-formrecognizer/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) Python/3.7.3 (Windows-10-10.0.18362-SP0) method: GET - uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/prebuilt/receipt/analyzeResults/ee64ec07-2f25-4843-bd34-ddeb3de760be + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/prebuilt/receipt/analyzeResults/a966450a-ad9c-4265-90b1-0265542c4a1a response: body: - string: '{"status":"succeeded","createdDateTime":"2020-04-15T19:04:16Z","lastUpdatedDateTime":"2020-04-15T19:04:18Z","analyzeResult":{"version":"2.0.0","readResults":[{"page":1,"angle":0.6893,"width":1688,"height":3000,"unit":"pixel","language":"en"}],"documentResults":[{"docType":"prebuilt:receipt","pageRange":[1,1],"fields":{"ReceiptType":{"type":"string","valueString":"Itemized","confidence":0.692},"MerchantName":{"type":"string","valueString":"Contoso + string: '{"status":"succeeded","createdDateTime":"2020-04-24T18:05:51Z","lastUpdatedDateTime":"2020-04-24T18:05:55Z","analyzeResult":{"version":"2.0.0","readResults":[{"page":1,"angle":0.6893,"width":1688,"height":3000,"unit":"pixel","language":"en"}],"documentResults":[{"docType":"prebuilt:receipt","pageRange":[1,1],"fields":{"ReceiptType":{"type":"string","valueString":"Itemized","confidence":0.692},"MerchantName":{"type":"string","valueString":"Contoso Contoso","text":"Contoso Contoso","boundingBox":[378.2,292.4,1117.7,468.3,1035.7,812.7,296.3,636.8],"page":1,"confidence":0.613},"MerchantAddress":{"type":"string","valueString":"123 Main Street Redmond, WA 98052","text":"123 Main Street Redmond, WA 98052","boundingBox":[302,675.8,848.1,793.7,809.9,970.4,263.9,852.5],"page":1,"confidence":0.99},"MerchantPhoneNumber":{"type":"phoneNumber","valuePhoneNumber":"+19876543210","text":"987-654-3210","boundingBox":[278,1004,656.3,1054.7,646.8,1125.3,268.5,1074.7],"page":1,"confidence":0.99},"TransactionDate":{"type":"date","valueDate":"2019-06-10","text":"6/10/2019","boundingBox":[265.1,1228.4,525,1247,518.9,1332.1,259,1313.5],"page":1,"confidence":0.99},"TransactionTime":{"type":"time","valueTime":"13:59:00","text":"13:59","boundingBox":[541,1248,677.3,1261.5,668.9,1346.5,532.6,1333],"page":1,"confidence":0.977},"Items":{"type":"array","valueArray":[{"type":"object","valueObject":{"Quantity":{"type":"number","text":"1","boundingBox":[245.1,1581.5,300.9,1585.1,295,1676,239.2,1672.4],"page":1,"confidence":0.92},"Name":{"type":"string","valueString":"Cappuccino","text":"Cappuccino","boundingBox":[322,1586,654.2,1601.1,650,1693,317.8,1678],"page":1,"confidence":0.923},"TotalPrice":{"type":"number","valueNumber":2.2,"text":"$2.20","boundingBox":[1107.7,1584,1263,1574,1268.3,1656,1113,1666],"page":1,"confidence":0.918}}},{"type":"object","valueObject":{"Quantity":{"type":"number","text":"1","boundingBox":[232,1834,286.6,1835,285,1921,230.4,1920],"page":1,"confidence":0.858},"Name":{"type":"string","valueString":"BACON & EGGS","text":"BACON & EGGS","boundingBox":[308,1836,746,1841.4,745,1925.4,307,1920],"page":1,"confidence":0.916},"TotalPrice":{"type":"number","text":"$9.5","boundingBox":[1133.9,1955,1257,1952,1259.1,2036,1136,2039],"page":1,"confidence":0.916}}}]},"Subtotal":{"type":"number","valueNumber":11.7,"text":"11.70","boundingBox":[1146,2221,1297.3,2223,1296,2319,1144.7,2317],"page":1,"confidence":0.955},"Tax":{"type":"number","valueNumber":1.17,"text":"1.17","boundingBox":[1190,2359,1304,2359,1304,2456,1190,2456],"page":1,"confidence":0.979},"Tip":{"type":"number","valueNumber":1.63,"text":"1.63","boundingBox":[1094,2479,1267.7,2485,1264,2591,1090.3,2585],"page":1,"confidence":0.941},"Total":{"type":"number","valueNumber":14.5,"text":"$14.50","boundingBox":[1034.2,2617,1387.5,2638.2,1380,2763,1026.7,2741.8],"page":1,"confidence":0.985}}}]}}' headers: apim-request-id: - - efc34fb1-47b4-4807-b0ed-bb09847b1be8 + - 6951d3bd-e70d-416a-b231-a7cbff7b7245 content-type: - application/json; charset=utf-8 date: - - Wed, 15 Apr 2020 19:04:21 GMT + - Fri, 24 Apr 2020 18:05:56 GMT strict-transport-security: - max-age=31536000; includeSubDomains; preload transfer-encoding: @@ -72,7 +72,7 @@ interactions: x-content-type-options: - nosniff x-envoy-upstream-service-time: - - '68' + - '211' status: code: 200 message: OK diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_receipt_from_url_async.test_receipt_multipage_transform_url.yaml b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_receipt_from_url_async.test_receipt_multipage_transform_url.yaml new file mode 100644 index 000000000000..8044a7cc5457 --- /dev/null +++ b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_receipt_from_url_async.test_receipt_multipage_transform_url.yaml @@ -0,0 +1,105 @@ +interactions: +- request: + body: '{"source": "https://raw.githubusercontent.com/Azure/azure-sdk-for-python/master/sdk/formrecognizer/azure-ai-formrecognizer/tests/sample_forms/training_multipage/multipage_invoice1.pdf"}' + headers: + Content-Length: + - '116' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/prebuilt/receipt/analyze?includeTextDetails=true + response: + body: + string: '' + headers: + apim-request-id: 9bbf0475-2457-47ee-b386-40938221facc + content-length: '0' + date: Mon, 27 Apr 2020 22:24:52 GMT + operation-location: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/prebuilt/receipt/analyzeResults/9bbf0475-2457-47ee-b386-40938221facc + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '1096' + status: + code: 202 + message: Accepted + url: https://westus.api.cognitive.microsoft.com//formrecognizer/v2.0-preview/prebuilt/receipt/analyze?includeTextDetails=true +- request: + body: null + headers: + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/prebuilt/receipt/analyzeResults/9bbf0475-2457-47ee-b386-40938221facc + response: + body: + string: '{"status":"running","createdDateTime":"2020-04-27T22:24:52Z","lastUpdatedDateTime":"2020-04-27T22:24:53Z"}' + headers: + apim-request-id: c93549b9-00f1-4ac1-a629-98c8e651961c + content-type: application/json; charset=utf-8 + date: Mon, 27 Apr 2020 22:24:57 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + transfer-encoding: chunked + x-content-type-options: nosniff + x-envoy-upstream-service-time: '56' + status: + code: 200 + message: OK + url: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/prebuilt/receipt/analyzeResults/9bbf0475-2457-47ee-b386-40938221facc +- request: + body: null + headers: + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/prebuilt/receipt/analyzeResults/9bbf0475-2457-47ee-b386-40938221facc + response: + body: + string: '{"status":"succeeded","createdDateTime":"2020-04-27T22:24:52Z","lastUpdatedDateTime":"2020-04-27T22:25:02Z","analyzeResult":{"version":"2.0.0","readResults":[{"page":1,"angle":0,"width":8.5,"height":11,"unit":"inch","language":"en","lines":[{"text":"Company + A Invoice","boundingBox":[0.8861,1.1217,2.3783,1.1217,2.3783,1.2812,0.8861,1.2812],"words":[{"text":"Company","boundingBox":[0.8861,1.1232,1.6203,1.1232,1.6203,1.2812,0.8861,1.2812],"confidence":1},{"text":"A","boundingBox":[1.6696,1.1242,1.7749,1.1242,1.7749,1.2473,1.6696,1.2473],"confidence":1},{"text":"Invoice","boundingBox":[1.8389,1.1217,2.3783,1.1217,2.3783,1.2485,1.8389,1.2485],"confidence":1}]},{"text":"Invoice + For:","boundingBox":[6.0211,1.0656,7.0357,1.0656,7.0357,1.2121,6.0211,1.2121],"words":[{"text":"Invoice","boundingBox":[6.0211,1.0656,6.6362,1.0656,6.6362,1.2121,6.0211,1.2121],"confidence":1},{"text":"For:","boundingBox":[6.7147,1.0691,7.0357,1.0691,7.0357,1.2121,6.7147,1.2121],"confidence":1}]},{"text":"Address:","boundingBox":[0.8791,1.4825,1.5657,1.4825,1.5657,1.6155,0.8791,1.6155],"words":[{"text":"Address:","boundingBox":[0.8791,1.4825,1.5657,1.4825,1.5657,1.6155,0.8791,1.6155],"confidence":1}]},{"text":"Bilbo + Baggins","boundingBox":[6.0164,1.4503,6.8967,1.4503,6.8967,1.5931,6.0164,1.5931],"words":[{"text":"Bilbo","boundingBox":[6.0164,1.4503,6.3392,1.4503,6.3392,1.5649,6.0164,1.5649],"confidence":1},{"text":"Baggins","boundingBox":[6.396,1.4556,6.8967,1.4556,6.8967,1.5931,6.396,1.5931],"confidence":1}]},{"text":"123 + Hobbit Lane","boundingBox":[6.0165,1.6707,7.1006,1.6707,7.1006,1.7854,6.0165,1.7854],"words":[{"text":"123","boundingBox":[6.0165,1.6772,6.2434,1.6772,6.2434,1.7854,6.0165,1.7854],"confidence":1},{"text":"Hobbit","boundingBox":[6.3033,1.6707,6.7463,1.6707,6.7463,1.7854,6.3033,1.7854],"confidence":1},{"text":"Lane","boundingBox":[6.803,1.6782,7.1006,1.6782,7.1006,1.7854,6.803,1.7854],"confidence":1}]},{"text":"567 + Main St.","boundingBox":[0.8852,1.846,1.713,1.846,1.713,1.9554,0.8852,1.9554],"words":[{"text":"567","boundingBox":[0.8852,1.8472,1.1203,1.8472,1.1203,1.9554,0.8852,1.9554],"confidence":1},{"text":"Main","boundingBox":[1.1777,1.846,1.5022,1.846,1.5022,1.9554,1.1777,1.9554],"confidence":1},{"text":"St.","boundingBox":[1.5558,1.8472,1.713,1.8472,1.713,1.9554,1.5558,1.9554],"confidence":1}]},{"text":"Redmond, + WA","boundingBox":[6.0164,1.891,6.9793,1.891,6.9793,2.0275,6.0164,2.0275],"words":[{"text":"Redmond,","boundingBox":[6.0164,1.891,6.6861,1.891,6.6861,2.0275,6.0164,2.0275],"confidence":1},{"text":"WA","boundingBox":[6.7408,1.8982,6.9793,1.8982,6.9793,2.0044,6.7408,2.0044],"confidence":1}]},{"text":"Redmond, + WA","boundingBox":[0.891,2.061,1.8537,2.061,1.8537,2.1975,0.891,2.1975],"words":[{"text":"Redmond,","boundingBox":[0.891,2.061,1.5605,2.061,1.5605,2.1975,0.891,2.1975],"confidence":1},{"text":"WA","boundingBox":[1.6152,2.0682,1.8537,2.0682,1.8537,2.1744,1.6152,2.1744],"confidence":1}]},{"text":"555-555-5555","boundingBox":[6.0105,2.1187,6.9371,2.1187,6.9371,2.2254,6.0105,2.2254],"words":[{"text":"555-555-5555","boundingBox":[6.0105,2.1187,6.9371,2.1187,6.9371,2.2254,6.0105,2.2254],"confidence":1}]},{"text":"555-555-5555","boundingBox":[0.8852,2.2887,1.8119,2.2887,1.8119,2.3954,0.8852,2.3954],"words":[{"text":"555-555-5555","boundingBox":[0.8852,2.2887,1.8119,2.2887,1.8119,2.3954,0.8852,2.3954],"confidence":1}]},{"text":"Item","boundingBox":[1.0943,3.0018,1.3842,3.0018,1.3842,3.109,1.0943,3.109],"words":[{"text":"Item","boundingBox":[1.0943,3.0018,1.3842,3.0018,1.3842,3.109,1.0943,3.109],"confidence":1}]},{"text":"Quantity","boundingBox":[3.2527,2.9996,3.8367,2.9996,3.8367,3.1371,3.2527,3.1371],"words":[{"text":"Quantity","boundingBox":[3.2527,2.9996,3.8367,2.9996,3.8367,3.1371,3.2527,3.1371],"confidence":1}]},{"text":"Price","boundingBox":[5.423,2.9996,5.7372,2.9996,5.7372,3.109,5.423,3.109],"words":[{"text":"Price","boundingBox":[5.423,2.9996,5.7372,2.9996,5.7372,3.109,5.423,3.109],"confidence":1}]},{"text":"A","boundingBox":[1.0832,3.2118,1.174,3.2118,1.174,3.318,1.0832,3.318],"words":[{"text":"A","boundingBox":[1.0832,3.2118,1.174,3.2118,1.174,3.318,1.0832,3.318],"confidence":1}]},{"text":"1","boundingBox":[3.2589,3.2116,3.3202,3.2116,3.3202,3.3176,3.2589,3.3176],"words":[{"text":"1","boundingBox":[3.2589,3.2116,3.3202,3.2116,3.3202,3.3176,3.2589,3.3176],"confidence":1}]},{"text":"10.99","boundingBox":[5.4232,3.2108,5.7784,3.2108,5.7784,3.319,5.4232,3.319],"words":[{"text":"10.99","boundingBox":[5.4232,3.2108,5.7784,3.2108,5.7784,3.319,5.4232,3.319],"confidence":1}]},{"text":"B","boundingBox":[1.0943,3.4256,1.1637,3.4256,1.1637,3.531,1.0943,3.531],"words":[{"text":"B","boundingBox":[1.0943,3.4256,1.1637,3.4256,1.1637,3.531,1.0943,3.531],"confidence":1}]},{"text":"2","boundingBox":[3.2541,3.4241,3.3199,3.4241,3.3199,3.531,3.2541,3.531],"words":[{"text":"2","boundingBox":[3.2541,3.4241,3.3199,3.4241,3.3199,3.531,3.2541,3.531],"confidence":1}]},{"text":"14.67","boundingBox":[5.4232,3.4241,5.7789,3.4241,5.7789,3.5323,5.4232,3.5323],"words":[{"text":"14.67","boundingBox":[5.4232,3.4241,5.7789,3.4241,5.7789,3.5323,5.4232,3.5323],"confidence":1}]},{"text":"C","boundingBox":[1.0882,3.6343,1.1647,3.6343,1.1647,3.7421,1.0882,3.7421],"words":[{"text":"C","boundingBox":[1.0882,3.6343,1.1647,3.6343,1.1647,3.7421,1.0882,3.7421],"confidence":1}]},{"text":"4","boundingBox":[3.2486,3.6351,3.3244,3.6351,3.3244,3.7413,3.2486,3.7413],"words":[{"text":"4","boundingBox":[3.2486,3.6351,3.3244,3.6351,3.3244,3.7413,3.2486,3.7413],"confidence":1}]},{"text":"15.66","boundingBox":[5.4232,3.6341,5.78,3.6341,5.78,3.7423,5.4232,3.7423],"words":[{"text":"15.66","boundingBox":[5.4232,3.6341,5.78,3.6341,5.78,3.7423,5.4232,3.7423],"confidence":1}]},{"text":"D","boundingBox":[1.0943,3.8456,1.1753,3.8456,1.1753,3.951,1.0943,3.951],"words":[{"text":"D","boundingBox":[1.0943,3.8456,1.1753,3.8456,1.1753,3.951,1.0943,3.951],"confidence":1}]},{"text":"1","boundingBox":[3.2589,3.845,3.3202,3.845,3.3202,3.951,3.2589,3.951],"words":[{"text":"1","boundingBox":[3.2589,3.845,3.3202,3.845,3.3202,3.951,3.2589,3.951],"confidence":1}]},{"text":"12.00","boundingBox":[5.4232,3.8441,5.7809,3.8441,5.7809,3.9523,5.4232,3.9523],"words":[{"text":"12.00","boundingBox":[5.4232,3.8441,5.7809,3.8441,5.7809,3.9523,5.4232,3.9523],"confidence":1}]},{"text":"E","boundingBox":[1.0943,4.0561,1.153,4.0561,1.153,4.1614,1.0943,4.1614],"words":[{"text":"E","boundingBox":[1.0943,4.0561,1.153,4.0561,1.153,4.1614,1.0943,4.1614],"confidence":1}]},{"text":"4","boundingBox":[3.2486,4.0556,3.3244,4.0556,3.3244,4.1617,3.2486,4.1617],"words":[{"text":"4","boundingBox":[3.2486,4.0556,3.3244,4.0556,3.3244,4.1617,3.2486,4.1617],"confidence":1}]},{"text":"10.00","boundingBox":[5.4232,4.0546,5.781,4.0546,5.781,4.1627,5.4232,4.1627],"words":[{"text":"10.00","boundingBox":[5.4232,4.0546,5.781,4.0546,5.781,4.1627,5.4232,4.1627],"confidence":1}]},{"text":"F","boundingBox":[1.0943,4.2661,1.1497,4.2661,1.1497,4.3717,1.0943,4.3717],"words":[{"text":"F","boundingBox":[1.0943,4.2661,1.1497,4.2661,1.1497,4.3717,1.0943,4.3717],"confidence":1}]},{"text":"6","boundingBox":[3.2534,4.2646,3.3226,4.2646,3.3226,4.3727,3.2534,4.3727],"words":[{"text":"6","boundingBox":[3.2534,4.2646,3.3226,4.2646,3.3226,4.3727,3.2534,4.3727],"confidence":1}]},{"text":"12.00","boundingBox":[5.4232,4.2646,5.7809,4.2646,5.7809,4.3727,5.4232,4.3727],"words":[{"text":"12.00","boundingBox":[5.4232,4.2646,5.7809,4.2646,5.7809,4.3727,5.4232,4.3727],"confidence":1}]},{"text":"G","boundingBox":[1.0877,4.4746,1.1735,4.4746,1.1735,4.5827,1.0877,4.5827],"words":[{"text":"G","boundingBox":[1.0877,4.4746,1.1735,4.4746,1.1735,4.5827,1.0877,4.5827],"confidence":1}]},{"text":"8","boundingBox":[3.2514,4.4746,3.3224,4.4746,3.3224,4.5827,3.2514,4.5827],"words":[{"text":"8","boundingBox":[3.2514,4.4746,3.3224,4.4746,3.3224,4.5827,3.2514,4.5827],"confidence":1}]},{"text":"22.00","boundingBox":[5.4184,4.4746,5.781,4.4746,5.781,4.5827,5.4184,4.5827],"words":[{"text":"22.00","boundingBox":[5.4184,4.4746,5.781,4.4746,5.781,4.5827,5.4184,4.5827],"confidence":1}]},{"text":"Subtotal: + 300.00","boundingBox":[5.5075,4.8981,6.632,4.8981,6.632,5.0131,5.5075,5.0131],"words":[{"text":"Subtotal:","boundingBox":[5.5075,4.8981,6.1249,4.8981,6.1249,5.0131,5.5075,5.0131],"confidence":1},{"text":"300.00","boundingBox":[6.1794,4.9042,6.632,4.9042,6.632,5.0131,6.1794,5.0131],"confidence":1}]},{"text":"Tax: + 30.00","boundingBox":[5.5034,5.1245,6.2022,5.1245,6.2022,5.2333,5.5034,5.2333],"words":[{"text":"Tax:","boundingBox":[5.5034,5.1263,5.7812,5.1263,5.7812,5.2333,5.5034,5.2333],"confidence":1},{"text":"30.00","boundingBox":[5.836,5.1245,6.2022,5.1245,6.2022,5.2333,5.836,5.2333],"confidence":1}]},{"text":"Tip: + 100.00","boundingBox":[5.5034,5.3412,6.2587,5.3412,6.2587,5.481,5.5034,5.481],"words":[{"text":"Tip:","boundingBox":[5.5034,5.3412,5.7515,5.3412,5.7515,5.481,5.5034,5.481],"confidence":1},{"text":"100.00","boundingBox":[5.811,5.3445,6.2587,5.3445,6.2587,5.4533,5.811,5.4533],"confidence":1}]},{"text":"Total: + 430.00","boundingBox":[5.5034,5.5583,6.3987,5.5583,6.3987,5.6733,5.5034,5.6733],"words":[{"text":"Total:","boundingBox":[5.5034,5.5583,5.8915,5.5583,5.8915,5.6733,5.5034,5.6733],"confidence":1},{"text":"430.00","boundingBox":[5.942,5.5645,6.3987,5.5645,6.3987,5.6733,5.942,5.6733],"confidence":1}]},{"text":"Signature: + ____ Bilbo Baggins__________","boundingBox":[1.0055,6.6553,3.8342,6.6553,3.8342,6.7981,1.0055,6.7981],"words":[{"text":"Signature:","boundingBox":[1.0055,6.6581,1.6987,6.6581,1.6987,6.7981,1.0055,6.7981],"confidence":1},{"text":"____","boundingBox":[1.747,6.7829,2.0809,6.7829,2.0809,6.7981,1.747,6.7981],"confidence":1},{"text":"Bilbo","boundingBox":[2.0925,6.6553,2.4278,6.6553,2.4278,6.7703,2.0925,6.7703],"confidence":1},{"text":"Baggins__________","boundingBox":[2.4823,6.6581,3.8342,6.6581,3.8342,6.7981,2.4823,6.7981],"confidence":1}]}]},{"page":2,"angle":0,"width":8.4967,"height":10.9967,"unit":"inch","language":"en"},{"page":3,"angle":0,"width":8.5,"height":11,"unit":"inch","language":"en","lines":[{"text":"Company + B Invoice","boundingBox":[0.8861,1.1217,2.3734,1.1217,2.3734,1.2812,0.8861,1.2812],"words":[{"text":"Company","boundingBox":[0.8861,1.1232,1.6203,1.1232,1.6203,1.2812,0.8861,1.2812],"confidence":1},{"text":"B","boundingBox":[1.6836,1.1248,1.764,1.1248,1.764,1.2469,1.6836,1.2469],"confidence":1},{"text":"Invoice","boundingBox":[1.8336,1.1217,2.3734,1.1217,2.3734,1.2485,1.8336,1.2485],"confidence":1}]},{"text":"Invoice + For:","boundingBox":[6.0211,1.0656,7.0357,1.0656,7.0357,1.2121,6.0211,1.2121],"words":[{"text":"Invoice","boundingBox":[6.0211,1.0656,6.6362,1.0656,6.6362,1.2121,6.0211,1.2121],"confidence":1},{"text":"For:","boundingBox":[6.7147,1.0691,7.0357,1.0691,7.0357,1.2121,6.7147,1.2121],"confidence":1}]},{"text":"Address:","boundingBox":[0.8791,1.4825,1.5657,1.4825,1.5657,1.6155,0.8791,1.6155],"words":[{"text":"Address:","boundingBox":[0.8791,1.4825,1.5657,1.4825,1.5657,1.6155,0.8791,1.6155],"confidence":1}]},{"text":"Frodo + Baggins","boundingBox":[6.0164,1.4506,6.9506,1.4506,6.9506,1.5931,6.0164,1.5931],"words":[{"text":"Frodo","boundingBox":[6.0164,1.4506,6.3895,1.4506,6.3895,1.5649,6.0164,1.5649],"confidence":1},{"text":"Baggins","boundingBox":[6.45,1.4556,6.9506,1.4556,6.9506,1.5931,6.45,1.5931],"confidence":1}]},{"text":"123 + Hobbit Lane","boundingBox":[6.0165,1.6707,7.1006,1.6707,7.1006,1.7854,6.0165,1.7854],"words":[{"text":"123","boundingBox":[6.0165,1.6772,6.2434,1.6772,6.2434,1.7854,6.0165,1.7854],"confidence":1},{"text":"Hobbit","boundingBox":[6.3033,1.6707,6.7463,1.6707,6.7463,1.7854,6.3033,1.7854],"confidence":1},{"text":"Lane","boundingBox":[6.803,1.6782,7.1006,1.6782,7.1006,1.7854,6.803,1.7854],"confidence":1}]},{"text":"567 + Main St.","boundingBox":[0.8852,1.846,1.713,1.846,1.713,1.9554,0.8852,1.9554],"words":[{"text":"567","boundingBox":[0.8852,1.8472,1.1203,1.8472,1.1203,1.9554,0.8852,1.9554],"confidence":1},{"text":"Main","boundingBox":[1.1777,1.846,1.5022,1.846,1.5022,1.9554,1.1777,1.9554],"confidence":1},{"text":"St.","boundingBox":[1.5558,1.8472,1.713,1.8472,1.713,1.9554,1.5558,1.9554],"confidence":1}]},{"text":"Redmond, + WA","boundingBox":[6.0164,1.891,6.9793,1.891,6.9793,2.0275,6.0164,2.0275],"words":[{"text":"Redmond,","boundingBox":[6.0164,1.891,6.6861,1.891,6.6861,2.0275,6.0164,2.0275],"confidence":1},{"text":"WA","boundingBox":[6.7408,1.8982,6.9793,1.8982,6.9793,2.0044,6.7408,2.0044],"confidence":1}]},{"text":"Redmond, + WA","boundingBox":[0.891,2.061,1.8537,2.061,1.8537,2.1975,0.891,2.1975],"words":[{"text":"Redmond,","boundingBox":[0.891,2.061,1.5605,2.061,1.5605,2.1975,0.891,2.1975],"confidence":1},{"text":"WA","boundingBox":[1.6152,2.0682,1.8537,2.0682,1.8537,2.1744,1.6152,2.1744],"confidence":1}]},{"text":"555-555-5555","boundingBox":[6.0105,2.1187,6.9371,2.1187,6.9371,2.2254,6.0105,2.2254],"words":[{"text":"555-555-5555","boundingBox":[6.0105,2.1187,6.9371,2.1187,6.9371,2.2254,6.0105,2.2254],"confidence":1}]},{"text":"555-555-5555","boundingBox":[0.8852,2.2887,1.8119,2.2887,1.8119,2.3954,0.8852,2.3954],"words":[{"text":"555-555-5555","boundingBox":[0.8852,2.2887,1.8119,2.2887,1.8119,2.3954,0.8852,2.3954],"confidence":1}]},{"text":"Item","boundingBox":[1.0943,3.0018,1.3842,3.0018,1.3842,3.109,1.0943,3.109],"words":[{"text":"Item","boundingBox":[1.0943,3.0018,1.3842,3.0018,1.3842,3.109,1.0943,3.109],"confidence":1}]},{"text":"Quantity","boundingBox":[3.2527,2.9996,3.8367,2.9996,3.8367,3.1371,3.2527,3.1371],"words":[{"text":"Quantity","boundingBox":[3.2527,2.9996,3.8367,2.9996,3.8367,3.1371,3.2527,3.1371],"confidence":1}]},{"text":"Price","boundingBox":[5.423,2.9996,5.7372,2.9996,5.7372,3.109,5.423,3.109],"words":[{"text":"Price","boundingBox":[5.423,2.9996,5.7372,2.9996,5.7372,3.109,5.423,3.109],"confidence":1}]},{"text":"A","boundingBox":[1.0832,3.2118,1.174,3.2118,1.174,3.318,1.0832,3.318],"words":[{"text":"A","boundingBox":[1.0832,3.2118,1.174,3.2118,1.174,3.318,1.0832,3.318],"confidence":1}]},{"text":"10","boundingBox":[3.2589,3.2108,3.4067,3.2108,3.4067,3.319,3.2589,3.319],"words":[{"text":"10","boundingBox":[3.2589,3.2108,3.4067,3.2108,3.4067,3.319,3.2589,3.319],"confidence":1}]},{"text":"100.99","boundingBox":[5.4232,3.2108,5.8617,3.2108,5.8617,3.319,5.4232,3.319],"words":[{"text":"100.99","boundingBox":[5.4232,3.2108,5.8617,3.2108,5.8617,3.319,5.4232,3.319],"confidence":1}]},{"text":"B","boundingBox":[1.0943,3.4256,1.1637,3.4256,1.1637,3.531,1.0943,3.531],"words":[{"text":"B","boundingBox":[1.0943,3.4256,1.1637,3.4256,1.1637,3.531,1.0943,3.531],"confidence":1}]},{"text":"20","boundingBox":[3.2541,3.4241,3.4067,3.4241,3.4067,3.5323,3.2541,3.5323],"words":[{"text":"20","boundingBox":[3.2541,3.4241,3.4067,3.4241,3.4067,3.5323,3.2541,3.5323],"confidence":1}]},{"text":"140.67","boundingBox":[5.4232,3.4241,5.8622,3.4241,5.8622,3.5323,5.4232,3.5323],"words":[{"text":"140.67","boundingBox":[5.4232,3.4241,5.8622,3.4241,5.8622,3.5323,5.4232,3.5323],"confidence":1}]},{"text":"C","boundingBox":[1.0882,3.6343,1.1647,3.6343,1.1647,3.7421,1.0882,3.7421],"words":[{"text":"C","boundingBox":[1.0882,3.6343,1.1647,3.6343,1.1647,3.7421,1.0882,3.7421],"confidence":1}]},{"text":"40","boundingBox":[3.2486,3.6341,3.4067,3.6341,3.4067,3.7423,3.2486,3.7423],"words":[{"text":"40","boundingBox":[3.2486,3.6341,3.4067,3.6341,3.4067,3.7423,3.2486,3.7423],"confidence":1}]},{"text":"150.66","boundingBox":[5.4232,3.6341,5.8634,3.6341,5.8634,3.7423,5.4232,3.7423],"words":[{"text":"150.66","boundingBox":[5.4232,3.6341,5.8634,3.6341,5.8634,3.7423,5.4232,3.7423],"confidence":1}]},{"text":"D","boundingBox":[1.0943,3.8456,1.1753,3.8456,1.1753,3.951,1.0943,3.951],"words":[{"text":"D","boundingBox":[1.0943,3.8456,1.1753,3.8456,1.1753,3.951,1.0943,3.951],"confidence":1}]},{"text":"10","boundingBox":[3.2589,3.8441,3.4067,3.8441,3.4067,3.9523,3.2589,3.9523],"words":[{"text":"10","boundingBox":[3.2589,3.8441,3.4067,3.8441,3.4067,3.9523,3.2589,3.9523],"confidence":1}]},{"text":"120.00","boundingBox":[5.4232,3.8441,5.8642,3.8441,5.8642,3.9523,5.4232,3.9523],"words":[{"text":"120.00","boundingBox":[5.4232,3.8441,5.8642,3.8441,5.8642,3.9523,5.4232,3.9523],"confidence":1}]},{"text":"E","boundingBox":[1.0943,4.0561,1.153,4.0561,1.153,4.1614,1.0943,4.1614],"words":[{"text":"E","boundingBox":[1.0943,4.0561,1.153,4.0561,1.153,4.1614,1.0943,4.1614],"confidence":1}]},{"text":"40","boundingBox":[3.2486,4.0546,3.4067,4.0546,3.4067,4.1627,3.2486,4.1627],"words":[{"text":"40","boundingBox":[3.2486,4.0546,3.4067,4.0546,3.4067,4.1627,3.2486,4.1627],"confidence":1}]},{"text":"100.00","boundingBox":[5.4232,4.0546,5.8644,4.0546,5.8644,4.1627,5.4232,4.1627],"words":[{"text":"100.00","boundingBox":[5.4232,4.0546,5.8644,4.0546,5.8644,4.1627,5.4232,4.1627],"confidence":1}]},{"text":"F","boundingBox":[1.0943,4.2661,1.1497,4.2661,1.1497,4.3717,1.0943,4.3717],"words":[{"text":"F","boundingBox":[1.0943,4.2661,1.1497,4.2661,1.1497,4.3717,1.0943,4.3717],"confidence":1}]},{"text":"60","boundingBox":[3.2534,4.2646,3.4067,4.2646,3.4067,4.3727,3.2534,4.3727],"words":[{"text":"60","boundingBox":[3.2534,4.2646,3.4067,4.2646,3.4067,4.3727,3.2534,4.3727],"confidence":1}]},{"text":"120.00","boundingBox":[5.4232,4.2646,5.8642,4.2646,5.8642,4.3727,5.4232,4.3727],"words":[{"text":"120.00","boundingBox":[5.4232,4.2646,5.8642,4.2646,5.8642,4.3727,5.4232,4.3727],"confidence":1}]},{"text":"G","boundingBox":[1.0877,4.4746,1.1735,4.4746,1.1735,4.5827,1.0877,4.5827],"words":[{"text":"G","boundingBox":[1.0877,4.4746,1.1735,4.4746,1.1735,4.5827,1.0877,4.5827],"confidence":1}]},{"text":"80","boundingBox":[3.2514,4.4746,3.4067,4.4746,3.4067,4.5827,3.2514,4.5827],"words":[{"text":"80","boundingBox":[3.2514,4.4746,3.4067,4.4746,3.4067,4.5827,3.2514,4.5827],"confidence":1}]},{"text":"220.00","boundingBox":[5.4184,4.4746,5.8644,4.4746,5.8644,4.5827,5.4184,4.5827],"words":[{"text":"220.00","boundingBox":[5.4184,4.4746,5.8644,4.4746,5.8644,4.5827,5.4184,4.5827],"confidence":1}]},{"text":"Subtotal: + 3000.00","boundingBox":[5.5075,4.8981,6.7158,4.8981,6.7158,5.0131,5.5075,5.0131],"words":[{"text":"Subtotal:","boundingBox":[5.5075,4.8981,6.1249,4.8981,6.1249,5.0131,5.5075,5.0131],"confidence":1},{"text":"3000.00","boundingBox":[6.1794,4.9042,6.7158,4.9042,6.7158,5.0131,6.1794,5.0131],"confidence":1}]},{"text":"Tax: + 300.00","boundingBox":[5.5034,5.1245,6.2887,5.1245,6.2887,5.2333,5.5034,5.2333],"words":[{"text":"Tax:","boundingBox":[5.5034,5.1263,5.7812,5.1263,5.7812,5.2333,5.5034,5.2333],"confidence":1},{"text":"300.00","boundingBox":[5.836,5.1245,6.2887,5.1245,6.2887,5.2333,5.836,5.2333],"confidence":1}]},{"text":"Tip: + 1000.00","boundingBox":[5.5034,5.3412,6.3422,5.3412,6.3422,5.481,5.5034,5.481],"words":[{"text":"Tip:","boundingBox":[5.5034,5.3412,5.7515,5.3412,5.7515,5.481,5.5034,5.481],"confidence":1},{"text":"1000.00","boundingBox":[5.811,5.3445,6.3422,5.3445,6.3422,5.4533,5.811,5.4533],"confidence":1}]},{"text":"Total: + 4300.00","boundingBox":[5.5034,5.5583,6.4825,5.5583,6.4825,5.6733,5.5034,5.6733],"words":[{"text":"Total:","boundingBox":[5.5034,5.5583,5.8915,5.5583,5.8915,5.6733,5.5034,5.6733],"confidence":1},{"text":"4300.00","boundingBox":[5.942,5.5645,6.4825,5.5645,6.4825,5.6733,5.942,5.6733],"confidence":1}]},{"text":"Signature: + ____ Frodo Baggins__________","boundingBox":[1.0055,6.6556,3.8842,6.6556,3.8842,6.7981,1.0055,6.7981],"words":[{"text":"Signature:","boundingBox":[1.0055,6.6581,1.6987,6.6581,1.6987,6.7981,1.0055,6.7981],"confidence":1},{"text":"____","boundingBox":[1.747,6.7829,2.0809,6.7829,2.0809,6.7981,1.747,6.7981],"confidence":1},{"text":"Frodo","boundingBox":[2.0925,6.6556,2.4778,6.6556,2.4778,6.7703,2.0925,6.7703],"confidence":1},{"text":"Baggins__________","boundingBox":[2.5325,6.6581,3.8842,6.6581,3.8842,6.7981,2.5325,6.7981],"confidence":1}]}]}],"documentResults":[{"docType":"prebuilt:receipt","pageRange":[1,1],"fields":{"ReceiptType":{"type":"string","valueString":"Itemized","confidence":0.99},"MerchantName":{"type":"string","valueString":"Bilbo + Baggins","text":"Bilbo Baggins","boundingBox":[6.0164,1.4503,6.8967,1.4503,6.8967,1.5931,6.0164,1.5931],"page":1,"confidence":0.987,"elements":["#/readResults/0/lines/3/words/0","#/readResults/0/lines/3/words/1"]},"MerchantAddress":{"type":"string","valueString":"123 + Hobbit Lane 567 Main St. Redmond, WA Redmond, WA","text":"123 Hobbit Lane + 567 Main St. Redmond, WA Redmond, WA","boundingBox":[0.8852,1.6707,7.1006,1.6707,7.1006,2.1975,0.8852,2.1975],"page":1,"confidence":0.99,"elements":["#/readResults/0/lines/4/words/0","#/readResults/0/lines/4/words/1","#/readResults/0/lines/4/words/2","#/readResults/0/lines/5/words/0","#/readResults/0/lines/5/words/1","#/readResults/0/lines/5/words/2","#/readResults/0/lines/6/words/0","#/readResults/0/lines/6/words/1","#/readResults/0/lines/7/words/0","#/readResults/0/lines/7/words/1"]},"MerchantPhoneNumber":{"type":"phoneNumber","valuePhoneNumber":"+15555555555","text":"555-555-5555","boundingBox":[6.0105,2.1187,6.9371,2.1187,6.9371,2.2254,6.0105,2.2254],"page":1,"confidence":0.99,"elements":["#/readResults/0/lines/8/words/0"]},"Items":{"type":"array","valueArray":[{"type":"object","valueObject":{"Name":{"type":"string","valueString":"F","text":"F","boundingBox":[1.0943,4.2661,1.1497,4.2661,1.1497,4.3717,1.0943,4.3717],"page":1,"confidence":0.964,"elements":["#/readResults/0/lines/28/words/0"]},"TotalPrice":{"type":"number","valueNumber":12,"text":"12.00","boundingBox":[5.4232,4.2646,5.7809,4.2646,5.7809,4.3727,5.4232,4.3727],"page":1,"confidence":0.947,"elements":["#/readResults/0/lines/30/words/0"]}}},{"type":"object","valueObject":{"TotalPrice":{"type":"number","valueNumber":22,"text":"22.00","boundingBox":[5.4184,4.4746,5.781,4.4746,5.781,4.5827,5.4184,4.5827],"page":1,"confidence":0.935,"elements":["#/readResults/0/lines/33/words/0"]}}}]},"Subtotal":{"type":"number","valueNumber":300,"text":"300.00","boundingBox":[6.1794,4.9042,6.632,4.9042,6.632,5.0131,6.1794,5.0131],"page":1,"confidence":0.99,"elements":["#/readResults/0/lines/34/words/1"]},"Total":{"type":"number","valueNumber":430,"text":"430.00","boundingBox":[5.942,5.5645,6.3987,5.5645,6.3987,5.6733,5.942,5.6733],"page":1,"confidence":0.985,"elements":["#/readResults/0/lines/37/words/1"]}}},{"docType":"prebuilt:receipt","pageRange":[2,2]},{"docType":"prebuilt:receipt","pageRange":[3,3],"fields":{"ReceiptType":{"type":"string","valueString":"Itemized","confidence":0.99},"MerchantName":{"type":"string","valueString":"Frodo + Baggins","text":"Frodo Baggins","boundingBox":[6.0164,1.4506,6.9506,1.4506,6.9506,1.5931,6.0164,1.5931],"page":3,"confidence":0.984,"elements":["#/readResults/2/lines/3/words/0","#/readResults/2/lines/3/words/1"]},"MerchantAddress":{"type":"string","valueString":"123 + Hobbit Lane 567 Main St. Redmond, WA Redmond, WA","text":"123 Hobbit Lane + 567 Main St. Redmond, WA Redmond, WA","boundingBox":[0.8852,1.6707,7.1006,1.6707,7.1006,2.1975,0.8852,2.1975],"page":3,"confidence":0.99,"elements":["#/readResults/2/lines/4/words/0","#/readResults/2/lines/4/words/1","#/readResults/2/lines/4/words/2","#/readResults/2/lines/5/words/0","#/readResults/2/lines/5/words/1","#/readResults/2/lines/5/words/2","#/readResults/2/lines/6/words/0","#/readResults/2/lines/6/words/1","#/readResults/2/lines/7/words/0","#/readResults/2/lines/7/words/1"]},"MerchantPhoneNumber":{"type":"phoneNumber","valuePhoneNumber":"+15555555555","text":"555-555-5555","boundingBox":[6.0105,2.1187,6.9371,2.1187,6.9371,2.2254,6.0105,2.2254],"page":3,"confidence":0.99,"elements":["#/readResults/2/lines/8/words/0"]},"Items":{"type":"array","valueArray":[{"type":"object","valueObject":{"Name":{"type":"string","valueString":"E","text":"E","boundingBox":[1.0943,4.0561,1.153,4.0561,1.153,4.1614,1.0943,4.1614],"page":3,"confidence":0.935,"elements":["#/readResults/2/lines/25/words/0"]},"Quantity":{"type":"number","text":"40","boundingBox":[3.2486,4.0546,3.4067,4.0546,3.4067,4.1627,3.2486,4.1627],"page":3,"confidence":0,"elements":["#/readResults/2/lines/26/words/0"]},"TotalPrice":{"type":"number","valueNumber":100,"text":"100.00","boundingBox":[5.4232,4.0546,5.8644,4.0546,5.8644,4.1627,5.4232,4.1627],"page":3,"confidence":0.723,"elements":["#/readResults/2/lines/27/words/0"]}}},{"type":"object","valueObject":{"Name":{"type":"string","valueString":"F","text":"F","boundingBox":[1.0943,4.2661,1.1497,4.2661,1.1497,4.3717,1.0943,4.3717],"page":3,"confidence":0.905,"elements":["#/readResults/2/lines/28/words/0"]},"TotalPrice":{"type":"number","valueNumber":120,"text":"120.00","boundingBox":[5.4232,4.2646,5.8642,4.2646,5.8642,4.3727,5.4232,4.3727],"page":3,"confidence":0.967,"elements":["#/readResults/2/lines/30/words/0"]}}},{"type":"object","valueObject":{"Name":{"type":"string","valueString":"G","text":"G","boundingBox":[1.0877,4.4746,1.1735,4.4746,1.1735,4.5827,1.0877,4.5827],"page":3,"confidence":0.896,"elements":["#/readResults/2/lines/31/words/0"]},"TotalPrice":{"type":"number","valueNumber":220,"text":"220.00","boundingBox":[5.4184,4.4746,5.8644,4.4746,5.8644,4.5827,5.4184,4.5827],"page":3,"confidence":0.958,"elements":["#/readResults/2/lines/33/words/0"]}}}]},"Subtotal":{"type":"number","valueNumber":3000,"text":"3000.00","boundingBox":[6.1794,4.9042,6.7158,4.9042,6.7158,5.0131,6.1794,5.0131],"page":3,"confidence":0.99,"elements":["#/readResults/2/lines/34/words/1"]},"Total":{"type":"number","valueNumber":1000,"text":"1000.00","boundingBox":[5.811,5.3445,6.3422,5.3445,6.3422,5.4533,5.811,5.4533],"page":3,"confidence":0.985,"elements":["#/readResults/2/lines/36/words/1"]}}}]}}' + headers: + apim-request-id: 79feec92-bc1f-42f5-85ea-5a1cc4245999 + content-type: application/json; charset=utf-8 + date: Mon, 27 Apr 2020 22:25:03 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + transfer-encoding: chunked + x-content-type-options: nosniff + x-envoy-upstream-service-time: '134' + status: + code: 200 + message: OK + url: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/prebuilt/receipt/analyzeResults/9bbf0475-2457-47ee-b386-40938221facc +version: 1 diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_receipt_from_url_async.test_receipt_multipage_url.yaml b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_receipt_from_url_async.test_receipt_multipage_url.yaml new file mode 100644 index 000000000000..133a406db0b8 --- /dev/null +++ b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_receipt_from_url_async.test_receipt_multipage_url.yaml @@ -0,0 +1,82 @@ +interactions: +- request: + body: '{"source": "https://raw.githubusercontent.com/Azure/azure-sdk-for-python/master/sdk/formrecognizer/azure-ai-formrecognizer/tests/sample_forms/training_multipage/multipage_invoice1.pdf"}' + headers: + Content-Length: + - '116' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/prebuilt/receipt/analyze?includeTextDetails=true + response: + body: + string: '' + headers: + apim-request-id: 159ade86-2608-4560-87be-d3592a070875 + content-length: '0' + date: Mon, 27 Apr 2020 22:22:09 GMT + operation-location: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/prebuilt/receipt/analyzeResults/159ade86-2608-4560-87be-d3592a070875 + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '902' + status: + code: 202 + message: Accepted + url: https://westus.api.cognitive.microsoft.com//formrecognizer/v2.0-preview/prebuilt/receipt/analyze?includeTextDetails=true +- request: + body: null + headers: + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b2 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/prebuilt/receipt/analyzeResults/159ade86-2608-4560-87be-d3592a070875 + response: + body: + string: '{"status":"succeeded","createdDateTime":"2020-04-27T22:22:09Z","lastUpdatedDateTime":"2020-04-27T22:22:15Z","analyzeResult":{"version":"2.0.0","readResults":[{"page":1,"angle":0,"width":8.5,"height":11,"unit":"inch","language":"en","lines":[{"text":"Company + A Invoice","boundingBox":[0.8861,1.1217,2.3783,1.1217,2.3783,1.2812,0.8861,1.2812],"words":[{"text":"Company","boundingBox":[0.8861,1.1232,1.6203,1.1232,1.6203,1.2812,0.8861,1.2812],"confidence":1},{"text":"A","boundingBox":[1.6696,1.1242,1.7749,1.1242,1.7749,1.2473,1.6696,1.2473],"confidence":1},{"text":"Invoice","boundingBox":[1.8389,1.1217,2.3783,1.1217,2.3783,1.2485,1.8389,1.2485],"confidence":1}]},{"text":"Invoice + For:","boundingBox":[6.0211,1.0656,7.0357,1.0656,7.0357,1.2121,6.0211,1.2121],"words":[{"text":"Invoice","boundingBox":[6.0211,1.0656,6.6362,1.0656,6.6362,1.2121,6.0211,1.2121],"confidence":1},{"text":"For:","boundingBox":[6.7147,1.0691,7.0357,1.0691,7.0357,1.2121,6.7147,1.2121],"confidence":1}]},{"text":"Address:","boundingBox":[0.8791,1.4825,1.5657,1.4825,1.5657,1.6155,0.8791,1.6155],"words":[{"text":"Address:","boundingBox":[0.8791,1.4825,1.5657,1.4825,1.5657,1.6155,0.8791,1.6155],"confidence":1}]},{"text":"Bilbo + Baggins","boundingBox":[6.0164,1.4503,6.8967,1.4503,6.8967,1.5931,6.0164,1.5931],"words":[{"text":"Bilbo","boundingBox":[6.0164,1.4503,6.3392,1.4503,6.3392,1.5649,6.0164,1.5649],"confidence":1},{"text":"Baggins","boundingBox":[6.396,1.4556,6.8967,1.4556,6.8967,1.5931,6.396,1.5931],"confidence":1}]},{"text":"123 + Hobbit Lane","boundingBox":[6.0165,1.6707,7.1006,1.6707,7.1006,1.7854,6.0165,1.7854],"words":[{"text":"123","boundingBox":[6.0165,1.6772,6.2434,1.6772,6.2434,1.7854,6.0165,1.7854],"confidence":1},{"text":"Hobbit","boundingBox":[6.3033,1.6707,6.7463,1.6707,6.7463,1.7854,6.3033,1.7854],"confidence":1},{"text":"Lane","boundingBox":[6.803,1.6782,7.1006,1.6782,7.1006,1.7854,6.803,1.7854],"confidence":1}]},{"text":"567 + Main St.","boundingBox":[0.8852,1.846,1.713,1.846,1.713,1.9554,0.8852,1.9554],"words":[{"text":"567","boundingBox":[0.8852,1.8472,1.1203,1.8472,1.1203,1.9554,0.8852,1.9554],"confidence":1},{"text":"Main","boundingBox":[1.1777,1.846,1.5022,1.846,1.5022,1.9554,1.1777,1.9554],"confidence":1},{"text":"St.","boundingBox":[1.5558,1.8472,1.713,1.8472,1.713,1.9554,1.5558,1.9554],"confidence":1}]},{"text":"Redmond, + WA","boundingBox":[6.0164,1.891,6.9793,1.891,6.9793,2.0275,6.0164,2.0275],"words":[{"text":"Redmond,","boundingBox":[6.0164,1.891,6.6861,1.891,6.6861,2.0275,6.0164,2.0275],"confidence":1},{"text":"WA","boundingBox":[6.7408,1.8982,6.9793,1.8982,6.9793,2.0044,6.7408,2.0044],"confidence":1}]},{"text":"Redmond, + WA","boundingBox":[0.891,2.061,1.8537,2.061,1.8537,2.1975,0.891,2.1975],"words":[{"text":"Redmond,","boundingBox":[0.891,2.061,1.5605,2.061,1.5605,2.1975,0.891,2.1975],"confidence":1},{"text":"WA","boundingBox":[1.6152,2.0682,1.8537,2.0682,1.8537,2.1744,1.6152,2.1744],"confidence":1}]},{"text":"555-555-5555","boundingBox":[6.0105,2.1187,6.9371,2.1187,6.9371,2.2254,6.0105,2.2254],"words":[{"text":"555-555-5555","boundingBox":[6.0105,2.1187,6.9371,2.1187,6.9371,2.2254,6.0105,2.2254],"confidence":1}]},{"text":"555-555-5555","boundingBox":[0.8852,2.2887,1.8119,2.2887,1.8119,2.3954,0.8852,2.3954],"words":[{"text":"555-555-5555","boundingBox":[0.8852,2.2887,1.8119,2.2887,1.8119,2.3954,0.8852,2.3954],"confidence":1}]},{"text":"Item","boundingBox":[1.0943,3.0018,1.3842,3.0018,1.3842,3.109,1.0943,3.109],"words":[{"text":"Item","boundingBox":[1.0943,3.0018,1.3842,3.0018,1.3842,3.109,1.0943,3.109],"confidence":1}]},{"text":"Quantity","boundingBox":[3.2527,2.9996,3.8367,2.9996,3.8367,3.1371,3.2527,3.1371],"words":[{"text":"Quantity","boundingBox":[3.2527,2.9996,3.8367,2.9996,3.8367,3.1371,3.2527,3.1371],"confidence":1}]},{"text":"Price","boundingBox":[5.423,2.9996,5.7372,2.9996,5.7372,3.109,5.423,3.109],"words":[{"text":"Price","boundingBox":[5.423,2.9996,5.7372,2.9996,5.7372,3.109,5.423,3.109],"confidence":1}]},{"text":"A","boundingBox":[1.0832,3.2118,1.174,3.2118,1.174,3.318,1.0832,3.318],"words":[{"text":"A","boundingBox":[1.0832,3.2118,1.174,3.2118,1.174,3.318,1.0832,3.318],"confidence":1}]},{"text":"1","boundingBox":[3.2589,3.2116,3.3202,3.2116,3.3202,3.3176,3.2589,3.3176],"words":[{"text":"1","boundingBox":[3.2589,3.2116,3.3202,3.2116,3.3202,3.3176,3.2589,3.3176],"confidence":1}]},{"text":"10.99","boundingBox":[5.4232,3.2108,5.7784,3.2108,5.7784,3.319,5.4232,3.319],"words":[{"text":"10.99","boundingBox":[5.4232,3.2108,5.7784,3.2108,5.7784,3.319,5.4232,3.319],"confidence":1}]},{"text":"B","boundingBox":[1.0943,3.4256,1.1637,3.4256,1.1637,3.531,1.0943,3.531],"words":[{"text":"B","boundingBox":[1.0943,3.4256,1.1637,3.4256,1.1637,3.531,1.0943,3.531],"confidence":1}]},{"text":"2","boundingBox":[3.2541,3.4241,3.3199,3.4241,3.3199,3.531,3.2541,3.531],"words":[{"text":"2","boundingBox":[3.2541,3.4241,3.3199,3.4241,3.3199,3.531,3.2541,3.531],"confidence":1}]},{"text":"14.67","boundingBox":[5.4232,3.4241,5.7789,3.4241,5.7789,3.5323,5.4232,3.5323],"words":[{"text":"14.67","boundingBox":[5.4232,3.4241,5.7789,3.4241,5.7789,3.5323,5.4232,3.5323],"confidence":1}]},{"text":"C","boundingBox":[1.0882,3.6343,1.1647,3.6343,1.1647,3.7421,1.0882,3.7421],"words":[{"text":"C","boundingBox":[1.0882,3.6343,1.1647,3.6343,1.1647,3.7421,1.0882,3.7421],"confidence":1}]},{"text":"4","boundingBox":[3.2486,3.6351,3.3244,3.6351,3.3244,3.7413,3.2486,3.7413],"words":[{"text":"4","boundingBox":[3.2486,3.6351,3.3244,3.6351,3.3244,3.7413,3.2486,3.7413],"confidence":1}]},{"text":"15.66","boundingBox":[5.4232,3.6341,5.78,3.6341,5.78,3.7423,5.4232,3.7423],"words":[{"text":"15.66","boundingBox":[5.4232,3.6341,5.78,3.6341,5.78,3.7423,5.4232,3.7423],"confidence":1}]},{"text":"D","boundingBox":[1.0943,3.8456,1.1753,3.8456,1.1753,3.951,1.0943,3.951],"words":[{"text":"D","boundingBox":[1.0943,3.8456,1.1753,3.8456,1.1753,3.951,1.0943,3.951],"confidence":1}]},{"text":"1","boundingBox":[3.2589,3.845,3.3202,3.845,3.3202,3.951,3.2589,3.951],"words":[{"text":"1","boundingBox":[3.2589,3.845,3.3202,3.845,3.3202,3.951,3.2589,3.951],"confidence":1}]},{"text":"12.00","boundingBox":[5.4232,3.8441,5.7809,3.8441,5.7809,3.9523,5.4232,3.9523],"words":[{"text":"12.00","boundingBox":[5.4232,3.8441,5.7809,3.8441,5.7809,3.9523,5.4232,3.9523],"confidence":1}]},{"text":"E","boundingBox":[1.0943,4.0561,1.153,4.0561,1.153,4.1614,1.0943,4.1614],"words":[{"text":"E","boundingBox":[1.0943,4.0561,1.153,4.0561,1.153,4.1614,1.0943,4.1614],"confidence":1}]},{"text":"4","boundingBox":[3.2486,4.0556,3.3244,4.0556,3.3244,4.1617,3.2486,4.1617],"words":[{"text":"4","boundingBox":[3.2486,4.0556,3.3244,4.0556,3.3244,4.1617,3.2486,4.1617],"confidence":1}]},{"text":"10.00","boundingBox":[5.4232,4.0546,5.781,4.0546,5.781,4.1627,5.4232,4.1627],"words":[{"text":"10.00","boundingBox":[5.4232,4.0546,5.781,4.0546,5.781,4.1627,5.4232,4.1627],"confidence":1}]},{"text":"F","boundingBox":[1.0943,4.2661,1.1497,4.2661,1.1497,4.3717,1.0943,4.3717],"words":[{"text":"F","boundingBox":[1.0943,4.2661,1.1497,4.2661,1.1497,4.3717,1.0943,4.3717],"confidence":1}]},{"text":"6","boundingBox":[3.2534,4.2646,3.3226,4.2646,3.3226,4.3727,3.2534,4.3727],"words":[{"text":"6","boundingBox":[3.2534,4.2646,3.3226,4.2646,3.3226,4.3727,3.2534,4.3727],"confidence":1}]},{"text":"12.00","boundingBox":[5.4232,4.2646,5.7809,4.2646,5.7809,4.3727,5.4232,4.3727],"words":[{"text":"12.00","boundingBox":[5.4232,4.2646,5.7809,4.2646,5.7809,4.3727,5.4232,4.3727],"confidence":1}]},{"text":"G","boundingBox":[1.0877,4.4746,1.1735,4.4746,1.1735,4.5827,1.0877,4.5827],"words":[{"text":"G","boundingBox":[1.0877,4.4746,1.1735,4.4746,1.1735,4.5827,1.0877,4.5827],"confidence":1}]},{"text":"8","boundingBox":[3.2514,4.4746,3.3224,4.4746,3.3224,4.5827,3.2514,4.5827],"words":[{"text":"8","boundingBox":[3.2514,4.4746,3.3224,4.4746,3.3224,4.5827,3.2514,4.5827],"confidence":1}]},{"text":"22.00","boundingBox":[5.4184,4.4746,5.781,4.4746,5.781,4.5827,5.4184,4.5827],"words":[{"text":"22.00","boundingBox":[5.4184,4.4746,5.781,4.4746,5.781,4.5827,5.4184,4.5827],"confidence":1}]},{"text":"Subtotal: + 300.00","boundingBox":[5.5075,4.8981,6.632,4.8981,6.632,5.0131,5.5075,5.0131],"words":[{"text":"Subtotal:","boundingBox":[5.5075,4.8981,6.1249,4.8981,6.1249,5.0131,5.5075,5.0131],"confidence":1},{"text":"300.00","boundingBox":[6.1794,4.9042,6.632,4.9042,6.632,5.0131,6.1794,5.0131],"confidence":1}]},{"text":"Tax: + 30.00","boundingBox":[5.5034,5.1245,6.2022,5.1245,6.2022,5.2333,5.5034,5.2333],"words":[{"text":"Tax:","boundingBox":[5.5034,5.1263,5.7812,5.1263,5.7812,5.2333,5.5034,5.2333],"confidence":1},{"text":"30.00","boundingBox":[5.836,5.1245,6.2022,5.1245,6.2022,5.2333,5.836,5.2333],"confidence":1}]},{"text":"Tip: + 100.00","boundingBox":[5.5034,5.3412,6.2587,5.3412,6.2587,5.481,5.5034,5.481],"words":[{"text":"Tip:","boundingBox":[5.5034,5.3412,5.7515,5.3412,5.7515,5.481,5.5034,5.481],"confidence":1},{"text":"100.00","boundingBox":[5.811,5.3445,6.2587,5.3445,6.2587,5.4533,5.811,5.4533],"confidence":1}]},{"text":"Total: + 430.00","boundingBox":[5.5034,5.5583,6.3987,5.5583,6.3987,5.6733,5.5034,5.6733],"words":[{"text":"Total:","boundingBox":[5.5034,5.5583,5.8915,5.5583,5.8915,5.6733,5.5034,5.6733],"confidence":1},{"text":"430.00","boundingBox":[5.942,5.5645,6.3987,5.5645,6.3987,5.6733,5.942,5.6733],"confidence":1}]},{"text":"Signature: + ____ Bilbo Baggins__________","boundingBox":[1.0055,6.6553,3.8342,6.6553,3.8342,6.7981,1.0055,6.7981],"words":[{"text":"Signature:","boundingBox":[1.0055,6.6581,1.6987,6.6581,1.6987,6.7981,1.0055,6.7981],"confidence":1},{"text":"____","boundingBox":[1.747,6.7829,2.0809,6.7829,2.0809,6.7981,1.747,6.7981],"confidence":1},{"text":"Bilbo","boundingBox":[2.0925,6.6553,2.4278,6.6553,2.4278,6.7703,2.0925,6.7703],"confidence":1},{"text":"Baggins__________","boundingBox":[2.4823,6.6581,3.8342,6.6581,3.8342,6.7981,2.4823,6.7981],"confidence":1}]}]},{"page":2,"angle":0,"width":8.4967,"height":10.9967,"unit":"inch","language":"en"},{"page":3,"angle":0,"width":8.5,"height":11,"unit":"inch","language":"en","lines":[{"text":"Company + B Invoice","boundingBox":[0.8861,1.1217,2.3734,1.1217,2.3734,1.2812,0.8861,1.2812],"words":[{"text":"Company","boundingBox":[0.8861,1.1232,1.6203,1.1232,1.6203,1.2812,0.8861,1.2812],"confidence":1},{"text":"B","boundingBox":[1.6836,1.1248,1.764,1.1248,1.764,1.2469,1.6836,1.2469],"confidence":1},{"text":"Invoice","boundingBox":[1.8336,1.1217,2.3734,1.1217,2.3734,1.2485,1.8336,1.2485],"confidence":1}]},{"text":"Invoice + For:","boundingBox":[6.0211,1.0656,7.0357,1.0656,7.0357,1.2121,6.0211,1.2121],"words":[{"text":"Invoice","boundingBox":[6.0211,1.0656,6.6362,1.0656,6.6362,1.2121,6.0211,1.2121],"confidence":1},{"text":"For:","boundingBox":[6.7147,1.0691,7.0357,1.0691,7.0357,1.2121,6.7147,1.2121],"confidence":1}]},{"text":"Address:","boundingBox":[0.8791,1.4825,1.5657,1.4825,1.5657,1.6155,0.8791,1.6155],"words":[{"text":"Address:","boundingBox":[0.8791,1.4825,1.5657,1.4825,1.5657,1.6155,0.8791,1.6155],"confidence":1}]},{"text":"Frodo + Baggins","boundingBox":[6.0164,1.4506,6.9506,1.4506,6.9506,1.5931,6.0164,1.5931],"words":[{"text":"Frodo","boundingBox":[6.0164,1.4506,6.3895,1.4506,6.3895,1.5649,6.0164,1.5649],"confidence":1},{"text":"Baggins","boundingBox":[6.45,1.4556,6.9506,1.4556,6.9506,1.5931,6.45,1.5931],"confidence":1}]},{"text":"123 + Hobbit Lane","boundingBox":[6.0165,1.6707,7.1006,1.6707,7.1006,1.7854,6.0165,1.7854],"words":[{"text":"123","boundingBox":[6.0165,1.6772,6.2434,1.6772,6.2434,1.7854,6.0165,1.7854],"confidence":1},{"text":"Hobbit","boundingBox":[6.3033,1.6707,6.7463,1.6707,6.7463,1.7854,6.3033,1.7854],"confidence":1},{"text":"Lane","boundingBox":[6.803,1.6782,7.1006,1.6782,7.1006,1.7854,6.803,1.7854],"confidence":1}]},{"text":"567 + Main St.","boundingBox":[0.8852,1.846,1.713,1.846,1.713,1.9554,0.8852,1.9554],"words":[{"text":"567","boundingBox":[0.8852,1.8472,1.1203,1.8472,1.1203,1.9554,0.8852,1.9554],"confidence":1},{"text":"Main","boundingBox":[1.1777,1.846,1.5022,1.846,1.5022,1.9554,1.1777,1.9554],"confidence":1},{"text":"St.","boundingBox":[1.5558,1.8472,1.713,1.8472,1.713,1.9554,1.5558,1.9554],"confidence":1}]},{"text":"Redmond, + WA","boundingBox":[6.0164,1.891,6.9793,1.891,6.9793,2.0275,6.0164,2.0275],"words":[{"text":"Redmond,","boundingBox":[6.0164,1.891,6.6861,1.891,6.6861,2.0275,6.0164,2.0275],"confidence":1},{"text":"WA","boundingBox":[6.7408,1.8982,6.9793,1.8982,6.9793,2.0044,6.7408,2.0044],"confidence":1}]},{"text":"Redmond, + WA","boundingBox":[0.891,2.061,1.8537,2.061,1.8537,2.1975,0.891,2.1975],"words":[{"text":"Redmond,","boundingBox":[0.891,2.061,1.5605,2.061,1.5605,2.1975,0.891,2.1975],"confidence":1},{"text":"WA","boundingBox":[1.6152,2.0682,1.8537,2.0682,1.8537,2.1744,1.6152,2.1744],"confidence":1}]},{"text":"555-555-5555","boundingBox":[6.0105,2.1187,6.9371,2.1187,6.9371,2.2254,6.0105,2.2254],"words":[{"text":"555-555-5555","boundingBox":[6.0105,2.1187,6.9371,2.1187,6.9371,2.2254,6.0105,2.2254],"confidence":1}]},{"text":"555-555-5555","boundingBox":[0.8852,2.2887,1.8119,2.2887,1.8119,2.3954,0.8852,2.3954],"words":[{"text":"555-555-5555","boundingBox":[0.8852,2.2887,1.8119,2.2887,1.8119,2.3954,0.8852,2.3954],"confidence":1}]},{"text":"Item","boundingBox":[1.0943,3.0018,1.3842,3.0018,1.3842,3.109,1.0943,3.109],"words":[{"text":"Item","boundingBox":[1.0943,3.0018,1.3842,3.0018,1.3842,3.109,1.0943,3.109],"confidence":1}]},{"text":"Quantity","boundingBox":[3.2527,2.9996,3.8367,2.9996,3.8367,3.1371,3.2527,3.1371],"words":[{"text":"Quantity","boundingBox":[3.2527,2.9996,3.8367,2.9996,3.8367,3.1371,3.2527,3.1371],"confidence":1}]},{"text":"Price","boundingBox":[5.423,2.9996,5.7372,2.9996,5.7372,3.109,5.423,3.109],"words":[{"text":"Price","boundingBox":[5.423,2.9996,5.7372,2.9996,5.7372,3.109,5.423,3.109],"confidence":1}]},{"text":"A","boundingBox":[1.0832,3.2118,1.174,3.2118,1.174,3.318,1.0832,3.318],"words":[{"text":"A","boundingBox":[1.0832,3.2118,1.174,3.2118,1.174,3.318,1.0832,3.318],"confidence":1}]},{"text":"10","boundingBox":[3.2589,3.2108,3.4067,3.2108,3.4067,3.319,3.2589,3.319],"words":[{"text":"10","boundingBox":[3.2589,3.2108,3.4067,3.2108,3.4067,3.319,3.2589,3.319],"confidence":1}]},{"text":"100.99","boundingBox":[5.4232,3.2108,5.8617,3.2108,5.8617,3.319,5.4232,3.319],"words":[{"text":"100.99","boundingBox":[5.4232,3.2108,5.8617,3.2108,5.8617,3.319,5.4232,3.319],"confidence":1}]},{"text":"B","boundingBox":[1.0943,3.4256,1.1637,3.4256,1.1637,3.531,1.0943,3.531],"words":[{"text":"B","boundingBox":[1.0943,3.4256,1.1637,3.4256,1.1637,3.531,1.0943,3.531],"confidence":1}]},{"text":"20","boundingBox":[3.2541,3.4241,3.4067,3.4241,3.4067,3.5323,3.2541,3.5323],"words":[{"text":"20","boundingBox":[3.2541,3.4241,3.4067,3.4241,3.4067,3.5323,3.2541,3.5323],"confidence":1}]},{"text":"140.67","boundingBox":[5.4232,3.4241,5.8622,3.4241,5.8622,3.5323,5.4232,3.5323],"words":[{"text":"140.67","boundingBox":[5.4232,3.4241,5.8622,3.4241,5.8622,3.5323,5.4232,3.5323],"confidence":1}]},{"text":"C","boundingBox":[1.0882,3.6343,1.1647,3.6343,1.1647,3.7421,1.0882,3.7421],"words":[{"text":"C","boundingBox":[1.0882,3.6343,1.1647,3.6343,1.1647,3.7421,1.0882,3.7421],"confidence":1}]},{"text":"40","boundingBox":[3.2486,3.6341,3.4067,3.6341,3.4067,3.7423,3.2486,3.7423],"words":[{"text":"40","boundingBox":[3.2486,3.6341,3.4067,3.6341,3.4067,3.7423,3.2486,3.7423],"confidence":1}]},{"text":"150.66","boundingBox":[5.4232,3.6341,5.8634,3.6341,5.8634,3.7423,5.4232,3.7423],"words":[{"text":"150.66","boundingBox":[5.4232,3.6341,5.8634,3.6341,5.8634,3.7423,5.4232,3.7423],"confidence":1}]},{"text":"D","boundingBox":[1.0943,3.8456,1.1753,3.8456,1.1753,3.951,1.0943,3.951],"words":[{"text":"D","boundingBox":[1.0943,3.8456,1.1753,3.8456,1.1753,3.951,1.0943,3.951],"confidence":1}]},{"text":"10","boundingBox":[3.2589,3.8441,3.4067,3.8441,3.4067,3.9523,3.2589,3.9523],"words":[{"text":"10","boundingBox":[3.2589,3.8441,3.4067,3.8441,3.4067,3.9523,3.2589,3.9523],"confidence":1}]},{"text":"120.00","boundingBox":[5.4232,3.8441,5.8642,3.8441,5.8642,3.9523,5.4232,3.9523],"words":[{"text":"120.00","boundingBox":[5.4232,3.8441,5.8642,3.8441,5.8642,3.9523,5.4232,3.9523],"confidence":1}]},{"text":"E","boundingBox":[1.0943,4.0561,1.153,4.0561,1.153,4.1614,1.0943,4.1614],"words":[{"text":"E","boundingBox":[1.0943,4.0561,1.153,4.0561,1.153,4.1614,1.0943,4.1614],"confidence":1}]},{"text":"40","boundingBox":[3.2486,4.0546,3.4067,4.0546,3.4067,4.1627,3.2486,4.1627],"words":[{"text":"40","boundingBox":[3.2486,4.0546,3.4067,4.0546,3.4067,4.1627,3.2486,4.1627],"confidence":1}]},{"text":"100.00","boundingBox":[5.4232,4.0546,5.8644,4.0546,5.8644,4.1627,5.4232,4.1627],"words":[{"text":"100.00","boundingBox":[5.4232,4.0546,5.8644,4.0546,5.8644,4.1627,5.4232,4.1627],"confidence":1}]},{"text":"F","boundingBox":[1.0943,4.2661,1.1497,4.2661,1.1497,4.3717,1.0943,4.3717],"words":[{"text":"F","boundingBox":[1.0943,4.2661,1.1497,4.2661,1.1497,4.3717,1.0943,4.3717],"confidence":1}]},{"text":"60","boundingBox":[3.2534,4.2646,3.4067,4.2646,3.4067,4.3727,3.2534,4.3727],"words":[{"text":"60","boundingBox":[3.2534,4.2646,3.4067,4.2646,3.4067,4.3727,3.2534,4.3727],"confidence":1}]},{"text":"120.00","boundingBox":[5.4232,4.2646,5.8642,4.2646,5.8642,4.3727,5.4232,4.3727],"words":[{"text":"120.00","boundingBox":[5.4232,4.2646,5.8642,4.2646,5.8642,4.3727,5.4232,4.3727],"confidence":1}]},{"text":"G","boundingBox":[1.0877,4.4746,1.1735,4.4746,1.1735,4.5827,1.0877,4.5827],"words":[{"text":"G","boundingBox":[1.0877,4.4746,1.1735,4.4746,1.1735,4.5827,1.0877,4.5827],"confidence":1}]},{"text":"80","boundingBox":[3.2514,4.4746,3.4067,4.4746,3.4067,4.5827,3.2514,4.5827],"words":[{"text":"80","boundingBox":[3.2514,4.4746,3.4067,4.4746,3.4067,4.5827,3.2514,4.5827],"confidence":1}]},{"text":"220.00","boundingBox":[5.4184,4.4746,5.8644,4.4746,5.8644,4.5827,5.4184,4.5827],"words":[{"text":"220.00","boundingBox":[5.4184,4.4746,5.8644,4.4746,5.8644,4.5827,5.4184,4.5827],"confidence":1}]},{"text":"Subtotal: + 3000.00","boundingBox":[5.5075,4.8981,6.7158,4.8981,6.7158,5.0131,5.5075,5.0131],"words":[{"text":"Subtotal:","boundingBox":[5.5075,4.8981,6.1249,4.8981,6.1249,5.0131,5.5075,5.0131],"confidence":1},{"text":"3000.00","boundingBox":[6.1794,4.9042,6.7158,4.9042,6.7158,5.0131,6.1794,5.0131],"confidence":1}]},{"text":"Tax: + 300.00","boundingBox":[5.5034,5.1245,6.2887,5.1245,6.2887,5.2333,5.5034,5.2333],"words":[{"text":"Tax:","boundingBox":[5.5034,5.1263,5.7812,5.1263,5.7812,5.2333,5.5034,5.2333],"confidence":1},{"text":"300.00","boundingBox":[5.836,5.1245,6.2887,5.1245,6.2887,5.2333,5.836,5.2333],"confidence":1}]},{"text":"Tip: + 1000.00","boundingBox":[5.5034,5.3412,6.3422,5.3412,6.3422,5.481,5.5034,5.481],"words":[{"text":"Tip:","boundingBox":[5.5034,5.3412,5.7515,5.3412,5.7515,5.481,5.5034,5.481],"confidence":1},{"text":"1000.00","boundingBox":[5.811,5.3445,6.3422,5.3445,6.3422,5.4533,5.811,5.4533],"confidence":1}]},{"text":"Total: + 4300.00","boundingBox":[5.5034,5.5583,6.4825,5.5583,6.4825,5.6733,5.5034,5.6733],"words":[{"text":"Total:","boundingBox":[5.5034,5.5583,5.8915,5.5583,5.8915,5.6733,5.5034,5.6733],"confidence":1},{"text":"4300.00","boundingBox":[5.942,5.5645,6.4825,5.5645,6.4825,5.6733,5.942,5.6733],"confidence":1}]},{"text":"Signature: + ____ Frodo Baggins__________","boundingBox":[1.0055,6.6556,3.8842,6.6556,3.8842,6.7981,1.0055,6.7981],"words":[{"text":"Signature:","boundingBox":[1.0055,6.6581,1.6987,6.6581,1.6987,6.7981,1.0055,6.7981],"confidence":1},{"text":"____","boundingBox":[1.747,6.7829,2.0809,6.7829,2.0809,6.7981,1.747,6.7981],"confidence":1},{"text":"Frodo","boundingBox":[2.0925,6.6556,2.4778,6.6556,2.4778,6.7703,2.0925,6.7703],"confidence":1},{"text":"Baggins__________","boundingBox":[2.5325,6.6581,3.8842,6.6581,3.8842,6.7981,2.5325,6.7981],"confidence":1}]}]}],"documentResults":[{"docType":"prebuilt:receipt","pageRange":[1,1],"fields":{"ReceiptType":{"type":"string","valueString":"Itemized","confidence":0.99},"MerchantName":{"type":"string","valueString":"Bilbo + Baggins","text":"Bilbo Baggins","boundingBox":[6.0164,1.4503,6.8967,1.4503,6.8967,1.5931,6.0164,1.5931],"page":1,"confidence":0.987,"elements":["#/readResults/0/lines/3/words/0","#/readResults/0/lines/3/words/1"]},"MerchantAddress":{"type":"string","valueString":"123 + Hobbit Lane 567 Main St. Redmond, WA Redmond, WA","text":"123 Hobbit Lane + 567 Main St. Redmond, WA Redmond, WA","boundingBox":[0.8852,1.6707,7.1006,1.6707,7.1006,2.1975,0.8852,2.1975],"page":1,"confidence":0.99,"elements":["#/readResults/0/lines/4/words/0","#/readResults/0/lines/4/words/1","#/readResults/0/lines/4/words/2","#/readResults/0/lines/5/words/0","#/readResults/0/lines/5/words/1","#/readResults/0/lines/5/words/2","#/readResults/0/lines/6/words/0","#/readResults/0/lines/6/words/1","#/readResults/0/lines/7/words/0","#/readResults/0/lines/7/words/1"]},"MerchantPhoneNumber":{"type":"phoneNumber","valuePhoneNumber":"+15555555555","text":"555-555-5555","boundingBox":[6.0105,2.1187,6.9371,2.1187,6.9371,2.2254,6.0105,2.2254],"page":1,"confidence":0.99,"elements":["#/readResults/0/lines/8/words/0"]},"Items":{"type":"array","valueArray":[{"type":"object","valueObject":{"Name":{"type":"string","valueString":"F","text":"F","boundingBox":[1.0943,4.2661,1.1497,4.2661,1.1497,4.3717,1.0943,4.3717],"page":1,"confidence":0.964,"elements":["#/readResults/0/lines/28/words/0"]},"TotalPrice":{"type":"number","valueNumber":12,"text":"12.00","boundingBox":[5.4232,4.2646,5.7809,4.2646,5.7809,4.3727,5.4232,4.3727],"page":1,"confidence":0.947,"elements":["#/readResults/0/lines/30/words/0"]}}},{"type":"object","valueObject":{"TotalPrice":{"type":"number","valueNumber":22,"text":"22.00","boundingBox":[5.4184,4.4746,5.781,4.4746,5.781,4.5827,5.4184,4.5827],"page":1,"confidence":0.935,"elements":["#/readResults/0/lines/33/words/0"]}}}]},"Subtotal":{"type":"number","valueNumber":300,"text":"300.00","boundingBox":[6.1794,4.9042,6.632,4.9042,6.632,5.0131,6.1794,5.0131],"page":1,"confidence":0.99,"elements":["#/readResults/0/lines/34/words/1"]},"Total":{"type":"number","valueNumber":430,"text":"430.00","boundingBox":[5.942,5.5645,6.3987,5.5645,6.3987,5.6733,5.942,5.6733],"page":1,"confidence":0.985,"elements":["#/readResults/0/lines/37/words/1"]}}},{"docType":"prebuilt:receipt","pageRange":[2,2]},{"docType":"prebuilt:receipt","pageRange":[3,3],"fields":{"ReceiptType":{"type":"string","valueString":"Itemized","confidence":0.99},"MerchantName":{"type":"string","valueString":"Frodo + Baggins","text":"Frodo Baggins","boundingBox":[6.0164,1.4506,6.9506,1.4506,6.9506,1.5931,6.0164,1.5931],"page":3,"confidence":0.984,"elements":["#/readResults/2/lines/3/words/0","#/readResults/2/lines/3/words/1"]},"MerchantAddress":{"type":"string","valueString":"123 + Hobbit Lane 567 Main St. Redmond, WA Redmond, WA","text":"123 Hobbit Lane + 567 Main St. Redmond, WA Redmond, WA","boundingBox":[0.8852,1.6707,7.1006,1.6707,7.1006,2.1975,0.8852,2.1975],"page":3,"confidence":0.99,"elements":["#/readResults/2/lines/4/words/0","#/readResults/2/lines/4/words/1","#/readResults/2/lines/4/words/2","#/readResults/2/lines/5/words/0","#/readResults/2/lines/5/words/1","#/readResults/2/lines/5/words/2","#/readResults/2/lines/6/words/0","#/readResults/2/lines/6/words/1","#/readResults/2/lines/7/words/0","#/readResults/2/lines/7/words/1"]},"MerchantPhoneNumber":{"type":"phoneNumber","valuePhoneNumber":"+15555555555","text":"555-555-5555","boundingBox":[6.0105,2.1187,6.9371,2.1187,6.9371,2.2254,6.0105,2.2254],"page":3,"confidence":0.99,"elements":["#/readResults/2/lines/8/words/0"]},"Items":{"type":"array","valueArray":[{"type":"object","valueObject":{"Name":{"type":"string","valueString":"E","text":"E","boundingBox":[1.0943,4.0561,1.153,4.0561,1.153,4.1614,1.0943,4.1614],"page":3,"confidence":0.935,"elements":["#/readResults/2/lines/25/words/0"]},"Quantity":{"type":"number","text":"40","boundingBox":[3.2486,4.0546,3.4067,4.0546,3.4067,4.1627,3.2486,4.1627],"page":3,"confidence":0,"elements":["#/readResults/2/lines/26/words/0"]},"TotalPrice":{"type":"number","valueNumber":100,"text":"100.00","boundingBox":[5.4232,4.0546,5.8644,4.0546,5.8644,4.1627,5.4232,4.1627],"page":3,"confidence":0.723,"elements":["#/readResults/2/lines/27/words/0"]}}},{"type":"object","valueObject":{"Name":{"type":"string","valueString":"F","text":"F","boundingBox":[1.0943,4.2661,1.1497,4.2661,1.1497,4.3717,1.0943,4.3717],"page":3,"confidence":0.905,"elements":["#/readResults/2/lines/28/words/0"]},"TotalPrice":{"type":"number","valueNumber":120,"text":"120.00","boundingBox":[5.4232,4.2646,5.8642,4.2646,5.8642,4.3727,5.4232,4.3727],"page":3,"confidence":0.967,"elements":["#/readResults/2/lines/30/words/0"]}}},{"type":"object","valueObject":{"Name":{"type":"string","valueString":"G","text":"G","boundingBox":[1.0877,4.4746,1.1735,4.4746,1.1735,4.5827,1.0877,4.5827],"page":3,"confidence":0.896,"elements":["#/readResults/2/lines/31/words/0"]},"TotalPrice":{"type":"number","valueNumber":220,"text":"220.00","boundingBox":[5.4184,4.4746,5.8644,4.4746,5.8644,4.5827,5.4184,4.5827],"page":3,"confidence":0.958,"elements":["#/readResults/2/lines/33/words/0"]}}}]},"Subtotal":{"type":"number","valueNumber":3000,"text":"3000.00","boundingBox":[6.1794,4.9042,6.7158,4.9042,6.7158,5.0131,6.1794,5.0131],"page":3,"confidence":0.99,"elements":["#/readResults/2/lines/34/words/1"]},"Total":{"type":"number","valueNumber":1000,"text":"1000.00","boundingBox":[5.811,5.3445,6.3422,5.3445,6.3422,5.4533,5.811,5.4533],"page":3,"confidence":0.985,"elements":["#/readResults/2/lines/36/words/1"]}}}]}}' + headers: + apim-request-id: 4de9cb9b-104f-4bf8-be1b-e0ecb6af5438 + content-type: application/json; charset=utf-8 + date: Mon, 27 Apr 2020 22:22:15 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + transfer-encoding: chunked + x-content-type-options: nosniff + x-envoy-upstream-service-time: '255' + status: + code: 200 + message: OK + url: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/prebuilt/receipt/analyzeResults/159ade86-2608-4560-87be-d3592a070875 +version: 1 diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_training.test_train_multipage_w_labels_transform.yaml b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_training.test_train_multipage_w_labels_transform.yaml new file mode 100644 index 000000000000..1e109e498f38 --- /dev/null +++ b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_training.test_train_multipage_w_labels_transform.yaml @@ -0,0 +1,77 @@ +interactions: +- request: + body: 'b''{"source": "containersasurl", "sourceFilter": {"prefix": "", "includeSubFolders": + false}, "useLabelFile": true}''' + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '316' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models + response: + body: + string: '' + headers: + apim-request-id: + - 81bb5a9b-762f-4fd6-b1ca-db150b343d52 + content-length: + - '0' + date: + - Thu, 23 Apr 2020 22:39:40 GMT + location: + - https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/5692beda-52d5-4278-b8ef-b076f8a2d9f8 + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '256' + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/5692beda-52d5-4278-b8ef-b076f8a2d9f8?includeKeys=true + response: + body: + string: '{"modelInfo":{"modelId":"5692beda-52d5-4278-b8ef-b076f8a2d9f8","status":"ready","createdDateTime":"2020-04-23T22:39:40Z","lastUpdatedDateTime":"2020-04-23T22:39:42Z"},"trainResult":{"averageModelAccuracy":0.889,"trainingDocuments":[{"documentName":"multipage_invoice1.pdf","pages":3,"status":"succeeded"},{"documentName":"multipage_invoice2.pdf","pages":3,"status":"succeeded"},{"documentName":"multipage_invoice3.pdf","pages":3,"status":"succeeded"},{"documentName":"multipage_invoice4.pdf","pages":3,"status":"succeeded"},{"documentName":"multipage_invoice5.pdf","pages":3,"status":"succeeded"}],"fields":[{"fieldName":"Customer2","accuracy":1.0},{"fieldName":"CustomerAddress","accuracy":1.0},{"fieldName":"CustomerName","accuracy":1.0},{"fieldName":"CustomerPhoneNumber","accuracy":1.0},{"fieldName":"FirstItem","accuracy":1.0},{"fieldName":"FirstPrice","accuracy":1.0},{"fieldName":"FirstQuantity","accuracy":1.0},{"fieldName":"Merchant","accuracy":0.0},{"fieldName":"Merchant2","accuracy":0.0},{"fieldName":"MerchantAddress","accuracy":1.0},{"fieldName":"MerchantPhoneNumber","accuracy":1.0},{"fieldName":"Signature","accuracy":1.0},{"fieldName":"Signature2","accuracy":1.0},{"fieldName":"Subtotal","accuracy":1.0},{"fieldName":"Tax","accuracy":1.0},{"fieldName":"Tip","accuracy":1.0},{"fieldName":"Total","accuracy":1.0},{"fieldName":"Total2","accuracy":1.0}],"errors":[]}}' + headers: + apim-request-id: + - a2fc950c-d791-4eb1-923e-5242df42d618 + content-type: + - application/json; charset=utf-8 + date: + - Thu, 23 Apr 2020 22:39:45 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + transfer-encoding: + - chunked + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '62' + status: + code: 200 + message: OK +version: 1 diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_training.test_training_multipage.yaml b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_training.test_training_multipage.yaml new file mode 100644 index 000000000000..fc8108e81892 --- /dev/null +++ b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_training.test_training_multipage.yaml @@ -0,0 +1,148 @@ +interactions: +- request: + body: 'b''{"source": "containersasurl", "sourceFilter": {"prefix": "", "includeSubFolders": + false}, "useLabelFile": false}''' + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '303' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models + response: + body: + string: '' + headers: + apim-request-id: + - f136568e-e749-47a1-aeaa-16876930b28a + content-length: + - '0' + date: + - Thu, 23 Apr 2020 22:05:35 GMT + location: + - https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/bbfa740c-ba21-4b45-a334-d3778a9c5fbc + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '223' + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/bbfa740c-ba21-4b45-a334-d3778a9c5fbc?includeKeys=true + response: + body: + string: '{"modelInfo":{"modelId":"bbfa740c-ba21-4b45-a334-d3778a9c5fbc","status":"creating","createdDateTime":"2020-04-23T22:05:36Z","lastUpdatedDateTime":"2020-04-23T22:05:36Z"}}' + headers: + apim-request-id: + - f7701663-635a-4bef-bc55-0896a0a019a6 + content-type: + - application/json; charset=utf-8 + date: + - Thu, 23 Apr 2020 22:05:41 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + transfer-encoding: + - chunked + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '283' + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/bbfa740c-ba21-4b45-a334-d3778a9c5fbc?includeKeys=true + response: + body: + string: '{"modelInfo":{"modelId":"bbfa740c-ba21-4b45-a334-d3778a9c5fbc","status":"creating","createdDateTime":"2020-04-23T22:05:36Z","lastUpdatedDateTime":"2020-04-23T22:05:36Z"}}' + headers: + apim-request-id: + - 0714d386-cdf0-4d54-864c-734620e30601 + content-type: + - application/json; charset=utf-8 + date: + - Thu, 23 Apr 2020 22:05:47 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + transfer-encoding: + - chunked + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '183' + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/bbfa740c-ba21-4b45-a334-d3778a9c5fbc?includeKeys=true + response: + body: + string: '{"modelInfo":{"modelId":"bbfa740c-ba21-4b45-a334-d3778a9c5fbc","status":"ready","createdDateTime":"2020-04-23T22:05:36Z","lastUpdatedDateTime":"2020-04-23T22:05:48Z"},"keys":{"clusters":{"0":["Address:","Invoice + For:","Redmond, WA","Signature:","Subtotal:","Tax:","Tip:","Total:"]}},"trainResult":{"trainingDocuments":[{"documentName":"multipage_invoice1.pdf","pages":3,"errors":[],"status":"succeeded"},{"documentName":"multipage_invoice2.pdf","pages":3,"errors":[],"status":"succeeded"},{"documentName":"multipage_invoice3.pdf","pages":3,"errors":[],"status":"succeeded"},{"documentName":"multipage_invoice4.pdf","pages":3,"errors":[],"status":"succeeded"},{"documentName":"multipage_invoice5.pdf","pages":3,"errors":[],"status":"succeeded"}],"errors":[]}}' + headers: + apim-request-id: + - 3470021a-74e8-4deb-a457-0c044029946c + content-type: + - application/json; charset=utf-8 + date: + - Thu, 23 Apr 2020 22:05:52 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + transfer-encoding: + - chunked + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '52' + status: + code: 200 + message: OK +version: 1 diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_training.test_training_multipage_transform.yaml b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_training.test_training_multipage_transform.yaml new file mode 100644 index 000000000000..1abd4c30e6bb --- /dev/null +++ b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_training.test_training_multipage_transform.yaml @@ -0,0 +1,148 @@ +interactions: +- request: + body: 'b''{"source": "containersasurl", "sourceFilter": {"prefix": "", "includeSubFolders": + false}, "useLabelFile": false}''' + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '311' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models + response: + body: + string: '' + headers: + apim-request-id: + - 1e1514df-2cbb-4986-890a-21a1e0533138 + content-length: + - '0' + date: + - Thu, 23 Apr 2020 22:17:26 GMT + location: + - https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/9e132a67-e67d-4a9b-ac93-819107f9a16f + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '218' + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/9e132a67-e67d-4a9b-ac93-819107f9a16f?includeKeys=true + response: + body: + string: '{"modelInfo":{"modelId":"9e132a67-e67d-4a9b-ac93-819107f9a16f","status":"creating","createdDateTime":"2020-04-23T22:17:26Z","lastUpdatedDateTime":"2020-04-23T22:17:26Z"}}' + headers: + apim-request-id: + - fb53881e-94ac-45b5-974f-31e0e39f506f + content-type: + - application/json; charset=utf-8 + date: + - Thu, 23 Apr 2020 22:17:31 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + transfer-encoding: + - chunked + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '124' + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/9e132a67-e67d-4a9b-ac93-819107f9a16f?includeKeys=true + response: + body: + string: '{"modelInfo":{"modelId":"9e132a67-e67d-4a9b-ac93-819107f9a16f","status":"creating","createdDateTime":"2020-04-23T22:17:26Z","lastUpdatedDateTime":"2020-04-23T22:17:26Z"}}' + headers: + apim-request-id: + - b95ce6c9-5212-45e1-b322-2a89869d707a + content-type: + - application/json; charset=utf-8 + date: + - Thu, 23 Apr 2020 22:17:36 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + transfer-encoding: + - chunked + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '110' + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/9e132a67-e67d-4a9b-ac93-819107f9a16f?includeKeys=true + response: + body: + string: '{"modelInfo":{"modelId":"9e132a67-e67d-4a9b-ac93-819107f9a16f","status":"ready","createdDateTime":"2020-04-23T22:17:26Z","lastUpdatedDateTime":"2020-04-23T22:17:39Z"},"keys":{"clusters":{"0":["Address:","Invoice + For:","Redmond, WA","Signature:","Subtotal:","Tax:","Tip:","Total:"]}},"trainResult":{"trainingDocuments":[{"documentName":"multipage_invoice1.pdf","pages":3,"errors":[],"status":"succeeded"},{"documentName":"multipage_invoice2.pdf","pages":3,"errors":[],"status":"succeeded"},{"documentName":"multipage_invoice3.pdf","pages":3,"errors":[],"status":"succeeded"},{"documentName":"multipage_invoice4.pdf","pages":3,"errors":[],"status":"succeeded"},{"documentName":"multipage_invoice5.pdf","pages":3,"errors":[],"status":"succeeded"}],"errors":[]}}' + headers: + apim-request-id: + - e0ebd4ed-3aa0-4f4c-a7c2-a62e20f7b162 + content-type: + - application/json; charset=utf-8 + date: + - Thu, 23 Apr 2020 22:17:41 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + transfer-encoding: + - chunked + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '147' + status: + code: 200 + message: OK +version: 1 diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_training.test_training_multipage_with_labels.yaml b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_training.test_training_multipage_with_labels.yaml new file mode 100644 index 000000000000..47a2210ff5fe --- /dev/null +++ b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_training.test_training_multipage_with_labels.yaml @@ -0,0 +1,77 @@ +interactions: +- request: + body: 'b''{"source": "containersasurl", "sourceFilter": {"prefix": "", "includeSubFolders": + false}, "useLabelFile": true}''' + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '314' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models + response: + body: + string: '' + headers: + apim-request-id: + - f4f8444d-5323-418a-97c7-880d0df117f4 + content-length: + - '0' + date: + - Thu, 23 Apr 2020 22:22:33 GMT + location: + - https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/12e9a99f-37f4-4238-a8b9-3bbb938d182a + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '242' + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/12e9a99f-37f4-4238-a8b9-3bbb938d182a?includeKeys=true + response: + body: + string: '{"modelInfo":{"modelId":"12e9a99f-37f4-4238-a8b9-3bbb938d182a","status":"ready","createdDateTime":"2020-04-23T22:22:34Z","lastUpdatedDateTime":"2020-04-23T22:22:35Z"},"trainResult":{"averageModelAccuracy":0.889,"trainingDocuments":[{"documentName":"multipage_invoice1.pdf","pages":3,"status":"succeeded"},{"documentName":"multipage_invoice2.pdf","pages":3,"status":"succeeded"},{"documentName":"multipage_invoice3.pdf","pages":3,"status":"succeeded"},{"documentName":"multipage_invoice4.pdf","pages":3,"status":"succeeded"},{"documentName":"multipage_invoice5.pdf","pages":3,"status":"succeeded"}],"fields":[{"fieldName":"Customer2","accuracy":1.0},{"fieldName":"CustomerAddress","accuracy":1.0},{"fieldName":"CustomerName","accuracy":1.0},{"fieldName":"CustomerPhoneNumber","accuracy":1.0},{"fieldName":"FirstItem","accuracy":1.0},{"fieldName":"FirstPrice","accuracy":1.0},{"fieldName":"FirstQuantity","accuracy":1.0},{"fieldName":"Merchant","accuracy":0.0},{"fieldName":"Merchant2","accuracy":0.0},{"fieldName":"MerchantAddress","accuracy":1.0},{"fieldName":"MerchantPhoneNumber","accuracy":1.0},{"fieldName":"Signature","accuracy":1.0},{"fieldName":"Signature2","accuracy":1.0},{"fieldName":"Subtotal","accuracy":1.0},{"fieldName":"Tax","accuracy":1.0},{"fieldName":"Tip","accuracy":1.0},{"fieldName":"Total","accuracy":1.0},{"fieldName":"Total2","accuracy":1.0}],"errors":[]}}' + headers: + apim-request-id: + - d533de3a-8b08-4a94-bdef-b60a9f009464 + content-type: + - application/json; charset=utf-8 + date: + - Thu, 23 Apr 2020 22:22:44 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + transfer-encoding: + - chunked + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '5260' + status: + code: 200 + message: OK +version: 1 diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_training.test_training_with_files_filter.yaml b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_training.test_training_with_files_filter.yaml index dbc70ff61806..acf44611b3bc 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_training.test_training_with_files_filter.yaml +++ b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_training.test_training_with_files_filter.yaml @@ -10,7 +10,7 @@ interactions: Connection: - keep-alive Content-Length: - - '314' + - '310' Content-Type: - application/json User-Agent: @@ -23,19 +23,19 @@ interactions: string: '' headers: apim-request-id: - - d2b360e4-64d1-4449-befc-7e40779b1cb6 + - 424d31c7-d7bb-4a20-97fa-e7da234638d1 content-length: - '0' date: - - Wed, 15 Apr 2020 19:13:17 GMT + - Thu, 23 Apr 2020 22:48:10 GMT location: - - https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/3d013ff6-7ceb-42b7-8e16-792c63dcf6e7 + - https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/bd3bf895-5f84-4904-a199-37115d0bed07 strict-transport-security: - max-age=31536000; includeSubDomains; preload x-content-type-options: - nosniff x-envoy-upstream-service-time: - - '130' + - '205' status: code: 201 message: Created @@ -52,17 +52,17 @@ interactions: - azsdk-python-ai-formrecognizer/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) Python/3.7.3 (Windows-10-10.0.18362-SP0) method: GET - uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/3d013ff6-7ceb-42b7-8e16-792c63dcf6e7?includeKeys=true + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/bd3bf895-5f84-4904-a199-37115d0bed07?includeKeys=true response: body: - string: '{"modelInfo":{"modelId":"3d013ff6-7ceb-42b7-8e16-792c63dcf6e7","status":"creating","createdDateTime":"2020-04-15T19:13:18Z","lastUpdatedDateTime":"2020-04-15T19:13:18Z"}}' + string: '{"modelInfo":{"modelId":"bd3bf895-5f84-4904-a199-37115d0bed07","status":"creating","createdDateTime":"2020-04-23T22:48:11Z","lastUpdatedDateTime":"2020-04-23T22:48:11Z"}}' headers: apim-request-id: - - c5e8bc16-e864-43d4-bbbb-743c07720cf5 + - c6460730-fb46-4f46-84e2-bc994d500ff6 content-type: - application/json; charset=utf-8 date: - - Wed, 15 Apr 2020 19:13:22 GMT + - Thu, 23 Apr 2020 22:48:16 GMT strict-transport-security: - max-age=31536000; includeSubDomains; preload transfer-encoding: @@ -70,7 +70,7 @@ interactions: x-content-type-options: - nosniff x-envoy-upstream-service-time: - - '45' + - '27' status: code: 200 message: OK @@ -87,21 +87,175 @@ interactions: - azsdk-python-ai-formrecognizer/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) Python/3.7.3 (Windows-10-10.0.18362-SP0) method: GET - uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/3d013ff6-7ceb-42b7-8e16-792c63dcf6e7?includeKeys=true + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/bd3bf895-5f84-4904-a199-37115d0bed07?includeKeys=true response: body: - string: '{"modelInfo":{"modelId":"3d013ff6-7ceb-42b7-8e16-792c63dcf6e7","status":"ready","createdDateTime":"2020-04-15T19:13:18Z","lastUpdatedDateTime":"2020-04-15T19:13:26Z"},"keys":{"clusters":{"0":["Additional + string: '{"modelInfo":{"modelId":"bd3bf895-5f84-4904-a199-37115d0bed07","status":"ready","createdDateTime":"2020-04-23T22:48:11Z","lastUpdatedDateTime":"2020-04-23T22:48:18Z"},"keys":{"clusters":{"0":["Additional Notes:","Address:","Address:","Company Name:","Company Phone:","Dated As:","Email:","Hero Limited","Name:","Phone:","Phone:","Purchase Order","Purchase Order","Purchase Order #:","SUBTOTAL","Seattle, WA 93849 Phone:","Shipped From","Shipped To","TAX","TOTAL","Vendor Name:","Website:"]}},"trainResult":{"trainingDocuments":[{"documentName":"Form_1.jpg","pages":1,"errors":[],"status":"succeeded"},{"documentName":"Form_2.jpg","pages":1,"errors":[],"status":"succeeded"},{"documentName":"Form_3.jpg","pages":1,"errors":[],"status":"succeeded"},{"documentName":"Form_4.jpg","pages":1,"errors":[],"status":"succeeded"},{"documentName":"Form_5.jpg","pages":1,"errors":[],"status":"succeeded"},{"documentName":"subfolder/Form_6.jpg","pages":1,"errors":[],"status":"succeeded"}],"errors":[]}}' headers: apim-request-id: - - 238c705b-e045-42fd-a80e-8aa74c0fcbc7 + - 76861996-1a50-47ef-a42e-02b1a9ba9136 + content-type: + - application/json; charset=utf-8 + date: + - Thu, 23 Apr 2020 22:48:21 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + transfer-encoding: + - chunked + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '181' + status: + code: 200 + message: OK +- request: + body: 'b''{"source": "containersasurl", "sourceFilter": {"prefix": "subfolder", + "includeSubFolders": true}, "useLabelFile": false}''' + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '319' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models + response: + body: + string: '' + headers: + apim-request-id: + - da2ed493-47ca-45a3-b2a3-3bc5d5e17285 + content-length: + - '0' + date: + - Thu, 23 Apr 2020 22:48:21 GMT + location: + - https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/c24638d7-ae95-4dde-ae68-c24b49b5dd75 + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '60' + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/c24638d7-ae95-4dde-ae68-c24b49b5dd75?includeKeys=true + response: + body: + string: '{"modelInfo":{"modelId":"c24638d7-ae95-4dde-ae68-c24b49b5dd75","status":"ready","createdDateTime":"2020-04-23T22:48:21Z","lastUpdatedDateTime":"2020-04-23T22:48:24Z"},"keys":{"clusters":{"0":["Address:","Company + Name:","Company Phone:","Dated As:","Name:","Phone:","Purchase Order #:","Vendor + Name:","Website:"]}},"trainResult":{"trainingDocuments":[{"documentName":"subfolder/Form_6.jpg","pages":1,"errors":[],"status":"succeeded"}],"errors":[]}}' + headers: + apim-request-id: + - 310a7be6-7518-4925-9667-460326f9b776 + content-type: + - application/json; charset=utf-8 + date: + - Thu, 23 Apr 2020 22:48:26 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + transfer-encoding: + - chunked + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '108' + status: + code: 200 + message: OK +- request: + body: 'b''{"source": "containersasurl", "sourceFilter": {"prefix": "xxx", "includeSubFolders": + false}, "useLabelFile": false}''' + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '314' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models + response: + body: + string: '' + headers: + apim-request-id: + - 24f08692-cd58-49a7-95e7-32a3131ece27 + content-length: + - '0' + date: + - Thu, 23 Apr 2020 22:48:26 GMT + location: + - https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/09edc39c-8502-404d-a0d6-f11bb4b64688 + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '50' + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/09edc39c-8502-404d-a0d6-f11bb4b64688?includeKeys=true + response: + body: + string: '{"modelInfo":{"modelId":"09edc39c-8502-404d-a0d6-f11bb4b64688","status":"invalid","createdDateTime":"2020-04-23T22:48:26Z","lastUpdatedDateTime":"2020-04-23T22:48:27Z"},"keys":{"clusters":{}},"trainResult":{"trainingDocuments":[],"errors":[{"code":"2014","message":"No + valid blobs found in the specified Azure blob container. Please conform to + the document format/size/page/dimensions requirements."}]}}' + headers: + apim-request-id: + - 7a2e3783-6388-4e98-9084-a173f15051be content-type: - application/json; charset=utf-8 date: - - Wed, 15 Apr 2020 19:13:27 GMT + - Thu, 23 Apr 2020 22:48:31 GMT strict-transport-security: - max-age=31536000; includeSubDomains; preload transfer-encoding: @@ -109,7 +263,7 @@ interactions: x-content-type-options: - nosniff x-envoy-upstream-service-time: - - '67' + - '112' status: code: 200 message: OK diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_training_async.test_train_multipage_w_lbls_trnsfrm.yaml b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_training_async.test_train_multipage_w_lbls_trnsfrm.yaml new file mode 100644 index 000000000000..7ef614dddfa6 --- /dev/null +++ b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_training_async.test_train_multipage_w_lbls_trnsfrm.yaml @@ -0,0 +1,53 @@ +interactions: +- request: + body: 'b''{"source": "containersasurl", "sourceFilter": {"prefix": "", "includeSubFolders": + false}, "useLabelFile": true}''' + headers: + Content-Length: + - '318' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models + response: + body: + string: '' + headers: + apim-request-id: 7f79398c-1505-4c57-984d-bfad46072cd1 + content-length: '0' + date: Thu, 23 Apr 2020 23:09:20 GMT + location: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/12c78c33-7f73-4903-9568-51977a6684cd + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '248' + status: + code: 201 + message: Created + url: https://westus.api.cognitive.microsoft.com//formrecognizer/v2.0-preview/custom/models +- request: + body: null + headers: + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/12c78c33-7f73-4903-9568-51977a6684cd?includeKeys=true + response: + body: + string: '{"modelInfo":{"modelId":"12c78c33-7f73-4903-9568-51977a6684cd","status":"ready","createdDateTime":"2020-04-23T23:09:20Z","lastUpdatedDateTime":"2020-04-23T23:09:21Z"},"trainResult":{"averageModelAccuracy":0.889,"trainingDocuments":[{"documentName":"multipage_invoice1.pdf","pages":3,"status":"succeeded"},{"documentName":"multipage_invoice2.pdf","pages":3,"status":"succeeded"},{"documentName":"multipage_invoice3.pdf","pages":3,"status":"succeeded"},{"documentName":"multipage_invoice4.pdf","pages":3,"status":"succeeded"},{"documentName":"multipage_invoice5.pdf","pages":3,"status":"succeeded"}],"fields":[{"fieldName":"Customer2","accuracy":1.0},{"fieldName":"CustomerAddress","accuracy":1.0},{"fieldName":"CustomerName","accuracy":1.0},{"fieldName":"CustomerPhoneNumber","accuracy":1.0},{"fieldName":"FirstItem","accuracy":1.0},{"fieldName":"FirstPrice","accuracy":1.0},{"fieldName":"FirstQuantity","accuracy":1.0},{"fieldName":"Merchant","accuracy":0.0},{"fieldName":"Merchant2","accuracy":0.0},{"fieldName":"MerchantAddress","accuracy":1.0},{"fieldName":"MerchantPhoneNumber","accuracy":1.0},{"fieldName":"Signature","accuracy":1.0},{"fieldName":"Signature2","accuracy":1.0},{"fieldName":"Subtotal","accuracy":1.0},{"fieldName":"Tax","accuracy":1.0},{"fieldName":"Tip","accuracy":1.0},{"fieldName":"Total","accuracy":1.0},{"fieldName":"Total2","accuracy":1.0}],"errors":[]}}' + headers: + apim-request-id: b94f76fb-c8a8-4ba5-8cb6-3488bae85b45 + content-type: application/json; charset=utf-8 + date: Thu, 23 Apr 2020 23:09:25 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + transfer-encoding: chunked + x-content-type-options: nosniff + x-envoy-upstream-service-time: '125' + status: + code: 200 + message: OK + url: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/12c78c33-7f73-4903-9568-51977a6684cd?includeKeys=true +version: 1 diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_training_async.test_training_multipage.yaml b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_training_async.test_training_multipage.yaml new file mode 100644 index 000000000000..2ba1c31ec823 --- /dev/null +++ b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_training_async.test_training_multipage.yaml @@ -0,0 +1,100 @@ +interactions: +- request: + body: 'b''{"source": "containersasurl", "sourceFilter": {"prefix": "", "includeSubFolders": + false}, "useLabelFile": false}''' + headers: + Content-Length: + - '313' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models + response: + body: + string: '' + headers: + apim-request-id: 25966bf5-95ad-456c-a1cd-32b069783ade + content-length: '0' + date: Thu, 23 Apr 2020 22:59:56 GMT + location: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/1e3ff71d-d737-46c1-a1a3-5de303dc7a2e + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '409' + status: + code: 201 + message: Created + url: https://westus.api.cognitive.microsoft.com//formrecognizer/v2.0-preview/custom/models +- request: + body: null + headers: + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/1e3ff71d-d737-46c1-a1a3-5de303dc7a2e?includeKeys=true + response: + body: + string: '{"modelInfo":{"modelId":"1e3ff71d-d737-46c1-a1a3-5de303dc7a2e","status":"creating","createdDateTime":"2020-04-23T22:59:56Z","lastUpdatedDateTime":"2020-04-23T22:59:56Z"}}' + headers: + apim-request-id: a962fb9b-91eb-4d2d-9ef5-933571a82efc + content-type: application/json; charset=utf-8 + date: Thu, 23 Apr 2020 23:00:01 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + transfer-encoding: chunked + x-content-type-options: nosniff + x-envoy-upstream-service-time: '142' + status: + code: 200 + message: OK + url: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/1e3ff71d-d737-46c1-a1a3-5de303dc7a2e?includeKeys=true +- request: + body: null + headers: + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/1e3ff71d-d737-46c1-a1a3-5de303dc7a2e?includeKeys=true + response: + body: + string: '{"modelInfo":{"modelId":"1e3ff71d-d737-46c1-a1a3-5de303dc7a2e","status":"creating","createdDateTime":"2020-04-23T22:59:56Z","lastUpdatedDateTime":"2020-04-23T22:59:56Z"}}' + headers: + apim-request-id: db1703d8-a40f-4dea-88e3-613ddfad42f4 + content-type: application/json; charset=utf-8 + date: Thu, 23 Apr 2020 23:00:06 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + transfer-encoding: chunked + x-content-type-options: nosniff + x-envoy-upstream-service-time: '108' + status: + code: 200 + message: OK + url: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/1e3ff71d-d737-46c1-a1a3-5de303dc7a2e?includeKeys=true +- request: + body: null + headers: + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/1e3ff71d-d737-46c1-a1a3-5de303dc7a2e?includeKeys=true + response: + body: + string: '{"modelInfo":{"modelId":"1e3ff71d-d737-46c1-a1a3-5de303dc7a2e","status":"ready","createdDateTime":"2020-04-23T22:59:56Z","lastUpdatedDateTime":"2020-04-23T23:00:08Z"},"keys":{"clusters":{"0":["Address:","Invoice + For:","Redmond, WA","Signature:","Subtotal:","Tax:","Tip:","Total:"]}},"trainResult":{"trainingDocuments":[{"documentName":"multipage_invoice1.pdf","pages":3,"errors":[],"status":"succeeded"},{"documentName":"multipage_invoice2.pdf","pages":3,"errors":[],"status":"succeeded"},{"documentName":"multipage_invoice3.pdf","pages":3,"errors":[],"status":"succeeded"},{"documentName":"multipage_invoice4.pdf","pages":3,"errors":[],"status":"succeeded"},{"documentName":"multipage_invoice5.pdf","pages":3,"errors":[],"status":"succeeded"}],"errors":[]}}' + headers: + apim-request-id: f440222d-9b09-47eb-a112-29e0f56c8f13 + content-type: application/json; charset=utf-8 + date: Thu, 23 Apr 2020 23:00:11 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + transfer-encoding: chunked + x-content-type-options: nosniff + x-envoy-upstream-service-time: '45' + status: + code: 200 + message: OK + url: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/1e3ff71d-d737-46c1-a1a3-5de303dc7a2e?includeKeys=true +version: 1 diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_training_async.test_training_multipage_transform.yaml b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_training_async.test_training_multipage_transform.yaml new file mode 100644 index 000000000000..115f19584cd4 --- /dev/null +++ b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_training_async.test_training_multipage_transform.yaml @@ -0,0 +1,100 @@ +interactions: +- request: + body: 'b''{"source": "containersasurl", "sourceFilter": {"prefix": "", "includeSubFolders": + false}, "useLabelFile": false}''' + headers: + Content-Length: + - '317' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models + response: + body: + string: '' + headers: + apim-request-id: dfd3267c-2c54-42cf-ba42-05e9f1b28b04 + content-length: '0' + date: Thu, 23 Apr 2020 23:01:44 GMT + location: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/fdfaba1d-f180-4e8a-b9d0-dbdc7ff7e786 + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '484' + status: + code: 201 + message: Created + url: https://westus.api.cognitive.microsoft.com//formrecognizer/v2.0-preview/custom/models +- request: + body: null + headers: + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/fdfaba1d-f180-4e8a-b9d0-dbdc7ff7e786?includeKeys=true + response: + body: + string: '{"modelInfo":{"modelId":"fdfaba1d-f180-4e8a-b9d0-dbdc7ff7e786","status":"creating","createdDateTime":"2020-04-23T23:01:45Z","lastUpdatedDateTime":"2020-04-23T23:01:45Z"}}' + headers: + apim-request-id: 107cd2c7-891c-40d8-873f-1b5c969d9d37 + content-type: application/json; charset=utf-8 + date: Thu, 23 Apr 2020 23:01:49 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + transfer-encoding: chunked + x-content-type-options: nosniff + x-envoy-upstream-service-time: '125' + status: + code: 200 + message: OK + url: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/fdfaba1d-f180-4e8a-b9d0-dbdc7ff7e786?includeKeys=true +- request: + body: null + headers: + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/fdfaba1d-f180-4e8a-b9d0-dbdc7ff7e786?includeKeys=true + response: + body: + string: '{"modelInfo":{"modelId":"fdfaba1d-f180-4e8a-b9d0-dbdc7ff7e786","status":"creating","createdDateTime":"2020-04-23T23:01:45Z","lastUpdatedDateTime":"2020-04-23T23:01:45Z"}}' + headers: + apim-request-id: 4e0a97f8-9417-4003-a942-e84f38d73a35 + content-type: application/json; charset=utf-8 + date: Thu, 23 Apr 2020 23:01:55 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + transfer-encoding: chunked + x-content-type-options: nosniff + x-envoy-upstream-service-time: '199' + status: + code: 200 + message: OK + url: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/fdfaba1d-f180-4e8a-b9d0-dbdc7ff7e786?includeKeys=true +- request: + body: null + headers: + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/fdfaba1d-f180-4e8a-b9d0-dbdc7ff7e786?includeKeys=true + response: + body: + string: '{"modelInfo":{"modelId":"fdfaba1d-f180-4e8a-b9d0-dbdc7ff7e786","status":"ready","createdDateTime":"2020-04-23T23:01:45Z","lastUpdatedDateTime":"2020-04-23T23:01:57Z"},"keys":{"clusters":{"0":["Address:","Invoice + For:","Redmond, WA","Signature:","Subtotal:","Tax:","Tip:","Total:"]}},"trainResult":{"trainingDocuments":[{"documentName":"multipage_invoice1.pdf","pages":3,"errors":[],"status":"succeeded"},{"documentName":"multipage_invoice2.pdf","pages":3,"errors":[],"status":"succeeded"},{"documentName":"multipage_invoice3.pdf","pages":3,"errors":[],"status":"succeeded"},{"documentName":"multipage_invoice4.pdf","pages":3,"errors":[],"status":"succeeded"},{"documentName":"multipage_invoice5.pdf","pages":3,"errors":[],"status":"succeeded"}],"errors":[]}}' + headers: + apim-request-id: eee8c136-5af2-45cd-998d-f6a100e7c005 + content-type: application/json; charset=utf-8 + date: Thu, 23 Apr 2020 23:02:00 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + transfer-encoding: chunked + x-content-type-options: nosniff + x-envoy-upstream-service-time: '47' + status: + code: 200 + message: OK + url: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/fdfaba1d-f180-4e8a-b9d0-dbdc7ff7e786?includeKeys=true +version: 1 diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_training_async.test_training_multipage_with_labels.yaml b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_training_async.test_training_multipage_with_labels.yaml new file mode 100644 index 000000000000..12e19fa9d0aa --- /dev/null +++ b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_training_async.test_training_multipage_with_labels.yaml @@ -0,0 +1,53 @@ +interactions: +- request: + body: 'b''{"source": "containersasurl", "sourceFilter": {"prefix": "", "includeSubFolders": + false}, "useLabelFile": true}''' + headers: + Content-Length: + - '318' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models + response: + body: + string: '' + headers: + apim-request-id: 26d1d99b-cc10-4af1-8351-df21a146df85 + content-length: '0' + date: Thu, 23 Apr 2020 23:04:08 GMT + location: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/236d377b-26f9-4959-b336-46dc6ce4c601 + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '32' + status: + code: 201 + message: Created + url: https://westus.api.cognitive.microsoft.com//formrecognizer/v2.0-preview/custom/models +- request: + body: null + headers: + User-Agent: + - azsdk-python-ai-formrecognizer/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/236d377b-26f9-4959-b336-46dc6ce4c601?includeKeys=true + response: + body: + string: '{"modelInfo":{"modelId":"236d377b-26f9-4959-b336-46dc6ce4c601","status":"ready","createdDateTime":"2020-04-23T23:04:09Z","lastUpdatedDateTime":"2020-04-23T23:04:10Z"},"trainResult":{"averageModelAccuracy":0.889,"trainingDocuments":[{"documentName":"multipage_invoice1.pdf","pages":3,"status":"succeeded"},{"documentName":"multipage_invoice2.pdf","pages":3,"status":"succeeded"},{"documentName":"multipage_invoice3.pdf","pages":3,"status":"succeeded"},{"documentName":"multipage_invoice4.pdf","pages":3,"status":"succeeded"},{"documentName":"multipage_invoice5.pdf","pages":3,"status":"succeeded"}],"fields":[{"fieldName":"Customer2","accuracy":1.0},{"fieldName":"CustomerAddress","accuracy":1.0},{"fieldName":"CustomerName","accuracy":1.0},{"fieldName":"CustomerPhoneNumber","accuracy":1.0},{"fieldName":"FirstItem","accuracy":1.0},{"fieldName":"FirstPrice","accuracy":1.0},{"fieldName":"FirstQuantity","accuracy":1.0},{"fieldName":"Merchant","accuracy":0.0},{"fieldName":"Merchant2","accuracy":0.0},{"fieldName":"MerchantAddress","accuracy":1.0},{"fieldName":"MerchantPhoneNumber","accuracy":1.0},{"fieldName":"Signature","accuracy":1.0},{"fieldName":"Signature2","accuracy":1.0},{"fieldName":"Subtotal","accuracy":1.0},{"fieldName":"Tax","accuracy":1.0},{"fieldName":"Tip","accuracy":1.0},{"fieldName":"Total","accuracy":1.0},{"fieldName":"Total2","accuracy":1.0}],"errors":[]}}' + headers: + apim-request-id: ea06128e-053a-4e5c-ac52-1470be413c3d + content-type: application/json; charset=utf-8 + date: Thu, 23 Apr 2020 23:04:13 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + transfer-encoding: chunked + x-content-type-options: nosniff + x-envoy-upstream-service-time: '118' + status: + code: 200 + message: OK + url: https://westus.api.cognitive.microsoft.com/formrecognizer/v2.0-preview/custom/models/236d377b-26f9-4959-b336-46dc6ce4c601?includeKeys=true +version: 1 diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/sample_forms/forms/blank.pdf b/sdk/formrecognizer/azure-ai-formrecognizer/tests/sample_forms/forms/blank.pdf new file mode 100644 index 000000000000..9bbfa949a1c8 Binary files /dev/null and b/sdk/formrecognizer/azure-ai-formrecognizer/tests/sample_forms/forms/blank.pdf differ diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/sample_forms/forms/multipage_invoice1.pdf b/sdk/formrecognizer/azure-ai-formrecognizer/tests/sample_forms/forms/multipage_invoice1.pdf new file mode 100644 index 000000000000..5ac1edf588c9 Binary files /dev/null and b/sdk/formrecognizer/azure-ai-formrecognizer/tests/sample_forms/forms/multipage_invoice1.pdf differ diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/sample_forms/training/Form_1.jpg b/sdk/formrecognizer/azure-ai-formrecognizer/tests/sample_forms/training/Form_1.jpg deleted file mode 100644 index 29cae664f1b8..000000000000 Binary files a/sdk/formrecognizer/azure-ai-formrecognizer/tests/sample_forms/training/Form_1.jpg and /dev/null differ diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/sample_forms/training/Form_1.jpg.labels.json b/sdk/formrecognizer/azure-ai-formrecognizer/tests/sample_forms/training/Form_1.jpg.labels.json deleted file mode 100644 index 82ba91c2d746..000000000000 --- a/sdk/formrecognizer/azure-ai-formrecognizer/tests/sample_forms/training/Form_1.jpg.labels.json +++ /dev/null @@ -1,527 +0,0 @@ -{ - "document": "Form_1.jpg", - "labels": [ - { - "label": "Merchant", - "key": null, - "value": [ - { - "page": 1, - "text": "Hero", - "boundingBoxes": [ - [ - 0.3658823529411765, - 0.09409090909090909, - 0.46352941176470586, - 0.09272727272727273, - 0.46294117647058824, - 0.12090909090909091, - 0.3652941176470588, - 0.12090909090909091 - ] - ] - }, - { - "page": 1, - "text": "Limited", - "boundingBoxes": [ - [ - 0.47705882352941176, - 0.09272727272727273, - 0.6323529411764706, - 0.09181818181818181, - 0.6323529411764706, - 0.12090909090909091, - 0.47705882352941176, - 0.12090909090909091 - ] - ] - } - ] - }, - { - "label": "PhoneNumber", - "key": null, - "value": [ - { - "page": 1, - "text": "555-348-6512", - "boundingBoxes": [ - [ - 0.21588235294117647, - 0.15954545454545455, - 0.3111764705882353, - 0.16, - 0.3111764705882353, - 0.17, - 0.21588235294117647, - 0.17181818181818181 - ] - ] - } - ] - }, - { - "label": "Website", - "key": null, - "value": [ - { - "page": 1, - "text": "www.herolimited.com", - "boundingBoxes": [ - [ - 0.16176470588235295, - 0.17863636363636365, - 0.31058823529411766, - 0.17863636363636365, - 0.3111764705882353, - 0.19, - 0.16117647058823528, - 0.19045454545454546 - ] - ] - } - ] - }, - { - "label": "DatedAs", - "key": null, - "value": [ - { - "page": 1, - "text": "12/20/2020", - "boundingBoxes": [ - [ - 0.6876470588235294, - 0.19136363636363637, - 0.7747058823529411, - 0.19090909090909092, - 0.7747058823529411, - 0.20454545454545456, - 0.6870588235294117, - 0.20454545454545456 - ] - ] - } - ] - }, - { - "label": "Email", - "key": null, - "value": [ - { - "page": 1, - "text": "accounts@herolimited.com", - "boundingBoxes": [ - [ - 0.0976470588235294, - 0.22, - 0.27941176470588236, - 0.21818181818181817, - 0.2782352941176471, - 0.22863636363636364, - 0.0976470588235294, - 0.22863636363636364 - ] - ] - } - ] - }, - { - "label": "PurchaseOrderNumber", - "key": null, - "value": [ - { - "page": 1, - "text": "948284", - "boundingBoxes": [ - [ - 0.7547058823529412, - 0.20954545454545453, - 0.81, - 0.21, - 0.8094117647058824, - 0.22181818181818183, - 0.7541176470588236, - 0.22227272727272726 - ] - ] - } - ] - }, - { - "label": "VendorName", - "key": null, - "value": [ - { - "page": 1, - "text": "Hillary", - "boundingBoxes": [ - [ - 0.20705882352941177, - 0.2772727272727273, - 0.25529411764705884, - 0.2768181818181818, - 0.25470588235294117, - 0.2913636363636364, - 0.20647058823529413, - 0.2913636363636364 - ] - ] - }, - { - "page": 1, - "text": "Swank", - "boundingBoxes": [ - [ - 0.25823529411764706, - 0.2768181818181818, - 0.30470588235294116, - 0.2768181818181818, - 0.30411764705882355, - 0.2909090909090909, - 0.2576470588235294, - 0.2913636363636364 - ] - ] - } - ] - }, - { - "label": "CompanyName", - "key": null, - "value": [ - { - "page": 1, - "text": "Higgly", - "boundingBoxes": [ - [ - 0.22294117647058823, - 0.29409090909090907, - 0.26823529411764707, - 0.29409090909090907, - 0.2676470588235294, - 0.31, - 0.2223529411764706, - 0.31 - ] - ] - }, - { - "page": 1, - "text": "Wiggly", - "boundingBoxes": [ - [ - 0.27176470588235296, - 0.29409090909090907, - 0.32294117647058823, - 0.29363636363636364, - 0.32235294117647056, - 0.30863636363636365, - 0.2711764705882353, - 0.31 - ] - ] - }, - { - "page": 1, - "text": "Books", - "boundingBoxes": [ - [ - 0.3264705882352941, - 0.29363636363636364, - 0.37, - 0.29363636363636364, - 0.36941176470588233, - 0.30727272727272725, - 0.32588235294117646, - 0.30863636363636365 - ] - ] - } - ] - }, - { - "label": "CompanyAddress", - "key": null, - "value": [ - { - "page": 1, - "text": "938", - "boundingBoxes": [ - [ - 0.16294117647058823, - 0.31136363636363634, - 0.19058823529411764, - 0.31136363636363634, - 0.19058823529411764, - 0.3240909090909091, - 0.16294117647058823, - 0.3240909090909091 - ] - ] - }, - { - "page": 1, - "text": "NE", - "boundingBoxes": [ - [ - 0.19411764705882353, - 0.31136363636363634, - 0.21470588235294116, - 0.31136363636363634, - 0.21470588235294116, - 0.3240909090909091, - 0.1935294117647059, - 0.3240909090909091 - ] - ] - }, - { - "page": 1, - "text": "Burner", - "boundingBoxes": [ - [ - 0.21764705882352942, - 0.31136363636363634, - 0.26823529411764707, - 0.31136363636363634, - 0.26823529411764707, - 0.3240909090909091, - 0.21764705882352942, - 0.3240909090909091 - ] - ] - }, - { - "page": 1, - "text": "Road", - "boundingBoxes": [ - [ - 0.27176470588235296, - 0.31136363636363634, - 0.30941176470588233, - 0.3118181818181818, - 0.30941176470588233, - 0.3240909090909091, - 0.2711764705882353, - 0.3240909090909091 - ] - ] - }, - { - "page": 1, - "text": "Boulder", - "boundingBoxes": [ - [ - 0.16411764705882353, - 0.3286363636363636, - 0.22058823529411764, - 0.3277272727272727, - 0.22, - 0.3427272727272727, - 0.1635294117647059, - 0.3427272727272727 - ] - ] - }, - { - "page": 1, - "text": "City,", - "boundingBoxes": [ - [ - 0.22411764705882353, - 0.3277272727272727, - 0.2570588235294118, - 0.3277272727272727, - 0.2564705882352941, - 0.3422727272727273, - 0.2235294117647059, - 0.3427272727272727 - ] - ] - }, - { - "page": 1, - "text": "CO", - "boundingBoxes": [ - [ - 0.2605882352941176, - 0.3277272727272727, - 0.2817647058823529, - 0.3277272727272727, - 0.2811764705882353, - 0.3422727272727273, - 0.26, - 0.3422727272727273 - ] - ] - }, - { - "page": 1, - "text": "92848", - "boundingBoxes": [ - [ - 0.2852941176470588, - 0.3277272727272727, - 0.3341176470588235, - 0.3277272727272727, - 0.3341176470588235, - 0.34136363636363637, - 0.2847058823529412, - 0.3422727272727273 - ] - ] - } - ] - }, - { - "label": "CompanyPhoneNumber", - "key": null, - "value": [ - { - "page": 1, - "text": "938-294-2949", - "boundingBoxes": [ - [ - 0.4194117647058824, - 0.3281818181818182, - 0.52, - 0.3281818181818182, - 0.52, - 0.34045454545454545, - 0.4194117647058824, - 0.3409090909090909 - ] - ] - } - ] - }, - { - "label": "Quantity", - "key": null, - "value": [ - { - "page": 1, - "text": "20", - "boundingBoxes": [ - [ - 0.5064705882352941, - 0.4959090909090909, - 0.5252941176470588, - 0.495, - 0.5264705882352941, - 0.5081818181818182, - 0.5076470588235295, - 0.509090909090909 - ] - ] - } - ] - }, - { - "label": "Subtotal", - "key": null, - "value": [ - { - "page": 1, - "text": "$140.00", - "boundingBoxes": [ - [ - 0.8405882352941176, - 0.7145454545454546, - 0.9, - 0.7136363636363636, - 0.8994117647058824, - 0.7268181818181818, - 0.8405882352941176, - 0.7268181818181818 - ] - ] - } - ] - }, - { - "label": "Tax", - "key": null, - "value": [ - { - "page": 1, - "text": "$4.00", - "boundingBoxes": [ - [ - 0.8594117647058823, - 0.7340909090909091, - 0.9, - 0.7336363636363636, - 0.9, - 0.7459090909090909, - 0.8594117647058823, - 0.7463636363636363 - ] - ] - } - ] - }, - { - "label": "Signature", - "key": null, - "value": [ - { - "page": 1, - "text": "Bernie", - "boundingBoxes": [ - [ - 0.28411764705882353, - 0.76, - 0.3547058823529412, - 0.7595454545454545, - 0.35411764705882354, - 0.7759090909090909, - 0.28352941176470586, - 0.7759090909090909 - ] - ] - }, - { - "page": 1, - "text": "Sanders", - "boundingBoxes": [ - [ - 0.3611764705882353, - 0.7595454545454545, - 0.44941176470588234, - 0.759090909090909, - 0.44882352941176473, - 0.7768181818181819, - 0.36058823529411765, - 0.7763636363636364 - ] - ] - } - ] - }, - { - "label": "Total", - "key": null, - "value": [ - { - "page": 1, - "text": "$144.00", - "boundingBoxes": [ - [ - 0.8405882352941176, - 0.7595454545454545, - 0.8994117647058824, - 0.7586363636363637, - 0.9, - 0.7709090909090909, - 0.8405882352941176, - 0.7713636363636364 - ] - ] - } - ] - } - ] -} \ No newline at end of file diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/sample_forms/training/Form_1.jpg.ocr.json b/sdk/formrecognizer/azure-ai-formrecognizer/tests/sample_forms/training/Form_1.jpg.ocr.json deleted file mode 100644 index 48ce7cd0920d..000000000000 --- a/sdk/formrecognizer/azure-ai-formrecognizer/tests/sample_forms/training/Form_1.jpg.ocr.json +++ /dev/null @@ -1,3243 +0,0 @@ -{ - "status": "succeeded", - "createdDateTime": "2020-04-09T01:30:09Z", - "lastUpdatedDateTime": "2020-04-09T01:30:12Z", - "analyzeResult": { - "version": "2.0.0", - "readResults": [ - { - "page": 1, - "language": "en", - "angle": 0, - "width": 1700, - "height": 2200, - "unit": "pixel", - "lines": [ - { - "language": "en", - "boundingBox": [ - 137, - 140, - 351, - 140, - 351, - 167, - 137, - 166 - ], - "text": "Purchase Order", - "words": [ - { - "boundingBox": [ - 137, - 140, - 263, - 140, - 263, - 168, - 138, - 166 - ], - "text": "Purchase", - "confidence": 0.959 - }, - { - "boundingBox": [ - 271, - 140, - 351, - 140, - 351, - 168, - 272, - 168 - ], - "text": "Order", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 620, - 204, - 1073, - 201, - 1074, - 264, - 620, - 266 - ], - "text": "Hero Limited", - "words": [ - { - "boundingBox": [ - 622, - 207, - 788, - 204, - 787, - 266, - 621, - 266 - ], - "text": "Hero", - "confidence": 0.959 - }, - { - "boundingBox": [ - 811, - 204, - 1075, - 202, - 1075, - 266, - 811, - 266 - ], - "text": "Limited", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 165, - 351, - 529, - 350, - 530, - 377, - 165, - 379 - ], - "text": "Company Phone: 555-348-6512", - "words": [ - { - "boundingBox": [ - 167, - 352, - 275, - 351, - 275, - 379, - 167, - 379 - ], - "text": "Company", - "confidence": 0.959 - }, - { - "boundingBox": [ - 281, - 351, - 362, - 351, - 362, - 378, - 280, - 379 - ], - "text": "Phone:", - "confidence": 0.958 - }, - { - "boundingBox": [ - 367, - 351, - 529, - 352, - 529, - 374, - 367, - 378 - ], - "text": "555-348-6512", - "confidence": 0.946 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 1114, - 320, - 1551, - 320, - 1551, - 370, - 1114, - 370 - ], - "text": "Purchase Order", - "words": [ - { - "boundingBox": [ - 1115, - 322, - 1377, - 320, - 1377, - 371, - 1117, - 371 - ], - "text": "Purchase", - "confidence": 0.959 - }, - { - "boundingBox": [ - 1396, - 321, - 1550, - 321, - 1549, - 371, - 1396, - 371 - ], - "text": "Order", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 167, - 392, - 534, - 392, - 534, - 419, - 167, - 418 - ], - "text": "Website: www.herolimited.com", - "words": [ - { - "boundingBox": [ - 168, - 392, - 270, - 393, - 269, - 419, - 167, - 418 - ], - "text": "Website:", - "confidence": 0.957 - }, - { - "boundingBox": [ - 275, - 393, - 528, - 393, - 529, - 418, - 274, - 419 - ], - "text": "www.herolimited.com", - "confidence": 0.872 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 164, - 437, - 236, - 437, - 236, - 459, - 164, - 459 - ], - "text": "Email:", - "words": [ - { - "boundingBox": [ - 165, - 437, - 236, - 437, - 237, - 460, - 165, - 459 - ], - "text": "Email:", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 1025, - 420, - 1317, - 419, - 1317, - 449, - 1025, - 449 - ], - "text": "Dated As: 12/20/2020", - "words": [ - { - "boundingBox": [ - 1026, - 420, - 1112, - 421, - 1112, - 450, - 1025, - 449 - ], - "text": "Dated", - "confidence": 0.959 - }, - { - "boundingBox": [ - 1118, - 421, - 1163, - 421, - 1163, - 450, - 1117, - 450 - ], - "text": "As:", - "confidence": 0.957 - }, - { - "boundingBox": [ - 1169, - 421, - 1317, - 420, - 1317, - 450, - 1168, - 450 - ], - "text": "12/20/2020", - "confidence": 0.958 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 166, - 480, - 482, - 479, - 482, - 502, - 166, - 503 - ], - "text": "accounts@herolimited.com", - "words": [ - { - "boundingBox": [ - 166, - 484, - 475, - 480, - 473, - 503, - 166, - 503 - ], - "text": "accounts@herolimited.com", - "confidence": 0.856 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 1025, - 461, - 1376, - 461, - 1376, - 488, - 1025, - 490 - ], - "text": "Purchase Order #: 948284", - "words": [ - { - "boundingBox": [ - 1027, - 463, - 1154, - 461, - 1153, - 490, - 1026, - 489 - ], - "text": "Purchase", - "confidence": 0.959 - }, - { - "boundingBox": [ - 1161, - 461, - 1241, - 461, - 1240, - 490, - 1160, - 490 - ], - "text": "Order", - "confidence": 0.959 - }, - { - "boundingBox": [ - 1246, - 461, - 1278, - 461, - 1277, - 489, - 1246, - 489 - ], - "text": "#:", - "confidence": 0.959 - }, - { - "boundingBox": [ - 1283, - 461, - 1377, - 462, - 1376, - 488, - 1282, - 489 - ], - "text": "948284", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 166, - 546, - 397, - 546, - 397, - 594, - 166, - 594 - ], - "text": "Shipped To", - "words": [ - { - "boundingBox": [ - 167, - 546, - 336, - 548, - 337, - 593, - 168, - 595 - ], - "text": "Shipped", - "confidence": 0.959 - }, - { - "boundingBox": [ - 346, - 548, - 396, - 548, - 397, - 593, - 347, - 593 - ], - "text": "To", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 160, - 608, - 518, - 608, - 518, - 640, - 160, - 640 - ], - "text": "Vendor Name: Hillary Swank", - "words": [ - { - "boundingBox": [ - 162, - 610, - 257, - 610, - 255, - 640, - 160, - 637 - ], - "text": "Vendor", - "confidence": 0.959 - }, - { - "boundingBox": [ - 262, - 610, - 347, - 610, - 346, - 641, - 261, - 640 - ], - "text": "Name:", - "confidence": 0.959 - }, - { - "boundingBox": [ - 352, - 610, - 434, - 609, - 433, - 641, - 351, - 641 - ], - "text": "Hillary", - "confidence": 0.959 - }, - { - "boundingBox": [ - 439, - 609, - 518, - 609, - 517, - 640, - 438, - 641 - ], - "text": "Swank", - "confidence": 0.954 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 160, - 648, - 628, - 645, - 629, - 680, - 160, - 682 - ], - "text": "Company Name: Higgly Wiggly Books", - "words": [ - { - "boundingBox": [ - 162, - 648, - 282, - 647, - 281, - 681, - 161, - 678 - ], - "text": "Company", - "confidence": 0.959 - }, - { - "boundingBox": [ - 288, - 647, - 373, - 647, - 372, - 682, - 287, - 682 - ], - "text": "Name:", - "confidence": 0.911 - }, - { - "boundingBox": [ - 379, - 647, - 456, - 647, - 455, - 682, - 378, - 682 - ], - "text": "Higgly", - "confidence": 0.959 - }, - { - "boundingBox": [ - 462, - 647, - 549, - 646, - 548, - 679, - 461, - 682 - ], - "text": "Wiggly", - "confidence": 0.959 - }, - { - "boundingBox": [ - 555, - 646, - 629, - 646, - 628, - 676, - 554, - 679 - ], - "text": "Books", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 161, - 684, - 526, - 684, - 526, - 712, - 161, - 712 - ], - "text": "Address: 938 NE Burner Road", - "words": [ - { - "boundingBox": [ - 162, - 685, - 271, - 685, - 271, - 713, - 162, - 712 - ], - "text": "Address:", - "confidence": 0.958 - }, - { - "boundingBox": [ - 277, - 685, - 324, - 685, - 324, - 713, - 277, - 713 - ], - "text": "938", - "confidence": 0.947 - }, - { - "boundingBox": [ - 330, - 685, - 365, - 685, - 365, - 713, - 329, - 713 - ], - "text": "NE", - "confidence": 0.958 - }, - { - "boundingBox": [ - 370, - 685, - 456, - 685, - 456, - 713, - 370, - 713 - ], - "text": "Burner", - "confidence": 0.958 - }, - { - "boundingBox": [ - 462, - 685, - 526, - 686, - 526, - 713, - 461, - 713 - ], - "text": "Road", - "confidence": 0.958 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 274, - 722, - 603, - 720, - 604, - 751, - 274, - 754 - ], - "text": "Boulder City, CO 92848", - "words": [ - { - "boundingBox": [ - 279, - 723, - 375, - 721, - 374, - 754, - 278, - 754 - ], - "text": "Boulder", - "confidence": 0.959 - }, - { - "boundingBox": [ - 381, - 721, - 437, - 721, - 436, - 753, - 380, - 754 - ], - "text": "City,", - "confidence": 0.959 - }, - { - "boundingBox": [ - 443, - 721, - 479, - 721, - 478, - 753, - 442, - 753 - ], - "text": "CO", - "confidence": 0.886 - }, - { - "boundingBox": [ - 485, - 721, - 568, - 721, - 568, - 751, - 484, - 753 - ], - "text": "92848", - "confidence": 0.937 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 612, - 721, - 884, - 721, - 884, - 749, - 612, - 749 - ], - "text": "Phone: 938-294-2949", - "words": [ - { - "boundingBox": [ - 614, - 722, - 707, - 722, - 707, - 750, - 614, - 750 - ], - "text": "Phone:", - "confidence": 0.952 - }, - { - "boundingBox": [ - 713, - 722, - 884, - 722, - 884, - 749, - 713, - 750 - ], - "text": "938-294-2949", - "confidence": 0.956 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 165, - 783, - 451, - 783, - 451, - 827, - 166, - 830 - ], - "text": "Shipped From", - "words": [ - { - "boundingBox": [ - 167, - 784, - 336, - 784, - 335, - 829, - 166, - 830 - ], - "text": "Shipped", - "confidence": 0.867 - }, - { - "boundingBox": [ - 345, - 784, - 441, - 783, - 440, - 825, - 344, - 829 - ], - "text": "From", - "confidence": 0.918 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 165, - 851, - 446, - 851, - 446, - 881, - 165, - 880 - ], - "text": "Name: Bernie Sanders", - "words": [ - { - "boundingBox": [ - 166, - 851, - 252, - 853, - 251, - 880, - 165, - 881 - ], - "text": "Name:", - "confidence": 0.956 - }, - { - "boundingBox": [ - 258, - 853, - 339, - 854, - 337, - 880, - 257, - 880 - ], - "text": "Bernie", - "confidence": 0.958 - }, - { - "boundingBox": [ - 345, - 854, - 447, - 853, - 445, - 881, - 343, - 880 - ], - "text": "Sanders", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 164, - 889, - 629, - 889, - 629, - 920, - 164, - 920 - ], - "text": "Company Name: Jupiter Book Supply", - "words": [ - { - "boundingBox": [ - 167, - 891, - 287, - 890, - 287, - 920, - 166, - 920 - ], - "text": "Company", - "confidence": 0.958 - }, - { - "boundingBox": [ - 293, - 890, - 376, - 890, - 375, - 921, - 292, - 920 - ], - "text": "Name:", - "confidence": 0.958 - }, - { - "boundingBox": [ - 382, - 890, - 470, - 890, - 469, - 921, - 381, - 921 - ], - "text": "Jupiter", - "confidence": 0.958 - }, - { - "boundingBox": [ - 476, - 890, - 540, - 890, - 539, - 921, - 475, - 921 - ], - "text": "Book", - "confidence": 0.959 - }, - { - "boundingBox": [ - 546, - 890, - 629, - 890, - 629, - 921, - 545, - 921 - ], - "text": "Supply", - "confidence": 0.947 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 164, - 926, - 520, - 926, - 520, - 953, - 164, - 953 - ], - "text": "Address: 383 N Kinnick Road", - "words": [ - { - "boundingBox": [ - 166, - 927, - 277, - 927, - 277, - 953, - 165, - 954 - ], - "text": "Address:", - "confidence": 0.958 - }, - { - "boundingBox": [ - 283, - 927, - 330, - 927, - 329, - 953, - 282, - 953 - ], - "text": "383", - "confidence": 0.958 - }, - { - "boundingBox": [ - 335, - 927, - 353, - 927, - 352, - 953, - 334, - 953 - ], - "text": "N", - "confidence": 0.888 - }, - { - "boundingBox": [ - 362, - 927, - 452, - 927, - 451, - 954, - 361, - 953 - ], - "text": "Kinnick", - "confidence": 0.958 - }, - { - "boundingBox": [ - 457, - 927, - 521, - 927, - 521, - 954, - 457, - 954 - ], - "text": "Road", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 280, - 964, - 516, - 964, - 516, - 991, - 280, - 991 - ], - "text": "Seattle, WA 38383", - "words": [ - { - "boundingBox": [ - 284, - 965, - 381, - 965, - 380, - 992, - 283, - 992 - ], - "text": "Seattle,", - "confidence": 0.959 - }, - { - "boundingBox": [ - 386, - 965, - 432, - 965, - 431, - 992, - 385, - 992 - ], - "text": "WA", - "confidence": 0.944 - }, - { - "boundingBox": [ - 438, - 965, - 516, - 964, - 515, - 991, - 437, - 992 - ], - "text": "38383", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 759, - 963, - 1036, - 963, - 1036, - 991, - 759, - 991 - ], - "text": "Phone: 932-299-0292", - "words": [ - { - "boundingBox": [ - 761, - 964, - 854, - 963, - 852, - 991, - 760, - 990 - ], - "text": "Phone:", - "confidence": 0.959 - }, - { - "boundingBox": [ - 859, - 963, - 1034, - 964, - 1032, - 991, - 857, - 991 - ], - "text": "932-299-0292", - "confidence": 0.953 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 447, - 1045, - 557, - 1045, - 557, - 1079, - 447, - 1079 - ], - "text": "Details", - "words": [ - { - "boundingBox": [ - 448, - 1048, - 555, - 1046, - 556, - 1080, - 449, - 1079 - ], - "text": "Details", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 889, - 1045, - 1030, - 1046, - 1030, - 1084, - 889, - 1084 - ], - "text": "Quantity", - "words": [ - { - "boundingBox": [ - 889, - 1046, - 1029, - 1046, - 1027, - 1084, - 890, - 1083 - ], - "text": "Quantity", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 1114, - 1046, - 1271, - 1047, - 1271, - 1078, - 1114, - 1077 - ], - "text": "Unit Price", - "words": [ - { - "boundingBox": [ - 1114, - 1048, - 1184, - 1047, - 1184, - 1078, - 1114, - 1078 - ], - "text": "Unit", - "confidence": 0.959 - }, - { - "boundingBox": [ - 1190, - 1047, - 1271, - 1047, - 1271, - 1079, - 1190, - 1078 - ], - "text": "Price", - "confidence": 0.958 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 1384, - 1047, - 1469, - 1046, - 1470, - 1076, - 1385, - 1077 - ], - "text": "Total", - "words": [ - { - "boundingBox": [ - 1387, - 1047, - 1470, - 1046, - 1470, - 1076, - 1387, - 1077 - ], - "text": "Total", - "confidence": 0.858 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 172, - 1094, - 280, - 1096, - 279, - 1124, - 172, - 1121 - ], - "text": "Bindings", - "words": [ - { - "boundingBox": [ - 172, - 1094, - 278, - 1097, - 278, - 1124, - 172, - 1121 - ], - "text": "Bindings", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 859, - 1091, - 894, - 1089, - 895, - 1118, - 860, - 1120 - ], - "text": "20", - "words": [ - { - "boundingBox": [ - 861, - 1091, - 893, - 1089, - 895, - 1118, - 863, - 1120 - ], - "text": "20", - "confidence": 0.958 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 1241, - 1095, - 1296, - 1094, - 1296, - 1118, - 1241, - 1118 - ], - "text": "1.00", - "words": [ - { - "boundingBox": [ - 1242, - 1094, - 1295, - 1094, - 1295, - 1118, - 1242, - 1118 - ], - "text": "1.00", - "confidence": 0.958 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 1459, - 1095, - 1531, - 1093, - 1531, - 1118, - 1459, - 1119 - ], - "text": "20.00", - "words": [ - { - "boundingBox": [ - 1459, - 1094, - 1530, - 1093, - 1531, - 1118, - 1460, - 1119 - ], - "text": "20.00", - "confidence": 0.957 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 169, - 1135, - 329, - 1134, - 329, - 1162, - 169, - 1163 - ], - "text": "Covers Small", - "words": [ - { - "boundingBox": [ - 173, - 1135, - 257, - 1135, - 256, - 1163, - 172, - 1163 - ], - "text": "Covers", - "confidence": 0.959 - }, - { - "boundingBox": [ - 262, - 1135, - 329, - 1134, - 328, - 1163, - 262, - 1163 - ], - "text": "Small", - "confidence": 0.958 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 860, - 1137, - 893, - 1135, - 893, - 1158, - 861, - 1160 - ], - "text": "20", - "words": [ - { - "boundingBox": [ - 862, - 1137, - 892, - 1135, - 893, - 1158, - 863, - 1160 - ], - "text": "20", - "confidence": 0.958 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 1239, - 1136, - 1294, - 1135, - 1294, - 1159, - 1239, - 1159 - ], - "text": "1.00", - "words": [ - { - "boundingBox": [ - 1243, - 1135, - 1293, - 1135, - 1293, - 1159, - 1243, - 1159 - ], - "text": "1.00", - "confidence": 0.908 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 1457, - 1136, - 1532, - 1135, - 1532, - 1159, - 1457, - 1160 - ], - "text": "20.00", - "words": [ - { - "boundingBox": [ - 1459, - 1136, - 1529, - 1135, - 1530, - 1160, - 1459, - 1160 - ], - "text": "20.00", - "confidence": 0.958 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 170, - 1179, - 400, - 1178, - 400, - 1205, - 170, - 1206 - ], - "text": "Feather Bookmark", - "words": [ - { - "boundingBox": [ - 172, - 1180, - 271, - 1180, - 270, - 1206, - 171, - 1206 - ], - "text": "Feather", - "confidence": 0.959 - }, - { - "boundingBox": [ - 276, - 1180, - 401, - 1179, - 400, - 1206, - 275, - 1206 - ], - "text": "Bookmark", - "confidence": 0.949 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 863, - 1181, - 893, - 1180, - 893, - 1202, - 863, - 1203 - ], - "text": "20", - "words": [ - { - "boundingBox": [ - 863, - 1181, - 892, - 1180, - 892, - 1202, - 863, - 1203 - ], - "text": "20", - "confidence": 0.958 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 1239, - 1179, - 1295, - 1179, - 1295, - 1202, - 1239, - 1202 - ], - "text": "5,00", - "words": [ - { - "boundingBox": [ - 1241, - 1179, - 1294, - 1179, - 1294, - 1202, - 1241, - 1202 - ], - "text": "5,00", - "confidence": 0.423 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 1443, - 1180, - 1531, - 1179, - 1532, - 1203, - 1443, - 1204 - ], - "text": "100.00", - "words": [ - { - "boundingBox": [ - 1446, - 1181, - 1530, - 1180, - 1529, - 1203, - 1446, - 1204 - ], - "text": "100.00", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 168, - 1222, - 429, - 1221, - 429, - 1250, - 168, - 1252 - ], - "text": "Copper Swirl Marker", - "words": [ - { - "boundingBox": [ - 173, - 1223, - 263, - 1222, - 263, - 1252, - 172, - 1253 - ], - "text": "Copper", - "confidence": 0.959 - }, - { - "boundingBox": [ - 269, - 1222, - 332, - 1222, - 332, - 1251, - 269, - 1252 - ], - "text": "Swirl", - "confidence": 0.954 - }, - { - "boundingBox": [ - 338, - 1222, - 430, - 1222, - 430, - 1249, - 338, - 1251 - ], - "text": "Marker", - "confidence": 0.956 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 861, - 1223, - 893, - 1222, - 893, - 1246, - 861, - 1248 - ], - "text": "20", - "words": [ - { - "boundingBox": [ - 861, - 1223, - 892, - 1222, - 893, - 1246, - 862, - 1247 - ], - "text": "20", - "confidence": 0.958 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 1240, - 1222, - 1295, - 1223, - 1295, - 1246, - 1240, - 1245 - ], - "text": "5,00", - "words": [ - { - "boundingBox": [ - 1241, - 1222, - 1294, - 1223, - 1293, - 1246, - 1240, - 1245 - ], - "text": "5,00", - "confidence": 0.424 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 1443, - 1222, - 1531, - 1222, - 1531, - 1247, - 1443, - 1247 - ], - "text": "100.00", - "words": [ - { - "boundingBox": [ - 1445, - 1223, - 1529, - 1222, - 1529, - 1248, - 1444, - 1248 - ], - "text": "100.00", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 1148, - 1574, - 1296, - 1574, - 1296, - 1599, - 1148, - 1599 - ], - "text": "SUBTOTAL", - "words": [ - { - "boundingBox": [ - 1149, - 1574, - 1295, - 1575, - 1295, - 1600, - 1149, - 1600 - ], - "text": "SUBTOTAL", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 1428, - 1571, - 1530, - 1570, - 1531, - 1598, - 1428, - 1599 - ], - "text": "$140.00", - "words": [ - { - "boundingBox": [ - 1429, - 1572, - 1530, - 1570, - 1529, - 1599, - 1429, - 1599 - ], - "text": "$140.00", - "confidence": 0.957 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 1238, - 1619, - 1295, - 1618, - 1295, - 1642, - 1237, - 1642 - ], - "text": "TAX", - "words": [ - { - "boundingBox": [ - 1241, - 1618, - 1294, - 1618, - 1294, - 1641, - 1241, - 1642 - ], - "text": "TAX", - "confidence": 0.958 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 1460, - 1616, - 1531, - 1614, - 1531, - 1641, - 1460, - 1641 - ], - "text": "$4.00", - "words": [ - { - "boundingBox": [ - 1461, - 1615, - 1530, - 1614, - 1530, - 1641, - 1461, - 1642 - ], - "text": "$4.00", - "confidence": 0.939 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 481, - 1670, - 764, - 1670, - 764, - 1708, - 481, - 1708 - ], - "text": "Bernie Sanders", - "words": [ - { - "boundingBox": [ - 483, - 1672, - 603, - 1671, - 602, - 1707, - 482, - 1707 - ], - "text": "Bernie", - "confidence": 0.909 - }, - { - "boundingBox": [ - 614, - 1671, - 764, - 1670, - 763, - 1709, - 613, - 1708 - ], - "text": "Sanders", - "confidence": 0.958 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 1204, - 1672, - 1296, - 1672, - 1296, - 1699, - 1204, - 1699 - ], - "text": "TOTAL", - "words": [ - { - "boundingBox": [ - 1207, - 1674, - 1295, - 1672, - 1296, - 1700, - 1207, - 1699 - ], - "text": "TOTAL", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 1426, - 1670, - 1530, - 1669, - 1530, - 1695, - 1426, - 1697 - ], - "text": "$144.00", - "words": [ - { - "boundingBox": [ - 1429, - 1671, - 1529, - 1669, - 1530, - 1696, - 1429, - 1697 - ], - "text": "$144.00", - "confidence": 0.949 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 543, - 1718, - 716, - 1719, - 716, - 1743, - 543, - 1742 - ], - "text": "Bernie Sanders", - "words": [ - { - "boundingBox": [ - 544, - 1719, - 621, - 1719, - 621, - 1743, - 544, - 1743 - ], - "text": "Bernie", - "confidence": 0.959 - }, - { - "boundingBox": [ - 626, - 1719, - 717, - 1720, - 716, - 1744, - 626, - 1743 - ], - "text": "Sanders", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 581, - 1754, - 681, - 1756, - 680, - 1777, - 581, - 1776 - ], - "text": "Manager", - "words": [ - { - "boundingBox": [ - 582, - 1755, - 681, - 1756, - 680, - 1778, - 581, - 1776 - ], - "text": "Manager", - "confidence": 0.957 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 173, - 1796, - 480, - 1797, - 480, - 1832, - 173, - 1830 - ], - "text": "Additional Notes:", - "words": [ - { - "boundingBox": [ - 175, - 1798, - 360, - 1797, - 360, - 1833, - 174, - 1830 - ], - "text": "Additional", - "confidence": 0.959 - }, - { - "boundingBox": [ - 366, - 1797, - 481, - 1800, - 481, - 1832, - 366, - 1833 - ], - "text": "Notes:", - "confidence": 0.944 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 173, - 1879, - 705, - 1880, - 705, - 1912, - 173, - 1910 - ], - "text": "Do not Jostle Box. Unpack carefully. Enjoy.", - "words": [ - { - "boundingBox": [ - 176, - 1883, - 209, - 1882, - 208, - 1907, - 174, - 1906 - ], - "text": "Do", - "confidence": 0.959 - }, - { - "boundingBox": [ - 215, - 1882, - 261, - 1881, - 260, - 1908, - 214, - 1907 - ], - "text": "not", - "confidence": 0.951 - }, - { - "boundingBox": [ - 266, - 1881, - 336, - 1881, - 335, - 1909, - 265, - 1908 - ], - "text": "Jostle", - "confidence": 0.958 - }, - { - "boundingBox": [ - 342, - 1881, - 403, - 1880, - 402, - 1910, - 341, - 1909 - ], - "text": "Box.", - "confidence": 0.892 - }, - { - "boundingBox": [ - 410, - 1880, - 504, - 1880, - 503, - 1912, - 408, - 1911 - ], - "text": "Unpack", - "confidence": 0.959 - }, - { - "boundingBox": [ - 510, - 1880, - 628, - 1880, - 627, - 1913, - 509, - 1912 - ], - "text": "carefully.", - "confidence": 0.958 - }, - { - "boundingBox": [ - 633, - 1880, - 705, - 1881, - 704, - 1913, - 632, - 1913 - ], - "text": "Enjoy.", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 172, - 1923, - 1508, - 1924, - 1508, - 1959, - 172, - 1959 - ], - "text": "Jupiter Book Supply will refund you 50% per book if returned within 60 days of reading and", - "words": [ - { - "boundingBox": [ - 172, - 1925, - 273, - 1925, - 273, - 1959, - 172, - 1959 - ], - "text": "Jupiter", - "confidence": 0.955 - }, - { - "boundingBox": [ - 280, - 1924, - 359, - 1924, - 359, - 1959, - 280, - 1959 - ], - "text": "Book", - "confidence": 0.959 - }, - { - "boundingBox": [ - 366, - 1924, - 468, - 1924, - 467, - 1959, - 366, - 1959 - ], - "text": "Supply", - "confidence": 0.959 - }, - { - "boundingBox": [ - 474, - 1924, - 522, - 1924, - 521, - 1959, - 474, - 1959 - ], - "text": "will", - "confidence": 0.959 - }, - { - "boundingBox": [ - 529, - 1924, - 628, - 1924, - 628, - 1959, - 528, - 1959 - ], - "text": "refund", - "confidence": 0.958 - }, - { - "boundingBox": [ - 635, - 1924, - 692, - 1924, - 691, - 1959, - 634, - 1959 - ], - "text": "you", - "confidence": 0.958 - }, - { - "boundingBox": [ - 698, - 1924, - 762, - 1924, - 761, - 1959, - 698, - 1959 - ], - "text": "50%", - "confidence": 0.955 - }, - { - "boundingBox": [ - 773, - 1924, - 823, - 1924, - 822, - 1959, - 772, - 1959 - ], - "text": "per", - "confidence": 0.958 - }, - { - "boundingBox": [ - 830, - 1924, - 904, - 1924, - 903, - 1959, - 829, - 1959 - ], - "text": "book", - "confidence": 0.959 - }, - { - "boundingBox": [ - 911, - 1924, - 932, - 1924, - 931, - 1959, - 910, - 1959 - ], - "text": "if", - "confidence": 0.909 - }, - { - "boundingBox": [ - 938, - 1924, - 1065, - 1924, - 1064, - 1959, - 937, - 1959 - ], - "text": "returned", - "confidence": 0.959 - }, - { - "boundingBox": [ - 1072, - 1924, - 1160, - 1924, - 1159, - 1959, - 1071, - 1959 - ], - "text": "within", - "confidence": 0.959 - }, - { - "boundingBox": [ - 1167, - 1924, - 1208, - 1924, - 1206, - 1960, - 1166, - 1959 - ], - "text": "60", - "confidence": 0.929 - }, - { - "boundingBox": [ - 1215, - 1924, - 1287, - 1924, - 1285, - 1960, - 1213, - 1960 - ], - "text": "days", - "confidence": 0.959 - }, - { - "boundingBox": [ - 1294, - 1924, - 1323, - 1924, - 1322, - 1960, - 1292, - 1960 - ], - "text": "of", - "confidence": 0.958 - }, - { - "boundingBox": [ - 1330, - 1924, - 1443, - 1924, - 1441, - 1960, - 1328, - 1960 - ], - "text": "reading", - "confidence": 0.959 - }, - { - "boundingBox": [ - 1450, - 1924, - 1508, - 1924, - 1506, - 1960, - 1448, - 1960 - ], - "text": "and", - "confidence": 0.958 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 169, - 1957, - 786, - 1957, - 786, - 1993, - 169, - 1993 - ], - "text": "offer you 25% off you next total purchase.", - "words": [ - { - "boundingBox": [ - 171, - 1959, - 239, - 1958, - 238, - 1992, - 170, - 1991 - ], - "text": "offer", - "confidence": 0.959 - }, - { - "boundingBox": [ - 245, - 1958, - 302, - 1958, - 300, - 1993, - 244, - 1992 - ], - "text": "you", - "confidence": 0.959 - }, - { - "boundingBox": [ - 308, - 1958, - 371, - 1958, - 369, - 1994, - 307, - 1993 - ], - "text": "25%", - "confidence": 0.934 - }, - { - "boundingBox": [ - 385, - 1958, - 425, - 1958, - 424, - 1994, - 384, - 1994 - ], - "text": "off", - "confidence": 0.958 - }, - { - "boundingBox": [ - 431, - 1958, - 488, - 1958, - 487, - 1994, - 430, - 1994 - ], - "text": "you", - "confidence": 0.959 - }, - { - "boundingBox": [ - 494, - 1958, - 559, - 1958, - 558, - 1994, - 493, - 1994 - ], - "text": "next", - "confidence": 0.959 - }, - { - "boundingBox": [ - 565, - 1958, - 632, - 1959, - 631, - 1993, - 564, - 1994 - ], - "text": "total", - "confidence": 0.959 - }, - { - "boundingBox": [ - 638, - 1959, - 785, - 1960, - 785, - 1990, - 637, - 1993 - ], - "text": "purchase.", - "confidence": 0.959 - } - ] - } - ] - } - ], - "pageResults": [ - { - "page": 1, - "tables": [ - { - "rows": 4, - "columns": 3, - "cells": [ - { - "rowIndex": 1, - "columnIndex": 1, - "text": "SUBTOTAL", - "boundingBox": [ - 1072, - 1566, - 1309, - 1566, - 1309, - 1610, - 1072, - 1610 - ], - "elements": [ - "#/readResults/0/lines/41/words/0" - ] - }, - { - "rowIndex": 1, - "columnIndex": 2, - "text": "$140.00", - "boundingBox": [ - 1309, - 1566, - 1544, - 1566, - 1544, - 1610, - 1309, - 1610 - ], - "elements": [ - "#/readResults/0/lines/42/words/0" - ] - }, - { - "rowIndex": 2, - "columnIndex": 1, - "text": "TAX", - "boundingBox": [ - 1072, - 1610, - 1309, - 1610, - 1309, - 1658, - 1072, - 1658 - ], - "elements": [ - "#/readResults/0/lines/43/words/0" - ] - }, - { - "rowIndex": 2, - "columnIndex": 2, - "text": "$4.00", - "boundingBox": [ - 1309, - 1610, - 1544, - 1610, - 1544, - 1658, - 1309, - 1658 - ], - "elements": [ - "#/readResults/0/lines/44/words/0" - ] - }, - { - "rowIndex": 3, - "columnIndex": 0, - "text": "Bernie Sanders", - "boundingBox": [ - 482, - 1658, - 1072, - 1658, - 1072, - 1708, - 482, - 1708 - ], - "elements": [ - "#/readResults/0/lines/45/words/0", - "#/readResults/0/lines/45/words/1" - ] - }, - { - "rowIndex": 3, - "columnIndex": 1, - "text": "TOTAL", - "boundingBox": [ - 1072, - 1658, - 1309, - 1658, - 1309, - 1708, - 1072, - 1708 - ], - "elements": [ - "#/readResults/0/lines/46/words/0" - ] - }, - { - "rowIndex": 3, - "columnIndex": 2, - "text": "$144.00", - "boundingBox": [ - 1309, - 1658, - 1544, - 1658, - 1544, - 1708, - 1309, - 1708 - ], - "elements": [ - "#/readResults/0/lines/47/words/0" - ] - } - ] - }, - { - "rows": 6, - "columns": 4, - "cells": [ - { - "rowIndex": 0, - "columnIndex": 0, - "text": "Details", - "boundingBox": [ - 156, - 1038, - 847, - 1038, - 847, - 1087, - 156, - 1087 - ], - "elements": [ - "#/readResults/0/lines/21/words/0" - ] - }, - { - "rowIndex": 0, - "columnIndex": 1, - "text": "Quantity", - "boundingBox": [ - 847, - 1038, - 1072, - 1038, - 1072, - 1087, - 847, - 1087 - ], - "elements": [ - "#/readResults/0/lines/22/words/0" - ] - }, - { - "rowIndex": 0, - "columnIndex": 2, - "text": "Unit Price", - "boundingBox": [ - 1072, - 1038, - 1309, - 1038, - 1309, - 1087, - 1072, - 1087 - ], - "elements": [ - "#/readResults/0/lines/23/words/0", - "#/readResults/0/lines/23/words/1" - ] - }, - { - "rowIndex": 0, - "columnIndex": 3, - "text": "Total", - "boundingBox": [ - 1309, - 1038, - 1544, - 1038, - 1544, - 1087, - 1309, - 1087 - ], - "elements": [ - "#/readResults/0/lines/24/words/0" - ] - }, - { - "rowIndex": 1, - "columnIndex": 0, - "text": "Bindings", - "boundingBox": [ - 156, - 1087, - 847, - 1087, - 847, - 1128, - 156, - 1128 - ], - "elements": [ - "#/readResults/0/lines/25/words/0" - ] - }, - { - "rowIndex": 1, - "columnIndex": 1, - "text": "20", - "boundingBox": [ - 847, - 1087, - 1072, - 1087, - 1072, - 1128, - 847, - 1128 - ], - "elements": [ - "#/readResults/0/lines/26/words/0" - ] - }, - { - "rowIndex": 1, - "columnIndex": 2, - "text": "1.00", - "boundingBox": [ - 1072, - 1087, - 1309, - 1087, - 1309, - 1128, - 1072, - 1128 - ], - "elements": [ - "#/readResults/0/lines/27/words/0" - ] - }, - { - "rowIndex": 1, - "columnIndex": 3, - "text": "20.00", - "boundingBox": [ - 1309, - 1087, - 1544, - 1087, - 1544, - 1128, - 1309, - 1128 - ], - "elements": [ - "#/readResults/0/lines/28/words/0" - ] - }, - { - "rowIndex": 2, - "columnIndex": 0, - "text": "Covers Small", - "boundingBox": [ - 156, - 1128, - 847, - 1128, - 847, - 1172, - 156, - 1172 - ], - "elements": [ - "#/readResults/0/lines/29/words/0", - "#/readResults/0/lines/29/words/1" - ] - }, - { - "rowIndex": 2, - "columnIndex": 1, - "text": "20", - "boundingBox": [ - 847, - 1128, - 1072, - 1128, - 1072, - 1172, - 847, - 1172 - ], - "elements": [ - "#/readResults/0/lines/30/words/0" - ] - }, - { - "rowIndex": 2, - "columnIndex": 2, - "text": "1.00", - "boundingBox": [ - 1072, - 1128, - 1309, - 1128, - 1309, - 1172, - 1072, - 1172 - ], - "elements": [ - "#/readResults/0/lines/31/words/0" - ] - }, - { - "rowIndex": 2, - "columnIndex": 3, - "text": "20.00", - "boundingBox": [ - 1309, - 1128, - 1544, - 1128, - 1544, - 1172, - 1309, - 1172 - ], - "elements": [ - "#/readResults/0/lines/32/words/0" - ] - }, - { - "rowIndex": 3, - "columnIndex": 0, - "text": "Feather Bookmark", - "boundingBox": [ - 156, - 1172, - 847, - 1172, - 847, - 1216, - 156, - 1216 - ], - "elements": [ - "#/readResults/0/lines/33/words/0", - "#/readResults/0/lines/33/words/1" - ] - }, - { - "rowIndex": 3, - "columnIndex": 1, - "text": "20", - "boundingBox": [ - 847, - 1172, - 1072, - 1172, - 1072, - 1216, - 847, - 1216 - ], - "elements": [ - "#/readResults/0/lines/34/words/0" - ] - }, - { - "rowIndex": 3, - "columnIndex": 2, - "text": "5,00", - "boundingBox": [ - 1072, - 1172, - 1309, - 1172, - 1309, - 1216, - 1072, - 1216 - ], - "elements": [ - "#/readResults/0/lines/35/words/0" - ] - }, - { - "rowIndex": 3, - "columnIndex": 3, - "text": "100.00", - "boundingBox": [ - 1309, - 1172, - 1544, - 1172, - 1544, - 1216, - 1309, - 1216 - ], - "elements": [ - "#/readResults/0/lines/36/words/0" - ] - }, - { - "rowIndex": 4, - "columnIndex": 0, - "text": "Copper Swirl Marker", - "boundingBox": [ - 156, - 1216, - 847, - 1216, - 847, - 1260, - 156, - 1260 - ], - "elements": [ - "#/readResults/0/lines/37/words/0", - "#/readResults/0/lines/37/words/1", - "#/readResults/0/lines/37/words/2" - ] - }, - { - "rowIndex": 4, - "columnIndex": 1, - "text": "20", - "boundingBox": [ - 847, - 1216, - 1072, - 1216, - 1072, - 1260, - 847, - 1260 - ], - "elements": [ - "#/readResults/0/lines/38/words/0" - ] - }, - { - "rowIndex": 4, - "columnIndex": 2, - "text": "5,00", - "boundingBox": [ - 1072, - 1216, - 1309, - 1216, - 1309, - 1260, - 1072, - 1260 - ], - "elements": [ - "#/readResults/0/lines/39/words/0" - ] - }, - { - "rowIndex": 4, - "columnIndex": 3, - "text": "100.00", - "boundingBox": [ - 1309, - 1216, - 1544, - 1216, - 1544, - 1260, - 1309, - 1260 - ], - "elements": [ - "#/readResults/0/lines/40/words/0" - ] - } - ] - } - ] - } - ] - } -} \ No newline at end of file diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/sample_forms/training/Form_2.jpg b/sdk/formrecognizer/azure-ai-formrecognizer/tests/sample_forms/training/Form_2.jpg deleted file mode 100644 index afebb5077ce5..000000000000 Binary files a/sdk/formrecognizer/azure-ai-formrecognizer/tests/sample_forms/training/Form_2.jpg and /dev/null differ diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/sample_forms/training/Form_2.jpg.labels.json b/sdk/formrecognizer/azure-ai-formrecognizer/tests/sample_forms/training/Form_2.jpg.labels.json deleted file mode 100644 index c33938bceb60..000000000000 --- a/sdk/formrecognizer/azure-ai-formrecognizer/tests/sample_forms/training/Form_2.jpg.labels.json +++ /dev/null @@ -1,495 +0,0 @@ -{ - "document": "Form_2.jpg", - "labels": [ - { - "label": "Merchant", - "key": null, - "value": [ - { - "page": 1, - "text": "Hero", - "boundingBoxes": [ - [ - 0.3658823529411765, - 0.09409090909090909, - 0.46352941176470586, - 0.09272727272727273, - 0.46294117647058824, - 0.12090909090909091, - 0.3652941176470588, - 0.12090909090909091 - ] - ] - }, - { - "page": 1, - "text": "Limited", - "boundingBoxes": [ - [ - 0.47705882352941176, - 0.09272727272727273, - 0.6323529411764706, - 0.09181818181818181, - 0.6323529411764706, - 0.12090909090909091, - 0.47705882352941176, - 0.12090909090909091 - ] - ] - } - ] - }, - { - "label": "PhoneNumber", - "key": null, - "value": [ - { - "page": 1, - "text": "555-348-6512", - "boundingBoxes": [ - [ - 0.2164705882352941, - 0.15954545454545455, - 0.31176470588235294, - 0.16, - 0.31176470588235294, - 0.17, - 0.2164705882352941, - 0.17181818181818181 - ] - ] - } - ] - }, - { - "label": "Website", - "key": null, - "value": [ - { - "page": 1, - "text": "www.herolimited.com", - "boundingBoxes": [ - [ - 0.1623529411764706, - 0.17863636363636365, - 0.3088235294117647, - 0.17909090909090908, - 0.3088235294117647, - 0.19, - 0.16176470588235295, - 0.19045454545454546 - ] - ] - } - ] - }, - { - "label": "DatedAs", - "key": null, - "value": [ - { - "page": 1, - "text": "02/20/2020", - "boundingBoxes": [ - [ - 0.6858823529411765, - 0.19090909090909092, - 0.7752941176470588, - 0.19090909090909092, - 0.7752941176470588, - 0.20454545454545456, - 0.6858823529411765, - 0.20454545454545456 - ] - ] - } - ] - }, - { - "label": "Email", - "key": null, - "value": [ - { - "page": 1, - "text": "accounts@herolimited.com", - "boundingBoxes": [ - [ - 0.0976470588235294, - 0.22, - 0.27941176470588236, - 0.21818181818181817, - 0.2782352941176471, - 0.22863636363636364, - 0.0976470588235294, - 0.22863636363636364 - ] - ] - } - ] - }, - { - "label": "PurchaseOrderNumber", - "key": null, - "value": [ - { - "page": 1, - "text": "942448", - "boundingBoxes": [ - [ - 0.7547058823529412, - 0.20954545454545453, - 0.8088235294117647, - 0.21, - 0.808235294117647, - 0.22181818181818183, - 0.7541176470588236, - 0.22227272727272726 - ] - ] - } - ] - }, - { - "label": "VendorName", - "key": null, - "value": [ - { - "page": 1, - "text": "Lori", - "boundingBoxes": [ - [ - 0.2076470588235294, - 0.2772727272727273, - 0.23647058823529413, - 0.2772727272727273, - 0.23588235294117646, - 0.29, - 0.20705882352941177, - 0.29 - ] - ] - }, - { - "page": 1, - "text": "Hanke", - "boundingBoxes": [ - [ - 0.23941176470588235, - 0.2772727272727273, - 0.2876470588235294, - 0.2768181818181818, - 0.2876470588235294, - 0.29, - 0.23941176470588235, - 0.29 - ] - ] - } - ] - }, - { - "label": "CompanyName", - "key": null, - "value": [ - { - "page": 1, - "text": "Buzz", - "boundingBoxes": [ - [ - 0.22294117647058823, - 0.29454545454545455, - 0.2576470588235294, - 0.29454545454545455, - 0.2570588235294118, - 0.30863636363636365, - 0.22294117647058823, - 0.30863636363636365 - ] - ] - }, - { - "page": 1, - "text": "Clothing", - "boundingBoxes": [ - [ - 0.2611764705882353, - 0.29454545454545455, - 0.32294117647058823, - 0.29409090909090907, - 0.32235294117647056, - 0.30863636363636365, - 0.2605882352941176, - 0.30863636363636365 - ] - ] - } - ] - }, - { - "label": "CompanyAddress", - "key": null, - "value": [ - { - "page": 1, - "text": "938", - "boundingBoxes": [ - [ - 0.1623529411764706, - 0.31136363636363634, - 0.19176470588235295, - 0.31136363636363634, - 0.19117647058823528, - 0.325, - 0.1623529411764706, - 0.3245454545454545 - ] - ] - }, - { - "page": 1, - "text": "N", - "boundingBoxes": [ - [ - 0.19470588235294117, - 0.31136363636363634, - 0.20470588235294118, - 0.31136363636363634, - 0.20470588235294118, - 0.325, - 0.19411764705882353, - 0.325 - ] - ] - }, - { - "page": 1, - "text": "Lumpy", - "boundingBoxes": [ - [ - 0.21, - 0.31136363636363634, - 0.25941176470588234, - 0.3118181818181818, - 0.25941176470588234, - 0.32636363636363636, - 0.21, - 0.32545454545454544 - ] - ] - }, - { - "page": 1, - "text": "Way", - "boundingBoxes": [ - [ - 0.26294117647058823, - 0.3118181818181818, - 0.2952941176470588, - 0.31227272727272726, - 0.29470588235294115, - 0.32727272727272727, - 0.26235294117647057, - 0.32636363636363636 - ] - ] - }, - { - "page": 1, - "text": "Denver,", - "boundingBoxes": [ - [ - 0.16470588235294117, - 0.3286363636363636, - 0.2223529411764706, - 0.3281818181818182, - 0.22176470588235295, - 0.34136363636363637, - 0.16411764705882353, - 0.34045454545454545 - ] - ] - }, - { - "page": 1, - "text": "CO", - "boundingBoxes": [ - [ - 0.2252941176470588, - 0.3281818181818182, - 0.24529411764705883, - 0.3281818181818182, - 0.2447058823529412, - 0.34136363636363637, - 0.22470588235294117, - 0.34136363636363637 - ] - ] - }, - { - "page": 1, - "text": "83757", - "boundingBoxes": [ - [ - 0.25, - 0.3281818181818182, - 0.2952941176470588, - 0.3281818181818182, - 0.29470588235294115, - 0.34136363636363637, - 0.24941176470588236, - 0.34136363636363637 - ] - ] - } - ] - }, - { - "label": "CompanyPhoneNumber", - "key": null, - "value": [ - { - "page": 1, - "text": "435-395-3954", - "boundingBoxes": [ - [ - 0.43941176470588234, - 0.3281818181818182, - 0.54, - 0.3281818181818182, - 0.5394117647058824, - 0.34045454545454545, - 0.43941176470588234, - 0.3409090909090909 - ] - ] - } - ] - }, - { - "label": "Quantity", - "key": null, - "value": [ - { - "page": 1, - "text": "10", - "boundingBoxes": [ - [ - 0.508235294117647, - 0.49772727272727274, - 0.5252941176470588, - 0.49727272727272726, - 0.5258823529411765, - 0.5081818181818182, - 0.508235294117647, - 0.5086363636363637 - ] - ] - } - ] - }, - { - "label": "Subtotal", - "key": null, - "value": [ - { - "page": 1, - "text": "$600.00", - "boundingBoxes": [ - [ - 0.8411764705882353, - 0.7145454545454546, - 0.9, - 0.7136363636363636, - 0.8994117647058824, - 0.7263636363636363, - 0.8411764705882353, - 0.7268181818181818 - ] - ] - } - ] - }, - { - "label": "Tax", - "key": null, - "value": [ - { - "page": 1, - "text": "$20.00", - "boundingBoxes": [ - [ - 0.8494117647058823, - 0.735, - 0.9005882352941177, - 0.7336363636363636, - 0.9005882352941177, - 0.7463636363636363, - 0.8494117647058823, - 0.7472727272727273 - ] - ] - } - ] - }, - { - "label": "Signature", - "key": null, - "value": [ - { - "page": 1, - "text": "Frank", - "boundingBoxes": [ - [ - 0.29352941176470587, - 0.7622727272727273, - 0.3558823529411765, - 0.7618181818181818, - 0.3558823529411765, - 0.7781818181818182, - 0.29294117647058826, - 0.7781818181818182 - ] - ] - }, - { - "page": 1, - "text": "Sinatra", - "boundingBoxes": [ - [ - 0.36411764705882355, - 0.7618181818181818, - 0.4435294117647059, - 0.7622727272727273, - 0.4435294117647059, - 0.7781818181818182, - 0.3635294117647059, - 0.7781818181818182 - ] - ] - } - ] - }, - { - "label": "Total", - "key": null, - "value": [ - { - "page": 1, - "text": "$620.00", - "boundingBoxes": [ - [ - 0.84, - 0.7595454545454545, - 0.9, - 0.759090909090909, - 0.9, - 0.7709090909090909, - 0.84, - 0.7722727272727272 - ] - ] - } - ] - } - ] -} \ No newline at end of file diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/sample_forms/training/Form_2.jpg.ocr.json b/sdk/formrecognizer/azure-ai-formrecognizer/tests/sample_forms/training/Form_2.jpg.ocr.json deleted file mode 100644 index cba95d44cab0..000000000000 --- a/sdk/formrecognizer/azure-ai-formrecognizer/tests/sample_forms/training/Form_2.jpg.ocr.json +++ /dev/null @@ -1,3677 +0,0 @@ -{ - "status": "succeeded", - "createdDateTime": "2020-04-09T01:37:21Z", - "lastUpdatedDateTime": "2020-04-09T01:37:24Z", - "analyzeResult": { - "version": "2.0.0", - "readResults": [ - { - "page": 1, - "language": "en", - "angle": 0, - "width": 1700, - "height": 2200, - "unit": "pixel", - "lines": [ - { - "language": "en", - "boundingBox": [ - 137, - 140, - 351, - 140, - 351, - 167, - 137, - 166 - ], - "text": "Purchase Order", - "words": [ - { - "boundingBox": [ - 137, - 140, - 263, - 140, - 263, - 168, - 138, - 166 - ], - "text": "Purchase", - "confidence": 0.959 - }, - { - "boundingBox": [ - 271, - 140, - 351, - 140, - 351, - 168, - 272, - 168 - ], - "text": "Order", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 620, - 204, - 1073, - 201, - 1074, - 264, - 620, - 266 - ], - "text": "Hero Limited", - "words": [ - { - "boundingBox": [ - 622, - 207, - 788, - 204, - 787, - 266, - 621, - 266 - ], - "text": "Hero", - "confidence": 0.959 - }, - { - "boundingBox": [ - 811, - 204, - 1075, - 202, - 1075, - 266, - 811, - 266 - ], - "text": "Limited", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 165, - 351, - 529, - 350, - 529, - 376, - 165, - 379 - ], - "text": "Company Phone: 555-348-6512", - "words": [ - { - "boundingBox": [ - 167, - 352, - 277, - 351, - 276, - 379, - 167, - 379 - ], - "text": "Company", - "confidence": 0.959 - }, - { - "boundingBox": [ - 282, - 351, - 363, - 351, - 363, - 378, - 282, - 379 - ], - "text": "Phone:", - "confidence": 0.937 - }, - { - "boundingBox": [ - 368, - 351, - 530, - 352, - 530, - 374, - 368, - 378 - ], - "text": "555-348-6512", - "confidence": 0.958 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 1114, - 320, - 1551, - 320, - 1551, - 370, - 1114, - 370 - ], - "text": "Purchase Order", - "words": [ - { - "boundingBox": [ - 1115, - 322, - 1377, - 320, - 1377, - 371, - 1117, - 371 - ], - "text": "Purchase", - "confidence": 0.959 - }, - { - "boundingBox": [ - 1396, - 321, - 1550, - 321, - 1549, - 371, - 1396, - 371 - ], - "text": "Order", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 167, - 392, - 529, - 393, - 529, - 419, - 167, - 418 - ], - "text": "Website: www.herolimited.com", - "words": [ - { - "boundingBox": [ - 168, - 392, - 271, - 393, - 270, - 419, - 167, - 418 - ], - "text": "Website:", - "confidence": 0.959 - }, - { - "boundingBox": [ - 276, - 393, - 525, - 394, - 525, - 418, - 275, - 419 - ], - "text": "www.herolimited.com", - "confidence": 0.829 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 164, - 437, - 236, - 437, - 236, - 459, - 164, - 459 - ], - "text": "Email:", - "words": [ - { - "boundingBox": [ - 165, - 437, - 236, - 437, - 236, - 460, - 165, - 459 - ], - "text": "Email:", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 1025, - 419, - 1317, - 419, - 1317, - 449, - 1025, - 449 - ], - "text": "Dated As: 02/20/2020", - "words": [ - { - "boundingBox": [ - 1026, - 420, - 1111, - 420, - 1110, - 450, - 1025, - 450 - ], - "text": "Dated", - "confidence": 0.959 - }, - { - "boundingBox": [ - 1119, - 420, - 1161, - 420, - 1160, - 450, - 1118, - 450 - ], - "text": "As:", - "confidence": 0.958 - }, - { - "boundingBox": [ - 1166, - 420, - 1318, - 420, - 1318, - 450, - 1166, - 450 - ], - "text": "02/20/2020", - "confidence": 0.958 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 166, - 480, - 482, - 479, - 482, - 502, - 166, - 503 - ], - "text": "accounts@herolimited.com", - "words": [ - { - "boundingBox": [ - 166, - 484, - 475, - 480, - 473, - 503, - 166, - 503 - ], - "text": "accounts@herolimited.com", - "confidence": 0.856 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 1025, - 461, - 1375, - 461, - 1375, - 488, - 1025, - 490 - ], - "text": "Purchase Order #: 942448", - "words": [ - { - "boundingBox": [ - 1027, - 462, - 1154, - 461, - 1153, - 490, - 1026, - 489 - ], - "text": "Purchase", - "confidence": 0.959 - }, - { - "boundingBox": [ - 1161, - 461, - 1241, - 461, - 1240, - 490, - 1160, - 490 - ], - "text": "Order", - "confidence": 0.959 - }, - { - "boundingBox": [ - 1246, - 461, - 1278, - 461, - 1277, - 489, - 1245, - 490 - ], - "text": "#:", - "confidence": 0.959 - }, - { - "boundingBox": [ - 1283, - 461, - 1375, - 462, - 1374, - 488, - 1282, - 489 - ], - "text": "942448", - "confidence": 0.958 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 166, - 546, - 395, - 546, - 395, - 594, - 166, - 594 - ], - "text": "Shipped To", - "words": [ - { - "boundingBox": [ - 167, - 546, - 340, - 548, - 340, - 593, - 168, - 595 - ], - "text": "Shipped", - "confidence": 0.959 - }, - { - "boundingBox": [ - 349, - 548, - 396, - 547, - 396, - 593, - 349, - 593 - ], - "text": "To", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 160, - 609, - 490, - 609, - 490, - 637, - 160, - 638 - ], - "text": "Vendor Name: Lori Hanke", - "words": [ - { - "boundingBox": [ - 162, - 610, - 256, - 610, - 255, - 639, - 160, - 638 - ], - "text": "Vendor", - "confidence": 0.959 - }, - { - "boundingBox": [ - 262, - 610, - 347, - 610, - 347, - 638, - 261, - 639 - ], - "text": "Name:", - "confidence": 0.959 - }, - { - "boundingBox": [ - 353, - 610, - 402, - 610, - 401, - 638, - 352, - 638 - ], - "text": "Lori", - "confidence": 0.958 - }, - { - "boundingBox": [ - 407, - 610, - 489, - 609, - 489, - 638, - 407, - 638 - ], - "text": "Hanke", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 160, - 647, - 549, - 647, - 549, - 678, - 160, - 678 - ], - "text": "Company Name: Buzz Clothing", - "words": [ - { - "boundingBox": [ - 161, - 648, - 282, - 648, - 281, - 679, - 160, - 679 - ], - "text": "Company", - "confidence": 0.959 - }, - { - "boundingBox": [ - 288, - 648, - 373, - 648, - 372, - 679, - 287, - 679 - ], - "text": "Name:", - "confidence": 0.958 - }, - { - "boundingBox": [ - 379, - 648, - 438, - 648, - 437, - 679, - 379, - 679 - ], - "text": "Buzz", - "confidence": 0.959 - }, - { - "boundingBox": [ - 444, - 648, - 549, - 647, - 548, - 679, - 443, - 679 - ], - "text": "Clothing", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 161, - 684, - 502, - 686, - 501, - 719, - 161, - 714 - ], - "text": "Address: 938 N Lumpy Way", - "words": [ - { - "boundingBox": [ - 162, - 685, - 271, - 685, - 271, - 714, - 162, - 712 - ], - "text": "Address:", - "confidence": 0.959 - }, - { - "boundingBox": [ - 276, - 685, - 326, - 685, - 325, - 715, - 276, - 714 - ], - "text": "938", - "confidence": 0.85 - }, - { - "boundingBox": [ - 331, - 685, - 348, - 685, - 348, - 715, - 330, - 715 - ], - "text": "N", - "confidence": 0.878 - }, - { - "boundingBox": [ - 357, - 685, - 441, - 686, - 441, - 718, - 357, - 716 - ], - "text": "Lumpy", - "confidence": 0.959 - }, - { - "boundingBox": [ - 447, - 686, - 502, - 687, - 501, - 720, - 446, - 718 - ], - "text": "Way", - "confidence": 0.958 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 278, - 722, - 503, - 722, - 503, - 750, - 278, - 750 - ], - "text": "Denver, CO 83757", - "words": [ - { - "boundingBox": [ - 280, - 723, - 378, - 722, - 377, - 751, - 279, - 749 - ], - "text": "Denver,", - "confidence": 0.959 - }, - { - "boundingBox": [ - 383, - 722, - 417, - 722, - 416, - 751, - 382, - 751 - ], - "text": "CO", - "confidence": 0.909 - }, - { - "boundingBox": [ - 425, - 722, - 502, - 722, - 501, - 751, - 424, - 751 - ], - "text": "83757", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 647, - 721, - 918, - 721, - 918, - 749, - 647, - 749 - ], - "text": "Phone: 435-395-3954", - "words": [ - { - "boundingBox": [ - 648, - 722, - 742, - 722, - 742, - 750, - 647, - 749 - ], - "text": "Phone:", - "confidence": 0.958 - }, - { - "boundingBox": [ - 747, - 722, - 918, - 722, - 917, - 749, - 747, - 750 - ], - "text": "435-395-3954", - "confidence": 0.958 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 166, - 783, - 451, - 783, - 451, - 826, - 166, - 830 - ], - "text": "Shipped From", - "words": [ - { - "boundingBox": [ - 167, - 784, - 334, - 784, - 333, - 829, - 166, - 830 - ], - "text": "Shipped", - "confidence": 0.959 - }, - { - "boundingBox": [ - 343, - 784, - 440, - 784, - 439, - 824, - 342, - 828 - ], - "text": "From", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 165, - 850, - 420, - 850, - 420, - 880, - 165, - 880 - ], - "text": "Name: Frank Sinatra", - "words": [ - { - "boundingBox": [ - 166, - 851, - 251, - 853, - 250, - 880, - 165, - 881 - ], - "text": "Name:", - "confidence": 0.958 - }, - { - "boundingBox": [ - 257, - 853, - 328, - 853, - 327, - 879, - 256, - 880 - ], - "text": "Frank", - "confidence": 0.959 - }, - { - "boundingBox": [ - 334, - 853, - 421, - 852, - 420, - 881, - 333, - 879 - ], - "text": "Sinatra", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 164, - 890, - 551, - 889, - 551, - 916, - 164, - 920 - ], - "text": "Company Name: Franks Goods", - "words": [ - { - "boundingBox": [ - 167, - 891, - 287, - 891, - 286, - 920, - 166, - 920 - ], - "text": "Company", - "confidence": 0.958 - }, - { - "boundingBox": [ - 293, - 891, - 379, - 890, - 378, - 919, - 292, - 919 - ], - "text": "Name:", - "confidence": 0.958 - }, - { - "boundingBox": [ - 385, - 890, - 466, - 890, - 465, - 917, - 384, - 918 - ], - "text": "Franks", - "confidence": 0.959 - }, - { - "boundingBox": [ - 471, - 890, - 551, - 889, - 550, - 915, - 470, - 917 - ], - "text": "Goods", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 167, - 926, - 505, - 926, - 505, - 953, - 167, - 953 - ], - "text": "Address: 838 NE Grail Road", - "words": [ - { - "boundingBox": [ - 169, - 927, - 277, - 927, - 276, - 954, - 168, - 953 - ], - "text": "Address:", - "confidence": 0.958 - }, - { - "boundingBox": [ - 282, - 927, - 329, - 927, - 329, - 954, - 281, - 954 - ], - "text": "838", - "confidence": 0.958 - }, - { - "boundingBox": [ - 335, - 927, - 372, - 927, - 371, - 954, - 334, - 954 - ], - "text": "NE", - "confidence": 0.958 - }, - { - "boundingBox": [ - 377, - 927, - 435, - 927, - 435, - 953, - 377, - 954 - ], - "text": "Grail", - "confidence": 0.959 - }, - { - "boundingBox": [ - 440, - 927, - 504, - 927, - 504, - 953, - 440, - 953 - ], - "text": "Road", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 276, - 964, - 560, - 962, - 560, - 994, - 276, - 996 - ], - "text": "Bellingham, WA 83748", - "words": [ - { - "boundingBox": [ - 277, - 965, - 421, - 963, - 421, - 996, - 277, - 996 - ], - "text": "Bellingham,", - "confidence": 0.941 - }, - { - "boundingBox": [ - 428, - 963, - 473, - 963, - 473, - 995, - 427, - 996 - ], - "text": "WA", - "confidence": 0.957 - }, - { - "boundingBox": [ - 480, - 963, - 560, - 962, - 559, - 995, - 479, - 995 - ], - "text": "83748", - "confidence": 0.953 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 681, - 962, - 956, - 961, - 956, - 992, - 682, - 994 - ], - "text": "Phone: 939-492-9595", - "words": [ - { - "boundingBox": [ - 683, - 964, - 775, - 962, - 775, - 993, - 683, - 995 - ], - "text": "Phone:", - "confidence": 0.959 - }, - { - "boundingBox": [ - 781, - 962, - 955, - 962, - 955, - 993, - 781, - 993 - ], - "text": "939-492-9595", - "confidence": 0.936 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 447, - 1045, - 557, - 1045, - 557, - 1079, - 447, - 1079 - ], - "text": "Details", - "words": [ - { - "boundingBox": [ - 448, - 1048, - 556, - 1046, - 557, - 1080, - 449, - 1079 - ], - "text": "Details", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 889, - 1045, - 1032, - 1047, - 1031, - 1085, - 889, - 1083 - ], - "text": "Quantity", - "words": [ - { - "boundingBox": [ - 890, - 1046, - 1032, - 1047, - 1032, - 1085, - 891, - 1083 - ], - "text": "Quantity", - "confidence": 0.958 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 1114, - 1046, - 1271, - 1047, - 1271, - 1078, - 1114, - 1077 - ], - "text": "Unit Price", - "words": [ - { - "boundingBox": [ - 1114, - 1047, - 1184, - 1047, - 1184, - 1078, - 1114, - 1077 - ], - "text": "Unit", - "confidence": 0.959 - }, - { - "boundingBox": [ - 1190, - 1047, - 1272, - 1047, - 1272, - 1079, - 1190, - 1078 - ], - "text": "Price", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 1384, - 1047, - 1469, - 1046, - 1470, - 1076, - 1384, - 1077 - ], - "text": "Total", - "words": [ - { - "boundingBox": [ - 1387, - 1046, - 1468, - 1046, - 1469, - 1076, - 1387, - 1077 - ], - "text": "Total", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 170, - 1093, - 356, - 1094, - 356, - 1124, - 169, - 1123 - ], - "text": "Crow keychain", - "words": [ - { - "boundingBox": [ - 172, - 1093, - 233, - 1094, - 232, - 1124, - 171, - 1123 - ], - "text": "Crow", - "confidence": 0.959 - }, - { - "boundingBox": [ - 243, - 1094, - 357, - 1094, - 356, - 1125, - 242, - 1124 - ], - "text": "keychain", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 862, - 1095, - 894, - 1094, - 894, - 1118, - 862, - 1119 - ], - "text": "10", - "words": [ - { - "boundingBox": [ - 864, - 1095, - 893, - 1094, - 894, - 1118, - 864, - 1119 - ], - "text": "10", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 1224, - 1094, - 1296, - 1093, - 1296, - 1118, - 1224, - 1120 - ], - "text": "10.00", - "words": [ - { - "boundingBox": [ - 1227, - 1096, - 1295, - 1094, - 1295, - 1119, - 1227, - 1119 - ], - "text": "10.00", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 1443, - 1095, - 1531, - 1093, - 1532, - 1118, - 1443, - 1120 - ], - "text": "100.00", - "words": [ - { - "boundingBox": [ - 1445, - 1096, - 1528, - 1094, - 1528, - 1118, - 1445, - 1120 - ], - "text": "100.00", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 170, - 1133, - 387, - 1133, - 386, - 1167, - 170, - 1167 - ], - "text": "Batman keychain", - "words": [ - { - "boundingBox": [ - 172, - 1135, - 268, - 1135, - 267, - 1165, - 170, - 1165 - ], - "text": "Batman", - "confidence": 0.959 - }, - { - "boundingBox": [ - 274, - 1135, - 386, - 1134, - 385, - 1168, - 273, - 1165 - ], - "text": "keychain", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 861, - 1137, - 893, - 1135, - 893, - 1158, - 862, - 1160 - ], - "text": "10", - "words": [ - { - "boundingBox": [ - 863, - 1137, - 891, - 1135, - 893, - 1158, - 864, - 1160 - ], - "text": "10", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 1225, - 1136, - 1296, - 1134, - 1296, - 1158, - 1225, - 1159 - ], - "text": "10.00", - "words": [ - { - "boundingBox": [ - 1227, - 1135, - 1295, - 1134, - 1295, - 1158, - 1227, - 1159 - ], - "text": "10.00", - "confidence": 0.57 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 1443, - 1136, - 1531, - 1135, - 1531, - 1159, - 1443, - 1159 - ], - "text": "100.00", - "words": [ - { - "boundingBox": [ - 1446, - 1136, - 1529, - 1136, - 1529, - 1159, - 1445, - 1160 - ], - "text": "100.00", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 168, - 1178, - 347, - 1178, - 346, - 1208, - 168, - 1208 - ], - "text": "Skull keychain", - "words": [ - { - "boundingBox": [ - 171, - 1178, - 229, - 1178, - 228, - 1209, - 169, - 1209 - ], - "text": "Skull", - "confidence": 0.959 - }, - { - "boundingBox": [ - 235, - 1179, - 347, - 1179, - 346, - 1209, - 234, - 1209 - ], - "text": "keychain", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 861, - 1180, - 893, - 1178, - 893, - 1202, - 862, - 1204 - ], - "text": "10", - "words": [ - { - "boundingBox": [ - 863, - 1180, - 892, - 1178, - 894, - 1202, - 864, - 1204 - ], - "text": "10", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 1223, - 1180, - 1295, - 1179, - 1296, - 1203, - 1223, - 1204 - ], - "text": "10.00", - "words": [ - { - "boundingBox": [ - 1226, - 1180, - 1295, - 1180, - 1294, - 1203, - 1226, - 1204 - ], - "text": "10.00", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 1443, - 1180, - 1532, - 1180, - 1532, - 1203, - 1443, - 1204 - ], - "text": "100.00", - "words": [ - { - "boundingBox": [ - 1446, - 1181, - 1529, - 1180, - 1528, - 1203, - 1446, - 1204 - ], - "text": "100.00", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 170, - 1221, - 378, - 1221, - 378, - 1252, - 170, - 1252 - ], - "text": "Moose keychain", - "words": [ - { - "boundingBox": [ - 172, - 1222, - 256, - 1222, - 254, - 1252, - 170, - 1252 - ], - "text": "Moose", - "confidence": 0.959 - }, - { - "boundingBox": [ - 262, - 1222, - 377, - 1221, - 375, - 1253, - 260, - 1252 - ], - "text": "keychain", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 861, - 1223, - 893, - 1222, - 893, - 1246, - 861, - 1247 - ], - "text": "10", - "words": [ - { - "boundingBox": [ - 863, - 1223, - 892, - 1222, - 893, - 1246, - 863, - 1247 - ], - "text": "10", - "confidence": 0.945 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 1224, - 1222, - 1295, - 1223, - 1295, - 1246, - 1223, - 1246 - ], - "text": "10.00", - "words": [ - { - "boundingBox": [ - 1227, - 1222, - 1295, - 1222, - 1295, - 1246, - 1227, - 1246 - ], - "text": "10.00", - "confidence": 0.958 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 1443, - 1223, - 1531, - 1223, - 1531, - 1247, - 1443, - 1247 - ], - "text": "100.00", - "words": [ - { - "boundingBox": [ - 1445, - 1223, - 1530, - 1223, - 1530, - 1248, - 1445, - 1248 - ], - "text": "100.00", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 168, - 1264, - 400, - 1264, - 400, - 1297, - 168, - 1297 - ], - "text": "Sodapop keychain", - "words": [ - { - "boundingBox": [ - 170, - 1265, - 279, - 1267, - 279, - 1298, - 170, - 1297 - ], - "text": "Sodapop", - "confidence": 0.959 - }, - { - "boundingBox": [ - 286, - 1267, - 400, - 1264, - 399, - 1298, - 285, - 1298 - ], - "text": "keychain", - "confidence": 0.948 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 862, - 1267, - 892, - 1266, - 893, - 1289, - 862, - 1290 - ], - "text": "10", - "words": [ - { - "boundingBox": [ - 864, - 1266, - 892, - 1266, - 892, - 1289, - 864, - 1290 - ], - "text": "10", - "confidence": 0.958 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 1226, - 1266, - 1296, - 1266, - 1296, - 1289, - 1226, - 1290 - ], - "text": "10.00", - "words": [ - { - "boundingBox": [ - 1227, - 1266, - 1295, - 1266, - 1295, - 1290, - 1227, - 1290 - ], - "text": "10.00", - "confidence": 0.946 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 1443, - 1267, - 1531, - 1266, - 1531, - 1290, - 1443, - 1291 - ], - "text": "100.00", - "words": [ - { - "boundingBox": [ - 1444, - 1267, - 1531, - 1266, - 1530, - 1291, - 1445, - 1292 - ], - "text": "100.00", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 1148, - 1574, - 1295, - 1574, - 1295, - 1600, - 1148, - 1599 - ], - "text": "SUBTOTAL", - "words": [ - { - "boundingBox": [ - 1149, - 1574, - 1296, - 1575, - 1295, - 1600, - 1149, - 1600 - ], - "text": "SUBTOTAL", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 1429, - 1571, - 1530, - 1570, - 1530, - 1597, - 1429, - 1599 - ], - "text": "$600.00", - "words": [ - { - "boundingBox": [ - 1430, - 1572, - 1530, - 1570, - 1529, - 1598, - 1430, - 1599 - ], - "text": "$600.00", - "confidence": 0.958 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 1238, - 1619, - 1295, - 1619, - 1295, - 1642, - 1237, - 1642 - ], - "text": "TAX", - "words": [ - { - "boundingBox": [ - 1241, - 1619, - 1293, - 1619, - 1293, - 1642, - 1241, - 1642 - ], - "text": "TAX", - "confidence": 0.958 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 1442, - 1616, - 1530, - 1614, - 1531, - 1641, - 1442, - 1643 - ], - "text": "$20.00", - "words": [ - { - "boundingBox": [ - 1444, - 1617, - 1531, - 1614, - 1531, - 1642, - 1444, - 1644 - ], - "text": "$20.00", - "confidence": 0.914 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 494, - 1676, - 756, - 1676, - 756, - 1711, - 494, - 1711 - ], - "text": "Frank Sinatra", - "words": [ - { - "boundingBox": [ - 499, - 1677, - 605, - 1676, - 605, - 1712, - 498, - 1712 - ], - "text": "Frank", - "confidence": 0.844 - }, - { - "boundingBox": [ - 619, - 1676, - 754, - 1677, - 754, - 1712, - 618, - 1712 - ], - "text": "Sinatra", - "confidence": 0.915 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 1204, - 1672, - 1296, - 1672, - 1296, - 1699, - 1204, - 1699 - ], - "text": "TOTAL", - "words": [ - { - "boundingBox": [ - 1207, - 1674, - 1295, - 1673, - 1296, - 1700, - 1207, - 1699 - ], - "text": "TOTAL", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 1426, - 1670, - 1530, - 1669, - 1531, - 1696, - 1426, - 1699 - ], - "text": "$620.00", - "words": [ - { - "boundingBox": [ - 1428, - 1671, - 1530, - 1670, - 1530, - 1696, - 1428, - 1699 - ], - "text": "$620.00", - "confidence": 0.945 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 555, - 1718, - 706, - 1718, - 706, - 1742, - 555, - 1742 - ], - "text": "Frank Sinatra", - "words": [ - { - "boundingBox": [ - 555, - 1719, - 621, - 1719, - 621, - 1743, - 555, - 1743 - ], - "text": "Frank", - "confidence": 0.959 - }, - { - "boundingBox": [ - 626, - 1719, - 706, - 1719, - 706, - 1743, - 626, - 1743 - ], - "text": "Sinatra", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 591, - 1754, - 670, - 1754, - 670, - 1776, - 591, - 1775 - ], - "text": "Owner", - "words": [ - { - "boundingBox": [ - 592, - 1755, - 670, - 1755, - 670, - 1777, - 592, - 1776 - ], - "text": "Owner", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 173, - 1796, - 480, - 1797, - 479, - 1832, - 173, - 1830 - ], - "text": "Additional Notes:", - "words": [ - { - "boundingBox": [ - 175, - 1798, - 359, - 1797, - 358, - 1833, - 174, - 1830 - ], - "text": "Additional", - "confidence": 0.959 - }, - { - "boundingBox": [ - 365, - 1797, - 480, - 1800, - 480, - 1832, - 365, - 1833 - ], - "text": "Notes:", - "confidence": 0.94 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 173, - 1878, - 1456, - 1879, - 1456, - 1914, - 173, - 1911 - ], - "text": "Have fun with your new keychains. Franks offers the simplest products at the highest quality.", - "words": [ - { - "boundingBox": [ - 174, - 1881, - 238, - 1881, - 238, - 1908, - 174, - 1908 - ], - "text": "Have", - "confidence": 0.959 - }, - { - "boundingBox": [ - 243, - 1881, - 285, - 1880, - 285, - 1909, - 243, - 1908 - ], - "text": "fun", - "confidence": 0.958 - }, - { - "boundingBox": [ - 291, - 1880, - 347, - 1880, - 346, - 1909, - 290, - 1909 - ], - "text": "with", - "confidence": 0.959 - }, - { - "boundingBox": [ - 354, - 1880, - 410, - 1880, - 409, - 1910, - 353, - 1909 - ], - "text": "your", - "confidence": 0.959 - }, - { - "boundingBox": [ - 415, - 1880, - 466, - 1879, - 466, - 1910, - 415, - 1910 - ], - "text": "new", - "confidence": 0.958 - }, - { - "boundingBox": [ - 475, - 1879, - 612, - 1879, - 611, - 1911, - 474, - 1910 - ], - "text": "keychains.", - "confidence": 0.92 - }, - { - "boundingBox": [ - 617, - 1879, - 720, - 1879, - 720, - 1912, - 616, - 1911 - ], - "text": "Franks", - "confidence": 0.959 - }, - { - "boundingBox": [ - 727, - 1878, - 813, - 1878, - 813, - 1912, - 727, - 1912 - ], - "text": "offers", - "confidence": 0.958 - }, - { - "boundingBox": [ - 820, - 1878, - 866, - 1878, - 865, - 1912, - 820, - 1912 - ], - "text": "the", - "confidence": 0.956 - }, - { - "boundingBox": [ - 876, - 1878, - 1003, - 1878, - 1002, - 1913, - 876, - 1913 - ], - "text": "simplest", - "confidence": 0.958 - }, - { - "boundingBox": [ - 1008, - 1878, - 1138, - 1878, - 1137, - 1914, - 1007, - 1913 - ], - "text": "products", - "confidence": 0.958 - }, - { - "boundingBox": [ - 1145, - 1879, - 1176, - 1879, - 1175, - 1914, - 1144, - 1914 - ], - "text": "at", - "confidence": 0.958 - }, - { - "boundingBox": [ - 1182, - 1879, - 1227, - 1879, - 1226, - 1914, - 1181, - 1914 - ], - "text": "the", - "confidence": 0.95 - }, - { - "boundingBox": [ - 1238, - 1879, - 1350, - 1879, - 1349, - 1915, - 1237, - 1914 - ], - "text": "highest", - "confidence": 0.959 - }, - { - "boundingBox": [ - 1355, - 1879, - 1456, - 1880, - 1455, - 1915, - 1354, - 1915 - ], - "text": "quality.", - "confidence": 0.82 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 170, - 1935, - 1409, - 1936, - 1409, - 1971, - 170, - 1969 - ], - "text": "A 30% off coupon will be issued upon the arrive of your products for your next order.", - "words": [ - { - "boundingBox": [ - 170, - 1936, - 191, - 1936, - 191, - 1966, - 170, - 1966 - ], - "text": "A", - "confidence": 0.828 - }, - { - "boundingBox": [ - 201, - 1936, - 263, - 1936, - 262, - 1967, - 201, - 1966 - ], - "text": "30%", - "confidence": 0.95 - }, - { - "boundingBox": [ - 276, - 1936, - 318, - 1936, - 317, - 1968, - 276, - 1967 - ], - "text": "off", - "confidence": 0.958 - }, - { - "boundingBox": [ - 324, - 1936, - 433, - 1936, - 432, - 1969, - 323, - 1968 - ], - "text": "coupon", - "confidence": 0.959 - }, - { - "boundingBox": [ - 441, - 1936, - 490, - 1936, - 490, - 1970, - 440, - 1969 - ], - "text": "will", - "confidence": 0.959 - }, - { - "boundingBox": [ - 496, - 1936, - 536, - 1936, - 535, - 1970, - 495, - 1970 - ], - "text": "be", - "confidence": 0.958 - }, - { - "boundingBox": [ - 542, - 1936, - 643, - 1936, - 642, - 1971, - 541, - 1970 - ], - "text": "issued", - "confidence": 0.959 - }, - { - "boundingBox": [ - 648, - 1936, - 724, - 1936, - 723, - 1971, - 648, - 1971 - ], - "text": "upon", - "confidence": 0.955 - }, - { - "boundingBox": [ - 732, - 1936, - 781, - 1936, - 780, - 1971, - 731, - 1971 - ], - "text": "the", - "confidence": 0.95 - }, - { - "boundingBox": [ - 789, - 1936, - 874, - 1936, - 873, - 1971, - 788, - 1971 - ], - "text": "arrive", - "confidence": 0.959 - }, - { - "boundingBox": [ - 882, - 1936, - 914, - 1936, - 913, - 1971, - 881, - 1971 - ], - "text": "of", - "confidence": 0.958 - }, - { - "boundingBox": [ - 920, - 1936, - 987, - 1936, - 986, - 1971, - 919, - 1971 - ], - "text": "your", - "confidence": 0.958 - }, - { - "boundingBox": [ - 993, - 1936, - 1123, - 1936, - 1123, - 1970, - 992, - 1971 - ], - "text": "products", - "confidence": 0.959 - }, - { - "boundingBox": [ - 1129, - 1936, - 1173, - 1937, - 1172, - 1970, - 1128, - 1970 - ], - "text": "for", - "confidence": 0.958 - }, - { - "boundingBox": [ - 1179, - 1937, - 1246, - 1937, - 1245, - 1969, - 1178, - 1970 - ], - "text": "your", - "confidence": 0.959 - }, - { - "boundingBox": [ - 1252, - 1937, - 1319, - 1937, - 1318, - 1968, - 1251, - 1969 - ], - "text": "next", - "confidence": 0.959 - }, - { - "boundingBox": [ - 1325, - 1937, - 1409, - 1937, - 1408, - 1967, - 1324, - 1968 - ], - "text": "order.", - "confidence": 0.958 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 169, - 1969, - 1112, - 1970, - 1112, - 2003, - 169, - 2002 - ], - "text": "For orders over 100pcs you will recieve 40% off your next order.", - "words": [ - { - "boundingBox": [ - 170, - 1971, - 223, - 1971, - 223, - 2000, - 169, - 1999 - ], - "text": "For", - "confidence": 0.958 - }, - { - "boundingBox": [ - 229, - 1971, - 326, - 1970, - 325, - 2002, - 228, - 2000 - ], - "text": "orders", - "confidence": 0.959 - }, - { - "boundingBox": [ - 333, - 1970, - 404, - 1970, - 404, - 2002, - 333, - 2002 - ], - "text": "over", - "confidence": 0.959 - }, - { - "boundingBox": [ - 410, - 1970, - 516, - 1970, - 516, - 2003, - 409, - 2002 - ], - "text": "100pcs", - "confidence": 0.849 - }, - { - "boundingBox": [ - 524, - 1970, - 578, - 1970, - 577, - 2004, - 523, - 2003 - ], - "text": "you", - "confidence": 0.958 - }, - { - "boundingBox": [ - 585, - 1970, - 636, - 1970, - 635, - 2004, - 585, - 2004 - ], - "text": "will", - "confidence": 0.959 - }, - { - "boundingBox": [ - 641, - 1970, - 750, - 1970, - 749, - 2004, - 641, - 2004 - ], - "text": "recieve", - "confidence": 0.957 - }, - { - "boundingBox": [ - 763, - 1970, - 821, - 1970, - 820, - 2003, - 762, - 2004 - ], - "text": "40%", - "confidence": 0.958 - }, - { - "boundingBox": [ - 835, - 1970, - 875, - 1970, - 874, - 2003, - 835, - 2003 - ], - "text": "off", - "confidence": 0.914 - }, - { - "boundingBox": [ - 880, - 1970, - 949, - 1970, - 949, - 2002, - 880, - 2003 - ], - "text": "your", - "confidence": 0.959 - }, - { - "boundingBox": [ - 955, - 1970, - 1024, - 1971, - 1023, - 2002, - 954, - 2002 - ], - "text": "next", - "confidence": 0.959 - }, - { - "boundingBox": [ - 1030, - 1971, - 1113, - 1971, - 1112, - 2000, - 1029, - 2002 - ], - "text": "order.", - "confidence": 0.959 - } - ] - } - ] - } - ], - "pageResults": [ - { - "page": 1, - "tables": [ - { - "rows": 3, - "columns": 2, - "cells": [ - { - "rowIndex": 0, - "columnIndex": 0, - "text": "Address: 938 N Lumpy Way", - "boundingBox": [ - 162, - 685, - 647, - 685, - 647, - 719, - 162, - 719 - ], - "elements": [ - "#/readResults/0/lines/12/words/0", - "#/readResults/0/lines/12/words/1", - "#/readResults/0/lines/12/words/2", - "#/readResults/0/lines/12/words/3", - "#/readResults/0/lines/12/words/4" - ] - }, - { - "rowIndex": 1, - "columnIndex": 0, - "text": "Denver, CO 83757 Shipped From Name: Frank Sinatra Company Name: Franks Goods Address: 838 NE Grail Road", - "boundingBox": [ - 162, - 719, - 647, - 719, - 647, - 958, - 162, - 958 - ], - "elements": [ - "#/readResults/0/lines/13/words/0", - "#/readResults/0/lines/13/words/1", - "#/readResults/0/lines/13/words/2", - "#/readResults/0/lines/15/words/0", - "#/readResults/0/lines/15/words/1", - "#/readResults/0/lines/16/words/0", - "#/readResults/0/lines/16/words/1", - "#/readResults/0/lines/16/words/2", - "#/readResults/0/lines/17/words/0", - "#/readResults/0/lines/17/words/1", - "#/readResults/0/lines/17/words/2", - "#/readResults/0/lines/17/words/3", - "#/readResults/0/lines/18/words/0", - "#/readResults/0/lines/18/words/1", - "#/readResults/0/lines/18/words/2", - "#/readResults/0/lines/18/words/3", - "#/readResults/0/lines/18/words/4" - ] - }, - { - "rowIndex": 1, - "columnIndex": 1, - "text": "Phone: 435-395-3954", - "boundingBox": [ - 647, - 719, - 955, - 719, - 955, - 958, - 647, - 958 - ], - "elements": [ - "#/readResults/0/lines/14/words/0", - "#/readResults/0/lines/14/words/1" - ] - }, - { - "rowIndex": 2, - "columnIndex": 0, - "text": "Bellingham, WA 83748", - "boundingBox": [ - 162, - 958, - 647, - 958, - 647, - 996, - 162, - 996 - ], - "elements": [ - "#/readResults/0/lines/19/words/0", - "#/readResults/0/lines/19/words/1", - "#/readResults/0/lines/19/words/2" - ] - }, - { - "rowIndex": 2, - "columnIndex": 1, - "text": "Phone: 939-492-9595", - "boundingBox": [ - 647, - 958, - 955, - 958, - 955, - 996, - 647, - 996 - ], - "elements": [ - "#/readResults/0/lines/20/words/0", - "#/readResults/0/lines/20/words/1" - ] - } - ] - }, - { - "rows": 7, - "columns": 4, - "cells": [ - { - "rowIndex": 0, - "columnIndex": 0, - "text": "Details", - "boundingBox": [ - 156, - 1038, - 847, - 1038, - 847, - 1087, - 156, - 1087 - ], - "elements": [ - "#/readResults/0/lines/21/words/0" - ] - }, - { - "rowIndex": 0, - "columnIndex": 1, - "text": "Quantity", - "boundingBox": [ - 847, - 1038, - 1072, - 1038, - 1072, - 1087, - 847, - 1087 - ], - "elements": [ - "#/readResults/0/lines/22/words/0" - ] - }, - { - "rowIndex": 0, - "columnIndex": 2, - "text": "Unit Price", - "boundingBox": [ - 1072, - 1038, - 1308, - 1038, - 1308, - 1087, - 1072, - 1087 - ], - "elements": [ - "#/readResults/0/lines/23/words/0", - "#/readResults/0/lines/23/words/1" - ] - }, - { - "rowIndex": 0, - "columnIndex": 3, - "text": "Total", - "boundingBox": [ - 1308, - 1038, - 1544, - 1038, - 1544, - 1087, - 1308, - 1087 - ], - "elements": [ - "#/readResults/0/lines/24/words/0" - ] - }, - { - "rowIndex": 1, - "columnIndex": 0, - "text": "Crow keychain", - "boundingBox": [ - 156, - 1087, - 847, - 1087, - 847, - 1128, - 156, - 1128 - ], - "elements": [ - "#/readResults/0/lines/25/words/0", - "#/readResults/0/lines/25/words/1" - ] - }, - { - "rowIndex": 1, - "columnIndex": 1, - "text": "10", - "boundingBox": [ - 847, - 1087, - 1072, - 1087, - 1072, - 1128, - 847, - 1128 - ], - "elements": [ - "#/readResults/0/lines/26/words/0" - ] - }, - { - "rowIndex": 1, - "columnIndex": 2, - "text": "10.00", - "boundingBox": [ - 1072, - 1087, - 1308, - 1087, - 1308, - 1128, - 1072, - 1128 - ], - "elements": [ - "#/readResults/0/lines/27/words/0" - ] - }, - { - "rowIndex": 1, - "columnIndex": 3, - "text": "100.00", - "boundingBox": [ - 1308, - 1087, - 1544, - 1087, - 1544, - 1128, - 1308, - 1128 - ], - "elements": [ - "#/readResults/0/lines/28/words/0" - ] - }, - { - "rowIndex": 2, - "columnIndex": 0, - "text": "Batman keychain", - "boundingBox": [ - 156, - 1128, - 847, - 1128, - 847, - 1172, - 156, - 1172 - ], - "elements": [ - "#/readResults/0/lines/29/words/0", - "#/readResults/0/lines/29/words/1" - ] - }, - { - "rowIndex": 2, - "columnIndex": 1, - "text": "10", - "boundingBox": [ - 847, - 1128, - 1072, - 1128, - 1072, - 1172, - 847, - 1172 - ], - "elements": [ - "#/readResults/0/lines/30/words/0" - ] - }, - { - "rowIndex": 2, - "columnIndex": 2, - "text": "10.00", - "boundingBox": [ - 1072, - 1128, - 1308, - 1128, - 1308, - 1172, - 1072, - 1172 - ], - "elements": [ - "#/readResults/0/lines/31/words/0" - ] - }, - { - "rowIndex": 2, - "columnIndex": 3, - "text": "100.00", - "boundingBox": [ - 1308, - 1128, - 1544, - 1128, - 1544, - 1172, - 1308, - 1172 - ], - "elements": [ - "#/readResults/0/lines/32/words/0" - ] - }, - { - "rowIndex": 3, - "columnIndex": 0, - "text": "Skull keychain", - "boundingBox": [ - 156, - 1172, - 847, - 1172, - 847, - 1216, - 156, - 1216 - ], - "elements": [ - "#/readResults/0/lines/33/words/0", - "#/readResults/0/lines/33/words/1" - ] - }, - { - "rowIndex": 3, - "columnIndex": 1, - "text": "10", - "boundingBox": [ - 847, - 1172, - 1072, - 1172, - 1072, - 1216, - 847, - 1216 - ], - "elements": [ - "#/readResults/0/lines/34/words/0" - ] - }, - { - "rowIndex": 3, - "columnIndex": 2, - "text": "10.00", - "boundingBox": [ - 1072, - 1172, - 1308, - 1172, - 1308, - 1216, - 1072, - 1216 - ], - "elements": [ - "#/readResults/0/lines/35/words/0" - ] - }, - { - "rowIndex": 3, - "columnIndex": 3, - "text": "100.00", - "boundingBox": [ - 1308, - 1172, - 1544, - 1172, - 1544, - 1216, - 1308, - 1216 - ], - "elements": [ - "#/readResults/0/lines/36/words/0" - ] - }, - { - "rowIndex": 4, - "columnIndex": 0, - "text": "Moose keychain", - "boundingBox": [ - 156, - 1216, - 847, - 1216, - 847, - 1260, - 156, - 1260 - ], - "elements": [ - "#/readResults/0/lines/37/words/0", - "#/readResults/0/lines/37/words/1" - ] - }, - { - "rowIndex": 4, - "columnIndex": 1, - "text": "10", - "boundingBox": [ - 847, - 1216, - 1072, - 1216, - 1072, - 1260, - 847, - 1260 - ], - "elements": [ - "#/readResults/0/lines/38/words/0" - ] - }, - { - "rowIndex": 4, - "columnIndex": 2, - "text": "10.00", - "boundingBox": [ - 1072, - 1216, - 1308, - 1216, - 1308, - 1260, - 1072, - 1260 - ], - "elements": [ - "#/readResults/0/lines/39/words/0" - ] - }, - { - "rowIndex": 4, - "columnIndex": 3, - "text": "100.00", - "boundingBox": [ - 1308, - 1216, - 1544, - 1216, - 1544, - 1260, - 1308, - 1260 - ], - "elements": [ - "#/readResults/0/lines/40/words/0" - ] - }, - { - "rowIndex": 5, - "columnIndex": 0, - "text": "Sodapop keychain", - "boundingBox": [ - 156, - 1260, - 847, - 1260, - 847, - 1303, - 156, - 1303 - ], - "elements": [ - "#/readResults/0/lines/41/words/0", - "#/readResults/0/lines/41/words/1" - ] - }, - { - "rowIndex": 5, - "columnIndex": 1, - "text": "10", - "boundingBox": [ - 847, - 1260, - 1072, - 1260, - 1072, - 1303, - 847, - 1303 - ], - "elements": [ - "#/readResults/0/lines/42/words/0" - ] - }, - { - "rowIndex": 5, - "columnIndex": 2, - "text": "10.00", - "boundingBox": [ - 1072, - 1260, - 1308, - 1260, - 1308, - 1303, - 1072, - 1303 - ], - "elements": [ - "#/readResults/0/lines/43/words/0" - ] - }, - { - "rowIndex": 5, - "columnIndex": 3, - "text": "100.00", - "boundingBox": [ - 1308, - 1260, - 1544, - 1260, - 1544, - 1303, - 1308, - 1303 - ], - "elements": [ - "#/readResults/0/lines/44/words/0" - ] - } - ] - }, - { - "rows": 4, - "columns": 3, - "cells": [ - { - "rowIndex": 1, - "columnIndex": 1, - "text": "SUBTOTAL", - "boundingBox": [ - 1072, - 1566, - 1309, - 1566, - 1309, - 1610, - 1072, - 1610 - ], - "elements": [ - "#/readResults/0/lines/45/words/0" - ] - }, - { - "rowIndex": 1, - "columnIndex": 2, - "text": "$600.00", - "boundingBox": [ - 1309, - 1566, - 1544, - 1566, - 1544, - 1610, - 1309, - 1610 - ], - "elements": [ - "#/readResults/0/lines/46/words/0" - ] - }, - { - "rowIndex": 2, - "columnIndex": 1, - "text": "TAX", - "boundingBox": [ - 1072, - 1610, - 1309, - 1610, - 1309, - 1658, - 1072, - 1658 - ], - "elements": [ - "#/readResults/0/lines/47/words/0" - ] - }, - { - "rowIndex": 2, - "columnIndex": 2, - "text": "$20.00", - "boundingBox": [ - 1309, - 1610, - 1544, - 1610, - 1544, - 1658, - 1309, - 1658 - ], - "elements": [ - "#/readResults/0/lines/48/words/0" - ] - }, - { - "rowIndex": 3, - "columnIndex": 1, - "text": "TOTAL", - "boundingBox": [ - 1072, - 1658, - 1309, - 1658, - 1309, - 1708, - 1072, - 1708 - ], - "elements": [ - "#/readResults/0/lines/50/words/0" - ] - }, - { - "rowIndex": 3, - "columnIndex": 2, - "text": "$620.00", - "boundingBox": [ - 1309, - 1658, - 1544, - 1658, - 1544, - 1708, - 1309, - 1708 - ], - "elements": [ - "#/readResults/0/lines/51/words/0" - ] - } - ] - } - ] - } - ] - } -} \ No newline at end of file diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/sample_forms/training/Form_3.jpg b/sdk/formrecognizer/azure-ai-formrecognizer/tests/sample_forms/training/Form_3.jpg deleted file mode 100644 index 81fbd8a599bc..000000000000 Binary files a/sdk/formrecognizer/azure-ai-formrecognizer/tests/sample_forms/training/Form_3.jpg and /dev/null differ diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/sample_forms/training/Form_3.jpg.labels.json b/sdk/formrecognizer/azure-ai-formrecognizer/tests/sample_forms/training/Form_3.jpg.labels.json deleted file mode 100644 index e919518d0fe3..000000000000 --- a/sdk/formrecognizer/azure-ai-formrecognizer/tests/sample_forms/training/Form_3.jpg.labels.json +++ /dev/null @@ -1,495 +0,0 @@ -{ - "document": "Form_3.jpg", - "labels": [ - { - "label": "Merchant", - "key": null, - "value": [ - { - "page": 1, - "text": "Hero", - "boundingBoxes": [ - [ - 0.3658823529411765, - 0.09409090909090909, - 0.46352941176470586, - 0.09272727272727273, - 0.46294117647058824, - 0.12090909090909091, - 0.3652941176470588, - 0.12090909090909091 - ] - ] - }, - { - "page": 1, - "text": "Limited", - "boundingBoxes": [ - [ - 0.47705882352941176, - 0.09272727272727273, - 0.6323529411764706, - 0.09181818181818181, - 0.6323529411764706, - 0.12090909090909091, - 0.47705882352941176, - 0.12090909090909091 - ] - ] - } - ] - }, - { - "label": "PhoneNumber", - "key": null, - "value": [ - { - "page": 1, - "text": "555-348-6512", - "boundingBoxes": [ - [ - 0.2164705882352941, - 0.15954545454545455, - 0.31176470588235294, - 0.16, - 0.31176470588235294, - 0.17, - 0.2164705882352941, - 0.17181818181818181 - ] - ] - } - ] - }, - { - "label": "Website", - "key": null, - "value": [ - { - "page": 1, - "text": "www.herolimited.com", - "boundingBoxes": [ - [ - 0.1623529411764706, - 0.17863636363636365, - 0.3088235294117647, - 0.17909090909090908, - 0.3088235294117647, - 0.19, - 0.16176470588235295, - 0.19045454545454546 - ] - ] - } - ] - }, - { - "label": "DatedAs", - "key": null, - "value": [ - { - "page": 1, - "text": "02/10/2020", - "boundingBoxes": [ - [ - 0.6870588235294117, - 0.19090909090909092, - 0.7747058823529411, - 0.19045454545454546, - 0.7747058823529411, - 0.20454545454545456, - 0.6864705882352942, - 0.20454545454545456 - ] - ] - } - ] - }, - { - "label": "Email", - "key": null, - "value": [ - { - "page": 1, - "text": "accounts@herolimited.com", - "boundingBoxes": [ - [ - 0.0976470588235294, - 0.22, - 0.27941176470588236, - 0.21818181818181817, - 0.2788235294117647, - 0.22863636363636364, - 0.0976470588235294, - 0.22863636363636364 - ] - ] - } - ] - }, - { - "label": "PurchaseOrderNumber", - "key": null, - "value": [ - { - "page": 1, - "text": "9328424", - "boundingBoxes": [ - [ - 0.7535294117647059, - 0.20954545454545453, - 0.8182352941176471, - 0.21, - 0.8182352941176471, - 0.22181818181818183, - 0.7535294117647059, - 0.22272727272727272 - ] - ] - } - ] - }, - { - "label": "VendorName", - "key": null, - "value": [ - { - "page": 1, - "text": "Tish", - "boundingBoxes": [ - [ - 0.2088235294117647, - 0.2772727272727273, - 0.2376470588235294, - 0.2772727272727273, - 0.2376470588235294, - 0.29045454545454547, - 0.20823529411764705, - 0.29045454545454547 - ] - ] - }, - { - "page": 1, - "text": "Williams", - "boundingBoxes": [ - [ - 0.2411764705882353, - 0.2772727272727273, - 0.30470588235294116, - 0.2768181818181818, - 0.30470588235294116, - 0.29, - 0.2411764705882353, - 0.29045454545454547 - ] - ] - } - ] - }, - { - "label": "CompanyName", - "key": null, - "value": [ - { - "page": 1, - "text": "Tish's", - "boundingBoxes": [ - [ - 0.2235294117647059, - 0.29454545454545455, - 0.2641176470588235, - 0.29409090909090907, - 0.2641176470588235, - 0.30772727272727274, - 0.2235294117647059, - 0.30818181818181817 - ] - ] - }, - { - "page": 1, - "text": "Wishes", - "boundingBoxes": [ - [ - 0.2676470588235294, - 0.29409090909090907, - 0.3205882352941177, - 0.29409090909090907, - 0.3211764705882353, - 0.30636363636363634, - 0.2676470588235294, - 0.30727272727272725 - ] - ] - } - ] - }, - { - "label": "CompanyAddress", - "key": null, - "value": [ - { - "page": 1, - "text": "932", - "boundingBoxes": [ - [ - 0.1635294117647059, - 0.31136363636363634, - 0.19117647058823528, - 0.31136363636363634, - 0.19058823529411764, - 0.3240909090909091, - 0.16294117647058823, - 0.3240909090909091 - ] - ] - }, - { - "page": 1, - "text": "N", - "boundingBoxes": [ - [ - 0.19470588235294117, - 0.31136363636363634, - 0.20529411764705882, - 0.31136363636363634, - 0.20470588235294118, - 0.3240909090909091, - 0.19411764705882353, - 0.3240909090909091 - ] - ] - }, - { - "page": 1, - "text": "Cantaloupe", - "boundingBoxes": [ - [ - 0.20941176470588235, - 0.31136363636363634, - 0.29470588235294115, - 0.31136363636363634, - 0.29352941176470587, - 0.3245454545454545, - 0.2088235294117647, - 0.3240909090909091 - ] - ] - }, - { - "page": 1, - "text": "Road", - "boundingBoxes": [ - [ - 0.29764705882352943, - 0.31136363636363634, - 0.33588235294117647, - 0.3109090909090909, - 0.3347058823529412, - 0.325, - 0.29705882352941176, - 0.3245454545454545 - ] - ] - }, - { - "page": 1, - "text": "Seattle,", - "boundingBoxes": [ - [ - 0.1623529411764706, - 0.3290909090909091, - 0.21941176470588236, - 0.3286363636363636, - 0.21823529411764706, - 0.34045454545454545, - 0.16176470588235295, - 0.34045454545454545 - ] - ] - }, - { - "page": 1, - "text": "WA", - "boundingBoxes": [ - [ - 0.2223529411764706, - 0.3286363636363636, - 0.24764705882352941, - 0.3281818181818182, - 0.24705882352941178, - 0.34045454545454545, - 0.2211764705882353, - 0.34045454545454545 - ] - ] - }, - { - "page": 1, - "text": "38383", - "boundingBoxes": [ - [ - 0.25176470588235295, - 0.3281818181818182, - 0.29823529411764704, - 0.3281818181818182, - 0.29764705882352943, - 0.34045454545454545, - 0.2511764705882353, - 0.34045454545454545 - ] - ] - } - ] - }, - { - "label": "CompanyPhoneNumber", - "key": null, - "value": [ - { - "page": 1, - "text": "323-245-2943", - "boundingBoxes": [ - [ - 0.5041176470588236, - 0.3281818181818182, - 0.6064705882352941, - 0.3281818181818182, - 0.6064705882352941, - 0.34045454545454545, - 0.5041176470588236, - 0.34045454545454545 - ] - ] - } - ] - }, - { - "label": "Quantity", - "key": null, - "value": [ - { - "page": 1, - "text": "20", - "boundingBoxes": [ - [ - 0.5064705882352941, - 0.4959090909090909, - 0.5252941176470588, - 0.495, - 0.5264705882352941, - 0.5081818181818182, - 0.5076470588235295, - 0.509090909090909 - ] - ] - } - ] - }, - { - "label": "Subtotal", - "key": null, - "value": [ - { - "page": 1, - "text": "$400.00", - "boundingBoxes": [ - [ - 0.84, - 0.7140909090909091, - 0.8994117647058824, - 0.7136363636363636, - 0.8994117647058824, - 0.7268181818181818, - 0.84, - 0.7268181818181818 - ] - ] - } - ] - }, - { - "label": "Tax", - "key": null, - "value": [ - { - "page": 1, - "text": "$14.00", - "boundingBoxes": [ - [ - 0.8494117647058823, - 0.7345454545454545, - 0.9005882352941177, - 0.7336363636363636, - 0.9005882352941177, - 0.7463636363636363, - 0.85, - 0.7468181818181818 - ] - ] - } - ] - }, - { - "label": "Signature", - "key": null, - "value": [ - { - "page": 1, - "text": "Larry", - "boundingBoxes": [ - [ - 0.26529411764705885, - 0.76, - 0.33705882352941174, - 0.7595454545454545, - 0.33705882352941174, - 0.7795454545454545, - 0.26529411764705885, - 0.7777272727272727 - ] - ] - }, - { - "page": 1, - "text": "Longshore", - "boundingBoxes": [ - [ - 0.3458823529411765, - 0.7595454545454545, - 0.4647058823529412, - 0.7581818181818182, - 0.4652941176470588, - 0.7809090909090909, - 0.34647058823529414, - 0.7795454545454545 - ] - ] - } - ] - }, - { - "label": "Total", - "key": null, - "value": [ - { - "page": 1, - "text": "$414.00", - "boundingBoxes": [ - [ - 0.8411764705882353, - 0.759090909090909, - 0.8994117647058824, - 0.7586363636363637, - 0.9, - 0.7709090909090909, - 0.8405882352941176, - 0.7713636363636364 - ] - ] - } - ] - } - ] -} \ No newline at end of file diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/sample_forms/training/Form_3.jpg.ocr.json b/sdk/formrecognizer/azure-ai-formrecognizer/tests/sample_forms/training/Form_3.jpg.ocr.json deleted file mode 100644 index 4ac78362469b..000000000000 --- a/sdk/formrecognizer/azure-ai-formrecognizer/tests/sample_forms/training/Form_3.jpg.ocr.json +++ /dev/null @@ -1,3286 +0,0 @@ -{ - "status": "succeeded", - "createdDateTime": "2020-04-09T01:33:11Z", - "lastUpdatedDateTime": "2020-04-09T01:33:14Z", - "analyzeResult": { - "version": "2.0.0", - "readResults": [ - { - "page": 1, - "language": "en", - "angle": -0.0663, - "width": 1700, - "height": 2200, - "unit": "pixel", - "lines": [ - { - "language": "en", - "boundingBox": [ - 137, - 140, - 351, - 140, - 351, - 167, - 137, - 166 - ], - "text": "Purchase Order", - "words": [ - { - "boundingBox": [ - 137, - 140, - 263, - 140, - 263, - 168, - 138, - 166 - ], - "text": "Purchase", - "confidence": 0.959 - }, - { - "boundingBox": [ - 271, - 140, - 351, - 140, - 351, - 168, - 272, - 168 - ], - "text": "Order", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 620, - 204, - 1073, - 201, - 1074, - 264, - 620, - 266 - ], - "text": "Hero Limited", - "words": [ - { - "boundingBox": [ - 622, - 207, - 788, - 204, - 787, - 266, - 621, - 266 - ], - "text": "Hero", - "confidence": 0.959 - }, - { - "boundingBox": [ - 811, - 204, - 1075, - 202, - 1075, - 266, - 811, - 266 - ], - "text": "Limited", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 165, - 351, - 529, - 350, - 529, - 376, - 165, - 379 - ], - "text": "Company Phone: 555-348-6512", - "words": [ - { - "boundingBox": [ - 167, - 352, - 277, - 351, - 276, - 379, - 167, - 379 - ], - "text": "Company", - "confidence": 0.959 - }, - { - "boundingBox": [ - 282, - 351, - 363, - 351, - 363, - 378, - 282, - 379 - ], - "text": "Phone:", - "confidence": 0.937 - }, - { - "boundingBox": [ - 368, - 351, - 530, - 352, - 530, - 374, - 368, - 378 - ], - "text": "555-348-6512", - "confidence": 0.958 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 1114, - 320, - 1551, - 320, - 1551, - 370, - 1114, - 370 - ], - "text": "Purchase Order", - "words": [ - { - "boundingBox": [ - 1115, - 322, - 1377, - 321, - 1377, - 371, - 1117, - 371 - ], - "text": "Purchase", - "confidence": 0.959 - }, - { - "boundingBox": [ - 1396, - 321, - 1550, - 321, - 1549, - 371, - 1396, - 371 - ], - "text": "Order", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 167, - 392, - 529, - 393, - 529, - 419, - 167, - 418 - ], - "text": "Website: www.herolimited.com", - "words": [ - { - "boundingBox": [ - 168, - 392, - 271, - 393, - 270, - 419, - 167, - 418 - ], - "text": "Website:", - "confidence": 0.959 - }, - { - "boundingBox": [ - 276, - 393, - 525, - 394, - 525, - 418, - 275, - 419 - ], - "text": "www.herolimited.com", - "confidence": 0.829 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 164, - 437, - 236, - 437, - 236, - 459, - 164, - 459 - ], - "text": "Email:", - "words": [ - { - "boundingBox": [ - 165, - 437, - 236, - 437, - 236, - 460, - 165, - 459 - ], - "text": "Email:", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 1025, - 419, - 1317, - 419, - 1317, - 449, - 1025, - 449 - ], - "text": "Dated As: 02/10/2020", - "words": [ - { - "boundingBox": [ - 1026, - 420, - 1111, - 420, - 1110, - 450, - 1025, - 449 - ], - "text": "Dated", - "confidence": 0.959 - }, - { - "boundingBox": [ - 1118, - 420, - 1162, - 420, - 1161, - 450, - 1118, - 450 - ], - "text": "As:", - "confidence": 0.958 - }, - { - "boundingBox": [ - 1168, - 420, - 1317, - 419, - 1317, - 450, - 1167, - 450 - ], - "text": "02/10/2020", - "confidence": 0.955 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 166, - 480, - 482, - 479, - 482, - 502, - 166, - 503 - ], - "text": "accounts@herolimited.com", - "words": [ - { - "boundingBox": [ - 166, - 484, - 475, - 480, - 474, - 503, - 166, - 503 - ], - "text": "accounts@herolimited.com", - "confidence": 0.862 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 1025, - 461, - 1391, - 461, - 1391, - 488, - 1025, - 489 - ], - "text": "Purchase Order #: 9328424", - "words": [ - { - "boundingBox": [ - 1027, - 462, - 1154, - 461, - 1154, - 490, - 1026, - 489 - ], - "text": "Purchase", - "confidence": 0.959 - }, - { - "boundingBox": [ - 1160, - 461, - 1241, - 461, - 1240, - 490, - 1159, - 490 - ], - "text": "Order", - "confidence": 0.959 - }, - { - "boundingBox": [ - 1246, - 461, - 1276, - 461, - 1275, - 490, - 1245, - 490 - ], - "text": "#:", - "confidence": 0.959 - }, - { - "boundingBox": [ - 1281, - 461, - 1391, - 462, - 1391, - 488, - 1281, - 490 - ], - "text": "9328424", - "confidence": 0.95 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 166, - 546, - 397, - 546, - 397, - 594, - 166, - 594 - ], - "text": "Shipped To", - "words": [ - { - "boundingBox": [ - 167, - 546, - 336, - 548, - 337, - 593, - 168, - 595 - ], - "text": "Shipped", - "confidence": 0.959 - }, - { - "boundingBox": [ - 346, - 548, - 396, - 548, - 397, - 593, - 347, - 593 - ], - "text": "To", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 160, - 609, - 517, - 608, - 518, - 637, - 160, - 638 - ], - "text": "Vendor Name: Tish Williams", - "words": [ - { - "boundingBox": [ - 162, - 610, - 257, - 610, - 256, - 639, - 160, - 638 - ], - "text": "Vendor", - "confidence": 0.957 - }, - { - "boundingBox": [ - 262, - 610, - 349, - 610, - 349, - 639, - 261, - 639 - ], - "text": "Name:", - "confidence": 0.958 - }, - { - "boundingBox": [ - 355, - 610, - 404, - 610, - 404, - 639, - 354, - 639 - ], - "text": "Tish", - "confidence": 0.959 - }, - { - "boundingBox": [ - 410, - 610, - 518, - 609, - 518, - 638, - 410, - 639 - ], - "text": "Williams", - "confidence": 0.958 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 160, - 647, - 546, - 646, - 547, - 676, - 160, - 679 - ], - "text": "Company Name: Tish's Wishes", - "words": [ - { - "boundingBox": [ - 161, - 648, - 282, - 648, - 282, - 679, - 160, - 679 - ], - "text": "Company", - "confidence": 0.958 - }, - { - "boundingBox": [ - 288, - 648, - 374, - 648, - 374, - 678, - 288, - 679 - ], - "text": "Name:", - "confidence": 0.959 - }, - { - "boundingBox": [ - 380, - 648, - 449, - 647, - 449, - 677, - 380, - 678 - ], - "text": "Tish's", - "confidence": 0.952 - }, - { - "boundingBox": [ - 455, - 647, - 545, - 647, - 546, - 674, - 455, - 676 - ], - "text": "Wishes", - "confidence": 0.955 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 161, - 684, - 571, - 684, - 571, - 714, - 161, - 713 - ], - "text": "Address: 932 N Cantaloupe Road", - "words": [ - { - "boundingBox": [ - 161, - 684, - 272, - 685, - 271, - 713, - 161, - 712 - ], - "text": "Address:", - "confidence": 0.943 - }, - { - "boundingBox": [ - 278, - 685, - 325, - 685, - 324, - 713, - 277, - 713 - ], - "text": "932", - "confidence": 0.958 - }, - { - "boundingBox": [ - 331, - 685, - 349, - 685, - 348, - 713, - 330, - 713 - ], - "text": "N", - "confidence": 0.873 - }, - { - "boundingBox": [ - 356, - 685, - 501, - 685, - 499, - 714, - 355, - 713 - ], - "text": "Cantaloupe", - "confidence": 0.958 - }, - { - "boundingBox": [ - 506, - 685, - 571, - 684, - 569, - 715, - 505, - 714 - ], - "text": "Road", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 272, - 723, - 507, - 722, - 507, - 748, - 272, - 749 - ], - "text": "Seattle, WA 38383", - "words": [ - { - "boundingBox": [ - 276, - 724, - 373, - 723, - 371, - 749, - 275, - 749 - ], - "text": "Seattle,", - "confidence": 0.955 - }, - { - "boundingBox": [ - 378, - 723, - 421, - 722, - 420, - 749, - 376, - 749 - ], - "text": "WA", - "confidence": 0.958 - }, - { - "boundingBox": [ - 428, - 722, - 507, - 722, - 506, - 749, - 427, - 749 - ], - "text": "38383", - "confidence": 0.943 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 759, - 721, - 1032, - 721, - 1032, - 748, - 759, - 749 - ], - "text": "Phone: 323-245-2943", - "words": [ - { - "boundingBox": [ - 761, - 723, - 852, - 722, - 852, - 749, - 761, - 749 - ], - "text": "Phone:", - "confidence": 0.955 - }, - { - "boundingBox": [ - 857, - 722, - 1031, - 722, - 1031, - 749, - 857, - 749 - ], - "text": "323-245-2943", - "confidence": 0.958 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 165, - 783, - 451, - 783, - 451, - 826, - 165, - 830 - ], - "text": "Shipped From", - "words": [ - { - "boundingBox": [ - 167, - 784, - 334, - 784, - 333, - 829, - 166, - 830 - ], - "text": "Shipped", - "confidence": 0.959 - }, - { - "boundingBox": [ - 343, - 784, - 439, - 784, - 438, - 824, - 342, - 828 - ], - "text": "From", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 165, - 851, - 460, - 851, - 460, - 882, - 165, - 882 - ], - "text": "Name: Larry Longshore", - "words": [ - { - "boundingBox": [ - 167, - 851, - 251, - 853, - 249, - 882, - 165, - 882 - ], - "text": "Name:", - "confidence": 0.958 - }, - { - "boundingBox": [ - 257, - 853, - 319, - 853, - 318, - 883, - 255, - 883 - ], - "text": "Larry", - "confidence": 0.959 - }, - { - "boundingBox": [ - 325, - 853, - 460, - 852, - 459, - 883, - 324, - 883 - ], - "text": "Longshore", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 164, - 889, - 603, - 889, - 603, - 920, - 164, - 920 - ], - "text": "Company Name: Longshore Supply", - "words": [ - { - "boundingBox": [ - 167, - 891, - 286, - 890, - 285, - 920, - 166, - 919 - ], - "text": "Company", - "confidence": 0.959 - }, - { - "boundingBox": [ - 292, - 890, - 378, - 890, - 377, - 920, - 291, - 920 - ], - "text": "Name:", - "confidence": 0.958 - }, - { - "boundingBox": [ - 383, - 890, - 514, - 890, - 514, - 921, - 383, - 920 - ], - "text": "Longshore", - "confidence": 0.959 - }, - { - "boundingBox": [ - 520, - 890, - 603, - 890, - 603, - 921, - 519, - 921 - ], - "text": "Supply", - "confidence": 0.946 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 166, - 926, - 487, - 926, - 487, - 953, - 166, - 953 - ], - "text": "Address: 382 N Cool Road", - "words": [ - { - "boundingBox": [ - 167, - 926, - 277, - 926, - 277, - 954, - 166, - 954 - ], - "text": "Address:", - "confidence": 0.957 - }, - { - "boundingBox": [ - 283, - 926, - 331, - 927, - 331, - 954, - 282, - 954 - ], - "text": "382", - "confidence": 0.958 - }, - { - "boundingBox": [ - 337, - 927, - 355, - 927, - 354, - 954, - 336, - 954 - ], - "text": "N", - "confidence": 0.884 - }, - { - "boundingBox": [ - 362, - 927, - 419, - 927, - 419, - 954, - 361, - 954 - ], - "text": "Cool", - "confidence": 0.932 - }, - { - "boundingBox": [ - 424, - 927, - 488, - 927, - 488, - 954, - 424, - 954 - ], - "text": "Road", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 284, - 964, - 528, - 963, - 528, - 991, - 284, - 992 - ], - "text": "Bellevue WA 93939", - "words": [ - { - "boundingBox": [ - 285, - 965, - 393, - 965, - 392, - 991, - 285, - 991 - ], - "text": "Bellevue", - "confidence": 0.958 - }, - { - "boundingBox": [ - 398, - 965, - 444, - 964, - 443, - 992, - 397, - 991 - ], - "text": "WA", - "confidence": 0.958 - }, - { - "boundingBox": [ - 451, - 964, - 529, - 964, - 528, - 992, - 450, - 992 - ], - "text": "93939", - "confidence": 0.958 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 758, - 963, - 1031, - 963, - 1031, - 991, - 758, - 991 - ], - "text": "Phone: 938-242-4924", - "words": [ - { - "boundingBox": [ - 759, - 965, - 851, - 963, - 851, - 991, - 759, - 990 - ], - "text": "Phone:", - "confidence": 0.959 - }, - { - "boundingBox": [ - 856, - 963, - 1031, - 964, - 1031, - 991, - 856, - 992 - ], - "text": "938-242-4924", - "confidence": 0.944 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 446, - 1047, - 557, - 1047, - 558, - 1079, - 446, - 1080 - ], - "text": "Details", - "words": [ - { - "boundingBox": [ - 447, - 1049, - 557, - 1047, - 556, - 1080, - 447, - 1079 - ], - "text": "Details", - "confidence": 0.938 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 889, - 1045, - 1030, - 1046, - 1030, - 1084, - 889, - 1083 - ], - "text": "Quantity", - "words": [ - { - "boundingBox": [ - 889, - 1046, - 1029, - 1046, - 1027, - 1084, - 890, - 1083 - ], - "text": "Quantity", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 1114, - 1046, - 1271, - 1047, - 1271, - 1078, - 1114, - 1077 - ], - "text": "Unit Price", - "words": [ - { - "boundingBox": [ - 1114, - 1048, - 1184, - 1047, - 1184, - 1078, - 1114, - 1077 - ], - "text": "Unit", - "confidence": 0.959 - }, - { - "boundingBox": [ - 1190, - 1047, - 1271, - 1047, - 1271, - 1079, - 1190, - 1078 - ], - "text": "Price", - "confidence": 0.958 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 1384, - 1047, - 1469, - 1046, - 1470, - 1076, - 1384, - 1077 - ], - "text": "Total", - "words": [ - { - "boundingBox": [ - 1387, - 1046, - 1468, - 1046, - 1469, - 1076, - 1387, - 1077 - ], - "text": "Total", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 170, - 1094, - 404, - 1095, - 404, - 1123, - 170, - 1122 - ], - "text": "Party Favor purple", - "words": [ - { - "boundingBox": [ - 172, - 1095, - 239, - 1095, - 238, - 1123, - 171, - 1122 - ], - "text": "Party", - "confidence": 0.959 - }, - { - "boundingBox": [ - 244, - 1095, - 314, - 1096, - 313, - 1124, - 243, - 1123 - ], - "text": "Favor", - "confidence": 0.959 - }, - { - "boundingBox": [ - 320, - 1096, - 405, - 1096, - 404, - 1124, - 319, - 1124 - ], - "text": "purple", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 859, - 1091, - 894, - 1089, - 895, - 1118, - 860, - 1120 - ], - "text": "20", - "words": [ - { - "boundingBox": [ - 861, - 1091, - 893, - 1089, - 895, - 1118, - 863, - 1120 - ], - "text": "20", - "confidence": 0.958 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 1239, - 1095, - 1296, - 1094, - 1296, - 1118, - 1239, - 1118 - ], - "text": "5.00", - "words": [ - { - "boundingBox": [ - 1241, - 1094, - 1295, - 1094, - 1295, - 1118, - 1241, - 1118 - ], - "text": "5.00", - "confidence": 0.917 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 1443, - 1095, - 1531, - 1093, - 1532, - 1118, - 1443, - 1120 - ], - "text": "100.00", - "words": [ - { - "boundingBox": [ - 1445, - 1096, - 1528, - 1094, - 1528, - 1118, - 1445, - 1120 - ], - "text": "100.00", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 170, - 1135, - 351, - 1135, - 351, - 1163, - 170, - 1163 - ], - "text": "Party Hat Blue", - "words": [ - { - "boundingBox": [ - 172, - 1136, - 238, - 1136, - 238, - 1163, - 171, - 1164 - ], - "text": "Party", - "confidence": 0.959 - }, - { - "boundingBox": [ - 244, - 1136, - 289, - 1136, - 288, - 1163, - 243, - 1163 - ], - "text": "Hat", - "confidence": 0.958 - }, - { - "boundingBox": [ - 294, - 1136, - 351, - 1135, - 351, - 1164, - 294, - 1163 - ], - "text": "Blue", - "confidence": 0.927 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 860, - 1137, - 893, - 1135, - 893, - 1158, - 861, - 1160 - ], - "text": "20", - "words": [ - { - "boundingBox": [ - 862, - 1137, - 892, - 1135, - 893, - 1158, - 863, - 1160 - ], - "text": "20", - "confidence": 0.958 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 1239, - 1136, - 1294, - 1135, - 1294, - 1159, - 1239, - 1159 - ], - "text": "5.00", - "words": [ - { - "boundingBox": [ - 1241, - 1135, - 1293, - 1135, - 1293, - 1159, - 1241, - 1159 - ], - "text": "5.00", - "confidence": 0.915 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 1443, - 1136, - 1531, - 1135, - 1531, - 1159, - 1443, - 1159 - ], - "text": "100.00", - "words": [ - { - "boundingBox": [ - 1446, - 1136, - 1529, - 1136, - 1529, - 1159, - 1445, - 1160 - ], - "text": "100.00", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 170, - 1178, - 394, - 1177, - 394, - 1206, - 170, - 1208 - ], - "text": "Party Cloth White", - "words": [ - { - "boundingBox": [ - 172, - 1179, - 239, - 1179, - 238, - 1207, - 170, - 1208 - ], - "text": "Party", - "confidence": 0.959 - }, - { - "boundingBox": [ - 244, - 1179, - 312, - 1179, - 312, - 1207, - 244, - 1207 - ], - "text": "Cloth", - "confidence": 0.959 - }, - { - "boundingBox": [ - 318, - 1179, - 394, - 1177, - 395, - 1207, - 318, - 1207 - ], - "text": "White", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 863, - 1181, - 893, - 1180, - 893, - 1202, - 863, - 1203 - ], - "text": "20", - "words": [ - { - "boundingBox": [ - 863, - 1181, - 892, - 1180, - 892, - 1202, - 863, - 1203 - ], - "text": "20", - "confidence": 0.958 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 1240, - 1179, - 1295, - 1179, - 1295, - 1202, - 1239, - 1202 - ], - "text": "5,00", - "words": [ - { - "boundingBox": [ - 1241, - 1179, - 1294, - 1179, - 1294, - 1202, - 1241, - 1202 - ], - "text": "5,00", - "confidence": 0.423 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 1443, - 1180, - 1531, - 1179, - 1532, - 1203, - 1443, - 1204 - ], - "text": "100.00", - "words": [ - { - "boundingBox": [ - 1446, - 1181, - 1529, - 1180, - 1529, - 1203, - 1446, - 1204 - ], - "text": "100.00", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 171, - 1221, - 423, - 1219, - 423, - 1249, - 171, - 1251 - ], - "text": "Party Maraca White", - "words": [ - { - "boundingBox": [ - 172, - 1222, - 239, - 1222, - 238, - 1251, - 171, - 1250 - ], - "text": "Party", - "confidence": 0.959 - }, - { - "boundingBox": [ - 244, - 1222, - 338, - 1221, - 339, - 1251, - 244, - 1251 - ], - "text": "Maraca", - "confidence": 0.959 - }, - { - "boundingBox": [ - 344, - 1221, - 421, - 1219, - 422, - 1249, - 345, - 1251 - ], - "text": "White", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 861, - 1223, - 894, - 1222, - 893, - 1246, - 861, - 1248 - ], - "text": "20", - "words": [ - { - "boundingBox": [ - 861, - 1223, - 893, - 1222, - 894, - 1245, - 862, - 1247 - ], - "text": "20", - "confidence": 0.86 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 1240, - 1222, - 1295, - 1223, - 1295, - 1246, - 1240, - 1245 - ], - "text": "5,00", - "words": [ - { - "boundingBox": [ - 1241, - 1222, - 1294, - 1223, - 1293, - 1246, - 1240, - 1245 - ], - "text": "5,00", - "confidence": 0.424 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 1443, - 1222, - 1531, - 1222, - 1531, - 1247, - 1443, - 1247 - ], - "text": "100.00", - "words": [ - { - "boundingBox": [ - 1445, - 1223, - 1529, - 1222, - 1529, - 1248, - 1444, - 1248 - ], - "text": "100.00", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 1148, - 1574, - 1296, - 1574, - 1295, - 1599, - 1148, - 1599 - ], - "text": "SUBTOTAL", - "words": [ - { - "boundingBox": [ - 1149, - 1574, - 1296, - 1575, - 1296, - 1599, - 1149, - 1600 - ], - "text": "SUBTOTAL", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 1427, - 1570, - 1530, - 1569, - 1530, - 1598, - 1427, - 1598 - ], - "text": "$400.00", - "words": [ - { - "boundingBox": [ - 1428, - 1571, - 1529, - 1570, - 1529, - 1599, - 1428, - 1599 - ], - "text": "$400.00", - "confidence": 0.958 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 1238, - 1619, - 1295, - 1618, - 1295, - 1642, - 1237, - 1642 - ], - "text": "TAX", - "words": [ - { - "boundingBox": [ - 1241, - 1618, - 1294, - 1618, - 1294, - 1641, - 1241, - 1642 - ], - "text": "TAX", - "confidence": 0.958 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 1441, - 1615, - 1530, - 1614, - 1531, - 1641, - 1442, - 1643 - ], - "text": "$14.00", - "words": [ - { - "boundingBox": [ - 1444, - 1616, - 1531, - 1614, - 1531, - 1642, - 1445, - 1643 - ], - "text": "$14.00", - "confidence": 0.911 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 449, - 1668, - 791, - 1668, - 791, - 1717, - 449, - 1715 - ], - "text": "Larry Longshore", - "words": [ - { - "boundingBox": [ - 451, - 1672, - 573, - 1671, - 573, - 1715, - 451, - 1711 - ], - "text": "Larry", - "confidence": 0.488 - }, - { - "boundingBox": [ - 588, - 1671, - 790, - 1668, - 791, - 1718, - 589, - 1715 - ], - "text": "Longshore", - "confidence": 0.57 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 1204, - 1672, - 1296, - 1672, - 1296, - 1699, - 1204, - 1699 - ], - "text": "TOTAL", - "words": [ - { - "boundingBox": [ - 1207, - 1674, - 1295, - 1673, - 1296, - 1700, - 1207, - 1699 - ], - "text": "TOTAL", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 1426, - 1670, - 1530, - 1669, - 1531, - 1695, - 1426, - 1697 - ], - "text": "$414.00", - "words": [ - { - "boundingBox": [ - 1430, - 1670, - 1529, - 1669, - 1530, - 1696, - 1429, - 1697 - ], - "text": "$414.00", - "confidence": 0.958 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 529, - 1714, - 723, - 1715, - 722, - 1745, - 529, - 1743 - ], - "text": "Carry Longshore", - "words": [ - { - "boundingBox": [ - 530, - 1715, - 595, - 1715, - 596, - 1745, - 531, - 1744 - ], - "text": "Carry", - "confidence": 0.434 - }, - { - "boundingBox": [ - 601, - 1715, - 723, - 1719, - 723, - 1743, - 602, - 1745 - ], - "text": "Longshore", - "confidence": 0.84 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 526, - 1751, - 735, - 1753, - 735, - 1779, - 526, - 1778 - ], - "text": "Shipping Manager", - "words": [ - { - "boundingBox": [ - 528, - 1751, - 626, - 1752, - 624, - 1779, - 526, - 1778 - ], - "text": "Shipping", - "confidence": 0.958 - }, - { - "boundingBox": [ - 631, - 1752, - 736, - 1754, - 735, - 1780, - 630, - 1779 - ], - "text": "Manager", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 173, - 1796, - 480, - 1797, - 479, - 1832, - 173, - 1830 - ], - "text": "Additional Notes:", - "words": [ - { - "boundingBox": [ - 175, - 1798, - 358, - 1797, - 358, - 1833, - 174, - 1830 - ], - "text": "Additional", - "confidence": 0.959 - }, - { - "boundingBox": [ - 365, - 1797, - 479, - 1800, - 479, - 1832, - 364, - 1833 - ], - "text": "Notes:", - "confidence": 0.908 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 175, - 1877, - 1470, - 1877, - 1470, - 1914, - 175, - 1914 - ], - "text": "Unpack Carefully. Enjoy. Longshore Supply wishes you a happy party and is always here for", - "words": [ - { - "boundingBox": [ - 177, - 1880, - 269, - 1879, - 267, - 1911, - 175, - 1909 - ], - "text": "Unpack", - "confidence": 0.959 - }, - { - "boundingBox": [ - 274, - 1879, - 392, - 1879, - 391, - 1912, - 273, - 1911 - ], - "text": "Carefully.", - "confidence": 0.849 - }, - { - "boundingBox": [ - 398, - 1879, - 475, - 1879, - 474, - 1913, - 397, - 1912 - ], - "text": "Enjoy.", - "confidence": 0.958 - }, - { - "boundingBox": [ - 481, - 1879, - 640, - 1878, - 639, - 1915, - 480, - 1913 - ], - "text": "Longshore", - "confidence": 0.958 - }, - { - "boundingBox": [ - 651, - 1878, - 754, - 1878, - 753, - 1915, - 651, - 1915 - ], - "text": "Supply", - "confidence": 0.944 - }, - { - "boundingBox": [ - 760, - 1878, - 864, - 1878, - 864, - 1915, - 759, - 1915 - ], - "text": "wishes", - "confidence": 0.958 - }, - { - "boundingBox": [ - 870, - 1878, - 926, - 1878, - 926, - 1915, - 869, - 1915 - ], - "text": "you", - "confidence": 0.936 - }, - { - "boundingBox": [ - 934, - 1878, - 953, - 1878, - 953, - 1915, - 933, - 1915 - ], - "text": "a", - "confidence": 0.895 - }, - { - "boundingBox": [ - 961, - 1878, - 1056, - 1878, - 1055, - 1915, - 960, - 1915 - ], - "text": "happy", - "confidence": 0.959 - }, - { - "boundingBox": [ - 1062, - 1878, - 1141, - 1878, - 1140, - 1915, - 1061, - 1915 - ], - "text": "party", - "confidence": 0.959 - }, - { - "boundingBox": [ - 1147, - 1878, - 1203, - 1878, - 1202, - 1914, - 1146, - 1915 - ], - "text": "and", - "confidence": 0.958 - }, - { - "boundingBox": [ - 1209, - 1878, - 1238, - 1878, - 1237, - 1914, - 1208, - 1914 - ], - "text": "is", - "confidence": 0.958 - }, - { - "boundingBox": [ - 1243, - 1878, - 1350, - 1878, - 1349, - 1913, - 1243, - 1914 - ], - "text": "always", - "confidence": 0.958 - }, - { - "boundingBox": [ - 1356, - 1878, - 1423, - 1878, - 1423, - 1912, - 1355, - 1913 - ], - "text": "here", - "confidence": 0.959 - }, - { - "boundingBox": [ - 1431, - 1878, - 1471, - 1878, - 1470, - 1912, - 1431, - 1912 - ], - "text": "for", - "confidence": 0.958 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 172, - 1924, - 1468, - 1923, - 1468, - 1957, - 172, - 1959 - ], - "text": "for your party supply needs. For larger events and rentals please visit us at our affiliates", - "words": [ - { - "boundingBox": [ - 173, - 1924, - 214, - 1924, - 214, - 1958, - 173, - 1958 - ], - "text": "for", - "confidence": 0.958 - }, - { - "boundingBox": [ - 221, - 1924, - 288, - 1924, - 288, - 1959, - 221, - 1958 - ], - "text": "your", - "confidence": 0.959 - }, - { - "boundingBox": [ - 294, - 1924, - 370, - 1924, - 370, - 1959, - 294, - 1959 - ], - "text": "party", - "confidence": 0.958 - }, - { - "boundingBox": [ - 377, - 1924, - 477, - 1924, - 477, - 1959, - 377, - 1959 - ], - "text": "supply", - "confidence": 0.959 - }, - { - "boundingBox": [ - 484, - 1924, - 586, - 1923, - 586, - 1959, - 484, - 1959 - ], - "text": "needs.", - "confidence": 0.956 - }, - { - "boundingBox": [ - 593, - 1923, - 644, - 1923, - 644, - 1959, - 593, - 1959 - ], - "text": "For", - "confidence": 0.958 - }, - { - "boundingBox": [ - 651, - 1923, - 740, - 1923, - 740, - 1959, - 651, - 1959 - ], - "text": "larger", - "confidence": 0.958 - }, - { - "boundingBox": [ - 747, - 1923, - 847, - 1923, - 847, - 1959, - 747, - 1959 - ], - "text": "events", - "confidence": 0.958 - }, - { - "boundingBox": [ - 854, - 1923, - 911, - 1923, - 912, - 1959, - 854, - 1959 - ], - "text": "and", - "confidence": 0.958 - }, - { - "boundingBox": [ - 918, - 1923, - 1023, - 1923, - 1024, - 1958, - 919, - 1959 - ], - "text": "rentals", - "confidence": 0.959 - }, - { - "boundingBox": [ - 1029, - 1923, - 1130, - 1923, - 1131, - 1958, - 1030, - 1958 - ], - "text": "please", - "confidence": 0.958 - }, - { - "boundingBox": [ - 1136, - 1923, - 1197, - 1923, - 1198, - 1957, - 1137, - 1958 - ], - "text": "visit", - "confidence": 0.958 - }, - { - "boundingBox": [ - 1203, - 1923, - 1241, - 1923, - 1242, - 1957, - 1204, - 1957 - ], - "text": "us", - "confidence": 0.958 - }, - { - "boundingBox": [ - 1248, - 1923, - 1279, - 1923, - 1280, - 1957, - 1249, - 1957 - ], - "text": "at", - "confidence": 0.958 - }, - { - "boundingBox": [ - 1286, - 1923, - 1335, - 1923, - 1336, - 1956, - 1287, - 1956 - ], - "text": "our", - "confidence": 0.958 - }, - { - "boundingBox": [ - 1341, - 1923, - 1467, - 1923, - 1469, - 1955, - 1343, - 1956 - ], - "text": "affiliates", - "confidence": 0.938 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 172, - 1959, - 319, - 1961, - 318, - 1992, - 172, - 1989 - ], - "text": "webpage:", - "words": [ - { - "boundingBox": [ - 173, - 1959, - 318, - 1962, - 316, - 1993, - 173, - 1989 - ], - "text": "webpage:", - "confidence": 0.933 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 459, - 1990, - 845, - 1992, - 845, - 2025, - 459, - 2023 - ], - "text": "www.longshoreevents.org", - "words": [ - { - "boundingBox": [ - 460, - 1991, - 846, - 1994, - 844, - 2024, - 459, - 2023 - ], - "text": "www.longshoreevents.org", - "confidence": 0.839 - } - ] - } - ] - } - ], - "pageResults": [ - { - "page": 1, - "tables": [ - { - "rows": 6, - "columns": 4, - "cells": [ - { - "rowIndex": 0, - "columnIndex": 0, - "text": "Details", - "boundingBox": [ - 156, - 1038, - 847, - 1038, - 847, - 1087, - 156, - 1087 - ], - "elements": [ - "#/readResults/0/lines/21/words/0" - ] - }, - { - "rowIndex": 0, - "columnIndex": 1, - "text": "Quantity", - "boundingBox": [ - 847, - 1038, - 1072, - 1038, - 1072, - 1087, - 847, - 1087 - ], - "elements": [ - "#/readResults/0/lines/22/words/0" - ] - }, - { - "rowIndex": 0, - "columnIndex": 2, - "text": "Unit Price", - "boundingBox": [ - 1072, - 1038, - 1309, - 1038, - 1309, - 1087, - 1072, - 1087 - ], - "elements": [ - "#/readResults/0/lines/23/words/0", - "#/readResults/0/lines/23/words/1" - ] - }, - { - "rowIndex": 0, - "columnIndex": 3, - "text": "Total", - "boundingBox": [ - 1309, - 1038, - 1544, - 1038, - 1544, - 1087, - 1309, - 1087 - ], - "elements": [ - "#/readResults/0/lines/24/words/0" - ] - }, - { - "rowIndex": 1, - "columnIndex": 0, - "text": "Party Favor purple", - "boundingBox": [ - 156, - 1087, - 847, - 1087, - 847, - 1128, - 156, - 1128 - ], - "elements": [ - "#/readResults/0/lines/25/words/0", - "#/readResults/0/lines/25/words/1", - "#/readResults/0/lines/25/words/2" - ] - }, - { - "rowIndex": 1, - "columnIndex": 1, - "text": "20", - "boundingBox": [ - 847, - 1087, - 1072, - 1087, - 1072, - 1128, - 847, - 1128 - ], - "elements": [ - "#/readResults/0/lines/26/words/0" - ] - }, - { - "rowIndex": 1, - "columnIndex": 2, - "text": "5.00", - "boundingBox": [ - 1072, - 1087, - 1309, - 1087, - 1309, - 1128, - 1072, - 1128 - ], - "elements": [ - "#/readResults/0/lines/27/words/0" - ] - }, - { - "rowIndex": 1, - "columnIndex": 3, - "text": "100.00", - "boundingBox": [ - 1309, - 1087, - 1544, - 1087, - 1544, - 1128, - 1309, - 1128 - ], - "elements": [ - "#/readResults/0/lines/28/words/0" - ] - }, - { - "rowIndex": 2, - "columnIndex": 0, - "text": "Party Hat Blue", - "boundingBox": [ - 156, - 1128, - 847, - 1128, - 847, - 1172, - 156, - 1172 - ], - "elements": [ - "#/readResults/0/lines/29/words/0", - "#/readResults/0/lines/29/words/1", - "#/readResults/0/lines/29/words/2" - ] - }, - { - "rowIndex": 2, - "columnIndex": 1, - "text": "20", - "boundingBox": [ - 847, - 1128, - 1072, - 1128, - 1072, - 1172, - 847, - 1172 - ], - "elements": [ - "#/readResults/0/lines/30/words/0" - ] - }, - { - "rowIndex": 2, - "columnIndex": 2, - "text": "5.00", - "boundingBox": [ - 1072, - 1128, - 1309, - 1128, - 1309, - 1172, - 1072, - 1172 - ], - "elements": [ - "#/readResults/0/lines/31/words/0" - ] - }, - { - "rowIndex": 2, - "columnIndex": 3, - "text": "100.00", - "boundingBox": [ - 1309, - 1128, - 1544, - 1128, - 1544, - 1172, - 1309, - 1172 - ], - "elements": [ - "#/readResults/0/lines/32/words/0" - ] - }, - { - "rowIndex": 3, - "columnIndex": 0, - "text": "Party Cloth White", - "boundingBox": [ - 156, - 1172, - 847, - 1172, - 847, - 1216, - 156, - 1216 - ], - "elements": [ - "#/readResults/0/lines/33/words/0", - "#/readResults/0/lines/33/words/1", - "#/readResults/0/lines/33/words/2" - ] - }, - { - "rowIndex": 3, - "columnIndex": 1, - "text": "20", - "boundingBox": [ - 847, - 1172, - 1072, - 1172, - 1072, - 1216, - 847, - 1216 - ], - "elements": [ - "#/readResults/0/lines/34/words/0" - ] - }, - { - "rowIndex": 3, - "columnIndex": 2, - "text": "5,00", - "boundingBox": [ - 1072, - 1172, - 1309, - 1172, - 1309, - 1216, - 1072, - 1216 - ], - "elements": [ - "#/readResults/0/lines/35/words/0" - ] - }, - { - "rowIndex": 3, - "columnIndex": 3, - "text": "100.00", - "boundingBox": [ - 1309, - 1172, - 1544, - 1172, - 1544, - 1216, - 1309, - 1216 - ], - "elements": [ - "#/readResults/0/lines/36/words/0" - ] - }, - { - "rowIndex": 4, - "columnIndex": 0, - "text": "Party Maraca White", - "boundingBox": [ - 156, - 1216, - 847, - 1216, - 847, - 1260, - 156, - 1260 - ], - "elements": [ - "#/readResults/0/lines/37/words/0", - "#/readResults/0/lines/37/words/1", - "#/readResults/0/lines/37/words/2" - ] - }, - { - "rowIndex": 4, - "columnIndex": 1, - "text": "20", - "boundingBox": [ - 847, - 1216, - 1072, - 1216, - 1072, - 1260, - 847, - 1260 - ], - "elements": [ - "#/readResults/0/lines/38/words/0" - ] - }, - { - "rowIndex": 4, - "columnIndex": 2, - "text": "5,00", - "boundingBox": [ - 1072, - 1216, - 1309, - 1216, - 1309, - 1260, - 1072, - 1260 - ], - "elements": [ - "#/readResults/0/lines/39/words/0" - ] - }, - { - "rowIndex": 4, - "columnIndex": 3, - "text": "100.00", - "boundingBox": [ - 1309, - 1216, - 1544, - 1216, - 1544, - 1260, - 1309, - 1260 - ], - "elements": [ - "#/readResults/0/lines/40/words/0" - ] - } - ] - }, - { - "rows": 4, - "columns": 3, - "cells": [ - { - "rowIndex": 1, - "columnIndex": 1, - "text": "SUBTOTAL", - "boundingBox": [ - 1072, - 1566, - 1309, - 1566, - 1309, - 1610, - 1072, - 1610 - ], - "elements": [ - "#/readResults/0/lines/41/words/0" - ] - }, - { - "rowIndex": 1, - "columnIndex": 2, - "text": "$400.00", - "boundingBox": [ - 1309, - 1566, - 1544, - 1566, - 1544, - 1610, - 1309, - 1610 - ], - "elements": [ - "#/readResults/0/lines/42/words/0" - ] - }, - { - "rowIndex": 2, - "columnIndex": 1, - "text": "TAX", - "boundingBox": [ - 1072, - 1610, - 1309, - 1610, - 1309, - 1658, - 1072, - 1658 - ], - "elements": [ - "#/readResults/0/lines/43/words/0" - ] - }, - { - "rowIndex": 2, - "columnIndex": 2, - "text": "$14.00", - "boundingBox": [ - 1309, - 1610, - 1544, - 1610, - 1544, - 1658, - 1309, - 1658 - ], - "elements": [ - "#/readResults/0/lines/44/words/0" - ] - }, - { - "rowIndex": 3, - "columnIndex": 1, - "text": "TOTAL", - "boundingBox": [ - 1072, - 1658, - 1309, - 1658, - 1309, - 1708, - 1072, - 1708 - ], - "elements": [ - "#/readResults/0/lines/46/words/0" - ] - }, - { - "rowIndex": 3, - "columnIndex": 2, - "text": "$414.00", - "boundingBox": [ - 1309, - 1658, - 1544, - 1658, - 1544, - 1708, - 1309, - 1708 - ], - "elements": [ - "#/readResults/0/lines/47/words/0" - ] - } - ] - } - ] - } - ] - } -} \ No newline at end of file diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/sample_forms/training/Form_4.jpg b/sdk/formrecognizer/azure-ai-formrecognizer/tests/sample_forms/training/Form_4.jpg deleted file mode 100644 index d5ee64b5b6bc..000000000000 Binary files a/sdk/formrecognizer/azure-ai-formrecognizer/tests/sample_forms/training/Form_4.jpg and /dev/null differ diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/sample_forms/training/Form_4.jpg.labels.json b/sdk/formrecognizer/azure-ai-formrecognizer/tests/sample_forms/training/Form_4.jpg.labels.json deleted file mode 100644 index c268869361bd..000000000000 --- a/sdk/formrecognizer/azure-ai-formrecognizer/tests/sample_forms/training/Form_4.jpg.labels.json +++ /dev/null @@ -1,511 +0,0 @@ -{ - "document": "Form_4.jpg", - "labels": [ - { - "label": "Merchant", - "key": null, - "value": [ - { - "page": 1, - "text": "Hero", - "boundingBoxes": [ - [ - 0.3664705882352941, - 0.09409090909090909, - 0.4611764705882353, - 0.09272727272727273, - 0.46058823529411763, - 0.12136363636363637, - 0.3652941176470588, - 0.12090909090909091 - ] - ] - }, - { - "page": 1, - "text": "Limited", - "boundingBoxes": [ - [ - 0.47705882352941176, - 0.09272727272727273, - 0.6311764705882353, - 0.09181818181818181, - 0.6317647058823529, - 0.12090909090909091, - 0.4764705882352941, - 0.12136363636363637 - ] - ] - } - ] - }, - { - "label": "PhoneNumber", - "key": null, - "value": [ - { - "page": 1, - "text": "555-348-6512", - "boundingBoxes": [ - [ - 0.21705882352941178, - 0.15954545454545455, - 0.31176470588235294, - 0.16, - 0.31176470588235294, - 0.17, - 0.21705882352941178, - 0.17181818181818181 - ] - ] - } - ] - }, - { - "label": "Website", - "key": null, - "value": [ - { - "page": 1, - "text": "www.herolimited.com", - "boundingBoxes": [ - [ - 0.1623529411764706, - 0.17545454545454545, - 0.30823529411764705, - 0.17545454545454545, - 0.3088235294117647, - 0.18636363636363637, - 0.16176470588235295, - 0.18681818181818183 - ] - ] - } - ] - }, - { - "label": "Email", - "key": null, - "value": [ - { - "page": 1, - "text": "accounts@herolimited.com", - "boundingBoxes": [ - [ - 0.14294117647058824, - 0.19090909090909092, - 0.3241176470588235, - 0.19045454545454546, - 0.3241176470588235, - 0.20272727272727273, - 0.14294117647058824, - 0.20227272727272727 - ] - ] - } - ] - }, - { - "label": "DatedAs", - "key": null, - "value": [ - { - "page": 1, - "text": "04/04/2020", - "boundingBoxes": [ - [ - 0.6864705882352942, - 0.19090909090909092, - 0.7747058823529411, - 0.19045454545454546, - 0.7747058823529411, - 0.20454545454545456, - 0.6858823529411765, - 0.20454545454545456 - ] - ] - } - ] - }, - { - "label": "PurchaseOrderNumber", - "key": null, - "value": [ - { - "page": 1, - "text": "3929423", - "boundingBoxes": [ - [ - 0.7541176470588236, - 0.20954545454545453, - 0.8170588235294117, - 0.20954545454545453, - 0.8164705882352942, - 0.22227272727272726, - 0.7535294117647059, - 0.22272727272727272 - ] - ] - } - ] - }, - { - "label": "VendorName", - "key": null, - "value": [ - { - "page": 1, - "text": "Seth", - "boundingBoxes": [ - [ - 0.2076470588235294, - 0.2772727272727273, - 0.2411764705882353, - 0.2772727272727273, - 0.2411764705882353, - 0.2909090909090909, - 0.20705882352941177, - 0.2909090909090909 - ] - ] - }, - { - "page": 1, - "text": "Stanley", - "boundingBoxes": [ - [ - 0.24411764705882352, - 0.2772727272727273, - 0.29764705882352943, - 0.2772727272727273, - 0.29764705882352943, - 0.2918181818181818, - 0.24411764705882352, - 0.2909090909090909 - ] - ] - } - ] - }, - { - "label": "CompanyName", - "key": null, - "value": [ - { - "page": 1, - "text": "Yoga", - "boundingBoxes": [ - [ - 0.2235294117647059, - 0.29409090909090907, - 0.26, - 0.29409090909090907, - 0.25882352941176473, - 0.30863636363636365, - 0.22294117647058823, - 0.3090909090909091 - ] - ] - }, - { - "page": 1, - "text": "for", - "boundingBoxes": [ - [ - 0.2635294117647059, - 0.29409090909090907, - 0.2847058823529412, - 0.29409090909090907, - 0.28352941176470586, - 0.30818181818181817, - 0.26235294117647057, - 0.30863636363636365 - ] - ] - }, - { - "page": 1, - "text": "You", - "boundingBoxes": [ - [ - 0.28823529411764703, - 0.29409090909090907, - 0.31470588235294117, - 0.29409090909090907, - 0.3135294117647059, - 0.30772727272727274, - 0.28705882352941176, - 0.30818181818181817 - ] - ] - } - ] - }, - { - "label": "CompanyAddress", - "key": null, - "value": [ - { - "page": 1, - "text": "343", - "boundingBoxes": [ - [ - 0.16294117647058823, - 0.31136363636363634, - 0.19117647058823528, - 0.31136363636363634, - 0.19117647058823528, - 0.3240909090909091, - 0.1623529411764706, - 0.3240909090909091 - ] - ] - }, - { - "page": 1, - "text": "E", - "boundingBoxes": [ - [ - 0.19470588235294117, - 0.31136363636363634, - 0.20352941176470588, - 0.31136363636363634, - 0.20352941176470588, - 0.3240909090909091, - 0.19470588235294117, - 0.3240909090909091 - ] - ] - }, - { - "page": 1, - "text": "Winter", - "boundingBoxes": [ - [ - 0.20705882352941177, - 0.31136363636363634, - 0.25882352941176473, - 0.31136363636363634, - 0.25823529411764706, - 0.3240909090909091, - 0.20647058823529413, - 0.3240909090909091 - ] - ] - }, - { - "page": 1, - "text": "Road", - "boundingBoxes": [ - [ - 0.26176470588235295, - 0.31136363636363634, - 0.3, - 0.31136363636363634, - 0.3, - 0.3240909090909091, - 0.26176470588235295, - 0.3240909090909091 - ] - ] - }, - { - "page": 1, - "text": "Seattle,", - "boundingBoxes": [ - [ - 0.1635294117647059, - 0.3286363636363636, - 0.21941176470588236, - 0.3286363636363636, - 0.2188235294117647, - 0.3409090909090909, - 0.16294117647058823, - 0.34045454545454545 - ] - ] - }, - { - "page": 1, - "text": "WA", - "boundingBoxes": [ - [ - 0.2223529411764706, - 0.3286363636363636, - 0.2488235294117647, - 0.3281818181818182, - 0.24823529411764705, - 0.3409090909090909, - 0.22176470588235295, - 0.3409090909090909 - ] - ] - }, - { - "page": 1, - "text": "93849", - "boundingBoxes": [ - [ - 0.2529411764705882, - 0.3281818181818182, - 0.2988235294117647, - 0.3281818181818182, - 0.29823529411764704, - 0.3409090909090909, - 0.2523529411764706, - 0.3409090909090909 - ] - ] - } - ] - }, - { - "label": "CompanyPhoneNumber", - "key": null, - "value": [ - { - "page": 1, - "text": "234-986-6454", - "boundingBoxes": [ - [ - 0.36058823529411765, - 0.3281818181818182, - 0.4623529411764706, - 0.3277272727272727, - 0.46176470588235297, - 0.34, - 0.36, - 0.3409090909090909 - ] - ] - } - ] - }, - { - "label": "Quantity", - "key": null, - "value": [ - { - "page": 1, - "text": "50", - "boundingBoxes": [ - [ - 0.5076470588235295, - 0.49727272727272726, - 0.5252941176470588, - 0.49727272727272726, - 0.5252941176470588, - 0.5081818181818182, - 0.5076470588235295, - 0.5081818181818182 - ] - ] - } - ] - }, - { - "label": "Subtotal", - "key": null, - "value": [ - { - "page": 1, - "text": "$6750.00", - "boundingBoxes": [ - [ - 0.8311764705882353, - 0.7145454545454546, - 0.9005882352941177, - 0.7145454545454546, - 0.9, - 0.7268181818181818, - 0.831764705882353, - 0.7272727272727273 - ] - ] - } - ] - }, - { - "label": "Tax", - "key": null, - "value": [ - { - "page": 1, - "text": "$600.00", - "boundingBoxes": [ - [ - 0.8411764705882353, - 0.7345454545454545, - 0.9, - 0.7345454545454545, - 0.9, - 0.7459090909090909, - 0.8411764705882353, - 0.7468181818181818 - ] - ] - } - ] - }, - { - "label": "Signature", - "key": null, - "value": [ - { - "page": 1, - "text": "Josh", - "boundingBoxes": [ - [ - 0.25, - 0.7577272727272727, - 0.2917647058823529, - 0.7586363636363637, - 0.29058823529411765, - 0.775, - 0.2488235294117647, - 0.7731818181818182 - ] - ] - }, - { - "page": 1, - "text": "Granger", - "boundingBoxes": [ - [ - 0.2952941176470588, - 0.759090909090909, - 0.3688235294117647, - 0.7595454545454545, - 0.3688235294117647, - 0.7754545454545455, - 0.29470588235294115, - 0.775 - ] - ] - } - ] - }, - { - "label": "Total", - "key": null, - "value": [ - { - "page": 1, - "text": "$7350.00", - "boundingBoxes": [ - [ - 0.8311764705882353, - 0.759090909090909, - 0.9, - 0.759090909090909, - 0.9, - 0.7713636363636364, - 0.8311764705882353, - 0.7718181818181818 - ] - ] - } - ] - } - ] -} \ No newline at end of file diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/sample_forms/training/Form_4.jpg.ocr.json b/sdk/formrecognizer/azure-ai-formrecognizer/tests/sample_forms/training/Form_4.jpg.ocr.json deleted file mode 100644 index 7591e39b5b6f..000000000000 --- a/sdk/formrecognizer/azure-ai-formrecognizer/tests/sample_forms/training/Form_4.jpg.ocr.json +++ /dev/null @@ -1,3382 +0,0 @@ -{ - "status": "succeeded", - "createdDateTime": "2020-04-09T01:38:22Z", - "lastUpdatedDateTime": "2020-04-09T01:38:25Z", - "analyzeResult": { - "version": "2.0.0", - "readResults": [ - { - "page": 1, - "language": "en", - "angle": 0, - "width": 1700, - "height": 2200, - "unit": "pixel", - "lines": [ - { - "language": "en", - "boundingBox": [ - 137, - 140, - 351, - 140, - 351, - 167, - 137, - 166 - ], - "text": "Purchase Order", - "words": [ - { - "boundingBox": [ - 137, - 141, - 263, - 140, - 264, - 168, - 138, - 166 - ], - "text": "Purchase", - "confidence": 0.959 - }, - { - "boundingBox": [ - 272, - 140, - 350, - 140, - 351, - 168, - 272, - 168 - ], - "text": "Order", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 620, - 204, - 1074, - 201, - 1074, - 264, - 620, - 267 - ], - "text": "Hero Limited", - "words": [ - { - "boundingBox": [ - 623, - 207, - 784, - 204, - 783, - 267, - 621, - 266 - ], - "text": "Hero", - "confidence": 0.959 - }, - { - "boundingBox": [ - 811, - 204, - 1073, - 202, - 1074, - 266, - 810, - 267 - ], - "text": "Limited", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 165, - 351, - 529, - 350, - 530, - 377, - 165, - 378 - ], - "text": "Company Phone: 555-348-6512", - "words": [ - { - "boundingBox": [ - 167, - 352, - 276, - 351, - 276, - 379, - 166, - 378 - ], - "text": "Company", - "confidence": 0.958 - }, - { - "boundingBox": [ - 282, - 351, - 364, - 351, - 364, - 378, - 281, - 379 - ], - "text": "Phone:", - "confidence": 0.951 - }, - { - "boundingBox": [ - 369, - 351, - 530, - 352, - 530, - 374, - 369, - 378 - ], - "text": "555-348-6512", - "confidence": 0.958 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 1114, - 320, - 1551, - 320, - 1551, - 370, - 1114, - 370 - ], - "text": "Purchase Order", - "words": [ - { - "boundingBox": [ - 1115, - 322, - 1378, - 321, - 1378, - 371, - 1117, - 371 - ], - "text": "Purchase", - "confidence": 0.959 - }, - { - "boundingBox": [ - 1397, - 321, - 1551, - 322, - 1550, - 371, - 1397, - 371 - ], - "text": "Order", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 166, - 385, - 530, - 385, - 530, - 410, - 166, - 410 - ], - "text": "Website: www.herolimited.com", - "words": [ - { - "boundingBox": [ - 168, - 386, - 271, - 386, - 271, - 411, - 166, - 410 - ], - "text": "Website:", - "confidence": 0.958 - }, - { - "boundingBox": [ - 276, - 386, - 524, - 386, - 525, - 410, - 275, - 411 - ], - "text": "www.herolimited.com", - "confidence": 0.849 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 164, - 419, - 559, - 419, - 559, - 445, - 164, - 445 - ], - "text": "Email: accounts@herolimited.com", - "words": [ - { - "boundingBox": [ - 165, - 420, - 238, - 420, - 238, - 445, - 165, - 445 - ], - "text": "Email:", - "confidence": 0.958 - }, - { - "boundingBox": [ - 243, - 420, - 551, - 419, - 551, - 446, - 243, - 445 - ], - "text": "accounts@herolimited.com", - "confidence": 0.844 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 1025, - 419, - 1317, - 419, - 1317, - 449, - 1025, - 450 - ], - "text": "Dated As: 04/04/2020", - "words": [ - { - "boundingBox": [ - 1026, - 421, - 1111, - 420, - 1111, - 450, - 1025, - 450 - ], - "text": "Dated", - "confidence": 0.959 - }, - { - "boundingBox": [ - 1117, - 420, - 1161, - 420, - 1161, - 450, - 1116, - 450 - ], - "text": "As:", - "confidence": 0.958 - }, - { - "boundingBox": [ - 1167, - 420, - 1317, - 419, - 1317, - 450, - 1166, - 450 - ], - "text": "04/04/2020", - "confidence": 0.958 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 165, - 452, - 362, - 454, - 362, - 480, - 164, - 478 - ], - "text": "49823 Major Ave", - "words": [ - { - "boundingBox": [ - 167, - 453, - 237, - 454, - 236, - 479, - 166, - 478 - ], - "text": "49823", - "confidence": 0.959 - }, - { - "boundingBox": [ - 242, - 454, - 312, - 455, - 312, - 480, - 241, - 479 - ], - "text": "Major", - "confidence": 0.953 - }, - { - "boundingBox": [ - 317, - 455, - 362, - 454, - 361, - 481, - 317, - 480 - ], - "text": "Ave", - "confidence": 0.958 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 1025, - 461, - 1390, - 461, - 1390, - 488, - 1025, - 490 - ], - "text": "Purchase Order #: 3929423", - "words": [ - { - "boundingBox": [ - 1027, - 462, - 1153, - 461, - 1152, - 490, - 1026, - 489 - ], - "text": "Purchase", - "confidence": 0.959 - }, - { - "boundingBox": [ - 1160, - 461, - 1241, - 461, - 1240, - 490, - 1159, - 490 - ], - "text": "Order", - "confidence": 0.959 - }, - { - "boundingBox": [ - 1247, - 461, - 1277, - 461, - 1276, - 490, - 1246, - 490 - ], - "text": "#:", - "confidence": 0.959 - }, - { - "boundingBox": [ - 1282, - 461, - 1389, - 461, - 1388, - 489, - 1281, - 490 - ], - "text": "3929423", - "confidence": 0.958 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 162, - 485, - 368, - 485, - 368, - 512, - 162, - 512 - ], - "text": "Cheer, MS, 38601", - "words": [ - { - "boundingBox": [ - 166, - 487, - 241, - 487, - 240, - 511, - 165, - 512 - ], - "text": "Cheer,", - "confidence": 0.959 - }, - { - "boundingBox": [ - 246, - 487, - 291, - 486, - 290, - 511, - 245, - 511 - ], - "text": "MS,", - "confidence": 0.92 - }, - { - "boundingBox": [ - 296, - 486, - 368, - 486, - 368, - 513, - 295, - 512 - ], - "text": "38601", - "confidence": 0.958 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 166, - 547, - 411, - 547, - 411, - 590, - 166, - 590 - ], - "text": "Shipped To:", - "words": [ - { - "boundingBox": [ - 167, - 547, - 336, - 549, - 336, - 591, - 167, - 591 - ], - "text": "Shipped", - "confidence": 0.849 - }, - { - "boundingBox": [ - 348, - 549, - 410, - 548, - 410, - 589, - 348, - 590 - ], - "text": "To:", - "confidence": 0.958 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 160, - 609, - 506, - 609, - 506, - 641, - 160, - 639 - ], - "text": "Vendor Name: Seth Stanley", - "words": [ - { - "boundingBox": [ - 162, - 610, - 256, - 610, - 255, - 638, - 161, - 638 - ], - "text": "Vendor", - "confidence": 0.959 - }, - { - "boundingBox": [ - 261, - 610, - 347, - 610, - 347, - 639, - 260, - 638 - ], - "text": "Name:", - "confidence": 0.958 - }, - { - "boundingBox": [ - 353, - 610, - 410, - 610, - 410, - 640, - 352, - 640 - ], - "text": "Seth", - "confidence": 0.959 - }, - { - "boundingBox": [ - 415, - 610, - 506, - 610, - 506, - 642, - 415, - 640 - ], - "text": "Stanley", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 160, - 648, - 535, - 647, - 535, - 678, - 160, - 680 - ], - "text": "Company Name: Yoga for You", - "words": [ - { - "boundingBox": [ - 161, - 649, - 284, - 648, - 283, - 680, - 161, - 678 - ], - "text": "Company", - "confidence": 0.959 - }, - { - "boundingBox": [ - 290, - 648, - 374, - 647, - 373, - 680, - 288, - 680 - ], - "text": "Name:", - "confidence": 0.958 - }, - { - "boundingBox": [ - 380, - 647, - 442, - 647, - 440, - 679, - 379, - 680 - ], - "text": "Yoga", - "confidence": 0.959 - }, - { - "boundingBox": [ - 448, - 647, - 484, - 647, - 482, - 678, - 446, - 679 - ], - "text": "for", - "confidence": 0.958 - }, - { - "boundingBox": [ - 490, - 647, - 535, - 647, - 533, - 677, - 488, - 678 - ], - "text": "You", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 161, - 684, - 509, - 684, - 509, - 712, - 161, - 712 - ], - "text": "Address: 343 E Winter Road", - "words": [ - { - "boundingBox": [ - 161, - 685, - 271, - 685, - 271, - 713, - 161, - 713 - ], - "text": "Address:", - "confidence": 0.959 - }, - { - "boundingBox": [ - 277, - 685, - 325, - 685, - 325, - 713, - 276, - 713 - ], - "text": "343", - "confidence": 0.958 - }, - { - "boundingBox": [ - 331, - 685, - 346, - 685, - 346, - 713, - 331, - 713 - ], - "text": "E", - "confidence": 0.88 - }, - { - "boundingBox": [ - 352, - 685, - 440, - 685, - 439, - 713, - 351, - 713 - ], - "text": "Winter", - "confidence": 0.959 - }, - { - "boundingBox": [ - 445, - 685, - 510, - 685, - 510, - 713, - 445, - 713 - ], - "text": "Road", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 275, - 722, - 786, - 721, - 786, - 749, - 275, - 750 - ], - "text": "Seattle, WA 93849 Phone: 234-986-6454", - "words": [ - { - "boundingBox": [ - 278, - 723, - 373, - 723, - 372, - 750, - 277, - 749 - ], - "text": "Seattle,", - "confidence": 0.944 - }, - { - "boundingBox": [ - 378, - 723, - 423, - 722, - 422, - 750, - 377, - 750 - ], - "text": "WA", - "confidence": 0.957 - }, - { - "boundingBox": [ - 430, - 722, - 508, - 722, - 507, - 750, - 429, - 750 - ], - "text": "93849", - "confidence": 0.958 - }, - { - "boundingBox": [ - 515, - 722, - 608, - 722, - 607, - 750, - 514, - 750 - ], - "text": "Phone:", - "confidence": 0.959 - }, - { - "boundingBox": [ - 613, - 722, - 786, - 721, - 785, - 748, - 612, - 750 - ], - "text": "234-986-6454", - "confidence": 0.917 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 166, - 784, - 467, - 784, - 468, - 826, - 166, - 830 - ], - "text": "Shipped From:", - "words": [ - { - "boundingBox": [ - 167, - 784, - 337, - 784, - 336, - 829, - 166, - 830 - ], - "text": "Shipped", - "confidence": 0.959 - }, - { - "boundingBox": [ - 346, - 784, - 468, - 784, - 467, - 823, - 345, - 828 - ], - "text": "From:", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 165, - 851, - 419, - 853, - 418, - 883, - 165, - 881 - ], - "text": "Name: Josh Granger", - "words": [ - { - "boundingBox": [ - 166, - 851, - 249, - 853, - 249, - 881, - 165, - 881 - ], - "text": "Name:", - "confidence": 0.909 - }, - { - "boundingBox": [ - 255, - 853, - 310, - 854, - 309, - 882, - 254, - 881 - ], - "text": "Josh", - "confidence": 0.959 - }, - { - "boundingBox": [ - 316, - 854, - 419, - 854, - 418, - 884, - 315, - 882 - ], - "text": "Granger", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 164, - 889, - 577, - 889, - 577, - 921, - 164, - 921 - ], - "text": "Company Name: Granger Supply", - "words": [ - { - "boundingBox": [ - 166, - 891, - 286, - 891, - 286, - 921, - 166, - 920 - ], - "text": "Company", - "confidence": 0.959 - }, - { - "boundingBox": [ - 292, - 891, - 378, - 890, - 378, - 921, - 291, - 921 - ], - "text": "Name:", - "confidence": 0.959 - }, - { - "boundingBox": [ - 384, - 890, - 485, - 890, - 485, - 922, - 383, - 921 - ], - "text": "Granger", - "confidence": 0.959 - }, - { - "boundingBox": [ - 491, - 890, - 576, - 890, - 576, - 922, - 490, - 922 - ], - "text": "Supply", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 166, - 925, - 489, - 926, - 489, - 956, - 166, - 954 - ], - "text": "Address: 922 N Ebby Lane", - "words": [ - { - "boundingBox": [ - 167, - 927, - 277, - 926, - 275, - 955, - 166, - 953 - ], - "text": "Address:", - "confidence": 0.954 - }, - { - "boundingBox": [ - 282, - 926, - 331, - 926, - 329, - 956, - 280, - 955 - ], - "text": "922", - "confidence": 0.958 - }, - { - "boundingBox": [ - 336, - 926, - 353, - 926, - 352, - 956, - 335, - 956 - ], - "text": "N", - "confidence": 0.883 - }, - { - "boundingBox": [ - 362, - 926, - 425, - 927, - 424, - 957, - 361, - 956 - ], - "text": "Ebby", - "confidence": 0.948 - }, - { - "boundingBox": [ - 430, - 927, - 489, - 928, - 487, - 957, - 429, - 957 - ], - "text": "Lane", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 278, - 964, - 787, - 963, - 787, - 991, - 278, - 992 - ], - "text": "Ft Lauderdale, FL Phone: 932-294-2958", - "words": [ - { - "boundingBox": [ - 280, - 965, - 304, - 965, - 301, - 991, - 278, - 991 - ], - "text": "Ft", - "confidence": 0.951 - }, - { - "boundingBox": [ - 309, - 965, - 455, - 964, - 453, - 992, - 307, - 991 - ], - "text": "Lauderdale,", - "confidence": 0.952 - }, - { - "boundingBox": [ - 460, - 964, - 491, - 964, - 489, - 992, - 458, - 992 - ], - "text": "FL", - "confidence": 0.942 - }, - { - "boundingBox": [ - 513, - 964, - 607, - 963, - 606, - 992, - 511, - 992 - ], - "text": "Phone:", - "confidence": 0.92 - }, - { - "boundingBox": [ - 613, - 963, - 786, - 963, - 785, - 991, - 611, - 992 - ], - "text": "932-294-2958", - "confidence": 0.958 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 446, - 1047, - 557, - 1047, - 557, - 1079, - 446, - 1079 - ], - "text": "Details", - "words": [ - { - "boundingBox": [ - 446, - 1048, - 557, - 1047, - 556, - 1080, - 446, - 1079 - ], - "text": "Details", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 889, - 1045, - 1030, - 1046, - 1029, - 1084, - 889, - 1083 - ], - "text": "Quantity", - "words": [ - { - "boundingBox": [ - 889, - 1045, - 1029, - 1046, - 1027, - 1084, - 890, - 1083 - ], - "text": "Quantity", - "confidence": 0.958 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 1114, - 1046, - 1271, - 1047, - 1271, - 1078, - 1114, - 1077 - ], - "text": "Unit Price", - "words": [ - { - "boundingBox": [ - 1114, - 1047, - 1184, - 1047, - 1184, - 1078, - 1114, - 1077 - ], - "text": "Unit", - "confidence": 0.959 - }, - { - "boundingBox": [ - 1190, - 1047, - 1270, - 1047, - 1271, - 1079, - 1190, - 1078 - ], - "text": "Price", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 1384, - 1047, - 1469, - 1047, - 1470, - 1076, - 1384, - 1077 - ], - "text": "Total", - "words": [ - { - "boundingBox": [ - 1387, - 1047, - 1470, - 1047, - 1470, - 1076, - 1387, - 1077 - ], - "text": "Total", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 170, - 1094, - 360, - 1093, - 360, - 1124, - 170, - 1125 - ], - "text": "Long Yoga Mat", - "words": [ - { - "boundingBox": [ - 173, - 1094, - 233, - 1095, - 231, - 1125, - 171, - 1124 - ], - "text": "Long", - "confidence": 0.959 - }, - { - "boundingBox": [ - 239, - 1095, - 299, - 1094, - 297, - 1126, - 237, - 1125 - ], - "text": "Yoga", - "confidence": 0.944 - }, - { - "boundingBox": [ - 305, - 1094, - 359, - 1094, - 357, - 1125, - 303, - 1126 - ], - "text": "Mat", - "confidence": 0.958 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 862, - 1094, - 895, - 1094, - 895, - 1118, - 862, - 1118 - ], - "text": "50", - "words": [ - { - "boundingBox": [ - 863, - 1094, - 893, - 1094, - 893, - 1118, - 863, - 1118 - ], - "text": "50", - "confidence": 0.958 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 1225, - 1094, - 1296, - 1094, - 1296, - 1118, - 1224, - 1119 - ], - "text": "50.00", - "words": [ - { - "boundingBox": [ - 1225, - 1094, - 1295, - 1094, - 1296, - 1118, - 1225, - 1119 - ], - "text": "50.00", - "confidence": 0.958 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 1427, - 1095, - 1531, - 1093, - 1531, - 1118, - 1427, - 1120 - ], - "text": "2500.00", - "words": [ - { - "boundingBox": [ - 1428, - 1095, - 1531, - 1094, - 1530, - 1118, - 1428, - 1120 - ], - "text": "2500.00", - "confidence": 0.958 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 168, - 1134, - 370, - 1134, - 370, - 1167, - 168, - 1166 - ], - "text": "Short Yoga Man", - "words": [ - { - "boundingBox": [ - 170, - 1135, - 239, - 1135, - 238, - 1166, - 169, - 1165 - ], - "text": "Short", - "confidence": 0.876 - }, - { - "boundingBox": [ - 245, - 1135, - 307, - 1135, - 306, - 1168, - 244, - 1167 - ], - "text": "Yoga", - "confidence": 0.955 - }, - { - "boundingBox": [ - 313, - 1135, - 370, - 1135, - 368, - 1168, - 311, - 1168 - ], - "text": "Man", - "confidence": 0.939 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 859, - 1136, - 894, - 1135, - 895, - 1158, - 859, - 1161 - ], - "text": "50", - "words": [ - { - "boundingBox": [ - 862, - 1136, - 893, - 1135, - 894, - 1158, - 863, - 1160 - ], - "text": "50", - "confidence": 0.958 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 1223, - 1135, - 1295, - 1134, - 1296, - 1158, - 1223, - 1160 - ], - "text": "50.00", - "words": [ - { - "boundingBox": [ - 1225, - 1135, - 1294, - 1134, - 1295, - 1159, - 1225, - 1160 - ], - "text": "50.00", - "confidence": 0.955 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 1430, - 1136, - 1531, - 1135, - 1531, - 1159, - 1430, - 1160 - ], - "text": "2500.00", - "words": [ - { - "boundingBox": [ - 1430, - 1136, - 1530, - 1136, - 1530, - 1160, - 1430, - 1161 - ], - "text": "2500.00", - "confidence": 0.958 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 169, - 1177, - 332, - 1177, - 332, - 1206, - 169, - 1205 - ], - "text": "Towel White", - "words": [ - { - "boundingBox": [ - 173, - 1177, - 248, - 1179, - 248, - 1206, - 172, - 1206 - ], - "text": "Towel", - "confidence": 0.951 - }, - { - "boundingBox": [ - 254, - 1179, - 332, - 1179, - 332, - 1205, - 254, - 1206 - ], - "text": "White", - "confidence": 0.955 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 863, - 1180, - 910, - 1179, - 909, - 1202, - 862, - 1203 - ], - "text": "100", - "words": [ - { - "boundingBox": [ - 864, - 1180, - 908, - 1179, - 909, - 1202, - 864, - 1203 - ], - "text": "100", - "confidence": 0.958 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 1222, - 1180, - 1296, - 1179, - 1296, - 1202, - 1222, - 1204 - ], - "text": "10.00", - "words": [ - { - "boundingBox": [ - 1227, - 1180, - 1296, - 1180, - 1295, - 1203, - 1227, - 1204 - ], - "text": "10.00", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 1428, - 1180, - 1532, - 1180, - 1532, - 1203, - 1428, - 1204 - ], - "text": "1000.00", - "words": [ - { - "boundingBox": [ - 1431, - 1181, - 1529, - 1180, - 1529, - 1204, - 1431, - 1205 - ], - "text": "1000.00", - "confidence": 0.958 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 171, - 1222, - 346, - 1222, - 346, - 1249, - 171, - 1249 - ], - "text": "Decal Stickers", - "words": [ - { - "boundingBox": [ - 173, - 1223, - 241, - 1223, - 241, - 1249, - 171, - 1250 - ], - "text": "Decal", - "confidence": 0.959 - }, - { - "boundingBox": [ - 247, - 1223, - 345, - 1223, - 346, - 1250, - 246, - 1249 - ], - "text": "Stickers", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 862, - 1223, - 894, - 1223, - 893, - 1246, - 861, - 1248 - ], - "text": "50", - "words": [ - { - "boundingBox": [ - 861, - 1223, - 892, - 1223, - 893, - 1247, - 862, - 1248 - ], - "text": "50", - "confidence": 0.958 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 1240, - 1222, - 1296, - 1223, - 1294, - 1246, - 1239, - 1245 - ], - "text": "5.00", - "words": [ - { - "boundingBox": [ - 1241, - 1222, - 1296, - 1223, - 1295, - 1246, - 1241, - 1245 - ], - "text": "5.00", - "confidence": 0.491 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 1442, - 1222, - 1531, - 1222, - 1531, - 1247, - 1442, - 1247 - ], - "text": "250.00", - "words": [ - { - "boundingBox": [ - 1444, - 1223, - 1530, - 1223, - 1529, - 1248, - 1443, - 1248 - ], - "text": "250.00", - "confidence": 0.958 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 171, - 1266, - 397, - 1266, - 397, - 1293, - 171, - 1292 - ], - "text": "Water Bottle Blue", - "words": [ - { - "boundingBox": [ - 172, - 1267, - 252, - 1268, - 253, - 1293, - 173, - 1291 - ], - "text": "Water", - "confidence": 0.959 - }, - { - "boundingBox": [ - 257, - 1268, - 333, - 1267, - 333, - 1293, - 257, - 1293 - ], - "text": "Bottle", - "confidence": 0.959 - }, - { - "boundingBox": [ - 339, - 1267, - 394, - 1266, - 394, - 1293, - 339, - 1293 - ], - "text": "Blue", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 863, - 1267, - 894, - 1266, - 894, - 1290, - 863, - 1290 - ], - "text": "50", - "words": [ - { - "boundingBox": [ - 863, - 1266, - 893, - 1266, - 893, - 1290, - 863, - 1290 - ], - "text": "50", - "confidence": 0.958 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 1224, - 1267, - 1296, - 1266, - 1297, - 1290, - 1225, - 1291 - ], - "text": "10.00", - "words": [ - { - "boundingBox": [ - 1226, - 1267, - 1296, - 1266, - 1296, - 1290, - 1226, - 1291 - ], - "text": "10.00", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 1444, - 1267, - 1531, - 1266, - 1531, - 1290, - 1444, - 1291 - ], - "text": "500.00", - "words": [ - { - "boundingBox": [ - 1444, - 1267, - 1529, - 1266, - 1528, - 1291, - 1444, - 1292 - ], - "text": "500.00", - "confidence": 0.958 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 1148, - 1574, - 1296, - 1574, - 1296, - 1599, - 1148, - 1599 - ], - "text": "SUBTOTAL", - "words": [ - { - "boundingBox": [ - 1149, - 1574, - 1295, - 1575, - 1295, - 1600, - 1149, - 1600 - ], - "text": "SUBTOTAL", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 1411, - 1572, - 1531, - 1571, - 1531, - 1598, - 1411, - 1599 - ], - "text": "$6750.00", - "words": [ - { - "boundingBox": [ - 1413, - 1572, - 1531, - 1572, - 1530, - 1599, - 1414, - 1600 - ], - "text": "$6750.00", - "confidence": 0.944 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 1239, - 1618, - 1295, - 1618, - 1295, - 1642, - 1239, - 1643 - ], - "text": "TAX", - "words": [ - { - "boundingBox": [ - 1241, - 1618, - 1293, - 1618, - 1293, - 1643, - 1241, - 1643 - ], - "text": "TAX", - "confidence": 0.958 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 1429, - 1616, - 1531, - 1615, - 1531, - 1641, - 1429, - 1642 - ], - "text": "$600.00", - "words": [ - { - "boundingBox": [ - 1430, - 1616, - 1530, - 1616, - 1530, - 1641, - 1430, - 1643 - ], - "text": "$600.00", - "confidence": 0.883 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 423, - 1667, - 627, - 1671, - 626, - 1706, - 423, - 1702 - ], - "text": "Josh Granger", - "words": [ - { - "boundingBox": [ - 425, - 1667, - 496, - 1669, - 494, - 1705, - 423, - 1701 - ], - "text": "Josh", - "confidence": 0.959 - }, - { - "boundingBox": [ - 502, - 1670, - 627, - 1671, - 627, - 1706, - 501, - 1705 - ], - "text": "Granger", - "confidence": 0.957 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 1204, - 1672, - 1296, - 1672, - 1296, - 1699, - 1204, - 1699 - ], - "text": "TOTAL", - "words": [ - { - "boundingBox": [ - 1207, - 1674, - 1296, - 1673, - 1296, - 1699, - 1207, - 1699 - ], - "text": "TOTAL", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 1411, - 1670, - 1530, - 1670, - 1530, - 1696, - 1411, - 1697 - ], - "text": "$7350.00", - "words": [ - { - "boundingBox": [ - 1413, - 1670, - 1530, - 1670, - 1530, - 1697, - 1413, - 1698 - ], - "text": "$7350.00", - "confidence": 0.958 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 558, - 1719, - 704, - 1721, - 704, - 1744, - 557, - 1742 - ], - "text": "Josh Granger", - "words": [ - { - "boundingBox": [ - 559, - 1719, - 606, - 1720, - 605, - 1743, - 558, - 1742 - ], - "text": "Josh", - "confidence": 0.839 - }, - { - "boundingBox": [ - 612, - 1720, - 704, - 1721, - 703, - 1745, - 611, - 1743 - ], - "text": "Granger", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 543, - 1752, - 718, - 1754, - 718, - 1780, - 543, - 1778 - ], - "text": "Supply Manger", - "words": [ - { - "boundingBox": [ - 545, - 1752, - 623, - 1753, - 621, - 1780, - 543, - 1778 - ], - "text": "Supply", - "confidence": 0.959 - }, - { - "boundingBox": [ - 628, - 1753, - 719, - 1754, - 718, - 1781, - 626, - 1780 - ], - "text": "Manger", - "confidence": 0.958 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 173, - 1796, - 480, - 1797, - 479, - 1832, - 173, - 1830 - ], - "text": "Additional Notes:", - "words": [ - { - "boundingBox": [ - 175, - 1798, - 359, - 1797, - 358, - 1832, - 174, - 1830 - ], - "text": "Additional", - "confidence": 0.959 - }, - { - "boundingBox": [ - 365, - 1797, - 479, - 1800, - 479, - 1832, - 365, - 1832 - ], - "text": "Notes:", - "confidence": 0.948 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 172, - 1879, - 1483, - 1878, - 1483, - 1914, - 172, - 1914 - ], - "text": "Enjoy. Namaste. If you have any issues with your Yoga supplies please contact us directly", - "words": [ - { - "boundingBox": [ - 174, - 1880, - 253, - 1880, - 251, - 1911, - 172, - 1910 - ], - "text": "Enjoy.", - "confidence": 0.956 - }, - { - "boundingBox": [ - 258, - 1880, - 403, - 1880, - 402, - 1913, - 257, - 1911 - ], - "text": "Namaste.", - "confidence": 0.949 - }, - { - "boundingBox": [ - 409, - 1880, - 431, - 1879, - 430, - 1913, - 408, - 1913 - ], - "text": "If", - "confidence": 0.958 - }, - { - "boundingBox": [ - 437, - 1879, - 493, - 1879, - 491, - 1913, - 436, - 1913 - ], - "text": "you", - "confidence": 0.958 - }, - { - "boundingBox": [ - 499, - 1879, - 574, - 1879, - 572, - 1914, - 497, - 1913 - ], - "text": "have", - "confidence": 0.959 - }, - { - "boundingBox": [ - 582, - 1879, - 638, - 1879, - 636, - 1914, - 580, - 1914 - ], - "text": "any", - "confidence": 0.958 - }, - { - "boundingBox": [ - 644, - 1879, - 743, - 1879, - 741, - 1915, - 642, - 1914 - ], - "text": "issues", - "confidence": 0.959 - }, - { - "boundingBox": [ - 749, - 1879, - 809, - 1879, - 807, - 1915, - 747, - 1915 - ], - "text": "with", - "confidence": 0.959 - }, - { - "boundingBox": [ - 816, - 1879, - 888, - 1879, - 886, - 1915, - 815, - 1915 - ], - "text": "your", - "confidence": 0.917 - }, - { - "boundingBox": [ - 894, - 1879, - 971, - 1879, - 970, - 1915, - 892, - 1915 - ], - "text": "Yoga", - "confidence": 0.958 - }, - { - "boundingBox": [ - 979, - 1879, - 1104, - 1879, - 1103, - 1914, - 977, - 1915 - ], - "text": "supplies", - "confidence": 0.955 - }, - { - "boundingBox": [ - 1110, - 1879, - 1212, - 1879, - 1210, - 1913, - 1108, - 1914 - ], - "text": "please", - "confidence": 0.948 - }, - { - "boundingBox": [ - 1218, - 1879, - 1329, - 1879, - 1327, - 1913, - 1216, - 1913 - ], - "text": "contact", - "confidence": 0.959 - }, - { - "boundingBox": [ - 1335, - 1879, - 1374, - 1879, - 1372, - 1912, - 1333, - 1912 - ], - "text": "us", - "confidence": 0.958 - }, - { - "boundingBox": [ - 1380, - 1879, - 1483, - 1879, - 1481, - 1911, - 1378, - 1912 - ], - "text": "directly", - "confidence": 0.939 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 168, - 1926, - 935, - 1927, - 935, - 1961, - 168, - 1960 - ], - "text": "via email or at 250-209-1294 during business hours.", - "words": [ - { - "boundingBox": [ - 169, - 1929, - 210, - 1928, - 210, - 1959, - 168, - 1958 - ], - "text": "via", - "confidence": 0.862 - }, - { - "boundingBox": [ - 218, - 1928, - 303, - 1927, - 302, - 1960, - 218, - 1959 - ], - "text": "email", - "confidence": 0.897 - }, - { - "boundingBox": [ - 308, - 1927, - 339, - 1927, - 339, - 1960, - 308, - 1960 - ], - "text": "or", - "confidence": 0.958 - }, - { - "boundingBox": [ - 345, - 1927, - 378, - 1927, - 377, - 1961, - 345, - 1960 - ], - "text": "at", - "confidence": 0.909 - }, - { - "boundingBox": [ - 383, - 1927, - 595, - 1927, - 595, - 1962, - 383, - 1961 - ], - "text": "250-209-1294", - "confidence": 0.945 - }, - { - "boundingBox": [ - 601, - 1927, - 695, - 1927, - 695, - 1962, - 601, - 1962 - ], - "text": "during", - "confidence": 0.959 - }, - { - "boundingBox": [ - 701, - 1927, - 836, - 1928, - 836, - 1961, - 701, - 1962 - ], - "text": "business", - "confidence": 0.958 - }, - { - "boundingBox": [ - 842, - 1929, - 935, - 1930, - 935, - 1960, - 841, - 1961 - ], - "text": "hours.", - "confidence": 0.959 - } - ] - } - ] - } - ], - "pageResults": [ - { - "page": 1, - "tables": [ - { - "rows": 3, - "columns": 2, - "cells": [ - { - "rowIndex": 0, - "columnIndex": 0, - "text": "Company Phone: 555-348-6512 Website: www.herolimited.com", - "boundingBox": [ - 165, - 351, - 815, - 351, - 815, - 415, - 165, - 415 - ], - "elements": [ - "#/readResults/0/lines/2/words/0", - "#/readResults/0/lines/2/words/1", - "#/readResults/0/lines/2/words/2", - "#/readResults/0/lines/4/words/0", - "#/readResults/0/lines/4/words/1" - ] - }, - { - "rowIndex": 1, - "columnIndex": 0, - "text": "Email: accounts@herolimited.com", - "boundingBox": [ - 165, - 415, - 815, - 415, - 815, - 453, - 165, - 453 - ], - "elements": [ - "#/readResults/0/lines/5/words/0", - "#/readResults/0/lines/5/words/1" - ] - }, - { - "rowIndex": 1, - "columnIndex": 1, - "text": "Dated As: 04/04/2020", - "boundingBox": [ - 815, - 415, - 1389, - 415, - 1389, - 453, - 815, - 453 - ], - "elements": [ - "#/readResults/0/lines/6/words/0", - "#/readResults/0/lines/6/words/1", - "#/readResults/0/lines/6/words/2" - ] - }, - { - "rowIndex": 2, - "columnIndex": 0, - "text": "49823 Major Ave", - "boundingBox": [ - 165, - 453, - 815, - 453, - 815, - 490, - 165, - 490 - ], - "elements": [ - "#/readResults/0/lines/7/words/0", - "#/readResults/0/lines/7/words/1", - "#/readResults/0/lines/7/words/2" - ] - }, - { - "rowIndex": 2, - "columnIndex": 1, - "text": "Purchase Order #: 3929423", - "boundingBox": [ - 815, - 453, - 1389, - 453, - 1389, - 490, - 815, - 490 - ], - "elements": [ - "#/readResults/0/lines/8/words/0", - "#/readResults/0/lines/8/words/1", - "#/readResults/0/lines/8/words/2", - "#/readResults/0/lines/8/words/3" - ] - } - ] - }, - { - "rows": 7, - "columns": 4, - "cells": [ - { - "rowIndex": 0, - "columnIndex": 0, - "text": "Details", - "boundingBox": [ - 156, - 1038, - 847, - 1038, - 847, - 1087, - 156, - 1087 - ], - "elements": [ - "#/readResults/0/lines/20/words/0" - ] - }, - { - "rowIndex": 0, - "columnIndex": 1, - "text": "Quantity", - "boundingBox": [ - 847, - 1038, - 1072, - 1038, - 1072, - 1087, - 847, - 1087 - ], - "elements": [ - "#/readResults/0/lines/21/words/0" - ] - }, - { - "rowIndex": 0, - "columnIndex": 2, - "text": "Unit Price", - "boundingBox": [ - 1072, - 1038, - 1309, - 1038, - 1309, - 1087, - 1072, - 1087 - ], - "elements": [ - "#/readResults/0/lines/22/words/0", - "#/readResults/0/lines/22/words/1" - ] - }, - { - "rowIndex": 0, - "columnIndex": 3, - "text": "Total", - "boundingBox": [ - 1309, - 1038, - 1544, - 1038, - 1544, - 1087, - 1309, - 1087 - ], - "elements": [ - "#/readResults/0/lines/23/words/0" - ] - }, - { - "rowIndex": 1, - "columnIndex": 0, - "text": "Long Yoga Mat", - "boundingBox": [ - 156, - 1087, - 847, - 1087, - 847, - 1128, - 156, - 1128 - ], - "elements": [ - "#/readResults/0/lines/24/words/0", - "#/readResults/0/lines/24/words/1", - "#/readResults/0/lines/24/words/2" - ] - }, - { - "rowIndex": 1, - "columnIndex": 1, - "text": "50", - "boundingBox": [ - 847, - 1087, - 1072, - 1087, - 1072, - 1128, - 847, - 1128 - ], - "elements": [ - "#/readResults/0/lines/25/words/0" - ] - }, - { - "rowIndex": 1, - "columnIndex": 2, - "text": "50.00", - "boundingBox": [ - 1072, - 1087, - 1309, - 1087, - 1309, - 1128, - 1072, - 1128 - ], - "elements": [ - "#/readResults/0/lines/26/words/0" - ] - }, - { - "rowIndex": 1, - "columnIndex": 3, - "text": "2500.00", - "boundingBox": [ - 1309, - 1087, - 1544, - 1087, - 1544, - 1128, - 1309, - 1128 - ], - "elements": [ - "#/readResults/0/lines/27/words/0" - ] - }, - { - "rowIndex": 2, - "columnIndex": 0, - "text": "Short Yoga Man", - "boundingBox": [ - 156, - 1128, - 847, - 1128, - 847, - 1172, - 156, - 1172 - ], - "elements": [ - "#/readResults/0/lines/28/words/0", - "#/readResults/0/lines/28/words/1", - "#/readResults/0/lines/28/words/2" - ] - }, - { - "rowIndex": 2, - "columnIndex": 1, - "text": "50", - "boundingBox": [ - 847, - 1128, - 1072, - 1128, - 1072, - 1172, - 847, - 1172 - ], - "elements": [ - "#/readResults/0/lines/29/words/0" - ] - }, - { - "rowIndex": 2, - "columnIndex": 2, - "text": "50.00", - "boundingBox": [ - 1072, - 1128, - 1309, - 1128, - 1309, - 1172, - 1072, - 1172 - ], - "elements": [ - "#/readResults/0/lines/30/words/0" - ] - }, - { - "rowIndex": 2, - "columnIndex": 3, - "text": "2500.00", - "boundingBox": [ - 1309, - 1128, - 1544, - 1128, - 1544, - 1172, - 1309, - 1172 - ], - "elements": [ - "#/readResults/0/lines/31/words/0" - ] - }, - { - "rowIndex": 3, - "columnIndex": 0, - "text": "Towel White", - "boundingBox": [ - 156, - 1172, - 847, - 1172, - 847, - 1216, - 156, - 1216 - ], - "elements": [ - "#/readResults/0/lines/32/words/0", - "#/readResults/0/lines/32/words/1" - ] - }, - { - "rowIndex": 3, - "columnIndex": 1, - "text": "100", - "boundingBox": [ - 847, - 1172, - 1072, - 1172, - 1072, - 1216, - 847, - 1216 - ], - "elements": [ - "#/readResults/0/lines/33/words/0" - ] - }, - { - "rowIndex": 3, - "columnIndex": 2, - "text": "10.00", - "boundingBox": [ - 1072, - 1172, - 1309, - 1172, - 1309, - 1216, - 1072, - 1216 - ], - "elements": [ - "#/readResults/0/lines/34/words/0" - ] - }, - { - "rowIndex": 3, - "columnIndex": 3, - "text": "1000.00", - "boundingBox": [ - 1309, - 1172, - 1544, - 1172, - 1544, - 1216, - 1309, - 1216 - ], - "elements": [ - "#/readResults/0/lines/35/words/0" - ] - }, - { - "rowIndex": 4, - "columnIndex": 0, - "text": "Decal Stickers", - "boundingBox": [ - 156, - 1216, - 847, - 1216, - 847, - 1260, - 156, - 1260 - ], - "elements": [ - "#/readResults/0/lines/36/words/0", - "#/readResults/0/lines/36/words/1" - ] - }, - { - "rowIndex": 4, - "columnIndex": 1, - "text": "50", - "boundingBox": [ - 847, - 1216, - 1072, - 1216, - 1072, - 1260, - 847, - 1260 - ], - "elements": [ - "#/readResults/0/lines/37/words/0" - ] - }, - { - "rowIndex": 4, - "columnIndex": 2, - "text": "5.00", - "boundingBox": [ - 1072, - 1216, - 1309, - 1216, - 1309, - 1260, - 1072, - 1260 - ], - "elements": [ - "#/readResults/0/lines/38/words/0" - ] - }, - { - "rowIndex": 4, - "columnIndex": 3, - "text": "250.00", - "boundingBox": [ - 1309, - 1216, - 1544, - 1216, - 1544, - 1260, - 1309, - 1260 - ], - "elements": [ - "#/readResults/0/lines/39/words/0" - ] - }, - { - "rowIndex": 5, - "columnIndex": 0, - "text": "Water Bottle Blue", - "boundingBox": [ - 156, - 1260, - 847, - 1260, - 847, - 1303, - 156, - 1303 - ], - "elements": [ - "#/readResults/0/lines/40/words/0", - "#/readResults/0/lines/40/words/1", - "#/readResults/0/lines/40/words/2" - ] - }, - { - "rowIndex": 5, - "columnIndex": 1, - "text": "50", - "boundingBox": [ - 847, - 1260, - 1072, - 1260, - 1072, - 1303, - 847, - 1303 - ], - "elements": [ - "#/readResults/0/lines/41/words/0" - ] - }, - { - "rowIndex": 5, - "columnIndex": 2, - "text": "10.00", - "boundingBox": [ - 1072, - 1260, - 1309, - 1260, - 1309, - 1303, - 1072, - 1303 - ], - "elements": [ - "#/readResults/0/lines/42/words/0" - ] - }, - { - "rowIndex": 5, - "columnIndex": 3, - "text": "500.00", - "boundingBox": [ - 1309, - 1260, - 1544, - 1260, - 1544, - 1303, - 1309, - 1303 - ], - "elements": [ - "#/readResults/0/lines/43/words/0" - ] - } - ] - } - ] - } - ] - } -} \ No newline at end of file diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/sample_forms/training/Form_5.jpg b/sdk/formrecognizer/azure-ai-formrecognizer/tests/sample_forms/training/Form_5.jpg deleted file mode 100644 index 266cfecffdbe..000000000000 Binary files a/sdk/formrecognizer/azure-ai-formrecognizer/tests/sample_forms/training/Form_5.jpg and /dev/null differ diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/sample_forms/training/Form_5.jpg.labels.json b/sdk/formrecognizer/azure-ai-formrecognizer/tests/sample_forms/training/Form_5.jpg.labels.json deleted file mode 100644 index 287b6eb7a62c..000000000000 --- a/sdk/formrecognizer/azure-ai-formrecognizer/tests/sample_forms/training/Form_5.jpg.labels.json +++ /dev/null @@ -1,495 +0,0 @@ -{ - "document": "Form_5.jpg", - "labels": [ - { - "label": "Merchant", - "key": null, - "value": [ - { - "page": 1, - "text": "Hero", - "boundingBoxes": [ - [ - 0.3658823529411765, - 0.09409090909090909, - 0.46352941176470586, - 0.09272727272727273, - 0.46294117647058824, - 0.12090909090909091, - 0.3652941176470588, - 0.12090909090909091 - ] - ] - }, - { - "page": 1, - "text": "Limited", - "boundingBoxes": [ - [ - 0.47705882352941176, - 0.09272727272727273, - 0.6323529411764706, - 0.09181818181818181, - 0.6323529411764706, - 0.12090909090909091, - 0.47705882352941176, - 0.12090909090909091 - ] - ] - } - ] - }, - { - "label": "PhoneNumber", - "key": null, - "value": [ - { - "page": 1, - "text": "555-348-6512", - "boundingBoxes": [ - [ - 0.21588235294117647, - 0.15954545454545455, - 0.3111764705882353, - 0.16, - 0.3111764705882353, - 0.17, - 0.21588235294117647, - 0.17181818181818181 - ] - ] - } - ] - }, - { - "label": "Website", - "key": null, - "value": [ - { - "page": 1, - "text": "www.herolimited.com", - "boundingBoxes": [ - [ - 0.16176470588235295, - 0.17863636363636365, - 0.31058823529411766, - 0.17863636363636365, - 0.3111764705882353, - 0.19, - 0.16117647058823528, - 0.19045454545454546 - ] - ] - } - ] - }, - { - "label": "DatedAs", - "key": null, - "value": [ - { - "page": 1, - "text": "02/09/2020", - "boundingBoxes": [ - [ - 0.6858823529411765, - 0.19090909090909092, - 0.7747058823529411, - 0.19090909090909092, - 0.7747058823529411, - 0.20454545454545456, - 0.6852941176470588, - 0.20454545454545456 - ] - ] - } - ] - }, - { - "label": "Email", - "key": null, - "value": [ - { - "page": 1, - "text": "accounts@herolimited.com", - "boundingBoxes": [ - [ - 0.0976470588235294, - 0.22, - 0.27941176470588236, - 0.21818181818181817, - 0.2782352941176471, - 0.22863636363636364, - 0.0976470588235294, - 0.22863636363636364 - ] - ] - } - ] - }, - { - "label": "PurchaseOrderNumber", - "key": null, - "value": [ - { - "page": 1, - "text": "2992848", - "boundingBoxes": [ - [ - 0.7535294117647059, - 0.20954545454545453, - 0.8170588235294117, - 0.20954545454545453, - 0.8164705882352942, - 0.22181818181818183, - 0.7529411764705882, - 0.22272727272727272 - ] - ] - } - ] - }, - { - "label": "VendorName", - "key": null, - "value": [ - { - "page": 1, - "text": "Jack", - "boundingBoxes": [ - [ - 0.20588235294117646, - 0.2772727272727273, - 0.2388235294117647, - 0.2772727272727273, - 0.23823529411764705, - 0.2913636363636364, - 0.20588235294117646, - 0.2909090909090909 - ] - ] - }, - { - "page": 1, - "text": "Sprat", - "boundingBoxes": [ - [ - 0.24176470588235294, - 0.2772727272727273, - 0.2811764705882353, - 0.2772727272727273, - 0.2811764705882353, - 0.2918181818181818, - 0.24176470588235294, - 0.2913636363636364 - ] - ] - } - ] - }, - { - "label": "CompanyName", - "key": null, - "value": [ - { - "page": 1, - "text": "Jackrabbit", - "boundingBoxes": [ - [ - 0.2211764705882353, - 0.29409090909090907, - 0.2958823529411765, - 0.29409090909090907, - 0.2958823529411765, - 0.30863636363636365, - 0.2211764705882353, - 0.30863636363636365 - ] - ] - }, - { - "page": 1, - "text": "Printing", - "boundingBoxes": [ - [ - 0.3, - 0.29409090909090907, - 0.36, - 0.29363636363636364, - 0.3594117647058824, - 0.30954545454545457, - 0.3, - 0.30863636363636365 - ] - ] - } - ] - }, - { - "label": "CompanyAddress", - "key": null, - "value": [ - { - "page": 1, - "text": "342", - "boundingBoxes": [ - [ - 0.16176470588235295, - 0.31136363636363634, - 0.19058823529411764, - 0.31136363636363634, - 0.19058823529411764, - 0.3236363636363636, - 0.16176470588235295, - 0.3240909090909091 - ] - ] - }, - { - "page": 1, - "text": "W", - "boundingBoxes": [ - [ - 0.19411764705882353, - 0.31136363636363634, - 0.20529411764705882, - 0.31136363636363634, - 0.20529411764705882, - 0.3240909090909091, - 0.19411764705882353, - 0.3236363636363636 - ] - ] - }, - { - "page": 1, - "text": "Wrinkle", - "boundingBoxes": [ - [ - 0.21411764705882352, - 0.31136363636363634, - 0.27176470588235296, - 0.31136363636363634, - 0.27176470588235296, - 0.3240909090909091, - 0.21411764705882352, - 0.3240909090909091 - ] - ] - }, - { - "page": 1, - "text": "Road", - "boundingBoxes": [ - [ - 0.2752941176470588, - 0.31136363636363634, - 0.3135294117647059, - 0.31136363636363634, - 0.3135294117647059, - 0.3240909090909091, - 0.2752941176470588, - 0.3240909090909091 - ] - ] - }, - { - "page": 1, - "text": "Bozeman", - "boundingBoxes": [ - [ - 0.16117647058823528, - 0.3290909090909091, - 0.22764705882352942, - 0.3286363636363636, - 0.22705882352941176, - 0.34045454545454545, - 0.16058823529411764, - 0.34045454545454545 - ] - ] - }, - { - "page": 1, - "text": "MT", - "boundingBoxes": [ - [ - 0.23176470588235293, - 0.3286363636363636, - 0.2570588235294118, - 0.3286363636363636, - 0.2564705882352941, - 0.34045454545454545, - 0.2311764705882353, - 0.34045454545454545 - ] - ] - }, - { - "page": 1, - "text": "83839", - "boundingBoxes": [ - [ - 0.26, - 0.3286363636363636, - 0.30470588235294116, - 0.3286363636363636, - 0.30470588235294116, - 0.34, - 0.25941176470588234, - 0.34045454545454545 - ] - ] - } - ] - }, - { - "label": "CompanyPhoneNumber", - "key": null, - "value": [ - { - "page": 1, - "text": "938-294-2949", - "boundingBoxes": [ - [ - 0.5041176470588236, - 0.3281818181818182, - 0.6070588235294118, - 0.3281818181818182, - 0.6064705882352941, - 0.34, - 0.5041176470588236, - 0.34045454545454545 - ] - ] - } - ] - }, - { - "label": "Quantity", - "key": null, - "value": [ - { - "page": 1, - "text": "20", - "boundingBoxes": [ - [ - 0.5064705882352941, - 0.4959090909090909, - 0.5252941176470588, - 0.495, - 0.5264705882352941, - 0.5081818181818182, - 0.5076470588235295, - 0.509090909090909 - ] - ] - } - ] - }, - { - "label": "Subtotal", - "key": null, - "value": [ - { - "page": 1, - "text": "$900.00", - "boundingBoxes": [ - [ - 0.8405882352941176, - 0.7140909090909091, - 0.9, - 0.7136363636363636, - 0.9, - 0.7263636363636363, - 0.8405882352941176, - 0.7268181818181818 - ] - ] - } - ] - }, - { - "label": "Tax", - "key": null, - "value": [ - { - "page": 1, - "text": "$100.00", - "boundingBoxes": [ - [ - 0.84, - 0.7345454545454545, - 0.9005882352941177, - 0.7336363636363636, - 0.9005882352941177, - 0.7459090909090909, - 0.8405882352941176, - 0.7468181818181818 - ] - ] - } - ] - }, - { - "label": "Signature", - "key": null, - "value": [ - { - "page": 1, - "text": "Wesley", - "boundingBoxes": [ - [ - 0.3123529411764706, - 0.759090909090909, - 0.3735294117647059, - 0.7595454545454545, - 0.3729411764705882, - 0.7777272727272727, - 0.31176470588235294, - 0.7781818181818182 - ] - ] - }, - { - "page": 1, - "text": "Snipes", - "boundingBoxes": [ - [ - 0.37823529411764706, - 0.7595454545454545, - 0.4323529411764706, - 0.7595454545454545, - 0.43176470588235294, - 0.7786363636363637, - 0.37823529411764706, - 0.7777272727272727 - ] - ] - } - ] - }, - { - "label": "Total", - "key": null, - "value": [ - { - "page": 1, - "text": "$1000.00", - "boundingBoxes": [ - [ - 0.8305882352941176, - 0.7595454545454545, - 0.9, - 0.7586363636363637, - 0.9005882352941177, - 0.7709090909090909, - 0.8305882352941176, - 0.7722727272727272 - ] - ] - } - ] - } - ] -} \ No newline at end of file diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/sample_forms/training/Form_5.jpg.ocr.json b/sdk/formrecognizer/azure-ai-formrecognizer/tests/sample_forms/training/Form_5.jpg.ocr.json deleted file mode 100644 index ce52e1712656..000000000000 --- a/sdk/formrecognizer/azure-ai-formrecognizer/tests/sample_forms/training/Form_5.jpg.ocr.json +++ /dev/null @@ -1,3489 +0,0 @@ -{ - "status": "succeeded", - "createdDateTime": "2020-04-09T01:36:12Z", - "lastUpdatedDateTime": "2020-04-09T01:36:15Z", - "analyzeResult": { - "version": "2.0.0", - "readResults": [ - { - "page": 1, - "language": "en", - "angle": -0.0425, - "width": 1700, - "height": 2200, - "unit": "pixel", - "lines": [ - { - "language": "en", - "boundingBox": [ - 137, - 140, - 351, - 140, - 351, - 167, - 137, - 166 - ], - "text": "Purchase Order", - "words": [ - { - "boundingBox": [ - 137, - 140, - 263, - 140, - 263, - 168, - 138, - 166 - ], - "text": "Purchase", - "confidence": 0.959 - }, - { - "boundingBox": [ - 271, - 140, - 351, - 140, - 351, - 168, - 272, - 168 - ], - "text": "Order", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 620, - 204, - 1073, - 201, - 1074, - 264, - 620, - 266 - ], - "text": "Hero Limited", - "words": [ - { - "boundingBox": [ - 622, - 207, - 788, - 204, - 787, - 266, - 621, - 266 - ], - "text": "Hero", - "confidence": 0.959 - }, - { - "boundingBox": [ - 811, - 204, - 1075, - 202, - 1075, - 266, - 811, - 266 - ], - "text": "Limited", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 165, - 351, - 529, - 350, - 530, - 377, - 165, - 379 - ], - "text": "Company Phone: 555-348-6512", - "words": [ - { - "boundingBox": [ - 167, - 352, - 275, - 351, - 275, - 379, - 167, - 379 - ], - "text": "Company", - "confidence": 0.959 - }, - { - "boundingBox": [ - 281, - 351, - 362, - 351, - 362, - 378, - 280, - 379 - ], - "text": "Phone:", - "confidence": 0.958 - }, - { - "boundingBox": [ - 367, - 351, - 529, - 352, - 529, - 374, - 367, - 378 - ], - "text": "555-348-6512", - "confidence": 0.946 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 1114, - 320, - 1551, - 320, - 1551, - 370, - 1114, - 370 - ], - "text": "Purchase Order", - "words": [ - { - "boundingBox": [ - 1115, - 322, - 1377, - 321, - 1377, - 371, - 1117, - 371 - ], - "text": "Purchase", - "confidence": 0.959 - }, - { - "boundingBox": [ - 1396, - 321, - 1551, - 321, - 1549, - 371, - 1396, - 371 - ], - "text": "Order", - "confidence": 0.951 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 167, - 392, - 534, - 392, - 534, - 419, - 167, - 418 - ], - "text": "Website: www.herolimited.com", - "words": [ - { - "boundingBox": [ - 168, - 392, - 270, - 393, - 269, - 419, - 167, - 418 - ], - "text": "Website:", - "confidence": 0.957 - }, - { - "boundingBox": [ - 275, - 393, - 528, - 393, - 529, - 418, - 274, - 419 - ], - "text": "www.herolimited.com", - "confidence": 0.872 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 164, - 437, - 236, - 437, - 236, - 459, - 164, - 459 - ], - "text": "Email:", - "words": [ - { - "boundingBox": [ - 165, - 437, - 236, - 437, - 237, - 460, - 165, - 459 - ], - "text": "Email:", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 1025, - 420, - 1317, - 419, - 1317, - 449, - 1025, - 449 - ], - "text": "Dated As: 02/09/2020", - "words": [ - { - "boundingBox": [ - 1026, - 421, - 1111, - 420, - 1110, - 450, - 1025, - 450 - ], - "text": "Dated", - "confidence": 0.959 - }, - { - "boundingBox": [ - 1118, - 420, - 1160, - 420, - 1159, - 450, - 1118, - 450 - ], - "text": "As:", - "confidence": 0.958 - }, - { - "boundingBox": [ - 1166, - 420, - 1317, - 420, - 1317, - 450, - 1165, - 450 - ], - "text": "02/09/2020", - "confidence": 0.958 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 166, - 480, - 482, - 479, - 482, - 502, - 166, - 503 - ], - "text": "accounts@herolimited.com", - "words": [ - { - "boundingBox": [ - 166, - 484, - 475, - 480, - 473, - 503, - 166, - 503 - ], - "text": "accounts@herolimited.com", - "confidence": 0.856 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 1025, - 461, - 1389, - 461, - 1389, - 489, - 1025, - 490 - ], - "text": "Purchase Order #: 2992848", - "words": [ - { - "boundingBox": [ - 1027, - 462, - 1154, - 461, - 1153, - 490, - 1026, - 489 - ], - "text": "Purchase", - "confidence": 0.958 - }, - { - "boundingBox": [ - 1160, - 461, - 1241, - 461, - 1240, - 490, - 1159, - 490 - ], - "text": "Order", - "confidence": 0.959 - }, - { - "boundingBox": [ - 1246, - 461, - 1276, - 461, - 1275, - 490, - 1245, - 490 - ], - "text": "#:", - "confidence": 0.941 - }, - { - "boundingBox": [ - 1281, - 461, - 1389, - 461, - 1388, - 488, - 1280, - 490 - ], - "text": "2992848", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 166, - 546, - 394, - 546, - 394, - 594, - 166, - 594 - ], - "text": "Shipped To", - "words": [ - { - "boundingBox": [ - 167, - 546, - 336, - 548, - 337, - 593, - 168, - 595 - ], - "text": "Shipped", - "confidence": 0.959 - }, - { - "boundingBox": [ - 346, - 548, - 393, - 547, - 393, - 593, - 346, - 593 - ], - "text": "To", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 160, - 609, - 479, - 609, - 479, - 641, - 160, - 639 - ], - "text": "Vendor Name: Jack Sprat", - "words": [ - { - "boundingBox": [ - 162, - 610, - 257, - 610, - 256, - 639, - 160, - 638 - ], - "text": "Vendor", - "confidence": 0.958 - }, - { - "boundingBox": [ - 262, - 610, - 345, - 610, - 344, - 640, - 261, - 639 - ], - "text": "Name:", - "confidence": 0.945 - }, - { - "boundingBox": [ - 350, - 610, - 406, - 610, - 405, - 641, - 350, - 640 - ], - "text": "Jack", - "confidence": 0.959 - }, - { - "boundingBox": [ - 411, - 610, - 478, - 610, - 478, - 642, - 411, - 641 - ], - "text": "Sprat", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 160, - 646, - 612, - 646, - 612, - 680, - 160, - 680 - ], - "text": "Company Name: Jackrabbit Printing", - "words": [ - { - "boundingBox": [ - 160, - 647, - 280, - 647, - 280, - 679, - 160, - 681 - ], - "text": "Company", - "confidence": 0.959 - }, - { - "boundingBox": [ - 287, - 647, - 369, - 647, - 369, - 679, - 287, - 679 - ], - "text": "Name:", - "confidence": 0.909 - }, - { - "boundingBox": [ - 376, - 647, - 503, - 647, - 503, - 679, - 376, - 679 - ], - "text": "Jackrabbit", - "confidence": 0.95 - }, - { - "boundingBox": [ - 510, - 647, - 612, - 646, - 611, - 681, - 510, - 679 - ], - "text": "Printing", - "confidence": 0.958 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 161, - 684, - 534, - 684, - 534, - 713, - 161, - 712 - ], - "text": "Address: 342 W Wrinkle Road", - "words": [ - { - "boundingBox": [ - 161, - 684, - 270, - 685, - 270, - 713, - 161, - 713 - ], - "text": "Address:", - "confidence": 0.958 - }, - { - "boundingBox": [ - 275, - 685, - 324, - 685, - 324, - 712, - 275, - 713 - ], - "text": "342", - "confidence": 0.958 - }, - { - "boundingBox": [ - 330, - 685, - 349, - 685, - 349, - 713, - 330, - 712 - ], - "text": "W", - "confidence": 0.888 - }, - { - "boundingBox": [ - 364, - 685, - 462, - 685, - 462, - 713, - 364, - 713 - ], - "text": "Wrinkle", - "confidence": 0.959 - }, - { - "boundingBox": [ - 468, - 685, - 533, - 685, - 533, - 713, - 468, - 713 - ], - "text": "Road", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 272, - 723, - 518, - 723, - 518, - 748, - 272, - 748 - ], - "text": "Bozeman MT 83839", - "words": [ - { - "boundingBox": [ - 274, - 724, - 387, - 723, - 386, - 749, - 273, - 749 - ], - "text": "Bozeman", - "confidence": 0.958 - }, - { - "boundingBox": [ - 394, - 723, - 437, - 723, - 436, - 749, - 393, - 749 - ], - "text": "MT", - "confidence": 0.948 - }, - { - "boundingBox": [ - 442, - 723, - 518, - 723, - 518, - 748, - 441, - 749 - ], - "text": "83839", - "confidence": 0.949 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 759, - 721, - 1032, - 721, - 1032, - 748, - 759, - 749 - ], - "text": "Phone: 938-294-2949", - "words": [ - { - "boundingBox": [ - 761, - 723, - 852, - 722, - 852, - 749, - 761, - 748 - ], - "text": "Phone:", - "confidence": 0.959 - }, - { - "boundingBox": [ - 857, - 722, - 1032, - 722, - 1031, - 748, - 857, - 749 - ], - "text": "938-294-2949", - "confidence": 0.934 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 165, - 783, - 450, - 783, - 451, - 826, - 165, - 830 - ], - "text": "Shipped From", - "words": [ - { - "boundingBox": [ - 166, - 784, - 336, - 784, - 335, - 829, - 166, - 830 - ], - "text": "Shipped", - "confidence": 0.959 - }, - { - "boundingBox": [ - 345, - 784, - 441, - 783, - 440, - 824, - 344, - 828 - ], - "text": "From", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 165, - 851, - 436, - 852, - 436, - 883, - 164, - 881 - ], - "text": "Name: Wesley Snipes", - "words": [ - { - "boundingBox": [ - 166, - 851, - 252, - 852, - 250, - 882, - 165, - 882 - ], - "text": "Name:", - "confidence": 0.958 - }, - { - "boundingBox": [ - 258, - 852, - 348, - 853, - 347, - 882, - 256, - 882 - ], - "text": "Wesley", - "confidence": 0.959 - }, - { - "boundingBox": [ - 354, - 853, - 435, - 853, - 434, - 884, - 353, - 882 - ], - "text": "Snipes", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 164, - 890, - 486, - 889, - 487, - 917, - 164, - 920 - ], - "text": "Company Name: We Sew", - "words": [ - { - "boundingBox": [ - 167, - 890, - 287, - 890, - 287, - 920, - 166, - 920 - ], - "text": "Company", - "confidence": 0.959 - }, - { - "boundingBox": [ - 293, - 890, - 377, - 890, - 377, - 918, - 293, - 920 - ], - "text": "Name:", - "confidence": 0.917 - }, - { - "boundingBox": [ - 383, - 890, - 427, - 890, - 427, - 917, - 383, - 918 - ], - "text": "We", - "confidence": 0.958 - }, - { - "boundingBox": [ - 433, - 890, - 481, - 890, - 481, - 915, - 433, - 917 - ], - "text": "Sew", - "confidence": 0.958 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 167, - 926, - 523, - 926, - 523, - 952, - 167, - 953 - ], - "text": "Address: 998 N Groove Road", - "words": [ - { - "boundingBox": [ - 169, - 927, - 276, - 926, - 275, - 954, - 168, - 954 - ], - "text": "Address:", - "confidence": 0.916 - }, - { - "boundingBox": [ - 282, - 926, - 330, - 926, - 328, - 954, - 280, - 954 - ], - "text": "998", - "confidence": 0.958 - }, - { - "boundingBox": [ - 335, - 926, - 353, - 926, - 351, - 954, - 334, - 954 - ], - "text": "N", - "confidence": 0.879 - }, - { - "boundingBox": [ - 362, - 926, - 454, - 926, - 452, - 953, - 360, - 954 - ], - "text": "Groove", - "confidence": 0.887 - }, - { - "boundingBox": [ - 459, - 926, - 524, - 927, - 522, - 953, - 458, - 953 - ], - "text": "Road", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 272, - 965, - 497, - 964, - 497, - 991, - 272, - 992 - ], - "text": "Seattle WA 83838", - "words": [ - { - "boundingBox": [ - 273, - 966, - 362, - 965, - 362, - 990, - 273, - 992 - ], - "text": "Seattle", - "confidence": 0.959 - }, - { - "boundingBox": [ - 367, - 965, - 413, - 965, - 413, - 990, - 367, - 990 - ], - "text": "WA", - "confidence": 0.958 - }, - { - "boundingBox": [ - 420, - 965, - 498, - 964, - 498, - 992, - 420, - 990 - ], - "text": "83838", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 649, - 963, - 918, - 963, - 919, - 990, - 649, - 991 - ], - "text": "Phone: 334-244-2949", - "words": [ - { - "boundingBox": [ - 649, - 964, - 742, - 964, - 742, - 991, - 649, - 992 - ], - "text": "Phone:", - "confidence": 0.93 - }, - { - "boundingBox": [ - 748, - 963, - 919, - 963, - 918, - 990, - 748, - 991 - ], - "text": "334-244-2949", - "confidence": 0.943 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 447, - 1045, - 557, - 1045, - 557, - 1079, - 447, - 1079 - ], - "text": "Details", - "words": [ - { - "boundingBox": [ - 448, - 1048, - 555, - 1046, - 556, - 1080, - 449, - 1079 - ], - "text": "Details", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 888, - 1045, - 1032, - 1046, - 1032, - 1084, - 888, - 1083 - ], - "text": "Quantity", - "words": [ - { - "boundingBox": [ - 889, - 1046, - 1033, - 1047, - 1032, - 1083, - 888, - 1082 - ], - "text": "Quantity", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 1114, - 1046, - 1271, - 1047, - 1271, - 1078, - 1113, - 1077 - ], - "text": "Unit Price", - "words": [ - { - "boundingBox": [ - 1114, - 1047, - 1184, - 1047, - 1184, - 1078, - 1114, - 1077 - ], - "text": "Unit", - "confidence": 0.959 - }, - { - "boundingBox": [ - 1190, - 1047, - 1272, - 1047, - 1272, - 1079, - 1190, - 1078 - ], - "text": "Price", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 1384, - 1047, - 1469, - 1046, - 1470, - 1076, - 1384, - 1077 - ], - "text": "Total", - "words": [ - { - "boundingBox": [ - 1387, - 1046, - 1468, - 1046, - 1469, - 1076, - 1387, - 1077 - ], - "text": "Total", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 169, - 1094, - 334, - 1095, - 334, - 1120, - 169, - 1120 - ], - "text": "Black Sweats", - "words": [ - { - "boundingBox": [ - 172, - 1095, - 239, - 1095, - 238, - 1121, - 171, - 1121 - ], - "text": "Black", - "confidence": 0.959 - }, - { - "boundingBox": [ - 244, - 1095, - 335, - 1096, - 335, - 1121, - 244, - 1121 - ], - "text": "Sweats", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 859, - 1091, - 894, - 1089, - 895, - 1118, - 860, - 1120 - ], - "text": "20", - "words": [ - { - "boundingBox": [ - 861, - 1091, - 893, - 1089, - 895, - 1118, - 863, - 1120 - ], - "text": "20", - "confidence": 0.958 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 1224, - 1094, - 1296, - 1093, - 1296, - 1118, - 1224, - 1120 - ], - "text": "10.00", - "words": [ - { - "boundingBox": [ - 1227, - 1096, - 1295, - 1094, - 1295, - 1119, - 1227, - 1119 - ], - "text": "10.00", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 1442, - 1095, - 1531, - 1093, - 1532, - 1118, - 1443, - 1120 - ], - "text": "200.00", - "words": [ - { - "boundingBox": [ - 1444, - 1096, - 1528, - 1093, - 1528, - 1119, - 1444, - 1119 - ], - "text": "200.00", - "confidence": 0.958 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 170, - 1135, - 379, - 1135, - 379, - 1165, - 170, - 1165 - ], - "text": "Black Yoga Pants", - "words": [ - { - "boundingBox": [ - 172, - 1135, - 239, - 1135, - 238, - 1166, - 171, - 1165 - ], - "text": "Black", - "confidence": 0.959 - }, - { - "boundingBox": [ - 245, - 1135, - 305, - 1135, - 304, - 1166, - 243, - 1166 - ], - "text": "Yoga", - "confidence": 0.958 - }, - { - "boundingBox": [ - 311, - 1135, - 380, - 1135, - 379, - 1166, - 310, - 1166 - ], - "text": "Pants", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 860, - 1137, - 893, - 1135, - 893, - 1158, - 861, - 1160 - ], - "text": "20", - "words": [ - { - "boundingBox": [ - 862, - 1137, - 892, - 1135, - 893, - 1158, - 863, - 1160 - ], - "text": "20", - "confidence": 0.958 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 1225, - 1136, - 1296, - 1134, - 1296, - 1158, - 1225, - 1159 - ], - "text": "10.00", - "words": [ - { - "boundingBox": [ - 1227, - 1135, - 1295, - 1134, - 1295, - 1158, - 1227, - 1159 - ], - "text": "10.00", - "confidence": 0.57 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 1441, - 1136, - 1531, - 1135, - 1531, - 1159, - 1441, - 1160 - ], - "text": "200.00", - "words": [ - { - "boundingBox": [ - 1445, - 1136, - 1530, - 1136, - 1530, - 1159, - 1444, - 1160 - ], - "text": "200.00", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 172, - 1177, - 345, - 1178, - 345, - 1206, - 172, - 1204 - ], - "text": "White Sweats", - "words": [ - { - "boundingBox": [ - 173, - 1177, - 249, - 1180, - 249, - 1206, - 173, - 1205 - ], - "text": "White", - "confidence": 0.959 - }, - { - "boundingBox": [ - 255, - 1180, - 345, - 1179, - 345, - 1206, - 254, - 1206 - ], - "text": "Sweats", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 863, - 1181, - 893, - 1180, - 893, - 1202, - 863, - 1203 - ], - "text": "20", - "words": [ - { - "boundingBox": [ - 863, - 1181, - 892, - 1180, - 892, - 1202, - 863, - 1203 - ], - "text": "20", - "confidence": 0.958 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 1223, - 1180, - 1295, - 1179, - 1296, - 1203, - 1223, - 1204 - ], - "text": "10.00", - "words": [ - { - "boundingBox": [ - 1226, - 1180, - 1295, - 1180, - 1294, - 1203, - 1226, - 1204 - ], - "text": "10.00", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 1442, - 1180, - 1532, - 1180, - 1532, - 1203, - 1442, - 1204 - ], - "text": "200.00", - "words": [ - { - "boundingBox": [ - 1444, - 1180, - 1529, - 1180, - 1529, - 1203, - 1444, - 1204 - ], - "text": "200.00", - "confidence": 0.958 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 170, - 1221, - 353, - 1221, - 353, - 1248, - 170, - 1248 - ], - "text": "Yellow T Shirts", - "words": [ - { - "boundingBox": [ - 172, - 1222, - 251, - 1222, - 250, - 1249, - 172, - 1248 - ], - "text": "Yellow", - "confidence": 0.959 - }, - { - "boundingBox": [ - 263, - 1222, - 278, - 1222, - 278, - 1249, - 262, - 1249 - ], - "text": "T", - "confidence": 0.884 - }, - { - "boundingBox": [ - 283, - 1222, - 354, - 1222, - 354, - 1249, - 283, - 1249 - ], - "text": "Shirts", - "confidence": 0.958 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 861, - 1223, - 893, - 1222, - 893, - 1246, - 861, - 1248 - ], - "text": "20", - "words": [ - { - "boundingBox": [ - 861, - 1223, - 892, - 1222, - 893, - 1246, - 862, - 1247 - ], - "text": "20", - "confidence": 0.958 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 1224, - 1222, - 1295, - 1223, - 1295, - 1246, - 1223, - 1246 - ], - "text": "10.00", - "words": [ - { - "boundingBox": [ - 1227, - 1222, - 1295, - 1222, - 1295, - 1246, - 1227, - 1246 - ], - "text": "10.00", - "confidence": 0.958 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 1443, - 1223, - 1531, - 1223, - 1531, - 1247, - 1443, - 1247 - ], - "text": "200.00", - "words": [ - { - "boundingBox": [ - 1444, - 1223, - 1530, - 1223, - 1529, - 1248, - 1443, - 1247 - ], - "text": "200.00", - "confidence": 0.958 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 171, - 1267, - 337, - 1266, - 337, - 1294, - 171, - 1295 - ], - "text": "Logo Stickers", - "words": [ - { - "boundingBox": [ - 173, - 1267, - 233, - 1267, - 232, - 1296, - 172, - 1295 - ], - "text": "Logo", - "confidence": 0.959 - }, - { - "boundingBox": [ - 239, - 1267, - 337, - 1266, - 337, - 1294, - 238, - 1296 - ], - "text": "Stickers", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 861, - 1267, - 893, - 1266, - 893, - 1290, - 861, - 1290 - ], - "text": "20", - "words": [ - { - "boundingBox": [ - 861, - 1266, - 893, - 1266, - 893, - 1289, - 862, - 1290 - ], - "text": "20", - "confidence": 0.958 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 1240, - 1266, - 1296, - 1266, - 1296, - 1289, - 1240, - 1289 - ], - "text": "5,00", - "words": [ - { - "boundingBox": [ - 1241, - 1266, - 1294, - 1266, - 1294, - 1289, - 1241, - 1289 - ], - "text": "5,00", - "confidence": 0.423 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 1443, - 1267, - 1531, - 1266, - 1531, - 1290, - 1443, - 1291 - ], - "text": "100.00", - "words": [ - { - "boundingBox": [ - 1444, - 1267, - 1531, - 1266, - 1529, - 1291, - 1445, - 1292 - ], - "text": "100.00", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 1148, - 1574, - 1296, - 1574, - 1296, - 1599, - 1148, - 1599 - ], - "text": "SUBTOTAL", - "words": [ - { - "boundingBox": [ - 1149, - 1574, - 1296, - 1575, - 1296, - 1599, - 1149, - 1600 - ], - "text": "SUBTOTAL", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 1427, - 1570, - 1530, - 1570, - 1530, - 1597, - 1428, - 1598 - ], - "text": "$900.00", - "words": [ - { - "boundingBox": [ - 1429, - 1571, - 1530, - 1570, - 1530, - 1598, - 1429, - 1599 - ], - "text": "$900.00", - "confidence": 0.917 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 1238, - 1619, - 1295, - 1618, - 1295, - 1642, - 1237, - 1642 - ], - "text": "TAX", - "words": [ - { - "boundingBox": [ - 1241, - 1618, - 1294, - 1618, - 1294, - 1641, - 1241, - 1642 - ], - "text": "TAX", - "confidence": 0.958 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 1427, - 1615, - 1530, - 1614, - 1531, - 1640, - 1427, - 1642 - ], - "text": "$100.00", - "words": [ - { - "boundingBox": [ - 1428, - 1616, - 1531, - 1614, - 1531, - 1641, - 1429, - 1643 - ], - "text": "$100.00", - "confidence": 0.888 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 529, - 1670, - 735, - 1671, - 735, - 1712, - 529, - 1711 - ], - "text": "Wesley Snipes", - "words": [ - { - "boundingBox": [ - 531, - 1670, - 635, - 1671, - 634, - 1711, - 530, - 1712 - ], - "text": "Wesley", - "confidence": 0.799 - }, - { - "boundingBox": [ - 643, - 1671, - 735, - 1671, - 734, - 1713, - 643, - 1711 - ], - "text": "Snipes", - "confidence": 0.817 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 1204, - 1672, - 1296, - 1672, - 1296, - 1699, - 1204, - 1699 - ], - "text": "TOTAL", - "words": [ - { - "boundingBox": [ - 1207, - 1674, - 1295, - 1672, - 1296, - 1700, - 1207, - 1699 - ], - "text": "TOTAL", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 1410, - 1670, - 1530, - 1669, - 1531, - 1696, - 1410, - 1698 - ], - "text": "$1000.00", - "words": [ - { - "boundingBox": [ - 1412, - 1671, - 1530, - 1669, - 1531, - 1696, - 1412, - 1699 - ], - "text": "$1000.00", - "confidence": 0.958 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 548, - 1717, - 713, - 1718, - 713, - 1744, - 548, - 1744 - ], - "text": "Wesley Snipes", - "words": [ - { - "boundingBox": [ - 549, - 1717, - 633, - 1718, - 632, - 1744, - 548, - 1745 - ], - "text": "Wesley", - "confidence": 0.959 - }, - { - "boundingBox": [ - 638, - 1718, - 712, - 1720, - 713, - 1744, - 638, - 1744 - ], - "text": "Snipes", - "confidence": 0.958 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 581, - 1754, - 682, - 1756, - 681, - 1778, - 581, - 1776 - ], - "text": "Manager", - "words": [ - { - "boundingBox": [ - 582, - 1754, - 683, - 1757, - 682, - 1778, - 581, - 1777 - ], - "text": "Manager", - "confidence": 0.959 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 173, - 1796, - 480, - 1797, - 479, - 1832, - 173, - 1830 - ], - "text": "Additional Notes:", - "words": [ - { - "boundingBox": [ - 175, - 1798, - 358, - 1797, - 358, - 1832, - 174, - 1830 - ], - "text": "Additional", - "confidence": 0.959 - }, - { - "boundingBox": [ - 365, - 1797, - 479, - 1799, - 479, - 1832, - 364, - 1832 - ], - "text": "Notes:", - "confidence": 0.932 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 174, - 1875, - 1449, - 1875, - 1449, - 1910, - 174, - 1911 - ], - "text": "We love to Print! Contact us about special offers on personalizing your future orders with", - "words": [ - { - "boundingBox": [ - 174, - 1881, - 216, - 1880, - 217, - 1905, - 174, - 1904 - ], - "text": "We", - "confidence": 0.873 - }, - { - "boundingBox": [ - 221, - 1880, - 277, - 1880, - 277, - 1906, - 221, - 1905 - ], - "text": "love", - "confidence": 0.958 - }, - { - "boundingBox": [ - 283, - 1879, - 309, - 1879, - 309, - 1907, - 283, - 1906 - ], - "text": "to", - "confidence": 0.959 - }, - { - "boundingBox": [ - 315, - 1879, - 391, - 1878, - 391, - 1908, - 315, - 1907 - ], - "text": "Print!", - "confidence": 0.959 - }, - { - "boundingBox": [ - 398, - 1878, - 517, - 1877, - 517, - 1910, - 398, - 1908 - ], - "text": "Contact", - "confidence": 0.849 - }, - { - "boundingBox": [ - 521, - 1877, - 555, - 1877, - 555, - 1910, - 522, - 1910 - ], - "text": "us", - "confidence": 0.958 - }, - { - "boundingBox": [ - 565, - 1877, - 654, - 1877, - 654, - 1911, - 565, - 1910 - ], - "text": "about", - "confidence": 0.959 - }, - { - "boundingBox": [ - 659, - 1877, - 768, - 1876, - 768, - 1911, - 659, - 1911 - ], - "text": "special", - "confidence": 0.959 - }, - { - "boundingBox": [ - 773, - 1876, - 853, - 1876, - 853, - 1912, - 773, - 1911 - ], - "text": "offers", - "confidence": 0.918 - }, - { - "boundingBox": [ - 863, - 1876, - 897, - 1876, - 897, - 1912, - 863, - 1912 - ], - "text": "on", - "confidence": 0.958 - }, - { - "boundingBox": [ - 910, - 1876, - 1107, - 1875, - 1107, - 1911, - 910, - 1912 - ], - "text": "personalizing", - "confidence": 0.917 - }, - { - "boundingBox": [ - 1116, - 1875, - 1185, - 1876, - 1185, - 1910, - 1116, - 1911 - ], - "text": "your", - "confidence": 0.959 - }, - { - "boundingBox": [ - 1190, - 1876, - 1272, - 1876, - 1272, - 1910, - 1190, - 1910 - ], - "text": "future", - "confidence": 0.959 - }, - { - "boundingBox": [ - 1286, - 1876, - 1378, - 1876, - 1378, - 1908, - 1285, - 1909 - ], - "text": "orders", - "confidence": 0.946 - }, - { - "boundingBox": [ - 1389, - 1876, - 1444, - 1876, - 1444, - 1907, - 1389, - 1908 - ], - "text": "with", - "confidence": 0.935 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 168, - 1928, - 1515, - 1927, - 1515, - 1964, - 168, - 1965 - ], - "text": "company logos, cool designs, signatures, or pictures! We can put anything on clothing and", - "words": [ - { - "boundingBox": [ - 170, - 1930, - 304, - 1930, - 302, - 1965, - 169, - 1965 - ], - "text": "company", - "confidence": 0.959 - }, - { - "boundingBox": [ - 310, - 1930, - 406, - 1929, - 405, - 1965, - 309, - 1965 - ], - "text": "logos,", - "confidence": 0.927 - }, - { - "boundingBox": [ - 413, - 1929, - 475, - 1929, - 473, - 1965, - 412, - 1965 - ], - "text": "cool", - "confidence": 0.941 - }, - { - "boundingBox": [ - 481, - 1929, - 609, - 1929, - 608, - 1964, - 480, - 1965 - ], - "text": "designs,", - "confidence": 0.929 - }, - { - "boundingBox": [ - 616, - 1929, - 783, - 1928, - 781, - 1964, - 615, - 1964 - ], - "text": "signatures,", - "confidence": 0.957 - }, - { - "boundingBox": [ - 789, - 1928, - 819, - 1928, - 818, - 1964, - 788, - 1964 - ], - "text": "or", - "confidence": 0.958 - }, - { - "boundingBox": [ - 826, - 1928, - 965, - 1928, - 964, - 1964, - 825, - 1964 - ], - "text": "pictures!", - "confidence": 0.958 - }, - { - "boundingBox": [ - 972, - 1928, - 1024, - 1928, - 1023, - 1964, - 971, - 1964 - ], - "text": "We", - "confidence": 0.955 - }, - { - "boundingBox": [ - 1031, - 1928, - 1086, - 1928, - 1085, - 1964, - 1030, - 1964 - ], - "text": "can", - "confidence": 0.958 - }, - { - "boundingBox": [ - 1093, - 1928, - 1143, - 1928, - 1142, - 1964, - 1091, - 1964 - ], - "text": "put", - "confidence": 0.958 - }, - { - "boundingBox": [ - 1150, - 1928, - 1280, - 1928, - 1278, - 1964, - 1148, - 1964 - ], - "text": "anything", - "confidence": 0.958 - }, - { - "boundingBox": [ - 1287, - 1928, - 1325, - 1928, - 1324, - 1965, - 1285, - 1964 - ], - "text": "on", - "confidence": 0.958 - }, - { - "boundingBox": [ - 1332, - 1928, - 1449, - 1928, - 1447, - 1965, - 1331, - 1965 - ], - "text": "clothing", - "confidence": 0.915 - }, - { - "boundingBox": [ - 1456, - 1928, - 1516, - 1928, - 1515, - 1965, - 1454, - 1965 - ], - "text": "and", - "confidence": 0.958 - } - ] - }, - { - "language": "en", - "boundingBox": [ - 163, - 1980, - 820, - 1980, - 820, - 2015, - 163, - 2015 - ], - "text": "look forward to you being a return customer!", - "words": [ - { - "boundingBox": [ - 164, - 1980, - 229, - 1980, - 229, - 2013, - 164, - 2011 - ], - "text": "look", - "confidence": 0.958 - }, - { - "boundingBox": [ - 235, - 1980, - 349, - 1980, - 349, - 2015, - 235, - 2013 - ], - "text": "forward", - "confidence": 0.959 - }, - { - "boundingBox": [ - 355, - 1980, - 387, - 1980, - 387, - 2016, - 355, - 2016 - ], - "text": "to", - "confidence": 0.958 - }, - { - "boundingBox": [ - 393, - 1980, - 449, - 1980, - 449, - 2016, - 393, - 2016 - ], - "text": "you", - "confidence": 0.958 - }, - { - "boundingBox": [ - 455, - 1980, - 541, - 1981, - 541, - 2016, - 455, - 2016 - ], - "text": "being", - "confidence": 0.956 - }, - { - "boundingBox": [ - 547, - 1981, - 567, - 1981, - 567, - 2016, - 547, - 2016 - ], - "text": "a", - "confidence": 0.895 - }, - { - "boundingBox": [ - 575, - 1981, - 663, - 1981, - 663, - 2014, - 575, - 2016 - ], - "text": "return", - "confidence": 0.958 - }, - { - "boundingBox": [ - 673, - 1981, - 820, - 1981, - 820, - 2010, - 673, - 2014 - ], - "text": "customer!", - "confidence": 0.959 - } - ] - } - ] - } - ], - "pageResults": [ - { - "page": 1, - "tables": [ - { - "rows": 7, - "columns": 4, - "cells": [ - { - "rowIndex": 0, - "columnIndex": 0, - "text": "Details", - "boundingBox": [ - 156, - 1038, - 847, - 1038, - 847, - 1087, - 156, - 1087 - ], - "elements": [ - "#/readResults/0/lines/21/words/0" - ] - }, - { - "rowIndex": 0, - "columnIndex": 1, - "text": "Quantity", - "boundingBox": [ - 847, - 1038, - 1072, - 1038, - 1072, - 1087, - 847, - 1087 - ], - "elements": [ - "#/readResults/0/lines/22/words/0" - ] - }, - { - "rowIndex": 0, - "columnIndex": 2, - "text": "Unit Price", - "boundingBox": [ - 1072, - 1038, - 1309, - 1038, - 1309, - 1087, - 1072, - 1087 - ], - "elements": [ - "#/readResults/0/lines/23/words/0", - "#/readResults/0/lines/23/words/1" - ] - }, - { - "rowIndex": 0, - "columnIndex": 3, - "text": "Total", - "boundingBox": [ - 1309, - 1038, - 1544, - 1038, - 1544, - 1087, - 1309, - 1087 - ], - "elements": [ - "#/readResults/0/lines/24/words/0" - ] - }, - { - "rowIndex": 1, - "columnIndex": 0, - "text": "Black Sweats", - "boundingBox": [ - 156, - 1087, - 847, - 1087, - 847, - 1128, - 156, - 1128 - ], - "elements": [ - "#/readResults/0/lines/25/words/0", - "#/readResults/0/lines/25/words/1" - ] - }, - { - "rowIndex": 1, - "columnIndex": 1, - "text": "20", - "boundingBox": [ - 847, - 1087, - 1072, - 1087, - 1072, - 1128, - 847, - 1128 - ], - "elements": [ - "#/readResults/0/lines/26/words/0" - ] - }, - { - "rowIndex": 1, - "columnIndex": 2, - "text": "10.00", - "boundingBox": [ - 1072, - 1087, - 1309, - 1087, - 1309, - 1128, - 1072, - 1128 - ], - "elements": [ - "#/readResults/0/lines/27/words/0" - ] - }, - { - "rowIndex": 1, - "columnIndex": 3, - "text": "200.00", - "boundingBox": [ - 1309, - 1087, - 1544, - 1087, - 1544, - 1128, - 1309, - 1128 - ], - "elements": [ - "#/readResults/0/lines/28/words/0" - ] - }, - { - "rowIndex": 2, - "columnIndex": 0, - "text": "Black Yoga Pants", - "boundingBox": [ - 156, - 1128, - 847, - 1128, - 847, - 1172, - 156, - 1172 - ], - "elements": [ - "#/readResults/0/lines/29/words/0", - "#/readResults/0/lines/29/words/1", - "#/readResults/0/lines/29/words/2" - ] - }, - { - "rowIndex": 2, - "columnIndex": 1, - "text": "20", - "boundingBox": [ - 847, - 1128, - 1072, - 1128, - 1072, - 1172, - 847, - 1172 - ], - "elements": [ - "#/readResults/0/lines/30/words/0" - ] - }, - { - "rowIndex": 2, - "columnIndex": 2, - "text": "10.00", - "boundingBox": [ - 1072, - 1128, - 1309, - 1128, - 1309, - 1172, - 1072, - 1172 - ], - "elements": [ - "#/readResults/0/lines/31/words/0" - ] - }, - { - "rowIndex": 2, - "columnIndex": 3, - "text": "200.00", - "boundingBox": [ - 1309, - 1128, - 1544, - 1128, - 1544, - 1172, - 1309, - 1172 - ], - "elements": [ - "#/readResults/0/lines/32/words/0" - ] - }, - { - "rowIndex": 3, - "columnIndex": 0, - "text": "White Sweats", - "boundingBox": [ - 156, - 1172, - 847, - 1172, - 847, - 1216, - 156, - 1216 - ], - "elements": [ - "#/readResults/0/lines/33/words/0", - "#/readResults/0/lines/33/words/1" - ] - }, - { - "rowIndex": 3, - "columnIndex": 1, - "text": "20", - "boundingBox": [ - 847, - 1172, - 1072, - 1172, - 1072, - 1216, - 847, - 1216 - ], - "elements": [ - "#/readResults/0/lines/34/words/0" - ] - }, - { - "rowIndex": 3, - "columnIndex": 2, - "text": "10.00", - "boundingBox": [ - 1072, - 1172, - 1309, - 1172, - 1309, - 1216, - 1072, - 1216 - ], - "elements": [ - "#/readResults/0/lines/35/words/0" - ] - }, - { - "rowIndex": 3, - "columnIndex": 3, - "text": "200.00", - "boundingBox": [ - 1309, - 1172, - 1544, - 1172, - 1544, - 1216, - 1309, - 1216 - ], - "elements": [ - "#/readResults/0/lines/36/words/0" - ] - }, - { - "rowIndex": 4, - "columnIndex": 0, - "text": "Yellow T Shirts", - "boundingBox": [ - 156, - 1216, - 847, - 1216, - 847, - 1260, - 156, - 1260 - ], - "elements": [ - "#/readResults/0/lines/37/words/0", - "#/readResults/0/lines/37/words/1", - "#/readResults/0/lines/37/words/2" - ] - }, - { - "rowIndex": 4, - "columnIndex": 1, - "text": "20", - "boundingBox": [ - 847, - 1216, - 1072, - 1216, - 1072, - 1260, - 847, - 1260 - ], - "elements": [ - "#/readResults/0/lines/38/words/0" - ] - }, - { - "rowIndex": 4, - "columnIndex": 2, - "text": "10.00", - "boundingBox": [ - 1072, - 1216, - 1309, - 1216, - 1309, - 1260, - 1072, - 1260 - ], - "elements": [ - "#/readResults/0/lines/39/words/0" - ] - }, - { - "rowIndex": 4, - "columnIndex": 3, - "text": "200.00", - "boundingBox": [ - 1309, - 1216, - 1544, - 1216, - 1544, - 1260, - 1309, - 1260 - ], - "elements": [ - "#/readResults/0/lines/40/words/0" - ] - }, - { - "rowIndex": 5, - "columnIndex": 0, - "text": "Logo Stickers", - "boundingBox": [ - 156, - 1260, - 847, - 1260, - 847, - 1303, - 156, - 1303 - ], - "elements": [ - "#/readResults/0/lines/41/words/0", - "#/readResults/0/lines/41/words/1" - ] - }, - { - "rowIndex": 5, - "columnIndex": 1, - "text": "20", - "boundingBox": [ - 847, - 1260, - 1072, - 1260, - 1072, - 1303, - 847, - 1303 - ], - "elements": [ - "#/readResults/0/lines/42/words/0" - ] - }, - { - "rowIndex": 5, - "columnIndex": 2, - "text": "5,00", - "boundingBox": [ - 1072, - 1260, - 1309, - 1260, - 1309, - 1303, - 1072, - 1303 - ], - "elements": [ - "#/readResults/0/lines/43/words/0" - ] - }, - { - "rowIndex": 5, - "columnIndex": 3, - "text": "100.00", - "boundingBox": [ - 1309, - 1260, - 1544, - 1260, - 1544, - 1303, - 1309, - 1303 - ], - "elements": [ - "#/readResults/0/lines/44/words/0" - ] - } - ] - }, - { - "rows": 4, - "columns": 3, - "cells": [ - { - "rowIndex": 1, - "columnIndex": 1, - "text": "SUBTOTAL", - "boundingBox": [ - 1072, - 1566, - 1309, - 1566, - 1309, - 1610, - 1072, - 1610 - ], - "elements": [ - "#/readResults/0/lines/45/words/0" - ] - }, - { - "rowIndex": 1, - "columnIndex": 2, - "text": "$900.00", - "boundingBox": [ - 1309, - 1566, - 1544, - 1566, - 1544, - 1610, - 1309, - 1610 - ], - "elements": [ - "#/readResults/0/lines/46/words/0" - ] - }, - { - "rowIndex": 2, - "columnIndex": 1, - "text": "TAX", - "boundingBox": [ - 1072, - 1610, - 1309, - 1610, - 1309, - 1658, - 1072, - 1658 - ], - "elements": [ - "#/readResults/0/lines/47/words/0" - ] - }, - { - "rowIndex": 2, - "columnIndex": 2, - "text": "$100.00", - "boundingBox": [ - 1309, - 1610, - 1544, - 1610, - 1544, - 1658, - 1309, - 1658 - ], - "elements": [ - "#/readResults/0/lines/48/words/0" - ] - }, - { - "rowIndex": 3, - "columnIndex": 1, - "text": "TOTAL", - "boundingBox": [ - 1072, - 1658, - 1309, - 1658, - 1309, - 1708, - 1072, - 1708 - ], - "elements": [ - "#/readResults/0/lines/50/words/0" - ] - }, - { - "rowIndex": 3, - "columnIndex": 2, - "text": "$1000.00", - "boundingBox": [ - 1309, - 1658, - 1544, - 1658, - 1544, - 1708, - 1309, - 1708 - ], - "elements": [ - "#/readResults/0/lines/51/words/0" - ] - } - ] - } - ] - } - ] - } -} \ No newline at end of file diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/sample_forms/training/fields.json b/sdk/formrecognizer/azure-ai-formrecognizer/tests/sample_forms/training/fields.json deleted file mode 100644 index e105e277a664..000000000000 --- a/sdk/formrecognizer/azure-ai-formrecognizer/tests/sample_forms/training/fields.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "fields": [ - { - "fieldKey": "Merchant", - "fieldType": "string", - "fieldFormat": "not-specified" - }, - { - "fieldKey": "PhoneNumber", - "fieldType": "string", - "fieldFormat": "not-specified" - }, - { - "fieldKey": "Website", - "fieldType": "string", - "fieldFormat": "not-specified" - }, - { - "fieldKey": "Email", - "fieldType": "string", - "fieldFormat": "not-specified" - }, - { - "fieldKey": "PurchaseOrderNumber", - "fieldType": "string", - "fieldFormat": "not-specified" - }, - { - "fieldKey": "DatedAs", - "fieldType": "string", - "fieldFormat": "not-specified" - }, - { - "fieldKey": "VendorName", - "fieldType": "string", - "fieldFormat": "not-specified" - }, - { - "fieldKey": "CompanyName", - "fieldType": "string", - "fieldFormat": "not-specified" - }, - { - "fieldKey": "CompanyAddress", - "fieldType": "string", - "fieldFormat": "not-specified" - }, - { - "fieldKey": "CompanyPhoneNumber", - "fieldType": "string", - "fieldFormat": "not-specified" - }, - { - "fieldKey": "Subtotal", - "fieldType": "string", - "fieldFormat": "not-specified" - }, - { - "fieldKey": "Tax", - "fieldType": "string", - "fieldFormat": "not-specified" - }, - { - "fieldKey": "Total", - "fieldType": "string", - "fieldFormat": "not-specified" - }, - { - "fieldKey": "Signature", - "fieldType": "string", - "fieldFormat": "not-specified" - }, - { - "fieldKey": "Quantity", - "fieldType": "number", - "fieldFormat": "not-specified" - } - ] -} \ No newline at end of file diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/sample_forms/training/subfolder/Form_6.jpg b/sdk/formrecognizer/azure-ai-formrecognizer/tests/sample_forms/training/subfolder/Form_6.jpg deleted file mode 100644 index 266cfecffdbe..000000000000 Binary files a/sdk/formrecognizer/azure-ai-formrecognizer/tests/sample_forms/training/subfolder/Form_6.jpg and /dev/null differ diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_content.py b/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_content.py index b1b6735bc337..20a3db4b6e88 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_content.py +++ b/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_content.py @@ -4,7 +4,8 @@ # Licensed under the MIT License. # ------------------------------------ -from azure.core.exceptions import ServiceRequestError, ClientAuthenticationError +from io import BytesIO +from azure.core.exceptions import ServiceRequestError, ClientAuthenticationError, HttpResponseError from azure.core.credentials import AzureKeyCredential from azure.ai.formrecognizer._generated.models import AnalyzeOperationResult from azure.ai.formrecognizer._response_handlers import prepare_content_result @@ -48,6 +49,53 @@ def test_passing_enum_content_type(self, resource_group, location, form_recogniz result = poller.result() self.assertIsNotNone(result) + @GlobalFormRecognizerAccountPreparer() + def test_damaged_file_passed_as_bytes(self, resource_group, location, form_recognizer_account, form_recognizer_account_key): + client = FormRecognizerClient(form_recognizer_account, AzureKeyCredential(form_recognizer_account_key)) + damaged_pdf = b"\x25\x50\x44\x46\x55\x55\x55" # still has correct bytes to be recognized as PDF + with self.assertRaises(HttpResponseError): + poller = client.begin_recognize_content( + damaged_pdf, + ) + + @GlobalFormRecognizerAccountPreparer() + def test_damaged_file_bytes_fails_autodetect_content_type(self, resource_group, location, form_recognizer_account, form_recognizer_account_key): + client = FormRecognizerClient(form_recognizer_account, AzureKeyCredential(form_recognizer_account_key)) + damaged_pdf = b"\x50\x44\x46\x55\x55\x55" # doesn't match any magic file numbers + with self.assertRaises(ValueError): + poller = client.begin_recognize_content( + damaged_pdf, + ) + + @GlobalFormRecognizerAccountPreparer() + def test_damaged_file_passed_as_bytes_io(self, resource_group, location, form_recognizer_account, form_recognizer_account_key): + client = FormRecognizerClient(form_recognizer_account, AzureKeyCredential(form_recognizer_account_key)) + damaged_pdf = BytesIO(b"\x25\x50\x44\x46\x55\x55\x55") # still has correct bytes to be recognized as PDF + with self.assertRaises(HttpResponseError): + poller = client.begin_recognize_content( + damaged_pdf, + ) + + @GlobalFormRecognizerAccountPreparer() + def test_damaged_file_bytes_io_fails_autodetect(self, resource_group, location, form_recognizer_account, form_recognizer_account_key): + client = FormRecognizerClient(form_recognizer_account, AzureKeyCredential(form_recognizer_account_key)) + damaged_pdf = BytesIO(b"\x50\x44\x46\x55\x55\x55") # doesn't match any magic file numbers + with self.assertRaises(ValueError): + poller = client.begin_recognize_content( + damaged_pdf, + ) + + @GlobalFormRecognizerAccountPreparer() + def test_blank_page(self, resource_group, location, form_recognizer_account, form_recognizer_account_key): + client = FormRecognizerClient(form_recognizer_account, AzureKeyCredential(form_recognizer_account_key)) + + with open(self.blank_pdf, "rb") as stream: + poller = client.begin_recognize_content( + stream, + ) + result = poller.result() + self.assertIsNotNone(result) + @GlobalFormRecognizerAccountPreparer() def test_passing_bad_content_type_param_passed(self, resource_group, location, form_recognizer_account, form_recognizer_account_key): client = FormRecognizerClient(form_recognizer_account, AzureKeyCredential(form_recognizer_account_key)) @@ -157,3 +205,38 @@ def test_content_stream_jpg(self, resource_group, location, form_recognizer_acco self.assertEqual(layout.tables[0].column_count, 3) self.assertEqual(layout.tables[1].row_count, 6) self.assertEqual(layout.tables[1].column_count, 4) + + @GlobalFormRecognizerAccountPreparer() + def test_content_multipage(self, resource_group, location, form_recognizer_account, form_recognizer_account_key): + client = FormRecognizerClient(form_recognizer_account, AzureKeyCredential(form_recognizer_account_key)) + with open(self.multipage_invoice_pdf, "rb") as fd: + invoice = fd.read() + poller = client.begin_recognize_content(invoice) + result = poller.result() + + self.assertEqual(len(result), 3) + self.assertFormPagesHasValues(result) + + @GlobalFormRecognizerAccountPreparer() + def test_content_multipage_transform(self, resource_group, location, form_recognizer_account, form_recognizer_account_key): + client = FormRecognizerClient(form_recognizer_account, AzureKeyCredential(form_recognizer_account_key)) + with open(self.multipage_invoice_pdf, "rb") as fd: + myform = fd.read() + + responses = [] + + def callback(raw_response, _, headers): + analyze_result = client._client._deserialize(AnalyzeOperationResult, raw_response) + extracted_layout = prepare_content_result(analyze_result) + responses.append(analyze_result) + responses.append(extracted_layout) + + poller = client.begin_recognize_content(myform, cls=callback) + result = poller.result() + raw_response = responses[0] + layout = responses[1] + page_results = raw_response.analyze_result.page_results + read_results = raw_response.analyze_result.read_results + + # Check form pages + self.assertFormPagesTransformCorrect(layout, read_results, page_results) diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_content_async.py b/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_content_async.py index b5d344c57778..bd8861ebef24 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_content_async.py +++ b/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_content_async.py @@ -4,7 +4,8 @@ # Licensed under the MIT License. # ------------------------------------ -from azure.core.exceptions import ServiceRequestError, ClientAuthenticationError +from io import BytesIO +from azure.core.exceptions import ServiceRequestError, ClientAuthenticationError, HttpResponseError from azure.core.credentials import AzureKeyCredential from azure.ai.formrecognizer._generated.models import AnalyzeOperationResult from azure.ai.formrecognizer._response_handlers import prepare_content_result @@ -48,6 +49,53 @@ async def test_passing_enum_content_type(self, resource_group, location, form_re ) self.assertIsNotNone(result) + @GlobalFormRecognizerAccountPreparer() + async def test_damaged_file_passed_as_bytes(self, resource_group, location, form_recognizer_account, form_recognizer_account_key): + client = FormRecognizerClient(form_recognizer_account, AzureKeyCredential(form_recognizer_account_key)) + damaged_pdf = b"\x25\x50\x44\x46\x55\x55\x55" # still has correct bytes to be recognized as PDF + with self.assertRaises(HttpResponseError): + poller = await client.recognize_content( + damaged_pdf, + ) + + @GlobalFormRecognizerAccountPreparer() + async def test_damaged_file_bytes_fails_autodetect_content_type(self, resource_group, location, form_recognizer_account, form_recognizer_account_key): + client = FormRecognizerClient(form_recognizer_account, AzureKeyCredential(form_recognizer_account_key)) + damaged_pdf = b"\x50\x44\x46\x55\x55\x55" # doesn't match any magic file numbers + with self.assertRaises(ValueError): + poller = await client.recognize_content( + damaged_pdf, + ) + + @GlobalFormRecognizerAccountPreparer() + async def test_damaged_file_passed_as_bytes_io(self, resource_group, location, form_recognizer_account, form_recognizer_account_key): + client = FormRecognizerClient(form_recognizer_account, AzureKeyCredential(form_recognizer_account_key)) + damaged_pdf = BytesIO(b"\x25\x50\x44\x46\x55\x55\x55") # still has correct bytes to be recognized as PDF + with self.assertRaises(HttpResponseError): + poller = await client.recognize_content( + damaged_pdf, + ) + + @GlobalFormRecognizerAccountPreparer() + async def test_damaged_file_bytes_io_fails_autodetect(self, resource_group, location, form_recognizer_account, form_recognizer_account_key): + client = FormRecognizerClient(form_recognizer_account, AzureKeyCredential(form_recognizer_account_key)) + damaged_pdf = BytesIO(b"\x50\x44\x46\x55\x55\x55") # doesn't match any magic file numbers + with self.assertRaises(ValueError): + poller = await client.recognize_content( + damaged_pdf, + ) + + @GlobalFormRecognizerAccountPreparer() + async def test_blank_page(self, resource_group, location, form_recognizer_account, form_recognizer_account_key): + client = FormRecognizerClient(form_recognizer_account, AzureKeyCredential(form_recognizer_account_key)) + + with open(self.blank_pdf, "rb") as fd: + blank = fd.read() + result = await client.recognize_content( + blank, + ) + self.assertIsNotNone(result) + @GlobalFormRecognizerAccountPreparer() async def test_passing_bad_content_type_param_passed(self, resource_group, location, form_recognizer_account, form_recognizer_account_key): client = FormRecognizerClient(form_recognizer_account, AzureKeyCredential(form_recognizer_account_key)) @@ -155,3 +203,36 @@ async def test_content_stream_jpg(self, resource_group, location, form_recognize self.assertEqual(layout.tables[0].column_count, 3) self.assertEqual(layout.tables[1].row_count, 6) self.assertEqual(layout.tables[1].column_count, 4) + + @GlobalFormRecognizerAccountPreparer() + async def test_content_multipage(self, resource_group, location, form_recognizer_account, form_recognizer_account_key): + client = FormRecognizerClient(form_recognizer_account, AzureKeyCredential(form_recognizer_account_key)) + with open(self.multipage_invoice_pdf, "rb") as fd: + invoice = fd.read() + result = await client.recognize_content(invoice) + + self.assertEqual(len(result), 3) + self.assertFormPagesHasValues(result) + + @GlobalFormRecognizerAccountPreparer() + async def test_content_multipage_transform(self, resource_group, location, form_recognizer_account, form_recognizer_account_key): + client = FormRecognizerClient(form_recognizer_account, AzureKeyCredential(form_recognizer_account_key)) + with open(self.multipage_invoice_pdf, "rb") as fd: + myform = fd.read() + + responses = [] + + def callback(raw_response, _, headers): + analyze_result = client._client._deserialize(AnalyzeOperationResult, raw_response) + extracted_layout = prepare_content_result(analyze_result) + responses.append(analyze_result) + responses.append(extracted_layout) + + result = await client.recognize_content(myform, cls=callback) + raw_response = responses[0] + layout = responses[1] + page_results = raw_response.analyze_result.page_results + read_results = raw_response.analyze_result.read_results + + # Check form pages + self.assertFormPagesTransformCorrect(layout, read_results, page_results) diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_content_from_url.py b/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_content_from_url.py index 7afb0bf9f9ab..e259f4cd6fd2 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_content_from_url.py +++ b/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_content_from_url.py @@ -119,3 +119,33 @@ def test_content_url_jpg(self, resource_group, location, form_recognizer_account self.assertEqual(layout.tables[0].column_count, 3) self.assertEqual(layout.tables[1].row_count, 6) self.assertEqual(layout.tables[1].column_count, 4) + + @GlobalFormRecognizerAccountPreparer() + def test_content_multipage_url(self, resource_group, location, form_recognizer_account, form_recognizer_account_key): + client = FormRecognizerClient(form_recognizer_account, AzureKeyCredential(form_recognizer_account_key)) + poller = client.begin_recognize_content_from_url(self.multipage_url_pdf) + result = poller.result() + + self.assertEqual(len(result), 3) + self.assertFormPagesHasValues(result) + + @GlobalFormRecognizerAccountPreparer() + def test_content_multipage_transform_url(self, resource_group, location, form_recognizer_account, form_recognizer_account_key): + client = FormRecognizerClient(form_recognizer_account, AzureKeyCredential(form_recognizer_account_key)) + responses = [] + + def callback(raw_response, _, headers): + analyze_result = client._client._deserialize(AnalyzeOperationResult, raw_response) + extracted_layout = prepare_content_result(analyze_result) + responses.append(analyze_result) + responses.append(extracted_layout) + + poller = client.begin_recognize_content_from_url(self.multipage_url_pdf, cls=callback) + result = poller.result() + raw_response = responses[0] + layout = responses[1] + page_results = raw_response.analyze_result.page_results + read_results = raw_response.analyze_result.read_results + + # Check form pages + self.assertFormPagesTransformCorrect(layout, read_results, page_results) diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_content_from_url_async.py b/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_content_from_url_async.py index eba7cc2adc1a..78aaf65a2582 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_content_from_url_async.py +++ b/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_content_from_url_async.py @@ -117,3 +117,31 @@ async def test_content_url_jpg(self, resource_group, location, form_recognizer_a self.assertEqual(layout.tables[0].column_count, 3) self.assertEqual(layout.tables[1].row_count, 6) self.assertEqual(layout.tables[1].column_count, 4) + + @GlobalFormRecognizerAccountPreparer() + async def test_content_multipage_url(self, resource_group, location, form_recognizer_account, form_recognizer_account_key): + client = FormRecognizerClient(form_recognizer_account, AzureKeyCredential(form_recognizer_account_key)) + result = await client.recognize_content_from_url(self.multipage_url_pdf) + + self.assertEqual(len(result), 3) + self.assertFormPagesHasValues(result) + + @GlobalFormRecognizerAccountPreparer() + async def test_content_multipage_transform_url(self, resource_group, location, form_recognizer_account, form_recognizer_account_key): + client = FormRecognizerClient(form_recognizer_account, AzureKeyCredential(form_recognizer_account_key)) + responses = [] + + def callback(raw_response, _, headers): + analyze_result = client._client._deserialize(AnalyzeOperationResult, raw_response) + extracted_layout = prepare_content_result(analyze_result) + responses.append(analyze_result) + responses.append(extracted_layout) + + result = await client.recognize_content_from_url(self.multipage_url_pdf, cls=callback) + raw_response = responses[0] + layout = responses[1] + page_results = raw_response.analyze_result.page_results + read_results = raw_response.analyze_result.read_results + + # Check form pages + self.assertFormPagesTransformCorrect(layout, read_results, page_results) diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_custom_forms.py b/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_custom_forms.py index 071705f232f4..6261efaee871 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_custom_forms.py +++ b/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_custom_forms.py @@ -6,11 +6,11 @@ import functools from azure.core.credentials import AzureKeyCredential -from azure.core.exceptions import ServiceRequestError, ClientAuthenticationError +from azure.core.exceptions import ServiceRequestError, ClientAuthenticationError, HttpResponseError from azure.ai.formrecognizer import FormRecognizerClient, FormContentType from azure.ai.formrecognizer._generated.models import AnalyzeOperationResult from azure.ai.formrecognizer._response_handlers import prepare_form_result -from testcase import FormRecognizerTest, GlobalFormRecognizerAccountPreparer, GlobalFormAndStorageAccountPreparer +from testcase import FormRecognizerTest, GlobalFormRecognizerAccountPreparer from testcase import GlobalTrainingAccountPreparer as _GlobalTrainingAccountPreparer @@ -53,7 +53,22 @@ def test_auto_detect_unsupported_stream_content(self, resource_group, location, stream=myfile, ) - @GlobalFormAndStorageAccountPreparer() + @GlobalFormRecognizerAccountPreparer() + @GlobalTrainingAccountPreparer() + def test_custom_form_damaged_file(self, client, container_sas_url): + training_client = client.get_form_training_client() + + poller = training_client.begin_train_model(container_sas_url) + model = poller.result() + + with self.assertRaises(HttpResponseError): + poller = client.begin_recognize_custom_forms( + model.model_id, + b"\x25\x50\x44\x46\x55\x55\x55", + ) + form = poller.result() + + @GlobalFormRecognizerAccountPreparer() @GlobalTrainingAccountPreparer() def test_custom_form_unlabeled(self, client, container_sas_url): training_client = client.get_form_training_client() @@ -79,7 +94,34 @@ def test_custom_form_unlabeled(self, client, container_sas_url): self.assertIsNotNone(field.value_data.text) self.assertIsNotNone(field.label_data.text) - @GlobalFormAndStorageAccountPreparer() + @GlobalFormRecognizerAccountPreparer() + @GlobalTrainingAccountPreparer(multipage=True) + def test_custom_form_multipage_unlabeled(self, client, container_sas_url): + training_client = client.get_form_training_client() + + poller = training_client.begin_train_model(container_sas_url) + model = poller.result() + + with open(self.multipage_invoice_pdf, "rb") as stream: + poller = client.begin_recognize_custom_forms( + model.model_id, + stream, + content_type=FormContentType.application_pdf + ) + forms = poller.result() + + for form in forms: + self.assertEqual(form.form_type, "form-0") + self.assertFormPagesHasValues(form.pages) + for label, field in form.fields.items(): + self.assertIsNotNone(field.confidence) + self.assertIsNotNone(field.name) + self.assertIsNotNone(field.page_number) + self.assertIsNotNone(field.value) + self.assertIsNotNone(field.value_data.text) + self.assertIsNotNone(field.label_data.text) + + @GlobalFormRecognizerAccountPreparer() @GlobalTrainingAccountPreparer() def test_custom_form_labeled(self, client, container_sas_url): training_client = client.get_form_training_client() @@ -105,7 +147,38 @@ def test_custom_form_labeled(self, client, container_sas_url): self.assertIsNotNone(field.value_data.text) self.assertIsNotNone(field.value_data.bounding_box) - @GlobalFormAndStorageAccountPreparer() + @GlobalFormRecognizerAccountPreparer() + @GlobalTrainingAccountPreparer(multipage=True) + def test_custom_form_multipage_labeled(self, client, container_sas_url): + training_client = client.get_form_training_client() + + poller = training_client.begin_train_model( + container_sas_url, + use_labels=True + ) + model = poller.result() + + with open(self.multipage_invoice_pdf, "rb") as fd: + myfile = fd.read() + + poller = client.begin_recognize_custom_forms( + model.model_id, + myfile, + content_type=FormContentType.application_pdf + ) + forms = poller.result() + + for form in forms: + self.assertEqual(form.form_type, "form-"+model.model_id) + self.assertFormPagesHasValues(form.pages) + for label, field in form.fields.items(): + self.assertIsNotNone(field.confidence) + self.assertIsNotNone(field.name) + self.assertIsNotNone(field.page_number) + self.assertIsNotNone(field.value_data.text) + self.assertIsNotNone(field.value_data.bounding_box) + + @GlobalFormRecognizerAccountPreparer() @GlobalTrainingAccountPreparer() def test_custom_form_unlabeled_transform(self, client, container_sas_url): training_client = client.get_form_training_client() @@ -142,7 +215,45 @@ def callback(raw_response, _, headers): self.assertEqual(recognized_form[0].page_range.last_page, page_results[0].page) self.assertUnlabeledFormFieldDictTransformCorrect(recognized_form[0].fields, actual_fields, read_results) - @GlobalFormAndStorageAccountPreparer() + @GlobalFormRecognizerAccountPreparer() + @GlobalTrainingAccountPreparer(multipage=True) + def test_custom_form_multipage_unlabeled_transform(self, client, container_sas_url): + training_client = client.get_form_training_client() + + poller = training_client.begin_train_model(container_sas_url) + model = poller.result() + + responses = [] + + def callback(raw_response, _, headers): + analyze_result = client._client._deserialize(AnalyzeOperationResult, raw_response) + form = prepare_form_result(analyze_result, model.model_id) + responses.append(analyze_result) + responses.append(form) + + with open(self.multipage_invoice_pdf, "rb") as fd: + myfile = fd.read() + + poller = client.begin_recognize_custom_forms( + model.model_id, + myfile, + include_text_content=True, + cls=callback + ) + form = poller.result() + actual = responses[0] + recognized_form = responses[1] + read_results = actual.analyze_result.read_results + page_results = actual.analyze_result.page_results + + self.assertFormPagesTransformCorrect(recognized_form, read_results, page_results, bug_skip_text_content=True) + + for form, actual in zip(recognized_form, page_results): + self.assertEqual(form.page_range.first_page, actual.page) + self.assertEqual(form.page_range.last_page, actual.page) + self.assertUnlabeledFormFieldDictTransformCorrect(form.fields, actual.key_value_pairs, read_results, bug_skip_text_content=True) + + @GlobalFormRecognizerAccountPreparer() @GlobalTrainingAccountPreparer() def test_custom_form_labeled_transform(self, client, container_sas_url): training_client = client.get_form_training_client() @@ -178,3 +289,42 @@ def callback(raw_response, _, headers): self.assertEqual(recognized_form[0].page_range.first_page, page_results[0].page) self.assertEqual(recognized_form[0].page_range.last_page, page_results[0].page) self.assertLabeledFormFieldDictTransformCorrect(recognized_form[0].fields, actual_fields, read_results) + + @GlobalFormRecognizerAccountPreparer() + @GlobalTrainingAccountPreparer(multipage=True) + def test_custom_form_multipage_labeled_transform(self, client, container_sas_url): + training_client = client.get_form_training_client() + + poller = training_client.begin_train_model(container_sas_url, use_labels=True) + model = poller.result() + + responses = [] + + def callback(raw_response, _, headers): + analyze_result = client._client._deserialize(AnalyzeOperationResult, raw_response) + form = prepare_form_result(analyze_result, model.model_id) + responses.append(analyze_result) + responses.append(form) + + with open(self.multipage_invoice_pdf, "rb") as fd: + myfile = fd.read() + + poller = client.begin_recognize_custom_forms( + model.model_id, + myfile, + include_text_content=True, + cls=callback + ) + form = poller.result() + actual = responses[0] + recognized_form = responses[1] + read_results = actual.analyze_result.read_results + page_results = actual.analyze_result.page_results + document_results = actual.analyze_result.document_results + + self.assertFormPagesTransformCorrect(recognized_form, read_results, page_results) + for form, actual in zip(recognized_form, document_results): + self.assertEqual(form.page_range.first_page, actual.page_range[0]) + self.assertEqual(form.page_range.last_page, actual.page_range[1]) + self.assertEqual(form.form_type, "form-"+model.model_id) + self.assertLabeledFormFieldDictTransformCorrect(form.fields, actual.fields, read_results) diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_custom_forms_async.py b/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_custom_forms_async.py index 8d6ad16de65d..7e83718a9e7d 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_custom_forms_async.py +++ b/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_custom_forms_async.py @@ -6,12 +6,12 @@ import functools from azure.core.credentials import AzureKeyCredential -from azure.core.exceptions import ServiceRequestError, ClientAuthenticationError +from azure.core.exceptions import ServiceRequestError, ClientAuthenticationError, HttpResponseError from azure.ai.formrecognizer import FormContentType from azure.ai.formrecognizer.aio import FormRecognizerClient from azure.ai.formrecognizer._generated.models import AnalyzeOperationResult from azure.ai.formrecognizer._response_handlers import prepare_form_result -from testcase import GlobalFormRecognizerAccountPreparer, GlobalFormAndStorageAccountPreparer +from testcase import GlobalFormRecognizerAccountPreparer from testcase import GlobalTrainingAccountPreparer as _GlobalTrainingAccountPreparer from asynctestcase import AsyncFormRecognizerTest @@ -55,7 +55,20 @@ async def test_auto_detect_unsupported_stream_content(self, resource_group, loca stream=myfile, ) - @GlobalFormAndStorageAccountPreparer() + @GlobalFormRecognizerAccountPreparer() + @GlobalTrainingAccountPreparer() + async def test_custom_form_damaged_file(self, client, container_sas_url): + training_client = client.get_form_training_client() + + model = await training_client.train_model(container_sas_url) + + with self.assertRaises(HttpResponseError): + form = await client.recognize_custom_forms( + model.model_id, + b"\x25\x50\x44\x46\x55\x55\x55", + ) + + @GlobalFormRecognizerAccountPreparer() @GlobalTrainingAccountPreparer() async def test_custom_form_unlabeled(self, client, container_sas_url): training_client = client.get_form_training_client() @@ -77,7 +90,33 @@ async def test_custom_form_unlabeled(self, client, container_sas_url): self.assertIsNotNone(field.value_data.text) self.assertIsNotNone(field.label_data.text) - @GlobalFormAndStorageAccountPreparer() + @GlobalFormRecognizerAccountPreparer() + @GlobalTrainingAccountPreparer(multipage=True) + async def test_custom_form_multipage_unlabeled(self, client, container_sas_url): + training_client = client.get_form_training_client() + + model = await training_client.train_model(container_sas_url) + + with open(self.multipage_invoice_pdf, "rb") as fd: + myfile = fd.read() + forms = await client.recognize_custom_forms( + model.model_id, + myfile, + content_type=FormContentType.application_pdf + ) + + for form in forms: + self.assertEqual(form.form_type, "form-0") + self.assertFormPagesHasValues(form.pages) + for label, field in form.fields.items(): + self.assertIsNotNone(field.confidence) + self.assertIsNotNone(field.name) + self.assertIsNotNone(field.page_number) + self.assertIsNotNone(field.value) + self.assertIsNotNone(field.value_data.text) + self.assertIsNotNone(field.label_data.text) + + @GlobalFormRecognizerAccountPreparer() @GlobalTrainingAccountPreparer() async def test_custom_form_labeled(self, client, container_sas_url): training_client = client.get_form_training_client() @@ -98,7 +137,37 @@ async def test_custom_form_labeled(self, client, container_sas_url): self.assertIsNotNone(field.value_data.text) self.assertIsNotNone(field.value_data.bounding_box) - @GlobalFormAndStorageAccountPreparer() + @GlobalFormRecognizerAccountPreparer() + @GlobalTrainingAccountPreparer(multipage=True) + async def test_custom_form_multipage_labeled(self, client, container_sas_url): + training_client = client.get_form_training_client() + + model = await training_client.train_model( + container_sas_url, + use_labels=True + ) + + with open(self.multipage_invoice_pdf, "rb") as fd: + myfile = fd.read() + + forms = await client.recognize_custom_forms( + model.model_id, + myfile, + content_type=FormContentType.application_pdf + ) + + for form in forms: + self.assertEqual(form.form_type, "form-"+model.model_id) + self.assertFormPagesHasValues(form.pages) + for label, field in form.fields.items(): + self.assertIsNotNone(field.confidence) + self.assertIsNotNone(field.name) + self.assertIsNotNone(field.page_number) + self.assertIsNotNone(field.value_data.text) + self.assertIsNotNone(field.value_data.bounding_box) + + + @GlobalFormRecognizerAccountPreparer() @GlobalTrainingAccountPreparer() async def test_form_unlabeled_transform(self, client, container_sas_url): training_client = client.get_form_training_client() @@ -134,7 +203,45 @@ def callback(raw_response, _, headers): self.assertEqual(recognized_form[0].page_range.last_page, page_results[0].page) self.assertUnlabeledFormFieldDictTransformCorrect(recognized_form[0].fields, actual_fields, read_results) - @GlobalFormAndStorageAccountPreparer() + @GlobalFormRecognizerAccountPreparer() + @GlobalTrainingAccountPreparer(multipage=True) + async def test_custom_forms_multipage_unlabeled_transform(self, client, container_sas_url): + training_client = client.get_form_training_client() + + model = await training_client.train_model(container_sas_url) + + responses = [] + + def callback(raw_response, _, headers): + analyze_result = client._client._deserialize(AnalyzeOperationResult, raw_response) + form = prepare_form_result(analyze_result, model.model_id) + responses.append(analyze_result) + responses.append(form) + + with open(self.multipage_invoice_pdf, "rb") as fd: + myfile = fd.read() + + form = await client.recognize_custom_forms( + model.model_id, + myfile, + include_text_content=True, + cls=callback + ) + actual = responses[0] + recognized_form = responses[1] + read_results = actual.analyze_result.read_results + page_results = actual.analyze_result.page_results + + # bug_skip_text_content should be removed after bug fix: https://github.com/Azure/azure-sdk-for-python/issues/11014 + self.assertFormPagesTransformCorrect(recognized_form, read_results, page_results, bug_skip_text_content=True) + + for form, actual in zip(recognized_form, page_results): + self.assertEqual(form.page_range.first_page, actual.page) + self.assertEqual(form.page_range.last_page, actual.page) + self.assertUnlabeledFormFieldDictTransformCorrect(form.fields, actual.key_value_pairs, read_results, bug_skip_text_content=True) + + + @GlobalFormRecognizerAccountPreparer() @GlobalTrainingAccountPreparer() async def test_form_labeled_transform(self, client, container_sas_url): training_client = client.get_form_training_client() @@ -169,3 +276,40 @@ def callback(raw_response, _, headers): self.assertEqual(recognized_form[0].page_range.first_page, page_results[0].page) self.assertEqual(recognized_form[0].page_range.last_page, page_results[0].page) self.assertLabeledFormFieldDictTransformCorrect(recognized_form[0].fields, actual_fields, read_results) + + @GlobalFormRecognizerAccountPreparer() + @GlobalTrainingAccountPreparer(multipage=True) + async def test_custom_forms_multipage_labeled_transform(self, client, container_sas_url): + training_client = client.get_form_training_client() + + model = await training_client.train_model(container_sas_url, use_labels=True) + + responses = [] + + def callback(raw_response, _, headers): + analyze_result = client._client._deserialize(AnalyzeOperationResult, raw_response) + form = prepare_form_result(analyze_result, model.model_id) + responses.append(analyze_result) + responses.append(form) + + with open(self.multipage_invoice_pdf, "rb") as fd: + myfile = fd.read() + + form = await client.recognize_custom_forms( + model.model_id, + myfile, + include_text_content=True, + cls=callback + ) + actual = responses[0] + recognized_form = responses[1] + read_results = actual.analyze_result.read_results + page_results = actual.analyze_result.page_results + document_results = actual.analyze_result.document_results + + self.assertFormPagesTransformCorrect(recognized_form, read_results, page_results) + for form, actual in zip(recognized_form, document_results): + self.assertEqual(form.page_range.first_page, actual.page_range[0]) + self.assertEqual(form.page_range.last_page, actual.page_range[1]) + self.assertEqual(form.form_type, "form-"+model.model_id) + self.assertLabeledFormFieldDictTransformCorrect(form.fields, actual.fields, read_results) diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_custom_forms_from_url.py b/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_custom_forms_from_url.py index 021fbd8283e4..b43e1384a82e 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_custom_forms_from_url.py +++ b/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_custom_forms_from_url.py @@ -10,7 +10,7 @@ from azure.ai.formrecognizer import FormRecognizerClient from azure.ai.formrecognizer._generated.models import AnalyzeOperationResult from azure.ai.formrecognizer._response_handlers import prepare_form_result -from testcase import FormRecognizerTest, GlobalFormRecognizerAccountPreparer, GlobalFormAndStorageAccountPreparer +from testcase import FormRecognizerTest, GlobalFormRecognizerAccountPreparer from testcase import GlobalTrainingAccountPreparer as _GlobalTrainingAccountPreparer @@ -49,7 +49,22 @@ def test_pass_stream_into_url(self, resource_group, location, form_recognizer_ac url=fd, ) - @GlobalFormAndStorageAccountPreparer() + @GlobalFormRecognizerAccountPreparer() + @GlobalTrainingAccountPreparer() + def test_custom_form_bad_url(self, client, container_sas_url): + training_client = client.get_form_training_client() + + poller = training_client.begin_train_model(container_sas_url, use_labels=True) + model = poller.result() + + with self.assertRaises(HttpResponseError): + poller = client.begin_recognize_custom_forms_from_url( + model.model_id, + url="https://badurl.jpg" + ) + form = poller.result() + + @GlobalFormRecognizerAccountPreparer() @GlobalTrainingAccountPreparer() def test_custom_form_unlabeled(self, client, container_sas_url): training_client = client.get_form_training_client() @@ -70,7 +85,32 @@ def test_custom_form_unlabeled(self, client, container_sas_url): self.assertIsNotNone(field.value_data.text) self.assertIsNotNone(field.label_data.text) - @GlobalFormAndStorageAccountPreparer() + @GlobalFormRecognizerAccountPreparer() + @GlobalTrainingAccountPreparer(multipage=True, blob_sas_url=True) + def test_form_multipage_unlabeled(self, client, container_sas_url, blob_sas_url): + training_client = client.get_form_training_client() + + poller = training_client.begin_train_model(container_sas_url) + model = poller.result() + + poller = client.begin_recognize_custom_forms_from_url( + model.model_id, + blob_sas_url + ) + forms = poller.result() + + for form in forms: + self.assertEqual(form.form_type, "form-0") + self.assertFormPagesHasValues(form.pages) + for label, field in form.fields.items(): + self.assertIsNotNone(field.confidence) + self.assertIsNotNone(field.name) + self.assertIsNotNone(field.page_number) + self.assertIsNotNone(field.value) + self.assertIsNotNone(field.value_data.text) + self.assertIsNotNone(field.label_data.text) + + @GlobalFormRecognizerAccountPreparer() @GlobalTrainingAccountPreparer() def test_custom_form_labeled(self, client, container_sas_url): training_client = client.get_form_training_client() @@ -90,9 +130,37 @@ def test_custom_form_labeled(self, client, container_sas_url): self.assertIsNotNone(field.value_data.text) self.assertIsNotNone(field.value_data.bounding_box) - @GlobalFormAndStorageAccountPreparer() + @GlobalFormRecognizerAccountPreparer() + @GlobalTrainingAccountPreparer(multipage=True, blob_sas_url=True) + def test_form_multipage_labeled(self, client, container_sas_url, blob_sas_url): + training_client = client.get_form_training_client() + + poller = training_client.begin_train_model( + container_sas_url, + use_labels=True + ) + model = poller.result() + + poller = client.begin_recognize_custom_forms_from_url( + model.model_id, + blob_sas_url + ) + forms = poller.result() + + for form in forms: + self.assertEqual(form.form_type, "form-"+model.model_id) + self.assertFormPagesHasValues(form.pages) + for label, field in form.fields.items(): + self.assertIsNotNone(field.confidence) + self.assertIsNotNone(field.name) + self.assertIsNotNone(field.page_number) + self.assertIsNotNone(field.value_data.text) + self.assertIsNotNone(field.value_data.bounding_box) + + + @GlobalFormRecognizerAccountPreparer() @GlobalTrainingAccountPreparer() - def test_form_unlbld_transform(self, client, container_sas_url): + def test_custom_form_unlabeled_transform(self, client, container_sas_url): training_client = client.get_form_training_client() poller = training_client.begin_train_model(container_sas_url) @@ -124,7 +192,43 @@ def callback(raw_response, _, headers): self.assertEqual(recognized_form[0].page_range.last_page, page_results[0].page) self.assertUnlabeledFormFieldDictTransformCorrect(recognized_form[0].fields, actual_fields, read_results) - @GlobalFormAndStorageAccountPreparer() + @GlobalFormRecognizerAccountPreparer() + @GlobalTrainingAccountPreparer(multipage=True, blob_sas_url=True) + def test_custom_form_multipage_unlabeled_transform(self, client, container_sas_url, blob_sas_url): + training_client = client.get_form_training_client() + + poller = training_client.begin_train_model(container_sas_url) + model = poller.result() + + responses = [] + + def callback(raw_response, _, headers): + analyze_result = client._client._deserialize(AnalyzeOperationResult, raw_response) + form = prepare_form_result(analyze_result, model.model_id) + responses.append(analyze_result) + responses.append(form) + + poller = client.begin_recognize_custom_forms_from_url( + model.model_id, + blob_sas_url, + include_text_content=True, + cls=callback + ) + form = poller.result() + actual = responses[0] + recognized_form = responses[1] + read_results = actual.analyze_result.read_results + page_results = actual.analyze_result.page_results + + self.assertFormPagesTransformCorrect(recognized_form, read_results, page_results, bug_skip_text_content=True) + + for form, actual in zip(recognized_form, page_results): + self.assertEqual(form.page_range.first_page, actual.page) + self.assertEqual(form.page_range.last_page, actual.page) + self.assertUnlabeledFormFieldDictTransformCorrect(form.fields, actual.key_value_pairs, read_results, bug_skip_text_content=True) + + + @GlobalFormRecognizerAccountPreparer() @GlobalTrainingAccountPreparer() def test_form_labeled_transform(self, client, container_sas_url): training_client = client.get_form_training_client() @@ -157,3 +261,39 @@ def callback(raw_response, _, headers): self.assertEqual(recognized_form[0].page_range.first_page, page_results[0].page) self.assertEqual(recognized_form[0].page_range.last_page, page_results[0].page) self.assertLabeledFormFieldDictTransformCorrect(recognized_form[0].fields, actual_fields, read_results) + + @GlobalFormRecognizerAccountPreparer() + @GlobalTrainingAccountPreparer(multipage=True, blob_sas_url=True) + def test_custom_form_multipage_labeled_transform(self, client, container_sas_url, blob_sas_url): + training_client = client.get_form_training_client() + + poller = training_client.begin_train_model(container_sas_url, use_labels=True) + model = poller.result() + + responses = [] + + def callback(raw_response, _, headers): + analyze_result = client._client._deserialize(AnalyzeOperationResult, raw_response) + form = prepare_form_result(analyze_result, model.model_id) + responses.append(analyze_result) + responses.append(form) + + poller = client.begin_recognize_custom_forms_from_url( + model.model_id, + blob_sas_url, + include_text_content=True, + cls=callback + ) + form = poller.result() + actual = responses[0] + recognized_form = responses[1] + read_results = actual.analyze_result.read_results + page_results = actual.analyze_result.page_results + document_results = actual.analyze_result.document_results + + self.assertFormPagesTransformCorrect(recognized_form, read_results, page_results) + for form, actual in zip(recognized_form, document_results): + self.assertEqual(form.page_range.first_page, actual.page_range[0]) + self.assertEqual(form.page_range.last_page, actual.page_range[1]) + self.assertEqual(form.form_type, "form-"+model.model_id) + self.assertLabeledFormFieldDictTransformCorrect(form.fields, actual.fields, read_results) diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_custom_forms_from_url_async.py b/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_custom_forms_from_url_async.py index a08878d24a5a..a759a731d6de 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_custom_forms_from_url_async.py +++ b/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_custom_forms_from_url_async.py @@ -10,7 +10,7 @@ from azure.ai.formrecognizer.aio import FormRecognizerClient from azure.ai.formrecognizer._generated.models import AnalyzeOperationResult from azure.ai.formrecognizer._response_handlers import prepare_form_result -from testcase import GlobalFormRecognizerAccountPreparer, GlobalFormAndStorageAccountPreparer +from testcase import GlobalFormRecognizerAccountPreparer from testcase import GlobalTrainingAccountPreparer as _GlobalTrainingAccountPreparer from asynctestcase import AsyncFormRecognizerTest @@ -49,7 +49,20 @@ async def test_pass_stream_into_url(self, resource_group, location, form_recogni url=fd, ) - @GlobalFormAndStorageAccountPreparer() + @GlobalFormRecognizerAccountPreparer() + @GlobalTrainingAccountPreparer() + async def test_form_bad_url(self, client, container_sas_url): + training_client = client.get_form_training_client() + + model = await training_client.train_model(container_sas_url, use_labels=True) + + with self.assertRaises(HttpResponseError): + form = await client.recognize_custom_forms_from_url( + model.model_id, + url="https://badurl.jpg" + ) + + @GlobalFormRecognizerAccountPreparer() @GlobalTrainingAccountPreparer() async def test_form_unlabeled(self, client, container_sas_url): training_client = client.get_form_training_client() @@ -68,7 +81,30 @@ async def test_form_unlabeled(self, client, container_sas_url): self.assertIsNotNone(field.value_data.text) self.assertIsNotNone(field.label_data.text) - @GlobalFormAndStorageAccountPreparer() + @GlobalFormRecognizerAccountPreparer() + @GlobalTrainingAccountPreparer(multipage=True, blob_sas_url=True) + async def test_custom_form_multipage_unlabeled(self, client, container_sas_url, blob_sas_url): + training_client = client.get_form_training_client() + + model = await training_client.train_model(container_sas_url) + + forms = await client.recognize_custom_forms_from_url( + model.model_id, + blob_sas_url, + ) + + for form in forms: + self.assertEqual(form.form_type, "form-0") + self.assertFormPagesHasValues(form.pages) + for label, field in form.fields.items(): + self.assertIsNotNone(field.confidence) + self.assertIsNotNone(field.name) + self.assertIsNotNone(field.page_number) + self.assertIsNotNone(field.value) + self.assertIsNotNone(field.value_data.text) + self.assertIsNotNone(field.label_data.text) + + @GlobalFormRecognizerAccountPreparer() @GlobalTrainingAccountPreparer() async def test_form_labeled(self, client, container_sas_url): training_client = client.get_form_training_client() @@ -86,9 +122,34 @@ async def test_form_labeled(self, client, container_sas_url): self.assertIsNotNone(field.value_data.text) self.assertIsNotNone(field.value_data.bounding_box) - @GlobalFormAndStorageAccountPreparer() + @GlobalFormRecognizerAccountPreparer() + @GlobalTrainingAccountPreparer(multipage=True, blob_sas_url=True) + async def test_form_multipage_labeled(self, client, container_sas_url, blob_sas_url): + training_client = client.get_form_training_client() + + model = await training_client.train_model( + container_sas_url, + use_labels=True + ) + + forms = await client.recognize_custom_forms_from_url( + model.model_id, + blob_sas_url + ) + + for form in forms: + self.assertEqual(form.form_type, "form-"+model.model_id) + self.assertFormPagesHasValues(form.pages) + for label, field in form.fields.items(): + self.assertIsNotNone(field.confidence) + self.assertIsNotNone(field.name) + self.assertIsNotNone(field.page_number) + self.assertIsNotNone(field.value_data.text) + self.assertIsNotNone(field.value_data.bounding_box) + + @GlobalFormRecognizerAccountPreparer() @GlobalTrainingAccountPreparer() - async def test_fr_unlbld_trnsfrm(self, client, container_sas_url): + async def test_form_unlabeled_transform(self, client, container_sas_url): training_client = client.get_form_training_client() model = await training_client.train_model(container_sas_url) @@ -119,9 +180,42 @@ def callback(raw_response, _, headers): self.assertEqual(recognized_form[0].page_range.last_page, page_results[0].page) self.assertUnlabeledFormFieldDictTransformCorrect(recognized_form[0].fields, actual_fields, read_results) - @GlobalFormAndStorageAccountPreparer() + @GlobalFormRecognizerAccountPreparer() + @GlobalTrainingAccountPreparer(multipage=True, blob_sas_url=True) + async def test_multipage_unlabeled_transform(self, client, container_sas_url, blob_sas_url): + training_client = client.get_form_training_client() + + model = await training_client.train_model(container_sas_url) + + responses = [] + + def callback(raw_response, _, headers): + analyze_result = client._client._deserialize(AnalyzeOperationResult, raw_response) + form = prepare_form_result(analyze_result, model.model_id) + responses.append(analyze_result) + responses.append(form) + + form = await client.recognize_custom_forms_from_url( + model.model_id, + blob_sas_url, + include_text_content=True, + cls=callback + ) + actual = responses[0] + recognized_form = responses[1] + read_results = actual.analyze_result.read_results + page_results = actual.analyze_result.page_results + + self.assertFormPagesTransformCorrect(recognized_form, read_results, page_results, bug_skip_text_content=True) + + for form, actual in zip(recognized_form, page_results): + self.assertEqual(form.page_range.first_page, actual.page) + self.assertEqual(form.page_range.last_page, actual.page) + self.assertUnlabeledFormFieldDictTransformCorrect(form.fields, actual.key_value_pairs, read_results, bug_skip_text_content=True) + + @GlobalFormRecognizerAccountPreparer() @GlobalTrainingAccountPreparer() - async def test_fr_lbld_transform(self, client, container_sas_url): + async def test_form_labeled_transform(self, client, container_sas_url): training_client = client.get_form_training_client() model = await training_client.train_model(container_sas_url, use_labels=True) @@ -151,3 +245,38 @@ def callback(raw_response, _, headers): self.assertEqual(recognized_form[0].page_range.first_page, page_results[0].page) self.assertEqual(recognized_form[0].page_range.last_page, page_results[0].page) self.assertLabeledFormFieldDictTransformCorrect(recognized_form[0].fields, actual_fields, read_results) + + @GlobalFormRecognizerAccountPreparer() + @GlobalTrainingAccountPreparer(multipage=True, blob_sas_url=True) + async def test_multipage_labeled_transform(self, client, container_sas_url, blob_sas_url): + training_client = client.get_form_training_client() + + model = await training_client.train_model(container_sas_url, use_labels=True) + + responses = [] + + def callback(raw_response, _, headers): + analyze_result = client._client._deserialize(AnalyzeOperationResult, raw_response) + form = prepare_form_result(analyze_result, model.model_id) + responses.append(analyze_result) + responses.append(form) + + form = await client.recognize_custom_forms_from_url( + model.model_id, + blob_sas_url, + include_text_content=True, + cls=callback + ) + + actual = responses[0] + recognized_form = responses[1] + read_results = actual.analyze_result.read_results + page_results = actual.analyze_result.page_results + document_results = actual.analyze_result.document_results + + self.assertFormPagesTransformCorrect(recognized_form, read_results, page_results) + for form, actual in zip(recognized_form, document_results): + self.assertEqual(form.page_range.first_page, actual.page_range[0]) + self.assertEqual(form.page_range.last_page, actual.page_range[1]) + self.assertEqual(form.form_type, "form-"+model.model_id) + self.assertLabeledFormFieldDictTransformCorrect(form.fields, actual.fields, read_results) diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_mgmt.py b/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_mgmt.py index 70d5c9026187..7abb5ef60d82 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_mgmt.py +++ b/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_mgmt.py @@ -9,7 +9,7 @@ from azure.core.exceptions import ResourceNotFoundError, ClientAuthenticationError from azure.core.pipeline.transport import RequestsTransport from azure.ai.formrecognizer import FormTrainingClient, FormRecognizerClient -from testcase import FormRecognizerTest, GlobalFormRecognizerAccountPreparer, GlobalFormAndStorageAccountPreparer +from testcase import FormRecognizerTest, GlobalFormRecognizerAccountPreparer from testcase import GlobalTrainingAccountPreparer as _GlobalTrainingAccountPreparer @@ -52,7 +52,7 @@ def test_account_properties(self, resource_group, location, form_recognizer_acco self.assertIsNotNone(properties.custom_model_limit) self.assertIsNotNone(properties.custom_model_count) - @GlobalFormAndStorageAccountPreparer() + @GlobalFormRecognizerAccountPreparer() @GlobalTrainingAccountPreparer() def test_mgmt_model_labeled(self, client, container_sas_url): @@ -88,7 +88,7 @@ def test_mgmt_model_labeled(self, client, container_sas_url): with self.assertRaises(ResourceNotFoundError): client.get_custom_model(labeled_model_from_train.model_id) - @GlobalFormAndStorageAccountPreparer() + @GlobalFormRecognizerAccountPreparer() @GlobalTrainingAccountPreparer() def test_mgmt_model_unlabeled(self, client, container_sas_url): diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_mgmt_async.py b/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_mgmt_async.py index 6a2b8abe4070..edfd133ff0b5 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_mgmt_async.py +++ b/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_mgmt_async.py @@ -9,7 +9,7 @@ from azure.core.credentials import AzureKeyCredential from azure.core.exceptions import ResourceNotFoundError, ClientAuthenticationError from azure.ai.formrecognizer.aio import FormTrainingClient, FormRecognizerClient -from testcase import FormRecognizerTest, GlobalFormRecognizerAccountPreparer, GlobalFormAndStorageAccountPreparer +from testcase import FormRecognizerTest, GlobalFormRecognizerAccountPreparer from testcase import GlobalTrainingAccountPreparer as _GlobalTrainingAccountPreparer from asynctestcase import AsyncFormRecognizerTest @@ -53,7 +53,7 @@ async def test_account_properties(self, resource_group, location, form_recognize self.assertIsNotNone(properties.custom_model_limit) self.assertIsNotNone(properties.custom_model_count) - @GlobalFormAndStorageAccountPreparer() + @GlobalFormRecognizerAccountPreparer() @GlobalTrainingAccountPreparer() async def test_mgmt_model_labeled(self, client, container_sas_url): @@ -88,7 +88,7 @@ async def test_mgmt_model_labeled(self, client, container_sas_url): with self.assertRaises(ResourceNotFoundError): await client.get_custom_model(labeled_model_from_train.model_id) - @GlobalFormAndStorageAccountPreparer() + @GlobalFormRecognizerAccountPreparer() @GlobalTrainingAccountPreparer() async def test_mgmt_model_unlabeled(self, client, container_sas_url): unlabeled_model_from_train = await client.train_model(container_sas_url) diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_receipt.py b/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_receipt.py index a704a602af23..37b7c946477a 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_receipt.py +++ b/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_receipt.py @@ -4,8 +4,9 @@ # Licensed under the MIT License. # ------------------------------------ +from io import BytesIO from datetime import date, time -from azure.core.exceptions import ClientAuthenticationError, ServiceRequestError +from azure.core.exceptions import ClientAuthenticationError, ServiceRequestError, HttpResponseError from azure.core.credentials import AzureKeyCredential from azure.ai.formrecognizer._generated.models import AnalyzeOperationResult from azure.ai.formrecognizer._response_handlers import prepare_us_receipt @@ -49,6 +50,54 @@ def test_passing_enum_content_type(self, resource_group, location, form_recogniz result = poller.result() self.assertIsNotNone(result) + @GlobalFormRecognizerAccountPreparer() + def test_damaged_file_passed_as_bytes(self, resource_group, location, form_recognizer_account, form_recognizer_account_key): + client = FormRecognizerClient(form_recognizer_account, AzureKeyCredential(form_recognizer_account_key)) + damaged_pdf = b"\x25\x50\x44\x46\x55\x55\x55" # still has correct bytes to be recognized as PDF + with self.assertRaises(HttpResponseError): + poller = client.begin_recognize_receipts( + damaged_pdf, + ) + + @GlobalFormRecognizerAccountPreparer() + def test_damaged_file_bytes_fails_autodetect_content_type(self, resource_group, location, form_recognizer_account, form_recognizer_account_key): + client = FormRecognizerClient(form_recognizer_account, AzureKeyCredential(form_recognizer_account_key)) + damaged_pdf = b"\x50\x44\x46\x55\x55\x55" # doesn't match any magic file numbers + with self.assertRaises(ValueError): + poller = client.begin_recognize_receipts( + damaged_pdf, + ) + + @GlobalFormRecognizerAccountPreparer() + def test_damaged_file_passed_as_bytes_io(self, resource_group, location, form_recognizer_account, form_recognizer_account_key): + client = FormRecognizerClient(form_recognizer_account, AzureKeyCredential(form_recognizer_account_key)) + damaged_pdf = BytesIO(b"\x25\x50\x44\x46\x55\x55\x55") # still has correct bytes to be recognized as PDF + with self.assertRaises(HttpResponseError): + poller = client.begin_recognize_receipts( + damaged_pdf, + ) + + @GlobalFormRecognizerAccountPreparer() + def test_damaged_file_bytes_io_fails_autodetect(self, resource_group, location, form_recognizer_account, form_recognizer_account_key): + client = FormRecognizerClient(form_recognizer_account, AzureKeyCredential(form_recognizer_account_key)) + damaged_pdf = BytesIO(b"\x50\x44\x46\x55\x55\x55") # doesn't match any magic file numbers + with self.assertRaises(ValueError): + poller = client.begin_recognize_receipts( + damaged_pdf, + ) + + @GlobalFormRecognizerAccountPreparer() + def test_blank_page(self, resource_group, location, form_recognizer_account, form_recognizer_account_key): + client = FormRecognizerClient(form_recognizer_account, AzureKeyCredential(form_recognizer_account_key)) + + with open(self.blank_pdf, "rb") as fd: + blank = fd.read() + poller = client.begin_recognize_receipts( + blank, + ) + result = poller.result() + self.assertIsNotNone(result) + @GlobalFormRecognizerAccountPreparer() def test_passing_bad_content_type_param_passed(self, resource_group, location, form_recognizer_account, form_recognizer_account_key): client = FormRecognizerClient(form_recognizer_account, AzureKeyCredential(form_recognizer_account_key)) @@ -280,3 +329,103 @@ def test_receipt_jpg_include_text_content(self, resource_group, location, form_r for field, value in receipt.fields.items(): self.assertTextContentHasValues(value.value_data.text_content, receipt.page_range.first_page) + + @GlobalFormRecognizerAccountPreparer() + def test_receipt_multipage(self, resource_group, location, form_recognizer_account, form_recognizer_account_key): + client = FormRecognizerClient(form_recognizer_account, AzureKeyCredential(form_recognizer_account_key)) + with open(self.multipage_invoice_pdf, "rb") as fd: + receipt = fd.read() + poller = client.begin_recognize_receipts(receipt, include_text_content=True) + result = poller.result() + + self.assertEqual(len(result), 3) + receipt = result[0] + self.assertEqual(receipt.merchant_address.value, '123 Hobbit Lane 567 Main St. Redmond, WA Redmond, WA') + self.assertEqual(receipt.merchant_name.value, 'Bilbo Baggins') + self.assertEqual(receipt.merchant_phone_number.value, '+15555555555') + self.assertEqual(receipt.subtotal.value, 300.0) + self.assertEqual(receipt.total.value, 430.0) + self.assertEqual(receipt.page_range.first_page, 1) + self.assertEqual(receipt.page_range.last_page, 1) + self.assertFormPagesHasValues(receipt.pages) + self.assertIsNotNone(receipt.receipt_type.confidence) + self.assertEqual(receipt.receipt_type.type, 'Itemized') + receipt = result[2] + self.assertEqual(receipt.merchant_address.value, '123 Hobbit Lane 567 Main St. Redmond, WA Redmond, WA') + self.assertEqual(receipt.merchant_name.value, 'Frodo Baggins') + self.assertEqual(receipt.merchant_phone_number.value, '+15555555555') + self.assertEqual(receipt.subtotal.value, 3000.0) + self.assertEqual(receipt.total.value, 1000.0) + self.assertEqual(receipt.page_range.first_page, 3) + self.assertEqual(receipt.page_range.last_page, 3) + self.assertFormPagesHasValues(receipt.pages) + self.assertIsNotNone(receipt.receipt_type.confidence) + self.assertEqual(receipt.receipt_type.type, 'Itemized') + + @GlobalFormRecognizerAccountPreparer() + def test_receipt_multipage_transform(self, resource_group, location, form_recognizer_account, form_recognizer_account_key): + client = FormRecognizerClient(form_recognizer_account, AzureKeyCredential(form_recognizer_account_key)) + + responses = [] + + def callback(raw_response, _, headers): + analyze_result = client._client._deserialize(AnalyzeOperationResult, raw_response) + extracted_receipt = prepare_us_receipt(analyze_result) + responses.append(analyze_result) + responses.append(extracted_receipt) + + with open(self.multipage_invoice_pdf, "rb") as fd: + myfile = fd.read() + + poller = client.begin_recognize_receipts( + stream=myfile, + include_text_content=True, + cls=callback + ) + + result = poller.result() + raw_response = responses[0] + returned_model = responses[1] + actual = raw_response.analyze_result.document_results + read_results = raw_response.analyze_result.read_results + document_results = raw_response.analyze_result.document_results + page_results = raw_response.analyze_result.page_results + + # check hardcoded values + for receipt, actual in zip(returned_model, actual): + if actual.fields is None: # second page is blank + continue + self.assertFormFieldTransformCorrect(receipt.merchant_address, actual.fields.get("MerchantAddress"), read_results) + self.assertFormFieldTransformCorrect(receipt.merchant_name, actual.fields.get("MerchantName"), read_results) + self.assertFormFieldTransformCorrect(receipt.merchant_phone_number, actual.fields.get("MerchantPhoneNumber"), read_results) + self.assertFormFieldTransformCorrect(receipt.subtotal, actual.fields.get("Subtotal"), read_results) + self.assertFormFieldTransformCorrect(receipt.tax, actual.fields.get("Tax"), read_results) + self.assertFormFieldTransformCorrect(receipt.tip, actual.fields.get("Tip"), read_results) + self.assertFormFieldTransformCorrect(receipt.total, actual.fields.get("Total"), read_results) + self.assertFormFieldTransformCorrect(receipt.transaction_date, actual.fields.get("TransactionDate"), read_results) + self.assertFormFieldTransformCorrect(receipt.transaction_time, actual.fields.get("TransactionTime"), read_results) + + # check dict values + self.assertFormFieldTransformCorrect(receipt.fields.get("MerchantAddress"), actual.fields.get("MerchantAddress"), read_results) + self.assertFormFieldTransformCorrect(receipt.fields.get("MerchantName"), actual.fields.get("MerchantName"), read_results) + self.assertFormFieldTransformCorrect(receipt.fields.get("MerchantPhoneNumber"), actual.fields.get("MerchantPhoneNumber"), read_results) + self.assertFormFieldTransformCorrect(receipt.fields.get("Subtotal"), actual.fields.get("Subtotal"), read_results) + self.assertFormFieldTransformCorrect(receipt.fields.get("Tax"), actual.fields.get("Tax"), read_results) + self.assertFormFieldTransformCorrect(receipt.fields.get("Tip"), actual.fields.get("Tip"), read_results) + self.assertFormFieldTransformCorrect(receipt.fields.get("Total"), actual.fields.get("Total"), read_results) + self.assertFormFieldTransformCorrect(receipt.fields.get("TransactionDate"), actual.fields.get("TransactionDate"), read_results) + self.assertFormFieldTransformCorrect(receipt.fields.get("TransactionTime"), actual.fields.get("TransactionTime"), read_results) + + # check page range + self.assertEqual(receipt.page_range.first_page, actual.page_range[0]) + self.assertEqual(receipt.page_range.last_page, actual.page_range[1]) + + # check receipt type + self.assertEqual(receipt.receipt_type.confidence, actual.fields["ReceiptType"].confidence) + self.assertEqual(receipt.receipt_type.type, actual.fields["ReceiptType"].value_string) + + # check receipt items + self.assertReceiptItemsTransformCorrect(receipt.receipt_items, actual.fields["Items"], read_results) + + # Check form pages + self.assertFormPagesTransformCorrect(returned_model, read_results) diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_receipt_async.py b/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_receipt_async.py index 3a434a29faff..7c2f9eff0a41 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_receipt_async.py +++ b/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_receipt_async.py @@ -4,8 +4,9 @@ # Licensed under the MIT License. # ------------------------------------ +from io import BytesIO from datetime import date, time -from azure.core.exceptions import ServiceRequestError, ClientAuthenticationError +from azure.core.exceptions import ServiceRequestError, ClientAuthenticationError, HttpResponseError from azure.core.credentials import AzureKeyCredential from azure.ai.formrecognizer._generated.models import AnalyzeOperationResult from azure.ai.formrecognizer._response_handlers import prepare_us_receipt @@ -49,6 +50,53 @@ async def test_passing_enum_content_type(self, resource_group, location, form_re ) self.assertIsNotNone(result) + @GlobalFormRecognizerAccountPreparer() + async def test_damaged_file_passed_as_bytes(self, resource_group, location, form_recognizer_account, form_recognizer_account_key): + client = FormRecognizerClient(form_recognizer_account, AzureKeyCredential(form_recognizer_account_key)) + damaged_pdf = b"\x25\x50\x44\x46\x55\x55\x55" # still has correct bytes to be recognized as PDF + with self.assertRaises(HttpResponseError): + poller = await client.recognize_receipts( + damaged_pdf, + ) + + @GlobalFormRecognizerAccountPreparer() + async def test_damaged_file_bytes_fails_autodetect_content_type(self, resource_group, location, form_recognizer_account, form_recognizer_account_key): + client = FormRecognizerClient(form_recognizer_account, AzureKeyCredential(form_recognizer_account_key)) + damaged_pdf = b"\x50\x44\x46\x55\x55\x55" # doesn't match any magic file numbers + with self.assertRaises(ValueError): + poller = await client.recognize_receipts( + damaged_pdf, + ) + + @GlobalFormRecognizerAccountPreparer() + async def test_damaged_file_passed_as_bytes_io(self, resource_group, location, form_recognizer_account, form_recognizer_account_key): + client = FormRecognizerClient(form_recognizer_account, AzureKeyCredential(form_recognizer_account_key)) + damaged_pdf = BytesIO(b"\x25\x50\x44\x46\x55\x55\x55") # still has correct bytes to be recognized as PDF + with self.assertRaises(HttpResponseError): + poller = await client.recognize_receipts( + damaged_pdf, + ) + + @GlobalFormRecognizerAccountPreparer() + async def test_damaged_file_bytes_io_fails_autodetect(self, resource_group, location, form_recognizer_account, form_recognizer_account_key): + client = FormRecognizerClient(form_recognizer_account, AzureKeyCredential(form_recognizer_account_key)) + damaged_pdf = BytesIO(b"\x50\x44\x46\x55\x55\x55") # doesn't match any magic file numbers + with self.assertRaises(ValueError): + poller = await client.recognize_receipts( + damaged_pdf, + ) + + @GlobalFormRecognizerAccountPreparer() + async def test_blank_page(self, resource_group, location, form_recognizer_account, form_recognizer_account_key): + client = FormRecognizerClient(form_recognizer_account, AzureKeyCredential(form_recognizer_account_key)) + + with open(self.blank_pdf, "rb") as fd: + blank = fd.read() + result = await client.recognize_receipts( + blank, + ) + self.assertIsNotNone(result) + @GlobalFormRecognizerAccountPreparer() async def test_passing_bad_content_type_param_passed(self, resource_group, location, form_recognizer_account, form_recognizer_account_key): client = FormRecognizerClient(form_recognizer_account, AzureKeyCredential(form_recognizer_account_key)) @@ -276,3 +324,101 @@ async def test_receipt_jpg_include_text_content(self, resource_group, location, for field, value in receipt.fields.items(): self.assertTextContentHasValues(value.value_data.text_content, receipt.page_range.first_page) + + @GlobalFormRecognizerAccountPreparer() + async def test_receipt_multipage(self, resource_group, location, form_recognizer_account, form_recognizer_account_key): + client = FormRecognizerClient(form_recognizer_account, AzureKeyCredential(form_recognizer_account_key)) + with open(self.multipage_invoice_pdf, "rb") as fd: + receipt = fd.read() + result = await client.recognize_receipts(receipt, include_text_content=True) + + self.assertEqual(len(result), 3) + receipt = result[0] + self.assertEqual(receipt.merchant_address.value, '123 Hobbit Lane 567 Main St. Redmond, WA Redmond, WA') + self.assertEqual(receipt.merchant_name.value, 'Bilbo Baggins') + self.assertEqual(receipt.merchant_phone_number.value, '+15555555555') + self.assertEqual(receipt.subtotal.value, 300.0) + self.assertEqual(receipt.total.value, 430.0) + self.assertEqual(receipt.page_range.first_page, 1) + self.assertEqual(receipt.page_range.last_page, 1) + self.assertFormPagesHasValues(receipt.pages) + self.assertIsNotNone(receipt.receipt_type.confidence) + self.assertEqual(receipt.receipt_type.type, 'Itemized') + receipt = result[2] + self.assertEqual(receipt.merchant_address.value, '123 Hobbit Lane 567 Main St. Redmond, WA Redmond, WA') + self.assertEqual(receipt.merchant_name.value, 'Frodo Baggins') + self.assertEqual(receipt.merchant_phone_number.value, '+15555555555') + self.assertEqual(receipt.subtotal.value, 3000.0) + self.assertEqual(receipt.total.value, 1000.0) + self.assertEqual(receipt.page_range.first_page, 3) + self.assertEqual(receipt.page_range.last_page, 3) + self.assertFormPagesHasValues(receipt.pages) + self.assertIsNotNone(receipt.receipt_type.confidence) + self.assertEqual(receipt.receipt_type.type, 'Itemized') + + @GlobalFormRecognizerAccountPreparer() + async def test_receipt_multipage_transform(self, resource_group, location, form_recognizer_account, form_recognizer_account_key): + client = FormRecognizerClient(form_recognizer_account, AzureKeyCredential(form_recognizer_account_key)) + + responses = [] + + def callback(raw_response, _, headers): + analyze_result = client._client._deserialize(AnalyzeOperationResult, raw_response) + extracted_receipt = prepare_us_receipt(analyze_result) + responses.append(analyze_result) + responses.append(extracted_receipt) + + with open(self.multipage_invoice_pdf, "rb") as fd: + myfile = fd.read() + + result = await client.recognize_receipts( + stream=myfile, + include_text_content=True, + cls=callback + ) + + raw_response = responses[0] + returned_model = responses[1] + actual = raw_response.analyze_result.document_results + read_results = raw_response.analyze_result.read_results + document_results = raw_response.analyze_result.document_results + page_results = raw_response.analyze_result.page_results + + # check hardcoded values + for receipt, actual in zip(returned_model, actual): + if actual.fields is None: # second page is blank + continue + self.assertFormFieldTransformCorrect(receipt.merchant_address, actual.fields.get("MerchantAddress"), read_results) + self.assertFormFieldTransformCorrect(receipt.merchant_name, actual.fields.get("MerchantName"), read_results) + self.assertFormFieldTransformCorrect(receipt.merchant_phone_number, actual.fields.get("MerchantPhoneNumber"), read_results) + self.assertFormFieldTransformCorrect(receipt.subtotal, actual.fields.get("Subtotal"), read_results) + self.assertFormFieldTransformCorrect(receipt.tax, actual.fields.get("Tax"), read_results) + self.assertFormFieldTransformCorrect(receipt.tip, actual.fields.get("Tip"), read_results) + self.assertFormFieldTransformCorrect(receipt.total, actual.fields.get("Total"), read_results) + self.assertFormFieldTransformCorrect(receipt.transaction_date, actual.fields.get("TransactionDate"), read_results) + self.assertFormFieldTransformCorrect(receipt.transaction_time, actual.fields.get("TransactionTime"), read_results) + + # check dict values + self.assertFormFieldTransformCorrect(receipt.fields.get("MerchantAddress"), actual.fields.get("MerchantAddress"), read_results) + self.assertFormFieldTransformCorrect(receipt.fields.get("MerchantName"), actual.fields.get("MerchantName"), read_results) + self.assertFormFieldTransformCorrect(receipt.fields.get("MerchantPhoneNumber"), actual.fields.get("MerchantPhoneNumber"), read_results) + self.assertFormFieldTransformCorrect(receipt.fields.get("Subtotal"), actual.fields.get("Subtotal"), read_results) + self.assertFormFieldTransformCorrect(receipt.fields.get("Tax"), actual.fields.get("Tax"), read_results) + self.assertFormFieldTransformCorrect(receipt.fields.get("Tip"), actual.fields.get("Tip"), read_results) + self.assertFormFieldTransformCorrect(receipt.fields.get("Total"), actual.fields.get("Total"), read_results) + self.assertFormFieldTransformCorrect(receipt.fields.get("TransactionDate"), actual.fields.get("TransactionDate"), read_results) + self.assertFormFieldTransformCorrect(receipt.fields.get("TransactionTime"), actual.fields.get("TransactionTime"), read_results) + + # check page range + self.assertEqual(receipt.page_range.first_page, actual.page_range[0]) + self.assertEqual(receipt.page_range.last_page, actual.page_range[1]) + + # check receipt type + self.assertEqual(receipt.receipt_type.confidence, actual.fields["ReceiptType"].confidence) + self.assertEqual(receipt.receipt_type.type, actual.fields["ReceiptType"].value_string) + + # check receipt items + self.assertReceiptItemsTransformCorrect(receipt.receipt_items, actual.fields["Items"], read_results) + + # Check form pages + self.assertFormPagesTransformCorrect(returned_model, read_results) diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_receipt_from_url.py b/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_receipt_from_url.py index e68873b763a9..a26460644b12 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_receipt_from_url.py +++ b/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_receipt_from_url.py @@ -239,3 +239,99 @@ def test_receipt_url_png(self, resource_group, location, form_recognizer_account self.assertFormPagesHasValues(receipt.pages) self.assertIsNotNone(receipt.receipt_type.confidence) self.assertEqual(receipt.receipt_type.type, 'Itemized') + + @GlobalFormRecognizerAccountPreparer() + def test_receipt_multipage_url(self, resource_group, location, form_recognizer_account, form_recognizer_account_key): + client = FormRecognizerClient(form_recognizer_account, AzureKeyCredential(form_recognizer_account_key)) + + poller = client.begin_recognize_receipts_from_url(self.multipage_url_pdf, include_text_content=True) + result = poller.result() + + self.assertEqual(len(result), 3) + receipt = result[0] + self.assertEqual(receipt.merchant_address.value, '123 Hobbit Lane 567 Main St. Redmond, WA Redmond, WA') + self.assertEqual(receipt.merchant_name.value, 'Bilbo Baggins') + self.assertEqual(receipt.merchant_phone_number.value, '+15555555555') + self.assertEqual(receipt.subtotal.value, 300.0) + self.assertEqual(receipt.total.value, 430.0) + self.assertEqual(receipt.page_range.first_page, 1) + self.assertEqual(receipt.page_range.last_page, 1) + self.assertFormPagesHasValues(receipt.pages) + self.assertIsNotNone(receipt.receipt_type.confidence) + self.assertEqual(receipt.receipt_type.type, 'Itemized') + receipt = result[2] + self.assertEqual(receipt.merchant_address.value, '123 Hobbit Lane 567 Main St. Redmond, WA Redmond, WA') + self.assertEqual(receipt.merchant_name.value, 'Frodo Baggins') + self.assertEqual(receipt.merchant_phone_number.value, '+15555555555') + self.assertEqual(receipt.subtotal.value, 3000.0) + self.assertEqual(receipt.total.value, 1000.0) + self.assertEqual(receipt.page_range.first_page, 3) + self.assertEqual(receipt.page_range.last_page, 3) + self.assertFormPagesHasValues(receipt.pages) + self.assertIsNotNone(receipt.receipt_type.confidence) + self.assertEqual(receipt.receipt_type.type, 'Itemized') + + @GlobalFormRecognizerAccountPreparer() + def test_receipt_multipage_transform_url(self, resource_group, location, form_recognizer_account, form_recognizer_account_key): + client = FormRecognizerClient(form_recognizer_account, AzureKeyCredential(form_recognizer_account_key)) + + responses = [] + + def callback(raw_response, _, headers): + analyze_result = client._client._deserialize(AnalyzeOperationResult, raw_response) + extracted_receipt = prepare_us_receipt(analyze_result) + responses.append(analyze_result) + responses.append(extracted_receipt) + + poller = client.begin_recognize_receipts_from_url( + self.multipage_url_pdf, + include_text_content=True, + cls=callback + ) + + result = poller.result() + raw_response = responses[0] + returned_model = responses[1] + actual = raw_response.analyze_result.document_results + read_results = raw_response.analyze_result.read_results + document_results = raw_response.analyze_result.document_results + page_results = raw_response.analyze_result.page_results + + # check hardcoded values + for receipt, actual in zip(returned_model, actual): + if actual.fields is None: # second page is blank + continue + self.assertFormFieldTransformCorrect(receipt.merchant_address, actual.fields.get("MerchantAddress"), read_results) + self.assertFormFieldTransformCorrect(receipt.merchant_name, actual.fields.get("MerchantName"), read_results) + self.assertFormFieldTransformCorrect(receipt.merchant_phone_number, actual.fields.get("MerchantPhoneNumber"), read_results) + self.assertFormFieldTransformCorrect(receipt.subtotal, actual.fields.get("Subtotal"), read_results) + self.assertFormFieldTransformCorrect(receipt.tax, actual.fields.get("Tax"), read_results) + self.assertFormFieldTransformCorrect(receipt.tip, actual.fields.get("Tip"), read_results) + self.assertFormFieldTransformCorrect(receipt.total, actual.fields.get("Total"), read_results) + self.assertFormFieldTransformCorrect(receipt.transaction_date, actual.fields.get("TransactionDate"), read_results) + self.assertFormFieldTransformCorrect(receipt.transaction_time, actual.fields.get("TransactionTime"), read_results) + + # check dict values + self.assertFormFieldTransformCorrect(receipt.fields.get("MerchantAddress"), actual.fields.get("MerchantAddress"), read_results) + self.assertFormFieldTransformCorrect(receipt.fields.get("MerchantName"), actual.fields.get("MerchantName"), read_results) + self.assertFormFieldTransformCorrect(receipt.fields.get("MerchantPhoneNumber"), actual.fields.get("MerchantPhoneNumber"), read_results) + self.assertFormFieldTransformCorrect(receipt.fields.get("Subtotal"), actual.fields.get("Subtotal"), read_results) + self.assertFormFieldTransformCorrect(receipt.fields.get("Tax"), actual.fields.get("Tax"), read_results) + self.assertFormFieldTransformCorrect(receipt.fields.get("Tip"), actual.fields.get("Tip"), read_results) + self.assertFormFieldTransformCorrect(receipt.fields.get("Total"), actual.fields.get("Total"), read_results) + self.assertFormFieldTransformCorrect(receipt.fields.get("TransactionDate"), actual.fields.get("TransactionDate"), read_results) + self.assertFormFieldTransformCorrect(receipt.fields.get("TransactionTime"), actual.fields.get("TransactionTime"), read_results) + + # check page range + self.assertEqual(receipt.page_range.first_page, actual.page_range[0]) + self.assertEqual(receipt.page_range.last_page, actual.page_range[1]) + + # check receipt type + self.assertEqual(receipt.receipt_type.confidence, actual.fields["ReceiptType"].confidence) + self.assertEqual(receipt.receipt_type.type, actual.fields["ReceiptType"].value_string) + + # check receipt items + self.assertReceiptItemsTransformCorrect(receipt.receipt_items, actual.fields["Items"], read_results) + + # Check form pages + self.assertFormPagesTransformCorrect(returned_model, read_results) diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_receipt_from_url_async.py b/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_receipt_from_url_async.py index 89de46bb316a..c16081897127 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_receipt_from_url_async.py +++ b/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_receipt_from_url_async.py @@ -244,3 +244,97 @@ async def test_receipt_url_png(self, resource_group, location, form_recognizer_a self.assertFormPagesHasValues(receipt.pages) self.assertIsNotNone(receipt.receipt_type.confidence) self.assertEqual(receipt.receipt_type.type, 'Itemized') + + @GlobalFormRecognizerAccountPreparer() + async def test_receipt_multipage_url(self, resource_group, location, form_recognizer_account, form_recognizer_account_key): + client = FormRecognizerClient(form_recognizer_account, AzureKeyCredential(form_recognizer_account_key)) + + result = await client.recognize_receipts_from_url(self.multipage_url_pdf, include_text_content=True) + + self.assertEqual(len(result), 3) + receipt = result[0] + self.assertEqual(receipt.merchant_address.value, '123 Hobbit Lane 567 Main St. Redmond, WA Redmond, WA') + self.assertEqual(receipt.merchant_name.value, 'Bilbo Baggins') + self.assertEqual(receipt.merchant_phone_number.value, '+15555555555') + self.assertEqual(receipt.subtotal.value, 300.0) + self.assertEqual(receipt.total.value, 430.0) + self.assertEqual(receipt.page_range.first_page, 1) + self.assertEqual(receipt.page_range.last_page, 1) + self.assertFormPagesHasValues(receipt.pages) + self.assertIsNotNone(receipt.receipt_type.confidence) + self.assertEqual(receipt.receipt_type.type, 'Itemized') + receipt = result[2] + self.assertEqual(receipt.merchant_address.value, '123 Hobbit Lane 567 Main St. Redmond, WA Redmond, WA') + self.assertEqual(receipt.merchant_name.value, 'Frodo Baggins') + self.assertEqual(receipt.merchant_phone_number.value, '+15555555555') + self.assertEqual(receipt.subtotal.value, 3000.0) + self.assertEqual(receipt.total.value, 1000.0) + self.assertEqual(receipt.page_range.first_page, 3) + self.assertEqual(receipt.page_range.last_page, 3) + self.assertFormPagesHasValues(receipt.pages) + self.assertIsNotNone(receipt.receipt_type.confidence) + self.assertEqual(receipt.receipt_type.type, 'Itemized') + + @GlobalFormRecognizerAccountPreparer() + async def test_receipt_multipage_transform_url(self, resource_group, location, form_recognizer_account, form_recognizer_account_key): + client = FormRecognizerClient(form_recognizer_account, AzureKeyCredential(form_recognizer_account_key)) + + responses = [] + + def callback(raw_response, _, headers): + analyze_result = client._client._deserialize(AnalyzeOperationResult, raw_response) + extracted_receipt = prepare_us_receipt(analyze_result) + responses.append(analyze_result) + responses.append(extracted_receipt) + + result = await client.recognize_receipts_from_url( + self.multipage_url_pdf, + include_text_content=True, + cls=callback + ) + + raw_response = responses[0] + returned_model = responses[1] + actual = raw_response.analyze_result.document_results + read_results = raw_response.analyze_result.read_results + document_results = raw_response.analyze_result.document_results + page_results = raw_response.analyze_result.page_results + + # check hardcoded values + for receipt, actual in zip(returned_model, actual): + if actual.fields is None: # second page is blank + continue + self.assertFormFieldTransformCorrect(receipt.merchant_address, actual.fields.get("MerchantAddress"), read_results) + self.assertFormFieldTransformCorrect(receipt.merchant_name, actual.fields.get("MerchantName"), read_results) + self.assertFormFieldTransformCorrect(receipt.merchant_phone_number, actual.fields.get("MerchantPhoneNumber"), read_results) + self.assertFormFieldTransformCorrect(receipt.subtotal, actual.fields.get("Subtotal"), read_results) + self.assertFormFieldTransformCorrect(receipt.tax, actual.fields.get("Tax"), read_results) + self.assertFormFieldTransformCorrect(receipt.tip, actual.fields.get("Tip"), read_results) + self.assertFormFieldTransformCorrect(receipt.total, actual.fields.get("Total"), read_results) + self.assertFormFieldTransformCorrect(receipt.transaction_date, actual.fields.get("TransactionDate"), read_results) + self.assertFormFieldTransformCorrect(receipt.transaction_time, actual.fields.get("TransactionTime"), read_results) + + # check dict values + self.assertFormFieldTransformCorrect(receipt.fields.get("MerchantAddress"), actual.fields.get("MerchantAddress"), read_results) + self.assertFormFieldTransformCorrect(receipt.fields.get("MerchantName"), actual.fields.get("MerchantName"), read_results) + self.assertFormFieldTransformCorrect(receipt.fields.get("MerchantPhoneNumber"), actual.fields.get("MerchantPhoneNumber"), read_results) + self.assertFormFieldTransformCorrect(receipt.fields.get("Subtotal"), actual.fields.get("Subtotal"), read_results) + self.assertFormFieldTransformCorrect(receipt.fields.get("Tax"), actual.fields.get("Tax"), read_results) + self.assertFormFieldTransformCorrect(receipt.fields.get("Tip"), actual.fields.get("Tip"), read_results) + self.assertFormFieldTransformCorrect(receipt.fields.get("Total"), actual.fields.get("Total"), read_results) + self.assertFormFieldTransformCorrect(receipt.fields.get("TransactionDate"), actual.fields.get("TransactionDate"), read_results) + self.assertFormFieldTransformCorrect(receipt.fields.get("TransactionTime"), actual.fields.get("TransactionTime"), read_results) + + # check page range + self.assertEqual(receipt.page_range.first_page, actual.page_range[0]) + self.assertEqual(receipt.page_range.last_page, actual.page_range[1]) + + # check receipt type + self.assertEqual(receipt.receipt_type.confidence, actual.fields["ReceiptType"].confidence) + self.assertEqual(receipt.receipt_type.type, actual.fields["ReceiptType"].value_string) + + # check receipt items + self.assertReceiptItemsTransformCorrect(receipt.receipt_items, actual.fields["Items"], read_results) + + # Check form pages + self.assertFormPagesTransformCorrect(returned_model, read_results) diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_repr.py b/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_repr.py new file mode 100644 index 000000000000..5cf69159bf9b --- /dev/null +++ b/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_repr.py @@ -0,0 +1,223 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# -------------------------------------------------------------------------- + +import pytest +import datetime +from azure.ai.formrecognizer import _models + +# All features return a tuple of the object and the repr of the obejct + +# Adding in assert for each pytest fixture so it's easier to narrow down where the problem is + +@pytest.fixture +def bounding_box(): + model = [ + _models.Point(1, 2), + _models.Point(3, 4), + _models.Point(5, 6), + _models.Point(7, 8) + ] + model_repr = '[Point(x=1, y=2), Point(x=3, y=4), Point(x=5, y=6), Point(x=7, y=8)]' + assert repr(model) == model_repr + return model, model_repr + +@pytest.fixture +def form_word(bounding_box): + model = _models.FormWord(text="Word", bounding_box=bounding_box[0], confidence=0.5, page_number=1) + model_repr = "FormWord(text=Word, bounding_box={}, confidence=0.5, page_number=1)".format(bounding_box[1])[:1024] + assert repr(model) == model_repr + return model, model_repr + + +@pytest.fixture +def form_line(bounding_box, form_word): + model = _models.FormLine(text="Word Word", bounding_box=bounding_box[0], words=[form_word[0], form_word[0]], page_number=1) + model_repr = "FormLine(text=Word Word, bounding_box={}, words=[{}, {}], page_number=1)".format(bounding_box[1], form_word[1], form_word[1])[:1024] + assert repr(model) == model_repr + return model, model_repr + +@pytest.fixture +def form_table_cell(bounding_box, form_word): + model = _models.FormTableCell( + text="Cell", row_index=3, column_index=4, row_span=2, column_span=3, bounding_box=bounding_box[0], + confidence=0.7, is_header=True, is_footer=False, page_number=3, text_content=[form_word[0]] + ) + model_repr = "FormTableCell(text=Cell, row_index=3, column_index=4, row_span=2, column_span=3, bounding_box={}, confidence=0.7, " \ + "is_header=True, is_footer=False, page_number=3, text_content=[{}])".format(bounding_box[1], form_word[1])[:1024] + assert repr(model) == model_repr + return model, model_repr + +@pytest.fixture +def form_table(form_table_cell): + model = _models.FormTable(cells=[form_table_cell[0], form_table_cell[0]], row_count=3, column_count=4) + model_repr = "FormTable(cells=[{}, {}], row_count=3, column_count=4)".format(form_table_cell[1], form_table_cell[1])[:1024] + assert repr(model) == model_repr + return model, model_repr + +@pytest.fixture +def field_text(bounding_box, form_word, form_line): + model = _models.FieldText(page_number=1, text="This is text.", bounding_box=bounding_box[0], text_content=[form_word[0], form_line[0]]) + model_repr = "FieldText(page_number=1, text=This is text., bounding_box={}, text_content=[{}, {}])".format(bounding_box[1], form_word[1], form_line[1])[:1024] + assert repr(model) == model_repr + return model, model_repr + +@pytest.fixture +def form_field_two(field_text): + model = _models.FormField(label_data=field_text[0], value_data=field_text[0], name="form_field_two", value="value", confidence=0, page_number=1) + model_repr = "FormField(label_data={}, value_data={}, name=form_field_two, value='value', confidence=0, page_number=1)".format(field_text[1], field_text[1])[:1024] + assert repr(model) == model_repr + return model, model_repr + +@pytest.fixture +def form_field_one(field_text, form_field_two): + model = _models.FormField(label_data=field_text[0], value_data=field_text[0], name="form_field_one", value=form_field_two[0], confidence=1.0, page_number=5) + model_repr = "FormField(label_data={}, value_data={}, name=form_field_one, value={}, confidence=1.0, page_number=5)".format(field_text[1], field_text[1], form_field_two[1])[:1024] + assert repr(model) == model_repr + return model, model_repr + +@pytest.fixture +def page_range(): + model = _models.PageRange(first_page=1, last_page=100) + model_repr = "PageRange(first_page=1, last_page=100)" + assert repr(model) == model_repr + return model, model_repr + +@pytest.fixture +def form_page(form_table, form_line): + model = _models.FormPage(page_number=1, text_angle=180, width=5, height=5.5, unit=_models.LengthUnit.pixel, tables=[form_table[0]], lines=[form_line[0]]) + model_repr = "FormPage(page_number=1, text_angle=180, width=5, height=5.5, unit=pixel, tables=[{}], lines=[{}])".format( + form_table[1], form_line[1] + )[:1024] + assert repr(model) == model_repr + return model, model_repr + +@pytest.fixture +def us_receipt_type(): + model = _models.USReceiptType(type="Itemized", confidence=1.0) + model_repr = "USReceiptType(type=Itemized, confidence=1.0)" + assert repr(model) == model_repr + return model, model_repr + +@pytest.fixture +def us_receipt_item(form_field_two): + model = _models.USReceiptItem(name=form_field_two[0], quantity=form_field_two[0], price=form_field_two[0], total_price=form_field_two[0]) + model_repr = "USReceiptItem(name={}, quantity={}, price={}, total_price={})".format(form_field_two[1], form_field_two[1], form_field_two[1], form_field_two[1])[:1024] + assert repr(model) == model_repr + return model, model_repr + +@pytest.fixture +def custom_form_model_field(): + model = _models.CustomFormModelField(label="label", name="name", accuracy=0.99) + model_repr = "CustomFormModelField(label=label, name=name, accuracy=0.99)" + assert repr(model) == model_repr + return model, model_repr + +@pytest.fixture +def custom_form_sub_model(custom_form_model_field): + model = _models.CustomFormSubModel(accuracy=0.99, fields={"name": custom_form_model_field[0]}, form_type="Itemized") + model_repr = "CustomFormSubModel(accuracy=0.99, fields={{'name': {}}}, form_type=Itemized)".format(custom_form_model_field[1])[:1024] + assert repr(model) == model_repr + return model, model_repr + +@pytest.fixture +def form_recognizer_error(): + model = _models.FormRecognizerError(code=404, message="Resource Not Found") + model_repr = "FormRecognizerError(code=404, message=Resource Not Found)" + assert repr(model) == model_repr + return model, model_repr + +@pytest.fixture +def training_document_info(form_recognizer_error): + model = _models.TrainingDocumentInfo(document_name="document_name", status=_models.TrainingStatus.partially_succeeded, page_count=5, errors=[form_recognizer_error[0]]) + model_repr = "TrainingDocumentInfo(document_name=document_name, status=partiallySucceeded, page_count=5, errors=[{}])".format(form_recognizer_error[1])[:1024] + assert repr(model) == model_repr + return model, model_repr + + +class TestRepr(): + # Not inheriting form FormRecognizerTest because that doesn't allow me to define pytest fixtures in the same file + # Not worth moving pytest fixture definitions to conftest since all I would use is assertEqual and I can just use assert + def test_recognized_form(self, form_field_one, page_range, form_page, us_receipt_type, us_receipt_item): + model = _models.RecognizedForm(form_type="receipt", fields={"one": form_field_one[0]}, page_range=page_range[0], pages=[form_page[0]]) + model_repr = "RecognizedForm(form_type=receipt, fields={{'one': {}}}, page_range={}, pages=[{}])".format( + form_field_one[1], page_range[1], form_page[1] + )[:1024] + assert repr(model) == model_repr + + def test_us_receipt(self, form_field_one, form_field_two, us_receipt_type, us_receipt_item, page_range, form_page): + model = _models.USReceipt( + merchant_address=form_field_one[0], + merchant_name=form_field_two[0], + merchant_phone_number=form_field_one[0], + receipt_type=us_receipt_type[0], + receipt_items=[us_receipt_item[0], us_receipt_item[0]], + subtotal=form_field_two[0], + tax=form_field_one[0], + tip=form_field_two[0], + total=form_field_one[0], + transaction_date=form_field_two[0], + transaction_time=form_field_one[0], + fields={ + "one": form_field_one[0] + }, + page_range=page_range[0], + pages=[form_page[0]], + form_type="test", + receipt_locale="en-US" + ) + model_repr="USReceipt(merchant_address={}, merchant_name={}, merchant_phone_number={}, receipt_type={}, receipt_items=[{}, {}], subtotal={}, " \ + "tax={}, tip={}, total={}, transaction_date={}, transaction_time={}, fields={{'one': {}}}, page_range={}, pages=[{}], " \ + "form_type=test, receipt_locale=en-US)".format( + form_field_one[1], + form_field_two[1], + form_field_one[1], + us_receipt_type[1], + us_receipt_item[1], + us_receipt_item[1], + form_field_two[1], + form_field_one[1], + form_field_two[1], + form_field_one[1], + form_field_two[1], + form_field_one[1], + form_field_one[1], + page_range[1], + form_page[1] + )[:1024] + + + assert repr(model) == model_repr + + def test_custom_form_model(self, custom_form_sub_model, form_recognizer_error, training_document_info): + model = _models.CustomFormModel( + model_id=1, + status=_models.CustomFormModelStatus.creating, + created_on=datetime.datetime(1, 1, 1), + last_modified=datetime.datetime(1, 1, 1), + models=[custom_form_sub_model[0], custom_form_sub_model[0]], + errors=[form_recognizer_error[0]], + training_documents=[training_document_info[0], training_document_info[0]] + ) + + model_repr = "CustomFormModel(model_id=1, status=creating, created_on=0001-01-01 00:00:00, " \ + "last_modified=0001-01-01 00:00:00, models=[{}, {}], errors=[{}], training_documents=[{}, {}])".format( + custom_form_sub_model[1], custom_form_sub_model[1], form_recognizer_error[1], training_document_info[1], training_document_info[1] + )[:1024] + + assert repr(model) == model_repr + + def test_custom_form_model_info(self): + model = _models.CustomFormModelInfo( + model_id=1, status=_models.CustomFormModelStatus.ready, created_on=datetime.datetime(1, 1, 1), last_modified=datetime.datetime(1, 1, 1) + ) + model_repr = "CustomFormModelInfo(model_id=1, status=ready, created_on=0001-01-01 00:00:00, last_modified=0001-01-01 00:00:00)"[:1024] + assert repr(model) == model_repr + + def test_account_properties(self): + model = _models.AccountProperties(custom_model_count=100, custom_model_limit=1000) + model_repr = "AccountProperties(custom_model_count=100, custom_model_limit=1000)" + assert repr(model) == model_repr diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_training.py b/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_training.py index d5ec01631db8..06caeb8e2982 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_training.py +++ b/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_training.py @@ -10,7 +10,7 @@ from azure.ai.formrecognizer._generated.models import Model from azure.ai.formrecognizer._models import CustomFormModel from azure.ai.formrecognizer import FormTrainingClient -from testcase import FormRecognizerTest, GlobalFormRecognizerAccountPreparer, GlobalFormAndStorageAccountPreparer +from testcase import FormRecognizerTest, GlobalFormRecognizerAccountPreparer from testcase import GlobalTrainingAccountPreparer as _GlobalTrainingAccountPreparer @@ -25,7 +25,7 @@ def test_training_auth_bad_key(self, resource_group, location, form_recognizer_a with self.assertRaises(ClientAuthenticationError): poller = client.begin_train_model("xx") - @GlobalFormAndStorageAccountPreparer() + @GlobalFormRecognizerAccountPreparer() @GlobalTrainingAccountPreparer() def test_training(self, client, container_sas_url): @@ -48,7 +48,30 @@ def test_training(self, client, container_sas_url): self.assertIsNotNone(field.label) self.assertIsNotNone(field.name) - @GlobalFormAndStorageAccountPreparer() + @GlobalFormRecognizerAccountPreparer() + @GlobalTrainingAccountPreparer(multipage=True) + def test_training_multipage(self, client, container_sas_url): + + poller = client.begin_train_model(container_sas_url) + model = poller.result() + + self.assertIsNotNone(model.model_id) + self.assertIsNotNone(model.created_on) + self.assertIsNotNone(model.last_modified) + self.assertEqual(model.errors, []) + self.assertEqual(model.status, "ready") + for doc in model.training_documents: + self.assertIsNotNone(doc.document_name) + self.assertIsNotNone(doc.page_count) + self.assertEqual(doc.status, "succeeded") + self.assertEqual(doc.errors, []) + for sub in model.models: + self.assertIsNotNone(sub.form_type) + for key, field in sub.fields.items(): + self.assertIsNotNone(field.label) + self.assertIsNotNone(field.name) + + @GlobalFormRecognizerAccountPreparer() @GlobalTrainingAccountPreparer() def test_training_transform(self, client, container_sas_url): @@ -67,7 +90,26 @@ def callback(response): custom_model = raw_response[1] self.assertModelTransformCorrect(custom_model, raw_model, unlabeled=True) - @GlobalFormAndStorageAccountPreparer() + @GlobalFormRecognizerAccountPreparer() + @GlobalTrainingAccountPreparer(multipage=True) + def test_training_multipage_transform(self, client, container_sas_url): + + raw_response = [] + + def callback(response): + raw_model = client._client._deserialize(Model, response) + custom_model = CustomFormModel._from_generated(raw_model) + raw_response.append(raw_model) + raw_response.append(custom_model) + + poller = client.begin_train_model(container_sas_url, cls=callback) + model = poller.result() + + raw_model = raw_response[0] + custom_model = raw_response[1] + self.assertModelTransformCorrect(custom_model, raw_model, unlabeled=True) + + @GlobalFormRecognizerAccountPreparer() @GlobalTrainingAccountPreparer() def test_training_with_labels(self, client, container_sas_url): @@ -86,11 +128,36 @@ def test_training_with_labels(self, client, container_sas_url): self.assertEqual(doc.errors, []) for sub in model.models: self.assertIsNotNone(sub.form_type) + self.assertIsNotNone(sub.accuracy) for key, field in sub.fields.items(): self.assertIsNotNone(field.accuracy) self.assertIsNotNone(field.name) - @GlobalFormAndStorageAccountPreparer() + @GlobalFormRecognizerAccountPreparer() + @GlobalTrainingAccountPreparer(multipage=True) + def test_training_multipage_with_labels(self, client, container_sas_url): + + poller = client.begin_train_model(container_sas_url, use_labels=True) + model = poller.result() + + self.assertIsNotNone(model.model_id) + self.assertIsNotNone(model.created_on) + self.assertIsNotNone(model.last_modified) + self.assertEqual(model.errors, []) + self.assertEqual(model.status, "ready") + for doc in model.training_documents: + self.assertIsNotNone(doc.document_name) + self.assertIsNotNone(doc.page_count) + self.assertEqual(doc.status, "succeeded") + self.assertEqual(doc.errors, []) + for sub in model.models: + self.assertIsNotNone(sub.form_type) + self.assertIsNotNone(sub.accuracy) + for key, field in sub.fields.items(): + self.assertIsNotNone(field.accuracy) + self.assertIsNotNone(field.name) + + @GlobalFormRecognizerAccountPreparer() @GlobalTrainingAccountPreparer() def test_training_with_labels_transform(self, client, container_sas_url): @@ -109,26 +176,39 @@ def callback(response): custom_model = raw_response[1] self.assertModelTransformCorrect(custom_model, raw_model) - @GlobalFormAndStorageAccountPreparer() + @GlobalFormRecognizerAccountPreparer() + @GlobalTrainingAccountPreparer(multipage=True) + def test_train_multipage_w_labels_transform(self, client, container_sas_url): + + raw_response = [] + + def callback(response): + raw_model = client._client._deserialize(Model, response) + custom_model = CustomFormModel._from_generated(raw_model) + raw_response.append(raw_model) + raw_response.append(custom_model) + + poller = client.begin_train_model(container_sas_url, use_labels=True, cls=callback) + model = poller.result() + + raw_model = raw_response[0] + custom_model = raw_response[1] + self.assertModelTransformCorrect(custom_model, raw_model) + + @GlobalFormRecognizerAccountPreparer() @GlobalTrainingAccountPreparer() def test_training_with_files_filter(self, client, container_sas_url): poller = client.begin_train_model(container_sas_url, include_sub_folders=True) model = poller.result() - - self.assertIsNotNone(model.model_id) - self.assertIsNotNone(model.created_on) - self.assertIsNotNone(model.last_modified) - self.assertEqual(model.errors, []) - self.assertEqual(model.status, "ready") - for doc in model.training_documents: - self.assertIsNotNone(doc.document_name) - self.assertIsNotNone(doc.page_count) - self.assertEqual(doc.status, "succeeded") - self.assertEqual(doc.errors, []) + self.assertEqual(len(model.training_documents), 6) self.assertEqual(model.training_documents[-1].document_name, "subfolder/Form_6.jpg") # we traversed subfolders - for sub in model.models: - self.assertIsNotNone(sub.form_type) - for key, field in sub.fields.items(): - self.assertIsNotNone(field.label) - self.assertIsNotNone(field.name) + + poller = client.begin_train_model(container_sas_url, prefix="subfolder", include_sub_folders=True) + model = poller.result() + self.assertEqual(len(model.training_documents), 1) + self.assertEqual(model.training_documents[0].document_name, "subfolder/Form_6.jpg") # we filtered for only subfolders + + poller = client.begin_train_model(container_sas_url, prefix="xxx") + model = poller.result() + self.assertEqual(model.status, "invalid") # prefix doesn't include any files so training fails diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_training_async.py b/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_training_async.py index f0b838c403d2..bcf862607de3 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_training_async.py +++ b/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_training_async.py @@ -10,7 +10,7 @@ from azure.ai.formrecognizer._generated.models import Model from azure.ai.formrecognizer._models import CustomFormModel from azure.ai.formrecognizer.aio import FormTrainingClient -from testcase import FormRecognizerTest, GlobalFormRecognizerAccountPreparer, GlobalFormAndStorageAccountPreparer +from testcase import FormRecognizerTest, GlobalFormRecognizerAccountPreparer from testcase import GlobalTrainingAccountPreparer as _GlobalTrainingAccountPreparer from asynctestcase import AsyncFormRecognizerTest @@ -25,7 +25,7 @@ async def test_training_auth_bad_key(self, resource_group, location, form_recogn with self.assertRaises(ClientAuthenticationError): result = await client.train_model("xx") - @GlobalFormAndStorageAccountPreparer() + @GlobalFormRecognizerAccountPreparer() @GlobalTrainingAccountPreparer() async def test_training(self, client, container_sas_url): @@ -47,7 +47,29 @@ async def test_training(self, client, container_sas_url): self.assertIsNotNone(field.label) self.assertIsNotNone(field.name) - @GlobalFormAndStorageAccountPreparer() + @GlobalFormRecognizerAccountPreparer() + @GlobalTrainingAccountPreparer(multipage=True) + async def test_training_multipage(self, client, container_sas_url): + + model = await client.train_model(container_sas_url) + + self.assertIsNotNone(model.model_id) + self.assertIsNotNone(model.created_on) + self.assertIsNotNone(model.last_modified) + self.assertEqual(model.errors, []) + self.assertEqual(model.status, "ready") + for doc in model.training_documents: + self.assertIsNotNone(doc.document_name) + self.assertIsNotNone(doc.page_count) + self.assertEqual(doc.status, "succeeded") + self.assertEqual(doc.errors, []) + for sub in model.models: + self.assertIsNotNone(sub.form_type) + for key, field in sub.fields.items(): + self.assertIsNotNone(field.label) + self.assertIsNotNone(field.name) + + @GlobalFormRecognizerAccountPreparer() @GlobalTrainingAccountPreparer() async def test_training_transform(self, client, container_sas_url): @@ -65,7 +87,25 @@ def callback(response): custom_model = raw_response[1] self.assertModelTransformCorrect(custom_model, raw_model, unlabeled=True) - @GlobalFormAndStorageAccountPreparer() + @GlobalFormRecognizerAccountPreparer() + @GlobalTrainingAccountPreparer(multipage=True) + async def test_training_multipage_transform(self, client, container_sas_url): + + raw_response = [] + + def callback(response): + raw_model = client._client._deserialize(Model, response) + custom_model = CustomFormModel._from_generated(raw_model) + raw_response.append(raw_model) + raw_response.append(custom_model) + + model = await client.train_model(container_sas_url, cls=callback) + + raw_model = raw_response[0] + custom_model = raw_response[1] + self.assertModelTransformCorrect(custom_model, raw_model, unlabeled=True) + + @GlobalFormRecognizerAccountPreparer() @GlobalTrainingAccountPreparer() async def test_training_with_labels(self, client, container_sas_url): @@ -87,7 +127,30 @@ async def test_training_with_labels(self, client, container_sas_url): self.assertIsNotNone(field.accuracy) self.assertIsNotNone(field.name) - @GlobalFormAndStorageAccountPreparer() + @GlobalFormRecognizerAccountPreparer() + @GlobalTrainingAccountPreparer(multipage=True) + async def test_training_multipage_with_labels(self, client, container_sas_url): + + model = await client.train_model(container_sas_url, use_labels=True) + + self.assertIsNotNone(model.model_id) + self.assertIsNotNone(model.created_on) + self.assertIsNotNone(model.last_modified) + self.assertEqual(model.errors, []) + self.assertEqual(model.status, "ready") + for doc in model.training_documents: + self.assertIsNotNone(doc.document_name) + self.assertIsNotNone(doc.page_count) + self.assertEqual(doc.status, "succeeded") + self.assertEqual(doc.errors, []) + for sub in model.models: + self.assertIsNotNone(sub.form_type) + self.assertIsNotNone(sub.accuracy) + for key, field in sub.fields.items(): + self.assertIsNotNone(field.accuracy) + self.assertIsNotNone(field.name) + + @GlobalFormRecognizerAccountPreparer() @GlobalTrainingAccountPreparer() async def test_training_with_labels_transform(self, client, container_sas_url): @@ -105,7 +168,24 @@ def callback(response): custom_model = raw_response[1] self.assertModelTransformCorrect(custom_model, raw_model) - @GlobalFormAndStorageAccountPreparer() + @GlobalFormRecognizerAccountPreparer() + @GlobalTrainingAccountPreparer(multipage=True) + async def test_train_multipage_w_lbls_trnsfrm(self, client, container_sas_url): + + raw_response = [] + + def callback(response): + raw_model = client._client._deserialize(Model, response) + custom_model = CustomFormModel._from_generated(raw_model) + raw_response.append(raw_model) + raw_response.append(custom_model) + + model = await client.train_model(container_sas_url, use_labels=True, cls=callback) + raw_model = raw_response[0] + custom_model = raw_response[1] + self.assertModelTransformCorrect(custom_model, raw_model) + + @GlobalFormRecognizerAccountPreparer() @GlobalTrainingAccountPreparer() async def test_training_with_files_filter(self, client, container_sas_url): diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/testcase.py b/sdk/formrecognizer/azure-ai-formrecognizer/tests/testcase.py index aa0041b558af..df55afcfcf62 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/tests/testcase.py +++ b/sdk/formrecognizer/azure-ai-formrecognizer/tests/testcase.py @@ -6,12 +6,11 @@ # license information. # -------------------------------------------------------------------------- -from datetime import datetime, timedelta + import os import pytest import re from azure.core.credentials import AzureKeyCredential -from azure.storage.blob import ContainerSasPermissions, generate_container_sas, ContainerClient from devtools_testutils import ( AzureTestCase, AzureMgmtPreparer, @@ -19,8 +18,7 @@ ResourceGroupPreparer, ) from devtools_testutils.cognitiveservices_testcase import CognitiveServicesAccountPreparer -from devtools_testutils.storage_testcase import StorageAccountPreparer -from azure_devtools.scenario_tests import ReplayableTest +from azure_devtools.scenario_tests import ReplayableTest, AzureTestError class FormRecognizerTest(AzureTestCase): @@ -33,6 +31,7 @@ def __init__(self, method_name): self.receipt_url_png = "https://raw.githubusercontent.com/Azure/azure-sdk-for-python/master/sdk/formrecognizer/azure-ai-formrecognizer/tests/sample_forms/receipt/contoso-receipt.png" self.invoice_url_pdf = "https://raw.githubusercontent.com/Azure/azure-sdk-for-python/master/sdk/formrecognizer/azure-ai-formrecognizer/tests/sample_forms/forms/Invoice_1.pdf" self.form_url_jpg = "https://raw.githubusercontent.com/Azure/azure-sdk-for-python/master/sdk/formrecognizer/azure-ai-formrecognizer/tests/sample_forms/forms/Form_1.jpg" + self.multipage_url_pdf = "https://raw.githubusercontent.com/Azure/azure-sdk-for-python/master/sdk/formrecognizer/azure-ai-formrecognizer/tests/sample_forms/forms/multipage_invoice1.pdf" # file stream samples self.receipt_jpg = os.path.abspath(os.path.join(os.path.abspath(__file__), "..", "./sample_forms/receipt/contoso-allinone.jpg")) @@ -40,6 +39,8 @@ def __init__(self, method_name): self.invoice_pdf = os.path.abspath(os.path.join(os.path.abspath(__file__), "..", "./sample_forms/forms/Invoice_1.pdf")) self.invoice_tiff = os.path.abspath(os.path.join(os.path.abspath(__file__), "..", "./sample_forms/forms/Invoice_1.tiff")) self.form_jpg = os.path.abspath(os.path.join(os.path.abspath(__file__), "..", "./sample_forms/forms/Form_1.jpg")) + self.blank_pdf = os.path.abspath(os.path.join(os.path.abspath(__file__), "..", "./sample_forms/forms/blank.pdf")) + self.multipage_invoice_pdf = os.path.abspath(os.path.join(os.path.abspath(__file__), "..", "./sample_forms/forms/multipage_invoice1.pdf")) self.unsupported_content_py = os.path.abspath(os.path.join(os.path.abspath(__file__), "..", "./conftest.py")) def assertModelTransformCorrect(self, model, actual, unlabeled=False): @@ -71,14 +72,18 @@ def assertModelTransformCorrect(self, model, actual, unlabeled=False): self.assertEqual(model.models[0].form_type, "form-"+model.model_id) self.assertEqual(model.models[0].accuracy, actual.train_result.average_model_accuracy) - def assertFormPagesTransformCorrect(self, pages, actual_read, page_result=None): + def assertFormPagesTransformCorrect(self, pages, actual_read, page_result=None, **kwargs): for page, actual_page in zip(pages, actual_read): + if hasattr(page, "pages"): # this is necessary for how unlabeled forms are structured + page = page.pages[0] self.assertEqual(page.page_number, actual_page.page) self.assertEqual(page.text_angle, actual_page.angle) self.assertEqual(page.width, actual_page.width) self.assertEqual(page.height, actual_page.height) self.assertEqual(page.unit, actual_page.unit) + if not page.lines and not actual_page.lines: + continue for p, a in zip(page.lines, actual_page.lines): self.assertEqual(p.text, a.text) self.assertBoundingBoxTransformCorrect(p.bounding_box, a.bounding_box) @@ -89,7 +94,9 @@ def assertFormPagesTransformCorrect(self, pages, actual_read, page_result=None): if page_result: for page, actual_page in zip(pages, page_result): - self.assertTablesTransformCorrect(page.tables, actual_page.tables, actual_read) + if hasattr(page, "pages"): # this is necessary for how unlabeled forms are structured + page = page.pages[0] + self.assertTablesTransformCorrect(page.tables, actual_page.tables, actual_read, **kwargs) def assertBoundingBoxTransformCorrect(self, box, actual): if box is None and actual is None: @@ -145,14 +152,14 @@ def assertLabeledFormFieldDictTransformCorrect(self, form_fields, actual_fields, read_results ) - def assertUnlabeledFormFieldDictTransformCorrect(self, form_fields, actual_fields, read_results=None): + def assertUnlabeledFormFieldDictTransformCorrect(self, form_fields, actual_fields, read_results=None, **kwargs): if actual_fields is None: return for idx, a in enumerate(actual_fields): self.assertEqual(a.confidence, form_fields["field-"+str(idx)].confidence if a.confidence is not None else 1.0) self.assertEqual(a.key.text, form_fields["field-"+str(idx)].label_data.text) self.assertBoundingBoxTransformCorrect(form_fields["field-"+str(idx)].label_data.bounding_box, a.key.bounding_box) - if read_results: + if read_results and not kwargs.get("bug_skip_text_content", False): self.assertTextContentTransformCorrect( form_fields["field-"+str(idx)].label_data.text_content, a.key.elements, @@ -160,7 +167,7 @@ def assertUnlabeledFormFieldDictTransformCorrect(self, form_fields, actual_field ) self.assertEqual(a.value.text, form_fields["field-" + str(idx)].value_data.text) self.assertBoundingBoxTransformCorrect(form_fields["field-" + str(idx)].value_data.bounding_box, a.value.bounding_box) - if read_results: + if read_results and not kwargs.get("bug_skip_text_content", False): self.assertTextContentTransformCorrect( form_fields["field-"+str(idx)].value_data.text_content, a.value.elements, @@ -204,7 +211,7 @@ def assertReceiptItemsTransformCorrect(self, items, actual_items, read_results=N self.assertFormFieldTransformCorrect(r.total_price, a.value_object.get("TotalPrice"), read_results) self.assertFormFieldTransformCorrect(r.price, a.value_object.get("Price"), read_results) - def assertTablesTransformCorrect(self, layout, actual_layout, read_results=None): + def assertTablesTransformCorrect(self, layout, actual_layout, read_results=None, **kwargs): for table, actual_table in zip(layout, actual_layout): self.assertEqual(table.row_count, actual_table.rows) self.assertEqual(table.column_count, actual_table.columns) @@ -218,7 +225,8 @@ def assertTablesTransformCorrect(self, layout, actual_layout, read_results=None) self.assertEqual(cell.is_header, actual_cell.is_header if actual_cell.is_header is not None else False) self.assertEqual(cell.is_footer, actual_cell.is_footer if actual_cell.is_footer is not None else False) self.assertBoundingBoxTransformCorrect(cell.bounding_box, actual_cell.bounding_box) - self.assertTextContentTransformCorrect(cell.text_content, actual_cell.elements, read_results) + if not kwargs.get("bug_skip_text_content", False): + self.assertTextContentTransformCorrect(cell.text_content, actual_cell.elements, read_results) def assertReceiptItemsHasValues(self, items, page_number, include_text_content): for item in items: @@ -345,16 +353,43 @@ def __init__(self, client_cls, client_kwargs={}, **kwargs): ) self.client_kwargs = client_kwargs self.client_cls = client_cls + self.multipage_test = kwargs.get("multipage", False) + self.need_blob_sas_url = kwargs.get("blob_sas_url", False) + + def _load_settings(self): + try: + from devtools_testutils import mgmt_settings_real as real_settings + return real_settings + except ImportError: + return False + + def get_settings_value(self, key): + key_value = os.environ.get("AZURE_"+key, None) + self._real_settings = self._load_settings() + + if key_value and self._real_settings and getattr(self._real_settings, key) != key_value: + raise ValueError( + "You have both AZURE_{key} env variable and mgmt_settings_real.py for {key} to difference values" + .format(key=key)) + + if not key_value: + try: + key_value = getattr(self._real_settings, key) + except Exception: + print("Could not get {}".format(key)) + raise + return key_value def create_resource(self, name, **kwargs): - client, container_sas_url = self.create_form_client_and_container_sas_url(**kwargs) - if self.is_live: - self.test_class_instance.scrubber.register_name_pair( - container_sas_url, - "containersasurl" - ) - return {"client": client, - "container_sas_url": container_sas_url} + client, container_sas_url, blob_sas_url = self.create_form_client_and_container_sas_url(**kwargs) + + if self.need_blob_sas_url: + return {"client": client, + "container_sas_url": container_sas_url, + "blob_sas_url": blob_sas_url} + else: + return {"client": client, + "container_sas_url": container_sas_url} def create_form_client_and_container_sas_url(self, **kwargs): form_recognizer_account = self.client_kwargs.pop("form_recognizer_account", None) @@ -365,65 +400,34 @@ def create_form_client_and_container_sas_url(self, **kwargs): if form_recognizer_account_key is None: form_recognizer_account_key = kwargs.pop("form_recognizer_account_key") - storage_account = self.client_kwargs.pop("storage_account", None) - if storage_account is None: - storage_account = kwargs.pop("storage_account") - - storage_account_key = self.client_kwargs.pop("storage_account_key", None) - if storage_account_key is None: - storage_account_key = kwargs.pop("storage_account_key") - if self.is_live: - container_name = self.resource_random_name.replace("_", "-") # container names can't have underscore - container_client = ContainerClient(storage_account.primary_endpoints.blob, container_name, - storage_account_key) - container_client.create_container() - - training_path = os.path.abspath(os.path.join(os.path.abspath(__file__), "..", "./sample_forms/training/")) - for path, folder, files in os.walk(training_path): - for document in files: - with open(os.path.join(path, document), "rb") as data: - if document == "Form_6.jpg": - document = "subfolder/Form_6.jpg" # create virtual subfolder in container - container_client.upload_blob(name=document, data=data) - - sas_token = generate_container_sas( - storage_account.name, - container_name, - storage_account_key, - permission=ContainerSasPermissions.from_string("rl"), - expiry=datetime.utcnow() + timedelta(hours=1) - ) + if self.multipage_test: + container_sas_url = self.get_settings_value("FORM_RECOGNIZER_MULTIPAGE_STORAGE_CONTAINER_SAS_URL") + url = container_sas_url.split("multipage-training-data") + url[0] += "multipage-training-data/multipage_invoice1.pdf" + blob_sas_url = url[0] + url[1] + self.test_class_instance.scrubber.register_name_pair( + blob_sas_url, + "blob_sas_url" + ) - container_sas_url = storage_account.primary_endpoints.blob + container_name + "?" + sas_token + else: + container_sas_url = self.get_settings_value("FORM_RECOGNIZER_STORAGE_CONTAINER_SAS_URL") + blob_sas_url = None + self.test_class_instance.scrubber.register_name_pair( + container_sas_url, + "containersasurl" + ) else: container_sas_url = "containersasurl" + blob_sas_url = "blob_sas_url" return self.client_cls( form_recognizer_account, AzureKeyCredential(form_recognizer_account_key), **self.client_kwargs - ), container_sas_url - - -class GlobalFormAndStorageAccountPreparer(AzureMgmtPreparer): - def __init__(self): - super(GlobalFormAndStorageAccountPreparer, self).__init__( - name_prefix='', - random_name_length=42 - ) - - def create_resource(self, name, **kwargs): - form_recognizer_and_storage_account = FormRecognizerTest._FORM_RECOGNIZER_ACCOUNT - return { - 'location': 'westus2', - 'resource_group': FormRecognizerTest._RESOURCE_GROUP, - 'form_recognizer_account': form_recognizer_and_storage_account, - 'form_recognizer_account_key': FormRecognizerTest._FORM_RECOGNIZER_KEY, - 'storage_account': FormRecognizerTest._STORAGE_ACCOUNT, - 'storage_account_key': FormRecognizerTest._STORAGE_KEY - } + ), container_sas_url, blob_sas_url @pytest.fixture(scope="session") @@ -437,41 +441,6 @@ def form_recognizer_account(): location="westus" ) - try: - rg_name, rg_kwargs = rg_preparer._prepare_create_resource(test_case) - FormRecognizerTest._RESOURCE_GROUP = rg_kwargs['resource_group'] - try: - form_recognizer_name, form_recognizer_kwargs = form_recognizer_preparer._prepare_create_resource(test_case, **rg_kwargs) - FormRecognizerTest._FORM_RECOGNIZER_ACCOUNT = form_recognizer_kwargs['cognitiveservices_account'] - FormRecognizerTest._FORM_RECOGNIZER_KEY = form_recognizer_kwargs['cognitiveservices_account_key'] - yield - finally: - form_recognizer_preparer.remove_resource( - form_recognizer_name, - resource_group=rg_kwargs['resource_group'] - ) - FormRecognizerTest._FORM_RECOGNIZER_ACCOUNT = None - FormRecognizerTest._FORM_RECOGNIZER_KEY = None - finally: - rg_preparer.remove_resource(rg_name) - FormRecognizerTest._RESOURCE_GROUP = None - - -@pytest.fixture(scope="session") -def form_recognizer_and_storage_account(): - test_case = AzureTestCase("__init__") - rg_preparer = ResourceGroupPreparer(random_name_enabled=True, name_prefix='pycog') - form_recognizer_preparer = CognitiveServicesAccountPreparer( - random_name_enabled=True, - kind="formrecognizer", - name_prefix='pycog', - location="westus" - ) - storage_account_preparer = StorageAccountPreparer( - random_name_enabled=True, - name_prefix='pycog' - ) - try: rg_name, rg_kwargs = rg_preparer._prepare_create_resource(test_case) FormRecognizerTest._RESOURCE_GROUP = rg_kwargs['resource_group'] @@ -480,13 +449,6 @@ def form_recognizer_and_storage_account(): test_case, **rg_kwargs) FormRecognizerTest._FORM_RECOGNIZER_ACCOUNT = form_recognizer_kwargs['cognitiveservices_account'] FormRecognizerTest._FORM_RECOGNIZER_KEY = form_recognizer_kwargs['cognitiveservices_account_key'] - - storage_name, storage_kwargs = storage_account_preparer._prepare_create_resource(test_case, **rg_kwargs) - storage_account = storage_kwargs['storage_account'] - storage_key = storage_kwargs['storage_account_key'] - - FormRecognizerTest._STORAGE_ACCOUNT = storage_account - FormRecognizerTest._STORAGE_KEY = storage_key yield finally: form_recognizer_preparer.remove_resource( @@ -495,12 +457,7 @@ def form_recognizer_and_storage_account(): ) FormRecognizerTest._FORM_RECOGNIZER_ACCOUNT = None FormRecognizerTest._FORM_RECOGNIZER_KEY = None - storage_account_preparer.remove_resource( - storage_name, - resource_group=rg_kwargs['resource_group'] - ) - FormRecognizerTest._STORAGE_ACCOUNT = None - FormRecognizerTest._STORAGE_KEY = None + finally: rg_preparer.remove_resource(rg_name) FormRecognizerTest._RESOURCE_GROUP = None diff --git a/sdk/formrecognizer/tests.yml b/sdk/formrecognizer/tests.yml index fbf831043a58..100236abaec5 100644 --- a/sdk/formrecognizer/tests.yml +++ b/sdk/formrecognizer/tests.yml @@ -17,6 +17,8 @@ jobs: AZURE_TENANT_ID: $(aad-azure-sdk-test-tenant-id) AZURE_CLIENT_SECRET: $(aad-azure-sdk-test-client-secret) AZURE_CLIENT_ID: $(aad-azure-sdk-test-client-id) + AZURE_FORM_RECOGNIZER_STORAGE_CONTAINER_SAS_URL: $(python-formrecognizer-test-storage-sas-url) + AZURE_FORM_RECOGNIZER_MULTIPAGE_STORAGE_CONTAINER_SAS_URL: $(python-formrecognizer-test-storage-multipage-sas-url) TEST_MODE: 'RunLiveNoRecord' AZURE_SKIP_LIVE_RECORDING: 'True' AZURE_TEST_RUN_LIVE: 'true' diff --git a/sdk/hanaonazure/azure-mgmt-hanaonazure/tests/recordings/test_azure_mgmt_hanaonazure.test_hanainstance_get.yaml b/sdk/hanaonazure/azure-mgmt-hanaonazure/tests/recordings/test_azure_mgmt_hanaonazure.test_hanainstance_get.yaml index d9e643a2b78c..d7fe594ea623 100644 --- a/sdk/hanaonazure/azure-mgmt-hanaonazure/tests/recordings/test_azure_mgmt_hanaonazure.test_hanainstance_get.yaml +++ b/sdk/hanaonazure/azure-mgmt-hanaonazure/tests/recordings/test_azure_mgmt_hanaonazure.test_hanainstance_get.yaml @@ -6,7 +6,7 @@ interactions: Accept-Encoding: ['gzip, deflate'] Connection: [keep-alive] Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Linux-4.4.0-109-generic-x86_64-with-Ubuntu-16.04-xenial) + User-Agent: [python/3.5.2 (Linux-4.4.0-109-generic-x86_64-with-Ubuntu-18.04-bionic) requests/2.18.4 msrest/0.4.25 msrest_azure/0.4.20 azure-mgmt-hanaonazure/0.1.0 Azure-SDK-For-Python] accept-language: [en-US] diff --git a/sdk/hanaonazure/azure-mgmt-hanaonazure/tests/recordings/test_azure_mgmt_hanaonazure.test_hanainstance_list.yaml b/sdk/hanaonazure/azure-mgmt-hanaonazure/tests/recordings/test_azure_mgmt_hanaonazure.test_hanainstance_list.yaml index 51e8e95f25ed..59cdca1fdb8f 100644 --- a/sdk/hanaonazure/azure-mgmt-hanaonazure/tests/recordings/test_azure_mgmt_hanaonazure.test_hanainstance_list.yaml +++ b/sdk/hanaonazure/azure-mgmt-hanaonazure/tests/recordings/test_azure_mgmt_hanaonazure.test_hanainstance_list.yaml @@ -6,7 +6,7 @@ interactions: Accept-Encoding: ['gzip, deflate'] Connection: [keep-alive] Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Linux-4.4.0-109-generic-x86_64-with-Ubuntu-16.04-xenial) + User-Agent: [python/3.5.2 (Linux-4.4.0-109-generic-x86_64-with-Ubuntu-18.04-bionic) requests/2.18.4 msrest/0.4.25 msrest_azure/0.4.20 azure-mgmt-hanaonazure/0.1.0 Azure-SDK-For-Python] accept-language: [en-US] diff --git a/sdk/hanaonazure/azure-mgmt-hanaonazure/tests/recordings/test_azure_mgmt_hanaonazure.test_hanainstance_list_by_resource_group.yaml b/sdk/hanaonazure/azure-mgmt-hanaonazure/tests/recordings/test_azure_mgmt_hanaonazure.test_hanainstance_list_by_resource_group.yaml index e170c88267c8..aa523e4f3091 100644 --- a/sdk/hanaonazure/azure-mgmt-hanaonazure/tests/recordings/test_azure_mgmt_hanaonazure.test_hanainstance_list_by_resource_group.yaml +++ b/sdk/hanaonazure/azure-mgmt-hanaonazure/tests/recordings/test_azure_mgmt_hanaonazure.test_hanainstance_list_by_resource_group.yaml @@ -6,7 +6,7 @@ interactions: Accept-Encoding: ['gzip, deflate'] Connection: [keep-alive] Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.2 (Linux-4.4.0-109-generic-x86_64-with-Ubuntu-16.04-xenial) + User-Agent: [python/3.5.2 (Linux-4.4.0-109-generic-x86_64-with-Ubuntu-18.04-bionic) requests/2.18.4 msrest/0.4.25 msrest_azure/0.4.20 azure-mgmt-hanaonazure/0.1.0 Azure-SDK-For-Python] accept-language: [en-US] diff --git a/sdk/identity/azure-identity/CHANGELOG.md b/sdk/identity/azure-identity/CHANGELOG.md index 78bdc2c21423..efb961941819 100644 --- a/sdk/identity/azure-identity/CHANGELOG.md +++ b/sdk/identity/azure-identity/CHANGELOG.md @@ -1,7 +1,22 @@ # Release History ## 1.4.0b3 (Unreleased) - +- First preview of new API for authenticating users with `DeviceCodeCredential` + and `InteractiveBrowserCredential` + - new method `authenticate` interactively authenticates a user, returns a + serializable `AuthenticationRecord` + - new constructor keyword arguments + - `authentication_record` enables initializing a credential with an + `AuthenticationRecord` from a prior authentication + - `disable_automatic_authentication=True` configures the credential to raise + `AuthenticationRequiredError` when interactive authentication is necessary + to acquire a token rather than immediately begin that authentication + - `enable_persistent_cache=True` configures these credentials to use a + persistent cache on supported platforms (in this release, Windows only). + By default they cache in memory only. + +- Now `DefaultAzureCredential` can authenticate with the identity signed in to Visual +Studio Code's Azure extension. ([#10472](https://github.com/Azure/azure-sdk-for-python/issues/10472)) ## 1.4.0b2 (2020-04-06) - After an instance of `DefaultAzureCredential` successfully authenticates, it diff --git a/sdk/identity/azure-identity/azure/identity/__init__.py b/sdk/identity/azure-identity/azure/identity/__init__.py index 7648a37ffa19..3fbc78c57bfa 100644 --- a/sdk/identity/azure-identity/azure/identity/__init__.py +++ b/sdk/identity/azure-identity/azure/identity/__init__.py @@ -4,7 +4,8 @@ # ------------------------------------ """Credentials for Azure SDK clients.""" -from ._exceptions import CredentialUnavailableError +from ._auth_record import AuthenticationRecord +from ._exceptions import AuthenticationRequiredError, CredentialUnavailableError from ._constants import KnownAuthorities from ._credentials import ( AuthorizationCodeCredential, @@ -22,6 +23,8 @@ __all__ = [ + "AuthenticationRecord", + "AuthenticationRequiredError", "AuthorizationCodeCredential", "CertificateCredential", "ChainedTokenCredential", diff --git a/sdk/identity/azure-identity/azure/identity/_auth_record.py b/sdk/identity/azure-identity/azure/identity/_auth_record.py new file mode 100644 index 000000000000..968e5e8a5588 --- /dev/null +++ b/sdk/identity/azure-identity/azure/identity/_auth_record.py @@ -0,0 +1,72 @@ +# ------------------------------------ +# Copyright (c) Microsoft Corporation. +# Licensed under the MIT License. +# ------------------------------------ +import json + + +class AuthenticationRecord(object): + """A record which can initialize :class:`DeviceCodeCredential` or :class:`InteractiveBrowserCredential`""" + + def __init__(self, tenant_id, client_id, authority, home_account_id, username): + # type: (str, str, str, str, str) -> None + self._authority = authority + self._client_id = client_id + self._home_account_id = home_account_id + self._tenant_id = tenant_id + self._username = username + + @property + def authority(self): + # type: () -> str + return self._authority + + @property + def client_id(self): + # type: () -> str + return self._client_id + + @property + def home_account_id(self): + # type: () -> str + return self._home_account_id + + @property + def tenant_id(self): + # type: () -> str + return self._tenant_id + + @property + def username(self): + # type: () -> str + """The authenticated user's username""" + return self._username + + @classmethod + def deserialize(cls, json_string): + # type: (str) -> AuthenticationRecord + """Deserialize a record from JSON""" + + deserialized = json.loads(json_string) + + return cls( + authority=deserialized["authority"], + client_id=deserialized["client_id"], + home_account_id=deserialized["home_account_id"], + tenant_id=deserialized["tenant_id"], + username=deserialized["username"], + ) + + def serialize(self): + # type: () -> str + """Serialize the record to JSON""" + + record = { + "authority": self._authority, + "client_id": self._client_id, + "home_account_id": self._home_account_id, + "tenant_id": self._tenant_id, + "username": self._username, + } + + return json.dumps(record) diff --git a/sdk/identity/azure-identity/azure/identity/_authn_client.py b/sdk/identity/azure-identity/azure/identity/_authn_client.py index a45eb49a81a2..2b165d0a0a52 100644 --- a/sdk/identity/azure-identity/azure/identity/_authn_client.py +++ b/sdk/identity/azure-identity/azure/identity/_authn_client.py @@ -23,7 +23,7 @@ ) from azure.core.pipeline.transport import RequestsTransport, HttpRequest from ._constants import AZURE_CLI_CLIENT_ID -from ._internal import get_default_authority +from ._internal import get_default_authority, normalize_authority from ._internal.user_agent import USER_AGENT try: @@ -62,8 +62,8 @@ def __init__(self, endpoint=None, authority=None, tenant=None, **kwargs): # pyl else: if not tenant: raise ValueError("'tenant' is required") - authority = authority or get_default_authority() - self._auth_url = "https://" + "/".join((authority.strip("/"), tenant.strip("/"), "oauth2/v2.0/token")) + authority = normalize_authority(authority) if authority else get_default_authority() + self._auth_url = "/".join((authority, tenant.strip("/"), "oauth2/v2.0/token")) self._cache = kwargs.get("cache") or TokenCache() # type: TokenCache @property diff --git a/sdk/identity/azure-identity/azure/identity/_constants.py b/sdk/identity/azure-identity/azure/identity/_constants.py index 373f4b2844b4..a47ebdeb9920 100644 --- a/sdk/identity/azure-identity/azure/identity/_constants.py +++ b/sdk/identity/azure-identity/azure/identity/_constants.py @@ -5,6 +5,8 @@ AZURE_CLI_CLIENT_ID = "04b07795-8ddb-461a-bbee-02f9e1bf7b46" +AZURE_VSCODE_CLIENT_ID = "aebc6443-996d-45c2-90f0-388ff96faa56" +VSCODE_CREDENTIALS_SECTION = "VS Code Azure" class KnownAuthorities: diff --git a/sdk/identity/azure-identity/azure/identity/_credentials/browser.py b/sdk/identity/azure-identity/azure/identity/_credentials/browser.py index b01abef7d714..cec00aaec07d 100644 --- a/sdk/identity/azure-identity/azure/identity/_credentials/browser.py +++ b/sdk/identity/azure-identity/azure/identity/_credentials/browser.py @@ -3,16 +3,14 @@ # Licensed under the MIT License. # ------------------------------------ import socket -import time import uuid import webbrowser -from azure.core.credentials import AccessToken from azure.core.exceptions import ClientAuthenticationError from .. import CredentialUnavailableError from .._constants import AZURE_CLI_CLIENT_ID -from .._internal import AuthCodeRedirectServer, PublicClientCredential, wrap_exceptions +from .._internal import AuthCodeRedirectServer, InteractiveCredential, wrap_exceptions try: from typing import TYPE_CHECKING @@ -24,7 +22,7 @@ from typing import Any, List, Mapping -class InteractiveBrowserCredential(PublicClientCredential): +class InteractiveBrowserCredential(InteractiveCredential): """Opens a browser to interactively authenticate a user. :func:`~get_token` opens a browser to a login URL provided by Azure Active Directory and authenticates a user @@ -38,6 +36,11 @@ class InteractiveBrowserCredential(PublicClientCredential): authenticate work or school accounts. :keyword str client_id: Client ID of the Azure Active Directory application users will sign in to. If unspecified, the Azure CLI's ID will be used. + :keyword AuthenticationRecord authentication_record: :class:`AuthenticationRecord` returned by :func:`authenticate` + :keyword bool disable_automatic_authentication: if True, :func:`get_token` will raise + :class:`AuthenticationRequiredError` when user interaction is required to acquire a token. Defaults to False. + :keyword bool enable_persistent_cache: if True, the credential will store tokens in a persistent cache shared by + other user credentials. **This is only supported on Windows.** Defaults to False. :keyword int timeout: seconds to wait for the user to complete authentication. Defaults to 300 (5 minutes). """ @@ -49,42 +52,9 @@ def __init__(self, **kwargs): super(InteractiveBrowserCredential, self).__init__(client_id=client_id, **kwargs) @wrap_exceptions - def get_token(self, *scopes, **kwargs): # pylint:disable=unused-argument - # type: (*str, **Any) -> AccessToken - """Request an access token for `scopes`. - - This will open a browser to a login page and listen on localhost for a request indicating authentication has - completed. - - .. note:: This method is called by Azure SDK clients. It isn't intended for use in application code. - - :param str scopes: desired scopes for the access token. This method requires at least one scope. - :rtype: :class:`azure.core.credentials.AccessToken` - :raises ~azure.identity.CredentialUnavailableError: the credential is unable to start an HTTP server on - localhost, or is unable to open a browser - :raises ~azure.core.exceptions.ClientAuthenticationError: authentication failed. The error's ``message`` - attribute gives a reason. Any error response from Azure Active Directory is available as the error's - ``response`` attribute. - """ - if not scopes: - raise ValueError("'get_token' requires at least one scope") - - return self._get_token_from_cache(scopes, **kwargs) or self._get_token_by_auth_code(scopes, **kwargs) + def _request_token(self, *scopes, **kwargs): + # type: (*str, **Any) -> dict - def _get_token_from_cache(self, scopes, **kwargs): - """if the user has already signed in, we can redeem a refresh token for a new access token""" - app = self._get_app() - accounts = app.get_accounts() - if accounts: # => user has already authenticated - # MSAL asserts scopes is a list - scopes = list(scopes) # type: ignore - now = int(time.time()) - token = app.acquire_token_silent(scopes, account=accounts[0], **kwargs) - if token and "access_token" in token and "expires_in" in token: - return AccessToken(token["access_token"], now + int(token["expires_in"])) - return None - - def _get_token_by_auth_code(self, scopes, **kwargs): # start an HTTP server on localhost to receive the redirect for port in range(8400, 9000): try: @@ -118,13 +88,8 @@ def _get_token_by_auth_code(self, scopes, **kwargs): # redeem the authorization code for a token code = self._parse_response(request_state, response) - now = int(time.time()) - result = app.acquire_token_by_authorization_code(code, scopes=scopes, redirect_uri=redirect_uri, **kwargs) - - if "access_token" not in result: - raise ClientAuthenticationError(message="Authentication failed: {}".format(result.get("error_description"))) + return app.acquire_token_by_authorization_code(code, scopes=scopes, redirect_uri=redirect_uri, **kwargs) - return AccessToken(result["access_token"], now + int(result["expires_in"])) @staticmethod def _parse_response(request_state, response): diff --git a/sdk/identity/azure-identity/azure/identity/_credentials/default.py b/sdk/identity/azure-identity/azure/identity/_credentials/default.py index de1103e0a4b9..74a05de08904 100644 --- a/sdk/identity/azure-identity/azure/identity/_credentials/default.py +++ b/sdk/identity/azure-identity/azure/identity/_credentials/default.py @@ -6,13 +6,14 @@ import os from .._constants import EnvironmentVariables -from .._internal import get_default_authority +from .._internal import get_default_authority, normalize_authority from .browser import InteractiveBrowserCredential from .chained import ChainedTokenCredential from .environment import EnvironmentCredential from .managed_identity import ManagedIdentityCredential from .shared_cache import SharedTokenCacheCredential from .azure_cli import AzureCliCredential +from .vscode_credential import VSCodeCredential try: @@ -39,7 +40,8 @@ class DefaultAzureCredential(ChainedTokenCredential): 3. On Windows only: a user who has signed in with a Microsoft application, such as Visual Studio. If multiple identities are in the cache, then the value of the environment variable ``AZURE_USERNAME`` is used to select which identity to use. See :class:`~azure.identity.SharedTokenCacheCredential` for more details. - 4. The identity currently logged in to the Azure CLI. + 4. The user currently signed in to Visual Studio Code. + 5. The identity currently logged in to the Azure CLI. This default behavior is configurable with keyword arguments. @@ -51,6 +53,8 @@ class DefaultAzureCredential(ChainedTokenCredential): variables from the credential. Defaults to **False**. :keyword bool exclude_managed_identity_credential: Whether to exclude managed identity from the credential. Defaults to **False**. + :keyword bool exclude_visual_studio_code_credential: Whether to exclude stored credential from VS Code. + Defaults to **False**. :keyword bool exclude_shared_token_cache_credential: Whether to exclude the shared token cache. Defaults to **False**. :keyword bool exclude_interactive_browser_credential: Whether to exclude interactive browser authentication (see @@ -62,7 +66,8 @@ class DefaultAzureCredential(ChainedTokenCredential): """ def __init__(self, **kwargs): - authority = kwargs.pop("authority", None) or get_default_authority() + authority = kwargs.pop("authority", None) + authority = normalize_authority(authority) if authority else get_default_authority() shared_cache_username = kwargs.pop("shared_cache_username", os.environ.get(EnvironmentVariables.AZURE_USERNAME)) shared_cache_tenant_id = kwargs.pop( @@ -72,6 +77,7 @@ def __init__(self, **kwargs): exclude_environment_credential = kwargs.pop("exclude_environment_credential", False) exclude_managed_identity_credential = kwargs.pop("exclude_managed_identity_credential", False) exclude_shared_token_cache_credential = kwargs.pop("exclude_shared_token_cache_credential", False) + exclude_visual_studio_code_credential = kwargs.pop("exclude_visual_studio_code_credential", False) exclude_cli_credential = kwargs.pop("exclude_cli_credential", False) exclude_interactive_browser_credential = kwargs.pop("exclude_interactive_browser_credential", True) @@ -90,6 +96,8 @@ def __init__(self, **kwargs): except Exception as ex: # pylint:disable=broad-except # transitive dependency pywin32 doesn't support 3.8 (https://github.com/mhammond/pywin32/issues/1431) _LOGGER.info("Shared token cache is unavailable: '%s'", ex) + if not exclude_visual_studio_code_credential: + credentials.append(VSCodeCredential()) if not exclude_cli_credential: credentials.append(AzureCliCredential()) if not exclude_interactive_browser_credential: diff --git a/sdk/identity/azure-identity/azure/identity/_credentials/environment.py b/sdk/identity/azure-identity/azure/identity/_credentials/environment.py index 7041b038549a..a9e69a7e0b91 100644 --- a/sdk/identity/azure-identity/azure/identity/_credentials/environment.py +++ b/sdk/identity/azure-identity/azure/identity/_credentials/environment.py @@ -71,7 +71,7 @@ def __init__(self, **kwargs): client_id=os.environ[EnvironmentVariables.AZURE_CLIENT_ID], username=os.environ[EnvironmentVariables.AZURE_USERNAME], password=os.environ[EnvironmentVariables.AZURE_PASSWORD], - tenant=os.environ.get(EnvironmentVariables.AZURE_TENANT_ID), # optional for username/password auth + tenant_id=os.environ.get(EnvironmentVariables.AZURE_TENANT_ID), # optional for username/password auth **kwargs ) diff --git a/sdk/identity/azure-identity/azure/identity/_credentials/linux_vscode_adapter.py b/sdk/identity/azure-identity/azure/identity/_credentials/linux_vscode_adapter.py new file mode 100644 index 000000000000..8a604082965a --- /dev/null +++ b/sdk/identity/azure-identity/azure/identity/_credentials/linux_vscode_adapter.py @@ -0,0 +1,98 @@ +# ------------------------------------ +# Copyright (c) Microsoft Corporation. +# Licensed under the MIT License. +# ------------------------------------ +import os +import json +import ctypes as ct +from .._constants import VSCODE_CREDENTIALS_SECTION + + +def _c_str(string): + return ct.c_char_p(string.encode("utf-8")) + + +try: + _libsecret = ct.cdll.LoadLibrary("libsecret-1.so.0") + _libsecret.secret_schema_new.argtypes = [ + ct.c_char_p, + ct.c_uint, + ct.c_char_p, + ct.c_uint, + ct.c_char_p, + ct.c_uint, + ct.c_void_p, + ] + _libsecret.secret_password_lookup_sync.argtypes = [ + ct.c_void_p, + ct.c_void_p, + ct.c_void_p, + ct.c_char_p, + ct.c_char_p, + ct.c_char_p, + ct.c_char_p, + ct.c_void_p, + ] + _libsecret.secret_password_lookup_sync.restype = ct.c_char_p + _libsecret.secret_schema_unref.argtypes = [ct.c_void_p] +except OSError: + _libsecret = None + + +def _get_user_settings_path(): + app_data_folder = os.environ["HOME"] + return os.path.join(app_data_folder, ".config", "Code", "User", "settings.json") + + +def _get_user_settings(): + path = _get_user_settings_path() + try: + with open(path) as file: + data = json.load(file) + environment_name = data.get("azure.cloud", "Azure") + return environment_name + except IOError: + return "Azure" + + +def _get_refresh_token(service_name, account_name): + if not _libsecret: + return None + + # _libsecret.secret_password_lookup_sync raises segment fault on Python 2.7 + # temporarily disable it on 2.7 + import sys + + if sys.version_info[0] < 3: + raise NotImplementedError("Not supported on Python 2.7") + + err = ct.c_int() + schema = _libsecret.secret_schema_new( + _c_str("org.freedesktop.Secret.Generic"), 2, _c_str("service"), 0, _c_str("account"), 0, None + ) + p_str = _libsecret.secret_password_lookup_sync( + schema, + None, + ct.byref(err), + _c_str("service"), + _c_str(service_name), + _c_str("account"), + _c_str(account_name), + None, + ) + _libsecret.secret_schema_unref(schema) + if err.value == 0: + return p_str.decode("utf-8") + + return None + + +def get_credentials(): + try: + environment_name = _get_user_settings() + credentials = _get_refresh_token(VSCODE_CREDENTIALS_SECTION, environment_name) + return credentials + except NotImplementedError: # pylint:disable=try-except-raise + raise + except Exception: # pylint: disable=broad-except + return None diff --git a/sdk/identity/azure-identity/azure/identity/_credentials/macos_vscode_adapter.py b/sdk/identity/azure-identity/azure/identity/_credentials/macos_vscode_adapter.py new file mode 100644 index 000000000000..003f1daca549 --- /dev/null +++ b/sdk/identity/azure-identity/azure/identity/_credentials/macos_vscode_adapter.py @@ -0,0 +1,41 @@ +# ------------------------------------ +# Copyright (c) Microsoft Corporation. +# Licensed under the MIT License. +# ------------------------------------ +import os +import json +from msal_extensions.osx import Keychain, KeychainError +from .._constants import VSCODE_CREDENTIALS_SECTION + + +def _get_user_settings_path(): + app_data_folder = os.environ["USER"] + return os.path.join(app_data_folder, "Library", "Application Support", "Code", "User", "settings.json") + + +def _get_user_settings(): + path = _get_user_settings_path() + try: + with open(path) as file: + data = json.load(file) + environment_name = data.get("azure.cloud", "Azure") + return environment_name + except IOError: + return "Azure" + + +def _get_refresh_token(service_name, account_name): + key_chain = Keychain() + try: + return key_chain.get_generic_password(service_name, account_name) + except KeychainError: + return None + + +def get_credentials(): + try: + environment_name = _get_user_settings() + credentials = _get_refresh_token(VSCODE_CREDENTIALS_SECTION, environment_name) + return credentials + except Exception: # pylint: disable=broad-except + return None diff --git a/sdk/identity/azure-identity/azure/identity/_credentials/user.py b/sdk/identity/azure-identity/azure/identity/_credentials/user.py index cf7e7d7ecaeb..7ff0ed0fbe74 100644 --- a/sdk/identity/azure-identity/azure/identity/_credentials/user.py +++ b/sdk/identity/azure-identity/azure/identity/_credentials/user.py @@ -8,7 +8,7 @@ from azure.core.credentials import AccessToken from azure.core.exceptions import ClientAuthenticationError -from .._internal import PublicClientCredential, wrap_exceptions +from .._internal import InteractiveCredential, PublicClientCredential, wrap_exceptions try: from typing import TYPE_CHECKING @@ -17,18 +17,16 @@ if TYPE_CHECKING: # pylint:disable=unused-import,ungrouped-imports - from typing import Any, Callable, Optional + from typing import Any, Optional -class DeviceCodeCredential(PublicClientCredential): +class DeviceCodeCredential(InteractiveCredential): """Authenticates users through the device code flow. When :func:`get_token` is called, this credential acquires a verification URL and code from Azure Active Directory. A user must browse to the URL, enter the code, and authenticate with Azure Active Directory. If the user authenticates successfully, the credential receives an access token. - This credential doesn't cache tokens--each :func:`get_token` call begins a new authentication flow. - For more information about the device code flow, see Azure Active Directory documentation: https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-device-code @@ -49,6 +47,11 @@ class DeviceCodeCredential(PublicClientCredential): - ``expires_on`` (datetime.datetime) the UTC time at which the code will expire If this argument isn't provided, the credential will print instructions to stdout. :paramtype prompt_callback: Callable[str, str, ~datetime.datetime] + :keyword AuthenticationRecord authentication_record: :class:`AuthenticationRecord` returned by :func:`authenticate` + :keyword bool disable_automatic_authentication: if True, :func:`get_token` will raise + :class:`AuthenticationRequiredError` when user interaction is required to acquire a token. Defaults to False. + :keyword bool enable_persistent_cache: if True, the credential will store tokens in a persistent cache shared by + other user credentials. **This is only supported on Windows.** Defaults to False. """ def __init__(self, client_id, **kwargs): @@ -58,26 +61,11 @@ def __init__(self, client_id, **kwargs): super(DeviceCodeCredential, self).__init__(client_id=client_id, **kwargs) @wrap_exceptions - def get_token(self, *scopes, **kwargs): # pylint:disable=unused-argument - # type: (*str, **Any) -> AccessToken - """Request an access token for `scopes`. - - This credential won't cache the token. Each call begins a new authentication flow. - - .. note:: This method is called by Azure SDK clients. It isn't intended for use in application code. - - :param str scopes: desired scopes for the access token. This method requires at least one scope. - :rtype: :class:`azure.core.credentials.AccessToken` - :raises ~azure.core.exceptions.ClientAuthenticationError: authentication failed. The error's ``message`` - attribute gives a reason. Any error response from Azure Active Directory is available as the error's - ``response`` attribute. - """ - if not scopes: - raise ValueError("'get_token' requires at least one scope") + def _request_token(self, *scopes, **kwargs): + # type: (*str, **Any) -> dict # MSAL requires scopes be a list scopes = list(scopes) # type: ignore - now = int(time.time()) app = self._get_app() flow = app.initiate_device_flow(scopes) @@ -95,7 +83,7 @@ def get_token(self, *scopes, **kwargs): # pylint:disable=unused-argument if self._timeout is not None and self._timeout < flow["expires_in"]: # user specified an effective timeout we will observe - deadline = now + self._timeout + deadline = int(time.time()) + self._timeout result = app.acquire_token_by_device_flow(flow, exit_condition=lambda flow: time.time() > deadline) else: # MSAL will stop polling when the device code expires @@ -108,8 +96,7 @@ def get_token(self, *scopes, **kwargs): # pylint:disable=unused-argument message = "Authentication failed: {}".format(result.get("error_description") or result.get("error")) raise ClientAuthenticationError(message=message) - token = AccessToken(result["access_token"], now + int(result["expires_in"])) - return token + return result class UsernamePasswordCredential(PublicClientCredential): diff --git a/sdk/identity/azure-identity/azure/identity/_credentials/vscode_credential.py b/sdk/identity/azure-identity/azure/identity/_credentials/vscode_credential.py new file mode 100644 index 000000000000..808686c4b2e5 --- /dev/null +++ b/sdk/identity/azure-identity/azure/identity/_credentials/vscode_credential.py @@ -0,0 +1,60 @@ +# ------------------------------------ +# Copyright (c) Microsoft Corporation. +# Licensed under the MIT License. +# ------------------------------------ +import sys +from typing import TYPE_CHECKING +from .._exceptions import CredentialUnavailableError +from .._constants import AZURE_VSCODE_CLIENT_ID +from .._internal.aad_client import AadClient + +if sys.platform.startswith("win"): + from .win_vscode_adapter import get_credentials +elif sys.platform.startswith("darwin"): + from .macos_vscode_adapter import get_credentials +else: + from .linux_vscode_adapter import get_credentials + +if TYPE_CHECKING: + # pylint:disable=unused-import,ungrouped-imports + from typing import Any, Iterable, Optional + from azure.core.credentials import AccessToken + + +class VSCodeCredential(object): + """Authenticates by redeeming a refresh token previously saved by VS Code + + """ + + def __init__(self, **kwargs): + self._client = kwargs.pop("_client", None) or AadClient("organizations", AZURE_VSCODE_CLIENT_ID, **kwargs) + self._refresh_token = None + + def get_token(self, *scopes, **kwargs): + # type: (*str, **Any) -> AccessToken + """Request an access token for `scopes`. + + .. note:: This method is called by Azure SDK clients. It isn't intended for use in application code. + + When this method is called, the credential will try to get the refresh token saved by VS Code. If a refresh + token can be found, it will redeem the refresh token for an access token and return the access token. + + :param str scopes: desired scopes for the access token. This method requires at least one scope. + :rtype: :class:`azure.core.credentials.AccessToken` + :raises ~azure.identity.CredentialUnavailableError: fail to get refresh token. + """ + if not scopes: + raise ValueError("'get_token' requires at least one scope") + + token = self._client.get_cached_access_token(scopes) + + if token: + return token + + if not self._refresh_token: + self._refresh_token = get_credentials() + if not self._refresh_token: + raise CredentialUnavailableError(message="No Azure user is logged in to Visual Studio Code.") + + token = self._client.obtain_token_by_refresh_token(self._refresh_token, scopes, **kwargs) + return token diff --git a/sdk/identity/azure-identity/azure/identity/_credentials/win_vscode_adapter.py b/sdk/identity/azure-identity/azure/identity/_credentials/win_vscode_adapter.py new file mode 100644 index 000000000000..1a0f4c86a05b --- /dev/null +++ b/sdk/identity/azure-identity/azure/identity/_credentials/win_vscode_adapter.py @@ -0,0 +1,85 @@ +# ------------------------------------ +# Copyright (c) Microsoft Corporation. +# Licensed under the MIT License. +# ------------------------------------ +import os +import json +import ctypes as ct +from .._constants import VSCODE_CREDENTIALS_SECTION + +try: + import ctypes.wintypes as wt +except (IOError, ValueError): + pass + + +SUPPORTED_CREDKEYS = set(("Type", "TargetName", "Persist", "UserName", "Comment", "CredentialBlob")) + +_PBYTE = ct.POINTER(ct.c_byte) + + +class _CREDENTIAL(ct.Structure): + _fields_ = [ + ("Flags", wt.DWORD), + ("Type", wt.DWORD), + ("TargetName", ct.c_wchar_p), + ("Comment", ct.c_wchar_p), + ("LastWritten", wt.FILETIME), + ("CredentialBlobSize", wt.DWORD), + ("CredentialBlob", _PBYTE), + ("Persist", wt.DWORD), + ("AttributeCount", wt.DWORD), + ("Attributes", ct.c_void_p), + ("TargetAlias", ct.c_wchar_p), + ("UserName", ct.c_wchar_p), + ] + + +_PCREDENTIAL = ct.POINTER(_CREDENTIAL) + +_advapi = ct.WinDLL("advapi32") +_advapi.CredReadW.argtypes = [wt.LPCWSTR, wt.DWORD, wt.DWORD, ct.POINTER(_PCREDENTIAL)] +_advapi.CredReadW.restype = wt.BOOL +_advapi.CredFree.argtypes = [_PCREDENTIAL] + + +def _read_credential(service_name, account_name): + target = "{}/{}".format(service_name, account_name) + cred_ptr = _PCREDENTIAL() + if _advapi.CredReadW(target, 1, 0, ct.byref(cred_ptr)): + cred_blob = cred_ptr.contents.CredentialBlob + cred_blob_size = cred_ptr.contents.CredentialBlobSize + password_as_list = [int.from_bytes(cred_blob[pos : pos + 1], "little") for pos in range(0, cred_blob_size)] + cred = "".join(map(chr, password_as_list)) + _advapi.CredFree(cred_ptr) + return cred + return None + + +def _get_user_settings_path(): + app_data_folder = os.environ["APPDATA"] + return os.path.join(app_data_folder, "Code", "User", "settings.json") + + +def _get_user_settings(): + path = _get_user_settings_path() + try: + with open(path) as file: + data = json.load(file) + environment_name = data.get("azure.cloud", "Azure") + return environment_name + except IOError: + return "Azure" + + +def _get_refresh_token(service_name, account_name): + return _read_credential(service_name, account_name) + + +def get_credentials(): + try: + environment_name = _get_user_settings() + credentials = _get_refresh_token(VSCODE_CREDENTIALS_SECTION, environment_name) + return credentials + except Exception: # pylint: disable=broad-except + return None diff --git a/sdk/identity/azure-identity/azure/identity/_exceptions.py b/sdk/identity/azure-identity/azure/identity/_exceptions.py index 22802306976f..ef1199fdf3b9 100644 --- a/sdk/identity/azure-identity/azure/identity/_exceptions.py +++ b/sdk/identity/azure-identity/azure/identity/_exceptions.py @@ -2,8 +2,37 @@ # Copyright (c) Microsoft Corporation. # Licensed under the MIT License. # ------------------------------------ +from typing import TYPE_CHECKING + from azure.core.exceptions import ClientAuthenticationError +if TYPE_CHECKING: + from typing import Any, Optional, Sequence + class CredentialUnavailableError(ClientAuthenticationError): """The credential did not attempt to authenticate because required data or state is unavailable.""" + + +class AuthenticationRequiredError(CredentialUnavailableError): + """Interactive authentication is required to acquire a token.""" + + def __init__(self, scopes, message=None, error_details=None, **kwargs): + # type: (Sequence[str], Optional[str], Optional[str], **Any) -> None + self._scopes = scopes + self._error_details = error_details + if not message: + message = "Interactive authentication is required to get a token. Call 'authenticate' to begin." + super(AuthenticationRequiredError, self).__init__(message=message, **kwargs) + + @property + def scopes(self): + # type: () -> Sequence[str] + """Scopes requested during the failed authentication""" + return self._scopes + + @property + def error_details(self): + # type: () -> Optional[str] + """Additional authentication error details from Azure Active Directory""" + return self._error_details diff --git a/sdk/identity/azure-identity/azure/identity/_internal/__init__.py b/sdk/identity/azure-identity/azure/identity/_internal/__init__.py index a3cbd73d1586..b6d5ec1f2632 100644 --- a/sdk/identity/azure-identity/azure/identity/_internal/__init__.py +++ b/sdk/identity/azure-identity/azure/identity/_internal/__init__.py @@ -3,12 +3,30 @@ # Licensed under the MIT License. # ------------------------------------ import os +from six.moves.urllib_parse import urlparse from .._constants import EnvironmentVariables, KnownAuthorities +def normalize_authority(authority): + # type: (str) -> str + """Ensure authority uses https, strip trailing spaces and /""" + + parsed = urlparse(authority) + if not parsed.scheme: + return "https://" + authority.rstrip(" /") + if parsed.scheme != "https": + raise ValueError( + "'{}' is an invalid authority. The value must be a TLS protected (https) URL.".format(authority) + ) + + return authority.rstrip(" /") + + def get_default_authority(): - return os.environ.get(EnvironmentVariables.AZURE_AUTHORITY_HOST, KnownAuthorities.AZURE_PUBLIC_CLOUD) + # type: () -> str + authority = os.environ.get(EnvironmentVariables.AZURE_AUTHORITY_HOST, KnownAuthorities.AZURE_PUBLIC_CLOUD) + return normalize_authority(authority) # pylint:disable=wrong-import-position @@ -16,7 +34,7 @@ def get_default_authority(): from .aad_client_base import AadClientBase from .auth_code_redirect_handler import AuthCodeRedirectServer from .exception_wrapper import wrap_exceptions -from .msal_credentials import ConfidentialClientCredential, PublicClientCredential +from .msal_credentials import ConfidentialClientCredential, InteractiveCredential, PublicClientCredential from .msal_transport_adapter import MsalTransportAdapter, MsalTransportResponse @@ -34,12 +52,16 @@ def _scopes_to_resource(*scopes): __all__ = [ + "_scopes_to_resource", "AadClient", "AadClientBase", "AuthCodeRedirectServer", "ConfidentialClientCredential", + "get_default_authority", + "InteractiveCredential", "MsalTransportAdapter", "MsalTransportResponse", + "normalize_authority", "PublicClientCredential", "wrap_exceptions", ] diff --git a/sdk/identity/azure-identity/azure/identity/_internal/aad_client_base.py b/sdk/identity/azure-identity/azure/identity/_internal/aad_client_base.py index 2fb8ef43f0e0..10f2a0ef8ea8 100644 --- a/sdk/identity/azure-identity/azure/identity/_internal/aad_client_base.py +++ b/sdk/identity/azure-identity/azure/identity/_internal/aad_client_base.py @@ -17,7 +17,7 @@ from azure.core.credentials import AccessToken from azure.core.exceptions import ClientAuthenticationError -from . import get_default_authority +from . import get_default_authority, normalize_authority try: ABC = abc.ABC @@ -34,10 +34,10 @@ class AadClientBase(ABC): def __init__(self, tenant_id, client_id, cache=None, **kwargs): # type: (str, str, Optional[TokenCache], **Any) -> None - authority = kwargs.pop("authority", None) or get_default_authority() - if authority[-1] == "/": - authority = authority[:-1] - token_endpoint = "https://" + "/".join((authority, tenant_id, "oauth2/v2.0/token")) + authority = kwargs.pop("authority", None) + authority = normalize_authority(authority) if authority else get_default_authority() + + token_endpoint = "/".join((authority, tenant_id, "oauth2/v2.0/token")) config = {"token_endpoint": token_endpoint} self._cache = cache or TokenCache() diff --git a/sdk/identity/azure-identity/azure/identity/_internal/msal_credentials.py b/sdk/identity/azure-identity/azure/identity/_internal/msal_credentials.py index 78552ec106d7..464e771e00cc 100644 --- a/sdk/identity/azure-identity/azure/identity/_internal/msal_credentials.py +++ b/sdk/identity/azure-identity/azure/identity/_internal/msal_credentials.py @@ -6,15 +6,24 @@ This entails monkeypatching MSAL's OAuth client with an adapter substituting an azure-core pipeline for Requests. """ import abc +import base64 +import json +import logging +import os +import sys import time import msal +from six.moves.urllib_parse import urlparse from azure.core.credentials import AccessToken from azure.core.exceptions import ClientAuthenticationError from .exception_wrapper import wrap_exceptions from .msal_transport_adapter import MsalTransportAdapter -from .._internal import get_default_authority +from .._constants import KnownAuthorities +from .._exceptions import AuthenticationRequiredError, CredentialUnavailableError +from .._internal import get_default_authority, normalize_authority +from .._auth_record import AuthenticationRecord try: ABC = abc.ABC @@ -27,21 +36,79 @@ TYPE_CHECKING = False if TYPE_CHECKING: - # pylint:disable=unused-import + # pylint:disable=ungrouped-imports,unused-import from typing import Any, Mapping, Optional, Type, Union +_LOGGER = logging.getLogger(__name__) + +_DEFAULT_AUTHENTICATE_SCOPES = { + "https://" + KnownAuthorities.AZURE_CHINA: ("https://management.core.chinacloudapi.cn//.default",), + "https://" + KnownAuthorities.AZURE_GERMANY: ("https://management.core.cloudapi.de//.default",), + "https://" + KnownAuthorities.AZURE_GOVERNMENT: ("https://management.core.usgovcloudapi.net//.default",), + "https://" + KnownAuthorities.AZURE_PUBLIC_CLOUD: ("https://management.core.windows.net//.default",), +} + + +def _decode_client_info(raw): + """Taken from msal.oauth2cli.oidc""" + + raw += "=" * (-len(raw) % 4) + raw = str(raw) # On Python 2.7, argument of urlsafe_b64decode must be str, not unicode. + return base64.urlsafe_b64decode(raw).decode("utf-8") + + +def _build_auth_record(response): + """Build an AuthenticationRecord from the result of an MSAL ClientApplication token request""" + + try: + client_info = json.loads(_decode_client_info(response["client_info"])) + id_token = response["id_token_claims"] + + return AuthenticationRecord( + authority=urlparse(id_token["iss"]).netloc, # "iss" is the URL of the issuing tenant + client_id=id_token["aud"], + home_account_id="{uid}.{utid}".format(**client_info), + tenant_id=id_token["tid"], # tenant which issued the token, not necessarily user's home tenant + username=id_token["preferred_username"], + ) + except (KeyError, ValueError): + # surprising: msal.ClientApplication always requests client_info and an id token, whose shapes shouldn't change + return None + + +def _load_persistent_cache(): + # type: () -> msal.TokenCache + + if sys.platform.startswith("win") and "LOCALAPPDATA" in os.environ: + from msal_extensions.token_cache import WindowsTokenCache + + return WindowsTokenCache( + cache_location=os.path.join(os.environ["LOCALAPPDATA"], ".IdentityService", "msal.cache") + ) + + raise NotImplementedError("A persistent cache is not available on this platform.") + + class MsalCredential(ABC): """Base class for credentials wrapping MSAL applications""" def __init__(self, client_id, client_credential=None, **kwargs): # type: (str, Optional[Union[str, Mapping[str, str]]], **Any) -> None - tenant_id = kwargs.pop("tenant_id", "organizations") - authority = kwargs.pop("authority", None) or get_default_authority() - self._base_url = "https://" + "/".join((authority.strip("/"), tenant_id.strip("/"))) + authority = kwargs.pop("authority", None) + self._authority = normalize_authority(authority) if authority else get_default_authority() + self._tenant_id = kwargs.pop("tenant_id", None) or "organizations" + self._client_credential = client_credential self._client_id = client_id + self._cache = kwargs.pop("_cache", None) # internal, for use in tests + if not self._cache: + if kwargs.pop("enable_persistent_cache", False): + self._cache = _load_persistent_cache() + else: + self._cache = msal.TokenCache() + self._adapter = kwargs.pop("msal_adapter", None) or MsalTransportAdapter(**kwargs) # postpone creating the wrapped application because its initializer uses the network @@ -64,7 +131,12 @@ def _create_app(self, cls): # MSAL application initializers use msal.authority to send AAD tenant discovery requests with self._adapter: # MSAL's "authority" is a URL e.g. https://login.microsoftonline.com/common - app = cls(client_id=self._client_id, client_credential=self._client_credential, authority=self._base_url) + app = cls( + client_id=self._client_id, + client_credential=self._client_credential, + authority="{}/{}".format(self._authority, self._tenant_id), + token_cache=self._cache, + ) # monkeypatch the app to replace requests.Session with MsalTransportAdapter app.client.session.close() @@ -114,3 +186,115 @@ def _get_app(self): if not self._msal_app: self._msal_app = self._create_app(msal.PublicClientApplication) return self._msal_app + + +class InteractiveCredential(PublicClientCredential): + def __init__(self, **kwargs): + self._disable_automatic_authentication = kwargs.pop("disable_automatic_authentication", False) + self._auth_record = kwargs.pop("authentication_record", None) # type: Optional[AuthenticationRecord] + if self._auth_record: + kwargs.pop("client_id", None) # authentication_record overrides client_id argument + tenant_id = kwargs.pop("tenant_id", None) or self._auth_record.tenant_id + super(InteractiveCredential, self).__init__( + client_id=self._auth_record.client_id, + authority=self._auth_record.authority, + tenant_id=tenant_id, + **kwargs + ) + else: + super(InteractiveCredential, self).__init__(**kwargs) + + def get_token(self, *scopes, **kwargs): + # type: (*str, **Any) -> AccessToken + """Request an access token for `scopes`. + + .. note:: This method is called by Azure SDK clients. It isn't intended for use in application code. + + :param str scopes: desired scopes for the access token. This method requires at least one scope. + :rtype: :class:`azure.core.credentials.AccessToken` + :raises CredentialUnavailableError: the credential is unable to attempt authentication because it lacks + required data, state, or platform support + :raises ~azure.core.exceptions.ClientAuthenticationError: authentication failed. The error's ``message`` + attribute gives a reason. + :raises AuthenticationRequiredError: user interaction is necessary to acquire a token, and the credential is + configured not to begin this automatically. Call :func:`authenticate` to begin interactive authentication. + """ + if not scopes: + raise ValueError("'get_token' requires at least one scope") + + allow_prompt = kwargs.pop("_allow_prompt", not self._disable_automatic_authentication) + try: + return self._acquire_token_silent(*scopes, **kwargs) + except AuthenticationRequiredError: + if not allow_prompt: + raise + + # silent authentication failed -> authenticate interactively + now = int(time.time()) + + result = self._request_token(*scopes, **kwargs) + if "access_token" not in result: + message = "Authentication failed: {}".format(result.get("error_description") or result.get("error")) + raise ClientAuthenticationError(message=message) + + # this may be the first authentication, or the user may have authenticated a different identity + self._auth_record = _build_auth_record(result) + + return AccessToken(result["access_token"], now + int(result["expires_in"])) + + def authenticate(self, **kwargs): + # type: (**Any) -> AuthenticationRecord + """Interactively authenticate a user. + + :keyword Sequence[str] scopes: scopes to request during authentication, such as those provided by + :func:`AuthenticationRequiredError.scopes`. If provided, successful authentication will cache an access token + for these scopes. + :rtype: ~azure.identity.AuthenticationRecord + :raises ~azure.core.exceptions.ClientAuthenticationError: authentication failed. The error's ``message`` + attribute gives a reason. + """ + + scopes = kwargs.pop("scopes", None) + if not scopes: + if self._authority not in _DEFAULT_AUTHENTICATE_SCOPES: + # the credential is configured to use a cloud whose ARM scope we can't determine + raise CredentialUnavailableError( + message="Authenticating in this environment requires a value for the 'scopes' keyword argument." + ) + + scopes = _DEFAULT_AUTHENTICATE_SCOPES[self._authority] + + _ = self.get_token(*scopes, _allow_prompt=True, **kwargs) + return self.authentication_record # type: ignore + + @property + def authentication_record(self): + # type: () -> Optional[AuthenticationRecord] + """:class:`~azure.identity.AuthenticationRecord` for the most recent authentication""" + return self._auth_record + + @wrap_exceptions + def _acquire_token_silent(self, *scopes, **kwargs): + # type: (*str, **Any) -> AccessToken + result = None + if self._auth_record: + app = self._get_app() + for account in app.get_accounts(username=self._auth_record.username): + if account.get("home_account_id") != self._auth_record.home_account_id: + continue + + now = int(time.time()) + result = app.acquire_token_silent_with_error(list(scopes), account=account, **kwargs) + if result and "access_token" in result and "expires_in" in result: + return AccessToken(result["access_token"], now + int(result["expires_in"])) + + # if we get this far, result is either None or the content of an AAD error response + if result: + details = result.get("error_description") or result.get("error") + raise AuthenticationRequiredError(scopes, error_details=details) + raise AuthenticationRequiredError(scopes) + + @abc.abstractmethod + def _request_token(self, *scopes, **kwargs): + # type: (*str, **Any) -> dict + """Request an access token via a non-silent MSAL token acquisition method, returning that method's result""" diff --git a/sdk/identity/azure-identity/azure/identity/_internal/shared_token_cache.py b/sdk/identity/azure-identity/azure/identity/_internal/shared_token_cache.py index d874ba5701f2..22a42bfdf509 100644 --- a/sdk/identity/azure-identity/azure/identity/_internal/shared_token_cache.py +++ b/sdk/identity/azure-identity/azure/identity/_internal/shared_token_cache.py @@ -7,10 +7,11 @@ import sys from msal import TokenCache +from six.moves.urllib_parse import urlparse from .. import CredentialUnavailableError from .._constants import KnownAuthorities -from .._internal import get_default_authority +from .._internal import get_default_authority, normalize_authority try: ABC = abc.ABC @@ -87,8 +88,11 @@ class SharedTokenCacheBase(ABC): def __init__(self, username=None, **kwargs): # pylint:disable=unused-argument # type: (Optional[str], **Any) -> None - self._authority = kwargs.pop("authority", None) or get_default_authority() - self._authority_aliases = KNOWN_ALIASES.get(self._authority) or frozenset((self._authority,)) + authority = kwargs.pop("authority", None) + self._authority = normalize_authority(authority) if authority else get_default_authority() + + environment = urlparse(self._authority).netloc + self._environment_aliases = KNOWN_ALIASES.get(environment) or frozenset((environment,)) self._username = username self._tenant_id = kwargs.pop("tenant_id", None) @@ -125,7 +129,7 @@ def _get_cache_items_for_authority(self, credential_type): items = [] for item in self._cache.find(credential_type): environment = item.get("environment") - if environment in self._authority_aliases: + if environment in self._environment_aliases: items.append(item) return items diff --git a/sdk/identity/azure-identity/azure/identity/aio/_credentials/default.py b/sdk/identity/azure-identity/azure/identity/aio/_credentials/default.py index 3caf443bf793..111511f52a4f 100644 --- a/sdk/identity/azure-identity/azure/identity/aio/_credentials/default.py +++ b/sdk/identity/azure-identity/azure/identity/aio/_credentials/default.py @@ -7,12 +7,13 @@ from typing import TYPE_CHECKING from ..._constants import EnvironmentVariables -from ..._internal import get_default_authority +from ..._internal import get_default_authority, normalize_authority from .azure_cli import AzureCliCredential from .chained import ChainedTokenCredential from .environment import EnvironmentCredential from .managed_identity import ManagedIdentityCredential from .shared_cache import SharedTokenCacheCredential +from .vscode_credential import VSCodeCredential if TYPE_CHECKING: from typing import Any @@ -32,7 +33,8 @@ class DefaultAzureCredential(ChainedTokenCredential): 3. On Windows only: a user who has signed in with a Microsoft application, such as Visual Studio. If multiple identities are in the cache, then the value of the environment variable ``AZURE_USERNAME`` is used to select which identity to use. See :class:`~azure.identity.aio.SharedTokenCacheCredential` for more details. - 4. The identity currently logged in to the Azure CLI. + 4. The user currently signed in to Visual Studio Code. + 5. The identity currently logged in to the Azure CLI. This default behavior is configurable with keyword arguments. @@ -42,6 +44,8 @@ class DefaultAzureCredential(ChainedTokenCredential): :keyword bool exclude_cli_credential: Whether to exclude the Azure CLI from the credential. Defaults to **False**. :keyword bool exclude_environment_credential: Whether to exclude a service principal configured by environment variables from the credential. Defaults to **False**. + :keyword bool exclude_visual_studio_code_credential: Whether to exclude stored credential from VS Code. + Defaults to **False**. :keyword bool exclude_managed_identity_credential: Whether to exclude managed identity from the credential. Defaults to **False**. :keyword bool exclude_shared_token_cache_credential: Whether to exclude the shared token cache. Defaults to @@ -53,13 +57,15 @@ class DefaultAzureCredential(ChainedTokenCredential): """ def __init__(self, **kwargs): - authority = kwargs.pop("authority", None) or get_default_authority() + authority = kwargs.pop("authority", None) + authority = normalize_authority(authority) if authority else get_default_authority() shared_cache_username = kwargs.pop("shared_cache_username", os.environ.get(EnvironmentVariables.AZURE_USERNAME)) shared_cache_tenant_id = kwargs.pop( "shared_cache_tenant_id", os.environ.get(EnvironmentVariables.AZURE_TENANT_ID) ) + exclude_visual_studio_code_credential = kwargs.pop("exclude_visual_studio_code_credential", False) exclude_cli_credential = kwargs.pop("exclude_cli_credential", False) exclude_environment_credential = kwargs.pop("exclude_environment_credential", False) exclude_managed_identity_credential = kwargs.pop("exclude_managed_identity_credential", False) @@ -80,6 +86,8 @@ def __init__(self, **kwargs): except Exception as ex: # pylint:disable=broad-except # transitive dependency pywin32 doesn't support 3.8 (https://github.com/mhammond/pywin32/issues/1431) _LOGGER.info("Shared token cache is unavailable: '%s'", ex) + if not exclude_visual_studio_code_credential: + credentials.append(VSCodeCredential()) if not exclude_cli_credential: credentials.append(AzureCliCredential()) diff --git a/sdk/identity/azure-identity/azure/identity/aio/_credentials/vscode_credential.py b/sdk/identity/azure-identity/azure/identity/aio/_credentials/vscode_credential.py new file mode 100644 index 000000000000..337460611b51 --- /dev/null +++ b/sdk/identity/azure-identity/azure/identity/aio/_credentials/vscode_credential.py @@ -0,0 +1,64 @@ +# ------------------------------------ +# Copyright (c) Microsoft Corporation. +# Licensed under the MIT License. +# ------------------------------------ +from typing import TYPE_CHECKING +from ..._exceptions import CredentialUnavailableError +from .._credentials.base import AsyncCredentialBase +from ..._constants import AZURE_VSCODE_CLIENT_ID +from .._internal.aad_client import AadClient +from ..._credentials.vscode_credential import get_credentials + +if TYPE_CHECKING: + # pylint:disable=unused-import,ungrouped-imports + from typing import Any, Iterable, Optional + from azure.core.credentials import AccessToken + + +class VSCodeCredential(AsyncCredentialBase): + """Authenticates by redeeming a refresh token previously saved by VS Code + + """ + + def __init__(self, **kwargs): + self._client = kwargs.pop("_client", None) or AadClient("organizations", AZURE_VSCODE_CLIENT_ID, **kwargs) + self._refresh_token = None + + async def __aenter__(self): + if self._client: + await self._client.__aenter__() + return self + + async def close(self): + """Close the credential's transport session.""" + + if self._client: + await self._client.__aexit__() + + async def get_token(self, *scopes, **kwargs): + # type: (*str, **Any) -> AccessToken + """Request an access token for `scopes`. + + .. note:: This method is called by Azure SDK clients. It isn't intended for use in application code. + + When this method is called, the credential will try to get the refresh token saved by VS Code. If a refresh + token can be found, it will redeem the refresh token for an access token and return the access token. + + :param str scopes: desired scopes for the access token. This method requires at least one scope. + :rtype: :class:`azure.core.credentials.AccessToken` + :raises ~azure.identity.CredentialUnavailableError: fail to get refresh token. + """ + if not scopes: + raise ValueError("'get_token' requires at least one scope") + + token = self._client.get_cached_access_token(scopes) + if token: + return token + + if not self._refresh_token: + self._refresh_token = get_credentials() + if not self._refresh_token: + raise CredentialUnavailableError(message="No Azure user is logged in to Visual Studio Code.") + + token = await self._client.obtain_token_by_refresh_token(self._refresh_token, scopes, **kwargs) + return token diff --git a/sdk/identity/azure-identity/tests/helpers.py b/sdk/identity/azure-identity/tests/helpers.py index 7073a6c08e04..f31998fe2833 100644 --- a/sdk/identity/azure-identity/tests/helpers.py +++ b/sdk/identity/azure-identity/tests/helpers.py @@ -16,12 +16,29 @@ # build_* lifted from msal tests def build_id_token( - iss="issuer", sub="subject", aud="my_client_id", exp=None, iat=None, **claims + iss="issuer", + sub="subject", + aud="my_client_id", + username="username", + tenant_id="tenant id", + object_id="object id", + exp=None, + iat=None, + **claims ): # AAD issues "preferred_username", ADFS issues "upn" return "header.%s.signature" % base64.b64encode( json.dumps( dict( - {"iss": iss, "sub": sub, "aud": aud, "exp": exp or (time.time() + 100), "iat": iat or time.time()}, + { + "iss": iss, + "sub": sub, + "aud": aud, + "exp": exp or (time.time() + 100), + "iat": iat or time.time(), + "tid": tenant_id, + "oid": object_id, + "preferred_username": username, + }, **claims ) ).encode() @@ -83,7 +100,7 @@ def add_discrepancy(name, expected, actual): discrepancies.append("{}:\n\t expected: {}\n\t actual: {}".format(name, expected, actual)) if self.base_url and self.base_url != request.url.split("?")[0]: - add_discrepancy('base url', self.base_url, request.url) + add_discrepancy("base url", self.base_url, request.url) if self.url and self.url != request.url: add_discrepancy("url", self.url, request.url) diff --git a/sdk/identity/azure-identity/tests/test_aad_client.py b/sdk/identity/azure-identity/tests/test_aad_client.py index 5e3012e06061..744cb0e70939 100644 --- a/sdk/identity/azure-identity/tests/test_aad_client.py +++ b/sdk/identity/azure-identity/tests/test_aad_client.py @@ -99,15 +99,17 @@ def assert_secrets_not_exposed(): assert_secrets_not_exposed() -def test_request_url(): - authority = "authority.com" +@pytest.mark.parametrize("authority", ("localhost", "https://localhost")) +def test_request_url(authority): tenant_id = "expected_tenant" + parsed_authority = urlparse(authority) + expected_netloc = parsed_authority.netloc or authority # "localhost" parses to netloc "", path "localhost" def send(request, **_): - scheme, netloc, path, _, _, _ = urlparse(request.url) - assert scheme == "https" - assert netloc == authority - assert path.startswith("/" + tenant_id) + actual = urlparse(request.url) + assert actual.scheme == "https" + assert actual.netloc == expected_netloc + assert actual.path.startswith("/" + tenant_id) return mock_response(json_payload={"token_type": "Bearer", "expires_in": 42, "access_token": "***"}) client = AadClient(tenant_id, "client id", transport=Mock(send=send), authority=authority) diff --git a/sdk/identity/azure-identity/tests/test_aad_client_async.py b/sdk/identity/azure-identity/tests/test_aad_client_async.py index a2d24ce8e3d9..de77ab384736 100644 --- a/sdk/identity/azure-identity/tests/test_aad_client_async.py +++ b/sdk/identity/azure-identity/tests/test_aad_client_async.py @@ -43,24 +43,26 @@ async def test_uses_msal_correctly(): @pytest.mark.asyncio -async def test_request_url(): - authority = "authority.com" - tenant = "expected_tenant" +@pytest.mark.parametrize("authority", ("localhost", "https://localhost")) +async def test_request_url(authority): + tenant_id = "expected_tenant" + parsed_authority = urlparse(authority) + expected_netloc = parsed_authority.netloc or authority # "localhost" parses to netloc "", path "localhost" async def send(request, **_): - scheme, netloc, path, _, _, _ = urlparse(request.url) - assert scheme == "https" - assert netloc == authority - assert path.startswith("/" + tenant) + actual = urlparse(request.url) + assert actual.scheme == "https" + assert actual.netloc == expected_netloc + assert actual.path.startswith("/" + tenant_id) return mock_response(json_payload={"token_type": "Bearer", "expires_in": 42, "access_token": "***"}) - client = AadClient(tenant, "client id", transport=Mock(send=send), authority=authority) + client = AadClient(tenant_id, "client id", transport=Mock(send=send), authority=authority) await client.obtain_token_by_authorization_code("code", "uri", "scope") await client.obtain_token_by_refresh_token("refresh token", "scope") # authority can be configured via environment variable with patch.dict("os.environ", {EnvironmentVariables.AZURE_AUTHORITY_HOST: authority}, clear=True): - client = AadClient(tenant_id=tenant, client_id="client id", transport=Mock(send=send)) + client = AadClient(tenant_id=tenant_id, client_id="client id", transport=Mock(send=send)) await client.obtain_token_by_authorization_code("code", "uri", "scope") await client.obtain_token_by_refresh_token("refresh token", "scope") diff --git a/sdk/identity/azure-identity/tests/test_auth_record.py b/sdk/identity/azure-identity/tests/test_auth_record.py new file mode 100644 index 000000000000..5daef9c5dec4 --- /dev/null +++ b/sdk/identity/azure-identity/tests/test_auth_record.py @@ -0,0 +1,29 @@ +# ------------------------------------ +# Copyright (c) Microsoft Corporation. +# Licensed under the MIT License. +# ------------------------------------ +import json + +from azure.identity import AuthenticationRecord + + +def test_serialization(): + """serialize should accept arbitrary additional key/value pairs, which deserialize should ignore""" + + attrs = ("authority", "client_id","home_account_id", "tenant_id", "username") + nums = (n for n in range(len(attrs))) + record_values = {attr: next(nums) for attr in attrs} + + record = AuthenticationRecord(**record_values) + serialized = record.serialize() + + # AuthenticationRecord's fields should have been serialized + assert json.loads(serialized) == record_values + + deserialized = AuthenticationRecord.deserialize(serialized) + + # the deserialized record and the constructed record should have the same fields + assert sorted(vars(deserialized)) == sorted(vars(record)) + + # the constructed and deserialized records should have the same values + assert all(getattr(deserialized, attr) == record_values[attr] for attr in attrs) diff --git a/sdk/identity/azure-identity/tests/test_authn_client.py b/sdk/identity/azure-identity/tests/test_authn_client.py index e2772e130d27..6732d43cd4dc 100644 --- a/sdk/identity/azure-identity/tests/test_authn_client.py +++ b/sdk/identity/azure-identity/tests/test_authn_client.py @@ -15,6 +15,7 @@ from azure.core.credentials import AccessToken from azure.identity._authn_client import AuthnClient from azure.identity._constants import EnvironmentVariables +import pytest from six.moves.urllib_parse import urlparse from helpers import mock_response @@ -205,28 +206,30 @@ def mock_send(request, **kwargs): assert not client.get_cached_token([scope_a, scope_b]) -def test_request_url(): - authority = "localhost" - tenant = "expected_tenant" +@pytest.mark.parametrize("authority", ("localhost", "https://localhost")) +def test_request_url(authority): + tenant_id = "expected_tenant" + parsed_authority = urlparse(authority) + expected_netloc = parsed_authority.netloc or authority # "localhost" parses to netloc "", path "localhost" def validate_url(url): - scheme, netloc, path, _, _, _ = urlparse(url) - assert scheme == "https" - assert netloc == authority - assert path.startswith("/" + tenant) + actual = urlparse(url) + assert actual.scheme == "https" + assert actual.netloc == expected_netloc + assert actual.path.startswith("/" + tenant_id) def mock_send(request, **kwargs): validate_url(request.url) return mock_response(json_payload={"token_type": "Bearer", "expires_in": 42, "access_token": "***"}) - client = AuthnClient(tenant=tenant, transport=Mock(send=mock_send), authority=authority) + client = AuthnClient(tenant=tenant_id, transport=Mock(send=mock_send), authority=authority) client.request_token(("scope",)) request = client.get_refresh_token_grant_request({"secret": "***"}, "scope") validate_url(request.url) # authority can be configured via environment variable with patch.dict("os.environ", {EnvironmentVariables.AZURE_AUTHORITY_HOST: authority}, clear=True): - client = AuthnClient(tenant=tenant, transport=Mock(send=mock_send)) + client = AuthnClient(tenant=tenant_id, transport=Mock(send=mock_send)) client.request_token(("scope",)) request = client.get_refresh_token_grant_request({"secret": "***"}, "scope") validate_url(request.url) diff --git a/sdk/identity/azure-identity/tests/test_authn_client_async.py b/sdk/identity/azure-identity/tests/test_authn_client_async.py index 7966787d9b52..ab94c2c236c4 100644 --- a/sdk/identity/azure-identity/tests/test_authn_client_async.py +++ b/sdk/identity/azure-identity/tests/test_authn_client_async.py @@ -15,21 +15,23 @@ @pytest.mark.asyncio -async def test_request_url(): - authority = "authority.com" - tenant = "expected_tenant" +@pytest.mark.parametrize("authority", ("localhost", "https://localhost")) +async def test_request_url(authority): + tenant_id = "expected_tenant" + parsed_authority = urlparse(authority) + expected_netloc = parsed_authority.netloc or authority # "localhost" parses to netloc "", path "localhost" def mock_send(request, **kwargs): - scheme, netloc, path, _, _, _ = urlparse(request.url) - assert scheme == "https" - assert netloc == authority - assert path.startswith("/" + tenant) - return mock_response(json_payload={"token_type": "Bearer", "expires_in": 42, "access_token": "***"}) + actual = urlparse(request.url) + assert actual.scheme == "https" + assert actual.netloc == expected_netloc + assert actual.path.startswith("/" + tenant_id) + return mock_response(json_payload={"token_type": "Bearer", "expires_in": 42, "access_token": "*"}) - client = AsyncAuthnClient(tenant=tenant, transport=Mock(send=wrap_in_future(mock_send)), authority=authority) + client = AsyncAuthnClient(tenant=tenant_id, transport=Mock(send=wrap_in_future(mock_send)), authority=authority) await client.request_token(("scope",)) # authority can be configured via environment variable with patch.dict("os.environ", {EnvironmentVariables.AZURE_AUTHORITY_HOST: authority}, clear=True): - client = AsyncAuthnClient(tenant=tenant, transport=Mock(send=wrap_in_future(mock_send))) + client = AsyncAuthnClient(tenant=tenant_id, transport=Mock(send=wrap_in_future(mock_send))) await client.request_token(("scope",)) diff --git a/sdk/identity/azure-identity/tests/test_certificate_credential.py b/sdk/identity/azure-identity/tests/test_certificate_credential.py index c861ed73d936..06b65ee54c88 100644 --- a/sdk/identity/azure-identity/tests/test_certificate_credential.py +++ b/sdk/identity/azure-identity/tests/test_certificate_credential.py @@ -63,20 +63,21 @@ def test_user_agent(): credential.get_token("scope") +@pytest.mark.parametrize("authority", ("localhost", "https://localhost")) @pytest.mark.parametrize("cert_path,cert_password", BOTH_CERTS) -def test_request_url(cert_path, cert_password): - authority = "authority.com" +def test_request_url(cert_path, cert_password, authority): + """the credential should accept an authority, with or without scheme, as an argument or environment variable""" + tenant_id = "expected_tenant" access_token = "***" - - def validate_url(url): - parsed = urlparse(url) - assert parsed.scheme == "https" - assert parsed.netloc == authority - assert parsed.path.startswith("/" + tenant_id) + parsed_authority = urlparse(authority) + expected_netloc = parsed_authority.netloc or authority # "localhost" parses to netloc "", path "localhost" def mock_send(request, **kwargs): - validate_url(request.url) + actual = urlparse(request.url) + assert actual.scheme == "https" + assert actual.netloc == expected_netloc + assert actual.path.startswith("/" + tenant_id) return mock_response(json_payload={"token_type": "Bearer", "expires_in": 42, "access_token": access_token}) cred = CertificateCredential( diff --git a/sdk/identity/azure-identity/tests/test_certificate_credential_async.py b/sdk/identity/azure-identity/tests/test_certificate_credential_async.py index 1efb467a56be..948c411bddbe 100644 --- a/sdk/identity/azure-identity/tests/test_certificate_credential_async.py +++ b/sdk/identity/azure-identity/tests/test_certificate_credential_async.py @@ -77,20 +77,21 @@ async def test_user_agent(): @pytest.mark.asyncio +@pytest.mark.parametrize("authority", ("localhost", "https://localhost")) @pytest.mark.parametrize("cert_path,cert_password", BOTH_CERTS) -async def test_request_url(cert_path, cert_password): - authority = "authority.com" +async def test_request_url(cert_path, cert_password, authority): + """the credential should accept an authority, with or without scheme, as an argument or environment variable""" + tenant_id = "expected_tenant" access_token = "***" - - def validate_url(url): - parsed = urlparse(url) - assert parsed.scheme == "https" - assert parsed.netloc == authority - assert parsed.path.startswith("/" + tenant_id) + parsed_authority = urlparse(authority) + expected_netloc = parsed_authority.netloc or authority # "localhost" parses to netloc "", path "localhost" async def mock_send(request, **kwargs): - validate_url(request.url) + actual = urlparse(request.url) + assert actual.scheme == "https" + assert actual.netloc == expected_netloc + assert actual.path.startswith("/" + tenant_id) return mock_response(json_payload={"token_type": "Bearer", "expires_in": 42, "access_token": access_token}) cred = CertificateCredential( diff --git a/sdk/identity/azure-identity/tests/test_client_secret_credential.py b/sdk/identity/azure-identity/tests/test_client_secret_credential.py index e92c8cccfdb8..732ef67f97c3 100644 --- a/sdk/identity/azure-identity/tests/test_client_secret_credential.py +++ b/sdk/identity/azure-identity/tests/test_client_secret_credential.py @@ -80,17 +80,20 @@ def test_client_secret_credential(): assert token.token == access_token -def test_request_url(): - authority = "localhost" +@pytest.mark.parametrize("authority", ("localhost", "https://localhost")) +def test_request_url(authority): + """the credential should accept an authority, with or without scheme, as an argument or environment variable""" + tenant_id = "expected_tenant" access_token = "***" + parsed_authority = urlparse(authority) + expected_netloc = parsed_authority.netloc or authority # "localhost" parses to netloc "", path "localhost" def mock_send(request, **kwargs): - parsed = urlparse(request.url) - assert parsed.scheme == "https" - assert parsed.netloc == authority - assert parsed.path.startswith("/" + tenant_id) - + actual = urlparse(request.url) + assert actual.scheme == "https" + assert actual.netloc == expected_netloc + assert actual.path.startswith("/" + tenant_id) return mock_response(json_payload={"token_type": "Bearer", "expires_in": 42, "access_token": access_token}) credential = ClientSecretCredential( diff --git a/sdk/identity/azure-identity/tests/test_client_secret_credential_async.py b/sdk/identity/azure-identity/tests/test_client_secret_credential_async.py index 2253910fafb2..b37ff09dd5bc 100644 --- a/sdk/identity/azure-identity/tests/test_client_secret_credential_async.py +++ b/sdk/identity/azure-identity/tests/test_client_secret_credential_async.py @@ -107,17 +107,20 @@ async def test_client_secret_credential(): @pytest.mark.asyncio -async def test_request_url(): - authority = "localhost" +@pytest.mark.parametrize("authority", ("localhost", "https://localhost")) +async def test_request_url(authority): + """the credential should accept an authority, with or without scheme, as an argument or environment variable""" + tenant_id = "expected_tenant" access_token = "***" + parsed_authority = urlparse(authority) + expected_netloc = parsed_authority.netloc or authority # "localhost" parses to netloc "", path "localhost" async def mock_send(request, **kwargs): - parsed = urlparse(request.url) - assert parsed.scheme == "https" - assert parsed.netloc == authority - assert parsed.path.startswith("/" + tenant_id) - + actual = urlparse(request.url) + assert actual.scheme == "https" + assert actual.netloc == expected_netloc + assert actual.path.startswith("/" + tenant_id) return mock_response(json_payload={"token_type": "Bearer", "expires_in": 42, "access_token": access_token}) credential = ClientSecretCredential( diff --git a/sdk/identity/azure-identity/tests/test_default.py b/sdk/identity/azure-identity/tests/test_default.py index 842611afc7e6..25c09cdff694 100644 --- a/sdk/identity/azure-identity/tests/test_default.py +++ b/sdk/identity/azure-identity/tests/test_default.py @@ -15,6 +15,8 @@ from azure.identity._constants import EnvironmentVariables from azure.identity._credentials.azure_cli import AzureCliCredential from azure.identity._credentials.managed_identity import ManagedIdentityCredential +from azure.identity._credentials.vscode_credential import VSCodeCredential +import pytest from six.moves.urllib_parse import urlparse from helpers import mock_response, Request, validating_transport @@ -45,12 +47,14 @@ def test_iterates_only_once(): assert successful_credential.get_token.call_count == n + 1 -def test__authority(): +@pytest.mark.parametrize("authority", ("localhost", "https://localhost")) +def test_authority(authority): """the credential should accept authority configuration by keyword argument or environment""" - def test_initialization(mock_credential, expect_argument): - authority = "localhost" + parsed_authority = urlparse(authority) + expected_netloc = parsed_authority.netloc or authority # "localhost" parses to netloc "", path "localhost" + def test_initialization(mock_credential, expect_argument): DefaultAzureCredential(authority=authority) assert mock_credential.call_count == 1 @@ -62,7 +66,9 @@ def test_initialization(mock_credential, expect_argument): for _, kwargs in mock_credential.call_args_list: if expect_argument: - assert kwargs["authority"] == authority + actual = urlparse(kwargs["authority"]) + assert actual.scheme == "https" + assert actual.netloc == expected_netloc else: assert "authority" not in kwargs @@ -115,6 +121,9 @@ def assert_credentials_not_present(chain, *excluded_credential_classes): credential = DefaultAzureCredential(exclude_cli_credential=True) assert_credentials_not_present(credential, AzureCliCredential) + credential = DefaultAzureCredential(exclude_visual_studio_code_credential=True) + assert_credentials_not_present(credential, VSCodeCredential) + # interactive auth is excluded by default credential = DefaultAzureCredential(exclude_interactive_browser_credential=False) actual = {c.__class__ for c in credential.credentials} @@ -122,6 +131,7 @@ def assert_credentials_not_present(chain, *excluded_credential_classes): assert actual - default == {InteractiveBrowserCredential} + def test_shared_cache_tenant_id(): expected_access_token = "expected-access-token" refresh_token_a = "refresh-token-a" diff --git a/sdk/identity/azure-identity/tests/test_default_async.py b/sdk/identity/azure-identity/tests/test_default_async.py index 0472d351d8fd..c8eb0b17c4b2 100644 --- a/sdk/identity/azure-identity/tests/test_default_async.py +++ b/sdk/identity/azure-identity/tests/test_default_async.py @@ -12,6 +12,7 @@ from azure.identity.aio import DefaultAzureCredential, SharedTokenCacheCredential from azure.identity.aio._credentials.azure_cli import AzureCliCredential from azure.identity.aio._credentials.managed_identity import ManagedIdentityCredential +from azure.identity.aio._credentials.vscode_credential import VSCodeCredential from azure.identity._constants import EnvironmentVariables import pytest @@ -40,12 +41,14 @@ async def test_iterates_only_once(): assert successful_credential.get_token.call_count == n + 1 -def test_authority(): +@pytest.mark.parametrize("authority", ("localhost", "https://localhost")) +def test_authority(authority): """the credential should accept authority configuration by keyword argument or environment""" - def test_initialization(mock_credential, expect_argument): - authority = "localhost" + parsed_authority = urlparse(authority) + expected_netloc = parsed_authority.netloc or authority # "localhost" parses to netloc "", path "localhost" + def test_initialization(mock_credential, expect_argument): DefaultAzureCredential(authority=authority) assert mock_credential.call_count == 1 @@ -57,7 +60,9 @@ def test_initialization(mock_credential, expect_argument): for _, kwargs in mock_credential.call_args_list: if expect_argument: - assert kwargs["authority"] == authority + actual = urlparse(kwargs["authority"]) + assert actual.scheme == "https" + assert actual.netloc == expected_netloc else: assert "authority" not in kwargs @@ -111,6 +116,9 @@ def assert_credentials_not_present(chain, *credential_classes): credential = DefaultAzureCredential(exclude_cli_credential=True) assert_credentials_not_present(credential, AzureCliCredential) + credential = DefaultAzureCredential(exclude_visual_studio_code_credential=True) + assert_credentials_not_present(credential, VSCodeCredential) + @pytest.mark.asyncio async def test_shared_cache_tenant_id(): diff --git a/sdk/identity/azure-identity/tests/test_device_code_credential.py b/sdk/identity/azure-identity/tests/test_device_code_credential.py index 98a9fe4216ab..2b09a68f58ab 100644 --- a/sdk/identity/azure-identity/tests/test_device_code_credential.py +++ b/sdk/identity/azure-identity/tests/test_device_code_credential.py @@ -6,11 +6,19 @@ from azure.core.exceptions import ClientAuthenticationError from azure.core.pipeline.policies import SansIOHTTPPolicy -from azure.identity import DeviceCodeCredential +from azure.identity import AuthenticationRequiredError, DeviceCodeCredential from azure.identity._internal.user_agent import USER_AGENT +from msal import TokenCache import pytest -from helpers import build_aad_response, get_discovery_response, mock_response, Request, validating_transport +from helpers import ( + build_aad_response, + build_id_token, + get_discovery_response, + mock_response, + Request, + validating_transport, +) try: from unittest.mock import Mock @@ -22,10 +30,76 @@ def test_no_scopes(): """The credential should raise when get_token is called with no scopes""" credential = DeviceCodeCredential("client_id") - with pytest.raises(ClientAuthenticationError): + with pytest.raises(ValueError): credential.get_token() +def test_authenticate(): + client_id = "client-id" + environment = "localhost" + issuer = "https://" + environment + tenant_id = "some-tenant" + authority = issuer + "/" + tenant_id + + access_token = "***" + scope = "scope" + + # mock AAD response with id token + object_id = "object-id" + home_tenant = "home-tenant-id" + username = "me@work.com" + id_token = build_id_token(aud=client_id, iss=issuer, object_id=object_id, tenant_id=home_tenant, username=username) + auth_response = build_aad_response( + uid=object_id, utid=home_tenant, access_token=access_token, refresh_token="**", id_token=id_token + ) + + transport = validating_transport( + requests=[Request(url_substring=issuer)] * 4, + responses=[get_discovery_response(authority)] * 2 # instance and tenant discovery + + [ + mock_response( # start device code flow + json_payload={ + "device_code": "_", + "user_code": "user-code", + "verification_uri": "verification-uri", + "expires_in": 42, + } + ), + mock_response(json_payload=dict(auth_response, scope=scope)), # poll for completion + ], + ) + + credential = DeviceCodeCredential( + client_id, + prompt_callback=Mock(), # prevent credential from printing to stdout + transport=transport, + authority=environment, + tenant_id=tenant_id, + _cache=TokenCache(), + ) + record = credential.authenticate(scopes=(scope,)) + + # credential should have a cached access token for the scope used in authenticate + token = credential.get_token(scope) + assert token.token == access_token + + assert record.authority == environment + assert record.home_account_id == object_id + "." + home_tenant + assert record.tenant_id == home_tenant + assert record.username == username + + +def test_disable_automatic_authentication(): + """When configured for strict silent auth, the credential should raise when silent auth fails""" + + empty_cache = TokenCache() # empty cache makes silent auth impossible + transport = Mock(send=Mock(side_effect=Exception("no request should be sent"))) + credential = DeviceCodeCredential("client-id", disable_automatic_authentication=True, transport=transport, _cache=empty_cache) + + with pytest.raises(AuthenticationRequiredError): + credential.get_token("scope") + + def test_policies_configurable(): policy = Mock(spec_set=SansIOHTTPPolicy, on_request=Mock()) @@ -47,7 +121,7 @@ def test_policies_configurable(): ) credential = DeviceCodeCredential( - client_id="client-id", prompt_callback=Mock(), policies=[policy], transport=transport + client_id="client-id", prompt_callback=Mock(), policies=[policy], transport=transport, _cache=TokenCache() ) credential.get_token("scope") @@ -72,7 +146,9 @@ def test_user_agent(): ], ) - credential = DeviceCodeCredential(client_id="client-id", prompt_callback=Mock(), transport=transport) + credential = DeviceCodeCredential( + client_id="client-id", prompt_callback=Mock(), transport=transport, _cache=TokenCache() + ) credential.get_token("scope") @@ -110,7 +186,7 @@ def test_device_code_credential(): callback = Mock() credential = DeviceCodeCredential( - client_id="_", prompt_callback=callback, transport=transport, instance_discovery=False + client_id="_", prompt_callback=callback, transport=transport, instance_discovery=False, _cache=TokenCache() ) now = datetime.datetime.utcnow() @@ -142,7 +218,12 @@ def test_timeout(): ) credential = DeviceCodeCredential( - client_id="_", prompt_callback=Mock(), transport=transport, timeout=0.01, instance_discovery=False + client_id="_", + prompt_callback=Mock(), + transport=transport, + timeout=0.01, + instance_discovery=False, + _cache=TokenCache(), ) with pytest.raises(ClientAuthenticationError) as ex: diff --git a/sdk/identity/azure-identity/tests/test_environment_credential.py b/sdk/identity/azure-identity/tests/test_environment_credential.py index ebe77ed76571..2684263973c4 100644 --- a/sdk/identity/azure-identity/tests/test_environment_credential.py +++ b/sdk/identity/azure-identity/tests/test_environment_credential.py @@ -53,3 +53,93 @@ def test_passes_authority_argument(credential_name, environment_variables): assert mock_credential.call_count == 1 _, kwargs = mock_credential.call_args assert kwargs["authority"] == authority + + +def test_client_secret_configuration(): + """the credential should pass expected values and any keyword arguments to its inner credential""" + + client_id = "client-id" + client_secret = "..." + tenant_id = "tenant_id" + bar = "bar" + + environment = { + EnvironmentVariables.AZURE_CLIENT_ID: client_id, + EnvironmentVariables.AZURE_CLIENT_SECRET: client_secret, + EnvironmentVariables.AZURE_TENANT_ID: tenant_id, + } + with mock.patch(EnvironmentCredential.__module__ + ".ClientSecretCredential") as mock_credential: + with mock.patch.dict("os.environ", environment, clear=True): + EnvironmentCredential(foo=bar) + + assert mock_credential.call_count == 1 + _, kwargs = mock_credential.call_args + assert kwargs["client_id"] == client_id + assert kwargs["client_secret"] == client_secret + assert kwargs["tenant_id"] == tenant_id + assert kwargs["foo"] == bar + + +def test_certificate_configuration(): + """the credential should pass expected values and any keyword arguments to its inner credential""" + + client_id = "client-id" + certificate_path = "..." + tenant_id = "tenant_id" + bar = "bar" + + environment = { + EnvironmentVariables.AZURE_CLIENT_ID: client_id, + EnvironmentVariables.AZURE_CLIENT_CERTIFICATE_PATH: certificate_path, + EnvironmentVariables.AZURE_TENANT_ID: tenant_id, + } + with mock.patch(EnvironmentCredential.__module__ + ".CertificateCredential") as mock_credential: + with mock.patch.dict("os.environ", environment, clear=True): + EnvironmentCredential(foo=bar) + + assert mock_credential.call_count == 1 + _, kwargs = mock_credential.call_args + assert kwargs["client_id"] == client_id + assert kwargs["certificate_path"] == certificate_path + assert kwargs["tenant_id"] == tenant_id + assert kwargs["foo"] == bar + + +def test_username_password_configuration(): + """the credential should pass expected values and any keyword arguments to its inner credential""" + + client_id = "client-id" + username = "me@work.com" + password = "password" + bar = "bar" + + environment = { + EnvironmentVariables.AZURE_CLIENT_ID: client_id, + EnvironmentVariables.AZURE_USERNAME: username, + EnvironmentVariables.AZURE_PASSWORD: password, + } + with mock.patch(EnvironmentCredential.__module__ + ".UsernamePasswordCredential") as mock_credential: + with mock.patch.dict("os.environ", environment, clear=True): + EnvironmentCredential(foo=bar) + + assert mock_credential.call_count == 1 + _, kwargs = mock_credential.call_args + assert kwargs["client_id"] == client_id + assert kwargs["username"] == username + assert kwargs["password"] == password + assert kwargs["foo"] == bar + + # optional tenant id should be used when set + tenant_id = "tenant-id" + environment = dict(environment, **{EnvironmentVariables.AZURE_TENANT_ID: tenant_id}) + with mock.patch(EnvironmentCredential.__module__ + ".UsernamePasswordCredential") as mock_credential: + with mock.patch.dict("os.environ", environment, clear=True): + EnvironmentCredential(foo=bar) + + assert mock_credential.call_count == 1 + _, kwargs = mock_credential.call_args + assert kwargs["client_id"] == client_id + assert kwargs["username"] == username + assert kwargs["password"] == password + assert kwargs["tenant_id"] == tenant_id + assert kwargs["foo"] == bar diff --git a/sdk/identity/azure-identity/tests/test_environment_credential_async.py b/sdk/identity/azure-identity/tests/test_environment_credential_async.py index 7c95172d9752..6e7a1ee260ef 100644 --- a/sdk/identity/azure-identity/tests/test_environment_credential_async.py +++ b/sdk/identity/azure-identity/tests/test_environment_credential_async.py @@ -47,3 +47,53 @@ def test_passes_authority_argument(credential_name, environment_variables): assert mock_credential.call_count == 1 _, kwargs = mock_credential.call_args assert kwargs["authority"] == authority + + +def test_client_secret_configuration(): + """the credential should pass expected values and any keyword arguments to its inner credential""" + + client_id = "client-id" + client_secret = "..." + tenant_id = "tenant_id" + bar = "bar" + + environment = { + EnvironmentVariables.AZURE_CLIENT_ID: client_id, + EnvironmentVariables.AZURE_CLIENT_SECRET: client_secret, + EnvironmentVariables.AZURE_TENANT_ID: tenant_id, + } + with mock.patch(EnvironmentCredential.__module__ + ".ClientSecretCredential") as mock_credential: + with mock.patch.dict("os.environ", environment, clear=True): + EnvironmentCredential(foo=bar) + + assert mock_credential.call_count == 1 + _, kwargs = mock_credential.call_args + assert kwargs["client_id"] == client_id + assert kwargs["client_secret"] == client_secret + assert kwargs["tenant_id"] == tenant_id + assert kwargs["foo"] == bar + + +def test_certificate_configuration(): + """the credential should pass expected values and any keyword arguments to its inner credential""" + + client_id = "client-id" + certificate_path = "..." + tenant_id = "tenant_id" + bar = "bar" + + environment = { + EnvironmentVariables.AZURE_CLIENT_ID: client_id, + EnvironmentVariables.AZURE_CLIENT_CERTIFICATE_PATH: certificate_path, + EnvironmentVariables.AZURE_TENANT_ID: tenant_id, + } + with mock.patch(EnvironmentCredential.__module__ + ".CertificateCredential") as mock_credential: + with mock.patch.dict("os.environ", environment, clear=True): + EnvironmentCredential(foo=bar) + + assert mock_credential.call_count == 1 + _, kwargs = mock_credential.call_args + assert kwargs["client_id"] == client_id + assert kwargs["certificate_path"] == certificate_path + assert kwargs["tenant_id"] == tenant_id + assert kwargs["foo"] == bar diff --git a/sdk/identity/azure-identity/tests/test_identity.py b/sdk/identity/azure-identity/tests/test_identity.py index 60216c0e9d23..80c8e71747f0 100644 --- a/sdk/identity/azure-identity/tests/test_identity.py +++ b/sdk/identity/azure-identity/tests/test_identity.py @@ -21,12 +21,52 @@ EnvironmentCredential, ) from azure.identity._credentials.managed_identity import ImdsCredential -from azure.identity._constants import EnvironmentVariables +from azure.identity._constants import EnvironmentVariables, KnownAuthorities +from azure.identity._internal import get_default_authority, normalize_authority import pytest from helpers import mock_response, Request, validating_transport +def test_get_default_authority(): + """get_default_authority should return public cloud or the value of $AZURE_AUTHORITY_HOST, with 'https' scheme""" + + # default scheme is https + for authority in ("localhost", "https://localhost"): + with patch.dict("os.environ", {EnvironmentVariables.AZURE_AUTHORITY_HOST: authority}, clear=True): + assert get_default_authority() == "https://localhost" + + # default to public cloud + for environ in ({}, {EnvironmentVariables.AZURE_AUTHORITY_HOST: KnownAuthorities.AZURE_PUBLIC_CLOUD}): + with patch.dict("os.environ", environ, clear=True): + assert get_default_authority() == "https://" + KnownAuthorities.AZURE_PUBLIC_CLOUD + + # require https + with pytest.raises(ValueError): + with patch.dict("os.environ", {EnvironmentVariables.AZURE_AUTHORITY_HOST: "http://localhost"}, clear=True): + get_default_authority() + + +def test_normalize_authority(): + """normalize_authority should return a URI with a scheme and no trailing spaces or forward slashes""" + + localhost = "localhost" + localhost_tls = "https://" + localhost + + # accept https if specified, default to it when no scheme specified + for uri in (localhost, localhost_tls): + assert normalize_authority(uri) == localhost_tls + + # remove trailing characters + for string in ("/", " ", "/ ", " /"): + assert normalize_authority(uri + string) == localhost_tls + + # raise for other schemes + for scheme in ("http", "file"): + with pytest.raises(ValueError): + normalize_authority(scheme + "://localhost") + + def test_client_secret_environment_credential(): client_id = "fake-client-id" secret = "fake-client-secret" @@ -204,53 +244,3 @@ def test_default_credential_shared_cache_use(mock_credential): assert mock_credential.call_count == 1 assert mock_credential.supported.call_count == 1 mock_credential.supported.reset_mock() - - -def test_username_password_environment_credential(): - client_id = "fake-client-id" - username = "foo@bar.com" - password = "password" - expected_token = "***" - - create_transport = functools.partial( - validating_transport, - requests=[Request()] * 3, # not validating requests because they're formed by MSAL - responses=[ - # tenant discovery - mock_response(json_payload={"authorization_endpoint": "https://a/b", "token_endpoint": "https://a/b"}), - # user realm discovery, interests MSAL only when the response body contains account_type == "Federated" - mock_response(json_payload={}), - # token request - mock_response( - json_payload={ - "access_token": expected_token, - "expires_in": 42, - "token_type": "Bearer", - "ext_expires_in": 42, - } - ), - ], - ) - - environment = { - EnvironmentVariables.AZURE_CLIENT_ID: client_id, - EnvironmentVariables.AZURE_USERNAME: username, - EnvironmentVariables.AZURE_PASSWORD: password, - } - with patch("os.environ", environment): - token = EnvironmentCredential(transport=create_transport()).get_token("scope") - - # not validating expires_on because doing so requires monkeypatching time, and this is tested elsewhere - assert token.token == expected_token - - # now with a tenant id - environment = { - EnvironmentVariables.AZURE_CLIENT_ID: client_id, - EnvironmentVariables.AZURE_USERNAME: username, - EnvironmentVariables.AZURE_PASSWORD: password, - EnvironmentVariables.AZURE_TENANT_ID: "tenant_id", - } - with patch("os.environ", environment): - token = EnvironmentCredential(transport=create_transport()).get_token("scope") - - assert token.token == expected_token diff --git a/sdk/identity/azure-identity/tests/test_interactive_credential.py b/sdk/identity/azure-identity/tests/test_interactive_credential.py index 4dd245e8973d..5dd7ed4fbfee 100644 --- a/sdk/identity/azure-identity/tests/test_interactive_credential.py +++ b/sdk/identity/azure-identity/tests/test_interactive_credential.py @@ -10,14 +10,21 @@ from azure.core.exceptions import ClientAuthenticationError from azure.core.pipeline.policies import SansIOHTTPPolicy -from azure.identity import InteractiveBrowserCredential +from azure.identity import AuthenticationRequiredError, InteractiveBrowserCredential from azure.identity._internal import AuthCodeRedirectServer from azure.identity._internal.user_agent import USER_AGENT - +from msal import TokenCache import pytest from six.moves import urllib, urllib_parse -from helpers import build_aad_response, get_discovery_response, mock_response, Request, validating_transport +from helpers import ( + build_aad_response, + build_id_token, + get_discovery_response, + mock_response, + Request, + validating_transport, +) try: from unittest.mock import Mock, patch @@ -25,13 +32,82 @@ from mock import Mock, patch # type: ignore +WEBBROWSER_OPEN = InteractiveBrowserCredential.__module__ + ".webbrowser.open" + + def test_no_scopes(): """The credential should raise when get_token is called with no scopes""" - with pytest.raises(ClientAuthenticationError): + with pytest.raises(ValueError): InteractiveBrowserCredential().get_token() +def test_authenticate(): + client_id = "client-id" + environment = "localhost" + issuer = "https://" + environment + tenant_id = "some-tenant" + authority = issuer + "/" + tenant_id + + access_token = "***" + scope = "scope" + + # mock AAD response with id token + object_id = "object-id" + home_tenant = "home-tenant-id" + username = "me@work.com" + id_token = build_id_token(aud=client_id, iss=issuer, object_id=object_id, tenant_id=home_tenant, username=username) + auth_response = build_aad_response( + uid=object_id, utid=home_tenant, access_token=access_token, refresh_token="**", id_token=id_token + ) + + transport = validating_transport( + requests=[Request(url_substring=issuer)] * 3, + responses=[get_discovery_response(authority)] * 2 + [mock_response(json_payload=auth_response)], + ) + + # mock local server fakes successful authentication by immediately returning a well-formed response + oauth_state = "state" + auth_code_response = {"code": "authorization-code", "state": [oauth_state]} + server_class = Mock(return_value=Mock(wait_for_redirect=lambda: auth_code_response)) + + with patch(InteractiveBrowserCredential.__module__ + ".uuid.uuid4", lambda: oauth_state): + with patch(WEBBROWSER_OPEN, lambda _: True): + credential = InteractiveBrowserCredential( + _cache=TokenCache(), + authority=environment, + client_id=client_id, + server_class=server_class, + tenant_id=tenant_id, + transport=transport, + ) + record = credential.authenticate(scopes=(scope,)) + + # credential should have a cached access token for the scope used in authenticate + with patch(WEBBROWSER_OPEN, Mock(side_effect=Exception("credential should authenticate silently"))): + token = credential.get_token(scope) + assert token.token == access_token + + assert record.authority == environment + assert record.home_account_id == object_id + "." + home_tenant + assert record.tenant_id == home_tenant + assert record.username == username + + +def test_disable_automatic_authentication(): + """When configured for strict silent auth, the credential should raise when silent auth fails""" + + empty_cache = TokenCache() # empty cache makes silent auth impossible + transport = Mock(send=Mock(side_effect=Exception("no request should be sent"))) + credential = InteractiveBrowserCredential( + disable_automatic_authentication=True, transport=transport, _cache=empty_cache + ) + + with patch(WEBBROWSER_OPEN, Mock(side_effect=Exception("credential shouldn't try interactive authentication"))): + with pytest.raises(AuthenticationRequiredError): + credential.get_token("scope") + + @patch("azure.identity._credentials.browser.webbrowser.open", lambda _: True) def test_policies_configurable(): policy = Mock(spec_set=SansIOHTTPPolicy, on_request=Mock()) @@ -46,7 +122,9 @@ def test_policies_configurable(): auth_code_response = {"code": "authorization-code", "state": [oauth_state]} server_class = Mock(return_value=Mock(wait_for_redirect=lambda: auth_code_response)) - credential = InteractiveBrowserCredential(policies=[policy], transport=transport, server_class=server_class) + credential = InteractiveBrowserCredential( + policies=[policy], transport=transport, server_class=server_class, _cache=TokenCache() + ) with patch("azure.identity._credentials.browser.uuid.uuid4", lambda: oauth_state): credential.get_token("scope") @@ -66,7 +144,7 @@ def test_user_agent(): auth_code_response = {"code": "authorization-code", "state": [oauth_state]} server_class = Mock(return_value=Mock(wait_for_redirect=lambda: auth_code_response)) - credential = InteractiveBrowserCredential(transport=transport, server_class=server_class) + credential = InteractiveBrowserCredential(transport=transport, server_class=server_class, _cache=TokenCache()) with patch("azure.identity._credentials.browser.uuid.uuid4", lambda: oauth_state): credential.get_token("scope") @@ -101,7 +179,8 @@ def test_interactive_credential(mock_open): expires_in=expires_in, refresh_token=expected_refresh_token, uid="uid", - utid="utid", + utid=tenant_id, + id_token=build_id_token(aud=client_id, object_id="uid", tenant_id=tenant_id, iss=endpoint), token_type="Bearer", ) ), @@ -119,11 +198,11 @@ def test_interactive_credential(mock_open): authority=authority, tenant_id=tenant_id, client_id=client_id, - client_secret="secret", server_class=server_class, transport=transport, instance_discovery=False, validate_authority=False, + _cache=TokenCache(), ) # The credential's auth code request includes a uuid which must be included in the redirect. Patching to @@ -171,11 +250,11 @@ def test_interactive_credential_timeout(): credential = InteractiveBrowserCredential( client_id="guid", - client_secret="secret", server_class=server_class, timeout=timeout, transport=transport, instance_discovery=False, # kwargs are passed to MSAL; this one prevents an AAD verification request + _cache=TokenCache(), ) with pytest.raises(ClientAuthenticationError) as ex: @@ -216,7 +295,7 @@ def test_redirect_server(): def test_no_browser(): transport = validating_transport(requests=[Request()] * 2, responses=[get_discovery_response()] * 2) credential = InteractiveBrowserCredential( - client_id="client-id", client_secret="secret", server_class=Mock(), transport=transport + client_id="client-id", server_class=Mock(), transport=transport, _cache=TokenCache() ) with pytest.raises(ClientAuthenticationError, match=r".*browser.*"): credential.get_token("scope") diff --git a/sdk/identity/azure-identity/tests/test_msal_interactive_credential.py b/sdk/identity/azure-identity/tests/test_msal_interactive_credential.py new file mode 100644 index 000000000000..16b05efa643a --- /dev/null +++ b/sdk/identity/azure-identity/tests/test_msal_interactive_credential.py @@ -0,0 +1,227 @@ +# ------------------------------------ +# Copyright (c) Microsoft Corporation. +# Licensed under the MIT License. +# ------------------------------------ +from azure.core.exceptions import ClientAuthenticationError +from azure.identity import ( + AuthenticationRequiredError, + AuthenticationRecord, + KnownAuthorities, + CredentialUnavailableError, +) +from azure.identity._internal.msal_credentials import InteractiveCredential +from msal import TokenCache +import pytest + +try: + from unittest.mock import Mock, patch +except ImportError: # python < 3.3 + from mock import Mock, patch # type: ignore + + +class MockCredential(InteractiveCredential): + """Test class to drive InteractiveCredential. + + Default instances have an empty in-memory cache, and raise rather than send an HTTP request. + """ + + def __init__( + self, client_id="...", request_token=None, cache=None, msal_app_factory=None, transport=None, **kwargs + ): + self._msal_app_factory = msal_app_factory + self._request_token_impl = request_token or Mock() + transport = transport or Mock(send=Mock(side_effect=Exception("credential shouldn't send a request"))) + super(MockCredential, self).__init__( + client_id=client_id, _cache=cache or TokenCache(), transport=transport, **kwargs + ) + + def _request_token(self, *scopes, **kwargs): + return self._request_token_impl(*scopes, **kwargs) + + def _get_app(self): + if self._msal_app_factory: + return self._create_app(self._msal_app_factory) + return super(MockCredential, self)._get_app() + + +def test_no_scopes(): + """The credential should raise when get_token is called with no scopes""" + + request_token = Mock(side_effect=Exception("credential shouldn't begin interactive authentication")) + with pytest.raises(ValueError): + MockCredential(request_token=request_token).get_token() + + +def test_authentication_record_argument(): + """The credential should initialize its msal.ClientApplication with values from a given record""" + + record = AuthenticationRecord("tenant-id", "client-id", "localhost", "object.tenant", "username") + + def validate_app_parameters(authority, client_id, **_): + # the 'authority' argument to msal.ClientApplication should be a URL of the form https://authority/tenant + assert authority == "https://{}/{}".format(record.authority, record.tenant_id) + assert client_id == record.client_id + return Mock(get_accounts=Mock(return_value=[])) + + app_factory = Mock(wraps=validate_app_parameters) + credential = MockCredential( + authentication_record=record, disable_automatic_authentication=True, msal_app_factory=app_factory, + ) + with pytest.raises(AuthenticationRequiredError): + credential.get_token("scope") + + assert app_factory.call_count == 1, "credential didn't create an msal application" + + +def test_tenant_argument_overrides_record(): + """The 'tenant_ic' keyword argument should override a given record's value""" + + tenant_id = "some-guid" + authority = "localhost" + record = AuthenticationRecord(tenant_id, "client-id", authority, "object.tenant", "username") + + expected_tenant = tenant_id[::-1] + expected_authority = "https://{}/{}".format(authority, expected_tenant) + + def validate_authority(authority, **_): + assert authority == expected_authority + return Mock(get_accounts=Mock(return_value=[])) + + credential = MockCredential( + authentication_record=record, + tenant_id=expected_tenant, + disable_automatic_authentication=True, + msal_app_factory=validate_authority, + ) + with pytest.raises(AuthenticationRequiredError): + credential.get_token("scope") + + +def test_disable_automatic_authentication(): + """When silent auth fails the credential should raise, if it's configured not to authenticate automatically""" + + expected_details = "something went wrong" + record = AuthenticationRecord("tenant-id", "client-id", "localhost", "object.tenant", "username") + msal_app = Mock( + acquire_token_silent_with_error=Mock(return_value={"error_description": expected_details}), + get_accounts=Mock(return_value=[{"home_account_id": record.home_account_id}]), + ) + + credential = MockCredential( + authentication_record=record, + disable_automatic_authentication=True, + msal_app_factory=lambda *_, **__: msal_app, + request_token=Mock(side_effect=Exception("credential shouldn't begin interactive authentication")), + ) + + scope = "scope" + with pytest.raises(AuthenticationRequiredError) as ex: + credential.get_token(scope) + + # the exception should carry the requested scopes and any error message from AAD + assert ex.value.scopes == (scope,) + assert ex.value.error_details == expected_details + + +def test_scopes_round_trip(): + """authenticate should accept the value of AuthenticationRequiredError.scopes""" + + scope = "scope" + + def validate_scopes(*scopes, **_): + assert scopes == (scope,) + return {"access_token": "**", "expires_in": 42} + + request_token = Mock(wraps=validate_scopes) + credential = MockCredential(disable_automatic_authentication=True, request_token=request_token) + with pytest.raises(AuthenticationRequiredError) as ex: + credential.get_token(scope) + + credential.authenticate(scopes=ex.value.scopes) + + assert request_token.call_count == 1, "validation method wasn't called" + + +@pytest.mark.parametrize( + "authority,expected_scope", + ( + (KnownAuthorities.AZURE_CHINA, "https://management.core.chinacloudapi.cn//.default"), + (KnownAuthorities.AZURE_GERMANY, "https://management.core.cloudapi.de//.default"), + (KnownAuthorities.AZURE_GOVERNMENT, "https://management.core.usgovcloudapi.net//.default"), + (KnownAuthorities.AZURE_PUBLIC_CLOUD, "https://management.core.windows.net//.default"), + ), +) +def test_authenticate_default_scopes(authority, expected_scope): + """when given no scopes, authenticate should default to the ARM scope appropriate for the configured authority""" + + def validate_scopes(*scopes): + assert scopes == (expected_scope,) + return {"access_token": "**", "expires_in": 42} + + request_token = Mock(wraps=validate_scopes) + MockCredential(authority=authority, request_token=request_token).authenticate() + assert request_token.call_count == 1 + + +def test_authenticate_unknown_cloud(): + """authenticate should raise when given no scopes in an unknown cloud""" + + with pytest.raises(CredentialUnavailableError): + MockCredential(authority="localhost").authenticate() + + +@pytest.mark.parametrize("option", (True, False)) +def test_authenticate_ignores_disable_automatic_authentication(option): + """authenticate should prompt for authentication regardless of the credential's configuration""" + + request_token = Mock(return_value={"access_token": "**", "expires_in": 42}) + MockCredential(request_token=request_token, disable_automatic_authentication=option).authenticate() + assert request_token.call_count == 1, "credential didn't begin interactive authentication" + + +def test_get_token_wraps_exceptions(): + """get_token shouldn't propagate exceptions from MSAL""" + + class CustomException(Exception): + pass + + expected_message = "something went wrong" + record = AuthenticationRecord("tenant-id", "client-id", "localhost", "object.tenant", "username") + msal_app = Mock( + acquire_token_silent_with_error=Mock(side_effect=CustomException(expected_message)), + get_accounts=Mock(return_value=[{"home_account_id": record.home_account_id}]), + ) + credential = MockCredential(msal_app_factory=lambda *_, **__: msal_app, authentication_record=record) + with pytest.raises(ClientAuthenticationError) as ex: + credential.get_token("scope") + + assert expected_message in ex.value.message + assert msal_app.acquire_token_silent_with_error.call_count == 1, "credential didn't attempt silent auth" + + +def test_enable_persistent_cache(): + """the credential should use the persistent cache only when given enable_persistent_cache=True""" + + class TestCredential(InteractiveCredential): + def _request_token(self, *_, **__): + pass + + expected_cache = Mock() + persistent_cache_loader = InteractiveCredential.__module__ + "._load_persistent_cache" + + # credential should default to an in memory cache + raise_when_called = Mock(side_effect=Exception("credential shouldn't attempt to load a persistent cache")) + with patch(persistent_cache_loader, raise_when_called): + with patch(InteractiveCredential.__module__ + ".msal.TokenCache", lambda: expected_cache): + credential = TestCredential(client_id="...") + assert credential._cache is expected_cache + + # keyword argument opts in to persistent cache + with patch(persistent_cache_loader, lambda: expected_cache): + credential = TestCredential(client_id="...", enable_persistent_cache=True) + assert credential._cache is expected_cache + + # opting in on an unsupported platform raises an exception + with patch(InteractiveCredential.__module__ + ".sys.platform", "commodore64"): + with pytest.raises(NotImplementedError): + TestCredential(client_id="...", enable_persistent_cache=True) diff --git a/sdk/identity/azure-identity/tests/test_shared_cache_credential.py b/sdk/identity/azure-identity/tests/test_shared_cache_credential.py index e6f7572be250..daf5a73dd503 100644 --- a/sdk/identity/azure-identity/tests/test_shared_cache_credential.py +++ b/sdk/identity/azure-identity/tests/test_shared_cache_credential.py @@ -17,6 +17,7 @@ from azure.identity._internal.user_agent import USER_AGENT from msal import TokenCache import pytest +from six.moves.urllib_parse import urlparse try: from unittest.mock import Mock, patch @@ -64,6 +65,26 @@ def test_user_agent(): credential.get_token("scope") +@pytest.mark.parametrize("authority", ("localhost", "https://localhost")) +def test_authority(authority): + """the credential should accept an authority, with or without scheme, as an argument or environment variable""" + + parsed_authority = urlparse(authority) + expected_netloc = parsed_authority.netloc or authority # "localhost" parses to netloc "", path "localhost" + + class MockCredential(SharedTokenCacheCredential): + def _get_auth_client(self, authority=None, **kwargs): + actual = urlparse(authority) + assert actual.scheme == "https" + assert actual.netloc == expected_netloc + + transport = Mock(send=Mock(side_effect=Exception("credential shouldn't send a request"))) + MockCredential(_cache=TokenCache(), authority=authority, transport=transport) + + with patch.dict("os.environ", {EnvironmentVariables.AZURE_AUTHORITY_HOST: authority}, clear=True): + MockCredential(_cache=TokenCache(), authority=authority, transport=transport) + + def test_empty_cache(): """the credential should raise CredentialUnavailableError when the cache is empty""" @@ -484,6 +505,11 @@ def test_authority_environment_variable(): def get_account_event( username, uid, utid, authority=None, client_id="client-id", refresh_token="refresh-token", scopes=None ): + if authority: + endpoint = "https://" + "/".join((authority, utid, "path",)) + else: + endpoint = get_default_authority() + "/{}/{}".format(utid, "path") + return { "response": build_aad_response( uid=uid, @@ -493,7 +519,7 @@ def get_account_event( foci="1", ), "client_id": client_id, - "token_endpoint": "https://" + "/".join((authority or get_default_authority(), utid, "/path",)), + "token_endpoint": endpoint, "scope": scopes or ["scope"], } diff --git a/sdk/identity/azure-identity/tests/test_shared_cache_credential_async.py b/sdk/identity/azure-identity/tests/test_shared_cache_credential_async.py index 9ee971517c98..c718eaf3481c 100644 --- a/sdk/identity/azure-identity/tests/test_shared_cache_credential_async.py +++ b/sdk/identity/azure-identity/tests/test_shared_cache_credential_async.py @@ -3,6 +3,7 @@ # Licensed under the MIT License. # ------------------------------------ from unittest.mock import Mock, patch +from urllib.parse import urlparse from azure.core.exceptions import ClientAuthenticationError from azure.core.pipeline.policies import SansIOHTTPPolicy @@ -108,6 +109,26 @@ async def test_user_agent(): await credential.get_token("scope") +@pytest.mark.parametrize("authority", ("localhost", "https://localhost")) +def test_authority(authority): + """the credential should accept an authority, with or without scheme, as an argument or environment variable""" + + parsed_authority = urlparse(authority) + expected_netloc = parsed_authority.netloc or authority # "localhost" parses to netloc "", path "localhost" + + class MockCredential(SharedTokenCacheCredential): + def _get_auth_client(self, authority=None, **kwargs): + actual = urlparse(authority) + assert actual.scheme == "https" + assert actual.netloc == expected_netloc + + transport = Mock(send=Mock(side_effect=Exception("credential shouldn't send a request"))) + MockCredential(_cache=TokenCache(), authority=authority, transport=transport) + + with patch.dict("os.environ", {EnvironmentVariables.AZURE_AUTHORITY_HOST: authority}, clear=True): + MockCredential(_cache=TokenCache(), authority=authority, transport=transport) + + @pytest.mark.asyncio async def test_empty_cache(): """the credential should raise CredentialUnavailableError when the cache is empty""" diff --git a/sdk/identity/azure-identity/tests/test_username_password_credential.py b/sdk/identity/azure-identity/tests/test_username_password_credential.py index 16eb0a246e0d..a3e154c89fae 100644 --- a/sdk/identity/azure-identity/tests/test_username_password_credential.py +++ b/sdk/identity/azure-identity/tests/test_username_password_credential.py @@ -3,17 +3,23 @@ # Licensed under the MIT License. # ------------------------------------ from azure.core.exceptions import ClientAuthenticationError -from azure.core.pipeline.policies import ContentDecodePolicy, SansIOHTTPPolicy +from azure.core.pipeline.policies import SansIOHTTPPolicy from azure.identity import UsernamePasswordCredential from azure.identity._internal.user_agent import USER_AGENT import pytest -from helpers import build_aad_response, get_discovery_response, mock_response, Request, validating_transport +from helpers import ( + build_aad_response, + get_discovery_response, + mock_response, + Request, + validating_transport, +) try: - from unittest.mock import Mock + from unittest.mock import Mock, patch except ImportError: # python < 3.3 - from mock import Mock # type: ignore + from mock import Mock, patch # type: ignore def test_no_scopes(): @@ -80,3 +86,15 @@ def test_username_password_credential(): token = credential.get_token("scope") assert token.token == expected_token + + +def test_cache_persistence(): + """The credential should cache only in memory""" + + expected_cache = Mock() + raise_when_called = Mock(side_effect=Exception("credential shouldn't attempt to load a persistent cache")) + with patch.multiple("msal_extensions.token_cache", WindowsTokenCache=raise_when_called): + with patch("msal.TokenCache", Mock(return_value=expected_cache)): + credential = UsernamePasswordCredential("...", "...", "...") + + assert credential._cache is expected_cache diff --git a/sdk/identity/azure-identity/tests/test_vscode_credential.py b/sdk/identity/azure-identity/tests/test_vscode_credential.py new file mode 100644 index 000000000000..b5d9f4adc28f --- /dev/null +++ b/sdk/identity/azure-identity/tests/test_vscode_credential.py @@ -0,0 +1,123 @@ +# ------------------------------------ +# Copyright (c) Microsoft Corporation. +# Licensed under the MIT License. +# ------------------------------------ +import sys +import pytest +from azure.core.credentials import AccessToken +from azure.identity import CredentialUnavailableError +from azure.core.pipeline.policies import SansIOHTTPPolicy +from azure.identity._internal.user_agent import USER_AGENT +from helpers import build_aad_response, mock_response, Request, validating_transport + +try: + from unittest import mock +except ImportError: # python < 3.3 + import mock +from azure.identity._credentials.vscode_credential import VSCodeCredential, get_credentials + + +def test_no_scopes(): + """The credential should raise ValueError when get_token is called with no scopes""" + + credential = VSCodeCredential() + with pytest.raises(ValueError): + credential.get_token() + + +def test_policies_configurable(): + policy = mock.Mock(spec_set=SansIOHTTPPolicy, on_request=mock.Mock()) + + def send(*_, **__): + return mock_response(json_payload=build_aad_response(access_token="**")) + + with mock.patch(VSCodeCredential.__module__ + ".get_credentials", return_value="VALUE"): + credential = VSCodeCredential(policies=[policy], transport=mock.Mock(send=send)) + credential.get_token("scope") + assert policy.on_request.called + + +def test_user_agent(): + transport = validating_transport( + requests=[Request(required_headers={"User-Agent": USER_AGENT})], + responses=[mock_response(json_payload=build_aad_response(access_token="**"))], + ) + + with mock.patch(VSCodeCredential.__module__ + ".get_credentials", return_value="VALUE"): + credential = VSCodeCredential(transport=transport) + credential.get_token("scope") + + +def test_credential_unavailable_error(): + with mock.patch(VSCodeCredential.__module__ + ".get_credentials", return_value=None): + credential = VSCodeCredential() + with pytest.raises(CredentialUnavailableError): + token = credential.get_token("scope") + + +def test_redeem_token(): + expected_token = AccessToken("token", 42) + + mock_client = mock.Mock(spec=object) + mock_client.obtain_token_by_refresh_token = mock.Mock(return_value=expected_token) + mock_client.get_cached_access_token = mock.Mock(return_value=None) + + with mock.patch(VSCodeCredential.__module__ + ".get_credentials", return_value="VALUE"): + credential = VSCodeCredential(_client=mock_client) + token = credential.get_token("scope") + assert token is expected_token + mock_client.obtain_token_by_refresh_token.assert_called_with("VALUE", ("scope",)) + assert mock_client.obtain_token_by_refresh_token.call_count == 1 + + +def test_cache_refresh_token(): + expected_token = AccessToken("token", 42) + + mock_client = mock.Mock(spec=object) + mock_client.obtain_token_by_refresh_token = mock.Mock(return_value=expected_token) + mock_client.get_cached_access_token = mock.Mock(return_value=None) + mock_get_credentials = mock.Mock(return_value="VALUE") + + with mock.patch(VSCodeCredential.__module__ + ".get_credentials", mock_get_credentials): + credential = VSCodeCredential(_client=mock_client) + token = credential.get_token("scope") + assert token is expected_token + assert mock_get_credentials.call_count == 1 + token = credential.get_token("scope") + assert token is expected_token + assert mock_get_credentials.call_count == 1 + + +def test_no_obtain_token_if_cached(): + expected_token = AccessToken("token", 42) + + mock_client = mock.Mock(spec=object) + mock_client.obtain_token_by_refresh_token = mock.Mock(return_value=expected_token) + mock_client.get_cached_access_token = mock.Mock(return_value='VALUE') + + with mock.patch(VSCodeCredential.__module__ + ".get_credentials", return_value="VALUE"): + credential = VSCodeCredential(_client=mock_client) + token = credential.get_token("scope") + assert mock_client.obtain_token_by_refresh_token.call_count == 0 + + +@pytest.mark.skipif(not sys.platform.startswith("darwin"), reason="This test only runs on MacOS") +def test_mac_keychain_valid_value(): + with mock.patch("msal_extensions.osx.Keychain.get_generic_password", return_value="VALUE"): + assert get_credentials() == "VALUE" + + +@pytest.mark.skipif(not sys.platform.startswith("darwin"), reason="This test only runs on MacOS") +def test_mac_keychain_error(): + from msal_extensions.osx import Keychain, KeychainError + + with mock.patch.object(Keychain, "get_generic_password", side_effect=KeychainError(-1)): + credential = VSCodeCredential() + with pytest.raises(CredentialUnavailableError): + token = credential.get_token("scope") + + +@pytest.mark.skipif(not sys.platform.startswith("linux"), reason="This test only runs on Linux") +def test_get_token(): + with mock.patch("azure.identity._credentials.linux_vscode_adapter._get_refresh_token", return_value="VALUE"): + assert get_credentials() == "VALUE" diff --git a/sdk/identity/azure-identity/tests/test_vscode_credential_async.py b/sdk/identity/azure-identity/tests/test_vscode_credential_async.py new file mode 100644 index 000000000000..d8ca3ae574cc --- /dev/null +++ b/sdk/identity/azure-identity/tests/test_vscode_credential_async.py @@ -0,0 +1,104 @@ +# ------------------------------------ +# Copyright (c) Microsoft Corporation. +# Licensed under the MIT License. +# ------------------------------------ +import sys +import pytest +from azure.core.credentials import AccessToken +from azure.identity._internal.user_agent import USER_AGENT +from azure.identity import CredentialUnavailableError +from azure.core.pipeline.policies import SansIOHTTPPolicy +from helpers import build_aad_response, mock_response, Request +from helpers_async import async_validating_transport, AsyncMockTransport, wrap_in_future +from unittest import mock +from azure.identity.aio._credentials.vscode_credential import VSCodeCredential + + +@pytest.mark.asyncio +async def test_no_scopes(): + """The credential should raise ValueError when get_token is called with no scopes""" + + credential = VSCodeCredential() + with pytest.raises(ValueError): + await credential.get_token() + + +@pytest.mark.asyncio +async def test_policies_configurable(): + policy = mock.Mock(spec_set=SansIOHTTPPolicy, on_request=mock.Mock()) + + async def send(*_, **__): + return mock_response(json_payload=build_aad_response(access_token="**")) + + with mock.patch(VSCodeCredential.__module__ + ".get_credentials", return_value="VALUE"): + credential = VSCodeCredential(policies=[policy], transport=mock.Mock(send=send)) + await credential.get_token("scope") + assert policy.on_request.called + + +@pytest.mark.asyncio +async def test_user_agent(): + transport = async_validating_transport( + requests=[Request(required_headers={"User-Agent": USER_AGENT})], + responses=[mock_response(json_payload=build_aad_response(access_token="**"))], + ) + + with mock.patch(VSCodeCredential.__module__ + ".get_credentials", return_value="VALUE"): + credential = VSCodeCredential(transport=transport) + await credential.get_token("scope") + + +@pytest.mark.asyncio +async def test_credential_unavailable_error(): + with mock.patch(VSCodeCredential.__module__ + ".get_credentials", return_value=None): + credential = VSCodeCredential() + with pytest.raises(CredentialUnavailableError): + token = await credential.get_token("scope") + + +@pytest.mark.asyncio +async def test_redeem_token(): + expected_token = AccessToken("token", 42) + + mock_client = mock.Mock(spec=object) + token_by_refresh_token = mock.Mock(return_value=expected_token) + mock_client.obtain_token_by_refresh_token = wrap_in_future(token_by_refresh_token) + mock_client.get_cached_access_token = mock.Mock(return_value=None) + + with mock.patch(VSCodeCredential.__module__ + ".get_credentials", return_value="VALUE"): + credential = VSCodeCredential(_client=mock_client) + token = await credential.get_token("scope") + assert token is expected_token + token_by_refresh_token.assert_called_with("VALUE", ("scope",)) + +@pytest.mark.asyncio +async def test_cache_refresh_token(): + expected_token = AccessToken("token", 42) + + mock_client = mock.Mock(spec=object) + token_by_refresh_token = mock.Mock(return_value=expected_token) + mock_client.obtain_token_by_refresh_token = wrap_in_future(token_by_refresh_token) + mock_client.get_cached_access_token = mock.Mock(return_value=None) + mock_get_credentials = mock.Mock(return_value="VALUE") + + with mock.patch(VSCodeCredential.__module__ + ".get_credentials", mock_get_credentials): + credential = VSCodeCredential(_client=mock_client) + token = await credential.get_token("scope") + assert mock_get_credentials.call_count == 1 + token = await credential.get_token("scope") + assert mock_get_credentials.call_count == 1 + + +@pytest.mark.asyncio +async def test_no_obtain_token_if_cached(): + expected_token = AccessToken("token", 42) + + mock_client = mock.Mock(spec=object) + token_by_refresh_token = mock.Mock(return_value=expected_token) + mock_client.obtain_token_by_refresh_token = wrap_in_future(token_by_refresh_token) + mock_client.get_cached_access_token = mock.Mock(return_value='VALUE') + + with mock.patch(VSCodeCredential.__module__ + ".get_credentials", return_value="VALUE"): + credential = VSCodeCredential(_client=mock_client) + token = await credential.get_token("scope") + assert token_by_refresh_token.call_count == 0 \ No newline at end of file diff --git a/sdk/keyvault/azure-keyvault-secrets/README.md b/sdk/keyvault/azure-keyvault-secrets/README.md index 763d271d75d0..59dbca16ec28 100644 --- a/sdk/keyvault/azure-keyvault-secrets/README.md +++ b/sdk/keyvault/azure-keyvault-secrets/README.md @@ -415,6 +415,7 @@ additional questions or comments. [recover_purge_sample]: https://github.com/Azure/azure-sdk-for-python/blob/master/sdk/keyvault/azure-keyvault-secrets/samples/recover_purge_operations.py [recover_purge_async_sample]: https://github.com/Azure/azure-sdk-for-python/blob/master/sdk/keyvault/azure-keyvault-secrets/samples/recover_purge_operations_async.py [keyvault_docs]: https://docs.microsoft.com/en-us/azure/key-vault/ +[pip]: https://pypi.org/project/pip/ [pypi_package_secrets]: https://pypi.org/project/azure-keyvault-secrets/ [reference_docs]: https://aka.ms/azsdk-python-keyvault-secrets-ref [secret_client_src]: https://github.com/Azure/azure-sdk-for-python/tree/master/sdk/keyvault/azure-keyvault-secrets/azure/keyvault/secrets diff --git a/sdk/resources/azure-mgmt-resource/tests/recordings/test_mgmt_resource_subscriptions.test_subscriptions.yaml b/sdk/resources/azure-mgmt-resource/tests/recordings/test_mgmt_resource_subscriptions.test_subscriptions.yaml index f5c234824dbe..9c9bdc401bfb 100644 --- a/sdk/resources/azure-mgmt-resource/tests/recordings/test_mgmt_resource_subscriptions.test_subscriptions.yaml +++ b/sdk/resources/azure-mgmt-resource/tests/recordings/test_mgmt_resource_subscriptions.test_subscriptions.yaml @@ -10,11 +10,11 @@ interactions: - keep-alive User-Agent: - python/3.8.1 (Windows-10-10.0.18362-SP0) msrest/0.6.11 msrest_azure/0.4.34 - azure-mgmt-resource/8.0.1 Azure-SDK-For-Python + azure-mgmt-resource/9.0.0 Azure-SDK-For-Python accept-language: - en-US method: GET - uri: https://management.azure.com/subscriptions?api-version=2019-06-01 + uri: https://management.azure.com/subscriptions?api-version=2019-11-01 response: body: string: '{"value":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000","authorizationSource":"RoleBased","managedByTenants":[{"tenantId":"2f4a9838-26b7-47ee-be60-ccc1fdec5953"}],"subscriptionId":"00000000-0000-0000-0000-000000000000","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","displayName":"Python @@ -27,7 +27,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Thu, 02 Apr 2020 07:51:47 GMT + - Wed, 29 Apr 2020 07:03:51 GMT expires: - '-1' pragma: @@ -52,63 +52,96 @@ interactions: - keep-alive User-Agent: - python/3.8.1 (Windows-10-10.0.18362-SP0) msrest/0.6.11 msrest_azure/0.4.34 - azure-mgmt-resource/8.0.1 Azure-SDK-For-Python + azure-mgmt-resource/9.0.0 Azure-SDK-For-Python accept-language: - en-US method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/locations?api-version=2019-06-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/locations?api-version=2019-11-01 response: body: - string: '{"value":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/eastasia","name":"eastasia","displayName":"East - Asia","longitude":"114.188","latitude":"22.267"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/southeastasia","name":"southeastasia","displayName":"Southeast - Asia","longitude":"103.833","latitude":"1.283"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/centralus","name":"centralus","displayName":"Central - US","longitude":"-93.6208","latitude":"41.5908"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/eastus","name":"eastus","displayName":"East - US","longitude":"-79.8164","latitude":"37.3719"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/eastus2","name":"eastus2","displayName":"East - US 2","longitude":"-78.3889","latitude":"36.6681"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/westus","name":"westus","displayName":"West - US","longitude":"-122.417","latitude":"37.783"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/northcentralus","name":"northcentralus","displayName":"North - Central US","longitude":"-87.6278","latitude":"41.8819"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/southcentralus","name":"southcentralus","displayName":"South - Central US","longitude":"-98.5","latitude":"29.4167"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/northeurope","name":"northeurope","displayName":"North - Europe","longitude":"-6.2597","latitude":"53.3478"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/westeurope","name":"westeurope","displayName":"West - Europe","longitude":"4.9","latitude":"52.3667"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/japanwest","name":"japanwest","displayName":"Japan - West","longitude":"135.5022","latitude":"34.6939"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/japaneast","name":"japaneast","displayName":"Japan - East","longitude":"139.77","latitude":"35.68"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/brazilsouth","name":"brazilsouth","displayName":"Brazil - South","longitude":"-46.633","latitude":"-23.55"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/australiaeast","name":"australiaeast","displayName":"Australia - East","longitude":"151.2094","latitude":"-33.86"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/australiasoutheast","name":"australiasoutheast","displayName":"Australia - Southeast","longitude":"144.9631","latitude":"-37.8136"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/southindia","name":"southindia","displayName":"South - India","longitude":"80.1636","latitude":"12.9822"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/centralindia","name":"centralindia","displayName":"Central - India","longitude":"73.9197","latitude":"18.5822"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/westindia","name":"westindia","displayName":"West - India","longitude":"72.868","latitude":"19.088"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/canadacentral","name":"canadacentral","displayName":"Canada - Central","longitude":"-79.383","latitude":"43.653"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/canadaeast","name":"canadaeast","displayName":"Canada - East","longitude":"-71.217","latitude":"46.817"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/uksouth","name":"uksouth","displayName":"UK - South","longitude":"-0.799","latitude":"50.941"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/ukwest","name":"ukwest","displayName":"UK - West","longitude":"-3.084","latitude":"53.427"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/westcentralus","name":"westcentralus","displayName":"West - Central US","longitude":"-110.234","latitude":"40.890"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/westus2","name":"westus2","displayName":"West - US 2","longitude":"-119.852","latitude":"47.233"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/koreacentral","name":"koreacentral","displayName":"Korea - Central","longitude":"126.9780","latitude":"37.5665"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/koreasouth","name":"koreasouth","displayName":"Korea - South","longitude":"129.0756","latitude":"35.1796"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/francecentral","name":"francecentral","displayName":"France - Central","longitude":"2.3730","latitude":"46.3772"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/francesouth","name":"francesouth","displayName":"France - South","longitude":"2.1972","latitude":"43.8345"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/australiacentral","name":"australiacentral","displayName":"Australia - Central","longitude":"149.1244","latitude":"-35.3075"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/australiacentral2","name":"australiacentral2","displayName":"Australia - Central 2","longitude":"149.1244","latitude":"-35.3075"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/uaecentral","name":"uaecentral","displayName":"UAE - Central","longitude":"54.366669","latitude":"24.466667"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/uaenorth","name":"uaenorth","displayName":"UAE - North","longitude":"55.316666","latitude":"25.266666"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/southafricanorth","name":"southafricanorth","displayName":"South - Africa North","longitude":"28.218370","latitude":"-25.731340"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/southafricawest","name":"southafricawest","displayName":"South - Africa West","longitude":"18.843266","latitude":"-34.075691"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/switzerlandnorth","name":"switzerlandnorth","displayName":"Switzerland - North","longitude":"8.564572","latitude":"47.451542"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/switzerlandwest","name":"switzerlandwest","displayName":"Switzerland - West","longitude":"6.143158","latitude":"46.204391"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/germanynorth","name":"germanynorth","displayName":"Germany - North","longitude":"8.806422","latitude":"53.073635"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/germanywestcentral","name":"germanywestcentral","displayName":"Germany - West Central","longitude":"8.682127","latitude":"50.110924"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/norwaywest","name":"norwaywest","displayName":"Norway - West","longitude":"5.733107","latitude":"58.969975"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/norwayeast","name":"norwayeast","displayName":"Norway - East","longitude":"10.752245","latitude":"59.913868"}]}' + string: '{"value":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/eastus","name":"eastus","displayName":"East + US","regionalDisplayName":"(US) East US","metadata":{"regionType":"Physical","regionCategory":"Recommended","geographyGroup":"US","longitude":"-79.8164","latitude":"37.3719","physicalLocation":"Virginia","pairedRegion":[{"name":"westus","id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/westus"}]}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/eastus2","name":"eastus2","displayName":"East + US 2","regionalDisplayName":"(US) East US 2","metadata":{"regionType":"Physical","regionCategory":"Recommended","geographyGroup":"US","longitude":"-78.3889","latitude":"36.6681","physicalLocation":"Virginia","pairedRegion":[{"name":"centralus","id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/centralus"}]}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/southcentralus","name":"southcentralus","displayName":"South + Central US","regionalDisplayName":"(US) South Central US","metadata":{"regionType":"Physical","regionCategory":"Recommended","geographyGroup":"US","longitude":"-98.5","latitude":"29.4167","physicalLocation":"Texas","pairedRegion":[{"name":"northcentralus","id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/northcentralus"}]}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/westus2","name":"westus2","displayName":"West + US 2","regionalDisplayName":"(US) West US 2","metadata":{"regionType":"Physical","regionCategory":"Recommended","geographyGroup":"US","longitude":"-119.852","latitude":"47.233","physicalLocation":"Washington","pairedRegion":[{"name":"westcentralus","id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/westcentralus"}]}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/australiaeast","name":"australiaeast","displayName":"Australia + East","regionalDisplayName":"(Asia Pacific) Australia East","metadata":{"regionType":"Physical","regionCategory":"Recommended","geographyGroup":"Asia + Pacific","longitude":"151.2094","latitude":"-33.86","physicalLocation":"New + South Wales","pairedRegion":[{"name":"australiasoutheast","id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/australiasoutheast"}]}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/southeastasia","name":"southeastasia","displayName":"Southeast + Asia","regionalDisplayName":"(Asia Pacific) Southeast Asia","metadata":{"regionType":"Physical","regionCategory":"Recommended","geographyGroup":"Asia + Pacific","longitude":"103.833","latitude":"1.283","physicalLocation":"Singapore","pairedRegion":[{"name":"eastasia","id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/eastasia"}]}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/northeurope","name":"northeurope","displayName":"North + Europe","regionalDisplayName":"(Europe) North Europe","metadata":{"regionType":"Physical","regionCategory":"Recommended","geographyGroup":"Europe","longitude":"-6.2597","latitude":"53.3478","physicalLocation":"Ireland","pairedRegion":[{"name":"westeurope","id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/westeurope"}]}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/uksouth","name":"uksouth","displayName":"UK + South","regionalDisplayName":"(Europe) UK South","metadata":{"regionType":"Physical","regionCategory":"Recommended","geographyGroup":"Europe","longitude":"-0.799","latitude":"50.941","physicalLocation":"London","pairedRegion":[{"name":"ukwest","id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/ukwest"}]}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/westeurope","name":"westeurope","displayName":"West + Europe","regionalDisplayName":"(Europe) West Europe","metadata":{"regionType":"Physical","regionCategory":"Recommended","geographyGroup":"Europe","longitude":"4.9","latitude":"52.3667","physicalLocation":"Netherlands","pairedRegion":[{"name":"northeurope","id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/northeurope"}]}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/centralus","name":"centralus","displayName":"Central + US","regionalDisplayName":"(US) Central US","metadata":{"regionType":"Physical","regionCategory":"Recommended","geographyGroup":"US","longitude":"-93.6208","latitude":"41.5908","physicalLocation":"Iowa","pairedRegion":[{"name":"eastus2","id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/eastus2"}]}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/northcentralus","name":"northcentralus","displayName":"North + Central US","regionalDisplayName":"(US) North Central US","metadata":{"regionType":"Physical","regionCategory":"Recommended","geographyGroup":"US","longitude":"-87.6278","latitude":"41.8819","physicalLocation":"Illinois","pairedRegion":[{"name":"southcentralus","id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/southcentralus"}]}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/westus","name":"westus","displayName":"West + US","regionalDisplayName":"(US) West US","metadata":{"regionType":"Physical","regionCategory":"Recommended","geographyGroup":"US","longitude":"-122.417","latitude":"37.783","physicalLocation":"California","pairedRegion":[{"name":"eastus","id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/eastus"}]}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/southafricanorth","name":"southafricanorth","displayName":"South + Africa North","regionalDisplayName":"(Africa) South Africa North","metadata":{"regionType":"Physical","regionCategory":"Recommended","geographyGroup":"Africa","longitude":"28.218370","latitude":"-25.731340","physicalLocation":"Johannesburg","pairedRegion":[{"name":"southafricawest","id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/southafricawest"}]}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/centralindia","name":"centralindia","displayName":"Central + India","regionalDisplayName":"(Asia Pacific) Central India","metadata":{"regionType":"Physical","regionCategory":"Recommended","geographyGroup":"Asia + Pacific","longitude":"73.9197","latitude":"18.5822","physicalLocation":"Pune","pairedRegion":[{"name":"southindia","id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/southindia"}]}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/eastasia","name":"eastasia","displayName":"East + Asia","regionalDisplayName":"(Asia Pacific) East Asia","metadata":{"regionType":"Physical","regionCategory":"Recommended","geographyGroup":"Asia + Pacific","longitude":"114.188","latitude":"22.267","physicalLocation":"Hong + Kong","pairedRegion":[{"name":"southeastasia","id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/southeastasia"}]}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/japaneast","name":"japaneast","displayName":"Japan + East","regionalDisplayName":"(Asia Pacific) Japan East","metadata":{"regionType":"Physical","regionCategory":"Recommended","geographyGroup":"Asia + Pacific","longitude":"139.77","latitude":"35.68","physicalLocation":"Tokyo, + Saitama","pairedRegion":[{"name":"japanwest","id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/japanwest"}]}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/koreacentral","name":"koreacentral","displayName":"Korea + Central","regionalDisplayName":"(Asia Pacific) Korea Central","metadata":{"regionType":"Physical","regionCategory":"Recommended","geographyGroup":"Asia + Pacific","longitude":"126.9780","latitude":"37.5665","physicalLocation":"Seoul","pairedRegion":[{"name":"koreasouth","id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/koreasouth"}]}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/canadacentral","name":"canadacentral","displayName":"Canada + Central","regionalDisplayName":"(Canada) Canada Central","metadata":{"regionType":"Physical","regionCategory":"Recommended","geographyGroup":"Canada","longitude":"-79.383","latitude":"43.653","physicalLocation":"Toronto","pairedRegion":[{"name":"canadaeast","id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/canadaeast"}]}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/francecentral","name":"francecentral","displayName":"France + Central","regionalDisplayName":"(Europe) France Central","metadata":{"regionType":"Physical","regionCategory":"Recommended","geographyGroup":"Europe","longitude":"2.3730","latitude":"46.3772","physicalLocation":"Paris","pairedRegion":[{"name":"francesouth","id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/francesouth"}]}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/germanywestcentral","name":"germanywestcentral","displayName":"Germany + West Central","regionalDisplayName":"(Europe) Germany West Central","metadata":{"regionType":"Physical","regionCategory":"Recommended","geographyGroup":"Europe","longitude":"8.682127","latitude":"50.110924","physicalLocation":"Frankfurt","pairedRegion":[{"name":"germanynorth","id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/germanynorth"}]}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/norwayeast","name":"norwayeast","displayName":"Norway + East","regionalDisplayName":"(Europe) Norway East","metadata":{"regionType":"Physical","regionCategory":"Recommended","geographyGroup":"Europe","longitude":"10.752245","latitude":"59.913868","physicalLocation":"Norway","pairedRegion":[{"name":"norwaywest","id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/norwaywest"}]}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/switzerlandnorth","name":"switzerlandnorth","displayName":"Switzerland + North","regionalDisplayName":"(Europe) Switzerland North","metadata":{"regionType":"Physical","regionCategory":"Recommended","geographyGroup":"Europe","longitude":"8.564572","latitude":"47.451542","physicalLocation":"Zurich","pairedRegion":[{"name":"switzerlandwest","id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/switzerlandwest"}]}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/uaenorth","name":"uaenorth","displayName":"UAE + North","regionalDisplayName":"(Middle East) UAE North","metadata":{"regionType":"Physical","regionCategory":"Recommended","geographyGroup":"Middle + East","longitude":"55.316666","latitude":"25.266666","physicalLocation":"Dubai","pairedRegion":[{"name":"uaecentral","id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/uaecentral"}]}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/brazilsouth","name":"brazilsouth","displayName":"Brazil + South","regionalDisplayName":"(South America) Brazil South","metadata":{"regionType":"Physical","regionCategory":"Recommended","geographyGroup":"South + America","longitude":"-46.633","latitude":"-23.55","physicalLocation":"Sao + Paulo State","pairedRegion":[{"name":"southcentralus","id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/southcentralus"}]}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/centralusstage","name":"centralusstage","displayName":"Central + US (Stage)","regionalDisplayName":"(US) Central US (Stage)","metadata":{"regionType":"Logical","regionCategory":"Other","geographyGroup":"US"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/eastus2stage","name":"eastus2stage","displayName":"East + US 2 (Stage)","regionalDisplayName":"(US) East US 2 (Stage)","metadata":{"regionType":"Logical","regionCategory":"Other","geographyGroup":"US"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/northcentralusstage","name":"northcentralusstage","displayName":"North + Central US (Stage)","regionalDisplayName":"(US) North Central US (Stage)","metadata":{"regionType":"Logical","regionCategory":"Other","geographyGroup":"US"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/southcentralusstage","name":"southcentralusstage","displayName":"South + Central US (Stage)","regionalDisplayName":"(US) South Central US (Stage)","metadata":{"regionType":"Logical","regionCategory":"Other","geographyGroup":"US"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/westusstage","name":"westusstage","displayName":"West + US (Stage)","regionalDisplayName":"(US) West US (Stage)","metadata":{"regionType":"Logical","regionCategory":"Other","geographyGroup":"US"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/westus2stage","name":"westus2stage","displayName":"West + US 2 (Stage)","regionalDisplayName":"(US) West US 2 (Stage)","metadata":{"regionType":"Logical","regionCategory":"Other","geographyGroup":"US"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/asiapacific","name":"asiapacific","displayName":"Asia + Pacific","regionalDisplayName":"Asia Pacific","metadata":{"regionType":"Logical","regionCategory":"Other"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/australia","name":"australia","displayName":"Australia","regionalDisplayName":"Australia","metadata":{"regionType":"Logical","regionCategory":"Other"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/europe","name":"europe","displayName":"Europe","regionalDisplayName":"Europe","metadata":{"regionType":"Logical","regionCategory":"Other"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/global","name":"global","displayName":"Global","regionalDisplayName":"Global","metadata":{"regionType":"Logical","regionCategory":"Other"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/japan","name":"japan","displayName":"Japan","regionalDisplayName":"Japan","metadata":{"regionType":"Logical","regionCategory":"Other"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/uk","name":"uk","displayName":"UK","regionalDisplayName":"UK","metadata":{"regionType":"Logical","regionCategory":"Other"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/unitedstates","name":"unitedstates","displayName":"United + States","regionalDisplayName":"United States","metadata":{"regionType":"Logical","regionCategory":"Other"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/eastasiastage","name":"eastasiastage","displayName":"East + Asia (Stage)","regionalDisplayName":"(Asia Pacific) East Asia (Stage)","metadata":{"regionType":"Logical","regionCategory":"Other","geographyGroup":"Asia + Pacific"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/eastus2euap","name":"eastus2euap","displayName":"East + US 2 EUAP","regionalDisplayName":"(US) East US 2 EUAP","metadata":{"regionType":"Physical","regionCategory":"Other","geographyGroup":"US","longitude":"-78.3889","latitude":"36.6681","pairedRegion":[{"name":"centraluseuap","id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/centraluseuap"}]}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/westcentralus","name":"westcentralus","displayName":"West + Central US","regionalDisplayName":"(US) West Central US","metadata":{"regionType":"Physical","regionCategory":"Other","geographyGroup":"US","longitude":"-110.234","latitude":"40.890","physicalLocation":"Wyoming","pairedRegion":[{"name":"westus2","id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/westus2"}]}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/southafricawest","name":"southafricawest","displayName":"South + Africa West","regionalDisplayName":"(Africa) South Africa West","metadata":{"regionType":"Physical","regionCategory":"Other","geographyGroup":"Africa","longitude":"18.843266","latitude":"-34.075691","physicalLocation":"Cape + Town","pairedRegion":[{"name":"southafricanorth","id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/southafricanorth"}]}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/australiacentral","name":"australiacentral","displayName":"Australia + Central","regionalDisplayName":"(Asia Pacific) Australia Central","metadata":{"regionType":"Physical","regionCategory":"Other","geographyGroup":"Asia + Pacific","longitude":"149.1244","latitude":"-35.3075","physicalLocation":"Canberra","pairedRegion":[{"name":"australiacentral","id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/australiacentral"}]}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/australiacentral2","name":"australiacentral2","displayName":"Australia + Central 2","regionalDisplayName":"(Asia Pacific) Australia Central 2","metadata":{"regionType":"Physical","regionCategory":"Other","geographyGroup":"Asia + Pacific","longitude":"149.1244","latitude":"-35.3075","physicalLocation":"Canberra","pairedRegion":[{"name":"australiacentral2","id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/australiacentral2"}]}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/australiasoutheast","name":"australiasoutheast","displayName":"Australia + Southeast","regionalDisplayName":"(Asia Pacific) Australia Southeast","metadata":{"regionType":"Physical","regionCategory":"Other","geographyGroup":"Asia + Pacific","longitude":"144.9631","latitude":"-37.8136","physicalLocation":"Victoria","pairedRegion":[{"name":"australiaeast","id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/australiaeast"}]}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/japanwest","name":"japanwest","displayName":"Japan + West","regionalDisplayName":"(Asia Pacific) Japan West","metadata":{"regionType":"Physical","regionCategory":"Other","geographyGroup":"Asia + Pacific","longitude":"135.5022","latitude":"34.6939","physicalLocation":"Osaka","pairedRegion":[{"name":"japaneast","id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/japaneast"}]}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/koreasouth","name":"koreasouth","displayName":"Korea + South","regionalDisplayName":"(Asia Pacific) Korea South","metadata":{"regionType":"Physical","regionCategory":"Other","geographyGroup":"Asia + Pacific","longitude":"129.0756","latitude":"35.1796","physicalLocation":"Busan","pairedRegion":[{"name":"koreacentral","id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/koreacentral"}]}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/southindia","name":"southindia","displayName":"South + India","regionalDisplayName":"(Asia Pacific) South India","metadata":{"regionType":"Physical","regionCategory":"Other","geographyGroup":"Asia + Pacific","longitude":"80.1636","latitude":"12.9822","physicalLocation":"Chennai","pairedRegion":[{"name":"centralindia","id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/centralindia"}]}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/westindia","name":"westindia","displayName":"West + India","regionalDisplayName":"(Asia Pacific) West India","metadata":{"regionType":"Physical","regionCategory":"Other","geographyGroup":"Asia + Pacific","longitude":"72.868","latitude":"19.088","physicalLocation":"Mumbai","pairedRegion":[{"name":"southindia","id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/southindia"}]}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/canadaeast","name":"canadaeast","displayName":"Canada + East","regionalDisplayName":"(Canada) Canada East","metadata":{"regionType":"Physical","regionCategory":"Other","geographyGroup":"Canada","longitude":"-71.217","latitude":"46.817","physicalLocation":"Quebec","pairedRegion":[{"name":"canadacentral","id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/canadacentral"}]}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/francesouth","name":"francesouth","displayName":"France + South","regionalDisplayName":"(Europe) France South","metadata":{"regionType":"Physical","regionCategory":"Other","geographyGroup":"Europe","longitude":"2.1972","latitude":"43.8345","physicalLocation":"Marseille","pairedRegion":[{"name":"francecentral","id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/francecentral"}]}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/germanynorth","name":"germanynorth","displayName":"Germany + North","regionalDisplayName":"(Europe) Germany North","metadata":{"regionType":"Physical","regionCategory":"Other","geographyGroup":"Europe","longitude":"8.806422","latitude":"53.073635","physicalLocation":"Berlin","pairedRegion":[{"name":"germanywestcentral","id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/germanywestcentral"}]}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/norwaywest","name":"norwaywest","displayName":"Norway + West","regionalDisplayName":"(Europe) Norway West","metadata":{"regionType":"Physical","regionCategory":"Other","geographyGroup":"Europe","longitude":"5.733107","latitude":"58.969975","physicalLocation":"Norway","pairedRegion":[{"name":"norwayeast","id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/norwayeast"}]}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/switzerlandwest","name":"switzerlandwest","displayName":"Switzerland + West","regionalDisplayName":"(Europe) Switzerland West","metadata":{"regionType":"Physical","regionCategory":"Other","geographyGroup":"Europe","longitude":"6.143158","latitude":"46.204391","physicalLocation":"Geneva","pairedRegion":[{"name":"switzerlandnorth","id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/switzerlandnorth"}]}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/ukwest","name":"ukwest","displayName":"UK + West","regionalDisplayName":"(Europe) UK West","metadata":{"regionType":"Physical","regionCategory":"Other","geographyGroup":"Europe","longitude":"-3.084","latitude":"53.427","physicalLocation":"Cardiff","pairedRegion":[{"name":"uksouth","id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/uksouth"}]}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/uaecentral","name":"uaecentral","displayName":"UAE + Central","regionalDisplayName":"(Middle East) UAE Central","metadata":{"regionType":"Physical","regionCategory":"Other","geographyGroup":"Middle + East","longitude":"54.366669","latitude":"24.466667","physicalLocation":"Abu + Dhabi","pairedRegion":[{"name":"uaenorth","id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/uaenorth"}]}}]}' headers: cache-control: - no-cache content-length: - - '7129' + - '22751' content-type: - application/json; charset=utf-8 date: - - Thu, 02 Apr 2020 07:51:47 GMT + - Wed, 29 Apr 2020 07:03:52 GMT expires: - '-1' pragma: @@ -133,11 +166,11 @@ interactions: - keep-alive User-Agent: - python/3.8.1 (Windows-10-10.0.18362-SP0) msrest/0.6.11 msrest_azure/0.4.34 - azure-mgmt-resource/8.0.1 Azure-SDK-For-Python + azure-mgmt-resource/9.0.0 Azure-SDK-For-Python accept-language: - en-US method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000?api-version=2019-06-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000?api-version=2019-11-01 response: body: string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000","authorizationSource":"RoleBased","managedByTenants":[{"tenantId":"2f4a9838-26b7-47ee-be60-ccc1fdec5953"}],"subscriptionId":"00000000-0000-0000-0000-000000000000","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","displayName":"Python @@ -150,7 +183,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Thu, 02 Apr 2020 07:51:48 GMT + - Wed, 29 Apr 2020 07:03:53 GMT expires: - '-1' pragma: diff --git a/sdk/resources/azure-mgmt-resource/tests/recordings/test_mgmt_resource_subscriptions.test_tenants.yaml b/sdk/resources/azure-mgmt-resource/tests/recordings/test_mgmt_resource_subscriptions.test_tenants.yaml index 7aa4088aa73d..b524110b84e2 100644 --- a/sdk/resources/azure-mgmt-resource/tests/recordings/test_mgmt_resource_subscriptions.test_tenants.yaml +++ b/sdk/resources/azure-mgmt-resource/tests/recordings/test_mgmt_resource_subscriptions.test_tenants.yaml @@ -10,11 +10,11 @@ interactions: - keep-alive User-Agent: - python/3.8.1 (Windows-10-10.0.18362-SP0) msrest/0.6.11 msrest_azure/0.4.34 - azure-mgmt-resource/8.0.1 Azure-SDK-For-Python + azure-mgmt-resource/9.0.0 Azure-SDK-For-Python accept-language: - en-US method: GET - uri: https://management.azure.com/tenants?api-version=2019-06-01 + uri: https://management.azure.com/tenants?api-version=2019-11-01 response: body: string: '{"value":[{"id":"/tenants/72f988bf-86f1-41af-91ab-2d7cd011db47","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","tenantCategory":"Home"}]}' @@ -26,7 +26,7 @@ interactions: content-type: - application/json; charset=utf-8 date: - - Thu, 02 Apr 2020 07:51:50 GMT + - Wed, 29 Apr 2020 07:03:54 GMT expires: - '-1' pragma: diff --git a/sdk/resources/azure-mgmt-resource/tests/test_mgmt_resource_subscriptions.py b/sdk/resources/azure-mgmt-resource/tests/test_mgmt_resource_subscriptions.py index de536f99bcb2..c1443bfc6927 100644 --- a/sdk/resources/azure-mgmt-resource/tests/test_mgmt_resource_subscriptions.py +++ b/sdk/resources/azure-mgmt-resource/tests/test_mgmt_resource_subscriptions.py @@ -7,7 +7,6 @@ #-------------------------------------------------------------------------- import unittest -raise unittest.SkipTest("Skip since recording test failed in CI pipeline") import azure.mgmt.resource.subscriptions.models from devtools_testutils import AzureMgmtTestCase diff --git a/sdk/search/azure-search-documents/CHANGELOG.md b/sdk/search/azure-search-documents/CHANGELOG.md index 2204df3d394b..23071b1d6a54 100644 --- a/sdk/search/azure-search-documents/CHANGELOG.md +++ b/sdk/search/azure-search-documents/CHANGELOG.md @@ -1,7 +1,17 @@ # Release History -## 1.0.0b3 (Unreleased) +## 1.0.0b3 (2020-05-04) +**Features** + +- Add support for synonym maps operations #10830 +- Add support for skillset operations #10832 +- Add support of indexers operation #10836 +- Add helpers for defining searchindex fields #10833 + +**Breaking Changes** + +- `SearchIndexClient` renamed to `SearchClient` ## 1.0.0b2 (2020-04-07) diff --git a/sdk/search/azure-search-documents/README.md b/sdk/search/azure-search-documents/README.md index 0c0623ec57e8..e4440c9a0f74 100644 --- a/sdk/search/azure-search-documents/README.md +++ b/sdk/search/azure-search-documents/README.md @@ -11,6 +11,14 @@ Azure Cognitive Search is a fully managed cloud search service that provides a r ## Getting started +### Install the package + +Install the Azure Cognitive Search client library for Python with [pip](https://pypi.org/project/pip/): + +```bash +pip install azure-search-documents --pre +``` + ### Prerequisites * Python 2.7, or 3.5 or later is required to use this package. @@ -27,73 +35,76 @@ az search service create --resource-group --name ") -client = SearchServiceClient(endpoint="" - credential=credential) +client = SearchClient(endpoint="", + index_name="", + credential=credential) ``` -### Create a SearchIndexClient +#### Create a SearchServiceClient -To create a SearchIndexClient, you will need an existing index name as well as the values of the Cognitive Search Service -[service endpoint](https://docs.microsoft.com/en-us/azure/search/search-create-service-portal#get-a-key-and-url-endpoint) and -[api key](https://docs.microsoft.com/en-us/azure/search/search-security-api-keys). -Note that you will need an admin key to index documents (query keys only work for queries). +Once you have the values of the Cognitive Search Service [service endpoint](https://docs.microsoft.com/en-us/azure/search/search-create-service-portal#get-a-key-and-url-endpoint) +and [api key](https://docs.microsoft.com/en-us/azure/search/search-security-api-keys) you can create the Search Service client: ```python from azure.core.credentials import AzureKeyCredential -from azure.search import SearchIndexClient +from azure.search.documents import SearchServiceClient credential = AzureKeyCredential("") -client = SearchIndexClient(endpoint="", - index_name="", - credential=credential) +client = SearchServiceClient(endpoint="" + credential=credential) ``` +### Send your first search request + +You can use the `SearchClient` you created in the first section above to make a basic search request: +```python +results = client.search(query="spa") + +print("Hotels containing 'spa' in the name (or other fields):") +for result in results: + print(" Name: {} (rating {})".format(result["HotelName"], result["Rating"])) +``` + +## Key concepts + +Azure Cognitive Search has the concepts of search services and indexes and documents, where a search service contains +one or more indexes that provides persistent storage of searchable data, and data is loaded in the form of JSON documents. +Data can be pushed to an index from an external data source, but if you use an indexer, it's possible to crawl a data +source to extract and load data into an index. + +There are several types of operations that can be executed against the service: + +- [Index management operations](https://docs.microsoft.com/en-us/rest/api/searchservice/index-operations). Create, delete, update, or configure a search index. +- [Document operations](https://docs.microsoft.com/en-us/rest/api/searchservice/document-operations). Add, update, or delete documents in the index, query the index, or look up specific documents by ID. +- [Indexer operations](https://docs.microsoft.com/en-us/rest/api/searchservice/indexer-operations). Automate aspects of an indexing operation by configuring a data source and an indexer that you can schedule or run on demand. This feature is supported for a limited number of data source types. +- [Skillset operations](https://docs.microsoft.com/en-us/rest/api/searchservice/skillset-operations). Part of a cognitive search workload, a skillset defines a series of a series of enrichment processing steps. A skillset is consumed by an indexer. +- [Synonym map operations](https://docs.microsoft.com/en-us/rest/api/searchservice/synonym-map-operations). A synonym map is a service-level resource that contains user-defined synonyms. This resource is maintained independently from search indexes. Once uploaded, you can point any searchable field to the synonym map (one per field). + ## Examples ### Create an index @@ -101,36 +112,38 @@ Create a new index ```python from azure.core.credentials import AzureKeyCredential from azure.search.documents import SearchServiceClient, CorsOptions, Index, ScoringProfile -client = SearchServiceClient(service_endpoint, AzureKeyCredential(key)) +client = SearchServiceClient("", AzureKeyCredential("")).get_indexes_client() name = "hotels" - fields = [ - { - "name": "hotelId", - "type": "Edm.String", - "key": True, - "searchable": False - }, - { - "name": "baseRate", - "type": "Edm.Double" - }] - cors_options = CorsOptions(allowed_origins=["*"], max_age_in_seconds=60) - scoring_profiles = [] - index = Index( - name=name, - fields=fields, - scoring_profiles=scoring_profiles, - cors_options=cors_options) - - result = client.create_index(index) +fields = [ + { + "name": "hotelId", + "type": "Edm.String", + "key": True, + "searchable": False + }, + { + "name": "baseRate", + "type": "Edm.Double" + } +] +cors_options = CorsOptions(allowed_origins=["*"], max_age_in_seconds=60) +scoring_profiles = [] + +index = Index( + name=name, + fields=fields, + scoring_profiles=scoring_profiles, + cors_options=cors_options) + +result = client.create_index(index) ``` ### Upload documents to an index Add documents (or update existing ones), e.g add a new document for a new hotel: ```python from azure.core.credentials import AzureKeyCredential -from azure.search import SearchIndexClient -search_client = SearchIndexClient(service_endpoint, index_name, AzureKeyCredential(key)) +from azure.search.documents import SearchClient +client = SearchClient("", "", AzureKeyCredential("")) DOCUMENT = { 'Category': 'Hotel', @@ -140,7 +153,7 @@ DOCUMENT = { 'HotelName': 'Azure Inn', } -result = search_client.upload_documents(documents=[DOCUMENT]) +result = client.upload_documents(documents=[DOCUMENT]) print("Upload of new document succeeded: {}".format(result[0].succeeded)) ``` @@ -149,10 +162,10 @@ print("Upload of new document succeeded: {}".format(result[0].succeeded)) Get a specific document from the index, e.f. obtain the document for hotel "23": ```python from azure.core.credentials import AzureKeyCredential -from azure.search import SearchIndexClient -search_client = SearchIndexClient(service_endpoint, index_name, AzureKeyCredential(key)) +from azure.search.documents import SearchClient +client = SearchClient("", "", AzureKeyCredential("")) -result = search_client.get_document(key="23") +result = client.get_document(key="23") print("Details for hotel '23' are:") print(" Name: {}".format(result["HotelName"])) @@ -165,10 +178,10 @@ Search the entire index or documents matching a simple search text, e.g. find hotels with the text "spa": ```python from azure.core.credentials import AzureKeyCredential -from azure.search import SearchIndexClient -search_client = SearchIndexClient(service_endpoint, index_name, AzureKeyCredential(key)) +from azure.search.documents import SearchClient +client = SearchClient("", "", AzureKeyCredential("")) -results = search_client.search(query="spa") +results = client.search(query="spa") print("Hotels containing 'spa' in the name (or other fields):") for result in results: @@ -181,16 +194,16 @@ Get search suggestions for related terms, e.g. find search suggestions for the term "coffee": ```python from azure.core.credentials import AzureKeyCredential -from azure.search import SearchIndexClient, SuggestQuery -search_client = SearchIndexClient(service_endpoint, index_name, AzureKeyCredential(key)) +from azure.search.documents import SearchClient, SuggestQuery +client = SearchClient("", "", AzureKeyCredential("")) query = SuggestQuery(search_text="coffee", suggester_name="sg") -results = search_client.suggest(query=query) +results = client.suggest(query=query) print("Search suggestions for 'coffee'") for result in results: - hotel = search_client.get_document(key=result["HotelId"]) + hotel = client.get_document(key=result["HotelId"]) print(" Text: {} for Hotel: {}".format(repr(result["text"]), hotel["HotelName"])) ``` @@ -206,13 +219,13 @@ This library uses the standard [logging][python_logging] library for logging. Basic information about HTTP sessions (URLs, headers, etc.) is logged at INFO level. -etailed DEBUG level logging, including request/response bodies and unredacted +Detailed DEBUG level logging, including request/response bodies and unredacted headers, can be enabled on a client with the `logging_enable` keyword argument: ```python import sys import logging from azure.core.credentials import AzureKeyCredential -from azure.search import SearchIndexClient +from azure.search.documents import SearchClient # Create a logger for the 'azure' SDK logger = logging.getLogger('azure') @@ -223,13 +236,14 @@ handler = logging.StreamHandler(stream=sys.stdout) logger.addHandler(handler) # This client will log detailed information about its HTTP sessions, at DEBUG level -search_client = SearchIndexClient(service_endpoint, index_name, AzureKeyCredential(key), logging_enable=True) +client = SearchClient("", "", AzureKeyCredential(""), logging_enable=True) + ``` Similarly, `logging_enable` can enable detailed logging for a single operation, even when it isn't enabled for the client: ```python -result = search_client.search(query="spa", logging_enable=True) +result = client.search(query="spa", logging_enable=True) ``` ## Next steps diff --git a/sdk/search/azure-search-documents/azure/search/documents/__init__.py b/sdk/search/azure-search-documents/azure/search/documents/__init__.py index 6649b52bf787..4daaa371f2f7 100644 --- a/sdk/search/azure-search-documents/azure/search/documents/__init__.py +++ b/sdk/search/azure-search-documents/azure/search/documents/__init__.py @@ -29,13 +29,19 @@ IndexAction, IndexDocumentsBatch, IndexingResult, - SearchIndexClient, + SearchClient, SearchItemPaged, SearchQuery, SuggestQuery, odata, ) -from ._service import SearchServiceClient +from ._service import ( + ComplexField, + SearchableField, + SimpleField, + SearchServiceClient, + edm, +) from ._service._generated.models import ( Analyzer, AnalyzeRequest, @@ -49,6 +55,9 @@ ConditionalSkill, CorsOptions, CustomAnalyzer, + DataSource, + DataSourceCredentials, + DataContainer, DictionaryDecompounderTokenFilter, DistanceScoringFunction, DistanceScoringParameters, @@ -62,8 +71,8 @@ FreshnessScoringParameters, GetIndexStatisticsResult, ImageAnalysisSkill, - InputFieldMappingEntry, Index, + InputFieldMappingEntry, KeepTokenFilter, KeyPhraseExtractionSkill, KeywordMarkerTokenFilter, @@ -101,6 +110,7 @@ StopAnalyzer, StopwordsTokenFilter, Suggester, + SynonymMap, SynonymTokenFilter, TagScoringFunction, TagScoringParameters, @@ -132,9 +142,13 @@ "CjkBigramTokenFilter", "ClassicTokenizer", "CommonGramTokenFilter", + "ComplexField", "ConditionalSkill", "CorsOptions", "CustomAnalyzer", + "DataSource", + "DataSourceCredentials", + "DataContainer", "DictionaryDecompounderTokenFilter", "DistanceScoringFunction", "DistanceScoringParameters", @@ -179,13 +193,15 @@ "RegexFlags", "ScoringFunction", "ScoringProfile", - "SearchIndexClient", + "SearchClient", "SearchItemPaged", "SearchQuery", "SearchServiceClient", + "SearchableField", "SentimentSkill", "ShaperSkill", "ShingleTokenFilter", + "SimpleField", "Skillset", "SnowballTokenFilter", "SplitSkill", @@ -197,6 +213,7 @@ "StopwordsTokenFilter", "SuggestQuery", "Suggester", + "SynonymMap", "SynonymTokenFilter", "TagScoringFunction", "TagScoringParameters", @@ -210,5 +227,6 @@ "UniqueTokenFilter", "WebApiSkill", "WordDelimiterTokenFilter", + "edm", "odata", ) diff --git a/sdk/search/azure-search-documents/azure/search/documents/_index/__init__.py b/sdk/search/azure-search-documents/azure/search/documents/_index/__init__.py index d43ed7e45817..e92f4d4ea68a 100644 --- a/sdk/search/azure-search-documents/azure/search/documents/_index/__init__.py +++ b/sdk/search/azure-search-documents/azure/search/documents/_index/__init__.py @@ -3,10 +3,10 @@ # Licensed under the MIT License. # ------------------------------------ from ._index_documents_batch import IndexDocumentsBatch # pylint: disable=unused-import -from ._search_index_client import ( # pylint: disable=unused-import +from ._search_client import ( # pylint: disable=unused-import odata, SearchItemPaged, - SearchIndexClient, + SearchClient, ) from ._queries import ( # pylint: disable=unused-import AutocompleteQuery, diff --git a/sdk/search/azure-search-documents/azure/search/documents/_index/_search_index_client.py b/sdk/search/azure-search-documents/azure/search/documents/_index/_search_client.py similarity index 97% rename from sdk/search/azure-search-documents/azure/search/documents/_index/_search_index_client.py rename to sdk/search/azure-search-documents/azure/search/documents/_index/_search_client.py index 467e0be2d0ca..a3f02e5ec4da 100644 --- a/sdk/search/azure-search-documents/azure/search/documents/_index/_search_index_client.py +++ b/sdk/search/azure-search-documents/azure/search/documents/_index/_search_client.py @@ -8,7 +8,7 @@ import six from azure.core.tracing.decorator import distributed_trace -from ._generated import SearchIndexClient as _SearchIndexClient +from ._generated import SearchIndexClient from ._generated.models import IndexBatch, IndexingResult from ._index_documents_batch import IndexDocumentsBatch from ._paging import SearchItemPaged, SearchPageIterator @@ -50,7 +50,7 @@ def odata(statement, **kwargs): return statement.format(**kw) -class SearchIndexClient(HeadersMixin): +class SearchClient(HeadersMixin): """A client to interact with an existing Azure search index. :param endpoint: The URL endpoint of an Azure search service @@ -67,7 +67,7 @@ class SearchIndexClient(HeadersMixin): :end-before: [END create_search_client_with_key] :language: python :dedent: 4 - :caption: Creating the SearchIndexClient with an API key. + :caption: Creating the SearchClient with an API key. """ _ODATA_ACCEPT = "application/json;odata.metadata=none" # type: str @@ -78,19 +78,19 @@ def __init__(self, endpoint, index_name, credential, **kwargs): self._endpoint = endpoint # type: str self._index_name = index_name # type: str self._credential = credential # type: AzureKeyCredential - self._client = _SearchIndexClient( + self._client = SearchIndexClient( endpoint=endpoint, index_name=index_name, sdk_moniker=SDK_MONIKER, **kwargs - ) # type: _SearchIndexClient + ) # type: SearchIndexClient def __repr__(self): # type: () -> str - return "".format( + return "".format( repr(self._endpoint), repr(self._index_name) )[:1024] def close(self): # type: () -> None - """Close the :class:`~azure.search.SearchIndexClient` session. + """Close the :class:`~azure.search.SearchClient` session. """ return self._client.close() @@ -369,7 +369,7 @@ def index_documents(self, batch, **kwargs): return cast(List[IndexingResult], batch_response.results) def __enter__(self): - # type: () -> SearchIndexClient + # type: () -> SearchClient self._client.__enter__() # pylint:disable=no-member return self diff --git a/sdk/search/azure-search-documents/azure/search/documents/_index/aio/__init__.py b/sdk/search/azure-search-documents/azure/search/documents/_index/aio/__init__.py index 3be55b46fa76..a6e0693ac87b 100644 --- a/sdk/search/azure-search-documents/azure/search/documents/_index/aio/__init__.py +++ b/sdk/search/azure-search-documents/azure/search/documents/_index/aio/__init__.py @@ -2,6 +2,6 @@ # Copyright (c) Microsoft Corporation. # Licensed under the MIT License. # ------------------------------------ -from ._search_index_client_async import AsyncSearchItemPaged, SearchIndexClient +from ._search_client_async import AsyncSearchItemPaged, SearchClient -__all__ = ("AsyncSearchItemPaged", "SearchIndexClient") +__all__ = ("AsyncSearchItemPaged", "SearchClient") diff --git a/sdk/search/azure-search-documents/azure/search/documents/_index/aio/_search_index_client_async.py b/sdk/search/azure-search-documents/azure/search/documents/_index/aio/_search_client_async.py similarity index 96% rename from sdk/search/azure-search-documents/azure/search/documents/_index/aio/_search_index_client_async.py rename to sdk/search/azure-search-documents/azure/search/documents/_index/aio/_search_client_async.py index 2176e4ea1506..d960bafa356f 100644 --- a/sdk/search/azure-search-documents/azure/search/documents/_index/aio/_search_index_client_async.py +++ b/sdk/search/azure-search-documents/azure/search/documents/_index/aio/_search_client_async.py @@ -9,7 +9,7 @@ from azure.core.tracing.decorator_async import distributed_trace_async from ._paging import AsyncSearchItemPaged, AsyncSearchPageIterator -from .._generated.aio import SearchIndexClient as _SearchIndexClient +from .._generated.aio import SearchIndexClient from .._generated.models import IndexBatch, IndexingResult, SearchRequest from .._index_documents_batch import IndexDocumentsBatch from .._queries import AutocompleteQuery, SearchQuery, SuggestQuery @@ -22,7 +22,7 @@ from azure.core.credentials import AzureKeyCredential -class SearchIndexClient(HeadersMixin): +class SearchClient(HeadersMixin): """A client to interact with an existing Azure search index. :param endpoint: The URL endpoint of an Azure search service @@ -39,7 +39,7 @@ class SearchIndexClient(HeadersMixin): :end-before: [END create_search_client_with_key_async] :language: python :dedent: 4 - :caption: Creating the SearchIndexClient with an API key. + :caption: Creating the SearchClient with an API key. """ _ODATA_ACCEPT = "application/json;odata.metadata=none" # type: str @@ -50,19 +50,19 @@ def __init__(self, endpoint, index_name, credential, **kwargs): self._endpoint = endpoint # type: str self._index_name = index_name # type: str self._credential = credential # type: AzureKeyCredential - self._client = _SearchIndexClient( + self._client = SearchIndexClient( endpoint=endpoint, index_name=index_name, sdk_moniker=SDK_MONIKER, **kwargs - ) # type: _SearchIndexClient + ) # type: SearchIndexClient def __repr__(self): # type: () -> str - return "".format( + return "".format( repr(self._endpoint), repr(self._index_name) )[:1024] async def close(self): # type: () -> None - """Close the :class:`~azure.search.aio.SearchIndexClient` session. + """Close the :class:`~azure.search.aio.SearchClient` session. """ return await self._client.close() @@ -342,7 +342,7 @@ async def index_documents(self, batch, **kwargs): return cast(List[IndexingResult], batch_response.results) async def __aenter__(self): - # type: () -> SearchIndexClient + # type: () -> SearchClient await self._client.__aenter__() # pylint: disable=no-member return self diff --git a/sdk/search/azure-search-documents/azure/search/documents/_service/__init__.py b/sdk/search/azure-search-documents/azure/search/documents/_service/__init__.py index eca411e6a05a..0e79615eac2c 100644 --- a/sdk/search/azure-search-documents/azure/search/documents/_service/__init__.py +++ b/sdk/search/azure-search-documents/azure/search/documents/_service/__init__.py @@ -2,4 +2,11 @@ # Copyright (c) Microsoft Corporation. # Licensed under the MIT License. # ------------------------------------ +from ._index import ( # pylint: disable=unused-import + ComplexField, + SearchableField, + SimpleField, +) from ._search_service_client import SearchServiceClient # pylint: disable=unused-import + +from . import edm # pylint: disable=unused-import diff --git a/sdk/search/azure-search-documents/azure/search/documents/_service/_datasources_client.py b/sdk/search/azure-search-documents/azure/search/documents/_service/_datasources_client.py new file mode 100644 index 000000000000..83ca286a1f36 --- /dev/null +++ b/sdk/search/azure-search-documents/azure/search/documents/_service/_datasources_client.py @@ -0,0 +1,191 @@ +# ------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# -------------------------------------------------------------------------- +from typing import TYPE_CHECKING + +from azure.core import MatchConditions +from azure.core.tracing.decorator import distributed_trace + +from ._generated import SearchServiceClient as _SearchServiceClient +from ._utils import get_access_conditions +from .._headers_mixin import HeadersMixin +from .._version import SDK_MONIKER + +if TYPE_CHECKING: + # pylint:disable=unused-import,ungrouped-imports + from ._generated.models import DataSource + from typing import Any, Dict, Optional, Sequence, Union + from azure.core.credentials import AzureKeyCredential + + +class SearchDataSourcesClient(HeadersMixin): + """A client to interact with Azure search service Data Sources. + + This class is not normally instantiated directly, instead use + `get_datasources_client()` from a `SearchServiceClient` + + """ + + _ODATA_ACCEPT = "application/json;odata.metadata=minimal" # type: str + + def __init__(self, endpoint, credential, **kwargs): + # type: (str, AzureKeyCredential, **Any) -> None + + self._endpoint = endpoint # type: str + self._credential = credential # type: AzureKeyCredential + self._client = _SearchServiceClient( + endpoint=endpoint, sdk_moniker=SDK_MONIKER, **kwargs + ) # type: _SearchServiceClient + + def __enter__(self): + # type: () -> SearchDataSourcesClient + self._client.__enter__() # pylint:disable=no-member + return self + + def __exit__(self, *args): + # type: (*Any) -> None + return self._client.__exit__(*args) # pylint:disable=no-member + + def close(self): + # type: () -> None + """Close the :class:`~azure.search.documents.SearchDataSourcesClient` session. + + """ + return self._client.close() + + @distributed_trace + def create_datasource(self, data_source, **kwargs): + # type: (DataSource, **Any) -> Dict[str, Any] + """Creates a new datasource. + + :param data_source: The definition of the datasource to create. + :type data_source: ~search.models.DataSource + :return: The created DataSource + :rtype: dict + + .. admonition:: Example: + + .. literalinclude:: ../samples/sample_data_source_operations.py + :start-after: [START create_data_source] + :end-before: [END create_data_source] + :language: python + :dedent: 4 + :caption: Create a Data Source + """ + kwargs["headers"] = self._merge_client_headers(kwargs.get("headers")) + result = self._client.data_sources.create(data_source, **kwargs) + return result + + @distributed_trace + def create_or_update_datasource(self, data_source, name=None, **kwargs): + # type: (DataSource, Optional[str], **Any) -> Dict[str, Any] + """Creates a new datasource or updates a datasource if it already exists. + :param name: The name of the datasource to create or update. + :type name: str + :param data_source: The definition of the datasource to create or update. + :type data_source: ~search.models.DataSource + :keyword match_condition: The match condition to use upon the etag + :type match_condition: ~azure.core.MatchConditions + :return: The created DataSource + :rtype: dict + """ + kwargs["headers"] = self._merge_client_headers(kwargs.get("headers")) + error_map, access_condition = get_access_conditions( + data_source, + kwargs.pop('match_condition', MatchConditions.Unconditionally) + ) + if not name: + name = data_source.name + result = self._client.data_sources.create_or_update( + data_source_name=name, + data_source=data_source, + access_condition=access_condition, + error_map=error_map, + **kwargs + ) + return result + + @distributed_trace + def get_datasource(self, name, **kwargs): + # type: (str, **Any) -> Dict[str, Any] + """Retrieves a datasource definition. + + :param name: The name of the datasource to retrieve. + :type name: str + :return: The DataSource that is fetched. + :rtype: dict + + .. admonition:: Example: + + .. literalinclude:: ../samples/sample_data_source_operations.py + :start-after: [START get_data_source] + :end-before: [END get_data_source] + :language: python + :dedent: 4 + :caption: Retrieve a DataSource + """ + kwargs["headers"] = self._merge_client_headers(kwargs.get("headers")) + result = self._client.data_sources.get(name, **kwargs) + return result + + @distributed_trace + def get_datasources(self, **kwargs): + # type: (**Any) -> Sequence[DataSource] + """Lists all datasources available for a search service. + + :return: List of all the data sources. + :rtype: `list[dict]` + + .. admonition:: Example: + + .. literalinclude:: ../samples/sample_data_source_operations.py + :start-after: [START list_data_source] + :end-before: [END list_data_source] + :language: python + :dedent: 4 + :caption: List all the DataSources + """ + kwargs["headers"] = self._merge_client_headers(kwargs.get("headers")) + result = self._client.data_sources.list(**kwargs) + return result.data_sources + + @distributed_trace + def delete_datasource(self, data_source, **kwargs): + # type: (Union[str, DataSource], **Any) -> None + """Deletes a datasource. To use access conditions, the Datasource model must be + provided instead of the name. It is enough to provide the name of the datasource + to delete unconditionally + + :param data_source: The datasource to delete. + :type data_source: str or ~search.models.DataSource + :keyword match_condition: The match condition to use upon the etag + :type match_condition: ~azure.core.MatchConditions + :return: None + :rtype: None + + .. admonition:: Example: + + .. literalinclude:: ../samples/sample_data_source_operations.py + :start-after: [START delete_data_source] + :end-before: [END delete_data_source] + :language: python + :dedent: 4 + :caption: Delete a DataSource + """ + kwargs["headers"] = self._merge_client_headers(kwargs.get("headers")) + error_map, access_condition = get_access_conditions( + data_source, + kwargs.pop('match_condition', MatchConditions.Unconditionally) + ) + try: + name = data_source.name + except AttributeError: + name = data_source + self._client.data_sources.delete( + data_source_name=name, + access_condition=access_condition, + error_map=error_map, + **kwargs + ) diff --git a/sdk/search/azure-search-documents/azure/search/documents/_service/_index.py b/sdk/search/azure-search-documents/azure/search/documents/_service/_index.py new file mode 100644 index 000000000000..00935a2a7bdd --- /dev/null +++ b/sdk/search/azure-search-documents/azure/search/documents/_service/_index.py @@ -0,0 +1,249 @@ +# ------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# -------------------------------------------------------------------------- +from typing import TYPE_CHECKING + +from .edm import Collection, ComplexType +from ._generated.models import Field + +if TYPE_CHECKING: + from typing import Any, Dict, List + +__all__ = ("ComplexField", "SearchableField", "SimpleField") + + +def SimpleField( + name, + type, # pylint:disable=redefined-builtin + key=False, + filterable=False, + facetable=False, + sortable=False, + hidden=False, +): + # type: (str, str, bool, bool, bool, bool, bool) -> Dict[str, Any] + """Configure a simple field for an Azure Search Index + + :param name: Required. The name of the field, which must be unique within the fields collection + of the index or parent field. + :type name: str + :param type: Required. The data type of the field. Possible values include: edm.String, + edm.Int32, edm.Int64, edm.Double, edm.Boolean, edm.DateTimeOffset, + edm.GeographyPoint, edm.ComplexType, from `azure.search.documents.edm`. + :type type: str + :param key: A value indicating whether the field uniquely identifies documents in the index. + Exactly one top-level field in each index must be chosen as the key field and it must be of + type Edm.String. Key fields can be used to look up documents directly and update or delete + specific documents. Default is False + :type key: bool + :param hidden: A value indicating whether the field can be returned in a search result. + You can enable this option if you want to use a field (for example, margin) as a filter, + sorting, or scoring mechanism but do not want the field to be visible to the end user. This + property must be False for key fields. This property can be changed on existing fields. + Enabling this property does not cause any increase in index storage requirements. Default is + False. + :type retrievable: bool + :param filterable: A value indicating whether to enable the field to be referenced in $filter + queries. filterable differs from searchable in how strings are handled. Fields of type + Edm.String or Collection(Edm.String) that are filterable do not undergo word-breaking, so + comparisons are for exact matches only. For example, if you set such a field f to "sunny day", + $filter=f eq 'sunny' will find no matches, but $filter=f eq 'sunny day' will. This property + must be null for complex fields. Default is False + :type filterable: bool + :param sortable: A value indicating whether to enable the field to be referenced in $orderby + expressions. By default Azure Cognitive Search sorts results by score, but in many experiences + users will want to sort by fields in the documents. A simple field can be sortable only if it + is single-valued (it has a single value in the scope of the parent document). Simple collection + fields cannot be sortable, since they are multi-valued. Simple sub-fields of complex + collections are also multi-valued, and therefore cannot be sortable. This is true whether it's + an immediate parent field, or an ancestor field, that's the complex collection. The default is + False. + :type sortable: bool + :param facetable: A value indicating whether to enable the field to be referenced in facet + queries. Typically used in a presentation of search results that includes hit count by category + (for example, search for digital cameras and see hits by brand, by megapixels, by price, and so + on). Fields of type edm.GeographyPoint or Collection(edm.GeographyPoint) cannot be facetable. + Default is False. + :type facetable: bool + """ + result = {"name": name, "type": type} # type: Dict[str, Any] + result["key"] = key + result["searchable"] = False + result["filterable"] = filterable + result["facetable"] = facetable + result["sortable"] = sortable + result["retrievable"] = not hidden + return Field(**result) + + +def SearchableField( + name, + type, # pylint:disable=redefined-builtin + key=False, + searchable=True, + filterable=False, + facetable=False, + sortable=False, + hidden=False, + analyzer=None, + search_analyzer=None, + index_analyzer=None, + synonym_maps=None, +): + # type: (str, str, bool, bool, bool, bool, bool, str, str, str, List[str]) -> Dict[str, Any] + """Configure a searchable text field for an Azure Search Index + + :param name: Required. The name of the field, which must be unique within the fields collection + of the index or parent field. + :type name: str + :param type: Required. The data type of the field. Possible values include: edm.String + and Collection(edm.String), from `azure.search.documents.edm`. + :type type: str + :param key: A value indicating whether the field uniquely identifies documents in the index. + Exactly one top-level field in each index must be chosen as the key field and it must be of + type Edm.String. Key fields can be used to look up documents directly and update or delete + specific documents. Default is False + :type key: bool + :param hidden: A value indicating whether the field can be returned in a search result. + You can enable this option if you want to use a field (for example, margin) as a filter, + sorting, or scoring mechanism but do not want the field to be visible to the end user. This + property must be False for key fields. This property can be changed on existing fields. + Enabling this property does not cause any increase in index storage requirements. Default is + False. + :type hidden: bool + :param searchable: A value indicating whether the field is full-text searchable. This means it + will undergo analysis such as word-breaking during indexing. If you set a searchable field to a + value like "sunny day", internally it will be split into the individual tokens "sunny" and + "day". This enables full-text searches for these terms. Note: searchable fields + consume extra space in your index since Azure Cognitive Search will store an additional + tokenized version of the field value for full-text searches. If you want to save space in your + index and you don't need a field to be included in searches, set searchable to false. Default + is True. + :type searchable: bool + :param filterable: A value indicating whether to enable the field to be referenced in $filter + queries. filterable differs from searchable in how strings are handled. Fields that are + filterable do not undergo word-breaking, so comparisons are for exact matches only. For example, + if you set such a field f to "sunny day", $filter=f eq 'sunny' will find no matches, but + $filter=f eq 'sunny day' will. Default is False. + :type filterable: bool + :param sortable: A value indicating whether to enable the field to be referenced in $orderby + expressions. By default Azure Cognitive Search sorts results by score, but in many experiences + users will want to sort by fields in the documents. The default is true False. + :type sortable: bool + :param facetable: A value indicating whether to enable the field to be referenced in facet + queries. Typically used in a presentation of search results that includes hit count by category + (for example, search for digital cameras and see hits by brand, by megapixels, by price, and so + on). Default is False. + :type facetable: bool + :param analyzer: The name of the analyzer to use for the field. This option can't be set together + with either searchAnalyzer or indexAnalyzer. Once the analyzer is chosen, it cannot be changed + for the field. Possible values include: 'ar.microsoft', 'ar.lucene', 'hy.lucene', + 'bn.microsoft', 'eu.lucene', 'bg.microsoft', 'bg.lucene', 'ca.microsoft', 'ca.lucene', 'zh- + Hans.microsoft', 'zh-Hans.lucene', 'zh-Hant.microsoft', 'zh-Hant.lucene', 'hr.microsoft', + 'cs.microsoft', 'cs.lucene', 'da.microsoft', 'da.lucene', 'nl.microsoft', 'nl.lucene', + 'en.microsoft', 'en.lucene', 'et.microsoft', 'fi.microsoft', 'fi.lucene', 'fr.microsoft', + 'fr.lucene', 'gl.lucene', 'de.microsoft', 'de.lucene', 'el.microsoft', 'el.lucene', + 'gu.microsoft', 'he.microsoft', 'hi.microsoft', 'hi.lucene', 'hu.microsoft', 'hu.lucene', + 'is.microsoft', 'id.microsoft', 'id.lucene', 'ga.lucene', 'it.microsoft', 'it.lucene', + 'ja.microsoft', 'ja.lucene', 'kn.microsoft', 'ko.microsoft', 'ko.lucene', 'lv.microsoft', + 'lv.lucene', 'lt.microsoft', 'ml.microsoft', 'ms.microsoft', 'mr.microsoft', 'nb.microsoft', + 'no.lucene', 'fa.lucene', 'pl.microsoft', 'pl.lucene', 'pt-BR.microsoft', 'pt-BR.lucene', 'pt- + PT.microsoft', 'pt-PT.lucene', 'pa.microsoft', 'ro.microsoft', 'ro.lucene', 'ru.microsoft', + 'ru.lucene', 'sr-cyrillic.microsoft', 'sr-latin.microsoft', 'sk.microsoft', 'sl.microsoft', + 'es.microsoft', 'es.lucene', 'sv.microsoft', 'sv.lucene', 'ta.microsoft', 'te.microsoft', + 'th.microsoft', 'th.lucene', 'tr.microsoft', 'tr.lucene', 'uk.microsoft', 'ur.microsoft', + 'vi.microsoft', 'standard.lucene', 'standardasciifolding.lucene', 'keyword', 'pattern', + 'simple', 'stop', 'whitespace'. + :type analyzer: str or ~search_service_client.models.AnalyzerName + :param search_analyzer: The name of the analyzer used at search time for the field. It must be + set together with indexAnalyzer and it cannot be set together with the analyzer option. This + property cannot be set to the name of a language analyzer; use the analyzer property instead + if you need a language analyzer. This analyzer can be updated on an existing field. Possible + values include: + 'ar.microsoft', 'ar.lucene', 'hy.lucene', 'bn.microsoft', 'eu.lucene', 'bg.microsoft', + 'bg.lucene', 'ca.microsoft', 'ca.lucene', 'zh-Hans.microsoft', 'zh-Hans.lucene', 'zh- + Hant.microsoft', 'zh-Hant.lucene', 'hr.microsoft', 'cs.microsoft', 'cs.lucene', 'da.microsoft', + 'da.lucene', 'nl.microsoft', 'nl.lucene', 'en.microsoft', 'en.lucene', 'et.microsoft', + 'fi.microsoft', 'fi.lucene', 'fr.microsoft', 'fr.lucene', 'gl.lucene', 'de.microsoft', + 'de.lucene', 'el.microsoft', 'el.lucene', 'gu.microsoft', 'he.microsoft', 'hi.microsoft', + 'hi.lucene', 'hu.microsoft', 'hu.lucene', 'is.microsoft', 'id.microsoft', 'id.lucene', + 'ga.lucene', 'it.microsoft', 'it.lucene', 'ja.microsoft', 'ja.lucene', 'kn.microsoft', + 'ko.microsoft', 'ko.lucene', 'lv.microsoft', 'lv.lucene', 'lt.microsoft', 'ml.microsoft', + 'ms.microsoft', 'mr.microsoft', 'nb.microsoft', 'no.lucene', 'fa.lucene', 'pl.microsoft', + 'pl.lucene', 'pt-BR.microsoft', 'pt-BR.lucene', 'pt-PT.microsoft', 'pt-PT.lucene', + 'pa.microsoft', 'ro.microsoft', 'ro.lucene', 'ru.microsoft', 'ru.lucene', 'sr- + cyrillic.microsoft', 'sr-latin.microsoft', 'sk.microsoft', 'sl.microsoft', 'es.microsoft', + 'es.lucene', 'sv.microsoft', 'sv.lucene', 'ta.microsoft', 'te.microsoft', 'th.microsoft', + 'th.lucene', 'tr.microsoft', 'tr.lucene', 'uk.microsoft', 'ur.microsoft', 'vi.microsoft', + 'standard.lucene', 'standardasciifolding.lucene', 'keyword', 'pattern', 'simple', 'stop', + 'whitespace'. + :type search_analyzer: str or ~search_service_client.models.AnalyzerName + :param index_analyzer: The name of the analyzer used at indexing time for the field. + It must be set together with searchAnalyzer and it cannot be set together with the analyzer + option. This property cannot be set to the name of a language analyzer; use the analyzer + property instead if you need a language analyzer. Once the analyzer is chosen, it cannot be + changed for the field. Possible values include: + 'ar.microsoft', 'ar.lucene', 'hy.lucene', 'bn.microsoft', 'eu.lucene', + 'bg.microsoft', 'bg.lucene', 'ca.microsoft', 'ca.lucene', 'zh-Hans.microsoft', 'zh- + Hans.lucene', 'zh-Hant.microsoft', 'zh-Hant.lucene', 'hr.microsoft', 'cs.microsoft', + 'cs.lucene', 'da.microsoft', 'da.lucene', 'nl.microsoft', 'nl.lucene', 'en.microsoft', + 'en.lucene', 'et.microsoft', 'fi.microsoft', 'fi.lucene', 'fr.microsoft', 'fr.lucene', + 'gl.lucene', 'de.microsoft', 'de.lucene', 'el.microsoft', 'el.lucene', 'gu.microsoft', + 'he.microsoft', 'hi.microsoft', 'hi.lucene', 'hu.microsoft', 'hu.lucene', 'is.microsoft', + 'id.microsoft', 'id.lucene', 'ga.lucene', 'it.microsoft', 'it.lucene', 'ja.microsoft', + 'ja.lucene', 'kn.microsoft', 'ko.microsoft', 'ko.lucene', 'lv.microsoft', 'lv.lucene', + 'lt.microsoft', 'ml.microsoft', 'ms.microsoft', 'mr.microsoft', 'nb.microsoft', 'no.lucene', + 'fa.lucene', 'pl.microsoft', 'pl.lucene', 'pt-BR.microsoft', 'pt-BR.lucene', 'pt-PT.microsoft', + 'pt-PT.lucene', 'pa.microsoft', 'ro.microsoft', 'ro.lucene', 'ru.microsoft', 'ru.lucene', 'sr- + cyrillic.microsoft', 'sr-latin.microsoft', 'sk.microsoft', 'sl.microsoft', 'es.microsoft', + 'es.lucene', 'sv.microsoft', 'sv.lucene', 'ta.microsoft', 'te.microsoft', 'th.microsoft', + 'th.lucene', 'tr.microsoft', 'tr.lucene', 'uk.microsoft', 'ur.microsoft', 'vi.microsoft', + 'standard.lucene', 'standardasciifolding.lucene', 'keyword', 'pattern', 'simple', 'stop', + 'whitespace'. + :type index_analyzer: str or ~search_service_client.models.AnalyzerName + :param synonym_maps: A list of the names of synonym maps to associate with this field. Currently + only one synonym map per field is supported. Assigning a synonym map to a field ensures that + query terms targeting that field are expanded at query-time using the rules in the synonym map. + This attribute can be changed on existing fields. + :type synonym_maps: list[str] + + """ + result = {"name": name, "type": type} # type: Dict[str, Any] + result["key"] = key + result["searchable"] = searchable + result["filterable"] = filterable + result["facetable"] = facetable + result["sortable"] = sortable + result["retrievable"] = not hidden + if analyzer: + result["analyzer"] = analyzer + if search_analyzer: + result["search_analyzer"] = search_analyzer + if index_analyzer: + result["index_analyzer"] = index_analyzer + if synonym_maps: + result["synonym_maps"] = synonym_maps + return Field(**result) + + +def ComplexField(name, fields, collection=False): + # type: (str, List[Dict[str, Any]], bool) -> Dict[str, Any] + """Configure a Complex or Complex collection field for an Azure Search + Index + + :param name: Required. The name of the field, which must be unique within the fields collection + of the index or parent field. + :type name: str + :param collection: Whether this complex field is a collection (default False) + :type collection: bool + :type type: str or ~search_service_client.models.DataType + :param fields: A list of sub-fields + :type fields: list[~search_service_client.models.Field] + + """ + typ = Collection(ComplexType) if collection else ComplexType + result = {"name": name, "type": typ} # type: Dict[str, Any] + result["fields"] = fields + return Field(**result) diff --git a/sdk/search/azure-search-documents/azure/search/documents/_service/_indexes_client.py b/sdk/search/azure-search-documents/azure/search/documents/_service/_indexes_client.py new file mode 100644 index 000000000000..355cffc065d9 --- /dev/null +++ b/sdk/search/azure-search-documents/azure/search/documents/_service/_indexes_client.py @@ -0,0 +1,268 @@ +# ------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# -------------------------------------------------------------------------- +from typing import TYPE_CHECKING + +from azure.core import MatchConditions +from azure.core.tracing.decorator import distributed_trace +from azure.core.paging import ItemPaged + +from ._generated import SearchServiceClient as _SearchServiceClient +from ._utils import ( + delistize_flags_for_index, + listize_flags_for_index, + get_access_conditions +) +from .._headers_mixin import HeadersMixin +from .._version import SDK_MONIKER + +if TYPE_CHECKING: + # pylint:disable=unused-import,ungrouped-imports + from ._generated.models import AnalyzeRequest, AnalyzeResult, Index + from typing import Any, Dict, List, Union + from azure.core.credentials import AzureKeyCredential + + +class SearchIndexesClient(HeadersMixin): + """A client to interact with Azure search service Indexes. + + This class is not normally instantiated directly, instead use + `get_skillsets_client()` from a `SearchServiceClient` + + """ + + _ODATA_ACCEPT = "application/json;odata.metadata=minimal" # type: str + + def __init__(self, endpoint, credential, **kwargs): + # type: (str, AzureKeyCredential, **Any) -> None + + self._endpoint = endpoint # type: str + self._credential = credential # type: AzureKeyCredential + self._client = _SearchServiceClient( + endpoint=endpoint, sdk_moniker=SDK_MONIKER, **kwargs + ) # type: _SearchServiceClient + + def __enter__(self): + # type: () -> SearchIndexesClient + self._client.__enter__() # pylint:disable=no-member + return self + + def __exit__(self, *args): + # type: (*Any) -> None + return self._client.__exit__(*args) # pylint:disable=no-member + + def close(self): + # type: () -> None + """Close the :class:`~azure.search.documents.SearchIndexesClient` session. + + """ + return self._client.close() + + @distributed_trace + def list_indexes(self, **kwargs): + # type: (**Any) -> ItemPaged[Index] + """List the indexes in an Azure Search service. + + :return: List of indexes + :rtype: list[~azure.search.documents.Index] + :raises: ~azure.core.exceptions.HttpResponseError + + """ + kwargs["headers"] = self._merge_client_headers(kwargs.get("headers")) + + def get_next(_token): + return self._client.indexes.list(**kwargs) + + def extract_data(response): + return None, [listize_flags_for_index(x) for x in response.indexes] + + return ItemPaged(get_next=get_next, extract_data=extract_data) + + @distributed_trace + def get_index(self, index_name, **kwargs): + # type: (str, **Any) -> Index + """ + + :param index_name: The name of the index to retrieve. + :type index_name: str + :return: Index object + :rtype: ~azure.search.documents.Index + :raises: ~azure.core.exceptions.HttpResponseError + + .. admonition:: Example: + + .. literalinclude:: ../samples/sample_index_crud_operations.py + :start-after: [START get_index] + :end-before: [END get_index] + :language: python + :dedent: 4 + :caption: Get an index. + """ + kwargs["headers"] = self._merge_client_headers(kwargs.get("headers")) + result = self._client.indexes.get(index_name, **kwargs) + return listize_flags_for_index(result) + + @distributed_trace + def get_index_statistics(self, index_name, **kwargs): + # type: (str, **Any) -> dict + """Returns statistics for the given index, including a document count + and storage usage. + + :param index_name: The name of the index to retrieve. + :type index_name: str + :return: Statistics for the given index, including a document count and storage usage. + :rtype: ~azure.search.documents.GetIndexStatisticsResult + :raises: ~azure.core.exceptions.HttpResponseError + + """ + kwargs["headers"] = self._merge_client_headers(kwargs.get("headers")) + result = self._client.indexes.get_statistics(index_name, **kwargs) + return result.as_dict() + + @distributed_trace + def delete_index(self, index, **kwargs): + # type: (Union[str, Index], **Any) -> None + """Deletes a search index and all the documents it contains. The model must be + provided instead of the name to use the access conditions. + + :param index: The index to retrieve. + :type index: str or ~search.models.Index + :keyword match_condition: The match condition to use upon the etag + :type match_condition: ~azure.core.MatchConditions + :raises: ~azure.core.exceptions.HttpResponseError + + .. admonition:: Example: + + .. literalinclude:: ../samples/sample_index_crud_operations.py + :start-after: [START delete_index] + :end-before: [END delete_index] + :language: python + :dedent: 4 + :caption: Delete an index. + """ + kwargs["headers"] = self._merge_client_headers(kwargs.get("headers")) + error_map, access_condition = get_access_conditions( + index, + kwargs.pop('match_condition', MatchConditions.Unconditionally) + ) + try: + index_name = index.name + except AttributeError: + index_name = index + self._client.indexes.delete( + index_name=index_name, + access_condition=access_condition, + error_map=error_map, + **kwargs + ) + + @distributed_trace + def create_index(self, index, **kwargs): + # type: (Index, **Any) -> Index + """Creates a new search index. + + :param index: The index object. + :type index: ~azure.search.documents.Index + :return: The index created + :rtype: ~azure.search.documents.Index + :raises: ~azure.core.exceptions.HttpResponseError + + .. admonition:: Example: + + .. literalinclude:: ../samples/sample_index_crud_operations.py + :start-after: [START create_index] + :end-before: [END create_index] + :language: python + :dedent: 4 + :caption: Creating a new index. + """ + kwargs["headers"] = self._merge_client_headers(kwargs.get("headers")) + patched_index = delistize_flags_for_index(index) + result = self._client.indexes.create(patched_index, **kwargs) + return result + + @distributed_trace + def create_or_update_index( + self, + index_name, + index, + allow_index_downtime=None, + **kwargs + ): + # type: (str, Index, bool, **Any) -> Index + """Creates a new search index or updates an index if it already exists. + + :param index_name: The name of the index. + :type index_name: str + :param index: The index object. + :type index: ~azure.search.documents.Index + :param allow_index_downtime: Allows new analyzers, tokenizers, token filters, or char filters + to be added to an index by taking the index offline for at least a few seconds. This + temporarily causes indexing and query requests to fail. Performance and write availability of + the index can be impaired for several minutes after the index is updated, or longer for very + large indexes. + :type allow_index_downtime: bool + :keyword match_condition: The match condition to use upon the etag + :type match_condition: ~azure.core.MatchConditions + :return: The index created or updated + :rtype: :class:`~azure.search.documents.Index` + :raises: :class:`~azure.core.exceptions.ResourceNotFoundError`, \ + :class:`~azure.core.exceptions.ResourceModifiedError`, \ + :class:`~azure.core.exceptions.ResourceNotModifiedError`, \ + :class:`~azure.core.exceptions.ResourceNotFoundError`, \ + :class:`~azure.core.exceptions.ResourceExistsError` + + .. admonition:: Example: + + .. literalinclude:: ../samples/sample_index_crud_operations.py + :start-after: [START update_index] + :end-before: [END update_index] + :language: python + :dedent: 4 + :caption: Update an index. + """ + error_map, access_condition = get_access_conditions( + index, + kwargs.pop('match_condition', MatchConditions.Unconditionally) + ) + kwargs["headers"] = self._merge_client_headers(kwargs.get("headers")) + patched_index = delistize_flags_for_index(index) + result = self._client.indexes.create_or_update( + index_name=index_name, + index=patched_index, + allow_index_downtime=allow_index_downtime, + access_condition=access_condition, + error_map=error_map, + **kwargs + ) + return result + + @distributed_trace + def analyze_text(self, index_name, analyze_request, **kwargs): + # type: (str, AnalyzeRequest, **Any) -> AnalyzeResult + """Shows how an analyzer breaks text into tokens. + + :param index_name: The name of the index for which to test an analyzer. + :type index_name: str + :param analyze_request: The text and analyzer or analysis components to test. + :type analyze_request: ~azure.search.documents.AnalyzeRequest + :return: AnalyzeResult + :rtype: ~azure.search.documents.AnalyzeResult + :raises: ~azure.core.exceptions.HttpResponseError + + .. admonition:: Example: + + .. literalinclude:: ../samples/sample_analyze_text.py + :start-after: [START simple_analyze_text] + :end-before: [END simple_analyze_text] + :language: python + :dedent: 4 + :caption: Analyze text + """ + kwargs["headers"] = self._merge_client_headers(kwargs.get("headers")) + result = self._client.indexes.analyze( + index_name=index_name, request=analyze_request, **kwargs + ) + return result diff --git a/sdk/search/azure-search-documents/azure/search/documents/_service/_search_service_client.py b/sdk/search/azure-search-documents/azure/search/documents/_service/_search_service_client.py index 7d469ca62495..e632088fe13e 100644 --- a/sdk/search/azure-search-documents/azure/search/documents/_service/_search_service_client.py +++ b/sdk/search/azure-search-documents/azure/search/documents/_service/_search_service_client.py @@ -6,34 +6,22 @@ from typing import TYPE_CHECKING from azure.core.tracing.decorator import distributed_trace -from azure.core import MatchConditions -from azure.core.exceptions import ( - ResourceExistsError, - ResourceNotFoundError, - ResourceModifiedError, - ResourceNotModifiedError, -) + from ._generated import SearchServiceClient as _SearchServiceClient -from ._generated.models import AccessCondition, Skillset, SynonymMap from .._headers_mixin import HeadersMixin from .._version import SDK_MONIKER -from ._utils import ( - delistize_flags_for_index, - listize_flags_for_index, - listize_synonyms, - prep_if_match, - prep_if_none_match, -) +from ._datasources_client import SearchDataSourcesClient +from ._indexes_client import SearchIndexesClient +from ._skillsets_client import SearchSkillsetsClient +from ._synonym_maps_client import SearchSynonymMapsClient if TYPE_CHECKING: # pylint:disable=unused-import,ungrouped-imports - from typing import Any, List, Sequence, Union + from typing import Any, Dict, List, Optional, Sequence from azure.core.credentials import AzureKeyCredential - from ._generated.models import Skill - from .. import Index, AnalyzeResult, AnalyzeRequest -class SearchServiceClient(HeadersMixin): +class SearchServiceClient(HeadersMixin): # pylint: disable=too-many-public-methods """A client to interact with an existing Azure search service. :param endpoint: The URL endpoint of an Azure search service @@ -62,6 +50,18 @@ def __init__(self, endpoint, credential, **kwargs): endpoint=endpoint, sdk_moniker=SDK_MONIKER, **kwargs ) # type: _SearchServiceClient + self._indexes_client = SearchIndexesClient(endpoint, credential, **kwargs) + + self._synonym_maps_client = SearchSynonymMapsClient( + endpoint, credential, **kwargs + ) + + self._skillsets_client = SearchSkillsetsClient(endpoint, credential, **kwargs) + + self._datasources_client = SearchDataSourcesClient( + endpoint, credential, **kwargs + ) + def __repr__(self): # type: () -> str return "".format(repr(self._endpoint))[:1024] @@ -82,8 +82,6 @@ def close(self): """ return self._client.close() - ### Service Operations - @distributed_trace def get_service_statistics(self, **kwargs): # type: (**Any) -> dict @@ -94,463 +92,38 @@ def get_service_statistics(self, **kwargs): result = self._client.get_service_statistics(**kwargs) return result.as_dict() - ### Index Operations - - @distributed_trace - def get_indexes(self, **kwargs): - # type: (**Any) -> List[Index] - """List the indexes in an Azure Search service. - - :return: List of indexes - :rtype: list[~azure.search.documents.Index] - :raises: ~azure.core.exceptions.HttpResponseError - - """ - kwargs["headers"] = self._merge_client_headers(kwargs.get("headers")) - result = self._client.indexes.list(**kwargs) - indexes = [listize_flags_for_index(x) for x in result.indexes] - return indexes - - @distributed_trace - def get_index(self, index_name, **kwargs): - # type: (str, **Any) -> Index - """ - - :param index_name: The name of the index to retrieve. - :type index_name: str - :return: Index object - :rtype: ~azure.search.documents.Index - :raises: ~azure.core.exceptions.HttpResponseError - - .. admonition:: Example: + def get_indexes_client(self): + # type: () -> SearchIndexesClient + """Return a client to perform operations on Search Indexes. - .. literalinclude:: ../samples/sample_index_crud_operations.py - :start-after: [START get_index] - :end-before: [END get_index] - :language: python - :dedent: 4 - :caption: Get an index. + :return: The Search Indexes client + :rtype: SearchIndexesClient """ - kwargs["headers"] = self._merge_client_headers(kwargs.get("headers")) - result = self._client.indexes.get(index_name, **kwargs) - return listize_flags_for_index(result) - - @distributed_trace - def get_index_statistics(self, index_name, **kwargs): - # type: (str, **Any) -> dict - """Returns statistics for the given index, including a document count - and storage usage. + return self._indexes_client - :param index_name: The name of the index to retrieve. - :type index_name: str - :return: Statistics for the given index, including a document count and storage usage. - :rtype: ~azure.search.documents.GetIndexStatisticsResult - :raises: ~azure.core.exceptions.HttpResponseError + def get_synonym_maps_client(self): + # type: () -> SearchSynonymMapsClient + """Return a client to perform operations on Synonym Maps. + :return: The Synonym Maps client + :rtype: SearchSynonymMapsClient """ - kwargs["headers"] = self._merge_client_headers(kwargs.get("headers")) - result = self._client.indexes.get_statistics(index_name, **kwargs) - return result.as_dict() - - @distributed_trace - def delete_index(self, index_name, **kwargs): - # type: (str, **Any) -> None - """Deletes a search index and all the documents it contains. + return self._synonym_maps_client - :param index_name: The name of the index to retrieve. - :type index_name: str - :raises: ~azure.core.exceptions.HttpResponseError + def get_skillsets_client(self): + # type: () -> SearchSkillsetsClient + """Return a client to perform operations on Skillsets. - .. admonition:: Example: - - .. literalinclude:: ../samples/sample_index_crud_operations.py - :start-after: [START delete_index] - :end-before: [END delete_index] - :language: python - :dedent: 4 - :caption: Delete an index. + :return: The Skillsets client + :rtype: SearchSkillsetClient """ - kwargs["headers"] = self._merge_client_headers(kwargs.get("headers")) - self._client.indexes.delete(index_name, **kwargs) - - @distributed_trace - def create_index(self, index, **kwargs): - # type: (Index, **Any) -> Index - """Creates a new search index. + return self._skillsets_client - :param index: The index object. - :type index: ~azure.search.documents.Index - :return: The index created - :rtype: ~azure.search.documents.Index - :raises: ~azure.core.exceptions.HttpResponseError + def get_datasources_client(self): + # type: () -> SearchDataSourcesClient + """Return a client to perform operations on Data Sources. - .. admonition:: Example: - - .. literalinclude:: ../samples/sample_index_crud_operations.py - :start-after: [START create_index] - :end-before: [END create_index] - :language: python - :dedent: 4 - :caption: Creating a new index. + :return: The Data Sources client + :rtype: SearchDataSourcesClient """ - kwargs["headers"] = self._merge_client_headers(kwargs.get("headers")) - patched_index = delistize_flags_for_index(index) - result = self._client.indexes.create(patched_index, **kwargs) - return result - - @distributed_trace - def create_or_update_index( - self, - index_name, - index, - allow_index_downtime=None, - match_condition=MatchConditions.Unconditionally, - **kwargs - ): - # type: (str, Index, bool, MatchConditions, **Any) -> Index - """Creates a new search index or updates an index if it already exists. - - :param index_name: The name of the index. - :type index_name: str - :param index: The index object. - :type index: ~azure.search.documents.Index - :param allow_index_downtime: Allows new analyzers, tokenizers, token filters, or char filters - to be added to an index by taking the index offline for at least a few seconds. This - temporarily causes indexing and query requests to fail. Performance and write availability of - the index can be impaired for several minutes after the index is updated, or longer for very - large indexes. - :type allow_index_downtime: bool - :param match_condition: The match condition to use upon the etag - :type match_condition: ~azure.core.MatchConditions - :return: The index created or updated - :rtype: :class:`~azure.search.documents.Index` - :raises: :class:`~azure.core.exceptions.ResourceNotFoundError`, \ - :class:`~azure.core.exceptions.ResourceModifiedError`, \ - :class:`~azure.core.exceptions.ResourceNotModifiedError`, \ - :class:`~azure.core.exceptions.ResourceNotFoundError`, \ - :class:`~azure.core.exceptions.ResourceExistsError` - - .. admonition:: Example: - - .. literalinclude:: ../samples/sample_index_crud_operations.py - :start-after: [START update_index] - :end-before: [END update_index] - :language: python - :dedent: 4 - :caption: Update an index. - """ - error_map = {404: ResourceNotFoundError} - access_condition = None - if index.e_tag: - access_condition = AccessCondition() - access_condition.if_match = prep_if_match(index.e_tag, match_condition) - access_condition.if_none_match = prep_if_none_match( - index.e_tag, match_condition - ) - if match_condition == MatchConditions.IfNotModified: - error_map[412] = ResourceModifiedError - if match_condition == MatchConditions.IfModified: - error_map[304] = ResourceNotModifiedError - if match_condition == MatchConditions.IfPresent: - error_map[412] = ResourceNotFoundError - if match_condition == MatchConditions.IfMissing: - error_map[412] = ResourceExistsError - kwargs["headers"] = self._merge_client_headers(kwargs.get("headers")) - patched_index = delistize_flags_for_index(index) - result = self._client.indexes.create_or_update( - index_name=index_name, - index=patched_index, - allow_index_downtime=allow_index_downtime, - access_condition=access_condition, - **kwargs - ) - return result - - @distributed_trace - def analyze_text(self, index_name, analyze_request, **kwargs): - # type: (str, AnalyzeRequest, **Any) -> AnalyzeResult - """Shows how an analyzer breaks text into tokens. - - :param index_name: The name of the index for which to test an analyzer. - :type index_name: str - :param analyze_request: The text and analyzer or analysis components to test. - :type analyze_request: ~azure.search.documents.AnalyzeRequest - :return: AnalyzeResult - :rtype: ~azure.search.documents.AnalyzeResult - :raises: ~azure.core.exceptions.HttpResponseError - - .. admonition:: Example: - - .. literalinclude:: ../samples/sample_analyze_text.py - :start-after: [START simple_analyze_text] - :end-before: [END simple_analyze_text] - :language: python - :dedent: 4 - :caption: Analyze text - """ - kwargs["headers"] = self._merge_client_headers(kwargs.get("headers")) - result = self._client.indexes.analyze( - index_name=index_name, request=analyze_request, **kwargs - ) - return result - - # Synonym Maps Operations - - @distributed_trace - def get_synonym_maps(self, **kwargs): - # type: (**Any) -> List[Index] - """List the Synonym Maps in an Azure Search service. - - :return: List of synonym maps - :rtype: list[dict] - :raises: ~azure.core.exceptions.HttpResponseError - - .. admonition:: Example: - - .. literalinclude:: ../samples/sample_synonym_map_operations.py - :start-after: [START get_synonym_maps] - :end-before: [END get_synonym_maps] - :language: python - :dedent: 4 - :caption: List Synonym Maps - - """ - kwargs["headers"] = self._merge_client_headers(kwargs.get("headers")) - result = self._client.synonym_maps.list(**kwargs) - return [listize_synonyms(x) for x in result.as_dict()["synonym_maps"]] - - @distributed_trace - def get_synonym_map(self, name, **kwargs): - # type: (str, **Any) -> dict - """Retrieve a named Synonym Map in an Azure Search service - - :param name: The name of the Synonym Map to get - :type name: str - :return: The retrieved Synonym Map - :rtype: dict - :raises: :class:`~azure.core.exceptions.ResourceNotFoundError` - - .. admonition:: Example: - - .. literalinclude:: ../samples/sample_synonym_map_operations.py - :start-after: [START get_synonym_map] - :end-before: [END get_synonym_map] - :language: python - :dedent: 4 - :caption: Get a Synonym Map - - """ - kwargs["headers"] = self._merge_client_headers(kwargs.get("headers")) - result = self._client.synonym_maps.get(name, **kwargs) - return listize_synonyms(result.as_dict()) - - @distributed_trace - def delete_synonym_map(self, name, **kwargs): - # type: (str, **Any) -> None - """Delete a named Synonym Map in an Azure Search service - - :param name: The name of the Synonym Map to delete - :type name: str - - .. admonition:: Example: - - .. literalinclude:: ../samples/sample_synonym_map_operations.py - :start-after: [START delete_synonym_map] - :end-before: [END delete_synonym_map] - :language: python - :dedent: 4 - :caption: Delete a Synonym Map - - """ - kwargs["headers"] = self._merge_client_headers(kwargs.get("headers")) - self._client.synonym_maps.delete(name, **kwargs) - - @distributed_trace - def create_synonym_map(self, name, synonyms, **kwargs): - # type: (str, Sequence[str], **Any) -> dict - """Create a new Synonym Map in an Azure Search service - - :param name: The name of the Synonym Map to create - :type name: str - :param synonyms: The list of synonyms in SOLR format - :type synonyms: List[str] - :return: The created Synonym Map - :rtype: dict - - .. admonition:: Example: - - .. literalinclude:: ../samples/sample_synonym_map_operations.py - :start-after: [START create_synonym_map] - :end-before: [END create_synonym_map] - :language: python - :dedent: 4 - :caption: Create a Synonym Map - - """ - kwargs["headers"] = self._merge_client_headers(kwargs.get("headers")) - solr_format_synonyms = "\n".join(synonyms) - synonym_map = SynonymMap(name=name, synonyms=solr_format_synonyms) - result = self._client.synonym_maps.create(synonym_map, **kwargs) - return listize_synonyms(result.as_dict()) - - @distributed_trace - def create_or_update_synonym_map(self, name, synonyms, **kwargs): - # type: (str, Sequence[str], **Any) -> dict - """Create a new Synonym Map in an Azure Search service, or update an - existing one. - - :param name: The name of the Synonym Map to create or update - :type name: str - :param synonyms: A list of synonyms in SOLR format - :type synonyms: List[str] - :return: The created or updated Synonym Map - :rtype: dict - - """ - kwargs["headers"] = self._merge_client_headers(kwargs.get("headers")) - solr_format_synonyms = "\n".join(synonyms) - synonym_map = SynonymMap(name=name, synonyms=solr_format_synonyms) - result = self._client.synonym_maps.create_or_update(name, synonym_map, **kwargs) - return listize_synonyms(result.as_dict()) - - # Skillset Operations - - @distributed_trace - def get_skillsets(self, **kwargs): - # type: (**Any) -> List[Skillset] - """List the Skillsets in an Azure Search service. - - :return: List of Skillsets - :rtype: list[dict] - :raises: ~azure.core.exceptions.HttpResponseError - - .. admonition:: Example: - - .. literalinclude:: ../samples/sample_skillset_operations.py - :start-after: [START get_skillsets] - :end-before: [END get_skillsets] - :language: python - :dedent: 4 - :caption: List Skillsets - - """ - kwargs["headers"] = self._merge_client_headers(kwargs.get("headers")) - result = self._client.skillsets.list(**kwargs) - return result.skillsets - - @distributed_trace - def get_skillset(self, name, **kwargs): - # type: (str, **Any) -> Skillset - """Retrieve a named Skillset in an Azure Search service - - :param name: The name of the Skillset to get - :type name: str - :return: The retrieved Skillset - :rtype: dict - :raises: :class:`~azure.core.exceptions.ResourceNotFoundError` - - .. admonition:: Example: - - .. literalinclude:: ../samples/sample_skillset_operations.py - :start-after: [START get_skillset] - :end-before: [END get_skillset] - :language: python - :dedent: 4 - :caption: Get a Skillset - - """ - kwargs["headers"] = self._merge_client_headers(kwargs.get("headers")) - return self._client.skillsets.get(name, **kwargs) - - @distributed_trace - def delete_skillset(self, name, **kwargs): - # type: (str, **Any) -> None - """Delete a named Skillset in an Azure Search service - - :param name: The name of the Skillset to delete - :type name: str - - .. admonition:: Example: - - .. literalinclude:: ../samples/sample_skillset_operations.py - :start-after: [START delete_skillset] - :end-before: [END delete_skillset] - :language: python - :dedent: 4 - :caption: Delete a Skillset - - """ - kwargs["headers"] = self._merge_client_headers(kwargs.get("headers")) - self._client.skillsets.delete(name, **kwargs) - - @distributed_trace - def create_skillset(self, name, skills, description, **kwargs): - # type: (str, Sequence[Skill], str, **Any) -> Skillset - """Create a new Skillset in an Azure Search service - - :param name: The name of the Skillset to create - :type name: str - :param skills: A list of Skill objects to include in the Skillset - :type skills: List[Skill]] - :param description: A description for the Skillset - :type description: Optional[str] - :return: The created Skillset - :rtype: dict - - .. admonition:: Example: - - .. literalinclude:: ../samples/sample_skillset_operations.py - :start-after: [START create_skillset] - :end-before: [END create_skillset] - :language: python - :dedent: 4 - :caption: Create a Skillset - - """ - kwargs["headers"] = self._merge_client_headers(kwargs.get("headers")) - - skillset = Skillset(name=name, skills=list(skills), description=description) - - return self._client.skillsets.create(skillset, **kwargs) - - @distributed_trace - def create_or_update_skillset(self, name, **kwargs): - # type: (str, Sequence[Skill], str, **Any) -> Skillset - """Create a new Skillset in an Azure Search service, or update an - existing one. - - A `Skillset` object mat - - :param name: The name of the Skillset to create or update - :type name: str - :param skills: A list of Skill objects to include in the Skillset - :type skills: List[Skill] - :param description: A description for the Skillset - :type description: Optional[str] - :param skillset: A Skillset to create or update. - :type skillset: :class:`~azure.search.documents.Skillset` - :return: The created or updated Skillset - :rtype: dict - - If a `skillset` is passed in, any optional `skills`, or - `description` parameter values will override it. - - """ - kwargs["headers"] = self._merge_client_headers(kwargs.get("headers")) - - if "skillset" in kwargs: - skillset = kwargs.pop("skillset") - skillset = Skillset.deserialize(skillset.serialize()) - skillset.name = name - for param in ("description", "skills"): - if param in kwargs: - setattr(skillset, param, kwargs.pop(param)) - else: - - skillset = Skillset( - name=name, - description=kwargs.pop("description", None), - skills=kwargs.pop("skills", None), - ) - - return self._client.skillsets.create_or_update(name, skillset, **kwargs) + return self._datasources_client diff --git a/sdk/search/azure-search-documents/azure/search/documents/_service/_skillsets_client.py b/sdk/search/azure-search-documents/azure/search/documents/_service/_skillsets_client.py new file mode 100644 index 000000000000..5556aa26db03 --- /dev/null +++ b/sdk/search/azure-search-documents/azure/search/documents/_service/_skillsets_client.py @@ -0,0 +1,226 @@ +# ------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# -------------------------------------------------------------------------- +from typing import TYPE_CHECKING + +from azure.core import MatchConditions +from azure.core.tracing.decorator import distributed_trace +from azure.core.exceptions import ClientAuthenticationError, ResourceNotFoundError + +from ._generated import SearchServiceClient as _SearchServiceClient +from ._generated.models import Skillset +from ._utils import get_access_conditions +from .._headers_mixin import HeadersMixin +from .._version import SDK_MONIKER + +if TYPE_CHECKING: + # pylint:disable=unused-import,ungrouped-imports + from ._generated.models import Skill + from typing import Any, List, Sequence, Union + from azure.core.credentials import AzureKeyCredential + + +class SearchSkillsetsClient(HeadersMixin): + """A client to interact with Azure search service Skillsets. + + This class is not normally instantiated directly, instead use + `get_skillsets_client()` from a `SearchServiceClient` + + """ + + _ODATA_ACCEPT = "application/json;odata.metadata=minimal" # type: str + + def __init__(self, endpoint, credential, **kwargs): + # type: (str, AzureKeyCredential, **Any) -> None + + self._endpoint = endpoint # type: str + self._credential = credential # type: AzureKeyCredential + self._client = _SearchServiceClient( + endpoint=endpoint, sdk_moniker=SDK_MONIKER, **kwargs + ) # type: _SearchServiceClient + + def __enter__(self): + # type: () -> SearchSkillsetsClient + self._client.__enter__() # pylint:disable=no-member + return self + + def __exit__(self, *args): + # type: (*Any) -> None + return self._client.__exit__(*args) # pylint:disable=no-member + + def close(self): + # type: () -> None + """Close the :class:`~azure.search.documents.SearchSkillsetsClient` session. + + """ + return self._client.close() + + @distributed_trace + def get_skillsets(self, **kwargs): + # type: (**Any) -> List[Skillset] + """List the Skillsets in an Azure Search service. + + :return: List of Skillsets + :rtype: list[dict] + :raises: ~azure.core.exceptions.HttpResponseError + + .. admonition:: Example: + + .. literalinclude:: ../samples/sample_skillset_operations.py + :start-after: [START get_skillsets] + :end-before: [END get_skillsets] + :language: python + :dedent: 4 + :caption: List Skillsets + + """ + kwargs["headers"] = self._merge_client_headers(kwargs.get("headers")) + result = self._client.skillsets.list(**kwargs) + return result.skillsets + + @distributed_trace + def get_skillset(self, name, **kwargs): + # type: (str, **Any) -> Skillset + """Retrieve a named Skillset in an Azure Search service + + :param name: The name of the Skillset to get + :type name: str + :return: The retrieved Skillset + :rtype: dict + :raises: :class:`~azure.core.exceptions.ResourceNotFoundError` + + .. admonition:: Example: + + .. literalinclude:: ../samples/sample_skillset_operations.py + :start-after: [START get_skillset] + :end-before: [END get_skillset] + :language: python + :dedent: 4 + :caption: Get a Skillset + + """ + kwargs["headers"] = self._merge_client_headers(kwargs.get("headers")) + return self._client.skillsets.get(name, **kwargs) + + @distributed_trace + def delete_skillset(self, skillset, **kwargs): + # type: (Union[str, Skillset], **Any) -> None + """Delete a named Skillset in an Azure Search service. To use access conditions, + the Skillset model must be provided instead of the name. It is enough to provide + the name of the skillset to delete unconditionally + + :param name: The Skillset to delete + :type name: str or ~search.models.Skillset + :keyword match_condition: The match condition to use upon the etag + :type match_condition: ~azure.core.MatchConditions + + .. admonition:: Example: + + .. literalinclude:: ../samples/sample_skillset_operations.py + :start-after: [START delete_skillset] + :end-before: [END delete_skillset] + :language: python + :dedent: 4 + :caption: Delete a Skillset + + """ + kwargs["headers"] = self._merge_client_headers(kwargs.get("headers")) + error_map, access_condition = get_access_conditions( + skillset, + kwargs.pop('match_condition', MatchConditions.Unconditionally) + ) + try: + name = skillset.name + except AttributeError: + name = skillset + self._client.skillsets.delete(name, access_condition=access_condition, error_map=error_map, **kwargs) + + @distributed_trace + def create_skillset(self, name, skills, description, **kwargs): + # type: (str, Sequence[Skill], str, **Any) -> Skillset + """Create a new Skillset in an Azure Search service + + :param name: The name of the Skillset to create + :type name: str + :param skills: A list of Skill objects to include in the Skillset + :type skills: List[Skill]] + :param description: A description for the Skillset + :type description: Optional[str] + :return: The created Skillset + :rtype: dict + + .. admonition:: Example: + + .. literalinclude:: ../samples/sample_skillset_operations.py + :start-after: [START create_skillset] + :end-before: [END create_skillset] + :language: python + :dedent: 4 + :caption: Create a Skillset + + """ + kwargs["headers"] = self._merge_client_headers(kwargs.get("headers")) + + skillset = Skillset(name=name, skills=list(skills), description=description) + + return self._client.skillsets.create(skillset, **kwargs) + + @distributed_trace + def create_or_update_skillset(self, name, **kwargs): + # type: (str, **Any) -> Skillset + """Create a new Skillset in an Azure Search service, or update an + existing one. The skillset param must be provided to perform the + operation with access conditions. + + :param name: The name of the Skillset to create or update + :type name: str + :keyword skills: A list of Skill objects to include in the Skillset + :type skills: List[Skill] + :keyword description: A description for the Skillset + :type description: Optional[str] + :keyword skillset: A Skillset to create or update. + :type skillset: :class:`~azure.search.documents.Skillset` + :keyword match_condition: The match condition to use upon the etag + :type match_condition: ~azure.core.MatchConditions + :return: The created or updated Skillset + :rtype: dict + + If a `skillset` is passed in, any optional `skills`, or + `description` parameter values will override it. + + """ + kwargs["headers"] = self._merge_client_headers(kwargs.get("headers")) + error_map = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError + } + access_condition = None + + if "skillset" in kwargs: + skillset = kwargs.pop("skillset") + error_map, access_condition = get_access_conditions( + skillset, + kwargs.pop('match_condition', MatchConditions.Unconditionally) + ) + skillset = Skillset.deserialize(skillset.serialize()) + skillset.name = name + for param in ("description", "skills"): + if param in kwargs: + setattr(skillset, param, kwargs.pop(param)) + else: + + skillset = Skillset( + name=name, + description=kwargs.pop("description", None), + skills=kwargs.pop("skills", None), + ) + + return self._client.skillsets.create_or_update( + skillset_name=name, + skillset=skillset, + access_condition=access_condition, + error_map=error_map, + **kwargs + ) diff --git a/sdk/search/azure-search-documents/azure/search/documents/_service/_synonym_maps_client.py b/sdk/search/azure-search-documents/azure/search/documents/_service/_synonym_maps_client.py new file mode 100644 index 000000000000..d5fe5ab9082a --- /dev/null +++ b/sdk/search/azure-search-documents/azure/search/documents/_service/_synonym_maps_client.py @@ -0,0 +1,211 @@ +# ------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# -------------------------------------------------------------------------- +from typing import TYPE_CHECKING + +from azure.core import MatchConditions +from azure.core.tracing.decorator import distributed_trace + +from ._generated import SearchServiceClient as _SearchServiceClient +from ._generated.models import SynonymMap +from ._utils import listize_synonyms, get_access_conditions +from .._headers_mixin import HeadersMixin +from .._version import SDK_MONIKER + +if TYPE_CHECKING: + # pylint:disable=unused-import,ungrouped-imports + from ._generated.models import Skill + from typing import Any, Dict, List, Sequence, Union, Optional + from azure.core.credentials import AzureKeyCredential + + +class SearchSynonymMapsClient(HeadersMixin): + """A client to interact with Azure search service Synonym Maps. + + This class is not normally instantiated directly, instead use + `get_synonym_maps_client()` from a `SearchServiceClient` + + """ + + _ODATA_ACCEPT = "application/json;odata.metadata=minimal" # type: str + + def __init__(self, endpoint, credential, **kwargs): + # type: (str, AzureKeyCredential, **Any) -> None + + self._endpoint = endpoint # type: str + self._credential = credential # type: AzureKeyCredential + self._client = _SearchServiceClient( + endpoint=endpoint, sdk_moniker=SDK_MONIKER, **kwargs + ) # type: _SearchServiceClient + + def __enter__(self): + # type: () -> SearchSynonymMapsClient + self._client.__enter__() # pylint:disable=no-member + return self + + def __exit__(self, *args): + # type: (*Any) -> None + return self._client.__exit__(*args) # pylint:disable=no-member + + def close(self): + # type: () -> None + """Close the :class:`~azure.search.documents.SearchSynonymMapsClient` session. + + """ + return self._client.close() + + @distributed_trace + def get_synonym_maps(self, **kwargs): + # type: (**Any) -> List[Dict[Any, Any]] + """List the Synonym Maps in an Azure Search service. + + :return: List of synonym maps + :rtype: list[dict] + :raises: ~azure.core.exceptions.HttpResponseError + + .. admonition:: Example: + + .. literalinclude:: ../samples/sample_synonym_map_operations.py + :start-after: [START get_synonym_maps] + :end-before: [END get_synonym_maps] + :language: python + :dedent: 4 + :caption: List Synonym Maps + + """ + kwargs["headers"] = self._merge_client_headers(kwargs.get("headers")) + result = self._client.synonym_maps.list(**kwargs) + return [listize_synonyms(x) for x in result.as_dict()["synonym_maps"]] + + @distributed_trace + def get_synonym_map(self, name, **kwargs): + # type: (str, **Any) -> dict + """Retrieve a named Synonym Map in an Azure Search service + + :param name: The name of the Synonym Map to get + :type name: str + :return: The retrieved Synonym Map + :rtype: dict + :raises: :class:`~azure.core.exceptions.ResourceNotFoundError` + + .. admonition:: Example: + + .. literalinclude:: ../samples/sample_synonym_map_operations.py + :start-after: [START get_synonym_map] + :end-before: [END get_synonym_map] + :language: python + :dedent: 4 + :caption: Get a Synonym Map + + """ + kwargs["headers"] = self._merge_client_headers(kwargs.get("headers")) + result = self._client.synonym_maps.get(name, **kwargs) + return listize_synonyms(result.as_dict()) + + @distributed_trace + def delete_synonym_map(self, synonym_map, **kwargs): + # type: (Union[str, SynonymMap], **Any) -> None + """Delete a named Synonym Map in an Azure Search service. To use access conditions, + the SynonymMap model must be provided instead of the name. It is enough to provide + the name of the synonym map to delete unconditionally. + + :param name: The Synonym Map to delete + :type name: str or ~search.models.SynonymMap + :keyword match_condition: The match condition to use upon the etag + :type match_condition: ~azure.core.MatchConditions + :return: None + :rtype: None + + .. admonition:: Example: + + .. literalinclude:: ../samples/sample_synonym_map_operations.py + :start-after: [START delete_synonym_map] + :end-before: [END delete_synonym_map] + :language: python + :dedent: 4 + :caption: Delete a Synonym Map + + """ + kwargs["headers"] = self._merge_client_headers(kwargs.get("headers")) + error_map, access_condition = get_access_conditions( + synonym_map, + kwargs.pop('match_condition', MatchConditions.Unconditionally) + ) + try: + name = synonym_map.name + except AttributeError: + name = synonym_map + self._client.synonym_maps.delete( + synonym_map_name=name, + access_condition=access_condition, + error_map=error_map, + **kwargs + ) + + @distributed_trace + def create_synonym_map(self, name, synonyms, **kwargs): + # type: (str, Sequence[str], **Any) -> dict + """Create a new Synonym Map in an Azure Search service + + :param name: The name of the Synonym Map to create + :type name: str + :param synonyms: The list of synonyms in SOLR format + :type synonyms: List[str] + :return: The created Synonym Map + :rtype: dict + + .. admonition:: Example: + + .. literalinclude:: ../samples/sample_synonym_map_operations.py + :start-after: [START create_synonym_map] + :end-before: [END create_synonym_map] + :language: python + :dedent: 4 + :caption: Create a Synonym Map + + """ + kwargs["headers"] = self._merge_client_headers(kwargs.get("headers")) + solr_format_synonyms = "\n".join(synonyms) + synonym_map = SynonymMap(name=name, synonyms=solr_format_synonyms) + result = self._client.synonym_maps.create(synonym_map, **kwargs) + return listize_synonyms(result.as_dict()) + + @distributed_trace + def create_or_update_synonym_map(self, synonym_map, synonyms=None, **kwargs): + # type: (Union[str, SynonymMap], Optional[Sequence[str]], **Any) -> dict + """Create a new Synonym Map in an Azure Search service, or update an + existing one. + + :param synonym_map: The name of the Synonym Map to create or update + :type synonym_map: str or ~azure.search.documents.SynonymMap + :param synonyms: A list of synonyms in SOLR format + :type synonyms: List[str] + :keyword match_condition: The match condition to use upon the etag + :type match_condition: ~azure.core.MatchConditions + :return: The created or updated Synonym Map + :rtype: dict + + """ + kwargs["headers"] = self._merge_client_headers(kwargs.get("headers")) + error_map, access_condition = get_access_conditions( + synonym_map, + kwargs.pop('match_condition', MatchConditions.Unconditionally) + ) + try: + name = synonym_map.name + if synonyms: + synonym_map.synonyms = "\n".join(synonyms) + except AttributeError: + name = synonym_map + solr_format_synonyms = "\n".join(synonyms) + synonym_map = SynonymMap(name=name, synonyms=solr_format_synonyms) + result = self._client.synonym_maps.create_or_update( + synonym_map_name=name, + synonym_map=synonym_map, + access_condition=access_condition, + error_map=error_map, + **kwargs + ) + return listize_synonyms(result.as_dict()) diff --git a/sdk/search/azure-search-documents/azure/search/documents/_service/_utils.py b/sdk/search/azure-search-documents/azure/search/documents/_service/_utils.py index d8bab3e7bcde..6ad76de52769 100644 --- a/sdk/search/azure-search-documents/azure/search/documents/_service/_utils.py +++ b/sdk/search/azure-search-documents/azure/search/documents/_service/_utils.py @@ -4,12 +4,20 @@ # license information. # ------------------------------------------------------------------------- from typing import TYPE_CHECKING - +import six from azure.core import MatchConditions +from azure.core.exceptions import ( + ClientAuthenticationError, + ResourceExistsError, + ResourceNotFoundError, + ResourceModifiedError, + ResourceNotModifiedError, +) from ._generated.models import ( Index, PatternAnalyzer as _PatternAnalyzer, PatternTokenizer as _PatternTokenizer, + AccessCondition ) from ._models import PatternAnalyzer, PatternTokenizer @@ -113,14 +121,14 @@ def delistize_flags_for_index(index): # type: (Index) -> Index if index.analyzers: index.analyzers = [ - delistize_flags_for_pattern_analyzer(x) + delistize_flags_for_pattern_analyzer(x) # type: ignore if isinstance(x, PatternAnalyzer) else x for x in index.analyzers - ] + ] # mypy: ignore if index.tokenizers: index.tokenizers = [ - delistize_flags_for_pattern_tokenizer(x) + delistize_flags_for_pattern_tokenizer(x) # type: ignore if isinstance(x, PatternTokenizer) else x for x in index.tokenizers @@ -132,14 +140,14 @@ def listize_flags_for_index(index): # type: (Index) -> Index if index.analyzers: index.analyzers = [ - listize_flags_for_pattern_analyzer(x) + listize_flags_for_pattern_analyzer(x) # type: ignore if isinstance(x, _PatternAnalyzer) else x for x in index.analyzers ] if index.tokenizers: index.tokenizers = [ - listize_flags_for_pattern_tokenizer(x) + listize_flags_for_pattern_tokenizer(x) # type: ignore if isinstance(x, _PatternTokenizer) else x for x in index.tokenizers @@ -151,3 +159,31 @@ def listize_synonyms(synonym_map): # type: (dict) -> dict synonym_map["synonyms"] = synonym_map["synonyms"].split("\n") return synonym_map + +def get_access_conditions(model, match_condition=MatchConditions.Unconditionally): + # type: (Any, MatchConditions) -> Tuple[Dict[int, Any], AccessCondition] + error_map = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError + } + + if isinstance(model, six.string_types): + if match_condition is not MatchConditions.Unconditionally: + raise ValueError("A model must be passed to use access conditions") + return (error_map, None) + + try: + if_match = prep_if_match(model.e_tag, match_condition) + if_none_match = prep_if_none_match(model.e_tag, match_condition) + if match_condition == MatchConditions.IfNotModified: + error_map[412] = ResourceModifiedError + if match_condition == MatchConditions.IfModified: + error_map[304] = ResourceNotModifiedError + error_map[412] = ResourceNotModifiedError + if match_condition == MatchConditions.IfPresent: + error_map[412] = ResourceNotFoundError + if match_condition == MatchConditions.IfMissing: + error_map[412] = ResourceExistsError + return (error_map, AccessCondition(if_match=if_match, if_none_match=if_none_match)) + except AttributeError: + raise ValueError("Unable to get e_tag from the model") diff --git a/sdk/search/azure-search-documents/azure/search/documents/_service/aio/_datasources_client.py b/sdk/search/azure-search-documents/azure/search/documents/_service/aio/_datasources_client.py new file mode 100644 index 000000000000..65d5dd8ef88a --- /dev/null +++ b/sdk/search/azure-search-documents/azure/search/documents/_service/aio/_datasources_client.py @@ -0,0 +1,187 @@ +# ------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# -------------------------------------------------------------------------- +from typing import TYPE_CHECKING + +from azure.core import MatchConditions +from azure.core.tracing.decorator_async import distributed_trace_async + +from .._generated.aio import SearchServiceClient as _SearchServiceClient +from .._utils import get_access_conditions +from ..._headers_mixin import HeadersMixin +from ..._version import SDK_MONIKER + +if TYPE_CHECKING: + # pylint:disable=unused-import,ungrouped-imports + from .._generated.models import DataSource + from typing import Any, Dict, Optional, Sequence, Union + from azure.core.credentials import AzureKeyCredential + + +class SearchDataSourcesClient(HeadersMixin): + """A client to interact with Azure search service Data Sources. + + This class is not normally instantiated directly, instead use + `get_datasources_client()` from a `SearchServiceClient` + + """ + + _ODATA_ACCEPT = "application/json;odata.metadata=minimal" # type: str + + def __init__(self, endpoint, credential, **kwargs): + # type: (str, AzureKeyCredential, **Any) -> None + + self._endpoint = endpoint # type: str + self._credential = credential # type: AzureKeyCredential + self._client = _SearchServiceClient( + endpoint=endpoint, sdk_moniker=SDK_MONIKER, **kwargs + ) # type: _SearchServiceClient + + async def __aenter__(self): + # type: () -> SearchDataSourcesClient + await self._client.__aenter__() # pylint:disable=no-member + return self + + async def __aexit__(self, *args): + # type: (*Any) -> None + return await self._client.__aexit__(*args) # pylint:disable=no-member + + async def close(self): + # type: () -> None + """Close the :class:`~azure.search.documents.aio.SearchDataSourcesClient` session. + + """ + return await self._client.close() + + @distributed_trace_async + async def create_datasource(self, data_source, **kwargs): + # type: (DataSource, **Any) -> Dict[str, Any] + """Creates a new datasource. + :param data_source: The definition of the datasource to create. + :type data_source: ~search.models.DataSource + :return: The created DataSource + :rtype: dict + + .. admonition:: Example: + + .. literalinclude:: ../samples/async_samples/sample_data_source_operations_async.py + :start-after: [START create_data_source_async] + :end-before: [END create_data_source_async] + :language: python + :dedent: 4 + :caption: Create a DataSource + """ + kwargs["headers"] = self._merge_client_headers(kwargs.get("headers")) + result = await self._client.data_sources.create(data_source, **kwargs) + return result + + @distributed_trace_async + async def create_or_update_datasource(self, data_source, name=None, **kwargs): + # type: (DataSource, Optional[str], **Any) -> Dict[str, Any] + """Creates a new datasource or updates a datasource if it already exists. + :param name: The name of the datasource to create or update. + :type name: str + :param data_source: The definition of the datasource to create or update. + :type data_source: ~search.models.DataSource + :keyword match_condition: The match condition to use upon the etag + :type match_condition: ~azure.core.MatchConditions + :return: The created DataSource + :rtype: dict + """ + kwargs["headers"] = self._merge_client_headers(kwargs.get("headers")) + error_map, access_condition = get_access_conditions( + data_source, + kwargs.pop('match_condition', MatchConditions.Unconditionally) + ) + if not name: + name = data_source.name + result = await self._client.data_sources.create_or_update( + data_source_name=name, + data_source=data_source, + access_condition=access_condition, + error_map=error_map, + **kwargs + ) + return result + + @distributed_trace_async + async def delete_datasource(self, data_source, **kwargs): + # type: (Union[str, DataSource], **Any) -> None + """Deletes a datasource. To use access conditions, the Datasource model must be + provided instead of the name. It is enough to provide the name of the datasource + to delete unconditionally + + :param data_source: The datasource to delete. + :type data_source: str or ~search.models.DataSource + :keyword match_condition: The match condition to use upon the etag + :type match_condition: ~azure.core.MatchConditions + :return: None + :rtype: None + + .. admonition:: Example: + + .. literalinclude:: ../samples/async_samples/sample_data_source_operations_async.py + :start-after: [START delete_data_source_async] + :end-before: [END delete_data_source_async] + :language: python + :dedent: 4 + :caption: Delete a DataSource + """ + kwargs["headers"] = self._merge_client_headers(kwargs.get("headers")) + error_map, access_condition = get_access_conditions( + data_source, + kwargs.pop('match_condition', MatchConditions.Unconditionally) + ) + try: + name = data_source.name + except AttributeError: + name = data_source + await self._client.data_sources.delete( + data_source_name=name, + access_condition=access_condition, + error_map=error_map, + **kwargs + ) + + @distributed_trace_async + async def get_datasource(self, name, **kwargs): + # type: (str, **Any) -> Dict[str, Any] + """Retrieves a datasource definition. + + :param name: The name of the datasource to retrieve. + :type name: str + :return: The DataSource that is fetched. + + .. literalinclude:: ../samples/async_samples/sample_data_source_operations_async.py + :start-after: [START get_data_source_async] + :end-before: [END get_data_source_async] + :language: python + :dedent: 4 + :caption: Retrieve a DataSource + """ + kwargs["headers"] = self._merge_client_headers(kwargs.get("headers")) + result = await self._client.data_sources.get(name, **kwargs) + return result + + @distributed_trace_async + async def get_datasources(self, **kwargs): + # type: (**Any) -> Sequence[DataSource] + """Lists all datasources available for a search service. + + :return: List of all the data sources. + :rtype: `list[dict]` + + .. admonition:: Example: + + .. literalinclude:: ../samples/async_samples/sample_data_source_operations_async.py + :start-after: [START list_data_source_async] + :end-before: [END list_data_source_async] + :language: python + :dedent: 4 + :caption: List all DataSources + """ + kwargs["headers"] = self._merge_client_headers(kwargs.get("headers")) + result = await self._client.data_sources.list(**kwargs) + return result.data_sources diff --git a/sdk/search/azure-search-documents/azure/search/documents/_service/aio/_indexes_client.py b/sdk/search/azure-search-documents/azure/search/documents/_service/aio/_indexes_client.py new file mode 100644 index 000000000000..c7571ef63566 --- /dev/null +++ b/sdk/search/azure-search-documents/azure/search/documents/_service/aio/_indexes_client.py @@ -0,0 +1,267 @@ +# ------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# -------------------------------------------------------------------------- +from typing import TYPE_CHECKING + +from azure.core import MatchConditions +from azure.core.tracing.decorator_async import distributed_trace_async +from azure.core.async_paging import AsyncItemPaged +from .._generated.aio import SearchServiceClient as _SearchServiceClient +from .._utils import ( + delistize_flags_for_index, + listize_flags_for_index, + get_access_conditions +) +from ..._headers_mixin import HeadersMixin +from ..._version import SDK_MONIKER + +if TYPE_CHECKING: + # pylint:disable=unused-import,ungrouped-imports + from .._generated.models import AnalyzeRequest, AnalyzeResult, Index + from typing import Any, Dict, List, Union + from azure.core.credentials import AzureKeyCredential + + +class SearchIndexesClient(HeadersMixin): + """A client to interact with Azure search service Indexes. + + This class is not normally instantiated directly, instead use + `get_skillsets_client()` from a `SearchServiceClient` + + """ + + _ODATA_ACCEPT = "application/json;odata.metadata=minimal" # type: str + + def __init__(self, endpoint, credential, **kwargs): + # type: (str, AzureKeyCredential, **Any) -> None + + self._endpoint = endpoint # type: str + self._credential = credential # type: AzureKeyCredential + self._client = _SearchServiceClient( + endpoint=endpoint, sdk_moniker=SDK_MONIKER, **kwargs + ) # type: _SearchServiceClient + + async def __aenter__(self): + # type: () -> SearchIndexesClient + await self._client.__aenter__() # pylint:disable=no-member + return self + + async def __aexit__(self, *args): + # type: (*Any) -> None + return await self._client.__aexit__(*args) # pylint:disable=no-member + + async def close(self): + # type: () -> None + """Close the :class:`~azure.search.documents.SearchIndexesClient` session. + + """ + return await self._client.close() + + @distributed_trace_async + async def list_indexes(self, **kwargs): + # type: (**Any) -> AsyncItemPaged[Index] + """List the indexes in an Azure Search service. + + :return: List of indexes + :rtype: list[~azure.search.documents.Index] + :raises: ~azure.core.exceptions.HttpResponseError + + """ + kwargs["headers"] = self._merge_client_headers(kwargs.get("headers")) + + async def get_next(_token): + return await self._client.indexes.list(**kwargs) + + async def extract_data(response): + return None, [listize_flags_for_index(x) for x in response.indexes] + + return AsyncItemPaged(get_next=get_next, extract_data=extract_data) + + @distributed_trace_async + async def get_index(self, index_name, **kwargs): + # type: (str, **Any) -> Index + """ + + :param index_name: The name of the index to retrieve. + :type index_name: str + :return: Index object + :rtype: ~azure.search.documents.Index + :raises: ~azure.core.exceptions.HttpResponseError + + .. admonition:: Example: + + .. literalinclude:: ../samples/async_samples/sample_index_crud_operations_async.py + :start-after: [START get_index_async] + :end-before: [END get_index_async] + :language: python + :dedent: 4 + :caption: Get an index. + """ + kwargs["headers"] = self._merge_client_headers(kwargs.get("headers")) + result = await self._client.indexes.get(index_name, **kwargs) + return listize_flags_for_index(result) + + @distributed_trace_async + async def get_index_statistics(self, index_name, **kwargs): + # type: (str, **Any) -> dict + """Returns statistics for the given index, including a document count + and storage usage. + + :param index_name: The name of the index to retrieve. + :type index_name: str + :return: Statistics for the given index, including a document count and storage usage. + :rtype: ~azure.search.documents.GetIndexStatisticsResult + :raises: ~azure.core.exceptions.HttpResponseError + + """ + kwargs["headers"] = self._merge_client_headers(kwargs.get("headers")) + result = await self._client.indexes.get_statistics(index_name, **kwargs) + return result.as_dict() + + @distributed_trace_async + async def delete_index(self, index, **kwargs): + # type: (Union[str, Index], **Any) -> None + """Deletes a search index and all the documents it contains. The model must be + provided instead of the name to use the access conditions + + :param index: The index to retrieve. + :type index: str or ~search.models.Index + :keyword match_condition: The match condition to use upon the etag + :type match_condition: ~azure.core.MatchConditions + :raises: ~azure.core.exceptions.HttpResponseError + + .. admonition:: Example: + + .. literalinclude:: ../samples/async_samples/sample_index_crud_operations_async.py + :start-after: [START delete_index_async] + :end-before: [END delete_index_async] + :language: python + :dedent: 4 + :caption: Delete an index. + """ + kwargs["headers"] = self._merge_client_headers(kwargs.get("headers")) + error_map, access_condition = get_access_conditions( + index, + kwargs.pop('match_condition', MatchConditions.Unconditionally) + ) + try: + index_name = index.name + except AttributeError: + index_name = index + await self._client.indexes.delete( + index_name=index_name, + access_condition=access_condition, + error_map=error_map, + **kwargs + ) + + @distributed_trace_async + async def create_index(self, index, **kwargs): + # type: (Index, **Any) -> Index + """Creates a new search index. + + :param index: The index object. + :type index: ~azure.search.documents.Index + :return: The index created + :rtype: ~azure.search.documents.Index + :raises: ~azure.core.exceptions.HttpResponseError + + .. admonition:: Example: + + .. literalinclude:: ../samples/async_samples/sample_index_crud_operations_async.py + :start-after: [START create_index_async] + :end-before: [END create_index_async] + :language: python + :dedent: 4 + :caption: Creating a new index. + """ + kwargs["headers"] = self._merge_client_headers(kwargs.get("headers")) + patched_index = delistize_flags_for_index(index) + result = await self._client.indexes.create(patched_index, **kwargs) + return result + + @distributed_trace_async + async def create_or_update_index( + self, + index_name, + index, + allow_index_downtime=None, + **kwargs + ): + # type: (str, Index, bool, MatchConditions, **Any) -> Index + """Creates a new search index or updates an index if it already exists. + + :param index_name: The name of the index. + :type index_name: str + :param index: The index object. + :type index: ~azure.search.documents.Index + :param allow_index_downtime: Allows new analyzers, tokenizers, token filters, or char filters + to be added to an index by taking the index offline for at least a few seconds. This + temporarily causes indexing and query requests to fail. Performance and write availability of + the index can be impaired for several minutes after the index is updated, or longer for very + large indexes. + :type allow_index_downtime: bool + :keyword match_condition: The match condition to use upon the etag + :type match_condition: ~azure.core.MatchConditions + :return: The index created or updated + :rtype: :class:`~azure.search.documents.Index` + :raises: :class:`~azure.core.exceptions.ResourceNotFoundError`, \ + :class:`~azure.core.exceptions.ResourceModifiedError`, \ + :class:`~azure.core.exceptions.ResourceNotModifiedError`, \ + :class:`~azure.core.exceptions.ResourceNotFoundError`, \ + :class:`~azure.core.exceptions.ResourceExistsError` + + .. admonition:: Example: + + .. literalinclude:: ../samples/async_samples/sample_index_crud_operations_async.py + :start-after: [START update_index_async] + :end-before: [END update_index_async] + :language: python + :dedent: 4 + :caption: Update an index. + """ + error_map, access_condition = get_access_conditions( + index, + kwargs.pop('match_condition', MatchConditions.Unconditionally) + ) + kwargs["headers"] = self._merge_client_headers(kwargs.get("headers")) + patched_index = delistize_flags_for_index(index) + result = await self._client.indexes.create_or_update( + index_name=index_name, + index=patched_index, + allow_index_downtime=allow_index_downtime, + access_condition=access_condition, + error_map=error_map, + **kwargs + ) + return result + + @distributed_trace_async + async def analyze_text(self, index_name, analyze_request, **kwargs): + # type: (str, AnalyzeRequest, **Any) -> AnalyzeResult + """Shows how an analyzer breaks text into tokens. + + :param index_name: The name of the index for which to test an analyzer. + :type index_name: str + :param analyze_request: The text and analyzer or analysis components to test. + :type analyze_request: ~azure.search.documents.AnalyzeRequest + :return: AnalyzeResult + :rtype: ~azure.search.documents.AnalyzeResult + :raises: ~azure.core.exceptions.HttpResponseError + + .. admonition:: Example: + + .. literalinclude:: ../samples/async_samples/sample_analyze_text_async.py + :start-after: [START simple_analyze_text_async] + :end-before: [END simple_analyze_text_async] + :language: python + :dedent: 4 + :caption: Analyze text + """ + kwargs["headers"] = self._merge_client_headers(kwargs.get("headers")) + result = await self._client.indexes.analyze( + index_name=index_name, request=analyze_request, **kwargs + ) + return result diff --git a/sdk/search/azure-search-documents/azure/search/documents/_service/aio/_search_service_client_async.py b/sdk/search/azure-search-documents/azure/search/documents/_service/aio/_search_service_client_async.py index 60831b574977..a395d74423e6 100644 --- a/sdk/search/azure-search-documents/azure/search/documents/_service/aio/_search_service_client_async.py +++ b/sdk/search/azure-search-documents/azure/search/documents/_service/aio/_search_service_client_async.py @@ -6,34 +6,22 @@ from typing import TYPE_CHECKING from azure.core.tracing.decorator_async import distributed_trace_async -from azure.core import MatchConditions -from azure.core.exceptions import ( - ResourceExistsError, - ResourceNotFoundError, - ResourceModifiedError, - ResourceNotModifiedError, -) + from .._generated.aio import SearchServiceClient as _SearchServiceClient -from .._generated.models import AccessCondition, Skillset, SynonymMap from ..._headers_mixin import HeadersMixin from ..._version import SDK_MONIKER -from .._utils import ( - delistize_flags_for_index, - listize_flags_for_index, - listize_synonyms, - prep_if_match, - prep_if_none_match, -) +from ._datasources_client import SearchDataSourcesClient +from ._indexes_client import SearchIndexesClient +from ._skillsets_client import SearchSkillsetsClient +from ._synonym_maps_client import SearchSynonymMapsClient if TYPE_CHECKING: # pylint:disable=unused-import,ungrouped-imports - from typing import Any, List, Optional, Sequence, Union + from typing import Any, Dict, List, Optional, Sequence from azure.core.credentials import AzureKeyCredential - from .._generated.models import Skill - from ... import Index, AnalyzeResult, AnalyzeRequest -class SearchServiceClient(HeadersMixin): +class SearchServiceClient(HeadersMixin): # pylint: disable=too-many-public-methods """A client to interact with an existing Azure search service. :param endpoint: The URL endpoint of an Azure search service @@ -62,6 +50,18 @@ def __init__(self, endpoint, credential, **kwargs): endpoint=endpoint, sdk_moniker=SDK_MONIKER, **kwargs ) # type: _SearchServiceClient + self._indexes_client = SearchIndexesClient(endpoint, credential, **kwargs) + + self._synonym_maps_client = SearchSynonymMapsClient( + endpoint, credential, **kwargs + ) + + self._skillsets_client = SearchSkillsetsClient(endpoint, credential, **kwargs) + + self._datasources_client = SearchDataSourcesClient( + endpoint, credential, **kwargs + ) + def __repr__(self): # type: () -> str return "".format(repr(self._endpoint))[:1024] @@ -77,13 +77,11 @@ async def __aexit__(self, *args): async def close(self): # type: () -> None - """Close the :class:`~azure.search.documents.SearchServiceClient` session. + """Close the :class:`~azure.search.documents.aio.SearchServiceClient` session. """ return await self._client.close() - ### Service Operations - @distributed_trace_async async def get_service_statistics(self, **kwargs): # type: (**Any) -> dict @@ -94,464 +92,36 @@ async def get_service_statistics(self, **kwargs): result = await self._client.get_service_statistics(**kwargs) return result.as_dict() - ### Index Operations - - @distributed_trace_async - async def get_indexes(self, **kwargs): - # type: (**Any) -> List[Index] - """List the indexes in an Azure Search service. - - :return: List of indexes - :rtype: list[~azure.search.documents.Index] - :raises: ~azure.core.exceptions.HttpResponseError - - """ - kwargs["headers"] = self._merge_client_headers(kwargs.get("headers")) - result = await self._client.indexes.list(**kwargs) - indexes = [listize_flags_for_index(x) for x in result.indexes] - return indexes - - @distributed_trace_async - async def get_index(self, index_name, **kwargs): - # type: (str, **Any) -> Index - """ - - :param index_name: The name of the index to retrieve. - :type index_name: str - :return: Index object - :rtype: ~azure.search.documents.Index - :raises: ~azure.core.exceptions.HttpResponseError - - .. admonition:: Example: - - .. literalinclude:: ../samples/async_samples/sample_index_crud_operations_async.py - :start-after: [START get_index_async] - :end-before: [END get_index_async] - :language: python - :dedent: 4 - :caption: Get an index. - """ - kwargs["headers"] = self._merge_client_headers(kwargs.get("headers")) - result = await self._client.indexes.get(index_name, **kwargs) - return listize_flags_for_index(result) - - @distributed_trace_async - async def get_index_statistics(self, index_name, **kwargs): - # type: (str, **Any) -> dict - """Returns statistics for the given index, including a document count - and storage usage. - - :param index_name: The name of the index to retrieve. - :type index_name: str - :return: Statistics for the given index, including a document count and storage usage. - :rtype: ~azure.search.documents.GetIndexStatisticsResult - :raises: ~azure.core.exceptions.HttpResponseError - - """ - kwargs["headers"] = self._merge_client_headers(kwargs.get("headers")) - result = await self._client.indexes.get_statistics(index_name, **kwargs) - return result.as_dict() - - @distributed_trace_async - async def delete_index(self, index_name, **kwargs): - # type: (str, **Any) -> None - """Deletes a search index and all the documents it contains. - - :param index_name: The name of the index to retrieve. - :type index_name: str - :raises: ~azure.core.exceptions.HttpResponseError - - .. admonition:: Example: - - .. literalinclude:: ../samples/async_samples/sample_index_crud_operations_async.py - :start-after: [START delete_index_async] - :end-before: [END delete_index_async] - :language: python - :dedent: 4 - :caption: Delete an index. - """ - kwargs["headers"] = self._merge_client_headers(kwargs.get("headers")) - await self._client.indexes.delete(index_name, **kwargs) - - @distributed_trace_async - async def create_index(self, index, **kwargs): - # type: (Index, **Any) -> Index - """Creates a new search index. - - :param index: The index object. - :type index: ~azure.search.documents.Index - :return: The index created - :rtype: ~azure.search.documents.Index - :raises: ~azure.core.exceptions.HttpResponseError - - .. admonition:: Example: - - .. literalinclude:: ../samples/async_samples/sample_index_crud_operations_async.py - :start-after: [START create_index_async] - :end-before: [END create_index_async] - :language: python - :dedent: 4 - :caption: Creating a new index. - """ - kwargs["headers"] = self._merge_client_headers(kwargs.get("headers")) - patched_index = delistize_flags_for_index(index) - result = await self._client.indexes.create(patched_index, **kwargs) - return result - - @distributed_trace_async - async def create_or_update_index( - self, - index_name, - index, - allow_index_downtime=None, - match_condition=MatchConditions.Unconditionally, - **kwargs - ): - # type: (str, Index, bool, MatchConditions, **Any) -> Index - """Creates a new search index or updates an index if it already exists. - - :param index_name: The name of the index. - :type index_name: str - :param index: The index object. - :type index: ~azure.search.documents.Index - :param allow_index_downtime: Allows new analyzers, tokenizers, token filters, or char filters - to be added to an index by taking the index offline for at least a few seconds. This - temporarily causes indexing and query requests to fail. Performance and write availability of - the index can be impaired for several minutes after the index is updated, or longer for very - large indexes. - :type allow_index_downtime: bool - :param match_condition: The match condition to use upon the etag - :type match_condition: `~azure.core.MatchConditions` - :return: The index created or updated - :rtype: :class:`~azure.search.documents.Index` - :raises: :class:`~azure.core.exceptions.ResourceNotFoundError`, \ - :class:`~azure.core.exceptions.ResourceModifiedError`, \ - :class:`~azure.core.exceptions.ResourceNotModifiedError`, \ - :class:`~azure.core.exceptions.ResourceNotFoundError`, \ - :class:`~azure.core.exceptions.ResourceExistsError` - - .. admonition:: Example: - - .. literalinclude:: ../samples/async_samples/sample_index_crud_operations_async.py - :start-after: [START update_index_async] - :end-before: [END update_index_async] - :language: python - :dedent: 4 - :caption: Update an index. - """ - error_map = {404: ResourceNotFoundError} - access_condition = None - if index.e_tag: - access_condition = AccessCondition() - access_condition.if_match = prep_if_match(index.e_tag, match_condition) - access_condition.if_none_match = prep_if_none_match( - index.e_tag, match_condition - ) - if match_condition == MatchConditions.IfNotModified: - error_map[412] = ResourceModifiedError - if match_condition == MatchConditions.IfModified: - error_map[304] = ResourceNotModifiedError - if match_condition == MatchConditions.IfPresent: - error_map[412] = ResourceNotFoundError - if match_condition == MatchConditions.IfMissing: - error_map[412] = ResourceExistsError - kwargs["headers"] = self._merge_client_headers(kwargs.get("headers")) - patched_index = delistize_flags_for_index(index) - result = await self._client.indexes.create_or_update( - index_name=index_name, - index=patched_index, - allow_index_downtime=allow_index_downtime, - access_condition=access_condition, - **kwargs - ) - return result - - @distributed_trace_async - async def analyze_text(self, index_name, analyze_request, **kwargs): - # type: (str, AnalyzeRequest, **Any) -> AnalyzeResult - """Shows how an analyzer breaks text into tokens. - - :param index_name: The name of the index for which to test an analyzer. - :type index_name: str - :param analyze_request: The text and analyzer or analysis components to test. - :type analyze_request: ~azure.search.documents.AnalyzeRequest - :return: AnalyzeResult - :rtype: ~azure.search.documents.AnalyzeResult - :raises: ~azure.core.exceptions.HttpResponseError - - .. admonition:: Example: - - .. literalinclude:: ../samples/async_samples/sample_analyze_text_async.py - :start-after: [START simple_analyze_text_async] - :end-before: [END simple_analyze_text_async] - :language: python - :dedent: 4 - :caption: Analyze text - """ - kwargs["headers"] = self._merge_client_headers(kwargs.get("headers")) - result = await self._client.indexes.analyze( - index_name=index_name, request=analyze_request, **kwargs - ) - return result - - # Synonym Maps Operations - - @distributed_trace_async - async def get_synonym_maps(self, **kwargs): - # type: (**Any) -> List[Index] - """List the Synonym Maps in an Azure Search service. - - :return: List of synonym maps - :rtype: list[dict] - :raises: ~azure.core.exceptions.HttpResponseError - - .. admonition:: Example: - - .. literalinclude:: ../samples/async_samples/sample_synonym_map_operations_async.py - :start-after: [START get_synonym_maps_async] - :end-before: [END get_synonym_maps_async] - :language: python - :dedent: 4 - :caption: List Synonym Maps - - """ - kwargs["headers"] = self._merge_client_headers(kwargs.get("headers")) - result = await self._client.synonym_maps.list(**kwargs) - return [listize_synonyms(x) for x in result.as_dict()["synonym_maps"]] - - @distributed_trace_async - async def get_synonym_map(self, name, **kwargs): - # type: (str, **Any) -> dict - """Retrieve a named Synonym Map in an Azure Search service - - :param name: The name of the Synonym Map to get - :type name: str - :return: The retrieved Synonym Map - :rtype: dict - :raises: :class:`~azure.core.exceptions.ResourceNotFoundError` - - .. admonition:: Example: - - .. literalinclude:: ../samples/async_samples/sample_synonym_map_operations_async.py - :start-after: [START get_synonym_map_async] - :end-before: [END get_synonym_map_async] - :language: python - :dedent: 4 - :caption: Get a Synonym Map + def get_indexes_client(self): + # type: () -> SearchIndexesClient + """Return a client to perform operations on Search Indexes. + :return: The Search Indexes client + :rtype: SearchIndexesClient """ - kwargs["headers"] = self._merge_client_headers(kwargs.get("headers")) - result = await self._client.synonym_maps.get(name, **kwargs) - return listize_synonyms(result.as_dict()) - - @distributed_trace_async - async def delete_synonym_map(self, name, **kwargs): - # type: (str, **Any) -> None - """Delete a named Synonym Map in an Azure Search service - - :param name: The name of the Synonym Map to delete - :type name: str - - .. admonition:: Example: - - .. literalinclude:: ../samples/async_samples/sample_synonym_map_operations_async.py - :start-after: [START delete_synonym_map_async] - :end-before: [END delete_synonym_map_async] - :language: python - :dedent: 4 - :caption: Delete a Synonym Map - - """ - kwargs["headers"] = self._merge_client_headers(kwargs.get("headers")) - await self._client.synonym_maps.delete(name, **kwargs) - - @distributed_trace_async - async def create_synonym_map(self, name, synonyms, **kwargs): - # type: (str, Sequence[str], **Any) -> dict - """Create a new Synonym Map in an Azure Search service + return self._indexes_client - :param name: The name of the Synonym Map to create - :type name: str - :param synonyms: A list of synonyms in SOLR format - :type synonyms: List[str] - :return: The created Synonym Map - :rtype: dict - - .. admonition:: Example: - - .. literalinclude:: ../samples/async_samples/sample_synonym_map_operations_async.py - :start-after: [START create_synonym_map_async] - :end-before: [END create_synonym_map_async] - :language: python - :dedent: 4 - :caption: Create a Synonym Map + def get_synonym_maps_client(self): + # type: () -> SearchSynonymMapsClient + """Return a client to perform operations on Synonym Maps. + :return: The Synonym Maps client + :rtype: SearchSynonymMapsClient """ - kwargs["headers"] = self._merge_client_headers(kwargs.get("headers")) - solr_format_synonyms = "\n".join(synonyms) - synonym_map = SynonymMap(name=name, synonyms=solr_format_synonyms) - result = await self._client.synonym_maps.create(synonym_map, **kwargs) - return listize_synonyms(result.as_dict()) - - @distributed_trace_async - async def create_or_update_synonym_map(self, name, synonyms, **kwargs): - # type: (str, Sequence[str], **Any) -> dict - """Create a new Synonym Map in an Azure Search service, or update an - existing one. + return self._synonym_maps_client - :param name: The name of the Synonym Map to create or update - :type name: str - :param synonyms: A list of synonyms in SOLR format - :type synonyms: List[str] - :return: The created or updated Synonym Map - :rtype: dict + def get_skillsets_client(self) -> SearchSkillsetsClient: + """Return a client to perform operations on Skillsets. + :return: The Skillsets client + :rtype: SearchSkillsetsClient """ - kwargs["headers"] = self._merge_client_headers(kwargs.get("headers")) - solr_format_synonyms = "\n".join(synonyms) - synonym_map = SynonymMap(name=name, synonyms=solr_format_synonyms) - result = await self._client.synonym_maps.create_or_update( - name, synonym_map, **kwargs - ) - return listize_synonyms(result.as_dict()) + return self._skillsets_client - # Skillset Operations - - @distributed_trace_async - async def get_skillsets(self, **kwargs): - # type: (**Any) -> List[Skillset] - """List the Skillsets in an Azure Search service. - - :return: List of Skillsets - :rtype: list[dict] - :raises: ~azure.core.exceptions.HttpResponseError - - .. admonition:: Example: - - .. literalinclude:: ../samples/async_samples/sample_skillset_operations_async.py - :start-after: [START get_skillsets] - :end-before: [END get_skillsets] - :language: python - :dedent: 4 - :caption: List Skillsets + def get_datasources_client(self) -> SearchDataSourcesClient: + """Return a client to perform operations on Data Sources. + :return: The Data Sources client + :rtype: SearchDataSourcesClient """ - kwargs["headers"] = self._merge_client_headers(kwargs.get("headers")) - result = await self._client.skillsets.list(**kwargs) - return result.skillsets - - @distributed_trace_async - async def get_skillset(self, name, **kwargs): - # type: (str, **Any) -> Skillset - """Retrieve a named Skillset in an Azure Search service - - :param name: The name of the Skillset to get - :type name: str - :return: The retrieved Skillset - :rtype: dict - :raises: :class:`~azure.core.exceptions.ResourceNotFoundError` - - .. admonition:: Example: - - .. literalinclude:: ../samples/async_samples/sample_skillset_operations_async.py - :start-after: [START get_skillset] - :end-before: [END get_skillset] - :language: python - :dedent: 4 - :caption: Get a Skillset - - """ - kwargs["headers"] = self._merge_client_headers(kwargs.get("headers")) - return await self._client.skillsets.get(name, **kwargs) - - @distributed_trace_async - async def delete_skillset(self, name, **kwargs): - # type: (str, **Any) -> None - """Delete a named Skillset in an Azure Search service - - :param name: The name of the Skillset to delete - :type name: str - - .. admonition:: Example: - - .. literalinclude:: ../samples/async_samples/sample_skillset_operations_async.py - :start-after: [START delete_skillset] - :end-before: [END delete_skillset] - :language: python - :dedent: 4 - :caption: Delete a Skillset - - """ - kwargs["headers"] = self._merge_client_headers(kwargs.get("headers")) - await self._client.skillsets.delete(name, **kwargs) - - @distributed_trace_async - async def create_skillset(self, name, skills, description, **kwargs): - # type: (str, Sequence[Skill], str, **Any) -> Skillset - """Create a new Skillset in an Azure Search service - - :param name: The name of the Skillset to create - :type name: str - :param skills: A list of Skill objects to include in the Skillset - :type skills: List[Skill]] - :param description: A description for the Skillset - :type description: Optional[str] - :return: The created Skillset - :rtype: dict - - .. admonition:: Example: - - .. literalinclude:: ../samples/async_samples/sample_skillset_operations_async.py - :start-after: [START create_skillset] - :end-before: [END create_skillset] - :language: python - :dedent: 4 - :caption: Create a Skillset - - """ - kwargs["headers"] = self._merge_client_headers(kwargs.get("headers")) - - skillset = Skillset(name=name, skills=list(skills), description=description) - - return await self._client.skillsets.create(skillset, **kwargs) - - @distributed_trace_async - async def create_or_update_skillset(self, name, **kwargs): - # type: (str, Sequence[Skill], str, **Any) -> Skillset - """Create a new Skillset in an Azure Search service, or update an - existing one. - - :param name: The name of the Skillset to create or update - :type name: str - :param skills: A list of Skill objects to include in the Skillset - :type skills: List[Skill] - :param description: A description for the Skillset - :type description: Optional[str] - :param skillset: A Skillset to create or update. - :type skillset: :class:`~azure.search.documents.Skillset` - :return: The created or updated Skillset - :rtype: dict - - If a `skillset` is passed in, any optional `skills`, or - `description` parameter values will override it. - - - """ - kwargs["headers"] = self._merge_client_headers(kwargs.get("headers")) - - if "skillset" in kwargs: - skillset = kwargs.pop("skillset") - skillset = Skillset.deserialize(skillset.serialize()) - skillset.name = name - for param in ("description", "skills"): - if param in kwargs: - setattr(skillset, param, kwargs.pop(param)) - else: - - skillset = Skillset( - name=name, - description=kwargs.pop("description", None), - skills=kwargs.pop("skills", None), - ) - - return await self._client.skillsets.create_or_update(name, skillset, **kwargs) + return self._datasources_client diff --git a/sdk/search/azure-search-documents/azure/search/documents/_service/aio/_skillsets_client.py b/sdk/search/azure-search-documents/azure/search/documents/_service/aio/_skillsets_client.py new file mode 100644 index 000000000000..75bfadfaef47 --- /dev/null +++ b/sdk/search/azure-search-documents/azure/search/documents/_service/aio/_skillsets_client.py @@ -0,0 +1,227 @@ +# ------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# -------------------------------------------------------------------------- +from typing import TYPE_CHECKING + +from azure.core import MatchConditions +from azure.core.exceptions import ClientAuthenticationError, ResourceNotFoundError +from azure.core.tracing.decorator_async import distributed_trace_async + +from .._generated.aio import SearchServiceClient as _SearchServiceClient +from .._generated.models import Skillset +from .._utils import get_access_conditions +from ..._headers_mixin import HeadersMixin +from ..._version import SDK_MONIKER + +if TYPE_CHECKING: + # pylint:disable=unused-import,ungrouped-imports + from .._generated.models import Skill + from typing import Any, List, Sequence, Union + from azure.core.credentials import AzureKeyCredential + + +class SearchSkillsetsClient(HeadersMixin): + """A client to interact with Azure search service Skillsets. + + This class is not normally instantiated directly, instead use + `get_skillsets_client()` from a `SearchServiceClient` + + """ + + _ODATA_ACCEPT = "application/json;odata.metadata=minimal" # type: str + + def __init__(self, endpoint, credential, **kwargs): + # type: (str, AzureKeyCredential, **Any) -> None + + self._endpoint = endpoint # type: str + self._credential = credential # type: AzureKeyCredential + self._client = _SearchServiceClient( + endpoint=endpoint, sdk_moniker=SDK_MONIKER, **kwargs + ) # type: _SearchServiceClient + + async def __aenter__(self): + # type: () -> SearchSkillsetsClient + await self._client.__aenter__() # pylint:disable=no-member + return self + + async def __aexit__(self, *args): + # type: (*Any) -> None + return await self._client.__aexit__(*args) # pylint:disable=no-member + + async def close(self): + # type: () -> None + """Close the :class:`~azure.search.documents.aio.SearchSkillsetsClient` session. + + """ + return await self._client.close() + + @distributed_trace_async + async def get_skillsets(self, **kwargs): + # type: (**Any) -> List[Skillset] + """List the Skillsets in an Azure Search service. + + :return: List of Skillsets + :rtype: list[dict] + :raises: ~azure.core.exceptions.HttpResponseError + + .. admonition:: Example: + + .. literalinclude:: ../samples/async_samples/sample_skillset_operations_async.py + :start-after: [START get_skillsets] + :end-before: [END get_skillsets] + :language: python + :dedent: 4 + :caption: List Skillsets + + """ + kwargs["headers"] = self._merge_client_headers(kwargs.get("headers")) + result = await self._client.skillsets.list(**kwargs) + return result.skillsets + + @distributed_trace_async + async def get_skillset(self, name, **kwargs): + # type: (str, **Any) -> Skillset + """Retrieve a named Skillset in an Azure Search service + + :param name: The name of the Skillset to get + :type name: str + :return: The retrieved Skillset + :rtype: dict + :raises: :class:`~azure.core.exceptions.ResourceNotFoundError` + + .. admonition:: Example: + + .. literalinclude:: ../samples/async_samples/sample_skillset_operations_async.py + :start-after: [START get_skillset] + :end-before: [END get_skillset] + :language: python + :dedent: 4 + :caption: Get a Skillset + + """ + kwargs["headers"] = self._merge_client_headers(kwargs.get("headers")) + return await self._client.skillsets.get(name, **kwargs) + + @distributed_trace_async + async def delete_skillset(self, skillset, **kwargs): + # type: (Union[str, Skillset], **Any) -> None + """Delete a named Skillset in an Azure Search service. To use access conditions, + the Skillset model must be provided instead of the name. It is enough to provide + the name of the skillset to delete unconditionally + + :param name: The Skillset to delete + :type name: str or ~search.models.Skillset + :keyword match_condition: The match condition to use upon the etag + :type match_condition: ~azure.core.MatchConditions + + .. admonition:: Example: + + .. literalinclude:: ../samples/async_samples/sample_skillset_operations_async.py + :start-after: [START delete_skillset] + :end-before: [END delete_skillset] + :language: python + :dedent: 4 + :caption: Delete a Skillset + + """ + kwargs["headers"] = self._merge_client_headers(kwargs.get("headers")) + error_map, access_condition = get_access_conditions( + skillset, + kwargs.pop('match_condition', MatchConditions.Unconditionally) + ) + try: + name = skillset.name + except AttributeError: + name = skillset + await self._client.skillsets.delete(name, access_condition=access_condition, error_map=error_map, **kwargs) + + @distributed_trace_async + async def create_skillset(self, name, skills, description, **kwargs): + # type: (str, Sequence[Skill], str, **Any) -> Skillset + """Create a new Skillset in an Azure Search service + + :param name: The name of the Skillset to create + :type name: str + :param skills: A list of Skill objects to include in the Skillset + :type skills: List[Skill]] + :param description: A description for the Skillset + :type description: Optional[str] + :return: The created Skillset + :rtype: dict + + .. admonition:: Example: + + .. literalinclude:: ../samples/async_samples/sample_skillset_operations_async.py + :start-after: [START create_skillset] + :end-before: [END create_skillset] + :language: python + :dedent: 4 + :caption: Create a Skillset + + """ + kwargs["headers"] = self._merge_client_headers(kwargs.get("headers")) + + skillset = Skillset(name=name, skills=list(skills), description=description) + + return await self._client.skillsets.create(skillset, **kwargs) + + @distributed_trace_async + async def create_or_update_skillset(self, name, **kwargs): + # type: (str, **Any) -> Skillset + """Create a new Skillset in an Azure Search service, or update an + existing one. The skillset param must be provided to perform the + operation with access conditions. + + :param name: The name of the Skillset to create or update + :type name: str + :keyword skills: A list of Skill objects to include in the Skillset + :type skills: List[Skill] + :keyword description: A description for the Skillset + :type description: Optional[str] + :keyword skillset: A Skillset to create or update. + :type skillset: :class:`~azure.search.documents.Skillset` + :keyword match_condition: The match condition to use upon the etag + :type match_condition: ~azure.core.MatchConditions + :return: The created or updated Skillset + :rtype: dict + + If a `skillset` is passed in, any optional `skills`, or + `description` parameter values will override it. + + + """ + kwargs["headers"] = self._merge_client_headers(kwargs.get("headers")) + error_map = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError + } + access_condition = None + + if "skillset" in kwargs: + skillset = kwargs.pop("skillset") + error_map, access_condition = get_access_conditions( + skillset, + kwargs.pop('match_condition', MatchConditions.Unconditionally) + ) + skillset = Skillset.deserialize(skillset.serialize()) + skillset.name = name + for param in ("description", "skills"): + if param in kwargs: + setattr(skillset, param, kwargs.pop(param)) + else: + + skillset = Skillset( + name=name, + description=kwargs.pop("description", None), + skills=kwargs.pop("skills", None), + ) + + return await self._client.skillsets.create_or_update( + skillset_name=name, + skillset=skillset, + access_condition=access_condition, + error_map=error_map, + **kwargs + ) diff --git a/sdk/search/azure-search-documents/azure/search/documents/_service/aio/_synonym_maps_client.py b/sdk/search/azure-search-documents/azure/search/documents/_service/aio/_synonym_maps_client.py new file mode 100644 index 000000000000..7818d6834cd0 --- /dev/null +++ b/sdk/search/azure-search-documents/azure/search/documents/_service/aio/_synonym_maps_client.py @@ -0,0 +1,212 @@ +# ------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# -------------------------------------------------------------------------- +from typing import TYPE_CHECKING + +from azure.core import MatchConditions +from azure.core.tracing.decorator_async import distributed_trace_async + +from .._generated.aio import SearchServiceClient as _SearchServiceClient +from .._generated.models import SynonymMap +from .._utils import listize_synonyms, get_access_conditions +from ..._headers_mixin import HeadersMixin +from ..._version import SDK_MONIKER + +if TYPE_CHECKING: + # pylint:disable=unused-import,ungrouped-imports + from .._generated.models import Skill + from typing import Any, Dict, List, Sequence, Union, Optional + from azure.core.credentials import AzureKeyCredential + + +class SearchSynonymMapsClient(HeadersMixin): + """A client to interact with Azure search service Synonym Maps. + + This class is not normally instantiated directly, instead use + `get_synonym_maps_client()` from a `SearchServiceClient` + + """ + + _ODATA_ACCEPT = "application/json;odata.metadata=minimal" # type: str + + def __init__(self, endpoint, credential, **kwargs): + # type: (str, AzureKeyCredential, **Any) -> None + + self._endpoint = endpoint # type: str + self._credential = credential # type: AzureKeyCredential + self._client = _SearchServiceClient( + endpoint=endpoint, sdk_moniker=SDK_MONIKER, **kwargs + ) # type: _SearchServiceClient + + async def __aenter__(self): + # type: () -> SearchSynonymMapsClient + await self._client.__aenter__() # pylint:disable=no-member + return self + + async def __aexit__(self, *args): + # type: (*Any) -> None + return await self._client.__aexit__(*args) # pylint:disable=no-member + + async def close(self): + # type: () -> None + """Close the :class:`~azure.search.documents.aio.SearchSynonymMapsClient` session. + + """ + return await self._client.close() + + @distributed_trace_async + async def get_synonym_maps(self, **kwargs): + # type: (**Any) -> List[Dict[Any, Any]] + """List the Synonym Maps in an Azure Search service. + + :return: List of synonym maps + :rtype: list[dict] + :raises: ~azure.core.exceptions.HttpResponseError + + .. admonition:: Example: + + .. literalinclude:: ../samples/async_samples/sample_synonym_map_operations_async.py + :start-after: [START get_synonym_maps_async] + :end-before: [END get_synonym_maps_async] + :language: python + :dedent: 4 + :caption: List Synonym Maps + + """ + kwargs["headers"] = self._merge_client_headers(kwargs.get("headers")) + result = await self._client.synonym_maps.list(**kwargs) + return [listize_synonyms(x) for x in result.as_dict()["synonym_maps"]] + + @distributed_trace_async + async def get_synonym_map(self, name, **kwargs): + # type: (str, **Any) -> dict + """Retrieve a named Synonym Map in an Azure Search service + + :param name: The name of the Synonym Map to get + :type name: str + :return: The retrieved Synonym Map + :rtype: dict + :raises: :class:`~azure.core.exceptions.ResourceNotFoundError` + + .. admonition:: Example: + + .. literalinclude:: ../samples/async_samples/sample_synonym_map_operations_async.py + :start-after: [START get_synonym_map_async] + :end-before: [END get_synonym_map_async] + :language: python + :dedent: 4 + :caption: Get a Synonym Map + + """ + kwargs["headers"] = self._merge_client_headers(kwargs.get("headers")) + result = await self._client.synonym_maps.get(name, **kwargs) + return listize_synonyms(result.as_dict()) + + @distributed_trace_async + async def delete_synonym_map(self, synonym_map, **kwargs): + # type: (Union[str, SynonymMap], **Any) -> None + """Delete a named Synonym Map in an Azure Search service. To use access conditions, + the SynonymMap model must be provided instead of the name. It is enough to provide + the name of the synonym map to delete unconditionally. + + :param name: The Synonym Map to delete + :type name: str or ~search.models.SynonymMap + :keyword match_condition: The match condition to use upon the etag + :type match_condition: ~azure.core.MatchConditions + :return: None + :rtype: None + + + .. admonition:: Example: + + .. literalinclude:: ../samples/async_samples/sample_synonym_map_operations_async.py + :start-after: [START delete_synonym_map_async] + :end-before: [END delete_synonym_map_async] + :language: python + :dedent: 4 + :caption: Delete a Synonym Map + + """ + kwargs["headers"] = self._merge_client_headers(kwargs.get("headers")) + error_map, access_condition = get_access_conditions( + synonym_map, + kwargs.pop('match_condition', MatchConditions.Unconditionally) + ) + try: + name = synonym_map.name + except AttributeError: + name = synonym_map + await self._client.synonym_maps.delete( + synonym_map_name=name, + access_condition=access_condition, + error_map=error_map, + **kwargs + ) + + @distributed_trace_async + async def create_synonym_map(self, name, synonyms, **kwargs): + # type: (str, Sequence[str], **Any) -> dict + """Create a new Synonym Map in an Azure Search service + + :param name: The name of the Synonym Map to create + :type name: str + :param synonyms: A list of synonyms in SOLR format + :type synonyms: List[str] + :return: The created Synonym Map + :rtype: dict + + .. admonition:: Example: + + .. literalinclude:: ../samples/async_samples/sample_synonym_map_operations_async.py + :start-after: [START create_synonym_map_async] + :end-before: [END create_synonym_map_async] + :language: python + :dedent: 4 + :caption: Create a Synonym Map + + """ + kwargs["headers"] = self._merge_client_headers(kwargs.get("headers")) + solr_format_synonyms = "\n".join(synonyms) + synonym_map = SynonymMap(name=name, synonyms=solr_format_synonyms) + result = await self._client.synonym_maps.create(synonym_map, **kwargs) + return listize_synonyms(result.as_dict()) + + @distributed_trace_async + async def create_or_update_synonym_map(self, synonym_map, synonyms=None, **kwargs): + # type: (Union[str, SynonymMap], Optional[Sequence[str]], **Any) -> dict + """Create a new Synonym Map in an Azure Search service, or update an + existing one. + + :param synonym_map: The name of the Synonym Map to create or update + :type synonym_map: str or ~azure.search.documents.SynonymMap + :param synonyms: A list of synonyms in SOLR format + :type synonyms: List[str] + :keyword match_condition: The match condition to use upon the etag + :type match_condition: ~azure.core.MatchConditions + :return: The created or updated Synonym Map + :rtype: dict + + """ + kwargs["headers"] = self._merge_client_headers(kwargs.get("headers")) + error_map, access_condition = get_access_conditions( + synonym_map, + kwargs.pop('match_condition', MatchConditions.Unconditionally) + ) + try: + name = synonym_map.name + if synonyms: + synonym_map.synonyms = "\n".join(synonyms) + except AttributeError: + name = synonym_map + solr_format_synonyms = "\n".join(synonyms) + synonym_map = SynonymMap(name=name, synonyms=solr_format_synonyms) + result = await self._client.synonym_maps.create_or_update( + synonym_map_name=name, + synonym_map=synonym_map, + access_condition=access_condition, + error_map=error_map, + **kwargs + ) + return listize_synonyms(result.as_dict()) diff --git a/sdk/search/azure-search-documents/azure/search/documents/_service/edm.py b/sdk/search/azure-search-documents/azure/search/documents/_service/edm.py new file mode 100644 index 000000000000..6d08395f937a --- /dev/null +++ b/sdk/search/azure-search-documents/azure/search/documents/_service/edm.py @@ -0,0 +1,19 @@ +# ------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# -------------------------------------------------------------------------- + +String = "Edm.String" +Int32 = "Edm.Int32" +Int64 = "Edm.Int64" +Double = "Edm.Double" +Boolean = "Edm.Boolean" +DateTimeOffset = "Edm.DateTimeOffset" +GeographyPoint = "Edm.GeographyPoint" +ComplexType = "Edm.ComplexType" + + +def Collection(typ): + # type (str) -> str + return "Collection({})".format(typ) diff --git a/sdk/search/azure-search-documents/azure/search/documents/aio.py b/sdk/search/azure-search-documents/azure/search/documents/aio.py index 395e4eceb156..626fecfd63b9 100644 --- a/sdk/search/azure-search-documents/azure/search/documents/aio.py +++ b/sdk/search/azure-search-documents/azure/search/documents/aio.py @@ -24,7 +24,7 @@ # # -------------------------------------------------------------------------- -from ._index.aio import AsyncSearchItemPaged, SearchIndexClient +from ._index.aio import AsyncSearchItemPaged, SearchClient from ._service.aio import SearchServiceClient -__all__ = ("AsyncSearchItemPaged", "SearchIndexClient", "SearchServiceClient") +__all__ = ("AsyncSearchItemPaged", "SearchClient", "SearchServiceClient") diff --git a/sdk/search/azure-search-documents/samples/async_samples/sample_authentication_async.py b/sdk/search/azure-search-documents/samples/async_samples/sample_authentication_async.py index ecbafb5b1e4d..66ee638437fb 100644 --- a/sdk/search/azure-search-documents/samples/async_samples/sample_authentication_async.py +++ b/sdk/search/azure-search-documents/samples/async_samples/sample_authentication_async.py @@ -26,12 +26,12 @@ async def authentication_with_api_key_credential_async(): # [START create_search_client_with_key_async] from azure.core.credentials import AzureKeyCredential - from azure.search.documents.aio import SearchIndexClient + from azure.search.documents.aio import SearchClient service_endpoint = os.getenv("AZURE_SEARCH_SERVICE_ENDPOINT") index_name = os.getenv("AZURE_SEARCH_INDEX_NAME") key = os.getenv("AZURE_SEARCH_API_KEY") - search_client = SearchIndexClient(service_endpoint, index_name, AzureKeyCredential(key)) + search_client = SearchClient(service_endpoint, index_name, AzureKeyCredential(key)) # [END create_search_client_with_key_async] async with search_client: diff --git a/sdk/search/azure-search-documents/samples/async_samples/sample_autocomplete_async.py b/sdk/search/azure-search-documents/samples/async_samples/sample_autocomplete_async.py index 05b3b0a52622..6c7f6779efee 100644 --- a/sdk/search/azure-search-documents/samples/async_samples/sample_autocomplete_async.py +++ b/sdk/search/azure-search-documents/samples/async_samples/sample_autocomplete_async.py @@ -31,10 +31,10 @@ async def autocomplete_query(): # [START autocomplete_query_async] from azure.core.credentials import AzureKeyCredential - from azure.search.documents.aio import SearchIndexClient + from azure.search.documents.aio import SearchClient from azure.search.documents import AutocompleteQuery - search_client = SearchIndexClient(service_endpoint, index_name, AzureKeyCredential(key)) + search_client = SearchClient(service_endpoint, index_name, AzureKeyCredential(key)) query = AutocompleteQuery(search_text="bo", suggester_name="sg") diff --git a/sdk/search/azure-search-documents/samples/async_samples/sample_crud_operations_async.py b/sdk/search/azure-search-documents/samples/async_samples/sample_crud_operations_async.py index 475ee05e3432..4ef0e1549c64 100644 --- a/sdk/search/azure-search-documents/samples/async_samples/sample_crud_operations_async.py +++ b/sdk/search/azure-search-documents/samples/async_samples/sample_crud_operations_async.py @@ -28,10 +28,10 @@ key = os.getenv("AZURE_SEARCH_API_KEY") from azure.core.credentials import AzureKeyCredential -from azure.search.documents.aio import SearchIndexClient +from azure.search.documents.aio import SearchClient from azure.search.documents import SearchQuery -search_client = SearchIndexClient(service_endpoint, index_name, AzureKeyCredential(key)) +search_client = SearchClient(service_endpoint, index_name, AzureKeyCredential(key)) async def upload_document(): # [START upload_document_async] diff --git a/sdk/search/azure-search-documents/samples/async_samples/sample_data_source_operations_async.py b/sdk/search/azure-search-documents/samples/async_samples/sample_data_source_operations_async.py new file mode 100644 index 000000000000..dd02c845996b --- /dev/null +++ b/sdk/search/azure-search-documents/samples/async_samples/sample_data_source_operations_async.py @@ -0,0 +1,77 @@ +# coding: utf-8 + +# ------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# -------------------------------------------------------------------------- + +""" +FILE: sample_data_source_operations_async.py +DESCRIPTION: + This sample demonstrates how to get, create, update, or delete a Data Source. +USAGE: + python sample_data_source_operations_async.py + + Set the environment variables with your own values before running the sample: + 1) AZURE_SEARCH_SERVICE_ENDPOINT - the endpoint of your Azure Cognitive Search service + 2) AZURE_SEARCH_API_KEY - your search API key +""" + +import asyncio +import os + +service_endpoint = os.getenv("AZURE_SEARCH_SERVICE_ENDPOINT") +key = os.getenv("AZURE_SEARCH_API_KEY") +connection_string = os.getenv("AZURE_STORAGE_CONNECTION_STRING") + +from azure.core.credentials import AzureKeyCredential +from azure.search.documents import DataSource, DataContainer, DataSourceCredentials +from azure.search.documents.aio import SearchServiceClient + +service_client = SearchServiceClient(service_endpoint, AzureKeyCredential(key)) + +async def create_data_source(): + # [START create_data_source_async] + credentials = DataSourceCredentials(connection_string=connection_string) + container = DataContainer(name='searchcontainer') + data_source = DataSource(name="async-sample-datasource", type="azureblob", credentials=credentials, container=container) + async with service_client: + result = await service_client.create_datasource(data_source) + print("Create new Data Source - async-sample-datasource") + # [END create_data_source_async] + +async def list_data_sources(): + # [START list_data_source_async] + async with service_client: + result = await service_client.get_datasources() + names = [x.name for x in result] + print("Found {} Data Sources in the service: {}".format(len(result), ", ".join(names))) + # [END list_data_source_async] + +async def get_data_source(): + # [START get_data_source_async] + async with service_client: + result = await service_client.get_datasource("async-sample-datasource") + print("Retrived Data Source 'async-sample-datasource'") + return result + # [END get_data_source_async] + +async def delete_data_source(): + # [START delete_data_source_async] + async with service_client: + service_client.delete_datasource("async-sample-datasource") + print("Data Source 'async-sample-datasource' successfully deleted") + # [END delete_data_source_async] + +async def main(): + await create_data_source() + await list_data_sources() + await get_data_source() + await delete_data_source() + await service_client.close() + +if __name__ == '__main__': + loop = asyncio.get_event_loop() + loop.run_until_complete(main()) + loop.close() diff --git a/sdk/search/azure-search-documents/samples/async_samples/sample_facet_query_async.py b/sdk/search/azure-search-documents/samples/async_samples/sample_facet_query_async.py index 8c85ed4d2ad7..c24c4b3f5f8b 100644 --- a/sdk/search/azure-search-documents/samples/async_samples/sample_facet_query_async.py +++ b/sdk/search/azure-search-documents/samples/async_samples/sample_facet_query_async.py @@ -31,10 +31,10 @@ async def filter_query(): # [START facet_query_async] from azure.core.credentials import AzureKeyCredential - from azure.search.documents.aio import SearchIndexClient + from azure.search.documents.aio import SearchClient from azure.search.documents import SearchQuery - search_client = SearchIndexClient(service_endpoint, index_name, AzureKeyCredential(key)) + search_client = SearchClient(service_endpoint, index_name, AzureKeyCredential(key)) query = SearchQuery(search_text="WiFi", facets=["Category"], top=0) diff --git a/sdk/search/azure-search-documents/samples/async_samples/sample_filter_query_async.py b/sdk/search/azure-search-documents/samples/async_samples/sample_filter_query_async.py index 9f61119013ec..09056cbe54c7 100644 --- a/sdk/search/azure-search-documents/samples/async_samples/sample_filter_query_async.py +++ b/sdk/search/azure-search-documents/samples/async_samples/sample_filter_query_async.py @@ -31,10 +31,10 @@ async def filter_query(): # [START filter_query_async] from azure.core.credentials import AzureKeyCredential - from azure.search.documents.aio import SearchIndexClient + from azure.search.documents.aio import SearchClient from azure.search.documents import SearchQuery - search_client = SearchIndexClient(service_endpoint, index_name, AzureKeyCredential(key)) + search_client = SearchClient(service_endpoint, index_name, AzureKeyCredential(key)) query = SearchQuery(search_text="WiFi") query.filter("Address/StateProvince eq 'FL' and Address/Country eq 'USA'") diff --git a/sdk/search/azure-search-documents/samples/async_samples/sample_get_document_async.py b/sdk/search/azure-search-documents/samples/async_samples/sample_get_document_async.py index 273233e6d519..a859f3d38e08 100644 --- a/sdk/search/azure-search-documents/samples/async_samples/sample_get_document_async.py +++ b/sdk/search/azure-search-documents/samples/async_samples/sample_get_document_async.py @@ -31,9 +31,9 @@ async def autocomplete_query(): # [START get_document_async] from azure.core.credentials import AzureKeyCredential - from azure.search.documents.aio import SearchIndexClient + from azure.search.documents.aio import SearchClient - search_client = SearchIndexClient(service_endpoint, index_name, AzureKeyCredential(key)) + search_client = SearchClient(service_endpoint, index_name, AzureKeyCredential(key)) async with search_client: result = await search_client.get_document(key="23") diff --git a/sdk/search/azure-search-documents/samples/async_samples/sample_index_crud_operations_async.py b/sdk/search/azure-search-documents/samples/async_samples/sample_index_crud_operations_async.py index 16b2f7b6f7b5..396b9cb0bf1a 100644 --- a/sdk/search/azure-search-documents/samples/async_samples/sample_index_crud_operations_async.py +++ b/sdk/search/azure-search-documents/samples/async_samples/sample_index_crud_operations_async.py @@ -27,24 +27,18 @@ from azure.core.credentials import AzureKeyCredential from azure.search.documents.aio import SearchServiceClient -from azure.search.documents import CorsOptions, Index, ScoringProfile +from azure.search.documents import CorsOptions, Index, ScoringProfile, edm, SimpleField, SearchableField -service_client = SearchServiceClient(service_endpoint, AzureKeyCredential(key)) +client = SearchServiceClient(service_endpoint, AzureKeyCredential(key)).get_indexes_client() async def create_index(): # [START create_index_async] name = "hotels" fields = [ - { - "name": "hotelId", - "type": "Edm.String", - "key": True, - "searchable": False - }, - { - "name": "baseRate", - "type": "Edm.Double" - }] + SimpleField(name="hotelId", type=edm.String, key=True), + SimpleField(name="baseRate", type=edm.Double) + ] + cors_options = CorsOptions(allowed_origins=["*"], max_age_in_seconds=60) scoring_profiles = [] index = Index( @@ -53,29 +47,24 @@ async def create_index(): scoring_profiles=scoring_profiles, cors_options=cors_options) - result = await service_client.create_index(index) + result = await client.create_index(index) # [END create_index_async] async def get_index(): # [START get_index_async] name = "hotels" - result = await service_client.get_index(name) + result = await client.get_index(name) # [END get_index_async] async def update_index(): # [START update_index_async] name = "hotels" - fields = [ - { - "name": "hotelId", - "type": "Edm.String", - "key": True, - "searchable": False - }, - { - "name": "baseRate", - "type": "Edm.Double" - }] + fields = fields = [ + SimpleField(name="hotelId", type=edm.String, key=True), + SimpleField(name="baseRate", type=edm.Double), + SearchableField(name="hotelName", type=edm.String) + ] + cors_options = CorsOptions(allowed_origins=["*"], max_age_in_seconds=60) scoring_profile = ScoringProfile( name="MyProfile" @@ -88,13 +77,13 @@ async def update_index(): scoring_profiles=scoring_profiles, cors_options=cors_options) - result = await service_client.create_or_update_index(index_name=index.name, index=index) + result = await client.create_or_update_index(index_name=index.name, index=index) # [END update_index_async] async def delete_index(): # [START delete_index_async] name = "hotels" - await service_client.delete_index(name) + await client.delete_index(name) # [END delete_index_async] async def main(): @@ -102,7 +91,7 @@ async def main(): await get_index() await update_index() await delete_index() - await service_client.close() + await client.close() if __name__ == '__main__': loop = asyncio.get_event_loop() diff --git a/sdk/search/azure-search-documents/samples/async_samples/sample_simple_query_async.py b/sdk/search/azure-search-documents/samples/async_samples/sample_simple_query_async.py index 5fec53f4c1ad..28810821a5f7 100644 --- a/sdk/search/azure-search-documents/samples/async_samples/sample_simple_query_async.py +++ b/sdk/search/azure-search-documents/samples/async_samples/sample_simple_query_async.py @@ -31,9 +31,9 @@ async def simple_text_query(): # [START simple_query_async] from azure.core.credentials import AzureKeyCredential - from azure.search.documents.aio import SearchIndexClient + from azure.search.documents.aio import SearchClient - search_client = SearchIndexClient(service_endpoint, index_name, AzureKeyCredential(key)) + search_client = SearchClient(service_endpoint, index_name, AzureKeyCredential(key)) async with search_client: results = await search_client.search(query="spa") diff --git a/sdk/search/azure-search-documents/samples/async_samples/sample_suggestions_async.py b/sdk/search/azure-search-documents/samples/async_samples/sample_suggestions_async.py index c41e26435d00..83019cff6022 100644 --- a/sdk/search/azure-search-documents/samples/async_samples/sample_suggestions_async.py +++ b/sdk/search/azure-search-documents/samples/async_samples/sample_suggestions_async.py @@ -31,10 +31,10 @@ async def suggest_query(): # [START suggest_query_async] from azure.core.credentials import AzureKeyCredential - from azure.search.documents.aio import SearchIndexClient + from azure.search.documents.aio import SearchClient from azure.search.documents import SuggestQuery - search_client = SearchIndexClient(service_endpoint, index_name, AzureKeyCredential(key)) + search_client = SearchClient(service_endpoint, index_name, AzureKeyCredential(key)) query = SuggestQuery(search_text="coffee", suggester_name="sg") diff --git a/sdk/search/azure-search-documents/samples/async_samples/sample_synonym_map_operations_async.py b/sdk/search/azure-search-documents/samples/async_samples/sample_synonym_map_operations_async.py index 43f63af9b751..74e4e2c9e6dc 100644 --- a/sdk/search/azure-search-documents/samples/async_samples/sample_synonym_map_operations_async.py +++ b/sdk/search/azure-search-documents/samples/async_samples/sample_synonym_map_operations_async.py @@ -27,11 +27,11 @@ from azure.core.credentials import AzureKeyCredential from azure.search.documents.aio import SearchServiceClient -service_client = SearchServiceClient(service_endpoint, AzureKeyCredential(key)) +client = SearchServiceClient(service_endpoint, AzureKeyCredential(key)).get_synonym_maps_client() async def create_synonym_map(): # [START create_synonym_map_async] - result = await service_client.create_synonym_map("test-syn-map", [ + result = await client.create_synonym_map("test-syn-map", [ "USA, United States, United States of America", "Washington, Wash. => WA", ]) @@ -40,14 +40,14 @@ async def create_synonym_map(): async def get_synonym_maps(): # [START get_synonym_maps_async] - result = await service_client.get_synonym_maps() + result = await client.get_synonym_maps() names = [x["name"] for x in result] print("Found {} Synonym Maps in the service: {}".format(len(result), ", ".join(names))) # [END get_synonym_maps_async] async def get_synonym_map(): # [START get_synonym_map_async] - result = await service_client.get_synonym_map("test-syn-map") + result = await client.get_synonym_map("test-syn-map") print("Retrived Synonym Map 'test-syn-map' with synonyms") for syn in result["synonyms"]: print(" {}".format(syn)) @@ -55,7 +55,7 @@ async def get_synonym_map(): async def delete_synonym_map(): # [START delete_synonym_map_async] - await service_client.delete_synonym_map("test-syn-map") + await client.delete_synonym_map("test-syn-map") print("Synonym Map 'test-syn-map' deleted") # [END delete_synonym_map_async] @@ -64,7 +64,7 @@ async def main(): await get_synonym_maps() await get_synonym_map() await delete_synonym_map() - await service_client.close() + await client.close() if __name__ == '__main__': loop = asyncio.get_event_loop() diff --git a/sdk/search/azure-search-documents/samples/sample_authentication.py b/sdk/search/azure-search-documents/samples/sample_authentication.py index 571c160ab5e4..5a40c7e258f4 100644 --- a/sdk/search/azure-search-documents/samples/sample_authentication.py +++ b/sdk/search/azure-search-documents/samples/sample_authentication.py @@ -26,13 +26,13 @@ def authentication_with_api_key_credential(): # [START create_search_client_with_key] from azure.core.credentials import AzureKeyCredential - from azure.search.documents import SearchIndexClient + from azure.search.documents import SearchClient service_endpoint = os.getenv("AZURE_SEARCH_SERVICE_ENDPOINT") index_name = os.getenv("AZURE_SEARCH_INDEX_NAME") key = os.getenv("AZURE_SEARCH_API_KEY") - search_client = SearchIndexClient(service_endpoint, index_name, AzureKeyCredential(key)) + search_client = SearchClient(service_endpoint, index_name, AzureKeyCredential(key)) # [END create_search_client_with_key] result = search_client.get_document_count() diff --git a/sdk/search/azure-search-documents/samples/sample_autocomplete.py b/sdk/search/azure-search-documents/samples/sample_autocomplete.py index 4c007accd909..1d6ab4d1b69a 100644 --- a/sdk/search/azure-search-documents/samples/sample_autocomplete.py +++ b/sdk/search/azure-search-documents/samples/sample_autocomplete.py @@ -29,9 +29,9 @@ def autocomplete_query(): # [START autocomplete_query] from azure.core.credentials import AzureKeyCredential - from azure.search.documents import AutocompleteQuery, SearchIndexClient + from azure.search.documents import AutocompleteQuery, SearchClient - search_client = SearchIndexClient(service_endpoint, index_name, AzureKeyCredential(key)) + search_client = SearchClient(service_endpoint, index_name, AzureKeyCredential(key)) query = AutocompleteQuery(search_text="bo", suggester_name="sg") diff --git a/sdk/search/azure-search-documents/samples/sample_crud_operations.py b/sdk/search/azure-search-documents/samples/sample_crud_operations.py index 2d3e183594b0..fd96f2c69f66 100644 --- a/sdk/search/azure-search-documents/samples/sample_crud_operations.py +++ b/sdk/search/azure-search-documents/samples/sample_crud_operations.py @@ -27,9 +27,9 @@ key = os.getenv("AZURE_SEARCH_API_KEY") from azure.core.credentials import AzureKeyCredential -from azure.search.documents import SearchIndexClient +from azure.search.documents import SearchClient -search_client = SearchIndexClient(service_endpoint, index_name, AzureKeyCredential(key)) +search_client = SearchClient(service_endpoint, index_name, AzureKeyCredential(key)) def upload_document(): # [START upload_document] diff --git a/sdk/search/azure-search-documents/samples/sample_data_source_operations.py b/sdk/search/azure-search-documents/samples/sample_data_source_operations.py new file mode 100644 index 000000000000..38aac89cdc11 --- /dev/null +++ b/sdk/search/azure-search-documents/samples/sample_data_source_operations.py @@ -0,0 +1,65 @@ +# coding: utf-8 + +# ------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# -------------------------------------------------------------------------- + +""" +FILE: sample_data_source_operations.py +DESCRIPTION: + This sample demonstrates how to get, create, update, or delete a Data Source. +USAGE: + python sample_data_source_operations.py + + Set the environment variables with your own values before running the sample: + 1) AZURE_SEARCH_SERVICE_ENDPOINT - the endpoint of your Azure Cognitive Search service + 2) AZURE_SEARCH_API_KEY - your search API key +""" + +import os + +service_endpoint = os.getenv("AZURE_SEARCH_SERVICE_ENDPOINT") +key = os.getenv("AZURE_SEARCH_API_KEY") +connection_string = os.getenv("AZURE_STORAGE_CONNECTION_STRING") + +from azure.core.credentials import AzureKeyCredential +from azure.search.documents import SearchServiceClient, DataSource, DataContainer, DataSourceCredentials + +service_client = SearchServiceClient(service_endpoint, AzureKeyCredential(key)) + +def create_data_source(): + # [START create_data_source] + credentials = DataSourceCredentials(connection_string=connection_string) + container = DataContainer(name='searchcontainer') + data_source = DataSource(name="sample-datasource", type="azureblob", credentials=credentials, container=container) + result = service_client.create_datasource(data_source) + print(result) + print("Create new Data Source - sample-datasource") + # [END create_data_source] + +def list_data_sources(): + # [START list_data_source] + result = service_client.get_datasources() + names = [ds.name for ds in result] + print("Found {} Data Sources in the service: {}".format(len(result), ", ".join(names))) + # [END list_data_source] + +def get_data_source(): + # [START get_data_source] + result = service_client.get_datasource("sample-datasource") + print("Retrived Data Source 'sample-datasource'") + # [END get_data_source] + +def delete_data_source(): + # [START delete_data_source] + service_client.delete_datasource("sample-datasource") + print("Data Source 'sample-datasource' successfully deleted") + # [END delete_data_source] + +if __name__ == '__main__': + create_data_source() + list_data_sources() + get_data_source() + delete_data_source() diff --git a/sdk/search/azure-search-documents/samples/sample_facet_query.py b/sdk/search/azure-search-documents/samples/sample_facet_query.py index 7e895114a043..bf4a3fb3acc0 100644 --- a/sdk/search/azure-search-documents/samples/sample_facet_query.py +++ b/sdk/search/azure-search-documents/samples/sample_facet_query.py @@ -29,9 +29,9 @@ def filter_query(): # [START facet_query] from azure.core.credentials import AzureKeyCredential - from azure.search.documents import SearchIndexClient, SearchQuery + from azure.search.documents import SearchClient, SearchQuery - search_client = SearchIndexClient(service_endpoint, index_name, AzureKeyCredential(key)) + search_client = SearchClient(service_endpoint, index_name, AzureKeyCredential(key)) query = SearchQuery(search_text="WiFi", facets=["Category"], top=0) diff --git a/sdk/search/azure-search-documents/samples/sample_filter_query.py b/sdk/search/azure-search-documents/samples/sample_filter_query.py index b276254d72d2..7ffd281ee059 100644 --- a/sdk/search/azure-search-documents/samples/sample_filter_query.py +++ b/sdk/search/azure-search-documents/samples/sample_filter_query.py @@ -29,9 +29,9 @@ def filter_query(): # [START filter_query] from azure.core.credentials import AzureKeyCredential - from azure.search.documents import SearchIndexClient, SearchQuery + from azure.search.documents import SearchClient, SearchQuery - search_client = SearchIndexClient(service_endpoint, index_name, AzureKeyCredential(key)) + search_client = SearchClient(service_endpoint, index_name, AzureKeyCredential(key)) query = SearchQuery(search_text="WiFi") query.filter("Address/StateProvince eq 'FL' and Address/Country eq 'USA'") diff --git a/sdk/search/azure-search-documents/samples/sample_get_document.py b/sdk/search/azure-search-documents/samples/sample_get_document.py index 3dea251b7a81..8f9d56721268 100644 --- a/sdk/search/azure-search-documents/samples/sample_get_document.py +++ b/sdk/search/azure-search-documents/samples/sample_get_document.py @@ -29,9 +29,9 @@ def get_document(): # [START get_document] from azure.core.credentials import AzureKeyCredential - from azure.search.documents import SearchIndexClient + from azure.search.documents import SearchClient - search_client = SearchIndexClient(service_endpoint, index_name, AzureKeyCredential(key)) + search_client = SearchClient(service_endpoint, index_name, AzureKeyCredential(key)) result = search_client.get_document(key="23") diff --git a/sdk/search/azure-search-documents/samples/sample_index_crud_operations.py b/sdk/search/azure-search-documents/samples/sample_index_crud_operations.py index 712a7cd65468..6afe51d1a7c0 100644 --- a/sdk/search/azure-search-documents/samples/sample_index_crud_operations.py +++ b/sdk/search/azure-search-documents/samples/sample_index_crud_operations.py @@ -25,24 +25,17 @@ key = os.getenv("AZURE_SEARCH_API_KEY") from azure.core.credentials import AzureKeyCredential -from azure.search.documents import SearchServiceClient, CorsOptions, Index, ScoringProfile +from azure.search.documents import SearchServiceClient, CorsOptions, Index, ScoringProfile, edm, SimpleField, SearchableField -service_client = SearchServiceClient(service_endpoint, AzureKeyCredential(key)) +client = SearchServiceClient(service_endpoint, AzureKeyCredential(key)).get_indexes_client() def create_index(): # [START create_index] name = "hotels" fields = [ - { - "name": "hotelId", - "type": "Edm.String", - "key": True, - "searchable": False - }, - { - "name": "baseRate", - "type": "Edm.Double" - }] + SimpleField(name="hotelId", type=edm.String, key=True), + SimpleField(name="baseRate", type=edm.Double) + ] cors_options = CorsOptions(allowed_origins=["*"], max_age_in_seconds=60) scoring_profiles = [] index = Index( @@ -51,29 +44,23 @@ def create_index(): scoring_profiles=scoring_profiles, cors_options=cors_options) - result = service_client.create_index(index) + result = client.create_index(index) # [END create_index] def get_index(): # [START get_index] name = "hotels" - result = service_client.get_index(name) + result = client.get_index(name) # [END get_index] def update_index(): # [START update_index] name = "hotels" fields = [ - { - "name": "hotelId", - "type": "Edm.String", - "key": True, - "searchable": False - }, - { - "name": "baseRate", - "type": "Edm.Double" - }] + SimpleField(name="hotelId", type=edm.String, key=True), + SimpleField(name="baseRate", type=edm.Double), + SearchableField(name="hotelName", type=edm.String) + ] cors_options = CorsOptions(allowed_origins=["*"], max_age_in_seconds=60) scoring_profile = ScoringProfile( name="MyProfile" @@ -86,13 +73,13 @@ def update_index(): scoring_profiles=scoring_profiles, cors_options=cors_options) - result = service_client.create_or_update_index(index_name=index.name, index=index) + result = client.create_or_update_index(index_name=index.name, index=index) # [END update_index] def delete_index(): # [START delete_index] name = "hotels" - service_client.delete_index(name) + client.delete_index(name) # [END delete_index] if __name__ == '__main__': diff --git a/sdk/search/azure-search-documents/samples/sample_simple_query.py b/sdk/search/azure-search-documents/samples/sample_simple_query.py index da8cec8e924d..3948ae446a76 100644 --- a/sdk/search/azure-search-documents/samples/sample_simple_query.py +++ b/sdk/search/azure-search-documents/samples/sample_simple_query.py @@ -29,9 +29,9 @@ def simple_text_query(): # [START simple_query] from azure.core.credentials import AzureKeyCredential - from azure.search.documents import SearchIndexClient + from azure.search.documents import SearchClient - search_client = SearchIndexClient(service_endpoint, index_name, AzureKeyCredential(key)) + search_client = SearchClient(service_endpoint, index_name, AzureKeyCredential(key)) results = search_client.search(query="spa") diff --git a/sdk/search/azure-search-documents/samples/sample_suggestions.py b/sdk/search/azure-search-documents/samples/sample_suggestions.py index 9a3dc16a400f..a5e708e4b30a 100644 --- a/sdk/search/azure-search-documents/samples/sample_suggestions.py +++ b/sdk/search/azure-search-documents/samples/sample_suggestions.py @@ -29,9 +29,9 @@ def suggest_query(): # [START suggest_query] from azure.core.credentials import AzureKeyCredential - from azure.search.documents import SearchIndexClient, SuggestQuery + from azure.search.documents import SearchClient, SuggestQuery - search_client = SearchIndexClient(service_endpoint, index_name, AzureKeyCredential(key)) + search_client = SearchClient(service_endpoint, index_name, AzureKeyCredential(key)) query = SuggestQuery(search_text="coffee", suggester_name="sg") diff --git a/sdk/search/azure-search-documents/samples/sample_synonym_map_operations.py b/sdk/search/azure-search-documents/samples/sample_synonym_map_operations.py index 1d06db68e17e..fc64a6d3918a 100644 --- a/sdk/search/azure-search-documents/samples/sample_synonym_map_operations.py +++ b/sdk/search/azure-search-documents/samples/sample_synonym_map_operations.py @@ -26,11 +26,11 @@ from azure.core.credentials import AzureKeyCredential from azure.search.documents import SearchServiceClient -service_client = SearchServiceClient(service_endpoint, AzureKeyCredential(key)) +client = SearchServiceClient(service_endpoint, AzureKeyCredential(key)).get_synonym_maps_client() def create_synonym_map(): # [START create_synonym_map] - result = service_client.create_synonym_map("test-syn-map", [ + result = client.create_synonym_map("test-syn-map", [ "USA, United States, United States of America", "Washington, Wash. => WA", ]) @@ -39,14 +39,14 @@ def create_synonym_map(): def get_synonym_maps(): # [START get_synonym_maps] - result = service_client.get_synonym_maps() + result = client.get_synonym_maps() names = [x["name"] for x in result] print("Found {} Synonym Maps in the service: {}".format(len(result), ", ".join(names))) # [END get_synonym_maps] def get_synonym_map(): # [START get_synonym_map] - result = service_client.get_synonym_map("test-syn-map") + result = client.get_synonym_map("test-syn-map") print("Retrived Synonym Map 'test-syn-map' with synonyms") for syn in result["synonyms"]: print(" {}".format(syn)) @@ -54,7 +54,7 @@ def get_synonym_map(): def delete_synonym_map(): # [START delete_synonym_map] - service_client.delete_synonym_map("test-syn-map") + client.delete_synonym_map("test-syn-map") print("Synonym Map 'test-syn-map' deleted") # [END delete_synonym_map] diff --git a/sdk/search/azure-search-documents/tests/_test_utils.py b/sdk/search/azure-search-documents/tests/_test_utils.py new file mode 100644 index 000000000000..844ff2a240b8 --- /dev/null +++ b/sdk/search/azure-search-documents/tests/_test_utils.py @@ -0,0 +1,13 @@ +# ------------------------------------ +# Copyright (c) Microsoft Corporation. +# Licensed under the MIT License. +# ------------------------------------ + +from azure.search.documents import SynonymMap + + +def build_synonym_map_from_dict(synonym_map): + sm = SynonymMap(name=synonym_map["name"], synonyms=synonym_map["synonyms"]) + for k, v in synonym_map.items(): + setattr(sm, k, v) + return sm diff --git a/sdk/search/azure-search-documents/tests/async_tests/recordings/test_index_live_async.test_async_get_document_count.yaml b/sdk/search/azure-search-documents/tests/async_tests/recordings/test_index_live_async.test_async_get_document_count.yaml index 9bd2aa0e29e9..d14d673a3662 100644 --- a/sdk/search/azure-search-documents/tests/async_tests/recordings/test_index_live_async.test_async_get_document_count.yaml +++ b/sdk/search/azure-search-documents/tests/async_tests/recordings/test_index_live_async.test_async_get_document_count.yaml @@ -5,9 +5,9 @@ interactions: Accept: - application/json;odata.metadata=none User-Agent: - - azsdk-python-search-documents/1.0.0b2 Python/3.6.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - D65A80EA1763B20275FB2AED50855D0A + - 14143B3872694CCFBEFE981DD2C64829 method: GET uri: https://search22c31514.search.windows.net/indexes('drgqefsg')/docs/$count?api-version=2019-05-06-Preview response: @@ -18,24 +18,17 @@ interactions: content-encoding: gzip content-length: '127' content-type: text/plain - date: Tue, 31 Mar 2020 17:40:31 GMT - elapsed-time: '49' + date: Wed, 29 Apr 2020 23:26:21 GMT + elapsed-time: '79' expires: '-1' odata-version: '4.0' pragma: no-cache preference-applied: odata.include-annotations="*" - request-id: b8366d18-7376-11ea-a04c-5cf37071153c + request-id: d54bdc7a-8a70-11ea-889b-8c8590507855 strict-transport-security: max-age=15724800; includeSubDomains vary: Accept-Encoding status: code: 200 message: OK - url: !!python/object/new:yarl.URL - state: !!python/tuple - - !!python/object/new:urllib.parse.SplitResult - - https - - search22c31514.search.windows.net - - /indexes('drgqefsg')/docs/$count - - api-version=2019-05-06-Preview - - '' + url: https://search22c31514.search.windows.net/indexes('drgqefsg')/docs/$count?api-version=2019-05-06-Preview version: 1 diff --git a/sdk/search/azure-search-documents/tests/async_tests/recordings/test_index_live_async.test_autocomplete.yaml b/sdk/search/azure-search-documents/tests/async_tests/recordings/test_index_live_async.test_autocomplete.yaml index ed0b39b711c8..5f6a822575bd 100644 --- a/sdk/search/azure-search-documents/tests/async_tests/recordings/test_index_live_async.test_autocomplete.yaml +++ b/sdk/search/azure-search-documents/tests/async_tests/recordings/test_index_live_async.test_autocomplete.yaml @@ -9,9 +9,9 @@ interactions: Content-Type: - application/json User-Agent: - - azsdk-python-search-documents/1.0.0b2 Python/3.6.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - FDB4DAA7451F9A85628E4F372DDD22BD + - 74E424E128C2B04981151C353961D673 method: POST uri: https://search42ca1023.search.windows.net/indexes('drgqefsg')/docs/search.post.autocomplete?api-version=2019-05-06-Preview response: @@ -22,24 +22,17 @@ interactions: content-encoding: gzip content-length: '163' content-type: application/json; odata.metadata=none - date: Tue, 31 Mar 2020 17:40:47 GMT - elapsed-time: '244' + date: Wed, 29 Apr 2020 23:26:32 GMT + elapsed-time: '64' expires: '-1' odata-version: '4.0' pragma: no-cache preference-applied: odata.include-annotations="*" - request-id: c197169c-7376-11ea-b8de-5cf37071153c + request-id: dc60bb98-8a70-11ea-889b-8c8590507855 strict-transport-security: max-age=15724800; includeSubDomains vary: Accept-Encoding status: code: 200 message: OK - url: !!python/object/new:yarl.URL - state: !!python/tuple - - !!python/object/new:urllib.parse.SplitResult - - https - - search42ca1023.search.windows.net - - /indexes('drgqefsg')/docs/search.post.autocomplete - - api-version=2019-05-06-Preview - - '' + url: https://search42ca1023.search.windows.net/indexes('drgqefsg')/docs/search.post.autocomplete?api-version=2019-05-06-Preview version: 1 diff --git a/sdk/search/azure-search-documents/tests/async_tests/recordings/test_index_live_async.test_delete_documents_existing.yaml b/sdk/search/azure-search-documents/tests/async_tests/recordings/test_index_live_async.test_delete_documents_existing.yaml index e19982e59476..1611b1e78e57 100644 --- a/sdk/search/azure-search-documents/tests/async_tests/recordings/test_index_live_async.test_delete_documents_existing.yaml +++ b/sdk/search/azure-search-documents/tests/async_tests/recordings/test_index_live_async.test_delete_documents_existing.yaml @@ -10,9 +10,9 @@ interactions: Content-Type: - application/json User-Agent: - - azsdk-python-search-documents/1.0.0b2 Python/3.6.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - 178C3F32307E7393DDE449A358E6D4DC + - 2786DDE4C12B551D17578A94A8CAD1CC method: POST uri: https://search37b1157f.search.windows.net/indexes('drgqefsg')/docs/search.index?api-version=2019-05-06-Preview response: @@ -23,35 +23,28 @@ interactions: content-encoding: gzip content-length: '190' content-type: application/json; odata.metadata=none - date: Tue, 31 Mar 2020 17:41:02 GMT - elapsed-time: '185' + date: Wed, 29 Apr 2020 23:26:44 GMT + elapsed-time: '77' expires: '-1' odata-version: '4.0' pragma: no-cache preference-applied: odata.include-annotations="*" - request-id: ca7a3fa6-7376-11ea-9b93-5cf37071153c + request-id: e30156a6-8a70-11ea-889b-8c8590507855 strict-transport-security: max-age=15724800; includeSubDomains vary: Accept-Encoding status: code: 200 message: OK - url: !!python/object/new:yarl.URL - state: !!python/tuple - - !!python/object/new:urllib.parse.SplitResult - - https - - search37b1157f.search.windows.net - - /indexes('drgqefsg')/docs/search.index - - api-version=2019-05-06-Preview - - '' + url: https://search37b1157f.search.windows.net/indexes('drgqefsg')/docs/search.index?api-version=2019-05-06-Preview - request: body: null headers: Accept: - application/json;odata.metadata=none User-Agent: - - azsdk-python-search-documents/1.0.0b2 Python/3.6.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - 178C3F32307E7393DDE449A358E6D4DC + - 2786DDE4C12B551D17578A94A8CAD1CC method: GET uri: https://search37b1157f.search.windows.net/indexes('drgqefsg')/docs/$count?api-version=2019-05-06-Preview response: @@ -62,35 +55,28 @@ interactions: content-encoding: gzip content-length: '126' content-type: text/plain - date: Tue, 31 Mar 2020 17:41:05 GMT - elapsed-time: '3' + date: Wed, 29 Apr 2020 23:26:46 GMT + elapsed-time: '2' expires: '-1' odata-version: '4.0' pragma: no-cache preference-applied: odata.include-annotations="*" - request-id: cc8afa2e-7376-11ea-8e7b-5cf37071153c + request-id: e4e804f6-8a70-11ea-889b-8c8590507855 strict-transport-security: max-age=15724800; includeSubDomains vary: Accept-Encoding status: code: 200 message: OK - url: !!python/object/new:yarl.URL - state: !!python/tuple - - !!python/object/new:urllib.parse.SplitResult - - https - - search37b1157f.search.windows.net - - /indexes('drgqefsg')/docs/$count - - api-version=2019-05-06-Preview - - '' + url: https://search37b1157f.search.windows.net/indexes('drgqefsg')/docs/$count?api-version=2019-05-06-Preview - request: body: null headers: Accept: - application/json;odata.metadata=none User-Agent: - - azsdk-python-search-documents/1.0.0b2 Python/3.6.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - 178C3F32307E7393DDE449A358E6D4DC + - 2786DDE4C12B551D17578A94A8CAD1CC method: GET uri: https://search37b1157f.search.windows.net/indexes('drgqefsg')/docs('3')?api-version=2019-05-06-Preview response: @@ -99,32 +85,25 @@ interactions: headers: cache-control: no-cache content-length: '0' - date: Tue, 31 Mar 2020 17:41:05 GMT - elapsed-time: '41' + date: Wed, 29 Apr 2020 23:26:46 GMT + elapsed-time: '4' expires: '-1' pragma: no-cache - request-id: cc96e112-7376-11ea-8e25-5cf37071153c + request-id: e4ec7fc2-8a70-11ea-889b-8c8590507855 strict-transport-security: max-age=15724800; includeSubDomains status: code: 404 message: Not Found - url: !!python/object/new:yarl.URL - state: !!python/tuple - - !!python/object/new:urllib.parse.SplitResult - - https - - search37b1157f.search.windows.net - - /indexes('drgqefsg')/docs('3') - - api-version=2019-05-06-Preview - - '' + url: https://search37b1157f.search.windows.net/indexes('drgqefsg')/docs('3')?api-version=2019-05-06-Preview - request: body: null headers: Accept: - application/json;odata.metadata=none User-Agent: - - azsdk-python-search-documents/1.0.0b2 Python/3.6.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - 178C3F32307E7393DDE449A358E6D4DC + - 2786DDE4C12B551D17578A94A8CAD1CC method: GET uri: https://search37b1157f.search.windows.net/indexes('drgqefsg')/docs('4')?api-version=2019-05-06-Preview response: @@ -133,21 +112,14 @@ interactions: headers: cache-control: no-cache content-length: '0' - date: Tue, 31 Mar 2020 17:41:05 GMT - elapsed-time: '4' + date: Wed, 29 Apr 2020 23:26:46 GMT + elapsed-time: '3' expires: '-1' pragma: no-cache - request-id: cca75bc2-7376-11ea-84bc-5cf37071153c + request-id: e4f0cc26-8a70-11ea-889b-8c8590507855 strict-transport-security: max-age=15724800; includeSubDomains status: code: 404 message: Not Found - url: !!python/object/new:yarl.URL - state: !!python/tuple - - !!python/object/new:urllib.parse.SplitResult - - https - - search37b1157f.search.windows.net - - /indexes('drgqefsg')/docs('4') - - api-version=2019-05-06-Preview - - '' + url: https://search37b1157f.search.windows.net/indexes('drgqefsg')/docs('4')?api-version=2019-05-06-Preview version: 1 diff --git a/sdk/search/azure-search-documents/tests/async_tests/recordings/test_index_live_async.test_delete_documents_missing.yaml b/sdk/search/azure-search-documents/tests/async_tests/recordings/test_index_live_async.test_delete_documents_missing.yaml index 8d8b52b231c4..d9a2c40e9776 100644 --- a/sdk/search/azure-search-documents/tests/async_tests/recordings/test_index_live_async.test_delete_documents_missing.yaml +++ b/sdk/search/azure-search-documents/tests/async_tests/recordings/test_index_live_async.test_delete_documents_missing.yaml @@ -10,9 +10,9 @@ interactions: Content-Type: - application/json User-Agent: - - azsdk-python-search-documents/1.0.0b2 Python/3.6.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - E8331A94B715791AA706A36856B2646B + - C3AE890D3C892CC8F95D58D7DB853379 method: POST uri: https://search2224150e.search.windows.net/indexes('drgqefsg')/docs/search.index?api-version=2019-05-06-Preview response: @@ -23,35 +23,28 @@ interactions: content-encoding: gzip content-length: '193' content-type: application/json; odata.metadata=none - date: Tue, 31 Mar 2020 17:41:21 GMT - elapsed-time: '144' + date: Wed, 29 Apr 2020 23:26:57 GMT + elapsed-time: '107' expires: '-1' odata-version: '4.0' pragma: no-cache preference-applied: odata.include-annotations="*" - request-id: d5c5b752-7376-11ea-8007-5cf37071153c + request-id: eb538018-8a70-11ea-889b-8c8590507855 strict-transport-security: max-age=15724800; includeSubDomains vary: Accept-Encoding status: code: 200 message: OK - url: !!python/object/new:yarl.URL - state: !!python/tuple - - !!python/object/new:urllib.parse.SplitResult - - https - - search2224150e.search.windows.net - - /indexes('drgqefsg')/docs/search.index - - api-version=2019-05-06-Preview - - '' + url: https://search2224150e.search.windows.net/indexes('drgqefsg')/docs/search.index?api-version=2019-05-06-Preview - request: body: null headers: Accept: - application/json;odata.metadata=none User-Agent: - - azsdk-python-search-documents/1.0.0b2 Python/3.6.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - E8331A94B715791AA706A36856B2646B + - C3AE890D3C892CC8F95D58D7DB853379 method: GET uri: https://search2224150e.search.windows.net/indexes('drgqefsg')/docs/$count?api-version=2019-05-06-Preview response: @@ -62,35 +55,28 @@ interactions: content-encoding: gzip content-length: '126' content-type: text/plain - date: Tue, 31 Mar 2020 17:41:24 GMT - elapsed-time: '7' + date: Wed, 29 Apr 2020 23:27:01 GMT + elapsed-time: '3' expires: '-1' odata-version: '4.0' pragma: no-cache preference-applied: odata.include-annotations="*" - request-id: d7c71bc8-7376-11ea-8dcf-5cf37071153c + request-id: ed3c47fc-8a70-11ea-889b-8c8590507855 strict-transport-security: max-age=15724800; includeSubDomains vary: Accept-Encoding status: code: 200 message: OK - url: !!python/object/new:yarl.URL - state: !!python/tuple - - !!python/object/new:urllib.parse.SplitResult - - https - - search2224150e.search.windows.net - - /indexes('drgqefsg')/docs/$count - - api-version=2019-05-06-Preview - - '' + url: https://search2224150e.search.windows.net/indexes('drgqefsg')/docs/$count?api-version=2019-05-06-Preview - request: body: null headers: Accept: - application/json;odata.metadata=none User-Agent: - - azsdk-python-search-documents/1.0.0b2 Python/3.6.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - E8331A94B715791AA706A36856B2646B + - C3AE890D3C892CC8F95D58D7DB853379 method: GET uri: https://search2224150e.search.windows.net/indexes('drgqefsg')/docs('1000')?api-version=2019-05-06-Preview response: @@ -99,32 +85,25 @@ interactions: headers: cache-control: no-cache content-length: '0' - date: Tue, 31 Mar 2020 17:41:24 GMT - elapsed-time: '3' + date: Wed, 29 Apr 2020 23:27:01 GMT + elapsed-time: '4' expires: '-1' pragma: no-cache - request-id: d7d3029e-7376-11ea-9aef-5cf37071153c + request-id: ed40a586-8a70-11ea-889b-8c8590507855 strict-transport-security: max-age=15724800; includeSubDomains status: code: 404 message: Not Found - url: !!python/object/new:yarl.URL - state: !!python/tuple - - !!python/object/new:urllib.parse.SplitResult - - https - - search2224150e.search.windows.net - - /indexes('drgqefsg')/docs('1000') - - api-version=2019-05-06-Preview - - '' + url: https://search2224150e.search.windows.net/indexes('drgqefsg')/docs('1000')?api-version=2019-05-06-Preview - request: body: null headers: Accept: - application/json;odata.metadata=none User-Agent: - - azsdk-python-search-documents/1.0.0b2 Python/3.6.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - E8331A94B715791AA706A36856B2646B + - C3AE890D3C892CC8F95D58D7DB853379 method: GET uri: https://search2224150e.search.windows.net/indexes('drgqefsg')/docs('4')?api-version=2019-05-06-Preview response: @@ -133,21 +112,14 @@ interactions: headers: cache-control: no-cache content-length: '0' - date: Tue, 31 Mar 2020 17:41:24 GMT - elapsed-time: '4' + date: Wed, 29 Apr 2020 23:27:01 GMT + elapsed-time: '17' expires: '-1' pragma: no-cache - request-id: d7db8e40-7376-11ea-a45d-5cf37071153c + request-id: ed44f6b8-8a70-11ea-889b-8c8590507855 strict-transport-security: max-age=15724800; includeSubDomains status: code: 404 message: Not Found - url: !!python/object/new:yarl.URL - state: !!python/tuple - - !!python/object/new:urllib.parse.SplitResult - - https - - search2224150e.search.windows.net - - /indexes('drgqefsg')/docs('4') - - api-version=2019-05-06-Preview - - '' + url: https://search2224150e.search.windows.net/indexes('drgqefsg')/docs('4')?api-version=2019-05-06-Preview version: 1 diff --git a/sdk/search/azure-search-documents/tests/async_tests/recordings/test_index_live_async.test_get_document.yaml b/sdk/search/azure-search-documents/tests/async_tests/recordings/test_index_live_async.test_get_document.yaml index 8db626125338..ab51a43e5f45 100644 --- a/sdk/search/azure-search-documents/tests/async_tests/recordings/test_index_live_async.test_get_document.yaml +++ b/sdk/search/azure-search-documents/tests/async_tests/recordings/test_index_live_async.test_get_document.yaml @@ -5,9 +5,9 @@ interactions: Accept: - application/json;odata.metadata=none User-Agent: - - azsdk-python-search-documents/1.0.0b2 Python/3.6.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - F590F1CD809CE8DAB6A7BD3C0805DBC0 + - AB0C0391C5B486DC4244CF967D7CAFD9 method: GET uri: https://search41be100f.search.windows.net/indexes('drgqefsg')/docs('1')?api-version=2019-05-06-Preview response: @@ -25,35 +25,28 @@ interactions: content-encoding: gzip content-length: '748' content-type: application/json; odata.metadata=none - date: Tue, 31 Mar 2020 17:41:40 GMT - elapsed-time: '236' + date: Wed, 29 Apr 2020 23:27:13 GMT + elapsed-time: '83' expires: '-1' odata-version: '4.0' pragma: no-cache preference-applied: odata.include-annotations="*" - request-id: e144a1ee-7376-11ea-8e3d-5cf37071153c + request-id: f446d418-8a70-11ea-889b-8c8590507855 strict-transport-security: max-age=15724800; includeSubDomains vary: Accept-Encoding status: code: 200 message: OK - url: !!python/object/new:yarl.URL - state: !!python/tuple - - !!python/object/new:urllib.parse.SplitResult - - https - - search41be100f.search.windows.net - - /indexes('drgqefsg')/docs('1') - - api-version=2019-05-06-Preview - - '' + url: https://search41be100f.search.windows.net/indexes('drgqefsg')/docs('1')?api-version=2019-05-06-Preview - request: body: null headers: Accept: - application/json;odata.metadata=none User-Agent: - - azsdk-python-search-documents/1.0.0b2 Python/3.6.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - F590F1CD809CE8DAB6A7BD3C0805DBC0 + - AB0C0391C5B486DC4244CF967D7CAFD9 method: GET uri: https://search41be100f.search.windows.net/indexes('drgqefsg')/docs('2')?api-version=2019-05-06-Preview response: @@ -66,35 +59,28 @@ interactions: content-encoding: gzip content-length: '449' content-type: application/json; odata.metadata=none - date: Tue, 31 Mar 2020 17:41:40 GMT - elapsed-time: '5' + date: Wed, 29 Apr 2020 23:27:13 GMT + elapsed-time: '4' expires: '-1' odata-version: '4.0' pragma: no-cache preference-applied: odata.include-annotations="*" - request-id: e18b5454-7376-11ea-ba11-5cf37071153c + request-id: f462e662-8a70-11ea-889b-8c8590507855 strict-transport-security: max-age=15724800; includeSubDomains vary: Accept-Encoding status: code: 200 message: OK - url: !!python/object/new:yarl.URL - state: !!python/tuple - - !!python/object/new:urllib.parse.SplitResult - - https - - search41be100f.search.windows.net - - /indexes('drgqefsg')/docs('2') - - api-version=2019-05-06-Preview - - '' + url: https://search41be100f.search.windows.net/indexes('drgqefsg')/docs('2')?api-version=2019-05-06-Preview - request: body: null headers: Accept: - application/json;odata.metadata=none User-Agent: - - azsdk-python-search-documents/1.0.0b2 Python/3.6.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - F590F1CD809CE8DAB6A7BD3C0805DBC0 + - AB0C0391C5B486DC4244CF967D7CAFD9 method: GET uri: https://search41be100f.search.windows.net/indexes('drgqefsg')/docs('3')?api-version=2019-05-06-Preview response: @@ -106,35 +92,28 @@ interactions: content-encoding: gzip content-length: '438' content-type: application/json; odata.metadata=none - date: Tue, 31 Mar 2020 17:41:40 GMT + date: Wed, 29 Apr 2020 23:27:13 GMT elapsed-time: '4' expires: '-1' odata-version: '4.0' pragma: no-cache preference-applied: odata.include-annotations="*" - request-id: e1942090-7376-11ea-9968-5cf37071153c + request-id: f467db4a-8a70-11ea-889b-8c8590507855 strict-transport-security: max-age=15724800; includeSubDomains vary: Accept-Encoding status: code: 200 message: OK - url: !!python/object/new:yarl.URL - state: !!python/tuple - - !!python/object/new:urllib.parse.SplitResult - - https - - search41be100f.search.windows.net - - /indexes('drgqefsg')/docs('3') - - api-version=2019-05-06-Preview - - '' + url: https://search41be100f.search.windows.net/indexes('drgqefsg')/docs('3')?api-version=2019-05-06-Preview - request: body: null headers: Accept: - application/json;odata.metadata=none User-Agent: - - azsdk-python-search-documents/1.0.0b2 Python/3.6.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - F590F1CD809CE8DAB6A7BD3C0805DBC0 + - AB0C0391C5B486DC4244CF967D7CAFD9 method: GET uri: https://search41be100f.search.windows.net/indexes('drgqefsg')/docs('4')?api-version=2019-05-06-Preview response: @@ -146,35 +125,28 @@ interactions: content-encoding: gzip content-length: '422' content-type: application/json; odata.metadata=none - date: Tue, 31 Mar 2020 17:41:40 GMT - elapsed-time: '9' + date: Wed, 29 Apr 2020 23:27:13 GMT + elapsed-time: '3' expires: '-1' odata-version: '4.0' pragma: no-cache preference-applied: odata.include-annotations="*" - request-id: e19ecfa4-7376-11ea-a5f3-5cf37071153c + request-id: f46c83e8-8a70-11ea-889b-8c8590507855 strict-transport-security: max-age=15724800; includeSubDomains vary: Accept-Encoding status: code: 200 message: OK - url: !!python/object/new:yarl.URL - state: !!python/tuple - - !!python/object/new:urllib.parse.SplitResult - - https - - search41be100f.search.windows.net - - /indexes('drgqefsg')/docs('4') - - api-version=2019-05-06-Preview - - '' + url: https://search41be100f.search.windows.net/indexes('drgqefsg')/docs('4')?api-version=2019-05-06-Preview - request: body: null headers: Accept: - application/json;odata.metadata=none User-Agent: - - azsdk-python-search-documents/1.0.0b2 Python/3.6.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - F590F1CD809CE8DAB6A7BD3C0805DBC0 + - AB0C0391C5B486DC4244CF967D7CAFD9 method: GET uri: https://search41be100f.search.windows.net/indexes('drgqefsg')/docs('5')?api-version=2019-05-06-Preview response: @@ -186,35 +158,28 @@ interactions: content-encoding: gzip content-length: '424' content-type: application/json; odata.metadata=none - date: Tue, 31 Mar 2020 17:41:40 GMT - elapsed-time: '8' + date: Wed, 29 Apr 2020 23:27:13 GMT + elapsed-time: '19' expires: '-1' odata-version: '4.0' pragma: no-cache preference-applied: odata.include-annotations="*" - request-id: e1ab9342-7376-11ea-843a-5cf37071153c + request-id: f4711b06-8a70-11ea-889b-8c8590507855 strict-transport-security: max-age=15724800; includeSubDomains vary: Accept-Encoding status: code: 200 message: OK - url: !!python/object/new:yarl.URL - state: !!python/tuple - - !!python/object/new:urllib.parse.SplitResult - - https - - search41be100f.search.windows.net - - /indexes('drgqefsg')/docs('5') - - api-version=2019-05-06-Preview - - '' + url: https://search41be100f.search.windows.net/indexes('drgqefsg')/docs('5')?api-version=2019-05-06-Preview - request: body: null headers: Accept: - application/json;odata.metadata=none User-Agent: - - azsdk-python-search-documents/1.0.0b2 Python/3.6.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - F590F1CD809CE8DAB6A7BD3C0805DBC0 + - AB0C0391C5B486DC4244CF967D7CAFD9 method: GET uri: https://search41be100f.search.windows.net/indexes('drgqefsg')/docs('6')?api-version=2019-05-06-Preview response: @@ -226,35 +191,28 @@ interactions: content-encoding: gzip content-length: '301' content-type: application/json; odata.metadata=none - date: Tue, 31 Mar 2020 17:41:40 GMT - elapsed-time: '3' + date: Wed, 29 Apr 2020 23:27:13 GMT + elapsed-time: '6' expires: '-1' odata-version: '4.0' pragma: no-cache preference-applied: odata.include-annotations="*" - request-id: e1b6d8fa-7376-11ea-a627-5cf37071153c + request-id: f477f8a4-8a70-11ea-889b-8c8590507855 strict-transport-security: max-age=15724800; includeSubDomains vary: Accept-Encoding status: code: 200 message: OK - url: !!python/object/new:yarl.URL - state: !!python/tuple - - !!python/object/new:urllib.parse.SplitResult - - https - - search41be100f.search.windows.net - - /indexes('drgqefsg')/docs('6') - - api-version=2019-05-06-Preview - - '' + url: https://search41be100f.search.windows.net/indexes('drgqefsg')/docs('6')?api-version=2019-05-06-Preview - request: body: null headers: Accept: - application/json;odata.metadata=none User-Agent: - - azsdk-python-search-documents/1.0.0b2 Python/3.6.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - F590F1CD809CE8DAB6A7BD3C0805DBC0 + - AB0C0391C5B486DC4244CF967D7CAFD9 method: GET uri: https://search41be100f.search.windows.net/indexes('drgqefsg')/docs('7')?api-version=2019-05-06-Preview response: @@ -267,35 +225,28 @@ interactions: content-encoding: gzip content-length: '357' content-type: application/json; odata.metadata=none - date: Tue, 31 Mar 2020 17:41:40 GMT - elapsed-time: '10' + date: Wed, 29 Apr 2020 23:27:13 GMT + elapsed-time: '3' expires: '-1' odata-version: '4.0' pragma: no-cache preference-applied: odata.include-annotations="*" - request-id: e1c185f8-7376-11ea-818a-5cf37071153c + request-id: f47d0d80-8a70-11ea-889b-8c8590507855 strict-transport-security: max-age=15724800; includeSubDomains vary: Accept-Encoding status: code: 200 message: OK - url: !!python/object/new:yarl.URL - state: !!python/tuple - - !!python/object/new:urllib.parse.SplitResult - - https - - search41be100f.search.windows.net - - /indexes('drgqefsg')/docs('7') - - api-version=2019-05-06-Preview - - '' + url: https://search41be100f.search.windows.net/indexes('drgqefsg')/docs('7')?api-version=2019-05-06-Preview - request: body: null headers: Accept: - application/json;odata.metadata=none User-Agent: - - azsdk-python-search-documents/1.0.0b2 Python/3.6.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - F590F1CD809CE8DAB6A7BD3C0805DBC0 + - AB0C0391C5B486DC4244CF967D7CAFD9 method: GET uri: https://search41be100f.search.windows.net/indexes('drgqefsg')/docs('8')?api-version=2019-05-06-Preview response: @@ -309,35 +260,28 @@ interactions: content-encoding: gzip content-length: '411' content-type: application/json; odata.metadata=none - date: Tue, 31 Mar 2020 17:41:40 GMT - elapsed-time: '10' + date: Wed, 29 Apr 2020 23:27:13 GMT + elapsed-time: '5' expires: '-1' odata-version: '4.0' pragma: no-cache preference-applied: odata.include-annotations="*" - request-id: e1cd4c98-7376-11ea-b78d-5cf37071153c + request-id: f48192c4-8a70-11ea-889b-8c8590507855 strict-transport-security: max-age=15724800; includeSubDomains vary: Accept-Encoding status: code: 200 message: OK - url: !!python/object/new:yarl.URL - state: !!python/tuple - - !!python/object/new:urllib.parse.SplitResult - - https - - search41be100f.search.windows.net - - /indexes('drgqefsg')/docs('8') - - api-version=2019-05-06-Preview - - '' + url: https://search41be100f.search.windows.net/indexes('drgqefsg')/docs('8')?api-version=2019-05-06-Preview - request: body: null headers: Accept: - application/json;odata.metadata=none User-Agent: - - azsdk-python-search-documents/1.0.0b2 Python/3.6.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - F590F1CD809CE8DAB6A7BD3C0805DBC0 + - AB0C0391C5B486DC4244CF967D7CAFD9 method: GET uri: https://search41be100f.search.windows.net/indexes('drgqefsg')/docs('9')?api-version=2019-05-06-Preview response: @@ -365,35 +309,28 @@ interactions: content-encoding: gzip content-length: '1061' content-type: application/json; odata.metadata=none - date: Tue, 31 Mar 2020 17:41:40 GMT - elapsed-time: '15' + date: Wed, 29 Apr 2020 23:27:13 GMT + elapsed-time: '9' expires: '-1' odata-version: '4.0' pragma: no-cache preference-applied: odata.include-annotations="*" - request-id: e1d7e0c0-7376-11ea-9f36-5cf37071153c + request-id: f4866e8e-8a70-11ea-889b-8c8590507855 strict-transport-security: max-age=15724800; includeSubDomains vary: Accept-Encoding status: code: 200 message: OK - url: !!python/object/new:yarl.URL - state: !!python/tuple - - !!python/object/new:urllib.parse.SplitResult - - https - - search41be100f.search.windows.net - - /indexes('drgqefsg')/docs('9') - - api-version=2019-05-06-Preview - - '' + url: https://search41be100f.search.windows.net/indexes('drgqefsg')/docs('9')?api-version=2019-05-06-Preview - request: body: null headers: Accept: - application/json;odata.metadata=none User-Agent: - - azsdk-python-search-documents/1.0.0b2 Python/3.6.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - F590F1CD809CE8DAB6A7BD3C0805DBC0 + - AB0C0391C5B486DC4244CF967D7CAFD9 method: GET uri: https://search41be100f.search.windows.net/indexes('drgqefsg')/docs('10')?api-version=2019-05-06-Preview response: @@ -417,24 +354,17 @@ interactions: content-encoding: gzip content-length: '938' content-type: application/json; odata.metadata=none - date: Tue, 31 Mar 2020 17:41:40 GMT - elapsed-time: '10' + date: Wed, 29 Apr 2020 23:27:13 GMT + elapsed-time: '4' expires: '-1' odata-version: '4.0' pragma: no-cache preference-applied: odata.include-annotations="*" - request-id: e1e55bac-7376-11ea-bf26-5cf37071153c + request-id: f48c128a-8a70-11ea-889b-8c8590507855 strict-transport-security: max-age=15724800; includeSubDomains vary: Accept-Encoding status: code: 200 message: OK - url: !!python/object/new:yarl.URL - state: !!python/tuple - - !!python/object/new:urllib.parse.SplitResult - - https - - search41be100f.search.windows.net - - /indexes('drgqefsg')/docs('10') - - api-version=2019-05-06-Preview - - '' + url: https://search41be100f.search.windows.net/indexes('drgqefsg')/docs('10')?api-version=2019-05-06-Preview version: 1 diff --git a/sdk/search/azure-search-documents/tests/async_tests/recordings/test_index_live_async.test_get_document_missing.yaml b/sdk/search/azure-search-documents/tests/async_tests/recordings/test_index_live_async.test_get_document_missing.yaml index b9ec84a7fdec..f9a6b57f3d00 100644 --- a/sdk/search/azure-search-documents/tests/async_tests/recordings/test_index_live_async.test_get_document_missing.yaml +++ b/sdk/search/azure-search-documents/tests/async_tests/recordings/test_index_live_async.test_get_document_missing.yaml @@ -5,9 +5,9 @@ interactions: Accept: - application/json;odata.metadata=none User-Agent: - - azsdk-python-search-documents/1.0.0b2 Python/3.6.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - 4A8AB8FCAA193891F875DA3C11F937AA + - 0CF3302F0AB74F3241C00534746EFD38 method: GET uri: https://searchd1281368.search.windows.net/indexes('drgqefsg')/docs('1000')?api-version=2019-05-06-Preview response: @@ -16,21 +16,14 @@ interactions: headers: cache-control: no-cache content-length: '0' - date: Tue, 31 Mar 2020 17:41:56 GMT - elapsed-time: '127' + date: Wed, 29 Apr 2020 23:27:24 GMT + elapsed-time: '67' expires: '-1' pragma: no-cache - request-id: ea8868ee-7376-11ea-9a1e-5cf37071153c + request-id: fb4d5aca-8a70-11ea-889b-8c8590507855 strict-transport-security: max-age=15724800; includeSubDomains status: code: 404 message: Not Found - url: !!python/object/new:yarl.URL - state: !!python/tuple - - !!python/object/new:urllib.parse.SplitResult - - https - - searchd1281368.search.windows.net - - /indexes('drgqefsg')/docs('1000') - - api-version=2019-05-06-Preview - - '' + url: https://searchd1281368.search.windows.net/indexes('drgqefsg')/docs('1000')?api-version=2019-05-06-Preview version: 1 diff --git a/sdk/search/azure-search-documents/tests/async_tests/recordings/test_index_live_async.test_get_search_counts.yaml b/sdk/search/azure-search-documents/tests/async_tests/recordings/test_index_live_async.test_get_search_counts.yaml index cb171fee9f85..e0406b275875 100644 --- a/sdk/search/azure-search-documents/tests/async_tests/recordings/test_index_live_async.test_get_search_counts.yaml +++ b/sdk/search/azure-search-documents/tests/async_tests/recordings/test_index_live_async.test_get_search_counts.yaml @@ -9,9 +9,9 @@ interactions: Content-Type: - application/json User-Agent: - - azsdk-python-search-documents/1.0.0b2 Python/3.6.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - 1124AD98F9FA234FB5DFF9614D8918E8 + - 748B4ADAF1B19F896323F9333355C5BF method: POST uri: https://search97b31221.search.windows.net/indexes('drgqefsg')/docs/search.post.search?api-version=2019-05-06-Preview response: @@ -65,26 +65,19 @@ interactions: content-encoding: gzip content-length: '2377' content-type: application/json; odata.metadata=none - date: Tue, 31 Mar 2020 17:42:11 GMT - elapsed-time: '177' + date: Wed, 29 Apr 2020 23:27:36 GMT + elapsed-time: '91' expires: '-1' odata-version: '4.0' pragma: no-cache preference-applied: odata.include-annotations="*" - request-id: f36e8828-7376-11ea-8118-5cf37071153c + request-id: 02404c5c-8a71-11ea-889b-8c8590507855 strict-transport-security: max-age=15724800; includeSubDomains vary: Accept-Encoding status: code: 200 message: OK - url: !!python/object/new:yarl.URL - state: !!python/tuple - - !!python/object/new:urllib.parse.SplitResult - - https - - search97b31221.search.windows.net - - /indexes('drgqefsg')/docs/search.post.search - - api-version=2019-05-06-Preview - - '' + url: https://search97b31221.search.windows.net/indexes('drgqefsg')/docs/search.post.search?api-version=2019-05-06-Preview - request: body: '{"count": true, "search": "hotel"}' headers: @@ -95,9 +88,9 @@ interactions: Content-Type: - application/json User-Agent: - - azsdk-python-search-documents/1.0.0b2 Python/3.6.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - 1124AD98F9FA234FB5DFF9614D8918E8 + - 748B4ADAF1B19F896323F9333355C5BF method: POST uri: https://search97b31221.search.windows.net/indexes('drgqefsg')/docs/search.post.search?api-version=2019-05-06-Preview response: @@ -151,24 +144,17 @@ interactions: content-encoding: gzip content-length: '2388' content-type: application/json; odata.metadata=none - date: Tue, 31 Mar 2020 17:42:11 GMT + date: Wed, 29 Apr 2020 23:27:36 GMT elapsed-time: '8' expires: '-1' odata-version: '4.0' pragma: no-cache preference-applied: odata.include-annotations="*" - request-id: f3a604f4-7376-11ea-a350-5cf37071153c + request-id: 025ce056-8a71-11ea-889b-8c8590507855 strict-transport-security: max-age=15724800; includeSubDomains vary: Accept-Encoding status: code: 200 message: OK - url: !!python/object/new:yarl.URL - state: !!python/tuple - - !!python/object/new:urllib.parse.SplitResult - - https - - search97b31221.search.windows.net - - /indexes('drgqefsg')/docs/search.post.search - - api-version=2019-05-06-Preview - - '' + url: https://search97b31221.search.windows.net/indexes('drgqefsg')/docs/search.post.search?api-version=2019-05-06-Preview version: 1 diff --git a/sdk/search/azure-search-documents/tests/async_tests/recordings/test_index_live_async.test_get_search_coverage.yaml b/sdk/search/azure-search-documents/tests/async_tests/recordings/test_index_live_async.test_get_search_coverage.yaml index d6055f79aad8..d75cc54236e0 100644 --- a/sdk/search/azure-search-documents/tests/async_tests/recordings/test_index_live_async.test_get_search_coverage.yaml +++ b/sdk/search/azure-search-documents/tests/async_tests/recordings/test_index_live_async.test_get_search_coverage.yaml @@ -9,9 +9,9 @@ interactions: Content-Type: - application/json User-Agent: - - azsdk-python-search-documents/1.0.0b2 Python/3.6.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - 6DEB27E4FBB0BC39EFE5178B262B6B27 + - 621610911B3D9D8BC6F4D01ACBF7CEDF method: POST uri: https://searchbcc312d1.search.windows.net/indexes('drgqefsg')/docs/search.post.search?api-version=2019-05-06-Preview response: @@ -65,26 +65,19 @@ interactions: content-encoding: gzip content-length: '2377' content-type: application/json; odata.metadata=none - date: Tue, 31 Mar 2020 17:42:27 GMT - elapsed-time: '38' + date: Wed, 29 Apr 2020 23:27:47 GMT + elapsed-time: '19' expires: '-1' odata-version: '4.0' pragma: no-cache preference-applied: odata.include-annotations="*" - request-id: fd19b022-7376-11ea-8831-5cf37071153c + request-id: 09345ed6-8a71-11ea-889b-8c8590507855 strict-transport-security: max-age=15724800; includeSubDomains vary: Accept-Encoding status: code: 200 message: OK - url: !!python/object/new:yarl.URL - state: !!python/tuple - - !!python/object/new:urllib.parse.SplitResult - - https - - searchbcc312d1.search.windows.net - - /indexes('drgqefsg')/docs/search.post.search - - api-version=2019-05-06-Preview - - '' + url: https://searchbcc312d1.search.windows.net/indexes('drgqefsg')/docs/search.post.search?api-version=2019-05-06-Preview - request: body: '{"minimumCoverage": 50.0, "search": "hotel"}' headers: @@ -95,9 +88,9 @@ interactions: Content-Type: - application/json User-Agent: - - azsdk-python-search-documents/1.0.0b2 Python/3.6.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - 6DEB27E4FBB0BC39EFE5178B262B6B27 + - 621610911B3D9D8BC6F4D01ACBF7CEDF method: POST uri: https://searchbcc312d1.search.windows.net/indexes('drgqefsg')/docs/search.post.search?api-version=2019-05-06-Preview response: @@ -151,24 +144,17 @@ interactions: content-encoding: gzip content-length: '2389' content-type: application/json; odata.metadata=none - date: Tue, 31 Mar 2020 17:42:27 GMT - elapsed-time: '9' + date: Wed, 29 Apr 2020 23:27:47 GMT + elapsed-time: '6' expires: '-1' odata-version: '4.0' pragma: no-cache preference-applied: odata.include-annotations="*" - request-id: fd3eebcc-7376-11ea-a5a1-5cf37071153c + request-id: 0948655c-8a71-11ea-889b-8c8590507855 strict-transport-security: max-age=15724800; includeSubDomains vary: Accept-Encoding status: code: 200 message: OK - url: !!python/object/new:yarl.URL - state: !!python/tuple - - !!python/object/new:urllib.parse.SplitResult - - https - - searchbcc312d1.search.windows.net - - /indexes('drgqefsg')/docs/search.post.search - - api-version=2019-05-06-Preview - - '' + url: https://searchbcc312d1.search.windows.net/indexes('drgqefsg')/docs/search.post.search?api-version=2019-05-06-Preview version: 1 diff --git a/sdk/search/azure-search-documents/tests/async_tests/recordings/test_index_live_async.test_get_search_facets_none.yaml b/sdk/search/azure-search-documents/tests/async_tests/recordings/test_index_live_async.test_get_search_facets_none.yaml index 8ece85c4538c..3972a07f2c28 100644 --- a/sdk/search/azure-search-documents/tests/async_tests/recordings/test_index_live_async.test_get_search_facets_none.yaml +++ b/sdk/search/azure-search-documents/tests/async_tests/recordings/test_index_live_async.test_get_search_facets_none.yaml @@ -9,9 +9,9 @@ interactions: Content-Type: - application/json User-Agent: - - azsdk-python-search-documents/1.0.0b2 Python/3.6.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - AF422A8E5CA89EFF9DC4B9990F48EF7E + - B014CAE409517E3739DCEE8A22A1F630 method: POST uri: https://searchf724140a.search.windows.net/indexes('drgqefsg')/docs/search.post.search?api-version=2019-05-06-Preview response: @@ -32,24 +32,17 @@ interactions: content-encoding: gzip content-length: '609' content-type: application/json; odata.metadata=none - date: Tue, 31 Mar 2020 17:42:41 GMT - elapsed-time: '190' + date: Wed, 29 Apr 2020 23:27:58 GMT + elapsed-time: '69' expires: '-1' odata-version: '4.0' pragma: no-cache preference-applied: odata.include-annotations="*" - request-id: 05a0d09a-7377-11ea-998e-5cf37071153c + request-id: 0f4de288-8a71-11ea-889b-8c8590507855 strict-transport-security: max-age=15724800; includeSubDomains vary: Accept-Encoding status: code: 200 message: OK - url: !!python/object/new:yarl.URL - state: !!python/tuple - - !!python/object/new:urllib.parse.SplitResult - - https - - searchf724140a.search.windows.net - - /indexes('drgqefsg')/docs/search.post.search - - api-version=2019-05-06-Preview - - '' + url: https://searchf724140a.search.windows.net/indexes('drgqefsg')/docs/search.post.search?api-version=2019-05-06-Preview version: 1 diff --git a/sdk/search/azure-search-documents/tests/async_tests/recordings/test_index_live_async.test_get_search_facets_result.yaml b/sdk/search/azure-search-documents/tests/async_tests/recordings/test_index_live_async.test_get_search_facets_result.yaml index 00b24d34ba4a..fda5ef81c85c 100644 --- a/sdk/search/azure-search-documents/tests/async_tests/recordings/test_index_live_async.test_get_search_facets_result.yaml +++ b/sdk/search/azure-search-documents/tests/async_tests/recordings/test_index_live_async.test_get_search_facets_result.yaml @@ -9,9 +9,9 @@ interactions: Content-Type: - application/json User-Agent: - - azsdk-python-search-documents/1.0.0b2 Python/3.6.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - 9BBDFA2752B97A089F1D12EC4B0D6FF8 + - 6DF34EBCEF728149C24DAA6B4F57A090 method: POST uri: https://search20bd14f9.search.windows.net/indexes('drgqefsg')/docs/search.post.search?api-version=2019-05-06-Preview response: @@ -32,24 +32,17 @@ interactions: content-encoding: gzip content-length: '646' content-type: application/json; odata.metadata=none - date: Tue, 31 Mar 2020 17:42:56 GMT - elapsed-time: '259' + date: Wed, 29 Apr 2020 23:28:09 GMT + elapsed-time: '76' expires: '-1' odata-version: '4.0' pragma: no-cache preference-applied: odata.include-annotations="*" - request-id: 0e6ca5dc-7377-11ea-96c2-5cf37071153c + request-id: 15c6c256-8a71-11ea-889b-8c8590507855 strict-transport-security: max-age=15724800; includeSubDomains vary: Accept-Encoding status: code: 200 message: OK - url: !!python/object/new:yarl.URL - state: !!python/tuple - - !!python/object/new:urllib.parse.SplitResult - - https - - search20bd14f9.search.windows.net - - /indexes('drgqefsg')/docs/search.post.search - - api-version=2019-05-06-Preview - - '' + url: https://search20bd14f9.search.windows.net/indexes('drgqefsg')/docs/search.post.search?api-version=2019-05-06-Preview version: 1 diff --git a/sdk/search/azure-search-documents/tests/async_tests/recordings/test_index_live_async.test_get_search_filter.yaml b/sdk/search/azure-search-documents/tests/async_tests/recordings/test_index_live_async.test_get_search_filter.yaml index 3ba388b8520a..7aabc95a802e 100644 --- a/sdk/search/azure-search-documents/tests/async_tests/recordings/test_index_live_async.test_get_search_filter.yaml +++ b/sdk/search/azure-search-documents/tests/async_tests/recordings/test_index_live_async.test_get_search_filter.yaml @@ -10,9 +10,9 @@ interactions: Content-Type: - application/json User-Agent: - - azsdk-python-search-documents/1.0.0b2 Python/3.6.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - 81BF5C912304D2087DCA94B9E5020A34 + - E6523D6B24E3D5FF5244EA40EE2C8867 method: POST uri: https://search9776120b.search.windows.net/indexes('drgqefsg')/docs/search.post.search?api-version=2019-05-06-Preview response: @@ -29,24 +29,17 @@ interactions: content-encoding: gzip content-length: '441' content-type: application/json; odata.metadata=none - date: Tue, 31 Mar 2020 17:43:11 GMT - elapsed-time: '185' + date: Wed, 29 Apr 2020 23:28:19 GMT + elapsed-time: '59' expires: '-1' odata-version: '4.0' pragma: no-cache preference-applied: odata.include-annotations="*" - request-id: 179286b0-7377-11ea-92d3-5cf37071153c + request-id: 1c93fe8c-8a71-11ea-889b-8c8590507855 strict-transport-security: max-age=15724800; includeSubDomains vary: Accept-Encoding status: code: 200 message: OK - url: !!python/object/new:yarl.URL - state: !!python/tuple - - !!python/object/new:urllib.parse.SplitResult - - https - - search9776120b.search.windows.net - - /indexes('drgqefsg')/docs/search.post.search - - api-version=2019-05-06-Preview - - '' + url: https://search9776120b.search.windows.net/indexes('drgqefsg')/docs/search.post.search?api-version=2019-05-06-Preview version: 1 diff --git a/sdk/search/azure-search-documents/tests/async_tests/recordings/test_index_live_async.test_get_search_simple.yaml b/sdk/search/azure-search-documents/tests/async_tests/recordings/test_index_live_async.test_get_search_simple.yaml index 5f20663a7b0c..1d68f4f95738 100644 --- a/sdk/search/azure-search-documents/tests/async_tests/recordings/test_index_live_async.test_get_search_simple.yaml +++ b/sdk/search/azure-search-documents/tests/async_tests/recordings/test_index_live_async.test_get_search_simple.yaml @@ -9,9 +9,9 @@ interactions: Content-Type: - application/json User-Agent: - - azsdk-python-search-documents/1.0.0b2 Python/3.6.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - FB1BC0FBDA7D6157D105BF00F952E069 + - 7AB8FFBA7B9EDE0DF1F968DDEDB0DE83 method: POST uri: https://search97bd120f.search.windows.net/indexes('drgqefsg')/docs/search.post.search?api-version=2019-05-06-Preview response: @@ -65,26 +65,19 @@ interactions: content-encoding: gzip content-length: '2377' content-type: application/json; odata.metadata=none - date: Tue, 31 Mar 2020 17:43:27 GMT - elapsed-time: '218' + date: Wed, 29 Apr 2020 23:28:31 GMT + elapsed-time: '125' expires: '-1' odata-version: '4.0' pragma: no-cache preference-applied: odata.include-annotations="*" - request-id: 20aa627a-7377-11ea-a8c8-5cf37071153c + request-id: 2345b16c-8a71-11ea-889b-8c8590507855 strict-transport-security: max-age=15724800; includeSubDomains vary: Accept-Encoding status: code: 200 message: OK - url: !!python/object/new:yarl.URL - state: !!python/tuple - - !!python/object/new:urllib.parse.SplitResult - - https - - search97bd120f.search.windows.net - - /indexes('drgqefsg')/docs/search.post.search - - api-version=2019-05-06-Preview - - '' + url: https://search97bd120f.search.windows.net/indexes('drgqefsg')/docs/search.post.search?api-version=2019-05-06-Preview - request: body: '{"search": "motel"}' headers: @@ -95,9 +88,9 @@ interactions: Content-Type: - application/json User-Agent: - - azsdk-python-search-documents/1.0.0b2 Python/3.6.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - FB1BC0FBDA7D6157D105BF00F952E069 + - 7AB8FFBA7B9EDE0DF1F968DDEDB0DE83 method: POST uri: https://search97bd120f.search.windows.net/indexes('drgqefsg')/docs/search.post.search?api-version=2019-05-06-Preview response: @@ -127,24 +120,17 @@ interactions: content-encoding: gzip content-length: '1271' content-type: application/json; odata.metadata=none - date: Tue, 31 Mar 2020 17:43:27 GMT - elapsed-time: '9' + date: Wed, 29 Apr 2020 23:28:31 GMT + elapsed-time: '7' expires: '-1' odata-version: '4.0' pragma: no-cache preference-applied: odata.include-annotations="*" - request-id: 20f28f7a-7377-11ea-b67d-5cf37071153c + request-id: 236960f8-8a71-11ea-889b-8c8590507855 strict-transport-security: max-age=15724800; includeSubDomains vary: Accept-Encoding status: code: 200 message: OK - url: !!python/object/new:yarl.URL - state: !!python/tuple - - !!python/object/new:urllib.parse.SplitResult - - https - - search97bd120f.search.windows.net - - /indexes('drgqefsg')/docs/search.post.search - - api-version=2019-05-06-Preview - - '' + url: https://search97bd120f.search.windows.net/indexes('drgqefsg')/docs/search.post.search?api-version=2019-05-06-Preview version: 1 diff --git a/sdk/search/azure-search-documents/tests/async_tests/recordings/test_index_live_async.test_merge_documents_existing.yaml b/sdk/search/azure-search-documents/tests/async_tests/recordings/test_index_live_async.test_merge_documents_existing.yaml index 053d3e46b690..8caccce7bc5d 100644 --- a/sdk/search/azure-search-documents/tests/async_tests/recordings/test_index_live_async.test_merge_documents_existing.yaml +++ b/sdk/search/azure-search-documents/tests/async_tests/recordings/test_index_live_async.test_merge_documents_existing.yaml @@ -10,9 +10,9 @@ interactions: Content-Type: - application/json User-Agent: - - azsdk-python-search-documents/1.0.0b2 Python/3.6.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - 9EBB2CB4D0A153C27EA50A3A9A83AC70 + - 997EA709A1A4230F4F928B43047A5B90 method: POST uri: https://search2308151c.search.windows.net/indexes('drgqefsg')/docs/search.index?api-version=2019-05-06-Preview response: @@ -23,35 +23,28 @@ interactions: content-encoding: gzip content-length: '190' content-type: application/json; odata.metadata=none - date: Tue, 31 Mar 2020 17:43:45 GMT - elapsed-time: '149' + date: Wed, 29 Apr 2020 23:28:43 GMT + elapsed-time: '93' expires: '-1' odata-version: '4.0' pragma: no-cache preference-applied: odata.include-annotations="*" - request-id: 2bef59e8-7377-11ea-9480-5cf37071153c + request-id: 2a1fec32-8a71-11ea-889b-8c8590507855 strict-transport-security: max-age=15724800; includeSubDomains vary: Accept-Encoding status: code: 200 message: OK - url: !!python/object/new:yarl.URL - state: !!python/tuple - - !!python/object/new:urllib.parse.SplitResult - - https - - search2308151c.search.windows.net - - /indexes('drgqefsg')/docs/search.index - - api-version=2019-05-06-Preview - - '' + url: https://search2308151c.search.windows.net/indexes('drgqefsg')/docs/search.index?api-version=2019-05-06-Preview - request: body: null headers: Accept: - application/json;odata.metadata=none User-Agent: - - azsdk-python-search-documents/1.0.0b2 Python/3.6.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - 9EBB2CB4D0A153C27EA50A3A9A83AC70 + - 997EA709A1A4230F4F928B43047A5B90 method: GET uri: https://search2308151c.search.windows.net/indexes('drgqefsg')/docs/$count?api-version=2019-05-06-Preview response: @@ -62,35 +55,28 @@ interactions: content-encoding: gzip content-length: '127' content-type: text/plain - date: Tue, 31 Mar 2020 17:43:49 GMT - elapsed-time: '8' + date: Wed, 29 Apr 2020 23:28:45 GMT + elapsed-time: '4' expires: '-1' odata-version: '4.0' pragma: no-cache preference-applied: odata.include-annotations="*" - request-id: 2df86d0a-7377-11ea-9605-5cf37071153c + request-id: 2c058994-8a71-11ea-889b-8c8590507855 strict-transport-security: max-age=15724800; includeSubDomains vary: Accept-Encoding status: code: 200 message: OK - url: !!python/object/new:yarl.URL - state: !!python/tuple - - !!python/object/new:urllib.parse.SplitResult - - https - - search2308151c.search.windows.net - - /indexes('drgqefsg')/docs/$count - - api-version=2019-05-06-Preview - - '' + url: https://search2308151c.search.windows.net/indexes('drgqefsg')/docs/$count?api-version=2019-05-06-Preview - request: body: null headers: Accept: - application/json;odata.metadata=none User-Agent: - - azsdk-python-search-documents/1.0.0b2 Python/3.6.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - 9EBB2CB4D0A153C27EA50A3A9A83AC70 + - 997EA709A1A4230F4F928B43047A5B90 method: GET uri: https://search2308151c.search.windows.net/indexes('drgqefsg')/docs('3')?api-version=2019-05-06-Preview response: @@ -102,35 +88,28 @@ interactions: content-encoding: gzip content-length: '438' content-type: application/json; odata.metadata=none - date: Tue, 31 Mar 2020 17:43:49 GMT - elapsed-time: '19' + date: Wed, 29 Apr 2020 23:28:45 GMT + elapsed-time: '11' expires: '-1' odata-version: '4.0' pragma: no-cache preference-applied: odata.include-annotations="*" - request-id: 2e057bc0-7377-11ea-9f9e-5cf37071153c + request-id: 2c09faec-8a71-11ea-889b-8c8590507855 strict-transport-security: max-age=15724800; includeSubDomains vary: Accept-Encoding status: code: 200 message: OK - url: !!python/object/new:yarl.URL - state: !!python/tuple - - !!python/object/new:urllib.parse.SplitResult - - https - - search2308151c.search.windows.net - - /indexes('drgqefsg')/docs('3') - - api-version=2019-05-06-Preview - - '' + url: https://search2308151c.search.windows.net/indexes('drgqefsg')/docs('3')?api-version=2019-05-06-Preview - request: body: null headers: Accept: - application/json;odata.metadata=none User-Agent: - - azsdk-python-search-documents/1.0.0b2 Python/3.6.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - 9EBB2CB4D0A153C27EA50A3A9A83AC70 + - 997EA709A1A4230F4F928B43047A5B90 method: GET uri: https://search2308151c.search.windows.net/indexes('drgqefsg')/docs('4')?api-version=2019-05-06-Preview response: @@ -142,24 +121,17 @@ interactions: content-encoding: gzip content-length: '422' content-type: application/json; odata.metadata=none - date: Tue, 31 Mar 2020 17:43:49 GMT - elapsed-time: '9' + date: Wed, 29 Apr 2020 23:28:45 GMT + elapsed-time: '4' expires: '-1' odata-version: '4.0' pragma: no-cache preference-applied: odata.include-annotations="*" - request-id: 2e141266-7377-11ea-bb71-5cf37071153c + request-id: 2c0f8278-8a71-11ea-889b-8c8590507855 strict-transport-security: max-age=15724800; includeSubDomains vary: Accept-Encoding status: code: 200 message: OK - url: !!python/object/new:yarl.URL - state: !!python/tuple - - !!python/object/new:urllib.parse.SplitResult - - https - - search2308151c.search.windows.net - - /indexes('drgqefsg')/docs('4') - - api-version=2019-05-06-Preview - - '' + url: https://search2308151c.search.windows.net/indexes('drgqefsg')/docs('4')?api-version=2019-05-06-Preview version: 1 diff --git a/sdk/search/azure-search-documents/tests/async_tests/recordings/test_index_live_async.test_merge_documents_missing.yaml b/sdk/search/azure-search-documents/tests/async_tests/recordings/test_index_live_async.test_merge_documents_missing.yaml index a32799413ae4..d1d8ea178ebe 100644 --- a/sdk/search/azure-search-documents/tests/async_tests/recordings/test_index_live_async.test_merge_documents_missing.yaml +++ b/sdk/search/azure-search-documents/tests/async_tests/recordings/test_index_live_async.test_merge_documents_missing.yaml @@ -10,9 +10,9 @@ interactions: Content-Type: - application/json User-Agent: - - azsdk-python-search-documents/1.0.0b2 Python/3.6.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - 810746AF80D7347379C5970815F0C2FA + - 1B247C95470A5FEF7DE61B9207A271A9 method: POST uri: https://searchdde14ab.search.windows.net/indexes('drgqefsg')/docs/search.index?api-version=2019-05-06-Preview response: @@ -24,35 +24,28 @@ interactions: content-encoding: gzip content-length: '225' content-type: application/json; odata.metadata=none - date: Tue, 31 Mar 2020 17:44:04 GMT - elapsed-time: '172' + date: Wed, 29 Apr 2020 23:28:57 GMT + elapsed-time: '202' expires: '-1' odata-version: '4.0' pragma: no-cache preference-applied: odata.include-annotations="*" - request-id: 3700fff4-7377-11ea-b38d-5cf37071153c + request-id: 32e4ec96-8a71-11ea-889b-8c8590507855 strict-transport-security: max-age=15724800; includeSubDomains vary: Accept-Encoding status: code: 207 message: Multi-Status - url: !!python/object/new:yarl.URL - state: !!python/tuple - - !!python/object/new:urllib.parse.SplitResult - - https - - searchdde14ab.search.windows.net - - /indexes('drgqefsg')/docs/search.index - - api-version=2019-05-06-Preview - - '' + url: https://searchdde14ab.search.windows.net/indexes('drgqefsg')/docs/search.index?api-version=2019-05-06-Preview - request: body: null headers: Accept: - application/json;odata.metadata=none User-Agent: - - azsdk-python-search-documents/1.0.0b2 Python/3.6.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - 810746AF80D7347379C5970815F0C2FA + - 1B247C95470A5FEF7DE61B9207A271A9 method: GET uri: https://searchdde14ab.search.windows.net/indexes('drgqefsg')/docs/$count?api-version=2019-05-06-Preview response: @@ -63,35 +56,28 @@ interactions: content-encoding: gzip content-length: '127' content-type: text/plain - date: Tue, 31 Mar 2020 17:44:07 GMT - elapsed-time: '3' + date: Wed, 29 Apr 2020 23:29:01 GMT + elapsed-time: '4' expires: '-1' odata-version: '4.0' pragma: no-cache preference-applied: odata.include-annotations="*" - request-id: 390b28b6-7377-11ea-bc59-5cf37071153c + request-id: 34dc2c26-8a71-11ea-889b-8c8590507855 strict-transport-security: max-age=15724800; includeSubDomains vary: Accept-Encoding status: code: 200 message: OK - url: !!python/object/new:yarl.URL - state: !!python/tuple - - !!python/object/new:urllib.parse.SplitResult - - https - - searchdde14ab.search.windows.net - - /indexes('drgqefsg')/docs/$count - - api-version=2019-05-06-Preview - - '' + url: https://searchdde14ab.search.windows.net/indexes('drgqefsg')/docs/$count?api-version=2019-05-06-Preview - request: body: null headers: Accept: - application/json;odata.metadata=none User-Agent: - - azsdk-python-search-documents/1.0.0b2 Python/3.6.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - 810746AF80D7347379C5970815F0C2FA + - 1B247C95470A5FEF7DE61B9207A271A9 method: GET uri: https://searchdde14ab.search.windows.net/indexes('drgqefsg')/docs('1000')?api-version=2019-05-06-Preview response: @@ -100,32 +86,25 @@ interactions: headers: cache-control: no-cache content-length: '0' - date: Tue, 31 Mar 2020 17:44:07 GMT - elapsed-time: '5' + date: Wed, 29 Apr 2020 23:29:01 GMT + elapsed-time: '3' expires: '-1' pragma: no-cache - request-id: 391513d2-7377-11ea-ad3e-5cf37071153c + request-id: 34e0f814-8a71-11ea-889b-8c8590507855 strict-transport-security: max-age=15724800; includeSubDomains status: code: 404 message: Not Found - url: !!python/object/new:yarl.URL - state: !!python/tuple - - !!python/object/new:urllib.parse.SplitResult - - https - - searchdde14ab.search.windows.net - - /indexes('drgqefsg')/docs('1000') - - api-version=2019-05-06-Preview - - '' + url: https://searchdde14ab.search.windows.net/indexes('drgqefsg')/docs('1000')?api-version=2019-05-06-Preview - request: body: null headers: Accept: - application/json;odata.metadata=none User-Agent: - - azsdk-python-search-documents/1.0.0b2 Python/3.6.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - 810746AF80D7347379C5970815F0C2FA + - 1B247C95470A5FEF7DE61B9207A271A9 method: GET uri: https://searchdde14ab.search.windows.net/indexes('drgqefsg')/docs('4')?api-version=2019-05-06-Preview response: @@ -137,24 +116,17 @@ interactions: content-encoding: gzip content-length: '422' content-type: application/json; odata.metadata=none - date: Tue, 31 Mar 2020 17:44:07 GMT - elapsed-time: '12' + date: Wed, 29 Apr 2020 23:29:01 GMT + elapsed-time: '8' expires: '-1' odata-version: '4.0' pragma: no-cache preference-applied: odata.include-annotations="*" - request-id: 391ebe4c-7377-11ea-81e1-5cf37071153c + request-id: 34e5f63e-8a71-11ea-889b-8c8590507855 strict-transport-security: max-age=15724800; includeSubDomains vary: Accept-Encoding status: code: 200 message: OK - url: !!python/object/new:yarl.URL - state: !!python/tuple - - !!python/object/new:urllib.parse.SplitResult - - https - - searchdde14ab.search.windows.net - - /indexes('drgqefsg')/docs('4') - - api-version=2019-05-06-Preview - - '' + url: https://searchdde14ab.search.windows.net/indexes('drgqefsg')/docs('4')?api-version=2019-05-06-Preview version: 1 diff --git a/sdk/search/azure-search-documents/tests/async_tests/recordings/test_index_live_async.test_merge_or_upload_documents.yaml b/sdk/search/azure-search-documents/tests/async_tests/recordings/test_index_live_async.test_merge_or_upload_documents.yaml index 7153c4447802..faedb3bcf0c3 100644 --- a/sdk/search/azure-search-documents/tests/async_tests/recordings/test_index_live_async.test_merge_or_upload_documents.yaml +++ b/sdk/search/azure-search-documents/tests/async_tests/recordings/test_index_live_async.test_merge_or_upload_documents.yaml @@ -10,9 +10,9 @@ interactions: Content-Type: - application/json User-Agent: - - azsdk-python-search-documents/1.0.0b2 Python/3.6.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - 1094781DFE87858510213BBE7E0461DD + - DF3A01F67870E9C3EA75AA1D1DCE0A9C method: POST uri: https://search37e51576.search.windows.net/indexes('drgqefsg')/docs/search.index?api-version=2019-05-06-Preview response: @@ -23,35 +23,28 @@ interactions: content-encoding: gzip content-length: '196' content-type: application/json; odata.metadata=none - date: Tue, 31 Mar 2020 17:44:24 GMT - elapsed-time: '166' + date: Wed, 29 Apr 2020 23:29:12 GMT + elapsed-time: '88' expires: '-1' odata-version: '4.0' pragma: no-cache preference-applied: odata.include-annotations="*" - request-id: 42ddec5c-7377-11ea-b15e-5cf37071153c + request-id: 3c2fa872-8a71-11ea-889b-8c8590507855 strict-transport-security: max-age=15724800; includeSubDomains vary: Accept-Encoding status: code: 200 message: OK - url: !!python/object/new:yarl.URL - state: !!python/tuple - - !!python/object/new:urllib.parse.SplitResult - - https - - search37e51576.search.windows.net - - /indexes('drgqefsg')/docs/search.index - - api-version=2019-05-06-Preview - - '' + url: https://search37e51576.search.windows.net/indexes('drgqefsg')/docs/search.index?api-version=2019-05-06-Preview - request: body: null headers: Accept: - application/json;odata.metadata=none User-Agent: - - azsdk-python-search-documents/1.0.0b2 Python/3.6.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - 1094781DFE87858510213BBE7E0461DD + - DF3A01F67870E9C3EA75AA1D1DCE0A9C method: GET uri: https://search37e51576.search.windows.net/indexes('drgqefsg')/docs/$count?api-version=2019-05-06-Preview response: @@ -62,35 +55,28 @@ interactions: content-encoding: gzip content-length: '127' content-type: text/plain - date: Tue, 31 Mar 2020 17:44:27 GMT - elapsed-time: '8' + date: Wed, 29 Apr 2020 23:29:16 GMT + elapsed-time: '4' expires: '-1' odata-version: '4.0' pragma: no-cache preference-applied: odata.include-annotations="*" - request-id: 44ec1e1a-7377-11ea-bb04-5cf37071153c + request-id: 3e151c4e-8a71-11ea-889b-8c8590507855 strict-transport-security: max-age=15724800; includeSubDomains vary: Accept-Encoding status: code: 200 message: OK - url: !!python/object/new:yarl.URL - state: !!python/tuple - - !!python/object/new:urllib.parse.SplitResult - - https - - search37e51576.search.windows.net - - /indexes('drgqefsg')/docs/$count - - api-version=2019-05-06-Preview - - '' + url: https://search37e51576.search.windows.net/indexes('drgqefsg')/docs/$count?api-version=2019-05-06-Preview - request: body: null headers: Accept: - application/json;odata.metadata=none User-Agent: - - azsdk-python-search-documents/1.0.0b2 Python/3.6.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - 1094781DFE87858510213BBE7E0461DD + - DF3A01F67870E9C3EA75AA1D1DCE0A9C method: GET uri: https://search37e51576.search.windows.net/indexes('drgqefsg')/docs('1000')?api-version=2019-05-06-Preview response: @@ -101,35 +87,28 @@ interactions: content-encoding: gzip content-length: '257' content-type: application/json; odata.metadata=none - date: Tue, 31 Mar 2020 17:44:27 GMT - elapsed-time: '7' + date: Wed, 29 Apr 2020 23:29:16 GMT + elapsed-time: '6' expires: '-1' odata-version: '4.0' pragma: no-cache preference-applied: odata.include-annotations="*" - request-id: 44f82ae6-7377-11ea-bbf5-5cf37071153c + request-id: 3e19a96c-8a71-11ea-889b-8c8590507855 strict-transport-security: max-age=15724800; includeSubDomains vary: Accept-Encoding status: code: 200 message: OK - url: !!python/object/new:yarl.URL - state: !!python/tuple - - !!python/object/new:urllib.parse.SplitResult - - https - - search37e51576.search.windows.net - - /indexes('drgqefsg')/docs('1000') - - api-version=2019-05-06-Preview - - '' + url: https://search37e51576.search.windows.net/indexes('drgqefsg')/docs('1000')?api-version=2019-05-06-Preview - request: body: null headers: Accept: - application/json;odata.metadata=none User-Agent: - - azsdk-python-search-documents/1.0.0b2 Python/3.6.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - 1094781DFE87858510213BBE7E0461DD + - DF3A01F67870E9C3EA75AA1D1DCE0A9C method: GET uri: https://search37e51576.search.windows.net/indexes('drgqefsg')/docs('4')?api-version=2019-05-06-Preview response: @@ -141,24 +120,17 @@ interactions: content-encoding: gzip content-length: '422' content-type: application/json; odata.metadata=none - date: Tue, 31 Mar 2020 17:44:27 GMT - elapsed-time: '4' + date: Wed, 29 Apr 2020 23:29:16 GMT + elapsed-time: '5' expires: '-1' odata-version: '4.0' pragma: no-cache preference-applied: odata.include-annotations="*" - request-id: 45030af8-7377-11ea-9506-5cf37071153c + request-id: 3e1e857c-8a71-11ea-889b-8c8590507855 strict-transport-security: max-age=15724800; includeSubDomains vary: Accept-Encoding status: code: 200 message: OK - url: !!python/object/new:yarl.URL - state: !!python/tuple - - !!python/object/new:urllib.parse.SplitResult - - https - - search37e51576.search.windows.net - - /indexes('drgqefsg')/docs('4') - - api-version=2019-05-06-Preview - - '' + url: https://search37e51576.search.windows.net/indexes('drgqefsg')/docs('4')?api-version=2019-05-06-Preview version: 1 diff --git a/sdk/search/azure-search-documents/tests/async_tests/recordings/test_index_live_async.test_suggest.yaml b/sdk/search/azure-search-documents/tests/async_tests/recordings/test_index_live_async.test_suggest.yaml index d293fc9b4c35..38a68f8aaa39 100644 --- a/sdk/search/azure-search-documents/tests/async_tests/recordings/test_index_live_async.test_suggest.yaml +++ b/sdk/search/azure-search-documents/tests/async_tests/recordings/test_index_live_async.test_suggest.yaml @@ -9,9 +9,9 @@ interactions: Content-Type: - application/json User-Agent: - - azsdk-python-search-documents/1.0.0b2 Python/3.6.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - 80252BE93B3CE5D5E8CB00FD1D5E4E95 + - 7399C73616B0BBA23C477AA593479766 method: POST uri: https://searchf6640e13.search.windows.net/indexes('drgqefsg')/docs/search.post.suggest?api-version=2019-05-06-Preview response: @@ -23,24 +23,17 @@ interactions: content-encoding: gzip content-length: '216' content-type: application/json; odata.metadata=none - date: Tue, 31 Mar 2020 17:44:44 GMT - elapsed-time: '117' + date: Wed, 29 Apr 2020 23:29:27 GMT + elapsed-time: '76' expires: '-1' odata-version: '4.0' pragma: no-cache preference-applied: odata.include-annotations="*" - request-id: 4f1eed7e-7377-11ea-8e1d-5cf37071153c + request-id: 44aeb0c4-8a71-11ea-889b-8c8590507855 strict-transport-security: max-age=15724800; includeSubDomains vary: Accept-Encoding status: code: 200 message: OK - url: !!python/object/new:yarl.URL - state: !!python/tuple - - !!python/object/new:urllib.parse.SplitResult - - https - - searchf6640e13.search.windows.net - - /indexes('drgqefsg')/docs/search.post.suggest - - api-version=2019-05-06-Preview - - '' + url: https://searchf6640e13.search.windows.net/indexes('drgqefsg')/docs/search.post.suggest?api-version=2019-05-06-Preview version: 1 diff --git a/sdk/search/azure-search-documents/tests/async_tests/recordings/test_index_live_async.test_upload_documents_existing.yaml b/sdk/search/azure-search-documents/tests/async_tests/recordings/test_index_live_async.test_upload_documents_existing.yaml index b8d7329db352..1fb5d4bba5b7 100644 --- a/sdk/search/azure-search-documents/tests/async_tests/recordings/test_index_live_async.test_upload_documents_existing.yaml +++ b/sdk/search/azure-search-documents/tests/async_tests/recordings/test_index_live_async.test_upload_documents_existing.yaml @@ -11,9 +11,9 @@ interactions: Content-Type: - application/json User-Agent: - - azsdk-python-search-documents/1.0.0b2 Python/3.6.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - B2233EE847CC534887D808907E7DC3E1 + - F47F7007381641D41B993D937AF79882 method: POST uri: https://search399b1591.search.windows.net/indexes('drgqefsg')/docs/search.index?api-version=2019-05-06-Preview response: @@ -24,24 +24,17 @@ interactions: content-encoding: gzip content-length: '196' content-type: application/json; odata.metadata=none - date: Tue, 31 Mar 2020 17:45:02 GMT - elapsed-time: '159' + date: Wed, 29 Apr 2020 23:29:44 GMT + elapsed-time: '87' expires: '-1' odata-version: '4.0' pragma: no-cache preference-applied: odata.include-annotations="*" - request-id: 59789410-7377-11ea-a5fd-5cf37071153c + request-id: 4e984b4a-8a71-11ea-889b-8c8590507855 strict-transport-security: max-age=15724800; includeSubDomains vary: Accept-Encoding status: code: 200 message: OK - url: !!python/object/new:yarl.URL - state: !!python/tuple - - !!python/object/new:urllib.parse.SplitResult - - https - - search399b1591.search.windows.net - - /indexes('drgqefsg')/docs/search.index - - api-version=2019-05-06-Preview - - '' + url: https://search399b1591.search.windows.net/indexes('drgqefsg')/docs/search.index?api-version=2019-05-06-Preview version: 1 diff --git a/sdk/search/azure-search-documents/tests/async_tests/recordings/test_index_live_async.test_upload_documents_new.yaml b/sdk/search/azure-search-documents/tests/async_tests/recordings/test_index_live_async.test_upload_documents_new.yaml index bcbb6bc2ec0b..6eefefe55469 100644 --- a/sdk/search/azure-search-documents/tests/async_tests/recordings/test_index_live_async.test_upload_documents_new.yaml +++ b/sdk/search/azure-search-documents/tests/async_tests/recordings/test_index_live_async.test_upload_documents_new.yaml @@ -11,9 +11,9 @@ interactions: Content-Type: - application/json User-Agent: - - azsdk-python-search-documents/1.0.0b2 Python/3.6.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - 60F00B37FC4566AF5AF8D2B7373C0903 + - 0A3266A57EF6CCD9A3923E5ED929B490 method: POST uri: https://searchd1e61370.search.windows.net/indexes('drgqefsg')/docs/search.index?api-version=2019-05-06-Preview response: @@ -24,35 +24,28 @@ interactions: content-encoding: gzip content-length: '193' content-type: application/json; odata.metadata=none - date: Tue, 31 Mar 2020 17:45:17 GMT - elapsed-time: '172' + date: Wed, 29 Apr 2020 23:29:56 GMT + elapsed-time: '285' expires: '-1' odata-version: '4.0' pragma: no-cache preference-applied: odata.include-annotations="*" - request-id: 62fbcc6e-7377-11ea-af9b-5cf37071153c + request-id: 55e1e26c-8a71-11ea-889b-8c8590507855 strict-transport-security: max-age=15724800; includeSubDomains vary: Accept-Encoding status: code: 200 message: OK - url: !!python/object/new:yarl.URL - state: !!python/tuple - - !!python/object/new:urllib.parse.SplitResult - - https - - searchd1e61370.search.windows.net - - /indexes('drgqefsg')/docs/search.index - - api-version=2019-05-06-Preview - - '' + url: https://searchd1e61370.search.windows.net/indexes('drgqefsg')/docs/search.index?api-version=2019-05-06-Preview - request: body: null headers: Accept: - application/json;odata.metadata=none User-Agent: - - azsdk-python-search-documents/1.0.0b2 Python/3.6.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - 60F00B37FC4566AF5AF8D2B7373C0903 + - 0A3266A57EF6CCD9A3923E5ED929B490 method: GET uri: https://searchd1e61370.search.windows.net/indexes('drgqefsg')/docs/$count?api-version=2019-05-06-Preview response: @@ -63,35 +56,28 @@ interactions: content-encoding: gzip content-length: '127' content-type: text/plain - date: Tue, 31 Mar 2020 17:45:21 GMT + date: Wed, 29 Apr 2020 23:30:00 GMT elapsed-time: '4' expires: '-1' odata-version: '4.0' pragma: no-cache preference-applied: odata.include-annotations="*" - request-id: 650b24c6-7377-11ea-b742-5cf37071153c + request-id: 57f58fcc-8a71-11ea-889b-8c8590507855 strict-transport-security: max-age=15724800; includeSubDomains vary: Accept-Encoding status: code: 200 message: OK - url: !!python/object/new:yarl.URL - state: !!python/tuple - - !!python/object/new:urllib.parse.SplitResult - - https - - searchd1e61370.search.windows.net - - /indexes('drgqefsg')/docs/$count - - api-version=2019-05-06-Preview - - '' + url: https://searchd1e61370.search.windows.net/indexes('drgqefsg')/docs/$count?api-version=2019-05-06-Preview - request: body: null headers: Accept: - application/json;odata.metadata=none User-Agent: - - azsdk-python-search-documents/1.0.0b2 Python/3.6.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - 60F00B37FC4566AF5AF8D2B7373C0903 + - 0A3266A57EF6CCD9A3923E5ED929B490 method: GET uri: https://searchd1e61370.search.windows.net/indexes('drgqefsg')/docs('1000')?api-version=2019-05-06-Preview response: @@ -102,35 +88,28 @@ interactions: content-encoding: gzip content-length: '267' content-type: application/json; odata.metadata=none - date: Tue, 31 Mar 2020 17:45:21 GMT - elapsed-time: '8' + date: Wed, 29 Apr 2020 23:30:00 GMT + elapsed-time: '7' expires: '-1' odata-version: '4.0' pragma: no-cache preference-applied: odata.include-annotations="*" - request-id: 651844a4-7377-11ea-80c0-5cf37071153c + request-id: 57fa16c8-8a71-11ea-889b-8c8590507855 strict-transport-security: max-age=15724800; includeSubDomains vary: Accept-Encoding status: code: 200 message: OK - url: !!python/object/new:yarl.URL - state: !!python/tuple - - !!python/object/new:urllib.parse.SplitResult - - https - - searchd1e61370.search.windows.net - - /indexes('drgqefsg')/docs('1000') - - api-version=2019-05-06-Preview - - '' + url: https://searchd1e61370.search.windows.net/indexes('drgqefsg')/docs('1000')?api-version=2019-05-06-Preview - request: body: null headers: Accept: - application/json;odata.metadata=none User-Agent: - - azsdk-python-search-documents/1.0.0b2 Python/3.6.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - 60F00B37FC4566AF5AF8D2B7373C0903 + - 0A3266A57EF6CCD9A3923E5ED929B490 method: GET uri: https://searchd1e61370.search.windows.net/indexes('drgqefsg')/docs('1001')?api-version=2019-05-06-Preview response: @@ -141,24 +120,17 @@ interactions: content-encoding: gzip content-length: '268' content-type: application/json; odata.metadata=none - date: Tue, 31 Mar 2020 17:45:21 GMT - elapsed-time: '3' + date: Wed, 29 Apr 2020 23:30:00 GMT + elapsed-time: '4' expires: '-1' odata-version: '4.0' pragma: no-cache preference-applied: odata.include-annotations="*" - request-id: 65256402-7377-11ea-a51e-5cf37071153c + request-id: 57fef116-8a71-11ea-889b-8c8590507855 strict-transport-security: max-age=15724800; includeSubDomains vary: Accept-Encoding status: code: 200 message: OK - url: !!python/object/new:yarl.URL - state: !!python/tuple - - !!python/object/new:urllib.parse.SplitResult - - https - - searchd1e61370.search.windows.net - - /indexes('drgqefsg')/docs('1001') - - api-version=2019-05-06-Preview - - '' + url: https://searchd1e61370.search.windows.net/indexes('drgqefsg')/docs('1001')?api-version=2019-05-06-Preview version: 1 diff --git a/sdk/search/azure-search-documents/tests/async_tests/recordings/test_service_live_async.test_analyze_text.yaml b/sdk/search/azure-search-documents/tests/async_tests/recordings/test_service_live_async.test_analyze_text.yaml index aeacc2aa2b31..bc49f2601a51 100644 --- a/sdk/search/azure-search-documents/tests/async_tests/recordings/test_service_live_async.test_analyze_text.yaml +++ b/sdk/search/azure-search-documents/tests/async_tests/recordings/test_service_live_async.test_analyze_text.yaml @@ -9,9 +9,9 @@ interactions: Content-Type: - application/json User-Agent: - - azsdk-python-search-documents/1.0.0b2 Python/3.6.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - 234AD0BBA19BF3DD7C9CC9F9A17C7DD2 + - F43051603FFFF10DD5382D3E0CEA346A method: POST uri: https://search64f01102.search.windows.net/indexes('drgqefsg')/search.analyze?api-version=2019-05-06-Preview response: @@ -22,24 +22,17 @@ interactions: content-encoding: gzip content-length: '306' content-type: application/json; odata.metadata=minimal - date: Tue, 31 Mar 2020 17:45:37 GMT - elapsed-time: '125' + date: Wed, 29 Apr 2020 23:30:17 GMT + elapsed-time: '58' expires: '-1' odata-version: '4.0' pragma: no-cache preference-applied: odata.include-annotations="*" - request-id: 6e548a5c-7377-11ea-974e-5cf37071153c + request-id: 62cb6048-8a71-11ea-889b-8c8590507855 strict-transport-security: max-age=15724800; includeSubDomains vary: Accept-Encoding status: code: 200 message: OK - url: !!python/object/new:yarl.URL - state: !!python/tuple - - !!python/object/new:urllib.parse.SplitResult - - https - - search64f01102.search.windows.net - - /indexes('drgqefsg')/search.analyze - - api-version=2019-05-06-Preview - - '' + url: https://search64f01102.search.windows.net/indexes('drgqefsg')/search.analyze?api-version=2019-05-06-Preview version: 1 diff --git a/sdk/search/azure-search-documents/tests/async_tests/recordings/test_service_live_async.test_create_datasource_async.yaml b/sdk/search/azure-search-documents/tests/async_tests/recordings/test_service_live_async.test_create_datasource_async.yaml new file mode 100644 index 000000000000..81f0a2221e5d --- /dev/null +++ b/sdk/search/azure-search-documents/tests/async_tests/recordings/test_service_live_async.test_create_datasource_async.yaml @@ -0,0 +1,40 @@ +interactions: +- request: + body: '{"name": "sample-datasource", "type": "azureblob", "credentials": {"connectionString": + "DefaultEndpointsProtocol=https;AccountName=storagename;AccountKey=NzhL3hKZbJBuJ2484dPTR+xF30kYaWSSCbs2BzLgVVI1woqeST/1IgqaLm6QAOTxtGvxctSNbIR/1hW8yH+bJg==;EndpointSuffix=core.windows.net"}, + "container": {"name": "searchcontainer"}}' + headers: + Accept: + - application/json;odata.metadata=minimal + Content-Length: + - '319' + Content-Type: + - application/json + User-Agent: + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) + api-key: + - A4A43DF80FCD8A1D7FC1AEE02327E6B9 + method: POST + uri: https://search386b1565.search.windows.net/datasources?api-version=2019-05-06-Preview + response: + body: + string: '{"@odata.context":"https://search386b1565.search.windows.net/$metadata#datasources/$entity","@odata.etag":"\"0x8D7EC95A74EC6BF\"","name":"sample-datasource","description":null,"type":"azureblob","subtype":null,"credentials":{"connectionString":null},"container":{"name":"searchcontainer","query":null},"dataChangeDetectionPolicy":null,"dataDeletionDetectionPolicy":null}' + headers: + cache-control: no-cache + content-length: '370' + content-type: application/json; odata.metadata=minimal + date: Wed, 29 Apr 2020 23:32:59 GMT + elapsed-time: '32' + etag: W/"0x8D7EC95A74EC6BF" + expires: '-1' + location: https://search386b1565.search.windows.net/datasources('sample-datasource')?api-version=2019-05-06-Preview + odata-version: '4.0' + pragma: no-cache + preference-applied: odata.include-annotations="*" + request-id: c2e8e3ec-8a71-11ea-889b-8c8590507855 + strict-transport-security: max-age=15724800; includeSubDomains + status: + code: 201 + message: Created + url: https://search386b1565.search.windows.net/datasources?api-version=2019-05-06-Preview +version: 1 diff --git a/sdk/search/azure-search-documents/tests/async_tests/recordings/test_service_live_async.test_create_index.yaml b/sdk/search/azure-search-documents/tests/async_tests/recordings/test_service_live_async.test_create_index.yaml index af884f635ec0..5be4f2d2f576 100644 --- a/sdk/search/azure-search-documents/tests/async_tests/recordings/test_service_live_async.test_create_index.yaml +++ b/sdk/search/azure-search-documents/tests/async_tests/recordings/test_service_live_async.test_create_index.yaml @@ -12,127 +12,30 @@ interactions: Content-Type: - application/json User-Agent: - - azsdk-python-search-documents/1.0.0b2 Python/3.6.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - ADFE12FCFE07036BD4D797E726C00320 + - 2FAED7B0C4D2327B672209097091112D method: POST uri: https://search640f10d5.search.windows.net/indexes?api-version=2019-05-06-Preview response: body: - string: '{"@odata.context":"https://search640f10d5.search.windows.net/$metadata#indexes/$entity","@odata.etag":"\"0x8D7D59B5D3AD4E0\"","name":"hotels","defaultScoringProfile":null,"fields":[{"name":"hotelId","type":"Edm.String","searchable":false,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":true,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"baseRate","type":"Edm.Double","searchable":false,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]}],"scoringProfiles":[{"name":"MyProfile","functionAggregation":null,"text":null,"functions":[]}],"corsOptions":{"allowedOrigins":["*"],"maxAgeInSeconds":60},"suggesters":[],"analyzers":[],"tokenizers":[],"tokenFilters":[],"charFilters":[],"encryptionKey":null,"similarity":null}' + string: '{"@odata.context":"https://search640f10d5.search.windows.net/$metadata#indexes/$entity","@odata.etag":"\"0x8D7EC954E6DE3AF\"","name":"hotels","defaultScoringProfile":null,"fields":[{"name":"hotelId","type":"Edm.String","searchable":false,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":true,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"baseRate","type":"Edm.Double","searchable":false,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]}],"scoringProfiles":[{"name":"MyProfile","functionAggregation":null,"text":null,"functions":[]}],"corsOptions":{"allowedOrigins":["*"],"maxAgeInSeconds":60},"suggesters":[],"analyzers":[],"tokenizers":[],"tokenFilters":[],"charFilters":[],"encryptionKey":null,"similarity":null}' headers: cache-control: no-cache content-length: '890' content-type: application/json; odata.metadata=minimal - date: Tue, 31 Mar 2020 17:45:55 GMT - elapsed-time: '3574' - etag: W/"0x8D7D59B5D3AD4E0" + date: Wed, 29 Apr 2020 23:30:30 GMT + elapsed-time: '539' + etag: W/"0x8D7EC954E6DE3AF" expires: '-1' - location: - - h - - t - - t - - p - - s - - ':' - - / - - / - - s - - e - - a - - r - - c - - h - - '6' - - '4' - - '0' - - f - - '1' - - '0' - - d - - '5' - - . - - s - - e - - a - - r - - c - - h - - . - - w - - i - - n - - d - - o - - w - - s - - . - - n - - e - - t - - / - - i - - n - - d - - e - - x - - e - - s - - ( - - '''' - - h - - o - - t - - e - - l - - s - - '''' - - ) - - '?' - - a - - p - - i - - '-' - - v - - e - - r - - s - - i - - o - - n - - '=' - - '2' - - '0' - - '1' - - '9' - - '-' - - '0' - - '5' - - '-' - - '0' - - '6' - - '-' - - P - - r - - e - - v - - i - - e - - w + location: https://search640f10d5.search.windows.net/indexes('hotels')?api-version=2019-05-06-Preview odata-version: '4.0' pragma: no-cache preference-applied: odata.include-annotations="*" - request-id: 77483622-7377-11ea-a7c0-5cf37071153c + request-id: 69c62a04-8a71-11ea-889b-8c8590507855 strict-transport-security: max-age=15724800; includeSubDomains status: code: 201 message: Created - url: !!python/object/new:yarl.URL - state: !!python/tuple - - !!python/object/new:urllib.parse.SplitResult - - https - - search640f10d5.search.windows.net - - /indexes - - api-version=2019-05-06-Preview - - '' + url: https://search640f10d5.search.windows.net/indexes?api-version=2019-05-06-Preview version: 1 diff --git a/sdk/search/azure-search-documents/tests/async_tests/recordings/test_service_live_async.test_create_or_update_datasource_async.yaml b/sdk/search/azure-search-documents/tests/async_tests/recordings/test_service_live_async.test_create_or_update_datasource_async.yaml new file mode 100644 index 000000000000..3aab743a1793 --- /dev/null +++ b/sdk/search/azure-search-documents/tests/async_tests/recordings/test_service_live_async.test_create_or_update_datasource_async.yaml @@ -0,0 +1,178 @@ +interactions: +- request: + body: '{"name": "sample-datasource", "type": "azureblob", "credentials": {"connectionString": + "DefaultEndpointsProtocol=https;AccountName=storagename;AccountKey=NzhL3hKZbJBuJ2484dPTR+xF30kYaWSSCbs2BzLgVVI1woqeST/1IgqaLm6QAOTxtGvxctSNbIR/1hW8yH+bJg==;EndpointSuffix=core.windows.net"}, + "container": {"name": "searchcontainer"}}' + headers: + Accept: + - application/json;odata.metadata=minimal + Content-Length: + - '319' + Content-Type: + - application/json + User-Agent: + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) + api-key: + - F19957B5A218B7469E9FA58A5466BFB5 + method: POST + uri: https://search251c1987.search.windows.net/datasources?api-version=2019-05-06-Preview + response: + body: + string: '{"@odata.context":"https://search251c1987.search.windows.net/$metadata#datasources/$entity","@odata.etag":"\"0x8D7EC95AE9030E5\"","name":"sample-datasource","description":null,"type":"azureblob","subtype":null,"credentials":{"connectionString":null},"container":{"name":"searchcontainer","query":null},"dataChangeDetectionPolicy":null,"dataDeletionDetectionPolicy":null}' + headers: + cache-control: no-cache + content-length: '370' + content-type: application/json; odata.metadata=minimal + date: Wed, 29 Apr 2020 23:33:11 GMT + elapsed-time: '63' + etag: W/"0x8D7EC95AE9030E5" + expires: '-1' + location: https://search251c1987.search.windows.net/datasources('sample-datasource')?api-version=2019-05-06-Preview + odata-version: '4.0' + pragma: no-cache + preference-applied: odata.include-annotations="*" + request-id: ca249688-8a71-11ea-889b-8c8590507855 + strict-transport-security: max-age=15724800; includeSubDomains + status: + code: 201 + message: Created + url: https://search251c1987.search.windows.net/datasources?api-version=2019-05-06-Preview +- request: + body: null + headers: + Accept: + - application/json;odata.metadata=minimal + User-Agent: + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) + api-key: + - F19957B5A218B7469E9FA58A5466BFB5 + method: GET + uri: https://search251c1987.search.windows.net/datasources?api-version=2019-05-06-Preview + response: + body: + string: '{"@odata.context":"https://search251c1987.search.windows.net/$metadata#datasources","value":[{"@odata.etag":"\"0x8D7EC95AE9030E5\"","name":"sample-datasource","description":null,"type":"azureblob","subtype":null,"credentials":{"connectionString":null},"container":{"name":"searchcontainer","query":null},"dataChangeDetectionPolicy":null,"dataDeletionDetectionPolicy":null}]}' + headers: + cache-control: no-cache + content-encoding: gzip + content-length: '365' + content-type: application/json; odata.metadata=minimal + date: Wed, 29 Apr 2020 23:33:11 GMT + elapsed-time: '10' + expires: '-1' + odata-version: '4.0' + pragma: no-cache + preference-applied: odata.include-annotations="*" + request-id: ca3d3058-8a71-11ea-889b-8c8590507855 + strict-transport-security: max-age=15724800; includeSubDomains + vary: Accept-Encoding + status: + code: 200 + message: OK + url: https://search251c1987.search.windows.net/datasources?api-version=2019-05-06-Preview +- request: + body: '{"name": "sample-datasource", "description": "updated", "type": "azureblob", + "credentials": {"connectionString": "DefaultEndpointsProtocol=https;AccountName=storagename;AccountKey=NzhL3hKZbJBuJ2484dPTR+xF30kYaWSSCbs2BzLgVVI1woqeST/1IgqaLm6QAOTxtGvxctSNbIR/1hW8yH+bJg==;EndpointSuffix=core.windows.net"}, + "container": {"name": "searchcontainer"}}' + headers: + Accept: + - application/json;odata.metadata=minimal + Content-Length: + - '345' + Content-Type: + - application/json + Prefer: + - return=representation + User-Agent: + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) + api-key: + - F19957B5A218B7469E9FA58A5466BFB5 + method: PUT + uri: https://search251c1987.search.windows.net/datasources('sample-datasource')?api-version=2019-05-06-Preview + response: + body: + string: '{"@odata.context":"https://search251c1987.search.windows.net/$metadata#datasources/$entity","@odata.etag":"\"0x8D7EC95AE9F4EDD\"","name":"sample-datasource","description":"updated","type":"azureblob","subtype":null,"credentials":{"connectionString":null},"container":{"name":"searchcontainer","query":null},"dataChangeDetectionPolicy":null,"dataDeletionDetectionPolicy":null}' + headers: + cache-control: no-cache + content-encoding: gzip + content-length: '365' + content-type: application/json; odata.metadata=minimal + date: Wed, 29 Apr 2020 23:33:11 GMT + elapsed-time: '36' + etag: W/"0x8D7EC95AE9F4EDD" + expires: '-1' + odata-version: '4.0' + pragma: no-cache + preference-applied: odata.include-annotations="*" + request-id: ca42a4ac-8a71-11ea-889b-8c8590507855 + strict-transport-security: max-age=15724800; includeSubDomains + vary: Accept-Encoding + status: + code: 200 + message: OK + url: https://search251c1987.search.windows.net/datasources('sample-datasource')?api-version=2019-05-06-Preview +- request: + body: null + headers: + Accept: + - application/json;odata.metadata=minimal + User-Agent: + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) + api-key: + - F19957B5A218B7469E9FA58A5466BFB5 + method: GET + uri: https://search251c1987.search.windows.net/datasources?api-version=2019-05-06-Preview + response: + body: + string: '{"@odata.context":"https://search251c1987.search.windows.net/$metadata#datasources","value":[{"@odata.etag":"\"0x8D7EC95AE9F4EDD\"","name":"sample-datasource","description":"updated","type":"azureblob","subtype":null,"credentials":{"connectionString":null},"container":{"name":"searchcontainer","query":null},"dataChangeDetectionPolicy":null,"dataDeletionDetectionPolicy":null}]}' + headers: + cache-control: no-cache + content-encoding: gzip + content-length: '371' + content-type: application/json; odata.metadata=minimal + date: Wed, 29 Apr 2020 23:33:11 GMT + elapsed-time: '41' + expires: '-1' + odata-version: '4.0' + pragma: no-cache + preference-applied: odata.include-annotations="*" + request-id: ca4c4804-8a71-11ea-889b-8c8590507855 + strict-transport-security: max-age=15724800; includeSubDomains + vary: Accept-Encoding + status: + code: 200 + message: OK + url: https://search251c1987.search.windows.net/datasources?api-version=2019-05-06-Preview +- request: + body: null + headers: + Accept: + - application/json;odata.metadata=minimal + User-Agent: + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) + api-key: + - F19957B5A218B7469E9FA58A5466BFB5 + method: GET + uri: https://search251c1987.search.windows.net/datasources('sample-datasource')?api-version=2019-05-06-Preview + response: + body: + string: '{"@odata.context":"https://search251c1987.search.windows.net/$metadata#datasources/$entity","@odata.etag":"\"0x8D7EC95AE9F4EDD\"","name":"sample-datasource","description":"updated","type":"azureblob","subtype":null,"credentials":{"connectionString":null},"container":{"name":"searchcontainer","query":null},"dataChangeDetectionPolicy":null,"dataDeletionDetectionPolicy":null}' + headers: + cache-control: no-cache + content-encoding: gzip + content-length: '365' + content-type: application/json; odata.metadata=minimal + date: Wed, 29 Apr 2020 23:33:11 GMT + elapsed-time: '7' + etag: W/"0x8D7EC95AE9F4EDD" + expires: '-1' + odata-version: '4.0' + pragma: no-cache + preference-applied: odata.include-annotations="*" + request-id: ca566f96-8a71-11ea-889b-8c8590507855 + strict-transport-security: max-age=15724800; includeSubDomains + vary: Accept-Encoding + status: + code: 200 + message: OK + url: https://search251c1987.search.windows.net/datasources('sample-datasource')?api-version=2019-05-06-Preview +version: 1 diff --git a/sdk/search/azure-search-documents/tests/async_tests/recordings/test_service_live_async.test_create_or_update_datasource_if_unchanged.yaml b/sdk/search/azure-search-documents/tests/async_tests/recordings/test_service_live_async.test_create_or_update_datasource_if_unchanged.yaml new file mode 100644 index 000000000000..84d3be04dc58 --- /dev/null +++ b/sdk/search/azure-search-documents/tests/async_tests/recordings/test_service_live_async.test_create_or_update_datasource_if_unchanged.yaml @@ -0,0 +1,145 @@ +interactions: +- request: + body: '{"name": "sample-datasource", "type": "azureblob", "credentials": {"connectionString": + "DefaultEndpointsProtocol=https;AccountName=storagename;AccountKey=NzhL3hKZbJBuJ2484dPTR+xF30kYaWSSCbs2BzLgVVI1woqeST/1IgqaLm6QAOTxtGvxctSNbIR/1hW8yH+bJg==;EndpointSuffix=core.windows.net"}, + "container": {"name": "searchcontainer"}}' + headers: + Accept: + - application/json;odata.metadata=minimal + Content-Length: + - '319' + Content-Type: + - application/json + User-Agent: + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Windows-10-10.0.17763-SP0) + api-key: + - EB07460BE71D34ECEB27F2F290910C52 + method: POST + uri: https://searche2561c44.search.windows.net/datasources?api-version=2019-05-06-Preview + response: + body: + string: '{"@odata.context":"https://searche2561c44.search.windows.net/$metadata#datasources/$entity","@odata.etag":"\"0x8D7ED71E13EFC4E\"","name":"sample-datasource","description":null,"type":"azureblob","subtype":null,"credentials":{"connectionString":null},"container":{"name":"searchcontainer","query":null},"dataChangeDetectionPolicy":null,"dataDeletionDetectionPolicy":null}' + headers: + cache-control: no-cache + content-length: '370' + content-type: application/json; odata.metadata=minimal + date: Fri, 01 May 2020 01:49:26 GMT + elapsed-time: '69' + etag: W/"0x8D7ED71E13EFC4E" + expires: '-1' + location: https://searche2561c44.search.windows.net/datasources('sample-datasource')?api-version=2019-05-06-Preview + odata-version: '4.0' + pragma: no-cache + preference-applied: odata.include-annotations="*" + request-id: fd279352-8b4d-11ea-900d-2816a845e8c6 + strict-transport-security: max-age=15724800; includeSubDomains + status: + code: 201 + message: Created + url: !!python/object/new:yarl.URL + state: !!python/tuple + - !!python/object/new:urllib.parse.SplitResult + - https + - searche2561c44.search.windows.net + - /datasources + - api-version=2019-05-06-Preview + - '' +- request: + body: '{"name": "sample-datasource", "description": "updated", "type": "azureblob", + "credentials": {"connectionString": "DefaultEndpointsProtocol=https;AccountName=storagename;AccountKey=NzhL3hKZbJBuJ2484dPTR+xF30kYaWSSCbs2BzLgVVI1woqeST/1IgqaLm6QAOTxtGvxctSNbIR/1hW8yH+bJg==;EndpointSuffix=core.windows.net"}, + "container": {"name": "searchcontainer"}}' + headers: + Accept: + - application/json;odata.metadata=minimal + Content-Length: + - '345' + Content-Type: + - application/json + Prefer: + - return=representation + User-Agent: + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Windows-10-10.0.17763-SP0) + api-key: + - EB07460BE71D34ECEB27F2F290910C52 + method: PUT + uri: https://searche2561c44.search.windows.net/datasources('sample-datasource')?api-version=2019-05-06-Preview + response: + body: + string: '{"@odata.context":"https://searche2561c44.search.windows.net/$metadata#datasources/$entity","@odata.etag":"\"0x8D7ED71E1512811\"","name":"sample-datasource","description":"updated","type":"azureblob","subtype":null,"credentials":{"connectionString":null},"container":{"name":"searchcontainer","query":null},"dataChangeDetectionPolicy":null,"dataDeletionDetectionPolicy":null}' + headers: + cache-control: no-cache + content-encoding: gzip + content-length: '365' + content-type: application/json; odata.metadata=minimal + date: Fri, 01 May 2020 01:49:26 GMT + elapsed-time: '66' + etag: W/"0x8D7ED71E1512811" + expires: '-1' + odata-version: '4.0' + pragma: no-cache + preference-applied: odata.include-annotations="*" + request-id: fd59a3da-8b4d-11ea-8749-2816a845e8c6 + strict-transport-security: max-age=15724800; includeSubDomains + vary: Accept-Encoding + status: + code: 200 + message: OK + url: !!python/object/new:yarl.URL + state: !!python/tuple + - !!python/object/new:urllib.parse.SplitResult + - https + - searche2561c44.search.windows.net + - /datasources('sample-datasource') + - api-version=2019-05-06-Preview + - '' +- request: + body: '{"name": "sample-datasource", "description": "changed", "type": "azureblob", + "credentials": {"connectionString": "DefaultEndpointsProtocol=https;AccountName=storagename;AccountKey=NzhL3hKZbJBuJ2484dPTR+xF30kYaWSSCbs2BzLgVVI1woqeST/1IgqaLm6QAOTxtGvxctSNbIR/1hW8yH+bJg==;EndpointSuffix=core.windows.net"}, + "container": {"name": "searchcontainer"}, "@odata.etag": "\"0x8D7ED71E13EFC4E\""}' + headers: + Accept: + - application/json;odata.metadata=minimal + Content-Length: + - '385' + Content-Type: + - application/json + If-Match: + - '"0x8D7ED71E13EFC4E"' + Prefer: + - return=representation + User-Agent: + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Windows-10-10.0.17763-SP0) + api-key: + - EB07460BE71D34ECEB27F2F290910C52 + method: PUT + uri: https://searche2561c44.search.windows.net/datasources('sample-datasource')?api-version=2019-05-06-Preview + response: + body: + string: '{"error":{"code":"","message":"The precondition given in one of the + request headers evaluated to false. No change was made to the resource from + this request."}}' + headers: + cache-control: no-cache + content-language: en + content-length: '160' + content-type: application/json; odata.metadata=minimal + date: Fri, 01 May 2020 01:49:26 GMT + elapsed-time: '5' + expires: '-1' + odata-version: '4.0' + pragma: no-cache + preference-applied: odata.include-annotations="*" + request-id: fd6bc01c-8b4d-11ea-a9e1-2816a845e8c6 + strict-transport-security: max-age=15724800; includeSubDomains + status: + code: 412 + message: Precondition Failed + url: !!python/object/new:yarl.URL + state: !!python/tuple + - !!python/object/new:urllib.parse.SplitResult + - https + - searche2561c44.search.windows.net + - /datasources('sample-datasource') + - api-version=2019-05-06-Preview + - '' +version: 1 diff --git a/sdk/search/azure-search-documents/tests/async_tests/recordings/test_service_live_async.test_create_or_update_index.yaml b/sdk/search/azure-search-documents/tests/async_tests/recordings/test_service_live_async.test_create_or_update_index.yaml index fdae488a5843..f88c1d8e270b 100644 --- a/sdk/search/azure-search-documents/tests/async_tests/recordings/test_service_live_async.test_create_or_update_index.yaml +++ b/sdk/search/azure-search-documents/tests/async_tests/recordings/test_service_live_async.test_create_or_update_index.yaml @@ -14,129 +14,32 @@ interactions: Prefer: - return=representation User-Agent: - - azsdk-python-search-documents/1.0.0b2 Python/3.6.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - 123ED9977EF261D85F8AC1062CDE21AF + - 6CF9D38E0C02AE7CBFF09C124F5A46F5 method: PUT uri: https://search234a14f7.search.windows.net/indexes('hotels')?api-version=2019-05-06-Preview response: body: - string: '{"@odata.context":"https://search234a14f7.search.windows.net/$metadata#indexes/$entity","@odata.etag":"\"0x8D7D59B6AEE529E\"","name":"hotels","defaultScoringProfile":null,"fields":[{"name":"hotelId","type":"Edm.String","searchable":false,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":true,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"baseRate","type":"Edm.Double","searchable":false,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]}],"scoringProfiles":[],"corsOptions":{"allowedOrigins":["*"],"maxAgeInSeconds":60},"suggesters":[],"analyzers":[],"tokenizers":[],"tokenFilters":[],"charFilters":[],"encryptionKey":null,"similarity":null}' + string: '{"@odata.context":"https://search234a14f7.search.windows.net/$metadata#indexes/$entity","@odata.etag":"\"0x8D7EC95562E8036\"","name":"hotels","defaultScoringProfile":null,"fields":[{"name":"hotelId","type":"Edm.String","searchable":false,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":true,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"baseRate","type":"Edm.Double","searchable":false,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]}],"scoringProfiles":[],"corsOptions":{"allowedOrigins":["*"],"maxAgeInSeconds":60},"suggesters":[],"analyzers":[],"tokenizers":[],"tokenFilters":[],"charFilters":[],"encryptionKey":null,"similarity":null}' headers: cache-control: no-cache content-length: '816' content-type: application/json; odata.metadata=minimal - date: Tue, 31 Mar 2020 17:46:18 GMT - elapsed-time: '1329' - etag: W/"0x8D7D59B6AEE529E" + date: Wed, 29 Apr 2020 23:30:43 GMT + elapsed-time: '988' + etag: W/"0x8D7EC95562E8036" expires: '-1' - location: - - h - - t - - t - - p - - s - - ':' - - / - - / - - s - - e - - a - - r - - c - - h - - '2' - - '3' - - '4' - - a - - '1' - - '4' - - f - - '7' - - . - - s - - e - - a - - r - - c - - h - - . - - w - - i - - n - - d - - o - - w - - s - - . - - n - - e - - t - - / - - i - - n - - d - - e - - x - - e - - s - - ( - - '''' - - h - - o - - t - - e - - l - - s - - '''' - - ) - - '?' - - a - - p - - i - - '-' - - v - - e - - r - - s - - i - - o - - n - - '=' - - '2' - - '0' - - '1' - - '9' - - '-' - - '0' - - '5' - - '-' - - '0' - - '6' - - '-' - - P - - r - - e - - v - - i - - e - - w + location: https://search234a14f7.search.windows.net/indexes('hotels')?api-version=2019-05-06-Preview odata-version: '4.0' pragma: no-cache preference-applied: odata.include-annotations="*" - request-id: 864f9086-7377-11ea-868d-5cf37071153c + request-id: 71388dae-8a71-11ea-889b-8c8590507855 strict-transport-security: max-age=15724800; includeSubDomains status: code: 201 message: Created - url: !!python/object/new:yarl.URL - state: !!python/tuple - - !!python/object/new:urllib.parse.SplitResult - - https - - search234a14f7.search.windows.net - - /indexes('hotels') - - api-version=2019-05-06-Preview - - '' + url: https://search234a14f7.search.windows.net/indexes('hotels')?api-version=2019-05-06-Preview - request: body: '{"name": "hotels", "fields": [{"name": "hotelId", "type": "Edm.String", "key": true, "searchable": false}, {"name": "baseRate", "type": "Edm.Double"}], @@ -152,38 +55,31 @@ interactions: Prefer: - return=representation User-Agent: - - azsdk-python-search-documents/1.0.0b2 Python/3.6.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - 123ED9977EF261D85F8AC1062CDE21AF + - 6CF9D38E0C02AE7CBFF09C124F5A46F5 method: PUT uri: https://search234a14f7.search.windows.net/indexes('hotels')?api-version=2019-05-06-Preview response: body: - string: '{"@odata.context":"https://search234a14f7.search.windows.net/$metadata#indexes/$entity","@odata.etag":"\"0x8D7D59B6B1B1029\"","name":"hotels","defaultScoringProfile":null,"fields":[{"name":"hotelId","type":"Edm.String","searchable":false,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":true,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"baseRate","type":"Edm.Double","searchable":false,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]}],"scoringProfiles":[{"name":"MyProfile","functionAggregation":null,"text":null,"functions":[]}],"corsOptions":{"allowedOrigins":["*"],"maxAgeInSeconds":60},"suggesters":[],"analyzers":[],"tokenizers":[],"tokenFilters":[],"charFilters":[],"encryptionKey":null,"similarity":null}' + string: '{"@odata.context":"https://search234a14f7.search.windows.net/$metadata#indexes/$entity","@odata.etag":"\"0x8D7EC9556534D05\"","name":"hotels","defaultScoringProfile":null,"fields":[{"name":"hotelId","type":"Edm.String","searchable":false,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":true,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"baseRate","type":"Edm.Double","searchable":false,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]}],"scoringProfiles":[{"name":"MyProfile","functionAggregation":null,"text":null,"functions":[]}],"corsOptions":{"allowedOrigins":["*"],"maxAgeInSeconds":60},"suggesters":[],"analyzers":[],"tokenizers":[],"tokenFilters":[],"charFilters":[],"encryptionKey":null,"similarity":null}' headers: cache-control: no-cache content-encoding: gzip content-length: '536' content-type: application/json; odata.metadata=minimal - date: Tue, 31 Mar 2020 17:46:18 GMT - elapsed-time: '216' - etag: W/"0x8D7D59B6B1B1029" + date: Wed, 29 Apr 2020 23:30:43 GMT + elapsed-time: '129' + etag: W/"0x8D7EC9556534D05" expires: '-1' odata-version: '4.0' pragma: no-cache preference-applied: odata.include-annotations="*" - request-id: 8747c682-7377-11ea-87ce-5cf37071153c + request-id: 71f053d0-8a71-11ea-889b-8c8590507855 strict-transport-security: max-age=15724800; includeSubDomains vary: Accept-Encoding status: code: 200 message: OK - url: !!python/object/new:yarl.URL - state: !!python/tuple - - !!python/object/new:urllib.parse.SplitResult - - https - - search234a14f7.search.windows.net - - /indexes('hotels') - - api-version=2019-05-06-Preview - - '' + url: https://search234a14f7.search.windows.net/indexes('hotels')?api-version=2019-05-06-Preview version: 1 diff --git a/sdk/search/azure-search-documents/tests/async_tests/recordings/test_service_live_async.test_create_or_update_indexes_if_unchanged.yaml b/sdk/search/azure-search-documents/tests/async_tests/recordings/test_service_live_async.test_create_or_update_indexes_if_unchanged.yaml new file mode 100644 index 000000000000..199eebff5d04 --- /dev/null +++ b/sdk/search/azure-search-documents/tests/async_tests/recordings/test_service_live_async.test_create_or_update_indexes_if_unchanged.yaml @@ -0,0 +1,148 @@ +interactions: +- request: + body: '{"name": "hotels", "fields": [{"name": "hotelId", "type": "Edm.String", + "key": true, "searchable": false}, {"name": "baseRate", "type": "Edm.Double"}], + "scoringProfiles": [{"name": "MyProfile"}], "corsOptions": {"allowedOrigins": + ["*"], "maxAgeInSeconds": 60}}' + headers: + Accept: + - application/json;odata.metadata=minimal + Content-Length: + - '260' + Content-Type: + - application/json + User-Agent: + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Windows-10-10.0.17763-SP0) + api-key: + - 27AABAAAD5E1BA1E8445B009D9CDC8D7 + method: POST + uri: https://search8e901b09.search.windows.net/indexes?api-version=2019-05-06-Preview + response: + body: + string: '{"@odata.context":"https://search8e901b09.search.windows.net/$metadata#indexes/$entity","@odata.etag":"\"0x8D7ED71A617AE43\"","name":"hotels","defaultScoringProfile":null,"fields":[{"name":"hotelId","type":"Edm.String","searchable":false,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":true,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"baseRate","type":"Edm.Double","searchable":false,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]}],"scoringProfiles":[{"name":"MyProfile","functionAggregation":null,"text":null,"functions":[]}],"corsOptions":{"allowedOrigins":["*"],"maxAgeInSeconds":60},"suggesters":[],"analyzers":[],"tokenizers":[],"tokenFilters":[],"charFilters":[],"encryptionKey":null,"similarity":null}' + headers: + cache-control: no-cache + content-length: '890' + content-type: application/json; odata.metadata=minimal + date: Fri, 01 May 2020 01:47:47 GMT + elapsed-time: '560' + etag: W/"0x8D7ED71A617AE43" + expires: '-1' + location: https://search8e901b09.search.windows.net/indexes('hotels')?api-version=2019-05-06-Preview + odata-version: '4.0' + pragma: no-cache + preference-applied: odata.include-annotations="*" + request-id: c1c3fbc8-8b4d-11ea-87ee-2816a845e8c6 + strict-transport-security: max-age=15724800; includeSubDomains + status: + code: 201 + message: Created + url: !!python/object/new:yarl.URL + state: !!python/tuple + - !!python/object/new:urllib.parse.SplitResult + - https + - search8e901b09.search.windows.net + - /indexes + - api-version=2019-05-06-Preview + - '' +- request: + body: '{"name": "hotels", "fields": [{"name": "hotelId", "type": "Edm.String", + "key": true, "searchable": false}, {"name": "baseRate", "type": "Edm.Double"}], + "scoringProfiles": [], "corsOptions": {"allowedOrigins": ["*"], "maxAgeInSeconds": + 60}}' + headers: + Accept: + - application/json;odata.metadata=minimal + Content-Length: + - '239' + Content-Type: + - application/json + Prefer: + - return=representation + User-Agent: + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Windows-10-10.0.17763-SP0) + api-key: + - 27AABAAAD5E1BA1E8445B009D9CDC8D7 + method: PUT + uri: https://search8e901b09.search.windows.net/indexes('hotels')?api-version=2019-05-06-Preview + response: + body: + string: '{"@odata.context":"https://search8e901b09.search.windows.net/$metadata#indexes/$entity","@odata.etag":"\"0x8D7ED71A636ADAA\"","name":"hotels","defaultScoringProfile":null,"fields":[{"name":"hotelId","type":"Edm.String","searchable":false,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":true,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"baseRate","type":"Edm.Double","searchable":false,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]}],"scoringProfiles":[],"corsOptions":{"allowedOrigins":["*"],"maxAgeInSeconds":60},"suggesters":[],"analyzers":[],"tokenizers":[],"tokenFilters":[],"charFilters":[],"encryptionKey":null,"similarity":null}' + headers: + cache-control: no-cache + content-encoding: gzip + content-length: '506' + content-type: application/json; odata.metadata=minimal + date: Fri, 01 May 2020 01:47:47 GMT + elapsed-time: '129' + etag: W/"0x8D7ED71A636ADAA" + expires: '-1' + odata-version: '4.0' + pragma: no-cache + preference-applied: odata.include-annotations="*" + request-id: c23832f0-8b4d-11ea-be09-2816a845e8c6 + strict-transport-security: max-age=15724800; includeSubDomains + vary: Accept-Encoding + status: + code: 200 + message: OK + url: !!python/object/new:yarl.URL + state: !!python/tuple + - !!python/object/new:urllib.parse.SplitResult + - https + - search8e901b09.search.windows.net + - /indexes('hotels') + - api-version=2019-05-06-Preview + - '' +- request: + body: '{"name": "hotels", "fields": [{"name": "hotelId", "type": "Edm.String", + "key": true, "searchable": false}, {"name": "baseRate", "type": "Edm.Double"}], + "scoringProfiles": [], "corsOptions": {"allowedOrigins": ["*"], "maxAgeInSeconds": + 60}, "@odata.etag": "\"0x8D7ED71A617AE43\""}' + headers: + Accept: + - application/json;odata.metadata=minimal + Content-Length: + - '279' + Content-Type: + - application/json + If-Match: + - '"0x8D7ED71A617AE43"' + Prefer: + - return=representation + User-Agent: + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Windows-10-10.0.17763-SP0) + api-key: + - 27AABAAAD5E1BA1E8445B009D9CDC8D7 + method: PUT + uri: https://search8e901b09.search.windows.net/indexes('hotels')?api-version=2019-05-06-Preview + response: + body: + string: '{"error":{"code":"","message":"The precondition given in one of the + request headers evaluated to false. No change was made to the resource from + this request."}}' + headers: + cache-control: no-cache + content-language: en + content-length: '160' + content-type: application/json; odata.metadata=minimal + date: Fri, 01 May 2020 01:47:47 GMT + elapsed-time: '25' + expires: '-1' + odata-version: '4.0' + pragma: no-cache + preference-applied: odata.include-annotations="*" + request-id: c2543448-8b4d-11ea-b516-2816a845e8c6 + strict-transport-security: max-age=15724800; includeSubDomains + status: + code: 412 + message: Precondition Failed + url: !!python/object/new:yarl.URL + state: !!python/tuple + - !!python/object/new:urllib.parse.SplitResult + - https + - search8e901b09.search.windows.net + - /indexes('hotels') + - api-version=2019-05-06-Preview + - '' +version: 1 diff --git a/sdk/search/azure-search-documents/tests/async_tests/recordings/test_service_live_async.test_create_or_update_skillset_if_unchanged.yaml b/sdk/search/azure-search-documents/tests/async_tests/recordings/test_service_live_async.test_create_or_update_skillset_if_unchanged.yaml new file mode 100644 index 000000000000..9ff0930d8908 --- /dev/null +++ b/sdk/search/azure-search-documents/tests/async_tests/recordings/test_service_live_async.test_create_or_update_skillset_if_unchanged.yaml @@ -0,0 +1,189 @@ +interactions: +- request: + body: '{"name": "test-ss", "description": "desc1", "skills": [{"@odata.type": + "#Microsoft.Skills.Text.EntityRecognitionSkill", "inputs": [{"name": "text", + "source": "/document/content"}], "outputs": [{"name": "organizations", "targetName": + "organizations"}]}]}' + headers: + Accept: + - application/json;odata.metadata=minimal + Content-Length: + - '253' + Content-Type: + - application/json + Prefer: + - return=representation + User-Agent: + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Windows-10-10.0.17763-SP0) + api-key: + - 44D0AAF55BE852CA16BF1BD860CFB5D1 + method: PUT + uri: https://searchab6c1b84.search.windows.net/skillsets('test-ss')?api-version=2019-05-06-Preview + response: + body: + string: '{"@odata.context":"https://searchab6c1b84.search.windows.net/$metadata#skillsets/$entity","@odata.etag":"\"0x8D7ED71C3B43149\"","name":"test-ss","description":"desc1","skills":[{"@odata.type":"#Microsoft.Skills.Text.EntityRecognitionSkill","name":null,"description":null,"context":null,"categories":[],"defaultLanguageCode":null,"minimumPrecision":null,"includeTypelessEntities":null,"inputs":[{"name":"text","source":"/document/content","sourceContext":null,"inputs":[]}],"outputs":[{"name":"organizations","targetName":"organizations"}]}],"cognitiveServices":null,"knowledgeStore":null}' + headers: + cache-control: no-cache + content-length: '588' + content-type: application/json; odata.metadata=minimal + date: Fri, 01 May 2020 01:48:35 GMT + elapsed-time: '63' + etag: W/"0x8D7ED71C3B43149" + expires: '-1' + location: https://searchab6c1b84.search.windows.net/skillsets('test-ss')?api-version=2019-05-06-Preview + odata-version: '4.0' + pragma: no-cache + preference-applied: odata.include-annotations="*" + request-id: dfa970b6-8b4d-11ea-aba9-2816a845e8c6 + strict-transport-security: max-age=15724800; includeSubDomains + status: + code: 201 + message: Created + url: !!python/object/new:yarl.URL + state: !!python/tuple + - !!python/object/new:urllib.parse.SplitResult + - https + - searchab6c1b84.search.windows.net + - /skillsets('test-ss') + - api-version=2019-05-06-Preview + - '' +- request: + body: '{"name": "test-ss", "description": "desc2", "skills": [{"@odata.type": + "#Microsoft.Skills.Text.EntityRecognitionSkill", "inputs": [{"name": "text", + "source": "/document/content"}], "outputs": [{"name": "organizations", "targetName": + "organizations"}]}], "@odata.etag": "\"0x8D7ED71C3B43149\""}' + headers: + Accept: + - application/json;odata.metadata=minimal + Content-Length: + - '293' + Content-Type: + - application/json + Prefer: + - return=representation + User-Agent: + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Windows-10-10.0.17763-SP0) + api-key: + - 44D0AAF55BE852CA16BF1BD860CFB5D1 + method: PUT + uri: https://searchab6c1b84.search.windows.net/skillsets('test-ss')?api-version=2019-05-06-Preview + response: + body: + string: '{"@odata.context":"https://searchab6c1b84.search.windows.net/$metadata#skillsets/$entity","@odata.etag":"\"0x8D7ED71C3C23D9E\"","name":"test-ss","description":"desc2","skills":[{"@odata.type":"#Microsoft.Skills.Text.EntityRecognitionSkill","name":null,"description":null,"context":null,"categories":[],"defaultLanguageCode":null,"minimumPrecision":null,"includeTypelessEntities":null,"inputs":[{"name":"text","source":"/document/content","sourceContext":null,"inputs":[]}],"outputs":[{"name":"organizations","targetName":"organizations"}]}],"cognitiveServices":null,"knowledgeStore":null}' + headers: + cache-control: no-cache + content-encoding: gzip + content-length: '464' + content-type: application/json; odata.metadata=minimal + date: Fri, 01 May 2020 01:48:35 GMT + elapsed-time: '39' + etag: W/"0x8D7ED71C3C23D9E" + expires: '-1' + odata-version: '4.0' + pragma: no-cache + preference-applied: odata.include-annotations="*" + request-id: dfcf0940-8b4d-11ea-833a-2816a845e8c6 + strict-transport-security: max-age=15724800; includeSubDomains + vary: Accept-Encoding + status: + code: 200 + message: OK + url: !!python/object/new:yarl.URL + state: !!python/tuple + - !!python/object/new:urllib.parse.SplitResult + - https + - searchab6c1b84.search.windows.net + - /skillsets('test-ss') + - api-version=2019-05-06-Preview + - '' +- request: + body: null + headers: + Accept: + - application/json;odata.metadata=minimal + User-Agent: + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Windows-10-10.0.17763-SP0) + api-key: + - 44D0AAF55BE852CA16BF1BD860CFB5D1 + method: GET + uri: https://searchab6c1b84.search.windows.net/skillsets?api-version=2019-05-06-Preview + response: + body: + string: '{"@odata.context":"https://searchab6c1b84.search.windows.net/$metadata#skillsets","value":[{"@odata.etag":"\"0x8D7ED71C3C23D9E\"","name":"test-ss","description":"desc2","skills":[{"@odata.type":"#Microsoft.Skills.Text.EntityRecognitionSkill","name":"#1","description":null,"context":"/document","categories":["Person","Quantity","Organization","URL","Email","Location","DateTime"],"defaultLanguageCode":"en","minimumPrecision":null,"includeTypelessEntities":null,"inputs":[{"name":"text","source":"/document/content","sourceContext":null,"inputs":[]}],"outputs":[{"name":"organizations","targetName":"organizations"}]}],"cognitiveServices":null,"knowledgeStore":null}]}' + headers: + cache-control: no-cache + content-encoding: gzip + content-length: '521' + content-type: application/json; odata.metadata=minimal + date: Fri, 01 May 2020 01:48:35 GMT + elapsed-time: '22' + expires: '-1' + odata-version: '4.0' + pragma: no-cache + preference-applied: odata.include-annotations="*" + request-id: dfdc6bd2-8b4d-11ea-90dd-2816a845e8c6 + strict-transport-security: max-age=15724800; includeSubDomains + vary: Accept-Encoding + status: + code: 200 + message: OK + url: !!python/object/new:yarl.URL + state: !!python/tuple + - !!python/object/new:urllib.parse.SplitResult + - https + - searchab6c1b84.search.windows.net + - /skillsets + - api-version=2019-05-06-Preview + - '' +- request: + body: '{"name": "test-ss", "description": "desc1", "skills": [{"@odata.type": + "#Microsoft.Skills.Text.EntityRecognitionSkill", "inputs": [{"name": "text", + "source": "/document/content"}], "outputs": [{"name": "organizations", "targetName": + "organizations"}]}], "@odata.etag": "\"0x8D7ED71C3B43149\""}' + headers: + Accept: + - application/json;odata.metadata=minimal + Content-Length: + - '293' + Content-Type: + - application/json + If-Match: + - '"0x8D7ED71C3B43149"' + Prefer: + - return=representation + User-Agent: + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Windows-10-10.0.17763-SP0) + api-key: + - 44D0AAF55BE852CA16BF1BD860CFB5D1 + method: PUT + uri: https://searchab6c1b84.search.windows.net/skillsets('test-ss')?api-version=2019-05-06-Preview + response: + body: + string: '{"error":{"code":"","message":"The precondition given in one of the + request headers evaluated to false. No change was made to the resource from + this request."}}' + headers: + cache-control: no-cache + content-language: en + content-length: '160' + content-type: application/json; odata.metadata=minimal + date: Fri, 01 May 2020 01:48:35 GMT + elapsed-time: '12' + expires: '-1' + odata-version: '4.0' + pragma: no-cache + preference-applied: odata.include-annotations="*" + request-id: dfe78992-8b4d-11ea-beb5-2816a845e8c6 + strict-transport-security: max-age=15724800; includeSubDomains + status: + code: 412 + message: Precondition Failed + url: !!python/object/new:yarl.URL + state: !!python/tuple + - !!python/object/new:urllib.parse.SplitResult + - https + - searchab6c1b84.search.windows.net + - /skillsets('test-ss') + - api-version=2019-05-06-Preview + - '' +version: 1 diff --git a/sdk/search/azure-search-documents/tests/async_tests/recordings/test_service_live_async.test_create_or_update_synonym_map.yaml b/sdk/search/azure-search-documents/tests/async_tests/recordings/test_service_live_async.test_create_or_update_synonym_map.yaml index f8de1e1c6978..6bd1e6a145ee 100644 --- a/sdk/search/azure-search-documents/tests/async_tests/recordings/test_service_live_async.test_create_or_update_synonym_map.yaml +++ b/sdk/search/azure-search-documents/tests/async_tests/recordings/test_service_live_async.test_create_or_update_synonym_map.yaml @@ -12,126 +12,26 @@ interactions: User-Agent: - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - A7F0FF80C7963FD152667ECCD754F685 + - 1EB3C43FAD17D88EF8BB4EEA004D98D3 method: POST uri: https://searchab401799.search.windows.net/synonymmaps?api-version=2019-05-06-Preview response: body: - string: '{"@odata.context":"https://searchab401799.search.windows.net/$metadata#synonymmaps/$entity","@odata.etag":"\"0x8D7E098DD6BACC5\"","name":"test-syn-map","format":"solr","synonyms":"USA, + string: '{"@odata.context":"https://searchab401799.search.windows.net/$metadata#synonymmaps/$entity","@odata.etag":"\"0x8D7EC9580AF6E73\"","name":"test-syn-map","format":"solr","synonyms":"USA, United States, United States of America","encryptionKey":null}' headers: cache-control: no-cache content-length: '247' content-type: application/json; odata.metadata=minimal - date: Tue, 14 Apr 2020 17:25:45 GMT - elapsed-time: '308' - etag: W/"0x8D7E098DD6BACC5" + date: Wed, 29 Apr 2020 23:31:54 GMT + elapsed-time: '54' + etag: W/"0x8D7EC9580AF6E73" expires: '-1' - location: - - h - - t - - t - - p - - s - - ':' - - / - - / - - s - - e - - a - - r - - c - - h - - a - - b - - '4' - - '0' - - '1' - - '7' - - '9' - - '9' - - . - - s - - e - - a - - r - - c - - h - - . - - w - - i - - n - - d - - o - - w - - s - - . - - n - - e - - t - - / - - s - - y - - n - - o - - n - - y - - m - - m - - a - - p - - s - - ( - - '''' - - t - - e - - s - - t - - '-' - - s - - y - - n - - '-' - - m - - a - - p - - '''' - - ) - - '?' - - a - - p - - i - - '-' - - v - - e - - r - - s - - i - - o - - n - - '=' - - '2' - - '0' - - '1' - - '9' - - '-' - - '0' - - '5' - - '-' - - '0' - - '6' - - '-' - - P - - r - - e - - v - - i - - e - - w + location: https://searchab401799.search.windows.net/synonymmaps('test-syn-map')?api-version=2019-05-06-Preview odata-version: '4.0' pragma: no-cache preference-applied: odata.include-annotations="*" - request-id: f8fb7692-7e74-11ea-ab37-8c8590507855 + request-id: 9c465bb6-8a71-11ea-889b-8c8590507855 strict-transport-security: max-age=15724800; includeSubDomains status: code: 201 @@ -145,25 +45,25 @@ interactions: User-Agent: - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - A7F0FF80C7963FD152667ECCD754F685 + - 1EB3C43FAD17D88EF8BB4EEA004D98D3 method: GET uri: https://searchab401799.search.windows.net/synonymmaps?api-version=2019-05-06-Preview response: body: - string: '{"@odata.context":"https://searchab401799.search.windows.net/$metadata#synonymmaps","value":[{"@odata.etag":"\"0x8D7E098DD6BACC5\"","name":"test-syn-map","format":"solr","synonyms":"USA, + string: '{"@odata.context":"https://searchab401799.search.windows.net/$metadata#synonymmaps","value":[{"@odata.etag":"\"0x8D7EC9580AF6E73\"","name":"test-syn-map","format":"solr","synonyms":"USA, United States, United States of America","encryptionKey":null}]}' headers: cache-control: no-cache content-encoding: gzip content-length: '315' content-type: application/json; odata.metadata=minimal - date: Tue, 14 Apr 2020 17:25:45 GMT - elapsed-time: '17' + date: Wed, 29 Apr 2020 23:31:54 GMT + elapsed-time: '9' expires: '-1' odata-version: '4.0' pragma: no-cache preference-applied: odata.include-annotations="*" - request-id: f94a8af2-7e74-11ea-ab37-8c8590507855 + request-id: 9c5d47c2-8a71-11ea-889b-8c8590507855 strict-transport-security: max-age=15724800; includeSubDomains vary: Accept-Encoding status: @@ -185,26 +85,26 @@ interactions: User-Agent: - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - A7F0FF80C7963FD152667ECCD754F685 + - 1EB3C43FAD17D88EF8BB4EEA004D98D3 method: PUT uri: https://searchab401799.search.windows.net/synonymmaps('test-syn-map')?api-version=2019-05-06-Preview response: body: - string: '{"@odata.context":"https://searchab401799.search.windows.net/$metadata#synonymmaps/$entity","@odata.etag":"\"0x8D7E098DD899A92\"","name":"test-syn-map","format":"solr","synonyms":"Washington, + string: '{"@odata.context":"https://searchab401799.search.windows.net/$metadata#synonymmaps/$entity","@odata.etag":"\"0x8D7EC9580BBF3DC\"","name":"test-syn-map","format":"solr","synonyms":"Washington, Wash. => WA","encryptionKey":null}' headers: cache-control: no-cache content-encoding: gzip content-length: '302' content-type: application/json; odata.metadata=minimal - date: Tue, 14 Apr 2020 17:25:45 GMT - elapsed-time: '21' - etag: W/"0x8D7E098DD899A92" + date: Wed, 29 Apr 2020 23:31:54 GMT + elapsed-time: '20' + etag: W/"0x8D7EC9580BBF3DC" expires: '-1' odata-version: '4.0' pragma: no-cache preference-applied: odata.include-annotations="*" - request-id: f95151c0-7e74-11ea-ab37-8c8590507855 + request-id: 9c62687e-8a71-11ea-889b-8c8590507855 strict-transport-security: max-age=15724800; includeSubDomains vary: Accept-Encoding status: @@ -219,25 +119,25 @@ interactions: User-Agent: - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - A7F0FF80C7963FD152667ECCD754F685 + - 1EB3C43FAD17D88EF8BB4EEA004D98D3 method: GET uri: https://searchab401799.search.windows.net/synonymmaps?api-version=2019-05-06-Preview response: body: - string: '{"@odata.context":"https://searchab401799.search.windows.net/$metadata#synonymmaps","value":[{"@odata.etag":"\"0x8D7E098DD899A92\"","name":"test-syn-map","format":"solr","synonyms":"Washington, + string: '{"@odata.context":"https://searchab401799.search.windows.net/$metadata#synonymmaps","value":[{"@odata.etag":"\"0x8D7EC9580BBF3DC\"","name":"test-syn-map","format":"solr","synonyms":"Washington, Wash. => WA","encryptionKey":null}]}' headers: cache-control: no-cache content-encoding: gzip content-length: '307' content-type: application/json; odata.metadata=minimal - date: Tue, 14 Apr 2020 17:25:45 GMT - elapsed-time: '9' + date: Wed, 29 Apr 2020 23:31:54 GMT + elapsed-time: '10' expires: '-1' odata-version: '4.0' pragma: no-cache preference-applied: odata.include-annotations="*" - request-id: f958be42-7e74-11ea-ab37-8c8590507855 + request-id: 9c69b82c-8a71-11ea-889b-8c8590507855 strict-transport-security: max-age=15724800; includeSubDomains vary: Accept-Encoding status: @@ -252,26 +152,26 @@ interactions: User-Agent: - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - A7F0FF80C7963FD152667ECCD754F685 + - 1EB3C43FAD17D88EF8BB4EEA004D98D3 method: GET uri: https://searchab401799.search.windows.net/synonymmaps('test-syn-map')?api-version=2019-05-06-Preview response: body: - string: '{"@odata.context":"https://searchab401799.search.windows.net/$metadata#synonymmaps/$entity","@odata.etag":"\"0x8D7E098DD899A92\"","name":"test-syn-map","format":"solr","synonyms":"Washington, + string: '{"@odata.context":"https://searchab401799.search.windows.net/$metadata#synonymmaps/$entity","@odata.etag":"\"0x8D7EC9580BBF3DC\"","name":"test-syn-map","format":"solr","synonyms":"Washington, Wash. => WA","encryptionKey":null}' headers: cache-control: no-cache content-encoding: gzip content-length: '302' content-type: application/json; odata.metadata=minimal - date: Tue, 14 Apr 2020 17:25:45 GMT - elapsed-time: '6' - etag: W/"0x8D7E098DD899A92" + date: Wed, 29 Apr 2020 23:31:54 GMT + elapsed-time: '7' + etag: W/"0x8D7EC9580BBF3DC" expires: '-1' odata-version: '4.0' pragma: no-cache preference-applied: odata.include-annotations="*" - request-id: f95e2724-7e74-11ea-ab37-8c8590507855 + request-id: 9c6f0854-8a71-11ea-889b-8c8590507855 strict-transport-security: max-age=15724800; includeSubDomains vary: Accept-Encoding status: diff --git a/sdk/search/azure-search-documents/tests/async_tests/recordings/test_service_live_async.test_create_or_update_synonym_map_if_unchanged.yaml b/sdk/search/azure-search-documents/tests/async_tests/recordings/test_service_live_async.test_create_or_update_synonym_map_if_unchanged.yaml new file mode 100644 index 000000000000..4b47c2404166 --- /dev/null +++ b/sdk/search/azure-search-documents/tests/async_tests/recordings/test_service_live_async.test_create_or_update_synonym_map_if_unchanged.yaml @@ -0,0 +1,144 @@ +interactions: +- request: + body: '{"name": "test-syn-map", "format": "solr", "synonyms": "USA, United States, + United States of America"}' + headers: + Accept: + - application/json;odata.metadata=minimal + Content-Length: + - '102' + Content-Type: + - application/json + User-Agent: + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Windows-10-10.0.17763-SP0) + api-key: + - 1F470418E60BD2366ACB8D27D1F361CA + method: POST + uri: https://search2ac1cd3.search.windows.net/synonymmaps?api-version=2019-05-06-Preview + response: + body: + string: '{"@odata.context":"https://search2ac1cd3.search.windows.net/$metadata#synonymmaps/$entity","@odata.etag":"\"0x8D7EBFE52E29170\"","name":"test-syn-map","format":"solr","synonyms":"USA, + United States, United States of America","encryptionKey":null}' + headers: + cache-control: no-cache + content-length: '246' + content-type: application/json; odata.metadata=minimal + date: Wed, 29 Apr 2020 05:29:43 GMT + elapsed-time: '22' + etag: W/"0x8D7EBFE52E29170" + expires: '-1' + location: https://search2ac1cd3.search.windows.net/synonymmaps('test-syn-map')?api-version=2019-05-06-Preview + odata-version: '4.0' + pragma: no-cache + preference-applied: odata.include-annotations="*" + request-id: 6e62904c-89da-11ea-8ed2-2816a845e8c6 + strict-transport-security: max-age=15724800; includeSubDomains + status: + code: 201 + message: Created + url: !!python/object/new:yarl.URL + state: !!python/tuple + - !!python/object/new:urllib.parse.SplitResult + - https + - search2ac1cd3.search.windows.net + - /synonymmaps + - api-version=2019-05-06-Preview + - '' +- request: + body: '{"name": "test-syn-map", "format": "solr", "synonyms": "Washington, Wash. + => WA"}' + headers: + Accept: + - application/json;odata.metadata=minimal + Content-Length: + - '81' + Content-Type: + - application/json + Prefer: + - return=representation + User-Agent: + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Windows-10-10.0.17763-SP0) + api-key: + - 1F470418E60BD2366ACB8D27D1F361CA + method: PUT + uri: https://search2ac1cd3.search.windows.net/synonymmaps('test-syn-map')?api-version=2019-05-06-Preview + response: + body: + string: '{"@odata.context":"https://search2ac1cd3.search.windows.net/$metadata#synonymmaps/$entity","@odata.etag":"\"0x8D7EBFE52ED8FE6\"","name":"test-syn-map","format":"solr","synonyms":"Washington, + Wash. => WA","encryptionKey":null}' + headers: + cache-control: no-cache + content-encoding: gzip + content-length: '301' + content-type: application/json; odata.metadata=minimal + date: Wed, 29 Apr 2020 05:29:43 GMT + elapsed-time: '17' + etag: W/"0x8D7EBFE52ED8FE6" + expires: '-1' + odata-version: '4.0' + pragma: no-cache + preference-applied: odata.include-annotations="*" + request-id: 6e9516d8-89da-11ea-af0b-2816a845e8c6 + strict-transport-security: max-age=15724800; includeSubDomains + vary: Accept-Encoding + status: + code: 200 + message: OK + url: !!python/object/new:yarl.URL + state: !!python/tuple + - !!python/object/new:urllib.parse.SplitResult + - https + - search2ac1cd3.search.windows.net + - /synonymmaps('test-syn-map') + - api-version=2019-05-06-Preview + - '' +- request: + body: '{"name": "test-syn-map", "format": "solr", "synonyms": "[''USA, United + States, United States of America'']", "@odata.etag": "\"0x8D7EBFE52E29170\""}' + headers: + Accept: + - application/json;odata.metadata=minimal + Content-Length: + - '146' + Content-Type: + - application/json + If-Match: + - '"0x8D7EBFE52E29170"' + Prefer: + - return=representation + User-Agent: + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Windows-10-10.0.17763-SP0) + api-key: + - 1F470418E60BD2366ACB8D27D1F361CA + method: PUT + uri: https://search2ac1cd3.search.windows.net/synonymmaps('test-syn-map')?api-version=2019-05-06-Preview + response: + body: + string: '{"error":{"code":"","message":"The precondition given in one of the + request headers evaluated to false. No change was made to the resource from + this request."}}' + headers: + cache-control: no-cache + content-language: en + content-length: '160' + content-type: application/json; odata.metadata=minimal + date: Wed, 29 Apr 2020 05:29:43 GMT + elapsed-time: '8' + expires: '-1' + odata-version: '4.0' + pragma: no-cache + preference-applied: odata.include-annotations="*" + request-id: 6ea00d7e-89da-11ea-8cd0-2816a845e8c6 + strict-transport-security: max-age=15724800; includeSubDomains + status: + code: 412 + message: Precondition Failed + url: !!python/object/new:yarl.URL + state: !!python/tuple + - !!python/object/new:urllib.parse.SplitResult + - https + - search2ac1cd3.search.windows.net + - /synonymmaps('test-syn-map') + - api-version=2019-05-06-Preview + - '' +version: 1 diff --git a/sdk/search/azure-search-documents/tests/async_tests/recordings/test_service_live_async.test_create_synonym_map.yaml b/sdk/search/azure-search-documents/tests/async_tests/recordings/test_service_live_async.test_create_synonym_map.yaml index 271bb64eacce..c2ec94832f30 100644 --- a/sdk/search/azure-search-documents/tests/async_tests/recordings/test_service_live_async.test_create_synonym_map.yaml +++ b/sdk/search/azure-search-documents/tests/async_tests/recordings/test_service_live_async.test_create_synonym_map.yaml @@ -12,126 +12,26 @@ interactions: User-Agent: - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - B5244124509EE9D7524E749BE7A7189E + - 98706CBE973D216459997E8D1CD455D0 method: POST uri: https://searchd3391377.search.windows.net/synonymmaps?api-version=2019-05-06-Preview response: body: - string: '{"@odata.context":"https://searchd3391377.search.windows.net/$metadata#synonymmaps/$entity","@odata.etag":"\"0x8D7E098F10CE49D\"","name":"test-syn-map","format":"solr","synonyms":"USA, + string: '{"@odata.context":"https://searchd3391377.search.windows.net/$metadata#synonymmaps/$entity","@odata.etag":"\"0x8D7EC95876239BF\"","name":"test-syn-map","format":"solr","synonyms":"USA, United States, United States of America\nWashington, Wash. => WA","encryptionKey":null}' headers: cache-control: no-cache content-length: '272' content-type: application/json; odata.metadata=minimal - date: Tue, 14 Apr 2020 17:26:17 GMT - elapsed-time: '37' - etag: W/"0x8D7E098F10CE49D" + date: Wed, 29 Apr 2020 23:32:06 GMT + elapsed-time: '59' + etag: W/"0x8D7EC95876239BF" expires: '-1' - location: - - h - - t - - t - - p - - s - - ':' - - / - - / - - s - - e - - a - - r - - c - - h - - d - - '3' - - '3' - - '9' - - '1' - - '3' - - '7' - - '7' - - . - - s - - e - - a - - r - - c - - h - - . - - w - - i - - n - - d - - o - - w - - s - - . - - n - - e - - t - - / - - s - - y - - n - - o - - n - - y - - m - - m - - a - - p - - s - - ( - - '''' - - t - - e - - s - - t - - '-' - - s - - y - - n - - '-' - - m - - a - - p - - '''' - - ) - - '?' - - a - - p - - i - - '-' - - v - - e - - r - - s - - i - - o - - n - - '=' - - '2' - - '0' - - '1' - - '9' - - '-' - - '0' - - '5' - - '-' - - '0' - - '6' - - '-' - - P - - r - - e - - v - - i - - e - - w + location: https://searchd3391377.search.windows.net/synonymmaps('test-syn-map')?api-version=2019-05-06-Preview odata-version: '4.0' pragma: no-cache preference-applied: odata.include-annotations="*" - request-id: 0cc7c072-7e75-11ea-ab37-8c8590507855 + request-id: a2f824a8-8a71-11ea-889b-8c8590507855 strict-transport-security: max-age=15724800; includeSubDomains status: code: 201 @@ -145,25 +45,25 @@ interactions: User-Agent: - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - B5244124509EE9D7524E749BE7A7189E + - 98706CBE973D216459997E8D1CD455D0 method: GET uri: https://searchd3391377.search.windows.net/synonymmaps?api-version=2019-05-06-Preview response: body: - string: '{"@odata.context":"https://searchd3391377.search.windows.net/$metadata#synonymmaps","value":[{"@odata.etag":"\"0x8D7E098F10CE49D\"","name":"test-syn-map","format":"solr","synonyms":"USA, + string: '{"@odata.context":"https://searchd3391377.search.windows.net/$metadata#synonymmaps","value":[{"@odata.etag":"\"0x8D7EC95876239BF\"","name":"test-syn-map","format":"solr","synonyms":"USA, United States, United States of America\nWashington, Wash. => WA","encryptionKey":null}]}' headers: cache-control: no-cache content-encoding: gzip - content-length: '336' + content-length: '337' content-type: application/json; odata.metadata=minimal - date: Tue, 14 Apr 2020 17:26:17 GMT - elapsed-time: '8' + date: Wed, 29 Apr 2020 23:32:06 GMT + elapsed-time: '10' expires: '-1' odata-version: '4.0' pragma: no-cache preference-applied: odata.include-annotations="*" - request-id: 0cdc0e9c-7e75-11ea-ab37-8c8590507855 + request-id: a30fc6b2-8a71-11ea-889b-8c8590507855 strict-transport-security: max-age=15724800; includeSubDomains vary: Accept-Encoding status: diff --git a/sdk/search/azure-search-documents/tests/async_tests/recordings/test_service_live_async.test_delete_datasource_async.yaml b/sdk/search/azure-search-documents/tests/async_tests/recordings/test_service_live_async.test_delete_datasource_async.yaml new file mode 100644 index 000000000000..f80acb34d4af --- /dev/null +++ b/sdk/search/azure-search-documents/tests/async_tests/recordings/test_service_live_async.test_delete_datasource_async.yaml @@ -0,0 +1,130 @@ +interactions: +- request: + body: '{"name": "sample-datasource", "type": "azureblob", "credentials": {"connectionString": + "DefaultEndpointsProtocol=https;AccountName=storagename;AccountKey=NzhL3hKZbJBuJ2484dPTR+xF30kYaWSSCbs2BzLgVVI1woqeST/1IgqaLm6QAOTxtGvxctSNbIR/1hW8yH+bJg==;EndpointSuffix=core.windows.net"}, + "container": {"name": "searchcontainer"}}' + headers: + Accept: + - application/json;odata.metadata=minimal + Content-Length: + - '319' + Content-Type: + - application/json + User-Agent: + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) + api-key: + - 06B8336C26C304192C7B26FC455ACC25 + method: POST + uri: https://search38471564.search.windows.net/datasources?api-version=2019-05-06-Preview + response: + body: + string: '{"@odata.context":"https://search38471564.search.windows.net/$metadata#datasources/$entity","@odata.etag":"\"0x8D7EC95B60E12E6\"","name":"sample-datasource","description":null,"type":"azureblob","subtype":null,"credentials":{"connectionString":null},"container":{"name":"searchcontainer","query":null},"dataChangeDetectionPolicy":null,"dataDeletionDetectionPolicy":null}' + headers: + cache-control: no-cache + content-length: '370' + content-type: application/json; odata.metadata=minimal + date: Wed, 29 Apr 2020 23:33:24 GMT + elapsed-time: '54' + etag: W/"0x8D7EC95B60E12E6" + expires: '-1' + location: https://search38471564.search.windows.net/datasources('sample-datasource')?api-version=2019-05-06-Preview + odata-version: '4.0' + pragma: no-cache + preference-applied: odata.include-annotations="*" + request-id: d1a45d3a-8a71-11ea-889b-8c8590507855 + strict-transport-security: max-age=15724800; includeSubDomains + status: + code: 201 + message: Created + url: https://search38471564.search.windows.net/datasources?api-version=2019-05-06-Preview +- request: + body: null + headers: + Accept: + - application/json;odata.metadata=minimal + User-Agent: + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) + api-key: + - 06B8336C26C304192C7B26FC455ACC25 + method: GET + uri: https://search38471564.search.windows.net/datasources?api-version=2019-05-06-Preview + response: + body: + string: '{"@odata.context":"https://search38471564.search.windows.net/$metadata#datasources","value":[{"@odata.etag":"\"0x8D7EC95B60E12E6\"","name":"sample-datasource","description":null,"type":"azureblob","subtype":null,"credentials":{"connectionString":null},"container":{"name":"searchcontainer","query":null},"dataChangeDetectionPolicy":null,"dataDeletionDetectionPolicy":null}]}' + headers: + cache-control: no-cache + content-encoding: gzip + content-length: '366' + content-type: application/json; odata.metadata=minimal + date: Wed, 29 Apr 2020 23:33:24 GMT + elapsed-time: '11' + expires: '-1' + odata-version: '4.0' + pragma: no-cache + preference-applied: odata.include-annotations="*" + request-id: d1ba8768-8a71-11ea-889b-8c8590507855 + strict-transport-security: max-age=15724800; includeSubDomains + vary: Accept-Encoding + status: + code: 200 + message: OK + url: https://search38471564.search.windows.net/datasources?api-version=2019-05-06-Preview +- request: + body: null + headers: + Accept: + - application/json;odata.metadata=minimal + User-Agent: + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) + api-key: + - 06B8336C26C304192C7B26FC455ACC25 + method: DELETE + uri: https://search38471564.search.windows.net/datasources('sample-datasource')?api-version=2019-05-06-Preview + response: + body: + string: '' + headers: + cache-control: no-cache + date: Wed, 29 Apr 2020 23:33:24 GMT + elapsed-time: '59' + expires: '-1' + pragma: no-cache + request-id: d1c01214-8a71-11ea-889b-8c8590507855 + strict-transport-security: max-age=15724800; includeSubDomains + status: + code: 204 + message: No Content + url: https://search38471564.search.windows.net/datasources('sample-datasource')?api-version=2019-05-06-Preview +- request: + body: null + headers: + Accept: + - application/json;odata.metadata=minimal + User-Agent: + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) + api-key: + - 06B8336C26C304192C7B26FC455ACC25 + method: GET + uri: https://search38471564.search.windows.net/datasources?api-version=2019-05-06-Preview + response: + body: + string: '{"@odata.context":"https://search38471564.search.windows.net/$metadata#datasources","value":[]}' + headers: + cache-control: no-cache + content-encoding: gzip + content-length: '202' + content-type: application/json; odata.metadata=minimal + date: Wed, 29 Apr 2020 23:33:24 GMT + elapsed-time: '4' + expires: '-1' + odata-version: '4.0' + pragma: no-cache + preference-applied: odata.include-annotations="*" + request-id: d1cc9e80-8a71-11ea-889b-8c8590507855 + strict-transport-security: max-age=15724800; includeSubDomains + vary: Accept-Encoding + status: + code: 200 + message: OK + url: https://search38471564.search.windows.net/datasources?api-version=2019-05-06-Preview +version: 1 diff --git a/sdk/search/azure-search-documents/tests/async_tests/recordings/test_service_live_async.test_delete_datasource_if_unchanged.yaml b/sdk/search/azure-search-documents/tests/async_tests/recordings/test_service_live_async.test_delete_datasource_if_unchanged.yaml new file mode 100644 index 000000000000..7994cdc4fc4e --- /dev/null +++ b/sdk/search/azure-search-documents/tests/async_tests/recordings/test_service_live_async.test_delete_datasource_if_unchanged.yaml @@ -0,0 +1,137 @@ +interactions: +- request: + body: '{"name": "sample-datasource", "type": "azureblob", "credentials": {"connectionString": + "DefaultEndpointsProtocol=https;AccountName=storagename;AccountKey=NzhL3hKZbJBuJ2484dPTR+xF30kYaWSSCbs2BzLgVVI1woqeST/1IgqaLm6QAOTxtGvxctSNbIR/1hW8yH+bJg==;EndpointSuffix=core.windows.net"}, + "container": {"name": "searchcontainer"}}' + headers: + Accept: + - application/json;odata.metadata=minimal + Content-Length: + - '319' + Content-Type: + - application/json + User-Agent: + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Windows-10-10.0.17763-SP0) + api-key: + - EAB9451773DF47CC4948501A01AA8C5D + method: POST + uri: https://searchd88c1821.search.windows.net/datasources?api-version=2019-05-06-Preview + response: + body: + string: '{"@odata.context":"https://searchd88c1821.search.windows.net/$metadata#datasources/$entity","@odata.etag":"\"0x8D7ED71EDA34383\"","name":"sample-datasource","description":null,"type":"azureblob","subtype":null,"credentials":{"connectionString":null},"container":{"name":"searchcontainer","query":null},"dataChangeDetectionPolicy":null,"dataDeletionDetectionPolicy":null}' + headers: + cache-control: no-cache + content-length: '370' + content-type: application/json; odata.metadata=minimal + date: Fri, 01 May 2020 01:49:46 GMT + elapsed-time: '52' + etag: W/"0x8D7ED71EDA34383" + expires: '-1' + location: https://searchd88c1821.search.windows.net/datasources('sample-datasource')?api-version=2019-05-06-Preview + odata-version: '4.0' + pragma: no-cache + preference-applied: odata.include-annotations="*" + request-id: 09913646-8b4e-11ea-bf52-2816a845e8c6 + strict-transport-security: max-age=15724800; includeSubDomains + status: + code: 201 + message: Created + url: !!python/object/new:yarl.URL + state: !!python/tuple + - !!python/object/new:urllib.parse.SplitResult + - https + - searchd88c1821.search.windows.net + - /datasources + - api-version=2019-05-06-Preview + - '' +- request: + body: '{"name": "sample-datasource", "description": "updated", "type": "azureblob", + "credentials": {"connectionString": "DefaultEndpointsProtocol=https;AccountName=storagename;AccountKey=NzhL3hKZbJBuJ2484dPTR+xF30kYaWSSCbs2BzLgVVI1woqeST/1IgqaLm6QAOTxtGvxctSNbIR/1hW8yH+bJg==;EndpointSuffix=core.windows.net"}, + "container": {"name": "searchcontainer"}}' + headers: + Accept: + - application/json;odata.metadata=minimal + Content-Length: + - '345' + Content-Type: + - application/json + Prefer: + - return=representation + User-Agent: + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Windows-10-10.0.17763-SP0) + api-key: + - EAB9451773DF47CC4948501A01AA8C5D + method: PUT + uri: https://searchd88c1821.search.windows.net/datasources('sample-datasource')?api-version=2019-05-06-Preview + response: + body: + string: '{"@odata.context":"https://searchd88c1821.search.windows.net/$metadata#datasources/$entity","@odata.etag":"\"0x8D7ED71EDB1C519\"","name":"sample-datasource","description":"updated","type":"azureblob","subtype":null,"credentials":{"connectionString":null},"container":{"name":"searchcontainer","query":null},"dataChangeDetectionPolicy":null,"dataDeletionDetectionPolicy":null}' + headers: + cache-control: no-cache + content-encoding: gzip + content-length: '365' + content-type: application/json; odata.metadata=minimal + date: Fri, 01 May 2020 01:49:46 GMT + elapsed-time: '47' + etag: W/"0x8D7ED71EDB1C519" + expires: '-1' + odata-version: '4.0' + pragma: no-cache + preference-applied: odata.include-annotations="*" + request-id: 09bdcd08-8b4e-11ea-96c1-2816a845e8c6 + strict-transport-security: max-age=15724800; includeSubDomains + vary: Accept-Encoding + status: + code: 200 + message: OK + url: !!python/object/new:yarl.URL + state: !!python/tuple + - !!python/object/new:urllib.parse.SplitResult + - https + - searchd88c1821.search.windows.net + - /datasources('sample-datasource') + - api-version=2019-05-06-Preview + - '' +- request: + body: null + headers: + Accept: + - application/json;odata.metadata=minimal + If-Match: + - '"0x8D7ED71EDA34383"' + User-Agent: + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Windows-10-10.0.17763-SP0) + api-key: + - EAB9451773DF47CC4948501A01AA8C5D + method: DELETE + uri: https://searchd88c1821.search.windows.net/datasources('sample-datasource')?api-version=2019-05-06-Preview + response: + body: + string: '{"error":{"code":"","message":"The precondition given in one of the + request headers evaluated to false. No change was made to the resource from + this request."}}' + headers: + cache-control: no-cache + content-language: en + content-length: '160' + content-type: application/json; odata.metadata=minimal + date: Fri, 01 May 2020 01:49:47 GMT + elapsed-time: '5' + expires: '-1' + odata-version: '4.0' + pragma: no-cache + preference-applied: odata.include-annotations="*" + request-id: 09ccb6c2-8b4e-11ea-974c-2816a845e8c6 + strict-transport-security: max-age=15724800; includeSubDomains + status: + code: 412 + message: Precondition Failed + url: !!python/object/new:yarl.URL + state: !!python/tuple + - !!python/object/new:urllib.parse.SplitResult + - https + - searchd88c1821.search.windows.net + - /datasources('sample-datasource') + - api-version=2019-05-06-Preview + - '' +version: 1 diff --git a/sdk/search/azure-search-documents/tests/async_tests/recordings/test_service_live_async.test_delete_indexes.yaml b/sdk/search/azure-search-documents/tests/async_tests/recordings/test_service_live_async.test_delete_indexes.yaml index ca9a2389ff79..c79ff09e5ef7 100644 --- a/sdk/search/azure-search-documents/tests/async_tests/recordings/test_service_live_async.test_delete_indexes.yaml +++ b/sdk/search/azure-search-documents/tests/async_tests/recordings/test_service_live_async.test_delete_indexes.yaml @@ -5,9 +5,9 @@ interactions: Accept: - application/json;odata.metadata=minimal User-Agent: - - azsdk-python-search-documents/1.0.0b2 Python/3.6.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - CFBC99722708A5421EEAF35F420BF320 + - A267E470BFF120455C4300D9DF89C73B method: DELETE uri: https://search86db11ac.search.windows.net/indexes('drgqefsg')?api-version=2019-05-06-Preview response: @@ -15,32 +15,25 @@ interactions: string: '' headers: cache-control: no-cache - date: Tue, 31 Mar 2020 17:46:35 GMT - elapsed-time: '427' + date: Wed, 29 Apr 2020 23:30:55 GMT + elapsed-time: '220' expires: '-1' pragma: no-cache - request-id: 90f352fe-7377-11ea-9c63-5cf37071153c + request-id: 78b527f4-8a71-11ea-889b-8c8590507855 strict-transport-security: max-age=15724800; includeSubDomains status: code: 204 message: No Content - url: !!python/object/new:yarl.URL - state: !!python/tuple - - !!python/object/new:urllib.parse.SplitResult - - https - - search86db11ac.search.windows.net - - /indexes('drgqefsg') - - api-version=2019-05-06-Preview - - '' + url: https://search86db11ac.search.windows.net/indexes('drgqefsg')?api-version=2019-05-06-Preview - request: body: null headers: Accept: - application/json;odata.metadata=minimal User-Agent: - - azsdk-python-search-documents/1.0.0b2 Python/3.6.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - CFBC99722708A5421EEAF35F420BF320 + - A267E470BFF120455C4300D9DF89C73B method: GET uri: https://search86db11ac.search.windows.net/indexes?api-version=2019-05-06-Preview response: @@ -51,24 +44,17 @@ interactions: content-encoding: gzip content-length: '199' content-type: application/json; odata.metadata=minimal - date: Tue, 31 Mar 2020 17:46:40 GMT - elapsed-time: '26' + date: Wed, 29 Apr 2020 23:31:00 GMT + elapsed-time: '17' expires: '-1' odata-version: '4.0' pragma: no-cache preference-applied: odata.include-annotations="*" - request-id: 945637a6-7377-11ea-aeeb-5cf37071153c + request-id: 7be25078-8a71-11ea-889b-8c8590507855 strict-transport-security: max-age=15724800; includeSubDomains vary: Accept-Encoding status: code: 200 message: OK - url: !!python/object/new:yarl.URL - state: !!python/tuple - - !!python/object/new:urllib.parse.SplitResult - - https - - search86db11ac.search.windows.net - - /indexes - - api-version=2019-05-06-Preview - - '' + url: https://search86db11ac.search.windows.net/indexes?api-version=2019-05-06-Preview version: 1 diff --git a/sdk/search/azure-search-documents/tests/async_tests/recordings/test_service_live_async.test_delete_indexes_if_unchanged.yaml b/sdk/search/azure-search-documents/tests/async_tests/recordings/test_service_live_async.test_delete_indexes_if_unchanged.yaml new file mode 100644 index 000000000000..c9d04782ade4 --- /dev/null +++ b/sdk/search/azure-search-documents/tests/async_tests/recordings/test_service_live_async.test_delete_indexes_if_unchanged.yaml @@ -0,0 +1,139 @@ +interactions: +- request: + body: '{"name": "hotels", "fields": [{"name": "hotelId", "type": "Edm.String", + "key": true, "searchable": false}, {"name": "baseRate", "type": "Edm.Double"}], + "scoringProfiles": [{"name": "MyProfile"}], "corsOptions": {"allowedOrigins": + ["*"], "maxAgeInSeconds": 60}}' + headers: + Accept: + - application/json;odata.metadata=minimal + Content-Length: + - '260' + Content-Type: + - application/json + User-Agent: + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Windows-10-10.0.17763-SP0) + api-key: + - 80AE7802DD95A3AC15F78D806265235E + method: POST + uri: https://search912f16e6.search.windows.net/indexes?api-version=2019-05-06-Preview + response: + body: + string: '{"@odata.context":"https://search912f16e6.search.windows.net/$metadata#indexes/$entity","@odata.etag":"\"0x8D7ED71B008B075\"","name":"hotels","defaultScoringProfile":null,"fields":[{"name":"hotelId","type":"Edm.String","searchable":false,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":true,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"baseRate","type":"Edm.Double","searchable":false,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]}],"scoringProfiles":[{"name":"MyProfile","functionAggregation":null,"text":null,"functions":[]}],"corsOptions":{"allowedOrigins":["*"],"maxAgeInSeconds":60},"suggesters":[],"analyzers":[],"tokenizers":[],"tokenFilters":[],"charFilters":[],"encryptionKey":null,"similarity":null}' + headers: + cache-control: no-cache + content-length: '890' + content-type: application/json; odata.metadata=minimal + date: Fri, 01 May 2020 01:48:03 GMT + elapsed-time: '571' + etag: W/"0x8D7ED71B008B075" + expires: '-1' + location: https://search912f16e6.search.windows.net/indexes('hotels')?api-version=2019-05-06-Preview + odata-version: '4.0' + pragma: no-cache + preference-applied: odata.include-annotations="*" + request-id: cba6183e-8b4d-11ea-9e27-2816a845e8c6 + strict-transport-security: max-age=15724800; includeSubDomains + status: + code: 201 + message: Created + url: !!python/object/new:yarl.URL + state: !!python/tuple + - !!python/object/new:urllib.parse.SplitResult + - https + - search912f16e6.search.windows.net + - /indexes + - api-version=2019-05-06-Preview + - '' +- request: + body: '{"name": "hotels", "fields": [{"name": "hotelId", "type": "Edm.String", + "key": true, "searchable": false}, {"name": "baseRate", "type": "Edm.Double"}], + "scoringProfiles": [], "corsOptions": {"allowedOrigins": ["*"], "maxAgeInSeconds": + 60}}' + headers: + Accept: + - application/json;odata.metadata=minimal + Content-Length: + - '239' + Content-Type: + - application/json + Prefer: + - return=representation + User-Agent: + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Windows-10-10.0.17763-SP0) + api-key: + - 80AE7802DD95A3AC15F78D806265235E + method: PUT + uri: https://search912f16e6.search.windows.net/indexes('hotels')?api-version=2019-05-06-Preview + response: + body: + string: '{"@odata.context":"https://search912f16e6.search.windows.net/$metadata#indexes/$entity","@odata.etag":"\"0x8D7ED71B02BA833\"","name":"hotels","defaultScoringProfile":null,"fields":[{"name":"hotelId","type":"Edm.String","searchable":false,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":true,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"baseRate","type":"Edm.Double","searchable":false,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]}],"scoringProfiles":[],"corsOptions":{"allowedOrigins":["*"],"maxAgeInSeconds":60},"suggesters":[],"analyzers":[],"tokenizers":[],"tokenFilters":[],"charFilters":[],"encryptionKey":null,"similarity":null}' + headers: + cache-control: no-cache + content-encoding: gzip + content-length: '506' + content-type: application/json; odata.metadata=minimal + date: Fri, 01 May 2020 01:48:03 GMT + elapsed-time: '129' + etag: W/"0x8D7ED71B02BA833" + expires: '-1' + odata-version: '4.0' + pragma: no-cache + preference-applied: odata.include-annotations="*" + request-id: cc2b40f4-8b4d-11ea-aba8-2816a845e8c6 + strict-transport-security: max-age=15724800; includeSubDomains + vary: Accept-Encoding + status: + code: 200 + message: OK + url: !!python/object/new:yarl.URL + state: !!python/tuple + - !!python/object/new:urllib.parse.SplitResult + - https + - search912f16e6.search.windows.net + - /indexes('hotels') + - api-version=2019-05-06-Preview + - '' +- request: + body: null + headers: + Accept: + - application/json;odata.metadata=minimal + If-Match: + - '"0x8D7ED71B008B075"' + User-Agent: + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Windows-10-10.0.17763-SP0) + api-key: + - 80AE7802DD95A3AC15F78D806265235E + method: DELETE + uri: https://search912f16e6.search.windows.net/indexes('hotels')?api-version=2019-05-06-Preview + response: + body: + string: '{"error":{"code":"","message":"The precondition given in one of the + request headers evaluated to false. No change was made to the resource from + this request."}}' + headers: + cache-control: no-cache + content-language: en + content-length: '160' + content-type: application/json; odata.metadata=minimal + date: Fri, 01 May 2020 01:48:03 GMT + elapsed-time: '15' + expires: '-1' + odata-version: '4.0' + pragma: no-cache + preference-applied: odata.include-annotations="*" + request-id: cc49635c-8b4d-11ea-9b7f-2816a845e8c6 + strict-transport-security: max-age=15724800; includeSubDomains + status: + code: 412 + message: Precondition Failed + url: !!python/object/new:yarl.URL + state: !!python/tuple + - !!python/object/new:urllib.parse.SplitResult + - https + - search912f16e6.search.windows.net + - /indexes('hotels') + - api-version=2019-05-06-Preview + - '' +version: 1 diff --git a/sdk/search/azure-search-documents/tests/async_tests/recordings/test_service_live_async.test_delete_skillset_if_unchanged.yaml b/sdk/search/azure-search-documents/tests/async_tests/recordings/test_service_live_async.test_delete_skillset_if_unchanged.yaml new file mode 100644 index 000000000000..cef66c94416f --- /dev/null +++ b/sdk/search/azure-search-documents/tests/async_tests/recordings/test_service_live_async.test_delete_skillset_if_unchanged.yaml @@ -0,0 +1,138 @@ +interactions: +- request: + body: '{"name": "test-ss", "description": "desc", "skills": [{"@odata.type": "#Microsoft.Skills.Text.EntityRecognitionSkill", + "inputs": [{"name": "text", "source": "/document/content"}], "outputs": [{"name": + "organizations", "targetName": "organizations"}]}]}' + headers: + Accept: + - application/json;odata.metadata=minimal + Content-Length: + - '252' + Content-Type: + - application/json + User-Agent: + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Windows-10-10.0.17763-SP0) + api-key: + - 657C58F25F5510BEB3AB19482A2E8DD3 + method: POST + uri: https://searcha9e81761.search.windows.net/skillsets?api-version=2019-05-06-Preview + response: + body: + string: '{"@odata.context":"https://searcha9e81761.search.windows.net/$metadata#skillsets/$entity","@odata.etag":"\"0x8D7ED71D4C7EB65\"","name":"test-ss","description":"desc","skills":[{"@odata.type":"#Microsoft.Skills.Text.EntityRecognitionSkill","name":null,"description":null,"context":null,"categories":[],"defaultLanguageCode":null,"minimumPrecision":null,"includeTypelessEntities":null,"inputs":[{"name":"text","source":"/document/content","sourceContext":null,"inputs":[]}],"outputs":[{"name":"organizations","targetName":"organizations"}]}],"cognitiveServices":null,"knowledgeStore":null}' + headers: + cache-control: no-cache + content-length: '587' + content-type: application/json; odata.metadata=minimal + date: Fri, 01 May 2020 01:49:05 GMT + elapsed-time: '46' + etag: W/"0x8D7ED71D4C7EB65" + expires: '-1' + location: https://searcha9e81761.search.windows.net/skillsets('test-ss')?api-version=2019-05-06-Preview + odata-version: '4.0' + pragma: no-cache + preference-applied: odata.include-annotations="*" + request-id: f0c0d15a-8b4d-11ea-a53c-2816a845e8c6 + strict-transport-security: max-age=15724800; includeSubDomains + status: + code: 201 + message: Created + url: !!python/object/new:yarl.URL + state: !!python/tuple + - !!python/object/new:urllib.parse.SplitResult + - https + - searcha9e81761.search.windows.net + - /skillsets + - api-version=2019-05-06-Preview + - '' +- request: + body: '{"name": "test-ss", "description": "updated", "skills": [{"@odata.type": + "#Microsoft.Skills.Text.EntityRecognitionSkill", "inputs": [{"name": "text", + "source": "/document/content"}], "outputs": [{"name": "organizations", "targetName": + "organizations"}]}]}' + headers: + Accept: + - application/json;odata.metadata=minimal + Content-Length: + - '255' + Content-Type: + - application/json + Prefer: + - return=representation + User-Agent: + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Windows-10-10.0.17763-SP0) + api-key: + - 657C58F25F5510BEB3AB19482A2E8DD3 + method: PUT + uri: https://searcha9e81761.search.windows.net/skillsets('test-ss')?api-version=2019-05-06-Preview + response: + body: + string: '{"@odata.context":"https://searcha9e81761.search.windows.net/$metadata#skillsets/$entity","@odata.etag":"\"0x8D7ED71D4DADAA4\"","name":"test-ss","description":"updated","skills":[{"@odata.type":"#Microsoft.Skills.Text.EntityRecognitionSkill","name":null,"description":null,"context":null,"categories":[],"defaultLanguageCode":null,"minimumPrecision":null,"includeTypelessEntities":null,"inputs":[{"name":"text","source":"/document/content","sourceContext":null,"inputs":[]}],"outputs":[{"name":"organizations","targetName":"organizations"}]}],"cognitiveServices":null,"knowledgeStore":null}' + headers: + cache-control: no-cache + content-encoding: gzip + content-length: '466' + content-type: application/json; odata.metadata=minimal + date: Fri, 01 May 2020 01:49:05 GMT + elapsed-time: '64' + etag: W/"0x8D7ED71D4DADAA4" + expires: '-1' + odata-version: '4.0' + pragma: no-cache + preference-applied: odata.include-annotations="*" + request-id: f0e2e652-8b4d-11ea-ad8e-2816a845e8c6 + strict-transport-security: max-age=15724800; includeSubDomains + vary: Accept-Encoding + status: + code: 200 + message: OK + url: !!python/object/new:yarl.URL + state: !!python/tuple + - !!python/object/new:urllib.parse.SplitResult + - https + - searcha9e81761.search.windows.net + - /skillsets('test-ss') + - api-version=2019-05-06-Preview + - '' +- request: + body: null + headers: + Accept: + - application/json;odata.metadata=minimal + If-Match: + - '"0x8D7ED71D4C7EB65"' + User-Agent: + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Windows-10-10.0.17763-SP0) + api-key: + - 657C58F25F5510BEB3AB19482A2E8DD3 + method: DELETE + uri: https://searcha9e81761.search.windows.net/skillsets('test-ss')?api-version=2019-05-06-Preview + response: + body: + string: '{"error":{"code":"","message":"The precondition given in one of the + request headers evaluated to false. No change was made to the resource from + this request."}}' + headers: + cache-control: no-cache + content-language: en + content-length: '160' + content-type: application/json; odata.metadata=minimal + date: Fri, 01 May 2020 01:49:05 GMT + elapsed-time: '9' + expires: '-1' + odata-version: '4.0' + pragma: no-cache + preference-applied: odata.include-annotations="*" + request-id: f0f5521a-8b4d-11ea-bb06-2816a845e8c6 + strict-transport-security: max-age=15724800; includeSubDomains + status: + code: 412 + message: Precondition Failed + url: !!python/object/new:yarl.URL + state: !!python/tuple + - !!python/object/new:urllib.parse.SplitResult + - https + - searcha9e81761.search.windows.net + - /skillsets('test-ss') + - api-version=2019-05-06-Preview + - '' +version: 1 diff --git a/sdk/search/azure-search-documents/tests/async_tests/recordings/test_service_live_async.test_delete_synonym_map.yaml b/sdk/search/azure-search-documents/tests/async_tests/recordings/test_service_live_async.test_delete_synonym_map.yaml index 6824233ca83a..16b6ee981391 100644 --- a/sdk/search/azure-search-documents/tests/async_tests/recordings/test_service_live_async.test_delete_synonym_map.yaml +++ b/sdk/search/azure-search-documents/tests/async_tests/recordings/test_service_live_async.test_delete_synonym_map.yaml @@ -12,126 +12,26 @@ interactions: User-Agent: - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - 470830212F4D1C2D3C59A10623E4D45D + - E68F8C2BAE2BDB711153395E8AF5DBA2 method: POST uri: https://searchd31a1376.search.windows.net/synonymmaps?api-version=2019-05-06-Preview response: body: - string: '{"@odata.context":"https://searchd31a1376.search.windows.net/$metadata#synonymmaps/$entity","@odata.etag":"\"0x8D7E099019D2E0E\"","name":"test-syn-map","format":"solr","synonyms":"USA, + string: '{"@odata.context":"https://searchd31a1376.search.windows.net/$metadata#synonymmaps/$entity","@odata.etag":"\"0x8D7EC958EB24C8F\"","name":"test-syn-map","format":"solr","synonyms":"USA, United States, United States of America\nWashington, Wash. => WA","encryptionKey":null}' headers: cache-control: no-cache content-length: '272' content-type: application/json; odata.metadata=minimal - date: Tue, 14 Apr 2020 17:26:45 GMT - elapsed-time: '67' - etag: W/"0x8D7E099019D2E0E" + date: Wed, 29 Apr 2020 23:32:17 GMT + elapsed-time: '42' + etag: W/"0x8D7EC958EB24C8F" expires: '-1' - location: - - h - - t - - t - - p - - s - - ':' - - / - - / - - s - - e - - a - - r - - c - - h - - d - - '3' - - '1' - - a - - '1' - - '3' - - '7' - - '6' - - . - - s - - e - - a - - r - - c - - h - - . - - w - - i - - n - - d - - o - - w - - s - - . - - n - - e - - t - - / - - s - - y - - n - - o - - n - - y - - m - - m - - a - - p - - s - - ( - - '''' - - t - - e - - s - - t - - '-' - - s - - y - - n - - '-' - - m - - a - - p - - '''' - - ) - - '?' - - a - - p - - i - - '-' - - v - - e - - r - - s - - i - - o - - n - - '=' - - '2' - - '0' - - '1' - - '9' - - '-' - - '0' - - '5' - - '-' - - '0' - - '6' - - '-' - - P - - r - - e - - v - - i - - e - - w + location: https://searchd31a1376.search.windows.net/synonymmaps('test-syn-map')?api-version=2019-05-06-Preview odata-version: '4.0' pragma: no-cache preference-applied: odata.include-annotations="*" - request-id: 1d53d426-7e75-11ea-ab37-8c8590507855 + request-id: aa49623a-8a71-11ea-889b-8c8590507855 strict-transport-security: max-age=15724800; includeSubDomains status: code: 201 @@ -145,25 +45,25 @@ interactions: User-Agent: - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - 470830212F4D1C2D3C59A10623E4D45D + - E68F8C2BAE2BDB711153395E8AF5DBA2 method: GET uri: https://searchd31a1376.search.windows.net/synonymmaps?api-version=2019-05-06-Preview response: body: - string: '{"@odata.context":"https://searchd31a1376.search.windows.net/$metadata#synonymmaps","value":[{"@odata.etag":"\"0x8D7E099019D2E0E\"","name":"test-syn-map","format":"solr","synonyms":"USA, + string: '{"@odata.context":"https://searchd31a1376.search.windows.net/$metadata#synonymmaps","value":[{"@odata.etag":"\"0x8D7EC958EB24C8F\"","name":"test-syn-map","format":"solr","synonyms":"USA, United States, United States of America\nWashington, Wash. => WA","encryptionKey":null}]}' headers: cache-control: no-cache content-encoding: gzip content-length: '336' content-type: application/json; odata.metadata=minimal - date: Tue, 14 Apr 2020 17:26:45 GMT - elapsed-time: '18' + date: Wed, 29 Apr 2020 23:32:17 GMT + elapsed-time: '9' expires: '-1' odata-version: '4.0' pragma: no-cache preference-applied: odata.include-annotations="*" - request-id: 1d6c8610-7e75-11ea-ab37-8c8590507855 + request-id: aa5fb71a-8a71-11ea-889b-8c8590507855 strict-transport-security: max-age=15724800; includeSubDomains vary: Accept-Encoding status: @@ -178,7 +78,7 @@ interactions: User-Agent: - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - 470830212F4D1C2D3C59A10623E4D45D + - E68F8C2BAE2BDB711153395E8AF5DBA2 method: DELETE uri: https://searchd31a1376.search.windows.net/synonymmaps('test-syn-map')?api-version=2019-05-06-Preview response: @@ -186,11 +86,11 @@ interactions: string: '' headers: cache-control: no-cache - date: Tue, 14 Apr 2020 17:26:45 GMT - elapsed-time: '17' + date: Wed, 29 Apr 2020 23:32:17 GMT + elapsed-time: '16' expires: '-1' pragma: no-cache - request-id: 1d735c9c-7e75-11ea-ab37-8c8590507855 + request-id: aa64bfda-8a71-11ea-889b-8c8590507855 strict-transport-security: max-age=15724800; includeSubDomains status: code: 204 @@ -204,7 +104,7 @@ interactions: User-Agent: - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - 470830212F4D1C2D3C59A10623E4D45D + - E68F8C2BAE2BDB711153395E8AF5DBA2 method: GET uri: https://searchd31a1376.search.windows.net/synonymmaps?api-version=2019-05-06-Preview response: @@ -215,13 +115,13 @@ interactions: content-encoding: gzip content-length: '204' content-type: application/json; odata.metadata=minimal - date: Tue, 14 Apr 2020 17:26:45 GMT + date: Wed, 29 Apr 2020 23:32:17 GMT elapsed-time: '6' expires: '-1' odata-version: '4.0' pragma: no-cache preference-applied: odata.include-annotations="*" - request-id: 1d7a2036-7e75-11ea-ab37-8c8590507855 + request-id: aa6b2b86-8a71-11ea-889b-8c8590507855 strict-transport-security: max-age=15724800; includeSubDomains vary: Accept-Encoding status: diff --git a/sdk/search/azure-search-documents/tests/async_tests/recordings/test_service_live_async.test_delete_synonym_map_if_unchanged.yaml b/sdk/search/azure-search-documents/tests/async_tests/recordings/test_service_live_async.test_delete_synonym_map_if_unchanged.yaml new file mode 100644 index 000000000000..67a5f805c66f --- /dev/null +++ b/sdk/search/azure-search-documents/tests/async_tests/recordings/test_service_live_async.test_delete_synonym_map_if_unchanged.yaml @@ -0,0 +1,137 @@ +interactions: +- request: + body: '{"name": "test-syn-map", "format": "solr", "synonyms": "USA, United States, + United States of America\nWashington, Wash. => WA"}' + headers: + Accept: + - application/json;odata.metadata=minimal + Content-Length: + - '127' + Content-Type: + - application/json + User-Agent: + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Windows-10-10.0.17763-SP0) + api-key: + - 379F6C259E39EFF08F01F8D2429FF657 + method: POST + uri: https://searchf4b018b0.search.windows.net/synonymmaps?api-version=2019-05-06-Preview + response: + body: + string: '{"@odata.context":"https://searchf4b018b0.search.windows.net/$metadata#synonymmaps/$entity","@odata.etag":"\"0x8D7ED71BA2FE792\"","name":"test-syn-map","format":"solr","synonyms":"USA, + United States, United States of America\nWashington, Wash. => WA","encryptionKey":null}' + headers: + cache-control: no-cache + content-length: '272' + content-type: application/json; odata.metadata=minimal + date: Fri, 01 May 2020 01:48:20 GMT + elapsed-time: '23' + etag: W/"0x8D7ED71BA2FE792" + expires: '-1' + location: https://searchf4b018b0.search.windows.net/synonymmaps('test-syn-map')?api-version=2019-05-06-Preview + odata-version: '4.0' + pragma: no-cache + preference-applied: odata.include-annotations="*" + request-id: d62a27a6-8b4d-11ea-b123-2816a845e8c6 + strict-transport-security: max-age=15724800; includeSubDomains + status: + code: 201 + message: Created + url: !!python/object/new:yarl.URL + state: !!python/tuple + - !!python/object/new:urllib.parse.SplitResult + - https + - searchf4b018b0.search.windows.net + - /synonymmaps + - api-version=2019-05-06-Preview + - '' +- request: + body: '{"name": "test-syn-map", "format": "solr", "synonyms": "Washington, Wash. + => WA"}' + headers: + Accept: + - application/json;odata.metadata=minimal + Content-Length: + - '81' + Content-Type: + - application/json + Prefer: + - return=representation + User-Agent: + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Windows-10-10.0.17763-SP0) + api-key: + - 379F6C259E39EFF08F01F8D2429FF657 + method: PUT + uri: https://searchf4b018b0.search.windows.net/synonymmaps('test-syn-map')?api-version=2019-05-06-Preview + response: + body: + string: '{"@odata.context":"https://searchf4b018b0.search.windows.net/$metadata#synonymmaps/$entity","@odata.etag":"\"0x8D7ED71BA3AE613\"","name":"test-syn-map","format":"solr","synonyms":"Washington, + Wash. => WA","encryptionKey":null}' + headers: + cache-control: no-cache + content-encoding: gzip + content-length: '302' + content-type: application/json; odata.metadata=minimal + date: Fri, 01 May 2020 01:48:20 GMT + elapsed-time: '17' + etag: W/"0x8D7ED71BA3AE613" + expires: '-1' + odata-version: '4.0' + pragma: no-cache + preference-applied: odata.include-annotations="*" + request-id: d6493314-8b4d-11ea-90af-2816a845e8c6 + strict-transport-security: max-age=15724800; includeSubDomains + vary: Accept-Encoding + status: + code: 200 + message: OK + url: !!python/object/new:yarl.URL + state: !!python/tuple + - !!python/object/new:urllib.parse.SplitResult + - https + - searchf4b018b0.search.windows.net + - /synonymmaps('test-syn-map') + - api-version=2019-05-06-Preview + - '' +- request: + body: null + headers: + Accept: + - application/json;odata.metadata=minimal + If-Match: + - '"0x8D7ED71BA2FE792"' + User-Agent: + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Windows-10-10.0.17763-SP0) + api-key: + - 379F6C259E39EFF08F01F8D2429FF657 + method: DELETE + uri: https://searchf4b018b0.search.windows.net/synonymmaps('test-syn-map')?api-version=2019-05-06-Preview + response: + body: + string: '{"error":{"code":"","message":"The precondition given in one of the + request headers evaluated to false. No change was made to the resource from + this request."}}' + headers: + cache-control: no-cache + content-language: en + content-length: '160' + content-type: application/json; odata.metadata=minimal + date: Fri, 01 May 2020 01:48:20 GMT + elapsed-time: '140' + expires: '-1' + odata-version: '4.0' + pragma: no-cache + preference-applied: odata.include-annotations="*" + request-id: d653da30-8b4d-11ea-95d5-2816a845e8c6 + strict-transport-security: max-age=15724800; includeSubDomains + status: + code: 412 + message: Precondition Failed + url: !!python/object/new:yarl.URL + state: !!python/tuple + - !!python/object/new:urllib.parse.SplitResult + - https + - searchf4b018b0.search.windows.net + - /synonymmaps('test-syn-map') + - api-version=2019-05-06-Preview + - '' +version: 1 diff --git a/sdk/search/azure-search-documents/tests/async_tests/recordings/test_service_live_async.test_get_datasource_async.yaml b/sdk/search/azure-search-documents/tests/async_tests/recordings/test_service_live_async.test_get_datasource_async.yaml new file mode 100644 index 000000000000..47b1cdb6966c --- /dev/null +++ b/sdk/search/azure-search-documents/tests/async_tests/recordings/test_service_live_async.test_get_datasource_async.yaml @@ -0,0 +1,73 @@ +interactions: +- request: + body: '{"name": "sample-datasource", "type": "azureblob", "credentials": {"connectionString": + "DefaultEndpointsProtocol=https;AccountName=storagename;AccountKey=NzhL3hKZbJBuJ2484dPTR+xF30kYaWSSCbs2BzLgVVI1woqeST/1IgqaLm6QAOTxtGvxctSNbIR/1hW8yH+bJg==;EndpointSuffix=core.windows.net"}, + "container": {"name": "searchcontainer"}}' + headers: + Accept: + - application/json;odata.metadata=minimal + Content-Length: + - '319' + Content-Type: + - application/json + User-Agent: + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) + api-key: + - 3C11009E981E0448385CCC14CFCA14D8 + method: POST + uri: https://searchfa0d1431.search.windows.net/datasources?api-version=2019-05-06-Preview + response: + body: + string: '{"@odata.context":"https://searchfa0d1431.search.windows.net/$metadata#datasources/$entity","@odata.etag":"\"0x8D7EC95BD275436\"","name":"sample-datasource","description":null,"type":"azureblob","subtype":null,"credentials":{"connectionString":null},"container":{"name":"searchcontainer","query":null},"dataChangeDetectionPolicy":null,"dataDeletionDetectionPolicy":null}' + headers: + cache-control: no-cache + content-length: '370' + content-type: application/json; odata.metadata=minimal + date: Wed, 29 Apr 2020 23:33:36 GMT + elapsed-time: '52' + etag: W/"0x8D7EC95BD275436" + expires: '-1' + location: https://searchfa0d1431.search.windows.net/datasources('sample-datasource')?api-version=2019-05-06-Preview + odata-version: '4.0' + pragma: no-cache + preference-applied: odata.include-annotations="*" + request-id: d8bafb42-8a71-11ea-889b-8c8590507855 + strict-transport-security: max-age=15724800; includeSubDomains + status: + code: 201 + message: Created + url: https://searchfa0d1431.search.windows.net/datasources?api-version=2019-05-06-Preview +- request: + body: null + headers: + Accept: + - application/json;odata.metadata=minimal + User-Agent: + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) + api-key: + - 3C11009E981E0448385CCC14CFCA14D8 + method: GET + uri: https://searchfa0d1431.search.windows.net/datasources('sample-datasource')?api-version=2019-05-06-Preview + response: + body: + string: '{"@odata.context":"https://searchfa0d1431.search.windows.net/$metadata#datasources/$entity","@odata.etag":"\"0x8D7EC95BD275436\"","name":"sample-datasource","description":null,"type":"azureblob","subtype":null,"credentials":{"connectionString":null},"container":{"name":"searchcontainer","query":null},"dataChangeDetectionPolicy":null,"dataDeletionDetectionPolicy":null}' + headers: + cache-control: no-cache + content-encoding: gzip + content-length: '359' + content-type: application/json; odata.metadata=minimal + date: Wed, 29 Apr 2020 23:33:36 GMT + elapsed-time: '5' + etag: W/"0x8D7EC95BD275436" + expires: '-1' + odata-version: '4.0' + pragma: no-cache + preference-applied: odata.include-annotations="*" + request-id: d8d38216-8a71-11ea-889b-8c8590507855 + strict-transport-security: max-age=15724800; includeSubDomains + vary: Accept-Encoding + status: + code: 200 + message: OK + url: https://searchfa0d1431.search.windows.net/datasources('sample-datasource')?api-version=2019-05-06-Preview +version: 1 diff --git a/sdk/search/azure-search-documents/tests/async_tests/recordings/test_service_live_async.test_get_index.yaml b/sdk/search/azure-search-documents/tests/async_tests/recordings/test_service_live_async.test_get_index.yaml index 48557431337a..7a28880bad37 100644 --- a/sdk/search/azure-search-documents/tests/async_tests/recordings/test_service_live_async.test_get_index.yaml +++ b/sdk/search/azure-search-documents/tests/async_tests/recordings/test_service_live_async.test_get_index.yaml @@ -5,38 +5,31 @@ interactions: Accept: - application/json;odata.metadata=minimal User-Agent: - - azsdk-python-search-documents/1.0.0b2 Python/3.6.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - 2941B6DA01D6AE66566D128921ED1EA2 + - 094C5091C3BFA239AA6E652B4F4BCF9E method: GET uri: https://search32fc0fa1.search.windows.net/indexes('drgqefsg')?api-version=2019-05-06-Preview response: body: - string: '{"@odata.context":"https://search32fc0fa1.search.windows.net/$metadata#indexes/$entity","@odata.etag":"\"0x8D7D59B80A3122F\"","name":"drgqefsg","defaultScoringProfile":null,"fields":[{"name":"hotelId","type":"Edm.String","searchable":false,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":true,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"hotelName","type":"Edm.String","searchable":true,"filterable":true,"retrievable":true,"sortable":true,"facetable":false,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"description","type":"Edm.String","searchable":true,"filterable":false,"retrievable":true,"sortable":false,"facetable":false,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":"en.lucene","synonymMaps":[]},{"name":"descriptionFr","type":"Edm.String","searchable":true,"filterable":false,"retrievable":true,"sortable":false,"facetable":false,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":"fr.lucene","synonymMaps":[]},{"name":"category","type":"Edm.String","searchable":true,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"tags","type":"Collection(Edm.String)","searchable":true,"filterable":true,"retrievable":true,"sortable":false,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"parkingIncluded","type":"Edm.Boolean","searchable":false,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"smokingAllowed","type":"Edm.Boolean","searchable":false,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"lastRenovationDate","type":"Edm.DateTimeOffset","searchable":false,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"rating","type":"Edm.Int32","searchable":false,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"location","type":"Edm.GeographyPoint","searchable":false,"filterable":true,"retrievable":true,"sortable":true,"facetable":false,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"address","type":"Edm.ComplexType","fields":[{"name":"streetAddress","type":"Edm.String","searchable":true,"filterable":false,"retrievable":true,"sortable":false,"facetable":false,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"city","type":"Edm.String","searchable":true,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"stateProvince","type":"Edm.String","searchable":true,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"country","type":"Edm.String","searchable":true,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"postalCode","type":"Edm.String","searchable":true,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]}]},{"name":"rooms","type":"Collection(Edm.ComplexType)","fields":[{"name":"description","type":"Edm.String","searchable":true,"filterable":false,"retrievable":true,"sortable":false,"facetable":false,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":"en.lucene","synonymMaps":[]},{"name":"descriptionFr","type":"Edm.String","searchable":true,"filterable":false,"retrievable":true,"sortable":false,"facetable":false,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":"fr.lucene","synonymMaps":[]},{"name":"type","type":"Edm.String","searchable":true,"filterable":true,"retrievable":true,"sortable":false,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"baseRate","type":"Edm.Double","searchable":false,"filterable":true,"retrievable":true,"sortable":false,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"bedOptions","type":"Edm.String","searchable":true,"filterable":true,"retrievable":true,"sortable":false,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"sleepsCount","type":"Edm.Int32","searchable":false,"filterable":true,"retrievable":true,"sortable":false,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"smokingAllowed","type":"Edm.Boolean","searchable":false,"filterable":true,"retrievable":true,"sortable":false,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"tags","type":"Collection(Edm.String)","searchable":true,"filterable":true,"retrievable":true,"sortable":false,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]}]}],"scoringProfiles":[{"name":"nearest","functionAggregation":"sum","text":null,"functions":[{"fieldName":"location","interpolation":"linear","type":"distance","boost":2.0,"freshness":null,"magnitude":null,"distance":{"referencePointParameter":"myloc","boostingDistance":100.0},"tag":null}]}],"corsOptions":null,"suggesters":[{"name":"sg","searchMode":"analyzingInfixMatching","sourceFields":["description","hotelName"]}],"analyzers":[],"tokenizers":[],"tokenFilters":[],"charFilters":[],"encryptionKey":null,"similarity":null}' + string: '{"@odata.context":"https://search32fc0fa1.search.windows.net/$metadata#indexes/$entity","@odata.etag":"\"0x8D7EC95653038C1\"","name":"drgqefsg","defaultScoringProfile":null,"fields":[{"name":"hotelId","type":"Edm.String","searchable":false,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":true,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"hotelName","type":"Edm.String","searchable":true,"filterable":true,"retrievable":true,"sortable":true,"facetable":false,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"description","type":"Edm.String","searchable":true,"filterable":false,"retrievable":true,"sortable":false,"facetable":false,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":"en.lucene","synonymMaps":[]},{"name":"descriptionFr","type":"Edm.String","searchable":true,"filterable":false,"retrievable":true,"sortable":false,"facetable":false,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":"fr.lucene","synonymMaps":[]},{"name":"category","type":"Edm.String","searchable":true,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"tags","type":"Collection(Edm.String)","searchable":true,"filterable":true,"retrievable":true,"sortable":false,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"parkingIncluded","type":"Edm.Boolean","searchable":false,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"smokingAllowed","type":"Edm.Boolean","searchable":false,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"lastRenovationDate","type":"Edm.DateTimeOffset","searchable":false,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"rating","type":"Edm.Int32","searchable":false,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"location","type":"Edm.GeographyPoint","searchable":false,"filterable":true,"retrievable":true,"sortable":true,"facetable":false,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"address","type":"Edm.ComplexType","fields":[{"name":"streetAddress","type":"Edm.String","searchable":true,"filterable":false,"retrievable":true,"sortable":false,"facetable":false,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"city","type":"Edm.String","searchable":true,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"stateProvince","type":"Edm.String","searchable":true,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"country","type":"Edm.String","searchable":true,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"postalCode","type":"Edm.String","searchable":true,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]}]},{"name":"rooms","type":"Collection(Edm.ComplexType)","fields":[{"name":"description","type":"Edm.String","searchable":true,"filterable":false,"retrievable":true,"sortable":false,"facetable":false,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":"en.lucene","synonymMaps":[]},{"name":"descriptionFr","type":"Edm.String","searchable":true,"filterable":false,"retrievable":true,"sortable":false,"facetable":false,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":"fr.lucene","synonymMaps":[]},{"name":"type","type":"Edm.String","searchable":true,"filterable":true,"retrievable":true,"sortable":false,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"baseRate","type":"Edm.Double","searchable":false,"filterable":true,"retrievable":true,"sortable":false,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"bedOptions","type":"Edm.String","searchable":true,"filterable":true,"retrievable":true,"sortable":false,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"sleepsCount","type":"Edm.Int32","searchable":false,"filterable":true,"retrievable":true,"sortable":false,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"smokingAllowed","type":"Edm.Boolean","searchable":false,"filterable":true,"retrievable":true,"sortable":false,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"tags","type":"Collection(Edm.String)","searchable":true,"filterable":true,"retrievable":true,"sortable":false,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]}]}],"scoringProfiles":[{"name":"nearest","functionAggregation":"sum","text":null,"functions":[{"fieldName":"location","interpolation":"linear","type":"distance","boost":2.0,"freshness":null,"magnitude":null,"distance":{"referencePointParameter":"myloc","boostingDistance":100.0},"tag":null}]}],"corsOptions":null,"suggesters":[{"name":"sg","searchMode":"analyzingInfixMatching","sourceFields":["description","hotelName"]}],"analyzers":[],"tokenizers":[],"tokenFilters":[],"charFilters":[],"encryptionKey":null,"similarity":null}' headers: cache-control: no-cache content-encoding: gzip content-length: '1125' content-type: application/json; odata.metadata=minimal - date: Tue, 31 Mar 2020 17:46:59 GMT - elapsed-time: '83' - etag: W/"0x8D7D59B80A3122F" + date: Wed, 29 Apr 2020 23:31:12 GMT + elapsed-time: '55' + etag: W/"0x8D7EC95653038C1" expires: '-1' odata-version: '4.0' pragma: no-cache preference-applied: odata.include-annotations="*" - request-id: 9f6fa36e-7377-11ea-8651-5cf37071153c + request-id: 82e74360-8a71-11ea-889b-8c8590507855 strict-transport-security: max-age=15724800; includeSubDomains vary: Accept-Encoding status: code: 200 message: OK - url: !!python/object/new:yarl.URL - state: !!python/tuple - - !!python/object/new:urllib.parse.SplitResult - - https - - search32fc0fa1.search.windows.net - - /indexes('drgqefsg') - - api-version=2019-05-06-Preview - - '' + url: https://search32fc0fa1.search.windows.net/indexes('drgqefsg')?api-version=2019-05-06-Preview version: 1 diff --git a/sdk/search/azure-search-documents/tests/async_tests/recordings/test_service_live_async.test_get_index_statistics.yaml b/sdk/search/azure-search-documents/tests/async_tests/recordings/test_service_live_async.test_get_index_statistics.yaml index ddbc866f4894..097a2170a169 100644 --- a/sdk/search/azure-search-documents/tests/async_tests/recordings/test_service_live_async.test_get_index_statistics.yaml +++ b/sdk/search/azure-search-documents/tests/async_tests/recordings/test_service_live_async.test_get_index_statistics.yaml @@ -5,9 +5,9 @@ interactions: Accept: - application/json;odata.metadata=minimal User-Agent: - - azsdk-python-search-documents/1.0.0b2 Python/3.6.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - 2BFE2F92681F540133314EC0DC5B803C + - 3DB2E070C62F5424D11A4BAAE184B3EF method: GET uri: https://searchfabb144b.search.windows.net/indexes('drgqefsg')/search.stats?api-version=2019-05-06-Preview response: @@ -18,24 +18,17 @@ interactions: content-encoding: gzip content-length: '263' content-type: application/json; odata.metadata=minimal - date: Tue, 31 Mar 2020 17:47:15 GMT - elapsed-time: '26' + date: Wed, 29 Apr 2020 23:31:24 GMT + elapsed-time: '31' expires: '-1' odata-version: '4.0' pragma: no-cache preference-applied: odata.include-annotations="*" - request-id: a904a154-7377-11ea-8f36-5cf37071153c + request-id: 8a5b6cd4-8a71-11ea-889b-8c8590507855 strict-transport-security: max-age=15724800; includeSubDomains vary: Accept-Encoding status: code: 200 message: OK - url: !!python/object/new:yarl.URL - state: !!python/tuple - - !!python/object/new:urllib.parse.SplitResult - - https - - searchfabb144b.search.windows.net - - /indexes('drgqefsg')/search.stats - - api-version=2019-05-06-Preview - - '' + url: https://searchfabb144b.search.windows.net/indexes('drgqefsg')/search.stats?api-version=2019-05-06-Preview version: 1 diff --git a/sdk/search/azure-search-documents/tests/async_tests/recordings/test_service_live_async.test_get_service_statistics.yaml b/sdk/search/azure-search-documents/tests/async_tests/recordings/test_service_live_async.test_get_service_statistics.yaml index 47fcdd1f0e5c..152af87ead76 100644 --- a/sdk/search/azure-search-documents/tests/async_tests/recordings/test_service_live_async.test_get_service_statistics.yaml +++ b/sdk/search/azure-search-documents/tests/async_tests/recordings/test_service_live_async.test_get_service_statistics.yaml @@ -5,9 +5,9 @@ interactions: Accept: - application/json;odata.metadata=minimal User-Agent: - - azsdk-python-search-documents/1.0.0b2 Python/3.6.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - BCC2B5F7B4D46977C101187522DA6F26 + - A4B33DCE35FD438DFDF33E31096E8B8A method: GET uri: https://search24f71524.search.windows.net/servicestats?api-version=2019-05-06-Preview response: @@ -18,24 +18,17 @@ interactions: content-encoding: gzip content-length: '430' content-type: application/json; odata.metadata=minimal - date: Tue, 31 Mar 2020 17:47:26 GMT - elapsed-time: '99' + date: Wed, 29 Apr 2020 23:30:07 GMT + elapsed-time: '36' expires: '-1' odata-version: '4.0' pragma: no-cache preference-applied: odata.include-annotations="*" - request-id: af77158a-7377-11ea-b9f9-5cf37071153c + request-id: 5c1c72a0-8a71-11ea-889b-8c8590507855 strict-transport-security: max-age=15724800; includeSubDomains vary: Accept-Encoding status: code: 200 message: OK - url: !!python/object/new:yarl.URL - state: !!python/tuple - - !!python/object/new:urllib.parse.SplitResult - - https - - search24f71524.search.windows.net - - /servicestats - - api-version=2019-05-06-Preview - - '' + url: https://search24f71524.search.windows.net/servicestats?api-version=2019-05-06-Preview version: 1 diff --git a/sdk/search/azure-search-documents/tests/async_tests/recordings/test_service_live_async.test_get_synonym_map.yaml b/sdk/search/azure-search-documents/tests/async_tests/recordings/test_service_live_async.test_get_synonym_map.yaml index 738600fbba88..c442e06c0f1a 100644 --- a/sdk/search/azure-search-documents/tests/async_tests/recordings/test_service_live_async.test_get_synonym_map.yaml +++ b/sdk/search/azure-search-documents/tests/async_tests/recordings/test_service_live_async.test_get_synonym_map.yaml @@ -12,126 +12,26 @@ interactions: User-Agent: - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - 2E8623FC5A5E348848DEAEEA46B1123F + - DDCE707C06F6DE83869CDD960F1756EC method: POST uri: https://search9aee1243.search.windows.net/synonymmaps?api-version=2019-05-06-Preview response: body: - string: '{"@odata.context":"https://search9aee1243.search.windows.net/$metadata#synonymmaps/$entity","@odata.etag":"\"0x8D7E099682721EF\"","name":"test-syn-map","format":"solr","synonyms":"USA, + string: '{"@odata.context":"https://search9aee1243.search.windows.net/$metadata#synonymmaps/$entity","@odata.etag":"\"0x8D7EC95958C0C98\"","name":"test-syn-map","format":"solr","synonyms":"USA, United States, United States of America\nWashington, Wash. => WA","encryptionKey":null}' headers: cache-control: no-cache content-length: '272' content-type: application/json; odata.metadata=minimal - date: Tue, 14 Apr 2020 17:29:37 GMT - elapsed-time: '40' - etag: W/"0x8D7E099682721EF" + date: Wed, 29 Apr 2020 23:32:29 GMT + elapsed-time: '41' + etag: W/"0x8D7EC95958C0C98" expires: '-1' - location: - - h - - t - - t - - p - - s - - ':' - - / - - / - - s - - e - - a - - r - - c - - h - - '9' - - a - - e - - e - - '1' - - '2' - - '4' - - '3' - - . - - s - - e - - a - - r - - c - - h - - . - - w - - i - - n - - d - - o - - w - - s - - . - - n - - e - - t - - / - - s - - y - - n - - o - - n - - y - - m - - m - - a - - p - - s - - ( - - '''' - - t - - e - - s - - t - - '-' - - s - - y - - n - - '-' - - m - - a - - p - - '''' - - ) - - '?' - - a - - p - - i - - '-' - - v - - e - - r - - s - - i - - o - - n - - '=' - - '2' - - '0' - - '1' - - '9' - - '-' - - '0' - - '5' - - '-' - - '0' - - '6' - - '-' - - P - - r - - e - - v - - i - - e - - w + location: https://search9aee1243.search.windows.net/synonymmaps('test-syn-map')?api-version=2019-05-06-Preview odata-version: '4.0' pragma: no-cache preference-applied: odata.include-annotations="*" - request-id: 83de33ee-7e75-11ea-98e4-8c8590507855 + request-id: b124e6ec-8a71-11ea-889b-8c8590507855 strict-transport-security: max-age=15724800; includeSubDomains status: code: 201 @@ -145,25 +45,25 @@ interactions: User-Agent: - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - 2E8623FC5A5E348848DEAEEA46B1123F + - DDCE707C06F6DE83869CDD960F1756EC method: GET uri: https://search9aee1243.search.windows.net/synonymmaps?api-version=2019-05-06-Preview response: body: - string: '{"@odata.context":"https://search9aee1243.search.windows.net/$metadata#synonymmaps","value":[{"@odata.etag":"\"0x8D7E099682721EF\"","name":"test-syn-map","format":"solr","synonyms":"USA, + string: '{"@odata.context":"https://search9aee1243.search.windows.net/$metadata#synonymmaps","value":[{"@odata.etag":"\"0x8D7EC95958C0C98\"","name":"test-syn-map","format":"solr","synonyms":"USA, United States, United States of America\nWashington, Wash. => WA","encryptionKey":null}]}' headers: cache-control: no-cache content-encoding: gzip - content-length: '336' + content-length: '335' content-type: application/json; odata.metadata=minimal - date: Tue, 14 Apr 2020 17:29:37 GMT - elapsed-time: '13' + date: Wed, 29 Apr 2020 23:32:29 GMT + elapsed-time: '49' expires: '-1' odata-version: '4.0' pragma: no-cache preference-applied: odata.include-annotations="*" - request-id: 83f64164-7e75-11ea-98e4-8c8590507855 + request-id: b1391b6c-8a71-11ea-889b-8c8590507855 strict-transport-security: max-age=15724800; includeSubDomains vary: Accept-Encoding status: @@ -178,26 +78,26 @@ interactions: User-Agent: - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - 2E8623FC5A5E348848DEAEEA46B1123F + - DDCE707C06F6DE83869CDD960F1756EC method: GET uri: https://search9aee1243.search.windows.net/synonymmaps('test-syn-map')?api-version=2019-05-06-Preview response: body: - string: '{"@odata.context":"https://search9aee1243.search.windows.net/$metadata#synonymmaps/$entity","@odata.etag":"\"0x8D7E099682721EF\"","name":"test-syn-map","format":"solr","synonyms":"USA, + string: '{"@odata.context":"https://search9aee1243.search.windows.net/$metadata#synonymmaps/$entity","@odata.etag":"\"0x8D7EC95958C0C98\"","name":"test-syn-map","format":"solr","synonyms":"USA, United States, United States of America\nWashington, Wash. => WA","encryptionKey":null}' headers: cache-control: no-cache content-encoding: gzip content-length: '331' content-type: application/json; odata.metadata=minimal - date: Tue, 14 Apr 2020 17:29:37 GMT - elapsed-time: '7' - etag: W/"0x8D7E099682721EF" + date: Wed, 29 Apr 2020 23:32:29 GMT + elapsed-time: '6' + etag: W/"0x8D7EC95958C0C98" expires: '-1' odata-version: '4.0' pragma: no-cache preference-applied: odata.include-annotations="*" - request-id: 83fc903c-7e75-11ea-98e4-8c8590507855 + request-id: b14468aa-8a71-11ea-889b-8c8590507855 strict-transport-security: max-age=15724800; includeSubDomains vary: Accept-Encoding status: diff --git a/sdk/search/azure-search-documents/tests/async_tests/recordings/test_service_live_async.test_get_synonym_maps.yaml b/sdk/search/azure-search-documents/tests/async_tests/recordings/test_service_live_async.test_get_synonym_maps.yaml index 82a781a0b3af..9d023a9d9f9a 100644 --- a/sdk/search/azure-search-documents/tests/async_tests/recordings/test_service_live_async.test_get_synonym_maps.yaml +++ b/sdk/search/azure-search-documents/tests/async_tests/recordings/test_service_live_async.test_get_synonym_maps.yaml @@ -12,26 +12,26 @@ interactions: User-Agent: - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - C4754CC36E864ED486D0891B45271D58 + - 49925E98B4E6A6E7BB8023C66DCE85A0 method: POST uri: https://searchada412b6.search.windows.net/synonymmaps?api-version=2019-05-06-Preview response: body: - string: '{"@odata.context":"https://searchada412b6.search.windows.net/$metadata#synonymmaps/$entity","@odata.etag":"\"0x8D7E637BE8C9216\"","name":"test-syn-map-1","format":"solr","synonyms":"USA, + string: '{"@odata.context":"https://searchada412b6.search.windows.net/$metadata#synonymmaps/$entity","@odata.etag":"\"0x8D7EC959CF79C3E\"","name":"test-syn-map-1","format":"solr","synonyms":"USA, United States, United States of America","encryptionKey":null}' headers: cache-control: no-cache content-length: '249' content-type: application/json; odata.metadata=minimal - date: Tue, 21 Apr 2020 21:05:39 GMT - elapsed-time: '47' - etag: W/"0x8D7E637BE8C9216" + date: Wed, 29 Apr 2020 23:32:42 GMT + elapsed-time: '35' + etag: W/"0x8D7EC959CF79C3E" expires: '-1' location: https://searchada412b6.search.windows.net/synonymmaps('test-syn-map-1')?api-version=2019-05-06-Preview odata-version: '4.0' pragma: no-cache preference-applied: odata.include-annotations="*" - request-id: d955bf88-8413-11ea-93b9-8c8590507855 + request-id: b8907658-8a71-11ea-889b-8c8590507855 strict-transport-security: max-age=15724800; includeSubDomains status: code: 201 @@ -50,26 +50,26 @@ interactions: User-Agent: - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - C4754CC36E864ED486D0891B45271D58 + - 49925E98B4E6A6E7BB8023C66DCE85A0 method: POST uri: https://searchada412b6.search.windows.net/synonymmaps?api-version=2019-05-06-Preview response: body: - string: '{"@odata.context":"https://searchada412b6.search.windows.net/$metadata#synonymmaps/$entity","@odata.etag":"\"0x8D7E637BE94349C\"","name":"test-syn-map-2","format":"solr","synonyms":"Washington, + string: '{"@odata.context":"https://searchada412b6.search.windows.net/$metadata#synonymmaps/$entity","@odata.etag":"\"0x8D7EC959CFF17A5\"","name":"test-syn-map-2","format":"solr","synonyms":"Washington, Wash. => WA","encryptionKey":null}' headers: cache-control: no-cache content-length: '228' content-type: application/json; odata.metadata=minimal - date: Tue, 21 Apr 2020 21:05:39 GMT - elapsed-time: '23' - etag: W/"0x8D7E637BE94349C" + date: Wed, 29 Apr 2020 23:32:42 GMT + elapsed-time: '24' + etag: W/"0x8D7EC959CFF17A5" expires: '-1' location: https://searchada412b6.search.windows.net/synonymmaps('test-syn-map-2')?api-version=2019-05-06-Preview odata-version: '4.0' pragma: no-cache preference-applied: odata.include-annotations="*" - request-id: d96e56b0-8413-11ea-93b9-8c8590507855 + request-id: b8a40fc4-8a71-11ea-889b-8c8590507855 strict-transport-security: max-age=15724800; includeSubDomains status: code: 201 @@ -83,26 +83,26 @@ interactions: User-Agent: - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - C4754CC36E864ED486D0891B45271D58 + - 49925E98B4E6A6E7BB8023C66DCE85A0 method: GET uri: https://searchada412b6.search.windows.net/synonymmaps?api-version=2019-05-06-Preview response: body: - string: '{"@odata.context":"https://searchada412b6.search.windows.net/$metadata#synonymmaps","value":[{"@odata.etag":"\"0x8D7E637BE8C9216\"","name":"test-syn-map-1","format":"solr","synonyms":"USA, - United States, United States of America","encryptionKey":null},{"@odata.etag":"\"0x8D7E637BE94349C\"","name":"test-syn-map-2","format":"solr","synonyms":"Washington, + string: '{"@odata.context":"https://searchada412b6.search.windows.net/$metadata#synonymmaps","value":[{"@odata.etag":"\"0x8D7EC959CF79C3E\"","name":"test-syn-map-1","format":"solr","synonyms":"USA, + United States, United States of America","encryptionKey":null},{"@odata.etag":"\"0x8D7EC959CFF17A5\"","name":"test-syn-map-2","format":"solr","synonyms":"Washington, Wash. => WA","encryptionKey":null}]}' headers: cache-control: no-cache content-encoding: gzip - content-length: '357' + content-length: '356' content-type: application/json; odata.metadata=minimal - date: Tue, 21 Apr 2020 21:05:39 GMT - elapsed-time: '16' + date: Wed, 29 Apr 2020 23:32:42 GMT + elapsed-time: '13' expires: '-1' odata-version: '4.0' pragma: no-cache preference-applied: odata.include-annotations="*" - request-id: d976a48c-8413-11ea-93b9-8c8590507855 + request-id: b8abc174-8a71-11ea-889b-8c8590507855 strict-transport-security: max-age=15724800; includeSubDomains vary: Accept-Encoding status: diff --git a/sdk/search/azure-search-documents/tests/async_tests/recordings/test_service_live_async.test_list_datasource_async.yaml b/sdk/search/azure-search-documents/tests/async_tests/recordings/test_service_live_async.test_list_datasource_async.yaml new file mode 100644 index 000000000000..eab17561e0e0 --- /dev/null +++ b/sdk/search/azure-search-documents/tests/async_tests/recordings/test_service_live_async.test_list_datasource_async.yaml @@ -0,0 +1,110 @@ +interactions: +- request: + body: '{"name": "sample-datasource", "type": "azureblob", "credentials": {"connectionString": + "DefaultEndpointsProtocol=https;AccountName=storagename;AccountKey=NzhL3hKZbJBuJ2484dPTR+xF30kYaWSSCbs2BzLgVVI1woqeST/1IgqaLm6QAOTxtGvxctSNbIR/1hW8yH+bJg==;EndpointSuffix=core.windows.net"}, + "container": {"name": "searchcontainer"}}' + headers: + Accept: + - application/json;odata.metadata=minimal + Content-Length: + - '319' + Content-Type: + - application/json + User-Agent: + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) + api-key: + - EB95AE283A4776332B8DEC0FB9C57ECE + method: POST + uri: https://search101414ad.search.windows.net/datasources?api-version=2019-05-06-Preview + response: + body: + string: '{"@odata.context":"https://search101414ad.search.windows.net/$metadata#datasources/$entity","@odata.etag":"\"0x8D7EC95C3D255DF\"","name":"sample-datasource","description":null,"type":"azureblob","subtype":null,"credentials":{"connectionString":null},"container":{"name":"searchcontainer","query":null},"dataChangeDetectionPolicy":null,"dataDeletionDetectionPolicy":null}' + headers: + cache-control: no-cache + content-length: '370' + content-type: application/json; odata.metadata=minimal + date: Wed, 29 Apr 2020 23:33:46 GMT + elapsed-time: '30' + etag: W/"0x8D7EC95C3D255DF" + expires: '-1' + location: https://search101414ad.search.windows.net/datasources('sample-datasource')?api-version=2019-05-06-Preview + odata-version: '4.0' + pragma: no-cache + preference-applied: odata.include-annotations="*" + request-id: df6b8b96-8a71-11ea-889b-8c8590507855 + strict-transport-security: max-age=15724800; includeSubDomains + status: + code: 201 + message: Created + url: https://search101414ad.search.windows.net/datasources?api-version=2019-05-06-Preview +- request: + body: '{"name": "another-sample", "type": "azureblob", "credentials": {"connectionString": + "DefaultEndpointsProtocol=https;AccountName=storagename;AccountKey=NzhL3hKZbJBuJ2484dPTR+xF30kYaWSSCbs2BzLgVVI1woqeST/1IgqaLm6QAOTxtGvxctSNbIR/1hW8yH+bJg==;EndpointSuffix=core.windows.net"}, + "container": {"name": "searchcontainer"}}' + headers: + Accept: + - application/json;odata.metadata=minimal + Content-Length: + - '316' + Content-Type: + - application/json + User-Agent: + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) + api-key: + - EB95AE283A4776332B8DEC0FB9C57ECE + method: POST + uri: https://search101414ad.search.windows.net/datasources?api-version=2019-05-06-Preview + response: + body: + string: '{"@odata.context":"https://search101414ad.search.windows.net/$metadata#datasources/$entity","@odata.etag":"\"0x8D7EC95C3DB0A09\"","name":"another-sample","description":null,"type":"azureblob","subtype":null,"credentials":{"connectionString":null},"container":{"name":"searchcontainer","query":null},"dataChangeDetectionPolicy":null,"dataDeletionDetectionPolicy":null}' + headers: + cache-control: no-cache + content-length: '367' + content-type: application/json; odata.metadata=minimal + date: Wed, 29 Apr 2020 23:33:46 GMT + elapsed-time: '31' + etag: W/"0x8D7EC95C3DB0A09" + expires: '-1' + location: https://search101414ad.search.windows.net/datasources('another-sample')?api-version=2019-05-06-Preview + odata-version: '4.0' + pragma: no-cache + preference-applied: odata.include-annotations="*" + request-id: df7e60d6-8a71-11ea-889b-8c8590507855 + strict-transport-security: max-age=15724800; includeSubDomains + status: + code: 201 + message: Created + url: https://search101414ad.search.windows.net/datasources?api-version=2019-05-06-Preview +- request: + body: null + headers: + Accept: + - application/json;odata.metadata=minimal + User-Agent: + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) + api-key: + - EB95AE283A4776332B8DEC0FB9C57ECE + method: GET + uri: https://search101414ad.search.windows.net/datasources?api-version=2019-05-06-Preview + response: + body: + string: '{"@odata.context":"https://search101414ad.search.windows.net/$metadata#datasources","value":[{"@odata.etag":"\"0x8D7EC95C3DB0A09\"","name":"another-sample","description":null,"type":"azureblob","subtype":null,"credentials":{"connectionString":null},"container":{"name":"searchcontainer","query":null},"dataChangeDetectionPolicy":null,"dataDeletionDetectionPolicy":null},{"@odata.etag":"\"0x8D7EC95C3D255DF\"","name":"sample-datasource","description":null,"type":"azureblob","subtype":null,"credentials":{"connectionString":null},"container":{"name":"searchcontainer","query":null},"dataChangeDetectionPolicy":null,"dataDeletionDetectionPolicy":null}]}' + headers: + cache-control: no-cache + content-encoding: gzip + content-length: '389' + content-type: application/json; odata.metadata=minimal + date: Wed, 29 Apr 2020 23:33:46 GMT + elapsed-time: '13' + expires: '-1' + odata-version: '4.0' + pragma: no-cache + preference-applied: odata.include-annotations="*" + request-id: df86edd2-8a71-11ea-889b-8c8590507855 + strict-transport-security: max-age=15724800; includeSubDomains + vary: Accept-Encoding + status: + code: 200 + message: OK + url: https://search101414ad.search.windows.net/datasources?api-version=2019-05-06-Preview +version: 1 diff --git a/sdk/search/azure-search-documents/tests/async_tests/recordings/test_service_live_async.test_get_indexes.yaml b/sdk/search/azure-search-documents/tests/async_tests/recordings/test_service_live_async.test_list_indexes.yaml similarity index 93% rename from sdk/search/azure-search-documents/tests/async_tests/recordings/test_service_live_async.test_get_indexes.yaml rename to sdk/search/azure-search-documents/tests/async_tests/recordings/test_service_live_async.test_list_indexes.yaml index 59882c88aabd..6690cd056e72 100644 --- a/sdk/search/azure-search-documents/tests/async_tests/recordings/test_service_live_async.test_get_indexes.yaml +++ b/sdk/search/azure-search-documents/tests/async_tests/recordings/test_service_live_async.test_list_indexes.yaml @@ -7,28 +7,28 @@ interactions: User-Agent: - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - A91A928F6A2FA00CA24FBF09F8E0F248 + - 98F882124BE28E7E0EA564B871D89281 method: GET - uri: https://search537b1079.search.windows.net/indexes?api-version=2019-05-06-Preview + uri: https://search651710f5.search.windows.net/indexes?api-version=2019-05-06-Preview response: body: - string: '{"@odata.context":"https://search537b1079.search.windows.net/$metadata#indexes","value":[{"@odata.etag":"\"0x8D7E6371F70709D\"","name":"drgqefsg","defaultScoringProfile":null,"fields":[{"name":"hotelId","type":"Edm.String","searchable":false,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":true,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"hotelName","type":"Edm.String","searchable":true,"filterable":true,"retrievable":true,"sortable":true,"facetable":false,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"description","type":"Edm.String","searchable":true,"filterable":false,"retrievable":true,"sortable":false,"facetable":false,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":"en.lucene","synonymMaps":[]},{"name":"descriptionFr","type":"Edm.String","searchable":true,"filterable":false,"retrievable":true,"sortable":false,"facetable":false,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":"fr.lucene","synonymMaps":[]},{"name":"category","type":"Edm.String","searchable":true,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"tags","type":"Collection(Edm.String)","searchable":true,"filterable":true,"retrievable":true,"sortable":false,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"parkingIncluded","type":"Edm.Boolean","searchable":false,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"smokingAllowed","type":"Edm.Boolean","searchable":false,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"lastRenovationDate","type":"Edm.DateTimeOffset","searchable":false,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"rating","type":"Edm.Int32","searchable":false,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"location","type":"Edm.GeographyPoint","searchable":false,"filterable":true,"retrievable":true,"sortable":true,"facetable":false,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"address","type":"Edm.ComplexType","fields":[{"name":"streetAddress","type":"Edm.String","searchable":true,"filterable":false,"retrievable":true,"sortable":false,"facetable":false,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"city","type":"Edm.String","searchable":true,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"stateProvince","type":"Edm.String","searchable":true,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"country","type":"Edm.String","searchable":true,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"postalCode","type":"Edm.String","searchable":true,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]}]},{"name":"rooms","type":"Collection(Edm.ComplexType)","fields":[{"name":"description","type":"Edm.String","searchable":true,"filterable":false,"retrievable":true,"sortable":false,"facetable":false,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":"en.lucene","synonymMaps":[]},{"name":"descriptionFr","type":"Edm.String","searchable":true,"filterable":false,"retrievable":true,"sortable":false,"facetable":false,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":"fr.lucene","synonymMaps":[]},{"name":"type","type":"Edm.String","searchable":true,"filterable":true,"retrievable":true,"sortable":false,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"baseRate","type":"Edm.Double","searchable":false,"filterable":true,"retrievable":true,"sortable":false,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"bedOptions","type":"Edm.String","searchable":true,"filterable":true,"retrievable":true,"sortable":false,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"sleepsCount","type":"Edm.Int32","searchable":false,"filterable":true,"retrievable":true,"sortable":false,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"smokingAllowed","type":"Edm.Boolean","searchable":false,"filterable":true,"retrievable":true,"sortable":false,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"tags","type":"Collection(Edm.String)","searchable":true,"filterable":true,"retrievable":true,"sortable":false,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]}]}],"scoringProfiles":[{"name":"nearest","functionAggregation":"sum","text":null,"functions":[{"fieldName":"location","interpolation":"linear","type":"distance","boost":2.0,"freshness":null,"magnitude":null,"distance":{"referencePointParameter":"myloc","boostingDistance":100.0},"tag":null}]}],"corsOptions":null,"suggesters":[{"name":"sg","searchMode":"analyzingInfixMatching","sourceFields":["description","hotelName"]}],"analyzers":[],"tokenizers":[],"tokenFilters":[],"charFilters":[],"encryptionKey":null,"similarity":null}]}' + string: '{"@odata.context":"https://search651710f5.search.windows.net/$metadata#indexes","value":[{"@odata.etag":"\"0x8D7EC9573E8092C\"","name":"drgqefsg","defaultScoringProfile":null,"fields":[{"name":"hotelId","type":"Edm.String","searchable":false,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":true,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"hotelName","type":"Edm.String","searchable":true,"filterable":true,"retrievable":true,"sortable":true,"facetable":false,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"description","type":"Edm.String","searchable":true,"filterable":false,"retrievable":true,"sortable":false,"facetable":false,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":"en.lucene","synonymMaps":[]},{"name":"descriptionFr","type":"Edm.String","searchable":true,"filterable":false,"retrievable":true,"sortable":false,"facetable":false,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":"fr.lucene","synonymMaps":[]},{"name":"category","type":"Edm.String","searchable":true,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"tags","type":"Collection(Edm.String)","searchable":true,"filterable":true,"retrievable":true,"sortable":false,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"parkingIncluded","type":"Edm.Boolean","searchable":false,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"smokingAllowed","type":"Edm.Boolean","searchable":false,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"lastRenovationDate","type":"Edm.DateTimeOffset","searchable":false,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"rating","type":"Edm.Int32","searchable":false,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"location","type":"Edm.GeographyPoint","searchable":false,"filterable":true,"retrievable":true,"sortable":true,"facetable":false,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"address","type":"Edm.ComplexType","fields":[{"name":"streetAddress","type":"Edm.String","searchable":true,"filterable":false,"retrievable":true,"sortable":false,"facetable":false,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"city","type":"Edm.String","searchable":true,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"stateProvince","type":"Edm.String","searchable":true,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"country","type":"Edm.String","searchable":true,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"postalCode","type":"Edm.String","searchable":true,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]}]},{"name":"rooms","type":"Collection(Edm.ComplexType)","fields":[{"name":"description","type":"Edm.String","searchable":true,"filterable":false,"retrievable":true,"sortable":false,"facetable":false,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":"en.lucene","synonymMaps":[]},{"name":"descriptionFr","type":"Edm.String","searchable":true,"filterable":false,"retrievable":true,"sortable":false,"facetable":false,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":"fr.lucene","synonymMaps":[]},{"name":"type","type":"Edm.String","searchable":true,"filterable":true,"retrievable":true,"sortable":false,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"baseRate","type":"Edm.Double","searchable":false,"filterable":true,"retrievable":true,"sortable":false,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"bedOptions","type":"Edm.String","searchable":true,"filterable":true,"retrievable":true,"sortable":false,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"sleepsCount","type":"Edm.Int32","searchable":false,"filterable":true,"retrievable":true,"sortable":false,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"smokingAllowed","type":"Edm.Boolean","searchable":false,"filterable":true,"retrievable":true,"sortable":false,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"tags","type":"Collection(Edm.String)","searchable":true,"filterable":true,"retrievable":true,"sortable":false,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]}]}],"scoringProfiles":[{"name":"nearest","functionAggregation":"sum","text":null,"functions":[{"fieldName":"location","interpolation":"linear","type":"distance","boost":2.0,"freshness":null,"magnitude":null,"distance":{"referencePointParameter":"myloc","boostingDistance":100.0},"tag":null}]}],"corsOptions":null,"suggesters":[{"name":"sg","searchMode":"analyzingInfixMatching","sourceFields":["description","hotelName"]}],"analyzers":[],"tokenizers":[],"tokenFilters":[],"charFilters":[],"encryptionKey":null,"similarity":null}]}' headers: cache-control: no-cache content-encoding: gzip - content-length: '1115' + content-length: '1114' content-type: application/json; odata.metadata=minimal - date: Tue, 21 Apr 2020 21:01:15 GMT - elapsed-time: '67' + date: Wed, 29 Apr 2020 23:31:37 GMT + elapsed-time: '80' expires: '-1' odata-version: '4.0' pragma: no-cache preference-applied: odata.include-annotations="*" - request-id: 3c7c6ba8-8413-11ea-8200-8c8590507855 + request-id: 919d4616-8a71-11ea-889b-8c8590507855 strict-transport-security: max-age=15724800; includeSubDomains vary: Accept-Encoding status: code: 200 message: OK - url: https://search537b1079.search.windows.net/indexes?api-version=2019-05-06-Preview + url: https://search651710f5.search.windows.net/indexes?api-version=2019-05-06-Preview version: 1 diff --git a/sdk/search/azure-search-documents/tests/async_tests/recordings/test_service_live_async.test_get_indexes_empty.yaml b/sdk/search/azure-search-documents/tests/async_tests/recordings/test_service_live_async.test_list_indexes_empty.yaml similarity index 67% rename from sdk/search/azure-search-documents/tests/async_tests/recordings/test_service_live_async.test_get_indexes_empty.yaml rename to sdk/search/azure-search-documents/tests/async_tests/recordings/test_service_live_async.test_list_indexes_empty.yaml index 698a81d30842..73afad0dac0f 100644 --- a/sdk/search/azure-search-documents/tests/async_tests/recordings/test_service_live_async.test_get_indexes_empty.yaml +++ b/sdk/search/azure-search-documents/tests/async_tests/recordings/test_service_live_async.test_list_indexes_empty.yaml @@ -7,28 +7,28 @@ interactions: User-Agent: - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - 8EF48D0D22E6D1402067CD5723AF595D + - 3047B2B0CC7B88CC2CE6D80B142582F2 method: GET - uri: https://searchbee91307.search.windows.net/indexes?api-version=2019-05-06-Preview + uri: https://searchd36d1383.search.windows.net/indexes?api-version=2019-05-06-Preview response: body: - string: '{"@odata.context":"https://searchbee91307.search.windows.net/$metadata#indexes","value":[]}' + string: '{"@odata.context":"https://searchd36d1383.search.windows.net/$metadata#indexes","value":[]}' headers: cache-control: no-cache content-encoding: gzip - content-length: '199' + content-length: '200' content-type: application/json; odata.metadata=minimal - date: Tue, 21 Apr 2020 21:01:23 GMT - elapsed-time: '33' + date: Wed, 29 Apr 2020 23:31:42 GMT + elapsed-time: '44' expires: '-1' odata-version: '4.0' pragma: no-cache preference-applied: odata.include-annotations="*" - request-id: 411a8118-8413-11ea-8200-8c8590507855 + request-id: 958d78d6-8a71-11ea-889b-8c8590507855 strict-transport-security: max-age=15724800; includeSubDomains vary: Accept-Encoding status: code: 200 message: OK - url: https://searchbee91307.search.windows.net/indexes?api-version=2019-05-06-Preview + url: https://searchd36d1383.search.windows.net/indexes?api-version=2019-05-06-Preview version: 1 diff --git a/sdk/search/azure-search-documents/tests/async_tests/test_index_live_async.py b/sdk/search/azure-search-documents/tests/async_tests/test_index_live_async.py index a66038b1fb51..71e0f9e5bafa 100644 --- a/sdk/search/azure-search-documents/tests/async_tests/test_index_live_async.py +++ b/sdk/search/azure-search-documents/tests/async_tests/test_index_live_async.py @@ -29,7 +29,7 @@ SearchQuery, SuggestQuery, ) -from azure.search.documents.aio import SearchIndexClient +from azure.search.documents.aio import SearchClient TIME_TO_SLEEP = 3 @@ -47,13 +47,13 @@ def run(test_class_instance, *args, **kwargs): return run -class SearchIndexClientTestAsync(AzureMgmtTestCase): +class SearchClientTestAsync(AzureMgmtTestCase): @ResourceGroupPreparer(random_name_enabled=True) @SearchServicePreparer(schema=SCHEMA, index_batch=BATCH) async def test_async_get_document_count( self, api_key, endpoint, index_name, **kwargs ): - client = SearchIndexClient( + client = SearchClient( endpoint, index_name, AzureKeyCredential(api_key) ) async with client: @@ -62,7 +62,7 @@ async def test_async_get_document_count( @ResourceGroupPreparer(random_name_enabled=True) @SearchServicePreparer(schema=SCHEMA, index_batch=BATCH) async def test_get_document(self, api_key, endpoint, index_name, **kwargs): - client = SearchIndexClient( + client = SearchClient( endpoint, index_name, AzureKeyCredential(api_key) ) async with client: @@ -76,7 +76,7 @@ async def test_get_document(self, api_key, endpoint, index_name, **kwargs): @ResourceGroupPreparer(random_name_enabled=True) @SearchServicePreparer(schema=SCHEMA, index_batch=BATCH) async def test_get_document_missing(self, api_key, endpoint, index_name, **kwargs): - client = SearchIndexClient( + client = SearchClient( endpoint, index_name, AzureKeyCredential(api_key) ) async with client: @@ -86,7 +86,7 @@ async def test_get_document_missing(self, api_key, endpoint, index_name, **kwarg @ResourceGroupPreparer(random_name_enabled=True) @SearchServicePreparer(schema=SCHEMA, index_batch=BATCH) async def test_get_search_simple(self, api_key, endpoint, index_name, **kwargs): - client = SearchIndexClient( + client = SearchClient( endpoint, index_name, AzureKeyCredential(api_key) ) async with client: @@ -103,7 +103,7 @@ async def test_get_search_simple(self, api_key, endpoint, index_name, **kwargs): @ResourceGroupPreparer(random_name_enabled=True) @SearchServicePreparer(schema=SCHEMA, index_batch=BATCH) async def test_get_search_filter(self, api_key, endpoint, index_name, **kwargs): - client = SearchIndexClient( + client = SearchClient( endpoint, index_name, AzureKeyCredential(api_key) ) @@ -132,7 +132,7 @@ async def test_get_search_filter(self, api_key, endpoint, index_name, **kwargs): @ResourceGroupPreparer(random_name_enabled=True) @SearchServicePreparer(schema=SCHEMA, index_batch=BATCH) async def test_get_search_counts(self, api_key, endpoint, index_name, **kwargs): - client = SearchIndexClient( + client = SearchClient( endpoint, index_name, AzureKeyCredential(api_key) ) @@ -147,7 +147,7 @@ async def test_get_search_counts(self, api_key, endpoint, index_name, **kwargs): @ResourceGroupPreparer(random_name_enabled=True) @SearchServicePreparer(schema=SCHEMA, index_batch=BATCH) async def test_get_search_coverage(self, api_key, endpoint, index_name, **kwargs): - client = SearchIndexClient( + client = SearchClient( endpoint, index_name, AzureKeyCredential(api_key) ) @@ -166,7 +166,7 @@ async def test_get_search_coverage(self, api_key, endpoint, index_name, **kwargs async def test_get_search_facets_none( self, api_key, endpoint, index_name, **kwargs ): - client = SearchIndexClient( + client = SearchClient( endpoint, index_name, AzureKeyCredential(api_key) ) @@ -182,7 +182,7 @@ async def test_get_search_facets_none( async def test_get_search_facets_result( self, api_key, endpoint, index_name, **kwargs ): - client = SearchIndexClient( + client = SearchClient( endpoint, index_name, AzureKeyCredential(api_key) ) @@ -201,7 +201,7 @@ async def test_get_search_facets_result( @ResourceGroupPreparer(random_name_enabled=True) @SearchServicePreparer(schema=SCHEMA, index_batch=BATCH) async def test_autocomplete(self, api_key, endpoint, index_name, **kwargs): - client = SearchIndexClient( + client = SearchClient( endpoint, index_name, AzureKeyCredential(api_key) ) async with client: @@ -212,7 +212,7 @@ async def test_autocomplete(self, api_key, endpoint, index_name, **kwargs): @ResourceGroupPreparer(random_name_enabled=True) @SearchServicePreparer(schema=SCHEMA, index_batch=BATCH) async def test_suggest(self, api_key, endpoint, index_name, **kwargs): - client = SearchIndexClient( + client = SearchClient( endpoint, index_name, AzureKeyCredential(api_key) ) async with client: @@ -226,7 +226,7 @@ async def test_suggest(self, api_key, endpoint, index_name, **kwargs): @ResourceGroupPreparer(random_name_enabled=True) @SearchServicePreparer(schema=SCHEMA, index_batch=BATCH) async def test_upload_documents_new(self, api_key, endpoint, index_name, **kwargs): - client = SearchIndexClient( + client = SearchClient( endpoint, index_name, AzureKeyCredential(api_key) ) DOCUMENTS = [ @@ -256,7 +256,7 @@ async def test_upload_documents_new(self, api_key, endpoint, index_name, **kwarg async def test_upload_documents_existing( self, api_key, endpoint, index_name, **kwargs ): - client = SearchIndexClient( + client = SearchClient( endpoint, index_name, AzureKeyCredential(api_key) ) DOCUMENTS = [ @@ -273,7 +273,7 @@ async def test_upload_documents_existing( async def test_delete_documents_existing( self, api_key, endpoint, index_name, **kwargs ): - client = SearchIndexClient( + client = SearchClient( endpoint, index_name, AzureKeyCredential(api_key) ) async with client: @@ -300,7 +300,7 @@ async def test_delete_documents_existing( async def test_delete_documents_missing( self, api_key, endpoint, index_name, **kwargs ): - client = SearchIndexClient( + client = SearchClient( endpoint, index_name, AzureKeyCredential(api_key) ) async with client: @@ -327,7 +327,7 @@ async def test_delete_documents_missing( async def test_merge_documents_existing( self, api_key, endpoint, index_name, **kwargs ): - client = SearchIndexClient( + client = SearchClient( endpoint, index_name, AzureKeyCredential(api_key) ) async with client: @@ -354,7 +354,7 @@ async def test_merge_documents_existing( async def test_merge_documents_missing( self, api_key, endpoint, index_name, **kwargs ): - client = SearchIndexClient( + client = SearchClient( endpoint, index_name, AzureKeyCredential(api_key) ) async with client: @@ -381,7 +381,7 @@ async def test_merge_documents_missing( async def test_merge_or_upload_documents( self, api_key, endpoint, index_name, **kwargs ): - client = SearchIndexClient( + client = SearchClient( endpoint, index_name, AzureKeyCredential(api_key) ) async with client: diff --git a/sdk/search/azure-search-documents/tests/async_tests/test_service_live_async.py b/sdk/search/azure-search-documents/tests/async_tests/test_service_live_async.py index c1ed98296563..48b5c3e46fb0 100644 --- a/sdk/search/azure-search-documents/tests/async_tests/test_service_live_async.py +++ b/sdk/search/azure-search-documents/tests/async_tests/test_service_live_async.py @@ -10,10 +10,11 @@ import time import pytest +from azure.core import MatchConditions from azure.core.credentials import AzureKeyCredential -from devtools_testutils import AzureMgmtTestCase, ResourceGroupPreparer +from devtools_testutils import AzureMgmtTestCase -from search_service_preparer import SearchServicePreparer +from search_service_preparer import SearchServicePreparer, SearchResourceGroupPreparer from azure_devtools.scenario_tests.utilities import trim_kwargs_from_test_function @@ -30,13 +31,21 @@ SearchServiceClient, ScoringProfile, Skillset, + DataSourceCredentials, + DataSource, + DataContainer, + SynonymMap, + SimpleField, + edm ) from azure.search.documents.aio import SearchServiceClient +from _test_utils import build_synonym_map_from_dict CWD = dirname(realpath(__file__)) SCHEMA = open(join(CWD, "..", "hotel_schema.json")).read() BATCH = json.load(open(join(CWD, "..", "hotel_small.json"), encoding='utf-8')) TIME_TO_SLEEP = 5 +CONNECTION_STRING = 'DefaultEndpointsProtocol=https;AccountName=storagename;AccountKey=NzhL3hKZbJBuJ2484dPTR+xF30kYaWSSCbs2BzLgVVI1woqeST/1IgqaLm6QAOTxtGvxctSNbIR/1hW8yH+bJg==;EndpointSuffix=core.windows.net' def await_prepared_test(test_fn): """Synchronous wrapper for async test methods. Used to avoid making changes @@ -51,9 +60,8 @@ def run(test_class_instance, *args, **kwargs): return run - -class SearchIndexClientTest(AzureMgmtTestCase): - @ResourceGroupPreparer(random_name_enabled=True) +class SearchClientTest(AzureMgmtTestCase): + @SearchResourceGroupPreparer(random_name_enabled=True) @SearchServicePreparer() async def test_get_service_statistics(self, api_key, endpoint, **kwargs): client = SearchServiceClient(endpoint, AzureKeyCredential(api_key)) @@ -61,51 +69,61 @@ async def test_get_service_statistics(self, api_key, endpoint, **kwargs): assert isinstance(result, dict) assert set(result.keys()) == {"counters", "limits"} - # Index operations +class SearchIndexesClientTest(AzureMgmtTestCase): - @ResourceGroupPreparer(random_name_enabled=True) + @SearchResourceGroupPreparer(random_name_enabled=True) @SearchServicePreparer() - async def test_get_indexes_empty(self, api_key, endpoint, **kwargs): - client = SearchServiceClient(endpoint, AzureKeyCredential(api_key)) - result = await client.get_indexes() - assert len(result) == 0 + async def test_list_indexes_empty(self, api_key, endpoint, **kwargs): + client = SearchServiceClient(endpoint, AzureKeyCredential(api_key)).get_indexes_client() + result = await client.list_indexes() - @ResourceGroupPreparer(random_name_enabled=True) + with pytest.raises(StopAsyncIteration): + await result.__anext__() + + @SearchResourceGroupPreparer(random_name_enabled=True) @SearchServicePreparer(schema=SCHEMA, index_batch=BATCH) - async def test_get_indexes(self, api_key, endpoint, index_name, **kwargs): - client = SearchServiceClient(endpoint, AzureKeyCredential(api_key)) - result = await client.get_indexes() - assert len(result) == 1 - assert result[0].name == index_name + async def test_list_indexes(self, api_key, endpoint, index_name, **kwargs): + client = SearchServiceClient(endpoint, AzureKeyCredential(api_key)).get_indexes_client() + result = await client.list_indexes() - @ResourceGroupPreparer(random_name_enabled=True) + first = await result.__anext__() + assert first.name == index_name + + with pytest.raises(StopAsyncIteration): + await result.__anext__() + + @SearchResourceGroupPreparer(random_name_enabled=True) @SearchServicePreparer(schema=SCHEMA, index_batch=BATCH) async def test_get_index(self, api_key, endpoint, index_name, **kwargs): - client = SearchServiceClient(endpoint, AzureKeyCredential(api_key)) + client = SearchServiceClient(endpoint, AzureKeyCredential(api_key)).get_indexes_client() result = await client.get_index(index_name) assert result.name == index_name - @ResourceGroupPreparer(random_name_enabled=True) + @SearchResourceGroupPreparer(random_name_enabled=True) @SearchServicePreparer(schema=SCHEMA, index_batch=BATCH) async def test_get_index_statistics(self, api_key, endpoint, index_name, **kwargs): - client = SearchServiceClient(endpoint, AzureKeyCredential(api_key)) + client = SearchServiceClient(endpoint, AzureKeyCredential(api_key)).get_indexes_client() result = await client.get_index_statistics(index_name) assert set(result.keys()) == {'document_count', 'storage_size'} - @ResourceGroupPreparer(random_name_enabled=True) + @SearchResourceGroupPreparer(random_name_enabled=True) @SearchServicePreparer(schema=SCHEMA, index_batch=BATCH) async def test_delete_indexes(self, api_key, endpoint, index_name, **kwargs): - client = SearchServiceClient(endpoint, AzureKeyCredential(api_key)) + client = SearchServiceClient(endpoint, AzureKeyCredential(api_key)).get_indexes_client() await client.delete_index(index_name) import time if self.is_live: time.sleep(TIME_TO_SLEEP) - result = await client.get_indexes() - assert len(result) == 0 + result = await client.list_indexes() + with pytest.raises(StopAsyncIteration): + await result.__anext__() - @ResourceGroupPreparer(random_name_enabled=True) + @SearchResourceGroupPreparer(random_name_enabled=True) @SearchServicePreparer(schema=SCHEMA, index_batch=BATCH) - async def test_create_index(self, api_key, endpoint, index_name, **kwargs): + async def test_delete_indexes_if_unchanged(self, api_key, endpoint, index_name, **kwargs): + client = SearchServiceClient(endpoint, AzureKeyCredential(api_key)).get_indexes_client() + + # First create an index name = "hotels" fields = [ { @@ -129,28 +147,52 @@ async def test_create_index(self, api_key, endpoint, index_name, **kwargs): fields=fields, scoring_profiles=scoring_profiles, cors_options=cors_options) - client = SearchServiceClient(endpoint, AzureKeyCredential(api_key)) + result = await client.create_index(index) + etag = result.e_tag + # get e tag nd update + index.scoring_profiles = [] + await client.create_or_update_index(index.name, index) + + index.e_tag = etag + with pytest.raises(HttpResponseError): + await client.delete_index(index, match_condition=MatchConditions.IfNotModified) + + @SearchResourceGroupPreparer(random_name_enabled=True) + @SearchServicePreparer(schema=SCHEMA, index_batch=BATCH) + async def test_create_index(self, api_key, endpoint, index_name, **kwargs): + name = "hotels" + fields = fields = [ + SimpleField(name="hotelId", type=edm.String, key=True), + SimpleField(name="baseRate", type=edm.Double) + ] + + scoring_profile = ScoringProfile( + name="MyProfile" + ) + scoring_profiles = [] + scoring_profiles.append(scoring_profile) + cors_options = CorsOptions(allowed_origins=["*"], max_age_in_seconds=60) + index = Index( + name=name, + fields=fields, + scoring_profiles=scoring_profiles, + cors_options=cors_options) + client = SearchServiceClient(endpoint, AzureKeyCredential(api_key)).get_indexes_client() result = await client.create_index(index) assert result.name == "hotels" assert result.scoring_profiles[0].name == scoring_profile.name assert result.cors_options.allowed_origins == cors_options.allowed_origins assert result.cors_options.max_age_in_seconds == cors_options.max_age_in_seconds - @ResourceGroupPreparer(random_name_enabled=True) + @SearchResourceGroupPreparer(random_name_enabled=True) @SearchServicePreparer(schema=SCHEMA, index_batch=BATCH) async def test_create_or_update_index(self, api_key, endpoint, index_name, **kwargs): name = "hotels" - fields = [ - { - "name": "hotelId", - "type": "Edm.String", - "key": True, - "searchable": False - }, - { - "name": "baseRate", - "type": "Edm.Double" - }] + fields = fields = [ + SimpleField(name="hotelId", type=edm.String, key=True), + SimpleField(name="baseRate", type=edm.Double) + ] + cors_options = CorsOptions(allowed_origins=["*"], max_age_in_seconds=60) scoring_profiles = [] index = Index( @@ -158,7 +200,7 @@ async def test_create_or_update_index(self, api_key, endpoint, index_name, **kwa fields=fields, scoring_profiles=scoring_profiles, cors_options=cors_options) - client = SearchServiceClient(endpoint, AzureKeyCredential(api_key)) + client = SearchServiceClient(endpoint, AzureKeyCredential(api_key)).get_indexes_client() result = await client.create_or_update_index(index_name=index.name, index=index) assert len(result.scoring_profiles) == 0 assert result.cors_options.allowed_origins == cors_options.allowed_origins @@ -178,20 +220,58 @@ async def test_create_or_update_index(self, api_key, endpoint, index_name, **kwa assert result.cors_options.allowed_origins == cors_options.allowed_origins assert result.cors_options.max_age_in_seconds == cors_options.max_age_in_seconds - @ResourceGroupPreparer(random_name_enabled=True) + @SearchResourceGroupPreparer(random_name_enabled=True) + @SearchServicePreparer(schema=SCHEMA, index_batch=BATCH) + async def test_create_or_update_indexes_if_unchanged(self, api_key, endpoint, index_name, **kwargs): + client = SearchServiceClient(endpoint, AzureKeyCredential(api_key)).get_indexes_client() + + # First create an index + name = "hotels" + fields = [ + { + "name": "hotelId", + "type": "Edm.String", + "key": True, + "searchable": False + }, + { + "name": "baseRate", + "type": "Edm.Double" + }] + scoring_profile = ScoringProfile( + name="MyProfile" + ) + scoring_profiles = [] + scoring_profiles.append(scoring_profile) + cors_options = CorsOptions(allowed_origins=["*"], max_age_in_seconds=60) + index = Index( + name=name, + fields=fields, + scoring_profiles=scoring_profiles, + cors_options=cors_options) + result = await client.create_index(index) + etag = result.e_tag + # get e tag nd update + index.scoring_profiles = [] + await client.create_or_update_index(index.name, index) + + index.e_tag = etag + with pytest.raises(HttpResponseError): + await client.create_or_update_index(index.name, index, match_condition=MatchConditions.IfNotModified) + + @SearchResourceGroupPreparer(random_name_enabled=True) @SearchServicePreparer(schema=SCHEMA, index_batch=BATCH) async def test_analyze_text(self, api_key, endpoint, index_name, **kwargs): - client = SearchServiceClient(endpoint, AzureKeyCredential(api_key)) + client = SearchServiceClient(endpoint, AzureKeyCredential(api_key)).get_indexes_client() analyze_request = AnalyzeRequest(text="One's ", analyzer="standard.lucene") result = await client.analyze_text(index_name, analyze_request) assert len(result.tokens) == 2 - # Synonym Map operations - - @ResourceGroupPreparer(random_name_enabled=True) +class SearchSynonymMapsClientTest(AzureMgmtTestCase): + @SearchResourceGroupPreparer(random_name_enabled=True) @SearchServicePreparer(schema=SCHEMA, index_batch=BATCH) async def test_create_synonym_map(self, api_key, endpoint, index_name, **kwargs): - client = SearchServiceClient(endpoint, AzureKeyCredential(api_key)) + client = SearchServiceClient(endpoint, AzureKeyCredential(api_key)).get_synonym_maps_client() result = await client.create_synonym_map("test-syn-map", [ "USA, United States, United States of America", "Washington, Wash. => WA", @@ -204,10 +284,10 @@ async def test_create_synonym_map(self, api_key, endpoint, index_name, **kwargs) ] assert len(await client.get_synonym_maps()) == 1 - @ResourceGroupPreparer(random_name_enabled=True) + @SearchResourceGroupPreparer(random_name_enabled=True) @SearchServicePreparer(schema=SCHEMA, index_batch=BATCH) async def test_delete_synonym_map(self, api_key, endpoint, index_name, **kwargs): - client = SearchServiceClient(endpoint, AzureKeyCredential(api_key)) + client = SearchServiceClient(endpoint, AzureKeyCredential(api_key)).get_synonym_maps_client() result = await client.create_synonym_map("test-syn-map", [ "USA, United States, United States of America", "Washington, Wash. => WA", @@ -216,10 +296,30 @@ async def test_delete_synonym_map(self, api_key, endpoint, index_name, **kwargs) await client.delete_synonym_map("test-syn-map") assert len(await client.get_synonym_maps()) == 0 - @ResourceGroupPreparer(random_name_enabled=True) + @SearchResourceGroupPreparer(random_name_enabled=True) + @SearchServicePreparer(schema=SCHEMA, index_batch=BATCH) + async def test_delete_synonym_map_if_unchanged(self, api_key, endpoint, index_name, **kwargs): + client = SearchServiceClient(endpoint, AzureKeyCredential(api_key)).get_synonym_maps_client() + result = await client.create_synonym_map("test-syn-map", [ + "USA, United States, United States of America", + "Washington, Wash. => WA", + ]) + sm_result = build_synonym_map_from_dict(result) + etag = sm_result.e_tag + + await client.create_or_update_synonym_map("test-syn-map", [ + "Washington, Wash. => WA", + ]) + + sm_result.e_tag = etag + with pytest.raises(HttpResponseError): + await client.delete_synonym_map(sm_result, match_condition=MatchConditions.IfNotModified) + assert len(client.get_synonym_maps()) == 1 + + @SearchResourceGroupPreparer(random_name_enabled=True) @SearchServicePreparer(schema=SCHEMA, index_batch=BATCH) async def test_get_synonym_map(self, api_key, endpoint, index_name, **kwargs): - client = SearchServiceClient(endpoint, AzureKeyCredential(api_key)) + client = SearchServiceClient(endpoint, AzureKeyCredential(api_key)).get_synonym_maps_client() await client.create_synonym_map("test-syn-map", [ "USA, United States, United States of America", "Washington, Wash. => WA", @@ -233,10 +333,10 @@ async def test_get_synonym_map(self, api_key, endpoint, index_name, **kwargs): "Washington, Wash. => WA", ] - @ResourceGroupPreparer(random_name_enabled=True) + @SearchResourceGroupPreparer(random_name_enabled=True) @SearchServicePreparer(schema=SCHEMA, index_batch=BATCH) async def test_get_synonym_maps(self, api_key, endpoint, index_name, **kwargs): - client = SearchServiceClient(endpoint, AzureKeyCredential(api_key)) + client = SearchServiceClient(endpoint, AzureKeyCredential(api_key)).get_synonym_maps_client() await client.create_synonym_map("test-syn-map-1", [ "USA, United States, United States of America", ]) @@ -248,10 +348,10 @@ async def test_get_synonym_maps(self, api_key, endpoint, index_name, **kwargs): assert all(isinstance(x, dict) for x in result) assert set(x['name'] for x in result) == {"test-syn-map-1", "test-syn-map-2"} - @ResourceGroupPreparer(random_name_enabled=True) + @SearchResourceGroupPreparer(random_name_enabled=True) @SearchServicePreparer(schema=SCHEMA, index_batch=BATCH) async def test_create_or_update_synonym_map(self, api_key, endpoint, index_name, **kwargs): - client = SearchServiceClient(endpoint, AzureKeyCredential(api_key)) + client = SearchServiceClient(endpoint, AzureKeyCredential(api_key)).get_synonym_maps_client() await client.create_synonym_map("test-syn-map", [ "USA, United States, United States of America", ]) @@ -267,12 +367,12 @@ async def test_create_or_update_synonym_map(self, api_key, endpoint, index_name, "Washington, Wash. => WA", ] - # Skillset operations +class SearchSkillsetClientTest(AzureMgmtTestCase): - @ResourceGroupPreparer(random_name_enabled=True) + @SearchResourceGroupPreparer(random_name_enabled=True) @SearchServicePreparer(schema=SCHEMA, index_batch=BATCH) async def test_create_skillset(self, api_key, endpoint, index_name, **kwargs): - client = SearchServiceClient(endpoint, AzureKeyCredential(api_key)) + client = SearchServiceClient(endpoint, AzureKeyCredential(api_key)).get_skillsets_client() s = EntityRecognitionSkill(inputs=[InputFieldMappingEntry(name="text", source="/document/content")], outputs=[OutputFieldMappingEntry(name="organizations", target_name="organizations")]) @@ -287,10 +387,10 @@ async def test_create_skillset(self, api_key, endpoint, index_name, **kwargs): assert len(await client.get_skillsets()) == 1 - @ResourceGroupPreparer(random_name_enabled=True) + @SearchResourceGroupPreparer(random_name_enabled=True) @SearchServicePreparer(schema=SCHEMA, index_batch=BATCH) async def test_delete_skillset(self, api_key, endpoint, index_name, **kwargs): - client = SearchServiceClient(endpoint, AzureKeyCredential(api_key)) + client = SearchServiceClient(endpoint, AzureKeyCredential(api_key)).get_skillsets_client() s = EntityRecognitionSkill(inputs=[InputFieldMappingEntry(name="text", source="/document/content")], outputs=[OutputFieldMappingEntry(name="organizations", target_name="organizations")]) @@ -302,10 +402,26 @@ async def test_delete_skillset(self, api_key, endpoint, index_name, **kwargs): time.sleep(TIME_TO_SLEEP) assert len(await client.get_skillsets()) == 0 - @ResourceGroupPreparer(random_name_enabled=True) + @SearchResourceGroupPreparer(random_name_enabled=True) + @SearchServicePreparer(schema=SCHEMA, index_batch=BATCH) + async def test_delete_skillset_if_unchanged(self, api_key, endpoint, index_name, **kwargs): + client = SearchServiceClient(endpoint, AzureKeyCredential(api_key)).get_skillsets_client() + s = EntityRecognitionSkill(inputs=[InputFieldMappingEntry(name="text", source="/document/content")], + outputs=[OutputFieldMappingEntry(name="organizations", target_name="organizations")]) + + result = await client.create_skillset(name='test-ss', skills=[s], description="desc") + etag = result.e_tag + + updated = await client.create_or_update_skillset(name='test-ss', skills=[s], description="updated") + updated.e_tag = etag + + with pytest.raises(HttpResponseError): + await client.delete_skillset(updated, match_condition=MatchConditions.IfNotModified) + + @SearchResourceGroupPreparer(random_name_enabled=True) @SearchServicePreparer(schema=SCHEMA, index_batch=BATCH) async def test_get_skillset(self, api_key, endpoint, index_name, **kwargs): - client = SearchServiceClient(endpoint, AzureKeyCredential(api_key)) + client = SearchServiceClient(endpoint, AzureKeyCredential(api_key)).get_skillsets_client() s = EntityRecognitionSkill(inputs=[InputFieldMappingEntry(name="text", source="/document/content")], outputs=[OutputFieldMappingEntry(name="organizations", target_name="organizations")]) @@ -320,10 +436,10 @@ async def test_get_skillset(self, api_key, endpoint, index_name, **kwargs): assert len(result.skills) == 1 assert isinstance(result.skills[0], EntityRecognitionSkill) - @ResourceGroupPreparer(random_name_enabled=True) + @SearchResourceGroupPreparer(random_name_enabled=True) @SearchServicePreparer(schema=SCHEMA, index_batch=BATCH) async def test_get_skillsets(self, api_key, endpoint, index_name, **kwargs): - client = SearchServiceClient(endpoint, AzureKeyCredential(api_key)) + client = SearchServiceClient(endpoint, AzureKeyCredential(api_key)).get_skillsets_client() s = EntityRecognitionSkill(inputs=[InputFieldMappingEntry(name="text", source="/document/content")], outputs=[OutputFieldMappingEntry(name="organizations", target_name="organizations")]) @@ -334,10 +450,10 @@ async def test_get_skillsets(self, api_key, endpoint, index_name, **kwargs): assert all(isinstance(x, Skillset) for x in result) assert set(x.name for x in result) == {"test-ss-1", "test-ss-2"} - @ResourceGroupPreparer(random_name_enabled=True) + @SearchResourceGroupPreparer(random_name_enabled=True) @SearchServicePreparer(schema=SCHEMA, index_batch=BATCH) async def test_create_or_update_skillset(self, api_key, endpoint, index_name, **kwargs): - client = SearchServiceClient(endpoint, AzureKeyCredential(api_key)) + client = SearchServiceClient(endpoint, AzureKeyCredential(api_key)).get_skillsets_client() s = EntityRecognitionSkill(inputs=[InputFieldMappingEntry(name="text", source="/document/content")], outputs=[OutputFieldMappingEntry(name="organizations", target_name="organizations")]) @@ -350,10 +466,10 @@ async def test_create_or_update_skillset(self, api_key, endpoint, index_name, ** assert result.name == "test-ss" assert result.description == "desc2" - @ResourceGroupPreparer(random_name_enabled=True) + @SearchResourceGroupPreparer(random_name_enabled=True) @SearchServicePreparer(schema=SCHEMA, index_batch=BATCH) async def test_create_or_update_skillset_inplace(self, api_key, endpoint, index_name, **kwargs): - client = SearchServiceClient(endpoint, AzureKeyCredential(api_key)) + client = SearchServiceClient(endpoint, AzureKeyCredential(api_key)).get_skillsets_client() s = EntityRecognitionSkill(inputs=[InputFieldMappingEntry(name="text", source="/document/content")], outputs=[OutputFieldMappingEntry(name="organizations", target_name="organizations")]) @@ -364,4 +480,126 @@ async def test_create_or_update_skillset_inplace(self, api_key, endpoint, index_ result = await client.get_skillset("test-ss") assert isinstance(result, Skillset) assert result.name == "test-ss" - assert result.description == "desc2" \ No newline at end of file + assert result.description == "desc2" + + @SearchResourceGroupPreparer(random_name_enabled=True) + @SearchServicePreparer(schema=SCHEMA, index_batch=BATCH) + async def test_create_or_update_skillset_if_unchanged(self, api_key, endpoint, index_name, **kwargs): + client = SearchServiceClient(endpoint, AzureKeyCredential(api_key)).get_skillsets_client() + s = EntityRecognitionSkill(inputs=[InputFieldMappingEntry(name="text", source="/document/content")], + outputs=[OutputFieldMappingEntry(name="organizations", target_name="organizations")]) + + ss = await client.create_or_update_skillset(name='test-ss', skills=[s], description="desc1") + etag = ss.e_tag + + await client.create_or_update_skillset(name='test-ss', skills=[s], description="desc2", skillset=ss) + assert len(await client.get_skillsets()) == 1 + + ss.e_tag = etag + with pytest.raises(HttpResponseError): + await client.create_or_update_skillset(name='test-ss', skills=[s], skillset=ss, match_condition=MatchConditions.IfNotModified) + + +class SearchDataSourcesClientTest(AzureMgmtTestCase): + + def _create_datasource(self, name="sample-datasource"): + credentials = DataSourceCredentials(connection_string=CONNECTION_STRING) + container = DataContainer(name='searchcontainer') + data_source = DataSource( + name=name, + type="azureblob", + credentials=credentials, + container=container + ) + return data_source + + @SearchResourceGroupPreparer(random_name_enabled=True) + @SearchServicePreparer(schema=SCHEMA, index_batch=BATCH) + async def test_create_datasource_async(self, api_key, endpoint, index_name, **kwargs): + client = SearchServiceClient(endpoint, AzureKeyCredential(api_key)).get_datasources_client() + data_source = self._create_datasource() + result = await client.create_datasource(data_source) + assert result.name == "sample-datasource" + assert result.type == "azureblob" + + @SearchResourceGroupPreparer(random_name_enabled=True) + @SearchServicePreparer(schema=SCHEMA, index_batch=BATCH) + async def test_delete_datasource_async(self, api_key, endpoint, index_name, **kwargs): + client = SearchServiceClient(endpoint, AzureKeyCredential(api_key)).get_datasources_client() + data_source = self._create_datasource() + result = await client.create_datasource(data_source) + assert len(await client.get_datasources()) == 1 + await client.delete_datasource("sample-datasource") + assert len(await client.get_datasources()) == 0 + + @SearchResourceGroupPreparer(random_name_enabled=True) + @SearchServicePreparer(schema=SCHEMA, index_batch=BATCH) + async def test_get_datasource_async(self, api_key, endpoint, index_name, **kwargs): + client = SearchServiceClient(endpoint, AzureKeyCredential(api_key)).get_datasources_client() + data_source = self._create_datasource() + created = await client.create_datasource(data_source) + result = await client.get_datasource("sample-datasource") + assert result.name == "sample-datasource" + + @SearchResourceGroupPreparer(random_name_enabled=True) + @SearchServicePreparer(schema=SCHEMA, index_batch=BATCH) + async def test_list_datasource_async(self, api_key, endpoint, index_name, **kwargs): + client = SearchServiceClient(endpoint, AzureKeyCredential(api_key)).get_datasources_client() + data_source1 = self._create_datasource() + data_source2 = self._create_datasource(name="another-sample") + created1 = await client.create_datasource(data_source1) + created2 = await client.create_datasource(data_source2) + result = await client.get_datasources() + assert isinstance(result, list) + assert set(x.name for x in result) == {"sample-datasource", "another-sample"} + + @SearchResourceGroupPreparer(random_name_enabled=True) + @SearchServicePreparer(schema=SCHEMA, index_batch=BATCH) + async def test_create_or_update_datasource_async(self, api_key, endpoint, index_name, **kwargs): + client = SearchServiceClient(endpoint, AzureKeyCredential(api_key)).get_datasources_client() + data_source = self._create_datasource() + created = await client.create_datasource(data_source) + assert len(await client.get_datasources()) == 1 + data_source.description = "updated" + await client.create_or_update_datasource(data_source) + assert len(await client.get_datasources()) == 1 + result = await client.get_datasource("sample-datasource") + assert result.name == "sample-datasource" + assert result.description == "updated" + + @SearchResourceGroupPreparer(random_name_enabled=True) + @SearchServicePreparer(schema=SCHEMA, index_batch=BATCH) + async def test_create_or_update_datasource_if_unchanged(self, api_key, endpoint, index_name, **kwargs): + client = SearchServiceClient(endpoint, AzureKeyCredential(api_key)).get_datasources_client() + data_source = self._create_datasource() + created = await client.create_datasource(data_source) + etag = created.e_tag + + # Now update the data source + data_source.description = "updated" + await client.create_or_update_datasource(data_source) + + # prepare data source + data_source.e_tag = etag # reset to the original datasource + data_source.description = "changed" + with pytest.raises(HttpResponseError): + await client.create_or_update_datasource(data_source, match_condition=MatchConditions.IfNotModified) + assert len(await client.get_datasources()) == 1 + + @SearchResourceGroupPreparer(random_name_enabled=True) + @SearchServicePreparer(schema=SCHEMA, index_batch=BATCH) + async def test_delete_datasource_if_unchanged(self, api_key, endpoint, index_name, **kwargs): + client = SearchServiceClient(endpoint, AzureKeyCredential(api_key)).get_datasources_client() + data_source = self._create_datasource() + created = await client.create_datasource(data_source) + etag = created.e_tag + + # Now update the data source + data_source.description = "updated" + await client.create_or_update_datasource(data_source) + + # prepare data source + data_source.e_tag = etag # reset to the original datasource + with pytest.raises(HttpResponseError): + await client.delete_datasource(data_source, match_condition=MatchConditions.IfNotModified) + assert len(await client.get_datasources()) == 1 diff --git a/sdk/search/azure-search-documents/tests/recordings/test_index_live.test_autocomplete.yaml b/sdk/search/azure-search-documents/tests/recordings/test_index_live.test_autocomplete.yaml index 8396eac2d7f1..051afe8942fb 100644 --- a/sdk/search/azure-search-documents/tests/recordings/test_index_live.test_autocomplete.yaml +++ b/sdk/search/azure-search-documents/tests/recordings/test_index_live.test_autocomplete.yaml @@ -13,9 +13,9 @@ interactions: Content-Type: - application/json User-Agent: - - azsdk-python-search-documents/1.0.0b2 Python/3.6.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - 951FD13942F902332DE06E70CA4E1D91 + - AE8D684F8B07A67E43EB160C1A508354 method: POST uri: https://searche7b20da6.search.windows.net/indexes('drgqefsg')/docs/search.post.autocomplete?api-version=2019-05-06-Preview response: @@ -29,9 +29,9 @@ interactions: content-type: - application/json; odata.metadata=none date: - - Tue, 31 Mar 2020 17:32:34 GMT + - Wed, 29 Apr 2020 23:16:50 GMT elapsed-time: - - '337' + - '184' expires: - '-1' odata-version: @@ -41,7 +41,7 @@ interactions: preference-applied: - odata.include-annotations="*" request-id: - - 9bb59e6e-7375-11ea-b761-5cf37071153c + - 810b2018-8a6f-11ea-889b-8c8590507855 strict-transport-security: - max-age=15724800; includeSubDomains vary: diff --git a/sdk/search/azure-search-documents/tests/recordings/test_index_live.test_delete_documents_existing.yaml b/sdk/search/azure-search-documents/tests/recordings/test_index_live.test_delete_documents_existing.yaml index 86058475fb37..6a9604d9602e 100644 --- a/sdk/search/azure-search-documents/tests/recordings/test_index_live.test_delete_documents_existing.yaml +++ b/sdk/search/azure-search-documents/tests/recordings/test_index_live.test_delete_documents_existing.yaml @@ -14,9 +14,9 @@ interactions: Content-Type: - application/json User-Agent: - - azsdk-python-search-documents/1.0.0b2 Python/3.6.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - 1452DD88D834472F1EC2D69426FD37B0 + - 7F7F23DF951321BB6EC0497B61BBBF99 method: POST uri: https://searchbc401302.search.windows.net/indexes('drgqefsg')/docs/search.index?api-version=2019-05-06-Preview response: @@ -30,9 +30,9 @@ interactions: content-type: - application/json; odata.metadata=none date: - - Tue, 31 Mar 2020 17:32:59 GMT + - Wed, 29 Apr 2020 23:17:02 GMT elapsed-time: - - '424' + - '93' expires: - '-1' odata-version: @@ -42,7 +42,7 @@ interactions: preference-applied: - odata.include-annotations="*" request-id: - - a9da0c50-7375-11ea-aa49-5cf37071153c + - 88810b64-8a6f-11ea-889b-8c8590507855 strict-transport-security: - max-age=15724800; includeSubDomains vary: @@ -60,9 +60,9 @@ interactions: Connection: - keep-alive User-Agent: - - azsdk-python-search-documents/1.0.0b2 Python/3.6.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - 1452DD88D834472F1EC2D69426FD37B0 + - 7F7F23DF951321BB6EC0497B61BBBF99 method: GET uri: https://searchbc401302.search.windows.net/indexes('drgqefsg')/docs/$count?api-version=2019-05-06-Preview response: @@ -76,9 +76,9 @@ interactions: content-type: - text/plain date: - - Tue, 31 Mar 2020 17:33:02 GMT + - Wed, 29 Apr 2020 23:17:05 GMT elapsed-time: - - '9' + - '5' expires: - '-1' odata-version: @@ -88,7 +88,7 @@ interactions: preference-applied: - odata.include-annotations="*" request-id: - - ac64b56e-7375-11ea-b79e-5cf37071153c + - 8a720f5e-8a6f-11ea-889b-8c8590507855 strict-transport-security: - max-age=15724800; includeSubDomains vary: @@ -106,9 +106,9 @@ interactions: Connection: - keep-alive User-Agent: - - azsdk-python-search-documents/1.0.0b2 Python/3.6.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - 1452DD88D834472F1EC2D69426FD37B0 + - 7F7F23DF951321BB6EC0497B61BBBF99 method: GET uri: https://searchbc401302.search.windows.net/indexes('drgqefsg')/docs('3')?api-version=2019-05-06-Preview response: @@ -120,15 +120,15 @@ interactions: content-length: - '0' date: - - Tue, 31 Mar 2020 17:33:02 GMT + - Wed, 29 Apr 2020 23:17:05 GMT elapsed-time: - - '5' + - '3' expires: - '-1' pragma: - no-cache request-id: - - ac811c12-7375-11ea-ac68-5cf37071153c + - 8a79c410-8a6f-11ea-889b-8c8590507855 strict-transport-security: - max-age=15724800; includeSubDomains status: @@ -144,9 +144,9 @@ interactions: Connection: - keep-alive User-Agent: - - azsdk-python-search-documents/1.0.0b2 Python/3.6.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - 1452DD88D834472F1EC2D69426FD37B0 + - 7F7F23DF951321BB6EC0497B61BBBF99 method: GET uri: https://searchbc401302.search.windows.net/indexes('drgqefsg')/docs('4')?api-version=2019-05-06-Preview response: @@ -158,15 +158,15 @@ interactions: content-length: - '0' date: - - Tue, 31 Mar 2020 17:33:02 GMT + - Wed, 29 Apr 2020 23:17:05 GMT elapsed-time: - - '5' + - '4' expires: - '-1' pragma: - no-cache request-id: - - aca66c2c-7375-11ea-a2a0-5cf37071153c + - 8a80ab2c-8a6f-11ea-889b-8c8590507855 strict-transport-security: - max-age=15724800; includeSubDomains status: diff --git a/sdk/search/azure-search-documents/tests/recordings/test_index_live.test_delete_documents_missing.yaml b/sdk/search/azure-search-documents/tests/recordings/test_index_live.test_delete_documents_missing.yaml index 59dcb0d8cd5b..51e3ce93e3f0 100644 --- a/sdk/search/azure-search-documents/tests/recordings/test_index_live.test_delete_documents_missing.yaml +++ b/sdk/search/azure-search-documents/tests/recordings/test_index_live.test_delete_documents_missing.yaml @@ -14,9 +14,9 @@ interactions: Content-Type: - application/json User-Agent: - - azsdk-python-search-documents/1.0.0b2 Python/3.6.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - 99211B5C4ABD8A0143509AE62A1DCEC4 + - EF93A352FBEA8C4306E72E9FA5DE1C21 method: POST uri: https://searcha9301291.search.windows.net/indexes('drgqefsg')/docs/search.index?api-version=2019-05-06-Preview response: @@ -30,9 +30,9 @@ interactions: content-type: - application/json; odata.metadata=none date: - - Tue, 31 Mar 2020 17:33:18 GMT + - Wed, 29 Apr 2020 23:17:17 GMT elapsed-time: - - '214' + - '83' expires: - '-1' odata-version: @@ -42,7 +42,7 @@ interactions: preference-applied: - odata.include-annotations="*" request-id: - - b626c902-7375-11ea-b906-5cf37071153c + - 919491ee-8a6f-11ea-889b-8c8590507855 strict-transport-security: - max-age=15724800; includeSubDomains vary: @@ -60,9 +60,9 @@ interactions: Connection: - keep-alive User-Agent: - - azsdk-python-search-documents/1.0.0b2 Python/3.6.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - 99211B5C4ABD8A0143509AE62A1DCEC4 + - EF93A352FBEA8C4306E72E9FA5DE1C21 method: GET uri: https://searcha9301291.search.windows.net/indexes('drgqefsg')/docs/$count?api-version=2019-05-06-Preview response: @@ -76,7 +76,7 @@ interactions: content-type: - text/plain date: - - Tue, 31 Mar 2020 17:33:22 GMT + - Wed, 29 Apr 2020 23:17:20 GMT elapsed-time: - '4' expires: @@ -88,7 +88,7 @@ interactions: preference-applied: - odata.include-annotations="*" request-id: - - b85c6a1c-7375-11ea-bf12-5cf37071153c + - 93888cc6-8a6f-11ea-889b-8c8590507855 strict-transport-security: - max-age=15724800; includeSubDomains vary: @@ -106,9 +106,9 @@ interactions: Connection: - keep-alive User-Agent: - - azsdk-python-search-documents/1.0.0b2 Python/3.6.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - 99211B5C4ABD8A0143509AE62A1DCEC4 + - EF93A352FBEA8C4306E72E9FA5DE1C21 method: GET uri: https://searcha9301291.search.windows.net/indexes('drgqefsg')/docs('1000')?api-version=2019-05-06-Preview response: @@ -120,15 +120,15 @@ interactions: content-length: - '0' date: - - Tue, 31 Mar 2020 17:33:22 GMT + - Wed, 29 Apr 2020 23:17:20 GMT elapsed-time: - - '5' + - '6' expires: - '-1' pragma: - no-cache request-id: - - b87b9240-7375-11ea-a8d5-5cf37071153c + - 938fe08e-8a6f-11ea-889b-8c8590507855 strict-transport-security: - max-age=15724800; includeSubDomains status: @@ -144,9 +144,9 @@ interactions: Connection: - keep-alive User-Agent: - - azsdk-python-search-documents/1.0.0b2 Python/3.6.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - 99211B5C4ABD8A0143509AE62A1DCEC4 + - EF93A352FBEA8C4306E72E9FA5DE1C21 method: GET uri: https://searcha9301291.search.windows.net/indexes('drgqefsg')/docs('4')?api-version=2019-05-06-Preview response: @@ -158,7 +158,7 @@ interactions: content-length: - '0' date: - - Tue, 31 Mar 2020 17:33:22 GMT + - Wed, 29 Apr 2020 23:17:20 GMT elapsed-time: - '6' expires: @@ -166,7 +166,7 @@ interactions: pragma: - no-cache request-id: - - b88bff3a-7375-11ea-b8fd-5cf37071153c + - 93986740-8a6f-11ea-889b-8c8590507855 strict-transport-security: - max-age=15724800; includeSubDomains status: diff --git a/sdk/search/azure-search-documents/tests/recordings/test_index_live.test_get_document.yaml b/sdk/search/azure-search-documents/tests/recordings/test_index_live.test_get_document.yaml index f59d7ceb080d..97ccc72a9428 100644 --- a/sdk/search/azure-search-documents/tests/recordings/test_index_live.test_get_document.yaml +++ b/sdk/search/azure-search-documents/tests/recordings/test_index_live.test_get_document.yaml @@ -9,9 +9,9 @@ interactions: Connection: - keep-alive User-Agent: - - azsdk-python-search-documents/1.0.0b2 Python/3.6.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - 2BBF65222BD48D120C38FB5CFAF17B6D + - 52988C94E83C6EFD6D6B57723CC909C2 method: GET uri: https://searche6a60d92.search.windows.net/indexes('drgqefsg')/docs('1')?api-version=2019-05-06-Preview response: @@ -32,9 +32,9 @@ interactions: content-type: - application/json; odata.metadata=none date: - - Tue, 31 Mar 2020 17:33:38 GMT + - Wed, 29 Apr 2020 23:17:32 GMT elapsed-time: - - '168' + - '95' expires: - '-1' odata-version: @@ -44,7 +44,7 @@ interactions: preference-applied: - odata.include-annotations="*" request-id: - - c1e6159e-7375-11ea-97fa-5cf37071153c + - 9a18aa26-8a6f-11ea-889b-8c8590507855 strict-transport-security: - max-age=15724800; includeSubDomains vary: @@ -62,9 +62,9 @@ interactions: Connection: - keep-alive User-Agent: - - azsdk-python-search-documents/1.0.0b2 Python/3.6.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - 2BBF65222BD48D120C38FB5CFAF17B6D + - 52988C94E83C6EFD6D6B57723CC909C2 method: GET uri: https://searche6a60d92.search.windows.net/indexes('drgqefsg')/docs('2')?api-version=2019-05-06-Preview response: @@ -80,9 +80,9 @@ interactions: content-type: - application/json; odata.metadata=none date: - - Tue, 31 Mar 2020 17:33:38 GMT + - Wed, 29 Apr 2020 23:17:32 GMT elapsed-time: - - '13' + - '5' expires: - '-1' odata-version: @@ -92,7 +92,7 @@ interactions: preference-applied: - odata.include-annotations="*" request-id: - - c246ce2c-7375-11ea-ae58-5cf37071153c + - 9a3d397c-8a6f-11ea-889b-8c8590507855 strict-transport-security: - max-age=15724800; includeSubDomains vary: @@ -110,9 +110,9 @@ interactions: Connection: - keep-alive User-Agent: - - azsdk-python-search-documents/1.0.0b2 Python/3.6.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - 2BBF65222BD48D120C38FB5CFAF17B6D + - 52988C94E83C6EFD6D6B57723CC909C2 method: GET uri: https://searche6a60d92.search.windows.net/indexes('drgqefsg')/docs('3')?api-version=2019-05-06-Preview response: @@ -127,9 +127,9 @@ interactions: content-type: - application/json; odata.metadata=none date: - - Tue, 31 Mar 2020 17:33:38 GMT + - Wed, 29 Apr 2020 23:17:32 GMT elapsed-time: - - '11' + - '4' expires: - '-1' odata-version: @@ -139,7 +139,7 @@ interactions: preference-applied: - odata.include-annotations="*" request-id: - - c25a514a-7375-11ea-8b41-5cf37071153c + - 9a447598-8a6f-11ea-889b-8c8590507855 strict-transport-security: - max-age=15724800; includeSubDomains vary: @@ -157,9 +157,9 @@ interactions: Connection: - keep-alive User-Agent: - - azsdk-python-search-documents/1.0.0b2 Python/3.6.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - 2BBF65222BD48D120C38FB5CFAF17B6D + - 52988C94E83C6EFD6D6B57723CC909C2 method: GET uri: https://searche6a60d92.search.windows.net/indexes('drgqefsg')/docs('4')?api-version=2019-05-06-Preview response: @@ -174,9 +174,9 @@ interactions: content-type: - application/json; odata.metadata=none date: - - Tue, 31 Mar 2020 17:33:38 GMT + - Wed, 29 Apr 2020 23:17:32 GMT elapsed-time: - - '19' + - '4' expires: - '-1' odata-version: @@ -186,7 +186,7 @@ interactions: preference-applied: - odata.include-annotations="*" request-id: - - c285205a-7375-11ea-8960-5cf37071153c + - 9a4b0106-8a6f-11ea-889b-8c8590507855 strict-transport-security: - max-age=15724800; includeSubDomains vary: @@ -204,9 +204,9 @@ interactions: Connection: - keep-alive User-Agent: - - azsdk-python-search-documents/1.0.0b2 Python/3.6.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - 2BBF65222BD48D120C38FB5CFAF17B6D + - 52988C94E83C6EFD6D6B57723CC909C2 method: GET uri: https://searche6a60d92.search.windows.net/indexes('drgqefsg')/docs('5')?api-version=2019-05-06-Preview response: @@ -221,9 +221,9 @@ interactions: content-type: - application/json; odata.metadata=none date: - - Tue, 31 Mar 2020 17:33:38 GMT + - Wed, 29 Apr 2020 23:17:32 GMT elapsed-time: - - '13' + - '4' expires: - '-1' odata-version: @@ -233,7 +233,7 @@ interactions: preference-applied: - odata.include-annotations="*" request-id: - - c29ffe5e-7375-11ea-adc9-5cf37071153c + - 9a51e21e-8a6f-11ea-889b-8c8590507855 strict-transport-security: - max-age=15724800; includeSubDomains vary: @@ -251,9 +251,9 @@ interactions: Connection: - keep-alive User-Agent: - - azsdk-python-search-documents/1.0.0b2 Python/3.6.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - 2BBF65222BD48D120C38FB5CFAF17B6D + - 52988C94E83C6EFD6D6B57723CC909C2 method: GET uri: https://searche6a60d92.search.windows.net/indexes('drgqefsg')/docs('6')?api-version=2019-05-06-Preview response: @@ -268,9 +268,9 @@ interactions: content-type: - application/json; odata.metadata=none date: - - Tue, 31 Mar 2020 17:33:39 GMT + - Wed, 29 Apr 2020 23:17:32 GMT elapsed-time: - - '5' + - '3' expires: - '-1' odata-version: @@ -280,7 +280,7 @@ interactions: preference-applied: - odata.include-annotations="*" request-id: - - c2b24834-7375-11ea-9193-5cf37071153c + - 9a585a90-8a6f-11ea-889b-8c8590507855 strict-transport-security: - max-age=15724800; includeSubDomains vary: @@ -298,9 +298,9 @@ interactions: Connection: - keep-alive User-Agent: - - azsdk-python-search-documents/1.0.0b2 Python/3.6.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - 2BBF65222BD48D120C38FB5CFAF17B6D + - 52988C94E83C6EFD6D6B57723CC909C2 method: GET uri: https://searche6a60d92.search.windows.net/indexes('drgqefsg')/docs('7')?api-version=2019-05-06-Preview response: @@ -316,9 +316,9 @@ interactions: content-type: - application/json; odata.metadata=none date: - - Tue, 31 Mar 2020 17:33:39 GMT + - Wed, 29 Apr 2020 23:17:32 GMT elapsed-time: - - '10' + - '3' expires: - '-1' odata-version: @@ -328,7 +328,7 @@ interactions: preference-applied: - odata.include-annotations="*" request-id: - - c2ddf458-7375-11ea-ba75-5cf37071153c + - 9a5ebf48-8a6f-11ea-889b-8c8590507855 strict-transport-security: - max-age=15724800; includeSubDomains vary: @@ -346,9 +346,9 @@ interactions: Connection: - keep-alive User-Agent: - - azsdk-python-search-documents/1.0.0b2 Python/3.6.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - 2BBF65222BD48D120C38FB5CFAF17B6D + - 52988C94E83C6EFD6D6B57723CC909C2 method: GET uri: https://searche6a60d92.search.windows.net/indexes('drgqefsg')/docs('8')?api-version=2019-05-06-Preview response: @@ -365,9 +365,9 @@ interactions: content-type: - application/json; odata.metadata=none date: - - Tue, 31 Mar 2020 17:33:39 GMT + - Wed, 29 Apr 2020 23:17:32 GMT elapsed-time: - - '10' + - '4' expires: - '-1' odata-version: @@ -377,7 +377,7 @@ interactions: preference-applied: - odata.include-annotations="*" request-id: - - c2f71bc0-7375-11ea-8ada-5cf37071153c + - 9a654728-8a6f-11ea-889b-8c8590507855 strict-transport-security: - max-age=15724800; includeSubDomains vary: @@ -395,9 +395,9 @@ interactions: Connection: - keep-alive User-Agent: - - azsdk-python-search-documents/1.0.0b2 Python/3.6.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - 2BBF65222BD48D120C38FB5CFAF17B6D + - 52988C94E83C6EFD6D6B57723CC909C2 method: GET uri: https://searche6a60d92.search.windows.net/indexes('drgqefsg')/docs('9')?api-version=2019-05-06-Preview response: @@ -428,9 +428,9 @@ interactions: content-type: - application/json; odata.metadata=none date: - - Tue, 31 Mar 2020 17:33:39 GMT + - Wed, 29 Apr 2020 23:17:32 GMT elapsed-time: - - '41' + - '6' expires: - '-1' odata-version: @@ -440,7 +440,7 @@ interactions: preference-applied: - odata.include-annotations="*" request-id: - - c30eabba-7375-11ea-a13a-5cf37071153c + - 9a6bd598-8a6f-11ea-889b-8c8590507855 strict-transport-security: - max-age=15724800; includeSubDomains vary: @@ -458,9 +458,9 @@ interactions: Connection: - keep-alive User-Agent: - - azsdk-python-search-documents/1.0.0b2 Python/3.6.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - 2BBF65222BD48D120C38FB5CFAF17B6D + - 52988C94E83C6EFD6D6B57723CC909C2 method: GET uri: https://searche6a60d92.search.windows.net/indexes('drgqefsg')/docs('10')?api-version=2019-05-06-Preview response: @@ -487,9 +487,9 @@ interactions: content-type: - application/json; odata.metadata=none date: - - Tue, 31 Mar 2020 17:33:39 GMT + - Wed, 29 Apr 2020 23:17:32 GMT elapsed-time: - - '53' + - '9' expires: - '-1' odata-version: @@ -499,7 +499,7 @@ interactions: preference-applied: - odata.include-annotations="*" request-id: - - c3434cb4-7375-11ea-aabf-5cf37071153c + - 9a732154-8a6f-11ea-889b-8c8590507855 strict-transport-security: - max-age=15724800; includeSubDomains vary: diff --git a/sdk/search/azure-search-documents/tests/recordings/test_index_live.test_get_document_count.yaml b/sdk/search/azure-search-documents/tests/recordings/test_index_live.test_get_document_count.yaml index e9cf603b1eab..fa790273d137 100644 --- a/sdk/search/azure-search-documents/tests/recordings/test_index_live.test_get_document_count.yaml +++ b/sdk/search/azure-search-documents/tests/recordings/test_index_live.test_get_document_count.yaml @@ -9,9 +9,9 @@ interactions: Connection: - keep-alive User-Agent: - - azsdk-python-search-documents/1.0.0b2 Python/3.6.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - C50231B521F2F9B25F221CD01462DFF3 + - 4E1885551AC6A7AC5096353C8E0B706B method: GET uri: https://search40b5101a.search.windows.net/indexes('drgqefsg')/docs/$count?api-version=2019-05-06-Preview response: @@ -25,9 +25,9 @@ interactions: content-type: - text/plain date: - - Tue, 31 Mar 2020 17:33:58 GMT + - Wed, 29 Apr 2020 23:17:44 GMT elapsed-time: - - '148' + - '59' expires: - '-1' odata-version: @@ -37,7 +37,7 @@ interactions: preference-applied: - odata.include-annotations="*" request-id: - - cd94ac5c-7375-11ea-bd6b-5cf37071153c + - a16eab9a-8a6f-11ea-889b-8c8590507855 strict-transport-security: - max-age=15724800; includeSubDomains vary: diff --git a/sdk/search/azure-search-documents/tests/recordings/test_index_live.test_get_document_missing.yaml b/sdk/search/azure-search-documents/tests/recordings/test_index_live.test_get_document_missing.yaml index 2a6daba5d6bd..adbcad7483bd 100644 --- a/sdk/search/azure-search-documents/tests/recordings/test_index_live.test_get_document_missing.yaml +++ b/sdk/search/azure-search-documents/tests/recordings/test_index_live.test_get_document_missing.yaml @@ -9,9 +9,9 @@ interactions: Connection: - keep-alive User-Agent: - - azsdk-python-search-documents/1.0.0b2 Python/3.6.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - 806AC17ACCD9D0AB7EDD5C57948070EF + - 1BBE70CA8604EF05ACBB2DE58FEBFA85 method: GET uri: https://search623710eb.search.windows.net/indexes('drgqefsg')/docs('1000')?api-version=2019-05-06-Preview response: @@ -23,15 +23,15 @@ interactions: content-length: - '0' date: - - Tue, 31 Mar 2020 17:34:14 GMT + - Wed, 29 Apr 2020 23:17:55 GMT elapsed-time: - - '123' + - '65' expires: - '-1' pragma: - no-cache request-id: - - d77c941e-7375-11ea-ade1-5cf37071153c + - a8260c94-8a6f-11ea-889b-8c8590507855 strict-transport-security: - max-age=15724800; includeSubDomains status: diff --git a/sdk/search/azure-search-documents/tests/recordings/test_index_live.test_get_search_counts.yaml b/sdk/search/azure-search-documents/tests/recordings/test_index_live.test_get_search_counts.yaml index cd73fd180dac..de9bb29e035c 100644 --- a/sdk/search/azure-search-documents/tests/recordings/test_index_live.test_get_search_counts.yaml +++ b/sdk/search/azure-search-documents/tests/recordings/test_index_live.test_get_search_counts.yaml @@ -13,9 +13,9 @@ interactions: Content-Type: - application/json User-Agent: - - azsdk-python-search-documents/1.0.0b2 Python/3.6.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - DCABB347DDA3412B5DAF0070D9F6C130 + - 6A55B07F42EFB9E6E03089F3F9A7220F method: POST uri: https://search30390fa4.search.windows.net/indexes('drgqefsg')/docs/search.post.search?api-version=2019-05-06-Preview response: @@ -72,9 +72,9 @@ interactions: content-type: - application/json; odata.metadata=none date: - - Tue, 31 Mar 2020 17:34:30 GMT + - Wed, 29 Apr 2020 23:18:07 GMT elapsed-time: - - '188' + - '96' expires: - '-1' odata-version: @@ -84,7 +84,7 @@ interactions: preference-applied: - odata.include-annotations="*" request-id: - - e0da6918-7375-11ea-bbbd-5cf37071153c + - aefb60a0-8a6f-11ea-889b-8c8590507855 strict-transport-security: - max-age=15724800; includeSubDomains vary: @@ -106,9 +106,9 @@ interactions: Content-Type: - application/json User-Agent: - - azsdk-python-search-documents/1.0.0b2 Python/3.6.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - DCABB347DDA3412B5DAF0070D9F6C130 + - 6A55B07F42EFB9E6E03089F3F9A7220F method: POST uri: https://search30390fa4.search.windows.net/indexes('drgqefsg')/docs/search.post.search?api-version=2019-05-06-Preview response: @@ -165,9 +165,9 @@ interactions: content-type: - application/json; odata.metadata=none date: - - Tue, 31 Mar 2020 17:34:30 GMT + - Wed, 29 Apr 2020 23:18:07 GMT elapsed-time: - - '15' + - '9' expires: - '-1' odata-version: @@ -177,7 +177,7 @@ interactions: preference-applied: - odata.include-annotations="*" request-id: - - e1453edc-7375-11ea-aebe-5cf37071153c + - af20c37c-8a6f-11ea-889b-8c8590507855 strict-transport-security: - max-age=15724800; includeSubDomains vary: diff --git a/sdk/search/azure-search-documents/tests/recordings/test_index_live.test_get_search_coverage.yaml b/sdk/search/azure-search-documents/tests/recordings/test_index_live.test_get_search_coverage.yaml index e941dcbc114f..6d81559ed8ea 100644 --- a/sdk/search/azure-search-documents/tests/recordings/test_index_live.test_get_search_coverage.yaml +++ b/sdk/search/azure-search-documents/tests/recordings/test_index_live.test_get_search_coverage.yaml @@ -13,9 +13,9 @@ interactions: Content-Type: - application/json User-Agent: - - azsdk-python-search-documents/1.0.0b2 Python/3.6.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - 3156F4CE69D33CAF4E2B8CC6FA27862A + - 2012A83AD519035A878754DF20535EC1 method: POST uri: https://search504f1054.search.windows.net/indexes('drgqefsg')/docs/search.post.search?api-version=2019-05-06-Preview response: @@ -72,9 +72,9 @@ interactions: content-type: - application/json; odata.metadata=none date: - - Tue, 31 Mar 2020 17:34:47 GMT + - Wed, 29 Apr 2020 23:18:18 GMT elapsed-time: - - '234' + - '80' expires: - '-1' odata-version: @@ -84,7 +84,7 @@ interactions: preference-applied: - odata.include-annotations="*" request-id: - - eb26bd28-7375-11ea-af85-5cf37071153c + - b5d9445a-8a6f-11ea-889b-8c8590507855 strict-transport-security: - max-age=15724800; includeSubDomains vary: @@ -106,9 +106,9 @@ interactions: Content-Type: - application/json User-Agent: - - azsdk-python-search-documents/1.0.0b2 Python/3.6.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - 3156F4CE69D33CAF4E2B8CC6FA27862A + - 2012A83AD519035A878754DF20535EC1 method: POST uri: https://search504f1054.search.windows.net/indexes('drgqefsg')/docs/search.post.search?api-version=2019-05-06-Preview response: @@ -165,9 +165,9 @@ interactions: content-type: - application/json; odata.metadata=none date: - - Tue, 31 Mar 2020 17:34:47 GMT + - Wed, 29 Apr 2020 23:18:18 GMT elapsed-time: - - '15' + - '7' expires: - '-1' odata-version: @@ -177,7 +177,7 @@ interactions: preference-applied: - odata.include-annotations="*" request-id: - - eb8a681a-7375-11ea-9f75-5cf37071153c + - b5fd6af6-8a6f-11ea-889b-8c8590507855 strict-transport-security: - max-age=15724800; includeSubDomains vary: diff --git a/sdk/search/azure-search-documents/tests/recordings/test_index_live.test_get_search_facets_none.yaml b/sdk/search/azure-search-documents/tests/recordings/test_index_live.test_get_search_facets_none.yaml index 885b0fbd3414..43a8b61f589a 100644 --- a/sdk/search/azure-search-documents/tests/recordings/test_index_live.test_get_search_facets_none.yaml +++ b/sdk/search/azure-search-documents/tests/recordings/test_index_live.test_get_search_facets_none.yaml @@ -13,9 +13,9 @@ interactions: Content-Type: - application/json User-Agent: - - azsdk-python-search-documents/1.0.0b2 Python/3.6.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - D4337B4EF7012C4592A39FDFC7A21EE8 + - E708C0D55BDFCED551EEEFA491DAAF80 method: POST uri: https://search8339118d.search.windows.net/indexes('drgqefsg')/docs/search.post.search?api-version=2019-05-06-Preview response: @@ -39,9 +39,9 @@ interactions: content-type: - application/json; odata.metadata=none date: - - Tue, 31 Mar 2020 17:35:04 GMT + - Wed, 29 Apr 2020 23:18:30 GMT elapsed-time: - - '26' + - '176' expires: - '-1' odata-version: @@ -51,7 +51,7 @@ interactions: preference-applied: - odata.include-annotations="*" request-id: - - f4c88402-7375-11ea-bce7-5cf37071153c + - bc94fb86-8a6f-11ea-889b-8c8590507855 strict-transport-security: - max-age=15724800; includeSubDomains vary: diff --git a/sdk/search/azure-search-documents/tests/recordings/test_index_live.test_get_search_facets_result.yaml b/sdk/search/azure-search-documents/tests/recordings/test_index_live.test_get_search_facets_result.yaml index 0085531761eb..96704fc1f272 100644 --- a/sdk/search/azure-search-documents/tests/recordings/test_index_live.test_get_search_facets_result.yaml +++ b/sdk/search/azure-search-documents/tests/recordings/test_index_live.test_get_search_facets_result.yaml @@ -13,9 +13,9 @@ interactions: Content-Type: - application/json User-Agent: - - azsdk-python-search-documents/1.0.0b2 Python/3.6.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - 7B81458229F800D560CD4DB55E848D5C + - 3264E611B72761B1DD80EA3277F4EE84 method: POST uri: https://searcha7c9127c.search.windows.net/indexes('drgqefsg')/docs/search.post.search?api-version=2019-05-06-Preview response: @@ -39,9 +39,9 @@ interactions: content-type: - application/json; odata.metadata=none date: - - Tue, 31 Mar 2020 17:35:20 GMT + - Wed, 29 Apr 2020 23:18:40 GMT elapsed-time: - - '260' + - '193' expires: - '-1' odata-version: @@ -51,7 +51,7 @@ interactions: preference-applied: - odata.include-annotations="*" request-id: - - feeab73a-7375-11ea-bafd-5cf37071153c + - c2f827aa-8a6f-11ea-889b-8c8590507855 strict-transport-security: - max-age=15724800; includeSubDomains vary: diff --git a/sdk/search/azure-search-documents/tests/recordings/test_index_live.test_get_search_filter.yaml b/sdk/search/azure-search-documents/tests/recordings/test_index_live.test_get_search_filter.yaml index b43ae4e0f764..43444d7d6b64 100644 --- a/sdk/search/azure-search-documents/tests/recordings/test_index_live.test_get_search_filter.yaml +++ b/sdk/search/azure-search-documents/tests/recordings/test_index_live.test_get_search_filter.yaml @@ -14,9 +14,9 @@ interactions: Content-Type: - application/json User-Agent: - - azsdk-python-search-documents/1.0.0b2 Python/3.6.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - CFD190869A216B0AE65803A6FD0013CA + - B583478EFB4C1DBC374E331DA859BE86 method: POST uri: https://search2ffc0f8e.search.windows.net/indexes('drgqefsg')/docs/search.post.search?api-version=2019-05-06-Preview response: @@ -36,9 +36,9 @@ interactions: content-type: - application/json; odata.metadata=none date: - - Tue, 31 Mar 2020 17:35:38 GMT + - Wed, 29 Apr 2020 23:18:52 GMT elapsed-time: - - '187' + - '103' expires: - '-1' odata-version: @@ -48,7 +48,7 @@ interactions: preference-applied: - odata.include-annotations="*" request-id: - - 096d70e8-7376-11ea-abee-5cf37071153c + - c9e16d92-8a6f-11ea-889b-8c8590507855 strict-transport-security: - max-age=15724800; includeSubDomains vary: diff --git a/sdk/search/azure-search-documents/tests/recordings/test_index_live.test_get_search_simple.yaml b/sdk/search/azure-search-documents/tests/recordings/test_index_live.test_get_search_simple.yaml index 06b05e8ce414..98812f5f8246 100644 --- a/sdk/search/azure-search-documents/tests/recordings/test_index_live.test_get_search_simple.yaml +++ b/sdk/search/azure-search-documents/tests/recordings/test_index_live.test_get_search_simple.yaml @@ -13,9 +13,9 @@ interactions: Content-Type: - application/json User-Agent: - - azsdk-python-search-documents/1.0.0b2 Python/3.6.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - 2422055D56218F0FAF784A646729E5DA + - 61C29831B328077CA7F9271631F6FACD method: POST uri: https://search30430f92.search.windows.net/indexes('drgqefsg')/docs/search.post.search?api-version=2019-05-06-Preview response: @@ -72,9 +72,9 @@ interactions: content-type: - application/json; odata.metadata=none date: - - Tue, 31 Mar 2020 17:35:53 GMT + - Wed, 29 Apr 2020 23:19:03 GMT elapsed-time: - - '178' + - '84' expires: - '-1' odata-version: @@ -84,7 +84,7 @@ interactions: preference-applied: - odata.include-annotations="*" request-id: - - 12b61776-7376-11ea-b26b-5cf37071153c + - d065abc4-8a6f-11ea-889b-8c8590507855 strict-transport-security: - max-age=15724800; includeSubDomains vary: @@ -106,9 +106,9 @@ interactions: Content-Type: - application/json User-Agent: - - azsdk-python-search-documents/1.0.0b2 Python/3.6.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - 2422055D56218F0FAF784A646729E5DA + - 61C29831B328077CA7F9271631F6FACD method: POST uri: https://search30430f92.search.windows.net/indexes('drgqefsg')/docs/search.post.search?api-version=2019-05-06-Preview response: @@ -141,9 +141,9 @@ interactions: content-type: - application/json; odata.metadata=none date: - - Tue, 31 Mar 2020 17:35:53 GMT + - Wed, 29 Apr 2020 23:19:03 GMT elapsed-time: - - '12' + - '6' expires: - '-1' odata-version: @@ -153,7 +153,7 @@ interactions: preference-applied: - odata.include-annotations="*" request-id: - - 13117b98-7376-11ea-a7a3-5cf37071153c + - d088cbea-8a6f-11ea-889b-8c8590507855 strict-transport-security: - max-age=15724800; includeSubDomains vary: diff --git a/sdk/search/azure-search-documents/tests/recordings/test_index_live.test_merge_documents_existing.yaml b/sdk/search/azure-search-documents/tests/recordings/test_index_live.test_merge_documents_existing.yaml index ffada21d54de..675228e4dc2a 100644 --- a/sdk/search/azure-search-documents/tests/recordings/test_index_live.test_merge_documents_existing.yaml +++ b/sdk/search/azure-search-documents/tests/recordings/test_index_live.test_merge_documents_existing.yaml @@ -14,9 +14,9 @@ interactions: Content-Type: - application/json User-Agent: - - azsdk-python-search-documents/1.0.0b2 Python/3.6.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - 2849058BFF6841DECCD557BC68C4443E + - F8DD003FC5552C963171F79B1E2FBCFF method: POST uri: https://searchaa14129f.search.windows.net/indexes('drgqefsg')/docs/search.index?api-version=2019-05-06-Preview response: @@ -30,9 +30,9 @@ interactions: content-type: - application/json; odata.metadata=none date: - - Tue, 31 Mar 2020 17:36:09 GMT + - Wed, 29 Apr 2020 23:19:14 GMT elapsed-time: - - '42' + - '76' expires: - '-1' odata-version: @@ -42,7 +42,7 @@ interactions: preference-applied: - odata.include-annotations="*" request-id: - - 1c489752-7376-11ea-ba2e-5cf37071153c + - d6da9f5a-8a6f-11ea-889b-8c8590507855 strict-transport-security: - max-age=15724800; includeSubDomains vary: @@ -60,9 +60,9 @@ interactions: Connection: - keep-alive User-Agent: - - azsdk-python-search-documents/1.0.0b2 Python/3.6.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - 2849058BFF6841DECCD557BC68C4443E + - F8DD003FC5552C963171F79B1E2FBCFF method: GET uri: https://searchaa14129f.search.windows.net/indexes('drgqefsg')/docs/$count?api-version=2019-05-06-Preview response: @@ -76,9 +76,9 @@ interactions: content-type: - text/plain date: - - Tue, 31 Mar 2020 17:36:13 GMT + - Wed, 29 Apr 2020 23:19:16 GMT elapsed-time: - - '7' + - '3' expires: - '-1' odata-version: @@ -88,7 +88,7 @@ interactions: preference-applied: - odata.include-annotations="*" request-id: - - 1e5f88b0-7376-11ea-99ac-5cf37071153c + - d8c6f052-8a6f-11ea-889b-8c8590507855 strict-transport-security: - max-age=15724800; includeSubDomains vary: @@ -106,9 +106,9 @@ interactions: Connection: - keep-alive User-Agent: - - azsdk-python-search-documents/1.0.0b2 Python/3.6.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - 2849058BFF6841DECCD557BC68C4443E + - F8DD003FC5552C963171F79B1E2FBCFF method: GET uri: https://searchaa14129f.search.windows.net/indexes('drgqefsg')/docs('3')?api-version=2019-05-06-Preview response: @@ -123,9 +123,9 @@ interactions: content-type: - application/json; odata.metadata=none date: - - Tue, 31 Mar 2020 17:36:13 GMT + - Wed, 29 Apr 2020 23:19:17 GMT elapsed-time: - - '10' + - '7' expires: - '-1' odata-version: @@ -135,7 +135,7 @@ interactions: preference-applied: - odata.include-annotations="*" request-id: - - 1e730d48-7376-11ea-8e85-5cf37071153c + - d8cde47a-8a6f-11ea-889b-8c8590507855 strict-transport-security: - max-age=15724800; includeSubDomains vary: @@ -153,9 +153,9 @@ interactions: Connection: - keep-alive User-Agent: - - azsdk-python-search-documents/1.0.0b2 Python/3.6.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - 2849058BFF6841DECCD557BC68C4443E + - F8DD003FC5552C963171F79B1E2FBCFF method: GET uri: https://searchaa14129f.search.windows.net/indexes('drgqefsg')/docs('4')?api-version=2019-05-06-Preview response: @@ -170,9 +170,9 @@ interactions: content-type: - application/json; odata.metadata=none date: - - Tue, 31 Mar 2020 17:36:13 GMT + - Wed, 29 Apr 2020 23:19:17 GMT elapsed-time: - - '7' + - '4' expires: - '-1' odata-version: @@ -182,7 +182,7 @@ interactions: preference-applied: - odata.include-annotations="*" request-id: - - 1e827614-7376-11ea-a305-5cf37071153c + - d8d53608-8a6f-11ea-889b-8c8590507855 strict-transport-security: - max-age=15724800; includeSubDomains vary: diff --git a/sdk/search/azure-search-documents/tests/recordings/test_index_live.test_merge_documents_missing.yaml b/sdk/search/azure-search-documents/tests/recordings/test_index_live.test_merge_documents_missing.yaml index 534886f7d784..bf2d5925dd31 100644 --- a/sdk/search/azure-search-documents/tests/recordings/test_index_live.test_merge_documents_missing.yaml +++ b/sdk/search/azure-search-documents/tests/recordings/test_index_live.test_merge_documents_missing.yaml @@ -14,9 +14,9 @@ interactions: Content-Type: - application/json User-Agent: - - azsdk-python-search-documents/1.0.0b2 Python/3.6.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - D337C6A835DDC58984C2D1E9A9ABB30A + - C2268A70B7F246FB2B96488EBCFCEA29 method: POST uri: https://search9767122e.search.windows.net/indexes('drgqefsg')/docs/search.index?api-version=2019-05-06-Preview response: @@ -31,9 +31,9 @@ interactions: content-type: - application/json; odata.metadata=none date: - - Tue, 31 Mar 2020 17:36:31 GMT + - Wed, 29 Apr 2020 23:19:28 GMT elapsed-time: - - '161' + - '344' expires: - '-1' odata-version: @@ -43,7 +43,7 @@ interactions: preference-applied: - odata.include-annotations="*" request-id: - - 29020494-7376-11ea-93de-5cf37071153c + - df7dcb6e-8a6f-11ea-889b-8c8590507855 strict-transport-security: - max-age=15724800; includeSubDomains vary: @@ -61,9 +61,9 @@ interactions: Connection: - keep-alive User-Agent: - - azsdk-python-search-documents/1.0.0b2 Python/3.6.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - D337C6A835DDC58984C2D1E9A9ABB30A + - C2268A70B7F246FB2B96488EBCFCEA29 method: GET uri: https://search9767122e.search.windows.net/indexes('drgqefsg')/docs/$count?api-version=2019-05-06-Preview response: @@ -77,9 +77,9 @@ interactions: content-type: - text/plain date: - - Tue, 31 Mar 2020 17:36:34 GMT + - Wed, 29 Apr 2020 23:19:31 GMT elapsed-time: - - '5' + - '3' expires: - '-1' odata-version: @@ -89,7 +89,7 @@ interactions: preference-applied: - odata.include-annotations="*" request-id: - - 2b238da4-7376-11ea-81eb-5cf37071153c + - e19ea206-8a6f-11ea-889b-8c8590507855 strict-transport-security: - max-age=15724800; includeSubDomains vary: @@ -107,9 +107,9 @@ interactions: Connection: - keep-alive User-Agent: - - azsdk-python-search-documents/1.0.0b2 Python/3.6.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - D337C6A835DDC58984C2D1E9A9ABB30A + - C2268A70B7F246FB2B96488EBCFCEA29 method: GET uri: https://search9767122e.search.windows.net/indexes('drgqefsg')/docs('1000')?api-version=2019-05-06-Preview response: @@ -121,15 +121,15 @@ interactions: content-length: - '0' date: - - Tue, 31 Mar 2020 17:36:34 GMT + - Wed, 29 Apr 2020 23:19:31 GMT elapsed-time: - - '4' + - '6' expires: - '-1' pragma: - no-cache request-id: - - 2b34dab8-7376-11ea-8904-5cf37071153c + - e1a5a1b4-8a6f-11ea-889b-8c8590507855 strict-transport-security: - max-age=15724800; includeSubDomains status: @@ -145,9 +145,9 @@ interactions: Connection: - keep-alive User-Agent: - - azsdk-python-search-documents/1.0.0b2 Python/3.6.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - D337C6A835DDC58984C2D1E9A9ABB30A + - C2268A70B7F246FB2B96488EBCFCEA29 method: GET uri: https://search9767122e.search.windows.net/indexes('drgqefsg')/docs('4')?api-version=2019-05-06-Preview response: @@ -162,9 +162,9 @@ interactions: content-type: - application/json; odata.metadata=none date: - - Tue, 31 Mar 2020 17:36:34 GMT + - Wed, 29 Apr 2020 23:19:31 GMT elapsed-time: - - '9' + - '10' expires: - '-1' odata-version: @@ -174,7 +174,7 @@ interactions: preference-applied: - odata.include-annotations="*" request-id: - - 2b470f52-7376-11ea-ab7c-5cf37071153c + - e1aca52c-8a6f-11ea-889b-8c8590507855 strict-transport-security: - max-age=15724800; includeSubDomains vary: diff --git a/sdk/search/azure-search-documents/tests/recordings/test_index_live.test_merge_or_upload_documents.yaml b/sdk/search/azure-search-documents/tests/recordings/test_index_live.test_merge_or_upload_documents.yaml index 059b90bafdd2..68a475f548ef 100644 --- a/sdk/search/azure-search-documents/tests/recordings/test_index_live.test_merge_or_upload_documents.yaml +++ b/sdk/search/azure-search-documents/tests/recordings/test_index_live.test_merge_or_upload_documents.yaml @@ -14,9 +14,9 @@ interactions: Content-Type: - application/json User-Agent: - - azsdk-python-search-documents/1.0.0b2 Python/3.6.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - F02C9620AD7963286CD9A005C981A3E5 + - 8AAFBCAFAC7EBBE2BEB172384549698B method: POST uri: https://searchbc7412f9.search.windows.net/indexes('drgqefsg')/docs/search.index?api-version=2019-05-06-Preview response: @@ -30,9 +30,9 @@ interactions: content-type: - application/json; odata.metadata=none date: - - Tue, 31 Mar 2020 17:36:52 GMT + - Wed, 29 Apr 2020 23:19:45 GMT elapsed-time: - - '263' + - '441' expires: - '-1' odata-version: @@ -42,7 +42,7 @@ interactions: preference-applied: - odata.include-annotations="*" request-id: - - 3543e85e-7376-11ea-82e8-5cf37071153c + - e9daa5aa-8a6f-11ea-889b-8c8590507855 strict-transport-security: - max-age=15724800; includeSubDomains vary: @@ -60,9 +60,9 @@ interactions: Connection: - keep-alive User-Agent: - - azsdk-python-search-documents/1.0.0b2 Python/3.6.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - F02C9620AD7963286CD9A005C981A3E5 + - 8AAFBCAFAC7EBBE2BEB172384549698B method: GET uri: https://searchbc7412f9.search.windows.net/indexes('drgqefsg')/docs/$count?api-version=2019-05-06-Preview response: @@ -76,9 +76,9 @@ interactions: content-type: - text/plain date: - - Tue, 31 Mar 2020 17:36:54 GMT + - Wed, 29 Apr 2020 23:19:48 GMT elapsed-time: - - '13' + - '5' expires: - '-1' odata-version: @@ -88,7 +88,7 @@ interactions: preference-applied: - odata.include-annotations="*" request-id: - - 3775a368-7376-11ea-a771-5cf37071153c + - ec0db7a4-8a6f-11ea-889b-8c8590507855 strict-transport-security: - max-age=15724800; includeSubDomains vary: @@ -106,9 +106,9 @@ interactions: Connection: - keep-alive User-Agent: - - azsdk-python-search-documents/1.0.0b2 Python/3.6.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - F02C9620AD7963286CD9A005C981A3E5 + - 8AAFBCAFAC7EBBE2BEB172384549698B method: GET uri: https://searchbc7412f9.search.windows.net/indexes('drgqefsg')/docs('1000')?api-version=2019-05-06-Preview response: @@ -122,9 +122,9 @@ interactions: content-type: - application/json; odata.metadata=none date: - - Tue, 31 Mar 2020 17:36:54 GMT + - Wed, 29 Apr 2020 23:19:48 GMT elapsed-time: - - '30' + - '7' expires: - '-1' odata-version: @@ -134,7 +134,7 @@ interactions: preference-applied: - odata.include-annotations="*" request-id: - - 378f9854-7376-11ea-b698-5cf37071153c + - ec14df8e-8a6f-11ea-889b-8c8590507855 strict-transport-security: - max-age=15724800; includeSubDomains vary: @@ -152,9 +152,9 @@ interactions: Connection: - keep-alive User-Agent: - - azsdk-python-search-documents/1.0.0b2 Python/3.6.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - F02C9620AD7963286CD9A005C981A3E5 + - 8AAFBCAFAC7EBBE2BEB172384549698B method: GET uri: https://searchbc7412f9.search.windows.net/indexes('drgqefsg')/docs('4')?api-version=2019-05-06-Preview response: @@ -169,9 +169,9 @@ interactions: content-type: - application/json; odata.metadata=none date: - - Tue, 31 Mar 2020 17:36:54 GMT + - Wed, 29 Apr 2020 23:19:48 GMT elapsed-time: - - '7' + - '5' expires: - '-1' odata-version: @@ -181,7 +181,7 @@ interactions: preference-applied: - odata.include-annotations="*" request-id: - - 37b2b25e-7376-11ea-905c-5cf37071153c + - ec1c06ba-8a6f-11ea-889b-8c8590507855 strict-transport-security: - max-age=15724800; includeSubDomains vary: diff --git a/sdk/search/azure-search-documents/tests/recordings/test_index_live.test_suggest.yaml b/sdk/search/azure-search-documents/tests/recordings/test_index_live.test_suggest.yaml index 5795d84f2133..a769630595dc 100644 --- a/sdk/search/azure-search-documents/tests/recordings/test_index_live.test_suggest.yaml +++ b/sdk/search/azure-search-documents/tests/recordings/test_index_live.test_suggest.yaml @@ -13,9 +13,9 @@ interactions: Content-Type: - application/json User-Agent: - - azsdk-python-search-documents/1.0.0b2 Python/3.6.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - A2B76F10EF4B449A928BF1076E6B66CF + - 695188929E18C58655D330646534780F method: POST uri: https://searcha7cc0b96.search.windows.net/indexes('drgqefsg')/docs/search.post.suggest?api-version=2019-05-06-Preview response: @@ -30,9 +30,9 @@ interactions: content-type: - application/json; odata.metadata=none date: - - Tue, 31 Mar 2020 17:37:11 GMT + - Wed, 29 Apr 2020 23:20:00 GMT elapsed-time: - - '230' + - '260' expires: - '-1' odata-version: @@ -42,7 +42,7 @@ interactions: preference-applied: - odata.include-annotations="*" request-id: - - 40f40230-7376-11ea-b23a-5cf37071153c + - f2a7b18c-8a6f-11ea-889b-8c8590507855 strict-transport-security: - max-age=15724800; includeSubDomains vary: diff --git a/sdk/search/azure-search-documents/tests/recordings/test_index_live.test_upload_documents_existing.yaml b/sdk/search/azure-search-documents/tests/recordings/test_index_live.test_upload_documents_existing.yaml index e804c11ee29e..6ecd5c13c53b 100644 --- a/sdk/search/azure-search-documents/tests/recordings/test_index_live.test_upload_documents_existing.yaml +++ b/sdk/search/azure-search-documents/tests/recordings/test_index_live.test_upload_documents_existing.yaml @@ -15,9 +15,9 @@ interactions: Content-Type: - application/json User-Agent: - - azsdk-python-search-documents/1.0.0b2 Python/3.6.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - 0873C10E4C4885FC2BD12490B7F94472 + - 614F11610EB5311453B55AFF2AE5B215 method: POST uri: https://searchbe2a1314.search.windows.net/indexes('drgqefsg')/docs/search.index?api-version=2019-05-06-Preview response: @@ -31,9 +31,9 @@ interactions: content-type: - application/json; odata.metadata=none date: - - Tue, 31 Mar 2020 17:37:34 GMT + - Wed, 29 Apr 2020 23:20:12 GMT elapsed-time: - - '215' + - '93' expires: - '-1' odata-version: @@ -43,7 +43,7 @@ interactions: preference-applied: - odata.include-annotations="*" request-id: - - 4d46751e-7376-11ea-aefd-5cf37071153c + - f9d863c0-8a6f-11ea-889b-8c8590507855 strict-transport-security: - max-age=15724800; includeSubDomains vary: diff --git a/sdk/search/azure-search-documents/tests/recordings/test_index_live.test_upload_documents_new.yaml b/sdk/search/azure-search-documents/tests/recordings/test_index_live.test_upload_documents_new.yaml index 250b9daaf926..70db2461f6fa 100644 --- a/sdk/search/azure-search-documents/tests/recordings/test_index_live.test_upload_documents_new.yaml +++ b/sdk/search/azure-search-documents/tests/recordings/test_index_live.test_upload_documents_new.yaml @@ -15,9 +15,9 @@ interactions: Content-Type: - application/json User-Agent: - - azsdk-python-search-documents/1.0.0b2 Python/3.6.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - 07F0DB6BFECFE6EE07E8D9DAB86B3466 + - 21A4500B93DEC39E920E11ED8C2B1C48 method: POST uri: https://search62f510f3.search.windows.net/indexes('drgqefsg')/docs/search.index?api-version=2019-05-06-Preview response: @@ -31,9 +31,9 @@ interactions: content-type: - application/json; odata.metadata=none date: - - Tue, 31 Mar 2020 17:37:53 GMT + - Wed, 29 Apr 2020 23:20:23 GMT elapsed-time: - - '332' + - '98' expires: - '-1' odata-version: @@ -43,7 +43,7 @@ interactions: preference-applied: - odata.include-annotations="*" request-id: - - 59dfbade-7376-11ea-9be5-5cf37071153c + - 0042c9da-8a70-11ea-889b-8c8590507855 strict-transport-security: - max-age=15724800; includeSubDomains vary: @@ -61,9 +61,9 @@ interactions: Connection: - keep-alive User-Agent: - - azsdk-python-search-documents/1.0.0b2 Python/3.6.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - 07F0DB6BFECFE6EE07E8D9DAB86B3466 + - 21A4500B93DEC39E920E11ED8C2B1C48 method: GET uri: https://search62f510f3.search.windows.net/indexes('drgqefsg')/docs/$count?api-version=2019-05-06-Preview response: @@ -77,9 +77,9 @@ interactions: content-type: - text/plain date: - - Tue, 31 Mar 2020 17:37:56 GMT + - Wed, 29 Apr 2020 23:20:26 GMT elapsed-time: - - '5' + - '4' expires: - '-1' odata-version: @@ -89,7 +89,7 @@ interactions: preference-applied: - odata.include-annotations="*" request-id: - - 5c193bba-7376-11ea-ba5d-5cf37071153c + - 0234a56a-8a70-11ea-889b-8c8590507855 strict-transport-security: - max-age=15724800; includeSubDomains vary: @@ -107,9 +107,9 @@ interactions: Connection: - keep-alive User-Agent: - - azsdk-python-search-documents/1.0.0b2 Python/3.6.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - 07F0DB6BFECFE6EE07E8D9DAB86B3466 + - 21A4500B93DEC39E920E11ED8C2B1C48 method: GET uri: https://search62f510f3.search.windows.net/indexes('drgqefsg')/docs('1000')?api-version=2019-05-06-Preview response: @@ -123,9 +123,9 @@ interactions: content-type: - application/json; odata.metadata=none date: - - Tue, 31 Mar 2020 17:37:56 GMT + - Wed, 29 Apr 2020 23:20:26 GMT elapsed-time: - - '24' + - '8' expires: - '-1' odata-version: @@ -135,7 +135,7 @@ interactions: preference-applied: - odata.include-annotations="*" request-id: - - 5c2a072e-7376-11ea-9721-5cf37071153c + - 023bd038-8a70-11ea-889b-8c8590507855 strict-transport-security: - max-age=15724800; includeSubDomains vary: @@ -153,9 +153,9 @@ interactions: Connection: - keep-alive User-Agent: - - azsdk-python-search-documents/1.0.0b2 Python/3.6.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - 07F0DB6BFECFE6EE07E8D9DAB86B3466 + - 21A4500B93DEC39E920E11ED8C2B1C48 method: GET uri: https://search62f510f3.search.windows.net/indexes('drgqefsg')/docs('1001')?api-version=2019-05-06-Preview response: @@ -169,9 +169,9 @@ interactions: content-type: - application/json; odata.metadata=none date: - - Tue, 31 Mar 2020 17:37:56 GMT + - Wed, 29 Apr 2020 23:20:26 GMT elapsed-time: - - '4' + - '8' expires: - '-1' odata-version: @@ -181,7 +181,7 @@ interactions: preference-applied: - odata.include-annotations="*" request-id: - - 5c3c0e88-7376-11ea-8f08-5cf37071153c + - 02438ad0-8a70-11ea-889b-8c8590507855 strict-transport-security: - max-age=15724800; includeSubDomains vary: diff --git a/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_analyze_text.yaml b/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_analyze_text.yaml index 402fa2c68914..16852a3192c7 100644 --- a/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_analyze_text.yaml +++ b/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_analyze_text.yaml @@ -13,9 +13,9 @@ interactions: Content-Type: - application/json User-Agent: - - azsdk-python-search-documents/1.0.0b2 Python/3.6.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - 1E6460D60590FF5912219E29955BA73D + - 980E4A06562888E4EC5397BE01F2DE38 method: POST uri: https://search4d10e85.search.windows.net/indexes('drgqefsg')/search.analyze?api-version=2019-05-06-Preview response: @@ -29,9 +29,9 @@ interactions: content-type: - application/json; odata.metadata=minimal date: - - Tue, 31 Mar 2020 17:38:13 GMT + - Wed, 29 Apr 2020 23:20:46 GMT elapsed-time: - - '22' + - '277' expires: - '-1' odata-version: @@ -41,7 +41,7 @@ interactions: preference-applied: - odata.include-annotations="*" request-id: - - 65b43be8-7376-11ea-b65e-5cf37071153c + - 0e27953a-8a70-11ea-889b-8c8590507855 strict-transport-security: - max-age=15724800; includeSubDomains vary: diff --git a/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_create_datasource.yaml b/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_create_datasource.yaml new file mode 100644 index 000000000000..b00e9d7abd8d --- /dev/null +++ b/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_create_datasource.yaml @@ -0,0 +1,56 @@ +interactions: +- request: + body: '{"name": "sample-datasource", "type": "azureblob", "credentials": {"connectionString": + "DefaultEndpointsProtocol=https;AccountName=storagename;AccountKey=NzhL3hKZbJBuJ2484dPTR+xF30kYaWSSCbs2BzLgVVI1woqeST/1IgqaLm6QAOTxtGvxctSNbIR/1hW8yH+bJg==;EndpointSuffix=core.windows.net"}, + "container": {"name": "searchcontainer"}}' + headers: + Accept: + - application/json;odata.metadata=minimal + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '319' + Content-Type: + - application/json + User-Agent: + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) + api-key: + - 0E3774E832B8584D0AC648C5FAA3D77C + method: POST + uri: https://search51c7106b.search.windows.net/datasources?api-version=2019-05-06-Preview + response: + body: + string: '{"@odata.context":"https://search51c7106b.search.windows.net/$metadata#datasources/$entity","@odata.etag":"\"0x8D7EC9494AD4705\"","name":"sample-datasource","description":null,"type":"azureblob","subtype":null,"credentials":{"connectionString":null},"container":{"name":"searchcontainer","query":null},"dataChangeDetectionPolicy":null,"dataDeletionDetectionPolicy":null}' + headers: + cache-control: + - no-cache + content-length: + - '370' + content-type: + - application/json; odata.metadata=minimal + date: + - Wed, 29 Apr 2020 23:25:18 GMT + elapsed-time: + - '39' + etag: + - W/"0x8D7EC9494AD4705" + expires: + - '-1' + location: + - https://search51c7106b.search.windows.net/datasources('sample-datasource')?api-version=2019-05-06-Preview + odata-version: + - '4.0' + pragma: + - no-cache + preference-applied: + - odata.include-annotations="*" + request-id: + - b02c12fc-8a70-11ea-889b-8c8590507855 + strict-transport-security: + - max-age=15724800; includeSubDomains + status: + code: 201 + message: Created +version: 1 diff --git a/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_create_index.yaml b/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_create_index.yaml index a73840934912..9fad4a97f87b 100644 --- a/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_create_index.yaml +++ b/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_create_index.yaml @@ -16,14 +16,14 @@ interactions: Content-Type: - application/json User-Agent: - - azsdk-python-search-documents/1.0.0b2 Python/3.6.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - EA2B41F1F9F9CD531EC80F4905A3189A + - 1C166A5AB3A98880F52DC59909AC7CD1 method: POST uri: https://search3f00e58.search.windows.net/indexes?api-version=2019-05-06-Preview response: body: - string: '{"@odata.context":"https://search3f00e58.search.windows.net/$metadata#indexes/$entity","@odata.etag":"\"0x8D7D59A543B59C4\"","name":"hotels","defaultScoringProfile":null,"fields":[{"name":"hotelId","type":"Edm.String","searchable":false,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":true,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"baseRate","type":"Edm.Double","searchable":false,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]}],"scoringProfiles":[{"name":"MyProfile","functionAggregation":null,"text":null,"functions":[]}],"corsOptions":{"allowedOrigins":["*"],"maxAgeInSeconds":60},"suggesters":[],"analyzers":[],"tokenizers":[],"tokenFilters":[],"charFilters":[],"encryptionKey":null,"similarity":null}' + string: '{"@odata.context":"https://search3f00e58.search.windows.net/$metadata#indexes/$entity","@odata.etag":"\"0x8D7EC94044D5005\"","name":"hotels","defaultScoringProfile":null,"fields":[{"name":"hotelId","type":"Edm.String","searchable":false,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":true,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"baseRate","type":"Edm.Double","searchable":false,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]}],"scoringProfiles":[{"name":"MyProfile","functionAggregation":null,"text":null,"functions":[]}],"corsOptions":{"allowedOrigins":["*"],"maxAgeInSeconds":60},"suggesters":[],"analyzers":[],"tokenizers":[],"tokenFilters":[],"charFilters":[],"encryptionKey":null,"similarity":null}' headers: cache-control: - no-cache @@ -32,11 +32,11 @@ interactions: content-type: - application/json; odata.metadata=minimal date: - - Tue, 31 Mar 2020 17:38:31 GMT + - Wed, 29 Apr 2020 23:21:16 GMT elapsed-time: - - '2330' + - '1126' etag: - - W/"0x8D7D59A543B59C4" + - W/"0x8D7EC94044D5005" expires: - '-1' location: @@ -48,7 +48,7 @@ interactions: preference-applied: - odata.include-annotations="*" request-id: - - 6efa6738-7376-11ea-8516-5cf37071153c + - 1f504398-8a70-11ea-889b-8c8590507855 strict-transport-security: - max-age=15724800; includeSubDomains status: diff --git a/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_create_or_update_datasource.yaml b/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_create_or_update_datasource.yaml new file mode 100644 index 000000000000..57d6517ef7e8 --- /dev/null +++ b/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_create_or_update_datasource.yaml @@ -0,0 +1,252 @@ +interactions: +- request: + body: '{"name": "sample-datasource", "type": "azureblob", "credentials": {"connectionString": + "DefaultEndpointsProtocol=https;AccountName=storagename;AccountKey=NzhL3hKZbJBuJ2484dPTR+xF30kYaWSSCbs2BzLgVVI1woqeST/1IgqaLm6QAOTxtGvxctSNbIR/1hW8yH+bJg==;EndpointSuffix=core.windows.net"}, + "container": {"name": "searchcontainer"}}' + headers: + Accept: + - application/json;odata.metadata=minimal + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '319' + Content-Type: + - application/json + User-Agent: + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) + api-key: + - 424F1875A344DE98823F9BD67139C0D1 + method: POST + uri: https://searchcca148d.search.windows.net/datasources?api-version=2019-05-06-Preview + response: + body: + string: '{"@odata.context":"https://searchcca148d.search.windows.net/$metadata#datasources/$entity","@odata.etag":"\"0x8D7EC949C2A658D\"","name":"sample-datasource","description":null,"type":"azureblob","subtype":null,"credentials":{"connectionString":null},"container":{"name":"searchcontainer","query":null},"dataChangeDetectionPolicy":null,"dataDeletionDetectionPolicy":null}' + headers: + cache-control: + - no-cache + content-length: + - '369' + content-type: + - application/json; odata.metadata=minimal + date: + - Wed, 29 Apr 2020 23:25:31 GMT + elapsed-time: + - '53' + etag: + - W/"0x8D7EC949C2A658D" + expires: + - '-1' + location: + - https://searchcca148d.search.windows.net/datasources('sample-datasource')?api-version=2019-05-06-Preview + odata-version: + - '4.0' + pragma: + - no-cache + preference-applied: + - odata.include-annotations="*" + request-id: + - b7c3c640-8a70-11ea-889b-8c8590507855 + strict-transport-security: + - max-age=15724800; includeSubDomains + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json;odata.metadata=minimal + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) + api-key: + - 424F1875A344DE98823F9BD67139C0D1 + method: GET + uri: https://searchcca148d.search.windows.net/datasources?api-version=2019-05-06-Preview + response: + body: + string: '{"@odata.context":"https://searchcca148d.search.windows.net/$metadata#datasources","value":[{"@odata.etag":"\"0x8D7EC949C2A658D\"","name":"sample-datasource","description":null,"type":"azureblob","subtype":null,"credentials":{"connectionString":null},"container":{"name":"searchcontainer","query":null},"dataChangeDetectionPolicy":null,"dataDeletionDetectionPolicy":null}]}' + headers: + cache-control: + - no-cache + content-length: + - '373' + content-type: + - application/json; odata.metadata=minimal + date: + - Wed, 29 Apr 2020 23:25:31 GMT + elapsed-time: + - '17' + expires: + - '-1' + odata-version: + - '4.0' + pragma: + - no-cache + preference-applied: + - odata.include-annotations="*" + request-id: + - b7e2bb2c-8a70-11ea-889b-8c8590507855 + strict-transport-security: + - max-age=15724800; includeSubDomains + vary: + - Accept-Encoding + status: + code: 200 + message: OK +- request: + body: '{"name": "sample-datasource", "description": "updated", "type": "azureblob", + "credentials": {"connectionString": "DefaultEndpointsProtocol=https;AccountName=storagename;AccountKey=NzhL3hKZbJBuJ2484dPTR+xF30kYaWSSCbs2BzLgVVI1woqeST/1IgqaLm6QAOTxtGvxctSNbIR/1hW8yH+bJg==;EndpointSuffix=core.windows.net"}, + "container": {"name": "searchcontainer"}}' + headers: + Accept: + - application/json;odata.metadata=minimal + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '345' + Content-Type: + - application/json + Prefer: + - return=representation + User-Agent: + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) + api-key: + - 424F1875A344DE98823F9BD67139C0D1 + method: PUT + uri: https://searchcca148d.search.windows.net/datasources('sample-datasource')?api-version=2019-05-06-Preview + response: + body: + string: '{"@odata.context":"https://searchcca148d.search.windows.net/$metadata#datasources/$entity","@odata.etag":"\"0x8D7EC949C3F02C7\"","name":"sample-datasource","description":"updated","type":"azureblob","subtype":null,"credentials":{"connectionString":null},"container":{"name":"searchcontainer","query":null},"dataChangeDetectionPolicy":null,"dataDeletionDetectionPolicy":null}' + headers: + cache-control: + - no-cache + content-length: + - '374' + content-type: + - application/json; odata.metadata=minimal + date: + - Wed, 29 Apr 2020 23:25:31 GMT + elapsed-time: + - '34' + etag: + - W/"0x8D7EC949C3F02C7" + expires: + - '-1' + odata-version: + - '4.0' + pragma: + - no-cache + preference-applied: + - odata.include-annotations="*" + request-id: + - b7eba0fc-8a70-11ea-889b-8c8590507855 + strict-transport-security: + - max-age=15724800; includeSubDomains + vary: + - Accept-Encoding + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json;odata.metadata=minimal + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) + api-key: + - 424F1875A344DE98823F9BD67139C0D1 + method: GET + uri: https://searchcca148d.search.windows.net/datasources?api-version=2019-05-06-Preview + response: + body: + string: '{"@odata.context":"https://searchcca148d.search.windows.net/$metadata#datasources","value":[{"@odata.etag":"\"0x8D7EC949C3F02C7\"","name":"sample-datasource","description":"updated","type":"azureblob","subtype":null,"credentials":{"connectionString":null},"container":{"name":"searchcontainer","query":null},"dataChangeDetectionPolicy":null,"dataDeletionDetectionPolicy":null}]}' + headers: + cache-control: + - no-cache + content-length: + - '378' + content-type: + - application/json; odata.metadata=minimal + date: + - Wed, 29 Apr 2020 23:25:31 GMT + elapsed-time: + - '9' + expires: + - '-1' + odata-version: + - '4.0' + pragma: + - no-cache + preference-applied: + - odata.include-annotations="*" + request-id: + - b7f6ed4a-8a70-11ea-889b-8c8590507855 + strict-transport-security: + - max-age=15724800; includeSubDomains + vary: + - Accept-Encoding + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json;odata.metadata=minimal + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) + api-key: + - 424F1875A344DE98823F9BD67139C0D1 + method: GET + uri: https://searchcca148d.search.windows.net/datasources('sample-datasource')?api-version=2019-05-06-Preview + response: + body: + string: '{"@odata.context":"https://searchcca148d.search.windows.net/$metadata#datasources/$entity","@odata.etag":"\"0x8D7EC949C3F02C7\"","name":"sample-datasource","description":"updated","type":"azureblob","subtype":null,"credentials":{"connectionString":null},"container":{"name":"searchcontainer","query":null},"dataChangeDetectionPolicy":null,"dataDeletionDetectionPolicy":null}' + headers: + cache-control: + - no-cache + content-length: + - '374' + content-type: + - application/json; odata.metadata=minimal + date: + - Wed, 29 Apr 2020 23:25:31 GMT + elapsed-time: + - '5' + etag: + - W/"0x8D7EC949C3F02C7" + expires: + - '-1' + odata-version: + - '4.0' + pragma: + - no-cache + preference-applied: + - odata.include-annotations="*" + request-id: + - b7fe3a8c-8a70-11ea-889b-8c8590507855 + strict-transport-security: + - max-age=15724800; includeSubDomains + vary: + - Accept-Encoding + status: + code: 200 + message: OK +version: 1 diff --git a/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_create_or_update_datasource_if_unchanged.yaml b/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_create_or_update_datasource_if_unchanged.yaml new file mode 100644 index 000000000000..9f06288e8cd0 --- /dev/null +++ b/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_create_or_update_datasource_if_unchanged.yaml @@ -0,0 +1,170 @@ +interactions: +- request: + body: '{"name": "sample-datasource", "type": "azureblob", "credentials": {"connectionString": + "DefaultEndpointsProtocol=https;AccountName=storagename;AccountKey=NzhL3hKZbJBuJ2484dPTR+xF30kYaWSSCbs2BzLgVVI1woqeST/1IgqaLm6QAOTxtGvxctSNbIR/1hW8yH+bJg==;EndpointSuffix=core.windows.net"}, + "container": {"name": "searchcontainer"}}' + headers: + Accept: + - application/json;odata.metadata=minimal + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '319' + Content-Type: + - application/json + User-Agent: + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Windows-10-10.0.17763-SP0) + api-key: + - 0DBCB3E23D05E4915AB588A0A3E6A929 + method: POST + uri: https://search3c8b19c7.search.windows.net/datasources?api-version=2019-05-06-Preview + response: + body: + string: '{"@odata.context":"https://search3c8b19c7.search.windows.net/$metadata#datasources/$entity","@odata.etag":"\"0x8D7ED71775A7B36\"","name":"sample-datasource","description":null,"type":"azureblob","subtype":null,"credentials":{"connectionString":null},"container":{"name":"searchcontainer","query":null},"dataChangeDetectionPolicy":null,"dataDeletionDetectionPolicy":null}' + headers: + cache-control: + - no-cache + content-length: + - '370' + content-type: + - application/json; odata.metadata=minimal + date: + - Fri, 01 May 2020 01:46:28 GMT + elapsed-time: + - '46' + etag: + - W/"0x8D7ED71775A7B36" + expires: + - '-1' + location: + - https://search3c8b19c7.search.windows.net/datasources('sample-datasource')?api-version=2019-05-06-Preview + odata-version: + - '4.0' + pragma: + - no-cache + preference-applied: + - odata.include-annotations="*" + request-id: + - 9334e078-8b4d-11ea-a4ef-2816a845e8c6 + strict-transport-security: + - max-age=15724800; includeSubDomains + status: + code: 201 + message: Created +- request: + body: '{"name": "sample-datasource", "description": "updated", "type": "azureblob", + "credentials": {"connectionString": "DefaultEndpointsProtocol=https;AccountName=storagename;AccountKey=NzhL3hKZbJBuJ2484dPTR+xF30kYaWSSCbs2BzLgVVI1woqeST/1IgqaLm6QAOTxtGvxctSNbIR/1hW8yH+bJg==;EndpointSuffix=core.windows.net"}, + "container": {"name": "searchcontainer"}}' + headers: + Accept: + - application/json;odata.metadata=minimal + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '345' + Content-Type: + - application/json + Prefer: + - return=representation + User-Agent: + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Windows-10-10.0.17763-SP0) + api-key: + - 0DBCB3E23D05E4915AB588A0A3E6A929 + method: PUT + uri: https://search3c8b19c7.search.windows.net/datasources('sample-datasource')?api-version=2019-05-06-Preview + response: + body: + string: '{"@odata.context":"https://search3c8b19c7.search.windows.net/$metadata#datasources/$entity","@odata.etag":"\"0x8D7ED717773D43C\"","name":"sample-datasource","description":"updated","type":"azureblob","subtype":null,"credentials":{"connectionString":null},"container":{"name":"searchcontainer","query":null},"dataChangeDetectionPolicy":null,"dataDeletionDetectionPolicy":null}' + headers: + cache-control: + - no-cache + content-length: + - '375' + content-type: + - application/json; odata.metadata=minimal + date: + - Fri, 01 May 2020 01:46:28 GMT + elapsed-time: + - '53' + etag: + - W/"0x8D7ED717773D43C" + expires: + - '-1' + odata-version: + - '4.0' + pragma: + - no-cache + preference-applied: + - odata.include-annotations="*" + request-id: + - 9374a408-8b4d-11ea-b48a-2816a845e8c6 + strict-transport-security: + - max-age=15724800; includeSubDomains + vary: + - Accept-Encoding + status: + code: 200 + message: OK +- request: + body: '{"name": "sample-datasource", "description": "changed", "type": "azureblob", + "credentials": {"connectionString": "DefaultEndpointsProtocol=https;AccountName=storagename;AccountKey=NzhL3hKZbJBuJ2484dPTR+xF30kYaWSSCbs2BzLgVVI1woqeST/1IgqaLm6QAOTxtGvxctSNbIR/1hW8yH+bJg==;EndpointSuffix=core.windows.net"}, + "container": {"name": "searchcontainer"}, "@odata.etag": "\"0x8D7ED71775A7B36\""}' + headers: + Accept: + - application/json;odata.metadata=minimal + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '385' + Content-Type: + - application/json + If-Match: + - '"0x8D7ED71775A7B36"' + Prefer: + - return=representation + User-Agent: + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Windows-10-10.0.17763-SP0) + api-key: + - 0DBCB3E23D05E4915AB588A0A3E6A929 + method: PUT + uri: https://search3c8b19c7.search.windows.net/datasources('sample-datasource')?api-version=2019-05-06-Preview + response: + body: + string: '{"error":{"code":"","message":"The precondition given in one of the + request headers evaluated to false. No change was made to the resource from + this request."}}' + headers: + cache-control: + - no-cache + content-language: + - en + content-length: + - '160' + content-type: + - application/json; odata.metadata=minimal + date: + - Fri, 01 May 2020 01:46:28 GMT + elapsed-time: + - '4' + expires: + - '-1' + odata-version: + - '4.0' + pragma: + - no-cache + preference-applied: + - odata.include-annotations="*" + request-id: + - 9390c946-8b4d-11ea-a80b-2816a845e8c6 + strict-transport-security: + - max-age=15724800; includeSubDomains + status: + code: 412 + message: Precondition Failed +version: 1 diff --git a/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_create_or_update_index.yaml b/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_create_or_update_index.yaml index ff125345590e..d0f645812e6b 100644 --- a/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_create_or_update_index.yaml +++ b/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_create_or_update_index.yaml @@ -18,14 +18,14 @@ interactions: Prefer: - return=representation User-Agent: - - azsdk-python-search-documents/1.0.0b2 Python/3.6.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - B345241086F6136CFBD5226C55E72C1B + - C02F3671BBF7211EEE91673DC882584B method: PUT uri: https://searchaa3a127a.search.windows.net/indexes('hotels')?api-version=2019-05-06-Preview response: body: - string: '{"@odata.context":"https://searchaa3a127a.search.windows.net/$metadata#indexes/$entity","@odata.etag":"\"0x8D7D59A5F6D181C\"","name":"hotels","defaultScoringProfile":null,"fields":[{"name":"hotelId","type":"Edm.String","searchable":false,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":true,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"baseRate","type":"Edm.Double","searchable":false,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]}],"scoringProfiles":[],"corsOptions":{"allowedOrigins":["*"],"maxAgeInSeconds":60},"suggesters":[],"analyzers":[],"tokenizers":[],"tokenFilters":[],"charFilters":[],"encryptionKey":null,"similarity":null}' + string: '{"@odata.context":"https://searchaa3a127a.search.windows.net/$metadata#indexes/$entity","@odata.etag":"\"0x8D7EC940BA55393\"","name":"hotels","defaultScoringProfile":null,"fields":[{"name":"hotelId","type":"Edm.String","searchable":false,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":true,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"baseRate","type":"Edm.Double","searchable":false,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]}],"scoringProfiles":[],"corsOptions":{"allowedOrigins":["*"],"maxAgeInSeconds":60},"suggesters":[],"analyzers":[],"tokenizers":[],"tokenFilters":[],"charFilters":[],"encryptionKey":null,"similarity":null}' headers: cache-control: - no-cache @@ -34,11 +34,11 @@ interactions: content-type: - application/json; odata.metadata=minimal date: - - Tue, 31 Mar 2020 17:38:49 GMT + - Wed, 29 Apr 2020 23:21:28 GMT elapsed-time: - - '1894' + - '535' etag: - - W/"0x8D7D59A5F6D181C" + - W/"0x8D7EC940BA55393" expires: - '-1' location: @@ -50,7 +50,7 @@ interactions: preference-applied: - odata.include-annotations="*" request-id: - - 7a68e0ee-7376-11ea-ab74-5cf37071153c + - 26fdbe86-8a70-11ea-889b-8c8590507855 strict-transport-security: - max-age=15724800; includeSubDomains status: @@ -75,14 +75,14 @@ interactions: Prefer: - return=representation User-Agent: - - azsdk-python-search-documents/1.0.0b2 Python/3.6.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - B345241086F6136CFBD5226C55E72C1B + - C02F3671BBF7211EEE91673DC882584B method: PUT uri: https://searchaa3a127a.search.windows.net/indexes('hotels')?api-version=2019-05-06-Preview response: body: - string: '{"@odata.context":"https://searchaa3a127a.search.windows.net/$metadata#indexes/$entity","@odata.etag":"\"0x8D7D59A5FA1F0A9\"","name":"hotels","defaultScoringProfile":null,"fields":[{"name":"hotelId","type":"Edm.String","searchable":false,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":true,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"baseRate","type":"Edm.Double","searchable":false,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]}],"scoringProfiles":[{"name":"MyProfile","functionAggregation":null,"text":null,"functions":[]}],"corsOptions":{"allowedOrigins":["*"],"maxAgeInSeconds":60},"suggesters":[],"analyzers":[],"tokenizers":[],"tokenFilters":[],"charFilters":[],"encryptionKey":null,"similarity":null}' + string: '{"@odata.context":"https://searchaa3a127a.search.windows.net/$metadata#indexes/$entity","@odata.etag":"\"0x8D7EC940BEEC61E\"","name":"hotels","defaultScoringProfile":null,"fields":[{"name":"hotelId","type":"Edm.String","searchable":false,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":true,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"baseRate","type":"Edm.Double","searchable":false,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]}],"scoringProfiles":[{"name":"MyProfile","functionAggregation":null,"text":null,"functions":[]}],"corsOptions":{"allowedOrigins":["*"],"maxAgeInSeconds":60},"suggesters":[],"analyzers":[],"tokenizers":[],"tokenFilters":[],"charFilters":[],"encryptionKey":null,"similarity":null}' headers: cache-control: - no-cache @@ -91,11 +91,11 @@ interactions: content-type: - application/json; odata.metadata=minimal date: - - Tue, 31 Mar 2020 17:38:49 GMT + - Wed, 29 Apr 2020 23:21:28 GMT elapsed-time: - - '198' + - '329' etag: - - W/"0x8D7D59A5FA1F0A9" + - W/"0x8D7EC940BEEC61E" expires: - '-1' odata-version: @@ -105,7 +105,7 @@ interactions: preference-applied: - odata.include-annotations="*" request-id: - - 7bc9cad8-7376-11ea-a5b9-5cf37071153c + - 27799c54-8a70-11ea-889b-8c8590507855 strict-transport-security: - max-age=15724800; includeSubDomains vary: diff --git a/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_create_or_update_indexes_if_unchanged.yaml b/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_create_or_update_indexes_if_unchanged.yaml new file mode 100644 index 000000000000..365fc8599bfa --- /dev/null +++ b/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_create_or_update_indexes_if_unchanged.yaml @@ -0,0 +1,173 @@ +interactions: +- request: + body: '{"name": "hotels", "fields": [{"name": "hotelId", "type": "Edm.String", + "key": true, "searchable": false}, {"name": "baseRate", "type": "Edm.Double"}], + "scoringProfiles": [{"name": "MyProfile"}], "corsOptions": {"allowedOrigins": + ["*"], "maxAgeInSeconds": 60}}' + headers: + Accept: + - application/json;odata.metadata=minimal + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '260' + Content-Type: + - application/json + User-Agent: + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Windows-10-10.0.17763-SP0) + api-key: + - 7EDDD034F9B54CB2E3BC204320340D62 + method: POST + uri: https://searchf02d188c.search.windows.net/indexes?api-version=2019-05-06-Preview + response: + body: + string: '{"@odata.context":"https://searchf02d188c.search.windows.net/$metadata#indexes/$entity","@odata.etag":"\"0x8D7ED713C61993A\"","name":"hotels","defaultScoringProfile":null,"fields":[{"name":"hotelId","type":"Edm.String","searchable":false,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":true,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"baseRate","type":"Edm.Double","searchable":false,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]}],"scoringProfiles":[{"name":"MyProfile","functionAggregation":null,"text":null,"functions":[]}],"corsOptions":{"allowedOrigins":["*"],"maxAgeInSeconds":60},"suggesters":[],"analyzers":[],"tokenizers":[],"tokenFilters":[],"charFilters":[],"encryptionKey":null,"similarity":null}' + headers: + cache-control: + - no-cache + content-length: + - '890' + content-type: + - application/json; odata.metadata=minimal + date: + - Fri, 01 May 2020 01:44:49 GMT + elapsed-time: + - '625' + etag: + - W/"0x8D7ED713C61993A" + expires: + - '-1' + location: + - https://searchf02d188c.search.windows.net/indexes('hotels')?api-version=2019-05-06-Preview + odata-version: + - '4.0' + pragma: + - no-cache + preference-applied: + - odata.include-annotations="*" + request-id: + - 57dcb4fa-8b4d-11ea-9996-2816a845e8c6 + strict-transport-security: + - max-age=15724800; includeSubDomains + status: + code: 201 + message: Created +- request: + body: '{"name": "hotels", "fields": [{"name": "hotelId", "type": "Edm.String", + "key": true, "searchable": false}, {"name": "baseRate", "type": "Edm.Double"}], + "scoringProfiles": [], "corsOptions": {"allowedOrigins": ["*"], "maxAgeInSeconds": + 60}}' + headers: + Accept: + - application/json;odata.metadata=minimal + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '239' + Content-Type: + - application/json + Prefer: + - return=representation + User-Agent: + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Windows-10-10.0.17763-SP0) + api-key: + - 7EDDD034F9B54CB2E3BC204320340D62 + method: PUT + uri: https://searchf02d188c.search.windows.net/indexes('hotels')?api-version=2019-05-06-Preview + response: + body: + string: '{"@odata.context":"https://searchf02d188c.search.windows.net/$metadata#indexes/$entity","@odata.etag":"\"0x8D7ED713C80E6C7\"","name":"hotels","defaultScoringProfile":null,"fields":[{"name":"hotelId","type":"Edm.String","searchable":false,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":true,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"baseRate","type":"Edm.Double","searchable":false,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]}],"scoringProfiles":[],"corsOptions":{"allowedOrigins":["*"],"maxAgeInSeconds":60},"suggesters":[],"analyzers":[],"tokenizers":[],"tokenFilters":[],"charFilters":[],"encryptionKey":null,"similarity":null}' + headers: + cache-control: + - no-cache + content-length: + - '816' + content-type: + - application/json; odata.metadata=minimal + date: + - Fri, 01 May 2020 01:44:49 GMT + elapsed-time: + - '99' + etag: + - W/"0x8D7ED713C80E6C7" + expires: + - '-1' + odata-version: + - '4.0' + pragma: + - no-cache + preference-applied: + - odata.include-annotations="*" + request-id: + - 58800e88-8b4d-11ea-8ef8-2816a845e8c6 + strict-transport-security: + - max-age=15724800; includeSubDomains + vary: + - Accept-Encoding + status: + code: 200 + message: OK +- request: + body: '{"name": "hotels", "fields": [{"name": "hotelId", "type": "Edm.String", + "key": true, "searchable": false}, {"name": "baseRate", "type": "Edm.Double"}], + "scoringProfiles": [], "corsOptions": {"allowedOrigins": ["*"], "maxAgeInSeconds": + 60}, "@odata.etag": "\"0x8D7ED713C61993A\""}' + headers: + Accept: + - application/json;odata.metadata=minimal + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '279' + Content-Type: + - application/json + If-Match: + - '"0x8D7ED713C61993A"' + Prefer: + - return=representation + User-Agent: + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Windows-10-10.0.17763-SP0) + api-key: + - 7EDDD034F9B54CB2E3BC204320340D62 + method: PUT + uri: https://searchf02d188c.search.windows.net/indexes('hotels')?api-version=2019-05-06-Preview + response: + body: + string: '{"error":{"code":"","message":"The precondition given in one of the + request headers evaluated to false. No change was made to the resource from + this request."}}' + headers: + cache-control: + - no-cache + content-language: + - en + content-length: + - '160' + content-type: + - application/json; odata.metadata=minimal + date: + - Fri, 01 May 2020 01:44:49 GMT + elapsed-time: + - '43' + expires: + - '-1' + odata-version: + - '4.0' + pragma: + - no-cache + preference-applied: + - odata.include-annotations="*" + request-id: + - 589d8268-8b4d-11ea-ba65-2816a845e8c6 + strict-transport-security: + - max-age=15724800; includeSubDomains + status: + code: 412 + message: Precondition Failed +version: 1 diff --git a/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_create_or_update_skillset.yaml b/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_create_or_update_skillset.yaml index 98b54434e9bb..4fb71e6f399a 100644 --- a/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_create_or_update_skillset.yaml +++ b/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_create_or_update_skillset.yaml @@ -20,12 +20,12 @@ interactions: User-Agent: - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - A2D2685BC19857E8B3E50AE6C8D7B483 + - 137CEEC8B0A9B0FDC772FF8489590519 method: PUT uri: https://searche48b13cd.search.windows.net/skillsets('test-ss')?api-version=2019-05-06-Preview response: body: - string: '{"@odata.context":"https://searche48b13cd.search.windows.net/$metadata#skillsets/$entity","@odata.etag":"\"0x8D7E238D346AE94\"","name":"test-ss","description":"desc1","skills":[{"@odata.type":"#Microsoft.Skills.Text.EntityRecognitionSkill","name":null,"description":null,"context":null,"categories":[],"defaultLanguageCode":null,"minimumPrecision":null,"includeTypelessEntities":null,"inputs":[{"name":"text","source":"/document/content","sourceContext":null,"inputs":[]}],"outputs":[{"name":"organizations","targetName":"organizations"}]}],"cognitiveServices":null,"knowledgeStore":null}' + string: '{"@odata.context":"https://searche48b13cd.search.windows.net/$metadata#skillsets/$entity","@odata.etag":"\"0x8D7EC945F838D92\"","name":"test-ss","description":"desc1","skills":[{"@odata.type":"#Microsoft.Skills.Text.EntityRecognitionSkill","name":null,"description":null,"context":null,"categories":[],"defaultLanguageCode":null,"minimumPrecision":null,"includeTypelessEntities":null,"inputs":[{"name":"text","source":"/document/content","sourceContext":null,"inputs":[]}],"outputs":[{"name":"organizations","targetName":"organizations"}]}],"cognitiveServices":null,"knowledgeStore":null}' headers: cache-control: - no-cache @@ -34,11 +34,11 @@ interactions: content-type: - application/json; odata.metadata=minimal date: - - Thu, 16 Apr 2020 19:03:18 GMT + - Wed, 29 Apr 2020 23:23:48 GMT elapsed-time: - - '70' + - '167' etag: - - W/"0x8D7E238D346AE94" + - W/"0x8D7EC945F838D92" expires: - '-1' location: @@ -50,7 +50,7 @@ interactions: preference-applied: - odata.include-annotations="*" request-id: - - ee0fe758-8014-11ea-a7a3-8c8590507855 + - 7b0ffd36-8a70-11ea-889b-8c8590507855 strict-transport-security: - max-age=15724800; includeSubDomains status: @@ -77,12 +77,12 @@ interactions: User-Agent: - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - A2D2685BC19857E8B3E50AE6C8D7B483 + - 137CEEC8B0A9B0FDC772FF8489590519 method: PUT uri: https://searche48b13cd.search.windows.net/skillsets('test-ss')?api-version=2019-05-06-Preview response: body: - string: '{"@odata.context":"https://searche48b13cd.search.windows.net/$metadata#skillsets/$entity","@odata.etag":"\"0x8D7E238D35641CC\"","name":"test-ss","description":"desc2","skills":[{"@odata.type":"#Microsoft.Skills.Text.EntityRecognitionSkill","name":null,"description":null,"context":null,"categories":[],"defaultLanguageCode":null,"minimumPrecision":null,"includeTypelessEntities":null,"inputs":[{"name":"text","source":"/document/content","sourceContext":null,"inputs":[]}],"outputs":[{"name":"organizations","targetName":"organizations"}]}],"cognitiveServices":null,"knowledgeStore":null}' + string: '{"@odata.context":"https://searche48b13cd.search.windows.net/$metadata#skillsets/$entity","@odata.etag":"\"0x8D7EC945F93BD2C\"","name":"test-ss","description":"desc2","skills":[{"@odata.type":"#Microsoft.Skills.Text.EntityRecognitionSkill","name":null,"description":null,"context":null,"categories":[],"defaultLanguageCode":null,"minimumPrecision":null,"includeTypelessEntities":null,"inputs":[{"name":"text","source":"/document/content","sourceContext":null,"inputs":[]}],"outputs":[{"name":"organizations","targetName":"organizations"}]}],"cognitiveServices":null,"knowledgeStore":null}' headers: cache-control: - no-cache @@ -91,11 +91,11 @@ interactions: content-type: - application/json; odata.metadata=minimal date: - - Thu, 16 Apr 2020 19:03:18 GMT + - Wed, 29 Apr 2020 23:23:49 GMT elapsed-time: - - '57' + - '58' etag: - - W/"0x8D7E238D35641CC" + - W/"0x8D7EC945F93BD2C" expires: - '-1' odata-version: @@ -105,7 +105,7 @@ interactions: preference-applied: - odata.include-annotations="*" request-id: - - ee32b21a-8014-11ea-a7a3-8c8590507855 + - 7b4046bc-8a70-11ea-889b-8c8590507855 strict-transport-security: - max-age=15724800; includeSubDomains vary: @@ -125,12 +125,12 @@ interactions: User-Agent: - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - A2D2685BC19857E8B3E50AE6C8D7B483 + - 137CEEC8B0A9B0FDC772FF8489590519 method: GET uri: https://searche48b13cd.search.windows.net/skillsets?api-version=2019-05-06-Preview response: body: - string: '{"@odata.context":"https://searche48b13cd.search.windows.net/$metadata#skillsets","value":[{"@odata.etag":"\"0x8D7E238D35641CC\"","name":"test-ss","description":"desc2","skills":[{"@odata.type":"#Microsoft.Skills.Text.EntityRecognitionSkill","name":"#1","description":null,"context":"/document","categories":["Person","Quantity","Organization","URL","Email","Location","DateTime"],"defaultLanguageCode":"en","minimumPrecision":null,"includeTypelessEntities":null,"inputs":[{"name":"text","source":"/document/content","sourceContext":null,"inputs":[]}],"outputs":[{"name":"organizations","targetName":"organizations"}]}],"cognitiveServices":null,"knowledgeStore":null}]}' + string: '{"@odata.context":"https://searche48b13cd.search.windows.net/$metadata#skillsets","value":[{"@odata.etag":"\"0x8D7EC945F93BD2C\"","name":"test-ss","description":"desc2","skills":[{"@odata.type":"#Microsoft.Skills.Text.EntityRecognitionSkill","name":"#1","description":null,"context":"/document","categories":["Person","Quantity","Organization","URL","Email","Location","DateTime"],"defaultLanguageCode":"en","minimumPrecision":null,"includeTypelessEntities":null,"inputs":[{"name":"text","source":"/document/content","sourceContext":null,"inputs":[]}],"outputs":[{"name":"organizations","targetName":"organizations"}]}],"cognitiveServices":null,"knowledgeStore":null}]}' headers: cache-control: - no-cache @@ -139,9 +139,9 @@ interactions: content-type: - application/json; odata.metadata=minimal date: - - Thu, 16 Apr 2020 19:03:18 GMT + - Wed, 29 Apr 2020 23:23:49 GMT elapsed-time: - - '40' + - '46' expires: - '-1' odata-version: @@ -151,7 +151,7 @@ interactions: preference-applied: - odata.include-annotations="*" request-id: - - ee4265e8-8014-11ea-a7a3-8c8590507855 + - 7b4fcfd8-8a70-11ea-889b-8c8590507855 strict-transport-security: - max-age=15724800; includeSubDomains vary: @@ -171,12 +171,12 @@ interactions: User-Agent: - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - A2D2685BC19857E8B3E50AE6C8D7B483 + - 137CEEC8B0A9B0FDC772FF8489590519 method: GET uri: https://searche48b13cd.search.windows.net/skillsets('test-ss')?api-version=2019-05-06-Preview response: body: - string: '{"@odata.context":"https://searche48b13cd.search.windows.net/$metadata#skillsets/$entity","@odata.etag":"\"0x8D7E238D35641CC\"","name":"test-ss","description":"desc2","skills":[{"@odata.type":"#Microsoft.Skills.Text.EntityRecognitionSkill","name":"#1","description":null,"context":"/document","categories":["Person","Quantity","Organization","URL","Email","Location","DateTime"],"defaultLanguageCode":"en","minimumPrecision":null,"includeTypelessEntities":null,"inputs":[{"name":"text","source":"/document/content","sourceContext":null,"inputs":[]}],"outputs":[{"name":"organizations","targetName":"organizations"}]}],"cognitiveServices":null,"knowledgeStore":null}' + string: '{"@odata.context":"https://searche48b13cd.search.windows.net/$metadata#skillsets/$entity","@odata.etag":"\"0x8D7EC945F93BD2C\"","name":"test-ss","description":"desc2","skills":[{"@odata.type":"#Microsoft.Skills.Text.EntityRecognitionSkill","name":"#1","description":null,"context":"/document","categories":["Person","Quantity","Organization","URL","Email","Location","DateTime"],"defaultLanguageCode":"en","minimumPrecision":null,"includeTypelessEntities":null,"inputs":[{"name":"text","source":"/document/content","sourceContext":null,"inputs":[]}],"outputs":[{"name":"organizations","targetName":"organizations"}]}],"cognitiveServices":null,"knowledgeStore":null}' headers: cache-control: - no-cache @@ -185,11 +185,11 @@ interactions: content-type: - application/json; odata.metadata=minimal date: - - Thu, 16 Apr 2020 19:03:18 GMT + - Wed, 29 Apr 2020 23:23:49 GMT elapsed-time: - '16' etag: - - W/"0x8D7E238D35641CC" + - W/"0x8D7EC945F93BD2C" expires: - '-1' odata-version: @@ -199,7 +199,7 @@ interactions: preference-applied: - odata.include-annotations="*" request-id: - - ee4f9a9c-8014-11ea-a7a3-8c8590507855 + - 7b5d4230-8a70-11ea-889b-8c8590507855 strict-transport-security: - max-age=15724800; includeSubDomains vary: diff --git a/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_create_or_update_skillset_if_unchanged.yaml b/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_create_or_update_skillset_if_unchanged.yaml new file mode 100644 index 000000000000..ddc3cec1b1df --- /dev/null +++ b/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_create_or_update_skillset_if_unchanged.yaml @@ -0,0 +1,221 @@ +interactions: +- request: + body: '{"name": "test-ss", "description": "desc1", "skills": [{"@odata.type": + "#Microsoft.Skills.Text.EntityRecognitionSkill", "inputs": [{"name": "text", + "source": "/document/content"}], "outputs": [{"name": "organizations", "targetName": + "organizations"}]}]}' + headers: + Accept: + - application/json;odata.metadata=minimal + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '253' + Content-Type: + - application/json + Prefer: + - return=representation + User-Agent: + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Windows-10-10.0.17763-SP0) + api-key: + - 898AD7814EFB81496ACE7ECB4B684BFD + method: PUT + uri: https://searcha9b1907.search.windows.net/skillsets('test-ss')?api-version=2019-05-06-Preview + response: + body: + string: '{"@odata.context":"https://searcha9b1907.search.windows.net/$metadata#skillsets/$entity","@odata.etag":"\"0x8D7ED716321E476\"","name":"test-ss","description":"desc1","skills":[{"@odata.type":"#Microsoft.Skills.Text.EntityRecognitionSkill","name":null,"description":null,"context":null,"categories":[],"defaultLanguageCode":null,"minimumPrecision":null,"includeTypelessEntities":null,"inputs":[{"name":"text","source":"/document/content","sourceContext":null,"inputs":[]}],"outputs":[{"name":"organizations","targetName":"organizations"}]}],"cognitiveServices":null,"knowledgeStore":null}' + headers: + cache-control: + - no-cache + content-length: + - '587' + content-type: + - application/json; odata.metadata=minimal + date: + - Fri, 01 May 2020 01:45:54 GMT + elapsed-time: + - '162' + etag: + - W/"0x8D7ED716321E476" + expires: + - '-1' + location: + - https://searcha9b1907.search.windows.net/skillsets('test-ss')?api-version=2019-05-06-Preview + odata-version: + - '4.0' + pragma: + - no-cache + preference-applied: + - odata.include-annotations="*" + request-id: + - 7ef51806-8b4d-11ea-875d-2816a845e8c6 + strict-transport-security: + - max-age=15724800; includeSubDomains + status: + code: 201 + message: Created +- request: + body: '{"name": "test-ss", "description": "desc2", "skills": [{"@odata.type": + "#Microsoft.Skills.Text.EntityRecognitionSkill", "inputs": [{"name": "text", + "source": "/document/content"}], "outputs": [{"name": "organizations", "targetName": + "organizations"}]}], "@odata.etag": "\"0x8D7ED716321E476\""}' + headers: + Accept: + - application/json;odata.metadata=minimal + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '293' + Content-Type: + - application/json + Prefer: + - return=representation + User-Agent: + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Windows-10-10.0.17763-SP0) + api-key: + - 898AD7814EFB81496ACE7ECB4B684BFD + method: PUT + uri: https://searcha9b1907.search.windows.net/skillsets('test-ss')?api-version=2019-05-06-Preview + response: + body: + string: '{"@odata.context":"https://searcha9b1907.search.windows.net/$metadata#skillsets/$entity","@odata.etag":"\"0x8D7ED716345788B\"","name":"test-ss","description":"desc2","skills":[{"@odata.type":"#Microsoft.Skills.Text.EntityRecognitionSkill","name":null,"description":null,"context":null,"categories":[],"defaultLanguageCode":null,"minimumPrecision":null,"includeTypelessEntities":null,"inputs":[{"name":"text","source":"/document/content","sourceContext":null,"inputs":[]}],"outputs":[{"name":"organizations","targetName":"organizations"}]}],"cognitiveServices":null,"knowledgeStore":null}' + headers: + cache-control: + - no-cache + content-length: + - '587' + content-type: + - application/json; odata.metadata=minimal + date: + - Fri, 01 May 2020 01:45:54 GMT + elapsed-time: + - '41' + etag: + - W/"0x8D7ED716345788B" + expires: + - '-1' + odata-version: + - '4.0' + pragma: + - no-cache + preference-applied: + - odata.include-annotations="*" + request-id: + - 7f45c05a-8b4d-11ea-84d4-2816a845e8c6 + strict-transport-security: + - max-age=15724800; includeSubDomains + vary: + - Accept-Encoding + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json;odata.metadata=minimal + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Windows-10-10.0.17763-SP0) + api-key: + - 898AD7814EFB81496ACE7ECB4B684BFD + method: GET + uri: https://searcha9b1907.search.windows.net/skillsets?api-version=2019-05-06-Preview + response: + body: + string: '{"@odata.context":"https://searcha9b1907.search.windows.net/$metadata#skillsets","value":[{"@odata.etag":"\"0x8D7ED716345788B\"","name":"test-ss","description":"desc2","skills":[{"@odata.type":"#Microsoft.Skills.Text.EntityRecognitionSkill","name":"#1","description":null,"context":"/document","categories":["Person","Quantity","Organization","URL","Email","Location","DateTime"],"defaultLanguageCode":"en","minimumPrecision":null,"includeTypelessEntities":null,"inputs":[{"name":"text","source":"/document/content","sourceContext":null,"inputs":[]}],"outputs":[{"name":"organizations","targetName":"organizations"}]}],"cognitiveServices":null,"knowledgeStore":null}]}' + headers: + cache-control: + - no-cache + content-length: + - '668' + content-type: + - application/json; odata.metadata=minimal + date: + - Fri, 01 May 2020 01:45:54 GMT + elapsed-time: + - '57' + expires: + - '-1' + odata-version: + - '4.0' + pragma: + - no-cache + preference-applied: + - odata.include-annotations="*" + request-id: + - 7f60123a-8b4d-11ea-9805-2816a845e8c6 + strict-transport-security: + - max-age=15724800; includeSubDomains + vary: + - Accept-Encoding + status: + code: 200 + message: OK +- request: + body: '{"name": "test-ss", "description": "desc1", "skills": [{"@odata.type": + "#Microsoft.Skills.Text.EntityRecognitionSkill", "inputs": [{"name": "text", + "source": "/document/content"}], "outputs": [{"name": "organizations", "targetName": + "organizations"}]}], "@odata.etag": "\"0x8D7ED716321E476\""}' + headers: + Accept: + - application/json;odata.metadata=minimal + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '293' + Content-Type: + - application/json + If-Match: + - '"0x8D7ED716321E476"' + Prefer: + - return=representation + User-Agent: + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Windows-10-10.0.17763-SP0) + api-key: + - 898AD7814EFB81496ACE7ECB4B684BFD + method: PUT + uri: https://searcha9b1907.search.windows.net/skillsets('test-ss')?api-version=2019-05-06-Preview + response: + body: + string: '{"error":{"code":"","message":"The precondition given in one of the + request headers evaluated to false. No change was made to the resource from + this request."}}' + headers: + cache-control: + - no-cache + content-language: + - en + content-length: + - '160' + content-type: + - application/json; odata.metadata=minimal + date: + - Fri, 01 May 2020 01:45:54 GMT + elapsed-time: + - '10' + expires: + - '-1' + odata-version: + - '4.0' + pragma: + - no-cache + preference-applied: + - odata.include-annotations="*" + request-id: + - 7f7d2740-8b4d-11ea-9321-2816a845e8c6 + strict-transport-security: + - max-age=15724800; includeSubDomains + status: + code: 412 + message: Precondition Failed +version: 1 diff --git a/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_create_or_update_skillset_inplace.yaml b/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_create_or_update_skillset_inplace.yaml index ac0cbd7f8138..5d3240d4d89a 100644 --- a/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_create_or_update_skillset_inplace.yaml +++ b/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_create_or_update_skillset_inplace.yaml @@ -20,12 +20,12 @@ interactions: User-Agent: - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - 659ABBD84A4561F15B198C0F7182727B + - 7BCAA2A42703160BBB7A7EB13D0570A2 method: PUT uri: https://search919b1708.search.windows.net/skillsets('test-ss')?api-version=2019-05-06-Preview response: body: - string: '{"@odata.context":"https://search919b1708.search.windows.net/$metadata#skillsets/$entity","@odata.etag":"\"0x8D7E57074DE10B6\"","name":"test-ss","description":"desc1","skills":[{"@odata.type":"#Microsoft.Skills.Text.EntityRecognitionSkill","name":null,"description":null,"context":null,"categories":[],"defaultLanguageCode":null,"minimumPrecision":null,"includeTypelessEntities":null,"inputs":[{"name":"text","source":"/document/content","sourceContext":null,"inputs":[]}],"outputs":[{"name":"organizations","targetName":"organizations"}]}],"cognitiveServices":null,"knowledgeStore":null}' + string: '{"@odata.context":"https://search919b1708.search.windows.net/$metadata#skillsets/$entity","@odata.etag":"\"0x8D7EC946711539F\"","name":"test-ss","description":"desc1","skills":[{"@odata.type":"#Microsoft.Skills.Text.EntityRecognitionSkill","name":null,"description":null,"context":null,"categories":[],"defaultLanguageCode":null,"minimumPrecision":null,"includeTypelessEntities":null,"inputs":[{"name":"text","source":"/document/content","sourceContext":null,"inputs":[]}],"outputs":[{"name":"organizations","targetName":"organizations"}]}],"cognitiveServices":null,"knowledgeStore":null}' headers: cache-control: - no-cache @@ -34,11 +34,11 @@ interactions: content-type: - application/json; odata.metadata=minimal date: - - Mon, 20 Apr 2020 21:19:05 GMT + - Wed, 29 Apr 2020 23:24:02 GMT elapsed-time: - - '59' + - '57' etag: - - W/"0x8D7E57074DE10B6" + - W/"0x8D7EC946711539F" expires: - '-1' location: @@ -50,7 +50,7 @@ interactions: preference-applied: - odata.include-annotations="*" request-id: - - 9085867a-834c-11ea-9be4-8c8590507855 + - 82abe244-8a70-11ea-889b-8c8590507855 strict-transport-security: - max-age=15724800; includeSubDomains status: @@ -60,7 +60,7 @@ interactions: body: '{"name": "test-ss", "description": "desc2", "skills": [{"@odata.type": "#Microsoft.Skills.Text.EntityRecognitionSkill", "inputs": [{"name": "text", "source": "/document/content"}], "outputs": [{"name": "organizations", "targetName": - "organizations"}]}], "@odata.etag": "\"0x8D7E57074DE10B6\""}' + "organizations"}]}], "@odata.etag": "\"0x8D7EC946711539F\""}' headers: Accept: - application/json;odata.metadata=minimal @@ -77,12 +77,12 @@ interactions: User-Agent: - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - 659ABBD84A4561F15B198C0F7182727B + - 7BCAA2A42703160BBB7A7EB13D0570A2 method: PUT uri: https://search919b1708.search.windows.net/skillsets('test-ss')?api-version=2019-05-06-Preview response: body: - string: '{"@odata.context":"https://search919b1708.search.windows.net/$metadata#skillsets/$entity","@odata.etag":"\"0x8D7E57074EABD1F\"","name":"test-ss","description":"desc2","skills":[{"@odata.type":"#Microsoft.Skills.Text.EntityRecognitionSkill","name":null,"description":null,"context":null,"categories":[],"defaultLanguageCode":null,"minimumPrecision":null,"includeTypelessEntities":null,"inputs":[{"name":"text","source":"/document/content","sourceContext":null,"inputs":[]}],"outputs":[{"name":"organizations","targetName":"organizations"}]}],"cognitiveServices":null,"knowledgeStore":null}' + string: '{"@odata.context":"https://search919b1708.search.windows.net/$metadata#skillsets/$entity","@odata.etag":"\"0x8D7EC94671E9C8A\"","name":"test-ss","description":"desc2","skills":[{"@odata.type":"#Microsoft.Skills.Text.EntityRecognitionSkill","name":null,"description":null,"context":null,"categories":[],"defaultLanguageCode":null,"minimumPrecision":null,"includeTypelessEntities":null,"inputs":[{"name":"text","source":"/document/content","sourceContext":null,"inputs":[]}],"outputs":[{"name":"organizations","targetName":"organizations"}]}],"cognitiveServices":null,"knowledgeStore":null}' headers: cache-control: - no-cache @@ -91,11 +91,11 @@ interactions: content-type: - application/json; odata.metadata=minimal date: - - Mon, 20 Apr 2020 21:19:05 GMT + - Wed, 29 Apr 2020 23:24:02 GMT elapsed-time: - - '42' + - '55' etag: - - W/"0x8D7E57074EABD1F" + - W/"0x8D7EC94671E9C8A" expires: - '-1' odata-version: @@ -105,7 +105,7 @@ interactions: preference-applied: - odata.include-annotations="*" request-id: - - 90a56f12-834c-11ea-9be4-8c8590507855 + - 82cbf8ae-8a70-11ea-889b-8c8590507855 strict-transport-security: - max-age=15724800; includeSubDomains vary: @@ -125,12 +125,12 @@ interactions: User-Agent: - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - 659ABBD84A4561F15B198C0F7182727B + - 7BCAA2A42703160BBB7A7EB13D0570A2 method: GET uri: https://search919b1708.search.windows.net/skillsets?api-version=2019-05-06-Preview response: body: - string: '{"@odata.context":"https://search919b1708.search.windows.net/$metadata#skillsets","value":[{"@odata.etag":"\"0x8D7E57074EABD1F\"","name":"test-ss","description":"desc2","skills":[{"@odata.type":"#Microsoft.Skills.Text.EntityRecognitionSkill","name":"#1","description":null,"context":"/document","categories":["Person","Quantity","Organization","URL","Email","Location","DateTime"],"defaultLanguageCode":"en","minimumPrecision":null,"includeTypelessEntities":null,"inputs":[{"name":"text","source":"/document/content","sourceContext":null,"inputs":[]}],"outputs":[{"name":"organizations","targetName":"organizations"}]}],"cognitiveServices":null,"knowledgeStore":null}]}' + string: '{"@odata.context":"https://search919b1708.search.windows.net/$metadata#skillsets","value":[{"@odata.etag":"\"0x8D7EC94671E9C8A\"","name":"test-ss","description":"desc2","skills":[{"@odata.type":"#Microsoft.Skills.Text.EntityRecognitionSkill","name":"#1","description":null,"context":"/document","categories":["Person","Quantity","Organization","URL","Email","Location","DateTime"],"defaultLanguageCode":"en","minimumPrecision":null,"includeTypelessEntities":null,"inputs":[{"name":"text","source":"/document/content","sourceContext":null,"inputs":[]}],"outputs":[{"name":"organizations","targetName":"organizations"}]}],"cognitiveServices":null,"knowledgeStore":null}]}' headers: cache-control: - no-cache @@ -139,9 +139,9 @@ interactions: content-type: - application/json; odata.metadata=minimal date: - - Mon, 20 Apr 2020 21:19:05 GMT + - Wed, 29 Apr 2020 23:24:02 GMT elapsed-time: - - '26' + - '86' expires: - '-1' odata-version: @@ -151,7 +151,7 @@ interactions: preference-applied: - odata.include-annotations="*" request-id: - - 90b23544-834c-11ea-9be4-8c8590507855 + - 82da5598-8a70-11ea-889b-8c8590507855 strict-transport-security: - max-age=15724800; includeSubDomains vary: @@ -171,12 +171,12 @@ interactions: User-Agent: - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - 659ABBD84A4561F15B198C0F7182727B + - 7BCAA2A42703160BBB7A7EB13D0570A2 method: GET uri: https://search919b1708.search.windows.net/skillsets('test-ss')?api-version=2019-05-06-Preview response: body: - string: '{"@odata.context":"https://search919b1708.search.windows.net/$metadata#skillsets/$entity","@odata.etag":"\"0x8D7E57074EABD1F\"","name":"test-ss","description":"desc2","skills":[{"@odata.type":"#Microsoft.Skills.Text.EntityRecognitionSkill","name":"#1","description":null,"context":"/document","categories":["Person","Quantity","Organization","URL","Email","Location","DateTime"],"defaultLanguageCode":"en","minimumPrecision":null,"includeTypelessEntities":null,"inputs":[{"name":"text","source":"/document/content","sourceContext":null,"inputs":[]}],"outputs":[{"name":"organizations","targetName":"organizations"}]}],"cognitiveServices":null,"knowledgeStore":null}' + string: '{"@odata.context":"https://search919b1708.search.windows.net/$metadata#skillsets/$entity","@odata.etag":"\"0x8D7EC94671E9C8A\"","name":"test-ss","description":"desc2","skills":[{"@odata.type":"#Microsoft.Skills.Text.EntityRecognitionSkill","name":"#1","description":null,"context":"/document","categories":["Person","Quantity","Organization","URL","Email","Location","DateTime"],"defaultLanguageCode":"en","minimumPrecision":null,"includeTypelessEntities":null,"inputs":[{"name":"text","source":"/document/content","sourceContext":null,"inputs":[]}],"outputs":[{"name":"organizations","targetName":"organizations"}]}],"cognitiveServices":null,"knowledgeStore":null}' headers: cache-control: - no-cache @@ -185,11 +185,11 @@ interactions: content-type: - application/json; odata.metadata=minimal date: - - Mon, 20 Apr 2020 21:19:05 GMT + - Wed, 29 Apr 2020 23:24:02 GMT elapsed-time: - - '13' + - '14' etag: - - W/"0x8D7E57074EABD1F" + - W/"0x8D7EC94671E9C8A" expires: - '-1' odata-version: @@ -199,7 +199,7 @@ interactions: preference-applied: - odata.include-annotations="*" request-id: - - 90bc4638-834c-11ea-9be4-8c8590507855 + - 82ed6930-8a70-11ea-889b-8c8590507855 strict-transport-security: - max-age=15724800; includeSubDomains vary: diff --git a/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_create_or_update_synonym_map.yaml b/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_create_or_update_synonym_map.yaml index f02ea8c4afe2..ece53546cf6d 100644 --- a/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_create_or_update_synonym_map.yaml +++ b/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_create_or_update_synonym_map.yaml @@ -16,12 +16,12 @@ interactions: User-Agent: - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - D49188C80319F4D7129F3ADDD5F24CCC + - EC1F64A6D07AB016456D278C08E0D3A0 method: POST uri: https://search2351151c.search.windows.net/synonymmaps?api-version=2019-05-06-Preview response: body: - string: '{"@odata.context":"https://search2351151c.search.windows.net/$metadata#synonymmaps/$entity","@odata.etag":"\"0x8D7E09823B12C29\"","name":"test-syn-map","format":"solr","synonyms":"USA, + string: '{"@odata.context":"https://search2351151c.search.windows.net/$metadata#synonymmaps/$entity","@odata.etag":"\"0x8D7EC94379003F5\"","name":"test-syn-map","format":"solr","synonyms":"USA, United States, United States of America","encryptionKey":null}' headers: cache-control: @@ -31,11 +31,11 @@ interactions: content-type: - application/json; odata.metadata=minimal date: - - Tue, 14 Apr 2020 17:20:32 GMT + - Wed, 29 Apr 2020 23:22:42 GMT elapsed-time: - - '78' + - '91' etag: - - W/"0x8D7E09823B12C29" + - W/"0x8D7EC94379003F5" expires: - '-1' location: @@ -47,7 +47,7 @@ interactions: preference-applied: - odata.include-annotations="*" request-id: - - 3f5e2e78-7e74-11ea-8eef-8c8590507855 + - 5323a7fa-8a70-11ea-889b-8c8590507855 strict-transport-security: - max-age=15724800; includeSubDomains status: @@ -65,12 +65,12 @@ interactions: User-Agent: - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - D49188C80319F4D7129F3ADDD5F24CCC + - EC1F64A6D07AB016456D278C08E0D3A0 method: GET uri: https://search2351151c.search.windows.net/synonymmaps?api-version=2019-05-06-Preview response: body: - string: '{"@odata.context":"https://search2351151c.search.windows.net/$metadata#synonymmaps","value":[{"@odata.etag":"\"0x8D7E09823B12C29\"","name":"test-syn-map","format":"solr","synonyms":"USA, + string: '{"@odata.context":"https://search2351151c.search.windows.net/$metadata#synonymmaps","value":[{"@odata.etag":"\"0x8D7EC94379003F5\"","name":"test-syn-map","format":"solr","synonyms":"USA, United States, United States of America","encryptionKey":null}]}' headers: cache-control: @@ -80,9 +80,9 @@ interactions: content-type: - application/json; odata.metadata=minimal date: - - Tue, 14 Apr 2020 17:20:32 GMT + - Wed, 29 Apr 2020 23:22:42 GMT elapsed-time: - - '17' + - '20' expires: - '-1' odata-version: @@ -92,7 +92,7 @@ interactions: preference-applied: - odata.include-annotations="*" request-id: - - 3f809652-7e74-11ea-8eef-8c8590507855 + - 534b4f1c-8a70-11ea-889b-8c8590507855 strict-transport-security: - max-age=15724800; includeSubDomains vary: @@ -119,12 +119,12 @@ interactions: User-Agent: - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - D49188C80319F4D7129F3ADDD5F24CCC + - EC1F64A6D07AB016456D278C08E0D3A0 method: PUT uri: https://search2351151c.search.windows.net/synonymmaps('test-syn-map')?api-version=2019-05-06-Preview response: body: - string: '{"@odata.context":"https://search2351151c.search.windows.net/$metadata#synonymmaps/$entity","@odata.etag":"\"0x8D7E09823C46AAF\"","name":"test-syn-map","format":"solr","synonyms":"Washington, + string: '{"@odata.context":"https://search2351151c.search.windows.net/$metadata#synonymmaps/$entity","@odata.etag":"\"0x8D7EC9437A3416B\"","name":"test-syn-map","format":"solr","synonyms":"Washington, Wash. => WA","encryptionKey":null}' headers: cache-control: @@ -134,11 +134,11 @@ interactions: content-type: - application/json; odata.metadata=minimal date: - - Tue, 14 Apr 2020 17:20:32 GMT + - Wed, 29 Apr 2020 23:22:42 GMT elapsed-time: - - '31' + - '25' etag: - - W/"0x8D7E09823C46AAF" + - W/"0x8D7EC9437A3416B" expires: - '-1' odata-version: @@ -148,7 +148,7 @@ interactions: preference-applied: - odata.include-annotations="*" request-id: - - 3f8974e8-7e74-11ea-8eef-8c8590507855 + - 5354ece8-8a70-11ea-889b-8c8590507855 strict-transport-security: - max-age=15724800; includeSubDomains vary: @@ -168,12 +168,12 @@ interactions: User-Agent: - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - D49188C80319F4D7129F3ADDD5F24CCC + - EC1F64A6D07AB016456D278C08E0D3A0 method: GET uri: https://search2351151c.search.windows.net/synonymmaps?api-version=2019-05-06-Preview response: body: - string: '{"@odata.context":"https://search2351151c.search.windows.net/$metadata#synonymmaps","value":[{"@odata.etag":"\"0x8D7E09823C46AAF\"","name":"test-syn-map","format":"solr","synonyms":"Washington, + string: '{"@odata.context":"https://search2351151c.search.windows.net/$metadata#synonymmaps","value":[{"@odata.etag":"\"0x8D7EC9437A3416B\"","name":"test-syn-map","format":"solr","synonyms":"Washington, Wash. => WA","encryptionKey":null}]}' headers: cache-control: @@ -183,9 +183,9 @@ interactions: content-type: - application/json; odata.metadata=minimal date: - - Tue, 14 Apr 2020 17:20:32 GMT + - Wed, 29 Apr 2020 23:22:42 GMT elapsed-time: - - '14' + - '9' expires: - '-1' odata-version: @@ -195,7 +195,7 @@ interactions: preference-applied: - odata.include-annotations="*" request-id: - - 3f946d3a-7e74-11ea-8eef-8c8590507855 + - 535f2d20-8a70-11ea-889b-8c8590507855 strict-transport-security: - max-age=15724800; includeSubDomains vary: @@ -215,12 +215,12 @@ interactions: User-Agent: - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - D49188C80319F4D7129F3ADDD5F24CCC + - EC1F64A6D07AB016456D278C08E0D3A0 method: GET uri: https://search2351151c.search.windows.net/synonymmaps('test-syn-map')?api-version=2019-05-06-Preview response: body: - string: '{"@odata.context":"https://search2351151c.search.windows.net/$metadata#synonymmaps/$entity","@odata.etag":"\"0x8D7E09823C46AAF\"","name":"test-syn-map","format":"solr","synonyms":"Washington, + string: '{"@odata.context":"https://search2351151c.search.windows.net/$metadata#synonymmaps/$entity","@odata.etag":"\"0x8D7EC9437A3416B\"","name":"test-syn-map","format":"solr","synonyms":"Washington, Wash. => WA","encryptionKey":null}' headers: cache-control: @@ -230,11 +230,11 @@ interactions: content-type: - application/json; odata.metadata=minimal date: - - Tue, 14 Apr 2020 17:20:32 GMT + - Wed, 29 Apr 2020 23:22:42 GMT elapsed-time: - - '8' + - '7' etag: - - W/"0x8D7E09823C46AAF" + - W/"0x8D7EC9437A3416B" expires: - '-1' odata-version: @@ -244,7 +244,7 @@ interactions: preference-applied: - odata.include-annotations="*" request-id: - - 3f9cbbf2-7e74-11ea-8eef-8c8590507855 + - 53669bbe-8a70-11ea-889b-8c8590507855 strict-transport-security: - max-age=15724800; includeSubDomains vary: diff --git a/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_create_or_update_synonym_map_if_unchanged.yaml b/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_create_or_update_synonym_map_if_unchanged.yaml new file mode 100644 index 000000000000..920cac84f591 --- /dev/null +++ b/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_create_or_update_synonym_map_if_unchanged.yaml @@ -0,0 +1,169 @@ +interactions: +- request: + body: '{"name": "test-syn-map", "format": "solr", "synonyms": "USA, United States, + United States of America"}' + headers: + Accept: + - application/json;odata.metadata=minimal + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '102' + Content-Type: + - application/json + User-Agent: + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Windows-10-10.0.17763-SP0) + api-key: + - 46DF28A1622AC6557E74984EDD9A64E7 + method: POST + uri: https://search5a551a56.search.windows.net/synonymmaps?api-version=2019-05-06-Preview + response: + body: + string: '{"@odata.context":"https://search5a551a56.search.windows.net/$metadata#synonymmaps/$entity","@odata.etag":"\"0x8D7ED71502253A0\"","name":"test-syn-map","format":"solr","synonyms":"USA, + United States, United States of America","encryptionKey":null}' + headers: + cache-control: + - no-cache + content-length: + - '247' + content-type: + - application/json; odata.metadata=minimal + date: + - Fri, 01 May 2020 01:45:22 GMT + elapsed-time: + - '36' + etag: + - W/"0x8D7ED71502253A0" + expires: + - '-1' + location: + - https://search5a551a56.search.windows.net/synonymmaps('test-syn-map')?api-version=2019-05-06-Preview + odata-version: + - '4.0' + pragma: + - no-cache + preference-applied: + - odata.include-annotations="*" + request-id: + - 6bf83b14-8b4d-11ea-b062-2816a845e8c6 + strict-transport-security: + - max-age=15724800; includeSubDomains + status: + code: 201 + message: Created +- request: + body: '{"name": "test-syn-map", "format": "solr", "synonyms": "Washington, Wash. + => WA"}' + headers: + Accept: + - application/json;odata.metadata=minimal + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '81' + Content-Type: + - application/json + Prefer: + - return=representation + User-Agent: + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Windows-10-10.0.17763-SP0) + api-key: + - 46DF28A1622AC6557E74984EDD9A64E7 + method: PUT + uri: https://search5a551a56.search.windows.net/synonymmaps('test-syn-map')?api-version=2019-05-06-Preview + response: + body: + string: '{"@odata.context":"https://search5a551a56.search.windows.net/$metadata#synonymmaps/$entity","@odata.etag":"\"0x8D7ED715031236D\"","name":"test-syn-map","format":"solr","synonyms":"Washington, + Wash. => WA","encryptionKey":null}' + headers: + cache-control: + - no-cache + content-length: + - '226' + content-type: + - application/json; odata.metadata=minimal + date: + - Fri, 01 May 2020 01:45:22 GMT + elapsed-time: + - '16' + etag: + - W/"0x8D7ED715031236D" + expires: + - '-1' + odata-version: + - '4.0' + pragma: + - no-cache + preference-applied: + - odata.include-annotations="*" + request-id: + - 6c3a94da-8b4d-11ea-be03-2816a845e8c6 + strict-transport-security: + - max-age=15724800; includeSubDomains + vary: + - Accept-Encoding + status: + code: 200 + message: OK +- request: + body: '{"name": "test-syn-map", "format": "solr", "synonyms": "[''USA, United + States, United States of America'']", "@odata.etag": "\"0x8D7ED71502253A0\""}' + headers: + Accept: + - application/json;odata.metadata=minimal + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '146' + Content-Type: + - application/json + If-Match: + - '"0x8D7ED71502253A0"' + Prefer: + - return=representation + User-Agent: + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Windows-10-10.0.17763-SP0) + api-key: + - 46DF28A1622AC6557E74984EDD9A64E7 + method: PUT + uri: https://search5a551a56.search.windows.net/synonymmaps('test-syn-map')?api-version=2019-05-06-Preview + response: + body: + string: '{"error":{"code":"","message":"The precondition given in one of the + request headers evaluated to false. No change was made to the resource from + this request."}}' + headers: + cache-control: + - no-cache + content-language: + - en + content-length: + - '160' + content-type: + - application/json; odata.metadata=minimal + date: + - Fri, 01 May 2020 01:45:22 GMT + elapsed-time: + - '5' + expires: + - '-1' + odata-version: + - '4.0' + pragma: + - no-cache + preference-applied: + - odata.include-annotations="*" + request-id: + - 6c4a90f6-8b4d-11ea-ac9a-2816a845e8c6 + strict-transport-security: + - max-age=15724800; includeSubDomains + status: + code: 412 + message: Precondition Failed +version: 1 diff --git a/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_create_skillset.yaml b/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_create_skillset.yaml index 0d2ca3810bc8..7912c8bf6566 100644 --- a/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_create_skillset.yaml +++ b/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_create_skillset.yaml @@ -17,12 +17,12 @@ interactions: User-Agent: - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - 52B73A57D2CD037BC4F6F6D33A5A44E5 + - 190A4566DDA77F82BEE19B1588A89BA8 method: POST uri: https://search31db0fab.search.windows.net/skillsets?api-version=2019-05-06-Preview response: body: - string: '{"@odata.context":"https://search31db0fab.search.windows.net/$metadata#skillsets/$entity","@odata.etag":"\"0x8D7E234B20E0D33\"","name":"test-ss","description":"desc","skills":[{"@odata.type":"#Microsoft.Skills.Text.EntityRecognitionSkill","name":null,"description":null,"context":null,"categories":[],"defaultLanguageCode":null,"minimumPrecision":null,"includeTypelessEntities":null,"inputs":[{"name":"text","source":"/document/content","sourceContext":null,"inputs":[]}],"outputs":[{"name":"organizations","targetName":"organizations"}]}],"cognitiveServices":null,"knowledgeStore":null}' + string: '{"@odata.context":"https://search31db0fab.search.windows.net/$metadata#skillsets/$entity","@odata.etag":"\"0x8D7EC946DEEBBDA\"","name":"test-ss","description":"desc","skills":[{"@odata.type":"#Microsoft.Skills.Text.EntityRecognitionSkill","name":null,"description":null,"context":null,"categories":[],"defaultLanguageCode":null,"minimumPrecision":null,"includeTypelessEntities":null,"inputs":[{"name":"text","source":"/document/content","sourceContext":null,"inputs":[]}],"outputs":[{"name":"organizations","targetName":"organizations"}]}],"cognitiveServices":null,"knowledgeStore":null}' headers: cache-control: - no-cache @@ -31,11 +31,11 @@ interactions: content-type: - application/json; odata.metadata=minimal date: - - Thu, 16 Apr 2020 18:33:44 GMT + - Wed, 29 Apr 2020 23:24:13 GMT elapsed-time: - - '127' + - '59' etag: - - W/"0x8D7E234B20E0D33" + - W/"0x8D7EC946DEEBBDA" expires: - '-1' location: @@ -47,7 +47,7 @@ interactions: preference-applied: - odata.include-annotations="*" request-id: - - ccbc2cb4-8010-11ea-81b7-8c8590507855 + - 89887280-8a70-11ea-889b-8c8590507855 strict-transport-security: - max-age=15724800; includeSubDomains status: @@ -65,12 +65,12 @@ interactions: User-Agent: - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - 52B73A57D2CD037BC4F6F6D33A5A44E5 + - 190A4566DDA77F82BEE19B1588A89BA8 method: GET uri: https://search31db0fab.search.windows.net/skillsets?api-version=2019-05-06-Preview response: body: - string: '{"@odata.context":"https://search31db0fab.search.windows.net/$metadata#skillsets","value":[{"@odata.etag":"\"0x8D7E234B20E0D33\"","name":"test-ss","description":"desc","skills":[{"@odata.type":"#Microsoft.Skills.Text.EntityRecognitionSkill","name":"#1","description":null,"context":"/document","categories":["Person","Quantity","Organization","URL","Email","Location","DateTime"],"defaultLanguageCode":"en","minimumPrecision":null,"includeTypelessEntities":null,"inputs":[{"name":"text","source":"/document/content","sourceContext":null,"inputs":[]}],"outputs":[{"name":"organizations","targetName":"organizations"}]}],"cognitiveServices":null,"knowledgeStore":null}]}' + string: '{"@odata.context":"https://search31db0fab.search.windows.net/$metadata#skillsets","value":[{"@odata.etag":"\"0x8D7EC946DEEBBDA\"","name":"test-ss","description":"desc","skills":[{"@odata.type":"#Microsoft.Skills.Text.EntityRecognitionSkill","name":"#1","description":null,"context":"/document","categories":["Person","Quantity","Organization","URL","Email","Location","DateTime"],"defaultLanguageCode":"en","minimumPrecision":null,"includeTypelessEntities":null,"inputs":[{"name":"text","source":"/document/content","sourceContext":null,"inputs":[]}],"outputs":[{"name":"organizations","targetName":"organizations"}]}],"cognitiveServices":null,"knowledgeStore":null}]}' headers: cache-control: - no-cache @@ -79,9 +79,9 @@ interactions: content-type: - application/json; odata.metadata=minimal date: - - Thu, 16 Apr 2020 18:33:44 GMT + - Wed, 29 Apr 2020 23:24:13 GMT elapsed-time: - - '74' + - '48' expires: - '-1' odata-version: @@ -91,7 +91,7 @@ interactions: preference-applied: - odata.include-annotations="*" request-id: - - cce66d3a-8010-11ea-81b7-8c8590507855 + - 89a90464-8a70-11ea-889b-8c8590507855 strict-transport-security: - max-age=15724800; includeSubDomains vary: diff --git a/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_create_synonym_map.yaml b/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_create_synonym_map.yaml index b2705766bc1a..dbf1fb417ee7 100644 --- a/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_create_synonym_map.yaml +++ b/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_create_synonym_map.yaml @@ -16,12 +16,12 @@ interactions: User-Agent: - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - 7E66AA71ABD3C9A10D6095D222036532 + - 5466BA2F17F7BB274AF2C6FCDA6EE518 method: POST uri: https://search642c10fa.search.windows.net/synonymmaps?api-version=2019-05-06-Preview response: body: - string: '{"@odata.context":"https://search642c10fa.search.windows.net/$metadata#synonymmaps/$entity","@odata.etag":"\"0x8D7E096FA9670E1\"","name":"test-syn-map","format":"solr","synonyms":"USA, + string: '{"@odata.context":"https://search642c10fa.search.windows.net/$metadata#synonymmaps/$entity","@odata.etag":"\"0x8D7EC943E5D3A13\"","name":"test-syn-map","format":"solr","synonyms":"USA, United States, United States of America\nWashington, Wash. => WA","encryptionKey":null}' headers: cache-control: @@ -31,11 +31,11 @@ interactions: content-type: - application/json; odata.metadata=minimal date: - - Tue, 14 Apr 2020 17:12:15 GMT + - Wed, 29 Apr 2020 23:22:54 GMT elapsed-time: - - '111' + - '92' etag: - - W/"0x8D7E096FA9670E1" + - W/"0x8D7EC943E5D3A13" expires: - '-1' location: @@ -47,7 +47,7 @@ interactions: preference-applied: - odata.include-annotations="*" request-id: - - 163dd06c-7e73-11ea-a325-8c8590507855 + - 59f6f550-8a70-11ea-889b-8c8590507855 strict-transport-security: - max-age=15724800; includeSubDomains status: @@ -65,12 +65,12 @@ interactions: User-Agent: - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - 7E66AA71ABD3C9A10D6095D222036532 + - 5466BA2F17F7BB274AF2C6FCDA6EE518 method: GET uri: https://search642c10fa.search.windows.net/synonymmaps?api-version=2019-05-06-Preview response: body: - string: '{"@odata.context":"https://search642c10fa.search.windows.net/$metadata#synonymmaps","value":[{"@odata.etag":"\"0x8D7E096FA9670E1\"","name":"test-syn-map","format":"solr","synonyms":"USA, + string: '{"@odata.context":"https://search642c10fa.search.windows.net/$metadata#synonymmaps","value":[{"@odata.etag":"\"0x8D7EC943E5D3A13\"","name":"test-syn-map","format":"solr","synonyms":"USA, United States, United States of America\nWashington, Wash. => WA","encryptionKey":null}]}' headers: cache-control: @@ -80,9 +80,9 @@ interactions: content-type: - application/json; odata.metadata=minimal date: - - Tue, 14 Apr 2020 17:12:15 GMT + - Wed, 29 Apr 2020 23:22:54 GMT elapsed-time: - - '27' + - '159' expires: - '-1' odata-version: @@ -92,7 +92,7 @@ interactions: preference-applied: - odata.include-annotations="*" request-id: - - 1665e322-7e73-11ea-a325-8c8590507855 + - 5a1b2e5c-8a70-11ea-889b-8c8590507855 strict-transport-security: - max-age=15724800; includeSubDomains vary: diff --git a/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_delete_datasource.yaml b/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_delete_datasource.yaml new file mode 100644 index 000000000000..916b6d9e7534 --- /dev/null +++ b/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_delete_datasource.yaml @@ -0,0 +1,186 @@ +interactions: +- request: + body: '{"name": "sample-datasource", "type": "azureblob", "credentials": {"connectionString": + "DefaultEndpointsProtocol=https;AccountName=storagename;AccountKey=NzhL3hKZbJBuJ2484dPTR+xF30kYaWSSCbs2BzLgVVI1woqeST/1IgqaLm6QAOTxtGvxctSNbIR/1hW8yH+bJg==;EndpointSuffix=core.windows.net"}, + "container": {"name": "searchcontainer"}}' + headers: + Accept: + - application/json;odata.metadata=minimal + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '319' + Content-Type: + - application/json + User-Agent: + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) + api-key: + - 1C5B43C52D408683A88B701C2E27EDD2 + method: POST + uri: https://search51a9106a.search.windows.net/datasources?api-version=2019-05-06-Preview + response: + body: + string: '{"@odata.context":"https://search51a9106a.search.windows.net/$metadata#datasources/$entity","@odata.etag":"\"0x8D7EC94A414B210\"","name":"sample-datasource","description":null,"type":"azureblob","subtype":null,"credentials":{"connectionString":null},"container":{"name":"searchcontainer","query":null},"dataChangeDetectionPolicy":null,"dataDeletionDetectionPolicy":null}' + headers: + cache-control: + - no-cache + content-length: + - '370' + content-type: + - application/json; odata.metadata=minimal + date: + - Wed, 29 Apr 2020 23:25:44 GMT + elapsed-time: + - '34' + etag: + - W/"0x8D7EC94A414B210" + expires: + - '-1' + location: + - https://search51a9106a.search.windows.net/datasources('sample-datasource')?api-version=2019-05-06-Preview + odata-version: + - '4.0' + pragma: + - no-cache + preference-applied: + - odata.include-annotations="*" + request-id: + - bfb0f2ce-8a70-11ea-889b-8c8590507855 + strict-transport-security: + - max-age=15724800; includeSubDomains + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json;odata.metadata=minimal + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) + api-key: + - 1C5B43C52D408683A88B701C2E27EDD2 + method: GET + uri: https://search51a9106a.search.windows.net/datasources?api-version=2019-05-06-Preview + response: + body: + string: '{"@odata.context":"https://search51a9106a.search.windows.net/$metadata#datasources","value":[{"@odata.etag":"\"0x8D7EC94A414B210\"","name":"sample-datasource","description":null,"type":"azureblob","subtype":null,"credentials":{"connectionString":null},"container":{"name":"searchcontainer","query":null},"dataChangeDetectionPolicy":null,"dataDeletionDetectionPolicy":null}]}' + headers: + cache-control: + - no-cache + content-length: + - '374' + content-type: + - application/json; odata.metadata=minimal + date: + - Wed, 29 Apr 2020 23:25:44 GMT + elapsed-time: + - '63' + expires: + - '-1' + odata-version: + - '4.0' + pragma: + - no-cache + preference-applied: + - odata.include-annotations="*" + request-id: + - bfcc3b92-8a70-11ea-889b-8c8590507855 + strict-transport-security: + - max-age=15724800; includeSubDomains + vary: + - Accept-Encoding + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json;odata.metadata=minimal + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '0' + User-Agent: + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) + api-key: + - 1C5B43C52D408683A88B701C2E27EDD2 + method: DELETE + uri: https://search51a9106a.search.windows.net/datasources('sample-datasource')?api-version=2019-05-06-Preview + response: + body: + string: '' + headers: + cache-control: + - no-cache + date: + - Wed, 29 Apr 2020 23:25:44 GMT + elapsed-time: + - '20' + expires: + - '-1' + pragma: + - no-cache + request-id: + - bfdc0004-8a70-11ea-889b-8c8590507855 + strict-transport-security: + - max-age=15724800; includeSubDomains + status: + code: 204 + message: No Content +- request: + body: null + headers: + Accept: + - application/json;odata.metadata=minimal + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) + api-key: + - 1C5B43C52D408683A88B701C2E27EDD2 + method: GET + uri: https://search51a9106a.search.windows.net/datasources?api-version=2019-05-06-Preview + response: + body: + string: '{"@odata.context":"https://search51a9106a.search.windows.net/$metadata#datasources","value":[]}' + headers: + cache-control: + - no-cache + content-length: + - '95' + content-type: + - application/json; odata.metadata=minimal + date: + - Wed, 29 Apr 2020 23:25:44 GMT + elapsed-time: + - '4' + expires: + - '-1' + odata-version: + - '4.0' + pragma: + - no-cache + preference-applied: + - odata.include-annotations="*" + request-id: + - bfe4dfda-8a70-11ea-889b-8c8590507855 + strict-transport-security: + - max-age=15724800; includeSubDomains + vary: + - Accept-Encoding + status: + code: 200 + message: OK +version: 1 diff --git a/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_delete_datasource_if_unchanged.yaml b/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_delete_datasource_if_unchanged.yaml new file mode 100644 index 000000000000..7d52e66e1304 --- /dev/null +++ b/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_delete_datasource_if_unchanged.yaml @@ -0,0 +1,164 @@ +interactions: +- request: + body: '{"name": "sample-datasource", "type": "azureblob", "credentials": {"connectionString": + "DefaultEndpointsProtocol=https;AccountName=storagename;AccountKey=NzhL3hKZbJBuJ2484dPTR+xF30kYaWSSCbs2BzLgVVI1woqeST/1IgqaLm6QAOTxtGvxctSNbIR/1hW8yH+bJg==;EndpointSuffix=core.windows.net"}, + "container": {"name": "searchcontainer"}}' + headers: + Accept: + - application/json;odata.metadata=minimal + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '319' + Content-Type: + - application/json + User-Agent: + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Windows-10-10.0.17763-SP0) + api-key: + - F1F2BD64ED2A908278EBA8650A6C8DEE + method: POST + uri: https://search4ba315a4.search.windows.net/datasources?api-version=2019-05-06-Preview + response: + body: + string: '{"@odata.context":"https://search4ba315a4.search.windows.net/$metadata#datasources/$entity","@odata.etag":"\"0x8D7ED7181869172\"","name":"sample-datasource","description":null,"type":"azureblob","subtype":null,"credentials":{"connectionString":null},"container":{"name":"searchcontainer","query":null},"dataChangeDetectionPolicy":null,"dataDeletionDetectionPolicy":null}' + headers: + cache-control: + - no-cache + content-length: + - '370' + content-type: + - application/json; odata.metadata=minimal + date: + - Fri, 01 May 2020 01:46:45 GMT + elapsed-time: + - '48' + etag: + - W/"0x8D7ED7181869172" + expires: + - '-1' + location: + - https://search4ba315a4.search.windows.net/datasources('sample-datasource')?api-version=2019-05-06-Preview + odata-version: + - '4.0' + pragma: + - no-cache + preference-applied: + - odata.include-annotations="*" + request-id: + - 9d5ef89e-8b4d-11ea-ab0b-2816a845e8c6 + strict-transport-security: + - max-age=15724800; includeSubDomains + status: + code: 201 + message: Created +- request: + body: '{"name": "sample-datasource", "description": "updated", "type": "azureblob", + "credentials": {"connectionString": "DefaultEndpointsProtocol=https;AccountName=storagename;AccountKey=NzhL3hKZbJBuJ2484dPTR+xF30kYaWSSCbs2BzLgVVI1woqeST/1IgqaLm6QAOTxtGvxctSNbIR/1hW8yH+bJg==;EndpointSuffix=core.windows.net"}, + "container": {"name": "searchcontainer"}}' + headers: + Accept: + - application/json;odata.metadata=minimal + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '345' + Content-Type: + - application/json + Prefer: + - return=representation + User-Agent: + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Windows-10-10.0.17763-SP0) + api-key: + - F1F2BD64ED2A908278EBA8650A6C8DEE + method: PUT + uri: https://search4ba315a4.search.windows.net/datasources('sample-datasource')?api-version=2019-05-06-Preview + response: + body: + string: '{"@odata.context":"https://search4ba315a4.search.windows.net/$metadata#datasources/$entity","@odata.etag":"\"0x8D7ED71819F26FD\"","name":"sample-datasource","description":"updated","type":"azureblob","subtype":null,"credentials":{"connectionString":null},"container":{"name":"searchcontainer","query":null},"dataChangeDetectionPolicy":null,"dataDeletionDetectionPolicy":null}' + headers: + cache-control: + - no-cache + content-length: + - '375' + content-type: + - application/json; odata.metadata=minimal + date: + - Fri, 01 May 2020 01:46:45 GMT + elapsed-time: + - '27' + etag: + - W/"0x8D7ED71819F26FD" + expires: + - '-1' + odata-version: + - '4.0' + pragma: + - no-cache + preference-applied: + - odata.include-annotations="*" + request-id: + - 9da104c6-8b4d-11ea-8bff-2816a845e8c6 + strict-transport-security: + - max-age=15724800; includeSubDomains + vary: + - Accept-Encoding + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json;odata.metadata=minimal + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '0' + If-Match: + - '"0x8D7ED7181869172"' + User-Agent: + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Windows-10-10.0.17763-SP0) + api-key: + - F1F2BD64ED2A908278EBA8650A6C8DEE + method: DELETE + uri: https://search4ba315a4.search.windows.net/datasources('sample-datasource')?api-version=2019-05-06-Preview + response: + body: + string: '{"error":{"code":"","message":"The precondition given in one of the + request headers evaluated to false. No change was made to the resource from + this request."}}' + headers: + cache-control: + - no-cache + content-language: + - en + content-length: + - '160' + content-type: + - application/json; odata.metadata=minimal + date: + - Fri, 01 May 2020 01:46:45 GMT + elapsed-time: + - '4' + expires: + - '-1' + odata-version: + - '4.0' + pragma: + - no-cache + preference-applied: + - odata.include-annotations="*" + request-id: + - 9db91138-8b4d-11ea-8df5-2816a845e8c6 + strict-transport-security: + - max-age=15724800; includeSubDomains + status: + code: 412 + message: Precondition Failed +version: 1 diff --git a/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_delete_datasource_string_if_unchanged.yaml b/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_delete_datasource_string_if_unchanged.yaml new file mode 100644 index 000000000000..a19a6b9709f4 --- /dev/null +++ b/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_delete_datasource_string_if_unchanged.yaml @@ -0,0 +1,112 @@ +interactions: +- request: + body: '{"name": "sample-datasource", "type": "azureblob", "credentials": {"connectionString": + "DefaultEndpointsProtocol=https;AccountName=storagename;AccountKey=NzhL3hKZbJBuJ2484dPTR+xF30kYaWSSCbs2BzLgVVI1woqeST/1IgqaLm6QAOTxtGvxctSNbIR/1hW8yH+bJg==;EndpointSuffix=core.windows.net"}, + "container": {"name": "searchcontainer"}}' + headers: + Accept: + - application/json;odata.metadata=minimal + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '319' + Content-Type: + - application/json + User-Agent: + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Windows-10-10.0.17763-SP0) + api-key: + - 371E8B1C08DCB8B5AEF87D7E375D42AE + method: POST + uri: https://searchf0dc189a.search.windows.net/datasources?api-version=2019-05-06-Preview + response: + body: + string: '{"@odata.context":"https://searchf0dc189a.search.windows.net/$metadata#datasources/$entity","@odata.etag":"\"0x8D7EE1DB1EEB45B\"","name":"sample-datasource","description":null,"type":"azureblob","subtype":null,"credentials":{"connectionString":null},"container":{"name":"searchcontainer","query":null},"dataChangeDetectionPolicy":null,"dataDeletionDetectionPolicy":null}' + headers: + cache-control: + - no-cache + content-length: + - '370' + content-type: + - application/json; odata.metadata=minimal + date: + - Fri, 01 May 2020 22:19:19 GMT + elapsed-time: + - '38' + etag: + - W/"0x8D7EE1DB1EEB45B" + expires: + - '-1' + location: + - https://searchf0dc189a.search.windows.net/datasources('sample-datasource')?api-version=2019-05-06-Preview + odata-version: + - '4.0' + pragma: + - no-cache + preference-applied: + - odata.include-annotations="*" + request-id: + - ce408dc8-8bf9-11ea-9a33-2816a845e8c6 + strict-transport-security: + - max-age=15724800; includeSubDomains + status: + code: 201 + message: Created +- request: + body: '{"name": "sample-datasource", "description": "updated", "type": "azureblob", + "credentials": {"connectionString": "DefaultEndpointsProtocol=https;AccountName=storagename;AccountKey=NzhL3hKZbJBuJ2484dPTR+xF30kYaWSSCbs2BzLgVVI1woqeST/1IgqaLm6QAOTxtGvxctSNbIR/1hW8yH+bJg==;EndpointSuffix=core.windows.net"}, + "container": {"name": "searchcontainer"}}' + headers: + Accept: + - application/json;odata.metadata=minimal + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '345' + Content-Type: + - application/json + Prefer: + - return=representation + User-Agent: + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Windows-10-10.0.17763-SP0) + api-key: + - 371E8B1C08DCB8B5AEF87D7E375D42AE + method: PUT + uri: https://searchf0dc189a.search.windows.net/datasources('sample-datasource')?api-version=2019-05-06-Preview + response: + body: + string: '{"@odata.context":"https://searchf0dc189a.search.windows.net/$metadata#datasources/$entity","@odata.etag":"\"0x8D7EE1DB20218D0\"","name":"sample-datasource","description":"updated","type":"azureblob","subtype":null,"credentials":{"connectionString":null},"container":{"name":"searchcontainer","query":null},"dataChangeDetectionPolicy":null,"dataDeletionDetectionPolicy":null}' + headers: + cache-control: + - no-cache + content-length: + - '375' + content-type: + - application/json; odata.metadata=minimal + date: + - Fri, 01 May 2020 22:19:20 GMT + elapsed-time: + - '36' + etag: + - W/"0x8D7EE1DB20218D0" + expires: + - '-1' + odata-version: + - '4.0' + pragma: + - no-cache + preference-applied: + - odata.include-annotations="*" + request-id: + - ce883c4c-8bf9-11ea-b342-2816a845e8c6 + strict-transport-security: + - max-age=15724800; includeSubDomains + vary: + - Accept-Encoding + status: + code: 200 + message: OK +version: 1 diff --git a/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_delete_indexes.yaml b/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_delete_indexes.yaml index a137c371dc5c..a4eda3a99d41 100644 --- a/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_delete_indexes.yaml +++ b/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_delete_indexes.yaml @@ -11,9 +11,9 @@ interactions: Content-Length: - '0' User-Agent: - - azsdk-python-search-documents/1.0.0b2 Python/3.6.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - 668B8A9202953BC7FBED4F24F5304DBF + - 4047D6344BEF3D3392D3F9E3C29654B1 method: DELETE uri: https://search21c20f2f.search.windows.net/indexes('drgqefsg')?api-version=2019-05-06-Preview response: @@ -23,15 +23,15 @@ interactions: cache-control: - no-cache date: - - Tue, 31 Mar 2020 17:39:04 GMT + - Wed, 29 Apr 2020 23:21:42 GMT elapsed-time: - - '510' + - '243' expires: - '-1' pragma: - no-cache request-id: - - 84492680-7376-11ea-bf5b-5cf37071153c + - 2eb2ba32-8a70-11ea-889b-8c8590507855 strict-transport-security: - max-age=15724800; includeSubDomains status: @@ -47,9 +47,9 @@ interactions: Connection: - keep-alive User-Agent: - - azsdk-python-search-documents/1.0.0b2 Python/3.6.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - 668B8A9202953BC7FBED4F24F5304DBF + - 4047D6344BEF3D3392D3F9E3C29654B1 method: GET uri: https://search21c20f2f.search.windows.net/indexes?api-version=2019-05-06-Preview response: @@ -63,9 +63,9 @@ interactions: content-type: - application/json; odata.metadata=minimal date: - - Tue, 31 Mar 2020 17:39:09 GMT + - Wed, 29 Apr 2020 23:21:46 GMT elapsed-time: - - '23' + - '111' expires: - '-1' odata-version: @@ -75,7 +75,7 @@ interactions: preference-applied: - odata.include-annotations="*" request-id: - - 87ce7638-7376-11ea-8421-5cf37071153c + - 321d5592-8a70-11ea-889b-8c8590507855 strict-transport-security: - max-age=15724800; includeSubDomains vary: diff --git a/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_delete_indexes_if_unchanged.yaml b/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_delete_indexes_if_unchanged.yaml new file mode 100644 index 000000000000..eb295a1b7e0b --- /dev/null +++ b/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_delete_indexes_if_unchanged.yaml @@ -0,0 +1,166 @@ +interactions: +- request: + body: '{"name": "hotels", "fields": [{"name": "hotelId", "type": "Edm.String", + "key": true, "searchable": false}, {"name": "baseRate", "type": "Edm.Double"}], + "scoringProfiles": [{"name": "MyProfile"}], "corsOptions": {"allowedOrigins": + ["*"], "maxAgeInSeconds": 60}}' + headers: + Accept: + - application/json;odata.metadata=minimal + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '260' + Content-Type: + - application/json + User-Agent: + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Windows-10-10.0.17763-SP0) + api-key: + - 0ABC8B358D4D85386822B456F8767860 + method: POST + uri: https://searchbbd1469.search.windows.net/indexes?api-version=2019-05-06-Preview + response: + body: + string: '{"@odata.context":"https://searchbbd1469.search.windows.net/$metadata#indexes/$entity","@odata.etag":"\"0x8D7ED714678528F\"","name":"hotels","defaultScoringProfile":null,"fields":[{"name":"hotelId","type":"Edm.String","searchable":false,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":true,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"baseRate","type":"Edm.Double","searchable":false,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]}],"scoringProfiles":[{"name":"MyProfile","functionAggregation":null,"text":null,"functions":[]}],"corsOptions":{"allowedOrigins":["*"],"maxAgeInSeconds":60},"suggesters":[],"analyzers":[],"tokenizers":[],"tokenFilters":[],"charFilters":[],"encryptionKey":null,"similarity":null}' + headers: + cache-control: + - no-cache + content-length: + - '889' + content-type: + - application/json; odata.metadata=minimal + date: + - Fri, 01 May 2020 01:45:06 GMT + elapsed-time: + - '627' + etag: + - W/"0x8D7ED714678528F" + expires: + - '-1' + location: + - https://searchbbd1469.search.windows.net/indexes('hotels')?api-version=2019-05-06-Preview + odata-version: + - '4.0' + pragma: + - no-cache + preference-applied: + - odata.include-annotations="*" + request-id: + - 61fbe900-8b4d-11ea-aac9-2816a845e8c6 + strict-transport-security: + - max-age=15724800; includeSubDomains + status: + code: 201 + message: Created +- request: + body: '{"name": "hotels", "fields": [{"name": "hotelId", "type": "Edm.String", + "key": true, "searchable": false}, {"name": "baseRate", "type": "Edm.Double"}], + "scoringProfiles": [], "corsOptions": {"allowedOrigins": ["*"], "maxAgeInSeconds": + 60}}' + headers: + Accept: + - application/json;odata.metadata=minimal + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '239' + Content-Type: + - application/json + Prefer: + - return=representation + User-Agent: + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Windows-10-10.0.17763-SP0) + api-key: + - 0ABC8B358D4D85386822B456F8767860 + method: PUT + uri: https://searchbbd1469.search.windows.net/indexes('hotels')?api-version=2019-05-06-Preview + response: + body: + string: '{"@odata.context":"https://searchbbd1469.search.windows.net/$metadata#indexes/$entity","@odata.etag":"\"0x8D7ED714695F21D\"","name":"hotels","defaultScoringProfile":null,"fields":[{"name":"hotelId","type":"Edm.String","searchable":false,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":true,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"baseRate","type":"Edm.Double","searchable":false,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]}],"scoringProfiles":[],"corsOptions":{"allowedOrigins":["*"],"maxAgeInSeconds":60},"suggesters":[],"analyzers":[],"tokenizers":[],"tokenFilters":[],"charFilters":[],"encryptionKey":null,"similarity":null}' + headers: + cache-control: + - no-cache + content-length: + - '815' + content-type: + - application/json; odata.metadata=minimal + date: + - Fri, 01 May 2020 01:45:06 GMT + elapsed-time: + - '104' + etag: + - W/"0x8D7ED714695F21D" + expires: + - '-1' + odata-version: + - '4.0' + pragma: + - no-cache + preference-applied: + - odata.include-annotations="*" + request-id: + - 629611e8-8b4d-11ea-ad52-2816a845e8c6 + strict-transport-security: + - max-age=15724800; includeSubDomains + vary: + - Accept-Encoding + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json;odata.metadata=minimal + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '0' + If-Match: + - '"0x8D7ED714678528F"' + User-Agent: + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Windows-10-10.0.17763-SP0) + api-key: + - 0ABC8B358D4D85386822B456F8767860 + method: DELETE + uri: https://searchbbd1469.search.windows.net/indexes('hotels')?api-version=2019-05-06-Preview + response: + body: + string: '{"error":{"code":"","message":"The precondition given in one of the + request headers evaluated to false. No change was made to the resource from + this request."}}' + headers: + cache-control: + - no-cache + content-language: + - en + content-length: + - '160' + content-type: + - application/json; odata.metadata=minimal + date: + - Fri, 01 May 2020 01:45:06 GMT + elapsed-time: + - '15' + expires: + - '-1' + odata-version: + - '4.0' + pragma: + - no-cache + preference-applied: + - odata.include-annotations="*" + request-id: + - 62b2aff8-8b4d-11ea-8440-2816a845e8c6 + strict-transport-security: + - max-age=15724800; includeSubDomains + status: + code: 412 + message: Precondition Failed +version: 1 diff --git a/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_delete_skillset.yaml b/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_delete_skillset.yaml index 770a07d27928..a0dc0ccf8f6b 100644 --- a/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_delete_skillset.yaml +++ b/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_delete_skillset.yaml @@ -17,12 +17,12 @@ interactions: User-Agent: - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - 087A7701FFB3C244149D325EC80633AE + - 9715B5769069781F16C928BBC2605D8E method: POST uri: https://search31bf0faa.search.windows.net/skillsets?api-version=2019-05-06-Preview response: body: - string: '{"@odata.context":"https://search31bf0faa.search.windows.net/$metadata#skillsets/$entity","@odata.etag":"\"0x8D7E2387511DBBE\"","name":"test-ss","description":"desc","skills":[{"@odata.type":"#Microsoft.Skills.Text.EntityRecognitionSkill","name":null,"description":null,"context":null,"categories":[],"defaultLanguageCode":null,"minimumPrecision":null,"includeTypelessEntities":null,"inputs":[{"name":"text","source":"/document/content","sourceContext":null,"inputs":[]}],"outputs":[{"name":"organizations","targetName":"organizations"}]}],"cognitiveServices":null,"knowledgeStore":null}' + string: '{"@odata.context":"https://search31bf0faa.search.windows.net/$metadata#skillsets/$entity","@odata.etag":"\"0x8D7EC9474EB318F\"","name":"test-ss","description":"desc","skills":[{"@odata.type":"#Microsoft.Skills.Text.EntityRecognitionSkill","name":null,"description":null,"context":null,"categories":[],"defaultLanguageCode":null,"minimumPrecision":null,"includeTypelessEntities":null,"inputs":[{"name":"text","source":"/document/content","sourceContext":null,"inputs":[]}],"outputs":[{"name":"organizations","targetName":"organizations"}]}],"cognitiveServices":null,"knowledgeStore":null}' headers: cache-control: - no-cache @@ -31,11 +31,11 @@ interactions: content-type: - application/json; odata.metadata=minimal date: - - Thu, 16 Apr 2020 19:00:40 GMT + - Wed, 29 Apr 2020 23:24:25 GMT elapsed-time: - - '140' + - '56' etag: - - W/"0x8D7E2387511DBBE" + - W/"0x8D7EC9474EB318F" expires: - '-1' location: @@ -47,7 +47,7 @@ interactions: preference-applied: - odata.include-annotations="*" request-id: - - 8fd1b3a6-8014-11ea-b3b4-8c8590507855 + - 9083abcc-8a70-11ea-889b-8c8590507855 strict-transport-security: - max-age=15724800; includeSubDomains status: @@ -65,12 +65,12 @@ interactions: User-Agent: - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - 087A7701FFB3C244149D325EC80633AE + - 9715B5769069781F16C928BBC2605D8E method: GET uri: https://search31bf0faa.search.windows.net/skillsets?api-version=2019-05-06-Preview response: body: - string: '{"@odata.context":"https://search31bf0faa.search.windows.net/$metadata#skillsets","value":[{"@odata.etag":"\"0x8D7E2387511DBBE\"","name":"test-ss","description":"desc","skills":[{"@odata.type":"#Microsoft.Skills.Text.EntityRecognitionSkill","name":"#1","description":null,"context":"/document","categories":["Person","Quantity","Organization","URL","Email","Location","DateTime"],"defaultLanguageCode":"en","minimumPrecision":null,"includeTypelessEntities":null,"inputs":[{"name":"text","source":"/document/content","sourceContext":null,"inputs":[]}],"outputs":[{"name":"organizations","targetName":"organizations"}]}],"cognitiveServices":null,"knowledgeStore":null}]}' + string: '{"@odata.context":"https://search31bf0faa.search.windows.net/$metadata#skillsets","value":[{"@odata.etag":"\"0x8D7EC9474EB318F\"","name":"test-ss","description":"desc","skills":[{"@odata.type":"#Microsoft.Skills.Text.EntityRecognitionSkill","name":"#1","description":null,"context":"/document","categories":["Person","Quantity","Organization","URL","Email","Location","DateTime"],"defaultLanguageCode":"en","minimumPrecision":null,"includeTypelessEntities":null,"inputs":[{"name":"text","source":"/document/content","sourceContext":null,"inputs":[]}],"outputs":[{"name":"organizations","targetName":"organizations"}]}],"cognitiveServices":null,"knowledgeStore":null}]}' headers: cache-control: - no-cache @@ -79,9 +79,9 @@ interactions: content-type: - application/json; odata.metadata=minimal date: - - Thu, 16 Apr 2020 19:00:40 GMT + - Wed, 29 Apr 2020 23:24:25 GMT elapsed-time: - - '53' + - '26' expires: - '-1' odata-version: @@ -91,7 +91,7 @@ interactions: preference-applied: - odata.include-annotations="*" request-id: - - 8ffe221a-8014-11ea-b3b4-8c8590507855 + - 90a4d9b4-8a70-11ea-889b-8c8590507855 strict-transport-security: - max-age=15724800; includeSubDomains vary: @@ -113,7 +113,7 @@ interactions: User-Agent: - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - 087A7701FFB3C244149D325EC80633AE + - 9715B5769069781F16C928BBC2605D8E method: DELETE uri: https://search31bf0faa.search.windows.net/skillsets('test-ss')?api-version=2019-05-06-Preview response: @@ -123,15 +123,15 @@ interactions: cache-control: - no-cache date: - - Thu, 16 Apr 2020 19:00:40 GMT + - Wed, 29 Apr 2020 23:24:25 GMT elapsed-time: - - '37' + - '38' expires: - '-1' pragma: - no-cache request-id: - - 900cd0a8-8014-11ea-b3b4-8c8590507855 + - 90aece9c-8a70-11ea-889b-8c8590507855 strict-transport-security: - max-age=15724800; includeSubDomains status: @@ -149,7 +149,7 @@ interactions: User-Agent: - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - 087A7701FFB3C244149D325EC80633AE + - 9715B5769069781F16C928BBC2605D8E method: GET uri: https://search31bf0faa.search.windows.net/skillsets?api-version=2019-05-06-Preview response: @@ -163,9 +163,9 @@ interactions: content-type: - application/json; odata.metadata=minimal date: - - Thu, 16 Apr 2020 19:00:40 GMT + - Wed, 29 Apr 2020 23:24:25 GMT elapsed-time: - - '17' + - '14' expires: - '-1' odata-version: @@ -175,7 +175,7 @@ interactions: preference-applied: - odata.include-annotations="*" request-id: - - 9018bce2-8014-11ea-b3b4-8c8590507855 + - 90ba3d72-8a70-11ea-889b-8c8590507855 strict-transport-security: - max-age=15724800; includeSubDomains vary: diff --git a/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_delete_skillset_if_unchanged.yaml b/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_delete_skillset_if_unchanged.yaml new file mode 100644 index 000000000000..4da2935dfcb9 --- /dev/null +++ b/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_delete_skillset_if_unchanged.yaml @@ -0,0 +1,165 @@ +interactions: +- request: + body: '{"name": "test-ss", "description": "desc", "skills": [{"@odata.type": "#Microsoft.Skills.Text.EntityRecognitionSkill", + "inputs": [{"name": "text", "source": "/document/content"}], "outputs": [{"name": + "organizations", "targetName": "organizations"}]}]}' + headers: + Accept: + - application/json;odata.metadata=minimal + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '252' + Content-Type: + - application/json + User-Agent: + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Windows-10-10.0.17763-SP0) + api-key: + - E5E890D66B801E7867C9E374922FC838 + method: POST + uri: https://search21f914e4.search.windows.net/skillsets?api-version=2019-05-06-Preview + response: + body: + string: '{"@odata.context":"https://search21f914e4.search.windows.net/$metadata#skillsets/$entity","@odata.etag":"\"0x8D7ED716DB3B0F7\"","name":"test-ss","description":"desc","skills":[{"@odata.type":"#Microsoft.Skills.Text.EntityRecognitionSkill","name":null,"description":null,"context":null,"categories":[],"defaultLanguageCode":null,"minimumPrecision":null,"includeTypelessEntities":null,"inputs":[{"name":"text","source":"/document/content","sourceContext":null,"inputs":[]}],"outputs":[{"name":"organizations","targetName":"organizations"}]}],"cognitiveServices":null,"knowledgeStore":null}' + headers: + cache-control: + - no-cache + content-length: + - '587' + content-type: + - application/json; odata.metadata=minimal + date: + - Fri, 01 May 2020 01:46:12 GMT + elapsed-time: + - '37' + etag: + - W/"0x8D7ED716DB3B0F7" + expires: + - '-1' + location: + - https://search21f914e4.search.windows.net/skillsets('test-ss')?api-version=2019-05-06-Preview + odata-version: + - '4.0' + pragma: + - no-cache + preference-applied: + - odata.include-annotations="*" + request-id: + - 8979c398-8b4d-11ea-879a-2816a845e8c6 + strict-transport-security: + - max-age=15724800; includeSubDomains + status: + code: 201 + message: Created +- request: + body: '{"name": "test-ss", "description": "updated", "skills": [{"@odata.type": + "#Microsoft.Skills.Text.EntityRecognitionSkill", "inputs": [{"name": "text", + "source": "/document/content"}], "outputs": [{"name": "organizations", "targetName": + "organizations"}]}]}' + headers: + Accept: + - application/json;odata.metadata=minimal + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '255' + Content-Type: + - application/json + Prefer: + - return=representation + User-Agent: + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Windows-10-10.0.17763-SP0) + api-key: + - E5E890D66B801E7867C9E374922FC838 + method: PUT + uri: https://search21f914e4.search.windows.net/skillsets('test-ss')?api-version=2019-05-06-Preview + response: + body: + string: '{"@odata.context":"https://search21f914e4.search.windows.net/$metadata#skillsets/$entity","@odata.etag":"\"0x8D7ED716DCDF47B\"","name":"test-ss","description":"updated","skills":[{"@odata.type":"#Microsoft.Skills.Text.EntityRecognitionSkill","name":null,"description":null,"context":null,"categories":[],"defaultLanguageCode":null,"minimumPrecision":null,"includeTypelessEntities":null,"inputs":[{"name":"text","source":"/document/content","sourceContext":null,"inputs":[]}],"outputs":[{"name":"organizations","targetName":"organizations"}]}],"cognitiveServices":null,"knowledgeStore":null}' + headers: + cache-control: + - no-cache + content-length: + - '590' + content-type: + - application/json; odata.metadata=minimal + date: + - Fri, 01 May 2020 01:46:12 GMT + elapsed-time: + - '52' + etag: + - W/"0x8D7ED716DCDF47B" + expires: + - '-1' + odata-version: + - '4.0' + pragma: + - no-cache + preference-applied: + - odata.include-annotations="*" + request-id: + - 89ce1288-8b4d-11ea-973d-2816a845e8c6 + strict-transport-security: + - max-age=15724800; includeSubDomains + vary: + - Accept-Encoding + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json;odata.metadata=minimal + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '0' + If-Match: + - '"0x8D7ED716DB3B0F7"' + User-Agent: + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Windows-10-10.0.17763-SP0) + api-key: + - E5E890D66B801E7867C9E374922FC838 + method: DELETE + uri: https://search21f914e4.search.windows.net/skillsets('test-ss')?api-version=2019-05-06-Preview + response: + body: + string: '{"error":{"code":"","message":"The precondition given in one of the + request headers evaluated to false. No change was made to the resource from + this request."}}' + headers: + cache-control: + - no-cache + content-language: + - en + content-length: + - '160' + content-type: + - application/json; odata.metadata=minimal + date: + - Fri, 01 May 2020 01:46:12 GMT + elapsed-time: + - '10' + expires: + - '-1' + odata-version: + - '4.0' + pragma: + - no-cache + preference-applied: + - odata.include-annotations="*" + request-id: + - 89e92918-8b4d-11ea-882a-2816a845e8c6 + strict-transport-security: + - max-age=15724800; includeSubDomains + status: + code: 412 + message: Precondition Failed +version: 1 diff --git a/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_delete_synonym_map.yaml b/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_delete_synonym_map.yaml index 119ffdcbe25c..9eec4f287ded 100644 --- a/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_delete_synonym_map.yaml +++ b/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_delete_synonym_map.yaml @@ -16,12 +16,12 @@ interactions: User-Agent: - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - 94F56F2BCE57066C2CF1D397003184BF + - 14E7C5E27E195E2E30A41D7A548E964C method: POST uri: https://search640d10f9.search.windows.net/synonymmaps?api-version=2019-05-06-Preview response: body: - string: '{"@odata.context":"https://search640d10f9.search.windows.net/$metadata#synonymmaps/$entity","@odata.etag":"\"0x8D7E09662EC45D0\"","name":"test-syn-map","format":"solr","synonyms":"USA, + string: '{"@odata.context":"https://search640d10f9.search.windows.net/$metadata#synonymmaps/$entity","@odata.etag":"\"0x8D7EC944ADA1B1D\"","name":"test-syn-map","format":"solr","synonyms":"USA, United States, United States of America\nWashington, Wash. => WA","encryptionKey":null}' headers: cache-control: @@ -31,11 +31,11 @@ interactions: content-type: - application/json; odata.metadata=minimal date: - - Tue, 14 Apr 2020 17:07:59 GMT + - Wed, 29 Apr 2020 23:23:15 GMT elapsed-time: - - '74' + - '34' etag: - - W/"0x8D7E09662EC45D0" + - W/"0x8D7EC944ADA1B1D" expires: - '-1' location: @@ -47,7 +47,7 @@ interactions: preference-applied: - odata.include-annotations="*" request-id: - - 7e996956-7e72-11ea-b91e-8c8590507855 + - 66795110-8a70-11ea-889b-8c8590507855 strict-transport-security: - max-age=15724800; includeSubDomains status: @@ -65,12 +65,12 @@ interactions: User-Agent: - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - 94F56F2BCE57066C2CF1D397003184BF + - 14E7C5E27E195E2E30A41D7A548E964C method: GET uri: https://search640d10f9.search.windows.net/synonymmaps?api-version=2019-05-06-Preview response: body: - string: '{"@odata.context":"https://search640d10f9.search.windows.net/$metadata#synonymmaps","value":[{"@odata.etag":"\"0x8D7E09662EC45D0\"","name":"test-syn-map","format":"solr","synonyms":"USA, + string: '{"@odata.context":"https://search640d10f9.search.windows.net/$metadata#synonymmaps","value":[{"@odata.etag":"\"0x8D7EC944ADA1B1D\"","name":"test-syn-map","format":"solr","synonyms":"USA, United States, United States of America\nWashington, Wash. => WA","encryptionKey":null}]}' headers: cache-control: @@ -80,9 +80,9 @@ interactions: content-type: - application/json; odata.metadata=minimal date: - - Tue, 14 Apr 2020 17:07:59 GMT + - Wed, 29 Apr 2020 23:23:15 GMT elapsed-time: - - '40' + - '9' expires: - '-1' odata-version: @@ -92,7 +92,7 @@ interactions: preference-applied: - odata.include-annotations="*" request-id: - - 7ebbc640-7e72-11ea-b91e-8c8590507855 + - 66941716-8a70-11ea-889b-8c8590507855 strict-transport-security: - max-age=15724800; includeSubDomains vary: @@ -114,7 +114,7 @@ interactions: User-Agent: - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - 94F56F2BCE57066C2CF1D397003184BF + - 14E7C5E27E195E2E30A41D7A548E964C method: DELETE uri: https://search640d10f9.search.windows.net/synonymmaps('test-syn-map')?api-version=2019-05-06-Preview response: @@ -124,15 +124,15 @@ interactions: cache-control: - no-cache date: - - Tue, 14 Apr 2020 17:07:59 GMT + - Wed, 29 Apr 2020 23:23:15 GMT elapsed-time: - - '38' + - '15' expires: - '-1' pragma: - no-cache request-id: - - 7ec85090-7e72-11ea-b91e-8c8590507855 + - 669b6606-8a70-11ea-889b-8c8590507855 strict-transport-security: - max-age=15724800; includeSubDomains status: @@ -150,7 +150,7 @@ interactions: User-Agent: - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - 94F56F2BCE57066C2CF1D397003184BF + - 14E7C5E27E195E2E30A41D7A548E964C method: GET uri: https://search640d10f9.search.windows.net/synonymmaps?api-version=2019-05-06-Preview response: @@ -164,9 +164,9 @@ interactions: content-type: - application/json; odata.metadata=minimal date: - - Tue, 14 Apr 2020 17:07:59 GMT + - Wed, 29 Apr 2020 23:23:15 GMT elapsed-time: - - '8' + - '4' expires: - '-1' odata-version: @@ -176,7 +176,7 @@ interactions: preference-applied: - odata.include-annotations="*" request-id: - - 7ed4640c-7e72-11ea-b91e-8c8590507855 + - 66a40cca-8a70-11ea-889b-8c8590507855 strict-transport-security: - max-age=15724800; includeSubDomains vary: diff --git a/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_delete_synonym_map_if_unchanged.yaml b/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_delete_synonym_map_if_unchanged.yaml new file mode 100644 index 000000000000..6ff7fb694176 --- /dev/null +++ b/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_delete_synonym_map_if_unchanged.yaml @@ -0,0 +1,164 @@ +interactions: +- request: + body: '{"name": "test-syn-map", "format": "solr", "synonyms": "USA, United States, + United States of America\nWashington, Wash. => WA"}' + headers: + Accept: + - application/json;odata.metadata=minimal + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '127' + Content-Type: + - application/json + User-Agent: + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Windows-10-10.0.17763-SP0) + api-key: + - 3C7456D14A4C1D58E3B5C8338B829E8D + method: POST + uri: https://search654a1633.search.windows.net/synonymmaps?api-version=2019-05-06-Preview + response: + body: + string: '{"@odata.context":"https://search654a1633.search.windows.net/$metadata#synonymmaps/$entity","@odata.etag":"\"0x8D7ED715978F503\"","name":"test-syn-map","format":"solr","synonyms":"USA, + United States, United States of America\nWashington, Wash. => WA","encryptionKey":null}' + headers: + cache-control: + - no-cache + content-length: + - '272' + content-type: + - application/json; odata.metadata=minimal + date: + - Fri, 01 May 2020 01:45:38 GMT + elapsed-time: + - '21' + etag: + - W/"0x8D7ED715978F503" + expires: + - '-1' + location: + - https://search654a1633.search.windows.net/synonymmaps('test-syn-map')?api-version=2019-05-06-Preview + odata-version: + - '4.0' + pragma: + - no-cache + preference-applied: + - odata.include-annotations="*" + request-id: + - 754dfc4c-8b4d-11ea-abb2-2816a845e8c6 + strict-transport-security: + - max-age=15724800; includeSubDomains + status: + code: 201 + message: Created +- request: + body: '{"name": "test-syn-map", "format": "solr", "synonyms": "Washington, Wash. + => WA"}' + headers: + Accept: + - application/json;odata.metadata=minimal + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '81' + Content-Type: + - application/json + Prefer: + - return=representation + User-Agent: + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Windows-10-10.0.17763-SP0) + api-key: + - 3C7456D14A4C1D58E3B5C8338B829E8D + method: PUT + uri: https://search654a1633.search.windows.net/synonymmaps('test-syn-map')?api-version=2019-05-06-Preview + response: + body: + string: '{"@odata.context":"https://search654a1633.search.windows.net/$metadata#synonymmaps/$entity","@odata.etag":"\"0x8D7ED71598DB954\"","name":"test-syn-map","format":"solr","synonyms":"Washington, + Wash. => WA","encryptionKey":null}' + headers: + cache-control: + - no-cache + content-length: + - '226' + content-type: + - application/json; odata.metadata=minimal + date: + - Fri, 01 May 2020 01:45:38 GMT + elapsed-time: + - '23' + etag: + - W/"0x8D7ED71598DB954" + expires: + - '-1' + odata-version: + - '4.0' + pragma: + - no-cache + preference-applied: + - odata.include-annotations="*" + request-id: + - 75922b10-8b4d-11ea-b5a8-2816a845e8c6 + strict-transport-security: + - max-age=15724800; includeSubDomains + vary: + - Accept-Encoding + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json;odata.metadata=minimal + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '0' + If-Match: + - '"0x8D7ED715978F503"' + User-Agent: + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Windows-10-10.0.17763-SP0) + api-key: + - 3C7456D14A4C1D58E3B5C8338B829E8D + method: DELETE + uri: https://search654a1633.search.windows.net/synonymmaps('test-syn-map')?api-version=2019-05-06-Preview + response: + body: + string: '{"error":{"code":"","message":"The precondition given in one of the + request headers evaluated to false. No change was made to the resource from + this request."}}' + headers: + cache-control: + - no-cache + content-language: + - en + content-length: + - '160' + content-type: + - application/json; odata.metadata=minimal + date: + - Fri, 01 May 2020 01:45:38 GMT + elapsed-time: + - '4' + expires: + - '-1' + odata-version: + - '4.0' + pragma: + - no-cache + preference-applied: + - odata.include-annotations="*" + request-id: + - 75a7793e-8b4d-11ea-9310-2816a845e8c6 + strict-transport-security: + - max-age=15724800; includeSubDomains + status: + code: 412 + message: Precondition Failed +version: 1 diff --git a/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_get_datasource.yaml b/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_get_datasource.yaml new file mode 100644 index 000000000000..2aef0705fc74 --- /dev/null +++ b/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_get_datasource.yaml @@ -0,0 +1,104 @@ +interactions: +- request: + body: '{"name": "sample-datasource", "type": "azureblob", "credentials": {"connectionString": + "DefaultEndpointsProtocol=https;AccountName=storagename;AccountKey=NzhL3hKZbJBuJ2484dPTR+xF30kYaWSSCbs2BzLgVVI1woqeST/1IgqaLm6QAOTxtGvxctSNbIR/1hW8yH+bJg==;EndpointSuffix=core.windows.net"}, + "container": {"name": "searchcontainer"}}' + headers: + Accept: + - application/json;odata.metadata=minimal + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '319' + Content-Type: + - application/json + User-Agent: + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) + api-key: + - E49D04111DCB1738A561CC9902D552FE + method: POST + uri: https://search22270f37.search.windows.net/datasources?api-version=2019-05-06-Preview + response: + body: + string: '{"@odata.context":"https://search22270f37.search.windows.net/$metadata#datasources/$entity","@odata.etag":"\"0x8D7EC94AADF76DE\"","name":"sample-datasource","description":null,"type":"azureblob","subtype":null,"credentials":{"connectionString":null},"container":{"name":"searchcontainer","query":null},"dataChangeDetectionPolicy":null,"dataDeletionDetectionPolicy":null}' + headers: + cache-control: + - no-cache + content-length: + - '370' + content-type: + - application/json; odata.metadata=minimal + date: + - Wed, 29 Apr 2020 23:25:55 GMT + elapsed-time: + - '47' + etag: + - W/"0x8D7EC94AADF76DE" + expires: + - '-1' + location: + - https://search22270f37.search.windows.net/datasources('sample-datasource')?api-version=2019-05-06-Preview + odata-version: + - '4.0' + pragma: + - no-cache + preference-applied: + - odata.include-annotations="*" + request-id: + - c677b57a-8a70-11ea-889b-8c8590507855 + strict-transport-security: + - max-age=15724800; includeSubDomains + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json;odata.metadata=minimal + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) + api-key: + - E49D04111DCB1738A561CC9902D552FE + method: GET + uri: https://search22270f37.search.windows.net/datasources('sample-datasource')?api-version=2019-05-06-Preview + response: + body: + string: '{"@odata.context":"https://search22270f37.search.windows.net/$metadata#datasources/$entity","@odata.etag":"\"0x8D7EC94AADF76DE\"","name":"sample-datasource","description":null,"type":"azureblob","subtype":null,"credentials":{"connectionString":null},"container":{"name":"searchcontainer","query":null},"dataChangeDetectionPolicy":null,"dataDeletionDetectionPolicy":null}' + headers: + cache-control: + - no-cache + content-length: + - '370' + content-type: + - application/json; odata.metadata=minimal + date: + - Wed, 29 Apr 2020 23:25:55 GMT + elapsed-time: + - '28' + etag: + - W/"0x8D7EC94AADF76DE" + expires: + - '-1' + odata-version: + - '4.0' + pragma: + - no-cache + preference-applied: + - odata.include-annotations="*" + request-id: + - c696f4d0-8a70-11ea-889b-8c8590507855 + strict-transport-security: + - max-age=15724800; includeSubDomains + vary: + - Accept-Encoding + status: + code: 200 + message: OK +version: 1 diff --git a/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_get_index.yaml b/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_get_index.yaml index d4a93dbb70dc..17f3f73b85f1 100644 --- a/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_get_index.yaml +++ b/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_get_index.yaml @@ -9,14 +9,14 @@ interactions: Connection: - keep-alive User-Agent: - - azsdk-python-search-documents/1.0.0b2 Python/3.6.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - 9C54CA553873316FA93CC0850BF1B589 + - 61B995D646A110CCEC888B68E298FD85 method: GET uri: https://searchda450d24.search.windows.net/indexes('drgqefsg')?api-version=2019-05-06-Preview response: body: - string: '{"@odata.context":"https://searchda450d24.search.windows.net/$metadata#indexes/$entity","@odata.etag":"\"0x8D7D59A728B9988\"","name":"drgqefsg","defaultScoringProfile":null,"fields":[{"name":"hotelId","type":"Edm.String","searchable":false,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":true,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"hotelName","type":"Edm.String","searchable":true,"filterable":true,"retrievable":true,"sortable":true,"facetable":false,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"description","type":"Edm.String","searchable":true,"filterable":false,"retrievable":true,"sortable":false,"facetable":false,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":"en.lucene","synonymMaps":[]},{"name":"descriptionFr","type":"Edm.String","searchable":true,"filterable":false,"retrievable":true,"sortable":false,"facetable":false,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":"fr.lucene","synonymMaps":[]},{"name":"category","type":"Edm.String","searchable":true,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"tags","type":"Collection(Edm.String)","searchable":true,"filterable":true,"retrievable":true,"sortable":false,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"parkingIncluded","type":"Edm.Boolean","searchable":false,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"smokingAllowed","type":"Edm.Boolean","searchable":false,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"lastRenovationDate","type":"Edm.DateTimeOffset","searchable":false,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"rating","type":"Edm.Int32","searchable":false,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"location","type":"Edm.GeographyPoint","searchable":false,"filterable":true,"retrievable":true,"sortable":true,"facetable":false,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"address","type":"Edm.ComplexType","fields":[{"name":"streetAddress","type":"Edm.String","searchable":true,"filterable":false,"retrievable":true,"sortable":false,"facetable":false,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"city","type":"Edm.String","searchable":true,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"stateProvince","type":"Edm.String","searchable":true,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"country","type":"Edm.String","searchable":true,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"postalCode","type":"Edm.String","searchable":true,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]}]},{"name":"rooms","type":"Collection(Edm.ComplexType)","fields":[{"name":"description","type":"Edm.String","searchable":true,"filterable":false,"retrievable":true,"sortable":false,"facetable":false,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":"en.lucene","synonymMaps":[]},{"name":"descriptionFr","type":"Edm.String","searchable":true,"filterable":false,"retrievable":true,"sortable":false,"facetable":false,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":"fr.lucene","synonymMaps":[]},{"name":"type","type":"Edm.String","searchable":true,"filterable":true,"retrievable":true,"sortable":false,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"baseRate","type":"Edm.Double","searchable":false,"filterable":true,"retrievable":true,"sortable":false,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"bedOptions","type":"Edm.String","searchable":true,"filterable":true,"retrievable":true,"sortable":false,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"sleepsCount","type":"Edm.Int32","searchable":false,"filterable":true,"retrievable":true,"sortable":false,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"smokingAllowed","type":"Edm.Boolean","searchable":false,"filterable":true,"retrievable":true,"sortable":false,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"tags","type":"Collection(Edm.String)","searchable":true,"filterable":true,"retrievable":true,"sortable":false,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]}]}],"scoringProfiles":[{"name":"nearest","functionAggregation":"sum","text":null,"functions":[{"fieldName":"location","interpolation":"linear","type":"distance","boost":2.0,"freshness":null,"magnitude":null,"distance":{"referencePointParameter":"myloc","boostingDistance":100.0},"tag":null}]}],"corsOptions":null,"suggesters":[{"name":"sg","searchMode":"analyzingInfixMatching","sourceFields":["description","hotelName"]}],"analyzers":[],"tokenizers":[],"tokenFilters":[],"charFilters":[],"encryptionKey":null,"similarity":null}' + string: '{"@odata.context":"https://searchda450d24.search.windows.net/$metadata#indexes/$entity","@odata.etag":"\"0x8D7EC941B4C6FB2\"","name":"drgqefsg","defaultScoringProfile":null,"fields":[{"name":"hotelId","type":"Edm.String","searchable":false,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":true,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"hotelName","type":"Edm.String","searchable":true,"filterable":true,"retrievable":true,"sortable":true,"facetable":false,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"description","type":"Edm.String","searchable":true,"filterable":false,"retrievable":true,"sortable":false,"facetable":false,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":"en.lucene","synonymMaps":[]},{"name":"descriptionFr","type":"Edm.String","searchable":true,"filterable":false,"retrievable":true,"sortable":false,"facetable":false,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":"fr.lucene","synonymMaps":[]},{"name":"category","type":"Edm.String","searchable":true,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"tags","type":"Collection(Edm.String)","searchable":true,"filterable":true,"retrievable":true,"sortable":false,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"parkingIncluded","type":"Edm.Boolean","searchable":false,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"smokingAllowed","type":"Edm.Boolean","searchable":false,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"lastRenovationDate","type":"Edm.DateTimeOffset","searchable":false,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"rating","type":"Edm.Int32","searchable":false,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"location","type":"Edm.GeographyPoint","searchable":false,"filterable":true,"retrievable":true,"sortable":true,"facetable":false,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"address","type":"Edm.ComplexType","fields":[{"name":"streetAddress","type":"Edm.String","searchable":true,"filterable":false,"retrievable":true,"sortable":false,"facetable":false,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"city","type":"Edm.String","searchable":true,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"stateProvince","type":"Edm.String","searchable":true,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"country","type":"Edm.String","searchable":true,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"postalCode","type":"Edm.String","searchable":true,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]}]},{"name":"rooms","type":"Collection(Edm.ComplexType)","fields":[{"name":"description","type":"Edm.String","searchable":true,"filterable":false,"retrievable":true,"sortable":false,"facetable":false,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":"en.lucene","synonymMaps":[]},{"name":"descriptionFr","type":"Edm.String","searchable":true,"filterable":false,"retrievable":true,"sortable":false,"facetable":false,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":"fr.lucene","synonymMaps":[]},{"name":"type","type":"Edm.String","searchable":true,"filterable":true,"retrievable":true,"sortable":false,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"baseRate","type":"Edm.Double","searchable":false,"filterable":true,"retrievable":true,"sortable":false,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"bedOptions","type":"Edm.String","searchable":true,"filterable":true,"retrievable":true,"sortable":false,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"sleepsCount","type":"Edm.Int32","searchable":false,"filterable":true,"retrievable":true,"sortable":false,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"smokingAllowed","type":"Edm.Boolean","searchable":false,"filterable":true,"retrievable":true,"sortable":false,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"tags","type":"Collection(Edm.String)","searchable":true,"filterable":true,"retrievable":true,"sortable":false,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]}]}],"scoringProfiles":[{"name":"nearest","functionAggregation":"sum","text":null,"functions":[{"fieldName":"location","interpolation":"linear","type":"distance","boost":2.0,"freshness":null,"magnitude":null,"distance":{"referencePointParameter":"myloc","boostingDistance":100.0},"tag":null}]}],"corsOptions":null,"suggesters":[{"name":"sg","searchMode":"analyzingInfixMatching","sourceFields":["description","hotelName"]}],"analyzers":[],"tokenizers":[],"tokenFilters":[],"charFilters":[],"encryptionKey":null,"similarity":null}' headers: cache-control: - no-cache @@ -25,11 +25,11 @@ interactions: content-type: - application/json; odata.metadata=minimal date: - - Tue, 31 Mar 2020 17:39:26 GMT + - Wed, 29 Apr 2020 23:21:59 GMT elapsed-time: - - '97' + - '46' etag: - - W/"0x8D7D59A728B9988" + - W/"0x8D7EC941B4C6FB2" expires: - '-1' odata-version: @@ -39,7 +39,7 @@ interactions: preference-applied: - odata.include-annotations="*" request-id: - - 91196cae-7376-11ea-b7c8-5cf37071153c + - 39421e20-8a70-11ea-889b-8c8590507855 strict-transport-security: - max-age=15724800; includeSubDomains vary: diff --git a/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_get_index_statistics.yaml b/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_get_index_statistics.yaml index 4d2a29dba29e..0a3b7252bcc0 100644 --- a/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_get_index_statistics.yaml +++ b/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_get_index_statistics.yaml @@ -9,9 +9,9 @@ interactions: Connection: - keep-alive User-Agent: - - azsdk-python-search-documents/1.0.0b2 Python/3.6.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - ACAB029D710AB15E3868655BF52F0338 + - 6FBCE200FF6D960D275576AD2F8FB6F7 method: GET uri: https://search86b411ce.search.windows.net/indexes('drgqefsg')/search.stats?api-version=2019-05-06-Preview response: @@ -25,9 +25,9 @@ interactions: content-type: - application/json; odata.metadata=minimal date: - - Tue, 31 Mar 2020 17:39:40 GMT + - Wed, 29 Apr 2020 23:22:11 GMT elapsed-time: - - '29' + - '105' expires: - '-1' odata-version: @@ -37,7 +37,7 @@ interactions: preference-applied: - odata.include-annotations="*" request-id: - - 99ee331e-7376-11ea-847d-5cf37071153c + - 405f58da-8a70-11ea-889b-8c8590507855 strict-transport-security: - max-age=15724800; includeSubDomains vary: diff --git a/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_get_indexes.yaml b/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_get_indexes.yaml deleted file mode 100644 index 1af053a2b35e..000000000000 --- a/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_get_indexes.yaml +++ /dev/null @@ -1,48 +0,0 @@ -interactions: -- request: - body: null - headers: - Accept: - - application/json;odata.metadata=minimal - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - User-Agent: - - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) - api-key: - - 60EC5C7635A4C22E1FB63E1654F5F9E6 - method: GET - uri: https://searchf5ca0dfc.search.windows.net/indexes?api-version=2019-05-06-Preview - response: - body: - string: '{"@odata.context":"https://searchf5ca0dfc.search.windows.net/$metadata#indexes","value":[{"@odata.etag":"\"0x8D7E637140B0913\"","name":"drgqefsg","defaultScoringProfile":null,"fields":[{"name":"hotelId","type":"Edm.String","searchable":false,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":true,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"hotelName","type":"Edm.String","searchable":true,"filterable":true,"retrievable":true,"sortable":true,"facetable":false,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"description","type":"Edm.String","searchable":true,"filterable":false,"retrievable":true,"sortable":false,"facetable":false,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":"en.lucene","synonymMaps":[]},{"name":"descriptionFr","type":"Edm.String","searchable":true,"filterable":false,"retrievable":true,"sortable":false,"facetable":false,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":"fr.lucene","synonymMaps":[]},{"name":"category","type":"Edm.String","searchable":true,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"tags","type":"Collection(Edm.String)","searchable":true,"filterable":true,"retrievable":true,"sortable":false,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"parkingIncluded","type":"Edm.Boolean","searchable":false,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"smokingAllowed","type":"Edm.Boolean","searchable":false,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"lastRenovationDate","type":"Edm.DateTimeOffset","searchable":false,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"rating","type":"Edm.Int32","searchable":false,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"location","type":"Edm.GeographyPoint","searchable":false,"filterable":true,"retrievable":true,"sortable":true,"facetable":false,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"address","type":"Edm.ComplexType","fields":[{"name":"streetAddress","type":"Edm.String","searchable":true,"filterable":false,"retrievable":true,"sortable":false,"facetable":false,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"city","type":"Edm.String","searchable":true,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"stateProvince","type":"Edm.String","searchable":true,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"country","type":"Edm.String","searchable":true,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"postalCode","type":"Edm.String","searchable":true,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]}]},{"name":"rooms","type":"Collection(Edm.ComplexType)","fields":[{"name":"description","type":"Edm.String","searchable":true,"filterable":false,"retrievable":true,"sortable":false,"facetable":false,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":"en.lucene","synonymMaps":[]},{"name":"descriptionFr","type":"Edm.String","searchable":true,"filterable":false,"retrievable":true,"sortable":false,"facetable":false,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":"fr.lucene","synonymMaps":[]},{"name":"type","type":"Edm.String","searchable":true,"filterable":true,"retrievable":true,"sortable":false,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"baseRate","type":"Edm.Double","searchable":false,"filterable":true,"retrievable":true,"sortable":false,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"bedOptions","type":"Edm.String","searchable":true,"filterable":true,"retrievable":true,"sortable":false,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"sleepsCount","type":"Edm.Int32","searchable":false,"filterable":true,"retrievable":true,"sortable":false,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"smokingAllowed","type":"Edm.Boolean","searchable":false,"filterable":true,"retrievable":true,"sortable":false,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"tags","type":"Collection(Edm.String)","searchable":true,"filterable":true,"retrievable":true,"sortable":false,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]}]}],"scoringProfiles":[{"name":"nearest","functionAggregation":"sum","text":null,"functions":[{"fieldName":"location","interpolation":"linear","type":"distance","boost":2.0,"freshness":null,"magnitude":null,"distance":{"referencePointParameter":"myloc","boostingDistance":100.0},"tag":null}]}],"corsOptions":null,"suggesters":[{"name":"sg","searchMode":"analyzingInfixMatching","sourceFields":["description","hotelName"]}],"analyzers":[],"tokenizers":[],"tokenFilters":[],"charFilters":[],"encryptionKey":null,"similarity":null}]}' - headers: - cache-control: - - no-cache - content-length: - - '6160' - content-type: - - application/json; odata.metadata=minimal - date: - - Tue, 21 Apr 2020 21:00:56 GMT - elapsed-time: - - '60' - expires: - - '-1' - odata-version: - - '4.0' - pragma: - - no-cache - preference-applied: - - odata.include-annotations="*" - request-id: - - 310a3476-8413-11ea-8200-8c8590507855 - strict-transport-security: - - max-age=15724800; includeSubDomains - vary: - - Accept-Encoding - status: - code: 200 - message: OK -version: 1 diff --git a/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_get_service_statistics.yaml b/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_get_service_statistics.yaml index 7be02c73148a..de630fb0691c 100644 --- a/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_get_service_statistics.yaml +++ b/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_get_service_statistics.yaml @@ -9,9 +9,9 @@ interactions: Connection: - keep-alive User-Agent: - - azsdk-python-search-documents/1.0.0b2 Python/3.6.3 (Windows-10-10.0.18362-SP0) + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - 2DE02FBAB46B56C12A39AE889C10B52F + - 9099402AA5DD674D2F4AB5E4CFAE0073 method: GET uri: https://searchabe712a7.search.windows.net/servicestats?api-version=2019-05-06-Preview response: @@ -25,9 +25,9 @@ interactions: content-type: - application/json; odata.metadata=minimal date: - - Tue, 31 Mar 2020 17:39:50 GMT + - Wed, 29 Apr 2020 23:20:34 GMT elapsed-time: - - '98' + - '52' expires: - '-1' odata-version: @@ -37,7 +37,7 @@ interactions: preference-applied: - odata.include-annotations="*" request-id: - - 9f53a846-7376-11ea-b599-5cf37071153c + - 06b3ad20-8a70-11ea-889b-8c8590507855 strict-transport-security: - max-age=15724800; includeSubDomains vary: diff --git a/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_get_skillset.yaml b/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_get_skillset.yaml index e50988ab3f83..03483618e2dd 100644 --- a/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_get_skillset.yaml +++ b/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_get_skillset.yaml @@ -17,12 +17,12 @@ interactions: User-Agent: - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - B0B8D3551190E277946134D0668475C2 + - E526608EB11E433B65F1F2591FD92E31 method: POST uri: https://search4a30e77.search.windows.net/skillsets?api-version=2019-05-06-Preview response: body: - string: '{"@odata.context":"https://search4a30e77.search.windows.net/$metadata#skillsets/$entity","@odata.etag":"\"0x8D7E238AC1ECB0E\"","name":"test-ss","description":"desc","skills":[{"@odata.type":"#Microsoft.Skills.Text.EntityRecognitionSkill","name":null,"description":null,"context":null,"categories":[],"defaultLanguageCode":null,"minimumPrecision":null,"includeTypelessEntities":null,"inputs":[{"name":"text","source":"/document/content","sourceContext":null,"inputs":[]}],"outputs":[{"name":"organizations","targetName":"organizations"}]}],"cognitiveServices":null,"knowledgeStore":null}' + string: '{"@odata.context":"https://search4a30e77.search.windows.net/$metadata#skillsets/$entity","@odata.etag":"\"0x8D7EC947C1D56A3\"","name":"test-ss","description":"desc","skills":[{"@odata.type":"#Microsoft.Skills.Text.EntityRecognitionSkill","name":null,"description":null,"context":null,"categories":[],"defaultLanguageCode":null,"minimumPrecision":null,"includeTypelessEntities":null,"inputs":[{"name":"text","source":"/document/content","sourceContext":null,"inputs":[]}],"outputs":[{"name":"organizations","targetName":"organizations"}]}],"cognitiveServices":null,"knowledgeStore":null}' headers: cache-control: - no-cache @@ -31,11 +31,11 @@ interactions: content-type: - application/json; odata.metadata=minimal date: - - Thu, 16 Apr 2020 19:02:12 GMT + - Wed, 29 Apr 2020 23:24:37 GMT elapsed-time: - - '145' + - '62' etag: - - W/"0x8D7E238AC1ECB0E" + - W/"0x8D7EC947C1D56A3" expires: - '-1' location: @@ -47,7 +47,7 @@ interactions: preference-applied: - odata.include-annotations="*" request-id: - - c6dce302-8014-11ea-86a7-8c8590507855 + - 97b78ada-8a70-11ea-889b-8c8590507855 strict-transport-security: - max-age=15724800; includeSubDomains status: @@ -65,12 +65,12 @@ interactions: User-Agent: - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - B0B8D3551190E277946134D0668475C2 + - E526608EB11E433B65F1F2591FD92E31 method: GET uri: https://search4a30e77.search.windows.net/skillsets?api-version=2019-05-06-Preview response: body: - string: '{"@odata.context":"https://search4a30e77.search.windows.net/$metadata#skillsets","value":[{"@odata.etag":"\"0x8D7E238AC1ECB0E\"","name":"test-ss","description":"desc","skills":[{"@odata.type":"#Microsoft.Skills.Text.EntityRecognitionSkill","name":"#1","description":null,"context":"/document","categories":["Person","Quantity","Organization","URL","Email","Location","DateTime"],"defaultLanguageCode":"en","minimumPrecision":null,"includeTypelessEntities":null,"inputs":[{"name":"text","source":"/document/content","sourceContext":null,"inputs":[]}],"outputs":[{"name":"organizations","targetName":"organizations"}]}],"cognitiveServices":null,"knowledgeStore":null}]}' + string: '{"@odata.context":"https://search4a30e77.search.windows.net/$metadata#skillsets","value":[{"@odata.etag":"\"0x8D7EC947C1D56A3\"","name":"test-ss","description":"desc","skills":[{"@odata.type":"#Microsoft.Skills.Text.EntityRecognitionSkill","name":"#1","description":null,"context":"/document","categories":["Person","Quantity","Organization","URL","Email","Location","DateTime"],"defaultLanguageCode":"en","minimumPrecision":null,"includeTypelessEntities":null,"inputs":[{"name":"text","source":"/document/content","sourceContext":null,"inputs":[]}],"outputs":[{"name":"organizations","targetName":"organizations"}]}],"cognitiveServices":null,"knowledgeStore":null}]}' headers: cache-control: - no-cache @@ -79,9 +79,9 @@ interactions: content-type: - application/json; odata.metadata=minimal date: - - Thu, 16 Apr 2020 19:02:12 GMT + - Wed, 29 Apr 2020 23:24:37 GMT elapsed-time: - - '119' + - '45' expires: - '-1' odata-version: @@ -91,7 +91,7 @@ interactions: preference-applied: - odata.include-annotations="*" request-id: - - c70b584a-8014-11ea-86a7-8c8590507855 + - 97d70fb8-8a70-11ea-889b-8c8590507855 strict-transport-security: - max-age=15724800; includeSubDomains vary: @@ -111,12 +111,12 @@ interactions: User-Agent: - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - B0B8D3551190E277946134D0668475C2 + - E526608EB11E433B65F1F2591FD92E31 method: GET uri: https://search4a30e77.search.windows.net/skillsets('test-ss')?api-version=2019-05-06-Preview response: body: - string: '{"@odata.context":"https://search4a30e77.search.windows.net/$metadata#skillsets/$entity","@odata.etag":"\"0x8D7E238AC1ECB0E\"","name":"test-ss","description":"desc","skills":[{"@odata.type":"#Microsoft.Skills.Text.EntityRecognitionSkill","name":"#1","description":null,"context":"/document","categories":["Person","Quantity","Organization","URL","Email","Location","DateTime"],"defaultLanguageCode":"en","minimumPrecision":null,"includeTypelessEntities":null,"inputs":[{"name":"text","source":"/document/content","sourceContext":null,"inputs":[]}],"outputs":[{"name":"organizations","targetName":"organizations"}]}],"cognitiveServices":null,"knowledgeStore":null}' + string: '{"@odata.context":"https://search4a30e77.search.windows.net/$metadata#skillsets/$entity","@odata.etag":"\"0x8D7EC947C1D56A3\"","name":"test-ss","description":"desc","skills":[{"@odata.type":"#Microsoft.Skills.Text.EntityRecognitionSkill","name":"#1","description":null,"context":"/document","categories":["Person","Quantity","Organization","URL","Email","Location","DateTime"],"defaultLanguageCode":"en","minimumPrecision":null,"includeTypelessEntities":null,"inputs":[{"name":"text","source":"/document/content","sourceContext":null,"inputs":[]}],"outputs":[{"name":"organizations","targetName":"organizations"}]}],"cognitiveServices":null,"knowledgeStore":null}' headers: cache-control: - no-cache @@ -125,11 +125,11 @@ interactions: content-type: - application/json; odata.metadata=minimal date: - - Thu, 16 Apr 2020 19:02:12 GMT + - Wed, 29 Apr 2020 23:24:37 GMT elapsed-time: - - '16' + - '19' etag: - - W/"0x8D7E238AC1ECB0E" + - W/"0x8D7EC947C1D56A3" expires: - '-1' odata-version: @@ -139,7 +139,7 @@ interactions: preference-applied: - odata.include-annotations="*" request-id: - - c72455c0-8014-11ea-86a7-8c8590507855 + - 97e45696-8a70-11ea-889b-8c8590507855 strict-transport-security: - max-age=15724800; includeSubDomains vary: diff --git a/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_get_skillsets.yaml b/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_get_skillsets.yaml index 6870a602aa83..cda94fbcc32d 100644 --- a/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_get_skillsets.yaml +++ b/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_get_skillsets.yaml @@ -18,12 +18,12 @@ interactions: User-Agent: - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - 8B5A109F851B02CD2DBF3C4C91B03EAD + - B6B0828C8EC0450A923A37B8076FB654 method: POST uri: https://search138d0eea.search.windows.net/skillsets?api-version=2019-05-06-Preview response: body: - string: '{"@odata.context":"https://search138d0eea.search.windows.net/$metadata#skillsets/$entity","@odata.etag":"\"0x8D7E63692E386AC\"","name":"test-ss-1","description":"desc1","skills":[{"@odata.type":"#Microsoft.Skills.Text.EntityRecognitionSkill","name":null,"description":null,"context":null,"categories":[],"defaultLanguageCode":null,"minimumPrecision":null,"includeTypelessEntities":null,"inputs":[{"name":"text","source":"/document/content","sourceContext":null,"inputs":[]}],"outputs":[{"name":"organizations","targetName":"organizations"}]}],"cognitiveServices":null,"knowledgeStore":null}' + string: '{"@odata.context":"https://search138d0eea.search.windows.net/$metadata#skillsets/$entity","@odata.etag":"\"0x8D7EC948D7A3762\"","name":"test-ss-1","description":"desc1","skills":[{"@odata.type":"#Microsoft.Skills.Text.EntityRecognitionSkill","name":null,"description":null,"context":null,"categories":[],"defaultLanguageCode":null,"minimumPrecision":null,"includeTypelessEntities":null,"inputs":[{"name":"text","source":"/document/content","sourceContext":null,"inputs":[]}],"outputs":[{"name":"organizations","targetName":"organizations"}]}],"cognitiveServices":null,"knowledgeStore":null}' headers: cache-control: - no-cache @@ -32,11 +32,11 @@ interactions: content-type: - application/json; odata.metadata=minimal date: - - Tue, 21 Apr 2020 20:57:16 GMT + - Wed, 29 Apr 2020 23:25:06 GMT elapsed-time: - - '124' + - '448' etag: - - W/"0x8D7E63692E386AC" + - W/"0x8D7EC948D7A3762" expires: - '-1' location: @@ -48,7 +48,7 @@ interactions: preference-applied: - odata.include-annotations="*" request-id: - - ada6b5d2-8412-11ea-a894-8c8590507855 + - a8d85132-8a70-11ea-889b-8c8590507855 strict-transport-security: - max-age=15724800; includeSubDomains status: @@ -73,12 +73,12 @@ interactions: User-Agent: - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - 8B5A109F851B02CD2DBF3C4C91B03EAD + - B6B0828C8EC0450A923A37B8076FB654 method: POST uri: https://search138d0eea.search.windows.net/skillsets?api-version=2019-05-06-Preview response: body: - string: '{"@odata.context":"https://search138d0eea.search.windows.net/$metadata#skillsets/$entity","@odata.etag":"\"0x8D7E63692F0F69A\"","name":"test-ss-2","description":"desc2","skills":[{"@odata.type":"#Microsoft.Skills.Text.EntityRecognitionSkill","name":null,"description":null,"context":null,"categories":[],"defaultLanguageCode":null,"minimumPrecision":null,"includeTypelessEntities":null,"inputs":[{"name":"text","source":"/document/content","sourceContext":null,"inputs":[]}],"outputs":[{"name":"organizations","targetName":"organizations"}]}],"cognitiveServices":null,"knowledgeStore":null}' + string: '{"@odata.context":"https://search138d0eea.search.windows.net/$metadata#skillsets/$entity","@odata.etag":"\"0x8D7EC948D8BEDF0\"","name":"test-ss-2","description":"desc2","skills":[{"@odata.type":"#Microsoft.Skills.Text.EntityRecognitionSkill","name":null,"description":null,"context":null,"categories":[],"defaultLanguageCode":null,"minimumPrecision":null,"includeTypelessEntities":null,"inputs":[{"name":"text","source":"/document/content","sourceContext":null,"inputs":[]}],"outputs":[{"name":"organizations","targetName":"organizations"}]}],"cognitiveServices":null,"knowledgeStore":null}' headers: cache-control: - no-cache @@ -87,11 +87,11 @@ interactions: content-type: - application/json; odata.metadata=minimal date: - - Tue, 21 Apr 2020 20:57:16 GMT + - Wed, 29 Apr 2020 23:25:06 GMT elapsed-time: - - '64' + - '50' etag: - - W/"0x8D7E63692F0F69A" + - W/"0x8D7EC948D8BEDF0" expires: - '-1' location: @@ -103,7 +103,7 @@ interactions: preference-applied: - odata.include-annotations="*" request-id: - - add046f4-8412-11ea-a894-8c8590507855 + - a937a1d2-8a70-11ea-889b-8c8590507855 strict-transport-security: - max-age=15724800; includeSubDomains status: @@ -121,12 +121,12 @@ interactions: User-Agent: - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - 8B5A109F851B02CD2DBF3C4C91B03EAD + - B6B0828C8EC0450A923A37B8076FB654 method: GET uri: https://search138d0eea.search.windows.net/skillsets?api-version=2019-05-06-Preview response: body: - string: '{"@odata.context":"https://search138d0eea.search.windows.net/$metadata#skillsets","value":[{"@odata.etag":"\"0x8D7E63692E386AC\"","name":"test-ss-1","description":"desc1","skills":[{"@odata.type":"#Microsoft.Skills.Text.EntityRecognitionSkill","name":"#1","description":null,"context":"/document","categories":["Person","Quantity","Organization","URL","Email","Location","DateTime"],"defaultLanguageCode":"en","minimumPrecision":null,"includeTypelessEntities":null,"inputs":[{"name":"text","source":"/document/content","sourceContext":null,"inputs":[]}],"outputs":[{"name":"organizations","targetName":"organizations"}]}],"cognitiveServices":null,"knowledgeStore":null},{"@odata.etag":"\"0x8D7E63692F0F69A\"","name":"test-ss-2","description":"desc2","skills":[{"@odata.type":"#Microsoft.Skills.Text.EntityRecognitionSkill","name":"#1","description":null,"context":"/document","categories":["Person","Quantity","Organization","URL","Email","Location","DateTime"],"defaultLanguageCode":"en","minimumPrecision":null,"includeTypelessEntities":null,"inputs":[{"name":"text","source":"/document/content","sourceContext":null,"inputs":[]}],"outputs":[{"name":"organizations","targetName":"organizations"}]}],"cognitiveServices":null,"knowledgeStore":null}]}' + string: '{"@odata.context":"https://search138d0eea.search.windows.net/$metadata#skillsets","value":[{"@odata.etag":"\"0x8D7EC948D7A3762\"","name":"test-ss-1","description":"desc1","skills":[{"@odata.type":"#Microsoft.Skills.Text.EntityRecognitionSkill","name":"#1","description":null,"context":"/document","categories":["Person","Quantity","Organization","URL","Email","Location","DateTime"],"defaultLanguageCode":"en","minimumPrecision":null,"includeTypelessEntities":null,"inputs":[{"name":"text","source":"/document/content","sourceContext":null,"inputs":[]}],"outputs":[{"name":"organizations","targetName":"organizations"}]}],"cognitiveServices":null,"knowledgeStore":null},{"@odata.etag":"\"0x8D7EC948D8BEDF0\"","name":"test-ss-2","description":"desc2","skills":[{"@odata.type":"#Microsoft.Skills.Text.EntityRecognitionSkill","name":"#1","description":null,"context":"/document","categories":["Person","Quantity","Organization","URL","Email","Location","DateTime"],"defaultLanguageCode":"en","minimumPrecision":null,"includeTypelessEntities":null,"inputs":[{"name":"text","source":"/document/content","sourceContext":null,"inputs":[]}],"outputs":[{"name":"organizations","targetName":"organizations"}]}],"cognitiveServices":null,"knowledgeStore":null}]}' headers: cache-control: - no-cache @@ -135,9 +135,9 @@ interactions: content-type: - application/json; odata.metadata=minimal date: - - Tue, 21 Apr 2020 20:57:16 GMT + - Wed, 29 Apr 2020 23:25:06 GMT elapsed-time: - - '91' + - '28' expires: - '-1' odata-version: @@ -147,7 +147,7 @@ interactions: preference-applied: - odata.include-annotations="*" request-id: - - ade02f6a-8412-11ea-a894-8c8590507855 + - a94595d0-8a70-11ea-889b-8c8590507855 strict-transport-security: - max-age=15724800; includeSubDomains vary: diff --git a/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_get_synonym_map.yaml b/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_get_synonym_map.yaml index 0b8497be480f..901db9b1c578 100644 --- a/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_get_synonym_map.yaml +++ b/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_get_synonym_map.yaml @@ -16,12 +16,12 @@ interactions: User-Agent: - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - 61C79770176807E3449AEAB2E522C509 + - 6778A373F35558F2511949D53BFE7365 method: POST uri: https://search33580fc6.search.windows.net/synonymmaps?api-version=2019-05-06-Preview response: body: - string: '{"@odata.context":"https://search33580fc6.search.windows.net/$metadata#synonymmaps/$entity","@odata.etag":"\"0x8D7E0972DD66E22\"","name":"test-syn-map","format":"solr","synonyms":"USA, + string: '{"@odata.context":"https://search33580fc6.search.windows.net/$metadata#synonymmaps/$entity","@odata.etag":"\"0x8D7EC94518B5F89\"","name":"test-syn-map","format":"solr","synonyms":"USA, United States, United States of America\nWashington, Wash. => WA","encryptionKey":null}' headers: cache-control: @@ -31,11 +31,11 @@ interactions: content-type: - application/json; odata.metadata=minimal date: - - Tue, 14 Apr 2020 17:13:40 GMT + - Wed, 29 Apr 2020 23:23:26 GMT elapsed-time: - - '52' + - '59' etag: - - W/"0x8D7E0972DD66E22" + - W/"0x8D7EC94518B5F89" expires: - '-1' location: @@ -47,7 +47,7 @@ interactions: preference-applied: - odata.include-annotations="*" request-id: - - 4987392c-7e73-11ea-a11f-8c8590507855 + - 6d2a446a-8a70-11ea-889b-8c8590507855 strict-transport-security: - max-age=15724800; includeSubDomains status: @@ -65,12 +65,12 @@ interactions: User-Agent: - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - 61C79770176807E3449AEAB2E522C509 + - 6778A373F35558F2511949D53BFE7365 method: GET uri: https://search33580fc6.search.windows.net/synonymmaps?api-version=2019-05-06-Preview response: body: - string: '{"@odata.context":"https://search33580fc6.search.windows.net/$metadata#synonymmaps","value":[{"@odata.etag":"\"0x8D7E0972DD66E22\"","name":"test-syn-map","format":"solr","synonyms":"USA, + string: '{"@odata.context":"https://search33580fc6.search.windows.net/$metadata#synonymmaps","value":[{"@odata.etag":"\"0x8D7EC94518B5F89\"","name":"test-syn-map","format":"solr","synonyms":"USA, United States, United States of America\nWashington, Wash. => WA","encryptionKey":null}]}' headers: cache-control: @@ -80,9 +80,9 @@ interactions: content-type: - application/json; odata.metadata=minimal date: - - Tue, 14 Apr 2020 17:13:40 GMT + - Wed, 29 Apr 2020 23:23:26 GMT elapsed-time: - - '13' + - '114' expires: - '-1' odata-version: @@ -92,7 +92,7 @@ interactions: preference-applied: - odata.include-annotations="*" request-id: - - 49a5cd7e-7e73-11ea-a11f-8c8590507855 + - 6d48cfd4-8a70-11ea-889b-8c8590507855 strict-transport-security: - max-age=15724800; includeSubDomains vary: @@ -112,12 +112,12 @@ interactions: User-Agent: - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - 61C79770176807E3449AEAB2E522C509 + - 6778A373F35558F2511949D53BFE7365 method: GET uri: https://search33580fc6.search.windows.net/synonymmaps('test-syn-map')?api-version=2019-05-06-Preview response: body: - string: '{"@odata.context":"https://search33580fc6.search.windows.net/$metadata#synonymmaps/$entity","@odata.etag":"\"0x8D7E0972DD66E22\"","name":"test-syn-map","format":"solr","synonyms":"USA, + string: '{"@odata.context":"https://search33580fc6.search.windows.net/$metadata#synonymmaps/$entity","@odata.etag":"\"0x8D7EC94518B5F89\"","name":"test-syn-map","format":"solr","synonyms":"USA, United States, United States of America\nWashington, Wash. => WA","encryptionKey":null}' headers: cache-control: @@ -127,11 +127,11 @@ interactions: content-type: - application/json; odata.metadata=minimal date: - - Tue, 14 Apr 2020 17:13:40 GMT + - Wed, 29 Apr 2020 23:23:26 GMT elapsed-time: - - '10' + - '6' etag: - - W/"0x8D7E0972DD66E22" + - W/"0x8D7EC94518B5F89" expires: - '-1' odata-version: @@ -141,7 +141,7 @@ interactions: preference-applied: - odata.include-annotations="*" request-id: - - 49ae13bc-7e73-11ea-a11f-8c8590507855 + - 6d609484-8a70-11ea-889b-8c8590507855 strict-transport-security: - max-age=15724800; includeSubDomains vary: diff --git a/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_get_synonym_maps.yaml b/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_get_synonym_maps.yaml index e23429167461..34472431c710 100644 --- a/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_get_synonym_maps.yaml +++ b/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_get_synonym_maps.yaml @@ -16,12 +16,12 @@ interactions: User-Agent: - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - 534529B184BCA05ED3AA0F523A9554CA + - F38023663AA7831EE2B4F0FB244EF306 method: POST uri: https://search43911039.search.windows.net/synonymmaps?api-version=2019-05-06-Preview response: body: - string: '{"@odata.context":"https://search43911039.search.windows.net/$metadata#synonymmaps/$entity","@odata.etag":"\"0x8D7E637B5C6B8B8\"","name":"test-syn-map-1","format":"solr","synonyms":"USA, + string: '{"@odata.context":"https://search43911039.search.windows.net/$metadata#synonymmaps/$entity","@odata.etag":"\"0x8D7EC9458B82C72\"","name":"test-syn-map-1","format":"solr","synonyms":"USA, United States, United States of America","encryptionKey":null}' headers: cache-control: @@ -31,11 +31,11 @@ interactions: content-type: - application/json; odata.metadata=minimal date: - - Tue, 21 Apr 2020 21:05:24 GMT + - Wed, 29 Apr 2020 23:23:38 GMT elapsed-time: - - '44' + - '52' etag: - - W/"0x8D7E637B5C6B8B8" + - W/"0x8D7EC9458B82C72" expires: - '-1' location: @@ -47,7 +47,7 @@ interactions: preference-applied: - odata.include-annotations="*" request-id: - - d08b2122-8413-11ea-93b9-8c8590507855 + - 744fc42c-8a70-11ea-889b-8c8590507855 strict-transport-security: - max-age=15724800; includeSubDomains status: @@ -70,12 +70,12 @@ interactions: User-Agent: - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - 534529B184BCA05ED3AA0F523A9554CA + - F38023663AA7831EE2B4F0FB244EF306 method: POST uri: https://search43911039.search.windows.net/synonymmaps?api-version=2019-05-06-Preview response: body: - string: '{"@odata.context":"https://search43911039.search.windows.net/$metadata#synonymmaps/$entity","@odata.etag":"\"0x8D7E637B5D0CCAE\"","name":"test-syn-map-2","format":"solr","synonyms":"Washington, + string: '{"@odata.context":"https://search43911039.search.windows.net/$metadata#synonymmaps/$entity","@odata.etag":"\"0x8D7EC9458C32AF7\"","name":"test-syn-map-2","format":"solr","synonyms":"Washington, Wash. => WA","encryptionKey":null}' headers: cache-control: @@ -85,11 +85,11 @@ interactions: content-type: - application/json; odata.metadata=minimal date: - - Tue, 21 Apr 2020 21:05:24 GMT + - Wed, 29 Apr 2020 23:23:38 GMT elapsed-time: - - '24' + - '29' etag: - - W/"0x8D7E637B5D0CCAE" + - W/"0x8D7EC9458C32AF7" expires: - '-1' location: @@ -101,7 +101,7 @@ interactions: preference-applied: - odata.include-annotations="*" request-id: - - d0a8dd0c-8413-11ea-93b9-8c8590507855 + - 7471f916-8a70-11ea-889b-8c8590507855 strict-transport-security: - max-age=15724800; includeSubDomains status: @@ -119,13 +119,13 @@ interactions: User-Agent: - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - 534529B184BCA05ED3AA0F523A9554CA + - F38023663AA7831EE2B4F0FB244EF306 method: GET uri: https://search43911039.search.windows.net/synonymmaps?api-version=2019-05-06-Preview response: body: - string: '{"@odata.context":"https://search43911039.search.windows.net/$metadata#synonymmaps","value":[{"@odata.etag":"\"0x8D7E637B5C6B8B8\"","name":"test-syn-map-1","format":"solr","synonyms":"USA, - United States, United States of America","encryptionKey":null},{"@odata.etag":"\"0x8D7E637B5D0CCAE\"","name":"test-syn-map-2","format":"solr","synonyms":"Washington, + string: '{"@odata.context":"https://search43911039.search.windows.net/$metadata#synonymmaps","value":[{"@odata.etag":"\"0x8D7EC9458B82C72\"","name":"test-syn-map-1","format":"solr","synonyms":"USA, + United States, United States of America","encryptionKey":null},{"@odata.etag":"\"0x8D7EC9458C32AF7\"","name":"test-syn-map-2","format":"solr","synonyms":"Washington, Wash. => WA","encryptionKey":null}]}' headers: cache-control: @@ -135,9 +135,9 @@ interactions: content-type: - application/json; odata.metadata=minimal date: - - Tue, 21 Apr 2020 21:05:24 GMT + - Wed, 29 Apr 2020 23:23:38 GMT elapsed-time: - - '27' + - '14' expires: - '-1' odata-version: @@ -147,7 +147,7 @@ interactions: preference-applied: - odata.include-annotations="*" request-id: - - d0b30890-8413-11ea-93b9-8c8590507855 + - 747cf122-8a70-11ea-889b-8c8590507855 strict-transport-security: - max-age=15724800; includeSubDomains vary: diff --git a/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_list_datasource.yaml b/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_list_datasource.yaml new file mode 100644 index 000000000000..971447773730 --- /dev/null +++ b/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_list_datasource.yaml @@ -0,0 +1,156 @@ +interactions: +- request: + body: '{"name": "sample-datasource", "type": "azureblob", "credentials": {"connectionString": + "DefaultEndpointsProtocol=https;AccountName=storagename;AccountKey=NzhL3hKZbJBuJ2484dPTR+xF30kYaWSSCbs2BzLgVVI1woqeST/1IgqaLm6QAOTxtGvxctSNbIR/1hW8yH+bJg==;EndpointSuffix=core.windows.net"}, + "container": {"name": "searchcontainer"}}' + headers: + Accept: + - application/json;odata.metadata=minimal + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '319' + Content-Type: + - application/json + User-Agent: + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) + api-key: + - 6C051A73A19918FEDC9EFD419203F1C7 + method: POST + uri: https://search32ba0fb3.search.windows.net/datasources?api-version=2019-05-06-Preview + response: + body: + string: '{"@odata.context":"https://search32ba0fb3.search.windows.net/$metadata#datasources/$entity","@odata.etag":"\"0x8D7EC94B2E20FAE\"","name":"sample-datasource","description":null,"type":"azureblob","subtype":null,"credentials":{"connectionString":null},"container":{"name":"searchcontainer","query":null},"dataChangeDetectionPolicy":null,"dataDeletionDetectionPolicy":null}' + headers: + cache-control: + - no-cache + content-length: + - '370' + content-type: + - application/json; odata.metadata=minimal + date: + - Wed, 29 Apr 2020 23:26:09 GMT + elapsed-time: + - '56' + etag: + - W/"0x8D7EC94B2E20FAE" + expires: + - '-1' + location: + - https://search32ba0fb3.search.windows.net/datasources('sample-datasource')?api-version=2019-05-06-Preview + odata-version: + - '4.0' + pragma: + - no-cache + preference-applied: + - odata.include-annotations="*" + request-id: + - ce7ab0c4-8a70-11ea-889b-8c8590507855 + strict-transport-security: + - max-age=15724800; includeSubDomains + status: + code: 201 + message: Created +- request: + body: '{"name": "another-sample", "type": "azureblob", "credentials": {"connectionString": + "DefaultEndpointsProtocol=https;AccountName=storagename;AccountKey=NzhL3hKZbJBuJ2484dPTR+xF30kYaWSSCbs2BzLgVVI1woqeST/1IgqaLm6QAOTxtGvxctSNbIR/1hW8yH+bJg==;EndpointSuffix=core.windows.net"}, + "container": {"name": "searchcontainer"}}' + headers: + Accept: + - application/json;odata.metadata=minimal + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '316' + Content-Type: + - application/json + User-Agent: + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) + api-key: + - 6C051A73A19918FEDC9EFD419203F1C7 + method: POST + uri: https://search32ba0fb3.search.windows.net/datasources?api-version=2019-05-06-Preview + response: + body: + string: '{"@odata.context":"https://search32ba0fb3.search.windows.net/$metadata#datasources/$entity","@odata.etag":"\"0x8D7EC94B2ED837E\"","name":"another-sample","description":null,"type":"azureblob","subtype":null,"credentials":{"connectionString":null},"container":{"name":"searchcontainer","query":null},"dataChangeDetectionPolicy":null,"dataDeletionDetectionPolicy":null}' + headers: + cache-control: + - no-cache + content-length: + - '367' + content-type: + - application/json; odata.metadata=minimal + date: + - Wed, 29 Apr 2020 23:26:09 GMT + elapsed-time: + - '34' + etag: + - W/"0x8D7EC94B2ED837E" + expires: + - '-1' + location: + - https://search32ba0fb3.search.windows.net/datasources('another-sample')?api-version=2019-05-06-Preview + odata-version: + - '4.0' + pragma: + - no-cache + preference-applied: + - odata.include-annotations="*" + request-id: + - ce9983c8-8a70-11ea-889b-8c8590507855 + strict-transport-security: + - max-age=15724800; includeSubDomains + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json;odata.metadata=minimal + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) + api-key: + - 6C051A73A19918FEDC9EFD419203F1C7 + method: GET + uri: https://search32ba0fb3.search.windows.net/datasources?api-version=2019-05-06-Preview + response: + body: + string: '{"@odata.context":"https://search32ba0fb3.search.windows.net/$metadata#datasources","value":[{"@odata.etag":"\"0x8D7EC94B2ED837E\"","name":"another-sample","description":null,"type":"azureblob","subtype":null,"credentials":{"connectionString":null},"container":{"name":"searchcontainer","query":null},"dataChangeDetectionPolicy":null,"dataDeletionDetectionPolicy":null},{"@odata.etag":"\"0x8D7EC94B2E20FAE\"","name":"sample-datasource","description":null,"type":"azureblob","subtype":null,"credentials":{"connectionString":null},"container":{"name":"searchcontainer","query":null},"dataChangeDetectionPolicy":null,"dataDeletionDetectionPolicy":null}]}' + headers: + cache-control: + - no-cache + content-length: + - '651' + content-type: + - application/json; odata.metadata=minimal + date: + - Wed, 29 Apr 2020 23:26:09 GMT + elapsed-time: + - '18' + expires: + - '-1' + odata-version: + - '4.0' + pragma: + - no-cache + preference-applied: + - odata.include-annotations="*" + request-id: + - cea47c42-8a70-11ea-889b-8c8590507855 + strict-transport-security: + - max-age=15724800; includeSubDomains + vary: + - Accept-Encoding + status: + code: 200 + message: OK +version: 1 diff --git a/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_list_indexes.yaml b/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_list_indexes.yaml new file mode 100644 index 000000000000..257fc77927de --- /dev/null +++ b/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_list_indexes.yaml @@ -0,0 +1,48 @@ +interactions: +- request: + body: null + headers: + Accept: + - application/json;odata.metadata=minimal + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) + api-key: + - FF50C21851A8A287CCB25DE530228B72 + method: GET + uri: https://search4f80e78.search.windows.net/indexes?api-version=2019-05-06-Preview + response: + body: + string: '{"@odata.context":"https://search4f80e78.search.windows.net/$metadata#indexes","value":[{"@odata.etag":"\"0x8D7EC94296AF173\"","name":"drgqefsg","defaultScoringProfile":null,"fields":[{"name":"hotelId","type":"Edm.String","searchable":false,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":true,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"hotelName","type":"Edm.String","searchable":true,"filterable":true,"retrievable":true,"sortable":true,"facetable":false,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"description","type":"Edm.String","searchable":true,"filterable":false,"retrievable":true,"sortable":false,"facetable":false,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":"en.lucene","synonymMaps":[]},{"name":"descriptionFr","type":"Edm.String","searchable":true,"filterable":false,"retrievable":true,"sortable":false,"facetable":false,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":"fr.lucene","synonymMaps":[]},{"name":"category","type":"Edm.String","searchable":true,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"tags","type":"Collection(Edm.String)","searchable":true,"filterable":true,"retrievable":true,"sortable":false,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"parkingIncluded","type":"Edm.Boolean","searchable":false,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"smokingAllowed","type":"Edm.Boolean","searchable":false,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"lastRenovationDate","type":"Edm.DateTimeOffset","searchable":false,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"rating","type":"Edm.Int32","searchable":false,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"location","type":"Edm.GeographyPoint","searchable":false,"filterable":true,"retrievable":true,"sortable":true,"facetable":false,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"address","type":"Edm.ComplexType","fields":[{"name":"streetAddress","type":"Edm.String","searchable":true,"filterable":false,"retrievable":true,"sortable":false,"facetable":false,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"city","type":"Edm.String","searchable":true,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"stateProvince","type":"Edm.String","searchable":true,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"country","type":"Edm.String","searchable":true,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"postalCode","type":"Edm.String","searchable":true,"filterable":true,"retrievable":true,"sortable":true,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]}]},{"name":"rooms","type":"Collection(Edm.ComplexType)","fields":[{"name":"description","type":"Edm.String","searchable":true,"filterable":false,"retrievable":true,"sortable":false,"facetable":false,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":"en.lucene","synonymMaps":[]},{"name":"descriptionFr","type":"Edm.String","searchable":true,"filterable":false,"retrievable":true,"sortable":false,"facetable":false,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":"fr.lucene","synonymMaps":[]},{"name":"type","type":"Edm.String","searchable":true,"filterable":true,"retrievable":true,"sortable":false,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"baseRate","type":"Edm.Double","searchable":false,"filterable":true,"retrievable":true,"sortable":false,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"bedOptions","type":"Edm.String","searchable":true,"filterable":true,"retrievable":true,"sortable":false,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"sleepsCount","type":"Edm.Int32","searchable":false,"filterable":true,"retrievable":true,"sortable":false,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"smokingAllowed","type":"Edm.Boolean","searchable":false,"filterable":true,"retrievable":true,"sortable":false,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]},{"name":"tags","type":"Collection(Edm.String)","searchable":true,"filterable":true,"retrievable":true,"sortable":false,"facetable":true,"key":false,"indexAnalyzer":null,"searchAnalyzer":null,"analyzer":null,"synonymMaps":[]}]}],"scoringProfiles":[{"name":"nearest","functionAggregation":"sum","text":null,"functions":[{"fieldName":"location","interpolation":"linear","type":"distance","boost":2.0,"freshness":null,"magnitude":null,"distance":{"referencePointParameter":"myloc","boostingDistance":100.0},"tag":null}]}],"corsOptions":null,"suggesters":[{"name":"sg","searchMode":"analyzingInfixMatching","sourceFields":["description","hotelName"]}],"analyzers":[],"tokenizers":[],"tokenFilters":[],"charFilters":[],"encryptionKey":null,"similarity":null}]}' + headers: + cache-control: + - no-cache + content-length: + - '6159' + content-type: + - application/json; odata.metadata=minimal + date: + - Wed, 29 Apr 2020 23:22:22 GMT + elapsed-time: + - '76' + expires: + - '-1' + odata-version: + - '4.0' + pragma: + - no-cache + preference-applied: + - odata.include-annotations="*" + request-id: + - 474ae466-8a70-11ea-889b-8c8590507855 + strict-transport-security: + - max-age=15724800; includeSubDomains + vary: + - Accept-Encoding + status: + code: 200 + message: OK +version: 1 diff --git a/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_get_indexes_empty.yaml b/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_list_indexes_empty.yaml similarity index 78% rename from sdk/search/azure-search-documents/tests/recordings/test_service_live.test_get_indexes_empty.yaml rename to sdk/search/azure-search-documents/tests/recordings/test_service_live.test_list_indexes_empty.yaml index 846838e695bd..af5124e52072 100644 --- a/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_get_indexes_empty.yaml +++ b/sdk/search/azure-search-documents/tests/recordings/test_service_live.test_list_indexes_empty.yaml @@ -11,12 +11,12 @@ interactions: User-Agent: - azsdk-python-search-documents/1.0.0b3 Python/3.7.3 (Darwin-19.3.0-x86_64-i386-64bit) api-key: - - AEC2AE27CD62E5B29C1DBC9E3F05E4DE + - 5E8598A1BBC6C32219175B1F71F10648 method: GET - uri: https://search5259108a.search.windows.net/indexes?api-version=2019-05-06-Preview + uri: https://search64601106.search.windows.net/indexes?api-version=2019-05-06-Preview response: body: - string: '{"@odata.context":"https://search5259108a.search.windows.net/$metadata#indexes","value":[]}' + string: '{"@odata.context":"https://search64601106.search.windows.net/$metadata#indexes","value":[]}' headers: cache-control: - no-cache @@ -25,9 +25,9 @@ interactions: content-type: - application/json; odata.metadata=minimal date: - - Tue, 21 Apr 2020 21:01:03 GMT + - Wed, 29 Apr 2020 23:22:30 GMT elapsed-time: - - '53' + - '54' expires: - '-1' odata-version: @@ -37,7 +37,7 @@ interactions: preference-applied: - odata.include-annotations="*" request-id: - - 35276268-8413-11ea-8200-8c8590507855 + - 4bf82de8-8a70-11ea-889b-8c8590507855 strict-transport-security: - max-age=15724800; includeSubDomains vary: diff --git a/sdk/search/azure-search-documents/tests/search_service_preparer.py b/sdk/search/azure-search-documents/tests/search_service_preparer.py index d5e0bdaf93f0..b41ae7fd485a 100644 --- a/sdk/search/azure-search-documents/tests/search_service_preparer.py +++ b/sdk/search/azure-search-documents/tests/search_service_preparer.py @@ -3,6 +3,7 @@ # Licensed under the MIT License. # ------------------------------------ +import datetime from os.path import dirname, realpath import time @@ -21,6 +22,15 @@ SERVICE_URL_FMT = "https://{}.search.windows.net/indexes?api-version=2019-05-06" TIME_TO_SLEEP = 3 +class SearchResourceGroupPreparer(ResourceGroupPreparer): + def create_resource(self, name, **kwargs): + result = super(SearchResourceGroupPreparer, self).create_resource(name, **kwargs) + if self.is_live and self._need_creation: + expiry = datetime.datetime.now() + datetime.timedelta(days=1) + resource_group_params = dict(tags={'DeleteAfter': expiry.isoformat()}, location=self.location) + self.client.resource_groups.create_or_update(name, resource_group_params) + return result + class SearchServicePreparer(AzureMgmtPreparer): def __init__( self, @@ -121,11 +131,11 @@ def create_resource(self, name, **kwargs): # optionally load data into the index if self.index_batch and self.schema: from azure.core.credentials import AzureKeyCredential - from azure.search.documents import SearchIndexClient + from azure.search.documents import SearchClient from azure.search.documents._index._generated.models import IndexBatch batch = IndexBatch.deserialize(self.index_batch) - index_client = SearchIndexClient( + index_client = SearchClient( self.endpoint, self.index_name, AzureKeyCredential(api_key) ) results = index_client.index_documents(batch) diff --git a/sdk/search/azure-search-documents/tests/test_index_field_helpers.py b/sdk/search/azure-search-documents/tests/test_index_field_helpers.py new file mode 100644 index 000000000000..190cfc13f1d5 --- /dev/null +++ b/sdk/search/azure-search-documents/tests/test_index_field_helpers.py @@ -0,0 +1,78 @@ +# ------------------------------------ +# Copyright (c) Microsoft Corporation. +# Licensed under the MIT License. +# ------------------------------------ + +from azure.search.documents import ComplexField, SearchableField, SimpleField, edm + +def test_edm_contents(): + assert edm.String == "Edm.String" + assert edm.Int32 == "Edm.Int32" + assert edm.Int64 == "Edm.Int64" + assert edm.Double == "Edm.Double" + assert edm.Boolean == "Edm.Boolean" + assert edm.DateTimeOffset == "Edm.DateTimeOffset" + assert edm.GeographyPoint == "Edm.GeographyPoint" + assert edm.ComplexType == "Edm.ComplexType" + assert edm.Collection("foo") == "Collection(foo)" + +class TestComplexField(object): + def test_single(self): + fld = ComplexField(name="foo", fields=[]) + assert fld.name == "foo" + assert fld.type == edm.ComplexType + + assert fld.sortable is None + assert fld.facetable is None + assert fld.searchable is None + assert fld.filterable is None + assert fld.analyzer is None + assert fld.search_analyzer is None + assert fld.index_analyzer is None + assert fld.synonym_maps is None + + def test_collection(self): + fld = ComplexField(name="foo", fields=[], collection=True) + assert fld.name == "foo" + assert fld.type == edm.Collection(edm.ComplexType) + + assert fld.sortable is None + assert fld.facetable is None + assert fld.searchable is None + assert fld.filterable is None + assert fld.analyzer is None + assert fld.search_analyzer is None + assert fld.index_analyzer is None + assert fld.synonym_maps is None + +class TestSimplexField(object): + def test_defaults(self): + fld = SimpleField(name="foo", type=edm.Double) + assert fld.name == "foo" + assert fld.type == edm.Double + assert fld.retrievable == True + assert fld.sortable == False + assert fld.facetable == False + assert fld.searchable == False + assert fld.filterable == False + + assert fld.analyzer is None + assert fld.search_analyzer is None + assert fld.index_analyzer is None + assert fld.synonym_maps is None + +class TestSearchableField(object): + def test_defaults(self): + fld = SearchableField(name="foo", type=edm.Collection(edm.String)) + assert fld.name == "foo" + assert fld.type == edm.Collection(edm.String) + assert fld.retrievable == True + assert fld.sortable == False + assert fld.facetable == False + assert fld.searchable == True + assert fld.filterable == False + + assert fld.analyzer is None + assert fld.search_analyzer is None + assert fld.index_analyzer is None + assert fld.synonym_maps is None diff --git a/sdk/search/azure-search-documents/tests/test_index_live.py b/sdk/search/azure-search-documents/tests/test_index_live.py index e9328871ddb2..686277cc04f5 100644 --- a/sdk/search/azure-search-documents/tests/test_index_live.py +++ b/sdk/search/azure-search-documents/tests/test_index_live.py @@ -22,18 +22,18 @@ from azure.core.credentials import AzureKeyCredential from azure.search.documents import ( AutocompleteQuery, - SearchIndexClient, + SearchClient, SearchQuery, SuggestQuery, ) TIME_TO_SLEEP = 3 -class SearchIndexClientTest(AzureMgmtTestCase): +class SearchClientTest(AzureMgmtTestCase): @ResourceGroupPreparer(random_name_enabled=True) @SearchServicePreparer(schema=SCHEMA, index_batch=BATCH) def test_get_document_count(self, api_key, endpoint, index_name, **kwargs): - client = SearchIndexClient( + client = SearchClient( endpoint, index_name, AzureKeyCredential(api_key) ) assert client.get_document_count() == 10 @@ -41,7 +41,7 @@ def test_get_document_count(self, api_key, endpoint, index_name, **kwargs): @ResourceGroupPreparer(random_name_enabled=True) @SearchServicePreparer(schema=SCHEMA, index_batch=BATCH) def test_get_document(self, api_key, endpoint, index_name, **kwargs): - client = SearchIndexClient( + client = SearchClient( endpoint, index_name, AzureKeyCredential(api_key) ) for hotel_id in range(1, 11): @@ -54,7 +54,7 @@ def test_get_document(self, api_key, endpoint, index_name, **kwargs): @ResourceGroupPreparer(random_name_enabled=True) @SearchServicePreparer(schema=SCHEMA, index_batch=BATCH) def test_get_document_missing(self, api_key, endpoint, index_name, **kwargs): - client = SearchIndexClient( + client = SearchClient( endpoint, index_name, AzureKeyCredential(api_key) ) with pytest.raises(HttpResponseError): @@ -63,7 +63,7 @@ def test_get_document_missing(self, api_key, endpoint, index_name, **kwargs): @ResourceGroupPreparer(random_name_enabled=True) @SearchServicePreparer(schema=SCHEMA, index_batch=BATCH) def test_get_search_simple(self, api_key, endpoint, index_name, **kwargs): - client = SearchIndexClient( + client = SearchClient( endpoint, index_name, AzureKeyCredential(api_key) ) results = list(client.search(query="hotel")) @@ -75,7 +75,7 @@ def test_get_search_simple(self, api_key, endpoint, index_name, **kwargs): @ResourceGroupPreparer(random_name_enabled=True) @SearchServicePreparer(schema=SCHEMA, index_batch=BATCH) def test_get_search_filter(self, api_key, endpoint, index_name, **kwargs): - client = SearchIndexClient( + client = SearchClient( endpoint, index_name, AzureKeyCredential(api_key) ) @@ -101,7 +101,7 @@ def test_get_search_filter(self, api_key, endpoint, index_name, **kwargs): @ResourceGroupPreparer(random_name_enabled=True) @SearchServicePreparer(schema=SCHEMA, index_batch=BATCH) def test_get_search_counts(self, api_key, endpoint, index_name, **kwargs): - client = SearchIndexClient( + client = SearchClient( endpoint, index_name, AzureKeyCredential(api_key) ) @@ -116,7 +116,7 @@ def test_get_search_counts(self, api_key, endpoint, index_name, **kwargs): @ResourceGroupPreparer(random_name_enabled=True) @SearchServicePreparer(schema=SCHEMA, index_batch=BATCH) def test_get_search_coverage(self, api_key, endpoint, index_name, **kwargs): - client = SearchIndexClient( + client = SearchClient( endpoint, index_name, AzureKeyCredential(api_key) ) @@ -133,7 +133,7 @@ def test_get_search_coverage(self, api_key, endpoint, index_name, **kwargs): @ResourceGroupPreparer(random_name_enabled=True) @SearchServicePreparer(schema=SCHEMA, index_batch=BATCH) def test_get_search_facets_none(self, api_key, endpoint, index_name, **kwargs): - client = SearchIndexClient( + client = SearchClient( endpoint, index_name, AzureKeyCredential(api_key) ) @@ -146,7 +146,7 @@ def test_get_search_facets_none(self, api_key, endpoint, index_name, **kwargs): @ResourceGroupPreparer(random_name_enabled=True) @SearchServicePreparer(schema=SCHEMA, index_batch=BATCH) def test_get_search_facets_result(self, api_key, endpoint, index_name, **kwargs): - client = SearchIndexClient( + client = SearchClient( endpoint, index_name, AzureKeyCredential(api_key) ) @@ -164,7 +164,7 @@ def test_get_search_facets_result(self, api_key, endpoint, index_name, **kwargs) @ResourceGroupPreparer(random_name_enabled=True) @SearchServicePreparer(schema=SCHEMA, index_batch=BATCH) def test_autocomplete(self, api_key, endpoint, index_name, **kwargs): - client = SearchIndexClient( + client = SearchClient( endpoint, index_name, AzureKeyCredential(api_key) ) query = AutocompleteQuery(search_text="mot", suggester_name="sg") @@ -174,7 +174,7 @@ def test_autocomplete(self, api_key, endpoint, index_name, **kwargs): @ResourceGroupPreparer(random_name_enabled=True) @SearchServicePreparer(schema=SCHEMA, index_batch=BATCH) def test_suggest(self, api_key, endpoint, index_name, **kwargs): - client = SearchIndexClient( + client = SearchClient( endpoint, index_name, AzureKeyCredential(api_key) ) query = SuggestQuery(search_text="mot", suggester_name="sg") @@ -187,7 +187,7 @@ def test_suggest(self, api_key, endpoint, index_name, **kwargs): @ResourceGroupPreparer(random_name_enabled=True) @SearchServicePreparer(schema=SCHEMA, index_batch=BATCH) def test_upload_documents_new(self, api_key, endpoint, index_name, **kwargs): - client = SearchIndexClient( + client = SearchClient( endpoint, index_name, AzureKeyCredential(api_key) ) DOCUMENTS = [ @@ -213,7 +213,7 @@ def test_upload_documents_new(self, api_key, endpoint, index_name, **kwargs): @ResourceGroupPreparer(random_name_enabled=True) @SearchServicePreparer(schema=SCHEMA, index_batch=BATCH) def test_upload_documents_existing(self, api_key, endpoint, index_name, **kwargs): - client = SearchIndexClient( + client = SearchClient( endpoint, index_name, AzureKeyCredential(api_key) ) DOCUMENTS = [ @@ -227,7 +227,7 @@ def test_upload_documents_existing(self, api_key, endpoint, index_name, **kwargs @ResourceGroupPreparer(random_name_enabled=True) @SearchServicePreparer(schema=SCHEMA, index_batch=BATCH) def test_delete_documents_existing(self, api_key, endpoint, index_name, **kwargs): - client = SearchIndexClient( + client = SearchClient( endpoint, index_name, AzureKeyCredential(api_key) ) results = client.delete_documents([{"hotelId": "3"}, {"hotelId": "4"}]) @@ -249,7 +249,7 @@ def test_delete_documents_existing(self, api_key, endpoint, index_name, **kwargs @ResourceGroupPreparer(random_name_enabled=True) @SearchServicePreparer(schema=SCHEMA, index_batch=BATCH) def test_delete_documents_missing(self, api_key, endpoint, index_name, **kwargs): - client = SearchIndexClient( + client = SearchClient( endpoint, index_name, AzureKeyCredential(api_key) ) results = client.delete_documents([{"hotelId": "1000"}, {"hotelId": "4"}]) @@ -271,7 +271,7 @@ def test_delete_documents_missing(self, api_key, endpoint, index_name, **kwargs) @ResourceGroupPreparer(random_name_enabled=True) @SearchServicePreparer(schema=SCHEMA, index_batch=BATCH) def test_merge_documents_existing(self, api_key, endpoint, index_name, **kwargs): - client = SearchIndexClient( + client = SearchClient( endpoint, index_name, AzureKeyCredential(api_key) ) results = client.merge_documents( @@ -295,7 +295,7 @@ def test_merge_documents_existing(self, api_key, endpoint, index_name, **kwargs) @ResourceGroupPreparer(random_name_enabled=True) @SearchServicePreparer(schema=SCHEMA, index_batch=BATCH) def test_merge_documents_missing(self, api_key, endpoint, index_name, **kwargs): - client = SearchIndexClient( + client = SearchClient( endpoint, index_name, AzureKeyCredential(api_key) ) results = client.merge_documents( @@ -319,7 +319,7 @@ def test_merge_documents_missing(self, api_key, endpoint, index_name, **kwargs): @ResourceGroupPreparer(random_name_enabled=True) @SearchServicePreparer(schema=SCHEMA, index_batch=BATCH) def test_merge_or_upload_documents(self, api_key, endpoint, index_name, **kwargs): - client = SearchIndexClient( + client = SearchClient( endpoint, index_name, AzureKeyCredential(api_key) ) results = client.merge_or_upload_documents( diff --git a/sdk/search/azure-search-documents/tests/test_search_index_client.py b/sdk/search/azure-search-documents/tests/test_search_index_client.py index 77955055f5d2..8817357ee6e1 100644 --- a/sdk/search/azure-search-documents/tests/test_search_index_client.py +++ b/sdk/search/azure-search-documents/tests/test_search_index_client.py @@ -19,12 +19,12 @@ SearchDocumentsResult, SearchResult, ) -from azure.search.documents._index._search_index_client import SearchPageIterator +from azure.search.documents._index._search_client import SearchPageIterator from azure.search.documents import ( AutocompleteQuery, IndexDocumentsBatch, - SearchIndexClient, + SearchClient, SearchQuery, SuggestQuery, odata, @@ -66,9 +66,9 @@ def test_prevent_double_quoting(self): assert odata("foo eq '{foo}'", foo="a string") == "foo eq 'a string'" -class TestSearchIndexClient(object): +class TestSearchClient(object): def test_init(self): - client = SearchIndexClient("endpoint", "index name", CREDENTIAL) + client = SearchClient("endpoint", "index name", CREDENTIAL) assert client._headers == { "api-key": "test_api_key", "Accept": "application/json;odata.metadata=none", @@ -76,7 +76,7 @@ def test_init(self): def test_credential_roll(self): credential = AzureKeyCredential(key="old_api_key") - client = SearchIndexClient("endpoint", "index name", credential) + client = SearchClient("endpoint", "index name", credential) assert client._headers == { "api-key": "old_api_key", "Accept": "application/json;odata.metadata=none", @@ -89,7 +89,7 @@ def test_credential_roll(self): def test_headers_merge(self): credential = AzureKeyCredential(key="test_api_key") - client = SearchIndexClient("endpoint", "index name", credential) + client = SearchClient("endpoint", "index name", credential) orig = {"foo": "bar"} result = client._merge_client_headers(orig) assert result is not orig @@ -100,8 +100,8 @@ def test_headers_merge(self): } def test_repr(self): - client = SearchIndexClient("endpoint", "index name", CREDENTIAL) - assert repr(client) == "".format( + client = SearchClient("endpoint", "index name", CREDENTIAL) + assert repr(client) == "".format( repr("endpoint"), repr("index name") ) @@ -109,7 +109,7 @@ def test_repr(self): "azure.search.documents._index._generated.operations._documents_operations.DocumentsOperations.count" ) def test_get_document_count(self, mock_count): - client = SearchIndexClient("endpoint", "index name", CREDENTIAL) + client = SearchClient("endpoint", "index name", CREDENTIAL) client.get_document_count() assert mock_count.called assert mock_count.call_args[0] == () @@ -121,7 +121,7 @@ def test_get_document_count(self, mock_count): "azure.search.documents._index._generated.operations._documents_operations.DocumentsOperations.get" ) def test_get_document(self, mock_get): - client = SearchIndexClient("endpoint", "index name", CREDENTIAL) + client = SearchClient("endpoint", "index name", CREDENTIAL) client.get_document("some_key") assert mock_get.called assert mock_get.call_args[0] == () @@ -147,7 +147,7 @@ def test_get_document(self, mock_get): "azure.search.documents._index._generated.operations._documents_operations.DocumentsOperations.search_post" ) def test_search_query_argument(self, mock_search_post, query): - client = SearchIndexClient("endpoint", "index name", CREDENTIAL) + client = SearchClient("endpoint", "index name", CREDENTIAL) result = client.search(query) assert isinstance(result, ItemPaged) assert result._page_iterator_class is SearchPageIterator @@ -163,7 +163,7 @@ def test_search_query_argument(self, mock_search_post, query): ) def test_search_bad_argument(self): - client = SearchIndexClient("endpoint", "index name", CREDENTIAL) + client = SearchClient("endpoint", "index name", CREDENTIAL) with pytest.raises(TypeError) as e: client.search(10) assert str(e) == "Expected a SuggestQuery for 'query', but got {}".format( @@ -174,7 +174,7 @@ def test_search_bad_argument(self): "azure.search.documents._index._generated.operations._documents_operations.DocumentsOperations.suggest_post" ) def test_suggest_query_argument(self, mock_suggest_post): - client = SearchIndexClient("endpoint", "index name", CREDENTIAL) + client = SearchClient("endpoint", "index name", CREDENTIAL) result = client.suggest( SuggestQuery(search_text="search text", suggester_name="sg") ) @@ -187,7 +187,7 @@ def test_suggest_query_argument(self, mock_suggest_post): ) def test_suggest_bad_argument(self): - client = SearchIndexClient("endpoint", "index name", CREDENTIAL) + client = SearchClient("endpoint", "index name", CREDENTIAL) with pytest.raises(TypeError) as e: client.suggest("bad_query") assert str(e) == "Expected a SuggestQuery for 'query', but got {}".format( @@ -198,7 +198,7 @@ def test_suggest_bad_argument(self): "azure.search.documents._index._generated.operations._documents_operations.DocumentsOperations.autocomplete_post" ) def test_autocomplete_query_argument(self, mock_autocomplete_post): - client = SearchIndexClient("endpoint", "index name", CREDENTIAL) + client = SearchClient("endpoint", "index name", CREDENTIAL) result = client.autocomplete( AutocompleteQuery(search_text="search text", suggester_name="sg") ) @@ -211,7 +211,7 @@ def test_autocomplete_query_argument(self, mock_autocomplete_post): ) def test_autocomplete_bad_argument(self): - client = SearchIndexClient("endpoint", "index name", CREDENTIAL) + client = SearchClient("endpoint", "index name", CREDENTIAL) with pytest.raises(TypeError) as e: client.autocomplete("bad_query") assert str( @@ -226,9 +226,9 @@ def test_autocomplete_bad_argument(self): @pytest.mark.parametrize("method_name", CRUD_METHOD_NAMES) def test_add_method(self, arg, method_name): with mock.patch.object( - SearchIndexClient, "index_documents", return_value=None + SearchClient, "index_documents", return_value=None ) as mock_index_documents: - client = SearchIndexClient("endpoint", "index name", CREDENTIAL) + client = SearchClient("endpoint", "index name", CREDENTIAL) method = getattr(client, method_name) method(arg, extra="foo") @@ -249,7 +249,7 @@ def test_add_method(self, arg, method_name): "azure.search.documents._index._generated.operations._documents_operations.DocumentsOperations.index" ) def test_index_documents(self, mock_index): - client = SearchIndexClient("endpoint", "index name", CREDENTIAL) + client = SearchClient("endpoint", "index name", CREDENTIAL) batch = IndexDocumentsBatch() batch.add_upload_documents("upload1") diff --git a/sdk/search/azure-search-documents/tests/test_service_live.py b/sdk/search/azure-search-documents/tests/test_service_live.py index 746365839ac1..7fc774b2d25a 100644 --- a/sdk/search/azure-search-documents/tests/test_service_live.py +++ b/sdk/search/azure-search-documents/tests/test_service_live.py @@ -9,10 +9,11 @@ import pytest -from devtools_testutils import AzureMgmtTestCase, ResourceGroupPreparer +from devtools_testutils import AzureMgmtTestCase -from search_service_preparer import SearchServicePreparer +from search_service_preparer import SearchServicePreparer, SearchResourceGroupPreparer +from azure.core import MatchConditions from azure.core.credentials import AzureKeyCredential from azure.core.exceptions import HttpResponseError from azure.search.documents import( @@ -27,15 +28,24 @@ SearchServiceClient, ScoringProfile, Skillset, + DataSourceCredentials, + DataSource, + DataContainer, + SynonymMap, + SimpleField, + edm ) +from _test_utils import build_synonym_map_from_dict CWD = dirname(realpath(__file__)) SCHEMA = open(join(CWD, "hotel_schema.json")).read() BATCH = json.load(open(join(CWD, "hotel_small.json"))) TIME_TO_SLEEP = 5 +CONNECTION_STRING = 'DefaultEndpointsProtocol=https;AccountName=storagename;AccountKey=NzhL3hKZbJBuJ2484dPTR+xF30kYaWSSCbs2BzLgVVI1woqeST/1IgqaLm6QAOTxtGvxctSNbIR/1hW8yH+bJg==;EndpointSuffix=core.windows.net' -class SearchServiceClientTest(AzureMgmtTestCase): - @ResourceGroupPreparer(random_name_enabled=True) +class SearchClientTest(AzureMgmtTestCase): + + @SearchResourceGroupPreparer(random_name_enabled=True) @SearchServicePreparer() def test_get_service_statistics(self, api_key, endpoint, **kwargs): client = SearchServiceClient(endpoint, AzureKeyCredential(api_key)) @@ -43,51 +53,60 @@ def test_get_service_statistics(self, api_key, endpoint, **kwargs): assert isinstance(result, dict) assert set(result.keys()) == {"counters", "limits"} - # Index operations +class SearchIndexesClientTest(AzureMgmtTestCase): - @ResourceGroupPreparer(random_name_enabled=True) + @SearchResourceGroupPreparer(random_name_enabled=True) @SearchServicePreparer() - def test_get_indexes_empty(self, api_key, endpoint, **kwargs): - client = SearchServiceClient(endpoint, AzureKeyCredential(api_key)) - result = client.get_indexes() - assert len(result) == 0 + def test_list_indexes_empty(self, api_key, endpoint, **kwargs): + client = SearchServiceClient(endpoint, AzureKeyCredential(api_key)).get_indexes_client() + result = client.list_indexes() + with pytest.raises(StopIteration): + next(result) - @ResourceGroupPreparer(random_name_enabled=True) + @SearchResourceGroupPreparer(random_name_enabled=True) @SearchServicePreparer(schema=SCHEMA, index_batch=BATCH) - def test_get_indexes(self, api_key, endpoint, index_name, **kwargs): - client = SearchServiceClient(endpoint, AzureKeyCredential(api_key)) - result = client.get_indexes() - assert len(result) == 1 - assert result[0].name == index_name + def test_list_indexes(self, api_key, endpoint, index_name, **kwargs): + client = SearchServiceClient(endpoint, AzureKeyCredential(api_key)).get_indexes_client() + result = client.list_indexes() + + first = next(result) + assert first.name == index_name - @ResourceGroupPreparer(random_name_enabled=True) + with pytest.raises(StopIteration): + next(result) + + @SearchResourceGroupPreparer(random_name_enabled=True) @SearchServicePreparer(schema=SCHEMA, index_batch=BATCH) def test_get_index(self, api_key, endpoint, index_name, **kwargs): - client = SearchServiceClient(endpoint, AzureKeyCredential(api_key)) + client = SearchServiceClient(endpoint, AzureKeyCredential(api_key)).get_indexes_client() result = client.get_index(index_name) assert result.name == index_name - @ResourceGroupPreparer(random_name_enabled=True) + @SearchResourceGroupPreparer(random_name_enabled=True) @SearchServicePreparer(schema=SCHEMA, index_batch=BATCH) def test_get_index_statistics(self, api_key, endpoint, index_name, **kwargs): - client = SearchServiceClient(endpoint, AzureKeyCredential(api_key)) + client = SearchServiceClient(endpoint, AzureKeyCredential(api_key)).get_indexes_client() result = client.get_index_statistics(index_name) assert set(result.keys()) == {'document_count', 'storage_size'} - @ResourceGroupPreparer(random_name_enabled=True) + @SearchResourceGroupPreparer(random_name_enabled=True) @SearchServicePreparer(schema=SCHEMA, index_batch=BATCH) def test_delete_indexes(self, api_key, endpoint, index_name, **kwargs): - client = SearchServiceClient(endpoint, AzureKeyCredential(api_key)) + client = SearchServiceClient(endpoint, AzureKeyCredential(api_key)).get_indexes_client() client.delete_index(index_name) import time if self.is_live: time.sleep(TIME_TO_SLEEP) - result = client.get_indexes() - assert len(result) == 0 + result = client.list_indexes() + with pytest.raises(StopIteration): + next(result) - @ResourceGroupPreparer(random_name_enabled=True) + @SearchResourceGroupPreparer(random_name_enabled=True) @SearchServicePreparer(schema=SCHEMA, index_batch=BATCH) - def test_create_index(self, api_key, endpoint, index_name, **kwargs): + def test_delete_indexes_if_unchanged(self, api_key, endpoint, index_name, **kwargs): + client = SearchServiceClient(endpoint, AzureKeyCredential(api_key)).get_indexes_client() + + # First create an index name = "hotels" fields = [ { @@ -111,28 +130,50 @@ def test_create_index(self, api_key, endpoint, index_name, **kwargs): fields=fields, scoring_profiles=scoring_profiles, cors_options=cors_options) - client = SearchServiceClient(endpoint, AzureKeyCredential(api_key)) + result = client.create_index(index) + etag = result.e_tag + # get e tag and update + index.scoring_profiles = [] + client.create_or_update_index(index.name, index) + + index.e_tag = etag + with pytest.raises(HttpResponseError): + client.delete_index(index, match_condition=MatchConditions.IfNotModified) + + @SearchResourceGroupPreparer(random_name_enabled=True) + @SearchServicePreparer(schema=SCHEMA, index_batch=BATCH) + def test_create_index(self, api_key, endpoint, index_name, **kwargs): + name = "hotels" + fields = [ + SimpleField(name="hotelId", type=edm.String, key=True), + SimpleField(name="baseRate", type=edm.Double) + ] + scoring_profile = ScoringProfile( + name="MyProfile" + ) + scoring_profiles = [] + scoring_profiles.append(scoring_profile) + cors_options = CorsOptions(allowed_origins=["*"], max_age_in_seconds=60) + index = Index( + name=name, + fields=fields, + scoring_profiles=scoring_profiles, + cors_options=cors_options) + client = SearchServiceClient(endpoint, AzureKeyCredential(api_key)).get_indexes_client() result = client.create_index(index) assert result.name == "hotels" assert result.scoring_profiles[0].name == scoring_profile.name assert result.cors_options.allowed_origins == cors_options.allowed_origins assert result.cors_options.max_age_in_seconds == cors_options.max_age_in_seconds - @ResourceGroupPreparer(random_name_enabled=True) + @SearchResourceGroupPreparer(random_name_enabled=True) @SearchServicePreparer(schema=SCHEMA, index_batch=BATCH) def test_create_or_update_index(self, api_key, endpoint, index_name, **kwargs): name = "hotels" fields = [ - { - "name": "hotelId", - "type": "Edm.String", - "key": True, - "searchable": False - }, - { - "name": "baseRate", - "type": "Edm.Double" - }] + SimpleField(name="hotelId", type=edm.String, key=True), + SimpleField(name="baseRate", type=edm.Double) + ] cors_options = CorsOptions(allowed_origins=["*"], max_age_in_seconds=60) scoring_profiles = [] index = Index( @@ -140,7 +181,7 @@ def test_create_or_update_index(self, api_key, endpoint, index_name, **kwargs): fields=fields, scoring_profiles=scoring_profiles, cors_options=cors_options) - client = SearchServiceClient(endpoint, AzureKeyCredential(api_key)) + client = SearchServiceClient(endpoint, AzureKeyCredential(api_key)).get_indexes_client() result = client.create_or_update_index(index_name=index.name, index=index) assert len(result.scoring_profiles) == 0 assert result.cors_options.allowed_origins == cors_options.allowed_origins @@ -160,20 +201,58 @@ def test_create_or_update_index(self, api_key, endpoint, index_name, **kwargs): assert result.cors_options.allowed_origins == cors_options.allowed_origins assert result.cors_options.max_age_in_seconds == cors_options.max_age_in_seconds - @ResourceGroupPreparer(random_name_enabled=True) + @SearchResourceGroupPreparer(random_name_enabled=True) + @SearchServicePreparer(schema=SCHEMA, index_batch=BATCH) + def test_create_or_update_indexes_if_unchanged(self, api_key, endpoint, index_name, **kwargs): + client = SearchServiceClient(endpoint, AzureKeyCredential(api_key)).get_indexes_client() + + # First create an index + name = "hotels" + fields = [ + { + "name": "hotelId", + "type": "Edm.String", + "key": True, + "searchable": False + }, + { + "name": "baseRate", + "type": "Edm.Double" + }] + scoring_profile = ScoringProfile( + name="MyProfile" + ) + scoring_profiles = [] + scoring_profiles.append(scoring_profile) + cors_options = CorsOptions(allowed_origins=["*"], max_age_in_seconds=60) + index = Index( + name=name, + fields=fields, + scoring_profiles=scoring_profiles, + cors_options=cors_options) + result = client.create_index(index) + etag = result.e_tag + # get e tag and update + index.scoring_profiles = [] + client.create_or_update_index(index.name, index) + + index.e_tag = etag + with pytest.raises(HttpResponseError): + client.create_or_update_index(index.name, index, match_condition=MatchConditions.IfNotModified) + + @SearchResourceGroupPreparer(random_name_enabled=True) @SearchServicePreparer(schema=SCHEMA, index_batch=BATCH) def test_analyze_text(self, api_key, endpoint, index_name, **kwargs): - client = SearchServiceClient(endpoint, AzureKeyCredential(api_key)) + client = SearchServiceClient(endpoint, AzureKeyCredential(api_key)).get_indexes_client() analyze_request = AnalyzeRequest(text="One's ", analyzer="standard.lucene") result = client.analyze_text(index_name, analyze_request) assert len(result.tokens) == 2 - # Synonym Map operations - - @ResourceGroupPreparer(random_name_enabled=True) +class SearchSynonymMapsClientTest(AzureMgmtTestCase): + @SearchResourceGroupPreparer(random_name_enabled=True) @SearchServicePreparer(schema=SCHEMA, index_batch=BATCH) def test_create_synonym_map(self, api_key, endpoint, index_name, **kwargs): - client = SearchServiceClient(endpoint, AzureKeyCredential(api_key)) + client = SearchServiceClient(endpoint, AzureKeyCredential(api_key)).get_synonym_maps_client() result = client.create_synonym_map("test-syn-map", [ "USA, United States, United States of America", "Washington, Wash. => WA", @@ -186,10 +265,10 @@ def test_create_synonym_map(self, api_key, endpoint, index_name, **kwargs): ] assert len(client.get_synonym_maps()) == 1 - @ResourceGroupPreparer(random_name_enabled=True) + @SearchResourceGroupPreparer(random_name_enabled=True) @SearchServicePreparer(schema=SCHEMA, index_batch=BATCH) def test_delete_synonym_map(self, api_key, endpoint, index_name, **kwargs): - client = SearchServiceClient(endpoint, AzureKeyCredential(api_key)) + client = SearchServiceClient(endpoint, AzureKeyCredential(api_key)).get_synonym_maps_client() result = client.create_synonym_map("test-syn-map", [ "USA, United States, United States of America", "Washington, Wash. => WA", @@ -198,10 +277,30 @@ def test_delete_synonym_map(self, api_key, endpoint, index_name, **kwargs): client.delete_synonym_map("test-syn-map") assert len(client.get_synonym_maps()) == 0 - @ResourceGroupPreparer(random_name_enabled=True) + @SearchResourceGroupPreparer(random_name_enabled=True) + @SearchServicePreparer(schema=SCHEMA, index_batch=BATCH) + def test_delete_synonym_map_if_unchanged(self, api_key, endpoint, index_name, **kwargs): + client = SearchServiceClient(endpoint, AzureKeyCredential(api_key)).get_synonym_maps_client() + result = client.create_synonym_map("test-syn-map", [ + "USA, United States, United States of America", + "Washington, Wash. => WA", + ]) + sm_result = build_synonym_map_from_dict(result) + etag = sm_result.e_tag + + client.create_or_update_synonym_map("test-syn-map", [ + "Washington, Wash. => WA", + ]) + + sm_result.e_tag = etag + with pytest.raises(HttpResponseError): + client.delete_synonym_map(sm_result, match_condition=MatchConditions.IfNotModified) + assert len(client.get_synonym_maps()) == 1 + + @SearchResourceGroupPreparer(random_name_enabled=True) @SearchServicePreparer(schema=SCHEMA, index_batch=BATCH) def test_get_synonym_map(self, api_key, endpoint, index_name, **kwargs): - client = SearchServiceClient(endpoint, AzureKeyCredential(api_key)) + client = SearchServiceClient(endpoint, AzureKeyCredential(api_key)).get_synonym_maps_client() client.create_synonym_map("test-syn-map", [ "USA, United States, United States of America", "Washington, Wash. => WA", @@ -215,10 +314,10 @@ def test_get_synonym_map(self, api_key, endpoint, index_name, **kwargs): "Washington, Wash. => WA", ] - @ResourceGroupPreparer(random_name_enabled=True) + @SearchResourceGroupPreparer(random_name_enabled=True) @SearchServicePreparer(schema=SCHEMA, index_batch=BATCH) def test_get_synonym_maps(self, api_key, endpoint, index_name, **kwargs): - client = SearchServiceClient(endpoint, AzureKeyCredential(api_key)) + client = SearchServiceClient(endpoint, AzureKeyCredential(api_key)).get_synonym_maps_client() client.create_synonym_map("test-syn-map-1", [ "USA, United States, United States of America", ]) @@ -230,10 +329,10 @@ def test_get_synonym_maps(self, api_key, endpoint, index_name, **kwargs): assert all(isinstance(x, dict) for x in result) assert set(x['name'] for x in result) == {"test-syn-map-1", "test-syn-map-2"} - @ResourceGroupPreparer(random_name_enabled=True) + @SearchResourceGroupPreparer(random_name_enabled=True) @SearchServicePreparer(schema=SCHEMA, index_batch=BATCH) def test_create_or_update_synonym_map(self, api_key, endpoint, index_name, **kwargs): - client = SearchServiceClient(endpoint, AzureKeyCredential(api_key)) + client = SearchServiceClient(endpoint, AzureKeyCredential(api_key)).get_synonym_maps_client() client.create_synonym_map("test-syn-map", [ "USA, United States, United States of America", ]) @@ -249,12 +348,30 @@ def test_create_or_update_synonym_map(self, api_key, endpoint, index_name, **kwa "Washington, Wash. => WA", ] - # Skillset operations + @SearchResourceGroupPreparer(random_name_enabled=True) + @SearchServicePreparer(schema=SCHEMA, index_batch=BATCH) + def test_create_or_update_synonym_map_if_unchanged(self, api_key, endpoint, index_name, **kwargs): + client = SearchServiceClient(endpoint, AzureKeyCredential(api_key)).get_synonym_maps_client() + result = build_synonym_map_from_dict(client.create_synonym_map("test-syn-map", [ + "USA, United States, United States of America", + ])) + etag = result.e_tag + + client.create_or_update_synonym_map("test-syn-map", [ + "Washington, Wash. => WA", + ]) + + result.e_tag = etag + with pytest.raises(HttpResponseError): + client.create_or_update_synonym_map(result, match_condition=MatchConditions.IfNotModified) + - @ResourceGroupPreparer(random_name_enabled=True) +class SearchSkillsetClientTest(AzureMgmtTestCase): + + @SearchResourceGroupPreparer(random_name_enabled=True) @SearchServicePreparer(schema=SCHEMA, index_batch=BATCH) def test_create_skillset(self, api_key, endpoint, index_name, **kwargs): - client = SearchServiceClient(endpoint, AzureKeyCredential(api_key)) + client = SearchServiceClient(endpoint, AzureKeyCredential(api_key)).get_skillsets_client() s = EntityRecognitionSkill(inputs=[InputFieldMappingEntry(name="text", source="/document/content")], outputs=[OutputFieldMappingEntry(name="organizations", target_name="organizations")]) @@ -269,10 +386,10 @@ def test_create_skillset(self, api_key, endpoint, index_name, **kwargs): assert len(client.get_skillsets()) == 1 - @ResourceGroupPreparer(random_name_enabled=True) + @SearchResourceGroupPreparer(random_name_enabled=True) @SearchServicePreparer(schema=SCHEMA, index_batch=BATCH) def test_delete_skillset(self, api_key, endpoint, index_name, **kwargs): - client = SearchServiceClient(endpoint, AzureKeyCredential(api_key)) + client = SearchServiceClient(endpoint, AzureKeyCredential(api_key)).get_skillsets_client() s = EntityRecognitionSkill(inputs=[InputFieldMappingEntry(name="text", source="/document/content")], outputs=[OutputFieldMappingEntry(name="organizations", target_name="organizations")]) @@ -282,10 +399,26 @@ def test_delete_skillset(self, api_key, endpoint, index_name, **kwargs): client.delete_skillset("test-ss") assert len(client.get_skillsets()) == 0 - @ResourceGroupPreparer(random_name_enabled=True) + @SearchResourceGroupPreparer(random_name_enabled=True) + @SearchServicePreparer(schema=SCHEMA, index_batch=BATCH) + def test_delete_skillset_if_unchanged(self, api_key, endpoint, index_name, **kwargs): + client = SearchServiceClient(endpoint, AzureKeyCredential(api_key)).get_skillsets_client() + s = EntityRecognitionSkill(inputs=[InputFieldMappingEntry(name="text", source="/document/content")], + outputs=[OutputFieldMappingEntry(name="organizations", target_name="organizations")]) + + result = client.create_skillset(name='test-ss', skills=[s], description="desc") + etag = result.e_tag + + updated = client.create_or_update_skillset(name='test-ss', skills=[s], description="updated") + updated.e_tag = etag + + with pytest.raises(HttpResponseError): + client.delete_skillset(updated, match_condition=MatchConditions.IfNotModified) + + @SearchResourceGroupPreparer(random_name_enabled=True) @SearchServicePreparer(schema=SCHEMA, index_batch=BATCH) def test_get_skillset(self, api_key, endpoint, index_name, **kwargs): - client = SearchServiceClient(endpoint, AzureKeyCredential(api_key)) + client = SearchServiceClient(endpoint, AzureKeyCredential(api_key)).get_skillsets_client() s = EntityRecognitionSkill(inputs=[InputFieldMappingEntry(name="text", source="/document/content")], outputs=[OutputFieldMappingEntry(name="organizations", target_name="organizations")]) @@ -300,10 +433,10 @@ def test_get_skillset(self, api_key, endpoint, index_name, **kwargs): assert len(result.skills) == 1 assert isinstance(result.skills[0], EntityRecognitionSkill) - @ResourceGroupPreparer(random_name_enabled=True) + @SearchResourceGroupPreparer(random_name_enabled=True) @SearchServicePreparer(schema=SCHEMA, index_batch=BATCH) def test_get_skillsets(self, api_key, endpoint, index_name, **kwargs): - client = SearchServiceClient(endpoint, AzureKeyCredential(api_key)) + client = SearchServiceClient(endpoint, AzureKeyCredential(api_key)).get_skillsets_client() s = EntityRecognitionSkill(inputs=[InputFieldMappingEntry(name="text", source="/document/content")], outputs=[OutputFieldMappingEntry(name="organizations", target_name="organizations")]) @@ -314,10 +447,10 @@ def test_get_skillsets(self, api_key, endpoint, index_name, **kwargs): assert all(isinstance(x, Skillset) for x in result) assert set(x.name for x in result) == {"test-ss-1", "test-ss-2"} - @ResourceGroupPreparer(random_name_enabled=True) + @SearchResourceGroupPreparer(random_name_enabled=True) @SearchServicePreparer(schema=SCHEMA, index_batch=BATCH) def test_create_or_update_skillset(self, api_key, endpoint, index_name, **kwargs): - client = SearchServiceClient(endpoint, AzureKeyCredential(api_key)) + client = SearchServiceClient(endpoint, AzureKeyCredential(api_key)).get_skillsets_client() s = EntityRecognitionSkill(inputs=[InputFieldMappingEntry(name="text", source="/document/content")], outputs=[OutputFieldMappingEntry(name="organizations", target_name="organizations")]) @@ -330,10 +463,10 @@ def test_create_or_update_skillset(self, api_key, endpoint, index_name, **kwargs assert result.name == "test-ss" assert result.description == "desc2" - @ResourceGroupPreparer(random_name_enabled=True) + @SearchResourceGroupPreparer(random_name_enabled=True) @SearchServicePreparer(schema=SCHEMA, index_batch=BATCH) def test_create_or_update_skillset_inplace(self, api_key, endpoint, index_name, **kwargs): - client = SearchServiceClient(endpoint, AzureKeyCredential(api_key)) + client = SearchServiceClient(endpoint, AzureKeyCredential(api_key)).get_skillsets_client() s = EntityRecognitionSkill(inputs=[InputFieldMappingEntry(name="text", source="/document/content")], outputs=[OutputFieldMappingEntry(name="organizations", target_name="organizations")]) @@ -344,4 +477,141 @@ def test_create_or_update_skillset_inplace(self, api_key, endpoint, index_name, result = client.get_skillset("test-ss") assert isinstance(result, Skillset) assert result.name == "test-ss" - assert result.description == "desc2" \ No newline at end of file + assert result.description == "desc2" + + @SearchResourceGroupPreparer(random_name_enabled=True) + @SearchServicePreparer(schema=SCHEMA, index_batch=BATCH) + def test_create_or_update_skillset_if_unchanged(self, api_key, endpoint, index_name, **kwargs): + client = SearchServiceClient(endpoint, AzureKeyCredential(api_key)).get_skillsets_client() + s = EntityRecognitionSkill(inputs=[InputFieldMappingEntry(name="text", source="/document/content")], + outputs=[OutputFieldMappingEntry(name="organizations", target_name="organizations")]) + + ss = client.create_or_update_skillset(name='test-ss', skills=[s], description="desc1") + etag = ss.e_tag + + client.create_or_update_skillset(name='test-ss', skills=[s], description="desc2", skillset=ss) + assert len(client.get_skillsets()) == 1 + + ss.e_tag = etag + with pytest.raises(HttpResponseError): + client.create_or_update_skillset(name='test-ss', skills=[s], skillset=ss, match_condition=MatchConditions.IfNotModified) + +class SearchDataSourcesClientTest(AzureMgmtTestCase): + + def _create_datasource(self, name="sample-datasource"): + credentials = DataSourceCredentials(connection_string=CONNECTION_STRING) + container = DataContainer(name='searchcontainer') + data_source = DataSource( + name=name, + type="azureblob", + credentials=credentials, + container=container + ) + return data_source + + @SearchResourceGroupPreparer(random_name_enabled=True) + @SearchServicePreparer(schema=SCHEMA, index_batch=BATCH) + def test_create_datasource(self, api_key, endpoint, index_name, **kwargs): + client = SearchServiceClient(endpoint, AzureKeyCredential(api_key)).get_datasources_client() + data_source = self._create_datasource() + result = client.create_datasource(data_source) + assert result.name == "sample-datasource" + assert result.type == "azureblob" + + @SearchResourceGroupPreparer(random_name_enabled=True) + @SearchServicePreparer(schema=SCHEMA, index_batch=BATCH) + def test_delete_datasource(self, api_key, endpoint, index_name, **kwargs): + client = SearchServiceClient(endpoint, AzureKeyCredential(api_key)).get_datasources_client() + data_source = self._create_datasource() + result = client.create_datasource(data_source) + assert len(client.get_datasources()) == 1 + client.delete_datasource("sample-datasource") + assert len(client.get_datasources()) == 0 + + @SearchResourceGroupPreparer(random_name_enabled=True) + @SearchServicePreparer(schema=SCHEMA, index_batch=BATCH) + def test_get_datasource(self, api_key, endpoint, index_name, **kwargs): + client = SearchServiceClient(endpoint, AzureKeyCredential(api_key)).get_datasources_client() + data_source = self._create_datasource() + created = client.create_datasource(data_source) + result = client.get_datasource("sample-datasource") + assert result.name == "sample-datasource" + + @SearchResourceGroupPreparer(random_name_enabled=True) + @SearchServicePreparer(schema=SCHEMA, index_batch=BATCH) + def test_list_datasource(self, api_key, endpoint, index_name, **kwargs): + client = SearchServiceClient(endpoint, AzureKeyCredential(api_key)).get_datasources_client() + data_source1 = self._create_datasource() + data_source2 = self._create_datasource(name="another-sample") + created1 = client.create_datasource(data_source1) + created2 = client.create_datasource(data_source2) + result = client.get_datasources() + assert isinstance(result, list) + assert set(x.name for x in result) == {"sample-datasource", "another-sample"} + + @SearchResourceGroupPreparer(random_name_enabled=True) + @SearchServicePreparer(schema=SCHEMA, index_batch=BATCH) + def test_create_or_update_datasource(self, api_key, endpoint, index_name, **kwargs): + client = SearchServiceClient(endpoint, AzureKeyCredential(api_key)).get_datasources_client() + data_source = self._create_datasource() + created = client.create_datasource(data_source) + assert len(client.get_datasources()) == 1 + data_source.description = "updated" + client.create_or_update_datasource(data_source) + assert len(client.get_datasources()) == 1 + result = client.get_datasource("sample-datasource") + assert result.name == "sample-datasource" + assert result.description == "updated" + + @SearchResourceGroupPreparer(random_name_enabled=True) + @SearchServicePreparer(schema=SCHEMA, index_batch=BATCH) + def test_create_or_update_datasource_if_unchanged(self, api_key, endpoint, index_name, **kwargs): + client = SearchServiceClient(endpoint, AzureKeyCredential(api_key)).get_datasources_client() + data_source = self._create_datasource() + created = client.create_datasource(data_source) + etag = created.e_tag + + # Now update the data source + data_source.description = "updated" + client.create_or_update_datasource(data_source) + + # prepare data source + data_source.e_tag = etag # reset to the original datasource + data_source.description = "changed" + with pytest.raises(HttpResponseError): + client.create_or_update_datasource(data_source, match_condition=MatchConditions.IfNotModified) + + @SearchResourceGroupPreparer(random_name_enabled=True) + @SearchServicePreparer(schema=SCHEMA, index_batch=BATCH) + def test_delete_datasource_if_unchanged(self, api_key, endpoint, index_name, **kwargs): + client = SearchServiceClient(endpoint, AzureKeyCredential(api_key)).get_datasources_client() + data_source = self._create_datasource() + created = client.create_datasource(data_source) + etag = created.e_tag + + # Now update the data source + data_source.description = "updated" + client.create_or_update_datasource(data_source) + + # prepare data source + data_source.e_tag = etag # reset to the original datasource + with pytest.raises(HttpResponseError): + client.delete_datasource(data_source, match_condition=MatchConditions.IfNotModified) + assert len(client.get_datasources()) == 1 + + @SearchResourceGroupPreparer(random_name_enabled=True) + @SearchServicePreparer(schema=SCHEMA, index_batch=BATCH) + def test_delete_datasource_string_if_unchanged(self, api_key, endpoint, index_name, **kwargs): + client = SearchServiceClient(endpoint, AzureKeyCredential(api_key)).get_datasources_client() + data_source = self._create_datasource() + created = client.create_datasource(data_source) + etag = created.e_tag + + # Now update the data source + data_source.description = "updated" + client.create_or_update_datasource(data_source) + + # prepare data source + data_source.e_tag = etag # reset to the original datasource + with pytest.raises(ValueError): + client.delete_datasource(data_source.name, match_condition=MatchConditions.IfNotModified) diff --git a/sdk/servicebus/azure-servicebus/CHANGELOG.md b/sdk/servicebus/azure-servicebus/CHANGELOG.md index 6e97c6a359b0..8a8fe9921ba7 100644 --- a/sdk/servicebus/azure-servicebus/CHANGELOG.md +++ b/sdk/servicebus/azure-servicebus/CHANGELOG.md @@ -1,11 +1,22 @@ # Release History -## 7.0.0b2 (Unreleased) +## 7.0.0b2 (2020-05-04) **New Features** * Added method `get_topic_sender` in `ServiceBusClient` to get a `ServiceBusSender` for a topic. * Added method `get_subscription_receiver` in `ServiceBusClient` to get a `ServiceBusReceiver` for a subscription under specific topic. +* Added support for scheduling messages and scheduled message cancellation. + - Use `ServiceBusSender.schedule(messages, schedule_time_utc)` for scheduling messages. + - Use `ServiceBusSender.cancel_scheduled_messages(sequence_numbers)` for scheduled messages cancellation. +* `ServiceBusSender.send()` can now send a list of messages in one call, if they fit into a single batch. If they do not fit a `ValueError` is thrown. +* `BatchMessage.add()` and `ServiceBusSender.send()` would raise `MessageContentTooLarge` if the content is over-sized. +* `ServiceBusReceiver.receive()` raises `ValueError` if its param `max_batch_size` is greater than param `prefetch` of `ServiceBusClient`. +* Added exception classes `MessageError`, `MessageContentTooLarge`, `ServiceBusAuthenticationError`. + - `MessageError`: when you send a problematic message, such as an already sent message or an over-sized message. + - `MessageContentTooLarge`: when you send an over-sized message. A subclass of `ValueError` and `MessageError`. + - `ServiceBusAuthenticationError`: on failure to be authenticated by the service. +* Removed exception class `InvalidHandlerState`. **BugFixes** @@ -14,6 +25,9 @@ **Breaking Changes** * Session receivers are now created via their own top level functions, e.g. `get_queue_sesison_receiver` and `get_subscription_session_receiver`. Non session receivers no longer take session_id as a paramter. +* `ServiceBusSender.send()` no longer takes a timeout parameter, as it should be redundant with retry options provided when creating the client. +* Exception imports have been removed from module `azure.servicebus`. Import from `azure.servicebus.exceptions` instead. +* `ServiceBusSender.schedule()` has swapped the ordering of parameters `schedule_time_utc` and `messages` for better consistency with `send()` syntax. ## 7.0.0b1 (2020-04-06) diff --git a/sdk/servicebus/azure-servicebus/README.md b/sdk/servicebus/azure-servicebus/README.md index 9f155ee1967a..1178c0274055 100644 --- a/sdk/servicebus/azure-servicebus/README.md +++ b/sdk/servicebus/azure-servicebus/README.md @@ -7,14 +7,19 @@ publish/subscribe capabilities, and the ability to easily scale as your needs gr Use the Service Bus client library for Python to communicate between applications and services and implement asynchronous messaging patterns. -* Create Service Bus namespaces, queues, topics, and subscriptions, and modify their settings +* Create Service Bus namespaces, queues, topics, and subscriptions, and modify their settings. * Send and receive messages within your Service Bus channels. * Utilize message locks, sessions, and dead letter functionality to implement complex messaging patterns. -Note: This is a preview release of the Python Service Bus SDK, and is not yet at feature parity with version 0.50. Some functionality, such as topic and subscription utilization, will be arriving in upcoming Preview releases; Thank you for your patience and interest as we roll out these changes. - [Source code](./) | [Package (PyPi)][pypi] | [API reference documentation][api_docs] | [Product documentation][product_docs] | [Samples](./samples) | [Changelog](./CHANGELOG.md) +> **NOTE**: This document has instructions, links and code snippets for the **preview** of the next version of the `azure-servicebus` package +> which has different APIs than the current version (0.50). Please view the resources below for references on the existing library. + +[V0.50 Source code][0_50_source] | [V0.50 Package (PyPi)][0_50_pypi] | [V0.50 API reference documentation][0_50_api_docs] | [V0.50 Product documentation][0_50_product_docs] | [V0.50 Samples][0_50_samples] | [V0.50 Changelog][0_50_changelog] + +We also provide a migration guide for users familiar with the existing package that would like to try the preview: [migration guide to move from Service Bus V0.50 to Service Bus V7 Preview][migration_guide] + ## Getting started ### Install the package @@ -29,7 +34,7 @@ pip install azure-servicebus --pre To use this package, you must have: * Azure subscription - [Create a free account][azure_sub] * Azure Service Bus - [Namespace and management credentials][service_bus_namespace] -* Python 2.7, 3.5, 3.6, 3.7 or 3.8 - [Install Python][python] +* Python 2.7, 3.5 or later - [Install Python][python] If you need an Azure service bus namespace, you can create it via the [Azure Portal][azure_namespace_creation]. @@ -43,19 +48,17 @@ az servicebus namespace create --resource-group --name NAMESPACE_NAME= -export SERVICE_BUS_CONN_STR=$(az servicebus namespace authorization-rule keys list --resource-group $RES_GROUP --namespace-name $NAMESPACE_NAME --query RootManageSharedAccessKey --output tsv) +export SERVICE_BUS_CONN_STR=$(az servicebus namespace authorization-rule keys list --resource-group $RES_GROUP --namespace-name $NAMESPACE_NAME --name RootManageSharedAccessKey --query primaryConnectionString --output tsv) ``` -#### Create client - Once you've populated the `SERVICE_BUS_CONN_STR` environment variable, you can create the `ServiceBusClient`. ```Python @@ -68,13 +71,35 @@ with ServiceBusClient.from_connection_string(connstr) as client: ... ``` +#### Create client using the azure-identity library: + +```python +import os +from azure.servicebus import ServiceBusClient +from azure.identity import DefaultAzureCredential + +credential = DefaultAzureCredential() + +FULLY_QUALIFIED_NAMESPACE = os.environ['SERVICE_BUS_FULLY_QUALIFIED_NAMESPACE'] +with ServiceBusClient(FULLY_QUALIFIED_NAMESPACE, credential): + ... +``` + +- This constructor takes the fully qualified namespace of your Service Bus instance and a credential that implements the +[TokenCredential][token_credential_interface] +protocol. There are implementations of the `TokenCredential` protocol available in the +[azure-identity package][pypi_azure_identity]. The fully qualified namespace is of the format ``. +- When using Azure Active Directory, your principal must be assigned a role which allows access to Service Bus, such as the +Azure Service Bus Data Owner role. For more information about using Azure Active Directory authorization with Service Bus, +please refer to [the associated documentation][servicebus_aad_authentication]. + Note: client can be initialized without a context manager, but must be manually closed via client.close() to not leak resources. ## Key concepts Once you've initialized a `ServiceBusClient`, you can interact with the primary resource types within a Service Bus Namespace, of which multiple can exist and on which actual message transmission takes place, the namespace often serving as an application container: -* [Queue][queue_concept]: Allows for Sending and Receiving of messages, ordered first-in-first-out. Often used for point-to-point communication. +* [Queue][queue_concept]: Allows for Sending and Receiving of message. Often used for point-to-point communication. * [Topic][topic_concept]: As opposed to Queues, Topics are better suited to publish/subscribe scenarios. A topic can be sent to, but requires a subscription, of which there can be multiple in parallel, to consume from. @@ -88,7 +113,7 @@ To interact with these resources, one should be familiar with the following SDK * [Sender](./azure/servicebus/_servicebus_sender.py): To send messages to a Queue or Topic, one would use the corresponding `get_queue_sender` or `get_topic_sender` method off of a `ServiceBusClient` instance as seen [here](./samples/sync_samples/send_queue.py). -* [Receiver](./azure/servicebus/_servicebus_receiver.py): To receive messages from a Queue or Subscription, one would use the corrosponding `get_queue_receiver` or `get_subscription_receiver` method off of a `ServiceBusClient` instance as seen [here](./samples/sync_samples/receive_queue.py). +* [Receiver](./azure/servicebus/_servicebus_receiver.py): To receive messages from a Queue or Subscription, one would use the corresponding `get_queue_receiver` or `get_subscription_receiver` method off of a `ServiceBusClient` instance as seen [here](./samples/sync_samples/receive_queue.py). * [Message](./azure/servicebus/_common/message.py): When sending, this is the type you will construct to contain your payload. When receiving, this is where you will access the payload and control how the message is "settled" (completed, dead-lettered, etc); these functions are only available on a received message. @@ -96,14 +121,15 @@ To interact with these resources, one should be familiar with the following SDK The following sections provide several code snippets covering some of the most common Service Bus tasks, including: -* [Send a message to a queue](#send-to-a-queue) -* [Receive a message from a queue](#receive-from-a-queue) -* [Defer a message on receipt](#defer-a-message) +* [Send a message to a queue](#send-a-message-to-a-queue) +* [Receive a message from a queue](#receive-a-message-from-a-queue) +* [Defer a message on receipt](#defer-a-message-on-receipt) To perform management tasks such as creating and deleting queues/topics/subscriptions, please utilize the azure-mgmt-servicebus library, available [here][servicebus_management_repository]. +Please find further examples in the [samples](./samples) directory demonstrating common Service Bus scenarios such as sending, receiving, session management and message handling. -### Send to a queue +### Send a message to a queue This example sends a message to a queue that is assumed to already exist, created via the Azure portal or az commands. @@ -121,7 +147,7 @@ with ServiceBusClient.from_connection_string(connstr) as client: sender.send(message) ``` -### Receive from a queue +### Receive a message from a queue To receive from a queue, you can either perform a one-off receive via "receiver.receive()" or receive persistently as follows: @@ -139,7 +165,7 @@ with ServiceBusClient.from_connection_string(connstr) as client: msg.complete() ``` -### Defer a message +### Defer a message on receipt When receiving from a queue, you have multiple actions you can take on the messages you receive. Where the prior example completes a message, permanently removing it from the queue and marking as complete, this example demonstrates how to defer the message, sending it back to the queue @@ -150,6 +176,7 @@ from azure.servicebus import ServiceBusClient import os connstr = os.environ['SERVICE_BUS_CONN_STR'] +queue_name = os.environ['SERVICE_BUS_QUEUE_NAME'] with ServiceBusClient.from_connection_string(connstr) as client: with client.get_queue_receiver(queue_name) as receiver: @@ -184,7 +211,7 @@ Please view the [exceptions](./azure/servicebus/exceptions.py) file for detailed ### More sample code -Please find further examples in the [samples](./samples) directory demonstrating common Service Bus scenarios such as sending, receiving, and message handling. +Please find further examples in the [samples](./samples) directory demonstrating common Service Bus scenarios such as sending, receiving, session management and message handling. ### Additional documentation @@ -206,14 +233,14 @@ contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additio [azure_cli]: https://docs.microsoft.com/cli/azure -[api_docs]: https://azuresdkdocs.blob.core.windows.net/$web/python/azure-servicebus/7.0.0b1/index.html +[api_docs]: https://azuresdkdocs.blob.core.windows.net/$web/python/azure-servicebus/7.0.0b2/index.html [product_docs]: https://docs.microsoft.com/azure/service-bus-messaging/ [azure_portal]: https://portal.azure.com [azure_sub]: https://azure.microsoft.com/free/ [cloud_shell]: https://docs.microsoft.com/azure/cloud-shell/overview [cloud_shell_bash]: https://shell.azure.com/bash [pip]: https://pypi.org/project/pip/ -[pypi]: https://pypi.org/project/azure-servicebus/ +[pypi]: https://pypi.org/project/azure-servicebus/7.0.0b2/ [python]: https://www.python.org/downloads/ [venv]: https://docs.python.org/3/library/venv.html [virtualenv]: https://virtualenv.pypa.io @@ -225,4 +252,15 @@ contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additio [topic_concept]: https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-messaging-overview#topics [subscription_concept]: https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-queues-topics-subscriptions#topics-and-subscriptions [azure_namespace_creation]: https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-create-namespace-portal -[servicebus_management_repository]: https://github.com/Azure/azure-sdk-for-python/tree/master/sdk/servicebus/azure-mgmt-servicebus \ No newline at end of file +[servicebus_management_repository]: https://github.com/Azure/azure-sdk-for-python/tree/master/sdk/servicebus/azure-mgmt-servicebus +[get_servicebus_conn_str]: https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-create-namespace-portal#get-the-connection-string +[servicebus_aad_authentication]: https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-authentication-and-authorization +[token_credential_interface]: ../../core/azure-core/azure/core/credentials.py +[pypi_azure_identity]: https://pypi.org/project/azure-identity/ +[0_50_source]: https://github.com/Azure/azure-sdk-for-python/tree/servicebus_v0.50.2/sdk/servicebus/azure-servicebus/ +[0_50_pypi]: https://pypi.org/project/azure-servicebus/ +[0_50_api_docs]:https://azuresdkdocs.blob.core.windows.net/$web/python/azure-servicebus/0.50.2/index.html +[0_50_product_docs]: https://docs.microsoft.com/azure/service-bus-messaging/ +[0_50_samples]: https://github.com/Azure/azure-sdk-for-python/tree/servicebus_v0.50.2/sdk/servicebus/azure-servicebus/samples +[0_50_changelog]: https://github.com/Azure/azure-sdk-for-python/blob/servicebus_v0.50.2/sdk/servicebus/azure-servicebus/CHANGELOG.md +[migration_guide]: ./migration_guide.md diff --git a/sdk/servicebus/azure-servicebus/azure/servicebus/__init__.py b/sdk/servicebus/azure-servicebus/azure/servicebus/__init__.py index 53f4ecde6389..10e5205fd439 100644 --- a/sdk/servicebus/azure-servicebus/azure/servicebus/__init__.py +++ b/sdk/servicebus/azure-servicebus/azure/servicebus/__init__.py @@ -17,22 +17,6 @@ from ._common.message import Message, BatchMessage, PeekMessage, ReceivedMessage from ._common.constants import ReceiveSettleMode, NEXT_AVAILABLE from ._common.utils import AutoLockRenew -from .exceptions import ( - ServiceBusError, - ServiceBusResourceNotFound, - ServiceBusConnectionError, - ServiceBusAuthorizationError, - InvalidHandlerState, - NoActiveSession, - MessageAlreadySettled, - MessageSettleFailed, - MessageSendFailed, - MessageLockExpired, - SessionLockExpired, - AutoLockRenewFailed, - AutoLockRenewTimeout -) - TransportType = constants.TransportType @@ -43,19 +27,6 @@ 'ReceivedMessage', 'ReceiveSettleMode', 'NEXT_AVAILABLE', - 'ServiceBusError', - 'ServiceBusResourceNotFound', - 'ServiceBusConnectionError', - 'ServiceBusAuthorizationError', - 'InvalidHandlerState', - 'NoActiveSession', - 'MessageAlreadySettled', - 'MessageSettleFailed', - 'MessageSendFailed', - 'MessageLockExpired', - 'SessionLockExpired', - 'AutoLockRenewFailed', - 'AutoLockRenewTimeout', 'ServiceBusClient', 'ServiceBusReceiver', 'ServiceBusSessionReceiver', diff --git a/sdk/servicebus/azure-servicebus/azure/servicebus/_base_handler.py b/sdk/servicebus/azure-servicebus/azure/servicebus/_base_handler.py index 98ba0b1e0fb0..24869d901162 100644 --- a/sdk/servicebus/azure-servicebus/azure/servicebus/_base_handler.py +++ b/sdk/servicebus/azure-servicebus/azure/servicebus/_base_handler.py @@ -20,7 +20,6 @@ from ._common._configuration import Configuration from .exceptions import ( - InvalidHandlerState, ServiceBusError, ServiceBusAuthorizationError, _create_servicebus_exception @@ -236,9 +235,6 @@ def _do_retryable_operation(self, operation, timeout=None, **kwargs): def _mgmt_request_response(self, mgmt_operation, message, callback, keep_alive_associated_link=True, **kwargs): self._open() - if not self._running: - raise InvalidHandlerState("Client connection is closed.") - application_properties = {} # Some mgmt calls do not support an associated link name (such as list_sessions). Most do, so on by default. if keep_alive_associated_link: diff --git a/sdk/servicebus/azure-servicebus/azure/servicebus/_common/client_mixins.py b/sdk/servicebus/azure-servicebus/azure/servicebus/_common/client_mixins.py index 8bc0de00b643..f492cc74b69d 100644 --- a/sdk/servicebus/azure-servicebus/azure/servicebus/_common/client_mixins.py +++ b/sdk/servicebus/azure-servicebus/azure/servicebus/_common/client_mixins.py @@ -75,7 +75,7 @@ def create_queue( :type max_delivery_count: int :param enable_batched_operations: :type: enable_batched_operations: bool - :raises: ~azure.servicebus.common.errors.ServiceBusConnectionError if the namespace is not found. + :raises: ~azure.servicebus.exceptions.ServiceBusConnectionError if the namespace is not found. :raises: ~azure.common.AzureConflictHttpError if a queue of the same name already exists. """ queue_properties = Queue( @@ -102,8 +102,8 @@ def delete_queue(self, queue_name, fail_not_exist=False): found. If set to True, a ServiceBusResourceNotFound will be raised. Default value is False. :type fail_not_exist: bool - :raises: ~azure.servicebus.common.errors.ServiceBusConnectionError if the namesapce is not found. - :raises: ~azure.servicebus.common.errors.ServiceBusResourceNotFound if the queue is not found + :raises: ~azure.servicebus.exceptions.ServiceBusConnectionError if the namesapce is not found. + :raises: ~azure.servicebus.exceptions.ServiceBusResourceNotFound if the queue is not found and `fail_not_exist` is set to True. """ try: @@ -137,7 +137,7 @@ def create_topic( :type duplicate_detection_history_time_window: ~datetime.timedelta :param enable_batched_operations: :type: enable_batched_operations: bool - :raises: ~azure.servicebus.common.errors.ServiceBusConnectionError if the namespace is not found. + :raises: ~azure.servicebus.exceptions.ServiceBusConnectionError if the namespace is not found. :raises: ~azure.common.AzureConflictHttpError if a topic of the same name already exists. """ topic_properties = Topic( @@ -160,8 +160,8 @@ def delete_topic(self, topic_name, fail_not_exist=False): found. If set to True, a ServiceBusResourceNotFound will be raised. Default value is False. :type fail_not_exist: bool - :raises: ~azure.servicebus.common.errors.ServiceBusConnectionError if the namesapce is not found. - :raises: ~azure.servicebus.common.errors.ServiceBusResourceNotFound if the topic is not found + :raises: ~azure.servicebus.exceptions.ServiceBusConnectionError if the namesapce is not found. + :raises: ~azure.servicebus.exceptions.ServiceBusResourceNotFound if the topic is not found and `fail_not_exist` is set to True. """ try: @@ -203,7 +203,7 @@ def create_subscription( :type max_delivery_count: int :param enable_batched_operations: :type: enable_batched_operations: bool - :raises: ~azure.servicebus.common.errors.ServiceBusConnectionError if the namespace is not found. + :raises: ~azure.servicebus.exceptions.ServiceBusConnectionError if the namespace is not found. :raises: ~azure.common.AzureConflictHttpError if a queue of the same name already exists. """ sub_properties = Subscription( @@ -232,8 +232,8 @@ def delete_subscription(self, topic_name, subscription_name, fail_not_exist=Fals topic is not found. If set to True, a ServiceBusResourceNotFound will be raised. Default value is False. :type fail_not_exist: bool - :raises: ~azure.servicebus.common.errors.ServiceBusConnectionError if the namesapce is not found. - :raises: ~azure.servicebus.common.errors.ServiceBusResourceNotFound if the entity is not found + :raises: ~azure.servicebus.exceptions.ServiceBusConnectionError if the namesapce is not found. + :raises: ~azure.servicebus.exceptions.ServiceBusResourceNotFound if the entity is not found and `fail_not_exist` is set to True. """ try: @@ -326,8 +326,8 @@ def get_properties(self): :returns: The properties of the entity as a dictionary. :rtype: dict[str, Any] - :raises: ~azure.servicebus.common.errors.ServiceBusResourceNotFound if the entity does not exist. - :raises: ~azure.servicebus.common.errors.ServiceBusConnectionError if the endpoint cannot be reached. + :raises: ~azure.servicebus.exceptions.ServiceBusResourceNotFound if the entity does not exist. + :raises: ~azure.servicebus.exceptions.ServiceBusConnectionError if the endpoint cannot be reached. :raises: ~azure.common.AzureHTTPError if the credentials are invalid. """ try: diff --git a/sdk/servicebus/azure-servicebus/azure/servicebus/_common/message.py b/sdk/servicebus/azure-servicebus/azure/servicebus/_common/message.py index c9e4b027130a..b9d924e91a9b 100644 --- a/sdk/servicebus/azure-servicebus/azure/servicebus/_common/message.py +++ b/sdk/servicebus/azure-servicebus/azure/servicebus/_common/message.py @@ -6,10 +6,12 @@ import datetime import uuid +import functools +import logging from typing import Optional, List, Union, Generator import uamqp -from uamqp import types +from uamqp import types, errors from .constants import ( _BATCH_MESSAGE_OVERHEAD_COST, @@ -34,16 +36,19 @@ MESSAGE_DEAD_LETTER, MESSAGE_ABANDON, MESSAGE_DEFER, - MESSAGE_RENEW_LOCK + MESSAGE_RENEW_LOCK, + DEADLETTERNAME ) from ..exceptions import ( MessageAlreadySettled, MessageLockExpired, SessionLockExpired, - MessageSettleFailed -) + MessageSettleFailed, + MessageContentTooLarge) from .utils import utc_from_timestamp, utc_now +_LOGGER = logging.getLogger(__name__) + class Message(object): # pylint: disable=too-many-public-methods,too-many-instance-attributes """A Service Bus Message. @@ -235,27 +240,40 @@ def time_to_live(self, value): self.header.time_to_live = int(value) * 1000 @property - def body(self): - # type: () -> Union[bytes, Generator[bytes]] - """The body of the Message. + def scheduled_enqueue_time_utc(self): + # type: () -> Optional[datetime.datetime] + """Get or set the utc scheduled enqueue time to the message. + This property can be used for scheduling when sending a message through `ServiceBusSender.send` method. + If cancelling scheduled messages is required, you should use the `ServiceBusSender.schedule` method, + which returns sequence numbers that can be used for future cancellation. + `scheduled_enqueue_time_utc` is None if not set. - :rtype: bytes or generator[bytes] + :rtype: ~datetime.datetime """ - return self.message.get_data() + if self.message.annotations: + timestamp = self.message.annotations.get(_X_OPT_SCHEDULED_ENQUEUE_TIME) + if timestamp: + in_seconds = timestamp/1000.0 + return utc_from_timestamp(in_seconds) + return None - def schedule(self, schedule_time_utc): + @scheduled_enqueue_time_utc.setter + def scheduled_enqueue_time_utc(self, value): # type: (datetime.datetime) -> None - """Add a specific utc enqueue time to the message. - - :param schedule_time_utc: The scheduled utc time to enqueue the message. - :type schedule_time_utc: ~datetime.datetime - :rtype: None - """ if not self.properties.message_id: self.properties.message_id = str(uuid.uuid4()) if not self.message.annotations: self.message.annotations = {} - self.message.annotations[types.AMQPSymbol(_X_OPT_SCHEDULED_ENQUEUE_TIME)] = schedule_time_utc + self.message.annotations[types.AMQPSymbol(_X_OPT_SCHEDULED_ENQUEUE_TIME)] = value + + @property + def body(self): + # type: () -> Union[bytes, Generator[bytes]] + """The body of the Message. + + :rtype: bytes or generator[bytes] + """ + return self.message.get_data() class BatchMessage(object): @@ -296,6 +314,12 @@ def __repr__(self): def __len__(self): return self._count + def _from_list(self, messages): + for each in messages: + if not isinstance(each, Message): + raise ValueError("Populating a message batch only supports iterables containing Message Objects. Received instead: {}".format(each.__class__.__name__)) + self.add(each) + @property def size_in_bytes(self): # type: () -> int @@ -316,7 +340,7 @@ def add(self, message): :param message: The Message to be added to the batch. :type message: ~azure.servicebus.Message :rtype: None - :raises: :class:`ValueError`, when exceeding the size limit. + :raises: :class: ~azure.servicebus.exceptions.MessageContentTooLarge, when exceeding the size limit. """ message_size = message.message.get_message_encoded_size() @@ -329,8 +353,8 @@ def add(self, message): ) if size_after_add > self.max_size_in_bytes: - raise ValueError( - "EventDataBatch has reached its size limit: {}".format( + raise MessageContentTooLarge( + "BatchMessage has reached its size limit: {}".format( self.max_size_in_bytes ) ) @@ -394,20 +418,6 @@ def enqueued_time_utc(self): return utc_from_timestamp(in_seconds) return None - @property - def scheduled_enqueue_time_utc(self): - # type: () -> Optional[datetime.datetime] - """ - - :rtype: ~datetime.datetime - """ - if self.message.annotations: - timestamp = self.message.annotations.get(_X_OPT_SCHEDULED_ENQUEUE_TIME) - if timestamp: - in_seconds = timestamp/1000.0 - return utc_from_timestamp(in_seconds) - return None - @property def sequence_number(self): # type: () -> Optional[int] @@ -436,12 +446,13 @@ class ReceivedMessage(PeekMessage): :dedent: 4 :caption: Checking the properties on a received message. """ - def __init__(self, message, mode=ReceiveSettleMode.PeekLock): + def __init__(self, message, mode=ReceiveSettleMode.PeekLock, **kwargs): super(ReceivedMessage, self).__init__(message=message) self._settled = (mode == ReceiveSettleMode.ReceiveAndDelete) + self._is_deferred_message = kwargs.get("is_deferred_message", False) self.auto_renew_error = None - def _is_live(self, action): + def _check_live(self, action): # pylint: disable=no-member if not self._receiver or not self._receiver._running: # pylint: disable=protected-access raise MessageSettleFailed(action, "Orphan message had no open connection.") @@ -458,6 +469,69 @@ def _is_live(self, action): except AttributeError: pass + def _settle_message( + self, + settle_operation, + dead_letter_details=None + ): + try: + if not self._is_deferred_message: + try: + self._settle_via_receiver_link(settle_operation, dead_letter_details)() + return + except RuntimeError as exception: + _LOGGER.info( + "Message settling: %r has encountered an exception (%r)." + "Trying to settle through management link", + settle_operation, + exception + ) + self._settle_via_mgmt_link(settle_operation, dead_letter_details)() + except Exception as e: + raise MessageSettleFailed(settle_operation, e) + + def _settle_via_mgmt_link(self, settle_operation, dead_letter_details=None): + # pylint: disable=protected-access + if settle_operation == MESSAGE_COMPLETE: + return functools.partial( + self._receiver._settle_message, + SETTLEMENT_COMPLETE, + [self.lock_token], + ) + if settle_operation == MESSAGE_ABANDON: + return functools.partial( + self._receiver._settle_message, + SETTLEMENT_ABANDON, + [self.lock_token], + ) + if settle_operation == MESSAGE_DEAD_LETTER: + return functools.partial( + self._receiver._settle_message, + SETTLEMENT_DEADLETTER, + [self.lock_token], + dead_letter_details=dead_letter_details + ) + if settle_operation == MESSAGE_DEFER: + return functools.partial( + self._receiver._settle_message, + SETTLEMENT_DEFER, + [self.lock_token], + ) + raise ValueError("Unsupported settle operation type: {}".format(settle_operation)) + + def _settle_via_receiver_link(self, settle_operation, dead_letter_details=None): + if settle_operation == MESSAGE_COMPLETE: + return functools.partial(self.message.accept) + if settle_operation == MESSAGE_ABANDON: + return functools.partial(self.message.modify, True, False) + if settle_operation == MESSAGE_DEAD_LETTER: + # note: message.reject() can not set reason and description properly due to the issue + # https://github.com/Azure/azure-uamqp-python/issues/155 + return functools.partial(self.message.reject, condition=DEADLETTERNAME) + if settle_operation == MESSAGE_DEFER: + return functools.partial(self.message.modify, True, True) + raise ValueError("Unsupported settle operation type: {}".format(settle_operation)) + @property def settled(self): # type: () -> bool @@ -530,16 +604,14 @@ def complete(self): This removes the message from the queue. :rtype: None - :raises: ~azure.servicebus.common.errors.MessageAlreadySettled if the message has been settled. - :raises: ~azure.servicebus.common.errors.MessageLockExpired if message lock has already expired. - :raises: ~azure.servicebus.common.errors.SessionLockExpired if session lock has already expired. - :raises: ~azure.servicebus.common.errors.MessageSettleFailed if message settle operation fails. + :raises: ~azure.servicebus.exceptions.MessageAlreadySettled if the message has been settled. + :raises: ~azure.servicebus.exceptions.MessageLockExpired if message lock has already expired. + :raises: ~azure.servicebus.exceptions.SessionLockExpired if session lock has already expired. + :raises: ~azure.servicebus.exceptions.MessageSettleFailed if message settle operation fails. """ - self._is_live(MESSAGE_COMPLETE) - try: - self._receiver._settle_message(SETTLEMENT_COMPLETE, [self.lock_token]) # pylint: disable=protected-access - except Exception as e: - raise MessageSettleFailed(MESSAGE_COMPLETE, e) + # pylint: disable=protected-access + self._check_live(MESSAGE_COMPLETE) + self._settle_message(MESSAGE_COMPLETE) self._settled = True def dead_letter(self, reason=None, description=None): @@ -553,24 +625,19 @@ def dead_letter(self, reason=None, description=None): :param str reason: The reason for dead-lettering the message. :param str description: The detailed description for dead-lettering the message. :rtype: None - :raises: ~azure.servicebus.common.errors.MessageAlreadySettled if the message has been settled. - :raises: ~azure.servicebus.common.errors.MessageLockExpired if message lock has already expired. - :raises: ~azure.servicebus.common.errors.SessionLockExpired if session lock has already expired. - :raises: ~azure.servicebus.common.errors.MessageSettleFailed if message settle operation fails. + :raises: ~azure.servicebus.exceptions.MessageAlreadySettled if the message has been settled. + :raises: ~azure.servicebus.exceptions.MessageLockExpired if message lock has already expired. + :raises: ~azure.servicebus.exceptions.SessionLockExpired if session lock has already expired. + :raises: ~azure.servicebus.exceptions.MessageSettleFailed if message settle operation fails. """ # pylint: disable=protected-access - self._is_live(MESSAGE_DEAD_LETTER) + self._check_live(MESSAGE_DEAD_LETTER) + details = { MGMT_REQUEST_DEAD_LETTER_REASON: str(reason) if reason else "", MGMT_REQUEST_DEAD_LETTER_DESCRIPTION: str(description) if description else ""} - try: - self._receiver._settle_message( - SETTLEMENT_DEADLETTER, - [self.lock_token], - dead_letter_details=details - ) - except Exception as e: - raise MessageSettleFailed(MESSAGE_DEAD_LETTER, e) + + self._settle_message(MESSAGE_DEAD_LETTER, dead_letter_details=details) self._settled = True def abandon(self): @@ -580,16 +647,14 @@ def abandon(self): This message will be returned to the queue to be reprocessed. :rtype: None - :raises: ~azure.servicebus.common.errors.MessageAlreadySettled if the message has been settled. - :raises: ~azure.servicebus.common.errors.MessageLockExpired if message lock has already expired. - :raises: ~azure.servicebus.common.errors.SessionLockExpired if session lock has already expired. - :raises: ~azure.servicebus.common.errors.MessageSettleFailed if message settle operation fails. + :raises: ~azure.servicebus.exceptions.MessageAlreadySettled if the message has been settled. + :raises: ~azure.servicebus.exceptions.MessageLockExpired if message lock has already expired. + :raises: ~azure.servicebus.exceptions.SessionLockExpired if session lock has already expired. + :raises: ~azure.servicebus.exceptions.MessageSettleFailed if message settle operation fails. """ - self._is_live(MESSAGE_ABANDON) - try: - self._receiver._settle_message(SETTLEMENT_ABANDON, [self.lock_token]) # pylint: disable=protected-access - except Exception as e: - raise MessageSettleFailed(MESSAGE_ABANDON, e) + # pylint: disable=protected-access + self._check_live(MESSAGE_ABANDON) + self._settle_message(MESSAGE_ABANDON) self._settled = True def defer(self): @@ -600,16 +665,13 @@ def defer(self): specifically by its sequence number in order to be processed. :rtype: None - :raises: ~azure.servicebus.common.errors.MessageAlreadySettled if the message has been settled. - :raises: ~azure.servicebus.common.errors.MessageLockExpired if message lock has already expired. - :raises: ~azure.servicebus.common.errors.SessionLockExpired if session lock has already expired. - :raises: ~azure.servicebus.common.errors.MessageSettleFailed if message settle operation fails. + :raises: ~azure.servicebus.exceptions.MessageAlreadySettled if the message has been settled. + :raises: ~azure.servicebus.exceptions.MessageLockExpired if message lock has already expired. + :raises: ~azure.servicebus.exceptions.SessionLockExpired if session lock has already expired. + :raises: ~azure.servicebus.exceptions.MessageSettleFailed if message settle operation fails. """ - self._is_live(MESSAGE_DEFER) - try: - self._receiver._settle_message(SETTLEMENT_DEFER, [self.lock_token]) # pylint: disable=protected-access - except Exception as e: - raise MessageSettleFailed(MESSAGE_DEFER, e) + self._check_live(MESSAGE_DEFER) + self._settle_message(MESSAGE_DEFER) self._settled = True def renew_lock(self): @@ -625,15 +687,15 @@ def renew_lock(self): :rtype: None :raises: TypeError if the message is sessionful. - :raises: ~azure.servicebus.common.errors.MessageLockExpired is message lock has already expired. - :raises: ~azure.servicebus.common.errors.MessageAlreadySettled is message has already been settled. + :raises: ~azure.servicebus.exceptions.MessageLockExpired is message lock has already expired. + :raises: ~azure.servicebus.exceptions.MessageAlreadySettled is message has already been settled. """ try: if self._receiver.session: raise TypeError("Session messages cannot be renewed. Please renew the Session lock instead.") except AttributeError: pass - self._is_live(MESSAGE_RENEW_LOCK) + self._check_live(MESSAGE_RENEW_LOCK) token = self.lock_token if not token: raise ValueError("Unable to renew lock - no lock token found.") diff --git a/sdk/servicebus/azure-servicebus/azure/servicebus/_common/mgmt_handlers.py b/sdk/servicebus/azure-servicebus/azure/servicebus/_common/mgmt_handlers.py index b42d2cd955cb..48ebdfe156ec 100644 --- a/sdk/servicebus/azure-servicebus/azure/servicebus/_common/mgmt_handlers.py +++ b/sdk/servicebus/azure-servicebus/azure/servicebus/_common/mgmt_handlers.py @@ -69,7 +69,7 @@ def deferred_message_op( parsed = [] for m in message.get_data()[b'messages']: wrapped = uamqp.Message.decode_from_bytes(bytearray(m[b'message'])) - parsed.append(message_type(wrapped, mode)) + parsed.append(message_type(wrapped, mode, is_deferred_message=True)) return parsed if status_code in [202, 204]: return [] diff --git a/sdk/servicebus/azure-servicebus/azure/servicebus/_common/receiver_mixins.py b/sdk/servicebus/azure-servicebus/azure/servicebus/_common/receiver_mixins.py index b25666500c4c..15b43563d8d1 100644 --- a/sdk/servicebus/azure-servicebus/azure/servicebus/_common/receiver_mixins.py +++ b/sdk/servicebus/azure-servicebus/azure/servicebus/_common/receiver_mixins.py @@ -45,8 +45,8 @@ def _build_message(self, received, message_type=ReceivedMessage): self._last_received_sequenced_number = message.sequence_number return message - def _can_run(self): - return True + def _check_live(self): + """check whether the receiver is alive""" def _get_source(self): return self._entity_uri @@ -78,7 +78,7 @@ def _on_attach(self, source, target, properties, error): # pylint: disable=unus self._session_id = session_filter.decode(self._config.encoding) self._session._session_id = self._session_id - def _can_run(self): + def _check_live(self): if self._session and self._session.expired: raise SessionLockExpired(inner_exception=self._session.auto_renew_error) diff --git a/sdk/servicebus/azure-servicebus/azure/servicebus/_servicebus_receiver.py b/sdk/servicebus/azure-servicebus/azure/servicebus/_servicebus_receiver.py index 09a5505b68d9..61fa703daceb 100644 --- a/sdk/servicebus/azure-servicebus/azure/servicebus/_servicebus_receiver.py +++ b/sdk/servicebus/azure-servicebus/azure/servicebus/_servicebus_receiver.py @@ -130,7 +130,7 @@ def __iter__(self): return self def __next__(self): - self._can_run() + self._check_live() while True: try: return self._do_retryable_operation(self._iter_next) @@ -305,7 +305,10 @@ def receive(self, max_batch_size=None, max_wait_time=None): :caption: Receive messages from ServiceBus. """ - self._can_run() + self._check_live() + if max_batch_size and self._config.prefetch < max_batch_size: + raise ValueError("max_batch_size should be less than or equal to prefetch of ServiceBusReceiver, or you " + "could set a larger prefetch value when you're constructing the ServiceBusReceiver.") return self._do_retryable_operation( self._receive, max_batch_size=max_batch_size, @@ -334,7 +337,7 @@ def receive_deferred_messages(self, sequence_numbers): :caption: Receive deferred messages from ServiceBus. """ - self._can_run() + self._check_live() if not sequence_numbers: raise ValueError("At least one sequence number must be specified.") self._open() @@ -381,7 +384,7 @@ def peek(self, message_count=1, sequence_number=None): :caption: Look at pending messages in the queue. """ - self._can_run() + self._check_live() if not sequence_number: sequence_number = self._last_received_sequenced_number or 1 if int(message_count) < 1: diff --git a/sdk/servicebus/azure-servicebus/azure/servicebus/_servicebus_sender.py b/sdk/servicebus/azure-servicebus/azure/servicebus/_servicebus_sender.py index 00b506101128..96464f088616 100644 --- a/sdk/servicebus/azure-servicebus/azure/servicebus/_servicebus_sender.py +++ b/sdk/servicebus/azure-servicebus/azure/servicebus/_servicebus_sender.py @@ -14,10 +14,9 @@ from ._common import mgmt_handlers from ._common.message import Message, BatchMessage from .exceptions import ( - MessageSendFailed, OperationTimeoutError, - _ServiceBusErrorPolicy -) + _ServiceBusErrorPolicy, + ) from ._common.utils import create_authentication from ._common.constants import ( REQUEST_RESPONSE_CANCEL_SCHEDULED_MESSAGE_OPERATION, @@ -65,7 +64,10 @@ def _set_msg_timeout(self, timeout=None, last_exception=None): def _build_schedule_request(cls, schedule_time_utc, *messages): request_body = {MGMT_REQUEST_MESSAGES: []} for message in messages: - message.schedule(schedule_time_utc) + if not isinstance(message, Message): + raise ValueError("Scheduling batch messages only supports iterables containing Message Objects." + " Received instead: {}".format(message.__class__.__name__)) + message.scheduled_enqueue_time_utc = schedule_time_utc message_data = {} message_data[MGMT_REQUEST_MESSAGE_ID] = message.properties.message_id if message.properties.group_id: @@ -183,20 +185,17 @@ def _open(self): def _send(self, message, timeout=None, last_exception=None): self._open() self._set_msg_timeout(timeout, last_exception) - try: - self._handler.send_message(message.message) - except Exception as e: - raise MessageSendFailed(e) + self._handler.send_message(message.message) - def _schedule(self, message, schedule_time_utc): - # type: (Union[Message, BatchMessage], datetime.datetime) -> List[int] - """Send Message or BatchMessage to be enqueued at a specific time. + def schedule(self, messages, schedule_time_utc): + # type: (Union[Message, List[Message]], datetime.datetime) -> List[int] + """Send Message or multiple Messages to be enqueued at a specific time. Returns a list of the sequence numbers of the enqueued messages. - :param message: The messages to schedule. - :type message: ~azure.servicebus.Message or ~azure.servicebus.BatchMessage + :param messages: The message or list of messages to schedule. + :type messages: ~azure.servicebus.Message or list[~azure.servicebus.Message] :param schedule_time_utc: The utc date and time to enqueue the messages. :type schedule_time_utc: ~datetime.datetime - :rtype: List[int] + :rtype: list[int] .. admonition:: Example: @@ -209,17 +208,17 @@ def _schedule(self, message, schedule_time_utc): """ # pylint: disable=protected-access self._open() - if isinstance(message, BatchMessage): - request_body = self._build_schedule_request(schedule_time_utc, *message._messages) + if isinstance(messages, Message): + request_body = self._build_schedule_request(schedule_time_utc, messages) else: - request_body = self._build_schedule_request(schedule_time_utc, message) + request_body = self._build_schedule_request(schedule_time_utc, *messages) return self._mgmt_request_response_with_retry( REQUEST_RESPONSE_SCHEDULE_MESSAGE_OPERATION, request_body, mgmt_handlers.schedule_op ) - def _cancel_scheduled_messages(self, sequence_numbers): + def cancel_scheduled_messages(self, sequence_numbers): # type: (Union[int, List[int]]) -> None """ Cancel one or more messages that have previously been scheduled and are still pending. @@ -227,6 +226,8 @@ def _cancel_scheduled_messages(self, sequence_numbers): :param sequence_numbers: The sequence numbers of the scheduled messages. :type sequence_numbers: int or list[int] :rtype: None + :raises: ~azure.servicebus.exceptions.ServiceBusError if messages cancellation failed due to message already + cancelled or enqueued. .. admonition:: Example: @@ -290,16 +291,24 @@ def from_connection_string( ) return cls(**constructor_args) - def send(self, message, timeout=None): - # type: (Union[Message, BatchMessage], float) -> None + def send(self, message): + # type: (Union[Message, BatchMessage, List[Message]]) -> None """Sends message and blocks until acknowledgement is received or operation times out. + If a list of messages was provided, attempts to send them as a single batch, throwing a + `ValueError` if they cannot fit in a single batch. + :param message: The ServiceBus message to be sent. - :type message: ~azure.servicebus.Message - :param float timeout: The maximum wait time to send the event data. + :type message: ~azure.servicebus.Message or ~azure.servicebus.BatchMessage or list[~azure.servicebus.Message] :rtype: None - :raises: ~azure.servicebus.common.errors.MessageSendFailed if the message fails to - send or ~azure.servicebus.common.errors.OperationTimeoutError if sending times out. + :raises: + :class: ~azure.servicebus.exceptions.OperationTimeoutError if sending times out. + :class: ~azure.servicebus.exceptions.MessageContentTooLarge if the size of the message is over + service bus frame size limit. + :class: ~azure.servicebus.exceptions.MessageSendFailed if the message fails to send + :class: ~azure.servicebus.exceptions.ServiceBusError when other errors happen such as connection + error, authentication error, and any unexpected errors. + It's also the top-level root class of above errors. .. admonition:: Example: @@ -311,10 +320,18 @@ def send(self, message, timeout=None): :caption: Send message. """ + try: + batch = self.create_batch() + batch._from_list(message) + message = batch + except TypeError: # Message was not a list or generator. + pass + if isinstance(message, BatchMessage) and len(message) == 0: + raise ValueError("A BatchMessage or list of Message must have at least one Message") + self._do_retryable_operation( self._send, message=message, - timeout=timeout, require_timeout=True, require_last_exception=True ) diff --git a/sdk/servicebus/azure-servicebus/azure/servicebus/_servicebus_session.py b/sdk/servicebus/azure-servicebus/azure/servicebus/_servicebus_session.py index 211715099671..5de466887c9e 100644 --- a/sdk/servicebus/azure-servicebus/azure/servicebus/_servicebus_session.py +++ b/sdk/servicebus/azure-servicebus/azure/servicebus/_servicebus_session.py @@ -53,7 +53,7 @@ def __init__(self, session_id, receiver, encoding="UTF-8"): self._locked_until_utc = None self.auto_renew_error = None - def _can_run(self): + def _check_live(self): if self.expired: raise SessionLockExpired(inner_exception=self.auto_renew_error) @@ -74,7 +74,7 @@ def get_session_state(self): :dedent: 4 :caption: Get the session state """ - self._can_run() + self._check_live() response = self._receiver._mgmt_request_response_with_retry( # pylint: disable=protected-access REQUEST_RESPONSE_GET_SESSION_STATE_OPERATION, {MGMT_REQUEST_SESSION_ID: self.session_id}, @@ -101,7 +101,7 @@ def set_session_state(self, state): :dedent: 4 :caption: Set the session state """ - self._can_run() + self._check_live() state = state.encode(self._encoding) if isinstance(state, six.text_type) else state return self._receiver._mgmt_request_response_with_retry( # pylint: disable=protected-access REQUEST_RESPONSE_SET_SESSION_STATE_OPERATION, @@ -128,7 +128,7 @@ def renew_lock(self): :dedent: 4 :caption: Renew the session lock before it expires """ - self._can_run() + self._check_live() expiry = self._receiver._mgmt_request_response_with_retry( # pylint: disable=protected-access REQUEST_RESPONSE_RENEW_SESSION_LOCK_OPERATION, {MGMT_REQUEST_SESSION_ID: self.session_id}, diff --git a/sdk/servicebus/azure-servicebus/azure/servicebus/_servicebus_session_receiver.py b/sdk/servicebus/azure-servicebus/azure/servicebus/_servicebus_session_receiver.py index f66d5f55f31b..4a4d2bd702e9 100644 --- a/sdk/servicebus/azure-servicebus/azure/servicebus/_servicebus_session_receiver.py +++ b/sdk/servicebus/azure-servicebus/azure/servicebus/_servicebus_session_receiver.py @@ -155,4 +155,4 @@ def from_connection_string( :caption: Create a new instance of the ServiceBusReceiver from connection string. """ - return super(ServiceBusSessionReceiver, self).from_connection_string(conn_str, **kwargs) + return super(ServiceBusSessionReceiver, cls).from_connection_string(conn_str, **kwargs) diff --git a/sdk/servicebus/azure-servicebus/azure/servicebus/aio/_async_message.py b/sdk/servicebus/azure-servicebus/azure/servicebus/aio/_async_message.py index 891188f1e9a3..ce669a7e6040 100644 --- a/sdk/servicebus/azure-servicebus/azure/servicebus/aio/_async_message.py +++ b/sdk/servicebus/azure-servicebus/azure/servicebus/aio/_async_message.py @@ -3,18 +3,13 @@ # Licensed under the MIT License. See License.txt in the project root for # license information. # ------------------------------------------------------------------------- +import logging from typing import Optional from .._common import message as sync_message from .._common.constants import ( - SETTLEMENT_ABANDON, - SETTLEMENT_COMPLETE, - SETTLEMENT_DEFER, - SETTLEMENT_DEADLETTER, ReceiveSettleMode, MGMT_RESPONSE_MESSAGE_EXPIRATION, - MGMT_REQUEST_DEAD_LETTER_REASON, - MGMT_REQUEST_DEAD_LETTER_DESCRIPTION, MESSAGE_COMPLETE, MESSAGE_DEAD_LETTER, MESSAGE_ABANDON, @@ -24,15 +19,41 @@ from .._common.utils import get_running_loop, utc_from_timestamp from ..exceptions import MessageSettleFailed +_LOGGER = logging.getLogger(__name__) + class ReceivedMessage(sync_message.ReceivedMessage): """A Service Bus Message received from service side. """ - def __init__(self, message, mode=ReceiveSettleMode.PeekLock, loop=None): + def __init__(self, message, mode=ReceiveSettleMode.PeekLock, loop=None, **kwargs): self._loop = loop or get_running_loop() - super(ReceivedMessage, self).__init__(message=message, mode=mode) + super(ReceivedMessage, self).__init__(message=message, mode=mode, **kwargs) + + async def _settle_message( + self, + settle_operation, + dead_letter_details=None + ): + try: + if not self._is_deferred_message: + try: + await self._loop.run_in_executor( + None, + self._settle_via_receiver_link(settle_operation, dead_letter_details) + ) + return + except RuntimeError as exception: + _LOGGER.info( + "Message settling: %r has encountered an exception (%r)." + "Trying to settle through management link", + settle_operation, + exception + ) + await self._settle_via_mgmt_link(settle_operation, dead_letter_details)() + except Exception as e: + raise MessageSettleFailed(settle_operation, e) async def complete(self): # type: () -> None @@ -41,17 +62,14 @@ async def complete(self): This removes the message from the queue. :rtype: None - :raises: ~azure.servicebus.common.errors.MessageAlreadySettled if the message has been settled. - :raises: ~azure.servicebus.common.errors.MessageLockExpired if message lock has already expired. - :raises: ~azure.servicebus.common.errors.SessionLockExpired if session lock has already expired. - :raises: ~azure.servicebus.common.errors.MessageSettleFailed if message settle operation fails. + :raises: ~azure.servicebus.exceptions.MessageAlreadySettled if the message has been settled. + :raises: ~azure.servicebus.exceptions.MessageLockExpired if message lock has already expired. + :raises: ~azure.servicebus.exceptions.SessionLockExpired if session lock has already expired. + :raises: ~azure.servicebus.exceptions.MessageSettleFailed if message settle operation fails. """ # pylint: disable=protected-access - self._is_live(MESSAGE_COMPLETE) - try: - await self._receiver._settle_message(SETTLEMENT_COMPLETE, [self.lock_token]) - except Exception as e: - raise MessageSettleFailed(MESSAGE_COMPLETE, e) + self._check_live(MESSAGE_COMPLETE) + await self._settle_message(MESSAGE_COMPLETE) self._settled = True async def dead_letter(self, reason=None, description=None): @@ -65,23 +83,13 @@ async def dead_letter(self, reason=None, description=None): :param str reason: The reason for dead-lettering the message. :param str description: The detailed description for dead-lettering the message. :rtype: None - :raises: ~azure.servicebus.common.errors.MessageAlreadySettled if the message has been settled. - :raises: ~azure.servicebus.common.errors.MessageLockExpired if message lock has already expired. - :raises: ~azure.servicebus.common.errors.MessageSettleFailed if message settle operation fails. + :raises: ~azure.servicebus.exceptions.MessageAlreadySettled if the message has been settled. + :raises: ~azure.servicebus.exceptions.MessageLockExpired if message lock has already expired. + :raises: ~azure.servicebus.exceptions.MessageSettleFailed if message settle operation fails. """ # pylint: disable=protected-access - self._is_live(MESSAGE_DEAD_LETTER) - details = { - MGMT_REQUEST_DEAD_LETTER_REASON: str(reason) if reason else "", - MGMT_REQUEST_DEAD_LETTER_DESCRIPTION: str(description) if description else ""} - try: - await self._receiver._settle_message( - SETTLEMENT_DEADLETTER, - [self.lock_token], - dead_letter_details=details - ) - except Exception as e: - raise MessageSettleFailed(MESSAGE_DEAD_LETTER, e) + self._check_live(MESSAGE_DEAD_LETTER) + await self._settle_message(MESSAGE_DEAD_LETTER) self._settled = True async def abandon(self): @@ -89,16 +97,13 @@ async def abandon(self): """Abandon the message. This message will be returned to the queue to be reprocessed. :rtype: None - :raises: ~azure.servicebus.common.errors.MessageAlreadySettled if the message has been settled. - :raises: ~azure.servicebus.common.errors.MessageLockExpired if message lock has already expired. - :raises: ~azure.servicebus.common.errors.MessageSettleFailed if message settle operation fails. + :raises: ~azure.servicebus.exceptions.MessageAlreadySettled if the message has been settled. + :raises: ~azure.servicebus.exceptions.MessageLockExpired if message lock has already expired. + :raises: ~azure.servicebus.exceptions.MessageSettleFailed if message settle operation fails. """ # pylint: disable=protected-access - self._is_live(MESSAGE_ABANDON) - try: - await self._receiver._settle_message(SETTLEMENT_ABANDON, [self.lock_token]) - except Exception as e: - raise MessageSettleFailed(MESSAGE_ABANDON, e) + self._check_live(MESSAGE_ABANDON) + await self._settle_message(MESSAGE_ABANDON) self._settled = True async def defer(self): @@ -106,16 +111,13 @@ async def defer(self): """Abandon the message. This message will be returned to the queue to be reprocessed. :rtype: None - :raises: ~azure.servicebus.common.errors.MessageAlreadySettled if the message has been settled. - :raises: ~azure.servicebus.common.errors.MessageLockExpired if message lock has already expired. - :raises: ~azure.servicebus.common.errors.MessageSettleFailed if message settle operation fails. + :raises: ~azure.servicebus.exceptions.MessageAlreadySettled if the message has been settled. + :raises: ~azure.servicebus.exceptions.MessageLockExpired if message lock has already expired. + :raises: ~azure.servicebus.exceptions.MessageSettleFailed if message settle operation fails. """ # pylint: disable=protected-access - self._is_live(MESSAGE_DEFER) - try: - await self._receiver._settle_message(SETTLEMENT_DEFER, [self.lock_token]) - except Exception as e: - raise MessageSettleFailed(MESSAGE_DEFER, e) + self._check_live(MESSAGE_DEFER) + await self._settle_message(MESSAGE_DEFER) self._settled = True async def renew_lock(self): @@ -131,16 +133,16 @@ async def renew_lock(self): :rtype: None :raises: TypeError if the message is sessionful. - :raises: ~azure.servicebus.common.errors.MessageLockExpired is message lock has already expired. - :raises: ~azure.servicebus.common.errors.SessionLockExpired if session lock has already expired. - :raises: ~azure.servicebus.common.errors.MessageAlreadySettled is message has already been settled. + :raises: ~azure.servicebus.exceptions.MessageLockExpired is message lock has already expired. + :raises: ~azure.servicebus.exceptions.SessionLockExpired if session lock has already expired. + :raises: ~azure.servicebus.exceptions.MessageAlreadySettled is message has already been settled. """ try: if self._receiver.session: # pylint: disable=protected-access raise TypeError("Session messages cannot be renewed. Please renew the Session lock instead.") except AttributeError: pass - self._is_live(MESSAGE_RENEW_LOCK) + self._check_live(MESSAGE_RENEW_LOCK) token = self.lock_token if not token: raise ValueError("Unable to renew lock - no lock token found.") diff --git a/sdk/servicebus/azure-servicebus/azure/servicebus/aio/_base_handler_async.py b/sdk/servicebus/azure-servicebus/azure/servicebus/aio/_base_handler_async.py index aaa7fb61a06a..a2ae3957cc98 100644 --- a/sdk/servicebus/azure-servicebus/azure/servicebus/aio/_base_handler_async.py +++ b/sdk/servicebus/azure-servicebus/azure/servicebus/aio/_base_handler_async.py @@ -16,7 +16,6 @@ ASSOCIATEDLINKPROPERTYNAME ) from ..exceptions import ( - InvalidHandlerState, ServiceBusError, _create_servicebus_exception ) @@ -139,8 +138,6 @@ async def _do_retryable_operation(self, operation, timeout=None, **kwargs): async def _mgmt_request_response(self, mgmt_operation, message, callback, keep_alive_associated_link=True, **kwargs): await self._open() - if not self._running: - raise InvalidHandlerState("Client connection is closed.") application_properties = {} # Some mgmt calls do not support an associated link name (such as list_sessions). Most do, so on by default. diff --git a/sdk/servicebus/azure-servicebus/azure/servicebus/aio/_servicebus_receiver_async.py b/sdk/servicebus/azure-servicebus/azure/servicebus/aio/_servicebus_receiver_async.py index 7ac67fefc4c3..ece5fa697f0e 100644 --- a/sdk/servicebus/azure-servicebus/azure/servicebus/aio/_servicebus_receiver_async.py +++ b/sdk/servicebus/azure-servicebus/azure/servicebus/aio/_servicebus_receiver_async.py @@ -125,7 +125,7 @@ def __init__( self._connection = kwargs.get("connection") async def __anext__(self): - self._can_run() + self._check_live() while True: try: return await self._do_retryable_operation(self._iter_next) @@ -170,7 +170,7 @@ async def _open(self): await asyncio.sleep(0.05) self._running = True except: - self.close() + await self.close() raise async def _receive(self, max_batch_size=None, timeout=None): @@ -295,7 +295,10 @@ async def receive(self, max_batch_size=None, max_wait_time=None): :caption: Receive messages from ServiceBus. """ - self._can_run() + self._check_live() + if max_batch_size and self._config.prefetch < max_batch_size: + raise ValueError("max_batch_size should be less than or equal to prefetch of ServiceBusReceiver, or you " + "could set a larger prefetch value when you're constructing the ServiceBusReceiver.") return await self._do_retryable_operation( self._receive, max_batch_size=max_batch_size, @@ -324,7 +327,7 @@ async def receive_deferred_messages(self, sequence_numbers): :caption: Receive deferred messages from ServiceBus. """ - self._can_run() + self._check_live() if not sequence_numbers: raise ValueError("At least one sequence number must be specified.") await self._open() @@ -369,7 +372,7 @@ async def peek(self, message_count=1, sequence_number=0): :dedent: 4 :caption: Peek messages in the queue. """ - self._can_run() + self._check_live() if not sequence_number: sequence_number = self._last_received_sequenced_number or 1 if int(message_count) < 1: diff --git a/sdk/servicebus/azure-servicebus/azure/servicebus/aio/_servicebus_sender_async.py b/sdk/servicebus/azure-servicebus/azure/servicebus/aio/_servicebus_sender_async.py index 6ad5e1c28cf6..e672dc868ad4 100644 --- a/sdk/servicebus/azure-servicebus/azure/servicebus/aio/_servicebus_sender_async.py +++ b/sdk/servicebus/azure-servicebus/azure/servicebus/aio/_servicebus_sender_async.py @@ -12,9 +12,6 @@ from .._common.message import Message, BatchMessage from .._servicebus_sender import SenderMixin from ._base_handler_async import BaseHandlerAsync -from ..exceptions import ( - MessageSendFailed -) from .._common.constants import ( REQUEST_RESPONSE_SCHEDULE_MESSAGE_OPERATION, REQUEST_RESPONSE_CANCEL_SCHEDULED_MESSAGE_OPERATION, @@ -128,26 +125,23 @@ async def _open(self): self._max_message_size_on_link = self._handler.message_handler._link.peer_max_message_size \ or uamqp.constants.MAX_MESSAGE_LENGTH_BYTES except: - self.close() + await self.close() raise async def _send(self, message, timeout=None, last_exception=None): await self._open() self._set_msg_timeout(timeout, last_exception) - try: - await self._handler.send_message_async(message.message) - except Exception as e: - raise MessageSendFailed(e) + await self._handler.send_message_async(message.message) - async def _schedule(self, message, schedule_time_utc): - # type: (Union[Message, BatchMessage], datetime.datetime) -> List[int] - """Send Message or BatchMessage to be enqueued at a specific time. + async def schedule(self, messages, schedule_time_utc): + # type: (Union[Message, List[Message]], datetime.datetime) -> List[int] + """Send Message or multiple Messages to be enqueued at a specific time. Returns a list of the sequence numbers of the enqueued messages. - :param message: The messages to schedule. - :type message: ~azure.servicebus.Message or ~azure.servicebus.BatchMessage + :param messages: The message or list of messages to schedule. + :type messages: ~azure.servicebus.Message or list[~azure.servicebus.Message] :param schedule_time_utc: The utc date and time to enqueue the messages. :type schedule_time_utc: ~datetime.datetime - :rtype: List[int] + :rtype: list[int] .. admonition:: Example: @@ -160,24 +154,26 @@ async def _schedule(self, message, schedule_time_utc): """ # pylint: disable=protected-access await self._open() - if isinstance(message, BatchMessage): - request_body = self._build_schedule_request(schedule_time_utc, *message._messages) + if isinstance(messages, Message): + request_body = self._build_schedule_request(schedule_time_utc, messages) else: - request_body = self._build_schedule_request(schedule_time_utc, message) + request_body = self._build_schedule_request(schedule_time_utc, *messages) return await self._mgmt_request_response_with_retry( REQUEST_RESPONSE_SCHEDULE_MESSAGE_OPERATION, request_body, mgmt_handlers.schedule_op ) - async def _cancel_scheduled_messages(self, sequence_numbers): + async def cancel_scheduled_messages(self, sequence_numbers): # type: (Union[int, List[int]]) -> None """ Cancel one or more messages that have previously been scheduled and are still pending. - :param sequence_numbers: he sequence numbers of the scheduled messages. + :param sequence_numbers: The sequence numbers of the scheduled messages. :type sequence_numbers: int or list[int] :rtype: None + :raises: ~azure.servicebus.exceptions.ServiceBusError if messages cancellation failed due to message already + cancelled or enqueued. .. admonition:: Example: @@ -238,16 +234,24 @@ def from_connection_string( ) return cls(**constructor_args) - async def send(self, message, timeout=None): - # type: (Message, float) -> None + async def send(self, message): + # type: (Union[Message, BatchMessage, List[Message]]) -> None """Sends message and blocks until acknowledgement is received or operation times out. + If a list of messages was provided, attempts to send them as a single batch, throwing a + `ValueError` if they cannot fit in a single batch. + :param message: The ServiceBus message to be sent. - :type message: ~azure.servicebus.Message - :param float timeout: The maximum wait time to send the event data. + :type message: ~azure.servicebus.Message or ~azure.servicebus.BatchMessage or list[~azure.servicebus.Message] :rtype: None - :raises: ~azure.servicebus.common.errors.MessageSendFailed if the message fails to - send or ~azure.servicebus.common.errors.OperationTimeoutError if sending times out. + :raises: + :class: ~azure.servicebus.exceptions.OperationTimeoutError if sending times out. + :class: ~azure.servicebus.exceptions.MessageContentTooLarge if the size of the message is over + service bus frame size limit. + :class: ~azure.servicebus.exceptions.MessageSendFailed if the message fails to send + :class: ~azure.servicebus.exceptions.ServiceBusError when other errors happen such as connection + error, authentication error, and any unexpected errors. + It's also the top-level root class of above errors. .. admonition:: Example: @@ -259,10 +263,18 @@ async def send(self, message, timeout=None): :caption: Send message. """ + try: + batch = await self.create_batch() + batch._from_list(message) + message = batch + except TypeError: # Message was not a list or generator. + pass + if isinstance(message, BatchMessage) and len(message) == 0: + raise ValueError("A BatchMessage or list of Message must have at least one Message") + await self._do_retryable_operation( self._send, message=message, - timeout=timeout, require_timeout=True, require_last_exception=True ) diff --git a/sdk/servicebus/azure-servicebus/azure/servicebus/aio/_servicebus_session_async.py b/sdk/servicebus/azure-servicebus/azure/servicebus/aio/_servicebus_session_async.py index 60a26aed1083..3f424e8078d2 100644 --- a/sdk/servicebus/azure-servicebus/azure/servicebus/aio/_servicebus_session_async.py +++ b/sdk/servicebus/azure-servicebus/azure/servicebus/aio/_servicebus_session_async.py @@ -56,7 +56,7 @@ async def get_session_state(self): :dedent: 4 :caption: Get the session state """ - self._can_run() + self._check_live() response = await self._receiver._mgmt_request_response_with_retry( # pylint: disable=protected-access REQUEST_RESPONSE_GET_SESSION_STATE_OPERATION, {MGMT_REQUEST_SESSION_ID: self.session_id}, @@ -83,7 +83,7 @@ async def set_session_state(self, state): :dedent: 4 :caption: Set the session state """ - self._can_run() + self._check_live() state = state.encode(self._encoding) if isinstance(state, six.text_type) else state return await self._receiver._mgmt_request_response_with_retry( # pylint: disable=protected-access REQUEST_RESPONSE_SET_SESSION_STATE_OPERATION, @@ -110,7 +110,7 @@ async def renew_lock(self): :dedent: 4 :caption: Renew the session lock before it expires """ - self._can_run() + self._check_live() expiry = await self._receiver._mgmt_request_response_with_retry( # pylint: disable=protected-access REQUEST_RESPONSE_RENEW_SESSION_LOCK_OPERATION, {MGMT_REQUEST_SESSION_ID: self.session_id}, diff --git a/sdk/servicebus/azure-servicebus/azure/servicebus/aio/_servicebus_session_receiver_async.py b/sdk/servicebus/azure-servicebus/azure/servicebus/aio/_servicebus_session_receiver_async.py index ce6229e3af54..7e532a68ab8e 100644 --- a/sdk/servicebus/azure-servicebus/azure/servicebus/aio/_servicebus_session_receiver_async.py +++ b/sdk/servicebus/azure-servicebus/azure/servicebus/aio/_servicebus_session_receiver_async.py @@ -134,7 +134,7 @@ def from_connection_string( :caption: Create a new instance of the ServiceBusReceiver from connection string. """ - return super(ServiceBusSessionReceiver, self).from_connection_string(conn_str, **kwargs) + return super(ServiceBusSessionReceiver, cls).from_connection_string(conn_str, **kwargs) @property diff --git a/sdk/servicebus/azure-servicebus/azure/servicebus/exceptions.py b/sdk/servicebus/azure-servicebus/azure/servicebus/exceptions.py index 0a6195380c91..7270154a2db9 100644 --- a/sdk/servicebus/azure-servicebus/azure/servicebus/exceptions.py +++ b/sdk/servicebus/azure-servicebus/azure/servicebus/exceptions.py @@ -65,10 +65,22 @@ def _error_handler(error): def _create_servicebus_exception(logger, exception, handler): error_need_close_handler = True error_need_raise = False - - if isinstance(exception, MessageSendFailed): - logger.info("Message send error (%r)", exception) - error = exception + if isinstance(exception, errors.MessageAlreadySettled): + logger.info("Message already settled (%r)", exception) + error = MessageAlreadySettled(exception) + error_need_close_handler = False + error_need_raise = True + elif isinstance(exception, errors.MessageContentTooLarge) or \ + (isinstance(exception, errors.MessageException) and + exception.condition == constants.ErrorCodes.LinkMessageSizeExceeded): + logger.info("Message content is too large (%r)", exception) + error = MessageContentTooLarge(exception) + error_need_close_handler = False + error_need_raise = True + elif isinstance(exception, errors.MessageException): + logger.info("Message send failed (%r)", exception) + error = MessageSendFailed(exception) + error_need_raise = False elif isinstance(exception, errors.LinkDetach) and exception.condition == SESSION_LOCK_LOST: try: session_id = handler._session_id # pylint: disable=protected-access @@ -81,7 +93,7 @@ def _create_servicebus_exception(logger, exception, handler): error_need_raise = True elif isinstance(exception, errors.AuthenticationException): logger.info("Authentication failed due to exception: (%r).", exception) - error = ServiceBusAuthorizationError(str(exception), exception) + error = ServiceBusAuthenticationError(str(exception), exception) elif isinstance(exception, (errors.LinkDetach, errors.ConnectionClose)): logger.info("Handler detached due to exception: (%r).", exception) if exception.condition == constants.ErrorCodes.UnauthorizedAccess: @@ -159,8 +171,8 @@ class ServiceBusAuthorizationError(ServiceBusError): """An error occured when authorizing the connection.""" -class InvalidHandlerState(ServiceBusError): - """An attempt to run a handler operation that the handler is not in the right state to perform.""" +class ServiceBusAuthenticationError(ServiceBusError): + """An error occured when authenticate the connection.""" class NoActiveSession(ServiceBusError): @@ -171,7 +183,15 @@ class OperationTimeoutError(ServiceBusError): """Operation timed out.""" -class MessageAlreadySettled(ServiceBusError): +class MessageError(ServiceBusError): + """A message failed to send because the message is in a wrong state""" + + +class MessageContentTooLarge(MessageError, ValueError): + """Message content is larger than the service bus frame size""" + + +class MessageAlreadySettled(MessageError): """Failed to settle the message. An attempt was made to complete an operation on a message that has already diff --git a/sdk/servicebus/azure-servicebus/migration_guide.md b/sdk/servicebus/azure-servicebus/migration_guide.md index 7d74fbb615e2..df54ffe743cb 100644 --- a/sdk/servicebus/azure-servicebus/migration_guide.md +++ b/sdk/servicebus/azure-servicebus/migration_guide.md @@ -49,6 +49,13 @@ semantics with the sender or receiver lifetime. | `QueueClient.from_connection_string().send() and ServiceBusClient.from_connection_string().get_queue().get_sender().send()`| `ServiceBusClient.from_connection_string().get_queue_sender().send()`| [Get a sender and send a message](./samples/sync_samples/send_queue.py) | | `queue_client.send(BatchMessage(["data 1", "data 2", ...]))`| `batch = queue_sender.create_batch() batch.add(Message("data 1")) queue_sender.send(batch)`| [Create and send a batch of messages](./samples/sync_samples/send_queue.py) | +### Scheduling messages and cancelling scheduled messages + +| In v0.50 | Equivalent in v7 | Sample | +|---|---|---| +| `queue_client.get_sender().schedule(schedule_time_utc, message1, message2)` | `sb_client.get_queue_sender().schedule([message1, message2], schedule_time_utc)` | [Schedule messages](./samples/sync_samples/schedule_messages_and_cancellation.py) | +| `queue_client.get_sender().cancel_scheduled_messages(sequence_number1, sequence_number2)`| `sb_client.get_queue_sender().cancel_scheduled_messages([sequence_number1, sequence_number2])` | [Cancel scheduled messages](./samples/sync_samples/schedule_messages_and_cancellation.py)| + ### Working with sessions | In v0.50 | Equivalent in v7 | Sample | diff --git a/sdk/servicebus/azure-servicebus/samples/README.md b/sdk/servicebus/azure-servicebus/samples/README.md index 10546948e2a7..fc2453a9e592 100644 --- a/sdk/servicebus/azure-servicebus/samples/README.md +++ b/sdk/servicebus/azure-servicebus/samples/README.md @@ -33,6 +33,9 @@ Both [sync version](./sync_samples) and [async version](./async_samples) of samp - [session_send_receive.py](./sync_samples/session_send_receive.py) ([async_version](./async_samples/session_send_receive_async.py)) - Examples to send messages to and receive messages from a session-enabled service bus queue: - Send messages to a session-enabled queue - Receive messages from session-enabled queue +- [schedule_messages_and_cancellation](./sync_samples/schedule_messages_and_cancellation.py) ([async_version](./async_samples/schedule_messages_and_cancellation_async.py)) - Examples to schedule messages and cancel scheduled message: + - Schedule a single message or multiples messages to a queue + - Cancel scheduled messages from a queue - [client_identity_authentication.py](./sync_samples/client_identity_authentication.py) ([async_version](./async_samples/client_identity_authentication_async.py)) - Examples to authenticate the client by Azure Activate Directory - Authenticate and create the client utilizing the `azure.identity` library - [proxy.py](./sync_samples/proxy.py) ([async_version](./async_samples/proxy_async.py)) - Examples to send message behind a proxy: diff --git a/sdk/servicebus/azure-servicebus/samples/async_samples/receive_deferred_message_queue_async.py b/sdk/servicebus/azure-servicebus/samples/async_samples/receive_deferred_message_queue_async.py index fdf8c9950709..f945cb0ae919 100644 --- a/sdk/servicebus/azure-servicebus/samples/async_samples/receive_deferred_message_queue_async.py +++ b/sdk/servicebus/azure-servicebus/samples/async_samples/receive_deferred_message_queue_async.py @@ -14,7 +14,6 @@ import os import asyncio from azure.servicebus.aio import ServiceBusClient -from azure.servicebus import ReceiveSettleMode CONNECTION_STR = os.environ['SERVICE_BUS_CONNECTION_STR'] QUEUE_NAME = os.environ["SERVICE_BUS_QUEUE_NAME"] diff --git a/sdk/servicebus/azure-servicebus/samples/async_samples/sample_code_servicebus_async.py b/sdk/servicebus/azure-servicebus/samples/async_samples/sample_code_servicebus_async.py index 30caeab27de8..105c9920dac3 100644 --- a/sdk/servicebus/azure-servicebus/samples/async_samples/sample_code_servicebus_async.py +++ b/sdk/servicebus/azure-servicebus/samples/async_samples/sample_code_servicebus_async.py @@ -12,6 +12,7 @@ - Receive and settle deferred messages """ import os +import datetime import asyncio from azure.servicebus.aio import ServiceBusClient from azure.servicebus import Message @@ -35,7 +36,7 @@ def example_create_servicebus_client_async(): # [START create_sb_client_async] import os from azure.servicebus.aio import ServiceBusClient, ServiceBusSharedKeyCredential - fully_qualified_namespace = os.environ['SERVICE_BUS_CONNECTION_STR'] + fully_qualified_namespace = os.environ['SERVICE_BUS_FULLY_QUALIFIED_NAMESPACE'] shared_access_policy = os.environ['SERVICE_BUS_SAS_POLICY'] shared_access_key = os.environ['SERVICE_BUS_SAS_KEY'] servicebus_client = ServiceBusClient( @@ -65,7 +66,7 @@ async def example_create_servicebus_sender_async(): # [START create_servicebus_sender_async] import os from azure.servicebus.aio import ServiceBusSender, ServiceBusSharedKeyCredential - fully_qualified_namespace = os.environ['SERVICE_BUS_CONNECTION_STR'] + fully_qualified_namespace = os.environ['SERVICE_BUS_FULLY_QUALIFIED_NAMESPACE'] shared_access_policy = os.environ['SERVICE_BUS_SAS_POLICY'] shared_access_key = os.environ['SERVICE_BUS_SAS_KEY'] queue_name = os.environ['SERVICE_BUS_QUEUE_NAME'] @@ -96,7 +97,7 @@ async def example_create_servicebus_sender_async(): topic_name = os.environ['SERVICE_BUS_TOPIC_NAME'] servicebus_client = ServiceBusClient.from_connection_string(conn_str=servicebus_connection_str) async with servicebus_client: - queue_sender = servicebus_client.get_topic_sender(topic_name=topic_name) + topic_sender = servicebus_client.get_topic_sender(topic_name=topic_name) # [END create_topic_sender_from_sb_client_async] return queue_sender @@ -119,7 +120,7 @@ async def example_create_servicebus_receiver_async(): # [START create_servicebus_receiver_async] import os from azure.servicebus.aio import ServiceBusReceiver, ServiceBusSharedKeyCredential - fully_qualified_namespace = os.environ['SERVICE_BUS_CONNECTION_STR'] + fully_qualified_namespace = os.environ['SERVICE_BUS_FULLY_QUALIFIED_NAMESPACE'] shared_access_policy = os.environ['SERVICE_BUS_SAS_POLICY'] shared_access_key = os.environ['SERVICE_BUS_SAS_KEY'] queue_name = os.environ['SERVICE_BUS_QUEUE_NAME'] @@ -271,8 +272,24 @@ async def example_session_ops_async(): break +async def example_schedule_ops_async(): + servicebus_sender = await example_create_servicebus_sender_async() + # [START scheduling_messages_async] + async with servicebus_sender: + scheduled_time_utc = datetime.datetime.utcnow() + datetime.timedelta(seconds=30) + scheduled_messages = [Message("Scheduled message") for _ in range(10)] + sequence_nums = await servicebus_sender.schedule(scheduled_messages, scheduled_time_utc) + # [END scheduling_messages_async] + + # [START cancel_scheduled_messages_async] + async with servicebus_sender: + await servicebus_sender.cancel_scheduled_messages(sequence_nums) + # [END cancel_scheduled_messages_async] + + if __name__ == "__main__": loop = asyncio.get_event_loop() loop.run_until_complete(example_send_and_receive_async()) loop.run_until_complete(example_receive_deferred_async()) + loop.run_until_complete(example_schedule_ops_async()) # loop.run_until_complete(example_session_ops_async()) diff --git a/sdk/servicebus/azure-servicebus/samples/async_samples/schedule_messages_and_cancellation_async.py b/sdk/servicebus/azure-servicebus/samples/async_samples/schedule_messages_and_cancellation_async.py new file mode 100644 index 000000000000..05458e1169dc --- /dev/null +++ b/sdk/servicebus/azure-servicebus/samples/async_samples/schedule_messages_and_cancellation_async.py @@ -0,0 +1,56 @@ +#!/usr/bin/env python + +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# -------------------------------------------------------------------------------------------- + +""" +Example to show scheduling messages to and cancelling messages from a Service Bus Queue asynchronously. +""" + +# pylint: disable=C0111 + +import os +import asyncio +import datetime +from azure.servicebus.aio import ServiceBusClient +from azure.servicebus import Message + +CONNECTION_STR = os.environ['SERVICE_BUS_CONNECTION_STR'] +QUEUE_NAME = os.environ["SERVICE_BUS_QUEUE_NAME"] + + +async def schedule_single_message(sender): + message = Message("Message to be scheduled") + scheduled_time_utc = datetime.datetime.utcnow() + datetime.timedelta(seconds=30) + sequence_number = await sender.schedule(message, scheduled_time_utc) + return sequence_number + + +async def schedule_multiple_messages(sender): + messages_to_schedule = [] + for _ in range(10): + messages_to_schedule.append(Message("Message to be scheduled")) + + scheduled_time_utc = datetime.datetime.utcnow() + datetime.timedelta(seconds=30) + sequence_numbers = await sender.schedule(messages_to_schedule, scheduled_time_utc) + return sequence_numbers + + +async def main(): + servicebus_client = ServiceBusClient.from_connection_string(conn_str=CONNECTION_STR, logging_enable=True) + async with servicebus_client: + sender = servicebus_client.get_queue_sender(queue_name=QUEUE_NAME) + async with sender: + sequence_number = await schedule_single_message(sender) + print("Single message is scheduled and sequence number is {}".format(sequence_number)) + sequence_numbers = await schedule_multiple_messages(sender) + print("Multiple messages are scheduled and sequence numbers are {}".format(sequence_numbers)) + + await sender.cancel_scheduled_messages(sequence_number) + await sender.cancel_scheduled_messages(sequence_numbers) + print("All scheduled messages are cancelled.") + +loop = asyncio.get_event_loop() +loop.run_until_complete(main()) diff --git a/sdk/servicebus/azure-servicebus/samples/async_samples/session_pool_receive_async.py b/sdk/servicebus/azure-servicebus/samples/async_samples/session_pool_receive_async.py new file mode 100644 index 000000000000..567e6deafbf3 --- /dev/null +++ b/sdk/servicebus/azure-servicebus/samples/async_samples/session_pool_receive_async.py @@ -0,0 +1,65 @@ +#!/usr/bin/env python + +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# -------------------------------------------------------------------------------------------- +import os +import asyncio +import uuid + +from azure.servicebus.aio import ServiceBusClient, AutoLockRenew +from azure.servicebus import Message +from azure.servicebus.exceptions import NoActiveSession + + +CONNECTION_STR = os.environ['SERVICE_BUS_CONNECTION_STR'] +# Note: This must be a session-enabled queue. +QUEUE_NAME = os.environ["SERVICE_BUS_QUEUE_NAME"] + + +async def message_processing(servicebus_client, queue_name): + while True: + try: + async with servicebus_client.get_queue_session_receiver(queue_name, idle_timeout=1) as receiver: + renewer = AutoLockRenew() + renewer.register(receiver.session) + await receiver.session.set_session_state("OPEN") + async for message in receiver: + print("Message: {}".format(message)) + print("Time to live: {}".format(message.header.time_to_live)) + print("Sequence number: {}".format(message.sequence_number)) + print("Enqueue Sequence numger: {}".format(message.enqueue_sequence_number)) + print("Partition ID: {}".format(message.partition_id)) + print("Partition Key: {}".format(message.partition_key)) + print("Locked until: {}".format(message.locked_until_utc)) + print("Lock Token: {}".format(message.lock_token)) + print("Enqueued time: {}".format(message.enqueued_time_utc)) + await message.complete() + if str(message) == 'shutdown': + await receiver.session.set_session_state("CLOSED") + break + await renewer.shutdown() + except NoActiveSession: + print("There are no non-empty sessions remaining; exiting. This may present as a UserError in the azure portal.") + return + + +async def sample_session_send_receive_with_pool_async(connection_string, queue_name): + + concurrent_receivers = 5 + sessions = [str(uuid.uuid4()) for i in range(concurrent_receivers)] + client = ServiceBusClient.from_connection_string(connection_string) + + for session_id in sessions: + async with client.get_queue_sender(queue_name) as sender: + await asyncio.gather(*[sender.send(Message("Sample message no. {}".format(i), session_id=session_id)) for i in range(20)]) + await sender.send(Message("shutdown", session_id=session_id)) + + receive_sessions = [message_processing(client, queue_name) for _ in range(concurrent_receivers)] + await asyncio.gather(*receive_sessions) + + +if __name__ == '__main__': + loop = asyncio.get_event_loop() + loop.run_until_complete(sample_session_send_receive_with_pool_async(CONNECTION_STR, QUEUE_NAME)) \ No newline at end of file diff --git a/sdk/servicebus/azure-servicebus/samples/async_samples/session_send_receive_async.py b/sdk/servicebus/azure-servicebus/samples/async_samples/session_send_receive_async.py index a62b6449da56..b72de8d345be 100644 --- a/sdk/servicebus/azure-servicebus/samples/async_samples/session_send_receive_async.py +++ b/sdk/servicebus/azure-servicebus/samples/async_samples/session_send_receive_async.py @@ -6,7 +6,7 @@ # -------------------------------------------------------------------------------------------- """ -Example to show sending message(s) to and receiving messages from a Service Bus Queue with session enabled. asynchronously. +Example to show sending message(s) to and receiving messages from a Service Bus Queue with session enabled asynchronously. """ # pylint: disable=C0111 diff --git a/sdk/servicebus/azure-servicebus/samples/sync_samples/sample_code_servicebus.py b/sdk/servicebus/azure-servicebus/samples/sync_samples/sample_code_servicebus.py index adb73303ddad..9155886e31b0 100644 --- a/sdk/servicebus/azure-servicebus/samples/sync_samples/sample_code_servicebus.py +++ b/sdk/servicebus/azure-servicebus/samples/sync_samples/sample_code_servicebus.py @@ -32,7 +32,7 @@ def example_create_servicebus_client_sync(): # [START create_sb_client_sync] import os from azure.servicebus import ServiceBusClient, ServiceBusSharedKeyCredential - fully_qualified_namespace = os.environ['SERVICE_BUS_CONNECTION_STR'] + fully_qualified_namespace = os.environ['SERVICE_BUS_FULLY_QUALIFIED_NAMESPACE'] shared_access_policy = os.environ['SERVICE_BUS_SAS_POLICY'] shared_access_key = os.environ['SERVICE_BUS_SAS_KEY'] servicebus_client = ServiceBusClient( @@ -62,7 +62,7 @@ def example_create_servicebus_sender_sync(): # [START create_servicebus_sender_sync] import os from azure.servicebus import ServiceBusSender, ServiceBusSharedKeyCredential - fully_qualified_namespace = os.environ['SERVICE_BUS_CONNECTION_STR'] + fully_qualified_namespace = os.environ['SERVICE_BUS_FULLY_QUALIFIED_NAMESPACE'] shared_access_policy = os.environ['SERVICE_BUS_SAS_POLICY'] shared_access_key = os.environ['SERVICE_BUS_SAS_KEY'] queue_name = os.environ['SERVICE_BUS_QUEUE_NAME'] @@ -93,7 +93,7 @@ def example_create_servicebus_sender_sync(): topic_name = os.environ['SERVICE_BUS_TOPIC_NAME'] servicebus_client = ServiceBusClient.from_connection_string(conn_str=servicebus_connection_str) with servicebus_client: - queue_sender = servicebus_client.get_topic_sender(topic_name=topic_name) + topic_sender = servicebus_client.get_topic_sender(topic_name=topic_name) # [END create_topic_sender_from_sb_client_sync] return queue_sender @@ -116,7 +116,7 @@ def example_create_servicebus_receiver_sync(): # [START create_servicebus_receiver_sync] import os from azure.servicebus import ServiceBusReceiver, ServiceBusSharedKeyCredential - fully_qualified_namespace = os.environ['SERVICE_BUS_CONNECTION_STR'] + fully_qualified_namespace = os.environ['SERVICE_BUS_FULLY_QUALIFIED_NAMESPACE'] shared_access_policy = os.environ['SERVICE_BUS_SAS_POLICY'] shared_access_key = os.environ['SERVICE_BUS_SAS_KEY'] queue_name = os.environ['SERVICE_BUS_QUEUE_NAME'] @@ -295,6 +295,22 @@ def example_session_ops_sync(): break +def example_schedule_ops_sync(): + servicebus_sender = example_create_servicebus_sender_sync() + # [START scheduling_messages] + with servicebus_sender: + scheduled_time_utc = datetime.datetime.utcnow() + datetime.timedelta(seconds=30) + scheduled_messages = [Message("Scheduled message") for _ in range(10)] + sequence_nums = servicebus_sender.schedule(scheduled_messages, scheduled_time_utc) + # [END scheduling_messages] + + # [START cancel_scheduled_messages] + with servicebus_sender: + servicebus_sender.cancel_scheduled_messages(sequence_nums) + # [END cancel_scheduled_messages] + + example_send_and_receive_sync() example_receive_deferred_sync() +example_schedule_ops_sync() # example_session_ops_sync() diff --git a/sdk/servicebus/azure-servicebus/samples/sync_samples/schedule_messages_and_cancellation.py b/sdk/servicebus/azure-servicebus/samples/sync_samples/schedule_messages_and_cancellation.py new file mode 100644 index 000000000000..8d43f3c42deb --- /dev/null +++ b/sdk/servicebus/azure-servicebus/samples/sync_samples/schedule_messages_and_cancellation.py @@ -0,0 +1,50 @@ +#!/usr/bin/env python + +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# -------------------------------------------------------------------------------------------- + +""" +Example to show scheduling messages to and cancelling messages from a Service Bus Queue. +""" + +# pylint: disable=C0111 + +import os +import datetime +from azure.servicebus import ServiceBusClient, Message + +CONNECTION_STR = os.environ['SERVICE_BUS_CONNECTION_STR'] +QUEUE_NAME = os.environ["SERVICE_BUS_QUEUE_NAME"] + + +def schedule_single_message(sender): + message = Message("Message to be scheduled") + scheduled_time_utc = datetime.datetime.utcnow() + datetime.timedelta(seconds=30) + sequence_number = sender.schedule(message, scheduled_time_utc) + return sequence_number + + +def schedule_multiple_messages(sender): + messages_to_schedule = [] + for _ in range(10): + messages_to_schedule.append(Message("Message to be scheduled")) + + scheduled_time_utc = datetime.datetime.utcnow() + datetime.timedelta(seconds=30) + sequence_numbers = sender.schedule(messages_to_schedule, scheduled_time_utc) + return sequence_numbers + + +servicebus_client = ServiceBusClient.from_connection_string(conn_str=CONNECTION_STR, logging_enable=True) +with servicebus_client: + sender = servicebus_client.get_queue_sender(queue_name=QUEUE_NAME) + with sender: + sequence_number = schedule_single_message(sender) + print("Single message is scheduled and sequence number is {}".format(sequence_number)) + sequence_numbers = schedule_multiple_messages(sender) + print("Multiple messages are scheduled and sequence numbers are {}".format(sequence_numbers)) + + sender.cancel_scheduled_messages(sequence_number) + sender.cancel_scheduled_messages(sequence_numbers) + print("All scheduled messages are cancelled.") diff --git a/sdk/servicebus/azure-servicebus/samples/sync_samples/session_pool_receive.py b/sdk/servicebus/azure-servicebus/samples/sync_samples/session_pool_receive.py new file mode 100644 index 000000000000..012a0c064ea7 --- /dev/null +++ b/sdk/servicebus/azure-servicebus/samples/sync_samples/session_pool_receive.py @@ -0,0 +1,69 @@ +#!/usr/bin/env python + +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# -------------------------------------------------------------------------------------------- +import os +import uuid +import concurrent + +from azure.servicebus import ServiceBusClient, Message, AutoLockRenew +from azure.servicebus.exceptions import NoActiveSession + +CONNECTION_STR = os.environ['SERVICE_BUS_CONNECTION_STR'] +# Note: This must be a session-enabled queue. +QUEUE_NAME = os.environ["SERVICE_BUS_QUEUE_NAME"] + + +def message_processing(sb_client, queue_name, messages): + while True: + try: + with sb_client.get_queue_session_receiver(queue_name, idle_timeout=1) as receiver: + renewer = AutoLockRenew() + renewer.register(receiver.session) + receiver.session.set_session_state("OPEN") + for message in receiver: + messages.append(message) + print("Message: {}".format(message)) + print("Time to live: {}".format(message.header.time_to_live)) + print("Sequence number: {}".format(message.sequence_number)) + print("Enqueue Sequence numger: {}".format(message.enqueue_sequence_number)) + print("Partition ID: {}".format(message.partition_id)) + print("Partition Key: {}".format(message.partition_key)) + print("Locked until: {}".format(message.locked_until_utc)) + print("Lock Token: {}".format(message.lock_token)) + print("Enqueued time: {}".format(message.enqueued_time_utc)) + message.complete() + if str(message) == 'shutdown': + receiver.session.set_session_state("CLOSED") + renewer.shutdown() + except NoActiveSession: + print("There are no non-empty sessions remaining; exiting. This may present as a UserError in the azure portal.") + return + + +def sample_session_send_receive_with_pool(connection_string, queue_name): + + concurrent_receivers = 5 + sessions = [str(uuid.uuid4()) for i in range(2 * concurrent_receivers)] + with ServiceBusClient.from_connection_string(connection_string) as client: + + with client.get_queue_sender(queue_name) as sender: + for session_id in sessions: + for i in range(20): + message = Message("Sample message no. {}".format(i), session_id=session_id) + sender.send(message) + + all_messages = [] + futures = [] + with concurrent.futures.ThreadPoolExecutor(max_workers=concurrent_receivers) as thread_pool: + for _ in range(concurrent_receivers): + futures.append(thread_pool.submit(message_processing, client, queue_name, all_messages)) + concurrent.futures.wait(futures) + + print("Received total {} messages across {} sessions.".format(len(all_messages), len(sessions))) + + +if __name__ == '__main__': + sample_session_send_receive_with_pool(CONNECTION_STR, QUEUE_NAME) diff --git a/sdk/servicebus/azure-servicebus/tests/async_tests/test_queues_async.py b/sdk/servicebus/azure-servicebus/tests/async_tests/test_queues_async.py index a4f8e5a3269a..13b7e3d453e3 100644 --- a/sdk/servicebus/azure-servicebus/tests/async_tests/test_queues_async.py +++ b/sdk/servicebus/azure-servicebus/tests/async_tests/test_queues_async.py @@ -25,11 +25,11 @@ ServiceBusConnectionError, ServiceBusError, MessageLockExpired, - InvalidHandlerState, MessageAlreadySettled, AutoLockRenewTimeout, MessageSendFailed, - MessageSettleFailed) + MessageSettleFailed, + MessageContentTooLarge) from devtools_testutils import AzureMgmtTestCase, CachedResourceGroupPreparer from servicebus_preparer import CachedServiceBusNamespacePreparer, CachedServiceBusQueuePreparer, ServiceBusQueuePreparer from utilities import get_logger, print_message, sleep_until_expired @@ -66,6 +66,33 @@ async def test_async_queue_by_queue_client_conn_str_receive_handler_peeklock(sel assert count == 10 + + @pytest.mark.liveTest + @pytest.mark.live_test_only + @CachedResourceGroupPreparer(name_prefix='servicebustest') + @CachedServiceBusNamespacePreparer(name_prefix='servicebustest') + @ServiceBusQueuePreparer(name_prefix='servicebustest', dead_lettering_on_message_expiration=True) + async def test_async_queue_by_queue_client_send_multiple_messages(self, servicebus_namespace_connection_string, servicebus_queue, **kwargs): + async with ServiceBusClient.from_connection_string( + servicebus_namespace_connection_string, logging_enable=False) as sb_client: + + async with sb_client.get_queue_sender(servicebus_queue.name) as sender: + messages = [] + for i in range(10): + message = Message("Handler message no. {}".format(i)) + messages.append(message) + await sender.send(messages) + + async with sb_client.get_queue_receiver(servicebus_queue.name, idle_timeout=5) as receiver: + count = 0 + async for message in receiver: + print_message(_logger, message) + count += 1 + await message.complete() + + assert count == 10 + + @pytest.mark.liveTest @pytest.mark.live_test_only @CachedResourceGroupPreparer() @@ -514,9 +541,6 @@ async def test_async_queue_by_servicebus_client_receive_batch_with_retrieve_dead count += 1 messages = await receiver.receive() - with pytest.raises(InvalidHandlerState): - await receiver.receive() - assert count == 10 async with await sb_client.get_deadletter_receiver(idle_timeout=5, mode=ReceiveSettleMode.PeekLock) as receiver: @@ -688,7 +712,6 @@ async def test_async_queue_by_queue_client_conn_str_receive_handler_with_autoloc await renewer.shutdown() assert len(messages) == 11 - @pytest.mark.skip(reason='requires queuing messages') @pytest.mark.liveTest @pytest.mark.live_test_only @CachedResourceGroupPreparer(name_prefix='servicebustest') @@ -698,18 +721,16 @@ async def test_async_queue_by_servicebus_client_fail_send_messages(self, service async with ServiceBusClient.from_connection_string( servicebus_namespace_connection_string, logging_enable=False) as sb_client: - too_large = "A" * 1024 * 512 + too_large = "A" * 1024 * 256 async with sb_client.get_queue_sender(servicebus_queue.name) as sender: - with pytest.raises(MessageSendFailed): + with pytest.raises(MessageContentTooLarge): await sender.send(Message(too_large)) + + half_too_large = "A" * int((1024 * 256) / 2) + with pytest.raises(MessageContentTooLarge): + await sender.send([Message(half_too_large), Message(half_too_large)]) - async with sb_client.get_queue_sender(servicebus_queue.name) as sender: - sender.queue_message(Message(too_large)) - results = await sender.send_pending_messages() - assert len(results) == 1 - assert not results[0][0] - assert isinstance(results[0][1], MessageSendFailed) @pytest.mark.liveTest @pytest.mark.live_test_only @@ -936,7 +957,6 @@ async def test_async_queue_message_batch(self, servicebus_namespace_connection_s print_message(_logger, m) await m.complete() - @pytest.mark.skip(reason="requires scheduler") @pytest.mark.liveTest @pytest.mark.live_test_only @CachedResourceGroupPreparer(name_prefix='servicebustest') @@ -953,7 +973,7 @@ async def test_async_queue_schedule_message(self, servicebus_namespace_connectio message_id = uuid.uuid4() message = Message(content) message.properties.message_id = message_id - message.schedule(enqueue_time) + message.scheduled_enqueue_time_utc = enqueue_time await sender.send(message) messages = await receiver.receive(max_wait_time=120) @@ -971,7 +991,6 @@ async def test_async_queue_schedule_message(self, servicebus_namespace_connectio else: raise Exception("Failed to receive scheduled message.") - @pytest.mark.skip(reason="requires scheduler") @pytest.mark.liveTest @pytest.mark.live_test_only @CachedResourceGroupPreparer(name_prefix='servicebustest') @@ -991,7 +1010,7 @@ async def test_async_queue_schedule_multiple_messages(self, servicebus_namespace message_id_b = uuid.uuid4() message_b = Message(content) message_b.properties.message_id = message_id_b - tokens = await sender.schedule(enqueue_time, message_a, message_b) + tokens = await sender.schedule([message_a, message_b], enqueue_time) assert len(tokens) == 2 recv = await receiver.receive(max_wait_time=120) @@ -1027,10 +1046,10 @@ async def test_async_queue_cancel_scheduled_messages(self, servicebus_namespace_ async with sb_client.get_queue_sender(servicebus_queue.name) as sender: message_a = Message("Test scheduled message") message_b = Message("Test scheduled message") - tokens = await sender.schedule(enqueue_time, message_a, message_b) + tokens = await sender.schedule([message_a, message_b], enqueue_time) assert len(tokens) == 2 - await sender.cancel_scheduled_messages(*tokens) + await sender.cancel_scheduled_messages(tokens) messages = await receiver.receive(max_wait_time=120) assert len(messages) == 0 @@ -1076,3 +1095,23 @@ def test_queue_message_http_proxy_setting(self): receiver = sb_client.get_queue_receiver(queue_name="mock") assert receiver._config.http_proxy == http_proxy assert receiver._config.transport_type == TransportType.AmqpOverWebsocket + + @pytest.mark.liveTest + @pytest.mark.live_test_only + @CachedResourceGroupPreparer(name_prefix='servicebustest') + @CachedServiceBusNamespacePreparer(name_prefix='servicebustest') + @ServiceBusQueuePreparer(name_prefix='servicebustest', dead_lettering_on_message_expiration=True) + async def test_queue_message_settle_through_mgmt_link_due_to_broken_receiver_link(self, servicebus_namespace_connection_string, servicebus_queue, **kwargs): + async with ServiceBusClient.from_connection_string( + servicebus_namespace_connection_string, + logging_enable=False) as sb_client: + + async with sb_client.get_queue_sender(servicebus_queue.name) as sender: + message = Message("Test") + await sender.send(message) + + async with sb_client.get_queue_receiver(servicebus_queue.name) as receiver: + messages = await receiver.receive(max_wait_time=5) + await receiver._handler.message_handler.destroy_async() # destroy the underlying receiver link + assert len(messages) == 1 + await messages[0].complete() diff --git a/sdk/servicebus/azure-servicebus/tests/async_tests/test_sessions_async.py b/sdk/servicebus/azure-servicebus/tests/async_tests/test_sessions_async.py index 606c9840e082..d6ceb710a1ef 100644 --- a/sdk/servicebus/azure-servicebus/tests/async_tests/test_sessions_async.py +++ b/sdk/servicebus/azure-servicebus/tests/async_tests/test_sessions_async.py @@ -24,7 +24,6 @@ NoActiveSession, SessionLockExpired, MessageLockExpired, - InvalidHandlerState, MessageAlreadySettled, AutoLockRenewTimeout, MessageSettleFailed) @@ -597,7 +596,7 @@ async def test_async_session_schedule_message(self, servicebus_namespace_connect message_id = uuid.uuid4() message = Message(content, session_id=session_id) message.properties.message_id = message_id - message.schedule(enqueue_time) + message.scheduled_enqueue_time_utc = enqueue_time await sender.send(message) messages = [] @@ -618,7 +617,6 @@ async def test_async_session_schedule_message(self, servicebus_namespace_connect await renewer.shutdown() - @pytest.mark.skip(reason='requires scheduling functionality') @pytest.mark.liveTest @pytest.mark.live_test_only @CachedResourceGroupPreparer(name_prefix='servicebustest') @@ -639,7 +637,7 @@ async def test_async_session_schedule_multiple_messages(self, servicebus_namespa message_id_b = uuid.uuid4() message_b = Message(content, session_id=session_id) message_b.properties.message_id = message_id_b - tokens = await sender.schedule(enqueue_time, message_a, message_b) + tokens = await sender.schedule([message_a, message_b], enqueue_time) assert len(tokens) == 2 renewer = AutoLockRenew() @@ -659,7 +657,6 @@ async def test_async_session_schedule_multiple_messages(self, servicebus_namespa await renewer.shutdown() - @pytest.mark.skip(reasion="requires scheduling") @pytest.mark.liveTest @pytest.mark.live_test_only @CachedResourceGroupPreparer(name_prefix='servicebustest') @@ -674,9 +671,9 @@ async def test_async_session_cancel_scheduled_messages(self, servicebus_namespac async with sb_client.get_queue_sender(servicebus_queue.name) as sender: message_a = Message("Test scheduled message", session_id=session_id) message_b = Message("Test scheduled message", session_id=session_id) - tokens = await sender.schedule(enqueue_time, message_a, message_b) + tokens = await sender.schedule([message_a, message_b], enqueue_time) assert len(tokens) == 2 - await sender.cancel_scheduled_messages(*tokens) + await sender.cancel_scheduled_messages(tokens) renewer = AutoLockRenew() messages = [] diff --git a/sdk/servicebus/azure-servicebus/tests/test_queues.py b/sdk/servicebus/azure-servicebus/tests/test_queues.py index 95a6b61f11c5..bf6dc50dce63 100644 --- a/sdk/servicebus/azure-servicebus/tests/test_queues.py +++ b/sdk/servicebus/azure-servicebus/tests/test_queues.py @@ -20,11 +20,11 @@ ServiceBusConnectionError, ServiceBusError, MessageLockExpired, - InvalidHandlerState, MessageAlreadySettled, AutoLockRenewTimeout, MessageSendFailed, - MessageSettleFailed) + MessageSettleFailed, + MessageContentTooLarge) from devtools_testutils import AzureMgmtTestCase, CachedResourceGroupPreparer from servicebus_preparer import CachedServiceBusNamespacePreparer, ServiceBusQueuePreparer, CachedServiceBusQueuePreparer @@ -114,6 +114,30 @@ def test_queue_by_queue_client_conn_str_receive_handler_peeklock(self, servicebu assert count == 10 + @pytest.mark.liveTest + @pytest.mark.live_test_only + @CachedResourceGroupPreparer(name_prefix='servicebustest') + @CachedServiceBusNamespacePreparer(name_prefix='servicebustest') + @ServiceBusQueuePreparer(name_prefix='servicebustest', dead_lettering_on_message_expiration=True) + def test_queue_by_queue_client_send_multiple_messages(self, servicebus_namespace_connection_string, servicebus_queue, **kwargs): + with ServiceBusClient.from_connection_string( + servicebus_namespace_connection_string, logging_enable=False) as sb_client: + + with sb_client.get_queue_sender(servicebus_queue.name) as sender: + messages = [] + for i in range(10): + message = Message("Handler message no. {}".format(i)) + messages.append(message) + sender.send(messages) + + with sb_client.get_queue_receiver(servicebus_queue.name, idle_timeout=5) as receiver: + count = 0 + for message in receiver: + print_message(_logger, message) + count += 1 + message.complete() + + assert count == 10 @pytest.mark.liveTest @pytest.mark.live_test_only @@ -673,34 +697,25 @@ def test_queue_by_servicebus_client_browse_empty_messages(self, servicebus_names assert len(messages) == 0 - @pytest.mark.skip(reason="Pending queue message") @pytest.mark.liveTest @pytest.mark.live_test_only @CachedResourceGroupPreparer(name_prefix='servicebustest') @CachedServiceBusNamespacePreparer(name_prefix='servicebustest') @CachedServiceBusQueuePreparer(name_prefix='servicebustest', dead_lettering_on_message_expiration=True) - def test_queue_by_servicebus_client_fail_send_messages(self, servicebus_namespace, servicebus_namespace_key_name, servicebus_namespace_primary_key, servicebus_queue, **kwargs): + def test_queue_by_servicebus_client_fail_send_messages(self, servicebus_namespace_connection_string, servicebus_queue, **kwargs): with ServiceBusClient.from_connection_string( servicebus_namespace_connection_string, logging_enable=False) as sb_client: - too_large = "A" * 1024 * 512 - with sb_client.get_queue_sender(servicebus_queue.name) as sender: - try: - results = sender.send(Message(too_large)) - except MessageSendFailed: - pytest.skip("Open issue for uAMQP on OSX") + too_large = "A" * 256 * 1024 with sb_client.get_queue_sender(servicebus_queue.name) as sender: - with pytest.raises(MessageSendFailed): + with pytest.raises(MessageContentTooLarge): sender.send(Message(too_large)) - - with sb_client.get_queue_sender(servicebus_queue.name) as sender: - sender.queue_message(Message(too_large)) - results = sender.send_pending_messages() - assert len(results) == 1 - assert not results[0][0] - assert isinstance(results[0][1], MessageSendFailed) + + half_too_large = "A" * int((1024 * 256) / 2) + with pytest.raises(MessageContentTooLarge): + sender.send([Message(half_too_large), Message(half_too_large)]) @pytest.mark.liveTest @@ -1069,7 +1084,7 @@ def test_queue_schedule_message(self, servicebus_namespace_connection_string, se message_id = uuid.uuid4() message = Message(content) message.properties.message_id = message_id - message.schedule(enqueue_time) + message.scheduled_enqueue_time_utc = enqueue_time sender.send(message) messages = receiver.receive(max_wait_time=120) @@ -1088,7 +1103,6 @@ def test_queue_schedule_message(self, servicebus_namespace_connection_string, se raise Exception("Failed to receive schdeduled message.") - @pytest.mark.skip("Pending message scheduling functionality") @pytest.mark.liveTest @pytest.mark.live_test_only @CachedResourceGroupPreparer(name_prefix='servicebustest') @@ -1110,11 +1124,11 @@ def test_queue_schedule_multiple_messages(self, servicebus_namespace_connection_ message_id_b = uuid.uuid4() message_b = Message(content) message_b.properties.message_id = message_id_b - tokens = sender.schedule(enqueue_time, message_a, message_b) + tokens = sender.schedule([message_a, message_b], enqueue_time) assert len(tokens) == 2 - messages = receiver.fetch_next(timeout=120) - messages.extend(receiver.fetch_next(timeout=5)) + messages = receiver.receive(max_wait_time=120) + messages.extend(receiver.receive(max_wait_time=5)) if messages: try: data = str(messages[0]) @@ -1130,7 +1144,6 @@ def test_queue_schedule_multiple_messages(self, servicebus_namespace_connection_ raise Exception("Failed to receive schdeduled message.") - @pytest.mark.skip(reason="Pending message scheduling functionality") @pytest.mark.liveTest @pytest.mark.live_test_only @CachedResourceGroupPreparer(name_prefix='servicebustest') @@ -1146,10 +1159,10 @@ def test_queue_cancel_scheduled_messages(self, servicebus_namespace_connection_s with sb_client.get_queue_sender(servicebus_queue.name) as sender: message_a = Message("Test scheduled message") message_b = Message("Test scheduled message") - tokens = sender.schedule(enqueue_time, message_a, message_b) + tokens = sender.schedule([message_a, message_b], enqueue_time) assert len(tokens) == 2 - sender.cancel_scheduled_messages(*tokens) + sender.cancel_scheduled_messages(tokens) messages = receiver.receive(max_wait_time=120) try: @@ -1202,3 +1215,23 @@ def test_queue_message_http_proxy_setting(self): receiver = sb_client.get_queue_receiver(queue_name="mock") assert receiver._config.http_proxy == http_proxy assert receiver._config.transport_type == TransportType.AmqpOverWebsocket + + @pytest.mark.liveTest + @pytest.mark.live_test_only + @CachedResourceGroupPreparer(name_prefix='servicebustest') + @CachedServiceBusNamespacePreparer(name_prefix='servicebustest') + @ServiceBusQueuePreparer(name_prefix='servicebustest', dead_lettering_on_message_expiration=True) + def test_queue_message_settle_through_mgmt_link_due_to_broken_receiver_link(self, servicebus_namespace_connection_string, servicebus_queue, **kwargs): + with ServiceBusClient.from_connection_string( + servicebus_namespace_connection_string, + logging_enable=False) as sb_client: + + with sb_client.get_queue_sender(servicebus_queue.name) as sender: + message = Message("Test") + sender.send(message) + + with sb_client.get_queue_receiver(servicebus_queue.name) as receiver: + messages = receiver.receive(max_wait_time=5) + receiver._handler.message_handler.destroy() # destroy the underlying receiver link + assert len(messages) == 1 + messages[0].complete() diff --git a/sdk/servicebus/azure-servicebus/tests/test_sb_client.py b/sdk/servicebus/azure-servicebus/tests/test_sb_client.py index 6d898579b304..3f218584364f 100644 --- a/sdk/servicebus/azure-servicebus/tests/test_sb_client.py +++ b/sdk/servicebus/azure-servicebus/tests/test_sb_client.py @@ -108,7 +108,7 @@ def test_sb_client_writeonly_credentials(self, servicebus_authorization_rule_con with client.get_queue_sender(servicebus_queue.name) as sender: sender.send(Message("test")) - with pytest.raises(ServiceBusError): + with pytest.raises(ValueError): sender.send("cat") @pytest.mark.liveTest diff --git a/sdk/servicebus/azure-servicebus/tests/test_sessions.py b/sdk/servicebus/azure-servicebus/tests/test_sessions.py index dedb205e2c0e..e27c07fc5f83 100644 --- a/sdk/servicebus/azure-servicebus/tests/test_sessions.py +++ b/sdk/servicebus/azure-servicebus/tests/test_sessions.py @@ -23,7 +23,6 @@ NoActiveSession, SessionLockExpired, MessageLockExpired, - InvalidHandlerState, MessageAlreadySettled, AutoLockRenewTimeout, MessageSettleFailed) @@ -655,7 +654,6 @@ def test_session_message_expiry(self, servicebus_namespace_connection_string, se messages[0].complete() - @pytest.mark.skip(reason='Requires schedule functionality') @pytest.mark.liveTest @pytest.mark.live_test_only @CachedResourceGroupPreparer(name_prefix='servicebustest') @@ -674,7 +672,7 @@ def test_session_schedule_message(self, servicebus_namespace_connection_string, message_id = uuid.uuid4() message = Message(content, session_id=session_id) message.properties.message_id = message_id - message.schedule(enqueue_time) + message.scheduled_enqueue_time_utc = enqueue_time sender.send(message) messages = [] @@ -692,7 +690,6 @@ def test_session_schedule_message(self, servicebus_namespace_connection_string, assert len(messages) == 1 - @pytest.mark.skip(reason='Requires schedule functionality') @pytest.mark.liveTest @pytest.mark.live_test_only @CachedResourceGroupPreparer(name_prefix='servicebustest') @@ -715,7 +712,7 @@ def test_session_schedule_multiple_messages(self, servicebus_namespace_connectio message_id_b = uuid.uuid4() message_b = Message(content, session_id=session_id) message_b.properties.message_id = message_id_b - tokens = sender.schedule(enqueue_time, message_a, message_b) + tokens = sender.schedule([message_a, message_b], enqueue_time) assert len(tokens) == 2 messages = [] @@ -734,7 +731,6 @@ def test_session_schedule_multiple_messages(self, servicebus_namespace_connectio assert len(messages) == 2 - @pytest.mark.skip(reason='Requires schedule functionality') @pytest.mark.liveTest @pytest.mark.live_test_only @CachedResourceGroupPreparer(name_prefix='servicebustest') @@ -751,9 +747,9 @@ def test_session_cancel_scheduled_messages(self, servicebus_namespace_connection with sb_client.get_queue_sender(servicebus_queue.name) as sender: message_a = Message("Test scheduled message", session_id=session_id) message_b = Message("Test scheduled message", session_id=session_id) - tokens = sender.schedule(enqueue_time, message_a, message_b) + tokens = sender.schedule([message_a, message_b], enqueue_time) assert len(tokens) == 2 - sender.cancel_scheduled_messages(*tokens) + sender.cancel_scheduled_messages(tokens) with sb_client.get_queue_session_receiver(servicebus_queue.name, session_id=session_id) as receiver: messages = [] diff --git a/sdk/servicebus/tests.yml b/sdk/servicebus/tests.yml index ac75a1f1855f..b9daff0222dd 100644 --- a/sdk/servicebus/tests.yml +++ b/sdk/servicebus/tests.yml @@ -22,7 +22,7 @@ jobs: Matrix: Linux_Python35: OSName: 'Linux' - OSVmImage: 'ubuntu-16.04' + OSVmImage: 'ubuntu-18.04' PythonVersion: '3.5' MacOs_Python37: OSName: 'MacOS' @@ -34,5 +34,5 @@ jobs: PythonVersion: '2.7' Linux_Python38: OSName: 'Linux' - OSVmImage: 'ubuntu-16.04' + OSVmImage: 'ubuntu-18.04' PythonVersion: '3.8' \ No newline at end of file diff --git a/sdk/signalr/azure-mgmt-signalr/README.md b/sdk/signalr/azure-mgmt-signalr/README.md index d13cd5da41bb..8dc4f14cf656 100644 --- a/sdk/signalr/azure-mgmt-signalr/README.md +++ b/sdk/signalr/azure-mgmt-signalr/README.md @@ -1,29 +1,21 @@ -## Microsoft Azure SDK for Python +# Microsoft Azure SDK for Python This is the Microsoft Azure SignalR Client Library. +This package has been tested with Python 2.7, 3.5, 3.6, 3.7 and 3.8. +For a more complete view of Azure libraries, see the [Github repo](https://github.com/Azure/azure-sdk-for-python/) -Azure Resource Manager (ARM) is the next generation of management APIs -that replace the old Azure Service Management (ASM). -This package has been tested with Python 2.7, 3.5, 3.6 and 3.7. +# Usage -For the older Azure Service Management (ASM) libraries, see -[azure-servicemanagement-legacy](https://pypi.python.org/pypi/azure-servicemanagement-legacy) -library. +For code examples, see [SignalR](https://docs.microsoft.com/python/api/overview/azure/) +on docs.microsoft.com. -For a more complete set of Azure libraries, see the -[azure](https://pypi.python.org/pypi/azure) bundle package. -## Usage +# Provide Feedback -For code examples, see -[SignalR](https://docs.microsoft.com/python/api/overview/azure/) on -docs.microsoft.com. - -## Provide Feedback - -If you encounter any bugs or have suggestions, please file an issue in -the [Issues](https://github.com/Azure/azure-sdk-for-python/issues) +If you encounter any bugs or have suggestions, please file an issue in the +[Issues](https://github.com/Azure/azure-sdk-for-python/issues) section of the project. -![image](https://azure-sdk-impressions.azurewebsites.net/api/impressions/azure-sdk-for-python%2Fazure-mgmt-signalr%2FREADME.png) + +![Impressions](https://azure-sdk-impressions.azurewebsites.net/api/impressions/azure-sdk-for-python%2Fazure-mgmt-signalr%2FREADME.png) diff --git a/sdk/signalr/azure-mgmt-signalr/setup.py b/sdk/signalr/azure-mgmt-signalr/setup.py index fef5ae53eac2..6a18873c59f4 100644 --- a/sdk/signalr/azure-mgmt-signalr/setup.py +++ b/sdk/signalr/azure-mgmt-signalr/setup.py @@ -36,7 +36,9 @@ pass # Version extraction inspired from 'requests' -with open(os.path.join(package_folder_path, 'version.py'), 'r') as fd: +with open(os.path.join(package_folder_path, 'version.py') + if os.path.exists(os.path.join(package_folder_path, 'version.py')) + else os.path.join(package_folder_path, '_version.py'), 'r') as fd: version = re.search(r'^VERSION\s*=\s*[\'"]([^\'"]*)[\'"]', fd.read(), re.MULTILINE).group(1) @@ -67,6 +69,7 @@ 'Programming Language :: Python :: 3.5', 'Programming Language :: Python :: 3.6', 'Programming Language :: Python :: 3.7', + 'Programming Language :: Python :: 3.8', 'License :: OSI Approved :: MIT License', ], zip_safe=False, diff --git a/sdk/signalr/azure-mgmt-signalr/tests/recordings/test_cli_mgmt_signalr.test_signalr.yaml b/sdk/signalr/azure-mgmt-signalr/tests/recordings/test_cli_mgmt_signalr.test_signalr.yaml new file mode 100644 index 000000000000..267bec962841 --- /dev/null +++ b/sdk/signalr/azure-mgmt-signalr/tests/recordings/test_cli_mgmt_signalr.test_signalr.yaml @@ -0,0 +1,765 @@ +interactions: +- request: + body: '{"tags": {"key1": "value1"}, "sku": {"name": "Standard_S1", "tier": "Standard", + "capacity": 1}, "properties": {"features": [{"flag": "ServiceMode", "value": + "Serverless"}], "cors": {"allowedOrigins": ["https://foo.com", "https://bar.com"]}}, + "location": "eastus"}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '263' + Content-Type: + - application/json; charset=utf-8 + User-Agent: + - python/3.6.9 (Linux-4.9.184-linuxkit-x86_64-with-Ubuntu-18.04-bionic) msrest/0.6.10 + msrest_azure/0.6.2 azure-mgmt-signalr/0.3.0 Azure-SDK-For-Python + accept-language: + - en-US + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_cli_mgmt_signalr_test_signalrf5150df8/providers/Microsoft.SignalRService/signalR/myResource?api-version=2018-10-01 + response: + body: + string: '{"sku":{"name":"Standard_S1","tier":"Standard","size":"S1","capacity":1},"properties":{"provisioningState":"Creating","externalIP":null,"hostName":"myresource.service.signalr.net","publicPort":443,"serverPort":443,"version":"1.0-preview","privateEndpointConnections":[],"hostNamePrefix":"myresource","features":[{"flag":"ServiceMode","value":"Serverless","properties":{}},{"flag":"EnableConnectivityLogs","value":"False","properties":{}},{"flag":"EnableMessagingLogs","value":"False","properties":{}}],"cors":{"allowedOrigins":["https://foo.com","https://bar.com"]},"upstream":{"templates":null},"networkACLs":{"defaultAction":"Deny","publicNetwork":{"allow":["ServerConnection","ClientConnection","RESTAPI"],"deny":null},"privateEndpoints":[]}},"location":"eastus","tags":{"key1":"value1"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_cli_mgmt_signalr_test_signalrf5150df8/providers/Microsoft.SignalRService/SignalR/myResource","name":"myResource","type":"Microsoft.SignalRService/SignalR","kind":"SignalR"}' + headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_cli_mgmt_signalr_test_signalrf5150df8/providers/Microsoft.SignalRService/locations/eastus/operationStatuses/myResource/operationId/99e0f7b7-a4f7-476b-9869-0f7de5b4ea87?api-version=2018-10-01 + cache-control: + - no-cache + content-length: + - '1041' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 30 Apr 2020 14:24:40 GMT + expires: + - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_cli_mgmt_signalr_test_signalrf5150df8/providers/Microsoft.SignalRService/locations/eastus/operationResults/99e0f7b7-a4f7-476b-9869-0f7de5b4ea87/SignalR/myResource?api-version=2018-10-01 + pragma: + - no-cache + server: + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1199' + x-rp-server-mvid: + - afd9a794-0c74-4d7a-9baf-5982aa7d2e8c + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - python/3.6.9 (Linux-4.9.184-linuxkit-x86_64-with-Ubuntu-18.04-bionic) msrest/0.6.10 + msrest_azure/0.6.2 azure-mgmt-signalr/0.3.0 Azure-SDK-For-Python + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_cli_mgmt_signalr_test_signalrf5150df8/providers/Microsoft.SignalRService/locations/eastus/operationStatuses/myResource/operationId/99e0f7b7-a4f7-476b-9869-0f7de5b4ea87?api-version=2018-10-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_cli_mgmt_signalr_test_signalrf5150df8/providers/Microsoft.SignalRService/locations/eastus/operationStatuses/myResource/operationId/99e0f7b7-a4f7-476b-9869-0f7de5b4ea87","name":"99e0f7b7-a4f7-476b-9869-0f7de5b4ea87","status":"Running","startTime":"2020-04-30T14:24:39.4587136Z"}' + headers: + cache-control: + - no-cache + content-length: + - '356' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 30 Apr 2020 14:25:11 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - afd9a794-0c74-4d7a-9baf-5982aa7d2e8c + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - python/3.6.9 (Linux-4.9.184-linuxkit-x86_64-with-Ubuntu-18.04-bionic) msrest/0.6.10 + msrest_azure/0.6.2 azure-mgmt-signalr/0.3.0 Azure-SDK-For-Python + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_cli_mgmt_signalr_test_signalrf5150df8/providers/Microsoft.SignalRService/locations/eastus/operationStatuses/myResource/operationId/99e0f7b7-a4f7-476b-9869-0f7de5b4ea87?api-version=2018-10-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_cli_mgmt_signalr_test_signalrf5150df8/providers/Microsoft.SignalRService/locations/eastus/operationStatuses/myResource/operationId/99e0f7b7-a4f7-476b-9869-0f7de5b4ea87","name":"99e0f7b7-a4f7-476b-9869-0f7de5b4ea87","status":"Running","startTime":"2020-04-30T14:24:39.4587136Z"}' + headers: + cache-control: + - no-cache + content-length: + - '356' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 30 Apr 2020 14:25:42 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - afd9a794-0c74-4d7a-9baf-5982aa7d2e8c + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - python/3.6.9 (Linux-4.9.184-linuxkit-x86_64-with-Ubuntu-18.04-bionic) msrest/0.6.10 + msrest_azure/0.6.2 azure-mgmt-signalr/0.3.0 Azure-SDK-For-Python + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_cli_mgmt_signalr_test_signalrf5150df8/providers/Microsoft.SignalRService/locations/eastus/operationStatuses/myResource/operationId/99e0f7b7-a4f7-476b-9869-0f7de5b4ea87?api-version=2018-10-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_cli_mgmt_signalr_test_signalrf5150df8/providers/Microsoft.SignalRService/locations/eastus/operationStatuses/myResource/operationId/99e0f7b7-a4f7-476b-9869-0f7de5b4ea87","name":"99e0f7b7-a4f7-476b-9869-0f7de5b4ea87","status":"Succeeded","startTime":"2020-04-30T14:24:39.4587136Z","endTime":"2020-04-30T14:25:56.4099109Z"}' + headers: + cache-control: + - no-cache + content-length: + - '399' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 30 Apr 2020 14:26:13 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - afd9a794-0c74-4d7a-9baf-5982aa7d2e8c + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - python/3.6.9 (Linux-4.9.184-linuxkit-x86_64-with-Ubuntu-18.04-bionic) msrest/0.6.10 + msrest_azure/0.6.2 azure-mgmt-signalr/0.3.0 Azure-SDK-For-Python + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_cli_mgmt_signalr_test_signalrf5150df8/providers/Microsoft.SignalRService/signalR/myResource?api-version=2018-10-01 + response: + body: + string: '{"sku":{"name":"Standard_S1","tier":"Standard","size":"S1","capacity":1},"properties":{"provisioningState":"Succeeded","externalIP":"40.71.15.7","hostName":"myresource.service.signalr.net","publicPort":443,"serverPort":443,"version":"1.0","privateEndpointConnections":[],"hostNamePrefix":"myresource","features":[{"flag":"ServiceMode","value":"Serverless","properties":{}},{"flag":"EnableConnectivityLogs","value":"False","properties":{}},{"flag":"EnableMessagingLogs","value":"False","properties":{}}],"cors":{"allowedOrigins":["https://foo.com","https://bar.com"]},"upstream":{"templates":null},"networkACLs":{"defaultAction":"Deny","publicNetwork":{"allow":["ServerConnection","ClientConnection","RESTAPI"],"deny":null},"privateEndpoints":[]}},"location":"eastus","tags":{"key1":"value1"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_cli_mgmt_signalr_test_signalrf5150df8/providers/Microsoft.SignalRService/SignalR/myResource","name":"myResource","type":"Microsoft.SignalRService/SignalR","kind":"SignalR"}' + headers: + cache-control: + - no-cache + content-length: + - '1042' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 30 Apr 2020 14:26:15 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - afd9a794-0c74-4d7a-9baf-5982aa7d2e8c + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - python/3.6.9 (Linux-4.9.184-linuxkit-x86_64-with-Ubuntu-18.04-bionic) msrest/0.6.10 + msrest_azure/0.6.2 azure-mgmt-signalr/0.3.0 Azure-SDK-For-Python + accept-language: + - en-US + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_cli_mgmt_signalr_test_signalrf5150df8/providers/Microsoft.SignalRService/signalR/myResource?api-version=2018-10-01 + response: + body: + string: '{"sku":{"name":"Standard_S1","tier":"Standard","size":"S1","capacity":1},"properties":{"provisioningState":"Succeeded","externalIP":"40.71.15.7","hostName":"myresource.service.signalr.net","publicPort":443,"serverPort":443,"version":"1.0","privateEndpointConnections":[],"hostNamePrefix":"myresource","features":[{"flag":"ServiceMode","value":"Serverless","properties":{}},{"flag":"EnableConnectivityLogs","value":"False","properties":{}},{"flag":"EnableMessagingLogs","value":"False","properties":{}}],"cors":{"allowedOrigins":["https://foo.com","https://bar.com"]},"upstream":{"templates":null},"networkACLs":{"defaultAction":"Deny","publicNetwork":{"allow":["ServerConnection","ClientConnection","RESTAPI"],"deny":null},"privateEndpoints":[]}},"location":"eastus","tags":{"key1":"value1"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_cli_mgmt_signalr_test_signalrf5150df8/providers/Microsoft.SignalRService/SignalR/myResource","name":"myResource","type":"Microsoft.SignalRService/SignalR","kind":"SignalR"}' + headers: + cache-control: + - no-cache + content-length: + - '1042' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 30 Apr 2020 14:26:16 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - afd9a794-0c74-4d7a-9baf-5982aa7d2e8c + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '0' + User-Agent: + - python/3.6.9 (Linux-4.9.184-linuxkit-x86_64-with-Ubuntu-18.04-bionic) msrest/0.6.10 + msrest_azure/0.6.2 azure-mgmt-signalr/0.3.0 Azure-SDK-For-Python + accept-language: + - en-US + method: POST + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_cli_mgmt_signalr_test_signalrf5150df8/providers/Microsoft.SignalRService/SignalR/myResource/listKeys?api-version=2018-10-01 + response: + body: + string: '{"primaryKey":"Nj4VNIHZNdwAKU32mM22ureU/yo4JamK79FQiOzvGik=","secondaryKey":"aWqFqjyYds8z+LBCeRlmHlsS8IVN8JYh1UXPpk30a04=","primaryConnectionString":"Endpoint=https://myresource.service.signalr.net;AccessKey=Nj4VNIHZNdwAKU32mM22ureU/yo4JamK79FQiOzvGik=;Version=1.0;","secondaryConnectionString":"Endpoint=https://myresource.service.signalr.net;AccessKey=aWqFqjyYds8z+LBCeRlmHlsS8IVN8JYh1UXPpk30a04=;Version=1.0;"}' + headers: + cache-control: + - no-cache + content-length: + - '413' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 30 Apr 2020 14:26:17 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1199' + x-rp-server-mvid: + - afd9a794-0c74-4d7a-9baf-5982aa7d2e8c + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '0' + User-Agent: + - python/3.6.9 (Linux-4.9.184-linuxkit-x86_64-with-Ubuntu-18.04-bionic) msrest/0.6.10 + msrest_azure/0.6.2 azure-mgmt-signalr/0.3.0 Azure-SDK-For-Python + accept-language: + - en-US + method: POST + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_cli_mgmt_signalr_test_signalrf5150df8/providers/Microsoft.SignalRService/signalR/myResource/restart?api-version=2018-10-01 + response: + body: + string: '' + headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_cli_mgmt_signalr_test_signalrf5150df8/providers/Microsoft.SignalRService/locations/eastus/operationStatuses/myResource/operationId/3296660b-933d-4664-bfd4-8aebcd21cbdf?api-version=2018-10-01 + cache-control: + - no-cache + content-length: + - '0' + date: + - Thu, 30 Apr 2020 14:26:18 GMT + expires: + - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_cli_mgmt_signalr_test_signalrf5150df8/providers/Microsoft.SignalRService/locations/eastus/operationResults/3296660b-933d-4664-bfd4-8aebcd21cbdf/SignalR/myResource?api-version=2018-10-01 + pragma: + - no-cache + server: + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1199' + x-rp-server-mvid: + - afd9a794-0c74-4d7a-9baf-5982aa7d2e8c + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - python/3.6.9 (Linux-4.9.184-linuxkit-x86_64-with-Ubuntu-18.04-bionic) msrest/0.6.10 + msrest_azure/0.6.2 azure-mgmt-signalr/0.3.0 Azure-SDK-For-Python + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_cli_mgmt_signalr_test_signalrf5150df8/providers/Microsoft.SignalRService/locations/eastus/operationStatuses/myResource/operationId/3296660b-933d-4664-bfd4-8aebcd21cbdf?api-version=2018-10-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_cli_mgmt_signalr_test_signalrf5150df8/providers/Microsoft.SignalRService/locations/eastus/operationStatuses/myResource/operationId/3296660b-933d-4664-bfd4-8aebcd21cbdf","name":"3296660b-933d-4664-bfd4-8aebcd21cbdf","status":"Running","startTime":"2020-04-30T14:26:19.0976905Z"}' + headers: + cache-control: + - no-cache + content-length: + - '356' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 30 Apr 2020 14:26:49 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - afd9a794-0c74-4d7a-9baf-5982aa7d2e8c + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - python/3.6.9 (Linux-4.9.184-linuxkit-x86_64-with-Ubuntu-18.04-bionic) msrest/0.6.10 + msrest_azure/0.6.2 azure-mgmt-signalr/0.3.0 Azure-SDK-For-Python + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_cli_mgmt_signalr_test_signalrf5150df8/providers/Microsoft.SignalRService/locations/eastus/operationStatuses/myResource/operationId/3296660b-933d-4664-bfd4-8aebcd21cbdf?api-version=2018-10-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_cli_mgmt_signalr_test_signalrf5150df8/providers/Microsoft.SignalRService/locations/eastus/operationStatuses/myResource/operationId/3296660b-933d-4664-bfd4-8aebcd21cbdf","name":"3296660b-933d-4664-bfd4-8aebcd21cbdf","status":"Succeeded","startTime":"2020-04-30T14:26:19.0976905Z","endTime":"2020-04-30T14:26:50.9934575Z"}' + headers: + cache-control: + - no-cache + content-length: + - '399' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 30 Apr 2020 14:27:21 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - afd9a794-0c74-4d7a-9baf-5982aa7d2e8c + status: + code: 200 + message: OK +- request: + body: '{"tags": {"key1": "value1"}, "sku": {"name": "Standard_S1", "tier": "Standard", + "capacity": 1}, "properties": {"features": [{"flag": "ServiceMode", "value": + "Serverless"}], "cors": {"allowedOrigins": ["https://foo.com", "https://bar.com"]}}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '241' + Content-Type: + - application/json; charset=utf-8 + User-Agent: + - python/3.6.9 (Linux-4.9.184-linuxkit-x86_64-with-Ubuntu-18.04-bionic) msrest/0.6.10 + msrest_azure/0.6.2 azure-mgmt-signalr/0.3.0 Azure-SDK-For-Python + accept-language: + - en-US + method: PATCH + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_cli_mgmt_signalr_test_signalrf5150df8/providers/Microsoft.SignalRService/signalR/myResource?api-version=2018-10-01 + response: + body: + string: '' + headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_cli_mgmt_signalr_test_signalrf5150df8/providers/Microsoft.SignalRService/locations/eastus/operationStatuses/myResource/operationId/46b1bca0-2afd-4469-9bd8-98dc39c0f8ec?api-version=2018-10-01 + cache-control: + - no-cache + content-length: + - '0' + date: + - Thu, 30 Apr 2020 14:27:23 GMT + expires: + - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_cli_mgmt_signalr_test_signalrf5150df8/providers/Microsoft.SignalRService/locations/eastus/operationResults/46b1bca0-2afd-4469-9bd8-98dc39c0f8ec/SignalR/myResource?api-version=2018-10-01 + pragma: + - no-cache + server: + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1199' + x-rp-server-mvid: + - afd9a794-0c74-4d7a-9baf-5982aa7d2e8c + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - python/3.6.9 (Linux-4.9.184-linuxkit-x86_64-with-Ubuntu-18.04-bionic) msrest/0.6.10 + msrest_azure/0.6.2 azure-mgmt-signalr/0.3.0 Azure-SDK-For-Python + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_cli_mgmt_signalr_test_signalrf5150df8/providers/Microsoft.SignalRService/locations/eastus/operationStatuses/myResource/operationId/46b1bca0-2afd-4469-9bd8-98dc39c0f8ec?api-version=2018-10-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_cli_mgmt_signalr_test_signalrf5150df8/providers/Microsoft.SignalRService/locations/eastus/operationStatuses/myResource/operationId/46b1bca0-2afd-4469-9bd8-98dc39c0f8ec","name":"46b1bca0-2afd-4469-9bd8-98dc39c0f8ec","status":"Succeeded","startTime":"2020-04-30T14:27:23.7689885Z","endTime":"2020-04-30T14:27:37.0229322Z"}' + headers: + cache-control: + - no-cache + content-length: + - '399' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 30 Apr 2020 14:27:54 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - afd9a794-0c74-4d7a-9baf-5982aa7d2e8c + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - python/3.6.9 (Linux-4.9.184-linuxkit-x86_64-with-Ubuntu-18.04-bionic) msrest/0.6.10 + msrest_azure/0.6.2 azure-mgmt-signalr/0.3.0 Azure-SDK-For-Python + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_cli_mgmt_signalr_test_signalrf5150df8/providers/Microsoft.SignalRService/signalR/myResource?api-version=2018-10-01 + response: + body: + string: '{"sku":{"name":"Standard_S1","tier":"Standard","size":"S1","capacity":1},"properties":{"provisioningState":"Succeeded","externalIP":"40.71.15.7","hostName":"myresource.service.signalr.net","publicPort":443,"serverPort":443,"version":"1.0","privateEndpointConnections":[],"hostNamePrefix":"myresource","features":[{"flag":"ServiceMode","value":"Serverless","properties":{}},{"flag":"EnableConnectivityLogs","value":"False","properties":{}},{"flag":"EnableMessagingLogs","value":"False","properties":{}}],"cors":{"allowedOrigins":["https://foo.com","https://bar.com"]},"upstream":{"templates":null},"networkACLs":{"defaultAction":"Deny","publicNetwork":{"allow":["ServerConnection","ClientConnection","RESTAPI"],"deny":null},"privateEndpoints":[]}},"location":"eastus","tags":{"key1":"value1"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_cli_mgmt_signalr_test_signalrf5150df8/providers/Microsoft.SignalRService/SignalR/myResource","name":"myResource","type":"Microsoft.SignalRService/SignalR","kind":"SignalR"}' + headers: + cache-control: + - no-cache + content-length: + - '1042' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 30 Apr 2020 14:27:55 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - afd9a794-0c74-4d7a-9baf-5982aa7d2e8c + status: + code: 200 + message: OK +- request: + body: '{"type": "Microsoft.SignalRService/SignalR", "name": "my-signalr-service"}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '74' + Content-Type: + - application/json; charset=utf-8 + User-Agent: + - python/3.6.9 (Linux-4.9.184-linuxkit-x86_64-with-Ubuntu-18.04-bionic) msrest/0.6.10 + msrest_azure/0.6.2 azure-mgmt-signalr/0.3.0 Azure-SDK-For-Python + accept-language: + - en-US + method: POST + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.SignalRService/locations/eastus/checkNameAvailability?api-version=2018-10-01 + response: + body: + string: '{"nameAvailable":true}' + headers: + cache-control: + - no-cache + content-length: + - '22' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 30 Apr 2020 14:27:56 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1198' + x-rp-server-mvid: + - afd9a794-0c74-4d7a-9baf-5982aa7d2e8c + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '0' + User-Agent: + - python/3.6.9 (Linux-4.9.184-linuxkit-x86_64-with-Ubuntu-18.04-bionic) msrest/0.6.10 + msrest_azure/0.6.2 azure-mgmt-signalr/0.3.0 Azure-SDK-For-Python + accept-language: + - en-US + method: DELETE + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_cli_mgmt_signalr_test_signalrf5150df8/providers/Microsoft.SignalRService/signalR/myResource?api-version=2018-10-01 + response: + body: + string: '' + headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_cli_mgmt_signalr_test_signalrf5150df8/providers/Microsoft.SignalRService/locations/eastus/operationStatuses/myResource/operationId/c486d4b5-e2f6-48ca-99a1-042e94b19d60?api-version=2018-10-01 + cache-control: + - no-cache + content-length: + - '0' + date: + - Thu, 30 Apr 2020 14:27:58 GMT + expires: + - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_cli_mgmt_signalr_test_signalrf5150df8/providers/Microsoft.SignalRService/locations/eastus/operationResults/c486d4b5-e2f6-48ca-99a1-042e94b19d60/SignalR/myResource?api-version=2018-10-01 + pragma: + - no-cache + server: + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-deletes: + - '14999' + x-rp-server-mvid: + - afd9a794-0c74-4d7a-9baf-5982aa7d2e8c + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - python/3.6.9 (Linux-4.9.184-linuxkit-x86_64-with-Ubuntu-18.04-bionic) msrest/0.6.10 + msrest_azure/0.6.2 azure-mgmt-signalr/0.3.0 Azure-SDK-For-Python + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_cli_mgmt_signalr_test_signalrf5150df8/providers/Microsoft.SignalRService/locations/eastus/operationStatuses/myResource/operationId/c486d4b5-e2f6-48ca-99a1-042e94b19d60?api-version=2018-10-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test_cli_mgmt_signalr_test_signalrf5150df8/providers/Microsoft.SignalRService/locations/eastus/operationStatuses/myResource/operationId/c486d4b5-e2f6-48ca-99a1-042e94b19d60","name":"c486d4b5-e2f6-48ca-99a1-042e94b19d60","status":"Succeeded","startTime":"2020-04-30T14:27:58.2535948Z","endTime":"2020-04-30T14:28:06.539984Z"}' + headers: + cache-control: + - no-cache + content-length: + - '398' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 30 Apr 2020 14:28:28 GMT + expires: + - '-1' + pragma: + - no-cache + server: + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-rp-server-mvid: + - afd9a794-0c74-4d7a-9baf-5982aa7d2e8c + status: + code: 200 + message: OK +version: 1 diff --git a/sdk/signalr/azure-mgmt-signalr/tests/test_cli_mgmt_signalr.py b/sdk/signalr/azure-mgmt-signalr/tests/test_cli_mgmt_signalr.py new file mode 100644 index 000000000000..088154afe051 --- /dev/null +++ b/sdk/signalr/azure-mgmt-signalr/tests/test_cli_mgmt_signalr.py @@ -0,0 +1,136 @@ +# coding: utf-8 + +#------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +#-------------------------------------------------------------------------- + + +# TEST SCENARIO COVERAGE +# ---------------------- +# Methods Total : 12 +# Methods Covered : 12 +# Examples Total : 12 +# Examples Tested : 12 +# Coverage % : 100 +# ---------------------- + +import unittest + +import azure.mgmt.signalr +from devtools_testutils import AzureMgmtTestCase, ResourceGroupPreparer + +AZURE_LOCATION = 'eastus' + +class MgmtSignalRTest(AzureMgmtTestCase): + + def setUp(self): + super(MgmtSignalRTest, self).setUp() + self.mgmt_client = self.create_mgmt_client( + azure.mgmt.signalr.SignalRManagementClient + ) + + @ResourceGroupPreparer(location=AZURE_LOCATION) + def test_signalr(self, resource_group): + + SUBSCRIPTION_ID = self.settings.SUBSCRIPTION_ID + TENANT_ID = self.settings.TENANT_ID + RESOURCE_GROUP = resource_group.name + LOCATION = "myLocation" + RESOURCE_NAME = "myResource" + + # /SignalR/put/SignalR_CreateOrUpdate[put] + BODY = { + 'tags': { + "key1": "value1" + }, + 'sku': { + "name": "Standard_S1", + "tier": "Standard", + "capacity": "1" + }, + 'properties': { + "features": [ + { + "flag": "ServiceMode", + "value": "Serverless" + } + ], + "cors": { + "allowed_origins": [ + "https://foo.com", + "https://bar.com" + ] + } + }, + 'location': 'eastus' + } + result = self.mgmt_client.signal_r.create_or_update(resource_group_name=RESOURCE_GROUP, resource_name=RESOURCE_NAME, parameters=BODY) + result = result.result() + + # /SignalR/get/SignalR_Get[get] + result = self.mgmt_client.signal_r.get(resource_group_name=RESOURCE_GROUP, resource_name=RESOURCE_NAME) + + # /SignalR/get/SignalR_ListByResourceGroup[get] + result = self.mgmt_client.signal_r.list_by_resource_group(resource_group_name=RESOURCE_GROUP) + + # /Usages/get/Usages_List[get] + result = self.mgmt_client.usages.list(location=LOCATION) + + # /SignalR/get/SignalR_ListBySubscription[get] + result = self.mgmt_client.signal_r.list_by_subscription() + + # /Operations/get/Operations_List[get] + result = self.mgmt_client.operations.list() + + # /SignalR/post/SignalR_RegenerateKey[post] + # result = self.mgmt_client.signal_r.regenerate_key(resource_group_name=RESOURCE_GROUP, resource_name=RESOURCE_NAME, key_type="Primary") + # result = result.result() + + # /SignalR/post/SignalR_ListKeys[post] + result = self.mgmt_client.signal_r.list_keys(resource_group_name=RESOURCE_GROUP, resource_name=RESOURCE_NAME) + + # /SignalR/post/SignalR_Restart[post] + result = self.mgmt_client.signal_r.restart(resource_group_name=RESOURCE_GROUP, resource_name=RESOURCE_NAME) + result = result.result() + + # /SignalR/patch/SignalR_Update[patch] + BODY = { + "tags": { + "key1": "value1" + }, + "sku": { + "name": "Standard_S1", + "tier": "Standard", + "capacity": "1" + }, + "properties": { + "features": [ + { + "flag": "ServiceMode", + "value": "Serverless" + } + ], + "cors": { + "allowed_origins": [ + "https://foo.com", + "https://bar.com" + ] + } + } + } + result = self.mgmt_client.signal_r.update(resource_group_name=RESOURCE_GROUP, resource_name=RESOURCE_NAME, parameters=BODY) + result = result.result() + + # /SignalR/post/SignalR_CheckNameAvailability[post] + result = self.mgmt_client.signal_r.check_name_availability(location="eastus", type="Microsoft.SignalRService/SignalR", name="my-signalr-service") + + # /SignalR/delete/SignalR_Delete[delete] + result = self.mgmt_client.signal_r.delete(resource_group_name=RESOURCE_GROUP, resource_name=RESOURCE_NAME) + result = result.result() + + +#------------------------------------------------------------------------------ +if __name__ == '__main__': + unittest.main() diff --git a/sdk/storage/azure-mgmt-storagecache/CHANGELOG.md b/sdk/storage/azure-mgmt-storagecache/CHANGELOG.md index 10fc3c2e444e..3878a8b5ee06 100644 --- a/sdk/storage/azure-mgmt-storagecache/CHANGELOG.md +++ b/sdk/storage/azure-mgmt-storagecache/CHANGELOG.md @@ -1,5 +1,14 @@ # Release History +## 0.3.0 (2020-03-01) + +**Features** + + - Model Cache has a new parameter security_settings + - Model Cache has a new parameter network_settings + - Model Cache has a new parameter identity + - Model Cache has a new parameter encryption_settings + ## 0.2.0 (2019-11-12) **Features** diff --git a/sdk/storage/azure-mgmt-storagecache/README.md b/sdk/storage/azure-mgmt-storagecache/README.md index b38276295694..bac224225474 100644 --- a/sdk/storage/azure-mgmt-storagecache/README.md +++ b/sdk/storage/azure-mgmt-storagecache/README.md @@ -1,29 +1,21 @@ -## Microsoft Azure SDK for Python +# Microsoft Azure SDK for Python This is the Microsoft Azure MyService Management Client Library. +This package has been tested with Python 2.7, 3.5, 3.6, 3.7 and 3.8. +For a more complete view of Azure libraries, see the [Github repo](https://github.com/Azure/azure-sdk-for-python/) -Azure Resource Manager (ARM) is the next generation of management APIs -that replace the old Azure Service Management (ASM). -This package has been tested with Python 2.7, 3.5, 3.6 and 3.7. +# Usage -For the older Azure Service Management (ASM) libraries, see -[azure-servicemanagement-legacy](https://pypi.python.org/pypi/azure-servicemanagement-legacy) -library. +For code examples, see [MyService Management](https://docs.microsoft.com/python/api/overview/azure/) +on docs.microsoft.com. -For a more complete set of Azure libraries, see the -[azure](https://pypi.python.org/pypi/azure) bundle package. -## Usage +# Provide Feedback -For code examples, see [MyService -Management](https://docs.microsoft.com/python/api/overview/azure/) on -docs.microsoft.com. - -## Provide Feedback - -If you encounter any bugs or have suggestions, please file an issue in -the [Issues](https://github.com/Azure/azure-sdk-for-python/issues) +If you encounter any bugs or have suggestions, please file an issue in the +[Issues](https://github.com/Azure/azure-sdk-for-python/issues) section of the project. -![image](https://azure-sdk-impressions.azurewebsites.net/api/impressions/azure-sdk-for-python%2Fazure-mgmt-storagecache%2FREADME.png) + +![Impressions](https://azure-sdk-impressions.azurewebsites.net/api/impressions/azure-sdk-for-python%2Fazure-mgmt-storagecache%2FREADME.png) diff --git a/sdk/storage/azure-mgmt-storagecache/azure/mgmt/storagecache/_storage_cache_management_client.py b/sdk/storage/azure-mgmt-storagecache/azure/mgmt/storagecache/_storage_cache_management_client.py index 484aac2ab33b..558d892a8211 100644 --- a/sdk/storage/azure-mgmt-storagecache/azure/mgmt/storagecache/_storage_cache_management_client.py +++ b/sdk/storage/azure-mgmt-storagecache/azure/mgmt/storagecache/_storage_cache_management_client.py @@ -55,7 +55,7 @@ def __init__( super(StorageCacheManagementClient, self).__init__(self.config.credentials, self.config) client_models = {k: v for k, v in models.__dict__.items() if isinstance(v, type)} - self.api_version = '2019-11-01' + self.api_version = '2020-03-01' self._serialize = Serializer(client_models) self._deserialize = Deserializer(client_models) diff --git a/sdk/storage/azure-mgmt-storagecache/azure/mgmt/storagecache/models/__init__.py b/sdk/storage/azure-mgmt-storagecache/azure/mgmt/storagecache/models/__init__.py index 7a17d7f6a8d7..6c3ac0b04921 100644 --- a/sdk/storage/azure-mgmt-storagecache/azure/mgmt/storagecache/models/__init__.py +++ b/sdk/storage/azure-mgmt-storagecache/azure/mgmt/storagecache/models/__init__.py @@ -13,38 +13,60 @@ from ._models_py3 import ApiOperation from ._models_py3 import ApiOperationDisplay from ._models_py3 import Cache + from ._models_py3 import CacheEncryptionSettings from ._models_py3 import CacheHealth + from ._models_py3 import CacheIdentity + from ._models_py3 import CacheNetworkSettings + from ._models_py3 import CacheSecuritySettings from ._models_py3 import CacheSku from ._models_py3 import CacheUpgradeStatus from ._models_py3 import ClfsTarget + from ._models_py3 import ClfsTargetProperties from ._models_py3 import CloudErrorBody + from ._models_py3 import KeyVaultKeyReference + from ._models_py3 import KeyVaultKeyReferenceSourceVault from ._models_py3 import NamespaceJunction from ._models_py3 import Nfs3Target + from ._models_py3 import Nfs3TargetProperties from ._models_py3 import ResourceSku from ._models_py3 import ResourceSkuCapabilities from ._models_py3 import ResourceSkuLocationInfo from ._models_py3 import Restriction from ._models_py3 import StorageTarget + from ._models_py3 import StorageTargetProperties + from ._models_py3 import StorageTargetResource from ._models_py3 import UnknownTarget + from ._models_py3 import UnknownTargetProperties from ._models_py3 import UsageModel from ._models_py3 import UsageModelDisplay except (SyntaxError, ImportError): from ._models import ApiOperation from ._models import ApiOperationDisplay from ._models import Cache + from ._models import CacheEncryptionSettings from ._models import CacheHealth + from ._models import CacheIdentity + from ._models import CacheNetworkSettings + from ._models import CacheSecuritySettings from ._models import CacheSku from ._models import CacheUpgradeStatus from ._models import ClfsTarget + from ._models import ClfsTargetProperties from ._models import CloudErrorBody + from ._models import KeyVaultKeyReference + from ._models import KeyVaultKeyReferenceSourceVault from ._models import NamespaceJunction from ._models import Nfs3Target + from ._models import Nfs3TargetProperties from ._models import ResourceSku from ._models import ResourceSkuCapabilities from ._models import ResourceSkuLocationInfo from ._models import Restriction from ._models import StorageTarget + from ._models import StorageTargetProperties + from ._models import StorageTargetResource from ._models import UnknownTarget + from ._models import UnknownTargetProperties from ._models import UsageModel from ._models import UsageModelDisplay from ._paged_models import ApiOperationPaged @@ -53,30 +75,42 @@ from ._paged_models import StorageTargetPaged from ._paged_models import UsageModelPaged from ._storage_cache_management_client_enums import ( + CacheIdentityType, HealthStateType, ProvisioningStateType, FirmwareStatusType, - ReasonCode, StorageTargetType, + ReasonCode, ) __all__ = [ 'ApiOperation', 'ApiOperationDisplay', 'Cache', + 'CacheEncryptionSettings', 'CacheHealth', + 'CacheIdentity', + 'CacheNetworkSettings', + 'CacheSecuritySettings', 'CacheSku', 'CacheUpgradeStatus', 'ClfsTarget', + 'ClfsTargetProperties', 'CloudErrorBody', + 'KeyVaultKeyReference', + 'KeyVaultKeyReferenceSourceVault', 'NamespaceJunction', 'Nfs3Target', + 'Nfs3TargetProperties', 'ResourceSku', 'ResourceSkuCapabilities', 'ResourceSkuLocationInfo', 'Restriction', 'StorageTarget', + 'StorageTargetProperties', + 'StorageTargetResource', 'UnknownTarget', + 'UnknownTargetProperties', 'UsageModel', 'UsageModelDisplay', 'ApiOperationPaged', @@ -84,9 +118,10 @@ 'UsageModelPaged', 'CachePaged', 'StorageTargetPaged', + 'CacheIdentityType', 'HealthStateType', 'ProvisioningStateType', 'FirmwareStatusType', - 'ReasonCode', 'StorageTargetType', + 'ReasonCode', ] diff --git a/sdk/storage/azure-mgmt-storagecache/azure/mgmt/storagecache/models/_models.py b/sdk/storage/azure-mgmt-storagecache/azure/mgmt/storagecache/models/_models.py index ff6a1ce2f01e..bad52904c4f0 100644 --- a/sdk/storage/azure-mgmt-storagecache/azure/mgmt/storagecache/models/_models.py +++ b/sdk/storage/azure-mgmt-storagecache/azure/mgmt/storagecache/models/_models.py @@ -75,6 +75,8 @@ class Cache(Model): :vartype name: str :ivar type: Type of the Cache; Microsoft.StorageCache/Cache :vartype type: str + :param identity: The identity of the cache, if configured. + :type identity: ~azure.mgmt.storagecache.models.CacheIdentity :param cache_size_gb: The size of this Cache, in GB. :type cache_size_gb: int :ivar health: Health of the Cache. @@ -92,6 +94,15 @@ class Cache(Model): :type subnet: str :param upgrade_status: Upgrade status of the Cache. :type upgrade_status: ~azure.mgmt.storagecache.models.CacheUpgradeStatus + :param network_settings: Specifies network settings of the cache. + :type network_settings: + ~azure.mgmt.storagecache.models.CacheNetworkSettings + :param encryption_settings: Specifies encryption settings of the cache. + :type encryption_settings: + ~azure.mgmt.storagecache.models.CacheEncryptionSettings + :param security_settings: Specifies security settings of the cache. + :type security_settings: + ~azure.mgmt.storagecache.models.CacheSecuritySettings :param sku: SKU for the Cache. :type sku: ~azure.mgmt.storagecache.models.CacheSku """ @@ -110,12 +121,16 @@ class Cache(Model): 'location': {'key': 'location', 'type': 'str'}, 'name': {'key': 'name', 'type': 'str'}, 'type': {'key': 'type', 'type': 'str'}, + 'identity': {'key': 'identity', 'type': 'CacheIdentity'}, 'cache_size_gb': {'key': 'properties.cacheSizeGB', 'type': 'int'}, 'health': {'key': 'properties.health', 'type': 'CacheHealth'}, 'mount_addresses': {'key': 'properties.mountAddresses', 'type': '[str]'}, 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, 'subnet': {'key': 'properties.subnet', 'type': 'str'}, 'upgrade_status': {'key': 'properties.upgradeStatus', 'type': 'CacheUpgradeStatus'}, + 'network_settings': {'key': 'properties.networkSettings', 'type': 'CacheNetworkSettings'}, + 'encryption_settings': {'key': 'properties.encryptionSettings', 'type': 'CacheEncryptionSettings'}, + 'security_settings': {'key': 'properties.securitySettings', 'type': 'CacheSecuritySettings'}, 'sku': {'key': 'sku', 'type': 'CacheSku'}, } @@ -126,15 +141,37 @@ def __init__(self, **kwargs): self.location = kwargs.get('location', None) self.name = None self.type = None + self.identity = kwargs.get('identity', None) self.cache_size_gb = kwargs.get('cache_size_gb', None) self.health = None self.mount_addresses = None self.provisioning_state = kwargs.get('provisioning_state', None) self.subnet = kwargs.get('subnet', None) self.upgrade_status = kwargs.get('upgrade_status', None) + self.network_settings = kwargs.get('network_settings', None) + self.encryption_settings = kwargs.get('encryption_settings', None) + self.security_settings = kwargs.get('security_settings', None) self.sku = kwargs.get('sku', None) +class CacheEncryptionSettings(Model): + """Cache encryption settings. + + :param key_encryption_key: Specifies the location of the key encryption + key in Key Vault. + :type key_encryption_key: + ~azure.mgmt.storagecache.models.KeyVaultKeyReference + """ + + _attribute_map = { + 'key_encryption_key': {'key': 'keyEncryptionKey', 'type': 'KeyVaultKeyReference'}, + } + + def __init__(self, **kwargs): + super(CacheEncryptionSettings, self).__init__(**kwargs) + self.key_encryption_key = kwargs.get('key_encryption_key', None) + + class CacheHealth(Model): """An indication of Cache health. Gives more information about health than just that related to provisioning. @@ -158,6 +195,85 @@ def __init__(self, **kwargs): self.status_description = kwargs.get('status_description', None) +class CacheIdentity(Model): + """Cache identity properties. + + Variables are only populated by the server, and will be ignored when + sending a request. + + :ivar principal_id: The principal id of the cache. + :vartype principal_id: str + :ivar tenant_id: The tenant id associated with the cache. + :vartype tenant_id: str + :param type: The type of identity used for the cache. Possible values + include: 'SystemAssigned', 'None' + :type type: str or ~azure.mgmt.storagecache.models.CacheIdentityType + """ + + _validation = { + 'principal_id': {'readonly': True}, + 'tenant_id': {'readonly': True}, + } + + _attribute_map = { + 'principal_id': {'key': 'principalId', 'type': 'str'}, + 'tenant_id': {'key': 'tenantId', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'CacheIdentityType'}, + } + + def __init__(self, **kwargs): + super(CacheIdentity, self).__init__(**kwargs) + self.principal_id = None + self.tenant_id = None + self.type = kwargs.get('type', None) + + +class CacheNetworkSettings(Model): + """Cache network settings. + + Variables are only populated by the server, and will be ignored when + sending a request. + + :param mtu: The IPv4 maximum transmission unit configured for the subnet. + Default value: 1500 . + :type mtu: int + :ivar utility_addresses: Array of additional IP addresses used by this + Cache. + :vartype utility_addresses: list[str] + """ + + _validation = { + 'mtu': {'maximum': 1500, 'minimum': 576}, + 'utility_addresses': {'readonly': True}, + } + + _attribute_map = { + 'mtu': {'key': 'mtu', 'type': 'int'}, + 'utility_addresses': {'key': 'utilityAddresses', 'type': '[str]'}, + } + + def __init__(self, **kwargs): + super(CacheNetworkSettings, self).__init__(**kwargs) + self.mtu = kwargs.get('mtu', 1500) + self.utility_addresses = None + + +class CacheSecuritySettings(Model): + """Cache security settings. + + :param root_squash: root squash of cache property. + :type root_squash: bool + """ + + _attribute_map = { + 'root_squash': {'key': 'rootSquash', 'type': 'bool'}, + } + + def __init__(self, **kwargs): + super(CacheSecuritySettings, self).__init__(**kwargs) + self.root_squash = kwargs.get('root_squash', None) + + class CacheSku(Model): """SKU for the Cache. @@ -225,7 +341,7 @@ def __init__(self, **kwargs): class ClfsTarget(Model): - """Storage container for use as a CLFS Storage Target. + """Properties pertained to ClfsTarget. :param target: Resource ID of storage container. :type target: str @@ -240,6 +356,110 @@ def __init__(self, **kwargs): self.target = kwargs.get('target', None) +class StorageTargetProperties(Model): + """Properties of the Storage Target. + + You probably want to use the sub-classes and not this class directly. Known + sub-classes are: Nfs3TargetProperties, ClfsTargetProperties, + UnknownTargetProperties + + All required parameters must be populated in order to send to Azure. + + :param junctions: List of Cache namespace junctions to target for + namespace associations. + :type junctions: list[~azure.mgmt.storagecache.models.NamespaceJunction] + :param target_type: Type of the Storage Target. + :type target_type: str + :param provisioning_state: ARM provisioning state, see + https://github.com/Azure/azure-resource-manager-rpc/blob/master/v1.0/Addendum.md#provisioningstate-property. + Possible values include: 'Succeeded', 'Failed', 'Cancelled', 'Creating', + 'Deleting', 'Updating' + :type provisioning_state: str or + ~azure.mgmt.storagecache.models.ProvisioningStateType + :param nfs3: Properties when targetType is nfs3. + :type nfs3: ~azure.mgmt.storagecache.models.Nfs3Target + :param clfs: Properties when targetType is clfs. + :type clfs: ~azure.mgmt.storagecache.models.ClfsTarget + :param unknown: Properties when targetType is unknown. + :type unknown: ~azure.mgmt.storagecache.models.UnknownTarget + :param target_base_type: Required. Constant filled by server. + :type target_base_type: str + """ + + _validation = { + 'target_base_type': {'required': True}, + } + + _attribute_map = { + 'junctions': {'key': 'junctions', 'type': '[NamespaceJunction]'}, + 'target_type': {'key': 'targetType', 'type': 'str'}, + 'provisioning_state': {'key': 'provisioningState', 'type': 'str'}, + 'nfs3': {'key': 'nfs3', 'type': 'Nfs3Target'}, + 'clfs': {'key': 'clfs', 'type': 'ClfsTarget'}, + 'unknown': {'key': 'unknown', 'type': 'UnknownTarget'}, + 'target_base_type': {'key': 'targetBaseType', 'type': 'str'}, + } + + _subtype_map = { + 'target_base_type': {'nfs3': 'Nfs3TargetProperties', 'clfs': 'ClfsTargetProperties', 'unknown': 'UnknownTargetProperties'} + } + + def __init__(self, **kwargs): + super(StorageTargetProperties, self).__init__(**kwargs) + self.junctions = kwargs.get('junctions', None) + self.target_type = kwargs.get('target_type', None) + self.provisioning_state = kwargs.get('provisioning_state', None) + self.nfs3 = kwargs.get('nfs3', None) + self.clfs = kwargs.get('clfs', None) + self.unknown = kwargs.get('unknown', None) + self.target_base_type = None + + +class ClfsTargetProperties(StorageTargetProperties): + """Storage container for use as a CLFS Storage Target. + + All required parameters must be populated in order to send to Azure. + + :param junctions: List of Cache namespace junctions to target for + namespace associations. + :type junctions: list[~azure.mgmt.storagecache.models.NamespaceJunction] + :param target_type: Type of the Storage Target. + :type target_type: str + :param provisioning_state: ARM provisioning state, see + https://github.com/Azure/azure-resource-manager-rpc/blob/master/v1.0/Addendum.md#provisioningstate-property. + Possible values include: 'Succeeded', 'Failed', 'Cancelled', 'Creating', + 'Deleting', 'Updating' + :type provisioning_state: str or + ~azure.mgmt.storagecache.models.ProvisioningStateType + :param nfs3: Properties when targetType is nfs3. + :type nfs3: ~azure.mgmt.storagecache.models.Nfs3Target + :param clfs: Properties when targetType is clfs. + :type clfs: ~azure.mgmt.storagecache.models.ClfsTarget + :param unknown: Properties when targetType is unknown. + :type unknown: ~azure.mgmt.storagecache.models.UnknownTarget + :param target_base_type: Required. Constant filled by server. + :type target_base_type: str + """ + + _validation = { + 'target_base_type': {'required': True}, + } + + _attribute_map = { + 'junctions': {'key': 'junctions', 'type': '[NamespaceJunction]'}, + 'target_type': {'key': 'targetType', 'type': 'str'}, + 'provisioning_state': {'key': 'provisioningState', 'type': 'str'}, + 'nfs3': {'key': 'nfs3', 'type': 'Nfs3Target'}, + 'clfs': {'key': 'clfs', 'type': 'ClfsTarget'}, + 'unknown': {'key': 'unknown', 'type': 'UnknownTarget'}, + 'target_base_type': {'key': 'targetBaseType', 'type': 'str'}, + } + + def __init__(self, **kwargs): + super(ClfsTargetProperties, self).__init__(**kwargs) + self.target_base_type = 'clfs' + + class CloudError(Model): """An error response. @@ -299,6 +519,52 @@ def __init__(self, **kwargs): self.target = kwargs.get('target', None) +class KeyVaultKeyReference(Model): + """Describes a reference to Key Vault Key. + + All required parameters must be populated in order to send to Azure. + + :param key_url: Required. The URL referencing a key encryption key in Key + Vault. + :type key_url: str + :param source_vault: Required. Describes a resource Id to source Key + Vault. + :type source_vault: + ~azure.mgmt.storagecache.models.KeyVaultKeyReferenceSourceVault + """ + + _validation = { + 'key_url': {'required': True}, + 'source_vault': {'required': True}, + } + + _attribute_map = { + 'key_url': {'key': 'keyUrl', 'type': 'str'}, + 'source_vault': {'key': 'sourceVault', 'type': 'KeyVaultKeyReferenceSourceVault'}, + } + + def __init__(self, **kwargs): + super(KeyVaultKeyReference, self).__init__(**kwargs) + self.key_url = kwargs.get('key_url', None) + self.source_vault = kwargs.get('source_vault', None) + + +class KeyVaultKeyReferenceSourceVault(Model): + """Describes a resource Id to source Key Vault. + + :param id: Resource Id. + :type id: str + """ + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + } + + def __init__(self, **kwargs): + super(KeyVaultKeyReferenceSourceVault, self).__init__(**kwargs) + self.id = kwargs.get('id', None) + + class NamespaceJunction(Model): """A namespace junction. @@ -324,7 +590,7 @@ def __init__(self, **kwargs): class Nfs3Target(Model): - """An NFSv3 mount point for use as a Storage Target. + """Properties pertained to Nfs3Target. :param target: IP address or host name of an NFSv3 host (e.g., 10.0.44.44). @@ -349,6 +615,51 @@ def __init__(self, **kwargs): self.usage_model = kwargs.get('usage_model', None) +class Nfs3TargetProperties(StorageTargetProperties): + """An NFSv3 mount point for use as a Storage Target. + + All required parameters must be populated in order to send to Azure. + + :param junctions: List of Cache namespace junctions to target for + namespace associations. + :type junctions: list[~azure.mgmt.storagecache.models.NamespaceJunction] + :param target_type: Type of the Storage Target. + :type target_type: str + :param provisioning_state: ARM provisioning state, see + https://github.com/Azure/azure-resource-manager-rpc/blob/master/v1.0/Addendum.md#provisioningstate-property. + Possible values include: 'Succeeded', 'Failed', 'Cancelled', 'Creating', + 'Deleting', 'Updating' + :type provisioning_state: str or + ~azure.mgmt.storagecache.models.ProvisioningStateType + :param nfs3: Properties when targetType is nfs3. + :type nfs3: ~azure.mgmt.storagecache.models.Nfs3Target + :param clfs: Properties when targetType is clfs. + :type clfs: ~azure.mgmt.storagecache.models.ClfsTarget + :param unknown: Properties when targetType is unknown. + :type unknown: ~azure.mgmt.storagecache.models.UnknownTarget + :param target_base_type: Required. Constant filled by server. + :type target_base_type: str + """ + + _validation = { + 'target_base_type': {'required': True}, + } + + _attribute_map = { + 'junctions': {'key': 'junctions', 'type': '[NamespaceJunction]'}, + 'target_type': {'key': 'targetType', 'type': 'str'}, + 'provisioning_state': {'key': 'provisioningState', 'type': 'str'}, + 'nfs3': {'key': 'nfs3', 'type': 'Nfs3Target'}, + 'clfs': {'key': 'clfs', 'type': 'ClfsTarget'}, + 'unknown': {'key': 'unknown', 'type': 'UnknownTarget'}, + 'target_base_type': {'key': 'targetBaseType', 'type': 'str'}, + } + + def __init__(self, **kwargs): + super(Nfs3TargetProperties, self).__init__(**kwargs) + self.target_base_type = 'nfs3' + + class ResourceSku(Model): """A resource SKU. @@ -479,8 +790,42 @@ def __init__(self, **kwargs): self.reason_code = kwargs.get('reason_code', None) -class StorageTarget(Model): - """A storage system being cached by a Cache. +class StorageTargetResource(Model): + """Resource used by a Cache. + + Variables are only populated by the server, and will be ignored when + sending a request. + + :ivar name: Name of the Storage Target. + :vartype name: str + :ivar id: Resource ID of the Storage Target. + :vartype id: str + :ivar type: Type of the Storage Target; + Microsoft.StorageCache/Cache/StorageTarget + :vartype type: str + """ + + _validation = { + 'name': {'readonly': True}, + 'id': {'readonly': True}, + 'type': {'readonly': True}, + } + + _attribute_map = { + 'name': {'key': 'name', 'type': 'str'}, + 'id': {'key': 'id', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + } + + def __init__(self, **kwargs): + super(StorageTargetResource, self).__init__(**kwargs) + self.name = None + self.id = None + self.type = None + + +class StorageTarget(StorageTargetResource): + """Type of the Storage Target. Variables are only populated by the server, and will be ignored when sending a request. @@ -495,10 +840,8 @@ class StorageTarget(Model): :param junctions: List of Cache namespace junctions to target for namespace associations. :type junctions: list[~azure.mgmt.storagecache.models.NamespaceJunction] - :param target_type: Type of the Storage Target. Possible values include: - 'nfs3', 'clfs', 'unknown' - :type target_type: str or - ~azure.mgmt.storagecache.models.StorageTargetType + :param target_type: Type of the Storage Target. + :type target_type: str :param provisioning_state: ARM provisioning state, see https://github.com/Azure/azure-resource-manager-rpc/blob/master/v1.0/Addendum.md#provisioningstate-property. Possible values include: 'Succeeded', 'Failed', 'Cancelled', 'Creating', @@ -533,9 +876,6 @@ class StorageTarget(Model): def __init__(self, **kwargs): super(StorageTarget, self).__init__(**kwargs) - self.name = None - self.id = None - self.type = None self.junctions = kwargs.get('junctions', None) self.target_type = kwargs.get('target_type', None) self.provisioning_state = kwargs.get('provisioning_state', None) @@ -545,7 +885,7 @@ def __init__(self, **kwargs): class UnknownTarget(Model): - """Storage container for use as an Unknown Storage Target. + """Properties pertained to UnknownTarget. :param unknown_map: Dictionary of string->string pairs containing information about the Storage Target. @@ -561,6 +901,51 @@ def __init__(self, **kwargs): self.unknown_map = kwargs.get('unknown_map', None) +class UnknownTargetProperties(StorageTargetProperties): + """Storage container for use as an Unknown Storage Target. + + All required parameters must be populated in order to send to Azure. + + :param junctions: List of Cache namespace junctions to target for + namespace associations. + :type junctions: list[~azure.mgmt.storagecache.models.NamespaceJunction] + :param target_type: Type of the Storage Target. + :type target_type: str + :param provisioning_state: ARM provisioning state, see + https://github.com/Azure/azure-resource-manager-rpc/blob/master/v1.0/Addendum.md#provisioningstate-property. + Possible values include: 'Succeeded', 'Failed', 'Cancelled', 'Creating', + 'Deleting', 'Updating' + :type provisioning_state: str or + ~azure.mgmt.storagecache.models.ProvisioningStateType + :param nfs3: Properties when targetType is nfs3. + :type nfs3: ~azure.mgmt.storagecache.models.Nfs3Target + :param clfs: Properties when targetType is clfs. + :type clfs: ~azure.mgmt.storagecache.models.ClfsTarget + :param unknown: Properties when targetType is unknown. + :type unknown: ~azure.mgmt.storagecache.models.UnknownTarget + :param target_base_type: Required. Constant filled by server. + :type target_base_type: str + """ + + _validation = { + 'target_base_type': {'required': True}, + } + + _attribute_map = { + 'junctions': {'key': 'junctions', 'type': '[NamespaceJunction]'}, + 'target_type': {'key': 'targetType', 'type': 'str'}, + 'provisioning_state': {'key': 'provisioningState', 'type': 'str'}, + 'nfs3': {'key': 'nfs3', 'type': 'Nfs3Target'}, + 'clfs': {'key': 'clfs', 'type': 'ClfsTarget'}, + 'unknown': {'key': 'unknown', 'type': 'UnknownTarget'}, + 'target_base_type': {'key': 'targetBaseType', 'type': 'str'}, + } + + def __init__(self, **kwargs): + super(UnknownTargetProperties, self).__init__(**kwargs) + self.target_base_type = 'unknown' + + class UsageModel(Model): """A usage model. diff --git a/sdk/storage/azure-mgmt-storagecache/azure/mgmt/storagecache/models/_models_py3.py b/sdk/storage/azure-mgmt-storagecache/azure/mgmt/storagecache/models/_models_py3.py index ea71abebfc88..9ee016d95557 100644 --- a/sdk/storage/azure-mgmt-storagecache/azure/mgmt/storagecache/models/_models_py3.py +++ b/sdk/storage/azure-mgmt-storagecache/azure/mgmt/storagecache/models/_models_py3.py @@ -75,6 +75,8 @@ class Cache(Model): :vartype name: str :ivar type: Type of the Cache; Microsoft.StorageCache/Cache :vartype type: str + :param identity: The identity of the cache, if configured. + :type identity: ~azure.mgmt.storagecache.models.CacheIdentity :param cache_size_gb: The size of this Cache, in GB. :type cache_size_gb: int :ivar health: Health of the Cache. @@ -92,6 +94,15 @@ class Cache(Model): :type subnet: str :param upgrade_status: Upgrade status of the Cache. :type upgrade_status: ~azure.mgmt.storagecache.models.CacheUpgradeStatus + :param network_settings: Specifies network settings of the cache. + :type network_settings: + ~azure.mgmt.storagecache.models.CacheNetworkSettings + :param encryption_settings: Specifies encryption settings of the cache. + :type encryption_settings: + ~azure.mgmt.storagecache.models.CacheEncryptionSettings + :param security_settings: Specifies security settings of the cache. + :type security_settings: + ~azure.mgmt.storagecache.models.CacheSecuritySettings :param sku: SKU for the Cache. :type sku: ~azure.mgmt.storagecache.models.CacheSku """ @@ -110,31 +121,57 @@ class Cache(Model): 'location': {'key': 'location', 'type': 'str'}, 'name': {'key': 'name', 'type': 'str'}, 'type': {'key': 'type', 'type': 'str'}, + 'identity': {'key': 'identity', 'type': 'CacheIdentity'}, 'cache_size_gb': {'key': 'properties.cacheSizeGB', 'type': 'int'}, 'health': {'key': 'properties.health', 'type': 'CacheHealth'}, 'mount_addresses': {'key': 'properties.mountAddresses', 'type': '[str]'}, 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, 'subnet': {'key': 'properties.subnet', 'type': 'str'}, 'upgrade_status': {'key': 'properties.upgradeStatus', 'type': 'CacheUpgradeStatus'}, + 'network_settings': {'key': 'properties.networkSettings', 'type': 'CacheNetworkSettings'}, + 'encryption_settings': {'key': 'properties.encryptionSettings', 'type': 'CacheEncryptionSettings'}, + 'security_settings': {'key': 'properties.securitySettings', 'type': 'CacheSecuritySettings'}, 'sku': {'key': 'sku', 'type': 'CacheSku'}, } - def __init__(self, *, tags=None, location: str=None, cache_size_gb: int=None, provisioning_state=None, subnet: str=None, upgrade_status=None, sku=None, **kwargs) -> None: + def __init__(self, *, tags=None, location: str=None, identity=None, cache_size_gb: int=None, provisioning_state=None, subnet: str=None, upgrade_status=None, network_settings=None, encryption_settings=None, security_settings=None, sku=None, **kwargs) -> None: super(Cache, self).__init__(**kwargs) self.tags = tags self.id = None self.location = location self.name = None self.type = None + self.identity = identity self.cache_size_gb = cache_size_gb self.health = None self.mount_addresses = None self.provisioning_state = provisioning_state self.subnet = subnet self.upgrade_status = upgrade_status + self.network_settings = network_settings + self.encryption_settings = encryption_settings + self.security_settings = security_settings self.sku = sku +class CacheEncryptionSettings(Model): + """Cache encryption settings. + + :param key_encryption_key: Specifies the location of the key encryption + key in Key Vault. + :type key_encryption_key: + ~azure.mgmt.storagecache.models.KeyVaultKeyReference + """ + + _attribute_map = { + 'key_encryption_key': {'key': 'keyEncryptionKey', 'type': 'KeyVaultKeyReference'}, + } + + def __init__(self, *, key_encryption_key=None, **kwargs) -> None: + super(CacheEncryptionSettings, self).__init__(**kwargs) + self.key_encryption_key = key_encryption_key + + class CacheHealth(Model): """An indication of Cache health. Gives more information about health than just that related to provisioning. @@ -158,6 +195,85 @@ def __init__(self, *, state=None, status_description: str=None, **kwargs) -> Non self.status_description = status_description +class CacheIdentity(Model): + """Cache identity properties. + + Variables are only populated by the server, and will be ignored when + sending a request. + + :ivar principal_id: The principal id of the cache. + :vartype principal_id: str + :ivar tenant_id: The tenant id associated with the cache. + :vartype tenant_id: str + :param type: The type of identity used for the cache. Possible values + include: 'SystemAssigned', 'None' + :type type: str or ~azure.mgmt.storagecache.models.CacheIdentityType + """ + + _validation = { + 'principal_id': {'readonly': True}, + 'tenant_id': {'readonly': True}, + } + + _attribute_map = { + 'principal_id': {'key': 'principalId', 'type': 'str'}, + 'tenant_id': {'key': 'tenantId', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'CacheIdentityType'}, + } + + def __init__(self, *, type=None, **kwargs) -> None: + super(CacheIdentity, self).__init__(**kwargs) + self.principal_id = None + self.tenant_id = None + self.type = type + + +class CacheNetworkSettings(Model): + """Cache network settings. + + Variables are only populated by the server, and will be ignored when + sending a request. + + :param mtu: The IPv4 maximum transmission unit configured for the subnet. + Default value: 1500 . + :type mtu: int + :ivar utility_addresses: Array of additional IP addresses used by this + Cache. + :vartype utility_addresses: list[str] + """ + + _validation = { + 'mtu': {'maximum': 1500, 'minimum': 576}, + 'utility_addresses': {'readonly': True}, + } + + _attribute_map = { + 'mtu': {'key': 'mtu', 'type': 'int'}, + 'utility_addresses': {'key': 'utilityAddresses', 'type': '[str]'}, + } + + def __init__(self, *, mtu: int=1500, **kwargs) -> None: + super(CacheNetworkSettings, self).__init__(**kwargs) + self.mtu = mtu + self.utility_addresses = None + + +class CacheSecuritySettings(Model): + """Cache security settings. + + :param root_squash: root squash of cache property. + :type root_squash: bool + """ + + _attribute_map = { + 'root_squash': {'key': 'rootSquash', 'type': 'bool'}, + } + + def __init__(self, *, root_squash: bool=None, **kwargs) -> None: + super(CacheSecuritySettings, self).__init__(**kwargs) + self.root_squash = root_squash + + class CacheSku(Model): """SKU for the Cache. @@ -225,7 +341,7 @@ def __init__(self, **kwargs) -> None: class ClfsTarget(Model): - """Storage container for use as a CLFS Storage Target. + """Properties pertained to ClfsTarget. :param target: Resource ID of storage container. :type target: str @@ -240,6 +356,110 @@ def __init__(self, *, target: str=None, **kwargs) -> None: self.target = target +class StorageTargetProperties(Model): + """Properties of the Storage Target. + + You probably want to use the sub-classes and not this class directly. Known + sub-classes are: Nfs3TargetProperties, ClfsTargetProperties, + UnknownTargetProperties + + All required parameters must be populated in order to send to Azure. + + :param junctions: List of Cache namespace junctions to target for + namespace associations. + :type junctions: list[~azure.mgmt.storagecache.models.NamespaceJunction] + :param target_type: Type of the Storage Target. + :type target_type: str + :param provisioning_state: ARM provisioning state, see + https://github.com/Azure/azure-resource-manager-rpc/blob/master/v1.0/Addendum.md#provisioningstate-property. + Possible values include: 'Succeeded', 'Failed', 'Cancelled', 'Creating', + 'Deleting', 'Updating' + :type provisioning_state: str or + ~azure.mgmt.storagecache.models.ProvisioningStateType + :param nfs3: Properties when targetType is nfs3. + :type nfs3: ~azure.mgmt.storagecache.models.Nfs3Target + :param clfs: Properties when targetType is clfs. + :type clfs: ~azure.mgmt.storagecache.models.ClfsTarget + :param unknown: Properties when targetType is unknown. + :type unknown: ~azure.mgmt.storagecache.models.UnknownTarget + :param target_base_type: Required. Constant filled by server. + :type target_base_type: str + """ + + _validation = { + 'target_base_type': {'required': True}, + } + + _attribute_map = { + 'junctions': {'key': 'junctions', 'type': '[NamespaceJunction]'}, + 'target_type': {'key': 'targetType', 'type': 'str'}, + 'provisioning_state': {'key': 'provisioningState', 'type': 'str'}, + 'nfs3': {'key': 'nfs3', 'type': 'Nfs3Target'}, + 'clfs': {'key': 'clfs', 'type': 'ClfsTarget'}, + 'unknown': {'key': 'unknown', 'type': 'UnknownTarget'}, + 'target_base_type': {'key': 'targetBaseType', 'type': 'str'}, + } + + _subtype_map = { + 'target_base_type': {'nfs3': 'Nfs3TargetProperties', 'clfs': 'ClfsTargetProperties', 'unknown': 'UnknownTargetProperties'} + } + + def __init__(self, *, junctions=None, target_type: str=None, provisioning_state=None, nfs3=None, clfs=None, unknown=None, **kwargs) -> None: + super(StorageTargetProperties, self).__init__(**kwargs) + self.junctions = junctions + self.target_type = target_type + self.provisioning_state = provisioning_state + self.nfs3 = nfs3 + self.clfs = clfs + self.unknown = unknown + self.target_base_type = None + + +class ClfsTargetProperties(StorageTargetProperties): + """Storage container for use as a CLFS Storage Target. + + All required parameters must be populated in order to send to Azure. + + :param junctions: List of Cache namespace junctions to target for + namespace associations. + :type junctions: list[~azure.mgmt.storagecache.models.NamespaceJunction] + :param target_type: Type of the Storage Target. + :type target_type: str + :param provisioning_state: ARM provisioning state, see + https://github.com/Azure/azure-resource-manager-rpc/blob/master/v1.0/Addendum.md#provisioningstate-property. + Possible values include: 'Succeeded', 'Failed', 'Cancelled', 'Creating', + 'Deleting', 'Updating' + :type provisioning_state: str or + ~azure.mgmt.storagecache.models.ProvisioningStateType + :param nfs3: Properties when targetType is nfs3. + :type nfs3: ~azure.mgmt.storagecache.models.Nfs3Target + :param clfs: Properties when targetType is clfs. + :type clfs: ~azure.mgmt.storagecache.models.ClfsTarget + :param unknown: Properties when targetType is unknown. + :type unknown: ~azure.mgmt.storagecache.models.UnknownTarget + :param target_base_type: Required. Constant filled by server. + :type target_base_type: str + """ + + _validation = { + 'target_base_type': {'required': True}, + } + + _attribute_map = { + 'junctions': {'key': 'junctions', 'type': '[NamespaceJunction]'}, + 'target_type': {'key': 'targetType', 'type': 'str'}, + 'provisioning_state': {'key': 'provisioningState', 'type': 'str'}, + 'nfs3': {'key': 'nfs3', 'type': 'Nfs3Target'}, + 'clfs': {'key': 'clfs', 'type': 'ClfsTarget'}, + 'unknown': {'key': 'unknown', 'type': 'UnknownTarget'}, + 'target_base_type': {'key': 'targetBaseType', 'type': 'str'}, + } + + def __init__(self, *, junctions=None, target_type: str=None, provisioning_state=None, nfs3=None, clfs=None, unknown=None, **kwargs) -> None: + super(ClfsTargetProperties, self).__init__(junctions=junctions, target_type=target_type, provisioning_state=provisioning_state, nfs3=nfs3, clfs=clfs, unknown=unknown, **kwargs) + self.target_base_type = 'clfs' + + class CloudError(Model): """An error response. @@ -299,6 +519,52 @@ def __init__(self, *, code: str=None, details=None, message: str=None, target: s self.target = target +class KeyVaultKeyReference(Model): + """Describes a reference to Key Vault Key. + + All required parameters must be populated in order to send to Azure. + + :param key_url: Required. The URL referencing a key encryption key in Key + Vault. + :type key_url: str + :param source_vault: Required. Describes a resource Id to source Key + Vault. + :type source_vault: + ~azure.mgmt.storagecache.models.KeyVaultKeyReferenceSourceVault + """ + + _validation = { + 'key_url': {'required': True}, + 'source_vault': {'required': True}, + } + + _attribute_map = { + 'key_url': {'key': 'keyUrl', 'type': 'str'}, + 'source_vault': {'key': 'sourceVault', 'type': 'KeyVaultKeyReferenceSourceVault'}, + } + + def __init__(self, *, key_url: str, source_vault, **kwargs) -> None: + super(KeyVaultKeyReference, self).__init__(**kwargs) + self.key_url = key_url + self.source_vault = source_vault + + +class KeyVaultKeyReferenceSourceVault(Model): + """Describes a resource Id to source Key Vault. + + :param id: Resource Id. + :type id: str + """ + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + } + + def __init__(self, *, id: str=None, **kwargs) -> None: + super(KeyVaultKeyReferenceSourceVault, self).__init__(**kwargs) + self.id = id + + class NamespaceJunction(Model): """A namespace junction. @@ -324,7 +590,7 @@ def __init__(self, *, namespace_path: str=None, target_path: str=None, nfs_expor class Nfs3Target(Model): - """An NFSv3 mount point for use as a Storage Target. + """Properties pertained to Nfs3Target. :param target: IP address or host name of an NFSv3 host (e.g., 10.0.44.44). @@ -349,6 +615,51 @@ def __init__(self, *, target: str=None, usage_model: str=None, **kwargs) -> None self.usage_model = usage_model +class Nfs3TargetProperties(StorageTargetProperties): + """An NFSv3 mount point for use as a Storage Target. + + All required parameters must be populated in order to send to Azure. + + :param junctions: List of Cache namespace junctions to target for + namespace associations. + :type junctions: list[~azure.mgmt.storagecache.models.NamespaceJunction] + :param target_type: Type of the Storage Target. + :type target_type: str + :param provisioning_state: ARM provisioning state, see + https://github.com/Azure/azure-resource-manager-rpc/blob/master/v1.0/Addendum.md#provisioningstate-property. + Possible values include: 'Succeeded', 'Failed', 'Cancelled', 'Creating', + 'Deleting', 'Updating' + :type provisioning_state: str or + ~azure.mgmt.storagecache.models.ProvisioningStateType + :param nfs3: Properties when targetType is nfs3. + :type nfs3: ~azure.mgmt.storagecache.models.Nfs3Target + :param clfs: Properties when targetType is clfs. + :type clfs: ~azure.mgmt.storagecache.models.ClfsTarget + :param unknown: Properties when targetType is unknown. + :type unknown: ~azure.mgmt.storagecache.models.UnknownTarget + :param target_base_type: Required. Constant filled by server. + :type target_base_type: str + """ + + _validation = { + 'target_base_type': {'required': True}, + } + + _attribute_map = { + 'junctions': {'key': 'junctions', 'type': '[NamespaceJunction]'}, + 'target_type': {'key': 'targetType', 'type': 'str'}, + 'provisioning_state': {'key': 'provisioningState', 'type': 'str'}, + 'nfs3': {'key': 'nfs3', 'type': 'Nfs3Target'}, + 'clfs': {'key': 'clfs', 'type': 'ClfsTarget'}, + 'unknown': {'key': 'unknown', 'type': 'UnknownTarget'}, + 'target_base_type': {'key': 'targetBaseType', 'type': 'str'}, + } + + def __init__(self, *, junctions=None, target_type: str=None, provisioning_state=None, nfs3=None, clfs=None, unknown=None, **kwargs) -> None: + super(Nfs3TargetProperties, self).__init__(junctions=junctions, target_type=target_type, provisioning_state=provisioning_state, nfs3=nfs3, clfs=clfs, unknown=unknown, **kwargs) + self.target_base_type = 'nfs3' + + class ResourceSku(Model): """A resource SKU. @@ -479,8 +790,42 @@ def __init__(self, *, reason_code=None, **kwargs) -> None: self.reason_code = reason_code -class StorageTarget(Model): - """A storage system being cached by a Cache. +class StorageTargetResource(Model): + """Resource used by a Cache. + + Variables are only populated by the server, and will be ignored when + sending a request. + + :ivar name: Name of the Storage Target. + :vartype name: str + :ivar id: Resource ID of the Storage Target. + :vartype id: str + :ivar type: Type of the Storage Target; + Microsoft.StorageCache/Cache/StorageTarget + :vartype type: str + """ + + _validation = { + 'name': {'readonly': True}, + 'id': {'readonly': True}, + 'type': {'readonly': True}, + } + + _attribute_map = { + 'name': {'key': 'name', 'type': 'str'}, + 'id': {'key': 'id', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + } + + def __init__(self, **kwargs) -> None: + super(StorageTargetResource, self).__init__(**kwargs) + self.name = None + self.id = None + self.type = None + + +class StorageTarget(StorageTargetResource): + """Type of the Storage Target. Variables are only populated by the server, and will be ignored when sending a request. @@ -495,10 +840,8 @@ class StorageTarget(Model): :param junctions: List of Cache namespace junctions to target for namespace associations. :type junctions: list[~azure.mgmt.storagecache.models.NamespaceJunction] - :param target_type: Type of the Storage Target. Possible values include: - 'nfs3', 'clfs', 'unknown' - :type target_type: str or - ~azure.mgmt.storagecache.models.StorageTargetType + :param target_type: Type of the Storage Target. + :type target_type: str :param provisioning_state: ARM provisioning state, see https://github.com/Azure/azure-resource-manager-rpc/blob/master/v1.0/Addendum.md#provisioningstate-property. Possible values include: 'Succeeded', 'Failed', 'Cancelled', 'Creating', @@ -531,11 +874,8 @@ class StorageTarget(Model): 'unknown': {'key': 'properties.unknown', 'type': 'UnknownTarget'}, } - def __init__(self, *, junctions=None, target_type=None, provisioning_state=None, nfs3=None, clfs=None, unknown=None, **kwargs) -> None: + def __init__(self, *, junctions=None, target_type: str=None, provisioning_state=None, nfs3=None, clfs=None, unknown=None, **kwargs) -> None: super(StorageTarget, self).__init__(**kwargs) - self.name = None - self.id = None - self.type = None self.junctions = junctions self.target_type = target_type self.provisioning_state = provisioning_state @@ -545,7 +885,7 @@ def __init__(self, *, junctions=None, target_type=None, provisioning_state=None, class UnknownTarget(Model): - """Storage container for use as an Unknown Storage Target. + """Properties pertained to UnknownTarget. :param unknown_map: Dictionary of string->string pairs containing information about the Storage Target. @@ -561,6 +901,51 @@ def __init__(self, *, unknown_map=None, **kwargs) -> None: self.unknown_map = unknown_map +class UnknownTargetProperties(StorageTargetProperties): + """Storage container for use as an Unknown Storage Target. + + All required parameters must be populated in order to send to Azure. + + :param junctions: List of Cache namespace junctions to target for + namespace associations. + :type junctions: list[~azure.mgmt.storagecache.models.NamespaceJunction] + :param target_type: Type of the Storage Target. + :type target_type: str + :param provisioning_state: ARM provisioning state, see + https://github.com/Azure/azure-resource-manager-rpc/blob/master/v1.0/Addendum.md#provisioningstate-property. + Possible values include: 'Succeeded', 'Failed', 'Cancelled', 'Creating', + 'Deleting', 'Updating' + :type provisioning_state: str or + ~azure.mgmt.storagecache.models.ProvisioningStateType + :param nfs3: Properties when targetType is nfs3. + :type nfs3: ~azure.mgmt.storagecache.models.Nfs3Target + :param clfs: Properties when targetType is clfs. + :type clfs: ~azure.mgmt.storagecache.models.ClfsTarget + :param unknown: Properties when targetType is unknown. + :type unknown: ~azure.mgmt.storagecache.models.UnknownTarget + :param target_base_type: Required. Constant filled by server. + :type target_base_type: str + """ + + _validation = { + 'target_base_type': {'required': True}, + } + + _attribute_map = { + 'junctions': {'key': 'junctions', 'type': '[NamespaceJunction]'}, + 'target_type': {'key': 'targetType', 'type': 'str'}, + 'provisioning_state': {'key': 'provisioningState', 'type': 'str'}, + 'nfs3': {'key': 'nfs3', 'type': 'Nfs3Target'}, + 'clfs': {'key': 'clfs', 'type': 'ClfsTarget'}, + 'unknown': {'key': 'unknown', 'type': 'UnknownTarget'}, + 'target_base_type': {'key': 'targetBaseType', 'type': 'str'}, + } + + def __init__(self, *, junctions=None, target_type: str=None, provisioning_state=None, nfs3=None, clfs=None, unknown=None, **kwargs) -> None: + super(UnknownTargetProperties, self).__init__(junctions=junctions, target_type=target_type, provisioning_state=provisioning_state, nfs3=nfs3, clfs=clfs, unknown=unknown, **kwargs) + self.target_base_type = 'unknown' + + class UsageModel(Model): """A usage model. diff --git a/sdk/storage/azure-mgmt-storagecache/azure/mgmt/storagecache/models/_storage_cache_management_client_enums.py b/sdk/storage/azure-mgmt-storagecache/azure/mgmt/storagecache/models/_storage_cache_management_client_enums.py index 48d0d7af9996..77791c659078 100644 --- a/sdk/storage/azure-mgmt-storagecache/azure/mgmt/storagecache/models/_storage_cache_management_client_enums.py +++ b/sdk/storage/azure-mgmt-storagecache/azure/mgmt/storagecache/models/_storage_cache_management_client_enums.py @@ -12,6 +12,12 @@ from enum import Enum +class CacheIdentityType(str, Enum): + + system_assigned = "SystemAssigned" + none = "None" + + class HealthStateType(str, Enum): unknown = "Unknown" @@ -41,14 +47,14 @@ class FirmwareStatusType(str, Enum): unavailable = "unavailable" -class ReasonCode(str, Enum): - - quota_id = "QuotaId" - not_available_for_subscription = "NotAvailableForSubscription" - - class StorageTargetType(str, Enum): nfs3 = "nfs3" clfs = "clfs" unknown = "unknown" + + +class ReasonCode(str, Enum): + + quota_id = "QuotaId" + not_available_for_subscription = "NotAvailableForSubscription" diff --git a/sdk/storage/azure-mgmt-storagecache/azure/mgmt/storagecache/operations/_caches_operations.py b/sdk/storage/azure-mgmt-storagecache/azure/mgmt/storagecache/operations/_caches_operations.py index 007c1d108a86..c64d09bd3dcb 100644 --- a/sdk/storage/azure-mgmt-storagecache/azure/mgmt/storagecache/operations/_caches_operations.py +++ b/sdk/storage/azure-mgmt-storagecache/azure/mgmt/storagecache/operations/_caches_operations.py @@ -27,7 +27,7 @@ class CachesOperations(object): :param config: Configuration of service client. :param serializer: An object model serializer. :param deserializer: An object model deserializer. - :ivar api_version: Client API version. Constant value: "2019-11-01". + :ivar api_version: Client API version. Constant value: "2020-03-01". """ models = models @@ -37,7 +37,7 @@ def __init__(self, client, config, serializer, deserializer): self._client = client self._serialize = serializer self._deserialize = deserializer - self.api_version = "2019-11-01" + self.api_version = "2020-03-01" self.config = config @@ -183,7 +183,7 @@ def _delete_initial( url = self.delete.metadata['url'] path_format_arguments = { 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'cacheName': self._serialize.url("cache_name", cache_name, 'str', pattern=r'^[-0-9a-zA-Z_]{1,31}$'), + 'cacheName': self._serialize.url("cache_name", cache_name, 'str', pattern=r'^[-0-9a-zA-Z_]{1,80}$'), 'subscriptionId': self._serialize.url("self.config.subscription_id", self.config.subscription_id, 'str') } url = self._client.format_url(url, **path_format_arguments) @@ -232,7 +232,8 @@ def delete( :param resource_group_name: Target resource group. :type resource_group_name: str - :param cache_name: Name of Cache. + :param cache_name: Name of Cache. Length of name must be not greater + than 80 and chars must be in list of [-0-9a-zA-Z_] char class. :type cache_name: str :param dict custom_headers: headers that will be added to the request :param bool raw: The poller return type is ClientRawResponse, the @@ -277,7 +278,8 @@ def get( :param resource_group_name: Target resource group. :type resource_group_name: str - :param cache_name: Name of Cache. + :param cache_name: Name of Cache. Length of name must be not greater + than 80 and chars must be in list of [-0-9a-zA-Z_] char class. :type cache_name: str :param dict custom_headers: headers that will be added to the request :param bool raw: returns the direct response alongside the @@ -293,7 +295,7 @@ def get( url = self.get.metadata['url'] path_format_arguments = { 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), - 'cacheName': self._serialize.url("cache_name", cache_name, 'str', pattern=r'^[-0-9a-zA-Z_]{1,31}$'), + 'cacheName': self._serialize.url("cache_name", cache_name, 'str', pattern=r'^[-0-9a-zA-Z_]{1,80}$'), 'subscriptionId': self._serialize.url("self.config.subscription_id", self.config.subscription_id, 'str') } url = self._client.format_url(url, **path_format_arguments) @@ -340,7 +342,7 @@ def _create_or_update_initial( path_format_arguments = { 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), 'subscriptionId': self._serialize.url("self.config.subscription_id", self.config.subscription_id, 'str'), - 'cacheName': self._serialize.url("cache_name", cache_name, 'str', pattern=r'^[-0-9a-zA-Z_]{1,31}$') + 'cacheName': self._serialize.url("cache_name", cache_name, 'str', pattern=r'^[-0-9a-zA-Z_]{1,80}$') } url = self._client.format_url(url, **path_format_arguments) @@ -393,7 +395,8 @@ def create_or_update( :param resource_group_name: Target resource group. :type resource_group_name: str - :param cache_name: Name of Cache. + :param cache_name: Name of Cache. Length of name must be not greater + than 80 and chars must be in list of [-0-9a-zA-Z_] char class. :type cache_name: str :param cache: Object containing the user-selectable properties of the new Cache. If read-only properties are included, they must match the @@ -445,7 +448,8 @@ def update( :param resource_group_name: Target resource group. :type resource_group_name: str - :param cache_name: Name of Cache. + :param cache_name: Name of Cache. Length of name must be not greater + than 80 and chars must be in list of [-0-9a-zA-Z_] char class. :type cache_name: str :param cache: Object containing the user-selectable properties of the Cache. If read-only properties are included, they must match the @@ -466,7 +470,7 @@ def update( path_format_arguments = { 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), 'subscriptionId': self._serialize.url("self.config.subscription_id", self.config.subscription_id, 'str'), - 'cacheName': self._serialize.url("cache_name", cache_name, 'str', pattern=r'^[-0-9a-zA-Z_]{1,31}$') + 'cacheName': self._serialize.url("cache_name", cache_name, 'str', pattern=r'^[-0-9a-zA-Z_]{1,80}$') } url = self._client.format_url(url, **path_format_arguments) @@ -519,7 +523,7 @@ def _flush_initial( path_format_arguments = { 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), 'subscriptionId': self._serialize.url("self.config.subscription_id", self.config.subscription_id, 'str'), - 'cacheName': self._serialize.url("cache_name", cache_name, 'str', pattern=r'^[-0-9a-zA-Z_]{1,31}$') + 'cacheName': self._serialize.url("cache_name", cache_name, 'str', pattern=r'^[-0-9a-zA-Z_]{1,80}$') } url = self._client.format_url(url, **path_format_arguments) @@ -569,7 +573,8 @@ def flush( :param resource_group_name: Target resource group. :type resource_group_name: str - :param cache_name: Name of Cache. + :param cache_name: Name of Cache. Length of name must be not greater + than 80 and chars must be in list of [-0-9a-zA-Z_] char class. :type cache_name: str :param dict custom_headers: headers that will be added to the request :param bool raw: The poller return type is ClientRawResponse, the @@ -602,7 +607,7 @@ def get_long_running_output(response): lro_delay = operation_config.get( 'long_running_operation_timeout', self.config.long_running_operation_timeout) - if polling is True: polling_method = ARMPolling(lro_delay, **operation_config) + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **operation_config) elif polling is False: polling_method = NoPolling() else: polling_method = polling return LROPoller(self._client, raw_result, get_long_running_output, polling_method) @@ -616,7 +621,7 @@ def _start_initial( path_format_arguments = { 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), 'subscriptionId': self._serialize.url("self.config.subscription_id", self.config.subscription_id, 'str'), - 'cacheName': self._serialize.url("cache_name", cache_name, 'str', pattern=r'^[-0-9a-zA-Z_]{1,31}$') + 'cacheName': self._serialize.url("cache_name", cache_name, 'str', pattern=r'^[-0-9a-zA-Z_]{1,80}$') } url = self._client.format_url(url, **path_format_arguments) @@ -664,7 +669,8 @@ def start( :param resource_group_name: Target resource group. :type resource_group_name: str - :param cache_name: Name of Cache. + :param cache_name: Name of Cache. Length of name must be not greater + than 80 and chars must be in list of [-0-9a-zA-Z_] char class. :type cache_name: str :param dict custom_headers: headers that will be added to the request :param bool raw: The poller return type is ClientRawResponse, the @@ -697,7 +703,7 @@ def get_long_running_output(response): lro_delay = operation_config.get( 'long_running_operation_timeout', self.config.long_running_operation_timeout) - if polling is True: polling_method = ARMPolling(lro_delay, **operation_config) + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **operation_config) elif polling is False: polling_method = NoPolling() else: polling_method = polling return LROPoller(self._client, raw_result, get_long_running_output, polling_method) @@ -711,7 +717,7 @@ def _stop_initial( path_format_arguments = { 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), 'subscriptionId': self._serialize.url("self.config.subscription_id", self.config.subscription_id, 'str'), - 'cacheName': self._serialize.url("cache_name", cache_name, 'str', pattern=r'^[-0-9a-zA-Z_]{1,31}$') + 'cacheName': self._serialize.url("cache_name", cache_name, 'str', pattern=r'^[-0-9a-zA-Z_]{1,80}$') } url = self._client.format_url(url, **path_format_arguments) @@ -759,7 +765,8 @@ def stop( :param resource_group_name: Target resource group. :type resource_group_name: str - :param cache_name: Name of Cache. + :param cache_name: Name of Cache. Length of name must be not greater + than 80 and chars must be in list of [-0-9a-zA-Z_] char class. :type cache_name: str :param dict custom_headers: headers that will be added to the request :param bool raw: The poller return type is ClientRawResponse, the @@ -792,7 +799,7 @@ def get_long_running_output(response): lro_delay = operation_config.get( 'long_running_operation_timeout', self.config.long_running_operation_timeout) - if polling is True: polling_method = ARMPolling(lro_delay, **operation_config) + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **operation_config) elif polling is False: polling_method = NoPolling() else: polling_method = polling return LROPoller(self._client, raw_result, get_long_running_output, polling_method) @@ -806,7 +813,7 @@ def _upgrade_firmware_initial( path_format_arguments = { 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), 'subscriptionId': self._serialize.url("self.config.subscription_id", self.config.subscription_id, 'str'), - 'cacheName': self._serialize.url("cache_name", cache_name, 'str', pattern=r'^[-0-9a-zA-Z_]{1,31}$') + 'cacheName': self._serialize.url("cache_name", cache_name, 'str', pattern=r'^[-0-9a-zA-Z_]{1,80}$') } url = self._client.format_url(url, **path_format_arguments) @@ -855,7 +862,8 @@ def upgrade_firmware( :param resource_group_name: Target resource group. :type resource_group_name: str - :param cache_name: Name of Cache. + :param cache_name: Name of Cache. Length of name must be not greater + than 80 and chars must be in list of [-0-9a-zA-Z_] char class. :type cache_name: str :param dict custom_headers: headers that will be added to the request :param bool raw: The poller return type is ClientRawResponse, the @@ -888,7 +896,7 @@ def get_long_running_output(response): lro_delay = operation_config.get( 'long_running_operation_timeout', self.config.long_running_operation_timeout) - if polling is True: polling_method = ARMPolling(lro_delay, **operation_config) + if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, **operation_config) elif polling is False: polling_method = NoPolling() else: polling_method = polling return LROPoller(self._client, raw_result, get_long_running_output, polling_method) diff --git a/sdk/storage/azure-mgmt-storagecache/azure/mgmt/storagecache/operations/_operations.py b/sdk/storage/azure-mgmt-storagecache/azure/mgmt/storagecache/operations/_operations.py index 0dd535cde85e..71eef0813ab0 100644 --- a/sdk/storage/azure-mgmt-storagecache/azure/mgmt/storagecache/operations/_operations.py +++ b/sdk/storage/azure-mgmt-storagecache/azure/mgmt/storagecache/operations/_operations.py @@ -25,7 +25,7 @@ class Operations(object): :param config: Configuration of service client. :param serializer: An object model serializer. :param deserializer: An object model deserializer. - :ivar api_version: Client API version. Constant value: "2019-11-01". + :ivar api_version: Client API version. Constant value: "2020-03-01". """ models = models @@ -35,7 +35,7 @@ def __init__(self, client, config, serializer, deserializer): self._client = client self._serialize = serializer self._deserialize = deserializer - self.api_version = "2019-11-01" + self.api_version = "2020-03-01" self.config = config diff --git a/sdk/storage/azure-mgmt-storagecache/azure/mgmt/storagecache/operations/_skus_operations.py b/sdk/storage/azure-mgmt-storagecache/azure/mgmt/storagecache/operations/_skus_operations.py index 1a448146522a..b22020cdfbb3 100644 --- a/sdk/storage/azure-mgmt-storagecache/azure/mgmt/storagecache/operations/_skus_operations.py +++ b/sdk/storage/azure-mgmt-storagecache/azure/mgmt/storagecache/operations/_skus_operations.py @@ -25,7 +25,7 @@ class SkusOperations(object): :param config: Configuration of service client. :param serializer: An object model serializer. :param deserializer: An object model deserializer. - :ivar api_version: Client API version. Constant value: "2019-11-01". + :ivar api_version: Client API version. Constant value: "2020-03-01". """ models = models @@ -35,7 +35,7 @@ def __init__(self, client, config, serializer, deserializer): self._client = client self._serialize = serializer self._deserialize = deserializer - self.api_version = "2019-11-01" + self.api_version = "2020-03-01" self.config = config diff --git a/sdk/storage/azure-mgmt-storagecache/azure/mgmt/storagecache/operations/_storage_targets_operations.py b/sdk/storage/azure-mgmt-storagecache/azure/mgmt/storagecache/operations/_storage_targets_operations.py index ed72a5fabe2c..02250aecc604 100644 --- a/sdk/storage/azure-mgmt-storagecache/azure/mgmt/storagecache/operations/_storage_targets_operations.py +++ b/sdk/storage/azure-mgmt-storagecache/azure/mgmt/storagecache/operations/_storage_targets_operations.py @@ -27,7 +27,7 @@ class StorageTargetsOperations(object): :param config: Configuration of service client. :param serializer: An object model serializer. :param deserializer: An object model deserializer. - :ivar api_version: Client API version. Constant value: "2019-11-01". + :ivar api_version: Client API version. Constant value: "2020-03-01". """ models = models @@ -37,7 +37,7 @@ def __init__(self, client, config, serializer, deserializer): self._client = client self._serialize = serializer self._deserialize = deserializer - self.api_version = "2019-11-01" + self.api_version = "2020-03-01" self.config = config @@ -47,7 +47,8 @@ def list_by_cache( :param resource_group_name: Target resource group. :type resource_group_name: str - :param cache_name: Name of Cache. + :param cache_name: Name of Cache. Length of name must be not greater + than 80 and chars must be in list of [-0-9a-zA-Z_] char class. :type cache_name: str :param dict custom_headers: headers that will be added to the request :param bool raw: returns the direct response alongside the @@ -66,7 +67,7 @@ def prepare_request(next_link=None): path_format_arguments = { 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), 'subscriptionId': self._serialize.url("self.config.subscription_id", self.config.subscription_id, 'str'), - 'cacheName': self._serialize.url("cache_name", cache_name, 'str', pattern=r'^[-0-9a-zA-Z_]{1,31}$') + 'cacheName': self._serialize.url("cache_name", cache_name, 'str', pattern=r'^[-0-9a-zA-Z_]{1,80}$') } url = self._client.format_url(url, **path_format_arguments) @@ -121,8 +122,8 @@ def _delete_initial( path_format_arguments = { 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), 'subscriptionId': self._serialize.url("self.config.subscription_id", self.config.subscription_id, 'str'), - 'cacheName': self._serialize.url("cache_name", cache_name, 'str', pattern=r'^[-0-9a-zA-Z_]{1,31}$'), - 'storageTargetName': self._serialize.url("storage_target_name", storage_target_name, 'str', pattern=r'^[-0-9a-zA-Z_]{1,31}$') + 'cacheName': self._serialize.url("cache_name", cache_name, 'str', pattern=r'^[-0-9a-zA-Z_]{1,80}$'), + 'storageTargetName': self._serialize.url("storage_target_name", storage_target_name, 'str', pattern=r'^[-0-9a-zA-Z_]{1,80}$') } url = self._client.format_url(url, **path_format_arguments) @@ -174,7 +175,8 @@ def delete( :param resource_group_name: Target resource group. :type resource_group_name: str - :param cache_name: Name of Cache. + :param cache_name: Name of Cache. Length of name must be not greater + than 80 and chars must be in list of [-0-9a-zA-Z_] char class. :type cache_name: str :param storage_target_name: Name of Storage Target. :type storage_target_name: str @@ -222,9 +224,12 @@ def get( :param resource_group_name: Target resource group. :type resource_group_name: str - :param cache_name: Name of Cache. + :param cache_name: Name of Cache. Length of name must be not greater + than 80 and chars must be in list of [-0-9a-zA-Z_] char class. :type cache_name: str - :param storage_target_name: Name of the Storage Target. + :param storage_target_name: Name of the Storage Target. Length of name + must be not greater than 80 and chars must be in list of [-0-9a-zA-Z_] + char class. :type storage_target_name: str :param dict custom_headers: headers that will be added to the request :param bool raw: returns the direct response alongside the @@ -241,8 +246,8 @@ def get( path_format_arguments = { 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), 'subscriptionId': self._serialize.url("self.config.subscription_id", self.config.subscription_id, 'str'), - 'cacheName': self._serialize.url("cache_name", cache_name, 'str', pattern=r'^[-0-9a-zA-Z_]{1,31}$'), - 'storageTargetName': self._serialize.url("storage_target_name", storage_target_name, 'str', pattern=r'^[-0-9a-zA-Z_]{1,31}$') + 'cacheName': self._serialize.url("cache_name", cache_name, 'str', pattern=r'^[-0-9a-zA-Z_]{1,80}$'), + 'storageTargetName': self._serialize.url("storage_target_name", storage_target_name, 'str', pattern=r'^[-0-9a-zA-Z_]{1,80}$') } url = self._client.format_url(url, **path_format_arguments) @@ -288,8 +293,8 @@ def _create_or_update_initial( path_format_arguments = { 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'), 'subscriptionId': self._serialize.url("self.config.subscription_id", self.config.subscription_id, 'str'), - 'cacheName': self._serialize.url("cache_name", cache_name, 'str', pattern=r'^[-0-9a-zA-Z_]{1,31}$'), - 'storageTargetName': self._serialize.url("storage_target_name", storage_target_name, 'str', pattern=r'^[-0-9a-zA-Z_]{1,31}$') + 'cacheName': self._serialize.url("cache_name", cache_name, 'str', pattern=r'^[-0-9a-zA-Z_]{1,80}$'), + 'storageTargetName': self._serialize.url("storage_target_name", storage_target_name, 'str', pattern=r'^[-0-9a-zA-Z_]{1,80}$') } url = self._client.format_url(url, **path_format_arguments) @@ -345,9 +350,12 @@ def create_or_update( :param resource_group_name: Target resource group. :type resource_group_name: str - :param cache_name: Name of Cache. + :param cache_name: Name of Cache. Length of name must be not greater + than 80 and chars must be in list of [-0-9a-zA-Z_] char class. :type cache_name: str - :param storage_target_name: Name of the Storage Target. + :param storage_target_name: Name of the Storage Target. Length of name + must be not greater than 80 and chars must be in list of [-0-9a-zA-Z_] + char class. :type storage_target_name: str :param storagetarget: Object containing the definition of a Storage Target. diff --git a/sdk/storage/azure-mgmt-storagecache/azure/mgmt/storagecache/operations/_usage_models_operations.py b/sdk/storage/azure-mgmt-storagecache/azure/mgmt/storagecache/operations/_usage_models_operations.py index 3a29bcfff3eb..9053c43233ae 100644 --- a/sdk/storage/azure-mgmt-storagecache/azure/mgmt/storagecache/operations/_usage_models_operations.py +++ b/sdk/storage/azure-mgmt-storagecache/azure/mgmt/storagecache/operations/_usage_models_operations.py @@ -25,7 +25,7 @@ class UsageModelsOperations(object): :param config: Configuration of service client. :param serializer: An object model serializer. :param deserializer: An object model deserializer. - :ivar api_version: Client API version. Constant value: "2019-11-01". + :ivar api_version: Client API version. Constant value: "2020-03-01". """ models = models @@ -35,7 +35,7 @@ def __init__(self, client, config, serializer, deserializer): self._client = client self._serialize = serializer self._deserialize = deserializer - self.api_version = "2019-11-01" + self.api_version = "2020-03-01" self.config = config diff --git a/sdk/storage/azure-mgmt-storagecache/azure/mgmt/storagecache/version.py b/sdk/storage/azure-mgmt-storagecache/azure/mgmt/storagecache/version.py index 9bd1dfac7ecb..3e682bbd5fb1 100644 --- a/sdk/storage/azure-mgmt-storagecache/azure/mgmt/storagecache/version.py +++ b/sdk/storage/azure-mgmt-storagecache/azure/mgmt/storagecache/version.py @@ -9,5 +9,5 @@ # regenerated. # -------------------------------------------------------------------------- -VERSION = "0.2.0" +VERSION = "0.3.0" diff --git a/sdk/storage/azure-mgmt-storagecache/setup.py b/sdk/storage/azure-mgmt-storagecache/setup.py index c03f27692bd0..8603a9645105 100644 --- a/sdk/storage/azure-mgmt-storagecache/setup.py +++ b/sdk/storage/azure-mgmt-storagecache/setup.py @@ -36,7 +36,9 @@ pass # Version extraction inspired from 'requests' -with open(os.path.join(package_folder_path, 'version.py'), 'r') as fd: +with open(os.path.join(package_folder_path, 'version.py') + if os.path.exists(os.path.join(package_folder_path, 'version.py')) + else os.path.join(package_folder_path, '_version.py'), 'r') as fd: version = re.search(r'^VERSION\s*=\s*[\'"]([^\'"]*)[\'"]', fd.read(), re.MULTILINE).group(1) @@ -67,6 +69,7 @@ 'Programming Language :: Python :: 3.5', 'Programming Language :: Python :: 3.6', 'Programming Language :: Python :: 3.7', + 'Programming Language :: Python :: 3.8', 'License :: OSI Approved :: MIT License', ], zip_safe=False, diff --git a/sdk/storage/azure-storage-blob/CHANGELOG.md b/sdk/storage/azure-storage-blob/CHANGELOG.md index 3fbe0324b913..6c836af26566 100644 --- a/sdk/storage/azure-storage-blob/CHANGELOG.md +++ b/sdk/storage/azure-storage-blob/CHANGELOG.md @@ -1,9 +1,13 @@ # Release History -## 12.3.1 (Unreleased) +## 12.3.2 (Unreleased) + + +## 12.3.1 (2020-04-29) **Fixes** - Fixed issue where batch requests could not be combined with token credentials (#9534) +- Skip '/' in url encoding. ## 12.3.0 (2020-03-10) diff --git a/sdk/storage/azure-storage-blob/azure/storage/blob/_models.py b/sdk/storage/azure-storage-blob/azure/storage/blob/_models.py index 43bab57b3306..bd92eff4683f 100644 --- a/sdk/storage/azure-storage-blob/azure/storage/blob/_models.py +++ b/sdk/storage/azure-storage-blob/azure/storage/blob/_models.py @@ -468,6 +468,15 @@ class BlobProperties(DictMixin): Indicates when the blob was created, in UTC. :ivar str archive_status: Archive status of blob. + :ivar str encryption_key_sha256: + The SHA-256 hash of the provided encryption key. + :ivar str encryption_scope: + A predefined encryption scope used to encrypt the data on the service. An encryption + scope can be created using the Management API and referenced here by name. If a default + encryption scope has been defined at the container, this value will override it if the + container-level scope is configured to allow overrides. Otherwise an error will be raised. + :ivar bool request_server_encrypted: + Whether this blob is encrypted. """ def __init__(self, **kwargs): diff --git a/sdk/storage/azure-storage-blob/azure/storage/blob/_version.py b/sdk/storage/azure-storage-blob/azure/storage/blob/_version.py index bf23efa97489..e9b99901cfb5 100644 --- a/sdk/storage/azure-storage-blob/azure/storage/blob/_version.py +++ b/sdk/storage/azure-storage-blob/azure/storage/blob/_version.py @@ -4,4 +4,4 @@ # license information. # -------------------------------------------------------------------------- -VERSION = "12.3.1" +VERSION = "12.3.2" diff --git a/sdk/storage/azure-storage-file-datalake/CHANGELOG.md b/sdk/storage/azure-storage-file-datalake/CHANGELOG.md index be84ad1a32c9..ece40b96e20a 100644 --- a/sdk/storage/azure-storage-file-datalake/CHANGELOG.md +++ b/sdk/storage/azure-storage-file-datalake/CHANGELOG.md @@ -1,8 +1,13 @@ # Release History -## 12.0.1 (Unreleased) +## 12.0.2 (Unreleased) +## 12.0.1 (2020-04-29) +**Fixes** +- Fixed rename_directory and rename_file doc +- upload_data didn't support setting umask and permissions. + ## 12.0.0 (2020-03-10) **New Feature** - Added `set_file_system_access_policy` and `get_file_system_access_policy` APIs on FileSystemClient diff --git a/sdk/storage/azure-storage-file-datalake/azure/storage/filedatalake/__init__.py b/sdk/storage/azure-storage-file-datalake/azure/storage/filedatalake/__init__.py index fdeb63d6a561..d5bc4c907835 100644 --- a/sdk/storage/azure-storage-file-datalake/azure/storage/filedatalake/__init__.py +++ b/sdk/storage/azure-storage-file-datalake/azure/storage/filedatalake/__init__.py @@ -16,6 +16,7 @@ FileSystemProperties, FileSystemPropertiesPaged, DirectoryProperties, + FileProperties, PathProperties, PathPropertiesPaged, LeaseProperties, @@ -54,6 +55,7 @@ 'FileSystemProperties', 'FileSystemPropertiesPaged', 'DirectoryProperties', + 'FileProperties', 'PathProperties', 'PathPropertiesPaged', 'LeaseProperties', diff --git a/sdk/storage/azure-storage-file-datalake/azure/storage/filedatalake/_data_lake_file_client.py b/sdk/storage/azure-storage-file-datalake/azure/storage/filedatalake/_data_lake_file_client.py index d6b480784b15..e5973e85ff4a 100644 --- a/sdk/storage/azure-storage-file-datalake/azure/storage/filedatalake/_data_lake_file_client.py +++ b/sdk/storage/azure-storage-file-datalake/azure/storage/filedatalake/_data_lake_file_client.py @@ -305,7 +305,7 @@ def upload_data(self, data, # type: Union[AnyStr, Iterable[AnyStr], IO[AnyStr]] :keyword ~azure.storage.filedatalake.DataLakeLeaseClient or str lease: Required if the blob has an active lease. Value can be a DataLakeLeaseClient object or the lease ID as a string. - :keyword str umaskoverwrite: Optional and only valid if Hierarchical Namespace is enabled for the account. + :keyword str umask: Optional and only valid if Hierarchical Namespace is enabled for the account. When creating a file or directory and the parent folder does not have a default ACL, the umask restricts the permissions of the file or directory to be created. The resulting permission is given by p & ^u, where p is the permission and u is the umask. diff --git a/sdk/storage/azure-storage-file-datalake/azure/storage/filedatalake/_upload_helper.py b/sdk/storage/azure-storage-file-datalake/azure/storage/filedatalake/_upload_helper.py index e1db768eff3b..bf29cfc250a7 100644 --- a/sdk/storage/azure-storage-file-datalake/azure/storage/filedatalake/_upload_helper.py +++ b/sdk/storage/azure-storage-file-datalake/azure/storage/filedatalake/_upload_helper.py @@ -37,6 +37,8 @@ def upload_datalake_file( # pylint: disable=unused-argument if length == 0: return {} properties = kwargs.pop('properties', None) + umask = kwargs.pop('umask', None) + permissions = kwargs.pop('permissions', None) path_http_headers = kwargs.pop('path_http_headers', None) modified_access_conditions = kwargs.pop('modified_access_conditions', None) @@ -44,8 +46,8 @@ def upload_datalake_file( # pylint: disable=unused-argument # if customers didn't specify access conditions, they cannot flush data to existing file if not _any_conditions(modified_access_conditions): modified_access_conditions.if_none_match = '*' - if properties: - raise ValueError("metadata can be set only when overwrite is enabled") + if properties or umask or permissions: + raise ValueError("metadata, umask and permissions can be set only when overwrite is enabled") if overwrite: response = client.create( @@ -53,6 +55,8 @@ def upload_datalake_file( # pylint: disable=unused-argument path_http_headers=path_http_headers, properties=properties, modified_access_conditions=modified_access_conditions, + umask=umask, + permissions=permissions, cls=return_response_headers, **kwargs) diff --git a/sdk/storage/azure-storage-file-datalake/azure/storage/filedatalake/_version.py b/sdk/storage/azure-storage-file-datalake/azure/storage/filedatalake/_version.py index 44f2642d2c90..8fd5a9134155 100644 --- a/sdk/storage/azure-storage-file-datalake/azure/storage/filedatalake/_version.py +++ b/sdk/storage/azure-storage-file-datalake/azure/storage/filedatalake/_version.py @@ -4,4 +4,4 @@ # license information. # -------------------------------------------------------------------------- -VERSION = "12.0.1" +VERSION = "12.0.2" diff --git a/sdk/storage/azure-storage-file-datalake/azure/storage/filedatalake/aio/_upload_helper.py b/sdk/storage/azure-storage-file-datalake/azure/storage/filedatalake/aio/_upload_helper.py index caa678b7db64..b2f10df34ec3 100644 --- a/sdk/storage/azure-storage-file-datalake/azure/storage/filedatalake/aio/_upload_helper.py +++ b/sdk/storage/azure-storage-file-datalake/azure/storage/filedatalake/aio/_upload_helper.py @@ -37,6 +37,8 @@ async def upload_datalake_file( # pylint: disable=unused-argument if length == 0: return {} properties = kwargs.pop('properties', None) + umask = kwargs.pop('umask', None) + permissions = kwargs.pop('permissions', None) path_http_headers = kwargs.pop('path_http_headers', None) modified_access_conditions = kwargs.pop('modified_access_conditions', None) @@ -44,8 +46,8 @@ async def upload_datalake_file( # pylint: disable=unused-argument # if customers didn't specify access conditions, they cannot flush data to existing file if not _any_conditions(modified_access_conditions): modified_access_conditions.if_none_match = '*' - if properties: - raise ValueError("metadata can be set only when overwrite is enabled") + if properties or umask or permissions: + raise ValueError("metadata, umask and permissions can be set only when overwrite is enabled") if overwrite: response = await client.create( @@ -53,6 +55,8 @@ async def upload_datalake_file( # pylint: disable=unused-argument path_http_headers=path_http_headers, properties=properties, modified_access_conditions=modified_access_conditions, + umask=umask, + permissions=permissions, cls=return_response_headers, **kwargs) diff --git a/sdk/storage/azure-storage-file-datalake/tests/recordings/test_file.test_upload_data_to_existing_file_with_permission_and_umask.yaml b/sdk/storage/azure-storage-file-datalake/tests/recordings/test_file.test_upload_data_to_existing_file_with_permission_and_umask.yaml new file mode 100644 index 000000000000..76bc93cac306 --- /dev/null +++ b/sdk/storage/azure-storage-file-datalake/tests/recordings/test_file.test_upload_data_to_existing_file_with_permission_and_umask.yaml @@ -0,0 +1,336 @@ +interactions: +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '0' + User-Agent: + - azsdk-python-storage-dfs/12.0.1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + x-ms-client-request-id: + - bab07534-8468-11ea-a05e-001a7dda7113 + x-ms-date: + - Wed, 22 Apr 2020 07:13:13 GMT + x-ms-properties: + - '' + x-ms-version: + - '2019-02-02' + method: PUT + uri: https://storagename.dfs.core.windows.net/filesystemde181c6b/directoryde181c6b?resource=directory + response: + body: + string: '' + headers: + Content-Length: + - '0' + Date: + - Wed, 22 Apr 2020 07:13:13 GMT + ETag: + - '"0x8D7E68C9F3C17C1"' + Last-Modified: + - Wed, 22 Apr 2020 07:13:13 GMT + Server: + - Windows-Azure-HDFS/1.0 Microsoft-HTTPAPI/2.0 + x-ms-request-id: + - 4c6f11c3-c01f-0010-0775-1888fc000000 + x-ms-version: + - '2019-02-02' + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '0' + User-Agent: + - azsdk-python-storage-dfs/12.0.1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + x-ms-client-request-id: + - bb1211cc-8468-11ea-bc86-001a7dda7113 + x-ms-date: + - Wed, 22 Apr 2020 07:13:13 GMT + x-ms-properties: + - '' + x-ms-version: + - '2019-02-02' + method: PUT + uri: https://storagename.dfs.core.windows.net/filesystemde181c6b/directoryde181c6b%2Ffilename?resource=file + response: + body: + string: '' + headers: + Content-Length: + - '0' + Date: + - Wed, 22 Apr 2020 07:13:13 GMT + ETag: + - '"0x8D7E68C9F50D057"' + Last-Modified: + - Wed, 22 Apr 2020 07:13:13 GMT + Server: + - Windows-Azure-HDFS/1.0 Microsoft-HTTPAPI/2.0 + x-ms-request-id: + - 4c6f11d5-c01f-0010-1875-1888fc000000 + x-ms-version: + - '2019-02-02' + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '0' + If-Match: + - '"0x8D7E68C9F50D057"' + User-Agent: + - azsdk-python-storage-dfs/12.0.1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + x-ms-client-request-id: + - bb268580-8468-11ea-82be-001a7dda7113 + x-ms-date: + - Wed, 22 Apr 2020 07:13:13 GMT + x-ms-permissions: + - '0777' + x-ms-properties: + - '' + x-ms-umask: + - '0000' + x-ms-version: + - '2019-02-02' + method: PUT + uri: https://storagename.dfs.core.windows.net/filesystemde181c6b/directoryde181c6b%2Ffilename?resource=file + response: + body: + string: '' + headers: + Content-Length: + - '0' + Date: + - Wed, 22 Apr 2020 07:13:13 GMT + ETag: + - '"0x8D7E68C9F5DCB55"' + Last-Modified: + - Wed, 22 Apr 2020 07:13:13 GMT + Server: + - Windows-Azure-HDFS/1.0 Microsoft-HTTPAPI/2.0 + x-ms-request-id: + - 4c6f11e0-c01f-0010-2375-1888fc000000 + x-ms-version: + - '2019-02-02' + status: + code: 201 + message: Created +- request: + body: !!binary | + j08hau8rxoygBJTJ+9qreKaMaINmVz8Nobt31ZNQFoTi6DbehovoxuSsQnAlpTvL8U4V45wuPg3v + nW0+hZ3T03qxzymBYJh+QrZhgmtgO3s9usYaubSji0DugB77R02cG0Zf7g== + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '100' + Content-Type: + - application/json; charset=utf-8 + User-Agent: + - azsdk-python-storage-dfs/12.0.1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + x-ms-client-request-id: + - bb3452c0-8468-11ea-a624-001a7dda7113 + x-ms-date: + - Wed, 22 Apr 2020 07:13:14 GMT + x-ms-version: + - '2019-02-02' + method: PATCH + uri: https://storagename.dfs.core.windows.net/filesystemde181c6b/directoryde181c6b%2Ffilename?position=0&action=append + response: + body: + string: '' + headers: + Content-Length: + - '0' + Date: + - Wed, 22 Apr 2020 07:13:13 GMT + Server: + - Windows-Azure-HDFS/1.0 Microsoft-HTTPAPI/2.0 + x-ms-request-id: + - 4c6f11e9-c01f-0010-2c75-1888fc000000 + x-ms-request-server-encrypted: + - 'true' + x-ms-version: + - '2019-02-02' + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '0' + If-Match: + - '"0x8D7E68C9F5DCB55"' + User-Agent: + - azsdk-python-storage-dfs/12.0.1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + x-ms-client-request-id: + - bb45abae-8468-11ea-b764-001a7dda7113 + x-ms-date: + - Wed, 22 Apr 2020 07:13:14 GMT + x-ms-version: + - '2019-02-02' + method: PATCH + uri: https://storagename.dfs.core.windows.net/filesystemde181c6b/directoryde181c6b%2Ffilename?position=100&action=flush + response: + body: + string: '' + headers: + Content-Length: + - '0' + Date: + - Wed, 22 Apr 2020 07:13:13 GMT + ETag: + - '"0x8D7E68C9F7DDA34"' + Last-Modified: + - Wed, 22 Apr 2020 07:13:14 GMT + Server: + - Windows-Azure-HDFS/1.0 Microsoft-HTTPAPI/2.0 + x-ms-request-id: + - 4c6f11f1-c01f-0010-3475-1888fc000000 + x-ms-request-server-encrypted: + - 'true' + x-ms-version: + - '2019-02-02' + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/xml + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-storage-dfs/12.0.1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + x-ms-client-request-id: + - bb53abc8-8468-11ea-9353-001a7dda7113 + x-ms-date: + - Wed, 22 Apr 2020 07:13:14 GMT + x-ms-range: + - bytes=0-33554431 + x-ms-version: + - '2019-07-07' + method: GET + uri: https://storagename.blob.core.windows.net/filesystemde181c6b/directoryde181c6b/filename + response: + body: + string: !!binary | + j08hau8rxoygBJTJ+9qreKaMaINmVz8Nobt31ZNQFoTi6DbehovoxuSsQnAlpTvL8U4V45wuPg3v + nW0+hZ3T03qxzymBYJh+QrZhgmtgO3s9usYaubSji0DugB77R02cG0Zf7g== + headers: + Accept-Ranges: + - bytes + Content-Length: + - '100' + Content-Range: + - bytes 0-99/100 + Content-Type: + - application/octet-stream + Date: + - Wed, 22 Apr 2020 07:13:13 GMT + ETag: + - '"0x8D7E68C9F7DDA34"' + Last-Modified: + - Wed, 22 Apr 2020 07:13:14 GMT + Server: + - Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0 + x-ms-blob-type: + - BlockBlob + x-ms-creation-time: + - Wed, 22 Apr 2020 07:13:13 GMT + x-ms-lease-state: + - available + x-ms-lease-status: + - unlocked + x-ms-request-id: + - fabf4bb7-001e-000f-4375-183bf8000000 + x-ms-server-encrypted: + - 'true' + x-ms-version: + - '2019-07-07' + status: + code: 206 + message: Partial Content +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-storage-dfs/12.0.1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + x-ms-client-request-id: + - bb82e2ca-8468-11ea-973f-001a7dda7113 + x-ms-date: + - Wed, 22 Apr 2020 07:13:14 GMT + x-ms-version: + - '2019-02-02' + method: HEAD + uri: https://storagename.dfs.core.windows.net/filesystemde181c6b/directoryde181c6b%2Ffilename?action=getAccessControl&upn=false + response: + body: + string: '' + headers: + Date: + - Wed, 22 Apr 2020 07:13:14 GMT + ETag: + - '"0x8D7E68C9F7DDA34"' + Last-Modified: + - Wed, 22 Apr 2020 07:13:14 GMT + Server: + - Windows-Azure-HDFS/1.0 Microsoft-HTTPAPI/2.0 + x-ms-acl: + - user::rwx,group::rwx,other::rwx + x-ms-group: + - $superuser + x-ms-owner: + - $superuser + x-ms-permissions: + - rwxrwxrwx + x-ms-request-id: + - 4c6f120d-c01f-0010-5075-1888fc000000 + x-ms-version: + - '2019-02-02' + status: + code: 200 + message: OK +version: 1 diff --git a/sdk/storage/azure-storage-file-datalake/tests/test_file.py b/sdk/storage/azure-storage-file-datalake/tests/test_file.py index dfa7c6000619..bf831b563b66 100644 --- a/sdk/storage/azure-storage-file-datalake/tests/test_file.py +++ b/sdk/storage/azure-storage-file-datalake/tests/test_file.py @@ -291,6 +291,33 @@ def test_upload_data_to_existing_file_with_content_settings(self): self.assertEqual(data, downloaded_data) self.assertEqual(properties.content_settings.content_language, content_settings.content_language) + @record + def test_upload_data_to_existing_file_with_permission_and_umask(self): + directory_name = self._get_directory_reference() + + # Create a directory to put the file under that + directory_client = self.dsc.get_directory_client(self.file_system_name, directory_name) + directory_client.create_directory() + + # create an existing file + file_client = directory_client.get_file_client('filename') + etag = file_client.create_file()['etag'] + + # to override the existing file + data = self.get_random_bytes(100) + + file_client.upload_data(data, overwrite=True, max_concurrency=5, + permissions='0777', umask="0000", + etag=etag, + match_condition=MatchConditions.IfNotModified) + + downloaded_data = file_client.download_file().readall() + prop = file_client.get_access_control() + + # Assert + self.assertEqual(data, downloaded_data) + self.assertEqual(prop['permissions'], 'rwxrwxrwx') + @record def test_read_file(self): file_client = self._create_file_and_return_client() diff --git a/sdk/storage/azure-storage-file-datalake/tests/test_file_async.py b/sdk/storage/azure-storage-file-datalake/tests/test_file_async.py index 7c70ac124f2d..8bd1ef819a14 100644 --- a/sdk/storage/azure-storage-file-datalake/tests/test_file_async.py +++ b/sdk/storage/azure-storage-file-datalake/tests/test_file_async.py @@ -350,6 +350,41 @@ def test_upload_data_to_existing_file_with_content_settings_async(self): loop = asyncio.get_event_loop() loop.run_until_complete(self._test_upload_data_to_existing_file_with_content_settings_async()) + async def _test_upload_data_to_existing_file_with_permissions_and_umask_async(self): + # etag in async recording file cannot be parsed properly + if TestMode.need_recording_file(self.test_mode): + return + directory_name = self._get_directory_reference() + + # Create a directory to put the file under that + directory_client = self.dsc.get_directory_client(self.file_system_name, directory_name) + await directory_client.create_directory() + + # create an existing file + file_client = directory_client.get_file_client('filename') + resp = await file_client.create_file() + etag = resp['etag'] + + # to override the existing file + data = self.get_random_bytes(100) + + await file_client.upload_data(data, + overwrite=True, max_concurrency=5, + permissions='0777', umask="0000", + etag=etag, + match_condition=MatchConditions.IfNotModified) + + downloaded_data = await (await file_client.download_file()).readall() + prop = await file_client.get_access_control() + + self.assertEqual(data, downloaded_data) + self.assertEqual(prop['permissions'], 'rwxrwxrwx') + + @record + def test_upload_data_to_existing_file_with_permission_and_umask_async(self): + loop = asyncio.get_event_loop() + loop.run_until_complete(self._test_upload_data_to_existing_file_with_permissions_and_umask_async()) + async def _test_read_file(self): file_client = await self._create_file_and_return_client() data = self.get_random_bytes(1024) diff --git a/sdk/textanalytics/azure-ai-textanalytics/README.md b/sdk/textanalytics/azure-ai-textanalytics/README.md index 499cef748ce6..ceb20eafb451 100644 --- a/sdk/textanalytics/azure-ai-textanalytics/README.md +++ b/sdk/textanalytics/azure-ai-textanalytics/README.md @@ -77,7 +77,7 @@ az cognitiveservices account show --name "resource-name" --resource-group "resou ``` #### Types of credentials -The `credential` parameter may be provided as a `AzureKeyCredential` from azure.core.credentials or as a token from Azure Active Directory. +The `credential` parameter may be provided as a [AzureKeyCredential][azure-key-credential] from azure.core.credentials or as a token from Azure Active Directory. See the full details regarding [authentication][cognitive_authentication] of cognitive services. @@ -452,6 +452,7 @@ This project has adopted the [Microsoft Open Source Code of Conduct][code_of_con [azure_identity_credentials]: ../../identity/azure-identity#credentials [default_azure_credential]: ../../identity/azure-identity#defaultazurecredential [service_limits]: https://docs.microsoft.com/azure/cognitive-services/text-analytics/overview#data-limits +[azure-key-credential]: https://aka.ms/azsdk-python-core-azurekeycredential [document_error]: https://aka.ms/azsdk-python-textanalytics-documenterror [detect_language_result]: https://aka.ms/azsdk-python-textanalytics-detectlanguageresult diff --git a/sdk/textanalytics/azure-ai-textanalytics/samples/README.md b/sdk/textanalytics/azure-ai-textanalytics/samples/README.md index ba0f79d79369..26a57ffd32b4 100644 --- a/sdk/textanalytics/azure-ai-textanalytics/samples/README.md +++ b/sdk/textanalytics/azure-ai-textanalytics/samples/README.md @@ -60,7 +60,7 @@ what you can do with the Azure Text Analytics client library. |**Advanced Sample File Name**|**Description**| |----------------|-------------| -|[sample_get_detailed_diagnostics_information.py][get_detailed_diagnostics_information] and [sample_get_detailed_diagnostics_information_async.py][get_detailed_diagnostics_information_async]|Get the request batch statistics, model version, and raw response through a callback| +|[sample_get_detailed_diagnostics_information.py][get_detailed_diagnostics_information] and [sample_get_detailed_diagnostics_information_async.py][get_detailed_diagnostics_information_async]|Get the request batch statistics, model version, and raw response in JSON format through a callback| [azure_identity]: https://github.com/Azure/azure-sdk-for-python/tree/master/sdk/identity/azure-identity [sample_authentication]: https://github.com/Azure/azure-sdk-for-python/tree/master/sdk/textanalytics/azure-ai-textanalytics/samples/sample_authentication.py diff --git a/sdk/textanalytics/azure-ai-textanalytics/samples/async_samples/sample_alternative_document_input_async.py b/sdk/textanalytics/azure-ai-textanalytics/samples/async_samples/sample_alternative_document_input_async.py index b70ba4461f5a..29f7589e70bd 100644 --- a/sdk/textanalytics/azure-ai-textanalytics/samples/async_samples/sample_alternative_document_input_async.py +++ b/sdk/textanalytics/azure-ai-textanalytics/samples/async_samples/sample_alternative_document_input_async.py @@ -44,7 +44,7 @@ async def alternative_document_input(self): "text": "L'hôtel n'était pas très confortable. L'éclairage était trop sombre."} ] async with text_analytics_client: - result = await text_analytics_client.analyze_sentiment(documents) + result = await text_analytics_client.detect_language(documents) for idx, doc in enumerate(result): if not doc.is_error: diff --git a/sdk/textanalytics/azure-ai-textanalytics/samples/async_samples/sample_get_detailed_diagnostics_information_async.py b/sdk/textanalytics/azure-ai-textanalytics/samples/async_samples/sample_get_detailed_diagnostics_information_async.py index 6e5ff2ca6528..5433218a3b69 100644 --- a/sdk/textanalytics/azure-ai-textanalytics/samples/async_samples/sample_get_detailed_diagnostics_information_async.py +++ b/sdk/textanalytics/azure-ai-textanalytics/samples/async_samples/sample_get_detailed_diagnostics_information_async.py @@ -11,7 +11,7 @@ DESCRIPTION: This sample demonstrates how to retrieve batch statistics, the - model version used, and the raw response returned from the service. + model version used, and the raw response in JSON format returned from the service. USAGE: python sample_get_detailed_diagnostics_information_async.py @@ -24,6 +24,7 @@ import os import asyncio import logging +import json _LOGGER = logging.getLogger(__name__) @@ -35,7 +36,9 @@ class GetDetailedDiagnosticsInformationSampleAsync(object): async def get_detailed_diagnostics_information_async(self): from azure.core.credentials import AzureKeyCredential from azure.ai.textanalytics.aio import TextAnalyticsClient - text_analytics_client = TextAnalyticsClient(endpoint=self.endpoint, credential=AzureKeyCredential(self.key)) + + # This client will log detailed information about its HTTP sessions, at DEBUG level + text_analytics_client = TextAnalyticsClient(endpoint=self.endpoint, credential=AzureKeyCredential(self.key), logging_enable=True) documents = [ "I had the best day of my life.", @@ -44,13 +47,16 @@ async def get_detailed_diagnostics_information_async(self): "L'hôtel n'était pas très confortable. L'éclairage était trop sombre." ] + json_responses = [] + def callback(resp): - _LOGGER.info("document_count: {}".format(resp.statistics["document_count"])) - _LOGGER.info("valid_document_count: {}".format(resp.statistics["valid_document_count"])) - _LOGGER.info("erroneous_document_count: {}".format(resp.statistics["erroneous_document_count"])) - _LOGGER.info("transaction_count: {}".format(resp.statistics["transaction_count"])) - _LOGGER.info("model_version: {}".format(resp.model_version)) - _LOGGER.info("raw_response: {}".format(resp.raw_response)) + _LOGGER.debug("document_count: {}".format(resp.statistics["document_count"])) + _LOGGER.debug("valid_document_count: {}".format(resp.statistics["valid_document_count"])) + _LOGGER.debug("erroneous_document_count: {}".format(resp.statistics["erroneous_document_count"])) + _LOGGER.debug("transaction_count: {}".format(resp.statistics["transaction_count"])) + _LOGGER.debug("model_version: {}".format(resp.model_version)) + json_response = json.dumps(resp.raw_response) + json_responses.append(json_response) async with text_analytics_client: result = await text_analytics_client.analyze_sentiment( @@ -60,6 +66,8 @@ def callback(resp): raw_response_hook=callback ) + _LOGGER.debug("json response: {}".format(json_responses[0])) + async def main(): sample = GetDetailedDiagnosticsInformationSampleAsync() diff --git a/sdk/textanalytics/azure-ai-textanalytics/samples/sample_alternative_document_input.py b/sdk/textanalytics/azure-ai-textanalytics/samples/sample_alternative_document_input.py index 581d08d48c45..339498f775fd 100644 --- a/sdk/textanalytics/azure-ai-textanalytics/samples/sample_alternative_document_input.py +++ b/sdk/textanalytics/azure-ai-textanalytics/samples/sample_alternative_document_input.py @@ -44,7 +44,7 @@ def alternative_document_input(self): "text": "L'hôtel n'était pas très confortable. L'éclairage était trop sombre."} ] - result = text_analytics_client.analyze_sentiment(documents) + result = text_analytics_client.detect_language(documents) for idx, doc in enumerate(result): if not doc.is_error: diff --git a/sdk/textanalytics/azure-ai-textanalytics/samples/sample_get_detailed_diagnostics_information.py b/sdk/textanalytics/azure-ai-textanalytics/samples/sample_get_detailed_diagnostics_information.py index ea561c7066d5..9a1fa655911b 100644 --- a/sdk/textanalytics/azure-ai-textanalytics/samples/sample_get_detailed_diagnostics_information.py +++ b/sdk/textanalytics/azure-ai-textanalytics/samples/sample_get_detailed_diagnostics_information.py @@ -11,7 +11,7 @@ DESCRIPTION: This sample demonstrates how to retrieve batch statistics, the - model version used, and the raw response returned from the service. + model version used, and the raw response in JSON format returned from the service. USAGE: python sample_get_detailed_diagnostics_information.py @@ -23,6 +23,7 @@ import os import logging +import json _LOGGER = logging.getLogger(__name__) @@ -33,7 +34,9 @@ class GetDetailedDiagnosticsInformationSample(object): def get_detailed_diagnostics_information(self): from azure.core.credentials import AzureKeyCredential from azure.ai.textanalytics import TextAnalyticsClient - text_analytics_client = TextAnalyticsClient(endpoint=self.endpoint, credential=AzureKeyCredential(self.key)) + + # This client will log detailed information about its HTTP sessions, at DEBUG level + text_analytics_client = TextAnalyticsClient(endpoint=self.endpoint, credential=AzureKeyCredential(self.key), logging_enable=True) documents = [ "I had the best day of my life.", @@ -42,13 +45,16 @@ def get_detailed_diagnostics_information(self): "L'hôtel n'était pas très confortable. L'éclairage était trop sombre." ] + json_responses = [] + def callback(resp): - _LOGGER.info("document_count: {}".format(resp.statistics["document_count"])) - _LOGGER.info("valid_document_count: {}".format(resp.statistics["valid_document_count"])) - _LOGGER.info("erroneous_document_count: {}".format(resp.statistics["erroneous_document_count"])) - _LOGGER.info("transaction_count: {}".format(resp.statistics["transaction_count"])) - _LOGGER.info("model_version: {}".format(resp.model_version)) - _LOGGER.info("raw_response: {}".format(resp.raw_response)) + _LOGGER.debug("document_count: {}".format(resp.statistics["document_count"])) + _LOGGER.debug("valid_document_count: {}".format(resp.statistics["valid_document_count"])) + _LOGGER.debug("erroneous_document_count: {}".format(resp.statistics["erroneous_document_count"])) + _LOGGER.debug("transaction_count: {}".format(resp.statistics["transaction_count"])) + _LOGGER.debug("model_version: {}".format(resp.model_version)) + json_response = json.dumps(resp.raw_response) + json_responses.append(json_response) result = text_analytics_client.analyze_sentiment( documents, @@ -57,6 +63,8 @@ def callback(resp): raw_response_hook=callback ) + _LOGGER.debug("json response: {}".format(json_responses[0])) + if __name__ == '__main__': sample = GetDetailedDiagnosticsInformationSample() diff --git a/sdk/textanalytics/azure-ai-textanalytics/tests/testcase.py b/sdk/textanalytics/azure-ai-textanalytics/tests/testcase.py index 483d63cabcd3..fc36303753fc 100644 --- a/sdk/textanalytics/azure-ai-textanalytics/tests/testcase.py +++ b/sdk/textanalytics/azure-ai-textanalytics/tests/testcase.py @@ -36,7 +36,7 @@ def __init__(self, method_name): super(TextAnalyticsTest, self).__init__(method_name) def get_oauth_endpoint(self): - return self.get_settings_value("TEXT_ANALYTICS_ENDPOINT") + return self.get_settings_value("TEXT_ANALYTICS_ENDPOINT_STABLE") def generate_oauth_token(self): if self.is_live: diff --git a/sdk/textanalytics/tests.yml b/sdk/textanalytics/tests.yml index 5d0081dc373d..17e9943ef072 100644 --- a/sdk/textanalytics/tests.yml +++ b/sdk/textanalytics/tests.yml @@ -15,6 +15,7 @@ jobs: EnvVars: AZURE_SUBSCRIPTION_ID: $(azure-subscription-id) AZURE_TEXT_ANALYTICS_ENDPOINT: $(python-textanalytics-test-textanalytics-account-name) + AZURE_TEXT_ANALYTICS_ENDPOINT_STABLE: $(python-textanalytics-test-textanalytics-account-name-stable) AZURE_TEXT_ANALYTICS_KEY: $(python-textanalytics-test-textanalytics-account-key) AZURE_TENANT_ID: $(aad-azure-sdk-test-tenant-id) AZURE_CLIENT_SECRET: $(aad-azure-sdk-test-client-secret) diff --git a/shared_requirements.txt b/shared_requirements.txt index 9c5347dd35fd..a9cdd1d0ec0c 100644 --- a/shared_requirements.txt +++ b/shared_requirements.txt @@ -114,7 +114,7 @@ six>=1.6 #override azure-core-tracing-opencensus azure-core<2.0.0,>=1.0.0 #override azure-core-tracing-opentelemetry azure-core<2.0.0,>=1.0.0 #override azure-cosmos azure-core<2.0.0,>=1.0.0 -#override azure-eventhub azure-core<2.0.0,>=1.0.0 +#override azure-eventhub azure-core<2.0.0,>=1.5.0 #override azure-identity azure-core<2.0.0,>=1.0.0 #override azure-keyvault-certificates msrest>=0.6.0 #override azure-keyvault-keys msrest>=0.6.0 diff --git a/tools/azure-sdk-tools/changelog_generics.md b/tools/azure-sdk-tools/changelog_generics.md new file mode 100644 index 000000000000..a875fc93bbfc --- /dev/null +++ b/tools/azure-sdk-tools/changelog_generics.md @@ -0,0 +1,85 @@ +# Autorest v2 to v3 + + +## General Breaking changes + +This version uses a next-generation code generator that *might* introduce breaking changes. + +- Model signatures now use only keyword-argument syntax. All positional arguments must be re-written as keyword-arguments. + To keep auto-completion in most cases, models are now generated for Python 2 and Python 3. Python 3 uses the "*" syntax for keyword-only arguments. +- Enum types now use the "str" mixin (class AzureEnum(str, Enum)) to improve the behavior when unrecognized enum values are encountered. + While this is not a breaking change, the distinctions are important, and are documented here: + https://docs.python.org/3/library/enum.html#others + At a glance: + + - "is" should not be used at all. + - "format" will return the string value, where "%s" string formatting will return `NameOfEnum.stringvalue`. Format syntax should be prefered. + +- New Long Running Operation: + + - Return type changes from `msrestazure.azure_operation.AzureOperationPoller` to `msrest.polling.LROPoller`. External API is the same. + - Return type is now **always** a `msrest.polling.LROPoller`, regardless of the optional parameters used. + - The behavior has changed when using `raw=True`. Instead of returning the initial call result as `ClientRawResponse`, + without polling, now this returns an LROPoller. After polling, the final resource will be returned as a `ClientRawResponse`. + - New `polling` parameter. The default behavior is `Polling=True` which will poll using ARM algorithm. When `Polling=False`, + the response of the initial call will be returned without polling. + - `polling` parameter accepts instances of subclasses of `msrest.polling.PollingMethod`. + - `add_done_callback` will no longer raise if called after polling is finished, but will instead execute the callback right away. + +# Autorest v3 to v4, if the package is single API + + +## General Breaking changes + +This version uses a next-generation code generator that *might* introduce breaking changes if from some import. +In summary, some modules were incorrectly visible/importable and have been renamed. This fixed several issues caused by usage of classes that were not supposed to be used in the first place. + +- HanaManagementClient cannot be imported from `azure.mgmt.hanaonazure.hana_management_client` anymore (import from `azure.mgmt.hanaonazure` works like before) +- HanaManagementClientConfiguration import has been moved from `azure.mgmt.hanaonazure.hana_management_client` to `azure.mgmt.hanaonazure` +- A model `MyClass` from a "models" sub-module cannot be imported anymore using `azure.mgmt.hanaonazure.models.my_class` (import from `azure.mgmt.hanaonazure.models` works like before) +- An operation class `MyClassOperations` from an `operations` sub-module cannot be imported anymore using `azure.mgmt.hanaonazure.operations.my_class_operations` (import from `azure.mgmt.hanaonazure.operations` works like before) + +Last but not least, HTTP connection pooling is now enabled by default. You should always use a client as a context manager, or call close(), or use no more than one client per process. + +# Autorest v3 to v4, if the package is multiapi + + +## General Breaking changes + +This version uses a next-generation code generator that *might* introduce breaking changes if you were importing from the v20xx_yy_zz API folders. +In summary, some modules were incorrectly visible/importable and have been renamed. This fixed several issues caused by usage of classes that were not supposed to be used in the first place. + +- NetworkManagementClient cannot be imported from `azure.mgmt.network.v20xx_yy_zz.network_management_client` anymore (import from `azure.mgmt.network.v20xx_yy_zz` works like before) +- NetworkManagementClientConfiguration import has been moved from `azure.mgmt.network.v20xx_yy_zz.network_management_client` to `azure.mgmt.network.v20xx_yy_zz` +- A model `MyClass` from a "models" sub-module cannot be imported anymore using `azure.mgmt.network.v20xx_yy_zz.models.my_class` (import from `azure.mgmt.network.v20xx_yy_zz.models` works like before) +- An operation class `MyClassOperations` from an `operations` sub-module cannot be imported anymore using `azure.mgmt.network.v20xx_yy_zz.operations.my_class_operations` (import from `azure.mgmt.network.v20xx_yy_zz.operations` works like before) + +Last but not least, HTTP connection pooling is now enabled by default. You should always use a client as a context manager, or call close(), or use no more than one client per process. + +# Autorest v4 to v5 + +This version uses a next-generation code generator that introduces important breaking changes, but also important new features (like unififed authentication and async programming). + +## General breaking changes + +- Credential system has been completly revamped: + + - `azure.common.credentials` or `msrestazure.azure_active_directory` instances are no longer supported, use the `azure-identity` classes instead: https://pypi.org/project/azure-identity/ + - `credentials` parameter has been renamed `credential` + +- The `config` attribute no longer exists on a client, configuration should be passed as kwarg. Example: `MyClient(credential, subscription_id, enable_logging=True)`. For a complete set of + supported options, see the [parameters accept in init documentation of azure-core](https://github.com/Azure/azure-sdk-for-python/blob/master/sdk/core/azure-core/CLIENT_LIBRARY_DEVELOPER.md#available-policies) +- You can't import a `version` module anymore, use `__version__` instead +- Operations that used to return a `msrest.polling.LROPoller` now returns a `azure.core.polling.LROPoller` and are prefixed with `begin_`. +- Exceptions tree have been simplified and most exceptions are now `azure.core.exceptions.HttpResponseError` (`CloudError` has been removed). +- Most of the operation kwarg have changed. Some of the most noticeable: + + - `raw` has been removed. Equivalent feature can be found using `cls`, a callback that will give access to internal HTTP response for advanced user + - For a complete set of + supported options, see the [parameters accept in Request documentation of azure-core](https://github.com/Azure/azure-sdk-for-python/blob/master/sdk/core/azure-core/CLIENT_LIBRARY_DEVELOPER.md#available-policies) + +## General new features + +- Type annotations support using `typing`. SDKs are mypy ready. +- This client has now stable and official support for async. Check the `aio` namespace of your package to find the async client. +- This client now support natively tracing library like OpenCensus or OpenTelemetry. See this [tracing quickstart](https://github.com/Azure/azure-sdk-for-python/tree/master/sdk/core/azure-core-tracing-opentelemetry) for an overview. diff --git a/tools/azure-sdk-tools/packaging_tools/generate_sdk.py b/tools/azure-sdk-tools/packaging_tools/generate_sdk.py index 978adc2a4533..6a2cd44d3f64 100644 --- a/tools/azure-sdk-tools/packaging_tools/generate_sdk.py +++ b/tools/azure-sdk-tools/packaging_tools/generate_sdk.py @@ -18,7 +18,7 @@ _LOGGER = logging.getLogger(__name__) -def generate(config_path, sdk_folder, project_pattern, readme, restapi_git_folder, autorest_bin=None): +def generate(config_path, sdk_folder, project_pattern, readme, restapi_git_folder, autorest_bin=None, force_generation=False): sdk_folder = Path(sdk_folder).expanduser() config = read_config(sdk_folder, config_path) @@ -39,7 +39,7 @@ def generate(config_path, sdk_folder, project_pattern, readme, restapi_git_folde raise ValueError("RestAPI folder must be set if you don't provide a readme.") swagger_files_in_pr = list(restapi_git_folder.glob('specification/**/readme.md')) _LOGGER.info(f"Readme files: {swagger_files_in_pr}") - extract_conf_from_readmes(swagger_files_in_pr, restapi_git_folder, repotag, config) + extract_conf_from_readmes(swagger_files_in_pr, restapi_git_folder, repotag, config, force_generation=force_generation) with tempfile.TemporaryDirectory() as temp_dir: for project, local_conf in config.get("projects", {}).items(): diff --git a/tools/azure-sdk-tools/packaging_tools/swaggertosdk/SwaggerToSdkCore.py b/tools/azure-sdk-tools/packaging_tools/swaggertosdk/SwaggerToSdkCore.py index fb3e8165fcb6..47914bdd453e 100644 --- a/tools/azure-sdk-tools/packaging_tools/swaggertosdk/SwaggerToSdkCore.py +++ b/tools/azure-sdk-tools/packaging_tools/swaggertosdk/SwaggerToSdkCore.py @@ -189,10 +189,10 @@ def read_config_from_github(sdk_id, branch="master", gh_token=None): )) return json.loads(response.text) -def extract_conf_from_readmes(swagger_files_in_pr, restapi_git_folder, sdk_git_id, config): +def extract_conf_from_readmes(swagger_files_in_pr, restapi_git_folder, sdk_git_id, config, force_generation=False): readme_files_in_pr = {readme for readme in swagger_files_in_pr if getattr(readme, "name", readme).lower().endswith("readme.md")} for readme_file in readme_files_in_pr: - build_swaggertosdk_conf_from_json_readme(readme_file, sdk_git_id, config, base_folder=restapi_git_folder) + build_swaggertosdk_conf_from_json_readme(readme_file, sdk_git_id, config, base_folder=restapi_git_folder, force_generation=force_generation) def get_readme_path(readme_file, base_folder='.'): """Get a readable Readme path. @@ -207,7 +207,7 @@ def get_readme_path(readme_file, base_folder='.'): base_folder='.' return str(Path(base_folder) / Path(readme_file)) -def build_swaggertosdk_conf_from_json_readme(readme_file, sdk_git_id, config, base_folder='.'): +def build_swaggertosdk_conf_from_json_readme(readme_file, sdk_git_id, config, base_folder='.', force_generation=False): """Get the JSON conf of this README, and create SwaggerToSdk conf. Readme path can be any readme syntax accepted by autorest. @@ -215,7 +215,8 @@ def build_swaggertosdk_conf_from_json_readme(readme_file, sdk_git_id, config, ba :param str readme_file: A path that Autorest accepts. Raw GH link or absolute path. :param str sdk_dit_id: Repo ID. IF org/login is provided, will be stripped. - :config dict config: Config where to update the "projects" key. + :param dict config: Config where to update the "projects" key. + :param bool force_generation: If no Swagger to SDK section is found, force once with the Readme as input """ readme_full_path = get_readme_path(readme_file, base_folder) with tempfile.TemporaryDirectory() as temp_dir: @@ -223,6 +224,9 @@ def build_swaggertosdk_conf_from_json_readme(readme_file, sdk_git_id, config, ba readme_full_path, temp_dir ) + generated_config = { + "markdown": readme_full_path, + } sdk_git_short_id = sdk_git_id.split("/")[-1].lower() _LOGGER.info("Looking for tag {} in readme {}".format(sdk_git_short_id, readme_file)) for swagger_to_sdk_conf in readme_as_conf: @@ -230,16 +234,19 @@ def build_swaggertosdk_conf_from_json_readme(readme_file, sdk_git_id, config, ba repo = repo.split("/")[-1].lower() # Be sure there is no org/login part if repo == sdk_git_short_id: _LOGGER.info("This Readme contains a swagger-to-sdk section for repo {}".format(repo)) - generated_config = { - "markdown": readme_full_path, + generated_config.update({ "autorest_options": swagger_to_sdk_conf.get("autorest_options", {}), "after_scripts": swagger_to_sdk_conf.get("after_scripts", []), - } + }) config.setdefault("projects", {})[str(readme_file)] = generated_config return generated_config else: _LOGGER.info("Skip mismatch {} from {}".format(repo, sdk_git_short_id)) - _LOGGER.info("Didn't find tag {} in readme {}. Did you forget to update the SwaggerToSdk section?".format(sdk_git_short_id, readme_file)) + if not force_generation: + _LOGGER.info("Didn't find tag {} in readme {}. Did you forget to update the SwaggerToSdk section?".format(sdk_git_short_id, readme_file)) + else: + _LOGGER.info("Didn't find tag {} in readme {}. Forcing it.".format(sdk_git_short_id, readme_file)) + config.setdefault("projects", {})[str(readme_file)] = generated_config def get_input_paths(global_conf, local_conf): """Returns a 2-tuple: diff --git a/tools/azure-sdk-tools/packaging_tools/templates/setup.py b/tools/azure-sdk-tools/packaging_tools/templates/setup.py index 2a8e3ec8b041..acd7d3c51b63 100644 --- a/tools/azure-sdk-tools/packaging_tools/templates/setup.py +++ b/tools/azure-sdk-tools/packaging_tools/templates/setup.py @@ -36,7 +36,9 @@ pass # Version extraction inspired from 'requests' -with open(os.path.join(package_folder_path, 'version.py'), 'r') as fd: +with open(os.path.join(package_folder_path, 'version.py') + if os.path.exists(os.path.join(package_folder_path, 'version.py')) + else os.path.join(package_folder_path, '_version.py'), 'r') as fd: version = re.search(r'^VERSION\s*=\s*[\'"]([^\'"]*)[\'"]', fd.read(), re.MULTILINE).group(1)