<?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>225577</bug_id>
          
          <creation_ts>2021-05-09 00:52:34 -0700</creation_ts>
          <short_desc>Remove uses of the String::toInt family of functions from WebCore/html and similar directories</short_desc>
          <delta_ts>2021-05-09 11:23:14 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>benjamin</cc>
    
    <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dbarton</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fred.wang</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jer.noble</cc>
    
    <cc>kangil.han</cc>
    
    <cc>mifenton</cc>
    
    <cc>philipj</cc>
    
    <cc>sam</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1758303</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-05-09 00:52:34 -0700</bug_when>
    <thetext>Remove uses of the String::toInt family of functions from WebCore/html and similar directories</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758305</commentid>
    <comment_count>1</comment_count>
      <attachid>428115</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-05-09 01:02:14 -0700</bug_when>
    <thetext>Created attachment 428115
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758331</commentid>
    <comment_count>2</comment_count>
      <attachid>428115</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-05-09 09:25:45 -0700</bug_when>
    <thetext>Comment on attachment 428115
Patch

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

&gt; Source/WebCore/html/FTPDirectoryDocument.cpp:169
&gt; +        return makeString(FormattedNumber::fixedWidth(*bytes / 1000., 2), &quot; KB&quot;);

I am not sure if our style guide has anything to say about it, but I am not a fan of the lack of a trailing 0 here. I much prefer &quot;1000.0&quot; to &quot;1000.&quot;. Same below.

&gt; Source/WebCore/html/FormController.cpp:69
&gt; -    size_t size = stateVector[index++].toUInt();
&gt; +    auto size = parseIntegerAllowingTrailingJunk&lt;size_t&gt;(stateVector[index++]).valueOr(0);

I realize this is keeping existing behavior, but it seems like returning WTF::nullopt on failure (and perhaps not allowing trailing junk as well) would be better here since I believe this is all state that we are serializing and expect to be consistent (though I will admit to not being completely familiar with this. 

That said, this could (and probably should) be done separately.

&gt; Source/WebCore/html/HTMLFrameSetElement.cpp:135
&gt; -            m_border = value.toInt();
&gt; +            m_border = parseIntegerAllowingTrailingJunk&lt;int&gt;(value).valueOr(0);

Again, not to be changed here, and what this patch is doing that is so great is really showing all the places where we should re-evaluate things, but it seems suspect that setting &lt;frameset border=&quot;apple&quot;&gt; behaves potentially differently than &lt;frameset&gt; due to  m_borderSet being set to true.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758337</commentid>
    <comment_count>3</comment_count>
      <attachid>428115</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-05-09 10:39:52 -0700</bug_when>
    <thetext>Comment on attachment 428115
Patch

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

&gt;&gt; Source/WebCore/html/FTPDirectoryDocument.cpp:169
&gt;&gt; +        return makeString(FormattedNumber::fixedWidth(*bytes / 1000., 2), &quot; KB&quot;);
&gt; 
&gt; I am not sure if our style guide has anything to say about it, but I am not a fan of the lack of a trailing 0 here. I much prefer &quot;1000.0&quot; to &quot;1000.&quot;. Same below.

Will fix.

&gt;&gt; Source/WebCore/html/FormController.cpp:69
&gt;&gt; +    auto size = parseIntegerAllowingTrailingJunk&lt;size_t&gt;(stateVector[index++]).valueOr(0);
&gt; 
&gt; I realize this is keeping existing behavior, but it seems like returning WTF::nullopt on failure (and perhaps not allowing trailing junk as well) would be better here since I believe this is all state that we are serializing and expect to be consistent (though I will admit to not being completely familiar with this. 
&gt; 
&gt; That said, this could (and probably should) be done separately.

Will hold off as you suggest, but I agree. Deserializing should probably be much stricter. In fact, if we had them, I’d want to use a mode that did not allow spaces or a leading &quot;+&quot;.

&gt;&gt; Source/WebCore/html/HTMLFrameSetElement.cpp:135
&gt;&gt; +            m_border = parseIntegerAllowingTrailingJunk&lt;int&gt;(value).valueOr(0);
&gt; 
&gt; Again, not to be changed here, and what this patch is doing that is so great is really showing all the places where we should re-evaluate things, but it seems suspect that setting &lt;frameset border=&quot;apple&quot;&gt; behaves potentially differently than &lt;frameset&gt; due to  m_borderSet being set to true.

I believe that may be intentional. There’s also &lt;frameset border&gt;, &lt;frameset border=&quot;&quot;&gt;, &lt;frameset border=&quot;0&quot;&gt; etc. etc.

By the way, checked and the HTML specification *does* call for &quot;allowing trailing junk&quot; behavior on numeric attribute parsing, although that is not the topic at hand here!

Hard to tell what right and wrong is, in the context of legacy almost-deprecated elements. If this was important I’d want it to be covered in WPT; so if fixing this would not already be a WPT progression, I would want to add something there.

I agree that we should not bundle this with the refactoring, but it sure would be nice to have it right.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758344</commentid>
    <comment_count>4</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-05-09 11:22:30 -0700</bug_when>
    <thetext>Committed r277245 (237514@main): &lt;https://commits.webkit.org/237514@main&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758345</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-05-09 11:23:14 -0700</bug_when>
    <thetext>&lt;rdar://problem/77717469&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428115</attachid>
            <date>2021-05-09 01:02:14 -0700</date>
            <delta_ts>2021-05-09 09:25:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225577-20210509010213.patch</filename>
            <type>text/plain</type>
            <size>32508</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3MjQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDMxNmNiZjA2ZTBhNjhmZmI3OWZjNWNk
ZTgwY2Q2YjJjNmYzMDM0NjIuLjZlYmEzZTg0ZDQ4YmQ5ZjRlZTJhZWZjOTFkNGZlNTgxMmZkNDU4
N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEtMDUtMDkgIERhcmluIEFkbGVyICA8ZGFyaW5A
YXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSB1c2VzIG9mIHRoZSBTdHJpbmc6OnRvSW50IGZh
bWlseSBvZiBmdW5jdGlvbnMgZnJvbSBXZWJDb3JlL2h0bWwgYW5kIHNpbWlsYXIgZGlyZWN0b3Jp
ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNTU3
NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3Rm
L3RleHQvU3RyaW5nQnVpbGRlci5oOiBBZGRlZCBjb252ZXJzaW9uIG9wZXJhdG9yIHRvIG1ha2Ug
YSBTdHJpbmdWaWV3LCBidWlsdCBvbiB0aGUgZXhpdGluZworICAgICAgICBpczhCaXQsIGNoYXJh
Y3RlcnM4LCBjaGFyYWN0ZXJzMTYgYW5kIGxlbmd0aCBmdW5jdGlvbnMuIFJlbW92ZWQgbm93LXVu
ZWVkZWQgZXF1YWwgZnVuY3Rpb24gYW5kCisgICAgICAgID09IGFuZCAhPSBvcGVyYXRvcnMgc2lu
Y2UgdGhlIFN0cmluZ1ZpZXcgb25lcyB3b3JrIGZvciB0aG9zZSBzYW1lIGNhc2VzIHdpdGggdGhl
IHNhbWUgc3ludGF4LgorCiAyMDIxLTA1LTA4ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNv
bT4KIAogICAgICAgICBSZW5hbWUgdG9JbnRlZ3JhbFR5cGUgdG8gcGFyc2VJbnRlZ2VyIGFuZCBw
cmVwYXJlIHRvIHVzZSBpdCB0byByZXBsYWNlIGFsbCBvdXIgaW50ZWdlci1wYXJzaW5nIGZ1bmN0
aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IGQ0MzhiNTNmNTI4YjMxOTNkMGQ4YTdlOTdlNWRlOWE3MTA4YzRk
MzUuLjVhZjE4NDNhODUyY2FiYjY0MWJjMWNmMjhkMjlmNDhiMzQ5YTk4N2YgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSw3NiBAQAorMjAyMS0wNS0wOSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5j
b20+CisKKyAgICAgICAgUmVtb3ZlIHVzZXMgb2YgdGhlIFN0cmluZzo6dG9JbnQgZmFtaWx5IG9m
IGZ1bmN0aW9ucyBmcm9tIFdlYkNvcmUvaHRtbCBhbmQgc2ltaWxhciBkaXJlY3RvcmllcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1NTc3CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBkb20vRG9jdW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmNyZWF0ZUV2ZW50KTogRml4IHNw
ZWxsaW5nIGVycm9yLgorCisgICAgICAgICogaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpwcm9jZXNzRmlsZXNpemVTdHJpbmcpOiBVc2UgcGFyc2VJbnRl
Z2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8dWludDY0X3Q+CisgICAgICAgIGluc3RlYWQgb2YgU3Ry
aW5nOjp0b1VJbnQ2NC4KKworICAgICAgICAqIGh0bWwvRm9ybUNvbnRyb2xsZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6ZGVzZXJpYWxpemVGb3JtQ29udHJvbFN0YXRlKTogVXNlIHBhcnNlSW50
ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPHNpemVfdD4KKyAgICAgICAgaW5zdGVhZCBvZiBTdHJp
bmc6OnRvVUludC4KKyAgICAgICAgKFdlYkNvcmU6OlNhdmVkRm9ybVN0YXRlOjpkZXNlcmlhbGl6
ZSk6IERpdHRvLgorCisgICAgICAgICogaHRtbC9IVE1MRm9udEVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6cGFyc2VGb250U2l6ZSk6IFVzZSBwYXJzZUludGVnZXI8aW50PiBpbnN0ZWFk
IG9mCisgICAgICAgIGNoYXJhY3RlcnNUb0ludFN0cmljdC4KKyAgICAgICAgKiBodG1sL0hUTUxG
cmFtZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZyYW1lRWxlbWVudDo6cGFy
c2VBdHRyaWJ1dGUpOiBVc2UgcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8aW50Pgor
ICAgICAgICBpbnN0ZWFkIG9mIFN0cmluZzo6dG9JbnQuCisgICAgICAgICogaHRtbC9IVE1MRnJh
bWVTZXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGcmFtZVNldEVsZW1lbnQ6
OnBhcnNlQXR0cmlidXRlKTogRGl0dG8uCisgICAgICAgICogaHRtbC9IVE1MSFJFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxIUkVsZW1lbnQ6OmNvbGxlY3RTdHlsZUZvclByZXNl
bnRhdGlvbkF0dHJpYnV0ZSk6IERpdHRvLgorICAgICAgICAqIGh0bWwvSFRNTElGcmFtZUVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElGcmFtZUVsZW1lbnQ6OmNvbGxlY3RTdHls
ZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0ZSk6IERpdHRvLgorICAgICAgICAqIGh0bWwvSFRNTElu
cHV0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjpwYXJz
ZUF0dHJpYnV0ZSk6IERpdHRvLgorICAgICAgICAqIGh0bWwvSFRNTExJRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTElFbGVtZW50OjpwYXJzZVZhbHVlKTogRGl0dG8uCisgICAg
ICAgICogaHRtbC9IVE1MTWFycXVlZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TE1hcnF1ZWVFbGVtZW50Ojpsb29wIGNvbnN0KTogRGl0dG8uCisgICAgICAgICogaHRtbC9IVE1M
VGFibGVDZWxsRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGFibGVDZWxsRWxl
bWVudDo6Y29sbGVjdFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0cmlidXRlKTogRGl0dG8uCisgICAg
ICAgICogaHRtbC9IVE1MVGFibGVDb2xFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxUYWJsZUNvbEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKTogRGl0dG8uCisgICAgICAgICogaHRt
bC9IVE1MVGFibGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUYWJsZUVsZW1l
bnQ6OnBhcnNlQXR0cmlidXRlKTogRGl0dG8uCisKKyAgICAgICAgKiBodG1sL0xpbmtJY29uQ29s
bGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxpbmtJY29uQ29sbGVjdG9yOjppY29uc09m
VHlwZXMpOiBVc2UgcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8dW5zaWduZWQ+Cisg
ICAgICAgIGluc3RlYWQgb2YgU3RyaW5nOjp0b1VJbnQuIEFsc28gcmVtb3ZlZCB1bm5lZWRlZCBj
YWxsIHRvIHN0cmlwV2hpdGVTcGFjZSBzaW5jZSB0aGUKKyAgICAgICAgaW50ZWdlciBwYXJzaW5n
IGZ1bmN0aW9uIGFscmVhZHkgc2tpcHMgbGVhZGluZyBhbmQgdHJhaWxpbmcgc3BhY2VzLgorCisg
ICAgICAgICogaHRtbC9NZWRpYUZyYWdtZW50VVJJUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhRnJhZ21lbnRVUklQYXJzZXI6OnBhcnNlTlBUVGltZSk6IFVzZSBwYXJzZUludGVn
ZXI8aW50PiBpbnN0ZWFkIG9mCisgICAgICAgIFN0cmluZzo6dG9JbnQuIFRoZSBzdHJpbmdzIHBh
c3NzZWQgaW4gYXJlIGZpeGVkIHNpemUgYW5kIGFsbCBkaWdpdHMuCisKKyAgICAgICAgKiBodG1s
L1R5cGVBaGVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUeXBlQWhlYWQ6OmhhbmRsZUV2ZW50
KTogVXNlIHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4KKyAgICAgICAgaW5z
dGVhZCBvZiBTdHJpbmc6OnRvSW50LgorCisgICAgICAgICogaHRtbC9VUkxEZWNvbXBvc2l0aW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlVSTERlY29tcG9zaXRpb246OnNldEhvc3QpOiBVc2Ug
cGFyc2VJbnRlZ2VyPHVpbnQxNl90PiBpbnN0ZWFkIG9mIHBhcnNlVUludDE2LgorICAgICAgICAo
V2ViQ29yZTo6cGFyc2VQb3J0KTogRGl0dG8uCisKKyAgICAgICAgKiBodG1sL3NoYWRvdy9EYXRl
VGltZU51bWVyaWNGaWVsZEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0ZVRpbWVO
dW1lcmljRmllbGRFbGVtZW50OjpoYW5kbGVLZXlib2FyZEV2ZW50KTogVXNlCisgICAgICAgIHBh
cnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4gaW5zdGVhZCBvZiBTdHJpbmc6OnRv
SW50LgorCisgICAgICAgICogaHRtbC90cmFjay9WVFRTY2FubmVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlZUVFNjYW5uZXI6OnNjYW5EaWdpdHMpOiBVc2UgcGFyc2VJbnRlZ2VyPGludD4gaW5z
dGVhZCBvZgorICAgICAgICBjaGFyYWN0ZXJzVG9JbnRTdHJpY3QuCisKKyAgICAgICAgKiBtYXRo
bWwvTWF0aE1MU2VsZWN0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNYXRoTUxTZWxl
Y3RFbGVtZW50OjpnZXRTZWxlY3RlZEFjdGlvbkNoaWxkQW5kSW5kZXgpOiBVc2UKKyAgICAgICAg
cGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8aW50PiBpbnN0ZWFkIG9mIEF0b21TdHJp
bmc6OnRvSW50LgorCiAyMDIxLTA1LTA4ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4K
IAogICAgICAgICBGYWN0b3Igb3V0IHBpeGVsIGJ1ZmZlciBmcm9tIERPTSBzcGVjaWZpYyBJbWFn
ZURhdGEgY2xhc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQnVpbGRl
ci5oIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmgKaW5kZXggNTk2ODQ2ODEz
NzdmM2ExMzI4ZTEyZmRkOWEyZTE2NGQ5YTUwMDcyMy4uMmY0ZTY2M2E5ZTNjNjZjYjJlNGQwZGZi
M2M4NWQ5NTFkOTZjOWZhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdC
dWlsZGVyLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmgKQEAgLTMy
Nyw2ICszMjcsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpczhCaXQoKSBjb25zdCB7IHJldHVybiBt
X2lzOEJpdDsgfQogICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGlzQWxsQVNDSUkoKSBjb25z
dDsKIAorICAgIG9wZXJhdG9yIFN0cmluZ1ZpZXcoKSBjb25zdDsKKwogICAgIHZvaWQgY2xlYXIo
KQogICAgIHsKICAgICAgICAgbV9sZW5ndGggPSAwOwpAQCAtMzc2LDYgKzM3OCwxMyBAQCBwcml2
YXRlOgogI2VuZGlmCiB9OwogCitpbmxpbmUgU3RyaW5nQnVpbGRlcjo6b3BlcmF0b3IgU3RyaW5n
VmlldygpIGNvbnN0Cit7CisgICAgaWYgKG1faXM4Qml0KQorICAgICAgICByZXR1cm4geyBjaGFy
YWN0ZXJzOCgpLCBsZW5ndGgoKSB9OworICAgIHJldHVybiB7IGNoYXJhY3RlcnMxNigpLCBsZW5n
dGgoKSB9OworfQorCiB0ZW1wbGF0ZTw+CiBBTFdBWVNfSU5MSU5FIExDaGFyKiBTdHJpbmdCdWls
ZGVyOjpnZXRCdWZmZXJDaGFyYWN0ZXJzPExDaGFyPigpCiB7CkBAIC00MTcsNiArNDI2LDcgQEAg
dm9pZCBTdHJpbmdCdWlsZGVyOjphcHBlbmQoU3RyaW5nVHlwZXMuLi4gc3RyaW5ncykKICAgICBh
cHBlbmRGcm9tQWRhcHRlcnMoU3RyaW5nVHlwZUFkYXB0ZXI8U3RyaW5nVHlwZXM+KHN0cmluZ3Mp
Li4uKTsKIH0KIAorLy8gRklYTUU6IE1vdmUgdGhpcyB0byBTdHJpbmdWaWV3IGFuZCBtYWtlIGl0
IHRha2UgYSBTdHJpbmdWaWV3IGluc3RlYWQgb2YgYSBTdHJpbmdCdWlsZGVyPwogdGVtcGxhdGU8
dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KIGJvb2wgZXF1YWwoY29uc3QgU3RyaW5nQnVpbGRlciYg
cywgY29uc3QgQ2hhcmFjdGVyVHlwZSogYnVmZmVyLCB1bnNpZ25lZCBsZW5ndGgpCiB7CkBAIC00
MjksMzMgKzQzOSw2IEBAIGJvb2wgZXF1YWwoY29uc3QgU3RyaW5nQnVpbGRlciYgcywgY29uc3Qg
Q2hhcmFjdGVyVHlwZSogYnVmZmVyLCB1bnNpZ25lZCBsZW5ndGgpCiAgICAgcmV0dXJuIGVxdWFs
KHMuY2hhcmFjdGVyczE2KCksIGJ1ZmZlciwgbGVuZ3RoKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5h
bWUgU3RyaW5nVHlwZT4KLWJvb2wgZXF1YWwoY29uc3QgU3RyaW5nQnVpbGRlciYgYSwgY29uc3Qg
U3RyaW5nVHlwZSYgYikKLXsKLSAgICBpZiAoYS5sZW5ndGgoKSAhPSBiLmxlbmd0aCgpKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoIWEubGVuZ3RoKCkpCi0gICAgICAgIHJldHVy
biB0cnVlOwotCi0gICAgaWYgKGEuaXM4Qml0KCkpIHsKLSAgICAgICAgaWYgKGIuaXM4Qml0KCkp
Ci0gICAgICAgICAgICByZXR1cm4gZXF1YWwoYS5jaGFyYWN0ZXJzOCgpLCBiLmNoYXJhY3RlcnM4
KCksIGEubGVuZ3RoKCkpOwotICAgICAgICByZXR1cm4gZXF1YWwoYS5jaGFyYWN0ZXJzOCgpLCBi
LmNoYXJhY3RlcnMxNigpLCBhLmxlbmd0aCgpKTsKLSAgICB9Ci0KLSAgICBpZiAoYi5pczhCaXQo
KSkKLSAgICAgICAgcmV0dXJuIGVxdWFsKGEuY2hhcmFjdGVyczE2KCksIGIuY2hhcmFjdGVyczgo
KSwgYS5sZW5ndGgoKSk7Ci0gICAgcmV0dXJuIGVxdWFsKGEuY2hhcmFjdGVyczE2KCksIGIuY2hh
cmFjdGVyczE2KCksIGEubGVuZ3RoKCkpOwotfQotCi1pbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IFN0cmluZ0J1aWxkZXImIGEsIGNvbnN0IFN0cmluZ0J1aWxkZXImIGIpIHsgcmV0dXJuIGVx
dWFsKGEsIGIpOyB9Ci1pbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0cmluZ0J1aWxkZXIm
IGEsIGNvbnN0IFN0cmluZ0J1aWxkZXImIGIpIHsgcmV0dXJuICFlcXVhbChhLCBiKTsgfQotaW5s
aW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHJpbmdCdWlsZGVyJiBhLCBjb25zdCBTdHJpbmcm
IGIpIHsgcmV0dXJuIGVxdWFsKGEsIGIpOyB9Ci1pbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0
IFN0cmluZ0J1aWxkZXImIGEsIGNvbnN0IFN0cmluZyYgYikgeyByZXR1cm4gIWVxdWFsKGEsIGIp
OyB9Ci1pbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0cmluZyYgYSwgY29uc3QgU3RyaW5n
QnVpbGRlciYgYikgeyByZXR1cm4gZXF1YWwoYiwgYSk7IH0KLWlubGluZSBib29sIG9wZXJhdG9y
IT0oY29uc3QgU3RyaW5nJiBhLCBjb25zdCBTdHJpbmdCdWlsZGVyJiBiKSB7IHJldHVybiAhZXF1
YWwoYiwgYSk7IH0KLQogdGVtcGxhdGU8PiBzdHJ1Y3QgSW50ZWdlclRvU3RyaW5nQ29udmVyc2lv
blRyYWl0PFN0cmluZ0J1aWxkZXI+IHsKICAgICB1c2luZyBSZXR1cm5UeXBlID0gdm9pZDsKICAg
ICB1c2luZyBBZGRpdGlvbmFsQXJndW1lbnRUeXBlID0gU3RyaW5nQnVpbGRlcjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwCmluZGV4IGQ5MGRiMjgxN2RjNzEyMzljYmY4OTkxMGVhZWMwNDE3NWM1YTUw
YTQuLjMxYWQyODAwYzYyOTEwOTc5YmRkNDM1MjVmMDgwMWE2NzgzNGJkMjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmNwcApAQCAtNTIwNyw3ICs1MjA3LDcgQEAgRXhjZXB0aW9uT3I8UmVmPEV2ZW50
Pj4gRG9jdW1lbnQ6OmNyZWF0ZUV2ZW50KGNvbnN0IFN0cmluZyYgdHlwZSkKICAgICAvLyBQbGVh
c2UgZG8gKm5vdCogYWRkIG5ldyBldmVudCBjbGFzc2VzIHRvIHRoaXMgZnVuY3Rpb24gdW5sZXNz
IHRoZXkgYXJlIHJlcXVpcmVkCiAgICAgLy8gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCB0aGUgRE9N
IHNwZWNpZmljYXRpb24gb3Igc29tZSBhY3R1YWwgbGVnYWN5IHdlYiBjb250ZW50LgogCi0gICAg
Ly8gVGhpcyBtZWNoYW5pc20gaXMgc3VwZXJjZWRlZCBieSB1c2Ugb2YgZXZlbnQgY29uc3RydWN0
b3JzLgorICAgIC8vIFRoaXMgbWVjaGFuaXNtIGlzIHN1cGVyc2VkZWQgYnkgdXNlIG9mIGV2ZW50
IGNvbnN0cnVjdG9ycy4KICAgICAvLyBUaGF0IGlzIHdoYXQgd2Ugc2hvdWxkIHVzZSBmb3IgYW55
IG5ldyBldmVudCBjbGFzc2VzLgogCiAgICAgLy8gVGhlIGZvbGxvd2luZyBzdHJpbmdzIGFyZSB0
aGUgb25lcyBmcm9tIHRoZSBET00gc3BlY2lmaWNhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcAppbmRleCBiMzc4MjA1YzQwOTljNmY0OWNkMzNmZjBk
ZmI1NjViYmUxNDliZTI0Li44NmI0ZGQzNTY0NDMzZWE4ZWY1OGI0NGY0OWRiZTZjY2MxYmVlYmYy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcApAQCAt
NDIsNiArNDIsNyBAQAogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAjaW5jbHVk
ZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVu
YXRlTnVtYmVycy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1RvSW50ZWdlckNvbnZlcnNp
b24uaD4KICNpbmNsdWRlIDx3dGYvdW5pY29kZS9DaGFyYWN0ZXJOYW1lcy5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CkBAIC0xNjAsMTggKzE2MSwxNSBAQCBzdGF0aWMgU3RyaW5nIHByb2Nlc3NG
aWxlc2l6ZVN0cmluZyhjb25zdCBTdHJpbmcmIHNpemUsIGJvb2wgaXNEaXJlY3RvcnkpCiAgICAg
aWYgKGlzRGlyZWN0b3J5KQogICAgICAgICByZXR1cm4gIi0tIl9zOwogCi0gICAgYm9vbCB2YWxp
ZDsKLSAgICBpbnQ2NF90IGJ5dGVzID0gc2l6ZS50b1VJbnQ2NCgmdmFsaWQpOwotICAgIGlmICgh
dmFsaWQpCisgICAgYXV0byBieXRlcyA9IHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5r
PHVpbnQ2NF90PihzaXplKTsKKyAgICBpZiAoIWJ5dGVzKQogICAgICAgICByZXR1cm4gdW5rbm93
bkZpbGVTaXplVGV4dCgpOwogCi0gICAgaWYgKGJ5dGVzIDwgMTAwMDAwMCkKLSAgICAgICAgcmV0
dXJuIG1ha2VTdHJpbmcoRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFdpZHRoKGJ5dGVzIC8gMTAwMC4s
IDIpLCAiIEtCIik7Ci0KLSAgICBpZiAoYnl0ZXMgPCAxMDAwMDAwMDAwKQotICAgICAgICByZXR1
cm4gbWFrZVN0cmluZyhGb3JtYXR0ZWROdW1iZXI6OmZpeGVkV2lkdGgoYnl0ZXMgLyAxMDAwMDAw
LiwgMiksICIgTUIiKTsKLQotICAgIHJldHVybiBtYWtlU3RyaW5nKEZvcm1hdHRlZE51bWJlcjo6
Zml4ZWRXaWR0aChieXRlcyAvIDEwMDAwMDAwMDAuLCAyKSwgIiBHQiIpOworICAgIGlmICgqYnl0
ZXMgPCAxMDAwMDAwKQorICAgICAgICByZXR1cm4gbWFrZVN0cmluZyhGb3JtYXR0ZWROdW1iZXI6
OmZpeGVkV2lkdGgoKmJ5dGVzIC8gMTAwMC4sIDIpLCAiIEtCIik7CisgICAgaWYgKCpieXRlcyA8
IDEwMDAwMDAwMDApCisgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKEZvcm1hdHRlZE51bWJlcjo6
Zml4ZWRXaWR0aCgqYnl0ZXMgLyAxMDAwMDAwLiwgMiksICIgTUIiKTsKKyAgICByZXR1cm4gbWFr
ZVN0cmluZyhGb3JtYXR0ZWROdW1iZXI6OmZpeGVkV2lkdGgoKmJ5dGVzIC8gMTAwMDAwMDAwMC4s
IDIpLCAiIEdCIik7CiB9CiAKIHN0YXRpYyBib29sIHdhc0xhc3REYXlPZk1vbnRoKGludCB5ZWFy
LCBpbnQgbW9udGgsIGludCBkYXkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zv
cm1Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUNvbnRyb2xsZXIuY3Bw
CmluZGV4IDI3MmEyYjBlN2Q1MzcyNWE2ZDU0MzljOTI1NzVhYWZkMDliZWIyMGUuLjZhNDRkNzI3
MjZhOTg3NTg0MjY5MTRmOWM3NzNjMTFmZDViNzA4YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvRm9ybUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9y
bUNvbnRyb2xsZXIuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSA8d3RmL05ldmVyRGVz
dHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlTnVtYmVycy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBA
IC02NSw3ICs2Niw3IEBAIHN0YXRpYyBpbmxpbmUgT3B0aW9uYWw8Rm9ybUNvbnRyb2xTdGF0ZT4g
ZGVzZXJpYWxpemVGb3JtQ29udHJvbFN0YXRlKGNvbnN0IFZlY3RvCiB7CiAgICAgaWYgKGluZGV4
ID49IHN0YXRlVmVjdG9yLnNpemUoKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAg
ICBzaXplX3Qgc2l6ZSA9IHN0YXRlVmVjdG9yW2luZGV4KytdLnRvVUludCgpOworICAgIGF1dG8g
c2l6ZSA9IHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPHNpemVfdD4oc3RhdGVWZWN0
b3JbaW5kZXgrK10pLnZhbHVlT3IoMCk7CiAgICAgaWYgKGluZGV4ICsgc2l6ZSA+IHN0YXRlVmVj
dG9yLnNpemUoKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICBWZWN0b3I8U3Ry
aW5nPiBzdWJ2ZWN0b3I7CkBAIC0xOTYsOCArMTk3LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFNhdmVk
Rm9ybVN0YXRlPiBTYXZlZEZvcm1TdGF0ZTo6ZGVzZXJpYWxpemUoY29uc3QgVmVjdG9yPFN0cmlu
Zz4KIHsKICAgICBpZiAoaW5kZXggPj0gc3RhdGVWZWN0b3Iuc2l6ZSgpKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLSAgICAvLyBGSVhNRTogV2UgbmVlZCBTdHJpbmc6OnRvU2l6ZVQoKS4KLSAg
ICBzaXplX3QgaXRlbUNvdW50ID0gc3RhdGVWZWN0b3JbaW5kZXgrK10udG9VSW50KCk7CisgICAg
YXV0byBpdGVtQ291bnQgPSBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxzaXplX3Q+
KHN0YXRlVmVjdG9yW2luZGV4KytdKS52YWx1ZU9yKDApOwogICAgIGlmICghaXRlbUNvdW50KQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBhdXRvIHNhdmVkRm9ybVN0YXRlID0gbWFrZVVu
aXF1ZTxTYXZlZEZvcm1TdGF0ZT4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEZvbnRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvbnRFbGVtZW50
LmNwcAppbmRleCBiMWE2ZmQ3ODJkNzFkOGQ4NWJlMzlmZWY2YTc1MGU4ZTMyYTUzMDg3Li4wOTJk
Y2QxOTNiZTgwMzg5ZDdkMTlkZTQzMmMwOWVhMTQyNTFiOGYwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxGb250RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRm9udEVsZW1lbnQuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiU3R5bGVQ
cm9wZXJ0aWVzLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVG9J
bnRlZ2VyQ29udmVyc2lvbi5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTEwOCwxMiAr
MTA5LDcgQEAgc3RhdGljIGJvb2wgcGFyc2VGb250U2l6ZShjb25zdCBDaGFyYWN0ZXJUeXBlKiBj
aGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgsIGludCYKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAgICAgLy8gU3RlcCA4Ci0gICAgaW50IHZhbHVlOwotCi0gICAgaWYgKGRpZ2l0cy5pczhCaXQo
KSkKLSAgICAgICAgdmFsdWUgPSBjaGFyYWN0ZXJzVG9JbnRTdHJpY3QoZGlnaXRzLmNoYXJhY3Rl
cnM4KCksIGRpZ2l0cy5sZW5ndGgoKSk7Ci0gICAgZWxzZQotICAgICAgICB2YWx1ZSA9IGNoYXJh
Y3RlcnNUb0ludFN0cmljdChkaWdpdHMuY2hhcmFjdGVyczE2KCksIGRpZ2l0cy5sZW5ndGgoKSk7
CisgICAgaW50IHZhbHVlID0gcGFyc2VJbnRlZ2VyPGludD4oZGlnaXRzKS52YWx1ZU9yKDApOwog
CiAgICAgLy8gU3RlcCA5CiAgICAgaWYgKG1vZGUgPT0gUmVsYXRpdmVQbHVzKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudC5jcHAKaW5kZXggZjJkZTk4YjRkZTAxODIwZTU1MDk2
MmYwZDBjYWFhNTNkNjVmMGVhMS4uNDdmMGI5NTQ3MWVkOWEwMDgwMzRjYzgyNmJhMzYyNWY3ZDJl
ZWZkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnQuY3BwCkBAIC0yOSw2
ICsyOSw3IEBACiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiUmVuZGVyRnJhbWUu
aCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBA
IC04Miw3ICs4Myw3IEBAIGludCBIVE1MRnJhbWVFbGVtZW50OjpkZWZhdWx0VGFiSW5kZXgoKSBj
b25zdAogdm9pZCBIVE1MRnJhbWVFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAobmFtZSA9
PSBmcmFtZWJvcmRlckF0dHIpIHsKLSAgICAgICAgbV9mcmFtZUJvcmRlciA9IHZhbHVlLnRvSW50
KCk7CisgICAgICAgIG1fZnJhbWVCb3JkZXIgPSBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5n
SnVuazxpbnQ+KHZhbHVlKS52YWx1ZU9yKDApOwogICAgICAgICBtX2ZyYW1lQm9yZGVyU2V0ID0g
IXZhbHVlLmlzTnVsbCgpOwogICAgICAgICAvLyBGSVhNRTogSWYgd2UgYXJlIGFscmVhZHkgYXR0
YWNoZWQsIHRoaXMgaGFzIG5vIGVmZmVjdC4KICAgICB9IGVsc2UgaWYgKG5hbWUgPT0gbm9yZXNp
emVBdHRyKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmNwcApp
bmRleCA0NjVhMDI5ZDNiY2IxN2QwNGI5NGI2ZTVhNTliMTYxNTY2NmViOTkzLi41Yzk2NTUwM2E0
ZGFmM2QxMjcwZTAwMTMzMzgwNGIyNDY3ZGZmN2U1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEZyYW1lU2V0RWxlbWVudC5jcHAKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlICJSZW5k
ZXJGcmFtZVNldC5oIgogI2luY2x1ZGUgIlRleHQuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9j
SW5saW5lcy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24u
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xMzEsNyArMTMyLDcgQEAgdm9pZCBIVE1M
RnJhbWVTZXRFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1l
LCBjb25zdCBBdG9tU3QKIAogICAgIGlmIChuYW1lID09IGJvcmRlckF0dHIpIHsKICAgICAgICAg
aWYgKCF2YWx1ZS5pc051bGwoKSkgewotICAgICAgICAgICAgbV9ib3JkZXIgPSB2YWx1ZS50b0lu
dCgpOworICAgICAgICAgICAgbV9ib3JkZXIgPSBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5n
SnVuazxpbnQ+KHZhbHVlKS52YWx1ZU9yKDApOwogICAgICAgICAgICAgbV9ib3JkZXJTZXQgPSB0
cnVlOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIG1fYm9yZGVyU2V0ID0gZmFsc2U7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxIUkVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MSFJFbGVtZW50LmNwcAppbmRleCAyNTljNWQxMmZjNmJhOGRmOGE4
YWUyNTc0N2E3NmU0NTZlY2YxYzM0Li43MjcyYTVhN2U2ZWQ3ODYwY2ZkM2NmM2I0Mzk2NjYxOTRh
N2M5YzE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxIUkVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEhSRWxlbWVudC5jcHAKQEAgLTI5LDYgKzI5
LDcgQEAKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJTdHlsZVByb3BlcnRpZXMu
aCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBA
IC03Myw5ICs3NCw3IEBAIHZvaWQgSFRNTEhSRWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yUHJlc2Vu
dGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hCiAgICAgICAgICAgICBhZGRQ
cm9wZXJ0eVRvUHJlc2VudGF0aW9uQXR0cmlidXRlU3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5TWFy
Z2luUmlnaHQsIENTU1ZhbHVlQXV0byk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKG5hbWUg
PT0gd2lkdGhBdHRyKSB7Ci0gICAgICAgIGJvb2wgb2s7Ci0gICAgICAgIGludCB2ID0gdmFsdWUu
dG9JbnQoJm9rKTsKLSAgICAgICAgaWYgKG9rICYmICF2KQorICAgICAgICBpZiAoYXV0byB2YWx1
ZUludGVnZXIgPSBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+KHZhbHVlKTsg
dmFsdWVJbnRlZ2VyICYmICEqdmFsdWVJbnRlZ2VyKQogICAgICAgICAgICAgYWRkUHJvcGVydHlU
b1ByZXNlbnRhdGlvbkF0dHJpYnV0ZVN0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eVdpZHRoLCAxLCBD
U1NVbml0VHlwZTo6Q1NTX1BYKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgYWRkSFRNTExl
bmd0aFRvU3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5V2lkdGgsIHZhbHVlKTsKQEAgLTkyLDggKzkx
LDcgQEAgdm9pZCBIVE1MSFJFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmEKICAgICAgICAgICAgIHN0eWxlLnNldFByb3Bl
cnR5KENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yLCBkYXJrR3JheVZhbHVlKTsKICAgICAgICAg
fQogICAgIH0gZWxzZSBpZiAobmFtZSA9PSBzaXplQXR0cikgewotICAgICAgICBTdHJpbmdJbXBs
KiBzaSA9IHZhbHVlLmltcGwoKTsKLSAgICAgICAgaW50IHNpemUgPSBzaS0+dG9JbnQoKTsKKyAg
ICAgICAgaW50IHNpemUgPSBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+KHZh
bHVlKS52YWx1ZU9yKDApOwogICAgICAgICBpZiAoc2l6ZSA8PSAxKQogICAgICAgICAgICAgYWRk
UHJvcGVydHlUb1ByZXNlbnRhdGlvbkF0dHJpYnV0ZVN0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eUJv
cmRlckJvdHRvbVdpZHRoLCAwLCBDU1NVbml0VHlwZTo6Q1NTX1BYKTsKICAgICAgICAgZWxzZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmNwcAppbmRleCBkODNlNTk0ZGY5
Zjc3YzdjYjgwZmViMjExMWEyOGI1OWI4MmEyYjc4Li4yN2ZlZmViNTdiOWMwNTY1NWYxZGRmNWRh
YWIyN2JlOTQwNDg2NmUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJh
bWVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50
LmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIlNjcmlwdGFibGVEb2N1bWVudFBhcnNl
ci5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGlu
ZXMuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdUb0ludGVnZXJDb252ZXJzaW9uLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtODYsNyArODcsNyBAQCB2b2lkIEhUTUxJRnJhbWVF
bGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZQogICAgIGVsc2UgaWYgKG5hbWUgPT0gZnJhbWVib3JkZXJBdHRyKSB7CiAgICAgICAg
IC8vIEZyYW1lIGJvcmRlciBkb2Vzbid0IHJlYWxseSBtYXRjaCB0aGUgSFRNTDQgc3BlYyBkZWZp
bml0aW9uIGZvciBpZnJhbWVzLiBJdCBzaW1wbHkgYWRkcwogICAgICAgICAvLyBhIHByZXNlbnRh
dGlvbmFsIGhpbnQgdGhhdCB0aGUgYm9yZGVyIHNob3VsZCBiZSBvZmYgaWYgc2V0IHRvIHplcm8u
Ci0gICAgICAgIGlmICghdmFsdWUudG9JbnQoKSkgeworICAgICAgICBpZiAoIXBhcnNlSW50ZWdl
ckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4odmFsdWUpLnZhbHVlT3IoMCkpIHsKICAgICAgICAg
ICAgIC8vIEFkZCBhIHJ1bGUgdGhhdCBudWxscyBvdXQgb3VyIGJvcmRlciB3aWR0aC4KICAgICAg
ICAgICAgIGFkZFByb3BlcnR5VG9QcmVzZW50YXRpb25BdHRyaWJ1dGVTdHlsZShzdHlsZSwgQ1NT
UHJvcGVydHlCb3JkZXJXaWR0aCwgMCwgQ1NTVW5pdFR5cGU6OkNTU19QWCk7CiAgICAgICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCmluZGV4IDk2MDQxNTFhZDNh
N2YyYjI4MjcyYWIzN2M3YmIzYjliNzY5MWYyNTQuLmNlNmM5Yjk5MDZhOTA0ZjNiZWVmMTE1OWZk
NmNiN2NjMGE5Y2UxMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNw
cApAQCAtNzEsNiArNzEsNyBAQAogI2luY2x1ZGUgPHd0Zi9MYW5ndWFnZS5oPgogI2luY2x1ZGUg
PHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgorI2luY2x1ZGUgPHd0Zi90
ZXh0L1N0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uaD4KIAogI2lmIEVOQUJMRShUT1VDSF9FVkVO
VFMpCiAjaW5jbHVkZSAiVG91Y2hFdmVudC5oIgpAQCAtODAxLDcgKzgwMiw3IEBAIHZvaWQgSFRN
TElucHV0RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwg
Y29uc3QgQXRvbVN0cmluCiAgICAgICAgIGlmIChtX3NpemUgIT0gb2xkU2l6ZSAmJiByZW5kZXJl
cigpKQogICAgICAgICAgICAgcmVuZGVyZXIoKS0+c2V0TmVlZHNMYXlvdXRBbmRQcmVmV2lkdGhz
UmVjYWxjKCk7CiAgICAgfSBlbHNlIGlmIChuYW1lID09IHJlc3VsdHNBdHRyKQotICAgICAgICBt
X21heFJlc3VsdHMgPSAhdmFsdWUuaXNOdWxsKCkgPyBzdGQ6Om1pbih2YWx1ZS50b0ludCgpLCBt
YXhTYXZlZFJlc3VsdHMpIDogLTE7CisgICAgICAgIG1fbWF4UmVzdWx0cyA9IHZhbHVlLmlzTnVs
bCgpID8gLTEgOiBzdGQ6Om1pbihwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+
KHZhbHVlKS52YWx1ZU9yKDApLCBtYXhTYXZlZFJlc3VsdHMpOwogICAgIGVsc2UgaWYgKG5hbWUg
PT0gYXV0b3NhdmVBdHRyIHx8IG5hbWUgPT0gaW5jcmVtZW50YWxBdHRyKQogICAgICAgICBpbnZh
bGlkYXRlU3R5bGVGb3JTdWJ0cmVlKCk7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBtYXhBdHRyIHx8
IG5hbWUgPT0gbWluQXR0ciB8fCBuYW1lID09IG11bHRpcGxlQXR0ciB8fCBuYW1lID09IHBhdHRl
cm5BdHRyIHx8IG5hbWUgPT0gcHJlY2lzaW9uQXR0ciB8fCBuYW1lID09IHN0ZXBBdHRyKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTElFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTExJRWxlbWVudC5jcHAKaW5kZXggOGUyNmI2MTA4MjA4ZGM1OGRjOWVi
ZDVjYWZmYjE4ZTU3NDM3Yzg5MC4uZWNlMjllYTIyMDc5N2Q5OWU0M2M5ZjcxMDBiZjRkZGE4MmU5
ZmNmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTElFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMSUVsZW1lbnQuY3BwCkBAIC0xMTcsMTMgKzEx
Nyw3IEBAIHZvaWQgSFRNTExJRWxlbWVudDo6ZGlkQXR0YWNoUmVuZGVyZXJzKCkKIGlubGluZSB2
b2lkIEhUTUxMSUVsZW1lbnQ6OnBhcnNlVmFsdWUoY29uc3QgQXRvbVN0cmluZyYgdmFsdWUpCiB7
CiAgICAgQVNTRVJUKHJlbmRlcmVyKCkpOwotCi0gICAgYm9vbCB2YWx1ZU9LOwotICAgIGludCBy
ZXF1ZXN0ZWRWYWx1ZSA9IHZhbHVlLnRvSW50KCZ2YWx1ZU9LKTsKLSAgICBpZiAodmFsdWVPSykK
LSAgICAgICAgZG93bmNhc3Q8UmVuZGVyTGlzdEl0ZW0+KCpyZW5kZXJlcigpKS5zZXRFeHBsaWNp
dFZhbHVlKHJlcXVlc3RlZFZhbHVlKTsKLSAgICBlbHNlCi0gICAgICAgIGRvd25jYXN0PFJlbmRl
ckxpc3RJdGVtPigqcmVuZGVyZXIoKSkuc2V0RXhwbGljaXRWYWx1ZShXVEY6Om51bGxvcHQpOwor
ICAgIGRvd25jYXN0PFJlbmRlckxpc3RJdGVtPigqcmVuZGVyZXIoKSkuc2V0RXhwbGljaXRWYWx1
ZShwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+KHZhbHVlKSk7CiB9CiAKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1hcnF1ZWVFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1hcnF1ZWVFbGVtZW50LmNwcAppbmRleCA1MjNjYzFh
NjBlY2NlODBmNDdhZmZmY2U1Yjk2NzFhMDQ0ZTU3ZGQwLi5jNDgwOWU5ZmFkZjdmYmVmNWFiMmJl
NjAwYWI0NGJmMTg4MDgxN2QxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
YXJxdWVlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWFycXVlZUVs
ZW1lbnQuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXJTY3JvbGxh
YmxlQXJlYS5oIgogI2luY2x1ZGUgIlJlbmRlck1hcnF1ZWUuaCIKICNpbmNsdWRlIDx3dGYvSXNv
TWFsbG9jSW5saW5lcy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1RvSW50ZWdlckNvbnZl
cnNpb24uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xNDcsOSArMTQ4LDggQEAgdm9p
ZCBIVE1MTWFycXVlZUVsZW1lbnQ6OnNldFNjcm9sbERlbGF5KHVuc2lnbmVkIHNjcm9sbERlbGF5
KQogICAgIAogaW50IEhUTUxNYXJxdWVlRWxlbWVudDo6bG9vcCgpIGNvbnN0CiB7Ci0gICAgYm9v
bCBvazsKLSAgICBpbnQgbG9vcFZhbHVlID0gYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlv
bihsb29wQXR0cikudG9JbnQoJm9rKTsKLSAgICByZXR1cm4gb2sgJiYgbG9vcFZhbHVlID4gMCA/
IGxvb3BWYWx1ZSA6IC0xOworICAgIGF1dG8gbG9vcFZhbHVlID0gcGFyc2VJbnRlZ2VyQWxsb3dp
bmdUcmFpbGluZ0p1bms8aW50PihhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGxvb3BB
dHRyKSk7CisgICAgcmV0dXJuIGxvb3BWYWx1ZSAmJiAqbG9vcFZhbHVlID4gMCA/ICpsb29wVmFs
dWUgOiAtMTsKIH0KICAgICAKIEV4Y2VwdGlvbk9yPHZvaWQ+IEhUTUxNYXJxdWVlRWxlbWVudDo6
c2V0TG9vcChpbnQgbG9vcCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRh
YmxlQ2VsbEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDZWxsRWxl
bWVudC5jcHAKaW5kZXggYzA2YTNlNTMzMzgzYTFkNTIxYzNiNjlhZjJjNWZiYjJmM2RkNGM2OS4u
Njg3MzgwNTg3YTFkNTllNDM2OWZlY2JhM2Y0MzIyYTg3ZWI0NDhlOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDZWxsRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVGFibGVDZWxsRWxlbWVudC5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNp
bmNsdWRlICJIVE1MVGFibGVFbGVtZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVyVGFibGVDZWxsLmgi
CiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdUb0ludGVnZXJDb252ZXJzaW9uLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAt
MTAyLDE3ICsxMDMsMTEgQEAgdm9pZCBIVE1MVGFibGVDZWxsRWxlbWVudDo6Y29sbGVjdFN0eWxl
Rm9yUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE4KICAgICBpZiAobmFtZSA9
PSBub3dyYXBBdHRyKQogICAgICAgICBhZGRQcm9wZXJ0eVRvUHJlc2VudGF0aW9uQXR0cmlidXRl
U3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5V2hpdGVTcGFjZSwgQ1NTVmFsdWVXZWJraXROb3dyYXAp
OwogICAgIGVsc2UgaWYgKG5hbWUgPT0gd2lkdGhBdHRyKSB7Ci0gICAgICAgIGlmICghdmFsdWUu
aXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBpbnQgd2lkdGhJbnQgPSB2YWx1ZS50b0ludCgpOwot
ICAgICAgICAgICAgaWYgKHdpZHRoSW50ID4gMCkgLy8gd2lkdGg9IjAiIGlzIGlnbm9yZWQgZm9y
IGNvbXBhdGliaWxpdHkgd2l0aCBXaW5JRS4KLSAgICAgICAgICAgICAgICBhZGRIVE1MTGVuZ3Ro
VG9TdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlXaWR0aCwgdmFsdWUpOwotICAgICAgICB9CisgICAg
ICAgIGlmIChwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+KHZhbHVlKS52YWx1
ZU9yKDApID4gMCkgLy8gd2lkdGg9IjAiIGlzIGlnbm9yZWQgZm9yIGNvbXBhdGliaWxpdHkgd2l0
aCBXaW5JRS4KKyAgICAgICAgICAgIGFkZEhUTUxMZW5ndGhUb1N0eWxlKHN0eWxlLCBDU1NQcm9w
ZXJ0eVdpZHRoLCB2YWx1ZSk7CiAgICAgfSBlbHNlIGlmIChuYW1lID09IGhlaWdodEF0dHIpIHsK
LSAgICAgICAgaWYgKCF2YWx1ZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIGludCBoZWlnaHRJ
bnQgPSB2YWx1ZS50b0ludCgpOwotICAgICAgICAgICAgaWYgKGhlaWdodEludCA+IDApIC8vIGhl
aWdodD0iMCIgaXMgaWdub3JlZCBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIFdpbklFLgotICAgICAg
ICAgICAgICAgIGFkZEhUTUxMZW5ndGhUb1N0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eUhlaWdodCwg
dmFsdWUpOwotICAgICAgICB9CisgICAgICAgIGlmIChwYXJzZUludGVnZXJBbGxvd2luZ1RyYWls
aW5nSnVuazxpbnQ+KHZhbHVlKS52YWx1ZU9yKDApID4gMCkgLy8gaGVpZ2h0PSIwIiBpcyBpZ25v
cmVkIGZvciBjb21wYXRpYmlsaXR5IHdpdGggV2luSUUuCisgICAgICAgICAgICBhZGRIVE1MTGVu
Z3RoVG9TdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlIZWlnaHQsIHZhbHVlKTsKICAgICB9IGVsc2UK
ICAgICAgICAgSFRNTFRhYmxlUGFydEVsZW1lbnQ6OmNvbGxlY3RTdHlsZUZvclByZXNlbnRhdGlv
bkF0dHJpYnV0ZShuYW1lLCB2YWx1ZSwgc3R5bGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVGFibGVDb2xFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFRhYmxlQ29sRWxlbWVudC5jcHAKaW5kZXggZjRkNDQ3NTgxMWU4YTQwY2EzMmE2N2JjZjZi
MjE2YzI1M2E3ZTdhMy4uMDNhZmZjY2RiYmMzYWUwN2ExMjI5MDhjMTY0ZDk1OGM1MjNiNzJjYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDb2xFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNvbEVsZW1lbnQuY3BwCkBAIC03OSw3
ICs3OSw3IEBAIHZvaWQgSFRNTFRhYmxlQ29sRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0CiAgICAgICAgIGlmICghdmFsdWUuaXNF
bXB0eSgpKSB7CiAgICAgICAgICAgICBpZiAoaXM8UmVuZGVyVGFibGVDb2w+KHJlbmRlcmVyKCkp
KSB7CiAgICAgICAgICAgICAgICAgUmVuZGVyVGFibGVDb2wmIGNvbCA9IGRvd25jYXN0PFJlbmRl
clRhYmxlQ29sPigqcmVuZGVyZXIoKSk7Ci0gICAgICAgICAgICAgICAgaW50IG5ld1dpZHRoID0g
d2lkdGgoKS50b0ludCgpOworICAgICAgICAgICAgICAgIGludCBuZXdXaWR0aCA9IHBhcnNlSW50
ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4od2lkdGgoKSkudmFsdWVPcigwKTsKICAgICAg
ICAgICAgICAgICBpZiAobmV3V2lkdGggIT0gY29sLndpZHRoKCkpCiAgICAgICAgICAgICAgICAg
ICAgIGNvbC5zZXROZWVkc0xheW91dEFuZFByZWZXaWR0aHNSZWNhbGMoKTsKICAgICAgICAgICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuY3BwCmluZGV4IGE1ZjgwZmUw
YzkxZjg4ZDk2MGFiN2ZlN2FmMDY4YTQ4Yjg5NjQ1ZDcuLjRjMDM3NjBmMTYxNDk4MTZmOWFhN2Jm
MGYyY2FlYmVjZTM2ZjYxOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRh
YmxlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50
LmNwcApAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgIlN0eWxlUHJvcGVydGllcy5oIgogI2lu
Y2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCkBAIC0zOTksNyArNDAwLDcgQEAgdm9pZCBIVE1MVGFibGVFbGVtZW50Ojpw
YXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaW4K
ICAgICAgICAgICAgIG1fcnVsZXNBdHRyID0gQWxsUnVsZXM7CiAgICAgfSBlbHNlIGlmIChuYW1l
ID09IGNlbGxwYWRkaW5nQXR0cikgewogICAgICAgICBpZiAoIXZhbHVlLmlzRW1wdHkoKSkKLSAg
ICAgICAgICAgIG1fcGFkZGluZyA9IHN0ZDo6bWF4KDAsIHZhbHVlLnRvSW50KCkpOworICAgICAg
ICAgICAgbV9wYWRkaW5nID0gc3RkOjptYXgoMCwgcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGlu
Z0p1bms8aW50Pih2YWx1ZSkudmFsdWVPcigwKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAg
IG1fcGFkZGluZyA9IDE7CiAgICAgfSBlbHNlIGlmIChuYW1lID09IGNvbHNBdHRyKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0xpbmtJY29uQ29sbGVjdG9yLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvTGlua0ljb25Db2xsZWN0b3IuY3BwCmluZGV4IGVlMjVkODEyNWY3MzJh
ZTcyNzA0YmJjNmI1ZmI1YjhiZDE4MTc1ODAuLjI4MTkyNDY5Njc2YjY1Njc3MTg2ODcxMGNiN2Y1
MmRhZmZhN2NjYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTGlua0ljb25Db2xs
ZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTGlua0ljb25Db2xsZWN0b3IuY3Bw
CkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiSFRNTEhlYWRFbGVtZW50LmgiCiAjaW5jbHVk
ZSAiSFRNTExpbmtFbGVtZW50LmgiCiAjaW5jbHVkZSAiTGlua0ljb25UeXBlLmgiCisjaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKQEAgLTk2LDEzICs5Nyw4IEBAIGF1dG8gTGlua0ljb25Db2xsZWN0b3I6Omljb25z
T2ZUeXBlcyhPcHRpb25TZXQ8TGlua0ljb25UeXBlPiBpY29uVHlwZXMpIC0+IFZlY3RvCiAgICAg
ICAgIC8vIHBhcnQgb2YgdGhlIHNpemUsICI2MHg3MCIgYmVjb21lcyAiNjAiLiBUaGlzIGlzIGZv
ciBjb21wYXRpYmlsaXR5IHJlYXNvbnMKICAgICAgICAgLy8gYW5kIGlzIHByb2JhYmx5IGdvb2Qg
ZW5vdWdoIGZvciBub3cuCiAgICAgICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBpY29uU2l6ZTsKLQot
ICAgICAgICBpZiAobGlua0VsZW1lbnQuc2l6ZXMoKS5sZW5ndGgoKSkgewotICAgICAgICAgICAg
Ym9vbCBvazsKLSAgICAgICAgICAgIHVuc2lnbmVkIHNpemUgPSBsaW5rRWxlbWVudC5zaXplcygp
Lml0ZW0oMCkuc3RyaW5nKCkuc3RyaXBXaGl0ZVNwYWNlKCkudG9VSW50KCZvayk7Ci0gICAgICAg
ICAgICBpZiAob2spCi0gICAgICAgICAgICAgICAgaWNvblNpemUgPSBzaXplOwotICAgICAgICB9
CisgICAgICAgIGlmIChsaW5rRWxlbWVudC5zaXplcygpLmxlbmd0aCgpKQorICAgICAgICAgICAg
aWNvblNpemUgPSBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1bnNpZ25lZD4obGlu
a0VsZW1lbnQuc2l6ZXMoKS5pdGVtKDApKTsKIAogICAgICAgICBWZWN0b3I8c3RkOjpwYWlyPFN0
cmluZywgU3RyaW5nPj4gYXR0cmlidXRlczsKICAgICAgICAgaWYgKGxpbmtFbGVtZW50Lmhhc0F0
dHJpYnV0ZXMoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUZyYWdt
ZW50VVJJUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFGcmFnbWVudFVSSVBh
cnNlci5jcHAKaW5kZXggNWI4NDU0MWVhMGRjZjUyMjQyODJjMzFjZjc0YmI0NmVhMjU1MmQzYS4u
ZjQ2N2Y0ZjEzOGQ3ZTc1NWRmYzY1YWFlMmQ5MWJlMGM2ZjhlYjMyMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUZyYWdtZW50VVJJUGFyc2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL01lZGlhRnJhZ21lbnRVUklQYXJzZXIuY3BwCkBAIC0yNCwxMSArMjQsMTAg
QEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTWVkaWFGcmFnbWVudFVS
SVBhcnNlci5oIgogCiAjaWYgRU5BQkxFKFZJREVPKQogCi0jaW5jbHVkZSAiTWVkaWFGcmFnbWVu
dFVSSVBhcnNlci5oIgotCiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKICNpbmNsdWRlICJNZWRp
YVBsYXllci5oIgogI2luY2x1ZGUgIlByb2Nlc3NpbmdJbnN0cnVjdGlvbi5oIgpAQCAtMzYsMTMg
KzM1LDEzIEBACiAjaW5jbHVkZSAiVGV4dC5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+Ci0jaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVG9JbnRlZ2VyQ29udmVy
c2lvbi5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNvbnN0IGludCBzZWNvbmRzUGVySG91
ciA9IDM2MDA7Ci1jb25zdCBpbnQgc2Vjb25kc1Blck1pbnV0ZSA9IDYwOwotY29uc3QgdW5zaWdu
ZWQgbnB0SWRlbnRpZmllckxlbmd0aCA9IDQ7IC8vICJucHQ6IgorY29uc3RleHByIGludCBzZWNv
bmRzUGVySG91ciA9IDM2MDA7Citjb25zdGV4cHIgaW50IHNlY29uZHNQZXJNaW51dGUgPSA2MDsK
K2NvbnN0ZXhwciB1bnNpZ25lZCBucHRJZGVudGlmaWVyTGVuZ3RoID0gNDsgLy8gIm5wdDoiCiAK
IHN0YXRpYyBTdHJpbmcgY29sbGVjdERpZ2l0cyhjb25zdCBMQ2hhciogaW5wdXQsIHVuc2lnbmVk
IGxlbmd0aCwgdW5zaWduZWQmIHBvc2l0aW9uKQogewpAQCAtMjYwLDcgKzI1OSw3IEBAIGJvb2wg
TWVkaWFGcmFnbWVudFVSSVBhcnNlcjo6cGFyc2VOUFRUaW1lKGNvbnN0IExDaGFyKiB0aW1lU3Ry
aW5nLCB1bnNpZ25lZCBsZW5nCiAgICAgLy8gbnB0LXNzICAgICAgICA9ICAgMkRJR0lUICAgICAg
OyAwLTU5CiAKICAgICBTdHJpbmcgZGlnaXRzMSA9IGNvbGxlY3REaWdpdHModGltZVN0cmluZywg
bGVuZ3RoLCBvZmZzZXQpOwotICAgIGludCB2YWx1ZTEgPSBkaWdpdHMxLnRvSW50KCk7CisgICAg
aW50IHZhbHVlMSA9IHBhcnNlSW50ZWdlcjxpbnQ+KGRpZ2l0czEpLnZhbHVlT3IoMCk7CiAgICAg
aWYgKG9mZnNldCA+PSBsZW5ndGggfHwgdGltZVN0cmluZ1tvZmZzZXRdID09ICcsJykgewogICAg
ICAgICB0aW1lID0gTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKHZhbHVlMSk7CiAgICAgICAg
IHJldHVybiB0cnVlOwpAQCAtMjg3LDkgKzI4Niw5IEBAIGJvb2wgTWVkaWFGcmFnbWVudFVSSVBh
cnNlcjo6cGFyc2VOUFRUaW1lKGNvbnN0IExDaGFyKiB0aW1lU3RyaW5nLCB1bnNpZ25lZCBsZW5n
CiAgICAgaWYgKG9mZnNldCA+PSBsZW5ndGggfHwgIWlzQVNDSUlEaWdpdCh0aW1lU3RyaW5nWyhv
ZmZzZXQpXSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBTdHJpbmcgZGlnaXRzMiA9IGNv
bGxlY3REaWdpdHModGltZVN0cmluZywgbGVuZ3RoLCBvZmZzZXQpOwotICAgIGludCB2YWx1ZTIg
PSBkaWdpdHMyLnRvSW50KCk7CiAgICAgaWYgKGRpZ2l0czIubGVuZ3RoKCkgIT0gMikKICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIGludCB2YWx1ZTIgPSBwYXJzZUludGVnZXI8aW50PihkaWdp
dHMyKS52YWx1ZSgpOwogCiAgICAgLy8gRGV0ZWN0IHdoZXRoZXIgdGhpcyB0aW1lc3RhbXAgaW5j
bHVkZXMgaG91cnMuCiAgICAgaW50IHZhbHVlMzsKQEAgLTMwMSw3ICszMDAsNyBAQCBib29sIE1l
ZGlhRnJhZ21lbnRVUklQYXJzZXI6OnBhcnNlTlBUVGltZShjb25zdCBMQ2hhciogdGltZVN0cmlu
ZywgdW5zaWduZWQgbGVuZwogICAgICAgICBTdHJpbmcgZGlnaXRzMyA9IGNvbGxlY3REaWdpdHMo
dGltZVN0cmluZywgbGVuZ3RoLCBvZmZzZXQpOwogICAgICAgICBpZiAoZGlnaXRzMy5sZW5ndGgo
KSAhPSAyKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB2YWx1ZTMgPSBkaWdp
dHMzLnRvSW50KCk7CisgICAgICAgIHZhbHVlMyA9IHBhcnNlSW50ZWdlcjxpbnQ+KGRpZ2l0czMp
LnZhbHVlKCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgdmFsdWUzID0gdmFsdWUyOwogICAgICAg
ICB2YWx1ZTIgPSB2YWx1ZTE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1R5cGVB
aGVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1R5cGVBaGVhZC5jcHAKaW5kZXggNzY0ZTUw
MjIzMGE3ZGM5YTM0ZDg3Y2JhNjkzYWNkNjY1NDkwMWMyYS4uOTA2OWQwZjM1N2Q5ODJkYmNlZmQ3
MGY3YzU0ODkyY2JlNDFjNDI2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9UeXBl
QWhlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVHlwZUFoZWFkLmNwcApAQCAtMjks
MTEgKzI5LDEwIEBACiAjaW5jbHVkZSAiVHlwZUFoZWFkLmgiCiAKICNpbmNsdWRlICJLZXlib2Fy
ZEV2ZW50LmgiCisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5o
PgogI2luY2x1ZGUgPHd0Zi91bmljb2RlL0NoYXJhY3Rlck5hbWVzLmg+CiAKLQogbmFtZXNwYWNl
IFdlYkNvcmUgewotdXNpbmcgbmFtZXNwYWNlIFdURjo6VW5pY29kZTsKIAogVHlwZUFoZWFkOjpU
eXBlQWhlYWQoVHlwZUFoZWFkRGF0YVNvdXJjZSogZGF0YVNvdXJjZSkKICAgICA6IG1fZGF0YVNv
dXJjZShkYXRhU291cmNlKQpAQCAtMTAzLDggKzEwMiw3IEBAIGludCBUeXBlQWhlYWQ6OmhhbmRs
ZUV2ZW50KEtleWJvYXJkRXZlbnQqIGV2ZW50LCBNYXRjaE1vZGVGbGFncyBtYXRjaE1vZGUpCiAg
ICAgfQogCiAgICAgaWYgKG1hdGNoTW9kZSAmIE1hdGNoSW5kZXgpIHsKLSAgICAgICAgYm9vbCBv
ayA9IGZhbHNlOwotICAgICAgICBpbnQgaW5kZXggPSBtX2J1ZmZlci50b1N0cmluZygpLnRvSW50
KCZvayk7CisgICAgICAgIGludCBpbmRleCA9IHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdK
dW5rPGludD4obV9idWZmZXIpLnZhbHVlT3IoMCk7CiAgICAgICAgIGlmIChpbmRleCA+IDAgJiYg
aW5kZXggPD0gb3B0aW9uQ291bnQpCiAgICAgICAgICAgICByZXR1cm4gaW5kZXggLSAxOwogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMRGVjb21wb3NpdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTERlY29tcG9zaXRpb24uY3BwCmluZGV4IGJiOWNhMmE5
NWQ3Nzg3MmViN2U0ZjM1OTUyOWZiNGRlN2UyYzk4ODYuLjA0OTg2MjhmOGU2YTY5YjYyZjRhYjhk
NTIwMGJhMTY5YTVkNDY5OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMRGVj
b21wb3NpdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9VUkxEZWNvbXBvc2l0aW9u
LmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIlVSTERlY29tcG9zaXRpb24uaCIKIAog
I2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVG9J
bnRlZ2VyQ29udmVyc2lvbi5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTExOCw3ICsx
MTksNyBAQCB2b2lkIFVSTERlY29tcG9zaXRpb246OnNldEhvc3QoU3RyaW5nVmlldyB2YWx1ZSkK
ICAgICAgICAgaWYgKCFwb3J0TGVuZ3RoKSB7CiAgICAgICAgICAgICBmdWxsVVJMLnNldEhvc3Qo
dmFsdWUuc3Vic3RyaW5nKDAsIHNlcGFyYXRvcikpOwogICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgYXV0byBwb3J0TnVtYmVyID0gcGFyc2VVSW50MTYodmFsdWUuc3Vic3RyaW5nKHNlcGFy
YXRvciArIDEsIHBvcnRMZW5ndGgpKTsKKyAgICAgICAgICAgIGF1dG8gcG9ydE51bWJlciA9IHBh
cnNlSW50ZWdlcjx1aW50MTZfdD4odmFsdWUuc3Vic3RyaW5nKHNlcGFyYXRvciArIDEsIHBvcnRM
ZW5ndGgpKTsKICAgICAgICAgICAgIGlmIChwb3J0TnVtYmVyICYmIFdURjo6aXNEZWZhdWx0UG9y
dEZvclByb3RvY29sKCpwb3J0TnVtYmVyLCBmdWxsVVJMLnByb3RvY29sKCkpKQogICAgICAgICAg
ICAgICAgIGZ1bGxVUkwuc2V0SG9zdEFuZFBvcnQodmFsdWUuc3Vic3RyaW5nKDAsIHNlcGFyYXRv
cikpOwogICAgICAgICAgICAgZWxzZQpAQCAtMTcyLDcgKzE3Myw3IEBAIHN0YXRpYyBPcHRpb25h
bDxPcHRpb25hbDx1aW50MTZfdD4+IHBhcnNlUG9ydChTdHJpbmdWaWV3IHN0cmluZywgU3RyaW5n
VmlldyBwcm90CiAgICAgYXV0byBkaWdpdHNPbmx5ID0gc3RyaW5nLmxlZnQoY291bnRBU0NJSURp
Z2l0cyhzdHJpbmcpKTsKICAgICBpZiAoZGlnaXRzT25seS5pc0VtcHR5KCkpCiAgICAgICAgIHJl
dHVybiBPcHRpb25hbDx1aW50MTZfdD4geyBXVEY6Om51bGxvcHQgfTsKLSAgICBhdXRvIHBvcnQg
PSBwYXJzZVVJbnQxNihkaWdpdHNPbmx5KTsKKyAgICBhdXRvIHBvcnQgPSBwYXJzZUludGVnZXI8
dWludDE2X3Q+KGRpZ2l0c09ubHkpOwogICAgIGlmICghcG9ydCkKICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKICAgICBpZiAoV1RGOjppc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2woKnBvcnQs
IHByb3RvY29sKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0RhdGVU
aW1lTnVtZXJpY0ZpZWxkRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9E
YXRlVGltZU51bWVyaWNGaWVsZEVsZW1lbnQuY3BwCmluZGV4IGFhNTMxZDViOWM2ZDA2ZDU3YTcx
MjNmYTlkNjRjMjcxZTM3YTRkYTUuLjZmNjE0MGNiYTM1NzE4ZGVjZDVlZjJlZGMxY2E2NmM4OWI0
NDVlZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0RhdGVUaW1lTnVt
ZXJpY0ZpZWxkRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvRGF0
ZVRpbWVOdW1lcmljRmllbGRFbGVtZW50LmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUg
IlJlbmRlckJsb2NrLmgiCiAjaW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIKICNpbmNsdWRlIDx3dGYv
SXNvTWFsbG9jSW5saW5lcy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1RvSW50ZWdlckNv
bnZlcnNpb24uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xODIsNyArMTgzLDcgQEAg
dm9pZCBEYXRlVGltZU51bWVyaWNGaWVsZEVsZW1lbnQ6OmhhbmRsZUtleWJvYXJkRXZlbnQoS2V5
Ym9hcmRFdmVudCYga2V5Ym9hcmRFdmUKICAgICB9CiAKICAgICBtX3R5cGVBaGVhZEJ1ZmZlci5h
cHBlbmQobnVtYmVyKTsKLSAgICBzZXRWYWx1ZUFzSW50ZWdlcihtX3R5cGVBaGVhZEJ1ZmZlci50
b1N0cmluZygpLnRvSW50KCksIERpc3BhdGNoSW5wdXRBbmRDaGFuZ2VFdmVudHMpOworICAgIHNl
dFZhbHVlQXNJbnRlZ2VyKHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4obV90
eXBlQWhlYWRCdWZmZXIpLnZhbHVlT3IoMCksIERpc3BhdGNoSW5wdXRBbmRDaGFuZ2VFdmVudHMp
OwogCiAgICAga2V5Ym9hcmRFdmVudC5zZXREZWZhdWx0SGFuZGxlZCgpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRTY2FubmVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svVlRUU2Nhbm5lci5jcHAKaW5kZXggNWZkNGQwNjBkYzIzOWYzZTJiZmRh
NjUyMjQ0YmQxOWU3ZDFmMDhiNC4uYzc4MDVjODdkNWE0NWZmOGE5MjNiMGIzMGEzMThjYjIxNWU2
OTVjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRTY2FubmVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVFNjYW5uZXIuY3BwCkBAIC0zMCw2
ICszMCw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiVlRUU2Nhbm5lci5oIgog
CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5oPgorCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIFZUVFNjYW5uZXI6OlZUVFNjYW5uZXIoY29uc3QgU3RyaW5nJiBs
aW5lKQpAQCAtMTIyLDE5ICsxMjQsMTcgQEAgdW5zaWduZWQgVlRUU2Nhbm5lcjo6c2NhbkRpZ2l0
cyhpbnQmIG51bWJlcikKICAgICAgICAgbnVtYmVyID0gMDsKICAgICAgICAgcmV0dXJuIDA7CiAg
ICAgfQotICAgIGJvb2wgdmFsaWROdW1iZXI7Ci0gICAgc2l6ZV90IG51bURpZ2l0cyA9IHJ1bk9m
RGlnaXRzLmxlbmd0aCgpOworCisgICAgU3RyaW5nVmlldyBzdHJpbmc7CisgICAgdW5zaWduZWQg
bnVtRGlnaXRzID0gcnVuT2ZEaWdpdHMubGVuZ3RoKCk7CiAgICAgaWYgKG1faXM4Qml0KQotICAg
ICAgICBudW1iZXIgPSBjaGFyYWN0ZXJzVG9JbnRTdHJpY3QobV9kYXRhLmNoYXJhY3RlcnM4LCBu
dW1EaWdpdHMsICZ2YWxpZE51bWJlcik7CisgICAgICAgIHN0cmluZyA9IHsgbV9kYXRhLmNoYXJh
Y3RlcnM4LCBudW1EaWdpdHMgfTsKICAgICBlbHNlCi0gICAgICAgIG51bWJlciA9IGNoYXJhY3Rl
cnNUb0ludFN0cmljdChtX2RhdGEuY2hhcmFjdGVyczE2LCBudW1EaWdpdHMsICZ2YWxpZE51bWJl
cik7CisgICAgICAgIHN0cmluZyA9IHsgbV9kYXRhLmNoYXJhY3RlcnMxNiwgbnVtRGlnaXRzIH07
CisKKyAgICAvLyBTaW5jZSB0aGVzZSBhcmUgQVNDSUkgZGlnaXRzLCB0aGUgb25seSBmYWlsdXJl
IG1vZGUgaXMgb3ZlcmZsb3csIHNvIHVzZSB0aGUgbWF4aW11bSBpbnQgdmFsdWUuCisgICAgbnVt
YmVyID0gcGFyc2VJbnRlZ2VyPGludD4oc3RyaW5nKS52YWx1ZU9yKHN0ZDo6bnVtZXJpY19saW1p
dHM8aW50Pjo6bWF4KCkpOwogCi0gICAgLy8gU2luY2Ugd2Uga25vdyB0aGF0IHNjYW5EaWdpdHMg
b25seSBzY2FubmVkIHZhbGlkIChBU0NJSSkgZGlnaXRzIChhbmQKLSAgICAvLyBoZW5jZSB0aGF0
J3Mgd2hhdCBnb3QgcGFzc2VkIHRvIGNoYXJhY3RlcnNUb0ludCgpKSwgdGhlIHJlbWFpbmluZwot
ICAgIC8vIGZhaWx1cmUgbW9kZSBmb3IgY2hhcmFjdGVyc1RvSW50KCkgaXMgb3ZlcmZsb3csIHNv
IGlmIHx2YWxpZE51bWJlcnwgaXMKLSAgICAvLyBub3QgdHJ1ZSwgdGhlbiBzZXQgfG51bWJlcnwg
dG8gdGhlIG1heGltdW0gaW50IHZhbHVlLgotICAgIGlmICghdmFsaWROdW1iZXIpCi0gICAgICAg
IG51bWJlciA9IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCk7CiAgICAgLy8gQ29uc3Vt
ZSB0aGUgZGlnaXRzLgogICAgIHNlZWtUbyhydW5PZkRpZ2l0cy5lbmQoKSk7CiAgICAgcmV0dXJu
IG51bURpZ2l0czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxTZWxl
Y3RFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxTZWxlY3RFbGVtZW50
LmNwcAppbmRleCA4MGFlYTEwZDAwY2NmOWU0N2VhMzlkODRlMTcxNzBjYzkxZDZlZTg3Li4wMGRl
OWFjODU2NzQ0OTNjNzAwZmRjNzkyMGRhNzEzMzVjOTUwMWIwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9tYXRobWwvTWF0aE1MU2VsZWN0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbWF0aG1sL01hdGhNTFNlbGVjdEVsZW1lbnQuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5j
bHVkZSAiUmVuZGVyVHJlZVVwZGF0ZXIuaCIKICNpbmNsdWRlICJTVkdFbGVtZW50LmgiCiAjaW5j
bHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdU
b0ludGVnZXJDb252ZXJzaW9uLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTE3LDcg
KzExOCw3IEBAIGludCBNYXRoTUxTZWxlY3RFbGVtZW50OjpnZXRTZWxlY3RlZEFjdGlvbkNoaWxk
QW5kSW5kZXgoRWxlbWVudComIHNlbGVjdGVkQ2hpbGQpCiAgICAgaWYgKCFzZWxlY3RlZENoaWxk
KQogICAgICAgICByZXR1cm4gMTsKIAotICAgIGludCBzZWxlY3Rpb24gPSBhdHRyaWJ1dGVXaXRo
b3V0U3luY2hyb25pemF0aW9uKE1hdGhNTE5hbWVzOjpzZWxlY3Rpb25BdHRyKS50b0ludCgpOwor
ICAgIGludCBzZWxlY3Rpb24gPSBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+
KGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oTWF0aE1MTmFtZXM6OnNlbGVjdGlvbkF0
dHIpKS52YWx1ZU9yKDApOwogICAgIGludCBpOwogICAgIGZvciAoaSA9IDE7IGkgPCBzZWxlY3Rp
b247IGkrKykgewogICAgICAgICBhdXRvKiBuZXh0Q2hpbGQgPSBzZWxlY3RlZENoaWxkLT5uZXh0
RWxlbWVudFNpYmxpbmcoKTsK
</data>
<flag name="review"
          id="448943"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>