<?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>105710</bug_id>
          
          <creation_ts>2012-12-23 23:24:43 -0800</creation_ts>
          <short_desc>PDFPlugin: Find in page</short_desc>
          <delta_ts>2012-12-25 12:15:10 -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>PDF</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tim Horton">thorton</reporter>
          <assigned_to name="Tim Horton">thorton</assigned_to>
          <cc>ap</cc>
    
    <cc>mitz</cc>
    
    <cc>sam</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>796893</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-12-23 23:24:43 -0800</bug_when>
    <thetext>We need to hook up find-in-page to PDFPlugin!

&lt;rdar://problem/12555331&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796896</commentid>
    <comment_count>1</comment_count>
      <attachid>180651</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-12-23 23:41:41 -0800</bug_when>
    <thetext>Created attachment 180651
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796898</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-23 23:44:39 -0800</bug_when>
    <thetext>Attachment 180651 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit...&quot; exit_code: 1
Source/WebKit2/WebProcess/Plugins/PDF/PDFPlugin.h:102:  The parameter name &quot;options&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebKit2/WebProcess/Plugins/PDF/PDFPlugin.h:102:  Omit int when using unsigned  [runtime/unsigned] [1]
Source/WebKit2/WebProcess/Plugins/PDF/PDFPlugin.h:103:  The parameter name &quot;options&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebKit2/WebProcess/Plugins/PluginView.h:97:  The parameter name &quot;options&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebKit2/WebProcess/Plugins/PluginView.h:97:  Omit int when using unsigned  [runtime/unsigned] [1]
Source/WebKit2/WebProcess/Plugins/PluginView.h:98:  The parameter name &quot;options&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebKit2/WebProcess/Plugins/Plugin.h:258:  The parameter name &quot;options&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebKit2/WebProcess/Plugins/Plugin.h:258:  Omit int when using unsigned  [runtime/unsigned] [1]
Source/WebKit2/WebProcess/Plugins/Plugin.h:260:  The parameter name &quot;options&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebKit2/WebProcess/Plugins/Netscape/NetscapePlugin.cpp:962:  Omit int when using unsigned  [runtime/unsigned] [1]
Source/WebKit2/WebProcess/Plugins/Netscape/NetscapePlugin.h:217:  Omit int when using unsigned  [runtime/unsigned] [1]
Source/WebKit2/WebProcess/Plugins/PluginProxy.h:131:  Omit int when using unsigned  [runtime/unsigned] [1]
Source/WebKit2/WebProcess/Plugins/PDF/SimplePDFPlugin.h:177:  Omit int when using unsigned  [runtime/unsigned] [1]
Source/WebKit2/WebProcess/Plugins/PluginView.cpp:739:  Omit int when using unsigned  [runtime/unsigned] [1]
Total errors found: 14 in 12 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796900</commentid>
    <comment_count>3</comment_count>
      <attachid>180652</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-12-24 00:03:51 -0800</bug_when>
    <thetext>Created attachment 180652
style</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796907</commentid>
    <comment_count>4</comment_count>
      <attachid>180652</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-12-24 00:30:59 -0800</bug_when>
    <thetext>Comment on attachment 180652
style

View in context: https://bugs.webkit.org/attachment.cgi?id=180652&amp;action=review

&gt; Source/WebKit2/WebProcess/Plugins/Netscape/NetscapePlugin.h:218
&gt; +    virtual unsigned countFindMatches(const String&amp;, WebCore::FindOptions, unsigned);
&gt; +    virtual bool findString(const String&amp;, WebCore::FindOptions, unsigned);

OVERRIDE

Also, the &quot;unsigned&quot; arguments could use a name.

&gt; Source/WebKit2/WebProcess/Plugins/PDF/PDFPlugin.h:103
&gt; +    virtual unsigned countFindMatches(const String&amp; target, WebCore::FindOptions, unsigned) OVERRIDE;
&gt; +    virtual bool findString(const String&amp; target, WebCore::FindOptions, unsigned) OVERRIDE;

The unsigned arguments could use a name.

&gt; Source/WebKit2/WebProcess/Plugins/PDF/PDFPlugin.mm:851
&gt; +unsigned PDFPlugin::countFindMatches(const String&amp; target, WebCore::FindOptions options, unsigned limit)

There is a &quot;using namespace WebCore&quot; in this file. Is this prefix necessary to disambiguate?

&gt; Source/WebKit2/WebProcess/Plugins/PDF/PDFPlugin.mm:856
&gt; +    int nsOptions = options &amp; FindOptionsCaseInsensitive ? NSCaseInsensitiveSearch : 0;

Braces around the condition would make this more readable.

&gt; Source/WebKit2/WebProcess/Plugins/PDF/PDFPlugin.mm:903
&gt; +bool PDFPlugin::findString(const String&amp; target, WebCore::FindOptions options, unsigned maxMatchCount)

There is a &quot;using namespace WebCore&quot; in this file. Is this prefix necessary to disambiguate?

&gt; Source/WebKit2/WebProcess/Plugins/PDF/PDFPlugin.mm:919
&gt; +    if (target == emptyString()) {

target.isEmpty()?

Should this case reset m_lastFoundString?

&gt; Source/WebKit2/WebProcess/Plugins/Plugin.h:260
&gt; +    virtual unsigned countFindMatches(const String&amp; target, WebCore::FindOptions, unsigned) = 0;
&gt; +
&gt; +    virtual bool findString(const String&amp; target, WebCore::FindOptions, unsigned) = 0;

The unsigned argument could use a name (and I&apos;m not sure if &quot;limit&quot; is descriptive).

&gt; Source/WebKit2/WebProcess/Plugins/PluginView.h:98
&gt; +    virtual unsigned countFindMatches(const String&amp; target, WebCore::FindOptions, unsigned);
&gt; +    virtual bool findString(const String&amp; target, WebCore::FindOptions, unsigned);

These functions don&apos;t seem to be overrides, or ever overridden. Should they actually be virtual?

&gt; Source/WebKit2/WebProcess/WebPage/FindController.cpp:76
&gt; +    PluginView* pluginView = static_cast&lt;PluginView*&gt;(pluginDocument-&gt;pluginWidget());

Why is this typecast safe?

&gt; Source/WebKit2/WebProcess/WebPage/FindController.cpp:188
&gt; +    bool found = false;

Is this initialization necessary to shut up a particular dumb compiler? It doesn&apos;t help readability.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796912</commentid>
    <comment_count>5</comment_count>
      <attachid>180652</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-12-24 00:36:29 -0800</bug_when>
    <thetext>Comment on attachment 180652
style

Attachment 180652 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/15492396

New failing tests:
svg/as-image/img-relative-height.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>797125</commentid>
    <comment_count>6</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-12-25 02:53:28 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 180652 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=180652&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/Plugins/PDF/PDFPlugin.mm:851
&gt; &gt; +unsigned PDFPlugin::countFindMatches(const String&amp; target, WebCore::FindOptions options, unsigned limit)
&gt; 
&gt; There is a &quot;using namespace WebCore&quot; in this file. Is this prefix necessary to disambiguate?

I believe it is. I&apos;m also slightly concerned about the fact that we have WebKit::FindOptions and WebCore::FindOptions with overlapping unrelated values:

In WebCore:

enum FindOptionFlag {
    CaseInsensitive = 1 &lt;&lt; 0,
    AtWordStarts = 1 &lt;&lt; 1,
    // When combined with AtWordStarts, accepts a match in the middle of a word if the match begins with
    // an uppercase letter followed by a lowercase or non-letter. Accepts several other intra-word matches.
    TreatMedialCapitalAsWordStart = 1 &lt;&lt; 2,
    Backwards = 1 &lt;&lt; 3,
    WrapAround = 1 &lt;&lt; 4,
    StartInSelection = 1 &lt;&lt; 5
};

typedef unsigned FindOptions;

In WebKit2:

enum FindOptions {
    FindOptionsCaseInsensitive = 1 &lt;&lt; 0,
    FindOptionsAtWordStarts = 1 &lt;&lt; 1,
    FindOptionsTreatMedialCapitalAsWordStart = 1 &lt;&lt; 2,
    FindOptionsBackwards = 1 &lt;&lt; 3,
    FindOptionsWrapAround = 1 &lt;&lt; 4,
    FindOptionsShowOverlay = 1 &lt;&lt; 5,
    FindOptionsShowFindIndicator = 1 &lt;&lt; 6,
    FindOptionsShowHighlight = 1 &lt;&lt; 7
};

(Note that StartInSelection and ShowOverlay have the same value. A bit scary/unfortunate, probably not problematic.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>797126</commentid>
    <comment_count>7</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-12-25 03:09:38 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/138461</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>797167</commentid>
    <comment_count>8</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-12-25 11:04:49 -0800</bug_when>
    <thetext>&gt; I believe it is. I&apos;m also slightly concerned about the fact that we have WebKit::FindOptions and WebCore::FindOptions with overlapping unrelated values:

I think that that renaming one of these would be a better solution than relying on namespaces.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>797173</commentid>
    <comment_count>9</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-12-25 12:15:10 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; &gt; I believe it is. I&apos;m also slightly concerned about the fact that we have WebKit::FindOptions and WebCore::FindOptions with overlapping unrelated values:
&gt; 
&gt; I think that that renaming one of these would be a better solution than relying on namespaces.

I filed https://bugs.webkit.org/show_bug.cgi?id=105745 about that.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>180651</attachid>
            <date>2012-12-23 23:41:41 -0800</date>
            <delta_ts>2012-12-24 00:03:51 -0800</delta_ts>
            <desc>patch</desc>
            <filename>findinpage.diff</filename>
            <type>text/plain</type>
            <size>20947</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAxOTgyYjYwLi4wYjIyMmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDQg
QEAKKzIwMTItMTItMjMgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgUERGUGx1Z2luOiBGaW5kLWluLXBhZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNTcxMAorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
MTI1NTUzMzE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgTWFrZSB1c2Ugb2YgUERGTGF5ZXJDb250cm9sbGVyJ3MgZmluZC1pbi1wYWdlIGZ1bmN0aW9u
YWxpdHkgdG8gbWltaWMgV2ViS2l0J3MuCisgICAgICAgIEFkZCB0d28gUGx1Z2luIG1ldGhvZHMs
IGNvdW50RmluZE1hdGNoZXMgYW5kIGZpbmRTdHJpbmcsIGFuZCBtYWtlIHVzZSBvZiB0aGVtCisg
ICAgICAgIGlmIGF0dGVtcHRpbmcgdG8gZmluZC1pbi1wYWdlIHdpdGhpbiBhIFBsdWdpbkRvY3Vt
ZW50LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1
Z2luLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OmNvdW50RmluZE1hdGNo
ZXMpOiBBZGRlZC4gV2UgZG9uJ3Qgc3VwcG9ydCBmaW5kLWluLXBhZ2UgZm9yIE5ldHNjYXBlUGx1
Z2luLgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbjo6ZmluZFN0cmluZyk6IEFkZGVk
LiBXZSBkb24ndCBzdXBwb3J0IGZpbmQtaW4tcGFnZSBmb3IgTmV0c2NhcGVQbHVnaW4uCisgICAg
ICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmg6IEFkZCBj
b3VudEZpbmRNYXRjaGVzIGFuZCBmaW5kU3RyaW5nLgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1
Z2lucy9QREYvUERGTGF5ZXJDb250cm9sbGVyRGV0YWlscy5oOiBBZGQgcmVxdWlzaXRlIFBERkxh
eWVyQ29udHJvbGxlciBpbnRlcmZhY2VzLgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9Q
REYvUERGUGx1Z2luLmg6IEFkZCBjb3VudEZpbmRNYXRjaGVzLCBmaW5kU3RyaW5nLCBhbmQgbmV4
dE1hdGNoRm9yU3RyaW5nLAorICAgICAgICBhcyB3ZWxsIGFzICBzdG9yYWdlIGZvciB0aGUgbW9z
dC1yZWNlbnRseS1zZWFyY2hlZCBzdHJpbmcuCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5z
L1BERi9QREZQbHVnaW4ubW06CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6d3JpdGVJdGVt
c1RvUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6Y291bnRGaW5kTWF0
Y2hlcyk6CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6bmV4dE1hdGNoRm9yU3RyaW5nKToK
KyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpmaW5kU3RyaW5nKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1BsdWdpbnMvUERGL1NpbXBsZVBERlBsdWdpbi5oOiBBZGQgY291bnRGaW5kTWF0Y2hl
cyBhbmQgZmluZFN0cmluZy4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmg6
IEFkZCBjb3VudEZpbmRNYXRjaGVzIGFuZCBmaW5kU3RyaW5nLgorICAgICAgICAqIFdlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oOiBBZGQgY291bnRGaW5kTWF0Y2hlcyBhbmQgZmluZFN0
cmluZywgYnV0IHNpbmNlIFBERlBsdWdpbgorICAgICAgICBpcyBpbi1wcm9jZXNzLCB3ZSBkb24n
dCBuZWVkIHRvIGZvcndhcmQgdGhlc2UgY2FsbHMgdG8gdGhlIFBsdWdpblByb2Nlc3MuCisgICAg
ICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwOiAKKyAgICAgICAgKFdlYktp
dDo6UGx1Z2luVmlldzo6Y291bnRGaW5kTWF0Y2hlcyk6IEZvcndhcmQgY291bnRGaW5kTWF0Y2hl
cyB0byB0aGUgcGx1Z2luLgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjpmaW5kU3RyaW5n
KTogRm9yd2FyZCBmaW5kU3RyaW5nIHRvIHRoZSBwbHVnaW4uCisgICAgICAgICogV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblZpZXcuaDogQWRkIGNvdW50RmluZE1hdGNoZXMgYW5kIGZpbmRTdHJp
bmcuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6cGx1Z2luVmlld0ZvckZyYW1lKTogSWYgdGhlIGdpdmVuIGZyYW1lIGhv
c3RzIGEgUGx1Z2luRG9jdW1lbnQsIGdyYWIgaXRzIFBsdWdpblZpZXcuCisgICAgICAgIChXZWJL
aXQ6OkZpbmRDb250cm9sbGVyOjpjb3VudFN0cmluZ01hdGNoZXMpOiBGb3J3YXJkIGNvdW50U3Ry
aW5nTWF0Y2hlcyB0byBQbHVnaW5WaWV3IGlmIG5lY2Vzc2FyeS4KKyAgICAgICAgKFdlYktpdDo6
RmluZENvbnRyb2xsZXI6OnVwZGF0ZUZpbmRVSUFmdGVyUGFnZVNjcm9sbCk6IE9ubHkgdXNlIHVu
bWFya0FsbFRleHRNYXRjaGVzIGlmIHdlJ3JlIHVzaW5nCisgICAgICAgIG9yZGluYXJ5IGZpbmQt
aW4tcGFnZSBhbmQgZG9uJ3QgaGF2ZSBhIHBsdWdpbi4gSWYgd2UgaGF2ZSBhIHBsdWdpbiwgZGlz
YWJsZSBvdXIgb3ZlcmxheSwgYXMgaXQgbXVzdAorICAgICAgICBiZSBoYW5kbGVkIGJ5IHRoZSBw
bHVnaW4gaXRzZWxmLCBhbmQgcmVxdWVzdCB0aGUgbnVtYmVyIG9mIG1hdGNoZXMgZm9yIHRoZSBz
ZWFyY2ggZnJvbSB0aGUgcGx1Z2luLgorICAgICAgICAoV2ViS2l0OjpGaW5kQ29udHJvbGxlcjo6
ZmluZFN0cmluZyk6IElmIG5lY2Vzc2FyeSwgZm9yd2FyZCBmaW5kU3RyaW5nIHRvIHRoZSBwbHVn
aW4uCisgICAgICAgIChXZWJLaXQ6OkZpbmRDb250cm9sbGVyOjpoaWRlRmluZFVJKTogSGlkZSB0
aGUgc2VhcmNoIGhpZ2hsaWdodCBieSBzZWFyY2hpbmcgZm9yIGFuIGVtcHR5IHN0cmluZy4KKwog
MjAxMi0xMi0yMyAgU2Vva2p1IEt3b24gIDxzZW9ranUua3dvbkBnbWFpbC5jb20+CiAKICAgICAg
ICAgRml4IHRoZSBpbmNvcnJlY3QgdXNlIG9mIHByZXByb2Nlc3NvciBzdGF0ZW1lbnQgaW4gQVBJ
IGhlYWRlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05l
dHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1
Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAKaW5kZXggMDg4OTQ5YS4uNWNlMDY4MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05l
dHNjYXBlUGx1Z2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMv
TmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwCkBAIC05NTgsNiArOTU4LDE2IEBAIE5QT2JqZWN0
KiBOZXRzY2FwZVBsdWdpbjo6cGx1Z2luU2NyaXB0YWJsZU5QT2JqZWN0KCkKIAogICAgIHJldHVy
biBzY3JpcHRhYmxlTlBPYmplY3Q7CiB9CisgICAgCit1bnNpZ25lZCBpbnQgTmV0c2NhcGVQbHVn
aW46OmNvdW50RmluZE1hdGNoZXMoY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6RmluZE9wdGlvbnMs
IHVuc2lnbmVkKQoreworICAgIHJldHVybiAwOworfQorCitib29sIE5ldHNjYXBlUGx1Z2luOjpm
aW5kU3RyaW5nKGNvbnN0IFN0cmluZyYsIFdlYkNvcmU6OkZpbmRPcHRpb25zLCB1bnNpZ25lZCkK
K3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CiAKIHZvaWQgTmV0c2NhcGVQbHVnaW46OmNvbnRlbnRz
U2NhbGVGYWN0b3JDaGFuZ2VkKGZsb2F0IHNjYWxlRmFjdG9yKQogewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVn
aW4uaAppbmRleCA1MWE5YWFkLi4zMzQ5ZjdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaApAQCAt
MjEzLDYgKzIxMyw5IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGhhbmRsZXNQYWdlU2Nh
bGVGYWN0b3IoKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgTlBPYmplY3QqIHBsdWdpblNjcmlw
dGFibGVOUE9iamVjdCgpOworICAgIAorICAgIHZpcnR1YWwgdW5zaWduZWQgaW50IGNvdW50Rmlu
ZE1hdGNoZXMoY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6RmluZE9wdGlvbnMsIHVuc2lnbmVkKTsK
KyAgICB2aXJ0dWFsIGJvb2wgZmluZFN0cmluZyhjb25zdCBTdHJpbmcmLCBXZWJDb3JlOjpGaW5k
T3B0aW9ucywgdW5zaWduZWQpOwogCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIHZpcnR1YWwgdm9p
ZCB3aW5kb3dGb2N1c0NoYW5nZWQoYm9vbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERkxheWVyQ29udHJvbGxlckRldGFpbHMuaCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGTGF5ZXJDb250cm9sbGVyRGV0YWls
cy5oCmluZGV4IGYzODdkZWQuLjhjYjhkMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9QREYvUERGTGF5ZXJDb250cm9sbGVyRGV0YWlscy5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGTGF5ZXJDb250cm9sbGVyRGV0
YWlscy5oCkBAIC04Myw3ICs4MywxMiBAQAogCiAtIChOU0FycmF5ICopZmluZFN0cmluZzooTlNT
dHJpbmcgKilzdHJpbmcgY2FzZVNlbnNpdGl2ZTooQk9PTClpc0Nhc2VTZW5zaXRpdmUgaGlnaGxp
Z2h0TWF0Y2hlczooQk9PTClzaG91bGRIaWdobGlnaHRNYXRjaGVzOwogCi0tIChpZCljdXJyZW50
U2VsZWN0aW9uOworLSAoUERGU2VsZWN0aW9uICopY3VycmVudFNlbGVjdGlvbjsKKy0gKHZvaWQp
c2V0Q3VycmVudFNlbGVjdGlvbjooUERGU2VsZWN0aW9uICopc2VsZWN0aW9uOworLSAoUERGU2Vs
ZWN0aW9uICopc2VhcmNoU2VsZWN0aW9uOworLSAodm9pZClzZXRTZWFyY2hTZWxlY3Rpb246KFBE
RlNlbGVjdGlvbiAqKXNlbGVjdGlvbjsKKy0gKHZvaWQpZ290b1NlbGVjdGlvbjooUERGU2VsZWN0
aW9uICopc2VsZWN0aW9uOworCiAtICh2b2lkKWNvcHlTZWxlY3Rpb247CiAtICh2b2lkKXNlbGVj
dEFsbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BE
Ri9QREZQbHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERG
UGx1Z2luLmgKaW5kZXggNjFmYWQxZS4uMWQ2OTc0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oCkBAIC0zMiw2ICszMiw3IEBACiAj
aW5jbHVkZSAiU2ltcGxlUERGUGx1Z2luLmgiCiAjaW5jbHVkZSAiV2ViRXZlbnQuaCIKICNpbmNs
dWRlIDxXZWJDb3JlL0FmZmluZVRyYW5zZm9ybS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRmluZE9w
dGlvbnMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Njcm9sbGFibGVBcmVhLmg+CiAjaW5jbHVkZSA8
d3RmL1JldGFpblB0ci5oPgogCkBAIC00MSw2ICs0Miw3IEBAIHR5cGVkZWYgY29uc3Qgc3RydWN0
IE9wYXF1ZUpTVmFsdWUqIEpTVmFsdWVSZWY7CiAKIE9CSkNfQ0xBU1MgUERGQW5ub3RhdGlvbjsK
IE9CSkNfQ0xBU1MgUERGTGF5ZXJDb250cm9sbGVyOworT0JKQ19DTEFTUyBQREZTZWxlY3Rpb247
CiBPQkpDX0NMQVNTIFdLUERGTGF5ZXJDb250cm9sbGVyRGVsZWdhdGU7CiAKIG5hbWVzcGFjZSBD
b3JlSVBDIHsKQEAgLTk3LDYgKzk5LDExIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGlz
RWRpdGluZ0NvbW1hbmRFbmFibGVkKGNvbnN0IFN0cmluZyYpIE9WRVJSSURFOwogICAgIHZpcnR1
YWwgYm9vbCBoYW5kbGVzUGFnZVNjYWxlRmFjdG9yKCkgT1ZFUlJJREU7CiAKKyAgICB2aXJ0dWFs
IHVuc2lnbmVkIGludCBjb3VudEZpbmRNYXRjaGVzKGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBXZWJD
b3JlOjpGaW5kT3B0aW9ucyBvcHRpb25zLCB1bnNpZ25lZCBsaW1pdCkgT1ZFUlJJREU7CisgICAg
dmlydHVhbCBib29sIGZpbmRTdHJpbmcoY29uc3QgU3RyaW5nJiB0YXJnZXQsIFdlYkNvcmU6OkZp
bmRPcHRpb25zIG9wdGlvbnMsIHVuc2lnbmVkIG1heE1hdGNoQ291bnQpIE9WRVJSSURFOworCisg
ICAgUERGU2VsZWN0aW9uICpuZXh0TWF0Y2hGb3JTdHJpbmcoY29uc3QgU3RyaW5nJiB0YXJnZXQs
IEJPT0wgc2VhcmNoRm9yd2FyZCwgQk9PTCBjYXNlU2Vuc2l0aXZlLCBCT09MIHdyYXBTZWFyY2gs
IFBERlNlbGVjdGlvbiAqaW5pdGlhbFNlbGVjdGlvbiwgQk9PTCBzdGFydEluU2VsZWN0aW9uKTsK
KwogICAgIC8vIFNjcm9sbGFibGVBcmVhIGZ1bmN0aW9ucy4KICAgICB2aXJ0dWFsIHZvaWQgc2V0
U2Nyb2xsT2Zmc2V0KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JikgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCB2b2lkIGludmFsaWRhdGVTY3JvbGxiYXJSZWN0KFdlYkNvcmU6OlNjcm9sbGJhciosIGNv
bnN0IFdlYkNvcmU6OkludFJlY3QmKSBPVkVSUklERTsKQEAgLTEyOSw2ICsxMzYsOCBAQCBwcml2
YXRlOgogICAgIFdlYkNvcmU6OkludFBvaW50IG1fbGFzdE1vdXNlUG9zaXRpb25JblBsdWdpbkNv
b3JkaW5hdGVzOwogCiAgICAgU3RyaW5nIG1fdGVtcG9yYXJ5UERGVVVJRDsKKworICAgIFN0cmlu
ZyBtX2xhc3RGb3VuZFN0cmluZzsKICAgICAKICAgICBSZXRhaW5QdHI8V0tQREZMYXllckNvbnRy
b2xsZXJEZWxlZ2F0ZT4gbV9wZGZMYXllckNvbnRyb2xsZXJEZWxlZ2F0ZTsKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbSBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCmluZGV4
IDcyMTY1YmQuLjdjMzU0ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCkBAIC04MjgsNyArODI4LDYgQEAgdm9pZCBQREZQbHVn
aW46OndyaXRlSXRlbXNUb1Bhc3RlYm9hcmQoTlNBcnJheSAqaXRlbXMsIE5TQXJyYXkgKnR5cGVz
KQogICAgICAgICAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuY29ubmVjdGlvbigpLT5zZW5kKE1l
c3NhZ2VzOjpXZWJDb250ZXh0OjpTZXRQYXN0ZWJvYXJkQnVmZmVyRm9yVHlwZShOU0dlbmVyYWxQ
Ym9hcmQsIHR5cGUsIGhhbmRsZSwgYnVmZmVyLT5zaXplKCkpLCAwKTsKICAgICAgICAgfQogICAg
IH0KLQogfQogCiBJbnRQb2ludCBQREZQbHVnaW46OmNvbnZlcnRGcm9tUERGVmlld1RvUm9vdFZp
ZXcoY29uc3QgSW50UG9pbnQmIHBvaW50KSBjb25zdApAQCAtODQ5LDYgKzg0OCw5NiBAQCB2b2lk
IFBERlBsdWdpbjo6c2hvd0RlZmluaXRpb25Gb3JBdHRyaWJ1dGVkU3RyaW5nKE5TQXR0cmlidXRl
ZFN0cmluZyAqc3RyaW5nLCBDRwogICAgIHdlYkZyYW1lKCktPnBhZ2UoKS0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpEaWRQZXJmb3JtRGljdGlvbmFyeUxvb2t1cChhdHRyaWJ1dGVkU3Ry
aW5nLCBkaWN0aW9uYXJ5UG9wdXBJbmZvKSk7CiB9CiAKK3Vuc2lnbmVkIGludCBQREZQbHVnaW46
OmNvdW50RmluZE1hdGNoZXMoY29uc3QgU3RyaW5nJiB0YXJnZXQsIFdlYkNvcmU6OkZpbmRPcHRp
b25zIG9wdGlvbnMsIHVuc2lnbmVkIGxpbWl0KQoreworICAgIGlmICghdGFyZ2V0Lmxlbmd0aCgp
KQorICAgICAgICByZXR1cm4gMDsKKworICAgIGludCBuc09wdGlvbnMgPSBvcHRpb25zICYgRmlu
ZE9wdGlvbnNDYXNlSW5zZW5zaXRpdmUgPyBOU0Nhc2VJbnNlbnNpdGl2ZVNlYXJjaCA6IDA7CisK
KyAgICByZXR1cm4gW1twZGZEb2N1bWVudCgpLmdldCgpIGZpbmRTdHJpbmc6dGFyZ2V0IHdpdGhP
cHRpb25zOm5zT3B0aW9uc10gY291bnRdOworfQorCitQREZTZWxlY3Rpb24gKlBERlBsdWdpbjo6
bmV4dE1hdGNoRm9yU3RyaW5nKGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBCT09MIHNlYXJjaEZvcndh
cmQsIEJPT0wgY2FzZVNlbnNpdGl2ZSwgQk9PTCB3cmFwU2VhcmNoLCBQREZTZWxlY3Rpb24gKmlu
aXRpYWxTZWxlY3Rpb24sIEJPT0wgc3RhcnRJblNlbGVjdGlvbikKK3sKKyAgICBpZiAoIXRhcmdl
dC5sZW5ndGgoKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIE5TU3RyaW5nQ29tcGFyZU9w
dGlvbnMgb3B0aW9ucyA9IDA7CisgICAgaWYgKCFzZWFyY2hGb3J3YXJkKQorICAgICAgICBvcHRp
b25zIHw9IE5TQmFja3dhcmRzU2VhcmNoOworCisgICAgaWYgKCFjYXNlU2Vuc2l0aXZlKQorICAg
ICAgICBvcHRpb25zIHw9IE5TQ2FzZUluc2Vuc2l0aXZlU2VhcmNoOworCisgICAgUERGRG9jdW1l
bnQgKmRvY3VtZW50ID0gcGRmRG9jdW1lbnQoKS5nZXQoKTsKKworICAgIFBERlNlbGVjdGlvbiAq
c2VsZWN0aW9uRm9ySW5pdGlhbFNlYXJjaCA9IFtpbml0aWFsU2VsZWN0aW9uIGNvcHldOworICAg
IGlmIChzdGFydEluU2VsZWN0aW9uKSB7CisgICAgICAgIC8vIEluaXRpYWxseSB3ZSB3YW50IHRv
IGluY2x1ZGUgdGhlIHNlbGVjdGVkIHRleHQgaW4gdGhlIHNlYXJjaC4gIFNvIHdlIG11c3QgbW9k
aWZ5IHRoZSBzdGFydGluZyBzZWFyY2gKKyAgICAgICAgLy8gc2VsZWN0aW9uIHRvIGZpdCBQREZE
b2N1bWVudCdzIHNlYXJjaCByZXF1aXJlbWVudHM6IHNlbGVjdGlvbiBtdXN0IGhhdmUgYSBsZW5n
dGggPj0gMSwgYmVnaW4gYmVmb3JlCisgICAgICAgIC8vIHRoZSBjdXJyZW50IHNlbGVjdGlvbiAo
aWYgc2VhcmNoaW5nIGZvcndhcmRzKSBvciBhZnRlciAoaWYgc2VhcmNoaW5nIGJhY2t3YXJkcyku
CisgICAgICAgIGludCBpbml0aWFsU2VsZWN0aW9uTGVuZ3RoID0gW1tpbml0aWFsU2VsZWN0aW9u
IHN0cmluZ10gbGVuZ3RoXTsKKyAgICAgICAgaWYgKHNlYXJjaEZvcndhcmQpIHsKKyAgICAgICAg
ICAgIFtzZWxlY3Rpb25Gb3JJbml0aWFsU2VhcmNoIGV4dGVuZFNlbGVjdGlvbkF0U3RhcnQ6MV07
CisgICAgICAgICAgICBbc2VsZWN0aW9uRm9ySW5pdGlhbFNlYXJjaCBleHRlbmRTZWxlY3Rpb25B
dEVuZDotaW5pdGlhbFNlbGVjdGlvbkxlbmd0aF07CisgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICBbc2VsZWN0aW9uRm9ySW5pdGlhbFNlYXJjaCBleHRlbmRTZWxlY3Rpb25BdEVuZDoxXTsK
KyAgICAgICAgICAgIFtzZWxlY3Rpb25Gb3JJbml0aWFsU2VhcmNoIGV4dGVuZFNlbGVjdGlvbkF0
U3RhcnQ6LWluaXRpYWxTZWxlY3Rpb25MZW5ndGhdOworICAgICAgICB9CisgICAgfQorCisgICAg
UERGU2VsZWN0aW9uICpmb3VuZFNlbGVjdGlvbiA9IFtkb2N1bWVudCBmaW5kU3RyaW5nOnRhcmdl
dCBmcm9tU2VsZWN0aW9uOnNlbGVjdGlvbkZvckluaXRpYWxTZWFyY2ggd2l0aE9wdGlvbnM6b3B0
aW9uc107CisgICAgW3NlbGVjdGlvbkZvckluaXRpYWxTZWFyY2ggcmVsZWFzZV07CisKKyAgICAv
LyBJZiB3ZSBmaXJzdCBzZWFyY2hlZCBpbiB0aGUgc2VsZWN0aW9uLCBhbmQgd2UgZm91bmQgdGhl
IHNlbGVjdGlvbiwgc2VhcmNoIGFnYWluIGZyb20ganVzdCBwYXN0IHRoZSBzZWxlY3Rpb24uCisg
ICAgaWYgKHN0YXJ0SW5TZWxlY3Rpb24gJiYgW2ZvdW5kU2VsZWN0aW9uIGlzRXF1YWw6aW5pdGlh
bFNlbGVjdGlvbl0pCisgICAgICAgIGZvdW5kU2VsZWN0aW9uID0gW2RvY3VtZW50IGZpbmRTdHJp
bmc6dGFyZ2V0IGZyb21TZWxlY3Rpb246aW5pdGlhbFNlbGVjdGlvbiB3aXRoT3B0aW9uczpvcHRp
b25zXTsKKyAgICAgICAgCisgICAgaWYgKCFmb3VuZFNlbGVjdGlvbiAmJiB3cmFwU2VhcmNoKQor
ICAgICAgICBmb3VuZFNlbGVjdGlvbiA9IFtkb2N1bWVudCBmaW5kU3RyaW5nOnRhcmdldCBmcm9t
U2VsZWN0aW9uOm5pbCB3aXRoT3B0aW9uczpvcHRpb25zXTsKKyAgICAgICAgCisgICAgcmV0dXJu
IGZvdW5kU2VsZWN0aW9uOworfQorCitib29sIFBERlBsdWdpbjo6ZmluZFN0cmluZyhjb25zdCBT
dHJpbmcmIHRhcmdldCwgV2ViQ29yZTo6RmluZE9wdGlvbnMgb3B0aW9ucywgdW5zaWduZWQgbWF4
TWF0Y2hDb3VudCkKK3sKKyAgICBCT09MIHNlYXJjaEZvcndhcmQgPSAhKG9wdGlvbnMgJiBGaW5k
T3B0aW9uc0JhY2t3YXJkcyk7CisgICAgQk9PTCBjYXNlU2Vuc2l0aXZlID0gIShvcHRpb25zICYg
RmluZE9wdGlvbnNDYXNlSW5zZW5zaXRpdmUpOworICAgIEJPT0wgd3JhcFNlYXJjaCA9IG9wdGlv
bnMgJiBGaW5kT3B0aW9uc1dyYXBBcm91bmQ7CisKKyAgICB1bnNpZ25lZCBtYXRjaENvdW50Owor
ICAgIGlmICghbWF4TWF0Y2hDb3VudCkgeworICAgICAgICAvLyBJZiB0aGUgbWF4IHdhcyB6ZXJv
LCBhbnkgcmVzdWx0IG1lYW5zIHdlIGV4Y2VlZGVkIHRoZSBtYXguIFdlIGNhbiBza2lwIGNvbXB1
dGluZyB0aGUgYWN0dWFsIGNvdW50LgorICAgICAgICBtYXRjaENvdW50ID0gc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KGtXS01vcmVUaGFuTWF4aW11bU1hdGNoQ291bnQpOworICAgIH0gZWxzZSB7Cisg
ICAgICAgIG1hdGNoQ291bnQgPSBjb3VudEZpbmRNYXRjaGVzKHRhcmdldCwgb3B0aW9ucywgbWF4
TWF0Y2hDb3VudCk7CisgICAgICAgIGlmIChtYXRjaENvdW50ID4gbWF4TWF0Y2hDb3VudCkKKyAg
ICAgICAgICAgIG1hdGNoQ291bnQgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oa1dLTW9yZVRoYW5N
YXhpbXVtTWF0Y2hDb3VudCk7CisgICAgfQorCisgICAgaWYgKHRhcmdldCA9PSBlbXB0eVN0cmlu
ZygpKSB7CisgICAgICAgIFBERlNlbGVjdGlvbiogc2VhcmNoU2VsZWN0aW9uID0gW21fcGRmTGF5
ZXJDb250cm9sbGVyLmdldCgpIHNlYXJjaFNlbGVjdGlvbl07CisgICAgICAgIFttX3BkZkxheWVy
Q29udHJvbGxlci5nZXQoKSBmaW5kU3RyaW5nOnRhcmdldCBjYXNlU2Vuc2l0aXZlOmNhc2VTZW5z
aXRpdmUgaGlnaGxpZ2h0TWF0Y2hlczpZRVNdOworICAgICAgICBbbV9wZGZMYXllckNvbnRyb2xs
ZXIuZ2V0KCkgc2V0U2VhcmNoU2VsZWN0aW9uOnNlYXJjaFNlbGVjdGlvbl07CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAobV9sYXN0Rm91bmRTdHJpbmcgPT0gdGFyZ2V0
KSB7CisgICAgICAgIFBERlNlbGVjdGlvbiAqc2VsZWN0aW9uID0gbmV4dE1hdGNoRm9yU3RyaW5n
KHRhcmdldCwgc2VhcmNoRm9yd2FyZCwgY2FzZVNlbnNpdGl2ZSwgd3JhcFNlYXJjaCwgW21fcGRm
TGF5ZXJDb250cm9sbGVyLmdldCgpIHNlYXJjaFNlbGVjdGlvbl0sIE5PKTsKKyAgICAgICAgaWYg
KCFzZWxlY3Rpb24pCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgW21fcGRm
TGF5ZXJDb250cm9sbGVyLmdldCgpIHNldFNlYXJjaFNlbGVjdGlvbjpzZWxlY3Rpb25dOworICAg
ICAgICBbbV9wZGZMYXllckNvbnRyb2xsZXIuZ2V0KCkgZ290b1NlbGVjdGlvbjpzZWxlY3Rpb25d
OworICAgIH0gZWxzZSB7CisgICAgICAgIFttX3BkZkxheWVyQ29udHJvbGxlci5nZXQoKSBmaW5k
U3RyaW5nOnRhcmdldCBjYXNlU2Vuc2l0aXZlOmNhc2VTZW5zaXRpdmUgaGlnaGxpZ2h0TWF0Y2hl
czpZRVNdOworICAgICAgICBtX2xhc3RGb3VuZFN0cmluZyA9IHRhcmdldDsKKyAgICB9CisKKyAg
ICByZXR1cm4gbWF0Y2hDb3VudCA+IDA7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAj
ZW5kaWYgLy8gRU5BQkxFKFBERktJVF9QTFVHSU4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1NpbXBsZVBERlBsdWdpbi5oIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9TaW1wbGVQREZQbHVnaW4uaAppbmRleCBlMThjYjBk
Li42ZjYxOGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMv
UERGL1NpbXBsZVBERlBsdWdpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1
Z2lucy9QREYvU2ltcGxlUERGUGx1Z2luLmgKQEAgLTE3NCw2ICsxNzQsOSBAQCBwcm90ZWN0ZWQ6
CiAgICAgdmlydHVhbCBib29sIHNob3VsZEFsbG93U2NyaXB0aW5nKCkgT1ZFUlJJREUgeyByZXR1
cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQWxsb3dOYXZpZ2F0aW9uRnJvbURy
YWdzKCkgeyByZXR1cm4gdHJ1ZTsgfQogCisgICAgdmlydHVhbCB1bnNpZ25lZCBpbnQgY291bnRG
aW5kTWF0Y2hlcyhjb25zdCBTdHJpbmcmIHRhcmdldCwgV2ViQ29yZTo6RmluZE9wdGlvbnMgb3B0
aW9ucywgdW5zaWduZWQgbGltaXQpIE9WRVJSSURFIHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFs
IGJvb2wgZmluZFN0cmluZyhjb25zdCBTdHJpbmcmIHRhcmdldCwgV2ViQ29yZTo6RmluZE9wdGlv
bnMgb3B0aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hDb3VudCkgT1ZFUlJJREUgeyByZXR1cm4gZmFs
c2U7IH0KKwogICAgIFdlYkNvcmU6OkludFNpemUgbV9zY3JvbGxPZmZzZXQ7CiAKIHByaXZhdGU6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmgKaW5kZXggZGM3NTE1
MC4uYWQ3MDhjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4u
aApAQCAtMjYsNiArMjYsNyBAQAogI2lmbmRlZiBQbHVnaW5faAogI2RlZmluZSBQbHVnaW5faAog
CisjaW5jbHVkZSA8V2ViQ29yZS9GaW5kT3B0aW9ucy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR3Jh
cGhpY3NMYXllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvS1VSTC5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvU2Nyb2xsVHlwZXMuaD4KQEAgLTI1NCw2ICsyNTUsMTAgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgUmV0YWluUHRyPFBERkRvY3VtZW50PiBwZGZEb2N1bWVudEZvclByaW50aW5nKCkgY29uc3Qg
eyByZXR1cm4gMDsgfQogI2VuZGlmCiAKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGludCBjb3VudEZp
bmRNYXRjaGVzKGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBXZWJDb3JlOjpGaW5kT3B0aW9ucyBvcHRp
b25zLCB1bnNpZ25lZCBsaW1pdCkgPSAwOworCisgICAgdmlydHVhbCBib29sIGZpbmRTdHJpbmco
Y29uc3QgU3RyaW5nJiB0YXJnZXQsIFdlYkNvcmU6OkZpbmRPcHRpb25zIG9wdGlvbnMsIHVuc2ln
bmVkIG1heE1hdGNoQ291bnQpID0gMDsKKwogICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50UG9pbnQg
Y29udmVydFRvUm9vdFZpZXcoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50SW5Mb2NhbENv
b3JkaW5hdGVzKSBjb25zdDsKIAogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRBbHdheXNBdXRvU3Rh
cnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaAppbmRleCAxNjI2OTQyLi5mNGI0MmMzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaApAQCAtMzIs
NiArMzIsNyBAQAogI2luY2x1ZGUgIlBsdWdpbi5oIgogI2luY2x1ZGUgIlBsdWdpblByb2Nlc3Mu
aCIKICNpbmNsdWRlIDxXZWJDb3JlL0FmZmluZVRyYW5zZm9ybS5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvRmluZE9wdGlvbnMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ludFJlY3QuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CiAKQEAgLTEyNyw2ICsxMjgsOSBAQCBwcml2YXRl
OgogICAgIHZpcnR1YWwgV2ViQ29yZTo6U2Nyb2xsYmFyKiBob3Jpem9udGFsU2Nyb2xsYmFyKCk7
CiAgICAgdmlydHVhbCBXZWJDb3JlOjpTY3JvbGxiYXIqIHZlcnRpY2FsU2Nyb2xsYmFyKCk7CiAK
KyAgICB2aXJ0dWFsIHVuc2lnbmVkIGludCBjb3VudEZpbmRNYXRjaGVzKGNvbnN0IFN0cmluZyYs
IFdlYkNvcmU6OkZpbmRPcHRpb25zLCB1bnNpZ25lZCkgT1ZFUlJJREUgIHsgcmV0dXJuIDA7IH0K
KyAgICB2aXJ0dWFsIGJvb2wgZmluZFN0cmluZyhjb25zdCBTdHJpbmcmIHRhcmdldCwgV2ViQ29y
ZTo6RmluZE9wdGlvbnMsIHVuc2lnbmVkKSAgeyByZXR1cm4gZmFsc2U7IH0KKwogICAgIHZpcnR1
YWwgV2ViQ29yZTo6SW50UG9pbnQgY29udmVydFRvUm9vdFZpZXcoY29uc3QgV2ViQ29yZTo6SW50
UG9pbnQmKSBjb25zdCBPVkVSUklERTsKIAogICAgIGZsb2F0IGNvbnRlbnRzU2NhbGVGYWN0b3Io
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5W
aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNw
cAppbmRleCAyZmYzMzkwLi4yMDE2MTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCkBAIC03MzYsNiArNzM2LDE2IEBAIHZvaWQgUGx1
Z2luVmlldzo6c2V0UGFyZW50KFNjcm9sbFZpZXcqIHNjcm9sbFZpZXcpCiAgICAgICAgIGluaXRp
YWxpemVQbHVnaW4oKTsKIH0KIAordW5zaWduZWQgaW50IFBsdWdpblZpZXc6OmNvdW50RmluZE1h
dGNoZXMoY29uc3QgU3RyaW5nJiB0YXJnZXQsIFdlYkNvcmU6OkZpbmRPcHRpb25zIG9wdGlvbnMs
IHVuc2lnbmVkIGxpbWl0KQoreworICAgIHJldHVybiBtX3BsdWdpbi0+Y291bnRGaW5kTWF0Y2hl
cyh0YXJnZXQsIG9wdGlvbnMsIGxpbWl0KTsKK30KKworYm9vbCBQbHVnaW5WaWV3OjpmaW5kU3Ry
aW5nKGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBXZWJDb3JlOjpGaW5kT3B0aW9ucyBvcHRpb25zLCB1
bnNpZ25lZCBtYXhNYXRjaENvdW50KQoreworICAgIHJldHVybiBtX3BsdWdpbi0+ZmluZFN0cmlu
Zyh0YXJnZXQsIG9wdGlvbnMsIG1heE1hdGNoQ291bnQpOworfQorCiBQYXNzT3duUHRyPFdlYkV2
ZW50PiBQbHVnaW5WaWV3OjpjcmVhdGVXZWJFdmVudChNb3VzZUV2ZW50KiBldmVudCkgY29uc3QK
IHsKICAgICBXZWJFdmVudDo6VHlwZSB0eXBlID0gV2ViRXZlbnQ6Ok5vVHlwZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCmluZGV4IGFjOTY5Mjku
LjllYzc3MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5WaWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blZpZXcuaApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIlBsdWdpbi5oIgogI2luY2x1ZGUg
IlBsdWdpbkNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJXZWJGcmFtZS5oIgorI2luY2x1ZGUgPFdl
YkNvcmUvRmluZE9wdGlvbnMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ltYWdlLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9NZWRpYUNhblN0YXJ0TGlzdGVuZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Bs
dWdpblZpZXdCYXNlLmg+CkBAIC05Miw2ICs5Myw5IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwg
Ym9vbCBoYW5kbGVFZGl0aW5nQ29tbWFuZChjb25zdCBTdHJpbmcmIGNvbW1hbmROYW1lLCBjb25z
dCBTdHJpbmcmIGFyZ3VtZW50KTsKICAgICB2aXJ0dWFsIGJvb2wgaXNFZGl0aW5nQ29tbWFuZEVu
YWJsZWQoY29uc3QgU3RyaW5nJiBjb21tYW5kTmFtZSk7CisgICAgCisgICAgdmlydHVhbCB1bnNp
Z25lZCBpbnQgY291bnRGaW5kTWF0Y2hlcyhjb25zdCBTdHJpbmcmIHRhcmdldCwgV2ViQ29yZTo6
RmluZE9wdGlvbnMgb3B0aW9ucywgdW5zaWduZWQgbGltaXQpOworICAgIHZpcnR1YWwgYm9vbCBm
aW5kU3RyaW5nKGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBXZWJDb3JlOjpGaW5kT3B0aW9ucyBvcHRp
b25zLCB1bnNpZ25lZCBtYXhNYXRjaENvdW50KTsKIAogICAgIGJvb2wgc2hvdWxkQWxsb3dTY3Jp
cHRpbmcoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L0ZpbmRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9G
aW5kQ29udHJvbGxlci5jcHAKaW5kZXggNTMzYWMyYi4uYTdjNTM1YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuY3BwCkBAIC0y
Niw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRmluZENvbnRyb2xs
ZXIuaCIKIAorI2luY2x1ZGUgIlBsdWdpblZpZXcuaCIKICNpbmNsdWRlICJTaGFyZWFibGVCaXRt
YXAuaCIKICNpbmNsdWRlICJXS1BhZ2UuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2Rl
cnMuaCIKQEAgLTM5LDYgKzQwLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lVmlldy5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Q
YWdlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QbHVnaW5Eb2N1bWVudC5oPgogCiB1c2luZyBuYW1l
c3BhY2Ugc3RkOwogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC02NSwxMyArNjcsMzEgQEAg
RmluZENvbnRyb2xsZXI6On5GaW5kQ29udHJvbGxlcigpCiB7CiB9CiAKK3N0YXRpYyBQbHVnaW5W
aWV3KiBwbHVnaW5WaWV3Rm9yRnJhbWUoRnJhbWUqIGZyYW1lKQoreworICAgIGlmICghZnJhbWUt
PmRvY3VtZW50KCktPmlzUGx1Z2luRG9jdW1lbnQoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAg
ICBQbHVnaW5Eb2N1bWVudCogcGx1Z2luRG9jdW1lbnQgPSBzdGF0aWNfY2FzdDxQbHVnaW5Eb2N1
bWVudCo+KGZyYW1lLT5kb2N1bWVudCgpKTsKKyAgICBQbHVnaW5WaWV3KiBwbHVnaW5WaWV3ID0g
c3RhdGljX2Nhc3Q8UGx1Z2luVmlldyo+KHBsdWdpbkRvY3VtZW50LT5wbHVnaW5XaWRnZXQoKSk7
CisgICAgcmV0dXJuIHBsdWdpblZpZXc7Cit9CisKIHZvaWQgRmluZENvbnRyb2xsZXI6OmNvdW50
U3RyaW5nTWF0Y2hlcyhjb25zdCBTdHJpbmcmIHN0cmluZywgRmluZE9wdGlvbnMgb3B0aW9ucywg
dW5zaWduZWQgbWF4TWF0Y2hDb3VudCkKIHsKICAgICBpZiAobWF4TWF0Y2hDb3VudCA9PSBudW1l
cmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQogICAgICAgICAtLW1heE1hdGNoQ291bnQ7CiAg
ICAgCi0gICAgdW5zaWduZWQgbWF0Y2hDb3VudCA9IG1fd2ViUGFnZS0+Y29yZVBhZ2UoKS0+bWFy
a0FsbE1hdGNoZXNGb3JUZXh0KHN0cmluZywgY29yZShvcHRpb25zKSwgZmFsc2UsIG1heE1hdGNo
Q291bnQgKyAxKTsKLSAgICBtX3dlYlBhZ2UtPmNvcmVQYWdlKCktPnVubWFya0FsbFRleHRNYXRj
aGVzKCk7CisgICAgUGx1Z2luVmlldyogcGx1Z2luVmlldyA9IHBsdWdpblZpZXdGb3JGcmFtZSht
X3dlYlBhZ2UtPm1haW5GcmFtZSgpKTsKKyAgICAKKyAgICB1bnNpZ25lZCBtYXRjaENvdW50Owor
CisgICAgaWYgKHBsdWdpblZpZXcpCisgICAgICAgIG1hdGNoQ291bnQgPSBwbHVnaW5WaWV3LT5j
b3VudEZpbmRNYXRjaGVzKHN0cmluZywgY29yZShvcHRpb25zKSwgbWF4TWF0Y2hDb3VudCArIDEp
OworICAgIGVsc2UgeworICAgICAgICBtYXRjaENvdW50ID0gbV93ZWJQYWdlLT5jb3JlUGFnZSgp
LT5tYXJrQWxsTWF0Y2hlc0ZvclRleHQoc3RyaW5nLCBjb3JlKG9wdGlvbnMpLCBmYWxzZSwgbWF4
TWF0Y2hDb3VudCArIDEpOworICAgICAgICBtX3dlYlBhZ2UtPmNvcmVQYWdlKCktPnVubWFya0Fs
bFRleHRNYXRjaGVzKCk7CisgICAgfQogCiAgICAgLy8gQ2hlY2sgaWYgd2UgaGF2ZSBtb3JlIG1h
dGNoZXMgdGhhbiBhbGxvd2VkLgogICAgIGlmIChtYXRjaENvdW50ID4gbWF4TWF0Y2hDb3VudCkK
QEAgLTkzLDExICsxMTMsMTQgQEAgc3RhdGljIEZyYW1lKiBmcmFtZVdpdGhTZWxlY3Rpb24oUGFn
ZSogcGFnZSkKIHZvaWQgRmluZENvbnRyb2xsZXI6OnVwZGF0ZUZpbmRVSUFmdGVyUGFnZVNjcm9s
bChib29sIGZvdW5kLCBjb25zdCBTdHJpbmcmIHN0cmluZywgRmluZE9wdGlvbnMgb3B0aW9ucywg
dW5zaWduZWQgbWF4TWF0Y2hDb3VudCkKIHsKICAgICBGcmFtZSogc2VsZWN0ZWRGcmFtZSA9IGZy
YW1lV2l0aFNlbGVjdGlvbihtX3dlYlBhZ2UtPmNvcmVQYWdlKCkpOworICAgIAorICAgIFBsdWdp
blZpZXcqIHBsdWdpblZpZXcgPSBwbHVnaW5WaWV3Rm9yRnJhbWUobV93ZWJQYWdlLT5tYWluRnJh
bWUoKSk7CiAKICAgICBib29sIHNob3VsZFNob3dPdmVybGF5ID0gZmFsc2U7CiAKICAgICBpZiAo
IWZvdW5kKSB7Ci0gICAgICAgIG1fd2ViUGFnZS0+Y29yZVBhZ2UoKS0+dW5tYXJrQWxsVGV4dE1h
dGNoZXMoKTsKKyAgICAgICAgaWYgKCFwbHVnaW5WaWV3KQorICAgICAgICAgICAgbV93ZWJQYWdl
LT5jb3JlUGFnZSgpLT51bm1hcmtBbGxUZXh0TWF0Y2hlcygpOwogCiAgICAgICAgIC8vIENsZWFy
IHRoZSBzZWxlY3Rpb24uCiAgICAgICAgIGlmIChzZWxlY3RlZEZyYW1lKQpAQCAtMTE2LDggKzEz
OSwxMyBAQCB2b2lkIEZpbmRDb250cm9sbGVyOjp1cGRhdGVGaW5kVUlBZnRlclBhZ2VTY3JvbGwo
Ym9vbCBmb3VuZCwgY29uc3QgU3RyaW5nJiBzdHJpbgogICAgICAgICAgICAgaWYgKG1heE1hdGNo
Q291bnQgPT0gbnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKICAgICAgICAgICAgICAg
ICAtLW1heE1hdGNoQ291bnQ7CiAKLSAgICAgICAgICAgIG1fd2ViUGFnZS0+Y29yZVBhZ2UoKS0+
dW5tYXJrQWxsVGV4dE1hdGNoZXMoKTsKLSAgICAgICAgICAgIG1hdGNoQ291bnQgPSBtX3dlYlBh
Z2UtPmNvcmVQYWdlKCktPm1hcmtBbGxNYXRjaGVzRm9yVGV4dChzdHJpbmcsIGNvcmUob3B0aW9u
cyksIHNob3VsZFNob3dIaWdobGlnaHQsIG1heE1hdGNoQ291bnQgKyAxKTsKKyAgICAgICAgICAg
IGlmIChwbHVnaW5WaWV3KSB7CisgICAgICAgICAgICAgICAgbWF0Y2hDb3VudCA9IHBsdWdpblZp
ZXctPmNvdW50RmluZE1hdGNoZXMoc3RyaW5nLCBjb3JlKG9wdGlvbnMpLCBtYXhNYXRjaENvdW50
ICsgMSk7CisgICAgICAgICAgICAgICAgc2hvdWxkU2hvd092ZXJsYXkgPSBmYWxzZTsKKyAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbV93ZWJQYWdlLT5jb3JlUGFnZSgpLT51
bm1hcmtBbGxUZXh0TWF0Y2hlcygpOworICAgICAgICAgICAgICAgIG1hdGNoQ291bnQgPSBtX3dl
YlBhZ2UtPmNvcmVQYWdlKCktPm1hcmtBbGxNYXRjaGVzRm9yVGV4dChzdHJpbmcsIGNvcmUob3B0
aW9ucyksIHNob3VsZFNob3dIaWdobGlnaHQsIG1heE1hdGNoQ291bnQgKyAxKTsKKyAgICAgICAg
ICAgIH0KIAogICAgICAgICAgICAgLy8gQ2hlY2sgaWYgd2UgaGF2ZSBtb3JlIG1hdGNoZXMgdGhh
biBhbGxvd2VkLgogICAgICAgICAgICAgaWYgKG1hdGNoQ291bnQgPiBtYXhNYXRjaENvdW50KSB7
CkBAIC0xNTUsNyArMTgzLDE0IEBAIHZvaWQgRmluZENvbnRyb2xsZXI6OnVwZGF0ZUZpbmRVSUFm
dGVyUGFnZVNjcm9sbChib29sIGZvdW5kLCBjb25zdCBTdHJpbmcmIHN0cmluCiAKIHZvaWQgRmlu
ZENvbnRyb2xsZXI6OmZpbmRTdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcsIEZpbmRPcHRpb25z
IG9wdGlvbnMsIHVuc2lnbmVkIG1heE1hdGNoQ291bnQpCiB7Ci0gICAgYm9vbCBmb3VuZCA9IG1f
d2ViUGFnZS0+Y29yZVBhZ2UoKS0+ZmluZFN0cmluZyhzdHJpbmcsIGNvcmUob3B0aW9ucykpOwor
ICAgIFBsdWdpblZpZXcqIHBsdWdpblZpZXcgPSBwbHVnaW5WaWV3Rm9yRnJhbWUobV93ZWJQYWdl
LT5tYWluRnJhbWUoKSk7CisgICAgCisgICAgYm9vbCBmb3VuZCA9IGZhbHNlOworICAgIAorICAg
IGlmIChwbHVnaW5WaWV3KQorICAgICAgICBmb3VuZCA9IHBsdWdpblZpZXctPmZpbmRTdHJpbmco
c3RyaW5nLCBjb3JlKG9wdGlvbnMpLCBtYXhNYXRjaENvdW50KTsKKyAgICBlbHNlCisgICAgICAg
IGZvdW5kID0gbV93ZWJQYWdlLT5jb3JlUGFnZSgpLT5maW5kU3RyaW5nKHN0cmluZywgY29yZShv
cHRpb25zKSk7CiAKICAgICBtX3dlYlBhZ2UtPmRyYXdpbmdBcmVhKCktPmRpc3BhdGNoQWZ0ZXJF
bnN1cmluZ1VwZGF0ZWRTY3JvbGxQb3NpdGlvbihXVEY6OmJpbmQoJkZpbmRDb250cm9sbGVyOjp1
cGRhdGVGaW5kVUlBZnRlclBhZ2VTY3JvbGwsIHRoaXMsIGZvdW5kLCBzdHJpbmcsIG9wdGlvbnMs
IG1heE1hdGNoQ291bnQpKTsKIH0KQEAgLTE2NSw3ICsyMDAsMTMgQEAgdm9pZCBGaW5kQ29udHJv
bGxlcjo6aGlkZUZpbmRVSSgpCiAgICAgaWYgKG1fZmluZFBhZ2VPdmVybGF5KQogICAgICAgICBt
X3dlYlBhZ2UtPnVuaW5zdGFsbFBhZ2VPdmVybGF5KG1fZmluZFBhZ2VPdmVybGF5LCBmYWxzZSk7
CiAKLSAgICBtX3dlYlBhZ2UtPmNvcmVQYWdlKCktPnVubWFya0FsbFRleHRNYXRjaGVzKCk7Cisg
ICAgUGx1Z2luVmlldyogcGx1Z2luVmlldyA9IHBsdWdpblZpZXdGb3JGcmFtZShtX3dlYlBhZ2Ut
Pm1haW5GcmFtZSgpKTsKKyAgICAKKyAgICBpZiAocGx1Z2luVmlldykKKyAgICAgICAgcGx1Z2lu
Vmlldy0+ZmluZFN0cmluZyhlbXB0eVN0cmluZygpLCAwLCAwKTsKKyAgICBlbHNlCisgICAgICAg
IG1fd2ViUGFnZS0+Y29yZVBhZ2UoKS0+dW5tYXJrQWxsVGV4dE1hdGNoZXMoKTsKKyAgICAKICAg
ICBoaWRlRmluZEluZGljYXRvcigpOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>180652</attachid>
            <date>2012-12-24 00:03:51 -0800</date>
            <delta_ts>2012-12-24 00:36:29 -0800</delta_ts>
            <desc>style</desc>
            <filename>findinpage.diff</filename>
            <type>text/plain</type>
            <size>20753</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAxOTgyYjYwLi4wYjIyMmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDQg
QEAKKzIwMTItMTItMjMgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgUERGUGx1Z2luOiBGaW5kLWluLXBhZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNTcxMAorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
MTI1NTUzMzE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgTWFrZSB1c2Ugb2YgUERGTGF5ZXJDb250cm9sbGVyJ3MgZmluZC1pbi1wYWdlIGZ1bmN0aW9u
YWxpdHkgdG8gbWltaWMgV2ViS2l0J3MuCisgICAgICAgIEFkZCB0d28gUGx1Z2luIG1ldGhvZHMs
IGNvdW50RmluZE1hdGNoZXMgYW5kIGZpbmRTdHJpbmcsIGFuZCBtYWtlIHVzZSBvZiB0aGVtCisg
ICAgICAgIGlmIGF0dGVtcHRpbmcgdG8gZmluZC1pbi1wYWdlIHdpdGhpbiBhIFBsdWdpbkRvY3Vt
ZW50LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1
Z2luLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OmNvdW50RmluZE1hdGNo
ZXMpOiBBZGRlZC4gV2UgZG9uJ3Qgc3VwcG9ydCBmaW5kLWluLXBhZ2UgZm9yIE5ldHNjYXBlUGx1
Z2luLgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbjo6ZmluZFN0cmluZyk6IEFkZGVk
LiBXZSBkb24ndCBzdXBwb3J0IGZpbmQtaW4tcGFnZSBmb3IgTmV0c2NhcGVQbHVnaW4uCisgICAg
ICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmg6IEFkZCBj
b3VudEZpbmRNYXRjaGVzIGFuZCBmaW5kU3RyaW5nLgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1
Z2lucy9QREYvUERGTGF5ZXJDb250cm9sbGVyRGV0YWlscy5oOiBBZGQgcmVxdWlzaXRlIFBERkxh
eWVyQ29udHJvbGxlciBpbnRlcmZhY2VzLgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9Q
REYvUERGUGx1Z2luLmg6IEFkZCBjb3VudEZpbmRNYXRjaGVzLCBmaW5kU3RyaW5nLCBhbmQgbmV4
dE1hdGNoRm9yU3RyaW5nLAorICAgICAgICBhcyB3ZWxsIGFzICBzdG9yYWdlIGZvciB0aGUgbW9z
dC1yZWNlbnRseS1zZWFyY2hlZCBzdHJpbmcuCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5z
L1BERi9QREZQbHVnaW4ubW06CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6d3JpdGVJdGVt
c1RvUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6Y291bnRGaW5kTWF0
Y2hlcyk6CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6bmV4dE1hdGNoRm9yU3RyaW5nKToK
KyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpmaW5kU3RyaW5nKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1BsdWdpbnMvUERGL1NpbXBsZVBERlBsdWdpbi5oOiBBZGQgY291bnRGaW5kTWF0Y2hl
cyBhbmQgZmluZFN0cmluZy4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmg6
IEFkZCBjb3VudEZpbmRNYXRjaGVzIGFuZCBmaW5kU3RyaW5nLgorICAgICAgICAqIFdlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oOiBBZGQgY291bnRGaW5kTWF0Y2hlcyBhbmQgZmluZFN0
cmluZywgYnV0IHNpbmNlIFBERlBsdWdpbgorICAgICAgICBpcyBpbi1wcm9jZXNzLCB3ZSBkb24n
dCBuZWVkIHRvIGZvcndhcmQgdGhlc2UgY2FsbHMgdG8gdGhlIFBsdWdpblByb2Nlc3MuCisgICAg
ICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwOiAKKyAgICAgICAgKFdlYktp
dDo6UGx1Z2luVmlldzo6Y291bnRGaW5kTWF0Y2hlcyk6IEZvcndhcmQgY291bnRGaW5kTWF0Y2hl
cyB0byB0aGUgcGx1Z2luLgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjpmaW5kU3RyaW5n
KTogRm9yd2FyZCBmaW5kU3RyaW5nIHRvIHRoZSBwbHVnaW4uCisgICAgICAgICogV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblZpZXcuaDogQWRkIGNvdW50RmluZE1hdGNoZXMgYW5kIGZpbmRTdHJp
bmcuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6cGx1Z2luVmlld0ZvckZyYW1lKTogSWYgdGhlIGdpdmVuIGZyYW1lIGhv
c3RzIGEgUGx1Z2luRG9jdW1lbnQsIGdyYWIgaXRzIFBsdWdpblZpZXcuCisgICAgICAgIChXZWJL
aXQ6OkZpbmRDb250cm9sbGVyOjpjb3VudFN0cmluZ01hdGNoZXMpOiBGb3J3YXJkIGNvdW50U3Ry
aW5nTWF0Y2hlcyB0byBQbHVnaW5WaWV3IGlmIG5lY2Vzc2FyeS4KKyAgICAgICAgKFdlYktpdDo6
RmluZENvbnRyb2xsZXI6OnVwZGF0ZUZpbmRVSUFmdGVyUGFnZVNjcm9sbCk6IE9ubHkgdXNlIHVu
bWFya0FsbFRleHRNYXRjaGVzIGlmIHdlJ3JlIHVzaW5nCisgICAgICAgIG9yZGluYXJ5IGZpbmQt
aW4tcGFnZSBhbmQgZG9uJ3QgaGF2ZSBhIHBsdWdpbi4gSWYgd2UgaGF2ZSBhIHBsdWdpbiwgZGlz
YWJsZSBvdXIgb3ZlcmxheSwgYXMgaXQgbXVzdAorICAgICAgICBiZSBoYW5kbGVkIGJ5IHRoZSBw
bHVnaW4gaXRzZWxmLCBhbmQgcmVxdWVzdCB0aGUgbnVtYmVyIG9mIG1hdGNoZXMgZm9yIHRoZSBz
ZWFyY2ggZnJvbSB0aGUgcGx1Z2luLgorICAgICAgICAoV2ViS2l0OjpGaW5kQ29udHJvbGxlcjo6
ZmluZFN0cmluZyk6IElmIG5lY2Vzc2FyeSwgZm9yd2FyZCBmaW5kU3RyaW5nIHRvIHRoZSBwbHVn
aW4uCisgICAgICAgIChXZWJLaXQ6OkZpbmRDb250cm9sbGVyOjpoaWRlRmluZFVJKTogSGlkZSB0
aGUgc2VhcmNoIGhpZ2hsaWdodCBieSBzZWFyY2hpbmcgZm9yIGFuIGVtcHR5IHN0cmluZy4KKwog
MjAxMi0xMi0yMyAgU2Vva2p1IEt3b24gIDxzZW9ranUua3dvbkBnbWFpbC5jb20+CiAKICAgICAg
ICAgRml4IHRoZSBpbmNvcnJlY3QgdXNlIG9mIHByZXByb2Nlc3NvciBzdGF0ZW1lbnQgaW4gQVBJ
IGhlYWRlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05l
dHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1
Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAKaW5kZXggMDg4OTQ5YS4uM2JlMzU4ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05l
dHNjYXBlUGx1Z2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMv
TmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwCkBAIC05NTgsNiArOTU4LDE2IEBAIE5QT2JqZWN0
KiBOZXRzY2FwZVBsdWdpbjo6cGx1Z2luU2NyaXB0YWJsZU5QT2JqZWN0KCkKIAogICAgIHJldHVy
biBzY3JpcHRhYmxlTlBPYmplY3Q7CiB9CisgICAgCit1bnNpZ25lZCBOZXRzY2FwZVBsdWdpbjo6
Y291bnRGaW5kTWF0Y2hlcyhjb25zdCBTdHJpbmcmLCBXZWJDb3JlOjpGaW5kT3B0aW9ucywgdW5z
aWduZWQpCit7CisgICAgcmV0dXJuIDA7Cit9CisKK2Jvb2wgTmV0c2NhcGVQbHVnaW46OmZpbmRT
dHJpbmcoY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6RmluZE9wdGlvbnMsIHVuc2lnbmVkKQorewor
ICAgIHJldHVybiBmYWxzZTsKK30KIAogdm9pZCBOZXRzY2FwZVBsdWdpbjo6Y29udGVudHNTY2Fs
ZUZhY3RvckNoYW5nZWQoZmxvYXQgc2NhbGVGYWN0b3IpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5o
CmluZGV4IDUxYTlhYWQuLmEwYzg5ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oCkBAIC0yMTMs
NiArMjEzLDkgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlc1BhZ2VTY2FsZUZh
Y3RvcigpIE9WRVJSSURFOwogCiAgICAgdmlydHVhbCBOUE9iamVjdCogcGx1Z2luU2NyaXB0YWJs
ZU5QT2JqZWN0KCk7CisgICAgCisgICAgdmlydHVhbCB1bnNpZ25lZCBjb3VudEZpbmRNYXRjaGVz
KGNvbnN0IFN0cmluZyYsIFdlYkNvcmU6OkZpbmRPcHRpb25zLCB1bnNpZ25lZCk7CisgICAgdmly
dHVhbCBib29sIGZpbmRTdHJpbmcoY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6RmluZE9wdGlvbnMs
IHVuc2lnbmVkKTsKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICB2aXJ0dWFsIHZvaWQgd2luZG93
Rm9jdXNDaGFuZ2VkKGJvb2wpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BERi9QREZMYXllckNvbnRyb2xsZXJEZXRhaWxzLmggYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERkxheWVyQ29udHJvbGxlckRldGFpbHMuaAppbmRl
eCBmMzg3ZGVkLi44Y2I4ZDBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1BsdWdpbnMvUERGL1BERkxheWVyQ29udHJvbGxlckRldGFpbHMuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERkxheWVyQ29udHJvbGxlckRldGFpbHMuaApA
QCAtODMsNyArODMsMTIgQEAKIAogLSAoTlNBcnJheSAqKWZpbmRTdHJpbmc6KE5TU3RyaW5nICop
c3RyaW5nIGNhc2VTZW5zaXRpdmU6KEJPT0wpaXNDYXNlU2Vuc2l0aXZlIGhpZ2hsaWdodE1hdGNo
ZXM6KEJPT0wpc2hvdWxkSGlnaGxpZ2h0TWF0Y2hlczsKIAotLSAoaWQpY3VycmVudFNlbGVjdGlv
bjsKKy0gKFBERlNlbGVjdGlvbiAqKWN1cnJlbnRTZWxlY3Rpb247CistICh2b2lkKXNldEN1cnJl
bnRTZWxlY3Rpb246KFBERlNlbGVjdGlvbiAqKXNlbGVjdGlvbjsKKy0gKFBERlNlbGVjdGlvbiAq
KXNlYXJjaFNlbGVjdGlvbjsKKy0gKHZvaWQpc2V0U2VhcmNoU2VsZWN0aW9uOihQREZTZWxlY3Rp
b24gKilzZWxlY3Rpb247CistICh2b2lkKWdvdG9TZWxlY3Rpb246KFBERlNlbGVjdGlvbiAqKXNl
bGVjdGlvbjsKKwogLSAodm9pZCljb3B5U2VsZWN0aW9uOwogLSAodm9pZClzZWxlY3RBbGw7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1
Z2luLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5o
CmluZGV4IDYxZmFkMWUuLmFhZTE2YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUg
IlNpbXBsZVBERlBsdWdpbi5oIgogI2luY2x1ZGUgIldlYkV2ZW50LmgiCiAjaW5jbHVkZSA8V2Vi
Q29yZS9BZmZpbmVUcmFuc2Zvcm0uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0ZpbmRPcHRpb25zLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JvbGxhYmxlQXJlYS5oPgogI2luY2x1ZGUgPHd0Zi9SZXRh
aW5QdHIuaD4KIApAQCAtNDEsNiArNDIsNyBAQCB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVK
U1ZhbHVlKiBKU1ZhbHVlUmVmOwogCiBPQkpDX0NMQVNTIFBERkFubm90YXRpb247CiBPQkpDX0NM
QVNTIFBERkxheWVyQ29udHJvbGxlcjsKK09CSkNfQ0xBU1MgUERGU2VsZWN0aW9uOwogT0JKQ19D
TEFTUyBXS1BERkxheWVyQ29udHJvbGxlckRlbGVnYXRlOwogCiBuYW1lc3BhY2UgQ29yZUlQQyB7
CkBAIC05Nyw2ICs5OSwxMSBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBpc0VkaXRpbmdD
b21tYW5kRW5hYmxlZChjb25zdCBTdHJpbmcmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wg
aGFuZGxlc1BhZ2VTY2FsZUZhY3RvcigpIE9WRVJSSURFOwogCisgICAgdmlydHVhbCB1bnNpZ25l
ZCBjb3VudEZpbmRNYXRjaGVzKGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBXZWJDb3JlOjpGaW5kT3B0
aW9ucywgdW5zaWduZWQpIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBmaW5kU3RyaW5nKGNv
bnN0IFN0cmluZyYgdGFyZ2V0LCBXZWJDb3JlOjpGaW5kT3B0aW9ucywgdW5zaWduZWQpIE9WRVJS
SURFOworCisgICAgUERGU2VsZWN0aW9uICpuZXh0TWF0Y2hGb3JTdHJpbmcoY29uc3QgU3RyaW5n
JiB0YXJnZXQsIEJPT0wgc2VhcmNoRm9yd2FyZCwgQk9PTCBjYXNlU2Vuc2l0aXZlLCBCT09MIHdy
YXBTZWFyY2gsIFBERlNlbGVjdGlvbiAqaW5pdGlhbFNlbGVjdGlvbiwgQk9PTCBzdGFydEluU2Vs
ZWN0aW9uKTsKKwogICAgIC8vIFNjcm9sbGFibGVBcmVhIGZ1bmN0aW9ucy4KICAgICB2aXJ0dWFs
IHZvaWQgc2V0U2Nyb2xsT2Zmc2V0KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JikgT1ZFUlJJREU7
CiAgICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVTY3JvbGxiYXJSZWN0KFdlYkNvcmU6OlNjcm9s
bGJhciosIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBPVkVSUklERTsKQEAgLTEyOSw2ICsxMzYs
OCBAQCBwcml2YXRlOgogICAgIFdlYkNvcmU6OkludFBvaW50IG1fbGFzdE1vdXNlUG9zaXRpb25J
blBsdWdpbkNvb3JkaW5hdGVzOwogCiAgICAgU3RyaW5nIG1fdGVtcG9yYXJ5UERGVVVJRDsKKwor
ICAgIFN0cmluZyBtX2xhc3RGb3VuZFN0cmluZzsKICAgICAKICAgICBSZXRhaW5QdHI8V0tQREZM
YXllckNvbnRyb2xsZXJEZWxlZ2F0ZT4gbV9wZGZMYXllckNvbnRyb2xsZXJEZWxlZ2F0ZTsKIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBs
dWdpbi5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2lu
Lm1tCmluZGV4IDcyMTY1YmQuLjFlZjI2ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCkBAIC04MjgsNyArODI4LDYgQEAgdm9p
ZCBQREZQbHVnaW46OndyaXRlSXRlbXNUb1Bhc3RlYm9hcmQoTlNBcnJheSAqaXRlbXMsIE5TQXJy
YXkgKnR5cGVzKQogICAgICAgICAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuY29ubmVjdGlvbigp
LT5zZW5kKE1lc3NhZ2VzOjpXZWJDb250ZXh0OjpTZXRQYXN0ZWJvYXJkQnVmZmVyRm9yVHlwZShO
U0dlbmVyYWxQYm9hcmQsIHR5cGUsIGhhbmRsZSwgYnVmZmVyLT5zaXplKCkpLCAwKTsKICAgICAg
ICAgfQogICAgIH0KLQogfQogCiBJbnRQb2ludCBQREZQbHVnaW46OmNvbnZlcnRGcm9tUERGVmll
d1RvUm9vdFZpZXcoY29uc3QgSW50UG9pbnQmIHBvaW50KSBjb25zdApAQCAtODQ5LDYgKzg0OCw5
NiBAQCB2b2lkIFBERlBsdWdpbjo6c2hvd0RlZmluaXRpb25Gb3JBdHRyaWJ1dGVkU3RyaW5nKE5T
QXR0cmlidXRlZFN0cmluZyAqc3RyaW5nLCBDRwogICAgIHdlYkZyYW1lKCktPnBhZ2UoKS0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRQZXJmb3JtRGljdGlvbmFyeUxvb2t1cChhdHRy
aWJ1dGVkU3RyaW5nLCBkaWN0aW9uYXJ5UG9wdXBJbmZvKSk7CiB9CiAKK3Vuc2lnbmVkIFBERlBs
dWdpbjo6Y291bnRGaW5kTWF0Y2hlcyhjb25zdCBTdHJpbmcmIHRhcmdldCwgV2ViQ29yZTo6Rmlu
ZE9wdGlvbnMgb3B0aW9ucywgdW5zaWduZWQgbGltaXQpCit7CisgICAgaWYgKCF0YXJnZXQubGVu
Z3RoKCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgaW50IG5zT3B0aW9ucyA9IG9wdGlvbnMg
JiBGaW5kT3B0aW9uc0Nhc2VJbnNlbnNpdGl2ZSA/IE5TQ2FzZUluc2Vuc2l0aXZlU2VhcmNoIDog
MDsKKworICAgIHJldHVybiBbW3BkZkRvY3VtZW50KCkuZ2V0KCkgZmluZFN0cmluZzp0YXJnZXQg
d2l0aE9wdGlvbnM6bnNPcHRpb25zXSBjb3VudF07Cit9CisKK1BERlNlbGVjdGlvbiAqUERGUGx1
Z2luOjpuZXh0TWF0Y2hGb3JTdHJpbmcoY29uc3QgU3RyaW5nJiB0YXJnZXQsIEJPT0wgc2VhcmNo
Rm9yd2FyZCwgQk9PTCBjYXNlU2Vuc2l0aXZlLCBCT09MIHdyYXBTZWFyY2gsIFBERlNlbGVjdGlv
biAqaW5pdGlhbFNlbGVjdGlvbiwgQk9PTCBzdGFydEluU2VsZWN0aW9uKQoreworICAgIGlmICgh
dGFyZ2V0Lmxlbmd0aCgpKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgTlNTdHJpbmdDb21w
YXJlT3B0aW9ucyBvcHRpb25zID0gMDsKKyAgICBpZiAoIXNlYXJjaEZvcndhcmQpCisgICAgICAg
IG9wdGlvbnMgfD0gTlNCYWNrd2FyZHNTZWFyY2g7CisKKyAgICBpZiAoIWNhc2VTZW5zaXRpdmUp
CisgICAgICAgIG9wdGlvbnMgfD0gTlNDYXNlSW5zZW5zaXRpdmVTZWFyY2g7CisKKyAgICBQREZE
b2N1bWVudCAqZG9jdW1lbnQgPSBwZGZEb2N1bWVudCgpLmdldCgpOworCisgICAgUERGU2VsZWN0
aW9uICpzZWxlY3Rpb25Gb3JJbml0aWFsU2VhcmNoID0gW2luaXRpYWxTZWxlY3Rpb24gY29weV07
CisgICAgaWYgKHN0YXJ0SW5TZWxlY3Rpb24pIHsKKyAgICAgICAgLy8gSW5pdGlhbGx5IHdlIHdh
bnQgdG8gaW5jbHVkZSB0aGUgc2VsZWN0ZWQgdGV4dCBpbiB0aGUgc2VhcmNoLiAgU28gd2UgbXVz
dCBtb2RpZnkgdGhlIHN0YXJ0aW5nIHNlYXJjaAorICAgICAgICAvLyBzZWxlY3Rpb24gdG8gZml0
IFBERkRvY3VtZW50J3Mgc2VhcmNoIHJlcXVpcmVtZW50czogc2VsZWN0aW9uIG11c3QgaGF2ZSBh
IGxlbmd0aCA+PSAxLCBiZWdpbiBiZWZvcmUKKyAgICAgICAgLy8gdGhlIGN1cnJlbnQgc2VsZWN0
aW9uIChpZiBzZWFyY2hpbmcgZm9yd2FyZHMpIG9yIGFmdGVyIChpZiBzZWFyY2hpbmcgYmFja3dh
cmRzKS4KKyAgICAgICAgaW50IGluaXRpYWxTZWxlY3Rpb25MZW5ndGggPSBbW2luaXRpYWxTZWxl
Y3Rpb24gc3RyaW5nXSBsZW5ndGhdOworICAgICAgICBpZiAoc2VhcmNoRm9yd2FyZCkgeworICAg
ICAgICAgICAgW3NlbGVjdGlvbkZvckluaXRpYWxTZWFyY2ggZXh0ZW5kU2VsZWN0aW9uQXRTdGFy
dDoxXTsKKyAgICAgICAgICAgIFtzZWxlY3Rpb25Gb3JJbml0aWFsU2VhcmNoIGV4dGVuZFNlbGVj
dGlvbkF0RW5kOi1pbml0aWFsU2VsZWN0aW9uTGVuZ3RoXTsKKyAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgIFtzZWxlY3Rpb25Gb3JJbml0aWFsU2VhcmNoIGV4dGVuZFNlbGVjdGlvbkF0RW5k
OjFdOworICAgICAgICAgICAgW3NlbGVjdGlvbkZvckluaXRpYWxTZWFyY2ggZXh0ZW5kU2VsZWN0
aW9uQXRTdGFydDotaW5pdGlhbFNlbGVjdGlvbkxlbmd0aF07CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBQREZTZWxlY3Rpb24gKmZvdW5kU2VsZWN0aW9uID0gW2RvY3VtZW50IGZpbmRTdHJpbmc6
dGFyZ2V0IGZyb21TZWxlY3Rpb246c2VsZWN0aW9uRm9ySW5pdGlhbFNlYXJjaCB3aXRoT3B0aW9u
czpvcHRpb25zXTsKKyAgICBbc2VsZWN0aW9uRm9ySW5pdGlhbFNlYXJjaCByZWxlYXNlXTsKKwor
ICAgIC8vIElmIHdlIGZpcnN0IHNlYXJjaGVkIGluIHRoZSBzZWxlY3Rpb24sIGFuZCB3ZSBmb3Vu
ZCB0aGUgc2VsZWN0aW9uLCBzZWFyY2ggYWdhaW4gZnJvbSBqdXN0IHBhc3QgdGhlIHNlbGVjdGlv
bi4KKyAgICBpZiAoc3RhcnRJblNlbGVjdGlvbiAmJiBbZm91bmRTZWxlY3Rpb24gaXNFcXVhbDpp
bml0aWFsU2VsZWN0aW9uXSkKKyAgICAgICAgZm91bmRTZWxlY3Rpb24gPSBbZG9jdW1lbnQgZmlu
ZFN0cmluZzp0YXJnZXQgZnJvbVNlbGVjdGlvbjppbml0aWFsU2VsZWN0aW9uIHdpdGhPcHRpb25z
Om9wdGlvbnNdOworICAgICAgICAKKyAgICBpZiAoIWZvdW5kU2VsZWN0aW9uICYmIHdyYXBTZWFy
Y2gpCisgICAgICAgIGZvdW5kU2VsZWN0aW9uID0gW2RvY3VtZW50IGZpbmRTdHJpbmc6dGFyZ2V0
IGZyb21TZWxlY3Rpb246bmlsIHdpdGhPcHRpb25zOm9wdGlvbnNdOworICAgICAgICAKKyAgICBy
ZXR1cm4gZm91bmRTZWxlY3Rpb247Cit9CisKK2Jvb2wgUERGUGx1Z2luOjpmaW5kU3RyaW5nKGNv
bnN0IFN0cmluZyYgdGFyZ2V0LCBXZWJDb3JlOjpGaW5kT3B0aW9ucyBvcHRpb25zLCB1bnNpZ25l
ZCBtYXhNYXRjaENvdW50KQoreworICAgIEJPT0wgc2VhcmNoRm9yd2FyZCA9ICEob3B0aW9ucyAm
IEZpbmRPcHRpb25zQmFja3dhcmRzKTsKKyAgICBCT09MIGNhc2VTZW5zaXRpdmUgPSAhKG9wdGlv
bnMgJiBGaW5kT3B0aW9uc0Nhc2VJbnNlbnNpdGl2ZSk7CisgICAgQk9PTCB3cmFwU2VhcmNoID0g
b3B0aW9ucyAmIEZpbmRPcHRpb25zV3JhcEFyb3VuZDsKKworICAgIHVuc2lnbmVkIG1hdGNoQ291
bnQ7CisgICAgaWYgKCFtYXhNYXRjaENvdW50KSB7CisgICAgICAgIC8vIElmIHRoZSBtYXggd2Fz
IHplcm8sIGFueSByZXN1bHQgbWVhbnMgd2UgZXhjZWVkZWQgdGhlIG1heC4gV2UgY2FuIHNraXAg
Y29tcHV0aW5nIHRoZSBhY3R1YWwgY291bnQuCisgICAgICAgIG1hdGNoQ291bnQgPSBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oa1dLTW9yZVRoYW5NYXhpbXVtTWF0Y2hDb3VudCk7CisgICAgfSBlbHNl
IHsKKyAgICAgICAgbWF0Y2hDb3VudCA9IGNvdW50RmluZE1hdGNoZXModGFyZ2V0LCBvcHRpb25z
LCBtYXhNYXRjaENvdW50KTsKKyAgICAgICAgaWYgKG1hdGNoQ291bnQgPiBtYXhNYXRjaENvdW50
KQorICAgICAgICAgICAgbWF0Y2hDb3VudCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihrV0tNb3Jl
VGhhbk1heGltdW1NYXRjaENvdW50KTsKKyAgICB9CisKKyAgICBpZiAodGFyZ2V0ID09IGVtcHR5
U3RyaW5nKCkpIHsKKyAgICAgICAgUERGU2VsZWN0aW9uKiBzZWFyY2hTZWxlY3Rpb24gPSBbbV9w
ZGZMYXllckNvbnRyb2xsZXIuZ2V0KCkgc2VhcmNoU2VsZWN0aW9uXTsKKyAgICAgICAgW21fcGRm
TGF5ZXJDb250cm9sbGVyLmdldCgpIGZpbmRTdHJpbmc6dGFyZ2V0IGNhc2VTZW5zaXRpdmU6Y2Fz
ZVNlbnNpdGl2ZSBoaWdobGlnaHRNYXRjaGVzOllFU107CisgICAgICAgIFttX3BkZkxheWVyQ29u
dHJvbGxlci5nZXQoKSBzZXRTZWFyY2hTZWxlY3Rpb246c2VhcmNoU2VsZWN0aW9uXTsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmIChtX2xhc3RGb3VuZFN0cmluZyA9PSB0
YXJnZXQpIHsKKyAgICAgICAgUERGU2VsZWN0aW9uICpzZWxlY3Rpb24gPSBuZXh0TWF0Y2hGb3JT
dHJpbmcodGFyZ2V0LCBzZWFyY2hGb3J3YXJkLCBjYXNlU2Vuc2l0aXZlLCB3cmFwU2VhcmNoLCBb
bV9wZGZMYXllckNvbnRyb2xsZXIuZ2V0KCkgc2VhcmNoU2VsZWN0aW9uXSwgTk8pOworICAgICAg
ICBpZiAoIXNlbGVjdGlvbikKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBb
bV9wZGZMYXllckNvbnRyb2xsZXIuZ2V0KCkgc2V0U2VhcmNoU2VsZWN0aW9uOnNlbGVjdGlvbl07
CisgICAgICAgIFttX3BkZkxheWVyQ29udHJvbGxlci5nZXQoKSBnb3RvU2VsZWN0aW9uOnNlbGVj
dGlvbl07CisgICAgfSBlbHNlIHsKKyAgICAgICAgW21fcGRmTGF5ZXJDb250cm9sbGVyLmdldCgp
IGZpbmRTdHJpbmc6dGFyZ2V0IGNhc2VTZW5zaXRpdmU6Y2FzZVNlbnNpdGl2ZSBoaWdobGlnaHRN
YXRjaGVzOllFU107CisgICAgICAgIG1fbGFzdEZvdW5kU3RyaW5nID0gdGFyZ2V0OworICAgIH0K
KworICAgIHJldHVybiBtYXRjaENvdW50ID4gMDsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CiAKICNlbmRpZiAvLyBFTkFCTEUoUERGS0lUX1BMVUdJTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvU2ltcGxlUERGUGx1Z2luLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1NpbXBsZVBERlBsdWdpbi5oCmluZGV4IGUx
OGNiMGQuLjJmNWVkMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1
Z2lucy9QREYvU2ltcGxlUERGUGx1Z2luLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BERi9TaW1wbGVQREZQbHVnaW4uaApAQCAtMTc0LDYgKzE3NCw5IEBAIHByb3Rl
Y3RlZDoKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQWxsb3dTY3JpcHRpbmcoKSBPVkVSUklERSB7
IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRBbGxvd05hdmlnYXRpb25G
cm9tRHJhZ3MoKSB7IHJldHVybiB0cnVlOyB9CiAKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGNvdW50
RmluZE1hdGNoZXMoY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6RmluZE9wdGlvbnMsIHVuc2lnbmVk
KSBPVkVSUklERSB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBib29sIGZpbmRTdHJpbmcoY29u
c3QgU3RyaW5nJiwgV2ViQ29yZTo6RmluZE9wdGlvbnMsIHVuc2lnbmVkKSBPVkVSUklERSB7IHJl
dHVybiBmYWxzZTsgfQorCiAgICAgV2ViQ29yZTo6SW50U2l6ZSBtX3Njcm9sbE9mZnNldDsKIAog
cHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaAppbmRl
eCBkYzc1MTUwLi5jYWU2YjY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpbi5oCkBAIC0yNiw2ICsyNiw3IEBACiAjaWZuZGVmIFBsdWdpbl9oCiAjZGVmaW5lIFBs
dWdpbl9oCiAKKyNpbmNsdWRlIDxXZWJDb3JlL0ZpbmRPcHRpb25zLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9HcmFwaGljc0xheWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9LVVJMLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9TY3JvbGxUeXBlcy5oPgpAQCAtMjU0LDYgKzI1NSwxMCBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCBSZXRhaW5QdHI8UERGRG9jdW1lbnQ+IHBkZkRvY3VtZW50Rm9yUHJpbnRpbmco
KSBjb25zdCB7IHJldHVybiAwOyB9CiAjZW5kaWYKIAorICAgIHZpcnR1YWwgdW5zaWduZWQgY291
bnRGaW5kTWF0Y2hlcyhjb25zdCBTdHJpbmcmIHRhcmdldCwgV2ViQ29yZTo6RmluZE9wdGlvbnMs
IHVuc2lnbmVkKSA9IDA7CisKKyAgICB2aXJ0dWFsIGJvb2wgZmluZFN0cmluZyhjb25zdCBTdHJp
bmcmIHRhcmdldCwgV2ViQ29yZTo6RmluZE9wdGlvbnMsIHVuc2lnbmVkKSA9IDA7CisKICAgICB2
aXJ0dWFsIFdlYkNvcmU6OkludFBvaW50IGNvbnZlcnRUb1Jvb3RWaWV3KGNvbnN0IFdlYkNvcmU6
OkludFBvaW50JiBwb2ludEluTG9jYWxDb29yZGluYXRlcykgY29uc3Q7CiAKICAgICB2aXJ0dWFs
IGJvb2wgc2hvdWxkQWx3YXlzQXV0b1N0YXJ0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5o
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmgKaW5kZXgg
MTYyNjk0Mi4uN2Y2MGY3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblByb3h5LmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJQbHVnaW4uaCIK
ICNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9BZmZpbmVUcmFu
c2Zvcm0uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0ZpbmRPcHRpb25zLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9JbnRSZWN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogCkBA
IC0xMjcsNiArMTI4LDkgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlNjcm9sbGJh
ciogaG9yaXpvbnRhbFNjcm9sbGJhcigpOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6U2Nyb2xsYmFy
KiB2ZXJ0aWNhbFNjcm9sbGJhcigpOwogCisgICAgdmlydHVhbCB1bnNpZ25lZCBjb3VudEZpbmRN
YXRjaGVzKGNvbnN0IFN0cmluZyYsIFdlYkNvcmU6OkZpbmRPcHRpb25zLCB1bnNpZ25lZCkgT1ZF
UlJJREUgIHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIGJvb2wgZmluZFN0cmluZyhjb25zdCBT
dHJpbmcmIHRhcmdldCwgV2ViQ29yZTo6RmluZE9wdGlvbnMsIHVuc2lnbmVkKSAgeyByZXR1cm4g
ZmFsc2U7IH0KKwogICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50UG9pbnQgY29udmVydFRvUm9vdFZp
ZXcoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKSBjb25zdCBPVkVSUklERTsKIAogICAgIGZsb2F0
IGNvbnRlbnRzU2NhbGVGYWN0b3IoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCAyZmYzMzkwLi40ZWUyZGMyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCkBAIC03MzYs
NiArNzM2LDE2IEBAIHZvaWQgUGx1Z2luVmlldzo6c2V0UGFyZW50KFNjcm9sbFZpZXcqIHNjcm9s
bFZpZXcpCiAgICAgICAgIGluaXRpYWxpemVQbHVnaW4oKTsKIH0KIAordW5zaWduZWQgUGx1Z2lu
Vmlldzo6Y291bnRGaW5kTWF0Y2hlcyhjb25zdCBTdHJpbmcmIHRhcmdldCwgV2ViQ29yZTo6Rmlu
ZE9wdGlvbnMgb3B0aW9ucywgdW5zaWduZWQgbGltaXQpCit7CisgICAgcmV0dXJuIG1fcGx1Z2lu
LT5jb3VudEZpbmRNYXRjaGVzKHRhcmdldCwgb3B0aW9ucywgbGltaXQpOworfQorCitib29sIFBs
dWdpblZpZXc6OmZpbmRTdHJpbmcoY29uc3QgU3RyaW5nJiB0YXJnZXQsIFdlYkNvcmU6OkZpbmRP
cHRpb25zIG9wdGlvbnMsIHVuc2lnbmVkIG1heE1hdGNoQ291bnQpCit7CisgICAgcmV0dXJuIG1f
cGx1Z2luLT5maW5kU3RyaW5nKHRhcmdldCwgb3B0aW9ucywgbWF4TWF0Y2hDb3VudCk7Cit9CisK
IFBhc3NPd25QdHI8V2ViRXZlbnQ+IFBsdWdpblZpZXc6OmNyZWF0ZVdlYkV2ZW50KE1vdXNlRXZl
bnQqIGV2ZW50KSBjb25zdAogewogICAgIFdlYkV2ZW50OjpUeXBlIHR5cGUgPSBXZWJFdmVudDo6
Tm9UeXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3
LmgKaW5kZXggYWM5NjkyOS4uMjg3Nzc5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiUGx1
Z2luLmgiCiAjaW5jbHVkZSAiUGx1Z2luQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIldlYkZyYW1l
LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9GaW5kT3B0aW9ucy5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
SW1hZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL01lZGlhQ2FuU3RhcnRMaXN0ZW5lci5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvUGx1Z2luVmlld0Jhc2UuaD4KQEAgLTkyLDYgKzkzLDkgQEAgcHVibGlj
OgogCiAgICAgdmlydHVhbCBib29sIGhhbmRsZUVkaXRpbmdDb21tYW5kKGNvbnN0IFN0cmluZyYg
Y29tbWFuZE5hbWUsIGNvbnN0IFN0cmluZyYgYXJndW1lbnQpOwogICAgIHZpcnR1YWwgYm9vbCBp
c0VkaXRpbmdDb21tYW5kRW5hYmxlZChjb25zdCBTdHJpbmcmIGNvbW1hbmROYW1lKTsKKyAgICAK
KyAgICB2aXJ0dWFsIHVuc2lnbmVkIGNvdW50RmluZE1hdGNoZXMoY29uc3QgU3RyaW5nJiB0YXJn
ZXQsIFdlYkNvcmU6OkZpbmRPcHRpb25zLCB1bnNpZ25lZCk7CisgICAgdmlydHVhbCBib29sIGZp
bmRTdHJpbmcoY29uc3QgU3RyaW5nJiB0YXJnZXQsIFdlYkNvcmU6OkZpbmRPcHRpb25zLCB1bnNp
Z25lZCk7CiAKICAgICBib29sIHNob3VsZEFsbG93U2NyaXB0aW5nKCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuY3BwCmluZGV4
IDUzM2FjMmIuLmE3YzUzNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9GaW5kQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIkZpbmRDb250cm9sbGVyLmgiCiAKKyNpbmNsdWRlICJQbHVn
aW5WaWV3LmgiCiAjaW5jbHVkZSAiU2hhcmVhYmxlQml0bWFwLmgiCiAjaW5jbHVkZSAiV0tQYWdl
LmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCkBAIC0zOSw2ICs0MCw3IEBA
CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZVZpZXcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBo
aWNzQ29udGV4dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZS5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvUGx1Z2luRG9jdW1lbnQuaD4KIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwpAQCAtNjUsMTMgKzY3LDMxIEBAIEZpbmRDb250cm9sbGVyOjp+RmluZENv
bnRyb2xsZXIoKQogewogfQogCitzdGF0aWMgUGx1Z2luVmlldyogcGx1Z2luVmlld0ZvckZyYW1l
KEZyYW1lKiBmcmFtZSkKK3sKKyAgICBpZiAoIWZyYW1lLT5kb2N1bWVudCgpLT5pc1BsdWdpbkRv
Y3VtZW50KCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgUGx1Z2luRG9jdW1lbnQqIHBsdWdp
bkRvY3VtZW50ID0gc3RhdGljX2Nhc3Q8UGx1Z2luRG9jdW1lbnQqPihmcmFtZS0+ZG9jdW1lbnQo
KSk7CisgICAgUGx1Z2luVmlldyogcGx1Z2luVmlldyA9IHN0YXRpY19jYXN0PFBsdWdpblZpZXcq
PihwbHVnaW5Eb2N1bWVudC0+cGx1Z2luV2lkZ2V0KCkpOworICAgIHJldHVybiBwbHVnaW5WaWV3
OworfQorCiB2b2lkIEZpbmRDb250cm9sbGVyOjpjb3VudFN0cmluZ01hdGNoZXMoY29uc3QgU3Ry
aW5nJiBzdHJpbmcsIEZpbmRPcHRpb25zIG9wdGlvbnMsIHVuc2lnbmVkIG1heE1hdGNoQ291bnQp
CiB7CiAgICAgaWYgKG1heE1hdGNoQ291bnQgPT0gbnVtZXJpY19saW1pdHM8dW5zaWduZWQ+Ojpt
YXgoKSkKICAgICAgICAgLS1tYXhNYXRjaENvdW50OwogICAgIAotICAgIHVuc2lnbmVkIG1hdGNo
Q291bnQgPSBtX3dlYlBhZ2UtPmNvcmVQYWdlKCktPm1hcmtBbGxNYXRjaGVzRm9yVGV4dChzdHJp
bmcsIGNvcmUob3B0aW9ucyksIGZhbHNlLCBtYXhNYXRjaENvdW50ICsgMSk7Ci0gICAgbV93ZWJQ
YWdlLT5jb3JlUGFnZSgpLT51bm1hcmtBbGxUZXh0TWF0Y2hlcygpOworICAgIFBsdWdpblZpZXcq
IHBsdWdpblZpZXcgPSBwbHVnaW5WaWV3Rm9yRnJhbWUobV93ZWJQYWdlLT5tYWluRnJhbWUoKSk7
CisgICAgCisgICAgdW5zaWduZWQgbWF0Y2hDb3VudDsKKworICAgIGlmIChwbHVnaW5WaWV3KQor
ICAgICAgICBtYXRjaENvdW50ID0gcGx1Z2luVmlldy0+Y291bnRGaW5kTWF0Y2hlcyhzdHJpbmcs
IGNvcmUob3B0aW9ucyksIG1heE1hdGNoQ291bnQgKyAxKTsKKyAgICBlbHNlIHsKKyAgICAgICAg
bWF0Y2hDb3VudCA9IG1fd2ViUGFnZS0+Y29yZVBhZ2UoKS0+bWFya0FsbE1hdGNoZXNGb3JUZXh0
KHN0cmluZywgY29yZShvcHRpb25zKSwgZmFsc2UsIG1heE1hdGNoQ291bnQgKyAxKTsKKyAgICAg
ICAgbV93ZWJQYWdlLT5jb3JlUGFnZSgpLT51bm1hcmtBbGxUZXh0TWF0Y2hlcygpOworICAgIH0K
IAogICAgIC8vIENoZWNrIGlmIHdlIGhhdmUgbW9yZSBtYXRjaGVzIHRoYW4gYWxsb3dlZC4KICAg
ICBpZiAobWF0Y2hDb3VudCA+IG1heE1hdGNoQ291bnQpCkBAIC05MywxMSArMTEzLDE0IEBAIHN0
YXRpYyBGcmFtZSogZnJhbWVXaXRoU2VsZWN0aW9uKFBhZ2UqIHBhZ2UpCiB2b2lkIEZpbmRDb250
cm9sbGVyOjp1cGRhdGVGaW5kVUlBZnRlclBhZ2VTY3JvbGwoYm9vbCBmb3VuZCwgY29uc3QgU3Ry
aW5nJiBzdHJpbmcsIEZpbmRPcHRpb25zIG9wdGlvbnMsIHVuc2lnbmVkIG1heE1hdGNoQ291bnQp
CiB7CiAgICAgRnJhbWUqIHNlbGVjdGVkRnJhbWUgPSBmcmFtZVdpdGhTZWxlY3Rpb24obV93ZWJQ
YWdlLT5jb3JlUGFnZSgpKTsKKyAgICAKKyAgICBQbHVnaW5WaWV3KiBwbHVnaW5WaWV3ID0gcGx1
Z2luVmlld0ZvckZyYW1lKG1fd2ViUGFnZS0+bWFpbkZyYW1lKCkpOwogCiAgICAgYm9vbCBzaG91
bGRTaG93T3ZlcmxheSA9IGZhbHNlOwogCiAgICAgaWYgKCFmb3VuZCkgewotICAgICAgICBtX3dl
YlBhZ2UtPmNvcmVQYWdlKCktPnVubWFya0FsbFRleHRNYXRjaGVzKCk7CisgICAgICAgIGlmICgh
cGx1Z2luVmlldykKKyAgICAgICAgICAgIG1fd2ViUGFnZS0+Y29yZVBhZ2UoKS0+dW5tYXJrQWxs
VGV4dE1hdGNoZXMoKTsKIAogICAgICAgICAvLyBDbGVhciB0aGUgc2VsZWN0aW9uLgogICAgICAg
ICBpZiAoc2VsZWN0ZWRGcmFtZSkKQEAgLTExNiw4ICsxMzksMTMgQEAgdm9pZCBGaW5kQ29udHJv
bGxlcjo6dXBkYXRlRmluZFVJQWZ0ZXJQYWdlU2Nyb2xsKGJvb2wgZm91bmQsIGNvbnN0IFN0cmlu
ZyYgc3RyaW4KICAgICAgICAgICAgIGlmIChtYXhNYXRjaENvdW50ID09IG51bWVyaWNfbGltaXRz
PHVuc2lnbmVkPjo6bWF4KCkpCiAgICAgICAgICAgICAgICAgLS1tYXhNYXRjaENvdW50OwogCi0g
ICAgICAgICAgICBtX3dlYlBhZ2UtPmNvcmVQYWdlKCktPnVubWFya0FsbFRleHRNYXRjaGVzKCk7
Ci0gICAgICAgICAgICBtYXRjaENvdW50ID0gbV93ZWJQYWdlLT5jb3JlUGFnZSgpLT5tYXJrQWxs
TWF0Y2hlc0ZvclRleHQoc3RyaW5nLCBjb3JlKG9wdGlvbnMpLCBzaG91bGRTaG93SGlnaGxpZ2h0
LCBtYXhNYXRjaENvdW50ICsgMSk7CisgICAgICAgICAgICBpZiAocGx1Z2luVmlldykgeworICAg
ICAgICAgICAgICAgIG1hdGNoQ291bnQgPSBwbHVnaW5WaWV3LT5jb3VudEZpbmRNYXRjaGVzKHN0
cmluZywgY29yZShvcHRpb25zKSwgbWF4TWF0Y2hDb3VudCArIDEpOworICAgICAgICAgICAgICAg
IHNob3VsZFNob3dPdmVybGF5ID0gZmFsc2U7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgIG1fd2ViUGFnZS0+Y29yZVBhZ2UoKS0+dW5tYXJrQWxsVGV4dE1hdGNoZXMoKTsK
KyAgICAgICAgICAgICAgICBtYXRjaENvdW50ID0gbV93ZWJQYWdlLT5jb3JlUGFnZSgpLT5tYXJr
QWxsTWF0Y2hlc0ZvclRleHQoc3RyaW5nLCBjb3JlKG9wdGlvbnMpLCBzaG91bGRTaG93SGlnaGxp
Z2h0LCBtYXhNYXRjaENvdW50ICsgMSk7CisgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIC8v
IENoZWNrIGlmIHdlIGhhdmUgbW9yZSBtYXRjaGVzIHRoYW4gYWxsb3dlZC4KICAgICAgICAgICAg
IGlmIChtYXRjaENvdW50ID4gbWF4TWF0Y2hDb3VudCkgewpAQCAtMTU1LDcgKzE4MywxNCBAQCB2
b2lkIEZpbmRDb250cm9sbGVyOjp1cGRhdGVGaW5kVUlBZnRlclBhZ2VTY3JvbGwoYm9vbCBmb3Vu
ZCwgY29uc3QgU3RyaW5nJiBzdHJpbgogCiB2b2lkIEZpbmRDb250cm9sbGVyOjpmaW5kU3RyaW5n
KGNvbnN0IFN0cmluZyYgc3RyaW5nLCBGaW5kT3B0aW9ucyBvcHRpb25zLCB1bnNpZ25lZCBtYXhN
YXRjaENvdW50KQogewotICAgIGJvb2wgZm91bmQgPSBtX3dlYlBhZ2UtPmNvcmVQYWdlKCktPmZp
bmRTdHJpbmcoc3RyaW5nLCBjb3JlKG9wdGlvbnMpKTsKKyAgICBQbHVnaW5WaWV3KiBwbHVnaW5W
aWV3ID0gcGx1Z2luVmlld0ZvckZyYW1lKG1fd2ViUGFnZS0+bWFpbkZyYW1lKCkpOworICAgIAor
ICAgIGJvb2wgZm91bmQgPSBmYWxzZTsKKyAgICAKKyAgICBpZiAocGx1Z2luVmlldykKKyAgICAg
ICAgZm91bmQgPSBwbHVnaW5WaWV3LT5maW5kU3RyaW5nKHN0cmluZywgY29yZShvcHRpb25zKSwg
bWF4TWF0Y2hDb3VudCk7CisgICAgZWxzZQorICAgICAgICBmb3VuZCA9IG1fd2ViUGFnZS0+Y29y
ZVBhZ2UoKS0+ZmluZFN0cmluZyhzdHJpbmcsIGNvcmUob3B0aW9ucykpOwogCiAgICAgbV93ZWJQ
YWdlLT5kcmF3aW5nQXJlYSgpLT5kaXNwYXRjaEFmdGVyRW5zdXJpbmdVcGRhdGVkU2Nyb2xsUG9z
aXRpb24oV1RGOjpiaW5kKCZGaW5kQ29udHJvbGxlcjo6dXBkYXRlRmluZFVJQWZ0ZXJQYWdlU2Ny
b2xsLCB0aGlzLCBmb3VuZCwgc3RyaW5nLCBvcHRpb25zLCBtYXhNYXRjaENvdW50KSk7CiB9CkBA
IC0xNjUsNyArMjAwLDEzIEBAIHZvaWQgRmluZENvbnRyb2xsZXI6OmhpZGVGaW5kVUkoKQogICAg
IGlmIChtX2ZpbmRQYWdlT3ZlcmxheSkKICAgICAgICAgbV93ZWJQYWdlLT51bmluc3RhbGxQYWdl
T3ZlcmxheShtX2ZpbmRQYWdlT3ZlcmxheSwgZmFsc2UpOwogCi0gICAgbV93ZWJQYWdlLT5jb3Jl
UGFnZSgpLT51bm1hcmtBbGxUZXh0TWF0Y2hlcygpOworICAgIFBsdWdpblZpZXcqIHBsdWdpblZp
ZXcgPSBwbHVnaW5WaWV3Rm9yRnJhbWUobV93ZWJQYWdlLT5tYWluRnJhbWUoKSk7CisgICAgCisg
ICAgaWYgKHBsdWdpblZpZXcpCisgICAgICAgIHBsdWdpblZpZXctPmZpbmRTdHJpbmcoZW1wdHlT
dHJpbmcoKSwgMCwgMCk7CisgICAgZWxzZQorICAgICAgICBtX3dlYlBhZ2UtPmNvcmVQYWdlKCkt
PnVubWFya0FsbFRleHRNYXRjaGVzKCk7CisgICAgCiAgICAgaGlkZUZpbmRJbmRpY2F0b3IoKTsK
IH0KIAo=
</data>
<flag name="review"
          id="197987"
          type_id="1"
          status="+"
          setter="ap"
    />
    <flag name="commit-queue"
          id="197993"
          type_id="3"
          status="-"
          setter="ap"
    />
          </attachment>
      

    </bug>

</bugzilla>