<?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>123205</bug_id>
          
          <creation_ts>2013-10-23 06:42:31 -0700</creation_ts>
          <short_desc>Adding mock class to test RTCDataChannelHandler</short_desc>
          <delta_ts>2013-11-13 11:13:29 -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>WebCore Misc.</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>124288</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Thiago de Barros Lacerda">thiago.lacerda</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hta</cc>
    
    <cc>jer.noble</cc>
    
    <cc>rakuco</cc>
    
    <cc>tommyw</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>942666</commentid>
    <comment_count>0</comment_count>
    <who name="Thiago de Barros Lacerda">thiago.lacerda</who>
    <bug_when>2013-10-23 06:42:31 -0700</bug_when>
    <thetext>Now RTCPeerConnectionHandler-datachannel LayouTest can run properly.
Also updated the expected file, removing the reliable property check (which was removed in the spec)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>942667</commentid>
    <comment_count>1</comment_count>
      <attachid>214955</attachid>
    <who name="Thiago de Barros Lacerda">thiago.lacerda</who>
    <bug_when>2013-10-23 06:53:35 -0700</bug_when>
    <thetext>Created attachment 214955
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>942725</commentid>
    <comment_count>2</comment_count>
      <attachid>214955</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-10-23 10:18:53 -0700</bug_when>
    <thetext>Comment on attachment 214955
Patch

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

&gt; Source/WebCore/ChangeLog:11
&gt; +        No new tests needed.

I would say &quot;Existing tests updated&quot; instead.

&gt; Source/WebCore/ChangeLog:16
&gt; +        * platform/mock/RTCDataChannelHandlerMock.cpp: Copied from Source/WebCore/platform/mock/RTCNotifiersMock.cpp.
&gt; +        * platform/mock/RTCDataChannelHandlerMock.h: Copied from Source/WebCore/platform/mock/RTCNotifiersMock.h.

Are these &quot;Copied from&quot; comments correct?

&gt; Source/WebCore/platform/mock/RTCDataChannelHandlerMock.h:51
&gt; +    String label() OVERRIDE { return m_label; }
&gt; +    bool ordered() OVERRIDE { return m_ordered; }
&gt; +    unsigned short maxRetransmitTime() OVERRIDE { return m_maxRetransmitTime; }
&gt; +    unsigned short maxRetransmits() OVERRIDE { return m_maxRetransmits; }
&gt; +    String protocol() OVERRIDE { return m_protocol; }
&gt; +    bool negotiated() OVERRIDE { return m_negotiated; }
&gt; +    unsigned short id() OVERRIDE { return m_id; }
&gt; +    unsigned long bufferedAmount() OVERRIDE { return 0; }

These should all be virtual.

&gt; Source/WebCore/platform/mock/RTCDataChannelHandlerMock.h:66
&gt; +    String m_label;
&gt; +    bool m_ordered;
&gt; +    unsigned short m_maxRetransmitTime;
&gt; +    unsigned short m_maxRetransmits;
&gt; +    String m_protocol;
&gt; +    bool m_negotiated;
&gt; +    unsigned short m_id;

Nit: it may be slightly more space efficient to have the &quot;short&quot; and &quot;bool&quot; members last.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>942728</commentid>
    <comment_count>3</comment_count>
    <who name="Thiago de Barros Lacerda">thiago.lacerda</who>
    <bug_when>2013-10-23 10:23:36 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 214955 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=214955&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:11
&gt; &gt; +        No new tests needed.
&gt; 
&gt; I would say &quot;Existing tests updated&quot; instead.
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:16
&gt; &gt; +        * platform/mock/RTCDataChannelHandlerMock.cpp: Copied from Source/WebCore/platform/mock/RTCNotifiersMock.cpp.
&gt; &gt; +        * platform/mock/RTCDataChannelHandlerMock.h: Copied from Source/WebCore/platform/mock/RTCNotifiersMock.h.
&gt; 
&gt; Are these &quot;Copied from&quot; comments correct?

Git thinks that I copied them, maybe because of its similarity check. But I didn&apos;t not copy. Should I remove them?
&gt; 
&gt; &gt; Source/WebCore/platform/mock/RTCDataChannelHandlerMock.h:51
&gt; &gt; +    String label() OVERRIDE { return m_label; }
&gt; &gt; +    bool ordered() OVERRIDE { return m_ordered; }
&gt; &gt; +    unsigned short maxRetransmitTime() OVERRIDE { return m_maxRetransmitTime; }
&gt; &gt; +    unsigned short maxRetransmits() OVERRIDE { return m_maxRetransmits; }
&gt; &gt; +    String protocol() OVERRIDE { return m_protocol; }
&gt; &gt; +    bool negotiated() OVERRIDE { return m_negotiated; }
&gt; &gt; +    unsigned short id() OVERRIDE { return m_id; }
&gt; &gt; +    unsigned long bufferedAmount() OVERRIDE { return 0; }
&gt; 
&gt; These should all be virtual.

Why? The class is final, so no class can use it as superclass and override its methods.

&gt; 
&gt; &gt; Source/WebCore/platform/mock/RTCDataChannelHandlerMock.h:66
&gt; &gt; +    String m_label;
&gt; &gt; +    bool m_ordered;
&gt; &gt; +    unsigned short m_maxRetransmitTime;
&gt; &gt; +    unsigned short m_maxRetransmits;
&gt; &gt; +    String m_protocol;
&gt; &gt; +    bool m_negotiated;
&gt; &gt; +    unsigned short m_id;
&gt; 
&gt; Nit: it may be slightly more space efficient to have the &quot;short&quot; and &quot;bool&quot; members last.

OK</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>942731</commentid>
    <comment_count>4</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-10-23 10:36:45 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (In reply to comment #2)
&gt; &gt; (From update of attachment 214955 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=214955&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/ChangeLog:11
&gt; &gt; &gt; +        No new tests needed.
&gt; &gt; 
&gt; &gt; I would say &quot;Existing tests updated&quot; instead.
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/ChangeLog:16
&gt; &gt; &gt; +        * platform/mock/RTCDataChannelHandlerMock.cpp: Copied from Source/WebCore/platform/mock/RTCNotifiersMock.cpp.
&gt; &gt; &gt; +        * platform/mock/RTCDataChannelHandlerMock.h: Copied from Source/WebCore/platform/mock/RTCNotifiersMock.h.
&gt; &gt; 
&gt; &gt; Are these &quot;Copied from&quot; comments correct?
&gt; 
&gt; Git thinks that I copied them, maybe because of its similarity check. But I didn&apos;t not copy. Should I remove them?
&gt; &gt; 

  I would remove the comments because they are incorrect.

&gt; &gt; &gt; Source/WebCore/platform/mock/RTCDataChannelHandlerMock.h:51
&gt; &gt; &gt; +    String label() OVERRIDE { return m_label; }
&gt; &gt; &gt; +    bool ordered() OVERRIDE { return m_ordered; }
&gt; &gt; &gt; +    unsigned short maxRetransmitTime() OVERRIDE { return m_maxRetransmitTime; }
&gt; &gt; &gt; +    unsigned short maxRetransmits() OVERRIDE { return m_maxRetransmits; }
&gt; &gt; &gt; +    String protocol() OVERRIDE { return m_protocol; }
&gt; &gt; &gt; +    bool negotiated() OVERRIDE { return m_negotiated; }
&gt; &gt; &gt; +    unsigned short id() OVERRIDE { return m_id; }
&gt; &gt; &gt; +    unsigned long bufferedAmount() OVERRIDE { return 0; }
&gt; &gt; 
&gt; &gt; These should all be virtual.
&gt; 
&gt; Why? The class is final, so no class can use it as superclass and override its methods.
&gt; 

  Oops :-O</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>942732</commentid>
    <comment_count>5</comment_count>
    <who name="Thiago de Barros Lacerda">thiago.lacerda</who>
    <bug_when>2013-10-23 10:39:28 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #3)
&gt; &gt; (In reply to comment #2)
&gt; &gt; &gt; (From update of attachment 214955 [details] [details] [details])
&gt; &gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=214955&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Source/WebCore/ChangeLog:11
&gt; &gt; &gt; &gt; +        No new tests needed.
&gt; &gt; &gt; 
&gt; &gt; &gt; I would say &quot;Existing tests updated&quot; instead.
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Source/WebCore/ChangeLog:16
&gt; &gt; &gt; &gt; +        * platform/mock/RTCDataChannelHandlerMock.cpp: Copied from Source/WebCore/platform/mock/RTCNotifiersMock.cpp.
&gt; &gt; &gt; &gt; +        * platform/mock/RTCDataChannelHandlerMock.h: Copied from Source/WebCore/platform/mock/RTCNotifiersMock.h.
&gt; &gt; &gt; 
&gt; &gt; &gt; Are these &quot;Copied from&quot; comments correct?
&gt; &gt; 
&gt; &gt; Git thinks that I copied them, maybe because of its similarity check. But I didn&apos;t not copy. Should I remove them?
&gt; &gt; &gt; 
&gt; 
&gt;   I would remove the comments because they are incorrect.
&gt; 
&gt; &gt; &gt; &gt; Source/WebCore/platform/mock/RTCDataChannelHandlerMock.h:51
&gt; &gt; &gt; &gt; +    String label() OVERRIDE { return m_label; }
&gt; &gt; &gt; &gt; +    bool ordered() OVERRIDE { return m_ordered; }
&gt; &gt; &gt; &gt; +    unsigned short maxRetransmitTime() OVERRIDE { return m_maxRetransmitTime; }
&gt; &gt; &gt; &gt; +    unsigned short maxRetransmits() OVERRIDE { return m_maxRetransmits; }
&gt; &gt; &gt; &gt; +    String protocol() OVERRIDE { return m_protocol; }
&gt; &gt; &gt; &gt; +    bool negotiated() OVERRIDE { return m_negotiated; }
&gt; &gt; &gt; &gt; +    unsigned short id() OVERRIDE { return m_id; }
&gt; &gt; &gt; &gt; +    unsigned long bufferedAmount() OVERRIDE { return 0; }
&gt; &gt; &gt; 
&gt; &gt; &gt; These should all be virtual.
&gt; &gt; 
&gt; &gt; Why? The class is final, so no class can use it as superclass and override its methods.
&gt; &gt; 
&gt; 
&gt;   Oops :-O

By looking at the webkit source, I could notice that they put the virtual keyword anyway, maybe is it a style? Should I add virtual?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>942739</commentid>
    <comment_count>6</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-10-23 10:43:46 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; By looking at the webkit source, I could notice that they put the virtual keyword anyway, maybe is it a style? Should I add virtual?

I think so. It is slightly pedantic, but I think it makes it more obvious and it what is typically done in WebKit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>942743</commentid>
    <comment_count>7</comment_count>
    <who name="Thiago de Barros Lacerda">thiago.lacerda</who>
    <bug_when>2013-10-23 10:51:11 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #5)
&gt; &gt; By looking at the webkit source, I could notice that they put the virtual keyword anyway, maybe is it a style? Should I add virtual?
&gt; 
&gt; I think so. It is slightly pedantic, but I think it makes it more obvious and it what is typically done in WebKit.

np :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>942845</commentid>
    <comment_count>8</comment_count>
      <attachid>214998</attachid>
    <who name="Thiago de Barros Lacerda">thiago.lacerda</who>
    <bug_when>2013-10-23 14:38:02 -0700</bug_when>
    <thetext>Created attachment 214998
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>942860</commentid>
    <comment_count>9</comment_count>
      <attachid>214998</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-10-23 15:25:04 -0700</bug_when>
    <thetext>Comment on attachment 214998
Patch

Clearing flags on attachment: 214998

Committed r157892: &lt;http://trac.webkit.org/changeset/157892&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>942861</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-10-23 15:25:06 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>214955</attachid>
            <date>2013-10-23 06:53:35 -0700</date>
            <delta_ts>2013-10-23 14:37:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-123205-20131023105334.patch</filename>
            <type>text/plain</type>
            <size>16684</size>
            <attacher name="Thiago de Barros Lacerda">thiago.lacerda</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU3ODU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTllOTNiNjQwZGY2Y2Jm
NTY0NGYxYWUzYjViNjJmZDE4M2E3NDhjZC4uZDA5MWVkNjc3OWYwZDEwZGViOWI5OTJiNDRiYjY3
Mzk5NjEyYzEwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEzLTEwLTIzICBUaGlh
Z28gZGUgQmFycm9zIExhY2VyZGEgIDx0aGlhZ28ubGFjZXJkYUBvcGVuYm9zc2Eub3JnPgorCisg
ICAgICAgIEFkZGluZyBtb2NrIGNsYXNzIHRvIHRlc3QgUlRDRGF0YUNoYW5uZWxIYW5kbGVyCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjMyMDUKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBOb3cgUlRDUGVl
ckNvbm5lY3Rpb25IYW5kbGVyLWRhdGFjaGFubmVsIExheW91VGVzdCBjYW4gcnVuIHByb3Blcmx5
LgorICAgICAgICBBbHNvIHVwZGF0ZWQgdGhlIGV4cGVjdGVkIGZpbGUsIHJlbW92aW5nIHRoZSBy
ZWxpYWJsZSBwcm9wZXJ0eSBjaGVjayAod2hpY2ggd2FzIHJlbW92ZWQgaW4gdGhlIHNwZWMpCisK
KyAgICAgICAgTm8gbmV3IHRlc3RzIG5lZWRlZC4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0
OgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsSGFuZGxlckNs
aWVudC5oOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9j
ay5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUlRDTm90aWZp
ZXJzTW9jay5jcHAuCisgICAgICAgICogcGxhdGZvcm0vbW9jay9SVENEYXRhQ2hhbm5lbEhhbmRs
ZXJNb2NrLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUlRDTm90
aWZpZXJzTW9jay5oLgorICAgICAgICAqIHBsYXRmb3JtL21vY2svUlRDTm90aWZpZXJzTW9jay5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVEYXRhQ2hhbm5lbE5vdGlmaWVyOjpSZW1vdGVE
YXRhQ2hhbm5lbE5vdGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZURhdGFDaGFubmVs
Tm90aWZpZXI6OmZpcmUpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YUNoYW5uZWxTdGF0ZU5vdGlm
aWVyOjpEYXRhQ2hhbm5lbFN0YXRlTm90aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YUNo
YW5uZWxTdGF0ZU5vdGlmaWVyOjpmaXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL1JUQ05v
dGlmaWVyc01vY2suaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL1JUQ1BlZXJDb25uZWN0aW9u
SGFuZGxlck1vY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRDUGVlckNvbm5lY3Rpb25IYW5k
bGVyTW9jazo6Y3JlYXRlRGF0YUNoYW5uZWwpOgorCiAyMDEzLTEwLTIzICBLcnp5c3p0b2YgV29s
YW5za2kgIDxrLndvbGFuc2tpQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtHVEtdIGFjY2Vzc2li
aWxpdHkvc2VsZi1yZWZlcmVuY2luZy1hcmlhLWxhYmVsbGVkYnkuaHRtbCBpcyBmYWlsaW5nCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3Jl
L0NNYWtlTGlzdHMudHh0CmluZGV4IGNhNDg2ODQzN2JkN2RjNGNjOGUzZjEwYTU4NDAxMTliYTQ3
ZDljNTguLjI0YzVlNmU3NWVhYTVhOTFjOTAyMWJlYjhmMzZlOGY3NWY4YjY4ZjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0CkBAIC0xOTk2LDYgKzE5OTYsNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAg
ICAgcGxhdGZvcm0vbW9jay9EZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suY3BwCiAgICAgcGxh
dGZvcm0vbW9jay9HZW9sb2NhdGlvbkNsaWVudE1vY2suY3BwCiAgICAgcGxhdGZvcm0vbW9jay9N
b2NrTWVkaWFTdHJlYW1DZW50ZXIuY3BwCisgICAgcGxhdGZvcm0vbW9jay9SVENEYXRhQ2hhbm5l
bEhhbmRsZXJNb2NrLmNwcAogICAgIHBsYXRmb3JtL21vY2svUlRDTm90aWZpZXJzTW9jay5jcHAK
ICAgICBwbGF0Zm9ybS9tb2NrL1JUQ1BlZXJDb25uZWN0aW9uSGFuZGxlck1vY2suY3BwCiAgICAg
cGxhdGZvcm0vbW9jay9TY3JvbGxiYXJUaGVtZU1vY2suY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsSGFu
ZGxlckNsaWVudC5oCmluZGV4IGQ5N2EwMzI2OTM3ZDRjYWI0ODA2Yzk2Y2VhNTQwMjliODQyNTY4
YWYuLjI4OGVlMTZmMzM5YmRkMjY4OWRlNjY3YWRhODVhZTBkYTgzOTNlNzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsSGFuZGxl
ckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0Rh
dGFDaGFubmVsSGFuZGxlckNsaWVudC5oCkBAIC0yNyw2ICsyNyw4IEBACiAKICNpZiBFTkFCTEUo
TUVESUFfU1RSRUFNKQogCisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50IHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUlRDRGF0YUNoYW5uZWxIYW5k
bGVyTW9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1JUQ0RhdGFDaGFubmVs
SGFuZGxlck1vY2suY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdhMTI3NjE5ZGI2MTZhZGFiMDIxOTZkNjI2NWVj
ZjY2MTE5ZmJkN2UKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
b2NrL1JUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2suY3BwCkBAIC0wLDAgKzEsNzggQEAKKy8qCisg
KiAgQ29weXJpZ2h0IChDKSAyMDEzIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lk
aWFyeSgtaWVzKS4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKwor
I2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJSVENEYXRhQ2hhbm5lbEhhbmRs
ZXJNb2NrLmgiCisKKyNpbmNsdWRlICJSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQuaCIKKyNp
bmNsdWRlICJSVENOb3RpZmllcnNNb2NrLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUlRD
RGF0YUNoYW5uZWxIYW5kbGVyTW9jazo6UlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jayhjb25zdCBT
dHJpbmcmIGxhYmVsLCBjb25zdCBSVENEYXRhQ2hhbm5lbEluaXQmIGluaXQpCisgICAgOiBtX2xh
YmVsKGxhYmVsKQorICAgICwgbV9vcmRlcmVkKGluaXQub3JkZXJlZCkKKyAgICAsIG1fbWF4UmV0
cmFuc21pdFRpbWUoaW5pdC5tYXhSZXRyYW5zbWl0VGltZSkKKyAgICAsIG1fbWF4UmV0cmFuc21p
dHMoaW5pdC5tYXhSZXRyYW5zbWl0cykKKyAgICAsIG1fcHJvdG9jb2woaW5pdC5wcm90b2NvbCkK
KyAgICAsIG1fbmVnb3RpYXRlZChpbml0Lm5lZ290aWF0ZWQpCisgICAgLCBtX2lkKGluaXQuaWQp
Cit7Cit9CisKK3ZvaWQgUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jazo6c2V0Q2xpZW50KFJUQ0Rh
dGFDaGFubmVsSGFuZGxlckNsaWVudCogY2xpZW50KQoreworICAgIGlmICghY2xpZW50KQorICAg
ICAgICByZXR1cm47CisKKyAgICBtX2NsaWVudCA9IGNsaWVudDsKKyAgICBSZWZQdHI8RGF0YUNo
YW5uZWxTdGF0ZU5vdGlmaWVyPiBub3RpZmllciA9IGFkb3B0UmVmKG5ldyBEYXRhQ2hhbm5lbFN0
YXRlTm90aWZpZXIobV9jbGllbnQsIFJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudDo6UmVhZHlT
dGF0ZU9wZW4pKTsKKyAgICBtX3RpbWVyRXZlbnRzLmFwcGVuZChhZG9wdFJlZihuZXcgVGltZXJF
dmVudCh0aGlzLCBub3RpZmllcikpKTsKK30KKworYm9vbCBSVENEYXRhQ2hhbm5lbEhhbmRsZXJN
b2NrOjpzZW5kU3RyaW5nRGF0YShjb25zdCBTdHJpbmcmIHN0cmluZykKK3sKKyAgICBtX2NsaWVu
dC0+ZGlkUmVjZWl2ZVN0cmluZ0RhdGEoc3RyaW5nKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
Ym9vbCBSVENEYXRhQ2hhbm5lbEhhbmRsZXJNb2NrOjpzZW5kUmF3RGF0YShjb25zdCBjaGFyKiBk
YXRhLCBzaXplX3Qgc2l6ZSkKK3sKKyAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZVJhd0RhdGEoZGF0
YSwgc2l6ZSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgUlRDRGF0YUNoYW5uZWxIYW5k
bGVyTW9jazo6Y2xvc2UoKQoreworICAgIFJlZlB0cjxEYXRhQ2hhbm5lbFN0YXRlTm90aWZpZXI+
IG5vdGlmaWVyID0gYWRvcHRSZWYobmV3IERhdGFDaGFubmVsU3RhdGVOb3RpZmllcihtX2NsaWVu
dCwgUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50OjpSZWFkeVN0YXRlQ2xvc2VkKSk7CisgICAg
bV90aW1lckV2ZW50cy5hcHBlbmQoYWRvcHRSZWYobmV3IFRpbWVyRXZlbnQodGhpcywgbm90aWZp
ZXIpKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShN
RURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1JU
Q0RhdGFDaGFubmVsSGFuZGxlck1vY2suaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2sv
UlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jay5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4ZjA0OWQyODYxNGVlMWI5
M2FlMzA2MDM3MTA3MWU2ZjI0NTFiNjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tb2NrL1JUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2suaApAQCAtMCwwICsxLDcz
IEBACisvKgorICogIENvcHlyaWdodCAoQykgMjAxMyBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3Ig
aXRzIHN1YnNpZGlhcnkoLWllcykuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAor
ICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFJUQ0Rh
dGFDaGFubmVsSGFuZGxlck1vY2tfaAorI2RlZmluZSBSVENEYXRhQ2hhbm5lbEhhbmRsZXJNb2Nr
X2gKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJSVENEYXRhQ2hhbm5l
bEhhbmRsZXIuaCIKKyNpbmNsdWRlICJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaCIKKyNpbmNs
dWRlICJUaW1lckV2ZW50QmFzZWRNb2NrLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xh
c3MgUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jayBGSU5BTCA6IHB1YmxpYyBSVENEYXRhQ2hhbm5l
bEhhbmRsZXIsIHB1YmxpYyBUaW1lckV2ZW50QmFzZWRNb2NrIHsKK3B1YmxpYzoKKyAgICBSVENE
YXRhQ2hhbm5lbEhhbmRsZXJNb2NrKGNvbnN0IFN0cmluZyYsIGNvbnN0IFJUQ0RhdGFDaGFubmVs
SW5pdCYpOworICAgIHZpcnR1YWwgflJUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2soKSB7IH0KKwor
ICAgIHZvaWQgc2V0Q2xpZW50KFJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudCopIE9WRVJSSURF
OworCisgICAgU3RyaW5nIGxhYmVsKCkgT1ZFUlJJREUgeyByZXR1cm4gbV9sYWJlbDsgfQorICAg
IGJvb2wgb3JkZXJlZCgpIE9WRVJSSURFIHsgcmV0dXJuIG1fb3JkZXJlZDsgfQorICAgIHVuc2ln
bmVkIHNob3J0IG1heFJldHJhbnNtaXRUaW1lKCkgT1ZFUlJJREUgeyByZXR1cm4gbV9tYXhSZXRy
YW5zbWl0VGltZTsgfQorICAgIHVuc2lnbmVkIHNob3J0IG1heFJldHJhbnNtaXRzKCkgT1ZFUlJJ
REUgeyByZXR1cm4gbV9tYXhSZXRyYW5zbWl0czsgfQorICAgIFN0cmluZyBwcm90b2NvbCgpIE9W
RVJSSURFIHsgcmV0dXJuIG1fcHJvdG9jb2w7IH0KKyAgICBib29sIG5lZ290aWF0ZWQoKSBPVkVS
UklERSB7IHJldHVybiBtX25lZ290aWF0ZWQ7IH0KKyAgICB1bnNpZ25lZCBzaG9ydCBpZCgpIE9W
RVJSSURFIHsgcmV0dXJuIG1faWQ7IH0KKyAgICB1bnNpZ25lZCBsb25nIGJ1ZmZlcmVkQW1vdW50
KCkgT1ZFUlJJREUgeyByZXR1cm4gMDsgfQorCisgICAgdmlydHVhbCBib29sIHNlbmRTdHJpbmdE
YXRhKGNvbnN0IFN0cmluZyYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBzZW5kUmF3RGF0
YShjb25zdCBjaGFyKiwgc2l6ZV90KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgY2xvc2Uo
KSBPVkVSUklERTsKKworcHJpdmF0ZToKKyAgICBSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQq
IG1fY2xpZW50OworCisgICAgU3RyaW5nIG1fbGFiZWw7CisgICAgYm9vbCBtX29yZGVyZWQ7Cisg
ICAgdW5zaWduZWQgc2hvcnQgbV9tYXhSZXRyYW5zbWl0VGltZTsKKyAgICB1bnNpZ25lZCBzaG9y
dCBtX21heFJldHJhbnNtaXRzOworICAgIFN0cmluZyBtX3Byb3RvY29sOworICAgIGJvb2wgbV9u
ZWdvdGlhdGVkOworICAgIHVuc2lnbmVkIHNob3J0IG1faWQ7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjZW5kaWYgLy8g
UlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9ja19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL1JUQ05vdGlmaWVyc01vY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbW9jay9SVENOb3RpZmllcnNNb2NrLmNwcAppbmRleCBjYzcyNjJhYWFmNTUyZjQxYTRlMzk4
ZWU5NmM0Y2I1YWU0YTU0MjlkLi42Yzg1ZmE1NDQyMTRjM2UwNTY0N2EwYTNjODQ1ZGIwNWE3ZWJk
N2YyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1JUQ05vdGlmaWVy
c01vY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUlRDTm90aWZpZXJz
TW9jay5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUgIlJUQ05vdGlmaWVyc01vY2su
aCIKIAorI2luY2x1ZGUgIlJUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2suaCIKICNpbmNsdWRlICJS
VENTZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlwdG9yLmgiCiAjaW5jbHVkZSAiUlRDU2Vzc2lvbkRl
c2NyaXB0aW9uUmVxdWVzdC5oIgogI2luY2x1ZGUgIlJUQ1ZvaWRSZXF1ZXN0LmgiCkBAIC03Niw2
ICs3NywyNyBAQCB2b2lkIEljZUNvbm5lY3Rpb25Ob3RpZmllcjo6ZmlyZSgpCiAgICAgbV9jbGll
bnQtPmRpZENoYW5nZUljZUNvbm5lY3Rpb25TdGF0ZShtX2Nvbm5lY3Rpb25TdGF0ZSk7CiB9CiAK
K1JlbW90ZURhdGFDaGFubmVsTm90aWZpZXI6OlJlbW90ZURhdGFDaGFubmVsTm90aWZpZXIoUlRD
UGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50KiBjbGllbnQpCisgICAgOiBtX2NsaWVudChjbGll
bnQpCit7Cit9CisKK3ZvaWQgUmVtb3RlRGF0YUNoYW5uZWxOb3RpZmllcjo6ZmlyZSgpCit7Cisg
ICAgbV9jbGllbnQtPmRpZEFkZFJlbW90ZURhdGFDaGFubmVsKGFkb3B0UHRyKG5ldyBSVENEYXRh
Q2hhbm5lbEhhbmRsZXJNb2NrKCJSVENEYXRhQ2hhbm5lbEhhbmRsZXJNb2NrIiwgUlRDRGF0YUNo
YW5uZWxJbml0KCkpKSk7Cit9CisKK0RhdGFDaGFubmVsU3RhdGVOb3RpZmllcjo6RGF0YUNoYW5u
ZWxTdGF0ZU5vdGlmaWVyKFJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudCogY2xpZW50LCBSVENE
YXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQ6OlJlYWR5U3RhdGUgc3RhdGUpCisgICAgOiBtX2NsaWVu
dChjbGllbnQpCisgICAgLCBtX3N0YXRlKHN0YXRlKQoreworfQorCit2b2lkIERhdGFDaGFubmVs
U3RhdGVOb3RpZmllcjo6ZmlyZSgpCit7CisgICAgbV9jbGllbnQtPmRpZENoYW5nZVJlYWR5U3Rh
dGUobV9zdGF0ZSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVO
QUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
b2NrL1JUQ05vdGlmaWVyc01vY2suaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUlRD
Tm90aWZpZXJzTW9jay5oCmluZGV4IDZhYWM1ZGNhZTZiZGRhNWJlYjVmMzIyNDYyMDgyNzY1YTRl
Zjk4NTkuLjk1OTdhZmMxOWU2MzZlNDkxMWJkYWQ1N2JmZDA5NTU2YWFmNzg3ODcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUlRDTm90aWZpZXJzTW9jay5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUlRDTm90aWZpZXJzTW9jay5oCkBAIC0yOCw2
ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogCisjaW5jbHVkZSAiUlRDRGF0
YUNoYW5uZWxIYW5kbGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiUlRDUGVlckNvbm5lY3Rpb25IYW5k
bGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiVGltZXJFdmVudEJhc2VkTW9jay5oIgogI2luY2x1ZGUg
PHd0Zi9QYXNzUmVmUHRyLmg+CkBAIC03Myw2ICs3NCwyNyBAQCBwcml2YXRlOgogICAgIFJUQ1Bl
ZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudDo6SWNlR2F0aGVyaW5nU3RhdGUgbV9nYXRoZXJpbmdT
dGF0ZTsKIH07CiAKK2NsYXNzIFJlbW90ZURhdGFDaGFubmVsTm90aWZpZXIgOiBwdWJsaWMgTW9j
a05vdGlmaWVyIHsKK3B1YmxpYzoKKyAgICBSZW1vdGVEYXRhQ2hhbm5lbE5vdGlmaWVyKFJUQ1Bl
ZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudCopOworCisgICAgdm9pZCBmaXJlKCkgT1ZFUlJJREU7
CisKK3ByaXZhdGU6CisgICAgUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50KiBtX2NsaWVu
dDsKK307CisKK2NsYXNzIERhdGFDaGFubmVsU3RhdGVOb3RpZmllciA6IHB1YmxpYyBNb2NrTm90
aWZpZXIgeworcHVibGljOgorICAgIERhdGFDaGFubmVsU3RhdGVOb3RpZmllcihSVENEYXRhQ2hh
bm5lbEhhbmRsZXJDbGllbnQqLCBSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQ6OlJlYWR5U3Rh
dGUpOworCisgICAgdm9pZCBmaXJlKCkgT1ZFUlJJREU7CisKK3ByaXZhdGU6CisgICAgUlRDRGF0
YUNoYW5uZWxIYW5kbGVyQ2xpZW50KiBtX2NsaWVudDsKKyAgICBSVENEYXRhQ2hhbm5lbEhhbmRs
ZXJDbGllbnQ6OlJlYWR5U3RhdGUgbV9zdGF0ZTsKK307CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIAogI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1JUQ1BlZXJDb25uZWN0aW9uSGFuZGxlck1vY2suY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJNb2Nr
LmNwcAppbmRleCBkYjJhZWJjYTk4YzA2MDhiMmZjYTFkNzU2OWE5OWQ3NmM4ODhlZDJmLi5hNDFj
Yjk3ZWE4YWRjZDNmZTA4ZWEzMTE0ZjIyMGIyM2Q2M2YxZDIyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1JUQ1BlZXJDb25uZWN0aW9uSGFuZGxlck1vY2suY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVy
TW9jay5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgog
I2luY2x1ZGUgIlJUQ0RUTUZTZW5kZXJIYW5kbGVyLmgiCiAjaW5jbHVkZSAiUlRDRGF0YUNoYW5u
ZWxIYW5kbGVyLmgiCisjaW5jbHVkZSAiUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jay5oIgogI2lu
Y2x1ZGUgIlJUQ05vdGlmaWVyc01vY2suaCIKICNpbmNsdWRlICJSVENTZXNzaW9uRGVzY3JpcHRp
b25SZXF1ZXN0LmgiCiAjaW5jbHVkZSAiUlRDVm9pZFJlcXVlc3QuaCIKQEAgLTE1MiwxMiArMTUz
LDExIEBAIHZvaWQgUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyTW9jazo6Z2V0U3RhdHMoUGFzc1Jl
ZlB0cjxSVENTdGF0c1JlcXVlc3Q+KQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLVBhc3NP
d25QdHI8UlRDRGF0YUNoYW5uZWxIYW5kbGVyPiBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJNb2Nr
OjpjcmVhdGVEYXRhQ2hhbm5lbChjb25zdCBTdHJpbmcmLCBjb25zdCBSVENEYXRhQ2hhbm5lbElu
aXQmKQorUGFzc093blB0cjxSVENEYXRhQ2hhbm5lbEhhbmRsZXI+IFJUQ1BlZXJDb25uZWN0aW9u
SGFuZGxlck1vY2s6OmNyZWF0ZURhdGFDaGFubmVsKGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0
IFJUQ0RhdGFDaGFubmVsSW5pdCYgaW5pdCkKIHsKLSAgICAvLyBSZXF1aXJlcyBhIG1vY2sgaW1w
bGVtZW50YXRpb24gb2YgUlRDRGF0YUNoYW5uZWxIYW5kbGVyLgotICAgIC8vIFRoaXMgbXVzdCBi
ZSBpbXBsZW1lbnRlZCBvbmNlIHRoZSBtb2NrIGltcGxlbWVudGF0aW9uIG9mIFJUQ0RhdGFDaGFu
bmVsSGFuZGxlciBpcyByZWFkeS4KLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAw
OworICAgIFJlZlB0cjxSZW1vdGVEYXRhQ2hhbm5lbE5vdGlmaWVyPiBub3RpZmllciA9IGFkb3B0
UmVmKG5ldyBSZW1vdGVEYXRhQ2hhbm5lbE5vdGlmaWVyKG1fY2xpZW50KSk7CisgICAgbV90aW1l
ckV2ZW50cy5hcHBlbmQoYWRvcHRSZWYobmV3IFRpbWVyRXZlbnQodGhpcywgbm90aWZpZXIpKSk7
CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBSVENEYXRhQ2hhbm5lbEhhbmRsZXJNb2NrKGxhYmVs
LCBpbml0KSk7CiB9CiAKIFBhc3NPd25QdHI8UlRDRFRNRlNlbmRlckhhbmRsZXI+IFJUQ1BlZXJD
b25uZWN0aW9uSGFuZGxlck1vY2s6OmNyZWF0ZURUTUZTZW5kZXIoUGFzc1JlZlB0cjxNZWRpYVN0
cmVhbVNvdXJjZT4pCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKaW5kZXggY2JjY2UyMTk0Y2E4ZWZmNzk0ZTk0OTg3NjVkMDNlMTk2Njhk
OWUzNy4uYmZhNWMzOTQ3OTk2ZTE1MjNiZmQyNDRlOGNlZDIwN2M0N2Q5ZTc0MCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE1IEBACisyMDEzLTEwLTIzICBUaGlhZ28gZGUgQmFycm9zIExhY2VyZGEgIDx0aGlh
Z28ubGFjZXJkYUBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIEFkZGluZyBtb2NrIGNsYXNzIHRv
IHRlc3QgUlRDRGF0YUNoYW5uZWxIYW5kbGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMjMyMDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGUgcmVsaWFibGUgcHJvcGVydHkgd2FzIHJlbW92ZWQgaW4g
dGhlIHNwZWMKKworICAgICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24t
ZGF0YWNoYW5uZWwtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vUlRD
UGVlckNvbm5lY3Rpb24tZGF0YWNoYW5uZWwuaHRtbDoKKwogMjAxMy0xMC0yMyAgS3J6eXN6dG9m
IFdvbGFuc2tpICA8ay53b2xhbnNraUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBbR1RLXSBhY2Nl
c3NpYmlsaXR5L3NlbGYtcmVmZXJlbmNpbmctYXJpYS1sYWJlbGxlZGJ5Lmh0bWwgaXMgZmFpbGlu
ZwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVj
dGlvbi1kYXRhY2hhbm5lbC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3Ry
ZWFtL1JUQ1BlZXJDb25uZWN0aW9uLWRhdGFjaGFubmVsLWV4cGVjdGVkLnR4dAppbmRleCA4ZDBm
NTNlNmU3NzQ5NTg2MzBkZmNkMTJhNDA4OGI1ZmM3ODYwYTI2Li5lNWU2OWI3MjFlNzMxOGVhN2E5
ZGIwMmRlODVhNDA1MzdhOTM5M2ZlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlh
c3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLWRhdGFjaGFubmVsLWV4cGVjdGVkLnR4dAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLWRhdGFjaGFubmVs
LWV4cGVjdGVkLnR4dApAQCAtNCwxNyArNCwxMSBAQCBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURQog
CiAKIFBBU1MgZGMgPSBwYy5jcmVhdGVEYXRhQ2hhbm5lbCgibGFiZWwxIik7IGRpZCBub3QgdGhy
b3cgZXhjZXB0aW9uLgotUEFTUyBkYy5yZWxpYWJsZSBpcyB0cnVlCiBQQVNTIGRjID0gcGMuY3Jl
YXRlRGF0YUNoYW5uZWwoImxhYmVsMiIsIHt9KTsgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCi1Q
QVNTIGRjLnJlbGlhYmxlIGlzIHRydWUKIFBBU1MgZGMgPSBwYy5jcmVhdGVEYXRhQ2hhbm5lbCgi
bGFiZWwzIiwge29yZGVyZWQ6dHJ1ZX0pOyBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KLVBBU1Mg
ZGMucmVsaWFibGUgaXMgdHJ1ZQogUEFTUyBkYyA9IHBjLmNyZWF0ZURhdGFDaGFubmVsKCJsYWJl
bDMiLCB7b3JkZXJlZDpmYWxzZX0pOyBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KLVBBU1MgZGMu
cmVsaWFibGUgaXMgZmFsc2UKIFBBU1MgZGMgPSBwYy5jcmVhdGVEYXRhQ2hhbm5lbCgibGFiZWwz
Iiwge21heFJldHJhbnNtaXRzOjB9KTsgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCi1QQVNTIGRj
LnJlbGlhYmxlIGlzIGZhbHNlCiBQQVNTIGRjID0gcGMuY3JlYXRlRGF0YUNoYW5uZWwoImxhYmVs
MyIsIHttYXhSZXRyYW5zbWl0VGltZTowfSk7IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgotUEFT
UyBkYy5yZWxpYWJsZSBpcyBmYWxzZQogUEFTUyBwYyBpcyBjb25uZWN0ZWQKIFBBU1MgZGMgPSBw
Yy5jcmVhdGVEYXRhQ2hhbm5lbCgibGFiZWwiKTsgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCiBQ
QVNTIGRjLnJlYWR5U3RhdGUgaXMgJ2Nvbm5lY3RpbmcnCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLWRhdGFjaGFubmVsLmh0bWwgYi9M
YXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLWRhdGFjaGFubmVs
Lmh0bWwKaW5kZXggYWYxOGQ5ZThlMGY5ZTIxYmI0MGU1NWE5YzczYjZkY2RiNDBmYjc5NC4uOGY1
MjhhNzQ4YTQzOGRlMzk5YzQ4ZWIyZjFlY2RmYmFiM2E1ZWVjYSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1kYXRhY2hhbm5lbC5odG1s
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24tZGF0
YWNoYW5uZWwuaHRtbApAQCAtODMsMTcgKzgzLDExIEBAIGZ1bmN0aW9uIHBjX29uaWNlY2hhbmdl
KCkgewogCiBwYyA9IG5ldyB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbihudWxsLCBudWxsKTsKIHNo
b3VsZE5vdFRocm93KCdkYyA9IHBjLmNyZWF0ZURhdGFDaGFubmVsKCJsYWJlbDEiKTsnKTsKLXNo
b3VsZEJlKCJkYy5yZWxpYWJsZSIsICJ0cnVlIik7CiBzaG91bGROb3RUaHJvdygnZGMgPSBwYy5j
cmVhdGVEYXRhQ2hhbm5lbCgibGFiZWwyIiwge30pOycpOwotc2hvdWxkQmUoImRjLnJlbGlhYmxl
IiwgInRydWUiKTsKIHNob3VsZE5vdFRocm93KCdkYyA9IHBjLmNyZWF0ZURhdGFDaGFubmVsKCJs
YWJlbDMiLCB7b3JkZXJlZDp0cnVlfSk7Jyk7Ci1zaG91bGRCZSgiZGMucmVsaWFibGUiLCAidHJ1
ZSIpOwogc2hvdWxkTm90VGhyb3coJ2RjID0gcGMuY3JlYXRlRGF0YUNoYW5uZWwoImxhYmVsMyIs
IHtvcmRlcmVkOmZhbHNlfSk7Jyk7Ci1zaG91bGRCZSgiZGMucmVsaWFibGUiLCAiZmFsc2UiKTsK
IHNob3VsZE5vdFRocm93KCdkYyA9IHBjLmNyZWF0ZURhdGFDaGFubmVsKCJsYWJlbDMiLCB7bWF4
UmV0cmFuc21pdHM6MH0pOycpOwotc2hvdWxkQmUoImRjLnJlbGlhYmxlIiwgImZhbHNlIik7CiBz
aG91bGROb3RUaHJvdygnZGMgPSBwYy5jcmVhdGVEYXRhQ2hhbm5lbCgibGFiZWwzIiwge21heFJl
dHJhbnNtaXRUaW1lOjB9KTsnKTsKLXNob3VsZEJlKCJkYy5yZWxpYWJsZSIsICJmYWxzZSIpOwog
CiBwYyA9IG5ldyB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbihudWxsLCBudWxsKTsKIHBjLm9uaWNl
Y29ubmVjdGlvbnN0YXRlY2hhbmdlID0gcGNfb25pY2VjaGFuZ2U7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>214998</attachid>
            <date>2013-10-23 14:38:02 -0700</date>
            <delta_ts>2013-10-23 15:25:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-123205-20131023183801.patch</filename>
            <type>text/plain</type>
            <size>16626</size>
            <attacher name="Thiago de Barros Lacerda">thiago.lacerda</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU3ODg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDRiZWY3ZjI1NWQxMmYz
Mzc3YmE5MTMxZjk3ODA1NTNmYWQwMWI0YS4uZjE5NDZhM2FhYzBjZTkzMThiMWUxYTE3MDk3ZmQ2
YzZlMGVmNDY3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEzLTEwLTIzICBUaGlh
Z28gZGUgQmFycm9zIExhY2VyZGEgIDx0aGlhZ28ubGFjZXJkYUBvcGVuYm9zc2Eub3JnPgorCisg
ICAgICAgIEFkZGluZyBtb2NrIGNsYXNzIHRvIHRlc3QgUlRDRGF0YUNoYW5uZWxIYW5kbGVyCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjMyMDUKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBOb3cgUlRDUGVl
ckNvbm5lY3Rpb25IYW5kbGVyLWRhdGFjaGFubmVsIExheW91VGVzdCBjYW4gcnVuIHByb3Blcmx5
LgorICAgICAgICBBbHNvIHVwZGF0ZWQgdGhlIGV4cGVjdGVkIGZpbGUsIHJlbW92aW5nIHRoZSBy
ZWxpYWJsZSBwcm9wZXJ0eSBjaGVjayAod2hpY2ggd2FzIHJlbW92ZWQgaW4gdGhlIHNwZWMpCisK
KyAgICAgICAgRXhpc3RpbmcgdGVzdHMgdXBkYXRlZC4KKworICAgICAgICAqIENNYWtlTGlzdHMu
dHh0OgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsSGFuZGxl
ckNsaWVudC5oOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svUlRDRGF0YUNoYW5uZWxIYW5kbGVy
TW9jay5jcHA6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21vY2svUlRDRGF0YUNoYW5uZWxI
YW5kbGVyTW9jay5oOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL1JUQ05vdGlmaWVy
c01vY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlRGF0YUNoYW5uZWxOb3RpZmllcjo6
UmVtb3RlRGF0YUNoYW5uZWxOb3RpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVEYXRh
Q2hhbm5lbE5vdGlmaWVyOjpmaXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFDaGFubmVsU3Rh
dGVOb3RpZmllcjo6RGF0YUNoYW5uZWxTdGF0ZU5vdGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkRhdGFDaGFubmVsU3RhdGVOb3RpZmllcjo6ZmlyZSk6CisgICAgICAgICogcGxhdGZvcm0vbW9j
ay9SVENOb3RpZmllcnNNb2NrLmg6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9SVENQZWVyQ29u
bmVjdGlvbkhhbmRsZXJNb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1BlZXJDb25uZWN0
aW9uSGFuZGxlck1vY2s6OmNyZWF0ZURhdGFDaGFubmVsKToKKwogMjAxMy0xMC0yMyAgTWFyayBM
YW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IGFzc2VydGlvbiBpbiBEYXRh
YmFzZU1hbmFnZXI6OmRldGFpbHNGb3JOYW1lQW5kT3JpZ2luKCkgdG8gYmUgaU9TIGZyaWVuZGx5
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2Vi
Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA0N2JlZTA5NzYwNmQ5ZjhmMDE5YTY1MDZjZDg1OTMy
NTM3OWZlMjZhLi40NmQxMmUzMjNlNmE5YmFjZjkzMGU4MDY0YWRiOTVkYmM0NzdmYjIzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9DTWFrZUxpc3RzLnR4dApAQCAtMTk5Niw2ICsxOTk2LDcgQEAgc2V0KFdlYkNvcmVfU09VUkNF
UwogICAgIHBsYXRmb3JtL21vY2svRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrLmNwcAogICAg
IHBsYXRmb3JtL21vY2svR2VvbG9jYXRpb25DbGllbnRNb2NrLmNwcAogICAgIHBsYXRmb3JtL21v
Y2svTW9ja01lZGlhU3RyZWFtQ2VudGVyLmNwcAorICAgIHBsYXRmb3JtL21vY2svUlRDRGF0YUNo
YW5uZWxIYW5kbGVyTW9jay5jcHAKICAgICBwbGF0Zm9ybS9tb2NrL1JUQ05vdGlmaWVyc01vY2su
Y3BwCiAgICAgcGxhdGZvcm0vbW9jay9SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJNb2NrLmNwcAog
ICAgIHBsYXRmb3JtL21vY2svU2Nyb2xsYmFyVGhlbWVNb2NrLmNwcApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5l
bEhhbmRsZXJDbGllbnQuaAppbmRleCBkOTdhMDMyNjkzN2Q0Y2FiNDgwNmM5NmNlYTU0MDI5Yjg0
MjU2OGFmLi4yODhlZTE2ZjMzOWJkZDI2ODlkZTY2N2FkYTg1YWUwZGE4MzkzZTcxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbEhh
bmRsZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9S
VENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQuaApAQCAtMjcsNiArMjcsOCBAQAogCiAjaWYgRU5B
QkxFKE1FRElBX1NUUkVBTSkKIAorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudCB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1JUQ0RhdGFDaGFubmVs
SGFuZGxlck1vY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9SVENEYXRhQ2hh
bm5lbEhhbmRsZXJNb2NrLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMWM1MjI1MjcwNGFlZjQ4MjdhNTlkYmNl
MjdkYjEzYTkxMThkZjhiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbW9jay9SVENEYXRhQ2hhbm5lbEhhbmRsZXJNb2NrLmNwcApAQCAtMCwwICsxLDc4IEBACisv
KgorICogIENvcHlyaWdodCAoQykgMjAxMyBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1
YnNpZGlhcnkoLWllcykuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiUlRDRGF0YUNoYW5uZWxI
YW5kbGVyTW9jay5oIgorCisjaW5jbHVkZSAiUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50Lmgi
CisjaW5jbHVkZSAiUlRDTm90aWZpZXJzTW9jay5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K1JUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2s6OlJUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2soY29u
c3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgUlRDRGF0YUNoYW5uZWxJbml0JiBpbml0KQorICAgIDog
bV9sYWJlbChsYWJlbCkKKyAgICAsIG1fcHJvdG9jb2woaW5pdC5wcm90b2NvbCkKKyAgICAsIG1f
bWF4UmV0cmFuc21pdFRpbWUoaW5pdC5tYXhSZXRyYW5zbWl0VGltZSkKKyAgICAsIG1fbWF4UmV0
cmFuc21pdHMoaW5pdC5tYXhSZXRyYW5zbWl0cykKKyAgICAsIG1faWQoaW5pdC5pZCkKKyAgICAs
IG1fb3JkZXJlZChpbml0Lm9yZGVyZWQpCisgICAgLCBtX25lZ290aWF0ZWQoaW5pdC5uZWdvdGlh
dGVkKQoreworfQorCit2b2lkIFJUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2s6OnNldENsaWVudChS
VENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQqIGNsaWVudCkKK3sKKyAgICBpZiAoIWNsaWVudCkK
KyAgICAgICAgcmV0dXJuOworCisgICAgbV9jbGllbnQgPSBjbGllbnQ7CisgICAgUmVmUHRyPERh
dGFDaGFubmVsU3RhdGVOb3RpZmllcj4gbm90aWZpZXIgPSBhZG9wdFJlZihuZXcgRGF0YUNoYW5u
ZWxTdGF0ZU5vdGlmaWVyKG1fY2xpZW50LCBSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQ6OlJl
YWR5U3RhdGVPcGVuKSk7CisgICAgbV90aW1lckV2ZW50cy5hcHBlbmQoYWRvcHRSZWYobmV3IFRp
bWVyRXZlbnQodGhpcywgbm90aWZpZXIpKSk7Cit9CisKK2Jvb2wgUlRDRGF0YUNoYW5uZWxIYW5k
bGVyTW9jazo6c2VuZFN0cmluZ0RhdGEoY29uc3QgU3RyaW5nJiBzdHJpbmcpCit7CisgICAgbV9j
bGllbnQtPmRpZFJlY2VpdmVTdHJpbmdEYXRhKHN0cmluZyk7CisgICAgcmV0dXJuIHRydWU7Cit9
CisKK2Jvb2wgUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jazo6c2VuZFJhd0RhdGEoY29uc3QgY2hh
ciogZGF0YSwgc2l6ZV90IHNpemUpCit7CisgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVSYXdEYXRh
KGRhdGEsIHNpemUpOworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIFJUQ0RhdGFDaGFubmVs
SGFuZGxlck1vY2s6OmNsb3NlKCkKK3sKKyAgICBSZWZQdHI8RGF0YUNoYW5uZWxTdGF0ZU5vdGlm
aWVyPiBub3RpZmllciA9IGFkb3B0UmVmKG5ldyBEYXRhQ2hhbm5lbFN0YXRlTm90aWZpZXIobV9j
bGllbnQsIFJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudDo6UmVhZHlTdGF0ZUNsb3NlZCkpOwor
ICAgIG1fdGltZXJFdmVudHMuYXBwZW5kKGFkb3B0UmVmKG5ldyBUaW1lckV2ZW50KHRoaXMsIG5v
dGlmaWVyKSkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFC
TEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9j
ay9SVENEYXRhQ2hhbm5lbEhhbmRsZXJNb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
b2NrL1JUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2suaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lOTc1YjJhNTdkMTU5
NTEyYzdkOWZmZmNlZDQzMTVkYjY3NzA0YzFmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbW9jay9SVENEYXRhQ2hhbm5lbEhhbmRsZXJNb2NrLmgKQEAgLTAsMCAr
MSw3MyBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTMgTm9raWEgQ29ycG9yYXRpb24gYW5k
L29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBS
VENEYXRhQ2hhbm5lbEhhbmRsZXJNb2NrX2gKKyNkZWZpbmUgUlRDRGF0YUNoYW5uZWxIYW5kbGVy
TW9ja19oCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiUlRDRGF0YUNo
YW5uZWxIYW5kbGVyLmgiCisjaW5jbHVkZSAiUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmgiCisj
aW5jbHVkZSAiVGltZXJFdmVudEJhc2VkTW9jay5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIFJUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2sgRklOQUwgOiBwdWJsaWMgUlRDRGF0YUNo
YW5uZWxIYW5kbGVyLCBwdWJsaWMgVGltZXJFdmVudEJhc2VkTW9jayB7CitwdWJsaWM6CisgICAg
UlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jayhjb25zdCBTdHJpbmcmLCBjb25zdCBSVENEYXRhQ2hh
bm5lbEluaXQmKTsKKyAgICB2aXJ0dWFsIH5SVENEYXRhQ2hhbm5lbEhhbmRsZXJNb2NrKCkgeyB9
CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q2xpZW50KFJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVu
dCopIE9WRVJSSURFOworCisgICAgdmlydHVhbCBTdHJpbmcgbGFiZWwoKSBPVkVSUklERSB7IHJl
dHVybiBtX2xhYmVsOyB9CisgICAgdmlydHVhbCBib29sIG9yZGVyZWQoKSBPVkVSUklERSB7IHJl
dHVybiBtX29yZGVyZWQ7IH0KKyAgICB2aXJ0dWFsIHVuc2lnbmVkIHNob3J0IG1heFJldHJhbnNt
aXRUaW1lKCkgT1ZFUlJJREUgeyByZXR1cm4gbV9tYXhSZXRyYW5zbWl0VGltZTsgfQorICAgIHZp
cnR1YWwgdW5zaWduZWQgc2hvcnQgbWF4UmV0cmFuc21pdHMoKSBPVkVSUklERSB7IHJldHVybiBt
X21heFJldHJhbnNtaXRzOyB9CisgICAgdmlydHVhbCBTdHJpbmcgcHJvdG9jb2woKSBPVkVSUklE
RSB7IHJldHVybiBtX3Byb3RvY29sOyB9CisgICAgdmlydHVhbCBib29sIG5lZ290aWF0ZWQoKSBP
VkVSUklERSB7IHJldHVybiBtX25lZ290aWF0ZWQ7IH0KKyAgICB2aXJ0dWFsIHVuc2lnbmVkIHNo
b3J0IGlkKCkgT1ZFUlJJREUgeyByZXR1cm4gbV9pZDsgfQorICAgIHZpcnR1YWwgdW5zaWduZWQg
bG9uZyBidWZmZXJlZEFtb3VudCgpIE9WRVJSSURFIHsgcmV0dXJuIDA7IH0KKworICAgIHZpcnR1
YWwgYm9vbCBzZW5kU3RyaW5nRGF0YShjb25zdCBTdHJpbmcmKSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIGJvb2wgc2VuZFJhd0RhdGEoY29uc3QgY2hhciosIHNpemVfdCkgT1ZFUlJJREU7CisgICAg
dmlydHVhbCB2b2lkIGNsb3NlKCkgT1ZFUlJJREU7CisKK3ByaXZhdGU6CisgICAgUlRDRGF0YUNo
YW5uZWxIYW5kbGVyQ2xpZW50KiBtX2NsaWVudDsKKworICAgIFN0cmluZyBtX2xhYmVsOworICAg
IFN0cmluZyBtX3Byb3RvY29sOworICAgIHVuc2lnbmVkIHNob3J0IG1fbWF4UmV0cmFuc21pdFRp
bWU7CisgICAgdW5zaWduZWQgc2hvcnQgbV9tYXhSZXRyYW5zbWl0czsKKyAgICB1bnNpZ25lZCBz
aG9ydCBtX2lkOworICAgIGJvb2wgbV9vcmRlcmVkOworICAgIGJvb2wgbV9uZWdvdGlhdGVkOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NU
UkVBTSkKKworI2VuZGlmIC8vIFJUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2tfaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9SVENOb3RpZmllcnNNb2NrLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUlRDTm90aWZpZXJzTW9jay5jcHAKaW5kZXggY2M3
MjYyYWFhZjU1MmY0MWE0ZTM5OGVlOTZjNGNiNWFlNGE1NDI5ZC4uNmM4NWZhNTQ0MjE0YzNlMDU2
NDdhMGEzYzg0NWRiMDVhN2ViZDdmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbW9jay9SVENOb3RpZmllcnNNb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tb2NrL1JUQ05vdGlmaWVyc01vY2suY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRl
ICJSVENOb3RpZmllcnNNb2NrLmgiCiAKKyNpbmNsdWRlICJSVENEYXRhQ2hhbm5lbEhhbmRsZXJN
b2NrLmgiCiAjaW5jbHVkZSAiUlRDU2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvci5oIgogI2lu
Y2x1ZGUgIlJUQ1Nlc3Npb25EZXNjcmlwdGlvblJlcXVlc3QuaCIKICNpbmNsdWRlICJSVENWb2lk
UmVxdWVzdC5oIgpAQCAtNzYsNiArNzcsMjcgQEAgdm9pZCBJY2VDb25uZWN0aW9uTm90aWZpZXI6
OmZpcmUoKQogICAgIG1fY2xpZW50LT5kaWRDaGFuZ2VJY2VDb25uZWN0aW9uU3RhdGUobV9jb25u
ZWN0aW9uU3RhdGUpOwogfQogCitSZW1vdGVEYXRhQ2hhbm5lbE5vdGlmaWVyOjpSZW1vdGVEYXRh
Q2hhbm5lbE5vdGlmaWVyKFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudCogY2xpZW50KQor
ICAgIDogbV9jbGllbnQoY2xpZW50KQoreworfQorCit2b2lkIFJlbW90ZURhdGFDaGFubmVsTm90
aWZpZXI6OmZpcmUoKQoreworICAgIG1fY2xpZW50LT5kaWRBZGRSZW1vdGVEYXRhQ2hhbm5lbChh
ZG9wdFB0cihuZXcgUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jaygiUlRDRGF0YUNoYW5uZWxIYW5k
bGVyTW9jayIsIFJUQ0RhdGFDaGFubmVsSW5pdCgpKSkpOworfQorCitEYXRhQ2hhbm5lbFN0YXRl
Tm90aWZpZXI6OkRhdGFDaGFubmVsU3RhdGVOb3RpZmllcihSVENEYXRhQ2hhbm5lbEhhbmRsZXJD
bGllbnQqIGNsaWVudCwgUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50OjpSZWFkeVN0YXRlIHN0
YXRlKQorICAgIDogbV9jbGllbnQoY2xpZW50KQorICAgICwgbV9zdGF0ZShzdGF0ZSkKK3sKK30K
Kwordm9pZCBEYXRhQ2hhbm5lbFN0YXRlTm90aWZpZXI6OmZpcmUoKQoreworICAgIG1fY2xpZW50
LT5kaWRDaGFuZ2VSZWFkeVN0YXRlKG1fc3RhdGUpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbW9jay9SVENOb3RpZmllcnNNb2NrLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tb2NrL1JUQ05vdGlmaWVyc01vY2suaAppbmRleCA2YWFjNWRjYWU2YmRkYTVi
ZWI1ZjMyMjQ2MjA4Mjc2NWE0ZWY5ODU5Li45NTk3YWZjMTllNjM2ZTQ5MTFiZGFkNTdiZmQwOTU1
NmFhZjc4Nzg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1JUQ05v
dGlmaWVyc01vY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1JUQ05vdGlm
aWVyc01vY2suaApAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkK
IAorI2luY2x1ZGUgIlJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudC5oIgogI2luY2x1ZGUgIlJU
Q1BlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudC5oIgogI2luY2x1ZGUgIlRpbWVyRXZlbnRCYXNl
ZE1vY2suaCIKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgpAQCAtNzMsNiArNzQsMjcgQEAg
cHJpdmF0ZToKICAgICBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQ6OkljZUdhdGhlcmlu
Z1N0YXRlIG1fZ2F0aGVyaW5nU3RhdGU7CiB9OwogCitjbGFzcyBSZW1vdGVEYXRhQ2hhbm5lbE5v
dGlmaWVyIDogcHVibGljIE1vY2tOb3RpZmllciB7CitwdWJsaWM6CisgICAgUmVtb3RlRGF0YUNo
YW5uZWxOb3RpZmllcihSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQqKTsKKworICAgIHZv
aWQgZmlyZSgpIE9WRVJSSURFOworCitwcml2YXRlOgorICAgIFJUQ1BlZXJDb25uZWN0aW9uSGFu
ZGxlckNsaWVudCogbV9jbGllbnQ7Cit9OworCitjbGFzcyBEYXRhQ2hhbm5lbFN0YXRlTm90aWZp
ZXIgOiBwdWJsaWMgTW9ja05vdGlmaWVyIHsKK3B1YmxpYzoKKyAgICBEYXRhQ2hhbm5lbFN0YXRl
Tm90aWZpZXIoUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50KiwgUlRDRGF0YUNoYW5uZWxIYW5k
bGVyQ2xpZW50OjpSZWFkeVN0YXRlKTsKKworICAgIHZvaWQgZmlyZSgpIE9WRVJSSURFOworCitw
cml2YXRlOgorICAgIFJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudCogbV9jbGllbnQ7CisgICAg
UlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50OjpSZWFkeVN0YXRlIG1fc3RhdGU7Cit9OworCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9SVENQZWVyQ29ubmVjdGlv
bkhhbmRsZXJNb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUlRDUGVlckNv
bm5lY3Rpb25IYW5kbGVyTW9jay5jcHAKaW5kZXggZGIyYWViY2E5OGMwNjA4YjJmY2ExZDc1Njlh
OTlkNzZjODg4ZWQyZi4uYTQxY2I5N2VhOGFkY2QzZmUwOGVhMzExNGYyMjBiMjNkNjNmMWQyMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9SVENQZWVyQ29ubmVjdGlv
bkhhbmRsZXJNb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1JUQ1Bl
ZXJDb25uZWN0aW9uSGFuZGxlck1vY2suY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAi
Tm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJSVENEVE1GU2VuZGVySGFuZGxlci5oIgogI2lu
Y2x1ZGUgIlJUQ0RhdGFDaGFubmVsSGFuZGxlci5oIgorI2luY2x1ZGUgIlJUQ0RhdGFDaGFubmVs
SGFuZGxlck1vY2suaCIKICNpbmNsdWRlICJSVENOb3RpZmllcnNNb2NrLmgiCiAjaW5jbHVkZSAi
UlRDU2Vzc2lvbkRlc2NyaXB0aW9uUmVxdWVzdC5oIgogI2luY2x1ZGUgIlJUQ1ZvaWRSZXF1ZXN0
LmgiCkBAIC0xNTIsMTIgKzE1MywxMSBAQCB2b2lkIFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlck1v
Y2s6OmdldFN0YXRzKFBhc3NSZWZQdHI8UlRDU3RhdHNSZXF1ZXN0PikKICAgICBub3RJbXBsZW1l
bnRlZCgpOwogfQogCi1QYXNzT3duUHRyPFJUQ0RhdGFDaGFubmVsSGFuZGxlcj4gUlRDUGVlckNv
bm5lY3Rpb25IYW5kbGVyTW9jazo6Y3JlYXRlRGF0YUNoYW5uZWwoY29uc3QgU3RyaW5nJiwgY29u
c3QgUlRDRGF0YUNoYW5uZWxJbml0JikKK1Bhc3NPd25QdHI8UlRDRGF0YUNoYW5uZWxIYW5kbGVy
PiBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJNb2NrOjpjcmVhdGVEYXRhQ2hhbm5lbChjb25zdCBT
dHJpbmcmIGxhYmVsLCBjb25zdCBSVENEYXRhQ2hhbm5lbEluaXQmIGluaXQpCiB7Ci0gICAgLy8g
UmVxdWlyZXMgYSBtb2NrIGltcGxlbWVudGF0aW9uIG9mIFJUQ0RhdGFDaGFubmVsSGFuZGxlci4K
LSAgICAvLyBUaGlzIG11c3QgYmUgaW1wbGVtZW50ZWQgb25jZSB0aGUgbW9jayBpbXBsZW1lbnRh
dGlvbiBvZiBSVENEYXRhQ2hhbm5lbEhhbmRsZXIgaXMgcmVhZHkuCi0gICAgbm90SW1wbGVtZW50
ZWQoKTsKLSAgICByZXR1cm4gMDsKKyAgICBSZWZQdHI8UmVtb3RlRGF0YUNoYW5uZWxOb3RpZmll
cj4gbm90aWZpZXIgPSBhZG9wdFJlZihuZXcgUmVtb3RlRGF0YUNoYW5uZWxOb3RpZmllcihtX2Ns
aWVudCkpOworICAgIG1fdGltZXJFdmVudHMuYXBwZW5kKGFkb3B0UmVmKG5ldyBUaW1lckV2ZW50
KHRoaXMsIG5vdGlmaWVyKSkpOworICAgIHJldHVybiBhZG9wdFB0cihuZXcgUlRDRGF0YUNoYW5u
ZWxIYW5kbGVyTW9jayhsYWJlbCwgaW5pdCkpOwogfQogCiBQYXNzT3duUHRyPFJUQ0RUTUZTZW5k
ZXJIYW5kbGVyPiBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJNb2NrOjpjcmVhdGVEVE1GU2VuZGVy
KFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1Tb3VyY2U+KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGMxNmZmZTBmZTllY2NiMjQ1
N2Q0NGExMzllNGFlZjUxODA1MjgzYmEuLmRjOWFjYmZmZDdkMDk3ODQ0MWEyYzRjMjA4OTgxNzNl
ODUzNWZiYWQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMy0xMC0yMyAgVGhpYWdvIGRlIEJh
cnJvcyBMYWNlcmRhICA8dGhpYWdvLmxhY2VyZGFAb3BlbmJvc3NhLm9yZz4KKworICAgICAgICBB
ZGRpbmcgbW9jayBjbGFzcyB0byB0ZXN0IFJUQ0RhdGFDaGFubmVsSGFuZGxlcgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIzMjA1CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIHJlbGlhYmxlIHByb3Bl
cnR5IHdhcyByZW1vdmVkIGluIHRoZSBzcGVjCisKKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFt
L1JUQ1BlZXJDb25uZWN0aW9uLWRhdGFjaGFubmVsLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBm
YXN0L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLWRhdGFjaGFubmVsLmh0bWw6CisKIDIw
MTMtMTAtMjMgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBIYXZl
IGEgd2F5IG9mIGRlYWxpbmcgd2l0aCBzbG93IHRlc3RzIGluIHJ1bi1qc2Mtc3RyZXNzLXRlc3Rz
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0
aW9uLWRhdGFjaGFubmVsLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJl
YW0vUlRDUGVlckNvbm5lY3Rpb24tZGF0YWNoYW5uZWwtZXhwZWN0ZWQudHh0CmluZGV4IDhkMGY1
M2U2ZTc3NDk1ODYzMGRmY2QxMmE0MDg4YjVmYzc4NjBhMjYuLmU1ZTY5YjcyMWU3MzE4ZWE3YTlk
YjAyZGU4NWE0MDUzN2E5MzkzZmUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFz
dHJlYW0vUlRDUGVlckNvbm5lY3Rpb24tZGF0YWNoYW5uZWwtZXhwZWN0ZWQudHh0CisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24tZGF0YWNoYW5uZWwt
ZXhwZWN0ZWQudHh0CkBAIC00LDE3ICs0LDExIEBAIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFCiAK
IAogUEFTUyBkYyA9IHBjLmNyZWF0ZURhdGFDaGFubmVsKCJsYWJlbDEiKTsgZGlkIG5vdCB0aHJv
dyBleGNlcHRpb24uCi1QQVNTIGRjLnJlbGlhYmxlIGlzIHRydWUKIFBBU1MgZGMgPSBwYy5jcmVh
dGVEYXRhQ2hhbm5lbCgibGFiZWwyIiwge30pOyBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KLVBB
U1MgZGMucmVsaWFibGUgaXMgdHJ1ZQogUEFTUyBkYyA9IHBjLmNyZWF0ZURhdGFDaGFubmVsKCJs
YWJlbDMiLCB7b3JkZXJlZDp0cnVlfSk7IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgotUEFTUyBk
Yy5yZWxpYWJsZSBpcyB0cnVlCiBQQVNTIGRjID0gcGMuY3JlYXRlRGF0YUNoYW5uZWwoImxhYmVs
MyIsIHtvcmRlcmVkOmZhbHNlfSk7IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgotUEFTUyBkYy5y
ZWxpYWJsZSBpcyBmYWxzZQogUEFTUyBkYyA9IHBjLmNyZWF0ZURhdGFDaGFubmVsKCJsYWJlbDMi
LCB7bWF4UmV0cmFuc21pdHM6MH0pOyBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KLVBBU1MgZGMu
cmVsaWFibGUgaXMgZmFsc2UKIFBBU1MgZGMgPSBwYy5jcmVhdGVEYXRhQ2hhbm5lbCgibGFiZWwz
Iiwge21heFJldHJhbnNtaXRUaW1lOjB9KTsgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCi1QQVNT
IGRjLnJlbGlhYmxlIGlzIGZhbHNlCiBQQVNTIHBjIGlzIGNvbm5lY3RlZAogUEFTUyBkYyA9IHBj
LmNyZWF0ZURhdGFDaGFubmVsKCJsYWJlbCIpOyBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KIFBB
U1MgZGMucmVhZHlTdGF0ZSBpcyAnY29ubmVjdGluZycKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24tZGF0YWNoYW5uZWwuaHRtbCBiL0xh
eW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24tZGF0YWNoYW5uZWwu
aHRtbAppbmRleCBhZjE4ZDllOGUwZjllMjFiYjQwZTU1YTljNzNiNmRjZGI0MGZiNzk0Li44ZjUy
OGE3NDhhNDM4ZGUzOTljNDhlYjJmMWVjZGZiYWIzYTVlZWNhIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9mYXN0L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLWRhdGFjaGFubmVsLmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1kYXRh
Y2hhbm5lbC5odG1sCkBAIC04MywxNyArODMsMTEgQEAgZnVuY3Rpb24gcGNfb25pY2VjaGFuZ2Uo
KSB7CiAKIHBjID0gbmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uKG51bGwsIG51bGwpOwogc2hv
dWxkTm90VGhyb3coJ2RjID0gcGMuY3JlYXRlRGF0YUNoYW5uZWwoImxhYmVsMSIpOycpOwotc2hv
dWxkQmUoImRjLnJlbGlhYmxlIiwgInRydWUiKTsKIHNob3VsZE5vdFRocm93KCdkYyA9IHBjLmNy
ZWF0ZURhdGFDaGFubmVsKCJsYWJlbDIiLCB7fSk7Jyk7Ci1zaG91bGRCZSgiZGMucmVsaWFibGUi
LCAidHJ1ZSIpOwogc2hvdWxkTm90VGhyb3coJ2RjID0gcGMuY3JlYXRlRGF0YUNoYW5uZWwoImxh
YmVsMyIsIHtvcmRlcmVkOnRydWV9KTsnKTsKLXNob3VsZEJlKCJkYy5yZWxpYWJsZSIsICJ0cnVl
Iik7CiBzaG91bGROb3RUaHJvdygnZGMgPSBwYy5jcmVhdGVEYXRhQ2hhbm5lbCgibGFiZWwzIiwg
e29yZGVyZWQ6ZmFsc2V9KTsnKTsKLXNob3VsZEJlKCJkYy5yZWxpYWJsZSIsICJmYWxzZSIpOwog
c2hvdWxkTm90VGhyb3coJ2RjID0gcGMuY3JlYXRlRGF0YUNoYW5uZWwoImxhYmVsMyIsIHttYXhS
ZXRyYW5zbWl0czowfSk7Jyk7Ci1zaG91bGRCZSgiZGMucmVsaWFibGUiLCAiZmFsc2UiKTsKIHNo
b3VsZE5vdFRocm93KCdkYyA9IHBjLmNyZWF0ZURhdGFDaGFubmVsKCJsYWJlbDMiLCB7bWF4UmV0
cmFuc21pdFRpbWU6MH0pOycpOwotc2hvdWxkQmUoImRjLnJlbGlhYmxlIiwgImZhbHNlIik7CiAK
IHBjID0gbmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uKG51bGwsIG51bGwpOwogcGMub25pY2Vj
b25uZWN0aW9uc3RhdGVjaGFuZ2UgPSBwY19vbmljZWNoYW5nZTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>