diff --git a/.github/workflows/Deploy.yml b/.github/workflows/Deploy.yml index d96871a..427a599 100644 --- a/.github/workflows/Deploy.yml +++ b/.github/workflows/Deploy.yml @@ -1,98 +1,96 @@ name: Deploy + on: push: branches: [ main ] workflow_dispatch: + defaults: run: shell: pwsh + jobs: Deploy: - runs-on: windows-latest + runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 - with: - fetch-depth: 2 - - name: Discover Changes - run: | - $changedModules = $(git diff --name-only HEAD HEAD~) - $changedModules - $files = $changedModules -split ' ' | ForEach-Object{[System.IO.FileInfo] $_} - $modules = @() - foreach ($file in $files) - { - if((Test-Path $file.FullName)){ - $fileDirectoryParent = $file.Directory.Parent - if ($fileDirectoryParent -and $fileDirectoryParent.Name -eq "Modules") { - $modules += $file.Directory - } + - uses: actions/checkout@v4 + with: + fetch-depth: 2 + + - name: Discover Changed Modules + id: discover + shell: pwsh + run: | + $changed = git diff --name-only HEAD~ HEAD + $changed + $modules = @() + foreach ($file in $changed) { + $parts = $file -split '/' + if ($parts.Length -ge 2 -and $parts[0] -eq 'Modules') { + $modules += $parts[1] } - } - $modules.Length - if($modules.Length -eq 0){ - exit - } - $changedModulesPath = mkdir -Name "StagingChangedModules\" -Force - For ($i=0; $i -lt $modules.Length; $i++) - { - $module = $modules[$i] - Copy-Item -Path $module.FullName -Destination $changedModulesPath -Recurse -Force - } - - name: Update Changed Modules - run: | - if(!(Test-Path StagingChangedModules)) { - Write-Host "No modules changed" - exit - } - $moduleFolders = Get-ChildItem StagingChangedModules - foreach ($item in $moduleFolders){ - $moduleName = $item.Name - $manifest = Get-ChildItem $item.PSPath | Where-Object{$_.Name -like "*psd1"} - if(!$manifest){ - Write-Error "The manifest for $moduleName was not found" + } + $modules = $modules | Sort-Object -Unique + Write-Host "Changed modules: $($modules -join ', ')" + if ($modules.Length -eq 0) { + "modules=" >> $env:GITHUB_OUTPUT + return + } + $staging = New-Item -ItemType Directory -Force -Path StagingChangedModules + foreach ($m in $modules) { + Copy-Item -Path "Modules/$m" -Destination $staging.FullName -Recurse -Force + } + "modules=$($modules -join ',')" >> $env:GITHUB_OUTPUT + + - name: Bump Module Version + if: steps.discover.outputs.modules != '' + shell: pwsh + run: | + $moduleFolders = Get-ChildItem StagingChangedModules -Directory + foreach ($item in $moduleFolders) { + $manifest = Get-ChildItem $item.FullName -Filter '*.psd1' | Select-Object -First 1 + if (-not $manifest) { + Write-Error "Manifest for $($item.Name) was not found" + continue } - $content = Get-Content $manifest.PSPath | ForEach-Object{ - $_ - if ($_ -match "ModuleVersion"){ - $version = [System.Version]($_ -split "'")[1] - } - } - $major = 0 - $minor = 0 - $build = 0 - $minorRev = 1 - if($version.Major -gt 0){$major = $version.Major} - if($version.Minor -gt 0){$minor = $version.Minor} - if($version.Build -gt 0){$build = $version.Build} - if($version.MinorRevision -gt 0){$minorRev = $version.MinorRevision + 1} - $updatedVersion = New-Object -TypeName system.Version -ArgumentList $major, $minor, $build, $minorRev - $PushPath = ".\Modules\" +($manifest.PSChildName).Substring(0, $manifest.PSChildName.length - 5 ) + "\"+ ($manifest.PSChildName) - $PublishPath = ".\StagingChangedModules\" +($manifest.PSChildName).Substring(0, $manifest.PSChildName.length - 5 ) + "\"+ ($manifest.PSChildName) - - Update-ModuleManifest -Path $PushPath -ModuleVersion $updatedVersion - Update-ModuleManifest -Path $PublishPath -ModuleVersion $updatedVersion - - Write-Host "$moduleName's version was updated from $version to $updatedVersion" - } - - name: Push Changes - run: | - if(!(Test-Path StagingChangedModules)) { - Write-Host "No modules changed" - exit - } - git config --global user.email "tylerjones321@gmail.com" - git config --global user.name "worseTyler" - git add Modules/\*.psd1 - git commit -m "[skip ci] Commit from build agent" - git push - - name: Publish To Gallery - run: | - if(!(Test-Path StagingChangedModules)) { - Write-Host "No modules changed" - Write-Host "Nothing to Publish" - exit - } - $moduleFolders = Get-ChildItem StagingChangedModules - foreach ($item in $moduleFolders){ - Publish-Module -Path $item.FullName -NuGetApiKey ${{ secrets.POWERSHELL_GALLERY_API_KEY }} -Verbose - } + $current = (Test-ModuleManifest -Path $manifest.FullName).Version + $build = if ($current.Build -ge 0) { $current.Build } else { 0 } + $revision = if ($current.Revision -ge 0) { $current.Revision + 1 } else { 1 } + $updated = [Version]::new($current.Major, $current.Minor, $build, $revision) + $repoManifest = Join-Path '.' 'Modules' $item.Name $manifest.Name + Update-ModuleManifest -Path $repoManifest -ModuleVersion $updated + Update-ModuleManifest -Path $manifest.FullName -ModuleVersion $updated + Write-Host "$($item.Name): $current -> $updated" + } + + - name: Commit Version Bump + if: steps.discover.outputs.modules != '' + shell: bash + run: | + git config --global user.email "actions@github.com" + git config --global user.name "github-actions[bot]" + git add Modules/*/*.psd1 + if ! git diff --staged --quiet; then + git commit -m "[skip ci] Bump module version from build agent" + git push + fi + + - name: Install PSResourceGet + if: steps.discover.outputs.modules != '' + shell: pwsh + run: | + if (-not (Get-Module -ListAvailable -Name Microsoft.PowerShell.PSResourceGet)) { + Install-Module -Name Microsoft.PowerShell.PSResourceGet -Force -Scope CurrentUser + } + + - name: Publish to PowerShell Gallery + if: steps.discover.outputs.modules != '' + shell: pwsh + env: + PSGALLERY_API_KEY: ${{ secrets.POWERSHELL_GALLERY_API_KEY }} + run: | + Import-Module Microsoft.PowerShell.PSResourceGet + foreach ($item in Get-ChildItem StagingChangedModules -Directory) { + Write-Host "Publishing $($item.Name) ..." + Publish-PSResource -Path $item.FullName -ApiKey $env:PSGALLERY_API_KEY -Repository PSGallery -Verbose + } diff --git a/.github/workflows/PullRequest.yml b/.github/workflows/PullRequest.yml index 98e64d0..20a6312 100644 --- a/.github/workflows/PullRequest.yml +++ b/.github/workflows/PullRequest.yml @@ -5,36 +5,72 @@ on: branches: [ main ] workflow_dispatch: + defaults: run: - shell: powershell + shell: pwsh + jobs: PesterTest: - runs-on: windows-latest + strategy: + fail-fast: false + matrix: + os: [windows-latest, ubuntu-latest] + runs-on: ${{ matrix.os }} steps: - - uses: actions/checkout@v2 - - - name: Pester Test + - uses: actions/checkout@v4 + + - name: Install Pester 5 + shell: pwsh run: | - $ConfirmPreference = "None" - $testResults = Invoke-Pester -Script .\Modules.Tests\ -OutputFile ${{env.GITHUB_WORKSPACE}}\Test-Pester.XML -OutputFormat NUnitXML -PassThru - if($testResults.FailedCount -ne 0) { - Write-Error "$($testResults.FailedCount) test failed." - exit $LASTEXITCODE + $ConfirmPreference = 'None' + if (-not (Get-Module -ListAvailable -Name Pester | Where-Object { $_.Version -ge [version]'5.5.0' })) { + Install-Module -Name Pester -MinimumVersion 5.5.0 -Force -SkipPublisherCheck -Scope CurrentUser } - DotNetBuild: - runs-on: windows-latest + + - name: Run Pester Tests + shell: pwsh + run: | + $ConfirmPreference = 'None' + Import-Module Pester -MinimumVersion 5.5.0 + $config = New-PesterConfiguration + $config.Run.Path = './Modules.Tests' + $config.Run.Exit = $true + $config.TestResult.Enabled = $true + $config.TestResult.OutputFormat = 'NUnitXml' + $config.TestResult.OutputPath = "${{ github.workspace }}/Test-Pester.xml" + $config.Output.Verbosity = 'Detailed' + Invoke-Pester -Configuration $config + + - name: Upload test results + if: always() + uses: actions/upload-artifact@v4 + with: + name: pester-results-${{ matrix.os }} + path: Test-Pester.xml + + ScriptAnalyzer: + runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 - - name: DotNet Build + - uses: actions/checkout@v4 + + - name: Install PSScriptAnalyzer + shell: pwsh run: | - $items = Get-ChildItem -Include *.sln -Recurse - foreach ($item in $items){ - dotnet build $item + if (-not (Get-Module -ListAvailable -Name PSScriptAnalyzer)) { + Install-Module -Name PSScriptAnalyzer -Force -Scope CurrentUser } - - name: DotNet Test + + - name: Run PSScriptAnalyzer + shell: pwsh run: | - $items = Get-ChildItem -Include *.sln -Recurse - foreach ($item in $items){ - dotnet test $item - } \ No newline at end of file + Import-Module PSScriptAnalyzer + $results = Invoke-ScriptAnalyzer -Path ./Modules -Recurse -Settings ./PSScriptAnalyzerSettings.psd1 + if ($results) { + $results | Format-Table -AutoSize | Out-String | Write-Host + $errors = @($results | Where-Object Severity -eq 'Error') + if ($errors.Count -gt 0) { + Write-Error "PSScriptAnalyzer found $($errors.Count) error(s)." + exit 1 + } + } diff --git a/.gitmodules b/.gitmodules deleted file mode 100644 index 3ddfb93..0000000 --- a/.gitmodules +++ /dev/null @@ -1,3 +0,0 @@ -[submodule "submodules/RamblingCookieMonster/PowerShell"] - path = submodules/RamblingCookieMonster/PowerShell - url = git@github.com:RamblingCookieMonster/PowerShell.git diff --git a/Archived Modules/IntelliTect.AzureRm/IntelliTect.AzureRm.psd1 b/Archived Modules/IntelliTect.AzureRm/IntelliTect.AzureRm.psd1 deleted file mode 100644 index 4ee755d..0000000 --- a/Archived Modules/IntelliTect.AzureRm/IntelliTect.AzureRm.psd1 +++ /dev/null @@ -1,122 +0,0 @@ -# -# Module manifest for module 'IntelliTect.AzureRm' -# -# Generated by: Dan Haley -# -# Generated on: 5/17/2016 -# - -@{ - -# Script module or binary module file associated with this manifest. -RootModule = '.\IntelliTect.AzureRm.psm1' - -# Version number of this module. -ModuleVersion = '1.3.3.0' - -# ID used to uniquely identify this module -GUID = '354a58ff-3b23-4ff5-a185-b892a5b6402c' - -# Author of this module -Author = 'Dan Haley' - -# Company or vendor of this module -CompanyName = 'IntelliTect' - -# Copyright statement for this module -Copyright = '(c) 2016 IntelliTect. All rights reserved.' - -# Description of the functionality provided by this module -Description = 'Set of commands to assist in working with Azure RM resources' - -# Minimum version of the Windows PowerShell engine required by this module -# PowerShellVersion = '' - -# Name of the Windows PowerShell host required by this module -# PowerShellHostName = '' - -# Minimum version of the Windows PowerShell host required by this module -# PowerShellHostVersion = '' - -# Minimum version of Microsoft .NET Framework required by this module -# DotNetFrameworkVersion = '' - -# Minimum version of the common language runtime (CLR) required by this module -# CLRVersion = '' - -# Processor architecture (None, X86, Amd64) required by this module -# ProcessorArchitecture = '' - -# Modules that must be imported into the global environment prior to importing this module -# RequiredModules = @() - -# Assemblies that must be loaded prior to importing this module -# RequiredAssemblies = @() - -# Script files (.ps1) that are run in the caller's environment prior to importing this module. -# ScriptsToProcess = @() - -# Type files (.ps1xml) to be loaded when importing this module -# TypesToProcess = @() - -# Format files (.ps1xml) to be loaded when importing this module -# FormatsToProcess = @() - -# Modules to import as nested modules of the module specified in RootModule/ModuleToProcess -# NestedModules = @() - -# Functions to export from this module -FunctionsToExport = @("Assert-AzureRmSession", "New-AzureRmVirtualMachine", "Enable-RemotePowerShellOnAzureRmVm", - "Get-AzureRmDefault", "Set-AzureRmDefault", "Get-AzureRmSubscriptionMenu", "Get-AzureRmLocationMenu", - "Get-AzureRmVmImagePublisherMenu", "Get-AzureRmVmImageOfferMenu", "Get-AzureRmVmImageSkuMenu", - "New-AzureRmVMInputs", "Get-AzureRmVmSizeMenu") - -# Cmdlets to export from this module -CmdletsToExport = '*' - -# Variables to export from this module -VariablesToExport = '*' - -# Aliases to export from this module -AliasesToExport = '*' - -# DSC resources to export from this module -# DscResourcesToExport = @() - -# List of all modules packaged with this module -# ModuleList = @() - -# List of all files packaged with this module -# FileList = @() - -# Private data to pass to the module specified in RootModule/ModuleToProcess. This may also contain a PSData hashtable with additional module metadata used by PowerShell. -PrivateData = @{ - - PSData = @{ - - # Tags applied to this module. These help with module discovery in online galleries. - # Tags = @() - - # A URL to the license for this module. - # LicenseUri = '' - - # A URL to the main website for this project. - # ProjectUri = '' - - # A URL to an icon representing this module. - # IconUri = '' - - # ReleaseNotes of this module - ReleaseNotes = '' - - } # End of PSData hashtable - -} # End of PrivateData hashtable - -# HelpInfo URI of this module -# HelpInfoURI = '' - -# Default prefix for commands exported from this module. Override the default prefix using Import-Module -Prefix. -# DefaultCommandPrefix = '' - -} diff --git a/Archived Modules/IntelliTect.AzureRm/IntelliTect.AzureRm.psm1 b/Archived Modules/IntelliTect.AzureRm/IntelliTect.AzureRm.psm1 deleted file mode 100644 index 7c8da01..0000000 --- a/Archived Modules/IntelliTect.AzureRm/IntelliTect.AzureRm.psm1 +++ /dev/null @@ -1,998 +0,0 @@ -function New-AzureRmVirtualMachine { - <# - .SYNOPSIS - Creates a new Azure RM virtual machine - .DESCRIPTION - Creates a new virtual machine, and other resources if needed - Resource Group, Storage Account, - Virtual Network, Public IP Address, Domain Name Label, Network Interface. - Defaults can be set for inputs by using Set-AzureRmDefault. - .EXAMPLE - New-AzureRmVirtualMachine -VMName myVmName - .EXAMPLE - New-AzureRmVirtualMachine -VMName myVmName -ResourceGroupName newResourceGroup -DomainNameLabel mydomain - .PARAMETER VMName - Name of the virtual machine. REQUIRED - .PARAMETER Inputs - When scripting menu inputs can be provided. - $inputs = New-AzureRmVmInputs - $inputs.Location = "westus"" - $inputs.SubscriptionId = "" - ... - New-AzureRmVirtualMachine -VMName myVmName -Inputs $inputs - .PARAMETER ResourceGroupName - Resource group to create resources in. DEFAULT: none - - If creating a new resource group it must be specified in the parameter. - - If not specified you can only choose from existing resource groups. - - Can specify a default with Set-AzureRmDefault -ResourceGroupName - .PARAMETER VirtualNetworkName - Name of virtual network. Will be created if it doesn't exist. DEFAULT: $ResourceGroupName - - Can specify a default with Set-AzureRmDefault -VirtualNetworkName - .PARAMETER DomainNameLabel - Domain name to point at your public IP address. DEFAULT: none - - If a domain name is desired then it must be specified on the command line - - .NOTES - Default values can be specified for: - Location - ResourceGroupName - SubscriptionId - VMImagePublisher - VMImageOffer - VMImageSku - StorageAccountType - VMSize - OperatingSystem - #> - [Diagnostics.CodeAnalysis.SuppressMessageAttribute("PSShouldProcess", "")] - param ( - [Parameter(Mandatory = $true)] - [string]$VmName, - - [AzureRmVmInputs]$Inputs = (New-Object AzureRmVmInputs), - - [string]$ResourceGroupName = $null, - - [string]$VirtualNetworkName = $null, - - [string]$DomainNameLabel = "", - - # Implementing our own -whatif and -confirm - # Not all of the calls to Azure implement these switches, plus so much of - # the script is dependent on return values from previous commands - [switch]$WhatIf, - [switch]$Confirm - ) - Set-StrictMode -Version Latest - - $context = Assert-AzureRmSession - - # Process overrides from command line - if ($ResourceGroupName) { $Inputs.ResourceGroupName = $ResourceGroupName } - if ($VirtualNetworkName) { $Inputs.VirtualNetworkName = $VirtualNetworkName } - $Inputs.DomainNameLabel = $DomainNameLabel - - # Choose a subscription ... and switch context to it if different than current - Get-AzureRmSubscriptionMenu $Inputs | Out-Null - if ($context.Subscription.SubscriptionId -ne $Inputs.SubscriptionId) { - if (!(Confirm-ScriptShouldContinue $Confirm "Continuing will change your current Azure context to the selected subscription.")) { return } - - Write-Information "Switching Azure context to selected subscription ..." -InformationAction Continue - Set-AzureRmContext -SubscriptionId $Inputs.SubscriptionId | Out-Null - } - - # Choose a resource group - Write-Information "Retrieving resource groups ..." -InformationAction Continue - $resourceGroups = {Get-AzureRmResourceGroup -WarningAction SilentlyContinue | Sort-Object ResourceGroupName | ` - Select-Object -ExpandProperty ResourceGroupName} - Get-InputFromMenu $Inputs "ResourceGroupName" "Select Resource Group" $resourceGroups $null $null $true - if (!$Inputs.ResourceGroupName) { return } - - # Choose an image sku - Get-AzureRmVmImageSkuMenu $Inputs | Out-Null - - # And a VM size - Get-AzureRmVmSizeMenu $Inputs | Out-Null - - # Choose a storage account - Write-Information "Retrieving storage accounts ..." -InformationAction Continue - $storageAccounts = {Get-AzureRmStorageAccount | Where-Object { $_.ResourceGroupName -eq $Inputs.ResourceGroupName } | ` - Sort-Object StorageAccountName | Select-Object -ExpandProperty StorageAccountName} - $defaultStorageAccountName = $Inputs.ResourceGroupName.ToLower() -Replace "[^0-9a-z]", "" - $defaultStorageAccountName += (Get-Date).Ticks - $defaultStorageAccountName = $defaultStorageAccountName.Substring(0, [System.Math]::Min(24, $defaultStorageAccountName.Length)) - Get-InputFromMenu $Inputs "StorageAccountName" "Select Storage Account" $storageAccounts $defaultStorageAccountName - - # If storage account doesn't exist then get additional info - $storageAccount = Get-AzureRmStorageAccount | Where-Object { $_.StorageAccountName -eq $Inputs.StorageAccountName } - if (!$storageAccount) { - $storageAccountTypes = @("Standard_LRS, Locally Redundant Storage", "Standard_ZRS, Zone Redundant Storage", "Standard_GRS, Geo Redundant Storage", "Standard_RAGRS, Read-Access Geo Redundant Storage", "Premium_LRS, Locally Redundant Storage") - Get-InputFromMenu $Inputs "StorageAccountType" "Select Storage Account Type" {$storageAccountTypes} $null "Please Note: Selected type must be available for selected VM size." - - $Inputs.StorageAccountType = $Inputs.StorageAccountType.Substring(0, $Inputs.StorageAccountType.IndexOf(",")) - } - - # Get the virtual network and network security group - Write-Information "Retrieving virtual networks ..." -InformationAction Continue - $virtualNetworks = {Get-AzureRmVirtualNetwork | Where-Object { $_.ResourceGroupName -eq $Inputs.ResourceGroupName } | ` - Sort-Object Name | Select-Object -ExpandProperty Name} - Get-InputFromMenu $Inputs "VirtualNetworkName" "Select Virtual Network" $virtualNetworks $Inputs.ResourceGroupName - - Write-Information "Retrieving security groups ..." -InformationAction Continue - $securityGroups = {Get-AzureRmNetworkSecurityGroup | Where-Object { $_.ResourceGroupName -eq $Inputs.ResourceGroupName } | ` - Sort-Object Name | Select-Object -ExpandProperty Name} - Get-InputFromMenu $Inputs "NetworkSecurityGroup" "Select Network Security Group" $securityGroups $Inputs.ResourceGroupName - - # We run different commands based on the OS, and have no way to figure it out from the image - $osChoices = @("Linux", "Windows") - Get-InputFromMenu $Inputs "OperatingSystem" "Select Operating System" {$osChoices} $null "Please Note: Selected operating system must match the VM image selected." - - # The VM will need its admin credentials set - $Inputs.AdminCredentials = (Get-Credential -UserName "vmadmin" -Message "Enter the username and password of the admin account for the new VM") - - # If a domain name label is supplied, then test that it isn't in use - Assert-DomainNameIsAvailable $Inputs.DomainNameLabel $Inputs.Location - - if (!$WhatIf -and !(Confirm-ScriptShouldContinue $Confirm "Continuing will add resources to your current Azure subscription.")) { return } - - if ($WhatIf) { - Write-Information "WhatIf: Virtual machine $($VmName) would be created in resource group $($Inputs.ResourceGroupName) in location $($Inputs.Location)" ` - -InformationAction Continue - Write-Information "The following inputs were entered" -InformationAction Continue - $Inputs - return - } - - # Now start creating things and setting them up - # If the resource group doesn't exist, then create it - $checkResourceGroup = Get-AzureRmResourceGroup | Where-Object { $_.ResourceGroupName -eq $Inputs.ResourceGroupName } - if (!$checkResourceGroup) - { - Write-Information -MessageData "Creating new resource group" -InformationAction Continue - New-AzureRmResourceGroup -Name $Inputs.ResourceGroupName -Location $Inputs.Location | Out-Null - } - - # If the storage account doesn't exist, then create it - if (!$storageAccount) - { - Write-Information -MessageData "Creating new storage account" -InformationAction Continue - New-AzureRmStorageAccount -Name $Inputs.StorageAccountName -ResourceGroupName $Inputs.ResourceGroupName ` - -SkuName $Inputs.StorageAccountType -Location $Inputs.Location | Out-Null - } - - # If the virtual network doesn't exist, then create it - $vnet = $null - $checkVirtualNetwork = Get-AzureRmVirtualNetwork | Where-Object { $_.Name -eq $Inputs.VirtualNetworkName } - if (!$checkVirtualNetwork) { - Write-Information -MessageData "Creating new virtual network" -InformationAction Continue - $defaultSubnet = New-AzureRmVirtualNetworkSubnetConfig -Name "defaultSubnet" -AddressPrefix "10.0.2.0/24" - $vnet = New-AzureRmVirtualNetwork -Name $Inputs.VirtualNetworkName -ResourceGroupName $Inputs.ResourceGroupName ` - -Location $Inputs.Location -AddressPrefix "10.0.0.0/16" -Subnet $defaultSubnet -WarningAction SilentlyContinue - } - - # Create, if needed, the network security group and add a default RDP rule - $nsg = $null - $securityGroupName = @{$true = $Inputs.ResourceGroupName; $false = $Inputs.NetworkSecurityGroup}[$Inputs.NetworkSecurityGroup -eq ""] - if ($Inputs.NetworkSecurityGroup -ne "") - { - $nsg = Get-AzureRmNetworkSecurityGroup -ResourceGroupName $Inputs.ResourceGroupName | Where-Object { $_.Name -eq $Inputs.NetworkSecurityGroup } - } - if (!$nsg) - { - Write-Information -MessageData "Creating security group and rule" -InformationAction Continue - $nsg = New-AzureRMNetworkSecurityGroup -ResourceGroupName $Inputs.ResourceGroupName -Name $securityGroupName -Location $Inputs.Location -WarningAction SilentlyContinue - $nsg | Add-AzureRmNetworkSecurityRuleConfig -WarningAction SilentlyContinue -Name 'Allow_RDP' -Priority 1000 -Protocol TCP -Access Allow ` - -SourceAddressPrefix * -SourcePortRange * -DestinationAddressPrefix * -DestinationPortRange 3389 -Direction Inbound | ` - Set-AzureRmNetworkSecurityGroup | Out-Null - } - - # Create the public IP and NIC - if (!$vnet) { $vnet = Get-AzureRmVirtualNetwork -Name $Inputs.VirtualNetworkName -ResourceGroupName $Inputs.ResourceGroupName } - $ticks = (Get-Date).Ticks.ToString() - $ticks = $ticks.Substring($ticks.Length - 5, 5) - $nicName = "$($Inputs.ResourceGroupName)$($ticks)" - if ($Inputs.DomainNameLabel -ne "") - { - Write-Information -MessageData "Creating new public IP address with domain name" -InformationAction Continue - $pip = New-AzureRmPublicIpAddress -WarningAction SilentlyContinue -Name $nicName -ResourceGroupName $Inputs.ResourceGroupName ` - -DomainNameLabel $Inputs.DomainNameLabel -Location $Inputs.Location -AllocationMethod Dynamic - } - else - { - Write-Information -MessageData "Creating new public IP address WITHOUT domain name" -InformationAction Continue - $pip = New-AzureRmPublicIpAddress -WarningAction SilentlyContinue -Name $nicName -ResourceGroupName $Inputs.ResourceGroupName ` - -Location $Inputs.Location -AllocationMethod Dynamic - } - Write-Information -MessageData "Creating new network interface" -InformationAction Continue - $nic = New-AzureRmNetworkInterface -WarningAction SilentlyContinue -Name $nicName -ResourceGroupName $Inputs.ResourceGroupName ` - -Location $Inputs.Location -PublicIpAddressId $pip.Id -SubnetId $vnet.Subnets[0].Id -NetworkSecurityGroupId $nsg.Id - - # Create the VM configuration - Write-Information -MessageData "Creating VM configuration" -InformationAction Continue - $vm = New-AzureRmVMConfig -VMName $VMName -VMSize $Inputs.VMSize - - # Add additional info to the configuration - if ($Inputs.OperatingSystem -eq "Windows") { - $vm = Set-AzureRmVMOperatingSystem -VM $vm -Windows -ComputerName $VMName -Credential $Inputs.AdminCredentials -ProvisionVMAgent -EnableAutoUpdate - } else { - $vm = Set-AzureRmVMOperatingSystem -VM $vm -Linux -ComputerName $VMName -Credential $Inputs.AdminCredentials - } - $vm = Set-AzureRmVMSourceImage -VM $vm -PublisherName $Inputs.VMImagePublisher -Offer $Inputs.VMImageOffer -Skus $Inputs.VMImageSku -Version "latest" - $vm = Add-AzureRmVMNetworkInterface -VM $vm -Id $nic.Id - - # Create the disk - $diskName = "$($VMName)OSDisk" - $storage = Get-AzureRmStorageAccount -ResourceGroupName $Inputs.ResourceGroupName -Name $Inputs.StorageAccountName - $osDisk = $storage.PrimaryEndpoints.Blob.ToString() + "vhds/" + $diskName + ".vhd" - if ($Inputs.OperatingSystem -eq "Windows") { - $vm = Set-AzureRmVMOSDisk -VM $vm -Name $diskName -VhdUri $osDisk -CreateOption fromImage - } else { - $vm = Set-AzureRmVMOSDisk -VM $vm -Name $diskName -VhdUri $osDisk -CreateOption fromImage - } - - # And finally create the VM itself - Write-Information -MessageData "Creating the VM ... this will take some time ..." -InformationAction Continue - - New-AzureRmVM -ResourceGroupName $Inputs.ResourceGroupName -Location $Inputs.Location -VM $vm - - Write-Information -MessageData "VM Created successfully" -InformationAction Continue -} - - -function Enable-RemotePowerShellOnAzureRmVm { - <# - .SYNOPSIS - Remotely configures an Azure RM virtual machine to enable Powershell remoting. - Returns a command that can be used to connect to the remote VM. - Much of this script came from a blog post by Marcus Robinson - http://www.techdiction.com/2016/02/12/powershell-function-to-enable-winrm-over-https-on-an-azure-resource-manager-vm/ - .DESCRIPTION - Generates a script locally, then uploads it to blob storage, where it is then installed as a custom script extension and run on the VM. - Opens the appropriate port in the network security group rules. - . - .EXAMPLE - Enable-RemotePowerShellOnAzureRmVm -VMName myvm -ResourceGroupName myvirtualmachines - .PARAMETER VMName - Name of the virtual machine. REQUIRED - .PARAMETER ResourceGroupName - Name of the resource group. REQUIRED - .PARAMETER DnsName - Name of the computer that will be connecting. Used in name of certificate and in WinRM listener. DEFAULT: $env:ComputerName - .PARAMETER SourceAddressPrefix - Prefix of source IP addresses in network security group rule. DEFAULT: * - #> - [CmdletBinding()] - [OutputType([string])] - Param ( - [parameter(Mandatory=$true)] - [string]$VMName, - - [parameter(Mandatory=$true)] - [string]$ResourceGroupName, - - [parameter()] - [string]$DNSName = $env:COMPUTERNAME, - - [parameter()] - [string]$SourceAddressPrefix = "*" - ) - - [string]$scriptName = "ConfigureWinRM_HTTPS.ps1" - [string]$extensionName = "EnableWinRM_HTTPS" - [string]$blobContainer = "scripts" - [string]$securityRuleName = "WinRM_HTTPS" - - # Define a temporary file in the users TEMP directory - Write-Information -MessageData "Creating script locally that we'll upload to the storage account" -InformationAction Continue - [string]$file = $env:TEMP + "\" + $scriptName - - # Create the file containing the PowerShell - { - # POWERSHELL TO EXECUTE ON REMOTE SERVER BEGINS HERE - param([string]$DNSName) - - # Force all network locations that are Public to Private - Get-NetConnectionProfile | Where-Object { $_.NetworkCategory -eq "Public" } | ` - ForEach-Object { Set-NetConnectionProfile -InterfaceIndex $_.InterfaceIndex -NetworkCategory Private } - - # Ensure PS remoting is enabled, although this is enabled by default for Azure VMs - Enable-PSRemoting -Force - - # Create rule in Windows Firewall, if it's not already there - if ((Get-NetFirewallRule | Where-Object { $_.Name -eq "WinRM HTTPS" }).Count -eq 0) - { - New-NetFirewallRule -Name "WinRM HTTPS" -DisplayName "WinRM HTTPS" -Enabled True -Profile Any -Direction Inbound -Action Allow -LocalPort 5986 -Protocol TCP - } - - # Create Self Signed certificate and store thumbprint, if it doesn't already exist - $thumbprint = (Get-ChildItem -Path Cert:\LocalMachine\My | Where-Object { $_.Subject -eq "CN=$DNSName" } | Select-Object -First 1).Thumbprint - if (!$thumbprint) - { - $thumbprint = (New-SelfSignedCertificate -DnsName $DNSName -CertStoreLocation Cert:\LocalMachine\My).Thumbprint - } - - # Run WinRM configuration on command line. DNS name set to computer hostname, you may wish to use a FQDN - $cmd = "winrm create winrm/config/Listener?Address=*+Transport=HTTPS @{Hostname=""$DNSName""; CertificateThumbprint=""$thumbprint""}" - cmd.exe /C $cmd - - # POWERSHELL TO EXECUTE ON REMOTE SERVER ENDS HERE - } | out-file -width 1000 $file -force - - - # Get the VM we need to configure - Write-Information -MessageData "Getting information needed to find and update the blob storage with the new script" -InformationAction Continue - $vm = Get-AzureRmVM -ResourceGroupName $ResourceGroupName -Name $VMName - - # Get storage account name - $storageaccountname = $vm.StorageProfile.OsDisk.Vhd.Uri.Split('.')[0].Replace('https://','') - - # get storage account key - $key = ((Get-AzureRmStorageAccountKey -Name $storageaccountname -ResourceGroupName $ResourceGroupName) | ` - Where-Object { $_.KeyName -eq "key1" }).Value - - # create storage context - $storagecontext = New-AzureStorageContext -StorageAccountName $storageaccountname -StorageAccountKey $key - - # create a container called scripts - if ((Get-AzureStorageContainer -Context $storagecontext | Where-Object { $_.Name -eq $blobContainer}).Count -eq 0) - { - New-AzureStorageContainer -Name $blobContainer -Context $storagecontext | Out-Null - } - - #upload the file - Set-AzureStorageBlobContent -Container $blobContainer -File $file -Blob $scriptName -Context $storagecontext -force | Out-Null - - # Create custom script extension from uploaded file - Write-Information -MessageData "Create and run a script extension from our uploaded script" -InformationAction Continue - Set-AzureRmVMCustomScriptExtension -ResourceGroupName $ResourceGroupName -VMName $VMName -Name $extensionName ` - -Location $vm.Location -StorageAccountName $storageaccountname -StorageAccountKey $key -FileName $scriptName ` - -ContainerName $blobContainer -RunFile $scriptName -Argument $DNSName | Out-Null - - # Get the name of the first NIC in the VM - Write-Information -MessageData "Create a new security rule that will allow us to connect remotely" -InformationAction Continue - $nic = Get-AzureRmNetworkInterface -ResourceGroupName $ResourceGroupName -Name (Get-AzureRmResource -ResourceId $vm.NetworkInterfaceIDs[0]).ResourceName - - # Get the network security group attached to the NIC - $nsg = Get-AzureRmNetworkSecurityGroup -ResourceGroupName $ResourceGroupName -Name (Get-AzureRmResource -ResourceId $nic.NetworkSecurityGroup.Id).Name - - # Add the new NSG rule, and update the NSG - if (($nsg.SecurityRules | Where-Object { $_.Name -eq "WinRM_HTTPS" }).Length -eq 0) { - $nsg | Add-AzureRmNetworkSecurityRuleConfig -Name $securityRuleName -Priority 1100 -Protocol TCP -Access Allow ` - -SourceAddressPrefix $SourceAddressPrefix -SourcePortRange * -DestinationAddressPrefix * -DestinationPortRange 5986 -Direction Inbound | ` - Set-AzureRmNetworkSecurityGroup | Out-Null - } - - # get the NIC public IP - $ip = Get-AzureRmPublicIpAddress -ResourceGroupName $ResourceGroupName -Name (Get-AzureRmResource -ResourceId $nic.IpConfigurations[0].PublicIpAddress.Id).ResourceName - - "To connect to the VM using the IP address while bypassing certificate checks use the following command:" - "Enter-PSSession -ComputerName $($ip.IpAddress) -Credential -UseSSL -SessionOption (New-PsSessionOption -SkipCACheck -SkipCNCheck)" -} - -function Get-AzureRmSubscriptionMenu { - <# - .SYNOPSIS - Displays a menu for selecting an Azure subscription. - Returns chosen subscription id. - .PARAMETER Inputs - When scripting menu inputs can be provided. - - This menu will set the value of $Inputs.SubscriptionId - $inputs = New-AzureRmVmInputs - $inputs.Location = "westus" - ... - Get-AzureRmSubscriptionMenu -Inputs $inputs - .EXAMPLE - Get-AzureRmSubscriptionMenu - #> - [CmdletBinding()] - param ( - [AzureRmVmInputs]$inputs = (New-Object AzureRmVmInputs) - ) - - Write-Information "Retrieving subscriptions ..." -InformationAction Continue - $subscriptions = Get-AzureRmSubscription -WarningAction SilentlyContinue | ` - Sort-Object Name | ` - Select-Object @{ Name = "Subscription"; Expression = { "$($_.Name) [$($_.Id)]" } } | ` - Select-Object -ExpandProperty Subscription - Get-InputFromMenu $inputs "SubscriptionId" "Select Subscription" { $subscriptions } - - $sub = $inputs.SubscriptionId -Replace "]" - $inputs.SubscriptionId = $sub.Split("[")[1] - - $inputs.SubscriptionId -} - -function Get-AzureRmVmImageSkuMenu { - <# - .SYNOPSIS - Displays a menu for selecting an Azure VM image sku. - - Returns the name of the chosen SKU. - - Calling this menu will also call the Location, VMImagePublisher and - VMImageOffer menus if needed. - .PARAMETER Inputs - When scripting menu inputs can be provided. - - This menu will set the value of $Inputs.VMImageSku - $inputs = New-AzureRmVmInputs - $inputs.Location = "westus" - $inputs.VMImagePublisher = "RedHat" - ... - Get-AzureRmVmImageSkuMenu -Inputs $inputs - .EXAMPLE - Get-AzureRmVmImageSkuMenu - #> - [CmdletBinding()] - param ( - [AzureRmVmInputs]$inputs = (New-Object AzureRmVmInputs) - ) - - Get-AzureRmVmImageOfferMenu $inputs | Out-Null - - Write-Information "Retrieving VM image SKUs ..." -InformationAction Continue - $skus = {Get-AzureRmVMImageSku -WarningAction SilentlyContinue -Location $inputs.Location -PublisherName $inputs.VMImagePublisher -Offer $inputs.VMImageOffer ` - | Sort-Object Skus | Select-Object -ExpandProperty Skus} - Get-InputFromMenu $inputs "VMImageSku" "Select VM Image Sku" $skus - - Get-AzureRmVMImageSku -WarningAction SilentlyContinue -Location $inputs.Location -PublisherName $inputs.VMImagePublisher -Offer $inputs.VMImageOffer - $inputs.VMImageSku -} - - -function Get-AzureRmVmImageOfferMenu { - <# - .SYNOPSIS - Displays a menu for selecting an Azure VM image offer. - - Returns the name of the chosen offer. - - Calling this menu will also call the Location and VMImagePublisher - menus if needed. - .PARAMETER Inputs - When scripting menu inputs can be provided. - - This menu will set the value of $Inputs.VMImageOffer - $inputs = New-AzureRmVmInputs - $inputs.Location = "westus" - $inputs.VMImagePublisher = "RedHat" - ... - Get-AzureRmVmImageOfferMenu -Inputs $inputs - .EXAMPLE - Get-AzureRmVmImageOfferMenu - #> - [CmdletBinding()] - param ( - [AzureRmVmInputs]$inputs = (New-Object AzureRmVmInputs) - ) - - Get-AzureRmVmImagePublisherMenu $inputs | Out-Null - - Write-Information "Retrieving VM image offers ..." -InformationAction Continue - $offers = {Get-AzureRmVMImageOffer -WarningAction SilentlyContinue -Location $inputs.Location -PublisherName $inputs.VMImagePublisher ` - | Sort-Object Offer | Select-Object -ExpandProperty Offer} - Get-InputFromMenu $inputs "VMImageOffer" "Select VM Image Offer" $offers - - $inputs.VMImageOffer -} - - -function Get-AzureRmVMImagePublisherMenu { - <# - .SYNOPSIS - Displays a menu for selecting an Azure VM image publisher. - - Returns the name of the chosen publisher. - - Calling this menu will also call the Location menu if needed. - .PARAMETER Inputs - When scripting menu inputs can be provided. - - This menu will set the value of $Inputs.VMImagePublisher - $inputs = New-AzureRmVmInputs - $inputs.Location = "westus" - ... - Get-AzureRmVmImagePublisherMenu -Inputs $inputs - .EXAMPLE - Get-AzureRmVmImagePublisherMenu - #> - [CmdletBinding()] - param ( - [AzureRmVmInputs]$inputs = (New-Object AzureRmVmInputs) - ) - - Get-AzureRmLocationMenu $inputs | Out-Null - - Write-Information "Retrieving VM image publishers ..." -InformationAction Continue - $publishers = {Get-AzureRmVMImagePublisher -WarningAction SilentlyContinue -Location $inputs.Location ` - | Sort-Object PublisherName | Select-Object -ExpandProperty PublisherName} - Get-InputFromMenu $inputs "VMImagePublisher" "Select VM Image Publisher" $publishers - - $inputs.VMImagePublisher -} - -function Get-AzureRmLocationMenu { - <# - .SYNOPSIS - Displays a menu for selecting an Azure location. - - Returns the name of the chosen location. - .PARAMETER Inputs - When scripting menu inputs can be provided. - - This menu will set the value of $Inputs.Location - $inputs = New-AzureRmVmInputs - ... - Get-AzureRmLocationMenu -Inputs $inputs - .EXAMPLE - Get-AzureRmLocationMenu - #> - [CmdletBinding()] - param ( - [AzureRmVmInputs]$inputs = (New-Object AzureRmVmInputs) - ) - - Write-Information "Retrieving locations ..." -InformationAction Continue - $locations = Get-AzureRmLocation -WarningAction SilentlyContinue | Sort-Object DisplayName | Select-Object -ExpandProperty Location - Get-InputFromMenu $inputs "Location" "Select Location" { $locations } - - $inputs.Location -} - -function Get-AzureRmVmSizeMenu { - <# - .SYNOPSIS - Displays a menu for selecting an Azure VM size. - - Returns the name of the chosen size. - - Calling this menu will also call the Location menu if needed. - .PARAMETER Inputs - When scripting menu inputs can be provided. - - This menu will set the value of $Inputs.VMSize - $inputs = New-AzureRmVmInputs - $inputs.Location = "westus" - ... - Get-AzureRmVmSizeMenu -Inputs $inputs - .EXAMPLE - Get-AzureRmVmSizeMenu - #> - [CmdletBinding()] - param ( - [AzureRmVmInputs]$Inputs = (New-Object AzureRmVmInputs) - ) - - Get-AzureRmLocationMenu $inputs | Out-Null - - Write-Information "Retrieving VM sizes ..." -InformationAction Continue - $vmSizes = { Get-AzureRmVMSize -Location $Inputs.Location | Sort-Object Name | Select-Object @{ Label = "Name"; Expression = { ` - "$($_.Name.PadRight(25))Cores = $($_.NumberOfCores.ToString().PadLeft(2)); Memory = $(($_.MemoryInMb / 1024).ToString().PadLeft(4)) GB; OS Disk = $(($_.OSDiskSizeInMB / 1024).ToString().PadLeft(4)) GB" }} | ` - Select-Object -ExpandProperty Name } - - Get-InputFromMenu $Inputs "VMSize" "Select VM Size" $vmSizes - - if ($inputs.VMSize.Length -gt 25) { $inputs.VMSize = $inputs.VMSize.Substring(0, 25).TrimEnd() } - $inputs.VMSize -} - -function Assert-AzureRmSession { - <# - .SYNOPSIS - Test if an Azure RM session exists, and throw an error if it doesn't. - .DESCRIPTION - Confirms an Azure RM session exists by checking for Get-AzureRmContext, and throws an error if $null is returned. - .EXAMPLE - Assert-AzureRmSession - #> - - try { - $context = Get-AzureRmContext - } - catch { - throw "Commands in this module require an Azure session. Please use Add-AzureRmAccount before continuing" - - } - - $context -} - -function Get-AzureRmDefault { - <# - .SYNOPSIS - Load defaults for AzureRm commands. - .DESCRIPTION - Defaults are loaded from a JSON file in the profile folder. - .EXAMPLE - $defaults = Get-AzureRmDefault - #> - - if (Test-Path $script:FilePath) { - $jsonObj = (Get-Content $script:FilePath) | ConvertFrom-Json - if ($jsonObj.PSObject.Properties -match "AzureRmDefaults") { return $jsonObj.AzureRmDefaults } - } - return @{} -} - -function Set-AzureRmDefault { - <# - .SYNOPSIS - Update AzureRm defaults - .DESCRIPTION - Saves defaults for IntelliTect.AzureRm commands - to a JSON file in the profile folder. - .EXAMPLE - Set-AzureRmDefault -Location westus - .EXAMPLE - Set-AzureRmDefault -RemoveLocation - #> - [CmdletBinding()] - param ( - [string]$Location = $null, - [string]$ResourceGroupName = $null, - [string]$SubscriptionId = $null, - [string]$VMImagePublisher = $null, - [string]$VMImageOffer = $null, - [string]$VMImageSku = $null, - [string]$StorageAccountType = $null, - [string]$VMSize = $null, - [string]$OperatingSystem = $null, - [switch]$RemoveLocation, - [switch]$RemoveResourceGroupName, - [switch]$RemoveSubscriptionId, - [switch]$RemoveVMImagePublisher, - [switch]$RemoveVMImageOffer, - [switch]$RemoveVMImageSku, - [switch]$RemoveStorageAccountType, - [switch]$RemoveVMSize, - [switch]$RemoveOperatingSystem - ) - - $cache = $CachedDefaults - - function setDefaultProperty($name, $value) { - if ($value) { - if (!($cache.PSObject.Properties -match $name)) { - $cache | Add-Member -MemberType NoteProperty -Name $name -Value $null - } - $cache.$name = $value - } - } - - function removeProperty($name, $remove) { - if ($remove) { - if ($cache.PSObject.Properties -match $name) { - $cache.PSObject.Properties.Remove($name) - } - } - } - - setDefaultProperty "Location" $Location - setDefaultProperty "ResourceGroupName" $ResourceGroupName - setDefaultProperty "SubscriptionId" $SubscriptionId - setDefaultProperty "VMImagePublisher" $VMImagePublisher - setDefaultProperty "VMImageOffer" $VMImageOffer - setDefaultProperty "VMImageSku" $VMImageSku - setDefaultProperty "StorageAccountType" $StorageAccountType - setDefaultProperty "VMSize" $VMSize - setDefaultProperty "OperatingSystem" $OperatingSystem - - removeProperty "Location" $RemoveLocation - removeProperty "ResourceGroupName" $RemoveResourceGroupName - removeProperty "SubscriptionId" $RemoveSubscriptionId - removeProperty "VMImagePublisher" $RemoveVMImagePublisher - removeProperty "VMImageOffer" $RemoveVMImageOffer - removeProperty "VMImageSku" $RemoveVMImageSku - removeProperty "StorageAccountType" $RemoveStorageAccountType - removeProperty "VMSize" $RemoveVMSize - removeProperty "OperatingSystem" $RemoveOperatingSystem - - $jsonObj = @{} - if (Test-Path $script:FilePath) { - $jsonObj = (Get-Content $script:FilePath) | ConvertFrom-Json - } - $jsonObj.AzureRmDefaults = $cache - ($jsonObj | ConvertTo-Json) | Out-File $script:FilePath - - $CachedDefaults = Get-AzureRmDefault -} - -## Class definitions -class AzureRmVmInputs { - [string]$SubscriptionId - [string]$ResourceGroupName - [string]$Location - [string]$VMImagePublisher - [string]$VMImageOffer - [string]$VMImageSku - [string]$StorageAccountName - [string]$StorageAccountType - [string]$DomainNameLabel - [string]$VirtualNetworkName - [string]$VMSize - [string]$NetworkSecurityGroup - [PSCredential]$AdminCredentials - [string]$OperatingSystem -} -function New-AzureRmVmInputs { - <# - .SYNOPSIS - Generates a new instance of AzureRmVmInputs. - .DESCRIPTION - Useful for providing scripted inputs to the IntelliTect.AzureRm commands. - .EXAMPLE - $inputs = New-AzureRmVmInputs - $inputs.Location = "westus" - ... - Get-AzureRmVmImagePublisher -Inputs $inputs - #> - - return [AzureRmVmInputs]::new() -} - -## Private functions and variables -function Assert-DomainNameIsAvailable([string]$domainNameLabel = "", [string]$location = "") { - <# - .SYNOPSIS - Verifies that a given domain name is available for a location. - .PARAMETER domainNameLabel - Domain name to verify. - .PARAMETER location - Azure RM location in which to check the domain name. - .EXAMPLE - Assert-DomainNameIsAvailable "mydomain" "westus" - #> - if ($domainNameLabel -eq "" -or $location -eq "") { return } - - Write-Information "Verifying domain name is available ..." -InformationAction Continue - - $message = $null - $domainOk = Test-AzureRmDnsAvailability -DomainQualifiedName $domainNameLabel -Location $location -ErrorAction SilentlyContinue - - if (!$?) { - $message = "Test-AzureRmDnsAvailability failed with DomainNameLabel = $domainNameLabel" - } elseif ( $domainOk -eq $false) { - $message = "DomainNameLabel ($domainNameLabel) failed when tested for uniqueness." - } - if ($message) { - throw $message - } - return -} - -function Confirm-ScriptShouldContinue([bool]$confirm, [string]$message, [string]$continueMessage = $null) { - <# - .SYNOPSIS - Prompt the user to determine if the script should continue. - .PARAMETER confirm - If false, then don't do the confirmation. Allows for passing value of -Confirm in. - .PARAMETER message - Message displayed with the confirmation prompt. - .PARAMETER continueMessage - Override the default description for the continue option. - .EXAMPLE - Confirm-ScriptShouldContinue $true "This will mess up your stuff" "If you continue, your stuff will be messed up" - #> - $confirmTitle = "Continue?" - if (!$continueMessage) { $continueMessage = "Script will proceed which will result in changes to your Azure resources." } - - $confirmOptions = [System.Management.Automation.Host.ChoiceDescription[]]( ` - (New-Object System.Management.Automation.Host.ChoiceDescription "&Continue", ` - $continueMessage), ` - (New-Object System.Management.Automation.Host.ChoiceDescription "&Stop", ` - "Stop the script at this point.")) - - if (!$confirm) { return $true } - - $confirmResult = $host.UI.PromptForChoice($confirmTitle, $message, $confirmOptions, 1) - return ($confirmResult -eq 0) -} - -function Get-CachedDefaultValue([string]$propertyName) { - <# - .SYNOPSIS - Wrapper for Get-AzureRmDefault, but uses cached values. - - Returns default value for property. - .DESCRIPTION - If the provided property doesn't exist in the stored defaults null will be returned. - .PARAMETER propertyName - If Set-AzureRmDefault has been used for this property, then the stored value is returned. - .EXAMPLE - Set-AzureRmDefault -Location "westus" - Get-CachedDefaultValue("Location") - #> - if (!$CachedDefaults) { $CachedDefaults = Get-AzureRmDefault } - - if ($CachedDefaults.PSObject.Properties -match $propertyName) { $CachedDefaults.$propertyName } - else { $null } -} - -function Get-MenuSelection([int]$selectionCount, [string]$prompt = "Please enter your selection") { - <# - .SYNOPSIS - After a menu has been displayed this function is called to get the user's selection. - - Returns menu value associated with the selection. - .PARAMETER selectionCount - How many menu selections are displayed. - .PARAMETER prompt - Prompt to display when asking for their selection. - .EXAMPLE - ... used internally by Get-InputFromMenu - #> - $validSelection = $false - $itemSelected = $false - - if ($OriginalMenuSelections.Count -ne $CurrentMenuSelections.Count) { $prompt += " (** to restore original menu items)" } - else { $prompt += " (enter a partial value to filter menu items)"} - - do { - $selection = Read-Host $prompt - - if ($selection -in 1..$selectionCount) { - $validSelection = $true - $itemSelected = $true - } elseif ($selection -eq "**") { - $validSelection = $true - } elseif (($CurrentMenuSelections | Where-Object { $_.ToLower().Contains($selection.ToLower()) }).Count -gt 0) { - $validSelection = $true - } - } - while (!$validSelection) - @{ ItemSelected = $itemSelected; Selection = $selection } -} - -## StackOverflow gems -function Invoke-MenuMaker { - <# - .SYNOPSIS - Displays a list of menu selections, along with an optional Title and Note - .PARAMETER title - Displayed above the menu. - .PARAMETER note - Displayed above the menu, but below the title. - .PARAMETER selections - List of menu choices. - .PARAMETER subSelections - Indicates a subset of an original list of selections is being displayed. - .EXAMPLE - ... used internally by Get-InputFromMenu - #> - param ( - [string]$title = $null, - - [string]$note = $null, - - [Parameter(Mandatory = $true, ValueFromPipeline = $true)] - [string[]]$selections, - - [bool]$subSelections = $false - ) - - if (!$subSelections) { $script:OriginalMenuSelections = $selections } - $script:CurrentMenuSelections = $selections - - $width = ($selections | Where-Object { $_.Length } | Sort-Object Length -Descending | Select-Object -First 1).Length - if ($title -or $note) { - $widthArray = @($width) - if ($title) { $widthArray += $title.Length } - if ($note) { $widthArray += $note.Length } - - $width = $widthArray | Sort-Object -Descending | Select-Object -First 1 - } - - $buffer = if (($width * 1.5) -gt 200) { - (200 - $width) / 2 - } else { - $width / 4 - } - if ($buffer -gt 4) { $buffer = 4 } - $buffer = [int]$buffer - - $maxWidth = $buffer * 2 + $width + 5 - - $menu = "" - $menu += "╔" + "═" * $maxWidth + "╗`n" - if ($title) { - $menu += "║" + " " * [Math]::Floor(($maxWidth - $title.Length) / 2) + $title + " " * [Math]::Ceiling(($maxWidth - $title.Length) / 2) + "║`n" - $menu += "╟" + "─" * $maxWidth + "╢`n" - } - if ($note) { - $menu += "║" + " " * [Math]::Floor(($maxWidth - $note.Length) / 2) + $note + " " * [Math]::Ceiling(($maxWidth - $note.Length) / 2) + "║`n" - $menu += "╟" + "─" * $maxWidth + "╢`n" - } - for ($i = 1; $i -le $selections.Count; $i++) { - $item = "$i`. ".PadRight(5) - $menu += "║" + " " * $buffer + $item + $selections[$i - 1] + " " * ($maxWidth - $buffer - $item.Length - $selections[$i - 1].Length) + "║`n" - } - $menu += "╚" + "═" * $maxWidth + "╝`n" - - Write-Information $menu -InformationAction Continue -} - -function Get-InputFromMenu([AzureRmVmInputs]$inputs, [string]$property, [string]$prompt, [ScriptBlock]$selectionScript, ` - [string]$default = $null, [string]$note = $null, [bool]$confirmSingle = $false) { - <# - .SYNOPSIS - Displays a menu and prompts the user for input. - - Menu is not displayed: - - If the property is already set on the provided $inputs. - - If a default has been set for this property. - - If $selectionScript only returns one option. - - User will need to confirm - - If $selectionScript returns no values and $default is provided. - - An error is thrown if no $default is provided. - .PARAMETER inputs - AzureRmVmInputs instance to add the selection to. - .PARAMETER property - Name of the property on inputs that will be set. - .PARAMETER prompt - Prompt displayed to the user. - .PARAMETER selectionScript - Once a decision is made to display the menu, this script will provide the selections. - - Won't be evaluated unless the menu will be displayed. - .PARAMETER default - If selectionScript returns no values then default will be used. - .PARAMETER note - Passed to Invoke-MenuMaker - .PARAMETER confirmSingle - Determines if user will be prompted if selectionScript returns only one value. - .EXAMPLE - $inputs = New-AzureRmVmInputs - $locations = Get-AzureRmLocation -WarningAction SilentlyContinue | Sort-Object DisplayName | Select-Object -ExpandProperty Location - Get-InputFromMenu $inputs "Location" "Select Location" { $locations } - #> - if (!$inputs.$property) { - $inputs.$property = Get-CachedDefaultValue $property - if (!$inputs.$property) { - $selections = &$selectionScript - if ($selections -isnot [System.Array]) { - if (($selections -eq "" -or $null -eq $selections) -and !$default) { throw "No $($property) values found for supplied inputs."} - elseif (($selections -eq "" -or $null -eq $selections) -and $default) { - $inputs.$property = $default - Write-Information "Using default value for $property - $($inputs.$property)" -InformationAction Continue - } - else { - $inputs.$property = $selections - Write-Information "Using single available value for $property - $($inputs.$property)" -InformationAction Continue - - if ($confirmSingle) { - if (!(Confirm-ScriptShouldContinue $true "Single value available for $property - $($inputs.$property)." "Continuing will use the only available value.")) { - $inputs.$property = $null - } - } - } - } else { - $selectedItem = $null - $subSelections = $false - do { - Invoke-MenuMaker -Title $prompt -Selections $selections -SubSelections $subSelections -Note $note - $selection = Get-MenuSelection $selections.Count - - if ($selection.ItemSelected) { - $selectedItem = $selection.Selection - } else { - if ($selection.Selection -eq "**") { - $selections = $OriginalMenuSelections - $subSelections = $false - } else { - $selections = $selections | Where-Object { $_.ToLower().Contains($selection.Selection.ToLower()) } - $subSelections = $true - } - } - } while (!$selectedItem) - - if ($selections -isnot [System.Array]) { $inputs.$property = $selections } - else { $inputs.$property = $selections[$selectedItem - 1] } - } - - } else { - Write-Information "Using cached value for $property - $($inputs.$property)" -InformationAction Continue - } - } else { - Write-Information "Using provided input for $property - $($inputs.$property)" -InformationAction Continue - } -} - -## Set up defaults -$FilePath = (Split-Path -Path $profile) + "\IntelliTectUserSettings.json" -$CachedDefaults = $null -$CurrentMenuSelections = $null -$OriginalMenuSelections = $null - - -Export-ModuleMember -Function New-AzureRmVirtualMachine -Export-ModuleMember -Function Enable-RemotePowerShellOnAzureRmVm -Export-ModuleMember -Function Get-AzureRmDefault -Export-ModuleMember -Function Set-AzureRmDefault -Export-ModuleMember -Function Get-AzureRmSubscriptionMenu -Export-ModuleMember -Function Get-AzureRmLocationMenu -Export-ModuleMember -Function Get-AzureRmVmImagePublisherMenu -Export-ModuleMember -Function Get-AzureRmVmImageOfferMenu -Export-ModuleMember -Function Get-AzureRmVmImageSkuMenu -Export-ModuleMember -Function New-AzureRmVmInputs -Export-ModuleMember -Function Get-AzureRmVmSizeMenu \ No newline at end of file diff --git a/Archived Modules/IntelliTect.AzureRm/README.md b/Archived Modules/IntelliTect.AzureRm/README.md deleted file mode 100644 index 372f67b..0000000 --- a/Archived Modules/IntelliTect.AzureRm/README.md +++ /dev/null @@ -1,28 +0,0 @@ -# IntelliTect.AzureRM -A set of scripts for working with Azure RM resources. Available on PowerShell Gallery at https://www.powershellgallery.com/packages/IntelliTect.AzureRm. - -## Installation -To install any of the IntelliTect.PSToolbox modules, you need the latest version of the PowerShellGet module. If you have Windows 10, you already have it. -Otherwise, instructions may be found at https://www.powershellgallery.com/GettingStarted?section=Get%20Started, or you may also run Setup.ps1 inside -the IntelliTect.PSToolbox repository to attempt to automatically install needed dependencies. - -Once you are all set up, run `Install-Module IntelliTect.AzureRM` to install the latest version. - -## Examples -* Creating a new Azure RM virtual machine. - * New-AzureRmVirtualMachine -VMName "MyVirtualMachine" -ResourceGroupName "MyVMs" - * Script will prompt the user to select Azure options, i.e., subscription, location, VM size, VM Sku, etc. - -* Enabling remote PowerShell on an Azure RM virtual machine. - * Enable-RemotePowerShellOnAzureRmVm -VMName "MyVirtualMachine" -ResourceGroupName "MyVMs" - * A script will be generated, uploaded and executed on the VM, where it will make necessary changes to settings to allow for remove PowerShell sessions. - -* Prompting users for Azure RM resource choices - * Get-AzureRmSubscriptionMenu - * Get-AzureRmLocationMenu - * Get-AzureRmVmImagePublisherMenu - * Get-AzureRmVmImageOfferMenu - * Get-AzureRmVmImageSkuMenu - * Get-AzureRmVmSizeMenu - * Menu calls will return the selected value. - * An instance of AzureRmVmInputs (created with New-AzureRmVmInput) can be used to provide dependent selections and capture the selected value. \ No newline at end of file diff --git a/Archived Modules/IntelliTect.DropboxToGit/IntelliTect.DropboxToGit.psd1 b/Archived Modules/IntelliTect.DropboxToGit/IntelliTect.DropboxToGit.psd1 deleted file mode 100644 index 5df2eff..0000000 --- a/Archived Modules/IntelliTect.DropboxToGit/IntelliTect.DropboxToGit.psd1 +++ /dev/null @@ -1,120 +0,0 @@ -# -# Module manifest for module 'IntelliTect.DropboxToGit' -# -# Generated by: Andrew -# -# Generated on: 5/18/2016 -# - -@{ - -# Script module or binary module file associated with this manifest. -RootModule = './IntelliTect.DropboxToGit.psm1' - -# Version number of this module. -ModuleVersion = '1.1.2.0' - -# ID used to uniquely identify this module -GUID = 'df355be7-d8f2-4f40-9d49-e696c4661304' - -# Author of this module -Author = 'Andrew Scott' - -# Company or vendor of this module -CompanyName = 'IntelliTect' - -# Copyright statement for this module -# Copyright = '' - -# Description of the functionality provided by this module -Description = 'Converts Dropbox revision history into a git repository' - -# Minimum version of the Windows PowerShell engine required by this module -# PowerShellVersion = '' - -# Name of the Windows PowerShell host required by this module -# PowerShellHostName = '' - -# Minimum version of the Windows PowerShell host required by this module -# PowerShellHostVersion = '' - -# Minimum version of Microsoft .NET Framework required by this module -# DotNetFrameworkVersion = '' - -# Minimum version of the common language runtime (CLR) required by this module -# CLRVersion = '' - -# Processor architecture (None, X86, Amd64) required by this module -# ProcessorArchitecture = '' - -# Modules that must be imported into the global environment prior to importing this module -# RequiredModules = @() - -# Assemblies that must be loaded prior to importing this module -# RequiredAssemblies = @() - -# Script files (.ps1) that are run in the caller's environment prior to importing this module. -# ScriptsToProcess = @() - -# Type files (.ps1xml) to be loaded when importing this module -# TypesToProcess = @() - -# Format files (.ps1xml) to be loaded when importing this module -# FormatsToProcess = @() - -# Modules to import as nested modules of the module specified in RootModule/ModuleToProcess -# NestedModules = @() - -# Functions to export from this module -FunctionsToExport = '*' - -# Cmdlets to export from this module -CmdletsToExport = '*' - -# Variables to export from this module -VariablesToExport = '*' - -# Aliases to export from this module -AliasesToExport = '*' - -# DSC resources to export from this module -# DscResourcesToExport = @() - -# List of all modules packaged with this module -# ModuleList = @() - -# List of all files packaged with this module -# FileList = @() - -# Private data to pass to the module specified in RootModule/ModuleToProcess. This may also contain a PSData hashtable with additional module metadata used by PowerShell. -PrivateData = @{ - - PSData = @{ - - # Tags applied to this module. These help with module discovery in online galleries. - # Tags = @() - - # A URL to the license for this module. - # LicenseUri = '' - - # A URL to the main website for this project. - # ProjectUri = '' - - # A URL to an icon representing this module. - # IconUri = '' - - # ReleaseNotes of this module - # ReleaseNotes = '' - - } # End of PSData hashtable - -} # End of PrivateData hashtable - -# HelpInfo URI of this module -# HelpInfoURI = '' - -# Default prefix for commands exported from this module. Override the default prefix using Import-Module -Prefix. -# DefaultCommandPrefix = '' - -} - diff --git a/Archived Modules/IntelliTect.DropboxToGit/IntelliTect.DropboxToGit.psm1 b/Archived Modules/IntelliTect.DropboxToGit/IntelliTect.DropboxToGit.psm1 deleted file mode 100644 index f01d6f0..0000000 --- a/Archived Modules/IntelliTect.DropboxToGit/IntelliTect.DropboxToGit.psm1 +++ /dev/null @@ -1,980 +0,0 @@ -Set-StrictMode -version latest - -$script:progressIdStack = New-Object System.Collections.ArrayList -$script:progressNextIndex = 0 - -# See https://www.dropbox.com/developers/documentation/http/documentation for Dropbox HTTP API Documentation - -Function script:Invoke-DropboxApiRequest { - [CmdletBinding()] param( - [string] $AuthToken, - [string] $Endpoint, - [object] $Body - ) - - $response = Invoke-WebRequest ` - -Method Post ` - -Uri "https://api.dropboxapi.com/2/$Endpoint" ` - -Headers @{"Authorization" = "Bearer $AuthToken"} ` - -ContentType "application/json" ` - -Body (ConvertTo-Json $Body) - - if ($response.Content){ - return ConvertFrom-Json $response.Content - } - - return [PSCustomObject]$response -} - - -Function script:Invoke-DropboxApiDownload { - # Not supporting 'SupportsShouldProcess=$true)' since Invoke-WebRequest doesn't support it. - [CmdletBinding()] param( - [string] $AuthToken, - [object] $Path, - [string] $OutFile, - [switch] $force - ) - - $dir = ([System.IO.FileInfo]$OutFile).Directory - if (!$dir.Exists) { - $dir.Create() - } - - if((Test-Path $OutFile) -and $force) { - Remove-Item $OutFile - } - - try { - $response = Invoke-WebRequest ` - -Method Post ` - -Uri "https://content.dropboxapi.com/2/files/download" ` - -Headers @{"Authorization" = "Bearer $AuthToken"; "Dropbox-API-Arg" = "{`"path`": `"$Path`"}"} ` - -ContentType "" ` - -OutFile $OutFile - - } - catch [System.IO.IOException] { - Write-Warning "Unable to download $outfile. Retrying...." - Write-Progress -Activity $Activity -Id $id -ParentId $parentId -Status "Download file from dropbox..." -CurrentOperation "Unable to download $outfile. Retrying...." - Start-Sleep -Seconds 5 - $response = Invoke-DropboxApiDownload -Path "rev:$($entry.rev)" -OutFile $outFile -AuthToken $AuthToken - } - - return $response -} - - -Function script:Get-DropboxFileRevisions { - [CmdletBinding()] param( - [string] $AuthToken, - [string] $Path = "" - ) - - $body = @{ - "path" = $Path; - "limit" = 100 - } - - try { - $response = Invoke-DropboxApiRequest -Endpoint "files/list_revisions" -Body $body -AuthToken $AuthToken - return @($response.entries) - } - catch { - if ($_.ErrorDetails.Message.Contains("path/not_file")) { - Write-Information "$Path appears to be a deleted folder." - return [PSCustomObject] @(); - } else { - throw - } - } - -} - - -Function script:Get-DropboxDirectoryContents { - [CmdletBinding()] param( - [Parameter(Mandatory)][string] $AuthToken, - [string] $Path = "" - ) -try { $Activity = "$($PSCmdlet.MyInvocation.MyCommand.Name)";$parentId=[int]::MaxValue;if($script:progressNextIndex -gt 0){$parentId=$script:progressIdStack[-1]};$Id = $script:progressNextIndex++;$script:progressIdStack.Add($id)>$null - - $cursor = $null - $hasMore = $true - [int]$totalEntryCount = 0 - [string] $Cursor = $null - $contents = New-Object System.Collections.ArrayList - - while ($hasMore -eq $true){ - # Dropbox's API returns up to 2000 file listings at once. - # If there are more than that, a cursor is returned which can be passed to another call - # in order to get more results. Loop until we've found all the file listings. - - Write-Progress -Activity $Activity -Id $id -ParentId $parentId -Status "Retrive Dropbox content..." -CurrentOperation "Retrieved $totalEntryCount Dropbox content items so far" - - $body = @{ - "path" = $Path; - "recursive" = $true; - "include_deleted" = $true; - } - - [string]$continueUrlPart = "" - - if ($Cursor) { - $continueUrlPart = "/continue" - $body = @{ - "cursor" = $Cursor - } - } - - $response = Invoke-DropboxApiRequest -Endpoint "files/list_folder$continueUrlPart" -Body $body -AuthToken $AuthToken - - $totalEntryCount = $totalEntryCount + $response.entries.Count - $response.entries | Write-Output - $cursor = $response.cursor - $hasMore = $response.has_more - } - - - ##return $contents -} finally {$script:progressNextIndex--;$script:progressIdStack.Remove($script:progressIdStack[-1]);Write-Progress -Activity $Activity -Id $id -Completed} -} - -<# - .SYNOPSIS - Retrieves the dropbox folder history. - - .DESCRIPTION - Retrieves dropbox revision history and returns it as a hashtable. - - .PARAMETER AuthToken - A Dropbox auth token that can be obtained by following the instructions at https://blogs.dropbox.com/developers/2014/05/generate-an-access-token-for-your-own-account/ - - .PARAMETER Path - The path in your Dropbox account. This is relative to your root folder, and should begin with a forward-slash (/). - If you wish to retrieve your entire Dropbox account, leave this parameter empty - do not use a single slash. - - .PARAMETER Filter - A list of wildcard patterns that will be compared against each file in Dropbox in the path. - If the Dropbox path name matches any of these patterns, it will be ignored. - - .EXAMPLE - To only retrieve files within a directory named MyFiles while excluding any subfolders: - $history = Invoke-DropboxHistory -AuthToken "" -Path "/MyFiles" -Filter "/MyFiles/*/*" - - - .LINK - https://blogs.dropbox.com/developers/2014/05/generate-an-access-token-for-your-own-account/ - -#> -Function Get-DropboxHistory { - [CmdletBinding()] param( - [string] $AuthToken = $(Read-Host -prompt @" - Enter your Dropbox access token. To get a token, follow the steps at - https://blogs.dropbox.com/developers/2014/05/generate-an-access-token-for-your-own-account/ -"@), - [string] $Path = "", - [string[]] $Filter = (new-object string[] 0) - ) -try { $Activity = "$($PSCmdlet.MyInvocation.MyCommand.Name)";$parentId=[int]::MaxValue;if($script:progressNextIndex -gt 0){$parentId=$script:progressIdStack[-1]};$Id = $script:progressNextIndex++;$script:progressIdStack.Add($id)>$null - - # TODO: Provide more examples including ones that consume the history. - - - Write-Progress -Activity $Activity -Id $id -ParentId $parentId - - - # Change '\' to '/', prefix with '/' and remove trailing '/' - if($path.Contains('\')) { $Path = $Path.Replace('\','/') } - if($path[0] -ne '/') { $Path = "/$Path" } - if($path[-1] -eq '/') { $Path = $Path.TrimEnd('/')} - - $history = @{} - $contents = New-Object System.Collections.ArrayList - - $contents = Get-DropboxDirectoryContents -Path $Path -AuthToken $AuthToken - - [int]$totalEntryCount = $contents.Count - [int]$entryCount=0 - foreach($entry in ($contents | ?{ - $_.".tag" -in 'deleted','file'}) ) { # We only care about files, not directories. "deleted" represents a deleted file. - - # Examine the file's path to see if it should be excluded. - $matchedExcludes = @($Filter | Where-Object {$entry.path_lower -like $_} ) - - if (!$matchedExcludes -or $matchedExcludes.Count -eq 0) { - Write-Progress -Activity $Activity -Id $id -ParentId $parentId -Status "Get file revisions" -CurrentOperation $entry.path_Display -PercentComplete ($entryCount++/$totalEntryCount) - # If the file passed the exclusion filter, grab the metadata about the revisions of the file. - $revisions = Get-DropboxFileRevisions -Path $entry.path_lower -AuthToken $AuthToken - - $subpathDisplay = ($entry.path_display -replace "(?i)^$([Regex]::Escape("$Path/"))","/") - Add-Member -InputObject $entry -TypeName "DropboxContentItem" -Name "subpath_display" -MemberType NoteProperty -Value $subpathDisplay - Add-Member -InputObject $entry -TypeName "DropboxContentItem" -Name "tag" -MemberType AliasProperty -Value ".tag" - - foreach ($revision in $revisions) { - if (!$history.ContainsKey($revision.client_modified)){ - $null = $history.Add($revision.client_modified, (New-Object System.Collections.ArrayList)) - } - $subpathDisplay = ($entry.path_display -replace "(?i)^$([Regex]::Escape("$Path/"))","/") - Add-Member -InputObject $revision -TypeName "DropboxFileRevision" -Name "subpath_display" -MemberType NoteProperty -Value $subpathDisplay - $null = $history[$revision.client_modified].Add($revision) - } - Add-Member -InputObject $entry -TypeName "DropboxContentItem" -Name "Revisions" -MemberType NoteProperty -Value @($revisions) - - Write-Output $entry - - } - } - - if ($totalEntryCount -eq 0) { - Write-Warning "No files were found. Exiting." - return; - } - -} finally {$script:progressNextIndex--;$script:progressIdStack.Remove($script:progressIdStack[-1]);Write-Progress -Activity $Activity -Id $id -Completed} -} - -Function Invoke-MockGit ([switch]$A, $argumentList) { - $parameters = $args - if([bool]((& "C:\Program Files\Git\cmd\git.cmd" add -help) -like "*--dry-run*")) { - $parameters = $parameters | ?{ $_ -notin ,"--dryrun" } - & "C:\Program Files\Git\cmd\git.cmd" $parameters "--dryrun" - } - else { - Write-Host "Executing: git $parameters" - } -} - -Function Get-CurrentGitBranch { - git branch | ?{ $_ -match '\* (?.*)' } | %{ $Matches.CurrentBranch } -} - -<# - .SYNOPSIS - Takes a Dropbox folder structure and converts it into a git repository. - - .DESCRIPTION - The provided path and all subfolders and files will be analyzed, and a git repository will be created - that represents the historical information of the Dropbox revision history. - - Paths can be excluded using a wildcard format. - - .PARAMETER AuthToken - A Dropbox auth token that can be obtained by following the instructions at https://blogs.dropbox.com/developers/2014/05/generate-an-access-token-for-your-own-account/ - - .PARAMETER Path - The path in your Dropbox account that you wish to convert to a git repository. - This is relative to your root folder, and should begin with a forward-slash (/). - If you wish to convert your entire Dropbox account to a git repository, leave this parameter empty - do not use a single slash. - - .PARAMETER Filter - A list of wildcard patterns that will be compared against each file in Dropbox in the path. - If the Dropbox path name matches any of these patterns, it will be ignored. - - .EXAMPLE - To only convert files within a directory named MyFiles while excluding any subfolders: - Invoke-ConvertDropboxToGit -AuthToken "" -Path "/MyFiles" -Filter "/MyFiles/*/*" - - - .LINK - https://blogs.dropbox.com/developers/2014/05/generate-an-access-token-for-your-own-account/ - -#> -Function Invoke-ConvertDropboxToGit { - [CmdletBinding(DefaultParametersetName="DropBoxConfig",SupportsShouldProcess=$true)] - param( - [Parameter(Mandatory)][string] $AuthToken = $(Read-Host -prompt @" - Enter your Dropbox access token. To get a token, follow the steps at - https://blogs.dropbox.com/developers/2014/05/generate-an-access-token-for-your-own-account/ -"@), - [Parameter(Mandatory, ParameterSetName="DropBoxConfig")][string] $Path = "", - [Parameter(ParameterSetName="DropBoxConfig")][string[]] $Filter = (new-object string[] 0), - [ValidateScript({Test-Path $_ -PathType Container })][string] $OutputDirectory, - [Parameter(Mandatory, ParameterSetName="DropBoxHistory")] $contents - # TO DO: Add [bool]$CaseSensitiveGit - ) - -try { $Activity = "$($PSCmdlet.MyInvocation.MyCommand.Name)";$parentId=[int]::MaxValue;if($script:progressNextIndex -gt 0){$parentId=$script:progressIdStack[-1]};$Id = $script:progressNextIndex++;$script:progressIdStack.Add($id)>$null - - Write-Progress -Activity $Activity -Id $id -ParentId $parentId - - if($PsCmdlet.ParameterSetName -ne "DropBoxHistory") { - Write-Progress -Activity $Activity -Id $id -ParentId $parentId -Status "Get-DropBoxHistory" - # When we're done grabbing metadata, will will loop through this dictionary in order of its keys - # to construct our git repo. - $contents = Get-DropboxHistory $AuthToken $Path $Filter - } - - # Unfortunately, we have to change our working directory because git doesn't allow you to target commands to other directories. - try { - Write-Progress -Activity $Activity -Id $id -ParentId $parentId -Status "Initialize Git Repository" - $originalLocation = Get-Location - - if([string]::IsNullOrEmpty($OutputDirectory)) { - $OutputDirectory = $pwd - } - - ########################################### - # Below - Get-ChildItem $OutputDirectory "DropboxHistoryBuild*" | Remove-item -Recurse -Force -ErrorAction Ignore - # Above - ######################################### - - # The name of the folder created is always static. - $dirName = Join-Path $OutputDirectory "DropboxHistoryBuild $((Get-Date -Format u).Replace(':', '-'))" - - - if(![bool]$WhatIfPreference){ - New-Item -ItemType Directory -Path $dirName > $null - Set-Location $dirName - git init - if ($PSBoundParameters.ContainsKey('CaseSensitiveGit')) { - git config core.ignorecase $caseSensitiveGit - } - } - else { - $gitNoOp = $(Join-Path -path $env:temp -ChildPath "gitNoOp.cmd") - "@ECHO OFF`nif %1 NEQ add if %1 NEQ checkout (Echo git %*)" | Out-File -FilePath $gitNoOp -Encoding ascii -Force -WhatIf:$false - if(Test-Path alias:git) { - Set-Alias -name Git -value $gitNoOp -Scope Script -WhatIf:$false - } - else { - New-Alias -Name Git -Value $gitNoOp -Scope Script -WhatIf:$false - } - } - Start-Process -FilePath git -ArgumentList editor -ErrorAction Continue # Launch a viewer - - [string]$currentDirectory = $null; - [string]$lastDirectory = $null; - - $userInfos = @{} - ################### - # Special Stuff - if(!(test-path alias:git)) { - Set-Alias Git "C:\Program Files\Git\cmd\git.cmd" -Scope Script - } - - if(![bool]$WhatIfPreference){ - start-process -FilePath "gitex.cmd" "browse .\" - } - if(Test-Path "$env:temp\userinfos.xml") { - [Hashtable]$userInfos = Import-Clixml -Path "$env:temp\userinfos.xml" - } - else { - try { - "dbid:AAB__8e_WYIdagDowO23QIewUPexUkG0ckg","dbid:AADD_oEVX59Mi8_lY_8K3qHP49v2nMMoyyM","dbid:AACLwi6CRR1S_yopklvDbLJp_hGpfJ2MJPk" | %{ - if (!$userInfos.ContainsKey($_)) { - # If we haven't seen this userId yet, make a request to get their name and email for the commit metadata. - $userInfos[$_] = Invoke-DropboxApiRequest -Endpoint "users/get_account" -Body @{"account_id" = "$_"} -AuthToken $AuthToken - } - } - $userInfos | Export-Clixml -Path "$env:Temp\userInfos.xml" -Force - } - catch{}; - } - [string]$oldVersion = $null - "*" > ".gitignore" - $expectedManuscriptFiles= (".gitignore",'.gitattributes',"EssentialC#.dotx","*.mmap",'*.ps1',"Figures/","Slides/") + - ((1..21 | %{ "Michaelis_Ch{0:00}" -f $_ } ) + ("A","B","C","D","F" | %{ "Michaelis_App{0}" -f $_ }) + - ("Preface","Bio","AboutIntelliTechture","AboutIntelliTect","Dedication","AbtAuthor","Acknowledgments","Forward","AboutIntelliTect" | %{ "Michaelis_{0}" -f $_ }) | %{ "$_.docx";"$_.doc" }) - $expectedManuscriptFiles | %{ "!$_"} >> ".gitignore" - $expectedManuscriptFiles = $expectedManuscriptFiles | %{ $_.TrimEnd("/") } - - '*.docx binary' > '.gitattributes' - '*.pdf binary' >> '.gitattributes' - git config core.autocrlf false - - git add -A - git commit -m "Initialize repository with .gitignore and .gitattributes" - - [bool]$FoundAndrewOrDan=$false - git checkout -b v3.0 - $oldVersion = "v3.0" - # Above - ################### - - # Loop over our dictionary of revisions in order of the key (which is the date of the revision) - foreach ($entry in ( $contents | %{ $_.Revisions } | Sort-Object -Property client_modified,subpath_display) ) { - [Nullable[DateTime]]$datetime = $null - [string]$authorId = $null - [PSCustomObject]$userInfo = $null - - ################################# - # Below - [string]$gitCommitMessage = $null - [string]$tag = $null - # Above - ################################# - - Write-Progress -Activity $Activity -Id $id -ParentId $parentId -Status "Download file from dropbox..." -CurrentOperation $entry.path_display - # Go out to Dropbox and download the revision of each file that corresponds to this date. - - $outFile = Join-Path "." ($entry.subpath_display) - - $date = (([DateTime]$entry.client_modified).ToString("yyyy-MM-dd HH:mm:ss")) - - ################### - # Below - # Special Stuff - - $before = $outFile - - $contributors = @( - @{FN="Audrey";LN="Doyle";Search="__AD.doc";Email="audrey.doyle@comcast.net"}, - @{FN="Eric";LN="Lippert";Search="";Email="Eric@lippert.com"}, - @{FN="Shane";LN="Kercheval";Search="";Email="shane.kercheval@gmail.com"}, - @{FN="Ian";LN="Davis";Search="";Email="ian.f.davis@gmail.com"}, - @{FN="Stephen";LN="Toub";Search="";Email="stoub@microsoft.com"}, - @{FN="Jason";LN="Morse";Search="";Email="jason@eveningcreek.com"}, - @{FN="Michael";LN="Stokesbary";Search="";Email="mike@IntelliTect.com"}, - @{FN="Elisabeth";LN="Ryan";Search="";Email="elizabeth.c.ryan@pearson.com"}, - @{FN="Mark";LN="Michaelis";Search="";Email="mark@IntelliTect.com"}, - @{FN="Brian";LN="Jones";Search="ab";Email="Brian@IntelliTect.com"}, - @{FN="Andrew";LN="Scott";Search="";Email="Andrew.Scott@IntelliTect.com"}, - @{FN="Dan";LN="Haley";Search="";Email="Dan.Haley@IntelliTect.com"} - ) - if("$($entry.id),$($entry.rev)" -eq "id:kX2lV54A50EAAAAAAABltQ,36fc481c2c2e") { - Write-Host "host" - } - - $outFile,$authorItem,$version = Rename-Entry $entry $outFile - - - switch("$($entry.id),$($entry.rev)") { - {$_ -in @( - ,'id:2Nj6yporhyoAAAAAACBr6w,22d481c2c2e' # 2004-11-22T01:28:20Z (v3.0) - /Figures/Michaelis_ch03.Fig05_RegionsInVS/Backup/TicTacToe.cs - ,'id:2nj6yporhyoaaaaaacbtja,1d60481c2c2e' # 2009-09-07t07:56:08z (v3.0) - michaelis_ch14.mindmap_collectioninterfaceswithstandardqueryoperators.mmap - - ) } { - $version = "v3.0" - } - {$_ -in @( - ,'id:kX2lV54A50EAAAAAAAAfQg,1d68481c2c2e' # 2013-01-26 06:55:21 (v4.0) - .\v4.0\michaelisextractedwordfiles-4.0.zip - #'id:2Nj6yporhyoAAAAAACB3cA,28e1481c2c2e' # 2012-09-07T23:19:44Z (v4.0) - /EssentialCSharp/v5.0/Michaelis_FM.zip - #,'id:eO6XreEhyqAAAAAAAAApkA,29f5481c2c2e' # 2012-09-07 16:08:20 (v4.0) - /EssentialCSharp/v5.0/EssentialCSharpSubmitted/Michaelis_ch07.docx - )} { - $version = "v4.0" - } - {$_ -in @( - ,'id:2Nj6yporhyoAAAAAACBTxA,290481c2c2e' # 2013-01-26 12:44:02 (v6.0) - /EssentialCSharp/Preface.docx - ,'id:2Nj6yporhyoAAAAAACB2mw,28db481c2c2e' # 2014-04-21T06:15:52Z (v5.0) - /EssentialCSharp/v5.0/BookImage.png - ) } { - $version = "v5.0" - } - {$_ -in @( - ,'id:eO6XreEhyqAAAAAAAAAq5w,38e2481c2c2e' # 2016-12-21T21:11:04Z (v6.0) - /EssentialCSharp/EssentialC#.dotx - ,'id:kX2lV54A50EAAAAAAAAmTw,26b481c2c2e' # 2014-07-21T12:49:11Z (v6.0) - /EssentialCSharp/Michaelis_TableOfContents.docx - #,'id:eO6XreEhyqAAAAAAAAApqQ' # 2014-09-12T23:51:32Z (v6.0) - /EssentialCSharp/v5.0/Michaelis_ch03ab.docx - ,'id:kX2lV54A50EAAAAAAAAtNg,215481c2c2e' # 2015-03-29 08:35:25 (v6.0) - /EssentialCSharp/EssentialC#.dotx - ,'id:eO6XreEhyqAAAAAAAAAq5w' # 2016-12-21T21:11:04Z (v6.0) - /EssentialCSharp/EssentialC#.dotx - - ) } { - #$oldVersion = "v5.0" - $version = "v6.0" - } - {$_ -in @( - ,'id:eO6XreEhyqAAAAAAAAApFA,294e481c2c2e' # 2016-08-05 13:18:17 (v7.0) - /EssentialCSharp/Essential C# 7 Proposal.doc - ,'id:eO6XreEhyqAAAAAAAAApFA,294c481c2c2e' # 2016-08-05 13:18:17 (v7.0) - /EssentialCSharp/Essential C# 7 Proposal.doc - ,'id:eO6XreEhyqAAAAAAAAAq6A,38e1481c2c2e' # 2016-12-21T21:11:04Z (v7.0) - /EssentialCSharp/Essential C# 7 Proposal.doc - - ) } { # 2016-12-21T21:11:04Z () - /EssentialCSharp/Essential C# 7 Proposal.doc - $version = "v7.0" - } - { $_ -in ( - ,'id:kX2lV54A50EAAAAAAABoIg,36fb481c2c2e' # 22016-12-16 16:01:20 (v6.0 - Overwrites) - /EssentialCSharp/Michaelis_AppA.docx - )} { - $version = "v6.0-Overwrites" - } - default { - } - } - - Function Merge-GitToMain { - if(Get-CurrentGitBranch -ne "main") { - git checkout main - git merge --no-commit --no-ff "$oldVersion" --strategy=recursive - Get-ChildItem .\ * -Exclude $expectedManuscriptFiles | %{ - git reset $_ - Remove-Item $_ -Recurse -Force - } - git commit -m "Merged in material from $oldVersion" - git checkout -b $version - } - else { - Write-Warning "Already on branch main" - } - } - - if(([int]$version[1] -eq ([int]$oldVersion[1])+1) ) { - Merge-GitToMain - } - elseif(("$($entry.id),$($entry.rev)" -in @( - ,'id:kX2lV54A50EAAAAAAABoIg,i36fb481c2c2e' # 22016-12-16 16:01:20 (v6.0 - Overwrites) - /EssentialCSharp/Michaelis_AppA.docx - )) ) { - Merge-GitToMain - } - elseif($version -and ($version -ne $oldVersion)) { - git checkout $version - } - $oldVersion = $version - - #if($version -notin "","v7.0","v6.0") { continue } - - if($authorItem) { - $authorId = $authorItem.FN,$authorItem.LN -f "{0}.{1}" - $authorFullName = $authorItem.FN,$authorItem.LN -f "{0} {1}" - if (!$userInfos.ContainsKey($authorId)) { - # If we haven't seen this userId yet, make a request to get their name and email for the commit metadata. - $userInfos.Add($authorFullName, [PSCustomObject]@{ account_id=$authorId; name=@{display_name=$authorFullName}; email=$authorItem.Email }) > $null - } - } - - # Above - ################### - - # TO DO: Test - #if ([bool](git config core.ignorecase)) { - # if( (Test-Path $outFile) -and ($outFile -cne (Resolve-Path (Get-Item $outFile) -Relative)) ) { - # git mv (Resolve-Path $outFile).Path $outFile -f - # } - #} - - - if(![bool]$WhatIfPreference){ - ################################### - # Below - - if(!(Test-Path (Split-Path $outFile))) { - New-Item -ItemType Directory -Path (Split-Path $outFile) > $null - } - #Copy-Item ("C:\Temp\EssentialCSharpDropboxFileHistory\$($entry.id)$($entry.rev)").Replace("id:","") $outFile - - try { - if(!(Test-Path "c:\temp\essentialcsharpdropboxfilehistory\$($entry.id),$($entry.rev)".Replace("id:",""))) { - invoke-dropboxapidownload -path "rev:$($entry.rev)" -outfile (join-path $pwd $outfile) -authtoken $authtoken - copy-item (join-path $pwd $outfile) ("c:\temp\essentialcsharpdropboxfilehistory\$($entry.id),$($entry.rev)").replace("id:","") -force - } - else { - Copy-Item ("C:\Temp\EssentialCSharpDropboxFileHistory\$($entry.id),$($entry.rev)").Replace("id:","") $outFile -Force - } - } - catch { - Copy-Item ("C:\Temp\EssentialCSharpDropboxFileHistory\$($entry.id),$($entry.rev)").Replace("id:","") $outFile -Force - } - if( ( Get-FileHash ("C:\Temp\EssentialCSharpDropboxFileHistory\$($entry.id),$($entry.rev)").Replace("id:","") ).Hash -ne ( Get-FileHash $outFile ).Hash ) { - Write-Error "The files are not the same." - } - - - Function Expand-OutFile { - [CmdletBinding()] - param( - $outFile - ) - if([IO.Path]::GetExtension($outfile) -eq '.zip' -and ($outfile -notlike "*MichaelisExtractedWordFiles*.zip*") ) { - if(("$($entry.id),$($entry.rev)" -notin ( - ,'id:2Nj6yporhyoAAAAAACB3cA,28e1481c2c2e' # 2012-09-07T23:19:44Z (v5.0) /EssentialCSharp/v5.0/Michaelis_FM.zip - ) ) ) { - write-host "here" - } # Handle files that need to be expanded. - expand-archive -path $outFile -FlattenPaths -OutputPath .\ -Force - Remove-Item $outFile - git status -s | ?{ ($_ -ne $outfile) -and ($_ -notlike " D *") } | %{ $_ -replace "\?\? ","" -replace " M ",""} | %{ - # Unzip an additional zip files that were embedded - Expand-OutFile $_ - } - git status -s | ?{ ($_ -ne $outfile) -and ($_ -notlike " D *") } | %{ $_ -replace "\?\? ","" -replace " M ",""} | %{ - $uncompressfile,$temp1,$temp2 = Rename-Entry $entry ".\$_" $contributors - Move-Item .\$_ $uncompressfile -Force - } } - };Expand-OutFile $outFile - # Above (uncomment line above) - ################################### - } - - - - & git add -A - - Write-Progress -Activity $Activity -Id $id -ParentId $parentId -Status "Git Add" -CurrentOperation "$(git status --short)" - - [string]$gitCommitOutput=$null - - $gitCommitMessage = ($gitCommitMessage,"Revisions made $date`: $(git status --short)".Replace('"','`' ) -join "; ").Trim(";").Trim() - if($authorId -or ($authorId=$entry[0].sharing_info.modified_by)) { # Check before setting to support future (custom) injection of Author - if (!$userInfos.ContainsKey($authorId)) { - # If we haven't seen this userId yet, make a request to get their name and email for the commit metadata. - $userInfos[$authorId] = Invoke-DropboxApiRequest -Endpoint "users/get_account" -Body @{"account_id" = "$authorId"} -AuthToken $AuthToken - } - $userInfo = $userInfos[$authorId] - } - - ################################# - # Below - - $gitCommitMessageContent = @{ 'date'=$date;'id'=$entry.id;'rev'=$entry.rev;'author'=$userInfo.name.display_name;'path_display'=$entry.path_display } | ConvertTo-Json -Compress - if($userInfo.name.display_name -like "*haley*" ) { #-or $userInfo.name.display_name -like "*andrew*") { - Write-Warning "Author is: $($userInfo.name.display_name)" - $FoundAndrewOrDan = $true - if($entry.id -eq "kX2lV54A50EAAAAAAABoJw") { - Write-Error "Ready" - } - } - elseif($FoundAndrewOrDan) { - $version = "v6.0-Overwrites" - #Merge-GitToMain - } - # Above - ################################ - - Function Git-Commit { - [Cmdletbinding(SupportsShouldProcess=$true)] - param() - $gitParameters = @( - "commit", "-m",$gitCommitMessage,"-m",$gitCommitMessageContent,"--date","`"$date`"" - ) - ##################### - # Below - $gitCommitMessageFileName = [IO.Path]::GetTempFileName() - Out-File -FilePath $gitCommitMessageFileName -InputObject $gitCommitMessage -Encoding ascii - Out-File -FilePath $gitCommitMessageFileName -InputObject "`nDropbox Entry:`n$gitCommitMessageContent" -Encoding ascii -Append - $gitParameters = @( - "commit", '-F', $gitCommitMessageFileName ,"--date","`"$date`"" - ) - - # above - ############### - if($userInfo) { - $gitParameters += @("--author", "`"$($userInfo.name.display_name) <$($userInfo.email)>`"") - } - - for ($i = 0; $i -lt 5; $i++) - { - $gitCommitOutput = & git $gitParameters - - if( ($gitCommitOutput -like "*fatal: could not open*") -or - ($gitCommitOutput -like "*fatal: Unable to create * File exists.*") -or - ($gitCommitOutput -like "*fatal: Unable to write new index file*") ) { - ## On occasion files are busy and retrying generally succeeds - Start-Sleep -Seconds 5 - # Try again... - } - elseif( [string]$gitCommitOutput -like "*nothing to commit*working directory clean*" -and ($i -eq 0) -and (([IO.Path]::GetExtension($entry.path_display) -ne '.zip'))) { - invoke-dropboxapidownload -path "rev:$($entry.rev)" -outfile (join-path $pwd $outfile) -authtoken $authtoken - copy-item (join-path $pwd $outfile) ("c:\temp\essentialcsharpdropboxfilehistory\$($entry.id),$($entry.rev)").replace("id:","") -force - } - else { - break - } - } - - if( $LastExitCode -gt 0 ) { - if([string]::IsNullOrWhiteSpace( (git status --short) )) { - # There is nothing to commit, working directory clean - Write-Warning "$(git status).`n'$outFile' has possibly not changed." - } - else { - throw $gitCommitOutput - } - } - - #$gitCommitOutput = & git commit -m "$gitCommitMessage" --date $dated - Write-Progress -Activity $Activity -Id $id -ParentId $parentId -Status "Git Commit" -CurrentOperation "$gitCommitOutput" - - ############################ - # Below - Remove-item $gitCommitMessageFileName # -ErrorAction Ignore - - $transactionData = "{0}-{1}: {2,-100}{5,-30}({3})`t`t{4,-100}" -f $date,$version,$outFile,$($entry.id),$before,$($userInfo.name.display_name) - - Write-Host $transactionData - - # Above - ########################## - }; Git-Commit - } - - Function Remove-DeletedFiles { - # All file revisions commits have now been made. - # We will make on last pass through $contents and delete every file that Dropbox reports as being deleted. - # We have to do this at the end because dropbox doesn't report deletion times - only a boolean on if a file is deleted or not. - # It's not ideal, but it's what we have to work with. - foreach($entry in ($contents | ?{ $_.".tag" -eq "deleted" }) ) { - $outFile = Join-Path "." $entry.subpath_display - ######################################## - if($entry.subpath_display -like "*Figures*") { - Remove-Item $outFile -Verbose - } - ######################################## - } - - git add -A - git commit -m "All Dropbox Deletions - Dropbox does not report deletion times." - }; # Remove-DeletedFiles - - git tag dropbox-final - } - finally { - # Move our current directory back up to where we were before we started. We're done! - Set-Location $originalLocation - } -} finally {$script:progressNextIndex--;$script:progressIdStack.Remove($script:progressIdStack[-1]);Write-Progress -Activity $Activity -Id $id -Completed} -} - - - -################################ -# Below - -Function Rename-Entry { - [CmdletBinding()] - param( - $entry, - [string]$outfile, - $contributos - ) - Function Edit-FileName { - $FindAndReplace = @( - ('(?.*\.)Mindmap\.(?.*)(?\.([^\\/.]*)$)','${Start}${End}.Contents${Extension}'), #Swap where Contents appears - ("(?.*)_ch(?\d{1,2}\..*)","`${Start}_Ch`${End}"), - ("Michaelis_ch","Michaelis_Ch"), - ("(?.*)michaelis(?.*)","`${Start}Michaelis`${End}"), - ("(?.*)(?App[ABCDEF])(?\..*)","`${Start}`${Appendix}`${Extension}"), - ("(?.*)(?App[ABCDE])Michaelis(?\..*)","`${Start}`${Appendix}`${Extension}"), - ("(?.*)Chapter(?\d\d?)Michaelis(?\..*)","`${Start}Michaelis_Ch`${ChapterNumber}`${Extension}"), - ("EssentialCSharp(?\d\d?)(?\..*)","Michaelis_Ch`${ChapterNumber}`${Extension}"), - ("(?.*)Michaelis_Ch(?\d)(?\..*)","`${Start}Michaelis_Ch0`${ChapterNumber}`${Extension}"), # Change to use 0 padding on chapter number to two digits - ("(?.*)\(.*conflicted copy \d\d\d\d-\d\d-\d\d\)(?\..*)","`${Start}`${Extension}"), - ("\(v\d{1,2}\)",""), - ("Foreward","Forward"), - ("(?Michaelis_App[ABCDEF]).*(?\..*)","`${FileName}`${Extension}") - ) - $FindAndReplace | %{ $outFile = $outFile -replace $_[0],$_[1] } - Write-Output $outFile - }; - $outFile = Edit-FileName - - if ($outfile -clike "*_ch*") { - Throw "Output contains lowercase '_ch': $outFile" - } - - Function Assert-FileNameStartsWithPeriod { - if( $outFile[0] -ne '.') { - Write-Error "File name '$outFile' does not begin with a period." - } - }; Assert-FileNameStartsWithPeriod - - $AuthorFolderRegex = -join ("((?(",(($contributors | %{ "($($_.FN)\.?($($_.LN))?)" }) -join "|"),")?)(Reviews?)?\\?)?") - $authorInitialsTagRegex = -join ("(?",(($contributors | %{ "$($_.FN[0])$($_.LN[0])|$($_.FN) $($_.LN)" }) -join "|"),")") - $authorSearchTagRegex = -join ("(?",(($contributors | ?{![string]::IsNullOrWhiteSpace($_.Search)} | %{ "$($_.Search)" }) -join "|"),")") - $filePathRegex = [string]::Join("" - ,"(?\.\\" - ,"(?v\d\.0)?\\?" - ,"$AuthorFolderRegex" - ,"(?.+?)?" - ,"([\\/](?.*))?" - ,"$)"); - $fileNameRegex = [string]::Join("" - ,"(?" - ,"(?.+?)" - ,"(?([ _-]+$authorInitialsTagRegex))?([ ]*(re)+views?)?" - ,"($authorSearchTagRegex)?" - ,")" - ,"(?\.([^\\/.]*)$)") - - $outFilePath = Split-Path $outFile; - $outFileName = [IO.Path]::GetFileName($outFile) - $outFileExtension = [IO.Path]::GetExtension($outFile) - - Function Get-RegExGroupNameValue { [CmdletBinding()] param([System.Collections.Hashtable]$regExMatches, [string]$propertyName) if( $propertyName -in $regExMatches.keys) { ($regExMatches."$propertyName").Trim("\") } else { $null } } - - [string]$authorFolder=$null - [string]$rootFolder=$null - [string]$version=$null - [string]$oldRootFolder = $null - [string]$finalFileName=$null - [string]$authorFileTag=$null - [string]$remainingPath=$null - - if($outFile -match "\.\\((Contracts)|(v[345]\.0\.zip)|(.*\.docx?\.crdownload))|(\.\\v5\.0\\PFDs\.zip)|(.gitignore)") { - continue - } - if($outfile -in (".rels","[Content_Types].xml","theme1.xml","themeManager.xml","themeManager.xml.rels")) { - remove-item $outfile - } - elseif("$outFilePath\" -match $filePathRegex) { - $authorFolder = Get-RegExGroupNameValue $Matches "AuthorFolder" - $rootFolder = Get-RegExGroupNameValue $Matches "RootFolder" - $version = Get-RegExGroupNameValue $Matches "Version" - if([string]::IsNullOrWhiteSpace($version) ) { - $version = $oldVersion - } - $remainingPath = Get-RegExGroupNameValue $Matches "RemainingPath" - #$rootFolder = Split-Path $remainingPath -Parent - - } - else { - throw "Unable to parse file name: $outfile" - } - - switch ($rootFolder) - { - 'Figures' {} - 'PageProofs' {} - 'Slides' {} - 'ErrataVersions' { - Write-Warning "ErrataVersions: $outFile" - $remainingPath = '' - $rootFolder = '' - } - 'CopyEditsReviewed'{ - $gitCommitMessage = "Copy Edits Reviewed" - $rootFolder = '' - - } - 'EssentialCSharpSubmitted' { - $gitCommitMessage = "Manuscript submitted" - $rootFolder = '' - } - {$_ -in 'PDFs','PFDs','PageLayoutsReviewed'} { - $rootFolder = 'PageProofs' - - } - '' {} - Default { - } - } - $remainingPath = $remainingPath -replace "\\Backup","" - switch ($remainingPath) - { - {$_ -like '*Michaelis_Ch03.Fig05_RegionsInVS*'} { - Write-Debug "`$remainingPath=$remainingPath" - } - 'Michaelis_Ch09.Fig02_XMLCommentsAsTipsInVisualStudioIDE' {} - 'Michaelis_Ch09.Fig02_XMLCommentsAsTipsInVisualStudioIDE' {} - 'Backup' {} - '' {} - 'Feedback' { - # 2010-01-22T05:39:24Z (v3.0) id:2Nj6yporhyoAAAAAACBquA, /EssentialCSharp/v3.0/PageProofs/Feedback/Michaelis_ch15.doc - $authorFileTag = "BJ" - $remainingPath = '' - $rootFolder = '' - } - Default { - Write-Debug "`$remainingPath = $remainingPath" - } - } - - if($outFileName -match $fileNameRegex) { - $finalFileName = Get-RegExGroupNameValue $Matches "FinalFileName" - if(!$authorFileTag) { - $authorFileTag = Get-RegExGroupNameValue $Matches "AuthorFileTag" - } - $authorSearchTag = Get-RegExGroupNameValue $Matches "AuthorSearchTag" - switch ($outFileName) - { - {$_ -in '032167491X.pdf','0321533925_Michaelis_FINAL.pdf','Essential C# v4.0.pdf','MichaelisBook.pdf'} { - $finalFileName ="Essential C# $version (Final)" - $outFileExtension = ".pdf" - $outFileName = "$finalFileName$outFileExtension" - $tag = "$version - Final" - } - 'Michaelis_Ch19.CSharp3.0.docx' { - $finalFileName ="Michaelis_Ch19" - $outFileExtension = ".docx" - $outFileName = "$finalFileName$outFileExtension" - } - {$_ -like '*EssentialC*Errata*'} { - if($_ -match 'EssentialC.*(?\d).*Errata.*') { - $version = "v$($Matches.ChapterNumber).0" - $finalFileName ="Essential C# $version Errata" - } - else { - throw "Unable to match on the Errata chapter." - } - } -# {$_ -like "*Errata*" } { -# $finalFileName ="Essential C# $version Errata" -# } - 'Michaelis_FM.zip' { - Write-Warning "Michaelis_FM.zip" - } - 'BookImage.png' { - if($version -ne "v5.0") { throw "The version number on the bookimage.png is not correct."} - $rootFolder = "BookPhotos" - } - 'Indexes.pdf' { - $finalFileName ="Michaelis_Indexes" - $outFileExtension = ".pdf" - $outFileName = "$finalFileName$outFileExtension" - $rootFolder = "PageProofs" - } - 'Preface.docx' { - $finalFileName ="Michaelis_Preface" - $outFileExtension = ".docx" - $outFileName = "$finalFileName$outFileExtension" - } - 'Michaelis_MultithreadingPatternsPriorToC#5.docx' { - $finalFileName ="Michaelis_AppC" - $outFileExtension = ".docx" - $outFileName = "$finalFileName$outFileExtension" - } - 'Michaelis_ch03ab.docx' { - $finalFileName ="Michaelis_Ch03" - $outFileExtension = ".docx" - $outFileName = "$finalFileName$outFileExtension" - } - 'Michaelis_AboutIntelliTechture.docx' { - if( (test-path 'Michaelis_AboutIntelliTechture.docx') -and ($version -gt 'v3.0')) { - #git mv 'Michaelis_AboutIntelliTechture.docx' 'Michaelis_AboutIntelliTect.docx' - $finalFileName ="Michaelis_AboutIntelliTect" - $outFileExtension = ".docx" - $outFileName = "$finalFileName$outFileExtension" - } - } - } - switch($entry.id) { - 'eO6XreEhyqAAAAAAAAAq6Q' { "Essential C# Eric Lippert Comments.docx" - $authorFileTag = "EL" - } - } - } - else { - switch ($outFileName) - { - {$_ -in ' (Mark Michaelis''s conflicted copy 2016-12-20).gitignore','.gitignore',' .gitignore'} { - $finalFileName ="" - $outFileExtension = ".gitignore" - $outFileName = ".gitignore" - } - '.rels' { - } - Default { - throw "Unable to parse file name: $outfile" - - } - } - } - - $outFile = [IO.Path]::Combine(".",$rootFolder,$remainingPath, "$finalFileName$outFileExtension") - - if( ([IO.Path]::GetExtension($outFile) -eq ".docx") -and (Test-Path ([IO.Path]::ChangeExtension($outFile,".doc"))) ) { - git mv "$([IO.Path]::ChangeExtension($outFile,".doc"))" "$outFile" - } - elseif ( ([IO.Path]::GetExtension($outFile) -eq ".doc") -and (Test-Path ([IO.Path]::ChangeExtension($outFile,".docx"))) ) { - git mv "$([IO.Path]::ChangeExtension($outFile,".docx"))" "$outFile" - Write-Warning "The file extension on $([IO.Path]::ChangeExtension($outFile,".docx")) has gone back to $outFile" - } - - $authorItem=$contributors | ?{ - ($authorFolder -like "$($_.FN)*$($_.LN)") -or - ($authorFileTag -eq "$($_.FN[0])$($_.LN[0])") -or - ($authorSearchTag -eq "$($_.Search)" ) - } - - Write-Output $outfile $authorItem $version -} - - -# Above -################################ \ No newline at end of file diff --git a/Content/Test.txt b/Content/Test.txt deleted file mode 100644 index 793aa68..0000000 --- a/Content/Test.txt +++ /dev/null @@ -1 +0,0 @@ -This is a test \ No newline at end of file diff --git a/Functions.Tests/Azure.Tests.ps1 b/Functions.Tests/Azure.Tests.ps1 deleted file mode 100644 index 6b17820..0000000 --- a/Functions.Tests/Azure.Tests.ps1 +++ /dev/null @@ -1,163 +0,0 @@ -# Load the script we are going to test -$sut = $PSCommandPath.Replace('.Tests', '') -. $sut - -function CreateMocks { - Mock Get-AzureRmResourceGroup { return @{ ResourceGroupName = 'My Resource Group' } } - Mock New-AzureRmResourceGroup {} - Mock Get-AzureRmStorageAccount { return @{ - StorageAccountName = 'My Storage Account' - PrimaryEndpoints = @{ - Blob = "Blob URL" - }}} - Mock New-AzureRmStorageAccount {} - Mock Get-AzureRmVirtualNetwork { return @{ - Name = 'My Virtual Network' - Subnets = @( - @{ Id = 1 }, - @{ Id = 2 } - ) - }} - Mock New-AzureRmVirtualNetwork {} - Mock New-AzureRmVirtualNetworkSubnetConfig { - param($Name) - $ret = New-Object 'System.Collections.Generic.List[Microsoft.Azure.Commands.Network.Models.PSSubnet]' - $ret.Add(@{ Name = $Name }) - } - Mock New-AzureRmNetworkInterface { param($Name) return @{ - Id = 1 - Name = $Name - }} - Mock New-AzureRmPublicIpAddress { param($Name) return @{ - Id = 1 - Name = $Name - }} - Mock New-AzureRmVMConfig { return @{} } - Mock Set-AzureRmVMOperatingSystem { return @{} } - Mock Set-AzureRmVMSourceImage { return @{} } - Mock Add-AzureRmVMNetworkInterface { return @{} } - Mock Set-AzureRmVMOSDisk { return @{} } - Mock New-AzureRmVM {} - - Mock Test-AzureRmDnsAvailability { return $false } - - Mock Get-AzureRmNetworkSecurityGroup { return @{ Id = 1 } } - Mock New-AzureRMNetworkSecurityGroup { return @{ Id = 1 } } - Mock Add-AzureRmNetworkSecurityRuleConfig {} - Mock Set-AzureRmNetworkSecurityGroup {} -} - -Describe "New-AzureRMVirtualMachine Unit Tests" { - Context "All supporting Azure items are created new" { - CreateMocks - - $newRG = 'My New Resource Group' - $newSA = 'My New Storage Account' - $newVN = 'My New Virtual Network' - - $result = New-AzureRMVirtualMachine -ResourceGroupName $newRG -VMName 'MyNewVM' -StorageAccountName $newSA -VirtualNetworkName $newVN -ImageSku '2012-Datacenter' - - It "Creates a resource group" { - Assert-MockCalled New-AzureRmResourceGroup -Times 1 -ParameterFilter { $Name -eq $newRG } - } - - It "Creates a storage account" { - Assert-MockCalled New-AzureRmStorageAccount -Times 1 -ParameterFilter { $Name -eq $newSA } - } - - It "Creates a virtual network" { - Assert-MockCalled New-AzureRmVirtualNetwork -Times 1 -ParameterFilter { $Name -eq $newVN } - } - - It "Creates a public IP" { - Assert-MockCalled New-AzureRmPublicIpAddress -Times 1 - } - - It "Creates a network interface" { - Assert-MockCalled New-AzureRmNetworkInterface -Times 1 - } - - It "Succeeds with valid parameters" { - $result.Success | Should Be $true - } - } - - Context "All supporting Azure items already exist" { - CreateMocks - - $newRG = 'My Resource Group' - $newSA = 'My Storage Account' - $newVN = 'My Virtual Network' - $newDomain = 'existingdomain' - - $result = New-AzureRMVirtualMachine -ResourceGroupName $newRG -VMName 'My New VM' -StorageAccountName $newSA -VirtualNetworkName $newVN -DomainNameLabel $newDomain -ImageSku '2012-Datacenter' - - It "Fails when an existing domain name label is provided" { - $result.Success | Should Be $false - } - - $result = New-AzureRMVirtualMachine -ResourceGroupName $newRG -VMName 'My New VM' -StorageAccountName $newSA -ImageSku '2012-Datacenter' - - It "Does not create a resource group" { - Assert-MockCalled New-AzureRmResourceGroup -Times 0 -ParameterFilter { $Name -eq $newRG } - } - - It "Does not create a storage account" { - Assert-MockCalled New-AzureRmStorageAccount -Times 0 -ParameterFilter { $Name -eq $newSA } - } - - It "Does not create a virtual network" { - Assert-MockCalled New-AzureRmVirtualNetwork -Times 0 -ParameterFilter { $Name -eq $newVN } - } - - It "Succeeds with valid parameters" { - $result.Success | Should Be $true - } - } -} - -$functionalTest = @{ - ResourceGroupName = "danhaleyvm2" - VMName = "danhaley2" - ImageSku = "2012-Datacenter" - StorageAccountName = "" - VMLocation = "West US" - StorageAccountType = "Standard_LRS" - DomainNameLabel = "" - VirtualNetworkName = "" - VMSize = "Standard_DS1_v2" - AdminCredentials = (New-Object PSCredential("vmadmin", ("P@ssword1!" | ConvertTo-SecureString -AsPlainText -Force))) -} - -Describe "New-AzureRMVirtualMachine Functional Test" { - Context "Functional test" { - if ($functionalTest.ResourceGroupName -eq "") - { - Write-Information -MessageData "Test is inconclusive" -InformationAction Continue - Set-TestInconclusive "Functional test to create a VM has not been run. Specify resource group, VM name, and image SKU to run functional test." - } - else - { - Write-Information -MessageData "Creating a VM - this will take some time" -InformationAction Continue - $result = New-AzureRMVirtualMachine ` - -ResourceGroupName $functionalTest.ResourceGroupName ` - -VMName $functionalTest.VMName ` - -StorageAccountName $functionalTest.StorageAccountName ` - -ImageSku $functionalTest.ImageSku ` - -VMLocation $functionalTest.VMLocation ` - -StorageAccountType $functionalTest.StorageAccountType ` - -DomainNameLabel $functionalTest.DomainNameLabel ` - -VirtualNetworkName $functionalTest.VirtualNetworkName ` - -VMSize $functionalTest.VMSize ` - -AdminCredentials $functionalTest.AdminCredentials - - It "Creates a VM on Azure" { - $result.Success | Should Be $true - } - - Write-Information -MessageData "Removing test resource group" -InformationAction Continue - Remove-AzureRmResourceGroup -Name $functionalTest.ResourceGroupName -Force - } - } -} - diff --git a/Functions.Tests/Clear-Temp.Tests.ps1 b/Functions.Tests/Clear-Temp.Tests.ps1 deleted file mode 100644 index c4e83df..0000000 Binary files a/Functions.Tests/Clear-Temp.Tests.ps1 and /dev/null differ diff --git a/Functions.Tests/ConvertFrom-LabelColonValue.Tests.ps1 b/Functions.Tests/ConvertFrom-LabelColonValue.Tests.ps1 deleted file mode 100644 index 24d4602..0000000 --- a/Functions.Tests/ConvertFrom-LabelColonValue.Tests.ps1 +++ /dev/null @@ -1,55 +0,0 @@ -$here = $PSScriptRoot -$sut = $PSCommandPath.Replace(".Tests", "") -. $sut - -function DebugBreak{} -function Debug{ - Set-PSBreakpoint -command DebugBreak - DebugBreak -} - -Describe "ConvertFrom-LabelColonValue" { - It "Parse basic labelColonValue 1"{ - $labelColonValue = @" - Local information: - Local path : C:\data\SCC\SPUNK\IntelliTect.VS.com\2\SPIdeation\DEV\PSDefault - Server path: $/SPIdeation/DEV/PSDefault - Changeset : 2842 - Change : none - Type : folder - Server information: - Server path : $/SPIdeation/DEV/PSDefault - Changeset : 2842 - Deletion ID : 0 - Lock : none - Lock owner : - Last modified: Friday, December 6, 2013 7:33:51 AM - Type : folder -"@ - $result = ConvertFrom-LabelColonValue($labelColonValue) - $result.Changeset | Should Be 2842 - } - - It "Parse basic labelColonValue 2" { - $labelColonValue = @" - Local information: - Local path : C:\Data\SCC\SPUNK\IntelliTect.VS.com\2\SPIdeation\DEV\PSDefault\Functions\New-NugetPackage.ps1 - Server path: $/SPIdeation/DEV/PSDefault/Functions/New-NugetPackage.ps1 - Changeset : 3783 - Change : edit - Type : file - Server information: - Server path : $/SPIdeation/DEV/PSDefault/Functions/New-NugetPackage.ps1 - Changeset : 3783 - Deletion ID : 0 - Lock : none - Lock owner : - Last modified: Friday, January 24, 2014 8:34:12 AM - Type : file - File type : Windows-1252 - Size : 3528 -"@ - $result = ConvertFrom-LabelColonValue($labelColonValue) - $result.Changeset | Should Be 3783 - } -} \ No newline at end of file diff --git a/Functions.Tests/File_ISE.Tests.ps1 b/Functions.Tests/File_ISE.Tests.ps1 deleted file mode 100644 index 6eca04c..0000000 --- a/Functions.Tests/File_ISE.Tests.ps1 +++ /dev/null @@ -1,84 +0,0 @@ -if(!(Test-Path variable:\psise)) { Return; } - -$here = $PSScriptRoot -$sut = $PSCommandPath.Replace(".Tests", "") -. $sut - -function DebugBreak{} -function Debug{ - Set-PSBreakpoint -command DebugBreak - DebugBreak -} - - -Function OpenTempFile() { - $tempFile = [IO.Path]::GetTempFileName() - if(!(Test-Path $tempFile)) { New-Item $tempFile -ItemType File} - Start-Process (get-command powershell_ise.exe).Path -Wait $tempFile #Use start to ensure it is synchronous for testing purposes. - $openedTempFile = ($psISE.CurrentPowerShellTab.Files | ?{ $_.FullPath -eq $tempFile }) - $openedTempFile.FullPath | Should Be $tempFile > $null # Ensure no extra data is written to the output. - return $tempFile -} - -Describe "Open-File" { - It "Open a temp file" { - $tempFile = [IO.Path]::GetTempFileName() - Open-File $tempFile - $openedTempFile = ($psISE.CurrentPowerShellTab.Files | ?{ $_.FullPath -eq $tempFile }) - $openedTempFile.FullPath | Should Be $tempFile - Close-File $openedTempFile.FullPath - } - It "Open a temp file from pipeline" { - $tempFile = [IO.Path]::GetTempFileName() - Move-Item $tempFile "$tempFile.ps1" - $tempFile = "$tempFile.ps1" - $tempFile | Open-File - $openedTempFile = ($psISE.CurrentPowerShellTab.Files | ?{ $_.FullPath -eq $tempFile }) - $openedTempFile.FullPath | Should Be $tempFile - Close-File $openedTempFile.FullPath - } - - It "Open a vsvars Batch File" { - #Opening vsvars32.bat was failing so a test was created - $vsvarsbat = join-path (Get-Item "env:vs*comntools" | select -last 1).Value "vsvars32.bat" - $vsvarsbat | Open-File - $openedTempFile = ($psISE.CurrentPowerShellTab.Files | ?{ $_.FullPath -eq $vsvarsbat }) - $openedTempFile.FullPath | Should Be $vsvarsbat - Close-File $openedTempFile.FullPath - } -} - - - -Describe "Close-File" { - It "Close a file passed as a parameter" { - try { - $tempFile = OpenTempFile - Close-File $tempFile - @($psISE.CurrentPowerShellTab.Files | ?{ $_.FullPath -eq $tempFile }).Count | Should Be 0 - } - finally { - Remove-Item $tempFile - } - } - It "Close a file passed on the pipeline" { - try { - $tempFile = OpenTempFile - $tempFile | Close-File - @($psISE.CurrentPowerShellTab.Files | ?{ $_.FullPath -eq $tempFile }).Count | Should Be 0 - } - finally { - Remove-Item $tempFile - } - } - It "Close multiple files passed on the pipeline" { - try { - $tempFiles = (OpenTempFile),(OpenTempFile),(OpenTempFile) - $tempFiles | Close-File - @($psISE.CurrentPowerShellTab.Files | ?{ $tempFiles -contains $_.FullPath }).Count | Should Be 0 - } - finally { - $tempFiles | Remove-Item - } - } -} \ No newline at end of file diff --git a/Functions.Tests/Get-TfInfo.Tests.ps1 b/Functions.Tests/Get-TfInfo.Tests.ps1 deleted file mode 100644 index fec912f..0000000 --- a/Functions.Tests/Get-TfInfo.Tests.ps1 +++ /dev/null @@ -1,37 +0,0 @@ -$here = $PSScriptRoot -$sut = $PSCommandPath.Replace(".Tests", "") -. $sut - -function DebugBreak{} -function Debug{ - Set-PSBreakpoint -command DebugBreak - DebugBreak -} - -Describe "Get-TfInfo" { - It "Get TfInfo Tfs File"{ - try { - Get-TfInfo $sut - } - catch { - #Debug - If($_.exception.Message -contains "Team Foundation services are not available from server") { - Write-Warning "Inconclusive: TFS Server unavailable." - } - } - } - It "Get TfInfo on a path that does not exist"{ - try { - Get-TfInfo "None existent item" - } - catch { - $exception=$_.exception - } - #Debug; - If($exception.Message -contains "Team Foundation services are not available from server") { - Write-Warning "Inconclusive: TFS Server unavailable." - } else { - $exception.Message | Should Be "Cannot find item in TFS" - } - } -} \ No newline at end of file diff --git a/Functions.Tests/HostsFileEntry.Tests.ps1 b/Functions.Tests/HostsFileEntry.Tests.ps1 deleted file mode 100644 index e3a764a..0000000 --- a/Functions.Tests/HostsFileEntry.Tests.ps1 +++ /dev/null @@ -1,104 +0,0 @@ -$sut = $PSCommandPath.Replace(".Tests", "") -. $sut - -Describe "New-HostsFileEntry" { - It "Parse Normal line" { - $result = New-HostsFileEntry "127.0.0.1`ttemp.local"; - $result.IPAddress | Should Be "127.0.0.1" - $result.DnsName | Should Be "temp.local" - $result.Comment | Should Be "" # ToDo: Why is this not $null? - $result.IsCommentedOut | Should Be $false - } - It "Parse Commented out entry line" { - $result = New-HostsFileEntry "#127.0.0.1`ttemp.local"; - $result.IPAddress | Should Be "127.0.0.1" - $result.DnsName | Should Be "temp.local" - $result.Comment | Should Be "" # ToDo: Why is this not $null? - $result.IsCommentedOut | Should Be $true - } - It "Parse entry with trailing comment" { - $result = New-HostsFileEntry "127.0.0.1`ttemp.local # Comment"; - $result.IPAddress | Should Be "127.0.0.1" - $result.DnsName | Should Be "temp.local" - $result.Comment | Should Be "Comment" # ToDo: Why is this not $null? - $result.IsCommentedOut | Should Be $false - } - It "Parse blank line" { - New-HostsFileEntry "" | Should Be $null - } - It "Parse null" { - New-HostsFileEntry $null | Should Be $null - } - It "Parse whitespace" { - New-HostsFileEntry "`t" | Should Be $null - } -} - - -Describe "Get-HostsFileEntry" { - Context "Using a fake HOSTS file" { - $mockHostsFilePath = [IO.Path]::GetTempFileName(); - Get-Content (Get-HostsFilePath) | Select -First 100 | Set-Content $mockHostsFilePath - Mock Get-HostsFilePath { return $mockHostsFilePath; } - Add-HostsFileEntry "127.0.0.1" "localhost" - It "Find an existing entry using IP address" { - $result = Get-HostsFileEntry 127.0.0.1 | select -First 1 - $result.IPAddress | Should Be 127.0.0.1 - $result.DnsName | Should Be "localhost" - $result.ToString() | Should Be "localhost(127.0.0.1)" - } - It "Find an existing entry using DNS Name" { - $result = Get-HostsFileEntry localhost | select -First 1 - $result.IPAddress | Should Be 127.0.0.1 - $result.DnsName | Should Be "localhost" - $result.ToString() | Should Be "localhost(127.0.0.1)" - } - It "Verify There is no entry" { - $result = Get-HostsFileEntry "NoSuchEntry.local" - $result | Should Be $null - } - } -} - - -Describe "Add-HostFileEntry" { - Context "Using a fake HOSTS file" { - $mockHostsFilePath = [IO.Path]::GetTempFileName(); - Get-Content (Get-HostsFilePath) | Select -First 100 | Set-Content $mockHostsFilePath - Mock Get-HostsFilePath { return $mockHostsFilePath; } - - It "Entry already added" { - $result = Add-HostsFileEntry "127.0.0.1" "localhost" $true -confirm:$false - $result | Should Be $null - } - It "Add new entry" { - Add-HostsFileEntry "10.99.99.99" "nowhere1.local" $true -confirm:$false - [IntelliTect.Net.HostsFileEntry] $result = Get-HostsFileEntry "nowhere1.local" - $result | Should Not Be $null - $result.IPAddress | Should Be "10.99.99.99" - $result.DnsName | Should Be "nowhere1.local" - } - It "Add new entry with PassThru" { - [IntelliTect.Net.HostsFileEntry] $result = Add-HostsFileEntry "10.99.99.99" "nowhere.local" -PassThru - $result | Should Not Be $null - $result.IPAddress | Should Be "10.99.99.99" - $result.DnsName | Should Be "nowhere.local" - } - #TODO: Test -confirm - } -} - -Describe "Remove-HostsFileEntry" { - Context "Using a fake HOSTS file" { - $mockHostsFilePath = [IO.Path]::GetTempFileName(); - Get-Content (Get-HostsFilePath) | Select -First 100 | Set-Content $mockHostsFilePath - Mock Get-HostsFilePath { return $mockHostsFilePath; } - Add-HostsFileEntry "10.99.99.99" "nowhere.local" $true -confirm:$false - It "Remove existing entry" { - Get-HostsFileEntry "nowhere.local" | Should Not Be $null - Remove-HostsFileEntry -DnsName "nowhere.local" - Get-HostsFileEntry "nowhere.local" | Should Be $null - } - #ToDo: Test -confirm - } -} \ No newline at end of file diff --git a/Functions.Tests/IMG_2452.CR2 b/Functions.Tests/IMG_2452.CR2 deleted file mode 100644 index fd78883..0000000 Binary files a/Functions.Tests/IMG_2452.CR2 and /dev/null differ diff --git a/Functions.Tests/IMG_2456.CR2 b/Functions.Tests/IMG_2456.CR2 deleted file mode 100644 index 1bb7ae9..0000000 Binary files a/Functions.Tests/IMG_2456.CR2 and /dev/null differ diff --git a/Functions.Tests/Import-VisualStudioVars.Tests.ps1 b/Functions.Tests/Import-VisualStudioVars.Tests.ps1 deleted file mode 100644 index 68dd99e..0000000 --- a/Functions.Tests/Import-VisualStudioVars.Tests.ps1 +++ /dev/null @@ -1,177 +0,0 @@ -$sut = $PSCommandPath.Replace(".Tests", "") -. $sut - -#ToDO: These should be imported from PSCX... for some reason that fails to happen. -#Function Push-EnvironmentBlock() {} -Function Invoke-BatchFile([string]$Path, [string]$Parameters) {} - -function DebugBreak{} -function Debug{ - Set-PSBreakpoint -command DebugBreak - DebugBreak -} - -Describe "Import-VisualStudioVars" { - $expected = $null; - $installed = $false; - Mock Push-EnvironmentBlock {} - - Context "Mock out the call" { - - It "Test 2008 Not Installed" { - Mock Test-Path { $false } - $existingVariable = $Env:VS90COMNTOOLS - $Env:VS90COMNTOOLS = "TEST_VARIABLE" - Try - { - Import-VisualStudioVars "2008" - } - Catch - { - $_ | Should Be "Visual Studio 2008 is not installed or the expected environment variable is not found." - } - Finally - { - $Env:VS90COMNTOOLS = $existingVariable - } - Assert-VerifiableMocks - } - - It "Test 2008 Installed" { - $existingVariable = $Env:VS90COMNTOOLS - Try - { - $Env:VS90COMNTOOLS = "TEST_VARIABLE" - Mock Test-Path { $true } - Mock Invoke-BatchFile { ($Path.EndsWith("vcvarsall.bat") -and $Path.Contains("TEST_VARIABLE")) | Should be $true } -Verifiable - Import-VisualStudioVars "2008" - } - Catch [System.Exception] - { - Write-Host $_.Exception.Message - } - Finally - { - $Env:VS90COMNTOOLS = $existingVariable - } - Assert-VerifiableMocks - } - - It "Test 2010 Not Installed" { - Mock Test-Path { $false } - $existingVariable = $Env:VS100COMNTOOLS - $Env:VS100COMNTOOLS = "TEST_VARIABLE" - Try - { - Import-VisualStudioVars "2010" - } - Catch - { - $_ | Should Be "Visual Studio 2010 is not installed or the expected environment variable is not found." - } - Finally - { - $Env:VS100COMNTOOLS = $existingVariable - } - Assert-VerifiableMocks - } - - #It "Test 2010 Installed" { - # $existingVariable = $Env:VS100COMNTOOLS - # Try - # { - # $Env:VS100COMNTOOLS = "TEST_VARIABLE" - # Mock Test-Path { $true } - # Mock Invoke-BatchFile { ($Path.EndsWith("vcvarsall.bat") -and $Path.Contains("TEST_VARIABLE")) | Should be $true } -Verifiable - # Import-VisualStudioVars "2010" - # } - # Catch [System.Exception] - # { - # Write-Host $_.Exception.Message - # } - # Finally - # { - # $Env:VS100COMNTOOLS = $existingVariable - # } - # Assert-VerifiableMocks - #} - - It "Test 2012 Not Installed" { - Mock Test-Path { $false } - $existingVariable = $Env:VS110COMNTOOLS - $Env:VS110COMNTOOLS = "TEST_VARIABLE" - Try - { - Import-VisualStudioVars "2012" - } - Catch - { - $_ | Should Be "Visual Studio 2012 is not installed or the expected environment variable is not found." - } - Finally - { - $Env:VS110COMNTOOLS = $existingVariable - } - Assert-VerifiableMocks - } - - It "Test 2012 Installed" { - $existingVariable = $Env:VS110COMNTOOLS - Try - { - $Env:VS110COMNTOOLS = "TEST_VARIABLE" - Mock Test-Path { $true } - Mock Invoke-BatchFile { ($Path.EndsWith("vcvarsall.bat") -and $Path.Contains("TEST_VARIABLE")) | Should be $true } -Verifiable - Import-VisualStudioVars "2012" - } - Catch [System.Exception] - { - Write-Host $_.Exception.Message - } - Finally - { - $Env:VS110COMNTOOLS = $existingVariable - } - Assert-VerifiableMocks - } - - It "Test 2013 Not Installed" { - Mock Test-Path { $false } - $existingVariable = $Env:VS120COMNTOOLS - $Env:VS120COMNTOOLS = "TEST_VARIABLE" - Try - { - Import-VisualStudioVars "2013" - } - Catch - { - $_ | Should Be "Visual Studio 2013 is not installed or the expected environment variable is not found." - } - Finally - { - $Env:VS120COMNTOOLS = $existingVariable - } - Assert-VerifiableMocks - } - - #It "Test 2013 Installed" { - # $existingVariable = $Env:VS120COMNTOOLS - # Try - # { - # $Env:VS120COMNTOOLS = "TEST_VARIABLE" - # Mock Test-Path { $true } - # Mock Invoke-BatchFile { ($Path.EndsWith("vcvarsall.bat") -and $Path.Contains("TEST_VARIABLE")) | Should be $true } -Verifiable - # Import-VisualStudioVars "2013" - # } - # Catch [System.Exception] - # { - # Write-Host $_.Exception.Message - # } - # Finally - # { - # $Env:VS120COMNTOOLS = $existingVariable - # } - # Assert-VerifiableMocks - #} - } -} \ No newline at end of file diff --git a/Functions.Tests/Invoke-ActionWhenFileChanges.Tests.ps1 b/Functions.Tests/Invoke-ActionWhenFileChanges.Tests.ps1 deleted file mode 100644 index ef894a7..0000000 --- a/Functions.Tests/Invoke-ActionWhenFileChanges.Tests.ps1 +++ /dev/null @@ -1,35 +0,0 @@ - -Import-Module -Name $PSScriptRoot\..\Modules\IntelliTect.Common - -Function Set-FileTime -{ - Param ( - [Parameter(mandatory=$true)] - [string[]]$path, - [datetime]$date = (Get-Date)) - - Get-ChildItem -Path $path | - ForEach-Object { - $_.LastAccessTime = $date - $_.LastWriteTime = $date - } -} - -Describe 'Invoke-ActionWhenFileChanges' { - It 'Touch file fires event' { - $sampleFile = Get-TempFile - Register-AutoDispose $sampleFile { - - $script:isCalled = $false - $aScript = { $script:isCalled = $true } - & $aScript - - $ev = Invoke-ActionWhenFileChanges $sampleFile { $block } - - Start-Sleep -Seconds 1 - Set-FileTime $sampleFile - $script:isCalled | Should Be $true - $ev.StopJob() - } - } -} diff --git a/Functions.Tests/MicrosoftWindows.Tests.ps1 b/Functions.Tests/MicrosoftWindows.Tests.ps1 deleted file mode 100644 index 7f2f3bb..0000000 --- a/Functions.Tests/MicrosoftWindows.Tests.ps1 +++ /dev/null @@ -1,39 +0,0 @@ -$sut = ($PSCommandPath).Replace(".Tests", "") -. $sut - -Describe "Get-Program" { - Function Mock-GetCimInstance { - return [PSCustomObject]@{ Version = "6.3.9600";ProductType = "1"} - } - try { - $os = Get-CimInstance "Win32_OperatingSystem" - if("$($os.Version + "-" + $os.ProductType)" -ne "6.3.9600-1") { - Mock Get-CimInstance { return Mock-GetCimInstance } - } - } - catch { - Mock Get-CimInstance { return Mock-GetCimInstance } - } - - - It "Windows 8.1" { - Get-WindowsVersionName | Should Be "Windows 8.1" - } - - $os=Get-WmiObject Win32_OperatingSystem - if("$($os.Version + "-" + $os.ProductType)" -ne "6.1.7601-1") { - Mock Get-CimInstance { - #Run unknonwn command - Unknown-Command - } - Mock Get-WmiObject { - return [PSCustomObject]@{ - Version = "6.1.7601" - ProductType = "1" - } - } - } - It "Windows 7" { - Get-WindowsVersionName | Should Be "Windows 7" - } -} \ No newline at end of file diff --git a/Functions.Tests/New-NugetPackage.Tests.ps1 b/Functions.Tests/New-NugetPackage.Tests.ps1 deleted file mode 100644 index 671b2db..0000000 --- a/Functions.Tests/New-NugetPackage.Tests.ps1 +++ /dev/null @@ -1,48 +0,0 @@ -$here = $PSScriptRoot -$sut = $PSCommandPath.Replace(".Tests", "") -. $sut - -function DebugBreak{} -function Debug{ - Set-PSBreakpoint -command DebugBreak - DebugBreak -} - -Describe "New-NugetPackage" { - It "Places all content into Content directory and only Install.ps1 (or ChocolateInstall.ps1) into Tools directory. Not sure what goes in the root?" { - throw "Correct file layout in NuGet package not implemented yet." - } - - It "Create Nuget package using the defaults" { - $tempPath = Join-Path ([IO.Path]::GetTempPath()) "NewNugetPackage.Tests"; - If(Test-Path $tempPath) { - Get-ChildItem $tempPath -Recurse | Remove-Item - } - else { - New-Item $tempPath -ItemType Directory - } - - #Setup for Nuget - Nuget spec -verbosity detailed - [xml] $nugetSpecContent = [XML] (Get-Content ".\package.nuspec") - $extractedPath = (Join-Path $tempPath "extracted") - $nugetSpecContent.package.metadata.dependencies.InnerText = "" - Set-Content -Value $nugetSpecContent.InnerXml -Path ".\package.nuspec" - - # Debug - Move-Item ".\package.nuspec" $tempPath - Copy-Item $PSCommandPath $tempPath - - New-NugetPackage -inputDirectory $tempPath -outputDirectory $tempPath - try { - nuget install Package -outputdirectory $extractedPath -source $tempPath -noninteractive - [IO.FileInfo[]]$extractedFiles = Get-ChildItem $tempPath -Recurse -File - $extractedFiles.Count | should Be 5 - $extractedPath = Join-Path $extractedPath ("{0}.{1}" -f $nugetSpecContent.package.metadata.id,$nugetSpecContent.package.metadata.version) - $extractedFiles.FullName -contains (Join-Path $extractedPath "temp.ps1") | Should Be True - } - finally { - Remove-item "$tempPath" -recurse - } - } -} \ No newline at end of file diff --git a/Functions.Tests/PSScript.Tests.ps1 b/Functions.Tests/PSScript.Tests.ps1 deleted file mode 100644 index ff6001c..0000000 Binary files a/Functions.Tests/PSScript.Tests.ps1 and /dev/null differ diff --git a/Functions.Tests/Photo.Tests.ps1 b/Functions.Tests/Photo.Tests.ps1 deleted file mode 100644 index cbdd14a..0000000 --- a/Functions.Tests/Photo.Tests.ps1 +++ /dev/null @@ -1,132 +0,0 @@ -$here = Split-Path -Parent $MyInvocation.MyCommand.Path -$sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path).Replace(".Tests.", ".") -#dir "$ChocolateyInstall\lib\Pester*" Pester.psm1 -Recurse | Select-Object -Last 1 | Import-Module -. "$here\$sut" - -#TODO: -# Move the sample files into a zip file so there aren't so many files. -#Fix Pester Import-Module line above - - -function DebugBreak{} -function Debug{ - Set-PSBreakpoint -command DebugBreak - DebugBreak -} - -Describe "GetSubDirectoryWithDateTimePath" { - - It "Verify the correct path, given the DateTimeOriginal, is calculated" { - [IO.FileInfo]$sampleFile = (dir "$here\PhotoLibrary.dll")[0] - $result = GetSubDirectoryWithDateTimePath -file $sampleFile - $result | should be "2012\05"; - } - - It "Verify the correct path, given the DateTimeOriginal of a photo - passed as a file, is calculated" { - [IO.FileInfo]$sampleFile = (dir "$here\copy-photo.NikonD70.IMG_SamplePhoto1.jpg")[0] - $result = GetSubDirectoryWithDateTimePath -file $sampleFile - $result | should be "2013\08"; - } - It "Verify the correct path, given the DateTimeOriginal of a photo, is calculated" { - [Photolibrary.Photo]$photo = new-object photolibrary.photo("$here\copy-photo.NikonD70.IMG_SamplePhoto1.jpg") - $result = GetSubDirectoryWithDateTimePath -photo $photo - $result | should be "2005\11"; - } -} - -Describe "GetFileNameWithCameraTag" { - It "Verify the correct path, given the DateTimeOriginal of a photo, is calculated" { - [Photolibrary.Photo]$photo = new-object photolibrary.photo("$here\copy-photo.NikonD70.IMG_SamplePhoto1.jpg") - $result = GetFileNameWithCameraTag $photo - $result | Should Be "copy-photo.NikonD70.NikonD70_SamplePhoto1.jpg"; - } - It "Verify the correct path, given the DateTimeOriginal of a photo, is calculated using file" { - [IO.FileInfo]$file = new-object IO.FileInfo("$here\copy-photo.NikonD70.IMG_SamplePhoto1.jpg") - $result = GetFileNameWithCameraTag -file $file - $result | Should Be "copy-photo.NikonD70.NikonD70_SamplePhoto1.jpg"; - } -} - -function SetupMultipleSamplePhotos([string][string]$photoSource, [int] $sampleFileCount) { - [void] (mkdir $photoSource); - for ($i = 1; $i -ile $sampleFileCount; $i++) { - copy "$here\copy-photo.NikonD70.IMG_SamplePhoto1.jpg" (Join-Path "$photoSource" "copy-photo.NikonD70.IMG_SamplePhoto$i.jpg"); - } - @(dir $photoSource).Length | should be $sampleFileCount -} - -Describe "CopyPhoto" { - [string]$photoSource = "TestDrive:\PhotoSource\" - [string]$photoTarget = "TestDrive:\PhotoTarget\" - - Context "When there is only one photo" { - SetupMultipleSamplePhotos $photoSource 1 - - It "Copy the photo to a subdirectory with the name prefix based on the camera model w/-WhatIf" { - CopyPhoto $photoSource $photoTarget -whatif - Join-Path "$photoTarget\2005\11" "copy-photo.NikonD70.NikonD70_SamplePhoto1.jpg" | Should Not Exist - } - It "Copy the photo to a subdirectory with the name prefix based on the camera model" { - CopyPhoto $photoSource $photoTarget - Join-Path "$photoTarget\2005\11" "copy-photo.NikonD70.NikonD70_SamplePhoto1.jpg" | Should Exist - } - } - - Context "When there are multiple photos via pipeline" { - SetupMultipleSamplePhotos $photoSource 2 - - It "Copy one photo to a subdirectory with the name prefix based on the camera model w\-WhatIf" { - dir "$photoSource" | CopyPhoto -toRootDirectory $photoTarget -whatif; - Join-Path "$photoTarget" "2005\11\copy-photo.NikonD70.NikonD70_SamplePhoto1.jpg" | Should Not Exist - Join-Path "$photoTarget" "2005\11\copy-photo.NikonD70.NikonD70_SamplePhoto2.jpg" | Should Not Exist - } - It "Copy one photo to a subdirectory with the name prefix based on the camera model" { - dir "$photoSource" | CopyPhoto -toRootDirectory $photoTarget; - Join-Path "$photoTarget" "2005\11\copy-photo.NikonD70.NikonD70_SamplePhoto1.jpg" | Should Exist - Join-Path "$photoTarget" "2005\11\copy-photo.NikonD70.NikonD70_SamplePhoto2.jpg" | Should Exist - } - } - - Context "Using fromDirectory parameter with multiple photos" { - SetupMultipleSamplePhotos $photoSource 2 - - It "Copy one photo to a subdirectory with the name prefix based on the camera model" { - (dir $photoSource).Length | should be 2 - CopyPhoto -fromDirectory $photoSource -toRootDirectory $photoTarget; - Join-Path "$photoTarget" "2005\11\copy-photo.NikonD70.NikonD70_SamplePhoto1.jpg" | Should Exist - Join-Path "$photoTarget" "2005\11\copy-photo.NikonD70.NikonD70_SamplePhoto2.jpg" | Should Exist - } - } - - Context "Using fromDirectory parameter with multiple photos and -whatif" { - SetupMultipleSamplePhotos $photoSource 2 - - It "Copy one photo to a subdirectory with the name prefix based on the camera model" { - (dir $photoSource).Length | should be 2 - CopyPhoto -fromDirectory $photoSource -toRootDirectory $photoTarget -whatif; - Join-Path "$photoTarget" "2005\11\copy-photo.NikonD70.NikonD70_SamplePhoto1.jpg" | Should Not Exist - Join-Path "$photoTarget" "2005\11\copy-photo.NikonD70.NikonD70_SamplePhoto2.jpg" | Should Not Exist - } - } -} - -Describe "copy-photos.ps1" { - [string]$photoSource = "TestDrive:\PhotoSource\"; - [string]$photoTarget = "TestDrive:\PhotoTarget\"; - - Context "Using fromDirectory parameter with multiple photos" { - SetupMultipleSamplePhotos $photoSource 2 - - It "Copy one photo to a subdirectory with the name prefix based on the camera model" { - & "$here\copy-photo.ps1" $photoSource $photoTarget -whatif - Join-Path "$photoTarget" "2005\11\copy-photo.NikonD70.NikonD70_SamplePhoto1.jpg" | Should Not Exist - Join-Path "$photoTarget" "2005\11\copy-photo.NikonD70.NikonD70_SamplePhoto2.jpg" | Should Not Exist - } - It "Copy one photo to a subdirectory with the name prefix based on the camera model" { - & "$here\copy-photo.ps1" $photoSource $photoTarget - Join-Path "$photoTarget" "2005\11\copy-photo.NikonD70.NikonD70_SamplePhoto1.jpg" | Should Exist - Join-Path "$photoTarget" "2005\11\copy-photo.NikonD70.NikonD70_SamplePhoto2.jpg" | Should Exist - } - } - -} \ No newline at end of file diff --git a/Functions.Tests/PowerShellScripting.Tests.ps1 b/Functions.Tests/PowerShellScripting.Tests.ps1 deleted file mode 100644 index e69de29..0000000 diff --git a/Functions.Tests/Program.Tests.ps1 b/Functions.Tests/Program.Tests.ps1 deleted file mode 100644 index 8476c0f..0000000 --- a/Functions.Tests/Program.Tests.ps1 +++ /dev/null @@ -1,215 +0,0 @@ - -$sut = ($PSCommandPath).Replace(".Tests", "") -. $sut -$mockUninstallCommand = "c:\Windows\System32\robocopy.exe $(Split-Path $sut) `"$tempFile`" $(Split-Path $sut -Leaf)" - -Describe "Get-Program" { - $programFilter = "Microsoft *" - if(!($global:ProgramPS1_programListFromWmi)) { - Write-Host "`tGet list of installed programs via WMI (to verify Get-Program functionality against)..." - $global:ProgramPS1_programListFromWmi = Get-ProgramUsingWmi $programFilter # use global and cache as this function takes a long time to run - } - - It "Find first Microsoft program with exact match" { - - $expectedProgram = $global:ProgramPS1_programListFromWmi | - Select-Object -first 1 -ExpandProperty Name - - $actual = Get-Program $expectedProgram - - $actual.DisplayName | Should Be $expectedProgram - } - It "Find all Microsoft Programs" { - $expectedNames = ( $global:ProgramPS1_programListFromWmi).Name - - $actual = Get-Program $programFilter - - ($actual.Count -ge $expectedNames.Count) | Should Be $true # The registry approach could quite possibly return more items. TODO - Investigate - } -} - -Describe "Split-CommandLine" { - Function Test-SplitCommandLine([string]$exePath, [string]$arguments) { - $result = Split-CommandLine "$exePath $arguments" -Debug - $result.ExePath | Should Be $exePath - If(![string]::IsNullOrWhiteSpace($arguments)) {$result.Arguments.Trim() | Should Be $arguments} - } - - It "A variety of explicit command lines" { - Test-SplitCommandLine "C:\Program Files (x86)\NortonInstaller\{0C55C096-0F1D-4F28-AAA2-85EF591126E7}\NIS\A5E82D02\20.5.0.28\InstStub.exe" "/X /ARP" - Test-SplitCommandLine "C:\Program Files (x86)\NortonInstaller\{0C55C096-0F1D-4F28-AAA2-85EF591126E7}\NIS\A5E82D02\20.5.0.28\InstStub.exe" "-X -ARP" - Test-SplitCommandLine "`"C:\Program Files (x86)\NortonInstaller\{0C55C096-0F1D-4F28-AAA2-85EF591126E7}\NIS\A5E82D02\20.5.0.28\InstStub.exe`"" "-X -ARP" - Test-SplitCommandLine "`'C:\Program Files (x86)\NortonInstaller\{0C55C096-0F1D-4F28-AAA2-85EF591126E7}\NIS\A5E82D02\20.5.0.28\InstStub.exe`'" "-X -ARP" - } - - It "Command line with no arguments" { - Test-SplitCommandLine "C:\Program Files (x86)\NortonInstaller\{0C55C096-0F1D-4F28-AAA2-85EF591126E7}\NIS\A5E82D02\20.5.0.28\InstStub.exe" "" - } - - It "Split-CommandLine with rundll32.exe" { - Test-SplitCommandLine "rundll32.exe" "C:\PROGRA~1\DIFX\048B92BA3327CEF8\DIFxAppA.dll, DIFxARPUninstallDriverPackage C:\WINDOWS\System32\DriverStore\FileRepository\grmnusb.inf_amd64_d77b1dda68556870\grmnusb.inf" - - } - - Function Test-SplitCommandLineWithMsiExec() { - get-program | ?{ $_.UninstallString -and !($_.UninstallString -like "MsiExec*") } | Select-Object -ExpandProperty uninstallstring | - %{ - $result = (Split-CommandLine $_); - $exePath = $result.ExePath.Trim(); - $arguments = if($result.Arguments){$result.Arguments.Trim()} - $parsedCommandLine = ($exePath,$arguments -join " ").Trim() - #Using replace " /" below to handle the one case (OneDrive), where there are two spaces before the arguments. - if($parsedCommandLine -ne $_.Trim().Replace(" /", " /") ) { - #Compare-Object "`"$parsedCommandLine`'" "`'$_`'" - "$parsedCommandLine" | Should Be $_ - } - } - } - - It "Test all uninstall strings on the computer for successful parsing" { - Test-SplitCommandLineWithMsiExec - } -} - -Describe "Uninstall-Program" { - Context "Mock Invoke-Uninstall" { - Mock Invoke-Uninstall { - $uninstallString = $args[0] - Write-Verbose "Invoke-Expression $uninstallString" - } - It "Mock uninstall the first program" { - $Program = Get-Program "Microsoft Office Professional *" | Select -First 1 - Uninstall-Program $Program.Name - - Assert-MockCalled Invoke-Uninstall - } - } - Context "Invalid uninstall requests" { - It "Given an invalid type an exception will be thrown" { - { Uninstall-Program ([PSCustomObject] 1) } | Should Throw - } - It "Given non-existent program an error will be thrown" { - { Uninstall-Program "does not exist" } | Should Throw - } - } - Context "Mock Registry Setting for Windirstat" { - $tempFile = [io.path]::GetTempFileName() - Mock Get-Program { - if(Test-Path $tempFile) { - # It could possibly exist because the same temp file is used throughout. - Remove-Item $tempFile -Recurse - } - # Swapped 'C:\Program Files (x86)\WinDirStat\Uninstall.exe - $registryCsv = @" -#TYPE System.Management.Automation.PSCustomObject -"UninstallString","InstallLocation","DisplayName","DisplayIcon","dwVersionMajor","dwVersionMinor","dwVersionRev","dwVersionBuild","URLInfoAbout","NoModify","NoRepair","PSPath","PSParentPath","PSChildName","PSDrive","PSProvider" -"""C:\Program Files (x86)\WinDirStat\Uninstall.exe""","C:\Program Files (x86)\WinDirStat","WinDirStat 1.1.2","C:\Program Files (x86)\WinDirStat\windirstat.exe,0","1","1","2","79","http://windirstat.info/","1","1","Microsoft.PowerShell.Core\Registry::HKEY_CURRENT_USER\Software -\Microsoft\Windows\CurrentVersion\Uninstall\WinDirStat","Microsoft.PowerShell.Core\Registry::HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Uninstall","WinDirStat","HKCU","Microsoft.PowerShell.Core\Registry" -"@ - $mockUninstallCommand = "c:\Windows\System32\robocopy.exe $(Split-Path $sut) `"$tempFile`" $(Split-Path $sut -Leaf)" - $regEntries = ($registryCsv | ConvertFrom-Csv)[0] - $regEntries.UninstallString = $mockUninstallCommand - return $regEntries - } - It "Mock Uninstall Command" { - Uninstall-Program "WinDirStat" - - Test-Path $tempFile | Should Be $True - Remove-Item $tempFile -Recurse - } - It "Mock Uninstall Command using Pipeline" { - Get-Program "WinDirStat" | Uninstall-Program - - Test-Path $tempFile | Should Be $True - Remove-Item $tempFile -Recurse - } - } - Context "Mock Registry Setting for Norton Internet Security" { - - $tempFile = [io.path]::GetTempFileName() - Mock Get-Program { - # Swapped 'C:\Program Files (x86)\WinDirStat\Uninstall.exe - $registryCsv = @" -#TYPE Selected.System.Management.Automation.PSCustomObject -"InstallLocation","UninstallString","DisplayIcon","VersionMajor","VersionMinor","DisplayVersion","InstallDate","URLInfoAbout","DisplayName","Publisher","InstallSource","InstallFileName","PSPath","PSParentPath","PSChildName","PSProvider","Name" -"C:\Program Files (x86)\Norton Internet Security","C:\Program Files (x86)\NortonInstaller\{0C55C096-0F1D-4F28-AAA2-85EF591126E7}\NIS\A5E82D02\20.5.0.28\InstStub.exe /X /ARP","C:\Program Files (x86)\NortonInstaller\{0C55C096-0F1D-4F28-AAA2-85EF591126E7}\NIS\A5E82D02\20.5.0.28\InstStub.exe,0","20","5","20.5.0.28","20140201","http://www.symantec.com/techsupp/","Norton Internet Security","Symantec Corporation","C:\Users\Administrator\AppData\Local\Temp\7zS8C38.tmp\","C:\Users\Administrator\AppData\Local\Temp\7zS8C38.tmp\Setup.exe","Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\NIS","Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall","NIS","Microsoft.PowerShell.Core\Registry","Norton Internet Security" -"@ - - $regEntries = ($registryCsv | ConvertFrom-Csv)[0] - $regEntries.UninstallString = $mockUninstallCommand - return $regEntries - }#> - It "Mock Uninstall Command using Pipeline" { - Get-Program "Norton Internet Security" | Uninstall-Program - - Test-Path $tempFile | Should Be $True - Remove-Item $tempFile -Recurse - } - } - -} - - -Describe "Get-FileAssociation" { - It "Get-FileAssociation for .txt" { - $result = Get-FileAssociation ".txt" - $result.Name | Should Be "Text Document" - $result.FileType | Should Be "txtfile" - $result.Extension | Should Be ".txt" - $result.Command | Should Be "%SystemRoot%\system32\NOTEPAD.EXE %1" - } - It "Get-FileAssociation for txt (no '.' prefix)" { - $result = Get-FileAssociation "txt" - $result.Name | Should Be "Text Document" - $result.FileType | Should Be "txtfile" - $result.Extension | Should Be ".txt" - $result.Command | Should Be "%SystemRoot%\system32\NOTEPAD.EXE %1" - } - - It "Get-FileAssociation with missing extension errors out" { - {Get-FileAssociation ".MissingExtension" } | Should Throw - } - - It "Get-FileAssociation with missing extension and -ErrorAction Ignore won't error out" { - Get-FileAssociation ".MissingExtension" -ErrorAction Ignore - } - - - if(((Get-Random) % 3) -eq 0) { - It "Get-FileAssociation t*" { - $result = Get-FileAssociation "t*" - $result.Count -gt 1 | Should Be $true # Presumably there are more than two extensions that start with t* - } - } - else { Write-Host -ForegroundColor Gray "[+] Ignoring long running test, 'Get-FileAssociation t*', as it is only executed occasionally" } - - if(((Get-Random) % 9) -eq 0) { - Write-Host "Executing long running test...." - It "Get-FileAssociation for all entries" { - #Only run occasionally since it is so slow - - $result = Get-FileAssociation - $result.Count -gt 100 | Should Be $true # Presumably there are more than 100 extensions registered. - } - } - else { Write-Host -ForegroundColor Gray "[+] Ignoring long running test, 'Get-FileAssociation for all entries', as it is only executed occasionally" } -} - - - - - - <# Mock Get-ProgramRegistryKeys { - $windirStatRegistryCsv = @" -#TYPE System.Management.Automation.PSCustomObject -"UninstallString","InstallLocation","DisplayName","DisplayIcon","dwVersionMajor","dwVersionMinor","dwVersionRev","dwVersionBuild","URLInfoAbout","NoModify","NoRepair","PSPath","PSParentPath","PSChildName","PSDrive","PSProvider" -"""C:\Program Files (x86)\WinDirStat\Uninstall.exe""","C:\Program Files (x86)\WinDirStat","WinDirStat 1.1.2","C:\Program Files (x86)\WinDirStat\windirstat.exe,0","1","1","2","79","http://windirstat.info/","1","1","Microsoft.PowerShell.Core\Registry::HKEY_CURRENT_USER\Software -\Microsoft\Windows\CurrentVersion\Uninstall\WinDirStat","Microsoft.PowerShell.Core\Registry::HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Uninstall","WinDirStat","HKCU","Microsoft.PowerShell.Core\Registry" -"@ - $regEntries = ($windirStatRegistryCsv | ConvertFrom-Csv)[0] - New-Item -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Uninstall\MockWinDirStat" - foreach( $item in $regEntries.psobject.Properties) { - Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Uninstall\MockWinDirStat" -Name $item.Name -Value $item.Value - } - return "HKCU:\Software\Microsoft\Windows\CurrentVersion\Uninstall\MockWinDirStat" - } #> \ No newline at end of file diff --git a/Functions.Tests/Reflection.Tests.ps1 b/Functions.Tests/Reflection.Tests.ps1 deleted file mode 100644 index ffed7d5..0000000 --- a/Functions.Tests/Reflection.Tests.ps1 +++ /dev/null @@ -1,21 +0,0 @@ -$here = $PSScriptRoot -$sut = $PSCommandPath.Replace(".Tests", "") -. $sut - - -Describe "Test-IsStaticType" { - It "Test-IsStaticType" { - Test-IsStaticType ([System.Console]) | Should Be $true - } -} - -Describe "Get-ReflectionExtensionMemebers" { - It "For System.Linq.Enumerable" { - $extensionMEmbers = Get-ReflectionExtensionMemebers ([System.Linq.Enumerable]) - ($extensionMEmbers | select -ExpandProperty Name) -contains "Where" | Should Be $true - } - It "For System.Console" { - $extensionMEmbers = Get-ReflectionExtensionMemebers ([System.Console]) - $extensionMEmbers | Should Be $null - } -} diff --git a/Functions.Tests/TCX.Tests.ps1 b/Functions.Tests/TCX.Tests.ps1 deleted file mode 100644 index b679bf2..0000000 --- a/Functions.Tests/TCX.Tests.ps1 +++ /dev/null @@ -1,40 +0,0 @@ -$here = $PSScriptRoot -$sut = $PSCommandPath.Replace(".Tests", "") -. $sut - -Describe "Get-TcxFile" { - It "Get the distance from activity_521153787.tcx" { - [Xml]$tcxContent = Get-Content "$here\activity_521153787.tcx" - $result = Get-TcxDistance $tcxContent - $result | Should Be 140292.953125 - } -} - -Describe "Get-TcxLap" { - It "Get laps from activity_521153787.tcx" { - #Why is "-path" requried explicitly? - $laps = Get-TcxLap -path "$here\activity_521153787.tcx" - $laps.Count | Should Be 87 - } - It "Get laps from activity_521153787.tcx using -xml" { - #Why is "-path" requried explicitly? - [Xml]$xml = Get-Content "$here\activity_521153787.tcx" - $laps = Get-TcxLap -xml $xml - $laps.Count | Should Be 87 - } - <# It "Provide an invalid path" { - #TODO: Correct so error is caught - Get-TcxLap -path "$here\DoeNotExist.tcx" -ErrorVariable $err -ErrorAction SilentlyContinue - } - #> -} - -Describe "Join-TcxFile" { - It "Join activity_521153787.tcx and activity_521169279.tcx" { - $firstLapElementCount = (Get-TcxLap -path "$here\activity_521153787.tcx").Count - $secondLapElementCount = (Get-TcxLap -path "$here\activity_521169279.tcx").Count - [Xml]$result = Join-TcxFile "$here\activity_521153787.tcx" "$here\activity_521169279.tcx" - $resultLapElementCount = (Get-TcxLap -xml $result).Count - $resultLapElementCount | Should Be 88 - } -} \ No newline at end of file diff --git a/Functions.Tests/TFS.Tests.ps1 b/Functions.Tests/TFS.Tests.ps1 deleted file mode 100644 index b547604..0000000 --- a/Functions.Tests/TFS.Tests.ps1 +++ /dev/null @@ -1,73 +0,0 @@ -#Invoke-Pester C:\data\scc\W540\IntelliTect.vs.com\1\SPIdeation\DEV\PSDefault\Functions.Tests\TFS.Tests.ps1 "Export/Import" - -$here = $PSScriptRoot -$sut = $PSCommandPath.Replace(".Tests", "") -. $sut - -Import-Module -Name $PSScriptRoot\..\Modules\IntelliTect.CredentialManager - -$Credential = Get-CredentialManagerCredential "IntelliTect.VisualStudio.com" - -Describe "Get-TfsQuery" { - It "Get List" { - $results = Get-TfsQuery -collection "https://IntelliTect.visualstudio.com/defaultcollection" $Credential -Project "Hagadone" - $queryNames = $results | Select -ExpandProperty name - Write-Host $queryNames - $queryNames -contains "Current Sprint" | Should Be $true - } - It "Get 'Current Sprint' query" { - $result = Get-TfsQuery "https://IntelliTect.visualstudio.com/defaultcollection" $Credential -Project "Hagadone" -Filter "Current Sprint" - $result.name | Should Be "Current Sprint" - } -} - -Describe "Get-TfsWorkItemId" { - It "Get All Id" { - [int[]] $ids = Get-TfsWorkItemId "https://IntelliTect.visualstudio.com/defaultcollection" $Credential -Project "Hagadone" - $ids.Count -gt 0 | Should Be $true - Write-Host $ids - } -} - -Describe "Get-TfsWorkItem" { - It "Get one work item" { - $result = Get-TfsWorkItem "https://IntelliTect.visualstudio.com/defaultcollection" $Credential -Project "Hagadone" -workItemIds 5000 - $result.fields[0].field.name | Should Be "ID" - $result.fields[0].value | Should Be 5000 - } -} - -Describe "Export/Import" { - It "Export" { - $query = Get-TfsQuery "https://IntelliTect.visualstudio.com/defaultcollection" $Credential -Project "Hagadone" -Filter "ProductBacklogItems for Export" - Write-Host $query - $query.name | Should Be "ProductBacklogItems for Export" - [int[]]$workItemIds = Get-TfsWorkItemId "https://IntelliTect.visualstudio.com/defaultcollection" $Credential -Project "Hagadone" -QueryId "b9143c52-c560-413b-9c25-a67e6bf03e99" - $workItems = Get-TfsWorkItem "https://IntelliTect.visualstudio.com/defaultcollection" $Credential -Project "Hagadone" -workItemIds $workItemIds ` - -fields System.Title,Microsoft.Vsts.Common.BacklogPriority,System.State,System.Description,System.WorkItemType,System.AreaPath,System.IterationPath,Microsoft.VSTS.Common.AcceptanceCriteria,Microsoft.VSTS.Scheduling.Effort - #$hagadoneCredential = Get-CredentialManagerCredential.ps1 "Hagadone.VisualStudio.com" - foreach($workItem in $workItems) { - try { - for($counter=0;$counter -lt $workItem.fields.count-1;$counter++) { - if($workItem.fields[$counter].field.refName -in "System.IterationPath") { - $workItem.fields[$counter].value = $workItem.fields[$counter].value -replace "Hagadone\Sprint","Hagadone\Release 1\Sprint" - } - } - $ignore = ($workItem.fields | ?{ $_.field.refName -in "System.State" } | Select -ExpandProperty value) -eq "Removed" - if(!$ignore) { - $newWorkItem = New-TfsWorkItem "https://Hagadone.visualstudio.com/defaultcollection" "Ticketing" $Credential $workItem - Write-Host $newWorkItem - } - } - catch [System.ArgumentException] { - if($_.Exception.Message -like "Work item * already exists*") { - Write-Warning $_.Exception.Message - } - else { - Throw - } - } - } - } -} - diff --git a/Functions.Tests/ToDo.Tests.ps1 b/Functions.Tests/ToDo.Tests.ps1 deleted file mode 100644 index a2b2ac4..0000000 --- a/Functions.Tests/ToDo.Tests.ps1 +++ /dev/null @@ -1,15 +0,0 @@ - - -Describe "Assignment of specific type and cast create different results" { - $hashTable = @{ A = "a"; B = "b" } - It "Assignment without cast to a specific type is different from cast to a non-specific type" { - [PSCustomObject]$first = $hashTable - $second = [PSCustomObject]$hashTable - $first | Should Be $second - } - It "Assignment with cast to a specific type is different from cast to a non-specific type" { - [PSCustomObject]$first = [PSCustomObject]$hashTable - $second = [PSCustomObject]$hashTable - $first | should be $second - } -} \ No newline at end of file diff --git a/Functions.Tests/VSProject.Tests.ps1 b/Functions.Tests/VSProject.Tests.ps1 deleted file mode 100644 index 8e1f030..0000000 --- a/Functions.Tests/VSProject.Tests.ps1 +++ /dev/null @@ -1,96 +0,0 @@ -$here = $PSScriptRoot -$sut = $PSCommandPath.Replace(".Tests", "") -. $sut - -$solutionText = @" -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 14 -VisualStudioVersion = 14.0.22609.0 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{061EA5FD-627D-419B-8ECC-65964F44F6BD}" - ProjectSection(SolutionItems) = preProject - global.json = global.json - NuGet.config = NuGet.config - EndProjectSection -EndProject -Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "SampleProject", "SampleProject\SampleProject.kproj", "{BFBD99B3-00A2-4592-BBE2-CCE9A210F449}" -EndProject -Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "SampleProject.Tests", "SampleProject.Tests\SampleProject.Tests.kproj", "{2C083CB4-B524-49CA-B04C-4B28D18DFA83}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {BFBD99B3-00A2-4592-BBE2-CCE9A210F449}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {BFBD99B3-00A2-4592-BBE2-CCE9A210F449}.Debug|Any CPU.Build.0 = Debug|Any CPU - {BFBD99B3-00A2-4592-BBE2-CCE9A210F449}.Release|Any CPU.ActiveCfg = Release|Any CPU - {BFBD99B3-00A2-4592-BBE2-CCE9A210F449}.Release|Any CPU.Build.0 = Release|Any CPU - {2C083CB4-B524-49CA-B04C-4B28D18DFA83}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {2C083CB4-B524-49CA-B04C-4B28D18DFA83}.Debug|Any CPU.Build.0 = Debug|Any CPU - {2C083CB4-B524-49CA-B04C-4B28D18DFA83}.Release|Any CPU.ActiveCfg = Release|Any CPU - {2C083CB4-B524-49CA-B04C-4B28D18DFA83}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal -"@ - -Function New-TempProjectFile() { - $tempProjectFile = [IO.Path]::GetTempFileName() - Remove-Item $tempProjectFile - $tempProjectFile = $tempProjectFile -replace "-","" -replace [IO.Path]::GetExtension($tempProjectFile),"" - New-Item -ItemType Directory $tempProjectFile > $null - $result = New-Item -ItemType File "$tempProjectFile\$([IO.Path]::GetFileNameWithoutExtension($tempProjectFile)).Proj" - return [IO.FileInfo]$result -} - - -Describe "Rename-Project" { - It "Rename a project file" { - [IO.FileInfo]$tempProjectFile = $null - [IO.FileInfo]$newProjectFile = $null - try { - $tempProjectFile = New-TempProjectFile - $newProjectFile = Rename-VSProject $tempProjectFile.FullName "New$($tempProjectFile.BaseName)" - (Test-Path $tempProjectFile) | should be $false - (Test-Path $newProjectFile) | should be $true - } - finally { - Remove-Item (split-path $tempProjectfile -Parent) -Recurse -ErrorAction Ignore - Remove-Item (split-path $newProjectfile -Parent) -Recurse # -ErrorAction Ignore - } - } - - Context "Get-Content Mock" { - Mock "Get-Content" { - return $solutionText - } - Mock "Set-Content" { - [Paramater(Mandatory, ValueFromPipeline)][string]$line, - [switch]$PassThru - return $line - } - It "Update solution file" { - [IO.FileInfo]$tempProjectFile = $tempProjectFile = New-TempProjectFile - [string]$solutionFilePath = "somepath" - - $newSolutionText = Update-VSSolution $solutionFilePath $tempProjectFile.FullName "UpdatedProjectName" - $oldProjectName = $tempProjectFile.BaseName - $newSolutionText | should be $solutionText -replace "`"$oldProjectName`"",'"UpdatedProjectName"' ` - -replace "$oldProjectName\\$oldProjectName",'UpdatedProjectName\UpdatedProjectName' - $newSolutionText.Contains('"UpdatedProjectName"') | should be $true - $newSolutionText.Contains("UpdatedProjectName\UpdatedProjectName") | should be $true - $newSolutionText.Contains("`"$oldProjectName`"") | should be $false - $newSolutionText.Contains("$oldProjectName.Tests") | should be $true - $newSolutionText.Contains("$oldProjectName.Tests\$oldProjectName.Tests") | should be $true - } - } -} - -Function Create-SolutionFile { - Set-Content -Path $ - -} \ No newline at end of file diff --git a/Functions.Tests/WindowsSearchIndex.Tests.ps1 b/Functions.Tests/WindowsSearchIndex.Tests.ps1 deleted file mode 100644 index b75cedb..0000000 --- a/Functions.Tests/WindowsSearchIndex.Tests.ps1 +++ /dev/null @@ -1,38 +0,0 @@ -$here = $PSScriptRoot -$sut = $PSCommandPath.Replace(".Tests", "") -. $sut - -Describe "Get-WindowsSearchIndexDirectory" { - It "List all items" { - $results = Get-WindowsSearchIndexDirectory | Select -ExpandProperty PatternOrURL - $results -contains "file:///C:\Users\" | Should Be $true - } - It "List file:///C:\Users\ item" { - $results = Get-WindowsSearchIndexDirectory "file:///C:\Users\" | Select -ExpandProperty PatternOrURL - $results.Count | Should Be 1 - } - It "List where path is `"C:\Users\`" item" { - $results = Get-WindowsSearchIndexDirectory "C:\Users\" | Select -ExpandProperty PatternOrURL - $results.Count | Should Be 1 - } - It "List where path is `"C:\Windows*\`" item" { - $results = Get-WindowsSearchIndexDirectory "C:\Windows*\" | Select -ExpandProperty PatternOrURL - $results.Count | Should Be 2 - } -} - -Describe "New-WindowsSearchIndexDirectory and Remove-WindowsSearchIndexDirectory" { - It "Add Item C:\PerfLogs" { - New-WindowsSearchIndexDirectory "C:\Perflogs\" - try { - $results = Get-WindowsSearchIndexDirectory | Select -ExpandProperty PatternOrURL - $results -contains "file:///C:\Perflogs\" | Should Be $true - } - finally { - Remove-WindowsSearchIndexDirectory "C:\Perflogs\" - } - # Verify remove succeeded. - $results = Get-WindowsSearchIndexDirectory | Select -ExpandProperty PatternOrURL - $results -contains "file:///C:\Perflogs\" | Should Be $false - } -} \ No newline at end of file diff --git a/Functions.Tests/__Colorizer.Tests.ps1.__ b/Functions.Tests/__Colorizer.Tests.ps1.__ deleted file mode 100644 index 41b246b..0000000 --- a/Functions.Tests/__Colorizer.Tests.ps1.__ +++ /dev/null @@ -1,14 +0,0 @@ -$here = $PSScriptRoot -$sut = $PSCommandPath.Replace(".Tests", "") -. $sut - -Describe "Get-DirWithSize" { - It "is an array of FileInfo" { - $target = Get-DirWithSize "TestDrive:" - $target | %{ $_.GetType().Name | Should Be "FileInfo"} - } - - - - -} \ No newline at end of file diff --git a/Functions.Tests/__Get-Disk.Tests.ps1.__ b/Functions.Tests/__Get-Disk.Tests.ps1.__ deleted file mode 100644 index 8c0687a..0000000 --- a/Functions.Tests/__Get-Disk.Tests.ps1.__ +++ /dev/null @@ -1,30 +0,0 @@ -$here = $PSScriptRoot -$sut = $PSCommandPath.Replace(".Tests", "") -. $sut - -Describe "Get-Disk" { - It "has a FormatStartData" { - $target = Get-Disk - $target[0].GetType().Name | Should Be "FormatStartData" - } - - It "has a GroupStartData" { - $target = Get-Disk - $target[1].GetType().Name | Should Be "GroupStartData" - } - - It "has a FormatEntryData" { - $target = Get-Disk - $target[2].GetType().Name | Should Be "FormatEntryData" - } - - It "has a GroupEndData" { - $target = Get-Disk - $target[($target.Count -2)].GetType().Name | Should Be "GroupEndData" - } - - It "has a FormatEndData" { - $target = Get-Disk - $target[($target.Count -1)].GetType().Name | Should Be "FormatEndData" - } -} \ No newline at end of file diff --git a/Functions.Tests/activity_521153787.tcx b/Functions.Tests/activity_521153787.tcx deleted file mode 100644 index 43f9b1d..0000000 --- a/Functions.Tests/activity_521153787.tcx +++ /dev/null @@ -1,49812 +0,0 @@ - - - - - 2014-06-14T20:54:56.000Z - - 205.45 - 1609.34 - 9.5051308 - 77 - - 89 - - - 101 - - Active - Manual - - - - - 47.62785689905286 - -117.21216715872288 - - 617.0 - 11.140000343322754 - - - - - 47.62784365564585 - -117.21154974773526 - - 617.0 - 57.619998931884766 - - - 6.640999794006348 - - - - - - - 47.627841057255864 - -117.21134615130723 - - 617.0 - 72.48999786376953 - - 69 - - - - 7.434000015258789 - - - - - - - 47.62783979997039 - -117.21124179661274 - - 617.0 - 80.87000274658203 - - 69 - - - - 8.383000373840332 - - - - - - - 47.627835692837834 - -117.21035926602781 - - 617.0 - 147.16000366210938 - - 72 - - - - 8.28499984741211 - - - - - - - 47.627870477735996 - -117.20942803658545 - - 617.0 - 216.69000244140625 - - 75 - - - - 8.692000389099121 - - - - - - - 47.62790744192898 - -117.20855615101755 - - 617.0 - 282.260009765625 - - 79 - - - - 9.366999626159668 - - - - - - - 47.62791205197573 - -117.20766808837652 - - 617.0 - 349.0199890136719 - - 85 - - - - 9.536999702453613 - - - - - - - 47.62791574001312 - -117.20667977817357 - - 619.0 - 423.29998779296875 - - 91 - - - - 9.28600025177002 - - - - - - - 47.6279151532799 - -117.20562843605876 - - 621.0 - 502.30999755859375 - - 91 - - - - 8.779000282287598 - - - - - - - 47.62789377942681 - -117.20518788322806 - - 621.0 - 536.010009765625 - - 97 - - - - 8.42300033569336 - - - - - - - 47.627876764163375 - -117.2045727353543 - - 621.7999877929688 - 581.7000122070312 - - 97 - - - - 7.616000175476074 - - - - - - - 47.62787056155503 - -117.20387779176235 - - 622.0 - 633.9299926757812 - - 97 - - - - 7.460999965667725 - - - - - - - 47.627879278734326 - -117.20301579684019 - - 623.0 - 698.72998046875 - - 97 - - - - 8.100000381469727 - - - - - - - 47.62788137421012 - -117.20201306976378 - - 623.0 - 774.0999755859375 - - 97 - - - - 8.37399959564209 - - - - - - - 47.62786637060344 - -117.20107186585665 - - 623.0 - 844.8400268554688 - - 97 - - - - 7.861000061035157 - - - - - - - 47.627825466915965 - -117.20050105825067 - - 623.0 - 888.1599731445312 - - - 6.188000202178956 - - - - - - - 47.62780853547156 - -117.19987526535988 - - 623.0 - 934.8800048828125 - - 95 - - - - 5.840000152587891 - - - - - - - 47.62780258432031 - -117.1991662401706 - - 623.0 - 988.219970703125 - - 94 - - - - 6.666999816894532 - - - - - - - 47.6277872454375 - -117.1984233520925 - - 624.0 - 1044.489990234375 - - 87 - - - - 7.033999919891358 - - - - - - - 47.62777945026755 - -117.197578959167 - - 624.0 - 1107.510009765625 - - 87 - - - - 7.001999855041504 - - - - - - - 47.62776805087924 - -117.19699264504015 - - 625.0 - 1151.5799560546875 - - 85 - - - - 6.296000003814697 - - - - - - - 47.62777425348759 - -117.19675074331462 - - 625.0 - 1169.77001953125 - - 84 - - - - 6.061999797821045 - - - - - - - 47.627910962328315 - -117.19654387794435 - - 625.0 - 1193.199951171875 - - 84 - - - - 5.857999801635742 - - - - - - - 47.62803543359041 - -117.19653675332665 - - 625.0 - 1207.0899658203125 - - 84 - - - - 6.946000099182129 - - - - - - - 47.628668351098895 - -117.19655016437173 - - 625.0 - 1277.449951171875 - - 84 - - - - 7.817999839782715 - - - - - - - 47.62936346232891 - -117.1965743880719 - - 625.0 - 1355.449951171875 - - 84 - - - - 8.666000366210938 - - - - - - - 47.62985598295927 - -117.19658235087991 - - 625.0 - 1409.530029296875 - - 89 - - - - 9.013999938964844 - - - - - - - 47.630185056477785 - -117.19658796675503 - - 624.5999755859375 - 1446.1400146484375 - - 95 - - - - 9.151000022888184 - - - - - - - 47.63051496818662 - -117.19659483991563 - - 624.0 - 1482.81005859375 - - 101 - - - - 9.166999816894531 - - - - - - - 47.6313172839582 - -117.19659718684852 - - 623.0 - 1571.9599609375 - - 101 - - - - 8.914999961853027 - - - - - - - 47.63143798336387 - -117.1964155510068 - - 623.0 - 1592.75 - - 101 - - - - 6.932000160217285 - - - - - - - 47.63140588067472 - -117.1962387766689 - - 623.2000122070312 - 1606.260009765625 - - 101 - - - - 6.752999782562257 - - - - - - - 47.63139917515218 - -117.19616216607392 - - 623.4000244140625 - 1612.0400390625 - - 99 - - - - 5.776999950408935 - - - - - - - 7.8332635390605985 - - - - - 345.02 - 1609.34 - 7.6992292 - 108 - - 85 - - - 98 - - Active - Manual - - - - - 47.63139917515218 - -117.19616216607392 - - 623.4000244140625 - 1612.0400390625 - - 99 - - - - - - 47.63138869777322 - -117.1958248782903 - - 624.5999755859375 - 1637.4200439453125 - - 94 - - - - 6.34499979019165 - - - - - - - 47.6313619595021 - -117.19513546675444 - - 626.5999755859375 - 1689.3199462890625 - - 92 - - - - 6.486999988555908 - - - - - - - 47.63134175911546 - -117.19481184147298 - - 626.7999877929688 - 1713.7099609375 - - 82 - - - - 6.0980000495910645 - - - - - - - 47.63133195228875 - -117.19472819007933 - - 627.0 - 1720.06005859375 - - 82 - - - - 6.349999904632568 - - - - - - - 47.63124939054251 - -117.19434564001858 - - 626.7999877929688 - 1750.2099609375 - - 82 - - - - 6.031000137329102 - - - - - - - 47.631098264828324 - -117.19387725926936 - - 627.4000244140625 - 1789.43994140625 - - 82 - - - - 6.538000106811523 - - - - - - - 47.630876479670405 - -117.19329454936087 - - 627.4000244140625 - 1839.5999755859375 - - 82 - - - - 7.164999961853027 - - - - - - - 47.63063047081232 - -117.19287268817425 - - 629.0 - 1881.6600341796875 - - 82 - - - - 7.011000156402588 - - - - - - - 47.630332661792636 - -117.19248728826642 - - 630.2000122070312 - 1925.5799560546875 - - 82 - - - - 6.274000167846681 - - - - - - - 47.630134765058756 - -117.1922361664474 - - 630.4000244140625 - 1954.5 - - 82 - - - - 4.820000171661377 - - - - - - - 47.62991935014725 - -117.19198076985776 - - 632.7999877929688 - 1985.0899658203125 - - - 3.822999954223633 - - - - - - - 47.62974106706679 - -117.19163853675127 - - 635.5999755859375 - 2017.760009765625 - - - 3.63100004196167 - - - - - - - 47.62959899380803 - -117.19129026867449 - - 637.7999877929688 - 2048.330078125 - - - 4.366000175476074 - - - - - - - 47.62946999631822 - -117.1909580938518 - - 639.0 - 2077.3798828125 - - - 4.151000022888184 - - - - - - - 47.629350051283836 - -117.19059348106384 - - 640.0 - 2107.7900390625 - - - 3.378000020980835 - - - - - - - 47.629271261394024 - -117.19035224989057 - - 640.4000244140625 - 2127.550048828125 - - - 2.8239998817443848 - - - - - - - 47.62915777042508 - -117.19015276059508 - - 642.0 - 2147.159912109375 - - - 2.8010001182556152 - - - - - - - 47.62909289449453 - -117.18991756439209 - - 643.2000122070312 - 2166.169921875 - - - 3.1679999828338623 - - - - - - - 47.629008488729596 - -117.18969896435738 - - 645.2000122070312 - 2184.8701171875 - - - 2.671999931335449 - - - - - - - 47.62887907214463 - -117.18945136293769 - - 647.4000244140625 - 2208.419921875 - - - 2.617000102996826 - - - - - - - 47.62878695502877 - -117.18920459970832 - - 648.7999877929688 - 2229.550048828125 - - - 3.0179998874664307 - - - - - - - 47.62867187149823 - -117.1889759413898 - - 651.2000122070312 - 2251.090087890625 - - - 3.5899999141693115 - - - - - - - 47.62850775383413 - -117.18875583261251 - - 653.7999877929688 - 2275.580078125 - - - 4.081999778747559 - - - - - - - 47.62839778326452 - -117.18845944851637 - - 655.2000122070312 - 2300.860107421875 - - - 3.6110000610351567 - - - - - - - 47.628249591216445 - -117.18811377882957 - - 655.5999755859375 - 2331.669921875 - - - 3.8510000705718994 - - - - - - - 47.62811975553632 - -117.18780255876482 - - 656.2000122070312 - 2359.25 - - - 3.9409999847412114 - - - - - - - 47.627996038645506 - -117.18742026016116 - - 658.4000244140625 - 2391.080078125 - - - 3.9779999256134033 - - - - - - - 47.62786586768925 - -117.18696906231344 - - 660.2000122070312 - 2427.93994140625 - - - 4.09499979019165 - - - - - - - 47.62781968340278 - -117.18672255054116 - - 661.5999755859375 - 2447.02001953125 - - - 3.815999984741211 - - - - - - - 47.62780367396772 - -117.1864720992744 - - 663.2000122070312 - 2466.52001953125 - - - 3.9010000228881836 - - - - - - - 47.62776696123183 - -117.18611536547542 - - 665.0 - 2493.60009765625 - - - 3.384999990463257 - - - - - - - 47.627733182162046 - -117.18575117178261 - - 666.5999755859375 - 2521.27001953125 - - - 3.4579999446868896 - - - - - - - 47.62776469811797 - -117.18532897531986 - - 668.7999877929688 - 2553.469970703125 - - - 3.578000068664551 - - - - - - - 47.62775715440512 - -117.18491055071354 - - 670.4000244140625 - 2584.929931640625 - - - 3.4949998855590825 - - - - - - - 47.627746760845184 - -117.18437117524445 - - 672.0 - 2625.47998046875 - - - 3.686000108718872 - - - - - - - 47.62774659320712 - -117.18381587415934 - - 673.4000244140625 - 2667.2099609375 - - - 4.63700008392334 - - - - - - - 47.62774324044585 - -117.18307474628091 - - 674.4000244140625 - 2722.93994140625 - - - 5.06599998474121 - - - - - - - 47.62774835340679 - -117.18226346187294 - - 675.7999877929688 - 2783.929931640625 - - - 5.545000076293945 - - - - - - - 47.627754053100944 - -117.18136726878583 - - 677.7999877929688 - 2851.300048828125 - - - 6.124000072479248 - - - - - - - 47.627758579328656 - -117.18054508790374 - - 679.0 - 2913.080078125 - - - 6.177999973297119 - - - - - - - 47.62776746414602 - -117.17974084429443 - - 680.0 - 2973.5400390625 - - - 6.046000003814697 - - - - - - - 47.6277959626168 - -117.17893316410482 - - 682.0 - 3034.340087890625 - - - 6.079999923706055 - - - - - - - 47.627789843827486 - -117.17813713476062 - - 683.0 - 3094.2099609375 - - - 6.6519999504089355 - - - - - - - 47.62776126153767 - -117.17736876569688 - - 684.0 - 3152.010009765625 - - - 6.422999858856202 - - - - - - - 47.627763440832496 - -117.1767704654485 - - 685.0 - 3197.0 - - - 5.623000144958496 - - - - - - - 47.62776469811797 - -117.17661556787789 - - 685.0 - 3208.6201171875 - - - 5.809999942779541 - - - - - - - 47.627766374498606 - -117.17645656317472 - - 685.2000122070312 - 3220.56005859375 - - - 5.972000122070312 - - - - - - - 4.664494794794504 - - - - - 161.68 - 1609.34 - 14.2709675 - 61 - Active - Manual - - - - - 47.627766374498606 - -117.17645656317472 - - 685.2000122070312 - 3220.56005859375 - - - - - 47.62776796706021 - -117.17593546025455 - - 685.5999755859375 - 3259.75 - - - 6.531000137329102 - - - - - - - 47.62777199037373 - -117.17534285970032 - - 684.0 - 3304.27001953125 - - - 7.419000148773193 - - - - - - - 47.62780015356839 - -117.17462344095111 - - 684.0 - 3358.3701171875 - - - 9.017999649047852 - - - - - - - 47.62785656377673 - -117.1733376570046 - - 682.0 - 3455.239990234375 - - - 9.687000274658203 - - - - - - - 47.62789327651262 - -117.17224004678428 - - 680.7999877929688 - 3537.830078125 - - - 9.175999641418457 - - - - - - - 47.62789076194167 - -117.17154066078365 - - 678.4000244140625 - 3590.4599609375 - - - 8.77299976348877 - - - - - - - 47.627885146066546 - -117.17081495560706 - - 677.7999877929688 - 3645.0400390625 - - - 9.095000267028809 - - - - - - - 47.627918254584074 - -117.16998849995434 - - 675.4000244140625 - 3707.409912109375 - - - 10.395000457763672 - - - - - - - 47.627944489941 - -117.16924946755171 - - 676.0 - 3763.080078125 - - - 11.133999824523926 - - - - - - - 47.62796586379409 - -117.16840415261686 - - 676.5999755859375 - 3826.6298828125 - - - 10.590999603271484 - - - - - - - 47.62793426401913 - -117.16782613657415 - - 677.4000244140625 - 3870.2099609375 - - - 8.717000007629395 - - - - - - - 47.627892857417464 - -117.1670878585428 - - 677.2000122070312 - 3925.8798828125 - - - 7.953000068664551 - - - - - - - 47.62789604254067 - -117.16630289331079 - - 675.0 - 3984.929931640625 - - - 8.435999870300293 - - - - - - - 47.6279151532799 - -117.16577466577291 - - 672.5999755859375 - 4024.64990234375 - - - 9.930000305175781 - - - - - - - 47.627841057255864 - -117.16479666531086 - - 670.0 - 4098.580078125 - - - 10.560999870300293 - - - - - - - 47.62777358293533 - -117.16382109560072 - - 665.2000122070312 - 4172.33984375 - - - 10.536999702453613 - - - - - - - 47.62766847386956 - -117.16301433742046 - - 660.5999755859375 - 4234.080078125 - - - 12.347999572753906 - - - - - - - 47.62754324823618 - -117.16193977743387 - - 657.5999755859375 - 4316.0 - - - 13.6540002822876 - - - - - - - 47.62734937481582 - -117.16042466461658 - - 650.4000244140625 - 4431.91015625 - - - 14.48900032043457 - - - - - - - 47.627308471128345 - -117.16007606126368 - - 649.0 - 4458.43017578125 - - - 13.255999565124512 - - - - - - - 47.62739798985422 - -117.1594653557986 - - 647.4000244140625 - 4506.7001953125 - - - 12.067999839782715 - - - - - - - 47.62754266150296 - -117.1592446602881 - - 647.7999877929688 - 4529.85986328125 - - - 11.57800006866455 - - - - - - - 47.62779403477907 - -117.15867334976792 - - 648.7999877929688 - 4583.27978515625 - - - 10.685999870300293 - - - - - - - 47.627791771665215 - -117.15853999368846 - - 648.7999877929688 - 4593.35986328125 - - - 10.07699966430664 - - - - - - - 47.62776494957507 - -117.15716636739671 - - 647.0 - 4696.56982421875 - - - 10.321000099182129 - - - - - - - 47.627755058929324 - -117.15643035247922 - - 647.5999755859375 - 4751.89013671875 - - - 9.220000267028809 - - - - - - - 47.62775279581547 - -117.15577396564186 - - 648.0 - 4801.25 - - - 8.22700023651123 - - - - - - - 47.62775497511029 - -117.1553469914943 - - 648.4000244140625 - 4833.35009765625 - - - 8.02299976348877 - - - - - - - 9.953884179242948 - - - - - 170.41 - 1609.34 - 13.663534200000003 - 63 - Active - Manual - - - - - 47.62775497511029 - -117.1553469914943 - - 648.4000244140625 - 4833.35009765625 - - - - - 47.627788837999105 - -117.15476537123322 - - 649.2000122070312 - 4877.08984375 - - - 8.74899959564209 - - - - - - - 47.62781255878508 - -117.1538651548326 - - 647.5999755859375 - 4944.7998046875 - - - 8.46399974822998 - - - - - - - 47.62782504782081 - -117.15317239053547 - - 646.0 - 4997.0 - - - 8.699000358581543 - - - - - - - 47.627818090841174 - -117.15213915333152 - - 643.5999755859375 - 5074.66015625 - - - 9.708000183105469 - - - - - - - 47.62779336422682 - -117.15111144818366 - - 639.7999877929688 - 5151.9599609375 - - - 11.043000221252441 - - - - - - - 47.62780509889126 - -117.14995097368956 - - 637.4000244140625 - 5239.16015625 - - - 12.456000328063965 - - - - - - - 47.62777735479176 - -117.14879418723285 - - 637.0 - 5326.22998046875 - - - 12.439000129699709 - - - - - - - 47.627764865756035 - -117.14775416068733 - - 631.5999755859375 - 5404.3701171875 - - - 13.02400016784668 - - - - - - - 47.627766374498606 - -117.14628347195685 - - 628.0 - 5514.97021484375 - - - 13.824000358581543 - - - - - - - 47.62777894735336 - -117.14491546154022 - - 627.0 - 5617.72021484375 - - - 12.843999862670898 - - - - - - - 47.62778523378074 - -117.14384836144745 - - 627.0 - 5697.919921875 - - - 11.456999778747559 - - - - - - - 47.627773247659206 - -117.14257506653666 - - 627.2000122070312 - 5793.66015625 - - - 10.637999534606934 - - - - - - - 47.62778556905687 - -117.14152498170733 - - 627.2000122070312 - 5872.56005859375 - - - 9.862000465393066 - - - - - - - 47.6277737505734 - -117.14076633565128 - - 630.2000122070312 - 5929.6201171875 - - - 9.510000228881836 - - - - - - - 47.62774357572198 - -117.14052988216281 - - 632.7999877929688 - 5947.72021484375 - - - 9.050999641418457 - - - - - - - 47.62756864540279 - -117.14001154527068 - - 634.7999877929688 - 5991.7099609375 - - - 8.79699993133545 - - - - - - - 47.62745523825288 - -117.1398450806737 - - 632.7999877929688 - 6009.47021484375 - - - 8.883999824523926 - - - - - - - 47.627336885780096 - -117.13969227857888 - - 630.5999755859375 - 6026.89990234375 - - - 8.71399974822998 - - - - - - - 47.62704636901617 - -117.13948599994183 - - 628.7999877929688 - 6063.0 - - - 9.02400016784668 - - - - - - - 47.626893147826195 - -117.13947485201061 - - 629.0 - 6080.0400390625 - - - 8.520999908447266 - - - - - - - 47.62640364468098 - -117.13944895192981 - - 631.2000122070312 - 6134.6201171875 - - - 7.796999931335449 - - - - - - - 47.626066859811544 - -117.13926748372614 - - 632.2000122070312 - 6174.56005859375 - - - 6.656000137329102 - - - - - - - 47.625962756574154 - -117.13920026086271 - - 632.5999755859375 - 6187.16015625 - - - 6.300000190734863 - - - - - - - 47.62582965195179 - -117.13906028307974 - - 632.5999755859375 - 6205.39013671875 - - - 6.078000068664551 - - - - - - - 47.62569428421557 - -117.13868737220764 - - 629.7999877929688 - 6237.35986328125 - - - 5.328000068664551 - - - - - - - 47.625552378594875 - -117.13830138556659 - - 630.5999755859375 - 6270.2900390625 - - - 5.48799991607666 - - - - - - - 47.625387255102396 - -117.13810575194657 - - 632.0 - 6294.259765625 - - - 5.994999885559082 - - - - - - - 47.62516085989773 - -117.13805629871786 - - 633.5999755859375 - 6320.02001953125 - - - 6.439000129699708 - - - - - - - 47.625100845471025 - -117.13807423599064 - - 634.5999755859375 - 6326.830078125 - - - 6.809000015258789 - - - - - - - 47.62450338341296 - -117.13825469836593 - - 636.2000122070312 - 6394.68017578125 - - - 7.539000034332275 - - - - - - - 47.62418679893017 - -117.13832225650549 - - 636.7999877929688 - 6430.27978515625 - - - 8.89900016784668 - - - - - - - 47.62410616502166 - -117.13831873610616 - - 637.2000122070312 - 6439.27001953125 - - - 8.98799991607666 - - - - - - - 9.443952785047825 - - - - - 212.49 - 1609.34 - 12.2579422 - 78 - Active - Manual - - - - - 47.62410616502166 - -117.13831873610616 - - 637.2000122070312 - 6439.27001953125 - - - - - 47.623793268576264 - -117.13820164091885 - - 636.5999755859375 - 6475.1298828125 - - - 8.96500015258789 - - - - - - - 47.62364306487143 - -117.1381005551666 - - 636.4000244140625 - 6493.33984375 - - - 9.107000350952148 - - - - - - - 47.623242158442736 - -117.13774256408215 - - 634.0 - 6545.35986328125 - - - 8.668999671936035 - - - - - - - 47.62296664528549 - -117.13766545057297 - - 631.5999755859375 - 6576.77978515625 - - - 7.855000019073486 - - - - - - - 47.622828762978315 - -117.1377347689122 - - 632.5999755859375 - 6592.93994140625 - - - 8.079999923706055 - - - - - - - 47.62235946021974 - -117.13797776028514 - - 633.0 - 6648.47998046875 - - - 9.256999969482422 - - - - - - - 47.622181344777346 - -117.13800818659365 - - 633.5999755859375 - 6668.41015625 - - - 9.967000007629395 - - - - - - - 47.62174808420241 - -117.13787768036127 - - 634.0 - 6717.97998046875 - - - 9.913999557495117 - - - - - - - 47.621589582413435 - -117.1377572324127 - - 634.4000244140625 - 6737.68017578125 - - - 9.845999717712402 - - - - - - - 47.62123318389058 - -117.13734056800604 - - 636.5999755859375 - 6788.35009765625 - - - 8.446000099182129 - - - - - - - 47.62104635126889 - -117.13695977814496 - - 639.7999877929688 - 6823.85986328125 - - - 7.1020002365112305 - - - - - - - 47.62096915394068 - -117.13660027831793 - - 641.5999755859375 - 6852.18017578125 - - - 5.664999961853027 - - - - - - - 47.62089103460312 - -117.13627497665584 - - 643.4000244140625 - 6878.08984375 - - - 4.316999912261963 - - - - - - - 47.6207778789103 - -117.13590005412698 - - 644.4000244140625 - 6908.93994140625 - - - 4.4070000648498535 - - - - - - - 47.620692886412144 - -117.13561506941915 - - 645.0 - 6932.31982421875 - - - 3.3410000801086426 - - - - - - - 47.62055978178978 - -117.13530988432467 - - 646.2000122070312 - 6959.7001953125 - - - 3.4230000972747803 - - - - - - - 47.62036909349263 - -117.13503998704255 - - 647.7999877929688 - 6989.10986328125 - - - 4.199999809265137 - - - - - - - 47.6200698595494 - -117.1346656512469 - - 649.0 - 7032.6201171875 - - - 6.2160000801086435 - - - - - - - 47.619765596464276 - -117.13444327935576 - - 649.2000122070312 - 7070.3701171875 - - - 6.291999816894531 - - - - - - - 47.61940165422857 - -117.13429844006896 - - 649.7999877929688 - 7112.22998046875 - - - 6.975999832153321 - - - - - - - 47.61888918466866 - -117.13414873927832 - - 650.5999755859375 - 7170.27001953125 - - - 6.448999881744385 - - - - - - - 47.61850034818053 - -117.13405855000019 - - 650.0 - 7214.02978515625 - - - 6.251999855041504 - - - - - - - 47.61802048422396 - -117.13395847007632 - - 650.5999755859375 - 7267.919921875 - - - 6.736000061035156 - - - - - - - 47.617591582238674 - -117.13386995717883 - - 651.7999877929688 - 7316.080078125 - - - 6.019000053405762 - - - - - - - 47.617175756022334 - -117.13378647342324 - - 652.0 - 7362.759765625 - - - 5.835000038146972 - - - - - - - 47.616661777719855 - -117.1337749902159 - - 651.7999877929688 - 7419.97998046875 - - - 6.357999801635743 - - - - - - - 47.61612994596362 - -117.13378915563226 - - 650.0 - 7479.1298828125 - - - 7.394000053405763 - - - - - - - 47.61567045003176 - -117.13381086476147 - - 648.0 - 7530.259765625 - - - 8.52299976348877 - - - - - - - 47.6149773504585 - -117.13383223861456 - - 644.7999877929688 - 7607.39013671875 - - - 9.640999794006348 - - - - - - - 47.614291459321976 - -117.13389317505062 - - 640.7999877929688 - 7683.7998046875 - - - 10.914999961853026 - - - - - - - 47.61375895701349 - -117.13405896909535 - - 638.5999755859375 - 7744.39990234375 - - - 12.119999885559082 - - - - - - - 47.61322167702019 - -117.13429894298315 - - 636.0 - 7806.91015625 - - - 12.501999855041506 - - - - - - - 47.61237418279052 - -117.13438066653907 - - 634.0 - 7901.3798828125 - - - 11.809000015258789 - - - - - - - 47.61217259801924 - -117.13437136262655 - - 634.0 - 7923.7998046875 - - - 11.211000442504883 - - - - - - - 47.611808655783534 - -117.13414697907865 - - 634.5999755859375 - 7968.2001953125 - - - 11.098999977111816 - - - - - - - 47.611731458455324 - -117.134052766487 - - 634.4000244140625 - 7979.330078125 - - - 11.13300037384033 - - - - - - - 47.61122636497021 - -117.13337969966233 - - 633.0 - 8054.89990234375 - - - 10.795999526977539 - - - - - - - 7.573739912937079 - - - - - 303.55 - 1609.34 - 10.928441 - 94 - Active - Manual - - - - - 47.61122636497021 - -117.13337969966233 - - 633.0 - 8054.89990234375 - - - - - 47.61108035221696 - -117.13318515568972 - - 633.2000122070312 - 8076.85009765625 - - - 10.975000381469725 - - - - - - - 47.610483560711145 - -117.1324292756617 - - 632.4000244140625 - 8164.0400390625 - - - 10.89799976348877 - - - - - - - 47.610041750594974 - -117.13200867176056 - - 632.0 - 8222.4697265625 - - - 9.73900032043457 - - - - - - - 47.609673365950584 - -117.13180884718895 - - 632.2000122070312 - 8266.2099609375 - - - 8.748000144958496 - - - - - - - 47.609286876395345 - -117.13177255354822 - - 632.2000122070312 - 8309.4697265625 - - - 8.652000427246094 - - - - - - - 47.60879066772759 - -117.1317806839943 - - 633.0 - 8364.599609375 - - - 7.875999927520752 - - - - - - - 47.60806328617036 - -117.13180339895189 - - 633.0 - 8445.490234375 - - - 7.353000164031982 - - - - - - - 47.60761016048491 - -117.13179158046842 - - 633.2000122070312 - 8495.8701171875 - - - 7.197999954223633 - - - - - - - 47.60704966261983 - -117.13179359212518 - - 634.0 - 8558.2001953125 - - - 6.926000118255615 - - - - - - - 47.60673173703253 - -117.13177238591015 - - 634.2000122070312 - 8593.6201171875 - - - 7.083000183105469 - - - - - - - 47.606373662129045 - -117.1315782610327 - - 634.4000244140625 - 8636.099609375 - - - 7.081999778747559 - - - - - - - 47.60617786087096 - -117.13125606067479 - - 635.0 - 8668.8701171875 - - - 6.552000045776367 - - - - - - - 47.60611256584525 - -117.1310290787369 - - 635.4000244140625 - 8687.3798828125 - - - 6.172999858856201 - - - - - - - 47.60594015009701 - -117.13018267415464 - - 635.5999755859375 - 8753.8798828125 - - - 6.64900016784668 - - - - - - - 47.60587359778583 - -117.12952025234699 - - 637.2000122070312 - 8804.150390625 - - - 7.182000160217285 - - - - - - - 47.605836633592844 - -117.12869664654136 - - 640.2000122070312 - 8866.009765625 - - - 6.873000144958496 - - - - - - - 47.60590779595077 - -117.12812969461083 - - 641.7999877929688 - 8909.419921875 - - - 7.236000061035157 - - - - - - - 47.60596286505461 - -117.1278848592192 - - 641.0 - 8928.599609375 - - - 6.394000053405762 - - - - - - - 47.60594115592539 - -117.12740206159651 - - 640.5999755859375 - 8965.150390625 - - - 4.567999839782715 - - - - - - - 47.605866054072976 - -117.12690945714712 - - 640.0 - 9003.0302734375 - - - 4.209000110626221 - - - - - - - 47.60578466579318 - -117.12644526734948 - - 640.5999755859375 - 9039.1298828125 - - - 6.015999794006348 - - - - - - - 47.60576128028333 - -117.12616296485066 - - 640.4000244140625 - 9060.509765625 - - - 7.126999855041505 - - - - - - - 47.605803441256285 - -117.12575216777623 - - 640.0 - 9091.91015625 - - - 7.85099983215332 - - - - - - - 47.60606738738716 - -117.12483015842736 - - 641.0 - 9167.2001953125 - - - 8.364999771118164 - - - - - - - 47.606101585552096 - -117.12474323809147 - - 642.0 - 9174.740234375 - - - 7.548999786376953 - - - - - - - 47.60630115866661 - -117.12446445599198 - - 646.2000122070312 - 9205.5400390625 - - - 6.159999847412109 - - - - - - - 47.60646225884557 - -117.12440653704107 - - 647.5999755859375 - 9224.01953125 - - - 4.61899995803833 - - - - - - - 47.606502743437886 - -117.12440486066043 - - 647.7999877929688 - 9228.5400390625 - - - 4.525000095367432 - - - - - - - 47.606917060911655 - -117.12441936135292 - - 649.4000244140625 - 9274.58984375 - - - 3.8369998931884766 - - - - - - - 47.607152592390776 - -117.12434484623373 - - 650.4000244140625 - 9301.5400390625 - - - 3.36899995803833 - - - - - - - 47.60734939947724 - -117.1241991687566 - - 652.2000122070312 - 9326.0302734375 - - - 3.499000072479248 - - - - - - - 47.60753924958408 - -117.1240508928895 - - 653.0 - 9349.9599609375 - - - 2.990999937057495 - - - - - - - 47.60772516019642 - -117.12388426065445 - - 654.2000122070312 - 9373.990234375 - - - 3.003999948501587 - - - - - - - 47.60790319181979 - -117.1236983500421 - - 655.0 - 9398.1796875 - - - 3.0230000019073486 - - - - - - - 47.6080440916121 - -117.12351277470589 - - 655.5999755859375 - 9419.1103515625 - - - 2.990999937057495 - - - - - - - 47.60818423703313 - -117.12321085855365 - - 656.7999877929688 - 9446.6201171875 - - - 3.055999994277954 - - - - - - - 47.60828448459506 - -117.122913133353 - - 658.2000122070312 - 9471.599609375 - - - 2.7760000228881836 - - - - - - - 47.60834885761142 - -117.12269076146185 - - 659.4000244140625 - 9489.7900390625 - - - 2.5989999771118164 - - - - - - - 47.60842957533896 - -117.12249588221312 - - 661.0 - 9507.240234375 - - - 2.9079999923706055 - - - - - - - 47.60855136439204 - -117.12235003709793 - - 662.2000122070312 - 9524.66015625 - - - 2.9030001163482666 - - - - - - - 47.60873727500439 - -117.12218684144318 - - 663.2000122070312 - 9548.75 - - - 3.440999984741211 - - - - - - - 47.60894606821239 - -117.12201836518943 - - 665.0 - 9575.1396484375 - - - 3.2990000247955322 - - - - - - - 47.60912066325545 - -117.12188148871064 - - 666.4000244140625 - 9597.1103515625 - - - 2.746000051498413 - - - - - - - 47.609266340732574 - -117.12176749482751 - - 667.5999755859375 - 9615.400390625 - - - 2.614000082015991 - - - - - - - 47.609401289373636 - -117.12165945209563 - - 668.7999877929688 - 9632.4501953125 - - - 2.8410000801086426 - - - - - - - 47.609588876366615 - -117.12149675935507 - - 670.5999755859375 - 9656.6298828125 - - - 3.0230000019073486 - - - - - - - 5.30174269181354 - - - - - 225.3 - 1609.34 - 13.8861217 - 75 - Active - Manual - - - - - 47.60976975783706 - -117.12135066278279 - - 672.2000122070312 - 9679.5498046875 - - - 3.2739999294281006 - - - - - - - 47.610024735331535 - -117.12115444242954 - - 674.2000122070312 - 9711.5 - - - 3.549999952316284 - - - - - - - 47.6102701574564 - -117.12091924622655 - - 675.2000122070312 - 9744.009765625 - - - 3.2509999275207524 - - - - - - - 47.61054198257625 - -117.12065496481955 - - 676.2000122070312 - 9780.1796875 - - - 3.2890000343322754 - - - - - - - 47.61069729924202 - -117.12043209001422 - - 676.7999877929688 - 9804.41015625 - - - 3.0280001163482666 - - - - - - - 47.61074926704168 - -117.1201772801578 - - 677.2000122070312 - 9824.650390625 - - - 2.8919999599456783 - - - - - - - 47.610707860440016 - -117.11986245587468 - - 677.0 - 9848.75 - - - 3.01200008392334 - - - - - - - 47.610610546544194 - -117.11957545951009 - - 676.5999755859375 - 9872.9697265625 - - - 4.843999862670898 - - - - - - - 47.610442489385605 - -117.11913725361228 - - 674.7999877929688 - 9910.9697265625 - - - 7.599999904632568 - - - - - - - 47.61037048883736 - -117.11864666081965 - - 672.2000122070312 - 9948.8095703125 - - - 9.460000038146973 - - - - - - - 47.610456151887774 - -117.1176065504551 - - 670.4000244140625 - 10027.7998046875 - - - 11.282999992370605 - - - - - - - 47.61057995259762 - -117.11690464988351 - - 671.5999755859375 - 10082.3203125 - - - 10.904999732971191 - - - - - - - 47.610595459118485 - -117.11677665822208 - - 672.0 - 10092.0498046875 - - - 9.729000091552734 - - - - - - - 47.610549945384264 - -117.11626695469022 - - 669.5999755859375 - 10131.08984375 - - - 9.758999824523926 - - - - - - - 47.61036747135222 - -117.11594886146486 - - 666.5999755859375 - 10163.0595703125 - - - 10.657999992370605 - - - - - - - 47.61006555519998 - -117.11579346098006 - - 664.5999755859375 - 10198.73046875 - - - 11.890999794006346 - - - - - - - 47.60995265096426 - -117.11577636189759 - - 663.7999877929688 - 10211.3798828125 - - - 12.651000022888184 - - - - - - - 47.60948016308248 - -117.11569036357105 - - 661.5999755859375 - 10264.26953125 - - - 13.222000122070314 - - - - - - - 47.609078669920564 - -117.1152612939477 - - 657.4000244140625 - 10321.08984375 - - - 14.204999923706056 - - - - - - - 47.60893617756665 - -117.11474128067493 - - 657.2000122070312 - 10364.099609375 - - - 14.338000297546387 - - - - - - - 47.60902318172157 - -117.1142559684813 - - 659.0 - 10401.330078125 - - - 12.409000396728516 - - - - - - - 47.60920003987849 - -117.11414457298815 - - 658.2000122070312 - 10420.240234375 - - - 9.454000473022461 - - - - - - - 47.60952517390251 - -117.11360377259552 - - 659.4000244140625 - 10474.5 - - - 7.751999855041505 - - - - - - - 47.609786689281464 - -117.11332105100155 - - 656.7999877929688 - 10510.5400390625 - - - 7.209000110626221 - - - - - - - 47.610202599316835 - -117.11302726529539 - - 653.0 - 10561.83984375 - - - 8.550000190734863 - - - - - - - 47.610603254288435 - -117.11261118762195 - - 651.5999755859375 - 10616.400390625 - - - 10.91100025177002 - - - - - - - 47.610939955338836 - -117.11212855763733 - - 650.4000244140625 - 10668.599609375 - - - 10.439000129699707 - - - - - - - 47.611087057739496 - -117.11164969950914 - - 650.7999877929688 - 10708.169921875 - - - 9.895000457763672 - - - - - - - 47.61107549071312 - -117.11112876422703 - - 652.2000122070312 - 10747.8203125 - - - 9.91100025177002 - - - - - - - 47.61104724369943 - -117.1110012754798 - - 652.5999755859375 - 10757.83984375 - - - 10.017999649047852 - - - - - - - 47.61099066585302 - -117.1106484811753 - - 652.7999877929688 - 10785.0595703125 - - - 9.076000213623047 - - - - - - - 47.6107725687325 - -117.11014145985246 - - 655.0 - 10830.3896484375 - - - 9.065999984741211 - - - - - - - 47.61049018241465 - -117.10963108576834 - - 655.0 - 10879.8603515625 - - - 9.894000053405762 - - - - - - - 47.610182985663414 - -117.10906798951328 - - 653.0 - 10934.1904296875 - - - 9.055000305175781 - - - - - - - 47.610145350918174 - -117.10897939279675 - - 652.4000244140625 - 10942.0498046875 - - - 7.855999946594238 - - - - - - - 47.61006178334355 - -117.10856666788459 - - 649.2000122070312 - 10974.4697265625 - - - 6.485000133514404 - - - - - - - 47.60995298624039 - -117.1080666873604 - - 651.4000244140625 - 11013.7900390625 - - - 6.553999900817871 - - - - - - - 47.60989054106176 - -117.10762378759682 - - 655.0 - 11047.7197265625 - - - 6.785999774932861 - - - - - - - 47.6098935585469 - -117.10725137963891 - - 653.5999755859375 - 11075.8095703125 - - - 4.682000160217285 - - - - - - - 47.60986288078129 - -117.107053399086 - - 653.4000244140625 - 11090.9697265625 - - - 5.052000045776366 - - - - - - - 47.60983773507178 - -117.10693756118417 - - 654.0 - 11100.099609375 - - - 4.565999984741211 - - - - - - - 47.609794149175286 - -117.10671636275947 - - 655.0 - 11117.240234375 - - - 4.285999774932861 - - - - - - - 47.60976338759065 - -117.1066027879715 - - 656.5999755859375 - 11126.3896484375 - - - 4.572999954223633 - - - - - - - 47.60968878865242 - -117.1062470600009 - - 659.5999755859375 - 11154.580078125 - - - 4.698999881744385 - - - - - - - 47.609648471698165 - -117.10588429123163 - - 658.4000244140625 - 11182.849609375 - - - 5.653999805450439 - - - - - - - 47.60977394878864 - -117.10567264817655 - - 658.0 - 11204.2099609375 - - - 7.119999885559083 - - - - - - - 47.60984276421368 - -117.10560064762831 - - 657.7999877929688 - 11213.6201171875 - - - 9.402999877929688 - - - - - - - 47.60997695848346 - -117.10546276532114 - - 657.7999877929688 - 11231.75 - - - 9.067999839782715 - - - - - - - 47.61025523766875 - -117.10532396100461 - - 658.0 - 11264.6201171875 - - - 8.215999603271484 - - - - - - - 47.61032656766474 - -117.1053162496537 - - 658.0 - 11272.51953125 - - - 7.902999877929688 - - - - - - - 7.143115819351975 - - - - - 572.52 - 1609.34 - 8.1749582 - 116 - Active - Manual - - - - - 47.61032656766474 - -117.1053162496537 - - 658.0 - 11272.51953125 - - - - - 47.61052245274186 - -117.10516227409244 - - 659.4000244140625 - 11298.2900390625 - - - 6.441999912261963 - - - - - - - 47.610473837703466 - -117.10496244952083 - - 659.7999877929688 - 11313.8798828125 - - - 5.197000026702881 - - - - - - - 47.61043536476791 - -117.10486446507275 - - 659.5999755859375 - 11322.3701171875 - - - 4.242000102996826 - - - - - - - 47.61038457043469 - -117.10471996106207 - - 660.0 - 11334.6396484375 - - - 4.0929999351501465 - - - - - - - 47.61034609749913 - -117.1043711900711 - - 662.0 - 11360.98046875 - - - 3.7620000839233403 - - - - - - - 47.61031759902835 - -117.10412526503205 - - 664.0 - 11379.66015625 - - - 2.668999910354614 - - - - - - - 47.6102595962584 - -117.10394228808582 - - 665.2000122070312 - 11394.6298828125 - - - 2.496000051498413 - - - - - - - 47.61019698344171 - -117.10372704081237 - - 666.7999877929688 - 11411.8603515625 - - - 2.4609999656677246 - - - - - - - 47.61011886410415 - -117.10349444299936 - - 668.2000122070312 - 11430.66015625 - - - 2.684999942779541 - - - - - - - 47.610101932659745 - -117.10328305140138 - - 669.7999877929688 - 11446.419921875 - - - 2.6270000934600826 - - - - - - - 47.61011249385774 - -117.10303268395364 - - 671.2000122070312 - 11465.23046875 - - - 2.686000108718872 - - - - - - - 47.61008114553988 - -117.102724397555 - - 673.0 - 11488.419921875 - - - 2.8989999294281 - - - - - - - 47.61005465872586 - -117.1024080645293 - - 674.4000244140625 - 11512.830078125 - - - 3.0510001182556157 - - - - - - - 47.61001484468579 - -117.10223439149559 - - 675.0 - 11526.6396484375 - - - 2.76200008392334 - - - - - - - 47.60990923270583 - -117.10204973816872 - - 675.0 - 11545.150390625 - - - 4.627999782562256 - - - - - - - 47.60969457216561 - -117.10193239152431 - - 673.4000244140625 - 11570.48046875 - - - 6.331999778747559 - - - - - - - 47.60961075313389 - -117.10190246812999 - - 673.4000244140625 - 11579.990234375 - - - 4.754000186920166 - - - - - - - 47.60951486416161 - -117.10183943621814 - - 673.2000122070312 - 11591.6904296875 - - - 3.9000000953674316 - - - - - - - 47.60943624190986 - -117.10165386088192 - - 674.5999755859375 - 11608.2197265625 - - - 2.066999912261963 - - - - - - - 47.6093221642077 - -117.10144674405456 - - 676.4000244140625 - 11628.41015625 - - - 2.243000030517578 - - - - - - - 47.60923775844276 - -117.10128656588495 - - 678.4000244140625 - 11643.7001953125 - - - 2.184000015258789 - - - - - - - 47.60921613313258 - -117.10125303827226 - - 678.7999877929688 - 11647.169921875 - - - 1.7319999933242798 - - - - - - - 47.60920096188784 - -117.101064696908 - - 681.2000122070312 - 11661.0595703125 - - - 1.7359999418258667 - - - - - - - 47.60918076150119 - -117.10088079795241 - - 683.0 - 11675.08984375 - - - 1.7549999952316286 - - - - - - - 47.60917279869318 - -117.10071098059416 - - 683.5999755859375 - 11687.7802734375 - - - 1.5859999656677248 - - - - - - - 47.60917028412223 - -117.10057226009667 - - 684.2000122070312 - 11698.1298828125 - - - 1.4789999723434448 - - - - - - - 47.609181767329574 - -117.1005221363157 - - 684.5999755859375 - 11702.16015625 - - - 2.013000011444092 - - - - - - - 47.60919417254627 - -117.10041736252606 - - 685.4000244140625 - 11710.48046875 - - - 1.6649999618530276 - - - - - - - 47.60914706625044 - -117.10019188933074 - - 687.0 - 11728.1396484375 - - - 2.2079999446868896 - - - - - - - 47.609102642163634 - -117.0999557711184 - - 689.0 - 11746.5302734375 - - - 2.6270000934600826 - - - - - - - 47.60910884477198 - -117.09979307837784 - - 691.7999877929688 - 11758.259765625 - - - 2.3469998836517334 - - - - - - - 47.60905989445746 - -117.0996330678463 - - 693.4000244140625 - 11771.5 - - - 2.2049999237060547 - - - - - - - 47.609046483412385 - -117.09952519275248 - - 695.0 - 11779.8095703125 - - - 2.0789999961853027 - - - - - - - 47.60900415480137 - -117.09929728880525 - - 696.7999877929688 - 11797.580078125 - - - 2.2209999561309814 - - - - - - - 47.60892117395997 - -117.0989908464253 - - 698.5999755859375 - 11821.7001953125 - - - 2.680000066757202 - - - - - - - 47.6088990457356 - -117.09878247231245 - - 700.4000244140625 - 11837.4599609375 - - - 1.9709999561309814 - - - - - - - 47.60890156030655 - -117.09856186062098 - - 702.5999755859375 - 11854.5703125 - - - 2.138000011444092 - - - - - - - 47.60887725278735 - -117.09837595000863 - - 704.5999755859375 - 11868.8203125 - - - 2.0360000133514404 - - - - - - - 47.608863255009055 - -117.09816933609545 - - 706.7999877929688 - 11884.3603515625 - - - 2.2209999561309814 - - - - - - - 47.608779268339276 - -117.09805458784103 - - 707.7999877929688 - 11897.400390625 - - - 2.6080000400543213 - - - - - - - 47.60864934884012 - -117.09799256175756 - - 708.0 - 11912.4697265625 - - - 2.1519999504089355 - - - - - - - 47.608518339693546 - -117.09800069220364 - - 708.4000244140625 - 11927.3203125 - - - 2.121999979019165 - - - - - - - 47.60835447348654 - -117.09798434749246 - - 709.4000244140625 - 11945.3896484375 - - - 2.007999897003174 - - - - - - - 47.6082496996969 - -117.09792584180832 - - 711.0 - 11958.3603515625 - - - 2.1619999408721924 - - - - - - - 47.608225140720606 - -117.09777764976025 - - 712.5999755859375 - 11969.580078125 - - - 2.243000030517578 - - - - - - - 47.60828968137503 - -117.09755469113588 - - 713.2000122070312 - 11987.91015625 - - - 3.055000066757202 - - - - - - - 47.60843116790056 - -117.09732695482671 - - 711.5999755859375 - 12011.2998046875 - - - 3.8989999294281006 - - - - - - - 47.608614563941956 - -117.0972032379359 - - 712.2000122070312 - 12034.0400390625 - - - 3.7890000343322754 - - - - - - - 47.6087589841336 - -117.09718965925276 - - 713.2000122070312 - 12050.2197265625 - - - 3.234999895095825 - - - - - - - 47.6088728941977 - -117.09718907251954 - - 714.4000244140625 - 12062.8896484375 - - - 2.5339999198913574 - - - - - - - 47.60906659998 - -117.09720617160201 - - 716.7999877929688 - 12084.5498046875 - - - 2.7070000171661377 - - - - - - - 47.6092838589102 - -117.09721338003874 - - 719.7999877929688 - 12108.740234375 - - - 2.687999963760376 - - - - - - - 47.60943045839667 - -117.09717658348382 - - 721.5999755859375 - 12125.2802734375 - - - 2.364000082015991 - - - - - - - 47.609577644616365 - -117.09709234535694 - - 721.7999877929688 - 12142.7197265625 - - - 2.490000009536743 - - - - - - - 47.60969256050885 - -117.096928646788 - - 721.4000244140625 - 12160.5400390625 - - - 2.5469999313354488 - - - - - - - 47.60976506397128 - -117.09670669399202 - - 722.4000244140625 - 12179.150390625 - - - 2.3259999752044678 - - - - - - - 47.60977235622704 - -117.09640595130622 - - 724.4000244140625 - 12201.849609375 - - - 2.5220000743865967 - - - - - - - 47.609761878848076 - -117.09612406790257 - - 726.0 - 12223.0595703125 - - - 2.6510000228881836 - - - - - - - 47.60975047945976 - -117.0957546774298 - - 728.7999877929688 - 12250.83984375 - - - 3.0869998931884766 - - - - - - - 47.60974385775626 - -117.09536659531295 - - 731.7999877929688 - 12280.0400390625 - - - 3.2439999580383305 - - - - - - - 47.609740840271115 - -117.0950239431113 - - 734.4000244140625 - 12305.7900390625 - - - 3.680000066757202 - - - - - - - 47.60974645614624 - -117.09460308775306 - - 733.5999755859375 - 12337.4296875 - - - 4.519999980926514 - - - - - - - 47.6097468752414 - -117.09445715881884 - - 732.7999877929688 - 12348.400390625 - - - 5.482999801635742 - - - - - - - 47.609753999859095 - -117.0940117444843 - - 732.5999755859375 - 12381.9501953125 - - - 5.591000080108642 - - - - - - - 47.60977336205542 - -117.0934802480042 - - 734.0 - 12421.98046875 - - - 5.004000186920166 - - - - - - - 47.60978786274791 - -117.09331705234945 - - 734.2000122070312 - 12434.33984375 - - - 4.120999813079834 - - - - - - - 47.60983228683472 - -117.09297926165164 - - 735.2000122070312 - 12459.8701171875 - - - 3.190999984741211 - - - - - - - 47.60997368954122 - -117.092729145661 - - 737.4000244140625 - 12484.4697265625 - - - 3.075000047683716 - - - - - - - 47.61014954186976 - -117.09261054173112 - - 741.7999877929688 - 12506.150390625 - - - 2.7100000381469727 - - - - - - - 47.61029387824237 - -117.09256125614047 - - 745.7999877929688 - 12522.580078125 - - - 2.3480000495910645 - - - - - - - 47.610458163544536 - -117.09259738214314 - - 748.2000122070312 - 12541.08984375 - - - 2.6440000534057617 - - - - - - - 47.61065086349845 - -117.0927756652236 - - 748.4000244140625 - 12566.259765625 - - - 2.796999931335449 - - - - - - - 47.61076075024903 - -117.0929170679301 - - 748.5999755859375 - 12582.3798828125 - - - 2.686000108718872 - - - - - - - 47.61087256483734 - -117.09301555529237 - - 750.2000122070312 - 12596.900390625 - - - 2.4210000038146973 - - - - - - - 47.610985385254025 - -117.09307489916682 - - 751.7999877929688 - 12610.1796875 - - - 2.2130000591278076 - - - - - - - 47.611111868172884 - -117.09310934878886 - - 753.7999877929688 - 12624.5595703125 - - - 2.3959999084472656 - - - - - - - 47.61124304495752 - -117.09307766519487 - - 755.0 - 12639.3896484375 - - - 2.9670000076293945 - - - - - - - 47.61139366775751 - -117.09295889362693 - - 755.2000122070312 - 12658.5400390625 - - - 2.734999895095825 - - - - - - - 47.61153875850141 - -117.09279854781926 - - 755.4000244140625 - 12678.6201171875 - - - 2.509999990463257 - - - - - - - 47.61165535077453 - -117.09265236742795 - - 755.7999877929688 - 12695.669921875 - - - 2.436000108718872 - - - - - - - 47.61181737296283 - -117.0925462525338 - - 757.0 - 12715.400390625 - - - 2.4670000076293945 - - - - - - - 47.611964140087366 - -117.09251968190074 - - 758.7999877929688 - 12731.8603515625 - - - 2.3519999980926514 - - - - - - - 47.61208056472242 - -117.09252756088972 - - 761.2000122070312 - 12744.849609375 - - - 2.1649999618530273 - - - - - - - 47.61223495937884 - -117.0925835520029 - - 764.4000244140625 - 12762.5595703125 - - - 2.5299999713897705 - - - - - - - 47.612378960475326 - -117.09268413484097 - - 765.7999877929688 - 12780.2001953125 - - - 2.940000057220459 - - - - - - - 47.61257576756179 - -117.0929122902453 - - 765.5999755859375 - 12807.9296875 - - - 3.4660000801086426 - - - - - - - 47.612795289605856 - -117.09319073706865 - - 764.0 - 12840.0302734375 - - - 4.013000011444092 - - - - - - - 47.61302369646728 - -117.09345635958016 - - 763.2000122070312 - 12872.3701171875 - - - 4.043000221252441 - - - - - - - 47.61305479332805 - -117.09348133765161 - - 763.4000244140625 - 12876.3095703125 - - - 3.934999942779541 - - - - - - - 2.8109830121218473 - - - - - 374.35 - 1609.34 - 12.6687956 - 101 - Active - Manual - - - - - 47.61305479332805 - -117.09348133765161 - - 763.4000244140625 - 12876.3095703125 - - - - - 47.613230561837554 - -117.09359239786863 - - 764.7999877929688 - 12897.580078125 - - - 3.5439999103546143 - - - - - - - 47.61341295205057 - -117.09365794435143 - - 767.2000122070312 - 12918.4404296875 - - - 2.9809999465942383 - - - - - - - 47.61360355652869 - -117.09368007257581 - - 769.0 - 12939.7197265625 - - - 2.6600000858306885 - - - - - - - 47.61376826092601 - -117.09365744143724 - - 770.7999877929688 - 12958.080078125 - - - 2.624000072479248 - - - - - - - 47.61395735666156 - -117.09363288246095 - - 772.4000244140625 - 12979.2197265625 - - - 2.3489999771118164 - - - - - - - 47.61416036635637 - -117.09361603483558 - - 774.2000122070312 - 13001.8095703125 - - - 2.509999990463257 - - - - - - - 47.61435926891863 - -117.0935840997845 - - 775.5999755859375 - 13024.08984375 - - - 2.4760000705718994 - - - - - - - 47.61457015760243 - -117.09356934763491 - - 776.5999755859375 - 13047.5302734375 - - - 2.605000019073486 - - - - - - - 47.61473746038973 - -117.09353313781321 - - 777.4000244140625 - 13066.400390625 - - - 2.694999933242798 - - - - - - - 47.615030659362674 - -117.09346826188266 - - 779.4000244140625 - 13099.2998046875 - - - 2.990999937057495 - - - - - - - 47.61519519612193 - -117.0933906454593 - - 781.0 - 13118.3896484375 - - - 2.726999998092651 - - - - - - - 47.61533626355231 - -117.09329098463058 - - 782.4000244140625 - 13135.83984375 - - - 2.493000030517578 - - - - - - - 47.61548747308552 - -117.09316483698785 - - 783.5999755859375 - 13155.0595703125 - - - 2.746000051498413 - - - - - - - 47.61569785885513 - -117.09300105459988 - - 785.4000244140625 - 13181.349609375 - - - 2.628999948501587 - - - - - - - 47.615841859951615 - -117.09282629191875 - - 787.4000244140625 - 13202.3095703125 - - - 2.619999885559082 - - - - - - - 47.61597655713558 - -117.09265186451375 - - 788.7999877929688 - 13222.2099609375 - - - 2.8429999351501465 - - - - - - - 47.616174537688494 - -117.09243678487837 - - 789.4000244140625 - 13249.5400390625 - - - 3.036000013351441 - - - - - - - 47.61642255820334 - -117.09227979183197 - - 789.4000244140625 - 13279.669921875 - - - 3.3480000495910645 - - - - - - - 47.61663235723972 - -117.09214274771512 - - 792.0 - 13305.169921875 - - - 2.8340001106262207 - - - - - - - 47.6168199442327 - -117.09204107522964 - - 794.2000122070312 - 13327.419921875 - - - 2.7809998989105225 - - - - - - - 47.616986744105816 - -117.09199296310544 - - 795.0 - 13346.3603515625 - - - 3.1570000648498535 - - - - - - - 47.61719956062734 - -117.09191584959626 - - 795.7999877929688 - 13370.7099609375 - - - 3.0439999103546143 - - - - - - - 47.61742226779461 - -117.09182725287974 - - 797.0 - 13396.2900390625 - - - 3.197000026702881 - - - - - - - 47.61764807626605 - -117.09173865616322 - - 798.5999755859375 - 13422.2900390625 - - - 2.888000011444092 - - - - - - - 47.61783675290644 - -117.09166548214853 - - 800.0 - 13443.990234375 - - - 3.099999904632569 - - - - - - - 47.61808326467872 - -117.09155475720763 - - 800.2000122070312 - 13472.599609375 - - - 3.5769999027252197 - - - - - - - 47.61827948503196 - -117.09141343832016 - - 799.5999755859375 - 13496.83984375 - - - 3.4630000591278076 - - - - - - - 47.6184624619782 - -117.09124144166708 - - 799.4000244140625 - 13520.9404296875 - - - 3.443000078201294 - - - - - - - 47.61868877336383 - -117.0910279545933 - - 801.4000244140625 - 13550.7998046875 - - - 4.265999794006348 - - - - - - - 47.618902092799544 - -117.09083139896393 - - 803.7999877929688 - 13578.7197265625 - - - 4.6519999504089355 - - - - - - - 47.61907434090972 - -117.09072176367044 - - 804.7999877929688 - 13599.58984375 - - - 5.217000007629394 - - - - - - - 47.61925463564694 - -117.0906616654247 - - 805.4000244140625 - 13620.259765625 - - - 5.1680002212524405 - - - - - - - 47.61947843246162 - -117.09074774757028 - - 805.2000122070312 - 13646.3095703125 - - - 5.210000038146972 - - - - - - - 47.61960005387664 - -117.09089803509414 - - 806.0 - 13663.9697265625 - - - 5.888000011444092 - - - - - - - 47.61985016986728 - -117.09138066507876 - - 808.7999877929688 - 13709.6796875 - - - 5.7129998207092285 - - - - - - - 47.62007606215775 - -117.09188877604902 - - 807.0 - 13755.3798828125 - - - 6.53000020980835 - - - - - - - 47.620132472366095 - -117.0920538995415 - - 807.2000122070312 - 13769.2900390625 - - - 6.954999923706056 - - - - - - - 47.62018343433738 - -117.09251238964498 - - 807.5999755859375 - 13804.5302734375 - - - 7.046999931335449 - - - - - - - 47.620139848440886 - -117.09277424030006 - - 808.5999755859375 - 13824.8896484375 - - - 6.7870001792907715 - - - - - - - 47.619959469884634 - -117.09326793439686 - - 811.4000244140625 - 13867.08984375 - - - 6.027999877929688 - - - - - - - 47.61982083320618 - -117.0936060603708 - - 813.0 - 13896.76953125 - - - 4.947000026702881 - - - - - - - 47.61967205442488 - -117.09400705061853 - - 814.5999755859375 - 13931.150390625 - - - 4.296999931335449 - - - - - - - 47.6195708848536 - -117.0943711604923 - - 816.2000122070312 - 13960.7900390625 - - - 4.234000205993652 - - - - - - - 47.61954724788666 - -117.0947665348649 - - 817.5999755859375 - 13990.8095703125 - - - 4.289999961853027 - - - - - - - 47.619607765227556 - -117.09509485401213 - - 818.2000122070312 - 14016.4599609375 - - - 4.27400016784668 - - - - - - - 47.61977883987129 - -117.09545376710594 - - 818.5999755859375 - 14049.66015625 - - - 4.743000030517578 - - - - - - - 47.6200613938272 - -117.0958889555186 - - 817.7999877929688 - 14095.0400390625 - - - 5.671999931335449 - - - - - - - 47.62043916620314 - -117.09642724134028 - - 818.5999755859375 - 14153.33984375 - - - 6.479000091552734 - - - - - - - 47.62063178233802 - -117.09669169038534 - - 816.5999755859375 - 14182.6201171875 - - - 7.318999767303467 - - - - - - - 47.620888855308294 - -117.09689704701304 - - 813.7999877929688 - 14215.16015625 - - - 8.135000228881836 - - - - - - - 47.62137525714934 - -117.09697877056897 - - 811.7999877929688 - 14270.0703125 - - - 9.151000022888184 - - - - - - - 47.62201379053295 - -117.09687215276062 - - 808.7999877929688 - 14341.6103515625 - - - 10.220000267028807 - - - - - - - 47.622520392760634 - -117.09662455134094 - - 805.4000244140625 - 14400.900390625 - - - 11.857999801635742 - - - - - - - 47.62286379933357 - -117.09646395407617 - - 802.4000244140625 - 14440.9697265625 - - - 13.35499954223633 - - - - - - - 47.62325154617429 - -117.09640209563076 - - 801.4000244140625 - 14484.4296875 - - - 14.48799991607666 - - - - - - - 4.2990356460531585 - - - - - 104.31 - 1609.34 - 17.8375778 - 38 - Active - Manual - - - - - 47.62325154617429 - -117.09640209563076 - - 801.4000244140625 - 14484.4296875 - - - - - 47.623387668281794 - -117.09640938788652 - - 800.7999877929688 - 14499.5498046875 - - - 15.11800003051758 - - - - - - - 47.62423264794052 - -117.09648256190121 - - 790.4000244140625 - 14593.7099609375 - - - 15.694000244140627 - - - - - - - 47.62523797340691 - -117.09626865573227 - - 787.2000122070312 - 14706.6904296875 - - - 16.138999938964844 - - - - - - - 47.62551985681057 - -117.09624619223177 - - 786.4000244140625 - 14738.01953125 - - - 15.668999671936037 - - - - - - - 47.626066356897354 - -117.09640846587718 - - 782.5999755859375 - 14800.23046875 - - - 15.552000045776367 - - - - - - - 47.62702683918178 - -117.09686234593391 - - 775.4000244140625 - 14912.3603515625 - - - 16.01799964904785 - - - - - - - 47.62759655714035 - -117.09679017774761 - - 772.7999877929688 - 14977.0302734375 - - - 16.16699981689453 - - - - - - - 47.62771884910762 - -117.09671373479068 - - 773.0 - 14991.83984375 - - - 14.810999870300293 - - - - - - - 47.62846056371927 - -117.09612255916 - - 775.2000122070312 - 15085.4404296875 - - - 13.371999740600586 - - - - - - - 47.62899926863611 - -117.09563054144382 - - 773.7999877929688 - 15155.8896484375 - - - 11.741000175476074 - - - - - - - 47.629744838923216 - -117.09495965391397 - - 769.7999877929688 - 15252.9599609375 - - - 12.133999824523926 - - - - - - - 47.63029284775257 - -117.09457425400615 - - 764.7999877929688 - 15320.51953125 - - - 13.51200008392334 - - - - - - - 47.630928196012974 - -117.09435297176242 - - 761.7999877929688 - 15393.1396484375 - - - 14.524999618530273 - - - - - - - 47.63185347430408 - -117.0940119959414 - - 754.5999755859375 - 15499.1904296875 - - - 15.14900016784668 - - - - - - - 47.63256593607366 - -117.09372164681554 - - 746.5999755859375 - 15581.3896484375 - - - 16.440000534057617 - - - - - - - 47.633174462243915 - -117.09363975562155 - - 739.2000122070312 - 15649.490234375 - - - 17.024999618530273 - - - - - - - 47.63379229232669 - -117.0937112532556 - - 731.5999755859375 - 15718.2900390625 - - - 17.20199966430664 - - - - - - - 47.63438765890896 - -117.09391585551202 - - 725.7999877929688 - 15786.3603515625 - - - 17.017000198364258 - - - - - - - 47.63517228886485 - -117.09422573447227 - - 721.0 - 15876.7197265625 - - - 18.070999145507812 - - - - - - - 47.63609915971756 - -117.09452396258712 - - 711.4000244140625 - 15982.1904296875 - - - 17.577999114990234 - - - - - - - 47.636742889881134 - -117.0946145709604 - - 708.7999877929688 - 16054.169921875 - - - 17.993999481201172 - - - - - - - 47.63721026480198 - -117.09462865255773 - - 704.4000244140625 - 16106.080078125 - - - 17.305999755859375 - - - - - - - 15.428472764835584 - - - - - 123.08 - 1609.34 - 17.6132317 - 47 - Active - Manual - - - - - 47.6375097502023 - -117.09468556568027 - - 702.4000244140625 - 16139.7197265625 - - - 16.81800079345703 - - - - - - - 47.63826118782163 - -117.09496594034135 - - 697.4000244140625 - 16225.849609375 - - - 17.225000381469727 - - - - - - - 47.63926014304161 - -117.09537874907255 - - 694.0 - 16341.23046875 - - - 16.483999252319336 - - - - - - - 47.63990756124258 - -117.09565166383982 - - 691.0 - 16415.990234375 - - - 14.953000068664553 - - - - - - - 47.64036286622286 - -117.0957961678505 - - 690.5999755859375 - 16467.830078125 - - - 12.958999633789062 - - - - - - - 47.64080727472901 - -117.09579968824983 - - 688.7999877929688 - 16517.330078125 - - - 12.375 - - - - - - - 47.64091758057475 - -117.09577353671193 - - 687.7999877929688 - 16529.80078125 - - - 12.46500015258789 - - - - - - - 47.641660971567035 - -117.09542124532163 - - 683.0 - 16616.599609375 - - - 12.401000022888184 - - - - - - - 47.64234837144613 - -117.09522703662515 - - 679.7999877929688 - 16694.55078125 - - - 12.991000175476074 - - - - - - - 47.64307298697531 - -117.09515335969627 - - 678.2000122070312 - 16775.2890625 - - - 13.45699977874756 - - - - - - - 47.643788969144225 - -117.09500223398209 - - 675.4000244140625 - 16855.76953125 - - - 13.413999557495117 - - - - - - - 47.64433194883168 - -117.09473225288093 - - 672.4000244140625 - 16919.5 - - - 12.746000289916992 - - - - - - - 47.64462917111814 - -117.09462865255773 - - 670.5999755859375 - 16953.400390625 - - - 11.300999641418455 - - - - - - - 47.64517919160426 - -117.09459646604955 - - 667.0 - 17014.720703125 - - - 12.263999938964844 - - - - - - - 47.64588427729905 - -117.09461566060781 - - 660.4000244140625 - 17093.169921875 - - - 13.074000358581543 - - - - - - - 47.64666027389467 - -117.09462613798678 - - 655.5999755859375 - 17179.41015625 - - - 14.37399959564209 - - - - - - - 47.64770415611565 - -117.09465346299112 - - 651.5999755859375 - 17295.55078125 - - - 14.517999649047852 - - - - - - - 47.64838124625385 - -117.09466729313135 - - 650.4000244140625 - 17370.8203125 - - - 12.545000076293945 - - - - - - - 47.64898248016834 - -117.09465798921883 - - 648.2000122070312 - 17437.650390625 - - - 11.137999534606934 - - - - - - - 47.649716986343265 - -117.09469897672534 - - 644.4000244140625 - 17519.349609375 - - - 11.670999526977539 - - - - - - - 47.65014957636595 - -117.09481749683619 - - 643.0 - 17568.330078125 - - - 12.244999885559082 - - - - - - - 47.650540340691805 - -117.09489963948727 - - 641.4000244140625 - 17612.30078125 - - - 10.994000434875488 - - - - - - - 47.6511658821255 - -117.09488874301314 - - 638.5999755859375 - 17681.869140625 - - - 9.937999725341797 - - - - - - - 47.65133217908442 - -117.09488195367157 - - 637.7999877929688 - 17700.330078125 - - - 9.227999687194824 - - - - - - - 47.65140946023166 - -117.0948891621083 - - 637.4000244140625 - 17708.9609375 - - - 8.628999710083008 - - - - - - - 13.075593062235944 - - - - - 232.5 - 1609.34 - 10.2519379 - 85 - Active - Manual - - - - - 47.65182268805802 - -117.09488564170897 - - 635.7999877929688 - 17755.01953125 - - - 9.211999893188477 - - - - - - - 47.65224505215883 - -117.09484616294503 - - 635.0 - 17802.130859375 - - - 9.42300033569336 - - - - - - - 47.652949299663305 - -117.09481188096106 - - 634.2000122070312 - 17880.419921875 - - - 9.78499984741211 - - - - - - - 47.65369428321719 - -117.0948188379407 - - 632.2000122070312 - 17963.240234375 - - - 10.352999687194822 - - - - - - - 47.65411924570799 - -117.0948648545891 - - 630.4000244140625 - 18010.650390625 - - - 9.482000350952148 - - - - - - - 47.654309682548046 - -117.09467098116875 - - 629.5999755859375 - 18039.029296875 - - - 7.09499979019165 - - - - - - - 47.65433005057275 - -117.0945804566145 - - 629.4000244140625 - 18046.19921875 - - - 7.165999889373779 - - - - - - - 47.65452836640179 - -117.09364369511604 - - 629.0 - 18119.94921875 - - - 7.375 - - - - - - - 47.65461704693735 - -117.0931155513972 - - 628.0 - 18160.869140625 - - - 8.1850004196167 - - - - - - - 47.654548063874245 - -117.09261984564364 - - 628.0 - 18199.650390625 - - - 7.75600004196167 - - - - - - - 47.65446634031832 - -117.09244525060058 - - 628.0 - 18215.6796875 - - - 8.013999938964844 - - - - - - - 47.65414816327393 - -117.09185684099793 - - 628.0 - 18272.330078125 - - - 8.093000411987305 - - - - - - - 47.65399225987494 - -117.09161443635821 - - 628.0 - 18297.44921875 - - - 6.28000020980835 - - - - - - - 47.65380517579615 - -117.09131176583469 - - 628.0 - 18328.310546875 - - - 5.144000053405762 - - - - - - - 47.65371507033706 - -117.09092955105007 - - 628.0 - 18359.419921875 - - - 6.2220001220703125 - - - - - - - 47.65381087549031 - -117.09060785360634 - - 628.0 - 18386.099609375 - - - 6.669000148773194 - - - - - - - 47.65385697595775 - -117.0905337575823 - - 628.0 - 18393.7109375 - - - 7.605000019073486 - - - - - - - 47.65421647578478 - -117.08994979038835 - - 628.4000244140625 - 18453.0703125 - - - 8.479999542236328 - - - - - - - 47.65432443469763 - -117.08978986367583 - - 629.0 - 18470.029296875 - - - 8.479000091552734 - - - - - - - 47.65465535223484 - -117.08961015567183 - - 630.0 - 18509.51953125 - - - 7.89900016784668 - - - - - - - 47.65471243299544 - -117.0896153524518 - - 630.2000122070312 - 18515.900390625 - - - 6.379000186920166 - - - - - - - 47.65512775629759 - -117.08964427001774 - - 633.5999755859375 - 18562.08984375 - - - 6.598999977111816 - - - - - - - 47.65545615926385 - -117.08964427001774 - - 636.0 - 18598.609375 - - - 5.217000007629394 - - - - - - - 47.655780874192715 - -117.0896467845887 - - 637.4000244140625 - 18634.689453125 - - - 4.510000228881836 - - - - - - - 47.65598304569721 - -117.0896311942488 - - 637.7999877929688 - 18657.220703125 - - - 4.505000114440918 - - - - - - - 47.65643449500203 - -117.08963488228619 - - 639.2000122070312 - 18707.44921875 - - - 4.566999912261963 - - - - - - - 47.65657405368984 - -117.08965055644512 - - 639.7999877929688 - 18722.990234375 - - - 5.179999828338622 - - - - - - - 47.65672417357564 - -117.08978525362909 - - 639.7999877929688 - 18743.369140625 - - - 5.0939998626708975 - - - - - - - 47.656746972352266 - -117.08991726860404 - - 640.4000244140625 - 18753.5 - - - 5.065000057220459 - - - - - - - 47.656782092526555 - -117.09053526632488 - - 641.7999877929688 - 18800.0 - - - 5.166999816894531 - - - - - - - 47.656811848282814 - -117.09119115024805 - - 641.7999877929688 - 18849.369140625 - - - 4.936999797821045 - - - - - - - 47.65682375058532 - -117.09182197228074 - - 640.5999755859375 - 18896.830078125 - - - 5.933000087738037 - - - - - - - 47.65680715441704 - -117.09244147874415 - - 638.5999755859375 - 18943.390625 - - - 7.760000228881836 - - - - - - - 47.65680807642639 - -117.09323113784194 - - 637.5999755859375 - 19002.73046875 - - - 9.890999794006348 - - - - - - - 47.65680774115026 - -117.09422875195742 - - 635.2000122070312 - 19077.66015625 - - - 9.366000175476074 - - - - - - - 47.6568004488945 - -117.09504305385053 - - 632.4000244140625 - 19138.880859375 - - - 10.20300006866455 - - - - - - - 47.656797766685486 - -117.09551084786654 - - 631.5999755859375 - 19173.970703125 - - - 8.772000312805176 - - - - - - - 47.65687865205109 - -117.09573095664382 - - 631.4000244140625 - 19193.779296875 - - - 4.952000141143799 - - - - - - - 47.65696255490184 - -117.09573489613831 - - 631.7999877929688 - 19203.189453125 - - - 4.708000183105469 - - - - - - - 47.657376788556576 - -117.09566465578973 - - 634.0 - 19249.560546875 - - - 5.151999950408935 - - - - - - - 47.657629838213325 - -117.09563146345317 - - 635.0 - 19277.80078125 - - - 4.705999851226807 - - - - - - - 47.65794365666807 - -117.09561914205551 - - 635.2000122070312 - 19312.720703125 - - - 4.988999843597412 - - - - - - - 6.92190965204301 - - - - - 268.97 - 1609.34 - 7.9852047 - 99 - Active - Manual - - - - - 47.658281195908785 - -117.0956304576248 - - 636.0 - 19350.279296875 - - - 5.364999771118164 - - - - - - - 47.658379347994924 - -117.09564998745918 - - 635.7999877929688 - 19361.279296875 - - - 5.5 - - - - - - - 47.65851949341595 - -117.09564906544983 - - 635.7999877929688 - 19376.859375 - - - 5.192999839782715 - - - - - - - 47.65865536406636 - -117.0956711936742 - - 635.7999877929688 - 19392.05078125 - - - 5.064000129699707 - - - - - - - 47.658958872780204 - -117.09576406516135 - - 635.4000244140625 - 19426.509765625 - - - 5.74399995803833 - - - - - - - 47.65916305594146 - -117.09569826722145 - - 635.0 - 19450.58984375 - - - 6.019000053405762 - - - - - - - 47.659216448664665 - -117.0955799985677 - - 635.2000122070312 - 19461.30078125 - - - 5.3540000915527335 - - - - - - - 47.659401688724756 - -117.09503006190062 - - 637.0 - 19507.44921875 - - - 5.769000053405762 - - - - - - - 47.659545354545116 - -117.09462865255773 - - 638.5999755859375 - 19541.58984375 - - - 5.690000057220459 - - - - - - - 47.65972673892975 - -117.09414283744991 - - 640.2000122070312 - 19583.2890625 - - - 5.211999893188477 - - - - - - - 47.65985867008567 - -117.09374628961086 - - 641.0 - 19616.5 - - - 5.535999774932861 - - - - - - - 47.659904854372144 - -117.09363045170903 - - 641.0 - 19626.58984375 - - - 5.041999816894531 - - - - - - - 47.66006444580853 - -117.09314639680088 - - 641.0 - 19666.98046875 - - - 5.769999980926513 - - - - - - - 47.660234263166785 - -117.09257843904197 - - 641.0 - 19713.650390625 - - - 6.666999816894532 - - - - - - - 47.66029913909733 - -117.09233704023063 - - 641.0 - 19733.130859375 - - - 6.49399995803833 - - - - - - - 47.660467363893986 - -117.09215523675084 - - 641.0 - 19757.76953125 - - - 6.158999919891357 - - - - - - - 47.660534754395485 - -117.09215557202697 - - 641.0 - 19765.23046875 - - - 7.460999965667725 - - - - - - - 47.66072846017778 - -117.09214308299124 - - 641.0 - 19786.80078125 - - - 7.191999912261964 - - - - - - - 47.66096466220915 - -117.0919587649405 - - 641.0 - 19816.94921875 - - - 7.5370001792907715 - - - - - - - 47.6610501576215 - -117.09180646575987 - - 641.0 - 19831.83984375 - - - 7.441999912261963 - - - - - - - 47.66125618480146 - -117.09139063954353 - - 642.2000122070312 - 19870.490234375 - - - 6.442999839782715 - - - - - - - 47.66136179678142 - -117.09121604450047 - - 642.5999755859375 - 19889.69921875 - - - 3.841000080108643 - - - - - - - 47.66134805046022 - -117.09129986353219 - - 642.5999755859375 - 19896.349609375 - - - 3.3269999027252197 - - - - - - - 47.661312175914645 - -117.09134655073285 - - 642.4000244140625 - 19901.630859375 - - - 5.272999763488769 - - - - - - - 47.66104864887893 - -117.09182406775653 - - 641.0 - 19947.890625 - - - 6.609000205993652 - - - - - - - 47.660855362191796 - -117.09209798835218 - - 641.0 - 19977.720703125 - - - 7.4569997787475595 - - - - - - - 47.6606135442853 - -117.09222195670009 - - 641.0 - 20006.580078125 - - - 7.2150001525878915 - - - - - - - 47.66044666059315 - -117.09211793728173 - - 641.0 - 20027.150390625 - - - 6.859000205993652 - - - - - - - 47.66037876717746 - -117.09188064560294 - - 641.0 - 20046.599609375 - - - 6.48199987411499 - - - - - - - 47.66035605221987 - -117.09150563925505 - - 641.0 - 20074.91015625 - - - 5.6620001792907715 - - - - - - - 47.660441463813186 - -117.09152206778526 - - 641.0 - 20089.060546875 - - - 3.5380001068115234 - - - - - - - 47.660450264811516 - -117.09159473888576 - - 641.0 - 20094.5703125 - - - 5.507999897003174 - - - - - - - 47.66041095368564 - -117.09203026257455 - - 641.0 - 20127.939453125 - - - 6.675000190734863 - - - - - - - 47.660215655341744 - -117.09281623363495 - - 641.0 - 20191.0 - - - 7.881999969482423 - - - - - - - 47.65994709916413 - -117.09366389550269 - - 641.0 - 20261.220703125 - - - 7.80299997329712 - - - - - - - 47.65968927182257 - -117.09438943304121 - - 639.5999755859375 - 20322.7890625 - - - 6.840000152587891 - - - - - - - 47.65967225655913 - -117.09443494677544 - - 639.5999755859375 - 20326.6796875 - - - 3.8949999809265137 - - - - - - - 47.659570248797536 - -117.0947752520442 - - 638.2000122070312 - 20354.650390625 - - - 4.6620001792907715 - - - - - - - 47.65940587967634 - -117.09525126032531 - - 636.2000122070312 - 20394.8203125 - - - 6.695000171661377 - - - - - - - 47.65915668569505 - -117.09597243927419 - - 635.0 - 20455.720703125 - - - 7.611999988555908 - - - - - - - 47.65897043980658 - -117.09655925631523 - - 633.5999755859375 - 20504.390625 - - - 8.11299991607666 - - - - - - - 47.65885837376118 - -117.09700483828783 - - 632.0 - 20540.0703125 - - - 7.136000156402589 - - - - - - - 47.658754689618945 - -117.0974688604474 - - 631.0 - 20576.869140625 - - - 6.131999969482422 - - - - - - - 47.65873306430876 - -117.09762535057962 - - 630.7999877929688 - 20588.73046875 - - - 3.956000089645386 - - - - - - - 47.65875636599958 - -117.09770279936492 - - 630.4000244140625 - 20595.490234375 - - - 1.3519999980926514 - - - - - - - 47.65885409899056 - -117.09781696088612 - - 630.0 - 20609.400390625 - - - 2.7809998989105225 - - - - - - - 47.659014193341136 - -117.09768905304372 - - 630.5999755859375 - 20630.109375 - - - 4.14300012588501 - - - - - - - 47.65928015112877 - -117.09742695093155 - - 631.4000244140625 - 20665.66015625 - - - 5.925000190734863 - - - - - - - 47.65964384190738 - -117.09709536284208 - - 632.5999755859375 - 20713.220703125 - - - 6.794000148773193 - - - - - - - 47.659900076687336 - -117.09675899706781 - - 633.7999877929688 - 20751.310546875 - - - 6.348999977111816 - - - - - - - 47.66005413606763 - -117.0965041872114 - - 634.0 - 20777.0 - - - 5.136000156402588 - - - - - - - 47.660200987011194 - -117.09642296656966 - - 634.4000244140625 - 20795.19921875 - - - 4.550000190734863 - - - - - - - 47.66029176302254 - -117.09646655246615 - - 634.7999877929688 - 20805.7890625 - - - 5.295000076293945 - - - - - - - 47.660777075216174 - -117.09681138396263 - - 634.5999755859375 - 20865.66015625 - - - 5.98799991607666 - - - - - - - 47.66120606102049 - -117.09705454297364 - - 634.7999877929688 - 20916.779296875 - - - 6.389999866485596 - - - - - - - 47.66125425696373 - -117.09707994014025 - - 634.7999877929688 - 20922.490234375 - - - 5.706999778747559 - - - - - - - 5.983358716957279 - - - - - 311.8 - 1609.34 - 7.6008306 - 105 - Active - Manual - - - - - 47.66146095469594 - -117.09721706807613 - - 635.2000122070312 - 20947.669921875 - - - 5.03599977493286 - - - - - - - 47.66165155917406 - -117.09730055183172 - - 634.7999877929688 - 20969.76953125 - - - 5.525000095367432 - - - - - - - 47.66215715557337 - -117.09758729673922 - - 634.4000244140625 - 21030.0 - - - 6.691999912261963 - - - - - - - 47.66260324046016 - -117.0977941621095 - - 634.2000122070312 - 21081.970703125 - - - 7.423999786376953 - - - - - - - 47.6630605570972 - -117.09797747433186 - - 634.4000244140625 - 21134.630859375 - - - 7.5229997634887695 - - - - - - - 47.66347554512322 - -117.09814335219562 - - 634.7999877929688 - 21182.4296875 - - - 6.828000068664551 - - - - - - - 47.663524160161614 - -117.09816506132483 - - 634.5999755859375 - 21188.080078125 - - - 5.644999980926514 - - - - - - - 47.6636628806591 - -117.09802986122668 - - 635.5999755859375 - 21208.830078125 - - - 5.188000202178955 - - - - - - - 47.66367394477129 - -117.09796439856291 - - 636.0 - 21213.919921875 - - - 5.084000110626221 - - - - - - - 47.66368668526411 - -117.0978372450918 - - 637.0 - 21223.560546875 - - - 4.820000171661377 - - - - - - - 47.663621474057436 - -117.09742175415158 - - 638.2000122070312 - 21255.69921875 - - - 4.5920000076293945 - - - - - - - 47.66355508938432 - -117.09703333675861 - - 639.7999877929688 - 21285.810546875 - - - 3.7639999389648438 - - - - - - - 47.663540253415704 - -117.09700123406947 - - 639.7999877929688 - 21288.740234375 - - - 2.9240000247955322 - - - - - - - 47.66339264810085 - -117.09692764095962 - - 639.5999755859375 - 21306.23046875 - - - 3.497999906539917 - - - - - - - 47.66309726983309 - -117.0968353562057 - - 639.4000244140625 - 21339.83984375 - - - 5.6020002365112305 - - - - - - - 47.66278797760606 - -117.09670476615429 - - 638.7999877929688 - 21375.5703125 - - - 7.146999835968018 - - - - - - - 47.66226318664849 - -117.09640528075397 - - 638.2000122070312 - 21438.109375 - - - 6.948999881744385 - - - - - - - 47.66195096075535 - -117.096230937168 - - 638.5999755859375 - 21475.140625 - - - 6.17199993133545 - - - - - - - 47.66177284531295 - -117.09611065685749 - - 638.2000122070312 - 21496.939453125 - - - 5.447999954223633 - - - - - - - 47.66154024749994 - -117.09583413787186 - - 639.2000122070312 - 21530.19921875 - - - 5.544000148773193 - - - - - - - 47.66140379011631 - -117.0954557787627 - - 640.2000122070312 - 21562.529296875 - - - 6.467000007629395 - - - - - - - 47.66136825084686 - -117.0951135456562 - - 640.7999877929688 - 21588.5390625 - - - 6.500999927520752 - - - - - - - 47.66138073988259 - -117.09487684071064 - - 641.0 - 21606.380859375 - - - 5.947999954223633 - - - - - - - 47.66144377179444 - -117.09458783268929 - - 641.0 - 21629.220703125 - - - 5.709000110626221 - - - - - - - 47.66163278371096 - -117.09423059597611 - - 642.0 - 21663.51953125 - - - 5.7170000076293945 - - - - - - - 47.66176178120077 - -117.09409388713539 - - 642.4000244140625 - 21681.150390625 - - - 5.875999927520752 - - - - - - - 47.66210535541177 - -117.09389607422054 - - 644.2000122070312 - 21722.390625 - - - 5.890999794006347 - - - - - - - 47.6622468419373 - -117.09385299123824 - - 644.4000244140625 - 21738.44921875 - - - 5.35099983215332 - - - - - - - 47.662516152486205 - -117.09384175948799 - - 645.0 - 21768.400390625 - - - 4.28000020980835 - - - - - - - 47.66275076195598 - -117.09388534538448 - - 645.7999877929688 - 21794.900390625 - - - 4.416999816894531 - - - - - - - 47.662965254858136 - -117.0939120836556 - - 646.4000244140625 - 21818.919921875 - - - 4.001999855041504 - - - - - - - 47.66329189762473 - -117.09393689408898 - - 647.5999755859375 - 21855.2890625 - - - 4.546999931335449 - - - - - - - 47.66353463754058 - -117.09389129653573 - - 648.5999755859375 - 21882.509765625 - - - 4.534999847412109 - - - - - - - 47.66370537690818 - -117.09383429959416 - - 649.4000244140625 - 21901.91015625 - - - 4.85099983215332 - - - - - - - 47.66405456699431 - -117.0937268435955 - - 651.5999755859375 - 21941.609375 - - - 4.410999774932861 - - - - - - - 47.66442756168544 - -117.09363506175578 - - 653.5999755859375 - 21983.69921875 - - - 4.676000118255615 - - - - - - - 47.66454515978694 - -117.0936253387481 - - 654.0 - 21996.779296875 - - - 4.361000061035156 - - - - - - - 47.66478748060763 - -117.09360698238015 - - 654.0 - 22024.130859375 - - - 3.9070000648498535 - - - - - - - 47.66482796519995 - -117.09337555803359 - - 654.0 - 22042.240234375 - - - 4.53000020980835 - - - - - - - 47.664844980463386 - -117.0928052533418 - - 654.0 - 22085.16015625 - - - 5.364999771118164 - - - - - - - 47.66483265906572 - -117.09248716011643 - - 654.0 - 22109.099609375 - - - 3.989000082015991 - - - - - - - 47.664827294647694 - -117.09230376407504 - - 654.0 - 22122.91015625 - - - 2.7630000114440914 - - - - - - - 47.66483676619828 - -117.09195289760828 - - 654.0 - 22149.2890625 - - - 3.767999887466431 - - - - - - - 47.664833748713136 - -117.09168065339327 - - 654.0 - 22169.720703125 - - - 2.552999973297119 - - - - - - - 47.66482695937157 - -117.09166003391147 - - 654.0 - 22171.41015625 - - - 0.5649999976158142 - - - - - - - 47.664828887209296 - -117.09155039861798 - - 654.0 - 22179.689453125 - - - 2.068000078201294 - - - - - - - 47.664833161979914 - -117.09109995514154 - - 654.0 - 22213.509765625 - - - 4.229000091552734 - - - - - - - 47.66483634710312 - -117.09044298157096 - - 654.0 - 22262.890625 - - - 5.486999988555908 - - - - - - - 47.66483265906572 - -117.09016025997698 - - 654.0 - 22284.099609375 - - - 5.301000118255615 - - - - - - - 47.66481983475387 - -117.09002514369786 - - 654.0 - 22294.349609375 - - - 5.125999927520752 - - - - - - - 47.66484665684402 - -117.08978516981006 - - 654.0 - 22312.970703125 - - - 3.7230000495910645 - - - - - - - 47.66487825661898 - -117.08971459418535 - - 654.0 - 22319.330078125 - - - 3.184000015258789 - - - - - - - 47.66502745449543 - -117.08970109932125 - - 654.0 - 22336.630859375 - - - 4.322999954223633 - - - - - - - 47.66529626213014 - -117.08970587700605 - - 654.0 - 22366.5 - - - 5.974999904632568 - - - - - - - 47.66568467952311 - -117.08969615399837 - - 654.0 - 22409.720703125 - - - 7.203999996185303 - - - - - - - 47.666118359193206 - -117.08971216343343 - - 654.0 - 22457.9609375 - - - 6.890999794006348 - - - - - - - 47.666607862338424 - -117.08973655477166 - - 653.0 - 22512.390625 - - - 6.802999973297119 - - - - - - - 47.66679586842656 - -117.08973445929587 - - 653.0 - 22533.3203125 - - - 6.9770002365112305 - - - - - - - 5.161462457023733 - - - - - 190.07 - 1609.34 - 10.0728626 - 70 - Active - Manual - - - - - 47.66716534271836 - -117.08973689004779 - - 652.5999755859375 - 22574.390625 - - - 6.84499979019165 - - - - - - - 47.66747295856476 - -117.0897503849119 - - 652.0 - 22608.580078125 - - - 6.839000225067139 - - - - - - - 47.667844695970416 - -117.08963689394295 - - 651.0 - 22650.890625 - - - 7.051000118255615 - - - - - - - 47.66824174672365 - -117.08957738243043 - - 649.5999755859375 - 22695.349609375 - - - 8.892000198364258 - - - - - - - 47.6688695512712 - -117.08958115428686 - - 647.4000244140625 - 22765.150390625 - - - 9.972000122070312 - - - - - - - 47.66966834664345 - -117.08958375267684 - - 644.5999755859375 - 22854.0 - - - 9.871999740600586 - - - - - - - 47.670372761785984 - -117.08957235328853 - - 642.7999877929688 - 22932.3203125 - - - 9.789999961853027 - - - - - - - 47.6708434894681 - -117.08956388756633 - - 642.0 - 22984.609375 - - - 8.71500015258789 - - - - - - - 47.67115303315222 - -117.08955617621541 - - 642.0 - 23019.01953125 - - - 6.881999969482422 - - - - - - - 47.67119158990681 - -117.08955416455865 - - 642.0 - 23023.30078125 - - - 4.2829999923706055 - - - - - - - 47.67137808725238 - -117.0894913841039 - - 642.0 - 23044.759765625 - - - 4.291999816894531 - - - - - - - 47.671423852443695 - -117.08950345404446 - - 642.0 - 23049.91015625 - - - 5.1539998054504395 - - - - - - - 47.67198946326971 - -117.08954276517034 - - 642.0 - 23113.0703125 - - - 7.01800012588501 - - - - - - - 47.672458766028285 - -117.08953614346683 - - 642.0 - 23165.259765625 - - - 7.455999851226807 - - - - - - - 47.67307508736849 - -117.08954435773194 - - 641.0 - 23233.76953125 - - - 8.562999725341797 - - - - - - - 47.673804480582476 - -117.08956707268953 - - 640.0 - 23314.880859375 - - - 10.138999938964842 - - - - - - - 47.67450688406825 - -117.08957805298269 - - 639.0 - 23392.98046875 - - - 9.76200008392334 - - - - - - - 47.67499336972833 - -117.08956807851791 - - 638.0 - 23447.0703125 - - - 9.013999938964844 - - - - - - - 47.67560139298439 - -117.08959355950356 - - 637.0 - 23514.69921875 - - - 8.454000473022461 - - - - - - - 47.67597095109522 - -117.08965759724379 - - 636.0 - 23556.169921875 - - - 8.293999671936035 - - - - - - - 47.67643203958869 - -117.08994157612324 - - 634.5999755859375 - 23611.91015625 - - - 7.9629998207092285 - - - - - - - 47.67667913809419 - -117.09016554057598 - - 633.4000244140625 - 23644.08984375 - - - 8.045999526977539 - - - - - - - 47.676937971264124 - -117.0901404786855 - - 632.4000244140625 - 23676.080078125 - - - 7.999000072479248 - - - - - - - 47.67700175754726 - -117.08996378816664 - - 632.2000122070312 - 23691.310546875 - - - 7.611999988555908 - - - - - - - 47.67714257352054 - -117.08936263807118 - - 632.5999755859375 - 23739.0703125 - - - 7.960000038146973 - - - - - - - 47.6774400472641 - -117.08854054100811 - - 631.5999755859375 - 23809.16015625 - - - 8.76099967956543 - - - - - - - 47.67775126732886 - -117.08763965405524 - - 632.2000122070312 - 23885.150390625 - - - 9.49899959564209 - - - - - - - 47.67813289538026 - -117.08654154092073 - - 632.0 - 23977.849609375 - - - 9.269000053405762 - - - - - - - 47.678547548130155 - -117.08533924072981 - - 631.5999755859375 - 24079.259765625 - - - 9.218999862670898 - - - - - - - 47.67881233245134 - -117.08458763547242 - - 631.5999755859375 - 24142.880859375 - - - 9.08899974822998 - - - - - - - 47.67884979955852 - -117.08448076620698 - - 631.4000244140625 - 24151.919921875 - - - 9.041000366210938 - - - - - - - 8.467112085547429 - - - - - 199.35 - 1609.34 - 10.3527565 - 75 - Active - Manual - - - - - 47.67884979955852 - -117.08448076620698 - - 631.4000244140625 - 24151.919921875 - - - - - 47.67913553863764 - -117.08365615457296 - - 631.4000244140625 - 24221.55078125 - - - 8.70300006866455 - - - - - - - 47.679513646289706 - -117.08255996927619 - - 630.2000122070312 - 24313.98046875 - - - 8.402999877929688 - - - - - - - 47.67980399541557 - -117.08159638568759 - - 630.5999755859375 - 24393.30078125 - - - 7.931000232696533 - - - - - - - 47.679996863007545 - -117.08101384341717 - - 630.5999755859375 - 24441.900390625 - - - 6.943999767303467 - - - - - - - 47.680237255990505 - -117.08024044521153 - - 631.0 - 24505.810546875 - - - 7.10099983215332 - - - - - - - 47.68043498508632 - -117.0796134788543 - - 631.4000244140625 - 24557.759765625 - - - 6.49399995803833 - - - - - - - 47.680478570982814 - -117.07947735674679 - - 632.0 - 24569.0703125 - - - 5.651000022888184 - - - - - - - 47.68060069531202 - -117.07920326851308 - - 632.5999755859375 - 24593.6796875 - - - 4.921999931335449 - - - - - - - 47.6807332970202 - -117.0791197847575 - - 631.4000244140625 - 24610.48046875 - - - 4.202000141143799 - - - - - - - 47.680771350860596 - -117.07912313751876 - - 631.0 - 24614.720703125 - - - 4.23799991607666 - - - - - - - 47.68107385374606 - -117.07915809005499 - - 628.4000244140625 - 24648.470703125 - - - 5.624000072479248 - - - - - - - 47.68144894391298 - -117.07917493768036 - - 627.2000122070312 - 24690.220703125 - - - 8.350000381469727 - - - - - - - 47.682250840589404 - -117.07921106368303 - - 625.0 - 24779.4609375 - - - 9.916000366210938 - - - - - - - 47.68318064510822 - -117.07924836315215 - - 623.0 - 24882.880859375 - - - 10.342000007629395 - - - - - - - 47.68363846465945 - -117.07924475893378 - - 622.2000122070312 - 24933.80078125 - - - 10.182999610900879 - - - - - - - 47.68396829254925 - -117.07905256189406 - - 622.0 - 24973.5390625 - - - 9.937000274658203 - - - - - - - 47.684143390506506 - -117.07879045978189 - - 622.0 - 25001.380859375 - - - 9.279999732971191 - - - - - - - 47.68418664112687 - -117.07869088277221 - - 622.2000122070312 - 25010.279296875 - - - 8.895000457763672 - - - - - - - 47.684511775150895 - -117.0778160635382 - - 623.7999877929688 - 25085.19921875 - - - 8.324000358581543 - - - - - - - 47.68476717174053 - -117.07715347409248 - - 623.2000122070312 - 25142.509765625 - - - 8.187999725341797 - - - - - - - 47.684956938028336 - -117.07663379609585 - - 623.0 - 25186.869140625 - - - 7.39300012588501 - - - - - - - 47.68523387610912 - -117.07591873593628 - - 623.0 - 25248.75 - - - 7.736000061035156 - - - - - - - 47.68559345975518 - -117.07499513402581 - - 623.4000244140625 - 25328.810546875 - - - 8.005999565124512 - - - - - - - 47.68596519716084 - -117.07406776025891 - - 623.4000244140625 - 25409.80078125 - - - 8.098999977111816 - - - - - - - 47.686299635097384 - -117.07322294823825 - - 624.0 - 25483.2890625 - - - 8.166000366210938 - - - - - - - 47.686713952571154 - -117.07217998802662 - - 624.0 - 25574.1796875 - - - 8.26200008392334 - - - - - - - 47.6870515756309 - -117.07127826288342 - - 626.0 - 25651.55078125 - - - 8.597000122070312 - - - - - - - 47.687439154833555 - -117.07025466486812 - - 626.2000122070312 - 25739.66015625 - - - 8.810999870300293 - - - - - - - 47.687517860904336 - -117.07004327327013 - - 625.5999755859375 - 25757.830078125 - - - 9.086999893188477 - - - - - - - 8.072957081013293 - - - - - 195.4 - 1609.34 - 8.9501858 - 73 - Active - Manual - - - - - 47.6877685636282 - -117.06943248398602 - - 623.5999755859375 - 25811.509765625 - - - 8.946000099182129 - - - - - - - 47.6880291569978 - -117.06875598058105 - - 625.0 - 25869.970703125 - - - 8.35200023651123 - - - - - - - 47.68833559937775 - -117.06798275001347 - - 627.2000122070312 - 25937.279296875 - - - 8.413000106811523 - - - - - - - 47.68867867067456 - -117.06708739511669 - - 627.2000122070312 - 26014.5703125 - - - 8.588000297546387 - - - - - - - 47.689018389210105 - -117.06620335578918 - - 625.4000244140625 - 26090.939453125 - - - 8.486000061035156 - - - - - - - 47.689368668943644 - -117.06534655764699 - - 624.7999877929688 - 26166.220703125 - - - 8.36400032043457 - - - - - - - 47.68965876661241 - -117.06455446779728 - - 625.5999755859375 - 26233.880859375 - - - 8.458000183105469 - - - - - - - 47.689775275066495 - -117.06428867764771 - - 625.2000122070312 - 26257.669921875 - - - 7.928999900817871 - - - - - - - 47.690087081864476 - -117.06347336992621 - - 625.4000244140625 - 26328.009765625 - - - 7.815999984741211 - - - - - - - 47.690420262515545 - -117.06263735890388 - - 625.2000122070312 - 26400.919921875 - - - 8.10099983215332 - - - - - - - 47.69076174125075 - -117.06183018162847 - - 624.7999877929688 - 26472.380859375 - - - 7.939000129699707 - - - - - - - 47.69096156582236 - -117.06129885278642 - - 624.2000122070312 - 26518.0390625 - - - 7.610000133514405 - - - - - - - 47.69122148863971 - -117.06065646372736 - - 623.7999877929688 - 26574.259765625 - - - 8.031999588012695 - - - - - - - 47.69158735871315 - -117.05973445437849 - - 625.5999755859375 - 26654.55078125 - - - 8.029000282287598 - - - - - - - 47.69189707003534 - -117.05899223685265 - - 625.5999755859375 - 26720.080078125 - - - 8.192000389099121 - - - - - - - 47.69217945635319 - -117.0583501830697 - - 625.5999755859375 - 26777.580078125 - - - 8.21500015258789 - - - - - - - 47.69238053821027 - -117.05777996219695 - - 625.7999877929688 - 26825.91015625 - - - 8.055000305175781 - - - - - - - 47.692711874842644 - -117.05691486597061 - - 625.5999755859375 - 26900.560546875 - - - 8.293999671936035 - - - - - - - 47.69292896613479 - -117.05631136894226 - - 626.0 - 26951.91015625 - - - 8.557000160217285 - - - - - - - 47.693161983042955 - -117.05561298877001 - - 627.0 - 27010.390625 - - - 8.354999542236328 - - - - - - - 47.69332107156515 - -117.05501846037805 - - 627.4000244140625 - 27058.380859375 - - - 7.998000144958497 - - - - - - - 47.69353657029569 - -117.05429015681148 - - 627.0 - 27118.08984375 - - - 8.529999732971191 - - - - - - - 47.69366984255612 - -117.05374985933304 - - 626.4000244140625 - 27161.25 - - - 8.630999565124512 - - - - - - - 47.69383706152439 - -117.05306866206229 - - 626.5999755859375 - 27215.650390625 - - - 7.771999835968018 - - - - - - - 47.69404417835176 - -117.05224488861859 - - 626.7999877929688 - 27281.619140625 - - - 8.246000289916992 - - - - - - - 47.6941922865808 - -117.05161515623331 - - 627.5999755859375 - 27331.689453125 - - - 8.343999862670898 - - - - - - - 47.69420695491135 - -117.05119639635086 - - 628.0 - 27363.259765625 - - - 7.89300012588501 - - - - - - - 8.236151453940634 - - - - - 222.52 - 1609.34 - 8.7397461 - 84 - Active - Manual - - - - - 47.69419555552304 - -117.05097905360162 - - 628.0 - 27379.669921875 - - - 8.204999923706055 - - - - - - - 47.6941663865 - -117.05024848692119 - - 628.5999755859375 - 27434.599609375 - - - 7.847000122070313 - - - - - - - 47.69414383918047 - -117.04971196129918 - - 629.0 - 27474.9296875 - - - 8.065999984741211 - - - - - - - 47.694110898301005 - -117.04910913482308 - - 629.0 - 27520.2890625 - - - 7.560999870300293 - - - - - - - 47.69414249807596 - -117.04855517484248 - - 629.0 - 27562.0390625 - - - 6.958000183105469 - - - - - - - 47.69419765099883 - -117.04813867807388 - - 629.0 - 27593.869140625 - - - 6.364999771118165 - - - - - - - 47.6941354572773 - -117.04799895174801 - - 629.0 - 27611.69921875 - - - 4.458000183105469 - - - - - - - 47.6938159391284 - -117.04806458204985 - - 629.0 - 27647.5 - - - 5.9670000076293945 - - - - - - - 47.6934308744967 - -117.04809349961579 - - 629.0 - 27690.419921875 - - - 7.1519999504089355 - - - - - - - 47.69282176159322 - -117.048131050542 - - 629.0 - 27758.2109375 - - - 8.473999977111816 - - - - - - - 47.69251389428973 - -117.0479494985193 - - 629.4000244140625 - 27795.8203125 - - - 7.5219998359680185 - - - - - - - 47.69240417517722 - -117.04767214134336 - - 629.7999877929688 - 27820.140625 - - - 8.107999801635742 - - - - - - - 47.69229588098824 - -117.04712463542819 - - 631.4000244140625 - 27863.109375 - - - 8.593000411987305 - - - - - - - 47.692273585125804 - -117.04653815366328 - - 634.4000244140625 - 27907.240234375 - - - 8.826000213623047 - - - - - - - 47.692159758880734 - -117.04611897468567 - - 634.4000244140625 - 27941.630859375 - - - 8.597999572753906 - - - - - - - 47.69206856377423 - -117.04597597941756 - - 634.5999755859375 - 27956.369140625 - - - 7.369999885559082 - - - - - - - 47.691752733662724 - -117.04552729614079 - - 635.0 - 28005.01953125 - - - 6.949999809265137 - - - - - - - 47.691487865522504 - -117.04517835751176 - - 635.0 - 28044.44921875 - - - 6.572000026702881 - - - - - - - 47.69120053388178 - -117.04478675499558 - - 635.0 - 28087.869140625 - - - 6.203000068664551 - - - - - - - 47.690704660490155 - -117.04409558326006 - - 635.4000244140625 - 28163.609375 - - - 6.885000228881837 - - - - - - - 47.6904330868274 - -117.04370196908712 - - 635.7999877929688 - 28205.8203125 - - - 7.035999774932861 - - - - - - - 47.69020275212824 - -117.04314155504107 - - 636.4000244140625 - 28255.099609375 - - - 7.039999961853027 - - - - - - - 47.689980464056134 - -117.04254509881139 - - 637.7999877929688 - 28306.25 - - - 6.39300012588501 - - - - - - - 47.68980083987117 - -117.04203254543245 - - 640.5999755859375 - 28349.55078125 - - - 6.186999797821045 - - - - - - - 47.68962364643812 - -117.0415548607707 - - 641.4000244140625 - 28390.5 - - - 5.8489999771118155 - - - - - - - 47.6894071418792 - -117.04104247502983 - - 641.4000244140625 - 28435.900390625 - - - 6.486999988555908 - - - - - - - 47.68913313746452 - -117.04043596051633 - - 642.5999755859375 - 28490.619140625 - - - 6.840000152587891 - - - - - - - 47.68879693932831 - -117.03963716514409 - - 642.4000244140625 - 28561.279296875 - - - 7.065999984741211 - - - - - - - 47.68840407952666 - -117.0386950392276 - - 641.7999877929688 - 28644.419921875 - - - 7.558000087738037 - - - - - - - 47.68807508982718 - -117.03791745007038 - - 641.5999755859375 - 28713.310546875 - - - 7.6539998054504395 - - - - - - - 47.68777024000883 - -117.0371930859983 - - 641.5999755859375 - 28777.419921875 - - - 7.123000144958496 - - - - - - - 47.68750579096377 - -117.03644474968314 - - 641.5999755859375 - 28840.919921875 - - - 7.938000202178955 - - - - - - - 47.687423061579466 - -117.03590596094728 - - 642.0 - 28882.48046875 - - - 8.314000129699707 - - - - - - - 47.68742029555142 - -117.035112362355 - - 642.0 - 28942.119140625 - - - 8.519000053405762 - - - - - - - 47.68741887062788 - -117.03476266935468 - - 642.0 - 28968.369140625 - - - 8.75100040435791 - - - - - - - 7.2323566155851156 - - - - - 267.82 - 1609.34 - 9.0945969 - 93 - Active - Manual - - - - - 47.68741895444691 - -117.03402497805655 - - 643.0 - 29023.759765625 - - - 9.230999946594238 - - - - - - - 47.68741996027529 - -117.03298553824425 - - 644.4000244140625 - 29101.76953125 - - - 8.668000221252441 - - - - - - - 47.68742733635008 - -117.03228455968201 - - 645.7999877929688 - 29154.41015625 - - - 7.519999980926514 - - - - - - - 47.68742465414107 - -117.03180025331676 - - 647.0 - 29190.76953125 - - - 6.059999942779541 - - - - - - - 47.68742565996945 - -117.03134486451745 - - 647.0 - 29224.94921875 - - - 4.881999969482422 - - - - - - - 47.68742725253105 - -117.03080733306706 - - 647.7999877929688 - 29265.30078125 - - - 5.764999866485596 - - - - - - - 47.6874334551394 - -117.0301488507539 - - 646.4000244140625 - 29314.7890625 - - - 7.068999767303468 - - - - - - - 47.68743563443422 - -117.02911645174026 - - 644.2000122070312 - 29392.2890625 - - - 7.75 - - - - - - - 47.68744686618447 - -117.02825898304582 - - 644.0 - 29456.66015625 - - - 8.045999526977539 - - - - - - - 47.68745005130768 - -117.02748684212565 - - 643.0 - 29514.669921875 - - - 8.286999702453613 - - - - - - - 47.68745583482087 - -117.02656659297645 - - 642.0 - 29583.779296875 - - - 8.637999534606934 - - - - - - - 47.68746145069599 - -117.02550234273076 - - 642.4000244140625 - 29663.669921875 - - - 8.876999855041504 - - - - - - - 47.68745633773506 - -117.02466515824199 - - 644.0 - 29726.5 - - - 8.975000381469727 - - - - - - - 47.68746874295175 - -117.0239632576704 - - 644.7999877929688 - 29779.220703125 - - - 7.5320000648498535 - - - - - - - 47.68746924586594 - -117.02355455607176 - - 646.0 - 29809.890625 - - - 6.133999824523926 - - - - - - - 47.687404956668615 - -117.02311433851719 - - 647.2000122070312 - 29843.83984375 - - - 4.849999904632568 - - - - - - - 47.68734443932772 - -117.02284737490118 - - 649.4000244140625 - 29864.7890625 - - - 3.492000102996826 - - - - - - - 47.687209490686655 - -117.02259675599635 - - 651.2000122070312 - 29888.880859375 - - - 3.441999912261963 - - - - - - - 47.68704118207097 - -117.02233557589352 - - 651.7999877929688 - 29915.98046875 - - - 3.38700008392334 - - - - - - - 47.68689173273742 - -117.02208185568452 - - 653.5999755859375 - 29941.400390625 - - - 3.177000045776367 - - - - - - - 47.68682283349335 - -117.02179536223412 - - 656.0 - 29964.2890625 - - - 3.2709999084472656 - - - - - - - 47.68681587651372 - -117.02148104086518 - - 657.7999877929688 - 29987.83984375 - - - 3.365000009536743 - - - - - - - 47.68688536249101 - -117.02120644971728 - - 658.5999755859375 - 30009.7109375 - - - 2.733999967575073 - - - - - - - 47.68701754510403 - -117.02094015665352 - - 659.5999755859375 - 30034.849609375 - - - 3.1419999599456787 - - - - - - - 47.68715836107731 - -117.02068526297808 - - 658.0 - 30059.5 - - - 4.929999828338623 - - - - - - - 47.68721804022789 - -117.02057118527591 - - 657.0 - 30070.3203125 - - - 5.412000179290771 - - - - - - - 47.68733764998615 - -117.02019047923386 - - 655.7999877929688 - 30101.919921875 - - - 5.265999794006347 - - - - - - - 47.68735474906862 - -117.02012099325657 - - 655.4000244140625 - 30107.470703125 - - - 5.552999973297119 - - - - - - - 47.68746287561953 - -117.01983768492937 - - 655.7999877929688 - 30131.880859375 - - - 6.102000236511231 - - - - - - - 47.68759765662253 - -117.01951255090535 - - 657.4000244140625 - 30160.259765625 - - - 5.675000190734863 - - - - - - - 47.68774718977511 - -117.01904978603125 - - 662.0 - 30198.720703125 - - - 6.409999847412109 - - - - - - - 47.68779136240482 - -117.01879036612809 - - 662.4000244140625 - 30218.76953125 - - - 6.684000015258789 - - - - - - - 47.68778909929097 - -117.01816717162728 - - 663.0 - 30265.630859375 - - - 6.692999839782715 - - - - - - - 47.6878338586539 - -117.01759644784033 - - 664.7999877929688 - 30308.76953125 - - - 6.163000106811523 - - - - - - - 47.68784039653838 - -117.01753215864301 - - 665.4000244140625 - 30313.619140625 - - - 4.854000091552734 - - - - - - - 47.687931256368756 - -117.01717869378626 - - 669.7999877929688 - 30342.0 - - - 4.729000091552734 - - - - - - - 47.6879564858973 - -117.01695305295289 - - 670.5999755859375 - 30359.169921875 - - - 5.7230000495910645 - - - - - - - 47.68792463466525 - -117.01647595502436 - - 668.0 - 30394.69921875 - - - 5.922999858856201 - - - - - - - 47.68791424110532 - -117.01640009880066 - - 667.7999877929688 - 30400.439453125 - - - 5.73799991607666 - - - - - - - 47.68789269961417 - -117.01626154594123 - - 667.2000122070312 - 30410.73046875 - - - 5.144000053405762 - - - - - - - 47.68780745565891 - -117.0157434605062 - - 666.2000122070312 - 30450.669921875 - - - 5.705999851226807 - - - - - - - 47.68778683617711 - -117.0156728848815 - - 666.0 - 30456.390625 - - - 5.7189998626708975 - - - - - - - 47.68776688724756 - -117.01551706530154 - - 666.0 - 30468.26953125 - - - 5.940999984741211 - - - - - - - 47.68765306100249 - -117.01517139561474 - - 666.7999877929688 - 30497.029296875 - - - 7.189000129699707 - - - - - - - 47.68743655644357 - -117.014648783952 - - 666.7999877929688 - 30543.0390625 - - - 6.572999954223633 - - - - - - - 47.68727914430201 - -117.01423295773566 - - 663.7999877929688 - 30578.8203125 - - - 5.962999820709228 - - - - - - - 6.009050833022179 - - - - - 253.77 - 1609.34 - 11.465852699999997 - 89 - Active - Manual - - - - - 47.687233965843916 - -117.0140993501991 - - 663.4000244140625 - 30590.01953125 - - - 5.60099983215332 - - - - - - - 47.687033554539084 - -117.01350775547326 - - 662.2000122070312 - 30639.69921875 - - - 6.210000038146973 - - - - - - - 47.68679718486965 - -117.01281105168164 - - 663.2000122070312 - 30698.19921875 - - - 7.313000202178955 - - - - - - - 47.686618734151125 - -117.0121893659234 - - 662.7999877929688 - 30748.9609375 - - - 8.458999633789062 - - - - - - - 47.68655545078218 - -117.0118423551321 - - 661.5999755859375 - 30775.990234375 - - - 9.010000228881836 - - - - - - - 47.68660138361156 - -117.01123366132379 - - 659.5999755859375 - 30822.3203125 - - - 9.265999794006348 - - - - - - - 47.68680456094444 - -117.01080467551947 - - 659.0 - 30861.7890625 - - - 9.869999885559082 - - - - - - - 47.68702508881688 - -117.01053829863667 - - 658.4000244140625 - 30893.630859375 - - - 10.612000465393066 - - - - - - - 47.68761198967695 - -117.00994343496859 - - 651.2000122070312 - 30972.830078125 - - - 11.314000129699707 - - - - - - - 47.68778423778713 - -117.00937254354358 - - 648.0 - 31019.939453125 - - - 11.777000427246094 - - - - - - - 47.68789445981383 - -117.00884783640504 - - 648.2000122070312 - 31061.2109375 - - - 10.317999839782713 - - - - - - - 47.68808129243553 - -117.00844525359571 - - 649.2000122070312 - 31098.109375 - - - 9.225000381469727 - - - - - - - 47.688180450350046 - -117.00829203240573 - - 649.2000122070312 - 31114.05078125 - - - 7.9730000495910645 - - - - - - - 47.688393937423825 - -117.0077998470515 - - 652.2000122070312 - 31157.869140625 - - - 6.258999824523926 - - - - - - - 47.68853785470128 - -117.00750128366053 - - 652.2000122070312 - 31185.41015625 - - - 4.591000080108643 - - - - - - - 47.68867917358875 - -117.00716097839177 - - 655.0 - 31215.400390625 - - - 4.283999919891357 - - - - - - - 47.688860055059195 - -117.0068053342402 - - 657.0 - 31248.7890625 - - - 4.769999980926514 - - - - - - - 47.68906314857304 - -117.00641239061952 - - 658.4000244140625 - 31285.94921875 - - - 4.644999980926514 - - - - - - - 47.689248472452164 - -117.00603235512972 - - 659.4000244140625 - 31321.130859375 - - - 5.026000022888184 - - - - - - - 47.68943605944514 - -117.00555785559118 - - 659.2000122070312 - 31362.44921875 - - - 5.9029998779296875 - - - - - - - 47.68967159092426 - -117.00494354590774 - - 659.7999877929688 - 31415.48046875 - - - 6.627999782562256 - - - - - - - 47.689871583133936 - -117.0045015681535 - - 659.2000122070312 - 31455.44921875 - - - 6.662000179290772 - - - - - - - 47.69013678655028 - -117.0038746856153 - - 656.5999755859375 - 31510.990234375 - - - 6.941999912261963 - - - - - - - 47.69039964303374 - -117.00333564542234 - - 655.0 - 31561.0390625 - - - 8.342000007629395 - - - - - - - 47.690581446513534 - -117.00310128740966 - - 656.7999877929688 - 31587.869140625 - - - 8.942999839782715 - - - - - - - 47.69101998768747 - -117.00273055583239 - - 656.7999877929688 - 31644.060546875 - - - 8.027000427246094 - - - - - - - 47.69140463322401 - -117.0024501811713 - - 656.0 - 31691.810546875 - - - 7.959000110626221 - - - - - - - 47.691671596840024 - -117.00228539295495 - - 655.2000122070312 - 31723.9296875 - - - 8.029000282287598 - - - - - - - 47.69197879359126 - -117.00206545181572 - - 655.0 - 31761.880859375 - - - 7.590000152587891 - - - - - - - 47.692341059446335 - -117.00174643658102 - - 654.0 - 31809.009765625 - - - 7.854000091552735 - - - - - - - 47.69245186820626 - -117.00160318985581 - - 653.5999755859375 - 31825.279296875 - - - 8.13700008392334 - - - - - - - 47.69257985986769 - -117.00122809968889 - - 654.0 - 31857.3203125 - - - 8.008999824523926 - - - - - - - 47.692749090492725 - -117.00056735426188 - - 653.0 - 31910.310546875 - - - 7.571000099182129 - - - - - - - 47.692879596725106 - -117.00007156468928 - - 652.5999755859375 - 31950.19921875 - - - 6.646999835968018 - - - - - - - 47.692976240068674 - -116.99967577122152 - - 656.2000122070312 - 31981.849609375 - - - 5.276000022888184 - - - - - - - 47.69304287619889 - -116.99931006878614 - - 657.5999755859375 - 32010.25 - - - 4.056000232696533 - - - - - - - 47.69308554008603 - -116.99901636689901 - - 659.4000244140625 - 32032.759765625 - - - 3.752000093460083 - - - - - - - 47.69316759891808 - -116.99861596338451 - - 662.0 - 32064.150390625 - - - 3.9240000247955322 - - - - - - - 47.693237755447626 - -116.99823534116149 - - 664.7999877929688 - 32093.75 - - - 3.2890000343322754 - - - - - - - 47.693290896713734 - -116.99798665009439 - - 666.2000122070312 - 32113.26953125 - - - 2.7890000343322754 - - - - - - - 47.693360382691026 - -116.99773435480893 - - 666.7999877929688 - 32133.7890625 - - - 2.931999921798706 - - - - - - - 47.69349256530404 - -116.99743595905602 - - 666.7999877929688 - 32160.279296875 - - - 3.311000108718872 - - - - - - - 47.69359138794243 - -116.99719028547406 - - 667.2000122070312 - 32181.810546875 - - - 3.0759999752044678 - - - - - - - 47.69361695274711 - -116.9971126690507 - - 667.5999755859375 - 32188.26953125 - - - 3.2320001125335693 - - - - - - - 6.341742499507427 - - - - - 445.41 - 1609.34 - 5.8974595 - 116 - Active - Manual - - - - - 47.69372273236513 - -116.99691929854453 - - 668.2000122070312 - 32206.240234375 - - - 3.5950000286102295 - - - - - - - 47.693817699328065 - -116.99665375985205 - - 669.0 - 32228.869140625 - - - 3.2320001125335693 - - - - - - - 47.69389607012272 - -116.9963665958494 - - 670.4000244140625 - 32251.83984375 - - - 3.828000068664551 - - - - - - - 47.69395876675844 - -116.99609125033021 - - 669.5999755859375 - 32273.1796875 - - - 4.269000053405762 - - - - - - - 47.69389506429434 - -116.99587407521904 - - 669.2000122070312 - 32291.0703125 - - - 3.5769999027252197 - - - - - - - 47.69377185031772 - -116.99560635723174 - - 669.7999877929688 - 32315.400390625 - - - 4.867000102996826 - - - - - - - 47.69372365437448 - -116.99532858096063 - - 669.2000122070312 - 32337.08984375 - - - 3.615000009536743 - - - - - - - 47.69373496994376 - -116.99508936144412 - - 668.4000244140625 - 32355.029296875 - - - 3.5880000591278076 - - - - - - - 47.69373748451471 - -116.9947898760438 - - 669.7999877929688 - 32377.58984375 - - - 4.511000156402588 - - - - - - - 47.69368124194443 - -116.99451293796301 - - 672.7999877929688 - 32397.400390625 - - - 3.963000059127808 - - - - - - - 47.693657437339425 - -116.99426575563848 - - 673.7999877929688 - 32416.009765625 - - - 4.6519999504089355 - - - - - - - 47.693591974675655 - -116.99378605931997 - - 675.5999755859375 - 32452.7890625 - - - 5.254000186920165 - - - - - - - 47.693564146757126 - -116.99361347593367 - - 675.4000244140625 - 32466.150390625 - - - 4.453999996185303 - - - - - - - 47.693515196442604 - -116.9934602547437 - - 675.7999877929688 - 32478.9296875 - - - 4.260000228881836 - - - - - - - 47.69344378262758 - -116.99324609711766 - - 676.0 - 32496.9296875 - - - 4.5 - - - - - - - 47.69329215399921 - -116.99301207438111 - - 677.2000122070312 - 32521.119140625 - - - 4.0329999923706055 - - - - - - - 47.69317103549838 - -116.99278324842453 - - 679.7999877929688 - 32543.0390625 - - - 3.6530001163482666 - - - - - - - 47.69315536133945 - -116.99263229034841 - - 681.0 - 32554.5 - - - 2.2909998893737793 - - - - - - - 47.69307724200189 - -116.99243674054742 - - 683.7999877929688 - 32571.470703125 - - - 3.3940000534057617 - - - - - - - 47.693101884797215 - -116.99218637309968 - - 687.2000122070312 - 32590.51953125 - - - 3.1740000247955322 - - - - - - - 47.69319299608469 - -116.99197825044394 - - 689.0 - 32609.2890625 - - - 3.1300001144409184 - - - - - - - 47.69332098774612 - -116.99183609336615 - - 689.5999755859375 - 32626.859375 - - - 2.927000045776367 - - - - - - - 47.69343305379152 - -116.99162126518786 - - 691.7999877929688 - 32647.26953125 - - - 3.4010000228881836 - - - - - - - 47.69354738295078 - -116.9914035871625 - - 692.4000244140625 - 32667.330078125 - - - 2.867000102996826 - - - - - - - 47.69360245205462 - -116.99127676896751 - - 692.5999755859375 - 32678.470703125 - - - 2.783999919891357 - - - - - - - 47.69363765604794 - -116.99107157997787 - - 693.7999877929688 - 32693.75 - - - 3.055999994277954 - - - - - - - 47.69364695996046 - -116.99078869074583 - - 695.0 - 32715.080078125 - - - 3.555999994277954 - - - - - - - 47.69367026165128 - -116.9904550909996 - - 696.2000122070312 - 32740.259765625 - - - 2.796999931335449 - - - - - - - 47.69368635490537 - -116.99018368497491 - - 696.5999755859375 - 32760.44921875 - - - 2.8849999904632564 - - - - - - - 47.69369666464627 - -116.9899444654584 - - 696.5999755859375 - 32778.0390625 - - - 2.930999994277954 - - - - - - - 47.69368685781956 - -116.98984187096357 - - 697.2000122070312 - 32785.69921875 - - - 1.9170000553131106 - - - - - - - 47.693598177284 - -116.9896664377302 - - 700.2000122070312 - 32801.12890625 - - - 1.9279999732971191 - - - - - - - 47.69354956224561 - -116.98948178440332 - - 703.2000122070312 - 32815.890625 - - - 2.4600000381469727 - - - - - - - 47.693546460941434 - -116.98921456933022 - - 707.5999755859375 - 32836.05859375 - - - 3.36299991607666 - - - - - - - 47.693555345758796 - -116.98917827568948 - - 708.2000122070312 - 32838.94921875 - - - 2.882999897003174 - - - - - - - 47.693657940253615 - -116.98893327265978 - - 710.4000244140625 - 32860.48046875 - - - 2.691999912261963 - - - - - - - 47.69378408789635 - -116.98882103897631 - - 711.5999755859375 - 32876.91015625 - - - 2.73799991607666 - - - - - - - 47.693925239145756 - -116.98879186995327 - - 712.4000244140625 - 32893.0703125 - - - 2.693000078201294 - - - - - - - 47.69408994354308 - -116.98880796320736 - - 712.5999755859375 - 32911.41015625 - - - 3.0569999217987065 - - - - - - - 47.69432555884123 - -116.98874467983842 - - 712.7999877929688 - 32938.26171875 - - - 3.3559999465942383 - - - - - - - 47.69448095932603 - -116.98861668817699 - - 713.2000122070312 - 32958.05859375 - - - 3.2990000247955322 - - - - - - - 47.6945947855711 - -116.98848308064044 - - 713.4000244140625 - 32973.83984375 - - - 2.630000114440918 - - - - - - - 47.69468774087727 - -116.9882480520755 - - 714.4000244140625 - 32994.171875 - - - 2.9040000438690186 - - - - - - - 47.69482436589897 - -116.98795384727418 - - 716.4000244140625 - 33021.05078125 - - - 2.986999988555908 - - - - - - - 47.69505277276039 - -116.98760616593063 - - 717.5999755859375 - 33057.44140625 - - - 3.308000087738037 - - - - - - - 47.695175148546696 - -116.98739904910326 - - 718.5999755859375 - 33077.9296875 - - - 3.4159998893737797 - - - - - - - 47.695296350866556 - -116.98719587177038 - - 719.7999877929688 - 33097.78125 - - - 3.306999921798706 - - - - - - - 47.69539735279977 - -116.98700727894902 - - 721.0 - 33115.1796875 - - - 2.900000095367431 - - - - - - - 47.69547094590962 - -116.98669513687491 - - 722.4000244140625 - 33139.55078125 - - - 3.0460000038146973 - - - - - - - 47.69553146325052 - -116.98637603782117 - - 723.4000244140625 - 33164.359375 - - - 3.5439999103546143 - - - - - - - 47.6956413500011 - -116.98606599122286 - - 725.0 - 33190.6484375 - - - 3.756999969482422 - - - - - - - 47.695787865668535 - -116.98579056188464 - - 727.5999755859375 - 33216.96875 - - - 4.38700008392334 - - - - - - - 47.69592893309891 - -116.98557263240218 - - 729.7999877929688 - 33239.609375 - - - 3.7730000019073486 - - - - - - - 47.69609673880041 - -116.9852853845805 - - 730.5999755859375 - 33268.23046875 - - - 4.0879998207092285 - - - - - - - 47.69623084925115 - -116.98493326082826 - - 730.0 - 33298.4296875 - - - 4.315000057220459 - - - - - - - 47.69632807932794 - -116.98463318869472 - - 729.4000244140625 - 33322.94921875 - - - 4.086999893188477 - - - - - - - 47.696410389617085 - -116.98432708159089 - - 728.5999755859375 - 33347.6796875 - - - 4.122000217437744 - - - - - - - 47.696514492854476 - -116.98403765447438 - - 728.2000122070312 - 33372.41015625 - - - 4.122000217437744 - - - - - - - 47.69660065881908 - -116.98361529037356 - - 731.0 - 33405.51953125 - - - 3.677999973297119 - - - - - - - 47.69663594663143 - -116.983259646222 - - 733.2000122070312 - 33432.5 - - - 3.8550000190734868 - - - - - - - 47.696633180603385 - -116.98289687745273 - - 734.2000122070312 - 33459.640625 - - - 3.8770000934600835 - - - - - - - 47.69657685421407 - -116.9825896807015 - - 736.4000244140625 - 33483.640625 - - - 4.0 - - - - - - - 47.696434361860156 - -116.98221165686846 - - 738.7999877929688 - 33516.3984375 - - - 4.09499979019165 - - - - - - - 47.696305280551314 - -116.9819004368037 - - 740.0 - 33543.8203125 - - - 3.9170000553131104 - - - - - - - 47.696216851472855 - -116.98159684427083 - - 740.7999877929688 - 33568.578125 - - - 3.5369999408721924 - - - - - - - 47.69608366303146 - -116.98117649182677 - - 741.4000244140625 - 33603.41015625 - - - 4.354000091552734 - - - - - - - 47.69597176462412 - -116.98070794343948 - - 743.0 - 33640.6484375 - - - 4.138000011444092 - - - - - - - 47.695914935320616 - -116.98044215328991 - - 744.5999755859375 - 33661.66015625 - - - 4.202000141143799 - - - - - - - 47.69585165195167 - -116.98007075116038 - - 746.4000244140625 - 33690.48828125 - - - 4.804999828338623 - - - - - - - 47.69583505578339 - -116.97994016110897 - - 746.4000244140625 - 33700.44140625 - - - 4.9730000495910645 - - - - - - - 47.695806976407766 - -116.97980747558177 - - 746.5999755859375 - 33710.87890625 - - - 5.2230000495910645 - - - - - - - 47.69576766528189 - -116.97954704985023 - - 747.2000122070312 - 33730.890625 - - - 5.000999927520751 - - - - - - - 47.695742854848504 - -116.97910155169666 - - 747.4000244140625 - 33764.37890625 - - - 5.580999851226807 - - - - - - - 47.695742351934314 - -116.97893709875643 - - 747.4000244140625 - 33776.73046875 - - - 6.176000118255615 - - - - - - - 47.69570656120777 - -116.9786005653441 - - 746.7999877929688 - 33802.30859375 - - - 6.395999908447266 - - - - - - - 3.6131743654161332 - - - - - 356.47 - 1609.34 - 7.9554539 - 87 - Active - Manual - - - - - 47.6956981793046 - -116.97842655703425 - - 746.7999877929688 - 33815.37109375 - - - 6.5289998054504395 - - - - - - - 47.695669177919626 - -116.97783035226166 - - 747.0 - 33860.25 - - - 7.480000019073487 - - - - - - - 47.69569465890527 - -116.97710925713181 - - 746.5999755859375 - 33914.48046875 - - - 7.748000144958496 - - - - - - - 47.69568728283048 - -116.97626084089279 - - 746.2000122070312 - 33978.16015625 - - - 7.960000038146973 - - - - - - - 47.6956844329834 - -116.9754333794117 - - 746.7999877929688 - 34040.23828125 - - - 7.760000228881836 - - - - - - - 47.69567898474634 - -116.97456845082343 - - 747.0 - 34105.1484375 - - - 7.211999893188477 - - - - - - - 47.69567077048123 - -116.97371508926153 - - 748.0 - 34169.26171875 - - - 7.124000072479248 - - - - - - - 47.69566498696804 - -116.97293364442885 - - 747.0 - 34227.9296875 - - - 7.333000183105469 - - - - - - - 47.69571628421545 - -116.97203217074275 - - 747.4000244140625 - 34295.9609375 - - - 7.55900001525879 - - - - - - - 47.69583547487855 - -116.97158834896982 - - 747.2000122070312 - 34331.8515625 - - - 7.17799997329712 - - - - - - - 47.69600663334131 - -116.97118576616049 - - 748.5999755859375 - 34367.5703125 - - - 7.144999980926514 - - - - - - - 47.69623084925115 - -116.97063096798956 - - 750.7999877929688 - 34416.0390625 - - - 6.923999786376953 - - - - - - - 47.6963628642261 - -116.97030868381262 - - 751.5999755859375 - 34444.3515625 - - - 7.076000213623047 - - - - - - - 47.6965013332665 - -116.97006527334452 - - 751.4000244140625 - 34468.25 - - - 7.966000080108643 - - - - - - - 47.69665245898068 - -116.96974726393819 - - 750.4000244140625 - 34497.41015625 - - - 7.289999961853027 - - - - - - - 47.69670769572258 - -116.96958415210247 - - 749.4000244140625 - 34511.1015625 - - - 6.8460001945495605 - - - - - - - 47.696720687672496 - -116.96922616101801 - - 748.0 - 34538.5703125 - - - 6.868000030517578 - - - - - - - 47.69667995162308 - -116.96906765922904 - - 747.7999877929688 - 34551.30859375 - - - 6.36899995803833 - - - - - - - 47.69656654447317 - -116.96871033869684 - - 747.5999755859375 - 34580.91015625 - - - 7.39900016784668 - - - - - - - 47.69651616923511 - -116.96822804398835 - - 748.0 - 34617.62109375 - - - 7.3420000076293945 - - - - - - - 47.69666117615998 - -116.96795294992626 - - 751.7999877929688 - 34644.21875 - - - 6.651000022888184 - - - - - - - 47.69692277535796 - -116.96792998351157 - - 752.0 - 34673.109375 - - - 7.222000122070313 - - - - - - - 47.69699695520103 - -116.9679316598922 - - 752.0 - 34681.33984375 - - - 8.229999542236328 - - - - - - - 47.69721547141671 - -116.96794255636632 - - 751.7999877929688 - 34705.66015625 - - - 8.104999542236328 - - - - - - - 47.697373386472464 - -116.96801355108619 - - 750.4000244140625 - 34723.921875 - - - 9.133000373840332 - - - - - - - 47.69762568175793 - -116.96791464462876 - - 751.4000244140625 - 34753.51953125 - - - 7.3979997634887695 - - - - - - - 47.69776959903538 - -116.96773745119572 - - 749.4000244140625 - 34774.33984375 - - - 6.940999984741212 - - - - - - - 47.69786087796092 - -116.96749605238438 - - 747.7999877929688 - 34795.25 - - - 6.96999979019165 - - - - - - - 47.697838163003325 - -116.96709875017405 - - 745.5999755859375 - 34825.80078125 - - - 7.638999938964844 - - - - - - - 47.697768760845065 - -116.96691853925586 - - 744.4000244140625 - 34841.3984375 - - - 7.798999786376953 - - - - - - - 47.69756047055125 - -116.96642149239779 - - 745.7999877929688 - 34885.25 - - - 7.307000160217285 - - - - - - - 47.697535660117865 - -116.96634228341281 - - 747.0 - 34891.78125 - - - 6.531000137329102 - - - - - - - 47.69737254828215 - -116.96575756184757 - - 748.4000244140625 - 34939.21875 - - - 6.7779998779296875 - - - - - - - 47.69714053720236 - -116.96525196544826 - - 748.4000244140625 - 34985.0703125 - - - 6.548999786376953 - - - - - - - 47.69687935709953 - -116.96490227244794 - - 750.2000122070312 - 35024.23828125 - - - 6.5289998054504395 - - - - - - - 47.69661666825414 - -116.96462826803327 - - 751.7999877929688 - 35059.921875 - - - 7.135000228881836 - - - - - - - 47.69640536047518 - -116.96436155587435 - - 750.7999877929688 - 35090.75 - - - 6.165999889373779 - - - - - - - 47.69611995667219 - -116.9639945961535 - - 750.4000244140625 - 35132.640625 - - - 5.984000205993652 - - - - - - - 47.69589205272496 - -116.96350643411279 - - 752.5999755859375 - 35177.140625 - - - 7.418000221252441 - - - - - - - 47.69576448015869 - -116.96310879662633 - - 755.7999877929688 - 35210.16015625 - - - 4.7170000076293945 - - - - - - - 47.69575819373131 - -116.96308155544102 - - 755.5999755859375 - 35212.2890625 - - - 2.125 - - - - - - - 47.69573153927922 - -116.96308314800262 - - 755.4000244140625 - 35214.44921875 - - - 0.3089999854564667 - - - - - - - 47.695822566747665 - -116.96297384798527 - - 756.4000244140625 - 35227.62890625 - - - 0.11900000274181366 - - - - - - - 47.69574134610593 - -116.962875360623 - - 756.4000244140625 - 35238.109375 - - - 1.496999979019165 - - - - - - - 47.69566657952964 - -116.96267746388912 - - 757.0 - 35254.8203125 - - - 3.3429999351501465 - - - - - - - 47.69554143771529 - -116.96242944337428 - - 755.5999755859375 - 35277.48828125 - - - 3.7780001163482666 - - - - - - - 47.69545778632164 - -116.96216817945242 - - 754.0 - 35299.0 - - - 3.5850000381469727 - - - - - - - 47.69536969251931 - -116.96178688667715 - - 750.7999877929688 - 35329.1796875 - - - 6.035999774932861 - - - - - - - 47.69525393843651 - -116.96131465025246 - - 746.5999755859375 - 35366.51953125 - - - 7.4670000076293945 - - - - - - - 47.695143381133676 - -116.96075809188187 - - 741.5999755859375 - 35409.9609375 - - - 8.687999725341797 - - - - - - - 47.69511396065354 - -116.96064334362745 - - 740.7999877929688 - 35419.140625 - - - 9.184000015258789 - - - - - - - 4.514668819536006 - - - - - 132.1 - 1609.34 - 18.0467949 - 50 - Active - Manual - - - - - 47.69511396065354 - -116.96064334362745 - - 740.7999877929688 - 35419.140625 - - - - - 47.69489577971399 - -116.95994613692164 - - 736.4000244140625 - 35476.3203125 - - - 11.437000274658203 - - - - - - - 47.69476309418678 - -116.95907819084823 - - 734.7999877929688 - 35543.19140625 - - - 11.145000457763672 - - - - - - - 47.69462135620415 - -116.9584163557738 - - 733.0 - 35595.23046875 - - - 13.010000228881836 - - - - - - - 47.69445078447461 - -116.95734975859523 - - 729.2000122070312 - 35677.640625 - - - 16.481000900268555 - - - - - - - 47.69428507424891 - -116.95656303316355 - - 727.2000122070312 - 35739.48046875 - - - 15.461000442504883 - - - - - - - 47.69433067180216 - -116.95570296607912 - - 721.5999755859375 - 35804.37890625 - - - 16.225000381469727 - - - - - - - 47.69436654634774 - -116.95548855699599 - - 719.7999877929688 - 35820.94921875 - - - 16.56999969482422 - - - - - - - 47.69463166594505 - -116.95444559678435 - - 711.5999755859375 - 35904.78125 - - - 16.766000747680664 - - - - - - - 47.69501153379679 - -116.95344286970794 - - 699.0 - 35991.1796875 - - - 17.280000686645508 - - - - - - - 47.69560388289392 - -116.95200528949499 - - 684.7999877929688 - 36117.51953125 - - - 18.048999786376953 - - - - - - - 47.69615348428488 - -116.95082905702293 - - 677.7999877929688 - 36225.1015625 - - - 17.93000030517578 - - - - - - - 47.696502171456814 - -116.9503778591752 - - 672.4000244140625 - 36276.75 - - - 17.216999053955078 - - - - - - - 47.6968430634588 - -116.9500984903425 - - 670.2000122070312 - 36320.05859375 - - - 14.4350004196167 - - - - - - - 47.697163335978985 - -116.94995935074985 - - 668.2000122070312 - 36357.16015625 - - - 12.366000175476074 - - - - - - - 47.69741244614124 - -116.94972608238459 - - 666.4000244140625 - 36391.51953125 - - - 8.590999603271484 - - - - - - - 47.697345558553934 - -116.9495284371078 - - 666.4000244140625 - 36407.2109375 - - - 7.843999862670898 - - - - - - - 47.69712586887181 - -116.94927077740431 - - 666.2000122070312 - 36437.69140625 - - - 10.159999847412108 - - - - - - - 47.696761758998036 - -116.94877238944173 - - 665.7999877929688 - 36492.73046875 - - - 9.173999786376953 - - - - - - - 47.69658607430756 - -116.9485288951546 - - 665.2000122070312 - 36519.44921875 - - - 8.904999732971191 - - - - - - - 47.69639496691525 - -116.94797275587916 - - 663.0 - 36566.53125 - - - 9.416000366210938 - - - - - - - 47.69637577235699 - -116.94784275256097 - - 662.5999755859375 - 36576.46875 - - - 9.944999694824219 - - - - - - - 47.696320451796055 - -116.94728108122945 - - 665.4000244140625 - 36619.12890625 - - - 10.663999557495117 - - - - - - - 47.69646135158837 - -116.94634197279811 - - 665.2000122070312 - 36691.421875 - - - 10.32800006866455 - - - - - - - 47.696668887510896 - -116.9456896930933 - - 663.7999877929688 - 36745.6015625 - - - 10.836000442504883 - - - - - - - 47.69671616144478 - -116.94556823931634 - - 663.0 - 36756.109375 - - - 10.51200008392334 - - - - - - - 47.696958566084504 - -116.94497354328632 - - 662.0 - 36808.4609375 - - - 10.470000267028809 - - - - - - - 47.697085635736585 - -116.94417675957084 - - 663.5999755859375 - 36869.578125 - - - 10.185999870300293 - - - - - - - 47.697090581059456 - -116.94403477013111 - - 663.7999877929688 - 36880.23828125 - - - 10.65999984741211 - - - - - - - 47.69704003818333 - -116.94342498667538 - - 664.2000122070312 - 36926.33984375 - - - 9.218999862670898 - - - - - - - 47.69702235236764 - -116.94329456426203 - - 664.4000244140625 - 36936.26953125 - - - 9.934000015258789 - - - - - - - 47.69688128493726 - -116.94288058206439 - - 665.5999755859375 - 36971.0703125 - - - 8.699000358581543 - - - - - - - 47.696700571104884 - -116.94239929318428 - - 666.7999877929688 - 37012.328125 - - - 6.877999782562256 - - - - - - - 47.69667509011924 - -116.94232653826475 - - 667.2000122070312 - 37018.44921875 - - - 6.11299991607666 - - - - - - - 47.69665086641908 - -116.94224875420332 - - 667.4000244140625 - 37024.87890625 - - - 6.429999828338624 - - - - - - - 12.182770583648752 - - - - - 216.25 - 1609.34 - 13.215669600000002 - 79 - Active - Manual - - - - - 47.69665086641908 - -116.94224875420332 - - 667.4000244140625 - 37024.87890625 - - - - - 47.696537459269166 - -116.94175413809717 - - 668.0 - 37064.01953125 - - - 6.5250000953674325 - - - - - - - 47.69643075764179 - -116.9413984939456 - - 668.2000122070312 - 37093.23046875 - - - 7.302000045776367 - - - - - - - 47.696303855627775 - -116.94067295640707 - - 668.5999755859375 - 37149.51171875 - - - 8.039999961853027 - - - - - - - 47.69621073268354 - -116.94005923345685 - - 669.7999877929688 - 37196.6796875 - - - 7.861999988555908 - - - - - - - 47.69619363360107 - -116.93954416550696 - - 670.0 - 37235.1015625 - - - 6.4029998779296875 - - - - - - - 47.69612045958638 - -116.93907578475773 - - 670.5999755859375 - 37271.28125 - - - 6.0300002098083505 - - - - - - - 47.6961038634181 - -116.93900705315173 - - 670.7999877929688 - 37276.73046875 - - - 5.453000068664551 - - - - - - - 47.696090787649155 - -116.938312696293 - - 672.0 - 37328.91015625 - - - 5.796999931335449 - - - - - - - 47.69607067108154 - -116.93800424225628 - - 672.5999755859375 - 37352.08984375 - - - 5.796000003814697 - - - - - - - 47.696078550070524 - -116.93784976378083 - - 673.4000244140625 - 37363.71875 - - - 5.815999984741211 - - - - - - - 47.69611744210124 - -116.93757047876716 - - 676.0 - 37385.109375 - - - 5.347000122070312 - - - - - - - 47.69622925668955 - -116.93702079355717 - - 679.2000122070312 - 37428.12890625 - - - 4.78000020980835 - - - - - - - 47.69641156308353 - -116.93643825128675 - - 680.5999755859375 - 37476.25 - - - 6.014999866485596 - - - - - - - 47.69658766686916 - -116.93594036623836 - - 679.7999877929688 - 37518.4296875 - - - 6.025000095367432 - - - - - - - 47.69660895690322 - -116.93587037734687 - - 680.0 - 37524.19140625 - - - 5.76200008392334 - - - - - - - 47.69673518836498 - -116.9356270506978 - - 680.0 - 37547.2109375 - - - 5.755000114440918 - - - - - - - 47.696815989911556 - -116.93542756140232 - - 680.2000122070312 - 37564.66015625 - - - 5.817999839782715 - - - - - - - 47.69705277867615 - -116.9350746832788 - - 681.2000122070312 - 37601.9609375 - - - 5.328000068664551 - - - - - - - 47.69715688191354 - -116.93492976017296 - - 681.4000244140625 - 37617.46875 - - - 3.1019999980926514 - - - - - - - 47.69727825187147 - -116.93466975353658 - - 681.5999755859375 - 37641.19140625 - - - 3.9539999961853027 - - - - - - - 47.69739559851587 - -116.93437588401139 - - 682.0 - 37666.73828125 - - - 4.257999897003174 - - - - - - - 47.69752996042371 - -116.93395636975765 - - 681.0 - 37701.4609375 - - - 4.959000110626221 - - - - - - - 47.69764915108681 - -116.9335497636348 - - 680.2000122070312 - 37734.66015625 - - - 5.533999919891357 - - - - - - - 47.697751661762595 - -116.93305497989058 - - 679.4000244140625 - 37773.5 - - - 6.473999977111817 - - - - - - - 47.697923155501485 - -116.93253538571298 - - 676.0 - 37816.921875 - - - 8.684000015258789 - - - - - - - 47.69809213466942 - -116.93194127641618 - - 676.4000244140625 - 37865.33984375 - - - 9.684000015258789 - - - - - - - 47.69815944135189 - -116.9312274735421 - - 676.2000122070312 - 37919.51953125 - - - 10.83399963378906 - - - - - - - 47.69815759733319 - -116.93078935146332 - - 677.2000122070312 - 37952.3984375 - - - 10.961999893188477 - - - - - - - 47.69793564453721 - -116.93024653941393 - - 677.2000122070312 - 37998.8203125 - - - 11.604999542236328 - - - - - - - 47.69787638448179 - -116.93000388331711 - - 675.2000122070312 - 38018.109375 - - - 9.640999794006348 - - - - - - - 47.697702292352915 - -116.92904918454587 - - 672.0 - 38092.48828125 - - - 10.62600040435791 - - - - - - - 47.69773573614657 - -116.9282241538167 - - 664.7999877929688 - 38152.73046875 - - - 12.04800033569336 - - - - - - - 47.697718972340226 - -116.92791385576129 - - 663.2000122070312 - 38175.98828125 - - - 11.633000373840332 - - - - - - - 47.697542952373624 - -116.92725579254329 - - 661.7999877929688 - 38229.19921875 - - - 10.642000198364258 - - - - - - - 47.69722376950085 - -116.92651768215 - - 660.0 - 38295.12109375 - - - 13.184000015258789 - - - - - - - 47.69676737487316 - -116.9259169511497 - - 659.0 - 38363.5 - - - 13.675999641418457 - - - - - - - 47.69641047343612 - -116.92564487457275 - - 659.4000244140625 - 38408.2109375 - - - 11.177000045776367 - - - - - - - 47.695968663319945 - -116.92531186155975 - - 657.4000244140625 - 38463.37109375 - - - 9.192999839782715 - - - - - - - 47.69561327062547 - -116.9249462429434 - - 658.4000244140625 - 38511.44921875 - - - 8.013999938964844 - - - - - - - 47.69521303474903 - -116.92457827739418 - - 659.2000122070312 - 38563.76953125 - - - 7.473999977111816 - - - - - - - 47.69484884105623 - -116.92422363907099 - - 659.0 - 38612.23046875 - - - 6.922999858856201 - - - - - - - 47.694753874093294 - -116.92411316558719 - - 658.7999877929688 - 38625.69921875 - - - 6.73799991607666 - - - - - - - 7.442053151907514 - - - - - 364.73 - 1609.34 - 10.4161701 - 93 - Active - Manual - - - - - 47.69465555436909 - -116.92396807484329 - - 658.5999755859375 - 38641.0703125 - - - 7.685999870300293 - - - - - - - 47.69460945390165 - -116.92389615811408 - - 658.2000122070312 - 38648.51171875 - - - 7.434000015258789 - - - - - - - 47.69432254135609 - -116.92348946817219 - - 657.4000244140625 - 38692.390625 - - - 7.314000129699707 - - - - - - - 47.69387125968933 - -116.92295143380761 - - 658.0 - 38756.73046875 - - - 9.190999984741211 - - - - - - - 47.69375986419618 - -116.9228398706764 - - 658.4000244140625 - 38771.62890625 - - - 7.448999881744385 - - - - - - - 47.69344185478985 - -116.92243385128677 - - 657.7999877929688 - 38818.26171875 - - - 7.770999908447266 - - - - - - - 47.693124851211905 - -116.92206689156592 - - 657.7999877929688 - 38863.01953125 - - - 8.951000213623047 - - - - - - - 47.69273115321994 - -116.92163019441068 - - 657.2000122070312 - 38917.6796875 - - - 7.809999942779542 - - - - - - - 47.69250148907304 - -116.92140807397664 - - 657.5999755859375 - 38948.171875 - - - 7.620999813079834 - - - - - - - 47.69234918989241 - -116.9212507456541 - - 658.2000122070312 - 38968.6796875 - - - 6.839000225067139 - - - - - - - 47.69212673418224 - -116.92084497772157 - - 656.5999755859375 - 39007.8984375 - - - 7.8429999351501465 - - - - - - - 47.69190494902432 - -116.92009337246418 - - 654.5999755859375 - 39069.73828125 - - - 10.307000160217285 - - - - - - - 47.69167176447809 - -116.91919868811965 - - 654.0 - 39141.69140625 - - - 10.279000282287598 - - - - - - - 47.69148903898895 - -116.91863425076008 - - 653.4000244140625 - 39188.6484375 - - - 7.827000141143799 - - - - - - - 47.69125325605273 - -116.91802773624659 - - 652.7999877929688 - 39241.25 - - - 7.514999866485597 - - - - - - - 47.69098646007478 - -116.91734033636749 - - 653.2000122070312 - 39300.76953125 - - - 8.501999855041504 - - - - - - - 47.690731985494494 - -116.91671504639089 - - 653.0 - 39355.55078125 - - - 7.826000213623048 - - - - - - - 47.690584463998675 - -116.91629637032747 - - 653.4000244140625 - 39390.9609375 - - - 7.083000183105469 - - - - - - - 47.69048245623708 - -116.91577266901731 - - 654.0 - 39431.87109375 - - - 6.816999912261963 - - - - - - - 47.6902689691633 - -116.91556915640831 - - 655.2000122070312 - 39460.80859375 - - - 7.235000133514404 - - - - - - - 47.69014868885279 - -116.91558734513819 - - 656.5999755859375 - 39474.23046875 - - - 6.7109999656677255 - - - - - - - 47.68997828476131 - -116.9156235549599 - - 657.4000244140625 - 39493.25 - - - 6.33900022506714 - - - - - - - 47.68964979797602 - -116.91557435318828 - - 658.5999755859375 - 39529.9609375 - - - 5.245999813079834 - - - - - - - 47.6894573494792 - -116.91549296490848 - - 659.4000244140625 - 39552.140625 - - - 3.6970000267028813 - - - - - - - 47.68926397897303 - -116.91536497324705 - - 660.2000122070312 - 39575.66015625 - - - 2.938999891281128 - - - - - - - 47.68909734673798 - -116.9152778852731 - - 662.4000244140625 - 39595.3984375 - - - 2.4670000076293945 - - - - - - - 47.688914788886905 - -116.91518836654723 - - 664.4000244140625 - 39616.48828125 - - - 3.013000011444092 - - - - - - - 47.68874254077673 - -116.91508334130049 - - 666.5999755859375 - 39636.8515625 - - - 2.9079999923706055 - - - - - - - 47.68859066069126 - -116.9151203893125 - - 667.5999755859375 - 39653.94921875 - - - 2.444000005722046 - - - - - - - 47.6884609926492 - -116.91520437598228 - - 668.7999877929688 - 39669.25 - - - 2.5490000247955322 - - - - - - - 47.688274662941694 - -116.91526145674288 - - 670.2000122070312 - 39689.51953125 - - - 2.253000020980835 - - - - - - - 47.68809319473803 - -116.91523698158562 - - 671.7999877929688 - 39709.6484375 - - - 2.236999988555908 - - - - - - - 47.687906781211495 - -116.91518819890916 - - 674.4000244140625 - 39730.609375 - - - 2.619999885559082 - - - - - - - 47.687767557799816 - -116.9151449482888 - - 678.0 - 39746.3984375 - - - 2.631999969482422 - - - - - - - 47.687574438750744 - -116.91509365104139 - - 681.4000244140625 - 39768.12890625 - - - 2.4140000343322754 - - - - - - - 47.68737503327429 - -116.915045036003 - - 682.7999877929688 - 39790.5703125 - - - 2.49399995803833 - - - - - - - 47.68718769773841 - -116.91499424166977 - - 683.4000244140625 - 39811.55078125 - - - 2.621999979019165 - - - - - - - 47.68703087233007 - -116.91493716090918 - - 684.2000122070312 - 39829.25 - - - 2.5290000438690186 - - - - - - - 47.68694546073675 - -116.91497655585408 - - 684.7999877929688 - 39839.19140625 - - - 1.656999945640564 - - - - - - - 47.68684957176447 - -116.91503145731986 - - 685.7999877929688 - 39850.55078125 - - - 1.6230000257492065 - - - - - - - 47.68675577826798 - -116.91508166491985 - - 686.7999877929688 - 39861.48046875 - - - 1.8220000267028809 - - - - - - - 47.68668008968234 - -116.91515056416392 - - 688.4000244140625 - 39871.12890625 - - - 1.6069999933242798 - - - - - - - 47.68656584434211 - -116.91518509760499 - - 690.5999755859375 - 39884.078125 - - - 1.8509999513626099 - - - - - - - 47.68651446327567 - -116.9152070581913 - - 691.5999755859375 - 39890.1484375 - - - 1.5169999599456787 - - - - - - - 47.68643466755748 - -116.91527704708278 - - 692.5999755859375 - 39900.46875 - - - 1.4739999771118164 - - - - - - - 47.68628974445164 - -116.91534535959363 - - 694.2000122070312 - 39917.30078125 - - - 2.805000066757202 - - - - - - - 47.686204835772514 - -116.91541275009513 - - 695.0 - 39927.9609375 - - - 2.6649999618530273 - - - - - - - 47.686063097789884 - -116.915478464216 - - 695.5999755859375 - 39944.37109375 - - - 2.052000045776367 - - - - - - - 47.6859431527555 - -116.91553898155689 - - 696.0 - 39958.5390625 - - - 2.0250000953674316 - - - - - - - 47.68578976392746 - -116.91559807397425 - - 697.5999755859375 - 39976.1015625 - - - 2.9260001182556152 - - - - - - - 47.68561726436019 - -116.91561047919095 - - 699.4000244140625 - 39995.2890625 - - - 2.7409999370574947 - - - - - - - 47.685382068157196 - -116.91561819054186 - - 701.4000244140625 - 40021.4609375 - - - 2.9089999198913574 - - - - - - - 47.685165563598275 - -116.91561626270413 - - 702.2000122070312 - 40045.41015625 - - - 2.6610000133514404 - - - - - - - 47.68492969684303 - -116.91560595296323 - - 703.0 - 40071.66015625 - - - 2.9170000553131104 - - - - - - - 47.68469726666808 - -116.9156095571816 - - 703.7999877929688 - 40097.48046875 - - - 3.687999963760376 - - - - - - - 47.68445335328579 - -116.9156008400023 - - 703.4000244140625 - 40124.6015625 - - - 4.520999908447266 - - - - - - - 47.68413324840367 - -116.915586842224 - - 701.7999877929688 - 40160.25 - - - 5.940999984741211 - - - - - - - 47.68375178799033 - -116.91554736346006 - - 698.5999755859375 - 40202.73828125 - - - 8.49899959564209 - - - - - - - 47.68343956209719 - -116.91553797572851 - - 697.0 - 40237.48046875 - - - 8.6850004196167 - - - - - - - 47.683364460244775 - -116.91553009673953 - - 697.0 - 40245.8203125 - - - 8.343999862670898 - - - - - - - 4.4124256137416715 - - - - - 386.15 - 1609.34 - 8.9281883 - 110 - Active - Manual - - - - - 47.683364460244775 - -116.91553009673953 - - 697.0 - 40245.8203125 - - - - - 47.68296145834029 - -116.91553286276758 - - 697.7999877929688 - 40290.6796875 - - - 7.47599983215332 - - - - - - - 47.68250749446452 - -116.91551635041833 - - 700.5999755859375 - 40341.12109375 - - - 6.304999828338623 - - - - - - - 47.68222234211862 - -116.91554225049913 - - 702.7999877929688 - 40372.8515625 - - - 4.5329999923706055 - - - - - - - 47.6819281373173 - -116.91553428769112 - - 704.7999877929688 - 40405.58984375 - - - 4.0920000076293945 - - - - - - - 47.681631250306964 - -116.91555105149746 - - 707.0 - 40438.62890625 - - - 4.130000114440918 - - - - - - - 47.68129765056074 - -116.91554828546941 - - 709.4000244140625 - 40475.71875 - - - 4.120999813079834 - - - - - - - 47.68109648488462 - -116.91553194075823 - - 710.7999877929688 - 40498.0703125 - - - 3.724999904632569 - - - - - - - 47.68071988597512 - -116.91553805954754 - - 713.0 - 40539.9296875 - - - 4.185999870300293 - - - - - - - 47.680444456636906 - -116.91552666015923 - - 713.2000122070312 - 40570.55078125 - - - 4.374000072479248 - - - - - - - 47.680218145251274 - -116.91550503484905 - - 711.7999877929688 - 40595.76953125 - - - 4.203000068664551 - - - - - - - 47.680003652349114 - -116.9154940545559 - - 711.2000122070312 - 40619.7109375 - - - 3.990000009536743 - - - - - - - 47.67980055883527 - -116.91544376313686 - - 711.2000122070312 - 40642.55078125 - - - 3.806999921798706 - - - - - - - 47.67963166348636 - -116.91543739289045 - - 711.2000122070312 - 40661.328125 - - - 3.13100004196167 - - - - - - - 47.67948305234313 - -116.91542599350214 - - 711.4000244140625 - 40677.83984375 - - - 2.752000093460083 - - - - - - - 47.67928775399923 - -116.91543504595757 - - 711.2000122070312 - 40699.62109375 - - - 2.7219998836517334 - - - - - - - 47.67907225526869 - -116.91543395631015 - - 709.7999877929688 - 40723.62109375 - - - 4.800000190734863 - - - - - - - 47.67875927500427 - -116.91545608453453 - - 707.0 - 40758.48046875 - - - 6.971000194549561 - - - - - - - 47.678212355822325 - -116.91549363546073 - - 704.7999877929688 - 40819.30078125 - - - 8.6899995803833 - - - - - - - 47.67773944884539 - -116.91549229435623 - - 704.7999877929688 - 40871.859375 - - - 8.758999824523926 - - - - - - - 47.67744147218764 - -116.91552959382534 - - 705.5999755859375 - 40904.8984375 - - - 6.609000205993652 - - - - - - - 47.67722739838064 - -116.91550696268678 - - 707.0 - 40928.78125 - - - 4.775000095367432 - - - - - - - 47.67719043418765 - -116.91550469957292 - - 707.4000244140625 - 40932.87109375 - - - 4.090000152587891 - - - - - - - 47.676928751170635 - -116.91550503484905 - - 710.2000122070312 - 40961.98046875 - - - 3.234999895095825 - - - - - - - 47.67674124799669 - -116.91548215225339 - - 712.4000244140625 - 40982.80078125 - - - 2.6029999256134033 - - - - - - - 47.67653429880738 - -116.91548156552017 - - 715.4000244140625 - 41005.8203125 - - - 2.3010001182556152 - - - - - - - 47.67637185752392 - -116.91547703929245 - - 717.2000122070312 - 41023.8984375 - - - 2.009000062942505 - - - - - - - 47.676248056814075 - -116.91546438261867 - - 718.5999755859375 - 41037.87890625 - - - 1.9980000257492065 - - - - - - - 47.67611637711525 - -116.91543714143336 - - 720.4000244140625 - 41052.640625 - - - 2.1080000400543213 - - - - - - - 47.67599064856768 - -116.91541476175189 - - 722.2000122070312 - 41066.9609375 - - - 2.385999917984009 - - - - - - - 47.67586416564882 - -116.91543714143336 - - 724.0 - 41081.2109375 - - - 2.375999927520752 - - - - - - - 47.67570784315467 - -116.91542046144605 - - 725.7999877929688 - 41098.671875 - - - 2.49399995803833 - - - - - - - 47.67546468414366 - -116.91540596075356 - - 725.7999877929688 - 41125.76953125 - - - 3.010999917984009 - - - - - - - 47.675317749381065 - -116.91541526466608 - - 725.2000122070312 - 41142.03125 - - - 2.322000026702881 - - - - - - - 47.67510216683149 - -116.91539598628879 - - 723.4000244140625 - 41166.05078125 - - - 3.4309999942779545 - - - - - - - 47.67481265589595 - -116.91537125967443 - - 722.5999755859375 - 41198.37890625 - - - 4.61899995803833 - - - - - - - 47.67463764175773 - -116.91538316197693 - - 722.2000122070312 - 41217.80859375 - - - 4.857999801635742 - - - - - - - 47.67454829066992 - -116.9153764564544 - - 722.0 - 41227.76953125 - - - 4.979000091552734 - - - - - - - 47.67431736923754 - -116.91530504263937 - - 723.2000122070312 - 41253.98046875 - - - 4.368000030517578 - - - - - - - 47.67428518272936 - -116.9152879435569 - - 723.4000244140625 - 41257.78125 - - - 3.8010001182556152 - - - - - - - 47.67417806200683 - -116.91511519253254 - - 724.4000244140625 - 41275.66015625 - - - 2.9800000190734863 - - - - - - - 47.67401813529432 - -116.91483356058598 - - 725.0 - 41303.21875 - - - 3.4449999332427983 - - - - - - - 47.67389475367963 - -116.91468545235693 - - 725.4000244140625 - 41320.91015625 - - - 3.539000034332276 - - - - - - - 47.673706244677305 - -116.91463876515627 - - 727.4000244140625 - 41342.359375 - - - 3.573999881744385 - - - - - - - 47.6735476590693 - -116.91472769714892 - - 728.4000244140625 - 41361.4296875 - - - 3.813999891281128 - - - - - - - 47.673320760950446 - -116.914910255 - - 731.2000122070312 - 41390.05078125 - - - 4.089000225067139 - - - - - - - 47.673103250563145 - -116.91496138460934 - - 732.7999877929688 - 41414.7109375 - - - 4.932000160217285 - - - - - - - 47.67295824363828 - -116.91497446037829 - - 734.5999755859375 - 41430.83984375 - - - 4.0329999923706055 - - - - - - - 47.672812985256314 - -116.9148735422641 - - 734.2000122070312 - 41448.87109375 - - - 3.005000114440918 - - - - - - - 47.67265138216317 - -116.91473096609116 - - 735.2000122070312 - 41469.76953125 - - - 4.179999828338623 - - - - - - - 47.672405457124114 - -116.914624851197 - - 736.4000244140625 - 41498.390625 - - - 4.089000225067139 - - - - - - - 47.67235499806702 - -116.91462275572121 - - 737.0 - 41504.01171875 - - - 5.617000102996826 - - - - - - - 47.672123573720455 - -116.91475594416261 - - 736.7999877929688 - 41532.6796875 - - - 5.734000205993652 - - - - - - - 47.672008741647005 - -116.91498007625341 - - 737.5999755859375 - 41553.80859375 - - - 7.044000148773193 - - - - - - - 47.67184546217322 - -116.9155849982053 - - 738.4000244140625 - 41603.01171875 - - - 8.199000358581543 - - - - - - - 47.67176038585603 - -116.91619888879359 - - 739.4000244140625 - 41650.05078125 - - - 9.409000396728516 - - - - - - - 47.67167145386338 - -116.91674589179456 - - 740.2000122070312 - 41692.2890625 - - - 8.447999954223633 - - - - - - - 47.67158034257591 - -116.9171046372503 - - 737.2000122070312 - 41721.109375 - - - 5.763999938964844 - - - - - - - 47.67155075445771 - -116.91716255620122 - - 736.2000122070312 - 41726.4609375 - - - 5.3520002365112305 - - - - - - - 47.671373477205634 - -116.91721846349537 - - 733.2000122070312 - 41747.80078125 - - - 5.334000110626221 - - - - - - - 47.67127264291048 - -116.9170895498246 - - 733.0 - 41762.71875 - - - 3.7300000190734863 - - - - - - - 47.67125193960965 - -116.91704294644296 - - 732.5999755859375 - 41766.8984375 - - - 4.179999828338623 - - - - - - - 47.67111724242568 - -116.91678495146334 - - 732.4000244140625 - 41791.1015625 - - - 3.4560000896453857 - - - - - - - 47.67101934179664 - -116.91663566976786 - - 733.7999877929688 - 41806.80859375 - - - 2.6189999580383296 - - - - - - - 47.67086704261601 - -116.91654296591878 - - 736.2000122070312 - 41825.359375 - - - 2.6489999294281006 - - - - - - - 47.67074936069548 - -116.91657984629273 - - 738.7999877929688 - 41838.87890625 - - - 2.253000020980835 - - - - - - - 47.6707068644464 - -116.9165953528136 - - 739.7999877929688 - 41843.7109375 - - - 2.4200000762939453 - - - - - - - 4.167665399715137 - - - - - 522.57 - 1609.34 - 11.1258125 - 99 - Active - Manual - - - - - 47.6706241350621 - -116.9166471529752 - - 741.5999755859375 - 41853.87890625 - - - 2.0320000648498535 - - - - - - - 47.67048507928848 - -116.91671655513346 - - 744.4000244140625 - 41870.69140625 - - - 2.4019999504089355 - - - - - - - 47.67045959830284 - -116.91671337001026 - - 744.7999877929688 - 41873.5390625 - - - 2.8519999980926514 - - - - - - - 47.67034719698131 - -116.91667196340859 - - 746.0 - 41886.30078125 - - - 2.552000045776367 - - - - - - - 47.67023856751621 - -116.91654958762228 - - 746.2000122070312 - 41901.51171875 - - - 2.5350000858306885 - - - - - - - 47.670195484533906 - -116.91635269671679 - - 746.4000244140625 - 41917.0390625 - - - 2.5889999866485596 - - - - - - - 47.670183749869466 - -116.91617575474083 - - 745.7999877929688 - 41930.2890625 - - - 2.6489999294281006 - - - - - - - 47.670185593888164 - -116.91577945835888 - - 743.4000244140625 - 41959.921875 - - - 3.2929999828338623 - - - - - - - 47.67011845484376 - -116.91553085111082 - - 743.4000244140625 - 41980.7890625 - - - 2.9800000190734863 - - - - - - - 47.66998568549752 - -116.91540436819196 - - 744.4000244140625 - 41998.25 - - - 2.9110000133514404 - - - - - - - 47.66988015733659 - -116.91529406234622 - - 746.4000244140625 - 42012.8984375 - - - 2.440999984741211 - - - - - - - 47.66980119980872 - -116.91517855972052 - - 748.5999755859375 - 42024.8203125 - - - 1.9859999418258667 - - - - - - - 47.66971226781607 - -116.91505383700132 - - 751.7999877929688 - 42037.0 - - - 1.7400000095367432 - - - - - - - 47.66963775269687 - -116.91488703712821 - - 754.5999755859375 - 42051.26171875 - - - 2.0369999408721924 - - - - - - - 47.66959793865681 - -116.91472476348281 - - 756.5999755859375 - 42064.12890625 - - - 2.1449999809265137 - - - - - - - 47.669561645016074 - -116.91458956338465 - - 758.2000122070312 - 42075.33984375 - - - 1.8700000047683718 - - - - - - - 47.669519232586026 - -116.91442435607314 - - 759.5999755859375 - 42088.4609375 - - - 1.8739999532699585 - - - - - - - 47.66943055205047 - -116.91426895558834 - - 761.2000122070312 - 42103.71875 - - - 1.906999945640564 - - - - - - - 47.66937917098403 - -116.91408715210855 - - 762.0 - 42118.62890625 - - - 1.86300003528595 - - - - - - - 47.669314881786704 - -116.91389788873494 - - 763.4000244140625 - 42134.671875 - - - 2.2920000553131104 - - - - - - - 47.6692424621433 - -116.91374986432493 - - 765.2000122070312 - 42148.26171875 - - - 1.940999984741211 - - - - - - - 47.66921438276768 - -116.9137082900852 - - 766.0 - 42152.62890625 - - - 2.184000015258789 - - - - - - - 47.66904255375266 - -116.91358054988086 - - 770.4000244140625 - 42173.66015625 - - - 3.003999948501587 - - - - - - - 47.668963596224785 - -116.9135063700378 - - 772.2000122070312 - 42183.671875 - - - 3.336999893188477 - - - - - - - 47.668839963153005 - -116.91333437338471 - - 774.4000244140625 - 42202.55859375 - - - 2.0989999771118164 - - - - - - - 47.66875874251127 - -116.91319464705884 - - 775.4000244140625 - 42216.2109375 - - - 2.2750000953674316 - - - - - - - 47.668669894337654 - -116.9130845926702 - - 777.0 - 42229.26171875 - - - 2.1740000247955322 - - - - - - - 47.66852664761245 - -116.91301435232162 - - 779.5999755859375 - 42245.96875 - - - 2.0889999866485596 - - - - - - - 47.668376779183745 - -116.91301309503615 - - 782.4000244140625 - 42262.609375 - - - 2.377000093460083 - - - - - - - 47.6682582590729 - -116.91308685578406 - - 784.5999755859375 - 42276.6484375 - - - 2.3399999141693115 - - - - - - - 47.66811216250062 - -116.91320713609457 - - 787.2000122070312 - 42295.140625 - - - 2.311000108718872 - - - - - - - 47.6680304389447 - -116.91335826180875 - - 788.7999877929688 - 42309.5703125 - - - 2.4040000438690186 - - - - - - - 47.66788484528661 - -116.91352774389088 - - 789.5999755859375 - 42330.109375 - - - 2.568000078201294 - - - - - - - 47.66777697019279 - -116.91363553516567 - - 790.0 - 42344.640625 - - - 2.4210000038146973 - - - - - - - 47.66765719279647 - -116.91373008303344 - - 790.0 - 42359.71875 - - - 2.5139999389648438 - - - - - - - 47.66752836294472 - -116.91379864700139 - - 791.0 - 42375.0390625 - - - 2.187999963760376 - - - - - - - 47.66734588891268 - -116.91385799087584 - - 793.7999877929688 - 42395.80078125 - - - 2.5950000286102295 - - - - - - - 47.667223177850246 - -116.91386385820806 - - 794.4000244140625 - 42409.12890625 - - - 2.2209999561309814 - - - - - - - 47.6671046577394 - -116.91397475078702 - - 796.7999877929688 - 42424.578125 - - - 2.2079999446868896 - - - - - - - 47.66698395833373 - -116.91405328921974 - - 797.7999877929688 - 42439.23046875 - - - 2.0920000076293945 - - - - - - - 47.6668456569314 - -116.914157057181 - - 798.0 - 42455.83984375 - - - 2.0759999752044678 - - - - - - - 47.666745660826564 - -116.91431916318834 - - 799.4000244140625 - 42472.44140625 - - - 2.0759999752044678 - - - - - - - 47.66670785844326 - -116.91437129862607 - - 799.4000244140625 - 42478.140625 - - - 1.899999976158142 - - - - - - - 47.666643736884 - -116.914490070194 - - 802.2000122070312 - 42489.4296875 - - - 1.8819999694824219 - - - - - - - 47.6665850635618 - -116.91458595916629 - - 804.5999755859375 - 42499.48828125 - - - 2.515000104904175 - - - - - - - 47.66647769138217 - -116.91482065245509 - - 808.5999755859375 - 42520.94921875 - - - 2.681999921798706 - - - - - - - 47.6663913577795 - -116.91488058306277 - - 808.7999877929688 - 42531.48046875 - - - 2.1059999465942383 - - - - - - - 47.666313238441944 - -116.91496968269348 - - 809.5999755859375 - 42542.05859375 - - - 2.117000102996826 - - - - - - - 47.66628365032375 - -116.91499197855592 - - 809.7999877929688 - 42545.2890625 - - - 1.0740000009536743 - - - - - - - 47.66617418266833 - -116.91493967548013 - - 808.7999877929688 - 42557.83984375 - - - 1.5700000524520874 - - - - - - - 47.6661307644099 - -116.91483238711953 - - 808.7999877929688 - 42567.30078125 - - - 1.5759999752044678 - - - - - - - 47.66603973694146 - -116.91463926807046 - - 809.7999877929688 - 42585.08984375 - - - 2.9649999141693115 - - - - - - - 47.665940998122096 - -116.91449476405978 - - 811.2000122070312 - 42600.609375 - - - 3.1050000190734863 - - - - - - - 47.66580445691943 - -116.91436568275094 - - 813.5999755859375 - 42618.25 - - - 2.940999984741211 - - - - - - - 47.66563195735216 - -116.91423945128918 - - 815.7999877929688 - 42639.5390625 - - - 3.0399999618530273 - - - - - - - 47.66548963263631 - -116.91413568332791 - - 816.4000244140625 - 42657.8515625 - - - 3.052000045776367 - - - - - - - 47.665275977924466 - -116.91411774605513 - - 820.4000244140625 - 42681.01953125 - - - 2.575000047683716 - - - - - - - 47.66516475006938 - -116.91408815793693 - - 820.7999877929688 - 42693.3984375 - - - 2.4760000705718994 - - - - - - - 47.66498495824635 - -116.9140986353159 - - 823.7999877929688 - 42712.7109375 - - - 2.4140000343322754 - - - - - - - 47.664781864732504 - -116.91411129198968 - - 826.2000122070312 - 42735.1796875 - - - 3.2100000381469727 - - - - - - - 47.66461598686874 - -116.9141499325633 - - 828.5999755859375 - 42753.609375 - - - 3.0720000267028813 - - - - - - - 47.664450695738196 - -116.91422486677766 - - 831.2000122070312 - 42772.91015625 - - - 2.757999897003174 - - - - - - - 47.6643037609756 - -116.91434355452657 - - 833.7999877929688 - 42791.76953125 - - - 2.694000005722046 - - - - - - - 47.66414743848145 - -116.91436878405511 - - 835.2000122070312 - 42809.3203125 - - - 2.9240000247955322 - - - - - - - 47.664042077958584 - -116.91434724256396 - - 835.4000244140625 - 42821.30078125 - - - 1.996999979019165 - - - - - - - 47.66399094834924 - -116.91418815404177 - - 833.2000122070312 - 42834.55859375 - - - 2.2100000381469727 - - - - - - - 47.66385868191719 - -116.91403325647116 - - 837.2000122070312 - 42852.73046875 - - - 2.2709999084472656 - - - - - - - 47.66385097056627 - -116.91386695951223 - - 838.0 - 42865.7109375 - - - 1.8530000448226929 - - - - - - - 47.663845689967275 - -116.91370124928653 - - 839.2000122070312 - 42878.671875 - - - 2.1600000858306885 - - - - - - - 47.66371878795326 - -116.91345783881843 - - 844.0 - 42901.4296875 - - - 2.5290000438690186 - - - - - - - 47.66355475410819 - -116.9133176933974 - - 846.7999877929688 - 42922.4609375 - - - 3.505000114440918 - - - - - - - 47.66336205415428 - -116.91323747858405 - - 849.2000122070312 - 42944.73046875 - - - 2.783999919891357 - - - - - - - 47.66314529813826 - -116.91324225626886 - - 850.7999877929688 - 42968.69140625 - - - 2.994999885559082 - - - - - - - 47.6629030611366 - -116.91325658932328 - - 850.7999877929688 - 42995.5703125 - - - 4.480000019073486 - - - - - - - 47.662603659555316 - -116.9132991693914 - - 848.2000122070312 - 43029.03125 - - - 6.691999912261963 - - - - - - - 47.66215774230659 - -116.91336488351226 - - 845.4000244140625 - 43078.8203125 - - - 8.298999786376953 - - - - - - - 47.661572182551026 - -116.91338273696601 - - 844.7999877929688 - 43144.01953125 - - - 9.312999725341797 - - - - - - - 47.66095435246825 - -116.91340235061944 - - 840.2000122070312 - 43212.69140625 - - - 9.8100004196167 - - - - - - - 47.66027449630201 - -116.91345498897135 - - 834.7999877929688 - 43288.390625 - - - 9.463000297546387 - - - - - - - 47.659770995378494 - -116.91359857097268 - - 834.0 - 43345.55078125 - - - 9.526000022888184 - - - - - - - 47.659328263252974 - -116.91386545076966 - - 830.7999877929688 - 43398.76171875 - - - 10.642000198364258 - - - - - - - 47.6588000357151 - -116.91412713378668 - - 822.5999755859375 - 43460.640625 - - - 12.376000404357912 - - - - - - - 47.65870179980993 - -116.91418547183275 - - 821.2000122070312 - 43472.41015625 - - - 11.77299976348877 - - - - - - - 3.0796716116501135 - - - - - 125.66 - 1609.34 - 16.683815 - 47 - Active - Manual - - - - - 47.65870179980993 - -116.91418547183275 - - 821.2000122070312 - 43472.41015625 - - - - - 47.6584115345031 - -116.9145698659122 - - 816.4000244140625 - 43516.359375 - - - 10.987000465393066 - - - - - - - 47.658366272225976 - -116.91497479565442 - - 814.7999877929688 - 43547.76953125 - - - 10.470000267028809 - - - - - - - 47.65842016786337 - -116.91523329354823 - - 816.0 - 43568.1015625 - - - 10.163999557495117 - - - - - - - 47.658374486491084 - -116.91570963710546 - - 812.2000122070312 - 43606.109375 - - - 7.6020002365112305 - - - - - - - 47.65824808739126 - -116.91571458242834 - - 809.5999755859375 - 43617.890625 - - - 5.890999794006347 - - - - - - - 47.65818606130779 - -116.91550998017192 - - 806.4000244140625 - 43632.640625 - - - 7.370999813079835 - - - - - - - 47.658012975007296 - -116.91515576094389 - - 802.7999877929688 - 43664.80859375 - - - 10.725000381469727 - - - - - - - 47.657876182347536 - -116.91453977487981 - - 797.4000244140625 - 43714.1015625 - - - 12.321999549865723 - - - - - - - 47.65784164890647 - -116.91398656927049 - - 793.2000122070312 - 43755.91015625 - - - 13.935999870300293 - - - - - - - 47.65792664140463 - -116.91250925883651 - - 786.5999755859375 - 43867.19921875 - - - 15.89900016784668 - - - - - - - 47.658010544255376 - -116.91141399554908 - - 782.2000122070312 - 43950.0 - - - 16.55900001525879 - - - - - - - 47.65809788368642 - -116.91051319241524 - - 775.0 - 44018.51171875 - - - 17.12700080871582 - - - - - - - 47.65790417790413 - -116.9097088649869 - - 772.7999877929688 - 44081.6796875 - - - 15.793000221252441 - - - - - - - 47.657866291701794 - -116.90951758995652 - - 772.0 - 44096.6484375 - - - 14.968999862670898 - - - - - - - 47.65767836943269 - -116.90899673849344 - - 768.0 - 44141.03125 - - - 14.793999671936035 - - - - - - - 47.65730478800833 - -116.90831378102303 - - 762.4000244140625 - 44207.03125 - - - 13.199999809265137 - - - - - - - 47.65676197595894 - -116.90754574723542 - - 759.4000244140625 - 44290.51171875 - - - 11.925999641418455 - - - - - - - 47.656615963205695 - -116.90732345916331 - - 759.0 - 44313.80078125 - - - 11.645000457763672 - - - - - - - 47.65643147751689 - -116.90689916722476 - - 757.5999755859375 - 44351.62890625 - - - 12.607999801635742 - - - - - - - 47.65623886138201 - -116.90598545596004 - - 754.7999877929688 - 44423.62890625 - - - 12.00100040435791 - - - - - - - 47.65611439011991 - -116.90538195893168 - - 752.7999877929688 - 44471.0 - - - 11.842000007629393 - - - - - - - 47.65601573511958 - -116.90508565865457 - - 753.7999877929688 - 44495.80859375 - - - 12.406000137329102 - - - - - - - 47.65567123889923 - -116.9045679923147 - - 757.2000122070312 - 44550.640625 - - - 13.706000328063965 - - - - - - - 47.655298663303256 - -116.90420497208834 - - 757.4000244140625 - 44600.109375 - - - 12.366999626159668 - - - - - - - 47.654978055506945 - -116.90419617109 - - 751.5999755859375 - 44634.33984375 - - - 8.559000015258789 - - - - - - - 47.654781164601445 - -116.90380616113544 - - 742.5999755859375 - 44671.62109375 - - - 9.319000244140625 - - - - - - - 47.654813854023814 - -116.90345487557352 - - 740.4000244140625 - 44697.19140625 - - - 12.78499984741211 - - - - - - - 47.65486238524318 - -116.90326879732311 - - 740.5999755859375 - 44711.76171875 - - - 14.56999969482422 - - - - - - - 47.6549250818789 - -116.90273805521429 - - 739.4000244140625 - 44752.0 - - - 13.413999557495117 - - - - - - - 47.65488023869693 - -116.90181939862669 - - 731.7999877929688 - 44821.2890625 - - - 13.857999801635742 - - - - - - - 47.65494083985686 - -116.90098514780402 - - 731.2000122070312 - 44884.30078125 - - - 15.753000259399414 - - - - - - - 47.65497545711696 - -116.90016715787351 - - 728.7999877929688 - 44945.87109375 - - - 15.392999649047852 - - - - - - - 47.65499448403716 - -116.89931605942547 - - 724.4000244140625 - 45010.01953125 - - - 16.035999298095703 - - - - - - - 47.654984844848514 - -116.89911866560578 - - 723.2000122070312 - 45024.80859375 - - - 14.79699993133545 - - - - - - - 47.65489239245653 - -116.89880266785622 - - 722.5999755859375 - 45050.1796875 - - - 12.684000015258789 - - - - - - - 47.65483086928725 - -116.89865204505622 - - 722.0 - 45063.0 - - - 12.819999694824219 - - - - - - - 12.807130304790705 - - - - - 158.57 - 1609.34 - 14.8762321 - 59 - Active - Manual - - - - - 47.65452585183084 - -116.89788627438247 - - 721.7999877929688 - 45129.1796875 - - - 13.236000061035158 - - - - - - - 47.65419543720782 - -116.89704095944762 - - 720.4000244140625 - 45201.9609375 - - - 12.13000011444092 - - - - - - - 47.65386854298413 - -116.89604435116053 - - 716.7999877929688 - 45284.640625 - - - 11.810999870300293 - - - - - - - 47.65363569371402 - -116.89530355855823 - - 718.0 - 45345.73046875 - - - 12.218000411987306 - - - - - - - 47.653346098959446 - -116.89431667327881 - - 716.2000122070312 - 45426.5390625 - - - 11.545000076293945 - - - - - - - 47.653237134218216 - -116.89387855120003 - - 716.2000122070312 - 45461.5390625 - - - 11.664999961853027 - - - - - - - 47.65318114310503 - -116.89344537444413 - - 716.4000244140625 - 45494.5703125 - - - 11.01200008392334 - - - - - - - 47.653005542233586 - -116.89281606115401 - - 713.0 - 45545.48828125 - - - 10.184000015258789 - - - - - - - 47.65297846868634 - -116.8922515399754 - - 711.2000122070312 - 45588.2109375 - - - 10.68000030517578 - - - - - - - 47.652911664918065 - -116.8916785530746 - - 708.7999877929688 - 45631.7109375 - - - 10.87600040435791 - - - - - - - 47.652763137593865 - -116.89111118204892 - - 707.0 - 45676.9296875 - - - 11.303000450134277 - - - - - - - 47.652472788468 - -116.8906544521451 - - 705.0 - 45725.23046875 - - - 12.076999664306642 - - - - - - - 47.65236164443195 - -116.89058303833008 - - 704.7999877929688 - 45738.69140625 - - - 13.45300006866455 - - - - - - - 47.65154373832047 - -116.89011733978987 - - 704.2000122070312 - 45836.05859375 - - - 10.819000244140625 - - - - - - - 47.651033364236355 - -116.8898684810847 - - 700.0 - 45895.8203125 - - - 9.960000038146973 - - - - - - - 47.65088567510247 - -116.88978189602494 - - 697.7999877929688 - 45913.4609375 - - - 8.819999694824219 - - - - - - - 47.65052977949381 - -116.88944108784199 - - 695.2000122070312 - 45960.8203125 - - - 9.470000267028809 - - - - - - - 47.65018478035927 - -116.88899927772582 - - 693.7999877929688 - 46011.55078125 - - - 10.145999908447264 - - - - - - - 47.6497963629663 - -116.88875745981932 - - 695.7999877929688 - 46058.75 - - - 9.440999984741211 - - - - - - - 47.649724865332246 - -116.88875368796289 - - 695.5999755859375 - 46066.6484375 - - - 7.9019999504089355 - - - - - - - 47.649155566468835 - -116.88869903795421 - - 694.0 - 46130.01171875 - - - 7.920000076293945 - - - - - - - 47.648550141602755 - -116.88856886699796 - - 691.4000244140625 - 46197.9296875 - - - 8.489999771118164 - - - - - - - 47.64846255071461 - -116.88856794498861 - - 690.7999877929688 - 46207.66015625 - - - 9.722999572753906 - - - - - - - 47.64791429042816 - -116.88858965411782 - - 693.2000122070312 - 46268.71875 - - - 8.723999977111816 - - - - - - - 47.64776676893234 - -116.88861764967442 - - 692.7999877929688 - 46285.23828125 - - - 8.260000228881836 - - - - - - - 47.64745739288628 - -116.88883256167173 - - 684.5999755859375 - 46323.23828125 - - - 9.49899959564209 - - - - - - - 47.6471680495888 - -116.8889709468931 - - 682.0 - 46357.08984375 - - - 11.282999992370605 - - - - - - - 47.64684995636344 - -116.8888393510133 - - 680.7999877929688 - 46395.01953125 - - - 9.482000350952148 - - - - - - - 47.64667544513941 - -116.88844657503068 - - 679.2000122070312 - 46430.23828125 - - - 11.741999626159668 - - - - - - - 47.646691957488656 - -116.88811825588346 - - 678.0 - 46454.8203125 - - - 8.194000244140625 - - - - - - - 47.64685976319015 - -116.88773847185075 - - 677.5999755859375 - 46489.05078125 - - - 8.555999755859375 - - - - - - - 47.647064281627536 - -116.88732398673892 - - 677.4000244140625 - 46527.48046875 - - - 7.685999870300293 - - - - - - - 47.64732286334038 - -116.8866616487503 - - 677.7999877929688 - 46584.921875 - - - 11.48900032043457 - - - - - - - 47.64747826382518 - -116.88623769208789 - - 678.7999877929688 - 46621.3515625 - - - 9.107000350952148 - - - - - - - 47.64748706482351 - -116.88580267131329 - - 680.7999877929688 - 46654.26953125 - - - 8.229000091552734 - - - - - - - 47.64743157662451 - -116.88561944290996 - - 682.2000122070312 - 46669.30078125 - - - 7.519999980926514 - - - - - - - 47.64740366488695 - -116.88554216176271 - - 681.7999877929688 - 46675.7890625 - - - 6.480000019073486 - - - - - - - 10.149107612410923 - - - - - 195.08 - 1609.34 - 9.8146544 - 73 - Active - Manual - - - - - 47.647300735116005 - -116.88516296446323 - - 680.0 - 46706.5390625 - - - 6.1510000228881845 - - - - - - - 47.64728204347193 - -116.88501887954772 - - 680.2000122070312 - 46717.609375 - - - 5.532999992370605 - - - - - - - 47.64725295826793 - -116.88471805304289 - - 679.7999877929688 - 46740.37890625 - - - 4.554999828338623 - - - - - - - 47.64731573872268 - -116.88413106836379 - - 680.4000244140625 - 46785.03125 - - - 6.379000186920166 - - - - - - - 47.64739075675607 - -116.8838036712259 - - 680.5999755859375 - 46810.91015625 - - - 8.625 - - - - - - - 47.64762343838811 - -116.88292315229774 - - 680.7999877929688 - 46882.01953125 - - - 8.888999938964844 - - - - - - - 47.647714549675584 - -116.88240967690945 - - 680.7999877929688 - 46921.80859375 - - - 7.958000183105469 - - - - - - - 47.64777707867324 - -116.88183409161866 - - 679.5999755859375 - 46965.51171875 - - - 8.739999771118164 - - - - - - - 47.647814294323325 - -116.88114359043539 - - 678.5999755859375 - 47017.5703125 - - - 8.677000045776367 - - - - - - - 47.647810354828835 - -116.88046515919268 - - 676.0 - 47068.58984375 - - - 8.503000259399414 - - - - - - - 47.64771689660847 - -116.87991505488753 - - 673.4000244140625 - 47111.55078125 - - - 8.590999603271484 - - - - - - - 47.64744649641216 - -116.87930334359407 - - 669.7999877929688 - 47166.55859375 - - - 9.168999671936035 - - - - - - - 47.64739779755473 - -116.87918239273131 - - 669.0 - 47177.140625 - - - 10.578000068664549 - - - - - - - 47.64729796908796 - -116.87855584546924 - - 672.0 - 47226.0703125 - - - 9.786999702453613 - - - - - - - 47.64739737845957 - -116.87827035784721 - - 676.7999877929688 - 47250.9296875 - - - 8.284000396728516 - - - - - - - 47.64750516973436 - -116.87811235897243 - - 677.4000244140625 - 47267.75 - - - 8.40999984741211 - - - - - - - 47.647834746167064 - -116.87761589884758 - - 673.5999755859375 - 47320.3203125 - - - 7.510000228881837 - - - - - - - 47.647997941821814 - -116.87714056111872 - - 670.0 - 47360.48046875 - - - 8.032999992370605 - - - - - - - 47.64816985465586 - -116.87646699137986 - - 667.2000122070312 - 47414.5390625 - - - 9.008999824523926 - - - - - - - 47.648368338122964 - -116.87571379356086 - - 671.5999755859375 - 47475.421875 - - - 8.697999954223633 - - - - - - - 47.64838267117739 - -116.87559896148741 - - 671.7999877929688 - 47484.1796875 - - - 8.758000373840332 - - - - - - - 47.64836624264717 - -116.87499219551682 - - 670.2000122070312 - 47529.91015625 - - - 7.622000217437744 - - - - - - - 47.64823665842414 - -116.87474777922034 - - 670.5999755859375 - 47554.8203125 - - - 6.229000091552734 - - - - - - - 47.64818234369159 - -116.87472925521433 - - 671.0 - 47560.94921875 - - - 6.125 - - - - - - - 47.64788084663451 - -116.87454854138196 - - 673.4000244140625 - 47597.109375 - - - 7.23199987411499 - - - - - - - 47.64758295379579 - -116.87419063411653 - - 672.4000244140625 - 47640.23046875 - - - 8.625 - - - - - - - 47.6475134678185 - -116.87386197969317 - - 671.4000244140625 - 47666.28125 - - - 8.680999755859375 - - - - - - - 47.647521179169416 - -116.87354053370655 - - 671.4000244140625 - 47690.62109375 - - - 8.11299991607666 - - - - - - - 47.64757205732167 - -116.87322637997568 - - 669.2000122070312 - 47714.94921875 - - - 8.112000465393066 - - - - - - - 47.64764246530831 - -116.87239095568657 - - 668.2000122070312 - 47778.109375 - - - 7.894999980926514 - - - - - - - 47.64756669290364 - -116.87199373729527 - - 671.2000122070312 - 47808.7890625 - - - 7.669000148773193 - - - - - - - 47.64757465571165 - -116.8718854431063 - - 671.2000122070312 - 47816.8984375 - - - 8.109000205993652 - - - - - - - 47.64762243255973 - -116.87167706899345 - - 670.7999877929688 - 47833.4609375 - - - 8.281000137329102 - - - - - - - 47.64775436371565 - -116.8713034875691 - - 669.7999877929688 - 47865.21875 - - - 7.94000005722046 - - - - - - - 47.64802283607423 - -116.8708280660212 - - 667.5999755859375 - 47911.6484375 - - - 9.28600025177002 - - - - - - - 47.648413851857185 - -116.87032003886998 - - 666.2000122070312 - 47969.2890625 - - - 8.234000205993652 - - - - - - - 47.64890234917402 - -116.869738670066 - - 664.4000244140625 - 48039.05078125 - - - 8.720000267028809 - - - - - - - 47.64935857616365 - -116.86914866790175 - - 663.5999755859375 - 48106.37890625 - - - 9.619000434875488 - - - - - - - 47.649629479274154 - -116.86879587359726 - - 663.0 - 48146.5 - - - 10.02999973297119 - - - - - - - 47.64984145760536 - -116.86826194636524 - - 665.2000122070312 - 48193.828125 - - - 9.465999603271484 - - - - - - - 47.649859646335244 - -116.86813998967409 - - 665.7999877929688 - 48203.23046875 - - - 9.395000457763672 - - - - - - - 47.649888060986996 - -116.86768024228513 - - 666.0 - 48237.83984375 - - - 8.652000427246094 - - - - - - - 47.64989325776696 - -116.86744605191052 - - 665.5999755859375 - 48255.3984375 - - - 8.782999992370605 - - - - - - - 47.64979736879468 - -116.86709166504443 - - 665.7999877929688 - 48284.328125 - - - 9.642999649047852 - - - - - - - 47.6497495919466 - -116.86698697507381 - - 666.7999877929688 - 48293.76171875 - - - 9.430000305175781 - - - - - - - 8.249661647016607 - - - - - 199.64 - 1609.34 - 9.4195671 - 74 - Active - Manual - - - - - 47.6497495919466 - -116.86698697507381 - - 666.7999877929688 - 48293.76171875 - - - - - 47.649491680786014 - -116.86634399928153 - - 665.5999755859375 - 48349.9609375 - - - 9.366999626159668 - - - - - - - 47.64944784343243 - -116.86623956076801 - - 665.5999755859375 - 48359.16015625 - - - 9.199000358581543 - - - - - - - 47.649380369111896 - -116.86580194160342 - - 665.7999877929688 - 48393.2109375 - - - 8.512999534606934 - - - - - - - 47.649485897272825 - -116.86539625748992 - - 665.4000244140625 - 48426.21875 - - - 8.251999855041504 - - - - - - - 47.64953996054828 - -116.86530464328825 - - 665.4000244140625 - 48435.359375 - - - 9.145000457763672 - - - - - - - 47.64996056444943 - -116.86487087979913 - - 665.4000244140625 - 48492.51953125 - - - 9.527000427246094 - - - - - - - 47.65002845786512 - -116.86484355479479 - - 665.5999755859375 - 48500.28125 - - - 7.754000186920167 - - - - - - - 47.650252087041736 - -116.86474397778511 - - 665.4000244140625 - 48526.25 - - - 8.659000396728516 - - - - - - - 47.65046565793455 - -116.86461917124689 - - 665.0 - 48551.80859375 - - - 8.520000457763672 - - - - - - - 47.650638576596975 - -116.86422497034073 - - 665.0 - 48588.23046875 - - - 9.104999542236328 - - - - - - - 47.65065257437527 - -116.86410619877279 - - 665.0 - 48597.23828125 - - - 9.003999710083008 - - - - - - - 47.65071585774422 - -116.86317195184529 - - 665.4000244140625 - 48667.87890625 - - - 8.831000328063965 - - - - - - - 47.65062273479998 - -116.86259485781193 - - 663.7999877929688 - 48712.9296875 - - - 9.008999824523926 - - - - - - - 47.650582836940885 - -116.86250424943864 - - 663.5999755859375 - 48721.0390625 - - - 8.109000205993652 - - - - - - - 47.65048678033054 - -116.86227047815919 - - 662.2000122070312 - 48741.640625 - - - 6.866000175476074 - - - - - - - 47.650446463376284 - -116.86193956062198 - - 661.7999877929688 - 48766.7109375 - - - 8.357000350952148 - - - - - - - 47.65031637623906 - -116.86156899668276 - - 661.0 - 48798.390625 - - - 7.920000076293945 - - - - - - - 47.65018578618765 - -116.86134746298194 - - 661.4000244140625 - 48820.5703125 - - - 7.39300012588501 - - - - - - - 47.64987515285611 - -116.8609680980444 - - 662.2000122070312 - 48865.33984375 - - - 7.461999893188477 - - - - - - - 47.64976384118199 - -116.86081286519766 - - 660.7999877929688 - 48882.3203125 - - - 8.494000434875488 - - - - - - - 47.64960248954594 - -116.86048823408782 - - 661.4000244140625 - 48912.69140625 - - - 7.5920000076293945 - - - - - - - 47.649393863976 - -116.85979899019003 - - 662.4000244140625 - 48969.46875 - - - 8.112000465393066 - - - - - - - 47.64928204938769 - -116.85924595221877 - - 662.4000244140625 - 49012.8515625 - - - 7.229000091552735 - - - - - - - 47.64924785122275 - -116.85895325616002 - - 662.0 - 49035.12890625 - - - 7.427000045776367 - - - - - - - 47.64923938550055 - -116.85863306745887 - - 661.7999877929688 - 49059.2890625 - - - 8.052000045776367 - - - - - - - 47.649327144026756 - -116.85810559429228 - - 662.5999755859375 - 49100.33984375 - - - 8.211999893188477 - - - - - - - 47.64947349205613 - -116.85741174034774 - - 662.2000122070312 - 49154.96875 - - - 7.803999900817871 - - - - - - - 47.64952118508518 - -116.85698644258082 - - 662.0 - 49187.2890625 - - - 6.464000225067139 - - - - - - - 47.64957893639803 - -116.85646173544228 - - 663.4000244140625 - 49227.078125 - - - 6.631999969482423 - - - - - - - 47.64956619590521 - -116.85601908713579 - - 662.4000244140625 - 49260.37890625 - - - 6.65999984741211 - - - - - - - 47.64956535771489 - -116.855937698856 - - 662.5999755859375 - 49266.4609375 - - - 6.081999778747559 - - - - - - - 47.64957105740905 - -116.85568884015083 - - 663.5999755859375 - 49285.16015625 - - - 6.23199987411499 - - - - - - - 47.64970659278333 - -116.85525993816555 - - 667.4000244140625 - 49321.62109375 - - - 7.291999816894532 - - - - - - - 47.649759482592344 - -116.85517997480929 - - 667.7999877929688 - 49329.98828125 - - - 8.366999626159668 - - - - - - - 47.64984145760536 - -116.85505307279527 - - 667.5999755859375 - 49343.12890625 - - - 6.567999839782715 - - - - - - - 47.6501692738384 - -116.8546284455806 - - 665.5999755859375 - 49391.5703125 - - - 6.921000003814697 - - - - - - - 47.65027094632387 - -116.85438268817961 - - 665.2000122070312 - 49413.30078125 - - - 7.242000102996826 - - - - - - - 47.650350574404 - -116.85398555360734 - - 663.2000122070312 - 49444.390625 - - - 7.77400016784668 - - - - - - - 47.65051703900099 - -116.85347995720804 - - 661.7999877929688 - 49486.78125 - - - 8.47700023651123 - - - - - - - 47.65086639672518 - -116.85294435359538 - - 659.2000122070312 - 49542.73046875 - - - 9.324999809265137 - - - - - - - 47.65103445388377 - -116.85250354930758 - - 661.5999755859375 - 49581.55078125 - - - 9.706999778747559 - - - - - - - 47.65103906393051 - -116.85227346606553 - - 661.7999877929688 - 49598.8203125 - - - 8.635000228881836 - - - - - - - 47.6510276645422 - -116.85166225768626 - - 662.0 - 49644.671875 - - - 9.170000076293945 - - - - - - - 47.651008972898126 - -116.85145036317408 - - 662.2000122070312 - 49660.671875 - - - 8.0 - - - - - - - 47.65091476030648 - -116.85062499716878 - - 659.0 - 49723.609375 - - - 7.867000102996826 - - - - - - - 47.65098609030247 - -116.8501300457865 - - 658.7999877929688 - 49762.05859375 - - - 7.690000057220459 - - - - - - - 47.651075357571244 - -116.8499138765037 - - 659.2000122070312 - 49781.0703125 - - - 9.503999710083008 - - - - - - - 47.65116663649678 - -116.8497206736356 - - 658.4000244140625 - 49798.8203125 - - - 8.875 - - - - - - - 47.651337794959545 - -116.8494788557291 - - 657.7999877929688 - 49825.12109375 - - - 8.767999649047852 - - - - - - - 47.65171347185969 - -116.84919336810708 - - 658.5999755859375 - 49872.3203125 - - - 7.867000102996826 - - - - - - - 47.65191597864032 - -116.84908767230809 - - 658.5999755859375 - 49896.171875 - - - 7.948999881744385 - - - - - - - 8.061230184832699 - - - - - 201.47 - 1609.34 - 9.3166294 - 75 - Active - Manual - - - - - 47.652048245072365 - -116.84902237728238 - - 658.5999755859375 - 49911.7109375 - - - 7.77299976348877 - - - - - - - 47.6524592936039 - -116.84888273477554 - - 658.5999755859375 - 49958.5390625 - - - 7.804999828338623 - - - - - - - 47.65283966436982 - -116.8487176951021 - - 658.2000122070312 - 50002.640625 - - - 7.348999977111816 - - - - - - - 47.652972266077995 - -116.84868014417589 - - 658.4000244140625 - 50017.671875 - - - 7.515999794006348 - - - - - - - 47.65310889109969 - -116.84866086579859 - - 658.4000244140625 - 50032.890625 - - - 7.61299991607666 - - - - - - - 47.653331849724054 - -116.84871786274016 - - 658.5999755859375 - 50058.01953125 - - - 8.37399959564209 - - - - - - - 47.65351206064224 - -116.84877217747271 - - 658.7999877929688 - 50078.48046875 - - - 10.232000350952148 - - - - - - - 47.65398748219013 - -116.84879749082029 - - 659.0 - 50131.390625 - - - 8.817999839782715 - - - - - - - 47.65455577522516 - -116.84859557077289 - - 658.2000122070312 - 50196.421875 - - - 9.289999961853027 - - - - - - - 47.65496984124184 - -116.84864795766771 - - 657.4000244140625 - 50242.7109375 - - - 9.258999824523926 - - - - - - - 47.655532183125615 - -116.84866153635085 - - 657.0 - 50305.23046875 - - - 8.930999755859375 - - - - - - - 47.65592043288052 - -116.8486418388784 - - 656.2000122070312 - 50348.44921875 - - - 8.645000457763672 - - - - - - - 47.656212290748954 - -116.84861099347472 - - 656.0 - 50381.01953125 - - - 6.513000011444092 - - - - - - - 47.6565551944077 - -116.84849104844034 - - 654.7999877929688 - 50420.19921875 - - - 7.835999965667725 - - - - - - - 47.65691955573857 - -116.84828175231814 - - 654.7999877929688 - 50463.78125 - - - 8.715999603271484 - - - - - - - 47.657271260395646 - -116.84784723445773 - - 655.2000122070312 - 50514.890625 - - - 8.517999649047852 - - - - - - - 47.657348960638046 - -116.84765797108412 - - 655.5999755859375 - 50531.578125 - - - 8.345999717712402 - - - - - - - 47.657452058047056 - -116.84706235304475 - - 655.7999877929688 - 50578.19921875 - - - 7.770999908447266 - - - - - - - 47.65749866142869 - -116.84669455513358 - - 654.7999877929688 - 50606.2890625 - - - 7.020999908447266 - - - - - - - 47.657605363056064 - -116.84642298147082 - - 653.7999877929688 - 50629.76953125 - - - 7.827000141143799 - - - - - - - 47.65789705328643 - -116.84577749110758 - - 653.4000244140625 - 50688.03125 - - - 8.322999954223633 - - - - - - - 47.65801666304469 - -116.8455108627677 - - 654.4000244140625 - 50712.0703125 - - - 8.015999794006348 - - - - - - - 47.65814364887774 - -116.84491616673768 - - 652.0 - 50758.78125 - - - 7.784999847412109 - - - - - - - 47.658303659409285 - -116.84436966665089 - - 653.7999877929688 - 50803.4609375 - - - 7.447000026702881 - - - - - - - 47.65851647593081 - -116.84395727701485 - - 653.5999755859375 - 50842.4296875 - - - 7.791999816894531 - - - - - - - 47.658760556951165 - -116.84336836449802 - - 653.2000122070312 - 50894.3203125 - - - 7.414000034332275 - - - - - - - 47.65905459411442 - -116.8426787853241 - - 653.2000122070312 - 50955.69140625 - - - 7.671000003814697 - - - - - - - 47.659106478095055 - -116.84258348308504 - - 653.2000122070312 - 50964.8515625 - - - 9.163999557495117 - - - - - - - 47.659242264926434 - -116.84230285696685 - - 653.5999755859375 - 50990.7890625 - - - 8.645999908447266 - - - - - - - 47.65961785800755 - -116.8419340532273 - - 653.0 - 51041.2109375 - - - 8.402999877929688 - - - - - - - 47.65998967923224 - -116.84168393723667 - - 653.0 - 51086.5390625 - - - 7.556000232696533 - - - - - - - 47.66038337722421 - -116.8413264490664 - - 653.0 - 51137.9609375 - - - 7.34499979019165 - - - - - - - 47.660871874541044 - -116.84074055403471 - - 653.0 - 51207.87109375 - - - 7.768000125885011 - - - - - - - 47.66108075156808 - -116.84053293429315 - - 654.7999877929688 - 51235.83984375 - - - 6.99399995803833 - - - - - - - 47.66133547760546 - -116.8402214627713 - - 655.5999755859375 - 51272.5390625 - - - 7.3379998207092285 - - - - - - - 47.66165206208825 - -116.83985366486013 - - 656.4000244140625 - 51317.3515625 - - - 6.401999950408936 - - - - - - - 47.66170394606888 - -116.83980915695429 - - 656.5999755859375 - 51324.01171875 - - - 6.65999984741211 - - - - - - - 47.66197057440877 - -116.83948863297701 - - 656.0 - 51362.2890625 - - - 7.6570000648498535 - - - - - - - 47.662380784749985 - -116.8389605730772 - - 653.0 - 51422.8203125 - - - 8.647000312805176 - - - - - - - 47.66276526264846 - -116.83835196308792 - - 652.4000244140625 - 51485.390625 - - - 8.937999725341797 - - - - - - - 47.66286383382976 - -116.83818767778575 - - 652.0 - 51501.94140625 - - - 8.274999618530273 - - - - - - - 7.988008110884995 - - - - - 481.51 - 1609.34 - 8.7859974 - 89 - Active - Manual - - - - - 47.66321076080203 - -116.83761896565557 - - 651.0 - 51559.48046875 - - - 8.220000267028809 - - - - - - - 47.66360806301236 - -116.83695646002889 - - 651.0 - 51626.01171875 - - - 8.315999984741211 - - - - - - - 47.66383185982704 - -116.83641306124628 - - 651.4000244140625 - 51673.96875 - - - 7.993000030517578 - - - - - - - 47.66397535800934 - -116.83580839075148 - - 652.0 - 51722.1015625 - - - 8.020999908447266 - - - - - - - 47.66398818232119 - -116.83520254679024 - - 653.4000244140625 - 51767.7109375 - - - 7.6020002365112305 - - - - - - - 47.66399404965341 - -116.83455739170313 - - 654.5999755859375 - 51816.0703125 - - - 6.9079999923706055 - - - - - - - 47.663931688293815 - -116.83390595018864 - - 652.0 - 51865.69140625 - - - 6.2020001411438 - - - - - - - 47.66386044211686 - -116.83360286056995 - - 651.2000122070312 - 51889.75 - - - 6.014999866485596 - - - - - - - 47.66377159394324 - -116.83335416950285 - - 650.0 - 51910.87890625 - - - 5.283999919891357 - - - - - - - 47.6636977493763 - -116.83314378373325 - - 649.0 - 51928.66015625 - - - 4.443999767303467 - - - - - - - 47.663593059405684 - -116.83303155004978 - - 649.0 - 51943.2109375 - - - 3.638000011444092 - - - - - - - 47.66358166001737 - -116.83302325196564 - - 649.0 - 51945.3515625 - - - 0.42699998617172247 - - - - - - - 47.66349205747247 - -116.83307287283242 - - 649.0 - 51964.0 - - - 0.08900000154972076 - - - - - - - 47.66338158398867 - -116.83318284340203 - - 649.0 - 51978.8203125 - - - 2.4709999561309814 - - - - - - - 47.66320816241205 - -116.8333828356117 - - 649.0 - 52003.26953125 - - - 3.493000030517578 - - - - - - - 47.66301336698234 - -116.83364535681903 - - 649.0 - 52032.51953125 - - - 3.25 - - - - - - - 47.66288545913994 - -116.83381718583405 - - 649.0 - 52051.71875 - - - 3.1989998817443848 - - - - - - - 47.662751181051135 - -116.83400804176927 - - 649.0 - 52072.44140625 - - - 2.589999914169311 - - - - - - - 47.662625536322594 - -116.8341740872711 - - 649.0 - 52091.16015625 - - - 2.674999952316284 - - - - - - - 47.66243736259639 - -116.834416994825 - - 649.5999755859375 - 52118.9609375 - - - 3.9719998836517334 - - - - - - - 47.662253798916936 - -116.83467046357691 - - 650.0 - 52146.94921875 - - - 3.499000072479248 - - - - - - - 47.662058332934976 - -116.83491873554885 - - 650.0 - 52175.578125 - - - 4.770999908447266 - - - - - - - 47.66175566241145 - -116.83532408438623 - - 650.0 - 52221.0 - - - 6.488999843597412 - - - - - - - 47.66146346926689 - -116.83571845293045 - - 650.0 - 52264.98046875 - - - 6.2820000648498535 - - - - - - - 47.661127941682935 - -116.83617275208235 - - 650.0 - 52315.55078125 - - - 7.224999904632568 - - - - - - - 47.66049703583121 - -116.83700457215309 - - 650.0 - 52409.46875 - - - 7.826000213623048 - - - - - - - 47.65987845137715 - -116.83782708831131 - - 650.0 - 52501.890625 - - - 7.701000213623047 - - - - - - - 47.659450052306056 - -116.83839714154601 - - 650.0 - 52565.98046875 - - - 8.01099967956543 - - - - - - - 47.658990640193224 - -116.83898043818772 - - 650.0 - 52633.21875 - - - 8.404999732971191 - - - - - - - 47.65859275124967 - -116.83949139900506 - - 650.0 - 52691.8203125 - - - 8.371000289916992 - - - - - - - 47.658120933920145 - -116.84012725017965 - - 650.0 - 52762.71875 - - - 7.877999782562256 - - - - - - - 47.657788172364235 - -116.84059336781502 - - 650.4000244140625 - 52813.6796875 - - - 7.2800002098083505 - - - - - - - 47.6573702506721 - -116.84117356315255 - - 651.0 - 52877.41015625 - - - 7.080999851226807 - - - - - - - 47.65699834562838 - -116.84169466607273 - - 650.7999877929688 - 52934.3515625 - - - 6.326000213623047 - - - - - - - 47.65664245001972 - -116.84219724498689 - - 651.0 - 52988.9609375 - - - 5.461999893188477 - - - - - - - 47.656346652656794 - -116.84258256107569 - - 651.4000244140625 - 53032.76953125 - - - 4.867000102996826 - - - - - - - 47.65601506456733 - -116.84294415637851 - - 652.0 - 53078.5703125 - - - 4.580999851226807 - - - - - - - 47.65576897189021 - -116.84319645166397 - - 653.4000244140625 - 53111.859375 - - - 4.160999774932861 - - - - - - - 3.3422857139000226 - - - - - 448.57 - 1609.34 - 4.2430363 - 119 - Active - Manual - - - - - 47.655707532539964 - -116.84325654990971 - - 653.7999877929688 - 53120.0390625 - - - 4.0879998207092285 - - - - - - - 47.65539036132395 - -116.84354689903557 - - 662.2000122070312 - 53161.51171875 - - - 4.146999835968018 - - - - - - - 47.65511266887188 - -116.84377865865827 - - 674.7999877929688 - 53196.9609375 - - - 3.938999891281128 - - - - - - - 47.654816787689924 - -116.84399818070233 - - 684.2000122070312 - 53233.73828125 - - - 4.086999893188477 - - - - - - - 47.65458754263818 - -116.84416506439447 - - 688.4000244140625 - 53262.171875 - - - 4.060999870300293 - - - - - - - 47.65428193844855 - -116.84435675852001 - - 688.7999877929688 - 53299.1015625 - - - 4.103000164031982 - - - - - - - 47.65400198288262 - -116.84451936744153 - - 685.5999755859375 - 53332.53125 - - - 3.7149999141693115 - - - - - - - 47.653738958761096 - -116.84466948732734 - - 683.0 - 53363.87890625 - - - 3.4830000400543213 - - - - - - - 47.65352136455476 - -116.84477635659277 - - 683.0 - 53389.359375 - - - 3.6400001049041752 - - - - - - - 47.65317569486797 - -116.84493443928659 - - 682.7999877929688 - 53429.58984375 - - - 4.02400016784668 - - - - - - - 47.65286405570805 - -116.84505899436772 - - 682.7999877929688 - 53465.48828125 - - - 3.98799991607666 - - - - - - - 47.652514949440956 - -116.84515295550227 - - 683.5999755859375 - 53504.9296875 - - - 3.5859999656677246 - - - - - - - 47.652204567566514 - -116.84523224830627 - - 684.7999877929688 - 53539.96875 - - - 3.503999948501587 - - - - - - - 47.651886055245996 - -116.84531657025218 - - 685.2000122070312 - 53575.87109375 - - - 3.5899999141693115 - - - - - - - 47.651612386107445 - -116.8454088550061 - - 683.2000122070312 - 53607.0390625 - - - 3.4639999866485596 - - - - - - - 47.65131558291614 - -116.84545026160777 - - 686.4000244140625 - 53640.19140625 - - - 3.684000015258789 - - - - - - - 47.65100025571883 - -116.84549736790359 - - 692.7999877929688 - 53675.3984375 - - - 3.5209999084472656 - - - - - - - 47.650721557438374 - -116.84554749168456 - - 696.7999877929688 - 53706.609375 - - - 3.4679999351501465 - - - - - - - 47.65038569457829 - -116.84560038149357 - - 700.0 - 53744.1484375 - - - 3.7539999485015874 - - - - - - - 47.650109343230724 - -116.84566609561443 - - 700.0 - 53775.26953125 - - - 3.890000104904175 - - - - - - - 47.6498497556895 - -116.84568705037236 - - 701.5999755859375 - 53804.05859375 - - - 3.5989999771118164 - - - - - - - 47.64962595887482 - -116.84574144892395 - - 700.0 - 53829.28125 - - - 3.6029999256134038 - - - - - - - 47.64937223866582 - -116.84580037370324 - - 697.7999877929688 - 53857.859375 - - - 3.572999954223633 - - - - - - - 47.64910535886884 - -116.84589718468487 - - 698.2000122070312 - 53888.3984375 - - - 3.816999912261963 - - - - - - - 47.64881165698171 - -116.84605325572193 - - 700.2000122070312 - 53923.08984375 - - - 3.8540000915527344 - - - - - - - 47.64853287488222 - -116.84622625820339 - - 696.5999755859375 - 53956.69921875 - - - 4.202000141143799 - - - - - - - 47.64832433313131 - -116.84633505530655 - - 695.0 - 53980.96875 - - - 2.696000099182129 - - - - - - - 47.64812928624451 - -116.84650738723576 - - 694.7999877929688 - 54006.23046875 - - - 2.8059999942779537 - - - - - - - 47.64791236259043 - -116.84679849073291 - - 695.4000244140625 - 54038.80859375 - - - 3.2579998970031743 - - - - - - - 47.647710358724 - -116.84713929891586 - - 695.2000122070312 - 54072.890625 - - - 3.408999919891358 - - - - - - - 47.64750273898244 - -116.84759217314422 - - 702.0 - 54114.03125 - - - 3.427999973297119 - - - - - - - 47.64733275398612 - -116.84808284975588 - - 714.4000244140625 - 54155.51953125 - - - 3.4570000171661377 - - - - - - - 47.647225046530366 - -116.84846808202565 - - 726.0 - 54186.71875 - - - 3.467000007629395 - - - - - - - 47.64712697826326 - -116.84890855103731 - - 740.2000122070312 - 54221.53125 - - - 3.4809999465942387 - - - - - - - 47.647036872804165 - -116.84926813468337 - - 749.5999755859375 - 54250.1015625 - - - 3.1740000247955322 - - - - - - - 47.64697853475809 - -116.84962889179587 - - 752.5999755859375 - 54277.98828125 - - - 3.4860000610351562 - - - - - - - 47.646926986053586 - -116.8499299697578 - - 752.0 - 54301.33984375 - - - 3.3359999656677246 - - - - - - - 47.646864373236895 - -116.85026549734175 - - 749.4000244140625 - 54327.48828125 - - - 3.2690000534057617 - - - - - - - 47.64679438434541 - -116.85067746788263 - - 743.4000244140625 - 54359.41015625 - - - 3.191999912261963 - - - - - - - 47.64670126140118 - -116.8510592635721 - - 735.7999877929688 - 54389.859375 - - - 3.382999897003174 - - - - - - - 47.64659095555544 - -116.85152026824653 - - 726.7999877929688 - 54426.58984375 - - - 3.3399999141693115 - - - - - - - 47.64643605798483 - -116.85201589018106 - - 726.0 - 54467.62109375 - - - 3.4189999103546143 - - - - - - - 47.646297086030245 - -116.8523682653904 - - 729.7999877929688 - 54498.2890625 - - - 3.4070000648498535 - - - - - - - 47.646088963374496 - -116.85282055288553 - - 742.5999755859375 - 54539.41015625 - - - 3.427000045776367 - - - - - - - 47.64585996977985 - -116.85322464443743 - - 754.2000122070312 - 54579.0703125 - - - 3.303999900817871 - - - - - - - 47.6456018909812 - -116.85360903851688 - - 758.2000122070312 - 54619.76953125 - - - 3.700000047683716 - - - - - - - 47.645295364782214 - -116.85406375676394 - - 756.7999877929688 - 54668.03125 - - - 3.7130000591278076 - - - - - - - 47.64507785439491 - -116.8543398566544 - - 761.5999755859375 - 54699.890625 - - - 3.9830000400543213 - - - - - - - 47.64496386051178 - -116.85452467761934 - - 763.2000122070312 - 54718.6796875 - - - 3.757999897003174 - - - - - - - 3.587720966850213 - - - - - 317.6 - 1609.34 - 8.815259 - 99 - Active - Manual - - - - - 47.64496386051178 - -116.85452467761934 - - 763.2000122070312 - 54718.6796875 - - - - - 47.64485338702798 - -116.85470673255622 - - 764.2000122070312 - 54737.08984375 - - - 3.6819999217987065 - - - - - - - 47.64462967403233 - -116.85508576221764 - - 764.7999877929688 - 54774.87109375 - - - 3.7780001163482666 - - - - - - - 47.644434459507465 - -116.85546814464033 - - 765.0 - 54810.859375 - - - 3.9990000724792485 - - - - - - - 47.644265899434686 - -116.8558684643358 - - 762.2000122070312 - 54846.2890625 - - - 3.936000108718872 - - - - - - - 47.64410245232284 - -116.85644287616014 - - 757.7999877929688 - 54893.08984375 - - - 3.9000000953674316 - - - - - - - 47.643976556137204 - -116.85699826106429 - - 754.4000244140625 - 54936.98046875 - - - 3.9909999370574956 - - - - - - - 47.643899861723185 - -116.85731216333807 - - 754.5999755859375 - 54961.73046875 - - - 3.092999935150147 - - - - - - - 47.64388318173587 - -116.85759069398046 - - 753.2000122070312 - 54982.8203125 - - - 3.013000011444092 - - - - - - - 47.6438869535923 - -116.858065193519 - - 753.7999877929688 - 55018.48046875 - - - 3.565999984741211 - - - - - - - 47.643899945542216 - -116.85848579742014 - - 756.0 - 55050.109375 - - - 3.1619999408721924 - - - - - - - 47.64390857890248 - -116.85888745822012 - - 761.5999755859375 - 55080.3203125 - - - 3.3570001125335693 - - - - - - - 47.64389969408512 - -116.85936413705349 - - 771.4000244140625 - 55116.140625 - - - 3.582000017166138 - - - - - - - 47.64388745650649 - -116.85983176343143 - - 781.4000244140625 - 55151.3203125 - - - 3.5179998874664307 - - - - - - - 47.64383909292519 - -116.86025915667415 - - 790.2000122070312 - 55183.9609375 - - - 4.080999851226807 - - - - - - - 47.6437402702868 - -116.86062527820468 - - 798.0 - 55213.5703125 - - - 3.2899999618530273 - - - - - - - 47.64361814595759 - -116.86096005141735 - - 804.4000244140625 - 55242.1796875 - - - 3.5759999752044678 - - - - - - - 47.64340415596962 - -116.86138417571783 - - 813.2000122070312 - 55281.9609375 - - - 4.421000003814697 - - - - - - - 47.643171390518546 - -116.8617934640497 - - 813.5999755859375 - 55322.16015625 - - - 4.466000080108643 - - - - - - - 47.642926974222064 - -116.86213578097522 - - 809.5999755859375 - 55359.5703125 - - - 4.1570000648498535 - - - - - - - 47.642661686986685 - -116.86240894719958 - - 804.7999877929688 - 55395.5390625 - - - 3.996999979019165 - - - - - - - 47.64240134507418 - -116.86262805014849 - - 800.4000244140625 - 55428.83984375 - - - 4.1620001792907715 - - - - - - - 47.64206078834832 - -116.86285746283829 - - 796.7999877929688 - 55470.48046875 - - - 4.626999855041504 - - - - - - - 47.6417319662869 - -116.86299216002226 - - 797.0 - 55508.4609375 - - - 4.748000144958496 - - - - - - - 47.6413503382355 - -116.86311244033277 - - 797.7999877929688 - 55551.76171875 - - - 5.413000106811523 - - - - - - - 47.64079989865422 - -116.8632507417351 - - 798.0 - 55613.87890625 - - - 6.211999893188477 - - - - - - - 47.64026974327862 - -116.86334344558418 - - 798.4000244140625 - 55673.25 - - - 6.597000122070313 - - - - - - - 47.63972433283925 - -116.86345576308668 - - 798.4000244140625 - 55734.4609375 - - - 6.800000190734863 - - - - - - - 47.63929735869169 - -116.8635509815067 - - 798.7999877929688 - 55782.48046875 - - - 6.860000133514404 - - - - - - - 47.63885638676584 - -116.86363899149 - - 798.4000244140625 - 55832.0 - - - 7.074999809265137 - - - - - - - 47.638294380158186 - -116.86380227096379 - - 798.5999755859375 - 55895.75 - - - 7.967999935150147 - - - - - - - 47.63773765414953 - -116.86403897590935 - - 797.2000122070312 - 55960.1796875 - - - 8.053999900817871 - - - - - - - 47.637110352516174 - -116.86438548378646 - - 796.4000244140625 - 56034.6015625 - - - 8.269000053405762 - - - - - - - 47.636648677289486 - -116.86470625922084 - - 796.0 - 56091.328125 - - - 8.104000091552734 - - - - - - - 47.63616017997265 - -116.86510196886957 - - 796.7999877929688 - 56153.26953125 - - - 7.743000030517578 - - - - - - - 47.63552659191191 - -116.86565433628857 - - 799.5999755859375 - 56235.0390625 - - - 8.177000045776367 - - - - - - - 47.63483718037605 - -116.86624106951058 - - 801.7999877929688 - 56323.5 - - - 8.845999717712402 - - - - - - - 47.63476325199008 - -116.86630133539438 - - 802.0 - 56332.83984375 - - - 9.34000015258789 - - - - - - - 5.067204011649873 - - - - - 177.38 - 1609.34 - 9.8842773 - 66 - Active - Manual - - - - - 47.63418179936707 - -116.86679553240538 - - 802.5999755859375 - 56407.41015625 - - - 9.319999694824219 - - - - - - - 47.633707048371434 - -116.86719249933958 - - 801.4000244140625 - 56468.01953125 - - - 8.659000396728516 - - - - - - - 47.63296105898917 - -116.86784947291017 - - 797.7999877929688 - 56564.55859375 - - - 8.776000022888184 - - - - - - - 47.63227793388069 - -116.86843754723668 - - 795.0 - 56652.4609375 - - - 8.789999961853027 - - - - - - - 47.631605956703424 - -116.8689978774637 - - 794.0 - 56738.23046875 - - - 8.57699966430664 - - - - - - - 47.63082895427942 - -116.86967295594513 - - 795.0 - 56838.37890625 - - - 9.104000091552734 - - - - - - - 47.63017047196627 - -116.87021316960454 - - 796.0 - 56922.16015625 - - - 9.309000015258789 - - - - - - - 47.62973863631487 - -116.87052455730736 - - 796.2000122070312 - 56975.55078125 - - - 8.89799976348877 - - - - - - - 47.62905056588352 - -116.87093116343021 - - 795.4000244140625 - 57057.96875 - - - 9.157999992370605 - - - - - - - 47.62830985710025 - -116.87123207375407 - - 793.5999755859375 - 57143.41015625 - - - 9.494000434875488 - - - - - - - 47.6276077888906 - -116.87138864770532 - - 791.2000122070312 - 57222.3984375 - - - 9.87399959564209 - - - - - - - 47.62691636569798 - -116.87146475538611 - - 788.0 - 57299.5 - - - 9.637999534606934 - - - - - - - 47.62634698301554 - -116.87147196382284 - - 788.0 - 57362.8203125 - - - 9.045000076293945 - - - - - - - 47.625826550647616 - -116.87144019640982 - - 788.0 - 57420.78125 - - - 9.65999984741211 - - - - - - - 47.62505583465099 - -116.87143466435373 - - 789.0 - 57506.41015625 - - - 9.515000343322754 - - - - - - - 47.62432174757123 - -116.87143877148628 - - 789.0 - 57588.03125 - - - 9.069000244140625 - - - - - - - 47.623594868928194 - -116.87146626412868 - - 789.0 - 57668.8984375 - - - 8.986000061035156 - - - - - - - 47.622956754639745 - -116.87157447449863 - - 790.0 - 57740.3203125 - - - 8.928000450134277 - - - - - - - 47.62227245606482 - -116.87175166793168 - - 790.0 - 57817.55078125 - - - 8.581000328063965 - - - - - - - 47.6215154863894 - -116.87202416360378 - - 789.0 - 57904.21875 - - - 8.666999816894531 - - - - - - - 47.621140982955694 - -116.87218476086855 - - 789.0 - 57938.921875 - - - 6.940000057220459 - - - - - - - 9.072860492163716 - - - - - 159.69 - 1609.34 - 14.1325607 - 61 - Active - Manual - - - - - 47.621140982955694 - -116.87218476086855 - - 789.0 - 57938.921875 - - - - - 47.6208608597517 - -116.87232239171863 - - 788.7999877929688 - 57980.3515625 - - - 10.357000350952147 - - - - - - - 47.6203531678766 - -116.87260343693197 - - 785.4000244140625 - 58040.62109375 - - - 7.533999919891357 - - - - - - - 47.61977079324424 - -116.87298338860273 - - 783.0 - 58111.421875 - - - 7.867000102996826 - - - - - - - 47.619268633425236 - -116.87338907271624 - - 783.4000244140625 - 58174.98046875 - - - 7.061999797821046 - - - - - - - 47.618760438635945 - -116.87382568605244 - - 783.0 - 58240.3203125 - - - 8.168000221252441 - - - - - - - 47.61821569874883 - -116.87428484670818 - - 783.0 - 58310.01953125 - - - 8.711999893188477 - - - - - - - 47.61768193915486 - -116.87467955052853 - - 782.5999755859375 - 58376.41015625 - - - 9.484000205993652 - - - - - - - 47.617203583940864 - -116.87494265846908 - - 785.0 - 58433.25 - - - 9.473999977111816 - - - - - - - 47.61662766337395 - -116.87508095987141 - - 775.2000122070312 - 58498.25 - - - 9.28499984741211 - - - - - - - 47.616053838282824 - -116.87507836148143 - - 768.4000244140625 - 58562.01171875 - - - 9.109000205993652 - - - - - - - 47.61559593491256 - -116.87495363876224 - - 769.2000122070312 - 58613.8203125 - - - 8.635000228881836 - - - - - - - 47.61496536433697 - -116.87470125965774 - - 769.4000244140625 - 58686.4609375 - - - 9.081000328063965 - - - - - - - 47.61441375128925 - -116.87436346895993 - - 769.2000122070312 - 58752.80078125 - - - 9.47700023651123 - - - - - - - 47.613651752471924 - -116.87389056198299 - - 767.2000122070312 - 58844.6796875 - - - 10.20899963378906 - - - - - - - 47.612949181348085 - -116.87349803745747 - - 769.7999877929688 - 58928.1796875 - - - 10.437000274658203 - - - - - - - 47.612405279651284 - -116.87323635444045 - - 772.5999755859375 - 58991.75 - - - 10.595000267028809 - - - - - - - 47.61181628331542 - -116.87291264533997 - - 772.4000244140625 - 59061.66015625 - - - 11.652999877929688 - - - - - - - 47.61109996587038 - -116.87248785048723 - - 767.4000244140625 - 59147.44921875 - - - 12.255999565124513 - - - - - - - 47.610335033386946 - -116.87215927988291 - - 759.2000122070312 - 59235.98046875 - - - 12.647000312805176 - - - - - - - 47.609740840271115 - -116.87205484136939 - - 752.7999877929688 - 59302.62890625 - - - 13.329999923706055 - - - - - - - 47.609132062643766 - -116.87208535149693 - - 752.7999877929688 - 59370.37109375 - - - 13.54800033569336 - - - - - - - 47.60852135717869 - -116.87225885689259 - - 751.5999755859375 - 59439.62890625 - - - 13.85200023651123 - - - - - - - 47.607925990596414 - -116.87257938086987 - - 756.5999755859375 - 59510.12109375 - - - 14.097000122070312 - - - - - - - 47.607573783025146 - -116.87285279855132 - - 754.5999755859375 - 59554.41015625 - - - 14.765999794006348 - - - - - - - 10.077925944642745 - - - - - 108.3 - 1609.34 - 16.2675037 - 40 - Active - Manual - - - - - 47.607573783025146 - -116.87285279855132 - - 754.5999755859375 - 59554.41015625 - - - - - 47.607341688126326 - -116.8730612564832 - - 751.2000122070312 - 59584.55078125 - - - 15.065999984741211 - - - - - - - 47.606790494173765 - -116.8736947607249 - - 738.0 - 59662.25 - - - 15.541000366210938 - - - - - - - 47.606313060969114 - -116.87446405179799 - - 726.5999755859375 - 59740.828125 - - - 15.715999603271484 - - - - - - - 47.60600075125694 - -116.87519025988877 - - 715.2000122070312 - 59805.62890625 - - - 16.200000762939453 - - - - - - - 47.60575298219919 - -116.87598964199424 - - 716.4000244140625 - 59871.87890625 - - - 16.56100082397461 - - - - - - - 47.60555449873209 - -116.8770120665431 - - 708.7999877929688 - 59951.8984375 - - - 16.0049991607666 - - - - - - - 47.605289965867996 - -116.87862885184586 - - 708.4000244140625 - 60076.91015625 - - - 15.62600040435791 - - - - - - - 47.605055859312415 - -116.87958229333162 - - 700.2000122070312 - 60153.25 - - - 15.269000053405763 - - - - - - - 47.60474137030542 - -116.88046859577298 - - 687.2000122070312 - 60228.640625 - - - 15.07699966430664 - - - - - - - 47.604340463876724 - -116.88127116300166 - - 704.0 - 60303.66015625 - - - 15.003999710083008 - - - - - - - 47.6038580853492 - -116.88197197392583 - - 705.2000122070312 - 60378.94921875 - - - 15.059000015258789 - - - - - - - 47.60329498909414 - -116.88256876543164 - - 692.2000122070312 - 60456.109375 - - - 15.432999610900879 - - - - - - - 47.6023127976805 - -116.8834640365094 - - 661.5999755859375 - 60584.328125 - - - 16.027000427246094 - - - - - - - 47.60147016495466 - -116.88421614468098 - - 671.0 - 60693.80078125 - - - 15.640000343322754 - - - - - - - 47.60056617669761 - -116.88506757840514 - - 656.5999755859375 - 60812.91015625 - - - 14.887999534606934 - - - - - - - 47.599715162068605 - -116.88591565936804 - - 652.2000122070312 - 60927.0390625 - - - 14.265999794006348 - - - - - - - 47.59891125373542 - -116.88668469898403 - - 651.0 - 61033.41015625 - - - 13.295999526977539 - - - - - - - 47.598181860521436 - -116.88732884824276 - - 651.0 - 61127.859375 - - - 11.807000160217283 - - - - - - - 47.59795303456485 - -116.88756085932255 - - 651.0 - 61158.69140625 - - - 10.277000427246094 - - - - - - - 14.86005534718375 - - - - - 317.78 - 1609.34 - 11.3801374 - 106 - Active - Manual - - - - - 47.59795303456485 - -116.88756085932255 - - 651.0 - 61158.69140625 - - - - - 47.597727393731475 - -116.88776495866477 - - 651.2000122070312 - 61188.109375 - - - 9.807000160217285 - - - - - - - 47.59724769741297 - -116.8881973810494 - - 652.7999877929688 - 61250.55078125 - - - 8.920000076293945 - - - - - - - 47.59677923284471 - -116.88864556141198 - - 654.2000122070312 - 61312.578125 - - - 7.752999782562256 - - - - - - - 47.596313366666436 - -116.88907815143466 - - 654.4000244140625 - 61373.76953125 - - - 6.797999858856201 - - - - - - - 47.59583727456629 - -116.88951124437153 - - 655.2000122070312 - 61435.94140625 - - - 6.2170000076293945 - - - - - - - 47.595331175252795 - -116.88996034674346 - - 654.2000122070312 - 61501.5390625 - - - 5.964000225067139 - - - - - - - 47.5950148422271 - -116.8902379553765 - - 656.0 - 61542.421875 - - - 5.840000152587891 - - - - - - - 47.594588454812765 - -116.8905682861805 - - 656.7999877929688 - 61595.94921875 - - - 5.947999954223633 - - - - - - - 47.593950256705284 - -116.89105259254575 - - 660.0 - 61675.640625 - - - 6.130000114440919 - - - - - - - 47.593333683907986 - -116.89142466522753 - - 661.2000122070312 - 61749.73828125 - - - 6.175000190734863 - - - - - - - 47.592815179377794 - -116.89171534962952 - - 659.4000244140625 - 61811.3515625 - - - 5.60099983215332 - - - - - - - 47.592261051759124 - -116.89198013395071 - - 655.7999877929688 - 61876.1015625 - - - 5.395999908447265 - - - - - - - 47.59177959524095 - -116.89220049418509 - - 654.0 - 61932.12890625 - - - 5.0929999351501465 - - - - - - - 47.59140266105533 - -116.89236025325954 - - 654.5999755859375 - 61975.73828125 - - - 4.84499979019165 - - - - - - - 47.59105389006436 - -116.89251204952598 - - 656.4000244140625 - 62016.171875 - - - 4.493000030517578 - - - - - - - 47.59068843908608 - -116.89267725683749 - - 659.2000122070312 - 62058.62890625 - - - 4.244999885559082 - - - - - - - 47.59044234640896 - -116.89278555102646 - - 662.5999755859375 - 62087.16015625 - - - 4.077000141143799 - - - - - - - 47.590205892920494 - -116.89289275556803 - - 665.2000122070312 - 62114.671875 - - - 3.928999900817871 - - - - - - - 47.589866342023015 - -116.8930496647954 - - 667.5999755859375 - 62154.21875 - - - 3.954999923706055 - - - - - - - 47.589595187455416 - -116.89315636642277 - - 669.0 - 62185.41015625 - - - 3.8989999294281006 - - - - - - - 47.58928908035159 - -116.89330765977502 - - 668.4000244140625 - 62221.30078125 - - - 3.986999988555908 - - - - - - - 47.58899085223675 - -116.89344327896833 - - 668.5999755859375 - 62255.98046875 - - - 3.4679999351501465 - - - - - - - 47.58875414729118 - -116.89356255345047 - - 670.5999755859375 - 62283.859375 - - - 3.484999895095825 - - - - - - - 47.588386768475175 - -116.89380856230855 - - 674.4000244140625 - 62328.76171875 - - - 4.081999778747559 - - - - - - - 47.58808116428554 - -116.89400654286146 - - 679.4000244140625 - 62365.859375 - - - 4.638000011444092 - - - - - - - 47.58782124146819 - -116.89417418092489 - - 684.0 - 62397.37890625 - - - 4.502999782562256 - - - - - - - 47.587537597864866 - -116.89434064552188 - - 686.2000122070312 - 62431.328125 - - - 4.24399995803833 - - - - - - - 47.58717516437173 - -116.8945589940995 - - 682.4000244140625 - 62474.8515625 - - - 4.3520002365112305 - - - - - - - 47.58684835396707 - -116.8947434797883 - - 678.0 - 62513.75 - - - 4.322000026702881 - - - - - - - 47.58652338758111 - -116.89496853388846 - - 679.2000122070312 - 62553.640625 - - - 4.432000160217285 - - - - - - - 47.5862339604646 - -116.89517389051616 - - 682.7999877929688 - 62589.2890625 - - - 3.9609999656677246 - - - - - - - 47.585912849754095 - -116.89538955688477 - - 686.0 - 62628.48828125 - - - 4.355000019073486 - - - - - - - 47.585652843117714 - -116.89552878029644 - - 689.0 - 62659.23046875 - - - 4.390999794006348 - - - - - - - 47.58532477542758 - -116.89569574780762 - - 692.0 - 62697.8515625 - - - 4.827000141143799 - - - - - - - 47.58486117236316 - -116.89587646164 - - 692.4000244140625 - 62751.1484375 - - - 5.329999923706055 - - - - - - - 47.58472069166601 - -116.89592725597322 - - 691.4000244140625 - 62767.25 - - - 5.367000102996826 - - - - - - - 5.064333797281138 - - - - - 304.35 - 1609.34 - 5.9228401 - 114 - Active - Manual - - - - - 47.58472069166601 - -116.89592725597322 - - 691.4000244140625 - 62767.25 - - - - - 47.584389355033636 - -116.89601694233716 - - 687.5999755859375 - 62804.6796875 - - - 5.347000122070312 - - - - - - - 47.58390923961997 - -116.8961214646697 - - 684.0 - 62858.62890625 - - - 5.394999980926514 - - - - - - - 47.583538088947535 - -116.89615256153047 - - 686.5999755859375 - 62899.921875 - - - 5.1620001792907715 - - - - - - - 47.58313165046275 - -116.89624585211277 - - 687.2000122070312 - 62945.6484375 - - - 5.716000080108643 - - - - - - - 47.582768965512514 - -116.89630033448339 - - 686.5999755859375 - 62986.21875 - - - 5.796000003814697 - - - - - - - 47.582217771559954 - -116.8963978998363 - - 703.0 - 63047.91015625 - - - 5.607999801635742 - - - - - - - 47.58173983544111 - -116.8964877538383 - - 710.0 - 63101.4609375 - - - 5.949999809265137 - - - - - - - 47.5813848618418 - -116.89656159840524 - - 707.0 - 63141.3203125 - - - 5.693999767303467 - - - - - - - 47.581064170226455 - -116.89662848599255 - - 702.0 - 63177.3203125 - - - 5.142000198364258 - - - - - - - 47.58061917498708 - -116.89672538079321 - - 702.0 - 63227.3515625 - - - 5.559000015258789 - - - - - - - 47.58021675981581 - -116.89679637551308 - - 702.0 - 63272.390625 - - - 5.63100004196167 - - - - - - - 47.579832784831524 - -116.89687893725932 - - 698.4000244140625 - 63315.55078125 - - - 5.394000053405762 - - - - - - - 47.57947529666126 - -116.89693425782025 - - 705.0 - 63355.5 - - - 4.994999885559082 - - - - - - - 47.579133147373796 - -116.89701204188168 - - 709.2000122070312 - 63393.98828125 - - - 4.810999870300293 - - - - - - - 47.578686056658626 - -116.89710005186498 - - 709.5999755859375 - 63444.109375 - - - 5.01200008392334 - - - - - - - 47.57829135283828 - -116.89718437381089 - - 707.7999877929688 - 63488.48046875 - - - 4.929999828338623 - - - - - - - 47.57795389741659 - -116.89728135243058 - - 704.5999755859375 - 63526.7109375 - - - 4.7789998054504395 - - - - - - - 47.57757226936519 - -116.89741428941488 - - 706.2000122070312 - 63570.30078125 - - - 4.8429999351501465 - - - - - - - 47.57719634100795 - -116.89760707318783 - - 709.5999755859375 - 63614.48046875 - - - 4.908999919891357 - - - - - - - 47.57676316425204 - -116.89785618335009 - - 722.7999877929688 - 63666.08984375 - - - 4.690999984741211 - - - - - - - 47.576455464586616 - -116.8980816565454 - - 734.0 - 63704.2890625 - - - 4.775000095367432 - - - - - - - 47.57610476575792 - -116.89837007783353 - - 736.2000122070312 - 63748.890625 - - - 4.955999851226807 - - - - - - - 47.5757912825793 - -116.89865279942751 - - 733.0 - 63789.73046875 - - - 5.104000091552734 - - - - - - - 47.575429352000356 - -116.89902847632766 - - 723.2000122070312 - 63838.921875 - - - 5.466000080108643 - - - - - - - 47.57506465539336 - -116.89946425147355 - - 719.0 - 63891.0703125 - - - 5.795000076293945 - - - - - - - 47.57473633624613 - -116.899951742962 - - 720.5999755859375 - 63942.7890625 - - - 5.747000217437744 - - - - - - - 47.57453894242644 - -116.90025449730456 - - 728.0 - 63974.421875 - - - 4.51800012588501 - - - - - - - 47.57447523996234 - -116.90034468658268 - - 730.4000244140625 - 63984.23046875 - - - 4.9039998054504395 - - - - - - - 47.57415907457471 - -116.90079605206847 - - 735.2000122070312 - 64033.109375 - - - 5.431000232696533 - - - - - - - 47.57379848510027 - -116.90133148804307 - - 732.0 - 64090.0 - - - 5.689000129699707 - - - - - - - 47.573457257822156 - -116.90181814134121 - - 719.0 - 64142.6796875 - - - 5.853000164031982 - - - - - - - 47.573266653344035 - -116.90209885127842 - - 711.2000122070312 - 64172.66015625 - - - 4.998000144958496 - - - - - - - 47.57309633307159 - -116.90235625952482 - - 711.7999877929688 - 64199.78125 - - - 4.519000053405762 - - - - - - - 47.572800535708666 - -116.90279488451779 - - 731.7999877929688 - 64246.3515625 - - - 5.173999786376953 - - - - - - - 47.57248369976878 - -116.90326577983797 - - 738.4000244140625 - 64296.33984375 - - - 5.55399990081787 - - - - - - - 47.57212646305561 - -116.9037978630513 - - 739.2000122070312 - 64352.71875 - - - 5.638999938964844 - - - - - - - 47.57198807783425 - -116.90400749444962 - - 739.4000244140625 - 64374.76171875 - - - 5.508999824523926 - - - - - - - 5.287806781994414 - - - - - 312.87 - 1609.34 - 5.9632483 - 114 - Active - Manual - - - - - 47.57198807783425 - -116.90400749444962 - - 739.4000244140625 - 64374.76171875 - - - - - 47.571820775046945 - -116.90425828099251 - - 738.4000244140625 - 64401.23046875 - - - 5.295000076293945 - - - - - - - 47.57157786749303 - -116.90463496372104 - - 732.4000244140625 - 64440.3984375 - - - 4.895999908447266 - - - - - - - 47.571189953014255 - -116.9052173383534 - - 712.0 - 64501.890625 - - - 5.591000080108642 - - - - - - - 47.5709667429328 - -116.90554968081415 - - 715.0 - 64537.08984375 - - - 5.0279998779296875 - - - - - - - 47.57094436325133 - -116.90558605827391 - - 715.5999755859375 - 64540.76953125 - - - 3.680000066757202 - - - - - - - 47.57084956392646 - -116.90570868551731 - - 718.7999877929688 - 64554.7890625 - - - 3.503999948501587 - - - - - - - 47.570606572553515 - -116.90606273710728 - - 727.4000244140625 - 64592.7890625 - - - 4.2230000495910645 - - - - - - - 47.57031848654151 - -116.9064412638545 - - 736.2000122070312 - 64635.66015625 - - - 4.763000011444092 - - - - - - - 47.5698752515018 - -116.90698457881808 - - 737.0 - 64699.7109375 - - - 4.927000045776367 - - - - - - - 47.56939027458429 - -116.90747525542974 - - 734.4000244140625 - 64765.05078125 - - - 5.026000022888184 - - - - - - - 47.568968161940575 - -116.90784967504442 - - 729.2000122070312 - 64819.76171875 - - - 4.9730000495910645 - - - - - - - 47.568887360394 - -116.90790994092822 - - 727.5999755859375 - 64829.83984375 - - - 5.039000034332275 - - - - - - - 47.56856708787382 - -116.90816936083138 - - 721.0 - 64870.46875 - - - 5.078999996185303 - - - - - - - 47.568131648004055 - -116.90846624784172 - - 719.0 - 64923.78125 - - - 4.8470001220703125 - - - - - - - 47.567738285288215 - -116.90871586091816 - - 725.5999755859375 - 64971.390625 - - - 4.761000156402588 - - - - - - - 47.567389933392406 - -116.90891375765204 - - 735.2000122070312 - 65012.98046875 - - - 4.622000217437744 - - - - - - - 47.567162197083235 - -116.90903596580029 - - 741.7999877929688 - 65039.83984375 - - - 4.47599983215332 - - - - - - - 47.5668322853744 - -116.90918575040996 - - 747.5999755859375 - 65078.1796875 - - - 4.261000156402588 - - - - - - - 47.566545037552714 - -116.90930745564401 - - 750.5999755859375 - 65111.390625 - - - 4.74399995803833 - - - - - - - 47.56635275669396 - -116.90938817337155 - - 752.7999877929688 - 65133.7109375 - - - 3.7200000286102295 - - - - - - - 47.56613256409764 - -116.90947878174484 - - 755.2000122070312 - 65159.05078125 - - - 4.2230000495910645 - - - - - - - 47.5657685380429 - -116.90964063629508 - - 758.7999877929688 - 65201.44921875 - - - 5.301000118255615 - - - - - - - 47.56522346287966 - -116.9098637625575 - - 761.4000244140625 - 65264.171875 - - - 5.702000141143799 - - - - - - - 47.56487276405096 - -116.910007763654 - - 762.2000122070312 - 65304.8515625 - - - 5.810999870300293 - - - - - - - 47.56435786373913 - -116.91020825877786 - - 762.5999755859375 - 65363.8515625 - - - 5.900000095367431 - - - - - - - 47.56397229619324 - -116.91035804338753 - - 763.7999877929688 - 65408.33984375 - - - 5.561999797821045 - - - - - - - 47.56363299675286 - -116.91047245636582 - - 766.4000244140625 - 65446.87890625 - - - 4.816999912261963 - - - - - - - 47.56331775337458 - -116.91060095094144 - - 766.7999877929688 - 65483.23046875 - - - 5.192999839782715 - - - - - - - 47.5629850756377 - -116.91074696369469 - - 765.4000244140625 - 65521.83984375 - - - 5.515999794006348 - - - - - - - 47.56250957027078 - -116.91094008274376 - - 764.4000244140625 - 65576.6796875 - - - 5.4840002059936515 - - - - - - - 47.56197086535394 - -116.91115365363657 - - 763.0 - 65638.7109375 - - - 5.638999938964844 - - - - - - - 47.56145227700472 - -116.91133788786829 - - 762.0 - 65698.0234375 - - - 5.931000232696533 - - - - - - - 47.560939555987716 - -116.91153964027762 - - 757.2000122070312 - 65757.2734375 - - - 5.923999786376953 - - - - - - - 47.56033396348357 - -116.91178397275507 - - 759.2000122070312 - 65826.84375 - - - 5.7979998588562 - - - - - - - 47.55989944562316 - -116.91198715008795 - - 758.4000244140625 - 65877.4765625 - - - 5.626999855041504 - - - - - - - 47.55940415896475 - -116.91221513785422 - - 758.7999877929688 - 65935.1796875 - - - 5.245999813079834 - - - - - - - 47.558984477072954 - -116.91243725828826 - - 757.2000122070312 - 65984.75 - - - 5.507999897003174 - - - - - - - 5.143810509476779 - - - - - 239.22 - 1609.34 - 9.6358242 - 88 - Active - Manual - - - - - 47.558984477072954 - -116.91243725828826 - - 757.2000122070312 - 65984.75 - - - - - 47.55893485620618 - -116.91246835514903 - - 757.0 - 65990.7421875 - - - 5.992000102996826 - - - - - - - 47.55834996700287 - -116.91283028572798 - - 762.7999877929688 - 66061.2578125 - - - 5.875999927520752 - - - - - - - 47.55814578384161 - -116.91296607255936 - - 764.5999755859375 - 66086.140625 - - - 4.146999835968018 - - - - - - - 47.55786867812276 - -116.91314234398305 - - 765.5999755859375 - 66119.7265625 - - - 4.798999786376953 - - - - - - - 47.55766457878053 - -116.91328207030892 - - 766.0 - 66144.71875 - - - 4.164000034332275 - - - - - - - 47.55748646333814 - -116.91339983604848 - - 766.5999755859375 - 66166.3828125 - - - 3.094000101089478 - - - - - - - 47.557209860533476 - -116.91360385157168 - - 766.2000122070312 - 66200.7734375 - - - 4.300000190734863 - - - - - - - 47.556798895820975 - -116.91391616128385 - - 768.2000122070312 - 66252.15625 - - - 5.138999938964844 - - - - - - - 47.556386673823 - -116.91423987038434 - - 771.4000244140625 - 66304.1015625 - - - 5.770999908447266 - - - - - - - 47.55585886538029 - -116.91465158946812 - - 779.0 - 66370.453125 - - - 6.0320000648498535 - - - - - - - 47.55548553541303 - -116.91493464633822 - - 780.0 - 66417.078125 - - - 5.82800006866455 - - - - - - - 47.55501857958734 - -116.91529263742268 - - 781.0 - 66475.6171875 - - - 6.504000186920167 - - - - - - - 47.554504768922925 - -116.91568365320563 - - 780.7999877929688 - 66539.9296875 - - - 7.145999908447266 - - - - - - - 47.55388836376369 - -116.91614943556488 - - 781.0 - 66616.828125 - - - 7.690000057220459 - - - - - - - 47.553468849509954 - -116.91645604558289 - - 781.0 - 66668.859375 - - - 7.433000087738037 - - - - - - - 47.55314807407558 - -116.91673499532044 - - 780.5999755859375 - 66710.2421875 - - - 5.9120001792907715 - - - - - - - 47.5527482572943 - -116.91704143770039 - - 780.4000244140625 - 66760.34375 - - - 6.26200008392334 - - - - - - - 47.55241356790066 - -116.91729775629938 - - 780.0 - 66802.203125 - - - 5.980999946594238 - - - - - - - 47.552066054195166 - -116.91757435910404 - - 780.0 - 66846.1171875 - - - 6.2729997634887695 - - - - - - - 47.55159616470337 - -116.91792983561754 - - 779.4000244140625 - 66904.828125 - - - 7.339000225067139 - - - - - - - 47.55103466100991 - -116.91835949197412 - - 778.5999755859375 - 66975.1171875 - - - 7.809999942779542 - - - - - - - 47.55057608708739 - -116.91870105452836 - - 777.0 - 67032.1875 - - - 7.133999824523927 - - - - - - - 47.55009865388274 - -116.91902467980981 - - 775.5999755859375 - 67090.5234375 - - - 7.290999889373779 - - - - - - - 47.549592554569244 - -116.91937856376171 - - 773.4000244140625 - 67152.75 - - - 7.7789998054504395 - - - - - - - 47.5489784963429 - -116.91981534473598 - - 771.2000122070312 - 67228.5625 - - - 8.423999786376953 - - - - - - - 47.5483254622668 - -116.92028959281743 - - 768.7999877929688 - 67309.453125 - - - 8.98799991607666 - - - - - - - 47.547758761793375 - -116.92065328359604 - - 768.0 - 67378.2421875 - - - 9.82699966430664 - - - - - - - 47.54714495502412 - -116.92101563327014 - - 767.0 - 67451.65625 - - - 9.177000045776367 - - - - - - - 47.546396451070905 - -116.92140245810151 - - 766.0 - 67539.7734375 - - - 8.812000274658203 - - - - - - - 47.54585875198245 - -116.92163245752454 - - 766.0 - 67602.0078125 - - - 8.890999794006348 - - - - - - - 6.727464234177744 - - - - - 225.37 - 1609.34 - 8.8774033 - 84 - Active - Manual - - - - - 47.54585875198245 - -116.92163245752454 - - 766.0 - 67602.0078125 - - - - - 47.54570385441184 - -116.92169565707445 - - 766.0 - 67619.8828125 - - - 8.934000015258789 - - - - - - - 47.54517059773207 - -116.9218728505075 - - 766.0 - 67680.7421875 - - - 8.694999694824219 - - - - - - - 47.544319750741124 - -116.92210829816759 - - 766.0 - 67776.8984375 - - - 8.741000175476074 - - - - - - - 47.54362908191979 - -116.92222036421299 - - 766.0 - 67854.1328125 - - - 8.581999778747559 - - - - - - - 47.54266935400665 - -116.92246595397592 - - 764.0 - 67962.3828125 - - - 8.32699966430664 - - - - - - - 47.54195747897029 - -116.9226395431906 - - 760.0 - 68042.609375 - - - 8.02299976348877 - - - - - - - 47.54142623394728 - -116.9227605778724 - - 758.0 - 68102.34375 - - - 7.4670000076293945 - - - - - - - 47.54077596589923 - -116.9229056686163 - - 756.5999755859375 - 68175.53125 - - - 7.318999767303467 - - - - - - - 47.54025268368423 - -116.92301136441529 - - 757.0 - 68234.2265625 - - - 7.336999893188477 - - - - - - - 47.53954256884754 - -116.92318118177354 - - 756.5999755859375 - 68314.203125 - - - 7.2709999084472665 - - - - - - - 47.53882826305926 - -116.92334353923798 - - 756.2000122070312 - 68394.5625 - - - 7.304999828338623 - - - - - - - 47.53818914294243 - -116.9234944973141 - - 757.7999877929688 - 68466.46875 - - - 7.190999984741211 - - - - - - - 47.5375534594059 - -116.92364076152444 - - 758.5999755859375 - 68538.0078125 - - - 7.1539998054504395 - - - - - - - 47.53678869456053 - -116.92381753586233 - - 763.2000122070312 - 68624.109375 - - - 7.175000190734863 - - - - - - - 47.53650446422398 - -116.92386883310974 - - 764.7999877929688 - 68655.9375 - - - 5.304999828338623 - - - - - - - 47.53619299270213 - -116.9239535741508 - - 765.7999877929688 - 68691.15625 - - - 4.4029998779296875 - - - - - - - 47.53584296442568 - -116.92405516281724 - - 766.4000244140625 - 68730.796875 - - - 5.6620001792907715 - - - - - - - 47.535457564517856 - -116.92417309619486 - - 766.0 - 68774.546875 - - - 5.46999979019165 - - - - - - - 47.53486664034426 - -116.92438658326864 - - 764.7999877929688 - 68842.1796875 - - - 6.1479997634887695 - - - - - - - 47.5344845931977 - -116.92457567900419 - - 764.5999755859375 - 68886.9765625 - - - 5.599999904632568 - - - - - - - 47.534172954037786 - -116.92471138201654 - - 764.2000122070312 - 68923.109375 - - - 6.021999835968018 - - - - - - - 47.533639362081885 - -116.92497138865292 - - 764.0 - 68985.5625 - - - 6.244999885559082 - - - - - - - 47.53310367465019 - -116.92526726983488 - - 764.2000122070312 - 69049.1484375 - - - 7.065000057220459 - - - - - - - 47.53250386565924 - -116.92564663477242 - - 763.4000244140625 - 69121.703125 - - - 8.062000274658203 - - - - - - - 47.53198594786227 - -116.92600764334202 - - 762.7999877929688 - 69185.3828125 - - - 7.960000038146973 - - - - - - - 47.53180766478181 - -116.92613404244184 - - 763.0 - 69207.3984375 - - - 7.339000225067139 - - - - - - - 7.140897165106269 - - - - - 213.96 - 1609.34 - 10.735397299999999 - 79 - Active - Manual - - - - - 47.53180766478181 - -116.92613404244184 - - 763.0 - 69207.3984375 - - - - - 47.53153156489134 - -116.92635758779943 - - 763.4000244140625 - 69242.3828125 - - - 6.994999885559082 - - - - - - - 47.53108665347099 - -116.92672739736736 - - 764.2000122070312 - 69299.1171875 - - - 6.304999828338623 - - - - - - - 47.53080946393311 - -116.92698773927987 - - 764.4000244140625 - 69335.6484375 - - - 6.089000225067139 - - - - - - - 47.53040453419089 - -116.9273781683296 - - 764.4000244140625 - 69389.3984375 - - - 6.718999862670898 - - - - - - - 47.53006397746503 - -116.92769885994494 - - 764.0 - 69434.2890625 - - - 5.611000061035156 - - - - - - - 47.529735658317804 - -116.92802164703608 - - 764.0 - 69478.15625 - - - 6.26800012588501 - - - - - - - 47.52943835221231 - -116.92833236418664 - - 765.0 - 69518.65625 - - - 6.75 - - - - - - - 47.529100477695465 - -116.92866034805775 - - 765.0 - 69563.6796875 - - - 7.502999782562256 - - - - - - - 47.52870929427445 - -116.92907156422734 - - 765.0 - 69617.1328125 - - - 7.635000228881836 - - - - - - - 47.52825826406479 - -116.92956014536321 - - 765.0 - 69679.296875 - - - 6.908999919891357 - - - - - - - 47.527834475040436 - -116.93003145977855 - - 765.0 - 69738.3203125 - - - 7.376999855041504 - - - - - - - 47.52735176123679 - -116.93055935204029 - - 766.0 - 69805.0703125 - - - 8.343999862670898 - - - - - - - 47.526775589212775 - -116.93117827177048 - - 764.5999755859375 - 69884.296875 - - - 8.803999900817871 - - - - - - - 47.52630184404552 - -116.93170666694641 - - 761.5999755859375 - 69950.2890625 - - - 9.425999641418457 - - - - - - - 47.52561494708061 - -116.93242834880948 - - 758.2000122070312 - 70044.0390625 - - - 10.416999816894531 - - - - - - - 47.52506693825126 - -116.9330333545804 - - 756.7999877929688 - 70120.109375 - - - 10.866999626159668 - - - - - - - 47.524412563070655 - -116.93377389572561 - - 756.2000122070312 - 70211.796875 - - - 10.187999725341795 - - - - - - - 47.52376087009907 - -116.93449339829385 - - 754.2000122070312 - 70302.5234375 - - - 10.079999923706055 - - - - - - - 47.52329299226403 - -116.93501994945109 - - 751.5999755859375 - 70367.65625 - - - 9.305999755859375 - - - - - - - 47.522803489118814 - -116.9355617556721 - - 747.4000244140625 - 70435.671875 - - - 8.501999855041504 - - - - - - - 47.52243049442768 - -116.93597607314587 - - 746.4000244140625 - 70487.578125 - - - 7.414999961853028 - - - - - - - 47.521985583007336 - -116.93646867759526 - - 747.0 - 70549.3984375 - - - 6.868999958038331 - - - - - - - 47.52136507071555 - -116.93713076412678 - - 750.2000122070312 - 70634.4765625 - - - 6.545000076293945 - - - - - - - 47.520965756848454 - -116.93756746128201 - - 754.0 - 70689.7109375 - - - 6.136000156402588 - - - - - - - 47.52056376077235 - -116.93800256587565 - - 757.0 - 70745.1328125 - - - 5.541999816894531 - - - - - - - 47.52027944661677 - -116.93831395357847 - - 758.0 - 70784.5078125 - - - 5.625 - - - - - - - 47.52006025984883 - -116.93855225108564 - - 758.0 - 70814.7734375 - - - 4.323999881744385 - - - - - - - 7.521704964011964 - - - - - 277.16 - 1609.34 - 7.4139886 - 104 - Active - Manual - - - - - 47.52006025984883 - -116.93855225108564 - - 758.0 - 70814.7734375 - - - - - 47.51971333287656 - -116.93893505260348 - - 758.0 - 70862.9296875 - - - 4.815999984741211 - - - - - - - 47.51946355216205 - -116.93923235870898 - - 758.0 - 70898.59375 - - - 4.458000183105469 - - - - - - - 47.519234558567405 - -116.93947358988225 - - 758.2000122070312 - 70929.8984375 - - - 4.4720001220703125 - - - - - - - 47.518957452848554 - -116.93978363648057 - - 759.0 - 70968.578125 - - - 5.526000022888183 - - - - - - - 47.5187857914716 - -116.93996116518974 - - 759.0 - 70991.84375 - - - 4.6519999504089355 - - - - - - - 47.51852628774941 - -116.94023265503347 - - 759.4000244140625 - 71027.203125 - - - 5.052000045776366 - - - - - - - 47.51823795028031 - -116.94054923951626 - - 760.2000122070312 - 71067.3828125 - - - 5.738999843597412 - - - - - - - 47.517785243690014 - -116.94105408154428 - - 761.0 - 71130.2421875 - - - 5.715000152587891 - - - - - - - 47.5175045337528 - -116.94135909900069 - - 761.0 - 71168.9921875 - - - 4.843999862670898 - - - - - - - 47.517178393900394 - -116.941719353199 - - 762.0 - 71214.3203125 - - - 5.665999889373779 - - - - - - - 47.516804141923785 - -116.94213777780533 - - 763.2000122070312 - 71266.5 - - - 5.7979998588562 - - - - - - - 47.51657707616687 - -116.94238789379597 - - 764.0 - 71298.0234375 - - - 4.502999782562256 - - - - - - - 47.516331654042006 - -116.94266206584871 - - 764.7999877929688 - 71332.2421875 - - - 4.888000011444092 - - - - - - - 47.516054548323154 - -116.94297529757023 - - 766.4000244140625 - 71371.078125 - - - 5.547999858856201 - - - - - - - 47.51558616757393 - -116.94348307326436 - - 767.2000122070312 - 71435.6875 - - - 6.460999965667725 - - - - - - - 47.51522867940366 - -116.94387266412377 - - 768.2000122070312 - 71485.1171875 - - - 6.178999900817872 - - - - - - - 47.51485166139901 - -116.94428446702659 - - 768.0 - 71537.28125 - - - 6.520999908447266 - - - - - - - 47.514341454952955 - -116.94492886774242 - - 768.4000244140625 - 71611.9765625 - - - 6.790999889373779 - - - - - - - 47.51378607004881 - -116.94577074609697 - - 768.0 - 71700.4921875 - - - 6.808000087738037 - - - - - - - 47.51335565932095 - -116.9465171545744 - - 768.5999755859375 - 71774.3671875 - - - 6.716000080108643 - - - - - - - 47.51299758441746 - -116.94725534878671 - - 774.7999877929688 - 71842.7890625 - - - 6.8420000076293945 - - - - - - - 47.51280748285353 - -116.94770277477801 - - 776.0 - 71882.5234375 - - - 5.676000118255615 - - - - - - - 47.51264805905521 - -116.94804375059903 - - 777.0 - 71913.7265625 - - - 4.459000110626221 - - - - - - - 47.512476397678256 - -116.9483970478177 - - 778.5999755859375 - 71946.4765625 - - - 4.677000045776367 - - - - - - - 47.51228705048561 - -116.9487839564681 - - 780.5999755859375 - 71982.40625 - - - 5.133999824523926 - - - - - - - 47.512128883972764 - -116.94911914877594 - - 780.7999877929688 - 72013.203125 - - - 5.130000114440918 - - - - - - - 47.51195948570967 - -116.94947755895555 - - 781.7999877929688 - 72046.421875 - - - 5.538000106811523 - - - - - - - 47.511729234829545 - -116.94998533464968 - - 780.7999877929688 - 72092.3984375 - - - 5.747000217437744 - - - - - - - 47.51133503392339 - -116.95081355050206 - - 780.2000122070312 - 72168.359375 - - - 6.329999923706056 - - - - - - - 47.51097553409636 - -116.95150145329535 - - 779.0 - 72233.7890625 - - - 6.543000221252441 - - - - - - - 47.51065878197551 - -116.95206454955041 - - 778.2000122070312 - 72288.9765625 - - - 6.131999969482422 - - - - - - - 47.51025326550007 - -116.9527423940599 - - 778.4000244140625 - 72357.0625 - - - 6.809000015258789 - - - - - - - 47.50984003767371 - -116.95340515114367 - - 779.0 - 72424.9296875 - - - 7.540999889373779 - - - - - - - 5.8065521507432525 - - - - - 318.66 - 1609.34 - 8.3617992 - 108 - Active - Manual - - - - - 47.50984003767371 - -116.95340515114367 - - 779.0 - 72424.9296875 - - - - - 47.509792763739824 - -116.95347857661545 - - 779.0 - 72432.5625 - - - 7.632999897003174 - - - - - - - 47.50949596054852 - -116.95392365567386 - - 779.2000122070312 - 72479.59375 - - - 6.717999935150147 - - - - - - - 47.50922245904803 - -116.95430235005915 - - 779.0 - 72521.2578125 - - - 5.953000068664551 - - - - - - - 47.50878836028278 - -116.95485865697265 - - 780.0 - 72585.1875 - - - 6.39300012588501 - - - - - - - 47.50847663730383 - -116.95523869246244 - - 780.5999755859375 - 72630.15625 - - - 5.620999813079834 - - - - - - - 47.50812258571386 - -116.95564923807979 - - 784.5999755859375 - 72680.25 - - - 6.26200008392334 - - - - - - - 47.50785419717431 - -116.95596129633486 - - 787.4000244140625 - 72718.2265625 - - - 5.425000190734863 - - - - - - - 47.50762646086514 - -116.95625407621264 - - 789.5999755859375 - 72751.7890625 - - - 4.195000171661377 - - - - - - - 47.50740945339203 - -116.95648206397891 - - 791.5999755859375 - 72781.421875 - - - 4.939000129699707 - - - - - - - 47.5073348544538 - -116.95655205287039 - - 792.2000122070312 - 72791.2265625 - - - 4.9019999504089355 - - - - - - - 47.50709957443178 - -116.95678607560694 - - 793.0 - 72822.7734375 - - - 4.50600004196167 - - - - - - - 47.50690863467753 - -116.95697575807571 - - 793.0 - 72848.34375 - - - 4.263000011444092 - - - - - - - 47.50660973601043 - -116.95720257237554 - - 793.0 - 72885.7109375 - - - 5.337999820709228 - - - - - - - 47.50632097944617 - -116.9574635848403 - - 792.0 - 72923.3828125 - - - 5.38100004196167 - - - - - - - 47.50614898279309 - -116.95759903639555 - - 792.0 - 72945.0390625 - - - 3.6110000610351567 - - - - - - - 47.50593826174736 - -116.95778695866466 - - 792.0 - 72972.3984375 - - - 3.9079999923706055 - - - - - - - 47.50574246048927 - -116.95794286206365 - - 792.4000244140625 - 72997.140625 - - - 3.5350000858306885 - - - - - - - 47.505451356992126 - -116.9581734482199 - - 793.7999877929688 - 73033.921875 - - - 4.086999893188477 - - - - - - - 47.505098059773445 - -116.95844896137714 - - 798.4000244140625 - 73078.3125 - - - 4.439000129699707 - - - - - - - 47.504737973213196 - -116.95870938710868 - - 806.2000122070312 - 73122.8828125 - - - 4.456999778747559 - - - - - - - 47.504591876640916 - -116.95879924111068 - - 806.7999877929688 - 73140.4765625 - - - 2.934000015258789 - - - - - - - 47.50437595881522 - -116.95894106291234 - - 807.0 - 73166.7734375 - - - 3.2850000858306885 - - - - - - - 47.50403389334679 - -116.95915614254773 - - 807.0 - 73208.140625 - - - 3.7609999179840092 - - - - - - - 47.50359669327736 - -116.95942109450698 - - 807.0 - 73260.703125 - - - 4.380000114440918 - - - - - - - 47.503180699422956 - -116.95963885635138 - - 807.0 - 73309.7734375 - - - 4.906000137329102 - - - - - - - 47.50267527066171 - -116.95992384105921 - - 808.4000244140625 - 73369.9375 - - - 5.013999938964844 - - - - - - - 47.50218107365072 - -116.9601851888001 - - 810.4000244140625 - 73428.3203125 - - - 5.308000087738037 - - - - - - - 47.50181805342436 - -116.96037059649825 - - 813.0 - 73470.9921875 - - - 6.0960001945495605 - - - - - - - 47.501392252743244 - -116.9606339558959 - - 817.0 - 73522.296875 - - - 5.701000213623047 - - - - - - - 47.50111405737698 - -116.96082179434597 - - 819.0 - 73556.296875 - - - 4.85699987411499 - - - - - - - 47.50081926584244 - -116.96102916263044 - - 820.2000122070312 - 73592.609375 - - - 4.033999919891357 - - - - - - - 47.500437553972006 - -116.961300233379 - - 822.7999877929688 - 73639.7109375 - - - 4.710000038146973 - - - - - - - 47.50012113712728 - -116.96158446371555 - - 825.4000244140625 - 73680.84375 - - - 4.568999767303467 - - - - - - - 47.49997596256435 - -116.96171094663441 - - 826.0 - 73699.5625 - - - 3.121000051498413 - - - - - - - 47.49980513937771 - -116.96185184642673 - - 826.0 - 73721.3125 - - - 4.349999904632568 - - - - - - - 47.49956893734634 - -116.96207874454558 - - 826.5999755859375 - 73752.65625 - - - 4.478000164031982 - - - - - - - 47.49917767010629 - -116.96244444698095 - - 829.5999755859375 - 73804.2421875 - - - 5.73199987411499 - - - - - - - 47.49878975562751 - -116.9628407433629 - - 832.2000122070312 - 73856.6328125 - - - 6.547999858856201 - - - - - - - 47.49831626191735 - -116.9633470941335 - - 833.0 - 73921.671875 - - - 7.2270002365112305 - - - - - - - 47.4978665728122 - -116.9638735614717 - - 831.0 - 73985.5234375 - - - 7.980999946594238 - - - - - - - 47.497507743537426 - -116.96432115510106 - - 826.2000122070312 - 74037.7265625 - - - 8.701000213623047 - - - - - - - 5.050348315132115 - - - - - 156.73 - 1609.34 - 11.6338034 - 58 - Active - Manual - - - - - 47.497507743537426 - -116.96432115510106 - - 826.2000122070312 - 74037.7265625 - - - - - 47.49738444574177 - -116.9644729513675 - - 822.7999877929688 - 74055.578125 - - - 8.925999641418457 - - - - - - - 47.49688404612243 - -116.9651410728693 - - 817.5999755859375 - 74130.609375 - - - 9.378999710083008 - - - - - - - 47.49637275002897 - -116.96586593985558 - - 821.2000122070312 - 74209.5234375 - - - 9.86299991607666 - - - - - - - 47.4958754517138 - -116.96664243936539 - - 823.2000122070312 - 74289.953125 - - - 10.053999900817871 - - - - - - - 47.49535409733653 - -116.96751365438104 - - 820.7999877929688 - 74377.546875 - - - 9.734000205993652 - - - - - - - 47.4948167335242 - -116.96851956658065 - - 817.0 - 74474.078125 - - - 9.652000427246094 - - - - - - - 47.49439478851855 - -116.96938399225473 - - 815.5999755859375 - 74554.3828125 - - - 10.038000106811523 - - - - - - - 47.494043251499534 - -116.97013878263533 - - 814.7999877929688 - 74623.34375 - - - 9.850000381469727 - - - - - - - 47.493691546842456 - -116.97099465876818 - - 812.2000122070312 - 74698.7734375 - - - 9.428999900817871 - - - - - - - 47.49330036342144 - -116.9720296561718 - - 815.5999755859375 - 74788.046875 - - - 9.920000076293945 - - - - - - - 47.49288847669959 - -116.97312139905989 - - 818.4000244140625 - 74882.21875 - - - 10.46399974822998 - - - - - - - 47.49244029633701 - -116.97450885549188 - - 817.0 - 74997.953125 - - - 10.520999908447266 - - - - - - - 47.491969065740705 - -116.97575046680868 - - 813.2000122070312 - 75105.15625 - - - 10.720999717712402 - - - - - - - 47.49155986122787 - -116.9768404494971 - - 813.0 - 75199.0078125 - - - 10.427000045776365 - - - - - - - 47.49125584959984 - -116.97766087017953 - - 813.4000244140625 - 75269.4921875 - - - 10.069000244140623 - - - - - - - 47.49084555543959 - -116.97880005463958 - - 803.4000244140625 - 75366.703125 - - - 10.800000190734863 - - - - - - - 47.49041355215013 - -116.97998005896807 - - 805.0 - 75467.71875 - - - 11.225000381469727 - - - - - - - 47.490029744803905 - -116.98103819042444 - - 810.5999755859375 - 75558.15625 - - - 11.30500030517578 - - - - - - - 47.48969337902963 - -116.98202767409384 - - 812.5999755859375 - 75641.59375 - - - 11.918999671936033 - - - - - - - 10.268257475275952 - - - - - 206.3 - 1609.34 - 14.474258400000002 - 57 - Active - Manual - - - - - 47.48969337902963 - -116.98202767409384 - - 812.5999755859375 - 75641.59375 - - - - - 47.489317785948515 - -116.98309418745339 - - 805.5999755859375 - 75732.15625 - - - 12.9399995803833 - - - - - - - 47.48884169384837 - -116.98444216512144 - - 805.7999877929688 - 75846.7265625 - - - 14.319999694824219 - - - - - - - 47.48850457370281 - -116.9854735583067 - - 800.5999755859375 - 75932.9765625 - - - 14.375 - - - - - - - 47.488378593698144 - -116.98585225269198 - - 800.0 - 75964.7734375 - - - 10.595999717712402 - - - - - - - 47.48830567114055 - -116.98606858961284 - - 798.7999877929688 - 75982.90625 - - - 6.046999931335449 - - - - - - - 47.48827239498496 - -116.9861551746726 - - 798.2000122070312 - 75990.3828125 - - - 2.492000102996826 - - - - - - - 47.48827189207077 - -116.98616313748062 - - 798.2000122070312 - 75991.71875 - - - 0.2230000048875809 - - - - - - - 47.48828714713454 - -116.98620689101517 - - 797.7999877929688 - 75998.7890625 - - - 0.1720000058412552 - - - - - - - 47.48823165893555 - -116.98637528344989 - - 795.7999877929688 - 76012.921875 - - - 3.5329999923706055 - - - - - - - 47.48808874748647 - -116.98678867891431 - - 791.2000122070312 - 76047.921875 - - - 5.833000183105469 - - - - - - - 47.48791859485209 - -116.98724566027522 - - 785.7999877929688 - 76087.2109375 - - - 7.857999801635742 - - - - - - - 47.48768163844943 - -116.98794219642878 - - 777.4000244140625 - 76145.9375 - - - 9.788000106811523 - - - - - - - 47.48731224797666 - -116.98906897567213 - - 788.7999877929688 - 76240.2109375 - - - 10.475000381469727 - - - - - - - 47.48684328049421 - -116.99029826559126 - - 789.4000244140625 - 76346.6015625 - - - 11.821000099182127 - - - - - - - 47.486300049349666 - -116.99153216555715 - - 768.0 - 76457.5078125 - - - 12.322999954223635 - - - - - - - 47.4857768509537 - -116.9925619661808 - - 741.4000244140625 - 76554.46875 - - - 12.119999885559082 - - - - - - - 47.485180143266916 - -116.99362655170262 - - 765.7999877929688 - 76658.640625 - - - 11.574999809265135 - - - - - - - 47.48458905145526 - -116.99461427517235 - - 782.4000244140625 - 76757.890625 - - - 11.027999877929688 - - - - - - - 47.484034756198525 - -116.99541533365846 - - 786.5999755859375 - 76844.1875 - - - 10.786999702453613 - - - - - - - 47.48340653255582 - -116.99620616622269 - - 787.5999755859375 - 76935.953125 - - - 10.196000099182129 - - - - - - - 47.482744278386235 - -116.99702105484903 - - 784.5999755859375 - 77031.84375 - - - 9.588000297546387 - - - - - - - 47.48225066810846 - -116.9975783675909 - - 780.7999877929688 - 77100.953125 - - - 8.640000343322754 - - - - - - - 47.48173895291984 - -116.99812235310674 - - 780.0 - 77171.1015625 - - - 7.794000148773193 - - - - - - - 47.48130887746811 - -116.99853474274278 - - 778.7999877929688 - 77228.1328125 - - - 7.129000186920167 - - - - - - - 47.48110519722104 - -116.99872266501188 - - 779.0 - 77254.8203125 - - - 6.671999931335449 - - - - - - - 7.8009888225884625 - - - - - 241.27 - 1609.34 - 9.8942738 - 89 - Active - Manual - - - - - 47.48110519722104 - -116.99872266501188 - - 779.0 - 77254.8203125 - - - - - 47.480813674628735 - -116.99897546321154 - - 780.7999877929688 - 77292.40625 - - - 6.265999794006348 - - - - - - - 47.48041863553226 - -116.99930763803422 - - 781.4000244140625 - 77342.96875 - - - 5.617000102996826 - - - - - - - 47.480105152353644 - -116.99955708347261 - - 782.5999755859375 - 77382.5703125 - - - 4.949999809265137 - - - - - - - 47.47992938384414 - -116.99968457221985 - - 783.2000122070312 - 77404.3515625 - - - 3.630000114440918 - - - - - - - 47.47962269000709 - -116.99990585446358 - - 784.0 - 77442.328125 - - - 4.21999979019165 - - - - - - - 47.4793063569814 - -117.0001202635467 - - 784.7999877929688 - 77481.0234375 - - - 4.836999893188477 - - - - - - - 47.47908465564251 - -117.00026946142316 - - 786.2000122070312 - 77508.078125 - - - 4.508999824523926 - - - - - - - 47.47876966372132 - -117.000467274338 - - 788.7999877929688 - 77546.171875 - - - 4.76200008392334 - - - - - - - 47.478358279913664 - -117.00071345083416 - - 792.4000244140625 - 77595.59375 - - - 5.491000175476073 - - - - - - - 47.47810699045658 - -117.00085133314133 - - 794.5999755859375 - 77625.3515625 - - - 4.960000038146973 - - - - - - - 47.47767993248999 - -117.0010581985116 - - 795.7999877929688 - 77675.296875 - - - 5.548999786376953 - - - - - - - 47.47726008296013 - -117.00125374831259 - - 796.0 - 77724.3125 - - - 6.126999855041504 - - - - - - - 47.47670855373144 - -117.00149933807552 - - 797.5999755859375 - 77788.3671875 - - - 6.40500020980835 - - - - - - - 47.47640596702695 - -117.00164115987718 - - 798.7999877929688 - 77823.65625 - - - 5.041999816894531 - - - - - - - 47.47601268813014 - -117.00176705606282 - - 798.4000244140625 - 77868.40625 - - - 5.5929999351501465 - - - - - - - 47.47549116611481 - -117.00193368829787 - - 796.5999755859375 - 77927.71875 - - - 6.5900001525878915 - - - - - - - 47.47486327774823 - -117.00208858586848 - - 794.7999877929688 - 77998.546875 - - - 7.083000183105469 - - - - - - - 47.474378971382976 - -117.00218279846013 - - 793.2000122070312 - 78052.8125 - - - 6.782999992370606 - - - - - - - 47.473910339176655 - -117.00226938351989 - - 794.4000244140625 - 78105.328125 - - - 7.501999855041504 - - - - - - - 47.473256047815084 - -117.00233895331621 - - 797.7999877929688 - 78178.296875 - - - 8.107999801635742 - - - - - - - 47.47272865846753 - -117.00237574987113 - - 800.0 - 78237.0234375 - - - 8.387999534606934 - - - - - - - 47.47207813896239 - -117.00238337740302 - - 799.4000244140625 - 78309.3828125 - - - 8.039999961853027 - - - - - - - 47.471560556441545 - -117.00238128192723 - - 795.2000122070312 - 78366.921875 - - - 8.220999717712402 - - - - - - - 47.471016151830554 - -117.00234146788716 - - 795.2000122070312 - 78427.5390625 - - - 8.65999984741211 - - - - - - - 47.47035129927099 - -117.00226636603475 - - 799.0 - 78501.7265625 - - - 9.27400016784668 - - - - - - - 47.47001099400222 - -117.00219838880002 - - 797.2000122070312 - 78539.8828125 - - - 9.53499984741211 - - - - - - - 47.46967655606568 - -117.00200845487416 - - 794.5999755859375 - 78579.7265625 - - - 9.96500015258789 - - - - - - - 47.46898563578725 - -117.0017889328301 - - 792.0 - 78658.34375 - - - 9.826000213623047 - - - - - - - 47.468256494030356 - -117.0015690755099 - - 793.0 - 78741.0390625 - - - 9.187999725341797 - - - - - - - 47.4680089764297 - -117.0014913752675 - - 793.0 - 78769.15625 - - - 7.031000137329102 - - - - - - - 47.46782759204507 - -117.001281240955 - - 792.7999877929688 - 78795.3515625 - - - 6.546999931335449 - - - - - - - 47.46779574081302 - -117.00120915658772 - - 792.4000244140625 - 78801.8125 - - - 6.460999965667725 - - - - - - - 47.467569848522544 - -117.00093775056303 - - 793.0 - 78835.453125 - - - 6.727000236511231 - - - - - - - 47.46750773862004 - -117.00092123821378 - - 793.0 - 78842.453125 - - - 7.007999897003174 - - - - - - - 47.46733314357698 - -117.00087974779308 - - 794.0 - 78862.09375 - - - 6.546999931335449 - - - - - - - 6.670302955609897 - - - - - 264.72 - 1609.34 - 8.0315704 - 94 - Active - Manual - - - - - 47.46733314357698 - -117.00087974779308 - - 794.0 - 78862.09375 - - - - - 47.4669108632952 - -117.00076835229993 - - 797.4000244140625 - 78909.7890625 - - - 6.814000129699707 - - - - - - - 47.46620829217136 - -117.0005853753537 - - 797.7999877929688 - 78989.1171875 - - - 7.211999893188477 - - - - - - - 47.4655138514936 - -117.00039636343718 - - 798.7999877929688 - 79067.59375 - - - 7.133999824523927 - - - - - - - 47.46524236164987 - -117.00031296350062 - - 799.7999877929688 - 79098.453125 - - - 5.14300012588501 - - - - - - - 47.46492485515773 - -117.00022646225989 - - 801.2000122070312 - 79134.3203125 - - - 5.9790000915527335 - - - - - - - 47.46459745801985 - -117.00012805871665 - - 806.2000122070312 - 79171.4765625 - - - 6.193999767303467 - - - - - - - 47.464058669283986 - -116.99999428354204 - - 807.5999755859375 - 79232.2578125 - - - 6.752999782562257 - - - - - - - 47.463400857523084 - -116.99981667101383 - - 804.5999755859375 - 79306.578125 - - - 7.432000160217285 - - - - - - - 47.462730472907424 - -116.99961299076676 - - 800.5999755859375 - 79382.71875 - - - 7.613999843597412 - - - - - - - 47.46202605776489 - -116.99939397163689 - - 799.2000122070312 - 79462.7265625 - - - 8.001999855041504 - - - - - - - 47.46150185354054 - -116.99921485036612 - - 802.4000244140625 - 79522.546875 - - - 7.4770002365112305 - - - - - - - 47.46083037927747 - -116.99898367747664 - - 798.7999877929688 - 79599.171875 - - - 6.966000080108643 - - - - - - - 47.46002856642008 - -116.99876935221255 - - 799.4000244140625 - 79689.75 - - - 7.547999858856201 - - - - - - - 47.45961718261242 - -116.99865896254778 - - 796.7999877929688 - 79736.2265625 - - - 6.640999794006348 - - - - - - - 47.45920957066119 - -116.99854044243693 - - 797.4000244140625 - 79782.40625 - - - 5.771999835968018 - - - - - - - 47.45887496508658 - -116.99845167808235 - - 797.5999755859375 - 79820.296875 - - - 5.412000179290771 - - - - - - - 47.458449583500624 - -116.99833835475147 - - 800.4000244140625 - 79868.2578125 - - - 5.994999885559082 - - - - - - - 47.45808086358011 - -116.99823684990406 - - 801.7999877929688 - 79909.9375 - - - 5.953999996185303 - - - - - - - 47.45766285806894 - -116.9981087744236 - - 802.0 - 79957.390625 - - - 5.932000160217285 - - - - - - - 47.45724787004292 - -116.99798069894314 - - 805.5999755859375 - 80004.65625 - - - 5.251999855041503 - - - - - - - 47.4568846821785 - -116.99786226265132 - - 805.7999877929688 - 80045.9765625 - - - 5.164999961853027 - - - - - - - 47.456606486812234 - -116.9977704808116 - - 803.7999877929688 - 80077.65625 - - - 3.9600000381469727 - - - - - - - 47.45638629421592 - -116.99771197512746 - - 802.2000122070312 - 80102.4375 - - - 3.0980000495910645 - - - - - - - 47.45626525953412 - -116.99765095487237 - - 801.0 - 80116.640625 - - - 2.367000102996826 - - - - - - - 47.45629006996751 - -116.99758314527571 - - 801.2000122070312 - 80124.5390625 - - - 1.975000023841858 - - - - - - - 47.45632275938988 - -116.9976145774126 - - 801.5999755859375 - 80128.90625 - - - 2.187999963760376 - - - - - - - 47.456459887325764 - -116.99771985411644 - - 802.5999755859375 - 80146.6875 - - - 2.2219998836517334 - - - - - - - 47.45664378628135 - -116.99777886271477 - - 804.0 - 80167.6171875 - - - 4.185999870300293 - - - - - - - 47.456967663019896 - -116.99787139892578 - - 806.2000122070312 - 80204.328125 - - - 6.118000030517578 - - - - - - - 47.457442078739405 - -116.99803526513278 - - 804.4000244140625 - 80258.4765625 - - - 6.769000053405763 - - - - - - - 47.457862263545394 - -116.99818035587668 - - 801.0 - 80306.46875 - - - 5.999000072479248 - - - - - - - 47.45820357464254 - -116.9982813578099 - - 802.0 - 80345.203125 - - - 6.453999996185303 - - - - - - - 47.45874018408358 - -116.99843189679086 - - 798.0 - 80405.890625 - - - 7.5869998931884775 - - - - - - - 47.45920303277671 - -116.99855837970972 - - 797.4000244140625 - 80458.2421875 - - - 7.479000091552734 - - - - - - - 47.45934468694031 - -116.99859165586531 - - 797.2000122070312 - 80474.171875 - - - 7.965000152587891 - - - - - - - 6.079419741991537 - - - - - 186.56 - 1609.34 - 10.7407207 - 69 - Active - Manual - - - - - 47.45934468694031 - -116.99859165586531 - - 797.2000122070312 - 80474.171875 - - - - - 47.45975338853896 - -116.99869399890304 - - 797.4000244140625 - 80520.2265625 - - - 7.677000045776367 - - - - - - - 47.46030416339636 - -116.99884604662657 - - 799.5999755859375 - 80582.578125 - - - 7.793000221252441 - - - - - - - 47.4609237536788 - -116.99901385232806 - - 799.7999877929688 - 80652.59375 - - - 8.75100040435791 - - - - - - - 47.46152624487877 - -116.99918165802956 - - 802.7999877929688 - 80720.7578125 - - - 8.520999908447266 - - - - - - - 47.46222713962197 - -116.99941048398614 - - 799.2000122070312 - 80800.546875 - - - 8.864999771118164 - - - - - - - 47.46305325999856 - -116.999645344913 - - 801.7999877929688 - 80894.109375 - - - 9.355999946594238 - - - - - - - 47.46373278088868 - -116.99984785169363 - - 806.0 - 80971.203125 - - - 9.63599967956543 - - - - - - - 47.46430794708431 - -117.00003686361015 - - 808.5999755859375 - 81036.703125 - - - 9.357999801635742 - - - - - - - 47.46489769779146 - -117.00022025965154 - - 801.5999755859375 - 81103.671875 - - - 8.371000289916992 - - - - - - - 47.465522568672895 - -117.00040717609227 - - 798.5999755859375 - 81174.5703125 - - - 8.862000465393066 - - - - - - - 47.46630853973329 - -117.00063969008625 - - 798.4000244140625 - 81263.7578125 - - - 9.90999984741211 - - - - - - - 47.46704975143075 - -117.00085049495101 - - 796.2000122070312 - 81347.6328125 - - - 10.484000205993652 - - - - - - - 47.46789649128914 - -117.0011134352535 - - 792.4000244140625 - 81444.9609375 - - - 10.814000129699707 - - - - - - - 47.468587746843696 - -117.00130579993129 - - 793.4000244140625 - 81523.109375 - - - 9.769000053405762 - - - - - - - 47.46944789774716 - -117.00151953846216 - - 794.7999877929688 - 81618.9921875 - - - 9.588000297546387 - - - - - - - 47.47006765566766 - -117.00165859423578 - - 799.4000244140625 - 81688.71875 - - - 8.715999603271484 - - - - - - - 47.47069185599685 - -117.00176429003477 - - 797.4000244140625 - 81758.546875 - - - 7.758999824523927 - - - - - - - 47.4713434651494 - -117.00184643268585 - - 793.5999755859375 - 81831.2421875 - - - 7.269999980926514 - - - - - - - 47.47198359109461 - -117.00188046321273 - - 799.5999755859375 - 81902.4921875 - - - 7.125 - - - - - - - 47.472542161121964 - -117.00188599526882 - - 803.2000122070312 - 81964.921875 - - - 6.936999797821045 - - - - - - - 47.47311456128955 - -117.001873254776 - - 800.4000244140625 - 82028.2265625 - - - 7.034999847412109 - - - - - - - 47.47357087209821 - -117.00182447209954 - - 796.2000122070312 - 82079.09375 - - - 7.265999794006348 - - - - - - - 8.626415062714408 - - - - - 185.33 - 1609.34 - 12.112772 - 69 - Active - Manual - - - - - 47.47357087209821 - -117.00182447209954 - - 796.2000122070312 - 82079.09375 - - - - - 47.47390195727348 - -117.00177325867116 - - 794.0 - 82116.1328125 - - - 7.406000137329102 - - - - - - - 47.474523559212685 - -117.00166194699705 - - 793.0 - 82185.75 - - - 7.736000061035156 - - - - - - - 47.475145161151886 - -117.00151895172894 - - 793.0 - 82255.7109375 - - - 7.77299976348877 - - - - - - - 47.47569275088608 - -117.00135416351259 - - 793.2000122070312 - 82318.6171875 - - - 6.989999771118165 - - - - - - - 47.47628669254482 - -117.00115576386452 - - 795.7999877929688 - 82385.59375 - - - 7.441999912261963 - - - - - - - 47.476824056357145 - -117.00094445608556 - - 795.7999877929688 - 82447.453125 - - - 7.730999946594239 - - - - - - - 47.47740006074309 - -117.00069048441947 - - 793.2000122070312 - 82514.296875 - - - 8.357000350952148 - - - - - - - 47.477962989360094 - -117.00040457770228 - - 792.0 - 82580.953125 - - - 9.520000457763672 - - - - - - - 47.47866346500814 - -116.99999704957008 - - 783.0 - 82664.703125 - - - 10.470000267028809 - - - - - - - 47.47952437028289 - -116.999436551705 - - 785.5999755859375 - 82768.84375 - - - 10.413000106811522 - - - - - - - 47.48030816204846 - -116.99883934110403 - - 785.0 - 82867.0 - - - 10.906999588012695 - - - - - - - 47.48105398379266 - -116.99820508249104 - - 781.5999755859375 - 82962.6875 - - - 11.961000442504883 - - - - - - - 47.4818704649806 - -116.99741684831679 - - 781.5999755859375 - 83071.203125 - - - 12.055999755859377 - - - - - - - 47.48234446160495 - -116.99691125191748 - - 783.5999755859375 - 83136.2265625 - - - 10.84000015258789 - - - - - - - 47.482965560629964 - -116.99617959558964 - - 788.0 - 83224.609375 - - - 9.819000244140625 - - - - - - - 47.483477275818586 - -116.99551558122039 - - 786.7999877929688 - 83300.3984375 - - - 9.473999977111816 - - - - - - - 47.483958061784506 - -116.99483899399638 - - 782.7999877929688 - 83374.28125 - - - 9.234999656677246 - - - - - - - 47.48432577587664 - -116.99426298961043 - - 780.7999877929688 - 83433.8828125 - - - 8.515000343322754 - - - - - - - 47.48469709418714 - -116.99370299465954 - - 778.0 - 83492.8828125 - - - 7.375 - - - - - - - 47.485007559880614 - -116.99318256229162 - - 765.2000122070312 - 83545.1015625 - - - 6.5269999504089355 - - - - - - - 47.48522439971566 - -116.99275458231568 - - 748.7999877929688 - 83585.34375 - - - 5.749000072479247 - - - - - - - 47.48557216487825 - -116.99209475889802 - - 742.2000122070312 - 83648.328125 - - - 6.297999858856201 - - - - - - - 47.4857699777931 - -116.99168815277517 - - 752.4000244140625 - 83686.046875 - - - 6.288000106811524 - - - - - - - 8.683666940592456 - - - - - 337.75 - 1609.34 - 6.9434147 - 110 - Active - Manual - - - - - 47.4857699777931 - -116.99168815277517 - - 752.4000244140625 - 83686.046875 - - - - - 47.485800655558705 - -116.99162813834846 - - 754.4000244140625 - 83691.703125 - - - 5.640999794006348 - - - - - - - 47.48596745543182 - -116.9912994839251 - - 766.7999877929688 - 83722.953125 - - - 5.208000183105469 - - - - - - - 47.48620105907321 - -116.99078324250877 - - 779.7999877929688 - 83769.4296875 - - - 5.164999961853027 - - - - - - - 47.486353777348995 - -116.99046003632247 - - 784.7999877929688 - 83799.109375 - - - 4.947000026702881 - - - - - - - 47.486410941928625 - -116.9903274346143 - - 786.2000122070312 - 83810.9296875 - - - 3.940000057220459 - - - - - - - 47.48665175400674 - -116.98981228284538 - - 788.2000122070312 - 83858.078125 - - - 4.285999774932861 - - - - - - - 47.486877562478185 - -116.98926829732955 - - 786.4000244140625 - 83906.1171875 - - - 4.367000102996826 - - - - - - - 47.487006057053804 - -116.9888426642865 - - 783.4000244140625 - 83941.1328125 - - - 3.890000104904175 - - - - - - - 47.487102784216404 - -116.98857695795596 - - 780.7999877929688 - 83963.8984375 - - - 3.7960000038146973 - - - - - - - 47.48723605647683 - -116.98823438957334 - - 775.4000244140625 - 83993.6484375 - - - 3.719000101089478 - - - - - - - 47.487436635419726 - -116.98766324669123 - - 776.2000122070312 - 84042.1171875 - - - 3.7279999256134033 - - - - - - - 47.487577283754945 - -116.98726636357605 - - 782.7999877929688 - 84075.8828125 - - - 4.21999979019165 - - - - - - - 47.487765457481146 - -116.98676705360413 - - 789.2000122070312 - 84118.9296875 - - - 4.304999828338623 - - - - - - - 47.48792823404074 - -116.98632633313537 - - 794.4000244140625 - 84156.75 - - - 4.202000141143799 - - - - - - - 47.48809344135225 - -116.98587505146861 - - 798.0 - 84195.390625 - - - 3.864000082015991 - - - - - - - 47.488256553187966 - -116.98543064296246 - - 799.2000122070312 - 84233.4765625 - - - 3.809000015258789 - - - - - - - 47.48841689899564 - -116.98499243706465 - - 801.4000244140625 - 84271.0234375 - - - 3.7539999485015874 - - - - - - - 47.48859283514321 - -116.9844925403595 - - 804.7999877929688 - 84313.703125 - - - 3.880000114440918 - - - - - - - 47.48877857811749 - -116.98397076688707 - - 805.5999755859375 - 84357.890625 - - - 4.01800012588501 - - - - - - - 47.48898125253618 - -116.98339627124369 - - 804.0 - 84406.6875 - - - 4.065999984741211 - - - - - - - 47.48921016231179 - -116.98274449445307 - - 807.2000122070312 - 84462.0078125 - - - 4.255000114440918 - - - - - - - 47.489401856437325 - -116.98218466714025 - - 812.0 - 84509.25 - - - 4.295000076293945 - - - - - - - 47.489625653252006 - -116.98155736550689 - - 812.5999755859375 - 84562.6875 - - - 4.857999801635742 - - - - - - - 47.489709137007594 - -116.98133256286383 - - 811.7999877929688 - 84581.9609375 - - - 3.8550000190734868 - - - - - - - 47.48982078395784 - -116.98099217377603 - - 810.2000122070312 - 84610.4609375 - - - 3.562999963760376 - - - - - - - 47.48998465016484 - -116.98045967146754 - - 806.4000244140625 - 84654.5 - - - 4.4039998054504395 - - - - - - - 47.49021355994046 - -116.97975936345756 - - 802.4000244140625 - 84713.0625 - - - 4.880000114440918 - - - - - - - 47.49042738229036 - -116.97911186143756 - - 797.7999877929688 - 84767.34375 - - - 5.427999973297119 - - - - - - - 47.49067976139486 - -116.97832966223359 - - 808.4000244140625 - 84832.5625 - - - 5.434999942779541 - - - - - - - 47.49090858735144 - -116.97765223681927 - - 812.2000122070312 - 84889.59375 - - - 5.702000141143799 - - - - - - - 47.49111629091203 - -116.97706868872046 - - 812.5999755859375 - 84939.28125 - - - 6.211999893188477 - - - - - - - 47.491340842098 - -116.97643677704036 - - 811.7999877929688 - 84993.0625 - - - 6.7230000495910645 - - - - - - - 47.4915324524045 - -116.97590167634189 - - 812.5999755859375 - 85038.671875 - - - 6.5159997940063485 - - - - - - - 47.49171526171267 - -116.97541384957731 - - 813.5999755859375 - 85080.6484375 - - - 5.997000217437744 - - - - - - - 47.491902178153396 - -116.97489006444812 - - 816.4000244140625 - 85125.2734375 - - - 6.375 - - - - - - - 47.49218137934804 - -116.97408749721944 - - 818.0 - 85193.2890625 - - - 6.802000045776367 - - - - - - - 47.49247415922582 - -116.97328484617174 - - 817.7999877929688 - 85261.9765625 - - - 6.869999885559082 - - - - - - - 47.49262067489326 - -116.97287094779313 - - 816.7999877929688 - 85297.171875 - - - 7.0370001792907715 - - - - - - - 4.764897095780903 - - - - - 225.12 - 1609.34 - 11.5406609 - 84 - Active - Manual - - - - - 47.49262067489326 - -116.97287094779313 - - 816.7999877929688 - 85297.171875 - - - - - 47.49274078756571 - -116.9725341629237 - - 816.0 - 85325.8203125 - - - 7.1620001792907715 - - - - - - - 47.49288344755769 - -116.97211456485093 - - 813.7999877929688 - 85361.2109375 - - - 5.897999763488769 - - - - - - - 47.492986461147666 - -116.97182153351605 - - 812.4000244140625 - 85386.03125 - - - 4.13700008392334 - - - - - - - 47.4931281991303 - -116.97142917662859 - - 811.4000244140625 - 85419.546875 - - - 4.788000106811523 - - - - - - - 47.49326675198972 - -116.97102818638086 - - 809.5999755859375 - 85453.453125 - - - 5.651000022888184 - - - - - - - 47.49335995875299 - -116.97072953917086 - - 809.0 - 85478.15625 - - - 4.117000102996826 - - - - - - - 47.49348694458604 - -116.97041706182063 - - 809.2000122070312 - 85505.6328125 - - - 4.578000068664551 - - - - - - - 47.49363069422543 - -116.97005974128842 - - 810.2000122070312 - 85536.953125 - - - 5.21999979019165 - - - - - - - 47.493779473006725 - -116.96971943601966 - - 811.0 - 85567.453125 - - - 4.35699987411499 - - - - - - - 47.49398407526314 - -116.96926614269614 - - 811.2000122070312 - 85608.53125 - - - 5.86899995803833 - - - - - - - 47.49418708495796 - -116.9688381627202 - - 811.0 - 85647.90625 - - - 5.625999927520751 - - - - - - - 47.49443636275828 - -116.96835234761238 - - 813.7999877929688 - 85693.7890625 - - - 6.553999900817871 - - - - - - - 47.49480525031686 - -116.96763393469155 - - 817.4000244140625 - 85761.7265625 - - - 6.794000148773193 - - - - - - - 47.49516936019063 - -116.96697285398841 - - 818.7999877929688 - 85825.96875 - - - 7.138000011444092 - - - - - - - 47.495672944933176 - -116.96615285240114 - - 818.7999877929688 - 85909.34375 - - - 7.579999923706056 - - - - - - - 47.49617745168507 - -116.9653794541955 - - 817.5999755859375 - 85990.2265625 - - - 7.353000164031982 - - - - - - - 47.49669034034014 - -116.96466028690338 - - 816.0 - 86068.890625 - - - 7.151000022888184 - - - - - - - 47.4970393627882 - -116.96419266052544 - - 820.4000244140625 - 86121.34375 - - - 6.557000160217285 - - - - - - - 47.49745678156614 - -116.96367256343365 - - 829.4000244140625 - 86182.046875 - - - 6.744999885559082 - - - - - - - 47.49784109182656 - -116.96321558207273 - - 829.7999877929688 - 86236.9375 - - - 6.861000061035156 - - - - - - - 47.4982878472656 - -116.96271367371082 - - 829.2000122070312 - 86299.3984375 - - - 7.808000087738037 - - - - - - - 47.498862594366074 - -116.96212258189917 - - 826.0 - 86377.3125 - - - 8.656999588012695 - - - - - - - 47.499317564070225 - -116.96169275790453 - - 823.7999877929688 - 86437.34375 - - - 8.574999809265137 - - - - - - - 47.499861381947994 - -116.96120895445347 - - 824.0 - 86507.9375 - - - 7.844999790191651 - - - - - - - 47.50040444545448 - -116.96077636443079 - - 822.0 - 86576.65625 - - - 8.59000015258789 - - - - - - - 47.501136269420385 - -116.96023128926754 - - 817.7999877929688 - 86667.7734375 - - - 9.111000061035156 - - - - - - - 47.501782262697816 - -116.95981554687023 - - 811.5999755859375 - 86746.1484375 - - - 9.79800033569336 - - - - - - - 47.502436554059386 - -116.9594393670559 - - 808.2000122070312 - 86824.203125 - - - 11.149999618530272 - - - - - - - 47.50313267111778 - -116.95907106623054 - - 805.4000244140625 - 86906.421875 - - - 11.746999740600584 - - - - - - - 7.1488272659026295 - - - - - 154.74 - 1609.34 - 13.386425 - 57 - Active - Manual - - - - - 47.50313267111778 - -116.95907106623054 - - 805.4000244140625 - 86906.421875 - - - - - 47.50393498688936 - -116.95862866938114 - - 800.4000244140625 - 87001.7109375 - - - 11.91100025177002 - - - - - - - 47.504779044538736 - -116.95808124728501 - - 793.2000122070312 - 87104.203125 - - - 12.812000274658203 - - - - - - - 47.50558404251933 - -116.95747624151409 - - 793.0 - 87204.703125 - - - 12.562000274658205 - - - - - - - 47.50627915374935 - -116.95687056519091 - - 794.4000244140625 - 87294.46875 - - - 12.824999809265138 - - - - - - - 47.50709714367986 - -116.95609155111015 - - 795.4000244140625 - 87402.6796875 - - - 13.526000022888184 - - - - - - - 47.50774464569986 - -116.9554018881172 - - 790.4000244140625 - 87491.5234375 - - - 12.692000389099123 - - - - - - - 47.50820506364107 - -116.95486326701939 - - 796.2000122070312 - 87556.8203125 - - - 10.883000373840332 - - - - - - - 47.508880058303475 - -116.95401225239038 - - 795.5999755859375 - 87655.5234375 - - - 9.869999885559082 - - - - - - - 47.50920955091715 - -116.95354789495468 - - 795.2000122070312 - 87706.140625 - - - 8.437999725341797 - - - - - - - 47.50964448787272 - -116.95291615091264 - - 788.7999877929688 - 87773.9765625 - - - 8.479999542236328 - - - - - - - 47.51010054722428 - -116.95221005938947 - - 781.0 - 87847.5234375 - - - 9.190999984741211 - - - - - - - 47.51047337427735 - -116.95157127454877 - - 783.7999877929688 - 87911.0078125 - - - 9.069999694824219 - - - - - - - 47.510914681479335 - -116.95076359435916 - - 783.4000244140625 - 87989.2265625 - - - 9.777999877929688 - - - - - - - 47.51136738806963 - -116.94986924529076 - - 783.4000244140625 - 88073.359375 - - - 9.347000122070312 - - - - - - - 47.511765863746405 - -116.94894799031317 - - 782.5999755859375 - 88155.640625 - - - 9.142000198364258 - - - - - - - 47.512203650549054 - -116.94797493517399 - - 779.0 - 88243.6328125 - - - 9.777000427246094 - - - - - - - 47.5126001983881 - -116.94713984616101 - - 780.2000122070312 - 88320.4765625 - - - 9.605999946594238 - - - - - - - 47.512986939400434 - -116.94637089036405 - - 772.7999877929688 - 88392.65625 - - - 9.020999908447266 - - - - - - - 47.513359850272536 - -116.9456875976175 - - 770.4000244140625 - 88458.703125 - - - 9.4350004196167 - - - - - - - 47.51370317302644 - -116.94508669897914 - - 774.4000244140625 - 88517.9375 - - - 9.871999740600586 - - - - - - - 10.400310159622592 - - - - - 169.91 - 1609.34 - 10.902448699999999 - 63 - Active - Manual - - - - - 47.51370317302644 - -116.94508669897914 - - 774.4000244140625 - 88517.9375 - - - - - 47.513764360919595 - -116.94498754106462 - - 774.5999755859375 - 88528.0234375 - - - 10.07800006866455 - - - - - - - 47.51416593790054 - -116.94441036321223 - - 772.2000122070312 - 88590.34375 - - - 10.38700008392334 - - - - - - - 47.51474529504776 - -116.94371365942061 - - 770.4000244140625 - 88673.4296875 - - - 10.38700008392334 - - - - - - - 47.515420289710164 - -116.94294797256589 - - 769.7999877929688 - 88768.09375 - - - 10.517000198364258 - - - - - - - 47.51616024412215 - -116.94213945418596 - - 768.7999877929688 - 88870.4921875 - - - 10.241000175476072 - - - - - - - 47.51679006032646 - -116.9414521381259 - - 766.4000244140625 - 88957.5625 - - - 9.673999786376953 - - - - - - - 47.51737788319588 - -116.94080488756299 - - 763.4000244140625 - 89039.078125 - - - 9.057000160217285 - - - - - - - 47.51808506436646 - -116.94005093537271 - - 760.4000244140625 - 89136.1015625 - - - 9.70199966430664 - - - - - - - 47.51875259913504 - -116.93930285051465 - - 757.5999755859375 - 89229.2578125 - - - 10.35099983215332 - - - - - - - 47.519348887726665 - -116.93862785585225 - - 757.0 - 89312.84375 - - - 10.447999954223631 - - - - - - - 47.519943080842495 - -116.93795797415078 - - 756.7999877929688 - 89395.9921875 - - - 10.394000053405762 - - - - - - - 47.52067037858069 - -116.93715666420758 - - 753.7999877929688 - 89496.8671875 - - - 10.086999893188477 - - - - - - - 47.52133506350219 - -116.93642458878458 - - 749.4000244140625 - 89589.09375 - - - 10.246999740600586 - - - - - - - 47.52199798822403 - -116.93566066212952 - - 745.7999877929688 - 89682.6171875 - - - 10.390999794006348 - - - - - - - 47.522701397538185 - -116.934869075194 - - 747.5999755859375 - 89780.953125 - - - 10.925999641418457 - - - - - - - 47.52320087514818 - -116.93431746214628 - - 752.2000122070312 - 89850.328125 - - - 9.91100025177002 - - - - - - - 47.52359884791076 - -116.9338880572468 - - 755.7999877929688 - 89905.1328125 - - - 9.133000373840332 - - - - - - - 47.52405306324363 - -116.9333787728101 - - 757.7999877929688 - 89968.53125 - - - 7.926000118255616 - - - - - - - 47.52451825886965 - -116.93284685723484 - - 758.4000244140625 - 90033.953125 - - - 7.26800012588501 - - - - - - - 47.52494305372238 - -116.9323654845357 - - 759.4000244140625 - 90093.4609375 - - - 6.61299991607666 - - - - - - - 47.52514488995075 - -116.93213975988328 - - 759.7999877929688 - 90121.59375 - - - 4.688000202178955 - - - - - - - 47.52517749555409 - -116.93210639990866 - - 760.0 - 90126.0 - - - 4.414000034332275 - - - - - - - 9.471743829674534 - - - - - 223.5 - 1609.34 - 8.6354485 - 84 - Active - Manual - - - - - 47.52517749555409 - -116.93210639990866 - - 760.0 - 90126.0 - - - - - 47.52537153661251 - -116.93190129473805 - - 760.7999877929688 - 90152.578125 - - - 5.315999984741211 - - - - - - - 47.52572265453637 - -116.93151824176311 - - 760.7999877929688 - 90201.09375 - - - 6.064000129699707 - - - - - - - 47.52617225982249 - -116.93101398646832 - - 762.2000122070312 - 90263.8828125 - - - 6.27899980545044 - - - - - - - 47.52638826146722 - -116.9307837355882 - - 763.0 - 90293.4921875 - - - 4.934999942779541 - - - - - - - 47.526704762130976 - -116.93043043836951 - - 764.0 - 90337.640625 - - - 5.519000053405761 - - - - - - - 47.5271247792989 - -116.92998896352947 - - 765.0 - 90394.96875 - - - 6.369999885559082 - - - - - - - 47.527654180303216 - -116.92941865883768 - - 765.0 - 90467.84375 - - - 7.287000179290772 - - - - - - - 47.52816706895828 - -116.9288634415716 - - 765.0 - 90538.5234375 - - - 7.853000164031982 - - - - - - - 47.528480384498835 - -116.9285243935883 - - 765.0 - 90581.703125 - - - 7.197000026702881 - - - - - - - 47.52892395481467 - -116.92802273668349 - - 765.0 - 90643.84375 - - - 6.90500020980835 - - - - - - - 47.529435250908136 - -116.9274418707937 - - 764.0 - 90715.546875 - - - 7.171000003814698 - - - - - - - 47.52996406517923 - -116.92692604847252 - - 763.0 - 90786.0234375 - - - 7.8309998512268075 - - - - - - - 47.530476953834295 - -116.9264521356672 - - 762.4000244140625 - 90853.3203125 - - - 8.411999702453613 - - - - - - - 47.531080953776836 - -116.92594746127725 - - 760.5999755859375 - 90930.53125 - - - 8.579000473022461 - - - - - - - 47.5316165573895 - -116.9255302939564 - - 760.0 - 90997.8203125 - - - 8.41100025177002 - - - - - - - 47.531967256218195 - -116.92529425956309 - - 761.0 - 91040.6796875 - - - 7.143000125885011 - - - - - - - 47.53259774297476 - -116.92488078027964 - - 762.0 - 91117.390625 - - - 7.671000003814697 - - - - - - - 47.533052964136004 - -116.92459755577147 - - 762.5999755859375 - 91172.3203125 - - - 6.866000175476074 - - - - - - - 47.533494774252176 - -116.92432606592774 - - 762.2000122070312 - 91225.546875 - - - 6.652999877929688 - - - - - - - 47.533949157223105 - -116.92409346811473 - - 761.7999877929688 - 91279.0390625 - - - 7.642000198364258 - - - - - - - 47.534426590427756 - -116.92389984615147 - - 760.4000244140625 - 91334.078125 - - - 6.880000114440918 - - - - - - - 47.53493495285511 - -116.92374017089605 - - 761.0 - 91391.84375 - - - 6.418000221252442 - - - - - - - 47.535361759364605 - -116.92357915453613 - - 761.4000244140625 - 91440.84375 - - - 6.999000072479249 - - - - - - - 47.53600439988077 - -116.92340179346502 - - 762.4000244140625 - 91513.578125 - - - 8.081999778747559 - - - - - - - 47.536638071760535 - -116.92325519397855 - - 761.0 - 91584.859375 - - - 7.920000076293945 - - - - - - - 47.53732438199222 - -116.92312485538423 - - 757.7999877929688 - 91661.828125 - - - 7.697000026702881 - - - - - - - 47.53803349100053 - -116.92299585789442 - - 756.0 - 91741.2578125 - - - 8.826000213623047 - - - - - - - 7.200644268903803 - - - - - 198.06 - 1609.34 - 10.1917305 - 74 - Active - Manual - - - - - 47.53803349100053 - -116.92299585789442 - - 756.0 - 91741.2578125 - - - - - 47.53892566077411 - -116.92280265502632 - - 755.2000122070312 - 91841.5390625 - - - 9.116000175476074 - - - - - - - 47.53963267430663 - -116.92265865392983 - - 755.0 - 91920.8671875 - - - 8.814000129699707 - - - - - - - 47.54055518656969 - -116.92246595397592 - - 756.0 - 92024.421875 - - - 8.630000114440918 - - - - - - - 47.54116203635931 - -116.92233569920063 - - 757.5999755859375 - 92092.6484375 - - - 8.527999877929688 - - - - - - - 47.54184449091554 - -116.92218918353319 - - 760.0 - 92169.3125 - - - 9.583000183105469 - - - - - - - 47.542843697592616 - -116.92197167314589 - - 764.2000122070312 - 92281.546875 - - - 10.20300006866455 - - - - - - - 47.54362095147371 - -116.92178098484874 - - 766.0 - 92369.15625 - - - 9.734000205993652 - - - - - - - 47.544355457648635 - -116.92160923965275 - - 766.0 - 92451.84375 - - - 9.187000274658203 - - - - - - - 47.544819647446275 - -116.92147864960134 - - 766.0 - 92504.390625 - - - 7.507999897003175 - - - - - - - 47.545328848063946 - -116.92131285555661 - - 766.0 - 92562.3828125 - - - 7.249000072479248 - - - - - - - 47.545897560194135 - -116.92109308205545 - - 766.0 - 92627.7109375 - - - 8.166000366210938 - - - - - - - 47.54661228507757 - -116.92077029496431 - - 766.7999877929688 - 92710.84375 - - - 8.312999725341797 - - - - - - - 47.547181248664856 - -116.92046536132693 - - 767.2000122070312 - 92778.1328125 - - - 7.4770002365112305 - - - - - - - 47.54769505932927 - -116.92017199471593 - - 768.2000122070312 - 92839.3671875 - - - 7.65500020980835 - - - - - - - 47.548136450350285 - -116.91989329643548 - - 769.0 - 92892.75 - - - 6.672999858856201 - - - - - - - 47.54851338453591 - -116.9196396600455 - - 769.5999755859375 - 92938.7890625 - - - 6.577000141143799 - - - - - - - 47.549160635098815 - -116.91915635950863 - - 771.7999877929688 - 93019.453125 - - - 6.7220001220703125 - - - - - - - 47.549696657806635 - -116.91873374395072 - - 774.2000122070312 - 93086.96875 - - - 7.501999855041504 - - - - - - - 47.55035086534917 - -116.91821339540184 - - 776.0 - 93169.6171875 - - - 8.265000343322754 - - - - - - - 47.55070206709206 - -116.91794324666262 - - 776.4000244140625 - 93213.59375 - - - 7.328000068664551 - - - - - - - 47.55108025856316 - -116.91765365190804 - - 777.5999755859375 - 93260.9765625 - - - 6.769999980926514 - - - - - - - 47.551662465557456 - -116.91720379516482 - - 779.0 - 93334.0625 - - - 7.309000015258789 - - - - - - - 47.55178056657314 - -116.91711234860122 - - 779.4000244140625 - 93348.890625 - - - 7.414000034332275 - - - - - - - 8.12553768605473 - - - - - 162.84 - 1609.34 - 13.3155184 - 61 - Active - Manual - - - - - 47.55178056657314 - -116.91711234860122 - - 779.4000244140625 - 93348.890625 - - - - - 47.55222983658314 - -116.91675913520157 - - 780.0 - 93405.453125 - - - 7.070000171661377 - - - - - - - 47.55270115099847 - -116.91640307195485 - - 780.5999755859375 - 93464.3515625 - - - 7.361999988555908 - - - - - - - 47.55340816453099 - -116.91587409004569 - - 781.0 - 93552.46875 - - - 8.01099967956543 - - - - - - - 47.55415415391326 - -116.91530068404973 - - 781.0 - 93645.9765625 - - - 8.50100040435791 - - - - - - - 47.55462999455631 - -116.9149292819202 - - 780.5999755859375 - 93705.7890625 - - - 7.4770002365112305 - - - - - - - 47.55513274110854 - -116.91454564221203 - - 780.0 - 93768.6875 - - - 7.861999988555908 - - - - - - - 47.55575627088547 - -116.91406686790287 - - 778.0 - 93846.8671875 - - - 8.687000274658203 - - - - - - - 47.55640536546707 - -116.91357744857669 - - 773.2000122070312 - 93927.8828125 - - - 9.00100040435791 - - - - - - - 47.556923953816295 - -116.91319456323981 - - 772.7999877929688 - 93992.34375 - - - 9.208999633789062 - - - - - - - 47.55761948414147 - -116.91273607313633 - - 772.0 - 94077.046875 - - - 9.411999702453613 - - - - - - - 47.55834175273776 - -116.91232586279511 - - 766.2000122070312 - 94163.046875 - - - 9.555999755859375 - - - - - - - 47.559207351878285 - -116.91188958473504 - - 765.2000122070312 - 94264.7734375 - - - 10.17199993133545 - - - - - - - 47.559984270483255 - -116.91155187785625 - - 770.0 - 94354.828125 - - - 11.256999969482422 - - - - - - - 47.56073168478906 - -116.91126873716712 - - 763.7999877929688 - 94440.6171875 - - - 12.255999565124513 - - - - - - - 47.56172846071422 - -116.9108780566603 - - 770.5999755859375 - 94555.34375 - - - 12.746999740600586 - - - - - - - 47.56268408149481 - -116.91050657071173 - - 769.4000244140625 - 94665.140625 - - - 12.199999809265138 - - - - - - - 47.563568372279406 - -116.91015855409205 - - 769.0 - 94766.953125 - - - 12.727000236511232 - - - - - - - 47.564722476527095 - -116.9097104575485 - - 764.2000122070312 - 94899.59375 - - - 13.262999534606934 - - - - - - - 47.56518306210637 - -116.90952429547906 - - 760.4000244140625 - 94952.6875 - - - 13.274999618530273 - - - - - - - 9.882977119258166 - - - - - 142.43 - 1609.34 - 13.3479881 - 53 - Active - Manual - - - - - 47.56518306210637 - -116.90952429547906 - - 760.4000244140625 - 94952.6875 - - - - - 47.565864846110344 - -116.90923914313316 - - 757.4000244140625 - 95031.46875 - - - 13.130000114440918 - - - - - - - 47.56687989458442 - -116.90885256975889 - - 741.5999755859375 - 95148.046875 - - - 12.954000473022461 - - - - - - - 47.5675577390939 - -116.90853363834321 - - 725.4000244140625 - 95227.1328125 - - - 13.178000450134277 - - - - - - - 47.568408250808716 - -116.90798755735159 - - 722.7999877929688 - 95330.25 - - - 12.890999794006348 - - - - - - - 47.56913563236594 - -116.9073876645416 - - 738.4000244140625 - 95422.9765625 - - - 13.248000144958496 - - - - - - - 47.56978774443269 - -116.90672046504915 - - 742.0 - 95511.203125 - - - 12.60200023651123 - - - - - - - 47.5704191531986 - -116.90594689920545 - - 733.5999755859375 - 95602.421875 - - - 13.031999588012697 - - - - - - - 47.571052154526114 - -116.9050199445337 - - 717.7999877929688 - 95701.4375 - - - 12.376999855041504 - - - - - - - 47.571552973240614 - -116.9042571913451 - - 741.0 - 95781.453125 - - - 11.430000305175781 - - - - - - - 47.572072483599186 - -116.90347943454981 - - 745.0 - 95863.6484375 - - - 10.274999618530273 - - - - - - - 47.57254094816744 - -116.90277015790343 - - 739.0 - 95938.2265625 - - - 9.322999954223633 - - - - - - - 47.573017375543714 - -116.90206976607442 - - 712.7999877929688 - 96012.953125 - - - 9.33899974822998 - - - - - - - 47.57356236688793 - -116.90125353634357 - - 730.7999877929688 - 96099.21875 - - - 9.586000442504883 - - - - - - - 47.57414834573865 - -116.90039623528719 - - 734.7999877929688 - 96190.96875 - - - 10.194000244140625 - - - - - - - 47.57471663877368 - -116.89955008216202 - - 721.4000244140625 - 96280.5703125 - - - 9.956000328063965 - - - - - - - 47.575230868533254 - -116.89890048466623 - - 721.5999755859375 - 96355.8671875 - - - 9.411999702453613 - - - - - - - 47.57584249600768 - -116.89826245419681 - - 736.5999755859375 - 96439.1171875 - - - 10.4060001373291 - - - - - - - 47.57648304104805 - -116.89775945618749 - - 735.4000244140625 - 96519.8671875 - - - 11.53600025177002 - - - - - - - 47.57688076235354 - -116.89749048091471 - - 722.4000244140625 - 96568.5078125 - - - 12.15999984741211 - - - - - - - 11.299192544407779 - - - - - 122.49 - 1609.34 - 14.471977200000001 - 46 - Active - Manual - - - - - 47.57688076235354 - -116.89749048091471 - - 722.4000244140625 - 96568.5078125 - - - - - 47.57721025496721 - -116.89730725251138 - - 716.4000244140625 - 96607.65625 - - - 13.052000045776367 - - - - - - - 47.57803645916283 - -116.89696694724262 - - 713.0 - 96703.1015625 - - - 13.633999824523926 - - - - - - - 47.57906005717814 - -116.89672445878386 - - 717.5999755859375 - 96818.3828125 - - - 14.409000396728517 - - - - - - - 47.580072758719325 - -116.8965260591358 - - 709.2000122070312 - 96931.890625 - - - 14.189000129699707 - - - - - - - 47.580892173573375 - -116.89635858871043 - - 707.2000122070312 - 97023.859375 - - - 13.137999534606934 - - - - - - - 47.58183748461306 - -116.89619128592312 - - 711.0 - 97129.7734375 - - - 13.23799991607666 - - - - - - - 47.58274465799332 - -116.89600705169141 - - 699.5999755859375 - 97231.53125 - - - 12.720999717712402 - - - - - - - 47.58350078947842 - -116.89584695734084 - - 696.5999755859375 - 97316.453125 - - - 12.131999969482422 - - - - - - - 47.58435565978289 - -116.89566859044135 - - 699.0 - 97412.4609375 - - - 12.00100040435791 - - - - - - - 47.58512679487467 - -116.89543079584837 - - 701.2000122070312 - 97500.1015625 - - - 12.520000457763674 - - - - - - - 47.585867336019874 - -116.89507238566875 - - 694.5999755859375 - 97586.84375 - - - 12.392000198364258 - - - - - - - 47.586568063125014 - -116.8946485966444 - - 684.5999755859375 - 97670.9765625 - - - 12.019000053405762 - - - - - - - 47.58741706609726 - -116.89411425031722 - - 693.7999877929688 - 97773.5703125 - - - 12.824000358581543 - - - - - - - 47.58821158669889 - -116.8936350569129 - - 684.0 - 97869.0234375 - - - 13.635000228881836 - - - - - - - 47.58890208788216 - -116.89322845079005 - - 671.2000122070312 - 97951.6171875 - - - 13.767000198364258 - - - - - - - 47.58969065733254 - -116.89284916967154 - - 674.0 - 98043.90625 - - - 13.184000015258789 - - - - - - - 47.59054678492248 - -116.89247005619109 - - 664.7999877929688 - 98143.21875 - - - 14.187999725341797 - - - - - - - 47.590797655284405 - -116.89235237427056 - - 662.7999877929688 - 98172.546875 - - - 14.663999557495117 - - - - - - - 13.138574529349336 - - - - - 249.14 - 1609.34 - 14.4510746 - 80 - Active - Manual - - - - - 47.590797655284405 - -116.89235237427056 - - 662.7999877929688 - 98172.546875 - - - - - 47.59154565632343 - -116.89201349392533 - - 655.2000122070312 - 98259.53125 - - - 14.496999740600586 - - - - - - - 47.59236674755812 - -116.89163689501584 - - 653.7999877929688 - 98355.0703125 - - - 13.64799976348877 - - - - - - - 47.5931048579514 - -116.8912395928055 - - 656.0 - 98442.453125 - - - 12.482000350952148 - - - - - - - 47.594022089615464 - -116.890685884282 - - 656.0 - 98552.5625 - - - 12.234999656677248 - - - - - - - 47.594862040132284 - -116.8900761846453 - - 654.4000244140625 - 98656.6328125 - - - 11.562999725341797 - - - - - - - 47.59543318301439 - -116.88959866762161 - - 653.2000122070312 - 98729.578125 - - - 10.420999526977539 - - - - - - - 47.59606199339032 - -116.88902928493917 - - 653.4000244140625 - 98811.609375 - - - 10.253999710083008 - - - - - - - 47.59661075659096 - -116.88851807266474 - - 652.5999755859375 - 98883.7421875 - - - 10.305000305175781 - - - - - - - 47.597250463441014 - -116.88792538829148 - - 652.0 - 98967.703125 - - - 9.32800006866455 - - - - - - - 47.59767576120794 - -116.88751777634025 - - 651.0 - 99023.96875 - - - 8.038999557495117 - - - - - - - 47.59803065098822 - -116.88717068172991 - - 651.0 - 99071.2734375 - - - 6.756999969482422 - - - - - - - 47.598397778347135 - -116.88681839033961 - - 651.0 - 99119.9375 - - - 6.953000068664551 - - - - - - - 47.59887244552374 - -116.88636794686317 - - 651.0 - 99182.6484375 - - - 7.839000225067139 - - - - - - - 47.59921249933541 - -116.88604859635234 - - 651.0 - 99227.40625 - - - 7.460000038146973 - - - - - - - 47.59942598640919 - -116.88584776595235 - - 651.0 - 99255.53125 - - - 5.625 - - - - - - - 47.599670654162765 - -116.88562296330929 - - 651.5999755859375 - 99287.5703125 - - - 4.577000141143799 - - - - - - - 47.599966283887625 - -116.88534719869494 - - 652.5999755859375 - 99326.40625 - - - 4.315999984741211 - - - - - - - 47.60028035379946 - -116.88505886122584 - - 654.0 - 99367.5234375 - - - 4.566999912261963 - - - - - - - 47.60057933628559 - -116.88476608134806 - - 656.0 - 99407.3828125 - - - 3.986999988555908 - - - - - - - 47.600767593830824 - -116.88458997756243 - - 658.0 - 99432.1328125 - - - 3.092999935150147 - - - - - - - 47.60099566541612 - -116.88439367339015 - - 661.7999877929688 - 99461.4765625 - - - 3.260999917984009 - - - - - - - 47.601247960701585 - -116.88417725265026 - - 664.5999755859375 - 99493.8828125 - - - 3.6010000705718994 - - - - - - - 47.60153294540942 - -116.88393149524927 - - 665.4000244140625 - 99530.546875 - - - 3.6659998893737793 - - - - - - - 47.6018220372498 - -116.88366587273777 - - 661.7999877929688 - 99568.40625 - - - 3.7860000133514404 - - - - - - - 47.602074751630425 - -116.88343335874379 - - 658.5999755859375 - 99601.4765625 - - - 3.6749999523162846 - - - - - - - 47.60233643464744 - -116.88316396437585 - - 659.2000122070312 - 99636.8984375 - - - 3.5409998893737793 - - - - - - - 47.602617647498846 - -116.88288149423897 - - 668.7999877929688 - 99674.7109375 - - - 3.7809998989105225 - - - - - - - 47.60288327001035 - -116.8826328869909 - - 677.4000244140625 - 99709.671875 - - - 3.4960000514984135 - - - - - - - 47.60314637795091 - -116.88236969523132 - - 685.7999877929688 - 99744.9921875 - - - 3.532000064849854 - - - - - - - 47.603333964943886 - -116.88216115348041 - - 691.7999877929688 - 99771.109375 - - - 3.265000104904175 - - - - - - - 47.60339523665607 - -116.8820963613689 - - 693.4000244140625 - 99779.4921875 - - - 4.190999984741211 - - - - - - - 6.459596990045758 - - - - - 448.14 - 1609.34 - 5.6467438 - 117 - Active - Manual - - - - - 47.60355499573052 - -116.88192034140229 - - 696.2000122070312 - 99801.6328125 - - - 3.6889998912811284 - - - - - - - 47.60380377061665 - -116.88159805722535 - - 698.4000244140625 - 99838.3984375 - - - 3.3429999351501465 - - - - - - - 47.60395766235888 - -116.88138515688479 - - 697.5999755859375 - 99861.8203125 - - - 3.3459999561309814 - - - - - - - 47.60409018024802 - -116.88118885271251 - - 696.2000122070312 - 99882.703125 - - - 3.4800000190734863 - - - - - - - 47.6041881646961 - -116.88100545667112 - - 694.0 - 99900.296875 - - - 2.931999921798706 - - - - - - - 47.60431255213916 - -116.88081434927881 - - 692.0 - 99920.03125 - - - 2.4670000076293945 - - - - - - - 47.604443142190576 - -116.88062944449484 - - 688.7999877929688 - 99939.7265625 - - - 2.815000057220459 - - - - - - - 47.60456585325301 - -116.88035108149052 - - 682.5999755859375 - 99964.703125 - - - 3.565999984741211 - - - - - - - 47.604686385020614 - -116.88004757277668 - - 682.7999877929688 - 99991.15625 - - - 3.7809998989105225 - - - - - - - 47.60483684018254 - -116.87964918091893 - - 690.4000244140625 - 100025.40625 - - - 3.805999994277954 - - - - - - - 47.604960557073355 - -116.8792571593076 - - 696.7999877929688 - 100057.90625 - - - 3.6099998950958256 - - - - - - - 47.60509919375181 - -116.87876866199076 - - 702.2000122070312 - 100097.671875 - - - 3.615000009536743 - - - - - - - 47.60517354123294 - -116.87839466147125 - - 703.2000122070312 - 100127.03125 - - - 3.26200008392334 - - - - - - - 47.605228275060654 - -116.87809735536575 - - 704.5999755859375 - 100150.21875 - - - 3.312999963760376 - - - - - - - 47.6052965875715 - -116.87762419693172 - - 704.2000122070312 - 100186.5703125 - - - 3.634999990463257 - - - - - - - 47.60536096058786 - -116.87726955860853 - - 703.5999755859375 - 100214.171875 - - - 3.450000047683716 - - - - - - - 47.605433044955134 - -116.87682934105396 - - 705.4000244140625 - 100248.2265625 - - - 3.4059998989105225 - - - - - - - 47.605511751025915 - -116.87637185677886 - - 708.5999755859375 - 100283.7265625 - - - 2.9579999446868896 - - - - - - - 47.60559758171439 - -116.87600556761026 - - 710.2000122070312 - 100312.8828125 - - - 2.914000034332275 - - - - - - - 47.60568559169769 - -116.87566216103733 - - 710.4000244140625 - 100340.5234375 - - - 3.071000099182129 - - - - - - - 47.605778966099024 - -116.87535303644836 - - 708.7999877929688 - 100365.96875 - - - 3.181999921798706 - - - - - - - 47.60590226389468 - -116.87501826323569 - - 712.5999755859375 - 100394.6328125 - - - 3.184999942779541 - - - - - - - 47.6060357876122 - -116.87469765543938 - - 718.7999877929688 - 100422.953125 - - - 3.1470000743865967 - - - - - - - 47.60617123916745 - -116.87439515255392 - - 723.0 - 100450.21875 - - - 3.0299999713897705 - - - - - - - 47.60631515644491 - -116.8741210643202 - - 726.2000122070312 - 100476.40625 - - - 3.273000001907349 - - - - - - - 47.60650098323822 - -116.87379609793425 - - 730.4000244140625 - 100508.40625 - - - 4.0 - - - - - - - 47.60671857744455 - -116.87345897778869 - - 735.7999877929688 - 100543.5078125 - - - 3.9000000953674316 - - - - - - - 47.60680675506592 - -116.87330869026482 - - 738.4000244140625 - 100558.4296875 - - - 2.486999988555908 - - - - - - - 47.60688747279346 - -116.87319385819137 - - 740.5999755859375 - 100570.953125 - - - 2.0869998931884766 - - - - - - - 47.60710548609495 - -116.87297525815666 - - 745.7999877929688 - 100600.2265625 - - - 3.253000020980835 - - - - - - - 47.60730606503785 - -116.87274039722979 - - 746.7999877929688 - 100628.609375 - - - 3.1540000438690186 - - - - - - - 47.60759985074401 - -116.87249589711428 - - 746.5999755859375 - 100666.0625 - - - 4.160999774932861 - - - - - - - 47.60793495923281 - -116.87229146249592 - - 749.2000122070312 - 100706.2734375 - - - 4.019999980926514 - - - - - - - 47.608224553987384 - -116.87212617136538 - - 747.0 - 100740.7578125 - - - 3.4489998817443848 - - - - - - - 47.608336452394724 - -116.87208476476371 - - 745.5999755859375 - 100753.6015625 - - - 2.1410000324249268 - - - - - - - 47.608485985547304 - -116.8720265943557 - - 744.2000122070312 - 100770.78125 - - - 3.436000108718872 - - - - - - - 47.60870793834329 - -116.87194537371397 - - 742.7999877929688 - 100796.2421875 - - - 3.63700008392334 - - - - - - - 47.6090647559613 - -116.87186365015805 - - 745.0 - 100836.3671875 - - - 4.01200008392334 - - - - - - - 47.60940254665911 - -116.87182936817408 - - 746.5999755859375 - 100874.046875 - - - 4.186999797821045 - - - - - - - 47.60976145975292 - -116.87181553803384 - - 747.0 - 100913.96875 - - - 3.9920001029968266 - - - - - - - 47.61011324822903 - -116.87184236012399 - - 751.2000122070312 - 100953.140625 - - - 4.3520002365112305 - - - - - - - 47.61035196483135 - -116.87188594602048 - - 754.4000244140625 - 100979.859375 - - - 3.3399999141693115 - - - - - - - 47.610500659793615 - -116.871921652928 - - 756.5999755859375 - 100996.6171875 - - - 2.7929999828338623 - - - - - - - 47.610604176297784 - -116.87196465209126 - - 758.5999755859375 - 101008.546875 - - - 2.388000011444092 - - - - - - - 47.610724959522486 - -116.87201846390963 - - 760.4000244140625 - 101022.59375 - - - 2.8059999942779537 - - - - - - - 47.61091195978224 - -116.87209566123784 - - 762.7999877929688 - 101044.171875 - - - 3.5980000495910645 - - - - - - - 47.611156376078725 - -116.87221719883382 - - 763.0 - 101072.859375 - - - 4.0980000495910645 - - - - - - - 47.61144798249006 - -116.87238089740276 - - 763.0 - 101107.5390625 - - - 4.335000038146973 - - - - - - - 47.61188233271241 - -116.87263327650726 - - 767.4000244140625 - 101159.40625 - - - 4.716000080108643 - - - - - - - 47.61225407011807 - -116.87284064479172 - - 767.5999755859375 - 101203.59375 - - - 4.9079999923706055 - - - - - - - 47.612713733688 - -116.87311749905348 - - 767.2000122070312 - 101258.7578125 - - - 5.517000198364258 - - - - - - - 47.61312386021018 - -116.87336434610188 - - 765.4000244140625 - 101307.9765625 - - - 5.46999979019165 - - - - - - - 47.613308848813176 - -116.87346995808184 - - 764.5999755859375 - 101330.0078125 - - - 3.6710000038146973 - - - - - - - 47.61348495259881 - -116.87356215901673 - - 764.4000244140625 - 101350.796875 - - - 3.4649999141693115 - - - - - - - 47.61372786015272 - -116.87370146624744 - - 764.0 - 101379.7265625 - - - 4.822999954223633 - - - - - - - 47.613836070522666 - -116.87376684509218 - - 764.0 - 101392.75 - - - 4.339000225067139 - - - - - - - 3.5911634625340296 - - - - - 265.27 - 1609.34 - 8.5728359 - 98 - Active - Manual - - - - - 47.613836070522666 - -116.87376684509218 - - 764.0 - 101392.75 - - - - - 47.614032877609134 - -116.87387337908149 - - 764.4000244140625 - 101416.046875 - - - 4.660999774932861 - - - - - - - 47.61447946541011 - -116.87410295940936 - - 766.2000122070312 - 101468.6171875 - - - 5.25600004196167 - - - - - - - 47.614790769293904 - -116.87427269294858 - - 766.2000122070312 - 101505.4921875 - - - 5.268000125885009 - - - - - - - 47.61504465714097 - -116.87441686168313 - - 767.4000244140625 - 101535.7265625 - - - 4.318999767303467 - - - - - - - 47.6154403667897 - -116.8746205419302 - - 767.7999877929688 - 101582.328125 - - - 5.177999973297119 - - - - - - - 47.61592475697398 - -116.87481625936925 - - 767.5999755859375 - 101638.109375 - - - 5.578000068664551 - - - - - - - 47.616392550989985 - -116.87487308867276 - - 768.7999877929688 - 101690.3671875 - - - 5.806000232696533 - - - - - - - 47.61672489345074 - -116.87483998015523 - - 777.7999877929688 - 101727.3828125 - - - 5.288000106811523 - - - - - - - 47.616885993629694 - -116.87480226159096 - - 781.0 - 101745.5 - - - 3.622999906539917 - - - - - - - 47.61718858033419 - -116.87469153665006 - - 783.7999877929688 - 101780.1875 - - - 4.954999923706055 - - - - - - - 47.61752234771848 - -116.87451635487378 - - 783.2000122070312 - 101819.6015625 - - - 5.63100004196167 - - - - - - - 47.61771404184401 - -116.87437696382403 - - 783.0 - 101843.359375 - - - 4.751999855041504 - - - - - - - 47.6179772336036 - -116.87414788641036 - - 783.0 - 101877.2734375 - - - 4.843999862670898 - - - - - - - 47.61819809675217 - -116.87396633438766 - - 782.7999877929688 - 101905.3984375 - - - 5.626999855041504 - - - - - - - 47.61849146336317 - -116.8737153802067 - - 782.5999755859375 - 101943.09375 - - - 6.2829999923706055 - - - - - - - 47.61874585412443 - -116.87348035164177 - - 782.0 - 101976.3828125 - - - 5.547999858856201 - - - - - - - 47.61895565316081 - -116.87330366112292 - - 782.2000122070312 - 102003.21875 - - - 3.834000110626221 - - - - - - - 47.61921457014978 - -116.87305698171258 - - 782.2000122070312 - 102037.4609375 - - - 4.28000020980835 - - - - - - - 47.61949854902923 - -116.87282589264214 - - 783.0 - 102073.5390625 - - - 5.1539998054504395 - - - - - - - 47.61991186067462 - -116.87253126874566 - - 783.4000244140625 - 102124.5234375 - - - 5.664999961853027 - - - - - - - 47.62043606489897 - -116.87219825573266 - - 787.2000122070312 - 102187.96875 - - - 6.34499979019165 - - - - - - - 47.6209385599941 - -116.871945457533 - - 789.0 - 102247.0 - - - 6.559000015258789 - - - - - - - 47.621440133079886 - -116.87170774675906 - - 789.0 - 102305.5625 - - - 7.320000171661377 - - - - - - - 47.62181865982711 - -116.87155368737876 - - 789.0 - 102349.2578125 - - - 7.2829999923706055 - - - - - - - 47.622382091358304 - -116.87137238681316 - - 789.5999755859375 - 102413.34375 - - - 7.119999885559083 - - - - - - - 47.6229867618531 - -116.87123106792569 - - 789.5999755859375 - 102481.453125 - - - 7.567999839782715 - - - - - - - 47.623495291918516 - -116.87117423862219 - - 789.0 - 102538.1796875 - - - 8.104999542236328 - - - - - - - 47.62412175536156 - -116.87114314176142 - - 789.0 - 102607.8125 - - - 8.704000473022461 - - - - - - - 47.624601032584906 - -116.8711512722075 - - 789.0 - 102661.1171875 - - - 7.614999771118165 - - - - - - - 47.625091038644314 - -116.87115085311234 - - 789.0 - 102715.59375 - - - 6.809999942779541 - - - - - - - 47.62558523565531 - -116.87115705572069 - - 788.2000122070312 - 102770.5625 - - - 6.870999813079834 - - - - - - - 47.62594389729202 - -116.87114708125591 - - 788.0 - 102810.4296875 - - - 6.644999980926514 - - - - - - - 47.626481177285314 - -116.87113434076309 - - 788.0 - 102870.1875 - - - 6.639999866485596 - - - - - - - 47.62720076367259 - -116.87110785394907 - - 789.4000244140625 - 102950.2265625 - - - 7.2769999504089355 - - - - - - - 47.62767065316439 - -116.87103769741952 - - 791.4000244140625 - 103002.7265625 - - - 7.5 - - - - - - - 6.066814921023862 - - - - - 242.31 - 1609.34 - 8.4490681 - 89 - Active - Manual - - - - - 47.62767065316439 - -116.87103769741952 - - 791.4000244140625 - 103002.7265625 - - - - - 47.62779646553099 - -116.87101246789098 - - 791.7999877929688 - 103016.859375 - - - 7.063000202178955 - - - - - - - 47.628170466050506 - -116.87090358696878 - - 793.0 - 103059.2734375 - - - 6.059000015258789 - - - - - - - 47.62856835499406 - -116.87076578848064 - - 793.5999755859375 - 103104.7265625 - - - 6.49399995803833 - - - - - - - 47.62904528528452 - -116.87056755647063 - - 795.4000244140625 - 103159.78125 - - - 7.863999843597412 - - - - - - - 47.62938098050654 - -116.87039287760854 - - 796.0 - 103199.3828125 - - - 6.599999904632568 - - - - - - - 47.629807870835066 - -116.87012256123126 - - 795.7999877929688 - 103251.0234375 - - - 6.454999923706055 - - - - - - - 47.63022185303271 - -116.86985375359654 - - 795.2000122070312 - 103301.34375 - - - 7.188000202178955 - - - - - - - 47.63066014274955 - -116.86950389295816 - - 794.7999877929688 - 103356.6796875 - - - 6.918000221252441 - - - - - - - 47.63095359317958 - -116.86924254521728 - - 793.7999877929688 - 103394.75 - - - 5.439000129699707 - - - - - - - 47.63124167919159 - -116.86897189356387 - - 793.0 - 103432.703125 - - - 4.216000080108643 - - - - - - - 47.63147327117622 - -116.86875295825303 - - 793.2000122070312 - 103463.2421875 - - - 3.818000078201294 - - - - - - - 47.631730595603585 - -116.86854508705437 - - 794.0 - 103495.828125 - - - 5.431000232696533 - - - - - - - 47.63208179734647 - -116.8682520557195 - - 795.0 - 103540.6875 - - - 4.984000205993652 - - - - - - - 47.632364267483354 - -116.86801585368812 - - 795.2000122070312 - 103576.7578125 - - - 4.508999824523926 - - - - - - - 47.63267573900521 - -116.86773505993187 - - 795.7999877929688 - 103617.34375 - - - 5.7979998588562 - - - - - - - 47.63300565071404 - -116.86744135804474 - - 797.2000122070312 - 103660.1328125 - - - 5.348999977111816 - - - - - - - 47.633379651233554 - -116.86711253598332 - - 799.5999755859375 - 103708.546875 - - - 6.915999889373779 - - - - - - - 47.633871249854565 - -116.86668874695897 - - 801.0 - 103771.7890625 - - - 7.9050002098083505 - - - - - - - 47.63444423675537 - -116.86617543920875 - - 801.2000122070312 - 103846.34375 - - - 8.282999992370605 - - - - - - - 47.63489367440343 - -116.86579439789057 - - 801.0 - 103903.8515625 - - - 8.217000007629395 - - - - - - - 47.63547219336033 - -116.86528083868325 - - 798.5999755859375 - 103978.8828125 - - - 7.502999782562256 - - - - - - - 47.63589598238468 - -116.86491304077208 - - 797.0 - 104033.46875 - - - 7.797999858856201 - - - - - - - 47.63627056963742 - -116.86461397446692 - - 795.0 - 104080.7734375 - - - 6.756999969482422 - - - - - - - 47.636688742786646 - -116.86432085931301 - - 795.0 - 104132.2578125 - - - 7.355999946594238 - - - - - - - 47.63721973635256 - -116.86398558318615 - - 795.4000244140625 - 104196.4609375 - - - 8.024999618530273 - - - - - - - 47.637929851189256 - -116.86363547109067 - - 796.2000122070312 - 104279.703125 - - - 8.324000358581543 - - - - - - - 47.63839077204466 - -116.86346515081823 - - 797.5999755859375 - 104332.4765625 - - - 7.539000034332275 - - - - - - - 47.63877533376217 - -116.8633458763361 - - 798.0 - 104376.15625 - - - 6.241000175476074 - - - - - - - 47.6391641702503 - -116.86324906535447 - - 798.0 - 104420.0078125 - - - 5.480000019073486 - - - - - - - 47.63958217576146 - -116.86314295046031 - - 798.0 - 104467.1484375 - - - 5.893000125885009 - - - - - - - 47.63995978049934 - -116.86306206509471 - - 798.0 - 104509.6328125 - - - 7.078999996185303 - - - - - - - 47.6405524648726 - -116.86297497712076 - - 799.0 - 104575.8515625 - - - 8.277999877929688 - - - - - - - 47.640859577804804 - -116.86294354498386 - - 799.2000122070312 - 104610.046875 - - - 8.548999786376953 - - - - - - - 6.641673864471132 - - - - - 122.73 - 1609.34 - 15.702529900000002 - 46 - Active - Manual - - - - - 47.64107675291598 - -116.86291873455048 - - 799.0 - 104634.2421875 - - - 8.0649995803833 - - - - - - - 47.64162685722113 - -116.8628003820777 - - 800.5999755859375 - 104696.0703125 - - - 8.833000183105469 - - - - - - - 47.64213974587619 - -116.86258957721293 - - 803.4000244140625 - 104755.3671875 - - - 9.883000373840332 - - - - - - - 47.64255775138736 - -116.86229344457388 - - 808.4000244140625 - 104806.9765625 - - - 10.322999954223633 - - - - - - - 47.642947593703866 - -116.86187837272882 - - 814.7999877929688 - 104860.453125 - - - 10.694000244140623 - - - - - - - 47.6433065906167 - -116.86132667586207 - - 815.5999755859375 - 104918.0078125 - - - 11.51099967956543 - - - - - - - 47.64353365637362 - -116.86081185936928 - - 806.7999877929688 - 104964.2421875 - - - 11.559000015258789 - - - - - - - 47.643701462075114 - -116.86021179892123 - - 796.5999755859375 - 105013.0703125 - - - 12.20699977874756 - - - - - - - 47.64382258057594 - -116.85938165523112 - - 774.5999755859375 - 105077.0234375 - - - 12.791000366210938 - - - - - - - 47.64383305795491 - -116.85851094312966 - - 757.2000122070312 - 105142.5390625 - - - 13.102999687194824 - - - - - - - 47.643872452899814 - -116.85710814781487 - - 757.5999755859375 - 105248.140625 - - - 13.199999809265137 - - - - - - - 47.64402483589947 - -116.8560703843832 - - 767.7999877929688 - 105327.96875 - - - 13.305000305175781 - - - - - - - 47.64424854889512 - -116.85543243773282 - - 774.0 - 105382.09375 - - - 13.529000282287598 - - - - - - - 47.64463545754552 - -116.85471125878394 - - 773.2000122070312 - 105451.453125 - - - 13.873000144958496 - - - - - - - 47.64522629790008 - -116.85375664383173 - - 767.5999755859375 - 105548.7265625 - - - 13.895999908447267 - - - - - - - 47.645751256495714 - -116.85289146378636 - - 755.0 - 105636.1171875 - - - 14.5649995803833 - - - - - - - 47.64617093838751 - -116.85206484049559 - - 734.4000244140625 - 105713.96875 - - - 15.569999694824219 - - - - - - - 47.6464909594506 - -116.85113419778645 - - 737.2000122070312 - 105792.65625 - - - 15.73900032043457 - - - - - - - 47.64673227444291 - -116.84993575327098 - - 758.2000122070312 - 105886.640625 - - - 15.663000106811523 - - - - - - - 47.64703276567161 - -116.8483429402113 - - 730.2000122070312 - 106010.9765625 - - - 15.541999816894531 - - - - - - - 47.6473612524569 - -116.8474324978888 - - 703.0 - 106088.671875 - - - 15.538999557495119 - - - - - - - 47.64779945835471 - -116.8466385640204 - - 699.2000122070312 - 106165.65625 - - - 15.397000312805176 - - - - - - - 47.64821796678007 - -116.84613053686917 - - 705.7999877929688 - 106225.8984375 - - - 15.060999870300293 - - - - - - - 13.112881887883972 - - - - - 134.98 - 1609.34 - 15.2992878 - 51 - Active - Manual - - - - - 47.64866773970425 - -116.84576055966318 - - 716.0 - 106283.28125 - - - 14.345999717712402 - - - - - - - 47.649182975292206 - -116.84551446698606 - - 712.7999877929688 - 106343.5078125 - - - 15.057000160217285 - - - - - - - 47.649856293573976 - -116.84535965323448 - - 716.7999877929688 - 106419.296875 - - - 15.159000396728516 - - - - - - - 47.65074385330081 - -116.84524415060878 - - 709.2000122070312 - 106518.4375 - - - 14.161999702453613 - - - - - - - 47.65174155123532 - -116.84506695717573 - - 696.5999755859375 - 106630.09375 - - - 13.956999778747559 - - - - - - - 47.65251696109772 - -116.84488783590496 - - 694.0 - 106717.3828125 - - - 14.54699993133545 - - - - - - - 47.653383649885654 - -116.84460025280714 - - 689.5999755859375 - 106816.2265625 - - - 14.121999740600586 - - - - - - - 47.65416425652802 - -116.84416187927127 - - 693.2000122070312 - 106909.0703125 - - - 13.262999534606934 - - - - - - - 47.65482055954635 - -116.84370674192905 - - 685.5999755859375 - 106989.65625 - - - 13.432000160217285 - - - - - - - 47.65571616590023 - -116.84299067594111 - - 652.7999877929688 - 107102.84375 - - - 14.145999908447266 - - - - - - - 47.656384287402034 - -116.84226706624031 - - 651.4000244140625 - 107194.8828125 - - - 13.149999618530273 - - - - - - - 47.657055174931884 - -116.84137573465705 - - 651.5999755859375 - 107295.15625 - - - 12.53499984741211 - - - - - - - 47.65758407302201 - -116.84064734727144 - - 651.7999877929688 - 107375.4765625 - - - 11.472999572753904 - - - - - - - 47.65812705270946 - -116.83987646363676 - - 650.2000122070312 - 107459.1171875 - - - 10.454999923706053 - - - - - - - 47.65861328691244 - -116.83929576538503 - - 650.0 - 107528.453125 - - - 9.904999732971191 - - - - - - - 47.659123660996556 - -116.83855765499175 - - 650.0 - 107607.828125 - - - 8.819000244140625 - - - - - - - 47.65957645140588 - -116.83791694231331 - - 650.0 - 107677.421875 - - - 8.699000358581543 - - - - - - - 47.66001708805561 - -116.83731755241752 - - 650.0 - 107743.953125 - - - 8.3149995803833 - - - - - - - 47.66041288152337 - -116.83674255385995 - - 650.0 - 107805.6328125 - - - 7.710999965667725 - - - - - - - 47.66057607717812 - -116.8365087825805 - - 650.0 - 107830.890625 - - - 8.418999671936035 - - - - - - - 11.922832968587938 - - - - - 300.73 - 1609.34 - 8.1720448 - 103 - Active - Manual - - - - - 47.6608051545918 - -116.83622698299587 - - 650.0 - 107863.96875 - - - 8.270000457763672 - - - - - - - 47.66114437021315 - -116.8357679899782 - - 650.0 - 107915.0703125 - - - 7.300000190734863 - - - - - - - 47.6614835858345 - -116.83530254289508 - - 650.0 - 107966.4765625 - - - 7.34499979019165 - - - - - - - 47.661752980202436 - -116.83489853516221 - - 650.0 - 108009.078125 - - - 7.098999977111817 - - - - - - - 47.662147181108594 - -116.83433284051716 - - 650.0 - 108070.1171875 - - - 7.630000114440918 - - - - - - - 47.66254808753729 - -116.83380234986544 - - 649.2000122070312 - 108129.8828125 - - - 7.46999979019165 - - - - - - - 47.662783367559314 - -116.83348945342004 - - 649.0 - 108165.0390625 - - - 7.0329999923706055 - - - - - - - 47.66305485740304 - -116.83315224945545 - - 649.0 - 108204.4609375 - - - 5.631999969482422 - - - - - - - 47.66312325373292 - -116.83306658640504 - - 649.0 - 108214.421875 - - - 4.980000019073486 - - - - - - - 47.663263734430075 - -116.83292367495596 - - 649.0 - 108233.453125 - - - 4.75600004196167 - - - - - - - 47.66347906552255 - -116.83276366442442 - - 649.0 - 108260.203125 - - - 4.460000038146973 - - - - - - - 47.66366237774491 - -116.83279526419938 - - 649.0 - 108282.2265625 - - - 5.50600004196167 - - - - - - - 47.663734797388315 - -116.83295217342675 - - 649.0 - 108296.5390625 - - - 7.156000137329102 - - - - - - - 47.663950799033046 - -116.83358727023005 - - 651.7999877929688 - 108350.0078125 - - - 7.638000011444093 - - - - - - - 47.66401835717261 - -116.83427986688912 - - 655.5999755859375 - 108402.65625 - - - 6.5809998512268075 - - - - - - - 47.66398709267378 - -116.83483935892582 - - 654.4000244140625 - 108444.71875 - - - 6.008999824523926 - - - - - - - 47.663984997197986 - -116.83533338829875 - - 653.2000122070312 - 108481.9921875 - - - 5.324999809265137 - - - - - - - 47.66400394029915 - -116.83566153980792 - - 653.0 - 108506.609375 - - - 4.922999858856201 - - - - - - - 47.66391693614423 - -116.83628976345062 - - 651.7999877929688 - 108554.75 - - - 4.375999927520752 - - - - - - - 47.66383705660701 - -116.8365724850446 - - 651.0 - 108577.71875 - - - 3.828000068664551 - - - - - - - 47.66374099999666 - -116.83682955801487 - - 651.0 - 108599.890625 - - - 3.694999933242798 - - - - - - - 47.66357185319066 - -116.8371594697237 - - 651.0 - 108631.0234375 - - - 4.447999954223633 - - - - - - - 47.663371190428734 - -116.83750254102051 - - 651.0 - 108665.1484375 - - - 3.7920000553131104 - - - - - - - 47.663208078593016 - -116.83774905279279 - - 651.0 - 108691.1328125 - - - 3.7119998931884766 - - - - - - - 47.66305108554661 - -116.83801358565688 - - 651.4000244140625 - 108717.5625 - - - 3.303999900817871 - - - - - - - 47.6628858782351 - -116.83828046545386 - - 652.0 - 108744.7578125 - - - 4.5329999923706055 - - - - - - - 47.66271245665848 - -116.83854063972831 - - 652.5999755859375 - 108772.2109375 - - - 3.921999931335449 - - - - - - - 47.66253895126283 - -116.83878673240542 - - 653.0 - 108798.8984375 - - - 3.3359999656677246 - - - - - - - 47.662371564656496 - -116.83898295275867 - - 653.0 - 108822.65625 - - - 3.394999980926514 - - - - - - - 47.66219378449023 - -116.83924505487084 - - 654.4000244140625 - 108850.53125 - - - 3.4830000400543213 - - - - - - - 47.661965042352676 - -116.83948896825314 - - 656.0 - 108881.859375 - - - 3.9159998893737793 - - - - - - - 47.66174635849893 - -116.83971997350454 - - 656.5999755859375 - 108911.71875 - - - 4.265999794006348 - - - - - - - 47.661584755405784 - -116.83989976532757 - - 656.0 - 108934.21875 - - - 3.75 - - - - - - - 47.661422649398446 - -116.84010679833591 - - 655.7999877929688 - 108958.1328125 - - - 3.9860000610351562 - - - - - - - 47.66124947927892 - -116.84035138227046 - - 655.5999755859375 - 108984.796875 - - - 5.333000183105468 - - - - - - - 47.660908587276936 - -116.84074239805341 - - 653.0 - 109032.828125 - - - 6.861999988555909 - - - - - - - 47.66046719625592 - -116.84121656231582 - - 653.0 - 109093.453125 - - - 6.735000133514404 - - - - - - - 47.66016947105527 - -116.84152945876122 - - 653.0 - 109133.96875 - - - 5.789000034332275 - - - - - - - 47.659690948203206 - -116.8418978434056 - - 653.0 - 109194.09375 - - - 6.01200008392334 - - - - - - - 47.65929339453578 - -116.84223337098956 - - 653.4000244140625 - 109245.203125 - - - 6.389999866485596 - - - - - - - 47.65904135070741 - -116.84257635846734 - - 652.4000244140625 - 109283.25 - - - 6.341000080108643 - - - - - - - 47.65889625996351 - -116.84285966679454 - - 652.4000244140625 - 109309.921875 - - - 5.334000110626221 - - - - - - - 47.658726358786225 - -116.84323919937015 - - 652.4000244140625 - 109344.1328125 - - - 4.88700008392334 - - - - - - - 47.658504489809275 - -116.84376139193773 - - 652.0 - 109390.4765625 - - - 5.7930002212524405 - - - - - - - 47.658262168988585 - -116.84432758949697 - - 653.0 - 109440.8671875 - - - 6.298999786376953 - - - - - - - 47.65823509544134 - -116.84439405798912 - - 653.0 - 109446.75 - - - 5.882999897003174 - - - - - - - 5.351458098959199 - - - - - 303.32 - 1609.34 - 8.2354183 - 105 - Active - Manual - - - - - 47.65823509544134 - -116.84439405798912 - - 653.0 - 109446.75 - - - - - 47.6580766774714 - -116.84484735131264 - - 651.7999877929688 - 109484.9765625 - - - 5.461999893188477 - - - - - - - 47.65793535858393 - -116.84544104151428 - - 652.2000122070312 - 109532.296875 - - - 5.9140000343322745 - - - - - - - 47.657769564539194 - -116.84583029709756 - - 652.0 - 109566.8125 - - - 4.931000232696533 - - - - - - - 47.65757896006107 - -116.84620874002576 - - 652.0 - 109602.28125 - - - 4.434000015258789 - - - - - - - 47.65747879631817 - -116.84653588570654 - - 653.7999877929688 - 109629.25 - - - 4.494999885559082 - - - - - - - 47.65744015574455 - -116.84671777300537 - - 654.4000244140625 - 109643.578125 - - - 4.776000022888184 - - - - - - - 47.657419787719846 - -116.84690695255995 - - 655.2000122070312 - 109657.9765625 - - - 4.802000045776367 - - - - - - - 47.65741903334856 - -116.84753945097327 - - 656.5999755859375 - 109705.0703125 - - - 5.23199987411499 - - - - - - - 47.65738835558295 - -116.84770298190415 - - 656.2000122070312 - 109717.796875 - - - 4.242000102996826 - - - - - - - 47.657236056402326 - -116.8480437900871 - - 655.7999877929688 - 109748.5703125 - - - 3.846999883651734 - - - - - - - 47.657030783593655 - -116.84826163575053 - - 655.0 - 109776.71875 - - - 4.020999908447266 - - - - - - - 47.656780583783984 - -116.84843027964234 - - 654.7999877929688 - 109807.3125 - - - 3.8239998817443848 - - - - - - - 47.6564946770668 - -116.84853597544134 - - 655.0 - 109840.09375 - - - 4.683000087738037 - - - - - - - 47.65626048669219 - -116.84858576394618 - - 655.5999755859375 - 109866.3828125 - - - 3.75600004196167 - - - - - - - 47.656098464503884 - -116.84862113557756 - - 656.0 - 109884.6328125 - - - 3.0420000553131104 - - - - - - - 47.655884977430105 - -116.84860797598958 - - 656.0 - 109908.4375 - - - 4.761000156402588 - - - - - - - 47.65561189502478 - -116.84864024631679 - - 656.5999755859375 - 109938.890625 - - - 6.091000080108643 - - - - - - - 47.655239487066865 - -116.84865726158023 - - 656.7999877929688 - 109980.34375 - - - 6.9079999923706055 - - - - - - - 47.6546642370522 - -116.84864066541195 - - 658.0 - 110044.2734375 - - - 7.104000091552734 - - - - - - - 47.65433876775205 - -116.84873714111745 - - 658.7999877929688 - 110081.21875 - - - 7.388999938964844 - - - - - - - 47.65401975251734 - -116.84888089075685 - - 659.5999755859375 - 110118.296875 - - - 7.416999816894531 - - - - - - - 47.65363569371402 - -116.84895255602896 - - 660.2000122070312 - 110161.4296875 - - - 7.188000202178955 - - - - - - - 47.6532862521708 - -116.84881777502596 - - 659.2000122070312 - 110201.7578125 - - - 6.7210001945495605 - - - - - - - 47.65319178812206 - -116.84878366068006 - - 659.0 - 110212.5703125 - - - 5.406000137329102 - - - - - - - 47.65308986417949 - -116.84876195155084 - - 658.7999877929688 - 110223.9921875 - - - 5.710999965667725 - - - - - - - 47.65278375707567 - -116.84882305562496 - - 659.0 - 110258.4765625 - - - 4.926000118255615 - - - - - - - 47.65259055420756 - -116.8488868419081 - - 659.2000122070312 - 110280.3671875 - - - 3.6480000019073486 - - - - - - - 47.652401542291045 - -116.84893939644098 - - 659.0 - 110301.7890625 - - - 4.283999919891357 - - - - - - - 47.652066852897406 - -116.84902589768171 - - 658.7999877929688 - 110339.5390625 - - - 5.39300012588501 - - - - - - - 47.65172713436186 - -116.84917635284364 - - 658.5999755859375 - 110378.953125 - - - 6.567999839782715 - - - - - - - 47.65138188377023 - -116.84944574721158 - - 658.0 - 110422.421875 - - - 8.694999694824219 - - - - - - - 47.65113377943635 - -116.84970567002892 - - 657.7999877929688 - 110455.953125 - - - 8.380999565124512 - - - - - - - 47.65098374336958 - -116.84997355565429 - - 658.2000122070312 - 110482.0625 - - - 6.5289998054504395 - - - - - - - 47.65093378722668 - -116.85011227615178 - - 658.0 - 110493.8828125 - - - 5.906000137329102 - - - - - - - 47.650885758921504 - -116.85040027834475 - - 658.4000244140625 - 110516.203125 - - - 5.581999778747558 - - - - - - - 47.65088617801666 - -116.85075726360083 - - 658.5999755859375 - 110543.09375 - - - 5.376999855041504 - - - - - - - 47.65094677917659 - -116.8512318469584 - - 659.5999755859375 - 110579.3515625 - - - 5.181000232696533 - - - - - - - 47.65100855380297 - -116.85155765153468 - - 661.7999877929688 - 110604.59375 - - - 5.046999931335449 - - - - - - - 47.65104576945305 - -116.85173735953867 - - 662.5999755859375 - 110618.6328125 - - - 7.019999980926515 - - - - - - - 47.65108826570213 - -116.85229148715734 - - 663.4000244140625 - 110660.453125 - - - 5.973999977111816 - - - - - - - 47.651091450825334 - -116.85236969031394 - - 663.2000122070312 - 110666.28125 - - - 5.835999965667725 - - - - - - - 47.65102037228644 - -116.85277755372226 - - 661.2000122070312 - 110697.9296875 - - - 6.329999923706056 - - - - - - - 47.65084125101566 - -116.85308206826448 - - 660.5999755859375 - 110728.6171875 - - - 6.137000083923341 - - - - - - - 47.650595493614674 - -116.853321287781 - - 661.7999877929688 - 110760.53125 - - - 4.559000015258789 - - - - - - - 47.65037236735225 - -116.85371305793524 - - 661.4000244140625 - 110799.0 - - - 4.27400016784668 - - - - - - - 47.650313191115856 - -116.85411765240133 - - 663.4000244140625 - 110829.8828125 - - - 4.410999774932861 - - - - - - - 47.6502641569823 - -116.85434044338763 - - 664.5999755859375 - 110847.640625 - - - 3.5529999732971196 - - - - - - - 47.65016726218164 - -116.854592487216 - - 664.7999877929688 - 110869.7265625 - - - 3.1559998989105225 - - - - - - - 47.64996056444943 - -116.85489096678793 - - 667.0 - 110901.8203125 - - - 4.011000156402588 - - - - - - - 47.64978429302573 - -116.85510638169944 - - 667.2000122070312 - 110927.2109375 - - - 5.078000068664551 - - - - - - - 47.64975386671722 - -116.85516505502164 - - 667.4000244140625 - 110932.7734375 - - - 5.554999828338623 - - - - - - - 47.64965663664043 - -116.85547275468707 - - 667.7999877929688 - 110958.2421875 - - - 6.36899995803833 - - - - - - - 47.649631071835756 - -116.85564969666302 - - 665.4000244140625 - 110971.8203125 - - - 6.789000034332275 - - - - - - - 47.64960299246013 - -116.85598807409406 - - 663.7999877929688 - 110997.3828125 - - - 6.390999794006348 - - - - - - - 47.64961187727749 - -116.85658075846732 - - 664.7999877929688 - 111041.890625 - - - 6.357999801635743 - - - - - - - 47.64960299246013 - -116.85666549950838 - - 664.4000244140625 - 111048.34375 - - - 6.453000068664552 - - - - - - - 5.305762871225109 - - - - - 255.77 - 1609.34 - 8.4201679 - 95 - Active - Manual - - - - - 47.64955018647015 - -116.85710387304425 - - 662.7999877929688 - 111081.8828125 - - - 6.708000183105469 - - - - - - - 47.649463349953294 - -116.85756814666092 - - 663.0 - 111118.09375 - - - 7.242000102996826 - - - - - - - 47.649328988045454 - -116.85821866616607 - - 663.4000244140625 - 111169.1171875 - - - 8.503999710083008 - - - - - - - 47.64927257783711 - -116.85855595394969 - - 662.7999877929688 - 111195.2265625 - - - 8.70300006866455 - - - - - - - 47.649276265874505 - -116.85894755646586 - - 663.0 - 111224.796875 - - - 7.39300012588501 - - - - - - - 47.649388583377004 - -116.85943479649723 - - 664.7999877929688 - 111263.546875 - - - 6.458000183105469 - - - - - - - 47.64956234022975 - -116.85999755747616 - - 664.4000244140625 - 111310.046875 - - - 6.644000053405762 - - - - - - - 47.64976426027715 - -116.8605034891516 - - 664.2000122070312 - 111354.1484375 - - - 6.298999786376953 - - - - - - - 47.64990423806012 - -116.86074455268681 - - 664.0 - 111378.0234375 - - - 5.968999862670898 - - - - - - - 47.6500603929162 - -116.86094873584807 - - 665.2000122070312 - 111401.2421875 - - - 5.804999828338622 - - - - - - - 47.650276562199 - -116.86125425621867 - - 663.5999755859375 - 111434.453125 - - - 6.642000198364258 - - - - - - - 47.650378569960594 - -116.86149548739195 - - 662.0 - 111455.9296875 - - - 7.158999919891357 - - - - - - - 47.650465071201324 - -116.86193176545203 - - 662.2000122070312 - 111490.1015625 - - - 6.834000110626222 - - - - - - - 47.65055039897561 - -116.86224927194417 - - 663.4000244140625 - 111515.7109375 - - - 6.401999950408936 - - - - - - - 47.65075106173754 - -116.86280398629606 - - 666.7999877929688 - 111562.953125 - - - 6.749000072479248 - - - - - - - 47.650756342336535 - -116.86331159435213 - - 665.2000122070312 - 111601.5234375 - - - 7.7129998207092285 - - - - - - - 47.65068174339831 - -116.86412765644491 - - 665.4000244140625 - 111663.3515625 - - - 7.729000091552734 - - - - - - - 47.65063815750182 - -116.86436587013304 - - 665.0 - 111681.84375 - - - 6.164000034332275 - - - - - - - 47.650455264374614 - -116.86465236358345 - - 665.0 - 111712.09375 - - - 6.047999858856201 - - - - - - - 47.65000733546913 - -116.86488806270063 - - 665.5999755859375 - 111764.90625 - - - 5.869999885559081 - - - - - - - 47.64968203380704 - -116.86517857946455 - - 666.0 - 111807.0390625 - - - 6.01800012588501 - - - - - - - 47.64951556921005 - -116.8654286954552 - - 665.7999877929688 - 111833.390625 - - - 6.587999820709229 - - - - - - - 47.64940685592592 - -116.86576346866786 - - 666.2000122070312 - 111861.65625 - - - 5.6529998779296875 - - - - - - - 47.64941339381039 - -116.86608558520675 - - 666.2000122070312 - 111886.078125 - - - 6.105000019073486 - - - - - - - 47.64945924282074 - -116.86623746529222 - - 665.7999877929688 - 111898.6015625 - - - 6.26200008392334 - - - - - - - 47.6496927626431 - -116.86673107556999 - - 668.5999755859375 - 111943.8671875 - - - 6.467000007629395 - - - - - - - 47.649902645498514 - -116.86722418293357 - - 668.0 - 111987.8515625 - - - 4.88700008392334 - - - - - - - 47.64992896467447 - -116.86738369055092 - - 667.2000122070312 - 112000.1484375 - - - 6.1479997634887695 - - - - - - - 47.64991857111454 - -116.86782265082002 - - 666.7999877929688 - 112033.3203125 - - - 6.633999824523926 - - - - - - - 47.649914966896176 - -116.86790856532753 - - 667.0 - 112039.7890625 - - - 6.468999862670898 - - - - - - - 47.649889988824725 - -116.8680805619806 - - 666.7999877929688 - 112052.96875 - - - 6.5900001525878915 - - - - - - - 47.64986819587648 - -116.86839563772082 - - 665.5999755859375 - 112076.953125 - - - 5.99399995803833 - - - - - - - 47.64993323944509 - -116.8686717376113 - - 667.2000122070312 - 112099.09375 - - - 4.429999828338623 - - - - - - - 47.64989325776696 - -116.86870618723333 - - 665.7999877929688 - 112105.84375 - - - 2.25 - - - - - - - 47.64979787170887 - -116.86860325746238 - - 663.0 - 112119.1484375 - - - 3.3259999752044678 - - - - - - - 47.64968597330153 - -116.86870099045336 - - 663.0 - 112134.0703125 - - - 4.973999977111816 - - - - - - - 47.64937525615096 - -116.86911765486002 - - 663.5999755859375 - 112180.7265625 - - - 6.665999889373779 - - - - - - - 47.649129163473845 - -116.86941655352712 - - 664.0 - 112216.1171875 - - - 5.896999835968018 - - - - - - - 47.64885884709656 - -116.8697661627084 - - 664.7999877929688 - 112256.0234375 - - - 5.701000213623047 - - - - - - - 47.648586854338646 - -116.87005307525396 - - 666.4000244140625 - 112293.203125 - - - 6.195000171661378 - - - - - - - 47.648286782205105 - -116.87039908021688 - - 667.0 - 112335.40625 - - - 6.0300002098083505 - - - - - - - 47.64802526682615 - -116.87072614207864 - - 668.2000122070312 - 112373.5 - - - 6.348999977111816 - - - - - - - 47.647802140563726 - -116.87119946815073 - - 669.4000244140625 - 112416.9921875 - - - 6.2129998207092285 - - - - - - - 47.647701390087605 - -116.87148076482117 - - 669.7999877929688 - 112440.84375 - - - 5.960999965667725 - - - - - - - 47.647622264921665 - -116.87187018804252 - - 670.2000122070312 - 112471.421875 - - - 6.117000102996826 - - - - - - - 47.64760985970497 - -116.8721306975931 - - 669.5999755859375 - 112491.09375 - - - 6.557000160217285 - - - - - - - 47.64758789911866 - -116.87247494235635 - - 669.0 - 112517.359375 - - - 6.565999984741211 - - - - - - - 47.64758337289095 - -116.87265917658806 - - 669.0 - 112531.2734375 - - - 6.953000068664551 - - - - - - - 47.647587060928345 - -116.87300995923579 - - 669.0 - 112557.84375 - - - 6.64300012588501 - - - - - - - 47.6475480850786 - -116.87359744682908 - - 670.5999755859375 - 112602.21875 - - - 6.340000152587891 - - - - - - - 47.64754146337509 - -116.87376567162573 - - 670.7999877929688 - 112614.8515625 - - - 6.315999984741212 - - - - - - - 47.647638358175755 - -116.87415509484708 - - 671.4000244140625 - 112646.59375 - - - 6.3480000495910645 - - - - - - - 47.647728798910975 - -116.87425458803773 - - 672.0 - 112659.109375 - - - 6.257999897003175 - - - - - - - 6.292153083238847 - - - - - 311.09 - 1609.34 - 8.3285885 - 104 - Active - Manual - - - - - 47.64782493934035 - -116.87434209510684 - - 671.2000122070312 - 112671.671875 - - - 6.2810001373291025 - - - - - - - 47.6482817530632 - -116.87473906204104 - - 670.0 - 112730.6328125 - - - 6.551000118255615 - - - - - - - 47.64839977025986 - -116.87505246140063 - - 670.2000122070312 - 112758.1796875 - - - 6.88700008392334 - - - - - - - 47.648387951776385 - -116.87579585239291 - - 670.7999877929688 - 112814.40625 - - - 8.031999588012695 - - - - - - - 47.648371271789074 - -116.87589274719357 - - 670.0 - 112821.953125 - - - 7.539000034332275 - - - - - - - 47.64812626875937 - -116.8766169436276 - - 667.2000122070312 - 112882.75 - - - 6.75600004196167 - - - - - - - 47.647966258227825 - -116.87721549533308 - - 670.5999755859375 - 112931.09375 - - - 6.041999816894532 - - - - - - - 47.647889982908964 - -116.87752814032137 - - 672.5999755859375 - 112956.109375 - - - 5.005000114440918 - - - - - - - 47.64781689271331 - -116.87769846059382 - - 674.0 - 112971.25 - - - 5.046999931335449 - - - - - - - 47.647676998749375 - -116.87793206423521 - - 676.0 - 112994.8828125 - - - 5.9079999923706055 - - - - - - - 47.647502487525344 - -116.87815016135573 - - 676.7999877929688 - 113020.2734375 - - - 6.3480000495910645 - - - - - - - 47.64735194854438 - -116.87855165451765 - - 671.5999755859375 - 113055.296875 - - - 7.005000114440918 - - - - - - - 47.647354546934366 - -116.87887134030461 - - 668.7999877929688 - 113079.421875 - - - 8.041999816894531 - - - - - - - 47.64745965600014 - -116.87924986705184 - - 669.5999755859375 - 113110.2734375 - - - 7.7129998207092285 - - - - - - - 47.64749485999346 - -116.87932387925684 - - 670.2000122070312 - 113117.09375 - - - 6.813000202178956 - - - - - - - 47.64766777865589 - -116.87968245707452 - - 672.5999755859375 - 113150.1484375 - - - 5.510000228881836 - - - - - - - 47.64775495044887 - -116.87995688058436 - - 673.7999877929688 - 113172.8671875 - - - 4.544000148773193 - - - - - - - 47.64779459685087 - -116.88043079338968 - - 675.5999755859375 - 113208.84375 - - - 5.138000011444091 - - - - - - - 47.64777263626456 - -116.88099665567279 - - 677.2000122070312 - 113251.84375 - - - 6.14300012588501 - - - - - - - 47.64773634262383 - -116.88114325515926 - - 677.2000122070312 - 113263.296875 - - - 5.730000019073486 - - - - - - - 47.647723350673914 - -116.88168623484671 - - 678.4000244140625 - 113304.1328125 - - - 5.833000183105469 - - - - - - - 47.64769937843084 - -116.88179939053953 - - 678.2000122070312 - 113312.7890625 - - - 4.331999778747559 - - - - - - - 47.64764154329896 - -116.88198605552316 - - 677.4000244140625 - 113327.9375 - - - 5.048999786376953 - - - - - - - 47.647556299343705 - -116.88258594833314 - - 678.0 - 113373.953125 - - - 5.750999927520752 - - - - - - - 47.64755638316274 - -116.88301937654614 - - 679.7999877929688 - 113405.1796875 - - - 5.205999851226807 - - - - - - - 47.647482454776764 - -116.88343847170472 - - 680.2000122070312 - 113437.65625 - - - 5.414000034332275 - - - - - - - 47.647371059283614 - -116.88403937034309 - - 681.2000122070312 - 113484.4296875 - - - 5.8460001945495605 - - - - - - - 47.64728338457644 - -116.88457388430834 - - 680.5999755859375 - 113525.7578125 - - - 5.9039998054504395 - - - - - - - 47.64727299101651 - -116.88488745130599 - - 680.2000122070312 - 113549.3125 - - - 5.888999938964844 - - - - - - - 47.64730157330632 - -116.885199341923 - - 680.0 - 113573.09375 - - - 5.942999839782715 - - - - - - - 47.64731548726559 - -116.88531635329127 - - 680.0 - 113581.953125 - - - 4.434000015258789 - - - - - - - 47.647433672100306 - -116.88562866300344 - - 682.2000122070312 - 113608.796875 - - - 5.36899995803833 - - - - - - - 47.64749779365957 - -116.88592806458473 - - 680.0 - 113632.59375 - - - 5.947000026702881 - - - - - - - 47.647442892193794 - -116.88633408397436 - - 678.0 - 113664.0703125 - - - 7.870999813079834 - - - - - - - 47.64721054583788 - -116.88692199066281 - - 677.0 - 113715.2890625 - - - 8.53600025177002 - - - - - - - 47.64707408845425 - -116.88730319961905 - - 677.4000244140625 - 113747.7109375 - - - 8.104999542236328 - - - - - - - 47.646857583895326 - -116.88777526840568 - - 678.0 - 113790.703125 - - - 7.164999961853027 - - - - - - - 47.64682229608297 - -116.88784684985876 - - 678.0 - 113797.390625 - - - 6.688000202178955 - - - - - - - 47.64674166217446 - -116.88820727169514 - - 679.4000244140625 - 113826.046875 - - - 5.732999801635741 - - - - - - - 47.64675859361887 - -116.88842285424471 - - 680.4000244140625 - 113842.40625 - - - 5.451000213623047 - - - - - - - 47.646827660501 - -116.88858839683235 - - 681.4000244140625 - 113857.546875 - - - 3.7869999408721924 - - - - - - - 47.64688826166093 - -116.88868495635688 - - 682.5999755859375 - 113866.5625 - - - 1.8020000457763674 - - - - - - - 47.64696378260851 - -116.88874966464937 - - 682.4000244140625 - 113875.96875 - - - 1.8810000419616701 - - - - - - - 47.646984150633216 - -116.88875938765705 - - 682.4000244140625 - 113878.34375 - - - 2.367000102996826 - - - - - - - 47.64714935794473 - -116.88882895745337 - - 682.4000244140625 - 113897.34375 - - - 3.1670000553131104 - - - - - - - 47.647235691547394 - -116.88886055722833 - - 682.5999755859375 - 113907.109375 - - - 1.9550000429153442 - - - - - - - 47.647391678765416 - -116.88883624970913 - - 683.7999877929688 - 113924.453125 - - - 2.4769999980926514 - - - - - - - 47.64755009673536 - -116.88876114785671 - - 687.7999877929688 - 113942.90625 - - - 3.0769999027252197 - - - - - - - 47.64756736345589 - -116.88875435851514 - - 688.2000122070312 - 113944.8671875 - - - 1.9609999656677246 - - - - - - - 47.64774514362216 - -116.8886688631028 - - 691.2000122070312 - 113965.640625 - - - 3.4619998931884766 - - - - - - - 47.64788839034736 - -116.88862167298794 - - 692.4000244140625 - 113981.84375 - - - 4.051000118255615 - - - - - - - 47.64804236590862 - -116.88855268992484 - - 693.0 - 113999.703125 - - - 2.9769999980926514 - - - - - - - 47.64819919131696 - -116.88851446844637 - - 692.5999755859375 - 114017.3671875 - - - 3.5329999923706055 - - - - - - - 47.64832525514066 - -116.88847817480564 - - 693.2000122070312 - 114031.59375 - - - 2.8450000286102295 - - - - - - - 47.64852709136903 - -116.88844204880297 - - 694.2000122070312 - 114054.3125 - - - 2.8399999141693115 - - - - - - - 47.64886345714331 - -116.888468535617 - - 695.5999755859375 - 114091.796875 - - - 4.685999870300293 - - - - - - - 47.649035789072514 - -116.88851656392217 - - 695.7999877929688 - 114111.203125 - - - 3.88100004196167 - - - - - - - 47.64927609823644 - -116.88851564191282 - - 696.5999755859375 - 114137.859375 - - - 4.442999839782715 - - - - - - - 47.64947977848351 - -116.88854933716357 - - 696.7999877929688 - 114160.640625 - - - 4.556000232696533 - - - - - - - 47.64960927888751 - -116.8885906599462 - - 696.7999877929688 - 114175.2890625 - - - 4.882999897003174 - - - - - - - 47.64982687309384 - -116.88869224861264 - - 696.4000244140625 - 114200.546875 - - - 4.210999965667725 - - - - - - - 47.649955954402685 - -116.88877087086439 - - 695.5999755859375 - 114216.09375 - - - 5.179999828338622 - - - - - - - 47.65015988610685 - -116.88894269987941 - - 694.2000122070312 - 114242.1328125 - - - 5.205999851226807 - - - - - - - 47.65032794326544 - -116.889160964638 - - 693.7999877929688 - 114267.0078125 - - - 4.9770002365112305 - - - - - - - 5.1732424510591795 - - - - - 454.94 - 1609.34 - 5.127350799999999 - 120 - Active - Manual - - - - - 47.650394244119525 - -116.88925383612514 - - 694.2000122070312 - 114277.171875 - - - 5.081999778747559 - - - - - - - 47.65054696239531 - -116.88948065042496 - - 695.4000244140625 - 114301.25 - - - 4.815999984741211 - - - - - - - 47.65073446556926 - -116.88967485912144 - - 696.5999755859375 - 114326.65625 - - - 5.080999851226807 - - - - - - - 47.65096664428711 - -116.88982129096985 - - 698.7999877929688 - 114354.7265625 - - - 4.010000228881836 - - - - - - - 47.65121256932616 - -116.88993654213846 - - 702.2000122070312 - 114383.34375 - - - 4.76800012588501 - - - - - - - 47.651412561535835 - -116.89003293402493 - - 703.7999877929688 - 114406.796875 - - - 3.9100000858306885 - - - - - - - 47.65169293619692 - -116.8901636917144 - - 705.0 - 114439.453125 - - - 4.664999961853027 - - - - - - - 47.65202075242996 - -116.89036209136248 - - 705.0 - 114478.8125 - - - 4.920000076293945 - - - - - - - 47.65235586091876 - -116.8905735667795 - - 704.7999877929688 - 114519.328125 - - - 4.501999855041504 - - - - - - - 47.6525956671685 - -116.89079233445227 - - 705.0 - 114550.828125 - - - 4.5 - - - - - - - 47.6526852697134 - -116.89104177989066 - - 706.0 - 114572.203125 - - - 4.275000095367432 - - - - - - - 47.65273614786565 - -116.89132198691368 - - 706.5999755859375 - 114593.96875 - - - 3.628000020980835 - - - - - - - 47.65275785699487 - -116.89151049591601 - - 707.2000122070312 - 114608.34375 - - - 2.3949999809265137 - - - - - - - 47.65277277678251 - -116.89171073958278 - - 707.4000244140625 - 114623.46875 - - - 2.5220000743865967 - - - - - - - 47.6528081484139 - -116.89189665019512 - - 707.5999755859375 - 114637.96875 - - - 2.900000095367431 - - - - - - - 47.65280588530004 - -116.89218155108392 - - 707.5999755859375 - 114659.296875 - - - 3.555999994277954 - - - - - - - 47.65287419781089 - -116.89269267953932 - - 710.2000122070312 - 114698.4921875 - - - 3.9189999103546147 - - - - - - - 47.65295843593776 - -116.89300306141376 - - 712.0 - 114723.5625 - - - 4.177999973297119 - - - - - - - 47.65301987528801 - -116.89321646466851 - - 712.5999755859375 - 114740.8984375 - - - 2.8889999389648438 - - - - - - - 47.65310009010136 - -116.89346758648753 - - 714.2000122070312 - 114761.609375 - - - 3.45199990272522 - - - - - - - 47.653185753151774 - -116.89377067610621 - - 715.5999755859375 - 114786.296875 - - - 3.085999965667725 - - - - - - - 47.65328759327531 - -116.89407234080136 - - 716.4000244140625 - 114811.53125 - - - 3.6050000190734863 - - - - - - - 47.653359761461616 - -116.89432815648615 - - 716.4000244140625 - 114832.421875 - - - 3.48200011253357 - - - - - - - 47.65344886109233 - -116.89467583782971 - - 717.0 - 114860.296875 - - - 3.9820001125335693 - - - - - - - 47.653504433110356 - -116.89495696686208 - - 717.2000122070312 - 114882.5234375 - - - 3.703000068664551 - - - - - - - 47.65355288051069 - -116.89514036290348 - - 717.7999877929688 - 114897.2890625 - - - 3.693000078201294 - - - - - - - 47.653609374538064 - -116.89542786218226 - - 717.4000244140625 - 114919.796875 - - - 3.214999914169312 - - - - - - - 47.653694450855255 - -116.89570345915854 - - 717.2000122070312 - 114942.5234375 - - - 3.7860000133514404 - - - - - - - 47.65375295653939 - -116.89591778442264 - - 716.4000244140625 - 114959.7109375 - - - 2.865999937057495 - - - - - - - 47.65382135286927 - -116.89614694565535 - - 716.4000244140625 - 114978.4921875 - - - 3.1300001144409184 - - - - - - - 47.65393266454339 - -116.89645196311176 - - 716.5999755859375 - 115004.203125 - - - 3.6730000972747803 - - - - - - - 47.65397457405925 - -116.89669026061893 - - 717.2000122070312 - 115022.5625 - - - 2.622999906539917 - - - - - - - 47.65403383411467 - -116.89698446542025 - - 718.5999755859375 - 115045.5703125 - - - 3.8350000381469727 - - - - - - - 47.65414958819747 - -116.89743398688734 - - 719.2000122070312 - 115081.7734375 - - - 4.52400016784668 - - - - - - - 47.65433834865689 - -116.89800278283656 - - 719.5999755859375 - 115129.34375 - - - 4.757999897003174 - - - - - - - 47.65450104139745 - -116.8984463531524 - - 718.7999877929688 - 115167.25 - - - 4.73799991607666 - - - - - - - 47.654532976448536 - -116.89855875447392 - - 719.0 - 115176.328125 - - - 4.539000034332275 - - - - - - - 47.654711762443185 - -116.89913417212665 - - 719.7999877929688 - 115223.96875 - - - 4.330999851226807 - - - - - - - 47.65484436415136 - -116.89966558478773 - - 724.5999755859375 - 115266.6328125 - - - 4.265999794006348 - - - - - - - 47.65491435304284 - -116.90011049620807 - - 727.5999755859375 - 115300.9296875 - - - 4.2870001792907715 - - - - - - - 47.65490169636905 - -116.9004475325346 - - 728.4000244140625 - 115325.9609375 - - - 3.5759999752044678 - - - - - - - 47.654908653348684 - -116.90074056386948 - - 729.5999755859375 - 115348.171875 - - - 3.7019999027252197 - - - - - - - 47.654883256182075 - -116.90100308507681 - - 730.2000122070312 - 115367.7421875 - - - 3.26200008392334 - - - - - - - 47.65487319789827 - -116.9012990500778 - - 730.2000122070312 - 115390.0703125 - - - 3.190000057220459 - - - - - - - 47.654848638921976 - -116.90154078416526 - - 730.5999755859375 - 115408.3828125 - - - 3.052000045776367 - - - - - - - 47.65484436415136 - -116.90178846940398 - - 731.0 - 115426.9921875 - - - 3.1019999980926514 - - - - - - - 47.65482986345887 - -116.90205937251449 - - 733.2000122070312 - 115447.453125 - - - 2.921999931335449 - - - - - - - 47.654835395514965 - -116.90232516266406 - - 735.4000244140625 - 115467.453125 - - - 2.857000112533569 - - - - - - - 47.654874036088586 - -116.90263403579593 - - 737.5999755859375 - 115491.4296875 - - - 2.997999906539917 - - - - - - - 47.65489926561713 - -116.90286319702864 - - 739.2000122070312 - 115508.859375 - - - 2.490000009536743 - - - - - - - 47.654909156262875 - -116.90310803242028 - - 741.0 - 115527.296875 - - - 2.634999990463257 - - - - - - - 47.65488795004785 - -116.90336854197085 - - 742.0 - 115546.96875 - - - 2.809000015258789 - - - - - - - 47.6548489741981 - -116.90362804569304 - - 742.7999877929688 - 115566.4296875 - - - 2.7799999713897705 - - - - - - - 47.65482005663216 - -116.90388478338718 - - 744.2000122070312 - 115586.0390625 - - - 2.8010001182556152 - - - - - - - 47.65484478324652 - -116.9041139446199 - - 748.0 - 115603.390625 - - - 2.4790000915527344 - - - - - - - 47.65486347489059 - -116.90434268675745 - - 747.7999877929688 - 115619.4765625 - - - 2.681999921798706 - - - - - - - 47.65495718456805 - -116.90444787964225 - - 749.4000244140625 - 115632.609375 - - - 2.625 - - - - - - - 47.655082661658525 - -116.90455298870802 - - 749.0 - 115648.6015625 - - - 3.197999954223633 - - - - - - - 47.65523135662079 - -116.90462976694107 - - 749.4000244140625 - 115666.09375 - - - 2.9149999618530273 - - - - - - - 47.655348032712936 - -116.90468626096845 - - 750.5999755859375 - 115679.8203125 - - - 2.2880001068115234 - - - - - - - 47.65555188059807 - -116.90477988682687 - - 751.0 - 115703.5703125 - - - 2.9690001010894775 - - - - - - - 47.65570795163512 - -116.90491609275341 - - 749.7999877929688 - 115723.6484375 - - - 3.3459999561309814 - - - - - - - 47.655901070684195 - -116.90503595396876 - - 752.4000244140625 - 115746.65625 - - - 3.286999940872193 - - - - - - - 47.65602294355631 - -116.90514089539647 - - 753.2000122070312 - 115761.609375 - - - 2.492000102996826 - - - - - - - 47.656109277158976 - -116.90531255677342 - - 753.2000122070312 - 115777.46875 - - - 3.1719999313354497 - - - - - - - 47.65621195547283 - -116.90564556978643 - - 754.2000122070312 - 115804.796875 - - - 3.4159998893737797 - - - - - - - 47.65632385388017 - -116.90609886310995 - - 756.4000244140625 - 115841.0234375 - - - 3.2929999828338623 - - - - - - - 47.656417060643435 - -116.90653413534164 - - 757.5999755859375 - 115875.3203125 - - - 3.430000066757202 - - - - - - - 3.537486248955906 - - - - - 524.6 - 1609.34 - 8.608572 - 105 - Active - Manual - - - - - 47.656522672623396 - -116.90695046447217 - - 758.5999755859375 - 115908.75 - - - 3.3429999351501465 - - - - - - - 47.65668804757297 - -116.90730568952858 - - 760.0 - 115941.3203125 - - - 3.61899995803833 - - - - - - - 47.65691025182605 - -116.90763878636062 - - 761.7999877929688 - 115976.453125 - - - 3.9040000438690186 - - - - - - - 47.65711259096861 - -116.90787674859166 - - 762.2000122070312 - 116005.1171875 - - - 3.5829999446868896 - - - - - - - 47.65726698562503 - -116.90809744410217 - - 762.7999877929688 - 116029.0078125 - - - 2.986000061035156 - - - - - - - 47.65747804194689 - -116.90840044990182 - - 765.0 - 116061.7578125 - - - 3.638999938964844 - - - - - - - 47.65756948851049 - -116.90866464748979 - - 766.7999877929688 - 116083.3203125 - - - 3.0799999237060547 - - - - - - - 47.657615169882774 - -116.9088575989008 - - 766.5999755859375 - 116097.9609375 - - - 2.0920000076293945 - - - - - - - 47.65768733806908 - -116.90907846204937 - - 768.0 - 116116.3984375 - - - 3.072999954223633 - - - - - - - 47.65775975771248 - -116.90930536016822 - - 769.7999877929688 - 116135.1484375 - - - 3.75 - - - - - - - 47.65781415626407 - -116.90964055247605 - - 771.2000122070312 - 116160.84375 - - - 3.6710000038146973 - - - - - - - 47.657867297530174 - -116.9098695460707 - - 771.4000244140625 - 116179.15625 - - - 3.6640000343322754 - - - - - - - 47.657941058278084 - -116.9100450631231 - - 772.5999755859375 - 116194.6171875 - - - 3.0910000801086426 - - - - - - - 47.65797064639628 - -116.91021395847201 - - 772.4000244140625 - 116207.7734375 - - - 3.286999940872193 - - - - - - - 47.65804943628609 - -116.91048695705831 - - 774.0 - 116229.8203125 - - - 3.151000022888184 - - - - - - - 47.65805756673217 - -116.91058544442058 - - 774.2000122070312 - 116236.90625 - - - 2.365000009536743 - - - - - - - 47.658158065751195 - -116.91084075719118 - - 778.7999877929688 - 116256.9375 - - - 2.859999895095825 - - - - - - - 47.6581559702754 - -116.91110998392105 - - 781.5999755859375 - 116277.09375 - - - 2.5199999809265137 - - - - - - - 47.658123197034 - -116.91135875880718 - - 783.7999877929688 - 116295.59375 - - - 2.312000036239624 - - - - - - - 47.65807709656656 - -116.91165044903755 - - 785.0 - 116317.640625 - - - 2.756999969482422 - - - - - - - 47.65804013237357 - -116.91185815259814 - - 786.4000244140625 - 116333.421875 - - - 2.253999948501587 - - - - - - - 47.65802093781531 - -116.9120813626796 - - 786.5999755859375 - 116350.2578125 - - - 2.4049999713897705 - - - - - - - 47.658012975007296 - -116.91230105236173 - - 787.5999755859375 - 116366.8671875 - - - 2.372999906539917 - - - - - - - 47.65800786204636 - -116.91239777952433 - - 788.2000122070312 - 116374.1328125 - - - 2.421999931335449 - - - - - - - 47.658009035512805 - -116.91254429519176 - - 788.5999755859375 - 116385.1328125 - - - 1.8320000171661377 - - - - - - - 47.657996378839016 - -116.91262308508158 - - 788.4000244140625 - 116391.03125 - - - 1.4769999980926514 - - - - - - - 47.6579627674073 - -116.9128411822021 - - 788.5999755859375 - 116407.78125 - - - 2.0940001010894775 - - - - - - - 47.65797886066139 - -116.91303086467087 - - 790.2000122070312 - 116422.046875 - - - 2.0380001068115234 - - - - - - - 47.657988499850035 - -116.91324359737337 - - 792.2000122070312 - 116437.9765625 - - - 1.9919999837875368 - - - - - - - 47.658010963350534 - -116.91345306113362 - - 793.5999755859375 - 116453.8515625 - - - 1.9830000400543213 - - - - - - - 47.65801917761564 - -116.91368415020406 - - 794.7999877929688 - 116471.1328125 - - - 2.1589999198913574 - - - - - - - 47.65800048597157 - -116.9139807857573 - - 797.0 - 116493.5390625 - - - 2.240999937057495 - - - - - - - 47.65798967331648 - -116.91422025673091 - - 800.2000122070312 - 116511.6171875 - - - 2.259999990463257 - - - - - - - 47.657996295019984 - -116.91440625116229 - - 801.7999877929688 - 116525.6171875 - - - 2.3329999446868896 - - - - - - - 47.658036947250366 - -116.91468277014792 - - 803.7999877929688 - 116546.90625 - - - 2.365999937057495 - - - - - - - 47.658097464591265 - -116.91488527692854 - - 805.4000244140625 - 116563.453125 - - - 2.36299991607666 - - - - - - - 47.65815555118024 - -116.91510974429548 - - 806.4000244140625 - 116581.3984375 - - - 2.243000030517578 - - - - - - - 47.658166866749525 - -116.91524293273687 - - 806.0 - 116590.6875 - - - 1.3270000219345093 - - - - - - - 47.658174159005284 - -116.91527428105474 - - 806.2000122070312 - 116593.21875 - - - 1.2660000324249268 - - - - - - - 47.65823258087039 - -116.91544158384204 - - 808.4000244140625 - 116607.140625 - - - 1.7400000095367432 - - - - - - - 47.658262168988585 - -116.91548575647175 - - 809.0 - 116611.703125 - - - 2.2769999504089355 - - - - - - - 47.65835177153349 - -116.91553705371916 - - 812.0 - 116622.3984375 - - - 1.7840000391006472 - - - - - - - 47.658409690484405 - -116.91543345339596 - - 814.2000122070312 - 116632.6875 - - - 2.058000087738037 - - - - - - - 47.65842268243432 - -116.91531853750348 - - 815.4000244140625 - 116641.359375 - - - 1.4450000524520874 - - - - - - - 47.65838739462197 - -116.91516506485641 - - 814.7999877929688 - 116653.6171875 - - - 1.7510000467300415 - - - - - - - 47.658363841474056 - -116.91501955501735 - - 814.4000244140625 - 116664.90625 - - - 1.8830000162124634 - - - - - - - 47.65836928971112 - -116.91485166549683 - - 814.7999877929688 - 116677.71875 - - - 1.8289999961853027 - - - - - - - 47.65842217952013 - -116.91463055089116 - - 816.4000244140625 - 116695.3828125 - - - 2.2070000171661377 - - - - - - - 47.658491749316454 - -116.91441899165511 - - 819.5999755859375 - 116712.96875 - - - 2.1989998817443848 - - - - - - - 47.65859643928707 - -116.9142881501466 - - 820.4000244140625 - 116728.1328125 - - - 2.1659998893737793 - - - - - - - 47.6586723793298 - -116.9142022356391 - - 820.7999877929688 - 116738.703125 - - - 1.7619999647140505 - - - - - - - 47.65875644981861 - -116.91414079628885 - - 821.7999877929688 - 116749.0390625 - - - 1.7230000495910647 - - - - - - - 47.65893976204097 - -116.91402948461473 - - 824.4000244140625 - 116771.03125 - - - 2.1989998817443848 - - - - - - - 47.659096168354154 - -116.91394625231624 - - 826.7999877929688 - 116789.5078125 - - - 2.640000104904175 - - - - - - - 47.65927579253912 - -116.91385488957167 - - 829.5999755859375 - 116810.6171875 - - - 2.6389999389648438 - - - - - - - 47.659431863576174 - -116.91374475136399 - - 831.7999877929688 - 116829.8125 - - - 2.3989999294281006 - - - - - - - 47.659633280709386 - -116.91360586322844 - - 833.2000122070312 - 116854.40625 - - - 2.733999967575073 - - - - - - - 47.65987769700587 - -116.91350938752294 - - 833.5999755859375 - 116882.59375 - - - 3.5220000743865967 - - - - - - - 47.66016025096178 - -116.91345524042845 - - 834.4000244140625 - 116914.296875 - - - 3.5230000019073486 - - - - - - - 47.660372983664274 - -116.91342766396701 - - 834.5999755859375 - 116938.15625 - - - 2.9830000400543213 - - - - - - - 47.66060147434473 - -116.91342204809189 - - 837.2000122070312 - 116963.59375 - - - 3.6319999694824223 - - - - - - - 47.660914957523346 - -116.91340109333396 - - 839.7999877929688 - 116998.59375 - - - 4.375 - - - - - - - 47.661249646916986 - -116.91338868811727 - - 842.7999877929688 - 117035.78125 - - - 4.64900016784668 - - - - - - - 47.66140663996339 - -116.91337577998638 - - 843.7999877929688 - 117053.21875 - - - 3.486999988555908 - - - - - - - 47.6616392377764 - -116.91336454823613 - - 844.5999755859375 - 117079.1328125 - - - 4.318999767303467 - - - - - - - 47.661998653784394 - -116.91333219408989 - - 844.5999755859375 - 117119.203125 - - - 4.451000213623047 - - - - - - - 47.66236058436334 - -116.91329933702946 - - 845.5999755859375 - 117159.5078125 - - - 4.479000091552734 - - - - - - - 47.66264825128019 - -116.91322733648121 - - 848.4000244140625 - 117192.0078125 - - - 4.64300012588501 - - - - - - - 47.66293306834996 - -116.9131551682949 - - 850.5999755859375 - 117224.09375 - - - 4.583000183105469 - - - - - - - 47.66321059316397 - -116.91311795264482 - - 850.0 - 117255.0390625 - - - 3.8689999580383305 - - - - - - - 47.66344176605344 - -116.91319397650659 - - 848.4000244140625 - 117281.546875 - - - 4.419000148773193 - - - - - - - 47.663544192910194 - -116.91325449384749 - - 847.0 - 117293.8984375 - - - 6.17199993133545 - - - - - - - 47.66379405744374 - -116.9135922845453 - - 841.4000244140625 - 117332.2890625 - - - 7.677999973297119 - - - - - - - 47.66384116373956 - -116.91378305666149 - - 839.0 - 117347.578125 - - - 7.644999980926515 - - - - - - - 47.6640706602484 - -116.91429577767849 - - 834.2000122070312 - 117394.921875 - - - 7.890999794006348 - - - - - - - 47.664282973855734 - -116.91432855091989 - - 833.5999755859375 - 117419.2421875 - - - 8.107000350952148 - - - - - - - 47.66442848369479 - -116.91426048986614 - - 832.0 - 117436.2890625 - - - 8.52299976348877 - - - - - - - 47.66457927413285 - -116.91416786983609 - - 829.4000244140625 - 117454.421875 - - - 9.065999984741211 - - - - - - - 47.6648357603699 - -116.91410223953426 - - 825.4000244140625 - 117483.5390625 - - - 9.706000328063965 - - - - - - - 3.067754468356843 - - - - - 169.06 - 1609.34 - 13.4635973 - 63 - Active - Manual - - - - - 47.66503466293216 - -116.91409234888852 - - 823.0 - 117505.7421875 - - - 11.10200023651123 - - - - - - - 47.665134742856026 - -116.91409796476364 - - 821.5999755859375 - 117516.953125 - - - 11.203000068664549 - - - - - - - 47.66557755880058 - -116.91428697668016 - - 818.4000244140625 - 117568.671875 - - - 12.932000160217285 - - - - - - - 47.66568266786635 - -116.91437557339668 - - 818.2000122070312 - 117582.1171875 - - - 13.444999694824219 - - - - - - - 47.666121795773506 - -116.9148267712444 - - 809.2000122070312 - 117641.390625 - - - 11.854999542236328 - - - - - - - 47.66618558205664 - -116.91490547731519 - - 808.0 - 117650.5078125 - - - 9.116999626159668 - - - - - - - 47.66634626314044 - -116.91503698937595 - - 811.5999755859375 - 117670.8203125 - - - 6.770999908447266 - - - - - - - 47.66654818318784 - -116.91476264968514 - - 808.4000244140625 - 117699.71875 - - - 9.633000373840332 - - - - - - - 47.66659453511238 - -116.91462946124375 - - 806.0 - 117710.9921875 - - - 11.272999763488768 - - - - - - - 47.66676175408065 - -116.914286557585 - - 799.0 - 117742.8125 - - - 10.607000350952148 - - - - - - - 47.66711194999516 - -116.91393837332726 - - 796.2000122070312 - 117790.34375 - - - 11.880999565124512 - - - - - - - 47.667333986610174 - -116.91383267752826 - - 793.5999755859375 - 117816.34375 - - - 13.00399971008301 - - - - - - - 47.6677106693387 - -116.91367467865348 - - 789.5999755859375 - 117860.0 - - - 14.552000045776367 - - - - - - - 47.66809196211398 - -116.91322758793831 - - 787.4000244140625 - 117913.3828125 - - - 13.343999862670898 - - - - - - - 47.66817955300212 - -116.91312675364316 - - 786.0 - 117925.703125 - - - 12.319999694824219 - - - - - - - 47.66854458488524 - -116.91299876198173 - - 778.7999877929688 - 117970.2109375 - - - 11.128999710083006 - - - - - - - 47.66872915439308 - -116.91321476362646 - - 776.5999755859375 - 117996.53125 - - - 13.15999984741211 - - - - - - - 47.668813141062856 - -116.91332926042378 - - 775.2000122070312 - 118009.28125 - - - 12.75 - - - - - - - 47.66906979493797 - -116.91373486071825 - - 770.7999877929688 - 118051.078125 - - - 13.932000160217285 - - - - - - - 47.6693410333246 - -116.91433215513825 - - 763.7999877929688 - 118105.140625 - - - 13.515999794006348 - - - - - - - 47.669660383835435 - -116.91506029106677 - - 753.5999755859375 - 118170.390625 - - - 13.050000190734865 - - - - - - - 47.66973305493593 - -116.9151946529746 - - 751.0 - 118183.1875 - - - 12.796999931335451 - - - - - - - 47.66997445374727 - -116.91549086943269 - - 746.2000122070312 - 118218.15625 - - - 11.6560001373291 - - - - - - - 47.670220378786325 - -116.91597844474018 - - 743.0 - 118264.5 - - - 11.586000442504881 - - - - - - - 47.67023613676429 - -116.91640466451645 - - 745.4000244140625 - 118296.5625 - - - 10.687999725341797 - - - - - - - 47.67032213509083 - -116.9167372584343 - - 747.0 - 118323.4765625 - - - 8.973999977111816 - - - - - - - 47.67051978036761 - -116.91670389845967 - - 743.7999877929688 - 118340.453125 - - - 5.653999805450439 - - - - - - - 47.67059974372387 - -116.91665855236351 - - 742.2000122070312 - 118350.09375 - - - 9.64799976348877 - - - - - - - 47.671061251312494 - -116.9166957680136 - - 733.0 - 118404.953125 - - - 10.972000122070312 - - - - - - - 47.67119167372584 - -116.91691386513412 - - 732.2000122070312 - 118426.84375 - - - 10.944999694824219 - - - - - - - 47.67135419882834 - -116.91718543879688 - - 733.0 - 118453.9765625 - - - 9.04699993133545 - - - - - - - 47.671579755842686 - -116.91713506355882 - - 737.0 - 118477.8828125 - - - 7.966000080108643 - - - - - - - 47.671615378931165 - -116.91691218875349 - - 739.2000122070312 - 118492.4375 - - - 7.2769999504089355 - - - - - - - 47.67165728844702 - -116.91667816601694 - - 739.5999755859375 - 118511.15625 - - - 9.36299991607666 - - - - - - - 47.67176474444568 - -116.91593997180462 - - 738.5999755859375 - 118566.9765625 - - - 9.303000450134277 - - - - - - - 47.671845043078065 - -116.91545818001032 - - 737.4000244140625 - 118604.7421875 - - - 7.552000045776368 - - - - - - - 47.67195149324834 - -116.91506414674222 - - 736.7999877929688 - 118636.5234375 - - - 6.355999946594238 - - - - - - - 47.67203036695719 - -116.91488368436694 - - 737.0 - 118652.640625 - - - 5.372000217437744 - - - - - - - 47.67225047573447 - -116.91463734023273 - - 736.7999877929688 - 118683.328125 - - - 5.114999771118163 - - - - - - - 47.67233588732779 - -116.91459216177464 - - 736.7999877929688 - 118693.65625 - - - 5.1680002212524405 - - - - - - - 47.67242775298655 - -116.91459476016462 - - 735.7999877929688 - 118703.953125 - - - 3.427000045776367 - - - - - - - 47.67261575907469 - -116.91468277014792 - - 735.5999755859375 - 118725.7421875 - - - 3.114000082015991 - - - - - - - 47.672829665243626 - -116.91486457362771 - - 733.5999755859375 - 118753.3125 - - - 4.59499979019165 - - - - - - - 47.67300484701991 - -116.91496658138931 - - 733.7999877929688 - 118774.2265625 - - - 6.973999977111816 - - - - - - - 47.673316737636924 - -116.91490438766778 - - 731.2000122070312 - 118810.046875 - - - 8.954999923706055 - - - - - - - 47.67339309677482 - -116.91483557224274 - - 729.7999877929688 - 118819.40625 - - - 9.359000205993652 - - - - - - - 47.67380649223924 - -116.91458269022405 - - 726.0 - 118869.2734375 - - - 9.970000267028809 - - - - - - - 47.674011178314686 - -116.91473565995693 - - 724.2000122070312 - 118896.328125 - - - 9.020999908447266 - - - - - - - 47.6742107514292 - -116.91510035656393 - - 723.4000244140625 - 118931.203125 - - - 11.621999740600586 - - - - - - - 47.67437059432268 - -116.91531904041767 - - 722.7999877929688 - 118955.3828125 - - - 12.09000015258789 - - - - - - - 47.674696650356054 - -116.91542096436024 - - 723.0 - 118993.15625 - - - 12.595999717712402 - - - - - - - 47.67479966394603 - -116.91541325300932 - - 723.2000122070312 - 119004.6015625 - - - 11.437999725341795 - - - - - - - 47.675458481535316 - -116.91540939733386 - - 725.7999877929688 - 119077.84375 - - - 10.463000297546387 - - - - - - - 47.67559049651027 - -116.91539556719363 - - 725.7999877929688 - 119092.59375 - - - 7.370999813079835 - - - - - - - 9.519365870696793 - - - - - 156.65 - 1609.34 - 16.7024689 - 58 - Active - Manual - - - - - 47.675851257517934 - -116.91544376313686 - - 724.2000122070312 - 119121.71875 - - - 9.711000442504883 - - - - - - - 47.67630605958402 - -116.9154747761786 - - 718.0 - 119172.3828125 - - - 12.663999557495117 - - - - - - - 47.67689513973892 - -116.91544443368912 - - 710.5999755859375 - 119237.90625 - - - 16.382999420166016 - - - - - - - 47.677690582349896 - -116.91544309258461 - - 704.5999755859375 - 119326.34375 - - - 17.687999725341797 - - - - - - - 47.67823984846473 - -116.9154591858387 - - 704.5999755859375 - 119387.46875 - - - 15.281000137329102 - - - - - - - 47.67874267883599 - -116.91540109924972 - - 706.4000244140625 - 119443.4296875 - - - 13.989999771118164 - - - - - - - 47.679073261097074 - -116.91540244035423 - - 709.4000244140625 - 119480.15625 - - - 9.182000160217285 - - - - - - - 47.67931734211743 - -116.91542758606374 - - 711.4000244140625 - 119507.34375 - - - 6.795000076293945 - - - - - - - 47.67970676533878 - -116.91543068736792 - - 711.2000122070312 - 119550.640625 - - - 6.185999870300294 - - - - - - - 47.68008596263826 - -116.91547745838761 - - 710.7999877929688 - 119592.90625 - - - 6.039000034332275 - - - - - - - 47.680143378674984 - -116.91548885777593 - - 711.0 - 119599.78125 - - - 6.867000102996826 - - - - - - - 47.68053464591503 - -116.9154972396791 - - 713.0 - 119642.890625 - - - 6.157999992370606 - - - - - - - 47.68091216683388 - -116.91547418944538 - - 712.0 - 119684.8828125 - - - 6.999000072479249 - - - - - - - 47.681304942816496 - -116.91547536291182 - - 709.4000244140625 - 119728.59375 - - - 8.741000175476074 - - - - - - - 47.68197557888925 - -116.91549757495522 - - 704.5999755859375 - 119803.1484375 - - - 10.652000427246092 - - - - - - - 47.68256097100675 - -116.91552347503603 - - 700.2000122070312 - 119868.3203125 - - - 10.862000465393066 - - - - - - - 47.68306707032025 - -116.91547276452184 - - 697.2000122070312 - 119924.71875 - - - 11.27999973297119 - - - - - - - 47.68371515907347 - -116.91545885056257 - - 697.4000244140625 - 119996.796875 - - - 10.296999931335447 - - - - - - - 47.68418303690851 - -116.91548265516758 - - 701.2000122070312 - 120048.84375 - - - 8.673999786376953 - - - - - - - 47.68446357920766 - -116.91550235264003 - - 702.5999755859375 - 120080.046875 - - - 6.242000102996826 - - - - - - - 47.6845548581332 - -116.9155178591609 - - 703.0 - 120090.2734375 - - - 5.109000205993652 - - - - - - - 47.684898264706135 - -116.91554736346006 - - 702.7999877929688 - 120128.5234375 - - - 5.4629998207092285 - - - - - - - 47.685183668509126 - -116.91558265127242 - - 702.0 - 120160.40625 - - - 5.315000057220459 - - - - - - - 47.685492876917124 - -116.91564476117492 - - 700.5999755859375 - 120195.0703125 - - - 6.933000087738037 - - - - - - - 47.6856873370707 - -116.91565833985806 - - 698.5999755859375 - 120216.7578125 - - - 10.843999862670898 - - - - - - - 47.68617139197886 - -116.9154813978821 - - 695.2000122070312 - 120272.78125 - - - 11.204999923706055 - - - - - - - 47.68666625954211 - -116.9151584431529 - - 688.5999755859375 - 120332.90625 - - - 15.031000137329102 - - - - - - - 47.68704956397414 - -116.91499876789749 - - 684.0 - 120377.2578125 - - - 14.784000396728516 - - - - - - - 47.68758349120617 - -116.91505014896393 - - 681.5999755859375 - 120437.2578125 - - - 15.0 - - - - - - - 47.68825915642083 - -116.91528216004372 - - 670.2000122070312 - 120514.3828125 - - - 15.42300033569336 - - - - - - - 47.68864816054702 - -116.91523605957627 - - 668.2000122070312 - 120557.9375 - - - 14.520999908447267 - - - - - - - 47.68918468616903 - -116.91529959440231 - - 661.5999755859375 - 120617.9609375 - - - 15.005999565124512 - - - - - - - 47.689850460737944 - -116.9155194517225 - - 658.0 - 120693.9609375 - - - 15.199999809265137 - - - - - - - 47.689972249791026 - -116.91553596407175 - - 657.4000244140625 - 120707.5390625 - - - 13.57800006866455 - - - - - - - 10.27350139865943 - - - - - 250.61 - 1609.34 - 14.7965136 - 91 - Active - Manual - - - - - 47.69019219093025 - -116.9155458547175 - - 656.0 - 120731.921875 - - - 12.190999984741211 - - - - - - - 47.690385645255446 - -116.91556169651449 - - 654.2000122070312 - 120753.5078125 - - - 10.793000221252441 - - - - - - - 47.6905726455152 - -116.9156473595649 - - 653.0 - 120775.3984375 - - - 5.4730000495910645 - - - - - - - 47.690593181177974 - -116.915687257424 - - 652.7999877929688 - 120779.0390625 - - - 0.9100000262260438 - - - - - - - 47.690634839236736 - -116.9158944580704 - - 652.2000122070312 - 120795.7890625 - - - 2.79200005531311 - - - - - - - 47.690636767074466 - -116.91613409668207 - - 652.4000244140625 - 120813.8203125 - - - 3.6059999465942383 - - - - - - - 47.69074137322605 - -116.91655696369708 - - 652.4000244140625 - 120847.7109375 - - - 4.8420000076293945 - - - - - - - 47.690877662971616 - -116.91692526452243 - - 652.5999755859375 - 120879.296875 - - - 6.316999912261963 - - - - - - - 47.69112274982035 - -116.91751803271472 - - 653.0 - 120931.4609375 - - - 6.520999908447266 - - - - - - - 47.69130287691951 - -116.91798264160752 - - 652.2000122070312 - 120971.6015625 - - - 5.734000205993652 - - - - - - - 47.69145727157593 - -116.91834918223321 - - 652.5999755859375 - 121004.046875 - - - 5.408999919891357 - - - - - - - 47.69164946861565 - -116.91886936314404 - - 653.0 - 121048.59375 - - - 6.361999988555908 - - - - - - - 47.69181216135621 - -116.91936104558408 - - 653.5999755859375 - 121089.6875 - - - 6.849999904632568 - - - - - - - 47.69199966453016 - -116.92007166333497 - - 653.4000244140625 - 121147.0 - - - 7.164000034332276 - - - - - - - 47.692020535469055 - -116.92016889341176 - - 653.7999877929688 - 121154.6796875 - - - 7.679999828338624 - - - - - - - 47.69211667589843 - -116.92057876847684 - - 654.7999877929688 - 121187.078125 - - - 6.480000019073486 - - - - - - - 47.69218255765736 - -116.92081019282341 - - 655.7999877929688 - 121205.8671875 - - - 4.697000026702881 - - - - - - - 47.692274171859026 - -116.92106726579368 - - 657.4000244140625 - 121227.34375 - - - 4.295000076293945 - - - - - - - 47.69231943413615 - -116.92116717807949 - - 657.7999877929688 - 121236.0234375 - - - 4.340000152587891 - - - - - - - 47.69263367168605 - -116.92150438204408 - - 657.0 - 121279.171875 - - - 4.794000148773193 - - - - - - - 47.69291245378554 - -116.92175944335759 - - 656.5999755859375 - 121315.609375 - - - 6.072999954223633 - - - - - - - 47.69326273351908 - -116.92209027707577 - - 656.4000244140625 - 121361.8515625 - - - 6.605999946594238 - - - - - - - 47.693470353260636 - -116.92232379689813 - - 656.7999877929688 - 121390.828125 - - - 7.24399995803833 - - - - - - - 47.69375835545361 - -116.9227777607739 - - 657.7999877929688 - 121437.6484375 - - - 6.689000129699707 - - - - - - - 47.694007297977805 - -116.92313583567739 - - 657.7999877929688 - 121476.2421875 - - - 7.718999862670898 - - - - - - - 47.69430108368397 - -116.923549734056 - - 657.7999877929688 - 121521.296875 - - - 7.508999824523926 - - - - - - - 47.69462747499347 - -116.92398366518319 - - 659.0 - 121570.15625 - - - 8.142999649047852 - - - - - - - 47.694684052839875 - -116.924051893875 - - 659.0 - 121578.2421875 - - - 8.086000442504883 - - - - - - - 47.69513927400112 - -116.9244818855077 - - 658.5999755859375 - 121638.3203125 - - - 8.583000183105469 - - - - - - - 47.69555828534067 - -116.92490743473172 - - 658.7999877929688 - 121694.828125 - - - 9.418000221252441 - - - - - - - 47.69606723450124 - -116.92540657706559 - - 657.7999877929688 - 121762.7421875 - - - 9.70199966430664 - - - - - - - 47.69648113287985 - -116.9256579503417 - - 658.7999877929688 - 121812.3515625 - - - 9.92199993133545 - - - - - - - 47.69673745147884 - -116.9258016999811 - - 658.4000244140625 - 121842.7265625 - - - 10.128000259399414 - - - - - - - 47.69708395935595 - -116.92619615234435 - - 658.5999755859375 - 121891.5234375 - - - 9.755999565124512 - - - - - - - 47.69739434123039 - -116.92680199630558 - - 660.4000244140625 - 121948.671875 - - - 9.526000022888184 - - - - - - - 47.697614785283804 - -116.92733617499471 - - 661.0 - 121995.7734375 - - - 9.418999671936035 - - - - - - - 47.69778795540333 - -116.92782743833959 - - 664.7999877929688 - 122037.2265625 - - - 8.293999671936035 - - - - - - - 47.6978740375489 - -116.92810446023941 - - 664.4000244140625 - 122060.078125 - - - 7.614999771118165 - - - - - - - 47.69793966785073 - -116.9282793905586 - - 666.0 - 122075.0625 - - - 7.492000102996826 - - - - - - - 47.697987947613 - -116.92851349711418 - - 668.0 - 122093.421875 - - - 6.119999885559082 - - - - - - - 47.698061959818006 - -116.92876889370382 - - 669.2000122070312 - 122114.1875 - - - 5.190999984741211 - - - - - - - 47.69809146411717 - -116.9292083568871 - - 671.0 - 122147.0234375 - - - 4.690999984741211 - - - - - - - 47.69810085184872 - -116.9293394498527 - - 671.5999755859375 - 122156.8203125 - - - 4.8979997634887695 - - - - - - - 47.69813446328044 - -116.92984974011779 - - 672.2000122070312 - 122195.1171875 - - - 4.7870001792907715 - - - - - - - 47.698149466887116 - -116.92994889803231 - - 672.2000122070312 - 122202.71875 - - - 3.8010001182556152 - - - - - - - 47.69818978384137 - -116.93025425076485 - - 672.2000122070312 - 122226.109375 - - - 3.898000001907349 - - - - - - - 47.698210487142205 - -116.93063889630139 - - 676.0 - 122255.0703125 - - - 4.827000141143799 - - - - - - - 47.69822205416858 - -116.93110694177449 - - 675.0 - 122290.25 - - - 4.396999835968018 - - - - - - - 47.69825625233352 - -116.93141589872539 - - 674.4000244140625 - 122313.640625 - - - 3.898000001907349 - - - - - - - 6.421707011292446 - - - - - 243.01 - 1609.34 - 11.5218115 - 84 - Active - Manual - - - - - 47.69822297617793 - -116.93179635331035 - - 674.4000244140625 - 122342.4296875 - - - 4.11299991607666 - - - - - - - 47.698133792728186 - -116.93216255865991 - - 673.7999877929688 - 122371.7734375 - - - 4.190999984741211 - - - - - - - 47.69801376387477 - -116.93254318088293 - - 674.0 - 122403.296875 - - - 4.504000186920166 - - - - - - - 47.6979982573539 - -116.93259573541582 - - 674.2000122070312 - 122407.609375 - - - 4.313000202178955 - - - - - - - 47.697888957336545 - -116.93293905816972 - - 676.0 - 122436.1015625 - - - 4.749000072479248 - - - - - - - 47.6978515740484 - -116.93304886110127 - - 677.0 - 122445.328125 - - - 4.61299991607666 - - - - - - - 47.697719391435385 - -116.93353249691427 - - 678.7999877929688 - 122484.4609375 - - - 4.3480000495910645 - - - - - - - 47.697657784447074 - -116.93377054296434 - - 679.2000122070312 - 122503.5625 - - - 3.184000015258789 - - - - - - - 47.69761696457863 - -116.93394756875932 - - 679.5999755859375 - 122517.609375 - - - 2.809000015258789 - - - - - - - 47.697564074769616 - -116.93424697034061 - - 679.4000244140625 - 122540.8125 - - - 2.900000095367431 - - - - - - - 47.69747195765376 - -116.9345458690077 - - 679.4000244140625 - 122565.4296875 - - - 4.103000164031982 - - - - - - - 47.69732628017664 - -116.93487058393657 - - 680.4000244140625 - 122594.7265625 - - - 5.859000205993652 - - - - - - - 47.69725805148482 - -116.9350400660187 - - 680.0 - 122609.53125 - - - 7.4019999504089355 - - - - - - - 47.6968948636204 - -116.93563828244805 - - 679.2000122070312 - 122669.7265625 - - - 10.034000396728514 - - - - - - - 47.69670627079904 - -116.93592083640397 - - 679.0 - 122699.59375 - - - 9.95300006866455 - - - - - - - 47.69645129330456 - -116.93648795597255 - - 680.0 - 122750.8125 - - - 10.244000434875488 - - - - - - - 47.69628298468888 - -116.93703378550708 - - 678.4000244140625 - 122795.8203125 - - - 9.001999855041504 - - - - - - - 47.69617427140474 - -116.93755648098886 - - 675.5999755859375 - 122836.8828125 - - - 8.211000442504883 - - - - - - - 47.696097660809755 - -116.93834236823022 - - 672.0 - 122896.5 - - - 9.937999725341797 - - - - - - - 47.696096152067184 - -116.93893446587026 - - 671.0 - 122941.0078125 - - - 11.126999855041504 - - - - - - - 47.69622975960374 - -116.93983686156571 - - 670.0 - 123010.3671875 - - - 11.5600004196167 - - - - - - - 47.69641206599772 - -116.94097965024412 - - 668.4000244140625 - 123098.5234375 - - - 11.020000457763672 - - - - - - - 47.696537375450134 - -116.94161156192422 - - 668.0 - 123147.890625 - - - 9.873000144958496 - - - - - - - 47.69665505737066 - -116.94219703786075 - - 667.4000244140625 - 123193.7890625 - - - 9.180000305175781 - - - - - - - 47.69692989997566 - -116.94301427341998 - - 665.0 - 123262.34375 - - - 9.791999816894531 - - - - - - - 47.69709074869752 - -116.94350545294583 - - 663.5999755859375 - 123303.328125 - - - 10.248000144958494 - - - - - - - 47.69718789495528 - -116.94429025053978 - - 662.0 - 123363.2109375 - - - 8.555000305175781 - - - - - - - 47.697095945477486 - -116.94485116750002 - - 660.7999877929688 - 123406.5625 - - - 8.670000076293945 - - - - - - - 47.696933671832085 - -116.94537755101919 - - 661.4000244140625 - 123450.453125 - - - 8.777000427246094 - - - - - - - 47.69673996604979 - -116.94584383629262 - - 661.5999755859375 - 123491.5078125 - - - 8.211999893188477 - - - - - - - 47.696543745696545 - -116.94647365249693 - - 663.0 - 123543.7109375 - - - 7.458000183105469 - - - - - - - 47.696459759026766 - -116.94721184670925 - - 662.0 - 123599.8125 - - - 7.013000011444093 - - - - - - - 47.69646135158837 - -116.94778525270522 - - 660.7999877929688 - 123643.078125 - - - 7.210999965667725 - - - - - - - 47.696501249447465 - -116.94803419522941 - - 662.0 - 123662.203125 - - - 6.372000217437744 - - - - - - - 47.69657199271023 - -116.94824726320803 - - 664.2000122070312 - 123680.0078125 - - - 5.938000202178955 - - - - - - - 47.69664265215397 - -116.94845404475927 - - 664.5999755859375 - 123697.2734375 - - - 5.755000114440918 - - - - - - - 47.696884889155626 - -116.94879435002804 - - 665.2000122070312 - 123734.4609375 - - - 5.313000202178955 - - - - - - - 47.69699603319168 - -116.94893105886877 - - 665.5999755859375 - 123750.546875 - - - 5.364999771118164 - - - - - - - 47.69721865653992 - -116.94923657923937 - - 665.7999877929688 - 123784.2578125 - - - 5.617000102996826 - - - - - - - 47.69729996100068 - -116.94938879460096 - - 666.0 - 123798.828125 - - - 4.85699987411499 - - - - - - - 47.69740775227547 - -116.94977436214685 - - 666.4000244140625 - 123830.2578125 - - - 3.928999900817871 - - - - - - - 47.69740649498999 - -116.94992984645069 - - 666.5999755859375 - 123842.046875 - - - 3.930000066757202 - - - - - - - 47.6972645893693 - -116.95010729134083 - - 667.7999877929688 - 123863.5390625 - - - 4.297999858856201 - - - - - - - 47.69696267321706 - -116.95027015171945 - - 669.5999755859375 - 123899.296875 - - - 3.9730000495910645 - - - - - - - 47.69677416421473 - -116.95040116086602 - - 671.0 - 123922.40625 - - - 3.3020000457763676 - - - - - - - 6.622542257931772 - - - - - 449.9 - 1609.34 - 7.1627774 - 110 - Active - Manual - - - - - 47.69659546203911 - -116.9505625963211 - - 672.4000244140625 - 123945.7109375 - - - 2.9119999408721924 - - - - - - - 47.69644886255264 - -116.95071103982627 - - 674.2000122070312 - 123965.421875 - - - 2.815999984741211 - - - - - - - 47.69629136659205 - -116.9508699607104 - - 676.4000244140625 - 123986.59375 - - - 2.6459999084472656 - - - - - - - 47.69616739824414 - -116.95106249302626 - - 678.4000244140625 - 124006.71875 - - - 2.875999927520752 - - - - - - - 47.69605105742812 - -116.95128913968801 - - 680.0 - 124028.2734375 - - - 2.694000005722046 - - - - - - - 47.69595265388489 - -116.95151167921722 - - 682.0 - 124048.0625 - - - 2.4739999771118164 - - - - - - - 47.695857184007764 - -116.95175735279918 - - 683.4000244140625 - 124069.40625 - - - 2.371999979019165 - - - - - - - 47.69574905745685 - -116.95195533335209 - - 684.2000122070312 - 124088.390625 - - - 2.372999906539917 - - - - - - - 47.695683259516954 - -116.95212875492871 - - 685.5999755859375 - 124103.3671875 - - - 2.140000104904175 - - - - - - - 47.695614360272884 - -116.95225498639047 - - 686.7999877929688 - 124115.78125 - - - 1.7730000019073489 - - - - - - - 47.695552334189415 - -116.95243427529931 - - 688.5999755859375 - 124130.6796875 - - - 2.4830000400543213 - - - - - - - 47.69548058509827 - -116.95260283537209 - - 690.2000122070312 - 124145.59375 - - - 2.4839999675750732 - - - - - - - 47.695379834622145 - -116.95288094691932 - - 692.5999755859375 - 124169.328125 - - - 2.638000011444092 - - - - - - - 47.695295764133334 - -116.95312703959644 - - 694.4000244140625 - 124190.0234375 - - - 2.5869998931884766 - - - - - - - 47.69521303474903 - -116.95335075259209 - - 696.5999755859375 - 124209.09375 - - - 2.7239999771118164 - - - - - - - 47.69511613994837 - -116.95357538759708 - - 698.7999877929688 - 124229.0625 - - - 2.496000051498413 - - - - - - - 47.694996697828174 - -116.95384679362178 - - 702.4000244140625 - 124253.46875 - - - 2.440999984741211 - - - - - - - 47.69491187296808 - -116.95406338199973 - - 706.0 - 124272.2734375 - - - 2.3499999046325684 - - - - - - - 47.69478254020214 - -116.95440284907818 - - 710.2000122070312 - 124301.53125 - - - 2.6610000133514404 - - - - - - - 47.69470576196909 - -116.95460418239236 - - 712.2000122070312 - 124318.8984375 - - - 2.8949999809265137 - - - - - - - 47.694598054513335 - -116.95492889732122 - - 715.4000244140625 - 124346.140625 - - - 3.0269999504089355 - - - - - - - 47.69453183747828 - -116.95515654981136 - - 716.7999877929688 - 124364.7890625 - - - 3.1080000400543217 - - - - - - - 47.69446243532002 - -116.95541705936193 - - 718.5999755859375 - 124385.65625 - - - 2.6089999675750732 - - - - - - - 47.69442228600383 - -116.95561638101935 - - 720.0 - 124401.296875 - - - 2.605000019073486 - - - - - - - 47.694369396194816 - -116.95580455474555 - - 722.0 - 124416.4375 - - - 2.1630001068115234 - - - - - - - 47.69433704204857 - -116.95600655861199 - - 723.0 - 124431.84375 - - - 2.2009999752044678 - - - - - - - 47.694315668195486 - -116.95616899989545 - - 724.2000122070312 - 124444.203125 - - - 2.4700000286102295 - - - - - - - 47.69430845975876 - -116.95636454969645 - - 725.5999755859375 - 124458.953125 - - - 2.4579999446868896 - - - - - - - 47.69431105814874 - -116.95666495710611 - - 727.5999755859375 - 124481.3671875 - - - 3.203000068664551 - - - - - - - 47.694323379546404 - -116.95695865899324 - - 728.5999755859375 - 124503.390625 - - - 2.447000026702881 - - - - - - - 47.69433729350567 - -116.95726996287704 - - 729.7999877929688 - 124526.6875 - - - 2.5889999866485596 - - - - - - - 47.69437207840383 - -116.95755729451776 - - 730.5999755859375 - 124548.65625 - - - 2.746000051498413 - - - - - - - 47.69444885663688 - -116.9579231645912 - - 732.7999877929688 - 124577.4296875 - - - 2.877000093460083 - - - - - - - 47.694512475281954 - -116.95830806158483 - - 733.5999755859375 - 124607.15625 - - - 3.7160000801086426 - - - - - - - 47.69458548165858 - -116.9586824811995 - - 735.2000122070312 - 124636.421875 - - - 3.6579999923706055 - - - - - - - 47.69465454854071 - -116.95900158025324 - - 736.0 - 124661.5625 - - - 3.5920000076293945 - - - - - - - 47.694729985669255 - -116.95945889689028 - - 737.0 - 124696.859375 - - - 3.921999931335449 - - - - - - - 47.694797459989786 - -116.95982384495437 - - 736.4000244140625 - 124725.2734375 - - - 3.1570000648498535 - - - - - - - 47.694859486073256 - -116.96007236838341 - - 737.7999877929688 - 124745.1328125 - - - 2.8369998931884766 - - - - - - - 47.69491388462484 - -116.96043614298105 - - 740.5999755859375 - 124773.09375 - - - 3.4949998855590825 - - - - - - - 47.69496099092066 - -116.96075725369155 - - 742.2000122070312 - 124797.796875 - - - 3.5290000438690186 - - - - - - - 47.69502444192767 - -116.96105715818703 - - 743.7999877929688 - 124821.4296875 - - - 3.938999891281128 - - - - - - - 47.69509954378009 - -116.96145663969219 - - 746.5999755859375 - 124852.546875 - - - 3.890000104904175 - - - - - - - 47.695167353376746 - -116.96176014840603 - - 749.2000122070312 - 124876.546875 - - - 4.000999927520752 - - - - - - - 47.695234660059214 - -116.96199308149517 - - 751.4000244140625 - 124895.71875 - - - 3.83299994468689 - - - - - - - 47.695388132706285 - -116.96239977143705 - - 753.7999877929688 - 124930.75 - - - 3.8919999599456787 - - - - - - - 47.695493744686246 - -116.9626821577549 - - 755.7999877929688 - 124954.9609375 - - - 4.034999847412109 - - - - - - - 47.695660293102264 - -116.96310804225504 - - 755.0 - 124991.8828125 - - - 5.272999763488769 - - - - - - - 47.69585684873164 - -116.96349386125803 - - 753.2000122070312 - 125028.09375 - - - 6.03499984741211 - - - - - - - 47.6958863530308 - -116.9635508581996 - - 752.2000122070312 - 125033.4609375 - - - 5.374999999999999 - - - - - - - 47.69602859392762 - -116.96377046406269 - - 751.0 - 125056.2734375 - - - 5.701000213623047 - - - - - - - 47.69623428583145 - -116.96399015374482 - - 747.5999755859375 - 125084.421875 - - - 5.63100004196167 - - - - - - - 47.69652689807117 - -116.9643035531044 - - 747.2000122070312 - 125124.6015625 - - - 5.739999771118163 - - - - - - - 47.69678296521306 - -116.96457797661424 - - 746.5999755859375 - 125159.75 - - - 5.857999801635742 - - - - - - - 47.69701355136931 - -116.96488508954644 - - 746.5999755859375 - 125194.203125 - - - 5.742000102996825 - - - - - - - 47.69722276367247 - -116.96531566791236 - - 747.2000122070312 - 125234.046875 - - - 5.692999839782715 - - - - - - - 47.697383780032396 - -116.9657732360065 - - 748.2000122070312 - 125272.6171875 - - - 5.508999824523926 - - - - - - - 47.69755016081035 - -116.96624346077442 - - 746.4000244140625 - 125312.359375 - - - 6.624000072479248 - - - - - - - 47.69775099121034 - -116.9668578542769 - - 744.2000122070312 - 125363.6015625 - - - 7.320000171661377 - - - - - - - 47.69784847274423 - -116.96709933690727 - - 745.2000122070312 - 125384.59375 - - - 6.994999885559082 - - - - - - - 47.69788568839431 - -116.96736495941877 - - 747.0 - 125404.953125 - - - 6.789000034332275 - - - - - - - 47.69779013469815 - -116.96776787750423 - - 748.5999755859375 - 125437.640625 - - - 6.5370001792907715 - - - - - - - 47.697599446401 - -116.96799083612859 - - 750.5999755859375 - 125464.8671875 - - - 6.807000160217285 - - - - - - - 47.69741135649383 - -116.96802486665547 - - 750.2000122070312 - 125486.0078125 - - - 7.046999931335449 - - - - - - - 47.69696845673025 - -116.96796686388552 - - 751.2000122070312 - 125535.390625 - - - 7.054999828338624 - - - - - - - 3.5771149013114028 - - - - - 251.05 - 1609.34 - 13.4853554 - 78 - Active - Manual - - - - - 47.69684457220137 - -116.96797734126449 - - 751.0 - 125549.203125 - - - 6.9060001373291025 - - - - - - - 47.696612142026424 - -116.96814615279436 - - 748.7999877929688 - 125578.2265625 - - - 7.257999897003174 - - - - - - - 47.696536369621754 - -116.96841806173325 - - 747.0 - 125601.09375 - - - 7.619999885559082 - - - - - - - 47.6965959649533 - -116.96869969367981 - - 747.0 - 125623.3828125 - - - 7.427000045776367 - - - - - - - 47.69666209816933 - -116.96887764148414 - - 746.5999755859375 - 125638.65625 - - - 7.640999794006348 - - - - - - - 47.696725465357304 - -116.96902985684574 - - 746.5999755859375 - 125652.0390625 - - - 6.690999984741211 - - - - - - - 47.69680048339069 - -116.96938457898796 - - 747.2000122070312 - 125680.3828125 - - - 5.666999816894531 - - - - - - - 47.69677357748151 - -116.96952095255256 - - 748.4000244140625 - 125691.0625 - - - 5.343999862670898 - - - - - - - 47.696631252765656 - -116.96989277377725 - - 750.5999755859375 - 125723.546875 - - - 5.414000034332275 - - - - - - - 47.69644626416266 - -116.97032536379993 - - 750.2000122070312 - 125762.0078125 - - - 6.409999847412109 - - - - - - - 47.696184162050486 - -116.97085635736585 - - 749.2000122070312 - 125811.296875 - - - 7.041999816894531 - - - - - - - 47.695993557572365 - -116.97130898013711 - - 748.0 - 125851.296875 - - - 6.664999961853027 - - - - - - - 47.69578996114433 - -116.97184978052974 - - 747.0 - 125897.7734375 - - - 7.745999813079834 - - - - - - - 47.6957103330642 - -116.9723544549197 - - 747.2000122070312 - 125936.796875 - - - 7.806000232696533 - - - - - - - 47.69569868221879 - -116.97287145070732 - - 746.7999877929688 - 125975.6484375 - - - 6.473999977111817 - - - - - - - 47.69568778574467 - -116.97340638376772 - - 747.2000122070312 - 126015.796875 - - - 5.736999988555908 - - - - - - - 47.695711590349674 - -116.97388473898172 - - 747.7999877929688 - 126051.828125 - - - 5.145999908447266 - - - - - - - 47.69571854732931 - -116.9744782615453 - - 746.7999877929688 - 126096.3671875 - - - 5.566999912261963 - - - - - - - 47.69572156481445 - -116.97518569417298 - - 746.7999877929688 - 126149.5 - - - 6.642000198364258 - - - - - - - 47.695725252851844 - -116.97578667663038 - - 746.5999755859375 - 126194.578125 - - - 7.513000011444092 - - - - - - - 47.69572785124183 - -116.97645345702767 - - 745.7999877929688 - 126244.6328125 - - - 7.151000022888184 - - - - - - - 47.69573246128857 - -116.97661296464503 - - 745.5999755859375 - 126256.59375 - - - 5.9770002365112305 - - - - - - - 47.69575886428356 - -116.97700515389442 - - 746.0 - 126285.84375 - - - 5.8520002365112305 - - - - - - - 47.695772191509604 - -116.97756305336952 - - 746.2000122070312 - 126327.5 - - - 5.951000213623046 - - - - - - - 47.69575735554099 - -116.97825363837183 - - 746.4000244140625 - 126379.1328125 - - - 6.453999996185303 - - - - - - - 47.695777053013444 - -116.97873509489 - - 747.0 - 126415.2734375 - - - 5.1620001792907715 - - - - - - - 47.69581535831094 - -116.97914656251669 - - 747.0 - 126446.3515625 - - - 5.181000232696533 - - - - - - - 47.69583505578339 - -116.97939366102219 - - 746.7999877929688 - 126465.0078125 - - - 4.664000034332275 - - - - - - - 47.69584276713431 - -116.97944269515574 - - 746.7999877929688 - 126468.921875 - - - 0.6520000100135803 - - - - - - - 47.69585995003581 - -116.97957496158779 - - 746.5999755859375 - 126479.6328125 - - - 0.35699999332427973 - - - - - - - 47.695875791832805 - -116.97976816445589 - - 746.2000122070312 - 126494.1015625 - - - 3.61899995803833 - - - - - - - 47.695932956412435 - -116.98019748553634 - - 745.4000244140625 - 126526.921875 - - - 5.46999979019165 - - - - - - - 47.69605407491326 - -116.98075806722045 - - 741.5999755859375 - 126571.09375 - - - 6.309999942779541 - - - - - - - 47.69618349149823 - -116.98130205273628 - - 740.2000122070312 - 126614.3828125 - - - 7.2150001525878915 - - - - - - - 47.69641265273094 - -116.98195626027882 - - 738.0 - 126669.7734375 - - - 9.232000350952148 - - - - - - - 47.696543242782354 - -116.98231215588748 - - 736.4000244140625 - 126700.2265625 - - - 10.151000022888184 - - - - - - - 47.696639969944954 - -116.98287349194288 - - 733.7999877929688 - 126743.8828125 - - - 10.911999702453613 - - - - - - - 47.69661373458803 - -116.9831761624664 - - 734.4000244140625 - 126766.796875 - - - 11.46500015258789 - - - - - - - 47.696434361860156 - -116.98393246158957 - - 731.4000244140625 - 126827.171875 - - - 12.072999954223633 - - - - - - - 47.69627233967185 - -116.98472455143929 - - 730.2000122070312 - 126889.28125 - - - 12.42199993133545 - - - - - - - 47.696218863129616 - -116.98502646759152 - - 729.7999877929688 - 126912.71875 - - - 11.718999862670897 - - - - - - - 47.69595223478973 - -116.98553935624659 - - 730.0 - 126961.6328125 - - - 12.22700023651123 - - - - - - - 47.695794738829136 - -116.98581118136644 - - 727.2000122070312 - 126988.421875 - - - 13.39799976348877 - - - - - - - 47.695562141016126 - -116.98642725124955 - - 722.5999755859375 - 127041.546875 - - - 13.281000137329102 - - - - - - - 47.69544688984752 - -116.9869271479547 - - 720.7999877929688 - 127081.1875 - - - 13.21399974822998 - - - - - - - 47.69516567699611 - -116.98751958087087 - - 717.0 - 127135.828125 - - - 13.65999984741211 - - - - - - - 47.695072889328 - -116.98765176348388 - - 716.7999877929688 - 127150.1328125 - - - 14.305000305175781 - - - - - - - 6.41045207767377 - - - - - 149.64 - 1609.34 - 14.1095829 - 56 - Active - Manual - - - - - 47.694742642343044 - -116.9882485549897 - - 713.7999877929688 - 127208.2265625 - - - 14.52299976348877 - - - - - - - 47.69439688883722 - -116.98876345530152 - - 712.4000244140625 - 127263.1328125 - - - 13.72700023651123 - - - - - - - 47.69405675120652 - -116.98891315609217 - - 711.5999755859375 - 127302.8203125 - - - 13.229000091552736 - - - - - - - 47.69370957277715 - -116.9889684766531 - - 710.4000244140625 - 127341.65625 - - - 12.947999954223635 - - - - - - - 47.69350865855813 - -116.98910216800869 - - 708.5999755859375 - 127365.9921875 - - - 12.163999557495117 - - - - - - - 47.693460043519735 - -116.98946309275925 - - 703.7999877929688 - 127394.59375 - - - 9.531000137329102 - - - - - - - 47.69361804239452 - -116.98994119651616 - - 698.4000244140625 - 127434.53125 - - - 13.3149995803833 - - - - - - - 47.693667663261294 - -116.99046129360795 - - 696.2000122070312 - 127474.21875 - - - 13.229000091552736 - - - - - - - 47.69367135129869 - -116.99113553389907 - - 692.7999877929688 - 127524.828125 - - - 12.652000427246094 - - - - - - - 47.69344755448401 - -116.99171329848468 - - 690.0 - 127576.25 - - - 12.854999542236328 - - - - - - - 47.69334638491273 - -116.99181446805596 - - 689.5999755859375 - 127589.75 - - - 13.5 - - - - - - - 47.69316508434713 - -116.99204455129802 - - 688.4000244140625 - 127616.25 - - - 13.250000000000002 - - - - - - - 47.69302426837385 - -116.99267336167395 - - 682.2000122070312 - 127667.3515625 - - - 12.774999618530273 - - - - - - - 47.693133065477014 - -116.99295499362051 - - 680.7999877929688 - 127690.640625 - - - 11.645000457763672 - - - - - - - 47.69322283565998 - -116.99310117401183 - - 679.2000122070312 - 127705.40625 - - - 14.765999794006348 - - - - - - - 47.69348468631506 - -116.99370056390762 - - 677.7999877929688 - 127759.078125 - - - 13.418000221252441 - - - - - - - 47.693570433184505 - -116.99430766515434 - - 676.2000122070312 - 127806.0390625 - - - 11.739999771118162 - - - - - - - 47.693574875593185 - -116.99504979886115 - - 673.5999755859375 - 127861.65625 - - - 11.125 - - - - - - - 47.69376179203391 - -116.99565455317497 - - 671.0 - 127912.2734375 - - - 12.649999618530273 - - - - - - - 47.69388743676245 - -116.9963383488357 - - 670.5999755859375 - 127968.0625 - - - 11.159000396728516 - - - - - - - 47.69376665353775 - -116.99662995524704 - - 669.7999877929688 - 127993.7109375 - - - 12.824000358581543 - - - - - - - 47.69337094388902 - -116.99763536453247 - - 667.0 - 128081.15625 - - - 12.491999626159668 - - - - - - - 47.69318268634379 - -116.99844958260655 - - 663.5999755859375 - 128145.75 - - - 12.918999671936035 - - - - - - - 47.69301949068904 - -116.9993033632636 - - 658.0 - 128212.390625 - - - 13.32800006866455 - - - - - - - 47.69282955676317 - -117.00019209645689 - - 652.4000244140625 - 128282.359375 - - - 13.994000434875488 - - - - - - - 47.69259385764599 - -117.00120605528355 - - 653.7999877929688 - 128362.78125 - - - 13.404000282287598 - - - - - - - 47.69241649657488 - -117.00171567499638 - - 653.2000122070312 - 128405.921875 - - - 10.784999847412108 - - - - - - - 47.69206169061363 - -117.00208288617432 - - 653.7999877929688 - 128454.9609375 - - - 9.807999610900879 - - - - - - - 47.691549472510815 - -117.00241967104375 - - 655.2000122070312 - 128517.2265625 - - - 8.895000457763672 - - - - - - - 47.69123129546642 - -117.0026293862611 - - 656.4000244140625 - 128555.9609375 - - - 7.747000217437745 - - - - - - - 47.69066786393523 - -117.003065161407 - - 656.7999877929688 - 128626.6796875 - - - 7.857999801635742 - - - - - - - 47.690343484282494 - -117.00339113362134 - - 655.2000122070312 - 128670.34375 - - - 7.276000022888184 - - - - - - - 47.69016947597265 - -117.00367796234787 - - 656.0 - 128699.21875 - - - 5.776999950408935 - - - - - - - 47.69007115624845 - -117.00395917519927 - - 657.4000244140625 - 128723.0 - - - 3.9639999866485596 - - - - - - - 47.689948780462146 - -117.0042441599071 - - 658.5999755859375 - 128748.421875 - - - 3.6319999694824223 - - - - - - - 10.7547714120556 - - - - - 250.5 - 1609.34 - 11.651418699999999 - 89 - Active - Manual - - - - - 47.68991466611624 - -117.00432596728206 - - 659.0 - 128755.6328125 - - - 3.6050000190734863 - - - - - - - 47.68981986679137 - -117.00456694699824 - - 659.5999755859375 - 128776.6328125 - - - 3.499000072479248 - - - - - - - 47.689685337245464 - -117.00485025532544 - - 660.0 - 128802.5625 - - - 4.322999954223633 - - - - - - - 47.689562793821096 - -117.0051561947912 - - 659.7999877929688 - 128829.296875 - - - 4.456999778747559 - - - - - - - 47.68949054181576 - -117.00534009374678 - - 659.4000244140625 - 128845.25 - - - 5.315000057220459 - - - - - - - 47.689275462180376 - -117.00578735210001 - - 660.2000122070312 - 128886.46875 - - - 5.151999950408935 - - - - - - - 47.68910363316536 - -117.00616093352437 - - 659.7999877929688 - 128920.4296875 - - - 4.244999885559082 - - - - - - - 47.688940688967705 - -117.00653795152903 - - 658.4000244140625 - 128954.1015625 - - - 4.809999942779541 - - - - - - - 47.68876684829593 - -117.00693408027291 - - 656.7999877929688 - 128989.546875 - - - 5.9079999923706055 - - - - - - - 47.68846216611564 - -117.00763799250126 - - 652.5999755859375 - 129052.421875 - - - 6.986000061035156 - - - - - - - 47.688221856951714 - -117.00807209126651 - - 651.2000122070312 - 129094.5625 - - - 8.428000450134277 - - - - - - - 47.687928238883615 - -117.00867994688451 - - 649.2000122070312 - 129150.796875 - - - 9.371999740600586 - - - - - - - 47.68789186142385 - -117.00879285112023 - - 648.5999755859375 - 129160.203125 - - - 9.406000137329102 - - - - - - - 47.68767636269331 - -117.0096699334681 - - 648.2000122070312 - 129230.296875 - - - 10.015000343322754 - - - - - - - 47.68757427111268 - -117.00998635031283 - - 651.5999755859375 - 129256.65625 - - - 8.784000396728516 - - - - - - - 47.687390791252255 - -117.01025448739529 - - 656.2000122070312 - 129285.4375 - - - 7.195000171661377 - - - - - - - 47.687008157372475 - -117.01059554703534 - - 659.0 - 129335.1015625 - - - 6.208000183105469 - - - - - - - 47.686880584806204 - -117.01071565970778 - - 659.0 - 129351.8984375 - - - 5.598999977111816 - - - - - - - 47.6867806725204 - -117.0108441542834 - - 659.2000122070312 - 129366.6328125 - - - 4.910999774932861 - - - - - - - 47.68667916767299 - -117.01104615814984 - - 659.5999755859375 - 129385.5234375 - - - 4.7230000495910645 - - - - - - - 47.68651345744729 - -117.01151956804097 - - 659.7999877929688 - 129425.65625 - - - 5.017000198364257 - - - - - - - 47.686537597328424 - -117.01194126158953 - - 661.5999755859375 - 129457.59375 - - - 4.560999870300293 - - - - - - - 47.68669526092708 - -117.01249455101788 - - 663.2000122070312 - 129502.703125 - - - 4.511000156402588 - - - - - - - 47.68688133917749 - -117.01306225731969 - - 662.2000122070312 - 129550.1015625 - - - 4.741000175476074 - - - - - - - 47.686949986964464 - -117.01325445435941 - - 662.5999755859375 - 129566.3515625 - - - 2.7079999446868896 - - - - - - - 47.68703573383391 - -117.01350884512067 - - 662.4000244140625 - 129587.71875 - - - 4.2729997634887695 - - - - - - - 47.68721845932305 - -117.01407085172832 - - 663.2000122070312 - 129634.5234375 - - - 5.201000213623047 - - - - - - - 47.687395233660936 - -117.01453655026853 - - 666.2000122070312 - 129674.640625 - - - 6.685999870300293 - - - - - - - 47.68760838545859 - -117.01509696431458 - - 666.4000244140625 - 129722.9296875 - - - 6.8979997634887695 - - - - - - - 47.68766253255308 - -117.01525286771357 - - 666.2000122070312 - 129736.1171875 - - - 6.593999862670898 - - - - - - - 47.687797732651234 - -117.015819568187 - - 666.0 - 129781.15625 - - - 6.434000015258789 - - - - - - - 47.687820782884955 - -117.01597195118666 - - 666.7999877929688 - 129792.890625 - - - 5.867000102996826 - - - - - - - 47.687869146466255 - -117.01629968360066 - - 667.0 - 129818.0390625 - - - 6.2870001792907715 - - - - - - - 47.68790636211634 - -117.01671408489347 - - 667.7999877929688 - 129849.2734375 - - - 6.247000217437744 - - - - - - - 47.687901835888624 - -117.0171129796654 - - 668.7999877929688 - 129878.921875 - - - 7.4120001792907715 - - - - - - - 47.68784383311868 - -117.01800556853414 - - 663.5999755859375 - 129945.3515625 - - - 8.303999900817871 - - - - - - - 47.687818268314004 - -117.0186479575932 - - 662.4000244140625 - 129993.703125 - - - 8.057000160217285 - - - - - - - 47.687789434567094 - -117.0188691560179 - - 662.5999755859375 - 130010.59375 - - - 8.449000358581543 - - - - - - - 47.68766663968563 - -117.0192748401314 - - 660.0 - 130044.046875 - - - 8.364999771118164 - - - - - - - 47.68742188811302 - -117.01994287781417 - - 655.2000122070312 - 130101.21875 - - - 8.166000366210938 - - - - - - - 47.68723455257714 - -117.02051385305822 - - 656.7999877929688 - 130148.9765625 - - - 7.9609999656677255 - - - - - - - 47.68720127642155 - -117.02060186304152 - - 657.2000122070312 - 130156.59375 - - - 7.6020002365112305 - - - - - - - 47.68695375882089 - -117.02098374255002 - - 659.5999755859375 - 130196.390625 - - - 7.9609999656677255 - - - - - - - 47.68679978325963 - -117.0214245468378 - - 658.0 - 130234.53125 - - - 9.53499984741211 - - - - - - - 47.686817552894354 - -117.02181036584079 - - 655.7999877929688 - 130263.890625 - - - 9.78600025177002 - - - - - - - 47.68699709326029 - -117.02223415486515 - - 652.7999877929688 - 130301.71875 - - - 12.609000205993652 - - - - - - - 47.68737629055977 - -117.02287419699132 - - 649.0 - 130365.6015625 - - - 12.777000427246094 - - - - - - - 6.4245269225548896 - - - - - 187.03 - 1609.34 - 12.7828712 - 70 - Active - Manual - - - - - 47.68752599135041 - -117.02351549640298 - - 646.0 - 130417.1171875 - - - 12.878999710083008 - - - - - - - 47.68752967938781 - -117.02368296682835 - - 645.7999877929688 - 130429.640625 - - - 12.522999763488771 - - - - - - - 47.687507048249245 - -117.02492415904999 - - 643.4000244140625 - 130522.890625 - - - 11.6560001373291 - - - - - - - 47.687511490657926 - -117.0259387884289 - - 642.5999755859375 - 130599.0234375 - - - 10.875 - - - - - - - 47.68750344403088 - -117.02702717855573 - - 642.5999755859375 - 130680.7265625 - - - 10.21399974822998 - - - - - - - 47.687500258907676 - -117.02815345488489 - - 644.0 - 130765.34375 - - - 9.401000022888184 - - - - - - - 47.687500258907676 - -117.02884077094495 - - 644.0 - 130816.921875 - - - 8.597999572753906 - - - - - - - 47.68749296665192 - -117.02951995655894 - - 645.2000122070312 - 130867.859375 - - - 7.2769999504089355 - - - - - - - 47.68747896887362 - -117.0302524510771 - - 646.7999877929688 - 130922.8828125 - - - 6.877999782562256 - - - - - - - 47.68747595138848 - -117.03093289397657 - - 647.7999877929688 - 130973.9609375 - - - 7.296999931335449 - - - - - - - 47.687487937510014 - -117.031742753461 - - 647.0 - 131034.828125 - - - 6.763000011444092 - - - - - - - 47.68749799579382 - -117.032176181674 - - 646.2000122070312 - 131067.359375 - - - 8.133000373840332 - - - - - - - 47.68749405629933 - -117.03282703645527 - - 644.5999755859375 - 131116.265625 - - - 9.781000137329102 - - - - - - - 47.687490452080965 - -117.03376128338277 - - 643.5999755859375 - 131186.375 - - - 10.015999794006346 - - - - - - - 47.68748768605292 - -117.0347098633647 - - 642.2000122070312 - 131257.609375 - - - 8.904000282287598 - - - - - - - 47.68748399801552 - -117.0354437828064 - - 642.0 - 131312.71875 - - - 7.873000144958496 - - - - - - - 47.68753646872938 - -117.03617619350553 - - 641.7999877929688 - 131368.125 - - - 7.914999961853027 - - - - - - - 47.68766085617244 - -117.03668153844774 - - 642.0 - 131408.625 - - - 8.100000381469727 - - - - - - - 47.687916588038206 - -117.03732526861131 - - 642.0 - 131464.65625 - - - 8.003999710083008 - - - - - - - 47.688108533620834 - -117.03780186362565 - - 641.7999877929688 - 131506.328125 - - - 6.945000171661377 - - - - - - - 47.688441378995776 - -117.03863644972444 - - 642.0 - 131579.0625 - - - 7.2729997634887695 - - - - - - - 47.68876408226788 - -117.0393517613411 - - 642.7999877929688 - 131643.671875 - - - 8.076000213623047 - - - - - - - 47.68906977027655 - -117.04010395333171 - - 642.7999877929688 - 131709.5625 - - - 8.236000061035156 - - - - - - - 47.68929675221443 - -117.04067207872868 - - 642.5999755859375 - 131759.09375 - - - 8.255000114440918 - - - - - - - 47.68961124122143 - -117.04144363291562 - - 641.7999877929688 - 131826.78125 - - - 8.461000442504883 - - - - - - - 47.689913576468825 - -117.04221778549254 - - 639.7999877929688 - 131893.90625 - - - 8.390999794006348 - - - - - - - 47.690207781270146 - -117.04303225502372 - - 636.4000244140625 - 131963.265625 - - - 8.670000076293945 - - - - - - - 47.69024709239602 - -117.04313786700368 - - 636.5999755859375 - 131972.34375 - - - 9.07800006866455 - - - - - - - 8.604737176388815 - - - - - 197.86 - 1609.34 - 9.6947489 - 74 - Active - Manual - - - - - 47.69045957364142 - -117.04364924691617 - - 636.0 - 132017.484375 - - - 9.027999877929688 - - - - - - - 47.69098193384707 - -117.04439716413617 - - 635.0 - 132098.265625 - - - 8.97599983215332 - - - - - - - 47.69136029295623 - -117.04490686766803 - - 635.0 - 132155.125 - - - 8.123000144958496 - - - - - - - 47.69173446111381 - -117.04540316015482 - - 635.0 - 132211.0 - - - 7.981999874114991 - - - - - - - 47.692163195461035 - -117.04605745151639 - - 634.4000244140625 - 132279.5 - - - 9.78600025177002 - - - - - - - 47.6922270655632 - -117.04616096802056 - - 634.5999755859375 - 132289.96875 - - - 10.468999862670897 - - - - - - - 47.69234424456954 - -117.04661283642054 - - 634.2000122070312 - 132326.9375 - - - 9.241999626159668 - - - - - - - 47.69235405139625 - -117.04672129824758 - - 633.7999877929688 - 132335.15625 - - - 8.218999862670898 - - - - - - - 47.692455388605595 - -117.04738237895072 - - 631.0 - 132386.1875 - - - 8.505000114440918 - - - - - - - 47.692548260092735 - -117.04769938252866 - - 630.2000122070312 - 132412.15625 - - - 8.656000137329102 - - - - - - - 47.69273115321994 - -117.04801018349826 - - 629.2000122070312 - 132443.265625 - - - 7.7769999504089355 - - - - - - - 47.69290767610073 - -117.04808813519776 - - 629.0 - 132464.25 - - - 6.994999885559082 - - - - - - - 47.69297104328871 - -117.048096684739 - - 629.0 - 132471.296875 - - - 7.046999931335449 - - - - - - - 47.693591974675655 - -117.04800507053733 - - 629.2000122070312 - 132540.578125 - - - 7.697999954223633 - - - - - - - 47.69408516585827 - -117.04797615297139 - - 629.0 - 132595.40625 - - - 6.854000091552734 - - - - - - - 47.694229083135724 - -117.04812015406787 - - 629.0 - 132617.171875 - - - 5.440999984741211 - - - - - - - 47.694217348471284 - -117.04818653874099 - - 629.0 - 132622.296875 - - - 5.125 - - - - - - - 47.69415305927396 - -117.04868593253195 - - 629.0 - 132660.421875 - - - 6.354000091552734 - - - - - - - 47.69416538067162 - -117.04935405403376 - - 629.0 - 132710.78125 - - - 7.193999767303467 - - - - - - - 47.69419555552304 - -117.05004204064608 - - 629.0 - 132762.375 - - - 8.598999977111816 - - - - - - - 47.69423319026828 - -117.05058418214321 - - 628.2000122070312 - 132802.9375 - - - 6.760000228881836 - - - - - - - 47.69418398849666 - -117.05117058008909 - - 628.0 - 132844.796875 - - - 8.371999740600586 - - - - - - - 47.69419605843723 - -117.05127535387874 - - 628.0 - 132852.78125 - - - 7.984000205993653 - - - - - - - 47.694117771461606 - -117.05184599384665 - - 627.0 - 132897.109375 - - - 8.866000175476074 - - - - - - - 47.69389757886529 - -117.052610674873 - - 627.0 - 132959.515625 - - - 7.801000118255615 - - - - - - - 47.69376715645194 - -117.05313093960285 - - 626.5999755859375 - 133001.125 - - - 8.321999549865723 - - - - - - - 47.693537659943104 - -117.05401045270264 - - 627.4000244140625 - 133071.921875 - - - 8.850000381469727 - - - - - - - 47.693501533940434 - -117.05421849153936 - - 627.4000244140625 - 133088.03125 - - - 8.055000305175781 - - - - - - - 47.69328595139086 - -117.05495735630393 - - 627.5999755859375 - 133148.46875 - - - 8.633999824523926 - - - - - - - 47.69310096278787 - -117.05555096268654 - - 627.2000122070312 - 133197.53125 - - - 8.177000045776367 - - - - - - - 47.692978670820594 - -117.05600786022842 - - 626.5999755859375 - 133234.421875 - - - 7.377999782562257 - - - - - - - 47.69280835054815 - -117.05654044635594 - - 626.2000122070312 - 133278.65625 - - - 7.372000217437744 - - - - - - - 47.69262176938355 - -117.05711158923805 - - 626.0 - 133326.3125 - - - 7.942999839782715 - - - - - - - 47.69234223291278 - -117.05784793943167 - - 625.7999877929688 - 133389.671875 - - - 9.050999641418457 - - - - - - - 47.69199388101697 - -117.05869828350842 - - 625.2000122070312 - 133464.375 - - - 9.338000297546387 - - - - - - - 47.69170965068042 - -117.05937788821757 - - 625.7999877929688 - 133524.390625 - - - 8.574000358581543 - - - - - - - 47.691448889672756 - -117.06005145795643 - - 625.2000122070312 - 133582.640625 - - - 8.321000099182129 - - - - - - - 47.69140966236591 - -117.0601512864232 - - 624.7999877929688 - 133591.34375 - - - 8.70300006866455 - - - - - - - 8.13375110734863 - - - - - 188.99 - 1609.34 - 9.3600368 - 70 - Active - Manual - - - - - 47.69140966236591 - -117.0601512864232 - - 624.7999877929688 - 133591.34375 - - - - - 47.69111478701234 - -117.06084916368127 - - 624.2000122070312 - 133653.09375 - - - 8.821000099182129 - - - - - - - 47.69089836627245 - -117.06143849529326 - - 624.5999755859375 - 133703.484375 - - - 8.39799976348877 - - - - - - - 47.69067817367613 - -117.06201215274632 - - 624.7999877929688 - 133752.984375 - - - 8.25 - - - - - - - 47.69039008766413 - -117.06274976022542 - - 625.2000122070312 - 133816.984375 - - - 8.0 - - - - - - - 47.69005925394595 - -117.06352525390685 - - 625.4000244140625 - 133885.84375 - - - 8.607000350952148 - - - - - - - 47.689719032496214 - -117.0644012466073 - - 625.4000244140625 - 133961.71875 - - - 8.430999755859375 - - - - - - - 47.68944066949189 - -117.06510465592146 - - 625.5999755859375 - 134022.921875 - - - 7.650000095367432 - - - - - - - 47.68913003616035 - -117.06588727422059 - - 624.0 - 134091.078125 - - - 8.520000457763672 - - - - - - - 47.68875134177506 - -117.06679528579116 - - 627.2000122070312 - 134171.21875 - - - 8.904999732971191 - - - - - - - 47.68845185637474 - -117.06758989021182 - - 627.5999755859375 - 134239.546875 - - - 8.541000366210938 - - - - - - - 47.6881343498826 - -117.06839866004884 - - 626.0 - 134309.78125 - - - 8.779000282287598 - - - - - - - 47.687775855883956 - -117.06932477653027 - - 624.0 - 134389.90625 - - - 8.902999877929688 - - - - - - - 47.68743286840618 - -117.07018819637597 - - 626.2000122070312 - 134465.140625 - - - 9.404000282287598 - - - - - - - 47.687162049114704 - -117.07090233452618 - - 626.4000244140625 - 134526.640625 - - - 8.78600025177002 - - - - - - - 47.68682115711272 - -117.07182518206537 - - 624.5999755859375 - 134605.625 - - - 8.776000022888184 - - - - - - - 47.6864508446306 - -117.07278775982559 - - 624.0 - 134688.765625 - - - 9.23799991607666 - - - - - - - 47.68612059764564 - -117.07363273948431 - - 624.0 - 134762.109375 - - - 9.168000221252441 - - - - - - - 47.68585866317153 - -117.07430765032768 - - 623.2000122070312 - 134820.53125 - - - 8.345999717712402 - - - - - - - 47.68556068651378 - -117.07507685758173 - - 623.2000122070312 - 134887.09375 - - - 8.319999694824219 - - - - - - - 47.68529615364969 - -117.0757176540792 - - 623.0 - 134943.515625 - - - 8.0600004196167 - - - - - - - 47.68500563688576 - -117.07649876363575 - - 623.0 - 135010.4375 - - - 8.364999771118164 - - - - - - - 47.6847496535629 - -117.077168058604 - - 623.2000122070312 - 135068.15625 - - - 8.246000289916992 - - - - - - - 47.684443295001984 - -117.07790055312216 - - 623.5999755859375 - 135132.859375 - - - 8.088000297546387 - - - - - - - 47.68417029641569 - -117.07856657914817 - - 622.5999755859375 - 135191.328125 - - - 7.309000015258789 - - - - - - - 47.68413777463138 - -117.07865106873214 - - 622.4000244140625 - 135198.59375 - - - 7.265999794006348 - - - - - - - 8.515498143288005 - - - - - 224.51 - 1609.34 - 8.7876291 - 83 - Active - Manual - - - - - 47.68413777463138 - -117.07865106873214 - - 622.4000244140625 - 135198.59375 - - - - - 47.68398463726044 - -117.07896036095917 - - 622.0 - 135227.5 - - - 7.2270002365112305 - - - - - - - 47.68367157317698 - -117.07922296598554 - - 622.2000122070312 - 135267.90625 - - - 8.081000328063965 - - - - - - - 47.6835167594254 - -117.0792574994266 - - 622.7999877929688 - 135285.328125 - - - 8.711000442504883 - - - - - - - 47.68280438147485 - -117.07923989742994 - - 623.2000122070312 - 135364.53125 - - - 8.800000190734863 - - - - - - - 47.68241479061544 - -117.07920645363629 - - 624.5999755859375 - 135407.875 - - - 7.223999977111816 - - - - - - - 47.68202058970928 - -117.07919077947736 - - 625.2000122070312 - 135451.734375 - - - 6.265999794006348 - - - - - - - 47.68156595528126 - -117.07915825769305 - - 626.7999877929688 - 135502.34375 - - - 6.326000213623047 - - - - - - - 47.681201258674264 - -117.07914157770574 - - 628.0 - 135542.84375 - - - 5.785999774932861 - - - - - - - 47.68089045770466 - -117.07912607118487 - - 629.7999877929688 - 135577.40625 - - - 4.320000171661377 - - - - - - - 47.68082734197378 - -117.07911257632077 - - 630.5999755859375 - 135584.5 - - - 3.546999931335449 - - - - - - - 47.68073237501085 - -117.07927208393812 - - 630.7999877929688 - 135601.15625 - - - 3.331000089645386 - - - - - - - 47.680591056123376 - -117.07971188239753 - - 629.5999755859375 - 135637.765625 - - - 4.576000213623047 - - - - - - - 47.68040447495878 - -117.08031998947263 - - 629.7999877929688 - 135687.90625 - - - 5.571000099182129 - - - - - - - 47.68017556518316 - -117.08103488199413 - - 628.7999877929688 - 135747.328125 - - - 6.6020002365112305 - - - - - - - 47.68000683747232 - -117.08158666267991 - - 629.4000244140625 - 135792.796875 - - - 7.578000068664551 - - - - - - - 47.67963895574212 - -117.08274965174496 - - 629.5999755859375 - 135889.234375 - - - 8.03600025177002 - - - - - - - 47.67926805652678 - -117.08385254256427 - - 631.0 - 135981.890625 - - - 7.7210001945495605 - - - - - - - 47.678951136767864 - -117.08479793742299 - - 630.2000122070312 - 136061.0625 - - - 7.916999816894532 - - - - - - - 47.6786142680794 - -117.08580099977553 - - 630.4000244140625 - 136145.1875 - - - 7.6479997634887695 - - - - - - - 47.67829215154052 - -117.08675955422223 - - 631.4000244140625 - 136225.578125 - - - 8.038999557495117 - - - - - - - 47.677954360842705 - -117.08773185499012 - - 630.7999877929688 - 136307.6875 - - - 8.211000442504883 - - - - - - - 47.67775076441467 - -117.08814977668226 - - 630.7999877929688 - 136346.40625 - - - 7.74399995803833 - - - - - - - 47.67748765647411 - -117.08885469473898 - - 631.4000244140625 - 136406.828125 - - - 8.631999969482422 - - - - - - - 47.677214071154594 - -117.0895931404084 - - 632.0 - 136470.109375 - - - 7.90999984741211 - - - - - - - 47.67701265402138 - -117.09016143344343 - - 632.2000122070312 - 136518.234375 - - - 6.875 - - - - - - - 47.676972169429064 - -117.09024558775127 - - 632.2000122070312 - 136525.984375 - - - 7.75 - - - - - - - 47.676707385107875 - -117.09043744951487 - - 633.2000122070312 - 136559.890625 - - - 8.47700023651123 - - - - - - - 47.67649465240538 - -117.0903339330107 - - 634.0 - 136584.828125 - - - 8.312999725341797 - - - - - - - 47.67587447538972 - -117.08990779705346 - - 636.0 - 136660.90625 - - - 8.45300006866455 - - - - - - - 47.675536936149 - -117.08983705379069 - - 637.0 - 136698.828125 - - - 7.584000110626221 - - - - - - - 47.67488809302449 - -117.0898000895977 - - 638.0 - 136771.046875 - - - 7.222000122070313 - - - - - - - 47.674657590687275 - -117.08978785201907 - - 638.5999755859375 - 136796.65625 - - - 6.401999950408936 - - - - - - - 7.168250831143379 - - - - - 229.26 - 1609.34 - 11.385973899999998 - 85 - Active - Manual - - - - - 47.67449707724154 - -117.08978885784745 - - 639.0 - 136814.53125 - - - 5.958000183105468 - - - - - - - 47.67407379113138 - -117.08978734910488 - - 639.0 - 136861.5625 - - - 6.718999862670898 - - - - - - - 47.67367615364492 - -117.08978039212525 - - 640.0 - 136905.75 - - - 7.364999771118164 - - - - - - - 47.6731348503381 - -117.0897826552391 - - 641.0 - 136965.9375 - - - 6.688000202178955 - - - - - - - 47.67274375073612 - -117.08977645263076 - - 641.0 - 137009.390625 - - - 6.208000183105469 - - - - - - - 47.672311160713434 - -117.0897778775543 - - 642.0 - 137057.46875 - - - 6.010000228881836 - - - - - - - 47.671940261498094 - -117.08977586589754 - - 642.0 - 137098.734375 - - - 5.894999980926514 - - - - - - - 47.67144648358226 - -117.08974057808518 - - 642.0 - 137153.71875 - - - 6.873000144958496 - - - - - - - 47.67106485553086 - -117.08969925530255 - - 642.0 - 137196.234375 - - - 6.073999881744385 - - - - - - - 47.670674091205 - -117.08970135077834 - - 642.2000122070312 - 137239.6875 - - - 7.242000102996826 - - - - - - - 47.6700992602855 - -117.08969456143677 - - 643.0 - 137303.625 - - - 7.992000102996826 - - - - - - - 47.669752249494195 - -117.08965877071023 - - 644.2000122070312 - 137342.296875 - - - 6.445000171661377 - - - - - - - 47.669317899271846 - -117.08965784870088 - - 645.7999877929688 - 137390.578125 - - - 6.03499984741211 - - - - - - - 47.668907856568694 - -117.08965323865414 - - 647.2000122070312 - 137436.1875 - - - 6.5159997940063485 - - - - - - - 47.668286841362715 - -117.08965206518769 - - 649.5999755859375 - 137505.234375 - - - 6.90500020980835 - - - - - - - 47.66788794659078 - -117.08964703604579 - - 651.0 - 137549.640625 - - - 6.343999862670899 - - - - - - - 47.66740137711167 - -117.08966539241374 - - 652.0 - 137603.765625 - - - 6.013999938964845 - - - - - - - 47.666902067139745 - -117.08968525752425 - - 653.0 - 137659.328125 - - - 6.173999786376953 - - - - - - - 47.6665332634002 - -117.08968735300004 - - 653.0 - 137700.296875 - - - 5.853000164031982 - - - - - - - 47.66612255014479 - -117.08968366496265 - - 654.0 - 137746.015625 - - - 5.715000152587891 - - - - - - - 47.665608655661345 - -117.08964938297868 - - 654.0 - 137803.265625 - - - 6.361000061035156 - - - - - - - 47.66513197682798 - -117.08963538520038 - - 654.0 - 137856.265625 - - - 6.625000000000001 - - - - - - - 47.664584051817656 - -117.08962004631758 - - 654.0 - 137917.171875 - - - 7.61299991607666 - - - - - - - 47.663996145129204 - -117.08961895667017 - - 652.5999755859375 - 137982.546875 - - - 7.263999938964845 - - - - - - - 47.663600435480475 - -117.08962549455464 - - 652.2000122070312 - 138026.515625 - - - 6.2810001373291025 - - - - - - - 47.66327957622707 - -117.08963823504746 - - 651.4000244140625 - 138062.25 - - - 5.955999851226806 - - - - - - - 47.66285696066916 - -117.08964024670422 - - 651.0 - 138109.21875 - - - 6.710000038146973 - - - - - - - 47.66246854327619 - -117.08964829333127 - - 650.0 - 138152.40625 - - - 8.63700008392334 - - - - - - - 47.66189865767956 - -117.08964066579938 - - 647.5999755859375 - 138215.796875 - - - 10.5649995803833 - - - - - - - 47.660967679694295 - -117.08963857032359 - - 645.2000122070312 - 138319.296875 - - - 11.5 - - - - - - - 47.66020065173507 - -117.08963949233294 - - 643.4000244140625 - 138404.609375 - - - 10.663999557495117 - - - - - - - 7.019733028439326 - - - - - 215.27 - 1609.34 - 10.8488359 - 80 - Active - Manual - - - - - 47.65953856520355 - -117.08961987867951 - - 643.0 - 138478.28125 - - - 10.524999618530272 - - - - - - - 47.65879936516285 - -117.08964359946549 - - 642.0 - 138560.4375 - - - 10.270000457763672 - - - - - - - 47.65817935578525 - -117.0896428450942 - - 642.0 - 138629.34375 - - - 9.843999862670898 - - - - - - - 47.65763486735523 - -117.08965835161507 - - 641.7999877929688 - 138689.890625 - - - 8.649999618530273 - - - - - - - 47.65714159235358 - -117.08964477293193 - - 641.0 - 138744.765625 - - - 9.145999908447266 - - - - - - - 47.65658947639167 - -117.08965625613928 - - 639.7999877929688 - 138806.140625 - - - 10.229000091552734 - - - - - - - 47.65607675537467 - -117.08966136910021 - - 637.7999877929688 - 138863.1875 - - - 9.508000373840332 - - - - - - - 47.65532246790826 - -117.08967025391757 - - 634.7999877929688 - 138947.109375 - - - 9.324999809265137 - - - - - - - 47.65458829700947 - -117.08965969271958 - - 629.5999755859375 - 139028.8125 - - - 10.213000297546385 - - - - - - - 47.65424966812134 - -117.08997225388885 - - 628.2000122070312 - 139073.90625 - - - 11.272999763488768 - - - - - - - 47.65418026596308 - -117.09006546065211 - - 628.0 - 139084.328125 - - - 10.42199993133545 - - - - - - - 47.65379813499749 - -117.09064414724708 - - 628.0 - 139145.09375 - - - 10.128000259399414 - - - - - - - 47.65369855798781 - -117.09109777584672 - - 628.0 - 139182.046875 - - - 9.23799991607666 - - - - - - - 47.6538079418242 - -117.09139985963702 - - 628.0 - 139208.453125 - - - 8.802000045776367 - - - - - - - 47.65412653796375 - -117.09187519736588 - - 628.0 - 139258.859375 - - - 8.401000022888184 - - - - - - - 47.654418563470244 - -117.09239504300058 - - 628.0 - 139309.53125 - - - 8.444999694824219 - - - - - - - 47.654541693627834 - -117.09262319840491 - - 628.0 - 139331.421875 - - - 7.296999931335449 - - - - - - - 47.65461578965187 - -117.09288303740323 - - 628.0 - 139352.65625 - - - 7.078000068664552 - - - - - - - 47.65460095368326 - -117.09329634904861 - - 628.5999755859375 - 139384.015625 - - - 7.8400001525878915 - - - - - - - 47.654445888474584 - -117.0940106548369 - - 629.0 - 139440.5 - - - 8.069000244140625 - - - - - - - 47.65430708415806 - -117.0946079492569 - - 629.4000244140625 - 139487.890625 - - - 6.769999980926514 - - - - - - - 47.65423508360982 - -117.09485194645822 - - 630.0 - 139507.796875 - - - 6.635000228881836 - - - - - - - 47.654100554063916 - -117.09502176381648 - - 630.5999755859375 - 139528.28125 - - - 5.120999813079834 - - - - - - - 47.6539477519691 - -117.09501078352332 - - 631.2000122070312 - 139545.40625 - - - 5.708000183105469 - - - - - - - 47.653564950451255 - -117.09496468305588 - - 633.2000122070312 - 139588.109375 - - - 6.099999904632569 - - - - - - - 47.65307025052607 - -117.09495378658175 - - 634.5999755859375 - 139643.109375 - - - 6.875 - - - - - - - 47.65265945345163 - -117.09493584930897 - - 634.7999877929688 - 139688.75 - - - 6.519999980926514 - - - - - - - 47.65219593420625 - -117.09492436610162 - - 635.0 - 139740.28125 - - - 5.725999832153319 - - - - - - - 47.65171816572547 - -117.09492998197675 - - 636.2000122070312 - 139793.4375 - - - 5.315999984741211 - - - - - - - 47.65132253989577 - -117.09492386318743 - - 638.0 - 139837.4375 - - - 4.888999938964844 - - - - - - - 47.65098466537893 - -117.09491455927491 - - 639.5999755859375 - 139875.03125 - - - 4.698999881744385 - - - - - - - 47.65068517997861 - -117.09492503665388 - - 641.4000244140625 - 139908.375 - - - 4.168000221252441 - - - - - - - 47.65034219250083 - -117.09492436610162 - - 642.2000122070312 - 139946.5625 - - - 4.7729997634887695 - - - - - - - 47.64998948201537 - -117.0948135573417 - - 643.4000244140625 - 139986.671875 - - - 5.013999938964844 - - - - - - - 47.64972226694226 - -117.09472965449095 - - 644.4000244140625 - 140017.0625 - - - 5.065000057220459 - - - - - - - 47.64968387782574 - -117.09471833892167 - - 644.5999755859375 - 140021.578125 - - - 4.515999794006348 - - - - - - - 47.649584636092186 - -117.09470199421048 - - 645.2000122070312 - 140032.484375 - - - 3.634999990463257 - - - - - - - 47.64927006326616 - -117.09469746798277 - - 646.5999755859375 - 140067.5 - - - 3.891000032424927 - - - - - - - 47.64894585125148 - -117.09470174275339 - - 648.5999755859375 - 140103.53125 - - - 4.002999782562256 - - - - - - - 47.64859355986118 - -117.09469989873469 - - 649.7999877929688 - 140142.703125 - - - 3.9170000553131104 - - - - - - - 47.648284351453185 - -117.09469193592668 - - 650.7999877929688 - 140177.09375 - - - 3.821000099182129 - - - - - - - 47.64803767204285 - -117.09468615241349 - - 651.7999877929688 - 140204.515625 - - - 3.9170000553131104 - - - - - - - 47.647846564650536 - -117.09468975663185 - - 652.0 - 140225.8125 - - - 4.258999824523926 - - - - - - - 47.6475219335407 - -117.09468665532768 - - 652.5999755859375 - 140261.921875 - - - 5.1579999923706055 - - - - - - - 47.64738748781383 - -117.09468615241349 - - 653.0 - 140276.875 - - - 4.984000205993652 - - - - - - - 47.647243067622185 - -117.09467257373035 - - 653.7999877929688 - 140292.953125 - - - 4.019999980926514 - - - - - - - 7.4759325224137125 - - - - - Garmin Forerunner 405 - 3823661511 - 717 - - 2 - 80 - 0 - 0 - - - - - - Garmin Connect API - - - 14 - 5 - 0 - 0 - - - en - 006-D2449-00 - - diff --git a/Functions.Tests/activity_521169279.tcx b/Functions.Tests/activity_521169279.tcx deleted file mode 100644 index 435124a..0000000 --- a/Functions.Tests/activity_521169279.tcx +++ /dev/null @@ -1,35751 +0,0 @@ - - - - - 2014-06-15T03:02:06.000Z - - 3066.0 - 17084.35 - 427.8118529395792 - 0 - Active - Manual - - - - - 47.646730933338404 - -117.09461599588394 - - 655.0 - - - - - 47.646730933338404 - -117.09461599588394 - - 655.0 - 0.0 - - - 0.0 - - - - - - - 47.64680695720017 - -117.09463795647025 - - 654.7999877929688 - 8.609999656677246 - - - 0.35699999332427973 - - - - - - - 47.64677192084491 - -117.09462898783386 - - 654.7999877929688 - 12.5600004196167 - - - 4.123000144958496 - - - - - - - 47.64670193195343 - -117.09469696506858 - - 655.7999877929688 - 21.8700008392334 - - - 3.069999933242798 - - - - - - - 47.64668198302388 - -117.09471398033202 - - 656.0 - 24.43000030517578 - - - 2.6659998893737793 - - - - - - - 47.64659891836345 - -117.09472998976707 - - 656.7999877929688 - 33.7400016784668 - - - 2.319999933242798 - - - - - - - 47.64657092280686 - -117.0947369467467 - - 657.0 - 36.900001525878906 - - - 3.186000108718872 - - - - - - - 47.64648894779384 - -117.09473594091833 - - 657.5999755859375 - 46.0099983215332 - - - 2.256999969482422 - - - - - - - 47.64646598137915 - -117.09472998976707 - - 657.5999755859375 - 48.61000061035156 - - - 2.6340000629425044 - - - - - - - 47.64637696556747 - -117.09473493508995 - - 658.2000122070312 - 58.5099983215332 - - - 2.4790000915527344 - - - - - - - 47.64635592699051 - -117.09473996423185 - - 658.4000244140625 - 60.880001068115234 - - - 2.427999973297119 - - - - - - - 47.64627194032073 - -117.09474993869662 - - 659.2000122070312 - 70.25 - - - 2.316999912261963 - - - - - - - 47.64624696224928 - -117.09474993869662 - - 659.4000244140625 - 73.02999877929688 - - - 2.877000093460083 - - - - - - - 47.64618191868067 - -117.09474692121148 - - 659.7999877929688 - 80.26000213623047 - - - 2.384999990463257 - - - - - - - 47.64615694060922 - -117.09474499337375 - - 660.0 - 83.04000091552734 - - - 2.9119999408721924 - - - - - - - 47.64607094228268 - -117.09476393647492 - - 660.7999877929688 - 92.70999908447266 - - - 2.3959999084472656 - - - - - - - 47.64604797586799 - -117.0947699714452 - - 661.0 - 95.30999755859375 - - - 2.6710000038146973 - - - - - - - 47.64596398919821 - -117.09477298893034 - - 661.5999755859375 - 104.6500015258789 - - - 2.3299999237060547 - - - - - - - 47.64594295062125 - -117.09477097727358 - - 661.7999877929688 - 106.98999786376953 - - - 2.372999906539917 - - - - - - - 47.64585896395147 - -117.09475798532367 - - 662.2000122070312 - 116.37999725341797 - - - 3.010999917984009 - - - - - - - 47.64582392759621 - -117.09475195035338 - - 662.4000244140625 - 120.30000305175781 - - - 4.416999816894531 - - - - - - - 47.64575293287635 - -117.09473594091833 - - 662.7999877929688 - 128.27999877929688 - - - 3.86299991607666 - - - - - - - 47.645718986168504 - -117.09473099559546 - - 663.0 - 132.0800018310547 - - - 4.085000038146973 - - - - - - - 47.645658971741796 - -117.09471892565489 - - 663.4000244140625 - 138.80999755859375 - - - 3.2950000762939458 - - - - - - - 47.64562192372978 - -117.0947099570185 - - 663.5999755859375 - 142.97999572753906 - - - 4.3520002365112305 - - - - - - - 47.645553946495056 - -117.09469696506858 - - 664.4000244140625 - 150.60000610351562 - - - 3.83299994468689 - - - - - - - 47.64551597647369 - -117.09469394758344 - - 664.7999877929688 - 154.83999633789062 - - - 4.1479997634887695 - - - - - - - 47.645442970097065 - -117.09469294175506 - - 665.4000244140625 - 162.9499969482422 - - - 3.986999988555908 - - - - - - - 47.64541195705533 - -117.09468992426991 - - 665.7999877929688 - 166.41000366210938 - - - 3.6440000534057617 - - - - - - - 47.64532696455717 - -117.09467399865389 - - 666.5999755859375 - 175.92999267578125 - - - 3.1600000858306885 - - - - - - - 47.64529896900058 - -117.0946629345417 - - 666.5999755859375 - 179.14999389648438 - - - 3.259999990463257 - - - - - - - 47.64523694291711 - -117.09464591927826 - - 667.0 - 186.16000366210938 - - - 3.440000057220459 - - - - - - - 47.645205929875374 - -117.09464591927826 - - 667.2000122070312 - 189.61000061035156 - - - 3.5460000038146977 - - - - - - - 47.64511599205434 - -117.09464994259179 - - 667.7999877929688 - 199.6199951171875 - - - 3.303999900817871 - - - - - - - 47.64508799649775 - -117.09465094842017 - - 668.0 - 202.74000549316406 - - - 3.240000009536743 - - - - - - - 47.645010966807604 - -117.09464994259179 - - 668.5999755859375 - 211.3000030517578 - - - 2.815000057220459 - - - - - - - 47.64498992823064 - -117.09465195424855 - - 668.7999877929688 - 213.63999938964844 - - - 2.430000066757202 - - - - - - - 47.64493293128908 - -117.09464499726892 - - 669.2000122070312 - 220.0 - - - 2.990000009536743 - - - - - - - 47.64489999040961 - -117.09464298561215 - - 669.4000244140625 - 223.6699981689453 - - - 4.235000133514404 - - - - - - - 47.64482798986137 - -117.09464197978377 - - 669.7999877929688 - 231.6699981689453 - - - 3.9089999198913574 - - - - - - - 47.64479094184935 - -117.09463896229863 - - 670.0 - 235.7899932861328 - - - 4.140999794006348 - - - - - - - 47.64472397044301 - -117.09466092288494 - - 670.4000244140625 - 243.4199981689453 - - - 3.4460000991821294 - - - - - - - 47.64468792825937 - -117.09466997534037 - - 670.5999755859375 - 247.47999572753906 - - - 5.538000106811523 - - - - - - - 47.64474299736321 - -117.09456897340715 - - 669.7999877929688 - 257.2300109863281 - - - 0.36000001430511475 - - - - - - - 47.644800916314125 - -117.09453293122351 - - 669.2000122070312 - 264.2200012207031 - - - 14.614999771118164 - - - - - - - 47.644800916314125 - -117.09453293122351 - - 669.2000122070312 - 264.2200012207031 - - - 0.0 - - - - - - - 47.643252946436405 - -117.09517892450094 - - 677.5999755859375 - 443.04998779296875 - - - 34.59600067138672 - - - - - - - 47.64320692978799 - -117.09516895003617 - - 677.7999877929688 - 448.2200012207031 - - - 0.08799999952316284 - - - - - - - 47.64104699715972 - -117.09577898494899 - - 687.2000122070312 - 692.7100219726562 - - - - - 47.64098798856139 - -117.09582298994064 - - 688.0 - 700.0499877929688 - - - 3.763000011444092 - - - - - - - 47.640952952206135 - -117.09584293887019 - - 688.4000244140625 - 704.22998046875 - - - 4.34499979019165 - - - - - - - 47.640885980799794 - -117.0958699285984 - - 689.0 - 711.9500122070312 - - - 3.438999891281128 - - - - - - - 47.64085094444454 - -117.0958839263767 - - 689.4000244140625 - 715.97998046875 - - - 5.263000011444092 - - - - - - - 47.64077693223953 - -117.09590697661042 - - 690.0 - 724.3800048828125 - - - 4.120999813079834 - - - - - - - 47.6407459191978 - -117.09591393359005 - - 690.2000122070312 - 727.8699951171875 - - - 3.628000020980835 - - - - - - - 47.64068297110498 - -117.09592591971159 - - 690.5999755859375 - 734.9299926757812 - - - 3.507999897003174 - - - - - - - 47.6406489405781 - -117.09593296051025 - - 690.7999877929688 - 738.75 - - - 3.938999891281128 - - - - - - - 47.640584986656904 - -117.09594293497503 - - 691.4000244140625 - 745.9099731445312 - - - 3.500999927520752 - - - - - - - 47.64055196195841 - -117.09594293497503 - - 691.4000244140625 - 749.5700073242188 - - - 3.7860000133514404 - - - - - - - 47.64060191810131 - -117.09586196579039 - - 690.7999877929688 - 757.8200073242188 - - - 0.4110000133514405 - - - - - - - 47.64062597416341 - -117.09581393748522 - - 690.4000244140625 - 762.2999877929688 - - - 0.0 - - - - - - - 47.64064793474972 - -117.09576892666519 - - 690.0 - 766.47998046875 - - - 0.4169999957084656 - - - - - - - 47.64066897332668 - -117.09567496553063 - - 689.0 - 773.9199829101562 - - - 23.468000411987305 - - - - - - - 47.640694957226515 - -117.09555694833398 - - 688.4000244140625 - 783.239990234375 - - - 0.6349999904632567 - - - - - - - 47.64070392586291 - -117.09551696665585 - - 688.2000122070312 - 786.4099731445312 - - - 14.39900016784668 - - - - - - - 47.64072597026825 - -117.09541495889425 - - 688.0 - 794.4600219726562 - - - 0.1469999998807907 - - - - - - - 47.63742391951382 - -117.0947649423033 - - 703.0 - 1164.8199462890625 - - - - - 47.63733892701566 - -117.09473493508995 - - 703.7999877929688 - 1174.530029296875 - - - 2.1640000343322754 - - - - - - - 47.637318978086114 - -117.09472496062517 - - 703.7999877929688 - 1176.8800048828125 - - - 4.558000087738037 - - - - - - - 47.637237925082445 - -117.09467793814838 - - 704.4000244140625 - 1186.56005859375 - - - 1.9420000314712527 - - - - - - - 47.637214958667755 - -117.09467299282551 - - 704.5999755859375 - 1189.1400146484375 - - - 8.128000259399414 - - - - - - - 47.637130971997976 - -117.09466092288494 - - 705.4000244140625 - 1198.52001953125 - - - 1.9759999513626099 - - - - - - - 47.63711697421968 - -117.09465991705656 - - 705.4000244140625 - 1200.0799560546875 - - - 1.6390000581741333 - - - - - - - 47.63702997006476 - -117.09466092288494 - - 706.2000122070312 - 1209.75 - - - 1.9249999523162842 - - - - - - - 47.63701295480132 - -117.09466595202684 - - 706.2000122070312 - 1211.6800537109375 - - - 1.9210000038146973 - - - - - - - 47.63692796230316 - -117.09468095563352 - - 707.4000244140625 - 1221.199951171875 - - - 1.902999997138977 - - - - - - - 47.63690298423171 - -117.09468598477542 - - 707.5999755859375 - 1224.0 - - - 2.8480000495910645 - - - - - - - 47.63681698590517 - -117.09468799643219 - - 708.5999755859375 - 1233.5699462890625 - - - 2.382999897003174 - - - - - - - 47.63679393567145 - -117.09468891844153 - - 708.7999877929688 - 1236.1300048828125 - - - 2.6189999580383296 - - - - - - - 47.636721935123205 - -117.0946959592402 - - 709.5999755859375 - 1244.1500244140625 - - - 2.670000076293945 - - - - - - - 47.63669595122337 - -117.09469797089696 - - 709.7999877929688 - 1247.0400390625 - - - 3.0000000000000004 - - - - - - - 47.63662596233189 - -117.0946959592402 - - 710.2000122070312 - 1254.8299560546875 - - - 2.539999961853027 - - - - - - - 47.63660391792655 - -117.09469495341182 - - 710.4000244140625 - 1257.27001953125 - - - 2.552000045776367 - - - - - - - 47.636525966227055 - -117.09467894397676 - - 710.7999877929688 - 1266.030029296875 - - - 2.8610000610351562 - - - - - - - 47.636501993983984 - -117.09467994980514 - - 710.7999877929688 - 1268.699951171875 - - - 2.8519999980926514 - - - - - - - 47.63642597012222 - -117.09467592649162 - - 711.0 - 1277.1500244140625 - - - 2.7720000743865967 - - - - - - - 47.636402919888496 - -117.09467399865389 - - 711.0 - 1279.719970703125 - - - 2.694000005722046 - - - - - - - 47.636329997330904 - -117.09466192871332 - - 710.7999877929688 - 1287.8800048828125 - - - 2.691999912261963 - - - - - - - 47.63630694709718 - -117.09465597756207 - - 710.7999877929688 - 1290.47998046875 - - - 2.668999910354614 - - - - - - - 47.63624299317598 - -117.09464793093503 - - 710.7999877929688 - 1297.6199951171875 - - - 2.36899995803833 - - - - - - - 47.63621499761939 - -117.09464197978377 - - 711.0 - 1300.760009765625 - - - 3.2330000400543213 - - - - - - - 47.63614593073726 - -117.09463393315673 - - 711.5999755859375 - 1308.4599609375 - - - 2.5280001163482666 - - - - - - - 47.636121958494186 - -117.09463393315673 - - 712.0 - 1311.1300048828125 - - - 2.7309999465942383 - - - - - - - 47.636033948510885 - -117.09461599588394 - - 713.0 - 1321.010009765625 - - - 2.4700000286102295 - - - - - - - 47.63601693324745 - -117.09461096674204 - - 713.2000122070312 - 1322.9300537109375 - - - 1.9559999704360964 - - - - - - - 47.63593294657767 - -117.09457299672067 - - 714.2000122070312 - 1332.699951171875 - - - 1.9479999542236328 - - - - - - - 47.63591199181974 - -117.09456193260849 - - 714.4000244140625 - 1335.1800537109375 - - - 2.502000093460083 - - - - - - - 47.63584594242275 - -117.09453293122351 - - 715.5999755859375 - 1342.8299560546875 - - - 2.563999891281128 - - - - - - - 47.63582398183644 - -117.09452698007226 - - 715.7999877929688 - 1345.3199462890625 - - - 2.4700000286102295 - - - - - - - 47.63574695214629 - -117.09450694732368 - - 716.5999755859375 - 1354.010009765625 - - - 2.615999937057495 - - - - - - - 47.63571795076132 - -117.09449999034405 - - 716.7999877929688 - 1357.280029296875 - - - 4.861999988555908 - - - - - - - 47.6356359757483 - -117.09447199478745 - - 717.7999877929688 - 1366.6300048828125 - - - 2.1500000953674316 - - - - - - - 47.63561594299972 - -117.09446595981717 - - 718.0 - 1368.9000244140625 - - - 3.375999927520752 - - - - - - - 47.635547965765 - -117.09444894455373 - - 719.2000122070312 - 1376.5699462890625 - - - 2.5109999179840083 - - - - - - - 47.63552499935031 - -117.09444399923086 - - 719.5999755859375 - 1379.1500244140625 - - - 2.7560000419616695 - - - - - - - 47.635452998802066 - -117.09443293511868 - - 720.7999877929688 - 1387.199951171875 - - - 1.7510000467300415 - - - - - - - 47.63543397188187 - -117.09442698396742 - - 721.0 - 1389.3599853515625 - - - 4.336999893188477 - - - - - - - 47.6353579480201 - -117.09441298618913 - - 721.7999877929688 - 1397.8800048828125 - - - 2.861999988555908 - - - - - - - 47.63533095829189 - -117.0944089628756 - - 722.0 - 1400.8900146484375 - - - 2.9179999828338623 - - - - - - - 47.63525392860174 - -117.09439496509731 - - 722.5999755859375 - 1409.52001953125 - - - 2.9349999427795406 - - - - - - - 47.63522995635867 - -117.09439094178379 - - 722.7999877929688 - 1412.2099609375 - - - 2.7860000133514404 - - - - - - - 47.63514596968889 - -117.09437292069197 - - 723.4000244140625 - 1421.6400146484375 - - - 3.1019999980926514 - - - - - - - 47.63511495664716 - -117.09436395205557 - - 723.5999755859375 - 1425.1500244140625 - - - 3.6400001049041752 - - - - - - - 47.63503599911928 - -117.09433696232736 - - 724.0 - 1434.1700439453125 - - - 2.8399999141693115 - - - - - - - 47.63501697219908 - -117.09432899951935 - - 724.0 - 1436.3699951171875 - - - 2.687999963760376 - - - - - - - 47.634937930852175 - -117.09431198425591 - - 724.2000122070312 - 1445.239990234375 - - - 0.36899998784065247 - - - - - - - 47.63451799750328 - -117.09409296512604 - - 725.2000122070312 - 1494.75 - - - 44.24700164794922 - - - - - - - 47.63445395976305 - -117.09405197761953 - - 726.0 - 1502.510009765625 - - - 3.065999984741211 - - - - - - - 47.63442797586322 - -117.09404191933572 - - 726.4000244140625 - 1505.5 - - - 3.0569999217987065 - - - - - - - 47.634357986971736 - -117.09399397484958 - - 726.7999877929688 - 1514.0699462890625 - - - 2.8369998931884766 - - - - - - - 47.634333930909634 - -117.09398391656578 - - 727.2000122070312 - 1516.8499755859375 - - - 2.8580000400543213 - - - - - - - 47.63425899669528 - -117.09395793266594 - - 728.0 - 1525.4100341796875 - - - 2.7100000381469727 - - - - - - - 47.63423795811832 - -117.09394695237279 - - 728.2000122070312 - 1527.8900146484375 - - - 3.009999990463257 - - - - - - - 47.63415698893368 - -117.09392691962421 - - 728.7999877929688 - 1537.02001953125 - - - 2.996000051498413 - - - - - - - 47.63412798754871 - -117.0939189568162 - - 729.0 - 1540.300048828125 - - - 3.3880000114440922 - - - - - - - 47.63405196368694 - -117.09388693794608 - - 729.5999755859375 - 1549.0799560546875 - - - 2.930999994277954 - - - - - - - 47.63403092510998 - -117.09388492628932 - - 729.7999877929688 - 1551.4200439453125 - - - 2.319000005722046 - - - - - - - 47.63396495953202 - -117.09388392046094 - - 730.4000244140625 - 1558.760009765625 - - - 2.440000057220459 - - - - - - - 47.63393897563219 - -117.09387897513807 - - 730.7999877929688 - 1561.6800537109375 - - - 2.9360001087188716 - - - - - - - 47.63385792262852 - -117.09385793656111 - - 732.0 - 1570.8199462890625 - - - 2.2679998874664307 - - - - - - - 47.63384794816375 - -117.09385693073273 - - 732.2000122070312 - 1571.9300537109375 - - - 1.1430000066757202 - - - - - - - 47.63376295566559 - -117.09383899345994 - - 733.5999755859375 - 1581.47998046875 - - - 1.5609999895095827 - - - - - - - 47.63374493457377 - -117.09382591769099 - - 733.5999755859375 - 1583.7099609375 - - - 2.5309998989105225 - - - - - - - 47.63367595151067 - -117.09379892796278 - - 734.5999755859375 - 1591.6400146484375 - - - 2.5850000381469727 - - - - - - - 47.63365298509598 - -117.09379096515477 - - 734.7999877929688 - 1594.27001953125 - - - 2.7950000762939453 - - - - - - - 47.63356497511268 - -117.0937619637698 - - 735.7999877929688 - 1604.2900390625 - - - 2.484999895095825 - - - - - - - 47.633540919050574 - -117.09375592879951 - - 736.0 - 1607.0 - - - 2.815999984741211 - - - - - - - 47.63346992433071 - -117.09373095072806 - - 736.7999877929688 - 1615.1099853515625 - - - 2.687000036239624 - - - - - - - 47.63344695791602 - -117.0937289390713 - - 737.2000122070312 - 1617.6800537109375 - - - 2.6089999675750732 - - - - - - - 47.63337596319616 - -117.09373497404158 - - 738.2000122070312 - 1625.5799560546875 - - - 1.965000033378601 - - - - - - - 47.63335199095309 - -117.09373597986996 - - 738.4000244140625 - 1628.25 - - - 2.746000051498413 - - - - - - - 47.633279990404844 - -117.09374092519283 - - 739.2000122070312 - 1636.27001953125 - - - 1.985000014305115 - - - - - - - 47.633261969313025 - -117.0937429368496 - - 739.4000244140625 - 1638.27001953125 - - - 2.0880000591278076 - - - - - - - 47.633173959329724 - -117.0937479659915 - - 740.4000244140625 - 1648.06005859375 - - - 2.441999912261963 - - - - - - - 47.633153926581144 - -117.09375198930502 - - 740.5999755859375 - 1650.31005859375 - - - 2.26200008392334 - - - - - - - 47.63307798653841 - -117.09375794045627 - - 741.5999755859375 - 1658.77001953125 - - - 2.7709999084472656 - - - - - - - 47.63305895961821 - -117.09376498125494 - - 741.7999877929688 - 1660.949951171875 - - - 2.311000108718872 - - - - - - - 47.63298595324159 - -117.09376892074943 - - 742.5999755859375 - 1669.0699462890625 - - - 2.678999900817871 - - - - - - - 47.632959969341755 - -117.0937699265778 - - 742.7999877929688 - 1671.9599609375 - - - 2.9600000381469727 - - - - - - - 47.63288998045027 - -117.09378995932639 - - 743.5999755859375 - 1679.8900146484375 - - - 2.2060000896453857 - - - - - - - 47.63286793604493 - -117.09380194544792 - - 743.7999877929688 - 1682.489990234375 - - - 6.8969998359680185 - - - - - - - 47.63278294354677 - -117.09380395710468 - - 744.5999755859375 - 1691.949951171875 - - - 3.0950000286102295 - - - - - - - 47.63275193050504 - -117.09380999207497 - - 744.7999877929688 - 1695.4200439453125 - - - 3.565000057220459 - - - - - - - 47.63267498463392 - -117.0938219781965 - - 745.5999755859375 - 1704.030029296875 - - - 2.867000102996826 - - - - - - - 47.63264891691506 - -117.09382298402488 - - 746.0 - 1706.9200439453125 - - - 2.9119999408721924 - - - - - - - 47.632571971043944 - -117.09382893517613 - - 747.2000122070312 - 1715.5 - - - 2.6070001125335693 - - - - - - - 47.632547998800874 - -117.09383295848966 - - 747.4000244140625 - 1718.1800537109375 - - - 3.7769999504089355 - - - - - - - 47.63246099464595 - -117.09383295848966 - - 748.4000244140625 - 1727.8499755859375 - - - 3.2260000705718994 - - - - - - - 47.63242897577584 - -117.09383497014642 - - 748.7999877929688 - 1731.4200439453125 - - - 3.549999952316284 - - - - - - - 47.63234691694379 - -117.09384595043957 - - 749.7999877929688 - 1740.5699462890625 - - - 3.055000066757202 - - - - - - - 47.632315987721086 - -117.09385299123824 - - 750.2000122070312 - 1744.06005859375 - - - 3.500999927520752 - - - - - - - 47.632254967466 - -117.09386891685426 - - 750.7999877929688 - 1750.93994140625 - - - 3.3570001125335693 - - - - - - - 47.63222395442426 - -117.09388693794608 - - 751.2000122070312 - 1754.6500244140625 - - - 3.9059998989105225 - - - - - - - 47.632147930562496 - -117.09393194876611 - - 752.0 - 1763.75 - - - 2.986999988555908 - - - - - - - 47.632123958319426 - -117.09394896402955 - - 752.4000244140625 - 1766.7099609375 - - - 3.13100004196167 - - - - - - - 47.63204994611442 - -117.09399598650634 - - 753.4000244140625 - 1775.6600341796875 - - - 2.940000057220459 - - - - - - - 47.63203091919422 - -117.09401099011302 - - 753.5999755859375 - 1778.050048828125 - - - 2.4739999771118164 - - - - - - - 47.63196193613112 - -117.09402993321419 - - 754.2000122070312 - 1785.8599853515625 - - - 2.575000047683716 - - - - - - - 47.63193796388805 - -117.09403295069933 - - 754.2000122070312 - 1788.5400390625 - - - 2.757999897003174 - - - - - - - 47.631865963339806 - -117.09405792877078 - - 755.0 - 1796.760009765625 - - - 2.691999912261963 - - - - - - - 47.63183897361159 - -117.09406496956944 - - 755.2000122070312 - 1799.81005859375 - - - 3.2320001125335693 - - - - - - - 47.631758926436305 - -117.09410595707595 - - 756.0 - 1809.219970703125 - - - 3.111999988555908 - - - - - - - 47.63173897750676 - -117.09412096068263 - - 756.4000244140625 - 1811.7099609375 - - - 2.5999999046325684 - - - - - - - 47.63166295364499 - -117.09414895623922 - - 757.0 - 1820.4200439453125 - - - 2.880000114440918 - - - - - - - 47.6316399872303 - -117.0941639598459 - - 757.4000244140625 - 1823.219970703125 - - - 2.8580000400543213 - - - - - - - 47.63156999833882 - -117.0941969845444 - - 758.0 - 1831.3800048828125 - - - 2.690000057220459 - - - - - - - 47.631540996953845 - -117.09420695900917 - - 758.4000244140625 - 1834.68994140625 - - - 3.368000030517578 - - - - - - - 47.631453992798924 - -117.09423495456576 - - 759.2000122070312 - 1844.5899658203125 - - - 3.260999917984009 - - - - - - - 47.6314309425652 - -117.09424995817244 - - 759.4000244140625 - 1847.3900146484375 - - - 2.9419999122619624 - - - - - - - 47.631350979208946 - -117.09430393762887 - - 760.0 - 1857.1700439453125 - - - 2.4140000343322754 - - - - - - - 47.63133496977389 - -117.0943209528923 - - 760.2000122070312 - 1859.3599853515625 - - - 2.2790000438690186 - - - - - - - 47.6312599517405 - -117.09437996149063 - - 760.7999877929688 - 1868.800048828125 - - - 2.3389999866485596 - - - - - - - 47.63123597949743 - -117.0943899359554 - - 761.0 - 1871.5699462890625 - - - 2.9089999198913574 - - - - - - - 47.63116196729243 - -117.09443796426058 - - 761.5999755859375 - 1880.56005859375 - - - 2.9500000476837154 - - - - - - - 47.63113799504936 - -117.09445497952402 - - 761.7999877929688 - 1883.510009765625 - - - 3.075000047683716 - - - - - - - 47.631068928167224 - -117.09448993206024 - - 762.4000244140625 - 1891.6199951171875 - - - 2.694999933242798 - - - - - - - 47.631045961752534 - -117.09449797868729 - - 762.5999755859375 - 1894.25 - - - 2.63700008392334 - - - - - - - 47.63097496703267 - -117.09452899172902 - - 763.0 - 1902.47998046875 - - - 2.7079999446868896 - - - - - - - 47.6309509947896 - -117.09454097785056 - - 763.2000122070312 - 1905.300048828125 - - - 2.9430000782012935 - - - - - - - 47.63089299201965 - -117.09455598145723 - - 763.4000244140625 - 1911.8499755859375 - - - 3.2300000190734868 - - - - - - - 47.63086197897792 - -117.09456495009363 - - 763.5999755859375 - 1915.3599853515625 - - - 3.628999948501587 - - - - - - - 47.63077598065138 - -117.0945939514786 - - 764.0 - 1925.1600341796875 - - - 3.0250000953674316 - - - - - - - 47.630748990923166 - -117.09460593760014 - - 764.2000122070312 - 1928.300048828125 - - - 4.1570000648498535 - - - - - - - 47.63068998232484 - -117.09463292732835 - - 764.4000244140625 - 1935.1700439453125 - - - 3.3940000534057617 - - - - - - - 47.63065796345472 - -117.09464793093503 - - 764.5999755859375 - 1938.9000244140625 - - - 3.8359999656677246 - - - - - - - 47.630598954856396 - -117.09467793814838 - - 765.0 - 1945.8299560546875 - - - 3.447999954223633 - - - - - - - 47.630572970956564 - -117.09469394758344 - - 765.2000122070312 - 1948.969970703125 - - - 3.1219999790191655 - - - - - - - 47.630492923781276 - -117.09472596645355 - - 765.4000244140625 - 1958.1800537109375 - - - 3.0450000762939453 - - - - - - - 47.630467945709825 - -117.09473493508995 - - 765.5999755859375 - 1961.0400390625 - - - 2.9519999027252197 - - - - - - - 47.63039896264672 - -117.09475396201015 - - 765.7999877929688 - 1968.8399658203125 - - - 3.8310000896453857 - - - - - - - 47.63035696931183 - -117.09476091898978 - - 765.7999877929688 - 1973.5400390625 - - - 4.864999771118164 - - - - - - - 47.630277927964926 - -117.09477692842484 - - 766.2000122070312 - 1982.4100341796875 - - - 4.339000225067139 - - - - - - - 47.63024196960032 - -117.0947839692235 - - 766.4000244140625 - 1986.449951171875 - - - 4.236000061035156 - - - - - - - 47.630167957395315 - -117.09480592980981 - - 766.7999877929688 - 1994.8399658203125 - - - 4.111999988555908 - - - - - - - 47.63013292104006 - -117.09481799975038 - - 767.0 - 1998.8299560546875 - - - 4.173999786376953 - - - - - - - 47.63006896711886 - -117.09484398365021 - - 767.5999755859375 - 2006.2099609375 - - - 3.6600000858306885 - - - - - - - 47.63003493659198 - -117.094861920923 - - 767.7999877929688 - 2010.22998046875 - - - 4.110000133514404 - - - - - - - 47.6299789454788 - -117.09489494562149 - - 768.2000122070312 - 2016.9300537109375 - - - 3.2679998874664307 - - - - - - - 47.62994994409382 - -117.09491095505655 - - 768.4000244140625 - 2020.3699951171875 - - - 3.572999954223633 - - - - - - - 47.62987492606044 - -117.09496493451297 - - 769.2000122070312 - 2029.6400146484375 - - - 3.0510001182556157 - - - - - - - 47.62985296547413 - -117.09498597308993 - - 769.4000244140625 - 2032.550048828125 - - - 3.1070001125335693 - - - - - - - 47.629802925512195 - -117.09503995254636 - - 769.7999877929688 - 2039.43994140625 - - - 3.3429999351501465 - - - - - - - 47.62977593578398 - -117.09506493061781 - - 770.0 - 2042.97998046875 - - - 3.703999996185303 - - - - - - - 47.629712987691164 - -117.09512192755938 - - 770.2000122070312 - 2051.18994140625 - - - 3.996999979019165 - - - - - - - 47.62967895716429 - -117.09514799527824 - - 770.4000244140625 - 2055.43994140625 - - - 4.479000091552734 - - - - - - - 47.62961693108082 - -117.09519292227924 - - 770.5999755859375 - 2063.1201171875 - - - 3.8299999237060547 - - - - - - - 47.629589941352606 - -117.09522594697773 - - 770.7999877929688 - 2067.02001953125 - - - 3.9140000343322754 - - - - - - - 47.62953093275428 - -117.09528596140444 - - 771.0 - 2074.97998046875 - - - 3.864000082015991 - - - - - - - 47.629501931369305 - -117.0953159686178 - - 771.2000122070312 - 2078.909912109375 - - - 4.158999919891357 - - - - - - - 47.62942993082106 - -117.09538092836738 - - 771.5999755859375 - 2088.2900390625 - - - 4.679999828338623 - - - - - - - 47.629398917779326 - -117.09541697055101 - - 771.7999877929688 - 2092.669921875 - - - 4.4079999923706055 - - - - - - - 47.629332952201366 - -117.09547899663448 - - 772.4000244140625 - 2101.360107421875 - - - 4.285999774932861 - - - - - - - 47.62930495664477 - -117.09551093168557 - - 772.5999755859375 - 2105.300048828125 - - - 4.051000118255615 - - - - - - - 47.62924192473292 - -117.09556398913264 - - 773.0 - 2113.360107421875 - - - 3.989000082015991 - - - - - - - 47.62921292334795 - -117.09559198468924 - - 773.0 - 2117.2099609375 - - - 3.913000106811524 - - - - - - - 47.629156932234764 - -117.09565593861043 - - 773.2000122070312 - 2125.070068359375 - - - 3.880000114440918 - - - - - - - 47.62912499718368 - -117.09568795748055 - - 773.4000244140625 - 2129.3701171875 - - - 4.440999984741211 - - - - - - - 47.62905894778669 - -117.09575291723013 - - 773.5999755859375 - 2138.179931640625 - - - 4.348999977111816 - - - - - - - 47.629028940573335 - -117.09579197689891 - - 773.7999877929688 - 2142.6298828125 - - - 4.539999961853027 - - - - - - - 47.62896096333861 - -117.09585794247687 - - 774.0 - 2151.669921875 - - - 4.442999839782715 - - - - - - - 47.628924921154976 - -117.09588996134698 - - 774.2000122070312 - 2156.340087890625 - - - 4.86899995803833 - - - - - - - 47.62886792421341 - -117.09595299325883 - - 774.2000122070312 - 2164.25 - - - 3.9340000152587895 - - - - - - - 47.6288409344852 - -117.09598492830992 - - 774.2000122070312 - 2168.090087890625 - - - 3.933000087738037 - - - - - - - 47.62878393754363 - -117.09604695439339 - - 774.2000122070312 - 2175.9599609375 - - - 3.8519999980926514 - - - - - - - 47.62875493615866 - -117.09607595577836 - - 774.2000122070312 - 2179.85009765625 - - - 4.079999923706055 - - - - - - - 47.62869492173195 - -117.09613094106317 - - 774.2000122070312 - 2187.699951171875 - - - 3.805999994277954 - - - - - - - 47.628663992509246 - -117.09615893661976 - - 774.2000122070312 - 2191.739990234375 - - - 4.210999965667725 - - - - - - - 47.62860397808254 - -117.09621492773294 - - 774.0 - 2199.6298828125 - - - 3.9089999198913574 - - - - - - - 47.62857397086918 - -117.0962449349463 - - 773.7999877929688 - 2203.64990234375 - - - 4.104000091552734 - - - - - - - 47.628511944785714 - -117.096304949373 - - 773.5999755859375 - 2211.889892578125 - - - 4.061999797821045 - - - - - - - 47.62848193757236 - -117.09633193910122 - - 773.5999755859375 - 2215.7900390625 - - - 4.063000202178955 - - - - - - - 47.628405997529626 - -117.09639497101307 - - 773.4000244140625 - 2225.47998046875 - - - 3.2039999961853027 - - - - - - - 47.62838898226619 - -117.09640393964946 - - 773.4000244140625 - 2227.489990234375 - - - 2.0239999294281006 - - - - - - - 47.62830591760576 - -117.09643595851958 - - 773.4000244140625 - 2237.02001953125 - - - 1.909000039100647 - - - - - - - 47.62828295119107 - -117.09644593298435 - - 773.4000244140625 - 2239.68994140625 - - - 2.6730000972747803 - - - - - - - 47.62820298783481 - -117.09648792631924 - - 773.4000244140625 - 2249.1298828125 - - - 3.0980000495910645 - - - - - - - 47.6281759981066 - -117.09650192409754 - - 773.4000244140625 - 2252.31005859375 - - - 3.319999933242798 - - - - - - - 47.62809695675969 - -117.09651298820972 - - 773.5999755859375 - 2261.1298828125 - - - 2.9189999103546143 - - - - - - - 47.628062926232815 - -117.09651994518936 - - 773.5999755859375 - 2264.949951171875 - - - 3.938999891281128 - - - - - - - 47.62798799201846 - -117.09655296988785 - - 773.5999755859375 - 2273.64990234375 - - - 4.275000095367432 - - - - - - - 47.62794893234968 - -117.09657199680805 - - 773.5999755859375 - 2278.2099609375 - - - 4.730999946594238 - - - - - - - 47.62787793762982 - -117.09661893546581 - - 773.4000244140625 - 2286.860107421875 - - - 4.297999858856201 - - - - - - - 47.627843990921974 - -117.09663997404277 - - 773.2000122070312 - 2290.9599609375 - - - 4.0879998207092285 - - - - - - - 47.627762937918305 - -117.09669093601406 - - 773.2000122070312 - 2300.75 - - - 4.818999767303467 - - - - - - - 47.627719938755035 - -117.09671993739903 - - 773.0 - 2306.0 - - - 5.513000011444092 - - - - - - - 47.627674927935004 - -117.09674994461238 - - 772.7999877929688 - 2311.489990234375 - - - 5.41699981689453 - - - - - - - 47.62762991711497 - -117.0967819634825 - - 772.7999877929688 - 2317.0400390625 - - - 5.405000209808349 - - - - - - - 47.627587923780084 - -117.09681892767549 - - 772.5999755859375 - 2322.469970703125 - - - 5.489999771118164 - - - - - - - 47.627541990950704 - -117.09685295820236 - - 772.5999755859375 - 2328.18994140625 - - - 5.840000152587891 - - - - - - - 47.62748792767525 - -117.09688891656697 - - 772.5999755859375 - 2334.780029296875 - - - 6.0980000495910645 - - - - - - - 47.62743394821882 - -117.09691892378032 - - 772.7999877929688 - 2341.18994140625 - - - 6.955999851226807 - - - - - - - 47.62737896293402 - -117.09695094265044 - - 772.7999877929688 - 2347.760009765625 - - - 6.311999797821045 - - - - - - - 47.627329928800464 - -117.09698094986379 - - 773.0 - 2353.659912109375 - - - 6.142000198364258 - - - - - - - 47.62726899236441 - -117.09699293598533 - - 773.2000122070312 - 2360.5 - - - 6.741000175476075 - - - - - - - 47.62720998376608 - -117.09699193015695 - - 773.4000244140625 - 2367.06005859375 - - - 6.646999835968018 - - - - - - - 47.627157932147384 - -117.09698396734893 - - 773.5999755859375 - 2372.8701171875 - - - 5.631999969482422 - - - - - - - 47.62710395269096 - -117.09696795791388 - - 773.7999877929688 - 2379.0 - - - 6.34499979019165 - - - - - - - 47.627051984891295 - -117.0969529543072 - - 774.2000122070312 - 2384.889892578125 - - - 5.763999938964844 - - - - - - - 47.62699599377811 - -117.09693996235728 - - 774.7999877929688 - 2391.18994140625 - - - 6.4770002365112305 - - - - - - - 47.62693991884589 - -117.09692395292222 - - 775.4000244140625 - 2397.530029296875 - - - 6.175000190734863 - - - - - - - 47.62688593938947 - -117.09690492600203 - - 776.0 - 2403.699951171875 - - - 6.122000217437744 - - - - - - - 47.626833971589804 - -117.09688195958734 - - 776.4000244140625 - 2409.739990234375 - - - 6.046999931335449 - - - - - - - 47.626774962991476 - -117.09686092101038 - - 776.7999877929688 - 2416.47998046875 - - - 6.96999979019165 - - - - - - - 47.62672299519181 - -117.09684097208083 - - 777.2000122070312 - 2422.4599609375 - - - 5.668000221252441 - - - - - - - 47.62667295522988 - -117.0968179218471 - - 777.2000122070312 - 2428.280029296875 - - - 6.192999839782716 - - - - - - - 47.62662693858147 - -117.09679294377565 - - 777.4000244140625 - 2433.72998046875 - - - 5.330999851226806 - - - - - - - 47.62658595107496 - -117.09676897153258 - - 777.5999755859375 - 2438.6298828125 - - - 4.921999931335449 - - - - - - - 47.62654094025493 - -117.09675095044076 - - 777.7999877929688 - 2443.81005859375 - - - 5.0370001792907715 - - - - - - - 47.626493917778134 - -117.09673393517733 - - 778.0 - 2449.18994140625 - - - 5.620999813079834 - - - - - - - 47.626446979120374 - -117.09671792574227 - - 778.0 - 2454.550048828125 - - - 5.242000102996826 - - - - - - - 47.62639299966395 - -117.0967079512775 - - 778.2000122070312 - 2460.60009765625 - - - 6.168000221252441 - - - - - - - 47.62634798884392 - -117.09667794406414 - - 778.4000244140625 - 2466.090087890625 - - - 5.359000205993652 - - - - - - - 47.626300966367126 - -117.09664793685079 - - 778.7999877929688 - 2471.780029296875 - - - 6.03499984741211 - - - - - - - 47.626255955547094 - -117.09662295877934 - - 779.2000122070312 - 2477.1298828125 - - - 5.046999931335449 - - - - - - - 47.62620692141354 - -117.09659798070788 - - 779.5999755859375 - 2482.889892578125 - - - 5.940999984741211 - - - - - - - 47.626152941957116 - -117.09657392464578 - - 780.4000244140625 - 2489.159912109375 - - - 5.98799991607666 - - - - - - - 47.626107931137085 - -117.0965589210391 - - 780.7999877929688 - 2494.2900390625 - - - 5.38700008392334 - - - - - - - 47.626066943630576 - -117.09654391743243 - - 781.4000244140625 - 2498.97998046875 - - - 4.5329999923706055 - - - - - - - 47.626017993316054 - -117.0965279918164 - - 781.5999755859375 - 2504.56005859375 - - - 5.775000095367432 - - - - - - - 47.625973988324404 - -117.0965089648962 - - 782.0 - 2509.659912109375 - - - 4.909999847412109 - - - - - - - 47.62592797167599 - -117.09648893214762 - - 782.4000244140625 - 2514.989990234375 - - - 5.617000102996826 - - - - - - - 47.62585395947099 - -117.09645699709654 - - 783.0 - 2523.56005859375 - - - 4.164999961853027 - - - - - - - 47.62581791728735 - -117.09643394686282 - - 783.4000244140625 - 2527.919921875 - - - 4.570000171661377 - - - - - - - 47.625745916739106 - -117.09639597684145 - - 784.0 - 2536.419921875 - - - 4.223999977111816 - - - - - - - 47.625716999173164 - -117.09637795574963 - - 784.4000244140625 - 2539.919921875 - - - 3.5680000782012944 - - - - - - - 47.62565195560455 - -117.09634493105114 - - 785.0 - 2547.56005859375 - - - 3.7090001106262207 - - - - - - - 47.6256219483912 - -117.09633093327284 - - 785.2000122070312 - 2551.06005859375 - - - 3.6700000762939453 - - - - - - - 47.62556193396449 - -117.09631995297968 - - 785.5999755859375 - 2557.780029296875 - - - 3.309999942779541 - - - - - - - 47.625530920922756 - -117.09631299600005 - - 785.7999877929688 - 2561.27001953125 - - - 3.6059999465942383 - - - - - - - 47.62547199614346 - -117.096304949373 - - 786.0 - 2567.85009765625 - - - 3.2320001125335693 - - - - - - - 47.625439977273345 - -117.09630293771625 - - 786.2000122070312 - 2571.409912109375 - - - 3.821000099182129 - - - - - - - 47.625378957018256 - -117.09631098434329 - - 786.4000244140625 - 2578.219970703125 - - - 3.308000087738037 - - - - - - - 47.62534693814814 - -117.09631995297968 - - 786.4000244140625 - 2581.840087890625 - - - 3.7260000705719 - - - - - - - 47.625272925943136 - -117.09633596241474 - - 786.4000244140625 - 2590.159912109375 - - - 4.138999938964844 - - - - - - - 47.62523495592177 - -117.09634493105114 - - 786.4000244140625 - 2594.43994140625 - - - 4.361999988555908 - - - - - - - 47.625160943716764 - -117.09635599516332 - - 786.5999755859375 - 2602.7099609375 - - - 4.033999919891357 - - - - - - - 47.62512599118054 - -117.09635892882943 - - 786.7999877929688 - 2606.610107421875 - - - 4.081999778747559 - - - - - - - 47.625051978975534 - -117.09637099877 - - 787.0 - 2614.8798828125 - - - 4.105999946594238 - - - - - - - 47.6250159367919 - -117.09638197906315 - - 787.0 - 2618.969970703125 - - - 4.144999980926514 - - - - - - - 47.624945947900414 - -117.09640092216432 - - 787.0 - 2626.8798828125 - - - 3.9170000553131104 - - - - - - - 47.62490998953581 - -117.09641098044813 - - 787.0 - 2630.949951171875 - - - 4.135000228881836 - - - - - - - 47.6248449459672 - -117.0964299235493 - - 787.0 - 2638.320068359375 - - - 3.61299991607666 - - - - - - - 47.624816950410604 - -117.0964349526912 - - 787.0 - 2641.4599609375 - - - 3.286999940872193 - - - - - - - 47.62473799288273 - -117.09644492715597 - - 787.4000244140625 - 2650.27001953125 - - - 2.8410000801086426 - - - - - - - 47.62471997179091 - -117.09645196795464 - - 787.4000244140625 - 2652.340087890625 - - - 2.319999933242798 - - - - - - - 47.62463799677789 - -117.09647493436933 - - 787.5999755859375 - 2661.6201171875 - - - 3.078999996185303 - - - - - - - 47.62460698373616 - -117.09648599848151 - - 787.5999755859375 - 2665.169921875 - - - 3.5409998893737793 - - - - - - - 47.62454495765269 - -117.0965039357543 - - 787.5999755859375 - 2672.18994140625 - - - 3.4809999465942387 - - - - - - - 47.624517967924476 - -117.0965139940381 - - 787.5999755859375 - 2675.2900390625 - - - 3.1940000057220463 - - - - - - - 47.624428952112794 - -117.09652991965413 - - 788.0 - 2685.25 - - - 3.26200008392334 - - - - - - - 47.62439995072782 - -117.09653394296765 - - 788.2000122070312 - 2688.489990234375 - - - 3.3940000534057617 - - - - - - - 47.624322921037674 - -117.0965589210391 - - 788.2000122070312 - 2697.260009765625 - - - 2.882999897003174 - - - - - - - 47.6242939196527 - -117.09656897932291 - - 788.4000244140625 - 2700.570068359375 - - - 3.460000038146973 - - - - - - - 47.62423197738826 - -117.09658892825246 - - 788.4000244140625 - 2707.6201171875 - - - 3.48200011253357 - - - - - - - 47.62419895268977 - -117.09659999236465 - - 788.5999755859375 - 2711.3798828125 - - - 3.8610000610351562 - - - - - - - 47.62411496601999 - -117.09662698209286 - - 789.4000244140625 - 2720.93994140625 - - - 3.1549999713897705 - - - - - - - 47.62408093549311 - -117.09663494490087 - - 789.7999877929688 - 2724.77001953125 - - - 3.946000099182129 - - - - - - - 47.62401396408677 - -117.09664894267917 - - 790.4000244140625 - 2732.2900390625 - - - 3.678999900817871 - - - - - - - 47.6239849627018 - -117.09665095433593 - - 790.7999877929688 - 2735.52001953125 - - - 3.3910000324249268 - - - - - - - 47.62389896437526 - -117.09665799513459 - - 791.5999755859375 - 2745.10009765625 - - - 3.1710000038146973 - - - - - - - 47.62386694550514 - -117.09666294045746 - - 791.7999877929688 - 2748.669921875 - - - 3.6400001049041752 - - - - - - - 47.62379695661366 - -117.09665397182107 - - 792.5999755859375 - 2756.489990234375 - - - 3.789999961853028 - - - - - - - 47.62375697493553 - -117.09664894267917 - - 793.2000122070312 - 2760.949951171875 - - - 4.76800012588501 - - - - - - - 47.62368296273053 - -117.09663595072925 - - 794.4000244140625 - 2769.22998046875 - - - 4.078999996185303 - - - - - - - 47.62363996356726 - -117.09662396460772 - - 795.0 - 2774.10009765625 - - - 4.959000110626221 - - - - - - - 47.62355991639197 - -117.09658398292959 - - 796.4000244140625 - 2783.489990234375 - - - 4.428999900817871 - - - - - - - 47.623527981340885 - -117.09655095823109 - - 797.2000122070312 - 2787.830078125 - - - 4.901000022888184 - - - - - - - 47.623445922508836 - -117.09650091826916 - - 798.5999755859375 - 2797.68994140625 - - - 3.2690000534057617 - - - - - - - 47.623421950265765 - -117.09650795906782 - - 798.5999755859375 - 2800.409912109375 - - - 2.7980000972747803 - - - - - - - 47.62334994971752 - -117.09649094380438 - - 799.4000244140625 - 2808.510009765625 - - - 2.013000011444092 - - - - - - - 47.623333940282464 - -117.09647694602609 - - 799.5999755859375 - 2810.580078125 - - - 2.1530001163482666 - - - - - - - 47.62326596304774 - -117.09646294824779 - - 800.2000122070312 - 2818.2099609375 - - - 2.509000062942505 - - - - - - - 47.62323997914791 - -117.09645993076265 - - 800.2000122070312 - 2821.110107421875 - - - 2.9800000190734863 - - - - - - - 47.62315398082137 - -117.0964349526912 - - 801.0 - 2830.860107421875 - - - 2.4509999752044678 - - - - - - - 47.62313495390117 - -117.09643092937768 - - 801.2000122070312 - 2832.989990234375 - - - 2.052000045776367 - - - - - - - 47.62304593808949 - -117.09641098044813 - - 802.2000122070312 - 2843.0 - - - 2.494999885559082 - - - - - - - 47.62302498333156 - -117.09640997461975 - - 802.4000244140625 - 2845.340087890625 - - - 2.4110000133514404 - - - - - - - 47.62293898500502 - -117.09640293382108 - - 803.2000122070312 - 2854.909912109375 - - - 3.1449999809265137 - - - - - - - 47.62291492894292 - -117.0964019279927 - - 803.4000244140625 - 2857.580078125 - - - 2.7890000343322754 - - - - - - - 47.622842928394675 - -117.09642196074128 - - 803.5999755859375 - 2865.72998046875 - - - 2.7109999656677246 - - - - - - - 47.62282398529351 - -117.09643595851958 - - 803.4000244140625 - 2868.090087890625 - - - 2.3959999084472656 - - - - - - - 47.622754918411374 - -117.09646596573293 - - 804.0 - 2876.080078125 - - - 2.569999933242798 - - - - - - - 47.622731951996684 - -117.09647795185447 - - 804.2000122070312 - 2878.800048828125 - - - 2.9830000400543213 - - - - - - - 47.622670931741595 - -117.09652497433126 - - 804.4000244140625 - 2886.43994140625 - - - 2.5390000343322754 - - - - - - - 47.62265391647816 - -117.09654592908919 - - 804.2000122070312 - 2888.89990234375 - - - 2.507999897003174 - - - - - - - 47.622586945071816 - -117.09661692380905 - - 804.2000122070312 - 2898.070068359375 - - - 2.265000104904175 - - - - - - - 47.62257294729352 - -117.096629999578 - - 804.2000122070312 - 2899.909912109375 - - - 1.9589999914169312 - - - - - - - 47.622497929260135 - -117.09667794406414 - - 805.2000122070312 - 2908.989990234375 - - - 2.240999937057495 - - - - - - - 47.622474962845445 - -117.0966989826411 - - 805.4000244140625 - 2912.0 - - - 3.1730000972747807 - - - - - - - 47.622408997267485 - -117.09676897153258 - - 805.4000244140625 - 2921.030029296875 - - - 2.9730000495910645 - - - - - - - 47.62238192372024 - -117.09678892046213 - - 805.5999755859375 - 2924.3798828125 - - - 3.500999927520752 - - - - - - - 47.622304977849126 - -117.09684893488884 - - 806.0 - 2934.06005859375 - - - 3.1789999008178715 - - - - - - - 47.62227195315063 - -117.09686695598066 - - 806.0 - 2937.969970703125 - - - 4.0269999504089355 - - - - - - - 47.62220699340105 - -117.09691498428583 - - 805.7999877929688 - 2946.050048828125 - - - 3.956000089645386 - - - - - - - 47.622172962874174 - -117.0969389565289 - - 805.5999755859375 - 2950.239990234375 - - - 4.368000030517578 - - - - - - - 47.62210297398269 - -117.09699293598533 - - 805.2000122070312 - 2959.02001953125 - - - 2.888000011444092 - - - - - - - 47.62208495289087 - -117.09700592793524 - - 805.0 - 2961.239990234375 - - - 2.3389999866485596 - - - - - - - 47.62200498953462 - -117.09706393070519 - - 804.4000244140625 - 2971.14990234375 - - - 3.2699999809265137 - - - - - - - 47.62197498232126 - -117.09707298316061 - - 804.5999755859375 - 2974.550048828125 - - - 3.4660000801086426 - - - - - - - 47.621916979551315 - -117.09709293209016 - - 804.5999755859375 - 2981.169921875 - - - 3.305999994277954 - - - - - - - 47.62188596650958 - -117.09710399620235 - - 804.7999877929688 - 2984.719970703125 - - - 3.617000102996826 - - - - - - - 47.62180399149656 - -117.09713593125343 - - 804.7999877929688 - 2994.14990234375 - - - 3.0759999752044678 - - - - - - - 47.62177599593997 - -117.0971379429102 - - 805.0 - 2997.260009765625 - - - 3.319000005722046 - - - - - - - 47.62169192545116 - -117.0971429720521 - - 805.5999755859375 - 3006.610107421875 - - - 3.0720000267028813 - - - - - - - 47.62166694737971 - -117.09714992903173 - - 805.5999755859375 - 3009.43994140625 - - - 2.931999921798706 - - - - - - - 47.62157893739641 - -117.09717197343707 - - 805.7999877929688 - 3019.360107421875 - - - 3.2839999198913574 - - - - - - - 47.62154893018305 - -117.09717691875994 - - 805.7999877929688 - 3022.719970703125 - - - 3.4679999351501465 - - - - - - - 47.621484976261854 - -117.0971839595586 - - 806.2000122070312 - 3029.85009765625 - - - 3.532000064849854 - - - - - - - 47.62145295739174 - -117.09718798287213 - - 806.2000122070312 - 3033.419921875 - - - 3.614000082015991 - - - - - - - 47.6213859859854 - -117.0971839595586 - - 806.7999877929688 - 3040.8798828125 - - - 3.6689999103546143 - - - - - - - 47.621355978772044 - -117.0971839595586 - - 807.0 - 3044.219970703125 - - - 3.473999977111817 - - - - - - - 47.62128096073866 - -117.0972069259733 - - 807.0 - 3052.72998046875 - - - 2.799000024795532 - - - - - - - 47.62126293964684 - -117.09720994345844 - - 807.0 - 3054.75 - - - 2.0889999866485596 - - - - - - - 47.62119395658374 - -117.0972029864788 - - 807.5999755859375 - 3062.429931640625 - - - 1.912999987602234 - - - - - - - 47.62117199599743 - -117.09719493985176 - - 807.7999877929688 - 3064.949951171875 - - - 2.5940001010894775 - - - - - - - 47.62111198157072 - -117.09717297926545 - - 808.2000122070312 - 3071.830078125 - - - 3.3410000801086426 - - - - - - - 47.62107593938708 - -117.0971569698304 - - 808.5999755859375 - 3076.010009765625 - - - 4.026000022888184 - - - - - - - 47.621011985465884 - -117.0971289742738 - - 809.2000122070312 - 3083.429931640625 - - - 3.88100004196167 - - - - - - - 47.6209869235754 - -117.0971149764955 - - 809.4000244140625 - 3086.39990234375 - - - 2.7219998836517334 - - - - - - - 47.62092397548258 - -117.09707097150385 - - 810.4000244140625 - 3094.139892578125 - - - 3.839999914169312 - - - - - - - 47.620888939127326 - -117.0970409642905 - - 811.2000122070312 - 3098.639892578125 - - - 4.992000102996826 - - - - - - - 47.62083194218576 - -117.09698899649084 - - 812.2000122070312 - 3106.090087890625 - - - 3.7170000076293945 - - - - - - - 47.620801934972405 - -117.09695898927748 - - 812.7999877929688 - 3110.110107421875 - - - 4.099999904632568 - - - - - - - 47.6207469496876 - -117.09690693765879 - - 813.5999755859375 - 3117.3701171875 - - - 3.565999984741211 - - - - - - - 47.62071995995939 - -117.09688195958734 - - 814.0 - 3120.909912109375 - - - 3.3320000171661377 - - - - - - - 47.62065692804754 - -117.09683493711054 - - 814.4000244140625 - 3128.760009765625 - - - 3.9679999351501465 - - - - - - - 47.62061895802617 - -117.09680794738233 - - 814.7999877929688 - 3133.449951171875 - - - 4.581999778747559 - - - - - - - 47.620562966912985 - -117.09675899706781 - - 815.0 - 3140.679931640625 - - - 3.7909998893737793 - - - - - - - 47.62053396552801 - -117.09673393517733 - - 815.2000122070312 - 3144.409912109375 - - - 3.427000045776367 - - - - - - - 47.620477974414825 - -117.0966469310224 - - 816.2000122070312 - 3153.43994140625 - - - 4.646999835968018 - - - - - - - 47.620451990514994 - -117.09660192020237 - - 816.7999877929688 - 3157.889892578125 - - - 4.586999893188477 - - - - - - - 47.62039599940181 - -117.09653293713927 - - 816.7999877929688 - 3166.0 - - - 3.9779999256134033 - - - - - - - 47.620371943339705 - -117.09649697877467 - - 816.7999877929688 - 3169.800048828125 - - - 4.013000011444092 - - - - - - - 47.62032098136842 - -117.09639798849821 - - 817.0 - 3179.14990234375 - - - 2.9630000591278076 - - - - - - - 47.620306983590126 - -117.09636798128486 - - 817.2000122070312 - 3181.889892578125 - - - 3.197000026702881 - - - - - - - 47.62024998664856 - -117.0962689910084 - - 817.2000122070312 - 3191.669921875 - - - 2.427000045776367 - - - - - - - 47.62023297138512 - -117.09624795243144 - - 817.0 - 3194.1298828125 - - - 2.5490000247955322 - - - - - - - 47.62018494307995 - -117.0961479563266 - - 817.4000244140625 - 3203.35009765625 - - - 2.2820000648498535 - - - - - - - 47.620174968615174 - -117.09612096659839 - - 817.4000244140625 - 3205.659912109375 - - - 2.3589999675750732 - - - - - - - 47.62012694031 - -117.09604896605015 - - 817.4000244140625 - 3213.260009765625 - - - 2.5239999294281006 - - - - - - - 47.62010598555207 - -117.09602197632194 - - 817.2000122070312 - 3216.360107421875 - - - 3.1730000972747807 - - - - - - - 47.6200579572469 - -117.09594394080341 - - 817.2000122070312 - 3224.2900390625 - - - 2.638000011444092 - - - - - - - 47.62003398500383 - -117.09590597078204 - - 817.2000122070312 - 3228.18994140625 - - - 3.933000087738037 - - - - - - - 47.619982939213514 - -117.0958289410919 - - 817.5999755859375 - 3236.300048828125 - - - 4.006999969482422 - - - - - - - 47.61995393782854 - -117.09578594192863 - - 817.7999877929688 - 3240.860107421875 - - - 4.7210001945495605 - - - - - - - 47.6198919955641 - -117.09570296108723 - - 817.7999877929688 - 3250.159912109375 - - - 4.5289998054504395 - - - - - - - 47.61985997669399 - -117.09564998745918 - - 817.7999877929688 - 3255.5 - - - 5.512000083923339 - - - - - - - 47.61982393451035 - -117.09559894166887 - - 817.7999877929688 - 3261.0400390625 - - - 5.390999794006348 - - - - - - - 47.619787976145744 - -117.0955469738692 - - 817.5999755859375 - 3266.639892578125 - - - 5.803999900817871 - - - - - - - 47.61975394561887 - -117.09549693390727 - - 817.7999877929688 - 3271.969970703125 - - - 5.196000099182128 - - - - - - - 47.619723938405514 - -117.09544898942113 - - 817.7999877929688 - 3276.8798828125 - - - 4.99399995803833 - - - - - - - 47.61966694146395 - -117.09534899331629 - - 818.0 - 3286.719970703125 - - - 4.8460001945495605 - - - - - - - 47.619638945907354 - -117.09529099054635 - - 818.0 - 3292.070068359375 - - - 5.598000049591064 - - - - - - - 47.61961296200752 - -117.0952279586345 - - 817.7999877929688 - 3297.6201171875 - - - 5.381999969482421 - - - - - - - 47.61958396062255 - -117.0951589755714 - - 817.5999755859375 - 3303.72998046875 - - - 6.296000003814697 - - - - - - - 47.6195589825511 - -117.09508295170963 - - 817.5999755859375 - 3310.080078125 - - - 6.057000160217285 - - - - - - - 47.619535932317376 - -117.09500893950462 - - 817.4000244140625 - 3316.199951171875 - - - 6.479000091552734 - - - - - - - 47.61951397173107 - -117.09493492729962 - - 817.0 - 3322.280029296875 - - - 6.0229997634887695 - - - - - - - 47.61949695646763 - -117.09486099891365 - - 816.7999877929688 - 3328.159912109375 - - - 5.857999801635742 - - - - - - - 47.619488993659616 - -117.09478095173836 - - 816.5999755859375 - 3334.239990234375 - - - 5.76800012588501 - - - - - - - 47.619488993659616 - -117.09468992426991 - - 816.2000122070312 - 3341.080078125 - - - 7.26200008392334 - - - - - - - 47.61950198560953 - -117.09459193982184 - - 816.2000122070312 - 3348.580078125 - - - 7.26800012588501 - - - - - - - 47.6195209287107 - -117.09448892623186 - - 816.2000122070312 - 3356.610107421875 - - - 8.378000259399414 - - - - - - - 47.6195449847728 - -117.09438599646091 - - 815.7999877929688 - 3364.800048828125 - - - 8.069000244140625 - - - - - - - 47.619574991986156 - -117.0942849945277 - - 815.5999755859375 - 3373.090087890625 - - - 8.251999855041504 - - - - - - - 47.619614973664284 - -117.09417695179582 - - 815.4000244140625 - 3382.35009765625 - - - 8.970000267028809 - - - - - - - 47.61965394951403 - -117.09407494403422 - - 815.0 - 3391.159912109375 - - - 6.333000183105469 - - - - - - - 47.61969493702054 - -117.09396799094975 - - 814.5999755859375 - 3400.39990234375 - - - 15.51200008392334 - - - - - - - 47.61973097920418 - -117.09386195987463 - - 814.2000122070312 - 3409.320068359375 - - - 9.20199966430664 - - - - - - - 47.61976492591202 - -117.09375492297113 - - 813.5999755859375 - 3418.2099609375 - - - 8.73900032043457 - - - - - - - 47.619793927296996 - -117.0936549268663 - - 813.0 - 3426.389892578125 - - - 6.6020002365112305 - - - - - - - 47.619829969480634 - -117.09353799931705 - - 812.4000244140625 - 3436.050048828125 - - - 9.194000244140625 - - - - - - - 47.61986592784524 - -117.09342492744327 - - 811.7999877929688 - 3445.43994140625 - - - 9.852999687194824 - - - - - - - 47.6199009642005 - -117.09331596270204 - - 811.0 - 3454.510009765625 - - - 8.73900032043457 - - - - - - - 47.619938934221864 - -117.09320993162692 - - 810.2000122070312 - 3463.530029296875 - - - 9.222000122070312 - - - - - - - 47.619978999719024 - -117.09310691803694 - - 809.7999877929688 - 3472.4599609375 - - - 8.569000244140625 - - - - - - - 47.62001898139715 - -117.09300792776048 - - 809.2000122070312 - 3481.1298828125 - - - 8.644000053405762 - - - - - - - 47.6200629863888 - -117.0929019805044 - - 808.7999877929688 - 3490.47998046875 - - - 9.600000381469727 - - - - - - - 47.62010296806693 - -117.09279594942927 - - 808.2000122070312 - 3499.60009765625 - - - 9.161999702453613 - - - - - - - 47.6201409380883 - -117.0926839672029 - - 808.0 - 3509.02001953125 - - - 9.1899995803833 - - - - - - - 47.62017295695841 - -117.09257097914815 - - 807.5999755859375 - 3518.22998046875 - - - 9.534000396728516 - - - - - - - 47.62020195834339 - -117.09244994446635 - - 808.0 - 3527.8798828125 - - - 8.812999725341797 - - - - - - - 47.62022199109197 - -117.0923279877752 - - 808.2000122070312 - 3537.320068359375 - - - 10.614999771118164 - - - - - - - 47.620220985263586 - -117.09219496697187 - - 808.5999755859375 - 3547.320068359375 - - - 9.831000328063965 - - - - - - - 47.62020296417177 - -117.09206999279559 - - 808.4000244140625 - 3556.929931640625 - - - 9.531000137329102 - - - - - - - 47.620180919766426 - -117.09194392897189 - - 808.2000122070312 - 3566.7099609375 - - - 9.534000396728516 - - - - - - - 47.62013892643154 - -117.09183194674551 - - 808.2000122070312 - 3576.340087890625 - - - 10.092000007629395 - - - - - - - 47.62009693309665 - -117.09173295646906 - - 808.4000244140625 - 3585.1201171875 - - - 8.383000373840332 - - - - - - - 47.620050916448236 - -117.09163798950613 - - 808.4000244140625 - 3593.909912109375 - - - 9.121000289916992 - - - - - - - 47.620004983618855 - -117.09154897369444 - - 808.7999877929688 - 3602.330078125 - - - 8.13599967956543 - - - - - - - 47.619958966970444 - -117.09146196953952 - - 809.0 - 3610.6298828125 - - - 8.638999938964844 - - - - - - - 47.61991395615041 - -117.0913749653846 - - 809.4000244140625 - 3618.860107421875 - - - 7.9710001945495605 - - - - - - - 47.619872968643904 - -117.0912959240377 - - 809.2000122070312 - 3626.35009765625 - - - 7.757999897003174 - - - - - - - 47.619831981137395 - -117.09121998399496 - - 808.5999755859375 - 3633.659912109375 - - - 7.007999897003174 - - - - - - - 47.619787976145744 - -117.09113599732518 - - 808.0 - 3641.64990234375 - - - 8.303000450134277 - - - - - - - 47.619743971154094 - -117.09106198512018 - - 807.4000244140625 - 3649.050048828125 - - - 7.184999942779542 - - - - - - - 47.619701977819204 - -117.09098998457193 - - 806.7999877929688 - 3656.199951171875 - - - 7.331999778747559 - - - - - - - 47.619660990312696 - -117.09091999568045 - - 806.4000244140625 - 3663.159912109375 - - - 6.975999832153321 - - - - - - - 47.619620924815536 - -117.0908569637686 - - 806.0 - 3669.659912109375 - - - 6.489999771118164 - - - - - - - 47.619575997814536 - -117.09079099819064 - - 805.5999755859375 - 3676.7099609375 - - - 6.88100004196167 - - - - - - - 47.619530986994505 - -117.09073492325842 - - 805.5999755859375 - 3683.25 - - - 6.734000205993653 - - - - - - - 47.61947591789067 - -117.09069393575191 - - 805.4000244140625 - 3690.090087890625 - - - 6.800000190734863 - - - - - - - 47.61941699311137 - -117.09065395407379 - - 805.4000244140625 - 3697.31005859375 - - - 7.370999813079835 - - - - - - - 47.619358990341425 - -117.09062092937529 - - 805.7999877929688 - 3704.219970703125 - - - 6.7870001792907715 - - - - - - - 47.619296964257956 - -117.09060793742537 - - 806.0 - 3711.179931640625 - - - 7.0329999923706055 - - - - - - - 47.619233932346106 - -117.09060098044574 - - 806.0 - 3718.2099609375 - - - 6.741000175476075 - - - - - - - 47.61916394345462 - -117.09059997461736 - - 806.0 - 3725.989990234375 - - - 8.098999977111816 - - - - - - - 47.6191099639982 - -117.09060894325376 - - 806.0 - 3732.030029296875 - - - 5.918000221252441 - - - - - - - 47.61906897649169 - -117.09063693881035 - - 805.5999755859375 - 3737.050048828125 - - - 5.086999893188476 - - - - - - - 47.61900099925697 - -117.09068396128714 - - 805.2000122070312 - 3745.39990234375 - - - 4.074999809265137 - - - - - - - 47.61897996068001 - -117.09070592187345 - - 805.0 - 3748.260009765625 - - - 3.0409998893737793 - - - - - - - 47.618907960131764 - -117.0907779224217 - - 804.4000244140625 - 3757.919921875 - - - 0.6880000233650208 - - - - - - - 47.618889939039946 - -117.09079996682703 - - 804.2000122070312 - 3760.52001953125 - - - 2.6989998817443848 - - - - - - - 47.618840988725424 - -117.09086098708212 - - 803.5999755859375 - 3767.639892578125 - - - 2.3519999980926514 - - - - - - - 47.6188179384917 - -117.09088294766843 - - 803.5999755859375 - 3770.679931640625 - - - 3.1619999408721924 - - - - - - - 47.61876496486366 - -117.09093592129648 - - 802.7999877929688 - 3777.800048828125 - - - 3.500999927520752 - - - - - - - 47.61873998679221 - -117.09096391685307 - - 802.4000244140625 - 3781.280029296875 - - - 3.5869998931884766 - - - - - - - 47.61868097819388 - -117.09102493710816 - - 801.4000244140625 - 3789.2900390625 - - - 3.9409999847412114 - - - - - - - 47.618652982637286 - -117.09105393849313 - - 801.2000122070312 - 3793.090087890625 - - - 3.9140000343322754 - - - - - - - 47.618585927411914 - -117.09113297984004 - - 800.2000122070312 - 3802.610107421875 - - - 3.13100004196167 - - - - - - - 47.618564972653985 - -117.09115996956825 - - 799.7999877929688 - 3805.7099609375 - - - 3.246000051498413 - - - - - - - 47.61849892325699 - -117.09122995845973 - - 799.4000244140625 - 3814.739990234375 - - - 4.480999946594238 - - - - - - - 47.61846195906401 - -117.09125594235957 - - 799.2000122070312 - 3819.2900390625 - - - 4.665999889373779 - - - - - - - 47.61841292493045 - -117.09128997288644 - - 799.0 - 3825.31005859375 - - - 5.703999996185303 - - - - - - - 47.61835693381727 - -117.09132995456457 - - 799.4000244140625 - 3832.219970703125 - - - 7.2170000076293945 - - - - - - - 47.618304966017604 - -117.09136893041432 - - 799.7999877929688 - 3838.7099609375 - - - 6.269000053405762 - - - - - - - 47.61825098656118 - -117.09141092374921 - - 800.0 - 3845.489990234375 - - - 7.021999835968018 - - - - - - - 47.61819692328572 - -117.09145694039762 - - 800.4000244140625 - 3852.419921875 - - - 6.64300012588501 - - - - - - - 47.618132969364524 - -117.09150295704603 - - 800.5999755859375 - 3860.330078125 - - - 8.223999977111816 - - - - - - - 47.618071949109435 - -117.09154897369444 - - 800.4000244140625 - 3867.93994140625 - - - 7.413000106811523 - - - - - - - 47.61801193468273 - -117.09159499034286 - - 800.0 - 3875.4599609375 - - - 7.795000076293945 - - - - - - - 47.61794898658991 - -117.09163497202098 - - 799.7999877929688 - 3883.080078125 - - - 7.27400016784668 - - - - - - - 47.617881931364536 - -117.09166598506272 - - 799.5999755859375 - 3890.889892578125 - - - 8.392999649047852 - - - - - - - 47.617812948301435 - -117.09169096313417 - - 799.4000244140625 - 3898.780029296875 - - - 7.5219998359680185 - - - - - - - 47.617746982723475 - -117.091716947034 - - 799.0 - 3906.3798828125 - - - 7.796999931335449 - - - - - - - 47.61767598800361 - -117.09173899143934 - - 798.5999755859375 - 3914.43994140625 - - - 7.861000061035157 - - - - - - - 47.61760599911213 - -117.09175793454051 - - 798.2000122070312 - 3922.360107421875 - - - 8.182999610900879 - - - - - - - 47.617537938058376 - -117.09177796728909 - - 798.0 - 3930.06005859375 - - - 7.271999835968018 - - - - - - - 47.617468954995275 - -117.09179498255253 - - 797.5999755859375 - 3937.840087890625 - - - 8.265000343322754 - - - - - - - 47.61739896610379 - -117.09180898033082 - - 797.4000244140625 - 3945.699951171875 - - - 7.4019999504089355 - - - - - - - 47.61732897721231 - -117.09182197228074 - - 797.2000122070312 - 3953.5400390625 - - - 8.300000190734863 - - - - - - - 47.61725898832083 - -117.09183597005904 - - 797.0 - 3961.389892578125 - - - 7.988999843597413 - - - - - - - 47.617189921438694 - -117.0918519794941 - - 797.0 - 3969.159912109375 - - - 7.703999996185303 - - - - - - - 47.61712194420397 - -117.0918739400804 - - 796.7999877929688 - 3976.89990234375 - - - 7.392000198364258 - - - - - - - 47.61704994365573 - -117.0918929670006 - - 796.7999877929688 - 3985.030029296875 - - - 8.427000045776367 - - - - - - - 47.61698096059263 - -117.09190797060728 - - 796.5999755859375 - 3992.780029296875 - - - 7.558000087738037 - - - - - - - 47.616911977529526 - -117.0919259916991 - - 796.2000122070312 - 4000.570068359375 - - - 8.22599983215332 - - - - - - - 47.61684198863804 - -117.09194191731513 - - 796.0 - 4008.449951171875 - - - 7.458000183105469 - - - - - - - 47.61677392758429 - -117.09195398725569 - - 795.7999877929688 - 4016.06005859375 - - - 7.889999866485596 - - - - - - - 47.61670192703605 - -117.0919709187001 - - 795.4000244140625 - 4024.169921875 - - - 7.6479997634887695 - - - - - - - 47.61662699282169 - -117.09198692813516 - - 795.2000122070312 - 4032.590087890625 - - - 9.088000297546387 - - - - - - - 47.61655398644507 - -117.09200696088374 - - 794.7999877929688 - 4040.85009765625 - - - 7.607999801635743 - - - - - - - 47.616480980068445 - -117.09203596226871 - - 794.2000122070312 - 4049.25 - - - 9.017000198364258 - - - - - - - 47.61640797369182 - -117.09207493811846 - - 794.0 - 4057.8798828125 - - - 8.354000091552734 - - - - - - - 47.61633597314358 - -117.09212095476687 - - 794.0 - 4066.60009765625 - - - 9.045999526977539 - - - - - - - 47.61627696454525 - -117.09216697141528 - - 793.7999877929688 - 4074.02001953125 - - - 7.206999778747559 - - - - - - - 47.616227930411696 - -117.09220997057855 - - 793.5999755859375 - 4080.35009765625 - - - 6.5370001792907715 - - - - - - - 47.61618694290519 - -117.09224794059992 - - 793.4000244140625 - 4085.72998046875 - - - 5.041999816894531 - - - - - - - 47.61614796705544 - -117.09228792227805 - - 793.2000122070312 - 4091.010009765625 - - - 5.6620001792907715 - - - - - - - 47.61610597372055 - -117.09235799498856 - - 792.4000244140625 - 4098.0400390625 - - - 0.3199999928474426 - - - - - - - 47.61606892570853 - -117.09247098304331 - - 790.5999755859375 - 4107.47998046875 - - - 9.630999565124512 - - - - - - - 47.61602299287915 - -117.09253996610641 - - 790.0 - 4114.77001953125 - - - 3.5969998836517334 - - - - - - - 47.6159929856658 - -117.09257793612778 - - 789.7999877929688 - 4119.16015625 - - - 4.4679999351501465 - - - - - - - 47.61592693626881 - -117.09264792501926 - - 789.7999877929688 - 4128.18994140625 - - - 4.428999900817871 - - - - - - - 47.61588896624744 - -117.09268799051642 - - 789.5999755859375 - 4133.3798828125 - - - 5.374000072479248 - - - - - - - 47.61584797874093 - -117.09272897802293 - - 789.2000122070312 - 4138.8798828125 - - - 5.25600004196167 - - - - - - - 47.61580497957766 - -117.0927759166807 - - 788.5999755859375 - 4144.81982421875 - - - 6.297999858856201 - - - - - - - 47.61576198041439 - -117.09282495081425 - - 788.0 - 4150.85986328125 - - - 5.809000015258789 - - - - - - - 47.6157149579376 - -117.09287893027067 - - 787.4000244140625 - 4157.47998046875 - - - 6.822000026702881 - - - - - - - 47.61565997265279 - -117.092937938869 - - 786.7999877929688 - 4165.02978515625 - - - 7.236000061035157 - - - - - - - 47.615601969882846 - -117.09300298243761 - - 786.0 - 4173.1201171875 - - - 8.517000198364258 - - - - - - - 47.6155439671129 - -117.09306794218719 - - 785.0 - 4181.2099609375 - - - 7.94000005722046 - - - - - - - 47.61547992937267 - -117.09313893690705 - - 784.0 - 4190.10986328125 - - - 9.199000358581543 - - - - - - - 47.61541396379471 - -117.09321294911206 - - 783.2000122070312 - 4199.31982421875 - - - 8.965999603271484 - - - - - - - 47.615343974903226 - -117.09328595548868 - - 782.4000244140625 - 4208.83984375 - - - 9.484999656677246 - - - - - - - 47.6152709685266 - -117.09336298517883 - - 781.4000244140625 - 4218.81005859375 - - - 9.65999984741211 - - - - - - - 47.615190921351314 - -117.09343993104994 - - 780.0 - 4229.419921875 - - - 11.043000221252441 - - - - - - - 47.615190921351314 - -117.09343993104994 - - 780.0 - 4229.419921875 - - - 0.0 - - - - - - - 47.61510391719639 - -117.09350899793208 - - 778.7999877929688 - 4240.39990234375 - - - 11.456999778747559 - - - - - - - 47.61510391719639 - -117.09350899793208 - - 778.7999877929688 - 4240.39990234375 - - - 0.0 - - - - - - - 47.61500492691994 - -117.09353297017515 - - 778.2000122070312 - 4251.5498046875 - - - 11.4399995803833 - - - - - - - 47.61500492691994 - -117.09353297017515 - - 778.2000122070312 - 4251.5498046875 - - - 0.0 - - - - - - - 47.61490593664348 - -117.09355895407498 - - 777.4000244140625 - 4262.72998046875 - - - 11.489999771118164 - - - - - - - 47.61490593664348 - -117.09355895407498 - - 777.4000244140625 - 4262.72998046875 - - - 0.0 - - - - - - - 47.614807952195406 - -117.09357999265194 - - 776.5999755859375 - 4273.740234375 - - - 11.177000045776367 - - - - - - - 47.614807952195406 - -117.09357999265194 - - 776.5999755859375 - 4273.740234375 - - - 0.0 - - - - - - - 47.61470493860543 - -117.09360295906663 - - 776.0 - 4285.31982421875 - - - 12.102000236511232 - - - - - - - 47.61470493860543 - -117.09360295906663 - - 776.0 - 4285.31982421875 - - - 0.0 - - - - - - - 47.6145959738642 - -117.09361896850169 - - 775.7999877929688 - 4297.5 - - - 13.668000221252443 - - - - - - - 47.6145959738642 - -117.09361896850169 - - 775.7999877929688 - 4297.5 - - - 0.0 - - - - - - - 47.61448793113232 - -117.0936369895935 - - 775.4000244140625 - 4309.580078125 - - - 12.482999801635742 - - - - - - - 47.61448793113232 - -117.0936369895935 - - 775.4000244140625 - 4309.580078125 - - - 0.0 - - - - - - - 47.61438894085586 - -117.0936509873718 - - 774.7999877929688 - 4320.64013671875 - - - 11.517999649047852 - - - - - - - 47.61438894085586 - -117.0936509873718 - - 774.7999877929688 - 4320.64013671875 - - - 0.0 - - - - - - - 47.61427293531597 - -117.0936649851501 - - 774.2000122070312 - 4333.580078125 - - - 13.621000289916992 - - - - - - - 47.61427293531597 - -117.0936649851501 - - 774.2000122070312 - 4333.580078125 - - - 0.0 - - - - - - - 47.614158941432834 - -117.0936819165945 - - 773.2000122070312 - 4346.31982421875 - - - 13.241999626159668 - - - - - - - 47.614158941432834 - -117.0936819165945 - - 773.2000122070312 - 4346.31982421875 - - - 0.0 - - - - - - - 47.61404394172132 - -117.09370295517147 - - 772.0 - 4359.2001953125 - - - 13.281999588012695 - - - - - - - 47.61404394172132 - -117.09370295517147 - - 772.0 - 4359.2001953125 - - - 0.0 - - - - - - - 47.613920979201794 - -117.09372298792005 - - 771.0 - 4372.9599609375 - - - 14.272000312805178 - - - - - - - 47.613920979201794 - -117.09372298792005 - - 771.0 - 4372.9599609375 - - - 0.0 - - - - - - - 47.61380698531866 - -117.09374193102121 - - 769.7999877929688 - 4385.72021484375 - - - 13.177000045776367 - - - - - - - 47.61380698531866 - -117.09374193102121 - - 769.7999877929688 - 4385.72021484375 - - - 0.0 - - - - - - - 47.61369198560715 - -117.09375894628465 - - 768.7999877929688 - 4398.56982421875 - - - 13.440999984741211 - - - - - - - 47.61369198560715 - -117.09375894628465 - - 768.7999877929688 - 4398.56982421875 - - - 0.0 - - - - - - - 47.613580925390124 - -117.09376598708332 - - 767.5999755859375 - 4410.919921875 - - - 12.86699962615967 - - - - - - - 47.613580925390124 - -117.09376598708332 - - 767.5999755859375 - 4410.919921875 - - - 0.0 - - - - - - - 47.6134769897908 - -117.09375995211303 - - 766.4000244140625 - 4422.490234375 - - - 11.93000030517578 - - - - - - - 47.6134769897908 - -117.09375995211303 - - 766.4000244140625 - 4422.490234375 - - - 0.0 - - - - - - - 47.613366935402155 - -117.09371192380786 - - 765.7999877929688 - 4435.240234375 - - - 13.078000068664553 - - - - - - - 47.613366935402155 - -117.09371192380786 - - 765.7999877929688 - 4435.240234375 - - - 0.0 - - - - - - - 47.613255959004164 - -117.0936599560082 - - 764.5999755859375 - 4448.18994140625 - - - 13.250000000000002 - - - - - - - 47.613255959004164 - -117.0936599560082 - - 764.5999755859375 - 4448.18994140625 - - - 0.0 - - - - - - - 47.61314498260617 - -117.09359792992473 - - 763.4000244140625 - 4461.3798828125 - - - 13.713000297546387 - - - - - - - 47.61314498260617 - -117.09359792992473 - - 763.4000244140625 - 4461.3798828125 - - - 0.0 - - - - - - - 47.61303794570267 - -117.09352299571037 - - 762.5999755859375 - 4474.5400390625 - - - 13.461000442504885 - - - - - - - 47.61303794570267 - -117.09352299571037 - - 762.5999755859375 - 4474.5400390625 - - - 0.0 - - - - - - - 47.61293392628431 - -117.09342299960554 - - 762.2000122070312 - 4488.33984375 - - - 14.67300033569336 - - - - - - - 47.61293392628431 - -117.09342299960554 - - 762.2000122070312 - 4488.33984375 - - - 0.0 - - - - - - - 47.612831918522716 - -117.09331395104527 - - 762.2000122070312 - 4502.330078125 - - - 13.812000274658205 - - - - - - - 47.612831918522716 - -117.09331395104527 - - 762.2000122070312 - 4502.330078125 - - - 0.0 - - - - - - - 47.61273493990302 - -117.0932019688189 - - 763.2000122070312 - 4516.009765625 - - - 14.253000259399414 - - - - - - - 47.61273493990302 - -117.0932019688189 - - 763.2000122070312 - 4516.009765625 - - - 0.0 - - - - - - - 47.61264399625361 - -117.09308998659253 - - 763.4000244140625 - 4529.169921875 - - - 13.654999732971191 - - - - - - - 47.61264399625361 - -117.09308998659253 - - 763.4000244140625 - 4529.169921875 - - - 0.0 - - - - - - - 47.61255498044193 - -117.09297699853778 - - 764.2000122070312 - 4542.22021484375 - - - 14.538999557495117 - - - - - - - 47.61255498044193 - -117.09297699853778 - - 764.2000122070312 - 4542.22021484375 - - - 0.0 - - - - - - - 47.61247292160988 - -117.09287691861391 - - 764.5999755859375 - 4554.02978515625 - - - 12.347999572753906 - - - - - - - 47.61247292160988 - -117.09287691861391 - - 764.5999755859375 - 4554.02978515625 - - - 0.0 - - - - - - - 47.61238792911172 - -117.09277097135782 - - 764.5999755859375 - 4566.39990234375 - - - 12.640000343322754 - - - - - - - 47.61238792911172 - -117.09277097135782 - - 764.5999755859375 - 4566.39990234375 - - - 0.0 - - - - - - - 47.6123059540987 - -117.09267499856651 - - 764.5999755859375 - 4578.02001953125 - - - 12.22700023651123 - - - - - - - 47.6123059540987 - -117.09267499856651 - - 764.5999755859375 - 4578.02001953125 - - - 0.0 - - - - - - - 47.612226996570826 - -117.09259193390608 - - 764.2000122070312 - 4588.7998046875 - - - 10.850000381469727 - - - - - - - 47.612226996570826 - -117.09259193390608 - - 764.2000122070312 - 4588.7998046875 - - - 0.0 - - - - - - - 47.612134963274 - -117.09254692308605 - - 762.2000122070312 - 4599.56982421875 - - - 11.461000442504883 - - - - - - - 47.612134963274 - -117.09254692308605 - - 762.2000122070312 - 4599.56982421875 - - - 0.0 - - - - - - - 47.61204292997718 - -117.09251096472144 - - 760.4000244140625 - 4610.14990234375 - - - 10.998999595642088 - - - - - - - 47.61204292997718 - -117.09251096472144 - - 760.4000244140625 - 4610.14990234375 - - - 0.0 - - - - - - - 47.61194393970072 - -117.0925129763782 - - 758.7999877929688 - 4621.16015625 - - - 11.279000282287598 - - - - - - - 47.611860958859324 - -117.09255295805633 - - 757.4000244140625 - 4630.8701171875 - - - 9.130999565124512 - - - - - - - 47.61176993139088 - -117.09259998053312 - - 756.0 - 4641.580078125 - - - 11.293000221252441 - - - - - - - 47.6116999424994 - -117.09266594611108 - - 755.0 - 4650.81005859375 - - - 8.255999565124512 - - - - - - - 47.61162995360792 - -117.09274096414447 - - 755.0 - 4660.419921875 - - - 10.946000099182129 - - - - - - - 47.61162995360792 - -117.09274096414447 - - 755.0 - 4660.419921875 - - - 0.0 - - - - - - - 47.61155493557453 - -117.09283794276416 - - 754.7999877929688 - 4671.5 - - - 11.847999572753906 - - - - - - - 47.61155493557453 - -117.09283794276416 - - 754.7999877929688 - 4671.5 - - - 0.0 - - - - - - - 47.611479917541146 - -117.09293299354613 - - 755.0 - 4682.47998046875 - - - 11.00100040435791 - - - - - - - 47.611479917541146 - -117.09293299354613 - - 755.0 - 4682.47998046875 - - - 0.0 - - - - - - - 47.61139693669975 - -117.0930259488523 - - 754.7999877929688 - 4694.06005859375 - - - 12.034999847412111 - - - - - - - 47.61139693669975 - -117.0930259488523 - - 754.7999877929688 - 4694.06005859375 - - - 0.0 - - - - - - - 47.61131093837321 - -117.09308696910739 - - 754.5999755859375 - 4704.66015625 - - - 11.138999938964844 - - - - - - - 47.61131093837321 - -117.09308696910739 - - 754.5999755859375 - 4704.66015625 - - - 0.0 - - - - - - - 47.611221922561526 - -117.09314396604896 - - 754.4000244140625 - 4715.4501953125 - - - 11.267999649047852 - - - - - - - 47.611221922561526 - -117.09314396604896 - - 754.4000244140625 - 4715.4501953125 - - - 0.0 - - - - - - - 47.61111999861896 - -117.09316299296916 - - 753.5999755859375 - 4726.8798828125 - - - 11.640000343322754 - - - - - - - 47.61103693395853 - -117.09317799657583 - - 752.0 - 4736.169921875 - - - 9.168000221252441 - - - - - - - 47.61095395311713 - -117.09314094856381 - - 750.7999877929688 - 4745.81005859375 - - - 9.795000076293945 - - - - - - - 47.61095395311713 - -117.09314094856381 - - 750.7999877929688 - 4745.81005859375 - - - 0.0 - - - - - - - 47.61086099781096 - -117.0930589735508 - - 749.5999755859375 - 4757.85009765625 - - - 13.743000030517578 - - - - - - - 47.61086099781096 - -117.0930589735508 - - 749.5999755859375 - 4757.85009765625 - - - 0.0 - - - - - - - 47.61077994480729 - -117.09294598549604 - - 748.5999755859375 - 4770.22998046875 - - - 10.378000259399412 - - - - - - - 47.61077994480729 - -117.09294598549604 - - 748.5999755859375 - 4770.22998046875 - - - 0.0 - - - - - - - 47.61069394648075 - -117.09282092750072 - - 748.4000244140625 - 4783.64013671875 - - - 17.82900047302246 - - - - - - - 47.61069394648075 - -117.09282092750072 - - 748.4000244140625 - 4783.64013671875 - - - 0.0 - - - - - - - 47.61060995981097 - -117.09270793944597 - - 749.0 - 4796.259765625 - - - 13.430999755859375 - - - - - - - 47.61060995981097 - -117.09270793944597 - - 749.0 - 4796.259765625 - - - 0.0 - - - - - - - 47.61049395427108 - -117.09264197386801 - - 747.7999877929688 - 4810.080078125 - - - 14.82699966430664 - - - - - - - 47.61049395427108 - -117.09264197386801 - - 747.7999877929688 - 4810.080078125 - - - 0.0 - - - - - - - 47.610381972044706 - -117.09259998053312 - - 746.7999877929688 - 4822.93017578125 - - - 13.312999725341799 - - - - - - - 47.610381972044706 - -117.09259998053312 - - 746.7999877929688 - 4822.93017578125 - - - 0.0 - - - - - - - 47.61026697233319 - -117.09260392002761 - - 744.4000244140625 - 4835.72021484375 - - - 12.61299991607666 - - - - - - - 47.61026697233319 - -117.09260392002761 - - 744.4000244140625 - 4835.72021484375 - - - 0.0 - - - - - - - 47.61015197262168 - -117.09262093529105 - - 741.7999877929688 - 4848.56982421875 - - - 13.772000312805176 - - - - - - - 47.61015197262168 - -117.09262093529105 - - 741.7999877929688 - 4848.56982421875 - - - 0.0 - - - - - - - 47.61004594154656 - -117.09264599718153 - - 739.2000122070312 - 4860.5 - - - 12.656000137329102 - - - - - - - 47.61004594154656 - -117.09264599718153 - - 739.2000122070312 - 4860.5 - - - 0.0 - - - - - - - 47.60996195487678 - -117.09271891973913 - - 737.5999755859375 - 4871.33984375 - - - 13.307999610900879 - - - - - - - 47.60996195487678 - -117.09271891973913 - - 737.5999755859375 - 4871.33984375 - - - 0.0 - - - - - - - 47.60989498347044 - -117.09282897412777 - - 735.4000244140625 - 4882.47021484375 - - - 11.63099956512451 - - - - - - - 47.60989498347044 - -117.09282897412777 - - 735.4000244140625 - 4882.47021484375 - - - 0.0 - - - - - - - 47.609843937680125 - -117.09297498688102 - - 735.2000122070312 - 4894.81982421875 - - - 12.711000442504883 - - - - - - - 47.609843937680125 - -117.09297498688102 - - 735.2000122070312 - 4894.81982421875 - - - 0.0 - - - - - - - 47.609795993193984 - -117.09313399158418 - - 734.7999877929688 - 4907.91015625 - - - 13.781000137329102 - - - - - - - 47.609795993193984 - -117.09313399158418 - - 734.7999877929688 - 4907.91015625 - - - 0.0 - - - - - - - 47.609782917425036 - -117.09331093356013 - - 734.2000122070312 - 4921.2998046875 - - - 13.631999969482422 - - - - - - - 47.609782917425036 - -117.09331093356013 - - 734.2000122070312 - 4921.2998046875 - - - 0.0 - - - - - - - 47.60977193713188 - -117.09350095130503 - - 733.7999877929688 - 4935.64013671875 - - - 14.614999771118164 - - - - - - - 47.60977193713188 - -117.09350095130503 - - 733.7999877929688 - 4935.64013671875 - - - 0.0 - - - - - - - 47.60976799763739 - -117.09367495961487 - - 733.4000244140625 - 4948.72998046875 - - - 13.439000129699707 - - - - - - - 47.60976799763739 - -117.09367495961487 - - 733.4000244140625 - 4948.72998046875 - - - 0.0 - - - - - - - 47.60976799763739 - -117.09384192712605 - - 732.7999877929688 - 4961.27978515625 - - - 13.065999984741211 - - - - - - - 47.60976799763739 - -117.09384192712605 - - 732.7999877929688 - 4961.27978515625 - - - 0.0 - - - - - - - 47.60976799763739 - -117.09400897845626 - - 732.0 - 4973.83984375 - - - 12.930999755859375 - - - - - - - 47.60976799763739 - -117.09400897845626 - - 732.0 - 4973.83984375 - - - 0.0 - - - - - - - 47.60976891964674 - -117.09416295401752 - - 731.0 - 4985.419921875 - - - 11.87600040435791 - - - - - - - 47.60976891964674 - -117.09416295401752 - - 731.0 - 4985.419921875 - - - 0.0 - - - - - - - 47.60977193713188 - -117.09431299008429 - - 731.0 - 4996.7001953125 - - - 11.5600004196167 - - - - - - - 47.60977193713188 - -117.09431299008429 - - 731.0 - 4996.7001953125 - - - 0.0 - - - - - - - 47.60977394878864 - -117.09445296786726 - - 732.0 - 5007.22998046875 - - - 10.635000228881836 - - - - - - - 47.60977394878864 - -117.09445296786726 - - 732.0 - 5007.22998046875 - - - 0.0 - - - - - - - 47.609776966273785 - -117.09461096674204 - - 733.0 - 5019.1201171875 - - - 12.548999786376953 - - - - - - - 47.609776966273785 - -117.09461096674204 - - 733.0 - 5019.1201171875 - - - 0.0 - - - - - - - 47.60977495461702 - -117.0947789400816 - - 734.2000122070312 - 5031.75 - - - 12.930999755859375 - - - - - - - 47.60977495461702 - -117.0947789400816 - - 734.2000122070312 - 5031.75 - - - 0.0 - - - - - - - 47.60977294296026 - -117.0949269644916 - - 733.7999877929688 - 5042.8798828125 - - - 11.581000328063965 - - - - - - - 47.60977495461702 - -117.0950519386679 - - 733.2000122070312 - 5052.27978515625 - - - 9.109000205993652 - - - - - - - 47.609777972102165 - -117.09517599083483 - - 732.2000122070312 - 5061.60986328125 - - - 9.788999557495117 - - - - - - - 47.609777972102165 - -117.09517599083483 - - 732.2000122070312 - 5061.60986328125 - - - 0.0 - - - - - - - 47.609779983758926 - -117.09530892781913 - - 731.2000122070312 - 5071.60986328125 - - - 10.196000099182129 - - - - - - - 47.609782917425036 - -117.09542895667255 - - 730.4000244140625 - 5080.64013671875 - - - 8.697999954223633 - - - - - - - 47.60978694073856 - -117.09553792141378 - - 729.4000244140625 - 5088.85009765625 - - - 8.539999961853027 - - - - - - - 47.60979398153722 - -117.09565593861043 - - 728.4000244140625 - 5097.75 - - - 8.871000289916992 - - - - - - - 47.609802950173616 - -117.09578099660575 - - 727.2000122070312 - 5107.2001953125 - - - 8.630999565124512 - - - - - - - 47.60981292463839 - -117.095897924155 - - 725.7999877929688 - 5116.06982421875 - - - 9.45300006866455 - - - - - - - 47.60981795378029 - -117.09602499380708 - - 724.5999755859375 - 5125.64013671875 - - - 10.100000381469727 - - - - - - - 47.609820971265435 - -117.09614594466984 - - 723.5999755859375 - 5134.740234375 - - - 8.628999710083008 - - - - - - - 47.60982398875058 - -117.09627997130156 - - 723.0 - 5144.81982421875 - - - 10.532999992370605 - - - - - - - 47.60982398875058 - -117.09627997130156 - - 723.0 - 5144.81982421875 - - - 0.0 - - - - - - - 47.60982792824507 - -117.09641491994262 - - 722.4000244140625 - 5154.97998046875 - - - 10.496000289916992 - - - - - - - 47.609825916588306 - -117.09654592908919 - - 721.5999755859375 - 5164.830078125 - - - 9.901000022888184 - - - - - - - 47.609819965437055 - -117.09669495932758 - - 720.7999877929688 - 5176.0498046875 - - - 11.279000282287598 - - - - - - - 47.609819965437055 - -117.09669495932758 - - 720.7999877929688 - 5176.0498046875 - - - 0.0 - - - - - - - 47.6097849290818 - -117.09683292545378 - - 721.2000122070312 - 5187.14013671875 - - - 11.376999855041504 - - - - - - - 47.6097849290818 - -117.09683292545378 - - 721.2000122070312 - 5187.14013671875 - - - 0.0 - - - - - - - 47.60974695906043 - -117.09696091711521 - - 720.5999755859375 - 5197.64990234375 - - - 10.65999984741211 - - - - - - - 47.60974695906043 - -117.09696091711521 - - 720.5999755859375 - 5197.64990234375 - - - 0.0 - - - - - - - 47.60968392714858 - -117.09706393070519 - - 720.7999877929688 - 5208.08984375 - - - 10.956999778747557 - - - - - - - 47.60968392714858 - -117.09706393070519 - - 720.7999877929688 - 5208.08984375 - - - 0.0 - - - - - - - 47.60960295796394 - -117.09714992903173 - - 721.4000244140625 - 5219.169921875 - - - 11.406000137329102 - - - - - - - 47.60960295796394 - -117.09714992903173 - - 721.4000244140625 - 5219.169921875 - - - 0.0 - - - - - - - 47.609518971294165 - -117.0972259528935 - - 722.0 - 5230.1201171875 - - - 11.333999633789062 - - - - - - - 47.609518971294165 - -117.0972259528935 - - 722.0 - 5230.1201171875 - - - 0.0 - - - - - - - 47.60941796936095 - -117.09727398119867 - - 721.0 - 5241.919921875 - - - 12.197999954223633 - - - - - - - 47.60941796936095 - -117.09727398119867 - - 721.0 - 5241.919921875 - - - 0.0 - - - - - - - 47.60931897908449 - -117.09731295704842 - - 719.7999877929688 - 5253.31005859375 - - - 12.003000259399414 - - - - - - - 47.60931897908449 - -117.09731295704842 - - 719.7999877929688 - 5253.31005859375 - - - 0.0 - - - - - - - 47.60921294800937 - -117.09734296426177 - - 718.2000122070312 - 5265.31005859375 - - - 12.409000396728516 - - - - - - - 47.60921294800937 - -117.09734296426177 - - 718.2000122070312 - 5265.31005859375 - - - 0.0 - - - - - - - 47.609100965783 - -117.09733491763473 - - 716.4000244140625 - 5277.77978515625 - - - 13.0 - - - - - - - 47.609100965783 - -117.09733491763473 - - 716.4000244140625 - 5277.77978515625 - - - 0.0 - - - - - - - 47.60898898355663 - -117.09732091985643 - - 714.4000244140625 - 5290.27001953125 - - - 12.66100025177002 - - - - - - - 47.60898898355663 - -117.09732091985643 - - 714.4000244140625 - 5290.27001953125 - - - 0.0 - - - - - - - 47.608872978016734 - -117.09730197675526 - - 713.0 - 5303.25 - - - 13.390999794006348 - - - - - - - 47.608872978016734 - -117.09730197675526 - - 713.0 - 5303.25 - - - 0.0 - - - - - - - 47.6087589841336 - -117.09729191847146 - - 711.7999877929688 - 5315.9501953125 - - - 13.199000358581543 - - - - - - - 47.6087589841336 - -117.09729191847146 - - 711.7999877929688 - 5315.9501953125 - - - 0.0 - - - - - - - 47.60864599607885 - -117.09728797897696 - - 711.0 - 5328.509765625 - - - 12.956000328063965 - - - - - - - 47.60864599607885 - -117.09728797897696 - - 711.0 - 5328.509765625 - - - 0.0 - - - - - - - 47.60854599997401 - -117.09732896648347 - - 711.2000122070312 - 5340.0498046875 - - - 11.906999588012695 - - - - - - - 47.60854599997401 - -117.09732896648347 - - 711.2000122070312 - 5340.0498046875 - - - 0.0 - - - - - - - 47.60845899581909 - -117.09737992845476 - - 711.4000244140625 - 5350.4599609375 - - - 10.940999984741211 - - - - - - - 47.60839495807886 - -117.0974659267813 - - 711.4000244140625 - 5360.06982421875 - - - 8.97700023651123 - - - - - - - 47.60834491811693 - -117.09756491705775 - - 712.0 - 5369.35986328125 - - - 9.958000183105469 - - - - - - - 47.60830191895366 - -117.0976559445262 - - 712.0 - 5377.7099609375 - - - 8.01099967956543 - - - - - - - 47.60826093144715 - -117.09774697199464 - - 712.2000122070312 - 5385.93017578125 - - - 8.51099967956543 - - - - - - - 47.60824492201209 - -117.09784093312919 - - 712.0 - 5393.22021484375 - - - 7.188000202178955 - - - - - - - 47.60825699195266 - -117.09790798835456 - - 711.2000122070312 - 5398.43017578125 - - - 5.355999946594238 - - - - - - - 47.608292950317264 - -117.09796096198261 - - 710.2000122070312 - 5404.080078125 - - - 5.467999935150146 - - - - - - - 47.60833192616701 - -117.09801896475255 - - 709.4000244140625 - 5410.22998046875 - - - 6.269000053405762 - - - - - - - 47.60838498361409 - -117.09805592894554 - - 708.4000244140625 - 5416.740234375 - - - 6.350999832153321 - - - - - - - 47.60844994336367 - -117.09806699305773 - - 708.2000122070312 - 5424.02001953125 - - - 7.392000198364258 - - - - - - - 47.60852093808353 - -117.09806196391582 - - 707.7999877929688 - 5431.919921875 - - - 7.902999877929688 - - - - - - - 47.60858598165214 - -117.09804997779429 - - 707.7999877929688 - 5439.2001953125 - - - 7.320000171661377 - - - - - - - 47.608661921694875 - -117.09805995225906 - - 707.4000244140625 - 5447.68994140625 - - - 8.260000228881836 - - - - - - - 47.60874096304178 - -117.0980769675225 - - 707.4000244140625 - 5456.56005859375 - - - 9.11299991607666 - - - - - - - 47.60880399495363 - -117.09813899360597 - - 707.0 - 5464.97998046875 - - - 8.105999946594238 - - - - - - - 47.60887096635997 - -117.09820294752717 - - 706.4000244140625 - 5473.83984375 - - - 9.227999687194824 - - - - - - - 47.60891497135162 - -117.09828198887408 - - 705.7999877929688 - 5481.5400390625 - - - 7.441999912261963 - - - - - - - 47.6089439727366 - -117.09839799441397 - - 704.7999877929688 - 5490.83984375 - - - 9.62600040435791 - - - - - - - 47.6089439727366 - -117.09839799441397 - - 704.7999877929688 - 5490.83984375 - - - 0.0 - - - - - - - 47.60895092971623 - -117.0985399838537 - - 703.4000244140625 - 5501.5400390625 - - - 11.151000022888184 - - - - - - - 47.608959982171655 - -117.09866998717189 - - 702.2000122070312 - 5511.3701171875 - - - 9.652000427246094 - - - - - - - 47.6089629996568 - -117.09882396273315 - - 700.4000244140625 - 5522.9501953125 - - - 11.736000061035156 - - - - - - - 47.6089629996568 - -117.09882396273315 - - 700.4000244140625 - 5522.9501953125 - - - 0.0 - - - - - - - 47.60897599160671 - -117.09899595938623 - - 699.0 - 5535.97021484375 - - - 13.597000122070312 - - - - - - - 47.60897599160671 - -117.09899595938623 - - 699.0 - 5535.97021484375 - - - 0.0 - - - - - - - 47.60898998938501 - -117.09916493855417 - - 697.7999877929688 - 5548.77001953125 - - - 13.211000442504883 - - - - - - - 47.60898998938501 - -117.09916493855417 - - 697.7999877929688 - 5548.77001953125 - - - 0.0 - - - - - - - 47.609004992991686 - -117.099330984056 - - 696.5999755859375 - 5561.35986328125 - - - 13.324999809265137 - - - - - - - 47.609004992991686 - -117.099330984056 - - 696.5999755859375 - 5561.35986328125 - - - 0.0 - - - - - - - 47.6090319827199 - -117.09951496683061 - - 695.0 - 5575.52001953125 - - - 13.206000328063965 - - - - - - - 47.6090319827199 - -117.09951496683061 - - 695.0 - 5575.52001953125 - - - 0.0 - - - - - - - 47.60906198993325 - -117.09969392046332 - - 692.7999877929688 - 5589.3798828125 - - - 15.527000427246094 - - - - - - - 47.60906198993325 - -117.09969392046332 - - 692.7999877929688 - 5589.3798828125 - - - 0.0 - - - - - - - 47.6091059949249 - -117.09985493682325 - - 690.7999877929688 - 5602.43994140625 - - - 13.295999526977539 - - - - - - - 47.6091059949249 - -117.09985493682325 - - 690.7999877929688 - 5602.43994140625 - - - 0.0 - - - - - - - 47.60914798825979 - -117.10002693347633 - - 688.5999755859375 - 5616.18994140625 - - - 14.277999877929688 - - - - - - - 47.60914798825979 - -117.10002693347633 - - 688.5999755859375 - 5616.18994140625 - - - 0.0 - - - - - - - 47.609177995473146 - -117.10019993595779 - - 687.0 - 5629.6201171875 - - - 13.814999580383303 - - - - - - - 47.609177995473146 - -117.10019993595779 - - 687.0 - 5629.6201171875 - - - 0.0 - - - - - - - 47.6092029735446 - -117.1003529895097 - - 685.7999877929688 - 5641.4501953125 - - - 12.10099983215332 - - - - - - - 47.6092029735446 - -117.1003529895097 - - 685.7999877929688 - 5641.4501953125 - - - 0.0 - - - - - - - 47.60920397937298 - -117.10049699060619 - - 684.7999877929688 - 5652.27978515625 - - - 11.567999839782713 - - - - - - - 47.60920397937298 - -117.10049699060619 - - 684.7999877929688 - 5652.27978515625 - - - 0.0 - - - - - - - 47.609199956059456 - -117.10064493119717 - - 683.7999877929688 - 5663.41015625 - - - 11.493000030517578 - - - - - - - 47.609199956059456 - -117.10064493119717 - - 683.7999877929688 - 5663.41015625 - - - 0.0 - - - - - - - 47.609199956059456 - -117.10079597309232 - - 683.4000244140625 - 5674.77001953125 - - - 11.777000427246094 - - - - - - - 47.609199956059456 - -117.10079597309232 - - 683.4000244140625 - 5674.77001953125 - - - 0.0 - - - - - - - 47.60920498520136 - -117.10094399750233 - - 682.4000244140625 - 5685.91015625 - - - 11.451000213623047 - - - - - - - 47.60920498520136 - -117.10094399750233 - - 682.4000244140625 - 5685.91015625 - - - 0.0 - - - - - - - 47.60922694578767 - -117.10107894614339 - - 681.0 - 5696.35009765625 - - - 10.753000259399414 - - - - - - - 47.60922694578767 - -117.10107894614339 - - 681.0 - 5696.35009765625 - - - 0.0 - - - - - - - 47.60925695300102 - -117.1012129727751 - - 679.4000244140625 - 5706.9599609375 - - - 10.975000381469725 - - - - - - - 47.60925695300102 - -117.1012129727751 - - 679.4000244140625 - 5706.9599609375 - - - 0.0 - - - - - - - 47.609306992962956 - -117.10133492946625 - - 677.7999877929688 - 5717.68994140625 - - - 11.208000183105469 - - - - - - - 47.609306992962956 - -117.10133492946625 - - 677.7999877929688 - 5717.68994140625 - - - 0.0 - - - - - - - 47.60936591774225 - -117.10148496553302 - - 676.0 - 5730.740234375 - - - 13.791999816894531 - - - - - - - 47.60936591774225 - -117.10148496553302 - - 676.0 - 5730.740234375 - - - 0.0 - - - - - - - 47.60942794382572 - -117.10161295719445 - - 675.0 - 5742.56982421875 - - - 12.166000366210938 - - - - - - - 47.60942794382572 - -117.10161295719445 - - 675.0 - 5742.56982421875 - - - 0.0 - - - - - - - 47.60950396768749 - -117.10175394080579 - - 673.7999877929688 - 5756.1298828125 - - - 14.28499984741211 - - - - - - - 47.60950396768749 - -117.10175394080579 - - 673.7999877929688 - 5756.1298828125 - - - 0.0 - - - - - - - 47.60959893465042 - -117.10184798575938 - - 673.7999877929688 - 5768.83984375 - - - 12.746999740600586 - - - - - - - 47.60959893465042 - -117.10184798575938 - - 673.7999877929688 - 5768.83984375 - - - 0.0 - - - - - - - 47.60968694463372 - -117.10193096660078 - - 673.4000244140625 - 5780.43994140625 - - - 12.227999687194826 - - - - - - - 47.60968694463372 - -117.10193096660078 - - 673.4000244140625 - 5780.43994140625 - - - 0.0 - - - - - - - 47.60976699180901 - -117.10200095549226 - - 673.0 - 5790.77978515625 - - - 10.947999954223633 - - - - - - - 47.60983496904373 - -117.10205099545419 - - 673.7999877929688 - 5799.22021484375 - - - 8.28600025177002 - - - - - - - 47.609908981248736 - -117.10211193189025 - - 674.7999877929688 - 5808.64013671875 - - - 9.711000442504883 - - - - - - - 47.609908981248736 - -117.10211193189025 - - 674.7999877929688 - 5808.64013671875 - - - 0.0 - - - - - - - 47.60999799706042 - -117.10219298489392 - - 675.2000122070312 - 5820.259765625 - - - 11.819999694824219 - - - - - - - 47.61005097068846 - -117.10228694602847 - - 674.7999877929688 - 5829.4599609375 - - - 8.788999557495117 - - - - - - - 47.61007393710315 - -117.10237093269825 - - 674.7999877929688 - 5836.27978515625 - - - 7.02400016784668 - - - - - - - 47.61008491739631 - -117.10245994850993 - - 674.7999877929688 - 5843.080078125 - - - 6.491000175476074 - - - - - - - 47.610100926831365 - -117.10257394239306 - - 674.4000244140625 - 5851.830078125 - - - 9.322999954223633 - - - - - - - 47.61011894792318 - -117.10269698873162 - - 673.7999877929688 - 5861.2900390625 - - - 9.071999549865723 - - - - - - - 47.61012992821634 - -117.10282095707953 - - 672.7999877929688 - 5870.7001953125 - - - 9.805000305175781 - - - - - - - 47.61012992821634 - -117.10282095707953 - - 672.7999877929688 - 5870.7001953125 - - - 0.0 - - - - - - - 47.61013395152986 - -117.10296194069088 - - 671.7999877929688 - 5881.31005859375 - - - 10.883000373840332 - - - - - - - 47.61013093404472 - -117.1030899323523 - - 671.0 - 5890.93994140625 - - - 9.128000259399414 - - - - - - - 47.610123977065086 - -117.1032109670341 - - 670.4000244140625 - 5900.06982421875 - - - 9.652000427246094 - - - - - - - 47.61011299677193 - -117.10333392955363 - - 669.7999877929688 - 5909.39990234375 - - - 8.87600040435791 - - - - - - - 47.61011199094355 - -117.10344792343676 - - 668.7999877929688 - 5917.97021484375 - - - 8.928999900817871 - - - - - - - 47.61011199094355 - -117.10344792343676 - - 668.7999877929688 - 5917.97021484375 - - - 0.0 - - - - - - - 47.610120959579945 - -117.10358798503876 - - 667.4000244140625 - 5928.5400390625 - - - 10.866999626159668 - - - - - - - 47.61013495735824 - -117.10371094755828 - - 666.4000244140625 - 5937.919921875 - - - 9.069999694824219 - - - - - - - 47.610163958743215 - -117.10383298806846 - - 665.4000244140625 - 5947.64013671875 - - - 10.288999557495117 - - - - - - - 47.610163958743215 - -117.10383298806846 - - 665.4000244140625 - 5947.64013671875 - - - 0.0 - - - - - - - 47.610206957906485 - -117.10397598333657 - - 664.4000244140625 - 5959.41015625 - - - 16.25200080871582 - - - - - - - 47.610206957906485 - -117.10397598333657 - - 664.4000244140625 - 5959.41015625 - - - 0.0 - - - - - - - 47.610252974554896 - -117.10413498803973 - - 663.4000244140625 - 5972.41015625 - - - 13.657999992370605 - - - - - - - 47.610252974554896 - -117.10413498803973 - - 663.4000244140625 - 5972.41015625 - - - 0.0 - - - - - - - 47.61030393652618 - -117.10430497303605 - - 662.2000122070312 - 5986.39990234375 - - - 14.166999816894531 - - - - - - - 47.61030393652618 - -117.10430497303605 - - 662.2000122070312 - 5986.39990234375 - - - 0.0 - - - - - - - 47.61034592986107 - -117.10444696247578 - - 661.4000244140625 - 5998.0498046875 - - - 12.21500015258789 - - - - - - - 47.61034592986107 - -117.10444696247578 - - 661.4000244140625 - 5998.0498046875 - - - 0.0 - - - - - - - 47.61038599535823 - -117.10458492860198 - - 661.0 - 6009.33984375 - - - 11.543000221252441 - - - - - - - 47.61038599535823 - -117.10458492860198 - - 661.0 - 6009.33984375 - - - 0.0 - - - - - - - 47.610420947894454 - -117.10472297854722 - - 660.2000122070312 - 6020.419921875 - - - 11.57900047302246 - - - - - - - 47.610445925965905 - -117.10484099574387 - - 659.7999877929688 - 6029.72021484375 - - - 8.947999954223633 - - - - - - - 47.610464952886105 - -117.10496194660664 - - 659.7999877929688 - 6039.0498046875 - - - 9.697999954223633 - - - - - - - 47.61047693900764 - -117.10506998933852 - - 659.4000244140625 - 6047.27978515625 - - - 7.980999946594238 - - - - - - - 47.61048297397792 - -117.10517392493784 - - 659.2000122070312 - 6055.1298828125 - - - 7.974999904632569 - - - - - - - 47.61049194261432 - -117.10528196766973 - - 659.0 - 6063.31005859375 - - - 7.942999839782715 - - - - - - - 47.61046998202801 - -117.10540199652314 - - 659.0 - 6072.66015625 - - - 9.758000373840332 - - - - - - - 47.610397981479764 - -117.10544197820127 - - 658.4000244140625 - 6081.2099609375 - - - 8.206999778747559 - - - - - - - 47.610335955396295 - -117.10544499568641 - - 658.0 - 6088.10986328125 - - - 7.146999835968018 - - - - - - - 47.61028499342501 - -117.10543795488775 - - 657.7999877929688 - 6093.7998046875 - - - 5.501999855041504 - - - - - - - 47.61023696511984 - -117.10544398985803 - - 657.5999755859375 - 6099.16015625 - - - 5.561999797821045 - - - - - - - 47.61015297845006 - -117.10547793656588 - - 657.4000244140625 - 6108.83984375 - - - 4.7820000648498535 - - - - - - - 47.61010997928679 - -117.10550693795085 - - 657.4000244140625 - 6114.10009765625 - - - 5.373000144958496 - - - - - - - 47.610060945153236 - -117.10555496625602 - - 657.2000122070312 - 6120.6298828125 - - - 6.46999979019165 - - - - - - - 47.610017945989966 - -117.10559796541929 - - 657.2000122070312 - 6126.39990234375 - - - 5.817999839782715 - - - - - - - 47.60997595265508 - -117.10563199594617 - - 657.4000244140625 - 6131.72998046875 - - - 5.1539998054504395 - - - - - - - 47.609928930178285 - -117.10568698123097 - - 657.4000244140625 - 6138.39013671875 - - - 6.9060001373291025 - - - - - - - 47.609886936843395 - -117.1057359315455 - - 657.5999755859375 - 6144.33984375 - - - 5.894999980926514 - - - - - - - 47.609842931851745 - -117.10578295402229 - - 657.7999877929688 - 6150.3701171875 - - - 6.138999938964844 - - - - - - - 47.609779983758926 - -117.10585897788405 - - 658.0 - 6159.41015625 - - - 4.425000190734863 - - - - - - - 47.609757939353585 - -117.105916980654 - - 658.4000244140625 - 6164.41015625 - - - 5.159999847412109 - - - - - - - 47.60972592048347 - -117.10603499785066 - - 658.7999877929688 - 6173.97021484375 - - - 4.498000144958496 - - - - - - - 47.60972298681736 - -117.10608394816518 - - 658.7999877929688 - 6177.669921875 - - - 4.26200008392334 - - - - - - - 47.60974796488881 - -117.10620598867536 - - 658.5999755859375 - 6187.259765625 - - - 4.704999923706055 - - - - - - - 47.60976397432387 - -117.10626298561692 - - 658.0 - 6191.89990234375 - - - 4.9679999351501465 - - - - - - - 47.60978794656694 - -117.10636792704463 - - 657.2000122070312 - 6200.22998046875 - - - 2.7070000171661377 - - - - - - - 47.6097849290818 - -117.10640396922827 - - 657.2000122070312 - 6202.9599609375 - - - 2.882999897003174 - - - - - - - 47.609799932688475 - -117.10646993480623 - - 656.5999755859375 - 6208.18994140625 - - - 5.214000225067139 - - - - - - - 47.609818959608674 - -117.10654394701123 - - 655.7999877929688 - 6214.14013671875 - - - 5.999000072479248 - - - - - - - 47.609822982922196 - -117.10662491619587 - - 655.2000122070312 - 6220.25 - - - 5.809999942779541 - - - - - - - 47.60982993990183 - -117.10669599473476 - - 654.4000244140625 - 6225.64013671875 - - - 5.65500020980835 - - - - - - - 47.609842931851745 - -117.10678392089903 - - 654.0 - 6232.419921875 - - - 6.52400016784668 - - - - - - - 47.60985299013555 - -117.1068599447608 - - 653.7999877929688 - 6238.240234375 - - - 6.0960001945495605 - - - - - - - 47.609862964600325 - -117.10693093948066 - - 653.5999755859375 - 6243.68994140625 - - - 5.324999809265137 - - - - - - - 47.6098729390651 - -117.1070029400289 - - 653.0 - 6249.22021484375 - - - 5.616000175476074 - - - - - - - 47.609877968207 - -117.10707896389067 - - 653.2000122070312 - 6254.9599609375 - - - 5.243000030517578 - - - - - - - 47.60988098569214 - -117.1071569994092 - - 653.4000244140625 - 6260.830078125 - - - 6.427000045776367 - - - - - - - 47.609885931015015 - -117.1072399802506 - - 653.5999755859375 - 6267.10009765625 - - - 6.197000026702881 - - - - - - - 47.60988995432854 - -117.10733192972839 - - 654.0 - 6274.02978515625 - - - 6.318999767303467 - - - - - - - 47.6098969951272 - -117.10744793526828 - - 654.7999877929688 - 6282.77978515625 - - - 9.10200023651123 - - - - - - - 47.609904957935214 - -117.10757399909198 - - 654.7999877929688 - 6292.2998046875 - - - 10.253000259399414 - - - - - - - 47.60991292074323 - -117.1077059302479 - - 654.2000122070312 - 6302.259765625 - - - 9.553999900817871 - - - - - - - 47.60992398485541 - -117.10784993134439 - - 653.4000244140625 - 6313.16015625 - - - 11.361000061035154 - - - - - - - 47.60992398485541 - -117.10784993134439 - - 653.4000244140625 - 6313.16015625 - - - 0.0 - - - - - - - 47.60993798263371 - -117.10798295214772 - - 652.5999755859375 - 6323.27978515625 - - - 10.597000122070312 - - - - - - - 47.609951980412006 - -117.10810792632401 - - 651.2000122070312 - 6332.81005859375 - - - 9.213000297546387 - - - - - - - 47.60996991768479 - -117.10822694934905 - - 651.2000122070312 - 6341.97021484375 - - - 9.37399959564209 - - - - - - - 47.60999992489815 - -117.10834798403084 - - 650.2000122070312 - 6351.66015625 - - - 9.66100025177002 - - - - - - - 47.61002196930349 - -117.10845996625721 - - 650.2000122070312 - 6360.43017578125 - - - 8.947999954223633 - - - - - - - 47.61004795320332 - -117.10856599733233 - - 649.7999877929688 - 6368.91015625 - - - 8.21500015258789 - - - - - - - 47.610079972073436 - -117.10867395624518 - - 649.5999755859375 - 6377.77978515625 - - - 9.0649995803833 - - - - - - - 47.61010495014489 - -117.10877093486488 - - 650.5999755859375 - 6385.580078125 - - - 7.547999858856201 - - - - - - - 47.610136969015 - -117.10888593457639 - - 651.5999755859375 - 6394.93017578125 - - - 9.74899959564209 - - - - - - - 47.610136969015 - -117.10888593457639 - - 651.5999755859375 - 6394.93017578125 - - - 0.0 - - - - - - - 47.610188936814666 - -117.10899892263114 - - 651.5999755859375 - 6405.2099609375 - - - 10.81700038909912 - - - - - - - 47.6102389767766 - -117.10910595953465 - - 652.0 - 6414.990234375 - - - 9.51200008392334 - - - - - - - 47.61028097011149 - -117.10918994620442 - - 651.4000244140625 - 6422.83984375 - - - 8.138999938964844 - - - - - - - 47.61032396927476 - -117.10928591899574 - - 651.7999877929688 - 6431.5 - - - 8.222000122070312 - - - - - - - 47.610377948731184 - -117.10938692092896 - - 653.0 - 6441.18017578125 - - - 10.01099967956543 - - - - - - - 47.61043192818761 - -117.1094729192555 - - 653.5999755859375 - 6450.0 - - - 8.600000381469727 - - - - - - - 47.61046998202801 - -117.1095329336822 - - 653.5999755859375 - 6456.18017578125 - - - 6.3979997634887695 - - - - - - - 47.61051599867642 - -117.10961197502911 - - 654.0 - 6464.02001953125 - - - 7.38100004196167 - - - - - - - 47.61056092567742 - -117.10969193838537 - - 654.0 - 6471.83984375 - - - 8.29699993133545 - - - - - - - 47.61060593649745 - -117.10976695641875 - - 654.0 - 6479.3798828125 - - - 7.304999828338623 - - - - - - - 47.61064692400396 - -117.10983996279538 - - 654.2000122070312 - 6486.52001953125 - - - 7.386000156402588 - - - - - - - 47.61069796979427 - -117.10992394946516 - - 654.5999755859375 - 6495.009765625 - - - 8.177000045776367 - - - - - - - 47.610742980614305 - -117.11002092808485 - - 654.5999755859375 - 6503.85009765625 - - - 9.194000244140625 - - - - - - - 47.610784973949194 - -117.11012494750321 - - 654.4000244140625 - 6512.9599609375 - - - 8.74899959564209 - - - - - - - 47.6108209323138 - -117.11020097136497 - - 654.2000122070312 - 6519.93017578125 - - - 7.275000095367432 - - - - - - - 47.61085596866906 - -117.11028596386313 - - 653.7999877929688 - 6527.419921875 - - - 7.132999897003174 - - - - - - - 47.61088295839727 - -117.11038595996797 - - 653.7999877929688 - 6535.509765625 - - - 8.593999862670898 - - - - - - - 47.61090793646872 - -117.11047992110252 - - 653.7999877929688 - 6543.10986328125 - - - 7.315999984741211 - - - - - - - 47.61093392036855 - -117.11057798936963 - - 653.7999877929688 - 6551.02001953125 - - - 8.1850004196167 - - - - - - - 47.610958982259035 - -117.11066197603941 - - 653.5999755859375 - 6557.919921875 - - - 6.5900001525878915 - - - - - - - 47.610980942845345 - -117.11074193939567 - - 653.2000122070312 - 6564.41015625 - - - 6.89300012588501 - - - - - - - 47.61100994423032 - -117.11082994937897 - - 652.7999877929688 - 6571.77001953125 - - - 7.159999847412109 - - - - - - - 47.61103299446404 - -117.11093396879733 - - 652.5999755859375 - 6580.0 - - - 8.395000457763672 - - - - - - - 47.61105294339359 - -117.11103597655892 - - 652.5999755859375 - 6587.990234375 - - - 7.604000091552734 - - - - - - - 47.611066941171885 - -117.11114594712853 - - 652.5999755859375 - 6596.39990234375 - - - 8.803000450134277 - - - - - - - 47.61106291785836 - -117.11125298403203 - - 652.7999877929688 - 6604.4599609375 - - - 7.76200008392334 - - - - - - - 47.61105797253549 - -117.11136898957193 - - 652.7999877929688 - 6613.2001953125 - - - 9.0 - - - - - - - 47.61105394922197 - -117.11144593544304 - - 653.0 - 6619.0 - - - 5.6479997634887695 - - - - - - - 47.611049925908446 - -117.11154593154788 - - 652.4000244140625 - 6626.5400390625 - - - 7.3480000495910645 - - - - - - - 47.611045986413956 - -117.11165296845138 - - 651.7999877929688 - 6634.58984375 - - - 8.246999740600586 - - - - - - - 47.61103693395853 - -117.11175095289946 - - 651.2000122070312 - 6642.02978515625 - - - 7.704999923706055 - - - - - - - 47.61102193035185 - -117.11184591986239 - - 650.5999755859375 - 6649.35986328125 - - - 7.431000232696534 - - - - - - - 47.61099594645202 - -117.11193292401731 - - 650.4000244140625 - 6656.509765625 - - - 7.0879998207092285 - - - - - - - 47.61096199974418 - -117.11202495731413 - - 650.5999755859375 - 6664.39990234375 - - - 7.5869998931884775 - - - - - - - 47.61092897504568 - -117.11210399866104 - - 650.5999755859375 - 6671.3798828125 - - - 7.197000026702881 - - - - - - - 47.61089896783233 - -117.11217993870378 - - 650.5999755859375 - 6677.990234375 - - - 6.570000171661377 - - - - - - - 47.610850939527154 - -117.1122389473021 - - 651.2000122070312 - 6684.93017578125 - - - 7.052000045776367 - - - - - - - 47.61080198921263 - -117.11230097338557 - - 651.4000244140625 - 6692.10009765625 - - - 6.940999984741212 - - - - - - - 47.61075094342232 - -117.11236492730677 - - 651.7999877929688 - 6699.5400390625 - - - 7.611999988555908 - - - - - - - 47.610699981451035 - -117.11242795921862 - - 652.0 - 6706.93017578125 - - - 7.5310001373291025 - - - - - - - 47.61065195314586 - -117.11248998530209 - - 652.2000122070312 - 6714.02001953125 - - - 6.572999954223633 - - - - - - - 47.61060995981097 - -117.11254295893013 - - 652.4000244140625 - 6720.14990234375 - - - 6.461999893188477 - - - - - - - 47.610570983961225 - -117.11258998140693 - - 652.4000244140625 - 6725.75 - - - 5.743000030517578 - - - - - - - 47.61052496731281 - -117.11263692006469 - - 652.5999755859375 - 6731.9599609375 - - - 5.605000019073485 - - - - - - - 47.61048297397792 - -117.11268092505634 - - 652.7999877929688 - 6737.68994140625 - - - 6.359000205993652 - - - - - - - 47.61043997481465 - -117.11272392421961 - - 652.7999877929688 - 6743.4599609375 - - - 5.554999828338623 - - - - - - - 47.610400998964906 - -117.11276692338288 - - 653.0 - 6748.8701171875 - - - 5.5879998207092285 - - - - - - - 47.61036395095289 - -117.11280799470842 - - 653.0 - 6754.009765625 - - - 5.050000190734863 - - - - - - - 47.61032296344638 - -117.11285199970007 - - 653.2000122070312 - 6759.64013671875 - - - 5.836999893188477 - - - - - - - 47.61028197593987 - -117.11289499886334 - - 653.2000122070312 - 6765.22998046875 - - - 5.388999938964843 - - - - - - - 47.610248951241374 - -117.11293196305633 - - 653.4000244140625 - 6769.830078125 - - - 4.736999988555908 - - - - - - - 47.61021198704839 - -117.11296892724931 - - 653.4000244140625 - 6774.7998046875 - - - 4.7210001945495605 - - - - - - - 47.61016798205674 - -117.11299591697752 - - 653.7999877929688 - 6780.10009765625 - - - 5.5289998054504395 - - - - - - - 47.610097993165255 - -117.11304495111108 - - 654.2000122070312 - 6788.7099609375 - - - 4.209000110626221 - - - - - - - 47.61006698012352 - -117.11308392696083 - - 654.2000122070312 - 6793.22998046875 - - - 4.76800012588501 - - - - - - - 47.61000394821167 - -117.11315399967134 - - 654.5999755859375 - 6801.990234375 - - - 4.235000133514404 - - - - - - - 47.609974946826696 - -117.11318199522793 - - 654.7999877929688 - 6805.83984375 - - - 4.171999931335449 - - - - - - - 47.60991292074323 - -117.11324695497751 - - 655.2000122070312 - 6814.2900390625 - - - 4.175000190734863 - - - - - - - 47.609887942671776 - -117.11327092722058 - - 655.4000244140625 - 6817.60986328125 - - - 3.4200000762939453 - - - - - - - 47.60982792824507 - -117.11331392638385 - - 656.0 - 6825.02001953125 - - - 2.424999952316284 - - - - - - - 47.609801944345236 - -117.11331199854612 - - 656.5999755859375 - 6827.919921875 - - - 3.0309998989105225 - - - - - - - 47.60971795767546 - -117.11335994303226 - - 657.7999877929688 - 6837.93017578125 - - - 3.308000087738037 - - - - - - - 47.609693985432386 - -117.11337896995246 - - 658.2000122070312 - 6840.9501953125 - - - 3.127000093460083 - - - - - - - 47.60963891632855 - -117.11341199465096 - - 659.0 - 6847.5498046875 - - - 3.23799991607666 - - - - - - - 47.60961293242872 - -117.11345499381423 - - 659.0 - 6851.89013671875 - - - 4.385000228881836 - - - - - - - 47.60956599377096 - -117.11351693607867 - - 659.4000244140625 - 6858.89013671875 - - - 3.486999988555908 - - - - - - - 47.609542943537235 - -117.11353998631239 - - 659.5999755859375 - 6861.97998046875 - - - 3.1789999008178715 - - - - - - - 47.609478989616036 - -117.11362891830504 - - 660.0 - 6871.75 - - - 3.2209999561309814 - - - - - - - 47.609451999887824 - -117.11368197575212 - - 659.7999877929688 - 6876.740234375 - - - 5.175000190734862 - - - - - - - 47.60942299850285 - -117.1137329377234 - - 659.5999755859375 - 6881.75 - - - 4.980000019073486 - - - - - - - 47.609388967975974 - -117.11378398351371 - - 659.5999755859375 - 6887.1298828125 - - - 5.4720001220703125 - - - - - - - 47.609351919963956 - -117.1138399746269 - - 659.4000244140625 - 6893.02001953125 - - - 5.692999839782715 - - - - - - - 47.60931294411421 - -117.1138999890536 - - 659.2000122070312 - 6899.27001953125 - - - 6.390999794006348 - - - - - - - 47.6092719566077 - -117.11396796628833 - - 659.0 - 6906.1298828125 - - - 6.505000114440918 - - - - - - - 47.60922895744443 - -117.11403594352305 - - 659.0 - 6913.1201171875 - - - 7.431000232696534 - - - - - - - 47.60918796993792 - -117.1141129732132 - - 658.5999755859375 - 6920.490234375 - - - 7.132999897003174 - - - - - - - 47.60914899408817 - -117.11419796571136 - - 658.2000122070312 - 6928.22021484375 - - - 8.003000259399414 - - - - - - - 47.60912493802607 - -117.11431698873639 - - 657.4000244140625 - 6937.5498046875 - - - 8.960000038146973 - - - - - - - 47.6090819388628 - -117.11442293599248 - - 657.0 - 6946.85009765625 - - - 9.680999755859375 - - - - - - - 47.60906299576163 - -117.1145479939878 - - 656.2000122070312 - 6956.47998046875 - - - 9.236000061035156 - - - - - - - 47.609045980498195 - -117.11468394845724 - - 656.0 - 6966.8798828125 - - - 10.866000175476072 - - - - - - - 47.609045980498195 - -117.11468394845724 - - 656.0 - 6966.8798828125 - - - 0.0 - - - - - - - 47.60905293747783 - -117.11485292762518 - - 656.2000122070312 - 6979.60986328125 - - - 13.5 - - - - - - - 47.60905997827649 - -117.11498293094337 - - 656.4000244140625 - 6989.41015625 - - - 9.321000099182129 - - - - - - - 47.609087973833084 - -117.11511494591832 - - 656.5999755859375 - 6999.81982421875 - - - 10.845999717712402 - - - - - - - 47.60910892859101 - -117.11522592231631 - - 657.2000122070312 - 7008.47998046875 - - - 8.333000183105469 - - - - - - - 47.609132984653115 - -117.11532399058342 - - 657.7999877929688 - 7016.31982421875 - - - 8.39900016784668 - - - - - - - 47.6091649197042 - -117.11539993062615 - - 658.5999755859375 - 7023.0498046875 - - - 6.39900016784668 - - - - - - - 47.609198950231075 - -117.11546899750829 - - 659.0 - 7029.47021484375 - - - 6.729000091552734 - - - - - - - 47.60922694578767 - -117.11552297696471 - - 659.4000244140625 - 7034.58984375 - - - 4.868000030517578 - - - - - - - 47.6092669274658 - -117.11556597612798 - - 659.5999755859375 - 7040.080078125 - - - 5.732999801635741 - - - - - - - 47.60933993384242 - -117.11562993004918 - - 660.5999755859375 - 7049.52001953125 - - - 4.683000087738037 - - - - - - - 47.60938192717731 - -117.1156669780612 - - 661.0 - 7054.9501953125 - - - 5.501999855041504 - - - - - - - 47.60944194160402 - -117.11571391671896 - - 661.7999877929688 - 7062.5 - - - 3.694999933242798 - - - - - - - 47.60946792550385 - -117.11572498083115 - - 662.0 - 7065.509765625 - - - 3.1449999809265137 - - - - - - - 47.6095499843359 - -117.11575892753899 - - 662.5999755859375 - 7074.97998046875 - - - 2.3450000286102295 - - - - - - - 47.60956599377096 - -117.1157549880445 - - 662.5999755859375 - 7076.77978515625 - - - 1.8660000562667847 - - - - - - - 47.609650986269116 - -117.11575792171061 - - 663.0 - 7086.240234375 - - - 2.3369998931884766 - - - - - - - 47.60967797599733 - -117.11575398221612 - - 663.0 - 7089.25 - - - 3.1989998817443848 - - - - - - - 47.60976397432387 - -117.11576194502413 - - 663.4000244140625 - 7098.830078125 - - - 2.380000114440918 - - - - - - - 47.60978694073856 - -117.11576999165118 - - 663.5999755859375 - 7101.4599609375 - - - 2.691999912261963 - - - - - - - 47.60985198430717 - -117.11579999886453 - - 664.0 - 7109.02978515625 - - - 2.484999895095825 - - - - - - - 47.60987495072186 - -117.1158099733293 - - 664.0 - 7111.7001953125 - - - 2.7790000438690186 - - - - - - - 47.6099419221282 - -117.11583897471428 - - 664.7999877929688 - 7119.4599609375 - - - 2.556999921798706 - - - - - - - 47.609968995675445 - -117.11583696305752 - - 664.7999877929688 - 7122.4599609375 - - - 3.121000051498413 - - - - - - - 47.61005197651684 - -117.11584794335067 - - 665.2000122070312 - 7131.72998046875 - - - 3.0569999217987065 - - - - - - - 47.610076954588294 - -117.11585498414934 - - 665.4000244140625 - 7134.56005859375 - - - 2.921999931335449 - - - - - - - 47.61015297845006 - -117.11589094251394 - - 666.0 - 7143.43017578125 - - - 2.9509999752044678 - - - - - - - 47.6101699937135 - -117.11589898914099 - - 666.0 - 7145.419921875 - - - 2.003999948501587 - - - - - - - 47.61023797094822 - -117.11596596054733 - - 666.7999877929688 - 7154.5 - - - 3.013000011444092 - - - - - - - 47.61025993153453 - -117.11598297581077 - - 667.0 - 7157.259765625 - - - 2.8129999637603755 - - - - - - - 47.610321957618 - -117.11605296470225 - - 667.5999755859375 - 7165.93017578125 - - - 2.8299999237060547 - - - - - - - 47.610338972881436 - -117.11607299745083 - - 667.7999877929688 - 7168.35009765625 - - - 2.5450000762939453 - - - - - - - 47.61038691736758 - -117.11614893749356 - - 668.7999877929688 - 7176.169921875 - - - 2.5810000896453857 - - - - - - - 47.61040695011616 - -117.11616997607052 - - 669.0 - 7178.89013671875 - - - 2.835000038146972 - - - - - - - 47.61046193540096 - -117.11625597439706 - - 669.5999755859375 - 7187.7900390625 - - - 2.9230000972747803 - - - - - - - 47.61047593317926 - -117.11628497578204 - - 669.7999877929688 - 7190.47021484375 - - - 2.790999889373779 - - - - - - - 47.61051993817091 - -117.11638296023011 - - 670.4000244140625 - 7199.31982421875 - - - 2.9260001182556152 - - - - - - - 47.61052496731281 - -117.1164109557867 - - 670.5999755859375 - 7201.490234375 - - - 2.2130000591278076 - - - - - - - 47.61053695343435 - -117.11651899851859 - - 671.2000122070312 - 7209.72021484375 - - - 2.7249999046325684 - - - - - - - 47.61054198257625 - -117.11655395105481 - - 671.4000244140625 - 7212.41015625 - - - 2.778000116348266 - - - - - - - 47.61055497452617 - -117.11665797047317 - - 671.7999877929688 - 7220.35986328125 - - - 2.6110000610351562 - - - - - - - 47.61055799201131 - -117.1166929230094 - - 671.7999877929688 - 7223.02001953125 - - - 2.740000009536743 - - - - - - - 47.6105619315058 - -117.11680892854929 - - 672.2000122070312 - 7231.75 - - - 2.1659998893737793 - - - - - - - 47.61056092567742 - -117.11684295907617 - - 672.0 - 7234.31005859375 - - - 2.6679999828338623 - - - - - - - 47.61053997091949 - -117.11695997044444 - - 671.7999877929688 - 7243.41015625 - - - 3.009000062942505 - - - - - - - 47.610530918464065 - -117.11700799874961 - - 671.5999755859375 - 7247.14990234375 - - - 3.8369998931884766 - - - - - - - 47.610509963706136 - -117.11711294017732 - - 671.7999877929688 - 7255.39013671875 - - - 4.110000133514404 - - - - - - - 47.6104979775846 - -117.11717697791755 - - 671.5999755859375 - 7260.3798828125 - - - 4.514999866485596 - - - - - - - 47.610488925129175 - -117.11724193766713 - - 671.2000122070312 - 7265.3701171875 - - - 5.363999843597412 - - - - - - - 47.61048096232116 - -117.11730698123574 - - 671.0 - 7270.33984375 - - - 5.01800012588501 - - - - - - - 47.61047299951315 - -117.11737093515694 - - 671.0 - 7275.22998046875 - - - 4.638000011444092 - - - - - - - 47.610463947057724 - -117.11744293570518 - - 671.2000122070312 - 7280.72998046875 - - - 6.076000213623047 - - - - - - - 47.61045497842133 - -117.11751493625343 - - 670.7999877929688 - 7286.240234375 - - - 5.894000053405762 - - - - - - - 47.610446931794286 - -117.11758894845843 - - 670.5999755859375 - 7291.8701171875 - - - 5.6570000648498535 - - - - - - - 47.61043896898627 - -117.11765893734992 - - 670.7999877929688 - 7297.2099609375 - - - 4.473999977111816 - - - - - - - 47.61042991653085 - -117.11773496121168 - - 671.0 - 7303.009765625 - - - 7.0229997634887695 - - - - - - - 47.610420947894454 - -117.11780495010316 - - 671.0 - 7308.3701171875 - - - 5.190999984741211 - - - - - - - 47.61041298508644 - -117.11787695065141 - - 671.2000122070312 - 7313.85986328125 - - - 5.66099977493286 - - - - - - - 47.610402926802635 - -117.11794995702803 - - 671.4000244140625 - 7319.4599609375 - - - 5.243000030517578 - - - - - - - 47.61039395816624 - -117.11801793426275 - - 671.5999755859375 - 7324.669921875 - - - 5.072999954223632 - - - - - - - 47.610378954559565 - -117.11813595145941 - - 672.0 - 7333.68994140625 - - - 4.689000129699707 - - - - - - - 47.61037593707442 - -117.11819395422935 - - 672.0 - 7338.06982421875 - - - 4.4670000076293945 - - - - - - - 47.610381972044706 - -117.11830794811249 - - 672.0 - 7346.66015625 - - - 4.241000175476074 - - - - - - - 47.61038297787309 - -117.11836092174053 - - 671.7999877929688 - 7350.64990234375 - - - 4.079999923706055 - - - - - - - 47.610395969823 - -117.11845798417926 - - 671.5999755859375 - 7358.080078125 - - - 3.6410000324249268 - - - - - - - 47.610402926802635 - -117.11850794032216 - - 671.4000244140625 - 7361.919921875 - - - 4.0370001792907715 - - - - - - - 47.61041197925806 - -117.11860097944736 - - 671.2000122070312 - 7368.990234375 - - - 3.510999917984009 - - - - - - - 47.61041298508644 - -117.11865093559027 - - 671.4000244140625 - 7372.75 - - - 3.8420000076293945 - - - - - - - 47.6104099676013 - -117.11876291781664 - - 672.4000244140625 - 7381.18017578125 - - - 4.126999855041504 - - - - - - - 47.61040795594454 - -117.11881899274886 - - 673.0 - 7385.39013671875 - - - 4.323999881744385 - - - - - - - 47.610402926802635 - -117.11892594583333 - - 674.2000122070312 - 7393.4599609375 - - - 3.931999921798706 - - - - - - - 47.610402926802635 - -117.11897799745202 - - 674.5999755859375 - 7397.3701171875 - - - 4.13700008392334 - - - - - - - 47.610401920974255 - -117.11906793527305 - - 675.2000122070312 - 7404.1298828125 - - - 3.240999937057495 - - - - - - - 47.61041197925806 - -117.1191169694066 - - 675.4000244140625 - 7407.97998046875 - - - 4.243000030517578 - - - - - - - 47.610424971207976 - -117.11922895163298 - - 676.4000244140625 - 7416.52978515625 - - - 2.8010001182556152 - - - - - - - 47.61042798869312 - -117.11924898438156 - - 676.5999755859375 - 7418.06982421875 - - - 1.6130000352859497 - - - - - - - 47.61046294122934 - -117.11935099214315 - - 676.5999755859375 - 7426.669921875 - - - 2.8359999656677246 - - - - - - - 47.61047794483602 - -117.11939692497253 - - 676.7999877929688 - 7430.5 - - - 4.054999828338623 - - - - - - - 47.61050392873585 - -117.1194819174707 - - 677.4000244140625 - 7437.52001953125 - - - 3.493000030517578 - - - - - - - 47.61051993817091 - -117.11952298879623 - - 677.5999755859375 - 7441.080078125 - - - 3.5810000896453857 - - - - - - - 47.610552962869406 - -117.11960094049573 - - 677.7999877929688 - 7448.0 - - - 2.2639999389648438 - - - - - - - 47.61057894676924 - -117.1196579374373 - - 677.7999877929688 - 7453.169921875 - - - 5.210999965667725 - - - - - - - 47.610617922618985 - -117.11976598016918 - - 677.7999877929688 - 7462.3701171875 - - - 3.0739998817443848 - - - - - - - 47.610636949539185 - -117.11982096545398 - - 677.7999877929688 - 7467.009765625 - - - 4.752999782562256 - - - - - - - 47.610654970631 - -117.1199129987508 - - 678.0 - 7474.2099609375 - - - 3.5369999408721924 - - - - - - - 47.610661927610636 - -117.11995096877217 - - 678.0 - 7477.18017578125 - - - 3.094000101089478 - - - - - - - 47.61066997423768 - -117.12007795460522 - - 678.4000244140625 - 7486.77001953125 - - - 3.1630001068115234 - - - - - - - 47.61067198589444 - -117.1201289165765 - - 678.2000122070312 - 7490.60986328125 - - - 3.9800000190734863 - - - - - - - 47.61066796258092 - -117.12023997679353 - - 677.7999877929688 - 7498.9599609375 - - - 4.10699987411499 - - - - - - - 47.610655976459384 - -117.12031197734177 - - 677.7999877929688 - 7504.5400390625 - - - 5.736000061035156 - - - - - - - 47.610638961195946 - -117.1203849837184 - - 677.5999755859375 - 7510.33984375 - - - 5.747000217437744 - - - - - - - 47.610615994781256 - -117.12046092376113 - - 677.2000122070312 - 7516.60009765625 - - - 6.427000045776367 - - - - - - - 47.61057794094086 - -117.12052898481488 - - 677.0 - 7523.240234375 - - - 6.514999866485596 - - - - - - - 47.61053594760597 - -117.12059997953475 - - 676.7999877929688 - 7530.330078125 - - - 7.157000064849854 - - - - - - - 47.610487919300795 - -117.12066896259785 - - 676.4000244140625 - 7537.77001953125 - - - 7.177000045776367 - - - - - - - 47.61043393984437 - -117.12073392234743 - - 676.2000122070312 - 7545.509765625 - - - 8.031000137329102 - - - - - - - 47.61037392541766 - -117.12079796008766 - - 675.7999877929688 - 7553.740234375 - - - 7.818999767303467 - - - - - - - 47.610311983153224 - -117.12085998617113 - - 675.5999755859375 - 7562.06005859375 - - - 8.732000350952148 - - - - - - - 47.61024794541299 - -117.12092192843556 - - 675.4000244140625 - 7570.56982421875 - - - 8.324000358581543 - - - - - - - 47.61017795652151 - -117.12097993120551 - - 675.4000244140625 - 7579.490234375 - - - 9.102999687194824 - - - - - - - 47.61010696180165 - -117.12104296311736 - - 675.2000122070312 - 7588.68994140625 - - - 9.432000160217285 - - - - - - - 47.61003294959664 - -117.12111194618046 - - 674.7999877929688 - 7598.419921875 - - - 9.479999542236328 - - - - - - - 47.61003294959664 - -117.12111194618046 - - 674.7999877929688 - 7598.419921875 - - - 0.0 - - - - - - - 47.60995499789715 - -117.12118193507195 - - 674.0 - 7608.56005859375 - - - 10.479999542236328 - - - - - - - 47.60995499789715 - -117.12118193507195 - - 674.0 - 7608.56005859375 - - - 0.0 - - - - - - - 47.60987495072186 - -117.12125192396343 - - 673.2000122070312 - 7618.89990234375 - - - 10.937000274658203 - - - - - - - 47.60987495072186 - -117.12125192396343 - - 673.2000122070312 - 7618.89990234375 - - - 0.0 - - - - - - - 47.60979096405208 - -117.12131998501718 - - 672.4000244140625 - 7629.5498046875 - - - 11.13700008392334 - - - - - - - 47.60979096405208 - -117.12131998501718 - - 672.4000244140625 - 7629.5498046875 - - - 0.0 - - - - - - - 47.6097069773823 - -117.12139198556542 - - 671.5999755859375 - 7640.33984375 - - - 11.128999710083006 - - - - - - - 47.6097069773823 - -117.12139198556542 - - 671.5999755859375 - 7640.33984375 - - - 0.0 - - - - - - - 47.60961796157062 - -117.12146298028529 - - 671.0 - 7651.580078125 - - - 11.79800033569336 - - - - - - - 47.60961796157062 - -117.12146298028529 - - 671.0 - 7651.580078125 - - - 0.0 - - - - - - - 47.6095259282738 - -117.12153892032802 - - 670.2000122070312 - 7663.2998046875 - - - 11.883000373840332 - - - - - - - 47.6095259282738 - -117.12153892032802 - - 670.2000122070312 - 7663.2998046875 - - - 0.0 - - - - - - - 47.609431967139244 - -117.12161796167493 - - 669.2000122070312 - 7675.31982421875 - - - 12.392999649047853 - - - - - - - 47.609431967139244 - -117.12161796167493 - - 669.2000122070312 - 7675.31982421875 - - - 0.0 - - - - - - - 47.60933599434793 - -117.12170295417309 - - 668.4000244140625 - 7687.759765625 - - - 12.642999649047852 - - - - - - - 47.60933599434793 - -117.12170295417309 - - 668.4000244140625 - 7687.759765625 - - - 0.0 - - - - - - - 47.60923692025244 - -117.12178199552 - - 667.4000244140625 - 7700.27001953125 - - - 22.2549991607666 - - - - - - - 47.60923692025244 - -117.12178199552 - - 667.4000244140625 - 7700.27001953125 - - - 0.0 - - - - - - - 47.60913994163275 - -117.12186095304787 - - 666.5999755859375 - 7712.580078125 - - - 12.487000465393066 - - - - - - - 47.60913994163275 - -117.12186095304787 - - 666.5999755859375 - 7712.580078125 - - - 0.0 - - - - - - - 47.60904396884143 - -117.12194091640413 - - 665.7999877929688 - 7724.830078125 - - - 12.539999961853027 - - - - - - - 47.60904396884143 - -117.12194091640413 - - 665.7999877929688 - 7724.830078125 - - - 0.0 - - - - - - - 47.60894891805947 - -117.12202297523618 - - 664.7999877929688 - 7737.06005859375 - - - 12.194000244140625 - - - - - - - 47.60894891805947 - -117.12202297523618 - - 664.7999877929688 - 7737.06005859375 - - - 0.0 - - - - - - - 47.608851939439774 - -117.12210293859243 - - 664.0 - 7749.41015625 - - - 12.822999954223633 - - - - - - - 47.608851939439774 - -117.12210293859243 - - 664.0 - 7749.41015625 - - - 0.0 - - - - - - - 47.6087539549917 - -117.12218097411096 - - 663.2000122070312 - 7761.7900390625 - - - 12.822999954223633 - - - - - - - 47.6087539549917 - -117.12218097411096 - - 663.2000122070312 - 7761.7900390625 - - - 0.0 - - - - - - - 47.608656976372004 - -117.12225993163884 - - 662.5999755859375 - 7774.10009765625 - - - 12.772000312805176 - - - - - - - 47.608656976372004 - -117.12225993163884 - - 662.5999755859375 - 7774.10009765625 - - - 0.0 - - - - - - - 47.60856192559004 - -117.12233696132898 - - 662.4000244140625 - 7786.14990234375 - - - 12.61299991607666 - - - - - - - 47.60856192559004 - -117.12233696132898 - - 662.4000244140625 - 7786.14990234375 - - - 0.0 - - - - - - - 47.608467964455485 - -117.122418936342 - - 661.7999877929688 - 7798.27978515625 - - - 12.935999870300293 - - - - - - - 47.608467964455485 - -117.122418936342 - - 661.7999877929688 - 7798.27978515625 - - - 0.0 - - - - - - - 47.608382971957326 - -117.12249194271863 - - 661.5999755859375 - 7809.2099609375 - - - 11.289999961853027 - - - - - - - 47.608382971957326 - -117.12249194271863 - - 661.5999755859375 - 7809.2099609375 - - - 0.0 - - - - - - - 47.60832597501576 - -117.12262898683548 - - 660.5999755859375 - 7821.2998046875 - - - 12.468000411987305 - - - - - - - 47.60832597501576 - -117.12262898683548 - - 660.5999755859375 - 7821.2998046875 - - - 0.0 - - - - - - - 47.60829194448888 - -117.12280492298305 - - 659.2000122070312 - 7835.06005859375 - - - 14.144000053405762 - - - - - - - 47.60829194448888 - -117.12280492298305 - - 659.2000122070312 - 7835.06005859375 - - - 0.0 - - - - - - - 47.60825699195266 - -117.12295294739306 - - 658.4000244140625 - 7846.85009765625 - - - 12.279999732971191 - - - - - - - 47.60825699195266 - -117.12295294739306 - - 658.4000244140625 - 7846.85009765625 - - - 0.0 - - - - - - - 47.60821499861777 - -117.12310692295432 - - 657.4000244140625 - 7859.33984375 - - - 12.857999801635742 - - - - - - - 47.60821499861777 - -117.12310692295432 - - 657.4000244140625 - 7859.33984375 - - - 0.0 - - - - - - - 47.608165964484215 - -117.12326693348587 - - 656.5999755859375 - 7872.5400390625 - - - 13.916000366210938 - - - - - - - 47.608165964484215 - -117.12326693348587 - - 656.5999755859375 - 7872.5400390625 - - - 0.0 - - - - - - - 47.60809597559273 - -117.12340297177434 - - 656.2000122070312 - 7885.39990234375 - - - 13.032999992370605 - - - - - - - 47.60809597559273 - -117.12340297177434 - - 656.2000122070312 - 7885.39990234375 - - - 0.0 - - - - - - - 47.608018945902586 - -117.12354194372892 - - 655.5999755859375 - 7898.91015625 - - - 14.434000015258789 - - - - - - - 47.608018945902586 - -117.12354194372892 - - 655.5999755859375 - 7898.91015625 - - - 0.0 - - - - - - - 47.60793495923281 - -117.12368192151189 - - 655.0 - 7912.97998046875 - - - 14.508000373840332 - - - - - - - 47.60793495923281 - -117.12368192151189 - - 655.0 - 7912.97998046875 - - - 0.0 - - - - - - - 47.607839992269874 - -117.12382399477065 - - 654.4000244140625 - 7928.0 - - - 15.387999534606935 - - - - - - - 47.607839992269874 - -117.12382399477065 - - 654.4000244140625 - 7928.0 - - - 0.0 - - - - - - - 47.60773899033666 - -117.12396196089685 - - 653.4000244140625 - 7943.2900390625 - - - 16.264999389648438 - - - - - - - 47.60773899033666 - -117.12396196089685 - - 653.4000244140625 - 7943.2900390625 - - - 0.0 - - - - - - - 47.60762097314 - -117.12406497448683 - - 652.5999755859375 - 7958.52001953125 - - - 15.803999900817871 - - - - - - - 47.60762097314 - -117.12406497448683 - - 652.5999755859375 - 7958.52001953125 - - - 0.0 - - - - - - - 47.607498932629824 - -117.1241719275713 - - 652.0 - 7974.2900390625 - - - 15.977999687194826 - - - - - - - 47.607498932629824 - -117.1241719275713 - - 652.0 - 7974.2900390625 - - - 0.0 - - - - - - - 47.60738192126155 - -117.12427795864642 - - 651.0 - 7989.5498046875 - - - 15.472000122070312 - - - - - - - 47.60738192126155 - -117.12427795864642 - - 651.0 - 7989.5498046875 - - - 0.0 - - - - - - - 47.607266921550035 - -117.12438197806478 - - 649.7999877929688 - 8004.52978515625 - - - 15.293999671936035 - - - - - - - 47.607266921550035 - -117.12438197806478 - - 649.7999877929688 - 8004.52978515625 - - - 0.0 - - - - - - - 47.6071529276669 - -117.1244689822197 - - 648.5999755859375 - 8018.7998046875 - - - 14.810999870300293 - - - - - - - 47.6071529276669 - -117.1244689822197 - - 648.5999755859375 - 8018.7998046875 - - - 0.0 - - - - - - - 47.60703097097576 - -117.12451499886811 - - 648.0 - 8032.7998046875 - - - 14.41600036621094 - - - - - - - 47.60703097097576 - -117.12451499886811 - - 648.0 - 8032.7998046875 - - - 0.0 - - - - - - - 47.60690893046558 - -117.12454995140433 - - 647.4000244140625 - 8046.60986328125 - - - 14.621000289916992 - - - - - - - 47.60690893046558 - -117.12454995140433 - - 647.4000244140625 - 8046.60986328125 - - - 0.0 - - - - - - - 47.606792924925685 - -117.12454391643405 - - 647.5999755859375 - 8059.52001953125 - - - 13.062000274658203 - - - - - - - 47.606792924925685 - -117.12454391643405 - - 647.5999755859375 - 8059.52001953125 - - - 0.0 - - - - - - - 47.606682954356074 - -117.12453595362604 - - 647.4000244140625 - 8071.759765625 - - - 12.75500011444092 - - - - - - - 47.606682954356074 - -117.12453595362604 - - 647.4000244140625 - 8071.759765625 - - - 0.0 - - - - - - - 47.606579940766096 - -117.1245239675045 - - 646.7999877929688 - 8083.25 - - - 12.142999649047852 - - - - - - - 47.606579940766096 - -117.1245239675045 - - 646.7999877929688 - 8083.25 - - - 0.0 - - - - - - - 47.60647198185325 - -117.12454793974757 - - 645.5999755859375 - 8095.39013671875 - - - 12.557000160217285 - - - - - - - 47.60647198185325 - -117.12454793974757 - - 645.5999755859375 - 8095.39013671875 - - - 0.0 - - - - - - - 47.60637299157679 - -117.12461298331618 - - 644.4000244140625 - 8107.43994140625 - - - 12.493000030517578 - - - - - - - 47.60637299157679 - -117.12461298331618 - - 644.4000244140625 - 8107.43994140625 - - - 0.0 - - - - - - - 47.6062929444015 - -117.12472697719932 - - 642.4000244140625 - 8119.7900390625 - - - 12.76099967956543 - - - - - - - 47.6062929444015 - -117.12472697719932 - - 642.4000244140625 - 8119.7900390625 - - - 0.0 - - - - - - - 47.60622496716678 - -117.12487592361867 - - 640.2000122070312 - 8133.31005859375 - - - 14.050000190734863 - - - - - - - 47.60622496716678 - -117.12487592361867 - - 640.2000122070312 - 8133.31005859375 - - - 0.0 - - - - - - - 47.60616294108331 - -117.12503492832184 - - 638.4000244140625 - 8147.10986328125 - - - 14.270999908447266 - - - - - - - 47.60616294108331 - -117.12503492832184 - - 638.4000244140625 - 8147.10986328125 - - - 0.0 - - - - - - - 47.60610996745527 - -117.12518697604537 - - 638.0 - 8159.9599609375 - - - 13.147999763488771 - - - - - - - 47.60610996745527 - -117.12518697604537 - - 638.0 - 8159.9599609375 - - - 0.0 - - - - - - - 47.606057999655604 - -117.12534992024302 - - 637.7999877929688 - 8173.52001953125 - - - 14.25 - - - - - - - 47.606057999655604 - -117.12534992024302 - - 637.7999877929688 - 8173.52001953125 - - - 0.0 - - - - - - - 47.60600795969367 - -117.12550196796656 - - 638.2000122070312 - 8186.22998046875 - - - 12.902999877929688 - - - - - - - 47.60600795969367 - -117.12550196796656 - - 638.2000122070312 - 8186.22998046875 - - - 0.0 - - - - - - - 47.6059649605304 - -117.1256479807198 - - 638.4000244140625 - 8198.2001953125 - - - 12.407999992370605 - - - - - - - 47.6059649605304 - -117.1256479807198 - - 638.4000244140625 - 8198.2001953125 - - - 0.0 - - - - - - - 47.60592196136713 - -117.12578795850277 - - 638.7999877929688 - 8209.759765625 - - - 12.055999755859377 - - - - - - - 47.60592196136713 - -117.12578795850277 - - 638.7999877929688 - 8209.759765625 - - - 0.0 - - - - - - - 47.605889942497015 - -117.12591695599258 - - 639.0 - 8220.08984375 - - - 10.553000450134277 - - - - - - - 47.60587099939585 - -117.12602399289608 - - 639.2000122070312 - 8228.41015625 - - - 8.123000144958496 - - - - - - - 47.605867981910706 - -117.12613195180893 - - 639.2000122070312 - 8236.5400390625 - - - 8.378999710083008 - - - - - - - 47.605865970253944 - -117.12623295374215 - - 639.4000244140625 - 8244.1396484375 - - - 7.20800018310547 - - - - - - - 47.605864964425564 - -117.1263369731605 - - 639.4000244140625 - 8251.9599609375 - - - 8.338000297546387 - - - - - - - 47.60586395859718 - -117.12643093429506 - - 639.4000244140625 - 8259.0302734375 - - - 6.699999809265137 - - - - - - - 47.605867981910706 - -117.1265269909054 - - 639.4000244140625 - 8266.259765625 - - - 7.387000083923341 - - - - - - - 47.60587493889034 - -117.12663293816149 - - 639.4000244140625 - 8274.26953125 - - - 7.859000205993652 - - - - - - - 47.60588399134576 - -117.12671893648803 - - 639.2000122070312 - 8280.8095703125 - - - 6.829999923706055 - - - - - - - 47.60589497163892 - -117.1267999894917 - - 639.2000122070312 - 8287.01953125 - - - 5.860000133514404 - - - - - - - 47.60590595193207 - -117.12686997838318 - - 639.2000122070312 - 8292.4296875 - - - 5.7179999351501465 - - - - - - - 47.60592891834676 - -117.12699495255947 - - 639.2000122070312 - 8302.169921875 - - - 4.735000133514404 - - - - - - - 47.60594098828733 - -117.12705295532942 - - 639.2000122070312 - 8306.73046875 - - - 4.9039998054504395 - - - - - - - 47.6059699896723 - -117.12717197835445 - - 639.2000122070312 - 8316.240234375 - - - 4.620999813079834 - - - - - - - 47.60598599910736 - -117.12723299860954 - - 639.0 - 8321.16015625 - - - 5.1620001792907715 - - - - - - - 47.60600192472339 - -117.12730097584426 - - 639.0 - 8326.5703125 - - - 5.176000118255615 - - - - - - - 47.606017934158444 - -117.1273679472506 - - 639.0 - 8331.91015625 - - - 5.541999816894531 - - - - - - - 47.60602992027998 - -117.12744397111237 - - 639.2000122070312 - 8337.7802734375 - - - 5.752999782562256 - - - - - - - 47.606040984392166 - -117.12752896361053 - - 639.5999755859375 - 8344.2900390625 - - - 6.743000030517578 - - - - - - - 47.6060529705137 - -117.12761999107897 - - 639.5999755859375 - 8351.259765625 - - - 6.848000049591065 - - - - - - - 47.606060933321714 - -117.12771294638515 - - 639.5999755859375 - 8358.3095703125 - - - 7.185999870300293 - - - - - - - 47.60606797412038 - -117.12780992500484 - - 639.4000244140625 - 8365.6396484375 - - - 6.959000110626221 - - - - - - - 47.606059927493334 - -117.12791495025158 - - 639.5999755859375 - 8373.58984375 - - - 8.319000244140625 - - - - - - - 47.60605196468532 - -117.12802299298346 - - 640.0 - 8381.759765625 - - - 7.89300012588501 - - - - - - - 47.606039978563786 - -117.12813899852335 - - 640.4000244140625 - 8390.580078125 - - - 9.097000122070312 - - - - - - - 47.60602698661387 - -117.12825894355774 - - 640.0 - 8399.7197265625 - - - 8.829000473022461 - - - - - - - 47.60600997135043 - -117.12839297018945 - - 640.2000122070312 - 8409.9697265625 - - - 10.689999580383299 - - - - - - - 47.60599295608699 - -117.12852096185088 - - 639.7999877929688 - 8419.7802734375 - - - 9.210000038146973 - - - - - - - 47.60598197579384 - -117.1286579221487 - - 639.4000244140625 - 8430.150390625 - - - 11.119000434875487 - - - - - - - 47.60598197579384 - -117.1286579221487 - - 639.4000244140625 - 8430.150390625 - - - 0.0 - - - - - - - 47.605974934995174 - -117.12879496626556 - - 639.0 - 8440.490234375 - - - 10.73900032043457 - - - - - - - 47.60596898384392 - -117.12891994044185 - - 638.5999755859375 - 8449.91015625 - - - 9.246999740600586 - - - - - - - 47.6059599313885 - -117.12905497290194 - - 638.2000122070312 - 8460.1103515625 - - - 10.324000358581543 - - - - - - - 47.6059599313885 - -117.12905497290194 - - 638.2000122070312 - 8460.1103515625 - - - 0.0 - - - - - - - 47.605951968580484 - -117.12919897399843 - - 637.7999877929688 - 8470.9697265625 - - - 11.30500030517578 - - - - - - - 47.60594492778182 - -117.129329983145 - - 637.2000122070312 - 8480.849609375 - - - 9.454999923706055 - - - - - - - 47.60593897663057 - -117.12945193983614 - - 636.7999877929688 - 8490.0498046875 - - - 9.847999572753906 - - - - - - - 47.605934953317046 - -117.12956794537604 - - 636.5999755859375 - 8498.7802734375 - - - 8.39799976348877 - - - - - - - 47.605932941660285 - -117.12968093343079 - - 636.2000122070312 - 8507.2802734375 - - - 8.708999633789062 - - - - - - - 47.605932941660285 - -117.12979098781943 - - 635.7999877929688 - 8515.5498046875 - - - 8.085000038146973 - - - - - - - 47.605934953317046 - -117.1298979409039 - - 635.7999877929688 - 8523.599609375 - - - 8.446000099182129 - - - - - - - 47.60593998245895 - -117.12999299168587 - - 635.7999877929688 - 8530.76953125 - - - 6.948999881744385 - - - - - - - 47.60594995692372 - -117.1300879586488 - - 635.5999755859375 - 8538.0 - - - 7.383999824523926 - - - - - - - 47.60596294887364 - -117.13019994087517 - - 635.4000244140625 - 8546.5400390625 - - - 7.379000186920166 - - - - - - - 47.605975940823555 - -117.13030496612191 - - 635.5999755859375 - 8554.5703125 - - - 9.387999534606934 - - - - - - - 47.60599094443023 - -117.1304159425199 - - 635.7999877929688 - 8563.080078125 - - - 8.270999908447266 - - - - - - - 47.60600997135043 - -117.13053295388818 - - 636.2000122070312 - 8572.1298828125 - - - 9.270000457763672 - - - - - - - 47.60602799244225 - -117.13062699884176 - - 636.0 - 8579.4697265625 - - - 7.159999847412109 - - - - - - - 47.60604995302856 - -117.13073998689651 - - 635.7999877929688 - 8588.3095703125 - - - 9.307000160217285 - - - - - - - 47.60606998577714 - -117.1308459341526 - - 635.7999877929688 - 8596.58984375 - - - 7.986999988555908 - - - - - - - 47.60609395802021 - -117.13096395134926 - - 635.5999755859375 - 8605.849609375 - - - 9.503000259399414 - - - - - - - 47.60611994192004 - -117.13107593357563 - - 635.4000244140625 - 8614.759765625 - - - 8.496000289916992 - - - - - - - 47.606146931648254 - -117.13118892163038 - - 635.2000122070312 - 8623.76953125 - - - 9.357999801635742 - - - - - - - 47.60617794468999 - -117.13130098767579 - - 635.0 - 8632.8701171875 - - - 8.878000259399414 - - - - - - - 47.60621398687363 - -117.13141196407378 - - 634.7999877929688 - 8642.1298828125 - - - 9.503000259399414 - - - - - - - 47.60626796633005 - -117.13151095435023 - - 634.5999755859375 - 8651.6904296875 - - - 9.168999671936035 - - - - - - - 47.606318928301334 - -117.13159695267677 - - 634.4000244140625 - 8660.2900390625 - - - 7.190999984741211 - - - - - - - 47.60638698935509 - -117.1316749881953 - - 634.7999877929688 - 8669.8603515625 - - - 9.027000427246094 - - - - - - - 47.60645898990333 - -117.13175092823803 - - 635.0 - 8679.6904296875 - - - 10.067000389099121 - - - - - - - 47.606533924117684 - -117.1318179834634 - - 634.5999755859375 - 8689.4404296875 - - - 9.550999641418457 - - - - - - - 47.6066039968282 - -117.1318319812417 - - 634.4000244140625 - 8697.2900390625 - - - 8.138999938964844 - - - - - - - 47.60666996240616 - -117.13183893822134 - - 634.4000244140625 - 8704.650390625 - - - 7.415999889373779 - - - - - - - 47.60673492215574 - -117.13184396736324 - - 634.4000244140625 - 8711.8798828125 - - - 7.236999988555908 - - - - - - - 47.60680097155273 - -117.13184497319162 - - 634.4000244140625 - 8719.2197265625 - - - 6.968999862670899 - - - - - - - 47.60686995461583 - -117.13184597902 - - 634.4000244140625 - 8726.8896484375 - - - 7.992000102996826 - - - - - - - 47.606941955164075 - -117.13184799067676 - - 634.2000122070312 - 8734.900390625 - - - 7.4070000648498535 - - - - - - - 47.60702393017709 - -117.13185092434287 - - 634.0 - 8744.01953125 - - - 9.934000015258789 - - - - - - - 47.60710598900914 - -117.13184991851449 - - 634.0 - 8753.1396484375 - - - 8.758000373840332 - - - - - - - 47.60719198733568 - -117.13184497319162 - - 634.0 - 8762.7099609375 - - - 9.946999549865723 - - - - - - - 47.60727697983384 - -117.13183893822134 - - 634.0 - 8772.169921875 - - - 8.833999633789062 - - - - - - - 47.607361972332 - -117.13183499872684 - - 633.7999877929688 - 8781.6201171875 - - - 10.145000457763672 - - - - - - - 47.60745098814368 - -117.13183499872684 - - 633.4000244140625 - 8791.51953125 - - - 9.635000228881836 - - - - - - - 47.607544949278235 - -117.13183793239295 - - 633.4000244140625 - 8801.9697265625 - - - 10.64500045776367 - - - - - - - 47.607544949278235 - -117.13183793239295 - - 633.4000244140625 - 8801.9697265625 - - - 0.0 - - - - - - - 47.60763899423182 - -117.13183893822134 - - 633.4000244140625 - 8812.419921875 - - - 10.89799976348877 - - - - - - - 47.60763899423182 - -117.13183893822134 - - 633.4000244140625 - 8812.419921875 - - - 0.0 - - - - - - - 47.607736978679895 - -117.13183994404972 - - 633.4000244140625 - 8823.3203125 - - - 11.32699966430664 - - - - - - - 47.607736978679895 - -117.13183994404972 - - 633.4000244140625 - 8823.3203125 - - - 0.0 - - - - - - - 47.60783093981445 - -117.13183499872684 - - 633.0 - 8833.7802734375 - - - 10.826000213623047 - - - - - - - 47.60783093981445 - -117.13183499872684 - - 633.0 - 8833.7802734375 - - - 0.0 - - - - - - - 47.60792397893965 - -117.1318319812417 - - 633.0 - 8844.1201171875 - - - 10.597000122070312 - - - - - - - 47.60792397893965 - -117.1318319812417 - - 633.0 - 8844.1201171875 - - - 0.0 - - - - - - - 47.60801391676068 - -117.13182896375656 - - 633.0 - 8854.1298828125 - - - 10.437000274658203 - - - - - - - 47.60801391676068 - -117.13182896375656 - - 633.0 - 8854.1298828125 - - - 0.0 - - - - - - - 47.60810997337103 - -117.13182795792818 - - 633.0 - 8864.7998046875 - - - 10.717000007629395 - - - - - - - 47.60810997337103 - -117.13182795792818 - - 633.0 - 8864.7998046875 - - - 0.0 - - - - - - - 47.60820494033396 - -117.13182091712952 - - 633.0 - 8875.3798828125 - - - 10.902999877929688 - - - - - - - 47.6082909386605 - -117.1318129543215 - - 633.0 - 8884.9599609375 - - - 9.439000129699707 - - - - - - - 47.60837794281542 - -117.13180893100798 - - 633.0 - 8894.6396484375 - - - 9.795000076293945 - - - - - - - 47.60846394114196 - -117.13180197402835 - - 633.0 - 8904.2099609375 - - - 9.387999534606934 - - - - - - - 47.6085499394685 - -117.13179493322968 - - 633.0 - 8913.7900390625 - - - 9.652999877929688 - - - - - - - 47.608636943623424 - -117.1317939274013 - - 633.0 - 8923.4599609375 - - - 9.390999794006348 - - - - - - - 47.608725959435105 - -117.1317939274013 - - 633.0 - 8933.3603515625 - - - 10.190999984741211 - - - - - - - 47.608812963590026 - -117.13179694488645 - - 633.0 - 8943.0302734375 - - - 9.258999824523926 - - - - - - - 47.60889393277466 - -117.13180297985673 - - 633.0 - 8952.0498046875 - - - 9.664999961853027 - - - - - - - 47.60898093692958 - -117.13180398568511 - - 632.7999877929688 - 8961.7197265625 - - - 9.354999542236328 - - - - - - - 47.60905997827649 - -117.13180599734187 - - 632.5999755859375 - 8970.509765625 - - - 8.954999923706055 - - - - - - - 47.60914195328951 - -117.13180398568511 - - 632.4000244140625 - 8979.6298828125 - - - 8.930999755859375 - - - - - - - 47.60922493413091 - -117.13180398568511 - - 632.2000122070312 - 8988.849609375 - - - 8.689000129699707 - - - - - - - 47.60930799879134 - -117.13180499151349 - - 632.2000122070312 - 8998.080078125 - - - 9.583000183105469 - - - - - - - 47.60939793661237 - -117.1318079251796 - - 632.2000122070312 - 9008.08984375 - - - 10.319000244140625 - - - - - - - 47.60939793661237 - -117.1318079251796 - - 632.2000122070312 - 9008.08984375 - - - 0.0 - - - - - - - 47.60948795825243 - -117.13180993683636 - - 632.2000122070312 - 9018.099609375 - - - 10.612000465393066 - - - - - - - 47.60957395657897 - -117.13181898929179 - - 632.2000122070312 - 9027.6796875 - - - 9.154999732971191 - - - - - - - 47.60965794324875 - -117.13182896375656 - - 632.4000244140625 - 9037.0498046875 - - - 9.956999778747559 - - - - - - - 47.60973899625242 - -117.13184396736324 - - 632.4000244140625 - 9046.1298828125 - - - 8.888999938964844 - - - - - - - 47.60981694795191 - -117.13186693377793 - - 632.4000244140625 - 9054.9697265625 - - - 9.0600004196167 - - - - - - - 47.60988995432854 - -117.13189794681966 - - 632.5999755859375 - 9063.419921875 - - - 8.081000328063965 - - - - - - - 47.60995994322002 - -117.13193591684103 - - 632.4000244140625 - 9071.7099609375 - - - 8.744999885559082 - - - - - - - 47.6100299321115 - -117.13198293931782 - - 632.2000122070312 - 9080.259765625 - - - 8.241999626159668 - - - - - - - 47.610097993165255 - -117.1320359967649 - - 632.0 - 9088.7998046875 - - - 8.73900032043457 - - - - - - - 47.610163958743215 - -117.1320949215442 - - 632.2000122070312 - 9097.3798828125 - - - 8.300999641418457 - - - - - - - 47.610228918492794 - -117.13216197676957 - - 632.5999755859375 - 9106.1904296875 - - - 8.934000015258789 - - - - - - - 47.61029697954655 - -117.13223297148943 - - 632.7999877929688 - 9115.4404296875 - - - 8.994000434875488 - - - - - - - 47.610354982316494 - -117.13230094872415 - - 633.0 - 9123.669921875 - - - 8.519000053405762 - - - - - - - 47.6104149967432 - -117.13237093761563 - - 632.7999877929688 - 9132.169921875 - - - 8.210000038146973 - - - - - - - 47.61047492735088 - -117.1324419323355 - - 632.5999755859375 - 9140.7099609375 - - - 8.975000381469727 - - - - - - - 47.61053695343435 - -117.13251393288374 - - 632.7999877929688 - 9149.48046875 - - - 8.38700008392334 - - - - - - - 47.610593950375915 - -117.13258392177522 - - 633.0 - 9157.7099609375 - - - 8.607999801635742 - - - - - - - 47.61064792983234 - -117.13265592232347 - - 632.7999877929688 - 9165.7998046875 - - - 7.781000137329102 - - - - - - - 47.610698975622654 - -117.13272398337722 - - 632.7999877929688 - 9173.4296875 - - - 7.879000186920166 - - - - - - - 47.610746920108795 - -117.13278793729842 - - 632.7999877929688 - 9180.6201171875 - - - 6.928999900817871 - - - - - - - 47.61079394258559 - -117.1328489575535 - - 633.0 - 9187.5703125 - - - 7.310999870300293 - - - - - - - 47.61083593592048 - -117.13290796615183 - - 633.2000122070312 - 9194.009765625 - - - 6.098999977111816 - - - - - - - 47.610876923426986 - -117.13296596892178 - - 633.0 - 9200.3203125 - - - 6.697000026702882 - - - - - - - 47.610916988924146 - -117.13301894254982 - - 633.0 - 9206.2900390625 - - - 5.559999942779541 - - - - - - - 47.610957976430655 - -117.13307292200625 - - 632.7999877929688 - 9212.400390625 - - - 6.466000080108643 - - - - - - - 47.6109969522804 - -117.13312396779656 - - 633.0 - 9218.1796875 - - - 5.603000164031982 - - - - - - - 47.61103793978691 - -117.13317694142461 - - 633.2000122070312 - 9224.240234375 - - - 6.353000164031983 - - - - - - - 47.61107699945569 - -117.13322698138654 - - 633.4000244140625 - 9229.98046875 - - - 5.625999927520751 - - - - - - - 47.61111396364868 - -117.1332709863782 - - 633.2000122070312 - 9235.259765625 - - - 5.337999820709228 - - - - - - - 47.611154951155186 - -117.13331792503595 - - 633.0 - 9241.01953125 - - - 5.557000160217285 - - - - - - - 47.61119996197522 - -117.13336897082627 - - 633.0 - 9247.330078125 - - - 6.546000003814698 - - - - - - - 47.61124597862363 - -117.13342194445431 - - 633.2000122070312 - 9253.8095703125 - - - 5.915999889373779 - - - - - - - 47.611283948644996 - -117.13346293196082 - - 633.4000244140625 - 9259.0400390625 - - - 5.7729997634887695 - - - - - - - 47.61132292449474 - -117.13350593112409 - - 633.7999877929688 - 9264.4501953125 - - - 5.513000011444092 - - - - - - - 47.61136198416352 - -117.13355496525764 - - 633.7999877929688 - 9270.1396484375 - - - 5.59499979019165 - - - - - - - 47.61140196584165 - -117.13360793888569 - - 633.7999877929688 - 9276.1103515625 - - - 5.785999774932861 - - - - - - - 47.61143993586302 - -117.13365596719086 - - 634.0 - 9281.669921875 - - - 5.757999897003174 - - - - - - - 47.611475978046656 - -117.13369997218251 - - 634.0 - 9286.8603515625 - - - 5.046000003814697 - - - - - - - 47.61151193641126 - -117.13374992832541 - - 634.0 - 9292.349609375 - - - 5.638000011444092 - - - - - - - 47.61154697276652 - -117.13380097411573 - - 634.0 - 9297.8095703125 - - - 5.268000125885009 - - - - - - - 47.61158091947436 - -117.13384598493576 - - 634.2000122070312 - 9302.8896484375 - - - 5.35099983215332 - - - - - - - 47.61161897331476 - -117.13388998992741 - - 634.2000122070312 - 9308.25 - - - 3.9570000171661377 - - - - - - - 47.61165292002261 - -117.13393592275679 - - 634.2000122070312 - 9313.3798828125 - - - 7.931000232696533 - - - - - - - 47.611690973863006 - -117.13399291969836 - - 634.4000244140625 - 9319.400390625 - - - 5.775000095367432 - - - - - - - 47.61172793805599 - -117.13404899463058 - - 634.4000244140625 - 9325.2802734375 - - - 6.105999946594238 - - - - - - - 47.6117689255625 - -117.13410498574376 - - 634.5999755859375 - 9331.490234375 - - - 5.88700008392334 - - - - - - - 47.61180496774614 - -117.13415192440152 - - 634.5999755859375 - 9336.830078125 - - - 5.691999912261963 - - - - - - - 47.611840926110744 - -117.13420196436346 - - 634.5999755859375 - 9342.3203125 - - - 5.35699987411499 - - - - - - - 47.611880991607904 - -117.13425393216312 - - 634.4000244140625 - 9348.240234375 - - - 6.0859999656677255 - - - - - - - 47.61191694997251 - -117.13429793715477 - - 634.5999755859375 - 9353.4296875 - - - 4.9079999923706055 - - - - - - - 47.61195399798453 - -117.13433599099517 - - 634.4000244140625 - 9358.4404296875 - - - 5.217000007629394 - - - - - - - 47.61200093664229 - -117.13436398655176 - - 634.0 - 9364.0703125 - - - 5.447999954223633 - - - - - - - 47.61204795911908 - -117.13439298793674 - - 634.0 - 9369.740234375 - - - 5.855000019073486 - - - - - - - 47.61209397576749 - -117.1344169601798 - - 634.0 - 9375.16015625 - - - 5.276000022888184 - - - - - - - 47.612142926082015 - -117.1344359871 - - 634.0 - 9380.7900390625 - - - 5.829999923706055 - - - - - - - 47.61219698935747 - -117.13445199653506 - - 634.0 - 9386.91015625 - - - 5.927999973297118 - - - - - - - 47.612246945500374 - -117.13445995934308 - - 634.0 - 9392.509765625 - - - 5.764999866485596 - - - - - - - 47.61229799129069 - -117.13446297682822 - - 634.0 - 9398.1796875 - - - 5.478000164031982 - - - - - - - 47.612359933555126 - -117.13446197099984 - - 634.0 - 9405.0703125 - - - 7.181000232696533 - - - - - - - 47.612418942153454 - -117.13446297682822 - - 634.2000122070312 - 9411.6298828125 - - - 6.260000228881837 - - - - - - - 47.61247593909502 - -117.13446498848498 - - 634.4000244140625 - 9417.9697265625 - - - 6.638000011444092 - - - - - - - 47.61254492215812 - -117.13446892797947 - - 634.7999877929688 - 9425.650390625 - - - 7.368000030517578 - - - - - - - 47.612617928534746 - -117.13447093963623 - - 634.7999877929688 - 9433.76953125 - - - 8.626999855041504 - - - - - - - 47.612680960446596 - -117.13447295129299 - - 634.7999877929688 - 9440.7802734375 - - - 6.672999858856201 - - - - - - - 47.61275296099484 - -117.13447496294975 - - 634.7999877929688 - 9448.7802734375 - - - 8.288000106811523 - - - - - - - 47.612805934622884 - -117.13447194546461 - - 634.7999877929688 - 9454.6796875 - - - 5.664999961853027 - - - - - - - 47.6128569804132 - -117.13446892797947 - - 634.7999877929688 - 9460.349609375 - - - 5.9670000076293945 - - - - - - - 47.61294398456812 - -117.13445199653506 - - 635.2000122070312 - 9470.1103515625 - - - 4.828000068664551 - - - - - - - 47.61298497207463 - -117.13443498127162 - - 635.2000122070312 - 9474.83984375 - - - 4.801000118255615 - - - - - - - 47.6130279712379 - -117.13441796600819 - - 635.4000244140625 - 9479.7900390625 - - - 4.795000076293945 - - - - - - - 47.61307097040117 - -117.13439198210835 - - 635.4000244140625 - 9484.9599609375 - - - 5.296999931335449 - - - - - - - 47.61314791627228 - -117.13435493409634 - - 635.5999755859375 - 9493.9599609375 - - - 4.473999977111816 - - - - - - - 47.6131989620626 - -117.13433993048966 - - 636.0 - 9499.740234375 - - - 5.90500020980835 - - - - - - - 47.61324699036777 - -117.13432693853974 - - 636.2000122070312 - 9505.169921875 - - - 5.177000045776367 - - - - - - - 47.61329795233905 - -117.13430891744792 - - 636.5999755859375 - 9511.0 - - - 6.0920000076293945 - - - - - - - 47.613345980644226 - -117.13429399766028 - - 636.7999877929688 - 9516.4501953125 - - - 5.322000026702881 - - - - - - - 47.61339895427227 - -117.13427597656846 - - 637.4000244140625 - 9522.5 - - - 6.245999813079834 - - - - - - - 47.613447988405824 - -117.1342549379915 - - 637.7999877929688 - 9528.169921875 - - - 5.442999839782715 - - - - - - - 47.613494927063584 - -117.13423096574843 - - 638.0 - 9533.7001953125 - - - 5.664000034332275 - - - - - - - 47.61357095092535 - -117.1341909840703 - - 638.4000244140625 - 9542.669921875 - - - 4.486999988555908 - - - - - - - 47.613619985058904 - -117.13416198268533 - - 638.5999755859375 - 9548.5400390625 - - - 5.951000213623046 - - - - - - - 47.61367597617209 - -117.13412392884493 - - 638.7999877929688 - 9555.3896484375 - - - 6.561999797821045 - - - - - - - 47.613729955628514 - -117.1340839471668 - - 638.7999877929688 - 9562.099609375 - - - 7.017000198364258 - - - - - - - 47.613772954791784 - -117.13405393995345 - - 638.5999755859375 - 9567.3896484375 - - - 4.757999897003174 - - - - - - - 47.613814948126674 - -117.1340199932456 - - 638.5999755859375 - 9572.7099609375 - - - 6.056000232696533 - - - - - - - 47.6138549298048 - -117.13398998603225 - - 638.5999755859375 - 9577.7001953125 - - - 4.918000221252441 - - - - - - - 47.613904969766736 - -117.13394396938384 - - 638.5999755859375 - 9584.240234375 - - - 6.632999897003174 - - - - - - - 47.6139809936285 - -117.13388294912875 - - 638.5999755859375 - 9593.8603515625 - - - 4.698999881744385 - - - - - - - 47.61401695199311 - -117.13385998271406 - - 638.7999877929688 - 9598.2197265625 - - - 4.5320000648498535 - - - - - - - 47.614097921177745 - -117.13381899520755 - - 639.0 - 9607.740234375 - - - 4.715000152587891 - - - - - - - 47.61412591673434 - -117.13380994275212 - - 639.2000122070312 - 9610.919921875 - - - 3.0169999599456787 - - - - - - - 47.614205963909626 - -117.1337749902159 - - 639.4000244140625 - 9620.2001953125 - - - 3.117000102996826 - - - - - - - 47.6142349652946 - -117.13376292027533 - - 639.5999755859375 - 9623.5498046875 - - - 3.513000011444092 - - - - - - - 47.6143039483577 - -117.13374892249703 - - 639.7999877929688 - 9631.2900390625 - - - 3.8010001182556152 - - - - - - - 47.61433596722782 - -117.1337509341538 - - 639.7999877929688 - 9634.849609375 - - - 3.7920000553131104 - - - - - - - 47.61442196555436 - -117.13374397717416 - - 640.2000122070312 - 9644.4296875 - - - 3.118000030517578 - - - - - - - 47.61444694362581 - -117.13375193998218 - - 640.2000122070312 - 9647.26953125 - - - 2.9749999046325684 - - - - - - - 47.61451098136604 - -117.13374791666865 - - 640.5999755859375 - 9654.3896484375 - - - 3.565000057220459 - - - - - - - 47.61453998275101 - -117.13374397717416 - - 640.7999877929688 - 9657.6298828125 - - - 3.2739999294281006 - - - - - - - 47.61460695415735 - -117.13375998660922 - - 641.5999755859375 - 9665.1796875 - - - 3.684000015258789 - - - - - - - 47.614633943885565 - -117.1337609924376 - - 641.7999877929688 - 9668.1796875 - - - 3.1050000190734863 - - - - - - - 47.61470594443381 - -117.13375696912408 - - 642.2000122070312 - 9676.1904296875 - - - 2.63700008392334 - - - - - - - 47.61472991667688 - -117.13375696912408 - - 642.4000244140625 - 9678.8603515625 - - - 2.7939999103546143 - - - - - - - 47.61481599882245 - -117.13377197273076 - - 643.2000122070312 - 9688.490234375 - - - 3.1630001068115234 - - - - - - - 47.61485195718706 - -117.13377297855914 - - 643.4000244140625 - 9692.490234375 - - - 4.23199987411499 - - - - - - - 47.61492094025016 - -117.1337919216603 - - 644.2000122070312 - 9700.2900390625 - - - 3.8459999561309814 - - - - - - - 47.61495195329189 - -117.1337969508022 - - 644.4000244140625 - 9703.759765625 - - - 3.5160000324249268 - - - - - - - 47.615021942183375 - -117.1338059194386 - - 644.7999877929688 - 9711.5703125 - - - 3.812999963760376 - - - - - - - 47.615061923861504 - -117.13381195440888 - - 645.0 - 9716.0400390625 - - - 4.816999912261963 - - - - - - - 47.615125961601734 - -117.1338159777224 - - 645.2000122070312 - 9723.169921875 - - - 3.5 - - - - - - - 47.61515295132995 - -117.13381497189403 - - 645.2000122070312 - 9726.169921875 - - - 3.0799999237060547 - - - - - - - 47.61522998102009 - -117.13382394053042 - - 645.5999755859375 - 9734.759765625 - - - 2.8289999961853027 - - - - - - - 47.61526292189956 - -117.13382896967232 - - 645.7999877929688 - 9738.4404296875 - - - 3.7709999084472656 - - - - - - - 47.615321930497885 - -117.13383399881423 - - 646.0 - 9745.009765625 - - - 3.2039999961853027 - - - - - - - 47.615353949368 - -117.1338299755007 - - 646.2000122070312 - 9748.580078125 - - - 3.7699999809265137 - - - - - - - 47.61541597545147 - -117.13380793109536 - - 646.4000244140625 - 9755.669921875 - - - 3.499000072479248 - - - - - - - 47.615446988493204 - -117.13380097411573 - - 646.5999755859375 - 9759.16015625 - - - 3.569000005722046 - - - - - - - 47.61551999486983 - -117.1337969508022 - - 647.0 - 9767.2802734375 - - - 4.017000198364258 - - - - - - - 47.61556592769921 - -117.13379996828735 - - 647.4000244140625 - 9772.400390625 - - - 5.377999782562256 - - - - - - - 47.615644969046116 - -117.1337889879942 - - 647.7999877929688 - 9781.2197265625 - - - 4.284999847412109 - - - - - - - 47.615685956552625 - -117.13378094136715 - - 648.0 - 9785.8203125 - - - 4.800000190734863 - - - - - - - 47.61576793156564 - -117.13376794941723 - - 648.2000122070312 - 9794.990234375 - - - 4.510000228881836 - - - - - - - 47.615814954042435 - -117.13374598883092 - - 648.2000122070312 - 9800.4697265625 - - - 5.7270002365112305 - - - - - - - 47.61585594154894 - -117.13371497578919 - - 648.0 - 9805.58984375 - - - 4.8480000495910645 - - - - - - - 47.61589894071221 - -117.13369393721223 - - 648.0 - 9810.6298828125 - - - 5.201000213623047 - - - - - - - 47.61597999371588 - -117.13368295691907 - - 648.2000122070312 - 9819.669921875 - - - 4.441999912261963 - - - - - - - 47.61602098122239 - -117.13367097079754 - - 648.2000122070312 - 9824.3203125 - - - 4.815000057220459 - - - - - - - 47.616091975942254 - -117.13369192555547 - - 648.7999877929688 - 9832.3701171875 - - - 4.048999786376953 - - - - - - - 47.61612894013524 - -117.13370793499053 - - 649.0 - 9836.650390625 - - - 4.321000099182129 - - - - - - - 47.61617395095527 - -117.1337089408189 - - 649.2000122070312 - 9841.66015625 - - - 4.821000099182129 - - - - - - - 47.616223990917206 - -117.13370198383927 - - 649.4000244140625 - 9847.240234375 - - - 5.72100019454956 - - - - - - - 47.616306971758604 - -117.13369896635413 - - 649.5999755859375 - 9856.4697265625 - - - 4.515999794006348 - - - - - - - 47.616354916244745 - -117.13369594886899 - - 649.7999877929688 - 9861.8095703125 - - - 5.670000076293944 - - - - - - - 47.61640093289316 - -117.13369293138385 - - 649.7999877929688 - 9866.9296875 - - - 5.098999977111816 - - - - - - - 47.61644493788481 - -117.13369192555547 - - 650.0 - 9871.830078125 - - - 4.882999897003174 - - - - - - - 47.61648793704808 - -117.13369695469737 - - 650.2000122070312 - 9876.6201171875 - - - 4.632999897003174 - - - - - - - 47.61653898283839 - -117.13370491750538 - - 650.5999755859375 - 9882.3203125 - - - 5.860000133514404 - - - - - - - 47.616590950638056 - -117.13371598161757 - - 650.7999877929688 - 9888.16015625 - - - 5.730999946594238 - - - - - - - 47.616634955629706 - -117.13372495025396 - - 651.0 - 9893.099609375 - - - 5.182000160217284 - - - - - - - 47.61672195978463 - -117.1337279677391 - - 651.4000244140625 - 9902.7802734375 - - - 4.683000087738037 - - - - - - - 47.616760935634375 - -117.13371992111206 - - 651.4000244140625 - 9907.16015625 - - - 4.540999889373779 - - - - - - - 47.616842994466424 - -117.13371497578919 - - 651.4000244140625 - 9916.2802734375 - - - 3.0179998874664307 - - - - - - - 47.61688297614455 - -117.1337089408189 - - 651.2000122070312 - 9920.75 - - - 4.607999801635742 - - - - - - - 47.61696092784405 - -117.13370097801089 - - 651.2000122070312 - 9929.4404296875 - - - 4.28000020980835 - - - - - - - 47.616996970027685 - -117.13369494304061 - - 651.2000122070312 - 9933.4697265625 - - - 4.1479997634887695 - - - - - - - 47.617080956697464 - -117.13369896635413 - - 651.2000122070312 - 9942.8203125 - - - 4.589000225067139 - - - - - - - 47.61712194420397 - -117.13370692916214 - - 651.2000122070312 - 9947.41015625 - - - 4.755000114440918 - - - - - - - 47.617168966680765 - -117.13371598161757 - - 651.4000244140625 - 9952.6796875 - - - 4.920000076293945 - - - - - - - 47.61721791699529 - -117.13372595608234 - - 651.4000244140625 - 9958.1796875 - - - 6.02400016784668 - - - - - - - 47.6172639336437 - -117.13373492471874 - - 651.5999755859375 - 9963.33984375 - - - 4.853000164031982 - - - - - - - 47.61731095612049 - -117.13374892249703 - - 651.5999755859375 - 9968.669921875 - - - 5.5929999351501465 - - - - - - - 47.6173569727689 - -117.13376392610371 - - 651.5999755859375 - 9973.91015625 - - - 5.295000076293945 - - - - - - - 47.61740097776055 - -117.13377993553877 - - 651.5999755859375 - 9978.9501953125 - - - 5.052999973297119 - - - - - - - 47.617488987743855 - -117.13380097411573 - - 651.5999755859375 - 9988.8603515625 - - - 4.89900016784668 - - - - - - - 47.617532992735505 - -117.13380994275212 - - 651.4000244140625 - 9993.7998046875 - - - 4.99399995803833 - - - - - - - 47.617618991062045 - -117.13383198715746 - - 651.2000122070312 - 10003.5 - - - 4.78000020980835 - - - - - - - 47.617664923891425 - -117.13384296745062 - - 651.0 - 10008.6796875 - - - 5.4019999504089355 - - - - - - - 47.61771596968174 - -117.13385696522892 - - 651.0 - 10014.4501953125 - - - 5.560999870300292 - - - - - - - 47.617768943309784 - -117.13387096300721 - - 651.0 - 10020.4296875 - - - 6.145999908447266 - - - - - - - 47.61782493442297 - -117.13388496078551 - - 651.0 - 10026.75 - - - 6.047999858856201 - - - - - - - 47.617879919707775 - -117.13389594107866 - - 650.7999877929688 - 10032.919921875 - - - 6.4079999923706055 - - - - - - - 47.6179389283061 - -117.1339079272002 - - 650.5999755859375 - 10039.5400390625 - - - 6.702000141143799 - - - - - - - 47.61800095438957 - -117.13392091915011 - - 650.2000122070312 - 10046.5 - - - 6.997000217437744 - - - - - - - 47.61806398630142 - -117.13393592275679 - - 650.0 - 10053.599609375 - - - 6.789000034332275 - - - - - - - 47.61812693439424 - -117.13395092636347 - - 649.7999877929688 - 10060.6904296875 - - - 7.291999816894532 - - - - - - - 47.61819591745734 - -117.13396592997015 - - 649.7999877929688 - 10068.4501953125 - - - 7.46999979019165 - - - - - - - 47.618263978511095 - -117.13397892192006 - - 649.7999877929688 - 10076.0703125 - - - 8.10099983215332 - - - - - - - 47.61833497323096 - -117.13398998603225 - - 649.5999755859375 - 10084.009765625 - - - 7.4670000076293945 - - - - - - - 47.61840797960758 - -117.13399794884026 - - 649.4000244140625 - 10092.150390625 - - - 8.373000144958496 - - - - - - - 47.61848199181259 - -117.13400398381054 - - 649.2000122070312 - 10100.3896484375 - - - 8.093999862670898 - - - - - - - 47.61855692602694 - -117.13400792330503 - - 649.0 - 10108.73046875 - - - 8.746000289916992 - - - - - - - 47.618630938231945 - -117.13401395827532 - - 649.0 - 10116.9697265625 - - - 7.984000205993653 - - - - - - - 47.6186989992857 - -117.1340199932456 - - 649.0 - 10124.5400390625 - - - 7.88100004196167 - - - - - - - 47.61876697652042 - -117.13403591886163 - - 649.0 - 10132.2001953125 - - - 7.482999801635742 - - - - - - - 47.61883193627 - -117.13406098075211 - - 649.2000122070312 - 10139.669921875 - - - 7.534999847412109 - - - - - - - 47.6189009193331 - -117.13408595882356 - - 649.4000244140625 - 10147.5703125 - - - 7.5370001792907715 - - - - - - - 47.61896898038685 - -117.13410791940987 - - 649.4000244140625 - 10155.2998046875 - - - 8.17199993133545 - - - - - - - 47.619038969278336 - -117.13412392884493 - - 649.2000122070312 - 10163.1796875 - - - 7.5219998359680185 - - - - - - - 47.61910795234144 - -117.1341389324516 - - 649.0 - 10170.9296875 - - - 8.196999549865723 - - - - - - - 47.61917794123292 - -117.1341529302299 - - 648.7999877929688 - 10178.7900390625 - - - 7.507999897003175 - - - - - - - 47.61924994178116 - -117.13416994549334 - - 648.5999755859375 - 10186.8896484375 - - - 8.392000198364258 - - - - - - - 47.61932495981455 - -117.1341909840703 - - 648.2000122070312 - 10195.3798828125 - - - 8.232000350952148 - - - - - - - 47.61939897201955 - -117.13421294465661 - - 648.2000122070312 - 10203.76953125 - - - 8.723999977111816 - - - - - - - 47.61947298422456 - -117.13423197157681 - - 648.0 - 10212.1201171875 - - - 8.045000076293945 - - - - - - - 47.61954599060118 - -117.13425099849701 - - 648.0 - 10220.3603515625 - - - 8.539999961853027 - - - - - - - 47.619618996977806 - -117.13427295908332 - - 647.7999877929688 - 10228.650390625 - - - 8.217000007629395 - - - - - - - 47.61968596838415 - -117.13429693132639 - - 647.7999877929688 - 10236.3095703125 - - - 7.7659997940063485 - - - - - - - 47.61975193396211 - -117.13432299904525 - - 647.5999755859375 - 10243.91015625 - - - 7.211999893188477 - - - - - - - 47.61981496587396 - -117.1343519166112 - - 647.4000244140625 - 10251.240234375 - - - 7.7220001220703125 - - - - - - - 47.61987799778581 - -117.13438091799617 - - 647.0 - 10258.580078125 - - - 7.066999912261963 - - - - - - - 47.6199369225651 - -117.13441092520952 - - 646.7999877929688 - 10265.509765625 - - - 7.263000011444092 - - - - - - - 47.61999894864857 - -117.1344639826566 - - 647.0 - 10273.48046875 - - - 7.7750000953674325 - - - - - - - 47.62006198056042 - -117.13451595045626 - - 647.0 - 10281.5 - - - 8.22700023651123 - - - - - - - 47.620114954188466 - -117.13456397876143 - - 646.5999755859375 - 10288.41015625 - - - 6.561999797821045 - - - - - - - 47.62017094530165 - -117.13461795821786 - - 646.2000122070312 - 10295.83984375 - - - 7.734000205993652 - - - - - - - 47.62022593058646 - -117.1346759609878 - - 645.7999877929688 - 10303.349609375 - - - 7.320000171661377 - - - - - - - 47.62027597054839 - -117.13473496958613 - - 645.5999755859375 - 10310.4599609375 - - - 7.0 - - - - - - - 47.620327938348055 - -117.13480194099247 - - 645.4000244140625 - 10318.1298828125 - - - 7.823999881744386 - - - - - - - 47.62037898413837 - -117.13487293571234 - - 645.2000122070312 - 10325.919921875 - - - 8.020000457763672 - - - - - - - 47.62042491696775 - -117.13494292460382 - - 644.7999877929688 - 10333.25 - - - 7.104000091552734 - - - - - - - 47.62046992778778 - -117.13501391932368 - - 644.7999877929688 - 10340.5703125 - - - 7.580999851226807 - - - - - - - 47.62051192112267 - -117.1350869257003 - - 645.0 - 10347.7802734375 - - - 6.9019999504089355 - - - - - - - 47.62055098079145 - -117.13516194373369 - - 644.7999877929688 - 10354.8896484375 - - - 6.9120001792907715 - - - - - - - 47.6205899566412 - -117.1352409850806 - - 644.5999755859375 - 10362.240234375 - - - 7.533999919891357 - - - - - - - 47.620626920834184 - -117.13531994260848 - - 644.5999755859375 - 10369.4599609375 - - - 7.611999988555908 - - - - - - - 47.620670925825834 - -117.13540895842016 - - 644.2000122070312 - 10377.75 - - - 7.760000228881836 - - - - - - - 47.620714930817485 - -117.135508954525 - - 643.7999877929688 - 10386.7197265625 - - - 9.664999961853027 - - - - - - - 47.620754996314645 - -117.13561297394335 - - 643.2000122070312 - 10395.7197265625 - - - 8.27400016784668 - - - - - - - 47.62079196050763 - -117.13571799919009 - - 642.7999877929688 - 10404.6201171875 - - - 8.821000099182129 - - - - - - - 47.62082892470062 - -117.13583593256772 - - 642.5999755859375 - 10414.3896484375 - - - 10.314000129699707 - - - - - - - 47.620861949399114 - -117.13595897890627 - - 642.4000244140625 - 10424.33984375 - - - 10.34000015258789 - - - - - - - 47.620861949399114 - -117.13595897890627 - - 642.4000244140625 - 10424.33984375 - - - 0.0 - - - - - - - 47.62090092524886 - -117.13609895668924 - - 642.4000244140625 - 10435.7197265625 - - - 11.661999702453613 - - - - - - - 47.62090092524886 - -117.13609895668924 - - 642.4000244140625 - 10435.7197265625 - - - 0.0 - - - - - - - 47.62093294411898 - -117.13623398914933 - - 642.2000122070312 - 10446.48046875 - - - 10.99600028991699 - - - - - - - 47.62093294411898 - -117.13623398914933 - - 642.2000122070312 - 10446.48046875 - - - 0.0 - - - - - - - 47.62096596881747 - -117.13638092391193 - - 641.4000244140625 - 10458.1201171875 - - - 11.74899959564209 - - - - - - - 47.62096596881747 - -117.13638092391193 - - 641.4000244140625 - 10458.1201171875 - - - 0.0 - - - - - - - 47.6210009213537 - -117.13653196580708 - - 640.7999877929688 - 10470.1201171875 - - - 12.42199993133545 - - - - - - - 47.6210009213537 - -117.13653196580708 - - 640.7999877929688 - 10470.1201171875 - - - 0.0 - - - - - - - 47.62103193439543 - -117.13667496107519 - - 640.2000122070312 - 10481.41015625 - - - 11.734000205993652 - - - - - - - 47.62103193439543 - -117.13667496107519 - - 640.2000122070312 - 10481.41015625 - - - 0.0 - - - - - - - 47.62107099406421 - -117.13681996800005 - - 639.4000244140625 - 10493.1396484375 - - - 11.225000381469727 - - - - - - - 47.62107099406421 - -117.13681996800005 - - 639.4000244140625 - 10493.1396484375 - - - 0.0 - - - - - - - 47.62111793272197 - -117.13695793412626 - - 638.4000244140625 - 10504.75 - - - 13.779000282287598 - - - - - - - 47.62111793272197 - -117.13695793412626 - - 638.4000244140625 - 10504.75 - - - 0.0 - - - - - - - 47.62117593549192 - -117.1370989177376 - - 637.0 - 10517.16015625 - - - 12.75100040435791 - - - - - - - 47.62117593549192 - -117.1370989177376 - - 637.0 - 10517.16015625 - - - 0.0 - - - - - - - 47.62123896740377 - -117.13723797351122 - - 636.2000122070312 - 10529.740234375 - - - 12.914999961853027 - - - - - - - 47.62123896740377 - -117.13723797351122 - - 636.2000122070312 - 10529.740234375 - - - 0.0 - - - - - - - 47.62130593881011 - -117.13736697100103 - - 635.7999877929688 - 10541.9697265625 - - - 12.489999771118164 - - - - - - - 47.62130593881011 - -117.13736697100103 - - 635.7999877929688 - 10541.9697265625 - - - 0.0 - - - - - - - 47.62139093130827 - -117.13746696710587 - - 635.4000244140625 - 10554.0400390625 - - - 12.553000450134277 - - - - - - - 47.62139093130827 - -117.13746696710587 - - 635.4000244140625 - 10554.0400390625 - - - 0.0 - - - - - - - 47.62147692963481 - -117.13756998069584 - - 634.7999877929688 - 10566.349609375 - - - 12.869999885559082 - - - - - - - 47.62147692963481 - -117.13756998069584 - - 634.7999877929688 - 10566.349609375 - - - 0.0 - - - - - - - 47.62156192213297 - -117.1376639418304 - - 634.2000122070312 - 10578.150390625 - - - 12.21500015258789 - - - - - - - 47.62156192213297 - -117.1376639418304 - - 634.2000122070312 - 10578.150390625 - - - 0.0 - - - - - - - 47.6216449867934 - -117.13774591684341 - - 633.7999877929688 - 10589.240234375 - - - 11.440999984741211 - - - - - - - 47.6216449867934 - -117.13774591684341 - - 633.7999877929688 - 10589.240234375 - - - 0.0 - - - - - - - 47.62173199094832 - -117.13782294653356 - - 633.7999877929688 - 10600.51953125 - - - 11.779000282287596 - - - - - - - 47.62173199094832 - -117.13782294653356 - - 633.7999877929688 - 10600.51953125 - - - 0.0 - - - - - - - 47.62182192876935 - -117.13788899593055 - - 633.5999755859375 - 10611.6904296875 - - - 11.501999855041504 - - - - - - - 47.62182192876935 - -117.13788899593055 - - 633.5999755859375 - 10611.6904296875 - - - 0.0 - - - - - - - 47.62191999703646 - -117.13791497983038 - - 633.0 - 10622.75 - - - 11.170000076293945 - - - - - - - 47.62191999703646 - -117.13791497983038 - - 633.0 - 10622.75 - - - 0.0 - - - - - - - 47.62201798148453 - -117.13793098926544 - - 633.0 - 10633.7197265625 - - - 11.336000442504883 - - - - - - - 47.62201798148453 - -117.13793098926544 - - 633.0 - 10633.7197265625 - - - 0.0 - - - - - - - 47.62211496010423 - -117.1379369404167 - - 632.7999877929688 - 10644.509765625 - - - 11.37399959564209 - - - - - - - 47.62211496010423 - -117.1379369404167 - - 632.7999877929688 - 10644.509765625 - - - 0.0 - - - - - - - 47.62221495620906 - -117.13790592737496 - - 632.0 - 10655.8701171875 - - - 11.920000076293945 - - - - - - - 47.622301960363984 - -117.13788094930351 - - 631.4000244140625 - 10665.7197265625 - - - 9.585000038146973 - - - - - - - 47.622383935377 - -117.13785798288882 - - 631.4000244140625 - 10675.0 - - - 9.54699993133545 - - - - - - - 47.62245895341039 - -117.13783199898899 - - 631.4000244140625 - 10683.5703125 - - - 8.187999725341797 - - - - - - - 47.622541934251785 - -117.13779998011887 - - 631.5999755859375 - 10693.1103515625 - - - 9.821000099182129 - - - - - - - 47.62261996977031 - -117.13776092045009 - - 631.4000244140625 - 10702.259765625 - - - 8.895999908447266 - - - - - - - 47.62269993312657 - -117.13771197013557 - - 631.0 - 10711.8896484375 - - - 9.914999961853027 - - - - - - - 47.62276497669518 - -117.13766092434525 - - 630.5999755859375 - 10720.0703125 - - - 7.9730000495910645 - - - - - - - 47.62282297946513 - -117.13761792518198 - - 630.4000244140625 - 10727.2802734375 - - - 7.50600004196167 - - - - - - - 47.622884921729565 - -117.1375719923526 - - 630.0 - 10734.990234375 - - - 7.214000225067139 - - - - - - - 47.622947953641415 - -117.13753494434059 - - 629.5999755859375 - 10742.5302734375 - - - 8.026000022888184 - - - - - - - 47.6230179425329 - -117.13749999180436 - - 629.2000122070312 - 10750.75 - - - 7.945000171661377 - - - - - - - 47.623086925596 - -117.13749194517732 - - 629.0 - 10758.4404296875 - - - 8.032999992370605 - - - - - - - 47.62315398082137 - -117.13748993352056 - - 629.2000122070312 - 10765.8896484375 - - - 7.130000114440918 - - - - - - - 47.62321592308581 - -117.13751994073391 - - 629.7999877929688 - 10773.1396484375 - - - 7.571000099182129 - - - - - - - 47.62327794916928 - -117.13755497708917 - - 630.4000244140625 - 10780.51953125 - - - 7.1500000953674325 - - - - - - - 47.62333896942437 - -117.13759596459568 - - 631.2000122070312 - 10787.9697265625 - - - 7.751999855041505 - - - - - - - 47.623397978022695 - -117.13764399290085 - - 632.0 - 10795.4599609375 - - - 7.117000102996826 - - - - - - - 47.62345095165074 - -117.13769495487213 - - 632.5999755859375 - 10802.490234375 - - - 7.31500005722046 - - - - - - - 47.62350199744105 - -117.13775597512722 - - 633.2000122070312 - 10809.7802734375 - - - 6.978000164031983 - - - - - - - 47.623550947755575 - -117.13781892322004 - - 633.5999755859375 - 10817.0 - - - 7.084000110626221 - - - - - - - 47.62360098771751 - -117.13787692598999 - - 634.2000122070312 - 10824.0595703125 - - - 7.460000038146973 - - - - - - - 47.623654967173934 - -117.13793995790184 - - 634.4000244140625 - 10831.7099609375 - - - 7.859000205993652 - - - - - - - 47.62370794080198 - -117.13799494318664 - - 634.4000244140625 - 10838.91015625 - - - 6.8420000076293945 - - - - - - - 47.623764937743545 - -117.13805194012821 - - 634.5999755859375 - 10846.5595703125 - - - 8.060999870300293 - - - - - - - 47.62382092885673 - -117.13810591958463 - - 634.5999755859375 - 10853.990234375 - - - 7.159999847412109 - - - - - - - 47.62388194911182 - -117.13815696537495 - - 635.0 - 10861.7802734375 - - - 7.973999977111816 - - - - - - - 47.62394498102367 - -117.1382009703666 - - 635.5999755859375 - 10869.5302734375 - - - 7.50600004196167 - - - - - - - 47.624003989622 - -117.13823491707444 - - 636.0 - 10876.5703125 - - - 7.326000213623047 - - - - - - - 47.624064926058054 - -117.13826299645007 - - 636.4000244140625 - 10883.669921875 - - - 6.921000003814697 - - - - - - - 47.62412695214152 - -117.13826299645007 - - 636.2000122070312 - 10890.5595703125 - - - 7.013000011444093 - - - - - - - 47.62418797239661 - -117.13825897313654 - - 635.5999755859375 - 10897.349609375 - - - 6.662000179290772 - - - - - - - 47.62425092048943 - -117.1382339950651 - - 634.7999877929688 - 10904.599609375 - - - 7.453000068664551 - - - - - - - 47.62430892325938 - -117.13821697980165 - - 634.7999877929688 - 10911.1796875 - - - 6.092999935150147 - - - - - - - 47.624368937686086 - -117.13820398785174 - - 634.7999877929688 - 10917.919921875 - - - 7.281000137329102 - - - - - - - 47.62443892657757 - -117.1381959412247 - - 634.7999877929688 - 10925.73046875 - - - 7.46999979019165 - - - - - - - 47.62451394461095 - -117.13818395510316 - - 635.0 - 10934.1103515625 - - - 8.838000297546387 - - - - - - - 47.624582927674055 - -117.13816995732486 - - 635.2000122070312 - 10941.8603515625 - - - 7.658999919891358 - - - - - - - 47.62463891878724 - -117.13817398063838 - - 635.5999755859375 - 10948.08984375 - - - 6.374000072479249 - - - - - - - 47.624689964577556 - -117.13815797120333 - - 635.7999877929688 - 10953.8896484375 - - - 5.4629998207092285 - - - - - - - 47.6247479673475 - -117.13813793845475 - - 635.7999877929688 - 10960.509765625 - - - 7.0370001792907715 - - - - - - - 47.62480295263231 - -117.1381179895252 - - 635.7999877929688 - 10966.7998046875 - - - 6.150000095367432 - - - - - - - 47.624860955402255 - -117.13809795677662 - - 635.4000244140625 - 10973.4296875 - - - 6.763999938964844 - - - - - - - 47.6249189581722 - -117.13807599619031 - - 635.0 - 10980.080078125 - - - 6.285999774932862 - - - - - - - 47.62497796677053 - -117.13805194012821 - - 634.5999755859375 - 10986.8896484375 - - - 7.116000175476074 - - - - - - - 47.625034963712096 - -117.13803098537028 - - 634.2000122070312 - 10993.419921875 - - - 6.353000164031983 - - - - - - - 47.6250899489969 - -117.13801397010684 - - 633.5999755859375 - 10999.669921875 - - - 6.486999988555908 - - - - - - - 47.62514996342361 - -117.13799896650016 - - 632.7999877929688 - 11006.4296875 - - - 6.543000221252441 - - - - - - - 47.62520897202194 - -117.13798798620701 - - 631.7999877929688 - 11013.0400390625 - - - 6.77400016784668 - - - - - - - 47.62526496313512 - -117.13797893375158 - - 631.2000122070312 - 11019.3095703125 - - - 5.892000198364258 - - - - - - - 47.62531793676317 - -117.13799997232854 - - 631.0 - 11025.41015625 - - - 6.052000045776367 - - - - - - - 47.6253679767251 - -117.1380249504 - - 630.7999877929688 - 11031.26953125 - - - 5.99399995803833 - - - - - - - 47.625418938696384 - -117.13805797509849 - - 630.7999877929688 - 11037.4599609375 - - - 6.577000141143799 - - - - - - - 47.625460932031274 - -117.13810499757528 - - 630.4000244140625 - 11043.3203125 - - - 5.673999786376953 - - - - - - - 47.625503931194544 - -117.13815495371819 - - 630.0 - 11049.400390625 - - - 6.321000099182129 - - - - - - - 47.62554299086332 - -117.13819795288146 - - 630.0 - 11054.8095703125 - - - 5.083000183105469 - - - - - - - 47.62557299807668 - -117.1382649242878 - - 629.5999755859375 - 11060.849609375 - - - 6.473999977111817 - - - - - - - 47.62560199946165 - -117.13833793066442 - - 629.2000122070312 - 11067.2099609375 - - - 6.125 - - - - - - - 47.62563192285597 - -117.13841697201133 - - 629.0 - 11074.01953125 - - - 6.985000133514405 - - - - - - - 47.62566193006933 - -117.13850397616625 - - 629.2000122070312 - 11081.3603515625 - - - 7.1620001792907715 - - - - - - - 47.62568498030305 - -117.13859592564404 - - 629.4000244140625 - 11088.740234375 - - - 7.664000034332275 - - - - - - - 47.62571197003126 - -117.13869198225439 - - 629.4000244140625 - 11096.5498046875 - - - 7.625 - - - - - - - 47.62573393061757 - -117.1387789864093 - - 630.0 - 11103.5302734375 - - - 7.145999908447266 - - - - - - - 47.62575195170939 - -117.13884998112917 - - 630.4000244140625 - 11109.23046875 - - - 5.453999996185302 - - - - - - - 47.62577994726598 - -117.13891192339361 - - 630.5999755859375 - 11114.83984375 - - - 5.765999794006348 - - - - - - - 47.62581791728735 - -117.13897998444736 - - 630.7999877929688 - 11121.4697265625 - - - 6.419000148773193 - - - - - - - 47.625871980562806 - -117.1390379872173 - - 631.0 - 11128.8896484375 - - - 7.664999961853027 - - - - - - - 47.625931994989514 - -117.13910596445203 - - 631.4000244140625 - 11137.2900390625 - - - 8.182999610900879 - - - - - - - 47.62598899193108 - -117.13917293585837 - - 632.0 - 11145.3896484375 - - - 8.336000442504883 - - - - - - - 47.6260519400239 - -117.1392179466784 - - 631.5999755859375 - 11153.169921875 - - - 7.58900022506714 - - - - - - - 47.62612394057214 - -117.13926094584167 - - 631.2000122070312 - 11161.7998046875 - - - 8.890999794006348 - - - - - - - 47.626194935292006 - -117.13930293917656 - - 631.0 - 11170.2998046875 - - - 8.293999671936035 - - - - - - - 47.62626894749701 - -117.13933998718858 - - 630.7999877929688 - 11178.98046875 - - - 9.019000053405762 - - - - - - - 47.62635092251003 - -117.13937192223966 - - 630.4000244140625 - 11188.41015625 - - - 8.862000465393066 - - - - - - - 47.626426946371794 - -117.13939698413014 - - 630.0 - 11197.0703125 - - - 9.112000465393066 - - - - - - - 47.62650892138481 - -117.13941399939358 - - 630.0 - 11206.2802734375 - - - 8.878000259399414 - - - - - - - 47.6265889685601 - -117.1394219622016 - - 630.0 - 11215.1904296875 - - - 9.413999557495117 - - - - - - - 47.6266719494015 - -117.13942397385836 - - 629.4000244140625 - 11224.419921875 - - - 8.899999618530273 - - - - - - - 47.626750990748405 - -117.13941995054483 - - 628.7999877929688 - 11233.2099609375 - - - 9.041999816894531 - - - - - - - 47.62683095410466 - -117.1394129935652 - - 628.7999877929688 - 11242.1201171875 - - - 8.501999855041504 - - - - - - - 47.62691393494606 - -117.1394079644233 - - 628.5999755859375 - 11251.3603515625 - - - 9.753000259399414 - - - - - - - 47.6269999332726 - -117.13940092362463 - - 628.2000122070312 - 11260.9296875 - - - 9.444000244140625 - - - - - - - 47.62707796879113 - -117.13941995054483 - - 628.2000122070312 - 11269.7197265625 - - - 8.968000411987305 - - - - - - - 47.62714896351099 - -117.13944794610143 - - 628.4000244140625 - 11277.8896484375 - - - 7.8400001525878915 - - - - - - - 47.62721593491733 - -117.13950293138623 - - 628.7999877929688 - 11286.41015625 - - - 8.746999740600586 - - - - - - - 47.62728491798043 - -117.13956193998456 - - 629.2000122070312 - 11295.26953125 - - - 8.479999542236328 - - - - - - - 47.62733998708427 - -117.13961591944098 - - 630.0 - 11302.6103515625 - - - 7.6529998779296875 - - - - - - - 47.62739094905555 - -117.13967098854482 - - 630.7999877929688 - 11309.6298828125 - - - 6.715000152587891 - - - - - - - 47.6274349540472 - -117.13972496800125 - - 631.7999877929688 - 11315.98046875 - - - 6.748000144958497 - - - - - - - 47.62747694738209 - -117.1397829707712 - - 632.7999877929688 - 11322.3701171875 - - - 6.159999847412109 - - - - - - - 47.62751198373735 - -117.139837956056 - - 633.4000244140625 - 11328.0498046875 - - - 5.9079999923706055 - - - - - - - 47.62753997929394 - -117.13988891802728 - - 633.7999877929688 - 11332.990234375 - - - 4.684999942779541 - - - - - - - 47.6275699865073 - -117.13994096964598 - - 634.4000244140625 - 11338.1298828125 - - - 5.357999801635742 - - - - - - - 47.62759798206389 - -117.13999394327402 - - 635.2000122070312 - 11343.1796875 - - - 4.89900016784668 - - - - - - - 47.62762396596372 - -117.14005295187235 - - 635.7999877929688 - 11348.4697265625 - - - 5.519999980926514 - - - - - - - 47.627651961520314 - -117.14012092910707 - - 635.7999877929688 - 11354.4599609375 - - - 5.677999973297119 - - - - - - - 47.627677945420146 - -117.14018396101892 - - 635.7999877929688 - 11360.009765625 - - - 5.9079999923706055 - - - - - - - 47.62771197594702 - -117.14030591771007 - - 635.0 - 11369.9296875 - - - 4.826000213623047 - - - - - - - 47.627719938755035 - -117.14036199264228 - - 634.5999755859375 - 11374.23046875 - - - 4.566999912261963 - - - - - - - 47.627740977331996 - -117.14048294350505 - - 633.4000244140625 - 11383.6201171875 - - - 4.630000114440918 - - - - - - - 47.627757992595434 - -117.14055192656815 - - 632.5999755859375 - 11389.1396484375 - - - 5.638000011444092 - - - - - - - 47.62777199037373 - -117.14061898179352 - - 631.5999755859375 - 11394.41015625 - - - 3.7300000190734863 - - - - - - - 47.627781964838505 - -117.14068494737148 - - 631.2000122070312 - 11399.490234375 - - - 8.444999694824219 - - - - - - - 47.62779193930328 - -117.14075694791973 - - 630.4000244140625 - 11405.01953125 - - - 5.3480000495910645 - - - - - - - 47.627800991758704 - -117.14082693681121 - - 629.7999877929688 - 11410.3701171875 - - - 5.066999912261963 - - - - - - - 47.627806942909956 - -117.14089893735945 - - 629.0 - 11415.8203125 - - - 5.757999897003174 - - - - - - - 47.627802919596434 - -117.14096993207932 - - 628.7999877929688 - 11421.1796875 - - - 5.110000133514403 - - - - - - - 47.627801997587085 - -117.14104796759784 - - 628.5999755859375 - 11427.0400390625 - - - 6.224999904632568 - - - - - - - 47.627801997587085 - -117.14112994261086 - - 628.2000122070312 - 11433.2099609375 - - - 5.863999843597412 - - - - - - - 47.627800991758704 - -117.14120998978615 - - 628.0 - 11439.2197265625 - - - 4.525000095367432 - - - - - - - 47.6277909334749 - -117.14127293787897 - - 628.0 - 11444.080078125 - - - 8.175000190734863 - - - - - - - 47.62778799980879 - -117.1413589362055 - - 627.5999755859375 - 11450.5595703125 - - - 5.757999897003174 - - - - - - - 47.62778892181814 - -117.14145298115909 - - 627.2000122070312 - 11457.6201171875 - - - 8.187999725341797 - - - - - - - 47.62779495678842 - -117.14155297726393 - - 627.2000122070312 - 11465.169921875 - - - 12.472000122070312 - - - - - - - 47.62779797427356 - -117.14164098724723 - - 627.2000122070312 - 11471.7900390625 - - - 8.489999771118164 - - - - - - - 47.627800991758704 - -117.1417199447751 - - 627.2000122070312 - 11477.740234375 - - - 5.337999820709228 - - - - - - - 47.627801997587085 - -117.14179898612201 - - 627.2000122070312 - 11483.6796875 - - - 6.620999813079834 - - - - - - - 47.627799985930324 - -117.14188599027693 - - 627.2000122070312 - 11490.2197265625 - - - 6.30900001525879 - - - - - - - 47.62779898010194 - -117.14196394197643 - - 627.2000122070312 - 11496.080078125 - - - 6.007999897003174 - - - - - - - 47.62778992764652 - -117.14202797971666 - - 627.2000122070312 - 11501.0 - - - 5.024000167846679 - - - - - - - 47.627783976495266 - -117.14210299775004 - - 627.2000122070312 - 11506.669921875 - - - 5.653999805450439 - - - - - - - 47.62778992764652 - -117.14220693334937 - - 627.2000122070312 - 11514.51953125 - - - 7.2769999504089355 - - - - - - - 47.62779797427356 - -117.14231899939477 - - 627.2000122070312 - 11522.98046875 - - - 8.298999786376953 - - - - - - - 47.627800991758704 - -117.14242092333734 - - 627.2000122070312 - 11530.66015625 - - - 8.241999626159668 - - - - - - - 47.627805937081575 - -117.142538940534 - - 627.2000122070312 - 11539.5400390625 - - - 9.039999961853027 - - - - - - - 47.62781197205186 - -117.14266894385219 - - 627.2000122070312 - 11549.330078125 - - - 9.49899959564209 - - - - - - - 47.62781792320311 - -117.14279693551362 - - 627.2000122070312 - 11558.98046875 - - - 9.20199966430664 - - - - - - - 47.627822952345014 - -117.14289491996169 - - 627.0 - 11566.3701171875 - - - 7.685999870300293 - - - - - - - 47.627822952345014 - -117.1429929882288 - - 627.0 - 11573.73046875 - - - 7.054999828338624 - - - - - - - 47.627823958173394 - -117.14308493770659 - - 627.0 - 11580.650390625 - - - 7.271999835968018 - - - - - - - 47.62782798148692 - -117.14319398626685 - - 627.0 - 11588.849609375 - - - 8.501999855041504 - - - - - - - 47.62783192098141 - -117.14331292547286 - - 627.0 - 11597.8095703125 - - - 8.560999870300293 - - - - - - - 47.62783695012331 - -117.14340797625482 - - 627.0 - 11604.9697265625 - - - 7.5229997634887695 - - - - - - - 47.62784197926521 - -117.14350897818804 - - 627.0 - 11612.580078125 - - - 7.283999919891357 - - - - - - - 47.627844996750355 - -117.14360595680773 - - 627.0 - 11619.8798828125 - - - 7.524000167846681 - - - - - - - 47.627845918759704 - -117.14370293542743 - - 627.0 - 11627.169921875 - - - 7.373000144958497 - - - - - - - 47.627845918759704 - -117.1438009198755 - - 627.0 - 11634.5400390625 - - - 7.31500005722046 - - - - - - - 47.627848936244845 - -117.14391198009253 - - 627.0 - 11642.8798828125 - - - 8.067000389099121 - - - - - - - 47.62785195372999 - -117.1440099645406 - - 627.0 - 11650.259765625 - - - 7.704999923706055 - - - - - - - 47.627849942073226 - -117.14410794898868 - - 627.0 - 11657.6298828125 - - - 7.310999870300293 - - - - - - - 47.627847930416465 - -117.14421599172056 - - 627.0 - 11665.75 - - - 8.303000450134277 - - - - - - - 47.627845918759704 - -117.14433392509818 - - 627.0 - 11674.6201171875 - - - 8.637999534606934 - - - - - - - 47.627845918759704 - -117.14444599114358 - - 627.0 - 11683.0400390625 - - - 8.536999702453613 - - - - - - - 47.627844996750355 - -117.14454598724842 - - 627.0 - 11690.5498046875 - - - 7.304999828338623 - - - - - - - 47.627843990921974 - -117.14464992284775 - - 627.0 - 11698.3701171875 - - - 8.093000411987305 - - - - - - - 47.627843990921974 - -117.14477196335793 - - 627.0 - 11707.5400390625 - - - 8.902999877929688 - - - - - - - 47.627843990921974 - -117.1448649186641 - - 627.0 - 11714.5302734375 - - - 7.2210001945495605 - - - - - - - 47.627844996750355 - -117.14495896361768 - - 627.0 - 11721.599609375 - - - 6.867000102996826 - - - - - - - 47.62784197926521 - -117.14504797942936 - - 627.0 - 11728.2900390625 - - - 6.813000202178956 - - - - - - - 47.62784097343683 - -117.14515099301934 - - 627.0 - 11736.0400390625 - - - 7.524000167846681 - - - - - - - 47.62783493846655 - -117.14522299356759 - - 627.0 - 11741.490234375 - - - 5.656000137329101 - - - - - - - 47.627848936244845 - -117.1453519910574 - - 627.0 - 11751.3095703125 - - - 9.48799991607666 - - - - - - - 47.62785597704351 - -117.14545198716223 - - 627.0 - 11758.8701171875 - - - 7.797999858856201 - - - - - - - 47.62785899452865 - -117.1455449424684 - - 627.0 - 11765.8603515625 - - - 6.76800012588501 - - - - - - - 47.62785295955837 - -117.14562197215855 - - 627.0 - 11771.6904296875 - - - 5.993000030517577 - - - - - - - 47.627847930416465 - -117.14569699019194 - - 627.0 - 11777.349609375 - - - 5.664000034332275 - - - - - - - 47.627845918759704 - -117.14577795937657 - - 627.0 - 11783.4501953125 - - - 6.135000228881836 - - - - - - - 47.62784097343683 - -117.14586295187473 - - 627.0 - 11789.8603515625 - - - 6.406000137329102 - - - - - - - 47.62783795595169 - -117.14594098739326 - - 627.0 - 11795.73046875 - - - 5.872000217437743 - - - - - - - 47.62783493846655 - -117.14601198211312 - - 627.4000244140625 - 11801.080078125 - - - 5.341000080108643 - - - - - - - 47.62783099897206 - -117.14609496295452 - - 627.5999755859375 - 11807.330078125 - - - 6.348999977111816 - - - - - - - 47.62782999314368 - -117.14617794379592 - - 627.7999877929688 - 11813.5703125 - - - 6.098999977111816 - - - - - - - 47.62782798148692 - -117.14625991880894 - - 628.0 - 11819.740234375 - - - 6.14900016784668 - - - - - - - 47.627826975658536 - -117.14634591713548 - - 628.0 - 11826.2001953125 - - - 6.3379998207092285 - - - - - - - 47.627822952345014 - -117.14642596431077 - - 628.0 - 11832.23046875 - - - 6.145999908447266 - - - - - - - 47.62781892903149 - -117.14650995098054 - - 628.0 - 11838.5595703125 - - - 6.229000091552734 - - - - - - - 47.627814989537 - -117.14660994708538 - - 628.0 - 11846.08984375 - - - 7.769999980926514 - - - - - - - 47.62781096622348 - -117.1467019803822 - - 628.0 - 11853.01953125 - - - 6.611999988555908 - - - - - - - 47.627806942909956 - -117.14678596705198 - - 628.2000122070312 - 11859.349609375 - - - 6.6479997634887695 - - - - - - - 47.627805937081575 - -117.14687397703528 - - 628.4000244140625 - 11865.9599609375 - - - 6.576000213623048 - - - - - - - 47.627804931253195 - -117.14695394039154 - - 628.7999877929688 - 11871.98046875 - - - 6.098999977111816 - - - - - - - 47.62778992764652 - -117.14708494953811 - - 629.2000122070312 - 11881.9599609375 - - - 4.849999904632568 - - - - - - - 47.62779193930328 - -117.14716893620789 - - 629.5999755859375 - 11888.2802734375 - - - 6.650000095367432 - - - - - - - 47.62779294513166 - -117.14724697172642 - - 629.7999877929688 - 11894.1396484375 - - - 5.563000202178954 - - - - - - - 47.62779495678842 - -117.14732995256782 - - 630.0 - 11900.3896484375 - - - 6.626999855041504 - - - - - - - 47.627799985930324 - -117.14741595089436 - - 630.2000122070312 - 11906.8701171875 - - - 6.310999870300293 - - - - - - - 47.62779898010194 - -117.14748694561422 - - 630.2000122070312 - 11912.2099609375 - - - 5.491000175476073 - - - - - - - 47.627800991758704 - -117.14761099778116 - - 630.4000244140625 - 11921.5302734375 - - - 4.556000232696533 - - - - - - - 47.627801997587085 - -117.1476779691875 - - 630.7999877929688 - 11926.5703125 - - - 5.302000045776367 - - - - - - - 47.627804931253195 - -117.14774996973574 - - 631.0 - 11931.990234375 - - - 5.263999938964844 - - - - - - - 47.627800991758704 - -117.14781392365694 - - 631.4000244140625 - 11936.8203125 - - - 4.919000148773193 - - - - - - - 47.62779797427356 - -117.14792096056044 - - 632.0 - 11944.8701171875 - - - 4.008999824523926 - - - - - - - 47.6277959626168 - -117.14797192253172 - - 632.4000244140625 - 11948.7099609375 - - - 3.878000020980835 - - - - - - - 47.627783976495266 - -117.14806999079883 - - 633.2000122070312 - 11956.2001953125 - - - 3.7149999141693115 - - - - - - - 47.627781964838505 - -117.14812397025526 - - 633.5999755859375 - 11960.259765625 - - - 4.169000148773193 - - - - - - - 47.62777894735336 - -117.14821692556143 - - 634.0 - 11967.259765625 - - - 3.438999891281128 - - - - - - - 47.627782970666885 - -117.14827199466527 - - 634.2000122070312 - 11971.419921875 - - - 4.247000217437744 - - - - - - - 47.6277909334749 - -117.14836997911334 - - 634.4000244140625 - 11978.83984375 - - - 3.638999938964844 - - - - - - - 47.62779193930328 - -117.14840996079147 - - 634.5999755859375 - 11981.849609375 - - - 3.0980000495910645 - - - - - - - 47.6277909334749 - -117.14850895106792 - - 635.2000122070312 - 11989.2900390625 - - - 3.6819999217987065 - - - - - - - 47.62778892181814 - -117.1485519502312 - - 635.5999755859375 - 11992.5302734375 - - - 3.378000020980835 - - - - - - - 47.62779797427356 - -117.14866795577109 - - 636.4000244140625 - 12001.2998046875 - - - 4.343999862670898 - - - - - - - 47.627801997587085 - -117.14872394688427 - - 636.5999755859375 - 12005.5400390625 - - - 4.359000205993652 - - - - - - - 47.627806942909956 - -117.14880893938243 - - 636.5999755859375 - 12011.9501953125 - - - 3.1570000648498535 - - - - - - - 47.627806942909956 - -117.14885897934437 - - 636.5999755859375 - 12015.7099609375 - - - 3.8350000381469727 - - - - - - - 47.627799985930324 - -117.14895595796406 - - 636.7999877929688 - 12023.0400390625 - - - 3.614000082015991 - - - - - - - 47.627805937081575 - -117.1490229293704 - - 636.5999755859375 - 12028.1201171875 - - - 5.22599983215332 - - - - - - - 47.62780794873834 - -117.14914195239544 - - 637.0 - 12037.0703125 - - - 4.375 - - - - - - - 47.62780794873834 - -117.14919794350863 - - 637.2000122070312 - 12041.26953125 - - - 4.380000114440918 - - - - - - - 47.62781197205186 - -117.14926994405687 - - 637.4000244140625 - 12046.7001953125 - - - 5.25600004196167 - - - - - - - 47.62781691737473 - -117.14933993294835 - - 637.4000244140625 - 12051.990234375 - - - 5.465000152587891 - - - - - - - 47.62782094068825 - -117.14945996180177 - - 637.4000244140625 - 12061.01953125 - - - 4.454999923706055 - - - - - - - 47.62781599536538 - -117.14953296817839 - - 637.4000244140625 - 12066.5400390625 - - - 5.571000099182129 - - - - - - - 47.62781096622348 - -117.14959097094834 - - 637.4000244140625 - 12070.9296875 - - - 4.502999782562256 - - - - - - - 47.62781197205186 - -117.14966992847621 - - 637.4000244140625 - 12076.8701171875 - - - 5.908999919891357 - - - - - - - 47.627803925424814 - -117.14976992458105 - - 637.4000244140625 - 12084.4404296875 - - - 3.7170000076293945 - - - - - - - 47.627803925424814 - -117.14981493540108 - - 637.4000244140625 - 12087.8203125 - - - 3.530999898910523 - - - - - - - 47.62780895456672 - -117.14993898756802 - - 637.4000244140625 - 12097.16015625 - - - 3.0739998817443848 - - - - - - - 47.62780794873834 - -117.14997192844748 - - 637.4000244140625 - 12099.6396484375 - - - 2.5539999008178706 - - - - - - - 47.627806942909956 - -117.15006094425917 - - 637.4000244140625 - 12106.330078125 - - - 3.2939999103546147 - - - - - - - 47.62781096622348 - -117.15010897256434 - - 637.4000244140625 - 12109.9697265625 - - - 3.7669999599456787 - - - - - - - 47.62781197205186 - -117.1502079628408 - - 637.2000122070312 - 12117.41015625 - - - 3.6480000019073486 - - - - - - - 47.62781297788024 - -117.15026395395398 - - 637.2000122070312 - 12121.6201171875 - - - 4.451000213623047 - - - - - - - 47.62781691737473 - -117.1503699850291 - - 637.2000122070312 - 12129.599609375 - - - 3.8420000076293945 - - - - - - - 47.62781792320311 - -117.150419941172 - - 637.4000244140625 - 12133.3603515625 - - - 4.033999919891357 - - - - - - - 47.62781792320311 - -117.15053997002542 - - 637.7999877929688 - 12142.3798828125 - - - 4.377999782562256 - - - - - - - 47.62781599536538 - -117.15059394948184 - - 638.0 - 12146.4404296875 - - - 4.380000114440918 - - - - - - - 47.62781297788024 - -117.1507119666785 - - 638.4000244140625 - 12155.3203125 - - - 4.294000148773193 - - - - - - - 47.62781297788024 - -117.15078195556998 - - 638.5999755859375 - 12160.580078125 - - - 5.614999771118164 - - - - - - - 47.627806942909956 - -117.1508919261396 - - 639.0 - 12168.8701171875 - - - 4.0920000076293945 - - - - - - - 47.627799985930324 - -117.15094791725278 - - 639.2000122070312 - 12173.150390625 - - - 4.413000106811523 - - - - - - - 47.6277909334749 - -117.1510539483279 - - 639.7999877929688 - 12181.1796875 - - - 3.88100004196167 - - - - - - - 47.62779193930328 - -117.15112997218966 - - 640.0 - 12186.900390625 - - - 6.059000015258789 - - - - - - - 47.6277959626168 - -117.15118898078799 - - 640.2000122070312 - 12191.349609375 - - - 4.249000072479248 - - - - - - - 47.62781792320311 - -117.15130196884274 - - 640.4000244140625 - 12200.1904296875 - - - 9.255000114440918 - - - - - - - 47.62782999314368 - -117.15138595551252 - - 640.7999877929688 - 12206.650390625 - - - 6.241000175476074 - - - - - - - 47.627826975658536 - -117.15144295245409 - - 641.0 - 12210.9404296875 - - - 4.116000175476074 - - - - - - - 47.62781993485987 - -117.1515389252454 - - 641.4000244140625 - 12218.2001953125 - - - 3.717999935150147 - - - - - - - 47.62782194651663 - -117.1515859477222 - - 641.5999755859375 - 12221.740234375 - - - 3.638000011444092 - - - - - - - 47.62782999314368 - -117.15167295187712 - - 641.7999877929688 - 12228.33984375 - - - 6.363999843597412 - - - - - - - 47.62783292680979 - -117.15176892466843 - - 642.2000122070312 - 12235.5595703125 - - - 7.507999897003175 - - - - - - - 47.62782194651663 - -117.15189398266375 - - 642.7999877929688 - 12245.0400390625 - - - 4.697000026702881 - - - - - - - 47.627822952345014 - -117.15197193436325 - - 643.0 - 12250.900390625 - - - 5.616000175476074 - - - - - - - 47.627824964001775 - -117.15205198153853 - - 643.2000122070312 - 12256.919921875 - - - 6.177999973297119 - - - - - - - 47.627825969830155 - -117.15212096460164 - - 643.4000244140625 - 12262.099609375 - - - 5.420000076293945 - - - - - - - 47.62782798148692 - -117.15219598263502 - - 643.5999755859375 - 12267.75 - - - 5.508999824523926 - - - - - - - 47.62783192098141 - -117.15227091684937 - - 644.0 - 12273.400390625 - - - 5.810999870300293 - - - - - - - 47.62783493846655 - -117.15234593488276 - - 644.2000122070312 - 12279.0498046875 - - - 5.552999973297119 - - - - - - - 47.62783695012331 - -117.15240896679461 - - 644.4000244140625 - 12283.7900390625 - - - 4.736000061035156 - - - - - - - 47.62784097343683 - -117.1525339409709 - - 644.7999877929688 - 12293.1904296875 - - - 4.642000198364258 - - - - - - - 47.62784197926521 - -117.1525859925896 - - 645.0 - 12297.099609375 - - - 4.059999942779541 - - - - - - - 47.62782999314368 - -117.15270794928074 - - 645.0 - 12306.3701171875 - - - 3.059999942779541 - - - - - - - 47.62782999314368 - -117.15275195427239 - - 645.0 - 12309.6796875 - - - 3.4230000972747803 - - - - - - - 47.62783192098141 - -117.15286997146904 - - 645.0 - 12318.5498046875 - - - 4.261000156402588 - - - - - - - 47.62783393263817 - -117.15292998589575 - - 645.2000122070312 - 12323.0595703125 - - - 4.934999942779541 - - - - - - - 47.627825969830155 - -117.15302797034383 - - 645.5999755859375 - 12330.48046875 - - - 3.615999937057495 - - - - - - - 47.62781993485987 - -117.15308798477054 - - 646.0 - 12335.0400390625 - - - 4.828999996185303 - - - - - - - 47.62781398370862 - -117.15320692397654 - - 646.2000122070312 - 12344.009765625 - - - 4.333000183105469 - - - - - - - 47.62781297788024 - -117.15327397920191 - - 646.2000122070312 - 12349.0498046875 - - - 5.308000087738037 - - - - - - - 47.62781297788024 - -117.1533939242363 - - 646.2000122070312 - 12358.0703125 - - - 4.453999996185303 - - - - - - - 47.62781297788024 - -117.15345595031977 - - 646.2000122070312 - 12362.73046875 - - - 4.889999866485596 - - - - - - - 47.62781398370862 - -117.15352795086801 - - 646.4000244140625 - 12368.1396484375 - - - 5.03000020980835 - - - - - - - 47.62781792320311 - -117.15360598638654 - - 646.5999755859375 - 12374.01953125 - - - 6.182000160217285 - - - - - - - 47.62782094068825 - -117.1536769811064 - - 647.0 - 12379.3603515625 - - - 5.210999965667725 - - - - - - - 47.62782194651663 - -117.1537509933114 - - 647.2000122070312 - 12384.9296875 - - - 5.824999809265137 - - - - - - - 47.62781792320311 - -117.15382793918252 - - 647.4000244140625 - 12390.73046875 - - - 5.5920000076293945 - - - - - - - 47.62781599536538 - -117.15389993973076 - - 647.7999877929688 - 12396.150390625 - - - 5.510000228881836 - - - - - - - 47.62781599536538 - -117.15397294610739 - - 648.0 - 12401.6298828125 - - - 5.442999839782715 - - - - - - - 47.62781691737473 - -117.15404092334211 - - 648.4000244140625 - 12406.75 - - - 5.347000122070312 - - - - - - - 47.627814989537 - -117.15411694720387 - - 648.5999755859375 - 12412.4599609375 - - - 5.3429999351501465 - - - - - - - 47.62781599536538 - -117.1541899535805 - - 648.7999877929688 - 12417.9501953125 - - - 5.739999771118163 - - - - - - - 47.62781691737473 - -117.15425692498684 - - 649.2000122070312 - 12422.990234375 - - - 4.914000034332275 - - - - - - - 47.62781993485987 - -117.15433194302022 - - 649.2000122070312 - 12428.6298828125 - - - 5.785999774932861 - - - - - - - 47.62782194651663 - -117.1544019319117 - - 649.0 - 12433.900390625 - - - 4.926000118255615 - - - - - - - 47.627822952345014 - -117.15447594411671 - - 649.0 - 12439.4599609375 - - - 6.0859999656677255 - - - - - - - 47.627822952345014 - -117.15455397963524 - - 649.0 - 12445.330078125 - - - 5.578000068664551 - - - - - - - 47.62782094068825 - -117.1546339429915 - - 649.2000122070312 - 12451.33984375 - - - 6.261000156402588 - - - - - - - 47.62781993485987 - -117.1547079551965 - - 649.2000122070312 - 12456.91015625 - - - 5.613999843597412 - - - - - - - 47.62781792320311 - -117.15477299876511 - - 649.2000122070312 - 12461.7998046875 - - - 4.889999866485596 - - - - - - - 47.62781197205186 - -117.1548789460212 - - 649.2000122070312 - 12469.7900390625 - - - 3.9739999771118164 - - - - - - - 47.6278099603951 - -117.15493191964924 - - 649.2000122070312 - 12473.7802734375 - - - 3.97000002861023 - - - - - - - 47.62779797427356 - -117.15502596460283 - - 649.2000122070312 - 12480.9697265625 - - - 3.5420000553131104 - - - - - - - 47.62779193930328 - -117.15506695210934 - - 649.2000122070312 - 12484.1298828125 - - - 3.2639999389648438 - - - - - - - 47.627799985930324 - -117.15516191907227 - - 649.0 - 12491.3203125 - - - 3.549999952316284 - - - - - - - 47.627803925424814 - -117.15521397069097 - - 648.7999877929688 - 12495.25 - - - 4.064000129699707 - - - - - - - 47.627814989537 - -117.15532494708896 - - 648.2000122070312 - 12503.6904296875 - - - 4.120999813079834 - - - - - - - 47.62782194651663 - -117.15538898482919 - - 648.0 - 12508.5595703125 - - - 5.0970001220703125 - - - - - - - 47.62782798148692 - -117.15546492487192 - - 648.0 - 12514.3095703125 - - - 5.435999870300293 - - - - - - - 47.62783292680979 - -117.15554396621883 - - 648.0 - 12520.26953125 - - - 6.2779998779296875 - - - - - - - 47.62783896178007 - -117.15562191791832 - - 648.0 - 12526.169921875 - - - 5.613999843597412 - - - - - - - 47.627848936244845 - -117.15570992790163 - - 648.0 - 12532.8798828125 - - - 7.203999996185303 - - - - - - - 47.62785497121513 - -117.15579492039979 - - 648.0 - 12539.2998046875 - - - 5.635000228881835 - - - - - - - 47.62785698287189 - -117.15586792677641 - - 648.0 - 12544.7900390625 - - - 6.289999961853027 - - - - - - - 47.62785899452865 - -117.15593892149627 - - 648.0 - 12550.1396484375 - - - 5.303999900817871 - - - - - - - 47.62786293402314 - -117.1560119278729 - - 648.0 - 12555.6396484375 - - - 5.623000144958496 - - - - - - - 47.627868968993425 - -117.15608099475503 - - 648.0 - 12560.8701171875 - - - 5.191999912261963 - - - - - - - 47.62787299230695 - -117.15616296976805 - - 648.0 - 12567.0498046875 - - - 6.229000091552734 - - - - - - - 47.62788196094334 - -117.15628894977272 - - 647.7999877929688 - 12576.5703125 - - - 4.6570000648498535 - - - - - - - 47.627887995913625 - -117.1563449408859 - - 647.7999877929688 - 12580.830078125 - - - 4.375 - - - - - - - 47.62789998203516 - -117.15643194504082 - - 647.7999877929688 - 12587.509765625 - - - 6.543000221252441 - - - - - - - 47.62790098786354 - -117.15648793615401 - - 647.7999877929688 - 12591.7197265625 - - - 4.010000228881836 - - - - - - - 47.62789595872164 - -117.15657795779407 - - 647.4000244140625 - 12598.5 - - - 3.437000036239624 - - - - - - - 47.62789696455002 - -117.15662992559373 - - 647.2000122070312 - 12602.41015625 - - - 4.116000175476074 - - - - - - - 47.627889923751354 - -117.156738974154 - - 647.0 - 12610.6396484375 - - - 4.044000148773193 - - - - - - - 47.6278839726001 - -117.15680192224681 - - 647.0 - 12615.4296875 - - - 4.849999904632568 - - - - - - - 47.627868968993425 - -117.15691692195833 - - 647.0 - 12624.23046875 - - - 4.323999881744385 - - - - - - - 47.62785597704351 - -117.15696394443512 - - 647.0 - 12628.0400390625 - - - 4.056000232696533 - - - - - - - 47.627844996750355 - -117.15702597051859 - - 647.0 - 12632.8603515625 - - - 4.747000217437744 - - - - - - - 47.62783594429493 - -117.15711096301675 - - 647.0 - 12639.330078125 - - - 6.701000213623047 - - - - - - - 47.627826975658536 - -117.15720199048519 - - 647.0 - 12646.240234375 - - - 6.353000164031983 - - - - - - - 47.62781993485987 - -117.15730994939804 - - 647.0 - 12654.400390625 - - - 8.92199993133545 - - - - - - - 47.62782094068825 - -117.15740994550288 - - 647.2000122070312 - 12661.91015625 - - - 7.228000164031982 - - - - - - - 47.62782094068825 - -117.15749493800104 - - 647.5999755859375 - 12668.2998046875 - - - 6.626999855041504 - - - - - - - 47.62781691737473 - -117.15756995603442 - - 647.7999877929688 - 12673.9599609375 - - - 5.385000228881836 - - - - - - - 47.62781297788024 - -117.15765796601772 - - 648.0 - 12680.58984375 - - - 6.7779998779296875 - - - - - - - 47.62781096622348 - -117.1577469818294 - - 648.0 - 12687.2802734375 - - - 8.192000389099121 - - - - - - - 47.62780794873834 - -117.1578349918127 - - 648.0 - 12693.900390625 - - - 6.986000061035156 - - - - - - - 47.627803925424814 - -117.1579269412905 - - 648.0 - 12700.830078125 - - - 6.458000183105469 - - - - - - - 47.627799985930324 - -117.15801796875894 - - 648.0 - 12707.6796875 - - - 7.261000156402588 - - - - - - - 47.6277959626168 - -117.15810991823673 - - 648.0 - 12714.6103515625 - - - 6.935999870300293 - - - - - - - 47.62778799980879 - -117.15818795375526 - - 648.0 - 12720.5400390625 - - - 6.007999897003174 - - - - - - - 47.627782970666885 - -117.1582689229399 - - 648.2000122070312 - 12726.66015625 - - - 5.767000198364258 - - - - - - - 47.62777492403984 - -117.15835098177195 - - 648.4000244140625 - 12732.8798828125 - - - 6.513999938964844 - - - - - - - 47.62777098454535 - -117.15844192542136 - - 648.7999877929688 - 12739.740234375 - - - 6.673999786376954 - - - - - - - 47.62777098454535 - -117.15850294567645 - - 648.7999877929688 - 12744.3203125 - - - 4.677999973297119 - - - - - - - 47.62777391821146 - -117.15857394039631 - - 648.7999877929688 - 12749.669921875 - - - 5.145999908447266 - - - - - - - 47.62778598815203 - -117.1586759481579 - - 648.7999877929688 - 12757.4501953125 - - - 8.234999656677246 - - - - - - - 47.62779395096004 - -117.15877099893987 - - 648.7999877929688 - 12764.650390625 - - - 6.90500020980835 - - - - - - - 47.62779395096004 - -117.15885699726641 - - 648.7999877929688 - 12771.1103515625 - - - 6.650000095367432 - - - - - - - 47.62779294513166 - -117.15894693508744 - - 648.7999877929688 - 12777.8798828125 - - - 6.556000232696533 - - - - - - - 47.627783976495266 - -117.15902497060597 - - 648.7999877929688 - 12783.8203125 - - - 6.228000164031982 - - - - - - - 47.62775296345353 - -117.15908498503268 - - 648.5999755859375 - 12789.5 - - - 5.515999794006348 - - - - - - - 47.62772496789694 - -117.15915095061064 - - 648.7999877929688 - 12795.3603515625 - - - 6.031000137329102 - - - - - - - 47.62768297456205 - -117.1592079475522 - - 648.5999755859375 - 12801.6904296875 - - - 5.994999885559082 - - - - - - - 47.6276389695704 - -117.15926293283701 - - 648.4000244140625 - 12808.099609375 - - - 6.742000102996826 - - - - - - - 47.62759496457875 - -117.15931096114218 - - 648.2000122070312 - 12814.1796875 - - - 5.873000144958496 - - - - - - - 47.627544924616814 - -117.15936393477023 - - 648.0 - 12821.009765625 - - - 7.145999908447266 - - - - - - - 47.62749798595905 - -117.15941892005503 - - 647.7999877929688 - 12827.6796875 - - - 6.297999858856201 - - - - - - - 47.62745196931064 - -117.15947994031012 - - 647.5999755859375 - 12834.5498046875 - - - 7.199999809265137 - - - - - - - 47.62742296792567 - -117.15955596417189 - - 647.4000244140625 - 12841.1103515625 - - - 6.442999839782715 - - - - - - - 47.627392960712314 - -117.1596379391849 - - 647.4000244140625 - 12848.1103515625 - - - 7.144000053405762 - - - - - - - 47.627375945448875 - -117.1597209200263 - - 647.2000122070312 - 12854.6298828125 - - - 6.309999942779541 - - - - - - - 47.62736395932734 - -117.1597949322313 - - 647.4000244140625 - 12860.349609375 - - - 5.877999782562256 - - - - - - - 47.62735893018544 - -117.15986492112279 - - 647.7999877929688 - 12865.6396484375 - - - 5.043000221252441 - - - - - - - 47.62736898846924 - -117.15993792749941 - - 648.4000244140625 - 12871.240234375 - - - 5.90500020980835 - - - - - - - 47.627374939620495 - -117.1600129455328 - - 649.0 - 12876.919921875 - - - 5.5929999351501465 - - - - - - - 47.6273799687624 - -117.16008494608104 - - 649.2000122070312 - 12882.3603515625 - - - 5.63700008392334 - - - - - - - 47.62738399207592 - -117.16015895828605 - - 649.5999755859375 - 12887.9404296875 - - - 5.298999786376953 - - - - - - - 47.62738893739879 - -117.16023498214781 - - 649.7999877929688 - 12893.6796875 - - - 5.947000026702881 - - - - - - - 47.627394972369075 - -117.16031896881759 - - 650.2000122070312 - 12900.01953125 - - - 6.176000118255615 - - - - - - - 47.62740192934871 - -117.16040396131575 - - 650.5999755859375 - 12906.4599609375 - - - 6.60099983215332 - - - - - - - 47.62740695849061 - -117.16047998517752 - - 650.7999877929688 - 12912.2001953125 - - - 5.693999767303467 - - - - - - - 47.62741098180413 - -117.16056698933244 - - 651.2000122070312 - 12918.75 - - - 6.708000183105469 - - - - - - - 47.62741492129862 - -117.1606469526887 - - 651.4000244140625 - 12924.7802734375 - - - 5.666999816894531 - - - - - - - 47.627416932955384 - -117.16071995906532 - - 651.7999877929688 - 12930.26953125 - - - 5.860000133514404 - - - - - - - 47.627416932955384 - -117.1607849188149 - - 652.0 - 12935.16015625 - - - 4.684000015258789 - - - - - - - 47.627419950440526 - -117.16085792519152 - - 652.2000122070312 - 12940.66015625 - - - 5.725999832153319 - - - - - - - 47.62742397375405 - -117.16092891991138 - - 652.4000244140625 - 12946.009765625 - - - 5.184000015258789 - - - - - - - 47.62743193656206 - -117.16100192628801 - - 652.7999877929688 - 12951.5703125 - - - 5.7189998626708975 - - - - - - - 47.62744199484587 - -117.16107996180654 - - 653.0 - 12957.5400390625 - - - 5.72100019454956 - - - - - - - 47.62745498679578 - -117.16115799732506 - - 653.0 - 12963.580078125 - - - 6.269999980926514 - - - - - - - 47.62747493572533 - -117.16127593070269 - - 653.2000122070312 - 12972.7197265625 - - - 4.448999881744385 - - - - - - - 47.62748398818076 - -117.16132999397814 - - 653.5999755859375 - 12976.900390625 - - - 4.456999778747559 - - - - - - - 47.627501925453544 - -117.16144398786128 - - 654.5999755859375 - 12985.7001953125 - - - 4.249000072479248 - - - - - - - 47.62751198373735 - -117.16149997897446 - - 654.7999877929688 - 12990.0498046875 - - - 4.710999965667725 - - - - - - - 47.62752992101014 - -117.16161799617112 - - 655.7999877929688 - 12999.1396484375 - - - 4.449999809265137 - - - - - - - 47.62753394432366 - -117.16166493482888 - - 656.0 - 13002.7001953125 - - - 3.7170000076293945 - - - - - - - 47.62753997929394 - -117.16171095147729 - - 656.4000244140625 - 13006.2197265625 - - - 3.539000034332276 - - - - - - - 47.62755892239511 - -117.16179493814707 - - 657.0 - 13012.8798828125 - - - 6.559000015258789 - - - - - - - 47.6275699865073 - -117.16186299920082 - - 657.4000244140625 - 13018.1396484375 - - - 5.234000205993652 - - - - - - - 47.62758398428559 - -117.16193198226392 - - 657.7999877929688 - 13023.5498046875 - - - 5.426000118255614 - - - - - - - 47.62760695070028 - -117.16203298419714 - - 658.2000122070312 - 13031.5595703125 - - - 3.976999998092652 - - - - - - - 47.62762195430696 - -117.16209794394672 - - 658.4000244140625 - 13036.7197265625 - - - 5.2890000343322745 - - - - - - - 47.62764592655003 - -117.16220498085022 - - 658.7999877929688 - 13045.2001953125 - - - 4.111000061035156 - - - - - - - 47.62765699066222 - -117.16225393116474 - - 659.0 - 13049.080078125 - - - 4.13700008392334 - - - - - - - 47.627676939591765 - -117.16236993670464 - - 659.0 - 13058.080078125 - - - 4.372000217437744 - - - - - - - 47.62768398039043 - -117.16241092421114 - - 659.0 - 13061.25 - - - 3.328000068664551 - - - - - - - 47.627697978168726 - -117.16252399608493 - - 659.0 - 13069.8896484375 - - - 4.25600004196167 - - - - - - - 47.62770594097674 - -117.16258795000613 - - 659.0 - 13074.7802734375 - - - 5.09600019454956 - - - - - - - 47.627715999260545 - -117.16266992501915 - - 659.2000122070312 - 13081.0400390625 - - - 3.0650000572204594 - - - - - - - 47.6277219504118 - -117.16272599995136 - - 659.4000244140625 - 13085.3095703125 - - - 4.480999946594238 - - - - - - - 47.62773494236171 - -117.16283395886421 - - 659.7999877929688 - 13093.5498046875 - - - 4.044000148773193 - - - - - - - 47.627738965675235 - -117.1628709230572 - - 660.0 - 13096.3701171875 - - - 2.940000057220459 - - - - - - - 47.627736954018474 - -117.16298491694033 - - 660.4000244140625 - 13104.9404296875 - - - 2.815999984741211 - - - - - - - 47.62774198316038 - -117.16305599547923 - - 661.0 - 13110.2998046875 - - - 5.6479997634887695 - - - - - - - 47.62774491682649 - -117.16317694634199 - - 661.7999877929688 - 13119.400390625 - - - 2.247999906539917 - - - - - - - 47.62774592265487 - -117.16321198269725 - - 662.2000122070312 - 13122.0400390625 - - - 2.7139999866485596 - - - - - - - 47.62774793431163 - -117.16330795548856 - - 662.7999877929688 - 13129.259765625 - - - 2.3889999389648438 - - - - - - - 47.62775296345353 - -117.16338397935033 - - 663.4000244140625 - 13135.0 - - - 5.928999900817871 - - - - - - - 47.62775598093867 - -117.16348799876869 - - 663.7999877929688 - 13142.8203125 - - - 3.864000082015991 - - - - - - - 47.627759920433164 - -117.16353099793196 - - 664.0 - 13146.080078125 - - - 3.3289999961853027 - - - - - - - 47.62777391821146 - -117.16363795101643 - - 664.4000244140625 - 13154.26953125 - - - 4.001999855041504 - - - - - - - 47.62777894735336 - -117.16368698514998 - - 664.5999755859375 - 13158.0 - - - 3.946000099182129 - - - - - - - 47.62778598815203 - -117.16377994045615 - - 665.0 - 13165.0302734375 - - - 2.299999952316284 - - - - - - - 47.62778498232365 - -117.1638289745897 - - 665.2000122070312 - 13168.7099609375 - - - 3.9159998893737793 - - - - - - - 47.62778699398041 - -117.16393592767417 - - 665.5999755859375 - 13176.759765625 - - - 2.6429998874664307 - - - - - - - 47.62778598815203 - -117.16396392323077 - - 665.7999877929688 - 13178.8701171875 - - - 2.174999952316284 - - - - - - - 47.627781964838505 - -117.16402192600071 - - 666.0 - 13183.25 - - - 0.8730000257492065 - - - - - - - 47.62776997871697 - -117.16413793154061 - - 666.5999755859375 - 13192.0703125 - - - 8.27400016784668 - - - - - - - 47.62777592986822 - -117.16426399536431 - - 667.5999755859375 - 13201.5595703125 - - - 3.214999914169312 - - - - - - - 47.62777391821146 - -117.16433892957866 - - 668.0 - 13207.2099609375 - - - 5.8520002365112305 - - - - - - - 47.627781964838505 - -117.16443993151188 - - 668.7999877929688 - 13214.849609375 - - - 3.7909998893737793 - - - - - - - 47.62778799980879 - -117.1644989401102 - - 669.2000122070312 - 13219.330078125 - - - 4.598999977111816 - - - - - - - 47.62778799980879 - -117.1644989401102 - - 669.2000122070312 - 13219.330078125 - - - 0.0 - - - - - - - 47.627799985930324 - -117.1646529994905 - - 669.5999755859375 - 13230.98046875 - - - 12.112000465393066 - - - - - - - 47.62779395096004 - -117.16475794091821 - - 669.5999755859375 - 13238.900390625 - - - 3.8959999084472656 - - - - - - - 47.62779898010194 - -117.16482591815293 - - 669.5999755859375 - 13244.0400390625 - - - 5.322000026702881 - - - - - - - 47.62779898010194 - -117.16492692008615 - - 669.5999755859375 - 13251.6396484375 - - - 3.7209999561309814 - - - - - - - 47.627802919596434 - -117.16498794034123 - - 669.5999755859375 - 13256.240234375 - - - 4.76800012588501 - - - - - - - 47.62780895456672 - -117.16509397141635 - - 669.7999877929688 - 13264.240234375 - - - 3.6740000247955322 - - - - - - - 47.62780895456672 - -117.16514392755926 - - 670.0 - 13268.0 - - - 4.577000141143799 - - - - - - - 47.627799985930324 - -117.16527493670583 - - 670.4000244140625 - 13277.8896484375 - - - 4.836999893188477 - - - - - - - 47.62779696844518 - -117.1653369627893 - - 670.5999755859375 - 13282.5595703125 - - - 4.974999904632568 - - - - - - - 47.6277959626168 - -117.16544793918729 - - 671.0 - 13290.91015625 - - - 4.0960001945495605 - - - - - - - 47.62779294513166 - -117.16550493612885 - - 671.0 - 13295.2001953125 - - - 4.36299991607666 - - - - - - - 47.62779395096004 - -117.16561599634588 - - 671.4000244140625 - 13303.5498046875 - - - 4.176000118255615 - - - - - - - 47.62779395096004 - -117.16567098163068 - - 671.5999755859375 - 13307.6796875 - - - 4.184000015258789 - - - - - - - 47.62778598815203 - -117.16576896607876 - - 672.0 - 13315.099609375 - - - 3.6400001049041752 - - - - - - - 47.627782970666885 - -117.16581892222166 - - 672.2000122070312 - 13318.8701171875 - - - 3.9100000858306885 - - - - - - - 47.627781964838505 - -117.16590098105371 - - 672.4000244140625 - 13325.0400390625 - - - 2.0299999713897705 - - - - - - - 47.6277909334749 - -117.1659759990871 - - 673.0 - 13330.759765625 - - - 5.933000087738037 - - - - - - - 47.627803925424814 - -117.16607297770679 - - 673.4000244140625 - 13338.2001953125 - - - 7.173999786376953 - - - - - - - 47.62781691737473 - -117.16616995632648 - - 673.7999877929688 - 13345.6298828125 - - - 7.685999870300293 - - - - - - - 47.62783393263817 - -117.16629099100828 - - 674.5999755859375 - 13354.919921875 - - - 3.7550001144409184 - - - - - - - 47.62784097343683 - -117.16633893549442 - - 675.0 - 13358.6103515625 - - - 7.336999893188477 - - - - - - - 47.627846924588084 - -117.1664509177208 - - 675.7999877929688 - 13367.0498046875 - - - 4.039999961853027 - - - - - - - 47.62785295955837 - -117.1665109321475 - - 676.2000122070312 - 13371.6103515625 - - - 4.993000030517578 - - - - - - - 47.62785798870027 - -117.16661495156586 - - 676.5999755859375 - 13379.4501953125 - - - 3.8359999656677246 - - - - - - - 47.627859916538 - -117.16666096821427 - - 676.5999755859375 - 13382.91015625 - - - 3.624000072479248 - - - - - - - 47.62785899452865 - -117.16678099706769 - - 677.0 - 13391.9296875 - - - 2.2290000915527344 - - - - - - - 47.62785094790161 - -117.16692893765867 - - 677.0 - 13403.08984375 - - - 11.67300033569336 - - - - - - - 47.62783795595169 - -117.16704192571342 - - 677.0 - 13411.7099609375 - - - 4.242000102996826 - - - - - - - 47.62783292680979 - -117.16709397733212 - - 677.0 - 13415.650390625 - - - 4.035999774932861 - - - - - - - 47.627825969830155 - -117.1672189515084 - - 677.0 - 13425.080078125 - - - 4.610000133514404 - - - - - - - 47.627824964001775 - -117.16729698702693 - - 677.0 - 13430.9404296875 - - - 6.191999912261963 - - - - - - - 47.62782798148692 - -117.1673759445548 - - 676.7999877929688 - 13436.8896484375 - - - 5.669000148773193 - - - - - - - 47.62783393263817 - -117.16745498590171 - - 676.7999877929688 - 13442.8701171875 - - - 6.263000011444092 - - - - - - - 47.627845918759704 - -117.16753897257149 - - 677.0 - 13449.3203125 - - - 6.235000133514404 - - - - - - - 47.627859916538 - -117.16764098033309 - - 677.0 - 13457.1396484375 - - - 8.081000328063965 - - - - - - - 47.627859916538 - -117.16764098033309 - - 677.0 - 13457.1396484375 - - - 0.0 - - - - - - - 47.6278789434582 - -117.16777299530804 - - 677.2000122070312 - 13467.2900390625 - - - 10.791000366210938 - - - - - - - 47.627891935408115 - -117.16787693090737 - - 677.2000122070312 - 13475.240234375 - - - 7.64300012588501 - - - - - - - 47.62790693901479 - -117.16797499917448 - - 676.7999877929688 - 13482.7900390625 - - - 7.76200008392334 - - - - - - - 47.62792093679309 - -117.16807197779417 - - 676.5999755859375 - 13490.240234375 - - - 7.160999774932861 - - - - - - - 47.627931917086244 - -117.16817297972739 - - 676.5999755859375 - 13497.9296875 - - - 8.00100040435791 - - - - - - - 47.62794197537005 - -117.16827699914575 - - 676.5999755859375 - 13505.830078125 - - - 7.785999774932861 - - - - - - - 47.62795094400644 - -117.1683849580586 - - 676.5999755859375 - 13514.009765625 - - - 8.380000114440918 - - - - - - - 47.62794692069292 - -117.1684919949621 - - 676.2000122070312 - 13522.0595703125 - - - 7.708000183105469 - - - - - - - 47.62794096954167 - -117.16858394443989 - - 675.7999877929688 - 13529.009765625 - - - 7.214000225067139 - - - - - - - 47.627933928743005 - -117.16866399161518 - - 675.5999755859375 - 13535.0703125 - - - 5.818999767303466 - - - - - - - 47.627932922914624 - -117.16876298189163 - - 675.5999755859375 - 13542.509765625 - - - 7.8420000076293945 - - - - - - - 47.62792797759175 - -117.16885493136942 - - 675.5999755859375 - 13549.4501953125 - - - 6.69000005722046 - - - - - - - 47.62792697176337 - -117.16894897632301 - - 675.7999877929688 - 13556.509765625 - - - 7.283999919891357 - - - - - - - 47.62792194262147 - -117.16904897242785 - - 675.7999877929688 - 13564.0498046875 - - - 7.171000003814698 - - - - - - - 47.62792093679309 - -117.16914595104754 - - 675.7999877929688 - 13571.33984375 - - - 7.739999771118164 - - - - - - - 47.62792496010661 - -117.16924091801047 - - 675.7999877929688 - 13578.5 - - - 6.743000030517578 - - - - - - - 47.62792596593499 - -117.1693329513073 - - 675.7999877929688 - 13585.41015625 - - - 7.22599983215332 - - - - - - - 47.62792395427823 - -117.16942791827023 - - 675.7999877929688 - 13592.5595703125 - - - 6.822999954223633 - - - - - - - 47.62791993096471 - -117.16953294351697 - - 675.5999755859375 - 13600.4599609375 - - - 8.444999694824219 - - - - - - - 47.6279169972986 - -117.16962992213666 - - 675.4000244140625 - 13607.759765625 - - - 7.02400016784668 - - - - - - - 47.6279169972986 - -117.16972597874701 - - 675.4000244140625 - 13614.9697265625 - - - 7.524000167846681 - - - - - - - 47.62792596593499 - -117.16980694793165 - - 675.5999755859375 - 13621.1396484375 - - - 5.927000045776367 - - - - - - - 47.627928983420134 - -117.16989797540009 - - 675.5999755859375 - 13627.990234375 - - - 7.0960001945495605 - - - - - - - 47.627929989248514 - -117.16998699121177 - - 675.5999755859375 - 13634.6796875 - - - 6.572000026702881 - - - - - - - 47.62792697176337 - -117.17008296400309 - - 675.5999755859375 - 13641.900390625 - - - 7.341000080108643 - - - - - - - 47.62792797759175 - -117.17016896232963 - - 675.7999877929688 - 13648.3701171875 - - - 6.394000053405762 - - - - - - - 47.627928983420134 - -117.17026392929256 - - 676.2000122070312 - 13655.509765625 - - - 7.264999866485596 - - - - - - - 47.62792797759175 - -117.17035596258938 - - 676.2000122070312 - 13662.4296875 - - - 6.688000202178955 - - - - - - - 47.62792395427823 - -117.17045092955232 - - 676.5999755859375 - 13669.580078125 - - - 7.414000034332275 - - - - - - - 47.62791892513633 - -117.17054095119238 - - 676.7999877929688 - 13676.3701171875 - - - 6.47599983215332 - - - - - - - 47.62790794484317 - -117.1706369239837 - - 677.2000122070312 - 13683.6904296875 - - - 7.576000213623047 - - - - - - - 47.6278979703784 - -117.17073398642242 - - 677.4000244140625 - 13691.0595703125 - - - 7.2230000495910645 - - - - - - - 47.627891935408115 - -117.17083398252726 - - 677.7999877929688 - 13698.6103515625 - - - 7.755000114440918 - - - - - - - 47.627887995913625 - -117.17094294726849 - - 678.0 - 13706.8095703125 - - - 8.107000350952148 - - - - - - - 47.627886990085244 - -117.1710439492017 - - 678.0 - 13714.400390625 - - - 7.630000114440918 - - - - - - - 47.6278839726001 - -117.17115199193358 - - 678.0 - 13722.5302734375 - - - 7.941999912261963 - - - - - - - 47.62788095511496 - -117.17125894501805 - - 678.0 - 13730.580078125 - - - 8.288999557495117 - - - - - - - 47.62788095511496 - -117.17135592363775 - - 678.0 - 13737.8701171875 - - - 7.14799976348877 - - - - - - - 47.6278789434582 - -117.17145298607647 - - 678.0 - 13745.16015625 - - - 7.458000183105469 - - - - - - - 47.62787299230695 - -117.17155097052455 - - 678.4000244140625 - 13752.5595703125 - - - 7.2230000495910645 - - - - - - - 47.62786393985152 - -117.17163294553757 - - 678.5999755859375 - 13758.7998046875 - - - 6.449999809265137 - - - - - - - 47.627859916538 - -117.17171592637897 - - 678.7999877929688 - 13765.0498046875 - - - 6.102000236511231 - - - - - - - 47.62785698287189 - -117.17180594801903 - - 679.2000122070312 - 13771.830078125 - - - 6.882999897003175 - - - - - - - 47.62785698287189 - -117.17189898714423 - - 679.4000244140625 - 13778.8203125 - - - 6.747000217437744 - - - - - - - 47.62785195372999 - -117.17198599129915 - - 679.7999877929688 - 13785.3798828125 - - - 6.771999835968018 - - - - - - - 47.62785195372999 - -117.17206796631217 - - 680.2000122070312 - 13791.5400390625 - - - 6.113999843597413 - - - - - - - 47.62785195372999 - -117.17215195298195 - - 680.4000244140625 - 13797.8603515625 - - - 6.441999912261963 - - - - - - - 47.62784197926521 - -117.17223392799497 - - 680.5999755859375 - 13804.1201171875 - - - 5.49399995803833 - - - - - - - 47.62784097343683 - -117.17232897877693 - - 681.0 - 13811.259765625 - - - 8.199000358581543 - - - - - - - 47.62784097343683 - -117.17245093546808 - - 681.0 - 13820.4296875 - - - 8.741000175476074 - - - - - - - 47.62783996760845 - -117.17256291769445 - - 681.0 - 13828.849609375 - - - 8.843000411987305 - - - - - - - 47.62783695012331 - -117.1726589743048 - - 681.2000122070312 - 13836.0703125 - - - 7.144999980926514 - - - - - - - 47.62783493846655 - -117.17275494709611 - - 681.5999755859375 - 13843.2900390625 - - - 7.314000129699707 - - - - - - - 47.62783594429493 - -117.17286692932248 - - 682.0 - 13851.7099609375 - - - 8.095000267028809 - - - - - - - 47.62783393263817 - -117.17298293486238 - - 682.0 - 13860.4296875 - - - 7.644000053405762 - - - - - - - 47.62783192098141 - -117.17310195788741 - - 682.0 - 13869.3798828125 - - - 10.319000244140625 - - - - - - - 47.6278289873153 - -117.1732319612056 - - 682.0 - 13879.150390625 - - - 10.467000007629395 - - - - - - - 47.62783099897206 - -117.17334394343197 - - 682.0 - 13887.5703125 - - - 8.305000305175781 - - - - - - - 47.6278289873153 - -117.17343295924366 - - 682.0 - 13894.26953125 - - - 6.754000186920166 - - - - - - - 47.62782798148692 - -117.17353496700525 - - 682.4000244140625 - 13901.9296875 - - - 7.451000213623047 - - - - - - - 47.62782194651663 - -117.17363697476685 - - 682.7999877929688 - 13909.6298828125 - - - 8.008000373840332 - - - - - - - 47.62781096622348 - -117.17375197447836 - - 683.0 - 13918.3603515625 - - - 8.25100040435791 - - - - - - - 47.627799985930324 - -117.17384492978454 - - 683.0 - 13925.4599609375 - - - 7.46999979019165 - - - - - - - 47.62779395096004 - -117.1739489492029 - - 683.0 - 13933.2998046875 - - - 6.105000019073486 - - - - - - - 47.62778699398041 - -117.1740369591862 - - 683.0 - 13939.9599609375 - - - 7.114999771118164 - - - - - - - 47.62777894735336 - -117.17413796111941 - - 683.2000122070312 - 13947.599609375 - - - 7.66599988937378 - - - - - - - 47.6277769356966 - -117.17422597110271 - - 683.5999755859375 - 13954.2197265625 - - - 6.506999969482422 - - - - - - - 47.6277769356966 - -117.17422597110271 - - 683.5999755859375 - 13954.2197265625 - - - 0.0 - - - - - - - 47.627782970666885 - -117.17445094138384 - - 684.0 - 13971.150390625 - - - 17.575000762939453 - - - - - - - 47.627782970666885 - -117.17454699799418 - - 684.0 - 13978.3603515625 - - - 6.859000205993652 - - - - - - - 47.627780959010124 - -117.17464397661388 - - 684.0 - 13985.66015625 - - - 7.622000217437744 - - - - - - - 47.627783976495266 - -117.17472695745528 - - 684.0 - 13991.900390625 - - - 4.98199987411499 - - - - - - - 47.62779495678842 - -117.17482594773173 - - 684.0 - 13999.4404296875 - - - 10.357999801635742 - - - - - - - 47.627802919596434 - -117.17490691691637 - - 684.0 - 14005.599609375 - - - 6.007999897003174 - - - - - - - 47.62781197205186 - -117.17498897574842 - - 684.0 - 14011.83984375 - - - 6.46999979019165 - - - - - - - 47.62781691737473 - -117.17506592161953 - - 684.0 - 14017.650390625 - - - 5.382999897003174 - - - - - - - 47.62782094068825 - -117.17514295130968 - - 684.0 - 14023.4599609375 - - - 6.181000232696534 - - - - - - - 47.627824964001775 - -117.17520992271602 - - 684.0 - 14028.509765625 - - - 4.955999851226807 - - - - - - - 47.62783192098141 - -117.17528594657779 - - 684.0 - 14034.2802734375 - - - 6.005000114440918 - - - - - - - 47.62784197926521 - -117.17537194490433 - - 684.0 - 14040.83984375 - - - 6.294000148773193 - - - - - - - 47.62785295955837 - -117.17545492574573 - - 684.2000122070312 - 14047.1904296875 - - - 6.5 - - - - - - - 47.62786293402314 - -117.17556196264923 - - 684.5999755859375 - 14055.3095703125 - - - 7.814000129699707 - - - - - - - 47.627866957336664 - -117.17565592378378 - - 685.0 - 14062.3896484375 - - - 7.374000072479248 - - - - - - - 47.62787492014468 - -117.17575198039412 - - 685.0 - 14069.66015625 - - - 7.14799976348877 - - - - - - - 47.62788296677172 - -117.17584795318544 - - 684.7999877929688 - 14076.9296875 - - - 7.410999774932861 - - - - - - - 47.62788497842848 - -117.17593395151198 - - 684.7999877929688 - 14083.400390625 - - - 6.165999889373779 - - - - - - - 47.627885984256864 - -117.17602497898042 - - 684.7999877929688 - 14090.240234375 - - - 6.9730000495910645 - - - - - - - 47.627890929579735 - -117.17610795982182 - - 684.7999877929688 - 14096.5 - - - 6.183000087738037 - - - - - - - 47.62790098786354 - -117.17619094066322 - - 684.7999877929688 - 14102.83984375 - - - 6.546000003814698 - - - - - - - 47.62790593318641 - -117.17627199366689 - - 684.7999877929688 - 14108.9501953125 - - - 5.901000022888184 - - - - - - - 47.62790199369192 - -117.17633695341647 - - 684.7999877929688 - 14113.8603515625 - - - 5.067999839782715 - - - - - - - 47.62789696455002 - -117.17646293342113 - - 684.7999877929688 - 14123.33984375 - - - 4.708000183105469 - - - - - - - 47.6278979703784 - -117.17653493396938 - - 684.7999877929688 - 14128.759765625 - - - 5.533999919891357 - - - - - - - 47.6278979703784 - -117.17653493396938 - - 684.7999877929688 - 14128.759765625 - - - 0.0 - - - - - - - 47.627892941236496 - -117.17668497003615 - - 684.7999877929688 - 14140.0498046875 - - - 11.881999969482422 - - - - - - - 47.62789495289326 - -117.17677197419107 - - 684.7999877929688 - 14146.58984375 - - - 6.208000183105469 - - - - - - - 47.62789495289326 - -117.17686099000275 - - 684.4000244140625 - 14153.2802734375 - - - 6.939000129699707 - - - - - - - 47.62789495289326 - -117.1769499219954 - - 684.2000122070312 - 14159.9697265625 - - - 6.656000137329102 - - - - - - - 47.62789696455002 - -117.17704597860575 - - 684.0 - 14167.1904296875 - - - 7.132999897003174 - - - - - - - 47.62789897620678 - -117.17714295722544 - - 684.0 - 14174.48046875 - - - 7.1020002365112305 - - - - - - - 47.6279029995203 - -117.1772419475019 - - 684.0 - 14181.9296875 - - - 7.717000007629395 - - - - - - - 47.62790794484317 - -117.17732794582844 - - 684.0 - 14188.419921875 - - - 6.461999893188477 - - - - - - - 47.627909956499934 - -117.17741897329688 - - 684.0 - 14195.259765625 - - - 6.953999996185303 - - - - - - - 47.627908950671554 - -117.17751896940172 - - 684.0 - 14202.7802734375 - - - 7.420000076293945 - - - - - - - 47.62790392152965 - -117.1776219829917 - - 684.0 - 14210.5400390625 - - - 7.855999946594238 - - - - - - - 47.62790794484317 - -117.17773597687483 - - 683.5999755859375 - 14219.1201171875 - - - 8.25 - - - - - - - 47.62790693901479 - -117.17785793356597 - - 683.0 - 14228.2900390625 - - - 9.512999534606934 - - - - - - - 47.6279029995203 - -117.17797997407615 - - 683.0 - 14237.4697265625 - - - 8.869999885559082 - - - - - - - 47.6279029995203 - -117.17809899710119 - - 683.0 - 14246.419921875 - - - 9.29699993133545 - - - - - - - 47.62789897620678 - -117.17821592465043 - - 683.0 - 14255.2197265625 - - - 8.515000343322754 - - - - - - - 47.62789595872164 - -117.17833595350385 - - 683.0 - 14264.25 - - - 9.314000129699707 - - - - - - - 47.62789595872164 - -117.17833595350385 - - 683.0 - 14264.25 - - - 0.0 - - - - - - - 47.627892941236496 - -117.17846897430718 - - 682.7999877929688 - 14274.25 - - - 10.397000312805176 - - - - - - - 47.627892941236496 - -117.17846897430718 - - 682.7999877929688 - 14274.25 - - - 0.0 - - - - - - - 47.62789394706488 - -117.178605934605 - - 682.2000122070312 - 14284.5498046875 - - - 10.65999984741211 - - - - - - - 47.62789394706488 - -117.178605934605 - - 682.2000122070312 - 14284.5498046875 - - - 0.0 - - - - - - - 47.6279029995203 - -117.17875194735825 - - 682.0 - 14295.5703125 - - - 11.623000144958496 - - - - - - - 47.62789696455002 - -117.17887097038329 - - 682.0 - 14304.5400390625 - - - 8.62399959564209 - - - - - - - 47.62789495289326 - -117.17899393290281 - - 681.7999877929688 - 14313.7802734375 - - - 9.663000106811523 - - - - - - - 47.62789394706488 - -117.17911899089813 - - 681.4000244140625 - 14323.1796875 - - - 9.017000198364258 - - - - - - - 47.627891935408115 - -117.17924295924604 - - 681.0 - 14332.5 - - - 9.833999633789062 - - - - - - - 47.627892941236496 - -117.17935594730079 - - 680.5999755859375 - 14341.0 - - - 8.270999908447266 - - - - - - - 47.627892941236496 - -117.1794849447906 - - 680.2000122070312 - 14350.6904296875 - - - 9.793999671936035 - - - - - - - 47.627889923751354 - -117.17960497364402 - - 680.0 - 14359.7197265625 - - - 8.612000465393066 - - - - - - - 47.627887995913625 - -117.17971896752715 - - 680.0 - 14368.2900390625 - - - 9.08899974822998 - - - - - - - 47.6278839726001 - -117.17983497306705 - - 679.7999877929688 - 14377.01953125 - - - 5.686999797821045 - - - - - - - 47.62787399813533 - -117.17994092032313 - - 679.4000244140625 - 14385.0595703125 - - - 17.448999404907227 - - - - - - - 47.627867963165045 - -117.18004393391311 - - 679.2000122070312 - 14392.830078125 - - - 7.5 - - - - - - - 47.62785698287189 - -117.18016999773681 - - 679.0 - 14402.3798828125 - - - 9.904999732971191 - - - - - - - 47.627845918759704 - -117.18029698356986 - - 679.0 - 14412.0 - - - 8.878000259399414 - - - - - - - 47.627845918759704 - -117.18043595552444 - - 679.0 - 14422.4501953125 - - - 11.293999671936033 - - - - - - - 47.627842985093594 - -117.1805679704994 - - 679.0 - 14432.3798828125 - - - 9.637999534606934 - - - - - - - 47.627845918759704 - -117.18071197159588 - - 678.7999877929688 - 14443.2099609375 - - - 11.185999870300293 - - - - - - - 47.627845918759704 - -117.18071197159588 - - 678.7999877929688 - 14443.2099609375 - - - 0.0 - - - - - - - 47.627846924588084 - -117.18085094355047 - - 678.2000122070312 - 14453.650390625 - - - 10.92899990081787 - - - - - - - 47.627846924588084 - -117.18085094355047 - - 678.2000122070312 - 14453.650390625 - - - 0.0 - - - - - - - 47.627843990921974 - -117.18098597601056 - - 678.0 - 14463.8095703125 - - - 10.541999816894531 - - - - - - - 47.627843990921974 - -117.18098597601056 - - 678.0 - 14463.8095703125 - - - 0.0 - - - - - - - 47.627845918759704 - -117.18113391660154 - - 678.0 - 14474.9296875 - - - 11.329999923706055 - - - - - - - 47.627845918759704 - -117.18113391660154 - - 678.0 - 14474.9296875 - - - 0.0 - - - - - - - 47.627847930416465 - -117.18127699568868 - - 677.7999877929688 - 14485.6796875 - - - 11.128999710083006 - - - - - - - 47.627847930416465 - -117.18127699568868 - - 677.7999877929688 - 14485.6796875 - - - 0.0 - - - - - - - 47.627848936244845 - -117.18140993267298 - - 677.2000122070312 - 14495.6796875 - - - 10.369999885559082 - - - - - - - 47.627845918759704 - -117.18154094181955 - - 676.7999877929688 - 14505.5302734375 - - - 7.900000095367432 - - - - - - - 47.627843990921974 - -117.18168293125927 - - 676.4000244140625 - 14516.2099609375 - - - 14.083000183105469 - - - - - - - 47.627843990921974 - -117.18168293125927 - - 676.4000244140625 - 14516.2099609375 - - - 0.0 - - - - - - - 47.627843990921974 - -117.18182693235576 - - 675.7999877929688 - 14527.0302734375 - - - 11.477000236511229 - - - - - - - 47.627843990921974 - -117.18182693235576 - - 675.7999877929688 - 14527.0302734375 - - - 0.0 - - - - - - - 47.627842985093594 - -117.18196799978614 - - 675.4000244140625 - 14537.6298828125 - - - 10.651000022888184 - - - - - - - 47.627842985093594 - -117.18196799978614 - - 675.4000244140625 - 14537.6298828125 - - - 0.0 - - - - - - - 47.62784197926521 - -117.18211392872036 - - 675.0 - 14548.599609375 - - - 11.371999740600586 - - - - - - - 47.62784197926521 - -117.18211392872036 - - 675.0 - 14548.599609375 - - - 0.0 - - - - - - - 47.62784097343683 - -117.18226396478713 - - 675.0 - 14559.8798828125 - - - 11.769000053405762 - - - - - - - 47.62784097343683 - -117.18226396478713 - - 675.0 - 14559.8798828125 - - - 0.0 - - - - - - - 47.627844996750355 - -117.18241391703486 - - 674.7999877929688 - 14571.16015625 - - - 11.704000473022461 - - - - - - - 47.627844996750355 - -117.18241391703486 - - 674.7999877929688 - 14571.16015625 - - - 0.0 - - - - - - - 47.627849942073226 - -117.18256998807192 - - 674.2000122070312 - 14582.900390625 - - - 11.892999649047852 - - - - - - - 47.627849942073226 - -117.18256998807192 - - 674.2000122070312 - 14582.900390625 - - - 0.0 - - - - - - - 47.62785497121513 - -117.18272396363318 - - 674.0 - 14594.490234375 - - - 11.958999633789062 - - - - - - - 47.62785497121513 - -117.18272396363318 - - 674.0 - 14594.490234375 - - - 0.0 - - - - - - - 47.62785698287189 - -117.18286293558776 - - 674.0 - 14604.9296875 - - - 10.597999572753906 - - - - - - - 47.62785698287189 - -117.18286293558776 - - 674.0 - 14604.9296875 - - - 0.0 - - - - - - - 47.62785698287189 - -117.18299696221948 - - 674.0 - 14615.009765625 - - - 8.60099983215332 - - - - - - - 47.62785396538675 - -117.18311799690127 - - 674.0 - 14624.1103515625 - - - 10.83399963378906 - - - - - - - 47.627847930416465 - -117.18322796747088 - - 674.0 - 14632.400390625 - - - 8.6850004196167 - - - - - - - 47.627847930416465 - -117.18322796747088 - - 674.0 - 14632.400390625 - - - 0.0 - - - - - - - 47.627842985093594 - -117.18337096273899 - - 674.0 - 14643.16015625 - - - 11.211000442504883 - - - - - - - 47.627842985093594 - -117.18337096273899 - - 674.0 - 14643.16015625 - - - 0.0 - - - - - - - 47.62783996760845 - -117.1835089288652 - - 673.7999877929688 - 14653.5400390625 - - - 10.798999786376951 - - - - - - - 47.62783795595169 - -117.183637926355 - - 673.4000244140625 - 14663.240234375 - - - 9.416000366210938 - - - - - - - 47.62783493846655 - -117.18377497047186 - - 673.0 - 14673.5400390625 - - - 10.588000297546387 - - - - - - - 47.62783493846655 - -117.18377497047186 - - 673.0 - 14673.5400390625 - - - 0.0 - - - - - - - 47.62783099897206 - -117.18391193076968 - - 673.0 - 14683.849609375 - - - 10.68000030517578 - - - - - - - 47.62783099897206 - -117.18391193076968 - - 673.0 - 14683.849609375 - - - 0.0 - - - - - - - 47.62782798148692 - -117.18404897488654 - - 672.7999877929688 - 14694.150390625 - - - 10.902000427246094 - - - - - - - 47.62782798148692 - -117.18404897488654 - - 672.7999877929688 - 14694.150390625 - - - 0.0 - - - - - - - 47.627826975658536 - -117.18418199568987 - - 672.4000244140625 - 14704.150390625 - - - 10.211000442504883 - - - - - - - 47.627826975658536 - -117.18418199568987 - - 672.4000244140625 - 14704.150390625 - - - 0.0 - - - - - - - 47.62782798148692 - -117.18431694433093 - - 672.0 - 14714.2900390625 - - - 10.592000007629393 - - - - - - - 47.62782798148692 - -117.18431694433093 - - 672.0 - 14714.2900390625 - - - 0.0 - - - - - - - 47.62782999314368 - -117.1844569221139 - - 671.4000244140625 - 14724.8203125 - - - 11.079000473022461 - - - - - - - 47.62782999314368 - -117.1844569221139 - - 671.4000244140625 - 14724.8203125 - - - 0.0 - - - - - - - 47.62783393263817 - -117.18460695818067 - - 670.7999877929688 - 14736.099609375 - - - 11.282999992370605 - - - - - - - 47.62783393263817 - -117.18460695818067 - - 670.7999877929688 - 14736.099609375 - - - 0.0 - - - - - - - 47.62783594429493 - -117.18474593013525 - - 670.4000244140625 - 14746.5498046875 - - - 10.696000099182129 - - - - - - - 47.62783594429493 - -117.18474593013525 - - 670.4000244140625 - 14746.5498046875 - - - 0.0 - - - - - - - 47.62783594429493 - -117.18488498590887 - - 669.7999877929688 - 14757.0 - - - 10.026000022888184 - - - - - - - 47.62783594429493 - -117.18488498590887 - - 669.7999877929688 - 14757.0 - - - 0.0 - - - - - - - 47.62783695012331 - -117.18502798117697 - - 669.4000244140625 - 14767.75 - - - 12.326000213623047 - - - - - - - 47.62783795595169 - -117.18515295535326 - - 668.7999877929688 - 14777.1396484375 - - - 9.357999801635742 - - - - - - - 47.62783795595169 - -117.18527499586344 - - 668.4000244140625 - 14786.3095703125 - - - 9.309000015258789 - - - - - - - 47.62783795595169 - -117.18527499586344 - - 668.4000244140625 - 14786.3095703125 - - - 0.0 - - - - - - - 47.627843990921974 - -117.18542092479765 - - 667.7999877929688 - 14797.3095703125 - - - 11.720000267028809 - - - - - - - 47.627843990921974 - -117.18542092479765 - - 667.7999877929688 - 14797.3095703125 - - - 0.0 - - - - - - - 47.62785094790161 - -117.1855809353292 - - 666.5999755859375 - 14809.3603515625 - - - 12.003000259399414 - - - - - - - 47.62785094790161 - -117.1855809353292 - - 666.5999755859375 - 14809.3603515625 - - - 0.0 - - - - - - - 47.62785798870027 - -117.18574798665941 - - 665.5999755859375 - 14821.9296875 - - - 12.805999755859375 - - - - - - - 47.62785798870027 - -117.18574798665941 - - 665.5999755859375 - 14821.9296875 - - - 0.0 - - - - - - - 47.62786393985152 - -117.18590799719095 - - 665.0 - 14833.98046875 - - - 13.487000465393066 - - - - - - - 47.62786393985152 - -117.18590799719095 - - 665.0 - 14833.98046875 - - - 0.0 - - - - - - - 47.62785798870027 - -117.18605292029679 - - 664.5999755859375 - 14844.900390625 - - - 10.88599967956543 - - - - - - - 47.62785798870027 - -117.18605292029679 - - 664.5999755859375 - 14844.900390625 - - - 0.0 - - - - - - - 47.62785597704351 - -117.18619993887842 - - 664.0 - 14855.9501953125 - - - 11.546999931335447 - - - - - - - 47.62785597704351 - -117.18619993887842 - - 664.0 - 14855.9501953125 - - - 0.0 - - - - - - - 47.62786393985152 - -117.18636598438025 - - 663.4000244140625 - 14868.4599609375 - - - 12.699000358581545 - - - - - - - 47.62785195372999 - -117.18649498187006 - - 663.0 - 14878.240234375 - - - 8.946000099182129 - - - - - - - 47.62785899452865 - -117.18664292246103 - - 661.7999877929688 - 14889.3896484375 - - - 12.4040002822876 - - - - - - - 47.62785899452865 - -117.18664292246103 - - 661.7999877929688 - 14889.3896484375 - - - 0.0 - - - - - - - 47.62786092236638 - -117.18677694909275 - - 661.0 - 14899.4697265625 - - - 10.175999641418457 - - - - - - - 47.62786092236638 - -117.18677694909275 - - 661.0 - 14899.4697265625 - - - 0.0 - - - - - - - 47.6278839726001 - -117.18692899681628 - - 660.4000244140625 - 14911.169921875 - - - 11.741999626159668 - - - - - - - 47.6278839726001 - -117.18692899681628 - - 660.4000244140625 - 14911.169921875 - - - 0.0 - - - - - - - 47.62791397981346 - -117.18708297237754 - - 659.5999755859375 - 14923.2197265625 - - - 12.253999710083008 - - - - - - - 47.62791397981346 - -117.18708297237754 - - 659.5999755859375 - 14923.2197265625 - - - 0.0 - - - - - - - 47.627978939563036 - -117.18726092018187 - - 658.7999877929688 - 14938.4296875 - - - 15.45300006866455 - - - - - - - 47.627978939563036 - -117.18726092018187 - - 658.7999877929688 - 14938.4296875 - - - 0.0 - - - - - - - 47.62805094011128 - -117.1874269656837 - - 657.7999877929688 - 14953.25 - - - 15.314000129699707 - - - - - - - 47.62805094011128 - -117.1874269656837 - - 657.7999877929688 - 14953.25 - - - 0.0 - - - - - - - 47.62812092900276 - -117.18758094124496 - - 656.2000122070312 - 14967.2001953125 - - - 14.15999984741211 - - - - - - - 47.62812092900276 - -117.18758094124496 - - 656.2000122070312 - 14967.2001953125 - - - 0.0 - - - - - - - 47.62818597257137 - -117.18771295621991 - - 655.5999755859375 - 14979.4697265625 - - - 11.998000144958496 - - - - - - - 47.62818597257137 - -117.18771295621991 - - 655.5999755859375 - 14979.4697265625 - - - 0.0 - - - - - - - 47.62824598699808 - -117.18784991651773 - - 654.7999877929688 - 14991.740234375 - - - 12.621999740600586 - - - - - - - 47.62824598699808 - -117.18784991651773 - - 654.7999877929688 - 14991.740234375 - - - 0.0 - - - - - - - 47.6283089350909 - -117.18798193149269 - - 654.4000244140625 - 15003.8896484375 - - - 24.78499984741211 - - - - - - - 47.6283089350909 - -117.18798193149269 - - 654.4000244140625 - 15003.8896484375 - - - 0.0 - - - - - - - 47.628364926204085 - -117.18811696395278 - - 654.2000122070312 - 15015.7900390625 - - - 12.135000228881836 - - - - - - - 47.628364926204085 - -117.18811696395278 - - 654.2000122070312 - 15015.7900390625 - - - 0.0 - - - - - - - 47.62842393480241 - -117.1882779803127 - - 654.2000122070312 - 15029.5498046875 - - - 14.074000358581543 - - - - - - - 47.62842393480241 - -117.1882779803127 - - 654.2000122070312 - 15029.5498046875 - - - 0.0 - - - - - - - 47.628488978371024 - -117.18844494782388 - - 653.7999877929688 - 15044.0400390625 - - - 14.993000030517578 - - - - - - - 47.628488978371024 - -117.18844494782388 - - 653.7999877929688 - 15044.0400390625 - - - 0.0 - - - - - - - 47.62854798696935 - -117.18858995474875 - - 653.0 - 15056.759765625 - - - 12.901000022888184 - - - - - - - 47.62854798696935 - -117.18858995474875 - - 653.0 - 15056.759765625 - - - 0.0 - - - - - - - 47.62861395254731 - -117.18873194418848 - - 652.2000122070312 - 15069.7099609375 - - - 12.265000343322754 - - - - - - - 47.62861395254731 - -117.18873194418848 - - 652.2000122070312 - 15069.7099609375 - - - 0.0 - - - - - - - 47.62867799028754 - -117.18888399191201 - - 651.2000122070312 - 15083.169921875 - - - 14.954999923706055 - - - - - - - 47.62867799028754 - -117.18888399191201 - - 651.2000122070312 - 15083.169921875 - - - 0.0 - - - - - - - 47.62873699888587 - -117.18904794193804 - - 649.7999877929688 - 15097.1298828125 - - - 14.529999732971191 - - - - - - - 47.62873699888587 - -117.18904794193804 - - 649.7999877929688 - 15097.1298828125 - - - 0.0 - - - - - - - 47.628794917836785 - -117.18921298161149 - - 648.5999755859375 - 15111.1103515625 - - - 14.395000457763674 - - - - - - - 47.628794917836785 - -117.18921298161149 - - 648.5999755859375 - 15111.1103515625 - - - 0.0 - - - - - - - 47.628855938091874 - -117.18938799574971 - - 647.5999755859375 - 15125.91015625 - - - 15.878000259399414 - - - - - - - 47.628855938091874 - -117.18938799574971 - - 647.5999755859375 - 15125.91015625 - - - 0.0 - - - - - - - 47.62890899553895 - -117.18953694216907 - - 647.0 - 15138.5595703125 - - - 12.965999603271484 - - - - - - - 47.62890899553895 - -117.18953694216907 - - 647.0 - 15138.5595703125 - - - 0.0 - - - - - - - 47.628962974995375 - -117.18968597240746 - - 646.0 - 15151.26953125 - - - 12.782999992370607 - - - - - - - 47.628962974995375 - -117.18968597240746 - - 646.0 - 15151.26953125 - - - 0.0 - - - - - - - 47.6290219835937 - -117.18985193409026 - - 644.5999755859375 - 15165.3701171875 - - - 15.12399959564209 - - - - - - - 47.6290219835937 - -117.18985193409026 - - 644.5999755859375 - 15165.3701171875 - - - 0.0 - - - - - - - 47.62908996082842 - -117.19002191908658 - - 643.2000122070312 - 15180.2099609375 - - - 13.887999534606934 - - - - - - - 47.62908996082842 - -117.19002191908658 - - 643.2000122070312 - 15180.2099609375 - - - 0.0 - - - - - - - 47.629158943891525 - -117.1902019623667 - - 642.4000244140625 - 15195.759765625 - - - 18.625999450683594 - - - - - - - 47.629158943891525 - -117.1902019623667 - - 642.4000244140625 - 15195.759765625 - - - 0.0 - - - - - - - 47.62923396192491 - -117.19039097428322 - - 641.2000122070312 - 15212.240234375 - - - 28.447999954223633 - - - - - - - 47.62923396192491 - -117.19039097428322 - - 641.2000122070312 - 15212.240234375 - - - 0.0 - - - - - - - 47.629308979958296 - -117.19058794900775 - - 640.7999877929688 - 15229.23046875 - - - 16.152999877929688 - - - - - - - 47.629308979958296 - -117.19058794900775 - - 640.7999877929688 - 15229.23046875 - - - 0.0 - - - - - - - 47.629374945536256 - -117.19076497480273 - - 640.0 - 15244.419921875 - - - 18.5049991607666 - - - - - - - 47.629374945536256 - -117.19076497480273 - - 640.0 - 15244.419921875 - - - 0.0 - - - - - - - 47.629436971619725 - -117.190918950364 - - 639.4000244140625 - 15257.8896484375 - - - 13.607999801635744 - - - - - - - 47.629436971619725 - -117.190918950364 - - 639.4000244140625 - 15257.8896484375 - - - 0.0 - - - - - - - 47.62951098382473 - -117.19108499586582 - - 638.5999755859375 - 15272.83984375 - - - 14.397999763488771 - - - - - - - 47.62951098382473 - -117.19108499586582 - - 638.5999755859375 - 15272.83984375 - - - 0.0 - - - - - - - 47.629589941352606 - -117.19125598669052 - - 637.5999755859375 - 15288.400390625 - - - 17.608999252319336 - - - - - - - 47.629589941352606 - -117.19125598669052 - - 637.5999755859375 - 15288.400390625 - - - 0.0 - - - - - - - 47.62965892441571 - -117.19142094254494 - - 637.2000122070312 - 15302.990234375 - - - 15.1899995803833 - - - - - - - 47.62965892441571 - -117.19142094254494 - - 637.2000122070312 - 15302.990234375 - - - 0.0 - - - - - - - 47.62973092496395 - -117.19159293919802 - - 635.7999877929688 - 15318.1904296875 - - - 15.739999771118164 - - - - - - - 47.62973092496395 - -117.19159293919802 - - 635.7999877929688 - 15318.1904296875 - - - 0.0 - - - - - - - 47.629805942997336 - -117.1917609963566 - - 634.7999877929688 - 15333.3203125 - - - 14.41100025177002 - - - - - - - 47.629805942997336 - -117.1917609963566 - - 634.7999877929688 - 15333.3203125 - - - 0.0 - - - - - - - 47.62987995520234 - -117.19192796386778 - - 633.4000244140625 - 15348.330078125 - - - 16.347999572753906 - - - - - - - 47.62987995520234 - -117.19192796386778 - - 633.4000244140625 - 15348.330078125 - - - 0.0 - - - - - - - 47.62995799072087 - -117.19207196496427 - - 632.0 - 15362.2001953125 - - - 12.972999572753906 - - - - - - - 47.62995799072087 - -117.19207196496427 - - 632.0 - 15362.2001953125 - - - 0.0 - - - - - - - 47.630060920491815 - -117.19217497855425 - - 630.5999755859375 - 15376.01953125 - - - 15.852000236511232 - - - - - - - 47.630060920491815 - -117.19217497855425 - - 630.5999755859375 - 15376.01953125 - - - 0.0 - - - - - - - 47.6301549654454 - -117.19226692803204 - - 630.4000244140625 - 15388.5498046875 - - - 13.190999984741211 - - - - - - - 47.6301549654454 - -117.19226692803204 - - 630.4000244140625 - 15388.5498046875 - - - 0.0 - - - - - - - 47.630254961550236 - -117.19236692413688 - - 630.0 - 15401.9697265625 - - - 14.140999794006348 - - - - - - - 47.630254961550236 - -117.19236692413688 - - 630.0 - 15401.9697265625 - - - 0.0 - - - - - - - 47.63035194016993 - -117.19247194938362 - - 630.0 - 15415.33984375 - - - 13.734000205993652 - - - - - - - 47.63035194016993 - -117.19247194938362 - - 630.0 - 15415.33984375 - - - 0.0 - - - - - - - 47.630445985123515 - -117.1925799921155 - - 630.4000244140625 - 15428.5703125 - - - 13.755999565124512 - - - - - - - 47.630445985123515 - -117.1925799921155 - - 630.4000244140625 - 15428.5703125 - - - 0.0 - - - - - - - 47.630535922944546 - -117.19269096851349 - - 630.0 - 15441.599609375 - - - 13.199000358581543 - - - - - - - 47.630535922944546 - -117.19269096851349 - - 630.0 - 15441.599609375 - - - 0.0 - - - - - - - 47.630622927099466 - -117.19281292520463 - - 629.0 - 15454.9296875 - - - 13.984999656677246 - - - - - - - 47.630622927099466 - -117.19281292520463 - - 629.0 - 15454.9296875 - - - 0.0 - - - - - - - 47.630702974274755 - -117.19294192269444 - - 628.7999877929688 - 15468.080078125 - - - 13.748000144958496 - - - - - - - 47.630702974274755 - -117.19294192269444 - - 628.7999877929688 - 15468.080078125 - - - 0.0 - - - - - - - 47.630768939852715 - -117.19310897402465 - - 628.2000122070312 - 15482.6201171875 - - - 15.081999778747559 - - - - - - - 47.630768939852715 - -117.19310897402465 - - 628.2000122070312 - 15482.6201171875 - - - 0.0 - - - - - - - 47.63083599507809 - -117.19328197650611 - - 627.7999877929688 - 15497.6103515625 - - - 15.496000289916992 - - - - - - - 47.63083599507809 - -117.19328197650611 - - 627.7999877929688 - 15497.6103515625 - - - 0.0 - - - - - - - 47.630893997848034 - -117.19343695789576 - - 627.2000122070312 - 15510.919921875 - - - 13.89900016784668 - - - - - - - 47.630893997848034 - -117.19343695789576 - - 627.2000122070312 - 15510.919921875 - - - 0.0 - - - - - - - 47.6309459656477 - -117.19357693567872 - - 627.4000244140625 - 15522.9296875 - - - 12.812999725341797 - - - - - - - 47.63098091818392 - -117.1936799492687 - - 627.4000244140625 - 15531.58984375 - - - 8.196999549865723 - - - - - - - 47.631025929003954 - -117.19381095841527 - - 627.7999877929688 - 15542.6396484375 - - - 11.258000373840332 - - - - - - - 47.631025929003954 - -117.19381095841527 - - 627.7999877929688 - 15542.6396484375 - - - 0.0 - - - - - - - 47.631068928167224 - -117.19394791871309 - - 628.0 - 15553.990234375 - - - 11.751999855041504 - - - - - - - 47.631068928167224 - -117.19394791871309 - - 628.0 - 15553.990234375 - - - 0.0 - - - - - - - 47.63111896812916 - -117.1940819453448 - - 628.2000122070312 - 15565.490234375 - - - 12.095999717712402 - - - - - - - 47.63111896812916 - -117.1940819453448 - - 628.2000122070312 - 15565.490234375 - - - 0.0 - - - - - - - 47.631158949807286 - -117.19420197419822 - - 627.4000244140625 - 15575.5498046875 - - - 10.312999725341797 - - - - - - - 47.63119298033416 - -117.19431295059621 - - 627.0 - 15584.7099609375 - - - 8.95300006866455 - - - - - - - 47.631237991154194 - -117.19445292837918 - - 627.2000122070312 - 15596.3603515625 - - - 11.791999816894531 - - - - - - - 47.631237991154194 - -117.19445292837918 - - 627.2000122070312 - 15596.3603515625 - - - 0.0 - - - - - - - 47.631280990317464 - -117.1945779863745 - - 627.4000244140625 - 15606.900390625 - - - 10.9350004196167 - - - - - - - 47.631280990317464 - -117.1945779863745 - - 627.4000244140625 - 15606.900390625 - - - 0.0 - - - - - - - 47.63131996616721 - -117.19471494667232 - - 627.0 - 15618.0703125 - - - 11.307999610900877 - - - - - - - 47.63131996616721 - -117.19471494667232 - - 627.0 - 15618.0703125 - - - 0.0 - - - - - - - 47.63133798725903 - -117.1948539186269 - - 626.7999877929688 - 15628.7099609375 - - - 11.067999839782715 - - - - - - - 47.63133798725903 - -117.1948539186269 - - 626.7999877929688 - 15628.7099609375 - - - 0.0 - - - - - - - 47.63135299086571 - -117.1950029488653 - - 626.7999877929688 - 15640.0302734375 - - - 11.854999542236328 - - - - - - - 47.63135299086571 - -117.1950029488653 - - 626.7999877929688 - 15640.0302734375 - - - 0.0 - - - - - - - 47.631369922310114 - -117.19515692442656 - - 626.4000244140625 - 15651.759765625 - - - 11.894000053405762 - - - - - - - 47.631369922310114 - -117.19515692442656 - - 626.4000244140625 - 15651.759765625 - - - 0.0 - - - - - - - 47.631389955058694 - -117.1953079663217 - - 625.7999877929688 - 15663.3203125 - - - 11.996000289916992 - - - - - - - 47.63138693757355 - -117.19543394632638 - - 625.4000244140625 - 15672.7900390625 - - - 9.154999732971191 - - - - - - - 47.631389955058694 - -117.19557291828096 - - 625.2000122070312 - 15683.25 - - - 10.842000007629395 - - - - - - - 47.631389955058694 - -117.19557291828096 - - 625.2000122070312 - 15683.25 - - - 0.0 - - - - - - - 47.6313949842006 - -117.1957109682262 - - 625.0 - 15693.6298828125 - - - 10.751999855041504 - - - - - - - 47.6313949842006 - -117.1957109682262 - - 625.0 - 15693.6298828125 - - - 0.0 - - - - - - - 47.63140093535185 - -117.19585597515106 - - 624.5999755859375 - 15704.5498046875 - - - 11.385000228881836 - - - - - - - 47.63140495866537 - -117.19598296098411 - - 624.0 - 15714.1103515625 - - - 9.28600025177002 - - - - - - - 47.631409987807274 - -117.19610994681716 - - 623.5999755859375 - 15723.669921875 - - - 9.666999816894531 - - - - - - - 47.631412921473384 - -117.19622595235705 - - 623.2000122070312 - 15732.3896484375 - - - 8.920999526977539 - - - - - - - 47.631415938958526 - -117.1963389404118 - - 623.0 - 15740.8896484375 - - - 7.958000183105469 - - - - - - - 47.631416944786906 - -117.19642292708158 - - 623.0 - 15747.2099609375 - - - 6.502999782562256 - - - - - - - 47.631416944786906 - -117.19649593345821 - - 623.0 - 15752.6904296875 - - - 5.781000137329102 - - - - - - - 47.631367994472384 - -117.19659995287657 - - 623.0 - 15762.2197265625 - - - 4.692999839782715 - - - - - - - 47.631330946460366 - -117.19665996730328 - - 623.0 - 15768.3203125 - - - 6.254000186920166 - - - - - - - 47.63127596117556 - -117.19669693149626 - - 623.0 - 15775.0400390625 - - - 6.057000160217285 - - - - - - - 47.63122298754752 - -117.19672392122447 - - 623.0 - 15781.26953125 - - - 6.686999797821045 - - - - - - - 47.63116791844368 - -117.19674998894334 - - 623.0 - 15787.6904296875 - - - 6.445000171661377 - - - - - - - 47.63111092150211 - -117.1967689320445 - - 623.0 - 15794.1904296875 - - - 6.816999912261963 - - - - - - - 47.63105392456055 - -117.19678695313632 - - 623.0 - 15800.669921875 - - - 6.13100004196167 - - - - - - - 47.63099893927574 - -117.19680095091462 - - 623.0 - 15806.8701171875 - - - 6.409999847412109 - - - - - - - 47.63093397952616 - -117.19680991955101 - - 623.0 - 15814.1298828125 - - - 7.1020002365112305 - - - - - - - 47.63087195344269 - -117.1968109253794 - - 623.0 - 15821.0302734375 - - - 7.048999786376953 - - - - - - - 47.63080892153084 - -117.19681293703616 - - 623.2000122070312 - 15828.0302734375 - - - 6.868999958038331 - - - - - - - 47.630746979266405 - -117.1968159545213 - - 623.4000244140625 - 15834.9296875 - - - 7.080999851226807 - - - - - - - 47.630682941526175 - -117.19681897200644 - - 623.5999755859375 - 15842.0498046875 - - - 6.729000091552734 - - - - - - - 47.63061395846307 - -117.19682391732931 - - 623.7999877929688 - 15849.73046875 - - - 8.312999725341797 - - - - - - - 47.63053793460131 - -117.19682794064283 - - 624.0 - 15858.1796875 - - - 8.013999938964844 - - - - - - - 47.63046593405306 - -117.19683196395636 - - 624.0 - 15866.2001953125 - - - 8.352999687194824 - - - - - - - 47.63039292767644 - -117.19683296978474 - - 624.0 - 15874.3095703125 - - - 7.820000171661377 - - - - - - - 47.630317993462086 - -117.1968349814415 - - 624.0 - 15882.650390625 - - - 8.607000350952148 - - - - - - - 47.63023995794356 - -117.19683892093599 - - 624.0 - 15891.330078125 - - - 8.62600040435791 - - - - - - - 47.63016192242503 - -117.19684395007789 - - 624.0 - 15900.009765625 - - - 8.87600040435791 - - - - - - - 47.630083970725536 - -117.19684495590627 - - 624.0 - 15908.6796875 - - - 8.38700008392334 - - - - - - - 47.63000593520701 - -117.19684596173465 - - 624.0 - 15917.3603515625 - - - 8.968999862670898 - - - - - - - 47.62992697767913 - -117.19684696756303 - - 624.2000122070312 - 15926.1396484375 - - - 8.430000305175781 - - - - - - - 47.629847936332226 - -117.19684294424951 - - 624.5999755859375 - 15934.9296875 - - - 9.005000114440918 - - - - - - - 47.62976897880435 - -117.19683892093599 - - 624.7999877929688 - 15943.7197265625 - - - 8.451000213623047 - - - - - - - 47.629692954942584 - -117.19683992676437 - - 624.7999877929688 - 15952.169921875 - - - 8.812000274658203 - - - - - - - 47.62962095439434 - -117.19683799892664 - - 624.7999877929688 - 15960.169921875 - - - 7.803999900817871 - - - - - - - 47.629540991038084 - -117.1968349814415 - - 624.7999877929688 - 15969.0703125 - - - 9.050999641418457 - - - - - - - 47.62946295551956 - -117.19683196395636 - - 624.7999877929688 - 15977.75 - - - 8.406000137329102 - - - - - - - 47.62939095497131 - -117.1968299522996 - - 624.7999877929688 - 15985.75 - - - 8.428000450134277 - - - - - - - 47.62932096607983 - -117.19682693481445 - - 624.7999877929688 - 15993.5400390625 - - - 7.236000061035157 - - - - - - - 47.62925399467349 - -117.19682391732931 - - 624.7999877929688 - 16000.990234375 - - - 8.013999938964844 - - - - - - - 47.62918895110488 - -117.19682198949158 - - 624.7999877929688 - 16008.2197265625 - - - 6.9770002365112305 - - - - - - - 47.62912499718368 - -117.19681796617806 - - 624.7999877929688 - 16015.33984375 - - - 7.380000114440919 - - - - - - - 47.62906699441373 - -117.19681997783482 - - 624.7999877929688 - 16021.7900390625 - - - 6.172999858856201 - - - - - - - 47.62901594862342 - -117.19682391732931 - - 624.7999877929688 - 16027.4697265625 - - - 6.014999866485596 - - - - - - - 47.62895794585347 - -117.19682492315769 - - 624.7999877929688 - 16033.919921875 - - - 6.164999961853028 - - - - - - - 47.62889591977 - -117.19682391732931 - - 625.0 - 16040.8095703125 - - - 7.158999919891357 - - - - - - - 47.628835989162326 - -117.19682794064283 - - 625.0 - 16047.490234375 - - - 6.408999919891358 - - - - - - - 47.62877597473562 - -117.1968299522996 - - 625.0 - 16054.16015625 - - - 6.980000019073486 - - - - - - - 47.62871093116701 - -117.19683196395636 - - 625.0 - 16061.3896484375 - - - 7.3460001945495605 - - - - - - - 47.62864597141743 - -117.19683397561312 - - 625.0 - 16068.6201171875 - - - 7.17799997329712 - - - - - - - 47.628577994182706 - -117.19683397561312 - - 625.0 - 16076.1796875 - - - 7.072000026702881 - - - - - - - 47.628513956442475 - -117.19683699309826 - - 625.0 - 16083.2998046875 - - - 7.5980000495910645 - - - - - - - 47.628448996692896 - -117.19683992676437 - - 625.0 - 16090.5302734375 - - - 7.117000102996826 - - - - - - - 47.628384958952665 - -117.19684294424951 - - 625.0 - 16097.650390625 - - - 7.323999881744385 - - - - - - - 47.628319999203086 - -117.19684495590627 - - 625.0 - 16104.8798828125 - - - 6.916999816894531 - - - - - - - 47.62825797311962 - -117.19684696756303 - - 625.0 - 16111.76953125 - - - 7.035999774932861 - - - - - - - 47.62819594703615 - -117.1968489792198 - - 625.0 - 16118.669921875 - - - 6.833000183105469 - - - - - - - 47.6281379442662 - -117.19685392454267 - - 625.0 - 16125.1298828125 - - - 6.466000080108643 - - - - - - - 47.628082958981395 - -117.19685694202781 - - 625.0 - 16131.25 - - - 5.907000064849853 - - - - - - - 47.62802998535335 - -117.19685895368457 - - 625.0 - 16137.1396484375 - - - 5.997000217437744 - - - - - - - 47.627977933734655 - -117.19685895368457 - - 625.0 - 16142.919921875 - - - 5.6519999504089355 - - - - - - - 47.62792797759175 - -117.19685995951295 - - 625.0 - 16148.48046875 - - - 5.888999938964844 - - - - - - - 47.62785899452865 - -117.19694193452597 - - 625.0 - 16158.3203125 - - - 4.9029998779296875 - - - - - - - 47.62785597704351 - -117.19701594673097 - - 625.0 - 16163.900390625 - - - 5.6570000648498535 - - - - - - - 47.62785295955837 - -117.19708291813731 - - 624.7999877929688 - 16168.9404296875 - - - 4.839000225067139 - - - - - - - 47.62785195372999 - -117.19716397114098 - - 624.5999755859375 - 16175.0302734375 - - - 6.296999931335449 - - - - - - - 47.62785396538675 - -117.19724494032562 - - 624.4000244140625 - 16181.1201171875 - - - 6.038000106811523 - - - - - - - 47.627859916538 - -117.1973249875009 - - 624.0 - 16187.169921875 - - - 6.191999912261963 - - - - - - - 47.62785798870027 - -117.19745197333395 - - 624.0 - 16196.7197265625 - - - 4.651000022888184 - - - - - - - 47.62786092236638 - -117.19753495417535 - - 624.0 - 16202.9697265625 - - - 6.618000030517579 - - - - - - - 47.62787198647857 - -117.19762296415865 - - 624.0 - 16209.6904296875 - - - 6.406000137329102 - - - - - - - 47.62787592597306 - -117.19772698357701 - - 624.0 - 16217.51953125 - - - 8.121999740600586 - - - - - - - 47.6278789434582 - -117.19783091917634 - - 624.0 - 16225.349609375 - - - 7.58900022506714 - - - - - - - 47.62787693180144 - -117.19793192110956 - - 624.0 - 16232.9404296875 - - - 7.781000137329102 - - - - - - - 47.62787492014468 - -117.19802898354828 - - 624.0 - 16240.240234375 - - - 7.123000144958496 - - - - - - - 47.62787299230695 - -117.19811892136931 - - 624.0 - 16247.0 - - - 7.093999862670898 - - - - - - - 47.62787098065019 - -117.19821095466614 - - 624.0 - 16253.919921875 - - - 6.558000087738037 - - - - - - - 47.62787592597306 - -117.19830692745745 - - 624.0 - 16261.16015625 - - - 7.42199993133545 - - - - - - - 47.62787994928658 - -117.19840197823942 - - 624.0 - 16268.3095703125 - - - 7.04099988937378 - - - - - - - 47.62788296677172 - -117.19850096851587 - - 623.7999877929688 - 16275.759765625 - - - 7.410999774932861 - - - - - - - 47.6278839726001 - -117.19860498793423 - - 623.4000244140625 - 16283.580078125 - - - 7.678999900817871 - - - - - - - 47.62788296677172 - -117.19869593158364 - - 623.0 - 16290.419921875 - - - 7.3470001220703125 - - - - - - - 47.62788196094334 - -117.19879098236561 - - 623.0 - 16297.5595703125 - - - 6.704999923706055 - - - - - - - 47.6278789434582 - -117.1988879609853 - - 623.0 - 16304.8603515625 - - - 7.730999946594239 - - - - - - - 47.62787994928658 - -117.19900094904006 - - 623.0 - 16313.349609375 - - - 8.151000022888184 - - - - - - - 47.62787793762982 - -117.19910496845841 - - 623.0 - 16321.169921875 - - - 8.187999725341797 - - - - - - - 47.6278789434582 - -117.19920798204839 - - 623.0 - 16328.919921875 - - - 7.576000213623047 - - - - - - - 47.62787793762982 - -117.1993269212544 - - 623.0 - 16337.8603515625 - - - 9.118000030517578 - - - - - - - 47.62787793762982 - -117.1993269212544 - - 623.0 - 16337.8603515625 - - - 0.0 - - - - - - - 47.627886990085244 - -117.1994699165225 - - 623.0 - 16348.650390625 - - - 10.937000274658203 - - - - - - - 47.62789394706488 - -117.19960193149745 - - 623.0 - 16358.6103515625 - - - 9.550999641418457 - - - - - - - 47.62789595872164 - -117.19970796257257 - - 623.0 - 16366.580078125 - - - 8.241999626159668 - - - - - - - 47.627891935408115 - -117.19980494119227 - - 623.0 - 16373.8798828125 - - - 7.146999835968018 - - - - - - - 47.627889923751354 - -117.19990795478225 - - 623.0 - 16381.6298828125 - - - 7.967999935150147 - - - - - - - 47.627885984256864 - -117.20000996254385 - - 623.0 - 16389.30078125 - - - 7.499000072479248 - - - - - - - 47.6278839726001 - -117.20011197030544 - - 623.0 - 16396.970703125 - - - 7.849999904632568 - - - - - - - 47.627885984256864 - -117.20022898167372 - - 623.0 - 16405.76953125 - - - 8.434000015258789 - - - - - - - 47.627887995913625 - -117.20033895224333 - - 623.0 - 16414.0390625 - - - 8.517999649047852 - - - - - - - 47.627889923751354 - -117.20045395195484 - - 623.0 - 16422.689453125 - - - 8.354000091552734 - - - - - - - 47.62789394706488 - -117.20057096332312 - - 623.0 - 16431.490234375 - - - 9.258999824523926 - - - - - - - 47.62789696455002 - -117.20067095942795 - - 623.0 - 16439.01953125 - - - 7.361000061035156 - - - - - - - 47.6279029995203 - -117.20079098828137 - - 623.0 - 16448.060546875 - - - 9.303999900817871 - - - - - - - 47.62790693901479 - -117.20090297050774 - - 623.0 - 16456.490234375 - - - 8.378999710083008 - - - - - - - 47.627910962328315 - -117.20102693885565 - - 623.0 - 16465.8203125 - - - 9.321000099182129 - - - - - - - 47.627910962328315 - -117.20114797353745 - - 623.0 - 16474.91015625 - - - 8.744999885559082 - - - - - - - 47.627911968156695 - -117.20126699656248 - - 623.0 - 16483.859375 - - - 9.406000137329102 - - - - - - - 47.627909956499934 - -117.20138794742525 - - 623.0 - 16492.9609375 - - - 8.928000450134277 - - - - - - - 47.62790693901479 - -117.2015109937638 - - 623.0 - 16502.2109375 - - - 9.430000305175781 - - - - - - - 47.6279029995203 - -117.20161593519151 - - 623.0 - 16510.109375 - - - 7.810999870300293 - - - - - - - 47.62789696455002 - -117.20172699540854 - - 623.0 - 16518.48046875 - - - 8.505999565124512 - - - - - - - 47.62789394706488 - -117.2018389776349 - - 623.0 - 16526.900390625 - - - 8.015999794006348 - - - - - - - 47.62789595872164 - -117.20196596346796 - - 623.0 - 16536.44921875 - - - 9.967000007629395 - - - - - - - 47.6278979703784 - -117.20208297483623 - - 623.0 - 16545.25 - - - 5.8489999771118155 - - - - - - - 47.62789495289326 - -117.202203925699 - - 623.0 - 16554.349609375 - - - 18.422000885009766 - - - - - - - 47.62789595872164 - -117.20230895094573 - - 623.0 - 16562.240234375 - - - 7.692999839782715 - - - - - - - 47.62789595872164 - -117.20240995287895 - - 623.0 - 16569.830078125 - - - 7.754000186920167 - - - - - - - 47.62789595872164 - -117.20251397229731 - - 623.0 - 16577.650390625 - - - 7.515999794006348 - - - - - - - 47.627887995913625 - -117.20261698588729 - - 623.0 - 16585.439453125 - - - 8.1850004196167 - - - - - - - 47.627887995913625 - -117.20261698588729 - - 623.0 - 16585.439453125 - - - 0.0 - - - - - - - 47.627891935408115 - -117.20275193452835 - - 623.0 - 16595.599609375 - - - 10.536000251770018 - - - - - - - 47.627891935408115 - -117.20275193452835 - - 623.0 - 16595.599609375 - - - 0.0 - - - - - - - 47.62789897620678 - -117.20289895310998 - - 623.0 - 16606.6796875 - - - 11.548999786376953 - - - - - - - 47.62790199369192 - -117.20301998779178 - - 623.0 - 16615.779296875 - - - 8.784000396728516 - - - - - - - 47.62789998203516 - -117.20313197001815 - - 623.0 - 16624.19921875 - - - 8.717000007629395 - - - - - - - 47.6278979703784 - -117.2032499872148 - - 622.5999755859375 - 16633.0703125 - - - 8.689000129699707 - - - - - - - 47.62789495289326 - -117.20338191837072 - - 622.0 - 16643.0 - - - 10.067999839782715 - - - - - - - 47.627892941236496 - -117.20351192168891 - - 622.0 - 16652.76953125 - - - 8.892999649047852 - - - - - - - 47.627890929579735 - -117.20362993888557 - - 622.0 - 16661.640625 - - - 9.901000022888184 - - - - - - - 47.627890929579735 - -117.20362993888557 - - 622.0 - 16661.640625 - - - 0.0 - - - - - - - 47.627888917922974 - -117.2037629596889 - - 622.0 - 16671.640625 - - - 10.65999984741211 - - - - - - - 47.627888917922974 - -117.2038839943707 - - 622.0 - 16680.73046875 - - - 8.555000305175781 - - - - - - - 47.627886990085244 - -117.20399094745517 - - 622.0 - 16688.779296875 - - - 8.460000038146973 - - - - - - - 47.62788497842848 - -117.20409899018705 - - 622.0 - 16696.900390625 - - - 8.0 - - - - - - - 47.62788497842848 - -117.20420292578638 - - 622.0 - 16704.720703125 - - - 7.144999980926514 - - - - - - - 47.62788196094334 - -117.20431197434664 - - 622.0 - 16712.919921875 - - - 8.807000160217285 - - - - - - - 47.62787793762982 - -117.2044329252094 - - 622.0 - 16722.01953125 - - - 9.397000312805176 - - - - - - - 47.62787299230695 - -117.20455194823444 - - 622.0 - 16730.98046875 - - - 8.583999633789062 - - - - - - - 47.62787198647857 - -117.20469494350255 - - 621.4000244140625 - 16741.73046875 - - - 11.446999549865723 - - - - - - - 47.62787098065019 - -117.20482394099236 - - 621.0 - 16751.4296875 - - - 9.314000129699707 - - - - - - - 47.627868968993425 - -117.20495696179569 - - 621.0 - 16761.4296875 - - - 10.038999557495117 - - - - - - - 47.627868968993425 - -117.20495696179569 - - 621.0 - 16761.4296875 - - - 0.0 - - - - - - - 47.627865951508284 - -117.20509291626513 - - 621.0 - 16771.650390625 - - - 10.810999870300293 - - - - - - - 47.62786092236638 - -117.20519391819835 - - 621.0 - 16779.259765625 - - - 7.433000087738037 - - - - - - - 47.62786092236638 - -117.20533892512321 - - 621.0 - 16790.16015625 - - - 11.166000366210938 - - - - - - - 47.62786092236638 - -117.20533892512321 - - 621.0 - 16790.16015625 - - - 0.0 - - - - - - - 47.62785798870027 - -117.20547596924007 - - 621.0 - 16800.4609375 - - - 10.753999710083008 - - - - - - - 47.62785798870027 - -117.20547596924007 - - 621.0 - 16800.4609375 - - - 0.0 - - - - - - - 47.627859916538 - -117.20562692731619 - - 621.0 - 16811.8203125 - - - 11.774999618530272 - - - - - - - 47.627859916538 - -117.20562692731619 - - 621.0 - 16811.8203125 - - - 0.0 - - - - - - - 47.627865951508284 - -117.20576397143304 - - 620.5999755859375 - 16822.130859375 - - - 10.64900016784668 - - - - - - - 47.627865951508284 - -117.20576397143304 - - 620.5999755859375 - 16822.130859375 - - - 0.0 - - - - - - - 47.62787399813533 - -117.2059129178524 - - 620.0 - 16833.369140625 - - - 11.605999946594238 - - - - - - - 47.62787399813533 - -117.2059129178524 - - 620.0 - 16833.369140625 - - - 0.0 - - - - - - - 47.62788095511496 - -117.20606194809079 - - 620.0 - 16844.599609375 - - - 11.779999732971191 - - - - - - - 47.62788095511496 - -117.20606194809079 - - 620.0 - 16844.599609375 - - - 0.0 - - - - - - - 47.62788497842848 - -117.20621793530881 - - 619.7999877929688 - 16856.330078125 - - - 10.765000343322754 - - - - - - - 47.62788497842848 - -117.20621793530881 - - 619.7999877929688 - 16856.330078125 - - - 0.0 - - - - - - - 47.62789495289326 - -117.20639395527542 - - 619.2000122070312 - 16869.599609375 - - - 14.732999801635742 - - - - - - - 47.62789495289326 - -117.20639395527542 - - 619.2000122070312 - 16869.599609375 - - - 0.0 - - - - - - - 47.62790593318641 - -117.20654994249344 - - 619.0 - 16881.390625 - - - 12.204000473022463 - - - - - - - 47.62790593318641 - -117.20654994249344 - - 619.0 - 16881.390625 - - - 0.0 - - - - - - - 47.627909956499934 - -117.20668497495353 - - 619.0 - 16891.55078125 - - - 10.503000259399414 - - - - - - - 47.627909956499934 - -117.20668497495353 - - 619.0 - 16891.55078125 - - - 0.0 - - - - - - - 47.627912973985076 - -117.20682394690812 - - 618.5999755859375 - 16902.0 - - - 10.699000358581543 - - - - - - - 47.627912973985076 - -117.20682394690812 - - 618.5999755859375 - 16902.0 - - - 0.0 - - - - - - - 47.62791791930795 - -117.20697993412614 - - 618.0 - 16913.740234375 - - - 12.12600040435791 - - - - - - - 47.62791791930795 - -117.20697993412614 - - 618.0 - 16913.740234375 - - - 0.0 - - - - - - - 47.62792194262147 - -117.20712997019291 - - 618.0 - 16925.01953125 - - - 11.729000091552734 - - - - - - - 47.62792194262147 - -117.20712997019291 - - 618.0 - 16925.01953125 - - - 0.0 - - - - - - - 47.627928983420134 - -117.20727799460292 - - 618.0 - 16936.169921875 - - - 11.496000289916992 - - - - - - - 47.627928983420134 - -117.20727799460292 - - 618.0 - 16936.169921875 - - - 0.0 - - - - - - - 47.627932922914624 - -117.2074169665575 - - 617.7999877929688 - 16946.630859375 - - - 10.914999961853026 - - - - - - - 47.627932922914624 - -117.2074169665575 - - 617.7999877929688 - 16946.630859375 - - - 0.0 - - - - - - - 47.627930995076895 - -117.20756297931075 - - 617.2000122070312 - 16957.609375 - - - 11.409000396728516 - - - - - - - 47.627930995076895 - -117.20756297931075 - - 617.2000122070312 - 16957.609375 - - - 0.0 - - - - - - - 47.627928983420134 - -117.20771091990173 - - 617.0 - 16968.73046875 - - - 10.605999946594237 - - - - - - - 47.627928983420134 - -117.20771091990173 - - 617.0 - 16968.73046875 - - - 0.0 - - - - - - - 47.62792697176337 - -117.20785894431174 - - 617.0 - 16979.859375 - - - 12.89200019836426 - - - - - - - 47.62792697176337 - -117.20785894431174 - - 617.0 - 16979.859375 - - - 0.0 - - - - - - - 47.62792697176337 - -117.20799992792308 - - 617.0 - 16990.4609375 - - - 10.869000434875488 - - - - - - - 47.62792697176337 - -117.20812993124127 - - 617.0 - 17000.23046875 - - - 9.52299976348877 - - - - - - - 47.62792797759175 - -117.20827493816614 - - 617.0 - 17011.130859375 - - - 11.508999824523926 - - - - - - - 47.62792797759175 - -117.20827493816614 - - 617.0 - 17011.130859375 - - - 0.0 - - - - - - - 47.62792596593499 - -117.20841298811138 - - 617.0 - 17021.5 - - - 10.333000183105469 - - - - - - - 47.62792596593499 - -117.20841298811138 - - 617.0 - 17021.5 - - - 0.0 - - - - - - - 47.62792496010661 - -117.20855698920786 - - 617.0 - 17032.3203125 - - - 11.12399959564209 - - - - - - - 47.62792496010661 - -117.20855698920786 - - 617.0 - 17032.3203125 - - - 0.0 - - - - - - - 47.62792496010661 - -117.20869394950569 - - 617.0 - 17042.619140625 - - - 10.793000221252441 - - - - - - - 47.62792395427823 - -117.20882495865226 - - 617.0 - 17052.470703125 - - - 9.404999732971191 - - - - - - - 47.62792395427823 - -117.2089439816773 - - 617.0 - 17061.41015625 - - - 9.288000106811523 - - - - - - - 47.62792194262147 - -117.20907398499548 - - 617.0 - 17071.1796875 - - - 9.397000312805176 - - - - - - - 47.62792093679309 - -117.20920893363655 - - 617.0 - 17081.330078125 - - - 10.63700008392334 - - - - - - - 47.62791892513633 - -117.20933994278312 - - 617.0 - 17091.1796875 - - - 9.684000015258789 - - - - - - - 47.62791892513633 - -117.20947396941483 - - 617.0 - 17101.25 - - - 10.309000015258789 - - - - - - - 47.62791892513633 - -117.20947396941483 - - 617.0 - 17101.25 - - - 0.0 - - - - - - - 47.62791993096471 - -117.20960992388427 - - 617.0 - 17111.470703125 - - - 10.284000396728516 - - - - - - - 47.62791993096471 - -117.20960992388427 - - 617.0 - 17111.470703125 - - - 0.0 - - - - - - - 47.62791892513633 - -117.20974395051599 - - 617.0 - 17121.5390625 - - - 10.362000465393066 - - - - - - - 47.62791892513633 - -117.20974395051599 - - 617.0 - 17121.5390625 - - - 0.0 - - - - - - - 47.62791791930795 - -117.20988694578409 - - 617.0 - 17132.2890625 - - - 11.17300033569336 - - - - - - - 47.62791599147022 - -117.21001795493066 - - 617.0 - 17142.140625 - - - 9.673999786376953 - - - - - - - 47.6279169972986 - -117.21015793271363 - - 617.0 - 17152.669921875 - - - 9.909000396728516 - - - - - - - 47.62791791930795 - -117.21028793603182 - - 617.0 - 17162.439453125 - - - 10.263999938964844 - - - - - - - 47.62792395427823 - -117.21042095683515 - - 617.0 - 17172.4609375 - - - 10.338999748229979 - - - - - - - 47.62792395427823 - -117.21042095683515 - - 617.0 - 17172.4609375 - - - 0.0 - - - - - - - 47.627931917086244 - -117.21055992878973 - - 617.0 - 17182.939453125 - - - 10.776000022888184 - - - - - - - 47.627931917086244 - -117.21055992878973 - - 617.0 - 17182.939453125 - - - 0.0 - - - - - - - 47.62794096954167 - -117.21071499399841 - - 617.0 - 17194.630859375 - - - 11.968000411987305 - - - - - - - 47.6279479265213 - -117.2108399681747 - - 617.0 - 17204.060546875 - - - 8.85200023651123 - - - - - - - 47.62796091847122 - -117.21101892180741 - - 617.0 - 17217.58984375 - - - 14.319000244140625 - - - - - - - 47.62796091847122 - -117.21101892180741 - - 617.0 - 17217.58984375 - - - 0.0 - - - - - - - 47.62797097675502 - -117.21116996370256 - - 617.0 - 17229.0 - - - 11.95300006866455 - - - - - - - 47.62797097675502 - -117.21116996370256 - - 617.0 - 17229.0 - - - 0.0 - - - - - - - 47.6279809512198 - -117.21131899394095 - - 617.0 - 17240.25 - - - 12.10099983215332 - - - - - - - 47.6279809512198 - -117.21131899394095 - - 617.0 - 17240.25 - - - 0.0 - - - - - - - 47.62799293734133 - -117.21146995201707 - - 617.0 - 17251.6796875 - - - 12.182999610900879 - - - - - - - 47.62799997814 - -117.21159593202174 - - 617.0 - 17261.1796875 - - - 9.324999809265137 - - - - - - - 47.62800794094801 - -117.21172199584544 - - 617.0 - 17270.689453125 - - - 9.706000328063965 - - - - - - - 47.628014981746674 - -117.21184596419334 - - 617.0 - 17280.0390625 - - - 9.08899974822998 - - - - - - - 47.628017999231815 - -117.21195098944008 - - 617.0 - 17287.939453125 - - - 8.26200008392334 - - - - - - - 47.62801297008991 - -117.21203598193824 - - 617.0 - 17294.359375 - - - 6.177999973297119 - - - - - - - 47.62800299562514 - -117.21211393363774 - - 617.0 - 17300.3203125 - - - 6.10099983215332 - - - - - - - 47.627996960654855 - -117.21219297498465 - - 617.0 - 17306.30078125 - - - 5.241000175476074 - - - - - - - 47.62798991985619 - -117.2122729383409 - - 617.0 - 17312.359375 - - - 6.936999797821045 - - - - - - - 47.627977933734655 - -117.21235097385943 - - 617.0 - 17318.369140625 - - - 5.953000068664551 - - - - - - - 47.62796594761312 - -117.21242892555892 - - 617.0 - 17324.380859375 - - - 6.0980000495910645 - - - - - - - 47.62795697897673 - -117.21250796690583 - - 617.0 - 17330.41015625 - - - 5.8520002365112305 - - - - - - - 47.62794893234968 - -117.21257393248379 - - 617.0 - 17335.44921875 - - - 5.13700008392334 - - - - - - - 47.62794599868357 - -117.21264492720366 - - 617.0 - 17340.7890625 - - - 5.2829999923706055 - - - - - - - 47.62794499285519 - -117.21274299547076 - - 617.0 - 17348.16015625 - - - 7.501999855041504 - - - - - - - 47.62794893234968 - -117.21284693107009 - - 617.0 - 17355.990234375 - - - 7.631000041961671 - - - - - - - 47.627978939563036 - -117.21289495937526 - - 617.0 - 17360.900390625 - - - 5.033999919891357 - - - - - - - 47.62802596203983 - -117.21290795132518 - - 617.0 - 17366.220703125 - - - 5.202000141143799 - - - - - - - 47.628073990345 - -117.2129069454968 - - 617.0 - 17371.55078125 - - - 5.519000053405761 - - - - - - - 47.628127969801426 - -117.2129019163549 - - 617.0 - 17377.5703125 - - - 5.822999954223633 - - - - - - - 47.62817893177271 - -117.2128879185766 - - 617.0 - 17383.33984375 - - - 6.0960001945495605 - - - - - - - 47.628232995048165 - -117.21287299878895 - - 617.0 - 17389.44921875 - - - 5.9019999504089355 - - - - - - - 47.62828798033297 - -117.21286193467677 - - 617.0 - 17395.619140625 - - - 6.183000087738037 - - - - - - - 47.628341959789395 - -117.21284994855523 - - 617.0 - 17401.689453125 - - - 5.894000053405762 - - - - - - - 47.62839795090258 - -117.21284198574722 - - 617.0 - 17407.939453125 - - - 6.434999942779541 - - - - - - - 47.62845494784415 - -117.2128429915756 - - 617.0 - 17414.279296875 - - - 6.294000148773193 - - - - - - - 47.628513956442475 - -117.21284097991884 - - 617.0 - 17420.83984375 - - - 6.736999988555908 - - - - - - - 47.628575982525945 - -117.21283695660532 - - 617.0 - 17427.740234375 - - - 6.7779998779296875 - - - - - - - 47.628639936447144 - -117.21282597631216 - - 617.0 - 17434.91015625 - - - 7.214000225067139 - - - - - - - 47.62869995087385 - -117.21281298436224 - - 617.0 - 17441.650390625 - - - 6.488999843597412 - - - - - - - 47.62875694781542 - -117.21280795522034 - - 617.0 - 17448.0 - - - 6.633999824523926 - - - - - - - 47.62880899943411 - -117.21280393190682 - - 617.0 - 17453.7890625 - - - 5.583000183105469 - - - - - - - 47.628857949748635 - -117.21279898658395 - - 617.0 - 17459.25 - - - 5.636000156402588 - - - - - - - 47.62890698388219 - -117.21279798075557 - - 617.0 - 17464.69921875 - - - 5.24399995803833 - - - - - - - 47.62895098887384 - -117.21279898658395 - - 617.0 - 17469.58984375 - - - 5.133999824523926 - - - - - - - 47.62899298220873 - -117.21282195299864 - - 617.0 - 17474.5703125 - - - 4.788000106811523 - - - - - - - 47.62903296388686 - -117.21288096159697 - - 617.0 - 17480.849609375 - - - 6.474999904632568 - - - - - - - 47.629050984978676 - -117.21295597963035 - - 617.0 - 17486.830078125 - - - 5.796000003814697 - - - - - - - 47.62905492447317 - -117.21304398961365 - - 617.0 - 17493.4609375 - - - 6.9120001792907715 - - - - - - - 47.62904696166515 - -117.21310894936323 - - 617.0 - 17498.419921875 - - - 4.873000144958496 - - - - - - - 47.62903899885714 - -117.2131989710033 - - 617.0 - 17505.25 - - - 6.682000160217285 - - - - - - - 47.62904495000839 - -117.21329896710813 - - 617.0 - 17512.7890625 - - - 7.4120001792907715 - - - - - - - 47.629051990807056 - -117.21339795738459 - - 617.0 - 17520.26953125 - - - 7.867000102996826 - - - - - - - 47.629053918644786 - -117.21348596736789 - - 617.0 - 17526.890625 - - - 6.2020001411438 - - - - - - - 47.62904193252325 - -117.21356593072414 - - 617.0 - 17533.05078125 - - - 6.695000171661377 - - - - - - - 47.62903195805848 - -117.21364597789943 - - 617.0 - 17539.169921875 - - - 6.006999969482423 - - - - - - - 47.62903698720038 - -117.21372996456921 - - 617.0 - 17545.5 - - - 6.480000019073486 - - - - - - - 47.62904293835163 - -117.21381898038089 - - 617.0 - 17552.220703125 - - - 6.46999979019165 - - - - - - - 47.62904394418001 - -117.21388494595885 - - 617.0 - 17557.189453125 - - - 5.098999977111816 - - - - - - - 47.62905794195831 - -117.21399893984199 - - 617.0 - 17565.890625 - - - 8.463000297546387 - - - - - - - 47.62906791642308 - -117.21410295926034 - - 617.0 - 17573.7890625 - - - 8.130999565124512 - - - - - - - 47.62907596305013 - -117.21418996341527 - - 617.0 - 17580.390625 - - - 6.4070000648498535 - - - - - - - 47.629071939736605 - -117.21424997784197 - - 617.0 - 17584.919921875 - - - 4.629000186920166 - - - - - - - 47.62906992807984 - -117.21433396451175 - - 617.0 - 17591.240234375 - - - 6.230000019073487 - - - - - - - 47.629074957221746 - -117.21441996283829 - - 617.0 - 17597.73046875 - - - 6.626999855041504 - - - - - - - 47.62907898053527 - -117.21451995894313 - - 617.0 - 17605.25 - - - 7.353000164031982 - - - - - - - 47.62907998636365 - -117.21462397836149 - - 617.0 - 17613.0703125 - - - 8.10099983215332 - - - - - - - 47.62908099219203 - -117.21471299417317 - - 617.0 - 17619.759765625 - - - 6.4079999923706055 - - - - - - - 47.62906892225146 - -117.21478692255914 - - 617.0 - 17625.48046875 - - - 5.9029998779296875 - - - - - - - 47.6290119253099 - -117.21487593837082 - - 617.0 - 17634.69921875 - - - 4.589000225067139 - - - - - - - 47.62898996472359 - -117.21491198055446 - - 617.0 - 17638.33984375 - - - 3.7070000171661377 - - - - - - - 47.628965992480516 - -117.21499395556748 - - 617.0 - 17645.060546875 - - - 3.302999973297119 - - - - - - - 47.62895995751023 - -117.21504592336714 - - 617.0 - 17649.01953125 - - - 4.0920000076293945 - - - - - - - 47.6289669983089 - -117.21513099968433 - - 617.0 - 17655.4609375 - - - 3.20799994468689 - - - - - - - 47.62897395528853 - -117.21517994999886 - - 617.0 - 17659.220703125 - - - 3.7980000972747807 - - - - - - - 47.62897496111691 - -117.21525094471872 - - 617.0 - 17664.560546875 - - - 2.6270000934600826 - - - - - - - 47.62898292392492 - -117.21531498245895 - - 617.0 - 17669.44921875 - - - 5.0380001068115225 - - - - - - - 47.62897596694529 - -117.21542394720018 - - 617.0 - 17677.6796875 - - - 4.050000190734863 - - - - - - - 47.62898099608719 - -117.21546594053507 - - 617.0 - 17680.890625 - - - 3.325000047683716 - - - - - - - 47.62902692891657 - -117.21555998548865 - - 617.0 - 17689.609375 - - - 2.8610000610351562 - - - - - - - 47.629053918644786 - -117.21557398326695 - - 617.0 - 17692.7890625 - - - 3.4130001068115234 - - - - - - - 47.629135977476835 - -117.21559192053974 - - 617.0 - 17702.009765625 - - - 2.2720000743865967 - - - - - - - 47.62914394028485 - -117.2156079299748 - - 617.0 - 17703.5 - - - 1.5709999799728394 - - - - - - - 47.62914293445647 - -117.21566995605826 - - 617.0 - 17708.16015625 - - - 2.305000066757202 - - - - - - - 5.572194914995108 - - - - - Unknown - 0 - 1 - - 2 - 0 - 6 - 0 - - - - - - Garmin Connect API - - - 14 - 5 - 0 - 0 - - - en - 006-D2449-00 - - diff --git a/Functions.Tests/copy-photo.NikonD70.IMG_SamplePhoto1.jpg b/Functions.Tests/copy-photo.NikonD70.IMG_SamplePhoto1.jpg deleted file mode 100644 index e06ebd0..0000000 Binary files a/Functions.Tests/copy-photo.NikonD70.IMG_SamplePhoto1.jpg and /dev/null differ diff --git a/Functions/Azure.ps1 b/Functions/Azure.ps1 deleted file mode 100644 index 13e725b..0000000 --- a/Functions/Azure.ps1 +++ /dev/null @@ -1,679 +0,0 @@ -function Ensure-AzureSession { - $Error.Clear(); - $currentErrorAction = $ErrorActionPreference - $ErrorActionPreference = "SilentlyContinue" - Get-AzureRmContext | Out-Null - foreach ($ex in $Error) { - if ($ex.Exception.ToString() -like "*Run Login-AzureRmAccount to login.*") { - Login-AzureRmAccount | Out-Null - } - } - $Error.Clear() - $ErrorActionPreference = $currentErrorAction -} - -Function Setup-AzureConfiguaration { - [CmdletBinding(ConfirmImpact="High")] - param ( - [pscredential]$azureCredentials = (Get-Credential -Message "Enter your azure credentials here.") - ) - - if (!$PSCmdlet.ShouldProcess("Install-AzureConfig", "Confirm to execute", "3")) { - return - } - - # Requires PSGet - Install-Module AzureRM - Install-AzureRM - Install-Module Azure - Import-Module AzureRM - Install-AzureRM - - Write-Warning "Prompts for Azure Credentials" - Add-AzureAccount - - Write-Warning "Prompts to download PublishSettings file" - Get-AzurePublishSettingsFile - Get-ChildItem "$env:USERPROFILE\Downloads\" "*.publishsettings" | - %{ Import-AzurePublishSettingsFile $_.FullName } -} - -Function Initialize-Azure { - [CmdletBinding()] - Param( - [string]$subscriptionName - ) - - "Azure","AzureRM" | % { - $module = Get-Module $_ -ListAvailable - if (!$module) { - Write-Warning "The Azure module is not installed. To install run 'Choco Install WindowsAzurePowershell'" - return - } - Write-Output $module - } | Import-Module - - Set-AzureSubscription -SubscriptionName $subscriptionName -} - -function Configure-AzureRmVmForRemotePS { - # Much of the following script came from this blog post by Marcus Robinson - # http://www.techdiction.com/2016/02/12/powershell-function-to-enable-winrm-over-https-on-an-azure-resource-manager-vm/ - Param ( - [parameter(Mandatory=$true)] - [String] $VMName, - - [parameter(Mandatory=$true)] - [String] $ResourceGroupName, - - [parameter()] - [String] $DNSName = $env:COMPUTERNAME, - - [parameter()] - [String] $SourceAddressPrefix = "*" - ) - - $scriptName = "ConfigureWinRM_HTTPS.ps1" - $extensionName = "EnableWinRM_HTTPS" - $blobContainer = "scripts" - $securityRuleName = "WinRM_HTTPS" - - # define a temporary file in the users TEMP directory - Write-Information -MessageData "Creating script locally that we'll upload to the storage account" -InformationAction Continue - $file = $env:TEMP + "\" + $scriptName - - #Create the file containing the PowerShell - { - # POWERSHELL TO EXECUTE ON REMOTE SERVER BEGINS HERE - param($DNSName) - - # Force all network locations that are Public to Private - Get-NetConnectionProfile | ? { $_.NetworkCategory -eq "Public" } | % { Set-NetConnectionProfile -InterfaceIndex $_.InterfaceIndex -NetworkCategory Private } - - # Ensure PS remoting is enabled, although this is enabled by default for Azure VMs - Enable-PSRemoting -Force - - # Create rule in Windows Firewall, if it's not already there - if ((Get-NetFirewallRule | ? { $_.Name -eq "WinRM HTTPS" }).Count -eq 0) - { - New-NetFirewallRule -Name "WinRM HTTPS" -DisplayName "WinRM HTTPS" -Enabled True -Profile Any -Direction Inbound -Action Allow -LocalPort 5986 -Protocol TCP - } - - # Create Self Signed certificate and store thumbprint, if it doesn't already exist - $thumbprint = (Get-ChildItem -Path Cert:\LocalMachine\My | ? { $_.Subject -eq "CN=$DNSName" } | Select -First 1).Thumbprint - if ($thumbprint -eq $null) - { - $thumbprint = (New-SelfSignedCertificate -DnsName $DNSName -CertStoreLocation Cert:\LocalMachine\My).Thumbprint - } - - # Run WinRM configuration on command line. DNS name set to computer hostname, you may wish to use a FQDN - $cmd = "winrm create winrm/config/Listener?Address=*+Transport=HTTPS @{Hostname=""$DNSName""; CertificateThumbprint=""$thumbprint""}" - cmd.exe /C $cmd - - # POWERSHELL TO EXECUTE ON REMOTE SERVER ENDS HERE - } | out-file -width 1000 $file -force - - - # Get the VM we need to configure - Write-Information -MessageData "Getting information needed to find and update the blob storage with the new script" -InformationAction Continue - $vm = Get-AzureRmVM -ResourceGroupName $ResourceGroupName -Name $VMName - - # Get storage account name - $storageaccountname = $vm.StorageProfile.OsDisk.Vhd.Uri.Split('.')[0].Replace('https://','') - - # get storage account key - $key = (Get-AzureRmStorageAccountKey -Name $storageaccountname -ResourceGroupName $ResourceGroupName).Key1 - - # create storage context - $storagecontext = New-AzureStorageContext -StorageAccountName $storageaccountname -StorageAccountKey $key - - # create a container called scripts - if ((Get-AzureStorageContainer -Context $storagecontext | ? { $_.Name -eq $blobContainer}).Count -eq 0) - { - $ignore1 = New-AzureStorageContainer -Name $blobContainer -Context $storagecontext - } - - #upload the file - $ignore1 = Set-AzureStorageBlobContent -Container $blobContainer -File $file -Blob $scriptName -Context $storagecontext -force - - # Create custom script extension from uploaded file - Write-Information -MessageData "Create and run a script extension from our uploaded script" -InformationAction Continue - $ignore1 = Set-AzureRmVMCustomScriptExtension -ResourceGroupName $ResourceGroupName -VMName $VMName -Name $extensionName -Location $vm.Location -StorageAccountName $storageaccountname -StorageAccountKey $key -FileName $scriptName -ContainerName $blobContainer -RunFile $scriptName -Argument $DNSName - - # Get the name of the first NIC in the VM - Write-Information -MessageData "Create a new security rule that will allow us to connect remotely" -InformationAction Continue - $nic = Get-AzureRmNetworkInterface -ResourceGroupName $ResourceGroupName -Name (Get-AzureRmResource -ResourceId $vm.NetworkInterfaceIDs[0]).ResourceName - - # Get the network security group attached to the NIC - $nsg = Get-AzureRmNetworkSecurityGroup -ResourceGroupName $ResourceGroupName -Name (Get-AzureRmResource -ResourceId $nic.NetworkSecurityGroup.Id).Name - - # Add the new NSG rule, and update the NSG - $nsg | Add-AzureRmNetworkSecurityRuleConfig -Name $securityRuleName -Priority 1100 -Protocol TCP -Access Allow -SourceAddressPrefix $SourceAddressPrefix -SourcePortRange * -DestinationAddressPrefix * -DestinationPortRange 5986 -Direction Inbound | Set-AzureRmNetworkSecurityGroup - - # get the NIC public IP - $ip = Get-AzureRmPublicIpAddress -ResourceGroupName $ResourceGroupName -Name (Get-AzureRmResource -ResourceId $nic.IpConfigurations[0].PublicIpAddress.Id).ResourceName - - Write-Host "To connect to the VM using the IP address while bypassing certificate checks use the following command:" -ForegroundColor Green - Write-Host "Enter-PSSession -ComputerName " $ip.IpAddress " -Credential -UseSSL -SessionOption (New-PsSessionOption -SkipCACheck -SkipCNCheck)" -ForegroundColor Green -} - -function New-AzureRmVirtualMachine { - [CmdletBinding()] - param ( - [Parameter(Mandatory)] - [string]$ResourceGroupName, - - [Parameter(Mandatory)] - [string]$VMName, - - [Parameter(Mandatory)] - [ValidateSet('2012-Datacenter', '2012-R2-Datacenter')] - $ImageSku, - - [string]$StorageAccountName = "", - [string]$VMLocation = "West US", - [string]$StorageAccountType = "Standard_LRS", - [string]$DomainNameLabel = "", - [string]$VirtualNetworkName = "", - [string]$VMSize = "Standard_DS1_v2", - [string]$NetworkSecurityGroup = "", - [PSCredential]$AdminCredentials = (New-Object PSCredential("vmadmin", ("P@ssword1!" | ConvertTo-SecureString -AsPlainText -Force))) - ) - - $ErrorActionPreference = "Stop" - Set-StrictMode -Version Latest - - Ensure-AzureSession - - # Defaults - if ($VirtualNetworkName -eq "") - { - $VirtualNetworkName = $ResourceGroupName - } - - if ($StorageAccountName -eq "") - { - $StorageAccountName = $ResourceGroupName - } - - # Choices - if ($VMSize -eq "choose") { - $selectedSizes = Get-AzureRmVmSize -Location $VMLocation | Out-GridView -OutputMode Single - if ($selectedSizes -eq $null) { - throw 'When $VMSize == choose, you must choose a size to continue.' - } else { - $VMSize = $selectedSizes[0].Name - } - } - - # If the resource group doesn't exist, then create it - $groups = Get-AzureRmResourceGroup | ? { $_.ResourceGroupName -eq $ResourceGroupName } - if ($groups -eq $null) - { - Write-Information -MessageData "Creating new resource group" -InformationAction Continue - $ignore1 = New-AzureRmResourceGroup -Name $ResourceGroupName -Location $VMLocation - } - - # If the storage account doesn't exist, then create it - $accounts = Get-AzureRmStorageAccount | ? { $_.StorageAccountName -eq $StorageAccountName } - if ($accounts -eq $null) - { - Write-Information -MessageData "Creating new storage account" -InformationAction Continue - $ignore1 = New-AzureRmStorageAccount -Name $StorageAccountName -ResourceGroupName $ResourceGroupName Type $StorageAccountType -Location $VMLocation - } - - # If the virtual network doesn't exist, then create it - $vns = Get-AzureRmVirtualNetwork | ? { $_.Name -eq $VirtualNetworkName } - if ($vns -eq $null) - { - Write-Information -MessageData "Creating new virtual network" -InformationAction Continue - $defaultSubnet = New-AzureRmVirtualNetworkSubnetConfig -Name "defaultSubnet" -AddressPrefix "10.0.2.0/24" - $ignore1 = New-AzureRmVirtualNetwork -Name $VirtualNetworkName -ResourceGroupName $ResourceGroupName -Location $VMLocation -AddressPrefix "10.0.0.0/16" -Subnet $defaultSubnet - } - - # If a domain name label is supplied, then test that it isn't in use - if ($DomainNameLabel -ne "") - { - $domainOk = Test-AzureRmDnsAvailability -DomainQualifiedName $DomainNameLabel -Location $VMLocation - if ($domainOk -eq $false) - { - $message = "DomainNameLabel ($DomainNameLabel) failed when tested for uniqueness." - Write-Information -MessageData $message -InformationAction Continue - return @{ - Success = $false - Message = $message - } - } - } - - # Create, if needed, the network security group and add a default RDP rule - $nsg = $null - $securityGroupName = @{$true = $ResourceGroupName; $false = $NetworkSecurityGroup}[$NetworkSecurityGroup -eq ''] - if ($NetworkSecurityGroup -ne "") - { - $nsg = Get-AzureRmNetworkSecurityGroup -ResourceGroupName $ResourceGroupName | ? { $_.Name -eq $securityGroupName } - } - if ($nsg -eq $null) - { - Write-Information -MessageData "Creating security group and rule" -InformationAction Continue - $nsg = New-AzureRMNetworkSecurityGroup -ResourceGroupName $ResourceGroupName -Name $securityGroupName -Location $VMLocation - $nsg | Add-AzureRmNetworkSecurityRuleConfig -Name 'Allow_RDP' -Priority 1000 -Protocol TCP -Access Allow -SourceAddressPrefix * -SourcePortRange * -DestinationAddressPrefix * -DestinationPortRange 3389 -Direction Inbound | Set-AzureRmNetworkSecurityGroup | Out-Null - } - - # Create the public IP and NIC - $vnet = Get-AzureRmVirtualNetwork -Name $VirtualNetworkName -ResourceGroupName $ResourceGroupName - $ticks = (Get-Date).Ticks.ToString() - $ticks = $ticks.Substring($ticks.Length - 5, 5) - $nicName = "$ResourceGroupName$ticks" - if ($DomainNameLabel -ne "") - { - Write-Information -MessageData "Creating new public IP address with domain name" -InformationAction Continue - $pip = New-AzureRmPublicIpAddress -Name $nicName -ResourceGroupName $ResourceGroupName -DomainNameLabel $DomainNameLabel -Location $VMLocation -AllocationMethod Dynamic - } - else - { - Write-Information -MessageData "Creating new public IP address WITHOUT domain name" -InformationAction Continue - $pip = New-AzureRmPublicIpAddress -Name $nicName -ResourceGroupName $ResourceGroupName -Location $VMLocation -AllocationMethod Dynamic - } - Write-Information -MessageData "Creating new network interface" -InformationAction Continue - $nic = New-AzureRmNetworkInterface -Name $nicName -ResourceGroupName $ResourceGroupName -Location $VMLocation -PublicIpAddressId $pip.Id -SubnetId $vnet.Subnets[0].Id -NetworkSecurityGroupId $nsg.Id - - # Create the VM configuration - Write-Information -MessageData "Creating VM configuration" -InformationAction Continue - $vm = New-AzureRmVMConfig -VMName $VMName -VMSize $VMSize - - # Add additional info to the configuration - $vm = Set-AzureRmVMOperatingSystem -VM $vm -Windows -ComputerName $VMName -Credential $AdminCredentials -ProvisionVMAgent -EnableAutoUpdate - $vm = Set-AzureRmVMSourceImage -VM $vm -PublisherName "MicrosoftWindowsServer" -Offer "WindowsServer" -Skus $ImageSku -Version "latest" - $vm = Add-AzureRmVMNetworkInterface -VM $vm -Id $nic.Id - - # Create the disk - $diskName = "$($VMName)OSDisk" - $storage = Get-AzureRmStorageAccount -ResourceGroupName $ResourceGroupName -Name $StorageAccountName - $osDisk = $storage.PrimaryEndpoints.Blob.ToString() + "vhds/" + $diskName + ".vhd" - $vm = Set-AzureRmVMOSDisk -VM $vm -Name $diskName -VhdUri $osDisk -CreateOption fromImage - - # And finally create the VM itself - Write-Information -MessageData "Creating the VM ... this will take some time ..." -InformationAction Continue - New-AzureRmVM -ResourceGroupName $ResourceGroupName -Location $VMLocation -VM $vm - - return @{ - Success = $true - Message = "VM created successfully" - } -} - -Function New-AzureVM { - [CmdletBinding()] - Param( - [Parameter(Mandatory)] - [string]$imageName, - [Parameter(Mandatory)] - [string] $newName, - [PSCredential] $credential, - [string] $instanceSize = "Small", - [string] $location = "West US" - #[OSImageContext] $image - ) - - $vmConfig = New-AzureVMConfig -Name $newName -InstanceSize $instanceSize -Image $imageName | - Add-AzureProvisioningConfig -Windows -AdminUserName $credential.UserName -Password (Get-CredentialPassword $credential) | - . Azure\New-AzureVM -ServiceName $newName -Location $location -} - - -Function Enter-AzurePSSEssion { -<# - .SYNOPSIS - Enter into a Remote PowerShell session runnning on Azure VM. -#> - [CmdletBinding()]Param( - #The specific virtual machine from which the certificate should be imported. - [Parameter(Mandatory,ValueFromPipeline,ParameterSetName="InputObject")] - [Microsoft.WindowsAzure.Commands.ServiceManagement.Model.PersistentVMRoleContext]$inputObject, - [Parameter(Mandatory,ValueFromPipeline)][string]$dnsName, - $credential = (Get-Credential) - #TODO: Add a parameter set that takes a session - ) - - switch ($PsCmdlet.ParameterSetName) - { - "InputObject" { $dnsName = $inputObject.Name; break} - } - - - if($dnsName -notlike "*.cloudapp.net") { - $dnsName = "$dnsName.cloudapp.net" - } - - try { - $pssession = New-AzurePSSEssion $dnsName $credential - Enter-PSSession -session $pssession - return $pssession - - } - #TODO Catch not working!!! - catch <#[System.Management.Automation.Remoting.PSRemotingTransportException]#> { - switch -Wildcard ($_.Message) { - "*The WinRM client cannot process the request because the server name cannot be resolved.*" { - Throw "Either the virtual machine is off or the port, '5986', is incorret." - } - } - } -} - - -Function New-AzurePSSession { - [CmdletBinding()]Param( - [Parameter(Mandatory,ValueFromPipeline)][string]$dnsName, - $credential = (Get-Credential) - ) - - if($dnsName -notlike "*.cloudapp.net") { - $dnsName = "$dnsName.cloudapp.net" - } - - try { - $pssession = New-PSSession -ComputerName $dnsName -Port 5986 -Credential $credential -UseSSL - return $pssession - } - #TODO Catch not working!!! - catch <#[System.Management.Automation.Remoting.PSRemotingTransportException]#> { - switch -Wildcard ($_.Message) { - "*The WinRM client cannot process the request because the server name cannot be resolved.*" { - Throw "Either the virtual machine is off or the port, '5986', is incorret." - } - } - } -} - -Function Reset-AzureVMCredentials { - [CmdletBinding()] Param ( - [string]$serverURL, - [PSCredential]$newCredential - ) - - $password = Get-CredentialPassword($newCredential) - - get-azurevm $serverURL | Set-AzureVMAccessExtension -UserName $newCredential.UserName -Password $password |Update-AzureVM -} - -Function Import-AzureVMCertificate { -<# - .SYNOPSIS - Import the Azure Virtual Machine Certificate -#> - [CmdletBinding()]Param( - #The specific virtual machine from which the certificate should be imported. - [Parameter(Mandatory,ValueFromPipeline,ParameterSetName="InputObject")][Microsoft.WindowsAzure.Commands.ServiceManagement.Model.PersistentVMRoleContext]$inputObject, - #Cloud Service name/DNS name for your VM (without the .cloudapp.net part) - [Parameter(Mandatory,ParameterSetName="ServiceName")][string]$serviceName - ) - - switch ($PsCmdlet.ParameterSetName) - { - "InputObject" { $azureVM = $inputObject; break} - "ServiceName" { $azureVM = Get-AzureVM -ServiceName $serviceName; break} - } - - try{ - $tempFile = [IO.Path]::GetTempFileName() - (Get-AzureCertificate -ServiceName $azureVM.ServiceName -Thumbprint $azureVM.VM.DefaultWinRmCertificateThumbprint -ThumbprintAlgorithm SHA1).Data | - Out-File $tempFile - - $X509Object = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2 $tempFile - $X509Store = New-Object System.Security.Cryptography.X509Certificates.X509Store "Root", "LocalMachine" - - try { - $X509Store.Open([System.Security.Cryptography.X509Certificates.OpenFlags]::ReadWrite) - $X509Store.Add($X509Object) - } - finally { - $X509Store.Close() - } - } - finally { - Remove-Item $tempFile - } -} - - -#TODO: Move to somewhere more general -Function Get-CredentialPassword{ - [CmdletBinding()] param ( - [Parameter(Mandatory,ValueFromPipeline)][PSCredential]$credential - ) - - $BSTR = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($credential.Password) - $password = [System.Runtime.InteropServices.Marshal]::PtrToStringAuto($BSTR) - return $password; -} - - - -Return - -Function Register-AzurePublishSettings { - #Incomplete - [CmdletBinding()]Param( - [string]$publishSettingsFilePath = (Join-Path $env:ALLUSERSPROFILE "Azure.publishsettings") - ) - if(!$publishSettingsFilePath) { - Get-AzurePublishSettingsFile - $publishSettingsFilePath = Read-Host -Prompt "Enter the path to the downloaded publishSettings file:" - } - Import-AzurePublishSettingsFile $publishSettingsFilePath - Set-AzureService - Write-Warning "More stuff needed in order to support 'Get-AzureCertificate'" - # See see http://michaelwasham.com/windows-azure-powershell-reference-guide/getting-started-with-windows-azure-powershell/ -} - -Function Get-AzureStarted { - #see http://blogs.technet.com/b/heyscriptingguy/archive/2013/06/22/weekend-scripter-getting-started-with-windows-azure-and-powershell.aspx - Add-AzureAccount -} - -Funcation Deploy-ServiceFabbricApps { - [CmdletBinding()] - Param( - [string[]]$projects - ) - -} -Connect-ServiceFabricCluster vestafabric.westus.cloudapp.azure.com:19000; - -$projects = $("Services.PropertyListing", "Services.ContactManagement", "Services.NeighborhoodDna", "App.Mobile", "App.Web"); - -foreach ($project in $projects) { - cd "..\Dev\Vesta\$project.ServiceFabric\"; - - .\Scripts\Deploy-FabricApplication.ps1 ` - -ApplicationPackagePath .\pkg\Release ` - -PublishProfileFile .\PublishProfiles\Cloud.xml ` - -DeployOnly:$false ` - -UnregisterUnusedApplicationVersionsAfterUpgrade $false ` - -ForceUpgrade $false ` - -OverwriteBehavior 'Always' ` - -ErrorAction Stop ` - -UseExistingClusterConnection:$true; - - cd ..\..\..\Tools; -} - - -Function Write-AzureVMSnapshop { -# Set variable values -$resourceGroupName = "WindTalkerVMs" -$location = "West US" -$vmName = "WindTalker1" -$vmSize = "Standard_D1_V2" -$vnetName = "WindTalkerVMs" -$nicName = "windtalker155" -$dnsName = "windtalker1" -$diskName = "WindTalker12016124135052" -$storageAccount = "windtalkervms" -$storageAccountKey = "BJsrdNm+q10r0WK0E95SF+whF0zXzGKoa4nGT7UfkvoBFJ7qxSxnATUvkgp1VL+LdEAMifhmlhYDxyXjOq68eQ==" -$subscriptionName = "Visual Studio Enterprise with MSDN" -$publicIpName = "WindTalker1" - -$diskBlob = "$diskName.vhd" -$backupDiskBlob = "$diskName-backup.vhd" -$vhdUri = "https://$storageAccount.blob.core.windows.net/vhds/$diskBlob" -$subnetIndex = 0 - -# login to Azure -Add-AzureRmAccount -Set-AzureRMContext -SubscriptionName $subscriptionName - -# create backup disk if it doesn't exist -# Stop-AzureRmVM -ResourceGroupName $resourceGroupName -Name $vmName -Force -Verbose - -$ctx = New-AzureStorageContext -StorageAccountName $storageAccount -StorageAccountKey $storageAccountKey -$blobCount = Get-AzureStorageBlob -Container vhds -Context $ctx | where { $_.Name -eq $backupDiskBlob } | Measure | % { $_.Count } - -if ($blobCount -eq 0) -{ - $copy = Start-AzureStorageBlobCopy -SrcBlob $diskBlob -SrcContainer "vhds" -DestBlob $backupDiskBlob -DestContainer "vhds" -Context $ctx -Verbose - $status = $copy | Get-AzureStorageBlobCopyState - $status - - While($status.Status -eq "Pending"){ - $status = $copy | Get-AzureStorageBlobCopyState - Start-Sleep 10 - $status - } -} - -# delete VM -Remove-AzureRmVM -ResourceGroupName $resourceGroupName -Name $vmName -Force -Verbose -Remove-AzureStorageBlob -Blob $diskBlob -Container "vhds" -Context $ctx -Verbose -Remove-AzureRmNetworkInterface -Name $nicName -ResourceGroupName $resourceGroupName -Force -Verbose -Remove-AzureRmPublicIpAddress -Name $publicIpName -ResourceGroupName $resourceGroupName -Force -Verbose - -# copy backup disk -$copy = Start-AzureStorageBlobCopy -SrcBlob $backupDiskBlob -SrcContainer "vhds" -DestBlob $diskBlob -DestContainer "vhds" -Context $ctx -Verbose -$status = $copy | Get-AzureStorageBlobCopyState -$status - -While($status.Status -eq "Pending"){ - $status = $copy | Get-AzureStorageBlobCopyState - Start-Sleep 10 - $status -} - -# recreate VM -$vnet = Get-AzureRmVirtualNetwork -Name $vnetName -ResourceGroupName $resourceGroupName - -$pip = New-AzureRmPublicIpAddress -Name $publicIpName -ResourceGroupName $resourceGroupName -DomainNameLabel $dnsName -Location $location -AllocationMethod Dynamic -Verbose -$nic = New-AzureRmNetworkInterface -Name $nicName -ResourceGroupName $resourceGroupName -Location $location -SubnetId $vnet.Subnets[$subnetIndex].Id -PublicIpAddressId $pip.Id -Verbose -$vm = New-AzureRmVMConfig -VMName $vmName -VMSize $vmSize -$vm = Add-AzureRmVMNetworkInterface -VM $vm -Id $nic.Id -$vm = Set-AzureRmVMOSDisk -VM $vm -Name $diskName -VhdUri $vhdUri -CreateOption attach -Windows - -New-AzureRmVM -ResourceGroupName $resourceGroupName -Location $location -VM $vm -Verbose - -} - - -Function Copy-AzureVMBlob { -# https://azure.microsoft.com/en-us/blog/migrate-azure-virtual-machines-between-storage-accounts/ -function Copy-AzureVMBlob{ - param( - [Parameter(Mandatory=$true)] - [string] $destinationStorageAccountName, - [Parameter(Mandatory=$true)] - [string] $destinationKey, - [Parameter(Mandatory=$true)] - [string] $destinationContainerName, - [string] $blobName = "windvmtim1-os-2016-02-22-7339A30E.vhd" - ) - - $servicename = "windvm08" - $vmname = "windvm08" - Get-AzureVM -ServiceName $servicename -Name $vmname | Stop-AzureVM - - # Source Storage Account Information # - $sourceStorageAccountName = "windtalkerstorage" - $sourceKey = "ZYtqb0Gazjd3steBjNvTF0oM1T/iYYwJ0UaK7RpQa0QsX2xNGTHcKwqFhfFj9jiIYIhZw/8ETV5FNpg5Djl+Sw==" - $sourceContext = New-AzureStorageContext StorageAccountName $sourceStorageAccountName -StorageAccountKey $sourceKey - $sourceContainer = "vhds" - - # Destination Storage Account Information # - - $destinationContext = New-AzureStorageContext StorageAccountName $destinationStorageAccountName -StorageAccountKey $destinationKey - - # Create the destination container # - New-AzureStorageContainer -Name $destinationContainerName -Context $destinationContext - - # Copy the blob # - $blobCopy = Start-AzureStorageBlobCopy -DestContainer $destinationContainerName ` - -DestContext $destinationContext ` - -SrcBlob $blobName ` - -Context $sourceContext ` - -SrcContainer $sourceContainer -} - -function Create-DiskFromVhd{ - param( - [Parameter(Mandatory=$true)] - [string] $diskName = "myMigratedTestVM", - [string] $os = "Windows", - [Parameter(Mandatory=$true)] - [string] $mediaLocation - - ) - Add-AzureDisk -DiskName $diskName ` - -OS $os ` - -MediaLocation $mediaLocation ` - -Verbose -} - -Function Restore-AzureVMSnapshot { -param([string]$SourceConnectionString = "Data Source=tcp:ordinotest.database.windows.net,1433; Initial Catalog=OrdinoTest; User ID=OrdinoTest@OrdinoTest;Password=1qaz@WSX;Trusted_Connection=False;Encrypt=True;Connection Timeout=30; MultipleActiveResultSets=False;", - [string]$DestConnectionString = "Data Source=(Localdb)\ProjectsV12;Initial Catalog=OrdinoDev;Integrated Security=True;Connection Timeout=300;MultipleActiveResultSets=False", - [string]$SourceDatabaseName = "OrdinoTest", - [string]$DestDatabaseName = "OrdinoDev", - [string]$SourceOutputFile = "C:\Temp\Hagadon\backup.bacpac", - [string]$SqlInstallationFolder = "C:\Program Files (x86)\Microsoft SQL Server") - -# Load DAC assembly. -$DacAssembly = "$SqlInstallationFolder\120\DAC\bin\Microsoft.SqlServer.Dac.dll" -Write-Host "Loading Dac Assembly: $DacAssembly" -Add-Type -Path $DacAssembly -Write-Host "Dac Assembly loaded." - -# Initialize Dac service. -$now = $(Get-Date).ToString("HH:mm:ss") -$Services = new-object Microsoft.SqlServer.Dac.DacServices $SourceConnectionString -if ($Services -eq $null) -{ - exit -} - -# Start the actual export. -Write-Host "Starting backup at $SourceDatabaseName at $now" -$Watch = New-Object System.Diagnostics.StopWatch -$Watch.Start() -$Services.ExportBacpac($SourceOutputFile, $SourceDatabaseName) -$Watch.Stop() -Write-Host "Backup completed in" $Watch.Elapsed.ToString() - -# Initialize Dac service. -$now = $(Get-Date).ToString("HH:mm:ss") -$Services = new-object Microsoft.SqlServer.Dac.DacServices $DestConnectionString -if ($Services -eq $null) -{ - exit -} - -# Start the actual restore. -Write-Host "Starting restore to $DestDatabaseName at $now" -$Watch = New-Object System.Diagnostics.StopWatch -$Watch.Start() -$Package = [Microsoft.SqlServer.Dac.BacPackage]::Load($SourceOutputFile) -$Services.ImportBacpac($Package, $DestDatabaseName) -$Package.Dispose() -$Watch.Stop() -Write-Host "Restore completed in" $Watch.Elapsed.ToString() -} -} \ No newline at end of file diff --git a/Functions/Clear-Temp.ps1 b/Functions/Clear-Temp.ps1 deleted file mode 100644 index d42c14a..0000000 --- a/Functions/Clear-Temp.ps1 +++ /dev/null @@ -1,125 +0,0 @@ - -$here = $PSScriptRoot - - -# Sort by the date on the object that is the newest. -#get-childitem -directory | %{ ($_.LastAccessTime.ToUniversalTime(),$_.lastwritetime.ToUniversalTime(),$_.CreationTimeUtc | sort-object )[0] } | sort -Descending -$TimeProperties = Get-ChildItem | Get-Member | ?{ ($_.Name -match ".*Time(?!Utc).*") -and ($_.MemberType -eq "Property") } | Select-Object -ExpandProperty Name -Unique - - -Function Script:Get-LastUsefulDateDebugMessage { - [CmdletBinding()] - param($item, $result) - $item = $_ - $message = "{0,-30}" -f "$($_.Name):" - $TimeProperties | %{ - if($item."$_" -eq $result) { $message += "{0,25}" -f ("$($item."$_")*") } - else {$message += "{0,25}" -f ("$($item."$_")") } - } - return $message -} - - -Function Get-ItemLastUsefulDate { - [CmdletBinding(DefaultParameterSetName='Items')] - param ( - [ValidateScript({ Test-Path $_ })] - [Parameter(ParameterSetName='Items', Position=0, ValueFromPipeline=$true, ValueFromPipelineByPropertyName=$true)] - [Alias('FullName')] - [string[]] - ${Path}, - - [Parameter(ParameterSetName='LiteralItems', Mandatory=$true, ValueFromPipelineByPropertyName=$true)] - [Alias('PSPath')] - [string[]] - $LiteralPath - -# ,[ValidateScript({ Test-Path $_.FullName })] -# [Parameter(ParameterSetName='FileSystemInfo', Mandatory=$true, Position, ValueFromPipeline=$true, ValueFromPipelineByPropertyName=$true)] -# [System.IO.FileInfo[]] -# $FileInfo - ) - BEGIN { - } - PROCESS { - $items = Get-Item @PSBoundParameters - $items | %{ - $item = $_ - if(Test-Path -LiteralPath $item -PathType Container) { - $childrenLastUsefulDate = Get-ChildItem -LiteralPath $item | %{ - #TODO: How do you get Get-ItemLastUsefulDate to take $_ rather than $_.FullName? - Get-ItemLastUsefulDate -LiteralPath $_.FullName } | Sort-Object -Descending | select-object -first 1 - $result = $childrenLastUsefulDate,$item.LastAccessTime,$item.LastWriteTime,$item.CreationTime | sort-object -Descending | Select-Object -first 1 - $item | %{ - Write-Debug (Get-LastUsefulDateDebugMessage $_ $result) - } - - return $result - } - else { - $result = $item.LastAccessTime,$item.LastWriteTime,$item.CreationTime | sort-object -Descending | Select-Object -first 1 - $item | %{ - Write-Debug (Get-LastUsefulDateDebugMessage $_ $result) - } - return $result - } - } - } -} - -Function Clear-Temp { - [CmdletBinding(SupportsShouldProcess=$true, DefaultParameterSetName='Path')] - param ( - [ValidateScript({ Test-Path $_ })] - [Parameter(ParameterSetName='Path', Position=0, ValueFromPipeline=$true, ValueFromPipelineByPropertyName=$true)] - [Alias("FullName")] - [string[]] - $Path = $env:TEMP, - - [Parameter(ParameterSetName='LiteralPath', Mandatory=$true, ValueFromPipelineByPropertyName=$true)] - [Alias('PSPath')] - [string[]] - $LiteralPath, - - [Parameter(Position=1)] - [int]$MonthsOld = 12 - ) - - PROCESS { - if(($Path -eq $env:TEMP) -and #the default value - (Test-Path env:Data) -and (Test-Path ($dataTemp = Join-Path $env:Data "Temp"))) { - $items = $path,$dataTemp | %{ Get-item -literalpath $_ } # Add $dataTemp to be cleared as well. - } - else { - $parameters = $null; - switch($PSCmdlet.ParameterSetName) { - "LiteralPath" {$parameters = @{ LiteralPath = $LiteralPath }} - "Path" { $parameters = @{ Path = $Path} } - } - $items = Get-Item @parameters - } - $pathsProcessingCounter = 1 - - $items | %{ - $item = $_ - $itemsProcessedCount = 0; - $items = Get-ChildItem -literalPath $item; - $items| %{ - Write-Progress -Activity "Clear-Temp" -PercentComplete ($itemsProcessedCount++/$items.Count) ` - -Status "Phase $pathsProcessingCounter/$($path.Count): Checking date/time usage for '$($_.FullName)'" - $itemLastUsefulDate = (Get-ItemLastUsefulDate -literalPath $_.FullName) # Use literal path to handle scenarios where there are square brackets in the name. - if($itemLastUsefulDate -lt [DateTime]::Now.AddMonths(-$MonthsOld)) { - Write-Verbose "$($_.FullName) was last used on $itemLastUsefulDate" - if($PSCmdlet.ShouldProcess("'$($_.FullName)' (dated $itemLastUsefulDate)", - "Move to Recycle Bin")) { - Write-Progress -Activity "Clear-Temp" -PercentComplete ($itemsProcessedCount++/$items.Count) ` - -Status "Phase $pathsProcessingCounter/$($path.Count): Moving '$($_.FullName)' to RecycleBin" - Remove-FileToRecycleBin -literalPath $_.FullName - } - } - } - $itemsProcessedCount=0 - $pathsProcessingCounter++ - } - } -} \ No newline at end of file diff --git a/Functions/Computer.ps1 b/Functions/Computer.ps1 deleted file mode 100644 index 0da352b..0000000 --- a/Functions/Computer.ps1 +++ /dev/null @@ -1,22 +0,0 @@ - -function Invoke-ComputerHybernate { - shutdown.exe /h -} -Set-Alias HybernateComputer Invoke-ComputerHybernate - - -function Invoke-ComputerShutdown { - shutdown.exe /s /t 0 -} -Set-Alias ShutdownComputer Invoke-ComputerShutdown - - -function Invoke-ComputerRestart { - shutdown.exe /r /t 0 -} -Set-Alias RestartComputer Invoke-ComputerRestart - -function Invoke-ComputerSleep { - psshutdown.exe -d -t 0 -} -Set-Alias SleepComputer Invoke-ComputerSleep \ No newline at end of file diff --git a/Functions/ConvertFrom-LabelColonValue.ps1 b/Functions/ConvertFrom-LabelColonValue.ps1 deleted file mode 100644 index afd9e9f..0000000 --- a/Functions/ConvertFrom-LabelColonValue.ps1 +++ /dev/null @@ -1,13 +0,0 @@ - - -Function ConvertFrom-LabelColonValue([string]$labelColonValue) { - $result = @{} - - $labelColonValue -split "`n" | %{ - $label,$value=($_ -split ": ", 2, "Singleline") - $result[$label.Trim()]=$value - } - - return $result - -} \ No newline at end of file diff --git a/Functions/Device.ps1 b/Functions/Device.ps1 deleted file mode 100644 index a938b1b..0000000 --- a/Functions/Device.ps1 +++ /dev/null @@ -1,11 +0,0 @@ - - - - - -Function Get-Device { - Get-WmiObject Win32_USBControllerDevice |%{[wmi]($_.Dependent)} | - Sort Manufacturer,Description,DeviceID | - Ft -GroupBy Manufacturer Description,Service,DeviceID - #Get-WmiObject -query "select * from Win32_SerialPort" -} \ No newline at end of file diff --git a/Functions/Disable-IEEnhancedSecurity.ps1 b/Functions/Disable-IEEnhancedSecurity.ps1 deleted file mode 100644 index 6fb2457..0000000 --- a/Functions/Disable-IEEnhancedSecurity.ps1 +++ /dev/null @@ -1,12 +0,0 @@ -#See http://blog.blksthl.com/2012/11/28/how-to-disable-ie-enhanced-security-in-windows-server-2012/#PS -#ToDo - this should probably be moved to a Setup module -Function Disable-IEESC -{ - $AdminKey = HKLM:\SOFTWARE\Microsoft\Active Setup\Installed Components\{A509B1A7-37EF-4b3f-8CFC-4F3A74704073} - $UserKey = HKLM:\SOFTWARE\Microsoft\Active Setup\Installed Components\{A509B1A8-37EF-4b3f-8CFC-4F3A74704073} - Set-ItemProperty -Path $AdminKey -Name IsInstalled -Value 0 - Set-ItemProperty -Path $UserKey -Name IsInstalled -Value 0 - #This shoudl probably stop for confirm. - Stop-Process -Name Explorer - Write-Host IE Enhanced Security Configuration (ESC) has been disabled. -ForegroundColor Green -} diff --git a/Functions/DotNetCore.ps1 b/Functions/DotNetCore.ps1 deleted file mode 100644 index 7b71a04..0000000 --- a/Functions/DotNetCore.ps1 +++ /dev/null @@ -1,24 +0,0 @@ -Function Set-DotNetSdkVersion { - [CmdletBinding()] - param( - [string]$version, - [string]$folder = $pwd - ) - - if(Test-Path "global.json") { - $globalJsonPath = (Resolve-Path 'global.json').Path - $globalJsonContent = Get-Content $globalJsonPath -raw | ConvertFrom-Json - } - else { - $globalJsonPath = Join-Path $pwd 'global.json' - New-Item -ItemType File $globalJsonPath - $globalJsonContent = "{ - `"sdk`": { - `"version`": `"2.0.0`" - } - }" | ConvertFrom-Json - } - - $globalJsonContent.sdk | % {$_.version=$version} - $globalJsonContent | ConvertTo-Json | Set-Content $globalJsonPath -} \ No newline at end of file diff --git a/Functions/File_ISE.ps1 b/Functions/File_ISE.ps1 deleted file mode 100644 index 307a22e..0000000 --- a/Functions/File_ISE.ps1 +++ /dev/null @@ -1,35 +0,0 @@ -If(!(Test-Path variable:\psise)) { Return; } - -. $PSScriptRoot\Program.ps1 - -Function Close-File ([Parameter(ValueFromPipeline=$true,Mandatory)][ValidateNotNull()][string] $fileName) { - PROCESS { - $ISEFileToRemove = $psISE.CurrentPowerShellTab.Files | ?{$_.FullPath -eq (Resolve-Path $fileName)} - $psISE.CurrentPowerShellTab.Files.Remove( $ISEFileToRemove ); - } -} -Set-Alias Close Close-File -Scope Global - -Function Open-File([Parameter(ValueFromPipeline=$true,Mandatory)][ValidateNotNull()][string[]]$path) { -PROCESS { - foreach($item in $path) { - #Support wildcards - $files = Get-Item $item - foreach($file in $files) { - try { - $extension = [IO.Path]::GetExtension($file) - $fileType = Get-FileAssociation $extension -ErrorAction Ignore; - } - catch [System.Management.Automation.RuntimeException] { <# Ignore #> } - if( $fileType -and ($fileType.FileType -match "Microsoft\.PowerShell.*|txtfile|batfile") -or ($extension -in ".tmp",".nuspec") -or ($fileType -eq $null <# extension unknown #>) ) { - #ISE $file; - Start-Process (get-command powershell_ise.exe).Path -ArgumentList "-File `"$file`"" -Wait #Use start to ensure it is synchronous for testing purposes. - } - else { - & $file - } - } - } -}} -Set-Alias Open Open-File -Scope Global - \ No newline at end of file diff --git a/Functions/GeoTrack.ps1 b/Functions/GeoTrack.ps1 deleted file mode 100644 index b72c417..0000000 --- a/Functions/GeoTrack.ps1 +++ /dev/null @@ -1,99 +0,0 @@ - -function script:Test-CommandExists { - param ($command) - - $oldPreference = $ErrorActionPreference - - $ErrorActionPreference = 'stop' - - try { - if(Get-Command $command){ - return $true - } - } - - catch { - Write-Host "'$command' does not exist" - return $false - } - - finally { - $ErrorActionPreference=$oldPreference - } - -} #end function test-CommandExists - -Function script:Add-GPSBabelCommandAlias { - [CmdletBinding()] param( - ) - - if(!(script:Test-CommandExists 'GPSBabel')) { - # Note: Error handling for Get-Command does not work. - # See https://blogs.technet.microsoft.com/heyscriptingguy/2013/02/19/use-a-powershell-function-to-see-if-a-command-exists/) - - $gpsBabelPath = "${ProgramFiles(x86)}\GPSBabel\GPSBabel.exe" - if(Test-Path $gpsBabelPath) { - Set-Alias -Name GPSBabel -Value $gpsBabelPath - } - elseif( ($PSVersionTable.PSVersion.Magor -ge 5) -and - (Get-Package gpsbabel -ErrorAction Ignore -OutVariable GpsBabelPackage) -and - (Test-Path (Join-Path $gpsbabelpackage.Metadata["InstallLocation"] "GpsBabel.exe")) - ) { - $gpsbabelpath = Join-Path $gpsbabelpackage.Metadata["InstallLocation"] "GpsBabel.exe" - Set-Alias -Name GPSBabel -Value $gpsBabelPath - } - else { - Throw "GPSBabel.exe is not installed or not in your path. Please install GPSBabel before running this command." - } - } -} - - -Function GpsBabel { - [CmdletBinding()] - - $gpsBabelPath = "${ProgramFiles(x86)}\GPSBabel\GPSBabel.exe" - if(!(Test-Path $gpsBabelPath)) { - if( ($PSVersionTable.PSVersion.Magor -ge 5) -and - (Get-Package gpsbabel -ErrorAction Ignore -OutVariable GpsBabelPackage) -and - (Test-Path (Join-Path $gpsbabelpackage.Metadata["InstallLocation"] "GpsBabel.exe")) - ) { - $gpsbabelpath = Join-Path $gpsbabelpackage.Metadata["InstallLocation"] "GpsBabel.exe" - } - if(!(Test-Path $gpsBabelPath)) { - Throw "GPSBabel.exe is not installed or not in your path. Please install GPSBabel before running this command." - } - - if($args.Count -eq 0) { - '`n' | & $gpsBabelPath | Select-Object -SkipLast 1 - } - } -} -Add-GPSBabelCommandAlias - -<# - .SYNOPSIS - Converts a GPS track from one type to another. - - .EXAMPLE - Invoke-ComUsing ($application = $sr.Start-MicrosoftWord) { - $application.Visible = $false - } - - This command instantiates the Word Application, sets it to invisible, and then removes all COM references. -#> -Function Convert-GeoTrack { - [CmdletBinding(SupportsShouldProcess=$true)]param ( - [ValidateScript({ (Test-Path $_ -PathType Leaf) -and ([IO.Path]::GetExtension($_) -in ,".kml")})] # Limited to extensions that have been tested. - [Parameter(Mandatory, ValueFromPipeLine, ValueFromPipelineByPropertyName)][Alias("FullName","InputObject")][string]$inputFile, - [ValidateScript({ ([IO.Path]::GetExtension($_) -in ,".gpx")})] # Limited to extensions that have been tested. - [string]$outputFile = [IO.Path]::ChangeExtension($inputFile.FullName, ".gpx") - ) - - [string] $inputFileExtension = [IO.Path]::GetExtension($inputFile).Trim(".") - [string] $outputFileExtension = [IO.Path]::GetExtension($outputFile).Trim(".") - $command = "gpsbabel -i $inputFileExtension -f $inputFile -o $outputFileExtension -F $outputFile" - if ($PSCmdlet.ShouldProcess("`tExecuting: $command", "`tExecute gpsbabel.exe: $command", "Executing gpsbabel.exe")) { - Invoke-Expression $command - } -} diff --git a/Functions/Get-PSToDo.ps1 b/Functions/Get-PSToDo.ps1 deleted file mode 100644 index f3218d3..0000000 --- a/Functions/Get-PSToDo.ps1 +++ /dev/null @@ -1,3 +0,0 @@ -Function Get-ToDoItems () { - dir *.ps1 -Recurse | get-content | ?{ $_ -match "TODO:" } | %{$_.Trim() } -} \ No newline at end of file diff --git a/Functions/Get-TfInfo.ps1 b/Functions/Get-TfInfo.ps1 deleted file mode 100644 index 2ee9d7f..0000000 --- a/Functions/Get-TfInfo.ps1 +++ /dev/null @@ -1,15 +0,0 @@ -. (Join-Path $PSScriptRoot "ConvertFrom-LabelColonValue.ps1") - -Function Get-TfInfo([string] $path) { - [string] $output = Get-ChildItem $path 2> $null | %{tf info $_.FullName } - If($output -like "tf : TF*") { - If($output -match "No items match*") { - Write-Verbose $output - Throw "Cannot find item in TFS" - } else { - - } - } - $result = ConvertFrom-LabelColonValue $output; - return $result -} \ No newline at end of file diff --git a/Functions/Get-WindowsSpecialFolders.ps1 b/Functions/Get-WindowsSpecialFolders.ps1 deleted file mode 100644 index 0e128fc..0000000 --- a/Functions/Get-WindowsSpecialFolders.ps1 +++ /dev/null @@ -1,5 +0,0 @@ -Function Get-WindowsSpecialFolders([string] $filter="*") { - [System.Enum]::GetValues([System.Environment+SpecialFolder]) | ?{ $_ -like $filter } | %{ - [PSCustomObject] @{ Name=($_.ToString().Trim()); Path=([Environment]::GetFolderPath($_)) } - } -} \ No newline at end of file diff --git a/Functions/HostsFileEntry.ps1 b/Functions/HostsFileEntry.ps1 deleted file mode 100644 index 075d705..0000000 --- a/Functions/HostsFileEntry.ps1 +++ /dev/null @@ -1,150 +0,0 @@ - -Function Get-HostsFilePath() { - return "$ENV:WinDir\System32\Drivers\etc\HOSTS" -} - -Add-Type -Language CSharp -TypeDefinition @" - namespace IntelliTect.Net - { - public class HostsFileEntry - { - public HostsFileEntry(System.Net.IPAddress ipAddress, string dnsName, string comment = null, bool isCommentedOut=false) - { - IPAddress = ipAddress; - DnsName = dnsName; - Comment = comment; - IsCommentedOut = isCommentedOut; - } - public System.Net.IPAddress IPAddress {get; private set;} - public string DnsName {get; private set;} - public string Comment {get; private set;} - public bool IsCommentedOut {get; private set;} - public override string ToString () { return string.Format("{0}({1})", DnsName, IPAddress); } - } - } -"@ - -#ToDo: Verify and Publish: Mandatory on [string] parameter checks for null or empty string. - -Function New-HostsFileEntry { - [CmdletBinding()] - param( - [Parameter(ValueFromPipeline=$true)][string] $line, - [switch] $IncludedCommentedOutEntries - ) - if(![string]::IsNullOrWhiteSpace($line)) { - $IPAddress,$DnsName = $line.Split(); - if(![string]::IsNullOrWhiteSpace($DnsName) ) { - $DnsName,$Comment = $DnsName.Split("#") | ?{ ![string]::IsNullOrWhiteSpace($_) } | %{ $_.Trim() } - } - [bool] $IsCommentedOut = $IPAddress.StartsWith("#"); - $IPAddress = $IPAddress.TrimStart("#"); #This line is commented out. - $isValid = $false; - if( ($IPAddress -match - "^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$") -AND - ($DnsName -match - "^(?=.{1,255}$)[0-9A-Za-z](?:(?:[0-9A-Za-z]|-){0,61}[0-9A-Za-z])?(?:\.[0-9A-Za-z](?:(?:[0-9A-Za-z]|-){0,61}[0-9A-Za-z])?)*\.?$") ) { - $isValid = $true; - } - if($isValid -AND (!$IsCommentedOut -OR $IncludedCommentedOutEntries)) { - return New-Object IntelliTect.Net.HostsFileEntry($IPAddress,$DnsName,$Comment,$IsCommentedOut) - } - } -} - -Function Get-HostsFileEntry { - [CmdletBinding()] - param( - [string] $Entry, - [switch] $IncludedCommentedOutEntries - ) - Get-Content (Get-HostsFilePath) | ?{ $_ -like "*$Entry*" } | %{ - New-HostsFileEntry $_ -IncludedCommentedOutEntries:$IncludedCommentedOutEntries - } | ?{ $_ -ne $null } -} - -Function Add-HostsFileEntry { -[CmdletBinding( - SupportsShouldProcess=$true #Tells the shell that your function supports both -confirm and -whatif. - ,ConfirmImpact="Medium" #Causes Confirm prompt when $ConfirmPreference is "High" -)] -param -( - [Parameter(Mandatory, Position = 0)][string]$IPAddress, - [Parameter(Mandatory, Position = 1)][string]$DnsName, - [Parameter(Position = 2)][switch]$Force=$false, - [Parameter(Position = 3)][switch]$PassThru=$false -) - - [IntelliTect.Net.HostsFileEntry]$currentHostEntries = Get-HostsFileEntry $DnsName - - If(!$currentHostEntries) { - if($pscmdlet.ShouldProcess("Append $DnsName with IP Address $IPAddress to HOSTS file ($(Get-HostsFilePath))") ) { - Add-Content -Path (Get-HostsFilePath) -Value "$IPAddress`t`t$DnsName" - if($PassThru) { - Write-Output (Get-HostsFileEntry $DnsName) - } - } - } - else { - $currentHostEntries | %{ - #TODO Write Tests and implementation. - if( ($_.IsCommentedOut -and $_.IPAddress -eq $IPAddress) ) { - Write-Verbose "Uncommenting existing entry" - throw "Not yet implmented." #TODO: Implement uncomment - } - # TODO: Verify the entry value is the same. - if($_.IPAddress -eq $IPAddress) { - Write-Verbose ("Hosts entry for '{0}' as '{1}' already exists." -f $_.IPAddress, $_.$DnsName) - } - else { - if($force) { - throw "Not yet implmented." #TODO: Update entry - } - else { - Write-Error ("Hosts file entry '{0}' already exists. Use -Force to override." -f $DnsName) - } - } - } - } -} - -Function Remove-HostsFileEntry { -[CmdletBinding( - SupportsShouldProcess=$true #Tells the shell that your function supports both -confirm and -whatif. - ,ConfirmImpact="Medium" #Causes Confirm prompt when $ConfirmPreference is "High" -)] -param -( - [Parameter(Position = 0)][string]$IPAddress, - [Parameter(Position = 1)][string]$DnsName -) - if([string]::IsNullOrWhiteSpace($IPAddress) -and [string]::IsNullOrWhiteSpace($DnsName)) { - throw "Either or both `$IPAddress or `$DnsName are required."; - } - - $tempFile = [IO.Path]::GetTempFileName(); - - [bool]$itemRemoved = $false; - Get-Content (Get-HostsFilePath) | ?{ - $entryFound = $false; - Write-Verbose $_; - $entry = New-HostsFileEntry $_; - if($entry) { - $ipAddressFound = $IPAddress -eq $entry.IPAddress - $dnsNameFound = $DnsName -eq $entry.DnsName; - #The item if is found if both IPAddress and DnsName are specified and found or exclusively one (or the other) is specified and found. - $entryFound = (![string]::IsNullOrWhiteSpace($IPAddress) -and $ipAddressFound -and ![string]::IsNullOrWhiteSpace($DnsName) -and $dnsNameFound) -or - ([string]::IsNullOrWhiteSpace($IPAddress) -and $dnsNameFound ) -or - ([string]::IsNullOrWhiteSpace($DnsName) -and $ipAddressFound); - } - $entryFound = $entry -and $entryFound -and - $pscmdlet.ShouldProcess("Remove $_.DnsName with IP Address $_.IPAddress from HOSTS file ('$hostFilePath')"); - $itemRemoved = $itemRemoved -or $entryFound; # Save an indicator that an item was removed. - return !$entryFound; - } | Set-Content $tempFile; - - if($itemRemoved) { - Move-Item $tempFile (Get-HostsFilePath) -force - } -} \ No newline at end of file diff --git a/Functions/Import-VisualStudioVars.ps1 b/Functions/Import-VisualStudioVars.ps1 deleted file mode 100644 index 342c59d..0000000 --- a/Functions/Import-VisualStudioVars.ps1 +++ /dev/null @@ -1,76 +0,0 @@ - -#ToDo: Submit this back to the PSCX code base. -Function Import-VisualStudioVars { - [CmdletBinding( - SupportsShouldProcess=$true #Tells the shell that your function supports both -confirm and -whatif. - ,ConfirmImpact="High" #Causes Confirm prompt when $ConfirmPreference is "High" - )] - param - ( - [Parameter(Position = 0)][string]$VisualStudioVersion, - [Parameter(Position = 1)][string]$Architecture = $(if ($Pscx:Is64BitProcess) {'amd64'} else {'x86'}) - ) - - End - { - switch -Regex ($VisualStudioVersion) - { - '2008' { - Import-VisualStudioVarsFromScript "2008" "${Env:VS90COMNTOOLS}" $Architecture - } - - '2010' { - Import-VisualStudioVarsFromScript "2010" "${Env:VS100COMNTOOLS}" $Architecture - } - - '2012' { - Import-VisualStudioVarsFromScript "2012" "${Env:VS110COMNTOOLS}" $Architecture - } - - '2013' { - Import-VisualStudioVarsFromScript "2013" "${Env:VS120COMNTOOLS}" $Architecture - } - '2015' { - Import-VisualStudioVarsFromScript "2015" "${Env:VS140COMNTOOLS}" $Architecture - } - '2017' { - $batchPath = Resolve-Path "${Env:ProgramFiles(x86)}\Microsoft Visual Studio\2017\*\Common7\tools\vsdevcmd.bat" - if(!(Test-Path $batchPath)) { - throw "Unable to find Visuals Studio Developer Command batch file" - } - Invoke-BatchFile $batchPath - } - default { - if(Test-Path "${Env:ProgramFiles(x86)}\Microsoft Visual Studio\2017") { - Import-VisualStudioVars 2017 - } - else { - $vscomntools = Get-Item "env:vs*comntools" - If($vscomntools) { - Push-EnvironmentBlock -Description "Before importing lastest VS $Architecture environment variables" - Invoke-BatchFile "$((Get-Item "env:vs*comntools" | Sort-Object value | Select-Object -last 1).Value)..\..\VC\vcvarsall.bat" $Architecture - } - else { - Throw "Visual Studio Install was not detected." - } - } - } - } - } -} - -Function script:Import-VisualStudioVarsFromScript([string] $version, [string]$commonToolsPath, [string] $architecture) { - If([string]::IsNullOrEmpty($commonToolsPath) -eq $false -and (Test-Path $commonToolsPath)) { - [string]$batchPath = "$commonToolsPath..\..\VC\vcvarsall.bat" - If(Test-Path $batchPath) { - Push-EnvironmentBlock -Description "Before importing VS $version $architecture environment variables" - Invoke-BatchFile $batchPath $architecture - } - Else { - Throw "$batchPath not found" - } - } - Else { - Throw "Visual Studio $version is not installed or the expected environment variable is not found." - } -} \ No newline at end of file diff --git a/Functions/Invoke-ActionWhenFilechanges.ps1 b/Functions/Invoke-ActionWhenFilechanges.ps1 deleted file mode 100644 index 1a7bf49..0000000 --- a/Functions/Invoke-ActionWhenFilechanges.ps1 +++ /dev/null @@ -1,19 +0,0 @@ -#TODO: Add escape (Cancel) from while (likely using CancellationTokenSource). -#TODO: Document that return value is a PSEventJob -Function Invoke-ActionWhenFileChanges { - [CmdletBinding()] - param( - [string]$path = (Get-Location), - [ScriptBlock] $script, - [switch]$ignoreSubdirectories - ) - - $watcher = New-Object System.IO.FileSystemWatcher - $watcher.Path = Split-Path $path -Parent - $watcher.Filter = Split-Path $path -Leaf - $watcher.IncludeSubdirectories = !$ignoreSubdirectories - $watcher.EnableRaisingEvents = $true - - Register-ObjectEvent -InputObject $watcher -EventName "Changed" -Action $script -} - diff --git a/Functions/Member.ps1 b/Functions/Member.ps1 deleted file mode 100644 index 317300e..0000000 --- a/Functions/Member.ps1 +++ /dev/null @@ -1,109 +0,0 @@ -# See http://www.tellingmachine.com/post/Test-Member-The-Missing-PowerShell-Cmdlet.aspx -# TODO: Consider $_.PSObject.Properties.Match("DisplayName") as it may be faster -function Test-Member() -{ -<# -.Synopsis - Verifies whether a specific property or method member exists for a given .NET object -.Description - Verifies whether a specific property or method member exists for a given .NET object -.Example - Test-Member -PropertyName "Context" -InputObject (new-object System.Collections.ArrayList) -.Example - new-object "System.Collections.ArrayList" | Test-Member -PropertyName "ToArray" -.Parameter PropertyName - Name of a Property to test for -.Parameter MethodName - Name of a Method to test for -.ReturnValue - $True or $False -.Link - about_functions_advanced - about_functions_advanced_methods - about_functions_advanced_parameters -.Notes -NAME: Test-Member -AUTHOR: Klaus Graefensteiner -LASTEDIT: 04/20/2010 12:12:42 -#Requires -Version 2.0 -#> - - [CmdletBinding(DefaultParameterSetName="Properties")] - PARAM( - - [ValidateNotNull()] - [Parameter(Position=0, Mandatory=$True, ValueFromPipeline=$True)] - $InputObject, - - [ValidateNotNullOrEmpty()] - [Parameter(Position=1, Mandatory=$True, ValueFromPipeline=$False, ParameterSetName="Properties")] - [string] $PropertyName, - - [ValidateNotNullOrEmpty()] - [Parameter(Position=1, Mandatory=$True, ValueFromPipeline=$False, ParameterSetName="Methods")] - [string] $MethodName - ) - Process{ - - switch ($PsCmdlet.ParameterSetName) - { - "Properties" - { - $Members = Get-Member -InputObject $InputObject; - if ($Members -ne $null -and $Members.count -gt 0) - { - foreach($Member in $Members) - { - if(($Member.MemberType -like "*Property" ) -and ($Member.Name -eq $PropertyName)) - { - return $true - } - } - return $false - } - else - { - return $false; - } - } - "Methods" - { - $Members = Get-Member -InputObject $InputObject; - if ($Members -ne $null -and $Members.count -gt 0) - { - foreach($Member in $Members) - { - if(($Member.MemberType -eq "Method" ) -and ($Member.Name -eq $MethodName)) - { - return $true - } - } - return $false - } - else - { - return $false; - } - } - } - - }# End Process -} - - -Function ConvertTo-Xml([string] $XMLString, [String] $XPath, [int] $Status ) { - $XMLResult = [XML] $XMLString; - - if($XMLResult -ne $null) - { - if($Status -eq 200) - { - $XPathSingle = $XPath.substring(0, $XPath.Length -1) - return $XMLResult.$XPath.$XPathSingle; - } - else - { - return $XMLResult.Error; - } - } -} \ No newline at end of file diff --git a/Functions/MicrosoftWindows.ps1 b/Functions/MicrosoftWindows.ps1 deleted file mode 100644 index ad571dd..0000000 --- a/Functions/MicrosoftWindows.ps1 +++ /dev/null @@ -1,78 +0,0 @@ - - -Function Get-WindowsVersionName { - $os = $null - try { - #Consider using Get-Command with -ErrorAction of Ignore - $os = Get-CimInstance "Win32_OperatingSystem" #Not supported prior to Windows 8 - } - catch { - $os = Get-WmiObject Win32_OperatingSystem - } - - #See http://gallery.technet.microsoft.com/scriptcenter/6e1b6724-3674-4487-b544-2706bfe0b0b5/view/Discussions#content - switch -Wildcard ("$($os.Version + "-" + $os.ProductType)") - { - "5.1.2600-*" { $result = "Windows XP"; } #Untested - "5.1.3790-*" { $result = "Windows Server 2003"; } #Untested - "6.0.6001-1" { $result = "Windows Vista"; } #Untested - "6.1.7601-1" { $result = "Windows 7"; } - "6.1.7601-3" { $result = "Windows Server 2008 R2"; } - "6.2.9200-1" { $result = "Windows 8"; } - "6.2.9200-3" { $result = "Windows Server 2012"; } - "6.3.9600-1" { $result = "Windows 8.1" } - default { throw "Windows Version not Identified" } - } - return $result -} - -<# -Function Add-DirectoryToWindowsSearch { - [CmdletBinding(SupportsShouldProcess)] - param( - [ValidateScript({Test-Path $_})][Parameter(Mandatory)][string[]]$path - ) - $path | ForEach-Object{ - $item = (Resolve-Path $_).Path.Replace('\','\\') - #Add C:\Data to windows Search: - -#See http://dk.toastednet.org/iex_lh/Text/vista_search_guide.html - -$regFile = (Join-Path $env:temp 'WindowsSearch.reg') -try { - Write-Output @" - Windows Registry Editor Version 5.00 - - - [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Search\Gather\Windows\SystemIndex\StartPages\$NextEntry] - "URL"="$item" - "HostDepth"=dword:00000000 - "EnumerationDepth"=dword:ffffffff - "FollowDirectories"=dword:00000001 - "StartPageIdentifier"=dword:$NextEntry - "CrawlNumberInProgress"=dword:0000000c - "CrawlNumberScheduled"=dword:ffffffff - "ForceFullCrawl"=dword:00000000 - "ForceFullCrawlExternal"=dword:00000000 - "LastCrawlStopped"=dword:00000000 - "Type"=dword:00000000 - "CrawlControl"=dword:00000000 - "LastCrawlType"=dword:00000000 - "IncludeInProjectCrawls"=dword:00000001 - "LastCrawlTime"=hex:00,00,00,00,00,00,00,00 - "LastStartCrawlTime"=hex:2b,0e,75,2f,8d,46,cf,01 - "AccessControl"=hex:99,ca,ba,de,03,00,00,00,02,00,00,00,00,00,00,00,00,00,00,\ - 00,07,00,00,00,01,00,00,00,00,00,00,00,00,00,00,00,07,00,00,00,00,00,00,00,\ - 00,00,00,00,00,00,00,00,07,00,00,00,02,00,00,00 - "NotificationHRes"=dword:00000000 -"@ ` - > $regFile - Write-Verbose "Created $regFile" - Reg.exe Import WindowsSearch.reg - } - finally { - Get-Item $regFile -ErrorAction Ignore | Remove-Item -Force - } - } -} -#> diff --git a/Functions/New-CommentHelp.ps1 b/Functions/New-CommentHelp.ps1 deleted file mode 100644 index 823053c..0000000 --- a/Functions/New-CommentHelp.ps1 +++ /dev/null @@ -1,241 +0,0 @@ -#requires -version 2.0 - -# ----------------------------------------------------------------------------- -# Script: New-CommentHelp.ps1 -# Version: 1.0 -# Author: Jeffery Hicks -# http://jdhitsolutions.com/blog -# http://twitter.com/JeffHicks -# Date: 3/28/2011 -# Keywords: ISE, Help, Read-Host -# Comments: -# -# "Those who forget to script are doomed to repeat their work." -# -# **************************************************************** -# * DO NOT USE IN A PRODUCTION ENVIRONMENT UNTIL YOU HAVE TESTED * -# * THOROUGHLY IN A LAB ENVIRONMENT. USE AT YOUR OWN RISK. IF * -# * YOU DO NOT UNDERSTAND WHAT THIS SCRIPT DOES OR HOW IT WORKS, * -# * DO NOT USE IT OUTSIDE OF A SECURE, TEST SETTING. * -# **************************************************************** -# ----------------------------------------------------------------------------- - -Function New-CommentHelp { - -Param() - -#define beginning of comment based string - -$comment=@" -<# -.SYNOPSIS -{0} -.DESCRIPTION -{1} - -"@ - -#prompt for command name (default to script name) -$name=Read-Host "What is the name of your function or command?" - -#prompt for synopsis -$Synopsis=Read-Host "Enter a synopsis" -#prompt for description -$description=Read-Host "Enter a description. You can expand and edit later" - -#Create comment based help string -$help=$comment -f $synopsis,$description - -#test if command is loaded and if so get parameters -#ignore common: -$common="VERBOSE|DEBUG|ERRORACTION|WARNINGACTION|ERRORVARIABLE|WARNINGVARIABLE|OUTVARIABLE|OUTBUFFER" -Try -{ - $command=get-command -Name $name -ErrorAction Stop - $params=$command.parameters.keys | where {$_ -notmatch $common} -} -Catch -{ - #otherwise prompt - $scriptname=Read-Host "If your command is a script file, enter the full file name with extension. Otherwise leave blank" - if ($scriptname) - { - Try - { - $command=get-command -Name $scriptname -ErrorAction Stop - $params=$command.parameters.keys | where {$_ -notmatch $common} - } - Catch - { - Write-Warning "Failed to find $scriptname" - Return - } - - } #if $scriptname - else - { - #prompt for a comma separated list of parameter names - $EnterParams=Read-Host "Enter a comma separated list of parameter names" - $Params=$EnterParams.Split(",") - } -} - -#get parameters from help or prompt for comma separated list - Foreach ($param in $params) { - #prompt for a description for each parameter - $paramDesc=Read-host "Enter a short description for parameter $($Param.ToUpper())" - #define a new line -#this must be left justified to avoid a parsing error -$paramHelp=@" -.PARAMETER $Param -$paramDesc - -"@ - - - #append the parameter to the help comment - $help+=$paramHelp - } #foreach - -Do -{ - #prompt for an example command - $example=Read-Host "Enter an example command. You do not need to include a prompt. Leave blank to continue" - if ($example) - { - - #prompt for an example description - $exampleDesc=Read-Host "Enter a brief description of this example" - -#this must be left justified to avoid a parsing error -$exHelp=@" -.EXAMPLE -PS C:\> $example -$exampleDesc - -"@ - - #add the example to the help comment - $help+=$exHelp - } #if $example - -} While ($example) - - -#Prompt for version # -$version=Read-Host "Enter a version number" - -#Prompt for date -$resp=Read-Host "Enter a last updated date or press Enter for the current date." -if ($resp) -{ - $verDate=$resp -} -else -{ - #use current date - $verDate=(Get-Date).ToShortDateString() -} - -#construct a Notes section -$NoteHere=@" -.NOTES -NAME : {0} -VERSION : {1} -LAST UPDATED: {2} -AUTHOR : {3}\{4} - -"@ - -#insert the values -$Notes=$NoteHere -f $Name,$version,$verDate,$env:userdomain,$env:username - -#add the section to help -$help+=$Notes - -#prompt for URL Link -$url=Read-Host "Enter a URL link. This is optional" -if ($url) -{ -$urlLink=@" -.LINK -$url - -"@ - -#add the section to help -$help+=$urlLink -} - -#prompt for comma separated list of links -$links=Read-Host "Enter a comma separated list of Link references or leave blank for none" -if ($links) -{ -#define a here string -$linkHelp=@" -.LINK - -"@ - -#add each link -Foreach ($link in $links.Split(",")) { - #insert the link and a new line return - $linkHelp+="$link `n" -} -#add the section to help -$help+=$linkHelp - -} - -#Inputs -$inputHelp=@" -.INPUTS -{0} - -"@ - -$Inputs=Read-Host "Enter a description for any inputs. Leave blank for NONE." -if ($inputs) -{ - #insert the input value and append to the help comment - $help+=($inputHelp -f $inputs) -} -else -{ - #use None as the value and insert into the help comment - $help+=($inputHelp -f "None") -} - -#outputs -$outputHelp=@" -.OUTPUTS -{0} - -"@ -$Outputs=Read-Host "Enter a description for any outputs. Leave blank for NONE." -if ($Outputs) -{ - #insert the output value and append to the help comment - $help+=($outputHelp -f $Outputs) -} -else -{ - #use None as the value and insert into the help comment - $help+=($outputHelp -f "None") -} - -#close the help comment -$help+="#>" - -#if ISE insert into current file -if ($psise) -{ - $psise.CurrentFile.Editor.InsertText($help) | Out-Null -} -else -{ - #else write to the pipeline - $help -} - -} #end function \ No newline at end of file diff --git a/Functions/New-NugetPackage.ps1 b/Functions/New-NugetPackage.ps1 deleted file mode 100644 index ceec87a..0000000 --- a/Functions/New-NugetPackage.ps1 +++ /dev/null @@ -1,78 +0,0 @@ - -#TODO: Rename this and the tests file to not include the verb. - -function FolderExcludeCopy([string]$sourceDir, [string]$destDir, [string[]]$excludeFilters, [string]$excludeDirs, [bool]$deleteExistedDestDir=$true) { - if ($deleteExistedDestDir -and (Test-Path $destDir)) { - Write-Host "clean destination folder $destdir" -ForegroundColor Cyan - Remove-Item $destDir -Recurse -Force - } - Get-ChildItem $sourceDir -Recurse -Exclude $excludeFilters | ? {$_.FullName -inotMatch $excludeDirs } | Copy-Item -Force -Destination {Join-Path $destDir $_.FullName.Substring($sourceDir.length)} -} - - -Function New-NugetPackage( - [string] $inputDirectory=(Get-Location).Path, - [string] $outputDirectory=(Join-Path (Get-Location).Path "bin"), - [string] $tempDirectory=([IO.Path]::GetTempPath()) ) { - - #TODO: Handle if 0 or more than 1 file is returned - [string]$nuspecFile = (Get-ChildItem $inputDirectory "*.nuspec")[0].FullName - - [XML]$nuspecXML = [XML] (Get-content $nuspecFile) - - $tempDirectory = Join-Path $tempDirectory NewNugetPackage - $tempDirectory = Join-Path $tempDirectory ($nuspecXML.package.metadata.id + "(" + $nuspecXML.package.metadata.version + ")") - $tempDirectory = Join-Path $tempDirectory "Tools" - - If(!(Test-Path $tempDirectory)) { - New-Item $tempDirectory -ItemType Directory | Write-Debug - } - If(!(Test-Path $outputDirectory)) { - New-Item $outputDirectory -ItemType Directory | Write-Debug - } - $outputDirectory = Resolve-Path $outputDirectory - - #TODO Replace Robocopy with Raw Powershell commands - # Copy/upadate (copy if newer or missing) files in the $PSScriptRoot directory into $PSScriptRoot\bin\Tools - # What wasn't working: - # Remove-Item (Join-Path $PSScriptRoot "\..\Tools") -Recurse - # Copy-Item $PSScriptRoot $PSScriptRoot\..\Tools -Exclude "Tools" -Recurse -Force - # Move-Item $PSScriptRoot\..\Tools $PSScriptRoot\Tools -WhatIf - #Robocopy $inputDirectory $tempDirectory * /S /XC /MIR /XD bin | Write-Debug - FolderExcludeCopy $inputDirectory $tempDirectory "" "bin" $false - -# if(!(Test-Path $PSScriptRoot\bin)) { -# New-Item "$PSScriptRoot\bin" -ItemType Directory -# } -# If(Test-Path $PSScriptRoot\bin\Tools) { -# Remove-Item $PSScriptRoot\bin\Tools -Recurse -# } -# Copy $PSScriptRoot\..\Tools $PSScriptRoot\bin\Tools -Recurse - - $NugetPath = (Get-ChildItem "$PSScriptRoot\..\packages" nuget.exe -Recurse | Select-Object -Last 1).FullName - #If(!(Get-Command Nuget)) { - # $NugetPath = (Get-ChildItem "$PSScriptRoot\..\packages" nuget.exe -Recurse | Select-Object -Last 1).FullName - # Set-Alias Nuget $NugetPath - #} - - $currentDirectory = Get-Location; - try { - Set-Location $tempDirectory - Invoke-Expression "$NugetPath Pack $nuspecFile -OutputDirectory $outputDirectory" -NoPackageAnalysis | %{ - Write-Debug $_ - if($_ -like "*Successfully created package*") { - Write-Host $_ - $packageName = $_ -replace "Successfully created package ", "" - $packageName = $packageName.Trim(".").Trim("'") - Write-host $packageName - Get-Item $packageName; - } - } - - } - Finally { - Set-Location $currentDirectory; - } - - Remove-Item $tempDirectory -Recurse -} diff --git a/Functions/New-PSCustomObject.ps1 b/Functions/New-PSCustomObject.ps1 deleted file mode 100644 index 4feada8..0000000 --- a/Functions/New-PSCustomObject.ps1 +++ /dev/null @@ -1,29 +0,0 @@ -#see http://blogs.microsoft.co.il/scriptfanatic/2012/04/13/custom-objects-default-display-in-powershell-30/ - -function New-PSCustomObject -{ - [CmdletBinding()] - - param( - [Parameter(Mandatory,Position=0)] - [ValidateNotNullOrEmpty()] - [System.Collections.Hashtable]$Property, - - [Parameter(Position=1)] - [ValidateNotNullOrEmpty()] - [Alias('dp')] - [System.String[]]$DefaultProperties - ) - - - $psco = [PSCustomObject]$Property - - # define a subset of properties - $ddps = New-Object System.Management.Automation.PSPropertySet ` - DefaultDisplayPropertySet,$DefaultProperties - $PSStandardMembers = [System.Management.Automation.PSMemberInfo[]]$ddps - - # Attach default display property set - $psco | Add-Member -MemberType MemberSet -Name PSStandardMembers ` - -Value $PSStandardMembers -PassThru -} \ No newline at end of file diff --git a/Functions/PSScript.ps1 b/Functions/PSScript.ps1 deleted file mode 100644 index e8ac906..0000000 --- a/Functions/PSScript.ps1 +++ /dev/null @@ -1,95 +0,0 @@ - -Function Script:Get-SampleFunction { - [CmdletBinding()][OutputType('System.String[]')] - param( - [ValidateScript({Test-Path $_ -PathType Leaf})] - [Parameter(Mandatory, ValueFromPipeLine, ValueFromPipelineByPropertyName, Position)] - [Alias("FullName","InputObject")] - [string[]]$Path, - - [switch]$ReadOnly = $true - ) - -} - -Function New-PSScriptFile { - [CmdletBinding()] - param( - [Parameter(Mandatory)][string]$FileName - ) - - $path = (Split-Path ($PSCommandPath) -Parent) - - $fileNameWithoutExtension = [IO.Path]::GetFileNameWithoutExtension($FileName) - - $FileName = Join-path $path "$fileNameWithoutExtension.ps1" - $testsFileName = Join-path $path "..\Functions.Tests\$fileNameWithoutExtension.Tests.ps1" - - if(!(Test-Path $fileName)) { - [string]$text = @' -<#Header#> { -Set-StrictMode -Version "Latest" - -[string]$here=$PSScriptRoot; -<#EndHeader#> - -Function Get-SampleFunction { - #FunctionBody# -} -'@ - $functionBody = (Get-Command Get-SampleFunction).Definition.Trim() - $text=$text.Replace("#FunctionBody#",$functionBody) - - $text | Out-File -FilePath $fileName - } - Edit-File $fileName - - if(!(Test-Path $testsfileName)) { - [string]$text = @' -<#Header#> -Set-StrictMode -Version "Latest" -$sut = $PSCommandPath.ToLower().Replace(".tests", "") -. $sut -. Join-Path (Split-Path $sut) "PSScript.ps1" -[string]$here=$PSScriptRoot; -<#EndHeader#> - -Describe "MyFunction" { - It "Verify that the functionality does X" { - $tempFile = [IO.Path]::ChangeExtension([IO.Path]::GetTempFileName(), ".txt") - $notepadProcesses = Get-Process #Only needed when not in ISE - try { - Edit-File $tempFile - $openedFileProcess = Get-Process | ?{ $notepadProcesses.id -notcontains $_.id } - $openedFileProcess.Count | Should Be 1; - $openedFileProcess | Stop-Process - } - finally { - Remove-Item $tempFile; - } - } -} - -'@ - - $text | Out-File -FilePath $testsfileName - } - Edit-File $testsfileName -} - - -Function Get-FunctionMetaData { - [CmdletBinding()][OutputType('System.String[]')] - param( - [Parameter(Mandatory, ValueFromPipeLine, ValueFromPipelineByPropertyName, Position)] - [string[]]$CmdLet - ) -PROCESS { - $CmdLet | %{ - $Metadata = New-Object System.Management.Automation.CommandMetaData (Get-Command $Cmdlet) - $NewMeta = [System.Management.Automation.ProxyCommand]::Create($Metadata) - return $NewMeta - } -} -} - diff --git a/Functions/PSScript_ISE.ps1 b/Functions/PSScript_ISE.ps1 deleted file mode 100644 index d1f6ba0..0000000 --- a/Functions/PSScript_ISE.ps1 +++ /dev/null @@ -1,35 +0,0 @@ -If(!(Test-Path variable:\psise)) { Return; } - -#See http://rnicholson.net/powershell-ise-formating-the-document/ -Function Format-Document -{ - Param([int]$space=4) - $tab = " " * $space - $numtab = 0 - - $text = $psISE.CurrentFile.editor.Text - foreach ($l in $text -split [environment]::newline) - { - $line = $l.Trim() - if ($line.StartsWith("}") -or $line.EndsWith("}")) - { - $numtab -= 1 - } - $tab = " " * (($space) * $numtab) - if($line.StartsWith(".") -or $line.StartsWith("< #") -or $line.StartsWith("#>")) - { - $tab = $tab.Substring(0, $tab.Length - 1) - } - $newText += "{0}{1}" -f (($tab) + $line),[environment]::newline - if ($line.StartsWith("{") -or $line.EndsWith("{")) - { - $numtab += 1 - } - if ($numtab -lt 0) - { - $numtab = 0 - } - } - $psISE.CurrentFile.Editor.Clear() - $psISE.CurrentFile.Editor.InsertText($newText) -} \ No newline at end of file diff --git a/Functions/Photo.ps1 b/Functions/Photo.ps1 deleted file mode 100644 index 2f58e57..0000000 --- a/Functions/Photo.ps1 +++ /dev/null @@ -1,627 +0,0 @@ -<#[CmdletBinding( - SupportsShouldProcess=$true #Tells the shell that your function supports both -confirm and -whatif. - ,ConfirmImpact="Medium" #Causes Confirm prompt when $ConfirmPreference is "High" -)] -param( - [string]$fromDirectory - ,[string] $toRootDirectory="C:\Data\Photos\MarEli" - ,[bool] $move=$true - ,[Parameter(ValueFromPipeline=$true)][IO.FileInfo[]]$files=$(dir $fromDirectory -Recurse -Include *.MTS,*.JPG,*.MOV,*.JPEG,*MP4 ) -) -#> - -Set-StrictMode -Version "Latest" - -# Future Features: - #Add support for png and mp4 files. - # For people tagging check out: - # http://www.dustyfish.com/blog/using-wic-c-to-read-windows-live-photo-gallerys-people-tags - # http://msdn.microsoft.com/en-us/library/ee719905(v=vs.85).aspx - # http://poshcode.org/617 - # http://www.dustyfish.com/blog/understanding-how-windows-live-photo-gallerys-people-tags-are-stored - -[string]$here=Split-Path -Path ($MyInvocation.MyCommand.Path); - -Function script:LoadPhotoLibraryAssembly() -{ - $photoLibraryPath = Get-ChildItem "$PSScriptRoot\..\Lib","$PSScriptRoot" "PhotoLibrary.dll" | - Sort-Object -Descending CreationTime | Select-Object -First 1 -ExpandProperty FullName - if( !(test-path variable:\photoLibraryPath) -AND !(test-path $photoLibraryPath) ) - { - $photoLibraryPath="$utils\PhotoLibrary.dll" - } - if(!(test-path $photoLibraryPath)) { - $photoLibraryPath='C:\data\Programs\Utilities\PhotoLibrary.dll' - } - #TODO: Switch to use Add-Type - [void] [Reflection.Assembly]::LoadFrom($photoLibraryPath) - $rootPath = $PSScriptRoot - $photoLibraryPath = Get-ChildItem "$rootPath\..\Lib","$rootPath" "PhotoLibrary.dll" | - Sort-Object -Descending CreationTime | Select-Object -First 1 -ExpandProperty FullName - - if(!(test-path variable:\photoLibraryPath) -or !(test-path $photoLibraryPath)) { - throw "Unable to find PhotoLibrary.dll" - } - - #TODO: Switch to use Add-Type - Add-Type -Path $photoLibraryPath -ErrorAction Stop -} -LoadPhotoLibraryAssembly - -function script:GetDateTimeOriginal($target) { - [System.Nullable[System.DateTime]] $originalTimeStamp = Get-member DateTimeOriginal -InputObject $target | %{$target.DateTimeOriginal}; - return $originalTimeStamp; -} - -#Admittedly we could just take the parameters as System.Object and call the $originalTimeStamp on them directly but -#the strongly typed approach ensures we can get the more accurate photo metadata when available. -#TODO: This doesn't work if PhotoLibrary.dll is not loaded. Update to make it optional when a JPG file is not used. -function GetSubDirectoryWithDateTimePath( - [Parameter(ParameterSetName="FileInfo",Mandatory)][IO.FileInfo]$file - ,[Parameter(ParameterSetName="Photo",Mandatory)][Photolibrary.Photo]$photo -) -{ - [System.Nullable[System.DateTime]] $originalTimeStamp = $null; - $target=$null; - - if($PSCmdlet.ParameterSetName -eq "Photo") { - $originalTimeStamp=GetDateTimeOriginal $photo; - if($originalTimeStamp -eq $null) { - $file = New-Object IO.FileInfo -ArgumentList $photo.GetFullPath(); - } - } - - if($originalTimeStamp -eq $null) { - $originalTimeStamp=GetDateTimeOriginal $file; - } - - if($originalTimeStamp -eq $null) - { - $originalTimeStamp = $file.CreationTime; - } - - [string] $targetDirectory = join-path $originalTimeStamp.Year.ToString("0000") $originalTimeStamp.Month.ToString("00"); - return [String]$targetDirectory; -} - - -# Temporarily Leaving function as a way of verifying -# new functionality matches the old. -# TODO: Delete this function if the replace -# proves accruate. -Function Script:Get-LegacyTargetName([Photolibrary.Photo]$photo) { - [string] $targetFileName=$photo.GetFileName(); - switch($photo.Model) { - "NIKON D70" { - $targetFileName = $targetFileName.Replace("IMG_", "NikonD70_"); - } - "Canon EOS 30D" { - $targetFileName = $targetFileName.Replace("IMG_", "EOS30D_"); - } - "BlackBerry 9650" { - $targetFileName = $targetFileName.Replace("IMG_", "BB9650_"); - } - "" { - #leave the name the same - } - default { - #Should be changed to a switch statement. - if($photo.Model -eq "Canon IXY DIGITAL 800 IS") - { - $targetFileName = $targetFileName.Replace("IMG_", "800IS_") - } - elseif($photo.Model -eq "Canon EOS 20D") - { - $targetFileName = $targetFileName.Replace("IMG_", "EOS20D_") - } - elseif($photo.Model -eq "SQ908 MEGA-Cam") - { - $targetFileName = $targetFileName.Replace("IMG_", "SQ908_") - } - elseif($photo.Model -eq "Canon PowerShot SD3500 IS") - { - $targetFileName = $targetFileName.Replace("IMG_", "SD3500_") - } - elseif($photo.Model -eq "Canon PowerShot SD780 IS") - { - $targetFileName = $targetFileName.Replace("IMG_", "SD780_") - } - elseif($photo.Model -eq "COOLPIX S4100") - { - $targetFileName = $targetFileName.Replace("DSCN", "NikonS4100_") - } - elseif($photo.Model -eq "Canon PowerShot ELPH 100 HS") - { - $targetFileName = $targetFileName.Replace("IMG_", "Elph100HS_") - } - elseif($photo.Model -eq "Canon EOS REBEL T4i") - { - $targetFileName = $targetFileName.Replace("IMG_", "EOST4i_") - } - elseif($photo.Model -eq "Canon EOS 70D") - { - $targetFileName = $targetFileName.Replace("IMG_", "EOS70D_") - } - elseif($photo.Model -eq "Canon PowerShot A2400 IS") - { - $targetFileName = $targetFileName.Replace("IMG_", "A2400_") - } - elseif($photo.Model -eq "Canon PowerShot G12") - { - $targetFileName = $targetFileName.Replace("IMG_", "PS-G12_") - } - elseif($photo.Model -eq "RHOD500") - { - $targetFileName = "RHOD500_" + $photo.GetFileName() - } - elseif($photo.Model -eq "NIKON D60") - { - $targetFileName = "NIKOND60_" + $photo.GetFileName() - } - elseif($photo.Model -eq "NIKON D3300") - { - $targetFileName = $targetFileName.Replace("DSC_", "NIKOND3300_") - } - elseif($photo.Model -eq "T-Mobile G2") - { - $targetFileName = $targetFileName.Replace("IMG_", "G2_") - } - elseif($photo.Model -eq "Canon PowerShot SD1200 IS") - { - $targetFileName = $targetFileName.Replace("IMG_", "SD1200_") - } - elseif($photo.Model -like "iPhone*") - { - $targetFileName = $photo.Model.Replace(" ", "") + "_" + $targetFileName - } - elseif($photo.Model -eq "HDR-CX160") - { - $targetFileName = "HDR-CX160_" + $photo.GetFileName() - } - elseif($photo.Model -eq "iPod touch") - { - $targetFileName = $targetFileName.Replace("image_", "") - $targetFileName = $targetFileName.Replace("image", "") - $targetFileName = "iPod" + $targetFileName; - } - elseif($photo.Model -eq "GT-I9300") - { - $targetFileName = "GT-I3900_" + $photo.GetFileName() - } - elseif($photo.Model -eq "XT907") - { - $targetFileName = "XT907_" + $photo.GetFileName() - } - elseif($photo.Model -eq "GT-I8190N") - { - $targetFileName = "GT-I8190N_" + $photo.GetFileName() - } - elseif($photo.Model -eq "SM-G935F") - { - $targetFileName = "SM-G935F_" + $photo.GetFileName() - } - elseif($photo.Model -eq "GT-I9500") - { - $targetFileName = "GT-I9500_" + $photo.GetFileName() - } - } - } - return $targetFileName; -} - -function GetFileNameWithCameraTag( - [Parameter( - ValueFromPipeline=$true - )][Photolibrary.Photo]$photo, - [IO.FileInfo]$file) -{ - if($photo -eq $null) { - LoadPhotoLibraryAssembly - - $photo = new-object photolibrary.photo($file.fullname) - } - - $findValues = "IMG_","_MG","DSC","image_","image" - - $replaceLookup = - @{ - "NIKON D70" = "NikonD70_"; - "Canon EOS 30D" = "EOS30D_"; - "Canon EOS 20D" = "EOS20D_"; - "Canon EOS 70D" = "EOS70D_"; - "Canon EOS 5D Mark IV" = "EOS5DMarkIV_"; - "BlackBerry 9650" = "BB9650_"; - "Canon IXY DIGITAL 800 IS" = "800IS_"; - "SQ908 MEGA-Cam" = "SQ908_"; - "Canon PowerShot SD3500 IS" = "SD3500_"; - "Canon PowerShot SD780 IS" = "SD780_"; - "Canon PowerShot SD1200 IS" = "SD1200_"; - "COOLPIX S4100" = "NikonS4100_" - "Canon PowerShot ELPH 100 HS" = "Elph100HS_"; - "Canon EOS REBEL T4i" = "EOST4i_"; - "Canon PowerShot A2400 IS" = "A2400_"; - "Canon PowerShot G12" = "PS-G12_"; - "NIKON D3300"="NIKOND3300_"; - "T-Mobile G2" = "G2_"; - "iPod touch" = "iPod" - } - - $prefixLookup = @{ - "NIKON D60" = "NIKOND60_"; - } - "iPhone","RHOD500","HDR-CX160","GT-I9300","XT907","GT-I8190N","SM-G935F","GT-I9500" | - %{ $prefixLookup.Add($_, "$($_)_") } - - $suffixLookup = @{ - "iPhone" = "iOS" - } - - [string]$targetFileName = $null - if(!($replaceLookup.ContainsKey($photo.Model))) { - throw "Model '$($photo.Model)' is not recognized." - } - $replacement = $replaceLookup[$photo.Model] - Write-Debug "`$replacement = $replacement" - $prefix = $prefixLookup[$photo.Model] - Write-Debug "`$prefix = $prefix" - $suffixFindValue = $suffixLookup[$photo.Model] - Write-Debug "`$suffixFindValue = $suffixFindValue" - - if($replacement) { - [string] $targetFileName=$photo.GetFileName(); - $findValues | %{ - $targetFileName = $targetFileName.Replace($_, $replacement) - } - } - elseif($prefix) { # Currently: replaceLookup & suffixLookup are unique. - $targetFileName = $prefix + $photo.GetFileName() - } - - # We suffix search in addition to the above. - if($suffixFindValue) { - $targetFileName = $targetFileName.Replace( - $suffixFindValue, "") - } - - # TODO: Delete this function if the replace - # proves accruate. - $legacyTargetName = Script:Get-LegacyTargetName($photo) - if($targetFileName -ne $LegacyTargetName) { - throw "New functionality did not match old functionlity: $targetFileName <> $legacyTargetName" - } - - if(!$targetFileName) - { - throw "The file prefix for '" + $photo.Model + "' is missing on photo '" + $photo.GetFileName() + "'." - $targetFileName = "UNKNOWN" + $targetFileName - } - - return $targetFileName; -} - -if(!(Test-Path variable:DefaultPhotoDirectory)) { - $DefaultPhotoDirectory=[environment]::GetFolderPath([environment+specialfolder]::MyPictures) -} - - -Function Copy-Photo { -[CmdletBinding( - SupportsShouldProcess=$true #Tells the shell that your function supports both -confirm and -whatif. - ,ConfirmImpact="Medium" #Causes Confirm prompt when $ConfirmPreference is "High" -)] -param( - [string]$fromDirectory - , <# [ValidateScript({$_ -notin "True","False" })] #> [string] $toRootDirectory=$DefaultPhotoDirectory - # TODO: Check - ,[Parameter(ValueFromPipeline=$true)][ValidateNotNull()][IO.FileInfo[]]$files=@( - Get-ChildItem $fromDirectory -Recurse -Include *.JPG,*.MOV,*.JPEG,*.MTS,*.PDF,*.MP4,*.MP3,*.CR2 ) - ) - - Get-ChildItem -Path $fromDirectory -Recurse -File | - %{ - Move-Item (Join-Path $fromDirectory $_.Name) (Join-Path $fromDirectory (GetFileNameWithCameraTag $photo)) - } - -} - -Function Copy-Photo { -[CmdletBinding( - SupportsShouldProcess=$true #Tells the shell that your function supports both -confirm and -whatif. - ,ConfirmImpact="Medium" #Causes Confirm prompt when $ConfirmPreference is "High" -)] -param( - [string]$fromDirectory - , <# [ValidateScript({$_ -notin "True","False" })] #> [string] $toRootDirectory=$DefaultPhotoDirectory - ,[bool] $move=$true - # TODO: Check - ,[Parameter(ValueFromPipeline=$true)][ValidateNotNull()][IO.FileInfo[]]$files=@( - Get-ChildItem $fromDirectory -Recurse -Include *.JPG,*.MOV,*.JPEG,*.MTS,*.PDF,*.MP4,*.MP3,*.CR2 ) - ) - -BEGIN { - [string]$targetFileName=$null; - [string]$targetDirectoryName=$null; - - #TODO There must be a better way to bind parameters but I am not sure what it is. - if($toRootDirectory -in "True","False") { - #Handle when the second parameter is true or false (which was intended for the third parameter) - $move = $toRootDirectory -eq "True" - $toRootDirectory = "C:\Data\Photos\MarEli" - } -} - -PROCESS { - Write-Progress -Id 42 -Activity "Copy-Photo"; - [int]$totalFileCount = $files.Count - [int]$filesProcessedCount = 0 - foreach($file in $files) { - if($file.Extension -in ".JPG",".JPEG") - { - LoadPhotoLibraryAssembly - - [Photolibrary.Photo]$photo = new-object photolibrary.photo($file.fullname) - - $targetFileName=GetFileNameWithCameraTag $photo - $targetDirectoryName= GetSubDirectoryWithDateTimePath -photo $photo - } - else - { - $targetFileName= $file.Name - $targetDirectoryName= GetSubDirectoryWithDateTimePath -File $file - } - - $targetDirectoryName = Join-Path $toRootDirectory $targetDirectoryName; - - $targetFullName = Join-Path $targetDirectoryName $targetFileName - - - - if(!(test-path $targetDirectoryName) ) - { - #if ($pscmdlet.ShouldProcess($targetDirectoryName)) { - #echo "Create directory:" $targetDirectoryName - New-Item $targetDirectoryName -type directory - #} - } - - - if($move) { - $copyCommand = "Move-Item" - $Status = "Moving "; - } - else { - $copyCommand = "Copy-Item" - $Status = "Copying "; - } - - if( (-not (Test-Path $targetFullName)) -or $PSCmdlet.ShouldContinue("Overwrite $targetFullName`?", "Confirm") ) { - Write-Progress -Id 42 -Activity "Copy-Photo" -Status "$Status $file to $targetFullName" -PercentComplete ($filesProcessedCount++/$totalFileCount) - #ToDo yes-to-all currently doesn't work. - & $copyCommand $file.FullName $targetFullName -ErrorAction SilentlyContinue -ErrorVariable commandError -force:$true - - if($commandError) { - Write-Error "$copyCommand $file.FullName $targetFullName`: $($commandError[0].Exception)"; - $commandError = $null; - } - } - - } - } -} - - -function Write-PhotoInfo -{ - param ([IO.FileInfo] $photoFileInfo) - - $photo=new-object photolibrary.photo($photoFileInfo.FullName) - - Write-Host "`tAdd $numberOfHours hours to $photoFileInfo`: " - Write-Host "`t`t DateOriginal :`t" $photo.DateTimeOriginal -noNewLine - Write-Host "`t`t" $photo.DateTimeOriginal.AddHours($numberOfHours) -foregroundcolor Green - Write-Host "`t`t PhotoDateTime :`t" $photo.DateTime -noNewLine - Write-Host "`t`t" $photo.DateTimeOriginal.AddHours($numberOfHours) -foregroundcolor Green - Write-Host "`t`t DateDigitized :`t" $photo.DateTimeDigitized -noNewLine - Write-Host "`t`t" $photo.DateTimeOriginal.AddHours($numberOfHours) -foregroundcolor Green - Write-Host "`t`t FileCreateTime:`t" $photoFileInfo.CreationTime -noNewLine - Write-Host "`t`t" $photo.DateTimeOriginal.AddHours($numberOfHours) -foregroundcolor Green - - ## LastWriteTime is not set. - Write-Host "`t`t DateModified :`t" $photoFileInfo.LastWriteTime -noNewLine - Write-Host "`t`t" $photoFileInfo.LastWriteTime ## Unchanged -foregroundcolor Green -} - - -function Add-HourToPhoto { - param( - [string] $fromDirectory = $(throw "fromDirectory is required.") - , [string] $filter="*.jpg", [int]$numberOfHours=0 - , [Switch]$verbose, [Switch]$confirm, [Switch]$whatif - ) - - $AllAnswer = $null - $photoLibraryPath = (join-path(Split-Path -Path ($MyInvocation.MyCommand.Path)) "PhotoLibrary.dll") - if(! (test-path $photoLibraryPath) ) - { - $photoLibraryPath="$utils\PhotoLibrary.dll" - } - [void] [Reflection.Assembly]::LoadFrom($photoLibraryPath) - - if($fromDirectory -eq $null) - { - Write-Error fromDirectory - } - if(! (test-path $fromDirectory) ) - { - #Write out an error about the directory - Get-ChildItem $fromDirectory - exit - } - - $photoFileInfos = dir $fromDirectory $filter -recur - - foreach( $photoFileInfo in $photoFileInfos ) - { - $photo=new-object photolibrary.photo($photoFileInfo.FullName) - - [string] $verboseMessage = "`nAdd $numberOfHours hours to $photoFileInfo`: " + - "`n`t FileCreateTime: " + $photoFileInfo.CreationTime + - "`n`t PhotoDateTime: " + $photo.DateTime + - "`n`t DateDigitized: " + $photo.DateTimeDigitized + - "`n`t DateOriginal: " + $photo.DateTimeOriginal + - "`n`t DateModified: " + $photoFileInfo.LastWriteTime - - $shouldProcess = Should-Process AddHours-Photo $photoFileInfo ([REF]$AllAnswer) "" -Verbose:$Verbose -Confirm:$Confirm -Whatif:$Whatif - - if($shouldProcess) - { - ##Write-Host "Working..." -foregroundcolor Magenta - $photo.DateTimeOriginal = $photo.DateTimeOriginal.AddHours($numberOfHours) - $photo.DateTime = $photo.DateTimeOriginal.AddHours($numberOfHours) - $photo.DateTimeDigitized = $photo.DateTimeOriginal.AddHours($numberOfHours) - $photoFileInfo.CreationTime = $photo.DateTimeOriginal.AddHours($numberOfHours) - $photo.Save() - ## No change - ##$photoFileInfo.LastWriteTime - } - - if($verbose) - { - Write-PhotoInfo $photoFileInfo - } - } -} - - - - - -function Convert-KmlToTcx { - param( - [ValidateScript({Test-Path $_ -PathType Leaf})][Parameter(Mandatory)][string]$kmlFile - , [string]$tcxFile=[IO.Path]::ChangeExtension($kmlFile, "tcx") - ) - - - #gpsbabel -t -i kml -f C:/Data/Photos/MarEli/2015/04/history-04-09-2015.kml -o gtrnctr -F C:/Data/Photos/MarEli/2015/04/history-04-09-2015.tcx -o gpx -F C:/Users/Mark/AppData/Local/Temp/GPSBabel.d13316 - #gpsbabel -t -i kml -f C:/Data/Photos/MarEli/2015/04/history-04-12-2015.kml -o gtrnctr -F C:/Data/Photos/MarEli/2015/04/history-04-12-2015.tcx - #gpsbael should be aliased to "C:\Program Files (x86)\GPSBabel\gpsbabel.exe". - & gpsbabel -t -i kml -f "$kmlFile" -o gtrnctr -F "$tcxFile" - if(Test-Path $tcxFile) { - return $tcxFile - } - else { - throw "gpsbabel call not working." - } -} - - -# Check out https://developers.google.com/identity/protocols/OAuth2UserAgent for google oauth2 with Google - -function Invoke-GoogleLocationHistoryRequest { - $loginPage =(Invoke-WebRequest -Uri "https://accounts.google.com/ServiceLogin") - -} - - -function Set-PhotoGeoTag { - param( - - ) - - - -} - - -<# -if($PSBoundParameters.Count -ne 0) { - Copy-Photo @PSBoundParameters -} -#> - - - - - - - - - - - - - - -# $items | %{$_.DateTimeOriginal} -# | %{ if(! test-path (.getdirectoryname() + -#\ + .datetimeoriginal.Month.tostring(00)))) { ni (.getdirectoryname() + \ + .datetimeoriginal.Month.tostring(00)) -type directory}} - - -#>$items = dir c:\photos\MarEli *.jpg -recur | %{new-object photolibrary.photo($_.fullname)} -#>$items | ?{$_.Model -eq "Canon IXY DIGITAL 800 IS"} | %{$_.Rename($_.GetFileName().Replace("IMG", "800IS"))} -#>$items | ?{$_.Model -eq "Canon EOS 20D"} | %{$_.Rename($_.GetFileName().Replace("IMG", "EOS20D"))} -#>$items | ?{$_.Model -eq "SQ908 MEGA-Cam"} | %{$_.Rename($_.GetFileName().Replace("IMG", "SQ908"))} - -# [void] [Reflection.Assembly]::LoadFrom("$env:utils\PhotoLibrary.dll") -# $items = dir .\ *.jpg -recur | %{new-object photolibrary.photo($_.fullname)} -# $items | %{ $_.DateTime = $_.DateTime.AddHours(2) } -# $items | %{ $_.DateTimeDigitized=$_.DateTimeDigitized.AddHours(2) } -# $items | %{ $_.DateTimeOriginal=$_.DateTimeOriginal.AddHours(2) } -# $items | %{ $_.LastWriteTime = $_.LastWriteTime.AddHours(2) } - - - - - -##$photos = $files | %{new-object photolibrary.photo($_.fullname)} -#$months= $photos | %{$_.DateTimeOriginal.Month.ToString("00")} | sort -unique - -#foreach($month in $months) -#{ -# $targetDirectory = join-path $toRootDirectory $month -# if(!(test-path $targetDirectory) ) -# { -# New-Item $targetDirectory -type directory -# } -#} - - -## Used to set dates -##$photos | sort DateTimeOriginal -desc | ?{ ($_.Model -eq "Canon EOS 20D") -or ($_.Model -eq "Canon IXY DIGITAL 800 IS")} | ft -property DateTimeOriginal, DateTimeDigitized, DateTime -##$photos | sort DateTimeOriginal -desc | ?{ ($_.Model -eq "Canon EOS 20D") -or ($_.Model -eq "Canon IXY DIGITAL 800 IS")} | %{ $_.DateTimeOriginal=$_.DateTimeOriginal.AddHours(2); $_.DateTimeDigitized=$_.DateTimeDigitized.AddHours(2); $_DateTime=$_.DateTime.AddHours(2)} -##$photos | sort DateTimeOriginal -desc | ?{ ($_.Model -eq "Canon EOS 20D") -or ($_.Model -eq "Canon IXY DIGITAL 800 IS")} | %{new-object IO.FileInfo($_.getfullpath()) } | %{$_.LastWriteTime=$_.LastWriteTime.AddHours(2)} - -Function Get-PhotoExifData { - [CmdletBinding()] - param( - [ValidateScript({Test-Path $_})][Parameter(ValueFromPipeline)][string[]]$path, - [switch]$recurse - ) - PROCESS { - Get-ChildITem $path *.jpg -Recurse:$recurse | Where-Object{ - $photo=@{} - exiftool $_.fullname | ConvertFrom-string -Delimiter ':' -PropertyNames 'Name','Value' | Foreach-Object{$photo."$($_.Name.ToString().Trim())" - ="$($_.Value.ToString().Trim())" } - [pscustomobject]$photo - } - } -} - - -Filter Select-PhotosTagged { - [CmdletBinding()] - param( - [ValidateScript({Test-Path $_})][Parameter(ValueFromPipeline)][string[]]$path, - [switch]$recurse - ) - - PROCESS { - Get-ChildITem $path *.jpg -Recurse:$recurse | Where-Object{ - $photo=@{} - exiftool $_.fullname | ConvertFrom-string -Delimiter ':' -PropertyNames 'Name','Value' | Foreach-Object{$photo."$($_.Name.ToString().Trim())" - ="$($_.Value.ToString().Trim())" } - [pscustomobject]$photo - } | Where-Object {(Test-Property -InputObject $_ -Name 'Region Person Display Name') } - } - } \ No newline at end of file diff --git a/Functions/PhotoLibrary.xml b/Functions/PhotoLibrary.xml deleted file mode 100644 index 52c7650..0000000 --- a/Functions/PhotoLibrary.xml +++ /dev/null @@ -1,2843 +0,0 @@ - - - - PhotoLibrary - - - - - The possible values for - - - - - Unknown. - - - - - Macro. - - - - - Close view. - - - - - Distant view. - - - - - Reserved. - - - - - The possible values for - - - - - Normal. - - - - - Soft. - - - - - Hard. - - - - - Reserved. - - - - - The possible values for - - - - - Normal. - - - - - Low saturation. - - - - - High saturation. - - - - - Reserved. - - - - - The possible values for - - - - - Normal. - - - - - Soft. - - - - - Hard. - - - - - Reserved. - - - - - The possible values for - - - - - None. - - - - - Low gain up. - - - - - High gain up. - - - - - Low gain down. - - - - - High gain down. - - - - - Reserved. - - - - - The possible values for - - - - - Standard. - - - - - Landscape. - - - - - Portrait. - - - - - Night scene. - - - - - Reserved. - - - - - The possible values for - - - - - Auto exposure. - - - - - Manual exposure. - - - - - Auto bracket. - - - - - Reserved. - - - - - The possible values for - - - - - Auto white balance. - - - - - Manual white balance. - - - - - Reserved. - - - - - Uknown. - - - - - The possible values for - - - - - A directly photographed image. - - - - - Reserved. - - - - - The possible values for - - - - - Digital Still Camera (DSC). - - - - - Reserved. - - - - - The possible values for - - - - - Not defined. - - - - - One-chip color area sensor. - - - - - Two-chip color area sensor. - - - - - Three-chip color area sensor. - - - - - Color sequential area sensor. - - - - - Trilinear sensor. - - - - - Color sequential linear sensor. - - - - - Reserved. - - - - - The possible values for - - - - - Flash did not fire. - - - - - Flash fired. - - - - - Strobe return light not detected. - - - - - Strobe return light detected. - - - - - Flash fired, compulsory flash mode. - - - - - Flash fired, compulsory flash mode, return light detected. - - - - - Flash did not fire, compulsory flash mode. - - - - - Flash did not fire, auto mode. - - - - - Flash fired, auto mode. - - - - - Flash fired, auto mode, return light not detected - - - - - Flash fired, auto mode, return light detected. - - - - - No flash function. - - - - - Flash fired, red-eye reduction mode. - - - - - Flash fired, red-eye reduction mode, return light not detected. - - - - - Flash fired, red-eye reduction mode, return light detected. - - - - - Flash fired, compulsory flash mode, red-eye reduction mode. - - - - - Flash fired, compulsory flash mode, red-eye reduction mode, return light not detected. - - - - - Flash fired, compulsory flash mode, red-eye reduction mode, return light detected. - - - - - Flash fired, auto mode, red-eye reduction mode. - - - - - Flash fired, auto mode, return light not detected, red-eye reduction mode. - - - - - Flash fired, auto mode, return light detected, red-eye reduction mode. - - - - - The possible values for - - - - - Uknown. - - - - - Daylight. - - - - - Flourescent. - - - - - Tungsten (incandescent light). - - - - - Flash. - - - - - Fine weather. - - - - - Cloudy weather. - - - - - Shade. - - - - - Daylight fluorescent (D 5700 – 7100K). - - - - - Day white fluorescent (N 4600 – 5400K). - - - - - Cool white fluorescent (W 3900 – 4500K). - - - - - White fluorescent (WW 3200 – 3700K). - - - - - Standard light A. - - - - - Standard light B. - - - - - Standard light C. - - - - - D55. - - - - - D65. - - - - - D75. - - - - - D50. - - - - - ISO studio tungsten. - - - - - Other. - - - - - other light source. - - - - - The possible values for - - - - - Unknown. - - - - - Average. - - - - - Center weighted average. - - - - - Sport. - - - - - Multi spot. - - - - - Pattern. - - - - - Partial. - - - - - Reserved. - - - - - Other. - - - - - The possible values for - - - - - Not defined. - - - - - Manual. - - - - - Normal program. - - - - - Aperture priority. - - - - - Shutter priority. - - - - - Creative program (biased toward depth of field). - - - - - Action program (biased toward fast shutter speed). - - - - - Portrait mode (for closeup photos with the background out of focus). - - - - - Landscape mode (for landscape photos with the background in focus) - - - - - Reserved. - - - - - Value options for - - - - - Property is measured in inches. - - - - - Property is measured in centimeters. - - - - - Property unit of measurement is unknown. - - - - - Value options for - - - - - sRGB color space - - - - - Uncalibrated color space. - - - - - Unknown color space. - - - - - Value options for - - - - - The Photo is in the normal rotation. - - - - - The Photo is rotated clockwise 180 degrees. - - - - - The Photo is rotated clockwise 270 degrees. - - - - - The Photo is rotated clockwise 90 degrees. - - - - - unknown. - - - - - Rotation options for rotating a . - - - - - - Rotate the image clockwise 90 degrees. - - - - - Rotate the image counter clockwise 90 degrees. - - - - - The data structure for . - - - - - Default constructor. - - - - - Create a new instance of this class using a supploed Photographer string. - - The Photographer string. - - - - Create a new instance of this class using a supploed Photographer and Editor string. - - The Photographer string. - The Editor string. - - - - Returns an using a supplied EXIF Formated Copyright string. - - The Copyright string. - This string must be in the correct EXIF format. - - - - Outputs the properties of this class in a manner that can be formatted - according to the Exif standard. - - Returns null terminated ASCII string. - - - - Returns a string representation of this class. - - A single line string to display in the designer. - - - - Formats a string to be displayed in the colapsed designer view. - - The delimiter to use when formatting. - A formatted string - - - - Photographer copyright. - - - - - Editor copyright. - - - - - Handles displaying in the designer. - - - - - Returns whether this converter can convert the object to the specified type, using the specified context. - - An that provides a format context. - A that represents the type you want to convert to. - true if the converter can perform the conversion; otherwise, false. - - - - Converts the given value object to the specified type, using the specified context and culture information. - - An that provides a format context. - A object. If a null reference (Nothing in Visual Basic) is passed, the current culture is assumed. - The to convert. - The to convert the value parameter to. - An that represents the converted value. - - - - Gets a value indicating whether the converter can convert an object - of the specified source type to the native type of the converter. - - An that can be used to gain additional context information. - A that represents the type you wish to convert from. - true if the converter can perform the conversion; otherwise, false. - - - - Converts the given object to the type of this converter, using the specified context and culture information. - - An that can be used to gain additional context information. - A object. - The to convert. - An that represents the converted value. - - - - The ExifPropertyItem class is used to store an image's tag property data - - - Constructor - The ExifPropertyDataItem's id. . - The particular ExifPropertyTag instance. . - The value obtained from the image. . - The type value obtained from the image. . - The value options obtained from the tag. . - - - - Compares the current instance with another object of the same type. - - An object to compare with this instance. - A 32-bit signed integer that indicates the relative order of the comparands. The return value has these meanings: Value Meaning Less than zero This instance is less than obj. Zero This instance is equal to obj. Greater than zero This instance is greater than obj. - - : obj is not the same type as this instance. - - - Get the Id value. - This value coreseponds to the property. - - - - Get the Category value. - - - - - Get the Name value. - - - - - Get the Description value. - - - - Get the Value as obtained from the image. - Partial formatting may be applied depending upon the - value of the ExifPropertyTags's format instruction, FormatInstr. - For example the ExposureTime tag property (Id=33434) with - the FRACTION format instruction would format a Rational value - of (10 300) into "1/30". - - - Get the Pretty Print Value. - The pretty print value is determined by ValueOptions - that may exist in the PhotoTagMetadata's XML data. - - For example the Flash tag property (Id=37385) provides options - for raw data that transforms the value 1 to the pretty print - value, "Flash fired". - - - - Get the Type value. - - This value coreseponds to the property. - - - - An array containing the possible ValueOptions for the . - - - - - A collection of elements of type ExifPropertyItem - - - - - Initializes a new empty instance of the ExifPropertyItemCollection class. - - - - - Initializes a new instance of the ExifPropertyItemCollection class, containing elements - copied from an array. - - - The array whose elements are to be added to the new ExifPropertyItemCollection. - - - - - Initializes a new instance of the ExifPropertyItemCollection class, containing elements - copied from another instance of ExifPropertyItemCollection - - - The ExifPropertyItemCollection whose elements are to be added to the new ExifPropertyItemCollection. - - - - - Adds the elements of an array to the end of this ExifPropertyItemCollection. - - - The array whose elements are to be added to the end of this ExifPropertyItemCollection. - - - - - Adds the elements of another ExifPropertyItemCollection to the end of this ExifPropertyItemCollection. - - - The ExifPropertyItemCollection whose elements are to be added to the end of this ExifPropertyItemCollection. - - - - - Adds an instance of type ExifPropertyItem to the end of this ExifPropertyItemCollection. - - - The ExifPropertyItem to be added to the end of this ExifPropertyItemCollection. - - - - - Determines whether a specfic ExifPropertyItem value is in this ExifPropertyItemCollection. - - - The ExifPropertyItem value to locate in this ExifPropertyItemCollection. - - - true if value is found in this ExifPropertyItemCollection; - false otherwise. - - - - - Return the zero-based index of the first occurrence of a specific value - in this ExifPropertyItemCollection - - - The ExifPropertyItem value to locate in the ExifPropertyItemCollection. - - - The zero-based index of the first occurrence of the _ELEMENT value if found; - -1 otherwise. - - - - - Inserts an element into the ExifPropertyItemCollection at the specified index - - - The index at which the ExifPropertyItem is to be inserted. - - - The ExifPropertyItem to insert. - - - - - Removes the first occurrence of a specific ExifPropertyItem from this ExifPropertyItemCollection. - - - The ExifPropertyItem value to remove from this ExifPropertyItemCollection. - - - - - Returns an enumerator that can iterate through - the . - - - An object that implements System.Collections.IEnumerator. - - - - Gets or sets the ExifPropertyItem at the given index in the collection. - - The zero-based index of the entry to locate in the collection. - - The entry at the specified index of the collection. - - is outside the valid range of indexes for the collection. - - - - Gets or sets the ExifPropertyItem using in the collection. - - The of the entry to locate in the collection. - The entry of the specified . - Returns null if the ExifPropertyTag doesn't exist - - - - Type-specific enumeration class, used by . - - - - - Constructof for ExifPropertyTagEnumerator. - - The ExifPropertyTagCollection - - - - Sets the enumerator to its initial position, which is before the first element in the collection. - - : The collection was modified after the enumerator was created. - - - - Advances the enumerator to the next element of the collection. - - - true if the enumerator was successfully advanced to the next element; false if the enumerator has passed the end of the collection. - - : The collection was modified after the enumerator was created. - - - - Advances the enumerator to the next element of the collection. - - - true if the enumerator was successfully advanced to the next element; false if the enumerator has passed the end of the collection. - - : The collection was modified after the enumerator was created. - - - - Sets the enumerator to its initial position, which is before the first element in the collection. - - : The collection was modified after the enumerator was created. - - - - Gets the current element in the collection. - - - - - Gets the current element in the collection. - - - - - The generic ExifPropertyItemCollection Exception class. - - - Generic ExifPropertyItemCollection Exception. - A message that describes the error. - - - - Exception thrown within . - - - - Initializes a new instance of the ExifPropertiesLoadDataException class - with a specified error message. - A message that describes the error. - - - - Tags related to the System.Image.Bitmap.PropertyName class. - - Based on EXIF 2.1 - - - The possible key types to be used in the OptionDescription. - - - Integer - - - Single character - - - String - - - The possible specialized formatting instruction - when reading an image's tag property value. - - - No formatting instruction - - - Instruction to change the value to a fraction. - This is only applicable to RATIONAL and SRATIONAL tags. - - - Instruction to format the bytes as a non-null terminated string. - This is only applicable to UNDEFINED tags. - - - Instruction to format the bytes as a non-null terminated string. - That can be encoded using either ASCII, JIS, Unicode or Undefined - This is only applicable to UNDEFINED tags. - - - Instruction to format the bytes as a non-null terminated unicode string. - - - - Instruction to format the bytes as a Base-64 string. - This is only applicable to BYTE tags. - - - - The ExifPropertyTag class stores textual and formatting data - specific to a . - - - - Returns a pretty-print format of a ExifPropertyTag item's value. - This method uses any to determine the pretty-print value. - If there are no it returns an empty string. - The value - pretty-print value - - - The name of the ExifPropertyTag item. - - - The description of the ExifPropertyTag item. - - - Pretty-print options specific to the ExifPropertyTag item. - The ValueOptions array can be one of three types: - - OptionDescription - An individual Key to Value definition; - OptionRangeDescription - A Key range to Value definition; - OptionOtherwiseDescription - The default definition. - - - - A specialized formatting instruction for the ExifPropertyTag item. - - - Is a specialized formatting instruction specified? - - - The id of the ExifPropertyTag item. - - - The category of the ExifPropertyTag item. - - - Defines a Key to Value option description. - - - The key - - - The key's 'typeof' - - - The description - - - Defines the default option description. - - - The default description - - - Defines a Key Range to Value option description. - - - The start of the range (inclusive) - - - The end of the range (inclusive) - - - The description - - - - Provides a dynamic Category attribute of the Property from the ExifPropertyTag - - - - - The default contructor. - - - - - Overloaded contructor. - - The name. - - - - Override GetLocalizedString since this is the only method we can use to set - the category attribute. - - The string representation of the . - A string representing the Category of the - - - - A collection that stores objects. - - - - - - Initializes a new instance of . - - - - - Initializes the . - - - - Loads the XML tag property data. - An external image file name, or null. - - - - Initializes a new instance of based on another . - - - A from which the contents are copied - - - - - Initializes a new instance of containing any array of objects. - - - A array of objects with which to intialize the collection - - - - - Adds a with the specified value to the - . - - The to add. - - The index at which the new element was inserted. - - - - - Copies the elements of an array to the end of the . - - - An array of type containing the objects to add to the collection. - - - - - - Adds the contents of another to the end of the collection. - - - A containing the objects to add to the collection. - - - - - - Gets a value indicating whether the - contains the specified . - - The to locate. - - if the is contained in the collection; - otherwise, . - - - - - - Copies the values to a one-dimensional instance at the - specified index. - - The one-dimensional that is the destination of the values copied from . - The index in where copying begins. - is multidimensional. -or- The number of elements in the is greater than the available space between and the end of . - is . - is less than 's lowbound. - - - - - Returns the index of a in - the . - - The to locate. - - The index of the of in the - , if found; otherwise, -1. - - - - - - Inserts a into the at the specified index. - - The zero-based index where should be inserted. - The to insert. - - - - - Returns an enumerator that can iterate through - the . - - - An object that implements System.Collections.IEnumerator. - - - - Removes a specific from the - . - - The to remove from the . - is not found in the Collection. - - - - Gets a value indicating whether the ExifPropertyTagCollection is read-only. - - - - - Returns true if the ExifPropertyTagData.xml file is loaded. - - The method loads the ExifPropertyTags into the static collection - - - - Gets the collection of ExifPropertyTags in the ExifPropertyTagData file. - - - - - Represents the entry at the specified index of the . - - The zero-based index of the entry to locate in the collection. - - The entry at the specified index of the collection. - - is outside the valid range of indexes for the collection. - - - - Represents the entry at the specified index of the . - - The of the entry to locate in the collection. - The entry of the specified . - Returns null if the ExifPropertyTag doesn't exist - - - - Type-specific enumeration class, used by . - - - - - Constructof for ExifPropertyTagEnumerator. - - The ExifPropertyTagCollection - - - - Sets the enumerator to its initial position, which is before the first element in the collection. - - : The collection was modified after the enumerator was created. - - - - Advances the enumerator to the next element of the collection. - - - true if the enumerator was successfully advanced to the next element; false if the enumerator has passed the end of the collection. - - : The collection was modified after the enumerator was created. - - - - Advances the enumerator to the next element of the collection. - - - true if the enumerator was successfully advanced to the next element; false if the enumerator has passed the end of the collection. - - : The collection was modified after the enumerator was created. - - - - Sets the enumerator to its initial position, which is before the first element in the collection. - - : The collection was modified after the enumerator was created. - - - - Gets the current element in the collection. - - - - - Gets the current element in the collection. - - - - - Provides a dynamic Description attribute of the Property from the ExifPropertyTag. - - - - - Constructor for ExifPropertyTagDescription. - - The name as a string - - - - Provides formatting methods for property tag values. - - - - - Defines the DOUBLE format used when formatting Rational and - SRational Property Tag types. - - - - Index byte jump for a PropertyItem's byte array of Shorts. - - - - - Index byte jump for a PropertyItem's byte array of Longs. - - - - - Index byte jump for a PropertyItem's byte array of Rationals. - - - - - Index byte jump for a PropertyItem's byte array of SLongs. - - - - - Index byte jump for a PropertyItem's byte array of SRationals. - - - - BYTE - An 8-bit unsigned integer. - - - ASCII - An 8-bit byte containing one 7-bit ASCII code. - The final byte is terminated with NULL. - - - SHORT - A 16-bit (2-byte) unsigned integer - - - LONG - A 32-bit (4-byte) unsigned integer - - - RATIONAL - Two LONGs. - The first LONG is the numerator. - The second LONG is the denominator. - - - UNDEFINED - An 8-bit byte that can take any value - depending on the field definition - - - SLONG - A 32-bit (4-byte) signed integer (2's complement notation) - - - SRATIONAL - Two SLONGs. - The first SLONG is the numerator. - The second SLONG is the denominator. - - - - Converts a PropertyItem's byte data to a formatted string. - The format is based upon the data's tag type as well - as further information included in the item's ExifPropertyTag. - A specific PropertyItem. - A specific ExifPropertyTag instance. - A string representation of the data. - - - - Converts an object from it's native type to a byte array. - - The to convert. - A byte representation of the data. - - - - Format a Byte tag. - - The to format. - The to use for formatting. - A formatted Byte string. - - - - Format an ASCII tag. - - The to format. - A formatted ASCII string. - The null termination is removed when the string is formatted. - - - - Format a Short tag (unsigned). - - The to format. - A formatted unsigned Short () string - - - - Format a Long tag (unsigned). - - The to format. - A formatted unsigned Long ( string. - - - - Format a Rational tag (unsigned). - - The to format. - The to use for formatting. - A formatted Rational string. - By defailt a string will be formatted as decimal unless the is - - - - Format a Undefined tag. - - The to format. - The to use for formatting. - A formatted Rational string. - Valid formatting instructions are: - - - - - - - - - - Format a SLong tag (signed). - - The to format. - A formatted signed Long ( string. - - - - Format a SRational tag (signed). - - The to format. - The to use for formatting. - A formatted signed Rational string. - By defailt a string will be formatted as decimal unless the is - - - - Converts the signed numerator and denominator values - to its equivalent string representation. - A fraction (x/y) is returned when applicable. - The numeratior. - The denominator. - A formatted Rational string. - - - - Reduces the rational number by dividing both the numerator - and the denominator by their greatest common divisor. - - The numeratior. - The denominator. - - - - Computes and returns the greatest common divisor of the two - positive parameters. Uses Euclid's algorithm. - - First number. - Second number. - The greated common denominator as a string. - - - - Converts the unsigned numerator and denominator values - to its equivalent string representation. - A fraction is used when applicable. - - The numeratior. - The denominator. - A formatted Rational string. - - - - Reduces the rational number by dividing both the numerator - and the denominator by their greatest common divisor. - - The numeratior. - The denominator. - - - - Computes and returns the greatest common divisor of the two - positive parameters. Uses Euclid's algorithm. - - First number. - Second number. - The greated common denominator as a string. - - - - Exif Property Tag Types - - Based on EXIF 2.2 - - - BYTE - An 8-bit unsigned integer. - - - ASCII - An 8-bit byte containing one 7-bit ASCII code. - The final byte is terminated with NULL. - - - SHORT - A 16-bit (2-byte) unsigned integer - - - LONG - A 32-bit (4-byte) unsigned integer - - - RATIONAL - Two LONGs. The first LONG is the numerator. - The second LONG is the denominator. - - - UNDEFINED - An 8-bit byte that can take any value - depending on the field definition - - - SLONG - A 32-bit (4-byte) signed integer (2's complement notation) - - - SRATIONAL - Two SLONGs. - The first SLONG is the numerator. - The second SLONG is the denominator. - - - - Tags related to the System.Image.Bitmap.PropertyName class. - - Based on EXIF 2.1 - - - - Convert will convert type values to EXIF type values - - - - - Convert class. - - - - - Converts an EXIF DateTime string to a System.DateTime object. - - Convert.ToDateTime("2003:08:23 16:33:11)" - The Exif DateTime string. - A System.DateTime object. - exifDateTime may be null termindated - - - - Converts a System.DateTime object to an Exif DateTime formatted string. - - The DateTime instance to convert. - A string. - - - - Converts an Exif Base64 encoded string to a System.Drawing.Bitmap type. - - The Base64 encoded string. - A Bitmap. - - - - Converts an to a Base64 encoded string. - - The to encode. - The Base64 encoded string. - - - - convert decimal degrees to sexagesimal format - - - - http://www.opennetcf.org/SourceBrowse/view.aspx?f=C:/sites/OpenNETCF.org/wwwroot/Source/OpenNETCF/IO/Serial/GPS/Misc.cs - - - - FastImage wraps and loads an almost - 100 times faster by not performing Image Validation. - - - - If the user does not have hotfix 831419 installed an will load normally. - Since the hotfix requires it will fall back to the - slower method if fails. - - See http://support.microsoft.com/default.aspx?scid=kb;en-us;831419 - - - - - - Creates an object from the specified data stream, using embedded - color management information in that stream. Image Validation is not performed if - hotfix 831419 is installed. - - A object that contains the data for this object. - The object this method creates. - is returned if you do not have - permission. - - - - ImageFast tried two techniques to load images about 100 times faster - or . - - - ImageFast first tries - to use a new method in a .NET framework hotfix. If that fails it attempts to - use GDI+ and P/Invoke to do something similar. If that fails it falls back - to the standard . - You should dispose of this resource when finished as it will keep a filestream - open. - - - You must have permissions for - ImageFast to load images faster. - - - - - - Default contructor. - - The path to the to load. - - - - Releases the used by the . - - - - - The that's loaded by the instance. - - - - - Possible values for the direction of the drop shadow. - - - - - Drop shadow for TopLeft of Drawing. - - - - - Drop shadow for Top of Drawing. - - - - - Drop shadow for TopRight of Drawing. - - - - - Drop shadow for Right of Drawing. - - - - - Drop shadow for BottomRight of Drawing. - - - - - Drop shadow for Bottom of Drawing. - - - - - Drop shadow for BottomLeft of Drawing. - - - - - Drop shadow for Left of Drawing. - - - - - Blank. - - - - - Static drawing functions for - - - - - Gets an with a border. - - The image to draw the border. - The length, in pixels, of the border. - The of the border. - The length, in pixels, of the padding. - The of the padding. - An with a border. - - - - Gets an with a drop shadow. - - The image to draw the drop shadow. - The length, in pixels, of the drow shadow. - The of the drop shadow. - The of the background for the drop shadow. - An with a border. - - - - Encapsulates all the EXIF information in a . - - - The EXIF data is compiled from the EXIF 2.2 Japan Electronic Industry Development - Association (JEIDA) standard and MSDN Property Item Descriptions page at - http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdicpp/GDI+/GDI+Reference/Constants/ImagePropertyTagConstants/PropertyItemDescriptions.asp. - - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class from the specified - existing . - - The object from which to create - the new . - - - - Initializes a new instance of the class from the specified file. - - The name of the file. - - - - Returns an XML document of the EXIF tags that are not null. - - A XML . - - - - Gets the absolute path for the . - - A containing the fully qualified location of path, - such as "C:\MyPhoto.jpg". - - - - Gets the file name and extension of the . - - - A containing the fully qualified location of path, - such as "C:\MyPhoto.jpg". - - - - - Gets the file name of the . - - - A consisting of the characters after the last directory - character in path. - - - - - Gets the extension of the . - - - A , including the period (.). For example, - for a file c:\NewPhoto.jpg, this property returns ".jpg". - - - - - Initializes the class for increased performance. - - - The first time the class is instantiazed it needs to load - all the EXIF Property Tag Meta Data. Calling this method is optional. - - - - Gets a 160 pixel Thumbnail of an . - - The to generate a Thumbnail. - A 160 pixel Thumbnail. - - - - Gets a Thumbnail of an . - - The to generate a Thumbnail. - The desired output length in pixels. - A Thumbnail. - - - - Scales an by a specified percentage. - Both the width and height will be scaled uniformly. - - The image to scale. - The percent to scale the image. - An that is scaled. - - - - Scales an propotionally. - - The to scale. - The max length to scale the image to. - An that is scaled. - If the orientation is portrait then the height will be - the max length and if the orientation if landscape then the width will be the max length. - - - - Scales an propotionally by width and height and adds padding to fill a square. - - The to scale. - The desired width. - The desired height. - The desired offset. - A square that is scaled. - - - - Crops an . - - The to scale. - The desired width. - The desired height. - Where to start the crop. - A scaled and cropped . - - - - Gets a of the that is framed with a border - and padding along with a drop shadow. - - The desired output length, in pixes, of the final framed photo. - The desired border length, in pixels. - The desired padding length, in pixels. - The desired dropshadow length in pixels. - The desired border Color. - The desired padding Color. - The desired dropshadow Color. - The desired backround Color of the dropshadow. - A square that is framed by an optional border, padding and drop shadow. - - The is returned as a square . - This allows the object to be used in an - regardless of the orientation (portrait or landscape). - The original aspect ratio of the is maintained. - - - - Gets a containing a single line EXIF summary about the . - - A formatted such as in the example. - - - 1/60s f/2.8 at 7.40625mm - - - - - - Gets a containing full EXIF summary about the . - - A formatted such as in the example. - - - Date Picture Taken: 11/1/2003 6:52:11 PM - Make: Canon - Model: Canon PowerShot S400 - Dimensions: 2272 x 1704 - Aperture: f/2.8 - Exposure Time: 1/60 sec - Focal Length: 7.40625 mm - Metering Mode: Pattern - White Balance: Auto - Focus Distance: 7.40625 - Flash: Flash fired, compulsory flash mode - - - - - - Auto rotates an image based on the information in . - - Not all Digial Still Cameras record this property. - If is null, this exception - will be thrown. - - - - Rotates a clockwise or counterclockwise - - The direction to rotate the . - - - - Renames the using the supplied filename. - - The new filename. - is thrown if the destFileName can't be created. - - - - - Saves this object overwriting the original . - - - - - Saves this object to the specified file. - - The path to save the file to, which can specify a different filename. - - - - Used by the contructors to initialize a new photo - - The filename of the Photo to Initialize - - - - Loads the ExifPropertyItems for the Image. - - - - - Sets the specified property item from this object. - - The of the property item to get. - The value to set the to - - - - Gets the specified property item from this object. - - The of the property item to get. - The object containing the - Since the value is returned as an object, it must be cast to it's native Type. - - - - Gets the for the Photo. You can get - any using either the ID or - using . - - Items in this collection are read-only. - - - - Gets the number of columns of image data, equal to the number of pixels per row. - - In JPEG compressed data a JPEG marker is used instead of this tag. - - - - Gets the number of rows of image data. - - In JPEG compressed data a JPEG marker is used instead of this tag. - - - - Gets the number of bits per image component. - - In this standard each component of the image is 8 bits, so the value for this - tag is 8. See also . - In JPEG compressed data a JPEG marker is used instead of this tag. - - - - - Gets the compression scheme used for the image data. - - - When a primary image is JPEG compressed, this designation is not necessary and is - omitted. When thumbnails use JPEG compression, this tag value is set to 6. - - - - - Gets the pixel composition. - - In JPEG compressed data a JPEG marker is used instead of this tag. - - - - Gets or sets the orientation of the image as . - - This property only exists on Digital Still Cameras that support Orientation. - - - - Gets the number of components per pixel. - - Since this standard applies to RGB and YCbCr images, - the value set for this tag is 3. In JPEG compressed data a JPEG marker - is used instead of this tag. - - - - Gets value indicating whether pixel components are recorded in chunky or planar format. - - - In JPEG compressed files a JPEG marker is used instead of this tag. - If this field does not exist, the TIFF default of 1 (chunky) is assumed. - - - - Gets the sampling ratio of chrominance components in relation to the luminance component. - - In JPEG compressed data a JPEG marker is used instead of this tag. - - - - Gets the position of chrominance components in relation to the luminance component. - - - This field is designated only for JPEG compressed data or uncompressed YCbCr data. - The TIFF default is 1 (centered); but when Y:Cb:Cr = 4:2:2 it is recommended in - this standard that 2 (co-sited) be used to record data, in order to improve the - image quality when viewed on TV systems. When this field does not exist, the - reader shall assume the TIFF default. In the case of Y:Cb:Cr = 4:2:0, - the TIFF default (centered) is recommended. If the reader does not have the - capability of supporting both kinds of YCbCrPositioning, it shall follow the TIFF - default regardless of the value in this field. It is preferable that readers be - able to support both centered and co-sited positioning. - - - - - Gets the number of pixels per in the - direction. - - When the image resolution is unknown, 72 [dpi] is designated. - - - - Gets the number of pixels per in the - direction. The same value as is designated. - - - - - Gets the unit for measuring and . - - The same unit is used for both and . - If the image resolution in unknown, 2 (inches) is designated. - - - - Gets the byte offset of that strip for each strip. - - It is recommended that this be - selected so the number of strip bytes does not exceed 64 Kbytes. - With JPEG compressed data this designation is not needed and is omitted. - See also and . - - - - Gets the number of rows per strip. - - This is the number of rows in the image of one - strip when an image is divided into strips. With JPEG compressed - data this designation is not needed and is omitted. - See also and . - - - - Gets the total number of bytes in each strip. - - With JPEG compressed data this designation is not needed and is omitted. - - - - Gets the offset to the start byte (SOI) of JPEG compressed thumbnail data. - - This is not used for primary image JPEG data. - - - - Gets the number of bytes of JPEG compressed thumbnail data. - - This is not used for primary - image JPEG data. JPEG thumbnails are not divided but are recorded as a continuous - JPEG bitstream from SOI to EOI. APPn and COM markers should not be recorded. - Compressed thumbnails shall be recorded in no more than 64 Kbytes, - including all other data to be recorded in APP1. - - - - Gets a transfer function for the image, described in tabular style. - - Normally this tag is not necessary, since color space is specified - in the color space information tag (ColorSpace). - - - - The chromaticity of the white point of the image. - - Normally this tag is not necessary, - since color space is specified in the property. - - - - Gets the chromaticity of the three primary colors of the image. - - Normally this tag is not necessary, since color space is - specified in the information property. - - - - Gets the matrix coefficients for transformation from RGB to YCbCr image data. - - - - - Gets the reference black point value and reference white point value. - - - No defaults are given in TIFF, but the values below are given as defaults here. - The color space is declared in a color space information tag, - with the default being the value that gives the optimal image characteristics - Interoperability these conditions. - - When is RGB: [0, 255, 0, 255, 0, 255] - When is YCbCr: [0, 255, 0, 128, 0, 128] - - - - - Gets or sets the date and time of image creation. In this standard it is the date and time the file was changed. - - The EXIF format is "YYYY:MM:DD HH:MM:SS" with time shown in 24-hour format, - and the date and time separated by one blank character. When the date and - time are unknown, all the character spaces except colons (":") may be filled with - blank characters, or else the Interoperability field may be filled with blank - characters. When the field is left blank, it is treated as unknown. - - - - - - Gets or sets a character string giving the title of the image. - - 1988 company picnic. - Two-byte character codes cannot be used. When a 2-byte code is necessary, - the Exif Private tag is to be used. - - - - Gets the manufacturer of the recording equipment. - - - This is the manufacturer of the DSC, - scanner, video digitizer or other equipment that generated the image. - When the field is left blank, it is treated as unknown. - - - - Gets the model name or model number of the equipment. - - - This is the model name of number of the DSC, scanner, video digitizer - or other equipment that generated the image. - When the field is left blank, it is treated as unknown. - - - - Gets the name and version of the software or firmware of the - camera or image input device used to generate the image. - - When the field is left blank, it is treated as unknown. The detailed - format is not specified. - Exif Software Version 1.00a - - - - Gets or sets the name of the camera owner, photographer or image creator. - The detailed format is not specified. - - When the field is left blank, it is treated as unknown. - Camera owner, John Smith; Photographer, Michael Brown; Image creator, Ken James - - - - Gets or sets the copyright information. - - - The property is used to indicate both the - photographer and editor copyrights. It is the copyright notice of the person or - organization claiming rights to the image. - The Interoperability copyrights statement including date and rights should - be written in this field. "Copyright, John Smith, 19xx. All rights reserved." - When the field is left blank, it is treated as unknown. - - - - - Gets the version of the EXIF standard supported. - - Conformance to this standard is indicated by recording "0220" as 4-byte ASCII. - Nonexistence of this property is taken to mean nonconformance to the EXIF standard. - - - - Gets the Flashpix format version supported by a FPXR file. - - If the FPXR function supports Flashpix format Ver. 1.0, - this is indicated similarly to ExifVersion by recording "0100". - - - - - Gets the color space information. - - Normally sRGB (=1) is used to define the color space based on the - PC monitor conditions and environment. If a color space other than sRGB is used, - Uncalibrated is set. Image data recorded as Uncalibrated can be treated as sRGB - when it is converted to Flashpix. - - - - Gets the valid width of the compressed image. - - This property should not exist in an uncompressed file. - - - - Gets the valid height of the compressed image. - - This tag should not exist in an uncompressed file. Since data padding is unnecessary in the vertical direction, the number of lines recorded in this valid image height tag will in fact be the same as that recorded in the SOF. - - - - Gets the color channels of each component. - - - Data is arranged in order from the 1st component to the 4th. - For uncompressed data the data arrangement is given in the - property. However, - since can only express the order of - Y,Cb and Cr, this tag is provided for cases when compressed data uses - components other than Y, Cb, and Cr and to enable support of other sequences. - - - - Gets the compression mode used for a compressed image indicated in unit bits per pixel. - - - - - Gets a property for manufacturers of Exif writers to record any desired information. - - - The contents are up to the manufacturer, but this property should not be used for any - other than its intended purpose. - - - - Gets or sets keywords or comments on the image besides those - in , and without the character code limitations - of the property. - - - - - Gets the name of an audio file related to the image data. - - - - The only relational information recorded here is the Exif audio file name and extension - (an ASCII string consisting of 8 characters + '.' + 3 characters). - The path is not recorded. - - When using this tag, audio files shall be recorded in conformance to the - Exif audio format. Writers are also allowed to store the data such as Audio within - APP2 as Flashpix extension stream data. Audio files shall be recorded in conformance - to the Exif audio format. - - - - Gets or sets the date and time when the original image data was generated. - For a DSC the date and time the picture was taken are recorded. - - - - - Gets or sets the date and time when the image was stored as digital data. - - - If, for example, an image was captured by DSC and at the same time the file was - recorded, then the and - will have the same contents. - - - - Gets the fractions of seconds for . - - - - - Gets the fractions of seconds for . - - - - - Gets the fractions of seconds for . - - - - - Gets the exposure time, given in seconds. - - - - - Gets the F number. - - - - - Gets the class of the program used by the camera to set exposure when the - picture is taken. - - - - - Gets the spectral sensitivity of each channel of the camera used. - - The tag value is an ASCII string compatible with the standard - developed by the ASTM Technical committee. - - - - Gets the ISO Speed and ISO Latitude of the camera or input device - as specified in ISO 12232. - - - - - Gets the Opto-Electric Conversion Function (OECF) specified in ISO 14524. - - - OECF is the relationship between the camera optical input and the image values. - - - - Gets the shutter speed. - - - The unit is the APEX (Additive System of Photographic Exposure) setting. - - - - Gets the lens aperture. - - The unit is the APEX value. - - - - Gets the value of brightness. - - - The unit is the APEX value. Ordinarily it is given in the range of -99.99 to 99.99. - If the numerator of the recorded value is -1, Unknown shall be indicated. - - - - - Gets the exposure bias. - - - The unit is the APEX value. Ordinarily it is given in the range of –99.99 to 99.99. - - - - Gets the smallest F number of the lens. - - The unit is the APEX value. Ordinarily it is given in the range of 00.00 tO 99.99, but it is not limited to this range. - - - - Gets the distance to the subject, given in meters. - - Note that if the numerator of the recorded value is -1, Infinity shall be indicated; and if the numerator is 0, Distance unknown shall be indicated. - - - - Gets the metering mode. - - - - - Gets the kind of light source. - - - - - Gets the status of flash when the image was shot. - - - - - Gets the location and area of the main subject in the overall scene. - - - - - Gets the actual focal length of the lens, in mm. - - Conversion is not made to the focal length of a 35 mm film camera. - - - - Gets the strobe energy at the time the image is captured, - as measured in Beam Candle Power Seconds (BCPS). - - - - - Gets the camera or input device spatial frequency table and SFR values in - the direction of image width, image height, and diagonal direction, - as specified in ISO 12233. - - - - - Gets the number of pixels in the image width (X) direction - per on the camera focal plane. - - - - - Gets the number of pixels in the image height (Y) direction - per on the camera focal plane. - - The unit is specified - in . - - - - Gets the number of pixels in the image height (y) direction - per unit on the camera focal plane. - - The unit is specified - in . - - - - Gets the location of the main subject in the scene. - - - - The value of this property represents the pixel at the center of the main - subject relative to the left edge, prior to rotation processing as per the - Rotation tag. The first value indicates the X column number and second - indicates the Y row number. - - When a camera records the main subject location, it is recommended that - the be used instead of this property. - - - - - - Gets the exposure index selected on the camera or input device at the - time the image is captured. - - - - - Gets the image sensor type on the camera or input device. - - - - - Gets the image source. - - If a DSC recorded the image, this tag value of this tag always be set to - FileSource.DSC, indicating that the image was recorded on a DSC. - - - - Gets the type of scene. - - If a DSC recorded the image, this tag value shall always be set to - , indicating that - the image was directly photographed. - - - - Gets the color filter array (CFA) geometric pattern of the image sensor - when a one-chip color area sensor is used. - - It does not apply to all sensing methods. - - - - Gets the renderer used for special processing on image data, such as rendering geared - to output. - - - When special processing is performed, the reader is expected to disable or minimize - any further processing. - - - - Gets the exposure mode set when the image was shot. - - - In auto-bracketing mode, the camera shoots a series of frames of the same scene - at different exposure settings. - - - - Gets the white balance mode set when the image was shot. - - - - - Gets the digital zoom ratio when the image was shot. - - - If the numerator of the recorded value is 0, this indicates that digital - zoom was not used. - - - - Gets the equivalent focal length assuming a 35mm film camera, in mm. - - - A value of 0 means the focal length is unknown. - Note that this tag differs from . - - - - Gets the type of scene that was shot. - - - It can also be used to record the mode in which the image was shot. - Note that this differs from . - - - - Gets the degree of overall image gain adjustment. - - - - - Gets the direction of contrast processing applied by the camera - when the image was shot. - - - - - Gets the direction of saturation processing applied by the camera - when the image was shot. - - - - - Gets the direction of sharpness processing applied by the camera - when the image was shot. - - - - - Gets the information on the picture-taking conditions of a particular camera model. - The tag is used only to indicate the picture-taking conditions in the reader. - - - - - Gets the distance to the subject. - - - - - Gets a unique identifier assigned to each image. - - - It is recorded as an ASCII string equivalent to hexadecimal notation and - 128-bit fixed length. - - - - Gets the identification of the Interoperability rule. - - If this property exists, it is removed when the Photo is saved. - - - - Gets the interoperability version. - - "0100" means version 1.00. - If this property exists, it is removed when the Photo is saved. - - - - Gets the image width. - - This property represents the image width when it was digitized. - If the image is rotated it will not changed. - - - - Gets the image length. - - This property represents the image width when it was digitized. - If the image is rotated it will not changed. - - - - Gets or sets thumbnail stored in the photo. - - - - - Gets the of the . - - - - - Gets the of the . - - - - - Determines where cropping starts when using . - - - - - Crop starting at Top of . - - - - - Crop starting at Center of . - - - - - Crop starting at Bottom of . - - - - - Crop starting at Left of . - - - - - Crop starting at Right of . - - - - diff --git a/Functions/PowerShellScripting.ps1 b/Functions/PowerShellScripting.ps1 deleted file mode 100644 index e69de29..0000000 diff --git a/Functions/Program.ps1 b/Functions/Program.ps1 deleted file mode 100644 index c62837f..0000000 --- a/Functions/Program.ps1 +++ /dev/null @@ -1,648 +0,0 @@ - -Function Script:Get-ProgramRegistryKeys { - [CmdletBinding()][OutputType('System.String[]')] param() - - return [string[]] "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall", - "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall", - "HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall", - "Microsoft.PowerShell.Core\Registry::HKEY_USERS\.DEFAULT\Software\Microsoft\Windows\CurrentVersion\Uninstall" -} - -# REview for 32/64 Bit -# http://gallery.technet.microsoft.com/scriptcenter/PowerShell-Installed-70d0c0f4 - -Function Get-Program { - [CmdletBinding()] param([string] $Filter = "*") - - (Get-ProgramRegistryKeys) | Get-ChildItem | Get-ItemProperty | - Select-Object *,@{Name="Name"; Expression = { - if( ($_ | Get-Member "DisplayName") -and $_.DisplayName) { #Consider $_.PSObject.Properties.Match("DisplayName") as it may be faster - $_.DisplayName - } - else { - $_.PSChildName - } - }} | - ?{ ($_.Name -Like $Filter) -or ($_.PSChildName -Like $Filter) } -} - -Function Get-ProgramUsingWmi { - [CmdletBinding()] param([string] $Filter = "*") - - Write-Progress -Activity "Get Program List using WMI" - Get-WmiObject -Class Win32_Product | - Where-Object -Property Name -Like $Filter - Write-Progress -Activity "Get Program List using WMI" -Completed -} - -$script:commandLineType = @{ - MemberType = 'NoteProperty' - TypeName = 'PSDefult.Program.CommandLine' - Value = $null -} - -#Update-TypeData @commandLineType -MemberName ExePath -Force -value -#Update-TypeData @commandLineType -MemberName Arguments -Force - -Function Split-CommandLine { - [CmdletBinding()][OutputType('PSDefult.Program.CommandLine')] param([string] $commandLine) - - [PSCustomObject]$result = @{ ExePath = $commandLine; Arguments = "" } - if($commandLine -match "(?.*\.exe['`"]?)(?(\s)?.*)?" ) { - $result.ExePath = $Matches.ExePath - $result.Arguments = $Matches.Arguments - Write-Host "Split-Command Line Result: $result" - } - else { - write-host "unable to parse '$commandline'" - } - Return [PSCustomObject]$result -} - - -Function script:Invoke-Uninstall { - [CmdletBinding()] param([string] $uninstallString) - #Bug, #TODO: Get-Program sugarsync* | uninstall-program doesn't work - - If(Test-Path $uninstallString -ErrorAction Ignore) { - $uninstallString = (Resolve-Path $uninstallstring).Path - $uninstallString = "`"$uninstallString`"" - } - #if ($uninstallString.Trim()[0] -ne '"') { - #TODO: Use regular expression to split on " -" or " /" - - $uninstallProgram = Split-CommandLine $uninstallString - - #$uninstallStringParts = $uninstallString -split " -", 2 - - Write-Verbose "Invoke-Command $uninstallString" - Invoke-Expression "Start-Process $($uninstallProgram.ExePath) $($uninstallProgram.Arguments) -Wait" - #Invoke-Command $uninstallStringParts[0] $uninstallStringParts[1] - #} - <# else { - Write-Verbose "Invoke-Expression `"& $uninstallString`"" - Invoke-Expression "& $uninstallString" - } #> - <# if ($uninstallString.Trim()[0] -ne '"') { - Invoke-Expression ("& {0}" -f (Resolve-Path $uninstallString)) - } - else { - Invoke-Expression (Resolve-Path $uninstallString) - } #> -} - -#[CmdletBinding] -#ToDo: Add support for piping Get-Program to Uninstall-Program (without selecting the name specicially) -#ToDo: Although using Function Get-ProgramUsingWmi is significantly slower, the object returns supports an Uninstall() method. -Function Uninstall-Program{ - [CmdletBinding()] param([Parameter(Mandatory, ValueFromPipeline=$True)]$Programs) - foreach($program in $Programs) { - - - if($Program -is [string]) { - $Program = Get-Program $Program; # Note: This converts program from a string to a PSCustomObject - if(!$Program) { - Throw "Cannot find path '$program' because it does not exist." - } - } - elseif ($Program -isnot [PSCustomObject] -or (!($Program | Get-Member "UninstallString"))){ - throw "`$Program is not a valid type and doesn't support an UninstallString property" - } - - - #Invoke Uninstall Command Directly - $uninstallString = $Program.UninstallString - Write-Verbose "Invoke-Expression $uninstallString" - - #If(Test-Path $uninstallString) { - # $uninstallString = (Resolve-Path $uninstallstring).Path - # $uninstallString = "`"$uninstallString`"" - #} - - try { - Invoke-Uninstall $uninstallString - } - catch [System.Management.Automation.CommandNotFoundException] { - #Try uninstall using WMI - $wmiProgramEntry = Get-ProgramUsingWmi $Program.Name - $wmiProgramEntry.Uninstall - } - } -} - -#REG QUERY HKLM\SOFTWARE /f Uninstall /k /S /e - - Function Get-TempPath() { - if(Test-Path "c:\Data\Temp") { - $tempPath = "C:\Data\Temp" - } - else { - $tempPath = $env:Temp - } - return $tempPath -} - - - -if(Get-Command 'choco' -ErrorAction Ignore) { - Function Install-WebDownload { - [CmdletBinding(SupportsShouldProcess)] - param( - [parameter(Mandatory=$true, Position=0)][string] $packageName, - [parameter(Mandatory=$false, Position=1)] - [alias("installerType","installType")][string] $fileType = 'exe', - [parameter(Mandatory=$false, Position=2)][string[]] $silentArgs = '', - [parameter(Mandatory=$false, Position=3)][string] $url = '', - [parameter(Mandatory=$false, Position=4)] - [alias("url64")][string] $url64bit = '', - [parameter(Mandatory=$false)] $validExitCodes = @(0), - [parameter(Mandatory=$false)][string] $checksum = '', - [parameter(Mandatory=$false)][string] $checksumType = '', - [parameter(Mandatory=$false)][string] $checksum64 = '', - [parameter(Mandatory=$false)][string] $checksumType64 = '', - [parameter(Mandatory=$false)][hashtable] $options = @{Headers=@{}}, - [alias("fileFullPath")][parameter(Mandatory=$false)][string] $file = '', - [alias("fileFullPath64")][parameter(Mandatory=$false)][string] $file64 = '', - [parameter(Mandatory=$false)] - [alias("useOnlyPackageSilentArgs")][switch] $useOnlyPackageSilentArguments = $false, - [parameter(Mandatory=$false)][switch]$useOriginalLocation, - [parameter(ValueFromRemainingArguments = $true)][Object[]] $ignoredArguments - ) - - - - if($PSCmdlet.ShouldProcess('Install-ChocolateyPackage')) { - Set-WindowsDefaultSecurityProtocol - Set-ChocolateyAllowEmptyChecksum -Value Disable - ChocolateyInstaller\Install-ChocolateyPackage @PSBoundParameters - } - } - - Function Set-WindowsDefaultSecurityProtocol { - [CmdletBinding()] - param( - [switch]$Persist=$false - ) - - if($Persist) { - new-itemproperty -path "HKLM:\SOFTWARE\Microsoft\.NETFramework\v4.0.30319" -name "SchUseStrongCrypto" -Value 1 -PropertyType "DWord"; - new-itemproperty -path "HKLM:\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v4.0.30319" -name "SchUseStrongCrypto" -Value 1 -PropertyType "DWord" - } - - # Sets the protocol temporarily (for the life of the PowerShell Session.) - # To address the issue:"Invoke-WebRequest : The request was aborted: Could not create SSL/TLS secure channel." - # https://stackoverflow.com/questions/28286086/default-securityprotocol-in-net-4-5/28502562#28502562 - # https://stackoverflow.com/questions/41618766/powershell-invoke-webrequest-fails-with-ssl-tls-secure-channel - [Net.ServicePointManager]::SecurityProtocol = - [Net.SecurityProtocolType]::Tls12 -bor ` - [Net.SecurityProtocolType]::Tls11 -bor ` - [Net.SecurityProtocolType]::Tls - } - - - Function Set-ChocolateyFeature { - [CmdletBinding(SupportsShouldProcess)] - param( - [Parameter(Mandatory,ValueFromPipeline)][string[]]$Feature, - [ValidateSet('Enable','Disable')][Parameter(Mandatory)][string]$Value, - [switch]$Persist - ) - - PROCESS { - $Feature | ForEach-Object { - if($PSCmdlet.ShouldProcess("$Value Chocolatey Feature $Feature")) { - Write-Progress -Activity 'Installing and Configuring Chocolatey' -Status "Configuring $_" - if($Persist) { - Write-Host "Configuring chocolatey with option $_" - choco feature enable -n $_ - } - #Set environment variables so the above options are true when directly calling Chocolatey functions/commands: - [Environment]::SetEnvironmentVariable("Chocolatey$_", $true) - } - } - } - } - - Function Set-ChocolateyAllowEmptyChecksum { - [CmdletBinding()] - param( - [ValidateSet('Enable','Disable')][Parameter(Mandatory)]$Value='Disable', - [switch]$Persist=$false - ) - - 'AllowEmptyChecksums', 'AllowEmptyChecksumsSecure' | Set-ChocolateyFeature -Value $Value -Persist:$Persist - } -} -else { - Function Install-WebDownload { - [CmdletBinding()] param( - [Parameter(Mandatory)][alias("Uri")][string] $url, - [Parameter(Mandatory)][string] $PackageName, - [Parameter(ParameterSetName="CommandLine")] [string] $arguments = $null, - [Parameter(ParameterSetName="ScriptBlock")][ScriptBlock] $postDownloadScriptBlock, - [Parameter(ParameterSetName="UnattendedSilentSwitchFinder", - HelpMessage="Lookup the unattended silent switch for the setup program.")][switch]$ussf, - [string] $installFileName = [System.Management.Automation.WildcardPattern]::Escape((Split-Path $url -Leaf)), - [switch]$forceDownload ) - - Function Install-WebDownloadOfZip { - [CmdletBinding()] - param( - [Parameter(Mandatory)][string] $PackageName, - [Parameter(Mandatory)][alias("Uri")][string] $url, - $UnzipLocation = "$env:ChocolateyInstall\lib\$PackageName" - ) - - Import-ChocolateyModule - - try { - # Needed because Chocolatey is not setting up context. - if(!(test-path variable:\helpersPath)) { - $setHelpersPath = $true - $global:helpersPath = $env:ChocolateyInstall - } - Install-ChocolateyZipPackage -packageName $PackageName -url $url -unzipLocation $UnzipLocation -specificFolder '' - Get-ChildItem $UnzipLocation *.exe | %{ Install-BinFile -name TrayIt -path $_.FullName } - } - finally { - if($setHelpersPath) { - remove-item variable:\global:helpersPath - } - } - } - - #TODO Switch to Get-ChocolateyWebFile and use Invoke-WebRequest as fallback. - $tempPath = Get-TempPath - - if([IO.Path]::GetExtension($InstallFileName) -eq ".zip") { - Install-WebDownloadOfZip -Uri $url -packageName $PackageName - } - else { - $installFileName = Join-Path $tempPath $installFileName - - if($forceDownload -OR ($installFileName -eq "Setup.exe") -OR !(Test-Path $installFileName) ) { - Invoke-WebRequest $url -OutFile $installFileName - } - - if($ussf) { - ussf $installFileName - } - else { - If( ([string]::IsNullOrWhiteSpace($PsCmdlet.ParameterSetName)) -or ($PsCmdlet.ParameterSetName -eq "CommandLine") ) { - $postDownloadScriptBlock = [ScriptBlock] { - $process = Start-Process $installFileName $arguments -PassThru -wait - return $process.ExitCode - } - } - } - Write-Output (Invoke-Command $postDownloadScriptBlock) - } - } -} - - -Function InfInstall([Parameter(Mandatory)][string] $InfFilePath) -{ - [System.Diagnostics.Process]::Start($ENV:SystemRoot + "\System32\rundll32.exe", "setupapi,InstallHinfSection DefaultInstall 132 " + $InfFilePath) #> null -} - -Function New-WindowsShortcut { -[CmdletBinding()] param( - [String] $Path, - [string] $TargetPath, - [String] $Arguments = "", - [string]$Shorcutkey) - - #TODO: See http://poshcode.org/2493 in combination with the following for administrator mode: - # $shortcut = Get-Link -Path '.\shortcut.lnk' - # $shortcut.Flags = $shortcut.Flags -bor [Huddled.Interop.ShellLinkFlags]::RunasUser - # $shortcut.Save() - $WshShell = New-Object -ComObject Wscript.Shell - if([io.path]::GetExtension($Path) -ne ".lnk") { - $Path = "$Path" + ".lnk" - } - $shortcut = $WshShell.CreateShortcut($Path); - $shortcut.TargetPath = $TargetPath - $shortcut.Arguments = $Arguments - $shortcut.Hotkey = $Shorcutkey - Write-Warning "Shortcut keys not currently working." #TODO - $shortcut.Save() -} - -Function Expand-ZipFile { - [CmdletBinding()] param( - [Parameter(mandatory=$true, ValueFromPipeline=$true, ParameterSetName='FileInfo')][IO.FileInfo]$InputObject, - [Parameter(mandatory=$true, ValueFromPipeline=$true, ParameterSetName='Path')][String]$Path, - [Parameter(Position=2)][string]$outputPath = $pwd) - Add-Type -AssemblyName System.IO.Compression.FileSystem - if($path) { - $InputObject = Get-Item $path - } - if(!(Test-Path $InputObject)) { - Throw "Unable to find file: '$inputObject'" - } - [System.IO.Compression.ZipArchive]$zipFile = [System.IO.Compression.ZipFile]::Open( $InputObject, "Read" ) - [System.IO.Compression.ZipFileExtensions]::ExtractToDirectory( $zipFile, $outputPath) - $zipFile.Dispose() - Return (Get-Item $outputPath) -} - -Function New-AppPath { - [CmdletBinding()] param( - [Alias("FullName")][Parameter(ValueFromPipelineByPropertyName)][string] $path, - [switch]$Force, - [switch]$Confirm) - $registryPath = "`"HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\$(Split-Path $path -Leaf)`"" - Write-Host "`$Path=$path, `$registryPath=$registryPath" - Invoke-Expression "New-Item -Path $registryPath -Value $path $(if($force){'-Force'})$(if($Confirm){'-Confirm'})" -} -#dir 'C:\Program Files\sysinternals' 'zoomit.exe' | New-AppPath -Force - -Function Remove-AppPath { - [CmdletBinding()] param( - [Parameter(ValueFromPipeline)][string] $path) - $registryPath = "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\$(Split-Path $path -Leaf)" - Remove-Item -Path $registryPath -} - -#Doesn't work... why? -Function Select-AllButLast { - [CmdletBinding()] param( - [parameter(ValueFromPipeline=$true)]$inputObject, - [int]$n) - if($inputObject.PSObject.Properties.Match('Count')) { - $count = $inputObject.Count; - } - else { - $count = ($inputObject | Measure-Object).Count - } - Return $inputObject | Select-Object -First ($count-$n) -} -<# -Describe "Select-AllButLast" { - It "Return all lines" { - $items = 0..9 - $result = Select-AllButLast -InputObject $items -n 0 - $result.Count | Should Be 10 - $Result -notcontains 9 | Should Be True - $Result -contains 0 | Should Be True - } -} -#> - -<# -.SYNOPSIS -Executes a cmd.exe command that returns a PSCustomObject where = -.EXAMPLE -PS C:\> Invoke-CmdWithPairResultSplitWithEquals assoc .txt | write-host -Returns a PSCustomObject of @{First=.txt; Second=txtfile} -.EXAMPLE -PS C:\> Invoke-CmdWithPairResultSplitWithEquals ftype | Select-Object -First 5 - -Returns All the ftype results as follows: - First Second - ----- ------ - Access C:\Program Files\Microsoft Office 15\Root\Office15\protocolhandler.exe "%1" - Access.ACCDAExtension.15 C:\Program Files\Microsoft Office 15\Root\Office15\MSACCESS.EXE /NOSTARTUP "%1" - Access.ACCDCFile.15 "C:\Program Files\Microsoft Office 15\Root\Office15\MSACCESS.EXE" /NOSTARTUP "%1" - Access.ACCDEFile.15 "C:\Program Files\Microsoft Office 15\Root\Office15\MSACCESS.EXE" /NOSTARTUP "%1" %2 %3 %4 %5 %6 %... - Access.ACCDRFile.15 "C:\Program Files\Microsoft Office 15\Root\Office15\MSACCESS.EXE" /RUNTIME "%1" %2 %3 %4 %5 %6 %7 ... -#> -Function script:Invoke-CmdWithPairResultSplitWithEquals { - [CmdletBinding()] param ( - # The DOS command to execute. The command must return an = result such as the assoc or ftype commands do. If there are multiple results, the must be on separate lines. - [parameter(Mandatory)][string] $command, - # The file extension(s) to retrieve. If no period prefix, one is automatically added. - [parameter(ValueFromPipeline)][string] $argumentList = "" - ) - - #Function Test-IgnoreAction() { $error.Clear();if(-not $?) {write-host "ERRORS"}; $PSDefaultParameterValues['*:ErrorAction']="SilentlyContinue"; $result = & cmd.exe /c assoc .MissingExtension; };Test-IgnoreAction - - try { - $result = & cmd.exe /c $command $argumentList 2>&1 - } - catch { $result = $_ } - - if($result.GetType() -eq [System.Management.Automation.ErrorRecord]) { - throw $result[0].Exception - } - else { - $result | %{ - #Success - $first,$second = ($_ -split '=') - Write-Output ([PSCustomObject] @{ - First = $first; - Second = $second - }) - } - - } -} - - -#TODO Write Test -<# -.SYNOPSIS -Retrieve the file association for the specified extension(s). -.EXAMPLE -PS C:\> Get-FileAssociation .txt -Returns Text Document (txtfile). -#> -Function Get-FileAssociation { - [CmdletBinding()] param ( - # The file extension(s) to retrieve. If no period prefix, one is automatically added. - [parameter(ValueFromPipeline)][string[]] $Extension - ) - PROCESS { - $Extension | %{ - - $item = $_ - if(-not $item) { $item = "" } - elseif(-not($item.StartsWith("."))){ - #Prefix with a period. - $item = ".$_" - } - - if([System.Management.Automation.WildcardPattern]::ContainsWildcardCharacters($item)) { - #Only perform a full lookup for the specified items (rather than all of them). - Invoke-CmdWithPairResultSplitWithEquals assoc | ?{ - $_.First -like $item - } | %{ - Get-FileAssociation $_.First - } - } - else { - try{ - #Note: $errorAction not working in advanced functions with PowerShell 4 (see https://connect.microsoft.com/PowerShell/feedback/details/763621/erroraction-ignore-is-broken-for-advanced-functions) - $fileAssociation = Invoke-CmdWithPairResultSplitWithEquals assoc $item - $fileAssociation | %{ - $fileType = try{ Invoke-CmdWithPairResultSplitWithEquals "assoc" $_.Second } - catch [System.Management.Automation.RuntimeException] { - if($_.Exception.Message -like "File association not found for extension*") { <# ignore #> } - else { throw } - } - try{ $fileTypeCommand = Invoke-CmdWithPairResultSplitWithEquals ftype $_.Second } - catch [System.Management.Automation.RuntimeException] { - if($_.Exception.Message -like "File type * not found or no open command associated with it.") { <# ignore #> } - else { throw } - } - Write-Output ([PSCustomObject]@{ - Name = if($fileType){$fileType.Second}; - Extension = $item; - FileType = $_.Second; - Command = if($fileTypeCommand) {$fileTypeCommand.Second}; - }) - } - } - catch [System.Management.Automation.RuntimeException] { - if($ErrorActionPreference -ne "Ignore") { - Throw $_.Exception.Message - } - } - #If there is still an error as a result... then give up (returning nothing). - } - } - } -} -Set-Alias Assoc Get-FileAssociation - - -<# -.SYNOPSIS -Creates an association between a file extension and a executable - -.DESCRIPTION -Install-ChocolateyFileAssociation can associate a file extension -with a downloaded application. Once this command has created an -association, all invocations of files with the specified extension -will be opened via the executable specified. - -This command will run with elevated privileges. - -.PARAMETER Extension -The file extension to be associated. - -.PARAMETER Executable -The path to the application's executable to be associated. - -.EXAMPLE -C:\PS>$sublimeDir = (Get-ChildItem $env:systemdrive\chocolatey\lib\sublimetext* | select $_.last) -C:\PS>$sublimeExe = "$sublimeDir\tools\sublime_text.exe" -C:\PS>Install-ChocolateyFileAssociation ".txt" $sublimeExe - -This will create an association between Sublime Text 2 and all .txt files. Any .txt file opened will by default open with Sublime Text 2. -#> -Function Set-FileAssociation { - # Started with (get-command Install-ChocolateyFileAssociation).Definition - [CmdletBinding()] param ( - # The file extension (s) to retrieve - [parameter(ValueFromPipeline,Mandatory)][string[]] $extension, - [ValidateScript({Test-Path $_ -PathType Leaf})][parameter(ValueFromPipeline,Mandatory)][string[]] $executable - ) - $extension=$extension.trim() - if(-not($extension.StartsWith("."))) { - $extension = ".$extension" - } - $fileType = Split-Path $executable -leaf - $fileType = $fileType.Replace(" ","_") - $elevated = [scriptblock]{ "cmd /c 'assoc $extension=$fileType';cmd /c 'ftype $fileType=\`"$executable\`" \`"%1\`" \`"%*\`"'" } - Start-ProcessAsAdmin $elevated -} - - -Function Start-ProcessAsAdmin() { -param( - [Parameter(ParameterSetName="Scriptblock")][string] $scriptBlock, - [ValidateScript({(Get-Command $_).CommandType -eq "Application"})][Parameter(ParameterSetName="Application")][string] $executable, - [Parameter(ParameterSetName="Application")][string] $argumentList, - [switch] $minimized, - [switch] $noSleep, - $validExitCodes = @(0) -) - # Started with (get-command Start-ChocolateyProcessAsAdminn).Definition - - if($PsCmdlet.ParameterSetName -eq "scritpblock") { - $executable = "PowerShell" - $argumentList = "-command {$scriptBlock}" # Consider alternative: "-command `"& {$scriptBlock}`"" - } - - $filePath = (Get-Command $executable).Path - $result = Write-Progress -activity "Elevating Permissions and running $filePath $wrappedStatements." - - $psi = new-object System.Diagnostics.ProcessStartInfo; - $psi.FileName = $filePath; - $psi.Arguments = "$argumentList"; - - if ([Environment]::OSVersion.Version -ge (new-object 'Version' 6,0)){ - $psi.Verb = "runas"; - } - - $psi.WorkingDirectory = get-location; - - if ($minimized) { - $psi.WindowStyle = [System.Diagnostics.ProcessWindowStyle]::Minimized; - } - - $s = [System.Diagnostics.Process]::Start($psi); - $s.WaitForExit(); - if ($validExitCodes -notcontains $s.ExitCode) { - throw "[ERROR] Running $filePath with $statements was not successful. Exit code was `'$($s.ExitCode)`'." - } -} - -Function Optimize-ProgramEnvironmentPath { - [CmdletBinding()]param( - ) - $hklmPaths = (Get-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" "Path" | - select -ExpandProperty Path) -split ';' | - %{ $_ -replace "WINDOWS","Windows" } | - select -unique | - ?{ $_.Trim().Length -gt 0 } - - #Identify the older SQL Server paths - $olderSqlPaths = $hklmPaths | ?{ $_ -like "$env:ProgramFiles\Microsoft SQL Server\*" } | sort -Descending | select -Skip 1 - $hklmPaths = $hklmPaths | ?{ $_ -notin $olderSqlPaths } - - $hkcuPaths = (Get-ItemProperty "hkcu:\Environment" "Path" | - select -ExpandProperty Path) -split ';' | - %{ $_ -replace "WINDOWS","Windows" } | - select -unique | - ?{ $_.Trim().Length -gt 0 } - - $hklmPaths = { $hklmPaths }.Invoke() #Convert the collection to support Add()/Remove() - $hkcuPaths = { $hkcuPaths }.Invoke() #Convert the collection to support Add()/Remove() - $hkcuPaths = $hkcuPaths | ?{ - if($_ -like "*SysInternals*") { - $hklmPaths.Add($_) #TODO: Remove potential that the item could be added more than once - } - else { $true } - } - - Set-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" "Path" -Value ($hklmPaths -join ';') - Set-ItemProperty "hkcu:\Environment" "Path" -Value ($hkcuPaths -join ';') -} - -Function Test-ProgramEnvironmentPath { - [CmdletBinding()]param( - ) - $result = $true; - $paths = (Get-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Environment","hkcu:\Environment" "Path" | - select -ExpandProperty Path) -split ';' - - $paths | - %{ $_ -replace "WINDOWS","Windows" } | - Group-Object | select name,count | - ?{ $_.count -gt 1 } | - %{ - $result = $false - Write-Warning "$($_.Name) appears $($_.Count) times." - } - $olderSqlPaths = $paths | ?{ $_ -like "$env:ProgramFiles\Microsoft SQL Server\*" } - if(Compare-Object $olderSqlPaths ($olderSqlPaths | sort -Descending) -SyncWindow 0) { - $result = $false - Write-Warning "There are multiple SQL Server paths and they are not in descending order: `n`t$($olderSqlPaths -join "`n`t")" - - } - - return $result; -} \ No newline at end of file diff --git a/Functions/PushBullet.ps1 b/Functions/PushBullet.ps1 deleted file mode 100644 index 57cdb00..0000000 --- a/Functions/PushBullet.ps1 +++ /dev/null @@ -1,165 +0,0 @@ -<# -.Synopsis - Use this Function to use the pushbullet service to send push messages to your browser, computer or device -.DESCRIPTION - *****To use this function, you must register for a PushBullet account and copy your API key from under 'Account Settings' - - *****As of this release (Halloween Day, 2014) Lists and File Upload support are not yet functional - - Use this Function as a stand-alone push service, or embed within your other functions to perform dynamic messaging as needed - - -.EXAMPLE - Send-PushMessage -msg "Hello world" -title "Mandatory first message text" - - #You will receive a push message on all of your configured devices with a "Hello World" message - -.EXAMPLE - get-winevent -LogName System | Select -first 1500 | ? Id -eq '1074' | % {Send-PushMessage -Title "Reboot detected on System" -msg ("Reboot detected on " + $_.MachineName + "@ " + $_.TimeCreated) -Type Message} - - - #In this more complex scenario, if an event of 1074 (System Reboot) is noted within the most recent 1500 events, send a message using PushBullet with information from the event. -.NOTES - If this function halts with a Warning message of "Please place your API Key within line 48 and try again", be certain to provide your API key on line 48. - - see http://foxdeploy.com/functions/powerbullet-pushbullet-for-powershell/. -#> -Function Send-PushMessage { -[CmdletBinding(DefaultParameterSetName='Message')] - - -param( - [Parameter(Mandatory=$false,ParameterSetName="File")]$FileName, - [Parameter(Mandatory=$true, ParameterSetName="File")]$FileType, - [Parameter(Mandatory=$true, ParameterSetName="File")] - [Parameter(Mandatory=$true, ParameterSetName="Link")]$url, - - [Parameter(Mandatory=$false,ParameterSetName="Address")]$PlaceName, - [Parameter(Mandatory=$true, ParameterSetName="Address")]$PlaceAddress, - - [Parameter(Mandatory=$false)] - [ValidateSet("Address","Message", "File", "List","Link")] - [Alias("Content")] - $Type, - - [switch]$UploadFile, - [string[]]$items, - $title="PushBullet Message", - $msg) -begin{ - $api = "***YourAPIHere***" - $PushURL = "https://api.pushbullet.com/v2/pushes" - $devices = "https://api.pushbullet.com/v2/devices" - $uploadRequestURL = "https://api.pushbullet.com/v2/upload-request" - $uploads = "https://s3.amazonaws.com/pushbullet-uploads" - - $cred = New-Object System.Management.Automation.PSCredential ($api,(ConvertTo-SecureString $api -AsPlainText -Force)) - - if (($PlaceName) -or ($PlaceAddress)){$type = "address"} - - if ($api -eq "***YourAPIHere***"){Write-warning "Please place your API Key within line 48 and try again" - BREAK} - } - -process{ - - switch($Type){ - 'Address'{Write-Verbose "Sending an Address"<#SendaMessagestuff#> - $body = @{ - type = "address" - title = $Placename - address = $PlaceAddress - } - } - 'Message'{Write-Verbose "Sending a message"<#SendaMessagestuff#> - $body = @{ - type = "note" - title = $title - body = $msg - } - } - 'List' {Write-Verbose "Sending a list "<#SendaListstuff#> - $body = @{ - type = "list" - title = $title - items = $items - - } - - "body preview" - $body - #$body = $body | ConvertTo-Json - } - 'Link' {Write-Verbose "Sending a link "<#SendaLinkstuff#> - $body = @{ - type = "link" - title = $title - body = $msg - url = $url - } - - } - 'File' {Write-Verbose "Sending a file "<#SendaFilestuff#> - - If ($UploadFile) { - $UploadRequest = @{ - file_name = $FileName - fileType = $FileType - } - - #Ref: Pushing files https://docs.pushbullet.com/v2/pushes/#pushing-files - # "Once the file has been uploaded, set the file_name, file_url, and file_type returned in the response to the upload request as the parameters for a new push with type=file." - - #Create Upload request first - $attempt = Invoke-WebRequest -Uri $uploadRequestURL -Credential $cred -Method Post -Body $UploadRequest -ErrorAction SilentlyContinue - If ($attempt.StatusCode -eq "200"){Write-Verbose "Upload Request OK"} - else {Write-Warning "error encountered, check `$Uploadattempt for more info" - $global:Uploadattempt = $attempt} - - #Have to include the data field from the full response in order to begin an upload - $UploadApproval = $attempt.Content | ConvertFrom-Json | select -ExpandProperty data - - #Have to append the file data to the Upload request - $UploadApproval | Add-Member -Name "file" -MemberType NoteProperty -Value ([System.IO.File]::ReadAllBytes((get-item C:\TEMP\upload.txt).FullName)) - - #Upload the file and get back the url - #$UploadAttempt = - #Invoke-WebRequest -Uri $uploads -Credential $cred -Method Post -Body $UploadApproval -ErrorAction SilentlyContinue - #Doesn't work...maybe invoke-restMethod is the way to go? - - Invoke-WebRequest -Uri $uploads -Method Post -Body $UploadApproval -ErrorAction SilentlyContinue - #End Of Upload File scriptblock - } - Else { - #If we don't need to upload the file - - $body = @{ - type = "file" - file_name = $fileName - file_type = $filetype - file_url = $url - body = $msg - } - - } - $global:UploadApproval = $UploadApproval - BREAK - #End of File switch - - } - #End of Switch Statement - } - - write-debug "Test-value of `$body before it gets passed to Invoke-WebRequest" - - $Sendattempt = Invoke-WebRequest -Uri $PushURL -Credential $cred -Method Post -Body $body -ErrorAction SilentlyContinue - - If ($Sendattempt.StatusCode -eq "200"){Write-Verbose "OK"} - else {Write-Warning "error encountered, check `$attempt for more info" - $global:Sendattempt = $Sendattempt } - } - -end{$global:Sendattempt = $Sendattempt} - - -} \ No newline at end of file diff --git a/Functions/Reflection.ps1 b/Functions/Reflection.ps1 deleted file mode 100644 index 2e34a4a..0000000 --- a/Functions/Reflection.ps1 +++ /dev/null @@ -1,56 +0,0 @@ -[CmdletBinding()]param( - -) - - -Function Get-Type([Parameter(ValueFromPipeline=$true)]$value) { - PROCESS { - Write-Output $value.GetType(); - } -} - - -Function Test-IsStaticType { - [CmdletBinding()]param( - [Parameter(Mandatory, ValueFromPipeline)][Type]$Type, - [bool]$IsPublic = $true #ToDo: Add pipe and mandetory - ) - return ($Type.IsSealed -and $Type.IsAbstract) -and ($IsPublic -and $Type.IsPublic) # -and (!$Type.IsValueType) -and $Type.IsPublic -} - - -#ToDo: Convert to support Get-Member output of type Microsoft.PowerShell.Commands.MemberDefinition (possibly in addition to MethodInfo support) -Function Test-IsExtensionMethod { - [CmdletBinding()]param( - [Parameter(Mandatory, ValueFromPipeline)][System.Reflection.MethodInfo]$Method - ) - return $Method.IsStatic -and ($Method.CustomAttributes.Count -gt 0) -and - ($Method.CustomAttributes.AttributeType -contains [System.Runtime.CompilerServices.ExtensionAttribute] ) -} - - -Function Get-ReflectionExtensionMemebers { - [CmdletBinding()]param( - [Parameter(Mandatory, ValueFromPipeline)][Type]$Type - ) - - $Type.GetMethods() | ?{ Test-IsExtensionMethod $_ } -} - -<# -[reflection.assembly]::GetAssembly([system.console]).GetTypes() | ?{ Test-IsStaticType $_ } | %{ - $methods = $_.GetMethods() | ?{ -not (Test-IsExtensionMethod $_) } | ?{ $_.IsStatic } - $properties = $null; - if($_.GetProperties().Length -gt 0) { - $properties = $_ | Get-Member -Static -MemberType Property - } - if( ($methods -ne $null) -and ($properties -ne $null) ) { - Write-OUtput $_.FullName # -ForegroundColor Green - $methods | select -ExpandProperty name | select -unique | ?{ - ($_ -notlike "get_*") } | ?{ ($_ -notlike "set_*") - } | %{ - #Write-Host "`t$($_)" -ForegroundColor White - } - } -} -#> \ No newline at end of file diff --git a/Functions/TCX.ps1 b/Functions/TCX.ps1 deleted file mode 100644 index 6fd8aa4..0000000 --- a/Functions/TCX.ps1 +++ /dev/null @@ -1,42 +0,0 @@ - - - -Function Join-TCXFile { - [CmdletBinding()]param( - [string]$firstFile, - [string]$secondFile) - [XML]$firstXml = Get-Content $firstFile - [XML]$secondXml = Get-Content $secondFile - [double]$firstLastTrackPointDistanceMeters = Get-TcxDistance $firstXml - #Add the total distance in the first file to the distances in the second file - $secondXML.TrainingCenterDatabase.Activities.Activity.Lap.Track.TrackPoint | ` - #Some nodes (specifically the first one) don't have a DistanceMeters node so ignore it. - ?{ ($_.PSObject.Properties.Match('DistanceMeters').Count) } | ` - #Add the distance from the first file to each of the distance elements in the second - %{ $_.DistanceMeters = ([long]$_.DistanceMeters + $firstLastTrackPointDistanceMeters).ToString() } > $null - - $parentActivity = $firstXML.TrainingCenterDatabase.Activities.Activity - - $secondXML.TrainingCenterDatabase.Activities.Activity.Lap | %{ - $node = $firstXml.ImportNode($_, $true) - $parentActivity.AppendChild($node) - } > $null - return $firstXml -} - -Function Get-TcxDistance { - [CmdletBinding()]param( - [XML]$tcxContent) - Return [double]($tcxContent.TrainingCenterDatabase.Activities.Activity.Lap.Track.TrackPoint | Select-Object -last 1 -ExpandProperty DistanceMeters) -} - -Function Get-TcxLap { - [CmdletBinding(DefaultParameterSetName="path")] param( - [Parameter(ParameterSetName='path', Mandatory)][ValidateScript({Test-Path $_})][string]$path, #ToDo: Improve the error message when the path does not exist. - [Parameter(ParameterSetName='xml', Mandatory)][ValidateNotNullOrEmpty()][Xml]$xml) - - if($psCmdlet.ParameterSetName -ne 'xml') { - $xml = ([Xml](Get-Content $path)) - } - Return $xml.TrainingCenterDatabase.Activities.Activity.Lap -} \ No newline at end of file diff --git a/Functions/TFS.ps1 b/Functions/TFS.ps1 deleted file mode 100644 index e458ac2..0000000 --- a/Functions/TFS.ps1 +++ /dev/null @@ -1,178 +0,0 @@ -Set-StrictMode -Version Latest - -Function Script:Get-TfsRestCredentialHeaders { - [CmdletBinding()]param( - [Parameter(Mandatory)][PSCredential]$credential - ) - $username = $credential.GetNetworkCredential().username - $password = $credential.GetNetworkCredential().password - - $basicAuth = ("{0}:{1}" -f $username,$password) - $basicAuth = [System.Text.Encoding]::UTF8.GetBytes($basicAuth) - $basicAuth = [System.Convert]::ToBase64String($basicAuth) - $headers = @{Authorization=("Basic {0}" -f $basicAuth)} - return $headers -} - - -Function Get-TfsQuery { - [CmdletBinding()] param( - [Parameter(Mandatory)][string] $collection, - [Parameter(Mandatory)][PSCredential]$credential, - [Parameter(Mandatory)][string]$project, - [string]$Filter = "*", - [string]$Url - ) - $headers = Script:Get-TfsRestCredentialHeaders $credential - - if(!$url) { - $Url = "$collection/_apis/wit/queries?project=$project" - } - - $RootRestResult = Invoke-RestMethod -Uri $Url -headers $headers -Method Get -Verbose # -Body $body -ContentType "application/json" - $queries = $RootRestResult.value | ?{$_.value.Count -gt 0} | %{ $_.value | Add-Member -NotePropertyName "Folder" -NotePropertyValue $_.name; $_.value } - $queries = $queries | ?{ $_.name -like $filter } - return $queries -} - -Function Get-TfsWorkItemId { - [CmdletBinding()]param( - [Parameter(Mandatory)][string] $collection, - [Parameter(Mandatory)][string]$Project, - [Parameter(Mandatory)][PSCredential]$credential, - [string]$Url = $null, - [Guid]$QueryId, - [string]$TitleFilter, - [string]$isActive = $true - ) - - if($QueryId) { - $hash = @{ - Id = $QueryId} - } - else { - $query = Select [System.Id] From WorkItems WHERE [System.TeamProject] = @project - if($TitleFilter) { - $query += " AND [System.Title] = `"$TitleFilter`"" - } - if($isActive) { - $query += " AND [System.State] <> `"Removed`"" - } - $hash = @{ - wiql = $query} - } - - [string]$body = ConvertTo-Json $hash - - $headers = Script:Get-TfsRestCredentialHeaders $credential - [int[]]$workItemIds = Invoke-RestMethod -Uri "$collection/_apis/wit/queryresults?@project=$Project" -headers $headers -Method Post -Verbose -Body $body -ContentType "application/json" | - Select -ExpandProperty Results | Select -ExpandProperty sourceId - - return $workItemIds -} - -Function Get-TfsWorkItem { - [CmdletBinding()]param( - [Parameter(Mandatory)][string]$Project, - [Parameter(Mandatory)][string] $collection, - [Parameter(Mandatory)][PSCredential]$credential, - [string]$Url = $null, - [Parameter(Mandatory, ValueFromPipeline=$true)][int]$workItemIds, - [string[]]$fields - ) - - #ToDO - clean up. - [string]$workItemIdsText = $workItemIds -join "," - $uri = "https://IntelliTect.visualstudio.com/defaultcollection/_apis/wit/workitems?ids=$workItemIdsText" - if($fields) { - $uri += "&fields=$($fields -join `",`")" - } - - $headers = Script:Get-TfsRestCredentialHeaders $credential - $result = Invoke-RestMethod -Uri $uri -headers $headers -Verbose - #Return Invoke-RestMethod -Uri "$collection/_apis/wit/workitems/99" -headers $headers -Method Get - return $result.value -} - - -#$Credential = Get-CredentialManagerCredential.ps1 IntelliTect.VisualStudio.com -#Get-WorkItem "HTTPS://IntelliTect.VisualStudio.com/DefaultCollection" $Credential "https://{account}.visualstudio.com/defaultcollection/_apis/wit/queryresults" - -<# Function Copy-TfsWorkItem( - [Parameter(Mandatory)][string]$sourceProject, - [Parameter(Mandatory)][string] $sourceCollection, - [Parameter(Mandatory)][PSCredential]$sourceCredential, - [Parameter(Mandatory)][string]$targetProject, - [Parameter(Mandatory)][string] $targetCollection, - [Parameter(Mandatory)][PSCredential]$targetCredential, - [string]$workItemFieldsInJson - ) { - $soureHeaders = Script:Get-TfsRestCredentialHeaders $sourceCredential - $targetHeaders = Script:Get-TfsRestCredentialHeaders $targetCredential - -} #> - -Function New-TfsWorkItem { - [CmdletBinding()]param( - [Parameter(Mandatory)][string]$Collection, - [Parameter(Mandatory)][string]$Project, - [Parameter(Mandatory)][PSCredential]$Credential, - [Parameter(Mandatory)][PSCustomObject]$workItem - ) - - $title = $workItem.fields | ?{ $_.field.refName -eq "System.Title"} | Select -ExpandProperty value; - $existingWorkItemIds = Get-TfsWorkItemId -collection $collection -Project $Project -credential $credential -TitleFilter $title - if($existingWorkItemIds.Count -gt 0) { - #try { - Throw [System.ArgumentException] "Work item `"$title`" already exists `(see Work Item id#(s): $($existingWorkItemIds -join ", ")`)" - <#} - catch [System.ArgumentException] { - $exception = $_ - Throw - }#> - } - - #Freezes so using for loop instead. - for($counter=0;$counter -lt $workItem.fields.count-1;$counter++) { - if($workItem.fields[$counter].field.refName -in "System.IterationPath","System.AreaPath") { - $workItem.fields[$counter].value = $workItem.fields[$counter].value -replace "^[^\\]+","$Project" - } - elseif($workItem.fields[$counter].field.refName -in ,"System.TeamProject") { - $workItem.fields[$counter].value = $Project - } - #Remove all field entries except the refName. - $workItem.fields[$counter].field = @{ refName=$workItem.fields[$counter].field.refName } - } - $workItem.fields[$workItem.fields.count-1].field = @{ refName=$workItem.fields[$counter].field.refName } - $workItem.fields += [PSCustomObject] @{ field=@{ refName='System.Reason'; }; value='New backlog item' } - - $body = @" - { `"fields`": - $($workItem.fields | ConvertTo-Json) - - } -"@ - - try { - $headers = Script:Get-TfsRestCredentialHeaders $credential - $result = Invoke-RestMethod -Uri "$collection/_apis/wit/workitems" -headers $headers -Method Post -Body $body -ContentType "application/json" -Verbose - } - catch [System.InvalidOperationException] { - if ($_.ErrorDetails) { - $jsonException = ($_.ErrorDetails.Message | ConvertFrom-Json).exception - } - Write-Verbose $body - if( ($jsonException) ` - -AND ( $jsonException.Message -like "TF*") ` - -AND ($jsonException.ClassName -like "*TeamFoundation*") ) { - $exception = New-Object System.Exception "$($_.Exception.Message): $($jsonException.Message)",$_.Exception - Throw $exception - } - else { - #Wrap in an exception otherwise ToString() buries the message. - $exception = New-Object System.Exception "$($_.Exception.Message)",$_.Exception - Throw $exception - } - } - return $result; -} \ No newline at end of file diff --git a/Functions/ToDo.ps1 b/Functions/ToDo.ps1 deleted file mode 100644 index e69de29..0000000 diff --git a/Functions/VSProject.ps1 b/Functions/VSProject.ps1 deleted file mode 100644 index 8126d8d..0000000 --- a/Functions/VSProject.ps1 +++ /dev/null @@ -1,166 +0,0 @@ -Function Get-DotNetProjectFramework { - [CmdletBinding()] - param( - [string]$Path - ) - - [xml]$csproj = Get-Content -Path $Path - $csproj.Project.PropertyGroup.TargetFramework -} -Function Set-DotNetProjectFramework { - [CmdletBinding(SupportsShouldProcess=$true)] - param( - [string]$Path, - [string]$TargetFramework - ) - - [xml]$csproj = Get-Content -Path $Path - $targetFrameworkBefore = $csproj.Project.PropertyGroup.TargetFramework - if($PSCmdlet.ShouldProcess("Change target framework in '$Path' from $targetFrameworkBefore to $TargetFramework")) { - $csproj.Project.PropertyGroup.TargetFramework = $TargetFramework - $csproj.Save($Path) - } -} - - -Function Rename-VSProject { - [CmdletBinding()] param( - [ValidateScript({Test-Path $_ -PathType Leaf})][Parameter(Mandatory)][string] $projFile, - [Parameter(Mandatory)][string] $newProjectName - ) - - $newProjectFile = $projFile -replace ([IO.Path]::GetFileNameWithoutExtension($projFile)),$newProjectName # Use GetFileNameWithoutExtension as Split-Path doesn't do this. - Move-Item (Split-Path $projFile -Parent) (Split-Path $newProjectFile -Parent) #Rename the directory - Move-Item (Join-Path (Split-Path $newProjectFile -Parent) (split-path $projFile -Leaf)) $newProjectFile # Rename the project file - return Get-Item $newProjectFile -} - -Function Update-VSSolution { - [CmdletBinding()] param( - [string] $solutionFilePath, - [string] $projFile, - [string] $newProjectName - ) - $oldProjectName = [IO.Path]::GetFileNameWithoutExtension($projFile) - $oldFileName = Split-Path $projFile -leaf - - (Get-Content $solutionFilePath) |%{ - $_ -replace [System.Text.RegularExpressions.Regex]::Escape("$oldProjectName\$oldFileName"),"$newProjectName\$newProjectName$([IO.Path]::GetExtension($oldFileName))" ` - -replace "`"oldProjectName`"","`"$newProjectName`"" } | Set-Content -Path $solutionFilePath - -} - - -Function Update-ProjectFile { -{ - # see http://dhickey.ie/post/2011/06/03/Rename-a-Visual-Studio-Project-using-PowerShell.aspx - # designed to run from the sln folder - [CmdletBinding()] param( - [string]$projectName=$(throw "projectName required."), - [string]$newProjectName=$(throw "newProjectName required.") - ) - - if(!(Test-Path $projectName)){ - Write-Error "No project folder '$projectName' found" - return - } - - if(!(Test-Path $projectName\$projectName.csproj)){ - Write-Error "No project '$projectName\$projectName.dll' found" - return - } - - if((Test-Path $newProjectName)){ - Write-Error "Project '$newProjectName' already exists" - return - } - - # project - hg rename $projectName\$projectName.csproj $projectName\$newProjectName.csproj - - # folder - hg rename $projectName $newProjectName - - # assembly title - $assemblyInfoPath = "$newProjectName\Properties\AssemblyInfo.cs" - (gc $assemblyInfoPath) -replace """$projectName""","""$newProjectName""" | sc $assemblyInfoPath - - # root namespace - $projectFile = "$newProjectName\$newProjectName.csproj" - (gc $projectFile) -replace "$projectName","$newProjectName" | sc $projectFile - - # assembly name - (gc $projectFile) -replace "$projectName","$newProjectName" | sc $projectFile - - # other project references - gci -Recurse -Include *.csproj |% { (gc $_) -replace "..\\$projectName\\$projectName.csproj", "..\$newProjectName\$newProjectName.csproj" | sc $_ } - gci -Recurse -Include *.csproj |% { (gc $_) -replace "$projectName", "$newProjectName" | sc $_ } - - # solution - gci -Recurse -Include *.sln |% { (gc $_) -replace "\""$projectName\""", """$newProjectName""" | sc $_ } - gci -Recurse -Include *.sln |% { (gc $_) -replace "\""$projectName\\$projectName.csproj\""", """$newProjectName\$newProjectName.csproj""" | sc $_ } -} - -} - -Function Set-VSProjectCodeAnalysis { - [CmdletBinding()] param( - [Parameter(Mandatory, ValueFromPipeline=$True)][string[]] $projectPaths, - [bool] $value = $true) - - PROCESS { - foreach($projectPath in $projectPaths) { - $projectPath = Resolve-Path $projectPath - [XML]$projectXML = Get-Content $projectPath - # TODO: Verify that the first one is the PropertyGroup without any conditionals. - if($projectXml.Project.PropertyGroup[0]["RunCodeAnalysis"] -eq $null) { - $runCodeAnalysisElement = $projectXMl.CreateElement("RunCodeAnalysis", $proj.Project.NamespaceURI ) - $projectXml.Project.PropertyGroup[0].AppendChild($runCodeAnalysisElement) - } - if($projectXml.Project.PropertyGroup[0].RunCodeAnalysis -ne $value.ToString()) { - $projectXml.Project.PropertyGroup[0].RunCodeAnalysis = $value.ToString() - } - # TODO: Refactor to parameterize the added element and value. - if($projectXml.Project.PropertyGroup[0]["CodeAnalysisRuleSet"] -eq $null) { - $codeAnalysisRuleSetElement = $projectXMl.CreateElement("CodeAnalysisRuleSet", $proj.Project.NamespaceURI ) - $projectXml.Project.PropertyGroup[0].AppendChild($codeAnalysisRuleSetElement) - } - if($projectXml.Project.PropertyGroup[0].CodeAnalysisRuleSet -ne "..\Solution.ruleset") { - $projectXml.Project.PropertyGroup[0].CodeAnalysisRuleSet = "..\Solution.ruleset" - } - # TODO: Move this to occur only if an element changes. - $projectXML.Save( $projectPath ) - } - } - -} - - -Function Rename-CompileFile { - [CmdletBinding(SupportsShouldProcess=$true)] param( - [ValidateScript({Test-Path $_ -PathType Leaf})][Parameter(Mandatory)][string] $projFile, - [ValidateScript({Test-Path $_ -PathType Leaf})][Parameter(Mandatory)][string] $oldFileName, - [Parameter(Mandatory)][string] $newFileName - ) - - #TODO: Verify that git is the SCC tool. - #TODO: Add support for TFS. - - $command = "git.exe mv $oldFileName $newFileName $(if($PSBoundParameters['Verbose']) {`"-v`"})" # The following is not needed as it is handled by "$PSCmdlet.ShouldProcess": -What $(if($PSBoundParameters['WhatIf']) {`"--dry-run`"})" - if ($PSCmdlet.ShouldProcess("`tExecuting: $command", "`tExecute git.exe Rename: $command", "Executing Git.exe mv")) { - Invoke-Expression "$command" -ErrorAction Stop #Change error handling to use throw instead. - } - $projFile = Resolve-Path $projFile - $proj = [XML](Get-Content $projFile) - #TODO Add support for subdirectories in the VS path. - $proj.Project.ItemGroup.SelectNodes('//*[local-name()="Compile"]') | - ?{ $_.Include -eq [IO.Path]::GetFileName($oldFileName) } | #TODO: Change to use XPath to find element as this makes no check that the element exists. - %{ $_.Include = [IO.Path]::GetFileName($newFileName) } - if ($PSCmdlet.ShouldProcess( - "`tUpdating $projFile - Renaming compiled file '$([IO.Path]::GetFileName($oldFileName))' to '$([IO.Path]::GetFileName($newFileName))'", - "`tUpdating $projFile - Renaming compiled file '$([IO.Path]::GetFileName($oldFileName))' to '$([IO.Path]::GetFileName($newFileName))'", - "Updating $($projFile):" - )) { - $proj.Save($projFile) # Saving as each file is renamed rather than all at the end in case we error out in the middle. - } -} \ No newline at end of file diff --git a/Functions/WindowsSearchIndex.ps1 b/Functions/WindowsSearchIndex.ps1 deleted file mode 100644 index 6d8c1ed..0000000 --- a/Functions/WindowsSearchIndex.ps1 +++ /dev/null @@ -1,54 +0,0 @@ - -#See http://powertoe.wordpress.com/2010/05/17/powershell-tackles-windows-desktop-search/#Load the dll -Add-Type -path "$PSScriptRoot\..\Lib\Microsoft.Search.Interop.dll" - -Function Script:Get-WindowsSearchIndexCrawlManager() { - #Create an instance of CSearchManagerClass - $sm = New-Object Microsoft.Search.Interop.CSearchManagerClass - #Next we connect to the SystemIndex catalog - $catalog = $sm.GetCatalog("SystemIndex") - #Get the interface to the scope rule manager - $crawlman = $catalog.GetCrawlScopeManager() - Return $crawlman - -} -Function Get-WindowsSearchIndexDirectory([string]$filter = "*") { - $crawlman = Get-WindowsSearchIndexCrawlManager - #Next we set some variables to use in the enumeration - $scopes = @() #The array that will hold our scopes - $begin=$true #A variable to test for the first run of the enumeration - [Microsoft.Search.Interop.CSearchScopeRule]$scope = $null #This will be passed - #as a reference to the enumeration process. - #It will hold the scope as we enumerate. - - #Grab the enumeration object from the Crawl Scope Manager - $enum = $crawlman.EnumerateScopeRules() - while ($enum.Next(1,[ref]$scope,[ref]$null) -or ($scope -ne $null)) { - #To traverse the collection you must use the Next method - #$enum.Next(1,[ref]$scope,[ref]$null) - #$begin = $false - $scopes += $scope #populate our array so we can use it later Powershell style - } - $results = $scopes | %{ - $Path = $null; - if($_.PatternOrURL -like "file*" ) { $Path = ((New-Object Uri $_.PatternOrUrl).LocalPath) } - Add-Member -InputObject $_ -NotePropertyName Path -NotePropertyValue $Path; - $_ - } - $results = $results | ?{ ($_.PatternOrURL -like "$filter") -OR ($_.Path -like "$filter") } - return $results -} - -Function New-WindowsSearchIndexDirectory([string]$path <# e.g. "C:\Users\*\AppData\" #>) { - [string] $uri = (New-Object Uri $path).AbsoluteUri - $crawlman = Get-WindowsSearchIndexCrawlManager - $crawlman.AddUserScopeRule("$uri",$true,$false,$null) - $crawlman.SaveAll() -} - -Function Remove-WindowsSearchIndexDirectory([string]$path <# e.g. "C:\Users\*\AppData\" #>) { - [string] $uri = (New-Object Uri $path).AbsoluteUri - $crawlman = Get-WindowsSearchIndexCrawlManager - $crawlman.RemoveScopeRule($uri) - $crawlman.SaveAll() -} \ No newline at end of file diff --git a/Functions/WindowsShortcut.ps1 b/Functions/WindowsShortcut.ps1 deleted file mode 100644 index 67c437a..0000000 --- a/Functions/WindowsShortcut.ps1 +++ /dev/null @@ -1,10 +0,0 @@ -Function New-WindowsShortcut([String] $Path, [string] $TargetPath, [String] $Arguments = "") { - $WshShell = New-Object -ComObject Wscript.Shell - if([io.path]::GetExtension($Path) -ne ".lnk") { - $Path = "$Path" + ".lnk" - } - $shortcut = $WshShell.CreateShortcut($Path); - $shortcut.TargetPath = $TargetPath - $shortcut.Arguments = $Arguments - $shortcut.Save() -} \ No newline at end of file diff --git a/Functions/__Colorizer.ps1.__ b/Functions/__Colorizer.ps1.__ deleted file mode 100644 index ac3e151..0000000 --- a/Functions/__Colorizer.ps1.__ +++ /dev/null @@ -1,446 +0,0 @@ -############################################################################## -## -## New-CommandWrapper -## -## From Windows PowerShell Cookbook (O'Reilly) -## by Lee Holmes (http://www.leeholmes.com/guide) -## -############################################################################## - -<# - -.SYNOPSIS - -Adds parameters and functionality to existing cmdlets and functions. - -.EXAMPLE - -New-CommandWrapper Get-Process ` - -AddParameter @{ - SortBy = { - $newPipeline = { - __ORIGINAL_COMMAND__ | Sort-Object -Property $SortBy - } - } - } - -This example adds a 'SortBy' parameter to Get-Process. It accomplishes -this by adding a Sort-Object command to the pipeline. - -.EXAMPLE - -$parameterAttributes = @' - [Parameter(Mandatory = $true)] - [ValidateRange(50,75)] - [Int] -'@ - -New-CommandWrapper Clear-Host ` - -AddParameter @{ - @{ - Name = 'MyMandatoryInt'; - Attributes = $parameterAttributes - } = { - Write-Host $MyMandatoryInt - Read-Host "Press ENTER" - } - } - -This example adds a new mandatory 'MyMandatoryInt' parameter to -Clear-Host. This parameter is also validated to fall within the range -of 50 to 75. It doesn't alter the pipeline, but does display some -information on the screen before processing the original pipeline. - -#> -function New-CommandWrapper{ - param( - ## The name of the command to extend - [Parameter(Mandatory = $true)] - $Name, - - ## Script to invoke before the command begins - [ScriptBlock] $Begin, - - ## Script to invoke for each input element - [ScriptBlock] $Process, - - ## Script to invoke at the end of the command - [ScriptBlock] $End, - - ## Parameters to add, and their functionality. - ## - ## The Key of the hashtable can be either a simple parameter name, - ## or a more advanced parameter description. - ## - ## If you want to add additional parameter validation (such as a - ## parameter type,) then the key can itself be a hashtable with the keys - ## 'Name' and 'Attributes'. 'Attributes' is the text you would use when - ## defining this parameter as part of a function. - ## - ## The Value of each hashtable entry is a scriptblock to invoke - ## when this parameter is selected. To customize the pipeline, - ## assign a new scriptblock to the $newPipeline variable. Use the - ## special text, __ORIGINAL_COMMAND__, to represent the original - ## command. The $targetParameters variable represents a hashtable - ## containing the parameters that will be passed to the original - ## command. - [HashTable] $AddParameter - ) - - Set-StrictMode -Version Latest - - ## Store the target command we are wrapping, and its command type - $target = $Name - $commandType = "Cmdlet" - - ## If a function already exists with this name (perhaps it's already been - ## wrapped,) rename the other function and chain to its new name. - if(Test-Path function:\$Name) - { - $target = "$Name" + "-" + [Guid]::NewGuid().ToString().Replace("-","") - Rename-Item function:\GLOBAL:$Name GLOBAL:$target - $commandType = "Function" - } - - -## The template we use for generating a command proxy -$proxy = @' - -__CMDLET_BINDING_ATTRIBUTE__ -param( -__PARAMETERS__ -) -begin -{ - try { - __CUSTOM_BEGIN__ - - ## Access the REAL Foreach-Object command, so that command - ## wrappers do not interfere with this script - $foreachObject = $executionContext.InvokeCommand.GetCmdlet( - "Microsoft.PowerShell.Core\Foreach-Object") - - $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand( - '__COMMAND_NAME__', - [System.Management.Automation.CommandTypes]::__COMMAND_TYPE__) - - ## TargetParameters represents the hashtable of parameters that - ## we will pass along to the wrapped command - $targetParameters = @{} - $PSBoundParameters.GetEnumerator() | - & $foreachObject { - if($command.Parameters.ContainsKey($_.Key)) - { - $targetParameters.Add($_.Key, $_.Value) - } - } - - ## finalPipeline represents the pipeline we wil ultimately run - $newPipeline = { & $wrappedCmd @targetParameters } - $finalPipeline = $newPipeline.ToString() - - __CUSTOM_PARAMETER_PROCESSING__ - - $steppablePipeline = [ScriptBlock]::Create( - $finalPipeline).GetSteppablePipeline() - $steppablePipeline.Begin($PSCmdlet) - } catch { - throw - } -} - -process -{ - try { - __CUSTOM_PROCESS__ - $steppablePipeline.Process($_) - } catch { - throw - } -} - -end -{ - try { - __CUSTOM_END__ - $steppablePipeline.End() - } catch { - throw - } -} - -dynamicparam -{ - ## Access the REAL Get-Command, Foreach-Object, and Where-Object - ## commands, so that command wrappers do not interfere with this script - $getCommand = $executionContext.InvokeCommand.GetCmdlet( - "Microsoft.PowerShell.Core\Get-Command") - $foreachObject = $executionContext.InvokeCommand.GetCmdlet( - "Microsoft.PowerShell.Core\Foreach-Object") - $whereObject = $executionContext.InvokeCommand.GetCmdlet( - "Microsoft.PowerShell.Core\Where-Object") - - ## Find the parameters of the original command, and remove everything - ## else from the bound parameter list so we hide parameters the wrapped - ## command does not recognize. - $command = & $getCommand __COMMAND_NAME__ -Type __COMMAND_TYPE__ - $targetParameters = @{} - $PSBoundParameters.GetEnumerator() | - & $foreachObject { - if($command.Parameters.ContainsKey($_.Key)) - { - $targetParameters.Add($_.Key, $_.Value) - } - } - - ## Get the argumment list as it would be passed to the target command - $argList = @($targetParameters.GetEnumerator() | - Foreach-Object { "-$($_.Key)"; $_.Value }) - - ## Get the dynamic parameters of the wrapped command, based on the - ## arguments to this command - $command = $null - try - { - $command = & $getCommand __COMMAND_NAME__ -Type __COMMAND_TYPE__ ` - -ArgumentList $argList - } - catch - { - - } - - $dynamicParams = @($command.Parameters.GetEnumerator() | - & $whereObject { $_.Value.IsDynamic }) - - ## For each of the dynamic parameters, add them to the dynamic - ## parameters that we return. - if ($dynamicParams.Length -gt 0) - { - $paramDictionary = ` - New-Object Management.Automation.RuntimeDefinedParameterDictionary - foreach ($param in $dynamicParams) - { - $param = $param.Value - $arguments = $param.Name, $param.ParameterType, $param.Attributes - $newParameter = ` - New-Object Management.Automation.RuntimeDefinedParameter ` - $arguments - $paramDictionary.Add($param.Name, $newParameter) - } - return $paramDictionary - } -} - -<# - -.ForwardHelpTargetName __COMMAND_NAME__ -.ForwardHelpCategory __COMMAND_TYPE__ - -#> - -'@ - -## Get the information about the original command -$originalCommand = Get-Command $target -$metaData = New-Object System.Management.Automation.CommandMetaData ` - $originalCommand -$proxyCommandType = [System.Management.Automation.ProxyCommand] - -## Generate the cmdlet binding attribute, and replace information -## about the target -$proxy = $proxy.Replace("__CMDLET_BINDING_ATTRIBUTE__", - $proxyCommandType::GetCmdletBindingAttribute($metaData)) -$proxy = $proxy.Replace("__COMMAND_NAME__", $target) -$proxy = $proxy.Replace("__COMMAND_TYPE__", $commandType) - -## Stores new text we'll be putting in the param() block -$newParamBlockCode = "" - -## Stores new text we'll be putting in the begin block -## (mostly due to parameter processing) -$beginAdditions = "" - -## If the user wants to add a parameter -$currentParameter = $originalCommand.Parameters.Count -if($AddParameter) -{ - foreach($parameter in $AddParameter.Keys) - { - ## Get the code associated with this parameter - $parameterCode = $AddParameter[$parameter] - - ## If it's an advanced parameter declaration, the hashtable - ## holds the validation and / or type restrictions - if($parameter -is [Hashtable]) - { - ## Add their attributes and other information to - ## the variable holding the parameter block additions - if($currentParameter -gt 0) - { - $newParamBlockCode += "," - } - - $newParamBlockCode += "`n`n " + - $parameter.Attributes + "`n" + - ' $' + $parameter.Name - - $parameter = $parameter.Name - } - else - { - ## If this is a simple parameter name, add it to the list of - ## parameters. The proxy generation APIs will take care of - ## adding it to the param() block. - $newParameter = - New-Object System.Management.Automation.ParameterMetadata ` - $parameter - $metaData.Parameters.Add($parameter, $newParameter) - } - - $parameterCode = $parameterCode.ToString() - - ## Create the template code that invokes their parameter code if - ## the parameter is selected. - $templateCode = @" - - if(`$PSBoundParameters['$parameter']) - { - $parameterCode - - ## Replace the __ORIGINAL_COMMAND__ tag with the code - ## that represents the original command - `$alteredPipeline = `$newPipeline.ToString() - `$finalPipeline = `$alteredPipeline.Replace( - '__ORIGINAL_COMMAND__', `$finalPipeline) - } -"@ - - ## Add the template code to the list of changes we're making - ## to the begin() section. - $beginAdditions += $templateCode - $currentParameter++ - } -} - -## Generate the param() block -$parameters = $proxyCommandType::GetParamBlock($metaData) -if($newParamBlockCode) { $parameters += $newParamBlockCode } -$proxy = $proxy.Replace('__PARAMETERS__', $parameters) - -## Update the begin, process, and end sections -$proxy = $proxy.Replace('__CUSTOM_BEGIN__', $Begin) -$proxy = $proxy.Replace('__CUSTOM_PARAMETER_PROCESSING__', $beginAdditions) -$proxy = $proxy.Replace('__CUSTOM_PROCESS__', $Process) -$proxy = $proxy.Replace('__CUSTOM_END__', $End) - -## Save the function wrapper -Write-Verbose $proxy -Set-Content function:\GLOBAL:$NAME $proxy - -## If we were wrapping a cmdlet, hide it so that it doesn't conflict with -## Get-Help and Get-Command -if($commandType -eq "Cmdlet") -{ - $originalCommand.Visibility = "Private" -} -} -<# - -.SYNOPSIS - -Adds colors and size quantization to all default output pipelines if the type is DirectoryInfo or FileInfo - -#> - -New-CommandWrapper Out-Default -Process { - $regex_opts = ([System.Text.RegularExpressions.RegexOptions]::IgnoreCase) - $compressed = New-Object System.Text.RegularExpressions.Regex( - '\.(zip|tar|gz|rar|jar|war)$', $regex_opts) - $executable = New-Object System.Text.RegularExpressions.Regex( - '\.(exe|bat|cmd|msi|ps1|psm1|vbs|reg)$', $regex_opts) - - if(($_ -is [System.IO.DirectoryInfo]) -or ($_ -is [System.IO.FileInfo])) - { - if(-not ($notfirst)) - { - Write-Host "`n Directory: " -noNewLine - Write-Host "$(pwd)`n" -foregroundcolor "Cyan" - Write-Host "Mode Last Write Time Length Name" - Write-Host "---- --------------- ------ ----" - $notfirst=$true - } - - if ($_ -is [System.IO.DirectoryInfo]) - { - Write-Host ("{0} {1} {2}" -f $_.mode, ([String]::Format("{0,10} {1,8}", $_.LastWriteTime.ToString("d"), $_.LastWriteTime.ToString("t"))), $_.name) -ForegroundColor "Cyan" - } - else - { - if ($compressed.IsMatch($_.Name)) - { - $color = "DarkGreen" - } - elseif ($executable.IsMatch($_.Name)) - { - $color = "Red" - } - else - { - $color = "White" - } - Write-Host ("{0} {1} {2,10} {3}" -f $_.mode, ([String]::Format("{0,10} {1,8}", $_.LastWriteTime.ToString("d"), $_.LastWriteTime.ToString("t"))), $_.length, $_.name) -ForegroundColor $color - } - - $_ = $null - } -} -end { - Write-Host -} - -function Get-DirSize -{ - param ($dir) - $bytes = 0 - $count = 0 - - Get-Childitem $dir | Foreach-Object { - if ($_ -is [System.IO.FileInfo]) - { - $bytes += $_.Length - $count++ - } - } - - Write-Host "`n " -NoNewline - - if ($bytes -ge 1KB -and $bytes -lt 1MB) - { - Write-Host ("" + [Math]::Round(($bytes / 1KB), 2) + " KB") -ForegroundColor "White" -NoNewLine - } - elseif ($bytes -ge 1MB -and $bytes -lt 1GB) - { - Write-Host ("" + [Math]::Round(($bytes / 1MB), 2) + " MB") -ForegroundColor "White" -NoNewLine - } - elseif ($bytes -ge 1GB) - { - Write-Host ("" + [Math]::Round(($bytes / 1GB), 2) + " GB") -ForegroundColor "White" -NoNewLine - } - else - { - Write-Host ("" + $bytes + " bytes") -ForegroundColor "White" -NoNewLine - } - Write-Host " in " -NoNewline - Write-Host $count -ForegroundColor "White" -NoNewline - Write-Host " files" - -} - -function Get-DirWithSize -{ - param ($dir) - Get-Childitem $dir - Get-DirSize $dir -} - - diff --git a/Functions/__Get-Disk.ps1.__ b/Functions/__Get-Disk.ps1.__ deleted file mode 100644 index 2f1908c..0000000 --- a/Functions/__Get-Disk.ps1.__ +++ /dev/null @@ -1,14 +0,0 @@ -If(!(get-module Storage -ListAvailable)) { - function Get-Disk { - Get-wmiObject -class "Win32_LogicalDisk" -namespace "root\CIMV2" -computername localhost ` - | Select DeviceID, ` - VolumeName, ` - Description, ` - FileSystem, ` - @{Name="SizeGB";Expression={($_.Size / 1GB).ToString("f3")}}, ` - @{Name="FreeGB";Expression={($_.FreeSpace / 1GB).ToString("f3")}} ` - | Format-Table -AutoSize - } -} - -Set-Alias df Get-Disk \ No newline at end of file diff --git a/Lib/Microsoft.Search.Interop.dll b/Lib/Microsoft.Search.Interop.dll deleted file mode 100644 index b2cd6a0..0000000 Binary files a/Lib/Microsoft.Search.Interop.dll and /dev/null differ diff --git a/Lib/PhotoLibrary.dll b/Lib/PhotoLibrary.dll deleted file mode 100644 index 6776d63..0000000 Binary files a/Lib/PhotoLibrary.dll and /dev/null differ diff --git a/Main.Tests.ps1 b/Main.Tests.ps1 deleted file mode 100644 index 50aa57d..0000000 --- a/Main.Tests.ps1 +++ /dev/null @@ -1,16 +0,0 @@ - -Function script:Invoke-Tests { - param($Paths) - - Get-childItem $Paths | Sort-object -property {$_.Fullname -like "*_ISE.ps1"} | ?{ - $_.Name -notlike "__*.ps1" -AND - ($_.Fullname -notlike "*_ISE.ps1" -OR (Test-Path variable:\psise)) - } | %{ . $_.FullName } -} - - -# Commented out the Functions tests for now. A spectacular number of them fail, and they eventually crash PSISE. -# Invoke-Tests (Join-Path $PSScriptRoot Functions.Tests) *.ps1 - - -Invoke-Tests (Join-Path $PSScriptRoot Modules.Tests) *.ps1 \ No newline at end of file diff --git a/Main.ps1 b/Main.ps1 deleted file mode 100644 index e0e2889..0000000 --- a/Main.ps1 +++ /dev/null @@ -1,7 +0,0 @@ - -#Import all script files - ISE files last -Get-childItem (Join-Path $PSScriptRoot Functions) *.ps1 | - Sort-object -property {$_.Fullname -like "*_ISE.ps1"} | ?{ - $_.Name -notlike "__*.ps1" -AND - ($_.Fullname -notlike "*_ISE.ps1" -OR (Test-Path variable:\psise)) - } | %{ . $_.FullName } diff --git a/Modules.Tests/Common.Tests.ps1 b/Modules.Tests/Common.Tests.ps1 index b040ad9..8b5c47f 100644 --- a/Modules.Tests/Common.Tests.ps1 +++ b/Modules.Tests/Common.Tests.ps1 @@ -258,12 +258,6 @@ Describe "Test-Property" { } } -Describe "Get-IsWindowsPlatform" { - It "Get-IsWindowsPlatform verifiction using existence of env:SystemRoot" { - Get-IsWindowsPlatform | Should -Be $(Get-Variable IsWindows).Value - } -} - Describe 'Wait-ForCondition' { It 'Simplest Wait' { $script:falseCount=0 diff --git a/Modules.Tests/Google.Tests.ps1 b/Modules.Tests/Google.Tests.ps1 deleted file mode 100644 index 66799dc..0000000 --- a/Modules.Tests/Google.Tests.ps1 +++ /dev/null @@ -1,65 +0,0 @@ - -BeforeAll{ - Import-Module -Name $PSScriptRoot\..\Modules\IntelliTect.CredentialManager - Import-Module -Name $PSScriptRoot\..\Modules\IntelliTect.Common - - Import-Module -Name $PSScriptRoot\..\Modules\IntelliTect.Google -Force - - Function Get-TestCredential { - $credentialName = "IntelliTect.Google.Tests" - - [PSCredential]$credential = Get-CredentialManagerCredential $credentialName -ErrorAction SilentlyContinue - if ($credential -eq $null) { - # Future versions (post 3.0) of Pester include 'Set-TestInconclusive' that should be used here. - # For now, we just throw an error to discontinue the test while providing instructions on how to correctly configure the test. - Write-Warning -Message "Couldn't find a credential named $credentialName. Add it using 'Set-CredentialManagerCredential $credentialName'. You will be prompted for a Google email account and password, which will be stored in the Windows credential manager." - } - return $credential - } -} - - -# Describe "Get-GoogleSessionVariable" { -# if (Get-IsWindowsPlatform) { -# It "Gets a WebRequestSession with Google session cookies" { -# $credential = Get-TestCredential - -# $session = Get-GoogleSession $credential -# $sidCookie = ($session.Cookies.GetCookies("https://www.google.com") | where {$_.Name -eq "SID"}).Value - -# # Check that the SID cookie is at least 50 characters. -# # One I used while testing was 71 characters, so 50 should be a safe minimum. -# $sidCookie | Should Match ".{50,}" -# } -# } -# else { -# It "Verify throws on non-Windows platforms" { -# { Get-TestCredential } | Should -Throw 'This cmdlet is not supported on non-Windows operating systems.' -# } -# } -# } - -# Describe "Get-GoogleLocationHistoryKmlFile" { -# if (Get-IsWindowsPlatform) { -# It "Gets a kml file" { -# $credential = Get-TestCredential - -# $session = Get-GoogleSession $credential - -# $outFile = Get-TempItemPath -# $request = Get-GoogleLocationHistoryKmlFile $session 2016-05-01 -outFile $outFile - -# $outFile | Should Contain "http://www.opengis.net/kml/" - -# # cleanup -# Get-Item $outFile | Remove-Item -# Test-Path $outFile | Should Be $false -# } -# } -# else { -# It "Verify throws on non-Windows platforms" { -# { Get-TestCredential } | Should -Throw 'This cmdlet is not supported on non-Windows operating systems.' -# } -# } -# } - diff --git a/Modules.Tests/PSDbxCli.Tests.ps1 b/Modules.Tests/PSDbxCli.Tests.ps1 deleted file mode 100644 index 281fd71..0000000 --- a/Modules.Tests/PSDbxCli.Tests.ps1 +++ /dev/null @@ -1,269 +0,0 @@ -<#Header#> -using module "IntelliTect.PSDbxCli" -Set-StrictMode -Version "Latest" - -# Import IntelliTect.Commonn for suppot of Get-Temp stuff. -Import-Module -Name $PSScriptRoot\..\Modules\IntelliTect.Common -# Import-Module -Name $PSScriptRoot\..\Modules\IntelliTect.File - -Get-Module IntelliTect.PSDbxCli | Remove-Module -Import-Module -Name $PSScriptRoot\..\Modules\IntelliTect.PSDbxCli -Force -#EndHeader#> - -# Using BeforeDiscovery rather than BeforAll because variables are used in the It Name. -BeforeDiscovery { - $rootFiles = Get-DbxItem -File - if(-not $rootFiles) { throw 'There are no sample files at the root folder to test with.' } - $rootDirectories = Get-DbxItem -Directory - if(-not $rootFiles) { throw 'There are no exisint sample directories at the root folder to test with.' } - $script:sampleFileAtRootPath = $rootFiles[(Get-Random -Maximum ($rootFiles.Count-1))].Path - $script:sampleDirectoryAtRootPath = $rootDirectories[(Get-Random -Maximum ($rootDirectories.Count-1))].Path -} -Describe 'Test-DbxPath' { - It "Verify item (a file called '$script:sampleFileAtRootPath') exists" { - Test-DbxPath $script:sampleFileAtRootPath | Should -BeTrue - } - It "Verify item (a directory called '$script:sampleDirectoryAtRootPath') exists" { - Test-DbxPath $script:sampleDirectoryAtRootPath | Should -BeTrue - } - It "Verify a file (-File) called '$script:sampleFileAtRootPath' exists" { - Test-DbxPath -PathType Leaf $script:sampleFileAtRootPath | Should -BeTrue - } - It "Verify a directory (-Container) called '$script:sampleDirectoryAtRootPath' exists" { - Test-DbxPath -PathType Container $script:sampleDirectoryAtRootPath | Should -BeTrue - } - It "Verify a directory called '$($script:sampleDirectoryAtRootPath.TrimEnd('/')) (without trailing slash) exists" { - # Verify trailing slash is allowed - Test-DbxPath -PathType Container $script:sampleDirectoryAtRootPath.TrimEnd('/') | Should -BeTrue - } - It 'Verify slash prefix will be assumed.' { - Test-DbxPath -PathType Container $script:sampleDirectoryAtRootPath.TrimStart('/') | Should -BeTrue - } - It "Verify folder (called 'Bogus-Bogus-Bogus.bogus') does not exists" { - Test-DbxPath -PathType Container 'Bogus-Bogus-Bogus.bogus' | Should -BeFalse - } - It 'Verify searching for a file with a trailing ''/'' will throw an error' { - { Test-DbxPath -PathType Leaf '/Folder/' } | Should -Throw - } -} - -Describe 'Get-DbxItem (mainly with files)' { - It 'Verify you can see the root' { - $items = Get-DbxItem - $items.Count | Should -BeGreaterOrEqual 0 - $items | Select-Object -ExpandProperty Path | Should -BeLike '/*' - } - It 'Verify you can see a single file' { - $items = Get-DbxItem -File - $path = ($items[(Get-Random -Maximum ($items.Count-1))]).Path - $item = Get-DbxItem $path - $item.Path | Should -Be $path - $converter=@{ - B=1; - KiB=1000; - MiB=1000000; - GiB=1000000000; - } - $item.DisplaySize -match '(?GiB|KiB|MiB|B)' | Should -BeTrue - $item.Size | Should -BeGreaterThan ($converter.($Matches.Unit)) - } - It 'Return only files' { - $items = Get-DbxItem -File - $items | ForEach-Object{ - $_.GetType().Name | Should -Be 'DbxFile' } - } -} - -Describe 'Get-DbxRevision: ' { - BeforeAll { - $script:dropboxFile = Get-DbxItem -File | Select-Object -First 1 - $script:tempFile = $script:dropboxFile - } - It 'Find a DbxFile with multiple revisions' { - # Rather than use Get-DbxRevisions in BeforeAll, use this test to - # update $dropboxFile to contain a DbxFile that has more than - # one revision. - # TODO: Upload file an make multipe revisions rather than searching for an existing file. - $foundFileWithMultipleRevisions = $false - $dbxFileRevisions = Get-DbxItem -File | ` # Retrieve all the files in the root dropbox directory - Foreach-Object { - if(-not $foundFileWithMultipleRevisions) { - # TODO: Switch to use 'break' statement instead but initial attempt - # produced a BreakException and 'return' didn't short circuit - Write-Progress -Activity 'Get-DbxRevision tests: Finding file with multiple revisions' ` - -Status "Examining'$($_.Path)'..." - $tempRevisions = Get-DbxRevision $_ - if(@($tempRevisions).Count -gt 1) { - $foundFileWithMultipleRevisions = $true - $script:dropboxFile = $_ - Write-Output $tempRevisions - } - } - } # Select the dropbox files with more than one revision and save the revisions to $tempRevisions - $dbxFileRevisions | Should -Not -BeNullOrEmpty - @($dbxFileRevisions).Count | Should -BeGreaterOrEqual 1 - $dbxFileRevisions | ForEach-Object { - $_.Revision | Should -Not -BeNullOrEmpty - } - $dbxFileRevisions | ForEach-Object { - $_.Path | Should -Be $dropboxFile.Path - } - } - It 'Pipe Get-DbxItem -File to Get-DbxRevision' { - $dbxFileRevisions = $dropboxFile | Get-DbxRevision - @($dbxFileRevisions).Count | Should -BeGreaterOrEqual 1 - $dbxFileRevisions | ForEach-Object { - $_.Revision | Should -Not -BeNullOrEmpty - } - $dbxFileRevisions | ForEach-Object { - $_.Path | Should -Be $dropboxFile.Path - } - } - It 'Retrieve using DbxFile.GetRevisions()' { - $dbxFileRevisions = $dropboxFile.GetRevisions() - @($dbxFileRevisions).Count | Should -BeGreaterOrEqual 1 - $dbxFileRevisions | ForEach-Object { - $_.Revision | Should -Not -BeNullOrEmpty - } - $dbxFileRevisions | ForEach-Object { - $_.Path | Should -Be $dropboxFile.Path - } - } -} - -Describe 'Write-DbxFile: ' { - BeforeAll { - $script:tempFile = Get-TempFile - } - It 'Upload a simple file' { - [DbxFile]$dbxFile = Write-DbxFile $tempFile '/Apps/IntelliTect.PSDbxCli/.Temp' - $dbxFile | Should -Not -BeNullOrEmpty - $dbxFile.Path | Should -Be "/Apps/IntelliTect.PSDbxCli/.Temp/$(Split-Path -Leaf $tempFile)" - } -} - -Describe 'New-DbxDirectory/Remove-DbxDirectory: ' { - BeforeAll { - [string]$script:tempDbxDirectoryPath = '/Apps/IntelliTect.PSDbxCli/.Temp/SampleDirectoryDeleteMe' - $directory = Get-DbxItem $tempDbxDirectoryPath -Directory - $directory | Remove-DbxDirectory - } - It 'Return only directories' { - $items = Get-DbxItem -Directory - $items | ForEach-Object{ - $_.GetType().Name | Should -Be 'DbxDirectory' } - } - It 'Retrieve the items in a specific directory' { - $items = Get-DbxItem -Directory - $items | Select-Object -First 1 | ForEach-Object{ - $path = $_.Path - Get-DbxItem $path | Select-Object -ExpandProperty Path | Should -BeLike "$path*" - } - } - It 'Retrieve child items using DbxDirectory.GetChildItems()' { - # Retrieve 2 directories at the root level. - $items = Get-DbxItem -Directory - $items | Select-Object -First 2 | ForEach-Object{ - $expectedPath = $_.Path - $childItems = $_.GetChildItems() - $childItems | Select-Object -ExpandProperty 'Path' | Should -BeLike "$expectedPath*" - } - } - It 'Create a new DbxDirectory' { - $newDbxDirectory = New-DbxDirectory $tempDbxDirectoryPath - $newDbxDirectory.Path | Should -Be $tempDbxDirectoryPath - Remove-DbxDirectory $newDbxDirectory | Should -BeNullOrEmpty - } - It 'Pipe New-DbxDirectory into Remove-DbxDirectory' { - $newDbxDirectory = New-DbxDirectory $tempDbxDirectoryPath - $newDbxDirectory.Path | Should -Be $tempDbxDirectoryPath - $newDbxDirectory | Remove-DbxDirectory | Should -BeNullOrEmpty - } - AfterEach { - Get-DbxItem -Directory $tempDbxDirectoryPath | Remove-DbxDirectory - } -} - -Describe 'Save-DbxFile' { - BeforeAll { - [DbxFile]$script:dropboxFile = Get-DbxItem -File | ` - # Where-Object{ $_.DisplaySize -match '.+? (B|KiB)\s*'} | ` # Select the items measured in bytes or kb. - Sort-Object -Property 'Size' | Select-Object -First 1 - [string]$script:currentDirectory = Get-Location - $script:tempDirectory = Get-TempDirectory - Push-Location - Set-Location $tempDirectory - } - BeforeEach { - $script:targetFileName = Get-TempFile -Path $tempDirectory -DoNotCreateFile - } - It 'Save a file locally defaulting the target name to the name of the file' { - $targetFileName = Get-TempFile -Path $tempDirectory -Name $(Split-Path -Leaf $dropboxFile.Path) -DoNotCreateFile - # TODO: Determine how to drop the explicit '-DropboxPath' parameter name - Save-DbxFile -DropboxPath $dropboxFile.Path # | Select-Object -ExpandProperty Path | Should -Be $targetFileName - Test-Path $targetFileName | Should -BeTrue - } - It 'Save a file locally with the specific target name' { - # TODO: Determine how to drop the explicit '-DropboxPath' parameter name - Save-DbxFile -DropboxPath $dropboxFile.Path -TargetPath $targetFileName.FullName - Test-Path $targetFileName | Should -BeTrue - } - It 'Pipe Get-DbxFile -File into Save-DbxFile' { - # Save off the expected target file name so that it can be disposed. - $targetFileName = Get-TempFile -Path $tempDirectory -Name $(Split-Path -Leaf $dropboxFile.Path) -DoNotCreateFile - $savedFileInfo = Get-DbxItem -File -Path $dropboxFile.Path | Save-DbxFile - $savedFileInfo | Should -Not -BeNullOrEmpty - Test-Path $savedFileInfo | Should -BeTrue - $savedFileInfo.FullName | Should -Be $targetFileName.FullName -Because "$($savedFileInfo.FullName) -ne $targetFileName" - } - AfterEach { - $targetFileName.Dispose() - # Get-Item $targetFileName -ErrorAction Ignore | Remove-Item -Force - Test-Path $targetFileName | Should -BeFalse - } - AfterAll { - Pop-Location - Get-Location | Should -Be $currentDirectory - $tempDirectory.Dispose() - } -} - - -Describe 'Save-DbxFile -Revision' { - BeforeAll { - [DbxFile]$script:dropboxFile = Get-DbxItem -File | ` - # Where-Object{ $_.DisplaySize -match '.+? (B|KiB)\s*'} | ` # Select the items measured in bytes or kb. - Sort-Object -Property 'Size' | ` - Where-Object{ $_.GetRevisions().Count -gt 1} | ` - Select-Object -First 1 - [string]$script:currentDirectory = Get-Location - $script:tempDirectory = Get-TempDirectory - Push-Location - Set-Location $tempDirectory - } - BeforeEach { - $script:targetFileName = Get-TempFile -Path $tempDirectory -DoNotCreateFile - } - It 'Save a file locally defaulting the target name to the name of the file' { - $targetFileName = Get-TempFile -Path $tempDirectory -Name $(Split-Path -Leaf $dropboxFile.Path) -DoNotCreateFile - # TODO: Determine how to drop the explicit '-DropboxPath' parameter name - Save-DbxFile -DropboxPath $dropboxFile.Path -Revision $dropboxFile.GetRevisions()[-1].Revision # | Select-Object -ExpandProperty Path | Should -Be $targetFileName - Test-Path $targetFileName | Should -BeTrue - } - # It 'Save a file locally with the specific target name' { - - # # TODO: Determine how to drop the explicit '-DropboxPath' parameter name - # Save-DbxFile -DropboxPath $dropboxFile.Path -TargetPath $targetFileName.FullName - # Test-Path $targetFileName | Should -BeTrue - # } - AfterEach { - $targetFileName.Dispose() - # Get-Item $targetFileName -ErrorAction Ignore | Remove-Item -Force - Test-Path $targetFileName | Should -BeFalse - } - AfterAll { - Pop-Location - Get-Location | Should -Be $currentDirectory - $tempDirectory.Dispose() - } -} \ No newline at end of file diff --git a/Modules/AzureManagement/AzureManagement.psd1 b/Modules/AzureManagement/AzureManagement.psd1 deleted file mode 100644 index 902d237..0000000 --- a/Modules/AzureManagement/AzureManagement.psd1 +++ /dev/null @@ -1,120 +0,0 @@ -# -# Module manifest for module 'AzureManagement' -# -# Generated by: admin -# -# Generated on: 2/9/2016 -# - -@{ - -# Script module or binary module file associated with this manifest. -RootModule = 'AzureManagement.psm1' - -# Version number of this module. -ModuleVersion = '1.0' - -# ID used to uniquely identify this module -GUID = '7486341e-be02-419d-9e55-e913489ab4d9' - -# Author of this module -Author = '' - -# Company or vendor of this module -CompanyName = 'IntelliTect' - -# Copyright statement for this module -# Copyright = '' - -# Description of the functionality provided by this module -Description = 'Management of Azure through Powershell' - -# Minimum version of the Windows PowerShell engine required by this module -# PowerShellVersion = '' - -# Name of the Windows PowerShell host required by this module -# PowerShellHostName = '' - -# Minimum version of the Windows PowerShell host required by this module -# PowerShellHostVersion = '' - -# Minimum version of Microsoft .NET Framework required by this module -# DotNetFrameworkVersion = '' - -# Minimum version of the common language runtime (CLR) required by this module -# CLRVersion = '' - -# Processor architecture (None, X86, Amd64) required by this module -# ProcessorArchitecture = '' - -# Modules that must be imported into the global environment prior to importing this module -# RequiredModules = @() - -# Assemblies that must be loaded prior to importing this module -# RequiredAssemblies = @() - -# Script files (.ps1) that are run in the caller's environment prior to importing this module. -# ScriptsToProcess = @() - -# Type files (.ps1xml) to be loaded when importing this module -# TypesToProcess = @() - -# Format files (.ps1xml) to be loaded when importing this module -# FormatsToProcess = @() - -# Modules to import as nested modules of the module specified in RootModule/ModuleToProcess -# NestedModules = @() - -# Functions to export from this module -FunctionsToExport = '*' - -# Cmdlets to export from this module -CmdletsToExport = '*' - -# Variables to export from this module -VariablesToExport = '*' - -# Aliases to export from this module -AliasesToExport = '*' - -# DSC resources to export from this module -# DscResourcesToExport = @() - -# List of all modules packaged with this module -# ModuleList = @() - -# List of all files packaged with this module -#FileList = @() - -# Private data to pass to the module specified in RootModule/ModuleToProcess. This may also contain a PSData hashtable with additional module metadata used by PowerShell. -PrivateData = @{ - - PSData = @{ - - # Tags applied to this module. These help with module discovery in online galleries. - # Tags = @() - - # A URL to the license for this module. - # LicenseUri = '' - - # A URL to the main website for this project. - # ProjectUri = '' - - # A URL to an icon representing this module. - # IconUri = '' - - # ReleaseNotes of this module - # ReleaseNotes = '' - - } # End of PSData hashtable - -} # End of PrivateData hashtable - -# HelpInfo URI of this module -# HelpInfoURI = '' - -# Default prefix for commands exported from this module. Override the default prefix using Import-Module -Prefix. -# DefaultCommandPrefix = '' - -} - diff --git a/Modules/AzureManagement/AzureManagement.psm1 b/Modules/AzureManagement/AzureManagement.psm1 deleted file mode 100644 index ecaafde..0000000 --- a/Modules/AzureManagement/AzureManagement.psm1 +++ /dev/null @@ -1,247 +0,0 @@ - - -$imageList = @{ "Win7" = "Windows 7 Enterprise N SP1 (x64)"; - "Win8.1" = "Windows 8.1 Enterprise N (x64)"; - "Win10" = "Windows 10 Enterprise (x64)";}; -Function Install-AzureConfig { - [CmdletBinding(ConfirmImpact="High")] - param( - [pscredential]$azureCredentials = (Get-Credential -Message "Enter your azure credentials here.") - ) - - #if(!$PSCmdlet.ShouldProcess("Install-AzureConfig","Untested script... confirm to execute", "3")) { - # return - # } - - #install Windows - #Confirm-Chocolatey - #Choco Install WindowsAzurePowershell -y - Initialize-PSGet - #Install-module Azure - #Install-module AzureRM - #Install-AzureRM - Initialize-AzureRM - Initialize-Azure - Login-AzureRmAccount - - Register-AzurePublishSettings -} -Function Confirm-Chocolatey { - if(!(Test-Path -Path C:\ProgramData\chocolatey\bin)) { - iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1')) - } -} -Function Initialize-PSGet { - if(!(Get-Module -ListAvailable -Name PowerShellGet)) { - Install-PSGet - } - if(!(Get-Module -All -Name PowerShellGet)) { - Import-Module PowerShellGet - } - return -} -Function Install-PSGet { - - - (new-object Net.WebClient).DownloadString("http://psget.net/GetPsGet.ps1") | iex -} -Function Initialize-AzureRM { - if(!(Get-module AzureRM -ListAvailable)) { - Write-Warning "The Azure Resource Management module is not installed. To install run 'Install-module AzureRM' & 'Install-AzureRM'" - if(!$PSCmdlet.ShouldProcess("Install-AzureRM","Would you like to Install Azure Resource Management now?", "3")) { - return - } - Install-module AzureRM - Import-Module AzureRM - Install-AzureRM - return - } - Import-Module AzureRM -} -Function Initialize-Azure { - if(!(Get-Module Azure -ListAvailable)) { - Write-Warning "The Azure module is not installed. To install run 'Install-module Azure'" - if(!$PSCmdlet.ShouldProcess("Install-Azure","Would you like to Install Azure now?", "3")) { - return - } - Install-Module Azure - } - - Import-Module Azure - #Set-AzureSubscription -SubscriptionName "Azure Pass" -} - -Function Get-AzureImage { - Param( - [Parameter(Mandatory=$true)][string]$imageFamily - ) - return Get-AzureVMImage | where { $_.ImageFamily -eq $imageFamily } | sort PublishedDate -Descending | select -ExpandProperty ImageName -First 1 -} - - -Function New-AzureVM { - [CmdletBinding()] Param( - [Parameter(Mandatory=$true)][string]$imageName - , [Parameter(Mandatory=$true)][string] $newName - , [PSCredential] $credential - , [string] $instanceSize = "Small" - , [string] $location = "West US" - , [Parameter(Mandatory=$true)][ValidateSet("Win7", "Win8.1", "Win10")][string] $image - ) - - $vmConfig = New-AzureVMConfig -Name $newName -InstanceSize $instanceSize -Image (Get-AzureImage ($imageList.Item($image))) | - Add-AzureProvisioningConfig -Windows |#-AdminUserName $credential.UserName -Password (Get-CredentialPassword $credential) | - . Azure\New-AzureVM -ServiceName $newName -Location $location -} - - -Function Enter-AzurePSSEssion { -<# - .SYNOPSIS - Enter into a Remote PowerShell session runnning on Azure VM. -#> - [CmdletBinding()]Param( - #The specific virtual machine from which the certificate should be imported. - [Parameter(Mandatory,ValueFromPipeline,ParameterSetName="InputObject")] - [Microsoft.WindowsAzure.Commands.ServiceManagement.Model.PersistentVMRoleContext]$inputObject, - [Parameter(Mandatory,ValueFromPipeline)][string]$dnsName, - $credential = (Get-Credential) - #TODO: Add a parameter set that takes a session - ) - - switch ($PsCmdlet.ParameterSetName) - { - "InputObject" { $dnsName = $inputObject.Name; break} - } - - - if($dnsName -notlike "*.cloudapp.net") { - $dnsName = "$dnsName.cloudapp.net" - } - - try { - $pssession = New-AzurePSSEssion $dnsName $credential - Enter-PSSession -session $pssession - return $pssession - - } - #TODO Catch not working!!! - catch <#[System.Management.Automation.Remoting.PSRemotingTransportException]#> { - switch -Wildcard ($_.Message) { - "*The WinRM client cannot process the request because the server name cannot be resolved.*" { - Throw "Either the virtual machine is off or the port, '5986', is incorret." - } - } - } -} - - -Function New-AzurePSSession { - [CmdletBinding()]Param( - [Parameter(Mandatory,ValueFromPipeline)][string]$dnsName, - $credential = (Get-Credential) - ) - - if($dnsName -notlike "*.cloudapp.net") { - $dnsName = "$dnsName.cloudapp.net" - } - - try { - $pssession = New-PSSession -ComputerName $dnsName -Port 5986 -Credential $credential -UseSSL - return $pssession - } - #TODO Catch not working!!! - catch <#[System.Management.Automation.Remoting.PSRemotingTransportException]#> { - switch -Wildcard ($_.Message) { - "*The WinRM client cannot process the request because the server name cannot be resolved.*" { - Throw "Either the virtual machine is off or the port, '5986', is incorret." - } - } - } -} - -Function Reset-AzureVMCredentials { - [CmdletBinding()] Param ( - [string]$serverURL, - [PSCredential]$newCredential - ) - - $password = Get-CredentialPassword($newCredential) - - get-azurevm $serverURL | Set-AzureVMAccessExtension -UserName $newCredential.UserName -Password $password |Update-AzureVM -} - -Function Import-AzureVMCertificate { -<# - .SYNOPSIS - Import the Azure Virtual Machine Certificate -#> - [CmdletBinding()]Param( - #The specific virtual machine from which the certificate should be imported. - [Parameter(Mandatory,ValueFromPipeline,ParameterSetName="InputObject")][Microsoft.WindowsAzure.Commands.ServiceManagement.Model.PersistentVMRoleContext]$inputObject, - #Cloud Service name/DNS name for your VM (without the .cloudapp.net part) - [Parameter(Mandatory,ParameterSetName="ServiceName")][string]$serviceName - ) - - switch ($PsCmdlet.ParameterSetName) - { - "InputObject" { $azureVM = $inputObject; break} - "ServiceName" { $azureVM = Get-AzureVM -ServiceName $serviceName; break} - } - - try{ - $tempFile = [IO.Path]::GetTempFileName() - (Get-AzureCertificate -ServiceName $azureVM.ServiceName -Thumbprint $azureVM.VM.DefaultWinRmCertificateThumbprint -ThumbprintAlgorithm SHA1).Data | - Out-File $tempFile - - $X509Object = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2 $tempFile - $X509Store = New-Object System.Security.Cryptography.X509Certificates.X509Store "Root", "LocalMachine" - - try { - $X509Store.Open([System.Security.Cryptography.X509Certificates.OpenFlags]::ReadWrite) - $X509Store.Add($X509Object) - } - finally { - $X509Store.Close() - } - } - finally { - Remove-Item $tempFile - } -} - - -#TODO: Move to somewhere more general -Function Get-CredentialPassword{ - [CmdletBinding()] param ( - [Parameter(Mandatory=$true,ValueFromPipeline)][PSCredential]$credential - ) - - $BSTR = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($credential.Password) - $password = [System.Runtime.InteropServices.Marshal]::PtrToStringAuto($BSTR) - return $password; -} - - -Function Register-AzurePublishSettings { - #Incomplete - [CmdletBinding()]Param( - [string]$publishSettingsFilePath #= (Join-Path $env:ALLUSERSPROFILE "Azure.publishsettings") - ) - if(!$publishSettingsFilePath) { - Get-AzurePublishSettingsFile - $publishSettingsFilePath = Read-Host -Prompt "Enter the path to the downloaded publishSettings file:" - } - Import-AzurePublishSettingsFile $publishSettingsFilePath - #Set-AzureService - Write-Warning "More stuff needed in order to support 'Get-AzureCertificate'" - # See see http://michaelwasham.com/windows-azure-powershell-reference-guide/getting-started-with-windows-azure-powershell/ -} - -Function Get-AzureStarted { - #see http://blogs.technet.com/b/heyscriptingguy/archive/2013/06/22/weekend-scripter-getting-started-with-windows-azure-and-powershell.aspx - Add-AzureAccount -} - - - diff --git a/Modules/DotNetCore/DotNetCore.psd1 b/Modules/DotNetCore/DotNetCore.psd1 deleted file mode 100644 index 2dead04..0000000 --- a/Modules/DotNetCore/DotNetCore.psd1 +++ /dev/null @@ -1,123 +0,0 @@ -# -# Module manifest for module 'IntelliTect.DotNetCore' -# -# Generated by: Mark Michaelis -# -# Generated on: 6/12/2017 -# - -@{ - -# Script module or binary module file associated with this manifest. -RootModule = './IntelliTect.DotNetCore.psm1' - -# Version number of this module. -ModuleVersion = '0.2' - -# Supported PSEditions -# CompatiblePSEditions = @() - -# ID used to uniquely identify this module -GUID = '486ccfb7-3a8b-431f-97e7-82f934f3265b' - -# Author of this module -Author = 'Mark Michaelis' - -# Company or vendor of this module -CompanyName = 'IntelliTect' - -# Copyright statement for this module -Copyright = '(c) 2017 IntelliTect. All rights reserved.' - -# Description of the functionality provided by this module -Description = 'Provides functionality for working with DotNet Core' - -# Minimum version of the Windows PowerShell engine required by this module -# PowerShellVersion = '' - -# Name of the Windows PowerShell host required by this module -# PowerShellHostName = '' - -# Minimum version of the Windows PowerShell host required by this module -# PowerShellHostVersion = '' - -# Minimum version of Microsoft .NET Framework required by this module. This prerequisite is valid for the PowerShell Desktop edition only. -# DotNetFrameworkVersion = '' - -# Minimum version of the common language runtime (CLR) required by this module. This prerequisite is valid for the PowerShell Desktop edition only. -# CLRVersion = '' - -# Processor architecture (None, X86, Amd64) required by this module -# ProcessorArchitecture = '' - -# Modules that must be imported into the global environment prior to importing this module -# RequiredModules = @() - -# Assemblies that must be loaded prior to importing this module -# RequiredAssemblies = @() - -# Script files (.ps1) that are run in the caller's environment prior to importing this module. -# ScriptsToProcess = @() - -# Type files (.ps1xml) to be loaded when importing this module -# TypesToProcess = @() - -# Format files (.ps1xml) to be loaded when importing this module -# FormatsToProcess = @() - -# Modules to import as nested modules of the module specified in RootModule/ModuleToProcess -# NestedModules = @() - -# Functions to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no functions to export. -#FunctionsToExport = @() - -# Cmdlets to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no cmdlets to export. -CmdletsToExport = '*' - -# Variables to export from this module -VariablesToExport = '*' - -# Aliases to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no aliases to export. -AliasesToExport = '*' - -# DSC resources to export from this module -# DscResourcesToExport = @() - -# List of all modules packaged with this module -# ModuleList = @() - -# List of all files packaged with this module -FileList = @() - -# Private data to pass to the module specified in RootModule/ModuleToProcess. This may also contain a PSData hashtable with additional module metadata used by PowerShell. -PrivateData = @{ - - PSData = @{ - - # Tags applied to this module. These help with module discovery in online galleries. - # Tags = @() - - # A URL to the license for this module. - # LicenseUri = '' - - # A URL to the main website for this project. - # ProjectUri = '' - - # A URL to an icon representing this module. - # IconUri = '' - - # ReleaseNotes of this module - # ReleaseNotes = '' - - } # End of PSData hashtable - -} # End of PrivateData hashtable - -# HelpInfo URI of this module -# HelpInfoURI = '' - -# Default prefix for commands exported from this module. Override the default prefix using Import-Module -Prefix. -# DefaultCommandPrefix = '' - -} - diff --git a/Modules/DotNetCore/DotNetcore.psm1 b/Modules/DotNetCore/DotNetcore.psm1 deleted file mode 100644 index 2f0d9ae..0000000 --- a/Modules/DotNetCore/DotNetcore.psm1 +++ /dev/null @@ -1,25 +0,0 @@ -Function Set-DotNetSdkVersion { - [CmdletBinding()] - param( - [string]$version, - [string]$folder = $pwd - ) - - if(Test-Path "global.json") { - $globalJsonPath = (Resolve-Path 'global.json').Path - $globalJsonContent = Get-Content $globalJsonPath -raw | ConvertFrom-Json - } - else { - $globalJsonPath = Join-Path $pwd 'global.json' - Write-Output (New-Item -ItemType File $globalJsonPath) - $globalJsonContent = "{ - `"sdk`": { - `"version`": `"2.0.0`" - } - }" | ConvertFrom-Json - } - - $globalJsonContent.sdk | % {$_.version=$version} - $globalJsonContent | ConvertTo-Json | Set-Content $globalJsonPath - Write-Output $globalJsonContent -} \ No newline at end of file diff --git a/Modules/IntelliTect.ChatGpt/IntelliTect.ChatGpt.psd1 b/Modules/IntelliTect.ChatGpt/IntelliTect.ChatGpt.psd1 deleted file mode 100644 index cd62b4a..0000000 --- a/Modules/IntelliTect.ChatGpt/IntelliTect.ChatGpt.psd1 +++ /dev/null @@ -1,132 +0,0 @@ -# -# Module manifest for module 'IntelliTect.ChatGpt' -# -# Generated by: Mark Michaelis -# -# Generated on: 9/13/2024 -# - -@{ - -# Script module or binary module file associated with this manifest. -RootModule = './IntelliTect.ChatGpt.psm1' - -# Version number of this module. -ModuleVersion = '0.1.0.6' - -# Supported PSEditions -# CompatiblePSEditions = @() - -# ID used to uniquely identify this module -GUID = 'ba706b1d-c6d3-439f-a1da-2973b4f9aa02' - -# Author of this module -Author = 'Mark Michaelis' - -# Company or vendor of this module -CompanyName = 'IntelliTect' - -# Copyright statement for this module -Copyright = '(c) 2023 IntelliTect. All rights reserved.' - -# Description of the functionality provided by this module -Description = 'Provides PowerShell module for calling ChatGPT' - -# Minimum version of the PowerShell engine required by this module -# PowerShellVersion = '' - -# Name of the PowerShell host required by this module -# PowerShellHostName = '' - -# Minimum version of the PowerShell host required by this module -# PowerShellHostVersion = '' - -# Minimum version of Microsoft .NET Framework required by this module. This prerequisite is valid for the PowerShell Desktop edition only. -# DotNetFrameworkVersion = '' - -# Minimum version of the common language runtime (CLR) required by this module. This prerequisite is valid for the PowerShell Desktop edition only. -# ClrVersion = '' - -# Processor architecture (None, X86, Amd64) required by this module -# ProcessorArchitecture = '' - -# Modules that must be imported into the global environment prior to importing this module -# RequiredModules = @() - -# Assemblies that must be loaded prior to importing this module -# RequiredAssemblies = @() - -# Script files (.ps1) that are run in the caller's environment prior to importing this module. -# ScriptsToProcess = @() - -# Type files (.ps1xml) to be loaded when importing this module -# TypesToProcess = @() - -# Format files (.ps1xml) to be loaded when importing this module -# FormatsToProcess = @() - -# Modules to import as nested modules of the module specified in RootModule/ModuleToProcess -# NestedModules = @() - -# Functions to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no functions to export. -FunctionsToExport = 'Invoke-ChatGpt' - -# Cmdlets to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no cmdlets to export. -CmdletsToExport = '*' - -# Variables to export from this module -VariablesToExport = '*' - -# Aliases to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no aliases to export. -AliasesToExport = '*' - -# DSC resources to export from this module -# DscResourcesToExport = @() - -# List of all modules packaged with this module -# ModuleList = @() - -# List of all files packaged with this module -# FileList = @() - -# Private data to pass to the module specified in RootModule/ModuleToProcess. This may also contain a PSData hashtable with additional module metadata used by PowerShell. -PrivateData = @{ - - PSData = @{ - - # Tags applied to this module. These help with module discovery in online galleries. - # Tags = @() - - # A URL to the license for this module. - # LicenseUri = '' - - # A URL to the main website for this project. - # ProjectUri = '' - - # A URL to an icon representing this module. - # IconUri = '' - - # ReleaseNotes of this module - # ReleaseNotes = '' - - # Prerelease string of this module - # Prerelease = '' - - # Flag to indicate whether the module requires explicit user acceptance for install/update/save - # RequireLicenseAcceptance = $false - - # External dependent modules of this module - # ExternalModuleDependencies = @() - - } # End of PSData hashtable - -} # End of PrivateData hashtable - -# HelpInfo URI of this module -# HelpInfoURI = '' - -# Default prefix for commands exported from this module. Override the default prefix using Import-Module -Prefix. -# DefaultCommandPrefix = '' - -} - diff --git a/Modules/IntelliTect.ChatGpt/IntelliTect.ChatGpt.psm1 b/Modules/IntelliTect.ChatGpt/IntelliTect.ChatGpt.psm1 deleted file mode 100644 index 9c3c179..0000000 --- a/Modules/IntelliTect.ChatGpt/IntelliTect.ChatGpt.psm1 +++ /dev/null @@ -1,48 +0,0 @@ - -$completionsUri = 'https://api.openai.com/v1/completions' - -Function Invoke-ChatGpt { - [CmdletBinding()] - param( - [parameter(Mandatory,ValueFromPipeline)][string]$Prompt, - [string]$ApiKey = $env:OpenAIApiKey, - [ValidateRange(0, 2)][float]$Temperature - ) - - if([string]::IsNullOrWhiteSpace($ApiKey)) { - $ApiKey = Read-Host -Prompt "What is the ApiKey (see https://openai.com/api/)?" -MaskInput - if([string]::IsNullOrWhiteSpace($ApiKey)) { - Write-Error "Missing an argument for parameter 'ApiKey'. Specify a parameter of type 'System.String' and try again." - } - } - if($Temperature) { - $body = "{ - ""model"": ""text-davinci-003"", - ""prompt"": ""$Prompt"", - ""temperature"": $Temperature - }" - } - else { - $body = "{ - ""model"": ""text-davinci-003"", - ""prompt"": ""$Prompt"" - }" - } - Write-Debug "`$body = $body" - - $result = Invoke-WebRequest -uri $completionsUri ` - -Headers @{ - 'Content-Type' = 'application/json'; ` - 'Authorization' = "Bearer $ApiKey" - } ` - -Method POST -body $body -ErrorVariable $LastError -ErrorAction Ignore - - # ToDo: Handle error (such as missing API key). - # if($LastError) { - # $result | ConvertFrom-Json - # } - - $result | Select-Object -ExpandProperty 'Content' ` - | ConvertFrom-Json | Select-Object -ExpandProperty 'Choices' ` - | Select-Object -ExpandProperty 'Text' | ForEach-Object { $_.Trim() } -} diff --git a/Modules/IntelliTect.Common/IntelliTect.Common.psd1 b/Modules/IntelliTect.Common/IntelliTect.Common.psd1 index 234bfb6..ccd85fb 100644 --- a/Modules/IntelliTect.Common/IntelliTect.Common.psd1 +++ b/Modules/IntelliTect.Common/IntelliTect.Common.psd1 @@ -12,10 +12,10 @@ RootModule = './IntelliTect.Common.psm1' # Version number of this module. -ModuleVersion = '0.2.0.7' +ModuleVersion = '2.0.0' # Supported PSEditions -# CompatiblePSEditions = @() +CompatiblePSEditions = @('Core') # ID used to uniquely identify this module GUID = '1f6d62b3-f07a-4c78-b205-229f01929acf' @@ -33,7 +33,7 @@ Copyright = '(c) 2017 IntelliTect. All rights reserved.' Description = 'Provides functionality for common functions in PowerShell' # Minimum version of the PowerShell engine required by this module -# PowerShellVersion = '' +PowerShellVersion = '7.2' # Name of the PowerShell host required by this module # PowerShellHostName = '' @@ -69,12 +69,21 @@ Description = 'Provides functionality for common functions in PowerShell' # NestedModules = @() # Functions to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no functions to export. -FunctionsToExport = 'Add-PathToEnvironmentVariable', 'Invoke-ShouldProcess', - 'ConvertFrom-Hashtable', 'Highlight', 'Initialize-Array', - 'Add-DisposeScript', 'Register-AutoDispose', 'Get-TempDirectory', - 'Get-TempFile', 'Get-FileSystemTempItemPath', 'ConvertTo-Lines', - 'Test-Command', 'Test-Property', 'Test-VariableExists', - 'Get-IsWindowsPlatform', 'Set-IsWindowsVariable', 'Wait-ForCondition' +FunctionsToExport = @( + 'Add-PathToEnvironmentVariable', + 'Invoke-ShouldProcess', + 'ConvertFrom-Hashtable', + 'Highlight', + 'Add-DisposeScript', + 'Register-AutoDispose', + 'Get-TempDirectory', + 'Get-TempFile', + 'Get-FileSystemTempItemPath', + 'Test-Command', + 'Test-Property', + 'Test-VariableExists', + 'Wait-ForCondition' +) # Cmdlets to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no cmdlets to export. CmdletsToExport = '*' @@ -112,7 +121,24 @@ PrivateData = @{ # IconUri = '' # ReleaseNotes of this module - # ReleaseNotes = '' + ReleaseNotes = @' +2.0.0 + - Removed obsolete helpers superseded by built-in PowerShell 7 features: + Get-IsWindowsPlatform, Set-IsWindowsVariable (use $IsWindows automatic variable), + Initialize-Array (use @(...) array subexpression), ConvertTo-Lines (use -split). + - Highlight rewritten to emit ANSI escape sequences via Write-Output + instead of Write-Host with -ForegroundColor. Works cross-platform. + - Minimum PowerShell version raised to 7.2. +'@ + + # Tags applied to this module. + Tags = @('IntelliTect', 'Common', 'Utility') + + # A URL to the license for this module. + LicenseUri = 'https://github.com/IntelliTect/PSToolbox/blob/main/LICENSE.txt' + + # A URL to the main website for this project. + ProjectUri = 'https://github.com/IntelliTect/PSToolbox' # Prerelease string of this module # Prerelease = '' diff --git a/Modules/IntelliTect.Common/IntelliTect.Common.psm1 b/Modules/IntelliTect.Common/IntelliTect.Common.psm1 index eec3a0a..25c028a 100644 --- a/Modules/IntelliTect.Common/IntelliTect.Common.psm1 +++ b/Modules/IntelliTect.Common/IntelliTect.Common.psm1 @@ -83,26 +83,43 @@ Function ConvertFrom-Hashtable { #TODO: Outputs ane extra NewLine: $definition = (get-command edit-file).Definition ; $definition | hl name #TODO: Select only the 10 lines around the item found #TODO: Consider renaming $pattern as it indicates the wild card characters (*) are already embedded. -Function Highlight([string]$pattern, [Int32]$Context = 10, [Parameter(ValueFromPipeline = $true)][string[]]$item) { +<# +.SYNOPSIS +Highlights lines matching a pattern using ANSI escape sequences. + +.DESCRIPTION +Writes input lines to the host. Lines matching the wildcard pattern are +highlighted in yellow using ANSI escape sequences; non-matching lines are +emitted unchanged. Works on any PowerShell 7 host that supports VT, including +non-Windows terminals. + +.PARAMETER Pattern +A wildcard pattern (PowerShell -like semantics) to match against each line. + +.PARAMETER Item +The lines to evaluate. Accepts pipeline input. +#> +Function Highlight { + [CmdletBinding()] + param( + [Parameter(Mandatory, Position = 0)][string]$Pattern, + [Parameter(ValueFromPipeline)][string[]]$Item + ) PROCESS { - $items = $item.Split([Environment]::NewLine) - foreach ($line in $items) { - if ( $line -like "*$pattern*") { - write-host $line -foregroundcolor Yellow - } - else { - write-host $line -foregroundcolor white + $esc = [char]27 + foreach ($entry in $Item) { + foreach ($line in ($entry -split [Environment]::NewLine)) { + if ($line -like "*$Pattern*") { + Write-Output "$esc[33m$line$esc[0m" + } + else { + Write-Output $line + } } } } } -set-alias HL highlight - -function Initialize-Array { - [CmdletBinding()] - [OutputType('System.Array')] - [System.Array]$args | Write-Output -} +Set-Alias HL Highlight Function Add-DisposeScript { [CmdletBinding()] @@ -303,18 +320,6 @@ Function Get-FileSystemTempItemPath { } Set-Alias -Name Get-TempItemPath -Value Get-FileSystemTempItemPath -Function ConvertTo-Lines { - [CmdLetBinding()] param( - [Parameter(Position = 1, Mandatory, ValueFromPipeline)] - [string]$InputObject, - [string]$Deliminator = [Environment]::NewLine - ) - - PROCESS { - $InputObject -split $deliminator - } -} - <# .SYNOPSIS Determines whether a command exists. @@ -378,25 +383,6 @@ Function Test-VariableExists { } } -Function Get-IsWindowsPlatform { - [OutputType([bool])] - [CmdletBinding()]param() - return ($IsWindows -or ('PSEdition' -in $PSVersionTable.Keys) ` - -and (($PSVersionTable.PSEdition -eq 'Desktop') -or ($PSVersionTable.PSEdition -eq 'Core'))) -} - -Function Set-IsWindowsVariable { - [CmdletBinding(SupportsShouldProcess)]param() - if (-not (Test-VariableExists "IsWindows")) { - Invoke-ShouldProcess -ContinueMessage 'Seting global:IsWindows variable' -InquireMessage 'Set global:IsWindows variable?' ` - -Caption 'Set global:IsWindows variable' { - Set-Variable -Name "IsWindows" -Value ` - (Get-IsWindowsPlatform) -Scope global - } - } -} -Set-IsWindowsVariable - <# .SYNOPSIS Wait for the condition to be true on all inputObject items. diff --git a/Modules/IntelliTect.File/IntelliTect.File.psd1 b/Modules/IntelliTect.File/IntelliTect.File.psd1 index e690d59..c61d10d 100644 --- a/Modules/IntelliTect.File/IntelliTect.File.psd1 +++ b/Modules/IntelliTect.File/IntelliTect.File.psd1 @@ -12,7 +12,10 @@ RootModule = 'IntelliTect.File.psm1' # Version number of this module. -ModuleVersion = '0.5' +ModuleVersion = '2.0.0' + +# Supported PSEditions +CompatiblePSEditions = @('Core') # ID used to uniquely identify this module GUID = 'e53c95a2-c105-4910-b0d5-3067a6a9d7a7' @@ -27,10 +30,10 @@ CompanyName = 'IntelliTect' # Copyright = '' # Description of the functionality provided by this module -Description = 'Cmdlets for managing files with Powershell' +Description = 'Cmdlets for managing files with PowerShell' # Minimum version of the Windows PowerShell engine required by this module -# PowerShellVersion = '' +PowerShellVersion = '7.2' # Name of the Windows PowerShell host required by this module # PowerShellHostName = '' @@ -92,20 +95,27 @@ PrivateData = @{ PSData = @{ - # Tags applied to this module. These help with module discovery in online galleries. - # Tags = @() + # Tags applied to this module. + Tags = @('IntelliTect', 'File', 'Utility') # A URL to the license for this module. - # LicenseUri = '' + LicenseUri = 'https://github.com/IntelliTect/PSToolbox/blob/main/LICENSE.txt' # A URL to the main website for this project. - # ProjectUri = '' + ProjectUri = 'https://github.com/IntelliTect/PSToolbox' # A URL to an icon representing this module. # IconUri = '' # ReleaseNotes of this module - # ReleaseNotes = '' + ReleaseNotes = @' +2.0.0 + - Get-FileEncoding rewritten to use raw FileStream (PowerShell 7 removed + `Get-Content -Encoding byte`). Now works on PowerShell 7+. + - Removed n-ary Join-Path wrapper; PowerShell 7 Join-Path natively accepts + multiple child paths. + - Minimum PowerShell version raised to 7.2. +'@ } # End of PSData hashtable diff --git a/Modules/IntelliTect.File/IntelliTect.File.psm1 b/Modules/IntelliTect.File/IntelliTect.File.psm1 index 465025b..af14cc5 100644 --- a/Modules/IntelliTect.File/IntelliTect.File.psm1 +++ b/Modules/IntelliTect.File/IntelliTect.File.psm1 @@ -121,14 +121,23 @@ Same as previous example but fixes encoding using set-content Function Get-FileEncoding { [CmdletBinding()] + [OutputType([string])] Param ( [Parameter(Mandatory = $True, ValueFromPipelineByPropertyName = $True)] [string]$Path ) - [byte[]]$byte = Get-Content -Encoding byte -ReadCount 4 -TotalCount 4 -Path $Path - #Write-Host Bytes: $byte[0] $byte[1] $byte[2] $byte[3] + $resolved = (Resolve-Path -LiteralPath $Path).ProviderPath + $stream = [System.IO.File]::OpenRead($resolved) + try { + $byte = [byte[]]::new(4) + $read = $stream.Read($byte, 0, 4) + } + finally { + $stream.Dispose() + } + if ($read -lt 1) { return 'ASCII' } # EF BB BF (UTF8) if ( $byte[0] -eq 0xef -and $byte[1] -eq 0xbb -and $byte[2] -eq 0xbf ) { Write-Output 'UTF8' } @@ -177,6 +186,16 @@ Function Get-FileEncoding { Write-Output 'ASCII' } } +# TODO: Add functions below +# See https://github.com/MarkMichaelis/Private/blob/InitialMachineSetup/Install-Dropbox.ps1 for +# Function Set-ItemShortName +# Function Close-OpenFileHandle +# Function Get-ShortName +# Function Compare-Path +# Function Move-ItemWithOpenHandles +# Function Copy-Acl + + if(($PSVersionTable.PSEdition -eq 'Desktop') -and ($PSVersionTable.Clrversion.Major -ge 4)) { <# The current implementation only works with Windows Recycle bin from Full Framework @@ -305,44 +324,6 @@ Function Remove-FileSystemItemForcibly { } } -# Only create this function if it isn't build into the framework. -try { - Microsoft.PowerShell.Management\Join-Path 'first' 'second' 'third' -ErrorAction ignore -} -catch [System.Management.Automation.ParameterBindingException] { - <# - .SYNOPSIS - Provide a wrapper to `Microsoft.PowerShell.Management\Join-Path` that can take an unlimited number of parameters. - .DESCRIPTION - `Microsoft.PowerShell.Management\Join-Path` only allows two parameters. This implementation of Join-Path - wraps `Microsoft.PowerShell.Management\Join-Path` and supports n parameters. - .EXAMPLE - PS C:\> Join-Path c:\first second third - c:\first\second\third - - .INPUTS - None - .OUTPUTS - string - .NOTES - None - #> - Function Join-Path { - [CmdletBinding()] - [OutputType([string])] - param ( - [Parameter(Mandatory)][string]$BeginPath, - [Parameter(Mandatory,ValueFromRemainingArguments)][string[]]$ChildPathLet - ) - - #TODO: Add support for ValueFromPipeline - - $pathSuffix=$BeginPath - @($ChildPathLet) | ForEach-Object{ $pathSuffix = Microsoft.PowerShell.Management\Join-Path $pathSuffix $_} - Write-Output $pathSuffix - } -} - # TODO: Add functions below # See https://github.com/MarkMichaelis/Private/blob/InitialMachineSetup/Install-Dropbox.ps1 for # Function Set-ItemShortName diff --git a/Modules/IntelliTect.Git/IntelliTect.Git.psd1 b/Modules/IntelliTect.Git/IntelliTect.Git.psd1 index 6acd1c4..04ff9bd 100644 --- a/Modules/IntelliTect.Git/IntelliTect.Git.psd1 +++ b/Modules/IntelliTect.Git/IntelliTect.Git.psd1 @@ -12,7 +12,10 @@ RootModule = './IntelliTect.Git.psm1' # Version number of this module. -ModuleVersion = '1.0.0.0' +ModuleVersion = '2.0.0' + +# Supported PSEditions +CompatiblePSEditions = @('Core') # ID used to uniquely identify this module GUID = 'fa7c69f2-54d0-48bb-986e-13aaf13b32d7' @@ -30,7 +33,7 @@ CompanyName = 'IntelliTect' Description = 'Provides git helper functions for Git' # Minimum version of the Windows PowerShell engine required by this module -# PowerShellVersion = '' +PowerShellVersion = '7.2' # Name of the Windows PowerShell host required by this module # PowerShellHostName = '' @@ -91,20 +94,30 @@ PrivateData = @{ PSData = @{ - # Tags applied to this module. These help with module discovery in online galleries. - # Tags = @() + # Tags applied to this module. + Tags = @('IntelliTect', 'Git') # A URL to the license for this module. - # LicenseUri = '' + LicenseUri = 'https://github.com/IntelliTect/PSToolbox/blob/main/LICENSE.txt' # A URL to the main website for this project. - # ProjectUri = '' + ProjectUri = 'https://github.com/IntelliTect/PSToolbox' # A URL to an icon representing this module. # IconUri = '' # ReleaseNotes of this module - # ReleaseNotes = '' + ReleaseNotes = @' +2.0.0 + - Push-GitBranch: now uses native git invocation for exit-code detection, + throws on non-zero git push exit codes, and uses Write-Verbose instead + of Write-Host. + - New-GitIgnore: switched template source from gitignore.io (defunct) to + toptal.com/developers/gitignore. Removed embedded fallback list and + gracefully omits the ProjectType dynamic parameter when the template + list cannot be fetched. + - Minimum PowerShell version raised to 7.2. +'@ } # End of PSData hashtable diff --git a/Modules/IntelliTect.Git/IntelliTect.Git.psm1 b/Modules/IntelliTect.Git/IntelliTect.Git.psm1 index 9660467..643bdb3 100644 --- a/Modules/IntelliTect.Git/IntelliTect.Git.psm1 +++ b/Modules/IntelliTect.Git/IntelliTect.Git.psm1 @@ -159,44 +159,31 @@ $Script:contentTypes = $null Function Script:Get-GitIgnoreContentTypes { [CmdletBinding()]param() if(!$Script:contentTypes) { - try { - $response = Invoke-WebRequest -Uri 'https://www.gitignore.io/api/list' # -ErrorAction is ignored + try { + $response = Invoke-WebRequest -Uri 'https://www.toptal.com/developers/gitignore/api/list' if($response) { $Script:contentTypes = $response.Content -replace "`n",',' -split ',' } - } catch [System.Net.WebException] { - Write-Warning "$($_.Exception.Message)" - $Script:contentTypes = 'actionscript','ada','adobe','agda','alteraquartusiiandroid','anjuta','ansible','apachecordova','appbuilderappceleratortitanium','appcode','appengine','aptanastudio - ','arcanistarchive','archives','archlinuxpackages','assembler','atmelstudioautomationstudio','autotools','basercms','basic','batchbazaar','bazel','bitrix','blackbox','bluejbower','bricxcc','c','c++','cakecakep - hp','calabash','carthage','ceylon','cfwheelschefcookbook','clion','clojure','cloud9','cmakecocos2dx','code','code-java','codeblocks','codeignitercodeio','codekit','coffeescript','commonl - isp','composercompressedarchive','compression','concrete5','coq','craftcmscrashlytics','crossbar','crystal','csharp','cudacvs','d','dart','darteditor','datarecoverydelphi','django','dm', - 'dotfilessh','dotsettingsdreamweaver','dropbox','drupal','eagle','easybookeclipse','eiffelstudio','elasticbeanstalk','elisp','elixirelm','emacs','ember','ensime','episervererlang','espre - sso','expressionengine','extjs','f#fancy','fastlane','finale','flashbuilder','flexflexbuilder','fontforge','forcedotcom','fortran','freepascalfuelphp','fusetools','gcov','genero4gl','ggt - sgit','gitbook','go','gpg','gradlegrails','greenfoot','grunt','gwt','haskellhsp','hugo','iar_ewarm','idris','igorproimages','infer','intellij','intellij+iml','jabrefjava','jboss','jdevel - oper','jekyll','jetbrainsjmeter','joe','joomla','jspm','juliajustcode','kate','kdevelop4','kicad','kirby2kobalt','kohana','komodoedit','labview','laravellatex','lazarus','leiningen','lem - onstand','lessliberosoc','librarian-chef','libreoffice','lilypond','linuxlithium','lua','lyx','m2e','macosmagento','matlab','maven','mercurial','mercurymetaprogrammingsystem','meteorjs', - 'microsoftoffice','modelsim','modxmomentics','monodevelop','nanoc','ncrunch','nescnetbeans','nette','nim','ninja','nodenotepadpp','objective-c','ocaml','octobercms','opaopencart','opencv - ','openfoam','openframeworks','oracleformsosx','otto','packer','perl','ph7cmsphalcon','phoenix','phpstorm','pimcore','pinegrowplayframework','plone','polymer','premake-gmake','prestashop - processing','progressabl','puppet-librarian','purescript','pycharmpython','qml','qooxdoo','qt','rracket','rails','redcar','redis','rhodesrhomobileroot','ros','ruby','rubymine','rustsas', - 'sass','sbt','scala','schemescons','scrivener','sdcc','seamgen','senchatouchserverless','shopware','silverstripe','sketchup','slickeditsmalltalk','sonar','sourcepawn','splunk','statastel - la','stellar','stylus','sublimetext','sugarcrmsvn','swift','symfony','symphonycms','synologysynopsysvcs','tags','tarmainstallmate','terraform','testtestcomplete','tex','textmate','textpa - ttern','theos-tweaktortoisegit','tower','turbogears2','typings','typo3umbraco','unity','unrealengine','vagrant','vimvirtualenv','virtuoso','visualstudio','visualstudiocode','vivadovvvv', - 'waf','wakanda','webmethods','webstormwerckercli','windows','wintersmith','wordpress','xamarinstudioxcode','xilinxise','xojo','xtext','yeomanyii','yii2','zendframework','zephir' - } + } catch { + Write-Warning "Unable to retrieve gitignore template list: $($_.Exception.Message)" + $Script:contentTypes = @() + } } return $Script:contentTypes } Function New-GitIgnore { [CmdletBinding(SupportsShouldProcess)] param( - # [Parameter(Mandatory)]$ProjectType = "VisualStudio", [ValidateScript({Test-Path $_ -PathType Container })][string]$Path = $pwd, [switch]$Force ) DynamicParam { - New-DynamicParam -Name ProjectType -ValidateSet (Script:Get-GitIgnoreContentTypes) ` - -HelpMessage 'The project types available. (The default is "VisualStudio")' ` - -Position 1 -Type ([string]) + $types = Script:Get-GitIgnoreContentTypes + if ($types -and $types.Count -gt 0) { + New-DynamicParam -Name ProjectType -ValidateSet $types ` + -HelpMessage 'The project types available. (The default is "VisualStudio")' ` + -Position 1 -Type ([string]) + } } BEGIN { $ProjectType = $PSBoundParameters.ProjectType @@ -207,11 +194,11 @@ Function New-GitIgnore { PROCESS { try { $gitIgnorePath = (Microsoft.PowerShell.Management\Join-Path -Path $Path -ChildPath '.gitignore') - $response = Invoke-WebRequest -Uri "https://www.gitignore.io/api/$ProjectType" + $response = Invoke-WebRequest -Uri "https://www.toptal.com/developers/gitignore/api/$ProjectType" if ($PSCmdlet.ShouldProcess("'$gitIgnorePath' file", "Create '$gitIgnorePath' file")) { - $response | Select-Object -ExpandProperty Content | Out-File -FilePath $gitIgnorePath -Encoding ascii -NoClobber:(!$Force) + $response | Select-Object -ExpandProperty Content | Out-File -FilePath $gitIgnorePath -Encoding utf8 -NoClobber:(!$Force) } - } catch [System.Net.WebException] { + } catch { Write-Error "$($_.Exception.Message)" } } @@ -357,30 +344,37 @@ function Push-GitBranch { [switch]$SetUpstream ) - # Check if an upstream branch exists. Since Invoke-GitCommand doesn't (yet) use start-process and we don't return the $LastExitCode cleanly, - # we call git explicitly here until Invoke-GitCommand is fixed. - Write-Host "Executing: git rev-parse --abbrev-ref '@{upstream}'" - git rev-parse --abbrev-ref '@{upstream}' 2>&1 >> $null + # Determine whether the current branch has an upstream configured. + # We invoke git directly (not via Invoke-GitCommand) because we need + # access to $LASTEXITCODE without other commands clobbering it. + Write-Verbose "Executing: git rev-parse --abbrev-ref '@{upstream}'" + $null = & git rev-parse --abbrev-ref '@{upstream}' 2>&1 + $hasUpstream = ($LASTEXITCODE -eq 0) - [string]$result=$null - if($LASTEXITCODE -eq 0) { + [string]$result = $null + if($hasUpstream) { if($SetUpstream) { Write-Information -MessageData '-SetUpstream specified unnecessarily. Switch is ignored.' } if ($PSCmdlet.ShouldProcess('Pushing current branch to remote', 'Do you want to push the current branch to remote','Push-GitBranch' )) { - $result=Invoke-GitCommand -ActionMessage 'Push current branch to remote.' -command 'git push' 2>&1 + $result = Invoke-GitCommand -ActionMessage 'Push current branch to remote.' -command 'git push' 2>&1 + if ($LASTEXITCODE -ne 0) { + throw "git push failed with exit code $LASTEXITCODE." + } } } elseif($SetUpstream) { if ($PSCmdlet.ShouldProcess('Pushing current branch to remote and setting upstream because there isn''t one already', ` 'Do you want to push the current branch to remote and set the upstream branch', 'Push-GitBranch')) { - #ToDo: Switch Invoke-GitCommand to use Start-Process in order to capture the output. - $result=Invoke-GitCommand -ActionMessage 'Push current branch to remote.' -command "git push --set-upstream origin $(Get-GitBranch)" + $result = Invoke-GitCommand -ActionMessage 'Push current branch to remote.' -command "git push --set-upstream origin $(Get-GitBranch)" + if ($LASTEXITCODE -ne 0) { + throw "git push --set-upstream failed with exit code $LASTEXITCODE." + } } } else { throw 'Remote upstream branch not set. Use -SetUpstream to push this branch.' } - Write-Output $result.Trim() + if ($result) { Write-Output ([string]$result).Trim() } } Function Invoke-GitDiff { diff --git a/Modules/IntelliTect.Google/IntelliTect.Google.psd1 b/Modules/IntelliTect.Google/IntelliTect.Google.psd1 deleted file mode 100644 index 44df235..0000000 --- a/Modules/IntelliTect.Google/IntelliTect.Google.psd1 +++ /dev/null @@ -1,120 +0,0 @@ -# -# Module manifest for module 'Google' -# -# Generated by: Andrew -# -# Generated on: 5/16/2016 -# - -@{ - -# Script module or binary module file associated with this manifest. -RootModule = './IntelliTect.Google.psm1' - -# Version number of this module. -ModuleVersion = '1.5.3.0' - -# ID used to uniquely identify this module -GUID = '6f59409a-859f-4066-8882-0c9c4d0dbd97' - -# Author of this module -Author = 'Andrew Scott' - -# Company or vendor of this module -CompanyName = 'IntelliTect' - -# Copyright statement for this module -# Copyright = '' - -# Description of the functionality provided by this module -Description = 'Provides functions for interacting with non-API-based Google services.' - -# Minimum version of the Windows PowerShell engine required by this module -# PowerShellVersion = '' - -# Name of the Windows PowerShell host required by this module -# PowerShellHostName = '' - -# Minimum version of the Windows PowerShell host required by this module -# PowerShellHostVersion = '' - -# Minimum version of Microsoft .NET Framework required by this module -# DotNetFrameworkVersion = '' - -# Minimum version of the common language runtime (CLR) required by this module -# CLRVersion = '' - -# Processor architecture (None, X86, Amd64) required by this module -# ProcessorArchitecture = '' - -# Modules that must be imported into the global environment prior to importing this module -RequiredModules = @('IntelliTect.CredentialManager') - -# Assemblies that must be loaded prior to importing this module -# RequiredAssemblies = @() - -# Script files (.ps1) that are run in the caller's environment prior to importing this module. -# ScriptsToProcess = @() - -# Type files (.ps1xml) to be loaded when importing this module -# TypesToProcess = @() - -# Format files (.ps1xml) to be loaded when importing this module -# FormatsToProcess = @() - -# Modules to import as nested modules of the module specified in RootModule/ModuleToProcess -# NestedModules = @() - -# Functions to export from this module -FunctionsToExport = @('Search-Google', 'Get-GoogleSession', 'Get-GoogleLocationHistoryKmlFile') - -# Cmdlets to export from this module -CmdletsToExport = '*' - -# Variables to export from this module -VariablesToExport = '*' - -# Aliases to export from this module -AliasesToExport = '*' - -# DSC resources to export from this module -# DscResourcesToExport = @() - -# List of all modules packaged with this module -# ModuleList = @() - -# List of all files packaged with this module -# FileList = @() - -# Private data to pass to the module specified in RootModule/ModuleToProcess. This may also contain a PSData hashtable with additional module metadata used by PowerShell. -PrivateData = @{ - - PSData = @{ - - # Tags applied to this module. These help with module discovery in online galleries. - # Tags = @() - - # A URL to the license for this module. - # LicenseUri = '' - - # A URL to the main website for this project. - # ProjectUri = '' - - # A URL to an icon representing this module. - # IconUri = '' - - # ReleaseNotes of this module - # ReleaseNotes = '' - - } # End of PSData hashtable - -} # End of PrivateData hashtable - -# HelpInfo URI of this module -# HelpInfoURI = '' - -# Default prefix for commands exported from this module. Override the default prefix using Import-Module -Prefix. -# DefaultCommandPrefix = '' - -} - diff --git a/Modules/IntelliTect.Google/IntelliTect.Google.psm1 b/Modules/IntelliTect.Google/IntelliTect.Google.psm1 deleted file mode 100644 index bf0432c..0000000 --- a/Modules/IntelliTect.Google/IntelliTect.Google.psm1 +++ /dev/null @@ -1,149 +0,0 @@ - -<# - .Synopsis - Searches the Googes - .DESCRIPTION - Lets you quickly start a search from within Powershell - - .EXAMPLE - Search-Google Error code 5 - --New google search results will open listing top entries for 'error code 5' - - .EXAMPLE - search-google (gwmi win32_baseboard).Product maximum ram - - If you need to get the maximum ram for your motherboard, you can even use this - type of syntax - - See http://foxdeploy.com/code-and-scripts/search-google/. -#> -Function Search-Google -{ - Begin - { - $query='https://www.google.com/search?q=' - } - Process - { - if ($args.Count -eq 0) - { - "Args were empty, commiting `$input to `$args" - Set-Variable -Name args -Value (@($input) | % {$_}) - "Args now equals $args" - $args = $args.Split() - } - ELSE - { - "Args had value, using them instead" - } - - Write-Host $args.Count, "Arguments detected" - "Parsing out Arguments: $args" - for ($i=0;$i -le $args.Count;$i++){ - $args | % {"Arg $i `t $_ `t Length `t" + $_.Length, " characters"} } - - $args | % {$query = $query + "$_+"} - - } - End - { - $url = $query.Substring(0,$query.Length-1) - "Final Search will be $url `nInvoking..." - start "$url" - } -} - - - -Function Get-GoogleSession { - [CmdletBinding()] param( - [PSCredential] $credential = $null, - [switch] $SaveCredential - ) - - if (-not $credential) { - $credential = Get-CredentialManagerCredential "IntelliTect.Google.Saved" -ErrorAction SilentlyContinue - if (-not $credential) { - $credential = Get-Credential - } - else { - Write-Host "Using saved credential 'IntelliTect.Google.Saved'" - } - if (-not $credential) { - throw "No credentials provided" - } - } - - if ($SaveCredential) { - Set-CredentialManagerCredential -TargetName "IntelliTect.Google.Saved" -credential $credential - } - - Write-Warning "You may get a popup dialog asking you to allow cookies when using Get-GoogleSession." - Write-Warning "If it doesn't work, make sure that dialog isn't waiting for a response underneath a window somewhere." - - $EnterEmailPage = Invoke-WebRequest https://accounts.google.com/ServiceLoginAuth -SessionVariable session - $EnterEmailPage.Forms[0].Fields["Email"] = $credential.UserName - - $EnterPasswordPage = Invoke-WebRequest -Uri $EnterEmailPage.Forms[0].Action -Method POST -Body $EnterEmailPage.Forms[0].Fields -WebSession $session - if ($EnterPasswordPage.Content -match "Google doesn't recognize that email"){ - throw "The provided username to Get-GoogleSession is not valid" - } - $EnterPasswordPage.Forms[0].Fields["Passwd"] = $credential.GetNetworkCredential().Password - $EnterPasswordPage.Forms[0].Fields["Email"] = $credential.UserName - - - $AuthCompletePage = Invoke-WebRequest -Uri $EnterPasswordPage.Forms[0].Action -Method POST -Body $EnterPasswordPage.Forms[0].Fields -WebSession $session - if ($AuthCompletePage.Content -match "The email and password you entered don't match"){ - throw "The provided password to Get-GoogleSession is not valid" - } - $sidCookie = ($session.Cookies.GetCookies("https://www.google.com") | where {$_.Name -eq "SID"}).Value - if (-not $sidCookie){ - throw "Could not authenticate with Google. Please verify your credentials and try again" - } - - return $session -} - -#pb=!1m8!1m3!1iYYYY!2iMM!3iDD!2m3!1iYYYY!2iMM!3iDD -Function Get-GoogleLocationHistoryKmlFileUri { - [CmdletBinding()] param( - [Parameter(Mandatory=$true)] - [DateTime] $DateTime - ) - #Subtract 1 from the month because the months are Zero based. - #Note that KML files are located in PST. - #authuser=1 indicates which user in the Goolge User Dropdown (0 based) - return "https://www.google.com/maps/timeline/kml?authuser=1&pb=!1m8!1m3!1i$($DateTime.Year)!2i$($DateTime.Month-1)!3i$($DateTime.Day)!2m3!1i$($DateTime.Year)!2i$($DateTime.Month-1)!3i$($DateTime.Day)" - #pb=!1m8!1m3!1iYYYY !2iMM !3iDD !2m3!1iYYYY !2iMM !3iDD -} -<# -$locationHistoryUrl = "https://www.google.com/maps/timeline/kml?authuser=0&pb=!1m8!1m3!1i2016!2i3!3i9!2m3!1i2016!2i3!3i9" -$webRequestResult1 = invoke-webrequest -uri "https://accounts.google.com/ServiceLogin" -SessionVariable sessionData1 -$webRequestResult2 = Invoke-WebRequest -Uri "https://accounts.google.com/AccountLoginInfo" -Method Post -Body $webRequestResult1.Forms[0].Fields -SessionVariable sessionData2 -$webRequestResult3 = Invoke-WebRequest -Uri $locationHistoryUrl -Method Get -Body $webRequestResult1.Forms[0].Fields -SessionVariable sessionData2 -UseBasicParsing -OutFile out.txt -#> - -Function Get-GoogleLocationHistoryKmlFile { - [CmdletBinding()] param( - [Microsoft.PowerShell.Commands.WebRequestSession] $session = (Get-GoogleSession), - [parameter(ValueFromPipeline)][DateTime] $DateTime = [DateTime]::Now.AddDays(-1), - [System.IO.FileInfo] $outFile = $null - ) - - $uri = Get-GoogleLocationHistoryKmlFileUri $DateTime - - if (-not $outFile) { - $response = Invoke-WebRequest -Uri $uri -WebSession $session - $disposition = $response.Headers.'Content-Disposition' - $fileName = ([regex]'filename="(.*)"').Match($disposition).Groups[1].Value - if (-not $fileName){ - $fileName = "LocationHistory-$($DateTime.ToString("s"))" - Write-Error "Couldn't determine file name for KML file. Using $fileName." - } - $response.Content | out-file $fileName - } - else { - Invoke-WebRequest -Uri $uri -OutFile $outFile -WebSession $session - } - -} \ No newline at end of file diff --git a/Modules/IntelliTect.MicrosoftWord/IntelliTect.MicrosoftWord.psd1 b/Modules/IntelliTect.MicrosoftWord/IntelliTect.MicrosoftWord.psd1 deleted file mode 100644 index 5facf1c..0000000 --- a/Modules/IntelliTect.MicrosoftWord/IntelliTect.MicrosoftWord.psd1 +++ /dev/null @@ -1,138 +0,0 @@ -# -# Module manifest for module 'IntelliTect.MicrosoftWord' -# -# Generated by: Mark Michaelis, Kelly Adams -# -# Generated on: 12/21/2022 -# - -@{ - -# Script module or binary module file associated with this manifest. -RootModule = './IntelliTect.MicrosoftWord.psm1' - -# Version number of this module. -ModuleVersion = '0.5.0.15' - -# Supported PSEditions -# CompatiblePSEditions = @() - -# ID used to uniquely identify this module -GUID = '46f84048-02ed-4a11-8ec5-00be86a95abb' - -# Author of this module -Author = 'Mark Michaelis, Kelly Adams' - -# Company or vendor of this module -CompanyName = 'IntelliTect' - -# Copyright statement for this module -Copyright = '(c) Mark Michaelis, Kelly Adams. All rights reserved.' - -# Description of the functionality provided by this module -Description = 'Provides an easy-to-use interface to Microsoft Word via PowerShell.' - -# Minimum version of the PowerShell engine required by this module -# PowerShellVersion = '' - -# Name of the PowerShell host required by this module -# PowerShellHostName = '' - -# Minimum version of the PowerShell host required by this module -# PowerShellHostVersion = '' - -# Minimum version of Microsoft .NET Framework required by this module. This prerequisite is valid for the PowerShell Desktop edition only. -# DotNetFrameworkVersion = '' - -# Minimum version of the common language runtime (CLR) required by this module. This prerequisite is valid for the PowerShell Desktop edition only. -# ClrVersion = '' - -# Processor architecture (None, X86, Amd64) required by this module -# ProcessorArchitecture = '' - -# Modules that must be imported into the global environment prior to importing this module -# RequiredModules = @() - -# Assemblies that must be loaded prior to importing this module -# RequiredAssemblies = @() - -# Script files (.ps1) that are run in the caller's environment prior to importing this module. -ScriptsToProcess = './tools/install.ps1' - -# Type files (.ps1xml) to be loaded when importing this module -# TypesToProcess = @() - -# Format files (.ps1xml) to be loaded when importing this module -# FormatsToProcess = @() - -# Modules to import as nested modules of the module specified in RootModule/ModuleToProcess -# NestedModules = @() - -# Functions to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no functions to export. -FunctionsToExport = 'Test-FileIsLocked', 'Open-MicrosoftWord', 'Open-WordDocument', - 'Get-WordDocumentComment', 'Update-WordDocumentAcceptAllChanges', - 'Set-WordDocumentTrackChanges', 'Get-WordDocumentTrackChanges', - 'Set-WordDocumentProtection', 'Invoke-WordDocumentFindReplace', - 'Invoke-WordDocumentFind', 'Compare-WordDocument', - 'Get-WordDocumentProperty', 'Set-WordDocumentProperty', - 'Get-WordDocumentTemplate', 'Set-WordDocumentTemplate' - -# Cmdlets to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no cmdlets to export. -CmdletsToExport = '*' - -# Variables to export from this module -VariablesToExport = '*' - -# Aliases to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no aliases to export. -AliasesToExport = '*' - -# DSC resources to export from this module -# DscResourcesToExport = @() - -# List of all modules packaged with this module -# ModuleList = @() - -# List of all files packaged with this module -# FileList = @() - -# Private data to pass to the module specified in RootModule/ModuleToProcess. This may also contain a PSData hashtable with additional module metadata used by PowerShell. -PrivateData = @{ - - PSData = @{ - - # Tags applied to this module. These help with module discovery in online galleries. - # Tags = @() - - # A URL to the license for this module. - # LicenseUri = '' - - # A URL to the main website for this project. - # ProjectUri = '' - - # A URL to an icon representing this module. - # IconUri = '' - - # ReleaseNotes of this module - # ReleaseNotes = '' - - # Prerelease string of this module - # Prerelease = '' - - # Flag to indicate whether the module requires explicit user acceptance for install/update/save - # RequireLicenseAcceptance = $false - - # External dependent modules of this module - # ExternalModuleDependencies = @() - - } # End of PSData hashtable - -} # End of PrivateData hashtable - -# HelpInfo URI of this module -# HelpInfoURI = '' - -# Default prefix for commands exported from this module. Override the default prefix using Import-Module -Prefix. -# DefaultCommandPrefix = '' - -} - diff --git a/Modules/IntelliTect.MicrosoftWord/IntelliTect.MicrosoftWord.psm1 b/Modules/IntelliTect.MicrosoftWord/IntelliTect.MicrosoftWord.psm1 deleted file mode 100644 index 2503d43..0000000 --- a/Modules/IntelliTect.MicrosoftWord/IntelliTect.MicrosoftWord.psm1 +++ /dev/null @@ -1,1132 +0,0 @@ -try { - $wordAssemblyPath = "$($PSScriptRoot)/Lib/WordInteropNugetPackage/lib/netstandard2.0/Microsoft.Office.Interop.Word.dll" - add-type -Path $wordAssemblyPath -} -catch { - throw 'Unable to find Microsoft.Office.Interop.Word package (see https://www.nuget.org/packages/Microsoft.Office.Interop.Word)' -} - - -#TODO: Remove and use dependency on File.ps1 (module needed) instead. -Function Test-FileIsLocked { - [CmdletBinding()] - ## Attempts to open a file and trap the resulting error if the file is already open/locked - param ([string]$filePath ) - $filelocked = $false - try { - $fileInfo = New-Object System.IO.FileInfo $filePath - $fileStream = $fileInfo.Open( [System.IO.FileMode]::OpenOrCreate, [System.IO.FileAccess]::ReadWrite, [System.IO.FileShare]::None ) - } - catch { - $filelocked = $true - } - finally { - if ($fileStream) { - $fileStream.Close() - } - } - - return $filelocked -} -<# - -This document http://blogs.technet.com/b/heyscriptingguy/archive/2012/08/01/find-all-word-documents-that-contain-a-specific-phrase.aspx -describes word cleanup as: - [System.Runtime.InteropServices.Marshal]::ReleaseComObject($range) | Out-Null - [System.Runtime.InteropServices.Marshal]::ReleaseComObject($document) | Out-Null - [System.Runtime.InteropServices.Marshal]::ReleaseComObject($application) | Out-Null - Remove-Variable -Name application - [gc]::collect() - [gc]::WaitForPendingFinalizers() - - -See additional enums at the bottom. -#> - - -<# - .SYNOPSIS - Provides a Using statement for PowerShell for COM objects specifically. - - .EXAMPLE - Invoke-ComUsing ($application = $sr.Start-MicrosoftWord) { - $application.Visible = $false - } - - This command instantiates the Word Application, sets it to invisible, and then removes all COM references. -#> -Function script:Invoke-ComUsing { - [CmdletBinding()] param ( - [ValidateScript( { [System.Runtime.InteropServices.Marshal]::IsComObject( $_) })][Parameter(Mandatory, ValueFromPipeline)][System.IDisposable] $inputObject, - [Parameter(Mandatory, ValueFromPipeline)][ScriptBlock] $scriptBlock - ) - # See http://weblogs.asp.net/adweigert/powershell-adding-the-using-statement - # for original implementation - - # TODO: Create a Non-Com version of this that the Com version one then calls. - - try { - &$scriptBlock - } - finally { - if ($inputObject -ne $null) { - [System.Runtime.InteropServices.Marshal]::ReleaseComObject($inputObject) | Out-Null - [System.GC]::Collect() - [System.GC]::WaitForPendingFinalizers() - - if ($inputObject.psbase -eq $null) { - $inputObject.Dispose() - } - else { - $inputObject.psbase.Dispose() - } - } - } -} - - -Function Open-MicrosoftWord { - [CmdletBinding()] param( - ) - return new-object -ComObject Word.Application -} - -Function Open-WordDocument { - [CmdletBinding()] param( - [ValidateScript( { Test-Path $_ -PathType Leaf })] - [Parameter(Mandatory, ValueFromPipeLine, ValueFromPipelineByPropertyName, Position)] - [Alias("FullName", "InputObject")] - [string[]]$Path, - [switch]$ReadWrite, - $WordApplication # An already open instance of the Microsoft Word application. - ) - PROCESS { - $Path | ForEach-Object { - $eachDocumentPath = (Resolve-Path $_).Path - [bool]$readOnly = ![bool]$ReadWrite.IsPresent # TODO: Blog: switch and bool are not the same - [bool]$ConfirmConversions = $false # Optional Object. True to display the Convert File dialog box if the file isn't in Microsoft Word format. - - if (!$WordApplication) { - $WordApplication = Open-MicrosoftWord - } - - if (Test-FileIsLocked $eachDocumentPath) { - throw "The $eachDocumentPath document is already opened." - } - - $document = $WordApplication.Documents.Open($eachDocumentPath, $confirmConversions, $ReadOnly) #For additional parameters see https://msdn.microsoft.com/en-us/library/microsoft.office.interop.word.documents.open.aspx - if ($readOnly) { - # Used to avoid the error, "This method or property is not available because this command is not available for reading." - # when using Find.Execute on the document - # see http://blogs.msmvps.com/wordmeister/2013/02/22/word2013bug-not-available-for-reading/ - $document.ActiveWindow.View = [Microsoft.Office.Interop.Word.WdViewType]"wdPrintView" - } - - #Add Text Property to Comment where the comment text is the Range.Text property on a comment. - $comments = $document.Comments | ForEach-Object { Add-Member -InputObject $_ -MemberType ScriptProperty -Name Text -Value { $this.Range.Text } -PassThru } - Add-Member -InputObject $document -MemberType ScriptProperty -Name CommentsEx -Value { $comments } -Force - - return $document - } - } -} - -Function Get-WordDocumentComment { - [CmdletBinding()] param( - [ValidateScript( { Test-Path $_ -PathType Leaf })][Parameter(Mandatory, ValueFromPipelineByPropertyName, Position)][Alias("FullName", "InputObject")] - [string[]]$Path, #FullName alias added to support pipeline from Get-ChildItem - - [switch]$ReadWrite - ) - - PROCESS { - [bool]$readOnly = ![bool]$ReadWrite.IsPresent # TODO: Blog: switch and bool are not the same - - $Path | ForEach-Object { - $document = Open-WordDocument -Path $_ -ReadWrite:(!$readOnly) - $comments = $document.Comments | ForEach-Object { Add-Member -InputObject $_ -MemberType ScriptProperty -Name Text -Value { $this.Range.Text } -PassThru } - return $comments - } - } - -} - -Function Update-WordDocumentAcceptAllChanges { - [CmdletBinding(SupportsShouldProcess)] param( - [ValidateScript( { Test-Path $_ -PathType Leaf })] - [Parameter(Mandatory, ValueFromPipeline, ValueFromPipelineByPropertyName, Position)] - [Alias("FullName", "InputObject")] - [string[]]$Path, - [switch]$LeaveOpen - ) - PROCESS { - Write-Debug "Starting: Update-WordDocumentAcceptAllChanges '$path'" - $Path | ForEach-Object { - try { - - $eachDocumentPath = (Resolve-Path $_).Path - $document = Open-WordDocument $eachDocumentPath -ReadWrite:(!$WhatIfPreference) - $document.Application.Visible = $leaveOpen -or $PSCmdlet.MyInvocation.BoundParameters["Debug"] - - $document.AcceptAllRevisions() - - } - finally { - if ((Test-Path variable:document) -and ($document -ne $null) -and (!$LeaveOpen)) { - $application = $document.Application - try { - if ($PSCmdlet.ShouldProcess("Accept all changes in the document: $eachDocumentPath")) { - $document.Close() > $null - } - else { - # -WhatIf specified - $document.Close([Microsoft.Office.Interop.Word.WdSaveOptions]::wdDoNotSaveChanges) > $null - } - } - finally { - $application.Quit() - } - } - } - } - Write-Debug "Stopping: Update-WordDocumentAcceptAllChanges '$path'" - } -} - -Function Set-WordDocumentTrackChanges { - [CmdletBinding(SupportsShouldProcess)] - param( - [ValidateScript( { Test-Path $_ -PathType Leaf })] - [Parameter(Mandatory, ValueFromPipeline, ValueFromPipelineByPropertyName, Position)] - [Alias("FullName", "InputObject")] - [string[]]$Path, - [Parameter(Mandatory, Position)][bool]$Active, - [switch]$LeaveOpen - ) - - PROCESS { - $Path | ForEach-Object { - try { - $eachPath = $_ - # TODO: Change to not re-open the document - if ((Get-WordDocumentTrackChanges -Path $eachPath) -ne $Active) { - $document = Open-WordDocument $_ -ReadWrite:(!$WhatIfPreference) - $document.Application.Visible = $leaveOpen -or $PSCmdlet.MyInvocation.BoundParameters["Debug"] - - $document.TrackRevisions = $Active - } - } - finally { - if ((Test-Path variable:document) -and ($document -ne $null) -and (!$LeaveOpen)) { - $application = $document.Application - try { - if ($PSCmdlet.ShouldProcess("Set TrackChanges to $Active in '$eachPath'")) { - $document.Close() > $null - } - else { - # -WhatIf specified - $document.Close([Microsoft.Office.Interop.Word.WdSaveOptions]::wdDoNotSaveChanges) > $null - } - } - finally { - $application.Quit() - } - } - } - } - } -} -Function Get-WordDocumentTrackChanges { - [CmdletBinding()] - param( - [ValidateScript( { Test-Path $_ -PathType Leaf })][Parameter(Mandatory, ValueFromPipeline, ValueFromPipelineByPropertyName, Position)][Alias("FullName", "InputObject")][string[]]$Path - ) - - PROCESS { - $Path | ForEach-Object { - try { - $document = Open-WordDocument $_ -ReadWrite:$false - - Write-Output $document.TrackRevisions - <# - Write-Output @{ - Document=$document; - TrackRevisions=$document.TrackRevisions - } - #> - } - finally { - if ( (Test-Path variable:document) -and ($document -ne $null) ) { - $application = $document.Application - try { - $document.Close() > $null - } - finally { - $application.Quit() - } - } - } - } - } -} - -Function Set-WordDocumentProtection { - [CmdletBinding(SupportsShouldProcess)] - param( - [ValidateScript( { Test-Path $_ -PathType Leaf })][Parameter(Mandatory, ValueFromPipeline, ValueFromPipelineByPropertyName, Position)][Alias("FullName", "InputObject")][string[]]$Path, - [ValidateSet("NoProtection", "AllowOnlyRevisions", "AllowOnlyComments", "AllowOnlyFormFields", "AllowOnlyReading")] $ProtectionType, #TODO: Restrict to possible values for Microsoft.Office.Interop.Word.WdProtectionType with Intellisense - $Password, - [switch]$LeaveOpen - ) - PROCESS { - $Path | ForEach-Object { - try { - $eachPath = $_ - $document = Open-WordDocument $eachPath -ReadWrite:(!$WhatIfPreference) - $document.Application.Visible = $leaveOpen -or $PSCmdlet.MyInvocation.BoundParameters["Debug"] - - $protectionType = [Microsoft.Office.Interop.Word.WdProtectionType] "wd$protectionType" #Add on wd to successfully convert. - - $document.Protect( $ProtectionType, [ref]$false, [ref]$Password, [ref]$false, [ref]$false) - } - finally { - if ((Test-Path variable:document) -and ($document -ne $null) -and (!$LeaveOpen)) { - $application = $document.Application - try { - if ($PSCmdlet.ShouldProcess( - "Set the document protect to $ProtectionType on document '$eachPath'")) { - $document.Close() > $null - } - else { - # -WhatIf specified - $document.Close([Microsoft.Office.Interop.Word.WdSaveOptions]::wdDoNotSaveChanges) > $null - } - } - finally { - $application.Quit() - } - } - } - } - } -} - -$resultTypeData = @{ - TypeName = "WordDocument.FindReplaceResult" - DefaultDisplayPropertySet = 'FindResult', 'ReplaceResult', 'BeforeSnippet', 'AfterSnippet' -} - -Update-TypeData @resultTypeData -Force -$resultTypeData = @{ - TypeName = "WordDocument.FindResult" - DefaultDisplayPropertySet = 'FindResult', 'FindSnippet' -} -Update-TypeData @resultTypeData -Force - -#TODO: Change to use parameter separate parameter set for Find. -Function script:Invoke-WordDocumentInternalFindReplace { - [OutputType('WordDocument.FindReplaceResult')] - [CmdletBinding(SupportsShouldProcess)] - param( - [Parameter(Mandatory, ValueFromPipeline)]$Document, - # The Microsoft Word Seach string - see https://support.office.com/en-us/article/Find-and-replace-text-and-other-data-in-a-Word-document-c6728c16-469e-43cd-afe4-7708c6c779b7 - [Parameter(Mandatory)][string[]]$FindValue, - # Not strongly typed to string to avoid automatic coersion of $null to empty string (Arghhh!) - [Parameter(ParameterSetName = 'MicrosoftWordReplace')]$ReplaceValue, - # The regular expression to use to search after the $FindVaue is located - [Parameter(Mandatory, ParameterSetName = 'RegExReplace')][string[]]$RegExFindValue, - # The regular expression to replace with after the $FindValue is located - [Parameter(ParameterSetName = 'RegExReplace')][string[]]$RegExReplaceValue, - [bool]$MatchCase = $false, - [bool]$MatchWholeWord = $false, - [bool]$MatchWildcards = $false, - [bool]$MatchSoundsLike = $false, - [bool]$MatchAllWordForms = $false, - [ScriptBlock] $OnFindCommand - ) - - [string] $whatIfMessage = $null - [bool]$isActionReplacing = (($PSCmdlet.ParameterSetName -in 'MicrosoftWordReplace', 'RegExReplace') -and ((('ReplaceValue' -in $PSBoundParameters.Keys) -or ('RegExFindValue' -in $PSBoundParameters.Keys))) ) - $findValues = @($FindValue) - $searchRegEx = 'RegExFindValue' -in $PSBoundParameters.Keys - if ($searchRegEx) { - $regExFindValues = @($RegExFindValue) - if ($findValues.Length -ne $regExFindValues.Length) { - throw "The number of items in FindValue is different from the number of items in RegExFindValue" - } - } - - if ($isActionReplacing) { - $replaceValues = @($ReplaceValue) - if ($FindValues.Length -ne $replaceValues.Length) { - throw "The number of items in FindValue is different from the number of items in ReplaceValue" - } - if ($searchRegEx) { - $regexReplaceValues = @($RegExReplaceValue) - if ($replaceValues.Length -ne $regexReplaceValues.Length) { - throw "The number of items in ReplaceValue is different from the number of items in RegExReplaceValue" - } - } - $whatIfMessage = "Replacing text in $Path" - } - else { - # $whatIfMessage is not needed for the find case since there is not change. - } - - # Set the Find not to wrap back to the beginning of the document with wdFindStop - $wdFindWrap = [Microsoft.Office.Interop.Word.WdFindWrap]::wdFindStop # Other potential valudes: wdFindContinue, wdFindAsk, wdFindStop - - $forward = $True - $format = $False - - $selection = $Document.Application.Selection - - - for ($count = 0; $count -le $findValues.Length; $count++) { - - $eachFindValue = $findValues[$count] - if ($searchRegEx) { - $eachRegExFindValue = $regExFindValues[$count] - } - $eachReplaceValue = $null - if ($isActionReplacing) { - $eachReplaceValue = $replaceValues[$count] - if ($searchRegEx) { - $eachRegExReplaceValue = $regExReplaceValues[$count] - } - $whatIfMessage += "`n`t$eachFindValue => $eachReplaceValue" - } - - $selection.SetRange(0, 0) - Write-Debug -Message "Location $($Document.$BaseFileName): $($selection.Start)-$($selection.End)" - # TODO: Change to use "Simple" for the display of track changes - # so that items that have been modified but changes tracked do not show - # up in search. - while ($selection.Find.Execute($eachFindValue, $MatchCase, - $MatchWholeWord, $MatchWildcards, $MatchSoundsLike, - $MatchAllWordForms, $forward, $wdFindWrap, $format, - $eachReplaceValue, [Microsoft.Office.Interop.Word.wdReplace]::wdReplaceNone)) { - - Write-Debug -Message "Location $($Document.$BaseFileName): $($selection.Start)-$($selection.End)" - # Retrieve a snippet that contains the found text. - Function Get-TextSnippet($foundSelection) { - $start = $foundSelection.Start - $end = $foundSelection.End - try { - [int]$paragraphStart = $foundSelection.Paragraphs.First.Range.start - [int]$paragraphEnd = $foundSelection.Paragraphs.First.Range.End - $foundSelection.SetRange( - [Math]::Max($paragraphStart, $start - 100), - [Math]::Min($paragraphEnd, $end + 100) - ) - $foundSelection.SetRange( - $selection.Words.First.Start, - $selection.Words.Last.End - ) - - $text = $foundSelection.Text - if ($paragraphStart -lt $foundSelection.Start) { - $text = "...$text" - } - if ($paragraphEnd -gt $foundSelection.End) { - $text = "$text..." - } - } - finally { - #Reselect the found text - $selection.SetRange($start, $end) - } - return $text - } - - [string]$findResult = $null; - - # Invoke Callback - if ($OnFindCommand) { - Invoke-Command $OnFindCommand -ArgumentList $selection - } - - if ($searchRegEx) { - $findResult = $selection.Text - if ($findResult -match $eachRegExFindValue) { - $findResult = $Matches.0 - } - else { - Continue # Skip to the next item in the while loop - } - } - else { - $findResult = $selection.Text - } - - [string]$before = Get-TextSnippet $selection - [string]$after = $null - if ($isActionReplacing) { - - if ($searchRegEx) { - if ($matchCase) { - $selection.Text = $selection.Text -replace "$eachRegExFindValue", "$eachRegExReplaceValue" - } - else { - $selection.Text = $selection.Text -creplace "$eachRegExFindValue", "$eachRegExReplaceValue" - } - } - else { - if (!$selection.Find.Execute($eachFindValue, $MatchCase, - $MatchWholeWord, $MatchWildcards, $MatchSoundsLike, - $MatchAllWordForms, $forward, $wdFindWrap, $format, - $eachReplaceValue, ([Microsoft.Office.Interop.Word.wdReplace]::wdReplaceOne))) { - throw "Search failed unexpectedly - since we already found the text in the previous search and now have it selected." - } - } - $replaceResult = $selection.Text - $after = Get-TextSnippet $selection - if ($PSCmdlet.ShouldProcess("`t`t$before => $After", "`n`t`t$before => $After", "Search/Replace")) { - # -Whatif NOT specified so sending the results to the output. - - $result = [pscustomobject]@{ - BeforeSnippet = $before.Trim(); - AfterSnippet = $after.Trim(); - FindValue = $eachFindValue; - ReplaceValue = $eachReplaceValue; - FindResult = $findResult; - ReplaceResult = $replaceResult; - PSTypeName = "WordDocument.FindReplaceResult"; - # With OneDrive, the path could be a https URL, which won't work with Get-Item. - # TODO: Figure out how to get the local path when using OneDrive - Path = (Get-Item $Document.Path -ErrorAction Ignore) - } - - Write-Output $result - } - else { - # -WhatIf specified - - # Undo the replace - $selection.Text = $findResult - - #$whatIfMessage += "`n`t`t$before => $After" - - <# Possible alternat implementation - [int] $maxBeforeWidth = 0 - [int] $maxAfterWidth = 0 - [string] $messageLine = $null - $changes | ForEach-Object { - $maxBeforeWidth = [Math]::Max($maxBeforeWidth, $_.Before.Length) - $maxAfterWidth = [Math]::Max($maxAfterWidth, $_.After.Length) - } - $changes | ForEach-Object { - $messageLine += "`t`t{0,-$maxBeforeWidth}`t{1,-$maxAfterWidth}" -f $_.Before,$_.After - } - $process = $PSCmdlet.ShouldProcess("$messageLine", "$messageLine", "Search/Replace Listing") - #> - } - } - else { - # Find Only - $result = [pscustomobject]@{ - FindSnippet = $before.Trim(); - FindValue = $eachFindValue; - FindResult = $findResult; - PSTypeName = "WordDocument.FindResult"; - # With OneDrive, the path could be a https URL, which won't work with Get-Item. - # TODO: Figure out how to get the local path when using OneDrive - Path = (Get-Item $Document.Path -ErrorAction Ignore) - } - - Write-Output $result - if (Test-Path Variable:PSDebugContext) { - # If we are debugging, display the updated text in word and pause - pause - } - } - - $selection.SetRange($selection.End, $selection.End) - } - } -} - -<# - .SYNOPSIS - Search and replace text within a word document. - - .EXAMPLE - - - Description missing - - .LINK - https://support.office.com/en-gb/article/Find-and-replace-text-and-other-data-in-a-Word-document-c6728c16-469e-43cd-afe4-7708c6c779b7 - - .NOTES - - The following escape sequences have special meaning. - ^p - Paragraph Mark - ^t - Tab Character - ^? - Any Character - ^# - Any Digit - ^$ - Any Letter - ^^ - Caret Character - ^u - Section Character - ^v - Paragraph Character - ^c - Clipboard Contents - ^n - Column Break - ^+ - Em Dash - ^= - En Dash - ^e - Endnote Mark - ^d - Field - ^& - Find What Text - ^f - Footnote Mark - ^g - Graphic - ^l - Manual Line Break - ^m - Manual Page Break - ^~ - Nonbreaking Hyphen - ^s - Nonbreaking Space - ^- - Optional Hyphen - ^b - Section Break - ^w - White Space -#> -Function Invoke-WordDocumentFindReplace { - [OutputType('WordDocument.FindReplaceResult')] - [CmdletBinding(SupportsShouldProcess, DefaultParameterSetName = 'MicrosoftWordReplace')] - param( - [ValidateScript( { Test-Path $_ -PathType Leaf })] - [Parameter(Mandatory, ValueFromPipeline, ValueFromPipelineByPropertyName)] - [Alias("FullName", "InputObject")] - [string[]]$Path, #FullName alias added to support pipeline from Get-ChildItem - # The Microsoft Word Seach string - see https://support.office.com/en-us/article/Find-and-replace-text-and-other-data-in-a-Word-document-c6728c16-469e-43cd-afe4-7708c6c779b7 - [Parameter(Mandatory)][string[]]$FindValue, - # Not strongly typed to string to avoid automatic coersion of $null to empty string (Arghhh!) - [Parameter(ParameterSetName = 'MicrosoftWordReplace')]$ReplaceValue, - # The regular expression to use to search after the $FindVaue is located - [Parameter(ParameterSetName = 'RegExReplace')][string[]]$RegExFindValue, - # The regular expression to replace with after the $FindValue is located - [Parameter(ParameterSetName = 'RegExReplace')][string[]]$RegExReplaceValue, - [switch]$LeaveOpen, - [switch]$MatchCase = $false, - [switch]$MatchWholeWord = $false, - [switch]$MatchWildcards = $false, - [switch]$MatchSoundsLike = $false, - [switch]$MatchAllWordForms = $false, - [ScriptBlock] $OnFindCommand - ) - #TODO: Change to support reusing the same file (such as when searching for different things in the same file) and leaving the file open. - - PROCESS { - - Write-Debug "Starting: Invoke-WordDocumentFindReplace '$Path': $FindValue => $ReplaceValue" - Write-Progress -Activity "Invoke-WordDocumentFindReplace" -PercentComplete 0 - - $Path | ForEach-Object { - - Write-Progress -Activity "Invoke-WordDocumentFindReplace" -Status $_ - Write-Progress -Activity "Invoke-WordDocumentFindReplace" -Status $_ -CurrentOperation "$FindValue => $ReplaceValue" - - [bool]$fileChanged = $false - try { - $document = Open-WordDocument $Path -ReadWrite:(!$WhatIfPreference) - $document.Application.Visible = $leaveOpen -or $PSCmdlet.MyInvocation.BoundParameters["Debug"] - - if ($PSCmdlet.ParameterSetName -eq 'MicrosoftWordReplace') { - $findReplaceResult = script:Invoke-WordDocumentInternalFindReplace -document $document -FindValue $FindValue -ReplaceValue $ReplaceValue ` - -matchCase $matchCase -matchWholeWord $matchWholeWord -matchWildcards $matchWildcards ` - -matchSoundsLike $matchSoundsLike -matchAllWordForms $matchAllWordForms ` - -OnFindCommand $OnFindCommand - } - else { - $findReplaceResult = script:Invoke-WordDocumentInternalFindReplace -document $document -FindValue $FindValue ` - -RegExFindValue $RegExFindValue -RegExReplaceValue $RegExReplaceValue ` - -matchCase $matchCase -matchWholeWord $matchWholeWord -matchWildcards $matchWildcards ` - -matchSoundsLike $matchSoundsLike -matchAllWordForms $matchAllWordForms ` - -OnFindCommand $OnFindCommand - } - - if (@($findReplaceResult).Count -gt 0) { - $fileChanged = $true - $findReplaceResult | Write-Output - } - } - finally { - if ( (Test-Path variable:document) -and ($document -ne $null) -and (!$LeaveOpen) ) { - $application = $document.Application - try { - if ($fileChanged -and $PSCmdlet.ShouldProcess("Save changes to Word Document: $Path")) { - $document.Close() > $null - } - else { - # -WhatIf specified - $document.Close([Microsoft.Office.Interop.Word.WdSaveOptions]::wdDoNotSaveChanges) - } - } - finally { - $application.Quit() - } - } - } - } - Write-Progress -Activity "Invoke-WordDocumentFindReplace" -Completed - Write-Debug "Stopping: Invoke-WordDocumentFindReplace '$path': $FindValue => $ReplaceValue" - } -} - - - -<# - .SYNOPSIS - Displays a list text snippets within the document that contain - the value searched for. - - .EXAMPLE - Get-ChildItem C:\data\EssentialCSharp *.docx | Invoke-WordDocumentFind -value "Chapter" | Write-Host - - Returns the find value and the text snippet containing the specific word. - - .EXAMPLE - Invoke-WordDocumentFind Document.docx -value "" -matchWildcards - - Searches for Output followed by either a space or a no-break space (character code 160) and then 1-2 digits - - .LINK - https://support.office.com/en-gb/article/Find-and-replace-text-and-other-data-in-a-Word-document-c6728c16-469e-43cd-afe4-7708c6c779b7 - - .NOTES - - The following escape sequences have special meaning. - ^p - Paragraph Mark - ^t - Tab Character - ^? - Any Character - ^# - Any Digit - ^$ - Any Letter - ^^ - Caret Character - ^u - Section Character - ^v - Paragraph Character - ^c - Clipboard Contents - ^n - Column Break - ^+ - Em Dash - ^= - En Dash - ^e - Endnote Mark - ^d - Field - ^& - Find What Text - ^f - Footnote Mark - ^g - Graphic - ^l - Manual Line Break - ^m - Manual Page Break - ^~ - Nonbreaking Hyphen - ^s - Nonbreaking Space - ^- - Optional Hyphen - ^b - Section Break - ^w - White Space -#> -Function Invoke-WordDocumentFind { - [OutputType('WordDocument.FindResult')] - [CmdletBinding(DefaultParameterSetName = 'Path')] param( - [ValidateScript( { Test-Path $_ -PathType Leaf })] - [Parameter(Mandatory, ValueFromPipeline, ValueFromPipelineByPropertyName, Position, ParameterSetName = 'Path')] - [Alias("FullName", "InputObject")] - [string[]]$Path, - # An open instance of a word document (returned from Open-WordDocument) - [Parameter(Mandatory, ValueFromPipeline, Position, ParameterSetName = 'Document')] - [object[]]$WordDocument, - [Parameter(Mandatory)][string]$value, - [switch]$LeaveOpen, - [switch]$matchCase = $false, - [switch]$matchWholeWord = $false, - [switch]$matchWildcards = $false, - [switch]$matchSoundsLike = $false, - [switch]$matchAllWordForms = $false, - # Callback command each time the find is successful - # e.g. function Invoke-FindCallback ($selection) { Write-Output $selection.Text } - # Invoke-WordDocumentFind ... -OnFindCommand ${function:Invoke-FindCallback} - [ScriptBlock]$OnFindCommand - ) - - PROCESS { - Function Invoke-Find { - [CmdletBinding()] - param([object]$EachDocument) - - - Write-Progress -Activity "Invoke-WordDocumentFind" -Status $_ - Write-Progress -Activity "Invoke-WordDocumentFind" -Status $_ -CurrentOperation "Find: $Value" - - <# - BLOG-THIS: - We wasnt to set visible to true when debugging or when -Debug specified. - Unfortunately, the following doesn't work: - $debugging = Get-Member -InputObject $PSCmdlet.MyInvocation.BoundParameters -Name Debug) -and $PSCmdlet.MyInvocation.BoundParameters.Debug.IsPresent) -or (Test-Path variable:PSDebugContext) - 1. If you place the above in a separate function then BoundParameters doesn't contain a debug item. - 2. BoundParameters["Debug"] does not appear to be tasked to called functions or even set (even with the CmdletBinding attribute. - 3. Leveraging Write-Debug "$($debugging = $true)" also fails since the string evaluates before invoking Write-Debug. - Assign the value in Write-Debug (possibly with an optional message): - Write-Debug "Optional message: $($debugging = $true)" - 4. You can't provide an explicit debug parameter because "A parameter with the name 'Debug' was defined multiple times for the command." - 5. You can't check $PSCmdlet.MyInvocation.BoundParameters["Debug"].IsPresent because if "Debug" isn't present an exception will throw. - - Solution = Assign $PSCmdlet.MyInvocation.BoundParameters["Debug"] to a boolean. (Note that $PSCmdlet.MyInvocation.BoundParameters["FiddleSticks"] will resolve to $false.) - #> - - - # Use empty string for replace value since we are not replacing with anything. - $findResults = script:Invoke-WordDocumentInternalFindReplace -document $EachDocument ` - -findValue $value -matchCase $matchCase -matchWholeWord $matchWholeWord ` - -matchWildcards $matchWildcards -matchSoundsLike $matchSoundsLike ` - -matchAllWordForms $matchAllWordForms -OnFindCommand $OnFindCommand - - if (@($findResults).Count -gt 0) { - #$result = ([pscustomobject]@{Document = Get-Item $documentPath; Snippets = $textSnippets.Before}) - #$textSnippets | Get-Member - $findResults | Write-Output - } - } - - Write-Progress -Activity "Invoke-WordDocumentFind" -PercentComplete 0 - - if ($PSCmdlet.ParameterSetName -eq 'Document') { - $WordDocument | ForEach-Object { - Invoke-Find -EachDocument $_ - } - } - else { - $Path | ForEach-Object { - try { - $documentPath = $_ - $eachDocument = Open-WordDocument $documentPath -ReadWrite:(!$LeaveOpen) - $eachDocument.Application.Visible = $leaveOpen -or $PSCmdlet.MyInvocation.BoundParameters["Debug"] - Invoke-Find -EachDocument $eachDocument - } - finally { - if ((Test-Path variable:eachDocument) -and ($null -ne $eachDocument) -and (!$leaveOpen) ) { - - $application = $eachDocument.Application - try { - #TODO: Add support to close only if the document wasn't open prior to calling this method. - $eachDocument.Close() - } - finally { - $application.Quit() - } - } - } - } - } - - Write-Progress -Activity "Invoke-WordDocumentFind" -Completed - } -} - -# Original pulled from https://github.com/ForNeVeR/ExtDiff -Function Compare-WordDocument { - [CmdletBinding()] - param( - $BaseFileName, - $ChangedFileName - ) - - $ErrorActionPreference = 'Stop' - - # Remove the readonly attribute because Word is unable to compare readonly - # files: - $baseFile = Get-ChildItem $BaseFileName - if ($baseFile.IsReadOnly) { - Throw "Error: $BaseFileName is marked as read-only." - } - - # Constants - $wdDoNotSaveChanges = 0 - $wdCompareTargetNew = 2 - - $document = Open-WordDocument $baseFile -ReadWrite:$false - $document.Application.Visible = $true - $document.Compare($ChangedFileName, [ref]"Comparison", [ref]$wdCompareTargetNew, [ref]$true, [ref]$true) - - $document.Application.ActiveDocument.Saved = 1 - - # Now close the document so only compare results window persists: - $document.Close([ref]$wdDoNotSaveChanges) -} - -Function Script:Get-InternalWordDocumentProperty { - [CmdletBinding()] - param( - $property, # A collection of one or more document properties - [string]$name - ) - PROCESS { - if ($name) { - # Retrieve the single item requested by name. - try { - $propertyItem = [System.__ComObject].Invokemember("Item", - [System.Reflection.BindingFlags]::GetProperty, $null, $property, $name) - Script:Get-InternalWordDocumentProperty $propertyItem - } - catch { - throw "The property, `'$name`', does not exist or was not found'" - } - } - else { - # Retrieve the names and values for all the properties specified. - $property | ForEach-Object { - try { - $name = [System.__ComObject].Invokemember("Name", - [System.Reflection.BindingFlags]::GetProperty, $null, $_, $null) - $value = [System.__ComObject].Invokemember("Value", - [System.Reflection.BindingFlags]::GetProperty, $null, $_, $null) - [PSCustomObject] @{ Name = $name; Value = $value; Property = $_ } - } - catch { - Write-Verbose "Value note found for $name" - } - } - } - } -} - -Function Get-WordDocumentProperty { - [CmdletBinding()] - param( - [ValidateScript( { Test-Path $_ })][Parameter(Mandatory, ValueFromPipeline, ValueFromPipelineByPropertyName)][string[]]$path, - $name - ) - PROCESS { - [object[]]$properties = $null; - Get-Item $path | ForEach-Object { - try { - $document = Open-WordDocument $_.FullName -ReadWrite:(!$WhatIfPreference) - $properties = Script:Get-InternalWordDocumentProperty $document.BuiltInDocumentProperties - $properties += Script:Get-InternalWordDocumentProperty $document.CustomDocumentProperties - $result = @{ } - $properties | ForEach-Object { - $result."$($_.Name)" = $_.Value - } - if ($name) { - $result."$name" - } - else { - Write-Output $result - } - } - finally { - if ((Test-Path variable:document) -and ($document -ne $null) ) { - $application = $document.Application - try { - #TODO: Add support to close only if the document wasn't open prior to calling this method. - $document.Close() - } - finally { - $application.Quit() - } - - } - } - } - } -} - -Function Set-WordDocumentProperty { - [CmdletBinding(SupportsShouldProcess)] - param ( - [ValidateScript( { Test-Path $_ })][Parameter(Mandatory, ValueFromPipeline, ValueFromPipelineByPropertyName)][string[]]$path, - [Parameter(Mandatory)]$name, - [Parameter(Mandatory)]$value, - [Microsoft.Office.Core.MsoDocProperties]$propertyType = 'msoPropertyTypeString' - ) - BEGIN { - - } - - PROCESS { - Get-Item $path | ForEach-Object { - try { - $eachPath = $_; - $document = Open-WordDocument $eachPath -ReadWrite - $property = $null - $property = Script:Get-InternalWordDocumentProperty $document.BuiltInDocumentProperties $name -ErrorAction Ignore - if (!$property) { - Write-Debug "Unable to find build in property: $name" - $property = Script:Get-InternalWordDocumentProperty $document.CustomDocumentProperties $name -ErrorAction Ignore - } - if ($property) { - Write-Debug "Property was found: $name" - [System.__ComObject].InvokeMember( ` - 'Value', [System.Reflection.BindingFlags]::SetProperty, ` - $null, $property.Property, $value) - } - else { - Write-Debug "Property not found so adding a new one: $name" - [Array]$invokeArgs = $name, $false, $propertyType, $Value - [System.__ComObject].InvokeMember( ` - 'Add', [System.Reflection.BindingFlags]::SetProperty, ` - $null, $document.CustomDocumentProperties, $invokeArgs) - } - } - finally { - if ((Test-Path variable:document) -and ($document -ne $null) ) { - $application = $document.Application - try { - if ($PSCmdlet.ShouldProcess("Set property `'$name`' property to `'$value`' on document `'$document`'")) { - $document.Close() > $null - } - else { - # -WhatIf specified - $document.Close([Microsoft.Office.Interop.Word.WdSaveOptions]::wdDoNotSaveChanges) > $null - } - } - finally { - $application.Quit() - } - } - } - - } - } -} - -Function Get-WordDocumentTemplate { - [CmdletBinding()] - param( - [ValidateScript( { Test-Path $_ -PathType Leaf })][Parameter(Mandatory, ValueFromPipeline, ValueFromPipelineByPropertyName, Position)][Alias("FullName", "InputObject")][string[]]$Path - ) - - PROCESS { - $Path | ForEach-Object { - try { - $document = Open-WordDocument $_ -ReadWrite:$false - - Write-Output $document.AttachedTemplate.FullName - } - finally { - if ( (Test-Path variable:document) -and ($null -ne $document) ) { - $application = $document.Application - try { - $document.Close() > $null - } - finally { - $application.Quit() - } - } - } - } - } -} - - -Function Set-WordDocumentTemplate { - [CmdletBinding(SupportsShouldProcess)] - param( - [ValidateScript( { Test-Path $_ -PathType Leaf })] - [Parameter(Mandatory, ValueFromPipeline, ValueFromPipelineByPropertyName, Position)] - [Alias("FullName", "InputObject")] - [string[]]$Path, - [ValidateScript( { Test-Path $_ -PathType Leaf })] - [Parameter(Mandatory, Position)][string]$TemplatePath, - [switch]$LeaveOpen - ) - - PROCESS { - $Path | ForEach-Object { - try { - $eachPath = $_ - # TODO: Change to not re-open the document - if ((Get-WordDocumentTemplate -Path $eachPath).AttachedTemplate.FullName -ne $templatePath) { - $document = Open-WordDocument $_ -ReadWrite:(!$WhatIfPreference) - $document.Application.Visible = $leaveOpen -or $PSCmdlet.MyInvocation.BoundParameters["Debug"] - - $template = Open-WordDocument -Path $TemplatePath -ReadWrite:$false -WordApplication $document.Application - - if ($document.AttachedTemplate) { - Write-Verbose "Previous template was '$($document.AttachedTemplate.FullName)'." - } - $document.AttachedTemplate = $template - } - } - finally { - if ((Test-Path variable:document) -and ($document -ne $null) -and (!$LeaveOpen)) { - $application = $document.Application - try { - if ($PSCmdlet.ShouldProcess("Set Template on '$eachPath' to '$TemplatePath'")) { - $document.Close() > $null - } - else { - # -WhatIf specified - $document.Close([Microsoft.Office.Interop.Word.WdSaveOptions]::wdDoNotSaveChanges) > $null - } - } - finally { - $application.Quit() - } - } - } - } - } -} -<# - -Enums we may need: - - -Microsoft.Office.Interop.Word.WdViewType - wdNormalView A normal view. - wdOutlineView An outline view. - wdPrintView A print view. - wdPrintPreview A print preview view. - wdMasterView A master view. - wdWebView A Web view. - wdReadingView A reading view. - wdConflictView - - - -Microsoft.Office.Interop.Word.WdGoToItem - wdGoToBookmark A bookmark. - wdGoToSection A section. - wdGoToPage A page. - wdGoToTable A table. - wdGoToLine A line. - wdGoToFootnote A footnote. - wdGoToEndnote An endnote. - wdGoToComment A comment. - wdGoToField A field. - wdGoToGraphic A graphic. - wdGoToObject An object. - wdGoToEquation An equation. - wdGoToHeading A heading. - wdGoToPercent A percent. - wdGoToSpellingError A spelling error. - wdGoToGrammaticalError A grammatical error. - wdGoToProofreadingError A proofreading error. - - - -Microsoft.Office.Interop.Word.WdGoToDirection - wdGoToFirst The first instance of the specified object. - wdGoToLast The last instance of the specified object. - wdGoToNext The next instance of the specified object. - wdGoToRelative A position relative to the current position. - wdGoToPrevious The previous instance of the specified object. - wdGoToAbsolute An absolute position. - - -Microsoft.Office.Interop.Word.WdUnits - wdCharacter A character. - wdWord A word. - wdSentence A sentence. - wdParagraph A paragraph. - wdLine A line. - wdStory A story. - wdScreen The screen dimensions. - wdSection A section. - wdColumn A column. - wdRow A row. - wdWindow A window. - wdCell A cell. - wdCharacterFormatting Character formatting. - wdParagraphFormatting Paragraph formatting. - wdTable A table. - wdItem The selected item. - - -#> - -# TODO -# Blog: https://stackoverflow.com/questions/6403342/how-to-validate-powershell-function-parameters-allowing-empty-strings -# Blog: https://stackoverflow.com/questions/226596/powershell-array-initialization \ No newline at end of file diff --git a/Modules/IntelliTect.MicrosoftWord/tools/install.ps1 b/Modules/IntelliTect.MicrosoftWord/tools/install.ps1 deleted file mode 100644 index b1bfc20..0000000 --- a/Modules/IntelliTect.MicrosoftWord/tools/install.ps1 +++ /dev/null @@ -1,24 +0,0 @@ - -# ensure Microsoft.Office.Interop.Word.dll is installed. -$moduleRoot = (Split-Path $PSScriptRoot -Parent ) - -$wordAssemblyPath = "$($moduleRoot)/Lib/WordInteropNugetPackage/lib/netstandard2.0/Microsoft.Office.Interop.Word.dll" - -$ExtractPath = "$($moduleRoot)/Lib/WordInteropNugetPackage" - -if ((Test-Path $wordAssemblyPath) -eq $false) { - if ((Test-Path $ExtractPath) -eq $false) { - New-Item -ItemType Directory -Force -Path $ExtractPath - } - # this file despite running from the ./tools folder has a working dir of the root of the module - # get the latest word interop package and place the dll in the lib folder - $wordInteropNugetDownloadUrl = "https://www.nuget.org/api/v2/package/Microsoft.Office.Interop.Word" - - $ZipFile = "$($moduleRoot)/Lib/" + $(Split-Path -Path $wordInteropNugetDownloadUrl -Leaf) + ".zip" - - Invoke-WebRequest -Uri $wordInteropNugetDownloadUrl -OutFile $ZipFile - - Expand-Archive -Path $ZipFile -DestinationPath $ExtractPath -Force - - Remove-Item $ZipFile -} \ No newline at end of file diff --git a/Modules/IntelliTect.PSDbxCli/IntelliTect.PSDbxCli.psd1 b/Modules/IntelliTect.PSDbxCli/IntelliTect.PSDbxCli.psd1 deleted file mode 100644 index 40f36b5..0000000 --- a/Modules/IntelliTect.PSDbxCli/IntelliTect.PSDbxCli.psd1 +++ /dev/null @@ -1,121 +0,0 @@ -# -# Module manifest for module 'IntelliTect.PSDbxCli' -# -# Generated by: Mark Michleis -# -# Generated on: 2018-07-18 -# - -@{ - -# Script module or binary module file associated with this manifest. -RootModule = 'IntelliTect.PSDbxCli.psm1' - -# Version number of this module. -ModuleVersion = '0.5' - -# ID used to uniquely identify this module -GUID = '7ae01ee9-e065-4e39-9029-63dbe13e161b' - -# Author of this module -Author = 'Mark Michaelis' - -# Company or vendor of this module -CompanyName = 'IntelliTect' - -# Copyright statement for this module -# Copyright = '' - -# Description of the functionality provided by this module -Description = 'Cmdlets for managing files in Dropbox with Powershell' - -# Minimum version of the Windows PowerShell engine required by this module -# PowerShellVersion = '' - -# Name of the Windows PowerShell host required by this module -# PowerShellHostName = '' - -# Minimum version of the Windows PowerShell host required by this module -# PowerShellHostVersion = '' - -# Minimum version of Microsoft .NET Framework required by this module -# DotNetFrameworkVersion = '' - -# Minimum version of the common language runtime (CLR) required by this module -# CLRVersion = '' - -# Processor architecture (None, X86, Amd64) required by this module -# ProcessorArchitecture = '' - -# Modules that must be imported into the global environment prior to importing this module -# Modules that must be imported into the global environment prior to importing this module -RequiredModules = @('IntelliTect.Common') - -# Assemblies that must be loaded prior to importing this module -# RequiredAssemblies = @() - -# Script files (.ps1) that are run in the caller's environment prior to importing this module. -# ScriptsToProcess = @() - -# Type files (.ps1xml) to be loaded when importing this module -# TypesToProcess = @() - -# Format files (.ps1xml) to be loaded when importing this module -# FormatsToProcess = @() - -# Modules to import as nested modules of the module specified in RootModule/ModuleToProcess -# NestedModules = @() - -# Functions to export from this module -FunctionsToExport = '*' - -# Cmdlets to export from this module -CmdletsToExport = '*' - -# Variables to export from this module -VariablesToExport = '*' - -# Aliases to export from this module -AliasesToExport = '*' - -# DSC resources to export from this module -# DscResourcesToExport = @() - -# List of all modules packaged with this module -# ModuleList = @() - -# List of all files packaged with this module -#FileList = @() - -# Private data to pass to the module specified in RootModule/ModuleToProcess. This may also contain a PSData hashtable with additional module metadata used by PowerShell. -PrivateData = @{ - - PSData = @{ - - # Tags applied to this module. These help with module discovery in online galleries. - # Tags = @() - - # A URL to the license for this module. - # LicenseUri = '' - - # A URL to the main website for this project. - # ProjectUri = '' - - # A URL to an icon representing this module. - # IconUri = '' - - # ReleaseNotes of this module - # ReleaseNotes = '' - - } # End of PSData hashtable - -} # End of PrivateData hashtable - -# HelpInfo URI of this module -# HelpInfoURI = '' - -# Default prefix for commands exported from this module. Override the default prefix using Import-Module -Prefix. -# DefaultCommandPrefix = '' - -} - diff --git a/Modules/IntelliTect.PSDbxCli/IntelliTect.PSDbxCli.psm1 b/Modules/IntelliTect.PSDbxCli/IntelliTect.PSDbxCli.psm1 deleted file mode 100644 index f5bacc0..0000000 --- a/Modules/IntelliTect.PSDbxCli/IntelliTect.PSDbxCli.psm1 +++ /dev/null @@ -1,409 +0,0 @@ - - -class DbxItem { - [ValidateNotNullOrEmpty()][string]$Path -} -class DbxDirectory : DbxItem { - [DbxItem[]]GetChildItems() { - return Get-DbxItem -Path $this.Path - } -} -class DbxFile : DbxItem { - [string]$Revision; - [ValidateNotNullOrEmpty()][int]$Size; - [ValidateNotNullOrEmpty()]hidden[string]$DisplaySize; - [ValidateNotNullOrEmpty()][string]$Age; - [DbxItem[]]hidden $Revisions; - - [string]ToString() { - return $this.Path - } - [DbxItem[]]GetRevisions() { - if(-not $this.Revisions) { - $this.Revisions = Get-DbxRevision -Path $this.Path - } - return $this.Revisions - } -} -$dbxFileTypeData = @{ - TypeName = 'DbxFile' - DefaultDisplayPropertySet = 'Path','DisplaySize','Age' -} -Update-TypeData @dbxFileTypeData -Force - -Function Script:Invoke-DbxCli { - [CmdletBinding()] - [Diagnostics.CodeAnalysis.SuppressMessageAttribute("PSAvoidUsingInvokeExpression", "")] - param ( - [Parameter(Mandatory)] - [string] - $Command - ) - - $Command += ' 2>&1' - - Invoke-Expression $command -ErrorAction SilentlyContinue ` - -ErrorVariable InvokeExpressionError | Where-Object { - Write-Output ($_ -and (![string]::IsNullOrWhiteSpace($_))) - } | ForEach-Object { - if( $_ -like "Error: *" ) { - throw $_ - } - else { - Write-Output $_ - } - } - if( ($LASTEXITCODE -ne 0) -and $InvokeExpressionError) { - $InvokeExpressionError = $InvokeExpressionError | Where-Object{ -not [string]::IsNullOrWhiteSpace($_) } - # TODO: Consider throwing an error instead so that execution stops when it unexpectedly errors. - Write-Error $InvokeExpressionError.ToString() - } -} -Function Script:Format-DbxPath { - [CmdletBinding()] - [OutputType([string])] - param( - # The path to format - [Parameter(Mandatory,ValueFromPipeline)][string[]]$Path - ) - BEGIN { - $Path = $Path - } - PROCESS { - @($Path) | ForEach-Object { - $item = $_ - $item=$item.Replace('\','/') - if($item[0] -ne '/') { - $item="/$item" - } - Write-Output $item - } - } - -} - -Function Test-DbxPath { - [CmdletBinding()] - [OutputType([bool])] - param ( - [Parameter(Mandatory)][string]$Path, - # Parameter help description - [Microsoft.PowerShell.Commands.TestPathType]$PathType = [Microsoft.PowerShell.Commands.TestPathType]::Any - ) - PROCESS { - $Path = Format-DbxPath $Path - - if(($Path[-1] -eq '/') -and ($PathType -eq 'Leaf')) { - throw 'Seaching for file but folder provided (remove trailing slash)' - } - - if(-not ($Path -match '(?/.*?)(?.+?)/?$')) { - throw "The path ('$Path') is invalid." - } - - # Handle root paths separately because you can't use a plain '/' for the "path-scope" (directory path) with dbxcli search - if($Matches.DirectoryPath -eq '/') { - # search for '*' in the $Path directory. If no error, the folder exists. - # (Using dbxcli ls for a folder returns all the items in the folder which seems suboptimal for large folders.) - Invoke-DbxCli "dbxcli search * '$($Path.TrimEnd('/'))'" ` - -ErrorAction SilentlyContinue -ErrorVariable InvokeDbxCliError > $null - [bool]$directoryExists = (-not [bool]$InvokeDbxCliError) - if( $directoryExists -and ($PathType -in 'Container','Any') ) { - # We checked for the directory but it didn't exist - return $true - } - elseif ( (-not $directoryExists) -and ($PathType -in 'Container') ) { - # The item exists but it is a directory and we are looking for a leaf. - return $false - } - else { - # Check whether the file exists. - return ([bool](Get-DbxItem -File $Path -ErrorAction Ignore)) - } - } - $result = Invoke-DbxCli "dbxcli search '$($Matches.FileName)' '$($Matches.DirectoryPath)'" ` - -ErrorAction SilentlyContinue -ErrorVariable InvokeDbxCliError - if($InvokeDbxCliError) { - Write-Output $false - } - else { - Write-Output ($result -eq $Path) - } - } -} - -Function Get-DbxItem { - [CmdletBinding()] - param ( - [ValidateNotNullOrEmpty()][Parameter()][Alias('Path')][string]$DropboxPath = '/', - [Parameter()][switch]$File, - [Parameter()][switch]$Directory, - [Parameter()][switch]$Recursive - ) - $Header=$null - $regexLine=$null - - $DropboxPath = Format-DbxPath $DropboxPath - $command = "dbxcli ls -l '$DropboxPath' $(if($Recursive){'-R'})" - - if(!$Directory -and !$File) { - $Directory = [switch]$true - $File = [switch]$true - } - - [bool]$itemsReturned = $false - Invoke-DbxCli $command | ForEach-Object{ - $itemsReturned = $true - if(-not $Header) { - if($_ -match '(?Revision\s*?) (?Size\s*?) (?Last Modified\s*?) (?Path)\s*') { - $Header = [PSCustomObject]($Matches | Select-Object -ExcludeProperty 0) - } - else { - throw "Unable to parse header ('$_')" - } - $regexLine="(?.{$($Header.Revision.Length)}) "+ - "(?.{$($Header.Size.Length)}) "+ - "(?.{$($Header.Age.Length)}) "+ - "(?.+?)\s*$" - } - else { - if($_ -match $regexLine) { - if( $Matches.Revision.Trim() -eq '-') { - if($Directory) { - # Revision, Age, and Size are not returned for a directory. - $item = ([PSCustomObject]($Matches | Select-Object -Property Path)) - $item.Path = $item.Path+'/' - $item.PSObject.TypeNames.Insert(0,"DbxDirectory") - Write-Output ([DbxDirectory]$item) - } - #else ignore - } - else { - if($File) { - $item = $Matches - - $item['Size'] = ConvertFrom-DisplaySize $Matches.DisplaySize - $item.Revision = '' # The Revision is blanked out for the most recent verstion - # so that when calling Save-File the revision is not used. - # i.e Get-DbxItem -File | Save-DbxFile - $item.PSObject.TypeNames.Insert(0,"DbxFile") - # We ignore the '0' property - Write-Output ([DbxFile]($item | Select-Object -ExcludeProperty '0')) - } - } - } - } - } - if(-not $itemsReturned) { - # We have an empty directory. - [DbxDirectory]$dbxDirectory = [DbxDirectory]::new() - $dbxDirectory.Path = $DropboxPath - Write-Output $dbxDirectory - } -} -Function Script:ConvertFrom-DisplaySize { - [CmdletBinding()] - [OutputType([int])] - param([Parameter(Mandatory)][string]$DisplaySize) - $converter=@{ - B=1; - KiB=1000; - MiB=1000000; - GiB=1000000000; - } - if($DisplaySize -match '(?\d*?\.?\d*?) (?GiB|KiB|MiB|B)') { - return ([int]$Matches.Amount)*$converter.($Matches.Unit) - } - else { throw "Unable to parse size '$($Matches.DisplaySize)'"} -} - -Function Restore-DbxFile { - [CmdletBinding()] - param ( - # The revision ID of the file to be restored. - [Parameter(Mandatory)][string]$Revision, - # The target location to restore the file in Dropbox - [Parameter(Mandatory)][string]$DbxTargetLocation, - [switch]$PassThru - ) - - Invoke-DbxCli "dbxcli restore '$DbxTargetLocation' '$Revision'" - if($PassThru) { - Write-Output (Get-DbxItem -Path $DbxTargetLocation) - } -} - -Function New-DbxDirectory { - [CmdletBinding(SupportsShouldProcess)] - [OutputType([DbxDirectory])] - param ( - # The Dropbox path to the file to download - [Parameter(Mandatory,ValueFromPipeline,ValueFromPipelineByPropertyName)] - [ValidateNotNullOrEmpty()][Alias('Path')][string]$DropboxPath - ) - - PROCESS { - $DropboxPath = Format-DbxPath $DropboxPath - if ($PSCmdlet.ShouldProcess("New-DbxDirectory ('$DropboxPath')", "Create new directory '$DropboxPath'.")) { - Invoke-DbxCli "dbxcli mkdir $DropboxPath" - Write-Output (Get-DbxItem -Directory $DropboxPath) - } - } -} - -Function Remove-DbxDirectory { - [CmdletBinding(SupportsShouldProcess)] - [OutputType([DbxDirectory])] - param ( - # The Dropbox path to the file to download - [Parameter(Mandatory,ValueFromPipeline,ValueFromPipelineByPropertyName)] - [ValidateNotNullOrEmpty()][Alias('Path')][string]$DropboxPath - ) - - PROCESS { - $DropboxPath = Format-DbxPath $DropboxPath - if ($PSCmdlet.ShouldProcess("Remove-DbxDirectory '$DropboxPath'", "Removing Dropbox directory ('$DropboxPath')")) { - Invoke-DbxCli "dbxcli rm '$DropboxPath'" - } - } -} - -# Upload a file into Dropbox -Function Write-DbxFile { - [CmdletBinding(SupportsShouldProcess)] - param ( - # The local path to that will be copied into Dropbox. - [Parameter(Mandatory,ValueFromPipelineByPropertyName)] - [ValidateNotNullOrEmpty()][Alias('FullName')][string]$SourcePath, - # The Dropbox path to the file to download - [Parameter(Mandatory,ValueFromPipeline,ValueFromPipelineByPropertyName)] - [ValidateNotNullOrEmpty()][Alias('Path')][string]$DropboxPath, - # Force the file to download even if it already exists. - [Parameter()][switch]$Force - ) - - PROCESS { - $DropboxPath = Format-DbxPath $DropboxPath - if((-not $Force) -and (Test-DbxPath $DropboxPath -PathType Leaf) ) { - throw "The Dropbox file ('$DropboxPath') already exists." - } - elseif (-not (Test-Path $SourcePath)) { - throw "Unable to find the source file ('$SourcePath')." - } - elseif(Test-DbxPath $DropboxPath -PathType Container) { - $DropboxPath = "$DropboxPath/$(Split-Path -Leaf $SourcePath)" - } - - Invoke-DbxCli "dbxcli put '$SourcePath' '$DropboxPath'" | ForEach-Object { - if($_ -match 'Uploading (?.+?)/(?.+?)$') { - $sizeUploaded,$sizeTotal=(ConvertFrom-DisplaySize $Matches.SizeUploaded),(ConvertFrom-DisplaySize $Matches.SizeTotal) - Write-Progress -Activity "Save-File '$DropboxPath' ($Revision)" -Status $_ -PercentComplete (($sizeUploaded*100)/$sizeTotal) - } - else { - Write-Progress -Activity "Write-File '$DropboxPath' ($Revision)" -Status $_ - } - } - Write-Output (Get-DbxItem $DropboxPath) - } -} - -# Download a Dropbox file to a local destination. -Function Save-DbxFile { - [CmdletBinding(SupportsShouldProcess)] - param ( - # The Dropbox path to the file to download - [Parameter(Mandatory,ValueFromPipeline,ValueFromPipelineByPropertyName)] - [ValidateNotNullOrEmpty()][Alias('Path')][string]$DropboxPath, - # The Revision ID for the file to be downloaded. - # If not the most recent version of the file (the Revision property is set), a copy - # will be temporarily be placed in Dropbox while downloading.) - [Parameter(ValueFromPipelineByPropertyName)][string]$Revision, - # The target path to download the file to. The default - # is the current directory with the same file name - [Parameter()][string]$TargetPath, - # Force the file to download even if it already exists. - [Parameter()][switch]$Force - ) - BEGIN { - if(@($DropboxPath).Count -gt 1) { - # The $TargetPath should be a directory - if(!(Test-Path $TargetPath -PathType Container)) { - Write-Warning "'$TargetPath is not a container causing multiple files to overwrite each other." - } - } - } - - PROCESS { - try { - if($Revision) { - [string]$dbxAppDirectory = '/Apps/IntelliTect.PSDbxCli/.Temp' - if(-not (Test-DbxPath -Path $dbxAppDirectory -PathType Container)) { - Invoke-DbxCli "dbxcli mkdir $dbxAppDirectory" - } - $DropboxPath = Format-DbxPath "$dbxAppDirectory/$(Split-Path $DropboxPath -Leaf)" - Write-Progress -Activity "Save-File '$DropboxPath' ($Revision)" -Status "Restoring..." - Restore-DbxFile -Revision $Revision -DbxTargetLocation $DropboxPath - } - - if(!$TargetPath) { - $TargetPath = Join-Path (Get-Location) (Split-Path $DropboxPath -Leaf) - } - elseif(Test-Path $TargetPath -PathType Container) { - $TargetPath = Join-Path ($TargetPath) (Split-Path $DropboxPath -Leaf) - } - - if((Test-Path $TargetPath) -and !$Force) { - throw "Cannot download file when that file ('$TargetPath') already exists. Use -Force to override." - } - - if($PSCmdlet.ShouldProcess("$DropboxPath", "Save-DbxFile '$DropboxPath' to '$TargetPath'")) { - Invoke-DbxCli "dbxcli get '$DropboxPath' '$TargetPath'" | ForEach-Object { - if($_ -match 'Downloading (?.+?)/(?.+?)$') { - $sizeDownloaded,$sizeTotal=(ConvertFrom-DisplaySize $Matches.SizeDownloaded),(ConvertFrom-DisplaySize $Matches.SizeTotal) - Write-Progress -Activity "Save-File '$DropboxPath' ($Revision)" -Status $_ -PercentComplete (($sizeDownloaded*100)/$sizeTotal) - } - else { - Write-Progress -Activity "Save-File '$DropboxPath' ($Revision)" -Status $_ - } - } - Write-Output (Get-Item $TargetPath) - } - } - finally { - if($Revision) { - Invoke-DbxCli "dbxcli rm $DropboxPath --force" - } - } - } -} - -Function Get-DbxRevision { - [CmdletBinding()] - [Diagnostics.CodeAnalysis.SuppressMessageAttribute("PSAvoidUsingInvokeExpression", "")] - param ( - [Parameter(Mandatory,ValueFromPipelineByPropertyName)] - [string] - $Path - ) - BEGIN { - $regexLine="(?.[0-9a-f]+?)\t"+ - "(?.+?)\t"+ - "(?.+?)\t"+ - "(?.+?)\t" - } - PROCESS { - $command = "dbxcli revs -l '$Path'" - Invoke-DbxCli $command | Select-Object -Skip 1 | ForEach-Object { - [string]$line=$_ - [Regex]::Matches($line, $regexLine) | ForEach-Object { - [DbxFile]@{ - 'Revision'=$_.Groups['Revision'].Value; - 'DisplaySize'=$_.Groups['DisplaySize'].Value; - 'Size'=ConvertFrom-DisplaySize $_.Groups['DisplaySize'].Value - 'Age'=$_.Groups['Age'].Value; - 'Path'=$_.Groups['Path'].Value; - } - } - } - } -} \ No newline at end of file diff --git a/Modules/IntelliTect.PSRestore/IntelliTect.PSRestore.psd1 b/Modules/IntelliTect.PSRestore/IntelliTect.PSRestore.psd1 deleted file mode 100644 index 9fa104e..0000000 --- a/Modules/IntelliTect.PSRestore/IntelliTect.PSRestore.psd1 +++ /dev/null @@ -1,129 +0,0 @@ -# -# Module manifest for module 'IntelliTect.PSRestore' -# -# Generated by: Andrew -# -# Generated on: 6/6/2016 -# - -@{ - -# Script module or binary module file associated with this manifest. -RootModule = 'IntelliTect.PSRestore.psm1' - -# Version number of this module. -ModuleVersion = '0.4.0.0' - -# ID used to uniquely identify this module -GUID = '1c021d9b-181f-4150-b654-802e001235d8' - -# Author of this module -Author = 'Andrew Scott' - -# Company or vendor of this module -CompanyName = 'IntelliTect' - -# Copyright statement for this module -Copyright = '(c) 2016 IntelliTect. All rights reserved.' - -# Description of the functionality provided by this module -Description = @' -Provides functionality for restoring your command history in PowerShell and working directory in PowerShell ISE. - -To get started quickly, simply call Install-PSRestore -Persist. This will add the needed commands to your CurrentUserAllHosts PowerShell profile. - -To do this manually, add Install-PSRestore to the bottom of the desired PowerShell profile - - -Otherwise, you will need to call one or both of the Export functions that this module provides in your Prompt function, and call the corresponding Import functions in your profile. -'@ - -# Minimum version of the Windows PowerShell engine required by this module -# PowerShellVersion = '' - -# Name of the Windows PowerShell host required by this module -# PowerShellHostName = '' - -# Minimum version of the Windows PowerShell host required by this module -# PowerShellHostVersion = '' - -# Minimum version of Microsoft .NET Framework required by this module -# DotNetFrameworkVersion = '' - -# Minimum version of the common language runtime (CLR) required by this module -# CLRVersion = '' - -# Processor architecture (None, X86, Amd64) required by this module -# ProcessorArchitecture = '' - -# Modules that must be imported into the global environment prior to importing this module -# RequiredModules = @() - -# Assemblies that must be loaded prior to importing this module -# RequiredAssemblies = @() - -# Script files (.ps1) that are run in the caller's environment prior to importing this module. -# ScriptsToProcess = @() - -# Type files (.ps1xml) to be loaded when importing this module -# TypesToProcess = @() - -# Format files (.ps1xml) to be loaded when importing this module -# FormatsToProcess = @() - -# Modules to import as nested modules of the module specified in RootModule/ModuleToProcess -# NestedModules = @() - -# Functions to export from this module -FunctionsToExport = @('Install-PSRestore', 'Import-PowerShellHistory', 'Export-PowerShellLastCommand', 'Export-PowerShellISEWorkingDirectory', 'Import-PowerShellISEWorkingDirectory') - -# Cmdlets to export from this module -CmdletsToExport = '*' - -# Variables to export from this module -VariablesToExport = '*' - -# Aliases to export from this module -AliasesToExport = '*' - -# DSC resources to export from this module -# DscResourcesToExport = @() - -# List of all modules packaged with this module -# ModuleList = @() - -# List of all files packaged with this module -# FileList = @() - -# Private data to pass to the module specified in RootModule/ModuleToProcess. This may also contain a PSData hashtable with additional module metadata used by PowerShell. -PrivateData = @{ - - PSData = @{ - - # Tags applied to this module. These help with module discovery in online galleries. - # Tags = @() - - # A URL to the license for this module. - # LicenseUri = '' - - # A URL to the main website for this project. - # ProjectUri = '' - - # A URL to an icon representing this module. - # IconUri = '' - - # ReleaseNotes of this module - # ReleaseNotes = '' - - } # End of PSData hashtable - -} # End of PrivateData hashtable - -# HelpInfo URI of this module -# HelpInfoURI = '' - -# Default prefix for commands exported from this module. Override the default prefix using Import-Module -Prefix. -# DefaultCommandPrefix = '' - -} - diff --git a/Modules/IntelliTect.PSRestore/IntelliTect.PSRestore.psm1 b/Modules/IntelliTect.PSRestore/IntelliTect.PSRestore.psm1 deleted file mode 100644 index 4fd83ee..0000000 Binary files a/Modules/IntelliTect.PSRestore/IntelliTect.PSRestore.psm1 and /dev/null differ diff --git a/Modules/IntelliTect.PSToolbox/IntelliTect.PSToolbox.psd1 b/Modules/IntelliTect.PSToolbox/IntelliTect.PSToolbox.psd1 index 467248b..b80a561 100644 --- a/Modules/IntelliTect.PSToolbox/IntelliTect.PSToolbox.psd1 +++ b/Modules/IntelliTect.PSToolbox/IntelliTect.PSToolbox.psd1 @@ -12,10 +12,10 @@ # RootModule = '' # Version number of this module. - ModuleVersion = '1.4.2.4' + ModuleVersion = '2.0.0' # Supported PSEditions - # CompatiblePSEditions = @() + CompatiblePSEditions = @('Core') # ID used to uniquely identify this module GUID = '91500afc-48ad-41a6-9cdc-091bc89611ed' @@ -27,13 +27,13 @@ CompanyName = 'IntelliTect' # Copyright statement for this module - Copyright = '(c) 2016 IntelliTect. All rights reserved.' + Copyright = '(c) IntelliTect. All rights reserved.' # Description of the functionality provided by this module - Description = 'Shortcut module to install all of IntelliTect''s PowerShell modules' + Description = 'Umbrella module that installs IntelliTect''s maintained PowerShell modules: IntelliTect.Common, IntelliTect.File, IntelliTect.Git, and IntelliTect.CredentialManager.' # Minimum version of the Windows PowerShell engine required by this module - # PowerShellVersion = '' + PowerShellVersion = '7.2' # Name of the Windows PowerShell host required by this module # PowerShellHostName = '' @@ -52,11 +52,10 @@ # Modules that must be imported into the global environment prior to importing this module RequiredModules = @( - "IntelliTect.Common", - "IntelliTect.Google", - "IntelliTect.CredentialManager", - "IntelliTect.ResharperNugetSearch", - "IntelliTect.MicrosoftWord" + 'IntelliTect.Common', + 'IntelliTect.File', + 'IntelliTect.Git', + 'IntelliTect.CredentialManager' ) # Assemblies that must be loaded prior to importing this module @@ -100,20 +99,44 @@ PSData = @{ - # Tags applied to this module. These help with module discovery in online galleries. - # Tags = @() + # Tags applied to this module. + Tags = @('IntelliTect', 'PSToolbox', 'Umbrella') # A URL to the license for this module. - # LicenseUri = '' + LicenseUri = 'https://github.com/IntelliTect/PSToolbox/blob/main/LICENSE.txt' # A URL to the main website for this project. - # ProjectUri = '' + ProjectUri = 'https://github.com/IntelliTect/PSToolbox' # A URL to an icon representing this module. # IconUri = '' # ReleaseNotes of this module - # ReleaseNotes = '' + ReleaseNotes = @' +2.0.0 (Path B modernization) + This is a breaking-change major release. + + Removed modules (use the recommended replacements): + - AzureManagement -> Az + - IntelliTect.PSDbxCli -> dbxcli directly + - IntelliTect.PSDropbin -> Dropbox.Api SDK + - IntelliTect.PSRestore -> built-in Windows recycle bin / Recycle module + - IntelliTect.ResharperNugetSearch -> NuGet/Find-Package + - IntelliTect.MicrosoftWord -> use Word COM/OpenXML directly + - IntelliTect.Google -> Google APIs PowerShell module + - IntelliTect.ChatGpt -> PowerShellAI module + - DotNetCore -> dotnet CLI directly + + Retained and modernized modules: + - IntelliTect.Common 2.0.0 + - IntelliTect.File 2.0.0 + - IntelliTect.Git 2.0.0 + - IntelliTect.CredentialManager (unchanged) + + Minimum PowerShell version raised to 7.2. + + The 1.x history is preserved at tag v1.0-legacy and branch legacy/v1. +'@ # Prerelease string of this module # Prerelease = '' diff --git a/Modules/IntelliTect.ResharperNugetSearch/IntelliTect.ResharperNugetSearch.psd1 b/Modules/IntelliTect.ResharperNugetSearch/IntelliTect.ResharperNugetSearch.psd1 deleted file mode 100644 index 25b839d..0000000 --- a/Modules/IntelliTect.ResharperNugetSearch/IntelliTect.ResharperNugetSearch.psd1 +++ /dev/null @@ -1,132 +0,0 @@ -# -# Module manifest for module 'IntelliTect.ResharperNugetSearch' -# -# Generated by: Kelly Adams -# -# Generated on: 4/9/2022 -# - -@{ - -# Script module or binary module file associated with this manifest. -RootModule = './IntelliTect.ResharperNugetSearch.psm1' - -# Version number of this module. -ModuleVersion = '1.0.0.1' - -# Supported PSEditions -# CompatiblePSEditions = @() - -# ID used to uniquely identify this module -GUID = '1901dc01-64da-4d5c-ad51-4a1f72f67254' - -# Author of this module -Author = 'Kelly Adams' - -# Company or vendor of this module -CompanyName = 'IntelliTect' - -# Copyright statement for this module -Copyright = '© IntelliTect. All rights reserved.' - -# Description of the functionality provided by this module -Description = 'Provides functions for searching against Jet Brains'' Resharper Nuget Search API.' - -# Minimum version of the PowerShell engine required by this module -PowerShellVersion = '3.0' - -# Name of the PowerShell host required by this module -# PowerShellHostName = '' - -# Minimum version of the PowerShell host required by this module -# PowerShellHostVersion = '' - -# Minimum version of Microsoft .NET Framework required by this module. This prerequisite is valid for the PowerShell Desktop edition only. -DotNetFrameworkVersion = '4.0' - -# Minimum version of the common language runtime (CLR) required by this module. This prerequisite is valid for the PowerShell Desktop edition only. -ClrVersion = '4.0' - -# Processor architecture (None, X86, Amd64) required by this module -# ProcessorArchitecture = '' - -# Modules that must be imported into the global environment prior to importing this module -# RequiredModules = @() - -# Assemblies that must be loaded prior to importing this module -# RequiredAssemblies = @() - -# Script files (.ps1) that are run in the caller's environment prior to importing this module. -# ScriptsToProcess = @() - -# Type files (.ps1xml) to be loaded when importing this module -# TypesToProcess = @() - -# Format files (.ps1xml) to be loaded when importing this module -# FormatsToProcess = @() - -# Modules to import as nested modules of the module specified in RootModule/ModuleToProcess -# NestedModules = @() - -# Functions to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no functions to export. -FunctionsToExport = 'Search-NugetForType', 'Search-NugetForNamespace' - -# Cmdlets to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no cmdlets to export. -CmdletsToExport = '*' - -# Variables to export from this module -VariablesToExport = '*' - -# Aliases to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no aliases to export. -AliasesToExport = '*' - -# DSC resources to export from this module -# DscResourcesToExport = @() - -# List of all modules packaged with this module -# ModuleList = @() - -# List of all files packaged with this module -# FileList = @() - -# Private data to pass to the module specified in RootModule/ModuleToProcess. This may also contain a PSData hashtable with additional module metadata used by PowerShell. -PrivateData = @{ - - PSData = @{ - - # Tags applied to this module. These help with module discovery in online galleries. - Tags = 'Nuget','JetBrains','Resharper','package','namespace','type' - - # A URL to the license for this module. - LicenseUri = 'https://raw.githubusercontent.com/IntelliTect/PSToolbox/main/LICENSE.txt' - - # A URL to the main website for this project. - ProjectUri = 'https://github.com/IntelliTect/PSToolbox' - - # A URL to an icon representing this module. - # IconUri = '' - - # ReleaseNotes of this module - ReleaseNotes = 'Initial release.' - - # Prerelease string of this module - # Prerelease = '' - - # Flag to indicate whether the module requires explicit user acceptance for install/update/save - # RequireLicenseAcceptance = $false - - # External dependent modules of this module - # ExternalModuleDependencies = @() - - } # End of PSData hashtable - - } # End of PrivateData hashtable - -# HelpInfo URI of this module -# HelpInfoURI = '' - -# Default prefix for commands exported from this module. Override the default prefix using Import-Module -Prefix. -# DefaultCommandPrefix = '' - -} - diff --git a/Modules/IntelliTect.ResharperNugetSearch/IntelliTect.ResharperNugetSearch.psm1 b/Modules/IntelliTect.ResharperNugetSearch/IntelliTect.ResharperNugetSearch.psm1 deleted file mode 100644 index 8c6e548..0000000 --- a/Modules/IntelliTect.ResharperNugetSearch/IntelliTect.ResharperNugetSearch.psm1 +++ /dev/null @@ -1,156 +0,0 @@ -<# - .Synopsis - Searches for Nuget packages by the name of a type. - .DESCRIPTION - Searches Jet Brain's awesome Resharper API for Nuget packages by type name, and returns - a paged list of objects. Results are limited to 20 per page, so this function also returns - the total number of items, the total pages and the current page (if applicable). - - .PARAMETER Search - Type name to search, can be with full namespace. - - .PARAMETER AllowPrerelease - Allow searching for prerelease nuget packages, false by default. - - .PARAMETER CaseSensitive - Use case sensitive matching for type name, false by default. - - .PARAMETER LatestVersion - Search only latest versions of packages, true by default - - .PARAMETER PageIndex - Search results page index, page size is 20 items. - - .EXAMPLE - Simple search for a specific type: - - Search-NugetForType OpenStreetMapLayer - - .EXAMPLE - Go to a specific page in the search results: - - Search-NugetForType Date -PageIndex 8 - - .EXAMPLE - Display the Nuget.org page for the first result in the default browser: - - Search-NugetForType Mapping | Select-Object -First 1 | % { start $("https://www.nuget.org/packages/{0}/" -f $_.id) } -#> -Function Search-NugetForType { - [CmdletBinding()] param( - [Parameter(Mandatory=$true, Position=0 )] [String] $Search, - [Parameter()] [Switch]$AllowPrerelease = $false, - [Parameter()] [Switch]$CaseSensitive = $false, - [Parameter()] [Switch]$LatestVersion, - [Parameter()] [Int32]$PageIndex = 0 - ) - Begin - { - $rootUri = "http://resharper-nugetsearch.jetbrains.com/api/v1/find-type?" - - # Fix for Invoke-RestMethod through authenticated proxies - [System.Net.WebRequest]::DefaultWebProxy = [System.Net.WebRequest]::GetSystemWebProxy() - [System.Net.WebRequest]::DefaultWebProxy.Credentials = [System.Net.CredentialCache]::DefaultNetworkCredentials - } - Process - { - $queryUri = "$($rootUri)name={0}&allowPrerelease={1}&caseSensitive={2}&latestVersion={3}&pageIndex={4}" -f $Search, ` - $AllowPrerelease, ` - $CaseSensitive, ` - $LatestVersion, ` - $PageIndex - $results = Invoke-RestMethod -Uri $queryUri - } - End - { - Write-Host " Total Results : $($results.totalResults)" -ForegroundColor DarkCyan - Write-Host " Total Pages : $($results.totalPages)" -ForegroundColor DarkCyan - if ($results.pageIndex -ne 0) { - Write-Host " Page Index : $($results.pageIndex)" -ForegroundColor DarkCyan - } - - Write-Verbose "NuGet root: $($results.nuGetRoot)" - Write-Verbose "Page size: $($result.pageSize)" - - if ($results.packages.Count -eq 0) { - Write-Host "No packages found." - } - return $results.packages - } -} - -<# - .Synopsis - Searches for Nuget packages by a namespace name. - .DESCRIPTION - Searches Jet Brain's awesome Resharper API for Nuget packages by namespace, and returns - a paged list of objects. Results are limited to 20 per page, so this function also returns - the total number of items, the total pages and the current page (if applicable). - - .PARAMETER Search - Namespace name to search. - - .PARAMETER AllowPrerelease - Allow searching for prerelease nuget packages, false by default. - - .PARAMETER CaseSensitive - Use case sensitive matching for type name, false by default. - - .PARAMETER LatestVersion - Search only latest versions of packages, true by default - - .PARAMETER PageIndex - Search results page index, page size is 20 items. - - .EXAMPLE - Simple search for a specific type: - - Search-NugetForNamespace Esri - - .EXAMPLE - Go to a specific page in the search results: - - Search-NugetForNamespace Date -PageIndex 8 -#> -Function Search-NugetForNamespace { - [CmdletBinding()] param( - [Parameter(Mandatory=$true, Position=0 )] [String] $Search, - [Parameter()] [Switch]$AllowPrerelease = $false, - [Parameter()] [Switch]$CaseSensitive = $false, - [Parameter()] [Switch]$LatestVersion, - [Parameter()] [Int32]$PageIndex = 0 - ) - Begin - { - $rootUri = "http://resharper-nugetsearch.jetbrains.com/api/v1/find-namespace?" - - # Fix for Invoke-RestMethod through authenticated proxies - [System.Net.WebRequest]::DefaultWebProxy = [System.Net.WebRequest]::GetSystemWebProxy() - [System.Net.WebRequest]::DefaultWebProxy.Credentials = [System.Net.CredentialCache]::DefaultNetworkCredentials - } - Process - { - $queryUri = "$($rootUri)name={0}&allowPrerelease={1}&caseSensitive={2}&latestVersion={3}&pageIndex={4}" -f $Search, ` - $AllowPrerelease, ` - $CaseSensitive, ` - $LatestVersion, ` - $PageIndex - $results = Invoke-RestMethod -Uri $queryUri - } - End - { - Write-Host " Total Results : $($results.totalResults)" -ForegroundColor DarkCyan - Write-Host " Total Pages : $($results.totalPages)" -ForegroundColor DarkCyan - if ($results.pageIndex -ne 0) { - Write-Host " Page Index : $($results.pageIndex)" -ForegroundColor DarkCyan - } - - Write-Verbose "NuGet root: $($results.nuGetRoot)" - Write-Verbose "Page size: $($result.pageSize)" - - if ($results.packages.Count -eq 0) { - Write-Host "No packages found." - } - return $results.packages - } -} diff --git a/PROJECT_OVERVIEW.md b/PROJECT_OVERVIEW.md new file mode 100644 index 0000000..62fdbcd --- /dev/null +++ b/PROJECT_OVERVIEW.md @@ -0,0 +1,378 @@ +# IntelliTect.PSToolbox — Project Overview & Modernization Review + +> A deep review of every module, function, and supporting file in this repository, with current-state assessment and modern-replacement guidance. +> +> **Repository state at time of review:** last commit on `main` is `3db40cf` (2022-12-16). Tests already use Pester 5 syntax (`Should -Be`), but CI invocation, manifests, and many functions are pre‑PowerShell‑7 era. +> +> **Target runtime considered "modern":** PowerShell 7.4 LTS / 7.6 (current LTS), running on Windows, Linux, and macOS. + +--- + +## 1. Repository layout + +| Path | Purpose | Status | +|---|---|---| +| `Modules/` | Active modules published to PowerShell Gallery | Mixed — see §2 | +| `Functions/` | Loose `.ps1` scripts dot-sourced by `Main.ps1`; not a module | Mostly obsolete — see §3 | +| `Archived Modules/` | Retired modules left in source tree | Should be deleted — see §4 | +| `Modules.Tests/` | Pester tests for modules | Pester 5 syntax already; runs OK | +| `Functions.Tests/` | Pester tests for loose scripts; also contains 31 MB of `.CR2` + `.tcx` fixtures | Fixtures shouldn't be in git | +| `submodules/RamblingCookieMonster/PowerShell` | Third-party submodule | Unused; SSH-only URL breaks anonymous clones | +| `Lib/`, `Content/`, `temp/` | Miscellaneous binaries / scratch | Investigate before deleting | +| `Main.ps1`, `Main.Tests.ps1` | Dot-source-everything entry point | Obsolete; modules should be imported individually | +| `Setup.ps1` | Admin-required bootstrap, adds ISE alias | ISE is dead; rewrite or delete | +| `Publish.ps1` | PSGallery publisher using `Publish-Module` | Migrate to `Publish-PSResource` | +| `PSScriptAnalyzerSettings.psd1` | Empty rule set (`ExcludeRules = @()`) | Analyzer effectively disabled | +| `.github/workflows/PullRequest.yml` | Pester + dotnet build/test on PR | Uses `actions/checkout@v2` (deprecated) and Pester 4 `-OutputFormat NUnitXML` | +| `.github/workflows/Deploy.yml` | Discovers changed module folders and publishes | Uses `actions/checkout@v2`; relies on PowerShellGet v2 `Publish-Module` | + +--- + +## 2. Modules — inventory & modernization verdict + +Legend: 🟢 keep · 🟡 keep with rewrite · 🔴 deprecate · ⚫ already obsolete + +### 2.1 `IntelliTect.Common` — 🟢 **keep (with fixes)** + +Version `0.2.0.7` · Author: Mark Michaelis · No external dependencies. + +| Function | What it does | Modern equivalent | Verdict | +|---|---|---|---| +| `Add-PathToEnvironmentVariable` | Append a path to `$env:PATH` (or any env var) with dedup, at User/Machine/Process scope | None in PS 7 — `[Environment]::SetEnvironmentVariable` is the raw primitive but does not dedup | **Keep** | +| `Invoke-ShouldProcess` | Helper that wraps `$PSCmdlet.ShouldProcess` + scriptblock execution | None | **Keep** | +| `ConvertFrom-Hashtable` | Hashtable → `PSCustomObject` | `[PSCustomObject]$hashtable` (native in PS 5+) | **Replace inline** — one-liner suffices | +| `Highlight` (alias `HL`) | Print matching lines yellow via `Write-Host` | `Select-String` does not colorize; PS 7 ANSI escapes give cleaner result | **Keep but modernize** — use `"$([char]27)[33m$line$([char]27)[0m"` | +| `Initialize-Array` | Returns `$args` as an array | None — but trivial; `@($a, $b, $c)` is idiomatic | **Remove** | +| `Add-DisposeScript` | Bolts `Dispose()` + `IsDisposed` onto an arbitrary object | None — PS has no IDisposable-style `using` block | **Keep** | +| `Register-AutoDispose` (alias `Using`) | `try { … } finally { $obj.Dispose() }` wrapper | None | **Keep** | +| `Get-TempDirectory` | Create a `[DirectoryInfo]` in `$env:TEMP` with Dispose hook | No native temp-directory cmdlet ([PS#5009](https://github.com/PowerShell/PowerShell/issues/5009)) | **Keep** | +| `Get-TempFile` | Same as above for files | `New-TemporaryFile` (PS 5.1+) returns a `[FileInfo]` but has no Dispose | **Thin wrapper over `New-TemporaryFile`** | +| `Get-FileSystemTempItemPath` | Generates a non-existent path under `$env:TEMP` | `[IO.Path]::GetTempFileName()` / `GetRandomFileName()` | **Keep** (small) | +| `ConvertTo-Lines` | Split a string on newlines | `$s -split "`r?`n"` | **Remove** — too trivial | +| `Test-Command` | `Get-Command -ErrorAction Ignore` as a bool | None — but trivial | **Keep** | +| `Test-Property` | Check if a property name exists on an object | None | **Keep** | +| `Test-VariableExists` | `Test-Path Variable:\$Name` | None | **Keep** | +| `Get-IsWindowsPlatform` | Detect Windows | `$IsWindows` (automatic variable since PS 6) | **Remove** — and the function is **buggy** (returns `$true` on Linux/macOS PS 7, see §5) | +| `Set-IsWindowsVariable` | Sets a global `$IsWindows` if not present | Automatic in PS 6+ | **Remove** — runs on import as a side effect | +| `Wait-ForCondition` | Poll a predicate against a pipeline of items with timeout | None in `Microsoft.PowerShell.Utility` | **Keep** | + +--- + +### 2.2 `IntelliTect.Git` — 🟢 **keep (with fixes)** + +Version `1.0.0.0` · Depends on `IntelliTect.Common`. Exports `*`. + +| Function | What it does | Modern equivalent | Verdict | +|---|---|---|---| +| `Invoke-GitCommand` | Runs git with `ShouldProcess`, color output, and optional JSON object output | None | **Keep** — fix `Start-Process`/`$LASTEXITCODE` TODO at line ~375 | +| `Get-GitRepo` | Returns `IsBare` | `git rev-parse --is-bare-repository` directly | **Optional** | +| `Get-GitItemStatus` | Parses `git status --porcelain` to objects | `git status --porcelain=v2` parser; no module covers this | **Keep** | +| `Update-GitAuthor` | Rewrites a single commit's author via `git replace` | Use `git rebase -i --exec` or `git filter-repo` (modern replacement for `filter-branch`) | **Keep but document** | +| `New-GitIgnore` | Fetches `.gitignore` from `gitignore.io` | `gitignore.io` now redirects to `toptal.com/developers/gitignore/api/` — still works | **Keep but update URL** and drop the 1500-char fallback list | +| `Undo-Git` | `git reset --hard` + `git clean -f -d -X` | Direct git commands | **Keep** — useful one-stop wrapper | +| `Get-GitBranch` | Current branch name | `git branch --show-current` (Git 2.22+) | **Keep** (older-Git fallback retained) | +| `Remove-GitBranch` | Delete branches matching a pattern | None — `git branch -D` does not support wildcards | **Keep** | +| `Find-GitBranch` | List branches matching a pattern | `git branch --list ` | **Optional** | +| `Get-GitItemProperty` | Valid `git --format` field names | Static list; useful for tab-completion | **Keep** | +| `Push-GitBranch` | `git push` with optional `--set-upstream` | None — fills a niche | **Keep but fix:** bypasses its own `Invoke-GitCommand`, uses inline `git`, mishandles `$LASTEXITCODE` | +| `Invoke-GitDiff` | Colorized diff between two files | `git diff --color` directly | **Optional** | + +--- + +### 2.3 `IntelliTect.File` — 🟡 **keep partial, replace recycle/encoding** + +Version `0.5` · Depends on `IntelliTect.Common`. Exports `*`. + +| Function | What it does | Modern equivalent | Verdict | +|---|---|---|---| +| `Edit-File` | `New-Item` if missing + `Invoke-Item` | None — but does what its name says | **Keep** | +| `Test-FileIsLocked` | Try-open with `FileShare.None` to detect locks | None | **Keep** | +| `Set-FileEncoding` | Convert files between encodings | `Get-Content -Encoding`/`Set-Content -Encoding` already work; this is a thin wrapper | **Optional** | +| `Get-FileEncoding` | Detect by BOM | **Broken in PS 6+** — uses `Get-Content -Encoding byte` (removed); needs `-AsByteStream`. Replace with `[IO.StreamReader]::new($p).CurrentEncoding` after a read. | **Rewrite** | +| `Remove-FileToRecycleBin` | Send to recycle bin via `Microsoft.VisualBasic.FileIO` | [`Recycle`](https://www.powershellgallery.com/packages/Recycle) — `Remove-ItemSafely` | **Replace with `Recycle`** | +| `Test-ItemIsEmpty` | Is a directory empty? | None | **Keep** | +| `Remove-FileSystemItemForcibly` | Robocopy-based force delete | None (clever Windows-only hack) | **Keep on Windows** | +| `Join-Path` | n-ary `Join-Path` wrapper | PS 7 `Join-Path` natively accepts `-AdditionalChildPath` | **Remove** | + +--- + +### 2.4 `IntelliTect.CredentialManager` — 🔴 **deprecate** in favor of `CredentialManager` or `SecretManagement` + +Version `1.1.1.1` · Depends on `IntelliTect.Common`. Windows-only. + +Wraps `cmdkey.exe` (write) and P/Invokes `ADVAPI32.CredRead` (read). Contains ~35 lines of **dead code** after an unconditional `Return;` (psm1 lines 65–101). `Remove-CredentialManagerCredential` and `Get-CredentialPassword` are defined but **not exported**. + +| Use case | Modern replacement | +|---|---| +| Windows-only drop-in | [`CredentialManager`](https://www.powershellgallery.com/packages/CredentialManager) v2.0 — `Get-StoredCredential` / `Set-StoredCredential` / `Remove-StoredCredential` | +| Cross-platform | [`Microsoft.PowerShell.SecretManagement`](https://www.powershellgallery.com/packages/Microsoft.PowerShell.SecretManagement) + [`Microsoft.PowerShell.SecretStore`](https://www.powershellgallery.com/packages/Microsoft.PowerShell.SecretStore) | +| Bridge — SecretManagement using Windows Credential Manager as backend | [`SecretManagement.JustinGrote.CredMan`](https://www.powershellgallery.com/packages/SecretManagement.JustinGrote.CredMan) | + +**Verdict:** retire. Optionally republish as a thin shim that re-exports `CredentialManager`'s cmdlets under the IntelliTect names for back-compat. + +--- + +### 2.5 `IntelliTect.PSRestore` — 🔴 **deprecate** — replaced by PSReadLine + +Version `0.4.0.0` · Restores command history and ISE working directory across sessions. Heavily ISE‑specific. + +PSReadLine ships with PowerShell 7 and provides cross-session history out of the box: + +```powershell +Set-PSReadLineOption -HistorySavePath "$env:USERPROFILE\.ps_history" +Set-PSReadLineOption -HistoryNoDuplicates +Set-PSReadLineOption -MaximumHistoryCount 10000 +Set-PSReadLineOption -PredictionSource HistoryAndPlugin +``` + +All ISE-related code paths are dead in PS 6+ (ISE is not shipped). **Retire the module entirely.** + +--- + +### 2.6 `AzureManagement` — ⚫ **already obsolete** + +Version `1.0` · Wraps the AzureRM and Azure Service Management modules (`Install-Module AzureRM`, `Login-AzureRmAccount`, `New-AzureVM`, etc.). **AzureRM was retired by Microsoft on 2024-02-29**; the modules no longer install or authenticate against current Azure. + +Replace with [`Az`](https://www.powershellgallery.com/packages/Az). The IntelliTect wrappers are not 1-to-1 with `Az` cmdlets and would need to be rewritten from scratch. Easiest path: **delete the module**; consumers use `Az` directly. + +--- + +### 2.7 `IntelliTect.MicrosoftWord` — 🔴 **deprecate or rewrite** + +Version `0.5.0.12` · 47 KB of `Word.Application` COM Interop. Requires Office installed on Windows. Functions: `Open-WordDocument`, `Get-WordDocumentComment`, `Update-WordDocumentAcceptAllChanges`, `Set-WordDocumentTrackChanges`, `Invoke-WordDocumentFindReplace`, `Compare-WordDocument`, etc. + +Modern alternative: [`DocumentFormat.OpenXml`](https://www.nuget.org/packages/DocumentFormat.OpenXml) NuGet (cross-platform, no Word install) or [`PSWriteOffice`](https://www.powershellgallery.com/packages/PSWriteOffice). Not drop-in — different object model. Decide based on whether any consumers actually depend on this. + +--- + +### 2.8 `IntelliTect.PSDbxCli` — 🔴 **deprecate** + +Version `0.5` · Wraps `dbxcli.exe`. Functions: `Get-DbxItem`, `Write-DbxFile`, `Save-DbxFile`, `Get-DbxRevision`, etc. + +[`dbxcli`](https://github.com/dropbox/dbxcli) was never officially supported by Dropbox (their README states this explicitly) and has had no meaningful changes since 2019–2020. Modern alternatives: + +- [`rclone`](https://rclone.org) — actively maintained, supports Dropbox as a backend +- Dropbox API v2 via `Invoke-RestMethod` against `https://api.dropboxapi.com/2/` + +**Delete.** + +--- + +### 2.9 `IntelliTect.PSDropbin` — 🔴 **deprecate** + +Version `0.7.1.0` · Binary module (`bin\IntelliTect.PSDropbin.dll`) implementing a PowerShell provider for Dropbox. The DLL is checked in. Same Dropbox-CLI-era concerns; no maintenance since the original commit. + +**Delete unless someone is still using it.** + +--- + +### 2.10 `IntelliTect.ResharperNugetSearch` — 🔴 **deprecate** + +Version `1.0.0.1` · Calls `http://resharper-nugetsearch.jetbrains.com/api/v1/find-type` / `find-namespace`. The API is technically still alive but its index is frozen at ~2019 — it misses every package newer than that. + +Modern replacement: NuGet's own v3 search API: + +```powershell +Invoke-RestMethod 'https://azuresearch-usnc.nuget.org/query?q=IEnumerable&prerelease=false' | + Select-Object -ExpandProperty data +``` + +Also note two bugs in the existing code: `Write-Verbose "Page size: $($result.pageSize)"` at lines ~73 and ~149 should be `$results.pageSize` (silently logs nothing today). + +**Delete.** + +--- + +### 2.11 `IntelliTect.Google` — 🔴 **deprecate** + +Version `1.5.3.0` · Functions: `Search-Google` (opens a browser URL), `Get-GoogleSession` (scrapes the Google login flow), `Get-GoogleLocationHistoryKmlFile` (downloads Google Location History KML). + +`Get-GoogleSession` does form-scraping of the Google login page — brittle and likely already broken given Google's auth-flow changes. Location History KML export is now done through [Google Takeout](https://takeout.google.com/). Google has also been migrating Location History from server-side to on-device. + +**Delete.** If location-history processing is still valuable, replace with a script that consumes Takeout output. + +--- + +### 2.12 `IntelliTect.PSToolbox` — 🟡 **keep as the umbrella manifest** + +Version `1.4.2.4` · No `RootModule`; only a `RequiredModules` list. Acts purely as a meta‑package to install the others. After path B (slim-and-modernize) the `RequiredModules` should shrink to `IntelliTect.Common` and `IntelliTect.Git`. Bump to a new major version when published. + +--- + +### 2.13 `DotNetCore` — 🟡 **keep** + +Version `0.2` · Single exported function `Set-DotNetSdkVersion` that updates/creates `global.json`. No external dependencies. Useful and small. Note manifest does not enumerate `FunctionsToExport`. **Keep with a manifest cleanup.** + +--- + +## 3. `Functions/` — loose scripts + +`Main.ps1` dot-sources every `*.ps1` in this directory (excluding `__*.ps1`, and excluding `*_ISE.ps1` unless running under ISE). This is a 2014-era pattern; it is not a module and cannot be published. + +| File | Purpose | Verdict | +|---|---|---| +| `Azure.ps1` (28 KB) | Misc Azure helpers, AzureRM-era | 🔴 Delete | +| `Clear-Temp.ps1` | Cleans `$env:TEMP` | 🟡 Move to `IntelliTect.File` | +| `Computer.ps1` | Tiny helper | 🔴 Delete | +| `ConvertFrom-LabelColonValue.ps1` | Parses `Label: Value` text blocks | 🟡 Move to `IntelliTect.Common` if used | +| `Device.ps1` | Tiny helper | 🔴 Delete | +| `Disable-IEEnhancedSecurity.ps1` | Turns off IE ESC | 🔴 Delete (IE is retired) | +| `DotNetCore.ps1` | Duplicates `DotNetCore` module | 🔴 Delete | +| `File_ISE.ps1` | ISE editor helpers | 🔴 Delete (ISE dead) | +| `GeoTrack.ps1` | GPS / geo-tracking | 🟡 Keep only if used; otherwise extract to a personal repo | +| `Get-PSToDo.ps1` | 109-byte helper | 🔴 Delete | +| `Get-TfInfo.ps1` | TFS helper | 🔴 Delete; use `TfsCmdlets` or `az devops` | +| `Get-WindowsSpecialFolders.ps1` | Wraps `[Environment]::GetFolderPath` | 🔴 Delete (one-liner) | +| `HostsFileEntry.ps1` | Edit `hosts` file | 🔴 Replace with [`PSHosts`](https://www.powershellgallery.com/packages/PSHosts) | +| `Import-VisualStudioVars.ps1` | Imports VS dev env | 🔴 Replace with `Enter-VsDevShell` from the `VSSetup` module | +| `Invoke-ActionWhenFilechanges.ps1` | `FileSystemWatcher` wrapper | 🟡 Move to `IntelliTect.File` if kept | +| `Member.ps1` | Reflection helpers | 🟡 Move to `IntelliTect.Common` if kept | +| `MicrosoftWindows.ps1` | Misc Windows helpers | 🔴 Delete | +| `New-CommentHelp.ps1` | Generates comment-based help scaffold | 🟡 Keep if used; otherwise [PlatyPS](https://github.com/PowerShell/platyPS) is better | +| `New-NugetPackage.ps1` | Wraps `nuget.exe pack` | 🔴 Replace with `dotnet pack` | +| `New-PSCustomObject.ps1` | Object construction helper | 🔴 Delete (use `[PSCustomObject]@{…}`) | +| `Photo.ps1` (23 KB) | Photo manipulation | 🟡 Personal-use; consider extraction | +| `PhotoLibrary.xml` (146 KB) | Reference data | 🔴 Should not be in repo | +| `PowerShellScripting.ps1` | **Empty file (0 bytes)** | 🔴 Delete | +| `Program.ps1` (27 KB) | Program/process helpers | 🟡 Review case-by-case | +| `PSScript.ps1`, `PSScript_ISE.ps1` | Script helpers | 🟡 Drop `_ISE`; review the rest | +| `PushBullet.ps1` | Send push notifications via Pushbullet | 🔴 Delete; service is effectively abandoned. Modern picks: [`ntfy`](https://ntfy.sh), Pushover, Telegram Bot API | +| `Reflection.ps1` | Reflection helpers | 🟡 Move to `IntelliTect.Common` if kept | +| `TCX.ps1` | TCX activity files | 🟡 Niche; extract | +| `TFS.ps1` | TFS commands | 🔴 Delete; use `TfsCmdlets` or `az devops` | +| `ToDo.ps1` | **Empty file (0 bytes)** | 🔴 Delete | +| `VSProject.ps1` | VS .csproj manipulation | 🟡 Consider replacing with `dotnet`/MSBuild | +| `WindowsSearchIndex.ps1` | Windows Search index | 🟡 Niche; review | +| `WindowsShortcut.ps1` | Create `.lnk` files | 🟡 Keep — no maintained module covers this | +| `__Colorizer.ps1.__`, `__Get-Disk.ps1.__` | Hidden backup artifacts | 🔴 Delete | + +--- + +## 4. `Archived Modules/` + +| Module | Status | +|---|---| +| `IntelliTect.AzureRm` | Already archived; AzureRM is retired. **Delete from repo.** | +| `IntelliTect.DropboxToGit` | Already archived. **Delete from repo.** | + +Keeping archived modules in source confuses readers and adds search noise. They live in git history if needed. + +--- + +## 5. Bugs & dead code (concrete, with citations) + +| # | File:line | Issue | +|---|---|---| +| 1 | `Modules\IntelliTect.CredentialManager\IntelliTect.CredentialManager.psm1:65` | Unconditional `Return;` followed by ~35 lines of dead P/Invoke code | +| 2 | `Modules\IntelliTect.CredentialManager\IntelliTect.CredentialManager.psd1` | `Remove-CredentialManagerCredential` and `Get-CredentialPassword` defined in `.psm1` but **not** in `FunctionsToExport` | +| 3 | `Modules\IntelliTect.Common\IntelliTect.Common.psm1:381-386` | `Get-IsWindowsPlatform` is broken — returns `$true` on Linux/macOS under PS 7 Core because the second clause `($PSEdition -eq 'Core')` matches on every platform. Operator precedence treats this as `($IsWindows -or 'PSEdition' -in $keys) -and (Desktop OR Core)` | +| 4 | `Modules\IntelliTect.Common\IntelliTect.Common.psm1:398` | `Set-IsWindowsVariable` runs **on module import** as a side effect, polluting the global scope | +| 5 | `Modules\IntelliTect.File\IntelliTect.File.psm1:129` | `Get-FileEncoding` uses `Get-Content -Encoding byte` which was **removed in PowerShell 6**; needs `-AsByteStream` | +| 6 | `Modules\IntelliTect.Git\IntelliTect.Git.psm1:163-187` | `New-GitIgnore` URL is `gitignore.io` — now redirects to `toptal.com/developers/gitignore`; works but should be updated. Hard-coded 1500-char fallback list is unmaintainable. | +| 7 | `Modules\IntelliTect.Git\IntelliTect.Git.psm1:362-384` | `Push-GitBranch` bypasses its own `Invoke-GitCommand` wrapper, mishandles `$LASTEXITCODE`, and uses inline `git rev-parse` for upstream detection | +| 8 | `Modules\IntelliTect.ResharperNugetSearch\IntelliTect.ResharperNugetSearch.psm1:~73,~149` | `Write-Verbose "Page size: $($result.pageSize)"` — typo; should be `$results.pageSize` (verbose log shows nothing) | +| 9 | `Modules\IntelliTect.PSToolbox\IntelliTect.PSToolbox.psd1:12` | `RootModule` commented out; `FunctionsToExport = '*'` and `CmdletsToExport = '*'` defeat module-discovery performance | +| 10 | `Functions\ToDo.ps1`, `Functions\PowerShellScripting.ps1` | **Empty 0-byte files**, dot-sourced by `Main.ps1` | +| 11 | `Functions\__Colorizer.ps1.__`, `Functions\__Get-Disk.ps1.__` | Hidden backup artifacts left in source | +| 12 | `Functions.Tests\IMG_2452.CR2`, `IMG_2456.CR2`, `activity_521153787.tcx`, etc. | ~31 MB of binary fixtures committed to git; should be Git LFS or excluded | +| 13 | `.github\workflows\PullRequest.yml`, `.github\workflows\Deploy.yml` | `actions/checkout@v2` is deprecated; `Invoke-Pester -OutputFormat NUnitXML` is Pester v4 syntax (Pester 5 uses configuration objects) | +| 14 | `Publish.ps1` | Uses `Publish-Module` (PowerShellGet v2); preferred path is `Publish-PSResource` (PSResourceGet, bundled with PS 7.4+) | +| 15 | `Setup.ps1` | Requires admin rights to add an ISE alias — ISE is no longer shipped or supported | +| 16 | `.gitmodules` | Submodule URL is `git@github.com:RamblingCookieMonster/PowerShell.git` — SSH-only, breaks anonymous clones. The submodule does not appear to be used. | +| 17 | Several modules use `FunctionsToExport = '*'` | Defeats fast module auto-discovery in PS 7; should be explicit | + +--- + +## 6. Replacement matrix (capability → modern) + +| Capability | This repo | Modern replacement | Drop-in? | +|---|---|---|---| +| Windows Credential Manager | `IntelliTect.CredentialManager` | [`CredentialManager`](https://www.powershellgallery.com/packages/CredentialManager) v2.0 | Near drop-in (different verb-nouns) | +| Cross-platform secrets | — | [`Microsoft.PowerShell.SecretManagement`](https://www.powershellgallery.com/packages/Microsoft.PowerShell.SecretManagement) + [`SecretStore`](https://www.powershellgallery.com/packages/Microsoft.PowerShell.SecretStore) | No (new architecture) | +| Command history | `IntelliTect.PSRestore` | [`PSReadLine`](https://www.powershellgallery.com/packages/PSReadLine) (ships with PS 7) | Yes — superior | +| Azure | `AzureManagement`, `Functions/Azure.ps1` | [`Az`](https://www.powershellgallery.com/packages/Az) (AzureRM retired 2024-02-29) | No | +| Dropbox | `IntelliTect.PSDbxCli`, `IntelliTect.PSDropbin` | [`rclone`](https://rclone.org) or Dropbox API v2 REST | No | +| NuGet search | `IntelliTect.ResharperNugetSearch` | NuGet v3 search API directly | No (REST) | +| Word docs | `IntelliTect.MicrosoftWord` (COM) | [`DocumentFormat.OpenXml`](https://www.nuget.org/packages/DocumentFormat.OpenXml) NuGet or [`PSWriteOffice`](https://www.powershellgallery.com/packages/PSWriteOffice) | No | +| Recycle bin | `Remove-FileToRecycleBin` | [`Recycle`](https://www.powershellgallery.com/packages/Recycle) (`Remove-ItemSafely`) | Yes | +| Hosts file | `Functions/HostsFileEntry.ps1` | [`PSHosts`](https://www.powershellgallery.com/packages/PSHosts) | Yes | +| TFS / Azure DevOps | `Functions/TFS.ps1`, `Get-TfInfo.ps1` | [`TfsCmdlets`](https://www.powershellgallery.com/packages/TfsCmdlets) (active in 2026) or `az devops` | No | +| NuGet packaging | `Functions/New-NugetPackage.ps1` | `dotnet pack` (SDK-style) / `nuget.exe` v7+ (legacy `.nuspec`) | No (CLI) | +| File encoding (BOM) | `Get-FileEncoding` | `[IO.StreamReader]::new($p).CurrentEncoding` | Inline | +| `using` / Dispose | `Register-AutoDispose` | None — PS has `using namespace/module/assembly` only, not C#-style disposal | **Keep this** | +| Temp directory | `Get-TempDirectory` | None — no native cmdlet ([PS#5009](https://github.com/PowerShell/PowerShell/issues/5009)) | **Keep this** | +| Temp file | `Get-TempFile` | `New-TemporaryFile` (PS 5.1+) — but no Dispose | Partial | +| Wait for predicate | `Wait-ForCondition` | None | **Keep this** | +| Colorized grep | `Highlight` | `Select-String` is not colorized; PS 7 ANSI escapes work natively | **Keep, modernize** | +| Add path to env var | `Add-PathToEnvironmentVariable` | None | **Keep this** | +| Push notifications | `Functions/PushBullet.ps1` | [`ntfy.sh`](https://ntfy.sh), Pushover, Telegram Bot API | No | +| ISE helpers | `*_ISE.ps1`, ISE branches of PSRestore | VS Code `$psEditor` API + `ms-vscode.PowerShell` extension | No (full rewrite) | +| Comment-based help | `New-CommentHelp.ps1` | [PlatyPS](https://github.com/PowerShell/platyPS) for external help | Different model | +| Pester tests | `Modules.Tests/`, `Functions.Tests/` | Pester 5.7.1 (tests already use `Should -Be` syntax; only the CI runner needs updating) | Mostly yes | +| Publish to PSGallery | `Publish.ps1` (`Publish-Module`) | [`Publish-PSResource`](https://learn.microsoft.com/powershell/module/microsoft.powershell.psresourceget/publish-psresource) (PSResourceGet, bundled with PS 7.4+) | Near drop-in | + +--- + +## 7. Recommendations going forward + +Three paths are realistic. + +### Path A — Archive + +- Mark the repo read-only on GitHub. +- Add an `ARCHIVED.md` at the root that points users at the modern replacements in §6. +- Unlist the obsolete modules from PowerShell Gallery (`AzureManagement`, `IntelliTect.PSDbxCli`, `IntelliTect.PSDropbin`, `IntelliTect.PSRestore`, `IntelliTect.ResharperNugetSearch`, `IntelliTect.MicrosoftWord`, `IntelliTect.Google`). +- Stop here. + +**When to choose A:** if download counts on PSGallery are low and no internal team depends on these modules. Lowest effort, lowest ongoing cost. + +### Path B — Slim and modernize (**recommended**) + +The vast majority of the genuinely useful code lives in `IntelliTect.Common` and `IntelliTect.Git`. Everything else is either superseded, abandoned upstream, or one-off scripts. + +1. **Delete** these modules and their tests: + - `AzureManagement`, `IntelliTect.PSDbxCli`, `IntelliTect.PSDropbin`, `IntelliTect.PSRestore`, `IntelliTect.ResharperNugetSearch`, `IntelliTect.MicrosoftWord`, `IntelliTect.Google` +2. **Delete** `Functions/`, `Functions.Tests/`, `Main.ps1`, `Main.Tests.ps1`, `Archived Modules/`, `submodules/`, `.gitmodules`, `Lib/`, `Content/`, `temp/` (after verifying contents aren't needed). +3. **Keep, fix, and modernize** two modules + the umbrella: + - `IntelliTect.Common` — remove `Get-IsWindowsPlatform`/`Set-IsWindowsVariable`/`Initialize-Array`/`ConvertTo-Lines`/n-ary `Join-Path`; fix or remove broken helpers; ANSI-modernize `Highlight`; thin `Get-TempFile` over `New-TemporaryFile`. + - `IntelliTect.Git` — fix `Push-GitBranch` exit-code handling; update `New-GitIgnore` URL; drop the hard-coded fallback list. + - `IntelliTect.PSToolbox` (umbrella) — shrink `RequiredModules` to `IntelliTect.Common`, `IntelliTect.Git`. + - Consider keeping `IntelliTect.File` (small, useful), replacing `Get-FileEncoding` and recommending `Recycle` for recycle-bin needs. Or merge its keepers into `IntelliTect.Common`. +4. **Modernize CI**: + - `actions/checkout@v4` + - Run Pester 5.x via a `PesterConfiguration` object instead of `-OutputFormat NUnitXML`. + - Publish with `Publish-PSResource` (PSResourceGet) instead of `Publish-Module`. + - Wire up PSScriptAnalyzer with a non-empty rule set (start with `PSGallery` profile, add exceptions explicitly). + - Cross-platform CI matrix (Windows + Ubuntu) for `IntelliTect.Common` and `IntelliTect.Git`. +5. **Cut a new major version** (`2.0.0`) for `IntelliTect.PSToolbox` to signal breaking changes. README should explicitly document which modules were retired and which third-party modules to install instead. +6. Optionally publish a thin **`IntelliTect.CredentialManager` 2.0** that just re-exports `CredentialManager`'s cmdlets under the old IntelliTect names, for back-compat. + +**When to choose B:** if the niche helpers (`Wait-ForCondition`, `Register-AutoDispose`, branch wrappers, `Add-PathToEnvironmentVariable`) provide real value and you're willing to publish maintained releases. Best long-term ratio of effort to value. + +### Path C — Full rewrite + +Start a new repo with modern conventions: +- One module per repo (or use a monorepo with [Microsoft.PowerShell.Crescendo](https://learn.microsoft.com/powershell/utility-modules/crescendo/overview) for CLI wrappers like git). +- [PlatyPS](https://github.com/PowerShell/platyPS) for external help. +- Reusable GitHub Actions workflows. +- Modern PSScriptAnalyzer config. +- 100 % Pester 5 from the start. + +Same scope as B, just cleaner. More effort; defensible if you want to take the opportunity to start fresh. + +--- + +## Final recommendation + +**Take Path B.** It rescues the ~30 % of code that is genuinely valuable, retires the ~70 % that has been quietly superseded since 2018–2023, and reduces ongoing maintenance to two small modules. Path A is acceptable if no one actively uses these modules; Path C is preferable only if you want a green-field design exercise. + +## Citations + +- PowerShell support lifecycle: +- PSResourceGet: +- AzureRM retirement notice: +- ISE deprecation: +- Pester 5 migration: +- PSReadLine: +- `dbxcli` unofficial-support notice: +- Native temp-directory cmdlet request (still open): diff --git a/PSScriptAnalyzerSettings.psd1 b/PSScriptAnalyzerSettings.psd1 index 12e8004..d30fd57 100644 --- a/PSScriptAnalyzerSettings.psd1 +++ b/PSScriptAnalyzerSettings.psd1 @@ -1,28 +1,17 @@ -# The PowerShell Script Analyzer will generate a warning -# diagnostic record for this file due to a bug - -# https://github.com/PowerShell/PSScriptAnalyzer/issues/472 @{ - # Only diagnostic records of the specified severity will be generated. - # Uncomment the following line if you only want Errors and Warnings but - # not Information diagnostic records. - #Severity = @('Error','Warning') + # Severity of records to emit. + Severity = @('Error', 'Warning') - # Analyze **only** the following rules. Use IncludeRules when you want - # to invoke only a small subset of the defualt rules. - #IncludeRules = @('PSAvoidDefaultValueSwitchParameter', - # 'PSMisleadingBacktick', - # 'PSMissingModuleManifestField', - # 'PSReservedCmdletChar', - # 'PSReservedParams', - # 'PSShouldProcess', - # 'PSUseApprovedVerbs', - # 'PSAvoidUsingAliases', - # 'PSUseDeclaredVarsMoreThanAssigments') + # PSGallery rule profile is a reasonable baseline. Anything not explicitly + # excluded below will be enforced. + IncludeDefaultRules = $true - # Do not analyze the following rules. Use ExcludeRules when you have - # commented out the IncludeRules settings above and want to include all - # the default rules except for those you exclude below. - # Note: if a rule is in both IncludeRules and ExcludeRules, the rule - # will be excluded. - ExcludeRules = @() + ExcludeRules = @( + # Many cmdlets in this repo legitimately use Write-Host for interactive + # output (e.g. coloured terminal feedback in Highlight, Invoke-GitCommand). + 'PSAvoidUsingWriteHost', + # PSToolbox exports a curated set of aliases (HL, Edit, Using, Open) that + # have been part of the public surface for years. + 'PSAvoidUsingCmdletAliases' + ) } diff --git a/Publish.ps1 b/Publish.ps1 index 047d3da..8b7aab9 100644 --- a/Publish.ps1 +++ b/Publish.ps1 @@ -25,10 +25,6 @@ foreach ($item in $moduleFolders){ if (!(Test-Path $manifestPath)) { Write-Error "$($moduleName): Manifest was not found." - $submodules = git config --file (Join-Path $PSScriptRoot .gitmodules) --get-regexp path - if ($submodules | ?{$_ -match $moduleName}) { - Write-Error "$moduleName looks like a git submodule. Did you forget to run 'git submodule update --init --recursive'?" - } } else { $moduleStatus = "" @@ -99,7 +95,7 @@ if ($modulesToPublish.Count -gt 0){ } foreach ($item in $modulesToPublish) { - Publish-Module -Path $item.FullName -NuGetApiKey $PowerShellGalleryAPIKey + Publish-PSResource -Path $item.FullName -ApiKey $PowerShellGalleryAPIKey -Repository PSGallery } Write-Progress -Activity "Publish IntelliTect Module" -Completed } diff --git a/README.md b/README.md index f77304f..839370e 100644 --- a/README.md +++ b/README.md @@ -1,20 +1,54 @@ # IntelliTect.PSToolbox -[![Build status](https://intellitect.visualstudio.com/PSToolbox/_apis/build/status/PSToolbox-CI)](https://intellitect.visualstudio.com/PSToolbox/_build/latest?definitionId=48) -IntelliTect's PowerShell scripts and modules hosted at [PowerShell Gallery](https://www.powershellgallery.com/packages?q=Intellitect) +[![Pull Request](https://github.com/IntelliTect/PSToolbox/actions/workflows/PullRequest.yml/badge.svg)](https://github.com/IntelliTect/PSToolbox/actions/workflows/PullRequest.yml) -## These include: -[IntelliTect.Common](https://www.powershellgallery.com/packages/IntelliTect.Common/) - Provides functionality for common functions in PowerShell
-[IntelliTect.CredentialManager](https://www.powershellgallery.com/packages/IntelliTect.CredentialManager/) - Provides an easy-to-use interface to the Windows Credential Manager via PowerShell.
-[IntelliTect.Google](https://www.powershellgallery.com/packages/IntelliTect.Google/) - Provides functions for interacting with non-API-based Google services.
-[IntelliTect.PSRestore](https://www.powershellgallery.com/packages/IntelliTect.PSRestore/) - Provides functionality for restoring your command history in PowerShell and working directory in PowerShell ISE.
-[IntelliTect.PSToolbox](https://www.powershellgallery.com/packages/IntelliTect.PSToolbox/) - Shortcut module to install all of IntelliTect's PowerShell modules
-[IntelliTect.ResharperNugetSearch](https://www.powershellgallery.com/packages/IntelliTect.ResharperNugetSearch/) - Provides functions for searching against Jet Brains' Resharper Nuget Search API.
+A small, curated set of PowerShell modules published to the +[PowerShell Gallery](https://www.powershellgallery.com/packages?q=Intellitect). + +Requires **PowerShell 7.2 or later**. Runs on Windows, Linux, and macOS +(individual cmdlets that rely on Windows-only APIs degrade gracefully). + +## Maintained modules + +| Module | Description | +|---|---| +| [`IntelliTect.Common`](https://www.powershellgallery.com/packages/IntelliTect.Common/) | Generic utility functions: `Wait-ForCondition`, `Register-AutoDispose` / `Using`, `Add-DisposeScript`, `Get-TempFile`, `Get-TempDirectory`, `Add-PathToEnvironmentVariable`, `Highlight` (ANSI), etc. | +| [`IntelliTect.File`](https://www.powershellgallery.com/packages/IntelliTect.File/) | File-system helpers: `Edit-File`, `Test-FileIsLocked`, `Get-FileEncoding`, `Set-FileEncoding`, `Remove-FileToRecycleBin` (Windows), `Remove-FileSystemItemForcibly` (Windows). | +| [`IntelliTect.Git`](https://www.powershellgallery.com/packages/IntelliTect.Git/) | Git wrappers: `Invoke-GitCommand`, `Get-GitItemStatus`, `Get-GitBranch`, `Push-GitBranch`, `Remove-GitBranch`, `Find-GitBranch`, `New-GitIgnore`, `Undo-Git`, `Invoke-GitDiff`. | +| [`IntelliTect.CredentialManager`](https://www.powershellgallery.com/packages/IntelliTect.CredentialManager/) | Thin wrapper over the Windows Credential Manager. | +| [`IntelliTect.PSToolbox`](https://www.powershellgallery.com/packages/IntelliTect.PSToolbox/) | Umbrella module that pulls in all of the above. | ## Installation -To install these modules, you need the latest version of the PowerShellGet module. If you have Windows 10, you already have it. Otherwise, Instructions may be found at https://docs.microsoft.com/powershell/scripting/gallery/getting-started, or you may also run Setup.ps1 inside this repository to attempt to automatically install needed dependencies. -Once you are all set up, run `Install-Module IntelliTect.PSToolbox` to install the latest versions of these modules from PowerShell Gallery. +```powershell +Install-Module IntelliTect.PSToolbox +``` + +(or, for a single module: `Install-Module IntelliTect.Common`) + +## What happened to the other modules? + +Version **2.0.0** removed several modules that had been superseded by +mature, out-of-the-box solutions. Use these replacements instead: + +| Removed module | Recommended replacement | +|---|---| +| `AzureManagement` | [`Az`](https://learn.microsoft.com/powershell/azure/) | +| `IntelliTect.PSDbxCli` | [`dbxcli`](https://github.com/dropbox/dbxcli) directly | +| `IntelliTect.PSDropbin` | [Dropbox.Api SDK](https://www.nuget.org/packages/Dropbox.Api) | +| `IntelliTect.PSRestore` | Built-in Windows Recycle Bin / [`Recycle`](https://www.powershellgallery.com/packages/Recycle) | +| `IntelliTect.ResharperNugetSearch` | `Find-Package` / `nuget.exe search` | +| `IntelliTect.MicrosoftWord` | Word COM or [Open XML SDK](https://www.nuget.org/packages/DocumentFormat.OpenXml) | +| `IntelliTect.Google` | [GShell / Google APIs PowerShell module](https://www.powershellgallery.com/packages?q=google) | +| `IntelliTect.ChatGpt` | [`PowerShellAI`](https://www.powershellgallery.com/packages/PowerShellAI) | +| `DotNetCore` | `dotnet` CLI directly | +| `Functions/` loose scripts | Module the bits you need yourself; most are now obsolete (ISE, TFS, etc.) | + +The complete **1.x** history is preserved in this repository at +the tag [`v1.0-legacy`](https://github.com/IntelliTect/PSToolbox/releases/tag/v1.0-legacy) +and the branch [`legacy/v1`](https://github.com/IntelliTect/PSToolbox/tree/legacy/v1). +See [`PROJECT_OVERVIEW.md`](PROJECT_OVERVIEW.md) for the in-depth review that motivated this trim. ## Contributing -Please see [CONTRIBUTING.md](CONTRIBUTING.md) + +Please see [CONTRIBUTING.md](CONTRIBUTING.md). diff --git a/Setup.ps1 b/Setup.ps1 deleted file mode 100644 index c001fe5..0000000 --- a/Setup.ps1 +++ /dev/null @@ -1,55 +0,0 @@ -[CmdletBinding( - SupportsShouldProcess=$true #Tells the shell that your function supports both -confirm and -whatif. - ,ConfirmImpact="High" #Causes Confirm prompt when $ConfirmPreference is "High" -)] -param () - - -if (!([bool](([System.Security.Principal.WindowsIdentity]::GetCurrent()).groups -match "S-1-5-32-544"))){ - # http://superuser.com/questions/749243/detect-if-powershell-is-running-as-administrator - throw "Setup.ps1 requires administrative privelages." -} - - -#Install Pester -If(!(get-module Pester -ListAvailable)) { - If ($pscmdlet.ShouldProcess("Install Pester (https://github.com/pester/Pester)")) { - Install-Module Pester -verbose - } -} - -# Note: This function is defined by Chocolatey as well but we have a script local version in case Chocolatey is not installed. -# Also, this version sets the session instance of the enviroment variable. -Function Script:Set-EnvironmentVariable { - [CmdletBinding(SupportsShouldProcess)] - param( - [ValidateScript({-not [string]::IsNullOrWhiteSpace($_)})][Parameter(Mandatory)][string]$Name, - [Parameter(Mandatory)][string]$Value, - [ValidateSet('User','Machine')][string]$Scope='User' - ) - - [string]$scopeArgs = $null - if($Scope -eq 'Machine') { - $scopeArgs = '/M' - } - setx.exe $Name $Value $scopeArgs | Out-Null - Set-Item -Path Env:$Name -Value $Value -} - - -$PSToolboxPath=Join-Path $PSScriptRoot Modules -if($env:PSModulePath -notlike "*$PSToolboxPath*") { - Script:Set-EnvironmentVariable -Name 'PSModulePath' -Value "$PSToolboxPath;$env:PSModulePath" - if($PSToolboxPath -notin ($env:PSModulePath -split ';')) { - Write-Host -foreground Cyan $PSToolboxPath - #NOTE: This does not test the change from [System.Environment]::SetEnvironmentVariable is permanent. - throw "PSModulePath ('$env:PSModulePath') is not set with $PSToolboxPath" - } -} - -If(Test-Path variable:\psise) { - Function Test-CurrentFile { - Invoke-Pester $psISE.CurrentFile.FullPath.Replace(".Tests","").Replace(".ps1",".Tests.ps1"); - } - Set-Alias Test Test-CurrentFile -} diff --git a/submodules/RamblingCookieMonster/PowerShell b/submodules/RamblingCookieMonster/PowerShell deleted file mode 160000 index cdf6cb5..0000000 --- a/submodules/RamblingCookieMonster/PowerShell +++ /dev/null @@ -1 +0,0 @@ -Subproject commit cdf6cb570503210b3b9f0e39860b0c2e9970d540