{"action":"created","comment":{"url":"https://api.github.com/repos/BinaryAnalysisPlatform/bap/pulls/comments/30285374","id":30285374,"diff_hunk":"@@ -3822,6 +3860,377 @@ module Std : sig\n     val to_graph : block table -> t -> Graph.t\n   end\n \n+  (** BAP IR.\n+\n+      Program is a hierarchy of program entities.\n+\n+  *)\n+  type 'a term\n+\n+  type program\n+  type sub\n+  type arg\n+  type blk\n+  type phi\n+  type def\n+  type jmp\n+\n+  type tid\n+  type call\n+\n+  type label =\n+    | Direct of tid\n+    | Indirect of exp\n+\n+  type jmp_kind =\n+    | Call of call\n+    | Goto of label\n+\n+  type ('a,'b) cls\n+\n+  val sub_t : (program, sub) cls\n+  val arg_t : (sub, arg) cls\n+  val blk_t : (sub, blk) cls\n+  val phi_t : (blk, phi) cls\n+  val def_t : (blk, def) cls\n+  val jmp_t : (blk, jmp) cls\n+\n+\n+  module Tid : Regular with type t = tid\n+\n+  (** IR language term.  *)\n+  module Term : sig\n+    (** IR is used to model a program. A program model is expressed as\n+        a formula built of terms. *)\n+\n+    (** term type  *)\n+    type 'a t = 'a term\n+\n+    (** [clone term] creates an object with a fresh new identifier that\n+        has the same contents as [term], i.e., that is syntactically the\n+        same. *)\n+    val clone : 'a t -> 'a t\n+\n+    (** [same x y] returns true if [x] and [y] represents the same\n+        object, i.e., [Tid.(tid x = tid y)] *)\n+    val same : 'a t -> 'a t -> bool\n+\n+    (** [name t] returns name of the term  *)\n+    val name : 'a t -> string\n+\n+    (** [tid entity] returns the unique tidentifier of the [entity]  *)\n+    val tid : 'a t -> tid\n+\n+    (** [find t p id] is [Some c] if term [p] has a subterm of type [t]\n+        such that [tid c = id].  *)\n+    val find : ('a,'b) cls -> 'a term -> tid -> 'b term option\n+\n+    (** [update t p c] if term [p] contains a term with id equal to\n+        [tid c] then return [p] with this term substituted with [p] *)\n+    val update : ('a,'b) cls -> 'a term -> 'b term -> 'a term\n+\n+    (** [remove t p id] returns a block that doesn't contain element\n+        with the given [id] *)\n+    val remove : ('a,_) cls -> 'a term -> tid -> 'a term\n+\n+    (** [to_sequence ?rev t p] returns all subterms of type [t] of the\n+        given term [p] *)\n+    val to_sequence : ?rev:bool -> ('a,'b) cls -> 'a term -> 'b term seq\n+\n+    (** [map t p ~f] returns term [p] with all subterms of type [t]\n+        mapped with function [f] *)\n+    val map : ('a,'b) cls -> 'a term -> f:('b term -> 'b term) -> 'a term\n+\n+    (** [filter_map t p ~f] returns term [p] with all subterms of type [t]\n+        filter_mapped with function [f], i.e., all terms for which\n+        function [f] returned [Some thing] are substituted by the\n+        [thing], otherwise they're removed from the parent term  *)\n+    val filter_map : ('a,'b) cls -> 'a term -> f:('b term -> 'b term option) -> 'a term\n+\n+    (** [concat_map t p ~f] substitute subterm [c] of type [t] in parent term\n+        [p] with [f c]. If [f c] is an empty list, then [c] doesn't\n+        occur in a new parent term, if [f c] is a singleton list, then\n+        [c] is substituted with the [f c], like in [map]. If [f c] is a\n+        list of [n] elements, then in the place of [c] this [n] elements\n+        are inserted.  *)\n+    val concat_map : ('a,'b) cls -> 'a term -> f:('b term -> 'b term list) -> 'a term\n+\n+    (** [filter t p ~f] returns a term [p] with subterms [c] for which\n+        [f c = false] removed. *)\n+    val filter : ('a,'b) cls -> 'a term -> f:('b term -> bool) -> 'a term\n+\n+    (** [next t p id] returns a term that preceeds a term with a given\n+        [id], if such exists.  *)\n+    val next : ('a,'b) cls -> 'a term -> tid -> 'b term option\n+\n+    (** [next t p id] returns a term that is after a term with a given\n+        [id], if such exists.  *)\n+    val prev : ('a,'b) cls -> 'a term -> tid -> 'b term option\n+\n+    (** [after t ?rev p tid] returns all subterms in term [p] that occur\n+        after a term with a given [tid]. if [rev] is [true] or omitted then\n+        terms are returned in the evaluation order. Otherwise\n+        they're reversed. If there is no term with a given [tid],\n+        then an empty sequence is returned. *)\n+    val after : ('a,'b) cls -> ?rev:bool -> 'a term -> tid -> 'b term seq\n+\n+    (** [before t ?rev p tid] returns all term that occurs before\n+        defintion with given [tid] in blk. If there is no such\n+        definition, then the sequence will be empty.  @param rev has the\n+        same meaning as in {!after}.  *)\n+    val before : ('a,'b) cls -> ?rev:bool -> 'a term -> tid -> 'b term seq\n+\n+    (** [append t ~after:this p c] returns the [p] term with [c]\n+        appended after [this] term. If [after] is not specified,\n+        then append [def] to the end of the parent term (if it makes\n+        sense, otherwise it is just added).  If [this] doesn't\n+        occur in the [p] term then do nothing. The term tid is\n+        preserved.  *)\n+    val append : ('a,'b) cls -> ?after:tid -> 'a term -> 'b term -> 'a term\n+\n+    (** [prepend t ~before:this p c] returns the [p] with [c] inserted\n+        before [this] term. If [before] is left unspecified, then\n+        insert the [c] at the beginning of the [p] if it is a sequence,\n+        otherwise just insert. If [this] is specified but doesn't occur\n+        in the [p] then [p] is returned as is.  In all cases, the\n+        returned term has the same [tid] as [p]. *)\n+    val prepend : ('a,'b) cls -> ?before:tid -> 'a term -> 'b term -> 'a term\n+\n+  end\n+\n+  (** Program.  *)\n+  module Program : sig\n+    (** Program is a collection of function terms. *)\n+\n+    type t = program term\n+\n+    (** [create ()] creates an empty program. *)\n+    val create : unit -> t\n+\n+    (** [lookup t program id] is like {{!find}find} but performs deep\n+        lookup in the whole [program] for a term with a given [id].\n+        This function is memoized, so it has amortized O(1) complexity,\n+        with a wostcase complexity of $O(N)$, where $N$ is the total\n+        amount of terms in program.  *)\n+    val lookup : (_,'b) cls -> t -> tid -> 'b term option\n+\n+    (** [parent t program id] is [Some p] iff [find t p id <> None]  *)\n+    val parent : ('a,'b) cls -> t -> tid -> 'a term option\n+\n+    module Builder : sig\n+      type t\n+      val create : ?tid:tid  -> ?subs:int -> unit -> t\n+      val add_sub : t -> sub term -> unit\n+      val result : t -> program term\n+    end\n+\n+    include Regular with type t := t\n+  end\n+\n+  (** Function.  *)\n+  module Sub : sig\n+    (** Function is a set of blocks.\n+        The first block of a function is considered an entry block.\n+    *)\n+    type t = sub term\n+\n+    val create : ?name:string -> unit -> t\n+\n+    val name : t -> string\n+\n+    module Builder : sig\n+      type t\n+      val create : ?tid:tid -> ?args:int -> ?blks:int -> ?name:string -> unit -> t\n+      val add_blk : t -> blk term -> unit\n+      val add_arg : t -> arg term -> unit\n+      val result : t -> sub term\n+    end\n+\n+    include Regular with type t := t\n+  end\n+\n+  (** Block.  *)\n+  module Blk : sig","path":"lib/bap/bap.mli","position":405,"original_position":405,"commit_id":"74cdee48818225e8b43d39803c97471903ef6d1f","original_commit_id":"74cdee48818225e8b43d39803c97471903ef6d1f","user":{"login":"dbrumley","id":2975959,"avatar_url":"https://avatars.githubusercontent.com/u/2975959?v=3","gravatar_id":"","url":"https://api.github.com/users/dbrumley","html_url":"https://github.com/dbrumley","followers_url":"https://api.github.com/users/dbrumley/followers","following_url":"https://api.github.com/users/dbrumley/following{/other_user}","gists_url":"https://api.github.com/users/dbrumley/gists{/gist_id}","starred_url":"https://api.github.com/users/dbrumley/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dbrumley/subscriptions","organizations_url":"https://api.github.com/users/dbrumley/orgs","repos_url":"https://api.github.com/users/dbrumley/repos","events_url":"https://api.github.com/users/dbrumley/events{/privacy}","received_events_url":"https://api.github.com/users/dbrumley/received_events","type":"User","site_admin":false},"body":"I'm probably missing it, but wouldn't `pred` and `succ` be really handy with blocks?","created_at":"2015-05-13T23:12:16Z","updated_at":"2015-05-13T23:12:16Z","html_url":"https://github.com/BinaryAnalysisPlatform/bap/pull/214#discussion_r30285374","pull_request_url":"https://api.github.com/repos/BinaryAnalysisPlatform/bap/pulls/214","_links":{"self":{"href":"https://api.github.com/repos/BinaryAnalysisPlatform/bap/pulls/comments/30285374"},"html":{"href":"https://github.com/BinaryAnalysisPlatform/bap/pull/214#discussion_r30285374"},"pull_request":{"href":"https://api.github.com/repos/BinaryAnalysisPlatform/bap/pulls/214"}}},"pull_request":{"url":"https://api.github.com/repos/BinaryAnalysisPlatform/bap/pulls/214","id":35372599,"html_url":"https://github.com/BinaryAnalysisPlatform/bap/pull/214","diff_url":"https://github.com/BinaryAnalysisPlatform/bap/pull/214.diff","patch_url":"https://github.com/BinaryAnalysisPlatform/bap/pull/214.patch","issue_url":"https://api.github.com/repos/BinaryAnalysisPlatform/bap/issues/214","number":214,"state":"closed","locked":false,"title":"Introduce Intermediate Representation.","user":{"login":"ivg","id":2336698,"avatar_url":"https://avatars.githubusercontent.com/u/2336698?v=3","gravatar_id":"","url":"https://api.github.com/users/ivg","html_url":"https://github.com/ivg","followers_url":"https://api.github.com/users/ivg/followers","following_url":"https://api.github.com/users/ivg/following{/other_user}","gists_url":"https://api.github.com/users/ivg/gists{/gist_id}","starred_url":"https://api.github.com/users/ivg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ivg/subscriptions","organizations_url":"https://api.github.com/users/ivg/orgs","repos_url":"https://api.github.com/users/ivg/repos","events_url":"https://api.github.com/users/ivg/events{/privacy}","received_events_url":"https://api.github.com/users/ivg/received_events","type":"User","site_admin":false},"body":"This PR adds long-awaited BAP IR. It is still work-in-progress (IR is\r\nitself ready, but it is still far from being released). So I'm not going\r\nto advertise the change right now. But everyone is welcome to review,\r\nanyway.\r\n\r\nAlso, this PR moved stuff from `Tag` module to `Value`, and adds\r\n`Value.Map` data structure.","created_at":"2015-05-13T21:27:35Z","updated_at":"2015-05-13T23:12:16Z","closed_at":"2015-05-13T21:58:12Z","merged_at":"2015-05-13T21:58:12Z","merge_commit_sha":"d0163a9f3907a06d43fba47c5db7e82deaaaf6ea","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/BinaryAnalysisPlatform/bap/pulls/214/commits","review_comments_url":"https://api.github.com/repos/BinaryAnalysisPlatform/bap/pulls/214/comments","review_comment_url":"https://api.github.com/repos/BinaryAnalysisPlatform/bap/pulls/comments{/number}","comments_url":"https://api.github.com/repos/BinaryAnalysisPlatform/bap/issues/214/comments","statuses_url":"https://api.github.com/repos/BinaryAnalysisPlatform/bap/statuses/74cdee48818225e8b43d39803c97471903ef6d1f","head":{"label":"ivg:ir-pr","ref":"ir-pr","sha":"74cdee48818225e8b43d39803c97471903ef6d1f","user":{"login":"ivg","id":2336698,"avatar_url":"https://avatars.githubusercontent.com/u/2336698?v=3","gravatar_id":"","url":"https://api.github.com/users/ivg","html_url":"https://github.com/ivg","followers_url":"https://api.github.com/users/ivg/followers","following_url":"https://api.github.com/users/ivg/following{/other_user}","gists_url":"https://api.github.com/users/ivg/gists{/gist_id}","starred_url":"https://api.github.com/users/ivg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ivg/subscriptions","organizations_url":"https://api.github.com/users/ivg/orgs","repos_url":"https://api.github.com/users/ivg/repos","events_url":"https://api.github.com/users/ivg/events{/privacy}","received_events_url":"https://api.github.com/users/ivg/received_events","type":"User","site_admin":false},"repo":{"id":26191389,"name":"bap","full_name":"ivg/bap","owner":{"login":"ivg","id":2336698,"avatar_url":"https://avatars.githubusercontent.com/u/2336698?v=3","gravatar_id":"","url":"https://api.github.com/users/ivg","html_url":"https://github.com/ivg","followers_url":"https://api.github.com/users/ivg/followers","following_url":"https://api.github.com/users/ivg/following{/other_user}","gists_url":"https://api.github.com/users/ivg/gists{/gist_id}","starred_url":"https://api.github.com/users/ivg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ivg/subscriptions","organizations_url":"https://api.github.com/users/ivg/orgs","repos_url":"https://api.github.com/users/ivg/repos","events_url":"https://api.github.com/users/ivg/events{/privacy}","received_events_url":"https://api.github.com/users/ivg/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/ivg/bap","description":"BAP Core Library","fork":true,"url":"https://api.github.com/repos/ivg/bap","forks_url":"https://api.github.com/repos/ivg/bap/forks","keys_url":"https://api.github.com/repos/ivg/bap/keys{/key_id}","collaborators_url":"https://api.github.com/repos/ivg/bap/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/ivg/bap/teams","hooks_url":"https://api.github.com/repos/ivg/bap/hooks","issue_events_url":"https://api.github.com/repos/ivg/bap/issues/events{/number}","events_url":"https://api.github.com/repos/ivg/bap/events","assignees_url":"https://api.github.com/repos/ivg/bap/assignees{/user}","branches_url":"https://api.github.com/repos/ivg/bap/branches{/branch}","tags_url":"https://api.github.com/repos/ivg/bap/tags","blobs_url":"https://api.github.com/repos/ivg/bap/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/ivg/bap/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/ivg/bap/git/refs{/sha}","trees_url":"https://api.github.com/repos/ivg/bap/git/trees{/sha}","statuses_url":"https://api.github.com/repos/ivg/bap/statuses/{sha}","languages_url":"https://api.github.com/repos/ivg/bap/languages","stargazers_url":"https://api.github.com/repos/ivg/bap/stargazers","contributors_url":"https://api.github.com/repos/ivg/bap/contributors","subscribers_url":"https://api.github.com/repos/ivg/bap/subscribers","subscription_url":"https://api.github.com/repos/ivg/bap/subscription","commits_url":"https://api.github.com/repos/ivg/bap/commits{/sha}","git_commits_url":"https://api.github.com/repos/ivg/bap/git/commits{/sha}","comments_url":"https://api.github.com/repos/ivg/bap/comments{/number}","issue_comment_url":"https://api.github.com/repos/ivg/bap/issues/comments{/number}","contents_url":"https://api.github.com/repos/ivg/bap/contents/{+path}","compare_url":"https://api.github.com/repos/ivg/bap/compare/{base}...{head}","merges_url":"https://api.github.com/repos/ivg/bap/merges","archive_url":"https://api.github.com/repos/ivg/bap/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/ivg/bap/downloads","issues_url":"https://api.github.com/repos/ivg/bap/issues{/number}","pulls_url":"https://api.github.com/repos/ivg/bap/pulls{/number}","milestones_url":"https://api.github.com/repos/ivg/bap/milestones{/number}","notifications_url":"https://api.github.com/repos/ivg/bap/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/ivg/bap/labels{/name}","releases_url":"https://api.github.com/repos/ivg/bap/releases{/id}","created_at":"2014-11-04T22:20:23Z","updated_at":"2015-05-05T21:48:34Z","pushed_at":"2015-05-13T21:20:59Z","git_url":"git://github.com/ivg/bap.git","ssh_url":"git@github.com:ivg/bap.git","clone_url":"https://github.com/ivg/bap.git","svn_url":"https://github.com/ivg/bap","homepage":null,"size":3154,"stargazers_count":0,"watchers_count":0,"language":"OCaml","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":1,"forks":0,"open_issues":1,"watchers":0,"default_branch":"master"}},"base":{"label":"BinaryAnalysisPlatform:master","ref":"master","sha":"6caa0b98c5190b33cb2b335c79f4f8d1eabf8565","user":{"login":"BinaryAnalysisPlatform","id":8669375,"avatar_url":"https://avatars.githubusercontent.com/u/8669375?v=3","gravatar_id":"","url":"https://api.github.com/users/BinaryAnalysisPlatform","html_url":"https://github.com/BinaryAnalysisPlatform","followers_url":"https://api.github.com/users/BinaryAnalysisPlatform/followers","following_url":"https://api.github.com/users/BinaryAnalysisPlatform/following{/other_user}","gists_url":"https://api.github.com/users/BinaryAnalysisPlatform/gists{/gist_id}","starred_url":"https://api.github.com/users/BinaryAnalysisPlatform/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/BinaryAnalysisPlatform/subscriptions","organizations_url":"https://api.github.com/users/BinaryAnalysisPlatform/orgs","repos_url":"https://api.github.com/users/BinaryAnalysisPlatform/repos","events_url":"https://api.github.com/users/BinaryAnalysisPlatform/events{/privacy}","received_events_url":"https://api.github.com/users/BinaryAnalysisPlatform/received_events","type":"Organization","site_admin":false},"repo":{"id":25968851,"name":"bap","full_name":"BinaryAnalysisPlatform/bap","owner":{"login":"BinaryAnalysisPlatform","id":8669375,"avatar_url":"https://avatars.githubusercontent.com/u/8669375?v=3","gravatar_id":"","url":"https://api.github.com/users/BinaryAnalysisPlatform","html_url":"https://github.com/BinaryAnalysisPlatform","followers_url":"https://api.github.com/users/BinaryAnalysisPlatform/followers","following_url":"https://api.github.com/users/BinaryAnalysisPlatform/following{/other_user}","gists_url":"https://api.github.com/users/BinaryAnalysisPlatform/gists{/gist_id}","starred_url":"https://api.github.com/users/BinaryAnalysisPlatform/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/BinaryAnalysisPlatform/subscriptions","organizations_url":"https://api.github.com/users/BinaryAnalysisPlatform/orgs","repos_url":"https://api.github.com/users/BinaryAnalysisPlatform/repos","events_url":"https://api.github.com/users/BinaryAnalysisPlatform/events{/privacy}","received_events_url":"https://api.github.com/users/BinaryAnalysisPlatform/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/BinaryAnalysisPlatform/bap","description":"BAP Core Library","fork":false,"url":"https://api.github.com/repos/BinaryAnalysisPlatform/bap","forks_url":"https://api.github.com/repos/BinaryAnalysisPlatform/bap/forks","keys_url":"https://api.github.com/repos/BinaryAnalysisPlatform/bap/keys{/key_id}","collaborators_url":"https://api.github.com/repos/BinaryAnalysisPlatform/bap/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/BinaryAnalysisPlatform/bap/teams","hooks_url":"https://api.github.com/repos/BinaryAnalysisPlatform/bap/hooks","issue_events_url":"https://api.github.com/repos/BinaryAnalysisPlatform/bap/issues/events{/number}","events_url":"https://api.github.com/repos/BinaryAnalysisPlatform/bap/events","assignees_url":"https://api.github.com/repos/BinaryAnalysisPlatform/bap/assignees{/user}","branches_url":"https://api.github.com/repos/BinaryAnalysisPlatform/bap/branches{/branch}","tags_url":"https://api.github.com/repos/BinaryAnalysisPlatform/bap/tags","blobs_url":"https://api.github.com/repos/BinaryAnalysisPlatform/bap/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/BinaryAnalysisPlatform/bap/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/BinaryAnalysisPlatform/bap/git/refs{/sha}","trees_url":"https://api.github.com/repos/BinaryAnalysisPlatform/bap/git/trees{/sha}","statuses_url":"https://api.github.com/repos/BinaryAnalysisPlatform/bap/statuses/{sha}","languages_url":"https://api.github.com/repos/BinaryAnalysisPlatform/bap/languages","stargazers_url":"https://api.github.com/repos/BinaryAnalysisPlatform/bap/stargazers","contributors_url":"https://api.github.com/repos/BinaryAnalysisPlatform/bap/contributors","subscribers_url":"https://api.github.com/repos/BinaryAnalysisPlatform/bap/subscribers","subscription_url":"https://api.github.com/repos/BinaryAnalysisPlatform/bap/subscription","commits_url":"https://api.github.com/repos/BinaryAnalysisPlatform/bap/commits{/sha}","git_commits_url":"https://api.github.com/repos/BinaryAnalysisPlatform/bap/git/commits{/sha}","comments_url":"https://api.github.com/repos/BinaryAnalysisPlatform/bap/comments{/number}","issue_comment_url":"https://api.github.com/repos/BinaryAnalysisPlatform/bap/issues/comments{/number}","contents_url":"https://api.github.com/repos/BinaryAnalysisPlatform/bap/contents/{+path}","compare_url":"https://api.github.com/repos/BinaryAnalysisPlatform/bap/compare/{base}...{head}","merges_url":"https://api.github.com/repos/BinaryAnalysisPlatform/bap/merges","archive_url":"https://api.github.com/repos/BinaryAnalysisPlatform/bap/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/BinaryAnalysisPlatform/bap/downloads","issues_url":"https://api.github.com/repos/BinaryAnalysisPlatform/bap/issues{/number}","pulls_url":"https://api.github.com/repos/BinaryAnalysisPlatform/bap/pulls{/number}","milestones_url":"https://api.github.com/repos/BinaryAnalysisPlatform/bap/milestones{/number}","notifications_url":"https://api.github.com/repos/BinaryAnalysisPlatform/bap/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/BinaryAnalysisPlatform/bap/labels{/name}","releases_url":"https://api.github.com/repos/BinaryAnalysisPlatform/bap/releases{/id}","created_at":"2014-10-30T11:59:43Z","updated_at":"2015-05-13T01:00:09Z","pushed_at":"2015-05-13T21:58:12Z","git_url":"git://github.com/BinaryAnalysisPlatform/bap.git","ssh_url":"git@github.com:BinaryAnalysisPlatform/bap.git","clone_url":"https://github.com/BinaryAnalysisPlatform/bap.git","svn_url":"https://github.com/BinaryAnalysisPlatform/bap","homepage":null,"size":4609,"stargazers_count":111,"watchers_count":111,"language":"OCaml","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":34,"mirror_url":null,"open_issues_count":23,"forks":34,"open_issues":23,"watchers":111,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/BinaryAnalysisPlatform/bap/pulls/214"},"html":{"href":"https://github.com/BinaryAnalysisPlatform/bap/pull/214"},"issue":{"href":"https://api.github.com/repos/BinaryAnalysisPlatform/bap/issues/214"},"comments":{"href":"https://api.github.com/repos/BinaryAnalysisPlatform/bap/issues/214/comments"},"review_comments":{"href":"https://api.github.com/repos/BinaryAnalysisPlatform/bap/pulls/214/comments"},"review_comment":{"href":"https://api.github.com/repos/BinaryAnalysisPlatform/bap/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/BinaryAnalysisPlatform/bap/pulls/214/commits"},"statuses":{"href":"https://api.github.com/repos/BinaryAnalysisPlatform/bap/statuses/74cdee48818225e8b43d39803c97471903ef6d1f"}}}}