for (;;);{"error":null,"payload":{"timeline":"\u003cdiv class=\"phui-timeline-shell phui-timeline-green\" data-sigil=\"transaction anchor-container\" data-meta=\"0_43\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/6jr7vs4rmmlnids4tac7\/PHID-FILE-clfyipsks65542hv4vpd\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/epriestley\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003ca name=\"234726\" id=\"234726\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill fill-has-color phui-timeline-icon-fill-green\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-arrow-right phui-timeline-icon\" data-meta=\"0_41\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/epriestley\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_0\"\u003eepriestley\u003c\/a\u003e triaged this task as \u003cspan class=\"phui-timeline-value\"\u003eNormal\u003c\/span\u003e priority.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#234726\" data-sigil=\"has-tooltip\" data-meta=\"0_40\"\u003e\u003cspan class=\"screen-only\"\u003eJan 27 2018, 9:52 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2018-01-27 21:52:20 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-pencil phui-timeline-icon\" data-meta=\"0_42\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/epriestley\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_2\"\u003eepriestley\u003c\/a\u003e created this task.\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_46\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"display: none;\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003ca name=\"234743\" id=\"234743\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-user-plus phui-timeline-icon\" data-meta=\"0_45\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/herald\/\" class=\"phui-handle\" data-sigil=\"hovercard\" data-meta=\"0_4\"\u003eHerald\u003c\/a\u003e added a subscriber: \u003ca href=\"\/p\/eadler\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_5\"\u003eeadler\u003c\/a\u003e. \u003cspan class=\"phui-timeline-extra-information\"\u003e \u00b7 \u003ca href=\"\/herald\/transcript\/304766\/\"\u003eView Herald Transcript\u003c\/a\u003e\u003c\/span\u003e\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#234743\" data-sigil=\"has-tooltip\" data-meta=\"0_44\"\u003e\u003cspan class=\"screen-only\"\u003eJan 27 2018, 9:52 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2018-01-27 21:52:20 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_50\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/6jr7vs4rmmlnids4tac7\/PHID-FILE-clfyipsks65542hv4vpd\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/epriestley\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003ca name=\"234748\" id=\"234748\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-link phui-timeline-icon\" data-meta=\"0_48\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/epriestley\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_6\"\u003eepriestley\u003c\/a\u003e mentioned this in \u003ca href=\"\/T11337\" class=\"phui-handle handle-status-closed\" data-sigil=\"hovercard\" data-meta=\"0_7\"\u003eT11337: Mail v3\u003c\/a\u003e.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#234748\" data-sigil=\"has-tooltip\" data-meta=\"0_47\"\u003e\u003cspan class=\"screen-only\"\u003eJan 27 2018, 9:53 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2018-01-27 21:53:32 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-columns phui-timeline-icon\" data-meta=\"0_49\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/epriestley\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_8\"\u003eepriestley\u003c\/a\u003e moved this task from \u003ca href=\"\/project\/board\/38\/\" class=\"phui-handle\" data-sigil=\"hovercard\" data-meta=\"0_9\"\u003eBacklog\u003c\/a\u003e to \u003ca href=\"\/project\/board\/38\/\" class=\"phui-handle handle-status-closed\" data-sigil=\"hovercard\" data-meta=\"0_10\"\u003eStamps\/Failover\u003c\/a\u003e on the \u003ca href=\"\/tag\/mail\/\" class=\"phui-handle\" data-sigil=\"hovercard\" data-meta=\"0_11\"\u003eMail\u003c\/a\u003e board.\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_53\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/6jr7vs4rmmlnids4tac7\/PHID-FILE-clfyipsks65542hv4vpd\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/epriestley\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003ca name=\"234762\" id=\"234762\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-link phui-timeline-icon\" data-meta=\"0_52\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/epriestley\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_12\"\u003eepriestley\u003c\/a\u003e mentioned this in \u003ca href=\"\/T12033\" class=\"phui-handle handle-status-closed\" data-sigil=\"hovercard\" data-meta=\"0_13\"\u003eT12033: Large diffs can still repeatedly fail to insert\u003c\/a\u003e.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#234762\" data-sigil=\"has-tooltip\" data-meta=\"0_51\"\u003e\u003cspan class=\"screen-only\"\u003eJan 27 2018, 9:55 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2018-01-27 21:55:56 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_56\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/6jr7vs4rmmlnids4tac7\/PHID-FILE-clfyipsks65542hv4vpd\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/epriestley\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003ca name=\"234770\" id=\"234770\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-pencil phui-timeline-icon\" data-meta=\"0_55\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/epriestley\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_14\"\u003eepriestley\u003c\/a\u003e updated the task description. \u003ca href=\"\/transactions\/detail\/PHID-XACT-TASK-4pwywbjun6dydl7\/\" data-sigil=\"workflow\"\u003e(Show Details)\u003c\/a\u003e\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#234770\" data-sigil=\"has-tooltip\" data-meta=\"0_54\"\u003e\u003cspan class=\"screen-only\"\u003eJan 27 2018, 9:58 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2018-01-27 21:58:30 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_59\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/unrt5yaeth5z2rbvq42d\/PHID-FILE-6oo6hgd5zcvgxcagqbix\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/fooishbar\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003ca name=\"234790\" id=\"234790\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-user-plus phui-timeline-icon\" data-meta=\"0_58\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/fooishbar\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_15\"\u003efooishbar\u003c\/a\u003e added a subscriber: \u003ca href=\"\/p\/fooishbar\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_16\"\u003efooishbar\u003c\/a\u003e.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#234790\" data-sigil=\"has-tooltip\" data-meta=\"0_57\"\u003e\u003cspan class=\"screen-only\"\u003eJan 28 2018, 8:40 AM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2018-01-28 08:40:06 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_62\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/nqci63nw44qxk2hsg6yh\/PHID-FILE-c2wegbhhpan7dxipmo7d\/profile-github_-profile.jpg)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/joshuaspence\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003ca name=\"234792\" id=\"234792\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-user-plus phui-timeline-icon\" data-meta=\"0_61\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/joshuaspence\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_17\"\u003ejoshuaspence\u003c\/a\u003e added a subscriber: \u003ca href=\"\/p\/joshuaspence\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_18\"\u003ejoshuaspence\u003c\/a\u003e.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#234792\" data-sigil=\"has-tooltip\" data-meta=\"0_60\"\u003e\u003cspan class=\"screen-only\"\u003eJan 28 2018, 7:26 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2018-01-28 19:26:32 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_65\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/6jr7vs4rmmlnids4tac7\/PHID-FILE-clfyipsks65542hv4vpd\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/epriestley\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003ca name=\"235002\" id=\"235002\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-pencil phui-timeline-icon\" data-meta=\"0_64\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/epriestley\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_19\"\u003eepriestley\u003c\/a\u003e updated the task description. \u003ca href=\"\/transactions\/detail\/PHID-XACT-TASK-lrghz3yovvniqyi\/\" data-sigil=\"workflow\"\u003e(Show Details)\u003c\/a\u003e\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#235002\" data-sigil=\"has-tooltip\" data-meta=\"0_63\"\u003e\u003cspan class=\"screen-only\"\u003eJan 31 2018, 7:26 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2018-01-31 19:26:31 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_68\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/jjugbwfi4r453hy6sufr\/PHID-FILE-e63tlwama5fewg4zfqyj\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/dkl\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003ca name=\"235003\" id=\"235003\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-user-plus phui-timeline-icon\" data-meta=\"0_67\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/dkl\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_20\"\u003edkl\u003c\/a\u003e added a subscriber: \u003ca href=\"\/p\/dkl\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_21\"\u003edkl\u003c\/a\u003e.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#235003\" data-sigil=\"has-tooltip\" data-meta=\"0_66\"\u003e\u003cspan class=\"screen-only\"\u003eJan 31 2018, 7:53 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2018-01-31 19:53:00 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_71\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/ha7fpr4n67jtaeonitot\/PHID-FILE-luoqw46wec4g2ptkp5pu\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/ftdysa\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003ca name=\"235004\" id=\"235004\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-user-plus phui-timeline-icon\" data-meta=\"0_70\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/ftdysa\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_22\"\u003eftdysa\u003c\/a\u003e added a subscriber: \u003ca href=\"\/p\/ftdysa\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_23\"\u003eftdysa\u003c\/a\u003e.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#235004\" data-sigil=\"has-tooltip\" data-meta=\"0_69\"\u003e\u003cspan class=\"screen-only\"\u003eJan 31 2018, 8:06 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2018-01-31 20:06:30 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_74\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/6jr7vs4rmmlnids4tac7\/PHID-FILE-clfyipsks65542hv4vpd\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/epriestley\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003ca name=\"235041\" id=\"235041\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-pencil phui-timeline-icon\" data-meta=\"0_73\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/epriestley\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_24\"\u003eepriestley\u003c\/a\u003e updated the task description. \u003ca href=\"\/transactions\/detail\/PHID-XACT-TASK-32s3rqe6v7p47ot\/\" data-sigil=\"workflow\"\u003e(Show Details)\u003c\/a\u003e\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#235041\" data-sigil=\"has-tooltip\" data-meta=\"0_72\"\u003e\u003cspan class=\"screen-only\"\u003eFeb 1 2018, 3:02 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2018-02-01 15:02:14 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_87\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-major-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/6jr7vs4rmmlnids4tac7\/PHID-FILE-clfyipsks65542hv4vpd\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/epriestley\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-badges\"\u003e\u003cul class=\"phui-badge-flex-view grouped flex-view-collapsed \"\u003e\u003cli class=\"phui-badge-flex-item\"\u003e\u003ca class=\"phui-badge-mini phui-badge-mini-grey \" href=\"\/badges\/view\/14\/\" data-sigil=\"has-tooltip\" data-meta=\"0_83\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-desktop\" data-meta=\"0_84\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/a\u003e\u003c\/li\u003e\u003cli class=\"phui-badge-flex-item\"\u003e\u003ca class=\"phui-badge-mini phui-badge-mini-orange \" href=\"\/badges\/view\/13\/\" data-sigil=\"has-tooltip\" data-meta=\"0_85\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-gift\" data-meta=\"0_86\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/a\u003e\u003c\/li\u003e\u003c\/ul\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003cdiv class=\"phui-timeline-inner-content\"\u003e\u003ca name=\"235042\" id=\"235042\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon phui-timeline-title-with-menu\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-comment phui-timeline-icon\" data-meta=\"0_82\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/epriestley\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_25\"\u003eepriestley\u003c\/a\u003e added a comment.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#235042\" data-sigil=\"has-tooltip\" data-meta=\"0_81\"\u003e\u003cspan class=\"screen-only\"\u003eFeb 1 2018, 3:14 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2018-02-01 15:14:54 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003ca href=\"#\" class=\"phui-timeline-menu\" aria-haspopup=\"true\" aria-expanded=\"false\" data-sigil=\"phui-dropdown-menu\" data-meta=\"0_79\"\u003e\u003cspan class=\"aural-only\"\u003eComment Actions\u003c\/span\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-caret-down\" data-meta=\"0_80\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-core-content\"\u003e\u003cspan class=\"transaction-comment\" data-sigil=\"transaction-comment\" data-meta=\"0_26\"\u003e\u003cdiv class=\"phabricator-remarkup\"\u003e\u003cp\u003eOn \u003ctt class=\"remarkup-monospaced\"\u003eThread-Topic\u003c\/tt\u003e, this very old thread suggests that Outlook can show the header in some cases: \u003ca href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=411601\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003ehttps:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=411601\u003c\/a\u003e\u003c\/p\u003e\n\n\u003cp\u003eBut given that many applications use the PHID only and no one has complained -- and that a comprehensive description of how clients thread mail seems to be arcane knowledge forbidden to human minds -- I think the "use PHIDs" plan is still a reasonable one. Use of Gmail with the Gmail web client is mandated by galactic law anyway so I'm sure Outlook will vanish from living memory soon.\u003c\/p\u003e\u003c\/div\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_100\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-major-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/6jr7vs4rmmlnids4tac7\/PHID-FILE-clfyipsks65542hv4vpd\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/epriestley\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-badges\"\u003e\u003cul class=\"phui-badge-flex-view grouped flex-view-collapsed \"\u003e\u003cli class=\"phui-badge-flex-item\"\u003e\u003ca class=\"phui-badge-mini phui-badge-mini-grey \" href=\"\/badges\/view\/14\/\" data-sigil=\"has-tooltip\" data-meta=\"0_96\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-desktop\" data-meta=\"0_97\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/a\u003e\u003c\/li\u003e\u003cli class=\"phui-badge-flex-item\"\u003e\u003ca class=\"phui-badge-mini phui-badge-mini-orange \" href=\"\/badges\/view\/13\/\" data-sigil=\"has-tooltip\" data-meta=\"0_98\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-gift\" data-meta=\"0_99\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/a\u003e\u003c\/li\u003e\u003c\/ul\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003cdiv class=\"phui-timeline-inner-content\"\u003e\u003ca name=\"235043\" id=\"235043\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon phui-timeline-title-with-menu\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-comment phui-timeline-icon\" data-meta=\"0_95\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/epriestley\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_27\"\u003eepriestley\u003c\/a\u003e added a comment.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#235043\" data-sigil=\"has-tooltip\" data-meta=\"0_94\"\u003e\u003cspan class=\"screen-only\"\u003eFeb 1 2018, 3:24 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2018-02-01 15:24:51 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003ca href=\"#\" class=\"phui-timeline-menu\" aria-haspopup=\"true\" aria-expanded=\"false\" data-sigil=\"phui-dropdown-menu\" data-meta=\"0_92\"\u003e\u003cspan class=\"aural-only\"\u003eComment Actions\u003c\/span\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-caret-down\" data-meta=\"0_93\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-core-content\"\u003e\u003cspan class=\"transaction-comment\" data-sigil=\"transaction-comment\" data-meta=\"0_28\"\u003e\u003cdiv class=\"phabricator-remarkup\"\u003e\u003cp\u003eAlthough I'm suppressing the \u003ctt class=\"remarkup-monospaced\"\u003eX-Phabricator-To\u003c\/tt\u003e and \u003ctt class=\"remarkup-monospaced\"\u003eX-Phabricator-Cc\u003c\/tt\u003e headers for "Must Encrypt" mail (and the "To: ..." and "Cc: ..." footers in the body), the recipients will still be visible in the actual "To" and "Cc" lines if \u003ctt class=\"remarkup-monospaced\"\u003emetamta.one-mail-per-recipient\u003c\/tt\u003e has been configured to \u003ctt class=\"remarkup-monospaced\"\u003efalse\u003c\/tt\u003e instead of the default (which is \u003ctt class=\"remarkup-monospaced\"\u003etrue\u003c\/tt\u003e).\u003c\/p\u003e\n\n\u003cp\u003eWe could possibly honor this setting by moving \u003cem\u003eeveryone\u003c\/em\u003e to BCC for "Must Encrypt" mail. For now, I don't plan to pursue that and will just "leak" To\/Cc information if \u003ctt class=\"remarkup-monospaced\"\u003emetamta.one-mail-per-recipient\u003c\/tt\u003e is off. I think this is relatively expected and predictable, but I'll update the documentation setting for that option to include this limitation in the long list of caveats and discouragement already present. I think the "value" of this disclosure is low, but I can imagine that an attacker who captures mail about a vulnerability and can view the recipient list may gain \u003cem\u003esome\u003c\/em\u003e information about the vulnerability: if the \u003ctt class=\"remarkup-monospaced\"\u003eTo\u003c\/tt\u003e list is \u003ctt class=\"remarkup-monospaced\"\u003ealice, bailey, clara\u003c\/tt\u003e and all three of them have the same technical area of focus\/responsibility, it's a good bet that the vulnerability is related to their mutual specialization.\u003c\/p\u003e\u003c\/div\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_103\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/6jr7vs4rmmlnids4tac7\/PHID-FILE-clfyipsks65542hv4vpd\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/epriestley\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003ca name=\"235044\" id=\"235044\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-pencil phui-timeline-icon\" data-meta=\"0_102\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/epriestley\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_29\"\u003eepriestley\u003c\/a\u003e updated the task description. \u003ca href=\"\/transactions\/detail\/PHID-XACT-TASK-hu24ymwapzvt7uc\/\" data-sigil=\"workflow\"\u003e(Show Details)\u003c\/a\u003e\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#235044\" data-sigil=\"has-tooltip\" data-meta=\"0_101\"\u003e\u003cspan class=\"screen-only\"\u003eFeb 1 2018, 3:26 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2018-02-01 15:26:20 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_116\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-major-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/6jr7vs4rmmlnids4tac7\/PHID-FILE-clfyipsks65542hv4vpd\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/epriestley\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-badges\"\u003e\u003cul class=\"phui-badge-flex-view grouped flex-view-collapsed \"\u003e\u003cli class=\"phui-badge-flex-item\"\u003e\u003ca class=\"phui-badge-mini phui-badge-mini-grey \" href=\"\/badges\/view\/14\/\" data-sigil=\"has-tooltip\" data-meta=\"0_112\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-desktop\" data-meta=\"0_113\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/a\u003e\u003c\/li\u003e\u003cli class=\"phui-badge-flex-item\"\u003e\u003ca class=\"phui-badge-mini phui-badge-mini-orange \" href=\"\/badges\/view\/13\/\" data-sigil=\"has-tooltip\" data-meta=\"0_114\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-gift\" data-meta=\"0_115\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/a\u003e\u003c\/li\u003e\u003c\/ul\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003cdiv class=\"phui-timeline-inner-content\"\u003e\u003ca name=\"235046\" id=\"235046\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon phui-timeline-title-with-menu\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-comment phui-timeline-icon\" data-meta=\"0_111\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/epriestley\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_30\"\u003eepriestley\u003c\/a\u003e added a comment.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#235046\" data-sigil=\"has-tooltip\" data-meta=\"0_110\"\u003e\u003cspan class=\"screen-only\"\u003eFeb 1 2018, 4:08 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2018-02-01 16:08:08 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003ca href=\"#\" class=\"phui-timeline-menu\" aria-haspopup=\"true\" aria-expanded=\"false\" data-sigil=\"phui-dropdown-menu\" data-meta=\"0_108\"\u003e\u003cspan class=\"aural-only\"\u003eComment Actions\u003c\/span\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-caret-down\" data-meta=\"0_109\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-core-content\"\u003e\u003cspan class=\"transaction-comment\" data-sigil=\"transaction-comment\" data-meta=\"0_31\"\u003e\u003cdiv class=\"phabricator-remarkup\"\u003e\u003cp\u003eThe "Must Encrypt" change will necessarily link into the existing \u003ctt class=\"remarkup-monospaced\"\u003e\/mail\/\u003c\/tt\u003e web UI so users can read the mail content, so it's probably worth considering possible improvements.\u003c\/p\u003e\n\n\u003cp\u003eOne significant issue with \u003ctt class=\"remarkup-monospaced\"\u003e\/mail\/\u003c\/tt\u003e is that the SearchEngine executes this query to generate the list view, which sometimes pick the less-good way to join (or has no great way to do the join) and can take many seconds being miserable on moderately sized installs unless you receive relatively little mail or a ton of mail and MySQL correctly guesses which half of the query has the more useful cardinality. Here's a case where it got things wrong on my local install:\u003c\/p\u003e\n\n\u003cdiv class=\"remarkup-code-block\" data-code-lang=\"text\" data-sigil=\"remarkup-code-block\"\u003e\u003cpre class=\"remarkup-code\"\u003emysql> explain SELECT `mail`.* FROM `metamta_mail` mail LEFT JOIN `edge` recipient ON mail.phid = recipient.src AND recipient.type = 57 WHERE (recipient.dst IN ('PHID-USER-cvfydnwadpdj7vdon36z')) ORDER BY `mail`.`id` DESC LIMIT 101;\n+----+-------------+-----------+--------+---------------------+----------+---------+-----------------------------+-------+-----------------------------------------------------------+\n| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |\n+----+-------------+-----------+--------+---------------------+----------+---------+-----------------------------+-------+-----------------------------------------------------------+\n| 1 | SIMPLE | recipient | ref | PRIMARY,key_dst,src | key_dst | 70 | const,const | 22813 | Using where; Using index; Using temporary; Using filesort |\n| 1 | SIMPLE | mail | eq_ref | key_phid | key_phid | 66 | local_metamta.recipient.src | 1 | NULL |\n+----+-------------+-----------+--------+---------------------+----------+---------+-----------------------------+-------+-----------------------------------------------------------+\n2 rows in set (0.00 sec)\u003c\/pre\u003e\u003c\/div\u003e\n\n\u003cp\u003eMySQL has two ways it can approach this query: find all the messages I've been sent, then sort them; or look through recent messages in order until it finds enough that I've been sent. The former strategy produces an efficient plan if I have never received much mail. The latter strategy produces an efficient plan if I receive a substantial fraction of the mail on the install. MySQL has no good options in other cases. Even in these cases, it doesn't have much to go on and picks the less efficient plan in some cases, like the case above. This reproduces for me locally even after \u003ctt class=\"remarkup-monospaced\"\u003eANALYZE\u003c\/tt\u003e, so it's likely not a key cardinality issue.\u003c\/p\u003e\n\n\u003cp\u003eThe major difficulty with this query is that we're storing recipients in the \u003ctt class=\"remarkup-monospaced\"\u003eedge\u003c\/tt\u003e table (57 = \u003ctt class=\"remarkup-monospaced\"\u003ePhabricatorMetaMTAMailHasRecipientEdgeType::EDGECONST\u003c\/tt\u003e). Since each message may have zero or more recipients we can't get away from a separate table and a JOIN, but the \u003ctt class=\"remarkup-monospaced\"\u003eedge\u003c\/tt\u003e table has no useful keys for sorting mail. To show "your recent messages" with the edge-first plan, we basically pull \u003cem\u003eall\u003c\/em\u003e of your messages, then sort them.\u003c\/p\u003e\n\n\u003cp\u003eA likely fix here is probably to replace \u003ctt class=\"remarkup-monospaced\"\u003eedge\u003c\/tt\u003e with a dedicated \u003ctt class=\"remarkup-monospaced\"\u003erecipient\u003c\/tt\u003e table that denormalizes enough data to sort this query so the plan can always be "look through recent messages you were sent in order". This is likely not difficult, as I think this edge has no other use cases and was introduced in \u003ca href=\"\/D13397\" class=\"phui-tag-view phui-tag-type-object \" data-sigil=\"hovercard\" data-meta=\"0_1\"\u003e\u003cspan class=\"phui-tag-core-closed\"\u003e\u003cspan class=\"phui-tag-core phui-tag-color-object\"\u003eD13397\u003c\/span\u003e\u003c\/span\u003e\u003c\/a\u003e specifically to power this interface, just without foresight about the query plan behavior.\u003c\/p\u003e\n\n\u003cp\u003e(The \u003ctt class=\"remarkup-monospaced\"\u003eLEFT JOIN\u003c\/tt\u003e should also be a \u003ctt class=\"remarkup-monospaced\"\u003eJOIN\u003c\/tt\u003e.)\u003c\/p\u003e\n\n\u003cp\u003eThat said, we use other similar edge queries elsewhere -- for example, when you search tasks by "Subscribers" without constraints we generate a very similar query plan which seems to struggle less to execute. Here's the similar query plan for a "Subscribers" search in Maniphest:\u003c\/p\u003e\n\n\u003cdiv class=\"remarkup-code-block\" data-code-lang=\"text\" data-sigil=\"remarkup-code-block\"\u003e\u003cpre class=\"remarkup-code\"\u003emysql> explain SELECT `task`.* FROM `maniphest_task` task JOIN `edge` `edgelogic_or_21` ON task.phid = `edgelogic_or_21`.src AND `edgelogic_or_21`.type = 21 AND `edgelogic_or_21`.dst IN ('PHID-USER-ba8aeea1b3fe2853d6bb') WHERE ((`task`.spacePHID IN ('PHID-SPCE-bwr6v4ymg32klwcbp4er', 'PHID-SPCE-nsykk3ue5lhdm3uealcg', 'PHID-SPCE-a3zfs4zkem4zw4pwomug', 'PHID-SPCE-zncfcyyswwax6u54red3', 'PHID-SPCE-xqws3nnp3rqppzblrzy3') OR `task`.spacePHID IS NULL)) ORDER BY `task`.`id` DESC LIMIT 101;\n+----+-------------+-----------------+--------+---------------------+---------+---------+----------------------------------------+------+--------------------------+\n| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |\n+----+-------------+-----------------+--------+---------------------+---------+---------+----------------------------------------+------+--------------------------+\n| 1 | SIMPLE | task | index | phid,key_space | PRIMARY | 4 | NULL | 108 | Using where |\n| 1 | SIMPLE | edgelogic_or_21 | eq_ref | PRIMARY,key_dst,src | PRIMARY | 136 | secure_maniphest.task.phid,const,const | 1 | Using where; Using index |\n+----+-------------+-----------------+--------+---------------------+---------+---------+----------------------------------------+------+--------------------------+\n2 rows in set (0.00 sec)\u003c\/pre\u003e\u003c\/div\u003e\n\n\u003cp\u003eHere, MySQL picked the other approach (go through tasks, find tasks with the right subscribers). It's not entirely clear to me why this variation causes fewer problems.\u003c\/p\u003e\n\n\u003cp\u003eOne possibility is that the \u003ctt class=\"remarkup-monospaced\"\u003emetamta_mail\u003c\/tt\u003e table has huge rows; 65KB average row size vs <2KB in Maniphest. This kind of row (which stores a lot of data, but also gets hit by queries with dynamic constraints) is fairly unusual across applications. The obvious cases of this in other applications (like \u003ctt class=\"remarkup-monospaced\"\u003eFile\u003c\/tt\u003e, \u003ctt class=\"remarkup-monospaced\"\u003eCommitData\u003c\/tt\u003e, \u003ctt class=\"remarkup-monospaced\"\u003eWorkerTaskData\u003c\/tt\u003e) often separate bulk data storage from the main object. Fixing how attachments are handled should improve this at least somewhat, and perhaps significantly. If these rows are still large after attachment separation we're definitely paying at least some kind of price for it -- we need to load all the data to build objects in search\/handle\/index use cases -- and we could separate the bulk data and see if that improves any of the profiling numbers or makes MySQL happier.\u003c\/p\u003e\u003c\/div\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_119\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/6jr7vs4rmmlnids4tac7\/PHID-FILE-clfyipsks65542hv4vpd\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/epriestley\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003ca name=\"235047\" id=\"235047\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-link phui-timeline-icon\" data-meta=\"0_118\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/epriestley\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_32\"\u003eepriestley\u003c\/a\u003e added a revision: \u003ca href=\"\/D18983\" class=\"phui-handle handle-status-closed\" data-sigil=\"hovercard\" data-meta=\"0_33\"\u003eD18983: Add basic support for a "Must Encrypt" mail flag which prevents unsecured content transmission\u003c\/a\u003e.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#235047\" data-sigil=\"has-tooltip\" data-meta=\"0_117\"\u003e\u003cspan class=\"screen-only\"\u003eFeb 1 2018, 4:39 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2018-02-01 16:39:25 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_132\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-major-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/6jr7vs4rmmlnids4tac7\/PHID-FILE-clfyipsks65542hv4vpd\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/epriestley\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-badges\"\u003e\u003cul class=\"phui-badge-flex-view grouped flex-view-collapsed \"\u003e\u003cli class=\"phui-badge-flex-item\"\u003e\u003ca class=\"phui-badge-mini phui-badge-mini-grey \" href=\"\/badges\/view\/14\/\" data-sigil=\"has-tooltip\" data-meta=\"0_128\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-desktop\" data-meta=\"0_129\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/a\u003e\u003c\/li\u003e\u003cli class=\"phui-badge-flex-item\"\u003e\u003ca class=\"phui-badge-mini phui-badge-mini-orange \" href=\"\/badges\/view\/13\/\" data-sigil=\"has-tooltip\" data-meta=\"0_130\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-gift\" data-meta=\"0_131\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/a\u003e\u003c\/li\u003e\u003c\/ul\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003cdiv class=\"phui-timeline-inner-content\"\u003e\u003ca name=\"235048\" id=\"235048\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon phui-timeline-title-with-menu\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-comment phui-timeline-icon\" data-meta=\"0_127\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/epriestley\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_34\"\u003eepriestley\u003c\/a\u003e added a comment.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#235048\" data-sigil=\"has-tooltip\" data-meta=\"0_126\"\u003e\u003cspan class=\"screen-only\"\u003eFeb 1 2018, 5:03 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2018-02-01 17:03:05 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003ca href=\"#\" class=\"phui-timeline-menu\" aria-haspopup=\"true\" aria-expanded=\"false\" data-sigil=\"phui-dropdown-menu\" data-meta=\"0_124\"\u003e\u003cspan class=\"aural-only\"\u003eComment Actions\u003c\/span\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-caret-down\" data-meta=\"0_125\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-core-content\"\u003e\u003cspan class=\"transaction-comment\" data-sigil=\"transaction-comment\" data-meta=\"0_35\"\u003e\u003cdiv class=\"phabricator-remarkup\"\u003e\u003cp\u003eThe intended trigger for "Must Encrypt" is Herald rules like this:\u003c\/p\u003e\n\n\u003cblockquote\u003e\u003cp\u003eWhen:\u003cbr \/\u003e\n[ Project tags ][ include ][ Security ]\u003cbr \/\u003e\nTake actions:\u003cbr \/\u003e\n[ Require secure mail ]\u003c\/p\u003e\u003c\/blockquote\u003e\n\n\u003cp\u003eThere are two things this action could do:\u003c\/p\u003e\n\n\u003col class=\"remarkup-list\"\u003e\n\u003cli class=\"remarkup-list-item\"\u003eAct on the mail in a transient way: mark the associated mail as "must encrypt".\u003c\/li\u003e\n\u003cli class=\"remarkup-list-item\"\u003eAct on the object in a stateful way: mark the associated \u003cstrong\u003eobject\u003c\/strong\u003e as "all mail about this thing must be encrypted from now on", so that all mail is flagged until some later change removes this marker.\u003c\/li\u003e\n\u003c\/ol\u003e\n\n\u003cp\u003eI think (2) is the safer behavior, and possibly where this should end up, but plan to only implement (1) for now.\u003c\/p\u003e\n\n\u003cp\u003ePartly, it's easier to build. Partly, if we build (2) there likely needs to be some kind of "Stop Encrypting" action in the UI, and I'm hesitant to clutter the UI if this feature is very niche. I think this feature is useful enough in enough cases to justify building, but I'm not yet confident that it's useful enough to fully embrace as a major behavior instead of a relatively niche power user feature.\u003c\/p\u003e\n\n\u003cp\u003ePartly, I think (1) is probably "safe enough". I think the behavior is pretty unsurprising and that users are unlikely to get it wrong. One related consideration is that I anticipate the cost of failure here to be fairly low: if it turns out that it's actually hard to use (1) correctly or there are cases where unanticipated user or system behavior causes confusion, sending a little bit of mail unencrypted over semi-open channels is probably not a major security issue, and we can investigate what went wrong and adjust the behavior appropriately.\u003c\/p\u003e\n\n\u003cp\u003eThat said, I'm also thinking of the SMTP\/POP\/IMAP pipeline as "mostly secure", which may be optimistic, and thinking of the major threat here as "disclosure", not "tampering". I assume most users retrieve mail over an encrypted channel (POP\/IMAP over TLS, HTTPS webmail), and at least HTTPS also authenticates the server's identity. I'm less sure about what the SMTP side looks like as mail travels to a destination mailbox, but I assume mail mostly travels a short distance across backbones owned by "largely trustworthy" actors and that the major adversaries here are the NSA, Google, ISPs, state actors, and other very sophisticated agents. Tampering with this mail (vs mail in general) doesn't seem especially useful to an attacker to me, except perhaps by discarding it entirely.\u003c\/p\u003e\n\n\u003cp\u003eThe weaker behavior in (1) means that your Herald rule must keep matching objects if you want the mail to continue to be marked as "Must Encrypt", and that if users remove whatever magic project\/condition is causing the rule to match, they'll also immediately cause mail to transmit in the open again. I think this is not too surprising, but should maybe inform some care in rule design and attention to behavior as users get used to it.\u003c\/p\u003e\n\n\u003cp\u003eIf this sees broader adoption or (1) turns out to be confusing or hard to use in practice, I'd plan to make the behavior stateful and start marking objects explicitly with a first-class state flag.\u003c\/p\u003e\u003c\/div\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_145\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-major-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/6jr7vs4rmmlnids4tac7\/PHID-FILE-clfyipsks65542hv4vpd\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/epriestley\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-badges\"\u003e\u003cul class=\"phui-badge-flex-view grouped flex-view-collapsed \"\u003e\u003cli class=\"phui-badge-flex-item\"\u003e\u003ca class=\"phui-badge-mini phui-badge-mini-grey \" href=\"\/badges\/view\/14\/\" data-sigil=\"has-tooltip\" data-meta=\"0_141\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-desktop\" data-meta=\"0_142\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/a\u003e\u003c\/li\u003e\u003cli class=\"phui-badge-flex-item\"\u003e\u003ca class=\"phui-badge-mini phui-badge-mini-orange \" href=\"\/badges\/view\/13\/\" data-sigil=\"has-tooltip\" data-meta=\"0_143\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-gift\" data-meta=\"0_144\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/a\u003e\u003c\/li\u003e\u003c\/ul\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003cdiv class=\"phui-timeline-inner-content\"\u003e\u003ca name=\"235049\" id=\"235049\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon phui-timeline-title-with-menu\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-comment phui-timeline-icon\" data-meta=\"0_140\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/epriestley\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_36\"\u003eepriestley\u003c\/a\u003e added a comment.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#235049\" data-sigil=\"has-tooltip\" data-meta=\"0_139\"\u003e\u003cspan class=\"screen-only\"\u003eFeb 1 2018, 5:05 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2018-02-01 17:05:57 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003ca href=\"#\" class=\"phui-timeline-menu\" aria-haspopup=\"true\" aria-expanded=\"false\" data-sigil=\"phui-dropdown-menu\" data-meta=\"0_137\"\u003e\u003cspan class=\"aural-only\"\u003eComment Actions\u003c\/span\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-caret-down\" data-meta=\"0_138\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-core-content\"\u003e\u003cspan class=\"transaction-comment\" data-sigil=\"transaction-comment\" data-meta=\"0_37\"\u003e\u003cdiv class=\"phabricator-remarkup\"\u003e\u003cp\u003eI suppose another reasonable attacker is "laptop thieves", but deleting any locally stored mail which was accidentally transmitted in the open seems like a reasonable way to recover from any confusion that arises until we figure out how foolproof the behavior needs to be.\u003c\/p\u003e\u003c\/div\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_148\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/6jr7vs4rmmlnids4tac7\/PHID-FILE-clfyipsks65542hv4vpd\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/epriestley\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003ca name=\"235050\" id=\"235050\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-link phui-timeline-icon\" data-meta=\"0_147\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/epriestley\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_38\"\u003eepriestley\u003c\/a\u003e added a revision: \u003ca href=\"\/D18984\" class=\"phui-handle handle-status-closed\" data-sigil=\"hovercard\" data-meta=\"0_39\"\u003eD18984: Add a Herald action to trigger "Must Encrypt" for mail\u003c\/a\u003e.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#235050\" data-sigil=\"has-tooltip\" data-meta=\"0_146\"\u003e\u003cspan class=\"screen-only\"\u003eFeb 1 2018, 5:34 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2018-02-01 17:34:04 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e"},"javelin_metadata":[{"hovercardSpec":{"objectPHID":"PHID-USER-ba8aeea1b3fe2853d6bb"}},{"hovercardSpec":{"objectPHID":"PHID-DREV-6exsp4br6yc2uhpgkvfz"}},{"hovercardSpec":{"objectPHID":"PHID-USER-ba8aeea1b3fe2853d6bb"}},{"hovercardSpec":{"objectPHID":"PHID-TASK-vep7ygs34e6ygfc3xcbs"}},{"hovercardSpec":{"objectPHID":"PHID-APPS-PhabricatorHeraldApplication"}},{"hovercardSpec":{"objectPHID":"PHID-USER-jmvolb7vo5qolixkccuq"}},{"hovercardSpec":{"objectPHID":"PHID-USER-ba8aeea1b3fe2853d6bb"}},{"hovercardSpec":{"objectPHID":"PHID-TASK-2ag57huqymehw4wbzahq"}},{"hovercardSpec":{"objectPHID":"PHID-USER-ba8aeea1b3fe2853d6bb"}},{"hovercardSpec":{"objectPHID":"PHID-PCOL-rpap3ur6joxgfzmcxpyb"}},{"hovercardSpec":{"objectPHID":"PHID-PCOL-pnmukaprfx2mtzvmrkzh"}},{"hovercardSpec":{"objectPHID":"PHID-PROJ-8ff447bfefdee6d4b9ba"}},{"hovercardSpec":{"objectPHID":"PHID-USER-ba8aeea1b3fe2853d6bb"}},{"hovercardSpec":{"objectPHID":"PHID-TASK-qh3dg3pcyovla6tc3awy"}},{"hovercardSpec":{"objectPHID":"PHID-USER-ba8aeea1b3fe2853d6bb"}},{"hovercardSpec":{"objectPHID":"PHID-USER-5atcce37qlwkkojcfupc"}},{"hovercardSpec":{"objectPHID":"PHID-USER-5atcce37qlwkkojcfupc"}},{"hovercardSpec":{"objectPHID":"PHID-USER-3yc34eijivr6rqs4vgiw"}},{"hovercardSpec":{"objectPHID":"PHID-USER-3yc34eijivr6rqs4vgiw"}},{"hovercardSpec":{"objectPHID":"PHID-USER-ba8aeea1b3fe2853d6bb"}},{"hovercardSpec":{"objectPHID":"PHID-USER-3aaxfedma5pyfysnapei"}},{"hovercardSpec":{"objectPHID":"PHID-USER-3aaxfedma5pyfysnapei"}},{"hovercardSpec":{"objectPHID":"PHID-USER-giddehwotzauy3j5wjun"}},{"hovercardSpec":{"objectPHID":"PHID-USER-giddehwotzauy3j5wjun"}},{"hovercardSpec":{"objectPHID":"PHID-USER-ba8aeea1b3fe2853d6bb"}},{"hovercardSpec":{"objectPHID":"PHID-USER-ba8aeea1b3fe2853d6bb"}},{"phid":"PHID-XACT-TASK-7i4rjawtxq47ikl"},{"hovercardSpec":{"objectPHID":"PHID-USER-ba8aeea1b3fe2853d6bb"}},{"phid":"PHID-XACT-TASK-l6dci3u5532ljwx"},{"hovercardSpec":{"objectPHID":"PHID-USER-ba8aeea1b3fe2853d6bb"}},{"hovercardSpec":{"objectPHID":"PHID-USER-ba8aeea1b3fe2853d6bb"}},{"phid":"PHID-XACT-TASK-o3su7obhzklkhxb"},{"hovercardSpec":{"objectPHID":"PHID-USER-ba8aeea1b3fe2853d6bb"}},{"hovercardSpec":{"objectPHID":"PHID-DREV-qtbn5vhztec3rddqqmp6"}},{"hovercardSpec":{"objectPHID":"PHID-USER-ba8aeea1b3fe2853d6bb"}},{"phid":"PHID-XACT-TASK-ua4vptw5flg6qrn"},{"hovercardSpec":{"objectPHID":"PHID-USER-ba8aeea1b3fe2853d6bb"}},{"phid":"PHID-XACT-TASK-lkc35qz3wfwdem6"},{"hovercardSpec":{"objectPHID":"PHID-USER-ba8aeea1b3fe2853d6bb"}},{"hovercardSpec":{"objectPHID":"PHID-DREV-tdvfgkzugdc6fpk6ziea"}},{"tip":"Via Web"},[],[],{"phid":"PHID-XACT-TASK-qgnjymo42rkb4hl","anchor":"234726"},{"tip":"Via Herald"},[],{"phid":"PHID-XACT-TASK-py37r6afitw3bdd","anchor":"234743"},{"tip":"Via Web"},[],[],{"phid":"PHID-XACT-TASK-rrj2betmmfszfxe","anchor":"234748"},{"tip":"Via Web"},[],{"phid":"PHID-XACT-TASK-6s6mxonsxcmobpw","anchor":"234762"},{"tip":"Via Web"},[],{"phid":"PHID-XACT-TASK-4pwywbjun6dydl7","anchor":"234770"},{"tip":"Via Web"},[],{"phid":"PHID-XACT-TASK-qepgf6cpnkymclg","anchor":"234790"},{"tip":"Via Web"},[],{"phid":"PHID-XACT-TASK-slyrwkxffjvuben","anchor":"234792"},{"tip":"Via Web"},[],{"phid":"PHID-XACT-TASK-lrghz3yovvniqyi","anchor":"235002"},{"tip":"Via Web"},[],{"phid":"PHID-XACT-TASK-is7n7jq5kpsjjvu","anchor":"235003"},{"tip":"Via Web"},[],{"phid":"PHID-XACT-TASK-zzflsarlyfdtvij","anchor":"235004"},{"tip":"Via Web"},[],{"phid":"PHID-XACT-TASK-32s3rqe6v7p47ot","anchor":"235041"},{"targetID":"UQ0_1","uri":"\/transactions\/quote\/PHID-XACT-TASK-7i4rjawtxq47ikl\/","ref":"T13053#235042"},[],{"anchor":"235042"},[],{"items":"\u003cul class=\"phabricator-action-list-view \"\u003e\u003cli id=\"UQ0_1\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"#\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-quote\" data-meta=\"0_75\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-quote-left phabricator-action-view-icon\" data-meta=\"0_76\" aria-hidden=\"true\"\u003e\u003c\/span\u003eQuote Comment\u003c\/a\u003e\u003c\/li\u003e\u003cli id=\"UQ0_3\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"\/transactions\/raw\/PHID-XACT-TASK-7i4rjawtxq47ikl\/\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-raw\" data-meta=\"0_77\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-code phabricator-action-view-icon\" data-meta=\"0_78\" aria-hidden=\"true\"\u003e\u003c\/span\u003eView Raw Remarkup\u003c\/a\u003e\u003c\/li\u003e\u003c\/ul\u003e"},[],{"tip":"Via Web"},[],{"tip":"Master of Safari","align":"E","size":300},[],{"tip":"5 Years ","align":"E","size":300},[],{"phid":"PHID-XACT-TASK-7i4rjawtxq47ikl","anchor":"235042"},{"targetID":"UQ0_1","uri":"\/transactions\/quote\/PHID-XACT-TASK-l6dci3u5532ljwx\/","ref":"T13053#235043"},[],{"anchor":"235043"},[],{"items":"\u003cul class=\"phabricator-action-list-view \"\u003e\u003cli id=\"UQ0_5\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"#\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-quote\" data-meta=\"0_88\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-quote-left phabricator-action-view-icon\" data-meta=\"0_89\" aria-hidden=\"true\"\u003e\u003c\/span\u003eQuote Comment\u003c\/a\u003e\u003c\/li\u003e\u003cli id=\"UQ0_7\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"\/transactions\/raw\/PHID-XACT-TASK-l6dci3u5532ljwx\/\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-raw\" data-meta=\"0_90\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-code phabricator-action-view-icon\" data-meta=\"0_91\" aria-hidden=\"true\"\u003e\u003c\/span\u003eView Raw Remarkup\u003c\/a\u003e\u003c\/li\u003e\u003c\/ul\u003e"},[],{"tip":"Via Web"},[],{"tip":"Master of Safari","align":"E","size":300},[],{"tip":"5 Years ","align":"E","size":300},[],{"phid":"PHID-XACT-TASK-l6dci3u5532ljwx","anchor":"235043"},{"tip":"Via Web"},[],{"phid":"PHID-XACT-TASK-hu24ymwapzvt7uc","anchor":"235044"},{"targetID":"UQ0_1","uri":"\/transactions\/quote\/PHID-XACT-TASK-o3su7obhzklkhxb\/","ref":"T13053#235046"},[],{"anchor":"235046"},[],{"items":"\u003cul class=\"phabricator-action-list-view \"\u003e\u003cli id=\"UQ0_9\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"#\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-quote\" data-meta=\"0_104\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-quote-left phabricator-action-view-icon\" data-meta=\"0_105\" aria-hidden=\"true\"\u003e\u003c\/span\u003eQuote Comment\u003c\/a\u003e\u003c\/li\u003e\u003cli id=\"UQ0_11\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"\/transactions\/raw\/PHID-XACT-TASK-o3su7obhzklkhxb\/\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-raw\" data-meta=\"0_106\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-code phabricator-action-view-icon\" data-meta=\"0_107\" aria-hidden=\"true\"\u003e\u003c\/span\u003eView Raw Remarkup\u003c\/a\u003e\u003c\/li\u003e\u003c\/ul\u003e"},[],{"tip":"Via Web"},[],{"tip":"Master of Safari","align":"E","size":300},[],{"tip":"5 Years ","align":"E","size":300},[],{"phid":"PHID-XACT-TASK-o3su7obhzklkhxb","anchor":"235046"},{"tip":"Via Conduit"},[],{"phid":"PHID-XACT-TASK-ba7cubann5bmu52","anchor":"235047"},{"targetID":"UQ0_1","uri":"\/transactions\/quote\/PHID-XACT-TASK-ua4vptw5flg6qrn\/","ref":"T13053#235048"},[],{"anchor":"235048"},[],{"items":"\u003cul class=\"phabricator-action-list-view \"\u003e\u003cli id=\"UQ0_13\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"#\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-quote\" data-meta=\"0_120\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-quote-left phabricator-action-view-icon\" data-meta=\"0_121\" aria-hidden=\"true\"\u003e\u003c\/span\u003eQuote Comment\u003c\/a\u003e\u003c\/li\u003e\u003cli id=\"UQ0_15\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"\/transactions\/raw\/PHID-XACT-TASK-ua4vptw5flg6qrn\/\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-raw\" data-meta=\"0_122\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-code phabricator-action-view-icon\" data-meta=\"0_123\" aria-hidden=\"true\"\u003e\u003c\/span\u003eView Raw Remarkup\u003c\/a\u003e\u003c\/li\u003e\u003c\/ul\u003e"},[],{"tip":"Via Web"},[],{"tip":"Master of Safari","align":"E","size":300},[],{"tip":"5 Years ","align":"E","size":300},[],{"phid":"PHID-XACT-TASK-ua4vptw5flg6qrn","anchor":"235048"},{"targetID":"UQ0_1","uri":"\/transactions\/quote\/PHID-XACT-TASK-lkc35qz3wfwdem6\/","ref":"T13053#235049"},[],{"anchor":"235049"},[],{"items":"\u003cul class=\"phabricator-action-list-view \"\u003e\u003cli id=\"UQ0_17\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"#\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-quote\" data-meta=\"0_133\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-quote-left phabricator-action-view-icon\" data-meta=\"0_134\" aria-hidden=\"true\"\u003e\u003c\/span\u003eQuote Comment\u003c\/a\u003e\u003c\/li\u003e\u003cli id=\"UQ0_19\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"\/transactions\/raw\/PHID-XACT-TASK-lkc35qz3wfwdem6\/\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-raw\" data-meta=\"0_135\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-code phabricator-action-view-icon\" data-meta=\"0_136\" aria-hidden=\"true\"\u003e\u003c\/span\u003eView Raw Remarkup\u003c\/a\u003e\u003c\/li\u003e\u003c\/ul\u003e"},[],{"tip":"Via Web"},[],{"tip":"Master of Safari","align":"E","size":300},[],{"tip":"5 Years ","align":"E","size":300},[],{"phid":"PHID-XACT-TASK-lkc35qz3wfwdem6","anchor":"235049"},{"tip":"Via Conduit"},[],{"phid":"PHID-XACT-TASK-inhcf6lsxkbrl6a","anchor":"235050"}],"javelin_behaviors":{"phui-hovercards":[],"phabricator-watch-anchor":[],"phabricator-tooltips":[],"phui-dropdown-menu":[]},"javelin_resources":["https:\/\/p.phcdn.net\/res\/defaultX\/phabricator\/d2de90d9\/core.pkg.js","https:\/\/p.phcdn.net\/res\/defaultX\/phabricator\/98e6504a\/rsrc\/externals\/javelin\/core\/init.js","https:\/\/p.phcdn.net\/res\/defaultX\/phabricator\/b816811e\/core.pkg.css","https:\/\/p.phcdn.net\/res\/defaultX\/phabricator\/666e25ad\/rsrc\/css\/phui\/phui-badge.css"]}