<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>32277</bug_id>
          
          <creation_ts>2009-12-08 10:35:28 -0800</creation_ts>
          <short_desc>Chromium: support custom WebCore context menu items in Chromium port.</short_desc>
          <delta_ts>2009-12-08 14:44:11 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit API</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Pavel Feldman">pfeldman</reporter>
          <assigned_to name="Pavel Feldman">pfeldman</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>fishd</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>169716</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-12-08 10:35:28 -0800</bug_when>
    <thetext>There is now a way to provide custom menu items into the page&apos;s context menu from within WebCore. I&apos;ve added it for web inspector, but it is also in line with the contextmenu HTML5 proposal. I&apos;d like to support it in Chromium port as well (currently we do not use context menu items in our context menu client at all and use renderer one&apos;s instead).

This is an upstream part of the change. It goes through the menu items in ContextMenu and pushes information about these &apos;custom&apos; ones into the client as a part of WebContextMenuData.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>169720</commentid>
    <comment_count>1</comment_count>
      <attachid>44476</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-12-08 10:38:59 -0800</bug_when>
    <thetext>Created attachment 44476
[PATCH] Proposed change (upstream part)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>169722</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2009-12-08 10:41:16 -0800</bug_when>
    <thetext>Attachment 44476 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebKit/chromium/src/WebViewImpl.cpp:38:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>169723</commentid>
    <comment_count>3</comment_count>
      <attachid>44477</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-12-08 10:44:35 -0800</bug_when>
    <thetext>Created attachment 44477
[PATCH] Same with style bot happy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>169727</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2009-12-08 10:46:41 -0800</bug_when>
    <thetext>style-queue ran check-webkit-style on attachment 44477 without any errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>169735</commentid>
    <comment_count>5</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-12-08 11:22:40 -0800</bug_when>
    <thetext>It seems we need a better platform abstraction here.  Something more akin to FloatPoint (which wraps a platform type).  I&apos;m not suggesting that you need to build such, but perhaps what you have built could be converted into something that could work for all ports in a second patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>169756</commentid>
    <comment_count>6</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-12-08 12:41:36 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; It seems we need a better platform abstraction here.  Something more akin to
&gt; FloatPoint (which wraps a platform type).  I&apos;m not suggesting that you need to
&gt; build such, but perhaps what you have built could be converted into something
&gt; that could work for all ports in a second patch.

We surely do. ContextMenu(Item) is just a bunch of platform-dependent ifdefs with custom implementations. It&apos;d be much cleaner if we used simple platform-agnostic containers under WebCore/page and used client interfaces to manage the specifics.

It should not be that hard to implement: ContextMenu(Platform) needs to be moved to WebKit/(platform)/WebCoreSupport/ and should gain constructors taking pure ContextMenu as an input. Is that what you were thinking about? It would require building / testing on all platforms though :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>169760</commentid>
    <comment_count>7</comment_count>
      <attachid>44477</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2009-12-08 13:00:30 -0800</bug_when>
    <thetext>Comment on attachment 44477
[PATCH] Same with style bot happy.

&gt; +++ b/WebKit/chromium/public/WebPopupMenuInfo.h
...
&gt; -// Describes the contents of a popup menu.
&gt; +// Describes the contents of a popup menu or custom context menu item provided from within WebCore.

Perhaps this struct should be renamed to WebMenuInfo since it
is no longer specific to popup menus.


&gt;  struct WebPopupMenuInfo {
&gt;      struct Item {
&gt;          enum Type {
&gt;              Option,
&gt; +            CheckableOption,
&gt;              Group,
&gt;              Separator,
&gt;          };
&gt;          WebString label;
&gt;          Type type;
&gt; +        unsigned action;

Can you define an enumeration for action?  It occurs to me that we
already have WebMediaPlayerAction and performMediaPlayerAction, which
could be incorporated into a more generic action enum and associated
WebView method.

(WebMediaPlayerAction has two fields, but those could be expressed as
enum values instead.)


&gt; +++ b/WebKit/chromium/public/WebView.h
...
&gt;      virtual void hideAutofillPopup() = 0;
&gt;  
&gt; +    // Context menu --------------------------------------------------------
&gt; +
&gt; +    virtual void executeCustomContextMenuAction(unsigned action) = 0;
&gt;  
&gt;      // Visited link state --------------------------------------------------

nit: WebView.h has two new lines above these delimiter comments


&gt; +++ b/WebKit/chromium/src/ContextMenuClientImpl.cpp
...
&gt; +    // Filter out custom menu elements and add them into the data.
&gt; +    Vector&lt;WebPopupMenuInfo::Item&gt; customItems;
&gt; +    for (size_t i = 0; i &lt; defaultMenu-&gt;itemCount(); ++i) {
&gt; +        ContextMenuItem* inputItem = defaultMenu-&gt;itemAtIndex(i, defaultMenu-&gt;platformDescription());
&gt; +        if (inputItem-&gt;action() &lt; ContextMenuItemBaseCustomTag || inputItem-&gt;action() &gt;=  ContextMenuItemBaseApplicationTag)
&gt; +            continue;
&gt; +
&gt; +        WebPopupMenuInfo::Item outputItem;
&gt; +        outputItem.label = inputItem-&gt;title();
&gt; +        outputItem.enabled = inputItem-&gt;enabled();
&gt; +        outputItem.checked = inputItem-&gt;checked();
&gt; +        outputItem.action = static_cast&lt;unsigned&gt;(inputItem-&gt;action() - ContextMenuItemBaseCustomTag);
&gt; +        switch (inputItem-&gt;type()) {
&gt; +        case ActionType:
&gt; +            outputItem.type = WebPopupMenuInfo::Item::Option;
&gt; +            break;
&gt; +        case CheckableActionType:
&gt; +            outputItem.type = WebPopupMenuInfo::Item::CheckableOption;
&gt; +            break;
&gt; +        case SeparatorType:
&gt; +            outputItem.type = WebPopupMenuInfo::Item::Separator;
&gt; +            break;
&gt; +        }
&gt; +        customItems.append(outputItem);
&gt; +    }
&gt; +
&gt; +    WebVector&lt;WebPopupMenuInfo::Item&gt; outputItems(customItems.size());
&gt; +    for (size_t i = 0; i &lt; customItems.size(); ++i)
&gt; +        outputItems[i] = customItems[i];
&gt; +    data.customItems.swap(outputItems);

nit: Please break this code out into a new function.  The existing
function is already way too long.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>169764</commentid>
    <comment_count>8</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-12-08 13:08:55 -0800</bug_when>
    <thetext>Thanks for the review!

&gt; Perhaps this struct should be renamed to WebMenuInfo since it
&gt; is no longer specific to popup menus.

WebPopupMenuInfo is still used for popup only, it is just its ::Item that is now reused among popup and context menu. I&apos;d better extract it to top-level class then?

&gt; &gt;  struct WebPopupMenuInfo {
&gt; &gt;      struct Item {
&gt; &gt;          enum Type {
&gt; &gt;              Option,
&gt; &gt; +            CheckableOption,
&gt; &gt;              Group,
&gt; &gt;              Separator,
&gt; &gt;          };
&gt; &gt;          WebString label;
&gt; &gt;          Type type;
&gt; &gt; +        unsigned action;
&gt; 
&gt; Can you define an enumeration for action?  It occurs to me that we
&gt; already have WebMediaPlayerAction and performMediaPlayerAction, which
&gt; could be incorporated into a more generic action enum and associated
&gt; WebView method.

The idea here is that these are custom actions defined by the ContextMenu clients. They could be dynamic or derived from the &lt;menu&gt; tag in HTML5 in the future. So the idea is that client passes action id to the framework and expects to receive it in the fire event.

&gt; 
&gt; nit: WebView.h has two new lines above these delimiter comments
&gt; 

Fixing.

&gt; 
&gt; nit: Please break this code out into a new function.  The existing
&gt; function is already way too long.

Fixing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>169790</commentid>
    <comment_count>9</comment_count>
      <attachid>44486</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-12-08 14:12:17 -0800</bug_when>
    <thetext>Created attachment 44486
[PATCH] Review comments addressed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>169791</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2009-12-08 14:16:13 -0800</bug_when>
    <thetext>style-queue ran check-webkit-style on attachment 44486 without any errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>169792</commentid>
    <comment_count>11</comment_count>
      <attachid>44486</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2009-12-08 14:18:12 -0800</bug_when>
    <thetext>Comment on attachment 44486
[PATCH] Review comments addressed.

OK, r=me

I&apos;m still unconvinced that we shouldn&apos;t merge WebMediaPlayerAction into
this system.

One nit:  please use the term &quot;perform&quot; instead of &quot;execute&quot; for consistency
with the performMediaPlayerAction method.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>169798</commentid>
    <comment_count>12</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-12-08 14:44:11 -0800</bug_when>
    <thetext>Committing to http://svn.webkit.org/repository/webkit/trunk ...
	C	WebKit/chromium/public/WebPopupMenuInfo.h =&gt; WebKit/chromium/public/WebMenuItemInfo.h
	M	WebCore/ChangeLog
	M	WebCore/platform/ContextMenu.h
	M	WebCore/platform/ContextMenuItem.h
	M	WebCore/platform/chromium/ContextMenuChromium.cpp
	M	WebCore/platform/chromium/ContextMenuItemChromium.cpp
	M	WebKit/chromium/ChangeLog
	M	WebKit/chromium/WebKit.gyp
	M	WebKit/chromium/public/WebContextMenuData.h
	M	WebKit/chromium/public/WebPopupMenuInfo.h
	M	WebKit/chromium/public/WebView.h
	M	WebKit/chromium/src/ContextMenuClientImpl.cpp
	M	WebKit/chromium/src/ContextMenuClientImpl.h
	M	WebKit/chromium/src/WebViewImpl.cpp
	M	WebKit/chromium/src/WebViewImpl.h
Committed r51874</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>44476</attachid>
            <date>2009-12-08 10:38:59 -0800</date>
            <delta_ts>2009-12-08 10:44:35 -0800</delta_ts>
            <desc>[PATCH] Proposed change (upstream part)</desc>
            <filename>context_menu_chromium</filename>
            <type>text/plain</type>
            <size>13965</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
Nzc4N2FmZi4uYzA0ZGU0ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNiBAQAorMjAwOS0xMi0wOCAgUGF2ZWwgRmVsZG1h
biAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBDaHJvbWl1bTogc3VwcG9ydCBjdXN0b20gV2ViQ29yZSBjb250
ZXh0IG1lbnUgaXRlbXMgaW4gQ2hyb21pdW0gcG9ydC4KKworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzIyNzcKKworICAgICAgICAqIHBsYXRmb3JtL0Nv
bnRleHRNZW51Lmg6CisgICAgICAgICogcGxhdGZvcm0vQ29udGV4dE1lbnVJdGVtLmg6CisgICAg
ICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lbnVJdGVtRGVzY3JpcHRpb246OlBsYXRmb3JtTWVudUl0
ZW1EZXNjcmlwdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vQ29udGV4dE1lbnVD
aHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0TWVudTo6Q29udGV4dE1lbnUp
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnU6Oml0ZW1Db3VudCk6CisgICAgICAgIChX
ZWJDb3JlOjpDb250ZXh0TWVudTo6aW5zZXJ0SXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpDb250
ZXh0TWVudTo6YXBwZW5kSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0TWVudTo6aXRl
bVdpdGhBY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnU6Oml0ZW1BdEluZGV4
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRNZW51OjpwbGF0Zm9ybURlc2NyaXB0aW9uKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9Db250ZXh0TWVudUl0ZW1DaHJvbWl1bS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW06OkNvbnRleHRNZW51SXRlbSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW06OnJlbGVhc2VQbGF0Zm9ybURlc2NyaXB0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbTo6dHlwZSk6CisgICAgICAg
IChXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW06OmFjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpD
b250ZXh0TWVudUl0ZW06OnRpdGxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRNZW51SXRl
bTo6Y2hlY2tlZCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW06OmVuYWJsZWQp
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtOjpzZXRUeXBlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbTo6c2V0QWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRleHRNZW51SXRlbTo6c2V0VGl0bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1l
bnVJdGVtOjpzZXRDaGVja2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbTo6
c2V0RW5hYmxlZCk6CisKIDIwMDktMTItMDggIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNv
bT4KIAogICAgICAgICBSZXZpZXdlZCBieSBKb2huIFN1bGxpdmFuLgpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9wbGF0Zm9ybS9Db250ZXh0TWVudS5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZXh0TWVu
dS5oCmluZGV4IGRjNDg0YjIuLjc3ODQzZGMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0v
Q29udGV4dE1lbnUuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL0NvbnRleHRNZW51LmgKQEAgLTc4
LDYgKzc4LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBSZXRhaW5QdHI8TlNNdXRh
YmxlQXJyYXk+IG1fcGxhdGZvcm1EZXNjcmlwdGlvbjsKICNlbGlmIFBMQVRGT1JNKFFUKQogICAg
ICAgICBRTGlzdDxDb250ZXh0TWVudUl0ZW0+IG1faXRlbXM7CisjZWxpZiBQTEFURk9STShDSFJP
TUlVTSkKKyAgICAgICAgVmVjdG9yPENvbnRleHRNZW51SXRlbT4gbV9pdGVtczsKICNlbHNlCiAg
ICAgICAgIFBsYXRmb3JtTWVudURlc2NyaXB0aW9uIG1fcGxhdGZvcm1EZXNjcmlwdGlvbjsKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZXh0TWVudUl0ZW0uaCBiL1dl
YkNvcmUvcGxhdGZvcm0vQ29udGV4dE1lbnVJdGVtLmgKaW5kZXggZDQyODU0Ny4uODhmZjBhZCAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZXh0TWVudUl0ZW0uaAorKysgYi9XZWJD
b3JlL3BsYXRmb3JtL0NvbnRleHRNZW51SXRlbS5oCkBAIC0yMDksNiArMjA5LDE5IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICB9OwogI2VsaWYgUExBVEZPUk0oSEFJS1UpCiAgICAgdHlwZWRl
ZiBCTWVudUl0ZW0qIFBsYXRmb3JtTWVudUl0ZW1EZXNjcmlwdGlvbjsKKyNlbGlmIFBMQVRGT1JN
KENIUk9NSVVNKQorICAgIHN0cnVjdCBQbGF0Zm9ybU1lbnVJdGVtRGVzY3JpcHRpb24geworICAg
ICAgICBQbGF0Zm9ybU1lbnVJdGVtRGVzY3JpcHRpb24oKQorICAgICAgICAgICAgOiB0eXBlKEFj
dGlvblR5cGUpCisgICAgICAgICAgICAsIGFjdGlvbihDb250ZXh0TWVudUl0ZW1UYWdOb0FjdGlv
bikKKyAgICAgICAgICAgICwgY2hlY2tlZChmYWxzZSkKKyAgICAgICAgICAgICwgZW5hYmxlZCh0
cnVlKSB7IH0KKyAgICAgICAgQ29udGV4dE1lbnVJdGVtVHlwZSB0eXBlOworICAgICAgICBDb250
ZXh0TWVudUFjdGlvbiBhY3Rpb247CisgICAgICAgIFN0cmluZyB0aXRsZTsKKyAgICAgICAgYm9v
bCBjaGVja2VkOworICAgICAgICBib29sIGVuYWJsZWQ7CisgICAgfTsKICNlbHNlCiAgICAgdHlw
ZWRlZiB2b2lkKiBQbGF0Zm9ybU1lbnVJdGVtRGVzY3JpcHRpb247CiAjZW5kaWYKQEAgLTIzOCw3
ICsyNTEsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgc2V0U3ViTWVudShD
b250ZXh0TWVudSopOwogCiAgICAgICAgIHZvaWQgc2V0Q2hlY2tlZChib29sID0gdHJ1ZSk7Ci0g
ICAgICAgIAorICAgICAgICBib29sIGNoZWNrZWQoKSBjb25zdDsKKwogICAgICAgICB2b2lkIHNl
dEVuYWJsZWQoYm9vbCA9IHRydWUpOwogICAgICAgICBib29sIGVuYWJsZWQoKSBjb25zdDsKIApk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Db250ZXh0TWVudUNocm9taXVt
LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ29udGV4dE1lbnVDaHJvbWl1bS5jcHAK
aW5kZXggMDYxNGUzZS4uNzY5MWViOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9jaHJv
bWl1bS9Db250ZXh0TWVudUNocm9taXVtLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2Nocm9t
aXVtL0NvbnRleHRNZW51Q2hyb21pdW0uY3BwCkBAIC0zOCwxMyArMzgsMTEgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBDb250ZXh0TWVudTo6Q29udGV4dE1lbnUoY29uc3QgSGl0VGVzdFJlc3Vs
dCYgcmVzdWx0KQogICAgIDogbV9oaXRUZXN0UmVzdWx0KHJlc3VsdCkKLSAgICAsIG1fcGxhdGZv
cm1EZXNjcmlwdGlvbigwKQogewogfQogCiBDb250ZXh0TWVudTo6Q29udGV4dE1lbnUoY29uc3Qg
SGl0VGVzdFJlc3VsdCYgcmVzdWx0LCBjb25zdCBQbGF0Zm9ybU1lbnVEZXNjcmlwdGlvbiBtZW51
KQogICAgIDogbV9oaXRUZXN0UmVzdWx0KHJlc3VsdCkKLSAgICAsIG1fcGxhdGZvcm1EZXNjcmlw
dGlvbigwKQogewogfQogCkBAIC01NCwyNSArNTIsMzEgQEAgQ29udGV4dE1lbnU6On5Db250ZXh0
TWVudSgpCiAKIHVuc2lnbmVkIENvbnRleHRNZW51OjppdGVtQ291bnQoKSBjb25zdAogewotICAg
IHJldHVybiAwOworICAgIHJldHVybiBtX2l0ZW1zLnNpemUoKTsKIH0KIAogdm9pZCBDb250ZXh0
TWVudTo6aW5zZXJ0SXRlbSh1bnNpZ25lZCBwb3NpdGlvbiwgQ29udGV4dE1lbnVJdGVtJiBpdGVt
KQogeworICAgIG1faXRlbXMuaW5zZXJ0KHBvc2l0aW9uLCBpdGVtKTsKIH0KIAogdm9pZCBDb250
ZXh0TWVudTo6YXBwZW5kSXRlbShDb250ZXh0TWVudUl0ZW0mIGl0ZW0pCiB7CisgICAgbV9pdGVt
cy5hcHBlbmQoaXRlbSk7CiB9CiAKIENvbnRleHRNZW51SXRlbSogQ29udGV4dE1lbnU6Oml0ZW1X
aXRoQWN0aW9uKHVuc2lnbmVkIGFjdGlvbikKIHsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG1faXRlbXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKG1faXRlbXNbaV0uYWN0aW9uKCkg
PT0gYWN0aW9uKQorICAgICAgICAgICAgcmV0dXJuICZtX2l0ZW1zW2ldOworICAgIH0KICAgICBy
ZXR1cm4gMDsKIH0KIAogQ29udGV4dE1lbnVJdGVtKiBDb250ZXh0TWVudTo6aXRlbUF0SW5kZXgo
dW5zaWduZWQgaW5kZXgsIGNvbnN0IFBsYXRmb3JtTWVudURlc2NyaXB0aW9uIHBsYXRmb3JtRGVz
Y3JpcHRpb24pCiB7Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuICZtX2l0ZW1zW2luZGV4XTsK
IH0KIAogdm9pZCBDb250ZXh0TWVudTo6c2V0UGxhdGZvcm1EZXNjcmlwdGlvbihQbGF0Zm9ybU1l
bnVEZXNjcmlwdGlvbiBtZW51KQpAQCAtODEsNyArODUsNyBAQCB2b2lkIENvbnRleHRNZW51Ojpz
ZXRQbGF0Zm9ybURlc2NyaXB0aW9uKFBsYXRmb3JtTWVudURlc2NyaXB0aW9uIG1lbnUpCiAKIFBs
YXRmb3JtTWVudURlc2NyaXB0aW9uIENvbnRleHRNZW51OjpwbGF0Zm9ybURlc2NyaXB0aW9uKCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gbV9wbGF0Zm9ybURlc2NyaXB0aW9uOworICAgIHJldHVybiAw
OwogfQogCiBQbGF0Zm9ybU1lbnVEZXNjcmlwdGlvbiBDb250ZXh0TWVudTo6cmVsZWFzZVBsYXRm
b3JtRGVzY3JpcHRpb24oKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9D
b250ZXh0TWVudUl0ZW1DaHJvbWl1bS5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0Nv
bnRleHRNZW51SXRlbUNocm9taXVtLmNwcAppbmRleCBmMzRlYTIzLi42YTBkNjU3IDEwMDY0NAot
LS0gYS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0NvbnRleHRNZW51SXRlbUNocm9taXVtLmNw
cAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0NvbnRleHRNZW51SXRlbUNocm9taXVt
LmNwcApAQCAtNDYsNiArNDYsOSBAQCBDb250ZXh0TWVudUl0ZW06OkNvbnRleHRNZW51SXRlbShD
b250ZXh0TWVudSogc3ViTWVudSkKIAogQ29udGV4dE1lbnVJdGVtOjpDb250ZXh0TWVudUl0ZW0o
Q29udGV4dE1lbnVJdGVtVHlwZSB0eXBlLCBDb250ZXh0TWVudUFjdGlvbiBhY3Rpb24sIGNvbnN0
IFN0cmluZyYgdGl0bGUsIENvbnRleHRNZW51KiBzdWJNZW51KQogeworICAgIG1fcGxhdGZvcm1E
ZXNjcmlwdGlvbi50eXBlID0gdHlwZTsKKyAgICBtX3BsYXRmb3JtRGVzY3JpcHRpb24uYWN0aW9u
ID0gYWN0aW9uOworICAgIG1fcGxhdGZvcm1EZXNjcmlwdGlvbi50aXRsZSA9IHRpdGxlOwogfQog
CiBDb250ZXh0TWVudUl0ZW06On5Db250ZXh0TWVudUl0ZW0oKQpAQCAtNTQsMjIgKzU3LDMyIEBA
IENvbnRleHRNZW51SXRlbTo6fkNvbnRleHRNZW51SXRlbSgpCiAKIFBsYXRmb3JtTWVudUl0ZW1E
ZXNjcmlwdGlvbiBDb250ZXh0TWVudUl0ZW06OnJlbGVhc2VQbGF0Zm9ybURlc2NyaXB0aW9uKCkK
IHsKLSAgICByZXR1cm4gUGxhdGZvcm1NZW51SXRlbURlc2NyaXB0aW9uKCk7CisgICAgcmV0dXJu
IG1fcGxhdGZvcm1EZXNjcmlwdGlvbjsKIH0KIAogQ29udGV4dE1lbnVJdGVtVHlwZSBDb250ZXh0
TWVudUl0ZW06OnR5cGUoKSBjb25zdAogewotICAgIHJldHVybiBDb250ZXh0TWVudUl0ZW1UeXBl
KCk7CisgICAgcmV0dXJuIG1fcGxhdGZvcm1EZXNjcmlwdGlvbi50eXBlOwogfQogCiBDb250ZXh0
TWVudUFjdGlvbiBDb250ZXh0TWVudUl0ZW06OmFjdGlvbigpIGNvbnN0CiB7IAotICAgIHJldHVy
biBDb250ZXh0TWVudUFjdGlvbigpOworICAgIHJldHVybiBtX3BsYXRmb3JtRGVzY3JpcHRpb24u
YWN0aW9uOwogfQogCiBTdHJpbmcgQ29udGV4dE1lbnVJdGVtOjp0aXRsZSgpIGNvbnN0IAogewot
ICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICByZXR1cm4gbV9wbGF0Zm9ybURlc2NyaXB0aW9uLnRp
dGxlOworfQorCitib29sIENvbnRleHRNZW51SXRlbTo6Y2hlY2tlZCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1fcGxhdGZvcm1EZXNjcmlwdGlvbi5jaGVja2VkOworfQorCitib29sIENvbnRleHRN
ZW51SXRlbTo6ZW5hYmxlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcGxhdGZvcm1EZXNjcmlw
dGlvbi5lbmFibGVkOwogfQogCiBQbGF0Zm9ybU1lbnVEZXNjcmlwdGlvbiBDb250ZXh0TWVudUl0
ZW06OnBsYXRmb3JtU3ViTWVudSgpIGNvbnN0CkBAIC03OSwxNCArOTIsMTcgQEAgUGxhdGZvcm1N
ZW51RGVzY3JpcHRpb24gQ29udGV4dE1lbnVJdGVtOjpwbGF0Zm9ybVN1Yk1lbnUoKSBjb25zdAog
CiB2b2lkIENvbnRleHRNZW51SXRlbTo6c2V0VHlwZShDb250ZXh0TWVudUl0ZW1UeXBlIHR5cGUp
CiB7CisgICAgbV9wbGF0Zm9ybURlc2NyaXB0aW9uLnR5cGUgPSB0eXBlOwogfQogCiB2b2lkIENv
bnRleHRNZW51SXRlbTo6c2V0QWN0aW9uKENvbnRleHRNZW51QWN0aW9uIGFjdGlvbikKIHsKKyAg
ICBtX3BsYXRmb3JtRGVzY3JpcHRpb24uYWN0aW9uID0gYWN0aW9uOwogfQogCiB2b2lkIENvbnRl
eHRNZW51SXRlbTo6c2V0VGl0bGUoY29uc3QgU3RyaW5nJiB0aXRsZSkKIHsKKyAgICBtX3BsYXRm
b3JtRGVzY3JpcHRpb24udGl0bGUgPSB0aXRsZTsKIH0KIAogdm9pZCBDb250ZXh0TWVudUl0ZW06
OnNldFN1Yk1lbnUoQ29udGV4dE1lbnUqIHN1Yk1lbnUpCkBAIC05NSwxNSArMTExLDEyIEBAIHZv
aWQgQ29udGV4dE1lbnVJdGVtOjpzZXRTdWJNZW51KENvbnRleHRNZW51KiBzdWJNZW51KQogCiB2
b2lkIENvbnRleHRNZW51SXRlbTo6c2V0Q2hlY2tlZChib29sIGNoZWNrZWQpCiB7CisgICAgbV9w
bGF0Zm9ybURlc2NyaXB0aW9uLmNoZWNrZWQgPSBjaGVja2VkOwogfQogCiB2b2lkIENvbnRleHRN
ZW51SXRlbTo6c2V0RW5hYmxlZChib29sIGVuYWJsZWQpCiB7Ci19Ci0KLWJvb2wgQ29udGV4dE1l
bnVJdGVtOjplbmFibGVkKCkgY29uc3QKLXsKLSAgICByZXR1cm4gZmFsc2U7CisgICAgbV9wbGF0
Zm9ybURlc2NyaXB0aW9uLmVuYWJsZWQgPSBlbmFibGVkOwogfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwppbmRleCA0ZDc4NjA3Li4wZDcyYTM4IDEwMDY0NAotLS0gYS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyMSBAQAorMjAwOS0xMi0wOCAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBDaHJvbWl1bTogc3VwcG9ydCBjdXN0b20gV2ViQ29yZSBjb250ZXh0IG1lbnUgaXRlbXMgaW4g
Q2hyb21pdW0gcG9ydC4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MzIyNzcKKworICAgICAgICAqIHB1YmxpYy9XZWJDb250ZXh0TWVudURhdGEuaDoK
KyAgICAgICAgKiBwdWJsaWMvV2ViUG9wdXBNZW51SW5mby5oOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQb3B1cE1lbnVJbmZvOjpJdGVtOjopOgorICAgICAgICAqIHB1YmxpYy9XZWJWaWV3Lmg6Cisg
ICAgICAgICogc3JjL0NvbnRleHRNZW51Q2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OkNvbnRleHRNZW51Q2xpZW50SW1wbDo6Z2V0Q3VzdG9tTWVudUZyb21EZWZhdWx0SXRlbXMpOgor
ICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJ
bXBsOjpleGVjdXRlQ3VzdG9tQ29udGV4dE1lbnVBY3Rpb24pOgorICAgICAgICAqIHNyYy9XZWJW
aWV3SW1wbC5oOgorCiAyMDA5LTEyLTA3ICBaaGUgU3UgIDxzdXpoZUBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gRmlzaGVyLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJDb250ZXh0TWVudURhdGEuaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViQ29udGV4dE1lbnVEYXRhLmgKaW5kZXggMTFmMjNiYS4uZGY2NDRkNCAxMDA2NDQKLS0t
IGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJDb250ZXh0TWVudURhdGEuaAorKysgYi9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYkNvbnRleHRNZW51RGF0YS5oCkBAIC0zMiw4ICszMiwxMCBA
QAogI2RlZmluZSBXZWJDb250ZXh0TWVudURhdGFfaAogCiAjaW5jbHVkZSAiV2ViUG9pbnQuaCIK
KyNpbmNsdWRlICJXZWJQb3B1cE1lbnVJbmZvLmgiCiAjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCiAj
aW5jbHVkZSAiV2ViVVJMLmgiCisjaW5jbHVkZSAiV2ViVmVjdG9yLmgiCiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCkBAIC0xMTEsNiArMTEzLDkgQEAgc3RydWN0IFdlYkNvbnRleHRNZW51RGF0YSB7
CiAKICAgICAvLyBTZWN1cml0eSBpbmZvcm1hdGlvbiBmb3IgdGhlIGNvbnRleHQuCiAgICAgV2Vi
Q1N0cmluZyBzZWN1cml0eUluZm87CisKKyAgICAvLyBDdXN0b20gcG9wdXAgbWVudSBpdGVtcyBw
cm92aWRlZCBieSB0aGUgV2ViQ29yZSBpbnRlcm5hbHMuCisgICAgV2ViVmVjdG9yPFdlYlBvcHVw
TWVudUluZm86Okl0ZW0+IGN1c3RvbUl0ZW1zOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlBvcHVwTWVudUluZm8uaCBi
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViUG9wdXBNZW51SW5mby5oCmluZGV4IDEwN2NmYTku
LjQ4YmFiMWYgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViUG9wdXBNZW51
SW5mby5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViUG9wdXBNZW51SW5mby5oCkBA
IC0zOCwxNyArMzgsMjAgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLS8vIERlc2NyaWJlcyB0
aGUgY29udGVudHMgb2YgYSBwb3B1cCBtZW51LgorLy8gRGVzY3JpYmVzIHRoZSBjb250ZW50cyBv
ZiBhIHBvcHVwIG1lbnUgb3IgY3VzdG9tIGNvbnRleHQgbWVudSBpdGVtIHByb3ZpZGVkIGZyb20g
d2l0aGluIFdlYkNvcmUuCiBzdHJ1Y3QgV2ViUG9wdXBNZW51SW5mbyB7CiAgICAgc3RydWN0IEl0
ZW0gewogICAgICAgICBlbnVtIFR5cGUgewogICAgICAgICAgICAgT3B0aW9uLAorICAgICAgICAg
ICAgQ2hlY2thYmxlT3B0aW9uLAogICAgICAgICAgICAgR3JvdXAsCiAgICAgICAgICAgICBTZXBh
cmF0b3IsCiAgICAgICAgIH07CiAgICAgICAgIFdlYlN0cmluZyBsYWJlbDsKICAgICAgICAgVHlw
ZSB0eXBlOworICAgICAgICB1bnNpZ25lZCBhY3Rpb247CiAgICAgICAgIGJvb2wgZW5hYmxlZDsK
KyAgICAgICAgYm9vbCBjaGVja2VkOwogICAgIH07CiAKICAgICBpbnQgaXRlbUhlaWdodDsKZGlm
ZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlldy5oIGIvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJWaWV3LmgKaW5kZXggZDIzOWVmMS4uMWM3YWU1NiAxMDA2NDQKLS0tIGEv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3LmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJWaWV3LmgKQEAgLTIzNCw2ICsyMzQsOSBAQCBwdWJsaWM6CiAgICAgLy8gSGlkZXMg
dGhlIGF1dG9maWxsIHBvcHVwIGlmIGFueSBhcmUgc2hvd2luZy4KICAgICB2aXJ0dWFsIHZvaWQg
aGlkZUF1dG9maWxsUG9wdXAoKSA9IDA7CiAKKyAgICAvLyBDb250ZXh0IG1lbnUgLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIHZp
cnR1YWwgdm9pZCBleGVjdXRlQ3VzdG9tQ29udGV4dE1lbnVBY3Rpb24odW5zaWduZWQgYWN0aW9u
KSA9IDA7CiAKICAgICAvLyBWaXNpdGVkIGxpbmsgc3RhdGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9t
aXVtL3NyYy9Db250ZXh0TWVudUNsaWVudEltcGwuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9D
b250ZXh0TWVudUNsaWVudEltcGwuY3BwCmluZGV4IGYzMmM3MmYuLmFkMWUwNjQgMTAwNjQ0Ci0t
LSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvQ29udGV4dE1lbnVDbGllbnRJbXBsLmNwcAorKysgYi9X
ZWJLaXQvY2hyb21pdW0vc3JjL0NvbnRleHRNZW51Q2xpZW50SW1wbC5jcHAKQEAgLTUxLDkgKzUx
LDExIEBACiAjaW5jbHVkZSAiV2ViRGF0YVNvdXJjZUltcGwuaCIKICNpbmNsdWRlICJXZWJGcmFt
ZUltcGwuaCIKICNpbmNsdWRlICJXZWJQb2ludC5oIgorI2luY2x1ZGUgIldlYlBvcHVwTWVudUlu
Zm8uaCIKICNpbmNsdWRlICJXZWJTdHJpbmcuaCIKICNpbmNsdWRlICJXZWJVUkwuaCIKICNpbmNs
dWRlICJXZWJVUkxSZXNwb25zZS5oIgorI2luY2x1ZGUgIldlYlZlY3Rvci5oIgogI2luY2x1ZGUg
IldlYlZpZXdDbGllbnQuaCIKICNpbmNsdWRlICJXZWJWaWV3SW1wbC5oIgogCkBAIC0yMjgsNiAr
MjMwLDM3IEBAIFBsYXRmb3JtTWVudURlc2NyaXB0aW9uIENvbnRleHRNZW51Q2xpZW50SW1wbDo6
Z2V0Q3VzdG9tTWVudUZyb21EZWZhdWx0SXRlbXMoCiAgICAgLy8gV2UgY2FuIGFsd2F5cyBzZWxl
Y3QgYWxsLi4uCiAgICAgZGF0YS5lZGl0RmxhZ3MgfD0gV2ViQ29udGV4dE1lbnVEYXRhOjpDYW5T
ZWxlY3RBbGw7CiAKKyAgICAvLyBGaWx0ZXIgb3V0IGN1c3RvbSBtZW51IGVsZW1lbnRzIGFuZCBh
ZGQgdGhlbSBpbnRvIHRoZSBkYXRhLgorICAgIFZlY3RvcjxXZWJQb3B1cE1lbnVJbmZvOjpJdGVt
PiBjdXN0b21JdGVtczsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGRlZmF1bHRNZW51LT5p
dGVtQ291bnQoKTsgKytpKSB7CisgICAgICAgIENvbnRleHRNZW51SXRlbSogaW5wdXRJdGVtID0g
ZGVmYXVsdE1lbnUtPml0ZW1BdEluZGV4KGksIGRlZmF1bHRNZW51LT5wbGF0Zm9ybURlc2NyaXB0
aW9uKCkpOworICAgICAgICBpZiAoaW5wdXRJdGVtLT5hY3Rpb24oKSA8IENvbnRleHRNZW51SXRl
bUJhc2VDdXN0b21UYWcgfHwgaW5wdXRJdGVtLT5hY3Rpb24oKSA+PSAgQ29udGV4dE1lbnVJdGVt
QmFzZUFwcGxpY2F0aW9uVGFnKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgV2Vi
UG9wdXBNZW51SW5mbzo6SXRlbSBvdXRwdXRJdGVtOworICAgICAgICBvdXRwdXRJdGVtLmxhYmVs
ID0gaW5wdXRJdGVtLT50aXRsZSgpOworICAgICAgICBvdXRwdXRJdGVtLmVuYWJsZWQgPSBpbnB1
dEl0ZW0tPmVuYWJsZWQoKTsKKyAgICAgICAgb3V0cHV0SXRlbS5jaGVja2VkID0gaW5wdXRJdGVt
LT5jaGVja2VkKCk7CisgICAgICAgIG91dHB1dEl0ZW0uYWN0aW9uID0gc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KGlucHV0SXRlbS0+YWN0aW9uKCkgLSBDb250ZXh0TWVudUl0ZW1CYXNlQ3VzdG9tVGFn
KTsKKyAgICAgICAgc3dpdGNoIChpbnB1dEl0ZW0tPnR5cGUoKSkgeworICAgICAgICBjYXNlIEFj
dGlvblR5cGU6CisgICAgICAgICAgICBvdXRwdXRJdGVtLnR5cGUgPSBXZWJQb3B1cE1lbnVJbmZv
OjpJdGVtOjpPcHRpb247CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDaGVja2Fi
bGVBY3Rpb25UeXBlOgorICAgICAgICAgICAgb3V0cHV0SXRlbS50eXBlID0gV2ViUG9wdXBNZW51
SW5mbzo6SXRlbTo6Q2hlY2thYmxlT3B0aW9uOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgU2VwYXJhdG9yVHlwZToKKyAgICAgICAgICAgIG91dHB1dEl0ZW0udHlwZSA9IFdlYlBv
cHVwTWVudUluZm86Okl0ZW06OlNlcGFyYXRvcjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CisgICAgICAgIGN1c3RvbUl0ZW1zLmFwcGVuZChvdXRwdXRJdGVtKTsKKyAgICB9CisKKyAg
ICBXZWJWZWN0b3I8V2ViUG9wdXBNZW51SW5mbzo6SXRlbT4gb3V0cHV0SXRlbXMoY3VzdG9tSXRl
bXMuc2l6ZSgpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGN1c3RvbUl0ZW1zLnNpemUo
KTsgKytpKQorICAgICAgICBvdXRwdXRJdGVtc1tpXSA9IGN1c3RvbUl0ZW1zW2ldOworICAgIGRh
dGEuY3VzdG9tSXRlbXMuc3dhcChvdXRwdXRJdGVtcyk7CisKICAgICBXZWJGcmFtZSogc2VsZWN0
ZWRfd2ViX2ZyYW1lID0gV2ViRnJhbWVJbXBsOjpmcm9tRnJhbWUoc2VsZWN0ZWRGcmFtZSk7CiAg
ICAgaWYgKG1fd2ViVmlldy0+Y2xpZW50KCkpCiAgICAgICAgIG1fd2ViVmlldy0+Y2xpZW50KCkt
PnNob3dDb250ZXh0TWVudShzZWxlY3RlZF93ZWJfZnJhbWUsIGRhdGEpOwpkaWZmIC0tZ2l0IGEv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlZpZXdJbXBsLmNwcAppbmRleCAxNjEyYjZhLi5lMDFkNDNkIDEwMDY0NAotLS0gYS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlZpZXdJbXBsLmNwcApAQCAtMzMsNiArMzMsOSBAQAogCiAjaW5jbHVkZSAiQXV0b2NvbXBs
ZXRlUG9wdXBNZW51Q2xpZW50LmgiCiAjaW5jbHVkZSAiQVhPYmplY3RDYWNoZS5oIgorI2luY2x1
ZGUgIkNvbnRleHRNZW51LmgiCisjaW5jbHVkZSAiQ29udGV4dE1lbnVJdGVtLmgiCisjaW5jbHVk
ZSAiQ29udGV4dE1lbnVDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiQ1NTU3R5bGVTZWxlY3Rvci5o
IgogI2luY2x1ZGUgIkNTU1ZhbHVlS2V5d29yZHMuaCIKICNpbmNsdWRlICJDdXJzb3IuaCIKQEAg
LTE1ODYsNiArMTU4OSwxOSBAQCB2b2lkIFdlYlZpZXdJbXBsOjpoaWRlQXV0b2ZpbGxQb3B1cCgp
CiAgICAgaGlkZUF1dG9Db21wbGV0ZVBvcHVwKCk7CiB9CiAKK3ZvaWQgV2ViVmlld0ltcGw6OmV4
ZWN1dGVDdXN0b21Db250ZXh0TWVudUFjdGlvbih1bnNpZ25lZCBhY3Rpb24pCit7CisgICAgaWYg
KCFtX3BhZ2UpCisgICAgICAgIHJldHVybjsKKyAgICBDb250ZXh0TWVudSogbWVudSA9IG1fcGFn
ZS0+Y29udGV4dE1lbnVDb250cm9sbGVyKCktPmNvbnRleHRNZW51KCk7CisgICAgaWYgKCFtZW51
KQorICAgICAgICByZXR1cm47CisgICAgQ29udGV4dE1lbnVJdGVtKiBpdGVtID0gbWVudS0+aXRl
bVdpdGhBY3Rpb24oc3RhdGljX2Nhc3Q8Q29udGV4dE1lbnVBY3Rpb24+KENvbnRleHRNZW51SXRl
bUJhc2VDdXN0b21UYWcgKyBhY3Rpb24pKTsKKyAgICBpZiAoaXRlbSkKKyAgICAgICAgbV9wYWdl
LT5jb250ZXh0TWVudUNvbnRyb2xsZXIoKS0+Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoaXRlbSk7
CisgICAgbV9wYWdlLT5jb250ZXh0TWVudUNvbnRyb2xsZXIoKS0+Y2xlYXJDb250ZXh0TWVudSgp
OworfQorCiAvLyBXZWJWaWV3IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIGJvb2wgV2ViVmlld0ltcGw6OnNldERy
b3BFZmZlY3QoYm9vbCBhY2NlcHQpCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlZpZXdJbXBsLmggYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKaW5kZXggM2Jl
YzUwZC4uMjI1YmJkNCAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1w
bC5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaApAQCAtMTU3LDYgKzE1
Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0U2Nyb2xsYmFyQ29sb3JzKHVuc2ln
bmVkIGluYWN0aXZlQ29sb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
bnNpZ25lZCBhY3RpdmVDb2xvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVuc2lnbmVkIHRyYWNrQ29sb3IpOworICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlQ3VzdG9tQ29u
dGV4dE1lbnVBY3Rpb24odW5zaWduZWQgYWN0aW9uKTsKIAogICAgIC8vIFdlYlZpZXdJbXBsCiAK
</data>
<flag name="commit-queue"
          id="26346"
          type_id="3"
          status="-"
          setter="pfeldman"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>44477</attachid>
            <date>2009-12-08 10:44:35 -0800</date>
            <delta_ts>2009-12-08 14:12:17 -0800</delta_ts>
            <desc>[PATCH] Same with style bot happy.</desc>
            <filename>context_menu_chromium</filename>
            <type>text/plain</type>
            <size>13965</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
Nzc4N2FmZi4uYzA0ZGU0ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNiBAQAorMjAwOS0xMi0wOCAgUGF2ZWwgRmVsZG1h
biAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBDaHJvbWl1bTogc3VwcG9ydCBjdXN0b20gV2ViQ29yZSBjb250
ZXh0IG1lbnUgaXRlbXMgaW4gQ2hyb21pdW0gcG9ydC4KKworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzIyNzcKKworICAgICAgICAqIHBsYXRmb3JtL0Nv
bnRleHRNZW51Lmg6CisgICAgICAgICogcGxhdGZvcm0vQ29udGV4dE1lbnVJdGVtLmg6CisgICAg
ICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lbnVJdGVtRGVzY3JpcHRpb246OlBsYXRmb3JtTWVudUl0
ZW1EZXNjcmlwdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vQ29udGV4dE1lbnVD
aHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0TWVudTo6Q29udGV4dE1lbnUp
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnU6Oml0ZW1Db3VudCk6CisgICAgICAgIChX
ZWJDb3JlOjpDb250ZXh0TWVudTo6aW5zZXJ0SXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpDb250
ZXh0TWVudTo6YXBwZW5kSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0TWVudTo6aXRl
bVdpdGhBY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnU6Oml0ZW1BdEluZGV4
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRNZW51OjpwbGF0Zm9ybURlc2NyaXB0aW9uKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9Db250ZXh0TWVudUl0ZW1DaHJvbWl1bS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW06OkNvbnRleHRNZW51SXRlbSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW06OnJlbGVhc2VQbGF0Zm9ybURlc2NyaXB0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbTo6dHlwZSk6CisgICAgICAg
IChXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW06OmFjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpD
b250ZXh0TWVudUl0ZW06OnRpdGxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRNZW51SXRl
bTo6Y2hlY2tlZCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW06OmVuYWJsZWQp
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtOjpzZXRUeXBlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbTo6c2V0QWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRleHRNZW51SXRlbTo6c2V0VGl0bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1l
bnVJdGVtOjpzZXRDaGVja2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbTo6
c2V0RW5hYmxlZCk6CisKIDIwMDktMTItMDggIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNv
bT4KIAogICAgICAgICBSZXZpZXdlZCBieSBKb2huIFN1bGxpdmFuLgpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9wbGF0Zm9ybS9Db250ZXh0TWVudS5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZXh0TWVu
dS5oCmluZGV4IGRjNDg0YjIuLjc3ODQzZGMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0v
Q29udGV4dE1lbnUuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL0NvbnRleHRNZW51LmgKQEAgLTc4
LDYgKzc4LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBSZXRhaW5QdHI8TlNNdXRh
YmxlQXJyYXk+IG1fcGxhdGZvcm1EZXNjcmlwdGlvbjsKICNlbGlmIFBMQVRGT1JNKFFUKQogICAg
ICAgICBRTGlzdDxDb250ZXh0TWVudUl0ZW0+IG1faXRlbXM7CisjZWxpZiBQTEFURk9STShDSFJP
TUlVTSkKKyAgICAgICAgVmVjdG9yPENvbnRleHRNZW51SXRlbT4gbV9pdGVtczsKICNlbHNlCiAg
ICAgICAgIFBsYXRmb3JtTWVudURlc2NyaXB0aW9uIG1fcGxhdGZvcm1EZXNjcmlwdGlvbjsKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZXh0TWVudUl0ZW0uaCBiL1dl
YkNvcmUvcGxhdGZvcm0vQ29udGV4dE1lbnVJdGVtLmgKaW5kZXggZDQyODU0Ny4uODhmZjBhZCAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZXh0TWVudUl0ZW0uaAorKysgYi9XZWJD
b3JlL3BsYXRmb3JtL0NvbnRleHRNZW51SXRlbS5oCkBAIC0yMDksNiArMjA5LDE5IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICB9OwogI2VsaWYgUExBVEZPUk0oSEFJS1UpCiAgICAgdHlwZWRl
ZiBCTWVudUl0ZW0qIFBsYXRmb3JtTWVudUl0ZW1EZXNjcmlwdGlvbjsKKyNlbGlmIFBMQVRGT1JN
KENIUk9NSVVNKQorICAgIHN0cnVjdCBQbGF0Zm9ybU1lbnVJdGVtRGVzY3JpcHRpb24geworICAg
ICAgICBQbGF0Zm9ybU1lbnVJdGVtRGVzY3JpcHRpb24oKQorICAgICAgICAgICAgOiB0eXBlKEFj
dGlvblR5cGUpCisgICAgICAgICAgICAsIGFjdGlvbihDb250ZXh0TWVudUl0ZW1UYWdOb0FjdGlv
bikKKyAgICAgICAgICAgICwgY2hlY2tlZChmYWxzZSkKKyAgICAgICAgICAgICwgZW5hYmxlZCh0
cnVlKSB7IH0KKyAgICAgICAgQ29udGV4dE1lbnVJdGVtVHlwZSB0eXBlOworICAgICAgICBDb250
ZXh0TWVudUFjdGlvbiBhY3Rpb247CisgICAgICAgIFN0cmluZyB0aXRsZTsKKyAgICAgICAgYm9v
bCBjaGVja2VkOworICAgICAgICBib29sIGVuYWJsZWQ7CisgICAgfTsKICNlbHNlCiAgICAgdHlw
ZWRlZiB2b2lkKiBQbGF0Zm9ybU1lbnVJdGVtRGVzY3JpcHRpb247CiAjZW5kaWYKQEAgLTIzOCw3
ICsyNTEsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgc2V0U3ViTWVudShD
b250ZXh0TWVudSopOwogCiAgICAgICAgIHZvaWQgc2V0Q2hlY2tlZChib29sID0gdHJ1ZSk7Ci0g
ICAgICAgIAorICAgICAgICBib29sIGNoZWNrZWQoKSBjb25zdDsKKwogICAgICAgICB2b2lkIHNl
dEVuYWJsZWQoYm9vbCA9IHRydWUpOwogICAgICAgICBib29sIGVuYWJsZWQoKSBjb25zdDsKIApk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Db250ZXh0TWVudUNocm9taXVt
LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ29udGV4dE1lbnVDaHJvbWl1bS5jcHAK
aW5kZXggMDYxNGUzZS4uNzY5MWViOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9jaHJv
bWl1bS9Db250ZXh0TWVudUNocm9taXVtLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2Nocm9t
aXVtL0NvbnRleHRNZW51Q2hyb21pdW0uY3BwCkBAIC0zOCwxMyArMzgsMTEgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBDb250ZXh0TWVudTo6Q29udGV4dE1lbnUoY29uc3QgSGl0VGVzdFJlc3Vs
dCYgcmVzdWx0KQogICAgIDogbV9oaXRUZXN0UmVzdWx0KHJlc3VsdCkKLSAgICAsIG1fcGxhdGZv
cm1EZXNjcmlwdGlvbigwKQogewogfQogCiBDb250ZXh0TWVudTo6Q29udGV4dE1lbnUoY29uc3Qg
SGl0VGVzdFJlc3VsdCYgcmVzdWx0LCBjb25zdCBQbGF0Zm9ybU1lbnVEZXNjcmlwdGlvbiBtZW51
KQogICAgIDogbV9oaXRUZXN0UmVzdWx0KHJlc3VsdCkKLSAgICAsIG1fcGxhdGZvcm1EZXNjcmlw
dGlvbigwKQogewogfQogCkBAIC01NCwyNSArNTIsMzEgQEAgQ29udGV4dE1lbnU6On5Db250ZXh0
TWVudSgpCiAKIHVuc2lnbmVkIENvbnRleHRNZW51OjppdGVtQ291bnQoKSBjb25zdAogewotICAg
IHJldHVybiAwOworICAgIHJldHVybiBtX2l0ZW1zLnNpemUoKTsKIH0KIAogdm9pZCBDb250ZXh0
TWVudTo6aW5zZXJ0SXRlbSh1bnNpZ25lZCBwb3NpdGlvbiwgQ29udGV4dE1lbnVJdGVtJiBpdGVt
KQogeworICAgIG1faXRlbXMuaW5zZXJ0KHBvc2l0aW9uLCBpdGVtKTsKIH0KIAogdm9pZCBDb250
ZXh0TWVudTo6YXBwZW5kSXRlbShDb250ZXh0TWVudUl0ZW0mIGl0ZW0pCiB7CisgICAgbV9pdGVt
cy5hcHBlbmQoaXRlbSk7CiB9CiAKIENvbnRleHRNZW51SXRlbSogQ29udGV4dE1lbnU6Oml0ZW1X
aXRoQWN0aW9uKHVuc2lnbmVkIGFjdGlvbikKIHsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG1faXRlbXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKG1faXRlbXNbaV0uYWN0aW9uKCkg
PT0gYWN0aW9uKQorICAgICAgICAgICAgcmV0dXJuICZtX2l0ZW1zW2ldOworICAgIH0KICAgICBy
ZXR1cm4gMDsKIH0KIAogQ29udGV4dE1lbnVJdGVtKiBDb250ZXh0TWVudTo6aXRlbUF0SW5kZXgo
dW5zaWduZWQgaW5kZXgsIGNvbnN0IFBsYXRmb3JtTWVudURlc2NyaXB0aW9uIHBsYXRmb3JtRGVz
Y3JpcHRpb24pCiB7Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuICZtX2l0ZW1zW2luZGV4XTsK
IH0KIAogdm9pZCBDb250ZXh0TWVudTo6c2V0UGxhdGZvcm1EZXNjcmlwdGlvbihQbGF0Zm9ybU1l
bnVEZXNjcmlwdGlvbiBtZW51KQpAQCAtODEsNyArODUsNyBAQCB2b2lkIENvbnRleHRNZW51Ojpz
ZXRQbGF0Zm9ybURlc2NyaXB0aW9uKFBsYXRmb3JtTWVudURlc2NyaXB0aW9uIG1lbnUpCiAKIFBs
YXRmb3JtTWVudURlc2NyaXB0aW9uIENvbnRleHRNZW51OjpwbGF0Zm9ybURlc2NyaXB0aW9uKCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gbV9wbGF0Zm9ybURlc2NyaXB0aW9uOworICAgIHJldHVybiAw
OwogfQogCiBQbGF0Zm9ybU1lbnVEZXNjcmlwdGlvbiBDb250ZXh0TWVudTo6cmVsZWFzZVBsYXRm
b3JtRGVzY3JpcHRpb24oKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9D
b250ZXh0TWVudUl0ZW1DaHJvbWl1bS5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0Nv
bnRleHRNZW51SXRlbUNocm9taXVtLmNwcAppbmRleCBmMzRlYTIzLi42YTBkNjU3IDEwMDY0NAot
LS0gYS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0NvbnRleHRNZW51SXRlbUNocm9taXVtLmNw
cAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0NvbnRleHRNZW51SXRlbUNocm9taXVt
LmNwcApAQCAtNDYsNiArNDYsOSBAQCBDb250ZXh0TWVudUl0ZW06OkNvbnRleHRNZW51SXRlbShD
b250ZXh0TWVudSogc3ViTWVudSkKIAogQ29udGV4dE1lbnVJdGVtOjpDb250ZXh0TWVudUl0ZW0o
Q29udGV4dE1lbnVJdGVtVHlwZSB0eXBlLCBDb250ZXh0TWVudUFjdGlvbiBhY3Rpb24sIGNvbnN0
IFN0cmluZyYgdGl0bGUsIENvbnRleHRNZW51KiBzdWJNZW51KQogeworICAgIG1fcGxhdGZvcm1E
ZXNjcmlwdGlvbi50eXBlID0gdHlwZTsKKyAgICBtX3BsYXRmb3JtRGVzY3JpcHRpb24uYWN0aW9u
ID0gYWN0aW9uOworICAgIG1fcGxhdGZvcm1EZXNjcmlwdGlvbi50aXRsZSA9IHRpdGxlOwogfQog
CiBDb250ZXh0TWVudUl0ZW06On5Db250ZXh0TWVudUl0ZW0oKQpAQCAtNTQsMjIgKzU3LDMyIEBA
IENvbnRleHRNZW51SXRlbTo6fkNvbnRleHRNZW51SXRlbSgpCiAKIFBsYXRmb3JtTWVudUl0ZW1E
ZXNjcmlwdGlvbiBDb250ZXh0TWVudUl0ZW06OnJlbGVhc2VQbGF0Zm9ybURlc2NyaXB0aW9uKCkK
IHsKLSAgICByZXR1cm4gUGxhdGZvcm1NZW51SXRlbURlc2NyaXB0aW9uKCk7CisgICAgcmV0dXJu
IG1fcGxhdGZvcm1EZXNjcmlwdGlvbjsKIH0KIAogQ29udGV4dE1lbnVJdGVtVHlwZSBDb250ZXh0
TWVudUl0ZW06OnR5cGUoKSBjb25zdAogewotICAgIHJldHVybiBDb250ZXh0TWVudUl0ZW1UeXBl
KCk7CisgICAgcmV0dXJuIG1fcGxhdGZvcm1EZXNjcmlwdGlvbi50eXBlOwogfQogCiBDb250ZXh0
TWVudUFjdGlvbiBDb250ZXh0TWVudUl0ZW06OmFjdGlvbigpIGNvbnN0CiB7IAotICAgIHJldHVy
biBDb250ZXh0TWVudUFjdGlvbigpOworICAgIHJldHVybiBtX3BsYXRmb3JtRGVzY3JpcHRpb24u
YWN0aW9uOwogfQogCiBTdHJpbmcgQ29udGV4dE1lbnVJdGVtOjp0aXRsZSgpIGNvbnN0IAogewot
ICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICByZXR1cm4gbV9wbGF0Zm9ybURlc2NyaXB0aW9uLnRp
dGxlOworfQorCitib29sIENvbnRleHRNZW51SXRlbTo6Y2hlY2tlZCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1fcGxhdGZvcm1EZXNjcmlwdGlvbi5jaGVja2VkOworfQorCitib29sIENvbnRleHRN
ZW51SXRlbTo6ZW5hYmxlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcGxhdGZvcm1EZXNjcmlw
dGlvbi5lbmFibGVkOwogfQogCiBQbGF0Zm9ybU1lbnVEZXNjcmlwdGlvbiBDb250ZXh0TWVudUl0
ZW06OnBsYXRmb3JtU3ViTWVudSgpIGNvbnN0CkBAIC03OSwxNCArOTIsMTcgQEAgUGxhdGZvcm1N
ZW51RGVzY3JpcHRpb24gQ29udGV4dE1lbnVJdGVtOjpwbGF0Zm9ybVN1Yk1lbnUoKSBjb25zdAog
CiB2b2lkIENvbnRleHRNZW51SXRlbTo6c2V0VHlwZShDb250ZXh0TWVudUl0ZW1UeXBlIHR5cGUp
CiB7CisgICAgbV9wbGF0Zm9ybURlc2NyaXB0aW9uLnR5cGUgPSB0eXBlOwogfQogCiB2b2lkIENv
bnRleHRNZW51SXRlbTo6c2V0QWN0aW9uKENvbnRleHRNZW51QWN0aW9uIGFjdGlvbikKIHsKKyAg
ICBtX3BsYXRmb3JtRGVzY3JpcHRpb24uYWN0aW9uID0gYWN0aW9uOwogfQogCiB2b2lkIENvbnRl
eHRNZW51SXRlbTo6c2V0VGl0bGUoY29uc3QgU3RyaW5nJiB0aXRsZSkKIHsKKyAgICBtX3BsYXRm
b3JtRGVzY3JpcHRpb24udGl0bGUgPSB0aXRsZTsKIH0KIAogdm9pZCBDb250ZXh0TWVudUl0ZW06
OnNldFN1Yk1lbnUoQ29udGV4dE1lbnUqIHN1Yk1lbnUpCkBAIC05NSwxNSArMTExLDEyIEBAIHZv
aWQgQ29udGV4dE1lbnVJdGVtOjpzZXRTdWJNZW51KENvbnRleHRNZW51KiBzdWJNZW51KQogCiB2
b2lkIENvbnRleHRNZW51SXRlbTo6c2V0Q2hlY2tlZChib29sIGNoZWNrZWQpCiB7CisgICAgbV9w
bGF0Zm9ybURlc2NyaXB0aW9uLmNoZWNrZWQgPSBjaGVja2VkOwogfQogCiB2b2lkIENvbnRleHRN
ZW51SXRlbTo6c2V0RW5hYmxlZChib29sIGVuYWJsZWQpCiB7Ci19Ci0KLWJvb2wgQ29udGV4dE1l
bnVJdGVtOjplbmFibGVkKCkgY29uc3QKLXsKLSAgICByZXR1cm4gZmFsc2U7CisgICAgbV9wbGF0
Zm9ybURlc2NyaXB0aW9uLmVuYWJsZWQgPSBlbmFibGVkOwogfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwppbmRleCA0ZDc4NjA3Li4wZDcyYTM4IDEwMDY0NAotLS0gYS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyMSBAQAorMjAwOS0xMi0wOCAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBDaHJvbWl1bTogc3VwcG9ydCBjdXN0b20gV2ViQ29yZSBjb250ZXh0IG1lbnUgaXRlbXMgaW4g
Q2hyb21pdW0gcG9ydC4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MzIyNzcKKworICAgICAgICAqIHB1YmxpYy9XZWJDb250ZXh0TWVudURhdGEuaDoK
KyAgICAgICAgKiBwdWJsaWMvV2ViUG9wdXBNZW51SW5mby5oOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQb3B1cE1lbnVJbmZvOjpJdGVtOjopOgorICAgICAgICAqIHB1YmxpYy9XZWJWaWV3Lmg6Cisg
ICAgICAgICogc3JjL0NvbnRleHRNZW51Q2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OkNvbnRleHRNZW51Q2xpZW50SW1wbDo6Z2V0Q3VzdG9tTWVudUZyb21EZWZhdWx0SXRlbXMpOgor
ICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJ
bXBsOjpleGVjdXRlQ3VzdG9tQ29udGV4dE1lbnVBY3Rpb24pOgorICAgICAgICAqIHNyYy9XZWJW
aWV3SW1wbC5oOgorCiAyMDA5LTEyLTA3ICBaaGUgU3UgIDxzdXpoZUBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gRmlzaGVyLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJDb250ZXh0TWVudURhdGEuaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViQ29udGV4dE1lbnVEYXRhLmgKaW5kZXggMTFmMjNiYS4uZGY2NDRkNCAxMDA2NDQKLS0t
IGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJDb250ZXh0TWVudURhdGEuaAorKysgYi9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYkNvbnRleHRNZW51RGF0YS5oCkBAIC0zMiw4ICszMiwxMCBA
QAogI2RlZmluZSBXZWJDb250ZXh0TWVudURhdGFfaAogCiAjaW5jbHVkZSAiV2ViUG9pbnQuaCIK
KyNpbmNsdWRlICJXZWJQb3B1cE1lbnVJbmZvLmgiCiAjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCiAj
aW5jbHVkZSAiV2ViVVJMLmgiCisjaW5jbHVkZSAiV2ViVmVjdG9yLmgiCiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCkBAIC0xMTEsNiArMTEzLDkgQEAgc3RydWN0IFdlYkNvbnRleHRNZW51RGF0YSB7
CiAKICAgICAvLyBTZWN1cml0eSBpbmZvcm1hdGlvbiBmb3IgdGhlIGNvbnRleHQuCiAgICAgV2Vi
Q1N0cmluZyBzZWN1cml0eUluZm87CisKKyAgICAvLyBDdXN0b20gcG9wdXAgbWVudSBpdGVtcyBw
cm92aWRlZCBieSB0aGUgV2ViQ29yZSBpbnRlcm5hbHMuCisgICAgV2ViVmVjdG9yPFdlYlBvcHVw
TWVudUluZm86Okl0ZW0+IGN1c3RvbUl0ZW1zOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlBvcHVwTWVudUluZm8uaCBi
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViUG9wdXBNZW51SW5mby5oCmluZGV4IDEwN2NmYTku
LjQ4YmFiMWYgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViUG9wdXBNZW51
SW5mby5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViUG9wdXBNZW51SW5mby5oCkBA
IC0zOCwxNyArMzgsMjAgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLS8vIERlc2NyaWJlcyB0
aGUgY29udGVudHMgb2YgYSBwb3B1cCBtZW51LgorLy8gRGVzY3JpYmVzIHRoZSBjb250ZW50cyBv
ZiBhIHBvcHVwIG1lbnUgb3IgY3VzdG9tIGNvbnRleHQgbWVudSBpdGVtIHByb3ZpZGVkIGZyb20g
d2l0aGluIFdlYkNvcmUuCiBzdHJ1Y3QgV2ViUG9wdXBNZW51SW5mbyB7CiAgICAgc3RydWN0IEl0
ZW0gewogICAgICAgICBlbnVtIFR5cGUgewogICAgICAgICAgICAgT3B0aW9uLAorICAgICAgICAg
ICAgQ2hlY2thYmxlT3B0aW9uLAogICAgICAgICAgICAgR3JvdXAsCiAgICAgICAgICAgICBTZXBh
cmF0b3IsCiAgICAgICAgIH07CiAgICAgICAgIFdlYlN0cmluZyBsYWJlbDsKICAgICAgICAgVHlw
ZSB0eXBlOworICAgICAgICB1bnNpZ25lZCBhY3Rpb247CiAgICAgICAgIGJvb2wgZW5hYmxlZDsK
KyAgICAgICAgYm9vbCBjaGVja2VkOwogICAgIH07CiAKICAgICBpbnQgaXRlbUhlaWdodDsKZGlm
ZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlldy5oIGIvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJWaWV3LmgKaW5kZXggZDIzOWVmMS4uMWM3YWU1NiAxMDA2NDQKLS0tIGEv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3LmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJWaWV3LmgKQEAgLTIzNCw2ICsyMzQsOSBAQCBwdWJsaWM6CiAgICAgLy8gSGlkZXMg
dGhlIGF1dG9maWxsIHBvcHVwIGlmIGFueSBhcmUgc2hvd2luZy4KICAgICB2aXJ0dWFsIHZvaWQg
aGlkZUF1dG9maWxsUG9wdXAoKSA9IDA7CiAKKyAgICAvLyBDb250ZXh0IG1lbnUgLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIHZp
cnR1YWwgdm9pZCBleGVjdXRlQ3VzdG9tQ29udGV4dE1lbnVBY3Rpb24odW5zaWduZWQgYWN0aW9u
KSA9IDA7CiAKICAgICAvLyBWaXNpdGVkIGxpbmsgc3RhdGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9t
aXVtL3NyYy9Db250ZXh0TWVudUNsaWVudEltcGwuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9D
b250ZXh0TWVudUNsaWVudEltcGwuY3BwCmluZGV4IGYzMmM3MmYuLmFkMWUwNjQgMTAwNjQ0Ci0t
LSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvQ29udGV4dE1lbnVDbGllbnRJbXBsLmNwcAorKysgYi9X
ZWJLaXQvY2hyb21pdW0vc3JjL0NvbnRleHRNZW51Q2xpZW50SW1wbC5jcHAKQEAgLTUxLDkgKzUx
LDExIEBACiAjaW5jbHVkZSAiV2ViRGF0YVNvdXJjZUltcGwuaCIKICNpbmNsdWRlICJXZWJGcmFt
ZUltcGwuaCIKICNpbmNsdWRlICJXZWJQb2ludC5oIgorI2luY2x1ZGUgIldlYlBvcHVwTWVudUlu
Zm8uaCIKICNpbmNsdWRlICJXZWJTdHJpbmcuaCIKICNpbmNsdWRlICJXZWJVUkwuaCIKICNpbmNs
dWRlICJXZWJVUkxSZXNwb25zZS5oIgorI2luY2x1ZGUgIldlYlZlY3Rvci5oIgogI2luY2x1ZGUg
IldlYlZpZXdDbGllbnQuaCIKICNpbmNsdWRlICJXZWJWaWV3SW1wbC5oIgogCkBAIC0yMjgsNiAr
MjMwLDM3IEBAIFBsYXRmb3JtTWVudURlc2NyaXB0aW9uIENvbnRleHRNZW51Q2xpZW50SW1wbDo6
Z2V0Q3VzdG9tTWVudUZyb21EZWZhdWx0SXRlbXMoCiAgICAgLy8gV2UgY2FuIGFsd2F5cyBzZWxl
Y3QgYWxsLi4uCiAgICAgZGF0YS5lZGl0RmxhZ3MgfD0gV2ViQ29udGV4dE1lbnVEYXRhOjpDYW5T
ZWxlY3RBbGw7CiAKKyAgICAvLyBGaWx0ZXIgb3V0IGN1c3RvbSBtZW51IGVsZW1lbnRzIGFuZCBh
ZGQgdGhlbSBpbnRvIHRoZSBkYXRhLgorICAgIFZlY3RvcjxXZWJQb3B1cE1lbnVJbmZvOjpJdGVt
PiBjdXN0b21JdGVtczsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGRlZmF1bHRNZW51LT5p
dGVtQ291bnQoKTsgKytpKSB7CisgICAgICAgIENvbnRleHRNZW51SXRlbSogaW5wdXRJdGVtID0g
ZGVmYXVsdE1lbnUtPml0ZW1BdEluZGV4KGksIGRlZmF1bHRNZW51LT5wbGF0Zm9ybURlc2NyaXB0
aW9uKCkpOworICAgICAgICBpZiAoaW5wdXRJdGVtLT5hY3Rpb24oKSA8IENvbnRleHRNZW51SXRl
bUJhc2VDdXN0b21UYWcgfHwgaW5wdXRJdGVtLT5hY3Rpb24oKSA+PSAgQ29udGV4dE1lbnVJdGVt
QmFzZUFwcGxpY2F0aW9uVGFnKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgV2Vi
UG9wdXBNZW51SW5mbzo6SXRlbSBvdXRwdXRJdGVtOworICAgICAgICBvdXRwdXRJdGVtLmxhYmVs
ID0gaW5wdXRJdGVtLT50aXRsZSgpOworICAgICAgICBvdXRwdXRJdGVtLmVuYWJsZWQgPSBpbnB1
dEl0ZW0tPmVuYWJsZWQoKTsKKyAgICAgICAgb3V0cHV0SXRlbS5jaGVja2VkID0gaW5wdXRJdGVt
LT5jaGVja2VkKCk7CisgICAgICAgIG91dHB1dEl0ZW0uYWN0aW9uID0gc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KGlucHV0SXRlbS0+YWN0aW9uKCkgLSBDb250ZXh0TWVudUl0ZW1CYXNlQ3VzdG9tVGFn
KTsKKyAgICAgICAgc3dpdGNoIChpbnB1dEl0ZW0tPnR5cGUoKSkgeworICAgICAgICBjYXNlIEFj
dGlvblR5cGU6CisgICAgICAgICAgICBvdXRwdXRJdGVtLnR5cGUgPSBXZWJQb3B1cE1lbnVJbmZv
OjpJdGVtOjpPcHRpb247CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDaGVja2Fi
bGVBY3Rpb25UeXBlOgorICAgICAgICAgICAgb3V0cHV0SXRlbS50eXBlID0gV2ViUG9wdXBNZW51
SW5mbzo6SXRlbTo6Q2hlY2thYmxlT3B0aW9uOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgU2VwYXJhdG9yVHlwZToKKyAgICAgICAgICAgIG91dHB1dEl0ZW0udHlwZSA9IFdlYlBv
cHVwTWVudUluZm86Okl0ZW06OlNlcGFyYXRvcjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CisgICAgICAgIGN1c3RvbUl0ZW1zLmFwcGVuZChvdXRwdXRJdGVtKTsKKyAgICB9CisKKyAg
ICBXZWJWZWN0b3I8V2ViUG9wdXBNZW51SW5mbzo6SXRlbT4gb3V0cHV0SXRlbXMoY3VzdG9tSXRl
bXMuc2l6ZSgpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGN1c3RvbUl0ZW1zLnNpemUo
KTsgKytpKQorICAgICAgICBvdXRwdXRJdGVtc1tpXSA9IGN1c3RvbUl0ZW1zW2ldOworICAgIGRh
dGEuY3VzdG9tSXRlbXMuc3dhcChvdXRwdXRJdGVtcyk7CisKICAgICBXZWJGcmFtZSogc2VsZWN0
ZWRfd2ViX2ZyYW1lID0gV2ViRnJhbWVJbXBsOjpmcm9tRnJhbWUoc2VsZWN0ZWRGcmFtZSk7CiAg
ICAgaWYgKG1fd2ViVmlldy0+Y2xpZW50KCkpCiAgICAgICAgIG1fd2ViVmlldy0+Y2xpZW50KCkt
PnNob3dDb250ZXh0TWVudShzZWxlY3RlZF93ZWJfZnJhbWUsIGRhdGEpOwpkaWZmIC0tZ2l0IGEv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlZpZXdJbXBsLmNwcAppbmRleCAxNjEyYjZhLi5lMDk0MWZmIDEwMDY0NAotLS0gYS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlZpZXdJbXBsLmNwcApAQCAtMzMsNiArMzMsOSBAQAogCiAjaW5jbHVkZSAiQXV0b2NvbXBs
ZXRlUG9wdXBNZW51Q2xpZW50LmgiCiAjaW5jbHVkZSAiQVhPYmplY3RDYWNoZS5oIgorI2luY2x1
ZGUgIkNvbnRleHRNZW51LmgiCisjaW5jbHVkZSAiQ29udGV4dE1lbnVDb250cm9sbGVyLmgiCisj
aW5jbHVkZSAiQ29udGV4dE1lbnVJdGVtLmgiCiAjaW5jbHVkZSAiQ1NTU3R5bGVTZWxlY3Rvci5o
IgogI2luY2x1ZGUgIkNTU1ZhbHVlS2V5d29yZHMuaCIKICNpbmNsdWRlICJDdXJzb3IuaCIKQEAg
LTE1ODYsNiArMTU4OSwxOSBAQCB2b2lkIFdlYlZpZXdJbXBsOjpoaWRlQXV0b2ZpbGxQb3B1cCgp
CiAgICAgaGlkZUF1dG9Db21wbGV0ZVBvcHVwKCk7CiB9CiAKK3ZvaWQgV2ViVmlld0ltcGw6OmV4
ZWN1dGVDdXN0b21Db250ZXh0TWVudUFjdGlvbih1bnNpZ25lZCBhY3Rpb24pCit7CisgICAgaWYg
KCFtX3BhZ2UpCisgICAgICAgIHJldHVybjsKKyAgICBDb250ZXh0TWVudSogbWVudSA9IG1fcGFn
ZS0+Y29udGV4dE1lbnVDb250cm9sbGVyKCktPmNvbnRleHRNZW51KCk7CisgICAgaWYgKCFtZW51
KQorICAgICAgICByZXR1cm47CisgICAgQ29udGV4dE1lbnVJdGVtKiBpdGVtID0gbWVudS0+aXRl
bVdpdGhBY3Rpb24oc3RhdGljX2Nhc3Q8Q29udGV4dE1lbnVBY3Rpb24+KENvbnRleHRNZW51SXRl
bUJhc2VDdXN0b21UYWcgKyBhY3Rpb24pKTsKKyAgICBpZiAoaXRlbSkKKyAgICAgICAgbV9wYWdl
LT5jb250ZXh0TWVudUNvbnRyb2xsZXIoKS0+Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoaXRlbSk7
CisgICAgbV9wYWdlLT5jb250ZXh0TWVudUNvbnRyb2xsZXIoKS0+Y2xlYXJDb250ZXh0TWVudSgp
OworfQorCiAvLyBXZWJWaWV3IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIGJvb2wgV2ViVmlld0ltcGw6OnNldERy
b3BFZmZlY3QoYm9vbCBhY2NlcHQpCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlZpZXdJbXBsLmggYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKaW5kZXggM2Jl
YzUwZC4uMjI1YmJkNCAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1w
bC5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaApAQCAtMTU3LDYgKzE1
Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0U2Nyb2xsYmFyQ29sb3JzKHVuc2ln
bmVkIGluYWN0aXZlQ29sb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
bnNpZ25lZCBhY3RpdmVDb2xvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVuc2lnbmVkIHRyYWNrQ29sb3IpOworICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlQ3VzdG9tQ29u
dGV4dE1lbnVBY3Rpb24odW5zaWduZWQgYWN0aW9uKTsKIAogICAgIC8vIFdlYlZpZXdJbXBsCiAK
</data>
<flag name="review"
          id="26347"
          type_id="1"
          status="-"
          setter="fishd"
    />
    <flag name="commit-queue"
          id="26348"
          type_id="3"
          status="-"
          setter="pfeldman"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>44486</attachid>
            <date>2009-12-08 14:12:17 -0800</date>
            <delta_ts>2009-12-08 14:18:11 -0800</delta_ts>
            <desc>[PATCH] Review comments addressed.</desc>
            <filename>context_menu_chromium</filename>
            <type>text/plain</type>
            <size>18396</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
Nzc4N2FmZi4uYzA0ZGU0ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNiBAQAorMjAwOS0xMi0wOCAgUGF2ZWwgRmVsZG1h
biAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBDaHJvbWl1bTogc3VwcG9ydCBjdXN0b20gV2ViQ29yZSBjb250
ZXh0IG1lbnUgaXRlbXMgaW4gQ2hyb21pdW0gcG9ydC4KKworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzIyNzcKKworICAgICAgICAqIHBsYXRmb3JtL0Nv
bnRleHRNZW51Lmg6CisgICAgICAgICogcGxhdGZvcm0vQ29udGV4dE1lbnVJdGVtLmg6CisgICAg
ICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lbnVJdGVtRGVzY3JpcHRpb246OlBsYXRmb3JtTWVudUl0
ZW1EZXNjcmlwdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vQ29udGV4dE1lbnVD
aHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0TWVudTo6Q29udGV4dE1lbnUp
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnU6Oml0ZW1Db3VudCk6CisgICAgICAgIChX
ZWJDb3JlOjpDb250ZXh0TWVudTo6aW5zZXJ0SXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpDb250
ZXh0TWVudTo6YXBwZW5kSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0TWVudTo6aXRl
bVdpdGhBY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnU6Oml0ZW1BdEluZGV4
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRNZW51OjpwbGF0Zm9ybURlc2NyaXB0aW9uKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9Db250ZXh0TWVudUl0ZW1DaHJvbWl1bS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW06OkNvbnRleHRNZW51SXRlbSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW06OnJlbGVhc2VQbGF0Zm9ybURlc2NyaXB0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbTo6dHlwZSk6CisgICAgICAg
IChXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW06OmFjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpD
b250ZXh0TWVudUl0ZW06OnRpdGxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRNZW51SXRl
bTo6Y2hlY2tlZCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW06OmVuYWJsZWQp
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtOjpzZXRUeXBlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbTo6c2V0QWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRleHRNZW51SXRlbTo6c2V0VGl0bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1l
bnVJdGVtOjpzZXRDaGVja2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbTo6
c2V0RW5hYmxlZCk6CisKIDIwMDktMTItMDggIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNv
bT4KIAogICAgICAgICBSZXZpZXdlZCBieSBKb2huIFN1bGxpdmFuLgpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9wbGF0Zm9ybS9Db250ZXh0TWVudS5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZXh0TWVu
dS5oCmluZGV4IGRjNDg0YjIuLjc3ODQzZGMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0v
Q29udGV4dE1lbnUuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL0NvbnRleHRNZW51LmgKQEAgLTc4
LDYgKzc4LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBSZXRhaW5QdHI8TlNNdXRh
YmxlQXJyYXk+IG1fcGxhdGZvcm1EZXNjcmlwdGlvbjsKICNlbGlmIFBMQVRGT1JNKFFUKQogICAg
ICAgICBRTGlzdDxDb250ZXh0TWVudUl0ZW0+IG1faXRlbXM7CisjZWxpZiBQTEFURk9STShDSFJP
TUlVTSkKKyAgICAgICAgVmVjdG9yPENvbnRleHRNZW51SXRlbT4gbV9pdGVtczsKICNlbHNlCiAg
ICAgICAgIFBsYXRmb3JtTWVudURlc2NyaXB0aW9uIG1fcGxhdGZvcm1EZXNjcmlwdGlvbjsKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZXh0TWVudUl0ZW0uaCBiL1dl
YkNvcmUvcGxhdGZvcm0vQ29udGV4dE1lbnVJdGVtLmgKaW5kZXggZDQyODU0Ny4uODhmZjBhZCAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZXh0TWVudUl0ZW0uaAorKysgYi9XZWJD
b3JlL3BsYXRmb3JtL0NvbnRleHRNZW51SXRlbS5oCkBAIC0yMDksNiArMjA5LDE5IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICB9OwogI2VsaWYgUExBVEZPUk0oSEFJS1UpCiAgICAgdHlwZWRl
ZiBCTWVudUl0ZW0qIFBsYXRmb3JtTWVudUl0ZW1EZXNjcmlwdGlvbjsKKyNlbGlmIFBMQVRGT1JN
KENIUk9NSVVNKQorICAgIHN0cnVjdCBQbGF0Zm9ybU1lbnVJdGVtRGVzY3JpcHRpb24geworICAg
ICAgICBQbGF0Zm9ybU1lbnVJdGVtRGVzY3JpcHRpb24oKQorICAgICAgICAgICAgOiB0eXBlKEFj
dGlvblR5cGUpCisgICAgICAgICAgICAsIGFjdGlvbihDb250ZXh0TWVudUl0ZW1UYWdOb0FjdGlv
bikKKyAgICAgICAgICAgICwgY2hlY2tlZChmYWxzZSkKKyAgICAgICAgICAgICwgZW5hYmxlZCh0
cnVlKSB7IH0KKyAgICAgICAgQ29udGV4dE1lbnVJdGVtVHlwZSB0eXBlOworICAgICAgICBDb250
ZXh0TWVudUFjdGlvbiBhY3Rpb247CisgICAgICAgIFN0cmluZyB0aXRsZTsKKyAgICAgICAgYm9v
bCBjaGVja2VkOworICAgICAgICBib29sIGVuYWJsZWQ7CisgICAgfTsKICNlbHNlCiAgICAgdHlw
ZWRlZiB2b2lkKiBQbGF0Zm9ybU1lbnVJdGVtRGVzY3JpcHRpb247CiAjZW5kaWYKQEAgLTIzOCw3
ICsyNTEsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgc2V0U3ViTWVudShD
b250ZXh0TWVudSopOwogCiAgICAgICAgIHZvaWQgc2V0Q2hlY2tlZChib29sID0gdHJ1ZSk7Ci0g
ICAgICAgIAorICAgICAgICBib29sIGNoZWNrZWQoKSBjb25zdDsKKwogICAgICAgICB2b2lkIHNl
dEVuYWJsZWQoYm9vbCA9IHRydWUpOwogICAgICAgICBib29sIGVuYWJsZWQoKSBjb25zdDsKIApk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Db250ZXh0TWVudUNocm9taXVt
LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ29udGV4dE1lbnVDaHJvbWl1bS5jcHAK
aW5kZXggMDYxNGUzZS4uOTNjMGVjNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9jaHJv
bWl1bS9Db250ZXh0TWVudUNocm9taXVtLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2Nocm9t
aXVtL0NvbnRleHRNZW51Q2hyb21pdW0uY3BwCkBAIC0zOCwxMyArMzgsMTEgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBDb250ZXh0TWVudTo6Q29udGV4dE1lbnUoY29uc3QgSGl0VGVzdFJlc3Vs
dCYgcmVzdWx0KQogICAgIDogbV9oaXRUZXN0UmVzdWx0KHJlc3VsdCkKLSAgICAsIG1fcGxhdGZv
cm1EZXNjcmlwdGlvbigwKQogewogfQogCiBDb250ZXh0TWVudTo6Q29udGV4dE1lbnUoY29uc3Qg
SGl0VGVzdFJlc3VsdCYgcmVzdWx0LCBjb25zdCBQbGF0Zm9ybU1lbnVEZXNjcmlwdGlvbiBtZW51
KQogICAgIDogbV9oaXRUZXN0UmVzdWx0KHJlc3VsdCkKLSAgICAsIG1fcGxhdGZvcm1EZXNjcmlw
dGlvbigwKQogewogfQogCkBAIC01NCwyNSArNTIsMzEgQEAgQ29udGV4dE1lbnU6On5Db250ZXh0
TWVudSgpCiAKIHVuc2lnbmVkIENvbnRleHRNZW51OjppdGVtQ291bnQoKSBjb25zdAogewotICAg
IHJldHVybiAwOworICAgIHJldHVybiBtX2l0ZW1zLnNpemUoKTsKIH0KIAogdm9pZCBDb250ZXh0
TWVudTo6aW5zZXJ0SXRlbSh1bnNpZ25lZCBwb3NpdGlvbiwgQ29udGV4dE1lbnVJdGVtJiBpdGVt
KQogeworICAgIG1faXRlbXMuaW5zZXJ0KHBvc2l0aW9uLCBpdGVtKTsKIH0KIAogdm9pZCBDb250
ZXh0TWVudTo6YXBwZW5kSXRlbShDb250ZXh0TWVudUl0ZW0mIGl0ZW0pCiB7CisgICAgbV9pdGVt
cy5hcHBlbmQoaXRlbSk7CiB9CiAKIENvbnRleHRNZW51SXRlbSogQ29udGV4dE1lbnU6Oml0ZW1X
aXRoQWN0aW9uKHVuc2lnbmVkIGFjdGlvbikKIHsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG1faXRlbXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKG1faXRlbXNbaV0uYWN0aW9uKCkg
PT0gc3RhdGljX2Nhc3Q8Q29udGV4dE1lbnVBY3Rpb24+KGFjdGlvbikpCisgICAgICAgICAgICBy
ZXR1cm4gJm1faXRlbXNbaV07CisgICAgfQogICAgIHJldHVybiAwOwogfQogCiBDb250ZXh0TWVu
dUl0ZW0qIENvbnRleHRNZW51OjppdGVtQXRJbmRleCh1bnNpZ25lZCBpbmRleCwgY29uc3QgUGxh
dGZvcm1NZW51RGVzY3JpcHRpb24gcGxhdGZvcm1EZXNjcmlwdGlvbikKIHsKLSAgICByZXR1cm4g
MDsKKyAgICByZXR1cm4gJm1faXRlbXNbaW5kZXhdOwogfQogCiB2b2lkIENvbnRleHRNZW51Ojpz
ZXRQbGF0Zm9ybURlc2NyaXB0aW9uKFBsYXRmb3JtTWVudURlc2NyaXB0aW9uIG1lbnUpCkBAIC04
MSw3ICs4NSw3IEBAIHZvaWQgQ29udGV4dE1lbnU6OnNldFBsYXRmb3JtRGVzY3JpcHRpb24oUGxh
dGZvcm1NZW51RGVzY3JpcHRpb24gbWVudSkKIAogUGxhdGZvcm1NZW51RGVzY3JpcHRpb24gQ29u
dGV4dE1lbnU6OnBsYXRmb3JtRGVzY3JpcHRpb24oKSBjb25zdAogewotICAgIHJldHVybiBtX3Bs
YXRmb3JtRGVzY3JpcHRpb247CisgICAgcmV0dXJuIDA7CiB9CiAKIFBsYXRmb3JtTWVudURlc2Ny
aXB0aW9uIENvbnRleHRNZW51OjpyZWxlYXNlUGxhdGZvcm1EZXNjcmlwdGlvbigpCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0NvbnRleHRNZW51SXRlbUNocm9taXVtLmNw
cCBiL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ29udGV4dE1lbnVJdGVtQ2hyb21pdW0uY3Bw
CmluZGV4IGYzNGVhMjMuLjZhMGQ2NTcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vY2hy
b21pdW0vQ29udGV4dE1lbnVJdGVtQ2hyb21pdW0uY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0v
Y2hyb21pdW0vQ29udGV4dE1lbnVJdGVtQ2hyb21pdW0uY3BwCkBAIC00Niw2ICs0Niw5IEBAIENv
bnRleHRNZW51SXRlbTo6Q29udGV4dE1lbnVJdGVtKENvbnRleHRNZW51KiBzdWJNZW51KQogCiBD
b250ZXh0TWVudUl0ZW06OkNvbnRleHRNZW51SXRlbShDb250ZXh0TWVudUl0ZW1UeXBlIHR5cGUs
IENvbnRleHRNZW51QWN0aW9uIGFjdGlvbiwgY29uc3QgU3RyaW5nJiB0aXRsZSwgQ29udGV4dE1l
bnUqIHN1Yk1lbnUpCiB7CisgICAgbV9wbGF0Zm9ybURlc2NyaXB0aW9uLnR5cGUgPSB0eXBlOwor
ICAgIG1fcGxhdGZvcm1EZXNjcmlwdGlvbi5hY3Rpb24gPSBhY3Rpb247CisgICAgbV9wbGF0Zm9y
bURlc2NyaXB0aW9uLnRpdGxlID0gdGl0bGU7CiB9CiAKIENvbnRleHRNZW51SXRlbTo6fkNvbnRl
eHRNZW51SXRlbSgpCkBAIC01NCwyMiArNTcsMzIgQEAgQ29udGV4dE1lbnVJdGVtOjp+Q29udGV4
dE1lbnVJdGVtKCkKIAogUGxhdGZvcm1NZW51SXRlbURlc2NyaXB0aW9uIENvbnRleHRNZW51SXRl
bTo6cmVsZWFzZVBsYXRmb3JtRGVzY3JpcHRpb24oKQogewotICAgIHJldHVybiBQbGF0Zm9ybU1l
bnVJdGVtRGVzY3JpcHRpb24oKTsKKyAgICByZXR1cm4gbV9wbGF0Zm9ybURlc2NyaXB0aW9uOwog
fQogCiBDb250ZXh0TWVudUl0ZW1UeXBlIENvbnRleHRNZW51SXRlbTo6dHlwZSgpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIENvbnRleHRNZW51SXRlbVR5cGUoKTsKKyAgICByZXR1cm4gbV9wbGF0Zm9y
bURlc2NyaXB0aW9uLnR5cGU7CiB9CiAKIENvbnRleHRNZW51QWN0aW9uIENvbnRleHRNZW51SXRl
bTo6YWN0aW9uKCkgY29uc3QKIHsgCi0gICAgcmV0dXJuIENvbnRleHRNZW51QWN0aW9uKCk7Cisg
ICAgcmV0dXJuIG1fcGxhdGZvcm1EZXNjcmlwdGlvbi5hY3Rpb247CiB9CiAKIFN0cmluZyBDb250
ZXh0TWVudUl0ZW06OnRpdGxlKCkgY29uc3QgCiB7Ci0gICAgcmV0dXJuIFN0cmluZygpOworICAg
IHJldHVybiBtX3BsYXRmb3JtRGVzY3JpcHRpb24udGl0bGU7Cit9CisKK2Jvb2wgQ29udGV4dE1l
bnVJdGVtOjpjaGVja2VkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wbGF0Zm9ybURlc2NyaXB0
aW9uLmNoZWNrZWQ7Cit9CisKK2Jvb2wgQ29udGV4dE1lbnVJdGVtOjplbmFibGVkKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9wbGF0Zm9ybURlc2NyaXB0aW9uLmVuYWJsZWQ7CiB9CiAKIFBsYXRm
b3JtTWVudURlc2NyaXB0aW9uIENvbnRleHRNZW51SXRlbTo6cGxhdGZvcm1TdWJNZW51KCkgY29u
c3QKQEAgLTc5LDE0ICs5MiwxNyBAQCBQbGF0Zm9ybU1lbnVEZXNjcmlwdGlvbiBDb250ZXh0TWVu
dUl0ZW06OnBsYXRmb3JtU3ViTWVudSgpIGNvbnN0CiAKIHZvaWQgQ29udGV4dE1lbnVJdGVtOjpz
ZXRUeXBlKENvbnRleHRNZW51SXRlbVR5cGUgdHlwZSkKIHsKKyAgICBtX3BsYXRmb3JtRGVzY3Jp
cHRpb24udHlwZSA9IHR5cGU7CiB9CiAKIHZvaWQgQ29udGV4dE1lbnVJdGVtOjpzZXRBY3Rpb24o
Q29udGV4dE1lbnVBY3Rpb24gYWN0aW9uKQogeworICAgIG1fcGxhdGZvcm1EZXNjcmlwdGlvbi5h
Y3Rpb24gPSBhY3Rpb247CiB9CiAKIHZvaWQgQ29udGV4dE1lbnVJdGVtOjpzZXRUaXRsZShjb25z
dCBTdHJpbmcmIHRpdGxlKQogeworICAgIG1fcGxhdGZvcm1EZXNjcmlwdGlvbi50aXRsZSA9IHRp
dGxlOwogfQogCiB2b2lkIENvbnRleHRNZW51SXRlbTo6c2V0U3ViTWVudShDb250ZXh0TWVudSog
c3ViTWVudSkKQEAgLTk1LDE1ICsxMTEsMTIgQEAgdm9pZCBDb250ZXh0TWVudUl0ZW06OnNldFN1
Yk1lbnUoQ29udGV4dE1lbnUqIHN1Yk1lbnUpCiAKIHZvaWQgQ29udGV4dE1lbnVJdGVtOjpzZXRD
aGVja2VkKGJvb2wgY2hlY2tlZCkKIHsKKyAgICBtX3BsYXRmb3JtRGVzY3JpcHRpb24uY2hlY2tl
ZCA9IGNoZWNrZWQ7CiB9CiAKIHZvaWQgQ29udGV4dE1lbnVJdGVtOjpzZXRFbmFibGVkKGJvb2wg
ZW5hYmxlZCkKIHsKLX0KLQotYm9vbCBDb250ZXh0TWVudUl0ZW06OmVuYWJsZWQoKSBjb25zdAot
ewotICAgIHJldHVybiBmYWxzZTsKKyAgICBtX3BsYXRmb3JtRGVzY3JpcHRpb24uZW5hYmxlZCA9
IGVuYWJsZWQ7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDRk
Nzg2MDcuLjBkNzJhMzggMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysr
IGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDA5LTEyLTA4
ICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENocm9taXVtOiBzdXBwb3J0IGN1c3Rv
bSBXZWJDb3JlIGNvbnRleHQgbWVudSBpdGVtcyBpbiBDaHJvbWl1bSBwb3J0LgorCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMjI3NworCisgICAgICAg
ICogcHVibGljL1dlYkNvbnRleHRNZW51RGF0YS5oOgorICAgICAgICAqIHB1YmxpYy9XZWJQb3B1
cE1lbnVJbmZvLmg6CisgICAgICAgIChXZWJLaXQ6OldlYlBvcHVwTWVudUluZm86Okl0ZW06Oik6
CisgICAgICAgICogcHVibGljL1dlYlZpZXcuaDoKKyAgICAgICAgKiBzcmMvQ29udGV4dE1lbnVD
bGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q29udGV4dE1lbnVDbGllbnRJbXBsOjpn
ZXRDdXN0b21NZW51RnJvbURlZmF1bHRJdGVtcyk6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBs
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmV4ZWN1dGVDdXN0b21Db250ZXh0
TWVudUFjdGlvbik6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmg6CisKIDIwMDktMTItMDcg
IFpoZSBTdSAgPHN1emhlQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJp
biBGaXNoZXIuCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cCBiL1dlYktp
dC9jaHJvbWl1bS9XZWJLaXQuZ3lwCmluZGV4IDdjMGQ5MTMuLmYwNDQyNzkgMTAwNjQ0Ci0tLSBh
L1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQu
Z3lwCkBAIC0xMzEsNiArMTMxLDcgQEAKICAgICAgICAgICAgICAgICAncHVibGljL1dlYk1lZGlh
UGxheWVyLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViTWVkaWFQbGF5ZXJBY3Rpb24u
aCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJNZWRpYVBsYXllckNsaWVudC5oJywKKyAg
ICAgICAgICAgICAgICAncHVibGljL1dlYk1lbnVJdGVtSW5mby5oJywKICAgICAgICAgICAgICAg
ICAncHVibGljL1dlYk1lc3NhZ2VQb3J0Q2hhbm5lbC5oJywKICAgICAgICAgICAgICAgICAncHVi
bGljL1dlYk1lc3NhZ2VQb3J0Q2hhbm5lbENsaWVudC5oJywKICAgICAgICAgICAgICAgICAncHVi
bGljL1dlYk1pbWVSZWdpc3RyeS5oJywKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViQ29udGV4dE1lbnVEYXRhLmggYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkNvbnRl
eHRNZW51RGF0YS5oCmluZGV4IDExZjIzYmEuLmI0YWNiMWMgMTAwNjQ0Ci0tLSBhL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViQ29udGV4dE1lbnVEYXRhLmgKKysrIGIvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJDb250ZXh0TWVudURhdGEuaApAQCAtMzEsOSArMzEsMTEgQEAKICNpZm5kZWYg
V2ViQ29udGV4dE1lbnVEYXRhX2gKICNkZWZpbmUgV2ViQ29udGV4dE1lbnVEYXRhX2gKIAorI2lu
Y2x1ZGUgIldlYk1lbnVJdGVtSW5mby5oIgogI2luY2x1ZGUgIldlYlBvaW50LmgiCiAjaW5jbHVk
ZSAiV2ViU3RyaW5nLmgiCiAjaW5jbHVkZSAiV2ViVVJMLmgiCisjaW5jbHVkZSAiV2ViVmVjdG9y
LmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCkBAIC0xMTEsNiArMTEzLDkgQEAgc3RydWN0IFdl
YkNvbnRleHRNZW51RGF0YSB7CiAKICAgICAvLyBTZWN1cml0eSBpbmZvcm1hdGlvbiBmb3IgdGhl
IGNvbnRleHQuCiAgICAgV2ViQ1N0cmluZyBzZWN1cml0eUluZm87CisKKyAgICAvLyBDdXN0b20g
Y29udGV4dCBtZW51IGl0ZW1zIHByb3ZpZGVkIGJ5IHRoZSBXZWJDb3JlIGludGVybmFscy4KKyAg
ICBXZWJWZWN0b3I8V2ViTWVudUl0ZW1JbmZvPiBjdXN0b21JdGVtczsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJNZW51
SXRlbUluZm8uaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTWVudUl0ZW1JbmZvLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDUxM2U2NgotLS0gL2Rldi9udWxsCisr
KyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTWVudUl0ZW1JbmZvLmgKQEAgLTAsMCArMSw1
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoK
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgV2ViTWVudUl0ZW1JbmZvX2gKKyNkZWZpbmUgV2ViTWVudUl0ZW1JbmZvX2gK
KworI2luY2x1ZGUgIldlYkNvbW1vbi5oIgorI2luY2x1ZGUgIldlYlN0cmluZy5oIgorI2luY2x1
ZGUgIldlYlZlY3Rvci5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RydWN0IFdlYk1lbnVJ
dGVtSW5mbyB7CisgICAgZW51bSBUeXBlIHsKKyAgICAgICAgT3B0aW9uLAorICAgICAgICBDaGVj
a2FibGVPcHRpb24sCisgICAgICAgIEdyb3VwLAorICAgICAgICBTZXBhcmF0b3IsCisgICAgfTsK
KyAgICBXZWJTdHJpbmcgbGFiZWw7CisgICAgVHlwZSB0eXBlOworICAgIHVuc2lnbmVkIGFjdGlv
bjsKKyAgICBib29sIGVuYWJsZWQ7CisgICAgYm9vbCBjaGVja2VkOworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJQb3B1cE1lbnVJbmZvLmggYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlBvcHVwTWVu
dUluZm8uaAppbmRleCAxMDdjZmE5Li44NzY4NDJkIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYlBvcHVwTWVudUluZm8uaAorKysgYi9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYlBvcHVwTWVudUluZm8uaApAQCAtMzEsMjkgKzMxLDE4IEBACiAjaWZuZGVmIFdlYlBvcHVw
TWVudUluZm9faAogI2RlZmluZSBXZWJQb3B1cE1lbnVJbmZvX2gKIAotI2luY2x1ZGUgIldlYkNv
bW1vbi5oIgotI2luY2x1ZGUgIldlYlJlY3QuaCIKLSNpbmNsdWRlICJXZWJTdHJpbmcuaCIKKyNp
bmNsdWRlICJXZWJNZW51SXRlbUluZm8uaCIKICNpbmNsdWRlICJXZWJWZWN0b3IuaCIKIAogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKIC8vIERlc2NyaWJlcyB0aGUgY29udGVudHMgb2YgYSBwb3B1cCBt
ZW51Lgogc3RydWN0IFdlYlBvcHVwTWVudUluZm8gewotICAgIHN0cnVjdCBJdGVtIHsKLSAgICAg
ICAgZW51bSBUeXBlIHsKLSAgICAgICAgICAgIE9wdGlvbiwKLSAgICAgICAgICAgIEdyb3VwLAot
ICAgICAgICAgICAgU2VwYXJhdG9yLAotICAgICAgICB9OwotICAgICAgICBXZWJTdHJpbmcgbGFi
ZWw7Ci0gICAgICAgIFR5cGUgdHlwZTsKLSAgICAgICAgYm9vbCBlbmFibGVkOwotICAgIH07Ci0K
KyAgICAvLyBGSVhNRTogbWlncmF0ZSBjbGllbnRzIHRvIFdlYk1lbnVJdGVtSW5mbyBhbmQgcmVt
b3ZlIHRoaXMgdGVtcG9yYXJ5IEl0ZW0gdHlwZWRlZi4KKyAgICB0eXBlZGVmIFdlYk1lbnVJdGVt
SW5mbyBJdGVtOwogICAgIGludCBpdGVtSGVpZ2h0OwogICAgIGludCBzZWxlY3RlZEluZGV4Owot
ICAgIFdlYlZlY3RvcjxJdGVtPiBpdGVtczsKKyAgICBXZWJWZWN0b3I8V2ViTWVudUl0ZW1JbmZv
PiBpdGVtczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3LmggYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZp
ZXcuaAppbmRleCBkMjM5ZWYxLi5lZmI0MmRlIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYlZpZXcuaAorKysgYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXcuaApA
QCAtMjM1LDYgKzIzNSwxMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGhpZGVBdXRvZmls
bFBvcHVwKCkgPSAwOwogCiAKKyAgICAvLyBDb250ZXh0IG1lbnUgLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIHZpcnR1YWwgdm9p
ZCBleGVjdXRlQ3VzdG9tQ29udGV4dE1lbnVBY3Rpb24odW5zaWduZWQgYWN0aW9uKSA9IDA7CisK
KwogICAgIC8vIFZpc2l0ZWQgbGluayBzdGF0ZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAgICAgLy8gVGVsbHMgYWxsIFdlYlZpZXcgaW5zdGFu
Y2VzIHRvIHVwZGF0ZSB0aGUgdmlzaXRlZCBsaW5rIHN0YXRlIGZvciB0aGUKQEAgLTI0NSw2ICsy
NTAsNyBAQCBwdWJsaWM6CiAgICAgLy8gdGhlaXIgbGlua3MuCiAgICAgV0VCS0lUX0FQSSBzdGF0
aWMgdm9pZCByZXNldFZpc2l0ZWRMaW5rU3RhdGUoKTsKIAorCiAgICAgLy8gU2Nyb2xsYmFyIGNv
bG9ycyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CiAgICAgdmlydHVhbCB2b2lkIHNldFNjcm9sbGJhckNvbG9ycyh1bnNpZ25lZCBpbmFjdGl2ZUNv
bG9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgYWN0aXZl
Q29sb3IsCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL0NvbnRleHRNZW51Q2xpZW50
SW1wbC5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL0NvbnRleHRNZW51Q2xpZW50SW1wbC5jcHAK
aW5kZXggZjMyYzcyZi4uZjIzOTE5ZSAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9D
b250ZXh0TWVudUNsaWVudEltcGwuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvQ29udGV4
dE1lbnVDbGllbnRJbXBsLmNwcApAQCAtNTAsMTAgKzUwLDEyIEBACiAjaW5jbHVkZSAiV2ViQ29u
dGV4dE1lbnVEYXRhLmgiCiAjaW5jbHVkZSAiV2ViRGF0YVNvdXJjZUltcGwuaCIKICNpbmNsdWRl
ICJXZWJGcmFtZUltcGwuaCIKKyNpbmNsdWRlICJXZWJNZW51SXRlbUluZm8uaCIKICNpbmNsdWRl
ICJXZWJQb2ludC5oIgogI2luY2x1ZGUgIldlYlN0cmluZy5oIgogI2luY2x1ZGUgIldlYlVSTC5o
IgogI2luY2x1ZGUgIldlYlVSTFJlc3BvbnNlLmgiCisjaW5jbHVkZSAiV2ViVmVjdG9yLmgiCiAj
aW5jbHVkZSAiV2ViVmlld0NsaWVudC5oIgogI2luY2x1ZGUgIldlYlZpZXdJbXBsLmgiCiAKQEAg
LTIyOCw2ICsyMzAsOSBAQCBQbGF0Zm9ybU1lbnVEZXNjcmlwdGlvbiBDb250ZXh0TWVudUNsaWVu
dEltcGw6OmdldEN1c3RvbU1lbnVGcm9tRGVmYXVsdEl0ZW1zKAogICAgIC8vIFdlIGNhbiBhbHdh
eXMgc2VsZWN0IGFsbC4uLgogICAgIGRhdGEuZWRpdEZsYWdzIHw9IFdlYkNvbnRleHRNZW51RGF0
YTo6Q2FuU2VsZWN0QWxsOwogCisgICAgLy8gRmlsdGVyIG91dCBjdXN0b20gbWVudSBlbGVtZW50
cyBhbmQgYWRkIHRoZW0gaW50byB0aGUgZGF0YS4KKyAgICBwb3B1bGF0ZUN1c3RvbU1lbnVJdGVt
cyhkZWZhdWx0TWVudSwgJmRhdGEpOworCiAgICAgV2ViRnJhbWUqIHNlbGVjdGVkX3dlYl9mcmFt
ZSA9IFdlYkZyYW1lSW1wbDo6ZnJvbUZyYW1lKHNlbGVjdGVkRnJhbWUpOwogICAgIGlmIChtX3dl
YlZpZXctPmNsaWVudCgpKQogICAgICAgICBtX3dlYlZpZXctPmNsaWVudCgpLT5zaG93Q29udGV4
dE1lbnUoc2VsZWN0ZWRfd2ViX2ZyYW1lLCBkYXRhKTsKQEAgLTIzNSw0ICsyNDAsNDAgQEAgUGxh
dGZvcm1NZW51RGVzY3JpcHRpb24gQ29udGV4dE1lbnVDbGllbnRJbXBsOjpnZXRDdXN0b21NZW51
RnJvbURlZmF1bHRJdGVtcygKICAgICByZXR1cm4gMDsKIH0KIAordm9pZCBDb250ZXh0TWVudUNs
aWVudEltcGw6OnBvcHVsYXRlQ3VzdG9tTWVudUl0ZW1zKFdlYkNvcmU6OkNvbnRleHRNZW51KiBk
ZWZhdWx0TWVudSwgV2ViQ29udGV4dE1lbnVEYXRhKiBkYXRhKQoreworICAgIFZlY3RvcjxXZWJN
ZW51SXRlbUluZm8+IGN1c3RvbUl0ZW1zOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZGVm
YXVsdE1lbnUtPml0ZW1Db3VudCgpOyArK2kpIHsKKyAgICAgICAgQ29udGV4dE1lbnVJdGVtKiBp
bnB1dEl0ZW0gPSBkZWZhdWx0TWVudS0+aXRlbUF0SW5kZXgoaSwgZGVmYXVsdE1lbnUtPnBsYXRm
b3JtRGVzY3JpcHRpb24oKSk7CisgICAgICAgIGlmIChpbnB1dEl0ZW0tPmFjdGlvbigpIDwgQ29u
dGV4dE1lbnVJdGVtQmFzZUN1c3RvbVRhZyB8fCBpbnB1dEl0ZW0tPmFjdGlvbigpID49ICBDb250
ZXh0TWVudUl0ZW1CYXNlQXBwbGljYXRpb25UYWcpCisgICAgICAgICAgICBjb250aW51ZTsKKwor
ICAgICAgICBXZWJNZW51SXRlbUluZm8gb3V0cHV0SXRlbTsKKyAgICAgICAgb3V0cHV0SXRlbS5s
YWJlbCA9IGlucHV0SXRlbS0+dGl0bGUoKTsKKyAgICAgICAgb3V0cHV0SXRlbS5lbmFibGVkID0g
aW5wdXRJdGVtLT5lbmFibGVkKCk7CisgICAgICAgIG91dHB1dEl0ZW0uY2hlY2tlZCA9IGlucHV0
SXRlbS0+Y2hlY2tlZCgpOworICAgICAgICBvdXRwdXRJdGVtLmFjdGlvbiA9IHN0YXRpY19jYXN0
PHVuc2lnbmVkPihpbnB1dEl0ZW0tPmFjdGlvbigpIC0gQ29udGV4dE1lbnVJdGVtQmFzZUN1c3Rv
bVRhZyk7CisgICAgICAgIHN3aXRjaCAoaW5wdXRJdGVtLT50eXBlKCkpIHsKKyAgICAgICAgY2Fz
ZSBBY3Rpb25UeXBlOgorICAgICAgICAgICAgb3V0cHV0SXRlbS50eXBlID0gV2ViTWVudUl0ZW1J
bmZvOjpPcHRpb247CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDaGVja2FibGVB
Y3Rpb25UeXBlOgorICAgICAgICAgICAgb3V0cHV0SXRlbS50eXBlID0gV2ViTWVudUl0ZW1JbmZv
OjpDaGVja2FibGVPcHRpb247CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTZXBh
cmF0b3JUeXBlOgorICAgICAgICAgICAgb3V0cHV0SXRlbS50eXBlID0gV2ViTWVudUl0ZW1JbmZv
OjpTZXBhcmF0b3I7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTdWJtZW51VHlw
ZToKKyAgICAgICAgICAgIG91dHB1dEl0ZW0udHlwZSA9IFdlYk1lbnVJdGVtSW5mbzo6R3JvdXA7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjdXN0b21JdGVtcy5hcHBl
bmQob3V0cHV0SXRlbSk7CisgICAgfQorCisgICAgV2ViVmVjdG9yPFdlYk1lbnVJdGVtSW5mbz4g
b3V0cHV0SXRlbXMoY3VzdG9tSXRlbXMuc2l6ZSgpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGN1c3RvbUl0ZW1zLnNpemUoKTsgKytpKQorICAgICAgICBvdXRwdXRJdGVtc1tpXSA9IGN1
c3RvbUl0ZW1zW2ldOworICAgIGRhdGEtPmN1c3RvbUl0ZW1zLnN3YXAob3V0cHV0SXRlbXMpOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9z
cmMvQ29udGV4dE1lbnVDbGllbnRJbXBsLmggYi9XZWJLaXQvY2hyb21pdW0vc3JjL0NvbnRleHRN
ZW51Q2xpZW50SW1wbC5oCmluZGV4IDhiNWJhYjYuLmE0OTlkOGIgMTAwNjQ0Ci0tLSBhL1dlYktp
dC9jaHJvbWl1bS9zcmMvQ29udGV4dE1lbnVDbGllbnRJbXBsLmgKKysrIGIvV2ViS2l0L2Nocm9t
aXVtL3NyYy9Db250ZXh0TWVudUNsaWVudEltcGwuaApAQCAtMzUsNiArMzUsNyBAQAogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAorY2xhc3MgV2ViQ29udGV4dE1lbnVEYXRhOwogY2xhc3MgV2ViVmll
d0ltcGw7CiAKIGNsYXNzIENvbnRleHRNZW51Q2xpZW50SW1wbCA6IHB1YmxpYyAgV2ViQ29yZTo6
Q29udGV4dE1lbnVDbGllbnQgewpAQCAtNTMsNiArNTQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIHNwZWFrKGNvbnN0IFdlYkNvcmU6OlN0cmluZyYpIHt9CiAgICAgdmlydHVhbCB2b2lk
IHN0b3BTcGVha2luZygpIHt9CiBwcml2YXRlOgorICAgIHZvaWQgcG9wdWxhdGVDdXN0b21NZW51
SXRlbXMoV2ViQ29yZTo6Q29udGV4dE1lbnUqLCBXZWJDb250ZXh0TWVudURhdGEqKTsKICAgICBX
ZWJWaWV3SW1wbCogbV93ZWJWaWV3OwogfTsKIApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNw
cAppbmRleCAxNjEyYjZhLi5lMDk0MWZmIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlZpZXdJbXBsLmNwcAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNw
cApAQCAtMzMsNiArMzMsOSBAQAogCiAjaW5jbHVkZSAiQXV0b2NvbXBsZXRlUG9wdXBNZW51Q2xp
ZW50LmgiCiAjaW5jbHVkZSAiQVhPYmplY3RDYWNoZS5oIgorI2luY2x1ZGUgIkNvbnRleHRNZW51
LmgiCisjaW5jbHVkZSAiQ29udGV4dE1lbnVDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiQ29udGV4
dE1lbnVJdGVtLmgiCiAjaW5jbHVkZSAiQ1NTU3R5bGVTZWxlY3Rvci5oIgogI2luY2x1ZGUgIkNT
U1ZhbHVlS2V5d29yZHMuaCIKICNpbmNsdWRlICJDdXJzb3IuaCIKQEAgLTE1ODYsNiArMTU4OSwx
OSBAQCB2b2lkIFdlYlZpZXdJbXBsOjpoaWRlQXV0b2ZpbGxQb3B1cCgpCiAgICAgaGlkZUF1dG9D
b21wbGV0ZVBvcHVwKCk7CiB9CiAKK3ZvaWQgV2ViVmlld0ltcGw6OmV4ZWN1dGVDdXN0b21Db250
ZXh0TWVudUFjdGlvbih1bnNpZ25lZCBhY3Rpb24pCit7CisgICAgaWYgKCFtX3BhZ2UpCisgICAg
ICAgIHJldHVybjsKKyAgICBDb250ZXh0TWVudSogbWVudSA9IG1fcGFnZS0+Y29udGV4dE1lbnVD
b250cm9sbGVyKCktPmNvbnRleHRNZW51KCk7CisgICAgaWYgKCFtZW51KQorICAgICAgICByZXR1
cm47CisgICAgQ29udGV4dE1lbnVJdGVtKiBpdGVtID0gbWVudS0+aXRlbVdpdGhBY3Rpb24oc3Rh
dGljX2Nhc3Q8Q29udGV4dE1lbnVBY3Rpb24+KENvbnRleHRNZW51SXRlbUJhc2VDdXN0b21UYWcg
KyBhY3Rpb24pKTsKKyAgICBpZiAoaXRlbSkKKyAgICAgICAgbV9wYWdlLT5jb250ZXh0TWVudUNv
bnRyb2xsZXIoKS0+Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoaXRlbSk7CisgICAgbV9wYWdlLT5j
b250ZXh0TWVudUNvbnRyb2xsZXIoKS0+Y2xlYXJDb250ZXh0TWVudSgpOworfQorCiAvLyBXZWJW
aWV3IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCiAKIGJvb2wgV2ViVmlld0ltcGw6OnNldERyb3BFZmZlY3QoYm9vbCBh
Y2NlcHQpCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmggYi9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKaW5kZXggM2JlYzUwZC4uMjI1YmJkNCAx
MDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCisrKyBiL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaApAQCAtMTU3LDYgKzE1Nyw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0U2Nyb2xsYmFyQ29sb3JzKHVuc2lnbmVkIGluYWN0aXZlQ29s
b3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBhY3RpdmVD
b2xvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHRyYWNr
Q29sb3IpOworICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlQ3VzdG9tQ29udGV4dE1lbnVBY3Rpb24o
dW5zaWduZWQgYWN0aW9uKTsKIAogICAgIC8vIFdlYlZpZXdJbXBsCiAK
</data>
<flag name="review"
          id="26355"
          type_id="1"
          status="+"
          setter="fishd"
    />
    <flag name="commit-queue"
          id="26356"
          type_id="3"
          status="-"
          setter="pfeldman"
    />
          </attachment>
      

    </bug>

</bugzilla>