From 67aaec89280411f2b5f7dcc12dcfd6534c838ae9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bruno=20S=C3=A1nchez-Andrade=20Nu=C3=B1o?= Date: Tue, 26 May 2015 18:41:41 -0400 Subject: [PATCH 01/49] Expand instructions. Add Cloudfront. from @zugaldia --- INSTALL.md | 62 +- cloudfront/GTFS_Editor_CloudFront.json | 155 ++ cloudfront/install.sh | 10 + docs/Import.md | 15 + docs/Install.md | 124 ++ docs/Install_CloudFront.md | 35 + docs/Screenshots.md | 17 + imports/google_transit_dc.txt | 1482 +++++++++++++++++ imports/google_transit_sf.txt | 73 + imports/sample_feed.txt | 32 + screenshots/GTFS_Editor___Home.png | Bin 0 -> 102384 bytes screenshots/GTFS_Editor___Search.png | Bin 0 -> 86846 bytes screenshots/Transit_Database___Edit_Route.png | Bin 0 -> 74648 bytes .../Transit_Database___Manage_Agencies.png | Bin 0 -> 42796 bytes 14 files changed, 1968 insertions(+), 37 deletions(-) create mode 100644 cloudfront/GTFS_Editor_CloudFront.json create mode 100644 cloudfront/install.sh create mode 100644 docs/Import.md create mode 100644 docs/Install.md create mode 100644 docs/Install_CloudFront.md create mode 100644 docs/Screenshots.md create mode 100644 imports/google_transit_dc.txt create mode 100644 imports/google_transit_sf.txt create mode 100644 imports/sample_feed.txt create mode 100644 screenshots/GTFS_Editor___Home.png create mode 100644 screenshots/GTFS_Editor___Search.png create mode 100644 screenshots/Transit_Database___Edit_Route.png create mode 100644 screenshots/Transit_Database___Manage_Agencies.png diff --git a/INSTALL.md b/INSTALL.md index 805c83fe..deb19d0b 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -1,50 +1,38 @@ -Installation Instructions -========================= +# GTFS Editor Installation -The following instructions assume installation on an Ubuntu server with sudo permissions. These steps assume Ubuntu 12.04.5 LTS, if using different version of Ubuntu the available versions of software may change requiring slight modifications to these steps. +![Editor Home](screenshots/GTFS_Editor___Home.png) -Install java jre +## Generic Ubuntu - sudo apt-get install openjdk-7-jre +If you just want to install the GTFS Editor on a generic Ubuntu machine, you can just execute [this script](cloudfront/install.sh): +``` +#!/bin/bash -xe +sudo apt-get --yes update +sudo apt-get --yes install git unzip openjdk-7-jre +wget http://downloads.typesafe.com/releases/play-1.2.5.zip +unzip play-1.2.5.zip +git clone https://github.com/conveyal/gtfs-editor.git +cd gtfs-editor +cp conf/application.conf.template conf/application.conf +../play-1.2.5/play dependencies +../play-1.2.5/play run +``` -Install play framework 1.2.5 (this software depends on v1.2.x, version 2.x+ is not compatable) +## Ubuntu on Amazon AWS - wget http://downloads.typesafe.com/releases/play-1.2.5.zip +To install the GTFS Editor you have two options described here: +* You can install it [from scratch](docs/Install.md) creating a new VM. -Unzip play framework +* Or you can simplify the process [using Amazon CloudFrount](docs/Install_CloudFront.md). - unzip play-1.2.5.zip +We have created [installation scripts](cloudfront/) to make this process as straightforward as possible. -Download gtfs-editor software +## Next steps - git clone https://github.com/conveyal/gtfs-editor.git +In order to test the instance we've included some information on how to import some popular GTFS feeds: - cd gtfs-editor +* [Importing a GTFS feed](docs/Import.md). - -Configure gtfs-editor application.conf - - cp conf/application.conf.template conf/application.conf - -Install dependencies - - [path to play1.2.5]/play dependencies - - -Run application - - [path to play1.2.5]/play run - - -Request site via web browser - -http://localhost:9000/ - - -Follow setup instructions - -Troubleshooting: - -1) Ensure that you have access to port 9000 and that it is allowed through any firewall or routing configuration. For example, Amazon AWS won’t allow access by unless explicitly granted for port 9000. +You can see the results in [these screenshots](docs/Screenshots.md) diff --git a/cloudfront/GTFS_Editor_CloudFront.json b/cloudfront/GTFS_Editor_CloudFront.json new file mode 100644 index 00000000..92dfca68 --- /dev/null +++ b/cloudfront/GTFS_Editor_CloudFront.json @@ -0,0 +1,155 @@ +{ + "AWSTemplateFormatVersion": "2010-09-09", + "Description": "AWS CloudFormation template to build an instance for the web-based GTFS editing framework.", + "Mappings": { + "AWSInstanceType2Arch": { + "t1.micro": { "Arch": "PV64" }, + "m1.small": { "Arch": "PV64" }, + "m1.medium": { "Arch": "PV64" }, + "m1.large": { "Arch": "PV64" }, + "m1.xlarge": { "Arch": "PV64" }, + "m2.xlarge": { "Arch": "PV64" }, + "m2.2xlarge": { "Arch": "PV64" }, + "m2.4xlarge": { "Arch": "PV64" }, + "c1.medium": { "Arch": "PV64" }, + "c1.xlarge": { "Arch": "PV64" } + }, + "AWSRegionArch2AMI": { + "ap-northeast-1": { "PV64": "ami-b0b3a8b1" }, + "ap-southeast-1": { "PV64": "ami-aec1ebfc" }, + "ap-southeast-2": { "PV64": "ami-f1eb9fcb" }, + "eu-central-1": { "PV64": "ami-b4b587a9" }, + "eu-west-1": { "PV64": "ami-f3810f84" }, + "sa-east-1": { "PV64": "ami-5bf14e46" }, + "us-east-1": { "PV64": "ami-487a3920" }, + "us-west-1": { "PV64": "ami-febba3bb" }, + "us-west-2": { "PV64": "ami-13471c23" } + } + }, + "Outputs": { + "InstanceIPAddress": { + "Description": "IP address of the newly created EC2 instance", + "Value": { "Ref": "IPAddress" } + }, + "InstanceId": { + "Description": "InstanceId of the newly created EC2 instance", + "Value": { "Ref": "EC2Instance" } + } + }, + "Parameters": { + "InstanceType": { + "AllowedValues": [ + "t1.micro", + "m1.small", + "m1.medium", + "m1.large", + "m1.xlarge", + "m2.xlarge", + "m2.2xlarge", + "m2.4xlarge", + "c1.medium", + "c1.xlarge" + ], + "ConstraintDescription": "Must be a valid EC2 instance type.", + "Default": "m2.xlarge", + "Description": "Memory optimized instance type", + "Type": "String" + }, + "IpLocation": { + "AllowedPattern": "(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})/(\\d{1,2})", + "ConstraintDescription": "Must be a valid IP CIDR range of the form x.x.x.x/x.", + "Default": "0.0.0.0/0", + "Description": "The IP address range that can be used to browse and SSH to the EC2 instance.", + "MaxLength": "18", + "MinLength": "9", + "Type": "String" + }, + "KeyName": { + "ConstraintDescription": "Must be the name of an existing EC2 KeyPair.", + "Description": "Name of an existing EC2 KeyPair to enable SSH access to the instance.", + "Type": "AWS::EC2::KeyPair::KeyName" + } + }, + "Resources": { + "EC2Instance": { + "Properties": { + "ImageId": { + "Fn::FindInMap": [ + "AWSRegionArch2AMI", + { "Ref": "AWS::Region" }, + { "Fn::FindInMap": [ "AWSInstanceType2Arch", { "Ref": "InstanceType" }, "Arch" ] } + ] + }, + "InstanceType": { + "Ref": "InstanceType" + }, + "KeyName": { + "Ref": "KeyName" + }, + "SecurityGroups": [ + { + "Ref": "InstanceSecurityGroup" + } + ], + "UserData": { + "Fn::Base64": { + "Fn::Join": [ + "", + [ + "#!/bin/bash -xe\n", + "sudo apt-get --yes update\n", + "sudo apt-get --yes install git unzip openjdk-7-jre\n", + "wget http://downloads.typesafe.com/releases/play-1.2.5.zip\n", + "unzip play-1.2.5.zip\n", + "git clone https://github.com/conveyal/gtfs-editor.git\n", + "cd gtfs-editor\n", + "cp conf/application.conf.template conf/application.conf\n", + "../play-1.2.5/play dependencies\n", + "../play-1.2.5/play run\n" + ] + ] + } + } + }, + "Type": "AWS::EC2::Instance" + }, + "IPAddress": { + "Type": "AWS::EC2::EIP" + }, + "IPAssoc": { + "Properties": { + "EIP": { + "Ref": "IPAddress" + }, + "InstanceId": { + "Ref": "EC2Instance" + } + }, + "Type": "AWS::EC2::EIPAssociation" + }, + "InstanceSecurityGroup": { + "Properties": { + "GroupDescription": "Enable SSH access", + "SecurityGroupIngress": [ + { + "CidrIp": { + "Ref": "IpLocation" + }, + "FromPort": "22", + "IpProtocol": "tcp", + "ToPort": "22" + }, + { + "CidrIp": { + "Ref": "IpLocation" + }, + "FromPort": "9000", + "IpProtocol": "tcp", + "ToPort": "9000" + } + ] + }, + "Type": "AWS::EC2::SecurityGroup" + } + } +} diff --git a/cloudfront/install.sh b/cloudfront/install.sh new file mode 100644 index 00000000..570d5e8b --- /dev/null +++ b/cloudfront/install.sh @@ -0,0 +1,10 @@ +#!/bin/bash -xe +sudo apt-get --yes update +sudo apt-get --yes install git unzip openjdk-7-jre +wget http://downloads.typesafe.com/releases/play-1.2.5.zip +unzip play-1.2.5.zip +git clone https://github.com/conveyal/gtfs-editor.git +cd gtfs-editor +cp conf/application.conf.template conf/application.conf +../play-1.2.5/play dependencies +../play-1.2.5/play run diff --git a/docs/Import.md b/docs/Import.md new file mode 100644 index 00000000..97e4cd61 --- /dev/null +++ b/docs/Import.md @@ -0,0 +1,15 @@ +# Importing sample data + +Once you have an instance properly set up, you can install some test data from different places. Two of these places are: + +* Google Developers website: https://developers.google.com/transit/gtfs/examples/gtfs-feed + +* Google Code Repository: https://code.google.com/p/googletransitdatafeed/wiki/PublicFeeds + +In the imports folder you can see a sample feed (`sample_feed.zip`), data for the city of DC (`google_transit_dc.zip`), and data for the city of San Francisco (`google_transit_sf.zip`). + +For each city, you can also see the corresponding log entry when the data was imported in the server: `sample_feed.txt`, `google_transit_dc.txt`, and `google_transit_sf.txt`. + +## Blank screen after import + +After uploading and processing the `.zip` file, the server always ends with a blank screen. Although the logs above show that the data has been correctly imported (see also the [screenshots](Screenshots.md) of the data), we've submitted an issue to make sure this is the intended behavior: https://github.com/conveyal/gtfs-editor/issues/222 diff --git a/docs/Install.md b/docs/Install.md new file mode 100644 index 00000000..a9798589 --- /dev/null +++ b/docs/Install.md @@ -0,0 +1,124 @@ +# Installing the GTFS Editor on AWS from Scratch + +This document describes how to install the [GTFS Editor](https://github.com/conveyal/gtfs-editor) on AWS. + +You can also follow the [CloudFront installation instructions](Install_CloudFront.md) for a more straightforward process that only requires a browser. + +Please note that this process assumes that you have signed up for AWS and that the [AWS CLI](http://aws.amazon.com/cli/) is already installed on your system. To verify that you have it installed, simply run: + +``` +$ aws --version +``` + +You should see something like: + +``` +aws-cli/1.7.29 Python/2.7.9 Darwin/14.3.0 +``` + +Otherwise, you can install it and configure it with: + +``` +$ pip install awscli +$ aws configure +``` + +## Step by step installation + +### Create the VM + +The VM creation process is pretty standard, with only a few considerations: + +* GTFS Editor assumes Ubuntu Server 12.04 LTS. +* We choose a memory optimized instance (`m2.xlarge` by default) to help importing feeds. +* We need to open the 9000 port for web requests + +This is the step by step process: + +* Create a new `gtfs-sg` security group: + +``` +aws ec2 create-security-group --group-name gtfs-sg --description "Security group for the GTFS editing framework" +aws ec2 authorize-security-group-ingress --group-name gtfs-sg --protocol tcp --port 22 --cidr 0.0.0.0/0 +aws ec2 authorize-security-group-ingress --group-name gtfs-sg --protocol tcp --port 9000 --cidr 0.0.0.0/0 +``` + +* Create the `gtfs-key` key pair (and remove it from version control): + +``` +aws ec2 create-key-pair --key-name gtfs-key --query 'KeyMaterial' --output text > gtfs-key.pem +chmod 400 gtfs-key.pem +echo "gtfs-key.pem" >> .gitignore +``` + +* Launch the instance (this assumes an install on `us-east-1`, US East, N. Virginia): + +``` +aws ec2 run-instances --image-id ami-487a3920 --count 1 --instance-type m2.xlarge --key-name gtfs-key --security-groups gtfs-sg --query 'Instances[0].InstanceId' +``` + +Write down the `InstanceId` and use it to get the public IP address of the instance: + +``` +aws ec2 describe-instances --instance-ids [your-id-here] --query 'Reservations[0].Instances[0].PublicIpAddress' +``` + +Finally, you now can connect via ssh with your brand new VM: + +``` +ssh -i gtfs-key.pem ubuntu@[your-ip-here] +``` + +### Set up the VM + +Now that the VM is up and running, we need to set up the software. + +Install some system dependencies (Git, Unzip, and Java): + +``` +sudo apt-get update +sudo apt-get install git unzip openjdk-7-jre +``` + +Download and unpack the Play Framework (note that the GTFS Editor requires the 1.2.x version): + +``` +wget http://downloads.typesafe.com/releases/play-1.2.5.zip +unzip play-1.2.5.zip +``` + +Download the GTFS Editor from GitHub: + +``` +git clone https://github.com/conveyal/gtfs-editor.git +cd gtfs-editor +``` + +Create the default configuration file: + +``` +cp conf/application.conf.template conf/application.conf +``` + +Finally, download the dependencies and run the app: + +``` +../play-1.2.5/play dependencies +../play-1.2.5/play run +``` + +After a few seconds, you can point your browser to `http://[your-ip-here]:9000` to continue with the web installation. + +### Create the admin user and default agency + +You need to enter information in two different screens. + +1. In the first screen you create an username, password, and enter your email address. + +2. In the second screen you create the default agency. These are some valid sample values: + +* Agency: `GTSFDemo` +* Agency name: `Demo Transit Authority` +* Agency URL: `http://[your-ip-here]:9000` +* Agency timezone: `America/New_York` +* Agency language: `English` diff --git a/docs/Install_CloudFront.md b/docs/Install_CloudFront.md new file mode 100644 index 00000000..0f9c4c04 --- /dev/null +++ b/docs/Install_CloudFront.md @@ -0,0 +1,35 @@ +# Installing the GTFS Editor on AWS with CloudFront + +Creating a GTFS Editor with Amazon CloudFront is much easier, as it can all be done via web, in only a few steps. + +You can also follow the [creation from scratch instructions](Install.md) if you require higher control of your instance. + +This is the step by step process: + +1. Visit http://aws.amazon.com and sig in to your Console. + +2. Click on CloudFormation ("Templated AWS Resource Creation") and then on "Create New Stack". + +3. Give a name to the stack (for example, `GTFSEditor`) and upload [this template file](../cloudfront/GTFS_Editor_CloudFront.json) to Amazon S3. + +4. You can leave the default values for `InstanceType` (the type of EC2 instance) and `IpLocation` (the IP address range that can access this instance), but make sure you select a `KeyName` (existing EC2 KeyPair) to enable access to the instance. + +5. Click Next and then Create. Your new GTFS Editor instance is now being created. + +You can see the creation process in the `Events` tab. Once this process is finished, you can switch to the `Outputs` tab where you can find the public IP of this instance. + +Finally, point your browser to `http://[your-ip-here]:9000` to configure the GTFS Editor (it might a take a couple of minutes for the instance to download the GTFS Editor code and its dependencies). + +## Create the admin user and default agency + +You need to enter information in two different screens. + +1. In the first screen you create an username, password, and enter your email address. + +2. In the second screen you create the default agency. These are some valid sample values: + +* Agency: `GTSFDemo` +* Agency name: `Demo Transit Authority` +* Agency URL: `http://[your-ip-here]:9000` +* Agency timezone: `America/New_York` +* Agency language: `English` diff --git a/docs/Screenshots.md b/docs/Screenshots.md new file mode 100644 index 00000000..5d63da61 --- /dev/null +++ b/docs/Screenshots.md @@ -0,0 +1,17 @@ +# GTFS Editor Screenshots + +## Editor Home + +![Editor Home](../screenshots/GTFS_Editor___Home.png) + +## Editor Search + +![Editor Search](../screenshots/GTFS_Editor___Search.png) + +## Edit Route + +![Edit Route](../screenshots/Transit_Database___Edit_Route.png) + +## Manage Agencies + +![Manage Agencies](../screenshots/Transit_Database___Manage_Agencies.png) diff --git a/imports/google_transit_dc.txt b/imports/google_transit_dc.txt new file mode 100644 index 00000000..6b46f250 --- /dev/null +++ b/imports/google_transit_dc.txt @@ -0,0 +1,1482 @@ +19:22:31.753 INFO (Entity.java:228) Table feed_info was missing but it is not required. +19:22:31.753 INFO (GTFSFeed.java:90) Feed ID is undefined. +19:22:31.753 INFO (GTFSFeed.java:92) Feed ID is 'null'. +19:22:31.753 INFO (Entity.java:232) Loading GTFS table agency from agency.txt +19:22:31.754 INFO (Entity.java:228) Table calendar was missing but it is not required. +19:22:31.754 INFO (Entity.java:232) Loading GTFS table calendar_dates from calendar_dates.txt +19:22:31.814 INFO (Entity.java:228) Table fare_attributes was missing but it is not required. +19:22:31.814 INFO (Entity.java:228) Table fare_rules was missing but it is not required. +19:22:31.814 INFO (Entity.java:232) Loading GTFS table routes from routes.txt +19:22:31.825 INFO (Entity.java:232) Loading GTFS table shapes from shapes.txt +19:22:33,202 ERROR ~ DB transaction left unclosed, this signifies a memory leak! +19:22:33,204 ERROR ~ DB transaction left unclosed, this signifies a memory leak! +19:22:33,204 ERROR ~ DB transaction left unclosed, this signifies a memory leak! +19:22:35.420 INFO (Entity.java:240) Record number 500.0k +19:22:37.788 INFO (Entity.java:232) Loading GTFS table stops from stops.txt +19:22:37.861 INFO (Entity.java:228) Table transfers was missing but it is not required. +19:22:37.861 INFO (Entity.java:232) Loading GTFS table trips from trips.txt +19:22:37.987 INFO (Entity.java:228) Table frequencies was missing but it is not required. +19:22:37.988 INFO (Entity.java:232) Loading GTFS table stop_times from stop_times.txt +19:22:43.060 INFO (Entity.java:240) Record number 500.0k +19:22:45.374 INFO (Entity.java:240) Record number 1.0M +19:22:47.922 INFO (Entity.java:240) Record number 1.5M +19:22:50.381 INFO (GTFSFeed.java:105) 0 errors +19:22:50,382 INFO ~ GtfsImporter: importing agencies... +19:22:50,512 INFO ~ Agencies loaded: 2 +19:22:50,513 INFO ~ GtfsImporter: importing stops... +19:23:06,942 INFO ~ Stops loaded: 0 +19:23:06,942 INFO ~ GtfsImporter: importing routes... +19:23:06,980 INFO ~ Routes loaded:296 +19:23:06,980 INFO ~ GtfsImporter: importing Shapes... +19:23:12,602 INFO ~ Shape points loaded: 686159 +19:23:12,603 INFO ~ Shapes loaded: 2232 +19:23:12,603 INFO ~ GtfsImporter: importing Service Calendars... +19:23:12,618 INFO ~ Service calendars loaded: 13 +19:23:12,618 INFO ~ GtfsImporter: importing trips... +19:23:13.063 INFO (GTFSFeed.java:189) Total patterns: 1032 +19:23:14,557 INFO ~ Fixed 50 / 65 stops after first round for trip pattern a0e90466-00a0-4e48-8ec1-4276483664b5 (GREENCASTLE PARK & RIDE) on route c6d0a86c-47d0-4320-b863-fe033b532537 +19:23:14,805 INFO ~ Fixed 52 / 60 stops after first round for trip pattern 0319db2b-65c6-47e5-bf6c-583782db426d (PENTAGON) on route b1ff195b-ce70-4332-b70a-4c4f924ad206 +19:23:14,987 INFO ~ Fixed 38 / 48 stops after first round for trip pattern 8239738a-8850-4b6a-84cc-2d80a67b76ab (RHODE ISLAND AVE STATION) on route 56db33d3-4290-4545-b21b-1bdf3f2f7937 +19:23:15,216 INFO ~ Fixed 26 / 29 stops after first round for trip pattern fcf71933-c4e8-4bb7-8fae-27a8154baf1e (GREENBELT STATION) on route 008d6276-253b-4ebd-8848-d66d96aff1bb +19:23:15,239 INFO ~ Fixed 21 / 21 stops after first round for trip pattern bd24a6ff-c37c-4f95-ad28-5ceb5ca6100a (GREENBELT) on route a12e9283-0c0c-4834-aa9f-d0eac26bb519 +19:23:15,741 INFO ~ Fixed 36 / 47 stops after first round for trip pattern 0040658e-a806-4d26-9a21-f606332c304b (ANACOSTIA STATION) on route f1debeb8-b19a-476d-bac2-b9cda8b2511b +19:23:15,752 WARN ~ Shape dist traveled past end of shape, was 25750.734870676082, expected max 25750.73485728366, clamping +19:23:15,997 INFO ~ Fixed 43 / 60 stops after first round for trip pattern 5e132f6c-eb70-4693-8d1d-7baca8dc9505 (TAKOMA STATION) on route 64c68e09-196c-4802-a5aa-96fed484b3fe +19:23:16,165 INFO ~ Fixed 36 / 48 stops after first round for trip pattern 288805ef-c6e8-423c-818e-894766439022 (FRANKLIN SQUARE) on route 086b1b16-ba61-442d-a3f0-ea7e870a00ce +19:23:16,294 INFO ~ Fixed 25 / 33 stops after first round for trip pattern 2f3eceed-cc18-4814-aaff-845095b8e646 (MCPHERSON SQUARE) on route f85fc952-8ec2-44c0-aa40-a0a49a954224 +19:23:16,310 INFO ~ Fixed 2 / 3 stops after first round for trip pattern f01ae942-60ec-4e65-88e2-e628bbda17f9 (QUAKER LANE) on route e73c9094-c273-42ab-a323-c95c180f3225 +19:23:16,310 WARN ~ Shape dist traveled past end of shape, was 5900.336252972752, expected max 5900.336252972752, clamping +19:23:16,396 INFO ~ Fixed 36 / 44 stops after first round for trip pattern bf396d30-a618-4e4b-8a56-326d08d173d4 (TAKOMA STATION) on route 495bc5f6-d4fe-4763-9dab-f2fb19b94f96 +19:23:16,440 INFO ~ Fixed 16 / 22 stops after first round for trip pattern bdf25941-cb3c-44d4-98f5-9409860b9971 (TYSONS CORNER) on route f55bc4d6-9baa-4164-bf24-80613ed9f80e +19:23:16,441 WARN ~ Shape dist traveled past end of shape, was 18400.65054499697, expected max 18400.65054499697, clamping +19:23:16,442 WARN ~ Shape dist traveled past end of shape, was 18400.65054499697, expected max 18400.65054499697, clamping +19:23:16,481 INFO ~ Fixed 14 / 24 stops after first round for trip pattern d5055b10-b646-4344-a050-794cca2f85aa (FORT LINCOLN) on route 777bdadf-f8c6-4335-86fc-fa1953d1afd1 +19:23:16,482 WARN ~ Shape dist traveled past end of shape, was 5919.1350857985435, expected max 5919.1350857985435, clamping +19:23:16,660 INFO ~ Fixed 59 / 64 stops after first round for trip pattern 8583edf2-3565-4332-a2b0-52ca389ba16a (TYSONS CORNER STATION) on route 29d0d9cd-8b58-47e5-af03-4a42f14048a6 +19:23:16,853 INFO ~ Fixed 45 / 60 stops after first round for trip pattern aeeb48d8-a794-46a5-80d9-66b5bb8c00f0 (GREENBELT STATION) on route a97908e6-8312-4006-9fb4-2f979ee12dbf +19:23:16,891 INFO ~ Fixed 17 / 19 stops after first round for trip pattern 7ae85eb1-d316-4f8a-bfbe-a0760e718cc4 (STANTON RD) on route ed0a7b2e-0a1e-41ce-810a-eb7584f52ac8 +19:23:16,964 INFO ~ Loaded 1000 / 49539 trips +19:23:17,297 INFO ~ Fixed 60 / 76 stops after first round for trip pattern bb651bb1-82fd-418f-a5f3-b0080d4cdb2c (CALVERTON) on route e4394d64-dd3c-479a-b34e-4c4ee8abb7cc +19:23:17,303 WARN ~ Shape dist traveled past end of shape, was 28955.855888317234, expected max 28955.855888317234, clamping +19:23:17,451 INFO ~ Fixed 32 / 40 stops after first round for trip pattern a40807a5-15ca-4b5b-aa43-6cd7cf61731b (POTOMAC PARK) on route aae049d7-e693-4765-9063-26a549165df9 +19:23:18,405 INFO ~ Fixed 104 / 137 stops after first round for trip pattern 1c9c515c-9c4f-4fae-8728-408b2b683dee (BOWIE STATE UNIVERSITY) on route 60f41c92-901d-42cf-89b3-c45c68fe485b +19:23:18,474 INFO ~ Fixed 13 / 13 stops after first round for trip pattern 0e387ffc-6d38-4f63-a41e-04859f0f3aa9 (GLENMONT) on route 675d11b4-e400-4c17-9a72-b1b3ace62d85 +19:23:18,644 INFO ~ Fixed 59 / 71 stops after first round for trip pattern be8ff3e0-affa-4ff8-8748-3dd548da96cc (SILVER SPRING STATION) on route 2a6ae91c-d592-450c-b420-c080d4c48ece +19:23:18,871 INFO ~ Fixed 43 / 46 stops after first round for trip pattern 24180711-a0cc-4bcb-b4ea-4a63324b4e80 (FORT DRUM) on route ad8ce697-0f83-4043-aa4f-4e10ec55857f +19:23:18,957 INFO ~ Fixed 33 / 36 stops after first round for trip pattern f992acf5-0fc0-4f34-af0d-b716d104dfa5 (NAVY YARD - BALLPARK STATION) on route bb8a0a52-fbee-43e4-9e81-2cf94df3f324 +19:23:19,072 INFO ~ Fixed 37 / 41 stops after first round for trip pattern 7dffdaeb-90b8-47de-bc03-b76b17a4ac83 (NAYLOR RD STATION) on route 0913edda-4110-44a0-a9a5-d4485ea64f88 +19:23:19,102 INFO ~ Fixed 17 / 21 stops after first round for trip pattern ec0a9c2a-da7f-4ae9-8b72-f8af437fcb2c (TENLEYTOWN STATION) on route 9b478bcf-d7ac-4d9a-9c4d-02bff9b56aca +19:23:19,118 WARN ~ Unable to tell if shape is backwards for trip pattern df880111-62ef-4c9f-a45a-702fd1fb322d (ANACOSTIA STATION) on route 58734787-ac66-4da4-bc4b-ee3f043aebbb, assuming it is correct +19:23:19,119 INFO ~ Fixed 2 / 2 stops after first round for trip pattern df880111-62ef-4c9f-a45a-702fd1fb322d (ANACOSTIA STATION) on route 58734787-ac66-4da4-bc4b-ee3f043aebbb +19:23:19,186 INFO ~ Fixed 34 / 41 stops after first round for trip pattern 4c116577-8642-4659-bbac-e2582006bde7 (ANACOSTIA STATION) on route 2a768143-d6a0-4e63-9c7f-e0ef651fa5fc +19:23:19,385 INFO ~ Fixed 28 / 42 stops after first round for trip pattern 5b60f7db-c513-4598-905b-bea51e67a399 (EAST KETTERING) on route ff2c741b-372b-4805-ba9d-5c3f0471c36a +19:23:19,387 WARN ~ Shape dist traveled past end of shape, was 14765.593284426734, expected max 14765.593284426734, clamping +19:23:19,388 WARN ~ Shape dist traveled past end of shape, was 14765.593284426734, expected max 14765.593284426734, clamping +19:23:19,388 WARN ~ Shape dist traveled past end of shape, was 14765.593284426734, expected max 14765.593284426734, clamping +19:23:19,388 WARN ~ Shape dist traveled past end of shape, was 14765.593284426734, expected max 14765.593284426734, clamping +19:23:19,454 INFO ~ Fixed 29 / 32 stops after first round for trip pattern e7a43c85-9f49-4a9b-880d-78a54598cd2d (MINNESOTA AVE STATION) on route 6f30b764-60b4-48e1-9ead-8e3a8a246b78 +19:23:19,763 INFO ~ Fixed 45 / 58 stops after first round for trip pattern 4eef5f82-b2b3-47df-949c-537de886d62a (CONGRESS HEIGHTS STATION) on route e7f294ca-3a9a-4ca5-bc26-264c7904b7ee +19:23:20,159 INFO ~ Fixed 52 / 63 stops after first round for trip pattern 99122430-c917-409a-8ce1-9556421bd701 (NEW CARROLLTON STATION) on route ef580214-561e-4e5e-96ae-9fc8dc37cd6e +19:23:20,241 INFO ~ Fixed 35 / 40 stops after first round for trip pattern 23757041-e76f-46a2-b4a7-a48cdbf1fc06 (ANACOSTIA STATION) on route 2a768143-d6a0-4e63-9c7f-e0ef651fa5fc +19:23:20,290 INFO ~ Fixed 19 / 22 stops after first round for trip pattern 312598ea-e4e6-4a67-b02e-c3bb235801c5 (CONVENTION CENTER) on route 79d84329-0fae-4821-a978-5ddc0bda267e +19:23:20,333 INFO ~ Loaded 2000 / 49539 trips +19:23:20,413 INFO ~ Fixed 11 / 25 stops after first round for trip pattern b8f13495-89fd-47af-b47e-20b613bc6544 (LANDMARK) on route 69a5b631-8444-44f9-8e14-4bb954e52aed +19:23:20,508 INFO ~ Fixed 36 / 42 stops after first round for trip pattern 636d4ff3-36ab-4ec1-b139-8c809f90d453 (BROOKLAND STATION) on route 4599756f-bb6a-4622-a4af-0874c52c611d +19:23:20,594 INFO ~ Fixed 27 / 27 stops after first round for trip pattern 6eee03c4-cfc1-4a09-adc9-dd667c551d78 (SHADY GROVE) on route 675d11b4-e400-4c17-9a72-b1b3ace62d85 +19:23:21,042 INFO ~ Fixed 61 / 70 stops after first round for trip pattern eb6d011d-114c-485b-b0cc-cd165eae1d98 (TWINBROOK STATION) on route 454054fe-da87-4295-b6ff-4033e23b8afa +19:23:21,270 INFO ~ Fixed 10 / 12 stops after first round for trip pattern efc8f739-3faf-4896-bd0b-97565bb6fdc7 (FORT TOTTEN) on route 703d5e5e-9a16-41af-941c-59be7bc68564 +19:23:21,385 INFO ~ Fixed 46 / 51 stops after first round for trip pattern 80179879-c2b1-491d-a451-907bb935298a (ARCHIVES) on route c96fd764-de91-4074-8478-c74959370f22 +19:23:21,507 INFO ~ Fixed 46 / 55 stops after first round for trip pattern aa1b9a82-e033-493f-840a-10948da1ee3d (REEVES CENTER - 14TH & U NW) on route e7f294ca-3a9a-4ca5-bc26-264c7904b7ee +19:23:21,508 WARN ~ Shape dist traveled past end of shape, was 13373.560669730285, expected max 13373.560669730285, clamping +19:23:21,572 INFO ~ Loaded 3000 / 49539 trips +19:23:21,761 INFO ~ Fixed 29 / 33 stops after first round for trip pattern 4046fdb9-9f29-4af4-9ab3-58255329e725 (SUITLAND STATION) on route 9ae6bf06-cdd6-4556-a3c0-defc7421df55 +19:23:21,843 INFO ~ Fixed 42 / 46 stops after first round for trip pattern 9de16ad2-d98d-4204-941c-8ba54fb77eb8 (ROSSLYN) on route a35431aa-0ea9-42c6-975a-eedfc757a7c5 +19:23:21,884 INFO ~ Fixed 19 / 26 stops after first round for trip pattern 7264d5a1-4da6-474a-8de2-94c296f38516 (RHODE ISLAND AVE STATION) on route dabee5cc-3a9a-4760-ac59-37b0f52d6756 +19:23:21,961 INFO ~ Fixed 31 / 36 stops after first round for trip pattern 4a537c5c-f4df-4c11-8fff-a5980ca02a66 (BALLSTON STATION) on route 63a212ee-0a3c-4502-b190-2b4248de5422 +19:23:21,962 WARN ~ Shape dist traveled past end of shape, was 15067.86713736831, expected max 15067.86713736831, clamping +19:23:22,042 INFO ~ Fixed 16 / 17 stops after first round for trip pattern 9fab89c1-a0e1-46b2-a0d2-c8a1415b8eca (SOUTHERN TOWERS) on route 0c93e3e1-364d-49b4-8a90-a429b50f590c +19:23:22,124 INFO ~ Fixed 34 / 40 stops after first round for trip pattern 8f1ebc4a-54e7-40ab-b03b-ab21f3b3e5df (CULMORE) on route 1fe187b4-98d6-4f56-8179-bd5da929aeb9 +19:23:22,147 INFO ~ Fixed 18 / 20 stops after first round for trip pattern 05c696f1-ee59-458b-a2b7-8031063ece06 (FORT LINCOLN) on route 777bdadf-f8c6-4335-86fc-fa1953d1afd1 +19:23:22,203 INFO ~ Fixed 24 / 25 stops after first round for trip pattern 1ad7c768-0250-492b-80fb-cf082badbcef (LAKECREST DRIVE) on route d4834b02-dbe9-4b55-9e7c-8ff78362f23c +19:23:22,360 INFO ~ Fixed 43 / 51 stops after first round for trip pattern 3958eb48-8439-416c-8a7a-7941ebeab290 (LAUREL) on route 1f05e5a6-9758-4d53-af38-3902b65ff3f8 +19:23:22,452 INFO ~ Fixed 43 / 47 stops after first round for trip pattern 5993d5b6-672e-4de8-9ae9-bd5a34c8805b (SHADY GROVE STATION) on route c0a7b3d8-f408-49a9-9dca-0b2b9f497db5 +19:23:22,619 INFO ~ Fixed 47 / 61 stops after first round for trip pattern 3851f9b0-66b4-440e-8e3b-adb272ba4d69 (GEORGIA AVE-ICC PARK & RIDE) on route 28a882a6-86ff-42c8-962c-74bae51a5f7a +19:23:22,746 INFO ~ Fixed 45 / 49 stops after first round for trip pattern ed202345-4e74-40b0-8eec-5460b7d70d13 (POTOMAC PARK) on route e111dc16-2c0c-41a3-8011-b9a1883364e6 +19:23:22,837 INFO ~ Fixed 33 / 40 stops after first round for trip pattern 6d1d144e-68db-44e8-b078-c340211d5647 (CULMORE) on route 1fe187b4-98d6-4f56-8179-bd5da929aeb9 +19:23:22,838 WARN ~ Shape dist traveled past end of shape, was 12792.713746228801, expected max 12792.713746228801, clamping +19:23:22,838 WARN ~ Shape dist traveled past end of shape, was 12792.713746228801, expected max 12792.713746228801, clamping +19:23:22,839 WARN ~ Shape dist traveled past end of shape, was 12792.713746228801, expected max 12792.713746228801, clamping +19:23:22,990 INFO ~ Fixed 49 / 60 stops after first round for trip pattern 33846399-4e96-4b4e-a25f-d9ae6dc1094a (SILVER SPRING STATION) on route 28a882a6-86ff-42c8-962c-74bae51a5f7a +19:23:23,436 INFO ~ Fixed 72 / 83 stops after first round for trip pattern f43fd0c1-061d-416e-8034-4df9cb5d4e3a (SILVER SPRING STATION) on route fb407bda-3288-4ad8-875e-4163cc1a8c0b +19:23:23,436 WARN ~ Two stops on trip pattern f43fd0c1-061d-416e-8034-4df9cb5d4e3a map to same point on shape +19:23:23,462 INFO ~ Fixed 15 / 16 stops after first round for trip pattern 27d3ec5c-81e5-46c1-a84d-13e7407ead27 (FORT TOTTEN STATION) on route 3941dc9d-c968-4301-9df4-e7224fc84109 +19:23:23,552 INFO ~ Fixed 43 / 49 stops after first round for trip pattern 47f8c95c-26b0-42ab-86e3-06af79ecbcdb (DUNN LORING STATION) on route 76167b87-87a3-4477-abeb-9dede58ed104 +19:23:23,960 INFO ~ Fixed 74 / 82 stops after first round for trip pattern 8b86a891-ca1b-4f72-9036-a4330fbbd149 (SILVER SPRING STATION) on route fb407bda-3288-4ad8-875e-4163cc1a8c0b +19:23:23,960 WARN ~ Two stops on trip pattern 8b86a891-ca1b-4f72-9036-a4330fbbd149 map to same point on shape +19:23:23,991 INFO ~ Fixed 9 / 13 stops after first round for trip pattern 6223e8bf-5f9e-4c44-b71a-6eeef525e9c6 (MCPHERSON SQUARE) on route f85fc952-8ec2-44c0-aa40-a0a49a954224 +19:23:24,081 INFO ~ Fixed 40 / 51 stops after first round for trip pattern ebbc8555-7655-401b-834c-18e050fee8e4 (HUNTING POINT) on route df81eb66-647b-4d15-ac69-9cb5be28dc04 +19:23:24,185 INFO ~ Fixed 22 / 23 stops after first round for trip pattern 82d9f248-eea3-4338-a1e0-55e258f0e540 (PENTAGON) on route a2ac05f2-fefd-45c1-8816-d668f6a4df9a +19:23:24,324 INFO ~ Fixed 48 / 59 stops after first round for trip pattern cf7df4fb-a848-4fb7-b193-e10047b6db54 (L'ENFANT PLAZA STATION) on route 64c68e09-196c-4802-a5aa-96fed484b3fe +19:23:24,582 INFO ~ Fixed 62 / 74 stops after first round for trip pattern 250acf5d-3c75-4d7c-b8ba-3dd310531bf2 (TENLEYTOWN STATION) on route a92ae21c-9adf-4fa1-b4ca-141eb353aca7 +19:23:24,774 INFO ~ Fixed 32 / 35 stops after first round for trip pattern eecd5765-dfc8-474e-a0e0-49eb5725d96e (N V C C - ALEXANDRIA) on route a5b513fd-d5de-41fa-90c1-a27e84948367 +19:23:24,789 INFO ~ Fixed 13 / 13 stops after first round for trip pattern bbd7d375-1008-4fa5-893a-a5e022047ed1 (POTOMAC AVE/SKYLAND) on route b9eacd9b-e7a3-479e-97ee-53ec36b85c6f +19:23:24,823 INFO ~ Loaded 4000 / 49539 trips +19:23:24,846 INFO ~ Fixed 4 / 6 stops after first round for trip pattern 008d5f17-1119-4206-b752-9b9628e3b23f (S91 - FRANCONIA - SPRINGFIELD TOWN CENTER SHUTTLE) on route 6fdf840e-379e-41ff-878d-944555204cb1 +19:23:24,846 WARN ~ Shape dist traveled past end of shape, was 3197.8222068136874, expected max 3197.8222068136874, clamping +19:23:24,910 INFO ~ Fixed 29 / 36 stops after first round for trip pattern 9827024a-6e32-4492-b3e2-a54175330522 (FRIENDSHIP HEIGHTS STATION) on route a3ac06f6-c66a-480c-b35f-1ee7a04e84f2 +19:23:24,911 WARN ~ Shape dist traveled past end of shape, was 11017.262662310053, expected max 11017.262662310053, clamping +19:23:25,005 INFO ~ Fixed 32 / 40 stops after first round for trip pattern 5b352e56-b33a-420d-8b4f-657a78c98ea2 (MT PLEASANT) on route 1263c8ee-2585-4e34-a00b-d13d48835036 +19:23:25,046 INFO ~ Fixed 13 / 13 stops after first round for trip pattern da78438c-0921-4e0f-a24c-c8f17012b5ea (METRO CENTER) on route 675d11b4-e400-4c17-9a72-b1b3ace62d85 +19:23:25,131 INFO ~ Fixed 26 / 40 stops after first round for trip pattern b0784c97-6af3-4b99-b762-8ee7553f2a09 (BRANCH AVE STATION) on route 21c9e6b5-0d2b-4611-a2f7-15fbc345cda7 +19:23:25,136 WARN ~ Shape dist traveled past end of shape, was 13773.275099342754, expected max 13773.275099342754, clamping +19:23:25,389 INFO ~ Fixed 64 / 81 stops after first round for trip pattern 0aae9cb2-3047-4a17-a010-ba881943a20e (SIBLEY HOSPITAL) on route 7aa38cc7-98c4-4b5d-a39b-4f947c09c1c6 +19:23:25,392 WARN ~ Shape dist traveled past end of shape, was 18915.488614088405, expected max 18915.488614088405, clamping +19:23:25,392 WARN ~ Shape dist traveled past end of shape, was 18915.488614088405, expected max 18915.488614088405, clamping +19:23:25,392 WARN ~ Shape dist traveled past end of shape, was 18915.488614088405, expected max 18915.488614088405, clamping +19:23:25,392 WARN ~ Shape dist traveled past end of shape, was 18915.488614088405, expected max 18915.488614088405, clamping +19:23:25,539 INFO ~ Fixed 6 / 8 stops after first round for trip pattern e8bd7830-dcc5-4c27-b00e-1ecb1b151abd (SUITLAND STATION) on route 2625d9e9-2422-4671-a9cc-f0fc525798dd +19:23:25,539 WARN ~ Shape dist traveled past end of shape, was 2452.4201577725644, expected max 2452.4201577725644, clamping +19:23:25,705 INFO ~ Fixed 18 / 43 stops after first round for trip pattern ae824063-86ed-425b-a1ff-c4552ce40aaf (BROOKLAND STATION) on route 777bdadf-f8c6-4335-86fc-fa1953d1afd1 +19:23:25,758 INFO ~ Fixed 27 / 27 stops after first round for trip pattern 32c006c6-12a0-41fe-81bf-ab69f5b2f551 (GLENMONT) on route 675d11b4-e400-4c17-9a72-b1b3ace62d85 +19:23:26,305 INFO ~ Fixed 72 / 82 stops after first round for trip pattern b1930d08-57e4-4488-9392-4bd8d80af99e (NEW CARROLLTON STATION) on route ee2a0d70-a69f-4771-b342-1467384b77af +19:23:26,413 INFO ~ Fixed 36 / 40 stops after first round for trip pattern c02021b4-89a2-4368-8a05-e8f6b6d1bfdc (NORTH SPRINGFIELD) on route 56bdb1c4-1ccd-4ef4-840e-c93453c6ad86 +19:23:26,481 INFO ~ Fixed 10 / 26 stops after first round for trip pattern a22393d7-36a2-47f7-ab9e-40de59fd96f4 (NAYLOR RD STATION) on route 299deeb5-5b28-4394-80d1-6f386ce38cd8 +19:23:26,789 INFO ~ Fixed 36 / 49 stops after first round for trip pattern f8729498-726c-48fb-9b7f-a49cda9b7d9b (PENTAGON) on route 486ff1f6-e28e-40f1-ae5d-2cbe7bd020dd +19:23:26,818 INFO ~ Fixed 13 / 17 stops after first round for trip pattern 2be791b2-b061-4d3e-bc6e-f3e3da402e10 (UNION STATION) on route a2153d4c-a8f5-4973-a3fa-259d0e7c9bbe +19:23:26,829 INFO ~ Loaded 5000 / 49539 trips +19:23:26,906 INFO ~ Fixed 25 / 37 stops after first round for trip pattern 85830109-26cc-49d7-ba23-ea41d65f5939 (ANACOSTIA STATION) on route 74cdc692-18e0-434d-aaf6-8313c3424e07 +19:23:26,906 WARN ~ Two stops on trip pattern 85830109-26cc-49d7-ba23-ea41d65f5939 map to same point on shape +19:23:26,906 WARN ~ Two stops on trip pattern 85830109-26cc-49d7-ba23-ea41d65f5939 map to same point on shape +19:23:26,906 WARN ~ Two stops on trip pattern 85830109-26cc-49d7-ba23-ea41d65f5939 map to same point on shape +19:23:26,906 WARN ~ Two stops on trip pattern 85830109-26cc-49d7-ba23-ea41d65f5939 map to same point on shape +19:23:26,906 WARN ~ Two stops on trip pattern 85830109-26cc-49d7-ba23-ea41d65f5939 map to same point on shape +19:23:26,906 WARN ~ Two stops on trip pattern 85830109-26cc-49d7-ba23-ea41d65f5939 map to same point on shape +19:23:26,906 WARN ~ Two stops on trip pattern 85830109-26cc-49d7-ba23-ea41d65f5939 map to same point on shape +19:23:26,906 WARN ~ Two stops on trip pattern 85830109-26cc-49d7-ba23-ea41d65f5939 map to same point on shape +19:23:27,011 INFO ~ Fixed 43 / 49 stops after first round for trip pattern 20e2382d-de56-4bbb-b7d7-4d19d7eba0c0 (FRIENDLY) on route 112478fe-86cf-4dff-a9b4-035975aa883c +19:23:27,238 INFO ~ Fixed 58 / 67 stops after first round for trip pattern 9ba9f818-9ccd-42ac-9240-d6bb76ba327a (BALLSTON) on route fa179c2a-b025-41ae-94e8-b3dc257a17e7 +19:23:27,307 INFO ~ Fixed 26 / 37 stops after first round for trip pattern 6a40426c-0fee-4c7f-8669-ec8480d5da7a (FORT TOTTEN) on route 50c1edad-36dd-4c6c-9609-f75cbc24e66e +19:23:27,498 INFO ~ Fixed 46 / 62 stops after first round for trip pattern a5b66f85-aa96-40af-af8b-b8ad33c0a0f6 (TAKOMA STATION) on route c9fc83e7-760f-4a2a-b282-5b459887a9c5 +19:23:27,650 WARN ~ Stop is more than 1km from its shape, using straight-line distances +19:23:27,663 INFO ~ Fixed 21 / 21 stops after first round for trip pattern b1d9669c-c2fa-4261-b263-acb89847c58b (BRANCH AVE) on route a12e9283-0c0c-4834-aa9f-d0eac26bb519 +19:23:27,944 INFO ~ Fixed 31 / 42 stops after first round for trip pattern 952af6d1-7d07-4c09-b5e3-5bee98c6e3fc (14TH & COLORADO) on route c9fc83e7-760f-4a2a-b282-5b459887a9c5 +19:23:28,099 INFO ~ Fixed 26 / 31 stops after first round for trip pattern 68b228d1-4d12-41d0-b816-db32546acf36 (FORT TOTTEN) on route ee2a0d70-a69f-4771-b342-1467384b77af +19:23:28,201 INFO ~ Fixed 47 / 53 stops after first round for trip pattern 11b57e76-591f-4025-bc6c-06f8f1ff8cd9 (RHODE ISLAND AVE STATION) on route 4a537ff7-3d11-4e37-9535-7de9296bd8a8 +19:23:28,202 WARN ~ Shape dist traveled past end of shape, was 14022.531465207501, expected max 14022.531465207501, clamping +19:23:28,202 WARN ~ Shape dist traveled past end of shape, was 14022.531465207501, expected max 14022.531465207501, clamping +19:23:28,305 INFO ~ Loaded 6000 / 49539 trips +19:23:28,462 INFO ~ Fixed 52 / 62 stops after first round for trip pattern a4768750-557b-44b7-840b-2cac079adbe8 (STADIUM - ARMORY) on route a92ae21c-9adf-4fa1-b4ca-141eb353aca7 +19:23:28,497 INFO ~ Fixed 13 / 18 stops after first round for trip pattern d061ba39-cb6d-44d3-942d-f4ff26dd0058 (14TH & P NW) on route 4761f0cd-092e-4c7b-9b40-fa35356f13b8 +19:23:28,497 WARN ~ Shape dist traveled past end of shape, was 4365.654522806557, expected max 4365.654522806557, clamping +19:23:28,498 WARN ~ Shape dist traveled past end of shape, was 4365.654522806557, expected max 4365.654522806557, clamping +19:23:28,579 INFO ~ Fixed 30 / 42 stops after first round for trip pattern 9c108555-4f85-4ff4-808a-dc093706e6ed (TENLEYTOWN STATION) on route 4599756f-bb6a-4622-a4af-0874c52c611d +19:23:28,708 INFO ~ Fixed 18 / 43 stops after first round for trip pattern 0d4164f7-9098-452e-bab0-c9f34ef60dc6 (BROOKLAND STATION) on route 777bdadf-f8c6-4335-86fc-fa1953d1afd1 +19:23:29,042 INFO ~ Fixed 76 / 88 stops after first round for trip pattern 66742048-d447-41e6-87be-a67b00d575f4 (UNITED MEDICAL CENTER) on route f829a800-c614-458e-8e45-6cd9ae3f226a +19:23:29,044 WARN ~ Shape dist traveled past end of shape, was 17593.102744575597, expected max 17593.102744575597, clamping +19:23:29,093 INFO ~ Fixed 16 / 19 stops after first round for trip pattern c1d28f8c-476e-4fd3-9127-42faa86b3f2d (PENTAGON CITY STATION) on route d6e75512-873e-48b3-9f35-f21347897c2b +19:23:29,093 WARN ~ Shape dist traveled past end of shape, was 6902.042838934659, expected max 6902.042838934659, clamping +19:23:29,414 INFO ~ Fixed 39 / 51 stops after first round for trip pattern b0e2590c-0a3d-4e4e-bac8-03519fe119dd (POTOMAC PARK) on route 24dffea9-c23c-4699-966b-9a5a1c1653bd +19:23:29,529 INFO ~ Fixed 42 / 54 stops after first round for trip pattern 759b52dd-6d5a-44f5-9a28-cb3398206c2f (POTOMAC AVE STATION) on route 29b289b5-3fdf-4067-9807-a64dd070b32c +19:23:29,576 INFO ~ Fixed 26 / 34 stops after first round for trip pattern 525085fa-b3e8-4ba8-9c79-f0c3e49db208 (CHEVY CHASE CIRCLE) on route 514138fc-5fe2-4653-8e91-fe5a119ba57e +19:23:29,872 INFO ~ Fixed 60 / 63 stops after first round for trip pattern a453606a-0d7e-4623-851e-eaa55e261eb9 (GREENBELT STATION) on route 16f6cf10-737c-4a5a-949f-b6ec8c49f51c +19:23:29,880 WARN ~ Two stops on trip pattern a453606a-0d7e-4623-851e-eaa55e261eb9 map to same point on shape +19:23:29,880 WARN ~ Two stops on trip pattern a453606a-0d7e-4623-851e-eaa55e261eb9 map to same point on shape +19:23:30,061 INFO ~ Fixed 46 / 58 stops after first round for trip pattern 6d51a9a2-c6b2-4c94-91c8-f18e3b78404e (RHODE ISLAND AVE STATION) on route bb024eef-1074-4f29-b220-ace593784f74 +19:23:30,210 INFO ~ Fixed 30 / 33 stops after first round for trip pattern a5d3be29-89fd-4712-8dfe-1bef2570686e (GREENBELT STATION) on route d36731cc-84ea-4d5d-9264-81bb178b4cc6 +19:23:30,273 INFO ~ Fixed 25 / 35 stops after first round for trip pattern d648b22d-b823-4adc-8776-b21e3fe403df (BALLSTON) on route 83b1b642-0985-4c9f-b4fd-168cd73ca22a +19:23:30,374 INFO ~ Loaded 7000 / 49539 trips +19:23:30,460 INFO ~ Fixed 38 / 43 stops after first round for trip pattern 6b8e1677-81c1-4cb6-ba39-8a634043e2a5 (COLESVILLE) on route fb407bda-3288-4ad8-875e-4163cc1a8c0b +19:23:30,568 INFO ~ Fixed 34 / 39 stops after first round for trip pattern 06a91189-286d-44ad-85cf-a3cf302fcdd5 (LINCOLNIA) on route e1ddd1e0-ac57-42f1-9ae5-e81fadd482a3 +19:23:30,668 INFO ~ Fixed 37 / 43 stops after first round for trip pattern 53dbfafc-f855-43d5-afad-236bb3c6c28e (SOUTHERN AVE STATION) on route 2a768143-d6a0-4e63-9c7f-e0ef651fa5fc +19:23:30,841 INFO ~ Fixed 18 / 19 stops after first round for trip pattern 0b6b772f-e488-4c5e-ab33-9735d3ac40ff (SOUTH CAPITOL & ATLANTIC) on route 2a768143-d6a0-4e63-9c7f-e0ef651fa5fc +19:23:31,028 INFO ~ Fixed 57 / 68 stops after first round for trip pattern 03d7b025-9827-4f06-9826-be1140adca46 (NEW CARROLLTON STATION) on route b8fe3422-4e66-4087-beac-b82d90639791 +19:23:31,029 WARN ~ Shape dist traveled past end of shape, was 20099.65537042093, expected max 20099.65537042093, clamping +19:23:31,030 WARN ~ Shape dist traveled past end of shape, was 20099.65537042093, expected max 20099.65537042093, clamping +19:23:31,201 INFO ~ Fixed 27 / 27 stops after first round for trip pattern d8b5ed9c-b188-4204-aca4-39905c210d51 (FORT DRUM) on route 58734787-ac66-4da4-bc4b-ee3f043aebbb +19:23:31,286 INFO ~ Fixed 33 / 41 stops after first round for trip pattern b4359cfb-8014-4621-bf06-7717766b0361 (BROOKLAND STATION) on route 4599756f-bb6a-4622-a4af-0874c52c611d +19:23:31,520 INFO ~ Fixed 63 / 71 stops after first round for trip pattern 671eb4b3-a721-4827-a25c-ada56b4e1481 (TYSONS CORNER STATION) on route 29d0d9cd-8b58-47e5-af03-4a42f14048a6 +19:23:31,588 INFO ~ Fixed 27 / 27 stops after first round for trip pattern 7d9c294d-7c7c-4e44-a951-b2361664df70 (FRANCONIA-SPRINGFIELD) on route bcbe2132-0edd-47eb-954c-7cdb6777f025 +19:23:31,830 INFO ~ Fixed 17 / 22 stops after first round for trip pattern 9d879574-42e1-45fd-b4e6-0b899e8f0af7 (GEORGETOWN) on route aea7f134-2589-49cc-adc6-319ed9f3524e +19:23:31,908 INFO ~ Loaded 8000 / 49539 trips +19:23:31,954 INFO ~ Fixed 8 / 10 stops after first round for trip pattern 0d176d7f-1be9-412a-b576-95aff88ac8ac (DC VILLAGE VIA BLUE PLAINS) on route 32150f09-c8d4-4051-98bd-0c7baeac4def +19:23:31,978 INFO ~ Fixed 18 / 20 stops after first round for trip pattern 42ea6457-028c-4f2f-8295-0f5ee55c99a3 (GARFIELD - ANACOSTIA LOOP) on route d8e9ced1-7c0d-408a-be69-f51f44ff72b9 +19:23:32,147 INFO ~ Fixed 50 / 59 stops after first round for trip pattern 48fe55a9-d73c-42d4-88bb-7ef3c3271116 (TWINBROOK STATION) on route 454054fe-da87-4295-b6ff-4033e23b8afa +19:23:32,257 INFO ~ Fixed 36 / 43 stops after first round for trip pattern b928571a-2886-406f-b8a4-cda75b916657 (CULMORE) on route 20e4ec8d-150a-47e1-b0a9-9a1a7a740a1c +19:23:32,298 INFO ~ Fixed 22 / 25 stops after first round for trip pattern 79133851-5f4d-4fc8-ab4f-ec12467c8a6e (SOUTHERN AVE STATION) on route f5e7de0a-9bb6-4499-8cc2-ce579c362245 +19:23:32,560 INFO ~ Fixed 49 / 54 stops after first round for trip pattern 3f852aad-3b5b-40d2-af44-0aedacc82e43 (GREENBELT STATION) on route ca0768b2-263b-451e-9af8-707ee1a68a71 +19:23:32,879 INFO ~ Fixed 61 / 69 stops after first round for trip pattern cbac4346-37f6-4aea-b33c-12691df5c272 (BALLSTON) on route 8502291b-5c5d-4f36-9799-dbd2658168f7 +19:23:33,116 INFO ~ Fixed 52 / 66 stops after first round for trip pattern e27ab539-a300-4964-91e9-1201d08fa044 (N V C C - ANNANDALE) on route 1c4a68b5-5ad1-43f4-8887-c7c80d4d9fa5 +19:23:33,249 INFO ~ Fixed 36 / 49 stops after first round for trip pattern 8ae1e6fc-93e7-46d9-a49c-6dec8ba822fc (MCPHERSON SQUARE) on route f85fc952-8ec2-44c0-aa40-a0a49a954224 +19:23:33,284 INFO ~ Fixed 22 / 25 stops after first round for trip pattern 49784572-c069-43cb-8bc6-2968b82cff2a (BALLSTON STATION) on route 63a212ee-0a3c-4502-b190-2b4248de5422 +19:23:33,285 WARN ~ Shape dist traveled past end of shape, was 7650.18543905452, expected max 7650.18543905452, clamping +19:23:33,404 INFO ~ Fixed 51 / 55 stops after first round for trip pattern caf5801e-bcad-4167-9f0a-d5ad96b44093 (SILVER SPRING STATION) on route 086b1b16-ba61-442d-a3f0-ea7e870a00ce +19:23:33,693 INFO ~ Fixed 54 / 73 stops after first round for trip pattern 392eaaf8-2d13-43b5-b898-f4562fe1612a (DEANWOOD STATION) on route 18ae1c27-9702-42d0-ba65-f6a9e7c23b31 +19:23:33,697 WARN ~ Shape dist traveled past end of shape, was 22238.577959564493, expected max 22238.577959564493, clamping +19:23:33,697 WARN ~ Shape dist traveled past end of shape, was 22238.577959564493, expected max 22238.577959564493, clamping +19:23:33,762 INFO ~ Fixed 25 / 31 stops after first round for trip pattern e2f183ff-d7a6-4dfc-867c-a323a2d487f2 (ROSSLYN) on route 88a364c3-dc11-4091-b8bb-336c0e2519f7 +19:23:33,815 INFO ~ Fixed 37 / 41 stops after first round for trip pattern b05dab92-d158-4ff7-ba28-8650418628ca (FRIENDSHIP HEIGHTS) on route 41ba1e63-533f-4eb2-81e3-d4c0ada0b0d7 +19:23:34,137 INFO ~ Fixed 66 / 79 stops after first round for trip pattern 49a7df57-a0ad-45ef-b00e-31b2769d8563 (COLLEGE PARK STATION) on route a231852c-67bd-4eb0-874d-d6b116737c58 +19:23:34,180 INFO ~ Fixed 4 / 5 stops after first round for trip pattern 5a7dd126-d971-4776-8b55-cd65da45ccab (PENTAGON) on route b251ea97-f00a-407b-bb9e-4a78ed238086 +19:23:34,239 INFO ~ Fixed 32 / 40 stops after first round for trip pattern 4122d3db-0526-434f-a4d8-9a59570715b2 (FORESTVILLE) on route 391a9985-5e5f-46b7-8dc6-9b2e66b2f0a5 +19:23:34,240 WARN ~ Shape dist traveled past end of shape, was 10833.054746648142, expected max 10833.054746648142, clamping +19:23:34,474 INFO ~ Fixed 56 / 65 stops after first round for trip pattern 5eaffbd8-32c4-47e1-8958-0d553551ba78 (KENNEDY CENTER) on route f8346fd3-2fb8-4e48-8348-82039c822708 +19:23:34,751 INFO ~ Fixed 59 / 78 stops after first round for trip pattern c534e461-dbb2-4cc6-bc5c-2ec7e4ae42b7 (TAKOMA STATION) on route 495bc5f6-d4fe-4763-9dab-f2fb19b94f96 +19:23:34,898 INFO ~ Fixed 31 / 43 stops after first round for trip pattern 6833aa4d-dbb2-45cc-a9fc-5a055d963414 (WASHINGTON HOSPITAL CENTER) on route dabee5cc-3a9a-4760-ac59-37b0f52d6756 +19:23:34,899 WARN ~ Shape dist traveled past end of shape, was 11899.71791133745, expected max 11899.71791133745, clamping +19:23:35,041 INFO ~ Fixed 20 / 24 stops after first round for trip pattern 2f85adf4-555b-45f7-9aef-0a2534d7ca1d (REAGAN NATIONAL AIRPORT VIA PENTAGON) on route f26cf571-31b2-4eeb-8f86-494988b85995 +19:23:35,069 INFO ~ Fixed 22 / 23 stops after first round for trip pattern aa77ab17-3910-441e-9fb0-370eb495bbe8 (TEMPLE HILLS) on route 6e2a2df5-749b-47ad-8535-915abedce103 +19:23:35,088 INFO ~ Fixed 18 / 19 stops after first round for trip pattern 7fe5abd1-b724-4548-b46b-8598a02bc91f (PENTAGON) on route 0c93e3e1-364d-49b4-8a90-a429b50f590c +19:23:35,160 INFO ~ Fixed 33 / 43 stops after first round for trip pattern 79773e52-3470-4f22-b8d6-81734a00c47a (FEDERAL TRIANGLE) on route d29c7c3f-f453-4547-8413-a75fc4a845d0 +19:23:35,393 INFO ~ Fixed 40 / 51 stops after first round for trip pattern d178a694-e565-42e3-a8a2-50d794ec94ab (NEW CARROLLTON STATION VIA GREENBELT STATION) on route 1f05e5a6-9758-4d53-af38-3902b65ff3f8 +19:23:35,396 WARN ~ Shape dist traveled past end of shape, was 38429.062252115575, expected max 38429.062252115575, clamping +19:23:35,447 INFO ~ Fixed 23 / 30 stops after first round for trip pattern 769d8072-76cf-481f-84ef-2f8be880106d (EAST KETTERING) on route ff2c741b-372b-4805-ba9d-5c3f0471c36a +19:23:35,468 INFO ~ Fixed 14 / 17 stops after first round for trip pattern e9c251e8-7e66-4ea5-9bd9-45d670862717 (FORT TOTTEN STATION) on route 291bc5d5-f2e4-4974-ba72-f9e15054e26e +19:23:35,807 INFO ~ Fixed 74 / 87 stops after first round for trip pattern 0f4df7b7-9817-4ca0-86fd-b2809965bbb6 (PENTAGON) on route 238a6232-f250-4d9d-847f-acc0d5c47539 +19:23:35,818 INFO ~ Fixed 7 / 8 stops after first round for trip pattern d7a92132-1c60-4df5-9ac9-96e5532f338c (PENTAGON) on route ad03570f-7f5b-4a33-aeab-e94e9ec367cd +19:23:35,874 INFO ~ Fixed 16 / 20 stops after first round for trip pattern 4901d6e3-fbef-4f82-9c83-70adcc34055d (KING ST STATION) on route a97fdbeb-13cb-4314-93d3-0608c476d283 +19:23:35,918 INFO ~ Loaded 9000 / 49539 trips +19:23:35,962 INFO ~ Fixed 20 / 24 stops after first round for trip pattern b21ee5c1-7d5f-4480-91d8-a7995684bf85 (SKYLINE CITY) on route a3313c21-5590-462a-942c-004d0b43ca86 +19:23:35,963 WARN ~ Shape dist traveled past end of shape, was 11358.437764697219, expected max 11358.437764697219, clamping +19:23:36,022 INFO ~ Fixed 32 / 37 stops after first round for trip pattern c3782a0b-d904-4d3b-8a28-2b7e25b4fd61 (WHEATON STATION) on route ca0768b2-263b-451e-9af8-707ee1a68a71 +19:23:36,136 INFO ~ Fixed 44 / 48 stops after first round for trip pattern 3f284080-07d5-4f26-b907-769a3641150d (TYSONS CORNER STATION) on route bf337fd5-ff77-476f-8944-e49d7f5e4d1d +19:23:36,172 INFO ~ Fixed 19 / 24 stops after first round for trip pattern be6c19b9-f46e-492d-b333-ec7a7b671cae (PINEHURST) on route 9b478bcf-d7ac-4d9a-9c4d-02bff9b56aca +19:23:36,251 INFO ~ Fixed 21 / 29 stops after first round for trip pattern 8b744f04-bd2a-4c96-ad03-2e4f5243e17f (ARCHIVES) on route 8ed59dab-efdc-44fd-b2b1-37b530a2f5b5 +19:23:36,341 INFO ~ Fixed 26 / 30 stops after first round for trip pattern a68bb7ae-b637-44bf-be29-2853a15f5a85 (WHITE OAK) on route c6d0a86c-47d0-4320-b863-fe033b532537 +19:23:36,478 INFO ~ Fixed 47 / 52 stops after first round for trip pattern 8cb0be1e-d129-40d9-ab73-eed5d8e1cc3c (DUNN LORING STATION) on route 6ffbe66d-63da-42d3-90cf-34e7a5679982 +19:23:36,529 INFO ~ Fixed 21 / 25 stops after first round for trip pattern 1b84b651-58c0-455e-96bc-7d12e74dd02d (MINNESOTA AVE STATION) on route c7449c4c-793b-4098-b220-43ca3ca39e7b +19:23:36,746 INFO ~ Fixed 9 / 20 stops after first round for trip pattern adc53628-1355-4ece-baa7-797a474db9da (WHITE FLINT STATION) on route d3a223e2-28ab-47f0-a4ff-88b303ce425a +19:23:36,747 WARN ~ Shape dist traveled past end of shape, was 14207.628536859647, expected max 14207.628536859647, clamping +19:23:36,748 WARN ~ Shape dist traveled past end of shape, was 14207.628536859647, expected max 14207.628536859647, clamping +19:23:36,748 WARN ~ Shape dist traveled past end of shape, was 14207.628536859647, expected max 14207.628536859647, clamping +19:23:36,804 INFO ~ Fixed 26 / 31 stops after first round for trip pattern c3106746-9929-42c0-9ec4-b057f43048b1 (PENTAGON CITY STATION) on route 9062c900-b5d2-4472-a301-5eb227ebfd66 +19:23:36,806 WARN ~ Shape dist traveled past end of shape, was 9804.469919736248, expected max 9804.469919736248, clamping +19:23:37,017 INFO ~ Fixed 41 / 49 stops after first round for trip pattern 0e402651-cd2d-4501-9707-534103dfbdba (GREENBELT STATION) on route 7877c70b-5e26-4281-8cb7-76a85f186f4c +19:23:37,193 INFO ~ Fixed 51 / 66 stops after first round for trip pattern 41722b64-3acd-4b69-8243-1f1906e4ae4a (MALCOLM X & MLK AVENUES) on route a41b527c-7bad-4fc6-9dd0-a2a4f55fe4b9 +19:23:37,207 INFO ~ Fixed 3 / 4 stops after first round for trip pattern a68a0a5a-c3b5-4a61-a91f-451e868902fc (PARK CENTER) on route e9a57196-7f71-4340-828b-1fb2342e764f +19:23:37,408 INFO ~ Fixed 44 / 54 stops after first round for trip pattern ce1df576-8169-452c-8461-da8f9aaa571b (MT VERNON) on route 24dffea9-c23c-4699-966b-9a5a1c1653bd +19:23:37,411 WARN ~ Shape dist traveled past end of shape, was 35350.64435207841, expected max 35350.64435207841, clamping +19:23:37,412 WARN ~ Shape dist traveled past end of shape, was 35350.64435207841, expected max 35350.64435207841, clamping +19:23:37,495 INFO ~ Fixed 41 / 44 stops after first round for trip pattern 789c9f48-5a53-49a7-8f41-e797c2ca0b99 (FEDERAL TRIANGLE) on route 9006c58b-3e5d-4725-9e04-947b2e06cb70 +19:23:37,547 INFO ~ Fixed 16 / 20 stops after first round for trip pattern 62c4025e-640f-40f9-8e81-228699393128 (TENLEYTOWN STATION) on route 9b478bcf-d7ac-4d9a-9c4d-02bff9b56aca +19:23:37,548 WARN ~ Shape dist traveled past end of shape, was 5208.182291042096, expected max 5208.182291042096, clamping +19:23:37,657 INFO ~ Fixed 46 / 49 stops after first round for trip pattern 1ed87f26-7e5b-4a18-acbf-33e751f102b3 (SILVER SPRING STATION) on route 086b1b16-ba61-442d-a3f0-ea7e870a00ce +19:23:37,945 INFO ~ Fixed 19 / 48 stops after first round for trip pattern 47e35d18-a497-43d1-825a-bf2210a26ac9 (MINNESOTA AVE STATION) on route acbdc726-51b4-4314-a341-8bc12012777f +19:23:37,973 INFO ~ Fixed 11 / 12 stops after first round for trip pattern 78a5e705-17b1-45bb-adf2-42210dae508f (FDA / FRC) on route 703d5e5e-9a16-41af-941c-59be7bc68564 +19:23:38,047 INFO ~ Fixed 33 / 42 stops after first round for trip pattern baeb5a68-bf2d-4e14-9e76-4230f043bbe2 (PENTAGON) on route 2928902c-f9fa-4806-9e69-383d66f3e81b +19:23:38,172 INFO ~ Fixed 46 / 50 stops after first round for trip pattern 8140f6c1-dad8-49a3-a564-15281dc3ecf4 (KING STREET - OLD TOWN STATION) on route fd94d309-87ba-47c2-a7f1-649be2e841fe +19:23:38,243 INFO ~ Fixed 22 / 26 stops after first round for trip pattern 5bc5d010-8a7a-4508-8114-8b18d3fe4609 (SILVER SPRING STATION) on route c9300709-f7d0-47f2-b373-4d092307de11 +19:23:38,255 INFO ~ Fixed 21 / 21 stops after first round for trip pattern 7efbed7b-edce-4f8a-ac86-4dfd51aa14a0 (HUNTINGTON) on route 85eb7683-ac32-49d9-b969-fc8109723f7b +19:23:38,422 INFO ~ Fixed 46 / 54 stops after first round for trip pattern b3519987-d64a-4a14-afad-194c4c3bafd4 (FARRAGUT SQUARE) on route 5a0b5253-6aeb-480d-bd55-c03d8fb677e9 +19:23:38,538 INFO ~ Fixed 37 / 45 stops after first round for trip pattern 9b690da1-ff17-40cb-8c24-ea204de05f20 (SUITLAND STATION) on route f0647e83-20b7-42a7-a5f8-46429d343d38 +19:23:38,543 INFO ~ Loaded 10000 / 49539 trips +19:23:38,568 INFO ~ Fixed 4 / 5 stops after first round for trip pattern 6ccfbc48-e2b0-452c-b652-c4a9f6a48412 (CROFTON) on route 4db268fd-2c00-410d-9f0b-626716e6e800 +19:23:38,585 INFO ~ Fixed 17 / 19 stops after first round for trip pattern 2222a574-0782-40b6-be65-7cf66164d8f0 (ARCHBISHOP CARROLL HIGH SCHOOL) on route a101b93f-144d-4023-91be-847d28e2dd15 +19:23:38,653 INFO ~ Fixed 35 / 41 stops after first round for trip pattern 9d4bad62-44ed-4719-bbae-283c2243bf53 (COAST GUARD HQ VIA ANACOSTIA STATION) on route 58734787-ac66-4da4-bc4b-ee3f043aebbb +19:23:38,879 INFO ~ Fixed 59 / 69 stops after first round for trip pattern 9c3b28cb-78e5-4125-a99e-4f7f1c20bfb3 (FRIENDSHIP HEIGHTS) on route f655616f-684e-48aa-a1a9-0a3a7ad02ea5 +19:23:38,881 WARN ~ Shape dist traveled past end of shape, was 25306.694724268607, expected max 25306.694724268607, clamping +19:23:38,968 INFO ~ Fixed 8 / 10 stops after first round for trip pattern 6144745c-55b2-4086-9c57-4dde8bd2c98e (BRANCH AVE STATION) on route 8a3e96b0-3d70-4041-a75d-47983c1a6389 +19:23:38,970 WARN ~ Shape dist traveled past end of shape, was 10274.559094068132, expected max 10274.559094068132, clamping +19:23:39,200 INFO ~ Fixed 55 / 69 stops after first round for trip pattern 68a24076-c430-4a12-924f-c573e012f6dc (BURTONSVILLE) on route 9d43c59c-0d0a-4f8f-8821-1cb93964a9b6 +19:23:39,531 INFO ~ Fixed 51 / 58 stops after first round for trip pattern 45559e19-5401-4ad9-9291-e679c29565cd (CAPITOL HEIGHTS STATION) on route a92ae21c-9adf-4fa1-b4ca-141eb353aca7 +19:23:39,698 INFO ~ Fixed 67 / 75 stops after first round for trip pattern 035a55e6-a2eb-44bb-9d7c-953875c14595 (WASHINGTON OVERLOOK) on route f829a800-c614-458e-8e45-6cd9ae3f226a +19:23:39,699 WARN ~ Shape dist traveled past end of shape, was 15780.939286047986, expected max 15780.939286047986, clamping +19:23:39,799 INFO ~ Fixed 36 / 39 stops after first round for trip pattern c08f6cc9-0f6b-48cf-b10b-6463bb58fc86 (CRYSTAL CITY) on route a81ee200-dd7f-4ae7-b117-4fa12467a04b +19:23:39,838 INFO ~ Fixed 6 / 8 stops after first round for trip pattern f9b0a0f3-de24-4d06-b8c1-f98acf8044ff (CROFTON) on route 4db268fd-2c00-410d-9f0b-626716e6e800 +19:23:39,839 WARN ~ Shape dist traveled past end of shape, was 23581.22581288955, expected max 23581.225800413045, clamping +19:23:39,908 INFO ~ Fixed 9 / 14 stops after first round for trip pattern 03a5b725-1e0c-4d99-863a-0b67279219f1 (SOUTHERN AVE STATION) on route 1f0375b7-5010-4ef9-9df3-69d72473233c +19:23:39,919 WARN ~ Shape dist traveled past end of shape, was 39730.31797544419, expected max 39730.31797544419, clamping +19:23:40,089 INFO ~ Fixed 56 / 61 stops after first round for trip pattern 19c57198-0553-4c35-aed6-2ff1cf392cb9 (NEW CARROLLTON STATION) on route 731ba8e4-d838-43fb-856e-6d60c9f473dc +19:23:40,177 INFO ~ Fixed 38 / 41 stops after first round for trip pattern 68426b23-a56d-4631-9c9d-8d9c08475f10 (PENTAGON) on route 6b590aed-439e-4e69-b2ca-ab1dbdb48894 +19:23:40,184 INFO ~ Fixed 5 / 5 stops after first round for trip pattern 85367b1f-8f40-4032-944a-f1884d190451 (SILVER SPRING) on route 675d11b4-e400-4c17-9a72-b1b3ace62d85 +19:23:40,307 INFO ~ Fixed 38 / 51 stops after first round for trip pattern 959a521d-72a2-4433-b846-2ac5986f834b (NEW CARROLLTON STATION) on route 56db33d3-4290-4545-b21b-1bdf3f2f7937 +19:23:40,564 INFO ~ Fixed 40 / 55 stops after first round for trip pattern 9dbaec9d-4072-4863-a8e7-0280e8a8be70 (CHEVERLY STATION) on route 8591c000-2379-43a1-a8ae-ffcc23d49467 +19:23:40,594 INFO ~ Fixed 18 / 22 stops after first round for trip pattern c2dbfac0-804d-4549-b491-2bd853f9dd55 (LANDOVER STATION) on route eac6c002-920d-446f-96f7-72a8151901db +19:23:40,594 WARN ~ Shape dist traveled past end of shape, was 7096.217934628442, expected max 7096.217934628442, clamping +19:23:40,595 WARN ~ Shape dist traveled past end of shape, was 7096.217934628442, expected max 7096.217934628442, clamping +19:23:40,660 INFO ~ Fixed 36 / 42 stops after first round for trip pattern d520667d-3e60-44a2-9cc9-c0f4337da9d7 (FORT TOTTEN STATION) on route 291bc5d5-f2e4-4974-ba72-f9e15054e26e +19:23:41,196 INFO ~ Fixed 31 / 36 stops after first round for trip pattern 6476f7d2-d2de-441c-ae1b-e3165ab58162 (BROOKLAND STATION) on route db100496-6eb0-4467-904a-87ecbbab2964 +19:23:41,353 INFO ~ Fixed 36 / 42 stops after first round for trip pattern db43e98c-7015-4f2d-822c-5468ae929ee0 (FORT WASHINGTON PARK & RIDE) on route 14c5f730-3636-4ce3-a4bb-0734164faf9b +19:23:41,374 INFO ~ Fixed 3 / 6 stops after first round for trip pattern d90c1832-a94a-4cc6-90b5-49e1f69df91f (SILVER SPRING STATION) on route 008ddbb6-73a5-4bc4-b10e-a4f5f1e4c512 +19:23:41,436 INFO ~ Fixed 33 / 41 stops after first round for trip pattern b6d19599-4e5a-4792-9374-881435f3e93b (ARCHIVES) on route 41ba1e63-533f-4eb2-81e3-d4c0ada0b0d7 +19:23:41,567 INFO ~ Fixed 31 / 34 stops after first round for trip pattern 7cfc0629-746a-4269-8f0b-8965519f01c4 (16TH & COLORADO) on route f85fc952-8ec2-44c0-aa40-a0a49a954224 +19:23:41,647 INFO ~ Fixed 35 / 38 stops after first round for trip pattern d471b08d-a092-47cb-821f-1a196ce206ea (FARRAGUT SQUARE) on route f2a318a9-ac81-4da3-b32c-8044ebe195c3 +19:23:41,693 INFO ~ Fixed 17 / 19 stops after first round for trip pattern 32045095-a0cc-46da-b832-e56bf3d363ec (PENTAGON) on route e0698c41-3475-4c41-86a9-e656df0a1023 +19:23:41,789 INFO ~ Fixed 35 / 40 stops after first round for trip pattern 51e7ff47-6e29-4d3b-8534-c88acf4aad69 (MCPHERSON SQUARE) on route 97e0859e-5594-47a5-ac7b-b69cc7fd0b8e +19:23:41,790 WARN ~ Shape dist traveled past end of shape, was 12547.987282509766, expected max 12547.987282509766, clamping +19:23:41,840 INFO ~ Fixed 27 / 30 stops after first round for trip pattern d2258724-1de3-42c5-af47-e80a6a7b2811 (SEVEN CORNERS) on route c426e40b-6016-4d05-a935-c13ab2709189 +19:23:41,841 WARN ~ Shape dist traveled past end of shape, was 10524.610137634561, expected max 10524.610137634561, clamping +19:23:42,067 INFO ~ Fixed 55 / 67 stops after first round for trip pattern b1cbd4e8-110f-43e6-8632-c25591ed447e (CAMP SPRINGS) on route d0547e0f-e3b1-4c3e-8b34-0ff080071666 +19:23:42,203 INFO ~ Fixed 54 / 62 stops after first round for trip pattern e6e468ae-3dd5-486d-ab46-22a9bb99e8d8 (MONTGOMERY MALL) on route 5844b309-3754-4210-bacd-7324283a47f5 +19:23:42,210 INFO ~ Loaded 11000 / 49539 trips +19:23:42,423 INFO ~ Fixed 26 / 26 stops after first round for trip pattern e35aeb83-bd5c-4217-8dcc-c2b4edfc6b37 (NEW CARROLLTON) on route a1a52c1c-256c-4308-94a7-b3e85a4285a7 +19:23:42,745 INFO ~ Fixed 35 / 42 stops after first round for trip pattern 6872be48-0303-43b9-a2e2-bc7511c64e7a (SOUTH LAUREL PARK & RIDE) on route 7877c70b-5e26-4281-8cb7-76a85f186f4c +19:23:42,747 WARN ~ Shape dist traveled past end of shape, was 25640.804034970064, expected max 25640.804034970064, clamping +19:23:42,804 INFO ~ Fixed 27 / 35 stops after first round for trip pattern bae1da60-0f6c-46eb-b52e-130d4b986367 (BALLSTON) on route d745711f-c227-410e-9e6a-1739ec14367d +19:23:42,939 INFO ~ Fixed 39 / 44 stops after first round for trip pattern b14d32c9-77b5-40be-b4a5-c61812f0ac37 (BURKE CENTRE) on route 548e8e6b-f682-4b91-9f3e-7567a22875fb +19:23:43,016 INFO ~ Fixed 28 / 34 stops after first round for trip pattern 51a6db93-7e50-4a9f-adfe-8da014a8a8f0 (PENTAGON) on route ac471af9-d56b-4bf2-8798-b895cdb4c614 +19:23:43,262 INFO ~ Fixed 45 / 67 stops after first round for trip pattern c4b77ee0-7f0a-442f-af36-6f4e3abf6dd8 (SILVER SPRING STATION) on route c6d0a86c-47d0-4320-b863-fe033b532537 +19:23:43,409 INFO ~ Fixed 45 / 56 stops after first round for trip pattern 96fba367-4ab3-4dd8-9b9f-d2165bb04ffd (ELLINGTON BRIDGE) on route a92ae21c-9adf-4fa1-b4ca-141eb353aca7 +19:23:43,553 INFO ~ Fixed 34 / 46 stops after first round for trip pattern ad7087d9-581c-44ac-a592-a6816f6aea2f (BURKE CENTRE) on route 52095a06-47c5-46d8-91de-3b6119d2469e +19:23:43,673 INFO ~ Fixed 40 / 51 stops after first round for trip pattern f03599af-4110-40a4-ae5d-f3ee395818e7 (SIBLEY HOSPITAL) on route 7aa38cc7-98c4-4b5d-a39b-4f947c09c1c6 +19:23:43,674 WARN ~ Shape dist traveled past end of shape, was 11728.343365463274, expected max 11728.343365463274, clamping +19:23:43,675 WARN ~ Shape dist traveled past end of shape, was 11728.343365463274, expected max 11728.343365463274, clamping +19:23:43,675 WARN ~ Shape dist traveled past end of shape, was 11728.343365463274, expected max 11728.343365463274, clamping +19:23:43,675 WARN ~ Shape dist traveled past end of shape, was 11728.343365463274, expected max 11728.343365463274, clamping +19:23:43,690 INFO ~ Fixed 10 / 10 stops after first round for trip pattern 1dad6a89-0e3b-4d40-a639-7a28762ca7f0 (CRYSTAL CITY) on route 0a1f794a-a36f-4b08-9bdc-06671672c123 +19:23:43,728 INFO ~ Loaded 12000 / 49539 trips +19:23:43,788 INFO ~ Fixed 10 / 12 stops after first round for trip pattern 077fa56b-40aa-49cd-9781-796a9a2ea74c (SOUTHERN AVE STATION) on route 1f0375b7-5010-4ef9-9df3-69d72473233c +19:23:43,791 WARN ~ Shape dist traveled past end of shape, was 38252.3761364479, expected max 38252.3761364479, clamping +19:23:43,840 INFO ~ Fixed 22 / 29 stops after first round for trip pattern 105abf6e-4083-4637-a1c0-17f045ffa4e9 (GREENCASTLE PARK & RIDE) on route 02918ea7-0704-4f8b-8aa2-202f971fd2d0 +19:23:44,064 INFO ~ Fixed 64 / 78 stops after first round for trip pattern 91b3d6d8-3166-48e2-9e75-892311601f5d (STADIUM - ARMORY) on route 7aa38cc7-98c4-4b5d-a39b-4f947c09c1c6 +19:23:44,315 INFO ~ Fixed 54 / 74 stops after first round for trip pattern 36d8cbab-3229-4653-b490-232808767896 (SILVER SPRING STATION) on route 122a3499-08c1-4bed-a227-fb302e868090 +19:23:44,447 INFO ~ Fixed 34 / 47 stops after first round for trip pattern 466d5d72-43f9-4e67-a423-4926ba897919 (ANACOSTIA STATION) on route a102eaea-3b30-4c77-b428-2e8709c2ed8c +19:23:44,507 INFO ~ Fixed 10 / 12 stops after first round for trip pattern 1f5bafd4-463b-479c-bb3b-6678d3725ce7 (UNION STATION) on route cf5023f7-b5f9-4b3a-9d46-7884978c0294 +19:23:44,678 INFO ~ Fixed 44 / 60 stops after first round for trip pattern d137335f-cba5-4d89-9b8c-186332c7f8c3 (ARCHIVES) on route c96fd764-de91-4074-8478-c74959370f22 +19:23:44,678 WARN ~ Two stops on trip pattern d137335f-cba5-4d89-9b8c-186332c7f8c3 map to same point on shape +19:23:44,678 WARN ~ Two stops on trip pattern d137335f-cba5-4d89-9b8c-186332c7f8c3 map to same point on shape +19:23:44,678 WARN ~ Two stops on trip pattern d137335f-cba5-4d89-9b8c-186332c7f8c3 map to same point on shape +19:23:44,679 WARN ~ Two stops on trip pattern d137335f-cba5-4d89-9b8c-186332c7f8c3 map to same point on shape +19:23:44,679 WARN ~ Two stops on trip pattern d137335f-cba5-4d89-9b8c-186332c7f8c3 map to same point on shape +19:23:44,679 WARN ~ Two stops on trip pattern d137335f-cba5-4d89-9b8c-186332c7f8c3 map to same point on shape +19:23:44,679 WARN ~ Two stops on trip pattern d137335f-cba5-4d89-9b8c-186332c7f8c3 map to same point on shape +19:23:44,679 WARN ~ Two stops on trip pattern d137335f-cba5-4d89-9b8c-186332c7f8c3 map to same point on shape +19:23:44,726 INFO ~ Fixed 24 / 31 stops after first round for trip pattern c876674d-e689-4239-bd70-efe7fa238f8d (SILVER SPRING STATION) on route c6d0a86c-47d0-4320-b863-fe033b532537 +19:23:44,751 INFO ~ Fixed 15 / 19 stops after first round for trip pattern a9970a34-0233-404d-9adc-3c745ec0d1f4 (NATIONALS PARK) on route 79d84329-0fae-4821-a978-5ddc0bda267e +19:23:44,858 INFO ~ Fixed 34 / 41 stops after first round for trip pattern 9dde807d-aaa4-4ec8-8acd-13127512f9f0 (CULMORE) on route 9ded3363-951b-431b-8fc1-ef6847ac5e95 +19:23:44,911 WARN ~ Stop is more than 1km from its shape, using straight-line distances +19:23:45,047 INFO ~ Fixed 11 / 11 stops after first round for trip pattern b42b16ac-7208-4675-b51b-953086e84815 (INDIAN HEAD) on route 1f0375b7-5010-4ef9-9df3-69d72473233c +19:23:45,343 INFO ~ Fixed 65 / 76 stops after first round for trip pattern 37a689f2-0161-4d47-b5bb-e1cd47402052 (COLLINGTON) on route 65ddba12-4924-43ff-aa16-4286a4893474 +19:23:45,524 INFO ~ Fixed 49 / 63 stops after first round for trip pattern e5c7be91-881d-4e2b-b5a9-f8705f690eb4 (EAST FALLS CHURCH STATION) on route 1c4a68b5-5ad1-43f4-8887-c7c80d4d9fa5 +19:23:45,626 INFO ~ Fixed 34 / 42 stops after first round for trip pattern dd2a381d-0500-4a6c-9e5c-83fdc826ad15 (MINNESOTA AVE STATION) on route 263774df-c4d3-489d-ab2a-08facc5eb14a +19:23:45,632 INFO ~ Fixed 8 / 8 stops after first round for trip pattern 0ca77495-a5a3-4028-bf1b-4b215ef658fa (NEW CARROLLTON) on route a1a52c1c-256c-4308-94a7-b3e85a4285a7 +19:23:45,829 INFO ~ Fixed 55 / 68 stops after first round for trip pattern b4c2dd79-4f8d-4fdc-9858-4a29f904d91e (FORT TOTTEN) on route 659aa27c-6f5f-4608-aa49-5fbcbd841df2 +19:23:45,901 INFO ~ Fixed 29 / 37 stops after first round for trip pattern 749ee182-9a5b-4d5b-8ccb-2f8b2856a2e6 (PRINCE GEORGES COMMUNITY COLLEGE) on route 7a9d3b6c-d3cc-4099-a31b-4c7c4f408ac8 +19:23:45,952 INFO ~ Fixed 25 / 37 stops after first round for trip pattern 98ff5913-671c-4bc5-be9d-dbedcf28b929 (FRIENDSHIP HEIGHTS) on route 50c1edad-36dd-4c6c-9609-f75cbc24e66e +19:23:46,037 INFO ~ Fixed 11 / 17 stops after first round for trip pattern 5985d4a4-fd7f-4173-949f-80845f86a473 (SILVER SPRING STATION) on route 6cd1d938-a1fe-43e1-a664-6af55927003c +19:23:46,039 WARN ~ Shape dist traveled past end of shape, was 12458.164881923112, expected max 12458.164881923112, clamping +19:23:46,039 WARN ~ Shape dist traveled past end of shape, was 12458.164881923112, expected max 12458.164881923112, clamping +19:23:46,039 WARN ~ Shape dist traveled past end of shape, was 12458.164881923112, expected max 12458.164881923112, clamping +19:23:46,130 INFO ~ Fixed 38 / 46 stops after first round for trip pattern 18d212be-052a-443a-b1b5-b22d13c144b0 (SOUTHERN AVE STATION) on route ad8ce697-0f83-4043-aa4f-4e10ec55857f +19:23:46,131 WARN ~ Shape dist traveled past end of shape, was 10242.719232083286, expected max 10242.719232083286, clamping +19:23:46,382 INFO ~ Fixed 45 / 51 stops after first round for trip pattern b46a7f0c-f9b3-4753-b257-97a2bfce9b89 (SILVER SPRING STATION) on route 5844b309-3754-4210-bacd-7324283a47f5 +19:23:46,460 INFO ~ Loaded 13000 / 49539 trips +19:23:46,557 INFO ~ Fixed 33 / 37 stops after first round for trip pattern f60b2556-1404-4004-9fa8-a101debb345e (FRIENDSHIP HEIGHTS) on route d4b15eb8-130e-47f1-b8cf-3877f1919844 +19:23:46,652 INFO ~ Fixed 13 / 16 stops after first round for trip pattern 7769e4df-f78c-4810-807a-bbe9ebf681c6 (BLADENSBURG & SOUTH DAKOTA) on route 6b821979-3a52-4013-8688-67bb7238c4bb +19:23:46,652 WARN ~ Shape dist traveled past end of shape, was 3791.2822722277933, expected max 3791.2822722277933, clamping +19:23:46,846 INFO ~ Fixed 74 / 84 stops after first round for trip pattern 6a9f814c-9906-43d3-9ebb-c2fa525b0ec6 (WASHINGTON OVERLOOK) on route f829a800-c614-458e-8e45-6cd9ae3f226a +19:23:47,114 INFO ~ Fixed 82 / 87 stops after first round for trip pattern d22831bc-f5e8-4551-9dba-2efe6ddb0e66 (ANNANDALE) on route 5a3674aa-7107-41dd-bdaf-7c2c19cf154e +19:23:47,244 INFO ~ Fixed 27 / 31 stops after first round for trip pattern 40023d11-a3f3-42fa-b768-000a54ae3d88 (SKYLINE CITY) on route 9062c900-b5d2-4472-a301-5eb227ebfd66 +19:23:47,244 WARN ~ Shape dist traveled past end of shape, was 9784.21805171936, expected max 9784.21805171936, clamping +19:23:47,582 INFO ~ Fixed 55 / 77 stops after first round for trip pattern b11de3d5-eaca-43ab-899d-d5fb6770eb55 (ADDISON RD STATION) on route 7a9d3b6c-d3cc-4099-a31b-4c7c4f408ac8 +19:23:47,653 INFO ~ Fixed 35 / 37 stops after first round for trip pattern 3ac1c68e-e185-4644-ae51-b3eec4e2513a (HIGHVIEW) on route db100496-6eb0-4467-904a-87ecbbab2964 +19:23:47,792 INFO ~ Fixed 35 / 48 stops after first round for trip pattern 870ae73e-0d97-4f70-88a0-297c9f21bb0f (WHEATON STATION) on route c0a7b3d8-f408-49a9-9dca-0b2b9f497db5 +19:23:47,829 INFO ~ Fixed 19 / 23 stops after first round for trip pattern 56b33a83-8e31-4154-a950-92d7fd8312f9 (DUPONT CIRCLE) on route 6537941e-d965-4717-8c3e-a61daa69e249 +19:23:47,830 WARN ~ Shape dist traveled past end of shape, was 5320.582860318233, expected max 5320.582860318233, clamping +19:23:48,020 INFO ~ Fixed 52 / 63 stops after first round for trip pattern 6ba25fff-154f-403c-bf45-e056c3d8141f (NEW CARROLLTON STATION) on route ef580214-561e-4e5e-96ae-9fc8dc37cd6e +19:23:48,239 INFO ~ Fixed 20 / 48 stops after first round for trip pattern ba46d77a-eba5-493e-9686-1763d3dc483a (MARSHALL HEIGHTS - LINCOLN HEIGHTS) on route 9ef1e536-7ddb-46ce-81ec-6fcecc3c2d43 +19:23:48,246 WARN ~ Shape dist traveled past end of shape, was 20717.48414418741, expected max 20717.48414418741, clamping +19:23:48,246 WARN ~ Shape dist traveled past end of shape, was 20717.48414418741, expected max 20717.48414418741, clamping +19:23:48,247 WARN ~ Shape dist traveled past end of shape, was 20717.48414418741, expected max 20717.48414418741, clamping +19:23:48,248 WARN ~ Shape dist traveled past end of shape, was 20717.48414418741, expected max 20717.48414418741, clamping +19:23:48,248 WARN ~ Shape dist traveled past end of shape, was 20717.48414418741, expected max 20717.48414418741, clamping +19:23:48,249 WARN ~ Shape dist traveled past end of shape, was 20717.48414418741, expected max 20717.48414418741, clamping +19:23:48,249 WARN ~ Shape dist traveled past end of shape, was 20717.48414418741, expected max 20717.48414418741, clamping +19:23:48,250 WARN ~ Shape dist traveled past end of shape, was 20717.48414418741, expected max 20717.48414418741, clamping +19:23:48,338 INFO ~ Fixed 40 / 53 stops after first round for trip pattern 417d352c-9871-4dca-84eb-a955f3fc3a47 (ROCKVILLE STATION) on route 276b52a5-4e2d-4c24-b0cd-bef9226b9dfb +19:23:48,340 WARN ~ Shape dist traveled past end of shape, was 16949.91213714756, expected max 16949.91213714756, clamping +19:23:48,522 INFO ~ Fixed 35 / 41 stops after first round for trip pattern bd14daf4-4ddb-4f86-b70d-ddd263014c71 (CULMORE) on route ac471af9-d56b-4bf2-8798-b895cdb4c614 +19:23:48,595 INFO ~ Fixed 18 / 18 stops after first round for trip pattern d7e25f1d-4d38-4e28-b4dd-72cbdb3efa56 (GREENBELT CENTER) on route d4834b02-dbe9-4b55-9e7c-8ff78362f23c +19:23:48,665 INFO ~ Fixed 32 / 39 stops after first round for trip pattern e9fe8d66-5b95-4737-82ed-e9b8ba03208e (ADDISON RD STATION) on route 18ae1c27-9702-42d0-ba65-f6a9e7c23b31 +19:23:48,667 WARN ~ Shape dist traveled past end of shape, was 10810.70891348626, expected max 10810.70891348626, clamping +19:23:48,849 INFO ~ Fixed 51 / 56 stops after first round for trip pattern 894da8d3-9698-4f4d-9e1a-97f602955ddb (ORANGE HUNT) on route 3b45ac40-2361-43db-8c36-fb57f8670b38 +19:23:48,992 INFO ~ Fixed 51 / 62 stops after first round for trip pattern 087644d9-b780-4251-a84f-101c0fa707ca (ELLINGTON BRIDGE) on route ca60a6aa-1ff4-423e-b306-f8d057f252c5 +19:23:49,036 INFO ~ Fixed 14 / 16 stops after first round for trip pattern cab89c96-eb6f-4be7-8eeb-6680ae9bee8b (KINGS PARK WEST) on route ae36b111-35d2-4485-b492-9a0d786592fd +19:23:49,137 INFO ~ Fixed 43 / 50 stops after first round for trip pattern 05525a7a-d75a-4da4-9a74-b1f66b0ca45d (MCLEAN STATION) on route 8f4a9475-3ff9-4508-8a08-96765db26bff +19:23:49,258 INFO ~ Fixed 33 / 38 stops after first round for trip pattern 5fddd708-2bb5-41fb-b573-6c5d53b88261 (DUNN LORING STATION) on route 5f2f0976-1d10-4c36-94e3-3ffaa61f72e6 +19:23:49,384 INFO ~ Fixed 37 / 44 stops after first round for trip pattern 4eb79767-0f60-4e00-a99d-63c54ed2fcc7 (TEMPLE HILLS) on route 0913edda-4110-44a0-a9a5-d4485ea64f88 +19:23:49,565 INFO ~ Fixed 55 / 73 stops after first round for trip pattern 8dc719e9-6ba3-4182-94a6-08bc5dc42612 (SOUTHERN AVE STATION) on route 2625d9e9-2422-4671-a9cc-f0fc525798dd +19:23:49,773 INFO ~ Fixed 61 / 68 stops after first round for trip pattern 29e50989-e265-42f2-88f7-2199a7b1b6a6 (BALLSTON) on route 8502291b-5c5d-4f36-9799-dbd2658168f7 +19:23:49,852 INFO ~ Loaded 14000 / 49539 trips +19:23:49,924 INFO ~ Fixed 31 / 35 stops after first round for trip pattern 539ed949-9a26-4e56-accf-fd77dfa78a93 (LEISURE WORLD) on route 28a882a6-86ff-42c8-962c-74bae51a5f7a +19:23:50,429 INFO ~ Fixed 87 / 102 stops after first round for trip pattern 54e611a6-8af8-49bf-acfa-3cc946f2a38a (SOUTHERN AVE STATION) on route 9ae6bf06-cdd6-4556-a3c0-defc7421df55 +19:23:50,673 INFO ~ Fixed 60 / 76 stops after first round for trip pattern 085f71a9-5451-4c0f-8b8f-30434098a539 (SUITLAND STATION) on route 2625d9e9-2422-4671-a9cc-f0fc525798dd +19:23:50,675 WARN ~ Shape dist traveled past end of shape, was 21371.861550253358, expected max 21371.861550253358, clamping +19:23:50,754 INFO ~ Fixed 9 / 11 stops after first round for trip pattern fcde5021-4990-40cd-87ac-cd10d0a23a1c (NAVY YARD STATION) on route cf5023f7-b5f9-4b3a-9d46-7884978c0294 +19:23:50,816 INFO ~ Fixed 16 / 18 stops after first round for trip pattern 3a2f3b38-38fb-4afe-8851-9c8ec93c6917 (PENTAGON) on route be3a9254-6865-4845-b39f-bc40ca658cbd +19:23:50,827 INFO ~ Fixed 21 / 21 stops after first round for trip pattern b8550859-4301-4791-8da6-72624ab5bde1 (GREENBELT) on route 85eb7683-ac32-49d9-b969-fc8109723f7b +19:23:51,028 INFO ~ Fixed 37 / 46 stops after first round for trip pattern 9d08dc5f-7d0d-4af9-ad93-a827753dd353 (GREENBELT STATION) on route 1f05e5a6-9758-4d53-af38-3902b65ff3f8 +19:23:51,083 INFO ~ Fixed 29 / 35 stops after first round for trip pattern 1c31e05f-d03a-43c8-be90-c2e293b0e8dd (WHEATON STATION) on route 28a882a6-86ff-42c8-962c-74bae51a5f7a +19:23:51,084 WARN ~ Shape dist traveled past end of shape, was 9776.594833578622, expected max 9776.594833578622, clamping +19:23:51,287 INFO ~ Fixed 60 / 60 stops after first round for trip pattern 8e38a0aa-9f4d-4db6-aef6-cca7a9fe860a (SHIRLINGTON) on route c5c9da55-efd8-4a2b-aacd-a907fb8a887f +19:23:51,404 INFO ~ Fixed 24 / 38 stops after first round for trip pattern cc2f45db-60f6-43e4-8268-9ae9053328fa (NAYLOR RD STATION) on route 21c9e6b5-0d2b-4611-a2f7-15fbc345cda7 +19:23:51,406 WARN ~ Shape dist traveled past end of shape, was 19209.525754566755, expected max 19209.525165481176, clamping +19:23:51,406 WARN ~ Shape dist traveled past end of shape, was 19209.525754566755, expected max 19209.525165481176, clamping +19:23:51,407 WARN ~ Shape dist traveled past end of shape, was 19209.525754566755, expected max 19209.525165481176, clamping +19:23:51,408 WARN ~ Shape dist traveled past end of shape, was 19209.525754566755, expected max 19209.525165481176, clamping +19:23:51,408 WARN ~ Shape dist traveled past end of shape, was 19209.525754566755, expected max 19209.525165481176, clamping +19:23:51,408 WARN ~ Shape dist traveled past end of shape, was 19209.525754566755, expected max 19209.525165481176, clamping +19:23:51,590 INFO ~ Fixed 42 / 58 stops after first round for trip pattern 2a6ee7a3-daac-4a56-8700-26d158e9f02f (CHEVERLY STATION) on route 8591c000-2379-43a1-a8ae-ffcc23d49467 +19:23:51,896 INFO ~ Fixed 50 / 71 stops after first round for trip pattern d6ec7e22-214c-4045-8d84-fe1bf4f155b4 (WASHINGTON BUSINESS PARK) on route 8591c000-2379-43a1-a8ae-ffcc23d49467 +19:23:51,936 INFO ~ Fixed 20 / 23 stops after first round for trip pattern 867c54de-ecd6-468b-b743-2388e356c3af (PENTAGON) on route a93fb001-6c25-4bef-9b60-3dbf27549a2b +19:23:51,946 INFO ~ Fixed 14 / 14 stops after first round for trip pattern eafd821d-bbd3-4e3f-bc8d-ee12c5358876 (LARGO TOWN CENTER) on route bcbe2132-0edd-47eb-954c-7cdb6777f025 +19:23:51,959 INFO ~ Fixed 13 / 15 stops after first round for trip pattern cd09cc9a-c669-423a-bf58-1ef6630032f3 (MT RAINIER) on route 17dfeee1-c024-48e7-b4c4-56ddbecd3c2d +19:23:52,228 INFO ~ Fixed 60 / 68 stops after first round for trip pattern f177f755-26ab-4909-b32e-2b8fbbb31559 (KING STREET - OLD TOWN STATION) on route 29d0d9cd-8b58-47e5-af03-4a42f14048a6 +19:23:52,512 INFO ~ Fixed 35 / 42 stops after first round for trip pattern 0f7f34d2-f96d-4ce3-ba47-674765207610 (ADDISON RD STATION) on route f0647e83-20b7-42a7-a5f8-46429d343d38 +19:23:52,790 INFO ~ Fixed 26 / 35 stops after first round for trip pattern 417470ba-af7c-4037-87df-1636f7f4741b (POINTER RIDGE) on route 47e747f8-fee2-4376-9d7c-fc55b29c8ba6 +19:23:52,876 INFO ~ Fixed 39 / 43 stops after first round for trip pattern 9f9283fd-ed43-485e-b7ac-7269305a520f (EAST FALLS CHURCH STATION) on route be3d2410-3446-44a7-bac2-cb9f3693e3db +19:23:52,992 INFO ~ Fixed 46 / 54 stops after first round for trip pattern 1377d683-0265-4c82-b786-d50f8c5f8bb2 (GARFIELD - ANACOSTIA LOOP) on route b17551d9-e7c4-4905-8eab-0b3087744de4 +19:23:52,993 WARN ~ Two stops on trip pattern 1377d683-0265-4c82-b786-d50f8c5f8bb2 map to same point on shape +19:23:52,993 WARN ~ Two stops on trip pattern 1377d683-0265-4c82-b786-d50f8c5f8bb2 map to same point on shape +19:23:53,018 INFO ~ Loaded 15000 / 49539 trips +19:23:53,383 INFO ~ Fixed 63 / 77 stops after first round for trip pattern 2f4d67fb-7bd1-44dc-9293-5575a6be9259 (WHITE FLINT STATION) on route a231852c-67bd-4eb0-874d-d6b116737c58 +19:23:53,550 INFO ~ Fixed 47 / 53 stops after first round for trip pattern b7c8f693-327c-4e1d-bbca-6495aa3544cc (SILVER SPRING STATION) on route a5d53598-b6d2-483d-afeb-53f0e06851e0 +19:23:53,618 INFO ~ Fixed 21 / 30 stops after first round for trip pattern afb4be33-d72e-47b1-8d40-812af7c0e459 (N V C C - ALEXANDRIA) on route a93fb001-6c25-4bef-9b60-3dbf27549a2b +19:23:53,619 WARN ~ Two stops on trip pattern afb4be33-d72e-47b1-8d40-812af7c0e459 map to same point on shape +19:23:53,682 INFO ~ Fixed 27 / 38 stops after first round for trip pattern 5974d945-eae1-48c3-864c-e34f1df8c5cf (14TH & BUCHANAN) on route c9fc83e7-760f-4a2a-b282-5b459887a9c5 +19:23:53,684 WARN ~ Shape dist traveled past end of shape, was 9707.93988637319, expected max 9707.93988637319, clamping +19:23:53,896 INFO ~ Fixed 48 / 62 stops after first round for trip pattern 523c41ec-a50c-42a9-9772-a2ab5528b83f (CALVERTON) on route e4394d64-dd3c-479a-b34e-4c4ee8abb7cc +19:23:53,901 WARN ~ Shape dist traveled past end of shape, was 25091.65345338256, expected max 25091.65345338256, clamping +19:23:53,915 INFO ~ Fixed 11 / 12 stops after first round for trip pattern 0300045c-6d33-4521-89c2-17ac9f1efac3 (FDA / FRC) on route 703d5e5e-9a16-41af-941c-59be7bc68564 +19:23:54,185 INFO ~ Fixed 73 / 77 stops after first round for trip pattern ab7404c9-9805-44e9-8776-7a65cd939edb (CRYSTAL CITY) on route a82d1b71-cf03-466d-907b-e5e9bff4f470 +19:23:54,414 INFO ~ Fixed 21 / 26 stops after first round for trip pattern 00e9b5db-171b-4df7-9d17-5abf3844ff59 (SILVER SPRING STATION) on route 008ddbb6-73a5-4bc4-b10e-a4f5f1e4c512 +19:23:54,436 INFO ~ Fixed 15 / 19 stops after first round for trip pattern b2a1c110-24ef-4f44-8f2a-08f651baf0d1 (CAPITOL HEIGHTS STATION) on route a1be7d1a-0fc1-4cfc-96ff-06929d1ff313 +19:23:54,436 WARN ~ Shape dist traveled past end of shape, was 4704.801741611305, expected max 4704.801741611305, clamping +19:23:54,579 INFO ~ Fixed 49 / 54 stops after first round for trip pattern 8fb8d273-4257-47a3-982c-6be347faa5cb (VIENNA STATION) on route fd94d309-87ba-47c2-a7f1-649be2e841fe +19:23:54,721 INFO ~ Fixed 33 / 46 stops after first round for trip pattern 919da1f3-35eb-4a01-a310-b7c13db10cbe (MCPHERSON SQUARE) on route f85fc952-8ec2-44c0-aa40-a0a49a954224 +19:23:54,786 INFO ~ Fixed 33 / 37 stops after first round for trip pattern 023f6955-802d-4e44-9959-4c5a85afb601 (PRINCE GEORGES PLAZA STATION) on route b8fe3422-4e66-4087-beac-b82d90639791 +19:23:54,881 INFO ~ Fixed 38 / 51 stops after first round for trip pattern 75b837c2-7ba8-4201-8d1b-49c9a63cb534 (FARRAGUT SQUARE) on route cae5f3c8-f4e7-4bc7-a9c5-f24776fe35cf +19:23:54,980 INFO ~ Fixed 4 / 6 stops after first round for trip pattern 1c35873f-f719-488e-a1fb-5801d74331a1 (NEW CARROLLTON STATION) on route 4db268fd-2c00-410d-9f0b-626716e6e800 +19:23:55,063 INFO ~ Fixed 45 / 49 stops after first round for trip pattern ddacd8a0-887a-4418-9e82-30ea18285866 (ANACOSTIA STATION) on route 4a537ff7-3d11-4e37-9535-7de9296bd8a8 +19:23:55,438 INFO ~ Fixed 62 / 75 stops after first round for trip pattern 30ad3ba7-1bc1-40b4-8267-f6b88b1b7642 (CHEVERLY STATION) on route 324353ff-d624-45a2-a0fc-dfa4ce518ca8 +19:23:55,441 WARN ~ Two stops on trip pattern 30ad3ba7-1bc1-40b4-8267-f6b88b1b7642 map to same point on shape +19:23:55,653 INFO ~ Fixed 62 / 74 stops after first round for trip pattern 80c3d403-bb32-4cf1-b174-be6b6423ccc8 (SILVER SPRING STATION) on route 9695dea6-79ed-4c77-bd04-b67404a87814 +19:23:55,717 INFO ~ Fixed 11 / 12 stops after first round for trip pattern 402cfd34-b140-4ebd-9a43-5887f9e54c74 (NATIONAL HARBOR) on route 3749ce95-2e73-4bca-947f-8deff993e893 +19:23:55,792 INFO ~ Fixed 29 / 32 stops after first round for trip pattern c388b608-a22f-487c-92d2-3b2af382df28 (MCPHERSON SQUARE) on route f8346fd3-2fb8-4e48-8348-82039c822708 +19:23:55,800 INFO ~ Fixed 21 / 21 stops after first round for trip pattern 42100307-1943-4c1a-990d-b18403f8d3fd (GREENBELT) on route 85eb7683-ac32-49d9-b969-fc8109723f7b +19:23:55,893 INFO ~ Fixed 43 / 46 stops after first round for trip pattern 9b675e85-d539-4e25-ad88-37aa3cf32d16 (FORT TOTTEN) on route f8346fd3-2fb8-4e48-8348-82039c822708 +19:23:55,949 INFO ~ Fixed 26 / 27 stops after first round for trip pattern 4ed7a3ee-1a79-443a-893a-3e8a64bd7394 (ARCHIVES) on route 4a537ff7-3d11-4e37-9535-7de9296bd8a8 +19:23:55,979 INFO ~ Fixed 17 / 20 stops after first round for trip pattern 96ad14f2-5dd4-4305-9566-c0f598a6449d (ANACOSTIA STATION) on route 2a768143-d6a0-4e63-9c7f-e0ef651fa5fc +19:23:56,002 INFO ~ Fixed 14 / 17 stops after first round for trip pattern 965d333c-803e-4b28-acee-79de7a3c3bda (PARK CENTER) on route 43c9e904-6d1e-4d86-8f38-cd04e1729fc0 +19:23:56,087 INFO ~ Fixed 36 / 44 stops after first round for trip pattern 5f7af1b1-9558-4b40-afc7-6730ce34281c (SUITLAND STATION) on route f0647e83-20b7-42a7-a5f8-46429d343d38 +19:23:56,115 INFO ~ Loaded 16000 / 49539 trips +19:23:56,205 INFO ~ Fixed 27 / 36 stops after first round for trip pattern 91d21d45-c787-4ad6-b5d2-977686e470ea (WASHINGTON BUSINESS PARK) on route 8591c000-2379-43a1-a8ae-ffcc23d49467 +19:23:56,291 INFO ~ Fixed 39 / 45 stops after first round for trip pattern 412ac723-a62a-4621-ae92-9f9bb30fe5dd (FEDERAL TRIANGLE) on route 4deeb452-efc7-4a92-a9d7-c1957385dc8e +19:23:56,379 INFO ~ Fixed 33 / 42 stops after first round for trip pattern 0883c153-1fdf-4e13-beef-961b319bf6a1 (SUITLAND STATION) on route b9ed926b-700f-48d2-bfa1-9327158a9be5 +19:23:56,406 INFO ~ Fixed 14 / 15 stops after first round for trip pattern 46f0bfe8-8053-4770-bd45-18a208966c43 (BALLSTON STATION) on route 72bbb68e-f0ec-43f1-9d47-3cbb1d6d5044 +19:23:56,407 WARN ~ Shape dist traveled past end of shape, was 4473.671541854879, expected max 4473.671541854879, clamping +19:23:56,453 INFO ~ Fixed 22 / 30 stops after first round for trip pattern e3a38e18-62c4-448c-bff7-ad0fecfea262 (CULMORE) on route ad03570f-7f5b-4a33-aeab-e94e9ec367cd +19:23:56,563 INFO ~ Fixed 44 / 50 stops after first round for trip pattern 2983870d-e1aa-4457-87f9-5310aa001e11 (FARRAGUT SQUARE) on route 86d571ea-655e-44a7-9d31-fa663060a25a +19:23:56,671 INFO ~ Fixed 16 / 27 stops after first round for trip pattern 673b574a-d663-4344-8a28-10032a9bae06 (SILVER SPRING STATION) on route 02918ea7-0704-4f8b-8aa2-202f971fd2d0 +19:23:56,910 INFO ~ Fixed 74 / 84 stops after first round for trip pattern e2286d19-9db2-4c51-a651-8e8598720ce2 (ROSSLYN) on route 5a3674aa-7107-41dd-bdaf-7c2c19cf154e +19:23:57,062 INFO ~ Fixed 32 / 41 stops after first round for trip pattern 1c26ad6c-e93c-4516-8015-b5dd91350c14 (UNION STATION) on route dabee5cc-3a9a-4760-ac59-37b0f52d6756 +19:23:57,203 INFO ~ Fixed 8 / 11 stops after first round for trip pattern 7dc85161-ddae-4467-bbba-6bed83fd150f (BRANCH AVE STATION) on route 3749ce95-2e73-4bca-947f-8deff993e893 +19:23:57,203 WARN ~ Shape dist traveled past end of shape, was 13288.642282028446, expected max 13288.642282028446, clamping +19:23:57,301 INFO ~ Fixed 35 / 39 stops after first round for trip pattern 9bc81bd3-6ea2-4774-9950-aab25cb8a99d (NAYLOR RD STATION) on route 1fc359e0-ed3f-4633-8669-aed267b3f6c3 +19:23:57,411 INFO ~ Fixed 30 / 38 stops after first round for trip pattern dd641969-3e69-4197-bff6-7a75d20b798b (DUPONT CIRCLE) on route 7aa38cc7-98c4-4b5d-a39b-4f947c09c1c6 +19:23:57,480 INFO ~ Fixed 39 / 40 stops after first round for trip pattern 75a4d713-b9d6-40d0-9b35-1316bc1b15f7 (FARRAGUT SQUARE) on route 514138fc-5fe2-4653-8e91-fe5a119ba57e +19:23:57,607 INFO ~ Fixed 10 / 20 stops after first round for trip pattern a238e218-87c7-4c26-8b3d-9e2ea6e8c64c (PENTAGON) on route 3022ea57-41fd-45e4-b063-064b2074458e +19:23:57,643 INFO ~ Fixed 19 / 25 stops after first round for trip pattern 3e1680f5-f635-41b9-9390-bc0833728476 (METRO CENTER) on route 65c9d20d-691b-411d-81b1-69754c83630b +19:23:57,755 INFO ~ Loaded 17000 / 49539 trips +19:23:57,843 INFO ~ Fixed 23 / 27 stops after first round for trip pattern ec5285b9-afd0-49ef-8b36-dc0d26d24f31 (PENTAGON CITY STATION) on route d6e75512-873e-48b3-9f35-f21347897c2b +19:23:57,844 WARN ~ Shape dist traveled past end of shape, was 9051.467072845457, expected max 9051.467072845457, clamping +19:23:57,865 INFO ~ Fixed 20 / 20 stops after first round for trip pattern bec98128-1cf8-43b4-937e-afc6b2b5e3c7 (GALLERY PLACE) on route c7449c4c-793b-4098-b220-43ca3ca39e7b +19:23:57,915 INFO ~ Fixed 21 / 25 stops after first round for trip pattern 9ef9e802-ce4d-4c12-bbff-92849cfc4012 (MARK CENTER VIA FOXCHASE) on route 5b5834c9-330c-49fc-9be6-a57aa9b5348d +19:23:58,074 INFO ~ Fixed 52 / 68 stops after first round for trip pattern c3ffc393-6e83-4433-83a8-1539db7b7918 (IVY CITY) on route 50c1edad-36dd-4c6c-9609-f75cbc24e66e +19:23:58,165 INFO ~ Fixed 20 / 22 stops after first round for trip pattern 7b78ae7a-3674-4792-ace5-84f8cf52d7b2 (GREENBELT STATION) on route 731ba8e4-d838-43fb-856e-6d60c9f473dc +19:23:58,218 INFO ~ Fixed 26 / 31 stops after first round for trip pattern e6e83ac3-be52-4cf2-ba7a-8536d73ae778 (CAMP SPRINGS) on route 9ae6bf06-cdd6-4556-a3c0-defc7421df55 +19:23:58,251 INFO ~ Fixed 14 / 21 stops after first round for trip pattern 8bd1c397-17cf-4bb2-b3e8-b95242e3458c (MARK CENTER) on route f55bc4d6-9baa-4164-bf24-80613ed9f80e +19:23:58,304 INFO ~ Fixed 11 / 24 stops after first round for trip pattern 4e75a4a7-a558-4302-a9d1-261e2954ac0c (PENTAGON) on route 69a5b631-8444-44f9-8e14-4bb954e52aed +19:23:58,339 INFO ~ Fixed 12 / 14 stops after first round for trip pattern 0ec0489d-c534-42fd-8b6a-ec30c31c2320 (BETHESDA STATION) on route 8245a4f0-29ea-4ef9-bada-187fcf640291 +19:23:58,346 INFO ~ Fixed 15 / 15 stops after first round for trip pattern e0eb0b90-52d1-42c6-8848-ead20f930703 (SHADY GROVE) on route 675d11b4-e400-4c17-9a72-b1b3ace62d85 +19:23:58,482 INFO ~ Fixed 44 / 52 stops after first round for trip pattern 8466fd1c-c9bb-483c-8771-3938237b25d8 (SHADY GROVE STATION) on route e29e6e9d-d533-4dfe-9ab2-e34b7ddb280c +19:23:58,609 INFO ~ Fixed 29 / 36 stops after first round for trip pattern 4786a3ea-7775-46bf-9cd3-61306d18f79a (STADIUM - ARMORY) on route 7aa38cc7-98c4-4b5d-a39b-4f947c09c1c6 +19:23:58,655 INFO ~ Fixed 19 / 19 stops after first round for trip pattern 9b550f20-602b-498e-a1e7-b34c84da8667 (FORT BELVOIR) on route a97fdbeb-13cb-4314-93d3-0608c476d283 +19:23:58,929 INFO ~ Fixed 39 / 49 stops after first round for trip pattern cd959698-9f63-44af-a7fa-9ed7a3737fdf (MCPHERSON SQUARE) on route a055fc6f-a7c4-4856-b754-083a44b83863 +19:23:58,930 WARN ~ Shape dist traveled past end of shape, was 10603.480104112945, expected max 10603.480104112945, clamping +19:23:58,931 WARN ~ Shape dist traveled past end of shape, was 10603.480104112945, expected max 10603.480104112945, clamping +19:23:59,139 INFO ~ Fixed 62 / 68 stops after first round for trip pattern 01358d23-6fe5-462a-8530-fb369508ab3a (UNITED MEDICAL CENTER) on route e2b733bd-b058-4f8c-a816-ff56f35888ec +19:23:59,140 WARN ~ Shape dist traveled past end of shape, was 13032.254195230578, expected max 13032.254195230578, clamping +19:23:59,323 INFO ~ Fixed 57 / 72 stops after first round for trip pattern 1ed6d9c9-925f-484b-9d14-28a69bded436 (TYSONS CORNER) on route a82d1b71-cf03-466d-907b-e5e9bff4f470 +19:23:59,567 INFO ~ Fixed 54 / 67 stops after first round for trip pattern 6ad33adc-cedd-474e-a0a3-bd7f239f9f50 (SHADY GROVE STATION) on route 998f79eb-cb00-461a-8168-ce6425d4e132 +19:23:59,865 INFO ~ Fixed 46 / 54 stops after first round for trip pattern fe815ea4-4b2f-4286-bff8-c2527dceca6b (PENTAGON) on route c5ba57e4-0e39-4a81-84df-4f197db05693 +19:23:59,930 INFO ~ Fixed 26 / 35 stops after first round for trip pattern c02cd919-2656-45c0-9c89-030a50455c76 (SEVEN CORNERS) on route d745711f-c227-410e-9e6a-1739ec14367d +19:23:59,931 WARN ~ Shape dist traveled past end of shape, was 8345.168686762092, expected max 8345.168686762092, clamping +19:24:00,115 INFO ~ Fixed 57 / 67 stops after first round for trip pattern bbc012ea-3c19-475f-b7d1-6bfa31c411c8 (HUNTING POINT) on route 8502291b-5c5d-4f36-9799-dbd2658168f7 +19:24:00,356 INFO ~ Fixed 54 / 62 stops after first round for trip pattern 19b0f58d-2cc5-40fe-8394-8127e23f9874 (ARCHIVES) on route 2910d3ce-dc0d-498c-a692-b6fcd674638b +19:24:00,489 INFO ~ Fixed 29 / 36 stops after first round for trip pattern 6a6010bf-930f-40e0-aec6-a1e5dc4223a2 (NEW CARROLLTON STATION) on route cf392cbe-bf91-409b-87b4-9142344e1c82 +19:24:00,636 INFO ~ Fixed 54 / 61 stops after first round for trip pattern f7e30bdb-32c6-4e8c-a29e-42a616829f8d (ARCHIVES) on route 2910d3ce-dc0d-498c-a692-b6fcd674638b +19:24:00,673 INFO ~ Fixed 20 / 25 stops after first round for trip pattern f21faf12-5374-4c45-9ba1-52adab1d851b (MT PLEASANT VIA ADAMS MORGAN) on route 65c9d20d-691b-411d-81b1-69754c83630b +19:24:00,674 WARN ~ Shape dist traveled past end of shape, was 6365.558181208356, expected max 6365.558181208356, clamping +19:24:00,731 INFO ~ Loaded 18000 / 49539 trips +19:24:00,875 INFO ~ Fixed 28 / 33 stops after first round for trip pattern df88b5b9-ba8f-4000-b3d6-7bcce7b29ba0 (NAYLOR & GOOD HOPE) on route d8e9ced1-7c0d-408a-be69-f51f44ff72b9 +19:24:00,875 WARN ~ Two stops on trip pattern df88b5b9-ba8f-4000-b3d6-7bcce7b29ba0 map to same point on shape +19:24:00,875 WARN ~ Two stops on trip pattern df88b5b9-ba8f-4000-b3d6-7bcce7b29ba0 map to same point on shape +19:24:01,018 INFO ~ Fixed 44 / 56 stops after first round for trip pattern def9ed84-dbcd-4b02-bf7f-1ebe7c9fff49 (SILVER SPRING STATION) on route 9d43c59c-0d0a-4f8f-8821-1cb93964a9b6 +19:24:01,153 INFO ~ Fixed 40 / 48 stops after first round for trip pattern e989c194-cc14-40ff-aac3-ebddb3eec9e5 (KENNEDY CENTER) on route f8346fd3-2fb8-4e48-8348-82039c822708 +19:24:01,190 INFO ~ Fixed 5 / 9 stops after first round for trip pattern ea92b15e-431f-40e0-bf7b-6a80a6653fd1 (NEW CARROLLTON STATION) on route 4db268fd-2c00-410d-9f0b-626716e6e800 +19:24:01,195 WARN ~ Shape dist traveled past end of shape, was 24843.063727905428, expected max 24843.063726142143, clamping +19:24:01,198 WARN ~ Shape dist traveled past end of shape, was 24843.063727905428, expected max 24843.063726142143, clamping +19:24:01,254 INFO ~ Fixed 28 / 32 stops after first round for trip pattern 5a844481-ff49-438b-adf4-04d1e826530a (MINNESOTA AVE STATION) on route 3bb2e2ce-9c7e-402c-ae25-8adb50676ef8 +19:24:01,380 INFO ~ Fixed 51 / 60 stops after first round for trip pattern f23b9a93-ef57-4929-a50e-abaab0fbf810 (NEW CARROLLTON STATION) on route 580c1380-22a3-4e0e-836a-7a50c2d1c6ce +19:24:01,448 INFO ~ Fixed 30 / 36 stops after first round for trip pattern 7201e303-fe49-4b8f-84cf-0f4cb3742120 (ADDISON RD STATION) on route 2ba5f494-d8c6-4a5e-8048-cec924f311f4 +19:24:01,449 WARN ~ Shape dist traveled past end of shape, was 10826.006453438009, expected max 10826.006453438009, clamping +19:24:01,588 INFO ~ Fixed 46 / 57 stops after first round for trip pattern 1e96890f-c8e1-4a90-9162-0644439b5f85 (ELLINGTON BRIDGE) on route a92ae21c-9adf-4fa1-b4ca-141eb353aca7 +19:24:01,620 INFO ~ Fixed 18 / 25 stops after first round for trip pattern bf3135e6-473a-472a-aeff-e02cf7de0c62 (FRANKLIN SQUARE) on route 3399e8df-4f27-44a0-9659-91ebfcdba45a +19:24:01,755 INFO ~ Fixed 25 / 28 stops after first round for trip pattern 1520e581-b9f6-49fd-ac6f-50d9a9f913ec (SOUTH LAUREL PARK & RIDE) on route 008ddbb6-73a5-4bc4-b10e-a4f5f1e4c512 +19:24:01,778 INFO ~ Fixed 8 / 11 stops after first round for trip pattern 29f35a8a-045d-4664-aaa3-49aad4194d12 (GATEWAY CENTER - BOWIE TOWN CENTER) on route 5cbdbfde-3219-4462-bfc4-c5102dbe1c8e +19:24:01,779 WARN ~ Shape dist traveled past end of shape, was 17297.56043744042, expected max 17297.56043744042, clamping +19:24:01,867 INFO ~ Fixed 35 / 42 stops after first round for trip pattern 8da4dd43-462a-47e2-b16d-5ec35b2353f1 (FORESTVILLE) on route 410742bb-7816-4ffa-afd4-836c4192003e +19:24:01,938 INFO ~ Fixed 27 / 32 stops after first round for trip pattern 587602eb-c2c5-4c0c-9b22-388d894ed682 (VIENNA STATION) on route d198f0d0-1941-4835-be05-5bf86af85143 +19:24:01,973 INFO ~ Fixed 27 / 29 stops after first round for trip pattern d996a657-be4a-4a6e-a37a-9876ad07be8a (COAST GUARD HQ VIA ANACOSTIA STATION) on route 58734787-ac66-4da4-bc4b-ee3f043aebbb +19:24:02,125 INFO ~ Fixed 40 / 56 stops after first round for trip pattern ef2e0277-015e-4355-a4ad-c9796f9f24f7 (AVONDALE) on route 495bc5f6-d4fe-4763-9dab-f2fb19b94f96 +19:24:02,151 INFO ~ Fixed 16 / 20 stops after first round for trip pattern 2b097241-16d4-4b16-a191-48227aebe915 (NATIONALS PARK) on route 79d84329-0fae-4821-a978-5ddc0bda267e +19:24:02,237 INFO ~ Fixed 19 / 24 stops after first round for trip pattern 17380d5c-c5a1-426e-822e-04a77147d1da (POTOMAC AVE STATION) on route fdf7cb85-4ebd-4097-933e-bd7e15310a22 +19:24:02,388 INFO ~ Fixed 28 / 40 stops after first round for trip pattern fe76d9e4-1ba1-4ce3-bf7a-3149271b1fd9 (POTOMAC AVE STATION) on route 260cf41a-7a2c-43b6-8d94-c5c7ff6ecc3d +19:24:02,622 INFO ~ Fixed 53 / 70 stops after first round for trip pattern 7adbaedc-76ec-48e8-bff9-fbb590809b1a (CHERRY HILL) on route 919dd3e2-1fbe-40e9-8a4f-27a226ddab30 +19:24:02,787 INFO ~ Fixed 49 / 54 stops after first round for trip pattern 2ef70e2b-923a-4107-a5fb-c1e18224810b (SOUTHERN AVE STATION) on route 166841aa-ec9a-4a76-b048-410e68faf703 +19:24:02,915 INFO ~ Fixed 44 / 53 stops after first round for trip pattern b1632f50-4d35-45b1-9c82-ccda575a33e0 (WHEATON STATION) on route ca0768b2-263b-451e-9af8-707ee1a68a71 +19:24:03,011 INFO ~ Fixed 19 / 19 stops after first round for trip pattern aefa2eb4-f61b-4702-92a7-5e5ea3c1f3f5 (SHADY GROVE) on route 675d11b4-e400-4c17-9a72-b1b3ace62d85 +19:24:03,154 INFO ~ Fixed 54 / 63 stops after first round for trip pattern ec15ee78-2f7b-42cc-8547-5994af5472f0 (ARCHIVES) on route 2910d3ce-dc0d-498c-a692-b6fcd674638b +19:24:03,294 INFO ~ Fixed 45 / 56 stops after first round for trip pattern 7c2bd1d4-27aa-44bd-8f67-c12887ed609b (FORT TOTTEN) on route 659aa27c-6f5f-4608-aa49-5fbcbd841df2 +19:24:03,302 INFO ~ Loaded 19000 / 49539 trips +19:24:03,407 INFO ~ Fixed 18 / 28 stops after first round for trip pattern 66c4bec5-e863-4ed8-9ed7-87ad5e7cf595 (BRANCH AVE STATION) on route 299deeb5-5b28-4394-80d1-6f386ce38cd8 +19:24:03,410 WARN ~ Shape dist traveled past end of shape, was 11287.70953434365, expected max 11287.70953434365, clamping +19:24:03,586 INFO ~ Fixed 52 / 69 stops after first round for trip pattern 3d632f8f-0f5b-4f1f-8951-8663c3d75c32 (SILVER SPRING STATION) on route 998f79eb-cb00-461a-8168-ce6425d4e132 +19:24:03,648 INFO ~ Fixed 20 / 24 stops after first round for trip pattern 89578437-4f7b-4f67-94c5-ca97f3c3ef4c (TAKOMA STATION) on route 8ffb232c-528f-4ea4-a31f-171e597162fc +19:24:03,866 INFO ~ Fixed 48 / 62 stops after first round for trip pattern 765303f9-94a5-4c28-8e63-dbe9c2dc925f (CONGRESS HEIGHTS STATION) on route ca60a6aa-1ff4-423e-b306-f8d057f252c5 +19:24:04,084 INFO ~ Fixed 60 / 72 stops after first round for trip pattern 914102c8-16a2-4789-a0c0-a8979d8fa1ba (SOUTHERN AVE STATION) on route 9ae6bf06-cdd6-4556-a3c0-defc7421df55 +19:24:04,217 INFO ~ Fixed 46 / 50 stops after first round for trip pattern 0d452a33-83e9-4122-9fbd-c67a0f4f9b9f (FARRAGUT SQUARE) on route 112478fe-86cf-4dff-a9b4-035975aa883c +19:24:04,421 INFO ~ Fixed 55 / 61 stops after first round for trip pattern 8b69d76c-fcd6-439d-ba0c-440ba6885896 (KING STREET - OLD TOWN STATION) on route 098fd154-1adc-4e44-b476-adafafc3dab2 +19:24:04,563 INFO ~ Fixed 48 / 53 stops after first round for trip pattern 63743b60-eeb0-4818-bc8f-64e64cc2a98c (WHITE OAK) on route 30a83c83-65fe-47be-8646-47f3578004c9 +19:24:04,897 INFO ~ Fixed 55 / 61 stops after first round for trip pattern 1f01b2a0-d5dd-48d0-b2d5-1387ea5725cd (KING STREET - OLD TOWN STATION) on route 098fd154-1adc-4e44-b476-adafafc3dab2 +19:24:04,950 INFO ~ Fixed 34 / 44 stops after first round for trip pattern d736b3c1-51a9-4990-9af5-d886db8f3f38 (WASHINGTON OVERLOOK) on route e2b733bd-b058-4f8c-a816-ff56f35888ec +19:24:04,950 WARN ~ Two stops on trip pattern d736b3c1-51a9-4990-9af5-d886db8f3f38 map to same point on shape +19:24:04,951 WARN ~ Two stops on trip pattern d736b3c1-51a9-4990-9af5-d886db8f3f38 map to same point on shape +19:24:04,951 WARN ~ Two stops on trip pattern d736b3c1-51a9-4990-9af5-d886db8f3f38 map to same point on shape +19:24:04,951 WARN ~ Two stops on trip pattern d736b3c1-51a9-4990-9af5-d886db8f3f38 map to same point on shape +19:24:05,113 INFO ~ Fixed 48 / 58 stops after first round for trip pattern 3b32bfeb-2191-4e8c-a39d-6c39357474a0 (PENTAGON) on route 3b45ac40-2361-43db-8c36-fb57f8670b38 +19:24:05,126 INFO ~ Fixed 7 / 8 stops after first round for trip pattern 0f9d3048-eebc-430b-8377-42e5e10a9e2a (WOODLEY PARK / ADAMS MORGAN) on route 2132eff7-ea70-404f-be15-4523b797b73a +19:24:05,481 INFO ~ Fixed 55 / 62 stops after first round for trip pattern 5836d00a-dad9-4a3f-bb57-c7404fe8c687 (SOUTHERN AVE STATION) on route 2910d3ce-dc0d-498c-a692-b6fcd674638b +19:24:05,482 WARN ~ Shape dist traveled past end of shape, was 16332.206980110173, expected max 16332.205880631318, clamping +19:24:05,501 INFO ~ Fixed 14 / 15 stops after first round for trip pattern 98af508d-1e45-4d88-8153-9fc054d80dab (LINCOLNIA) on route be3a9254-6865-4845-b39f-bc40ca658cbd +19:24:05,868 INFO ~ Fixed 71 / 85 stops after first round for trip pattern 7904e582-4adf-49cd-ac70-d1ca789357e1 (ADDISON RD STATION) on route 60f41c92-901d-42cf-89b3-c45c68fe485b +19:24:06,126 INFO ~ Fixed 65 / 79 stops after first round for trip pattern d32c3240-6a70-40ef-a4d3-f302ac9e84c7 (COLLEGE PARK STATION) on route a231852c-67bd-4eb0-874d-d6b116737c58 +19:24:06,257 INFO ~ Fixed 40 / 44 stops after first round for trip pattern 0faa6ca2-715e-4e28-a82c-e1303531c656 (EAST FALLS CHURCH STATION) on route be3d2410-3446-44a7-bac2-cb9f3693e3db +19:24:06,258 WARN ~ Two stops on trip pattern 0faa6ca2-715e-4e28-a82c-e1303531c656 map to same point on shape +19:24:06,304 INFO ~ Fixed 23 / 34 stops after first round for trip pattern 792f42d0-3840-41c7-8caf-990aec80529d (WHEATON STATION) on route e29e6e9d-d533-4dfe-9ab2-e34b7ddb280c +19:24:06,313 INFO ~ Fixed 17 / 17 stops after first round for trip pattern 0c0d7ee9-29bb-45e2-aeb9-925772f937e0 (FORT TOTTEN) on route 85eb7683-ac32-49d9-b969-fc8109723f7b +19:24:06,332 INFO ~ Loaded 20000 / 49539 trips +19:24:06,481 INFO ~ Fixed 30 / 37 stops after first round for trip pattern aa3c18ef-f5a4-42dd-a0d0-f77cf5d78308 (GARFIELD - ANACOSTIA LOOP) on route b17551d9-e7c4-4905-8eab-0b3087744de4 +19:24:06,482 WARN ~ Two stops on trip pattern aa3c18ef-f5a4-42dd-a0d0-f77cf5d78308 map to same point on shape +19:24:06,482 WARN ~ Two stops on trip pattern aa3c18ef-f5a4-42dd-a0d0-f77cf5d78308 map to same point on shape +19:24:06,542 INFO ~ Fixed 32 / 39 stops after first round for trip pattern 2e6e316d-85e0-4e94-b1af-ffaacc31215a (HUNTING POINT) on route 8502291b-5c5d-4f36-9799-dbd2658168f7 +19:24:06,639 INFO ~ Fixed 34 / 44 stops after first round for trip pattern a8b31861-aaf2-402f-bdf6-3f1a517b09cd (PENN MAR) on route 260cf41a-7a2c-43b6-8d94-c5c7ff6ecc3d +19:24:06,965 INFO ~ Fixed 81 / 92 stops after first round for trip pattern d0c61f74-51bb-4b1b-908f-48f24ad6136d (NAYLOR RD STATION) on route 87b520e2-5389-4618-915f-bc5a1c4c83ea +19:24:07,189 INFO ~ Fixed 42 / 56 stops after first round for trip pattern f7c7af0b-6e5f-4b07-9a0b-a2920fba8885 (DEANWOOD STATION) on route a97908e6-8312-4006-9fb4-2f979ee12dbf +19:24:07,237 INFO ~ Fixed 16 / 19 stops after first round for trip pattern 49f98974-a951-432c-a7b0-c62fa305f6d5 (MT PLEASANT VIA ADAMS MORGAN) on route 99f5483c-7024-4017-80ae-adb34bdfc32d +19:24:07,237 WARN ~ Shape dist traveled past end of shape, was 5271.072748414232, expected max 5271.072748414232, clamping +19:24:07,387 INFO ~ Fixed 46 / 55 stops after first round for trip pattern c0c7d0d6-5007-4f02-8ab7-80875da4b3d7 (GREENBELT STATION) on route ba13de1b-9e70-4382-9373-dc8cc61cccb4 +19:24:07,415 INFO ~ Fixed 13 / 18 stops after first round for trip pattern 04294c0e-b8ec-45eb-8ce8-e3cd04ce9c8a (NEW CARROLLTON STATION) on route 56db33d3-4290-4545-b21b-1bdf3f2f7937 +19:24:07,465 INFO ~ Fixed 33 / 38 stops after first round for trip pattern 677534e6-c899-4cd3-b717-37b7cb35264e (NAYLOR RD STATION) on route 87b520e2-5389-4618-915f-bc5a1c4c83ea +19:24:07,693 INFO ~ Fixed 55 / 71 stops after first round for trip pattern d146b9c3-5629-44b2-bfe9-f99b406a4177 (SILVER SPRING STATION) on route 9d43c59c-0d0a-4f8f-8821-1cb93964a9b6 +19:24:07,931 INFO ~ Fixed 58 / 66 stops after first round for trip pattern cf944eae-31e8-41d2-b587-ec8be76782b1 (GEORGE MASON UNIVERSITY) on route b1ff195b-ce70-4332-b70a-4c4f924ad206 +19:24:07,963 INFO ~ Fixed 14 / 15 stops after first round for trip pattern c9d3c7a2-3dc3-4405-9d34-f747476643bd (BARCROFT) on route 72bbb68e-f0ec-43f1-9d47-3cbb1d6d5044 +19:24:08,001 INFO ~ Fixed 26 / 28 stops after first round for trip pattern 377d5b65-2e1c-47fb-b962-7571bd623c46 (SILVER SPRING STATION) on route 5844b309-3754-4210-bacd-7324283a47f5 +19:24:08,059 INFO ~ Fixed 28 / 32 stops after first round for trip pattern 705eee60-c8e1-4cda-a69d-2517688a14fa (PENTAGON) on route 1fe187b4-98d6-4f56-8179-bd5da929aeb9 +19:24:08,179 INFO ~ Fixed 41 / 56 stops after first round for trip pattern c02f2ded-524f-4657-b2f3-de58d5a2b3f3 (GEORGETOWN) on route 7dac992e-f54b-40c6-86fe-0f57adf5d3f7 +19:24:08,216 INFO ~ Fixed 10 / 21 stops after first round for trip pattern 4f05b500-9ccf-46b4-8696-3a7cfc537d6e (LANDMARK) on route 3022ea57-41fd-45e4-b063-064b2074458e +19:24:09,078 INFO ~ Fixed 7 / 88 stops after first round for trip pattern 56eee63e-c9af-42bb-baa1-175c0be44bc6 (MAYFAIR-MARSHALL HTS-LINCOLN HTS) on route 9ef1e536-7ddb-46ce-81ec-6fcecc3c2d43 +19:24:09,142 WARN ~ Shape dist traveled past end of shape, was 46752.963957963686, expected max 46752.963957963686, clamping +19:24:09,144 WARN ~ Shape dist traveled past end of shape, was 46752.963957963686, expected max 46752.963957963686, clamping +19:24:09,145 WARN ~ Shape dist traveled past end of shape, was 46752.963957963686, expected max 46752.963957963686, clamping +19:24:09,147 WARN ~ Shape dist traveled past end of shape, was 46752.963957963686, expected max 46752.963957963686, clamping +19:24:09,148 WARN ~ Shape dist traveled past end of shape, was 46752.963957963686, expected max 46752.963957963686, clamping +19:24:09,149 WARN ~ Shape dist traveled past end of shape, was 46752.963957963686, expected max 46752.963957963686, clamping +19:24:09,151 WARN ~ Shape dist traveled past end of shape, was 46752.963957963686, expected max 46752.963957963686, clamping +19:24:09,152 WARN ~ Shape dist traveled past end of shape, was 46752.963957963686, expected max 46752.963957963686, clamping +19:24:09,342 INFO ~ Fixed 32 / 41 stops after first round for trip pattern 09ca4ce7-4ec8-4e8e-93d8-c73604d36d75 (TENLEYTOWN STATION) on route 27775e9f-d642-473e-aaba-197e85370831 +19:24:09,439 INFO ~ Fixed 18 / 20 stops after first round for trip pattern 7d577d65-efd2-4071-a18d-39697e085615 (LAUREL) on route 1f05e5a6-9758-4d53-af38-3902b65ff3f8 +19:24:09,858 INFO ~ Fixed 82 / 98 stops after first round for trip pattern 4f15108e-8ca2-4af6-baa5-75beb53cda03 (SUITLAND STATION) on route d0547e0f-e3b1-4c3e-8b34-0ff080071666 +19:24:10,045 INFO ~ Fixed 57 / 63 stops after first round for trip pattern 7172dd3c-1faf-4f10-88dc-ad4413fc0990 (PENTAGON) on route f13dcd46-6530-4cca-8214-262d14766e10 +19:24:10,105 INFO ~ Fixed 35 / 39 stops after first round for trip pattern a0b4bbea-d215-4091-b118-c0db0c8eea3d (ANACOSTIA STATION) on route 2a768143-d6a0-4e63-9c7f-e0ef651fa5fc +19:24:10,309 INFO ~ Fixed 50 / 64 stops after first round for trip pattern 77ba46eb-df8c-4216-a989-2e16212f3387 (GREENCASTLE PARK & RIDE) on route c6d0a86c-47d0-4320-b863-fe033b532537 +19:24:10,359 INFO ~ Fixed 24 / 27 stops after first round for trip pattern f8ae11a7-2b0c-4674-849b-5f4d99c2baee (RHODE ISLAND AVE STATION) on route 6b821979-3a52-4013-8688-67bb7238c4bb +19:24:10,438 INFO ~ Fixed 31 / 41 stops after first round for trip pattern 22703b51-de3c-45a3-b532-e544cd94b0e9 (LARGO TOWN CENTER STATION) on route ff2c741b-372b-4805-ba9d-5c3f0471c36a +19:24:10,509 INFO ~ Fixed 31 / 44 stops after first round for trip pattern 6f2efb26-a4a4-4f90-9c87-8ae95af6a843 (DUPONT CIRCLE) on route 7dac992e-f54b-40c6-86fe-0f57adf5d3f7 +19:24:10,523 INFO ~ Fixed 28 / 28 stops after first round for trip pattern f5eca842-57e0-4996-b48d-b29049ce6f44 (LARGO TOWN CENTER) on route 363dc064-e6f1-4b42-92e3-d475f4e806d0 +19:24:10,614 INFO ~ Loaded 21000 / 49539 trips +19:24:10,978 INFO ~ Fixed 26 / 37 stops after first round for trip pattern 3bd2de1e-d4d3-40d6-bf37-f5308784bf87 (BALLSTON) on route a81ee200-dd7f-4ae7-b117-4fa12467a04b +19:24:11,068 INFO ~ Fixed 30 / 42 stops after first round for trip pattern 62325bdb-6f4b-4a05-99e1-64fc872e6074 (SEVEN CORNERS) on route 88a364c3-dc11-4091-b8bb-336c0e2519f7 +19:24:11,070 WARN ~ Shape dist traveled past end of shape, was 12524.770758102326, expected max 12524.770758102326, clamping +19:24:11,486 INFO ~ Fixed 68 / 87 stops after first round for trip pattern a886bcb9-3915-4c1d-af28-7c38f05cd88f (POINTER RIDGE) on route 60f41c92-901d-42cf-89b3-c45c68fe485b +19:24:11,729 INFO ~ Fixed 59 / 75 stops after first round for trip pattern 05d1a893-4c3b-447b-95d2-9f9abb1fc799 (SOUTHERN AVE STATION) on route 2625d9e9-2422-4671-a9cc-f0fc525798dd +19:24:11,812 INFO ~ Fixed 31 / 42 stops after first round for trip pattern 8085811a-b1d2-46e9-b09a-82bb3d81ab53 (AVONDALE) on route 01751347-0c31-40cf-b5a6-d27a69b18650 +19:24:12,124 INFO ~ Fixed 39 / 59 stops after first round for trip pattern c967222d-1cf7-440c-a6a3-9b6694af3ca8 (DEANWOOD STATION) on route a97908e6-8312-4006-9fb4-2f979ee12dbf +19:24:12,228 INFO ~ Fixed 39 / 47 stops after first round for trip pattern 7a84aca9-abbb-4641-92aa-4a7e3fc38e3a (FORT TOTTEN) on route 30a83c83-65fe-47be-8646-47f3578004c9 +19:24:12,523 INFO ~ Fixed 36 / 50 stops after first round for trip pattern 17a0c33b-f689-4b4d-a02b-1ae699c98b18 (BRIGGS CHANEY PARK & RIDE) on route c6d0a86c-47d0-4320-b863-fe033b532537 +19:24:12,525 WARN ~ Shape dist traveled past end of shape, was 18269.646629485334, expected max 18269.646629485334, clamping +19:24:12,525 WARN ~ Shape dist traveled past end of shape, was 18269.646629485334, expected max 18269.646629485334, clamping +19:24:12,526 WARN ~ Shape dist traveled past end of shape, was 18269.646629485334, expected max 18269.646629485334, clamping +19:24:12,526 WARN ~ Shape dist traveled past end of shape, was 18269.646629485334, expected max 18269.646629485334, clamping +19:24:12,526 WARN ~ Shape dist traveled past end of shape, was 18269.646629485334, expected max 18269.646629485334, clamping +19:24:12,659 INFO ~ Loaded 22000 / 49539 trips +19:24:12,731 INFO ~ Fixed 28 / 40 stops after first round for trip pattern 7f144b4d-7700-4268-a538-f015a9e6b7a2 (14TH & COLORADO) on route 64c68e09-196c-4802-a5aa-96fed484b3fe +19:24:12,835 INFO ~ Fixed 3 / 3 stops after first round for trip pattern 79eacc53-6465-4208-8f25-1b076cbf57e0 (FORT TOTTEN) on route 675d11b4-e400-4c17-9a72-b1b3ace62d85 +19:24:12,839 INFO ~ Fixed 5 / 6 stops after first round for trip pattern 3ab6cbad-87bf-47f7-af24-f5424c390ad5 (PENTAGON) on route 7956fd32-3fd9-41dd-a153-9cf2af187977 +19:24:12,861 INFO ~ Fixed 19 / 22 stops after first round for trip pattern e2cbd353-66fb-4705-ab65-3d3e9eeedccc (LANDOVER STATION) on route eac6c002-920d-446f-96f7-72a8151901db +19:24:12,861 WARN ~ Shape dist traveled past end of shape, was 7081.021744138629, expected max 7081.021744138629, clamping +19:24:13,213 INFO ~ Fixed 79 / 90 stops after first round for trip pattern ef6ae617-0687-47a2-a4a7-6152e59363bb (SOUTHERN AVE STATION) on route d0547e0f-e3b1-4c3e-8b34-0ff080071666 +19:24:13,232 INFO ~ Fixed 9 / 15 stops after first round for trip pattern 9e282cc4-9cc3-4a8d-9bbf-f31b20665c0e (PLUMMER ELEMENTARY SCHOOL) on route 9ef1e536-7ddb-46ce-81ec-6fcecc3c2d43 +19:24:13,233 WARN ~ Two stops on trip pattern 9e282cc4-9cc3-4a8d-9bbf-f31b20665c0e map to same point on shape +19:24:13,330 INFO ~ Fixed 45 / 50 stops after first round for trip pattern 379ffa56-89f7-42be-9bcb-4cd66e81f9a2 (EAST FALLS CHURCH STATION) on route 8f4a9475-3ff9-4508-8a08-96765db26bff +19:24:13,541 INFO ~ Fixed 64 / 80 stops after first round for trip pattern bb7c8a67-31c8-4903-953f-0f98f2d65773 (WASHINGTON OVERLOOK) on route e2b733bd-b058-4f8c-a816-ff56f35888ec +19:24:13,542 WARN ~ Two stops on trip pattern bb7c8a67-31c8-4903-953f-0f98f2d65773 map to same point on shape +19:24:13,542 WARN ~ Two stops on trip pattern bb7c8a67-31c8-4903-953f-0f98f2d65773 map to same point on shape +19:24:13,543 WARN ~ Two stops on trip pattern bb7c8a67-31c8-4903-953f-0f98f2d65773 map to same point on shape +19:24:13,543 WARN ~ Two stops on trip pattern bb7c8a67-31c8-4903-953f-0f98f2d65773 map to same point on shape +19:24:13,581 INFO ~ Fixed 3 / 3 stops after first round for trip pattern 1c4112ad-b737-4c58-a1b8-bad28c912a8c (CLINTON PARK & RIDE) on route 40dc7b27-c603-4d55-86af-268854fbb1b9 +19:24:13,628 INFO ~ Fixed 29 / 33 stops after first round for trip pattern 6826a66a-9268-4fd6-a8c0-d011388a62fb (ANNANDALE) on route ba56f8fe-ca6b-487a-97bb-d7f58c8216ae +19:24:13,726 INFO ~ Fixed 29 / 41 stops after first round for trip pattern 01a48900-8e18-4cf1-aac0-05bd59026340 (POTOMAC PARK) on route 06cde043-db23-4e83-b13f-c36615273979 +19:24:13,803 INFO ~ Fixed 20 / 34 stops after first round for trip pattern a06f6d23-bf66-4902-9a88-4edf118eb79c (TWINBROOK STATION) on route d3a223e2-28ab-47f0-a4ff-88b303ce425a +19:24:13,873 INFO ~ Fixed 30 / 34 stops after first round for trip pattern 5bb9f4af-8ed8-4419-8780-c1b694c98f06 (COLUMBIA HEIGHTS WEST) on route e0698c41-3475-4c41-86a9-e656df0a1023 +19:24:14,074 INFO ~ Fixed 57 / 65 stops after first round for trip pattern 6769dc86-3bba-439b-884d-ad7e4d7eefb6 (NEW CARROLLTON STATION) on route 6d4219d7-518f-4ee0-8d70-a59552d3b364 +19:24:14,075 WARN ~ Two stops on trip pattern 6769dc86-3bba-439b-884d-ad7e4d7eefb6 map to same point on shape +19:24:14,075 WARN ~ Two stops on trip pattern 6769dc86-3bba-439b-884d-ad7e4d7eefb6 map to same point on shape +19:24:14,276 INFO ~ Fixed 57 / 65 stops after first round for trip pattern c2b6ccb7-b7c4-4faa-bb2d-8d57f6f80456 (KENNEDY CENTER) on route f8346fd3-2fb8-4e48-8348-82039c822708 +19:24:14,417 INFO ~ Fixed 13 / 17 stops after first round for trip pattern ff6f89e1-fec2-46d7-ac96-c2af2232df7d (SILVER SPRING STATION) on route 6cd1d938-a1fe-43e1-a664-6af55927003c +19:24:14,418 WARN ~ Shape dist traveled past end of shape, was 12405.047050370395, expected max 12405.047050370395, clamping +19:24:14,418 WARN ~ Shape dist traveled past end of shape, was 12405.047050370395, expected max 12405.047050370395, clamping +19:24:14,509 INFO ~ Fixed 28 / 41 stops after first round for trip pattern 521bd507-3752-49c8-a4fa-92808369941b (POTOMAC PARK) on route 06cde043-db23-4e83-b13f-c36615273979 +19:24:14,737 INFO ~ Fixed 63 / 77 stops after first round for trip pattern ea8eca72-b1fc-4043-8882-fff9d2441c65 (COLLEGE PARK STATION) on route a231852c-67bd-4eb0-874d-d6b116737c58 +19:24:14,865 INFO ~ Fixed 38 / 47 stops after first round for trip pattern 147a7d85-4f7f-4e19-be49-470bd8a9fe99 (ADDISON RD STATION) on route 8648a11b-c3f6-4b94-bb82-ead2f4ba5372 +19:24:14,964 INFO ~ Fixed 40 / 55 stops after first round for trip pattern 98fbc8fe-acd7-472f-858f-b0fc91ca3346 (SILVER SPRING STATION) on route 276b52a5-4e2d-4c24-b0cd-bef9226b9dfb +19:24:15,116 INFO ~ Fixed 36 / 41 stops after first round for trip pattern 7d0e0dcb-515c-4063-b2a8-2f5c0eee7b06 (CONVENTION CENTER) on route 7872a5fa-09ab-45d9-a140-f6c74e80eba2 +19:24:15,137 INFO ~ Fixed 8 / 10 stops after first round for trip pattern 76ad4dd0-a50c-420e-a19e-a87978ba4427 (N V C C - ALEXANDRIA) on route b251ea97-f00a-407b-bb9e-4a78ed238086 +19:24:15,202 INFO ~ Fixed 32 / 40 stops after first round for trip pattern 1811028f-2668-4ec8-b423-19868b16dcfe (MT PLEASANT) on route 1263c8ee-2585-4e34-a00b-d13d48835036 +19:24:15,330 INFO ~ Fixed 23 / 25 stops after first round for trip pattern 60941f88-7de2-4df3-8d90-e09398950e42 (NAVY YARD - 8TH & M SE) on route ca60a6aa-1ff4-423e-b306-f8d057f252c5 +19:24:15,485 INFO ~ Fixed 48 / 58 stops after first round for trip pattern 4a5abe66-421f-453e-a59f-d1aa0ee70bee (GREENBELT STATION) on route a97908e6-8312-4006-9fb4-2f979ee12dbf +19:24:15,645 INFO ~ Fixed 43 / 49 stops after first round for trip pattern d2b91cd1-455f-4264-b826-bf6021ab210b (CAPITOL HEIGHTS STATION) on route a92ae21c-9adf-4fa1-b4ca-141eb353aca7 +19:24:15,658 INFO ~ Fixed 7 / 9 stops after first round for trip pattern b4ae88af-808b-43bd-9e32-f5746349e13b (RIGGS PARK) on route 71b9fa76-0942-4e55-b77e-86222de33e24 +19:24:15,658 WARN ~ Shape dist traveled past end of shape, was 4836.188934568661, expected max 4836.188934568661, clamping +19:24:15,659 WARN ~ Shape dist traveled past end of shape, was 4836.188934568661, expected max 4836.188934568661, clamping +19:24:15,674 INFO ~ Fixed 4 / 7 stops after first round for trip pattern 9632584c-1f4c-4d93-972a-649312c85ce0 (PENTAGON) on route 93e4fbd3-67a8-45c8-bece-43ddd9c7cc1f +19:24:15,674 WARN ~ Shape dist traveled past end of shape, was 9955.0968221976, expected max 9955.0968221976, clamping +19:24:15,721 INFO ~ Fixed 26 / 29 stops after first round for trip pattern 22046fad-c4c5-48a4-baf6-01ca00d8619b (LARGO TOWN CENTER STATION) on route ff2c741b-372b-4805-ba9d-5c3f0471c36a +19:24:15,992 INFO ~ Fixed 72 / 76 stops after first round for trip pattern e36c4dde-f316-4846-b871-572dd7c15042 (FARRAGUT SQUARE) on route 112478fe-86cf-4dff-a9b4-035975aa883c +19:24:16,037 INFO ~ Fixed 27 / 30 stops after first round for trip pattern f9b8dea6-6c69-4077-b7e8-2bc595ca3090 (LIVINGSTON VIA WHEELER RD) on route 59a54181-4223-4ae5-b489-2cf943e25b5c +19:24:16,085 INFO ~ Fixed 27 / 30 stops after first round for trip pattern e3a55497-57b7-4655-9c71-eb0ab5adabf9 (LIVINGSTON VIA SOUTH CAPITOL) on route 9ea746bb-0b09-4f71-84e5-15d454d0539a +19:24:16,096 INFO ~ Loaded 23000 / 49539 trips +19:24:16,331 INFO ~ Fixed 50 / 62 stops after first round for trip pattern ea72e04a-443d-4bb3-8bd1-ff21ea8ea216 (FRIENDSHIP HEIGHTS) on route b81e25f7-593e-44eb-91f7-1a36c0a9f156 +19:24:16,460 INFO ~ Fixed 28 / 35 stops after first round for trip pattern 8cfb7e29-e8ff-4450-abce-49ae48a4e9c7 (STADIUM - ARMORY) on route 7aa38cc7-98c4-4b5d-a39b-4f947c09c1c6 +19:24:16,486 INFO ~ Fixed 19 / 22 stops after first round for trip pattern 66e6f766-fd56-4de3-bae2-d4d80a7863f8 (FORT LINCOLN) on route 6b821979-3a52-4013-8688-67bb7238c4bb +19:24:16,685 INFO ~ Fixed 32 / 43 stops after first round for trip pattern 5a6dd873-70d3-40d7-b1ac-f7ba83b7cb5e (FRANCONIA - SPRINGFIELD) on route 52095a06-47c5-46d8-91de-3b6119d2469e +19:24:16,911 INFO ~ Fixed 28 / 29 stops after first round for trip pattern 07bb695a-0daf-42a1-8960-780b72c2ae6c (BALLSTON) on route a5b513fd-d5de-41fa-90c1-a27e84948367 +19:24:16,989 INFO ~ Fixed 30 / 41 stops after first round for trip pattern 9925f663-878c-440a-8d74-2ebdae175698 (TENLEYTOWN STATION) on route 4599756f-bb6a-4622-a4af-0874c52c611d +19:24:17,059 INFO ~ Fixed 25 / 32 stops after first round for trip pattern a3d82142-640d-4ede-addc-8430935c680b (FARRAGUT SQUARE) on route 7aa38cc7-98c4-4b5d-a39b-4f947c09c1c6 +19:24:17,099 INFO ~ Fixed 20 / 30 stops after first round for trip pattern 215bf4f4-c1e0-41d2-ad75-dd25b85c512b (14TH & COLORADO) on route a055fc6f-a7c4-4856-b754-083a44b83863 +19:24:17,202 INFO ~ Fixed 35 / 42 stops after first round for trip pattern 49f9085e-f850-4b1c-a9b4-722a238f6d83 (SOUTH LAUREL PARK & RIDE) on route 7877c70b-5e26-4281-8cb7-76a85f186f4c +19:24:17,203 WARN ~ Shape dist traveled past end of shape, was 25565.460471566537, expected max 25565.460471566537, clamping +19:24:17,213 INFO ~ Fixed 6 / 7 stops after first round for trip pattern 66479e53-74ed-4472-bef1-1beced0ff8e6 (WOODLEY PARK / ADAMS MORGAN) on route 2132eff7-ea70-404f-be15-4523b797b73a +19:24:17,281 INFO ~ Fixed 24 / 24 stops after first round for trip pattern 11da467a-d0a3-42d9-aa8f-fc8fb2fb5cac (ANACOSTIA STATION) on route 9ea746bb-0b09-4f71-84e5-15d454d0539a +19:24:17,554 INFO ~ Fixed 50 / 71 stops after first round for trip pattern df6cfcb5-ed54-436d-a966-df340c5460c7 (FRIENDSHIP HEIGHTS) on route 7868ee47-1e7d-44ab-92ba-fc6237b37221 +19:24:17,846 INFO ~ Fixed 54 / 66 stops after first round for trip pattern d8eaac60-9dba-4cfa-899b-3b173a4a588d (BOWIE PARK & RIDE) on route d69305d0-3a20-40f3-8d4d-99e3251ce2d0 +19:24:18,018 INFO ~ Fixed 62 / 68 stops after first round for trip pattern f58d3878-4705-4ed1-82e1-d0770f1ecc49 (SOUTHERN AVE STATION) on route e2b733bd-b058-4f8c-a816-ff56f35888ec +19:24:18,019 WARN ~ Shape dist traveled past end of shape, was 13942.607981254027, expected max 13942.607981254027, clamping +19:24:18,281 INFO ~ Fixed 59 / 67 stops after first round for trip pattern c7ae0c98-856a-4e05-b2cf-27044465bb9c (BALLSTON) on route fa179c2a-b025-41ae-94e8-b3dc257a17e7 +19:24:18,505 INFO ~ Fixed 63 / 74 stops after first round for trip pattern 09ab3d5f-5026-4eef-8c27-f81d26bf6ba2 (SOUTHERN AVE STATION) on route a663565d-e18f-4f55-b9fb-32c688ee6fe7 +19:24:18,687 INFO ~ Fixed 39 / 43 stops after first round for trip pattern 25993315-7bfe-4a82-972d-1f0acaf821e3 (ANACOSTIA STATION) on route 58d609ad-3e9b-4025-b9da-335006b884a4 +19:24:18,783 INFO ~ Fixed 44 / 48 stops after first round for trip pattern 0176fdca-0400-4bd3-a60d-e815ee798c26 (MCPHERSON SQUARE) on route f8346fd3-2fb8-4e48-8348-82039c822708 +19:24:18,864 INFO ~ Fixed 37 / 46 stops after first round for trip pattern d0690a71-ebc3-4f8d-a969-9a0b36cf93ab (ELLINGTON BRIDGE) on route a102eaea-3b30-4c77-b428-2e8709c2ed8c +19:24:18,895 INFO ~ Loaded 24000 / 49539 trips +19:24:19,014 INFO ~ Fixed 11 / 12 stops after first round for trip pattern 64a8bfae-66f0-4843-814d-1ca03c8ca20e (COAST GUARD HQ VIA ANACOSTIA STATION) on route 32150f09-c8d4-4051-98bd-0c7baeac4def +19:24:19,047 INFO ~ Fixed 22 / 26 stops after first round for trip pattern 74c5c64a-296f-4a3a-aeb0-0779985f111f (MEDICAL CENTER STATION) on route 3815197b-e013-4687-b97e-6d0a3bf80478 +19:24:19,330 INFO ~ Fixed 63 / 74 stops after first round for trip pattern e9674a09-2afc-43a6-bedc-591ec75b0a15 (POINTER RIDGE) on route 65ddba12-4924-43ff-aa16-4286a4893474 +19:24:19,440 INFO ~ Fixed 35 / 47 stops after first round for trip pattern b77e16f2-31e2-4215-bdf7-20334c9ad962 (SILVER SPRING STATION) on route c6d0a86c-47d0-4320-b863-fe033b532537 +19:24:19,461 INFO ~ Fixed 9 / 11 stops after first round for trip pattern 74c9ac3d-ed9c-4ef6-a1ae-135ebc5e37bf (N V C C - ALEXANDRIA) on route b251ea97-f00a-407b-bb9e-4a78ed238086 +19:24:19,461 WARN ~ Two stops on trip pattern 74c9ac3d-ed9c-4ef6-a1ae-135ebc5e37bf map to same point on shape +19:24:19,591 INFO ~ Fixed 45 / 51 stops after first round for trip pattern f2cdd563-dc3d-4de3-a13c-44eda6775538 (KING STREET - OLD TOWN STATION) on route fd94d309-87ba-47c2-a7f1-649be2e841fe +19:24:19,703 INFO ~ Fixed 38 / 40 stops after first round for trip pattern 8d5ecf98-3be4-4cfd-ba85-545ca0061b07 (PENTAGON) on route 56bdb1c4-1ccd-4ef4-840e-c93453c6ad86 +19:24:19,751 INFO ~ Fixed 22 / 27 stops after first round for trip pattern eaca95cf-9aa0-4399-99e5-7d6fdecf0f69 (L'ENFANT PLAZA STATION) on route 64c68e09-196c-4802-a5aa-96fed484b3fe +19:24:19,992 INFO ~ Fixed 59 / 75 stops after first round for trip pattern 6b8d12e2-3ce5-46a4-9687-937bd0ca0b77 (MONTGOMERY MEDICAL CENTER) on route 9695dea6-79ed-4c77-bd04-b67404a87814 +19:24:20,045 INFO ~ Fixed 14 / 17 stops after first round for trip pattern c03c2147-8d59-43aa-b645-9c605e4eff31 (TYSONS CORNER) on route f55bc4d6-9baa-4164-bf24-80613ed9f80e +19:24:20,169 INFO ~ Fixed 49 / 56 stops after first round for trip pattern 19b2997a-d89b-444e-844e-c558a68d6fa8 (LIVINGSTON VIA WHEELER RD) on route c96fd764-de91-4074-8478-c74959370f22 +19:24:20,458 INFO ~ Fixed 67 / 73 stops after first round for trip pattern 07a11ec0-e0d0-4c5b-81e3-1ed5ba6593ca (ADDISON RD STATION) on route 65ddba12-4924-43ff-aa16-4286a4893474 +19:24:20,472 INFO ~ Fixed 2 / 2 stops after first round for trip pattern 535f976a-e414-4d3d-8f04-3b7c8c24fc33 (BRANCH AVE STATION) on route 40dc7b27-c603-4d55-86af-268854fbb1b9 +19:24:20,510 INFO ~ Fixed 30 / 35 stops after first round for trip pattern 71d1d147-b3c7-43b1-bd46-7c19b01fc9dc (FOGGY BOTTOM STATION) on route d4b15eb8-130e-47f1-b8cf-3877f1919844 +19:24:20,775 INFO ~ Fixed 49 / 70 stops after first round for trip pattern c0beb85b-59ed-4093-a68c-72e68c081955 (FRIENDSHIP HEIGHTS STATION) on route 7868ee47-1e7d-44ab-92ba-fc6237b37221 +19:24:20,858 INFO ~ Fixed 22 / 26 stops after first round for trip pattern 2c243db1-c439-4fb9-a1ee-7ad59e7bcc13 (WHITE FLINT STATION) on route a231852c-67bd-4eb0-874d-d6b116737c58 +19:24:20,875 INFO ~ Fixed 14 / 17 stops after first round for trip pattern 803c626d-ed62-4b92-bc17-6a347f6da875 (ROSSLYN) on route 4f26c4a6-73d9-4473-ab49-1cb3a686ce81 +19:24:21,080 INFO ~ Fixed 59 / 73 stops after first round for trip pattern e5933a55-a851-4a47-bd4a-d8d876fce56d (TAKOMA STATION) on route 324353ff-d624-45a2-a0fc-dfa4ce518ca8 +19:24:21,142 INFO ~ Fixed 28 / 29 stops after first round for trip pattern cee2d1bc-4379-4ba0-be38-90a880a73c69 (ANACOSTIA STATION) on route 6f30b764-60b4-48e1-9ead-8e3a8a246b78 +19:24:21,242 INFO ~ Fixed 21 / 25 stops after first round for trip pattern 15522f8d-8afa-4571-bcc7-46d96c1bd3ab (SILVER SPRING STATION) on route c9300709-f7d0-47f2-b373-4d092307de11 +19:24:21,321 INFO ~ Fixed 28 / 38 stops after first round for trip pattern a2bfdbc6-b5a5-433d-956e-cdcad4b73447 (ADELPHI) on route 657a4f65-9c6b-4998-a126-d8b3999e9253 +19:24:21,322 WARN ~ Shape dist traveled past end of shape, was 11685.024999894173, expected max 11685.024999894173, clamping +19:24:21,323 WARN ~ Shape dist traveled past end of shape, was 11685.024999894173, expected max 11685.024999894173, clamping +19:24:21,376 INFO ~ Fixed 28 / 32 stops after first round for trip pattern e034d395-21e5-4109-b1b6-96e3e2af527f (COLUMBIA HEIGHTS WEST) on route d6e75512-873e-48b3-9f35-f21347897c2b +19:24:21,533 INFO ~ Fixed 8 / 11 stops after first round for trip pattern 8cefa9f2-2a26-4ee8-9768-0546e5a0c5e7 (SILVER SPRING STATION) on route 2f8b2ed6-7d7c-4aa6-8fb1-7b38c0e0af75 +19:24:21,813 INFO ~ Fixed 71 / 82 stops after first round for trip pattern 485e3cc3-e89e-49b9-8d5b-f3025f3920ee (OLNEY) on route fb407bda-3288-4ad8-875e-4163cc1a8c0b +19:24:21,814 WARN ~ Two stops on trip pattern 485e3cc3-e89e-49b9-8d5b-f3025f3920ee map to same point on shape +19:24:21,815 WARN ~ Shape dist traveled past end of shape, was 29090.403594350875, expected max 29090.403594350875, clamping +19:24:21,876 INFO ~ Fixed 23 / 28 stops after first round for trip pattern d0f25feb-37c5-43a6-bd1c-595714f94e39 (P G PLAZA STATION) on route 008d6276-253b-4ebd-8848-d66d96aff1bb +19:24:21,877 WARN ~ Shape dist traveled past end of shape, was 15003.282992979612, expected max 15003.281378058033, clamping +19:24:22,144 INFO ~ Fixed 67 / 78 stops after first round for trip pattern 7088844b-481b-48be-b135-1b101826ad21 (CAPITOL HEIGHTS STATION) on route a92ae21c-9adf-4fa1-b4ca-141eb353aca7 +19:24:22,217 INFO ~ Loaded 25000 / 49539 trips +19:24:22,292 INFO ~ Fixed 26 / 26 stops after first round for trip pattern aa5566ae-b906-4beb-8e0c-c66d1f8b9eb7 (FORT DRUM) on route 58734787-ac66-4da4-bc4b-ee3f043aebbb +19:24:22,538 INFO ~ Fixed 52 / 65 stops after first round for trip pattern 59f085ec-b540-4e83-a076-793c8802530d (BOWIE PARK & RIDE) on route d69305d0-3a20-40f3-8d4d-99e3251ce2d0 +19:24:22,566 INFO ~ Fixed 28 / 28 stops after first round for trip pattern 4ce44f08-75d3-4f05-94dc-3c3cf414df9b (NEW CARROLLTON) on route 363dc064-e6f1-4b42-92e3-d475f4e806d0 +19:24:22,991 INFO ~ Fixed 60 / 74 stops after first round for trip pattern 291b289a-f110-49fc-b012-cfdef9b4a1be (LANGLEY PARK) on route f3e2bc57-33d3-4ae6-b7d2-ddb01ebdfd5e +19:24:23,138 INFO ~ Fixed 20 / 23 stops after first round for trip pattern 6ca32957-69ae-447e-953f-dd808327cd3c (UNION STATION) on route aea7f134-2589-49cc-adc6-319ed9f3524e +19:24:23,355 INFO ~ Fixed 59 / 65 stops after first round for trip pattern 96a5515f-8133-4404-81fa-6a3ff296ec06 (GREENBELT STATION) on route d4834b02-dbe9-4b55-9e7c-8ff78362f23c +19:24:23,476 INFO ~ Fixed 42 / 44 stops after first round for trip pattern 19b8f9dc-8b34-4066-96d9-3572a06c4cde (ARCHIVES) on route f21856a0-725d-4a16-bd92-1813334ffbe5 +19:24:23,535 INFO ~ Fixed 33 / 39 stops after first round for trip pattern c87b1cff-f557-492c-9714-3af4693b1762 (PENDLETON & COLUMBUS) on route df81eb66-647b-4d15-ac69-9cb5be28dc04 +19:24:23,850 INFO ~ Fixed 64 / 83 stops after first round for trip pattern 7bacd009-293d-495e-b1dc-df64c5282562 (CAPITAL PLAZA) on route 0232e955-5abd-4f51-a0f3-f74fa0382b17 +19:24:23,876 INFO ~ Fixed 2 / 2 stops after first round for trip pattern a1503713-70c1-4ce4-94d6-411b87410c98 (SPRINGFIELD) on route 548e8e6b-f682-4b91-9f3e-7567a22875fb +19:24:24,144 INFO ~ Fixed 58 / 84 stops after first round for trip pattern 27e7df74-202f-4a50-917a-b8cf8d67fa22 (SOUTHERN AVE STATION) on route 2625d9e9-2422-4671-a9cc-f0fc525798dd +19:24:24,318 INFO ~ Fixed 46 / 53 stops after first round for trip pattern 4d8f8477-58c1-44ea-9372-9ca2c23e4552 (ARCHIVES) on route c96fd764-de91-4074-8478-c74959370f22 +19:24:24,329 INFO ~ Fixed 3 / 4 stops after first round for trip pattern 619df0d5-8b14-4dc7-b989-284e37c91bd6 (PENTAGON) on route e9a57196-7f71-4340-828b-1fb2342e764f +19:24:24,332 INFO ~ Fixed 6 / 6 stops after first round for trip pattern 74e5635e-c5e2-4308-a319-c1eb2d8f18d3 (GLENMONT) on route 675d11b4-e400-4c17-9a72-b1b3ace62d85 +19:24:24,356 INFO ~ Fixed 18 / 24 stops after first round for trip pattern 47dcc5d2-e4c4-4175-be98-f71cb3f67240 (TENLEYTOWN STATION) on route 4599756f-bb6a-4622-a4af-0874c52c611d +19:24:24,497 INFO ~ Fixed 46 / 64 stops after first round for trip pattern e0056d9e-f8d3-4244-8775-bf6fbb5ccf0e (FRIENDSHIP HEIGHTS) on route 50c1edad-36dd-4c6c-9609-f75cbc24e66e +19:24:24,681 INFO ~ Fixed 37 / 53 stops after first round for trip pattern 957dffd7-637a-47e7-b179-1d72da09ad81 (WHEATON STATION) on route e29e6e9d-d533-4dfe-9ab2-e34b7ddb280c +19:24:24,878 INFO ~ Fixed 45 / 57 stops after first round for trip pattern d396e43d-ce1b-4f5b-b093-55a1e62b65b7 (CAMP SPRINGS) on route 166841aa-ec9a-4a76-b048-410e68faf703 +19:24:24,890 INFO ~ Fixed 11 / 11 stops after first round for trip pattern 19549649-acba-4bda-ab7c-2c5d45c71983 (BRADDOCK ROAD STATION) on route 0a1f794a-a36f-4b08-9bdc-06671672c123 +19:24:24,960 INFO ~ Fixed 13 / 13 stops after first round for trip pattern 7a0a1121-8a7d-4afd-a71e-ac44220ea447 (VIENNA FAIRFAX-GMU) on route a1a52c1c-256c-4308-94a7-b3e85a4285a7 +19:24:25,018 INFO ~ Fixed 26 / 36 stops after first round for trip pattern eaf2e779-48ad-4670-aa78-c9f68dd91677 (COLMAR MANOR) on route ef64932d-bd6d-47a1-9dac-da38164b6b1a +19:24:25,019 WARN ~ Shape dist traveled past end of shape, was 9379.425427806511, expected max 9379.425427806511, clamping +19:24:25,147 INFO ~ Fixed 50 / 54 stops after first round for trip pattern 8e81ca71-0810-469b-8dd1-61bf741deaf6 (ANACOSTIA STATION) on route 58d609ad-3e9b-4025-b9da-335006b884a4 +19:24:25,214 INFO ~ Fixed 30 / 43 stops after first round for trip pattern d9e192c1-452b-4e0a-9b34-f0904db9b072 (DUPONT CIRCLE) on route 7dac992e-f54b-40c6-86fe-0f57adf5d3f7 +19:24:25,261 INFO ~ Fixed 17 / 28 stops after first round for trip pattern 01ee0188-6511-4a99-90fe-3414d350088e (PENN MAR) on route d30d2ccc-a9d5-45bb-8c38-af100dcea94d +19:24:25,262 WARN ~ Shape dist traveled past end of shape, was 10769.441998426382, expected max 10769.441998426382, clamping +19:24:25,263 WARN ~ Shape dist traveled past end of shape, was 10769.441998426382, expected max 10769.441998426382, clamping +19:24:25,263 WARN ~ Shape dist traveled past end of shape, was 10769.441998426382, expected max 10769.441998426382, clamping +19:24:25,263 WARN ~ Shape dist traveled past end of shape, was 10769.441998426382, expected max 10769.441998426382, clamping +19:24:25,314 INFO ~ Fixed 30 / 37 stops after first round for trip pattern eccdf982-874b-421d-bf5d-cd61636cd2a5 (16TH & COLORADO) on route 06cde043-db23-4e83-b13f-c36615273979 +19:24:25,374 INFO ~ Fixed 28 / 37 stops after first round for trip pattern 2549952c-d3d2-4951-8ecd-15605204eb80 (AVONDALE) on route 01751347-0c31-40cf-b5a6-d27a69b18650 +19:24:25,384 INFO ~ Fixed 6 / 9 stops after first round for trip pattern a0b40dac-eae0-4568-9de6-0d00a9a711bd (MCPHERSON SQUARE METRO) on route 2132eff7-ea70-404f-be15-4523b797b73a +19:24:25,555 INFO ~ Fixed 55 / 63 stops after first round for trip pattern 6d70e771-bf4c-4266-910b-a9fb7d595aa2 (SOUTHERN AVE STATION) on route 2910d3ce-dc0d-498c-a692-b6fcd674638b +19:24:25,556 WARN ~ Shape dist traveled past end of shape, was 16401.698753434634, expected max 16401.69764130626, clamping +19:24:25,789 INFO ~ Fixed 59 / 73 stops after first round for trip pattern 4aa44115-5267-4859-ad17-b3fc4fb42926 (SUITLAND STATION) on route 2625d9e9-2422-4671-a9cc-f0fc525798dd +19:24:25,791 WARN ~ Shape dist traveled past end of shape, was 21382.645991991336, expected max 21382.645991991336, clamping +19:24:25,920 INFO ~ Fixed 44 / 53 stops after first round for trip pattern 82eeede1-d5ee-48e0-9224-930b211b7830 (SANGAMORE RD) on route 86d571ea-655e-44a7-9d31-fa663060a25a +19:24:26,041 INFO ~ Fixed 44 / 58 stops after first round for trip pattern 2926593d-2f00-40a1-899a-f77023a025e7 (ARCHIVES) on route c96fd764-de91-4074-8478-c74959370f22 +19:24:26,041 WARN ~ Two stops on trip pattern 2926593d-2f00-40a1-899a-f77023a025e7 map to same point on shape +19:24:26,041 WARN ~ Two stops on trip pattern 2926593d-2f00-40a1-899a-f77023a025e7 map to same point on shape +19:24:26,041 WARN ~ Two stops on trip pattern 2926593d-2f00-40a1-899a-f77023a025e7 map to same point on shape +19:24:26,041 WARN ~ Two stops on trip pattern 2926593d-2f00-40a1-899a-f77023a025e7 map to same point on shape +19:24:26,041 WARN ~ Two stops on trip pattern 2926593d-2f00-40a1-899a-f77023a025e7 map to same point on shape +19:24:26,041 WARN ~ Two stops on trip pattern 2926593d-2f00-40a1-899a-f77023a025e7 map to same point on shape +19:24:26,042 WARN ~ Two stops on trip pattern 2926593d-2f00-40a1-899a-f77023a025e7 map to same point on shape +19:24:26,042 WARN ~ Two stops on trip pattern 2926593d-2f00-40a1-899a-f77023a025e7 map to same point on shape +19:24:26,051 INFO ~ Loaded 26000 / 49539 trips +19:24:26,183 INFO ~ Fixed 53 / 57 stops after first round for trip pattern fb89fc51-6c55-4dae-a2f1-b36b3b9ea596 (GEORGE MASON UNIVERSITY) on route 098fd154-1adc-4e44-b476-adafafc3dab2 +19:24:26,253 INFO ~ Fixed 37 / 38 stops after first round for trip pattern 6714c6f7-1886-4d5f-b3f5-8eccfaeb8159 (ROSSLYN) on route 5a3674aa-7107-41dd-bdaf-7c2c19cf154e +19:24:26,317 INFO ~ Fixed 13 / 15 stops after first round for trip pattern e0903fa8-e30d-4ea2-8dc4-8b73823c8d0f (BRANCH AVE STATION) on route b9ed926b-700f-48d2-bfa1-9327158a9be5 +19:24:26,336 INFO ~ Fixed 17 / 22 stops after first round for trip pattern a411ca53-4fd1-43e2-b5f0-297340e6c3f0 (POTOMAC YARD) on route 4d9b5bd0-f86a-4bb0-a5d0-09eea41b99ba +19:24:26,416 INFO ~ Fixed 30 / 37 stops after first round for trip pattern 3642e859-2b3b-46fc-bdd6-fa307bd4d124 (BOWIE STATE UNIVERSITY) on route cf392cbe-bf91-409b-87b4-9142344e1c82 +19:24:26,418 WARN ~ Shape dist traveled past end of shape, was 28429.907908588495, expected max 28429.907908588495, clamping +19:24:26,460 INFO ~ Fixed 10 / 19 stops after first round for trip pattern 15466f9a-87e1-44b9-8463-9c412109c79f (BOWIE STATE UNIVERSITY) on route 3cc400bc-db09-4bf0-811f-813b8fc7369d +19:24:26,462 WARN ~ Shape dist traveled past end of shape, was 22266.267473456715, expected max 22266.267473456715, clamping +19:24:26,540 INFO ~ Fixed 34 / 41 stops after first round for trip pattern 0ebcc099-93f9-4dba-bce2-78e655516e3e (ADDISON RD STATION) on route 8648a11b-c3f6-4b94-bb82-ead2f4ba5372 +19:24:26,594 INFO ~ Fixed 31 / 35 stops after first round for trip pattern 11e61f41-e98a-4020-83fe-3d06a5f59e7d (SILVER SPRING STATION) on route fb407bda-3288-4ad8-875e-4163cc1a8c0b +19:24:26,617 INFO ~ Fixed 15 / 16 stops after first round for trip pattern 27fce06b-1bf5-4d3b-b87a-db0e84ab61ec (ARCHIVES) on route 9f6c1684-ae80-4be6-9e3e-44e4cc92a8e8 +19:24:26,787 INFO ~ Fixed 41 / 45 stops after first round for trip pattern a96f2cb1-7d61-4398-bedb-b952fc32a6b4 (DUNN LORING STATION) on route 0282b8c3-14fb-4eb2-9951-834f5a662c0b +19:24:26,793 INFO ~ Fixed 6 / 6 stops after first round for trip pattern 17712dfb-f6d0-4130-b321-ee26ef1a7f89 (WIEHLE RESTON EAST) on route 363dc064-e6f1-4b42-92e3-d475f4e806d0 +19:24:26,823 INFO ~ Fixed 25 / 28 stops after first round for trip pattern 272b9d8b-7507-44d0-846a-120f6a7ebd7f (GLOVER PARK) on route 6537941e-d965-4717-8c3e-a61daa69e249 +19:24:26,824 WARN ~ Shape dist traveled past end of shape, was 5655.31029029396, expected max 5655.31029029396, clamping +19:24:26,956 INFO ~ Fixed 50 / 55 stops after first round for trip pattern 1a60841a-4b6c-4c08-9f3b-38c833081796 (PENDLETON & COLUMBUS) on route 8502291b-5c5d-4f36-9799-dbd2658168f7 +19:24:27,255 INFO ~ Fixed 63 / 80 stops after first round for trip pattern d2a3ec2e-e1ae-4a09-b9b3-13b60561a24d (CAPITAL PLAZA) on route 0232e955-5abd-4f51-a0f3-f74fa0382b17 +19:24:27,398 INFO ~ Fixed 17 / 22 stops after first round for trip pattern eb6eb90c-3cd0-4008-9e2f-8e7512830cd2 (MCPHERSON SQUARE) on route edea9de0-4066-4bb3-85e2-59e4f82470b5 +19:24:27,398 WARN ~ Shape dist traveled past end of shape, was 11617.093232776091, expected max 11617.093232776091, clamping +19:24:27,719 INFO ~ Fixed 73 / 89 stops after first round for trip pattern e7aeb1bb-3adb-4f61-9c9d-b6985f44a87d (EASTOVER) on route 8648a11b-c3f6-4b94-bb82-ead2f4ba5372 +19:24:27,863 WARN ~ Stop is more than 1km from its shape, using straight-line distances +19:24:28,155 INFO ~ Fixed 54 / 58 stops after first round for trip pattern 207ca0d9-60fe-4bd1-8ba7-be3da06e64cb (SILVER SPRING STATION) on route f85fc952-8ec2-44c0-aa40-a0a49a954224 +19:24:28,574 INFO ~ Fixed 24 / 27 stops after first round for trip pattern 30fc8840-6c36-4339-8447-e4a0d911cdad (PENTAGON) on route e0698c41-3475-4c41-86a9-e656df0a1023 +19:24:28,715 INFO ~ Fixed 42 / 53 stops after first round for trip pattern 6a892ce1-18a4-4887-8899-2414cfff2e03 (DUNN LORING STATION) on route 0cb17cd7-6386-41c7-b484-1342b64cdfc8 +19:24:28,730 WARN ~ Unable to tell if shape is backwards for trip pattern 0436fe11-def0-4375-93f0-316fb64bd23c (COAST GUARD HQ) on route 58734787-ac66-4da4-bc4b-ee3f043aebbb, assuming it is correct +19:24:28,731 INFO ~ Fixed 2 / 2 stops after first round for trip pattern 0436fe11-def0-4375-93f0-316fb64bd23c (COAST GUARD HQ) on route 58734787-ac66-4da4-bc4b-ee3f043aebbb +19:24:28,895 INFO ~ Fixed 40 / 58 stops after first round for trip pattern c1a11f4c-13a8-4219-9669-e6b24a7cfd71 (BALLSTON) on route d198f0d0-1941-4835-be05-5bf86af85143 +19:24:28,964 INFO ~ Loaded 27000 / 49539 trips +19:24:29,149 INFO ~ Fixed 40 / 50 stops after first round for trip pattern 6ca564bf-dd2c-47a0-84f3-284deed4452b (ANNANDALE) on route c5ba57e4-0e39-4a81-84df-4f197db05693 +19:24:29,152 WARN ~ Shape dist traveled past end of shape, was 25312.151281376468, expected max 25312.151281376468, clamping +19:24:29,185 INFO ~ Fixed 20 / 24 stops after first round for trip pattern a8ad5073-453a-4e29-a3ee-c5002ad366de (CONVENTION CENTER) on route 7872a5fa-09ab-45d9-a140-f6c74e80eba2 +19:24:29,355 INFO ~ Fixed 70 / 77 stops after first round for trip pattern 87acc08d-82a5-4c3e-a2a4-645705fd18d9 (UNITED MEDICAL CENTER) on route e2b733bd-b058-4f8c-a816-ff56f35888ec +19:24:29,356 WARN ~ Shape dist traveled past end of shape, was 15287.689006076458, expected max 15287.689006076458, clamping +19:24:29,460 INFO ~ Fixed 28 / 36 stops after first round for trip pattern ebb3c81b-c23e-4d35-b5b3-bd8b3b51ea68 (LEDROIT PARK - HOWARD UNIVERSITY) on route 4761f0cd-092e-4c7b-9b40-fa35356f13b8 +19:24:29,461 WARN ~ Shape dist traveled past end of shape, was 7754.723466972428, expected max 7754.723466972428, clamping +19:24:29,599 INFO ~ Fixed 35 / 37 stops after first round for trip pattern 71fe4395-684a-4e0f-a964-d48ed88fae34 (EAST FALLS CHURCH STATION) on route 5a3674aa-7107-41dd-bdaf-7c2c19cf154e +19:24:29,686 INFO ~ Fixed 18 / 21 stops after first round for trip pattern d6df1afe-b645-4aef-be54-06ab11ae02ca (ROLLING VALLEY MALL) on route 3246d3ef-46e4-47ac-9e7f-f78559cad6fd +19:24:29,825 INFO ~ Fixed 43 / 57 stops after first round for trip pattern d20312d5-fe85-4552-9d80-95b062566c9f (FEDERAL TRIANGLE) on route f85fc952-8ec2-44c0-aa40-a0a49a954224 +19:24:29,916 INFO ~ Fixed 21 / 24 stops after first round for trip pattern 37f53d60-2eb2-4482-81ff-04429ae8da13 (UNION STATION) on route dabee5cc-3a9a-4760-ac59-37b0f52d6756 +19:24:30,018 INFO ~ Fixed 47 / 50 stops after first round for trip pattern e53ddce7-4ae7-4a4d-8b1d-b8b5d6b2526f (SILVER SPRING STATION) on route 086b1b16-ba61-442d-a3f0-ea7e870a00ce +19:24:30,132 INFO ~ Fixed 39 / 43 stops after first round for trip pattern 57b04290-c8aa-4378-b67e-e0a59eccb7bd (NAYLOR RD STATION) on route 93fed491-3956-4be2-a450-2c9464b53f10 +19:24:30,330 INFO ~ Fixed 47 / 59 stops after first round for trip pattern d66eaf79-0242-46a5-8110-4543b846b7b7 (MINNESOTA AVE STATION) on route f3d72c79-3002-47d3-bcfc-224667dc88a3 +19:24:30,470 INFO ~ Fixed 41 / 55 stops after first round for trip pattern 0d89ef5c-1a9a-4530-8711-8aff7460daa0 (FEDERAL TRIANGLE) on route f85fc952-8ec2-44c0-aa40-a0a49a954224 +19:24:30,645 INFO ~ Fixed 12 / 14 stops after first round for trip pattern 12881a8d-6407-4d40-8379-5957c7fc02ae (FRIENDSHIP HEIGHTS STATION) on route 8c5cc2fd-5b73-472c-bfce-adc90acf6c40 +19:24:30,700 INFO ~ Fixed 20 / 29 stops after first round for trip pattern 9a4c5915-b0d2-4100-8a92-9b89b927d878 (N V C C - ALEXANDRIA) on route a93fb001-6c25-4bef-9b60-3dbf27549a2b +19:24:30,780 INFO ~ Fixed 40 / 46 stops after first round for trip pattern b512fd10-87e5-447a-bfac-d44882350bf3 (TAKOMA STATION) on route 9006c58b-3e5d-4725-9e04-947b2e06cb70 +19:24:30,848 INFO ~ Fixed 27 / 29 stops after first round for trip pattern 052db097-ce7e-4ac3-a531-96e5216da37f (LINCOLNIA) on route 0c93e3e1-364d-49b4-8a90-a429b50f590c +19:24:30,988 INFO ~ Fixed 44 / 48 stops after first round for trip pattern 99bd50f6-346b-4224-bd68-5ae7c1580ca0 (BALLSTON) on route 76167b87-87a3-4477-abeb-9dede58ed104 +19:24:31,035 INFO ~ Loaded 28000 / 49539 trips +19:24:31,147 INFO ~ Fixed 28 / 38 stops after first round for trip pattern 94205ce7-fbde-48c0-a3b8-88f446af3b0b (DUPONT CIRCLE) on route 7aa38cc7-98c4-4b5d-a39b-4f947c09c1c6 +19:24:31,245 INFO ~ Fixed 24 / 30 stops after first round for trip pattern c2139ad1-f372-4cb8-94d4-884421f9be3a (NEW CARROLLTON STATION) on route cf392cbe-bf91-409b-87b4-9142344e1c82 +19:24:31,394 INFO ~ Fixed 46 / 55 stops after first round for trip pattern e46e623e-0825-47b1-89a4-6a3eff86deae (CASTLE BLVD) on route 9d43c59c-0d0a-4f8f-8821-1cb93964a9b6 +19:24:31,447 INFO ~ Fixed 19 / 20 stops after first round for trip pattern 18f5a03a-2e00-4a62-9635-c71e75594a61 (NATIONAL HARBOR) on route eed77051-031b-4625-9f62-456da413db83 +19:24:31,523 INFO ~ Fixed 39 / 45 stops after first round for trip pattern 768d70f6-3750-4071-9b05-643bb640a833 (FARRAGUT SQUARE) on route 7aa38cc7-98c4-4b5d-a39b-4f947c09c1c6 +19:24:32,024 INFO ~ Fixed 91 / 109 stops after first round for trip pattern a3bc0f58-ef2b-459a-9b7d-a86bfa1502cd (SUITLAND STATION) on route 9ae6bf06-cdd6-4556-a3c0-defc7421df55 +19:24:32,120 INFO ~ Fixed 33 / 41 stops after first round for trip pattern 9001ce90-480c-4e0d-a738-ea272f3c2881 (L'ENFANT PLAZA STATION) on route 64c68e09-196c-4802-a5aa-96fed484b3fe +19:24:32,265 INFO ~ Fixed 22 / 26 stops after first round for trip pattern 517b2e5f-475c-423e-b5ed-10914b2a68bd (BURTONSVILLE) on route c9300709-f7d0-47f2-b373-4d092307de11 +19:24:32,403 INFO ~ Fixed 55 / 59 stops after first round for trip pattern b9f74f74-a977-497b-a729-ce16e9015c0f (SILVER SPRING STATION) on route f85fc952-8ec2-44c0-aa40-a0a49a954224 +19:24:32,645 INFO ~ Fixed 69 / 78 stops after first round for trip pattern ec7f451d-b59e-48b7-a2e2-2358f8215ed0 (UNITED MEDICAL CENTER) on route f829a800-c614-458e-8e45-6cd9ae3f226a +19:24:32,646 WARN ~ Shape dist traveled past end of shape, was 15835.026423650892, expected max 15835.026423650892, clamping +19:24:32,737 INFO ~ Fixed 42 / 47 stops after first round for trip pattern 38557d0c-3f6c-428b-bd28-d612f7a3c7eb (WHEATON STATION) on route 454054fe-da87-4295-b6ff-4033e23b8afa +19:24:32,803 INFO ~ Fixed 36 / 38 stops after first round for trip pattern 9f869f68-b2b3-4433-a20d-18a2d726154f (NAVY YARD - BALLPARK STATION) on route 263774df-c4d3-489d-ab2a-08facc5eb14a +19:24:32,972 INFO ~ Fixed 47 / 52 stops after first round for trip pattern 1f7ffe42-8e22-49c3-a762-6d14c1ef7c6a (PENTAGON) on route df81eb66-647b-4d15-ac69-9cb5be28dc04 +19:24:33,275 INFO ~ Fixed 43 / 46 stops after first round for trip pattern 009903c0-ceeb-455e-8db1-6065e106bee8 (GEORGE MASON UNIVERSITY) on route bf337fd5-ff77-476f-8944-e49d7f5e4d1d +19:24:33,296 INFO ~ Fixed 27 / 27 stops after first round for trip pattern 7f66b935-5895-448d-be4c-9a15efb8aad9 (LARGO TOWN CENTER) on route bcbe2132-0edd-47eb-954c-7cdb6777f025 +19:24:33,728 INFO ~ Fixed 62 / 81 stops after first round for trip pattern 3990d89f-1ebf-420e-82c3-de2826992834 (SIBLEY HOSPITAL) on route 7aa38cc7-98c4-4b5d-a39b-4f947c09c1c6 +19:24:33,730 WARN ~ Shape dist traveled past end of shape, was 18902.372136446458, expected max 18902.372136446458, clamping +19:24:33,731 WARN ~ Shape dist traveled past end of shape, was 18902.372136446458, expected max 18902.372136446458, clamping +19:24:33,731 WARN ~ Shape dist traveled past end of shape, was 18902.372136446458, expected max 18902.372136446458, clamping +19:24:33,731 WARN ~ Shape dist traveled past end of shape, was 18902.372136446458, expected max 18902.372136446458, clamping +19:24:33,825 INFO ~ Fixed 22 / 29 stops after first round for trip pattern 11cbc3b1-6b7d-4f48-b5ca-a59713d5bee0 (FAIRFAX VILLAGE) on route e649fc64-e2be-444d-af93-fc32ae9f5e7a +19:24:33,826 WARN ~ Shape dist traveled past end of shape, was 9574.489639280251, expected max 9574.489639280251, clamping +19:24:33,826 WARN ~ Shape dist traveled past end of shape, was 9574.489639280251, expected max 9574.489639280251, clamping +19:24:33,826 WARN ~ Shape dist traveled past end of shape, was 9574.489639280251, expected max 9574.489639280251, clamping +19:24:33,827 INFO ~ Loaded 29000 / 49539 trips +19:24:33,855 INFO ~ Fixed 17 / 22 stops after first round for trip pattern 3dcf6bf6-bb85-434e-bf1c-8ef09eb3ef6f (LINCOLNIA) on route a2ac05f2-fefd-45c1-8816-d668f6a4df9a +19:24:33,926 INFO ~ Fixed 33 / 41 stops after first round for trip pattern da2f4ffb-c196-44be-af3f-17d67bb52bc0 (L'ENFANT PLAZA STATION) on route c9fc83e7-760f-4a2a-b282-5b459887a9c5 +19:24:34,265 INFO ~ Fixed 11 / 15 stops after first round for trip pattern 982163a8-d8d3-42fa-b4ce-54d77279cde4 (CARVER TERRACE) on route a2153d4c-a8f5-4973-a3fa-259d0e7c9bbe +19:24:34,310 INFO ~ Fixed 23 / 23 stops after first round for trip pattern 5285af77-4ade-446b-97e9-3a70bf43372f (GLENMONT) on route 675d11b4-e400-4c17-9a72-b1b3ace62d85 +19:24:34,591 INFO ~ Fixed 66 / 77 stops after first round for trip pattern 598188e8-8e86-4b5d-8800-cf8c6cfa8c15 (CAPITOL HEIGHTS STATION) on route a92ae21c-9adf-4fa1-b4ca-141eb353aca7 +19:24:34,673 INFO ~ Fixed 21 / 25 stops after first round for trip pattern 56aa9c07-adb1-4cfb-9fe8-39d6dd9dba53 (BURTONSVILLE) on route c9300709-f7d0-47f2-b373-4d092307de11 +19:24:34,802 INFO ~ Fixed 19 / 43 stops after first round for trip pattern cf89e4ea-99a6-4b14-b986-5a62b24af019 (N V C C - ALEXANDRIA) on route a5b513fd-d5de-41fa-90c1-a27e84948367 +19:24:34,804 WARN ~ Two stops on trip pattern cf89e4ea-99a6-4b14-b986-5a62b24af019 map to same point on shape +19:24:34,805 WARN ~ Two stops on trip pattern cf89e4ea-99a6-4b14-b986-5a62b24af019 map to same point on shape +19:24:34,805 WARN ~ Two stops on trip pattern cf89e4ea-99a6-4b14-b986-5a62b24af019 map to same point on shape +19:24:34,805 WARN ~ Two stops on trip pattern cf89e4ea-99a6-4b14-b986-5a62b24af019 map to same point on shape +19:24:34,805 WARN ~ Two stops on trip pattern cf89e4ea-99a6-4b14-b986-5a62b24af019 map to same point on shape +19:24:34,805 WARN ~ Two stops on trip pattern cf89e4ea-99a6-4b14-b986-5a62b24af019 map to same point on shape +19:24:34,805 WARN ~ Two stops on trip pattern cf89e4ea-99a6-4b14-b986-5a62b24af019 map to same point on shape +19:24:34,805 WARN ~ Two stops on trip pattern cf89e4ea-99a6-4b14-b986-5a62b24af019 map to same point on shape +19:24:34,805 WARN ~ Two stops on trip pattern cf89e4ea-99a6-4b14-b986-5a62b24af019 map to same point on shape +19:24:34,805 WARN ~ Two stops on trip pattern cf89e4ea-99a6-4b14-b986-5a62b24af019 map to same point on shape +19:24:34,805 WARN ~ Two stops on trip pattern cf89e4ea-99a6-4b14-b986-5a62b24af019 map to same point on shape +19:24:34,806 WARN ~ Shape dist traveled past end of shape, was 19024.197463998793, expected max 19024.197463998793, clamping +19:24:34,831 INFO ~ Fixed 18 / 21 stops after first round for trip pattern a374fa23-c8b7-4789-963b-51f0c6939880 (CONVENTION CENTER) on route 79d84329-0fae-4821-a978-5ddc0bda267e +19:24:35,049 INFO ~ Fixed 58 / 68 stops after first round for trip pattern ebfa89ce-1580-46e9-b97b-5a0f1f3a62c3 (HUNTING POINT) on route 8502291b-5c5d-4f36-9799-dbd2658168f7 +19:24:35,074 INFO ~ Fixed 14 / 14 stops after first round for trip pattern 91dbbc3d-de6d-4c56-9fbf-d30832bddbbe (VIENNA FAIRFAX GMU) on route a1a52c1c-256c-4308-94a7-b3e85a4285a7 +19:24:35,149 INFO ~ Fixed 29 / 40 stops after first round for trip pattern 4b981889-e124-4dfc-89cd-a694de70996a (KINGS PARK WEST) on route 2928902c-f9fa-4806-9e69-383d66f3e81b +19:24:35,151 WARN ~ Shape dist traveled past end of shape, was 30341.151217034472, expected max 30341.151217034472, clamping +19:24:35,188 INFO ~ Fixed 23 / 26 stops after first round for trip pattern 4338705e-a897-4351-89af-0f9ab1b4b980 (PENTAGON) on route a3313c21-5590-462a-942c-004d0b43ca86 +19:24:35,330 INFO ~ Fixed 46 / 50 stops after first round for trip pattern 5122ed80-c32a-4e92-bc4d-830fcaa50373 (DUNN LORING STATION) on route 0282b8c3-14fb-4eb2-9951-834f5a662c0b +19:24:35,446 INFO ~ Fixed 33 / 42 stops after first round for trip pattern 35b8a127-6db7-4679-8b8b-f15093c8affb (NEW CARROLLTON STATION) on route eac6c002-920d-446f-96f7-72a8151901db +19:24:35,448 WARN ~ Shape dist traveled past end of shape, was 14920.45383301163, expected max 14920.45383301163, clamping +19:24:35,472 INFO ~ Fixed 14 / 15 stops after first round for trip pattern 7f335639-4757-430f-b972-09bb9e144e82 (TAKOMA STATION) on route 3941dc9d-c968-4301-9df4-e7224fc84109 +19:24:35,481 INFO ~ Fixed 12 / 12 stops after first round for trip pattern aaaef797-e707-4f9f-9411-9e4d6e6accbf (HUNTINGTON) on route 85eb7683-ac32-49d9-b969-fc8109723f7b +19:24:35,658 INFO ~ Fixed 40 / 50 stops after first round for trip pattern 231ade59-f4c1-4bf3-913b-3cefdfc3f1db (DEANWOOD STATION) on route d9e61e73-915f-43db-9fb6-a86e748fedfd +19:24:35,895 INFO ~ Fixed 38 / 52 stops after first round for trip pattern a66d5362-7bda-416a-b30e-6349ff52ba65 (FEDERAL TRIANGLE) on route f85fc952-8ec2-44c0-aa40-a0a49a954224 +19:24:36,065 INFO ~ Fixed 59 / 61 stops after first round for trip pattern d0b2f149-4a6c-40d8-a52f-34b4027cf6c5 (NEW CARROLLTON STATION) on route d4834b02-dbe9-4b55-9e7c-8ff78362f23c +19:24:36,135 INFO ~ Fixed 12 / 16 stops after first round for trip pattern b0482e31-3fe0-4830-8748-0724443d7da8 (FARRAGUT SQUARE) on route 99f5483c-7024-4017-80ae-adb34bdfc32d +19:24:36,136 WARN ~ Shape dist traveled past end of shape, was 4119.691031686547, expected max 4119.691031686547, clamping +19:24:36,167 INFO ~ Fixed 14 / 14 stops after first round for trip pattern 832df6bc-d491-4c76-9440-9a2750b0e7e8 (ARCHIVES) on route 8c5cc2fd-5b73-472c-bfce-adc90acf6c40 +19:24:36,347 INFO ~ Fixed 56 / 62 stops after first round for trip pattern 191c9c3b-655b-465b-94ac-a9852402ba46 (NEW CARROLLTON STATION) on route 16f6cf10-737c-4a5a-949f-b6ec8c49f51c +19:24:36,348 WARN ~ Two stops on trip pattern 191c9c3b-655b-465b-94ac-a9852402ba46 map to same point on shape +19:24:36,348 WARN ~ Two stops on trip pattern 191c9c3b-655b-465b-94ac-a9852402ba46 map to same point on shape +19:24:36,459 INFO ~ Fixed 42 / 57 stops after first round for trip pattern af9559bb-b3f8-48f0-9ad7-5ac55c6a5248 (GEORGETOWN) on route 7dac992e-f54b-40c6-86fe-0f57adf5d3f7 +19:24:36,477 INFO ~ Fixed 11 / 15 stops after first round for trip pattern 7d98276b-d910-44ca-843f-2108fb2263d6 (FAIRFAX VILLAGE) on route fdf7cb85-4ebd-4097-933e-bd7e15310a22 +19:24:36,477 WARN ~ Shape dist traveled past end of shape, was 3444.656014996481, expected max 3444.656014996481, clamping +19:24:36,477 WARN ~ Shape dist traveled past end of shape, was 3444.656014996481, expected max 3444.656014996481, clamping +19:24:36,477 WARN ~ Shape dist traveled past end of shape, was 3444.656014996481, expected max 3444.656014996481, clamping +19:24:36,478 WARN ~ Shape dist traveled past end of shape, was 3444.656014996481, expected max 3444.656014996481, clamping +19:24:36,555 INFO ~ Fixed 35 / 41 stops after first round for trip pattern 42a1cd8f-4c0f-4045-b35a-6ceaf50f1953 (SIBLEY HOSPITAL) on route 9b478bcf-d7ac-4d9a-9c4d-02bff9b56aca +19:24:36,606 INFO ~ Fixed 26 / 26 stops after first round for trip pattern bbeb9752-0613-44c6-999e-4f267994f2c2 (VIENNA FAIRFAX-GMU) on route a1a52c1c-256c-4308-94a7-b3e85a4285a7 +19:24:36,623 INFO ~ Loaded 30000 / 49539 trips +19:24:36,965 INFO ~ Fixed 44 / 50 stops after first round for trip pattern cbab8cf0-a983-48b4-9010-080080d285dc (CAPITOL HEIGHTS STATION) on route a92ae21c-9adf-4fa1-b4ca-141eb353aca7 +19:24:36,979 INFO ~ Fixed 20 / 20 stops after first round for trip pattern 47a15f3f-9bc3-40f8-a6bc-bb32ba01d48f (SILVER SPRING) on route 675d11b4-e400-4c17-9a72-b1b3ace62d85 +19:24:37,044 INFO ~ Fixed 21 / 29 stops after first round for trip pattern 8613cbf5-e6b0-4d9f-bbbf-0fc385195324 (IVY CITY) on route 3399e8df-4f27-44a0-9659-91ebfcdba45a +19:24:37,086 INFO ~ Fixed 2 / 2 stops after first round for trip pattern 4561229e-2f40-4926-8005-83e49afdbeb7 (PENTAGON) on route 4004ab90-81a0-46f1-8332-0c5f2e012e42 +19:24:37,172 INFO ~ Fixed 41 / 45 stops after first round for trip pattern c2f3750f-b042-481b-aec1-0ff4545f1837 (ROSSLYN) on route be3d2410-3446-44a7-bac2-cb9f3693e3db +19:24:37,423 INFO ~ Fixed 60 / 66 stops after first round for trip pattern 01d4ba1c-de33-4ad2-8fa4-3105f391f178 (VAN DORN ST STATION) on route fa179c2a-b025-41ae-94e8-b3dc257a17e7 +19:24:37,551 INFO ~ Fixed 46 / 49 stops after first round for trip pattern de815018-09f0-467d-a1e8-be18d934818e (MCPHERSON SQUARE) on route f8346fd3-2fb8-4e48-8348-82039c822708 +19:24:37,776 INFO ~ Fixed 55 / 67 stops after first round for trip pattern 0b90acca-1936-43f2-96bd-c3568eabdadc (ADDISON RD STATION) on route 8648a11b-c3f6-4b94-bb82-ead2f4ba5372 +19:24:37,894 INFO ~ Fixed 38 / 44 stops after first round for trip pattern c412d0d4-15a5-43b8-a182-7456e8c282ba (LAUREL) on route 1f05e5a6-9758-4d53-af38-3902b65ff3f8 +19:24:37,923 INFO ~ Fixed 13 / 15 stops after first round for trip pattern 8dfb72ca-2e6f-4678-87b7-3034c6787fa1 (GREENCASTLE PARK & RIDE) on route 2f8b2ed6-7d7c-4aa6-8fb1-7b38c0e0af75 +19:24:37,945 INFO ~ Fixed 18 / 19 stops after first round for trip pattern a2786aa0-f7f5-4294-b1e7-3a15995904a4 (NAYLOR RD STATION) on route c03c66cd-b90c-442c-8782-b2dee724c621 +19:24:37,952 INFO ~ Fixed 6 / 6 stops after first round for trip pattern eedd81d2-678a-4dbf-84de-8b45be46b63d (SOUTH GLEBE ROAD) on route 0a1f794a-a36f-4b08-9bdc-06671672c123 +19:24:37,961 INFO ~ Fixed 3 / 4 stops after first round for trip pattern 001457f1-40a7-4ca6-8f7c-b8f6479bad0b (L'ENFANT PLAZA STATION) on route 43adee91-a11a-4696-93c3-d9ea73a59d8d +19:24:38,128 INFO ~ Fixed 45 / 54 stops after first round for trip pattern 1132db79-1904-480b-8498-6d56663d2862 (FORT WASHINGTON PARK & RIDE) on route 5a0b5253-6aeb-480d-bd55-c03d8fb677e9 +19:24:38,316 INFO ~ Fixed 39 / 46 stops after first round for trip pattern e67fcf71-08f3-4ef0-916e-a321f5abe539 (SILVER SPRING STATION) on route c9300709-f7d0-47f2-b373-4d092307de11 +19:24:38,527 INFO ~ Fixed 52 / 73 stops after first round for trip pattern d2adcc28-9395-4863-8d0f-00cb36742cff (DEANWOOD STATION) on route 2ba5f494-d8c6-4a5e-8048-cec924f311f4 +19:24:38,531 WARN ~ Shape dist traveled past end of shape, was 19748.85225882581, expected max 19748.85225882581, clamping +19:24:38,531 WARN ~ Shape dist traveled past end of shape, was 19748.85225882581, expected max 19748.85225882581, clamping +19:24:38,719 INFO ~ Fixed 51 / 56 stops after first round for trip pattern e9dd143b-8d2a-4c0d-ab9f-8ece6f9b80cc (NEW CARROLLTON STATION) on route 731ba8e4-d838-43fb-856e-6d60c9f473dc +19:24:38,940 INFO ~ Fixed 57 / 73 stops after first round for trip pattern bad58550-c175-42d0-886f-04d8cde6fdea (ANACOSTIA STATION) on route a41b527c-7bad-4fc6-9dd0-a2a4f55fe4b9 +19:24:39,018 INFO ~ Loaded 31000 / 49539 trips +19:24:39,240 INFO ~ Fixed 24 / 29 stops after first round for trip pattern f285fb75-d917-4d45-8fed-ca544a73e04d (FEDERAL TRIANGLE) on route ad03570f-7f5b-4a33-aeab-e94e9ec367cd +19:24:39,241 WARN ~ Shape dist traveled past end of shape, was 15613.329669000477, expected max 15613.329669000477, clamping +19:24:39,367 INFO ~ Fixed 45 / 52 stops after first round for trip pattern 2e77b7f5-b2e3-47f9-bcdc-1522b0c2dc10 (LIVINGSTON VIA SOUTH CAPITOL) on route f21856a0-725d-4a16-bd92-1813334ffbe5 +19:24:39,458 INFO ~ Fixed 33 / 38 stops after first round for trip pattern 93cf7138-7cd1-44e7-9667-32c35211b54f (FARRAGUT SQUARE) on route a3ac06f6-c66a-480c-b35f-1ee7a04e84f2 +19:24:39,966 INFO ~ Fixed 61 / 77 stops after first round for trip pattern b2d2baa0-f4ff-4ef9-bd0e-752912737858 (NEW CARROLLTON STATION) on route 87b520e2-5389-4618-915f-bc5a1c4c83ea +19:24:39,968 WARN ~ Shape dist traveled past end of shape, was 23149.807059960964, expected max 23149.807059960964, clamping +19:24:39,981 INFO ~ Fixed 12 / 14 stops after first round for trip pattern f9eecafc-4d8d-4f13-bbdc-6706abc147c8 (RHODE ISLAND AVE STATION) on route 17dfeee1-c024-48e7-b4c4-56ddbecd3c2d +19:24:40,198 INFO ~ Fixed 61 / 73 stops after first round for trip pattern 5ae77c2e-e691-4d9d-a406-c4fef7b07c43 (TENLEYTOWN STATION) on route a92ae21c-9adf-4fa1-b4ca-141eb353aca7 +19:24:40,311 INFO ~ Fixed 39 / 46 stops after first round for trip pattern f5775fba-fabf-42fd-98d4-abd86ce7f328 (FEDERAL TRIANGLE) on route 4deeb452-efc7-4a92-a9d7-c1957385dc8e +19:24:40,452 INFO ~ Fixed 51 / 63 stops after first round for trip pattern e134709d-c6f9-44b7-903f-7dfd024a8301 (RHODE ISLAND AVE STATION) on route 580c1380-22a3-4e0e-836a-7a50c2d1c6ce +19:24:40,672 INFO ~ Fixed 45 / 49 stops after first round for trip pattern 3c8b9f34-2979-47ef-b602-d76c0e5dd8db (BURKE CENTRE) on route 486ff1f6-e28e-40f1-ae5d-2cbe7bd020dd +19:24:40,727 INFO ~ Fixed 29 / 31 stops after first round for trip pattern be3eda9a-e4c0-427c-aae0-ee35998334ed (ANACOSTIA STATION) on route 9ea746bb-0b09-4f71-84e5-15d454d0539a +19:24:40,794 INFO ~ Fixed 25 / 37 stops after first round for trip pattern 5a81605f-aa1e-4b45-b7ad-0b67cd858d9f (POTOMAC PARK) on route 06cde043-db23-4e83-b13f-c36615273979 +19:24:41,610 INFO ~ Fixed 111 / 132 stops after first round for trip pattern 9c0a4aa8-372d-4097-8dea-f4c9ac4d3546 (ADDISON RD STATION) on route 60f41c92-901d-42cf-89b3-c45c68fe485b +19:24:41,695 INFO ~ Fixed 24 / 31 stops after first round for trip pattern 8880995e-c920-420e-a461-932fd5dda823 (MCPHERSON SQUARE) on route a055fc6f-a7c4-4856-b754-083a44b83863 +19:24:41,696 WARN ~ Shape dist traveled past end of shape, was 6933.188785246064, expected max 6933.188785246064, clamping +19:24:41,696 WARN ~ Shape dist traveled past end of shape, was 6933.188785246064, expected max 6933.188785246064, clamping +19:24:41,733 INFO ~ Fixed 19 / 24 stops after first round for trip pattern a6b75d46-72bd-4073-99df-65f6828e0596 (PENTAGON) on route a5b513fd-d5de-41fa-90c1-a27e84948367 +19:24:41,802 INFO ~ Fixed 32 / 42 stops after first round for trip pattern 9a692ab3-b8c2-489c-b23d-a98e736ec009 (CHEVY CHASE CIRCLE) on route e111dc16-2c0c-41a3-8011-b9a1883364e6 +19:24:41,943 INFO ~ Fixed 39 / 47 stops after first round for trip pattern ff410d21-28f7-41af-8657-6fb1c430dbcd (SOUTH LAUREL PARK & RIDE) on route c9300709-f7d0-47f2-b373-4d092307de11 +19:24:41,945 WARN ~ Shape dist traveled past end of shape, was 30937.07840378306, expected max 30937.07840378306, clamping +19:24:42,035 INFO ~ Fixed 41 / 43 stops after first round for trip pattern 889d5e65-180e-4833-9047-99ad5648f6f6 (NEW CARROLLTON STATION) on route d4834b02-dbe9-4b55-9e7c-8ff78362f23c +19:24:42,064 INFO ~ Fixed 20 / 23 stops after first round for trip pattern 372c120d-46ad-449e-b4c6-a5d8b2d57fa9 (MINNESOTA AVE STATION) on route c7449c4c-793b-4098-b220-43ca3ca39e7b +19:24:42,273 INFO ~ Fixed 48 / 61 stops after first round for trip pattern 7760408b-33ac-48d2-b0cb-b33eba73b380 (POINTER RIDGE) on route 7a9d3b6c-d3cc-4099-a31b-4c7c4f408ac8 +19:24:42,348 INFO ~ Fixed 27 / 37 stops after first round for trip pattern a7097a35-a294-4332-bd2e-9e8b57017858 (BALLSTON) on route a81ee200-dd7f-4ae7-b117-4fa12467a04b +19:24:42,483 INFO ~ Fixed 39 / 52 stops after first round for trip pattern 22848160-ff34-4436-8ad0-fed9a968b4fe (FEDERAL TRIANGLE) on route 086b1b16-ba61-442d-a3f0-ea7e870a00ce +19:24:42,647 INFO ~ Fixed 47 / 53 stops after first round for trip pattern 5db44deb-7e97-4bec-bc66-67fb560d8c3c (ARCHIVES) on route f21856a0-725d-4a16-bd92-1813334ffbe5 +19:24:42,758 INFO ~ Fixed 38 / 50 stops after first round for trip pattern a39f6853-3c22-48a4-86ad-494fd1dfe4e0 (FRANKLIN SQUARE) on route 086b1b16-ba61-442d-a3f0-ea7e870a00ce +19:24:42,967 INFO ~ Fixed 51 / 58 stops after first round for trip pattern 91922cc6-eb0f-4ea1-8ae8-5305df2bcdea (PENTAGON) on route e3b98b33-3619-4c54-a8e5-aee7d093038f +19:24:43,144 INFO ~ Fixed 51 / 60 stops after first round for trip pattern edb837ec-0ead-4768-bad6-af14b51e3921 (PENTAGON) on route b1ff195b-ce70-4332-b70a-4c4f924ad206 +19:24:43,198 INFO ~ Fixed 12 / 14 stops after first round for trip pattern e9aa95fd-dfa0-453d-8ce5-495f6225cedf (LAKEFOREST) on route fa660a97-cb4b-4283-8a1b-8bfd41e8d96a +19:24:43,202 WARN ~ Shape dist traveled past end of shape, was 24655.455577852274, expected max 24655.455577852274, clamping +19:24:43,218 INFO ~ Fixed 14 / 18 stops after first round for trip pattern dd2b76d6-7388-40bd-b031-e6dcf9fa8275 (ARCHIVES) on route 44b687c0-8ca0-41c5-b223-bd97b0e03ef0 +19:24:43,260 INFO ~ Fixed 29 / 33 stops after first round for trip pattern 819925db-3a63-44fb-80a3-efda782365d0 (ROCKVILLE STATION) on route 276b52a5-4e2d-4c24-b0cd-bef9226b9dfb +19:24:43,261 WARN ~ Shape dist traveled past end of shape, was 11237.806068386562, expected max 11237.806068386562, clamping +19:24:43,331 INFO ~ Fixed 30 / 32 stops after first round for trip pattern 7500ef22-5ae2-4096-8ee5-a1867f839a2b (BOWIE STATE UNIVERSITY) on route b3fba861-418d-4332-95c1-d1d359cb69a6 +19:24:43,576 INFO ~ Fixed 57 / 71 stops after first round for trip pattern 18d3275a-71cb-4b7d-b3e0-97e3507db84b (ANNANDALE VIA CULMORE) on route 1fe187b4-98d6-4f56-8179-bd5da929aeb9 +19:24:43,684 INFO ~ Fixed 31 / 35 stops after first round for trip pattern b3801fee-e230-4796-b7bb-35ca88591a51 (CHEVERLY STATION) on route eac6c002-920d-446f-96f7-72a8151901db +19:24:43,983 INFO ~ Fixed 73 / 83 stops after first round for trip pattern 1944a68f-2c6d-48d7-a48c-a682ce74043f (OLNEY) on route fb407bda-3288-4ad8-875e-4163cc1a8c0b +19:24:43,985 WARN ~ Two stops on trip pattern 1944a68f-2c6d-48d7-a48c-a682ce74043f map to same point on shape +19:24:43,985 WARN ~ Shape dist traveled past end of shape, was 31955.97769821481, expected max 31955.97769821481, clamping +19:24:44,182 INFO ~ Fixed 70 / 89 stops after first round for trip pattern ed067876-9895-4a68-ba2f-c71689daa6bf (WASHINGTON OVERLOOK) on route e2b733bd-b058-4f8c-a816-ff56f35888ec +19:24:44,183 WARN ~ Two stops on trip pattern ed067876-9895-4a68-ba2f-c71689daa6bf map to same point on shape +19:24:44,183 WARN ~ Two stops on trip pattern ed067876-9895-4a68-ba2f-c71689daa6bf map to same point on shape +19:24:44,184 WARN ~ Two stops on trip pattern ed067876-9895-4a68-ba2f-c71689daa6bf map to same point on shape +19:24:44,184 WARN ~ Two stops on trip pattern ed067876-9895-4a68-ba2f-c71689daa6bf map to same point on shape +19:24:44,296 INFO ~ Fixed 32 / 40 stops after first round for trip pattern aff4d4ec-ee41-407a-a696-4493e00e0432 (PENN MAR) on route 18ae1c27-9702-42d0-ba65-f6a9e7c23b31 +19:24:44,298 WARN ~ Shape dist traveled past end of shape, was 12207.915266691323, expected max 12207.915266691323, clamping +19:24:44,416 INFO ~ Fixed 41 / 45 stops after first round for trip pattern 171bbfb2-e6da-4c17-bf62-f13347c37de2 (ANACOSTIA STATION) on route 688f247d-b4af-41a1-85bf-b9473721fcfd +19:24:44,478 INFO ~ Fixed 34 / 35 stops after first round for trip pattern 97854c93-b6a9-45a6-8860-a9f090869ae1 (SOUTHERN TOWERS) on route 7872a5fa-09ab-45d9-a140-f6c74e80eba2 +19:24:44,580 INFO ~ Fixed 37 / 42 stops after first round for trip pattern 0769bf52-b55b-4187-9f25-c44e5f2f2a4f (WEST OX ROAD & ALLIANCE DRIVE) on route 0282b8c3-14fb-4eb2-9951-834f5a662c0b +19:24:44,610 INFO ~ Fixed 25 / 27 stops after first round for trip pattern 66f4e7f4-0079-450c-8fff-cc39e38874c3 (ANACOSTIA STATION) on route 58734787-ac66-4da4-bc4b-ee3f043aebbb +19:24:44,647 INFO ~ Fixed 15 / 17 stops after first round for trip pattern 3cf5618d-e9ed-43a8-a443-fa9a515a31a9 (LIVINGSTON VIA SOUTH CAPITOL) on route 3e85c470-b37c-4b75-b57f-52192c172920 +19:24:44,821 INFO ~ Fixed 54 / 65 stops after first round for trip pattern 3fa794e7-a678-427b-b747-c02a59ceead8 (MONTGOMERY MALL) on route a5d53598-b6d2-483d-afeb-53f0e06851e0 +19:24:45,057 INFO ~ Fixed 60 / 71 stops after first round for trip pattern 29c8b5ca-ee2b-4a57-84a0-49de86f46b0a (SOUTHERN AVE STATION) on route 9ae6bf06-cdd6-4556-a3c0-defc7421df55 +19:24:45,122 INFO ~ Fixed 30 / 35 stops after first round for trip pattern 7e8f41d9-9f69-4e90-9fd3-20dc652b3823 (PENTAGON) on route 9ded3363-951b-431b-8fc1-ef6847ac5e95 +19:24:45,229 INFO ~ Fixed 36 / 48 stops after first round for trip pattern afd6922f-65fb-4b86-917e-258e1a21bb23 (ANACOSTIA STATION) on route a102eaea-3b30-4c77-b428-2e8709c2ed8c +19:24:45,254 INFO ~ Loaded 32000 / 49539 trips +19:24:45,320 INFO ~ Fixed 14 / 22 stops after first round for trip pattern 6db2c9e0-6541-4515-a679-3451684ce200 (PENTAGON) on route 3246d3ef-46e4-47ac-9e7f-f78559cad6fd +19:24:45,387 INFO ~ Fixed 37 / 44 stops after first round for trip pattern b78e6ee0-c585-4913-ba46-efc9e1dab489 (TAKOMA STATION) on route 9006c58b-3e5d-4725-9e04-947b2e06cb70 +19:24:45,723 INFO ~ Fixed 29 / 41 stops after first round for trip pattern 6e56952c-6728-480f-9302-74f54125081f (WASHINGTON HOSPITAL CENTER) on route dabee5cc-3a9a-4760-ac59-37b0f52d6756 +19:24:45,724 WARN ~ Shape dist traveled past end of shape, was 12163.969740500499, expected max 12163.969740500499, clamping +19:24:45,725 WARN ~ Shape dist traveled past end of shape, was 12163.969740500499, expected max 12163.969740500499, clamping +19:24:45,777 INFO ~ Fixed 9 / 11 stops after first round for trip pattern ffb66c27-d6ae-4064-9086-b0d83276d0a4 (BETHESDA STATION) on route fa660a97-cb4b-4283-8a1b-8bfd41e8d96a +19:24:45,802 INFO ~ Fixed 24 / 26 stops after first round for trip pattern 1dc7d1fe-257d-482d-b0cb-cb79e6fbe0cf (TENLEYTOWN STATION) on route a92ae21c-9adf-4fa1-b4ca-141eb353aca7 +19:24:45,894 INFO ~ Fixed 42 / 48 stops after first round for trip pattern 7333fba5-8b6b-42ee-9db4-f0e85c3cd4fc (FOGGY BOTTOM STATION) on route f5e7de0a-9bb6-4499-8cc2-ce579c362245 +19:24:46,182 INFO ~ Fixed 58 / 69 stops after first round for trip pattern 7d6442d9-38db-48b7-8082-d857b8197521 (RANDOLPH RD & PARKLAWN DR) on route ca0768b2-263b-451e-9af8-707ee1a68a71 +19:24:46,218 INFO ~ Fixed 24 / 24 stops after first round for trip pattern 336aa16a-f5e3-4605-9015-9bd6f7babfb8 (ANACOSTIA STATION) on route e2b733bd-b058-4f8c-a816-ff56f35888ec +19:24:46,400 INFO ~ Fixed 56 / 71 stops after first round for trip pattern ef01003f-3819-4736-bc66-588d4e520e6f (PRINCE GEORGES PLAZA STATION) on route 454054fe-da87-4295-b6ff-4033e23b8afa +19:24:46,402 WARN ~ Shape dist traveled past end of shape, was 26526.159779138718, expected max 26526.15874931167, clamping +19:24:46,632 INFO ~ Fixed 12 / 16 stops after first round for trip pattern 300a8352-c494-40ec-b57b-fdadd7374c5a (SILVER SPRING STATION) on route 9f6c1684-ae80-4be6-9e3e-44e4cc92a8e8 +19:24:46,957 INFO ~ Fixed 56 / 74 stops after first round for trip pattern f5ff12f1-ae54-49a6-8d7b-13031a90b845 (CHEVERLY STATION) on route f3e2bc57-33d3-4ae6-b7d2-ddb01ebdfd5e +19:24:47,115 INFO ~ Fixed 44 / 52 stops after first round for trip pattern ad187414-8497-4788-8672-ca27c0f3e7fd (GARFIELD - ANACOSTIA LOOP) on route d8e9ced1-7c0d-408a-be69-f51f44ff72b9 +19:24:47,115 WARN ~ Two stops on trip pattern ad187414-8497-4788-8672-ca27c0f3e7fd map to same point on shape +19:24:47,115 WARN ~ Two stops on trip pattern ad187414-8497-4788-8672-ca27c0f3e7fd map to same point on shape +19:24:47,116 WARN ~ Shape dist traveled past end of shape, was 10664.92233688629, expected max 10664.92233688629, clamping +19:24:47,409 INFO ~ Fixed 64 / 73 stops after first round for trip pattern 6f8419d8-c397-42e9-914b-f5aa88b1b086 (FRIENDSHIP HEIGHTS) on route dabc66e9-ac47-40e9-a1d4-8eb37227584a +19:24:47,435 INFO ~ Loaded 33000 / 49539 trips +19:24:47,544 INFO ~ Fixed 31 / 34 stops after first round for trip pattern 56d730ee-cc75-43b7-9db1-9d8536fbd7c3 (LIVINGSTON VIA WHEELER RD) on route 74cdc692-18e0-434d-aaf6-8313c3424e07 +19:24:47,652 INFO ~ Fixed 14 / 16 stops after first round for trip pattern 8206b24f-c70d-43e8-b6d1-1bc732a5c069 (PENTAGON) on route ae36b111-35d2-4485-b492-9a0d786592fd +19:24:47,704 INFO ~ Fixed 32 / 34 stops after first round for trip pattern 00d4f700-8c61-45d7-82dd-0660638d853a (PENTAGON) on route 0c93e3e1-364d-49b4-8a90-a429b50f590c +19:24:47,772 INFO ~ Fixed 7 / 8 stops after first round for trip pattern 79c7b6f7-bdda-43be-88c3-7ec8bfc542cb (LINCOLNIA) on route 7956fd32-3fd9-41dd-a153-9cf2af187977 +19:24:47,828 INFO ~ Fixed 31 / 40 stops after first round for trip pattern 1f4af535-0374-4ee1-853a-8ae2d0dc6ac4 (FARRAGUT SQUARE) on route 83b1b642-0985-4c9f-b4fd-168cd73ca22a +19:24:47,829 WARN ~ Two stops on trip pattern 1f4af535-0374-4ee1-853a-8ae2d0dc6ac4 map to same point on shape +19:24:48,004 INFO ~ Fixed 30 / 38 stops after first round for trip pattern 1f2f9ac2-3de9-4994-a9a7-b273bd8fd53d (NEW CARROLLTON STATION) on route b8fe3422-4e66-4087-beac-b82d90639791 +19:24:48,005 WARN ~ Shape dist traveled past end of shape, was 11046.863240580431, expected max 11046.863240580431, clamping +19:24:48,005 WARN ~ Shape dist traveled past end of shape, was 11046.863240580431, expected max 11046.863240580431, clamping +19:24:48,037 INFO ~ Fixed 21 / 29 stops after first round for trip pattern bb76c5cd-71a9-4304-90e1-b8bde5fa8592 (IVY CITY) on route 3399e8df-4f27-44a0-9659-91ebfcdba45a +19:24:48,139 INFO ~ Fixed 32 / 37 stops after first round for trip pattern 20cbbdd9-2aa2-4e88-9e41-016f4f99ca47 (RHODE ISLAND AVE STATION) on route 1263c8ee-2585-4e34-a00b-d13d48835036 +19:24:48,283 INFO ~ Fixed 24 / 26 stops after first round for trip pattern 228e9264-3b48-4758-ad4f-1e0cf464dabe (NAVY YARD - 8TH & M SE) on route e7f294ca-3a9a-4ca5-bc26-264c7904b7ee +19:24:48,303 INFO ~ Fixed 16 / 18 stops after first round for trip pattern c34ec026-d616-4d99-b3c7-c431da2a53ef (BARCROFT) on route 72bbb68e-f0ec-43f1-9d47-3cbb1d6d5044 +19:24:48,413 INFO ~ Fixed 39 / 48 stops after first round for trip pattern f91fb943-1b29-4574-8ca8-eeffd056b426 (REEVES CENTER - 14TH & U NW) on route a92ae21c-9adf-4fa1-b4ca-141eb353aca7 +19:24:48,416 WARN ~ Shape dist traveled past end of shape, was 15790.078342531557, expected max 15790.078342531557, clamping +19:24:48,417 WARN ~ Shape dist traveled past end of shape, was 15790.078342531557, expected max 15790.078342531557, clamping +19:24:48,417 WARN ~ Shape dist traveled past end of shape, was 15790.078342531557, expected max 15790.078342531557, clamping +19:24:48,432 INFO ~ Fixed 28 / 28 stops after first round for trip pattern c2fa08f4-d408-4ef7-b0f1-b9b43d563bc0 (WIEHLE RESTON EAST) on route 363dc064-e6f1-4b42-92e3-d475f4e806d0 +19:24:48,515 INFO ~ Loaded 34000 / 49539 trips +19:24:48,709 INFO ~ Fixed 16 / 19 stops after first round for trip pattern db0b50fa-95dc-45bb-bf4c-8d8a6e399b1d (HUNTING POINT) on route 24dffea9-c23c-4699-966b-9a5a1c1653bd +19:24:48,740 INFO ~ Fixed 16 / 25 stops after first round for trip pattern 1e70cc44-791b-4599-8bba-d56b0fa3f02d (WHEATON STATION) on route 454054fe-da87-4295-b6ff-4033e23b8afa +19:24:48,893 INFO ~ Fixed 58 / 67 stops after first round for trip pattern 75c0043d-7e70-4294-a8c2-5f6e6fe3ab7e (NEW CARROLLTON STATION) on route 580c1380-22a3-4e0e-836a-7a50c2d1c6ce +19:24:49,041 INFO ~ Fixed 38 / 46 stops after first round for trip pattern e6d72dd4-3e0f-4b32-b5bb-82bac9e09d02 (FOGGY BOTTOM STATION) on route 93fed491-3956-4be2-a450-2c9464b53f10 +19:24:49,201 INFO ~ Fixed 21 / 24 stops after first round for trip pattern 950b8a04-5c7f-4d35-a848-b8cc06eb2ead (GREENBELT STATION) on route 1f05e5a6-9758-4d53-af38-3902b65ff3f8 +19:24:49,237 INFO ~ Fixed 25 / 28 stops after first round for trip pattern 5eebe1ae-9621-4a38-987c-6d5a3ef9c4f5 (ANACOSTIA STATION) on route 59a54181-4223-4ae5-b489-2cf943e25b5c +19:24:49,282 INFO ~ Fixed 21 / 26 stops after first round for trip pattern 962747a8-7b47-4c4c-8913-6aeb137dd13f (MARK CENTER VIA FOXCHASE) on route 5b5834c9-330c-49fc-9be6-a57aa9b5348d +19:24:49,283 WARN ~ Shape dist traveled past end of shape, was 14214.06171238905, expected max 14214.06171238905, clamping +19:24:49,297 INFO ~ Fixed 10 / 11 stops after first round for trip pattern c7ab6a67-78ac-4f75-bc89-3d5231290a33 (CLINTON PARK & RIDE) on route 8a3e96b0-3d70-4041-a75d-47983c1a6389 +19:24:49,567 INFO ~ Fixed 60 / 75 stops after first round for trip pattern fffb801e-689b-40e6-ac33-c166158d3afb (PENN MAR) on route 18ae1c27-9702-42d0-ba65-f6a9e7c23b31 +19:24:49,570 WARN ~ Shape dist traveled past end of shape, was 23692.984973787246, expected max 23692.984973787246, clamping +19:24:49,698 INFO ~ Fixed 38 / 43 stops after first round for trip pattern bec2b922-9a27-4aa1-9263-08e72a74b53b (FAIR OAKS MALL) on route 0282b8c3-14fb-4eb2-9951-834f5a662c0b +19:24:49,745 INFO ~ Fixed 21 / 22 stops after first round for trip pattern 04be3447-0e65-4668-a4e5-91358237f132 (GEORGIA AVE - PETWORTH) on route 8ffb232c-528f-4ea4-a31f-171e597162fc +19:24:49,991 INFO ~ Fixed 30 / 49 stops after first round for trip pattern 497f04e0-fc27-4e0d-89d4-1581ea8111ed (MINNESOTA AVE STATION) on route 9ef1e536-7ddb-46ce-81ec-6fcecc3c2d43 +19:24:50,060 INFO ~ Fixed 33 / 39 stops after first round for trip pattern fc708945-985b-4af7-847c-947eaa76f5cf (ANACOSTIA STATION) on route 58734787-ac66-4da4-bc4b-ee3f043aebbb +19:24:50,500 INFO ~ Fixed 35 / 49 stops after first round for trip pattern bd8fd678-655d-4a68-8b11-e4bebc9dd1df (FRIENDSHIP HEIGHTS) on route cae5f3c8-f4e7-4bc7-a9c5-f24776fe35cf +19:24:50,503 WARN ~ Shape dist traveled past end of shape, was 13729.72904112057, expected max 13729.72904112057, clamping +19:24:50,589 INFO ~ Loaded 35000 / 49539 trips +19:24:50,662 INFO ~ Fixed 13 / 15 stops after first round for trip pattern b90c4b09-b8af-4629-8308-f31adeabc435 (KING ST STATION) on route a97fdbeb-13cb-4314-93d3-0608c476d283 +19:24:50,875 INFO ~ Fixed 58 / 67 stops after first round for trip pattern 2a6143ab-b11e-4064-860c-9a82768b2435 (SILVER SPRING STATION) on route b8fe3422-4e66-4087-beac-b82d90639791 +19:24:51,069 INFO ~ Fixed 26 / 35 stops after first round for trip pattern d8dc6e74-326e-4188-baab-6a1de8d887f7 (FEDERAL TRIANGLE) on route f85fc952-8ec2-44c0-aa40-a0a49a954224 +19:24:51,077 INFO ~ Fixed 10 / 10 stops after first round for trip pattern f5537bcc-2ba0-4adb-971f-f5d07beebeaf (FRANCONIA-SPRINGFIELD) on route bcbe2132-0edd-47eb-954c-7cdb6777f025 +19:24:51,213 INFO ~ Fixed 40 / 53 stops after first round for trip pattern 6224269f-7a48-4ddf-8c7d-068bd107a74e (DEANWOOD STATION) on route ba13de1b-9e70-4382-9373-dc8cc61cccb4 +19:24:51,268 INFO ~ Fixed 23 / 31 stops after first round for trip pattern c20a945a-4002-482e-87ea-5c646176ecc8 (PENTAGON) on route 4d9b5bd0-f86a-4bb0-a5d0-09eea41b99ba +19:24:51,397 INFO ~ Fixed 28 / 37 stops after first round for trip pattern 88802408-f6c0-4e22-8197-905a6d074576 (TENLEYTOWN STATION) on route e28a56f6-27a2-4df5-aecc-0c842ae3abb6 +19:24:51,510 INFO ~ Fixed 44 / 52 stops after first round for trip pattern 8210c360-2c10-47d4-9b64-e41220edbdbe (ARCHIVES) on route 44b687c0-8ca0-41c5-b223-bd97b0e03ef0 +19:24:51,881 INFO ~ Fixed 26 / 36 stops after first round for trip pattern 1ff45f52-c0ee-4876-a062-d13bcb3da15b (BALLSTON) on route a5bb8f3b-7bff-410a-aed2-d2ca5d502ffa +19:24:51,915 INFO ~ Fixed 18 / 24 stops after first round for trip pattern 9a421555-6758-4200-b4a6-36196dba3cbd (TENLEYTOWN STATION) on route 9b478bcf-d7ac-4d9a-9c4d-02bff9b56aca +19:24:51,916 WARN ~ Shape dist traveled past end of shape, was 5959.400038445626, expected max 5959.400038445626, clamping +19:24:52,192 INFO ~ Fixed 68 / 99 stops after first round for trip pattern 332311e6-cce6-4881-a03d-d7309aa3e846 (WASHINGTON OVERLOOK) on route e2b733bd-b058-4f8c-a816-ff56f35888ec +19:24:52,193 WARN ~ Two stops on trip pattern 332311e6-cce6-4881-a03d-d7309aa3e846 map to same point on shape +19:24:52,194 WARN ~ Two stops on trip pattern 332311e6-cce6-4881-a03d-d7309aa3e846 map to same point on shape +19:24:52,194 WARN ~ Two stops on trip pattern 332311e6-cce6-4881-a03d-d7309aa3e846 map to same point on shape +19:24:52,194 WARN ~ Shape dist traveled past end of shape, was 22061.61081874387, expected max 22061.61081874387, clamping +19:24:52,194 WARN ~ Shape dist traveled past end of shape, was 22061.61081874387, expected max 22061.61081874387, clamping +19:24:52,195 WARN ~ Shape dist traveled past end of shape, was 22061.61081874387, expected max 22061.61081874387, clamping +19:24:52,195 WARN ~ Shape dist traveled past end of shape, was 22061.61081874387, expected max 22061.61081874387, clamping +19:24:52,195 WARN ~ Shape dist traveled past end of shape, was 22061.61081874387, expected max 22061.61081874387, clamping +19:24:52,196 WARN ~ Shape dist traveled past end of shape, was 22061.61081874387, expected max 22061.61081874387, clamping +19:24:52,196 WARN ~ Shape dist traveled past end of shape, was 22061.61081874387, expected max 22061.61081874387, clamping +19:24:52,196 WARN ~ Shape dist traveled past end of shape, was 22061.61081874387, expected max 22061.61081874387, clamping +19:24:52,249 INFO ~ Fixed 21 / 23 stops after first round for trip pattern 4cffd4fb-1a56-4508-87be-341b2248373d (PENTAGON) on route ef8584c7-14c7-40c2-9de1-28bb19e149ee +19:24:52,286 INFO ~ Fixed 27 / 30 stops after first round for trip pattern 0a40cdad-efbd-48d6-a980-7a6ea67bec38 (ANACOSTIA STATION) on route 74cdc692-18e0-434d-aaf6-8313c3424e07 +19:24:52,492 INFO ~ Fixed 36 / 52 stops after first round for trip pattern bc97330d-77be-4d46-a1b3-63ba01249d1c (SILVER SPRING STATION) on route c6d0a86c-47d0-4320-b863-fe033b532537 +19:24:52,543 INFO ~ Loaded 36000 / 49539 trips +19:24:52,834 INFO ~ Fixed 63 / 77 stops after first round for trip pattern 61eb3e1a-9e06-4088-afa4-20936e09c4c3 (STADIUM - ARMORY) on route 7aa38cc7-98c4-4b5d-a39b-4f947c09c1c6 +19:24:53,033 INFO ~ Fixed 30 / 37 stops after first round for trip pattern f96da8fa-7d37-4bb0-912d-cb3173c19fe8 (PENTAGON) on route a50a7888-7375-40d6-8372-6d18c976ee37 +19:24:53,073 INFO ~ Fixed 26 / 32 stops after first round for trip pattern 5d551acc-9ac1-48f6-99d3-fd685518d1c1 (FARRAGUT SQUARE) on route 83b1b642-0985-4c9f-b4fd-168cd73ca22a +19:24:53,074 WARN ~ Two stops on trip pattern 5d551acc-9ac1-48f6-99d3-fd685518d1c1 map to same point on shape +19:24:53,317 INFO ~ Fixed 62 / 76 stops after first round for trip pattern 13a4ab62-5416-45b7-ad04-a2ef0cbeb558 (WHITE FLINT STATION) on route a231852c-67bd-4eb0-874d-d6b116737c58 +19:24:53,363 INFO ~ Fixed 10 / 18 stops after first round for trip pattern f8717f80-edd9-4f17-a601-9e0294fe4f38 (FORT TOTTEN) on route 22c5cfb4-a015-4f91-a81c-5ad981b37d99 +19:24:53,446 INFO ~ Fixed 28 / 36 stops after first round for trip pattern 9d97a32e-5639-459e-8988-94158fc59eae (ADDISON RD STATION) on route 18ae1c27-9702-42d0-ba65-f6a9e7c23b31 +19:24:53,447 WARN ~ Shape dist traveled past end of shape, was 12523.876195762485, expected max 12523.876195762485, clamping +19:24:53,524 INFO ~ Fixed 38 / 43 stops after first round for trip pattern 0650685a-e06f-4841-91cc-dc716f196d0a (DUNN LORING STATION) on route 6ffbe66d-63da-42d3-90cf-34e7a5679982 +19:24:53,800 INFO ~ Fixed 56 / 68 stops after first round for trip pattern d153a877-f24b-41cb-a236-ec9d209fd014 (PENTAGON) on route 1fe187b4-98d6-4f56-8179-bd5da929aeb9 +19:24:53,854 WARN ~ Stop is more than 1km from its shape, using straight-line distances +19:24:53,889 INFO ~ Fixed 15 / 15 stops after first round for trip pattern 7da9cecf-14b5-406f-bc5a-e0080d34d172 (WOODLAWN) on route a97fdbeb-13cb-4314-93d3-0608c476d283 +19:24:54,020 INFO ~ Fixed 42 / 53 stops after first round for trip pattern e370c717-2566-4a0d-a5cc-b5ca1eefc57d (DUNN LORING STATION) on route 0cb17cd7-6386-41c7-b484-1342b64cdfc8 +19:24:54,056 INFO ~ Fixed 17 / 21 stops after first round for trip pattern c7532d36-5fe6-4b4f-af18-eb3008b77b76 (GEORGIA AVE - PETWORTH) on route 8ffb232c-528f-4ea4-a31f-171e597162fc +19:24:54,139 INFO ~ Fixed 30 / 36 stops after first round for trip pattern a320abec-fc2b-40ff-998a-7e10f3fedf13 (ROLLING VALLEY MALL) on route a50a7888-7375-40d6-8372-6d18c976ee37 +19:24:54,229 INFO ~ Fixed 43 / 52 stops after first round for trip pattern bd0ccb7e-8cde-449d-bf1b-e5014eb17444 (SILVER SPRING STATION) on route 44b687c0-8ca0-41c5-b223-bd97b0e03ef0 +19:24:54,694 INFO ~ Fixed 51 / 62 stops after first round for trip pattern 1cdb65c9-13c4-4e8e-a6bf-f5a7af8c1212 (BOWIE PARK & RIDE) on route ef580214-561e-4e5e-96ae-9fc8dc37cd6e +19:24:54,810 INFO ~ Fixed 41 / 50 stops after first round for trip pattern 90f1b850-ba1c-4950-92a6-fa1cd9c5d35a (SILVER SPRING STATION) on route 5844b309-3754-4210-bacd-7324283a47f5 +19:24:54,867 INFO ~ Fixed 14 / 16 stops after first round for trip pattern b505a8fc-82b4-4f8a-a7c9-f65ca4d8e189 (BROOKLAND STATION) on route 01751347-0c31-40cf-b5a6-d27a69b18650 +19:24:55,125 INFO ~ Fixed 59 / 65 stops after first round for trip pattern 3f26c898-d2f8-4e59-b8ed-950ad1c40291 (VAN DORN ST STATION) on route fa179c2a-b025-41ae-94e8-b3dc257a17e7 +19:24:55,191 INFO ~ Fixed 23 / 28 stops after first round for trip pattern 67f85617-dbb9-490b-8e3b-a2861ddf6a32 (UNION STATION) on route e90d2da6-ff28-4604-9875-bc7d3765dd69 +19:24:55,345 INFO ~ Fixed 40 / 48 stops after first round for trip pattern cee3a316-9d2d-483b-b660-5cf8be22b823 (SOUTH LAUREL PARK & RIDE) on route c9300709-f7d0-47f2-b373-4d092307de11 +19:24:55,347 WARN ~ Shape dist traveled past end of shape, was 30937.07840378306, expected max 30937.07840378306, clamping +19:24:55,384 INFO ~ Fixed 27 / 27 stops after first round for trip pattern 3bf82462-fc6d-4a57-b7cb-50b80a59cd58 (QUAKER LANE) on route e9c946b6-59d7-4a3f-ac57-fb23553eaa14 +19:24:55,436 INFO ~ Fixed 22 / 30 stops after first round for trip pattern aee00d3b-11ab-4903-a91f-c69e0205c742 (GREENCASTLE PARK & RIDE) on route 02918ea7-0704-4f8b-8aa2-202f971fd2d0 +19:24:55,483 INFO ~ Fixed 23 / 29 stops after first round for trip pattern a035a225-b44a-4682-9a16-fb1732dafefc (GEORGETOWN UNIVERSITY) on route 4761f0cd-092e-4c7b-9b40-fa35356f13b8 +19:24:55,766 INFO ~ Loaded 37000 / 49539 trips +19:24:55,840 INFO ~ Fixed 38 / 44 stops after first round for trip pattern 37320753-3649-49db-a9c7-460353c19429 (GLOVER PARK) on route d29c7c3f-f453-4547-8413-a75fc4a845d0 +19:24:55,841 WARN ~ Shape dist traveled past end of shape, was 9471.577655516288, expected max 9471.577655516288, clamping +19:24:55,858 INFO ~ Fixed 7 / 9 stops after first round for trip pattern 72667ebf-8bd7-46ff-b859-2dba355ef8ac (MCPHERSON SQUARE METRO) on route 2132eff7-ea70-404f-be15-4523b797b73a +19:24:55,975 INFO ~ Fixed 40 / 47 stops after first round for trip pattern a4a0add5-8a54-4ae4-9b11-7c1f2d3c78cf (FRIENDLY) on route 688f247d-b4af-41a1-85bf-b9473721fcfd +19:24:56,017 INFO ~ Fixed 26 / 30 stops after first round for trip pattern 650833c5-22b6-46d6-b54c-ee1973cbc047 (KNOLLWOOD) on route 7aec6c6e-46e3-42e3-aa6c-540f1458e094 +19:24:56,120 INFO ~ Fixed 39 / 44 stops after first round for trip pattern 7245dd78-3b80-46b9-9539-34caee7122f2 (FRIENDSHIP HEIGHTS STATION) on route 4deeb452-efc7-4a92-a9d7-c1957385dc8e +19:24:56,121 WARN ~ Shape dist traveled past end of shape, was 13918.442717316297, expected max 13918.442717316297, clamping +19:24:56,130 INFO ~ Fixed 21 / 21 stops after first round for trip pattern 8fa16df6-9b97-4b2d-8400-64bb4290d781 (FRANCONIA SPRINGFIELD) on route 85eb7683-ac32-49d9-b969-fc8109723f7b +19:24:56,285 INFO ~ Fixed 50 / 59 stops after first round for trip pattern 47654dcf-b5fc-4713-aaf5-d0c916aac6b0 (ASPEN HILL) on route b81e25f7-593e-44eb-91f7-1a36c0a9f156 +19:24:56,286 WARN ~ Shape dist traveled past end of shape, was 17404.537004466067, expected max 17404.537004466067, clamping +19:24:56,494 INFO ~ Fixed 56 / 63 stops after first round for trip pattern 593158c5-44af-4ce5-87e7-f9c2893789b2 (RANDOLPH RD & PARKLAWN DR) on route 454054fe-da87-4295-b6ff-4033e23b8afa +19:24:56,552 INFO ~ Fixed 18 / 21 stops after first round for trip pattern 99af61c2-8502-4413-b77c-a6b36a764f0f (BETHESDA STATION) on route 90ca55d7-51e2-4eb6-b4a1-a96222ec6732 +19:24:56,666 INFO ~ Fixed 37 / 44 stops after first round for trip pattern 77b22c47-bb58-4af3-95a4-a2470e474f3d (PRINCE GEORGES PLAZA STATION) on route ee2a0d70-a69f-4771-b342-1467384b77af +19:24:56,667 WARN ~ Shape dist traveled past end of shape, was 19241.074690872934, expected max 19241.0746786699, clamping +19:24:56,929 INFO ~ Fixed 62 / 75 stops after first round for trip pattern 2c4c17be-e06e-44a2-8b42-e23ff01dc675 (PENN MAR) on route 2ba5f494-d8c6-4a5e-8048-cec924f311f4 +19:24:56,932 WARN ~ Shape dist traveled past end of shape, was 21995.115231462776, expected max 21995.115231462776, clamping +19:24:56,979 INFO ~ Fixed 13 / 13 stops after first round for trip pattern e5644d7f-1724-4b5f-bba4-61e298288583 (GREENBELT) on route a12e9283-0c0c-4834-aa9f-d0eac26bb519 +19:24:57,091 INFO ~ Fixed 44 / 51 stops after first round for trip pattern ed3bb961-d0bd-4d9f-be9a-ff67d29a91bf (NEW CARROLLTON STATION) on route ee2a0d70-a69f-4771-b342-1467384b77af +19:24:57,117 INFO ~ Fixed 22 / 24 stops after first round for trip pattern 7a92b7c1-acd3-46e8-a69f-4604eba3297c (GLOVER PARK) on route 6537941e-d965-4717-8c3e-a61daa69e249 +19:24:57,196 INFO ~ Fixed 4 / 7 stops after first round for trip pattern 6f3c6dd1-09bb-4bdc-8ebb-70a5251963f3 (SKYLINE CITY) on route 93e4fbd3-67a8-45c8-bece-43ddd9c7cc1f +19:24:57,199 WARN ~ Shape dist traveled past end of shape, was 10216.04585871541, expected max 10216.04585871541, clamping +19:24:57,258 INFO ~ Fixed 25 / 40 stops after first round for trip pattern e1d54e61-6aa6-4c63-a0d1-06d8552b2ab1 (RHODE ISLAND AVE STATION) on route ef64932d-bd6d-47a1-9dac-da38164b6b1a +19:24:57,316 INFO ~ Fixed 28 / 35 stops after first round for trip pattern 0ad766a0-d7e5-4aaf-bcaf-b4966f979578 (HUNTINGTON STATION N) on route 4d9b5bd0-f86a-4bb0-a5d0-09eea41b99ba +19:24:57,317 WARN ~ Shape dist traveled past end of shape, was 12401.225539961079, expected max 12401.225364769489, clamping +19:24:57,317 WARN ~ Shape dist traveled past end of shape, was 12401.225539961079, expected max 12401.225364769489, clamping +19:24:57,402 INFO ~ Fixed 9 / 10 stops after first round for trip pattern 65d17da3-b4c5-4780-8bfe-0a1c89db62ce (FORT LINCOLN) on route 6b821979-3a52-4013-8688-67bb7238c4bb +19:24:57,607 INFO ~ Fixed 77 / 87 stops after first round for trip pattern cf829b47-7611-44cd-84c2-167181cc3589 (UNITED MEDICAL CENTER) on route e2b733bd-b058-4f8c-a816-ff56f35888ec +19:24:57,608 WARN ~ Shape dist traveled past end of shape, was 17045.76532700117, expected max 17045.76532700117, clamping +19:24:57,782 INFO ~ Fixed 38 / 53 stops after first round for trip pattern 1849f9b2-9ed1-47a3-8073-8b032f64c562 (BALLSTON) on route 0cb17cd7-6386-41c7-b484-1342b64cdfc8 +19:24:57,816 INFO ~ Fixed 4 / 5 stops after first round for trip pattern 84f790af-c5e5-45a3-ae79-2121a2556276 (L'ENFANT PLAZA STATION) on route 8a448f92-914a-4573-baa1-70e38a14f3b5 +19:24:57,934 INFO ~ Fixed 48 / 51 stops after first round for trip pattern b483b85a-679b-4afe-b041-51c8fbddec46 (ARCHIVES) on route d9e61e73-915f-43db-9fb6-a86e748fedfd +19:24:58,095 INFO ~ Fixed 34 / 39 stops after first round for trip pattern aa54494b-da33-4de8-a3d6-7c7bc9b921da (DC VILLAGE VIA FORT DRUM) on route 58734787-ac66-4da4-bc4b-ee3f043aebbb +19:24:58,122 INFO ~ Loaded 38000 / 49539 trips +19:24:58,208 INFO ~ Fixed 25 / 25 stops after first round for trip pattern cdedb998-cf75-4418-8dae-db1bddea8a5c (SILVER SPRING STATION) on route 3815197b-e013-4687-b97e-6d0a3bf80478 +19:24:58,377 WARN ~ Stop is more than 1km from its shape, using straight-line distances +19:24:58,622 INFO ~ Fixed 39 / 43 stops after first round for trip pattern 06fce3cd-468c-4db0-968c-529df92fc2ee (PENTAGON) on route df81eb66-647b-4d15-ac69-9cb5be28dc04 +19:24:58,823 INFO ~ Fixed 71 / 78 stops after first round for trip pattern 0080c438-ba1c-4689-aec9-36707571bdc1 (FORT WASHINGTON FOREST VIA FRIENDLY) on route 112478fe-86cf-4dff-a9b4-035975aa883c +19:24:58,946 INFO ~ Fixed 39 / 48 stops after first round for trip pattern 7ce2f1aa-d4dd-4570-a3e3-30de8cae3902 (KENNEDY CENTER) on route f8346fd3-2fb8-4e48-8348-82039c822708 +19:24:59,060 INFO ~ Fixed 35 / 48 stops after first round for trip pattern 84a02740-559b-469e-9edd-bf1fb31e9bab (KINGS PARK WEST) on route 7b4236cf-9235-42c4-a5b7-c6c58c87c9d7 +19:24:59,062 WARN ~ Shape dist traveled past end of shape, was 30682.64079117434, expected max 30682.64079117434, clamping +19:24:59,152 INFO ~ Fixed 42 / 48 stops after first round for trip pattern d2fdf00c-e57d-43f9-b73f-4dba96fde74e (SOUTHERN AVE STATION) on route f5e7de0a-9bb6-4499-8cc2-ce579c362245 +19:24:59,259 INFO ~ Fixed 24 / 24 stops after first round for trip pattern 9a736ec4-8f87-49bc-9624-41b64e10a010 (SHADY GROVE) on route 675d11b4-e400-4c17-9a72-b1b3ace62d85 +19:24:59,385 WARN ~ Stop is more than 1km from its shape, using straight-line distances +19:24:59,750 INFO ~ Fixed 66 / 83 stops after first round for trip pattern bea06fed-5bc1-46be-a736-f617a7e7e4f9 (KINGS PARK WEST) on route 238a6232-f250-4d9d-847f-acc0d5c47539 +19:24:59,754 WARN ~ Shape dist traveled past end of shape, was 39656.793637704934, expected max 39656.793637704934, clamping +19:24:59,951 INFO ~ Fixed 61 / 65 stops after first round for trip pattern ec66f2c0-584c-4eb7-8de4-a07af6c9eb01 (GREENBELT STATION) on route 6d4219d7-518f-4ee0-8d70-a59552d3b364 +19:24:59,952 WARN ~ Two stops on trip pattern ec66f2c0-584c-4eb7-8de4-a07af6c9eb01 map to same point on shape +19:24:59,952 WARN ~ Two stops on trip pattern ec66f2c0-584c-4eb7-8de4-a07af6c9eb01 map to same point on shape +19:24:59,999 INFO ~ Fixed 23 / 31 stops after first round for trip pattern 7190eea8-a25b-44a7-8005-79dfcea72f9d (L'ENFANT PLAZA STATION) on route e649fc64-e2be-444d-af93-fc32ae9f5e7a +19:25:00,101 INFO ~ Fixed 43 / 46 stops after first round for trip pattern 2c064d6b-ba29-4bb4-9f03-c5fb09ae87eb (WEST OX ROAD & ALLIANCE DRIVE) on route 6ffbe66d-63da-42d3-90cf-34e7a5679982 +19:25:00,304 INFO ~ Fixed 51 / 68 stops after first round for trip pattern 18e64a5e-245d-4241-aa5c-3b8c1ed03cd7 (RHODE ISLAND AVE STATION) on route 919dd3e2-1fbe-40e9-8a4f-27a226ddab30 +19:25:00,337 INFO ~ Fixed 20 / 23 stops after first round for trip pattern 2fdbcda5-cb08-4116-9fe6-744cd38ccd48 (DUPONT CIRCLE) on route 6537941e-d965-4717-8c3e-a61daa69e249 +19:25:00,403 INFO ~ Loaded 39000 / 49539 trips +19:25:00,671 INFO ~ Fixed 64 / 78 stops after first round for trip pattern 84ba1e11-4272-4162-bddb-52f41a277e83 (WHITE FLINT STATION) on route a231852c-67bd-4eb0-874d-d6b116737c58 +19:25:00,927 INFO ~ Fixed 21 / 24 stops after first round for trip pattern 703b40af-02c7-46a9-9b39-fefff53c7f17 (UNION STATION) on route aea7f134-2589-49cc-adc6-319ed9f3524e +19:25:01,186 INFO ~ Fixed 36 / 48 stops after first round for trip pattern f3f597b3-da19-4d47-b51e-38eff4f3cac1 (SPRINGFIELD) on route 0db7bb12-2453-4ce7-8d2e-e7eae05f809a +19:25:01,223 INFO ~ Fixed 23 / 24 stops after first round for trip pattern 0066369d-6f67-49a3-8c50-104cf829863c (NAVY YARD - BALLPARK STATION) on route 263774df-c4d3-489d-ab2a-08facc5eb14a +19:25:01,244 INFO ~ Fixed 9 / 10 stops after first round for trip pattern 1fe238ef-9778-468e-ac2d-026782bb652f (FAIRFAX VILLAGE) on route fdf7cb85-4ebd-4097-933e-bd7e15310a22 +19:25:01,323 INFO ~ Fixed 19 / 20 stops after first round for trip pattern 1ae3dd6a-d4c0-495e-a288-6b408378e9ff (BRADDOCK RD STATION) on route 4f26c4a6-73d9-4473-ab49-1cb3a686ce81 +19:25:01,393 INFO ~ Fixed 34 / 39 stops after first round for trip pattern 8db5bfc2-cda2-4391-a94e-11ecd56810df (BROOKLAND STATION) on route aae049d7-e693-4765-9063-26a549165df9 +19:25:01,404 INFO ~ Fixed 6 / 6 stops after first round for trip pattern d50b2c92-2553-43a6-b7be-31e57e930eee (DULLES AIRPORT) on route 8a448f92-914a-4573-baa1-70e38a14f3b5 +19:25:01,480 INFO ~ Fixed 35 / 37 stops after first round for trip pattern 1b073e8a-abf9-492e-8851-f5c31139a6e5 (BENNING HEIGHTS) on route bb8a0a52-fbee-43e4-9e81-2cf94df3f324 +19:25:01,647 INFO ~ Fixed 52 / 62 stops after first round for trip pattern e43f8049-0b2e-4c9f-a1a2-81b779e37b1f (BALLSTON) on route f13dcd46-6530-4cca-8214-262d14766e10 +19:25:01,786 INFO ~ Fixed 54 / 60 stops after first round for trip pattern ccc82042-4b41-454e-b3e1-8882abf8ec26 (ARCHIVES) on route 2910d3ce-dc0d-498c-a692-b6fcd674638b +19:25:01,956 WARN ~ Stop is more than 1km from its shape, using straight-line distances +19:25:02,110 INFO ~ Fixed 27 / 30 stops after first round for trip pattern 7a97cc8c-35c0-44c7-94ff-60a0b531fa55 (SOUTH LAUREL PARK & RIDE) on route 008ddbb6-73a5-4bc4-b10e-a4f5f1e4c512 +19:25:02,120 INFO ~ Fixed 6 / 8 stops after first round for trip pattern 820de737-7b94-4750-9af2-7375a3d73cbd (DUPONT-GEORGETOWN-ROSSLYN) on route 5c88719e-8047-4ba8-8eb7-2b4fb7f4ce58 +19:25:02,120 WARN ~ Shape dist traveled past end of shape, was 3640.32715129034, expected max 3640.32715129034, clamping +19:25:02,199 INFO ~ Loaded 40000 / 49539 trips +19:25:02,251 INFO ~ Fixed 24 / 25 stops after first round for trip pattern d23dd208-d814-4518-8bd5-5cb43c108262 (LAFAYETTE SQUARE) on route c7449c4c-793b-4098-b220-43ca3ca39e7b +19:25:02,447 INFO ~ Fixed 14 / 17 stops after first round for trip pattern 37f56455-b42d-4c5f-88e8-5d126296cbb4 (METRO CENTER) on route 3dc4230b-842a-4368-be3c-868ed32e317c +19:25:02,457 INFO ~ Fixed 4 / 4 stops after first round for trip pattern 64149e9e-52a3-4965-9c01-24be102d0677 (CRYSTAL CITY) on route 0a1f794a-a36f-4b08-9bdc-06671672c123 +19:25:02,508 INFO ~ Fixed 27 / 32 stops after first round for trip pattern 9a070a1c-06e6-4ed6-a8cd-4ddfcc95eb84 (CAMP SPRINGS) on route 9ae6bf06-cdd6-4556-a3c0-defc7421df55 +19:25:02,533 INFO ~ Fixed 15 / 21 stops after first round for trip pattern 3413b8a4-c700-4045-add5-0508ffc4f1e8 (GEORGETOWN) on route aea7f134-2589-49cc-adc6-319ed9f3524e +19:25:02,695 INFO ~ Fixed 41 / 54 stops after first round for trip pattern 68bc105b-8530-4fbb-ba8e-0bf7a6ed5df8 (FEDERAL TRIANGLE) on route 086b1b16-ba61-442d-a3f0-ea7e870a00ce +19:25:02,716 INFO ~ Fixed 14 / 14 stops after first round for trip pattern 34a23bd7-8a67-457c-82cc-b28f44c044d2 (LARGO TOWN CENTER) on route bcbe2132-0edd-47eb-954c-7cdb6777f025 +19:25:02,856 INFO ~ Fixed 43 / 48 stops after first round for trip pattern da44d56c-5597-49e1-9a7d-8bd599cc2556 (WEST OX ROAD & ALLIANCE DRIVE) on route 0282b8c3-14fb-4eb2-9951-834f5a662c0b +19:25:02,896 INFO ~ Fixed 13 / 16 stops after first round for trip pattern e009bfa9-d712-49b7-854f-b9a8160d38a7 (MARK CENTER) on route f55bc4d6-9baa-4164-bf24-80613ed9f80e +19:25:02,928 INFO ~ Fixed 25 / 27 stops after first round for trip pattern 072ac952-fffc-4605-be52-d0b2b75f4a6e (PENTAGON) on route c34ce2a5-3f00-4982-80fc-fb7b034e7d5a +19:25:02,968 INFO ~ Fixed 22 / 26 stops after first round for trip pattern dfe90df9-3e3f-4fe1-9473-e555fe8ce2a2 (PENTAGON) on route 5b5834c9-330c-49fc-9be6-a57aa9b5348d +19:25:03,026 INFO ~ Fixed 28 / 32 stops after first round for trip pattern 6c9d3f39-ce00-45fb-942b-e8da08ce6656 (POTOMAC PARK) on route 3bb2e2ce-9c7e-402c-ae25-8adb50676ef8 +19:25:03,407 INFO ~ Fixed 72 / 94 stops after first round for trip pattern e658bbed-87a7-42da-9431-fafeb0bace3d (ADDISON RD STATION) on route 8648a11b-c3f6-4b94-bb82-ead2f4ba5372 +19:25:03,516 INFO ~ Fixed 28 / 33 stops after first round for trip pattern a30dad90-1e31-4ef7-a5ce-4fbf55a995d6 (CRYSTAL CITY) on route 9062c900-b5d2-4472-a301-5eb227ebfd66 +19:25:03,742 INFO ~ Fixed 55 / 67 stops after first round for trip pattern 5c310920-b97b-47c1-a998-514541a1ed5b (PENTAGON) on route 1fe187b4-98d6-4f56-8179-bd5da929aeb9 +19:25:03,917 INFO ~ Fixed 31 / 37 stops after first round for trip pattern 3c64da7d-ae63-4693-9f29-696d59a31316 (PENTAGON) on route 63a212ee-0a3c-4502-b190-2b4248de5422 +19:25:03,962 INFO ~ Fixed 15 / 16 stops after first round for trip pattern 4f960f7a-8fc2-49cb-9cfb-353d5ed1f08d (ANACOSTIA STATION) on route ed0a7b2e-0a1e-41ce-810a-eb7584f52ac8 +19:25:03,989 INFO ~ Loaded 41000 / 49539 trips +19:25:04,177 INFO ~ Fixed 55 / 64 stops after first round for trip pattern 516a3117-1af6-4454-a59b-62655ea32dfc (CALVERTON) on route 659aa27c-6f5f-4608-aa49-5fbcbd841df2 +19:25:04,309 INFO ~ Fixed 33 / 37 stops after first round for trip pattern 345fd97f-9f3c-4e73-bf7f-422fa49aac42 (FARRAGUT SQUARE) on route a3ac06f6-c66a-480c-b35f-1ee7a04e84f2 +19:25:04,367 INFO ~ Fixed 31 / 39 stops after first round for trip pattern 023bff25-d0db-4789-becf-c3bead608c8c (FEDERAL TRIANGLE) on route 291bc5d5-f2e4-4974-ba72-f9e15054e26e +19:25:04,535 INFO ~ Fixed 26 / 28 stops after first round for trip pattern b7ce0142-c7ec-4d24-94b4-052379287adc (16TH & COLORADO) on route f85fc952-8ec2-44c0-aa40-a0a49a954224 +19:25:04,646 INFO ~ Fixed 33 / 40 stops after first round for trip pattern 6b55ae6e-3b45-4739-a910-1c088fb1f8d8 (BLADENSBURG & V NE) on route 58d609ad-3e9b-4025-b9da-335006b884a4 +19:25:04,909 INFO ~ Fixed 70 / 90 stops after first round for trip pattern 48931d1d-6a0d-4805-b7fc-8c48d6e31879 (WASHINGTON OVERLOOK) on route e2b733bd-b058-4f8c-a816-ff56f35888ec +19:25:04,910 WARN ~ Two stops on trip pattern 48931d1d-6a0d-4805-b7fc-8c48d6e31879 map to same point on shape +19:25:04,910 WARN ~ Two stops on trip pattern 48931d1d-6a0d-4805-b7fc-8c48d6e31879 map to same point on shape +19:25:04,911 WARN ~ Two stops on trip pattern 48931d1d-6a0d-4805-b7fc-8c48d6e31879 map to same point on shape +19:25:04,911 WARN ~ Two stops on trip pattern 48931d1d-6a0d-4805-b7fc-8c48d6e31879 map to same point on shape +19:25:04,911 WARN ~ Shape dist traveled past end of shape, was 19779.01355220367, expected max 19779.01355220367, clamping +19:25:05,062 INFO ~ Fixed 30 / 45 stops after first round for trip pattern f1462e78-ea9b-4eb3-926f-08690f3edd50 (RIGGS PARK) on route 71b9fa76-0942-4e55-b77e-86222de33e24 +19:25:05,065 WARN ~ Shape dist traveled past end of shape, was 14282.612589154056, expected max 14282.612589154056, clamping +19:25:05,065 WARN ~ Shape dist traveled past end of shape, was 14282.612589154056, expected max 14282.612589154056, clamping +19:25:05,151 INFO ~ Fixed 33 / 36 stops after first round for trip pattern 3f22d99f-19c6-4f3c-9f62-7fa256ae6686 (TYSONS CORNER STATION) on route 5f2f0976-1d10-4c36-94e3-3ffaa61f72e6 +19:25:05,514 INFO ~ Fixed 79 / 90 stops after first round for trip pattern baa1385c-b117-4e7f-978f-889cfb5f1678 (SOUTHERN AVE STATION) on route d0547e0f-e3b1-4c3e-8b34-0ff080071666 +19:25:05,571 INFO ~ Fixed 22 / 31 stops after first round for trip pattern dce74949-c386-4a09-85ec-6d3b64f28c86 (FRANKLIN SQUARE) on route 086b1b16-ba61-442d-a3f0-ea7e870a00ce +19:25:05,744 INFO ~ Fixed 62 / 70 stops after first round for trip pattern 5a53c5dc-705f-4dce-971e-26a9156db984 (DEANWOOD STATION) on route a41b527c-7bad-4fc6-9dd0-a2a4f55fe4b9 +19:25:06,247 INFO ~ Fixed 32 / 33 stops after first round for trip pattern 36bdad6c-1a32-47ba-9dc9-782cbcc88a98 (PENTAGON) on route e82e1940-d0a5-474d-9038-a38e024743c3 +19:25:06,281 INFO ~ Fixed 19 / 22 stops after first round for trip pattern 028af218-e78a-4ba4-96d1-b0d50384e224 (PENTAGON) on route a93fb001-6c25-4bef-9b60-3dbf27549a2b +19:25:06,305 INFO ~ Fixed 20 / 24 stops after first round for trip pattern 62a59440-2be9-41b5-8fed-24112fb11ed0 (FRIENDSHIP HEIGHTS STATION) on route 7aec6c6e-46e3-42e3-aa6c-540f1458e094 +19:25:06,400 INFO ~ Fixed 30 / 39 stops after first round for trip pattern 46e84022-c99e-47e7-ba28-078ecd6bc3ec (FEDERAL TRIANGLE) on route f85fc952-8ec2-44c0-aa40-a0a49a954224 +19:25:06,644 INFO ~ Fixed 61 / 76 stops after first round for trip pattern 4903a79a-2705-4ddf-b30a-ba54feb1b2a1 (CAMP SPRINGS) on route 9ae6bf06-cdd6-4556-a3c0-defc7421df55 +19:25:06,717 INFO ~ Fixed 39 / 42 stops after first round for trip pattern 00c86d0d-c8e1-4c1b-bcfb-233f1d2477f9 (FARRAGUT SQUARE) on route 514138fc-5fe2-4653-8e91-fe5a119ba57e +19:25:06,968 INFO ~ Fixed 71 / 92 stops after first round for trip pattern ce2fd22a-acfd-4b0a-b7f2-8ea9c4e8a990 (WASHINGTON OVERLOOK) on route e2b733bd-b058-4f8c-a816-ff56f35888ec +19:25:06,969 WARN ~ Two stops on trip pattern ce2fd22a-acfd-4b0a-b7f2-8ea9c4e8a990 map to same point on shape +19:25:06,970 WARN ~ Two stops on trip pattern ce2fd22a-acfd-4b0a-b7f2-8ea9c4e8a990 map to same point on shape +19:25:06,970 WARN ~ Two stops on trip pattern ce2fd22a-acfd-4b0a-b7f2-8ea9c4e8a990 map to same point on shape +19:25:06,970 WARN ~ Two stops on trip pattern ce2fd22a-acfd-4b0a-b7f2-8ea9c4e8a990 map to same point on shape +19:25:07,196 INFO ~ Fixed 55 / 73 stops after first round for trip pattern 426b0ab0-3833-428c-a97c-35770f03e29c (SHADY GROVE STATION) on route 122a3499-08c1-4bed-a227-fb302e868090 +19:25:07,328 INFO ~ Fixed 12 / 35 stops after first round for trip pattern 66af4e78-99e6-4931-9091-994e725a871e (MINNESOTA AVE STATION) on route a1be7d1a-0fc1-4cfc-96ff-06929d1ff313 +19:25:07,337 WARN ~ Shape dist traveled past end of shape, was 9277.151317469457, expected max 9277.151317469457, clamping +19:25:07,340 INFO ~ Fixed 8 / 8 stops after first round for trip pattern ad29b52e-19be-42f9-92a8-d19e9d71da31 (GLENMONT) on route 675d11b4-e400-4c17-9a72-b1b3ace62d85 +19:25:07,523 INFO ~ Fixed 51 / 70 stops after first round for trip pattern 8fc13eb5-3dc7-42f9-a184-2ebde796b89d (IVY CITY - RIGGS PARK) on route 7868ee47-1e7d-44ab-92ba-fc6237b37221 +19:25:07,619 INFO ~ Fixed 23 / 26 stops after first round for trip pattern 39f2dd89-24a1-45cd-b1a0-004dd68b873f (COLLEGE PARK STATION) on route 90ca55d7-51e2-4eb6-b4a1-a96222ec6732 +19:25:07,698 INFO ~ Fixed 39 / 41 stops after first round for trip pattern 85b9535c-80ea-4cb0-8cf6-30258d1a0ed6 (N V C C - ANNANDALE) on route 6b590aed-439e-4e69-b2ca-ab1dbdb48894 +19:25:07,885 INFO ~ Fixed 46 / 66 stops after first round for trip pattern 0dc3517d-3a3e-42d4-be78-6c0d8153f3fb (SILVER SPRING STATION) on route c6d0a86c-47d0-4320-b863-fe033b532537 +19:25:07,907 INFO ~ Loaded 42000 / 49539 trips +19:25:08,121 INFO ~ Fixed 55 / 67 stops after first round for trip pattern 13f53a7a-8f6b-4036-953d-dcdb0ab45fea (CAMP SPRINGS) on route d0547e0f-e3b1-4c3e-8b34-0ff080071666 +19:25:08,212 INFO ~ Fixed 46 / 54 stops after first round for trip pattern 950fd85d-7e96-4d90-8337-9fc299306466 (TENLEYTOWN STATION) on route f3d72c79-3002-47d3-bcfc-224667dc88a3 +19:25:08,233 INFO ~ Fixed 17 / 18 stops after first round for trip pattern 28567d8d-fd2b-4e62-a7a6-004bb102b605 (PENTAGON) on route 7872a5fa-09ab-45d9-a140-f6c74e80eba2 +19:25:08,289 INFO ~ Fixed 21 / 26 stops after first round for trip pattern 1214f462-5340-4e6e-bf16-bbd1a985fb55 (SILVER SPRING STATION) on route 008ddbb6-73a5-4bc4-b10e-a4f5f1e4c512 +19:25:08,409 INFO ~ Fixed 35 / 53 stops after first round for trip pattern 822fb431-1f37-4b24-918b-07166fe5aff5 (SILVER SPRING STATION) on route c6d0a86c-47d0-4320-b863-fe033b532537 +19:25:08,435 INFO ~ Fixed 18 / 19 stops after first round for trip pattern df9c0903-5b8a-4e70-82a6-1d24a9fd1e52 (BARCROFT) on route edea9de0-4066-4bb3-85e2-59e4f82470b5 +19:25:08,523 INFO ~ Fixed 36 / 41 stops after first round for trip pattern 6f80133b-18a6-4af9-91ec-7970a84f12d2 (BROOKLAND STATION) on route 27775e9f-d642-473e-aaba-197e85370831 +19:25:08,561 INFO ~ Fixed 12 / 12 stops after first round for trip pattern d8995b65-7037-437d-a2ce-4616488e63f5 (POTOMAC AVE/SKYLAND) on route b9eacd9b-e7a3-479e-97ee-53ec36b85c6f +19:25:08,639 INFO ~ Fixed 16 / 25 stops after first round for trip pattern bc22e64c-83bd-480e-9fbf-798546fb8c07 (SUITLAND STATION) on route d30d2ccc-a9d5-45bb-8c38-af100dcea94d +19:25:08,664 INFO ~ Fixed 4 / 7 stops after first round for trip pattern 27832b1d-5661-4a04-88d8-73e5db306167 (SILVER SPRING STATION) on route 008ddbb6-73a5-4bc4-b10e-a4f5f1e4c512 +19:25:08,686 INFO ~ Fixed 24 / 25 stops after first round for trip pattern 8329fedd-4364-46ec-931f-6861340b36dc (NAYLOR & GOOD HOPE) on route e2b733bd-b058-4f8c-a816-ff56f35888ec +19:25:08,841 INFO ~ Fixed 34 / 41 stops after first round for trip pattern fabed13f-0120-4c00-b745-fa72af44e0a8 (PENTAGON) on route 7f23592a-f298-4242-ac14-390ddd2c1573 +19:25:08,888 WARN ~ Stop is more than 1km from its shape, using straight-line distances +19:25:08,984 INFO ~ Fixed 24 / 31 stops after first round for trip pattern 44084cd5-9351-4b25-a30a-0ee438b767a0 (SILVER SPRING STATION) on route d3a223e2-28ab-47f0-a4ff-88b303ce425a +19:25:09,151 INFO ~ Fixed 53 / 60 stops after first round for trip pattern 34c96431-3685-4545-b7d6-1e4dab428c50 (ANNANDALE VIA COLUMBIA PIKE) on route e3b98b33-3619-4c54-a8e5-aee7d093038f +19:25:09,201 INFO ~ Fixed 11 / 15 stops after first round for trip pattern 5f55fd86-61ac-4bf5-a21e-44df3fcf538d (FRANKLIN SQUARE) on route 6cd1d938-a1fe-43e1-a664-6af55927003c +19:25:09,408 INFO ~ Fixed 56 / 72 stops after first round for trip pattern 90f87b81-808e-4316-b799-32de1efd0c19 (MONTGOMERY MEDICAL CENTER) on route 2a6ae91c-d592-450c-b420-c080d4c48ece +19:25:09,605 INFO ~ Fixed 29 / 34 stops after first round for trip pattern 8543bf24-5231-452d-bcd9-c5fb30fd8c3f (PENTAGON) on route ba56f8fe-ca6b-487a-97bb-d7f58c8216ae +19:25:09,730 INFO ~ Fixed 41 / 48 stops after first round for trip pattern 99228929-5ead-4138-a18b-ec63186a1363 (FARRAGUT SQUARE) on route 14c5f730-3636-4ce3-a4bb-0734164faf9b +19:25:09,869 INFO ~ Fixed 42 / 46 stops after first round for trip pattern 578bafde-4ca0-445e-bfcf-42d9329251c8 (GEORGE MASON UNIVERSITY) on route 7f23592a-f298-4242-ac14-390ddd2c1573 +19:25:10,070 INFO ~ Fixed 53 / 63 stops after first round for trip pattern 4653d48d-73cd-405a-8241-c490b636227d (BOWIE PARK & RIDE) on route ef580214-561e-4e5e-96ae-9fc8dc37cd6e +19:25:10,078 INFO ~ Fixed 2 / 2 stops after first round for trip pattern 2735bd09-4ea7-4a0a-b5f7-db0f3e007e52 (MARK CENTER) on route 4004ab90-81a0-46f1-8332-0c5f2e012e42 +19:25:10,166 INFO ~ Fixed 41 / 43 stops after first round for trip pattern 224e62ad-fe46-4d82-b097-0f70c66e3dad (NEW CARROLLTON STATION) on route 731ba8e4-d838-43fb-856e-6d60c9f473dc +19:25:10,249 INFO ~ Fixed 39 / 43 stops after first round for trip pattern 87f3f100-f359-401e-a0df-8d4da23825a8 (BROOKLAND STATION) on route 27775e9f-d642-473e-aaba-197e85370831 +19:25:10,328 INFO ~ Fixed 13 / 13 stops after first round for trip pattern 0c677a7c-50f6-4574-90de-43e494d803d6 (GEORGETOWN) on route aea7f134-2589-49cc-adc6-319ed9f3524e +19:25:10,493 INFO ~ Fixed 55 / 64 stops after first round for trip pattern 7aec0f71-e879-4ac2-93dc-7e53cf6f6266 (FORT TOTTEN) on route f8346fd3-2fb8-4e48-8348-82039c822708 +19:25:10,728 WARN ~ Stop is more than 1km from its shape, using straight-line distances +19:25:10,738 INFO ~ Loaded 43000 / 49539 trips +19:25:10,799 INFO ~ Fixed 16 / 20 stops after first round for trip pattern 2419c98f-02f2-4e7d-b3e6-301824a6dd3e (SPRINGFIELD) on route ef8584c7-14c7-40c2-9de1-28bb19e149ee +19:25:10,991 INFO ~ Fixed 53 / 72 stops after first round for trip pattern 83cd9a6d-a11a-49ae-88fe-45e05016749d (IVY CITY - RIGGS PARK) on route 7868ee47-1e7d-44ab-92ba-fc6237b37221 +19:25:11,090 INFO ~ Fixed 26 / 37 stops after first round for trip pattern 5082322d-fd4d-4c56-b1a4-5247e3c066fc (NEW CARROLLTON STATION) on route 47e747f8-fee2-4376-9d7c-fc55b29c8ba6 +19:25:11,117 INFO ~ Fixed 22 / 24 stops after first round for trip pattern 8452d799-982b-42d8-9bfb-597508ade32c (GLOVER PARK) on route 6537941e-d965-4717-8c3e-a61daa69e249 +19:25:11,319 INFO ~ Fixed 55 / 66 stops after first round for trip pattern bf141792-1456-474c-adce-b0196ec4f56a (ROCKVILLE STATION) on route f655616f-684e-48aa-a1a9-0a3a7ad02ea5 +19:25:11,320 WARN ~ Shape dist traveled past end of shape, was 25379.3429435969, expected max 25379.3429435969, clamping +19:25:11,800 INFO ~ Fixed 55 / 58 stops after first round for trip pattern d88fe039-3f82-4bf7-be1b-440d9b7608e9 (GREENBELT STATION) on route 731ba8e4-d838-43fb-856e-6d60c9f473dc +19:25:11,899 INFO ~ Fixed 37 / 47 stops after first round for trip pattern e1cce083-325c-4de5-a482-50ca0cfb9ff9 (IVY CITY) on route 7dac992e-f54b-40c6-86fe-0f57adf5d3f7 +19:25:12,042 INFO ~ Fixed 48 / 59 stops after first round for trip pattern eef3c56c-1a59-4a2a-96d8-f25202755762 (L'ENFANT PLAZA STATION) on route c9fc83e7-760f-4a2a-b282-5b459887a9c5 +19:25:12,157 INFO ~ Fixed 30 / 36 stops after first round for trip pattern 6595d8f7-f350-42d4-b251-17c0ecdd776b (VIENNA STATION) on route a5bb8f3b-7bff-410a-aed2-d2ca5d502ffa +19:25:12,272 INFO ~ Fixed 37 / 49 stops after first round for trip pattern fedb2905-ef8d-4afa-a52e-5dbeff38e607 (FRANKLIN SQUARE) on route 086b1b16-ba61-442d-a3f0-ea7e870a00ce +19:25:12,354 INFO ~ Fixed 30 / 37 stops after first round for trip pattern e81d4298-3c1a-45a8-9f0b-55089245de88 (MT RAINIER) on route 58d609ad-3e9b-4025-b9da-335006b884a4 +19:25:12,355 WARN ~ Shape dist traveled past end of shape, was 9425.584507668782, expected max 9425.584507668782, clamping +19:25:12,356 WARN ~ Shape dist traveled past end of shape, was 9425.584507668782, expected max 9425.584507668782, clamping +19:25:12,409 INFO ~ Fixed 24 / 36 stops after first round for trip pattern 7db5ad42-f1cc-4577-a533-49901bb72f5f (14TH & BUCHANAN) on route 64c68e09-196c-4802-a5aa-96fed484b3fe +19:25:12,411 WARN ~ Shape dist traveled past end of shape, was 9833.583128196287, expected max 9833.583128196287, clamping +19:25:12,444 INFO ~ Fixed 15 / 17 stops after first round for trip pattern 30077c28-2d39-4f44-85f4-18fce752aba1 (MCPHERSON SQUARE) on route 3e85c470-b37c-4b75-b57f-52192c172920 +19:25:12,534 INFO ~ Fixed 31 / 40 stops after first round for trip pattern 6570d83f-22ab-4431-a67f-aa2d819c5594 (BRANCH AVE STATION) on route b9ed926b-700f-48d2-bfa1-9327158a9be5 +19:25:12,634 INFO ~ Fixed 28 / 32 stops after first round for trip pattern 6e00a9c1-ec8a-4200-90b6-089a20b53562 (SKYLINE CITY) on route 9062c900-b5d2-4472-a301-5eb227ebfd66 +19:25:12,635 WARN ~ Shape dist traveled past end of shape, was 11039.6857845148, expected max 11039.6857845148, clamping +19:25:12,743 INFO ~ Fixed 48 / 52 stops after first round for trip pattern 01ac3f70-2165-4db2-8d85-f0f137005ed1 (BUREAU OF ENGRAVING) on route 263774df-c4d3-489d-ab2a-08facc5eb14a +19:25:12,744 WARN ~ Shape dist traveled past end of shape, was 15175.535735677058, expected max 15175.535735677058, clamping +19:25:12,869 INFO ~ Fixed 41 / 46 stops after first round for trip pattern e59990b1-d69e-4744-8a52-2a5593a56197 (DUNN LORING STATION) on route 6ffbe66d-63da-42d3-90cf-34e7a5679982 +19:25:12,956 INFO ~ Fixed 28 / 31 stops after first round for trip pattern 38d5716e-9f71-44f1-98db-86c051e17291 (CAPITOL HEIGHTS STATION) on route e90d2da6-ff28-4604-9875-bc7d3765dd69 +19:25:12,999 INFO ~ Fixed 17 / 20 stops after first round for trip pattern b3c359c4-e9e2-4d86-99d7-7baba8bbae95 (FOGGY BOTTOM STATION) on route c03c66cd-b90c-442c-8782-b2dee724c621 +19:25:13,183 INFO ~ Fixed 67 / 75 stops after first round for trip pattern e863d0eb-5c5b-43ad-bb19-abdd78b07ba1 (FRIENDSHIP HEIGHTS) on route a663565d-e18f-4f55-b9fb-32c688ee6fe7 +19:25:13,567 INFO ~ Fixed 56 / 70 stops after first round for trip pattern 993518a3-04af-4bd8-848f-fb2ff0faed21 (ANNANDALE VIA CULMORE) on route 1fe187b4-98d6-4f56-8179-bd5da929aeb9 +19:25:13,615 INFO ~ Fixed 17 / 17 stops after first round for trip pattern eb8deca2-a429-41c7-8b1a-c5207af9db28 (HUNTINGTON) on route 85eb7683-ac32-49d9-b969-fc8109723f7b +19:25:13,878 INFO ~ Fixed 60 / 61 stops after first round for trip pattern 918d6d65-253d-460e-877f-f4fb01890350 (GREENBELT STATION) on route 731ba8e4-d838-43fb-856e-6d60c9f473dc +19:25:14,016 INFO ~ Fixed 43 / 52 stops after first round for trip pattern 0cb8f17d-73ec-4740-a2dd-a05999fb414b (SILVER SPRING STATION) on route a5d53598-b6d2-483d-afeb-53f0e06851e0 +19:25:14,025 INFO ~ Loaded 44000 / 49539 trips +19:25:14,264 INFO ~ Fixed 63 / 82 stops after first round for trip pattern c333de79-3964-4206-83d4-2e0758992d09 (ADDISON RD STATION) on route 0232e955-5abd-4f51-a0f3-f74fa0382b17 +19:25:14,393 INFO ~ Fixed 25 / 25 stops after first round for trip pattern 90108bb8-dec6-47e6-9458-696d56398000 (LARGO TOWN CENTER) on route bcbe2132-0edd-47eb-954c-7cdb6777f025 +19:25:14,402 INFO ~ Fixed 23 / 23 stops after first round for trip pattern cb9964ea-3c77-41c8-88c6-f39aff391217 (GROSVENOR) on route 675d11b4-e400-4c17-9a72-b1b3ace62d85 +19:25:14,526 INFO ~ Fixed 52 / 56 stops after first round for trip pattern 8bc259ba-917b-43ee-9169-3bbe8a649e40 (SILVER SPRING STATION) on route 086b1b16-ba61-442d-a3f0-ea7e870a00ce +19:25:14,752 INFO ~ Fixed 66 / 72 stops after first round for trip pattern 770b46cd-d93b-4e7c-ac5e-2409bd244787 (TYSONS CORNER STATION) on route 29d0d9cd-8b58-47e5-af03-4a42f14048a6 +19:25:15,025 INFO ~ Fixed 47 / 62 stops after first round for trip pattern 1ffdd239-a391-46df-92df-818d66a11229 (SILVER SPRING STATION) on route 122a3499-08c1-4bed-a227-fb302e868090 +19:25:15,088 INFO ~ Fixed 31 / 42 stops after first round for trip pattern 64da4946-3478-4847-946d-22400407d286 (ADDISON RD STATION) on route 391a9985-5e5f-46b7-8dc6-9b2e66b2f0a5 +19:25:15,154 INFO ~ Fixed 12 / 12 stops after first round for trip pattern 61c9f4a3-d332-4fdb-80f9-38a37f667e3c (MOUNT VERNON SQUARE) on route 85eb7683-ac32-49d9-b969-fc8109723f7b +19:25:15,201 INFO ~ Fixed 12 / 15 stops after first round for trip pattern 1cb878fb-ceb0-4f1f-be96-0b574a02a31e (PENTAGON) on route 43c9e904-6d1e-4d86-8f38-cd04e1729fc0 +19:25:15,458 INFO ~ Fixed 57 / 72 stops after first round for trip pattern 6622c36d-7fae-49c1-9d33-2f23a9448923 (ANNANDALE VIA CULMORE) on route 9ded3363-951b-431b-8fc1-ef6847ac5e95 +19:25:15,478 INFO ~ Fixed 16 / 19 stops after first round for trip pattern 7d650bfb-604c-4d98-a34a-36657dce0a6d (FORT LINCOLN) on route 777bdadf-f8c6-4335-86fc-fa1953d1afd1 +19:25:15,479 WARN ~ Shape dist traveled past end of shape, was 4576.063658113234, expected max 4576.063658113234, clamping +19:25:15,804 INFO ~ Fixed 66 / 72 stops after first round for trip pattern 0f5e4c88-3ae1-4c5a-af02-cee8d34daa59 (ADDISON RD STATION) on route 65ddba12-4924-43ff-aa16-4286a4893474 +19:25:15,826 INFO ~ Fixed 3 / 3 stops after first round for trip pattern 0331460a-2f8b-4596-9389-fae2e01a9634 (MARK CENTER) on route 4004ab90-81a0-46f1-8332-0c5f2e012e42 +19:25:15,856 INFO ~ Fixed 27 / 28 stops after first round for trip pattern 06f9212e-d1d5-4dcb-b28b-592f5e9ca2c3 (ADDISON RD STATION) on route 0232e955-5abd-4f51-a0f3-f74fa0382b17 +19:25:15,904 INFO ~ Fixed 30 / 32 stops after first round for trip pattern b36ebd63-c41c-4544-9cf1-dc2c0a1d6c4a (NEW CARROLLTON STATION) on route b3fba861-418d-4332-95c1-d1d359cb69a6 +19:25:16,032 INFO ~ Fixed 45 / 48 stops after first round for trip pattern ffde84ea-4a80-424f-bc77-25bd7563f113 (FAIR OAKS MALL) on route 6ffbe66d-63da-42d3-90cf-34e7a5679982 +19:25:16,100 INFO ~ Fixed 17 / 24 stops after first round for trip pattern 9aa9340d-31d6-4718-b51e-e2320a5d0eaa (PENN MAR) on route b9ed926b-700f-48d2-bfa1-9327158a9be5 +19:25:16,128 INFO ~ Fixed 17 / 21 stops after first round for trip pattern 0e07dfc3-8493-4f8e-9a1c-9e5963adfb69 (SOUTHERN AVE STATION) on route eed77051-031b-4625-9f62-456da413db83 +19:25:16,129 WARN ~ Shape dist traveled past end of shape, was 12158.910201517072, expected max 12158.910201517072, clamping +19:25:16,513 INFO ~ Fixed 73 / 92 stops after first round for trip pattern b9303940-389a-4ec2-8b17-34631d45a021 (EASTOVER) on route 8648a11b-c3f6-4b94-bb82-ead2f4ba5372 +19:25:16,744 INFO ~ Fixed 16 / 20 stops after first round for trip pattern 208af358-c962-4d1c-be28-bf20d8afad27 (POTOMAC PARK) on route 24dffea9-c23c-4699-966b-9a5a1c1653bd +19:25:17,057 INFO ~ Fixed 37 / 46 stops after first round for trip pattern 6a54f296-3d1b-4159-873a-20a1c9650419 (CASTLE BLVD) on route c6d0a86c-47d0-4320-b863-fe033b532537 +19:25:17,203 INFO ~ Fixed 49 / 53 stops after first round for trip pattern b50ef5e1-7916-45b8-850f-d4770205745a (VIENNA STATION) on route fd94d309-87ba-47c2-a7f1-649be2e841fe +19:25:17,315 INFO ~ Fixed 42 / 47 stops after first round for trip pattern ce8bb72a-ac04-4b6b-a1d1-015529fcf6f0 (NEW CARROLLTON STATION) on route 6d4219d7-518f-4ee0-8d70-a59552d3b364 +19:25:17,316 WARN ~ Two stops on trip pattern ce8bb72a-ac04-4b6b-a1d1-015529fcf6f0 map to same point on shape +19:25:17,316 WARN ~ Two stops on trip pattern ce8bb72a-ac04-4b6b-a1d1-015529fcf6f0 map to same point on shape +19:25:17,344 INFO ~ Fixed 16 / 26 stops after first round for trip pattern 696af4d2-0b24-4816-b621-7ee5d9d46607 (14TH & BUCHANAN) on route a055fc6f-a7c4-4856-b754-083a44b83863 +19:25:17,345 WARN ~ Shape dist traveled past end of shape, was 6637.478011578055, expected max 6637.478011578055, clamping +19:25:17,369 INFO ~ Fixed 16 / 20 stops after first round for trip pattern 239be02f-2de0-4187-98f1-24ed0ecb6b55 (UNION STATION) on route f26cf571-31b2-4eeb-8f86-494988b85995 +19:25:17,469 INFO ~ Fixed 39 / 46 stops after first round for trip pattern 21093957-8857-4b1e-ae1e-b187a7ff3691 (PENTAGON) on route 0db7bb12-2453-4ce7-8d2e-e7eae05f809a +19:25:17,590 INFO ~ Fixed 50 / 59 stops after first round for trip pattern 408a80a3-4e0d-423d-9ec3-138389889750 (TENLEYTOWN STATION) on route a92ae21c-9adf-4fa1-b4ca-141eb353aca7 +19:25:17,604 INFO ~ Loaded 45000 / 49539 trips +19:25:17,699 INFO ~ Fixed 40 / 44 stops after first round for trip pattern 129d24e1-03c7-4adb-9e6b-002766566343 (DUNN LORING STATION) on route 0282b8c3-14fb-4eb2-9951-834f5a662c0b +19:25:17,725 INFO ~ Fixed 4 / 4 stops after first round for trip pattern 49628a76-875d-4432-9f2f-7e895cbb262b (COAST GUARD HQ) on route 43adee91-a11a-4696-93c3-d9ea73a59d8d +19:25:17,745 INFO ~ Fixed 9 / 15 stops after first round for trip pattern 00a705c9-f7f2-418e-8ee7-32aa8aab59f4 (FRANKLIN SQUARE) on route 6cd1d938-a1fe-43e1-a664-6af55927003c +19:25:17,769 INFO ~ Fixed 7 / 9 stops after first round for trip pattern 8f4d4c93-2b3f-4ffc-84ee-3570ccbbff02 (LIVINGSTON VIA COAST GUARD HQ) on route 43adee91-a11a-4696-93c3-d9ea73a59d8d +19:25:17,956 INFO ~ Fixed 57 / 69 stops after first round for trip pattern 52565c41-0349-41b6-b2f3-9317d864aa5e (NEW CARROLLTON STATION) on route b8fe3422-4e66-4087-beac-b82d90639791 +19:25:17,958 WARN ~ Shape dist traveled past end of shape, was 20139.803927783847, expected max 20139.803927783847, clamping +19:25:17,959 WARN ~ Shape dist traveled past end of shape, was 20139.803927783847, expected max 20139.803927783847, clamping +19:25:18,060 INFO ~ Fixed 38 / 40 stops after first round for trip pattern 6ff497a1-d639-4c31-b723-bf05b5a14de6 (SOUTHERN AVE STATION) on route 2a768143-d6a0-4e63-9c7f-e0ef651fa5fc +19:25:18,152 INFO ~ Fixed 30 / 37 stops after first round for trip pattern 52693fb1-b0ea-4d7e-a497-679940e548bb (PENTAGON) on route 20e4ec8d-150a-47e1-b0a9-9a1a7a740a1c +19:25:18,218 INFO ~ Fixed 27 / 31 stops after first round for trip pattern db138a05-ded2-4dc3-9687-93b8b6d7449a (ROSSLYN) on route c426e40b-6016-4d05-a935-c13ab2709189 +19:25:18,489 INFO ~ Fixed 63 / 76 stops after first round for trip pattern cfefbab6-1b75-44c8-8999-065c30fbd17d (RHODE ISLAND AVE STATION) on route e4394d64-dd3c-479a-b34e-4c4ee8abb7cc +19:25:18,568 INFO ~ Fixed 3 / 4 stops after first round for trip pattern 0f3847f3-af6b-43f7-8b93-71432ad865c8 (BWI/THURGOOD MARSHALL AIRPORT) on route 228b8fdb-f69a-4989-9ed9-971a65136625 +19:25:18,827 INFO ~ Fixed 62 / 74 stops after first round for trip pattern 5616c89c-4ee3-4070-b970-a534b8ac40d3 (FORT TOTTEN) on route ee2a0d70-a69f-4771-b342-1467384b77af +19:25:18,967 INFO ~ Fixed 41 / 47 stops after first round for trip pattern 6587bee9-cef4-43a1-b30f-fd7b4c5573fa (ADDISON RD STATION) on route 7a9d3b6c-d3cc-4099-a31b-4c7c4f408ac8 +19:25:19,229 INFO ~ Fixed 48 / 71 stops after first round for trip pattern 4f5f4e2b-7bac-4409-8168-fe4ccbfe54f9 (BALLSTON) on route a5b513fd-d5de-41fa-90c1-a27e84948367 +19:25:19,230 WARN ~ Two stops on trip pattern 4f5f4e2b-7bac-4409-8168-fe4ccbfe54f9 map to same point on shape +19:25:19,230 WARN ~ Two stops on trip pattern 4f5f4e2b-7bac-4409-8168-fe4ccbfe54f9 map to same point on shape +19:25:19,231 WARN ~ Two stops on trip pattern 4f5f4e2b-7bac-4409-8168-fe4ccbfe54f9 map to same point on shape +19:25:19,231 WARN ~ Two stops on trip pattern 4f5f4e2b-7bac-4409-8168-fe4ccbfe54f9 map to same point on shape +19:25:19,231 WARN ~ Two stops on trip pattern 4f5f4e2b-7bac-4409-8168-fe4ccbfe54f9 map to same point on shape +19:25:19,231 WARN ~ Two stops on trip pattern 4f5f4e2b-7bac-4409-8168-fe4ccbfe54f9 map to same point on shape +19:25:19,231 WARN ~ Two stops on trip pattern 4f5f4e2b-7bac-4409-8168-fe4ccbfe54f9 map to same point on shape +19:25:19,231 WARN ~ Two stops on trip pattern 4f5f4e2b-7bac-4409-8168-fe4ccbfe54f9 map to same point on shape +19:25:19,231 WARN ~ Two stops on trip pattern 4f5f4e2b-7bac-4409-8168-fe4ccbfe54f9 map to same point on shape +19:25:19,231 WARN ~ Two stops on trip pattern 4f5f4e2b-7bac-4409-8168-fe4ccbfe54f9 map to same point on shape +19:25:19,231 WARN ~ Two stops on trip pattern 4f5f4e2b-7bac-4409-8168-fe4ccbfe54f9 map to same point on shape +19:25:19,330 INFO ~ Fixed 12 / 15 stops after first round for trip pattern 4bfb3e83-60f6-48ea-b5cb-009e4a6fc129 (LAKEFOREST) on route 8245a4f0-29ea-4ef9-bada-187fcf640291 +19:25:19,334 WARN ~ Shape dist traveled past end of shape, was 26234.93156174033, expected max 26234.93156174033, clamping +19:25:19,384 INFO ~ Fixed 29 / 34 stops after first round for trip pattern 2304c06e-1cb3-48e2-8523-52c5aa71a10b (PENTAGON) on route ba56f8fe-ca6b-487a-97bb-d7f58c8216ae +19:25:19,396 INFO ~ Fixed 7 / 7 stops after first round for trip pattern a2c3bb1f-3c4b-4def-9ac9-ab7ae9283b89 (SHADY GROVE) on route 675d11b4-e400-4c17-9a72-b1b3ace62d85 +19:25:19,689 INFO ~ Fixed 69 / 102 stops after first round for trip pattern 144285d3-798d-44d9-ab8f-515f175ed14e (ANACOSTIA STATION) on route e2b733bd-b058-4f8c-a816-ff56f35888ec +19:25:19,691 WARN ~ Two stops on trip pattern 144285d3-798d-44d9-ab8f-515f175ed14e map to same point on shape +19:25:19,691 WARN ~ Two stops on trip pattern 144285d3-798d-44d9-ab8f-515f175ed14e map to same point on shape +19:25:19,691 WARN ~ Two stops on trip pattern 144285d3-798d-44d9-ab8f-515f175ed14e map to same point on shape +19:25:19,691 WARN ~ Shape dist traveled past end of shape, was 23318.451255180145, expected max 23318.451255180145, clamping +19:25:19,692 WARN ~ Shape dist traveled past end of shape, was 23318.451255180145, expected max 23318.451255180145, clamping +19:25:19,692 WARN ~ Shape dist traveled past end of shape, was 23318.451255180145, expected max 23318.451255180145, clamping +19:25:19,692 WARN ~ Shape dist traveled past end of shape, was 23318.451255180145, expected max 23318.451255180145, clamping +19:25:19,693 WARN ~ Shape dist traveled past end of shape, was 23318.451255180145, expected max 23318.451255180145, clamping +19:25:19,693 WARN ~ Shape dist traveled past end of shape, was 23318.451255180145, expected max 23318.451255180145, clamping +19:25:19,693 WARN ~ Shape dist traveled past end of shape, was 23318.451255180145, expected max 23318.451255180145, clamping +19:25:19,693 WARN ~ Shape dist traveled past end of shape, was 23318.451255180145, expected max 23318.451255180145, clamping +19:25:19,757 INFO ~ Fixed 21 / 27 stops after first round for trip pattern 34cb5265-a9ce-4b51-b12f-402be95f9442 (RHODE ISLAND AVE STATION) on route 4a537ff7-3d11-4e37-9535-7de9296bd8a8 +19:25:19,758 WARN ~ Shape dist traveled past end of shape, was 6049.315221176295, expected max 6049.315221176295, clamping +19:25:19,758 WARN ~ Shape dist traveled past end of shape, was 6049.315221176295, expected max 6049.315221176295, clamping +19:25:19,849 INFO ~ Fixed 34 / 36 stops after first round for trip pattern 21260b8a-cf4c-47ff-b757-f9b719a43413 (DEANWOOD STATION) on route 263774df-c4d3-489d-ab2a-08facc5eb14a +19:25:20,014 INFO ~ Fixed 50 / 53 stops after first round for trip pattern 21aaaa4a-8d6b-458d-a2fd-3825d149a0e1 (WEST OX ROAD & ALLIANCE DRIVE) on route 6ffbe66d-63da-42d3-90cf-34e7a5679982 +19:25:20,110 INFO ~ Fixed 29 / 45 stops after first round for trip pattern 12c5ae9a-8be4-450c-a5bd-ef2c988698bb (FRIENDSHIP HEIGHTS STATION) on route 71b9fa76-0942-4e55-b77e-86222de33e24 +19:25:20,411 INFO ~ Fixed 63 / 75 stops after first round for trip pattern 3a19f591-fe84-426a-a745-77730b0bad5d (ADDISON RD STATION) on route 60f41c92-901d-42cf-89b3-c45c68fe485b +19:25:20,523 INFO ~ Fixed 33 / 42 stops after first round for trip pattern 39d39316-499e-4d9b-b369-7376d6cf8331 (NEW CARROLLTON STATION) on route eac6c002-920d-446f-96f7-72a8151901db +19:25:20,525 WARN ~ Shape dist traveled past end of shape, was 14935.650023501443, expected max 14935.650023501443, clamping +19:25:20,573 INFO ~ Fixed 26 / 28 stops after first round for trip pattern 8ed39edf-f452-4370-8cbe-9274e3dbb8a6 (NAYLOR RD STATION) on route 8ed59dab-efdc-44fd-b2b1-37b530a2f5b5 +19:25:20,734 INFO ~ Fixed 30 / 36 stops after first round for trip pattern be2b9f84-9f29-4641-863d-e746d1a8da3b (PENTAGON) on route 63a212ee-0a3c-4502-b190-2b4248de5422 +19:25:20,856 INFO ~ Fixed 48 / 52 stops after first round for trip pattern 008871c2-c333-46e8-9ccb-cd6841197a0b (ARCHIVES) on route f21856a0-725d-4a16-bd92-1813334ffbe5 +19:25:20,867 INFO ~ Fixed 24 / 24 stops after first round for trip pattern fd2ba9fd-d1ea-44ab-8d74-b598a553b900 (SILVER SPRING) on route 675d11b4-e400-4c17-9a72-b1b3ace62d85 +19:25:21,147 INFO ~ Fixed 57 / 67 stops after first round for trip pattern 6a624e3d-c507-4d4f-9863-18fab02dc668 (SILVER SPRING STATION) on route b8fe3422-4e66-4087-beac-b82d90639791 +19:25:21,194 INFO ~ Loaded 46000 / 49539 trips +19:25:21,402 INFO ~ Fixed 53 / 56 stops after first round for trip pattern e48dde62-a8e6-4da3-99dc-d9bf4c873641 (GEORGE MASON UNIVERSITY) on route 098fd154-1adc-4e44-b476-adafafc3dab2 +19:25:21,453 INFO ~ Fixed 9 / 13 stops after first round for trip pattern bc0065e5-6b6a-4b5f-9a07-ff8230fb2e19 (SILVER SPRING STATION) on route 2f8b2ed6-7d7c-4aa6-8fb1-7b38c0e0af75 +19:25:21,460 INFO ~ Fixed 2 / 2 stops after first round for trip pattern 2872f39b-828d-4a8f-acd7-8a8182758907 (PENTAGON) on route e73c9094-c273-42ab-a323-c95c180f3225 +19:25:21,879 INFO ~ Fixed 87 / 102 stops after first round for trip pattern 356342e2-a282-43d7-965d-4100aeb66f6c (SOUTHERN AVE STATION) on route 9ae6bf06-cdd6-4556-a3c0-defc7421df55 +19:25:22,080 INFO ~ Fixed 29 / 41 stops after first round for trip pattern 8600dafa-e879-4b67-9952-fa6ab02f530e (FORT TOTTEN) on route 657a4f65-9c6b-4998-a126-d8b3999e9253 +19:25:22,105 INFO ~ Fixed 14 / 17 stops after first round for trip pattern 647e2b62-d7cc-40a4-8368-503e5036c17d (GEORGIA AVE - PETWORTH STATION) on route 22c5cfb4-a015-4f91-a81c-5ad981b37d99 +19:25:22,229 INFO ~ Fixed 45 / 55 stops after first round for trip pattern 1d77a8da-a8f1-4613-97cb-0320c23255dd (MT RAINIER) on route 58d609ad-3e9b-4025-b9da-335006b884a4 +19:25:22,230 WARN ~ Shape dist traveled past end of shape, was 14495.220189465632, expected max 14495.220189465632, clamping +19:25:22,231 WARN ~ Shape dist traveled past end of shape, was 14495.220189465632, expected max 14495.220189465632, clamping +19:25:22,318 INFO ~ Fixed 25 / 27 stops after first round for trip pattern 71d334d3-8fbd-440e-88e6-16f0b7d917fd (N V C C - ANNANDALE) on route c34ce2a5-3f00-4982-80fc-fb7b034e7d5a +19:25:22,318 WARN ~ Shape dist traveled past end of shape, was 18966.20333381271, expected max 18966.20333381271, clamping +19:25:22,774 INFO ~ Fixed 51 / 72 stops after first round for trip pattern 237cdf5c-e749-4d20-8f49-4ed30d2dc4b5 (WASHINGTON BUSINESS PARK) on route 8591c000-2379-43a1-a8ae-ffcc23d49467 +19:25:23,139 INFO ~ Fixed 65 / 81 stops after first round for trip pattern b7ed338d-912e-451d-afec-5458b8b3dbc6 (CHEVERLY STATION) on route 495bc5f6-d4fe-4763-9dab-f2fb19b94f96 +19:25:23,141 WARN ~ Two stops on trip pattern b7ed338d-912e-451d-afec-5458b8b3dbc6 map to same point on shape +19:25:23,259 INFO ~ Fixed 31 / 34 stops after first round for trip pattern 86cc47c3-de1f-488f-b5b8-ceda7a0aced6 (HARRISON ST & LEE HWY) on route 97e0859e-5594-47a5-ac7b-b69cc7fd0b8e +19:25:23,453 INFO ~ Fixed 35 / 44 stops after first round for trip pattern d1729398-e298-44f2-b7fb-4fec9752c93b (FRANCONIA - SPRINGFIELD) on route 548e8e6b-f682-4b91-9f3e-7567a22875fb +19:25:23,501 INFO ~ Fixed 25 / 27 stops after first round for trip pattern 45b45e09-fa47-4df9-88c4-484dca296fa0 (LAUREL) on route d36731cc-84ea-4d5d-9264-81bb178b4cc6 +19:25:23,573 INFO ~ Fixed 33 / 41 stops after first round for trip pattern 43c23424-e0cb-46f1-aa14-b13e0e288651 (FARRAGUT SQUARE) on route 01751347-0c31-40cf-b5a6-d27a69b18650 +19:25:23,574 WARN ~ Shape dist traveled past end of shape, was 12395.123265500153, expected max 12395.123265500153, clamping +19:25:23,744 INFO ~ Fixed 35 / 44 stops after first round for trip pattern 819430d4-eed9-4107-836b-95ff4a347868 (HUNTING POINT) on route a35431aa-0ea9-42c6-975a-eedfc757a7c5 +19:25:23,803 INFO ~ Fixed 32 / 40 stops after first round for trip pattern 167a6b01-87b1-4a56-8b6f-d90d45291d4b (FRIENDSHIP HEIGHTS STATION) on route f2a318a9-ac81-4da3-b32c-8044ebe195c3 +19:25:23,804 WARN ~ Shape dist traveled past end of shape, was 10588.916909310417, expected max 10588.916909310417, clamping +19:25:23,804 WARN ~ Shape dist traveled past end of shape, was 10588.916909310417, expected max 10588.916909310417, clamping +19:25:23,805 WARN ~ Shape dist traveled past end of shape, was 10588.916909310417, expected max 10588.916909310417, clamping +19:25:23,891 INFO ~ Fixed 33 / 37 stops after first round for trip pattern 22f4a091-fe8a-4f22-bd50-cf60342c0001 (PRINCE GEORGES PLAZA STATION) on route b8fe3422-4e66-4087-beac-b82d90639791 +19:25:24,303 INFO ~ Fixed 75 / 97 stops after first round for trip pattern bcff8ba6-044b-4c32-b0d9-1a93f2fef10e (ADDISON RD STATION) on route 8648a11b-c3f6-4b94-bb82-ead2f4ba5372 +19:25:24,305 WARN ~ Two stops on trip pattern bcff8ba6-044b-4c32-b0d9-1a93f2fef10e map to same point on shape +19:25:24,305 WARN ~ Two stops on trip pattern bcff8ba6-044b-4c32-b0d9-1a93f2fef10e map to same point on shape +19:25:24,683 INFO ~ Fixed 48 / 60 stops after first round for trip pattern a5f52424-b3ce-4ef0-b252-852e1b2f848f (VIENNA STATION) on route d198f0d0-1941-4835-be05-5bf86af85143 +19:25:24,983 INFO ~ Fixed 59 / 65 stops after first round for trip pattern 3b5f98fb-0c0a-482e-9e1c-df1d1965b8d7 (GREENBELT STATION) on route d4834b02-dbe9-4b55-9e7c-8ff78362f23c +19:25:25,106 INFO ~ Fixed 46 / 55 stops after first round for trip pattern e3d19396-202b-44bc-b0ca-fedb4ae9335c (TYSONS CORNER) on route c5c9da55-efd8-4a2b-aacd-a907fb8a887f +19:25:25,315 INFO ~ Fixed 70 / 88 stops after first round for trip pattern 317b08fa-1349-46ef-a6fd-7f024df42bbc (WASHINGTON OVERLOOK) on route e2b733bd-b058-4f8c-a816-ff56f35888ec +19:25:25,316 WARN ~ Two stops on trip pattern 317b08fa-1349-46ef-a6fd-7f024df42bbc map to same point on shape +19:25:25,317 WARN ~ Two stops on trip pattern 317b08fa-1349-46ef-a6fd-7f024df42bbc map to same point on shape +19:25:25,317 WARN ~ Two stops on trip pattern 317b08fa-1349-46ef-a6fd-7f024df42bbc map to same point on shape +19:25:25,317 WARN ~ Two stops on trip pattern 317b08fa-1349-46ef-a6fd-7f024df42bbc map to same point on shape +19:25:25,419 INFO ~ Fixed 15 / 26 stops after first round for trip pattern 794f8f63-ac94-49c9-9be2-5c540cd2c0e3 (SILVER SPRING STATION) on route 02918ea7-0704-4f8b-8aa2-202f971fd2d0 +19:25:25,492 INFO ~ Fixed 15 / 19 stops after first round for trip pattern ea2aaba9-0eb2-49c7-a4c0-7f6107771093 (NEW CARROLLTON STATION) on route 3cc400bc-db09-4bf0-811f-813b8fc7369d +19:25:25,509 INFO ~ Fixed 7 / 9 stops after first round for trip pattern 38d2721b-f514-4219-abae-48e3ef7d0c9e (MCPHERSON SQUARE METRO) on route 2132eff7-ea70-404f-be15-4523b797b73a +19:25:25,539 INFO ~ Loaded 47000 / 49539 trips +19:25:25,585 INFO ~ Fixed 22 / 24 stops after first round for trip pattern dc4278f0-0c91-4017-8976-6bda30ae0f43 (FORT TOTTEN) on route 30a83c83-65fe-47be-8646-47f3578004c9 +19:25:25,595 INFO ~ Fixed 11 / 13 stops after first round for trip pattern 6dae6d2f-0158-4dd1-a123-f2556442e917 (17TH ST AND K ST NW) on route aea7f134-2589-49cc-adc6-319ed9f3524e +19:25:25,765 INFO ~ Fixed 44 / 52 stops after first round for trip pattern 0858367a-b587-4e9f-aaa1-61d5a21061bb (DEANWOOD STATION) on route 263774df-c4d3-489d-ab2a-08facc5eb14a +19:25:25,803 INFO ~ Fixed 2 / 2 stops after first round for trip pattern 6cd9a802-ee83-4723-88d5-98ef11bd4de6 (FRANCONIA - SPRINGFIELD) on route 548e8e6b-f682-4b91-9f3e-7567a22875fb +19:25:25,904 INFO ~ Fixed 34 / 48 stops after first round for trip pattern 60863e5e-44ed-42e2-b41c-d7ebe7ddbc55 (SILVER SPRING STATION) on route c6d0a86c-47d0-4320-b863-fe033b532537 +19:25:25,993 INFO ~ Fixed 39 / 50 stops after first round for trip pattern 76db6dad-38da-49a9-aef8-1cd0dceac628 (HUNTING POINT) on route df81eb66-647b-4d15-ac69-9cb5be28dc04 +19:25:26,107 INFO ~ Fixed 42 / 46 stops after first round for trip pattern ca98fc40-b6af-45d4-896c-3cf6d4765c34 (ARCHIVES) on route f21856a0-725d-4a16-bd92-1813334ffbe5 +19:25:26,224 INFO ~ Fixed 44 / 54 stops after first round for trip pattern b0ae7d0c-45fa-44c2-8cc9-7db84cf0da0f (MT RAINIER) on route 58d609ad-3e9b-4025-b9da-335006b884a4 +19:25:26,225 WARN ~ Shape dist traveled past end of shape, was 14487.823033738023, expected max 14487.823033738023, clamping +19:25:26,226 WARN ~ Shape dist traveled past end of shape, was 14487.823033738023, expected max 14487.823033738023, clamping +19:25:26,382 INFO ~ Fixed 7 / 9 stops after first round for trip pattern a6a0995f-5fe6-4223-bcd5-27d44034eae1 (DUPONT-GEORGETOWN-ROSSLYN) on route 5c88719e-8047-4ba8-8eb7-2b4fb7f4ce58 +19:25:26,528 INFO ~ Fixed 9 / 19 stops after first round for trip pattern 86100ab4-ee02-4934-8108-2feb59d1a4b1 (S80 - FRANCONIA SPRINGIELD STA - METRO PARK - HILTON) on route 6fdf840e-379e-41ff-878d-944555204cb1 +19:25:26,530 WARN ~ Shape dist traveled past end of shape, was 13631.026477593716, expected max 13631.026477593716, clamping +19:25:26,532 INFO ~ Loaded 48000 / 49539 trips +19:25:26,652 INFO ~ Fixed 35 / 50 stops after first round for trip pattern d2bf1ef0-bfab-4ab4-a9c5-1dc345756f0e (TAKOMA STATION) on route a055fc6f-a7c4-4856-b754-083a44b83863 +19:25:26,759 INFO ~ Fixed 7 / 8 stops after first round for trip pattern f476f17c-0cf0-4a55-8360-2c29a38f540f (NEW CARROLLTON STATION) on route 5cbdbfde-3219-4462-bfc4-c5102dbe1c8e +19:25:26,817 INFO ~ Fixed 32 / 37 stops after first round for trip pattern cfb86e99-e5c4-4b4b-80bf-289122620f37 (BROOKLAND STATION) on route e28a56f6-27a2-4df5-aecc-0c842ae3abb6 +19:25:27,182 INFO ~ Fixed 73 / 91 stops after first round for trip pattern 815f2ec2-deb6-4b78-95c5-b2631e65859b (NEW CARROLLTON STATION) on route 87b520e2-5389-4618-915f-bc5a1c4c83ea +19:25:27,185 WARN ~ Shape dist traveled past end of shape, was 26403.01006421077, expected max 26403.01006421077, clamping +19:25:27,275 INFO ~ Fixed 28 / 28 stops after first round for trip pattern 75a15da2-b95d-466d-b7a6-0ed7bfba9c51 (WIEHLE RESTON EAST) on route 363dc064-e6f1-4b42-92e3-d475f4e806d0 +19:25:27,390 INFO ~ Fixed 37 / 45 stops after first round for trip pattern b0760a3c-fec2-4b36-80bd-0c53c83a622d (CASTLE BLVD) on route c6d0a86c-47d0-4320-b863-fe033b532537 +19:25:27,470 WARN ~ Stop is more than 1km from its shape, using straight-line distances +19:25:27,515 INFO ~ Fixed 23 / 25 stops after first round for trip pattern d0e93160-6981-47e8-a49e-81f69757efd4 (MINNESOTA AVE STATION) on route 263774df-c4d3-489d-ab2a-08facc5eb14a +19:25:27,524 INFO ~ Fixed 7 / 9 stops after first round for trip pattern 2ae9da8d-74fb-4516-81c5-7ca47334dd99 (FEDERAL TRIANGLE) on route ad03570f-7f5b-4a33-aeab-e94e9ec367cd +19:25:27,524 WARN ~ Shape dist traveled past end of shape, was 5984.57514281935, expected max 5984.57514281935, clamping +19:25:27,653 INFO ~ Fixed 49 / 55 stops after first round for trip pattern b8be7cdd-aad7-4f0f-b840-9c7f468c6084 (ANACOSTIA STATION) on route 58d609ad-3e9b-4025-b9da-335006b884a4 +19:25:28,132 INFO ~ Fixed 41 / 46 stops after first round for trip pattern 2baef5fd-d52f-46db-a53b-eaec2d85701f (LAUREL) on route d36731cc-84ea-4d5d-9264-81bb178b4cc6 +19:25:28,133 WARN ~ Shape dist traveled past end of shape, was 26226.43779321322, expected max 26226.43779321322, clamping +19:25:28,229 INFO ~ Fixed 32 / 42 stops after first round for trip pattern 09962d06-87f6-4120-b7b1-18e441023a18 (BRANCH AVE STATION) on route b9ed926b-700f-48d2-bfa1-9327158a9be5 +19:25:28,583 INFO ~ Fixed 52 / 81 stops after first round for trip pattern dd3b1e6b-dd96-45b4-87a4-2dae41ada921 (COLLINGTON) on route 7a9d3b6c-d3cc-4099-a31b-4c7c4f408ac8 +19:25:28,590 WARN ~ Shape dist traveled past end of shape, was 38642.766599563445, expected max 38642.766599563445, clamping +19:25:28,590 WARN ~ Shape dist traveled past end of shape, was 38642.766599563445, expected max 38642.766599563445, clamping +19:25:28,590 WARN ~ Shape dist traveled past end of shape, was 38642.766599563445, expected max 38642.766599563445, clamping +19:25:28,591 WARN ~ Shape dist traveled past end of shape, was 38642.766599563445, expected max 38642.766599563445, clamping +19:25:28,591 WARN ~ Shape dist traveled past end of shape, was 38642.766599563445, expected max 38642.766599563445, clamping +19:25:28,678 WARN ~ Stop is more than 1km from its shape, using straight-line distances +19:25:28,765 INFO ~ Fixed 32 / 41 stops after first round for trip pattern 7bf8b01d-9b80-4e61-9703-6dc3986326de (SUITLAND STATION) on route b9ed926b-700f-48d2-bfa1-9327158a9be5 +19:25:29,258 INFO ~ Fixed 89 / 106 stops after first round for trip pattern fd3a3f96-92f3-4b05-940a-eace6da8ced6 (SUITLAND STATION) on route 9ae6bf06-cdd6-4556-a3c0-defc7421df55 +19:25:29,421 INFO ~ Fixed 29 / 38 stops after first round for trip pattern 0276ebe0-ade0-4d47-be92-fec3e8c66c0c (CHEVERLY STATION) on route 495bc5f6-d4fe-4763-9dab-f2fb19b94f96 +19:25:29,423 WARN ~ Two stops on trip pattern 0276ebe0-ade0-4d47-be92-fec3e8c66c0c map to same point on shape +19:25:29,496 INFO ~ Fixed 39 / 41 stops after first round for trip pattern 8c87058a-6fc3-4ca1-980d-93e93c287d03 (PENTAGON) on route e1ddd1e0-ac57-42f1-9ae5-e81fadd482a3 +19:25:29,724 INFO ~ Fixed 75 / 85 stops after first round for trip pattern 4b4f8384-26f8-452e-92e6-0a179a802938 (WASHINGTON OVERLOOK) on route f829a800-c614-458e-8e45-6cd9ae3f226a +19:25:29,811 INFO ~ Fixed 33 / 35 stops after first round for trip pattern 2ef77f4a-23a5-4749-bc88-f631b19216b2 (DEANWOOD STATION) on route 263774df-c4d3-489d-ab2a-08facc5eb14a +19:25:29,965 INFO ~ Fixed 60 / 69 stops after first round for trip pattern e2c4ee4c-65de-4b62-94ec-5e336590176e (NAYLOR RD STATION) on route dabc66e9-ac47-40e9-a1d4-8eb37227584a +19:25:30,198 INFO ~ Fixed 46 / 57 stops after first round for trip pattern ea0b753d-fb34-4397-a0e9-2bb4f9af5982 (CAMP SPRINGS) on route 166841aa-ec9a-4a76-b048-410e68faf703 +19:25:30,218 INFO ~ Fixed 7 / 13 stops after first round for trip pattern 4cc46c69-28c5-4b7f-a887-d5fd2593b523 (MINNESOTA & RIDGE) on route 9ef1e536-7ddb-46ce-81ec-6fcecc3c2d43 +19:25:30,509 INFO ~ Fixed 65 / 85 stops after first round for trip pattern 390a0c4a-e3b3-4e32-897e-3309b5e31354 (CAPITOL HEIGHTS STATION) on route 0232e955-5abd-4f51-a0f3-f74fa0382b17 +19:25:30,720 INFO ~ Fixed 63 / 68 stops after first round for trip pattern 633d2673-573b-4b06-a762-f710da52cd6a (ROSSLYN) on route 960b0298-4f78-4491-8eff-08dbaace2b80 +19:25:30,765 INFO ~ Fixed 25 / 29 stops after first round for trip pattern cedd51a8-9b02-4037-a3b2-6468e43cd9ca (DUNN LORING STATION) on route 0282b8c3-14fb-4eb2-9951-834f5a662c0b +19:25:30,790 INFO ~ Fixed 20 / 21 stops after first round for trip pattern 7e468088-009b-4d14-8231-5471a92969cb (NAYLOR RD STATION) on route 6e2a2df5-749b-47ad-8535-915abedce103 +19:25:30,798 INFO ~ Fixed 20 / 20 stops after first round for trip pattern 90f99509-6d53-4ebf-9a49-42858d632161 (GROSVENOR) on route 675d11b4-e400-4c17-9a72-b1b3ace62d85 +19:25:30,833 INFO ~ Loaded 49000 / 49539 trips +19:25:30,937 INFO ~ Fixed 44 / 53 stops after first round for trip pattern 9fca1c5f-e91b-4d93-8017-677f9f433218 (SANGAMORE RD) on route 86d571ea-655e-44a7-9d31-fa663060a25a +19:25:31,001 INFO ~ Fixed 30 / 38 stops after first round for trip pattern b21b4856-0493-4e9c-98fe-26706cc06948 (ELLINGTON BRIDGE) on route a102eaea-3b30-4c77-b428-2e8709c2ed8c +19:25:31,231 INFO ~ Fixed 57 / 70 stops after first round for trip pattern aeaac2ca-6130-4614-8977-e087d48a6675 (PENTAGON) on route 9ded3363-951b-431b-8fc1-ef6847ac5e95 +19:25:31,367 INFO ~ Fixed 47 / 53 stops after first round for trip pattern 3b0f92eb-1934-4775-8a90-ae64e566eb03 (SOUTHERN AVE STATION) on route 166841aa-ec9a-4a76-b048-410e68faf703 +19:25:31,446 INFO ~ Fixed 29 / 41 stops after first round for trip pattern 8027489a-0f92-4222-94c5-35c714414502 (POTOMAC AVE STATION) on route 260cf41a-7a2c-43b6-8d94-c5c7ff6ecc3d +19:25:31,476 INFO ~ Fixed 28 / 29 stops after first round for trip pattern 0290b2d1-3082-4cc5-8292-2d5ea1c2cf25 (BRADDOCK RD STATION) on route e82e1940-d0a5-474d-9038-a38e024743c3 +19:25:31,627 INFO ~ Fixed 53 / 59 stops after first round for trip pattern 548f497b-2834-47b8-bdb9-fa1f15812d5c (BALLSTON) on route 8502291b-5c5d-4f36-9799-dbd2658168f7 +19:25:31,708 INFO ~ Fixed 35 / 40 stops after first round for trip pattern acd21754-939d-4d03-838a-bc2de3fb30bb (DC VILLAGE VIA FORT DRUM) on route 58734787-ac66-4da4-bc4b-ee3f043aebbb +19:25:31,809 INFO ~ Fixed 41 / 43 stops after first round for trip pattern 59b95073-bc9e-4d5e-98b7-a32e9cf47a38 (FEDERAL TRIANGLE) on route 9006c58b-3e5d-4725-9e04-947b2e06cb70 +19:25:31,880 INFO ~ Fixed 31 / 39 stops after first round for trip pattern 0a7e5191-68ca-4077-aade-46ce64dc2fa0 (TENLEYTOWN STATION) on route 27775e9f-d642-473e-aaba-197e85370831 +19:25:31,926 INFO ~ Fixed 16 / 18 stops after first round for trip pattern 150f9f57-93ff-4499-8577-ce9b3d5c9b76 (FORESTVILLE) on route b9ed926b-700f-48d2-bfa1-9327158a9be5 +19:25:31,947 INFO ~ Fixed 17 / 18 stops after first round for trip pattern da9189c8-c881-460f-9bbb-97fa598b2974 (BALLSTON STATION) on route 72bbb68e-f0ec-43f1-9d47-3cbb1d6d5044 +19:25:31,948 WARN ~ Shape dist traveled past end of shape, was 5435.540670884077, expected max 5435.540670884077, clamping +19:25:31,982 INFO ~ Fixed 25 / 28 stops after first round for trip pattern d6c79810-dbf2-4bc3-97cd-b699daa1ad48 (GLOVER PARK) on route 6537941e-d965-4717-8c3e-a61daa69e249 +19:25:31,982 WARN ~ Shape dist traveled past end of shape, was 5680.459065420137, expected max 5680.459065420137, clamping +19:25:32,092 INFO ~ Fixed 54 / 60 stops after first round for trip pattern 18216868-84a5-4926-91df-5a31fce253cb (ANACOSTIA STATION) on route e2b733bd-b058-4f8c-a816-ff56f35888ec +19:25:32,258 INFO ~ Fixed 46 / 52 stops after first round for trip pattern 67a603b5-7278-45f3-bdf2-f7f027b8e9ad (GREENBELT STATION) on route d36731cc-84ea-4d5d-9264-81bb178b4cc6 +19:25:32,436 INFO ~ Fixed 49 / 57 stops after first round for trip pattern 6840e3b4-cedc-4133-9c0c-6b983189302f (PENTAGON) on route a5b513fd-d5de-41fa-90c1-a27e84948367 +19:25:32,527 INFO ~ Fixed 30 / 35 stops after first round for trip pattern 4a4cbce7-57ac-4116-8b94-0074574f5ea5 (RHODE ISLAND AVE STATION) on route 580c1380-22a3-4e0e-836a-7a50c2d1c6ce +19:25:32,598 INFO ~ Fixed 36 / 41 stops after first round for trip pattern 2668c97e-e71e-431f-abad-8defdd47ce4b (TEMPLE HILLS) on route 1fc359e0-ed3f-4633-8669-aed267b3f6c3 +19:25:32,695 INFO ~ Fixed 27 / 31 stops after first round for trip pattern 75e6236f-389f-41b5-8d3c-4563a9a012a4 (PENTAGON) on route e9c946b6-59d7-4a3f-ac57-fb23553eaa14 +19:25:32,814 INFO ~ Fixed 47 / 61 stops after first round for trip pattern 8592ff42-72f1-4801-83c9-b9725a5cd487 (MONTGOMERY COLLEGE - ROCKVILLE) on route 122a3499-08c1-4bed-a227-fb302e868090 +19:25:32,832 INFO ~ Fixed 7 / 13 stops after first round for trip pattern 8cd3873b-5b2e-43f9-a483-23ed95a471a7 (CHEVY CHASE CIRCLE) on route 514138fc-5fe2-4653-8e91-fe5a119ba57e +19:25:32,857 INFO ~ Fixed 14 / 16 stops after first round for trip pattern bd82f1d0-c668-4b51-82c9-b7d60a078a1b (CAPITOL HEIGHTS STATION) on route 3dc4230b-842a-4368-be3c-868ed32e317c +19:25:32,953 INFO ~ Fixed 28 / 39 stops after first round for trip pattern 538fbdac-481a-493e-9764-50b19fcf0f52 (NEW CARROLLTON STATION) on route 47e747f8-fee2-4376-9d7c-fc55b29c8ba6 +19:25:33,075 INFO ~ Fixed 45 / 53 stops after first round for trip pattern 9f54472e-ec71-4be6-a0f4-a75df72afe2e (COLLEGE PARK STATION) on route a231852c-67bd-4eb0-874d-d6b116737c58 +19:25:33,194 INFO ~ Fixed 38 / 48 stops after first round for trip pattern 0d83d64f-4e9c-4150-9308-3c77a76b0092 (PENTAGON) on route 7b4236cf-9235-42c4-a5b7-c6c58c87c9d7 +19:25:33,590 INFO ~ Fixed 45 / 60 stops after first round for trip pattern c94e50d2-db92-4e4f-b004-30bd3b5d447f (CHERRY HILL) on route bb024eef-1074-4f29-b220-ace593784f74 +19:25:33,724 INFO ~ Fixed 36 / 42 stops after first round for trip pattern ca1bd5b8-f01b-47d8-b9ad-7832368e18d8 (ROSSLYN) on route 88a364c3-dc11-4091-b8bb-336c0e2519f7 +19:25:33,867 INFO ~ Fixed 42 / 47 stops after first round for trip pattern 00e3695d-f496-4071-9417-ab7a7f5b5dce (DUNN LORING STATION) on route 6ffbe66d-63da-42d3-90cf-34e7a5679982 +19:25:34,008 INFO ~ Fixed 40 / 48 stops after first round for trip pattern a8d3a490-f61a-4b99-a513-69bfe47a1e8f (FORT WASHINGTON PARK & RIDE) on route f1debeb8-b19a-476d-bac2-b9cda8b2511b +19:25:34,021 INFO ~ Trips loaded: 49539 +19:25:49,994 INFO ~ Imported GTFS file: 2 agencies; 296 routes;0 stops; 0 stopTimes; 49539 trips;686159 shapePoints diff --git a/imports/google_transit_sf.txt b/imports/google_transit_sf.txt new file mode 100644 index 00000000..cd597884 --- /dev/null +++ b/imports/google_transit_sf.txt @@ -0,0 +1,73 @@ +19:28:57.961 INFO (Entity.java:232) Loading GTFS table feed_info from feed_info.txt +19:28:57.963 INFO (GTFSFeed.java:90) Feed ID is undefined. +19:28:57.963 INFO (GTFSFeed.java:92) Feed ID is 'null'. +19:28:57.963 INFO (Entity.java:232) Loading GTFS table agency from agency.txt +19:28:57.963 INFO (Entity.java:232) Loading GTFS table calendar from calendar.txt +19:28:57.964 INFO (Entity.java:232) Loading GTFS table calendar_dates from calendar_dates.txt +19:28:57.966 INFO (Entity.java:232) Loading GTFS table fare_attributes from fare_attributes.txt +19:28:57.966 INFO (Entity.java:232) Loading GTFS table fare_rules from fare_rules.txt +19:28:57.969 INFO (Entity.java:232) Loading GTFS table routes from routes.txt +19:28:57.970 INFO (Entity.java:232) Loading GTFS table shapes from shapes.txt +19:28:58.769 INFO (Entity.java:232) Loading GTFS table stops from stops.txt +19:28:58.770 INFO (Entity.java:232) Loading GTFS table transfers from transfers.txt +19:28:58.771 INFO (Entity.java:232) Loading GTFS table trips from trips.txt +19:28:58.777 INFO (Entity.java:232) Loading GTFS table frequencies from frequencies.txt +19:28:58.784 INFO (Entity.java:232) Loading GTFS table stop_times from stop_times.txt +19:28:59.064 INFO (GTFSFeed.java:105) 0 errors +19:28:59,065 INFO ~ GtfsImporter: importing agencies... +19:28:59,118 INFO ~ Agencies loaded: 1 +19:28:59,118 INFO ~ GtfsImporter: importing stops... +19:28:59,312 INFO ~ Stops loaded: 0 +19:28:59,312 INFO ~ GtfsImporter: importing routes... +19:28:59,312 INFO ~ Routes loaded:6 +19:28:59,312 INFO ~ GtfsImporter: importing Shapes... +19:29:05,377 INFO ~ Shape points loaded: 24712 +19:29:05,377 INFO ~ Shapes loaded: 12 +19:29:05,377 INFO ~ GtfsImporter: importing Service Calendars... +19:29:05,387 INFO ~ Service calendars loaded: 3 +19:29:05,387 INFO ~ GtfsImporter: importing trips... +19:29:05.431 INFO (GTFSFeed.java:189) Total patterns: 35 +19:29:05,435 INFO ~ Fixed 2 / 2 stops after first round for trip pattern 356a1e58-92cf-4ffc-8e10-c5b2dfcd3aa2 (Coliseum/Oakland Airport) on route 11ff52f3-e120-4291-aca9-fbed0430a749 +19:29:05,641 INFO ~ Fixed 4 / 4 stops after first round for trip pattern 60377352-fb6f-492c-bf57-eea8883b4f89 (Dublin/Pleasanton) on route 6a1ea5f7-dab8-453b-987c-a0db99a0d151 +19:29:05,826 INFO ~ Fixed 23 / 23 stops after first round for trip pattern 47f12007-09c1-4482-9417-3df517be4ca5 (Millbrae) on route b47df7cd-2f7d-40a9-abac-deadd9bda1ad +19:29:05,980 INFO ~ Fixed 11 / 11 stops after first round for trip pattern a8b9b032-ffdb-4614-89db-b52fc1ecc801 (Montgomery St.) on route 4b5c9abc-16dc-4b13-afc5-49bf0976d7cc +19:29:06,231 INFO ~ Fixed 20 / 20 stops after first round for trip pattern 6f4e85c5-7394-4a07-8cc1-6a62d02769ae (North Concord/Martinez) on route 4b5c9abc-16dc-4b13-afc5-49bf0976d7cc +19:29:06,477 INFO ~ Fixed 23 / 23 stops after first round for trip pattern 47a00f5a-ef0a-40d8-a6bc-96c6a6cdd01e (Richmond) on route b47df7cd-2f7d-40a9-abac-deadd9bda1ad +19:29:06,718 INFO ~ Fixed 20 / 20 stops after first round for trip pattern 83bf65e4-9286-4f63-a3f4-0b37041c37f7 (Daly City) on route 4b5c9abc-16dc-4b13-afc5-49bf0976d7cc +19:29:06,844 INFO ~ Fixed 13 / 13 stops after first round for trip pattern fceddb30-2f6e-4450-a091-c13273554fba (Daly City) on route 6a1ea5f7-dab8-453b-987c-a0db99a0d151 +19:29:06,854 WARN ~ Unable to tell if shape is backwards for trip pattern 6235c06f-8469-4090-ac5c-f2200f4858fe (Daly City) on route cd77cf66-7140-486b-b5e1-b3d0c6c0d208, assuming it is correct +19:29:06,856 WARN ~ Stop is more than 1km from its shape, using straight-line distances +19:29:06,898 WARN ~ Unable to tell if shape is backwards for trip pattern 52e53b23-d080-42c1-8863-c67391f3762f (Fremont) on route 928f4f3e-bb6d-415b-8ead-5dce137d93a5, assuming it is correct +19:29:06,899 WARN ~ Stop is more than 1km from its shape, using straight-line distances +19:29:07,195 INFO ~ Fixed 18 / 18 stops after first round for trip pattern f6d35ff8-4338-4e45-a49e-c600b086427e (Daly City) on route 6a1ea5f7-dab8-453b-987c-a0db99a0d151 +19:29:07,224 INFO ~ Loaded 1000 / 2508 trips +19:29:07,390 INFO ~ Fixed 12 / 12 stops after first round for trip pattern 34e9bfa3-9900-4692-a7cc-3fc2caf68847 (Concord) on route 4b5c9abc-16dc-4b13-afc5-49bf0976d7cc +19:29:07,857 INFO ~ Fixed 15 / 15 stops after first round for trip pattern b0338a4e-162d-4b90-954c-d81ab9b60c5d (Dublin/Pleasanton) on route 6a1ea5f7-dab8-453b-987c-a0db99a0d151 +19:29:08,053 INFO ~ Fixed 18 / 18 stops after first round for trip pattern 4274b92d-222c-42d7-8224-3f73d16eee64 (Pittsburg/Bay Point) on route 4b5c9abc-16dc-4b13-afc5-49bf0976d7cc +19:29:08,221 INFO ~ Fixed 14 / 14 stops after first round for trip pattern beb9f22a-133d-41f7-a6e5-3466ef048280 (Montgomery St.) on route 4b5c9abc-16dc-4b13-afc5-49bf0976d7cc +19:29:08,231 WARN ~ Unable to tell if shape is backwards for trip pattern 57f6d617-17ac-4b31-939c-8a43f8100a85 (Fremont) on route cd77cf66-7140-486b-b5e1-b3d0c6c0d208, assuming it is correct +19:29:08,233 WARN ~ Stop is more than 1km from its shape, using straight-line distances +19:29:08,432 INFO ~ Fixed 19 / 19 stops after first round for trip pattern 35f661d5-f2ff-4fcb-8d23-6cefeefa96e2 (Daly City) on route 4b5c9abc-16dc-4b13-afc5-49bf0976d7cc +19:29:08,638 INFO ~ Fixed 21 / 21 stops after first round for trip pattern 1ad6bf61-4b37-4331-aa4b-2f050ab29b0a (Daly City) on route 4b5c9abc-16dc-4b13-afc5-49bf0976d7cc +19:29:08,803 INFO ~ Fixed 19 / 19 stops after first round for trip pattern 57cec413-b41d-464d-9bc6-68f62fea6db9 (Richmond) on route b47df7cd-2f7d-40a9-abac-deadd9bda1ad +19:29:09,389 INFO ~ Fixed 18 / 18 stops after first round for trip pattern a95b82b8-d366-4550-bbe1-51840111cf9c (Dublin/Pleasanton) on route 6a1ea5f7-dab8-453b-987c-a0db99a0d151 +19:29:09,608 INFO ~ Fixed 15 / 15 stops after first round for trip pattern 928200fe-1be3-46ad-be47-a980233f3181 (Pittsburg/Bay Point) on route 4b5c9abc-16dc-4b13-afc5-49bf0976d7cc +19:29:09,611 INFO ~ Fixed 2 / 2 stops after first round for trip pattern 8d584ff9-a7eb-4254-b14e-a38ab0e659ef (Oakland Int'l Airport) on route 11ff52f3-e120-4291-aca9-fbed0430a749 +19:29:09,991 INFO ~ Fixed 25 / 25 stops after first round for trip pattern ee49875b-7b3e-47db-81de-d8a2d052fa41 (Pittsburg/Bay Point) on route 4b5c9abc-16dc-4b13-afc5-49bf0976d7cc +19:29:10,028 WARN ~ Unable to tell if shape is backwards for trip pattern 9c86d22f-a29a-4766-b4a9-4f2664c9c44c (Richmond) on route 928f4f3e-bb6d-415b-8ead-5dce137d93a5, assuming it is correct +19:29:10,030 WARN ~ Stop is more than 1km from its shape, using straight-line distances +19:29:10,038 INFO ~ Loaded 2000 / 2508 trips +19:29:10,247 INFO ~ Fixed 18 / 18 stops after first round for trip pattern eaccbb08-638d-4b27-b277-24e21c0ea75b (Daly City) on route 4b5c9abc-16dc-4b13-afc5-49bf0976d7cc +19:29:10,490 INFO ~ Fixed 21 / 21 stops after first round for trip pattern 5dab45a7-3439-4c5c-a502-b0048b617bed (Pittsburg/Bay Point) on route 4b5c9abc-16dc-4b13-afc5-49bf0976d7cc +19:29:10,637 WARN ~ Stop is more than 1km from its shape, using straight-line distances +19:29:10,893 INFO ~ Fixed 25 / 25 stops after first round for trip pattern 21207922-b666-471a-be4f-4e8046a9f862 (San Francisco Int'l Airport) on route 4b5c9abc-16dc-4b13-afc5-49bf0976d7cc +19:29:11,197 INFO ~ Fixed 19 / 19 stops after first round for trip pattern 7a61b93d-9538-44ce-bfad-a4ad19edd844 (Concord) on route 4b5c9abc-16dc-4b13-afc5-49bf0976d7cc +19:29:11,330 INFO ~ Fixed 4 / 4 stops after first round for trip pattern 1ed682a0-9e72-40aa-8c16-322fa1c92461 (Bay Fair) on route 6a1ea5f7-dab8-453b-987c-a0db99a0d151 +19:29:11,646 INFO ~ Fixed 25 / 26 stops after first round for trip pattern c38b1529-6bb8-4005-9ceb-c797543ed2f9 (Pittsburg/Bay Point) on route 4b5c9abc-16dc-4b13-afc5-49bf0976d7cc +19:29:11,712 WARN ~ Unable to tell if shape is backwards for trip pattern 30d8babb-65a6-4228-b19c-b92b515da49b (Richmond) on route 928f4f3e-bb6d-415b-8ead-5dce137d93a5, assuming it is correct +19:29:11,716 WARN ~ Stop is more than 1km from its shape, using straight-line distances +19:29:11,877 INFO ~ Fixed 16 / 16 stops after first round for trip pattern 4e473810-7781-4b90-a4dc-93dd6d7bef7a (24th St. Mission) on route 4b5c9abc-16dc-4b13-afc5-49bf0976d7cc +19:29:12,095 WARN ~ Stop is more than 1km from its shape, using straight-line distances +19:29:12,311 INFO ~ Fixed 19 / 19 stops after first round for trip pattern 1950d6ca-b379-442e-b861-0414cfc0b5f4 (Daly City) on route b47df7cd-2f7d-40a9-abac-deadd9bda1ad +19:29:12,322 INFO ~ Trips loaded: 2508 +19:29:12,786 INFO ~ Imported GTFS file: 1 agencies; 6 routes;0 stops; 0 stopTimes; 2508 trips;24712 shapePoints diff --git a/imports/sample_feed.txt b/imports/sample_feed.txt new file mode 100644 index 00000000..8328ccbc --- /dev/null +++ b/imports/sample_feed.txt @@ -0,0 +1,32 @@ +19:14:47.405 INFO (Entity.java:228) Table feed_info was missing but it is not required. +19:14:47.408 INFO (GTFSFeed.java:90) Feed ID is undefined. +19:14:47.409 INFO (GTFSFeed.java:92) Feed ID is 'null'. +19:14:47.410 INFO (Entity.java:232) Loading GTFS table agency from agency.txt +19:14:47.416 INFO (Entity.java:232) Loading GTFS table calendar from calendar.txt +19:14:47.417 INFO (Entity.java:232) Loading GTFS table calendar_dates from calendar_dates.txt +19:14:47.490 INFO (Entity.java:232) Loading GTFS table fare_attributes from fare_attributes.txt +19:14:47.492 INFO (Entity.java:232) Loading GTFS table fare_rules from fare_rules.txt +19:14:47.493 INFO (Entity.java:232) Loading GTFS table routes from routes.txt +19:14:47.495 INFO (Entity.java:232) Loading GTFS table shapes from shapes.txt +19:14:47.495 INFO (Entity.java:232) Loading GTFS table stops from stops.txt +19:14:47.497 INFO (Entity.java:228) Table transfers was missing but it is not required. +19:14:47.498 INFO (Entity.java:232) Loading GTFS table trips from trips.txt +19:14:47.499 INFO (Entity.java:232) Loading GTFS table frequencies from frequencies.txt +19:14:47.501 INFO (Entity.java:232) Loading GTFS table stop_times from stop_times.txt +19:14:47.504 INFO (GTFSFeed.java:105) 0 errors +19:14:47,506 INFO ~ GtfsImporter: importing agencies... +19:14:47,573 INFO ~ Agencies loaded: 1 +19:14:47,573 INFO ~ GtfsImporter: importing stops... +19:14:47,609 INFO ~ Stops loaded: 0 +19:14:47,609 INFO ~ GtfsImporter: importing routes... +19:14:47,613 INFO ~ Routes loaded:5 +19:14:47,613 INFO ~ GtfsImporter: importing Shapes... +19:14:47,613 INFO ~ Shape points loaded: 0 +19:14:47,613 INFO ~ Shapes loaded: 0 +19:14:47,614 INFO ~ GtfsImporter: importing Service Calendars... +19:14:47,616 INFO ~ Service calendars loaded: 2 +19:14:47,616 INFO ~ GtfsImporter: importing trips... +19:14:47.619 INFO (GTFSFeed.java:189) Total patterns: 9 +19:14:47,691 INFO ~ Trips loaded: 11 +19:14:47,772 INFO ~ Imported GTFS file: 1 agencies; 5 routes;0 stops; 0 stopTimes; 11 trips;0 shapePoints +19:15:47,251 ERROR ~ DB transaction left unclosed, this signifies a memory leak! diff --git a/screenshots/GTFS_Editor___Home.png b/screenshots/GTFS_Editor___Home.png new file mode 100644 index 0000000000000000000000000000000000000000..dc2a53db70c07130517a021da53e28a23c963456 GIT binary patch literal 102384 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

$DDNt@q;# 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 ug1oX!{#?_YS$qL!*k(~lxHOwukh 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 literal 0 HcmV?d00001 diff --git a/screenshots/GTFS_Editor___Search.png b/screenshots/GTFS_Editor___Search.png new file mode 100644 index 0000000000000000000000000000000000000000..8d1e2680a580a955f479432e30dafd3b51049ae0 GIT binary patch literal 86846 zcmeFZ^LJ(4(l(rQ?4)Dc?%1~7v2EM7JGO1JW81dv?C9(BoO6HgeV+R-c*l5u*kg^g zYtPy>Q8njPb*&XHFDnKIjRg$^1Oz7`F02Ry1X>FO1Y8gK?aw!!4du*#F2Ih8VuC=` zQ#hx8ZlLVM)g6I=V37ay0R~FX!~g=~2a*sLP<8{p$b!*QHU_+GBc%ejQ3{cjGR%w> z6{7w|vAUlF-_jJ2nwiur1Jm%gru?<$Q3gsCta_P$MP-)%t|k-Ay5Iw)8l_P?T4cnJ z*~zeB5|_673AXyJ0Rc`kcp79%X96%eeAt`{nmNhIqgm_CaHc%4(L1oH*p{+0^on&v{Hjwy*-@vub89xav)C) z=sS!}Q@Ms;kGB44f`{S#zkmOyajqKFNjS1UnzSTcOy*$!D zaDASw4h)umo2q}C>Aywd2d-~BC$joak!LCpR?xHEA@_>9rG-Vi!{J!qB#>0>e-DC3 zik~%o_}ASyy`zIeuH5zB-givQ*A2&Mb=lIYx&yDQwWSfdMWl@0+}}@|V_2jm`g(D$ ze4gW{PSa}IiSD_)1by@``s*Q5_4nv3sL|H&PcFdy_|Q+6+dK-|uriK_uW(QHO$}K6 zQK)`*n4GOSiHjJ|*I+Z5>J26;YHEQ*Jb;q|GB9(BL>1`{ ziC2xos_L_cXkxDO-2=1K{AlmhOrEx2`!ZadB~Whl8-LF7F&(Z%$6m?vJPS z2Gi-{;$n@Fj&>Uzoqhxp^eH%8oQbY`A^C9!Ew*L^4OPDo^;R1h(hQm zt%2>)<@L~< zgpEfiw3_!p zT(qM~`K*4fZgoxDUci6TBmYs{L;>vGh10~X z-DrSY5KgVU#`LN@hPGP!;b2EkjkSd5F=wi0%B^rgxfzOjo!8=Zu@xlR(ZMo5;LWvT ze0>98s6Bo2WAZpFE07Y>Fz}nd-tkmccz8HxR+%yQ9&T^5Vti5`wWHwXqw{PcG(V1T zP-Dc|KIxNnZlbriqqfUZ^vYek2vyBhSBYQe+SzB-Je(C97Dx}1U`x#8s()r+q~TRT zkMJoTimGR2CF#<%z;#*qC+tuYB&NPCvrc)BN6MGVcrVt4s%PQ(ZF6#GY#Fp& z84jsf9G|OMEwx-uR=a1$IhlR;)oO=!=8V|E_>vVH>1NZ;5y1TOPB16!>Rc!`DZfL~ znBMHmzcJBfJJ*w>fdceD@r*wO(rIq{RMG36KNJD~YQ2U2XW)9XwPAJl?GUyeazGDQ zU>rQ-%GT6YGyU#!3>Nh-@3q|fiySm+e*(20dY>od^$eyESu(XF92?AibI&7(b3(yv zI~1FYU2N{KvqP;s5e2^J6#c$q3lT0@w+TBW>##c*ua#eo+Fv9e<

SO^vK)8acXq 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 f`9IV&?Jutl-*-tDYc5nnLH;B~ek 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%0AgQz(56fOLsz0#ZSd>(xAyO4iRvYV2N z=j}F!>GsxRQJL40-K^Eb&2{A2Grez~*lSmV8_fXSTa*@(Jh;p2(T0G{@ygki@)7rT z1WVwfFW-7aht~H|+~&7gSZ&Cg`A5$WLoWE#X_E0gsM*B_V$Zi3pF6a9 z3KT%U#NzH`RnX5gSb$>MDzWYdgB>wyqo`tAEs#=KTpRN9^)VNIFi6JOQ}{&D3F1}4 z_-JyHsODC4Y2}R~nY_lP{L!XdF3X}Zrb60T+#aTR#dHYan)m=It=z!=9u9C&xja2U zCtAAL;4um>WT@Ti^T+gO-2Ch~vyx0-u#za^W`=iS)=%$c>kK)a$}sqcsEHWMpNbio zsmlc>!d=U8Ocu*<(u}CILA5F;y}(ci7sZvhQ-?%ZEkVieC)BZ|P~_cO-;Q2Hn#!DA zT)BpLaD7>lR_e=Ie;IxO7tCh+qWw+a9Ze@y#mm>U#vVreysVrmt8nVX{uEd#)UlA& zaDObpf3aJpWsXSX(%7eY)j%1F6y}zV@l5ln-=6(4)WrT9AJ(tB6gOWAPaH{VNwdwb zejxk}jdGmxqzvSl=heg%g!mKC;!YqD){O>av;(|N*Y63O2g zjOs^8hO0TYgo-1m4&|HV>RxOGCf9g}sEx;S`$dOP$OQdzH5L8qFSk-f?CkK=)l|i{ z;FFaS=|}nLqO70z36k;>dyFvfi88`cL%``IYUfk{yVn7Q^u`qz#RQBU=DkAQkip(X zvD}_-n1xnj)E4D}8UY&p1YT0C4FI=ySRAz zczd7>lyH^o6eEH}Dm15LbM%RPw6Q1LodR6J^js$o{$?_}>AS|% zBhVQq0FsmiVJ3Is@XCbdON^JA8OA>UKgdnlIY9a%Htk|q0ee#s(F~9YUS4pZSm?3( zH*i+6JS$EZXbomia&+pp!xZ=^lw*KN{p^+o`wGH~WQsaFfy0xIycI6zTvijDN2m-J zi4qOGxqS8b2?f;8$sT4r2Wu5Ns3#S6lHb37(wF_1@1Ox=b@oc^oXDe~PilGzF(_W9pg%^^J^p za98=|SfYDHq$0ZB?c4|rBp?g7<-4rozuh#O z6fl>8H|G6)r#tE|vT2kBcZQ#ClgOU-zj!PDCxML;xOaHiXXU6p{S;dzYp$<237t|G#i32n+es)K@Grf zuGCXnvKI&+*P;q4p8PkRfDy_df=g*?eywmAt)D?MoWX{ z8t?{N1C8unA0hRdb)s$3o+N{WlX_kW1~ixFw;2x(1Hy-e`S_kZB?24d0y<`Q`VISiqy zR^omylpT~j$SZUIYu|nUjT-k)Ug#7%P(}z}uW|lGpQiPnmf~WNXAgnZm06q`@&od} z0sapZ*~?#eiT)oLj3K{St>YX0F94Z10LG9%Ir2r2|Ce=le|f_k-X-U`HgKo#YImg; ztw{fVULs%T9jGEJHPrpT>SGFM?kEz2|G%74*KJ_xC z5>(N~C~(amTw@s=Y3vRdoSTET3RYpQu-ap@;k>_o1t?G^4C|XVsL>|X<=#BIHzTRy zBPXY%q@<rZeZju@1ZMl2 zgadqVucJ0zI98EwrIUUaT^M2uFG<=QmtzNi6d{2pPg2s-{`~Vcn}AEri;ay953j+r z@N3`XHqVmNf_cULCfkw;FHstsWGj6Ka|Ya*`@t(qruB+^k^o}Ou?9SRC+e}7+62MIw$h2Ni~rx3ZP zT`2hPYG0H>W2*gIb%@b*{LQm1F?9;?#c6!JMa7YSr3Ujd5`vj|OV)#78Fqsp<;I6F zV;P_!wL2R_{zeK=b+?0<#Qfh=;lbx34)|}5^ZZ(`@8(VHMEzT*HADz;cZIIJc6wONYYWN@KT|n>sh4|mu^N=ud)=(M^yl=}=UwGGzi_jP0%=0Yk z0Ym5Yz_|!VHJc&FUF5&#z@}NJa)B4@0#IP-Yohek{wM0tPbyL3g`dD~XsP5{i;Y@% zczA5r28mk+@3~Z{zmN=lu1ko0Tdx(A%<6yvt<%)>gfWi(fA{jdxRxEKEDiA$O|Z{8 zri8rqXoUwb#@Bg}009j?-dw-b-cG>W_ZJO4PFZ9kibG!BeDn5At|ew9dZ9b}Uocn4 z#e+rip$(GFAO$2s8bKxL5X^ZLV10DM0>8dG06bsyD}Y8JghsHDmV&;W1lc%8%$%T> z#s_Ss9Nq_`^bZE1dJ-CDBoH(5AC{#TK%tHfesZNL@L<7xx@wo^MdqgxUvj0N&Bu#n zL&(|=Q|1^*|CFCk&cf1Eyca?cLVy_EALj$DYmh#Su!y)HhcXor^ovBSkC<ly zrmV|;=!Jd0^X6hzA zB4n85^r8R!FMwMaT_9LT5PSOFkH=~ZAS{3BEbZx}8NSWCAblg^m+0Y>sx#j*9c^%S z$cgm(Ts_UT8eAik$@h$#2bD$F<)8k}9fI_H>IB*%_co!q-2f)1jAnXgdNMl4!H2qS zBf>RJq~a!FCVyvj*vS2bFkZjXD1kly08(&CMseAWcmh7ZU~GQm*?Lj{w6fMS5!STb zUiu=meGFxSe=PkeFNK@e-6%0b&Ek_vz0MRe}LIq2p5r|)YaAFOmgpUJ4 z)%O?Tvhm2@4AeD#w*N-ccQSEtaye88!w8$$c(F5gqsVIFIktenGq`|tj{B(rVn~GT z;$LU{r-p(I8F{kepS`ea5l8>}Axx=rj)d}hWJuuqb(xGBD6A7aZqPMlkqk8tTS`jm zp5)K}$KE%;XO?vB#_Xu0j;)Su+a24slaAR*$F^2+dfavyz_oDbIw0-u5*5S zuByHFDy(&{d#!q^>bp>u5)z%^ajgO%`PrIhI%jE7KCjU` z?~6>=ZMpXplwxdQLk||=Qf^z@%uJ4e-E&8jptq3KGl>@JcsLaFBf^u?Z)2D2XS{z%}d?`nPcKE3PvA9Nf19Bh7lpC zBj{rSud6^*!uu%C9nG*bPu0Weczfs4MC$aQ4-Jx2FL~)Ye!-{N@S4ydTFO%q>TBlF zF=T&{r~qJd{=~=@y>HB4j0k%j{V%a!GAG`-BE1$qC$E@H`NZl}h7OM*B75qIHhTrN zWaHt5Ss{acvRYXQV5dU)Blao4kGg(%4}G8%i(Wl_s$Cb_Q+qnKijvL_ab4vGQM*#X zL*xc+hYmJ7knwy&gEaBNuqW$O-6(|YTptYtVS)p89k?^Z(2GIuIA0aZ5BW9B!fg3tz#vVbu#f96-*08}061A@y;Z@p4Lw#H?X<=U}IMEBk^<{9iU$+{HhMh5$jY4bCIaGLgGbuJ0I zC25VCcS*y|1Y&POZVyBP*%v_q`|^F8Z1jxZ6P_ys!_(riOUXAlUKvLuLi|~)HZ^;W zSfs-WCGd;c!uUJ_R3(-+O$q{7T&~mXM(5(1ypjhi3gEI`p0h@)2wM2LC`O7k=Lz)g zDr1`&N_k)rCHU8;ezdGV!Og(sw0U1bMmoRS)1Mie?n_5i*BbMzRtBjmcS%+1XrYdKdG0YD14`{+lKkcw1TP4}PH z-B&`u@`R{J0uqchjrwT?Uz(0vi3R(CWg7vl4)d=QT6&@<$q&!^tEvD z@^{LO^~|gg$bd9Es>c?@tT3jfy5-M0 zPUyDNAZ4)k_n+ZKFfFU5Z@{%9^5_`DpR*JMaiWA_tFp5&l%Cz3{P&f$qi(W%Y>X!k zKJVqbets)#XS&X|{-Pwz>WA^WL6@!=2X6)Zs zS8{nA5i{yvHaLGaksG%P=;miiOJ1%5c!-};UNNNaM7o9{b>okrV|LQ^O1a@U!$!#K3TG3@-=wj(t{IDr2&}g zQkp4Y`M$93QPlaIzU~bNa3W!7#TyY2H|1CrOC>fRBIoJ;k2>k1Z0kDc)3cm!0PZFy zZPi13ERxz4@uPtNWSlF&Tu{8~un@tQ2IPGD$}?4k1|P~WHIY=_0vW7Jx3;0ddLzfm z(lTYe%2FFXI)wm=k3>KTGiK(JsR%33z-Wx38Zb{QW*Qq+>!up7)wc@(e%ZA!h%IRe z1Y-OBVts!VrG;S%O%{{|$TL^g+{|n_4AzAYMivy)GaYLLU(ty1I50jQ^*Atl3d^%) z--`7cYgk7QRu_H)790?4Y=bu#AjbJ{daRSY+<|R3c5||7iR0TXMRJxd^hXJU0apEl z5`6q|tJBT}8f~njQr7rQYAOecDc8D-uTxk}c)J|H&P6CeHzGm=*G)y^f0VHx0lx|f zAp`fFmIrjXdz;vVT8$Y+e)84@KDRkf&o3utM>7Bd>F@8)&(DV-F5`y&bY&N(!^w2U zi{g~~wx}m5?$a_YKh)se0*FjH;pP0Ee@BE~VRS#D@%cR2FD;D)c`>(^)-7kDIM=|< ziQ|{-ExS}QU|?bIJeYD8a*_q{n`SGOZ8K8%05M0w*HkS;04)x>EhhNcay6$&0wa$O z2ox87ddH`ilf9wpeNBD8*0r z@oVf0+vQwV0I)0;AZC))2xrOUD#98M+M5-DcG@v3m5VF<3iz;cKd5&-GMKK?WhUfy zQc#RQ^4E60oGtY(oR#&lX2#88#*ZhSgvmRzz+C+^Fa*O|7!W#t%6JJQ1`Nk7d)Gae zt|t$kBo7c@K5~@pV;$5XjxmI}aCn7zI5fccbVoTQeJaAjDJbDg$O8D3vS$%9Ku-3* zA^aaHfGmF^pO-9-CXlSh|1D0Qs{S2U7|gRug#K?4I}SDg?>YZpeC?MLm7SbAAg{*C z&Lb;xS)X=EO?p-5kbvb)#zU0bq-tz- zK*xrkRmg)nHHdy#KDIGGEuTe;G{6iFY$xL}k~>nsF9?GP%W1>vuGItQ`T*@mm@0dj zOd4bZ?M;1l#|qwJl--GgkB>aK89Y8TgggqSg`)`y+IH8zx1H7$XRo5e>S=bIfZ<3R zbaYtHMEI~6=vB>8^6XjzG)N3AgR*i5sUn=xVM5TRz2D_zMCyH7zv;-?gCP2G6kSe|_L5 z)HUp*p!eC2QJ-- zH#4JzG*3k9eM&_P)30?hDA(%_AGJ7$V~&?!)Io_nrIHG)${9${D?LfnWSzDFC`xmD ztf^Kj+2s&M}#v3SCMl z@~jEP==KU-qZjw*HtCOy1-(y*@LN$)9+i#5?RnQ-?NVF>9R;07X)nuNos*s}>IjBoP7`9b!eWp6)=Em~4yxENWH@-c1_ zrBt~FP%x+J7Pmb{37FW z=H2zhUG3Y^Cs%Dke9}a8VJm>+*zHx|kDfhF0{Ml!hY(^tnj~LZ#ILa1+eYojcbm}I zGwd@i%EB#r@oOlQlfkb0nN`s5IPE&OUL3#3{a%zd6+}`pr?jIj%I8#~oHdux4GfHh zj_$k5i(V2=!3u_e9CqjH{0|Ero*Q|85h9Smx6V_PEeOKgN*lu}QjqVYRiva}W?-P8 zsK7Bz&Mw!$bWpR?T_`7^w5oMOGBYzPH9Re zW!?3p%?^61JEC-@reZv!nG5g93Bl(Co%P0FX=QXe9d(fe&t^dvjU0ci@@g{@7%YHM ze;SVxY#AFOlJpzkOX)U1KWEDnFcMyb0y7jwGVjrALbn1I@ap~r4Qu@Tq(0J(sd<0T z>gt!1>0h6eXd+amHm3MCN9(MmZ;rcQhz3Tz)@Cu=L+}mDD;C`*m|FihO{}==_D4&6 z23|dH%J)4I8#z}IHgPtt14%WXUyt`*7v-K-kGj5^*tPn{AX72zlKvmH&$1zDY|to{ zR7!rEap08iweSOx{N;<#<; zq(m^16Jf2dxOcWkAO)%v-_BXj%z#4Mf2Bu>_U(9!ljSfJR1TB7K!1uE)3@gKdq$21 zP;1cUgv<6~w|}5o%%}dAmOx2S!G$R&dJa=*A)0*XU%OLa)9ncJr#gl&(LJylDvv$;^SxcG9kAXfT6&PT)>%z^KOjT3_N|NEZX&?Y& z@kl|>jEC{z*F0#v`f@k2MIL#YD`uX~Bs6ZWV2^h+Q-~(==Z_lon|N_25fs#mC3snm zyU%f+vpQp}hYmY@s9nzVcr$Y()Eadk%0_PJ_2nv>b|+vbXr4falMsMl0w|b}k|`)y zQ?jj_pr%l3TZ9ZB^AH9v#+pA{uV2RVoLL2Mhzz@8HG#QegJ=C<5FYkWC zK~lex$B}t*p4Ek~_C_HUvew5tA6=(Htfnh!7p&ADd$kbwI<)19FvTNlyDO#A739wEx;RbmIW+7_vB8OF7P9zHQj`wXCSG_3ZjS#pGOql9?zsugf?O;KGCQ( z9{Zm!%2uW^htQ}eq+q=4`GI2%*`2U>UX|?CQ^PJ0AMMmyPtgU6WbqB?MUzj4Heu9o znVyd%Rd|A)37@u3Qpma?x;*oV9b-+gfwgMFs___KEvpYIwuA<|Vq9U4)HAc$V{DyE zNMozE0ye0Wl$O9CwHwWB+rV=`(rUeJg<+wy$fn$DA*seFE!CElM@J(IZ!sQJa7l*c zs^jY1HB*OvgqFi-bca7UUZ*mseyh7%&O#NP(3u?iK|$D^l;3F$bqx~Z))IIag$JX# z`Qf(Sn$93gt156JCHL4@e33bJc(+wDsU2kek(*_+6H@Hji%Ltwds*mkdF*t;L;hs_ zbRA`B?!aEAl1RoqB4%6${-~DWPIAVPSLxUvy(z$JKk2kkqJ($b>h+vk%#S4OhFLKZ zc4(ml2A1*!LXP4b`g*BVQBnyyXKOW2cDQi26&|HEoI*-UX4tD^RI%V8fQI4Dlgt3( z(7?rLwSF{*ky-vs-ZZJhOOxL81hMA!O%cWYX9jZI!3GcF1DoYr=9Hn9qB7VF#Ljmswk>bOr zFpCL^V?)-$w99BA4WBdA4fkfqa2Dg9gNIm7`ymHHha5 zS(7#z?JMD9A}B8Ld@ z&g28lkSWf|#|DPC}WyRt)nfx7>UuCblT{H$>Ci`}jpU(3X4tw=d5%x5#|v zHZe_K-4&5lYNMm4zgBPQNNE5Z`y)M5Jg&I_qJ`_-pooL)E1K#+*kNc z2mM&#A*8h=P(&jKW#R{YUD!1ZNzBmU%JQC~S6fES;BW*gxY`Z{|apAkkYMgN< zvGne9E1KcvZOzJ0Y)Cuzui~Eq(*NXrn4lwSM^0Nu_VLYA=xl!QmKIAt)W>uGE(oyw zo3sZJe8soTTLt8YgF4O#+Z{9$QLwy3A{TlZaQZM@?q|~!DmUHUC0+ff? zMEj-Ghmp&dps$Lakqk^)hp~Z{(`6t!SV2txb+xznhtSB~>!mu?PU%VU;S09YCg|Sj zAX^dZOe@>2y<01Jz;K@{G5t~d^!gzR*tFSLYv|%QH{^*Jm_`XH%*PiWpZuLTrPV?z zyRGagTo0I;0e<(Bu0cFRa2g4pwFZHQ*kqP3CX5~*xfVdAATl=cs zKw`T!T+6cdUChpPQ;xqcAr-3t!ef?I*LW%*i&mN4IX7Z!jqULYx%1++Ze@y9_jvN4 zFr=S7nc~W>F!IfIKL{LM=Hs(--=w^<7y}l_Q zm__&;c#SozTD=_x<6??jDyB==3L-lN#U=a!a=`fEuf>DOOaW$)dKR`Sd_Hs{18r9v zW?l1-$}FQFrBU>Fp`upEg%KbD-@GbA!DR;gS9PNg=4ygV4nm ziY7$B9Willr=PO=r~2~x1~b_k?i`1%YrXe%xY+9!D)=+(U?p5P7JVs7OIL45ck%R1 z{jQt1uIEzvf7n{0Ohk$bUp@9cwI&n&`tfl=UcRmNEQL|=snT=OE}m#WYLK|C%B=bk zMJgNi(ahE<{B{ZFq`aP0GyF3)BQq-S_gSS5&(08ARU@I=%GM>=Nq9)6#J^X+KeLT3pnxe7LaMmChl}t1 zsxq^{(A;$4%w5y6CDA=T;B$4n+!P)$V98Ibfe;KXA<)48NFg&9HmQWt@H1 zmf}uKLTTk>Fm)k*(lyv7Y#qE!pv%}?sx4gTZ<<8-;(eW8%G~~`tP$spb)?^^wRUo! z7iL6Jj!+?wnDw@tB6!{~E4H=NC1BlmQe~9vgf8`%R_dGijNI7?kbzq+)SmoMn%ij) zSd`=RnhYePFbx;8vJZqi?#P9;`9p`}#yS|kn0g&zwj*>htb5-ArI+Iz4Mx_`O$Co#@Dd$82EF@A@`H2s-WWU4 zR;g1}Z_Z^uLT6KTk%75`mV_udU&MvXt;Wu}@fO29NZZ`*_U%9sXa^V1#ku4w!%@&k#GG2hcpib}Y*MKJ752e+ zBuT-Kw2mlQWzXeAk0n8SDQ2~TQ&u^u#lY@$6EvNSI&vj5xnZ##=Sf)6L*;S3(r}K6 zlLayACwv}p`J=Ye0YpnVPdgS^I8f(OVh6K_Z)t69Z)%4SZy-D`Owb)#5euN$Jl~nQ%@Iht^Rp>ht~mJ%X;+E-@|5rg^lT za8l`x<2Gy~QpcM_6f&SR4(4}`x6o0vzQ9C7;rboIDo?nWsfARb&1;8qF$kj-jrxgXP z73!SZ!Z$EQo(`g$oR2cjO2Qb+MzV)Im^F8{No!gO9n8-!;Yy^LE0i4!x~WvWBobP2 z2j8+n>)9%aGT~7%S07cCMZqA>OK|4~$A;X725I|fKe%#qPhUWhKv`^TavNGepg>MS ze%*Ca^FeNYPYxCzE*`!nA+a8}&E&pKOb>)<`V1{9>rBPGlcM@M_#Rb#djNJLKhyu& zo`%S-U@)Z4GFtUE^-@auyGZKS9kmJDlShG(n0{#Veto%-6`v;anr~hzJ{*ueG7HgY zl#oersi=7CC9U5ssXPxJ3c+Vuk&HuY6!eW>NH;DH_is2h%H#FJz4u|#K*8q8{K=+Q zS!Q%B(SyAt)j3(owKg4zZzRX-T3v;!Ut(q*BwgVhK+G09FOVt5(6ppBwoV&G^^aL4 z*jc`8ZMjG#so;-$dBzaSKgL<~Z z?#Yvwz;2edS?ySGZE+OzTHwJycts_R(kom|4{fF*Y3zhrOm?!z>JTseFjug3q`0HqR zhSyOik>c|KbfoLcSvGRrA*VQz+OW)q z_^neaF|2PM*BK}@=8GaZs3X^vZjAK?bh?0=cG|5-X2`= zh;u1e_hLzLUx8xd;?0nwhc=SFb>&mermU3|n;@@CjKJC@+pcWFOXFp{VVuF_7kSymItXA)fuoT=G0PpQ)I7YH`Rg1$js+}*;I zpA)#!2%-<&Y5JAJ-M2RJey4R)W<0#a)jD{N*h~(@Z^@d)UCA2|15+#AaVY3Wu?Tb^ zWsHUVsa8-0{te3&Hr1f44D{KV=}6tlC1`Dy7q~4Rz&DMp7Fj0`xTzrAtVr@^2Rxg5 ziA8zLt=ICs4V9nX4Uf1Y1({&et?9i1fBMI57H_GYwSk~|q|akwBkp<0YwM#QZFHM^ z8duJ!#t7OsL7Ux(-!1Wwewvcx3F&2iie&IrZ5FMF4}=tgbnRm_vuXPAk*M7jxR(j# z=ol)EpAEY(0GXa>FvB21^%KU~go_#*9YLGbMyo2*Q1qD0vw)vr@J7oM-v{? zp_G2_k(kAjv5XicJaO@WJPQl?#6h&~I-u~zl*D1@?ngf5o}T%_QSczWZz=VCv2MTp zXSu*m>L(RC6659}My55Q;9(^rdUMG+ArHK+5bn_(pviW*HM-5ACRdCx4M?rS*6x-) z>szK@7O$p=i`;l6>>kg`28N8(1ZBGNwn?He3Swl1K17m%Q>cwN(BQtvi{NfExRo_u zUZUTg&cLN0p5at}-Xuf~`PfD0&Gg(E6zX(PGRKJCg~Y~sMFgOOfeSxp0QNA?KD6h< z8*|A&{C3)5GNV*ure{|5t^PC0Us7L#RO)v8z8|-yw8(BqW%N4o#&ozo&!yOL-Ba@R zoHQC=B>F0JBppOcIVdNGt$2L9a-N%=m=8$vFw?hjD?n1fGErD|4pkdd$yUXm$^pT4 zbNL1z^faQrLzG&yQleg*S-}A_PpTARp6@GN!lmj9gqoFjSB-urE6i?>T%g43M+O5z`%vbBbXfCRU?obv5yb=t^z0nO>Tp_))Dv7{k-0CSyMe>vX;3`` zxHV~0L`0^O-KHuoH@7J|tA{;zb5Tl#ihHlCy>kI){zo0h{aAPL6wn3lO5f{4A*cOG zXFt=~N6Bk=!G=3{?ALskm&%ul%i9gZhqBd@!i$GU#H!c^a3+^c1#|uj9&o5sClMeb zUyfN+)1N6m$F#(Ey!}eS<{0zJnKf$ECPXUr+PXw1R`JW<>&Q;t-|~+5PI7toqcoq& z)#fL`=PQn%T<<=F3~spX{7b$(g_KaOEUjoTwaFVTR7nfUBiCAx1B<7C5o1q`Gdwr) z-g&xZntk<=R&a_Oh%I~fV)8ba*nj4ni8EPJGH?|$1kZTwY%|*)(@^r9C2RNPZU-bD zc|1Fxt@tEhp-j&^3Yoy#Ur_KZ7chV|k&76$d;|G_K<>bs3Ix+$nKsdCyo~ee=z&3F z8#i<;U#PZput0ma1b{#geSpAFK$74?6oCKujSmD21$YtBhY#y>mzXZru_g9bu>TeU z{r(B&%Le(+5~w-?K&e$xtzFUY@BOV35o{a#pC$NHfnbPW4cQX|+5Zv$*W-MMKOO#T z&|f9L8^MRT6v%-U1oNL}{q=Qz{E2^+fLMtE@&Eq@0|w~-kMLhA_tdjTw$SY0e9@M zW5btg{SRE5cbdn36|SG@B2~gIJKvq0(-Ca5h8RY*U|R8 zQ|j~mNJ8QS*k!p0z?MpnMi!j$^{bn5a&p`s&fVPH&Q|m`>@7}oun_zVs@l|bj1e^+}6$)jb07~4F6IS79Yx^q7@-L=r6?h6W*qn z0B=g)2w4A#a{sNItOxSzI%s*B`u?v9Y2>bT{?z^a{I$>1^A^j5a&{E-Td8Uf4Yf@1 zAMn~{@AGM^eM4oD$;S2(9s;kLZlo5hyp7mK_NopE5;a7ql>c<)=pnr#~ zbu<99y}reEI@DOi6)k)@J**0#O{dP=o@Mk{;AMduV`EXmC}3`O1@F-!*n-r)iO@W> zl(R4qw~mUG#U+RY@5Xr9NKB+<-??aRh%#VfeGe;CDj)j}{C6Qxb@IOI*H7oiwe#-KVwI!NkGZ+V4HOB@Ce3I3Kjlvb?r>FJC5&WOf0NN z|4}YMt=ovHL08{-Pjxq63IY8Og!iF=)g`Waat{i=%`3p=iA_7QP0Mw#VPL;(lvner zuB&XLb`#EF3@&XH%FI$=)p3G(wDCdaG#%nsTdhx@hzm@O2n5s7km;=aimO`4tseZvmf0$59Fg(dSN!U#?b|HDBS#Y6K=IxbV&rsvQAboGh zn0(r2=C>xg_tSwz<{w#>xLp5qv($t>M_J?J8xAueKKx2`%J39CxOnw*g9dX`{IxqY z4B6Qp*^I)SKc&aVxJHaAX=sS@(UnJt_}q?kjg5`B2M|m}dh?n^`yGj8k&N5fS-G4y zJB)ZW*E)CMTIx6b9z&Bi=OVjH*m4`rRm}v%g5tnmYC@YyN1DRLB=Rbq>%ZIzTRtZg zQ3qS_7-9)h>VgUfYyGMo8w;qKwtU{k8BR8H*V-$bq~AJQ9mX;PQ`OtDqYG!bEUL^> zmrdv(V2&IQ6a9yY^0@%`1dF#$Qmdx}#og5XCAb34ZsP7VT3Y0-c5$0bWK-p@(I}|sv#4)1wUn=<&ySB)jqOiw>cARMxCDPutUthK9jVK4YX1yY{CuTL zEV^!Iu8NNAp+n}}*Jyj}=T&Wt(QZvs7*x{05LFmzc4FK_M;z_-G*5CcL;7VBRtw58 zMZ@Rof>f*Z%g8~YU`+JjfTanw14Leub~ah7q6#{%nj7^eZb|o*))r2!2+1c&PZvp| z205vv;b;m!*}G3tZg#kfE81U4WN18_g`Sh*rnaP|pvrRt68~=JrfR@pU@Voqk)uz{ zM1o0Nl;2%CJV1(~p|y5_vEVY6eqbn;*4s8a>PCG*>Cc!baM2vUU2TA{QKnBwE~)o|zBpf~GUcFg|Mh=Ke!v8bCSTGO;gRYW$4tdw#!2b9ml)XzEi8>O8$ zA)50)0-0A)ElA;O{dN;cOKh?eDF#l%WW`l?&KrZo3m4&MmNUkB6%sOf*UdK2a);*ge2gP&7 zh?Wv^IAf)wkHk-28In3*rzzvX+q))1m{EvRFoAds^U%>NpF!@;lX|PO(KxUe1){B@ zhDx5`q=n^%U~$T5HYm%XuBSgd`xzOS-b-Ft_!Bx~sX6AKK%mRc(#`xFjVt(cm_#pL zFK|fNA}t~nMABD*ZAdtaOgfmanMV|Y7f2$7M3-Fs9}@5%&&)y6ML|uyXPXpF9v*3# zV_s^W@6~c#q?oEmQ4$ZqQhZ&PjvAb&sQxv3@c{#ilBlc@m#a21&Nj7bP$9G|o?rXD z7KN6=$XfY^ilk_T2nFWl?xe6Xa#UG~7!WP~cI76Yi^|H{?Ds;_)7Kf}{nCFM1J?)0 zBW!E`bJQSX!AFX6yGLfh*-YNrq$UrX85YhoOR>?=r++v#Q&FH<{`#Gt^8XDK{`BKq z=m4zF47C;@`lpRS0bbzGa>kZ}`3JNE`5p)W@&9s|mNq5+X9e&X6h72k1d+sa3*XEA z86K}!*`2-|{vQw3sR2J%3-D^LoNn!O{gzV%z@HNGsvHdv04rW?m3N%(lhO(CHC zDPqodNB6e~QuH$%x9hXHi{sUmUr87_6k%V=AoTO2a-&M8HsAEO?yd$;3*%CuAg&6A>; z!St{Y?^H}{Zm{Tmps--=r=5rQjR^*?BAeSQN@~M}Q+Z&aY&j0bKc>ld07{p`)F4is zVRAe!o;TL+eZn|k5KO7Ik=UewA|ZhK-L1x;8(K}>0&kMRc@!R@n>QH94D0*AKpthH z1tZDQwKvbzibebaJOViXKjK9&{;Y^huqO>=O^hZ>4xMGGifH<9h~@qsYY9Hq<;?#4 z>u?ebXp1yR`cRc`9yF;UVpsD9-LdJW+dksm!#%e{YCNLC@`S_TX{U7@?6PX+Uc0;E z*SFhwR;|MM^74+(6|%cZa>jX+J{vrc!~tT$X4yQ*X6&HpCRVaaXR1k`n*+*kZ<^wG zh1>#y@mzZkWU0d=M)F(r{!oVhYOtdepU&Wl|2`mn72+kC5Z&)-UQwx#sjr5=*4hwt z6XFw$I4LZ18BXasOWn0d#Y=2|77*Gfi<`PB=P~CxfId$O->qlBzIYG*@;IIL{+S~E zAvxBCwNtevs$5z=g>>YEMpkxG>Ri6XkdA_lER2(tT}Gs(6|giz!EwT|+&R@pVB0)+ zmKUE2N``7Bu5D-%_nC{3eEFAjV-$Eh9=0kb3NcY%1jTfpbs9->f*O83%A98Rkn)dz z`rRxea6lYi_Mu=w8;j%{t|m=>r-KmmQF5l(eYM0UOdWNEPHSV#Dnu>ZsaNNn=PbmIK|LfeQUX(Th=YLKx|cz)|U_R53J#4geB zXp-$L;69nnR9Hf<`^{-9s~Y}JaQf6W_gO;|$P={-FXskTIb&9McBgvXkS>8MOxeHt zEgv82--aCS^<98cqQ99zUmY3bGs9H>xSX!Q;58J5MA*g~Z;S>ZK|#LMsgu4%kxh)$ z*FF1?87MOsb#mO)Tr#_qyp}~18&Q=UcBtLyr1JOcr?qG%ki6bNVQ{zS8o}(29{~vy zBp4XanlWkdtYHhs7pCP)(@hsbFC(@3Pn5sYwT3fh`Ktf00bm?t01g=7$hWeexdsS^ z%*~3pJEdUPZBWA3juOQA#u_#O7S3l@jTHi}f zhBQM8XAUaX9#J`jGSu;sepIvC(k;hcsIA4LiFH05G4krDG#GDha6Jn@^7z(I7>OHC zd-+csJq!c#<4Zq+k%ptE(<^Y1IQp5w5EDzMa!#SoSdl!A5C25+Qqf7|z?+Z}!2|3( z21D>ISXwOZ$!8CFHQG&?Z=MzwQYm6-WL!+sCXozUJB*WCJ3rcv!*~4Q z4MWY?U)DSqY&yU0!307;mB@m*4;E^nXjSMc*~ia+Fgd^oz7xH zQrar1(j$5L|AHVs9|d*wku5qG@ae}P(vpS}<>SKA2;qA1_#AaJ-Po@P%EwS^GTL0` z#aq#^*PIRu%gPt|LOdFCs_c^r&06y65;lhdu?{A184Q*x$4pqx3*_T6wNrRFipCxz zwL*Z!tDe1uWnb}l`*4d2?zp@$OoqzA#m*o)UqZCM6F5G;LNGcU#ljXrK?66omvE9G zXJ}^adKFe)xXEK-A0~v!q(D=qnOLzyD(QU~!Tz3iz_Ca3vzcZ`b!jaGM6v3~z@LjB z6~7f|=dluY75WoG{@szM=m4@9H>s@kA~z(PkD>B5OirxQPpXIR zd0cdN0c0?W{*MEM2zG3HkY)C-j@3~E24Xdb9N}N>g#RsfYl46FUmY{m z01QNfupI8c+KKa9?*Cg8@XWEs!c<-kE0#a=XEKi4>$Ry|)68uTr%gQ!k(D%*DDP&Ka7(01Q065-Qx#pSK!BBfM0~v8 zpG+X1dUme5K>k#@$3c+K!MoWWu6Oe)NRaOaBBua$T89bHoALrmjaA>D{o5fSA?NF@ zCr3y17D29~<>lUXT)(F~MIo!DrKP4OW`bsVaq-~hXA?psF!gfHTMfQc&?=#A-UsoKEHi^s3aB(Coqkkh0@>;jUcJnUO=g}UY76BHB_ z@+q%%u~Ym*kd}{E))eI@+i2I?-dq7FK0b7Sx*zLTW=WR;(Gd10|LIE9QM&rU)%%3x z5PiBF0Qz^?e9ps!`%eYroBf?Z7>8~CV=(`RQgSW+4ku2|1$X{c!6Xgj0%?_!h~|(O z@-aj~et?;LS8bNzu9Rp9YZHew)4MXUrfP@1eOd}`)Hk-0V)L5zhPc_wxj0d%(=7M+ zt<&H2quU=+)y1O8;<}bbvUOSAne}^;_n9{;?S^Q4^IvBHJfJz6vw2HeQIBzCIzPE> z30{Nf(0#wuO+62UYZP+QJYGJe-&b~QM0He=wS0DSUD(4)FMIA(EQOZJ;n_SchEq^V z%#1hEHCj!7XLEQeAI%xjZU71IoRwNlQyAKMh&eEHq3LuIpPN`nsHE>K@hJNXn*f8y zqy$*}l180Xe_t&Q_3-dm+kew6sVBsu5{tnSI=Q*B%dq29%iRs@ER3A|)EJNocV6s( zRoMsjeL}06{an}F{CL`*9!c^*3XW5L;~V3sY#CIh_vMFaLYx1n0NNmPQggQ7`?!_& zMH;V>%wbBCzo@)IB=$=4Q)n||$K#QkKl1{1qFX~7kq(VU+GE+EY6ccAZU(Vikv2m# znU`HvHgbW0qvd|xrKRxQo~TN|c}F+O^|v?_+!k_ChuZfDwJJg`E~f4886_>EId4eW z?`kPGrS{CO`OY^fZJf^kvno~22k;W1PK1#UpA{OxE1MxWzVBlf^xWrEDHVf{VG<0W z&EH>6_EEhZiGT`YImS5A>o#ae zX(P2++Lw2iLpWP>NbiZFjdQ0>y4pA|RdC-n9qI|Y-?L6cz^bJxFY!?-4(4YJW(h*- zPw{i_WtL$byAb7_7wh5Y2CwhM$bOymS)+*FS0)eU{6Y>(pCz6GsY_`;BX1<-%DN-F zrjqdDr)&Og%HG0=ePq|fvtqW*gc|-u@Gmv?J@^I)mNi;tLztQP)NeIBb{E(PkmpsG z*xe`7Ie$(B$L?0Zg}r7DXW899zYukzBVGH|54K!JQYSa3$AkuB_2$SZ^+cc=$LI`Q}9LHOWyG|A}+KJjvH{m0lL(M zg?gzYb$b))&3e7WdtK%JClwLMz&BE=q^NTz0Y!WgWli}E+*+r>t1w8^JfhAIluGuA zhI)|5mqpnRTZ5nFR;=gg7Ms=^3HIp&y%5H4X|Hd9+_B`C#Yl7F;(2Ly+!q7{es_YjU*b9w+n@WH zSsBz>-0^fUr3d>t8I04NQ!lWJ&8+;S{=Uc4AjBa;YizDHDO!wmI=inkz>X(&XUSg7 z?kX}nW5IJ~5Eh1L6BBRn6D5PBoy6SjPS0a4md@gHeBgtP(XiMD^!*4_RQc4Dr&3z0 z$DP#Um~>)km^-`lMWqYZ`Jqd;_KZ?>1qch)%_H51{zkG4sy27$otB-tF^}={SjBeT z(oPVlK+A$`35B`C3~?yk`OPwdu-4Hw>Xc_&Br>%4^to0=fRTH4u&&CH@uE z{RA!c#^;dkpGUK+T5M7F9&bH6eU^`4v^TBvcD$9a>}n8h16C3@>)r`tV;}X{|^1WQF{Zns%Y)Coi>GM2;m3KC~8}Q z_wL;LFrv@ID+%jhqr;Bw{G;uR=O(_VE@_9Cdi_PD$;V*g;t{{HZ%T8joY5+2D~aUh z+}XnRu!!&E0UBHW@w(`i($k6pJnI>qJpGr*aD741rO1$EkirFoQKw z%;%$0Eoul)q|^=)bII)#gk=H6c!^VxNF!s?fNxUZKk2mSMZ63_J0wQX6Gk4NE%Nyhz{TRuS&-4= zy+Q=->U>5Gu1Lg;(8N4u-k3HMi0aHiU%Cz(P6v#0F48ae8y0F?dAyacHoBFG13?w( zj9$B{7pSv3<`2JSsEe82R?`{uJ3LOlB9M`}e86=Rxid{^KauWVY9$VirT=0Ypq!J$ zr);)upPe!zaM&n_UNRx*#)C5wdwdJJx3+yZo&NErKXar&3gk8Hxfc3-dXA(+1yjDxWsLPdVdc~S7$88iz|kfgX%hG6Ja|%|PS#_(5trN-d9vK! zjRSyA7*qk9`Yc>KPMY|xYfDe;PsR{72K}1v&xkFMm6J{QqdzY-$G5memFMy&i^Lvm z3I^9hE^km#MnCwBKYgdsYb~FZg=J)U7A7r(y`VQU-lrhjr{!$zxj=6rM4_+$@GAFVD;*?eI#WXj6*Tt3!}(EKD>izu zR!PV7b*%6RFC4FI$$V+mgxKULxyNlecx>t!boJQkXnJ-g*Ztn!5u4GxI5wXDsa_Lf zy0gPzt7kVP1g4@JCpt_qU(4(8TPX`F299^GTx`8Z1bOOCdAIRth_7$i0?#!%t3Ie7 z!h1j9ZgOPIvnM>Ij1b89x}xXoGfz1hILoqe=}pbXMV^CeS^8BPlQ%c+$^c{IhkRUb zJhjg7D07*QhahJKRB|19?2mxL*XWhXf8%IJvQ$MY5N z1=oJ;cOc6CI2Ha*+_c;=a8HDM$F8J^ooTr)jwj|0Dqd`t_z3#ht??6x-R>W&*gebM z*;S1O=>`Ne8AM4PCV{!5B~3J-OVC*Xw<*8$Y%fcDUJxXN(?Yy5+lnRd*nP3XzP43D zfhe`IR=Z-Zh6(-UgYYjs070eY(R*&LeLWg3eRQ;@zIn+Ph^-X5#n)mq40>jH%VK70 zAyHUK6zI>vfj~k^K+$49&(fUWuM}oNZ{`AzVRpzkE8`(;{ug_16&BaBb_*vY1cyLy z0wlrRU4sXAf(Lg94vmN4?(XjHG!Wd~-Q63P=5N+Y_S)-v&h3A3p7Y%@>6%rus@{5K zj8QyCnoB9PJvrp<7!EQL!X=XU?^R0*m4s~rLG{yD@)XuKdjllnJ=sD6-V#%W7RA`7 zB{x6cOFXv9nBN!1sI*u??gfL%s&)Nhg4mefMKDMs&rG)%F>rl3!s)@yvUQO#c~X|w z{e9&YFrdzCC5oW#wGKmE44A_e=W5NB0n5^DtUbCg>MBMF2ueDK(aVKps4cN@pqr&w ztl%h|wRygYz`#hkn}}~TWOy1eOYSfl2_m?vEt&c@b}|ErK1S0Y#C9*@iyatSj>LLU zmdmB*tu-pFoS`!!;wQwSHhSpjmai6&%haf4=7Wxl;j>LZN;i# zelmJYjS5E=Ax<$*18eup#>`@THsO61{0C+AXfD-@XL_X3#j2dZ3{3MVEK}CE-ia=& z*!fSHB0I+yigL6yjw-q9|J22*r66G>&Eg3J7XW3Aij;tUM9<2on`^x9Mrdo9y7ZMG zLjQ14fUR#ZIzt4rv`GW`-oKBGtJGbq!#e2|v0r;z(Pl9GUYOioXQz?x1`49LFlgETf{ctP z`u$*p;yRz}HB>7%$tnzH89$>TDyqo6XE?RB~R zyW(9ihH9O|`_@8Z8IHB!v#axmF#C*!+zqPhu;3JOS>|YkRF~B+E+)o4pLd3Zp2Wpz zE9#=HFto)c!i&bf43_ZYRcLTj`n{A60KlJ&h7MyMmYn;kF%Ncsq zzz*--JlnS+5~4tB3FpB9C`qTWN~>7xB4eMNA^8xIpo_I?@ze<$Y-e{)NVGy?zQ}dr z^oG!4&?||35FS@iiHrq&skecm9dSCow0Yp zxqE!~CSU%@&$C*-g8{^w8#iJB;R+L7io3gmFRL}RY+EyI!BDw~jBnXxcBu!JIq2?A zeUg(0R%nxxNQpvI3-A34>r@j-8k+&`H*?f-E#y=*DGjGG-4)4~zHL#_Xq0qgt<^HQ?}+GRK0aWQH+#vlz9(+Wa2t&WblJ#+Jn3 zAQ`Du**ZmYiw#!^a$_-bi*t=b2f}|0+!7%!O#;^&X?$!OJ^ z3>H6a>++@spK58Bn+Ln>MnG!PbYm+y<-2Ohjx($4dm4S%M6^szia4VT6CbAFBUA(& z+3;iEHZhLUu`9&C@2Q^CH=UiPfU4n$IuBNJrhi-CUCgXTaCbR2q+{Mpbuj6n<=^_C zOD}kBUqs;hI`2^9kx2pPx+LLa%j2Gm&}czopie^IEmVZH#g90T_n3E&-J=8NNGT#i z2nGTXd#G9l19kYSd{3}Z4|mv4FSZ4mESHbV{5tWGQ#|6eGIrRTclMaN?UeI$*cu^R zEaIVJ0^Ew4UJ1*?S1S;y3S_=wwWu3S_61@AD|y`J?+z!!)jyX(dDn1r322SvJ}uv| zIUd^2m?+Fpr0%UvrS^P*SVJym!@d)!em#SRVPmo&Ed`<>v#ZFmJ~1o+JH9y|T#_om z!_nHP@CE%BIzM-|@v`2N(}LKga$85vuaq+Rwl^2y221e^o;D@P$%8W4?*nd2+HJzH zy2@0sF>AKgLO>TW#7d>ZL!UQu*;cG z_c(1FiCNlqf4dqT8*9Tp zSa*+0I43lvJSF~UhY|ZzA>tQ`*IHUb9YUdN3W;hXq(SY(={z^8#LAHZ&a zufD$c%*<)EUKTGV+I`FT6^rssTueyis7ifQp6DF9Gnr0KmN`S!wX{kzqF5ZX5bAKI zAQ=+QPqM12&RhK$TwGlECMb!|(7E)S*QqyH4iYS|mxZsLLXf(hu0VM<4_C>-rv&I3 zv-c4aolR09FZN2gQyESOVLTbHg8(i$O`^LtiCvJW!4%+u`Uhl)6rntsUeQB5Yk1crNl?%IioGvvcp!Lt+ z{)*>E8lGX1&9BB>|HlI<2#{eGoo3TQ#Ovy4fe(_6#-S2Y`YYi-+7G?k1ONElWD6#s z$L-++^W8dzM=L|gFU#n*tPQv~5f)a(l5fanR=IoTu@A#+Te<37T^lBh? z%00KQmhs||JOhFU)$?($uWs+?`1oAkFwT78PTdmljV1y}eLuUL9B0Vx(2!`G1peAk z2&bX<&dc*jvh^U3QldgWl7@P9VUGLqdhg(v%tMnBEGXF+gHX4!E`w)el*=F!g|-)# zjP(a8k+kVM_}8#xMLmb1a`Zfzp%fo&Oj8h@o(GUF1^0}VIF9{ati=CfCH@yH@qaf~ zLPq&?9&h3{Jy4i{hf;g>pOEFbDl&=#F=7xdP$I7Gw|2>s=y6mQ17b3r(nW<%Lk$T0 z^ZmKRm8OU2wmUTsz8lnGJchvehJYg|rE!s^$kKzIf=%B)hx_tsO7WJ7CPcKOo9cWa zWIXyjd16pZ7buLef&(GrYP{dXKV`t1$3Sqjz&abM_n6>8h6DL>R@w5}Mkye|Hc?Ux zMMT5}o9Xrf42b?s*fGX=xrkqFu!yHhHPag@DAXE|Mqd`$Q^yt)GfI*8knuToitkP` zP-+A<=xLUa@tLss)6VV`KD+fJ!-V6tQUp60&os$RcBNKJO8VXObUbqeyNr`@<_Lj7 zW4BRiM-PJY6kZPuelO;P%~ivF@rt`rKL#SwTg5ckt57MR2vx|nOWJaWZ*LE=355?M z<7DHuJ1g#h@TdPAY0njx(FZ7OICFPU?xgYjj7r#plN9q%cVe%Hd&bo;_q(FP`y~0! zR1le^%v)$c8OT;!)IT_Wa4!C|l;UIV1X?>hDRfx^gEP|7Sf52PJ-EF2b?QWAI1Q8X zV3MnUi=DOYfPWae3MU9jG!&p)G<$a5r!v^yiPZfCDHV zlN=>XJ-$l5R-k8}tou>8e|&Q(Yf|)=u76V5&xh%*=Zn1R>gW!gWBAOo2q{GirIJY* z75t$8a)c&P>rpeOB?4S)^DAsp^K6>3tD~1keMonPak&j8XBH_m)%dq3aqi|639nrrp=~hmhQNzQ$a6G2vQl4#*DMcB1Tmc2QhpDeIAFL zw~F%kCdN%T>;*+gYe=Dp<;q)w|1b98 zFL&?l=>PxVlMDNL3kbHQccUi^0UlmlT%3}M>KDYdmwoBx_85xKm6(uFW3|%4+Y50- zpCI=qLh!drN=j2Jfzg~$A|fKLyeqS__0pVLzj+gCb${>wwNdZMf3Q;V|6roOK|@i# zyz@JRFsn>-bUr`Lve47Z=IB8~S*WIGX8v&J_=FZvTwJ{0=>;Kk4Gavp+-}8j+3ySK z2`5O3tk|E;dbUA8xleZoWhz?EKHXCmx7qC#f7NgK)gds!*=fK-1Bcd~(QybK+ug+; zXt5d_$%h{VuK@&1&Ce(HY*b8*%aU<%H9-c#3}wFT%e_)F#$H}tKHA;=Mq7b*1wUZ= z@8%R%~7BjFCwR%WVW@7oH4elVeGI;{~}z!_JUMv!JxJTaO4j zAN#RCz)<;%?lZ;g*?jLmV?OU_-L+7{wP3y)6)u1P#Kvr|!T4TST25;aOhaL%k`7|i zj~)^D-MziB12QE5rOY2xfm+22OT>vluIpP~W&jzs2F#7C<43h8I)u@u5BqGA@?p;4 ztweR5Ggv5foxJt%zap8{zGn=Exi`)8`%~FozGfOx56b}lZGF5j-$K3*)NVc+qQM z_R56Y+5-(%lLN}KMI+G(1j`K$tdHVaYl4r++mA3P1mBjV8ida@;_Z2l&M({jHlbU- zov!|3U7Eurw~bk8Ojerw^37}xxQ&H+qOVEIytx36?$@CYw50%?454fXt4PSldhSe< zmjf>M8T7iF&${tKxY+^PvWXy*h!JnRIB@afw%#O&1woI%)^9NH=w8wp-co-lHnQ=_ zJ3D*8tk!kIi1HRkeOXLP|2Gt@8u>YAI};YU_<=ADqU{1&%DjGqDEDx#0)$Yo#B7Lm z+%AI#No_Wu2D%UF`Yu6d6w`|9hqIG1=E2MsV=2sg5jhz>oVTtY#Nm+ml=D=TFyFOk z9WAFsr}@M332C&fTv|&tD?tz*E$by)3{~b_;rDTv0MXti&u&eOpYIoID?DbeJ|rbB z*1!*Q5#YEBRho;MpETlRW7X2Ax;@Y(CM_3vgJZ8Dkdq^Tv+FxXEgX3;&~|OH!}-1Q z8+p0U$VbG$JU<#dvz)@!_ByYki9#wG!$U0|wOcZqTe*2KeB6nLqM3)|K`9Pu5SRMN z=}nlac5$_`7iechyVX4fOxs*iQj(#wG;#bzR4S|9*Mq1fh1sg1>|_XVPd96G_^9QJ zbfWHI)-|+2cyHidL)QD_J{rK0Jg&gx)>2xi!timKE7Z;0{9-b8rc9HH0vGou@!#h! zf6+4&@W;{s(@r=yPC=z@ijmc4v9Ye3n+x4gcK73oFMAs-VXQ2(Y6N|#@F4y7BP*7R7v3JEjgaqNb zNB7l}zL&q9n>i!Aj^r`yUZFhJQfD=>6dJ8S<&$DG6@uH}0*TFOcd4S$Due<6kM;?J zH{S2^__B}8Ms8b|+|!Dm%$C5fUNw!6%5-np?42-k*KA!5Op1%^eT#tkZSfMHZRWtW z;blp7$lyC8-@DiP{bF2^w=rQS`}&5i5|qQi7nc!O^n0NA=ufv`78LFQXgT#vNG>Cb z*D-wNphlktWIB*Ie80!;b#kRxD-s!1pV;!iy}k1;LSp;Qx0|FBTE?LgPe>gjku;Xg z+eF2Ee4fPI4EVzVtXx-_Xj)Sl+rm^D$#*2RmE4Prj|dkh;U|uW)PzFF7pXkPk6zT= zS@_`VuP}7<=*tb2-DG$0lo98h5OOy;)?KZX2xK|N#Q&v!&?Vw&N7$jIhxL>Fl3q;P z@lYDN!PZn=nG1Bb)?)s;*WAOz^;rxMpLBq;Et3F@U?fy9>W_ z&Sv&+wS=upORW-HtqEF@NnoY)9(6nC`z$)gM|n!RqwT&+S^~LG0h#(|3HAztGFTei ztJ_Vn?kO1iYZb?@LA9XxE8sbLBo>;=+oukT=_UFnayJmcp?2|^B zN#E^o?i#dFh;MH1v5(=Vq#EWRMK?sJx{6$6kBdl%u&twJlgp1^7On%!QIo7IAa59U z8NhBqZ>IPo+g$Kak2%$&30GEq4UV5Yr3kS?Bj5tC1POw z#HeZ)Cum%R_SoHE#F%jY41huNNVYi2iO%24dIXPZBy?jkvz#f|!?vk1*@f+?OmZ2vabSZB zry=e{N%^~ZalCC)k-e3dwTpZ-c&#TW$}(|8y|H)bldbw`wLMk>#SSyyz1RkStw_Sd zc-MX*Wn)0-%f$1L^AW3?OGD@+P*`WqQ*%N~TT$ds*tC(b zM`6$+SF8Jcd+(E~6cX}PRkIEAO_oXPvW1GP^%7Zz`Uzq}t8Ul$XQ6tNF;NO;L!~01 zmwh7~!rwu0`q48L3Q`INp!8gtmN;#qGj#c?(`pcsn355Z>fED=z#%ez+PUl23{~W!D3rsJ#iUB_{ZIgoKvJu`$>EdP*s$9itcT@CYE9DlWE-YM zV+9SCg7Q;#G`5vwm3rGs+h}q(LDS`#;Tj^snhw`or9B`QBV#!q-e(4ql!f=M(j}dy z$1cDa@1Lf9_9`w?VW%@IjeFm^GpwqR``B7|7i~*t;*ah94~|t1YF_FHj4^I`=9?yY zdDhaMt#38UEy0_}-pSX^SIH~g?)Il>do+$%C$c4%a!M1l(l9enm~E3?M0SzU+36N8 zKUURcZq#9cHxV}Utz zDoQ!R!A%_rPV^ML!I<2Jb|=tQG#YVdbJu!v!2Rk#x4zm5{kG1CzgNdFV zX|Jr;gGg$Jz-F3t-hr3^iTIP6v}*Fw&8Qye$Vy$q_-kuGvi9AZP!l+=?sytn5~wJ$ zBkibR!u&I4BgfOmg_?85IbIKYi*_oO-86!; z7(n;-nU3tbA_oAZ`|#p^YTB}IpCoQGVT)jS;0)|!k99DHNL_@|5D73=rYGV^N|Lq7 zqr{xJhs#>`ZTkZ7A}fH1iY`v7AE|Q4qcCJ_(&JN&kRCx|__V;b} zG=~Q!M3NXS3M^-&Pk=Ip9xT^iomFpZ&xt#)r)ZXpbb}X~G`W5iwA5@`VIl&*>ljj}RvDmJIY0e!;}usF+M-RP#8`%`Uo#V1};-N|~f!1w|8Kv1Ch;jKKyN?+GcDw_4^ z*f9w&=IyeS*)#knRJmVdj%6YB!tOcmer-!u=6LK>IM<5=_Ieu)3h_R@!}zktcJ=f7 zzp*Yq1HPus^41o6Tzr+2b6hM*;{R6qfDdbSFnUgv3TJ}V&*NemPk&q9EGxHHViCj| zFNu<3ypUn*n8cR6+X|;rd+USG=a}~}!O6EW%Fo0VuP*1KO}pu)tA60X=)+dItEGvE z*r=*%E4E&MhXS}(X(|Z5D12I^LlE@^ZyG#IL@Y4xY+Q7}B$#54?^D5)#IVZ$&BNV!ZBmJZ4+ZGTG41yxl8b?jdYu zdD6Tt5q(OgpGmYloK{HdmOdODbf9Zy_jIO{qh{vQ+zo1C1No!AgYMU6c*l!Dg(+A} zjlR-~`2M_B($u{DHNezLt3Pv>sp@k}z%e+@5qQz6WldpqMb&pefbw;&RRSZ0vH#HU zLt0&bG~L9(U~qWV46|CZiIvVT_Z+>)?YC7uB0O9dyK(M?BRSgcJg%EPZgL;*GkZIg z_=fR?yp{fw1e`=`WAUnCSKIbs%&v5}NN4lSn3>*06WZrM?L`NM+t6nSAu%M2UfN1Yfo*odQ3gDE? zRbAN1$=j(ZT6IEHYEs{GJUg5mXrJIRaTW8OMUdP=rAX=RpT?j!@o$^$9_w0z+&F9! z@@8q!gk6d2t-dbV)+e`{a3ZE`N62MX=KS+K>}gq;2$+UBV`of;5fEj=t)oDWEG=oH z7PaJV!=h{BHt<}5_{rkVD_hmuh~BDwmGduEbrugbiA;lYwSq99mx|{*EY|xA2oqs^ z>A;DRi(gwEaR#0C&XR`&4gn#W95I6D9+K~>Sb7l;P#7ZxBE&?rLs)t@z2(T-1@^*_xl{?^B?da|nkKPP}BLXsTwyXGq^azJ1D4xxu~6r=7Er&8E)U z9ru!81gwyhwtT#QM6L32Z?!YjhNJNt5>~0Vb07!a8_nzowjS~(u#L#H1Ur`$j+XZX zy)iFs3_CX@M>Bc*b$aqXmD zy7+2=Q*BS!O*TnoxaH#OEq*zkAHNdurCmvNrQSw*6?@)#AV4;7kiSN@@~-(e_hUZ% zg)-EoS>?d`=WcT#sk1*aiCN^Ms3hK8o!ttUX>yEg1py%4POCn?P1P|G^yrOtmz$Hl zi^!i)lz}bJTGDzSp1)L;cT+Km-_!0JCVk=7LQg?^1fa0JPFc%~Y8_UnI{r*RlF_$F z*6CJTmLjdy1?KRE2j2Ih^lW{9@~3a_$fzo4-C9@hIYR(okTx465aNwoUU@U<*}=2y z7tH#`lDhMxFqOET(X6cw=WQxi!+v3V`)Ey1`lSmHx-Wr(c$rAAFR{6{TL2>aDS51C z6zO=^lV5_Kba^h)MGmQ^k>q!{Ilu#u zVuq}ht+uF!oouZq#zk6Q(CWe@jrqyAU{@QR3ZB1vI8`h2#C_QzzxQ4$P%C6}<;4Hw zn*sr-a4Hw*=j=b(m9xGq15b#RK`*Tq(N=H0frf@wjRKo<5|md4U%ayl@v&d;bDKjPa$cgfzw#9Jd586 z1kd6$gSMAGZluhA=@~h6x4UdYD2bCkxSo8HcEhjabRUhZu$)mqW3#-QwKL&AAv<}9 zvB{1OtjoG9sw-W1chs0!%je|t_qkV%3duVS@r@Z8;BoDR;fq?;x%3tI_AqU3XeP%U z-Rhnd7u@R?++W$Iyl2;w(*JO+l0M^du(Yv~=kq!61=sbFdUB+VRHx{x$es3W#N@_x z@~tm)iaf_m9*)t*rnA>^8`s*o5Md*pOg13}MAaU-+ssbeAAAzapP!BiR=2X%3vIQn zhe6xQ@z)TIB6?0A8LTHvAAR6^GbS_-Z`v%z}k~tYTCuvShn#2Yjg8zfXJ?I!)LAn zG?126vH!W5hYStChJUuLENj{qy4c{F6XlXHzFJsEJjk_M=F;WbXLe*p1Z>p51M{l8 zTV(TAlsd^K_`u3fWo3n>2UxABltYH@7&ESHjp_z6oco+$^2)U5_!VarA$$+;GJ1>$ zU`p}m7&Oi@m@#qI+qSfrs(7y=s7(DmZzqT|G$3&Bp54_#tX)mq@X?3{#knHtr?7|? znA}xZj5|&wVMUvJ-6SN}^uVq_+~elZ={Fk@qGuQ(kTDA8G7c$g=ZjG0C^%QflB~~8 z%I7KDkiQ%h8-pj0fmd5aOG;1*9mSSWo27GBBu^*kEyUtO01te*GkR0b*H)4 z9Ia`UXgwEmp9e&bFunOzx@j#RB9KwIOhuA2-d%1AEUBtUq|438fm~HT4!^aIOQ~GYNs5U%ANw;Bi9>F{9X9?+6WFsHUKpYB^m-R3qZ)BGPbLkw zDfiw?AY*K<$|%h}u{~AX%<_V8nUZ3@Yygo+$EuJr2FtGhd1Kn_wSgaD6-B(dA1 zmrs2J%svgKoY~HJ*S}JVU)L@IGnGChSY{XSqpz~^LK|vcpx*M8JHa zPm#!N&;7lq$LWxq71wcO#u`xY+RG+KiZ`*chWlvv0*{kxxFgS{5&|AT_zQc)-*oSE8rapRoxOW%31Su) zfT5wQhQrhGjPhqq5~a!xP&@C;wv&rj*=S^8_6Q2y;T64ZgEZ>FAUJ^)c| z*__9t5N+B@#W6v(b+<0n{!PUApqt`%*)#e+@350CCD0Mj0fa-3=BxnEL6n{D)y3FSj_on#WoS(vA zq`@~?{Wf>4#`xvjoCbA5b(WX~Qx{=8x)EYIiZ(@Y^WIbj-#)B?KL#HVk(jFI(Z{M~ z!=%gO*VITG*t_H$acljqbXY)CaK0@h9J~ouG-vy!IvFKST48T}Qd(6sVc}pGEwK5m z=pH@xjp9PSYL~Zwpo~zSrrz_>de?K0I1Aw(ntvx5Lj3-m|>3-F$9n9jiyPp;+{ zIG=1qJ`C69Cr=8V)a;uo@fy2;P|5(7tME#bqQZ?B+O_9$6D0Dfrg&)%W1%py6#1s8 zX{3bY63@+t{~i1;I8ioRXyG%L&EgB}CN5+phhwGE@W>R6S?=SX z1MFzCxii7qEv`5VpOa4Yf^z?gr_yhs%h6^ZY&{8{y&hvBue)NmJ#_+j&`;XE)KL+c zNK|=(F=wLntiLd65Gr!ebEWB1ZUK!$B*8ep8B{g$C?-r8gJ3!V)CGe4qbljVQvpHF zC2i30v22DdjU#*e+wZ?|1fznGLkz%9v5Q9b4I+hzk_Hhvm3j5r^j*E}4)SB7Vnbkl z0er99%D98Vyf0wIy!Us#-&hJ#`cj`TuPv;w+n?MU&yiSav^P`AYXA0O)Cr0)VX&)9 zI6v$--Q}>Nhnz9{#Of`YwT<>mv@Fr!$YnR%Pp^I_nWkV@)A-bf6l-g}MhPoNc<&ES zTA!p>{KXcQ)fP_a31GSNUp#UyHakbTvm~da+|r4W7x}kiFg~~#ADoe+&=@57@ zlT^iX9IhX0oj!W-NLy-24piCNqPAd{69`jQl5b*d4mPqM9Z)%Jh}O?3YdHBcK@g&G z1A8)Bfb%s$MeoeF#yn7VgddKea_WWIpt9HGh(#(^rixUms;aD(8kII^97;qpB18lt zA(v-Ea>^G@@||8GKLbtwo@MA~^_TlE@`fY(Y^6(N_q-9{L)7w0amSN@HXU#?*g z<_jlltsaEsivo%LpOq~EL(-9ENP5Qz@ zHOw($@s6Jt6kp>Z3F7{7k4$y78lM4{x2+o<-># z*pgUbD>>R$lr2W^7 zg6T*Ivh-OYrsS|f@10gqpj6>{+?a^|%q`f5!EkFT|40?X)`G81r0RHuv2|W)kiGK`R#s6kqXnL3eU+ zHi_J<~UU(ZL6LC^Pw&_}#gIf$}h4gHPdG z3vY4ZNa`M685!x2gZ!_fNn0tBK|CC+${pseMs{cz$=JNC>?`AXT25_Kk7>neY`NbA z7hTyVZpytfth?#%ga`Kk8$CW58Mxhx^|&-kBJ7oC1WKm7Kb0Laj42WdM)Np4=sj@bB9A z-&hP!Pxt5j5$2qqg9Yzg>#M5t(=!;jday%MlU>8z4S!YgcuW`TrqEZ6u5oB@r?)xy zh#MnLO(~{3xaySX`ZYFV+$H$5c%)RTLv`qL`cK{3{hn4M#7x-mSR{mV#1Li|BBO1l zLd`*W`QT1!TBbb08r;Jz4dv0|``s22vdsssfP@nNobg)u_y6uz>NBXe3a(%=#Q}{} z7rN2J8_Fn@YDI7Fq^soSXowuKcC*sSiT%rMF|N^dT#vD&=HRXbhIp4@JF2KdsD(sbXyf}{?pAWUVt6_Fg-WLrkf`fj1IK4{j17X0q8 zizh6nN@Y}o?f7TK;%x89VKWz4PksKl4SeVy_x^UWXb0^kO)=?bdv{f2rFc+Ps4Z2% z6!OOwrW$IcH0w0ZYYPiwmH4Zp8AdMkvlT^ME49$PFozK%2aRTiiBw7qRots=RbfQc z5=-LWA^Pu)GeqQ>=gk`C!lRCn#2FZW=;%yyPf6n7R>I6?5|o=_l&`mU{aH^pvTE}j zflo;CYlYRl)buaCer~~`wLYd+F0v>ilAasiM~&sul%(p5{%)EtjLy>Y%VVFp`X|gD zD9)U?gyb6m`nzFRTZ$vJPw6q*X$k>3skS*eq8+*2#QL&X3r0YZk#e1fMB=H)GM&_6 zjFGB>3N7M)OO8s>dB(KmvRR1*DK8n}R-Q2FL&7(lr%Qww1PSVtV~moZIGACA$4kq( z=7O}L^QT}2q$*dd%j1{I!KxuE_%Upx=5w78%a~rbQeJ%obAwB~9Q27*@?rO}!ey_d zEKR%r>c|kya!tCPBm7u+)7FMAmv$bI3ANr(x4mqOLhBSD{lI!MoWyolEu2&YU%9~e}6fM#9Z{6HoFHf-y+0kopIT=&eDN=Y9pQ!!4_OCxB1OmUy z_mF%pb}Swm@;bN~?3761rY7X0~{JSdJp7cfc% zae$_Z_VP2BQd|v@^jun{iq1-bg|`&kMVK$;2?B6@jM4WfVyY#gnmWo4S6gjbT2Mcz zpeQMlKv7GS_`gUHcc*5a`rf4|rTHKFLdFg+i(j+e zqo=?6*RFf?iSZ|4-R^<`js*&aD!W_@5osgmkn@<|XIvIr!7B z^u1@Hm=qSZXF;3)dNz9a+)+39(cgCUKToB|AS2r=9z*-rzds9FLppk>;EDWasDE5O zPKc{0WfT(o->pNQF*iXvYM2IP_h+cTU&KEFv6SYVX4S9%{pR#J2u|z&wJ8u8T7Cuj zK=!bUKo>STx|8jpBoY!5d;Ja)*lPTjL_}H0_?)xz^R;F(rANWIM88u^{OPFBLhwEU z#AtFMEG?$*e2Ut?T-s&Gw3B=kW-r)?42L0m`}XzmVgqO=&4ZJjeUz}NySrO}Q~JYb zEcB!)%j1T>B&n^9jllcaSUxyxh?M#BT&{XSCV-b7AD&n3Gyw@G_&{f(%~14xcE)PvbgM>BOx7j^EpDyUS{&SdsRuGxmeeXO&~NJ5C{ z%Ju%DGd;$!WIN}*J19e!)WBi4^8-%RVlw&+FxFFygm1aLHhQk=#}9a%`%e^8z*x@P zkyu6s_V3Ou`TaYCgH~N@4RkX~rQ%+9z$yH$shhU+nmTlMb-H2u674kF;z zCP+q(>Ql@5;qGo27^B4?vB*+Cet0W-&9xrOlQWg zB?INp%vNi7#Wv$l4lk{U3tsdvf-_WN4xxlS?Xc4%BW(F%S_wG>`BDM4^(9vW(fGtD zKq%r0ECwXo;-XaFS`uqS6z%eFpQCAJb{dhH{Nx)o`WGL!2jkavb}aisuC}kHcF^r( z0Oe-7aD>z#-C8ZV$yTN16oTSHQN{jtwGINNQpJXf?!>*~XywN4)&?uzec^B@ukCl~ zA?XJ*WqDT+Xf6=4LADQI)&5jJ(`(?WH)Hq>kG38a%@1R=!;%$3_a3ghULS2@n_Ovy z)7ex<_2l8m_nT=+2S3J1BO>Sr+{apeb-BRQ8*v(Wv@2yJ+$A45R0moQL>#`42uQl0 z#Ib$jShaajK%=?ff5pP*J}{58AhWESi#)y~B9p=}TS6UO)IcMAbrmw;NMf|qk81M% zy*BPK7TQfQMmWG=95%Yod9^ zsN#}EU~ny6P^mKfl_cfRLvN=4RV7+T#bfxjAnE0r1C+|5MovGN5wJDVKpVt|cRrDv z$W#S^b;cYZCj*NO2Wx|_qgVShX%zbowk=e`GzlIUkt9>g4YdaOK1y`BsE+ap=$9o{ zjJA2~!A?02$nb$eclacx2{V7BGzKRU?my{AF)|lYP@3_+gnuA^n5gxD09}`XE)#%n zAbS{^KN?mLs)2Fy!)LZnh&qeyA4-z!9a*Q|Fm-b< zWJDM+snqjaY?Lm=-f*X4bC@5ue1ga+sV%k#SO;qMZDc1VPEeIhFD>#;8#PEaMXP=N z8gENVF5SYR!%e6Uz}#)U{zNgeuP6{;jj{grPS#Q`D}b?`ko`Eh%t z8whA#M(WCLxcsqyZmy(^oMub1zh$z*x#EjU;}} z2?k9OD7335jc3Mw-O1r(yf0c&s=w@hpe(nTp!O?(_ik&zIw)5JTr9;?$#Vzmag`~r zbltDvOcMeI#TJXDHk+#!c+X7k)fO;R_{Gv3fsTwcZylJstKH*)rsFVQC^sBqsbd45 ziaDxo;NwI)QVE&Qp*IfWz0V>PY~x(XkuoyqZHhHP1pp!>G0Nf}FTxw4=0|jj$cu zZgiQ`(uo_gZU+vk^6bx_ zxEjS48H?NUV}L6t@Y`-&$&&E#slzU5KBCIZH{V;{oSd8tVFJhlI?shHg-g5b8a3P( z#TSGjzVHrhArr;CpR(I*<f2O@%vir>Ds5* z+slaed0s8mcK~sb3AdvQ=i`~3nF)@IMB6*3g8V0h_wW3exm^c><(38Wgrp-(EmL{5 zE1XJaGm+i4}}oS@?c;Qx^KbIXDjE@qQ!pcqdns*1F}v+ zbx}yFx}z%5a&Nk`V8bc^j@qY4R$tTsI(#A7LD3OxvA!b(tk)+45d*a2x0)x;-nYXS zDU2~;AzRhayYvqeLq&r3!qt@$<}Eu^D)7-RjrT__*Zksf`g<*DgSDJ$Q8KyDbMm&%X8(%h zAXo7i&n1NlQT0bJNo7tpHx@I128{rvXz%ls8P_$tqdAL=B& zs>eEtm>bgQ&bjsi3`xcHBes>ApOxn?;`zy5!JYAt=c}3! z%N3hv%@=THm=Gpk@Q&tS+oThOJ3VcQwR6BMTfE)DODjyGpGzE~DMNVBx-n9^6uwN9 zpVv?;bUDZ@gv2x^M_4(;DJH}YZnr(vzSLm3Qd#{@8k$z6b9WNLhsFvY z2BvyzN(tB#?12$UwDuNGN&;>YeVec3CENHRTFw>JrX>tb6&a+*d<|PlTKAXy5xu@m zY2h5s&Uk&TA!;7uuIW(?K3REUK-0ZSs?1ckezv&julQ&mM?XM5skj`W8{g0Gqux5W zimw>|9P2N<=3lG1z9o-sYyx>9S}45dAMwn9`PS0u^W83A3(!@1MZ(hmAr>$iCpkJH z)Kf1L^tGkU=rnuFtd+~5Xxgq+x>Oe;n$0pK*onx}2PVq(8G6s7Q<98E_WEjzZu(AF z@w=1MVGCjGNW3bT8MmKuQq_zh1;J=W`qJ(?yTiyFRv2K{e6*#1!185RQonO@O=mIc zTdFHvZ_a}R!+M?N5>}ndba>@aI_G6fio+Fr`b~HiHUkag18E3YR^bB$(}6|jQDUy{+M(3eC&lgCi~4XJ?fisW^^W?TrfSFilm40W zvgL~~WEm$X>~g$M-f_URV*Bq~5&9)K-(Nzpzy{;7mAc(mx^-Q+ojFlTB8iCoNm8tO zJ%8q2;?Nd13FAY`J=i0rZ`4iBqbu8X!BIW9xr4Kl`^d6Qtamyzk z7s5v2H3(ZVsCw9EQfV_djeSDsj_b`wusU*b-uM(;)WBEwfkIAcPMTt@@`|TpXAOid zPV&vkBfAzfz-OU{W7)l}q8O+$-?FQXD4i_v=qHGgjDf zF((1YSaB8RH;WV}Z95g0w@%ml!tO20%gZf6%2x4xd;q_J^WM;_(x})LzF7g91x(=g z?%+8&bq|Uf5Tg3KbupU6ud~r~-{FtcPrcILBGo#&QEg%{Nu3+rmnBRm&t;okL^|el zL&TnhMT9&^^u`@|Rj)FytT}XhJ`-GE6Sy3Wr&X81)G*E#1=Z5LGc(JO;~b+`2&rMY z^4?EeZBB){I69rklgS%IhnMI7IwIfukC^u{)dzWU^iQbQWVRt?^FnKd-{pBUjla|r zXTy@&Yy5xZy=7cgTNEz}2qGm)3J6FyNXv#zhje#?bV*BtNS8=Sr*wCNba%IOcjsN4 zBgT36-uLC*5AQuc@PqAMbIm!%m~+&Bj)8K>)D5?jFP9~!Qxts~JLknY5=r|m36%uw zCfnMguO9&=G5Zp<=Dg~-I!d9iH>?6ml_NKPp)Ou##kR%%)&H;yzwIQbs~oRV>mWl{ zL+db&o@lOLdwZ#_ldrP9hhrf$GIDiw)vlo_dod+NXS3MP&&%)G;%tEwUw)2%fDu8+ z?MsWd1j}CBsc-{Cyhd1slK8vYwWA@IK&q0?2kjwtH&qJ61z5m0LCoj1%OuSPI|F$; z!GK5n+;bE4#a84HxLvcN8vBh!2~=xqtL-%ow5#~kHteHEKl`!Wn|*Ge_2xiaJsk1I zF8bwV( z0SOQNiu-4hl$qOaS-aj3HS)o{E>#DfF|*&Lw|ZdQKcgif!7n55D@lJsc zF|U8)S%#hfQ>GWvbUPkq{ZH(Pdm0^xlG?4|5&hl6Zz}0t^8Wul_0)29n?SWa7&%IL z9-i+fTjPLy=A6X~z!D^dK>ad&;xe|k+2`u4sYJcm0VYqh=j{TxS#i;b`l{LlXtB<>tE zfIE~KWz2{ov{5;u#yB`QK!x^4kG56Kk*xjcnd-QWjEsbZ;qo$Zu&^d4Cz)Mf2YwZU za3pu%N%|KP0mM3Yc6N+*K7Qo(1^A9k&E3F*3$p3x?G<=--snyKZ(pQmhI&v+T1I-P zQ;yzzXOJ;pzrKPp1vC1GGKE3hpbX|4&nQicT^nNj%-n_CZ*xn90kS*@bHY|KNT?t} zccjsvCSQ@Co9W*Mm(e1K(0}I&8gGCNFgO2%?P1gXjQ#&x{9d1u{@Gvq2m5ulN(HRY zCz#uBQ#TjyeFXRP)>!Rbm~;8^p1&$1(-wwdW6?vhe^F|76rdlEQ-^ckZu24kaSxTz zft*2|XjwQjk}x%HBc9RLCp(G1a``0G*%=b4nUwUoiC0`(UQ$O#fo7a=>O;N?9&DaT; zbv5FZlS@k+&e})Td+v0(dFaFm>GCCwEL?Kn&S?MSfzQLjYa6aSI6d{FauK#ToxW&@R0CZ0}RTT2Nc zQ>)JiY~xgu?M2xR-(duSUsQAiTOmK-1{~~dYk1qPZ?3(aCK>SYvqnF1^|pv5Fc~C1 zUfTvN%oDTo!v$1kut$UlP4`S-EI{BfVpb$uD87gt6`qK3y zNxxrtH;7?(6z0cLr4v*YN!!z7S=akOTn!eE8@#iJjB{RMxx*I4D6oLV-f57S zGGk!**UL9JdpHL_S~*6o)s+8(3c$NZ1*CRn&PAwtVKN7PWYptHNDkGvSnhF7ml=G- zFME$NkkCK;{{B(9?%e)f^vJkH&py31nQ)#Qrlb^Dw=S;RxCG~OOpM4{)NnX9DbhZz zWP#y!%#d*mJ987h#2hLOW+J6r=2w~Mf@DmUm7FKba`65j_HMZ)jxnCPb$|6?kp-{^C8gVN^yV&_ zgP9d3!D~-lJ zyJ!5qy*Bgmy_7#F_mX7&qLr0rgxHR%yh~v*xflP~pTMujQV?g*o8xJ3yX*|D>L|so zB3bO_PEOqCNAIi?K^5CCc4btw^bOQMnDVS6htwb?pcb((GaI$Om;e5JmyL!{ zp^}KLz*NhBI3Xbce;Dc0OtP%gq~4{rZk#no4Tm$8*tBQ`I{fT2iLR0WD)~MudzYAu z&`tihm5Y7UzbNsq&B9DaUvoxA+|t^*qx$?ZMsh%8sF)wRM#bt5(h0FQK(E<;japXyUP zV)qts04>hlB1Iz7a1%f#J}PJn%C2;pJ(07*Ywvi4i%Q)9EJRV^57DK*j(1tA22TTM z^ib1lQ`GIK?>OOTYs%h|e?tB1VCN2jF2t2{BlVp2cF=P=uH8|KVv2m~c}@5+{StII zO(U+}win!mgNlLvtY4k^EWzphcTt^AQPn0rkI+HLtEv{Kr=G02STx#;Z0xKhejaz2 zOx`HW+tK?-Ce^V;-96s&Q|lD9D;SWPMW8okrik(3O2OyGM@}UcI* z8eKoe$vwD0fwy)Qgzq+E3bW>|Be)LqN7|mTW{>wM@QcfVdW_ZVbHiaQ{@naPDjee( z1sZ&)uWDJ=fqX2v8oESw1_CZ7EgVIYFmBW*jyGAd+*xTt<-V=Q0w1d<&ueZg_b_u4 zl$hmNVclFE&h`nWGl0sZV!XDpuNAAl7*BSil+w&q98URj6b84H{RCWw$>xt&g9Z{f#XNA_cG| zf~ls-=#!V9oM(7zg3bT7Igv0MMYNiGrJ(*2O90S$Z(QnRJjMOnxO_G69@x4_tbA~P zi30=_jRIi12E>DYC zl9XYx`Q2?KU)@j+(#e(B!3RCaT9VMcDPhPkfUfQVlo$f~Y;L440A5aI0r$z1&;A1i zC^x*b71Rv>OdRl?1_Yu11sx0;n*4$neT;f9{PwxTW+n0RcR1)$D9VV&<-Ng|?#(qBIc;A+*AOkl3KfdxnB~&F@p(R)v=P$zo z0fCh+cs5V}vj>-eMx&-`k|V!kBmX?f zU2t!=o*XAx|8*olKx5zgk4ugzEdSY3|C<#&fx;O_E&I%(0Ecw z>NR$_>~^Ka#V7%-$VxE&4+I<7e2~-1-!Qn3fq%;>8szQ8TH?+HA7Q9FaAo}i1mrgv zhghxzhgGZ=4`c{m!hfmbp+EsFMqa|ig2onrz{$q(dLHp}&#D9gyjEb0c=6;vLURQOM{UD%tB1Y) z(+D?YzTb(xayqa6BOJSQK%J^vK{Ik6035TEl5*&deu$7&3`Hv*>O@Pk6W3=cO{y4a z5UDA4r5>Bdu`+l~-6tm5AaiZFsW0ZTGhVj!RD&ugsZ}vDsB3E=K0fUb`47Tme1qF9^KryL^(Zz>YIYgS`QC;aZ+Tb*{uG;jJ&C0Np zm~6AfQlICBi}^r{)1PZN<_F|ALF|);4Ic>?9vWKV(IU<4oSOJomV*;dG_0XfKOP=b z+hF%1B8|*_I9yy@u)!Mss4*2M%1xgTtX1g-+W{4+ z0IrLBBazG17hMBUvC=ZMn`)bWI%Cu&V>56uw5!dPo^30KZE0R4ZUP7A<>Dj6nqZL} zjZ1dBi+bzL$6se6TZM##ToW(cJ-gV>EzjfBZ3F!ns4ulNaj~+4x!3CKs*&DZW%*2= z+Bkmus-v{E`NRg86D97ssP0M=2#-tu@m|K{p zXrH#7*er2*%&g6{&~q?3+sL|d81rC4$1FUO62<)d5S-&iKy8d_ttf;uIo$=W1AOK0 zfe8p?s|<=YxtVPD3UR)Xv>!p6QWxgh|F&IlUgChQdquG4Bet2P#O$__MHsr?kr5X5 zQu9cz4Ud}T-PL^T;g)aV`uFXq&za2p$5tL6AB(0~AKD^Ug z=Ulq&i#jzCbYU9q4jvOhRrE5gxm{d*;)XM&Ov%mxrrr&5L!P~JgB7Ax9-2?sI=@`F zaH!+DezV|!{hUVe_DZYfn`mW>mnUIpOFYh9mtx%%n}nze=H44_PkgYotBMA;Kx!Fk3PK4^s@G5dty7(8Pro5 zK~}ILTg(@1)tJU&K~<+S<&!p4#c81ICP6o#ZYJE~3i>H)1YA zN=FyTcOA-S$QVf0DXbY4d(!sNqY;h{G)vtlv5Wm{^!ldL&FpVJd?do>SNET zUBnjgnTFQ9B`y?;Ae{n5S1RqW1#_3G#eF!mdz(HPjPoP@msZLeRSYD6h$jzsj6b~{`kIM52b=8}1kEk$k zjViXoqPimy<;PLVcQ=a~FNBw5xtx(96VWRE(sqrUfx}}L4d0Ern4a=SGB=Q zXkBZZ@%5X^#8Q`8D6frqXu4TR5|e9)_wo028-JcjUBHbkC0dWf6Vw53x2akOBlf7Z zfP~0Hx4p4~52?!x9l{{BWd?_8&4N?Kr!=ZDSqw#yprQFI?6NGAL|X5jra3h}q)Fj; z5H@2OrKT%i!Uy6>W5WfsyQsZYV*dUoOQ&KOYrAjz!|r%Il26Gw_w~Fte8(wVQ=Z_1^3tv~+6a5H}o9_LZ=%AKgU&Qr;BP#XH6}MGF)v&dGg~iKx>&P0Rz!g&B zHHtp`j_S6$s&Jd6w`PMYM%_BLyK}<~BGPNOk+0}3bSfRVB`VTcJ0~eb(&?x3O zVn0ky85}M@r>)SN7ic)+!(eu~>BhouO>CGQcVj@}A?{bJ`8-V!P1ju+Q%gZ@6+1IA z)0q-qrw*I_y+y;=jAvBt<>pMYEMY@e<<2&jLvhGW)dbzyYKNY&KU+R7LRMeM(~qmnO0k$JVyfNbkD`Op%^Pph(DrW5xhX-BqHp4>(d()Cc;4_6MlOGLi`Va( zmfd;!SL4C2Sr?zdb)a&>UmdQavlny@lhqo2arq$M;eA}pPDw|GM`7cr+x5wVly!(J zV4_*xb%#rKwcwWK?jZS==t^1h!og)CM)m^jExw;~$j3y90%)=5*UPKl#bZ&>1Ci)40CC|S!rR8bThVX8B6u2Z6=jG zwb!m1`R2la&4wG19y^yPo_h$lVQ65vvLJUfVD^+(8zF07pC*z5c^H+Au)Cu=An$kj3qWGX!%XKG?8(l)>j+`Ij+WcV@s3S1hfK}j8zakH(TGXU0HU9Q41nJh!rw! zT*k;9={4bJOG~gaxTSVKjzLu(pDQam-}(^RVQqz+&m8Y5NOt)3M*h8~$kFLG7RN!V zg>IOSk4=iyJMQ&tBQV9tiEHtCPgAPeSA!mlS=)n<^AB>E`A;Wx3;OT+Yo2S<&cyl? zxr}2>?Y^j|k5m1AbZW}QzTd94YrGh>g|+p@ekUE1q6LRJ*S=@Q7mTxHrRyEMW4F+K zgC*cfr&8G6d4RpT*_-EFT>GgYBITB|v{vDI+yYyF;XtLaFsikurlL89&WgNwo}H_| z(qOm7Y-3uDT?0IUW8J6MrEHO(M*tFEWTgrOTU`)}7kM z){A^@JUnP0mpJpqNQ;rl%HdUo637=io%U8!nWJlz=w(~myF8pN4L|i86XB>VcEZOp z3DSIE!uiYn98b4TzPF+lb!|aMcIJCKv%0g_dANR`gGGjWN#yQ6QDfu061gPZy+(>k zSlyhFg~MiXeAzpmsJ46PsTr|6CwC#H-)V0D#UhC?j57esRB~L%K^W7k#k}K*TGmZ% z9agrYYB7zAq6%C+?9G*DukUJZqL-%P>oT+@gOBiqyAwPe?Gq{vEwGK@ z#wA*%1(L$n&YxTjVRJ#C>%IT&l6?StrSn%zVhb>uTy$9^4Ir69iyeEnqU~4_{frvU ziNZ@f;tKVCTD{QNGRB)7HU3aks`R%!Ei@LEKG|QL%8}|Q?r>&jgle+B6rJYR&n>zL zUmPn5siGpddIZoNUP;D^Zf6`9EzG0EPZFcnF~^4tw9wXrMHNXB6k)!SB(i?cYw}&r zb1Dg#FB1b>N^TF2evCdoMK`-y3|BLw5Tz_Taus#7vF4qdnIrT+@J3FV5SuYDtmxee zF(`TNMbQw8j$H+MU;$qwFEY?zgT#V*kjt+q6?YJ z0@bm2aAE>+4S|kY2RCf5=LL=$)r_SoNs1yfPx!`uR_SrLLjh1FRSmiWmsEo<;p#y2 zkfJZbZv;$g`TUie4HlFCj&hi0TKVZQ^Bsfk9mPe!+-keMx^x4|dWT-+?NT{a{PoAG zZPLDinn-gI4R%fkvo%@`4L(@9V>=W~gLfuMQPMNPLbo3dZ}#j5I(Mj5ZguJ$*$rj$ z;vD@Z=!|VG&Fee3!|JJtKV^;D3~NdRceuw_@2}y;Fema%NyX74C|YE#=4?%+L})Pg z$eq=w3M5FVYyh-w}jV>8k9cum9gP>QoE zN+Tsc)4g(SZkgY{*f`Ejcy#Bq+%6-{MGLXYby+QL(x2l-TClP@{LM_1&vjKuDXtk@ zwjRD6Orm?%qj{A4oiOucE>$Q3Bu4GNomgdF{|$ zcpZ^7&Og8S^mqhSpPI7%1$d*`25FXYb<%AHZOt?G=|M9_k?L8?O&RMF9P@~CN)1mb zwah95_VoI3V^cbHDbt1s{oI;Q-`uJ5M+KqzRYjrE;w3ojB^Xb`(Ws{fN&D(xMoC;@ zU#^6&g*(no7?yYa4ZA{^)VWmzQMi=mcBP4U+HE%22H4hFVd2P6M|&pAG6ZJ_uj#AV zLv3?Epaf2Q!kdzjeWoNAUQnl4SWCZa01K;_6^@W^2w4%39^Da*oNLx?^m4}F z%&2hojSmcVGMp@zMe;?-SFF=IC(5PY3?pzk~S{q~5TiNiGHkdQHXpe;1{{7i&3AKuMl0{om zXPX*mIB{&fG*}1i^9N1=(db}q5 zI&@~+DP40+T$glPoVR;4Go`xiL!IhKat8V60a=Da-%Ip%3b(fAvAJB0R4%3|xq|X& zn7*;9L(MORESw42Qq+xVOjUt1@DvF?$G@-NZjdG&yZ#i8bhbC#5U!9t*pim&I~#s! zyp^h`IC#>&odyGkgVDNrjK{)hvk}G4;toajsBd>trW$zyvOqm*C-9fmnA%ubw-a3^uv zGT@FS%Ca+4{0;>?Nk(*c>H^)xF0=DU$`z7};337yeczeL3htU1lKre|ET)7CYJM7p zF0A|LT^7|xXI;_B0g8gJqw7RPTPEMCvK9&XFB|N#a?aXGTI64L!Z1fVe&uJbC`>DH zl;5a*qb;O1bU`?U0(6GV4sLBB(;LRQoxs5==K@nHo=#_f9xZ*r?D%Zf%1&?ee7qgn zf=<8nK(#;msY`qfThOg(KL_{x$9?Y%+`C|)B2&7!Uuop%_YzhwGnuow5vUy)mt<${ zj*SSOaNe`oy0-`*j6O6YsnuIPr|@yDMYcmW5lZI0CGzyo#mL}1!QMcZGUU&>>yM-2 zb>d8%n#Nlad+Y2D7P<_pvvS)rJ*HaA(pugr=Toz-hV2t!d*Woc)}+^Dwz0O-RLo9P zt!Q}%;&8- zBigzA6rAI@SP7!XmZ{Wz6LIDX?0udV-Wqbz#mC=DQYGKXgfN7CsVXoV@m1GwYi(S= zZWEx-urBBf&PB-Ry9(U=zSEWWf zK31~0{@&gRY=*>|-YKGweA(ghB z7TKQ`KaOK3R%dEVOwq|G$=|P>aO^ay`9${$GL@Q%EG5HK0^~-+O2k5WuH|@WMoI~C zy4^1xun2p?V+SJe!cIZfn1xa^pmc%ga`gFqV?L=GqTEw~)u@{S_u6h-r+bZB69;6M zH}-uWKtYx`n_jSvo;iy=TxjMrF*c&m@d{{Og>(Ma10L&c&bG9`Oq)LE55&l|LB1WN zCDlNEd|SG?R-m9aeKxbqVEASB`>4jcm+Z9|+1ix#d$o6UPY&M9Zz`t7Lfhzk~%Ly`9DJ7%>fDM4fna06|V zvOTWlhu^N?s#0rlrs9sLl0~D!GzD*b-1Zn4w&yj*bWT;Y`qOBH#(KGUaU(Ag9XW41 z@Vo79S*M!h>_y)>ky%(=r5?amT<6=({BVoX`>u z!Hu2LYI?K7hVre+H_!Qy<(4^B^!G#{{r;gzr^*rYTkSBl=>V&|Dprt>_xzr4o{%{0 z)2qXbj!CXTfo9rfh5eA`=>18uR&502ypT8i9^V|sU7upQQ7ppauwOl{!~+6l=BGR& zdy@^_RjI8rq>AQbYr1OQw5S-8Rp|8_3nE?I?bdvr8`9jQ2?&plQY*HV*%J4@C`V}r zT&{V)%>8OkOXc>qCS2j>)BXk+*0Ch5`KJ9q)$Ic9$NZ}<3F9lV7@MHm<@fjn)XMOB$ocx`j zNf&59Hq#9&S`~~Df9HMO6}Z!+$oUD)^^$&}yYllSI$qU|f}e|QkS?kr!-R`mstq80 zL}8>VX+v7vpgWQ z7Z%Q5B-{;6En=BTtDAj{T-mEMZ%n;fy<~GM=u0PdF;>)w(#9k#Tw% z7$kmf6_Ku5L8anH8PtXBe15C2LN-rJF+HQ2#a%atW{pgfec-7mUAuZPBZqX1H>JT&o5EKObywGQcYV! zx|Kt^jCr!Eh`kJL1&kut6-Bq0$JOl5Gx91|zf@;Mq}Rw;*jNvGr3B{DbG4FbpdtA? zFFg62orNN=U|e)99ue97#i%~Vs|G2Frr_lt3Jo1_wB)(>%gf+i#7=OHuAGqN6x@}S zdyIkbsQLv&CqrWG@s!G_6R=_%Kx{fG_LFntD%}fEv)YQ`xQXXAdLhyX8SV)9PaXnh zDiOeWRi3?JD(-2NyOWgH39akV=n1FAzV2C-jP@^$lFHy0Hj?se_33FJ9{Xv0F$1MR zav@=a|C78>$pO^v7^sBCRSkd{);OJ+2jD+`3;_v#mZV8?={4jToP_Z3$hy~k-tX&U zo0Mwq_F&uq|8oo999JX?Aa%qW}S%0Q_jDpuCB zzIb*T$5-nd&@s~Pt}g3QzOE7LnAuo09_bH{0re3$aODcpAH`=8bI%8;KcqbKmOrvS z%dGe}<>?P`0ONVW!YBCeBDuHjbMTjIFNprGXz=RQ6D{^kZjZmAAP`V_nn2!hD^WM_ zZ!DatKG|2LC)^#qOl zp^DVQAW0|pP~#ixz~{f+rGHlS49H}_qrLfA!R{d$HE;>!waRbV+MYZR?B_sF0BXa) z$31-SA!&7U&xE^|x}W}Mz62C0-pZH%_;Nv{EV0zyFNY6)r^Bz#YF8Td@ zi^_eEsWGnh7X%MG^ygc6fOOOUL9)L_=>y2|MtT(qA((Jb@zg;w3=wGmQIP7l23Pe+`x$qJ|RrcF5w!an!@;`zTfqet`VOCf-qM{-r!@E@kG$69GvqPc@zW##&|5vo^i64NLWlDv(uwNe_ zU}eSR(PHd_ih01tLqG+QyTe2Zw(!dbQE)$?WyOYJvjfuIPnQ?VdtjUR2!62)fDHeE zmK_a~geqU!?Bq|v`89HESL@I;jVl`aP0^YTCkUb_EC7n45(9^x>0AWbET*EO$- zN_wso0ZWOkowaq8$|(57MJv-cJw+iZX9K=jiORpKD1m_#d}apfFw-mumEC32Uv?z& z+c!OJZG!l(7qoLY^c}fls}X({umbfpC%j1}dCD=TO*=Dz4HLuaJJYfyz-5E#pkZr0 zn|TGW;!S*l^QpyYOMnKLI$HyEE+>Db%OWReT2*!W>%#O9491`0U#bPLh~~o~Uh$TL zCB6*w#IQxH0iy=X62_@{!eoW1@$$zD^S(r6`^-Em;WZhuB0MiXHdwBwTp-iwGmF^F zJ}>cWrTpPNm{|McY-U92xufraU)7%LuAbJhDvx~4dqZS3BorM}jGg!btyo{gB7W2I z&xLzn+-JuHBvf^6K=w;MKD(7d`LS147kzzC=@1h!9f|cs6@tI8y`AU{p9tzMH}9uF zv$ezFwC$VuPMa=2)hj$#=6un%9OouNGi%Tj&Dhx<%@C(dzhp3OR8Y((+gy(vEc`+< zPcA|P?=a6#`0CDLZ*D0zcL+K-5$y{vpGBg^%jxG$eM8xZUC5rU)48Fun#>?NuN z{w~^`+vlpVgmB00Unj6B_jBih^SwwL6 zwdZ(ukA2m$B+)SYxGR%OBg?UpZ!5DS$HgWtzFV`*c_rVi7OErGf?)N+`Cwmo_Rzj1Os=gOF2Y)NH`;C{RS>;(KOrF)wcj3*9L; zSWnxv;M;86$q7}4S@AllbNvciRaj5br(H9RZBD1Q>?jm{&`^Ce&S64!6dU(ee$RnP z$ocHJ%Ln|~hVlZ{G7-BD&S?8n{-VU4_GJURX{XHF-pVRr@N$ZR$?Xh%H}WO(9%rFj zPFF+j-05nmpE!e%cd1!E=W#>%=SccN0_>&nEXLb+i00sHFCqC1c$V!hm!-OV6G8Cj z(^Kr6L%HOOz}w~W6&$ma69P{g*RoyszBuRJl0WvHLrwHMXf$!^vGnV~)kb7DV3LGs5>{Bm*~jDWFn z)?Iy!Gad{os4cNriUMe~9b5H&gI( z7+rSsxrvaFGXW#FvYSVp>)EMvKXHR?u5`QK#$Z-|?MqhEsS^6l;-$S80ya}$5U(D6 zQV+W5U+eTWWpm|4WeJ5yWfoOe_0UU!UX0UEasWv=fE zdSjg^##QLLdWve*Skj;RI-J%q!@-`JX}Z4O``)Cx=9O8WbnKyRLAPbXaXK#0ZJ+0M z;RzdwWcp35&*LAa{L7hf`2FG!1xT~Fb~6on4V6^sLCQ5qqu2~+*9U2u6MIuksMrzY zvuYovE@EA~Ylm6XPspyXSEwhOf}G;eTUb>~%m`=bb6&`~P5VrpxxrrV!x?6rvLm_EiZ0d*1j*z$vpvnRdUIFk7KPjIuzImvMKu=xyusOV=51BE zT(mM1hS{Cgm3C?z`6!?+?eUMM!U$OS=I9gPYukdkex45ZM3(}Hj^MePKzr5Rz@SLt zPxkahErCVDcda*Sm3jm2MkIu$-#eaStM`{iMkIbaOKdpewmeYWl1b>vM z%`@o9T%}hHYbt$Jl~W6^u~QQXrZ+Skx=}Q#%!nE;%+K8KFM_ zJK799i4|iQUESWcRYk5g)?kXtT4qU8Ea}`7e;@n@FV3D6z8rDVS=mi6wvk*mGx`$A zq<0XW)_U4TrE;uUZ{tX|!q$+~a%YXQU3C z4NRV>Qwv-dksDKYKvZktDXJ|2m^#vvqn-OLv@*HZR5CVIDH>&$kopg zoO~wtwO3ye;q-K*qITC9q25stWj!ZUPwnT~Iq(|B{HwmvSH!@nY3OC|*UXY#v&*nS zGdZgnto0a2;n5zj~2+NhC^wcE8S7xTv?=2c7|sR zFOh8a5pf=d-DiXR!kvhaRe(s9{ablGKC>-6&eYjfbojv>Eh1sV#Ca(MUBKDKzT?HhGR~Z+hzQ_D zwpS0-pbJ;Q%k@EaAxb$668^yu$tRzoFZo|!LI2{>{YX;mkddBaeSRtr8tR|n-T#+g z{?a(bCXMj0xPR!h4|l)9Cq$lqQVkN?n2Z}miJi=t;9t%6bK0B)+$ig)+V7tI^*-($ zK>3@j@zeali)Y-8WWc8`gn@`qf4wg=9^l;{(4`M9l-uF>lBQ?D71hIe9HM;@bMqY0vLQm!kxI# zPGW@jF9CAq1x{nKrjA#Cz0YF`?lbiNAtDb{+Kpyr$P;$ZW8~jUoqzVvkt0F^E4%dTz`^v{B2)C+TE^h2+I;`fosV1Ject6v z-Th|&?968+|A`WHB*WD~j^>R&$A11N_gKOQwwhxCg3C^UR4vq~^*TH%N=Q(U#dxHn zKg70sS31vx3b>((j*f1{S#G)1CM_*(TNiivoA-F+jaE{~i16w%(94tq>+6PWSHxl5 z{JSac$H?&TLt7`r9`^L`GuRIT@IDm+mD;=|jlv$jV-2EAg$65$UECsv1`Dc+G^(A! z0wDybVf~XMlE98SZpj=V^MODPb?j(>j$Cql`)d9119ulN0J*JrJp=>^{*ajkT!7tk z&&eG9{t~ZB0rw!F2$K?ikQ({r>L+=%J1dqPc~n$Pob`H~7{vMAdABqGNeNfWN=lm_ zMtePGhU0&#+T=RR5NFRaGv%lG$KkOr1-uv;DX=guZr@pE1F5dWuaFsreR_-lresBSY1s6JU~Wiq|xE2o(W0Vh2NB_$=JEUSt}*8+>!(W_PAbdtNOw4SIj7xwIvpuC$v zl2yi5gYHj;*vU0QsypTSskgaBYS8@agatI5)?-SfBaqeW9mZu|2Z3`+3V6?+J$EoW z0WoXT@$~&UEoWd_l0l(vHD)j{#n!irO>KS$7HC`*O9f#~UIG+Ze2+5&`y9{ZT&W_g z>~<_2*TkYB%kirXEv+iJzx5)(T44nC#&Ocnt~Okaf2IfJpIT^4idf%VFP9;WA88uY zi-~I(zMotEVJS*_CN-yNZ?}ivPIo?{{PKEe5gnX5df4xhL)tTc;+a~@P}%-vWyv+m z=B|A-tFy|RGE!gt%e=@=I@)-VrBI3UFX?;oYC!;s19iRX`(Xus6W80mZgr#dFof4R zBJZMT$SU+n?Kej#@@1Q-Ope66UeTJ0-|aMp+vgOgekmA&ZEv{L{*jWFEGl^!JuZH^ zlhhL?0>1$|rZRA~$&y_?>*rO~dv|kRU-+p z+L3-PJL#U2P4mlW$Xk7#u^7PpIj!5%`BBU))Yq-BIdX1xlK5Nrp`TTD1A=VN22o+_ zbd%Da*w@8I|IV>3Jh_)knWgHksXz~YoakV1?~M9w7bgK~lWjlg&KujieRGhySgbzp zga}dfsoMzW>{@Mdr<4)}ijPgLoeDkqL9hBWsePE&MYJD9z+4>)D*=_R%(6!uRKBT!M)m5(*NZN1Gxf07*rwTd!$z zUQ}s}>d%ZMRBPpxuXHF6k1k&C5*c*+pLK29t4$#k5lk(t`)GL?wH>fa)I` z{8|l)8uq3tZPq>!|8TA=AI-Xa$C+0d2Iyhc(+ylXoF}!Y;xeBq*2X8J!v<+f9yOI@ zmm(qPcrq1*F*0i|*D@2EbtSEi)@U)KbqYaDZ#HFPYJgdtS=icNMARO7O5^Hj|Lv&S z9{=Aus{Roh8L=S@H{(`K`KsYZeq3cBUf)MTqL-Ns<$miOpR=bYp?JN>xl-titUBZz z3i^~)p+E7TPd<$UpPg%@QdZa0j#wHJ5}LXS1xK#S+Zxqw|M(1HfZ$B@a7qLFgc+&_ z+EF}H4VO8BQj`^Yl5+k<$KE^^hB?*DQA2w2Rzk3Cnl1*L zTSl>335uLim*(VkYs&S9UTyk_@UPSgVLi_TjJZf2$ptr-Q!K@1NrY?UnbF6W`+0QM z#XI>uZVizyQ$xX9;^!Kf)ZnAR#|T&LkQ>FA8jFwd6Ws){?AFFu{MKX8wIc4(+y(Ga zbtP7L>Ei3vE$iV-621zSAx}}pUbHuf24t1WO>Xn6tC^zY;i7Ms<=+j=;7kjXD7byl z;Wza$Zcr`{3GROr5z|nWHRH{cIVCgL*ocj7f~CNhTqcJ;MwdSIZ8XNdIqS=$aX6CZ zw$I5G>YBRK9CVHTbr({rm4xJ~_ljTy&D*VP4J%%W7c8jgD-1M^C10*te)^=#x}W}MKIsjH`OH%8tNO_pGt?g<7$o?T zxfMHnqXbzLqC79xdIuYnZ=llM)jxFAKktxKd7fiSA=#DjOelE6)z-DYL9Z+ARNOkFq40G@ zW+l1(PG$H@-GPC$tAerjvmNndo4%2UE9h=ixm_0B0U;eP0k{*!bNYtJZXSC~#XMB7 zi`;HF>I@I&%jtZF)T2aP#j(#_&5p+d$PwS;ZF_lDg(hjywyiPT8dMA5jpqRnde9Mf z5?{n0VGcULqC5_EpKQtz&%dZp-Jjd`xhu0?-2Z;#BYE98X3(nHE~NZaukUEFE3IEKYEP#g84_#o(jauI-(qpvc)I?pmoJv>kyL9uxtTp3&nctYYDomzr{B%xBMsx`$S3XzKS^UQ2ykhCw zz(N02^+m5YTn1y+M2>%I7cd3JHPv&=8QMpg2be(;YsMr^L|%E}fwcN9-iZ|yMcRtNMa0REM! zA=ZnZ<|NZw51e#m>@+CPQxK%nqMdqr1|n}x9VbmGvUrvT-ww_Ymk%Ed#^mokhG z*ndse-5&5M9fjhswdk6go9Q%aGsm~+)T>7zeD(>q0Xl{@zhFxmh2efgRzpIAf8oLnaa0{AB^AiKQ$ce*2V?zT00l`U1h$sO8eM12P0yc#N`LYnK5#M~h06Qy* z3jtM3;2wXyfpU=0bOr)~`SOB60S3y*!UO^m0Fo3DRPg{lYlqW8U2J~xSKF<4B>2fj zKMZG$^K%vYK}=@HF2(?78XTR(!j!4SU{^XH5zGh(1sF{s5EBe#N+d~)6^RkL5D7)o z229D*(o_=7i{{B%v(0dEKzDXDaX}O1;d5;4;tVD_D2*fW(C6tai_>|+Ip@~bY=Xym zB3*E5b(O{dgb1|ZoBy&1eRedgOt`Sk7W^^_?kWzhlSvOIvH*w#5ELOWX#l8)qya2L zy--0s&_Bj5agZa<>uKsgDE~Fd|7Dt`|AY2l)Bp4OPY}Q2^$06X6_roeDL`o8FG`$n zxMRaNSS`rHRTJ})hLSWL7;HUtWHIrFAGkX3-+_0~hJ@{Pe%VA&XISyuXkIABq4q<0 zk9UUdqicx*@ZV-Q6O&2XabV=!D42ik=D&8amyEG&nd=d$u(q?99pTRv!~JDzfhHMop7zY6%_GBid(OtE z+uju2iC1^iwRe*y8k|5WlE2Qv*QYVb0}VapE^0&vcEH>FIaLL`PBxf1il!Wsyn7yP zI!kThHkyZx%jfG?_zsg>8RUE?j%^${!J15B{&kxExMxQe~%&})PQD9z??=ByIuMuv-j-$$1P8Kcr< z@jg2MQ#Fv!jb~jp<>4r{!K_`*oH0E{%o!khM27nMB;otbM5(AiAz9O&xfd58O8N68 z0?M^Owsan=qXsfm5BWHm@L8m&ts#T5R<4L8P$g+uC`71wNt_rCGCq>Gi6Xhu}IMV#nnBA~5B>d^4#Rg3-_1cYA37zYXl&F)<29c*gK5VO-^dv^2S9`#*% zeo3mZ&$*?FwduvloBUZT{c3-+>1hh^4^m_4gBg$5Y0=@WD=gXX<2E_ge3r8F5BFyW z6~XDH(KwwhsOCm-CAV$`Vct&OYs|<-e4X;U7i@y$z|(lPXKIx1YtVJ-b{aXK+=qRB zl0%b{!oP+KuQC!_QUn{Aa`@JVV?;BtAz&@&Cdzf}Q*Dkpu#q0QXdEQf7E-mH*1)@d zpR9{3n{zzV1oya*dlrwF5ytcAq~t~jYFG1osIq4YaiwvWnryxiLX|Rp5dY^WZ{YwV z;E&0w)~zp)HgLO%`ci0%{J9`eq{8oN=ITi{I9gRg>e=z?1F;+?IHP9i>x4hrc@u4&iWB28VZ)~-< zM!tkr!$(bvKYM`?d%eXbn1jHqTB)*J>iXi;x1EJM4(iS?t)KG*J{Yd>o%0qv7>X1? zV{LwK4%asjUaF)&D6W{ZMjj7-uu&uAsT59Aq*3=2{qGFWM&dw|gVIE#78$Z6E?8Ij z`2!!1_;+jb$O2zdmppxAe>PjTs(s^<{TgF(jiT=+TMw3^N9*&R@rF((UGciQZd`4 zyoanBDQRnPyIQfEelwB7BR8esBjq7Bro`Wgtm7eCN>U$ZXAc5EqjRB2n~YT>1z!Hn zL$n96E%_=%LoKx-0qsZ$aLP@Y1t$5Y4vKE6@laTFp>+C5(tU>64s%#*!thE=X+LK2 zS5s|53aRnF&IPzB;dQ#MAuV34aq8ofCV_<&T}&t}i3lRS#z+0STTFa@wbs5-QjVrR zy-DWZgV&I`8w%;4vLw(YnoHa3nUg@oCXA!xdVx;81=cPr?K#G4)IU)3)5yyIA-n4R z@Jl1Tm%{k=!IB30OgSoh@@EG3Xf$PQlnlY9m}#u2)5;dvb)`u{`X!VUpT8wbV%YA)70n zIeYZh?Acr=E4ocd>CsS6O6|IOWUW~zzpJa`$lX-`078d2;@#L(t;|X^p^$A=^6-~z zY7@^y0#T`mt53;3G&M=@eju~v)R?KLXco*XVKv9|q>kP{6`<)B)Xp(mxsyYo-a)K+ zflcftv+x2e(LZ?^13|Ng7)>eM-@v|r^5(r|iw~IFmlPew(6M^isBKB3w$ikWH!j@P zVW+0ph;5zQWY{Ucx_sq16Id*q9Ln_8y41W^TF(WZsGSY_x88S`In<7GdTIYa?H%WJ ziXYlgB13(BWyv*YY}Gc!r7hqUPcHYU)rynw2%fJmy}3xI^^maz=J%5m2~Jq+BLZZuJ@PDrSrL2Iw}zgFfLW^-c6i_A#)3A!eCC%nv*q0~I9C zxUUQ%bwB!&Bxt|w;pHS&=J6p(_n9RbY$QX)z}xZnDoF0o5cRRuxRP?7ROw47owXG! zgEVH_T{-HmU8q4^{GHO8c0ui?o%3lyn(mQ}ZnHibZ+5Y-RacWSi6+G$UgI~tEixs} zNTwPWzAt{CXJh^Dx_UW_@5Dtm4t2BtfVnu-U~V&$J`BqQoJZ^%-q2j!&`?}0dFm+w zI-)UlHUzEvb}FfCGl5AWgP9uuj9_O6|CR=GuO(#TFtJ~mlRdfT{2quU%uDB7<$lvj zJ<9J+pSO6rCHs996V-VO|MXhRHmWo0=af0fW&Z&z7+0s6L>n5Tw8f_ZyY7z}>w0+o z+j}%cdN~3TEWZIQ?if_Zhpe1P|yim6?7eGy=Y#6W9AK)#?EOaq(8`ZN*TnNHt+3K1I6>f>ly@@D4#=?Ye&p?FwsloMuiw(JEGLqq8XmOL zmdQFRBxLK#MuOtjHVjC^FFT*|#O^i0aMr~oMwJ_AEv@=VZhn$M&wXy1bLnz3nxT0Z6@zs1Ta5+kRg}VQEv+NzT zh3m*kynuc>;AyT>b6S1~Jd z;P??Cy4VBPSe4$MWtRMBD8_di#YPU9RmR3Yeat9*>vTK%TMTH)wgDEqm8p7H@6Xq& zq|~VnkDPe=_VghGsc5)%xc#es&>}QT;%bH`*M~Ftg2Rc_2o3X5Rqlk_rUc!U_=X_4 z!6#hZfRpJ4eKYAFNuY9gPsgK%C3`dg{om=6e$6Gi+Ujb4Bg+_X&V~=3s$f~7n1A;i zSFv4mUUD`pZ)SZ`Lz;GpKV*H_R<0|uq^-xrE-oNxa`|~`mphV+7Rgo_-D9}Ese_>V z+N-Z@=+-JI(Pzg(`WE%TxSzGU?#2|@TjV#cFh8D6(7HIvMp)dS@*DY&o-J%WBn7AQ;K2?m&V>XJO1R;4-29=IT3Mof#B!x~nyQgAds z=cRmbsQcaeYVe}z8>B|l;i-CxcoR#=0bO{)12$r^H{e=^%+!e5B=5cE z*#*Tnch1MYFPXs`JEIS3-^+GIa=l&Bq10R&pv`s%#;r$s69?6~VF6g=PA`6u_T7_- zyx-Z5(=L-E;fgte*hdP(!1>@surX6_D!+G)tWUZfFU+)NhQX8uN4Sd0GX6*VyHn+ZSTks7OKMv#RK{X~Mte(H%z=$Y30YAcTHkMDE36kOw@1n4L? zdn>vkx6Bl0O5;#*r^DTzD5D35p?hYGyJA~nHZf4+$xp)(6P~Kxb3atS5T;Ot${BFu zK!eiBptb5p7QmuZ8x9h&G4nIx&K1g?dLz zgswQ4KB6vHtIE!ycuOm%JKPNhDg2;qKFyWdxePJi(c`jYg4}!$pS;}rz|Y^-`R(Ubc=7n z=^GjqLUd{bE5`{@5p(hMtc`aCOm-JWb<`V1nEv6-kMjl8gG26C*|j`FQGD1RjuZYR zZG`;(lU)Ua4LmcPt_7L6DE1GDe%(&q$r|6<(u#={pMD_x@;Qr+>_T7;G~Ur*^OMba zcKXAhKEi1<{oRScBH-@(c2ZVcjbkNMt>H;L%vgA~NNvrJebM)LX%mtwBFfO&MoL?8 z(GN}WMlSY{g^A)l5-NxT_?-pLeWy5R)99?uThQ?Ab@DVUpZj0+Zp9VgVP(Q| z3OBHQ-C1kQe4q;vq>byIS{N$mRcH0T;87gJLwqiszw=Ks?A^?4!2)aVt@T@UXv?Q$ zk5;7j9qgES`Pq(D3aBy1)tq)fsIj<<;h47L0S?!>XyDXH1@HC#Fc0hbk zwkxMuFHCOsuRE?Diiy%1*YVaK@Z|Ktxpq)RmZj&qRcx4T+&ynedfijBSDB-$_jies z9)$dx=gC1tynA?nP6LAOcH3ge94c^52t0O(fLkN-4ljC9~Q{Gb+|}T4ep=SD)S3RSuODN)OurGwQmj&bt%#tb$f1O`fQKcSY`L zU66~M>xmD<)ydB@BpmXMDjUv3)d;W8LpYEHF#s!>bz?!jVvwZruweTe5MhDLSH zPlTp)If9M4MU%y}HM!999$Rf`efd~;)YA@7{*`@hQu|6s&!x;G`Mt^=wJB|ryax>A zY$@)#*6fqWGx#I804}O+Y`hYwD>UU*aen)vlZuut{QpEZa8+VUE{1bm>^_{Tr1D(h z&#AwrBMMMysvRTT;m>Ec%Ljbvv=sMVf05b>Q1co)cGu+af3HQtfCDtFdcu;!$TK7L z+3UWgJNXuVvKYtbe#W4{PQS(d4u?WX_~MolalyO2Mm`uOfTyQheFelQu&Rh;hD=N|azzMxb3sDJe9gv^$nBH+R&SZ#G|8cs<^SaxFHnK+vMx|P%P{^^ zuM=^>-utRRg!sfV0YXQ#ci{ z{<%cJBIuO!PQ9lB=YLJ=f0_PI@d|q(@V8%qOsWuF^_n&yH;TMueU|Yrj;ESg&1<(n zs&V8BeD8EcCx(YiOy^#KMc?5Ni|7}^hlR|bBoAS3tZzJWspBcGw29&w65p!`()7=p zy-JxHWv5ga>8s>EL5lJ%=-}G{HeEB_`k+J1wOtYKQgT{Rl9>vodX2Cb2tZBW1W}|7 z0=@78k!d7M78taTZyAxKpF?wooIYials zj>KJp0FZA~Z1C{t%IZ}i!_S8|F@J*07KNJFoj~#PfN)q+&OMV7`QUU44|FnA^peA;vf4El%LnzY^qUZkhTcxN6q5J@sds+X&X(_b=4B8qv zJVlDM7ku69grfXPV(;7^OiY(oXw>`0At4j+UJ7`hnR@xBc|&`FxAt2(%e~)4ZzkG2 zWqxjCWF39+O%Ev)IV$WE^|E*?x7!bFNKYJe=8ESV#YRSs=oS~${;j$B)wPw{2KToB zqyoK8pPy+8_o2%Ly1OX}EG=>8H1mG<@jA^+yelfrwYdkx*Ee2Po)a&BsOm6F4*M?F z$-b8}5Ksg*lHk#3$IzH;AXfjt4 z!KF;93V$6@mn~K7D>|b%<%&g)1VYh%i7qsu7xRC=uWZ7uarr}=0)qT z(o?6$OMdhI8C<2>+5-)2(-g3< zTJMz&w0wnQYNf+>f)h6ZxdUJ|G@+du3IjRt2CW%8rbTu8=21KzV~zO?KLx+mDu;}? zWDnZ6RxtkqOtqsa>BL}NVhbHA#-m|EXmU;CE%_s+*T{l4G7TRI1*OqQbS#Jtu(DQw zbF!eEgJcZj$TayjAtSP#xd~->5Im5k1%Ejq7m-PjuYhmGx~33wp1X@qpMyCBi6uof z#-anV2}!&`zYJcR|EVu4B^oYCS?CM+s{$GFwFU66TIx27;}&vKrQ zE~VLd8C#!fx{eh$)<~|`>U@7RgV-Un;V#-fUyUePI}o zk6@yx0~fk#51xKbiDM#@OEZG3oR7cWS6UYMFDAU&4@9De*S+8GPbAWOZsAoBoo;Xh zB@_ZeBHH$5JBouGy`z|w?mXUkea#z4KY@w0@XnRq>(>R6*CNPC4ZiBS0V`q^a`mpJ zJ1Z;X>Xk3imkJ??3@HzLIG{N?ak?O3+9N3q|LzxgbyIxSMAu0`+*5o!7?r)isp&$I zbi;p~I_CM^K99?ykn8(kE-xzDCzr%*W;dGg<_e|=TTI}Ru)a4PZD|l;PcavF(rRm{ z<74>Z1vHiZoW+S7EOh#0iCHI5>z&p6kcO#q`oPf+&$D;6E}2Xoa$w2_9wum^ouL5Z zSX-F592)ZI_ZgVrRN?drJW6QguNwJe2j$QaUtK%z%Xg8G{OxjJW)$m{i%+TF_PeIE zbp2!puF+-F`Rb*bVHq40Y-X2)`6(%aI2eojz*xVw_8sFqIeOa4hWD+zuzDZU?RYYh zS7b(=tbf_Cu6u4u_F0mE0sM4ynjPiui5sypvG7$@nYjhrqFGczlRuwLJFXWn-AbQ(-?_bis45-$#%$Vw zB*urpigLD*?9x8r8@oC#%M&nJ+?0F_7dV^kD1nRNXQ0sxe;2=c+wcI^?b(3O1A+Gvjc+)X{KGiiP%ILI@U^KWv;c6d+ikyk{2 z!n1!Eqe5MUc1a9o<>GbZSrW9@OY#M#;~1~p-$`fAJH2=s8DMgF5V`=4(M8d-N0cW6 zYO2~IzsedWuJ_d*n;TL~rc7z2?aLr1USU*W=-@^9A8qWt-XY)SBJL#R~^qVDxOO~DxmmNQ_MJorCp$ejA8H4@hJTrNiU1>eQWEvpUx z!J1vR6ahK2w&GDB|AqdF(m=dLiq={-{~a@MScUpR`Kt-}0{@^-gE?e@Nz1tmbeypN zbTnVZ-tBA3VBPIECE`Cff?59sQnBj``@@L-BkKu#5##?qZ_Qy6k<882)$!BmM|73x zx*L(B0krxk9K53^<6r0P?-th&x$E<3RK7J=?Voi45kPI(;1QGuasBse-$(;;Q25V- zwEk=I`OEZwiWlSD=M%TnIn^(@((|gd&)Q|D&P-{R$GT%M!N8f!!#-U1hycmOnf!BB z1!DckO8u?5VP*y`Bu1S>RbrRfVWE%?K_zSLLsMcGE;AxMVBilUB%d znkNEaDCchj>2&CF9SW4_j(9=Ke^~CJzNGtNgw%n36B4ub4U=j{O}pRqnw7sunK7uo zwEp~PDHEj%Qc=!Rp^zOxZig})Uj6S!RR zR@o&^DcdK2hSsQqGVZ`pW=mV79EHPL-9R=s{ND-)O#3mEUOd$ zC2>nmUX%xp=-||L9KWB|?&`U7o2U_-N%-dS5Vhr+($d8uq9hqBi>`w#pw(hjx!^)$ zDfl>E1e)xl@`#_sf2kQ4u)q&DI_g@Dtnr>fJ9W7&&=|kpZS0?Qu-=E}%9j(??v4`9 zstomN)uD?fZ8ue#`J+5f*Z_)SdX2^T*G%Uy)6a)ZC213ThJ`<6OU9CHy!aJSaTzk` zT)hl_A>850M9`YO;4T@y(oa&SPg0w8Udc$Vj|w)pxh|e76!>;QHzG^giJF40D=QA7 zgB`kZ9ynx0SEZkKx@bSph55y)p#_PmXSP}JuHh~-vNtBSTe_*WBWK=vvt8o|4slaN zqw+QIJdCFp4_AA}>esX`2CY)o2mord0VzuomZjSTTh8)jnYP~ z?c}^~uKPB1I(*jVr{A@sQck!)JU48aR%)xT%3s3H>*}=dRzXV+ZNh{;s%qL6>m}{_ zy}esX+~@;>payNhbZdA2B5yYFzV?V`MilPP&E*tAo4x#HMTC!rr%ls47i9QqH>Y=8 z7i8eab_V%z!skTEaq~=XNJWmGn8PH+6y4ZnaiFg8;xTEcPt;9r`ybiXiKrA8{khy$ zw{msu7Z5ytd$-v&k8K&v;R6Q_@E83mg7$|+k5C`Cm+H<(Jr@0E>%bExZ~1%oqk1+q z_om|=;@c7ZxYVBlj*v9c+~?sHsslU^e~52wQlD4qC%}x%z@ zPesN{y5(QlEdlky-B~x8CzoYs%HdC|*2+^DLK{(C-q%eo?~#*@l%fj1(>G0CbU!NV zyD(7J9dtroe#3#E%RD|~%&qrwR#o<0#^%y3rY=4`E2B}YW@Z`jwqf?p9C52*{%SGTeJaHJH;q+ zDJOJX;>E>$OE5gM7flK+auppy9%XqF217SguVKfin3nlI_$&>o1#?+x|_=k|E6Kh{@3RE~Y9NV`X zW2%-T1QcN)5#pap+Q~?S;8RMOl-b-y#M|Yuv?n{E4S7|5fNx2&Q*Vh+@KBR_xfDln zZPycu%P1JwvBPn9yMe4=?1q}?Wn|WTJm3^KV{`f8@@lWRp*Sih@jR@EeGEBidrV=~{9J1t!6W<3up>og@1ygl(-W!okYlQB~vB!`-aL_^2}9AjE>*4&6!=& zN3cHEp@+W<-%8mWT>4|;rj~j=G3?_gu^3*6bsw!NKShfcyd%4MEr_gN2dx*67rLJ) zeYQ?IJS1f;P)9mR+o|1Fobg&#dqZj_rnKhQQn$7d3es09fz2I?6sf)6if<1$cR%_x znJx}AQCo|Wa9f-Of|A3<3IGHlunxnkVBnjWH%_9|zBii3`3O#hI)n$b4G==CyDZg zcIv1s$oC-6nnO>TVxX7G>+-mnWp@6mb*aGH{X#^rQn}4-Pf)IIdUq+l>E1g@MQmui zgiw(2M;WiaX5z~f)NY<|90|6X8f<@v95R#c+0Q~m zwZ$;&#=#}#pYkF;--;q_0)|v$ZGY(FuztAs!M7&}u#JU7rCkjwki)1~U8XYzNTh>+ z(7n{Ewp@6_`JQ4etEpp{>ohJ*y|ToWx0YbTY%CzB_Z6ae$b;O3|0tCfsb|a^rnAGQ z2sD`m^9A(SF3cBDH3^HIaAIXr%iSfZZ&XI)35G*NEDp4LEl}UZ%8es^T=#YKA6u4$ z136EBINpGT=S)t7)ymGx`{n*nr2?QL6|A`r;(${wDc2l7E}B>ppwCL@Cg*i0rcJTC z)Ope`o`<%sH0)+H-+AJrAzw+k$X$f?DK&ZekwkE~Wp(sYnSK^UdcUXpx>`CRqFH_D zN?>KBzRYg1Nuq3ioZna~C}CkIGn$)f3BG6TY|B;8S{ZCXVy<9sOTpaLH#3~4WJX(e znEdqB?no&9n*3XBp{)q8-U~KKv5f^H`f78{Cpt*sb+j~D`S>Y59sCXq$#3I&lGw;g z&@QA=bikOr69qy8+8AmcaCO}GHn*SYJPqS<(eM+WZ$&E?bjp5n^WBWDji?{@yBYqB zv#uFC#eU?4Ib5YWx>7VF8LS z&#?LnI-pH?7;s=$_FXDU>E?HK5&AnbuQgKp#Ia=hQ)ST?h%;vh(c3{LVk}cq(Pf&2 z;Ic5ywTb28Kds}lsklpsTCo!9D?0>MKQa|uvoT9YZBmTAM17amW!4m-#k(_r;(=^$ z_EOVdZN+Mh&fn>iMT6;Q?w7$TrJwiODu5kt!qO~#)4jt8q;};(A-ZdaTB|KK8u z7ubQ^D+?7f=iE|a{q&`Z8a>K?GZR5_`dOU9#}C?24JO27FEHi3OEE}OX`Wm(MoYoc zV@#qtxkvdfG6xo%GNz3-rbq3dH?D{FAa?K>h+8X((Anyg$VYTV9Xz!(2O5k?*HY;R z`KZg^oZK!QZE&Q_OaZh;&K1#i#IkNwIN9i$P`4@qaXt6DUe6r9H*%NtZUnz)a~lyc za&VeAhpsCVTRl|B{%Ehl>bp5C5_^9u$D@EweCl~9rq@L*ydM#h_je{UXL)z?%!U(< z>&Ts_j1u2@v~Ox6D^~k#zJ>5!YN^b^BTn*#Qur2Hw!^4O*1i z3W_hzn*vzADDk83{nkJCQr*%psMBcHjCeY^4L#HC#z-RVJ0~h=8lghq%Ew9dj|P_n zbpL$n8?|~b&4Mp$xrnEpcVG-Ox)t#Ib~f8SMq3i}4Nex9Lq>U(vWg&5CJAviw<%>Y z(ww%FJD-ti+p|Qla;3M#x802UNlNHVgNHUf&Rz5c-KbWEF0{+UfpoQ7F>@sNzBIfQ zoZg}rP)(pd_rB%77qn3db~&CgW>p z#pnxtfBDfJ1bhS=INs9wY3`_P=(w_&2;Gqr#(!}ZD_Y}y6A!3niw zo}Nf|N5LxD^{pRsGyE=?=*s@DG|!qM5d<6wJ6+4%kCiZ**Ds#I{Qz6;(vrCRn*HAm z6{_~+9fCImb?r3{@)36s!F6(D4O50FC`1SmWqNuYYEE$^DR+T3(}*(cpjy8;MhN0?8+?x%^K! zv_+1<5O5BL=8J74qG6}py`^o9W#Nl+jD*rEd1oxD2u_NZ?5alkK^X2SE$E{TJ=v%|C!qA_yfk_7M|yU0|YP6soZQ)m2c4)?xGZWONHz41uvyWa`z z$#I;li{a&%(r?aJM%wJTb>Z1icE&fq_i$e%(L{$4iT4)3zk?|AytLTZw_G<>eG29A+){J@`)^}#XFQdNe0kKKiJk2co-6O=c@ z!mxv=Zx|O7X~fL@=@Bpyvyx{yf2;*hJ|29pG^#d^Ju=LrfL+LebS1ysdhj(8dIX?Q zx8}a{(k(4i`Ti-oLcP@q%N^0fPWq!>t@MDRw>W?Hcm*epf?)*|!R;e4FfR9Z-HnKD zw%D&?>M;$-cM_ew%K{$Bh|il;{Bs)p`n)p9%0+fnJ3U>GCmt8Ui}pl_eSB#7fC8m- zh1P~&C>uSQuQdrn3n8^IggkqLq+k2ZgLvgqzMNA8Ma8SIJXIL1R8=BoLR&t?>Nf2T zHmza3yR)QA$K~7D;N^OQl*SH_+^qG6CfQTo;jdG`a8rSrO$Do+*W@yIlWa(Q21WY) z1kMZdK2VvoF?*5=LmfHx#!D6*jNqtO#t`^xGEDAh&I%`eD%X@e_pWH0tmBZHJ5R4a zap<}wyE1uR_|cWt9PLSGGJL96Ydq8$-oYWQO?3 z-&zbGYZ3?Kf-8t93}I+dbD%Dlhfx)cC9X$ev{s=*h^c>CSlE zf>b0L`d|Xv3kMD^fU&Bm%c%HBIOX8JG@3;{SV-*#AnmlNHz|kDePeK@1}U*e^POxa zt8OgzI@abnGJ(@R{BwVqPHvr|O$G+OViXeqArBelJ*=*V9;uY*ZY$Fu`8pu4sSz(% ziQ@|8ay>bEJ2P^uQrgELla1HOH3RSj$rb_dV_}6#I(!ItP#1U@M=-$hOmhc=u5yxi z{XRPSQTJ3Ad+ivH^wRwn#q-K?K}g1g^+jH@gM2Goc>x=P(I)<^TN+Fpf!@j7#u;Mn zoKnZ%yx*x9Gb#CfL3J=}_H&W~im8C`%zF6ki&M0RcpO=?MAk6v8FjUPlVt>?59HI7 zuGZe_CtNYp;)Mgfi)mI+vDH%Y6+*fho=;C_!}Nz(S=kbqtmV{skYl{}`uHu&o3M4i z&G|DGBZO5j{6k0YGi3Q1UxKJ`WBs+ChBN5ed}ISg$(@Vf+%&UhNdekvyp{%ESvyR2odTcX`679}3+FO~~a^zc-;IxDyRpvsBBl4k1&@QM( zUh7+&!c*mTxEgJ+C)02v@YB*$PHzp0i-0!7pWPj3vA8H(&PD_#im#)Xy=+^9dR4+g%tx$$MCn zXl41^-KgfYAxb*R%3KqP(fZ|M&H}94B@*P(EFy@HK8oM*B1G1=cQ9`af}@{OhgVsf z&1Zy;4O;;j;KQ-Qy+i`t;wsxPa#cZN^D(^%+e6aQ!3A$Zd9Rw=Lr%4rw*-hfA5dSD zeh!27&!D@c244b6U>-`73fA{Vp1gVxK4F1rjE^oo0x!_$-OjY83(m!Fix+hFSR_pc z5L6>;U3TT%CZzBd16%GQ@IbnVVvpcgI4Yv@?s_ZwU`zOy?K-lUj(_R9NfJx1FBM}! z!S~OZ7*Q1q6`M}U89$klKXqBRPz_yzFd)F2A-pFpErxQdwdpzji0~Lt0P!V7VBJ(x z#8^m6<0JsBpb$*?!>SVJPzaNSKF4?25(z+orlu`!Z`a&YPSuM$tUJ>?lrCPB{|s({ zpyGOh8`IQ}bDTsDCyb{*D&D=LbzmGnhA@y<;yHBimnm2zqCTZR9JZ$fAWk?$e zDOxxvq^~aD5^nih58*+^q zucAWQB@aU4+xP=eE>!+MtXH;(0+Yw9xlzpjRg0!2zto~>OLd$7K3V#|%MJ77v;6er zWTyjmLR2Gk?O$?H(aZm*T-4F?e}`Pu^w5sC@@b9)y$p*^e3vpz?iJ@gj^J5$j<;?` zoGh0`i}3R`LMLu_V_gKO%yW8tN2xkf6c7C|1$<*_CwM=^C0GTY5+4Z*afU7(IplCP zg3`#4)Ik~K0N>VJze|E)NwAd3f<_Lzs6qvtk@L^O$c{fK=@{G%c3oGaHxSp)Xg%PY z$lkM@J3QND)~?O=M%6 ziT(ERNnAx~&uc7Xt_*R%oqtbIne#O^{kGdT5c*Tm17^v;s?Dcv=KQXk8S4EPF%}t6 zu&W@kc6usx`V+jx?W`hIqtQ&4q7FKoOeXqkZm;S!|@nQWH*$ zOb?Sa*fW;v`697jGTOy|^2$(tO?NRYq*B-nXRZ6T7g%g~%%t#MhO(&jPyEt0AGJ_F zp$TpO~wisXscAdNn1>V^iN!8h`i_(wr}nS4A3UU&-;J57E8C+tqJE zo`@zP!n3Ho{`k+ta(y?lysQ9_V%G4CdC-8`O>z~zhBAIo1`(pmXQ8L7H56`t*K zMeEgmitsNx+`&DNLqmH>q7~cQGyybR$VbbMqD`L!yZUz&PvZ)L`)j*)z{fvI{1WvP zU6i9YNhwUZt|tt$mxW@?k#}KMztGZkoNVN0Jn?UN^-L6kLIuh_sriE%au%S#!0067UFH6Exk!MS$sKQ0 z(&V;mgu^2cT^5|W>-P@Ar3nN5-~R>hr59a*p3sagTeJL&`)|@U8c)Gd+s6?ZXtz=Y z(aB-_K*a+nE5yUAXX)hWC@cJG96seus9kZBWTqOww0U*+xKUZ1(~uu_>urPUJ`XL; zVR%aJuz_NlJBL&@ZK%SaUB#JuZ)W6ssptCUoK?c0Q%|@nOj2t+ogJe_?xS&kqRiCl zm3D*ve*6SEuV_n<*<9E~lrEX)FJn8O&a^${%~Los$NEKpqR(ji6OJxalkT$$4EBH` ztfS`9`?Xb017Uf=las2tALZr`;>&jcaWS@|KtjM<*T%U{YbiRo0IxDkgA^C`sAl5o z;wlez@xiU&SJGc#-_CcZqL(;fa<1 zNh_3DsysGf?tNM~8CR9PH?_9dPbo=knV4unMw^XS#oDLU%UqhSZ|2RJ#i&qt3nC#3 z%%@HLoVlwfr0%=l?xJx}9A9p)E%=rrrxUt`4}faYe9POSZ0*PCKpz8ef=26qjK(@E z#nNTK*Y+DRvs#a;^^qo95k$cHDdh5FVb^{%mh($bj*r6vt|SeW)&kWy7P(q0{YIX5 zlA8q=ZS%8qZ#RM``_Sff;6_KrN403DtP+vs(#Fvx1p-3i{Q$#(z>NJ<%1@)Bo~q-s z$g{P|IUi+(8ocHtF1&WoSId-taFCm7K{H09J0U%o7~IR<-Bo>V1}9RN_J9&XZ=mi@ zA>h6RlY7EM=3e%Y*{W(j_nS61bDl{0Q%^$5zocDb{Y9W>W}YvyxYDb$(3{`GHdy-F zX2iXq(FDD>QM?IzHwjImT5!7_joOVLvuVJBAnenbwv-A2^Iv~IhR3xlibL_0eKrRy zo}C-$6xrE|E~)~kY6#wy)mMyiy(3F)vCFHy<#oBUQ%|_uo@$|#$vGz@H0~%;XxMUC z<-_dEm4`6WhjGs3E$50j`Q_K&ujS{lxSeMSEGndaXv%Rr&S>bn@3?qUH_&yOqGtdYDxWlcu*Anel4P>vSt`Ry;%0H?M<*4jU`vl)xx2rh~SGY z8d3w~Wf?T@@;Ua$0CV!sWTYH5&s!`HC;MpugjOlrK|ZiIm?x z!rt}WS{Yake@8mjEA;NbJ=TO@Vp843mak^BCKAYcPTkT{9dEa0ogjZHl>|pOmquO7 zFWRq3*9jEFVG}T34U1-{`KNmQ__!k4G`12*2XyxIuAQwPYqSdLVev_B73rfdS`Ko` z*E}8vZ>;84{7{~UE(suR$x?uhV(W|+x)Z?qZ!W3I@6Zbu+*L~O?NKwEZ{eYrkzd*Z zmFLWaaG*sgvH zmcC0m$0TU=^C1!2$l+fP1YZ6{SFiSB&Ogabcg~R|iS{ACtSzl;ci&&9Vr9z324?|S zb-g%6X3Bj(TL|Td&_1o_QSxI|y{N}FT?CEEK#Z)8SjX?Kt+?NoJ5x#Jpq~sQw(jHV zQZa_`xjv~>*e^zvWe4W4Hd=nxsttD_>K8gagj;RY<^ezn{!r!*wkJ!a?>*1Ae##Kc zvj0|r`b(9iaDzSz1z#^p`*cbjzNrkZggq;yG&4nRib32u#1ZW4o?R6nyyIb%`&5$L zS6Vq#luLQroV9f2ofFFIlZtVX)4rQDgqfAnaAKq`=tckHt-2OuLMiY;!1Qj>&+%y=fl|}Sw!hYZCdEljp{J}I zXVX)#IWooh?1@do`&aTifc)a#{9(Redfn#FvpbO~>N!Nrh=cb)*4lKMx7Ly-a;>;S zvZB2SKG@pm_Q$%^7CJ3omb0<25$0^H(!hiF9|Kjy)gmGJEY}X-O(F3^qh9gKJ}0RB zVNrAW&%`V`8cGQ@S!Ik9s8*Ape1kbWaB-sA{<3g*_8_;+qb)R4Z0@kPxcBD83LtMp z|1Xq$C1CJFXP{6HGK*!PBs>tMsijFehR?(izx*TUMp9vkpo}84GQfHg6y>gNc8{c? zJzzn*;keAlxsERN+2@PzUsb)^vB;A_`W}`wr$>GOj~O~L;q@}w>uM%c-@fU*DQy`4 znU^bSTpqinrF&jhKa^BEzwv5K-yN@HxtJEaofPrK5X{^R-mpd8%`L_#+e`aTX_T-e zjjoU+PeM1kd&T}Q?#?khvTp6xamO}0b}F`Q+h)ghr_*sdwr$(CZQC|a-goc)e&50W zbDi_E=JnKEvudqtt*U#BXUue?Vmq`%c2ee08<=&Aq%Afw=AX;N!kmTq`6kh0C)KGA z_$z**A4mBnXK%U7dEWq*1@E*8--H?)8qUBMr)ZlV9sKVteqT(0p?dq9%xhstw8}Uk z%E@S+k~WFET24S$eOuOx907wKgP?v^A(DxQ`tl;j4yXg}7+tSVeHXp_TJ6$ankWqcIrX5#CoF`|good$^y#Nv9gNCT$@w;0W?HT17% z2-UTj-HSN3yOmkzEo>ffl5by|P{9&%jIta1m-b!86?Hgf4~upd7n8vZN^fIPHxXL~ z9TDC^Le@$Bg*F&FKXl2$Qb8{I?Fhd9_6GvJBKCCKbuK%8YYILm8$E;RpYZ&F9#+v% zr&klGg`@iy9R8t)!)yP6e94z#c{*oV{CXG^D7tP`ZZlgyj|mP4psxs521ejZxjjE$ zk;8{ZfP?yj`6!`f<~h0vPRNwp+RE)vT%~oJ7|{@`DzZ0*HNueBkej>TJ6Tu>=W_Dx zN6W*kmAkdT5bYHDbg$`S7#>{yD{+Akc3Eo8=yw=@uVwb&bMgru1h>>WSUa0EL0hxN z({T?9Z|vL*wnDb^7*5Rr$}MFWo<2T#EL9X=47_w0j=_Fic+838T-poEa4qZg_pvav z9~Mur0u!V2Rc#h7Syuwhiu_Jmn>H@!YueA~Y1V$k-qs@;Bm^*iSyhpDP89&RAeTgS-9FmaetpDPsSUu@SWq#4ak zU)z9H6733G^<1-Jl#H7dP^7C=fxX zLXk^r?|ZcqbkJQ)5^-=5PO10>r`z$q%f~xyve~|-Y8E*Y`%?@Xu0iK^Iho1KW>)up zO~&3NiA^o71$CO;>R7|G@FD(z1#!lZL^sBVnoYy(V(JcMu$S;jh3#y%tRX_`C$-lZKlH@i=vKeXC&O<(dcu6t*)%njDJrQI zPMb%dF>UsmJmrCevrR@yF}sjIMl zWY=#i`YF?$e!iW9!hO-y2RElTq(Y*IqJj!2+3tdo@so9L!SsUh3zB&Jq95k7Jg6B! zVYiHjf8k-y`uSl;Jyzu9l&k0t!LuTKBXNCHl&U{(Ep<~LsDevUun`Jz{QqXQC`d#} zGFrH;r2!p3O4Y~-{Ei(C_G2=7AUWE^t+MIPijWHcFs1>Te*;^_IaX!R5W!_>H|C(h zynYAqHUez|2a7R;L}3B3K8Q|4G~7$_(Bdtr5KsfpbB^$O zZf4Mo7wI^;o85*RRu&2(XpMN*14T z)CTND()UO*83mY?)FqZ@V8a|?x=xJG3F9%8YyJ= z!4TMR=REfT1VhL)lf!?CvuDXf588?gFnE63PHZ$9j)pM|653T-`XQ-17&{speqGu)zOw!1j z&6}x6R1NWDFE*Jc;z+?Sv)WC$VOYj>f|fn8pb`A=q@Ho;&^;+biCv_DYoeH+h{w8X!WSm`me zdkj0Wi8Lm{X&;JSh7wfLEVupWPXH@;ZMnd3)!!71B82y4*hxpLBpVb=AP^g%N*%3` z#O0mb@?Pof29R#VzL}ajXh{f(++|DNzRdS0m-1!JzfO`i+g1kcucF#3bQS0OQ=w?7 z>-*{Q5LcwBy0>uJdQz?RQD#!=#j{v-&BY4n)PKu39bd9D53h*-po0D z3Zu^C&ki#;?+~$LHZ+DiUhAJ8Y(3iwSXvldGy-fTdvv_4Hw=Z@Ecm=J629apYh~H{ zgW9fKz^(nZ8xh%uPD3|G`0mn9aekPIpeIfoTXntr_L996U)M)tDiA56c21`nm|EIl zDbfX|EN|%P#<{Ag_zi@LL6odf)Ske}4aIu_Q4_4c!ta$PZvVM6!sT4XMxr7Av*{=& z&jpS@5Xeja?uvh^fDDg)Gu);|@O((_pvJ4hC$X~v>nL63Y<0mWyEzN`CwK(t>&c&i z(#1fYfde`JpBD44WIbUZ9&&svP?fJXroT$Q9#3wvUqk=*tMrRL8!Jjn!(QLmFbr0= z8(=~}m735uw-6J*{ga3Eg>ARUf!{8v-|Ap21Hk@6aj&9*CKmob%LWwsLWurWo2%0g zpD#3Dz>&XNicE5I+UBS>|Mag`QX;1hvo3U^Xh~@gl=Kti@0qspS#zXtu3smZ#>f5$ z-IXE&-La1Rq665~Z*@V`zhNiO{zTFQh&bA^oaRG}zh~`x<*F($bdCqr z^@K& zH`l_yJ48>(_P%^xfK^)AMo1d`Yex09JOLpsFB@@S&9{pNX3I#hK*_EddkT_^d*^&- zDNvnutddeYftAUJgvt2n$f5NVykVJ0{9$+;(?_3tyO*^GnfTY-H}iloGt}Be>k@PA zt|8o#Q0{TDf3Rh8!8!+NrKO%H)yL%^_QsKyGop8qV`%aukCNi!%@v;Nm#Lo6-uB$q zJegCvcasC3t=Ro9!WjbMFf6&jwUkEV8`?XgqX)(E2m`W=L|U!K=X^O@h(LRX&i+Oo z9sI`W1a6Fyv^s|bMRw1XGWSV_O45Y{+eZ2wB+ON7xEoXkFoMUkmHz@gwY0pmc;TI2 z;go#~3agpcC@Rt))fEg$@7*B2$Lr58oY%ed{!^ze>vFb}<#VosZLVBIO>G504ORb) zo@m*icPo*~guO=arsfjyH*y=yS%KRF_e0(k<9B zxUJl{4l~^1##-x;xx-yAby-w_--Al`73B=F3?05KKDdu4k>68X8Zor}0wXGO=mKq7 zu}Khf8{l^>10RM`_2l9j=I=ed^Hxt_83<;>=JzskllDX(Ac#~jVlkx^{QSdInmb&s zGqc2p_f^?(KTzcvBHF%EGu}?o%XkClgA~2= zsK7AtGBa|auMeA>^aQC?@}kw222t8hXGTQIoq{E(5aP3o^W!VN-9gYs+z>r)+7Ff7p3y!gfi?*dOligKuQKm!&(QtoUif&O48`$ z2fViR2P}a=2swFcRR>G@%nd$|XXk68vUA2wWFA^=Y?YQ}RoUgsFZ7`mb-)>*(EhC4 z7%xzKmsj)E2Zcj2EVeb*%j9O$Nz>B9w(UviEuokbF?^A(40SIwFE2`-_9Dkk!$`jK zg9uIY#*%*vriqiw(&J<1r8kdhjDmcj)1Fa{kJr;qNKMVnxGTH~zsid|P6e4)(Vkyf z`%%N=qIBrMvg@Easb73wZ^3(_RtEWSn{kD3z75TzlyyFr4QOR4T$PR*%(0@J)q#V4 z3aONE-Lm6yOq^bf^L=n1-+(`GnJX_pYB^yNdC2uWk<`+ErX^HcW!5x$%xH0Gfo>ut z`1sKiCn0-_zk?G79T)lnYsNP$q3L?nQMN{Ng!!1)Kk)H+o(`j}Eb=;NhUC%?R2)X8 zUUNrgo}J&CvXz=cYW}Moy2JiDvk^>*5UtHGG|9XjIxbPSeo+hD4cHS!30-RX_q__b zR1p|8dZ-js0S&ZS^Vw&zqf6p?fQs^7%%s;-S~`;%-K5uH8b>D+(;;F*FKNuese|U& z+wODJ_5M4PV52X`6u?r-X%BKVjH^e`5z}udTGqRm`X&6qp&D5k|H-Utp$-RyD3?vN zqdQj0|B!&KMJgsH)`oZVBbCQZ#mVWn=Os#YH}GpM;cczL>@OpPg)pHU;>5dgSq;1` zh!s>S$8!49_Nc5+^@*Rb+8ErHxm=9#J1-$@{U@>sAHeCh8|Q`Bi%g3 zLsvUMMQkVK6kdBTJOT0m339D z<_|T}%fL@}7Z3kjG|m~CWJhJ7rr(hVct(Dx$^`PUkkw60_D(J+aAE(R z@S%PgcYC~bnCxf$t{l=;j>>?0O2gH*e!tZYv{3)sRc`r8F zo=`>mQHecVKt|g!Z?>kYQ(o2YOflsT_7MXnS|+))eGaLDBS|N#>0O}Rw%tR#@wb)tTR(ojJ5ClJ4{w^yRB%T{UcI0h>AOjn#URx%ik zZCWp(qc$9aUY2RT*Vw1+K4P;&03^pDb=Bmx^}9E&@P3UFy8IE8#b*>p-N0^qh!Y`hx*GLzX%>3cLFa$fajM+Kf*yVu`{Vu zb2Fu|5LzZ>xlO00)ecdE@4Z-d2I>f57vTUTuHBEui&bG8>8qH*Qn< zU0ANO8Y2DGO$5~b{pn5>YU=u`su;V4U$w}g6D!4G)@J(RvnJWI2`-t>M^=4oS*?K^ zE~I3g&E!YkC>3s;dq*`Ji^ckjNq7bfXKa1@cLTBcRIWitFhOF^CJ#LJc0c$h1~o!9 z$nCWJ&4;Ea12j!F3C+O+Z1q{BixS|~DVt!2Dk zPDR7c>qP2yY)>i3Md#<;$3Vg!7fh)V+H78T7k1wk`EX4JKQ%X}G;u!V9@`9bv`V4& zU_Lod&+bp3-JY`hGYML|3};hdS9a9+q_^ePIY$;CM4zS{fEY z5+*$lY^oztIiWjxL|qY8BR5?4%UnIL}7n>f^^n( zko0AaF8s_1R6kZcyK(OBM^#1H^Nkraa!k}bO8A&mbER?++^zTMH4#FokjaE$Gu4g>4}Qc4QP8f`nTiXU|Ibk<40S(CrfviV(`z%n%pzOVOD@- zS#=5KFK?CKE8$d8)RJ<`HB_v-`5ZXLs-$nERF2}52~ew(Rqw1TqbcD^{q}p|ljbCQ zd@SJ2@0h87ygbr@bgrA}p0w`9Chw>9o*+g!<91n-nQGa^^ni(PIn5txy=3%j zho-q4-7};eEM`?N<9!!@FsC5OU=Mc>Nl>hdi%Ya7iMQvG@qL+{uC0V2(Mlx~ey3|N zr@TQ;z?>wLzF4f@p)uC|hXP;@njG>F70+P8D^2~p6+?71#aSun2%*y=XR6NQI-rjI zd=>bm98xL?j)^v|;yQwTnV;k%jGHZ@9wCxFkE_CrTxFGW@hI`>Xg}SC z@V>c;u5veu2j|Ih{%Gz!PkC;d+ua}b)9Nt2;0v$iRW0CcC6>|)!~tky1-K04Ho8=X zBGG!z)jU7*1*#4nyHcFf#OO<8-o1zg) zfu0WWEm#&jl(nOGVs`q>H|Cx0Jo&VrYoBAIe+w#2hO$qSJla0HMow;}A`v3hB&#{$ zn^=4)ew7VO-WKPXt^3V(Wt)``S8m<2s>t)Raj2^*Ps_KLl)H-`0 zO7(N)H}mi~mXX~&D&IFUa5^cZA%;J2_cQ!@Ad)1?S_eZ{xtr+2gd;R0DLSII_B}>VP675 zwAAX+Ymd2&3B9bz;hq#73cW#NYi&k~$vmD9FNj+ZBG3kh$$~`0#7aoae9U5M$I|Ml zS_174g+8I*OB)}AWnt!sO8T5Ep$klq6kRs9rbsto3-zkV z#EHm_l>j`R#+ES4-6AK5xstown($DGof>@2Y5b$AgJ-wEz-PLx4afU}O718RUfmO|yEUxSp)q)N5P(Q0wB#NJe`m@`iB+T^$|Sfycx zoUmv{4(d%Z(%rGW{JQlCzQ-68dVDuCEmuZf12*=aZtL6Jn0*Ssgj?g(lkT5Oo zvRrrI++h{``q;n8UW^q*Wt61G2mZ+R8;A!jJj#gxe*Nf-=^wV~om8TpJK8?<#X>(H zlB-2ReQsLNOqbeRe<6?{`cH#yC%sq z1*pQa<;JLuZY&cYa5>tY#C+c;CfiV(WyzNaT32pY2T)~f8<1}RzSCH!2%+Uj*yYG{ zab)<;eO`ITILXrN57v|R2mG_|N(5}1g}hQnY||QS{v?R6FR^32WmiOkVrrfaO^2y; zDX9qyuyl>BW+uDZVh&FIzl5jurZGt{>nJ^9eESxbd9?_qY@=;g9{lZXGgEx7WfDol z#)No7A%~Y;eKtia_pZ*fc~`$~NvAs^l{Tv%D&{-&N*QQb^iBISJbj~&VmGEDBCmPV zZLgl9-g{zd-ZHN=8qG9zTEgGQe2Rx-JEmKg5tOu+dlu0xgeUGvTT1+A_PWjdB^&$W z-*$T$%8s^oAe|o0K0W+JyUk}$T?9Iqms)-L(Z7Au)2R2X7oAqDo~@H1>M$_! z>N=UPWg=Xm??ePF2MsnnUm8_LW>eSdmPNruS?wbBoJQ)%IMw7{zL^i4M5?0 z0hz#U$NFNE#OvH=Y<=DAPx?*KAu>WvNEZ&`7~gpQMfk23$>ihCSSam%TxN`cd%GY} zy2`X$xIi|`RW8sR!c)e`H3o6rdqcVW9!voy2Xjs{ zu~Fbi$Mq|?e3K>TT0p*@zUbQ@L%XdE>ynW2+BtSm|Fw(y+|hkqB&|<3s|rU;?^AlQ zFOK;|1D~jos}MW5o%?SC*)}>2c|LzRBR92p*fZsc#(R3LpqibAr{KH(ugLpf5iBp9#Yuvm6*fezpGR^(ggB7dDW_p+mdrng;U6UVIZ|xY0HgU|IMqq`>(l-}RW|hnC9PIoM!28lsCe~o z{A^83Om?R>C0i%o6ZVFsR0IzRb1GWwOzdTSuq>p-pHu~-hh+K1C3IzrLysKh^5mm8 zB80+k=l26M8i;{tea4IW1BkeC(S7+HPncrJJx*}__O9@&*thz zMq*0)^FF`xU|PE~3TcF==lZKy<+l3rC+$=d^H;7>4Ia>istPDj$#H7%Iz zx1GBVKF0>CH%J~lPV9Y!_HRJwhr^3*8GP;nBAa)ZOm(9T%1_)YT01}FbK0w~;u1-A zG5F)|^^DsV^k&OTZ+IQyp1SDqiVtPD?L7MT)dsCg**FDVG5QK8?JY~C@{?~Ef=Ro) z4tYFmvI$|$uOsDb=j)rcyI+@Dak+eS1x@Nl3(l-jG#@`~U%Xc7l|6GB=Hw5!hL4&* z*AhG0BnG{$J6Go-Hxl%`gsi;w{SpTn=ZB?7SDq$8-Lof4QOP%xd?_Eo>ftrHG&Nbm zgTU~Efn2?5Bjhp-=0uplt1E-xHj>#TgfjzR@>7M30r{)NMvbI?K?IIFkK55J;9Llk zUK#ZI%_Y(a+}_V(r?HiIsVq^Y5(Y246StRrmwGTb6~!4pGyGv(Bo5iNW}JSVF3?8Tqbz(1;Kz&jPVR{Ryq$fr2y-1FU%)Csg#uw)MJ{Np-kr zukIk2<0(}Es*z`0;?GAEWZm5GO!WhgZ)w4)9Q0(j5Ie0h^NX;M097?a?e}6*<=(3o z#tj))!ySob5d11nc_l?}(6{{UZ{E>eL*o2GKifONK;C0Bd5FGa?FV?*C%LH{`gB~C zxm4zNQi*tY`I~3rP^UstN_utBx^KOXt@IWZ4_d~!r!oT1m7o%b+ z2+V%}+)jC0HXkYd)&t7(U708u9o1e`Az#AgY4+?{G?zIMSJdWL+u`8ZCZjLdxQnIT z4^<8;W+nT#U4Q8O(D7Ff%`>WswRk8CH8h>z?5vj2;WWHf^IB#$trjfCPnyaSNqfd$ z<%#M$41hO&Kja#-nH-SC0^>{>bs+oiULu05LFGi`EJWrYaCcX_so!_US|0W*#%4;O z-D6z8%%nNNR}ULB^M=OO{cy-`d0-P{~%1R)xEpkDaj)23s z^z3xHkxX1$a<}bI+ueyPu+7-QixvT3HJL*jdatn+`r_a)pX(jxYfmjNxmO1H>P}pA zIrEGgeH>C=wx6I3-V2t*%nG2iM-Da1`b&gaj3vtmu$hva@=J%?s{wsWIpvgOdh9@p zRZWV8zJ6DunW?O&6Pi$pPsHBdg~zxF+fbmKF+MtN(lSQ7bLg&1M3M4ZxZoRgfshB- zTL1aZa;~3P!AI=$nh5%y(;zGsQPtK& zOmhcqw65nSgzz8i&5UofdeAyH;*!avbQ{MOUh4>-U%0S5IVYG+C-OTLvVXxCz zN)5zKHo>MeT)G#a5weQ#pi_fX(@rdv#AboDTFH>CF~ePwmQ)w4){7#`bJ|G9=`lRs zbamCY87$w~)%t`b;xmvPtl@_gNdBfE+o;{b=O7O%^R zgx179f!ia*-Rg^n<0hR=w14<+R{0Slo#VF?_yt$Pmf`CJ6WqTSO7=$yMBE)~A2ACX z=X?KZ4kL7fgsMaKg9%yvu=6rAx)VI@iOY%t#7o9cO(W3-L!=7$GZ&6GPl;9p? zz{M=nJuI~QCK52v&dU)2$-J<&o-s&{~_} zuNI@}6bDcKLaYD1HWWQF3geo0I75{5EB71V(FMO~Q*FvlFoK+n^%y$k zlCwmTsY3?#F{AxO@e){;=jCWIWi)iPL{hc|yo@&+7Z~FPxzIL;h}C4|wpg5s~zTq%`r zy}DdW<}oS3+UYE`9@|@i*r_VJBJ>{2KJg?(j1OyE6-v(J`>((imuv;Z^=&`bH=J64 zb;QVkXe*?(IT@;_MXke_`Z0X!wdxMrHJoG@RGg?;wmK1?u{KR~kQZ==%Qfj5l;e#_ znWOH1{2sX5q8?sR*GF$y0B^Igt!Rkq$V_Rp3q;98;bNgvsIiVU;F)PI%I>`Nk`-T6 z^giD|#=V)DkvT*kL`X=yMZZ|#6N3fi#fKlUE%3?V>W784`0z5S*dTr8Yb>B~ttahU zA6MAJzWV5#mHONlz0HdecBd4zyzZHK=Xy&wnCzXm|9EPg#No!CN-Dq|_lsh=KCa}_ zC_xoVKpq}^&0Xe@WZTbHf;v+O2DKVOp0vdSL%Xqy^W}IqmOVZ-Bt_l1JUrYtmEz_W zW-awupdx7^TyA+0UM*JghA&@fn(!M3V-wG^h74Dauj*Yz8o~ZQactR&KmTy-J9MB@ zqj}*b78Z*-xU^M#*&J}6R3f=V=_KPv!I@-bLH&c&mYTbCleVAs%pB}wx4Y%8Zx7x3 zS^qP}wmbV>X5L&{CI3OWCPw0->Uz*lqMokUBW+jI1Rd$Ztr#7x$FMTMc(}E1xhVpQ z=hWjEXE8%TLp8h_pDv#9UZE4PAQBIUS@M(4*BpBe5L z`;OJPSKT*`~Z3>}LC+Ipbge z=2rhZ?9PWlc_xC=1}EP)nGN9UrkHyf>OeZ3jnAIk_tIRm8V1Am9lE1C+5cXiA)lrY zBE-shfgnY#Nq2#+r{Cal&QDZzcdgu>p498+%8_ci-Dse)av}r0AJcKu8$Nzka5>Jp zi3Ta{j0f9?V7K@H3sHYi0;5&H?@~LkuGe~^y~R17ZoK~M>PGvPE5m@3al+^wN@`%i zIW#zpJ57V?`Y8Q+y5Dm1b1OGG!W73-Q-H&-Uobj$Xd;41hs0r}VC?Y^msZ!)gM{1& zNHu^a*z=MHTc+qhMY%8kFv2Wzn$WnXO#eaSH`%=_&e6&3MfF;!fFZ759zSOdN+`r} z{Zq~PNE@5sEQ}>tV*Bf(U9m{}5^*1sdD+v@$hkIY**bb>0|$`?(zD?~5a~|*MvISv z*5J+_LI=37v*8%ogG8LzQ28#Dn&2R8PHRrK%a6v<0h=mUXH<)Y&`_O$5|ss3X@R-X zStaZtJ6GSzE}5N4H5=2Q{rY6K4_4m}4z(1?3bL03=rWq)ROmkuI%rnwPbP2zYSg`u ze-u)$i>cfM<-}xHyH;S-GFcEUe(Bk5p*Kz@ilDN^{*olJg2Z4K)*ZWw&E&{%;3i}^ z812K9>WrKf%Cw>b4FImNCWG&yWTsHrv1NIp!3JxCvit;ivo01jyJ8g1#Z zmnIJ|lg@R-w325W{=V8T-nxmgmJ&Nh3fxQ%WPnTC%uiN_Y#6q+d|T&R9lzm>Z^8yY zAN<7lQptP_Zlf~h!mF#V%U`6jguu*Ln1^y*t`D27bUb@T5+2(xZ|Bij5!ULU{T38t zMGKVU<4fH^!Gx0^wuiCpg%@Pk?{IJTxpGwp@o2AHFD477J7=C6WbJ&sVqJ|msK|-4 z@O;#U>)Dm6q%0YT7@s%KMte)zPK{sPCtS4HGNap?8B%u`PXn|DvE_zThx4;MRr?C% z7CUCj6up2MUuwr@;AELW)7h(0zkv>y|0>Stv3+-`?b zcs9|sJ|>kN)X`IN<>7uw2-%HDwL*_&ARk!~uYBUiVnjS_#cBI7kN>jUI2dJvpD(Up zbVm+vC*bMyJGV~8VLfqEO~4}8e>4!V+I!d(Vtb)QlhbaA;J{!p>@MbZTVW0T!3mlh z{1x|$PwQv8(VPqZP*1_F)FqwIG<^piZ4_`Num9wt`{2jIa=~zh$|_7L>+#qsacMI( zoN`D$d7OZVl_rv*kz#H!&(u{$WNe|2_dKZi=d9{M^Ud(>MP)OlB5e2dzQM8HN*x!s z!j!DfKBXY2c2LUrq9h77-aL7z3~9d8vr{I4;wVX@iYDnCo1KKO>4pMlP|2j=@w{zsGjWn4qwtu5w76D>av5 zcvAWX`U$8d^@~4S=4=IM_$<`yT7*jl+n{P%amKpqQ=dcD)j;(aP~c}^$PJ{I%!nHL zf>+qmp)mglSTw$oG)MXnAUGSJPWwLNl$;|>D5ZPa*dAILbbu zACQ0Luz7}JItBEO`4|@$e>`^69A$Y5K ze)}_FhBon1!wMVO?aGwnp8cW`|7-GTT=msLXFK2?t#&(=4uQhC*PnNUBBngv?PqmJ zXFBcM>}90b&_ul>!@c3k%2%fDvnok*P!QdBoWI$nQF>)8yNW^(ldGYyvLz}Rgw&Xn zbo`1d{HehjAnNHj;4YCTWF~@kbPfZ$RX$a(1l)CHHOF$Clh^nIyPOH(GOa5L}{R#yi*HADtP-mSX9FOWb%SchixC0eJSGxhWB@jQxj*xB^8dxz4w{$#O^ zJ?wfI*Laak;Q<2F4vl3KPu;uzF!#+wBL?5sV)Ct=Cm?ThN{PmO7d6pz>O$2NPWLP$E?r1e2|){_@_or6w&=2ZBHTh+xb zylC?l9kRI&h)lr>w%b|Z9XPzfN3RbTK1yA92de31gCUq45(ZL_58H3cm}*w?gI){V zx)-zUI37KkymX-4vC1uhNxg)R?a4OEH9>wz+0ANj)la)GnPC+iUf1VNO6p5xDE(3y zAh&Is5$1675%h)Lt>>t!zi|!C4URuj26InqETTd7b$lQuqv;AC9YGt(5N|q7Qy`aP zwXBJ@vSB)d7kFlLygahKYnH~LO$pgeawG_u=ACISD>aZ(=s%3q*>wBly5(tuf2G-s zT5CMzaT8K>k<%NB$yI+w6Q?M+Bo#kCctWc#obvS?(+JC@BDpQu2K#4oXIvZE&m!u0 z{|nfsX8`rmUl9@)LG)6D{CxeTo$S<~H$N{nX}cddLQoMA1$gtvf5`^Cd!77H9;rTV`Dl-_DJK})CmlmcO?fybt7Umh$2dh4HAoI zfg({zKBUC4^Kn_!{Cq&}8@bXf2xPp{@E;f*v8zm{GR&biZ~KA6)#jCuMeh)rC#wrDQoh{il3hOtb6 z>l)2Z{=MtUO+>@X)B-TYFxE$Ot8(k zR!E(3I?Pk>ptfkI%KY&={{rVqo-@AEBdRK>mvV0oKh50c-aj&9AHe$>vG(z2Bo!;Y zt$yVb`@xHK2|nG-p-rAb1;Cqa=duD5g^ye(AMdpwr_6c+GFkK(&63u zVuG-1J<{LN)BXeQuiTK_p3rt8F#u)%ZIB&>fB%lXk#_;_Uk>Xp0^h{<#ndk%F$Vr? zM~qZz@+bxrKl^^&v-A(3@7k6A8rofZQFr~9#_^>YY<+yG1ucBK zm^lB;@0JFY<=~N~MQ|GNk1cwQ;7g8p9E36YulXaH{1QGMQcW1W~ZADyS z77lu%3v#mmaz6bxtv~|k^Hp;22S(k01+X6lgV{Ay5H~=t{QjrXN%}9bz_c|><)0<< zf2lDe#s5#0(SEtD3(70UVn6eCZkr*gdK%F}UbI~ETSs=%-f)B+g=2vu)nF6?*_SOI z;{Qj5>GTw+1!b5a@( zES+@=8}38z={UooAmxHv+Y^VLDf0hF1~{?9vKtSr zyKfRg_~*}hG2~{y-E3RTcDW;v@E`a-Zjz{ZjSkSTay+NmJd}!Boi{S3nOv~(vprc% zNB1x`w=U`ujRq&BippG;{SN5 zSbG8H)(7aT>K~~P+L(Q`yqTKmg5@%I=UTieXsven5cUFi^(fYHi9D~bIF$|$|HAsn z*h9fbd%m7aY({CiQIhsIf1VQ!JJnCWe=lj9)CT2M$Iay3^`rUZU0CL`zj&6C0`qV` zK?~3&nJNI2&X|-II6F1)cO{cWo)*jS)R8IpQJ|)Ak+RpWdq!Ho4Zv!2lTkc4{gF{H z!|lW#`!sV@)QF&+e*Y$97J&6O56S(Ogwlx+IY+nT?sjndn~+N7xxO~!c2O*xx@>%f zbNB5T3n;vB>^k$#CE)U6ZtBpD3ZD?+uvi#jeU_jeU&G~i+oX`k=F~k}{pcCs z(_9v|MuauTEJ~MUXn=YoumvfvohU{iFlE{LAg%hcqO38|xbF{D)Hn~Ka$|!{j38gs z`=Z=$?Ht)S{!bwPSTq+i(zVvIs()p7ceBi*;ZLB~a*#G<1$v68<2 z=mF8J=rj7__-ZyHvX;V#EYfG&?W#twj_0E~$@wbF!_sxqt_>mMuZS8DQEM~9EdwmoQM^GCI zSfp|IO;kXb(!imlyjG8y`3)$FDb0`NNp(GGbI-&ijwlr>`-Nxm@mL4Xz1P9TFvvB_ zM@~ZHkfF2-DcLY$2*_^2VBwQy`}vTW-`N-W;O;%G){9{R)lkwh?UD!k%5L;42mh7{ zYX2n@tS5VJ@50Sr5DKwOlJ>uD0KBdD)msYNJic=yR>W<`JVPm3oV|TN7qKiMXTZv6 z@Fh(Gwy_pmnNAY1s#7aMSI(z#hruw=bt78MG>b-`^Vp73ZXDMtO=J>u3GQ_(rbPnUMZVyV2$`;; z{%=ige(iPrqm!P`ZMOkC#re^trokVN3Q3QhduVohng$D=gaV({Y1IrjaJ7QRUt1>j zb6u2$M!?(sc%ou`636FJnGltMiQrKOz=uR=&#-ZsIR8v-AZWvY5&iFOVJ9Wi@jDI2 z94|X#C#Sg_gT&c}fIMw~ni5GsdN8y$t{MC`Va9rA1YDkCWbq5F^6gnm#5DxhH4A9o`8VdS3W`jynw)MHqQQEYDo{@8` z_A%rz3gP~60%#)*Tdh?2@o!<{{F5RG zxLemroL{W#$V-(spu=)%X=#aB zu4JJ@dwQa-=F7zPcDb{=aLqw4bwi?>lcRv4w|ol-i5NgDT#I1vwQ z;SG}psgok)DPla9k{woz<+;=fnGD{nyj%jx<61-I``4pWS*m zkbNKPvNzuzvju*^e)w`GmY&Q5^WcT;!tfgRJbq|B{9x)sW)-RmDly-(1+rkPQ=X1i ze6ri5bn$Si^y#@PmrUx1gl|zIhX>bpzaYKCxinm5bhF~&ql1W}9*0?!E?*kj{SdDX z$!LfVo)8SvGMwD7pBWRvKdrAjQB>S5FdXlzi?&Xy_TW?@hyEhTGyJ2W23GyO+Xt9|6%;jj4hyNVjip!tEZ21a=9w>n&yWBaQ93^;e*`qh=}C)Yyp>397O8J6{!?J zqu~RKb?(t4Osk!HNVRu+dxF4}(xa@zIy)x$mo441RnfCFw_6$6SVLM``PYU>81;>_ zZcO)tqy{674Pt^G8oixQE>_=3O`$O6&7CHZ_Y)79u#cF6KFByD5O7K zX#x6cxq2{$#t0X@6JRN6lTP1XT2fMd^#?WJDhmE`U$-cEXTAQ&K2SdVGF}6K6qBnC zV%*Lp$2)E$-3p#xrH*6HaYApM+bDDE0qU@My&D*WYszwp`DY+vsSorjXwFmjG%nNH z8eZg_K3*b~Xw9&lD|l#L+HmdImE8V_wM;iNShAq?)kh|yO>PL&cNWIdd-2*;B$wi~ zq$NYMh(3=W@~KQ8F7hCe!W{7jlFKJGiITTy0NIZ%Eq29p%-Rq{7Nnl_+lA}j)Y(RL zvCHG+y;BhqS<7mGe1p z8@c}7mjpmDqIu_)Mewd@Mh!F|#bSVFs(RL^N$U}&JsTxP%e3WdUHemExaf)&0N&S^ z>U$RMvTM@woH3WkrTR{qqG8iC4rXqW>GSa7W7XJSX&oW1D%_FuY!Kp>-+1wnO91sQ zzJ-Kj{@~T2rSY-|zWJAXI$tp@#1`>lrW{Ugb2ur$&Z-yu7q8{al89X-B6IxL4bhnW z-0ALc=Q)Ksf=S>uZTEyzz7L`ZkJPAbK0&j;;E(W$$V(=vUov(NlL}Gl0seb7o!*_3 z_}{;mB5mf`+QO7G(CWGCBMw<6imwy&l^>~^ne+Y1g5?rT704%JOv%a_h&3`z60rOG z)*~eNJNqTv7g|inx1Vj>P&O5pbdlaa6M8&>`I4IHyLlIEkAFh&oBL&@xAr zS`F0Via<9v>eWJ}_bT-UpWI7zYvHzD_Y%FSF=XwxF2|U_liGw64gyvM%9vLv zvW<0K!>vfjrwU2ce}y~ATU9W?BmKJK{BLjcFHySdXY`Y&%ewzj-dTS|*}ZF=Qt1#u zq!9!G2}$V&sR8LuX=w(8Aw*I_P*S=(q+#fguAv9PK|nf&&Ve($=PSJHoPXe~b>_#t zCa!0%``P#G&vV`T-qnolQ>$*^hsEd+#{7$iDh?95ahdF%EC!8(} z3Tja()0}~xD6WK0Aq0P>!|UZz)jz+)9-$zWF?VD=^z;eci^! zCcP&(>b*Vc;Zggw(G2YE_P0TFeNz?*{!whAv!|b0p9nnhP^c@LdTT2@ii+7w{55xd zT`d~tWibQss#JK$mVvb##(yJGACb$0rmtTw2N|w22#!~*)9&L5W;1Fogm(uC@uYl) z&%PMadR~c-p%Pq&uo|WSJ%&u4#@ZxObi%;}>f;s-&z@;Vl_gWUrfMg~>!Q)97I1pS zGiX2xSOB>{1`R!URNkm1CNRfAOt}$dcrL{MAWb}@0#od-?y(x6Ve%X+7)k<)4(`R9 z#gpb#1~}Pw-m`b|$Rpkb#m=E28*do+A35 z2w=Z5d(VpnF5rg2qXs@Is-%&Vxg`F2v{qtFx^Y;317`gf zCqAi0$S5xr_WtLQL952tZxzgNUaIoTg&iuA= zY%h?*W0%0DeNB+_=IK6h+k8jXbJL@JjDozRLu%1>M@y3hYeYE(jx}Z6vCq?vN0f2j z6tw`g+zVqcs~^3A%K9S-r+~`wR@W!e9jW-@$b{8#8u}es5s+8hwQ~g~{fBQFZcq_X zMa#1Jbch^w6}^#GeK$Za6Pb51ncj@-#NPh?ta{{Y+yGjg3{_BF0TbN=?O#aWYZ+ z*Yn8->itrW%MWI1*!kQPUKCcHc#R{HMHCcY@_!jd4s*%*l5f&|}n5gXtY%Bw+SnTHL>!+};?FUe=Z(H(8N1VR$%pXH# zC^|o8^pO2oUG?IuXj@Qr+Oz@1keK>A(_J~gi>h<7+ka1{H8qPBbWF$rqv=Z~A=&Oc z1|dYUMfbDAE0kibCqG_Amts2zviOG}f?rL9_i+2hI+AAw2c+{e!Qc!mk@xeLQ1&_+A&-P7TXS8~o~S z4t4$%xd)ln#X@2Sb*oZ=S;TX!wpA4xc#Hkqrf^^!xJ1t^f_-1=k#+RpZ!YhQiGJ2k zjWH)ozV^*)DE*89-EFD(uRr|W3o8;2Z)+$M^PRJ1_SV%cfBbSTV70Qpeg@9=V7TS6 zK&jo2_0fXPh*y%=F!3aCU_|G=<%=k@r8*j&M^tAYHP3cDraI4mFc05HZ%UDmRvk%^ zaiBp;CSLCM1@M}y5XiAe4pNb1*=Ul$Vk-g{`+9L(qvgHkx@E-e5DKx@L6_| z{H_-Tz!MhL4zEGXHxj%auN?T~)R8sHDdvHg{<%ZXWYNAi-*}RnOQHo&b0IKlo$y#g zw{)YiFq;4ob3;IjT~Zn$8%F(^&dyIH4_px&SD9ZhTri=$s7J?nw{Bq z#~+1|p6dy~LWRyPG0h-;h#bPAz*D~Cud|;}Sn}P`qJBKR^=qd_BZmMp*4A8iVgVSc z0yW51nWVQW)&h}3zz$idm^-oVNH=(4YMXh*oeHKK3QEjJo)mE_wwf48WVbP>!|%N1 z$X<>bfYk4h(YJSE|G!L`$*+BvYtUI#V!7W1tUN9!FD-9zui6Gk9fLZH&hsserkOy} zB-VV_nj>T{03`O>OzDnL3uB-fSy()a0!Cw9^3A*Wr>|c91}%fe@>f4li(rsiN)IW} zx(}eg#8^L+35~W}q(+w84ht=x#P^HiGSX&zdP7vHdH)3PMwOb#x`KRsxgAvxdZd-hZol1KV75_ zG{Gnl!tHPxmV7?2(s#1Iu}6-^rUu|)pIiB@;#U$%;Wza-$x`&hUmkCKE= zb$4gfV(68mh-3L{jCnZO@&AG6IfN;(21|u!+#NSF8;_Jg%)fx4PpC9UiaU9B)Y(p8 z4yeH`)E+AobVVi7`4(Zr5~79mfZ_!Pxt#zGT_6*!p_2ZuF_%ntJ$zXpKMQ2dTJgZq zKL~l_AFH*G{e41#;!n!TM2O8s<65NJBxKcP_jJI>Tg~<2^9yc|vcV)b5@AZ`;LA+f z4v8F`&@ZI*R;3TSn(fNsM*8kk8BQ3+1%#O55v+w`)y6ac2OmnX6k z1Gqd2-mpg5A!pe7OVry7c7okput{L2bu@agN)m9&um$!C$Y~5JQ5lhV+E~c$*(_G# zP`CzRtw~GFVvNEm z_0HrIBaZcD!RMqC-Y(Upu`zF4*YuI~SO3&<+&uAt5Z0^w$q|D}!%739OpEa9E)Psc z0^YG)6m~euL3F7-HyZL=FxR*T+nFySn|_D*GVyD6^@nM!JY19x)RNYekA1f6PO{Fz zFjbplr!CkZYuj6@mQ|ABtEg`_nVvWu-Lc^tI9I~)v<^(jYA1-$_DPL>JoZXt`;#Wk z5>~q&017k)&oY{+lT>8H*iG^r1XJK`g$Qo4^p!qTGnB!Q+z({??eT07h*nhMNRz}w z+5Dyh-?@U=svpgakzpR{GRd&LY0P9X4u~TjWm&qKszwo_%G?jFnZeH$`%1CREakmsi4^Vh1Os8NI7Fj&S;k&5 z<3~T%&Uj=1Wyy0?sB~)kabcfI;~_1t#UJ;dzDxLsc=Z=o6N|DYBffkh7g05czVXGi zZ<|X!ksCdY+yXqszWr?hOWlV#o&3PCxpXSgqTn+rkTZ;1l%CS7&4ocyWAIzm^wn;j z`HtJU$z3OXl2RA_VhV30-VaaGyF1jS>K*;^6{e;nxZrx zCbuB;BB68|u<*7T0eMf^DglKYt|cqzAnI#Sv9IzPq|#=nd&MNY1MfDZ;cHktWvE~| zUAI(Xm5ZJ-&n&ubzwrx5`wLej|Zm`mQ4+4mJ<#Y@tb?D=DdS1u7kV z-|llf-P6u1nKD@3(jd21-TDo|IW*3!K1-k-~l?aa2g^j z0dtp#sXD{K#)k*KK8@3{npJTdqDR+8vzr=HJ30wvlo*wTB_-!Q`gkH2vp*a?ku77G z^CWj5mhZ`K^SreM8k-h?mPik7CD#MkAc3(aM-2{TO#ae6Jg#fjN;m~|Tv8CPp8Rkf z0L)yaZ&ijJf*{@VPZ+mD7xy)PPJSy>JZ5SeC85)mD}x4WeR$sB^~RLq$aQ$RHF8(R zVa0fp)Xn8|G4`bmzxdu@s)dc}bDW~&qQzY+I>QqW`XKO2ZlF{h`Vfhal$I25q>bsd z6u-8<`xEt%GE>{dmn9U|^txIV5?AEpbMR#R;oUu%qd*wz@-7~s=YV3o(?ZUn;Iy^H znMHHfz5)M=m%&>T`zwtR)ZJhaJWTeK(|&j74Oa={ty38pFQ|-IzC#(UA(0m~yYbvz zGPIY;_)!I=AS=hjdjmf|elcsM!-D*9_A$^x7N=J0IpI zyvaPDO2d!+nH{TYwiP_stO_~YakRGgXihsr@bN|NZOxG;|1=@1MQt`kEm}PL_1*T< zp__N!d5o2{nrP}LV(1COk>-6;$pV4$<(Oh7Bk#SM{4|k+uS#VfKPr=oj6XGY&!4Wp z`k0^@AHXKBOEm5%ezIp)C846<88~NU{EfGiBkom7Hg6VBM@tKp;Lll$dOUe6BT%r4 z!+cUqrz?#ted-xF7Jqi{^{gKYw(P8c4m`agBRuVIvM%$`gl3N>ip{_ zKjR97#qjEiw2(hruCTaOxAY4NFUj}bPugZy*Q;nh)4qGH1Gb~YU^{1S1P@d-R7qop z1>n<=F5WtF2N$|Ypr2NuodXYf`+#KFk3=DEuU#eP<<{*(oFFTmiYB&&8- z^CIqj+aA0sJ>g=EsD9}geI3CUm`QhCePE!XnT4Uc7q3jisAbI%0$H0 zd+(^c#~)rTq~Yn;TLnZcTn7JChvJ5Q@TE`x<&>SsiHo3KN!{FJ(vy%eVJ1*UD+}w% z(}a}-rT#SafBY_>%Kov@jFACMQ_~Qh!`qwZIPMB=P8IRC2XCo_s>}T#NjM$`_8#EB zCVW4#bMfM55R}K>1l2Pu^FOna1vLrBXVg!9uNZo%NxC0)HwJNDR_uc z!nMEuL}>kMpTWh=0Yjf#oaou1_dq04q=Ie)D!xE(OH)f-#CIa89+7#x7G`P+Q0gG* z*sOC$xOM}t+#jy~^C}T3#`JS##31eU<22g3-*~)&#QfILPCc6|0dlxBCk$IaN6=y?pt$ zWBt&$QhubtfpbQynB6Qc*Oz(d94gEU?4r4inG9vj>i2_KvHlK&h0fkToE`<@5f~*` ztv(=gBZ_bV8VK5R#wpj?nJu~0iQ^x_DtXqri}80(O-E`3&7k9sMck~(wxZ{!`BXyv z956=13n*KLP2(ejkhd!_;^KxyuUxB8pGHxbbJvzFHW>2vYrGxB8Ie`Wt(4!BIy-&T z-6p9=dUl{y>VBCw27EmDrJa+|u*}Wrf&k=e7M_;J=5?ZiZR_{PiV(l*U65PJ^J8p{ zz=_y7C|ala(A2pH@3OABbY9EpVR?0JrDGUR;j6gp#b!(;;q42eeexMwnq<1iuC?!% z-0QPQ^Xau9Yv8s4__D0AQ9GxvJ_izS;k9y2pJTN$g>DI#CQ!#XP@4&kF%FeACD+Iv zYa~olyL0nTM|#z)dj{O@?cWPyRiC!tpi{$p=9^4;dKS9N@uufz3k?dCgdq$~P>p+W zW5yBYq*n%py~QgE0v>z!t-;8G6_0h_9NFO;qSvqe6P;WohSEXpYx<~a5CY<7sfV^#7Gek&hUK=RjIw^eua%hjcbaMj{Qm&S5EDcAq8QL)-=fpe`TzxUAgxaVTx7xj*~~9|A+p{}B#uaJqgmZy_H}z% z!wj!G!lGTCvI-OUn?UOy_&-nsob<+|4m4U(M!=&n)_#KiwQ%q~b4u^Wnwo0+FfLMe zVj$@|LaC?LzeM?9HbX!BXPNTI^B1^(H-g6B#KU)5;HGGOu2Z_x8i8`xb#u*B>_#p8 z*&*SOwutw&4^Buvg$!V--%*tl2^86oo$Uqu=C}Ro%g4Zuw$>E844gE0IThB#9Bo}V z|LMA83a$w{*XD7k+nM+V-4zEXYK_V zwfowp7?5VLd(d%8S8E7%lh}LvkeK>!K|351v--7wL<1fkUPgL7n@8Q$d=-#7)l*qY z@1II_4Wy((d+N5O^9_2J^p&(!KG63l^ INt2KN1=+XC$N&HU literal 0 HcmV?d00001 From 3d0314df31ad7cf2a9b27a40ff4cd0746f3a4e65 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bruno=20S=C3=A1nchez-Andrade=20Nu=C3=B1o?= Date: Tue, 26 May 2015 19:32:08 -0400 Subject: [PATCH 02/49] Rename CloudFront -> CloudFormation --- INSTALL.md | 4 ++-- .../GTFS_Editor_CloudFormation.json | 0 {cloudfront => cloudformation}/install.sh | 0 docs/{Install_CloudFront.md => Install_CloudFormation.md} | 4 ++-- 4 files changed, 4 insertions(+), 4 deletions(-) rename cloudfront/GTFS_Editor_CloudFront.json => cloudformation/GTFS_Editor_CloudFormation.json (100%) rename {cloudfront => cloudformation}/install.sh (100%) rename docs/{Install_CloudFront.md => Install_CloudFormation.md} (80%) diff --git a/INSTALL.md b/INSTALL.md index deb19d0b..909483fa 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -25,9 +25,9 @@ To install the GTFS Editor you have two options described here: * You can install it [from scratch](docs/Install.md) creating a new VM. -* Or you can simplify the process [using Amazon CloudFrount](docs/Install_CloudFront.md). +* Or you can simplify the process [using Amazon CloudFormation](docs/Install_CloudFormation.md). -We have created [installation scripts](cloudfront/) to make this process as straightforward as possible. +We have created [installation scripts](cloudformation/) to make this process as straightforward as possible. ## Next steps diff --git a/cloudfront/GTFS_Editor_CloudFront.json b/cloudformation/GTFS_Editor_CloudFormation.json similarity index 100% rename from cloudfront/GTFS_Editor_CloudFront.json rename to cloudformation/GTFS_Editor_CloudFormation.json diff --git a/cloudfront/install.sh b/cloudformation/install.sh similarity index 100% rename from cloudfront/install.sh rename to cloudformation/install.sh diff --git a/docs/Install_CloudFront.md b/docs/Install_CloudFormation.md similarity index 80% rename from docs/Install_CloudFront.md rename to docs/Install_CloudFormation.md index 0f9c4c04..77eb1772 100644 --- a/docs/Install_CloudFront.md +++ b/docs/Install_CloudFormation.md @@ -16,9 +16,9 @@ This is the step by step process: 5. Click Next and then Create. Your new GTFS Editor instance is now being created. -You can see the creation process in the `Events` tab. Once this process is finished, you can switch to the `Outputs` tab where you can find the public IP of this instance. +You can see the creation process in the `Events` tab. Once this process is finished, you can switch to the `Outputs` tab where you can find the public IP of this instance. If it fails, you might to accept the ToS of the OS Image (follow the weblink on the error message). -Finally, point your browser to `http://[your-ip-here]:9000` to configure the GTFS Editor (it might a take a couple of minutes for the instance to download the GTFS Editor code and its dependencies). +Finally, point your browser to `http://[public-AWS-ip-]:9000` or `https://[public-aws-DNS]:9000`to configure the GTFS Editor (it might a take a couple of minutes for the instance to download the GTFS Editor code and its dependencies). ## Create the admin user and default agency From d17fbf8408cd70327b9cd83d7d34d2d7c054f1fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bruno=20S=C3=A1nchez-Andrade=20Nu=C3=B1o?= Date: Tue, 26 May 2015 19:56:52 -0400 Subject: [PATCH 03/49] Add cloud formation to run on port 80 --- .../GTFS_Editor_CloudFormation-WB.json | 155 ++++++++++++++++++ 1 file changed, 155 insertions(+) create mode 100644 cloudformation/GTFS_Editor_CloudFormation-WB.json diff --git a/cloudformation/GTFS_Editor_CloudFormation-WB.json b/cloudformation/GTFS_Editor_CloudFormation-WB.json new file mode 100644 index 00000000..b3ddc8f8 --- /dev/null +++ b/cloudformation/GTFS_Editor_CloudFormation-WB.json @@ -0,0 +1,155 @@ +{ + "AWSTemplateFormatVersion": "2010-09-09", + "Description": "AWS CloudFormation template to build an instance for the web-based GTFS editing framework.", + "Mappings": { + "AWSInstanceType2Arch": { + "t1.micro": { "Arch": "PV64" }, + "m1.small": { "Arch": "PV64" }, + "m1.medium": { "Arch": "PV64" }, + "m1.large": { "Arch": "PV64" }, + "m1.xlarge": { "Arch": "PV64" }, + "m2.xlarge": { "Arch": "PV64" }, + "m2.2xlarge": { "Arch": "PV64" }, + "m2.4xlarge": { "Arch": "PV64" }, + "c1.medium": { "Arch": "PV64" }, + "c1.xlarge": { "Arch": "PV64" } + }, + "AWSRegionArch2AMI": { + "ap-northeast-1": { "PV64": "ami-b0b3a8b1" }, + "ap-southeast-1": { "PV64": "ami-aec1ebfc" }, + "ap-southeast-2": { "PV64": "ami-f1eb9fcb" }, + "eu-central-1": { "PV64": "ami-b4b587a9" }, + "eu-west-1": { "PV64": "ami-f3810f84" }, + "sa-east-1": { "PV64": "ami-5bf14e46" }, + "us-east-1": { "PV64": "ami-487a3920" }, + "us-west-1": { "PV64": "ami-febba3bb" }, + "us-west-2": { "PV64": "ami-13471c23" } + } + }, + "Outputs": { + "InstanceIPAddress": { + "Description": "IP address of the newly created EC2 instance", + "Value": { "Ref": "IPAddress" } + }, + "InstanceId": { + "Description": "InstanceId of the newly created EC2 instance", + "Value": { "Ref": "EC2Instance" } + } + }, + "Parameters": { + "InstanceType": { + "AllowedValues": [ + "t1.micro", + "m1.small", + "m1.medium", + "m1.large", + "m1.xlarge", + "m2.xlarge", + "m2.2xlarge", + "m2.4xlarge", + "c1.medium", + "c1.xlarge" + ], + "ConstraintDescription": "Must be a valid EC2 instance type.", + "Default": "m2.xlarge", + "Description": "Memory optimized instance type", + "Type": "String" + }, + "IpLocation": { + "AllowedPattern": "(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})/(\\d{1,2})", + "ConstraintDescription": "Must be a valid IP CIDR range of the form x.x.x.x/x.", + "Default": "0.0.0.0/0", + "Description": "The IP address range that can be used to browse and SSH to the EC2 instance.", + "MaxLength": "18", + "MinLength": "9", + "Type": "String" + }, + "KeyName": { + "ConstraintDescription": "Must be the name of an existing EC2 KeyPair.", + "Description": "Name of an existing EC2 KeyPair to enable SSH access to the instance.", + "Type": "AWS::EC2::KeyPair::KeyName" + } + }, + "Resources": { + "EC2Instance": { + "Properties": { + "ImageId": { + "Fn::FindInMap": [ + "AWSRegionArch2AMI", + { "Ref": "AWS::Region" }, + { "Fn::FindInMap": [ "AWSInstanceType2Arch", { "Ref": "InstanceType" }, "Arch" ] } + ] + }, + "InstanceType": { + "Ref": "InstanceType" + }, + "KeyName": { + "Ref": "KeyName" + }, + "SecurityGroups": [ + { + "Ref": "InstanceSecurityGroup" + } + ], + "UserData": { + "Fn::Base64": { + "Fn::Join": [ + "", + [ + "#!/bin/bash -xe\n", + "sudo apt-get --yes update\n", + "sudo apt-get --yes install git unzip openjdk-7-jre\n", + "wget http://downloads.typesafe.com/releases/play-1.2.5.zip\n", + "unzip play-1.2.5.zip\n", + "git clone https://github.com/conveyal/gtfs-editor.git\n", + "cd gtfs-editor\n", + "cp conf/application.conf.template conf/application.conf\n", + "../play-1.2.5/play dependencies\n", + "sudo ../play-1.2.5/play run --http.port=80\n" + ] + ] + } + } + }, + "Type": "AWS::EC2::Instance" + }, + "IPAddress": { + "Type": "AWS::EC2::EIP" + }, + "IPAssoc": { + "Properties": { + "EIP": { + "Ref": "IPAddress" + }, + "InstanceId": { + "Ref": "EC2Instance" + } + }, + "Type": "AWS::EC2::EIPAssociation" + }, + "InstanceSecurityGroup": { + "Properties": { + "GroupDescription": "Enable SSH access", + "SecurityGroupIngress": [ + { + "CidrIp": { + "Ref": "IpLocation" + }, + "FromPort": "22", + "IpProtocol": "tcp", + "ToPort": "22" + }, + { + "CidrIp": { + "Ref": "IpLocation" + }, + "FromPort": "80", + "IpProtocol": "tcp", + "ToPort": "80" + } + ] + }, + "Type": "AWS::EC2::SecurityGroup" + } + } +} From decdcab5c7aff7ce3167a59dc49b15c86b6159f7 Mon Sep 17 00:00:00 2001 From: Landon Reed Date: Wed, 27 Jan 2016 16:47:03 -0500 Subject: [PATCH 04/49] initial work on auth0 --- app/controllers/Secure.java | 101 +++++++++++++++++++++++++++- app/utils/Auth0UserProfile.java | 115 ++++++++++++++++++++++++++++++++ app/views/Secure/login.html | 64 ++++++++++++++++-- conf/application.conf.template | 5 ++ conf/dependencies.yml | 5 +- 5 files changed, 280 insertions(+), 10 deletions(-) create mode 100644 app/utils/Auth0UserProfile.java diff --git a/app/controllers/Secure.java b/app/controllers/Secure.java index ac0c3764..c9bb180e 100755 --- a/app/controllers/Secure.java +++ b/app/controllers/Secure.java @@ -1,10 +1,17 @@ package controllers; +import java.io.BufferedReader; +import java.io.DataOutputStream; +import java.io.InputStreamReader; import java.lang.reflect.InvocationTargetException; +import java.net.URL; import java.util.List; import java.util.Date; +import java.util.Map; import java.util.UUID; +import java.util.regex.Pattern; +import com.fasterxml.jackson.databind.ObjectMapper; import datastore.VersionedDataStore; import datastore.GlobalTx; import models.OAuthToken; @@ -17,6 +24,15 @@ import play.libs.*; import play.utils.*; +import com.auth0.jwt.JWTVerifier; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import play.mvc.Controller; +import play.mvc.Http.Request; +import utils.Auth0UserProfile; + +import javax.net.ssl.HttpsURLConnection; + public class Secure extends Controller { @Before(unless={"login", "authenticate", "logout", "get_token"}) @@ -26,7 +42,6 @@ static void checkAccess() throws Throwable { if (request.params.get("oauth_token") != null && !session.contains("username")) // persist the token session.put("oauth_token", request.params.get("oauth_token")); - if(!session.contains("username") && !Application.checkOAuth(request, session)) { flash.put("url", "GET".equals(request.method) ? request.url : Play.ctxPath + "/"); // seems a good default login(); @@ -81,6 +96,7 @@ public static void login() throws Throwable { public static void authenticate(@Required String username, String password, boolean remember) throws Throwable { // Check tokens Boolean allowed = false; + try { // This is the deprecated method name allowed = (Boolean)Security.invoke("authentify", username, password); @@ -99,7 +115,7 @@ public static void authenticate(@Required String username, String password, bool // Remember if needed if(remember) { Date expiration = new Date(); - String duration = "30d"; // maybe make this override-able + String duration = "30d"; // maybe make this override-able expiration.setTime(expiration.getTime() + Time.parseDuration(duration)); response.setCookie("rememberme", Crypto.sign(username + "-" + expiration.getTime()) + "-" + username + "-" + expiration.getTime(), duration); @@ -107,6 +123,17 @@ public static void authenticate(@Required String username, String password, bool // Redirect to the original URL (or /) redirectToOriginalURL(); } + public static void authenticateAuth0(@Required String token, Auth0UserProfile profile) throws Throwable { + // Check tokens +// Auth0UserProfile user = new Auth0UserProfile; +// user = profile; +// session.put("username", profile.getEmail()); + // Mark user as connected +// session.put("username", username); + // Remember if needed + + // Redirect to the original URL (or /) + } public static void logout() throws Throwable { Security.invoke("onDisconnect"); @@ -139,6 +166,76 @@ public static void get_token (@Required String client_id, @Required String clien badRequest(); } } + protected static Auth0UserProfile verifyUser(String token) { + org.apache.commons.codec.binary.Base64 clientSecret = new org.apache.commons.codec.binary.Base64(true); + JWTVerifier jwtVerifier = new JWTVerifier( + clientSecret.decode("DxDDNzdWeWl3B-BQkgfZF2YUPqIbQFg7yCjIPJdhu5ZdlibKSUBuhT7phAtrpMyG"), + "dR7GdOhtI3HFNxfm4HySDL4Ke8uyGfTe" + ); + + try { + Map decoded = jwtVerifier.verify(token); + + String userInfo = getUserInfo(token); + + ObjectMapper m = new ObjectMapper(); + return m.readValue(userInfo, Auth0UserProfile.class); + + } catch (Exception e) { + System.out.println("error validating token"); + e.printStackTrace(); + } + + return null; + } + protected static String getToken() { + String token = null; + final String authorizationHeader = request.params.get("authorization"); + if (authorizationHeader == null) return null; + + // check format (Authorization: Bearer [token]) + String[] parts = authorizationHeader.split(" "); + if (parts.length != 2) return null; + + String scheme = parts[0]; + String credentials = parts[1]; + + Pattern pattern = Pattern.compile("^Bearer$", Pattern.CASE_INSENSITIVE); + if (pattern.matcher(scheme).matches()) { + token = credentials; + } + return token; + } + protected static String getUserInfo(String token) throws Exception { + + URL url = new URL("https://conveyal.eu.auth0.com/tokeninfo"); + HttpsURLConnection con = (HttpsURLConnection) url.openConnection(); + + //add request header + con.setRequestMethod("POST"); + con.setRequestProperty("User-Agent", "USER_AGENT"); + con.setRequestProperty("Accept-Language", "en-US,en;q=0.5"); + + String urlParameters = "id_token=" + token; + + // Send post request + con.setDoOutput(true); + DataOutputStream wr = new DataOutputStream(con.getOutputStream()); + wr.writeBytes(urlParameters); + wr.flush(); + wr.close(); + + BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream())); + String inputLine; + StringBuffer response = new StringBuffer(); + + while ((inputLine = in.readLine()) != null) { + response.append(inputLine); + } + in.close(); + + return response.toString(); + } // ~~~ Utils diff --git a/app/utils/Auth0UserProfile.java b/app/utils/Auth0UserProfile.java new file mode 100644 index 00000000..6af889d5 --- /dev/null +++ b/app/utils/Auth0UserProfile.java @@ -0,0 +1,115 @@ +package utils; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; + +/** + * Created by landon on 1/26/16. + */ +@JsonIgnoreProperties(ignoreUnknown = true) +public class Auth0UserProfile { + + String email; + AppMetadata app_metadata; + + public Auth0UserProfile() { + } + + + public void setEmail(String email) { + this.email = email; + } + + public String getEmail() { + return this.email; + } + + public void setApp_metadata(AppMetadata app_metadata) { + this.app_metadata = app_metadata; + } + + + public static class AppMetadata { + + DatatoolsInfo datatools; + + public AppMetadata() { + } + + public void setDatatools(DatatoolsInfo datatools) { + this.datatools = datatools; + } + } + + public static class DatatoolsInfo { + + Project[] projects; + + public DatatoolsInfo() { + } + + public DatatoolsInfo(Project[] projects) { + this.projects = projects; + } + + public void setProjects(Project[] projects) { + this.projects = projects; + } + } + + + public static class Project { + + String project_id; + Permission[] permissions; + + public Project() { + } + + public Project(String project_id, Permission[] permissions) { + this.project_id = project_id; + this.permissions = permissions; + } + + public void setProject_id(String project_id) { + this.project_id = project_id; + } + + public void setPermissions(Permission[] permissions) { + this.permissions = permissions; + } + } + + public static class Permission { + + String type; + String[] feeds; + + public Permission() { + } + + public Permission(String type, String[] feeds) { + this.type = type; + this.feeds = feeds; + } + + public void setType(String type) { + this.type = type; + } + + public void setFeeds(String[] feeds) { + this.feeds = feeds; + } + } + + public int getProjectCount() { + return app_metadata.datatools.projects.length; + } + + public boolean hasProject(String projectID) { + for(Project project : app_metadata.datatools.projects) { + if (project.project_id.equals(projectID)) return true; + } + return false; + } +} + diff --git a/app/views/Secure/login.html b/app/views/Secure/login.html index d3c007c4..c4ea6829 100755 --- a/app/views/Secure/login.html +++ b/app/views/Secure/login.html @@ -1,18 +1,68 @@ #{extends 'Secure/layout.html' /} + +

- +
- + - + #{form @authenticate()} - + #{if flash.error}

&{flash.error} @@ -23,7 +73,7 @@ &{flash.success}

#{/if} - +
@@ -41,14 +91,14 @@
- +

diff --git a/conf/application.conf.template b/conf/application.conf.template index 0beedfa6..3cfb7579 100644 --- a/conf/application.conf.template +++ b/conf/application.conf.template @@ -19,6 +19,11 @@ application.allowBootstrapAdminCreate=false # If you set this to true, be sure to change the client_id and secret below! application.oauthEnabled=false +# Auth0 configuration +application.auth0.domain="yourdomain.auth0.com" +application.auth0.client_id="your-client-id" +application.auth0.client_secret="your-client-secret" + # how long (in milliseconds) are OAuth keys good for? # 604,800,000 milliseconds is one week application.oauthKeyTimeout=604800000 diff --git a/conf/dependencies.yml b/conf/dependencies.yml index b2aa1d7b..bcd4dbf1 100755 --- a/conf/dependencies.yml +++ b/conf/dependencies.yml @@ -1,7 +1,7 @@ # Application dependencies require: - - play + - play 1.2.5.3 - com.typesafe.akka -> akka-actor 2.0.3 - com.typesafe.akka -> akka-remote 2.0.3 - gov.sandia.foundry -> gov-sandia-cognition-common-core 3.3.2 @@ -12,9 +12,12 @@ require: - org.geotools -> gt-geojson 12.2 - com.fasterxml.jackson.core -> jackson-core 2.4.4 - com.fasterxml.jackson.core -> jackson-databind 2.4.4 + - commons-codec -> commons-codec 1.10 - org.opentripplanner -> otp 0.14.0 - net.sf.opencsv -> opencsv 2.0 - org.mapdb -> mapdb 1.0.7 + - com.auth0 -> java-jwt 2.1.0 + repositories: From d76b8aa3904b3f328787c37f872c8f5b31c24a79 Mon Sep 17 00:00:00 2001 From: David Emory Date: Thu, 28 Jan 2016 09:12:01 -0500 Subject: [PATCH 05/49] work on auth0 login --- app/controllers/Auth0Controller.java | 17 +++++++++ app/controllers/Secure.java | 6 +-- app/views/Admin/accounts.html | 2 +- app/views/Secure/login.html | 56 +++------------------------ conf/routes | 2 + public/javascripts/pages/auth0.js | 57 ++++++++++++++++++++++++++++ 6 files changed, 85 insertions(+), 55 deletions(-) create mode 100644 app/controllers/Auth0Controller.java create mode 100644 public/javascripts/pages/auth0.js diff --git a/app/controllers/Auth0Controller.java b/app/controllers/Auth0Controller.java new file mode 100644 index 00000000..6627be9f --- /dev/null +++ b/app/controllers/Auth0Controller.java @@ -0,0 +1,17 @@ +package controllers; + +import play.Play; +import play.mvc.Controller; + +public class Auth0Controller extends Controller { + public static void auth0Login(String token) { + System.out.println("auth0Login token="+token); + + // get user profile from Auth0 tokeninfo API + + // session.put('username', ....) + + ok(); + } + +} diff --git a/app/controllers/Secure.java b/app/controllers/Secure.java index c9bb180e..87f55098 100755 --- a/app/controllers/Secure.java +++ b/app/controllers/Secure.java @@ -167,14 +167,14 @@ public static void get_token (@Required String client_id, @Required String clien } } protected static Auth0UserProfile verifyUser(String token) { - org.apache.commons.codec.binary.Base64 clientSecret = new org.apache.commons.codec.binary.Base64(true); + /*org.apache.commons.codec.binary.Base64 clientSecret = new org.apache.commons.codec.binary.Base64(true); JWTVerifier jwtVerifier = new JWTVerifier( clientSecret.decode("DxDDNzdWeWl3B-BQkgfZF2YUPqIbQFg7yCjIPJdhu5ZdlibKSUBuhT7phAtrpMyG"), "dR7GdOhtI3HFNxfm4HySDL4Ke8uyGfTe" - ); + );*/ try { - Map decoded = jwtVerifier.verify(token); + //Map decoded = jwtVerifier.verify(token); String userInfo = getUserInfo(token); diff --git a/app/views/Admin/accounts.html b/app/views/Admin/accounts.html index dcc2bac4..c66f4a14 100755 --- a/app/views/Admin/accounts.html +++ b/app/views/Admin/accounts.html @@ -11,7 +11,7 @@

- +
diff --git a/app/views/Secure/login.html b/app/views/Secure/login.html index c4ea6829..8c29f57f 100755 --- a/app/views/Secure/login.html +++ b/app/views/Secure/login.html @@ -1,56 +1,10 @@ #{extends 'Secure/layout.html' /} - - +#{set 'scripts'} + + #{script 'pages/auth0.js' /} +#{/set} +
diff --git a/conf/routes b/conf/routes index 82473622..4f17a007 100755 --- a/conf/routes +++ b/conf/routes @@ -12,6 +12,8 @@ GET /route/.* Application.route GET /get_token Secure.get_token GET /snapshots Application.snapshots +GET /auth0login Auth0Controller.auth0Login + GET /export/gtfs Application.exportGtfs GET /export/creategtfs Application.createGtfs diff --git a/public/javascripts/pages/auth0.js b/public/javascripts/pages/auth0.js new file mode 100644 index 00000000..bca2f601 --- /dev/null +++ b/public/javascripts/pages/auth0.js @@ -0,0 +1,57 @@ +function signin() { + /*lock.show({ + callbackURL: 'http://localhost:9000/secure/login' + , responseType: 'code' + , authParams: { + scope: 'openid profile' + } + });*/ + + var lock = new Auth0Lock('dR7GdOhtI3HFNxfm4HySDL4Ke8uyGfTe', 'conveyal.eu.auth0.com'); + + + console.log("showing lock.."); + lock.show(function(err, profile, token) { + if(err) { + console.log(err) + } else { + console.log('login OK!'); + + // save profile and token to localStorage + localStorage.setItem('userToken', token); + console.log('set token', token); + + $.ajax({ + url: '/auth0login', + data: { token : token }, + success: function() { + console.log('auth0login success'); + + console.log('redirecting to main'); + document.location = '' + } + }) + + } + }, { + container: 'auth0login' + }); +} + +window.onload = function(){ + console.log('login window.onload'); + // if code exists from callback + if (window.location.search){ + $.ajaxSetup({ + beforeSend(jqXHR) { + jqXHR.setRequestHeader('Authorization', 'Bearer ' + localStorage.getItem('userToken')); + return true; + } + }); + } + else{ + + signin(); + } + +}; From cb6a47e6a86a08fe3afa52b49ab28f3c51522e73 Mon Sep 17 00:00:00 2001 From: Landon Reed Date: Thu, 28 Jan 2016 18:08:21 -0500 Subject: [PATCH 06/49] further auth0 updates --- app/controllers/Application.java | 19 ++++-- app/controllers/Auth0Controller.java | 67 ++++++++++++++++++- app/models/transit/Agency.java | 1 + app/utils/Auth0UserProfile.java | 96 ++++++++++++++++++++++++++-- app/views/Application/route.html | 1 + public/javascripts/pages/auth0.js | 2 +- 6 files changed, 174 insertions(+), 12 deletions(-) diff --git a/app/controllers/Application.java b/app/controllers/Application.java index 5093732b..8fb6b2db 100755 --- a/app/controllers/Application.java +++ b/app/controllers/Application.java @@ -20,6 +20,7 @@ import play.mvc.Http.Request; import play.mvc.Scope.Session; import play.mvc.With; +import utils.Auth0UserProfile; import java.io.File; import java.util.*; @@ -42,18 +43,24 @@ static void initSession() throws Throwable { renderArgs.put("user", Security.connected()); Account account = tx.accounts.get(Security.connected()); - - if(account == null && tx.accounts.size() == 0) { + String projectID = Play.configuration.getProperty("application.projectId"); + System.out.println("application can see token: " + session.get("token")); + + Auth0UserProfile userProfile = Auth0Controller.getUserInfo(session.get("token")); + + if(userProfile == null) { +// if(account == null && tx.accounts.size() == 0) { Bootstrap.index(); } - - if(account.admin != null && account.admin) + if(userProfile.canAdministerProject(projectID)) +// if(account.admin != null && account.admin) agencies = tx.agencies.values().toArray(new Agency[tx.agencies.size()]); else { - agencies = new Agency[] { tx.agencies.get(account.agencyId) }; +// agencies = new Agency[] { tx.agencies.get(account.agencyId) }; + agencies = new Agency[] { tx.agencies.get(userProfile.getManagedFeeds(projectID)) }; } - renderArgs.put("agencies", agencies); +// renderArgs.put("agencies", agencies); } else if (checkOAuth(request, session, tx)) { renderArgs.put("user", Messages.get("secure.anonymous")); diff --git a/app/controllers/Auth0Controller.java b/app/controllers/Auth0Controller.java index 6627be9f..1e34ebad 100644 --- a/app/controllers/Auth0Controller.java +++ b/app/controllers/Auth0Controller.java @@ -1,7 +1,16 @@ package controllers; +import com.fasterxml.jackson.databind.ObjectMapper; import play.Play; import play.mvc.Controller; +import utils.Auth0UserProfile; + +import javax.net.ssl.HttpsURLConnection; +import java.io.BufferedReader; +import java.io.DataOutputStream; +import java.io.InputStreamReader; +import java.net.URL; +import java.util.regex.Pattern; public class Auth0Controller extends Controller { public static void auth0Login(String token) { @@ -9,9 +18,65 @@ public static void auth0Login(String token) { // get user profile from Auth0 tokeninfo API - // session.put('username', ....) + session.put("username", "test"); + session.put("token", token); + System.out.println("user=" + session.get("username")); ok(); } + protected static String getToken() { + String token = null; + final String authorizationHeader = request.params.get("authorization"); + if (authorizationHeader == null) return null; + + // check format (Authorization: Bearer [token]) + String[] parts = authorizationHeader.split(" "); + if (parts.length != 2) return null; + + String scheme = parts[0]; + String credentials = parts[1]; + + Pattern pattern = Pattern.compile("^Bearer$", Pattern.CASE_INSENSITIVE); + if (pattern.matcher(scheme).matches()) { + token = credentials; + } + return token; + } + + protected static Auth0UserProfile getUserInfo(String token) throws Exception { + + URL url = new URL("https://conveyal.eu.auth0.com/tokeninfo"); + HttpsURLConnection con = (HttpsURLConnection) url.openConnection(); + + //add request header + con.setRequestMethod("POST"); + con.setRequestProperty("User-Agent", "USER_AGENT"); + con.setRequestProperty("Accept-Language", "en-US,en;q=0.5"); + + String urlParameters = "id_token=" + token; + + // Send post request + con.setDoOutput(true); + DataOutputStream wr = new DataOutputStream(con.getOutputStream()); + wr.writeBytes(urlParameters); + wr.flush(); + wr.close(); + + BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream())); + String inputLine; + StringBuffer response = new StringBuffer(); + + while ((inputLine = in.readLine()) != null) { + response.append(inputLine); + } + in.close(); + + String userInfo = response.toString(); + + ObjectMapper m = new ObjectMapper(); + return m.readValue(userInfo, Auth0UserProfile.class); + + + } } diff --git a/app/models/transit/Agency.java b/app/models/transit/Agency.java index 7d494fb4..8c0aac06 100755 --- a/app/models/transit/Agency.java +++ b/app/models/transit/Agency.java @@ -20,6 +20,7 @@ public class Agency extends Model implements Cloneable, Serializable, Comparable public static final long serialVersionUID = 1; public String gtfsAgencyId; + public String feedId; public String name; public String url; public String timezone; diff --git a/app/utils/Auth0UserProfile.java b/app/utils/Auth0UserProfile.java index 6af889d5..52d8f5ec 100644 --- a/app/utils/Auth0UserProfile.java +++ b/app/utils/Auth0UserProfile.java @@ -1,26 +1,37 @@ package utils; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import java.util.*; /** - * Created by landon on 1/26/16. + * Created by demory on 1/18/16. */ + @JsonIgnoreProperties(ignoreUnknown = true) public class Auth0UserProfile { String email; + String user_id; AppMetadata app_metadata; public Auth0UserProfile() { } + public String getUser_id() { + return user_id; + } + + public void setUser_id(String user_id) { + this.user_id = user_id; + } + public void setEmail(String email) { this.email = email; } public String getEmail() { - return this.email; + return email; } public void setApp_metadata(AppMetadata app_metadata) { @@ -43,17 +54,24 @@ public void setDatatools(DatatoolsInfo datatools) { public static class DatatoolsInfo { Project[] projects; + Permission[] permissions; public DatatoolsInfo() { } - public DatatoolsInfo(Project[] projects) { + public DatatoolsInfo(Project[] projects, Permission[] permissions) { this.projects = projects; + this.permissions = permissions; } public void setProjects(Project[] projects) { this.projects = projects; } + + public void setPermissions(Permission[] permissions) { + this.permissions = permissions; + } + } @@ -101,6 +119,23 @@ public void setFeeds(String[] feeds) { } } + public List getManagedFeeds(String projectID){ + List feeds = new ArrayList(); + for(Project project : app_metadata.datatools.projects) { + if (project.project_id.equals(projectID)) { + for(Permission permission : project.permissions) { + if(permission.type.equals("manage-feed")) { + for(String thisFeedID : permission.feeds) { +// if(thisFeedID.equals(feedID) || thisFeedID.equals("*")) + feeds.add(thisFeedID); + } + } + } + } + } + return feeds; + } + public int getProjectCount() { return app_metadata.datatools.projects.length; } @@ -111,5 +146,58 @@ public boolean hasProject(String projectID) { } return false; } -} + public boolean canAdministerApplication() { + if(app_metadata.datatools.permissions != null) { + for(Permission permission : app_metadata.datatools.permissions) { + if(permission.type.equals("administer-application")) { + return true; + } + } + } + return false; + } + + public boolean canAdministerProject(String projectID) { + for(Project project : app_metadata.datatools.projects) { + if (project.project_id.equals(projectID)) { + for(Permission permission : project.permissions) { + if(permission.type.equals("administer-project")) { + return true; + } + } + } + } + return false; + } + + public boolean canViewFeed(String projectID, String feedID) { + for(Project project : app_metadata.datatools.projects) { + if (project.project_id.equals(projectID)) { + for(Permission permission : project.permissions) { + if(permission.type.equals("view-feed")) { + for(String thisFeedID : permission.feeds) { + if(thisFeedID.equals(feedID) || thisFeedID.equals("*")) return true; + } + } + } + } + } + return false; + } + + public boolean canManageFeed(String projectID, String feedID) { + for(Project project : app_metadata.datatools.projects) { + if (project.project_id.equals(projectID)) { + for(Permission permission : project.permissions) { + if(permission.type.equals("manage-feed")) { + for(String thisFeedID : permission.feeds) { + if(thisFeedID.equals(feedID) || thisFeedID.equals("*")) return true; + } + } + } + } + } + return false; + } +} diff --git a/app/views/Application/route.html b/app/views/Application/route.html index e9f9759c..81f9d941 100755 --- a/app/views/Application/route.html +++ b/app/views/Application/route.html @@ -975,6 +975,7 @@

&{'route.trip-info-tpl.calendar-create-moda #{script 'lib/leaflet.encoded-polyline.js' /} #{script 'lib/bootstrap-colorpicker.js' /} #{script 'lib/geolib.js' /} + #{script 'lib/auth0-user.js' /} #{script 'lib/fileuploader.js' /} diff --git a/public/javascripts/pages/auth0.js b/public/javascripts/pages/auth0.js index bca2f601..bbe964fd 100644 --- a/public/javascripts/pages/auth0.js +++ b/public/javascripts/pages/auth0.js @@ -28,7 +28,7 @@ function signin() { console.log('auth0login success'); console.log('redirecting to main'); - document.location = '' + window.location = '/'; } }) From c5455782e5b13b3eb23fd7327c5aaa798bbcdab9 Mon Sep 17 00:00:00 2001 From: David Emory Date: Sun, 7 Feb 2016 17:54:13 -0500 Subject: [PATCH 07/49] pull agencies from manager --- app/controllers/Application.java | 73 +++++++++------ app/controllers/Auth0Controller.java | 31 ++++++- app/controllers/Security.java | 23 ++--- app/models/transit/Agency.java | 1 + app/utils/Auth0UserProfile.java | 26 ++++++ app/views/Application/manageAgencies.html | 66 ++++++++++++-- app/views/Application/route.html | 1 - app/views/Secure/login.html | 10 +-- app/views/main.html | 2 +- conf/routes | 1 + public/javascripts/models.js | 6 +- public/javascripts/views/agency-list-view.js | 93 ++++++++++++++++---- 12 files changed, 262 insertions(+), 71 deletions(-) diff --git a/app/controllers/Application.java b/app/controllers/Application.java index 8fb6b2db..9e808013 100755 --- a/app/controllers/Application.java +++ b/app/controllers/Application.java @@ -1,6 +1,7 @@ package controllers; import com.google.common.collect.Maps; + import datastore.AgencyTx; import datastore.GlobalTx; import datastore.VersionedDataStore; @@ -10,8 +11,10 @@ import models.Account; import models.OAuthToken; import models.transit.*; + import org.joda.time.DateTimeZone; import org.joda.time.LocalDate; + import play.Play; import play.i18n.Lang; import play.i18n.Messages; @@ -28,42 +31,60 @@ @With(Secure.class) public class Application extends Controller { - /** used to give almost-friendly names to exported files */ - public static AtomicLong nextExportId = new AtomicLong(1); - + /** used to give almost-friendly names to exported files */ + public static AtomicLong nextExportId = new AtomicLong(1); + @Before static void initSession() throws Throwable { - GlobalTx tx = VersionedDataStore.getGlobalTx(); - - try { - Agency[] agencies; - - if(Security.isConnected()) { - renderArgs.put("user", Security.connected()); - - Account account = tx.accounts.get(Security.connected()); - String projectID = Play.configuration.getProperty("application.projectId"); - System.out.println("application can see token: " + session.get("token")); + GlobalTx tx = VersionedDataStore.getGlobalTx(); + try { + Agency[] agencies = new Agency[0]; + + if(Security.isConnected()) { + renderArgs.put("user", Security.connected()); + + Account account = tx.accounts.get(Security.connected()); + String projectID = Play.configuration.getProperty("application.projectId"); + System.out.println("application can see token: " + session.get("token")); + + Auth0UserProfile userProfile = Auth0Controller.getUserInfo(session.get("token")); + + agencies = tx.agencies.values().toArray(new Agency[tx.agencies.size()]); + + String editableFeeds = session.get("editableFeeds"); - Auth0UserProfile userProfile = Auth0Controller.getUserInfo(session.get("token")); + List filteredAgencies= new ArrayList(); - if(userProfile == null) { -// if(account == null && tx.accounts.size() == 0) { + if(editableFeeds != null) { + System.out.println("filtering agencies" + editableFeeds); + + String[] edIds = editableFeeds.split(","); + for(Agency agency : agencies) { + if(Arrays.asList(edIds).contains(agency.sourceId) || Arrays.asList(edIds).contains("*")) { + filteredAgencies.add(agency); + } + } + } + + agencies = filteredAgencies.toArray(new Agency[filteredAgencies.size()]); + + /*if(userProfile == null) { + if(account == null && tx.accounts.size() == 0) { Bootstrap.index(); } if(userProfile.canAdministerProject(projectID)) -// if(account.admin != null && account.admin) + if(account.admin != null && account.admin) agencies = tx.agencies.values().toArray(new Agency[tx.agencies.size()]); else { -// agencies = new Agency[] { tx.agencies.get(account.agencyId) }; + agencies = new Agency[] { tx.agencies.get(account.agencyId) }; agencies = new Agency[] { tx.agencies.get(userProfile.getManagedFeeds(projectID)) }; - } - -// renderArgs.put("agencies", agencies); - } - else if (checkOAuth(request, session, tx)) { - renderArgs.put("user", Messages.get("secure.anonymous")); + }*/ + + renderArgs.put("agencies", agencies); + } + else if (checkOAuth(request, session, tx)) { + renderArgs.put("user", Messages.get("secure.anonymous")); OAuthToken token = getToken(request, session, tx); @@ -88,7 +109,7 @@ else if (checkOAuth(request, session, tx)) { Arrays.sort(agencies); - if(session.get("agencyId") == null) { + if(session.get("agencyId") == null && agencies.length >0) { Agency agency = agencies[0]; diff --git a/app/controllers/Auth0Controller.java b/app/controllers/Auth0Controller.java index 1e34ebad..caac8646 100644 --- a/app/controllers/Auth0Controller.java +++ b/app/controllers/Auth0Controller.java @@ -1,14 +1,19 @@ package controllers; import com.fasterxml.jackson.databind.ObjectMapper; + import play.Play; import play.mvc.Controller; import utils.Auth0UserProfile; import javax.net.ssl.HttpsURLConnection; + +import org.apache.commons.lang.StringUtils; + import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.InputStreamReader; +import java.lang.Exception; import java.net.URL; import java.util.regex.Pattern; @@ -18,13 +23,35 @@ public static void auth0Login(String token) { // get user profile from Auth0 tokeninfo API - session.put("username", "test"); session.put("token", token); - System.out.println("user=" + session.get("username")); + + try { + Auth0UserProfile profile = getUserInfo(token); + System.out.println("got userinfo for " + profile.getEmail()); + session.put("username", profile.getEmail()); + + String projectID = Play.configuration.getProperty("application.projectId"); + + String editableFeeds = StringUtils.join(profile.getEditableFeeds(projectID), ","); + session.put("editableFeeds", editableFeeds); + + String manageableFeeds = StringUtils.join(profile.getManageableFeeds(projectID), ","); + session.put("manageableFeeds", manageableFeeds); + } + catch (Exception e) { + e.printStackTrace(); + badRequest(); + } ok(); } + public static void auth0Logout(String token) { + System.out.println("logging out"); + session.clear(); + redirect("/"); + } + protected static String getToken() { String token = null; final String authorizationHeader = request.params.get("authorization"); diff --git a/app/controllers/Security.java b/app/controllers/Security.java index ac5caee7..84025f5b 100755 --- a/app/controllers/Security.java +++ b/app/controllers/Security.java @@ -19,17 +19,18 @@ static boolean authenticate(String username, String password) { } static boolean check(String profile) { - GlobalTx tx = VersionedDataStore.getGlobalTx(); - - try { - if("admin".equals(profile)) - return tx.accounts.containsKey(connected()) && tx.accounts.get(connected()).isAdmin(); - else - return false; - } - finally { - tx.rollback(); - } + return session.contains("manageableFeeds") && session.get("manageableFeeds").length() > 0; + /*GlobalTx tx = VersionedDataStore.getGlobalTx(); + + try { + if("admin".equals(profile)) + return tx.accounts.containsKey(connected()) && tx.accounts.get(connected()).isAdmin(); + else + return false; + } + finally { + tx.rollback(); + }*/ } static Account getAccount() diff --git a/app/models/transit/Agency.java b/app/models/transit/Agency.java index 8c0aac06..421754e0 100755 --- a/app/models/transit/Agency.java +++ b/app/models/transit/Agency.java @@ -34,6 +34,7 @@ public class Agency extends Model implements Cloneable, Serializable, Comparable public String routeTypeId; + public String sourceId; /* @JsonCreator public static Agency factory(long id) { diff --git a/app/utils/Auth0UserProfile.java b/app/utils/Auth0UserProfile.java index 52d8f5ec..6e43bbbe 100644 --- a/app/utils/Auth0UserProfile.java +++ b/app/utils/Auth0UserProfile.java @@ -1,6 +1,8 @@ package utils; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; + +import java.security.Permissions; import java.util.*; /** @@ -200,4 +202,28 @@ public boolean canManageFeed(String projectID, String feedID) { } return false; } + + public String[] getFeedsForPermission(String projectID, String permissionType) { + if(canAdministerProject(projectID)) { + String[] all = { "*" }; + return all; + } + for(Project project : app_metadata.datatools.projects) { + for(Permission permission : project.permissions) { + if(permission.type.equals(permissionType)) { + return permission.feeds; + } + } + } + return new String[0]; + } + + public String[] getEditableFeeds(String projectID) { + return getFeedsForPermission(projectID, "edit-gtfs"); + } + + public String[] getManageableFeeds(String projectID) { + return getFeedsForPermission(projectID, "manage-feed"); + } + } diff --git a/app/views/Application/manageAgencies.html b/app/views/Application/manageAgencies.html index f2fa554c..b1b23b79 100755 --- a/app/views/Application/manageAgencies.html +++ b/app/views/Application/manageAgencies.html @@ -7,11 +7,12 @@ #{/set} + + + diff --git a/app/views/Application/route.html b/app/views/Application/route.html index 81f9d941..e9f9759c 100755 --- a/app/views/Application/route.html +++ b/app/views/Application/route.html @@ -975,7 +975,6 @@

&{'route.trip-info-tpl.calendar-create-moda #{script 'lib/leaflet.encoded-polyline.js' /} #{script 'lib/bootstrap-colorpicker.js' /} #{script 'lib/geolib.js' /} - #{script 'lib/auth0-user.js' /} #{script 'lib/fileuploader.js' /} diff --git a/app/views/Secure/login.html b/app/views/Secure/login.html index 8c29f57f..f95176c9 100755 --- a/app/views/Secure/login.html +++ b/app/views/Secure/login.html @@ -6,13 +6,12 @@ #{/set} + +

@@ -65,3 +64,4 @@
+--> \ No newline at end of file diff --git a/app/views/main.html b/app/views/main.html index 7606e5dc..d18600a8 100755 --- a/app/views/main.html +++ b/app/views/main.html @@ -88,7 +88,7 @@
  • &{'manage.agencies.title'}
  • -
  • &{'manage.accounts.title'}
  • +
  • &{'manage.import-gtfs.title'}
  • diff --git a/conf/routes b/conf/routes index 4f17a007..58f8906d 100755 --- a/conf/routes +++ b/conf/routes @@ -13,6 +13,7 @@ GET /get_token Secure.get_token GET /snapshots Application.snapshots GET /auth0login Auth0Controller.auth0Login +GET /auth0logout Auth0Controller.auth0Logout GET /export/gtfs Application.exportGtfs GET /export/creategtfs Application.createGtfs diff --git a/public/javascripts/models.js b/public/javascripts/models.js index c7c27664..f8cae42a 100755 --- a/public/javascripts/models.js +++ b/public/javascripts/models.js @@ -24,7 +24,7 @@ var GtfsEditor = GtfsEditor || {}; url: G.config.baseUrl + 'api/agency/' }); -G.RouteType = Backbone.Model.extend({ + G.RouteType = Backbone.Model.extend({ urlRoot: G.config.baseUrl + 'api/routetype/', defaults: { @@ -36,7 +36,7 @@ G.RouteType = Backbone.Model.extend({ } }); -G.RouteTypes = Backbone.Collection.extend({ + G.RouteTypes = Backbone.Collection.extend({ type: 'RouteTypes', model: G.RouteType, url: G.config.baseUrl + 'api/routetype/' @@ -464,7 +464,7 @@ G.RouteTypes = Backbone.Collection.extend({ } }); -G.Trip = Backbone.Model.extend({ + G.Trip = Backbone.Model.extend({ defaults: { tripDescription: null, patternId: null, diff --git a/public/javascripts/views/agency-list-view.js b/public/javascripts/views/agency-list-view.js index ea10ad12..ef1d7a1e 100755 --- a/public/javascripts/views/agency-list-view.js +++ b/public/javascripts/views/agency-list-view.js @@ -1,5 +1,70 @@ (function(G, $, ich) { + G.AvailableAgencyListView = Backbone.View.extend({ + + events: { + 'click .load-agency-button': 'loadAgency' + }, + + initialize: function (opts) { + var self = this; + var token = localStorage.getItem('userToken'); + $.ajax({ + url : "http://localhost:9000/api/feedsources", + data : { + feedcollection: G.config.projectId + }, + headers: { + 'Authorization' : 'Bearer ' + token + }, + success: function(data) { + self.agencies = []; + data.forEach(function(feed) { + if(!feed.latestValidation || !feed.latestValidation.agencies) return; + feed.latestValidation.agencies.forEach(function(agency) { + self.agencies.push({ + sourceId: feed.id, + sourceName: feed.name, + agencyId: agency + }); + }); + }); + self.render(); + }, + error: (err) => { + console.log('error getting feed sources', err) + } + }) + }, + + render: function() { + this.$el.html(ich['available-agency-table-tpl']({ + agencies: this.agencies + })); + }, + + loadAgency : function (evt) { + var sourceId = $(evt.currentTarget).data("source-id"); + var agencyId = $(evt.currentTarget).data("agency-id"); + var agency = this.getAgency(sourceId, agencyId); + if(agency != null) { + this.options.agencyListView.createAgency(null, { + gtfsAgencyId: agency.agencyId, + name : agency.sourceName, + sourceId: agency.sourceId + }); + } + }, + + getAgency : function (sourceId, agencyId) { + for(var i=0; i < this.agencies.length; i++) { + var agency = this.agencies[i]; + if(agency.sourceId == sourceId && agency.agencyId === agencyId) return agency; + } + return null; + } + }); + G.AgencyListView = Backbone.View.extend({ events: { @@ -16,20 +81,18 @@ this.collection.on('remove', this.render, this); this.collection.fetch().complete(function() { - self.render(); - }); this.clickMarkerIcon = L.icon({ - iconUrl: G.config.baseUrl + 'public/images/markers/marker-0d85e9.png', - iconSize: [25, 41], - iconAnchor: [12, 41], - popupAnchor: [1, -34], - shadowUrl: G.config.baseUrl + 'public/images/markers/marker-shadow.png', - shadowSize: [41, 41], - labelAnchor: [10, -16] - }); + iconUrl: G.config.baseUrl + 'public/images/markers/marker-0d85e9.png', + iconSize: [25, 41], + iconAnchor: [12, 41], + popupAnchor: [1, -34], + shadowUrl: G.config.baseUrl + 'public/images/markers/marker-shadow.png', + shadowSize: [41, 41], + labelAnchor: [10, -16] + }); _.bindAll(this, 'editAgency', 'createAgency', 'deleteAgency'); }, @@ -56,7 +119,6 @@ if(data.id == "" ) { - view.collection.create(_.omit(data, 'id'), {error: function(){ $('#agency-modal').modal('hide'); @@ -70,8 +132,6 @@ location.reload(); }}); - - } else { @@ -91,8 +151,7 @@ }}); } - }); - + }); }, editAgency: function(evt) { @@ -122,9 +181,9 @@ }, - createAgency: function(evt) { + createAgency: function(evt, values) { - $('#agency-modal-body').html(ich['agency-dialog-tpl']()); + $('#agency-modal-body').html(ich['agency-dialog-tpl'](values)); this.buildMap(); From 4ed616a04bfc4b51cbcf70f1c570927543bc726e Mon Sep 17 00:00:00 2001 From: David Emory Date: Mon, 8 Feb 2016 17:18:29 -0500 Subject: [PATCH 08/49] SSO support --- app/controllers/Application.java | 20 +--- app/controllers/Auth0Controller.java | 1 + app/controllers/Secure.java | 173 +-------------------------- app/views/Secure/layout.html | 33 ----- app/views/Secure/login.html | 65 +--------- public/javascripts/pages/auth0.js | 108 +++++++++++------ 6 files changed, 87 insertions(+), 313 deletions(-) diff --git a/app/controllers/Application.java b/app/controllers/Application.java index 9e808013..23741f23 100755 --- a/app/controllers/Application.java +++ b/app/controllers/Application.java @@ -40,7 +40,9 @@ static void initSession() throws Throwable { GlobalTx tx = VersionedDataStore.getGlobalTx(); try { Agency[] agencies = new Agency[0]; - + + System.out.println("app username = " + session.get("username")); + System.out.println("app path = " + request.path); if(Security.isConnected()) { renderArgs.put("user", Security.connected()); @@ -83,26 +85,12 @@ static void initSession() throws Throwable { renderArgs.put("agencies", agencies); } - else if (checkOAuth(request, session, tx)) { - renderArgs.put("user", Messages.get("secure.anonymous")); - - OAuthToken token = getToken(request, session, tx); - - if (token.agencyId != null) { - agencies = new Agency[] { tx.agencies.get(token.agencyId) }; - } - else { - agencies = tx.agencies.values().toArray(new Agency[tx.agencies.size()]); - } - - renderArgs.put("agencies", agencies); - } else { if(tx.accounts.size() == 0) Bootstrap.index(); else - Secure.login(); + Secure.login(request.path); return; } diff --git a/app/controllers/Auth0Controller.java b/app/controllers/Auth0Controller.java index caac8646..f3934a7f 100644 --- a/app/controllers/Auth0Controller.java +++ b/app/controllers/Auth0Controller.java @@ -36,6 +36,7 @@ public static void auth0Login(String token) { session.put("editableFeeds", editableFeeds); String manageableFeeds = StringUtils.join(profile.getManageableFeeds(projectID), ","); + System.out.println("manageableFeeds = " + manageableFeeds); session.put("manageableFeeds", manageableFeeds); } catch (Exception e) { diff --git a/app/controllers/Secure.java b/app/controllers/Secure.java index 87f55098..d5382f49 100755 --- a/app/controllers/Secure.java +++ b/app/controllers/Secure.java @@ -68,71 +68,14 @@ private static void check(Check check) throws Throwable { // ~~~ Login - public static void login() throws Throwable { - Http.Cookie remember = request.cookies.get("rememberme"); - if(remember != null) { - int firstIndex = remember.value.indexOf("-"); - int lastIndex = remember.value.lastIndexOf("-"); - if (lastIndex > firstIndex) { - String sign = remember.value.substring(0, firstIndex); - String restOfCookie = remember.value.substring(firstIndex + 1); - String username = remember.value.substring(firstIndex + 1, lastIndex); - String time = remember.value.substring(lastIndex + 1); - Date expirationDate = new Date(Long.parseLong(time)); // surround with try/catch? - Date now = new Date(); - if (expirationDate == null || expirationDate.before(now)) { - logout(); - } - if(Crypto.sign(restOfCookie).equals(sign)) { - session.put("username", username); - redirectToOriginalURL(); - } - } - } - flash.keep("url"); - render(); - } - - public static void authenticate(@Required String username, String password, boolean remember) throws Throwable { - // Check tokens - Boolean allowed = false; - - try { - // This is the deprecated method name - allowed = (Boolean)Security.invoke("authentify", username, password); - } catch (UnsupportedOperationException e ) { - // This is the official method name - allowed = (Boolean)Security.invoke("authenticate", username, password); - } - if(validation.hasErrors() || !allowed) { - flash.keep("url"); - flash.error("secure.error"); - params.flash(); - login(); - } - // Mark user as connected - session.put("username", username); - // Remember if needed - if(remember) { - Date expiration = new Date(); - String duration = "30d"; // maybe make this override-able - expiration.setTime(expiration.getTime() + Time.parseDuration(duration)); - response.setCookie("rememberme", Crypto.sign(username + "-" + expiration.getTime()) + "-" + username + "-" + expiration.getTime(), duration); - - } - // Redirect to the original URL (or /) - redirectToOriginalURL(); + public static void login(String redirectTo) throws Throwable { + System.out.println("redirectTo = " + redirectTo); + System.out.println("login path = " + request.path); + render(redirectTo); } - public static void authenticateAuth0(@Required String token, Auth0UserProfile profile) throws Throwable { - // Check tokens -// Auth0UserProfile user = new Auth0UserProfile; -// user = profile; -// session.put("username", profile.getEmail()); - // Mark user as connected -// session.put("username", username); - // Remember if needed - // Redirect to the original URL (or /) + public static void login() throws Throwable { + login(""); } public static void logout() throws Throwable { @@ -143,110 +86,6 @@ public static void logout() throws Throwable { flash.success("secure.logout"); login(); } - - // Get an OAuth token, possibly with particular agencies - public static void get_token (@Required String client_id, @Required String client_secret, String agencyId) { - // check if the client secret and client ID are correct, and if OAuth is enabled - if (!"true".equals(Play.configuration.getProperty("application.oauthEnabled"))) { - badRequest(); - } else if (client_id.equals(Play.configuration.getProperty("application.managerId")) && - client_secret.equals(Play.configuration.getProperty("application.managerSecret"))) { - // create an OAuth key - String tokenRaw = UUID.randomUUID().toString().replace("-", "").substring(0, 16); - OAuthToken token = new OAuthToken(tokenRaw, agencyId); - - GlobalTx tx = VersionedDataStore.getGlobalTx(); - tx.tokens.put(token.id, token); - tx.commit(); - - renderText(tokenRaw); - } - else { - Logger.info("Invalid client ID or secret"); - badRequest(); - } - } - protected static Auth0UserProfile verifyUser(String token) { - /*org.apache.commons.codec.binary.Base64 clientSecret = new org.apache.commons.codec.binary.Base64(true); - JWTVerifier jwtVerifier = new JWTVerifier( - clientSecret.decode("DxDDNzdWeWl3B-BQkgfZF2YUPqIbQFg7yCjIPJdhu5ZdlibKSUBuhT7phAtrpMyG"), - "dR7GdOhtI3HFNxfm4HySDL4Ke8uyGfTe" - );*/ - - try { - //Map decoded = jwtVerifier.verify(token); - - String userInfo = getUserInfo(token); - - ObjectMapper m = new ObjectMapper(); - return m.readValue(userInfo, Auth0UserProfile.class); - - } catch (Exception e) { - System.out.println("error validating token"); - e.printStackTrace(); - } - - return null; - } - protected static String getToken() { - String token = null; - final String authorizationHeader = request.params.get("authorization"); - if (authorizationHeader == null) return null; - - // check format (Authorization: Bearer [token]) - String[] parts = authorizationHeader.split(" "); - if (parts.length != 2) return null; - - String scheme = parts[0]; - String credentials = parts[1]; - - Pattern pattern = Pattern.compile("^Bearer$", Pattern.CASE_INSENSITIVE); - if (pattern.matcher(scheme).matches()) { - token = credentials; - } - return token; - } - protected static String getUserInfo(String token) throws Exception { - - URL url = new URL("https://conveyal.eu.auth0.com/tokeninfo"); - HttpsURLConnection con = (HttpsURLConnection) url.openConnection(); - - //add request header - con.setRequestMethod("POST"); - con.setRequestProperty("User-Agent", "USER_AGENT"); - con.setRequestProperty("Accept-Language", "en-US,en;q=0.5"); - - String urlParameters = "id_token=" + token; - - // Send post request - con.setDoOutput(true); - DataOutputStream wr = new DataOutputStream(con.getOutputStream()); - wr.writeBytes(urlParameters); - wr.flush(); - wr.close(); - - BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream())); - String inputLine; - StringBuffer response = new StringBuffer(); - - while ((inputLine = in.readLine()) != null) { - response.append(inputLine); - } - in.close(); - - return response.toString(); - } - - // ~~~ Utils - - static void redirectToOriginalURL() throws Throwable { - Security.invoke("onAuthenticated"); - String url = flash.get("url"); - if(url == null) { - url = Play.ctxPath + "/"; - } - redirect(url); - } public static class Security extends Controller { diff --git a/app/views/Secure/layout.html b/app/views/Secure/layout.html index 7b7972a6..7a486f37 100755 --- a/app/views/Secure/layout.html +++ b/app/views/Secure/layout.html @@ -1,42 +1,9 @@ - - Login - - - - - - - #{get 'styles' /} - - - #{doLayout /} - - - - - - - #{script 'config.js' /} - #{get 'scripts' /} - - diff --git a/app/views/Secure/login.html b/app/views/Secure/login.html index f95176c9..419f4940 100755 --- a/app/views/Secure/login.html +++ b/app/views/Secure/login.html @@ -1,67 +1,10 @@ #{extends 'Secure/layout.html' /} #{set 'scripts'} + #{script 'pages/auth0.js' /} #{/set} - - - \ No newline at end of file diff --git a/public/javascripts/pages/auth0.js b/public/javascripts/pages/auth0.js index bbe964fd..f130ad9a 100644 --- a/public/javascripts/pages/auth0.js +++ b/public/javascripts/pages/auth0.js @@ -9,49 +9,85 @@ function signin() { var lock = new Auth0Lock('dR7GdOhtI3HFNxfm4HySDL4Ke8uyGfTe', 'conveyal.eu.auth0.com'); + // check if this is an SSO callback + console.log("checking for SSO callback"); + var hash = lock.parseHash(window.location.hash); + console.log("hash", hash); + if (hash && hash.id_token) { + console.log("found sso callback!"); + // the user came back from the login (either SSO or regular login), + // save the token + //localStorage.setItem('userToken', hash.id_token); + + console.log('hash state', hash.state); + loginWithToken(hash.id_token, hash.state || ''); + + // redirect to "targetUrl" if any + //window.location.href = hash.state || ''; + return; + } + + // check if logged in elsewhere via SSO + console.log("checking for SSO signin"); + lock.$auth0.getSSOData(function(err, data) { + if (!err && data.sso) { + console.log("found sso!"); + // there is! redirect to Auth0 for SSO + + console.log("** rT0=" + redirectTo); + lock.$auth0.signin({ + state: redirectTo, + callbackOnLocationHash: true + }); + } else { // assume that we are not logged in + + console.log("showing lock.."); + lock.show(function(err, profile, token) { + if(err) { + console.log(err) + } else { + console.log('login OK!'); + oginWithToken(token, "/"); + // save profile and token to localStorage + /*localStorage.setItem('userToken', token); + console.log('set token', token); + + $.ajax({ + url: '/auth0login', + data: { token : token }, + success: function() { + console.log('auth0login success'); + + console.log('redirecting to main'); + window.location = '/'; + } + })*/ - console.log("showing lock.."); - lock.show(function(err, profile, token) { - if(err) { - console.log(err) - } else { - console.log('login OK!'); - - // save profile and token to localStorage - localStorage.setItem('userToken', token); - console.log('set token', token); - - $.ajax({ - url: '/auth0login', - data: { token : token }, - success: function() { - console.log('auth0login success'); - - console.log('redirecting to main'); - window.location = '/'; } - }) + }, { + container: 'auth0login' + }); + } + }); +} + +function loginWithToken(token, redirectTo) { + // save profile and token to localStorage + localStorage.setItem('userToken', token); + console.log('set token', token); + $.ajax({ + url: '/auth0login', + data: { token : token }, + success: function() { + console.log('auth0login success'); + window.location = redirectTo; } - }, { - container: 'auth0login' }); } window.onload = function(){ console.log('login window.onload'); - // if code exists from callback - if (window.location.search){ - $.ajaxSetup({ - beforeSend(jqXHR) { - jqXHR.setRequestHeader('Authorization', 'Bearer ' + localStorage.getItem('userToken')); - return true; - } - }); - } - else{ - - signin(); - } - + console.log(window.location); + signin(); }; From 8537b70bb70cb84c1515193a1ecb44a6358d1ebc Mon Sep 17 00:00:00 2001 From: David Emory Date: Mon, 8 Feb 2016 17:31:15 -0500 Subject: [PATCH 09/49] fix logout --- app/views/main.html | 9 ++++++- public/javascripts/pages/auth0.js | 45 +------------------------------ 2 files changed, 9 insertions(+), 45 deletions(-) diff --git a/app/views/main.html b/app/views/main.html index d18600a8..f23501f1 100755 --- a/app/views/main.html +++ b/app/views/main.html @@ -132,7 +132,7 @@ @@ -199,6 +199,13 @@ })(GtfsEditor, jQuery); + $("#logoutLink").click(function () { + console.log("logout!"); + localStorage.removeItem('userToken'); + var redirect = window.location.protocol + '//' + window.location.hostname + (window.location.port ? ':' + window.location.port: '') + '/auth0logout'; + console.log(redirect); + window.location = 'https://conveyal.eu.auth0.com/v2/logout?returnTo=' + redirect; + }); $(document).ready(function() { // page init scripts diff --git a/public/javascripts/pages/auth0.js b/public/javascripts/pages/auth0.js index f130ad9a..863b9342 100644 --- a/public/javascripts/pages/auth0.js +++ b/public/javascripts/pages/auth0.js @@ -1,68 +1,29 @@ function signin() { - /*lock.show({ - callbackURL: 'http://localhost:9000/secure/login' - , responseType: 'code' - , authParams: { - scope: 'openid profile' - } - });*/ - var lock = new Auth0Lock('dR7GdOhtI3HFNxfm4HySDL4Ke8uyGfTe', 'conveyal.eu.auth0.com'); // check if this is an SSO callback - console.log("checking for SSO callback"); var hash = lock.parseHash(window.location.hash); - console.log("hash", hash); if (hash && hash.id_token) { - console.log("found sso callback!"); // the user came back from the login (either SSO or regular login), - // save the token - //localStorage.setItem('userToken', hash.id_token); - - console.log('hash state', hash.state); loginWithToken(hash.id_token, hash.state || ''); - - // redirect to "targetUrl" if any - //window.location.href = hash.state || ''; return; } // check if logged in elsewhere via SSO - console.log("checking for SSO signin"); lock.$auth0.getSSOData(function(err, data) { if (!err && data.sso) { - console.log("found sso!"); // there is! redirect to Auth0 for SSO - - console.log("** rT0=" + redirectTo); lock.$auth0.signin({ state: redirectTo, callbackOnLocationHash: true }); } else { // assume that we are not logged in - console.log("showing lock.."); lock.show(function(err, profile, token) { if(err) { console.log(err) } else { - console.log('login OK!'); - oginWithToken(token, "/"); - // save profile and token to localStorage - /*localStorage.setItem('userToken', token); - console.log('set token', token); - - $.ajax({ - url: '/auth0login', - data: { token : token }, - success: function() { - console.log('auth0login success'); - - console.log('redirecting to main'); - window.location = '/'; - } - })*/ - + loginWithToken(token, "/"); } }, { container: 'auth0login' @@ -74,20 +35,16 @@ function signin() { function loginWithToken(token, redirectTo) { // save profile and token to localStorage localStorage.setItem('userToken', token); - console.log('set token', token); $.ajax({ url: '/auth0login', data: { token : token }, success: function() { - console.log('auth0login success'); window.location = redirectTo; } }); } window.onload = function(){ - console.log('login window.onload'); - console.log(window.location); signin(); }; From f99d9fb34e2fcbd9d399bc05f16c078ba6e382c2 Mon Sep 17 00:00:00 2001 From: David Emory Date: Tue, 9 Feb 2016 09:54:59 -0500 Subject: [PATCH 10/49] Nav bar layout --- app/views/main.html | 84 ++++++++++++++++++++++++--------------------- conf/messages.en | 2 +- 2 files changed, 46 insertions(+), 40 deletions(-) diff --git a/app/views/main.html b/app/views/main.html index f23501f1..ab00ccc0 100755 --- a/app/views/main.html +++ b/app/views/main.html @@ -53,47 +53,23 @@
    diff --git a/conf/messages.en b/conf/messages.en index e39715de..9d7f176d 100755 --- a/conf/messages.en +++ b/conf/messages.en @@ -19,7 +19,7 @@ application.name=Transit Database nav-bar.agency=Agency Information nav-bar.home=Home nav-bar.contact=Contact -nav-bar.user-greeting=Welcome %s! +nav-bar.user-greeting=%s! nav-bar.export=Export nav-bar.admin=Admin From c88f5b25d71ec41052571357094eb221f4512e6d Mon Sep 17 00:00:00 2001 From: David Emory Date: Tue, 9 Feb 2016 11:15:26 -0500 Subject: [PATCH 11/49] Fix users link --- app/views/main.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/main.html b/app/views/main.html index ab00ccc0..3ec76ca5 100755 --- a/app/views/main.html +++ b/app/views/main.html @@ -55,7 +55,7 @@ From 2e87abdac342279f0e32fdb0b6f7e4e9a10bfbc4 Mon Sep 17 00:00:00 2001 From: David Emory Date: Tue, 9 Feb 2016 21:50:23 -0500 Subject: [PATCH 12/49] Read project settings from manager when importing feed --- app/views/Application/manageAgencies.html | 11 +-- public/javascripts/views/agency-list-view.js | 75 +++++++++++++------- 2 files changed, 54 insertions(+), 32 deletions(-) diff --git a/app/views/Application/manageAgencies.html b/app/views/Application/manageAgencies.html index b1b23b79..33e3b829 100755 --- a/app/views/Application/manageAgencies.html +++ b/app/views/Application/manageAgencies.html @@ -38,7 +38,7 @@ {{sourceName}} {{agencyId}} - - - {{#latestVersionId}} - - Import Latest GTFS for Editing - - {{/latestVersionId}} + {{#isLoaded}} + Feed already imported. Delete feed from "Imported Feeds" list before re-importing. + {{/isLoaded}} + {{^isLoaded}} + + + {{#latestVersionId}} + + Import Latest GTFS for Editing + + {{/latestVersionId}} + {{/isLoaded}} + {{/agencies}} @@ -760,19 +765,16 @@

    &{'manage.agencies.dialog-title'}

    -

    Agencies Available for Editing

    - - - - - -
    &{'manage.agencies.gtfs-agency-id'}Manager ID&{'manage.agencies.name'}&{'manage.agencies.url'}
    +

    Imported Feeds Ready for Editing

    + + +
    &{'manage.agencies.gtfs-agency-id'}Manager ID&{'manage.agencies.name'}&{'manage.agencies.url'}
    -

    Available Data Manager Agencies

    +

    Data Manager Feeds Available to be Imported

    diff --git a/app/views/main.html b/app/views/main.html index c0a966d4..e5a02775 100755 --- a/app/views/main.html +++ b/app/views/main.html @@ -105,12 +105,14 @@ - #{secure.check 'admin'} + #{secure.check 'manager'}