{"action":"created","comment":{"url":"https://api.github.com/repos/WebKitForWayland/webkit/pulls/comments/42721972","id":42721972,"diff_hunk":"@@ -38,33 +38,126 @@ using namespace WebCore;\n \n namespace WebKit {\n \n+// The idea for the array/map below comes from Blink's EditingBehavior.cpp.\n+\n+static const unsigned CtrlKey  = 1 << 0;\n+static const unsigned AltKey   = 1 << 1;\n+static const unsigned ShiftKey = 1 << 2;\n+static const unsigned MetaKey  = 1 << 3;\n+\n+// Keys with special meaning. These will be delegated to the editor using\n+// the execCommand() method\n+struct KeyDownEntry {\n+    unsigned virtualKey;\n+    unsigned modifiers;\n+    const char* name;\n+};\n+\n+static const KeyDownEntry keyDownEntries[] = {\n+    { VK_LEFT,   0,                  \"MoveLeft\"                                },\n+    { VK_LEFT,   ShiftKey,           \"MoveLeftAndModifySelection\"              },\n+    { VK_LEFT,   CtrlKey,            \"MoveWordLeft\"                            },\n+    { VK_LEFT,   CtrlKey | ShiftKey,\n+        \"MoveWordLeftAndModifySelection\"                                       },\n+    { VK_RIGHT,  0,                  \"MoveRight\"                               },\n+    { VK_RIGHT,  ShiftKey,           \"MoveRightAndModifySelection\"             },\n+    { VK_RIGHT,  CtrlKey,            \"MoveWordRight\"                           },\n+    { VK_RIGHT,  CtrlKey | ShiftKey, \"MoveWordRightAndModifySelection\"         },\n+    { VK_UP,     0,                  \"MoveUp\"                                  },\n+    { VK_UP,     ShiftKey,           \"MoveUpAndModifySelection\"                },\n+    { VK_PRIOR,  ShiftKey,           \"MovePageUpAndModifySelection\"            },\n+    { VK_DOWN,   0,                  \"MoveDown\"                                },\n+    { VK_DOWN,   ShiftKey,           \"MoveDownAndModifySelection\"              },\n+    { VK_NEXT,   ShiftKey,           \"MovePageDownAndModifySelection\"          },\n+    { VK_UP,     CtrlKey | ShiftKey, \"MoveParagraphBackwardAndModifySelection\" },\n+    { VK_DOWN,   CtrlKey | ShiftKey, \"MoveParagraphForwardAndModifySelection\"  },\n+    { VK_PRIOR,  0,                  \"MovePageUp\"                              },\n+    { VK_NEXT,   0,                  \"MovePageDown\"                            },\n+    { VK_HOME,   0,                  \"MoveToBeginningOfLine\"                   },\n+    { VK_HOME,   ShiftKey,\n+        \"MoveToBeginningOfLineAndModifySelection\"                              },\n+    { VK_HOME,   CtrlKey,            \"MoveToBeginningOfDocument\"               },\n+    { VK_HOME,   CtrlKey | ShiftKey,\n+        \"MoveToBeginningOfDocumentAndModifySelection\"                          },\n+    { VK_END,    0,                  \"MoveToEndOfLine\"                         },\n+    { VK_END,    ShiftKey,           \"MoveToEndOfLineAndModifySelection\"       },\n+    { VK_END,    CtrlKey,            \"MoveToEndOfDocument\"                     },\n+    { VK_END,    CtrlKey | ShiftKey,\n+        \"MoveToEndOfDocumentAndModifySelection\"                                },\n+    { VK_BACK,   0,                  \"DeleteBackward\"                          },\n+    { VK_BACK,   ShiftKey,           \"DeleteBackward\"                          },\n+    { VK_DELETE, 0,                  \"DeleteForward\"                           },\n+    { VK_BACK,   CtrlKey,            \"DeleteWordBackward\"                      },\n+    { VK_DELETE, CtrlKey,            \"DeleteWordForward\"                       },\n+    { 'B',         CtrlKey,          \"ToggleBold\"                              },\n+    { 'I',         CtrlKey,          \"ToggleItalic\"                            },\n+    { 'U',         CtrlKey,          \"ToggleUnderline\"                         },\n+    { VK_ESCAPE, 0,                  \"Cancel\"                                  },\n+    { VK_OEM_PERIOD, CtrlKey,        \"Cancel\"                                  },\n+    { VK_TAB,    0,                  \"InsertTab\"                               },\n+    { VK_TAB,    ShiftKey,           \"InsertBacktab\"                           },\n+    { VK_RETURN, 0,                  \"InsertNewline\"                           },\n+    { VK_RETURN, CtrlKey,            \"InsertNewline\"                           },\n+    { VK_RETURN, AltKey,             \"InsertNewline\"                           },\n+    { VK_RETURN, AltKey | ShiftKey,  \"InsertNewline\"                           },\n+    { VK_RETURN, ShiftKey,           \"InsertLineBreak\"                         },\n+    // These probably need handling somewhere else so do not execute them. The\n+    // 'Cut' command is removing text so let's avoid losing the user losing data\n+    // until we implement clipboard support wherever it should be.\n+    // { VK_INSERT, CtrlKey,            \"Copy\"                                    },\n+    // { VK_INSERT, ShiftKey,           \"Paste\"                                   },\n+    // { VK_DELETE, ShiftKey,           \"Cut\"                                     },\n+    // { 'C',         CtrlKey,          \"Copy\"                                    },\n+    // { 'V',         CtrlKey,          \"Paste\"                                   },\n+    // { 'V',         CtrlKey | ShiftKey, \"PasteAndMatchStyle\"                    },\n+    // { 'X',         CtrlKey,          \"Cut\"                                     },\n+    { 'A',         CtrlKey,          \"SelectAll\"                               },\n+    { 'Z',         CtrlKey,          \"Undo\"                                    },\n+    { 'Z',         CtrlKey | ShiftKey, \"Redo\"                                  },\n+    { 'Y',         CtrlKey,          \"Redo\"                                    },\n+    { VK_INSERT, 0,                  \"OverWrite\"                               },\n+};\n+\n+static const char* interpretKeyEvent(const KeyboardEvent& event)\n+{\n+    static HashMap<int, const char*>* keyDownCommandsMap = nullptr;\n+\n+    if (!keyDownCommandsMap) {\n+        keyDownCommandsMap = new HashMap<int, const char*>;\n+        unsigned arraysize = sizeof(keyDownEntries)/sizeof(keyDownEntries[0]);\n+        for (unsigned i = 0; i < arraysize; i++)\n+            keyDownCommandsMap->set(keyDownEntries[i].modifiers << 16 | keyDownEntries[i].virtualKey, keyDownEntries[i].name);\n+    }\n+\n+    unsigned modifiers = 0;\n+    if (event.shiftKey())\n+        modifiers |= ShiftKey;\n+    if (event.altKey())\n+        modifiers |= AltKey;\n+    if (event.ctrlKey())\n+        modifiers |= CtrlKey;\n+    if (event.metaKey())\n+        modifiers |= MetaKey;\n+\n+    int mapKey = modifiers << 16 | event.keyCode();\n+    return mapKey ? keyDownCommandsMap->get(mapKey) : 0;","path":"Source/WebKit2/WebProcess/WebCoreSupport/wpe/WebEditorClientWPE.cpp","position":106,"original_position":106,"commit_id":"129325fe5b3f32bc79c481f66232c886911d85fb","original_commit_id":"129325fe5b3f32bc79c481f66232c886911d85fb","user":{"login":"zdobersek","id":555764,"avatar_url":"https://avatars.githubusercontent.com/u/555764?v=3","gravatar_id":"","url":"https://api.github.com/users/zdobersek","html_url":"https://github.com/zdobersek","followers_url":"https://api.github.com/users/zdobersek/followers","following_url":"https://api.github.com/users/zdobersek/following{/other_user}","gists_url":"https://api.github.com/users/zdobersek/gists{/gist_id}","starred_url":"https://api.github.com/users/zdobersek/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/zdobersek/subscriptions","organizations_url":"https://api.github.com/users/zdobersek/orgs","repos_url":"https://api.github.com/users/zdobersek/repos","events_url":"https://api.github.com/users/zdobersek/events{/privacy}","received_events_url":"https://api.github.com/users/zdobersek/received_events","type":"User","site_admin":false},"body":"Return nullptr if there's no key.","created_at":"2015-10-22T08:20:34Z","updated_at":"2015-10-22T08:20:34Z","html_url":"https://github.com/WebKitForWayland/webkit/pull/7#discussion_r42721972","pull_request_url":"https://api.github.com/repos/WebKitForWayland/webkit/pulls/7","_links":{"self":{"href":"https://api.github.com/repos/WebKitForWayland/webkit/pulls/comments/42721972"},"html":{"href":"https://github.com/WebKitForWayland/webkit/pull/7#discussion_r42721972"},"pull_request":{"href":"https://api.github.com/repos/WebKitForWayland/webkit/pulls/7"}}},"pull_request":{"url":"https://api.github.com/repos/WebKitForWayland/webkit/pulls/7","id":48354916,"html_url":"https://github.com/WebKitForWayland/webkit/pull/7","diff_url":"https://github.com/WebKitForWayland/webkit/pull/7.diff","patch_url":"https://github.com/WebKitForWayland/webkit/pull/7.patch","issue_url":"https://api.github.com/repos/WebKitForWayland/webkit/issues/7","number":7,"state":"open","locked":false,"title":"WebEditorClientWPE: Support most keybindings and special keys","user":{"login":"csaavedra","id":2523171,"avatar_url":"https://avatars.githubusercontent.com/u/2523171?v=3","gravatar_id":"","url":"https://api.github.com/users/csaavedra","html_url":"https://github.com/csaavedra","followers_url":"https://api.github.com/users/csaavedra/followers","following_url":"https://api.github.com/users/csaavedra/following{/other_user}","gists_url":"https://api.github.com/users/csaavedra/gists{/gist_id}","starred_url":"https://api.github.com/users/csaavedra/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/csaavedra/subscriptions","organizations_url":"https://api.github.com/users/csaavedra/orgs","repos_url":"https://api.github.com/users/csaavedra/repos","events_url":"https://api.github.com/users/csaavedra/events{/privacy}","received_events_url":"https://api.github.com/users/csaavedra/received_events","type":"User","site_admin":false},"body":"This handles most common keybindings, including Shift selection,\r\nnavigation, etc.\r\n\r\nDo not handle yet clipboard commands as there is no clipboard support\r\nyet.","created_at":"2015-10-21T16:25:05Z","updated_at":"2015-10-22T08:20:34Z","closed_at":null,"merged_at":null,"merge_commit_sha":"a271c06b0673e92404e598099e8308bfa7931305","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/WebKitForWayland/webkit/pulls/7/commits","review_comments_url":"https://api.github.com/repos/WebKitForWayland/webkit/pulls/7/comments","review_comment_url":"https://api.github.com/repos/WebKitForWayland/webkit/pulls/comments{/number}","comments_url":"https://api.github.com/repos/WebKitForWayland/webkit/issues/7/comments","statuses_url":"https://api.github.com/repos/WebKitForWayland/webkit/statuses/129325fe5b3f32bc79c481f66232c886911d85fb","head":{"label":"WebKitForWayland:input","ref":"input","sha":"129325fe5b3f32bc79c481f66232c886911d85fb","user":{"login":"WebKitForWayland","id":10116105,"avatar_url":"https://avatars.githubusercontent.com/u/10116105?v=3","gravatar_id":"","url":"https://api.github.com/users/WebKitForWayland","html_url":"https://github.com/WebKitForWayland","followers_url":"https://api.github.com/users/WebKitForWayland/followers","following_url":"https://api.github.com/users/WebKitForWayland/following{/other_user}","gists_url":"https://api.github.com/users/WebKitForWayland/gists{/gist_id}","starred_url":"https://api.github.com/users/WebKitForWayland/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/WebKitForWayland/subscriptions","organizations_url":"https://api.github.com/users/WebKitForWayland/orgs","repos_url":"https://api.github.com/users/WebKitForWayland/repos","events_url":"https://api.github.com/users/WebKitForWayland/events{/privacy}","received_events_url":"https://api.github.com/users/WebKitForWayland/received_events","type":"Organization","site_admin":false},"repo":{"id":27720012,"name":"webkit","full_name":"WebKitForWayland/webkit","owner":{"login":"WebKitForWayland","id":10116105,"avatar_url":"https://avatars.githubusercontent.com/u/10116105?v=3","gravatar_id":"","url":"https://api.github.com/users/WebKitForWayland","html_url":"https://github.com/WebKitForWayland","followers_url":"https://api.github.com/users/WebKitForWayland/followers","following_url":"https://api.github.com/users/WebKitForWayland/following{/other_user}","gists_url":"https://api.github.com/users/WebKitForWayland/gists{/gist_id}","starred_url":"https://api.github.com/users/WebKitForWayland/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/WebKitForWayland/subscriptions","organizations_url":"https://api.github.com/users/WebKitForWayland/orgs","repos_url":"https://api.github.com/users/WebKitForWayland/repos","events_url":"https://api.github.com/users/WebKitForWayland/events{/privacy}","received_events_url":"https://api.github.com/users/WebKitForWayland/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/WebKitForWayland/webkit","description":"Unofficial mirror of the WebKit SVN repository","fork":true,"url":"https://api.github.com/repos/WebKitForWayland/webkit","forks_url":"https://api.github.com/repos/WebKitForWayland/webkit/forks","keys_url":"https://api.github.com/repos/WebKitForWayland/webkit/keys{/key_id}","collaborators_url":"https://api.github.com/repos/WebKitForWayland/webkit/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/WebKitForWayland/webkit/teams","hooks_url":"https://api.github.com/repos/WebKitForWayland/webkit/hooks","issue_events_url":"https://api.github.com/repos/WebKitForWayland/webkit/issues/events{/number}","events_url":"https://api.github.com/repos/WebKitForWayland/webkit/events","assignees_url":"https://api.github.com/repos/WebKitForWayland/webkit/assignees{/user}","branches_url":"https://api.github.com/repos/WebKitForWayland/webkit/branches{/branch}","tags_url":"https://api.github.com/repos/WebKitForWayland/webkit/tags","blobs_url":"https://api.github.com/repos/WebKitForWayland/webkit/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/WebKitForWayland/webkit/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/WebKitForWayland/webkit/git/refs{/sha}","trees_url":"https://api.github.com/repos/WebKitForWayland/webkit/git/trees{/sha}","statuses_url":"https://api.github.com/repos/WebKitForWayland/webkit/statuses/{sha}","languages_url":"https://api.github.com/repos/WebKitForWayland/webkit/languages","stargazers_url":"https://api.github.com/repos/WebKitForWayland/webkit/stargazers","contributors_url":"https://api.github.com/repos/WebKitForWayland/webkit/contributors","subscribers_url":"https://api.github.com/repos/WebKitForWayland/webkit/subscribers","subscription_url":"https://api.github.com/repos/WebKitForWayland/webkit/subscription","commits_url":"https://api.github.com/repos/WebKitForWayland/webkit/commits{/sha}","git_commits_url":"https://api.github.com/repos/WebKitForWayland/webkit/git/commits{/sha}","comments_url":"https://api.github.com/repos/WebKitForWayland/webkit/comments{/number}","issue_comment_url":"https://api.github.com/repos/WebKitForWayland/webkit/issues/comments{/number}","contents_url":"https://api.github.com/repos/WebKitForWayland/webkit/contents/{+path}","compare_url":"https://api.github.com/repos/WebKitForWayland/webkit/compare/{base}...{head}","merges_url":"https://api.github.com/repos/WebKitForWayland/webkit/merges","archive_url":"https://api.github.com/repos/WebKitForWayland/webkit/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/WebKitForWayland/webkit/downloads","issues_url":"https://api.github.com/repos/WebKitForWayland/webkit/issues{/number}","pulls_url":"https://api.github.com/repos/WebKitForWayland/webkit/pulls{/number}","milestones_url":"https://api.github.com/repos/WebKitForWayland/webkit/milestones{/number}","notifications_url":"https://api.github.com/repos/WebKitForWayland/webkit/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/WebKitForWayland/webkit/labels{/name}","releases_url":"https://api.github.com/repos/WebKitForWayland/webkit/releases{/id}","created_at":"2014-12-08T15:01:05Z","updated_at":"2015-10-21T13:59:37Z","pushed_at":"2015-10-22T05:33:12Z","git_url":"git://github.com/WebKitForWayland/webkit.git","ssh_url":"git@github.com:WebKitForWayland/webkit.git","clone_url":"https://github.com/WebKitForWayland/webkit.git","svn_url":"https://github.com/WebKitForWayland/webkit","homepage":"http://www.webkit.org/","size":6988731,"stargazers_count":17,"watchers_count":17,"language":null,"has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":6,"mirror_url":null,"open_issues_count":1,"forks":6,"open_issues":1,"watchers":17,"default_branch":"master"}},"base":{"label":"WebKitForWayland:master","ref":"master","sha":"f0ee8061c169a0d03dc82200b4fdd877b4b698a4","user":{"login":"WebKitForWayland","id":10116105,"avatar_url":"https://avatars.githubusercontent.com/u/10116105?v=3","gravatar_id":"","url":"https://api.github.com/users/WebKitForWayland","html_url":"https://github.com/WebKitForWayland","followers_url":"https://api.github.com/users/WebKitForWayland/followers","following_url":"https://api.github.com/users/WebKitForWayland/following{/other_user}","gists_url":"https://api.github.com/users/WebKitForWayland/gists{/gist_id}","starred_url":"https://api.github.com/users/WebKitForWayland/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/WebKitForWayland/subscriptions","organizations_url":"https://api.github.com/users/WebKitForWayland/orgs","repos_url":"https://api.github.com/users/WebKitForWayland/repos","events_url":"https://api.github.com/users/WebKitForWayland/events{/privacy}","received_events_url":"https://api.github.com/users/WebKitForWayland/received_events","type":"Organization","site_admin":false},"repo":{"id":27720012,"name":"webkit","full_name":"WebKitForWayland/webkit","owner":{"login":"WebKitForWayland","id":10116105,"avatar_url":"https://avatars.githubusercontent.com/u/10116105?v=3","gravatar_id":"","url":"https://api.github.com/users/WebKitForWayland","html_url":"https://github.com/WebKitForWayland","followers_url":"https://api.github.com/users/WebKitForWayland/followers","following_url":"https://api.github.com/users/WebKitForWayland/following{/other_user}","gists_url":"https://api.github.com/users/WebKitForWayland/gists{/gist_id}","starred_url":"https://api.github.com/users/WebKitForWayland/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/WebKitForWayland/subscriptions","organizations_url":"https://api.github.com/users/WebKitForWayland/orgs","repos_url":"https://api.github.com/users/WebKitForWayland/repos","events_url":"https://api.github.com/users/WebKitForWayland/events{/privacy}","received_events_url":"https://api.github.com/users/WebKitForWayland/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/WebKitForWayland/webkit","description":"Unofficial mirror of the WebKit SVN repository","fork":true,"url":"https://api.github.com/repos/WebKitForWayland/webkit","forks_url":"https://api.github.com/repos/WebKitForWayland/webkit/forks","keys_url":"https://api.github.com/repos/WebKitForWayland/webkit/keys{/key_id}","collaborators_url":"https://api.github.com/repos/WebKitForWayland/webkit/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/WebKitForWayland/webkit/teams","hooks_url":"https://api.github.com/repos/WebKitForWayland/webkit/hooks","issue_events_url":"https://api.github.com/repos/WebKitForWayland/webkit/issues/events{/number}","events_url":"https://api.github.com/repos/WebKitForWayland/webkit/events","assignees_url":"https://api.github.com/repos/WebKitForWayland/webkit/assignees{/user}","branches_url":"https://api.github.com/repos/WebKitForWayland/webkit/branches{/branch}","tags_url":"https://api.github.com/repos/WebKitForWayland/webkit/tags","blobs_url":"https://api.github.com/repos/WebKitForWayland/webkit/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/WebKitForWayland/webkit/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/WebKitForWayland/webkit/git/refs{/sha}","trees_url":"https://api.github.com/repos/WebKitForWayland/webkit/git/trees{/sha}","statuses_url":"https://api.github.com/repos/WebKitForWayland/webkit/statuses/{sha}","languages_url":"https://api.github.com/repos/WebKitForWayland/webkit/languages","stargazers_url":"https://api.github.com/repos/WebKitForWayland/webkit/stargazers","contributors_url":"https://api.github.com/repos/WebKitForWayland/webkit/contributors","subscribers_url":"https://api.github.com/repos/WebKitForWayland/webkit/subscribers","subscription_url":"https://api.github.com/repos/WebKitForWayland/webkit/subscription","commits_url":"https://api.github.com/repos/WebKitForWayland/webkit/commits{/sha}","git_commits_url":"https://api.github.com/repos/WebKitForWayland/webkit/git/commits{/sha}","comments_url":"https://api.github.com/repos/WebKitForWayland/webkit/comments{/number}","issue_comment_url":"https://api.github.com/repos/WebKitForWayland/webkit/issues/comments{/number}","contents_url":"https://api.github.com/repos/WebKitForWayland/webkit/contents/{+path}","compare_url":"https://api.github.com/repos/WebKitForWayland/webkit/compare/{base}...{head}","merges_url":"https://api.github.com/repos/WebKitForWayland/webkit/merges","archive_url":"https://api.github.com/repos/WebKitForWayland/webkit/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/WebKitForWayland/webkit/downloads","issues_url":"https://api.github.com/repos/WebKitForWayland/webkit/issues{/number}","pulls_url":"https://api.github.com/repos/WebKitForWayland/webkit/pulls{/number}","milestones_url":"https://api.github.com/repos/WebKitForWayland/webkit/milestones{/number}","notifications_url":"https://api.github.com/repos/WebKitForWayland/webkit/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/WebKitForWayland/webkit/labels{/name}","releases_url":"https://api.github.com/repos/WebKitForWayland/webkit/releases{/id}","created_at":"2014-12-08T15:01:05Z","updated_at":"2015-10-21T13:59:37Z","pushed_at":"2015-10-22T05:33:12Z","git_url":"git://github.com/WebKitForWayland/webkit.git","ssh_url":"git@github.com:WebKitForWayland/webkit.git","clone_url":"https://github.com/WebKitForWayland/webkit.git","svn_url":"https://github.com/WebKitForWayland/webkit","homepage":"http://www.webkit.org/","size":6988731,"stargazers_count":17,"watchers_count":17,"language":null,"has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":6,"mirror_url":null,"open_issues_count":1,"forks":6,"open_issues":1,"watchers":17,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/WebKitForWayland/webkit/pulls/7"},"html":{"href":"https://github.com/WebKitForWayland/webkit/pull/7"},"issue":{"href":"https://api.github.com/repos/WebKitForWayland/webkit/issues/7"},"comments":{"href":"https://api.github.com/repos/WebKitForWayland/webkit/issues/7/comments"},"review_comments":{"href":"https://api.github.com/repos/WebKitForWayland/webkit/pulls/7/comments"},"review_comment":{"href":"https://api.github.com/repos/WebKitForWayland/webkit/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/WebKitForWayland/webkit/pulls/7/commits"},"statuses":{"href":"https://api.github.com/repos/WebKitForWayland/webkit/statuses/129325fe5b3f32bc79c481f66232c886911d85fb"}}}}