{"action":"created","comment":{"url":"https://api.github.com/repos/sbt/zinc/pulls/comments/221269769","pull_request_review_id":159881549,"id":221269769,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIyMTI2OTc2OQ==","diff_hunk":"@@ -176,7 +176,7 @@ class IncrementalCompilerImpl extends IncrementalCompiler {\n \n         val msg =\n           s\"\"\"## Exception when compiling $numberSources to $outputString\n-             |${e.getMessage}\n+             |${e.toString}","path":"zinc/src/main/scala/sbt/internal/inc/IncrementalCompilerImpl.scala","position":5,"original_position":5,"commit_id":"c60b9be4560096847c714aeeaaa2b2e7e8e9415f","original_commit_id":"c60b9be4560096847c714aeeaaa2b2e7e8e9415f","user":{"login":"jvican","id":2462974,"node_id":"MDQ6VXNlcjI0NjI5NzQ=","avatar_url":"https://avatars0.githubusercontent.com/u/2462974?v=4","gravatar_id":"","url":"https://api.github.com/users/jvican","html_url":"https://github.com/jvican","followers_url":"https://api.github.com/users/jvican/followers","following_url":"https://api.github.com/users/jvican/following{/other_user}","gists_url":"https://api.github.com/users/jvican/gists{/gist_id}","starred_url":"https://api.github.com/users/jvican/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jvican/subscriptions","organizations_url":"https://api.github.com/users/jvican/orgs","repos_url":"https://api.github.com/users/jvican/repos","events_url":"https://api.github.com/users/jvican/events{/privacy}","received_events_url":"https://api.github.com/users/jvican/received_events","type":"User","site_admin":false},"body":"Why this change? Is it to see the message of a nested exception that bubbled up?","created_at":"2018-09-28T14:21:49Z","updated_at":"2018-09-28T14:21:49Z","html_url":"https://github.com/sbt/zinc/pull/597#discussion_r221269769","pull_request_url":"https://api.github.com/repos/sbt/zinc/pulls/597","author_association":"MEMBER","_links":{"self":{"href":"https://api.github.com/repos/sbt/zinc/pulls/comments/221269769"},"html":{"href":"https://github.com/sbt/zinc/pull/597#discussion_r221269769"},"pull_request":{"href":"https://api.github.com/repos/sbt/zinc/pulls/597"}}},"pull_request":{"url":"https://api.github.com/repos/sbt/zinc/pulls/597","id":215911126,"node_id":"MDExOlB1bGxSZXF1ZXN0MjE1OTExMTI2","html_url":"https://github.com/sbt/zinc/pull/597","diff_url":"https://github.com/sbt/zinc/pull/597.diff","patch_url":"https://github.com/sbt/zinc/pull/597.patch","issue_url":"https://api.github.com/repos/sbt/zinc/issues/597","number":597,"state":"open","locked":false,"title":"Straight to jar compilation","user":{"login":"lukaszwawrzyk","id":10235198,"node_id":"MDQ6VXNlcjEwMjM1MTk4","avatar_url":"https://avatars2.githubusercontent.com/u/10235198?v=4","gravatar_id":"","url":"https://api.github.com/users/lukaszwawrzyk","html_url":"https://github.com/lukaszwawrzyk","followers_url":"https://api.github.com/users/lukaszwawrzyk/followers","following_url":"https://api.github.com/users/lukaszwawrzyk/following{/other_user}","gists_url":"https://api.github.com/users/lukaszwawrzyk/gists{/gist_id}","starred_url":"https://api.github.com/users/lukaszwawrzyk/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lukaszwawrzyk/subscriptions","organizations_url":"https://api.github.com/users/lukaszwawrzyk/orgs","repos_url":"https://api.github.com/users/lukaszwawrzyk/repos","events_url":"https://api.github.com/users/lukaszwawrzyk/events{/privacy}","received_events_url":"https://api.github.com/users/lukaszwawrzyk/received_events","type":"User","site_admin":false},"body":"This PR represents my work on implementing straight to jar compilation in zinc (https://github.com/sbt/zinc/issues/305).\r\n\r\nTo enable the feature, one should specify output as .jar file. This will cause scalac to write files to jar directly. This worked before the PR, but obviously some stuff had to be adjusted for the actual incremental compilation to work.\r\n\r\n# Most important things that had to be handled\r\n - pruning - deleting files from jar instead of from a folder\r\n - merging - if we have a previous output jar it has to be merged with the one produced in next compilation\r\n - javac output - javac is not able to compile to jar, I am zipping the output and merging it with scalac output\r\n - representing jared products - I used sytanx like: `/develop/zinc/target/output.jar!sbt/internal/inc/Compile.class`\r\n - code that relies on classes being plain files - had to be ifed to work with jars as well\r\n\r\nMost of the details related to the feature are in `sbt.internal.inc.STJ` object and something similar in `xsbt.STJ` as it is difficult to share code between those.\r\n\r\n# Optimizations\r\nZipFileSystem was not good enough as it was rewriting jars. What I done is I took that code and kept only the code that allows to manipulate the index. Reading and writing the index to file from ZipFileSystem was most efficient implementation I could find. On top of that I implemented the required operations in performant manner.\r\n - merging: The jars are concated except for the index. Then the indices are read from both files, merged and written the new index at the end.\r\n - deleting: Files are only removed from the index.\r\n - transactional class file manager: The index is stored at the beginning of compilation. In case of a failure, The old index is written back to the jar,\r\n - reading stamps: The whole index is read once and timestamps are cached.\r\n\r\n# Other changes\r\nAPI of `ReadStamps` was altered - I added `reset()` method to easly allow reseting cache of product timestamps between compilations. This is because I made the stamper stateful to avoid reopening jar for each product (that would kill the performance).\r\n\r\nScripted tests were updated to run for both STJ and regular compilation. Running scripted with STJ requires changing a hardcoded flag in `IncHandler`. I was just using it for development. I am open for discussion on how to do it properly and whether we should e.g. run all scripted tests twice for each build and how to implement that.\r\n\r\nSlight addition was to allow disabling compression with a flag when exporting analysis (performance).\r\n\r\nAnother small addition is to ignore change of `-d` option for javac as it is overriden anyway.\r\n\r\nThis PR also contains multiple changes related to Windows file system. Mostly about closing things properly to avoid locks (mostly jars). This includes fixing scripted tests on Windows (large percentage of them were failing because of inability to clear the temp dir between tests). There are still a couple of them that are flaky, but I didn't investigate it further.\r\n\r\n---\r\n\r\n```\r\nTHIS PROGRAM IS SUBJECT TO THE TERMS OF THE BSD 3-CLAUSE LICENSE.\r\n\r\nTHE FOLLOWING DISCLAIMER APPLIES TO ALL SOFTWARE CODE AND OTHER MATERIALS CONTRIBUTED IN CONNECTION WITH THIS SOFTWARE:\r\nTHIS SOFTWARE IS LICENSED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r\nMERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE AND ANY WARRANTY OF NON-INFRINGEMENT, ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR\r\nANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,\r\nOR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING\r\nIN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THIS SOFTWARE MAY BE REDISTRIBUTED TO OTHERS ONLY BY EFFECTIVELY USING THIS OR\r\nANOTHER EQUIVALENT DISCLAIMER IN ADDITION TO ANY OTHER REQUIRED LICENSE TERMS.\r\nONLY THE SOFTWARE CODE AND OTHER MATERIALS CONTRIBUTED IN CONNECTION WITH THIS SOFTWARE, IF ANY, THAT ARE ATTACHED TO (OR OTHERWISE ACCOMPANY) THIS SUBMISSION (AND ORDINARY\r\nCOURSE CONTRIBUTIONS OF FUTURES PATCHES THERETO) ARE TO BE CONSIDERED A CONTRIBUTION. NO OTHER SOFTWARE CODE OR MATERIALS ARE A CONTRIBUTION.\r\n```","created_at":"2018-09-17T08:54:59Z","updated_at":"2018-09-28T14:21:49Z","closed_at":null,"merged_at":null,"merge_commit_sha":"1cb88b9f24f269f85c934e2b26733f111fa0e61e","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[{"id":543128879,"node_id":"MDU6TGFiZWw1NDMxMjg4Nzk=","url":"https://api.github.com/repos/sbt/zinc/labels/binary%20api","name":"binary api","color":"14FFAD","default":false},{"id":543119240,"node_id":"MDU6TGFiZWw1NDMxMTkyNDA=","url":"https://api.github.com/repos/sbt/zinc/labels/community","name":"community","color":"1d76db","default":false},{"id":543561868,"node_id":"MDU6TGFiZWw1NDM1NjE4Njg=","url":"https://api.github.com/repos/sbt/zinc/labels/discussion","name":"discussion","color":"ff1476","default":false},{"id":630667306,"node_id":"MDU6TGFiZWw2MzA2NjczMDY=","url":"https://api.github.com/repos/sbt/zinc/labels/feature","name":"feature","color":"14dbff","default":false}],"milestone":null,"commits_url":"https://api.github.com/repos/sbt/zinc/pulls/597/commits","review_comments_url":"https://api.github.com/repos/sbt/zinc/pulls/597/comments","review_comment_url":"https://api.github.com/repos/sbt/zinc/pulls/comments{/number}","comments_url":"https://api.github.com/repos/sbt/zinc/issues/597/comments","statuses_url":"https://api.github.com/repos/sbt/zinc/statuses/c60b9be4560096847c714aeeaaa2b2e7e8e9415f","head":{"label":"lukaszwawrzyk:stj2","ref":"stj2","sha":"c60b9be4560096847c714aeeaaa2b2e7e8e9415f","user":{"login":"lukaszwawrzyk","id":10235198,"node_id":"MDQ6VXNlcjEwMjM1MTk4","avatar_url":"https://avatars2.githubusercontent.com/u/10235198?v=4","gravatar_id":"","url":"https://api.github.com/users/lukaszwawrzyk","html_url":"https://github.com/lukaszwawrzyk","followers_url":"https://api.github.com/users/lukaszwawrzyk/followers","following_url":"https://api.github.com/users/lukaszwawrzyk/following{/other_user}","gists_url":"https://api.github.com/users/lukaszwawrzyk/gists{/gist_id}","starred_url":"https://api.github.com/users/lukaszwawrzyk/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lukaszwawrzyk/subscriptions","organizations_url":"https://api.github.com/users/lukaszwawrzyk/orgs","repos_url":"https://api.github.com/users/lukaszwawrzyk/repos","events_url":"https://api.github.com/users/lukaszwawrzyk/events{/privacy}","received_events_url":"https://api.github.com/users/lukaszwawrzyk/received_events","type":"User","site_admin":false},"repo":{"id":135289329,"node_id":"MDEwOlJlcG9zaXRvcnkxMzUyODkzMjk=","name":"zinc","full_name":"lukaszwawrzyk/zinc","private":false,"owner":{"login":"lukaszwawrzyk","id":10235198,"node_id":"MDQ6VXNlcjEwMjM1MTk4","avatar_url":"https://avatars2.githubusercontent.com/u/10235198?v=4","gravatar_id":"","url":"https://api.github.com/users/lukaszwawrzyk","html_url":"https://github.com/lukaszwawrzyk","followers_url":"https://api.github.com/users/lukaszwawrzyk/followers","following_url":"https://api.github.com/users/lukaszwawrzyk/following{/other_user}","gists_url":"https://api.github.com/users/lukaszwawrzyk/gists{/gist_id}","starred_url":"https://api.github.com/users/lukaszwawrzyk/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lukaszwawrzyk/subscriptions","organizations_url":"https://api.github.com/users/lukaszwawrzyk/orgs","repos_url":"https://api.github.com/users/lukaszwawrzyk/repos","events_url":"https://api.github.com/users/lukaszwawrzyk/events{/privacy}","received_events_url":"https://api.github.com/users/lukaszwawrzyk/received_events","type":"User","site_admin":false},"html_url":"https://github.com/lukaszwawrzyk/zinc","description":"Scala incremental compiler library, originally part of sbt","fork":true,"url":"https://api.github.com/repos/lukaszwawrzyk/zinc","forks_url":"https://api.github.com/repos/lukaszwawrzyk/zinc/forks","keys_url":"https://api.github.com/repos/lukaszwawrzyk/zinc/keys{/key_id}","collaborators_url":"https://api.github.com/repos/lukaszwawrzyk/zinc/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/lukaszwawrzyk/zinc/teams","hooks_url":"https://api.github.com/repos/lukaszwawrzyk/zinc/hooks","issue_events_url":"https://api.github.com/repos/lukaszwawrzyk/zinc/issues/events{/number}","events_url":"https://api.github.com/repos/lukaszwawrzyk/zinc/events","assignees_url":"https://api.github.com/repos/lukaszwawrzyk/zinc/assignees{/user}","branches_url":"https://api.github.com/repos/lukaszwawrzyk/zinc/branches{/branch}","tags_url":"https://api.github.com/repos/lukaszwawrzyk/zinc/tags","blobs_url":"https://api.github.com/repos/lukaszwawrzyk/zinc/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/lukaszwawrzyk/zinc/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/lukaszwawrzyk/zinc/git/refs{/sha}","trees_url":"https://api.github.com/repos/lukaszwawrzyk/zinc/git/trees{/sha}","statuses_url":"https://api.github.com/repos/lukaszwawrzyk/zinc/statuses/{sha}","languages_url":"https://api.github.com/repos/lukaszwawrzyk/zinc/languages","stargazers_url":"https://api.github.com/repos/lukaszwawrzyk/zinc/stargazers","contributors_url":"https://api.github.com/repos/lukaszwawrzyk/zinc/contributors","subscribers_url":"https://api.github.com/repos/lukaszwawrzyk/zinc/subscribers","subscription_url":"https://api.github.com/repos/lukaszwawrzyk/zinc/subscription","commits_url":"https://api.github.com/repos/lukaszwawrzyk/zinc/commits{/sha}","git_commits_url":"https://api.github.com/repos/lukaszwawrzyk/zinc/git/commits{/sha}","comments_url":"https://api.github.com/repos/lukaszwawrzyk/zinc/comments{/number}","issue_comment_url":"https://api.github.com/repos/lukaszwawrzyk/zinc/issues/comments{/number}","contents_url":"https://api.github.com/repos/lukaszwawrzyk/zinc/contents/{+path}","compare_url":"https://api.github.com/repos/lukaszwawrzyk/zinc/compare/{base}...{head}","merges_url":"https://api.github.com/repos/lukaszwawrzyk/zinc/merges","archive_url":"https://api.github.com/repos/lukaszwawrzyk/zinc/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/lukaszwawrzyk/zinc/downloads","issues_url":"https://api.github.com/repos/lukaszwawrzyk/zinc/issues{/number}","pulls_url":"https://api.github.com/repos/lukaszwawrzyk/zinc/pulls{/number}","milestones_url":"https://api.github.com/repos/lukaszwawrzyk/zinc/milestones{/number}","notifications_url":"https://api.github.com/repos/lukaszwawrzyk/zinc/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/lukaszwawrzyk/zinc/labels{/name}","releases_url":"https://api.github.com/repos/lukaszwawrzyk/zinc/releases{/id}","deployments_url":"https://api.github.com/repos/lukaszwawrzyk/zinc/deployments","created_at":"2018-05-29T11:58:28Z","updated_at":"2018-05-29T11:58:32Z","pushed_at":"2018-09-28T09:02:31Z","git_url":"git://github.com/lukaszwawrzyk/zinc.git","ssh_url":"git@github.com:lukaszwawrzyk/zinc.git","clone_url":"https://github.com/lukaszwawrzyk/zinc.git","svn_url":"https://github.com/lukaszwawrzyk/zinc","homepage":"","size":12614,"stargazers_count":0,"watchers_count":0,"language":"Scala","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"license":{"key":"other","name":"NOASSERTION","spdx_id":"NOASSERTION","url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":0,"open_issues":0,"watchers":0,"default_branch":"1.x"}},"base":{"label":"sbt:develop","ref":"develop","sha":"64aa612552780dd24ef6b68885e7269d73a9bfe8","user":{"login":"sbt","id":1158012,"node_id":"MDEyOk9yZ2FuaXphdGlvbjExNTgwMTI=","avatar_url":"https://avatars2.githubusercontent.com/u/1158012?v=4","gravatar_id":"","url":"https://api.github.com/users/sbt","html_url":"https://github.com/sbt","followers_url":"https://api.github.com/users/sbt/followers","following_url":"https://api.github.com/users/sbt/following{/other_user}","gists_url":"https://api.github.com/users/sbt/gists{/gist_id}","starred_url":"https://api.github.com/users/sbt/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sbt/subscriptions","organizations_url":"https://api.github.com/users/sbt/orgs","repos_url":"https://api.github.com/users/sbt/repos","events_url":"https://api.github.com/users/sbt/events{/privacy}","received_events_url":"https://api.github.com/users/sbt/received_events","type":"Organization","site_admin":false},"repo":{"id":40210247,"node_id":"MDEwOlJlcG9zaXRvcnk0MDIxMDI0Nw==","name":"zinc","full_name":"sbt/zinc","private":false,"owner":{"login":"sbt","id":1158012,"node_id":"MDEyOk9yZ2FuaXphdGlvbjExNTgwMTI=","avatar_url":"https://avatars2.githubusercontent.com/u/1158012?v=4","gravatar_id":"","url":"https://api.github.com/users/sbt","html_url":"https://github.com/sbt","followers_url":"https://api.github.com/users/sbt/followers","following_url":"https://api.github.com/users/sbt/following{/other_user}","gists_url":"https://api.github.com/users/sbt/gists{/gist_id}","starred_url":"https://api.github.com/users/sbt/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sbt/subscriptions","organizations_url":"https://api.github.com/users/sbt/orgs","repos_url":"https://api.github.com/users/sbt/repos","events_url":"https://api.github.com/users/sbt/events{/privacy}","received_events_url":"https://api.github.com/users/sbt/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/sbt/zinc","description":"Scala incremental compiler library, originally part of sbt","fork":false,"url":"https://api.github.com/repos/sbt/zinc","forks_url":"https://api.github.com/repos/sbt/zinc/forks","keys_url":"https://api.github.com/repos/sbt/zinc/keys{/key_id}","collaborators_url":"https://api.github.com/repos/sbt/zinc/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/sbt/zinc/teams","hooks_url":"https://api.github.com/repos/sbt/zinc/hooks","issue_events_url":"https://api.github.com/repos/sbt/zinc/issues/events{/number}","events_url":"https://api.github.com/repos/sbt/zinc/events","assignees_url":"https://api.github.com/repos/sbt/zinc/assignees{/user}","branches_url":"https://api.github.com/repos/sbt/zinc/branches{/branch}","tags_url":"https://api.github.com/repos/sbt/zinc/tags","blobs_url":"https://api.github.com/repos/sbt/zinc/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/sbt/zinc/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/sbt/zinc/git/refs{/sha}","trees_url":"https://api.github.com/repos/sbt/zinc/git/trees{/sha}","statuses_url":"https://api.github.com/repos/sbt/zinc/statuses/{sha}","languages_url":"https://api.github.com/repos/sbt/zinc/languages","stargazers_url":"https://api.github.com/repos/sbt/zinc/stargazers","contributors_url":"https://api.github.com/repos/sbt/zinc/contributors","subscribers_url":"https://api.github.com/repos/sbt/zinc/subscribers","subscription_url":"https://api.github.com/repos/sbt/zinc/subscription","commits_url":"https://api.github.com/repos/sbt/zinc/commits{/sha}","git_commits_url":"https://api.github.com/repos/sbt/zinc/git/commits{/sha}","comments_url":"https://api.github.com/repos/sbt/zinc/comments{/number}","issue_comment_url":"https://api.github.com/repos/sbt/zinc/issues/comments{/number}","contents_url":"https://api.github.com/repos/sbt/zinc/contents/{+path}","compare_url":"https://api.github.com/repos/sbt/zinc/compare/{base}...{head}","merges_url":"https://api.github.com/repos/sbt/zinc/merges","archive_url":"https://api.github.com/repos/sbt/zinc/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/sbt/zinc/downloads","issues_url":"https://api.github.com/repos/sbt/zinc/issues{/number}","pulls_url":"https://api.github.com/repos/sbt/zinc/pulls{/number}","milestones_url":"https://api.github.com/repos/sbt/zinc/milestones{/number}","notifications_url":"https://api.github.com/repos/sbt/zinc/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/sbt/zinc/labels{/name}","releases_url":"https://api.github.com/repos/sbt/zinc/releases{/id}","deployments_url":"https://api.github.com/repos/sbt/zinc/deployments","created_at":"2015-08-04T21:32:58Z","updated_at":"2018-09-26T11:20:29Z","pushed_at":"2018-09-28T09:02:32Z","git_url":"git://github.com/sbt/zinc.git","ssh_url":"git@github.com:sbt/zinc.git","clone_url":"https://github.com/sbt/zinc.git","svn_url":"https://github.com/sbt/zinc","homepage":"","size":11459,"stargazers_count":171,"watchers_count":171,"language":"Scala","has_issues":true,"has_projects":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":72,"mirror_url":null,"archived":false,"open_issues_count":68,"license":{"key":"other","name":"NOASSERTION","spdx_id":"NOASSERTION","url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":72,"open_issues":68,"watchers":171,"default_branch":"develop"}},"_links":{"self":{"href":"https://api.github.com/repos/sbt/zinc/pulls/597"},"html":{"href":"https://github.com/sbt/zinc/pull/597"},"issue":{"href":"https://api.github.com/repos/sbt/zinc/issues/597"},"comments":{"href":"https://api.github.com/repos/sbt/zinc/issues/597/comments"},"review_comments":{"href":"https://api.github.com/repos/sbt/zinc/pulls/597/comments"},"review_comment":{"href":"https://api.github.com/repos/sbt/zinc/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/sbt/zinc/pulls/597/commits"},"statuses":{"href":"https://api.github.com/repos/sbt/zinc/statuses/c60b9be4560096847c714aeeaaa2b2e7e8e9415f"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"jvican"}}