{"action":"created","comment":{"url":"https://api.github.com/repos/swift-nav/piksi_tools/pulls/comments/37234876","id":37234876,"diff_hunk":"@@ -0,0 +1,295 @@\n+#!/usr/bin/env python\n+# Copyright (C) 2011-2014 Swift Navigation Inc.\n+# Contact: Fergus Noble <fergus@swift-nav.com>\n+#\n+# This source is subject to the license found in the file 'LICENSE' which must\n+# be be distributed together with this source. All other rights reserved.\n+#\n+# THIS CODE AND INFORMATION IS PROVIDED \"AS IS\" WITHOUT WARRANTY OF ANY KIND,\n+# EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED\n+# WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE.\n+\n+\"\"\"\n+Contains the class OutputList\n+Displays Device Log messages and STDOUT/STDERR.\n+\"\"\"\n+\n+from traits.api import HasTraits, Str, Bool, Trait, Int, List, Font, Float, \\\n+                       Enum, Property\n+from traitsui.api import View, UItem, TabularEditor\n+from pyface.api import GUI\n+from traitsui.tabular_adapter import TabularAdapter\n+import time\n+\n+# These levels are identical to sys.log levels\n+LOG_EMERG      = 0       # system is unusable\n+LOG_ALERT      = 1       # action must be taken immediately\n+LOG_CRIT       = 2       # critical conditions\n+LOG_ERROR      = 3       # error conditions\n+LOG_WARN       = 4       # warning conditions\n+LOG_NOTICE     = 5       # normal but significant condition\n+LOG_INFO       = 6       # informational\n+LOG_DEBUG      = 7       # debug-level messages\n+\n+# These log levels are defined uniquely to this module to handle the\n+# list for stdout, stderror, and the device's log messages\n+# An unknown log level will end up with - 2\n+# A python stdout or stderr should come in as - 1\n+\n+CONSOLE_LOG_LEVEL = -1\n+DEFAULT_LOG_LEVEL = -2\n+\n+# This maps the log level numbers to a human readable string\n+# The unused log levels are commented out of the dict until used\n+\n+# OTHERLOG_LEVELS will be unmaskable\n+OTHERLOG_LEVELS  = {\n+                    CONSOLE_LOG_LEVEL: \"CONSOLE\",\n+                    }\n+# SYSLOG_LEVELS can be filtered\n+\n+SYSLOG_LEVELS = {#LOG_EMERG : \"EMERG\",\n+                 #LOG_ALERT : \"ALERT\",\n+                 #LOG_CRIT  : \"CRIT\",\n+                 LOG_ERROR : \"ERROR\",\n+                 LOG_WARN  : \"WARNING\",\n+                 #LOG_NOTICE: \"NOTICE\",\n+                 LOG_INFO  : \"INFO\",\n+                 LOG_DEBUG : \"DEBUG\",\n+                 }\n+\n+# Combine the log levels into one dict\n+ALL_LOG_LEVELS = SYSLOG_LEVELS.copy()\n+ALL_LOG_LEVELS.update(OTHERLOG_LEVELS)\n+\n+# Set default filter level\n+DEFAULT_LOG_LEVEL_FILTER = \"WARNING\"\n+\n+DEFAULT_MAX_LEN = 250\n+LOG_LEVEL_TOOLTIP = \"Log level sent from the device. \"\\\n+                     \"If CONSOLE, row was generated by the Console software.\"\n+TIMESTAMP_TOOLTIP = \"Time at which the console software received the message,.\"\n+\n+def str_to_log_level(level_str):\n+  \"\"\"\n+  Maps a string into an integer log level\n+  If none can be found, uses the default\n+  \"\"\"\n+  for key, value in SYSLOG_LEVELS.iteritems():\n+    if value.lower() == level_str.lower():\n+      return key\n+  return DEFAULT_LOG_LEVEL\n+\n+class LogItemOutputListAdapter(TabularAdapter):\n+  \"\"\"\n+  Tabular adapter for table of LogItems\n+  \"\"\"\n+  columns = [('Timestamp', 'timestamp'), ('Log level', 'log_level_str'),\n+             ('Message', 'msg')]\n+  font = Font('12')\n+  can_edit = Bool(False)\n+  timestamp_width = Float(0.18)\n+  log_level_width = Float(0.07)\n+  msg_width = Float(0.75)\n+  can_drop = Bool(False)\n+\n+  def get_tooltip(self, obj, name, row, column):\n+    \"\"\"\n+    Define the tooltip messages for user mouse-over. Depends on column.\n+    Column is an integer with 0 index starting from left.\n+    No tooltip for the \"message\" column.  Parameters omitted as the\n+    \"\"\"\n+    if column == 0:\n+      return TIMESTAMP_TOOLTIP\n+    if column == 1:\n+      return LOG_LEVEL_TOOLTIP\n+    else:\n+      return None\n+\n+class LogItem(HasTraits):\n+  \"\"\"\n+  This class handles items in the list of log entries\n+  Parameters\n+  ----------\n+  log_level  : int\n+    integer representing the log level\n+  timestamp : str\n+    the time that the console read the log item\n+  msg : str\n+    the text of the message\n+  \"\"\"\n+  log_level = Int\n+  timestamp = Str\n+  msg = Str\n+\n+  # log level string maps the int into a the string via the global ALL_LOG_LEVELS dict\n+  # If we can't find the int in the dict, we print \"UNKNOWN\"\n+  log_level_str = Property(fget=lambda self:\n+                           ALL_LOG_LEVELS.get(self.log_level, \"UNKNOWN\"),\n+                           depends_on='log_level')\n+  def __init__(self, msg, level):\n+    \"\"\"\n+    Constructor for logitem\n+    Notes:\n+    ----------\n+    Timestamp initailzies to current system time\n+    msg is passed in by the user\n+    \"\"\"\n+    self.log_level = level\n+    # remove line breaks from the message\n+    self.msg = msg.rstrip('\\n')\n+    # set timestamp\n+    self.timestamp = time.strftime(\"%b %d %Y %H:%M:%S\")\n+\n+  def matches_log_level_filter(self, log_level):\n+    \"\"\"\n+    Function to perform filtering of a message based upon the loglevel passed\n+    Parameters\n+    ----------\n+    log_level : int\n+      Log level on which to filter\n+    Returns","path":"piksi_tools/console/output_list.py","position":151,"original_position":151,"commit_id":"d8035e68c1b76b0b38ca2a55f3daa59cc38c6eda","original_commit_id":"d8035e68c1b76b0b38ca2a55f3daa59cc38c6eda","user":{"login":"mookerji","id":353255,"avatar_url":"https://avatars.githubusercontent.com/u/353255?v=3","gravatar_id":"","url":"https://api.github.com/users/mookerji","html_url":"https://github.com/mookerji","followers_url":"https://api.github.com/users/mookerji/followers","following_url":"https://api.github.com/users/mookerji/following{/other_user}","gists_url":"https://api.github.com/users/mookerji/gists{/gist_id}","starred_url":"https://api.github.com/users/mookerji/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mookerji/subscriptions","organizations_url":"https://api.github.com/users/mookerji/orgs","repos_url":"https://api.github.com/users/mookerji/repos","events_url":"https://api.github.com/users/mookerji/events{/privacy}","received_events_url":"https://api.github.com/users/mookerji/received_events","type":"User","site_admin":false},"body":"nit: newline before `Returns`","created_at":"2015-08-17T20:47:48Z","updated_at":"2015-08-17T20:47:48Z","html_url":"https://github.com/swift-nav/piksi_tools/pull/155#discussion_r37234876","pull_request_url":"https://api.github.com/repos/swift-nav/piksi_tools/pulls/155","_links":{"self":{"href":"https://api.github.com/repos/swift-nav/piksi_tools/pulls/comments/37234876"},"html":{"href":"https://github.com/swift-nav/piksi_tools/pull/155#discussion_r37234876"},"pull_request":{"href":"https://api.github.com/repos/swift-nav/piksi_tools/pulls/155"}}},"pull_request":{"url":"https://api.github.com/repos/swift-nav/piksi_tools/pulls/155","id":41835563,"html_url":"https://github.com/swift-nav/piksi_tools/pull/155","diff_url":"https://github.com/swift-nav/piksi_tools/pull/155.diff","patch_url":"https://github.com/swift-nav/piksi_tools/pull/155.patch","issue_url":"https://api.github.com/repos/swift-nav/piksi_tools/issues/155","number":155,"state":"open","locked":false,"title":"Output list","user":{"login":"denniszollo","id":11276774,"avatar_url":"https://avatars.githubusercontent.com/u/11276774?v=3","gravatar_id":"","url":"https://api.github.com/users/denniszollo","html_url":"https://github.com/denniszollo","followers_url":"https://api.github.com/users/denniszollo/followers","following_url":"https://api.github.com/users/denniszollo/following{/other_user}","gists_url":"https://api.github.com/users/denniszollo/gists{/gist_id}","starred_url":"https://api.github.com/users/denniszollo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/denniszollo/subscriptions","organizations_url":"https://api.github.com/users/denniszollo/orgs","repos_url":"https://api.github.com/users/denniszollo/repos","events_url":"https://api.github.com/users/denniszollo/events{/privacy}","received_events_url":"https://api.github.com/users/denniszollo/received_events","type":"User","site_admin":false},"body":"Reformats the text blob of messages in the piksi console into a list sorted by date and annotated with log level.\r\nEnd result looks like this:\r\n![image](https://cloud.githubusercontent.com/assets/11276774/9147610/4af10ce8-3d1e-11e5-8ed5-0134d1efe9fd.png)\r\n\r\nThe Python stderr and stdout are assigned a \"console\" log level and cannot be filtered out.  Default filter level is Warning, which filters out info and debug messages.\r\n\r\ncc @mookerji @fnoble @gsmcmullin \r\nAny thoughts on this","created_at":"2015-08-06T21:13:02Z","updated_at":"2015-08-17T20:47:48Z","closed_at":null,"merged_at":null,"merge_commit_sha":"616aa4128539318ee96b72e2e7a07551b33d70a5","assignee":{"login":"denniszollo","id":11276774,"avatar_url":"https://avatars.githubusercontent.com/u/11276774?v=3","gravatar_id":"","url":"https://api.github.com/users/denniszollo","html_url":"https://github.com/denniszollo","followers_url":"https://api.github.com/users/denniszollo/followers","following_url":"https://api.github.com/users/denniszollo/following{/other_user}","gists_url":"https://api.github.com/users/denniszollo/gists{/gist_id}","starred_url":"https://api.github.com/users/denniszollo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/denniszollo/subscriptions","organizations_url":"https://api.github.com/users/denniszollo/orgs","repos_url":"https://api.github.com/users/denniszollo/repos","events_url":"https://api.github.com/users/denniszollo/events{/privacy}","received_events_url":"https://api.github.com/users/denniszollo/received_events","type":"User","site_admin":false},"milestone":null,"commits_url":"https://api.github.com/repos/swift-nav/piksi_tools/pulls/155/commits","review_comments_url":"https://api.github.com/repos/swift-nav/piksi_tools/pulls/155/comments","review_comment_url":"https://api.github.com/repos/swift-nav/piksi_tools/pulls/comments{/number}","comments_url":"https://api.github.com/repos/swift-nav/piksi_tools/issues/155/comments","statuses_url":"https://api.github.com/repos/swift-nav/piksi_tools/statuses/d8035e68c1b76b0b38ca2a55f3daa59cc38c6eda","head":{"label":"denniszollo:output_list","ref":"output_list","sha":"d8035e68c1b76b0b38ca2a55f3daa59cc38c6eda","user":{"login":"denniszollo","id":11276774,"avatar_url":"https://avatars.githubusercontent.com/u/11276774?v=3","gravatar_id":"","url":"https://api.github.com/users/denniszollo","html_url":"https://github.com/denniszollo","followers_url":"https://api.github.com/users/denniszollo/followers","following_url":"https://api.github.com/users/denniszollo/following{/other_user}","gists_url":"https://api.github.com/users/denniszollo/gists{/gist_id}","starred_url":"https://api.github.com/users/denniszollo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/denniszollo/subscriptions","organizations_url":"https://api.github.com/users/denniszollo/orgs","repos_url":"https://api.github.com/users/denniszollo/repos","events_url":"https://api.github.com/users/denniszollo/events{/privacy}","received_events_url":"https://api.github.com/users/denniszollo/received_events","type":"User","site_admin":false},"repo":{"id":33337777,"name":"piksi_tools","full_name":"denniszollo/piksi_tools","owner":{"login":"denniszollo","id":11276774,"avatar_url":"https://avatars.githubusercontent.com/u/11276774?v=3","gravatar_id":"","url":"https://api.github.com/users/denniszollo","html_url":"https://github.com/denniszollo","followers_url":"https://api.github.com/users/denniszollo/followers","following_url":"https://api.github.com/users/denniszollo/following{/other_user}","gists_url":"https://api.github.com/users/denniszollo/gists{/gist_id}","starred_url":"https://api.github.com/users/denniszollo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/denniszollo/subscriptions","organizations_url":"https://api.github.com/users/denniszollo/orgs","repos_url":"https://api.github.com/users/denniszollo/repos","events_url":"https://api.github.com/users/denniszollo/events{/privacy}","received_events_url":"https://api.github.com/users/denniszollo/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/denniszollo/piksi_tools","description":"Tools for the Piksi GNSS receiver.","fork":true,"url":"https://api.github.com/repos/denniszollo/piksi_tools","forks_url":"https://api.github.com/repos/denniszollo/piksi_tools/forks","keys_url":"https://api.github.com/repos/denniszollo/piksi_tools/keys{/key_id}","collaborators_url":"https://api.github.com/repos/denniszollo/piksi_tools/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/denniszollo/piksi_tools/teams","hooks_url":"https://api.github.com/repos/denniszollo/piksi_tools/hooks","issue_events_url":"https://api.github.com/repos/denniszollo/piksi_tools/issues/events{/number}","events_url":"https://api.github.com/repos/denniszollo/piksi_tools/events","assignees_url":"https://api.github.com/repos/denniszollo/piksi_tools/assignees{/user}","branches_url":"https://api.github.com/repos/denniszollo/piksi_tools/branches{/branch}","tags_url":"https://api.github.com/repos/denniszollo/piksi_tools/tags","blobs_url":"https://api.github.com/repos/denniszollo/piksi_tools/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/denniszollo/piksi_tools/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/denniszollo/piksi_tools/git/refs{/sha}","trees_url":"https://api.github.com/repos/denniszollo/piksi_tools/git/trees{/sha}","statuses_url":"https://api.github.com/repos/denniszollo/piksi_tools/statuses/{sha}","languages_url":"https://api.github.com/repos/denniszollo/piksi_tools/languages","stargazers_url":"https://api.github.com/repos/denniszollo/piksi_tools/stargazers","contributors_url":"https://api.github.com/repos/denniszollo/piksi_tools/contributors","subscribers_url":"https://api.github.com/repos/denniszollo/piksi_tools/subscribers","subscription_url":"https://api.github.com/repos/denniszollo/piksi_tools/subscription","commits_url":"https://api.github.com/repos/denniszollo/piksi_tools/commits{/sha}","git_commits_url":"https://api.github.com/repos/denniszollo/piksi_tools/git/commits{/sha}","comments_url":"https://api.github.com/repos/denniszollo/piksi_tools/comments{/number}","issue_comment_url":"https://api.github.com/repos/denniszollo/piksi_tools/issues/comments{/number}","contents_url":"https://api.github.com/repos/denniszollo/piksi_tools/contents/{+path}","compare_url":"https://api.github.com/repos/denniszollo/piksi_tools/compare/{base}...{head}","merges_url":"https://api.github.com/repos/denniszollo/piksi_tools/merges","archive_url":"https://api.github.com/repos/denniszollo/piksi_tools/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/denniszollo/piksi_tools/downloads","issues_url":"https://api.github.com/repos/denniszollo/piksi_tools/issues{/number}","pulls_url":"https://api.github.com/repos/denniszollo/piksi_tools/pulls{/number}","milestones_url":"https://api.github.com/repos/denniszollo/piksi_tools/milestones{/number}","notifications_url":"https://api.github.com/repos/denniszollo/piksi_tools/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/denniszollo/piksi_tools/labels{/name}","releases_url":"https://api.github.com/repos/denniszollo/piksi_tools/releases{/id}","created_at":"2015-04-03T00:05:20Z","updated_at":"2015-04-03T00:05:23Z","pushed_at":"2015-08-11T21:43:40Z","git_url":"git://github.com/denniszollo/piksi_tools.git","ssh_url":"git@github.com:denniszollo/piksi_tools.git","clone_url":"https://github.com/denniszollo/piksi_tools.git","svn_url":"https://github.com/denniszollo/piksi_tools","homepage":null,"size":1258,"stargazers_count":0,"watchers_count":0,"language":"Python","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"swift-nav:master","ref":"master","sha":"9b97afb4059c2bece1e774e3feb1215ba6f7d268","user":{"login":"swift-nav","id":1069835,"avatar_url":"https://avatars.githubusercontent.com/u/1069835?v=3","gravatar_id":"","url":"https://api.github.com/users/swift-nav","html_url":"https://github.com/swift-nav","followers_url":"https://api.github.com/users/swift-nav/followers","following_url":"https://api.github.com/users/swift-nav/following{/other_user}","gists_url":"https://api.github.com/users/swift-nav/gists{/gist_id}","starred_url":"https://api.github.com/users/swift-nav/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/swift-nav/subscriptions","organizations_url":"https://api.github.com/users/swift-nav/orgs","repos_url":"https://api.github.com/users/swift-nav/repos","events_url":"https://api.github.com/users/swift-nav/events{/privacy}","received_events_url":"https://api.github.com/users/swift-nav/received_events","type":"Organization","site_admin":false},"repo":{"id":33265971,"name":"piksi_tools","full_name":"swift-nav/piksi_tools","owner":{"login":"swift-nav","id":1069835,"avatar_url":"https://avatars.githubusercontent.com/u/1069835?v=3","gravatar_id":"","url":"https://api.github.com/users/swift-nav","html_url":"https://github.com/swift-nav","followers_url":"https://api.github.com/users/swift-nav/followers","following_url":"https://api.github.com/users/swift-nav/following{/other_user}","gists_url":"https://api.github.com/users/swift-nav/gists{/gist_id}","starred_url":"https://api.github.com/users/swift-nav/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/swift-nav/subscriptions","organizations_url":"https://api.github.com/users/swift-nav/orgs","repos_url":"https://api.github.com/users/swift-nav/repos","events_url":"https://api.github.com/users/swift-nav/events{/privacy}","received_events_url":"https://api.github.com/users/swift-nav/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/swift-nav/piksi_tools","description":"Tools for the Piksi GNSS receiver.","fork":false,"url":"https://api.github.com/repos/swift-nav/piksi_tools","forks_url":"https://api.github.com/repos/swift-nav/piksi_tools/forks","keys_url":"https://api.github.com/repos/swift-nav/piksi_tools/keys{/key_id}","collaborators_url":"https://api.github.com/repos/swift-nav/piksi_tools/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/swift-nav/piksi_tools/teams","hooks_url":"https://api.github.com/repos/swift-nav/piksi_tools/hooks","issue_events_url":"https://api.github.com/repos/swift-nav/piksi_tools/issues/events{/number}","events_url":"https://api.github.com/repos/swift-nav/piksi_tools/events","assignees_url":"https://api.github.com/repos/swift-nav/piksi_tools/assignees{/user}","branches_url":"https://api.github.com/repos/swift-nav/piksi_tools/branches{/branch}","tags_url":"https://api.github.com/repos/swift-nav/piksi_tools/tags","blobs_url":"https://api.github.com/repos/swift-nav/piksi_tools/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/swift-nav/piksi_tools/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/swift-nav/piksi_tools/git/refs{/sha}","trees_url":"https://api.github.com/repos/swift-nav/piksi_tools/git/trees{/sha}","statuses_url":"https://api.github.com/repos/swift-nav/piksi_tools/statuses/{sha}","languages_url":"https://api.github.com/repos/swift-nav/piksi_tools/languages","stargazers_url":"https://api.github.com/repos/swift-nav/piksi_tools/stargazers","contributors_url":"https://api.github.com/repos/swift-nav/piksi_tools/contributors","subscribers_url":"https://api.github.com/repos/swift-nav/piksi_tools/subscribers","subscription_url":"https://api.github.com/repos/swift-nav/piksi_tools/subscription","commits_url":"https://api.github.com/repos/swift-nav/piksi_tools/commits{/sha}","git_commits_url":"https://api.github.com/repos/swift-nav/piksi_tools/git/commits{/sha}","comments_url":"https://api.github.com/repos/swift-nav/piksi_tools/comments{/number}","issue_comment_url":"https://api.github.com/repos/swift-nav/piksi_tools/issues/comments{/number}","contents_url":"https://api.github.com/repos/swift-nav/piksi_tools/contents/{+path}","compare_url":"https://api.github.com/repos/swift-nav/piksi_tools/compare/{base}...{head}","merges_url":"https://api.github.com/repos/swift-nav/piksi_tools/merges","archive_url":"https://api.github.com/repos/swift-nav/piksi_tools/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/swift-nav/piksi_tools/downloads","issues_url":"https://api.github.com/repos/swift-nav/piksi_tools/issues{/number}","pulls_url":"https://api.github.com/repos/swift-nav/piksi_tools/pulls{/number}","milestones_url":"https://api.github.com/repos/swift-nav/piksi_tools/milestones{/number}","notifications_url":"https://api.github.com/repos/swift-nav/piksi_tools/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/swift-nav/piksi_tools/labels{/name}","releases_url":"https://api.github.com/repos/swift-nav/piksi_tools/releases{/id}","created_at":"2015-04-01T18:47:25Z","updated_at":"2015-06-23T22:06:42Z","pushed_at":"2015-08-16T14:45:28Z","git_url":"git://github.com/swift-nav/piksi_tools.git","ssh_url":"git@github.com:swift-nav/piksi_tools.git","clone_url":"https://github.com/swift-nav/piksi_tools.git","svn_url":"https://github.com/swift-nav/piksi_tools","homepage":null,"size":3584,"stargazers_count":1,"watchers_count":1,"language":"Python","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":13,"mirror_url":null,"open_issues_count":60,"forks":13,"open_issues":60,"watchers":1,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/swift-nav/piksi_tools/pulls/155"},"html":{"href":"https://github.com/swift-nav/piksi_tools/pull/155"},"issue":{"href":"https://api.github.com/repos/swift-nav/piksi_tools/issues/155"},"comments":{"href":"https://api.github.com/repos/swift-nav/piksi_tools/issues/155/comments"},"review_comments":{"href":"https://api.github.com/repos/swift-nav/piksi_tools/pulls/155/comments"},"review_comment":{"href":"https://api.github.com/repos/swift-nav/piksi_tools/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/swift-nav/piksi_tools/pulls/155/commits"},"statuses":{"href":"https://api.github.com/repos/swift-nav/piksi_tools/statuses/d8035e68c1b76b0b38ca2a55f3daa59cc38c6eda"}}}}