Skip to content

Instantly share code, notes, and snippets.

@boeric
Last active May 16, 2020
Embed
What would you like to do?
Adding Day Filter to Crossfilter Example

Adding Day Filter to Crossfilter

This visualization is a slightly expanded version of the excellent original Crossfilter demo here

The visualization adds four items to the original example:

  1. Ability to filter on days (for example "Mon, Thu, Fri") or day types (for example "Weekend"), in addition to the existing dimensions/filters
  2. A dataset View, that allows all of the 230K records to be viewed in an interactive canvas element below the visualization
  3. A timer function/object that can be used to determine the performance of various aspects of the the crossfilter operation
  4. Expanded and more detailed comments, perhaps helpful when trying to understand the original example

Note: added comments and code blocks are marked "BoE".

To see the visualization in action, go here. The project on Github is here, and Github Gist here

<!DOCTYPE html>
<meta charset="utf-8">
<!--
This visualization is a slightly expanded version of the excellent crossfilter demo at http://square.github.io/crossfilter/
The viz adds four items to the original example:
- ability to filter on days and day types
- a dataset view, that allows all of the 230K records to be viewed in a canvas element
- a timer function/object that can be used to measure crossfilter performance
- expanded and more detailed comments
Please see the README.md for additional information
Note: added comments and code blocks are marked "BoE"
Author of added features: Bo Ericsson, bo@boe.net
-->
<title>Crossfilter with Day Filter</title>
<style>
body {
font-family: "Helvetica Neue";
/*margin: 40px auto;*/
width: 960px;
min-height: 2000px;
}
#body {
position: relative;
}
footer {
padding: 2em 0 1em 0;
font-size: 12px;
}
h1 {
font-size: 96px;
margin-top: .3em;
margin-bottom: 0;
}
h1 + h2 {
margin-top: 0;
}
h2 {
font-weight: 400;
font-size: 28px;
}
h1, h2 {
text-rendering: optimizeLegibility;
}
#body > p {
line-height: 1.5em;
width: 640px;
text-rendering: optimizeLegibility;
}
#charts {
padding: 10px 0;
}
.chart {
display: inline-block;
height: 151px;
margin-bottom: 20px;
}
.reset {
padding-left: 1em;
font-size: smaller;
color: #ccc;
}
.background.bar {
fill: #ccc;
}
.foreground.bar {
fill: steelblue;
}
.axis path, .axis line {
fill: none;
stroke: #000;
shape-rendering: crispEdges;
}
.axis text {
font: 10px sans-serif;
}
.brush rect.extent {
fill: steelblue;
fill-opacity: .125;
}
.brush .resize path {
fill: #eee;
stroke: #666;
}
#hour-chart {
width: 260px;
}
#delay-chart {
width: 230px;
}
#distance-chart {
width: 420px;
}
#date-chart {
width: 920px;
}
#flight-list {
min-height: 1024px;
}
#flight-list .date,
#flight-list .day {
margin-bottom: .4em;
}
#flight-list .flight {
line-height: 1.5em;
background: #eee;
width: 640px;
margin-bottom: 1px;
}
#flight-list .time {
color: #999;
}
#flight-list .flight div {
display: inline-block;
width: 100px;
}
#flight-list div.distance,
#flight-list div.delay {
width: 160px;
padding-right: 10px;
text-align: right;
}
#flight-list .early {
color: green;
}
aside {
position: absolute;
left: 740px;
font-size: smaller;
width: 220px;
}
fieldset {
margin-bottom: 20px;
border: 1px solid lightgray;
}
fieldset > label,
span > label {
margin-right: 10px;
font-size: 12px;
}
label.selected {
color: black;
}
label.notSelected {
color: lightgray;
}
</style>
<body>
<div id="body">
<div>
<a href="javascript:resetAll()" class="reset" style="margin-left: -10px; margin-bottom: 20px">Reset all</a>
</div>
<div id="charts">
<div id="hour-chart" class="chart">
<div class="title">Time of Day</div>
</div>
<div id="delay-chart" class="chart">
<div class="title">Arrival Delay (min.)</div>
</div>
<div id="distance-chart" class="chart">
<div class="title">Distance (mi.)</div>
</div>
<div id="date-chart" class="chart">
<div class="title">Date</div>
</div>
</div>
<div id="daySelectionDiv"></div>
<div id="canvasDiv"></div>
<aside id="totals"><span id="active">-</span> of <span id="total">-</span> flights selected.</aside>
<div id="lists">
<div id="flight-list" class="list"></div>
</div>
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/crossfilter/1.3.12/crossfilter.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.5.13/d3.min.js"></script>
<script>
"use strict";
// ensure at least 790px height if running in an iframe (bl.ocks)
// http://bl.ocks.org/mbostock/1093025
d3.select(self.frameElement).transition().duration(500).style("height", "790px");
// BoE: add time logger function
function timeLogger() {
if (timeLogger.id == undefined) timeLogger.id = 0;
else ++timeLogger.id;
var events = [];
var initTs = new Date().getTime();
var currTs = initTs;
return {
log: function (event) {
var ts = new Date().getTime();
var duration = ts - currTs;
events.push({ event: event, duration: duration })
currTs = ts;
},
reset: function() {
currTs = new Date().getTime();
},
results: function () {
var results = events.concat([{ event: "total elapsed", duration: new Date().getTime() - initTs }]);
results.forEach(function(d) { console.log(d.event, " --> ", d.duration)})
return results;
}
};
};
// BoE: start two time loggers
var tl = timeLogger();
var tl2 = timeLogger();
// BoE: get the data
d3.csv("xFlights-3m.csv", function(error, flights) {
// BoE: add usage example of time logger
tl2.log("data load");
tl2.results();
// BoE: add array that holds the currently selected "in-filter" selected records
var selected = [];
// Various formatters.
var formatNumber = d3.format(",d"),
formatChange = d3.format("+,d"),
formatDate = d3.time.format("%B %d, %Y"),
formatDateWithDay = d3.time.format("%a %B %d, %Y"),
formatTime = d3.time.format("%I:%M %p");
// A nest operator, for grouping the flight list.
var nestByDate = d3.nest()
.key(function(d) { return d3.time.day(d.date); });
// A little coercion, since the CSV is untyped.
flights.forEach(function(d, i) {
d.index = i;
d.date = parseDate(d.date);
d.delay = +d.delay;
d.distance = +d.distance;
d.selected = false; // BoE add
});
// Create the crossfilter for the relevant dimensions and groups.
// BoE: the "tl" stuff below are adds to the original example, to compute time consumed at various steps
tl.reset();
var flight = crossfilter(flights);
tl.log("crossfilter constructor");
var all = flight.groupAll();
tl.log("flight.groupAll")
// date dimension
tl.reset();
var date = flight.dimension(function(d) { return d.date; }); // date dim
tl.log("date dimension");
var dates = date.group(d3.time.day); // date group
tl.log("date.group")
dates.groupId = "dates";
// hour dimension
tl.reset();
var hour = flight.dimension(function(d) { return d.date.getHours() + d.date.getMinutes() / 60; }); // hour dim
tl.log("hour dimension")
var hours = hour.group(Math.floor); // hour group
tl.log("hour.group()");
hours.groupId = "hours";
// delay dimension
tl.reset();
var delay = flight.dimension(function(d) { return Math.max(-60, Math.min(149, d.delay)); }); // delay dim
tl.log("delay dimension");
var delays = delay.group(function(d) { return Math.floor(d / 10) * 10; }); // delay group
tl.log("delay.group")
delays.groupId = "delays";
// distances dimension
tl.reset()
var distance = flight.dimension(function(d) { return Math.min(1999, d.distance); }); // distance dim
tl.log("distance dimension")
var distances = distance.group(function(d) { return Math.floor(d / 50) * 50; }); // distance group
tl.log("distance.group")
distances.groupId = "distances";
// BoE: add new day dimension
tl.reset();
var dayNumber = flight.dimension(function(d) { return d.date.getDay(); });
tl.log("dayNumber dimension");
var dayNumbers = dayNumber.group(function(d) { return d; });
tl.log("dayNumber.group")
console.log("--", tl.results())
// BoE: add day selection variables
var days = {
mon: { state: true, name: "days", text: "Monday", type: "workDay", dayNumber: 1, order: 0 },
tue: { state: true, name: "days", text: "Tuesday", type: "workDay", dayNumber: 2, order: 1 },
wed: { state: true, name: "days", text: "Wednesday", type: "workDay", dayNumber: 3, order: 2 },
thu: { state: true, name: "days", text: "Thursday", type: "workDay", dayNumber: 4, order: 3 },
fri: { state: true, name: "days", text: "Friday", type: "workDay", dayNumber: 5, order: 4 },
sat: { state: true, name: "days", text: "Saturday", type: "weekendDay", dayNumber: 6, order: 5 },
sun: { state: true, name: "days", text: "Sunday", type: "weekendDay", dayNumber: 0, order: 6 }
},
workDays = Object.keys(days).filter(function(d) { if (days[d].type == "workDay") return true; }).map(function(d) { return d; }),
weekendDays = Object.keys(days).filter(function(d) { if (days[d].type == "weekendDay") return true; }).map(function(d) { return d; }),
dayNumbers = (function() { var obj = {}; Object.keys(days).forEach(function(d) { var key = days[d].dayNumber; var value = d; obj[key] = value }); return obj; })(),
dayTypes = {
weekendDays: { state: false, name: "dayType", text: "Weekend Days", order: 2 },
allDays: { state: true, name: "dayType", text: "All Days", order: 0 },
workDays: { state: false, name: "dayType", text: "Work Days", order: 1 },
someDays: { state: false, name: "dayType", text: "Some Days", order: 3, last: true }
};
/*
// BoE: uncomment this to see the day related variables
console.log("workDays", workDays)
console.log("weekendDays", weekendDays)
console.log("dayNumbers", dayNumbers)
*/
// BoE: prep add radio buttons and checkbox data
var radioData = Object.keys(dayTypes).map(function(d) { dayTypes[d].value = d; return dayTypes[d]; }).sort(function(a, b) { return (a.order > b.order ? 1 : (a.order < b.order) ? -1 : 0) })
var checkboxData = Object.keys(days).map(function(d) { days[d].value = d; return days[d]; }).sort(function(a, b) { return (a.order > b.order ? 1 : (a.order < b.order) ? -1 : 0) })
// BoE: create radio buttons
//http://stackoverflow.com/questions/19302318/radio-buttons-in-d3-how-to-align-text-correctly-and-select-a-default
var fieldset = d3.select("#daySelectionDiv").append("fieldset")
fieldset.append("legend").text("Day of Week");
// BoE: add spans to hold radio buttons
var radioSpan = fieldset.selectAll(".radio")
.data(radioData)
.enter().append("span")
.attr("class", "radio")
.style("margin-right", function(d) { return d.last == true ? "30px" : "0px" });
// BoE: add radio button to each span
radioSpan.append("input")
.attr({
type: "radio",
name: function(d) { return d.name },
})
.property({
checked: function(d) { return d.state },
value: function(d) { return d.value }
});
// BoE: add radio button label
radioSpan.append("label")
.text(function(d) { return d.text });
// BoE: add spans to hold checkboxes
var checkboxSpan = fieldset.selectAll(".checkbox")
.data(checkboxData)
.enter().append("span")
.attr("class", "checkbox")
//.style("margin-right", "10px")
// BoE: add checkbox to each span
checkboxSpan
.append("input")
//.attr("type", "checkbox")
//.attr("name", function(d) { return d.name })
.attr({
type: "checkbox",
name: function(d) { return d.name }
})
//.property("value", function(d) { return d.value })
//.property("checked", function(d) { return d.state })
.property({
value: function(d) { return d.value },
checked: function(d) { return d.state }
})
// BoE: add checkbox label
checkboxSpan
.append("label")
.text(function(d) { return d.text })
// BoE: add radio button event handler
d3.selectAll("input[type=radio][name=dayType]")
.on("change", function() {
var elem = d3.select(this);
var dayType = elem.property("value");
switch (dayType) {
case "allDays":
case "someDays":
workDays.forEach(function(day) { days[day].state = true; })
weekendDays.forEach(function(day) { days[day].state = true; })
break;
case "workDays":
workDays.forEach(function(day) { days[day].state = true; })
weekendDays.forEach(function(day) { days[day].state = false; })
break;
case "weekendDays":
workDays.forEach(function(day) { days[day].state = false; })
weekendDays.forEach(function(day) { days[day].state = true; })
break;
}
updateDaySelection();
renderAll();
});
// BoE: init checkboxes and add event handler
d3.selectAll("input[type=checkbox][name=days]")
.property("checked", function(d, i, a) {
var elem = d3.select(this);
var day = elem.property("value");
//console.log("elem", elem, "day", day, days[day])
return days[day].state;
})
.on("change", function() {
var elem = d3.select(this);
var checked = elem.property("checked");
var day = elem.property("value");
days[day].state = checked;
updateDaySelection();
renderAll();
})
// BoE: update the state of the day selection radio buttons and checkboxes (called after "change" events from those elements)
function updateDaySelection() {
// BoE: update checkboxes
d3.selectAll("input[type=checkbox][name=days]")
.property("checked", function(d, i, a) {
var elem = d3.select(this);
var day = elem.property("value");
return days[day].state;
})
// BoE: process selected days
var workDayCount = workDays.reduce(function(p, c) { return (days[c].state) ? p + 1 : p }, 0);
var weekendDayCount = weekendDays.reduce(function(p, c) { return (days[c].state) ? p + 1 : p }, 0);
// BoE: determine day type
var dayType = "someDays";
if ((workDayCount + weekendDayCount) == 7) dayType = "allDays"
else if (workDayCount == 5 && weekendDayCount == 0) dayType = "workDays"
else if (workDayCount == 0 && weekendDayCount == 2) dayType = "weekendDays"
// BoE: set the selected radio button
d3.selectAll("input[type=radio][value=" + dayType + "]").property("checked", true);
// BoE: create/update day number filter
dayNumber.filter(function(d) { return days[dayNumbers[d]].state; })
}
// BoE: create canvas element that holds one record per canvas pixel
var canvasWidth = d3.select("body").property("clientWidth") - 10,
canvasHeight = Math.ceil(flight.size() / canvasWidth),
canvas,
ctx,
canvasDiv,
currentLabel;
selected = date.top(Infinity);
// BoE: get reference to canvas div
canvasDiv = d3.select("#canvasDiv")
.style("padding", "2px")
.style("width", "100%")
.style("margin-bottom", "20px")
// BoE: add div to hold description of canvas content
canvasDiv
.append("div")
.attr("class", "title")
.style("margin-bottom", "20px")
.style("margin-bottom", "10px")
.html("<span>Dataset View – Each of the " + formatNumber(flight.size()) + " pixels represents a data record (White = Selected, Black = Not Selected, Red = Out of Bounds)</span><br><span style='font-style: italic; font-size: 14px; color: red;'>Move the mouse over the canvas below to see individual data records</span>");
// BoE: add canvas element and mouse handler
canvas = canvasDiv
.append("canvas")
.attr("width", canvasWidth)
.attr("height", canvasHeight)
.style("width", canvasWidth + "px")
.style("height", canvasHeight + "px")
.style("border", "1px solid lightgray")
.style("display", "block")
.style("cursor", "crosshair")
.on("mousemove", function() {
var mouse = d3.mouse(canvas.node()),
x = Math.round(mouse[0]),
y = Math.round(mouse[1]),
index = y * canvasWidth + x;
// BoE: event handler delivers mouse mousemove events outside the canvas sometimes (don't know why);
// therefore, ensure that only valid x and y values are processed
if (x < 0 || x > canvasWidth - 1 || y < 0 || y > canvasHeight -1) {
currentLabel.html("&nbsp;");
return;
}
// then check if the index is out of bounds (the right part of the last row is NOT part of the dataset)
if (index > flight.size() - 1) {
currentLabel.html("&nbsp;");
return;
}
var item = flights[index],
dateText = formatDateWithDay(item.date),
timeText = formatTime(item.date);
var labelText = labelText = "Selected: " + item.selected + ", Date: " + dateText + " " + timeText + ", Delay: ";
labelText += item.delay + ", Distance: " + item.distance + ", Route: " + item.origin + "-->" + item.destination + " (idx: " + index + ")";
currentLabel
.attr("class", function(d) { return item.selected ? "selected" : "notSelected" })
.text(labelText);
})
.on("mouseleave", function() {
currentLabel.html("&nbsp;");
})
// BoE: create label for mousemove
currentLabel = canvasDiv.append("label").html("&nbsp;");
// BoE: get context to canvas elem
ctx = canvas.node().getContext('2d');
// BoE: this code defines the four charts in an array
var charts = [
barChart()
.dimension(hour)
.group(hours)
.x(d3.scale.linear()
.domain([0, 24])
.rangeRound([0, 10 * 24])) // 10 pixels per bar, 240 pixels total
.filter([8, 18]), // added by BoE
barChart()
.dimension(delay)
.group(delays)
.x(d3.scale.linear()
.domain([-60, 150])
.rangeRound([0, 10 * 21])), // 21 delay groups, 210 pixels total
barChart()
.dimension(distance)
.group(distances)
.x(d3.scale.linear()
.domain([0, 2000])
.rangeRound([0, 10 * 40])), // 40 distance groups
barChart()
.dimension(date)
.group(dates)
.round(d3.time.day.round) // ensures whole days
.x(d3.time.scale()
.domain([new Date(2001, 0, 1), new Date(2001, 3, 1)])
.rangeRound([0, 10 * 90]))
.filter([new Date(2001, 1, 1), new Date(2001, 2, 1)])
];
// Given our array of charts, which we assume are in the same order as the
// .chart elements in the DOM, bind the charts to the DOM and render them.
// We also listen to the chart's brush events to update the display.
var chart = d3.selectAll(".chart")
// BoE: the charts array defined above are provided as data to the d3 selection of ".charts"
.data(charts)
.each(function(chart) {
chart
.on("brush", function() {
renderAll();
})
.on("brushend", function() {
renderAll();
});
});
// Render the initial lists.
var list = d3.selectAll(".list")
.data([flightList]);
// Render the total.
d3.selectAll("#total")
.text(formatNumber(flight.size()));
// BoE: initial render
renderAll();
// BoE debug...
var sum = dates.all().reduce(function(p, c, i, a) {
return { value: p.value + c.value };
})
//console.log("sum", sum.value);
// BoE debug...
var groups = [dates, hours, delays, distances]
groups.forEach(function(group) {
var grp = group.group;
var sum = group.all().reduce(function(p, c, i, a) { return { value: p.value + c.value } })
//console.log("sum: ", sum, "grp", grp)
})
// Renders the specified chart or list.
function render(method) {
// BoE: "method" is the "d" value of data binding to chart above, which happens to be the chart function from barChart
d3.select(this).call(method);
}
// Whenever the brush moves, re-rendering everything.
function renderAll() {
// BoE: uncomment the next lines to see the what's being rendered
//console.log("renderAll", chart[0].length, list[0].length, all.value())
//chart.each(function(d, i) { console.log("this", this, "d", d, "i", i) })
chart.each(render); // render is called with this set to div and d set to the chart function from barChart
list.each(render);
d3.select("#active").text(formatNumber(all.value()));
var tl3 = timeLogger();
// BoE: update the "selected" array, which holds the currently selected (in-filter) items
selected = date.top(Infinity);
tl3.log("date.top(Infinity)")
// BoE: set the selected status in "flights" ("flights" is the data source)
flights.forEach(function(d) { d.selected = false; }); // first clear all
selected.forEach(function(d) { flights[d.index].selected = true; }) // then set some
// BoE: clear canvas
tl3.reset();
ctx.fillStyle = "rgb(0,0,0)";
ctx.fillRect (0, 0, canvasWidth, canvasHeight);
tl3.log("filling canvas background")
// BoE: add red out of bounds pixels
tl3.reset();
var xSpan = (canvasWidth * canvasHeight) % flight.size();
var x = canvasWidth - xSpan;
var y = canvasHeight - 1;
ctx.fillStyle = "rgb(255, 0, 0)";
ctx.fillRect(x, y, xSpan, 1);
tl3.log("setting red pixels")
// BoE add: draw white pixel for each active element
tl3.reset();
ctx.fillStyle = "rgb(255,255,255)";
selected.forEach(function(d) {
var x = d.index % canvasWidth;
var y = Math.floor(d.index / canvasWidth)
ctx.fillRect(x, y, 1, 1 );
})
tl3.log("setting canvas pixels");
tl3.results();
}
// Like d3.time.format, but faster.
function parseDate(d) {
return new Date(2001,
d.substring(0, 2) - 1,
d.substring(2, 4),
d.substring(4, 6),
d.substring(6, 8));
}
// BoE: this (window.resetAll) isn't used, therefore
// repurposed this to reset all filters by javascript triggered by a new "a" tag in the DOM
window.resetAll = function() {
var filters = [null, null, null, null];
filters.forEach(function(d, i) { charts[i].filter(d); });
Object.keys(days).forEach(function(d) { days[d].state = true });
updateDaySelection();
renderAll();
};
// BoE: resets the filter for a particular dimension
window.reset = function(i) {
charts[i].filter(null);
renderAll();
};
// BoE: this looks really wasteful – every cell is a div, why not just use a html5 table?
function flightList(div) {
var flightsByDate = nestByDate.entries(date.top(10));
div.each(function() {
var date = d3.select(this).selectAll(".date")
.data(flightsByDate, function(d) { return d.key; });
date.enter().append("div")
.attr("class", "date")
.append("div")
.attr("class", "day")
.text(function(d) { return formatDate(d.values[0].date); });
date.exit().remove();
var flight = date.order().selectAll(".flight")
.data(function(d) { return d.values; }, function(d) { return d.index; });
var flightEnter = flight.enter().append("div")
.attr("class", "flight");
flightEnter.append("div")
.attr("class", "time")
.text(function(d) { return formatTime(d.date); });
flightEnter.append("div")
.attr("class", "origin")
.text(function(d) { return d.origin; });
flightEnter.append("div")
.attr("class", "destination")
.text(function(d) { return d.destination; });
flightEnter.append("div")
.attr("class", "distance")
.text(function(d) { return formatNumber(d.distance) + " mi."; });
flightEnter.append("div")
.attr("class", "delay")
.classed("early", function(d) { return d.delay < 0; })
.text(function(d) { return formatChange(d.delay) + " min."; });
flight.exit().remove();
flight.order();
});
}
function barChart() {
// BoE: barChart.id is shared by all instances of barChart's chart, effectively an instance counter
if (!barChart.id) barChart.id = 0;
var margin = {top: 10, right: 10, bottom: 20, left: 10},
x,
y = d3.scale.linear().range([100, 0]), // 100 pixels height
id = barChart.id++,
axis = d3.svg.axis().orient("bottom"),
brush = d3.svg.brush(),
brushDirty,
dimension,
group,
round,
yMax;
function chart(div) {
/*
// BoE: uncomment this to see how the domain and ranges change as the filters are modified
console.log("margin", margin);
console.log("x.range()", x.range())
console.log("x.domain()", x.domain())
console.log("y.range()", y.range())
console.log("y.domain()", y.domain())
*/
var width = x.range()[1],
height = y.range()[0];
yMax = 0;
y.domain([0, yMax == 0 ? group.top(1)[0].value : yMax]); // set y domain to max value in this group
// BoE: why is this done using "each"? There is only one div per chart; therefore the construct "div.each" will
// only be executed once
div.each(function() {
var div = d3.select(this),
g = div.select("g");
// Create the skeletal chart.
// BoE: this is only executed once, at init, when there is nothing in the group
if (g.empty()) {
div.select(".title").append("a")
.attr("href", "javascript:reset(" + id + ")")
.attr("class", "reset")
.text("reset")
.style("display", "none");
g = div.append("svg")
.attr("width", width + margin.left + margin.right)
.attr("height", height + margin.top + margin.bottom)
.append("g")
.attr("transform", "translate(" + margin.left + "," + margin.top + ")");
// BoE: reset the clip path to full width
g.append("clipPath")
.attr("id", "clip-" + id)
.append("rect")
.attr("width", width)
.attr("height", height);
// BoE: generate two paths, one background, one foreground
g.selectAll(".bar")
.data(["background", "foreground"])
.enter().append("path")
.attr("class", function(d) { return d + " bar"; })
// assign all the data in the group to the path
.datum(group.all());
// BoE: assign the clip path to the foreground bars
g.selectAll(".foreground.bar")
.attr("clip-path", "url(#clip-" + id + ")");
// BoE: add the x-axis to the svg group
g.append("g")
.attr("class", "axis")
.attr("transform", "translate(0," + height + ")")
.call(axis);
// Initialize the brush component with pretty resize handles.
var gBrush = g.append("g").attr("class", "brush").call(brush);
gBrush.selectAll("rect").attr("height", height);
gBrush.selectAll(".resize").append("path").attr("d", resizePath);
}
// Only redraw the brush if set externally.
// BoE: at init, the **Date** chart has an externally set brush;
// in this extended example, the **Time of Day** chart also has an externally set brush
if (brushDirty) {
brushDirty = false;
g.selectAll(".brush").call(brush);
div.select(".title a").style("display", brush.empty() ? "none" : null);
if (brush.empty()) {
g.selectAll("#clip-" + id + " rect")
.attr("x", 0)
.attr("width", width);
} else {
var extent = brush.extent();
g.selectAll("#clip-" + id + " rect")
.attr("x", x(extent[0]))
.attr("width", x(extent[1]) - x(extent[0]));
}
}
// BoE: this sets the **d** attribute on the path
g.selectAll(".bar").attr("d", barPath);
});
// BoE: the barPath function is called as usual with the d, i, a arguments
// (d being called **groups** here, the other args not used)
function barPath(groups) {
var path = [],
i = -1,
n = groups.length,
d;
while (++i < n) {
d = groups[i];
path.push("M", x(d.key), ",", height, "V", y(d.value), "h9V", height);
}
// BoE: uncomment the next line to see the neat path array that has been generated
//console.log("path", path)
return path.join("");
}
// BoE: the resizePath function defines the look of the brush "handles" on the left and right side of the brush
function resizePath(d) {
var e = +(d == "e"),
x = e ? 1 : -1,
y = height / 3;
return "M" + (.5 * x) + "," + y
+ "A6,6 0 0 " + e + " " + (6.5 * x) + "," + (y + 6)
+ "V" + (2 * y - 6)
+ "A6,6 0 0 " + e + " " + (.5 * x) + "," + (2 * y)
+ "Z"
+ "M" + (2.5 * x) + "," + (y + 8)
+ "V" + (2 * y - 8)
+ "M" + (4.5 * x) + "," + (y + 8)
+ "V" + (2 * y - 8);
}
}
// BoE: the .chart below threw me for a loop at first; turns out the app is registering multiple brush handlers;
// see above for the first instance of brush handlers; to allow multiple handlers to be registered on the same event,
// d3 requires a "namespace identifier" on the subsequent event handlers; here "chart" is used as a namespace indicator
// alse see: http://stackoverflow.com/questions/32459420/what-does-d3-brush-onbrush-chat-means
brush.on("brushstart.chart", function() {
var div = d3.select(this.parentNode.parentNode.parentNode);
div.select(".title a").style("display", null);
});
// BoE: uncomment the next like to see another brush handler in action using a dummy namespace
//brush.on("brush.whatever", function() { console.log("brush.whatever") })
// BoE: this "brush.chart" event handler fires before the "brush" handler fires above;
// this particular handler just sets the filter;
// the other handler updates all charts
brush.on("brush.chart", function() {
var g = d3.select(this.parentNode),
extent = brush.extent(); // extent contains the domain (x.invert) of the brush
// BoE: handle rounding of extent (allow only integers)
if (round) g.select(".brush")
.call(brush.extent(extent = extent.map(round)))
.selectAll(".resize")
.style("display", null); // remove the resize a element
g.select("#clip-" + id + " rect")
.attr("x", x(extent[0])) // set clip rect x pos
.attr("width", x(extent[1]) - x(extent[0])); // set clip rect width
// BoE: set a new filter range
dimension.filterRange(extent);
});
brush.on("brushend.chart", function() {
if (brush.empty()) {
// BoE: if brush is empty, invalidate the clip rect (show all foreground bars), and remove the dimension filter
var div = d3.select(this.parentNode.parentNode.parentNode);
// BoE: remove the reset "a" element
div.select(".title a").style("display", "none");
// BoE: invalidate the clip rect (thereby show all foreground blue bars)
div.select("#clip-" + id + " rect")
.attr("x", null) // remove the x attribute which will render the clipRect invalid
.attr("width", "100%");
// BoE: remove the dimension's filter
dimension.filterAll();
}
});
chart.margin = function(_) {
if (!arguments.length) return margin;
margin = _;
return chart;
};
chart.x = function(_) {
if (!arguments.length) return x;
x = _;
axis.scale(x);
brush.x(x);
return chart;
};
chart.y = function(_) {
if (!arguments.length) return y;
y = _;
return chart;
};
chart.dimension = function(_) {
//console.log("chart.dimension..." + _)
if (!arguments.length) return dimension;
dimension = _;
return chart;
};
chart.filter = function(_) {
if (_) {
brush.extent(_);
dimension.filterRange(_);
} else {
brush.clear();
dimension.filterAll();
}
brushDirty = true;
return chart;
};
chart.group = function(_) {
if (!arguments.length) return group;
group = _;
// added by BoE
yMax = group.top(1)[0].value;
return chart;
};
chart.round = function(_) {
if (!arguments.length) return round;
round = _;
return chart;
};
// BoE: the d3 rebind function moves the "on" method from the "brush" object/function to the "chart" object/function;
// it then returns the "chart" function/object
return d3.rebind(chart, brush, "on");
}
});
</script>
</body>
</html>
We can't make this file beautiful and searchable because it's too large.
date,delay,distance,origin,destination
01010001,14,405,MCI,MDW
01010530,-11,370,LAX,PHX
01010540,5,389,ONT,SMF
01010600,-5,337,OAK,LAX
01010600,3,303,MSY,HOU
01010605,5,236,LAS,LAX
01010610,-4,405,MDW,MCI
01010615,-2,188,RNO,SJC
01010615,0,197,FLL,TPA
01010615,0,399,SEA,BOI
01010615,5,562,ELP,DAL
01010620,-5,358,SMF,BUR
01010620,0,491,BNA,MCI
01010625,-6,361,ONT,OAK
01010625,0,313,MCI,OKC
01010625,1,271,MDW,SDF
01010625,5,689,SLC,SEA
01010630,-1,487,TPA,MSY
01010630,-10,399,BOI,SEA
01010630,-15,621,SJC,PHX
01010630,-2,361,OAK,ONT
01010630,-3,220,ISP,BWI
01010630,-3,397,SMF,LAS
01010630,-8,251,MDW,STL
01010630,-8,417,SJC,SAN
01010630,1,682,BWI,BHM
01010630,10,370,PHX,LAX
01010630,15,177,BHM,BNA
01010630,2,562,DAL,ELP
01010635,0,453,HOU,TUL
01010635,1,601,RNO,PHX
01010635,2,670,BNA,HOU
01010635,9,677,ABQ,LAX
01010640,-21,777,BDL,MDW
01010640,-8,197,ONT,LAS
01010640,3,833,OKC,PHX
01010640,5,495,SDF,BWI
01010645,-14,423,MDW,OMA
01010645,-14,605,SEA,SMF
01010645,-19,838,MHT,MDW
01010645,-5,223,LAS,BUR
01010645,-5,296,SJC,BUR
01010645,5,405,MCI,MDW
01010645,9,460,TPA,BHM
01010647,17,293,LBB,DAL
01010650,20,570,BHM,HOU
01010650,7,588,BWI,BNA
01010653,16,590,SLC,LAX
01010655,-19,1797,LAX,BNA
01010655,-28,1864,BWI,SLC
01010700,-10,1481,PDX,MCI
01010700,-10,361,OAK,ONT
01010700,-28,1235,LAS,HOU
01010700,-3,256,LAS,PHX
01010700,-3,588,SLC,OAK
01010700,-4,423,OMA,MDW
01010700,-4,612,TPA,BNA
01010700,-5,1090,AUS,LAS
01010700,-5,296,BUR,SJC
01010700,-5,369,PHX,BUR
01010700,-5,407,OAK,LAS
01010700,-6,325,OAK,BUR
01010700,-7,236,LAS,LAX
01010700,0,223,BUR,LAS
01010700,0,303,MSY,HOU
01010700,1,358,BUR,SMF
01010700,12,550,MCO,MSY
01010700,17,284,MDW,CMH
01010700,4,307,CLE,MDW
01010704,-2,457,DTW,BNA
01010705,-1,471,MSY,BNA
01010705,-10,443,RDU,BNA
01010705,-15,677,LAX,ABQ
01010705,-18,1246,HOU,BWI
01010705,-5,188,SJC,RNO
01010705,-9,386,SJC,LAS
01010705,0,588,OAK,SLC
01010705,13,365,JAX,BHM
01010705,4,1072,MCO,MCI
01010705,7,967,MCI,BWI
01010706,-5,303,HOU,MSY
01010708,-14,765,ISP,MDW
01010710,-15,1959,OAK,BNA
01010710,-26,2277,PVD,PHX
01010710,-31,1599,SAN,MSY
01010710,-8,251,STL,MDW
01010710,0,1506,SDF,PHX
01010710,2,842,TPA,BWI
01010715,-12,515,IND,BWI
01010715,-13,1076,TUL,LAS
01010715,-2,447,SFO,SAN
01010715,-25,2106,BWI,LAS
01010715,-3,405,MCI,MDW
01010715,-3,546,GEG,SLC
01010715,-7,386,LAS,SJC
01010715,24,938,MHT,BNA
01010720,-13,1489,OAK,MCI
01010720,-20,632,RDU,MDW
01010720,-5,446,OAK,SAN
01010720,-8,762,PDX,LAS
01010720,13,479,SMF,PDX
01010725,-12,852,BDL,BNA
01010725,-8,935,PHX,TUL
01010725,4,294,MAF,AUS
01010730,-2,192,SAT,HOU
01010730,-3,1591,IND,LAS
01010730,-3,284,CMH,MDW
01010730,-7,288,ALB,BWI
01010730,0,308,SJC,LAX
01010730,25,928,TPA,AUS
01010730,4,410,BHM,STL
01010730,6,673,FLL,MSY
01010730,8,448,CLE,BNA
01010733,-17,967,BWI,MCI
01010733,-3,281,BUF,BWI
01010735,-10,229,IND,STL
01010735,-13,251,MDW,STL
01010735,-25,440,DTW,STL
01010735,-3,181,OKC,DAL
01010735,-5,1497,TPA,ABQ
01010735,-5,304,SAN,PHX
01010735,23,377,MHT,BWI
01010735,6,1011,BUF,MCO
01010735,8,345,RNO,LAS
01010738,5,370,LAX,PHX
01010740,-10,303,HOU,MSY
01010740,-11,718,MCI,ABQ
01010740,-15,325,BUR,OAK
01010740,-15,793,FLL,BNA
01010740,-17,1448,PHX,BNA
01010740,-2,294,AUS,MAF
01010740,-2,347,ELP,PHX
01010740,-25,1521,MDW,LAS
01010740,-6,587,TPA,RDU
01010740,-7,229,MDW,DTW
01010740,-7,351,TUL,STL
01010740,0,248,SAT,DAL
01010744,10,308,LAX,SJC
01010745,-2,223,BUR,LAS
01010745,-6,904,RDU,MCI
01010745,0,283,BDL,BWI
01010745,2,507,PHX,SLC
01010745,5,487,TPA,MSY
01010745,9,395,BNA,MDW
01010750,-12,646,PHX,OAK
01010750,-2,256,PHX,LAS
01010750,-5,367,TUS,SAN
01010750,-8,351,STL,TUL
01010750,-8,369,BUR,PHX
01010750,4,1455,BHM,PHX
01010753,-5,1363,LAX,MCI
01010755,-10,419,OKC,HOU
01010755,19,284,MDW,CMH
01010755,4,587,MCO,JAN
01010755,6,321,BHM,MSY
01010757,-2,1814,LAX,IND
01010757,-3,689,SEA,SLC
01010800,-10,1162,RDU,AUS
01010800,-10,337,LAX,OAK
01010800,-10,671,SEA,OAK
01010800,-10,989,MDW,MCO
01010800,-11,237,STL,MCI
01010800,-13,843,PHX,SAT
01010800,-13,998,MSY,BWI
01010800,-19,787,MCO,BWI
01010800,-3,1073,ALB,MCO
01010800,-3,197,LAS,ONT
01010800,-3,407,OAK,LAS
01010800,-4,239,HOU,DAL
01010800,-4,337,OAK,LAX
01010800,-5,325,ONT,PHX
01010800,-5,462,STL,OKC
01010800,-6,1037,PHX,OMA
01010800,-6,972,ISP,MCO
01010800,0,342,SJC,SNA
01010800,0,358,SMF,BUR
01010800,0,612,BNA,TPA
01010800,12,358,BUR,SMF
01010800,13,389,ONT,SMF
01010800,9,1797,BNA,LAX
01010800,9,437,MSY,DAL
01010805,-1,304,PHX,SAN
01010805,-1,345,LAS,RNO
01010805,-13,989,MCO,MDW
01010805,-14,727,TPA,SDF
01010805,-2,325,BUR,OAK
01010805,-4,314,BWI,CLE
01010805,-7,405,MDW,MCI
01010805,-8,822,SAT,BNA
01010805,25,1448,BNA,PHX
01010805,7,457,BNA,DTW
01010807,10,189,DAL,AUS
01010810,-12,447,SAN,SFO
01010810,-7,197,ONT,LAS
01010810,0,714,LAX,ELP
01010810,5,484,JAX,BNA
01010815,-10,223,LAS,BUR
01010815,-17,1999,PHX,BWI
01010815,-24,1751,SAN,BNA
01010815,-3,677,LAX,ABQ
01010815,-5,386,LAS,SJC
01010815,-7,1140,MCI,LAS
01010815,5,223,TUL,MCI
01010815,8,1588,BNA,LAS
01010815,8,321,MSY,BHM
01010817,13,303,MSY,HOU
01010820,-14,1262,STL,PHX
01010820,-3,1020,HOU,PHX
01010820,-31,1234,PVD,MCI
01010820,-5,422,RNO,SLC
01010820,-5,550,MSY,MCO
01010820,-9,197,FLL,TPA
01010820,8,405,MCI,MDW
01010821,10,236,LAX,LAS
01010823,-7,646,OAK,PHX
01010825,-2,188,SJC,RNO
01010825,-3,296,BUR,SJC
01010825,-5,1044,MCI,PHX
01010825,-7,304,SAN,PHX
01010825,5,1588,LAS,BNA
01010825,5,368,LAS,SLC
01010830,-10,440,STL,DTW
01010830,-2,580,ABQ,DAL
01010830,-5,802,MCO,CMH
01010830,-7,239,DAL,HOU
01010830,-7,255,RDU,BWI
01010830,-8,370,PHX,LAX
01010830,0,370,LAX,PHX
01010830,0,446,SAN,OAK
01010830,31,758,AMA,LAS
01010835,-1,291,BOI,SLC
01010835,-13,347,PHX,ELP
01010835,-14,1099,OMA,LAS
01010835,-14,405,MDW,MCI
01010835,-2,325,OAK,BUR
01010835,-3,611,MDW,BWI
01010835,-8,325,PHX,ONT
01010835,0,480,SAN,SMF
01010835,5,605,SMF,SEA
01010838,-3,888,BWI,JAN
01010838,14,937,HOU,MDW
01010840,-11,1444,MDW,PHX
01010840,-12,303,HOU,MSY
01010840,-22,1236,MHT,MCI
01010840,-5,180,RNO,OAK
01010840,-6,479,PDX,SMF
01010840,6,1142,MHT,MCO
01010845,-10,1624,LAS,SDF
01010845,-10,777,MDW,BDL
01010845,-15,217,DAL,IAH
01010845,-17,925,FLL,BWI
01010845,-4,178,FLL,MCO
01010845,-5,1090,LAS,AUS
01010845,-5,148,AUS,HOU
01010845,-7,296,STL,LIT
01010845,0,279,GEG,PDX
01010845,0,588,OAK,SLC
01010845,1,323,SDF,BHM
01010845,14,1407,BWI,SAT
01010845,2,889,ABQ,OAK
01010845,27,368,SLC,LAS
01010846,2,397,LAS,SMF
01010848,7,423,MDW,OMA
01010850,-20,621,PHX,SJC
01010850,-8,236,LAX,LAS
01010850,-8,520,BOI,LAS
01010850,0,453,HOU,TUL
01010850,10,325,ONT,PHX
01010850,18,765,MDW,ISP
01010855,3,405,MDW,MCI
01010855,4,838,MDW,MHT
01010855,7,220,BWI,ISP
01010900,-10,337,LAX,OAK
01010900,-11,256,PHX,LAS
01010900,-12,544,MDW,LIT
01010900,-3,480,SMF,SAN
01010900,-4,246,MAF,ELP
01010900,-4,288,BWI,ALB
01010900,-5,236,LAS,LAX
01010900,-8,628,SAN,ABQ
01010900,0,1034,ISP,TPA
01010900,0,389,SMF,ONT
01010900,13,484,BNA,JAX
01010900,22,181,DAL,OKC
01010900,42,1999,BWI,PHX
01010900,5,370,PHX,LAX
01010900,8,303,MSY,HOU
01010903,3,697,SJC,SEA
01010903,5,395,MDW,BNA
01010904,-5,1069,LAS,SAT
01010905,-1,148,HOU,AUS
01010905,-1,254,STL,SDF
01010905,-12,628,ABQ,SAN
01010905,-2,192,HOU,SAT
01010905,-22,687,STL,HOU
01010905,-26,697,SEA,SJC
01010905,-5,487,TPA,MSY
01010905,6,759,HOU,ABQ
01010908,3,370,LAX,PHX
01010909,31,236,LAS,LAX
01010910,-1,1442,SMF,MCI
01010910,-10,487,MSY,TPA
01010910,-18,304,PHX,SAN
01010910,-2,304,SAN,PHX
01010910,-2,371,OAK,SNA
01010910,-23,1671,MSY,LAX
01010910,-4,347,ELP,PHX
01010910,-8,361,ONT,OAK
01010910,0,1235,HOU,LAS
01010913,0,444,PDX,RNO
01010913,0,451,IND,MCI
01010913,12,666,JAN,MDW
01010915,-10,308,LAX,SJC
01010915,-4,189,AUS,DAL
01010915,-5,276,HRL,HOU
01010915,-5,333,ONT,SJC
01010915,-7,410,STL,BHM
01010915,-8,651,SFO,PHX
01010915,-9,440,DTW,STL
01010915,4,296,DAL,LIT
01010918,9,570,BHM,HOU
01010920,-1,283,BDL,BWI
01010920,-2,325,ONT,PHX
01010920,-5,446,OAK,SAN
01010920,-7,588,BWI,BNA
01010920,0,407,OAK,LAS
01010920,2,543,OAK,PDX
01010922,4,937,MDW,HOU
01010924,14,2106,LAS,BWI
01010925,-1,180,OAK,RNO
01010925,-13,281,BWI,BUF
01010925,-17,1489,MCI,SEA
01010925,-23,1073,MCO,PVD
01010925,-27,1977,BNA,SEA
01010925,-4,237,TUL,DAL
01010925,-7,288,ALB,BWI
01010925,3,303,MSY,HOU
01010925,4,358,SMF,BUR
01010925,5,487,ABQ,LAS
01010930,-10,325,BUR,OAK
01010930,-12,239,HOU,DAL
01010930,-16,1137,TPA,PVD
01010930,-2,1044,MCI,PHX
01010930,-2,1751,BNA,ONT
01010930,-5,239,DAL,HOU
01010930,-5,370,PHX,LAX
01010930,-6,1140,LAS,MCI
01010930,-8,369,BUR,PHX
01010930,-9,670,HOU,BNA
01010930,0,281,BUF,BWI
01010930,12,314,CLE,BWI
01010930,2,935,TUL,PHX
01010930,3,405,MCI,MDW
01010930,8,580,DAL,ABQ
01010933,13,283,BWI,BDL
01010935,-4,762,LAS,PDX
01010935,-5,236,LAX,LAS
01010935,0,682,BHM,BWI
01010935,3,471,BNA,MSY
01010935,5,371,SNA,OAK
01010937,13,829,CMH,TPA
01010938,-4,671,OAK,SEA
01010938,8,1242,AUS,LAX
01010939,18,513,JAX,MSY
01010939,36,1751,BNA,SAN
01010940,-10,328,PVD,BWI
01010940,-3,223,LAS,BUR
01010940,-6,307,CLE,MDW
01010940,-7,1772,LAS,CMH
01010940,0,325,OAK,BUR
01010940,0,612,TPA,BNA
01010941,-3,188,RNO,SJC
01010942,16,632,MDW,RDU
01010945,-10,303,HOU,MSY
01010945,-18,1301,PHX,MSY
01010945,-2,296,SJC,BUR
01010945,-21,632,RDU,MDW
01010945,-25,1489,MCI,OAK
01010945,-5,1479,MCI,SJC
01010945,-5,180,RNO,OAK
01010945,-8,419,OKC,HOU
01010945,0,293,DAL,LBB
01010945,10,291,SLC,BOI
01010945,4,663,BWI,JAX
01010945,7,907,BNA,PVD
01010946,8,1137,PVD,TPA
01010947,6,319,MAF,DAL
01010948,27,479,SMF,PDX
01010948,3,1301,MSY,PHX
01010948,7,590,LAX,SLC
01010950,-10,325,PHX,ONT
01010950,-12,1588,LAS,BNA
01010950,-12,601,PHX,RNO
01010950,-21,1448,PHX,BNA
01010950,-28,1618,LAS,BHM
01010950,-5,304,SAN,PHX
01010950,-5,462,OKC,STL
01010950,-5,520,LAS,BOI
01010950,6,324,AMA,DAL
01010953,18,687,HOU,STL
01010954,4,223,MCI,TUL
01010955,-15,714,ELP,LAX
01010955,-19,1363,MCI,LAX
01010955,-3,1107,PHX,SEA
01010955,-7,446,SAN,OAK
01010955,-7,647,SMF,PHX
01010955,-7,775,LAS,LBB
01010955,0,842,BWI,TPA
01010955,1,828,MCO,IND
01010955,77,279,PDX,GEG
01010956,13,515,BWI,IND
01011000,-1,687,HOU,STL
01011000,-10,605,SEA,SMF
01011000,-10,677,ABQ,LAX
01011000,-11,513,MSY,JAX
01011000,-15,337,OAK,LAX
01011000,-2,223,BUR,LAS
01011000,-5,1521,LAS,MDW
01011000,-5,397,LAS,SMF
01011000,-6,369,PHX,BUR
01011000,0,229,MDW,DTW
01011000,0,236,LAS,LAX
01011000,10,1501,MSY,LAS
01011000,5,727,SDF,TPA
01011000,9,888,JAN,BWI
01011003,18,630,SLC,PDX
01011005,-1,229,DTW,MDW
01011005,-5,197,ONT,LAS
01011005,-7,584,ELP,LAS
01011005,-9,217,IAH,DAL
01011006,-12,1670,BWI,ABQ
01011008,16,256,LAS,PHX
01011010,-1,507,SLC,PHX
01011010,-2,422,SLC,RNO
01011010,-21,569,PDX,SJC
01011010,-3,342,SJC,SNA
01011010,-3,361,OAK,ONT
01011010,-5,636,SAN,ELP
01011010,-6,251,MDW,STL
01011010,-6,386,SJC,LAS
01011010,0,341,AUS,LBB
01011010,18,588,SLC,OAK
01011010,2,303,MSY,HOU
01011015,-5,178,FLL,MCO
01011015,-5,373,LAX,SMF
01011015,-6,528,AUS,ELP
01011015,-8,1262,STL,PHX
01011015,12,1040,MCO,SAT
01011015,5,417,SJC,SAN
01011015,8,370,LAX,PHX
01011016,6,220,ISP,BWI
01011016,7,237,MCI,STL
01011017,12,181,OKC,DAL
01011020,-15,1140,MCI,LAS
01011020,-20,1552,ABQ,MCO
01011020,-3,833,PHX,OKC
01011020,-6,255,RDU,BWI
01011020,-6,389,ONT,SMF
01011020,-8,1069,SAT,LAS
01011020,16,370,PHX,LAX
01011020,2,1099,LAS,OMA
01011020,45,1262,PHX,STL
01011021,19,337,LAX,OAK
01011024,-2,1037,OMA,PHX
01011025,-1,237,DAL,TUL
01011025,-10,889,OAK,ABQ
01011025,-2,397,SMF,LAS
01011025,-2,480,SAN,SMF
01011025,-3,389,SMF,ONT
01011025,-5,288,ALB,BWI
01011025,-5,328,PHX,ABQ
01011025,-8,359,JAN,HOU
01011028,3,308,SJC,LAX
01011029,15,802,CMH,MCO
01011030,-13,708,IND,MSY
01011030,-2,239,HOU,DAL
01011030,-3,337,OAK,LAX
01011030,-4,180,RNO,OAK
01011030,-5,271,SDF,MDW
01011030,-7,1444,MDW,PHX
01011030,-8,239,DAL,HOU
01011030,-9,281,BWI,BUF
01011030,-9,370,LAX,PHX
01011030,0,370,PHX,LAX
01011030,1,223,TUL,MCI
01011030,14,564,SEA,RNO
01011030,5,1044,PHX,MCI
01011030,5,258,LAS,SAN
01011030,8,296,LIT,STL
01011035,-10,1262,PHX,STL
01011035,-6,325,ONT,PHX
01011035,2,296,LIT,DAL
01011035,7,480,SMF,SAN
01011039,5,337,LAX,OAK
01011040,-1,188,SJC,RNO
01011040,-12,313,MCI,OKC
01011040,-21,1011,MCO,BUF
01011040,-4,325,OAK,BUR
01011040,-6,328,ABQ,PHX
01011040,-7,588,BNA,BWI
01011040,2,447,SFO,SAN
01011040,5,325,PHX,ONT
01011040,8,345,RNO,LAS
01011042,-5,236,LAX,LAS
01011044,-14,1180,ABQ,SEA
01011045,-20,1164,AUS,SAN
01011045,-3,258,SAN,LAS
01011045,-3,345,LAS,RNO
01011045,-5,248,DAL,SAT
01011045,0,181,DAL,OKC
01011045,14,446,OAK,SAN
01011045,3,1588,BNA,LAS
01011045,5,543,OAK,PDX
01011047,-4,325,BUR,OAK
01011048,24,303,MSY,HOU
01011048,4,612,BNA,TPA
01011050,-2,395,BNA,MDW
01011050,-3,621,SJC,PHX
01011050,0,562,ELP,DAL
01011050,18,580,ABQ,DAL
01011050,7,304,PHX,SAN
01011052,8,192,HOU,SAT
01011052,8,223,LAS,BUR
01011055,-10,796,LAS,MAF
01011055,-2,342,SNA,SJC
01011055,-3,296,BUR,SJC
01011055,-5,256,PHX,LAS
01011055,-5,460,BHM,TPA
01011055,0,288,BWI,ALB
01011055,0,866,SEA,LAS
01011055,5,925,BWI,FLL
01011055,9,223,BUR,LAS
01011057,-9,440,DTW,STL
01011057,6,333,SJC,ONT
01011058,-2,229,DTW,MDW
01011100,-10,405,MDW,MCI
01011100,-13,337,OAK,LAX
01011100,-23,451,TUS,LAX
01011100,-5,148,HOU,AUS
01011100,-5,487,ABQ,LAS
01011100,-5,671,OAK,SEA
01011100,-7,239,HOU,DAL
01011100,-7,284,CMH,MDW
01011100,-7,393,LIT,HOU
01011100,0,332,MAF,ABQ
01011100,11,224,GEG,SEA
01011100,19,1050,BDL,MCO
01011101,-5,180,RNO,OAK
01011104,10,714,LAX,ELP
01011104,4,453,TUL,HOU
01011104,5,493,SLC,ABQ
01011105,-1,321,MSY,BHM
01011105,-3,347,PHX,ELP
01011105,-4,447,SAN,SFO
01011105,-5,197,LAS,ONT
01011105,-5,564,RNO,SEA
01011105,-7,369,BUR,PHX
01011105,0,341,LBB,AUS
01011105,5,636,ELP,SAN
01011106,-29,1912,BUF,PHX
01011107,29,919,SLC,MCI
01011110,-12,251,MDW,STL
01011110,-2,612,TPA,BNA
01011110,-4,507,SLC,PHX
01011110,-6,1020,PHX,HOU
01011110,0,337,LAX,OAK
01011110,3,256,LAS,PHX
01011110,4,287,GEG,BOI
01011110,50,291,BOI,SLC
01011110,69,723,GEG,OAK
01011113,12,1073,PVD,MCO
01011113,6,351,TUL,STL
01011115,-1,562,DAL,ELP
01011115,-2,687,HOU,STL
01011115,-5,677,HOU,ELP
01011115,-8,451,LAX,TUS
01011115,12,189,DAL,AUS
01011115,14,239,DAL,HOU
01011115,18,325,OAK,BUR
01011115,30,787,BWI,MCO
01011117,5,859,ISP,JAX
01011119,-5,651,PHX,SFO
01011120,-1,248,DAL,SAT
01011120,-12,236,LAS,LAX
01011120,-15,487,MSY,TPA
01011120,-18,1363,MCI,LAX
01011120,-20,601,PHX,RNO
01011120,-4,187,CRP,HOU
01011120,-5,528,ELP,AUS
01011120,-7,457,DTW,BNA
01011120,10,1246,BWI,HOU
01011121,11,369,PHX,BUR
01011123,-2,386,LAS,SJC
01011124,-15,399,BOI,SEA
01011125,-5,303,HOU,MSY
01011125,-6,1797,LAX,BNA
01011125,-7,444,PDX,RNO
01011125,12,307,MDW,CLE
01011125,12,496,SAT,ELP
01011125,8,361,ONT,OAK
01011125,9,368,LAS,SLC
01011128,13,611,BWI,MDW
01011128,25,580,DAL,ABQ
01011130,-1,328,PHX,ABQ
01011130,-13,687,STL,HOU
01011130,-2,328,ABQ,PHX
01011130,-2,440,STL,DTW
01011130,-20,1999,BWI,PHX
01011130,-3,370,LAX,PHX
01011130,-4,271,SDF,MDW
01011130,-8,1342,BWI,AUS
01011130,-8,308,LAX,SJC
01011130,0,148,HOU,AUS
01011130,0,239,DAL,HOU
01011130,0,239,HOU,DAL
01011130,0,256,PHX,LAS
01011130,0,359,HOU,JAN
01011130,2,1848,MCO,PHX
01011133,59,405,MDW,MCI
01011134,9,446,SAN,OAK
01011135,-1,318,JAX,FLL
01011135,-1,666,MDW,JAN
01011135,-12,410,CMH,STL
01011135,-20,1040,SAT,MCO
01011135,0,787,MCO,BWI
01011135,3,775,LBB,LAS
01011135,5,283,BWI,BDL
01011136,43,108,ISP,PVD
01011138,6,342,STL,OMA
01011138,8,471,MSY,BNA
01011139,24,630,PDX,SLC
01011140,-1,395,MDW,BNA
01011140,-13,405,MDW,MCI
01011140,-2,351,STL,TUL
01011140,-27,1671,LAX,MSY
01011140,-4,296,SJC,BUR
01011140,-5,314,BWI,CLE
01011140,-6,237,TUL,DAL
01011140,-7,1333,MCI,SAN
01011140,-7,258,LAS,SAN
01011140,0,371,OAK,SNA
01011140,0,677,ABQ,LAX
01011142,-8,671,SEA,OAK
01011145,-12,843,PHX,SAT
01011145,-2,389,ONT,SMF
01011145,-2,407,OAK,LAS
01011145,-4,371,SNA,OAK
01011145,-5,319,DAL,MAF
01011145,-5,443,BNA,RDU
01011145,-6,397,LAS,SMF
01011145,-7,670,HOU,BNA
01011145,12,276,HOU,HRL
01011145,15,251,STL,MDW
01011145,7,284,MDW,CMH
01011147,-1,288,BWI,ALB
01011150,-10,677,LAX,ABQ
01011150,-10,997,TPA,MDW
01011150,-11,1489,IND,PHX
01011150,-2,220,BWI,ISP
01011150,-3,304,PHX,SAN
01011150,-3,345,LAS,RNO
01011150,2,181,OKC,DAL
01011150,2,325,BUR,OAK
01011150,5,1444,PHX,MDW
01011150,5,1479,SJC,MCI
01011150,5,423,OMA,MDW
01011152,18,543,PDX,OAK
01011154,23,647,PHX,SMF
01011154,7,1407,SAT,BWI
01011155,-2,303,MSY,HOU
01011155,-5,277,ABQ,AMA
01011155,-9,229,MDW,DTW
01011155,-9,296,LIT,STL
01011155,13,487,STL,CLE
01011155,23,588,OAK,SLC
01011155,5,417,SAN,SJC
01011155,8,304,SAN,PHX
01011156,-2,967,BWI,MCI
01011156,36,325,PHX,ONT
01011200,-11,1107,SEA,PHX
01011200,-3,239,HOU,DAL
01011200,-3,495,BWI,SDF
01011200,-32,972,MCO,ISP
01011200,-4,281,BUF,BWI
01011200,-5,188,RNO,SJC
01011200,-5,605,SMF,SEA
01011200,-6,714,LAX,ELP
01011200,-7,224,SEA,GEG
01011200,-7,325,ONT,PHX
01011200,-7,397,SMF,LAS
01011200,0,197,TPA,FLL
01011200,0,373,SMF,LAX
01011200,11,419,HOU,OKC
01011203,5,1999,PHX,BWI
01011205,-5,1235,HOU,LAS
01011205,-5,223,BUR,LAS
01011205,-5,373,LAX,SMF
01011205,0,1099,LAS,OMA
01011205,29,723,OAK,GEG
01011205,7,239,DAL,HOU
01011205,9,1073,MCO,ALB
01011206,-6,337,LAX,OAK
01011206,0,337,OAK,LAX
01011206,6,236,LAS,LAX
01011208,4,303,HOU,MSY
01011210,-10,718,ABQ,MCI
01011210,-11,872,AUS,PHX
01011210,-4,325,OAK,BUR
01011210,-4,390,LAX,RNO
01011210,-5,192,SAT,HOU
01011210,-5,611,MDW,BWI
01011210,-9,663,JAX,BWI
01011210,0,389,SMF,ONT
01011210,14,1156,SLC,STL
01011210,18,663,BWI,JAX
01011210,4,833,OKC,PHX
01011210,47,584,LAS,ELP
01011212,2,325,BUR,OAK
01011212,5,689,SEA,SLC
01011213,2,1140,LAS,MCI
01011215,-12,1242,LAX,AUS
01011215,-2,279,PDX,GEG
01011215,-4,616,BNA,MCO
01011215,0,251,STL,MDW
01011215,0,293,LBB,DAL
01011215,2,180,OAK,RNO
01011215,2,377,BWI,MHT
01011215,6,258,LAS,SAN
01011215,6,478,MCO,BHM
01011215,8,1069,LAS,SAT
01011216,43,370,PHX,LAX
01011218,11,258,SAN,LAS
01011218,25,487,TPA,MSY
01011220,-1,293,DAL,LBB
01011220,-22,1455,PHX,BHM
01011220,-3,496,ELP,SAT
01011220,-7,296,SJC,BUR
01011220,0,1142,MCO,MHT
01011220,0,229,DTW,MDW
01011220,0,236,LAX,LAS
01011220,12,223,ELP,ABQ
01011220,15,407,LAS,OAK
01011220,3,708,MSY,IND
01011220,7,187,HOU,CRP
01011221,18,543,OAK,PDX
01011222,-4,938,MHT,BNA
01011223,45,368,SLC,LAS
01011225,-1,296,DAL,LIT
01011225,-10,1034,TPA,ISP
01011225,-10,569,SJC,PDX
01011225,-20,842,PVD,MDW
01011225,-3,333,ONT,SJC
01011225,-5,803,BNA,ISP
01011225,12,256,PHX,LAS
01011225,20,347,PHX,ELP
01011225,4,446,SAN,OAK
01011225,5,480,SMF,SAN
01011225,8,273,AUS,HRL
01011228,38,108,PVD,ISP
01011230,-15,989,MDW,MCO
01011230,-3,148,AUS,HOU
01011230,-3,239,DAL,HOU
01011230,-4,236,LAS,LAX
01011230,-4,239,HOU,DAL
01011230,-44,2237,ALB,LAS
01011230,-7,714,ELP,LAX
01011230,10,255,BWI,RDU
01011230,2,395,MDW,BNA
01011230,3,342,SJC,SNA
01011230,5,345,RNO,LAS
01011230,5,803,ISP,BNA
01011230,6,370,PHX,LAX
01011230,8,697,SEA,SJC
01011230,9,197,ONT,LAS
01011232,12,197,LAS,ONT
01011232,23,1044,PHX,MCI
01011235,-2,636,SAN,ELP
01011235,-2,829,TPA,CMH
01011235,-22,687,STL,HOU
01011235,-5,321,BHM,MSY
01011235,-5,570,HOU,BHM
01011235,-6,1164,SAN,AUS
01011235,0,1797,BNA,LAX
01011237,10,1262,STL,PHX
01011238,0,737,BWI,STL
01011238,31,361,ONT,OAK
01011239,-2,251,MDW,STL
01011240,-6,564,RNO,SEA
01011240,10,447,SAN,SFO
01011240,3,484,JAX,BNA
01011240,4,229,STL,IND
01011240,5,1977,SEA,BNA
01011243,21,587,RDU,TPA
01011245,-2,192,HOU,SAT
01011245,-2,248,DAL,SAT
01011245,-3,223,MCI,TUL
01011245,-4,217,IAH,DAL
01011245,-5,628,ABQ,SAN
01011245,-8,759,ABQ,HOU
01011245,0,1072,MCI,MCO
01011245,0,1137,PVD,TPA
01011245,0,1301,PHX,MSY
01011245,10,189,AUS,DAL
01011245,12,601,RNO,PHX
01011245,5,479,PDX,SMF
01011245,8,423,MDW,OMA
01011248,16,347,ELP,PHX
01011249,1,828,IND,MCO
01011250,-8,487,MSY,TPA
01011250,0,344,BOI,PDX
01011250,5,276,HOU,HRL
01011251,-9,611,BWI,MDW
01011252,14,358,BUR,SMF
01011253,23,480,SAN,SMF
01011254,15,869,TPA,STL
01011255,-1,447,SFO,SAN
01011255,11,304,PHX,SAN
01011255,4,446,OAK,SAN
01011255,40,628,SAN,ABQ
01011255,5,1751,ONT,BNA
01011258,13,843,SAT,PHX
01011300,-1,666,JAN,MDW
01011300,-10,217,DAL,IAH
01011300,-3,345,RNO,LAS
01011300,-3,361,OAK,ONT
01011300,-6,239,HOU,DAL
01011300,-6,337,LAX,OAK
01011300,0,239,DAL,HOU
01011300,0,580,DAL,ABQ
01011300,1,308,SJC,LAX
01011300,4,328,ABQ,PHX
01011300,5,1069,SAT,LAS
01011300,7,762,LAS,PDX
01011303,-2,361,ONT,OAK
01011303,15,178,MCO,FLL
01011304,0,590,SLC,LAX
01011304,10,935,PHX,TUL
01011304,40,256,LAS,PHX
01011305,-11,1489,SEA,MCI
01011305,-5,651,SFO,PHX
01011305,-8,369,BUR,PHX
01011305,19,1262,PHX,STL
01011308,9,370,LAX,PHX
01011310,-10,288,ALB,BWI
01011310,-2,307,CLE,MDW
01011310,-20,1210,SAT,LAX
01011310,-3,256,PHX,LAS
01011310,-5,967,MCI,BWI
01011310,-6,276,HRL,HOU
01011310,-6,319,MAF,DAL
01011310,0,296,LIT,DAL
01011310,10,386,SJC,LAS
01011310,4,342,OMA,STL
01011312,36,852,BDL,BNA
01011312,7,370,PHX,LAX
01011315,-11,220,ISP,BWI
01011315,-13,453,TUL,HOU
01011315,-2,507,PHX,SLC
01011315,-25,1136,PHX,LIT
01011315,-3,308,LAX,SJC
01011315,-5,258,SAN,LAS
01011315,-5,318,FLL,JAX
01011315,-5,338,BNA,CMH
01011315,-7,689,SLC,SEA
01011315,-8,550,MSY,MCO
01011315,0,223,LAS,BUR
01011315,22,632,MDW,RDU
01011315,5,237,DAL,TUL
01011315,7,333,SJC,ONT
01011317,71,313,MCI,OKC
01011318,45,370,LAX,PHX
01011319,-8,1020,PHX,HOU
01011320,-10,487,MSY,TPA
01011320,-13,677,ELP,HOU
01011320,-5,484,BNA,JAX
01011320,0,197,FLL,TPA
01011320,0,303,HOU,MSY
01011320,10,405,MCI,MDW
01011320,15,369,PHX,BUR
01011320,4,283,BDL,BWI
01011320,9,588,BNA,BWI
01011322,-1,224,GEG,SEA
01011325,-20,671,SEA,OAK
01011325,-6,335,BOI,RNO
01011325,0,417,SAN,SJC
01011325,0,718,MCI,ABQ
01011325,14,487,LAS,ABQ
01011325,18,180,OAK,RNO
01011325,2,389,SMF,ONT
01011325,27,647,SMF,PHX
01011325,3,440,STL,DTW
01011325,56,361,OAK,ONT
01011326,-3,180,RNO,OAK
01011327,6,478,BHM,MCO
01011328,11,342,SNA,SJC
01011328,12,304,SAN,PHX
01011329,5,345,LAS,RNO
01011330,-1,239,DAL,HOU
01011330,-17,1107,SEA,PHX
01011330,-2,393,HOU,LIT
01011330,-2,395,BNA,MDW
01011330,-3,1020,HOU,PHX
01011330,-3,337,LAX,OAK
01011330,-4,224,SEA,GEG
01011330,-5,371,OAK,SNA
01011330,-5,588,BWI,BNA
01011330,0,480,SMF,SAN
01011330,0,646,OAK,PHX
01011330,2,236,LAX,LAS
01011330,22,367,SAN,TUS
01011330,3,444,RNO,PDX
01011330,5,328,BWI,PVD
01011332,27,1093,ISP,FLL
01011333,-5,1137,TPA,PVD
01011334,31,344,PDX,BOI
01011334,40,303,MSY,HOU
01011335,-4,281,BWI,BUF
01011335,0,1107,PHX,SEA
01011335,0,187,CRP,HOU
01011335,0,325,BUR,OAK
01011335,1,328,PVD,BWI
01011335,6,460,TPA,BHM
01011337,2,359,JAN,HOU
01011340,-15,229,MDW,DTW
01011340,-2,451,LAX,TUS
01011340,-7,319,DAL,MAF
01011340,-9,223,BUR,LAS
01011340,0,293,LBB,DAL
01011340,0,737,STL,BWI
01011340,10,544,LIT,MDW
01011340,2,258,LAS,SAN
01011340,2,279,GEG,PDX
01011343,0,462,OKC,STL
01011343,27,181,DAL,OKC
01011343,6,256,LAS,PHX
01011343,7,273,HRL,AUS
01011344,20,307,MDW,CLE
01011345,-1,328,PHX,ABQ
01011345,-10,1090,AUS,LAS
01011345,-10,2106,LAS,BWI
01011345,-10,303,HOU,MSY
01011345,-2,373,SMF,LAX
01011345,-50,1987,BUF,LAS
01011345,14,370,PHX,LAX
01011345,20,368,LAS,SLC
01011345,20,677,ABQ,LAX
01011349,7,325,OAK,BUR
01011350,-5,562,DAL,ELP
01011350,10,335,RNO,BOI
01011350,12,447,SAN,SFO
01011350,2,188,SJC,RNO
01011350,6,276,HOU,HRL
01011350,7,236,LAS,LAX
01011352,-5,611,BWI,MDW
01011352,14,197,TPA,FLL
01011352,24,417,SJC,SAN
01011353,-4,1140,MCI,LAS
01011353,17,407,LAS,OAK
01011354,20,313,OKC,MCI
01011355,-1,1363,LAX,MCI
01011355,0,332,ABQ,MAF
01011355,10,496,SAT,ELP
01011355,10,611,MDW,BWI
01011355,14,448,BNA,CLE
01011355,19,361,ONT,OAK
01011355,4,534,RDU,MCO
01011355,5,197,ONT,LAS
01011357,25,337,OAK,LAX
01011357,5,1333,SAN,MCI
01011358,10,373,LAX,SMF
01011359,5,390,RNO,LAX
01011400,-1,239,DAL,HOU
01011400,-15,869,STL,TPA
01011400,-2,361,OAK,ONT
01011400,-4,451,TUS,LAX
01011400,-5,803,BNA,ISP
01011400,-7,453,TUL,HOU
01011400,0,192,SAT,HOU
01011400,1,304,PHX,SAN
01011400,13,248,SAT,DAL
01011400,14,293,DAL,LBB
01011400,2,491,MCI,BNA
01011400,32,671,OAK,SEA
01011400,9,616,MCO,BNA
01011401,20,562,ELP,DAL
01011403,-15,1166,MDW,FLL
01011403,14,714,LAX,ELP
01011404,0,239,HOU,DAL
01011405,-1,303,MSY,HOU
01011405,-10,907,PVD,BNA
01011405,-2,377,MHT,BWI
01011405,-2,580,ABQ,DAL
01011405,-4,1751,SAN,BNA
01011405,-7,677,ELP,HOU
01011405,-8,621,PHX,SJC
01011405,0,1235,LAS,HOU
01011405,13,1037,PHX,OMA
01011405,2,192,HOU,SAT
01011405,2,296,BUR,SJC
01011406,18,358,BUR,SMF
01011406,30,237,MCI,STL
01011407,12,314,CLE,BWI
01011408,40,550,MCO,MSY
01011408,8,256,PHX,LAS
01011409,14,829,CMH,TPA
01011409,2,254,SDF,STL
01011410,-1,276,HRL,HOU
01011410,-12,487,CLE,STL
01011410,-5,148,AUS,HOU
01011410,-5,271,MDW,SDF
01011410,-6,462,STL,OKC
01011410,0,371,SNA,OAK
01011410,4,187,HOU,CRP
01011410,5,277,AMA,ABQ
01011410,5,677,LAX,ABQ
01011413,-1,495,BWI,SDF
01011413,13,308,LAX,SJC
01011414,5,1301,MSY,PHX
01011415,-2,580,DAL,ABQ
01011415,-25,859,JAX,ISP
01011415,-3,341,LBB,AUS
01011415,-4,328,BWI,PVD
01011415,-8,616,BNA,MCO
01011415,15,584,LAS,ELP
01011415,6,1048,TPA,MCI
01011416,20,337,LAX,OAK
01011417,22,1489,OAK,MCI
01011418,20,178,FLL,MCO
01011419,9,670,BNA,HOU
01011420,-11,1180,SEA,ABQ
01011420,-5,229,DTW,MDW
01011420,-7,217,IAH,DAL
01011420,-9,440,DTW,STL
01011420,0,283,BWI,BDL
01011420,2,324,DAL,AMA
01011423,19,511,OAK,BOI
01011423,7,1489,PHX,IND
01011425,-2,258,LAS,SAN
01011425,-7,255,RDU,BWI
01011425,0,328,ABQ,PHX
01011425,0,405,MDW,MCI
01011425,10,405,MCI,MDW
01011425,10,457,BNA,DTW
01011425,15,423,OMA,MDW
01011425,4,628,SAN,ABQ
01011426,2,407,LAS,OAK
01011426,21,337,OAK,LAX
01011430,-2,303,HOU,MSY
01011430,-3,328,PHX,ABQ
01011430,-5,239,DAL,HOU
01011430,-7,852,BNA,BDL
01011430,-9,239,HOU,DAL
01011430,8,480,SAN,SMF
01011431,26,368,SLC,LAS
01011432,-5,646,PHX,OAK
01011433,11,422,RNO,SLC
01011435,-1,318,FLL,JAX
01011435,-3,248,DAL,SAT
01011435,-7,1050,MCO,BDL
01011435,0,588,BNA,BWI
01011435,1,325,BUR,OAK
01011435,1,358,SMF,BUR
01011435,10,177,BNA,BHM
01011435,11,480,SMF,SAN
01011435,2,370,PHX,LAX
01011435,20,236,LAX,LAS
01011435,20,543,PDX,OAK
01011435,23,224,GEG,SEA
01011435,4,682,BHM,BWI
01011436,-7,687,STL,HOU
01011440,-1,370,LAX,PHX
01011440,-2,369,PHX,BUR
01011440,-7,646,OAK,PHX
01011440,0,304,SAN,PHX
01011440,0,389,ONT,SMF
01011440,10,254,STL,SDF
01011440,30,318,JAX,FLL
01011440,57,251,STL,MDW
01011440,6,417,SAN,SJC
01011443,13,237,TUL,DAL
01011443,31,479,SMF,PDX
01011443,6,351,STL,TUL
01011444,0,671,SEA,OAK
01011444,23,256,LAS,PHX
01011444,71,419,OKC,HOU
01011445,-11,688,JAX,IND
01011445,-3,239,HOU,DAL
01011445,-8,842,TPA,BWI
01011445,12,308,SJC,LAX
01011445,13,697,SJC,SEA
01011445,2,584,ELP,LAS
01011446,-5,479,PDX,SMF
01011449,10,237,MCI,STL
01011449,29,1448,BNA,PHX
01011449,4,288,BWI,ALB
01011449,8,682,BWI,BHM
01011450,-1,333,ONT,SJC
01011450,-10,1342,AUS,BWI
01011450,-12,1588,LAS,BNA
01011450,14,276,HOU,HRL
01011450,4,251,MDW,STL
01011450,9,938,BNA,MHT
01011451,10,325,OAK,BUR
01011451,7,1073,MCO,PVD
01011453,-1,1073,ALB,MCO
01011453,40,507,SLC,PHX
01011455,-12,605,SEA,SMF
01011455,-6,325,ONT,PHX
01011455,-7,220,BWI,ISP
01011455,0,197,LAS,ONT
01011455,3,437,MSY,DAL
01011455,37,651,PHX,SFO
01011455,44,325,ONT,PHX
01011455,7,842,BWI,TPA
01011456,14,587,TPA,RDU
01011456,24,337,OAK,LAX
01011457,1,279,GEG,PDX
01011458,20,307,CLE,MDW
01011459,0,399,SEA,BOI
01011459,4,405,MCI,MDW
01011500,-2,487,LAS,ABQ
01011500,-3,223,BUR,LAS
01011500,-5,410,STL,CMH
01011500,-7,271,MDW,SDF
01011500,-8,370,LAX,PHX
01011500,0,496,ELP,SAT
01011500,3,407,LAS,OAK
01011500,30,1864,SLC,BWI
01011500,6,328,PVD,BWI
01011502,38,223,MCI,TUL
01011502,57,528,ELP,AUS
01011503,10,192,SAT,HOU
01011504,7,189,AUS,DAL
01011505,-11,714,ELP,LAX
01011505,-15,550,MSY,MCO
01011505,-16,447,SAN,SFO
01011505,-2,148,HOU,AUS
01011505,-5,284,CMH,MDW
01011505,-9,319,MAF,DAL
01011505,0,229,IND,STL
01011505,0,281,BUF,BWI
01011505,0,365,LAS,TUS
01011505,2,296,LIT,DAL
01011505,2,437,DAL,MSY
01011505,3,328,ABQ,PHX
01011505,4,188,SJC,RNO
01011505,42,181,OKC,DAL
01011505,6,239,HOU,DAL
01011507,-1,569,PDX,SJC
01011507,5,223,LAS,BUR
01011510,-5,342,SNA,SJC
01011510,0,276,HRL,HOU
01011510,12,197,FLL,TPA
01011510,21,1009,PHX,PDX
01011510,4,188,RNO,SJC
01011510,45,447,SFO,SAN
01011510,5,345,RNO,LAS
01011512,14,291,SLC,BOI
01011512,22,342,SJC,SNA
01011514,42,236,LAS,LAX
01011514,8,337,LAX,OAK
01011515,-1,1044,PHX,MCI
01011515,-10,1156,STL,SLC
01011515,-5,236,LAX,LAS
01011515,-8,248,SAT,DAL
01011515,11,842,MDW,PVD
01011515,30,308,LAX,SJC
01011515,5,187,HOU,CRP
01011515,6,324,DAL,AMA
01011515,7,1034,ISP,TPA
01011515,9,423,OMA,MDW
01011515,9,843,PHX,SAT
01011518,16,361,OAK,ONT
01011518,34,1246,HOU,BWI
01011518,9,671,OAK,SEA
01011520,-10,796,MAF,LAS
01011520,-4,487,ABQ,LAS
01011520,-5,351,STL,TUL
01011520,-5,377,BWI,MHT
01011520,-6,628,ABQ,SAN
01011520,0,187,CRP,HOU
01011520,10,293,LBB,DAL
01011520,5,480,SAN,SMF
01011522,-6,405,MDW,MCI
01011522,14,919,MCI,SLC
01011524,3,677,HOU,ELP
01011525,-4,369,BUR,PHX
01011525,-7,687,HOU,STL
01011525,11,880,MCO,STL
01011525,40,303,MSY,HOU
01011525,5,296,DAL,LIT
01011525,7,888,BWI,JAN
01011529,13,787,MCO,BWI
01011529,15,256,PHX,LAS
01011530,-14,621,SJC,PHX
01011530,-15,1521,MDW,LAS
01011530,-2,337,LAX,OAK
01011530,-2,405,MCI,MDW
01011530,-3,220,ISP,BWI
01011530,-4,239,HOU,DAL
01011530,-8,254,STL,SDF
01011530,0,370,LAX,PHX
01011530,0,666,MDW,JAN
01011530,12,515,IND,BWI
01011530,18,491,BNA,MCI
01011530,2,843,SAT,PHX
01011532,3,543,PDX,OAK
01011533,24,258,SAN,LAS
01011535,-3,162,IND,MDW
01011535,-5,197,TPA,FLL
01011535,-8,651,SFO,PHX
01011535,26,229,STL,IND
01011535,8,368,SLC,LAS
01011535,8,534,MCO,RDU
01011537,-8,1363,LAX,MCI
01011538,22,446,OAK,SAN
01011538,5,417,SJC,SAN
01011540,-10,611,BWI,MDW
01011540,10,1262,STL,PHX
01011540,12,479,SMF,PDX
01011540,16,308,SJC,LAX
01011541,2,347,ELP,PHX
01011542,2,564,SEA,RNO
01011542,27,993,MCO,AUS
01011542,3,361,ONT,OAK
01011543,12,419,HOU,OKC
01011543,17,386,LAS,SJC
01011543,26,373,SMF,LAX
01011545,-1,377,MHT,BWI
01011545,-5,2237,LAS,ALB
01011545,0,217,DAL,IAH
01011545,10,1797,LAX,BNA
01011545,3,307,MDW,CLE
01011547,14,321,BHM,MSY
01011549,-9,1009,PDX,PHX
01011550,-1,319,DAL,MAF
01011550,-2,223,BUR,LAS
01011550,-4,338,CMH,BNA
01011550,2,495,SDF,BWI
01011550,5,223,LAS,BUR
01011550,5,448,BNA,CLE
01011550,52,370,PHX,LAX
01011550,8,328,PVD,BWI
01011552,12,347,PHX,ELP
01011553,6,588,BNA,BWI
01011555,0,325,PHX,ONT
01011555,1,325,OAK,BUR
01011555,11,189,DAL,AUS
01011555,19,1670,ABQ,BWI
01011555,27,314,BWI,CLE
01011555,3,328,BWI,PVD
01011555,4,328,PHX,ABQ
01011556,0,407,OAK,LAS
01011556,3,271,MDW,SDF
01011559,13,446,SAN,OAK
01011600,-3,239,DAL,HOU
01011600,-5,248,SAT,DAL
01011600,-5,318,JAX,FLL
01011600,-8,289,ABQ,LBB
01011600,1,251,MDW,STL
01011600,1,580,ABQ,DAL
01011600,12,1618,BHM,LAS
01011600,12,283,BDL,BWI
01011600,17,324,AMA,DAL
01011600,19,236,LAX,LAS
01011600,23,872,PHX,AUS
01011600,25,507,PHX,SLC
01011600,3,371,OAK,SNA
01011600,5,303,MSY,HOU
01011600,6,256,PHX,LAS
01011602,17,256,LAS,PHX
01011604,15,251,STL,MDW
01011604,35,337,OAK,LAX
01011605,-10,564,SEA,RNO
01011605,-10,833,OKC,PHX
01011605,-12,663,JAX,BWI
01011605,-15,765,ISP,MDW
01011605,-2,833,PHX,OKC
01011605,-3,229,DTW,MDW
01011605,15,229,MDW,DTW
01011607,20,321,TUS,ABQ
01011608,0,239,HOU,DAL
01011610,-1,361,OAK,ONT
01011610,-5,341,AUS,LBB
01011610,-6,397,LAS,SMF
01011610,-8,1363,MCI,LAX
01011610,-8,989,MCO,MDW
01011610,17,471,BNA,MSY
01011610,3,197,TPA,FLL
01011610,5,236,LAS,LAX
01011610,6,237,DAL,TUL
01011611,7,304,SAN,PHX
01011612,0,178,MCO,FLL
01011613,19,520,BOI,LAS
01011614,14,276,HRL,HOU
01011615,-5,148,HOU,AUS
01011615,-5,239,HOU,DAL
01011615,-5,480,SMF,SAN
01011615,-8,303,HOU,MSY
01011615,10,258,LAS,SAN
01011615,15,162,MDW,IND
01011615,21,616,MCO,BNA
01011615,24,590,LAX,SLC
01011615,3,569,SJC,PDX
01011615,35,318,FLL,JAX
01011615,52,1912,PHX,BUF
01011616,-5,319,MAF,DAL
01011616,10,570,BHM,HOU
01011616,9,1999,PHX,BWI
01011617,63,251,MDW,STL
01011618,12,358,BUR,SMF
01011618,31,303,HOU,MSY
01011618,8,197,ONT,LAS
01011619,12,288,ALB,BWI
01011620,-10,1987,LAS,BUF
01011620,-5,281,BWI,BUF
01011620,-7,1624,SDF,LAS
01011620,0,1072,MCO,MCI
01011620,10,630,PDX,SLC
01011620,13,287,BOI,GEG
01011620,14,443,RDU,BNA
01011620,5,296,SJC,BUR
01011620,51,239,DAL,HOU
01011620,6,611,MDW,BWI
01011620,7,345,LAS,RNO
01011621,11,935,TUL,PHX
01011624,12,446,OAK,SAN
01011624,7,588,BWI,BNA
01011625,-15,907,PVD,BNA
01011625,-2,258,SAN,LAS
01011625,-7,803,ISP,BNA
01011625,0,248,DAL,SAT
01011625,2,187,CRP,HOU
01011625,25,370,PHX,LAX
01011625,5,351,TUL,STL
01011625,5,487,TPA,MSY
01011625,6,451,TUS,LAX
01011625,63,453,HOU,TUL
01011626,-3,687,STL,HOU
01011626,16,237,MCI,STL
01011626,20,328,ABQ,PHX
01011626,5,389,SMF,ONT
01011627,36,224,SEA,GEG
01011628,31,236,LAS,LAX
01011628,49,237,TUL,DAL
01011630,-10,256,LAS,PHX
01011630,-3,239,HOU,DAL
01011630,-3,337,LAX,OAK
01011630,-3,358,SMF,BUR
01011630,-9,718,SDF,MCO
01011630,0,239,DAL,HOU
01011630,20,1797,BNA,LAX
01011630,43,447,SFO,SAN
01011630,5,550,MCO,MSY
01011630,7,386,SJC,LAS
01011631,14,487,CLE,STL
01011631,9,296,BUR,SJC
01011632,27,337,OAK,LAX
01011634,3,361,ONT,OAK
01011634,49,507,SLC,PHX
01011635,-1,580,DAL,ABQ
01011635,-12,2277,PHX,PVD
01011635,-14,670,HOU,BNA
01011635,-6,296,LIT,STL
01011635,-7,714,ELP,LAX
01011635,-8,570,MDW,BHM
01011637,46,451,LAX,TUS
01011638,0,423,MDW,OMA
01011638,13,189,DAL,AUS
01011640,-9,1235,LAS,HOU
01011640,17,972,TPA,SAT
01011640,2,440,DTW,STL
01011640,30,479,PDX,SMF
01011640,4,255,BWI,RDU
01011641,7,180,OAK,RNO
01011642,-5,718,MCI,ABQ
01011642,14,1448,PHX,BNA
01011642,7,437,DAL,MSY
01011643,4,287,GEG,BOI
01011644,24,1210,LAX,SAT
01011645,-2,293,DAL,LBB
01011645,-5,256,PHX,LAS
01011645,0,487,STL,CLE
01011645,1,1552,MCO,ABQ
01011645,10,344,BOI,PDX
01011645,12,756,AUS,BNA
01011645,15,437,MSY,DAL
01011645,18,371,SNA,OAK
01011645,5,925,BWI,FLL
01011648,15,765,MDW,ISP
01011650,-3,342,SJC,SNA
01011650,0,405,MDW,MCI
01011650,10,223,LAS,BUR
01011652,21,838,TPA,IND
01011653,14,325,ONT,PHX
01011654,-1,687,HOU,STL
01011654,37,308,LAX,SJC
01011655,11,324,AMA,DAL
01011655,20,296,DAL,LIT
01011655,29,188,RNO,SJC
01011655,3,446,OAK,SAN
01011655,45,447,SAN,SFO
01011659,17,368,LAS,SLC
01011659,7,1020,PHX,HOU
01011700,-1,220,BWI,ISP
01011700,-1,447,SFO,SAN
01011700,-2,239,HOU,DAL
01011700,-2,333,SJC,ONT
01011700,-2,562,DAL,ELP
01011700,15,1020,HOU,PHX
01011700,15,337,OAK,LAX
01011700,5,197,FLL,TPA
01011702,46,304,PHX,SAN
01011702,57,308,SJC,LAX
01011704,62,337,LAX,OAK
01011705,-7,162,IND,MDW
01011705,-8,377,MHT,BWI
01011705,0,108,ISP,PVD
01011705,0,192,HOU,SAT
01011705,0,217,IAH,DAL
01011705,0,397,SMF,LAS
01011705,14,1093,FLL,ISP
01011705,14,377,BWI,MHT
01011705,17,448,CLE,BNA
01011705,6,358,BUR,SMF
01011705,8,423,OMA,MDW
01011708,0,192,SAT,HOU
01011708,10,197,LAS,ONT
01011710,-1,248,SAT,DAL
01011710,-18,365,BHM,JAX
01011710,-20,1772,CMH,LAS
01011710,27,370,PHX,LAX
01011710,3,1044,MCI,PHX
01011710,5,295,ELP,LBB
01011710,6,636,ELP,SAN
01011712,-8,251,MDW,STL
01011714,0,543,OAK,PDX
01011714,12,395,MDW,BNA
01011714,20,251,STL,MDW
01011715,-10,671,OAK,SEA
01011715,0,319,MAF,DAL
01011715,10,1156,SLC,STL
01011715,14,495,SDF,BWI
01011715,18,543,PDX,OAK
01011715,2,328,PHX,ABQ
01011715,5,325,BUR,OAK
01011715,5,718,ABQ,MCI
01011716,-7,651,PHX,SFO
01011717,15,359,JAN,HOU
01011717,20,689,SLC,SEA
01011719,8,520,LAS,BOI
01011720,-17,737,BWI,STL
01011720,-5,718,MCO,SDF
01011720,0,328,BWI,PVD
01011720,12,405,MCI,MDW
01011720,12,762,PDX,LAS
01011720,16,528,AUS,ELP
01011720,22,236,LAS,LAX
01011720,25,443,BNA,RDU
01011720,5,935,PHX,TUL
01011721,3,284,MDW,CMH
01011722,-5,934,ABQ,STL
01011722,20,308,SJC,LAX
01011722,5,239,DAL,HOU
01011723,1,239,HOU,DAL
01011723,18,437,MSY,DAL
01011724,10,511,BOI,OAK
01011724,13,313,OKC,MCI
01011724,17,337,LAX,OAK
01011724,18,237,STL,MCI
01011725,-12,255,RDU,BWI
01011725,-14,1497,ABQ,TPA
01011725,-2,256,PHX,LAS
01011725,0,345,LAS,RNO
01011725,0,361,OAK,ONT
01011725,14,359,HOU,JAN
01011725,19,480,SAN,SMF
01011725,22,307,MDW,CLE
01011725,27,390,LAX,RNO
01011726,0,256,LAS,PHX
01011726,22,325,PHX,ONT
01011726,6,373,LAX,SMF
01011728,35,258,SAN,LAS
01011728,5,570,HOU,BHM
01011728,7,283,BWI,BDL
01011730,-19,842,PVD,MDW
01011730,-5,697,SEA,SJC
01011730,-6,220,ISP,BWI
01011730,18,457,DTW,BNA
01011730,2,239,HOU,DAL
01011730,22,248,DAL,SAT
01011730,48,647,PHX,SMF
01011731,2,283,BDL,BWI
01011731,29,236,LAX,LAS
01011733,20,189,DAL,AUS
01011734,12,550,MSY,MCO
01011735,-1,295,LBB,ELP
01011735,-2,759,HOU,ABQ
01011735,-3,271,SDF,MDW
01011735,-3,904,MCI,RDU
01011735,10,588,BWI,BNA
01011735,12,291,BOI,SLC
01011735,18,842,MDW,PVD
01011735,3,319,DAL,MAF
01011735,32,279,PDX,GEG
01011737,-13,880,STL,MCO
01011737,8,178,FLL,MCO
01011738,2,515,BWI,IND
01011738,30,440,STL,DTW
01011738,47,441,HOU,MAF
01011738,7,342,SNA,SJC
01011738,9,303,MSY,HOU
01011739,41,484,JAX,BNA
01011740,-1,1521,LAS,MDW
01011740,-2,682,BWI,BHM
01011740,-4,487,MSY,TPA
01011740,-8,197,TPA,FLL
01011740,0,367,TUS,SAN
01011740,12,446,SAN,OAK
01011740,5,407,LAS,OAK
01011740,7,296,BUR,SJC
01011740,7,318,FLL,JAX
01011740,8,842,BWI,TPA
01011741,-13,2106,BWI,LAS
01011742,23,307,CLE,MDW
01011743,-2,248,SAT,DAL
01011744,10,370,LAX,PHX
01011745,-11,587,JAN,MCO
01011745,-16,410,CMH,STL
01011745,-2,192,SAT,HOU
01011745,-2,281,BUF,BWI
01011745,-27,1848,PHX,MCO
01011745,-5,180,RNO,OAK
01011745,13,491,MCI,BNA
01011745,16,670,BNA,HOU
01011745,37,370,LAX,PHX
01011745,4,389,ONT,SMF
01011745,5,197,FLL,TPA
01011746,20,457,BNA,DTW
01011747,47,239,DAL,HOU
01011748,5,671,SEA,OAK
01011749,-10,1099,OMA,LAS
01011749,10,647,SMF,PHX
01011750,-1,1034,TPA,ISP
01011750,-12,673,MSY,FLL
01011750,-3,223,ABQ,ELP
01011750,-8,397,LAS,SMF
01011750,0,276,HOU,HRL
01011750,0,328,ABQ,PHX
01011750,0,328,PVD,BWI
01011750,12,787,BWI,MCO
01011750,20,934,STL,ABQ
01011750,31,224,GEG,SEA
01011750,4,251,STL,MDW
01011751,13,296,STL,LIT
01011751,48,677,ELP,HOU
01011752,18,229,IND,STL
01011753,-5,928,AUS,TPA
01011755,12,444,RNO,PDX
01011755,13,1588,BNA,LAS
01011755,6,588,SLC,OAK
01011755,9,588,BNA,BWI
01011756,-13,1162,AUS,RDU
01011757,11,328,BWI,PVD
01011757,14,296,LIT,DAL
01011759,19,361,ONT,OAK
01011759,40,368,SLC,LAS
01011800,-12,1076,LAS,TUL
01011800,-14,178,MCO,FLL
01011800,-2,646,PHX,OAK
01011800,-5,367,SAN,TUS
01011800,-8,1599,MSY,SAN
01011800,0,337,LAX,OAK
01011800,0,562,ELP,DAL
01011800,2,479,SMF,PDX
01011800,21,288,BWI,ALB
01011800,3,223,BUR,LAS
01011800,32,189,AUS,DAL
01011800,4,237,STL,MCI
01011801,9,223,ELP,ABQ
01011803,5,347,ELP,PHX
01011805,-1,601,RNO,PHX
01011805,-7,321,ABQ,TUS
01011805,-7,443,RDU,BNA
01011805,0,162,MDW,IND
01011805,5,256,LAS,PHX
01011805,59,223,TUL,MCI
01011805,9,417,SJC,SAN
01011805,9,440,STL,DTW
01011809,29,308,SJC,LAX
01011810,-20,777,BDL,MDW
01011810,-23,1073,MCO,ALB
01011810,0,108,PVD,ISP
01011810,2,148,AUS,HOU
01011810,2,967,BWI,MCI
01011810,22,304,PHX,SAN
01011810,22,714,LAX,ELP
01011810,35,325,PHX,ONT
01011810,4,293,LBB,DAL
01011811,11,239,HOU,DAL
01011812,12,304,SAN,PHX
01011813,13,303,MSY,HOU
01011813,4,407,OAK,LAS
01011814,11,405,MDW,MCI
01011815,-1,251,STL,MDW
01011815,-7,1506,PHX,SDF
01011815,0,229,DTW,MDW
01011815,29,872,AUS,PHX
01011815,39,258,SAN,LAS
01011815,5,446,SAN,OAK
01011815,6,651,PHX,SFO
01011817,0,371,OAK,SNA
01011817,29,1136,LIT,PHX
01011818,24,308,LAX,SJC
01011818,31,236,LAX,LAS
01011818,6,192,HOU,SAT
01011820,-1,289,LBB,ABQ
01011820,-3,1037,OMA,PHX
01011820,10,688,IND,JAX
01011820,19,321,MSY,BHM
01011820,25,358,SMF,BUR
01011820,3,192,SAT,HOU
01011820,30,507,PHX,SLC
01011820,7,612,TPA,BNA
01011821,8,446,OAK,SAN
01011824,20,239,DAL,HOU
01011824,40,229,MDW,DTW
01011824,56,337,OAK,LAX
01011825,-18,997,MDW,TPA
01011825,-4,460,BHM,TPA
01011825,-5,925,FLL,BWI
01011825,0,371,SNA,OAK
01011825,8,181,DAL,OKC
01011826,14,314,CLE,BWI
01011828,13,333,ONT,SJC
01011829,-20,1448,BNA,PHX
01011829,6,369,PHX,BUR
01011830,-20,972,SAT,TPA
01011830,-23,254,SDF,STL
01011830,0,239,DAL,HOU
01011830,13,256,PHX,LAS
01011830,2,337,OAK,LAX
01011833,7,447,SAN,SFO
01011835,-10,759,ABQ,HOU
01011835,-4,569,PDX,SJC
01011835,-7,889,ABQ,OAK
01011835,0,197,ONT,LAS
01011835,0,670,BNA,HOU
01011835,10,1363,LAX,MCI
01011836,-10,1442,MCI,SMF
01011838,14,189,AUS,DAL
01011838,21,324,DAL,AMA
01011838,4,237,DAL,TUL
01011840,-15,651,SFO,PHX
01011840,-8,1751,BNA,SAN
01011840,10,1235,HOU,LAS
01011840,22,217,DAL,IAH
01011840,33,325,OAK,BUR
01011841,28,370,PHX,LAX
01011841,5,395,MDW,BNA
01011843,7,220,BWI,ISP
01011844,0,258,SAN,LAS
01011845,-3,256,PHX,LAS
01011845,-5,304,SAN,PHX
01011845,-7,377,MHT,BWI
01011845,-8,237,STL,MCI
01011845,26,605,SMF,SEA
01011845,27,1959,BNA,OAK
01011845,29,233,SAT,HRL
01011845,32,417,SAN,SJC
01011845,40,447,SFO,SAN
01011848,23,325,ONT,PHX
01011849,7,480,SMF,SAN
01011850,-5,872,PHX,AUS
01011850,-7,335,BOI,RNO
01011850,-9,907,BNA,PVD
01011850,10,405,MCI,MDW
01011850,17,328,PHX,ABQ
01011850,3,328,ABQ,PHX
01011850,7,1140,MCI,LAS
01011850,8,616,BNA,MCO
01011851,1,842,TPA,BWI
01011852,13,611,MDW,BWI
01011852,54,337,OAK,LAX
01011853,16,407,LAS,OAK
01011853,49,370,LAX,PHX
01011854,20,335,RNO,BOI
01011855,-23,1999,BWI,PHX
01011855,-3,251,MDW,STL
01011855,-3,255,BWI,RDU
01011855,-5,889,OAK,ABQ
01011855,0,304,PHX,SAN
01011855,12,345,LAS,RNO
01011855,15,451,LAX,TUS
01011855,3,328,BWI,PVD
01011855,43,484,BNA,JAX
01011856,13,1140,LAS,MCI
01011856,8,358,SMF,BUR
01011857,24,1591,LAS,IND
01011858,19,543,OAK,PDX
01011859,28,550,MCO,MSY
01011900,-1,239,DAL,HOU
01011900,-17,1072,MCI,MCO
01011900,-2,192,HOU,SAT
01011900,-2,321,BHM,MSY
01011900,-5,441,MAF,HOU
01011900,0,1156,STL,SLC
01011900,10,1073,PVD,MCO
01011900,25,689,SEA,SLC
01011900,27,370,LAX,PHX
01011900,45,197,LAS,ONT
01011900,9,328,PVD,BWI
01011901,35,236,LAX,LAS
01011902,37,279,GEG,PDX
01011902,9,687,STL,HOU
01011903,30,1069,LAS,SAT
01011905,-13,1501,LAS,MSY
01011905,-2,251,STL,MDW
01011905,-6,345,RNO,LAS
01011905,0,233,HRL,SAT
01011905,0,829,TPA,CMH
01011905,17,1020,HOU,PHX
01011905,18,888,JAN,BWI
01011905,28,671,SEA,OAK
01011905,30,590,SLC,LAX
01011905,7,223,LAS,BUR
01011906,0,239,HOU,DAL
01011907,10,852,BNA,BDL
01011907,11,296,SJC,BUR
01011907,36,332,MAF,ABQ
01011908,18,248,DAL,SAT
01011908,2,296,LIT,STL
01011908,4,325,BUR,OAK
01011910,-5,1481,MCI,PDX
01011910,-8,444,PDX,RNO
01011910,10,342,SJC,SNA
01011910,14,670,HOU,BNA
01011910,3,562,DAL,ELP
01011910,3,843,SAT,PHX
01011910,5,314,BWI,CLE
01011910,6,405,MCI,MDW
01011911,10,296,DAL,LIT
01011913,3,682,BHM,BWI
01011914,-7,998,BWI,MSY
01011915,-10,803,ISP,BNA
01011915,-8,390,RNO,LAX
01011915,10,493,ABQ,SLC
01011915,53,405,MCI,MDW
01011916,20,677,ABQ,LAX
01011917,3,663,JAX,BWI
01011919,13,347,PHX,ELP
01011920,-3,281,BWI,BUF
01011920,0,293,LBB,DAL
01011920,15,307,MDW,CLE
01011920,56,666,HOU,MCI
01011920,9,319,DAL,MAF
01011921,90,325,ONT,PHX
01011922,7,443,BNA,RDU
01011923,49,451,TUS,LAX
01011923,8,178,FLL,MCO
01011924,35,422,SLC,RNO
01011925,-2,397,SMF,LAS
01011925,-3,437,DAL,MSY
01011925,-5,570,HOU,BHM
01011925,0,793,BNA,FLL
01011925,13,180,OAK,RNO
01011925,2,1262,STL,PHX
01011925,25,223,ABQ,ELP
01011925,41,373,SMF,LAX
01011928,19,1236,MCI,MHT
01011928,7,612,BNA,TPA
01011929,-7,1246,BWI,HOU
01011929,2,417,SAN,SJC
01011930,-2,496,SAT,ELP
01011930,-4,687,HOU,STL
01011930,-6,405,MDW,MCI
01011930,4,197,FLL,TPA
01011932,13,328,PVD,BWI
01011933,15,276,HOU,HRL
01011933,21,236,LAS,LAX
01011933,39,337,OAK,LAX
01011935,-2,358,SMF,BUR
01011935,-4,365,TUS,LAS
01011935,-6,284,CMH,MDW
01011935,17,677,HOU,ELP
01011935,33,237,MCI,STL
01011935,8,271,MDW,SDF
01011936,21,611,BWI,MDW
01011938,13,189,DAL,AUS
01011938,35,337,LAX,OAK
01011939,21,256,LAS,PHX
01011940,-22,1814,IND,LAX
01011940,-7,347,PHX,ELP
01011940,25,368,SLC,LAS
01011940,30,1234,MCI,PVD
01011940,34,325,OAK,BUR
01011940,35,487,LAS,ABQ
01011941,6,258,LAS,SAN
01011942,10,395,BNA,MDW
01011942,50,303,HOU,MSY
01011943,0,588,BWI,BNA
01011943,5,377,BWI,MHT
01011945,0,1166,FLL,MDW
01011945,1,777,MDW,BDL
01011945,10,647,PHX,SMF
01011945,27,358,BUR,SMF
01011947,25,236,LAX,LAS
01011948,18,967,MCI,BWI
01011950,-11,479,PDX,SMF
01011950,-3,303,HOU,MSY
01011950,-3,333,SJC,ONT
01011950,-5,407,OAK,LAS
01011950,-5,935,TUL,PHX
01011950,14,1090,LAS,AUS
01011950,6,758,LAS,AMA
01011953,15,361,OAK,ONT
01011954,25,323,BHM,SDF
01011954,6,1444,PHX,MDW
01011955,-2,718,ABQ,MCI
01011955,-5,271,SDF,MDW
01011955,13,296,SJC,BUR
01011955,5,342,SNA,SJC
01011956,-6,697,SJC,SEA
01011957,17,543,PDX,OAK
01011958,20,993,AUS,MCO
01012000,-10,423,MDW,OMA
01012000,-3,239,DAL,HOU
01012000,0,108,ISP,PVD
01012000,22,314,CLE,BWI
01012000,40,223,BUR,LAS
01012002,61,370,LAX,PHX
01012003,5,447,SAN,SFO
01012005,-2,405,MDW,MCI
01012005,-20,1489,MCI,OAK
01012005,0,714,ELP,LAX
01012005,18,587,RDU,TPA
01012005,3,714,LAX,ELP
01012007,13,1140,LAS,MCI
01012007,14,236,LAS,LAX
01012007,2,337,OAK,LAX
01012007,4,347,ELP,PHX
01012007,40,389,ONT,SMF
01012009,63,370,PHX,LAX
01012010,10,407,LAS,OAK
01012011,17,1363,MCI,LAX
01012011,36,256,PHX,LAS
01012012,24,276,HRL,HOU
01012012,8,487,ABQ,LAS
01012015,-16,296,STL,LIT
01012015,-2,296,LIT,DAL
01012015,-4,1069,SAT,LAS
01012015,0,223,BUR,LAS
01012015,10,180,JAX,TPA
01012015,18,419,HOU,OKC
01012018,9,345,LAS,RNO
01012020,-15,1048,MCI,TPA
01012020,-3,1044,MCI,PHX
01012020,0,293,DAL,LBB
01012020,0,361,OAK,ONT
01012020,0,443,RDU,BNA
01012020,10,397,LAS,SMF