<?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>197910</bug_id>
          
          <creation_ts>2019-05-15 02:31:00 -0700</creation_ts>
          <short_desc>[JSC] UnlinkedMetadataTable&apos;s offset table should be small</short_desc>
          <delta_ts>2019-05-22 18:48:19 -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>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>197940</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1536394</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-05-15 02:31:00 -0700</bug_when>
    <thetext>Each one takes 208 bytes for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1537359</commentid>
    <comment_count>1</comment_count>
      <attachid>370177</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-05-17 19:31:23 -0700</bug_when>
    <thetext>Created attachment 370177
Patch

WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1537383</commentid>
    <comment_count>2</comment_count>
      <attachid>370185</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-05-17 21:45:57 -0700</bug_when>
    <thetext>Created attachment 370185
Patch

WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1537402</commentid>
    <comment_count>3</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-05-18 00:49:05 -0700</bug_when>
    <thetext>16bit thing can cover almost all the thing. But 8bit version cannot cover things even if we leverage 4byte alignment. So, we should use 16bit offset table.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1537406</commentid>
    <comment_count>4</comment_count>
      <attachid>370189</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-05-18 03:03:29 -0700</bug_when>
    <thetext>Created attachment 370189
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1537407</commentid>
    <comment_count>5</comment_count>
      <attachid>370190</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-05-18 03:10:05 -0700</bug_when>
    <thetext>Created attachment 370190
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1537408</commentid>
    <comment_count>6</comment_count>
    <who name="Tadeu Zagallo">tzagallo</who>
    <bug_when>2019-05-18 04:02:44 -0700</bug_when>
    <thetext>This looks great! I wonder what percentage of the UnlinkedMetadataTables in gmail fit in the 16-bit offset table.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1537434</commentid>
    <comment_count>7</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-05-18 16:33:57 -0700</bug_when>
    <thetext>(In reply to Tadeu Zagallo from comment #6)
&gt; This looks great! I wonder what percentage of the UnlinkedMetadataTables in
&gt; gmail fit in the 16-bit offset table.

I don&apos;t remember the exact number of that, but when I logged the 32bit UnlinkedMetadataTable in Gmail to see it is actually used and works, it is &lt; 100, super limited. So, it is less than 0.4% of all the UnlinkedMetadataTable in Gmail :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1537454</commentid>
    <comment_count>8</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-05-18 18:47:48 -0700</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #7)
&gt; (In reply to Tadeu Zagallo from comment #6)
&gt; &gt; This looks great! I wonder what percentage of the UnlinkedMetadataTables in
&gt; &gt; gmail fit in the 16-bit offset table.
&gt; 
&gt; I don&apos;t remember the exact number of that, but when I logged the 32bit
&gt; UnlinkedMetadataTable in Gmail to see it is actually used and works, it is &lt;
&gt; 100, super limited. So, it is less than 0.4% of all the
&gt; UnlinkedMetadataTable in Gmail :)

On the other hand, 8bit version does not cover the existing MetadataTable well. When I inserted the log, it seems sooooo many MetadataTable in Gmail exceeds 1024 bytes (log does not stop...) =&gt; even if we use 4byte alignment information, this exceeds 8bit range. This makes me decide picking 16bit offset table here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1538356</commentid>
    <comment_count>9</comment_count>
      <attachid>370190</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-05-22 13:54:31 -0700</bug_when>
    <thetext>Comment on attachment 370190
Patch

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

r=me

&gt; Source/JavaScriptCore/bytecode/UnlinkedMetadataTable.cpp:61
&gt; +            offset = roundUpToMultipleOf(metadataAlignment(static_cast&lt;OpcodeID&gt;(i)), offset);

maybe also ASSERT metadataAlignment &lt;= s_maxMetadataAlignment?

&gt; Source/JavaScriptCore/bytecode/UnlinkedMetadataTable.cpp:69
&gt; +    if (m_is32Bit) {

Please make sure we have tests for this code in our regression test suite.

&gt; Source/JavaScriptCore/bytecode/UnlinkedMetadataTable.h:106
&gt; +    Offset16* offsetTable16() const { return bitwise_cast&lt;Offset16*&gt;(m_rawBuffer + sizeof(LinkingData)); }

nit: ASSERT(!m_is32bit)?

&gt; Source/JavaScriptCore/bytecode/UnlinkedMetadataTable.h:107
&gt; +    Offset32* offsetTable32() const { return bitwise_cast&lt;Offset32*&gt;(m_rawBuffer + sizeof(LinkingData) + s_offset16TableSize); }

nit: ASSERT(m_is32bit)?

&gt; Source/JavaScriptCore/llint/LowLevelInterpreter.asm:185
&gt; +const MetadataOffsetTable16 = 0
&gt; +const MetadataOffsetTable32 = constexpr UnlinkedMetadataTable::s_offset16TableSize

I think these names should have &quot;Offset&quot; at the end of them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1538476</commentid>
    <comment_count>10</comment_count>
      <attachid>370190</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-05-22 17:07:17 -0700</bug_when>
    <thetext>Comment on attachment 370190
Patch

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

Thanks!

&gt;&gt; Source/JavaScriptCore/bytecode/UnlinkedMetadataTable.cpp:61
&gt;&gt; +            offset = roundUpToMultipleOf(metadataAlignment(static_cast&lt;OpcodeID&gt;(i)), offset);
&gt; 
&gt; maybe also ASSERT metadataAlignment &lt;= s_maxMetadataAlignment?

Sounds nice. Fixed.

&gt;&gt; Source/JavaScriptCore/bytecode/UnlinkedMetadataTable.cpp:69
&gt;&gt; +    if (m_is32Bit) {
&gt; 
&gt; Please make sure we have tests for this code in our regression test suite.

Thanks, added.

&gt;&gt; Source/JavaScriptCore/bytecode/UnlinkedMetadataTable.h:106
&gt;&gt; +    Offset16* offsetTable16() const { return bitwise_cast&lt;Offset16*&gt;(m_rawBuffer + sizeof(LinkingData)); }
&gt; 
&gt; nit: ASSERT(!m_is32bit)?

Nice, added.

&gt;&gt; Source/JavaScriptCore/bytecode/UnlinkedMetadataTable.h:107
&gt;&gt; +    Offset32* offsetTable32() const { return bitwise_cast&lt;Offset32*&gt;(m_rawBuffer + sizeof(LinkingData) + s_offset16TableSize); }
&gt; 
&gt; nit: ASSERT(m_is32bit)?

Ditto.

&gt;&gt; Source/JavaScriptCore/llint/LowLevelInterpreter.asm:185
&gt;&gt; +const MetadataOffsetTable32 = constexpr UnlinkedMetadataTable::s_offset16TableSize
&gt; 
&gt; I think these names should have &quot;Offset&quot; at the end of them.

Added. Nice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1538505</commentid>
    <comment_count>11</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-05-22 18:47:36 -0700</bug_when>
    <thetext>Committed r245669: &lt;https://trac.webkit.org/changeset/245669&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1538506</commentid>
    <comment_count>12</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-05-22 18:48:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/51051682&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>370177</attachid>
            <date>2019-05-17 19:31:23 -0700</date>
            <delta_ts>2019-05-17 21:45:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-197910-20190517193122.patch</filename>
            <type>text/plain</type>
            <size>21822</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ1NDg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
MmQ1Y2ZlMTY0OWQ0OGFkNDEzN2U4NDM0MzJjZjEyYzkxY2Y0NTE0Li42ZjE4ZDVkNDRlMWM1ZTVk
NTAyYWYxOWMzNzQyYmE4NjEzYWMzZWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MCBAQAorMjAxOS0wNS0xNyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFVubGlua2VkTWV0YWRhdGFUYWJsZSdzIG9mZnNldCB0YWJsZSBz
aG91bGQgYmUgc21hbGwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE5NzkxMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBieXRlY29kZS9NZXRhZGF0YVRhYmxlLmg6Cisg
ICAgICAgIChKU0M6Ok1ldGFkYXRhVGFibGU6OmJ1ZmZlcik6CisgICAgICAgIChKU0M6Ok1ldGFk
YXRhVGFibGU6OmlzMzJCaXQgY29uc3QpOgorICAgICAgICAoSlNDOjpNZXRhZGF0YVRhYmxlOjpv
ZmZzZXRUYWJsZTE2IGNvbnN0KToKKyAgICAgICAgKEpTQzo6TWV0YWRhdGFUYWJsZTo6b2Zmc2V0
VGFibGUzMiBjb25zdCk6CisgICAgICAgIChKU0M6Ok1ldGFkYXRhVGFibGU6OnRvdGFsU2l6ZSBj
b25zdCk6CisgICAgICAgIChKU0M6Ok1ldGFkYXRhVGFibGU6OmdldEltcGwpOgorICAgICAgICAq
IGJ5dGVjb2RlL1VubGlua2VkTWV0YWRhdGFUYWJsZS5jcHA6IEFkZGVkLgorICAgICAgICAoSlND
OjpVbmxpbmtlZE1ldGFkYXRhVGFibGU6OmZpbmFsaXplKToKKyAgICAgICAgKiBieXRlY29kZS9V
bmxpbmtlZE1ldGFkYXRhVGFibGUuaDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRNZXRhZGF0YVRh
YmxlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZE1ldGFkYXRhVGFibGU6OnByZXBy
b2Nlc3NCdWZmZXIgY29uc3QpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZE1ldGFkYXRhVGFibGU6
OmJ1ZmZlciBjb25zdCk6CisgICAgICAgIChKU0M6OlVubGlua2VkTWV0YWRhdGFUYWJsZTo6b2Zm
c2V0VGFibGUxNiBjb25zdCk6CisgICAgICAgIChKU0M6OlVubGlua2VkTWV0YWRhdGFUYWJsZTo6
b2Zmc2V0VGFibGUzMiBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRNZXRhZGF0
YVRhYmxlSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpVbmxpbmtlZE1ldGFkYXRhVGFibGU6OlVu
bGlua2VkTWV0YWRhdGFUYWJsZSk6CisgICAgICAgIChKU0M6OlVubGlua2VkTWV0YWRhdGFUYWJs
ZTo6YWRkRW50cnkpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZE1ldGFkYXRhVGFibGU6OnNpemVJ
bkJ5dGVzKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRNZXRhZGF0YVRhYmxlOjptZXRhZGF0YVRh
YmxlU2l6ZSBjb25zdCk6CisgICAgICAgIChKU0M6OlVubGlua2VkTWV0YWRhdGFUYWJsZTo6bGlu
ayk6CisgICAgICAgIChKU0M6OlVubGlua2VkTWV0YWRhdGFUYWJsZTo6dW5saW5rKToKKyAgICAg
ICAgKEpTQzo6VW5saW5rZWRNZXRhZGF0YVRhYmxlOjpmaW5hbGl6ZSk6IERlbGV0ZWQuCisgICAg
ICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206CisgICAgICAgICogcnVudGltZS9D
YWNoZWRUeXBlcy5jcHA6CisgICAgICAgIChKU0M6OkNhY2hlZE1ldGFkYXRhVGFibGU6OmVuY29k
ZSk6CisgICAgICAgIChKU0M6OkNhY2hlZE1ldGFkYXRhVGFibGU6OmRlY29kZSBjb25zdCk6CisK
IDIwMTktMDUtMTcgIEtlaXRoIFJvbGxpbiAgPGtyb2xsaW5AYXBwbGUuY29tPgogCiAgICAgICAg
IFJlLWVuYWJsZSBnZW5lcmF0ZS14Y2ZpbGVsaXN0cwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCA3ZTIxZTBiMDdjNTMyY2M3YTgxYjc1MTAwNDFhYjIyMjRjOWQyZTcxLi44YTk0NjI0
OGQyZmQ3OGVlZDk3ODJmMjE3ZjlhODJkZjNiNWEyODAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtNDcyMyw2ICs0NzIzLDcgQEAKIAkJRTE3ODYzNkMwRDlCRUVDMzAwRDc0RTc1
IC8qIEluaXRpYWxpemVUaHJlYWRpbmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSW5pdGlhbGl6ZVRocmVhZGluZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUUxOEUzQTU2MERGOTI3OEMwMEQ5MEIzNCAvKiBWTS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IGxpbmVFbmRpbmcgPSAwOyBwYXRoID0gVk0uaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgeGNMYW5ndWFnZVNwZWNpZmljYXRpb25JZGVudGlmaWVyID0geGNvZGUubGFuZy5vYmpj
cHA7IH07CiAJCUUxOEUzQTU3MERGOTI3OEMwMEQ5MEIzNCAvKiBWTS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IGxpbmVFbmRpbmcgPSAwOyBwYXRoID0gVk0uY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB4Y0xhbmd1YWdlU3BlY2lmaWNhdGlvbklkZW50aWZpZXIgPSB4Y29k
ZS5sYW5nLmNwcDsgfTsKKwkJRTMwNjAxMjgyMjhGOTc4MTAwRkFBQkRGIC8qIFVubGlua2VkTWV0
YWRhdGFUYWJsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVbmxpbmtlZE1ldGFkYXRhVGFibGUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzA2Nzc5NzFCOEJDNkY1MDAzRjg3
RjAgLyogTW9kdWxlTG9hZGVyLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBw
YXRoID0gTW9kdWxlTG9hZGVyLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzEx
NzlBOTIyODgzODVEMDA1MTRCMkMgLyogU3ltYm9sVGFibGVPclNjb3BlRGVwdGguaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU3ltYm9sVGFibGVPclNjb3BlRGVwdGguaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRTMxNjE4MTAxRUM1RkUwODAwMDZBMjE4IC8qIERPTUFubm90YXRpb24uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NQW5ub3RhdGlvbi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtODA2NSw2ICs4MDY2LDcgQEAKIAkJCQkxNDE0MkU1NDFCNzk3
M0MwMDBGNEJGNEIgLyogVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwICovLAogCQkJCTE0
MTQyRTUwMUI3OTZFQ0UwMEY0QkY0QiAvKiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oICov
LAogCQkJCTE0QUQ5MTFDMURDQTlGQTQwMDE0RjlGRSAvKiBVbmxpbmtlZEdsb2JhbENvZGVCbG9j
ay5oICovLAorCQkJCUUzMDYwMTI4MjI4Rjk3ODEwMEZBQUJERiAvKiBVbmxpbmtlZE1ldGFkYXRh
VGFibGUuY3BwICovLAogCQkJCTE0MkQ1MkJFMjE3NjI5NTgwMDJEQjA4NiAvKiBVbmxpbmtlZE1l
dGFkYXRhVGFibGUuaCAqLywKIAkJCQkxNDJENTJCRDIxNzYyOTU3MDAyREIwODYgLyogVW5saW5r
ZWRNZXRhZGF0YVRhYmxlSW5saW5lcy5oICovLAogCQkJCTE0QUQ5MTJBMURDQUFBQjAwMDE0RjlG
RSAvKiBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2suY3BwICovLApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L1NvdXJjZXMudHh0CmluZGV4IDIxOTZjOTdiYmIxMjllMmFiZGJjMzBjOGY1Y2NiNDE0ZDY1Mjhm
YjguLjQzZDdlZjQ3NTgyMmE4M2FmYWY5YTEyZThjZjllMTFhOWQ3ZGI4N2IgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvU291cmNlcy50eHQKQEAgLTI3Myw2ICsyNzMsNyBAQCBieXRlY29kZS9VbmxpbmtlZENv
ZGVCbG9jay5jcHAKIGJ5dGVjb2RlL1VubGlua2VkRXZhbENvZGVCbG9jay5jcHAKIGJ5dGVjb2Rl
L1VubGlua2VkRnVuY3Rpb25Db2RlQmxvY2suY3BwCiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZS5jcHAKK2J5dGVjb2RlL1VubGlua2VkTWV0YWRhdGFUYWJsZS5jcHAKIGJ5dGVj
b2RlL1VubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jay5jcHAKIGJ5dGVjb2RlL1VubGlua2Vk
UHJvZ3JhbUNvZGVCbG9jay5jcHAKIGJ5dGVjb2RlL1ZhbHVlUmVjb3ZlcnkuY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0YWRhdGFUYWJsZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGFkYXRhVGFibGUuaAppbmRleCBhNWQ0MTIx
YjFkNDFkMTYxYmYyNjU0MmUwOTI4NmNmYmQ5OTM5NWI4Li5iODFjMmQ4YjAyZjdkODQ0Y2YzYWRl
NjFhOGNiZTgxZWMzZTcyMmU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvTWV0YWRhdGFUYWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9NZXRhZGF0YVRhYmxlLmgKQEAgLTg4LDE0ICs4OCwyMyBAQCBjbGFzcyBNZXRhZGF0YVRhYmxl
IHsKICAgICAgICAgcmV0dXJuIHJlZkNvdW50KCkgPT0gMTsKICAgICB9CiAKLSAgICBVbmxpbmtl
ZE1ldGFkYXRhVGFibGU6Ok9mZnNldCogYnVmZmVyKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBi
aXR3aXNlX2Nhc3Q8VW5saW5rZWRNZXRhZGF0YVRhYmxlOjpPZmZzZXQqPih0aGlzKTsKLSAgICB9
CisgICAgdm9pZCogYnVmZmVyKCkgeyByZXR1cm4gdGhpczsgfQorCisgICAgYm9vbCBpczMyQml0
KCkgY29uc3QgeyByZXR1cm4gIW9mZnNldFRhYmxlMTYoKVswXTsgfQogCiBwcml2YXRlOgogICAg
IE1ldGFkYXRhVGFibGUoVW5saW5rZWRNZXRhZGF0YVRhYmxlJik7CiAKKyAgICB1aW50MTZfdCog
b2Zmc2V0VGFibGUxNigpIGNvbnN0IHsgcmV0dXJuIGJpdHdpc2VfY2FzdDx1aW50MTZfdCo+KHRo
aXMpOyB9CisgICAgdWludDMyX3QqIG9mZnNldFRhYmxlMzIoKSBjb25zdCB7IHJldHVybiBiaXR3
aXNlX2Nhc3Q8dWludDMyX3QqPihiaXR3aXNlX2Nhc3Q8dWludDhfdCo+KHRoaXMpICsgVW5saW5r
ZWRNZXRhZGF0YVRhYmxlOjpzX29mZnNldDE2VGFibGVTaXplKTsgfQorCisgICAgc2l6ZV90IHRv
dGFsU2l6ZSgpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoaXMzMkJpdCgpKQorICAgICAgICAg
ICAgcmV0dXJuIG9mZnNldFRhYmxlMzIoKVtVbmxpbmtlZE1ldGFkYXRhVGFibGU6OnNfb2Zmc2V0
VGFibGVFbnRyaWVzIC0gMV07CisgICAgICAgIHJldHVybiBvZmZzZXRUYWJsZTE2KClbVW5saW5r
ZWRNZXRhZGF0YVRhYmxlOjpzX29mZnNldFRhYmxlRW50cmllcyAtIDFdOworICAgIH0KKwogICAg
IFVubGlua2VkTWV0YWRhdGFUYWJsZTo6TGlua2luZ0RhdGEmIGxpbmtpbmdEYXRhKCkgY29uc3QK
ICAgICB7CiAgICAgICAgIHJldHVybiAqYml0d2lzZV9jYXN0PFVubGlua2VkTWV0YWRhdGFUYWJs
ZTo6TGlua2luZ0RhdGEqPigoYml0d2lzZV9jYXN0PHVpbnQ4X3QqPih0aGlzKSAtIHNpemVvZihV
bmxpbmtlZE1ldGFkYXRhVGFibGU6OkxpbmtpbmdEYXRhKSkpOwpAQCAtMTAzLDcgKzExMiwxMCBA
QCBjbGFzcyBNZXRhZGF0YVRhYmxlIHsKIAogICAgIEFMV0FZU19JTkxJTkUgdWludDhfdCogZ2V0
SW1wbCh1bnNpZ25lZCBpKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDx1aW50
OF90Kj4odGhpcykgKyBidWZmZXIoKVtpXTsKKyAgICAgICAgdW5zaWduZWQgb2Zmc2V0ID0gb2Zm
c2V0VGFibGUxNigpW2ldOworICAgICAgICBpZiAoIW9mZnNldCkKKyAgICAgICAgICAgIG9mZnNl
dCA9IG9mZnNldFRhYmxlMzIoKVtpXTsKKyAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDx1aW50
OF90Kj4odGhpcykgKyBvZmZzZXQ7CiAgICAgfQogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkTWV0YWRhdGFUYWJsZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRNZXRhZGF0YVRhYmxlLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5hMWRkNzk4MzdlNGQ4Nzg2ZGEzOWEyMTgyMGM3ZTgyZDc0YzVhYWQyCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkTWV0YWRhdGFU
YWJsZS5jcHAKQEAgLTAsMCArMSw4MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJVbmxpbmtlZE1l
dGFkYXRhVGFibGUuaCIKKworI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkpTQ0lu
bGluZXMuaCIKKyNpbmNsdWRlICJPcGNvZGVJbmxpbmVzLmgiCisjaW5jbHVkZSAiVW5saW5rZWRN
ZXRhZGF0YVRhYmxlSW5saW5lcy5oIgorI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CisKK25h
bWVzcGFjZSBKU0MgeworCit2b2lkIFVubGlua2VkTWV0YWRhdGFUYWJsZTo6ZmluYWxpemUoKQor
eworICAgIEFTU0VSVCghbV9pc0ZpbmFsaXplZCk7CisgICAgbV9pc0ZpbmFsaXplZCA9IHRydWU7
CisgICAgaWYgKCFtX2hhc01ldGFkYXRhKSB7CisgICAgICAgIGZhc3RGcmVlKG1fcmF3QnVmZmVy
KTsKKyAgICAgICAgbV9yYXdCdWZmZXIgPSBudWxscHRyOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgdW5zaWduZWQgb2Zmc2V0ID0gc19vZmZzZXQxNlRhYmxlU2l6ZTsKKyAgICB7Cisg
ICAgICAgIE9mZnNldDMyKiBidWZmZXIgPSBwcmVwcm9jZXNzQnVmZmVyKCk7CisgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBzX29mZnNldFRhYmxlRW50cmllcyAtIDE7IGkrKykgewor
ICAgICAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZFbnRyaWVzID0gYnVmZmVyW2ldOworICAgICAg
ICAgICAgaWYgKCFudW1iZXJPZkVudHJpZXMpIHsKKyAgICAgICAgICAgICAgICBidWZmZXJbaV0g
PSBvZmZzZXQ7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBvZmZzZXQgPSByb3VuZFVwVG9NdWx0aXBsZU9mKG1ldGFkYXRhQWxpZ25tZW50KHN0
YXRpY19jYXN0PE9wY29kZUlEPihpKSksIG9mZnNldCk7CisgICAgICAgICAgICBidWZmZXJbaV0g
PSBvZmZzZXQ7CisgICAgICAgICAgICBvZmZzZXQgKz0gbnVtYmVyT2ZFbnRyaWVzICogbWV0YWRh
dGFTaXplKHN0YXRpY19jYXN0PE9wY29kZUlEPihpKSk7CisgICAgICAgICAgICBpZiAob2Zmc2V0
ID4gVUlOVDE2X01BWCkKKyAgICAgICAgICAgICAgICBtX2lzMzJCaXQgPSB0cnVlOworICAgICAg
ICB9CisgICAgICAgIGJ1ZmZlcltzX29mZnNldFRhYmxlRW50cmllcyAtIDFdID0gb2Zmc2V0Owor
ICAgIH0KKworICAgIGlmIChtX2lzMzJCaXQpIHsKKyAgICAgICAgbV9yYXdCdWZmZXIgPSByZWlu
dGVycHJldF9jYXN0PHVpbnQ4X3QqPihmYXN0UmVhbGxvYyhtX3Jhd0J1ZmZlciwgc19vZmZzZXQx
NlRhYmxlU2l6ZSArIHNfb2Zmc2V0MzJUYWJsZVNpemUgKyBzaXplb2YoTGlua2luZ0RhdGEpKSk7
CisgICAgICAgIG1lbW1vdmUobV9yYXdCdWZmZXIgKyBzaXplb2YoTGlua2luZ0RhdGEpICsgc19v
ZmZzZXQxNlRhYmxlU2l6ZSwgbV9yYXdCdWZmZXIgKyBzaXplb2YoTGlua2luZ0RhdGEpLCBzX29m
ZnNldDMyVGFibGVTaXplKTsKKyAgICAgICAgbWVtc2V0KG1fcmF3QnVmZmVyICsgc2l6ZW9mKExp
bmtpbmdEYXRhKSwgMCwgc19vZmZzZXQxNlRhYmxlU2l6ZSk7CisgICAgICAgIHVpbnQzMl90KiBi
dWZmZXIgPSBiaXR3aXNlX2Nhc3Q8dWludDMyX3QqPihtX3Jhd0J1ZmZlciArIHNpemVvZihMaW5r
aW5nRGF0YSkgKyBzX29mZnNldDE2VGFibGVTaXplKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IHNfb2Zmc2V0VGFibGVFbnRyaWVzOyBpKyspCisgICAgICAgICAgICBidWZmZXJb
aV0gKz0gc19vZmZzZXQzMlRhYmxlU2l6ZTsKKyAgICB9IGVsc2UgeworICAgICAgICBhdXRvKiBv
bGRSYXdCdWZmZXIgPSBtX3Jhd0J1ZmZlcjsKKyAgICAgICAgbV9yYXdCdWZmZXIgPSBzdGF0aWNf
Y2FzdDx1aW50OF90Kj4oZmFzdE1hbGxvYyhzX29mZnNldDE2VGFibGVTaXplICsgc2l6ZW9mKExp
bmtpbmdEYXRhKSkpOworICAgICAgICB1aW50MzJfdCogb2xkQnVmZmVyID0gYml0d2lzZV9jYXN0
PHVpbnQzMl90Kj4ob2xkUmF3QnVmZmVyICsgc2l6ZW9mKExpbmtpbmdEYXRhKSk7CisgICAgICAg
IHVpbnQxNl90KiBidWZmZXIgPSBiaXR3aXNlX2Nhc3Q8dWludDE2X3QqPihtX3Jhd0J1ZmZlciAr
IHNpemVvZihMaW5raW5nRGF0YSkpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
c19vZmZzZXRUYWJsZUVudHJpZXM7IGkrKykKKyAgICAgICAgICAgIGJ1ZmZlcltpXSA9IG9sZEJ1
ZmZlcltpXTsKKyAgICAgICAgZmFzdEZyZWUob2xkUmF3QnVmZmVyKTsKKyAgICB9Cit9CisKK30g
Ly8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1VubGlua2VkTWV0YWRhdGFUYWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1VubGlua2VkTWV0YWRhdGFUYWJsZS5oCmluZGV4IDQ5OTFjMTU4YmEwMjNmMjQ3ZjNiOTc5
MjIyNDQ5NjA1YmQ5ZjVjNjYuLjllNmYzMGVlZWJhOTc3MzUxMDc0NzQwYTEzOWE0ZDRiNWY3Mjk0
NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZE1l
dGFkYXRhVGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5r
ZWRNZXRhZGF0YVRhYmxlLmgKQEAgLTYxLDIyICs2MSwzNyBAQCBjbGFzcyBVbmxpbmtlZE1ldGFk
YXRhVGFibGUgOiBwdWJsaWMgUmVmQ291bnRlZDxVbmxpbmtlZE1ldGFkYXRhVGFibGU+IHsKIAog
cHJpdmF0ZToKICAgICBVbmxpbmtlZE1ldGFkYXRhVGFibGUoKTsKKyAgICBVbmxpbmtlZE1ldGFk
YXRhVGFibGUoYm9vbCBpczMyQml0KTsKKworICAgIHN0YXRpYyBSZWY8VW5saW5rZWRNZXRhZGF0
YVRhYmxlPiBjcmVhdGUoYm9vbCBpczMyQml0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgVW5saW5rZWRNZXRhZGF0YVRhYmxlKGlzMzJCaXQpKTsKKyAgICB9CiAKICAgICB2
b2lkIHVubGluayhNZXRhZGF0YVRhYmxlJik7CiAKICAgICBzaXplX3Qgc2l6ZUluQnl0ZXMoTWV0
YWRhdGFUYWJsZSYpOwogCi0gICAgdXNpbmcgT2Zmc2V0ID0gdW5zaWduZWQ7CisgICAgc2l6ZV90
IG1ldGFkYXRhVGFibGVTaXplKCkgY29uc3Q7CisKKyAgICB1c2luZyBPZmZzZXQzMiA9IHVpbnQz
Ml90OworICAgIHVzaW5nIE9mZnNldDE2ID0gdWludDE2X3Q7CiAKICAgICBzdGF0aWMgY29uc3Rl
eHByIHVuc2lnbmVkIHNfb2Zmc2V0VGFibGVFbnRyaWVzID0gTlVNQkVSX09GX0JZVEVDT0RFX1dJ
VEhfTUVUQURBVEEgKyAxOyAvLyBvbmUgZXh0cmEgZW50cnkgZm9yIHRoZSAiZW5kIiBvZmZzZXQ7
Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBzX29mZnNldFRhYmxlU2l6ZSA9IHNfb2Zm
c2V0VGFibGVFbnRyaWVzICogc2l6ZW9mKFVubGlua2VkTWV0YWRhdGFUYWJsZTo6T2Zmc2V0KTsK
KyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIHNfb2Zmc2V0MTZUYWJsZVNpemUgPSByb3Vu
ZFVwVG9NdWx0aXBsZU9mPHNpemVvZih1aW50MzJfdCk+KHNfb2Zmc2V0VGFibGVFbnRyaWVzICog
c2l6ZW9mKHVpbnQxNl90KSk7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBzX29mZnNl
dDMyVGFibGVTaXplID0gc19vZmZzZXRUYWJsZUVudHJpZXMgKiBzaXplb2YodWludDMyX3QpOwor
CisgICAgT2Zmc2V0MzIqIHByZXByb2Nlc3NCdWZmZXIoKSBjb25zdCB7IHJldHVybiBiaXR3aXNl
X2Nhc3Q8T2Zmc2V0MzIqPihtX3Jhd0J1ZmZlciArIHNpemVvZihMaW5raW5nRGF0YSkpOyB9Cisg
ICAgdm9pZCogYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9yYXdCdWZmZXIgKyBzaXplb2YoTGlu
a2luZ0RhdGEpOyB9CiAKLSAgICBPZmZzZXQqIGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIGJpdHdp
c2VfY2FzdDxPZmZzZXQqPihiaXR3aXNlX2Nhc3Q8dWludDhfdCo+KG1fcmF3QnVmZmVyKSArIHNp
emVvZihMaW5raW5nRGF0YSkpOyB9CisgICAgdWludDE2X3QqIG9mZnNldFRhYmxlMTYoKSBjb25z
dCB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8dWludDE2X3QqPihtX3Jhd0J1ZmZlciArIHNpemVvZihM
aW5raW5nRGF0YSkpOyB9CisgICAgdWludDMyX3QqIG9mZnNldFRhYmxlMzIoKSBjb25zdCB7IHJl
dHVybiBiaXR3aXNlX2Nhc3Q8dWludDMyX3QqPihtX3Jhd0J1ZmZlciArIHNpemVvZihMaW5raW5n
RGF0YSkgKyBzX29mZnNldDE2VGFibGVTaXplKTsgfQogCiAgICAgYm9vbCBtX2hhc01ldGFkYXRh
IDogMTsKICAgICBib29sIG1faXNGaW5hbGl6ZWQgOiAxOwogICAgIGJvb2wgbV9pc0xpbmtlZCA6
IDE7Ci0gICAgdm9pZCogbV9yYXdCdWZmZXI7CisgICAgYm9vbCBtX2lzMzJCaXQgOiAxOworICAg
IHVpbnQ4X3QqIG1fcmF3QnVmZmVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRNZXRhZGF0YVRhYmxl
SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkTWV0YWRh
dGFUYWJsZUlubGluZXMuaAppbmRleCAzMzUzOTIyY2E4M2MzMWQ2Njk3ZWE1ZTZiYTUyMzhjMTYz
ODY5MzhhLi5kOTI5OTZjNDUyZWE2MGVjMWUwZGRhMjc2ZjI3OTczNjUxYzg2ZDZhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRNZXRhZGF0YVRhYmxl
SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZE1l
dGFkYXRhVGFibGVJbmxpbmVzLmgKQEAgLTM1LDEwICszNSwyMSBAQCBBTFdBWVNfSU5MSU5FIFVu
bGlua2VkTWV0YWRhdGFUYWJsZTo6VW5saW5rZWRNZXRhZGF0YVRhYmxlKCkKICAgICA6IG1faGFz
TWV0YWRhdGEoZmFsc2UpCiAgICAgLCBtX2lzRmluYWxpemVkKGZhbHNlKQogICAgICwgbV9pc0xp
bmtlZChmYWxzZSkKLSAgICAsIG1fcmF3QnVmZmVyKGZhc3RaZXJvZWRNYWxsb2Moc2l6ZW9mKExp
bmtpbmdEYXRhKSArIHNfb2Zmc2V0VGFibGVTaXplKSkKKyAgICAsIG1faXMzMkJpdChmYWxzZSkK
KyAgICAsIG1fcmF3QnVmZmVyKHN0YXRpY19jYXN0PHVpbnQ4X3QqPihmYXN0WmVyb2VkTWFsbG9j
KHNpemVvZihMaW5raW5nRGF0YSkgKyBzX29mZnNldDMyVGFibGVTaXplKSkpCiB7CiB9CiAKK0FM
V0FZU19JTkxJTkUgVW5saW5rZWRNZXRhZGF0YVRhYmxlOjpVbmxpbmtlZE1ldGFkYXRhVGFibGUo
Ym9vbCBpczMyQml0KQorICAgIDogbV9oYXNNZXRhZGF0YShmYWxzZSkKKyAgICAsIG1faXNGaW5h
bGl6ZWQoZmFsc2UpCisgICAgLCBtX2lzTGlua2VkKGZhbHNlKQorICAgICwgbV9pczMyQml0KGlz
MzJCaXQpCisgICAgLCBtX3Jhd0J1ZmZlcihzdGF0aWNfY2FzdDx1aW50OF90Kj4oZmFzdFplcm9l
ZE1hbGxvYyhzaXplb2YoTGlua2luZ0RhdGEpICsgKGlzMzJCaXQgPyBzX29mZnNldDE2VGFibGVT
aXplICsgc19vZmZzZXQzMlRhYmxlU2l6ZSA6IHNfb2Zmc2V0MTZUYWJsZVNpemUpKSkpCit7Cisg
ICAgbWVtc2V0KG9mZnNldFRhYmxlMTYoKSwgMCwgVW5saW5rZWRNZXRhZGF0YVRhYmxlOjpzX29m
ZnNldFRhYmxlRW50cmllcyAqIHNpemVvZihPZmZzZXQxNikpOworfQorCiBBTFdBWVNfSU5MSU5F
IFVubGlua2VkTWV0YWRhdGFUYWJsZTo6flVubGlua2VkTWV0YWRhdGFUYWJsZSgpCiB7CiAgICAg
QVNTRVJUKCFtX2lzTGlua2VkKTsKQEAgLTUwLDcgKzYxLDcgQEAgQUxXQVlTX0lOTElORSB1bnNp
Z25lZCBVbmxpbmtlZE1ldGFkYXRhVGFibGU6OmFkZEVudHJ5KE9wY29kZUlEIG9wY29kZUlEKQog
ewogICAgIEFTU0VSVCghbV9pc0ZpbmFsaXplZCAmJiBvcGNvZGVJRCA8IHNfb2Zmc2V0VGFibGVF
bnRyaWVzIC0gMSk7CiAgICAgbV9oYXNNZXRhZGF0YSA9IHRydWU7Ci0gICAgcmV0dXJuIGJ1ZmZl
cigpW29wY29kZUlEXSsrOworICAgIHJldHVybiBwcmVwcm9jZXNzQnVmZmVyKClbb3Bjb2RlSURd
Kys7CiB9CiAKIEFMV0FZU19JTkxJTkUgc2l6ZV90IFVubGlua2VkTWV0YWRhdGFUYWJsZTo6c2l6
ZUluQnl0ZXMoKQpAQCAtNTgsNyArNjksMTggQEAgQUxXQVlTX0lOTElORSBzaXplX3QgVW5saW5r
ZWRNZXRhZGF0YVRhYmxlOjpzaXplSW5CeXRlcygpCiAgICAgaWYgKG1faXNGaW5hbGl6ZWQgJiYg
IW1faGFzTWV0YWRhdGEpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgcmV0dXJuIHNfb2Zmc2V0
VGFibGVTaXplOworICAgIGlmIChtX2lzMzJCaXQpCisgICAgICAgIHJldHVybiBzX29mZnNldDE2
VGFibGVTaXplICsgc19vZmZzZXQzMlRhYmxlU2l6ZTsKKyAgICByZXR1cm4gc19vZmZzZXQxNlRh
YmxlU2l6ZTsKK30KKworaW5saW5lIHNpemVfdCBVbmxpbmtlZE1ldGFkYXRhVGFibGU6Om1ldGFk
YXRhVGFibGVTaXplKCkgY29uc3QKK3sKKyAgICBpZiAobV9pc0ZpbmFsaXplZCAmJiAhbV9oYXNN
ZXRhZGF0YSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgaWYgKG1faXMzMkJpdCkKKyAgICAgICAg
cmV0dXJuIG9mZnNldFRhYmxlMzIoKVtzX29mZnNldFRhYmxlRW50cmllcyAtIDFdOworICAgIHJl
dHVybiBvZmZzZXRUYWJsZTE2KClbc19vZmZzZXRUYWJsZUVudHJpZXMgLSAxXTsKIH0KIAogQUxX
QVlTX0lOTElORSBzaXplX3QgVW5saW5rZWRNZXRhZGF0YVRhYmxlOjpzaXplSW5CeXRlcyhNZXRh
ZGF0YVRhYmxlJiBtZXRhZGF0YVRhYmxlKQpAQCAtNjcsMzYgKzg5LDE0IEBAIEFMV0FZU19JTkxJ
TkUgc2l6ZV90IFVubGlua2VkTWV0YWRhdGFUYWJsZTo6c2l6ZUluQnl0ZXMoTWV0YWRhdGFUYWJs
ZSYgbWV0YWRhdGFUCiAKICAgICAvLyBJbiB0aGlzIGNhc2UsIHdlIHJldHVybiB0aGUgc2l6ZSBv
ZiB0aGUgdGFibGUgbWludXMgdGhlIG9mZnNldCB0YWJsZSwKICAgICAvLyB3aGljaCB3YXMgYWxy
ZWFkeSBhY2NvdW50ZWQgZm9yIGluIHRoZSBVbmxpbmtlZENvZGVCbG9jay4KKyAgICBzaXplX3Qg
cmVzdWx0ID0gbWV0YWRhdGFUYWJsZS50b3RhbFNpemUoKTsKICAgICBpZiAobWV0YWRhdGFUYWJs
ZS5idWZmZXIoKSA9PSBidWZmZXIoKSkgewogICAgICAgICBBU1NFUlQobV9pc0xpbmtlZCk7Ci0g
ICAgICAgIHJldHVybiBidWZmZXIoKVtzX29mZnNldFRhYmxlRW50cmllcyAtIDFdIC0gc19vZmZz
ZXRUYWJsZVNpemU7Ci0gICAgfQotCi0gICAgcmV0dXJuIG1ldGFkYXRhVGFibGUuYnVmZmVyKClb
c19vZmZzZXRUYWJsZUVudHJpZXMgLSAxXTsKLX0KLQotQUxXQVlTX0lOTElORSB2b2lkIFVubGlu
a2VkTWV0YWRhdGFUYWJsZTo6ZmluYWxpemUoKQotewotICAgIEFTU0VSVCghbV9pc0ZpbmFsaXpl
ZCk7Ci0gICAgbV9pc0ZpbmFsaXplZCA9IHRydWU7Ci0gICAgaWYgKCFtX2hhc01ldGFkYXRhKSB7
Ci0gICAgICAgIGZhc3RGcmVlKG1fcmF3QnVmZmVyKTsKLSAgICAgICAgbV9yYXdCdWZmZXIgPSBu
dWxscHRyOwotICAgICAgICByZXR1cm47CisgICAgICAgIGlmIChtX2lzMzJCaXQpCisgICAgICAg
ICAgICByZXR1cm4gcmVzdWx0IC0gKHNfb2Zmc2V0MTZUYWJsZVNpemUgKyBzX29mZnNldDMyVGFi
bGVTaXplKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdCAtIHNfb2Zmc2V0MTZUYWJsZVNpemU7CiAg
ICAgfQotCi0gICAgdW5zaWduZWQgb2Zmc2V0ID0gc19vZmZzZXRUYWJsZVNpemU7Ci0gICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IHNfb2Zmc2V0VGFibGVFbnRyaWVzIC0gMTsgaSsrKSB7Ci0g
ICAgICAgIHVuc2lnbmVkIG51bWJlck9mRW50cmllcyA9IGJ1ZmZlcigpW2ldOwotCi0gICAgICAg
IGlmIChudW1iZXJPZkVudHJpZXMgPiAwKSB7Ci0gICAgICAgICAgICBvZmZzZXQgPSByb3VuZFVw
VG9NdWx0aXBsZU9mKG1ldGFkYXRhQWxpZ25tZW50KHN0YXRpY19jYXN0PE9wY29kZUlEPihpKSks
IG9mZnNldCk7Ci0gICAgICAgICAgICBidWZmZXIoKVtpXSA9IG9mZnNldDsKLSAgICAgICAgICAg
IG9mZnNldCArPSBudW1iZXJPZkVudHJpZXMgKiBtZXRhZGF0YVNpemUoc3RhdGljX2Nhc3Q8T3Bj
b2RlSUQ+KGkpKTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBidWZmZXIoKVtpXSA9IG9m
ZnNldDsKLSAgICB9Ci0gICAgYnVmZmVyKClbc19vZmZzZXRUYWJsZUVudHJpZXMgLSAxXSA9IG9m
ZnNldDsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiBBTFdBWVNfSU5MSU5FIFJlZlB0cjxNZXRh
ZGF0YVRhYmxlPiBVbmxpbmtlZE1ldGFkYXRhVGFibGU6OmxpbmsoKQpAQCAtMTA2LDE2ICsxMDYs
MjUgQEAgQUxXQVlTX0lOTElORSBSZWZQdHI8TWV0YWRhdGFUYWJsZT4gVW5saW5rZWRNZXRhZGF0
YVRhYmxlOjpsaW5rKCkKICAgICBpZiAoIW1faGFzTWV0YWRhdGEpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogCi0gICAgdW5zaWduZWQgdG90YWxTaXplID0gYnVmZmVyKClbc19vZmZzZXRUYWJs
ZUVudHJpZXMgLSAxXTsKKyAgICB1bnNpZ25lZCB0b3RhbFNpemUgPSAwOworICAgIGlmIChtX2lz
MzJCaXQpCisgICAgICAgIHRvdGFsU2l6ZSA9IG9mZnNldFRhYmxlMzIoKVtzX29mZnNldFRhYmxl
RW50cmllcyAtIDFdOworICAgIGVsc2UKKyAgICAgICAgdG90YWxTaXplID0gb2Zmc2V0VGFibGUx
NigpW3Nfb2Zmc2V0VGFibGVFbnRyaWVzIC0gMV07CisKKyAgICB1bnNpZ25lZCBvZmZzZXRUYWJs
ZVNpemUgPSBzX29mZnNldDE2VGFibGVTaXplOworICAgIGlmIChtX2lzMzJCaXQpCisgICAgICAg
IG9mZnNldFRhYmxlU2l6ZSArPSBzX29mZnNldDMyVGFibGVTaXplOworCiAgICAgdWludDhfdCog
YnVmZmVyOwogICAgIGlmICghbV9pc0xpbmtlZCkgewogICAgICAgICBtX2lzTGlua2VkID0gdHJ1
ZTsKICAgICAgICAgbV9yYXdCdWZmZXIgPSBidWZmZXIgPSByZWludGVycHJldF9jYXN0PHVpbnQ4
X3QqPihmYXN0UmVhbGxvYyhtX3Jhd0J1ZmZlciwgc2l6ZW9mKExpbmtpbmdEYXRhKSArIHRvdGFs
U2l6ZSkpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGJ1ZmZlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8
dWludDhfdCo+KGZhc3RNYWxsb2Moc2l6ZW9mKExpbmtpbmdEYXRhKSArIHRvdGFsU2l6ZSkpOwot
ICAgICAgICBtZW1jcHkoYnVmZmVyLCBtX3Jhd0J1ZmZlciwgc2l6ZW9mKExpbmtpbmdEYXRhKSAr
IHNfb2Zmc2V0VGFibGVTaXplKTsKKyAgICAgICAgbWVtY3B5KGJ1ZmZlciwgbV9yYXdCdWZmZXIs
IHNpemVvZihMaW5raW5nRGF0YSkgKyBvZmZzZXRUYWJsZVNpemUpOwogICAgIH0KLSAgICBtZW1z
ZXQoYnVmZmVyICsgc2l6ZW9mKExpbmtpbmdEYXRhKSArIHNfb2Zmc2V0VGFibGVTaXplLCAwLCB0
b3RhbFNpemUgLSBzX29mZnNldFRhYmxlU2l6ZSk7CisgICAgbWVtc2V0KGJ1ZmZlciArIHNpemVv
ZihMaW5raW5nRGF0YSkgKyBvZmZzZXRUYWJsZVNpemUsIDAsIHRvdGFsU2l6ZSAtIG9mZnNldFRh
YmxlU2l6ZSk7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgKGJ1ZmZlciArIHNpemVvZihMaW5r
aW5nRGF0YSkpIE1ldGFkYXRhVGFibGUoKnRoaXMpKTsKIH0KIApAQCAtMTI1LDEwICsxMzQsMTQg
QEAgQUxXQVlTX0lOTElORSB2b2lkIFVubGlua2VkTWV0YWRhdGFUYWJsZTo6dW5saW5rKE1ldGFk
YXRhVGFibGUmIG1ldGFkYXRhVGFibGUpCiAgICAgaWYgKCFtX2hhc01ldGFkYXRhKQogICAgICAg
ICByZXR1cm47CiAKKyAgICB1bnNpZ25lZCBvZmZzZXRUYWJsZVNpemUgPSBzX29mZnNldDE2VGFi
bGVTaXplOworICAgIGlmIChtX2lzMzJCaXQpCisgICAgICAgIG9mZnNldFRhYmxlU2l6ZSArPSBz
X29mZnNldDMyVGFibGVTaXplOworCiAgICAgaWYgKG1ldGFkYXRhVGFibGUuYnVmZmVyKCkgPT0g
YnVmZmVyKCkpIHsKICAgICAgICAgQVNTRVJUKG1faXNMaW5rZWQpOwogICAgICAgICBtX2lzTGlu
a2VkID0gZmFsc2U7Ci0gICAgICAgIG1fcmF3QnVmZmVyID0gZmFzdFJlYWxsb2MobV9yYXdCdWZm
ZXIsIHNpemVvZihMaW5raW5nRGF0YSkgKyBzX29mZnNldFRhYmxlU2l6ZSk7CisgICAgICAgIG1f
cmF3QnVmZmVyID0gc3RhdGljX2Nhc3Q8dWludDhfdCo+KGZhc3RSZWFsbG9jKG1fcmF3QnVmZmVy
LCBzaXplb2YoTGlua2luZ0RhdGEpICsgb2Zmc2V0VGFibGVTaXplKSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAgICAgZmFzdEZyZWUoJm1ldGFkYXRhVGFibGUubGlua2luZ0RhdGEoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5h
c20KaW5kZXggYmM0MTllZDYxNzkwMDAxMzM0NGU2MTVkYWU4NmZiNDYxMWY3MTkwMi4uMTUyNWE1
NDMxZDAzOWNhYzA1ZGIyYjlhYTU0ZjVlMmVkMDlmZmJkYyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQpAQCAtMTgxLDYgKzE4
MSw5IEBAIGNvbnN0IFRoaXNBcmd1bWVudE9mZnNldCA9IEFyZ3VtZW50Q291bnQgKyBTbG90U2l6
ZQogY29uc3QgRmlyc3RBcmd1bWVudE9mZnNldCA9IFRoaXNBcmd1bWVudE9mZnNldCArIFNsb3RT
aXplCiBjb25zdCBDYWxsRnJhbWVIZWFkZXJTaXplID0gVGhpc0FyZ3VtZW50T2Zmc2V0CiAKK2Nv
bnN0IE1ldGFkYXRhT2Zmc2V0VGFibGUxNiA9IDAKK2NvbnN0IE1ldGFkYXRhT2Zmc2V0VGFibGUz
MiA9IGNvbnN0ZXhwciBVbmxpbmtlZE1ldGFkYXRhVGFibGU6OnNfb2Zmc2V0MTZUYWJsZVNpemUK
KwogIyBTb21lIHZhbHVlIHJlcHJlc2VudGF0aW9uIGNvbnN0YW50cy4KIGlmIEpTVkFMVUU2NAog
ICAgIGNvbnN0IFRhZ0JpdFR5cGVPdGhlciA9IGNvbnN0ZXhwciBUYWdCaXRUeXBlT3RoZXIKQEAg
LTMzNiw3ICszMzksMTAgQEAgbWFjcm8gd2lkZShuYXJyb3dGbiwgd2lkZUZuLCBrKQogZW5kCiAK
IG1hY3JvIG1ldGFkYXRhKHNpemUsIG9wY29kZSwgZHN0LCBzY3JhdGNoKQotICAgIGxvYWRpIGNv
bnN0ZXhwciAlb3Bjb2RlJTo6b3Bjb2RlSUQgKiA0W21ldGFkYXRhVGFibGVdLCBkc3QgIyBvZmZz
ZXQgPSBtZXRhZGF0YVRhYmxlPHVuc2lnbmVkKj5bb3Bjb2RlSURdCisgICAgbG9hZGggKGNvbnN0
ZXhwciAlb3Bjb2RlJTo6b3Bjb2RlSUQgKiAyICsgTWV0YWRhdGFPZmZzZXRUYWJsZTE2KVttZXRh
ZGF0YVRhYmxlXSwgZHN0ICMgb2Zmc2V0ID0gbWV0YWRhdGFUYWJsZTx1aW50MTZfdCo+W29wY29k
ZUlEXQorICAgIGJ0aW56IGRzdCwgLnNldFVwT2Zmc2V0CisgICAgbG9hZGkgKGNvbnN0ZXhwciAl
b3Bjb2RlJTo6b3Bjb2RlSUQgKiA0ICsgTWV0YWRhdGFPZmZzZXRUYWJsZTMyKVttZXRhZGF0YVRh
YmxlXSwgZHN0ICMgb2Zmc2V0ID0gbWV0YWRhdGFUYWJsZTx1aW50MzJfdCo+W29wY29kZUlEXQor
LnNldFVwT2Zmc2V0OgogICAgIGdldHUoc2l6ZSwgb3Bjb2RlLCBtX21ldGFkYXRhSUQsIHNjcmF0
Y2gpICMgc2NyYXRjaCA9IGJ5dGVjb2RlLm1fbWV0YWRhdGFJRAogICAgIG11bGkgc2l6ZW9mICVv
cGNvZGUlOjpNZXRhZGF0YSwgc2NyYXRjaCAjIHNjcmF0Y2ggKj0gc2l6ZW9mKE9wOjpNZXRhZGF0
YSkKICAgICBhZGRpIHNjcmF0Y2gsIGRzdCAjIG9mZnNldCArPSBzY3JhdGNoCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAKaW5kZXggM2I2MTBhOGQ3Nzc4
YTdkN2I4MWJhMGJlNmMxMzdhNGJkNzYzNmEzZC4uMTQwNTUxZGNmNzA4MzA4ZGViYWI4NmYzYWNk
MTNmNDlkZTk1M2UyZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q2FjaGVkVHlwZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hl
ZFR5cGVzLmNwcApAQCAtMTMzMSwyMyArMTMzMSwzNSBAQCBjbGFzcyBDYWNoZWRNZXRhZGF0YVRh
YmxlIDogcHVibGljIENhY2hlZE9iamVjdDxVbmxpbmtlZE1ldGFkYXRhVGFibGU+IHsKICAgICAg
ICAgbV9oYXNNZXRhZGF0YSA9IG1ldGFkYXRhVGFibGUubV9oYXNNZXRhZGF0YTsKICAgICAgICAg
aWYgKCFtX2hhc01ldGFkYXRhKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSBVbmxpbmtlZE1ldGFkYXRhVGFibGU6OnNfb2Zmc2V0VGFibGVFbnRyaWVzOyBp
LS07KQotICAgICAgICAgICAgbV9tZXRhZGF0YVtpXSA9IG1ldGFkYXRhVGFibGUuYnVmZmVyKClb
aV07CisgICAgICAgIG1faXMzMkJpdCA9IG1ldGFkYXRhVGFibGUubV9pczMyQml0OworICAgICAg
ICBpZiAobV9pczMyQml0KSB7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBVbmxpbmtl
ZE1ldGFkYXRhVGFibGU6OnNfb2Zmc2V0VGFibGVFbnRyaWVzOyBpLS07KQorICAgICAgICAgICAg
ICAgIG1fbWV0YWRhdGFbaV0gPSBtZXRhZGF0YVRhYmxlLm9mZnNldFRhYmxlMzIoKVtpXTsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IFVubGlua2VkTWV0
YWRhdGFUYWJsZTo6c19vZmZzZXRUYWJsZUVudHJpZXM7IGktLTspCisgICAgICAgICAgICAgICAg
bV9tZXRhZGF0YVtpXSA9IG1ldGFkYXRhVGFibGUub2Zmc2V0VGFibGUxNigpW2ldOworICAgICAg
ICB9CiAgICAgfQogCiAgICAgUmVmPFVubGlua2VkTWV0YWRhdGFUYWJsZT4gZGVjb2RlKERlY29k
ZXImKSBjb25zdAogICAgIHsKLSAgICAgICAgUmVmPFVubGlua2VkTWV0YWRhdGFUYWJsZT4gbWV0
YWRhdGFUYWJsZSA9IFVubGlua2VkTWV0YWRhdGFUYWJsZTo6Y3JlYXRlKCk7CisgICAgICAgIFJl
ZjxVbmxpbmtlZE1ldGFkYXRhVGFibGU+IG1ldGFkYXRhVGFibGUgPSBVbmxpbmtlZE1ldGFkYXRh
VGFibGU6OmNyZWF0ZShtX2lzMzJCaXQpOwogICAgICAgICBtZXRhZGF0YVRhYmxlLT5tX2lzRmlu
YWxpemVkID0gdHJ1ZTsKICAgICAgICAgbWV0YWRhdGFUYWJsZS0+bV9pc0xpbmtlZCA9IGZhbHNl
OwogICAgICAgICBtZXRhZGF0YVRhYmxlLT5tX2hhc01ldGFkYXRhID0gbV9oYXNNZXRhZGF0YTsK
LSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gVW5saW5rZWRNZXRhZGF0YVRhYmxlOjpzX29mZnNl
dFRhYmxlRW50cmllczsgaS0tOykKLSAgICAgICAgICAgIG1ldGFkYXRhVGFibGUtPmJ1ZmZlcigp
W2ldID0gbV9tZXRhZGF0YVtpXTsKKyAgICAgICAgaWYgKG1faXMzMkJpdCkgeworICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gVW5saW5rZWRNZXRhZGF0YVRhYmxlOjpzX29mZnNldFRhYmxl
RW50cmllczsgaS0tOykKKyAgICAgICAgICAgICAgICBtZXRhZGF0YVRhYmxlLT5vZmZzZXRUYWJs
ZTMyKClbaV0gPSBtX21ldGFkYXRhW2ldOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gVW5saW5rZWRNZXRhZGF0YVRhYmxlOjpzX29mZnNldFRhYmxlRW50
cmllczsgaS0tOykKKyAgICAgICAgICAgICAgICBtZXRhZGF0YVRhYmxlLT5vZmZzZXRUYWJsZTE2
KClbaV0gPSBtX21ldGFkYXRhW2ldOworICAgICAgICB9CiAgICAgICAgIHJldHVybiBtZXRhZGF0
YVRhYmxlOwogICAgIH0KIAogcHJpdmF0ZToKICAgICBib29sIG1faGFzTWV0YWRhdGE7CisgICAg
Ym9vbCBtX2lzMzJCaXQ7CiAgICAgc3RkOjphcnJheTx1bnNpZ25lZCwgVW5saW5rZWRNZXRhZGF0
YVRhYmxlOjpzX29mZnNldFRhYmxlRW50cmllcz4gbV9tZXRhZGF0YTsKIH07CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>370185</attachid>
            <date>2019-05-17 21:45:57 -0700</date>
            <delta_ts>2019-05-18 03:03:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-197910-20190517214556.patch</filename>
            <type>text/plain</type>
            <size>23802</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ1NDg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
MmQ1Y2ZlMTY0OWQ0OGFkNDEzN2U4NDM0MzJjZjEyYzkxY2Y0NTE0Li4zYTFiNDVjNDAyNjFjOTg5
ZTY3ZDhkM2VmZWE4ZDM3NjQ1YjI0M2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MCBAQAorMjAxOS0wNS0xNyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFVubGlua2VkTWV0YWRhdGFUYWJsZSdzIG9mZnNldCB0YWJsZSBz
aG91bGQgYmUgc21hbGwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE5NzkxMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBieXRlY29kZS9NZXRhZGF0YVRhYmxlLmNwcDoK
KyAgICAgICAgKEpTQzo6TWV0YWRhdGFUYWJsZTo6fk1ldGFkYXRhVGFibGUpOgorICAgICAgICAo
SlNDOjpNZXRhZGF0YVRhYmxlOjpkZXN0cm95KToKKyAgICAgICAgKiBieXRlY29kZS9NZXRhZGF0
YVRhYmxlLmg6CisgICAgICAgIChKU0M6Ok1ldGFkYXRhVGFibGU6OnJlZik6CisgICAgICAgIChK
U0M6Ok1ldGFkYXRhVGFibGU6OmRlcmVmKToKKyAgICAgICAgKEpTQzo6TWV0YWRhdGFUYWJsZTo6
YnVmZmVyKToKKyAgICAgICAgKEpTQzo6TWV0YWRhdGFUYWJsZTo6aXMzMkJpdCBjb25zdCk6Cisg
ICAgICAgIChKU0M6Ok1ldGFkYXRhVGFibGU6Om9mZnNldFRhYmxlMTYgY29uc3QpOgorICAgICAg
ICAoSlNDOjpNZXRhZGF0YVRhYmxlOjpvZmZzZXRUYWJsZTMyIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6TWV0YWRhdGFUYWJsZTo6dG90YWxTaXplIGNvbnN0KToKKyAgICAgICAgKEpTQzo6TWV0YWRh
dGFUYWJsZTo6Z2V0T2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6TWV0YWRhdGFUYWJsZTo6
Z2V0SW1wbCk6CisgICAgICAgIChKU0M6Ok1ldGFkYXRhVGFibGU6OnJlZiBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChKU0M6Ok1ldGFkYXRhVGFibGU6OmRlcmVmIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZE1ldGFkYXRhVGFibGUuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKEpTQzo6VW5saW5rZWRNZXRhZGF0YVRhYmxlOjpmaW5hbGl6ZSk6CisgICAgICAgICog
Ynl0ZWNvZGUvVW5saW5rZWRNZXRhZGF0YVRhYmxlLmg6CisgICAgICAgIChKU0M6OlVubGlua2Vk
TWV0YWRhdGFUYWJsZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRNZXRhZGF0YVRh
YmxlOjp0b3RhbFNpemUgY29uc3QpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZE1ldGFkYXRhVGFi
bGU6Om9mZnNldFRhYmxlU2l6ZSBjb25zdCk6CisgICAgICAgIChKU0M6OlVubGlua2VkTWV0YWRh
dGFUYWJsZTo6cHJlcHJvY2Vzc0J1ZmZlciBjb25zdCk6CisgICAgICAgIChKU0M6OlVubGlua2Vk
TWV0YWRhdGFUYWJsZTo6YnVmZmVyIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRNZXRh
ZGF0YVRhYmxlOjpvZmZzZXRUYWJsZTE2IGNvbnN0KToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRN
ZXRhZGF0YVRhYmxlOjpvZmZzZXRUYWJsZTMyIGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9V
bmxpbmtlZE1ldGFkYXRhVGFibGVJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OlVubGlua2VkTWV0
YWRhdGFUYWJsZTo6VW5saW5rZWRNZXRhZGF0YVRhYmxlKToKKyAgICAgICAgKEpTQzo6VW5saW5r
ZWRNZXRhZGF0YVRhYmxlOjphZGRFbnRyeSk6CisgICAgICAgIChKU0M6OlVubGlua2VkTWV0YWRh
dGFUYWJsZTo6c2l6ZUluQnl0ZXMpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZE1ldGFkYXRhVGFi
bGU6Om1ldGFkYXRhVGFibGVTaXplIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRNZXRh
ZGF0YVRhYmxlOjpsaW5rKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRNZXRhZGF0YVRhYmxlOjp1
bmxpbmspOgorICAgICAgICAoSlNDOjpVbmxpbmtlZE1ldGFkYXRhVGFibGU6OmZpbmFsaXplKTog
RGVsZXRlZC4KKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbToKKyAgICAg
ICAgKiBydW50aW1lL0NhY2hlZFR5cGVzLmNwcDoKKyAgICAgICAgKEpTQzo6Q2FjaGVkTWV0YWRh
dGFUYWJsZTo6ZW5jb2RlKToKKyAgICAgICAgKEpTQzo6Q2FjaGVkTWV0YWRhdGFUYWJsZTo6ZGVj
b2RlIGNvbnN0KToKKwogMjAxOS0wNS0xNyAgS2VpdGggUm9sbGluICA8a3JvbGxpbkBhcHBsZS5j
b20+CiAKICAgICAgICAgUmUtZW5hYmxlIGdlbmVyYXRlLXhjZmlsZWxpc3RzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IDdlMjFlMGIwN2M1MzJjYzdhODFiNzUxMDA0MWFiMjIyNGM5
ZDJlNzEuLjhhOTQ2MjQ4ZDJmZDc4ZWVkOTc4MmYyMTdmOWE4MmRmM2I1YTI4MDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00NzIzLDYgKzQ3MjMsNyBAQAogCQlFMTc4NjM2QzBE
OUJFRUMzMDBENzRFNzUgLyogSW5pdGlhbGl6ZVRocmVhZGluZy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbml0aWFsaXplVGhyZWFkaW5nLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTE4RTNBNTYwREY5Mjc4QzAwRDkwQjM0IC8qIFZNLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbGluZUVuZGluZyA9IDA7IHBhdGggPSBWTS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB4Y0xhbmd1YWdlU3BlY2lmaWNhdGlvbklkZW50aWZpZXIgPSB4
Y29kZS5sYW5nLm9iamNwcDsgfTsKIAkJRTE4RTNBNTcwREY5Mjc4QzAwRDkwQjM0IC8qIFZNLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbGluZUVuZGluZyA9IDA7IHBhdGggPSBW
TS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHhjTGFuZ3VhZ2VTcGVjaWZpY2F0aW9uSWRl
bnRpZmllciA9IHhjb2RlLmxhbmcuY3BwOyB9OworCQlFMzA2MDEyODIyOEY5NzgxMDBGQUFCREYg
LyogVW5saW5rZWRNZXRhZGF0YVRhYmxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVubGlua2Vk
TWV0YWRhdGFUYWJsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzMDY3Nzk3
MUI4QkM2RjUwMDNGODdGMCAvKiBNb2R1bGVMb2FkZXIuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmphdmFzY3JpcHQ7IHBhdGggPSBNb2R1bGVMb2FkZXIuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUUzMTE3OUE5MjI4ODM4NUQwMDUxNEIyQyAvKiBTeW1ib2xUYWJsZU9yU2NvcGVE
ZXB0aC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTeW1ib2xUYWJsZU9yU2NvcGVEZXB0aC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlFMzE2MTgxMDFFQzVGRTA4MDAwNkEyMTggLyogRE9NQW5u
b3RhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01Bbm5vdGF0aW9u
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04MDY1LDYgKzgwNjYsNyBAQAogCQkJ
CTE0MTQyRTU0MUI3OTczQzAwMEY0QkY0QiAvKiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5j
cHAgKi8sCiAJCQkJMTQxNDJFNTAxQjc5NkVDRTAwRjRCRjRCIC8qIFVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlLmggKi8sCiAJCQkJMTRBRDkxMUMxRENBOUZBNDAwMTRGOUZFIC8qIFVubGlua2Vk
R2xvYmFsQ29kZUJsb2NrLmggKi8sCisJCQkJRTMwNjAxMjgyMjhGOTc4MTAwRkFBQkRGIC8qIFVu
bGlua2VkTWV0YWRhdGFUYWJsZS5jcHAgKi8sCiAJCQkJMTQyRDUyQkUyMTc2Mjk1ODAwMkRCMDg2
IC8qIFVubGlua2VkTWV0YWRhdGFUYWJsZS5oICovLAogCQkJCTE0MkQ1MkJEMjE3NjI5NTcwMDJE
QjA4NiAvKiBVbmxpbmtlZE1ldGFkYXRhVGFibGVJbmxpbmVzLmggKi8sCiAJCQkJMTRBRDkxMkEx
RENBQUFCMDAwMTRGOUZFIC8qIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jay5jcHAgKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKaW5kZXggMjE5NmM5N2JiYjEyOWUyYWJkYmMzMGM4
ZjVjY2I0MTRkNjUyOGZiOC4uNDNkN2VmNDc1ODIyYTgzYWZhZjlhMTJlOGNmOWUxMWE5ZDdkYjg3
YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dApAQCAtMjczLDYgKzI3Myw3IEBAIGJ5dGVj
b2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAogYnl0ZWNvZGUvVW5saW5rZWRFdmFsQ29kZUJsb2Nr
LmNwcAogYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jay5jcHAKIGJ5dGVjb2RlL1Vu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAorYnl0ZWNvZGUvVW5saW5rZWRNZXRhZGF0YVRh
YmxlLmNwcAogYnl0ZWNvZGUvVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrLmNwcAogYnl0
ZWNvZGUvVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrLmNwcAogYnl0ZWNvZGUvVmFsdWVSZWNvdmVy
eS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRhZGF0
YVRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRhZGF0YVRhYmxl
LmNwcAppbmRleCA1ZmRjOGFkNDY5N2E0YjcyMzQ0ZmRlNTk1YjdkNjEyMmVlYzUzMGQ5Li44MTVh
N2M1Njg0NTkyM2JhMWJlZTA0NDRlZDVkODljNjZjMmQ3NzU3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0YWRhdGFUYWJsZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGFkYXRhVGFibGUuY3BwCkBAIC01NiwxMSArNTYsMTYg
QEAgTWV0YWRhdGFUYWJsZTo6fk1ldGFkYXRhVGFibGUoKQogewogICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBOVU1CRVJfT0ZfQllURUNPREVfV0lUSF9NRVRBREFUQTsgaSsrKQogICAgICAg
ICBnZXRPcGNvZGVUeXBlPERlYWxsb2NUYWJsZT4oc3RhdGljX2Nhc3Q8T3Bjb2RlSUQ+KGkpLCB0
aGlzKTsKLSAgICBSZWY8VW5saW5rZWRNZXRhZGF0YVRhYmxlPiB1bmxpbmtlZE1ldGFkYXRhID0g
V1RGTW92ZShsaW5raW5nRGF0YSgpLnVubGlua2VkTWV0YWRhdGEpOwogICAgIGxpbmtpbmdEYXRh
KCkufkxpbmtpbmdEYXRhKCk7Cit9CisKK3ZvaWQgTWV0YWRhdGFUYWJsZTo6ZGVzdHJveShNZXRh
ZGF0YVRhYmxlKiB0YWJsZSkKK3sKKyAgICBSZWY8VW5saW5rZWRNZXRhZGF0YVRhYmxlPiB1bmxp
bmtlZE1ldGFkYXRhID0gV1RGTW92ZSh0YWJsZS0+bGlua2luZ0RhdGEoKS51bmxpbmtlZE1ldGFk
YXRhKTsKKyAgICB0YWJsZS0+fk1ldGFkYXRhVGFibGUoKTsKICAgICAvLyBTaW5jZSBVbmxpbmtl
ZE1ldGFkYXRhOjp1bmxpbmsgZnJlZXMgdGhlIHVuZGVybHlpbmcgbWVtb3J5IG9mIE1ldGFkYXRh
VGFibGUuCiAgICAgLy8gV2UgbmVlZCB0byBkZXN0cm95IExpbmtpbmdEYXRhIGJlZm9yZSBjYWxs
aW5nIGl0LgotICAgIHVubGlua2VkTWV0YWRhdGEtPnVubGluaygqdGhpcyk7CisgICAgdW5saW5r
ZWRNZXRhZGF0YS0+dW5saW5rKCp0YWJsZSk7CiB9CiAKIHNpemVfdCBNZXRhZGF0YVRhYmxlOjpz
aXplSW5CeXRlcygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
TWV0YWRhdGFUYWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGFkYXRh
VGFibGUuaAppbmRleCBhNWQ0MTIxYjFkNDFkMTYxYmYyNjU0MmUwOTI4NmNmYmQ5OTM5NWI4Li44
OWZkZDM1MGQxNWFmMjQ4NmFkZWVjNzNkYWMyODU0MzczZDVhOWNmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0YWRhdGFUYWJsZS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRhZGF0YVRhYmxlLmgKQEAgLTYzLDE2ICs2MywxNiBA
QCBjbGFzcyBNZXRhZGF0YVRhYmxlIHsKIAogICAgIHNpemVfdCBzaXplSW5CeXRlcygpOwogCi0g
ICAgdm9pZCByZWYoKSBjb25zdAorICAgIHZvaWQgcmVmKCkKICAgICB7CiAgICAgICAgICsrbGlu
a2luZ0RhdGEoKS5yZWZDb3VudDsKICAgICB9CiAKLSAgICB2b2lkIGRlcmVmKCkgY29uc3QKKyAg
ICB2b2lkIGRlcmVmKCkKICAgICB7CiAgICAgICAgIHVuc2lnbmVkIHRlbXBSZWZDb3VudCA9IGxp
bmtpbmdEYXRhKCkucmVmQ291bnQgLSAxOwogICAgICAgICBpZiAoIXRlbXBSZWZDb3VudCkgewot
ICAgICAgICAgICAgdGhpcy0+fk1ldGFkYXRhVGFibGUoKTsKKyAgICAgICAgICAgIE1ldGFkYXRh
VGFibGU6OmRlc3Ryb3kodGhpcyk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAg
ICAgICAgbGlua2luZ0RhdGEoKS5yZWZDb3VudCA9IHRlbXBSZWZDb3VudDsKQEAgLTg4LDIzICs4
OCw0MSBAQCBjbGFzcyBNZXRhZGF0YVRhYmxlIHsKICAgICAgICAgcmV0dXJuIHJlZkNvdW50KCkg
PT0gMTsKICAgICB9CiAKLSAgICBVbmxpbmtlZE1ldGFkYXRhVGFibGU6Ok9mZnNldCogYnVmZmVy
KCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8VW5saW5rZWRNZXRhZGF0YVRh
YmxlOjpPZmZzZXQqPih0aGlzKTsKLSAgICB9CisgICAgdm9pZCogYnVmZmVyKCkgeyByZXR1cm4g
dGhpczsgfQorCisgICAgYm9vbCBpczMyQml0KCkgY29uc3QgeyByZXR1cm4gIW9mZnNldFRhYmxl
MTYoKVswXTsgfQogCiBwcml2YXRlOgogICAgIE1ldGFkYXRhVGFibGUoVW5saW5rZWRNZXRhZGF0
YVRhYmxlJik7CiAKKyAgICBVbmxpbmtlZE1ldGFkYXRhVGFibGU6Ok9mZnNldDE2KiBvZmZzZXRU
YWJsZTE2KCkgY29uc3QgeyByZXR1cm4gYml0d2lzZV9jYXN0PFVubGlua2VkTWV0YWRhdGFUYWJs
ZTo6T2Zmc2V0MTYqPih0aGlzKTsgfQorICAgIFVubGlua2VkTWV0YWRhdGFUYWJsZTo6T2Zmc2V0
MzIqIG9mZnNldFRhYmxlMzIoKSBjb25zdCB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8VW5saW5rZWRN
ZXRhZGF0YVRhYmxlOjpPZmZzZXQzMio+KGJpdHdpc2VfY2FzdDx1aW50OF90Kj4odGhpcykgKyBV
bmxpbmtlZE1ldGFkYXRhVGFibGU6OnNfb2Zmc2V0MTZUYWJsZVNpemUpOyB9CisKKyAgICBzaXpl
X3QgdG90YWxTaXplKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBnZXRPZmZzZXQoVW5s
aW5rZWRNZXRhZGF0YVRhYmxlOjpzX29mZnNldFRhYmxlRW50cmllcyAtIDEpOworICAgIH0KKwog
ICAgIFVubGlua2VkTWV0YWRhdGFUYWJsZTo6TGlua2luZ0RhdGEmIGxpbmtpbmdEYXRhKCkgY29u
c3QKICAgICB7CiAgICAgICAgIHJldHVybiAqYml0d2lzZV9jYXN0PFVubGlua2VkTWV0YWRhdGFU
YWJsZTo6TGlua2luZ0RhdGEqPigoYml0d2lzZV9jYXN0PHVpbnQ4X3QqPih0aGlzKSAtIHNpemVv
ZihVbmxpbmtlZE1ldGFkYXRhVGFibGU6OkxpbmtpbmdEYXRhKSkpOwogICAgIH0KIAorICAgIEFM
V0FZU19JTkxJTkUgdW5zaWduZWQgZ2V0T2Zmc2V0KHVuc2lnbmVkIGkpIGNvbnN0CisgICAgewor
ICAgICAgICB1bnNpZ25lZCBvZmZzZXQgPSBvZmZzZXRUYWJsZTE2KClbaV07CisgICAgICAgIGlm
IChvZmZzZXQpCisgICAgICAgICAgICByZXR1cm4gb2Zmc2V0OworICAgICAgICByZXR1cm4gb2Zm
c2V0VGFibGUzMigpW2ldOworICAgIH0KKwogICAgIEFMV0FZU19JTkxJTkUgdWludDhfdCogZ2V0
SW1wbCh1bnNpZ25lZCBpKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDx1aW50
OF90Kj4odGhpcykgKyBidWZmZXIoKVtpXTsKKworICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0
PHVpbnQ4X3QqPih0aGlzKSArIGdldE9mZnNldChpKTsKICAgICB9CisKKyAgICBzdGF0aWMgdm9p
ZCBkZXN0cm95KE1ldGFkYXRhVGFibGUqKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkTWV0YWRhdGFU
YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRNZXRhZGF0
YVRhYmxlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYTY2YjgwMjMwZmI4YTA1MzYxYTQ3MjNmOTEyODFhOTA2
YzRhOWU3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1VubGlua2VkTWV0YWRhdGFUYWJsZS5jcHAKQEAgLTAsMCArMSw4MyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJVbmxpbmtlZE1ldGFkYXRhVGFibGUuaCIKKworI2luY2x1ZGUgIkNvZGVCbG9jay5o
IgorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJPcGNvZGVJbmxpbmVzLmgiCisj
aW5jbHVkZSAiVW5saW5rZWRNZXRhZGF0YVRhYmxlSW5saW5lcy5oIgorI2luY2x1ZGUgPHd0Zi9G
YXN0TWFsbG9jLmg+CisKK25hbWVzcGFjZSBKU0MgeworCit2b2lkIFVubGlua2VkTWV0YWRhdGFU
YWJsZTo6ZmluYWxpemUoKQoreworICAgIEFTU0VSVCghbV9pc0ZpbmFsaXplZCk7CisgICAgbV9p
c0ZpbmFsaXplZCA9IHRydWU7CisgICAgaWYgKCFtX2hhc01ldGFkYXRhKSB7CisgICAgICAgIGZh
c3RGcmVlKG1fcmF3QnVmZmVyKTsKKyAgICAgICAgbV9yYXdCdWZmZXIgPSBudWxscHRyOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgdW5zaWduZWQgb2Zmc2V0ID0gc19vZmZzZXQxNlRh
YmxlU2l6ZTsKKyAgICB7CisgICAgICAgIE9mZnNldDMyKiBidWZmZXIgPSBwcmVwcm9jZXNzQnVm
ZmVyKCk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzX29mZnNldFRhYmxlRW50
cmllcyAtIDE7IGkrKykgeworICAgICAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZFbnRyaWVzID0g
YnVmZmVyW2ldOworICAgICAgICAgICAgaWYgKCFudW1iZXJPZkVudHJpZXMpIHsKKyAgICAgICAg
ICAgICAgICBidWZmZXJbaV0gPSBvZmZzZXQ7CisgICAgICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBvZmZzZXQgPSByb3VuZFVwVG9NdWx0aXBsZU9mKG1l
dGFkYXRhQWxpZ25tZW50KHN0YXRpY19jYXN0PE9wY29kZUlEPihpKSksIG9mZnNldCk7CisgICAg
ICAgICAgICBidWZmZXJbaV0gPSBvZmZzZXQ7CisgICAgICAgICAgICBvZmZzZXQgKz0gbnVtYmVy
T2ZFbnRyaWVzICogbWV0YWRhdGFTaXplKHN0YXRpY19jYXN0PE9wY29kZUlEPihpKSk7CisgICAg
ICAgICAgICBpZiAob2Zmc2V0ID4gVUlOVDE2X01BWCkKKyAgICAgICAgICAgICAgICBtX2lzMzJC
aXQgPSB0cnVlOworICAgICAgICB9CisgICAgICAgIGJ1ZmZlcltzX29mZnNldFRhYmxlRW50cmll
cyAtIDFdID0gb2Zmc2V0OworICAgIH0KKworICAgIGlmIChtX2lzMzJCaXQpIHsKKyAgICAgICAg
bV9yYXdCdWZmZXIgPSByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihmYXN0UmVhbGxvYyhtX3Jh
d0J1ZmZlciwgc19vZmZzZXQxNlRhYmxlU2l6ZSArIHNfb2Zmc2V0MzJUYWJsZVNpemUgKyBzaXpl
b2YoTGlua2luZ0RhdGEpKSk7CisgICAgICAgIG1lbW1vdmUobV9yYXdCdWZmZXIgKyBzaXplb2Yo
TGlua2luZ0RhdGEpICsgc19vZmZzZXQxNlRhYmxlU2l6ZSwgbV9yYXdCdWZmZXIgKyBzaXplb2Yo
TGlua2luZ0RhdGEpLCBzX29mZnNldDMyVGFibGVTaXplKTsKKyAgICAgICAgbWVtc2V0KG1fcmF3
QnVmZmVyICsgc2l6ZW9mKExpbmtpbmdEYXRhKSwgMCwgc19vZmZzZXQxNlRhYmxlU2l6ZSk7Cisg
ICAgICAgIE9mZnNldDMyKiBidWZmZXIgPSBiaXR3aXNlX2Nhc3Q8T2Zmc2V0MzIqPihtX3Jhd0J1
ZmZlciArIHNpemVvZihMaW5raW5nRGF0YSkgKyBzX29mZnNldDE2VGFibGVTaXplKTsKKyAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNfb2Zmc2V0VGFibGVFbnRyaWVzOyBpKyspCisg
ICAgICAgICAgICBidWZmZXJbaV0gKz0gc19vZmZzZXQzMlRhYmxlU2l6ZTsKKyAgICB9IGVsc2Ug
eworICAgICAgICBhdXRvKiBvbGRSYXdCdWZmZXIgPSBtX3Jhd0J1ZmZlcjsKKyAgICAgICAgbV9y
YXdCdWZmZXIgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4oZmFzdE1hbGxvYyhzX29mZnNldDE2VGFi
bGVTaXplICsgc2l6ZW9mKExpbmtpbmdEYXRhKSkpOworICAgICAgICBPZmZzZXQzMiogb2xkQnVm
ZmVyID0gYml0d2lzZV9jYXN0PE9mZnNldDMyKj4ob2xkUmF3QnVmZmVyICsgc2l6ZW9mKExpbmtp
bmdEYXRhKSk7CisgICAgICAgIE9mZnNldDE2KiBidWZmZXIgPSBiaXR3aXNlX2Nhc3Q8T2Zmc2V0
MTYqPihtX3Jhd0J1ZmZlciArIHNpemVvZihMaW5raW5nRGF0YSkpOworICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgc19vZmZzZXRUYWJsZUVudHJpZXM7IGkrKykKKyAgICAgICAgICAg
IGJ1ZmZlcltpXSA9IG9sZEJ1ZmZlcltpXTsKKyAgICAgICAgZmFzdEZyZWUob2xkUmF3QnVmZmVy
KTsKKyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkTWV0YWRhdGFUYWJsZS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkTWV0YWRhdGFUYWJsZS5oCmluZGV4IDQ5OTFj
MTU4YmEwMjNmMjQ3ZjNiOTc5MjIyNDQ5NjA1YmQ5ZjVjNjYuLjBmYjcyNTY4Y2NjZDlmNTlhN2Nm
Y2JmZGJlZWI0YWU4Nzk1ZjY3NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9VbmxpbmtlZE1ldGFkYXRhVGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvVW5saW5rZWRNZXRhZGF0YVRhYmxlLmgKQEAgLTYxLDIyICs2MSw1MyBAQCBj
bGFzcyBVbmxpbmtlZE1ldGFkYXRhVGFibGUgOiBwdWJsaWMgUmVmQ291bnRlZDxVbmxpbmtlZE1l
dGFkYXRhVGFibGU+IHsKIAogcHJpdmF0ZToKICAgICBVbmxpbmtlZE1ldGFkYXRhVGFibGUoKTsK
KyAgICBVbmxpbmtlZE1ldGFkYXRhVGFibGUoYm9vbCBpczMyQml0KTsKKworICAgIHN0YXRpYyBS
ZWY8VW5saW5rZWRNZXRhZGF0YVRhYmxlPiBjcmVhdGUoYm9vbCBpczMyQml0KQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVW5saW5rZWRNZXRhZGF0YVRhYmxlKGlzMzJCaXQp
KTsKKyAgICB9CiAKICAgICB2b2lkIHVubGluayhNZXRhZGF0YVRhYmxlJik7CiAKICAgICBzaXpl
X3Qgc2l6ZUluQnl0ZXMoTWV0YWRhdGFUYWJsZSYpOwogCi0gICAgdXNpbmcgT2Zmc2V0ID0gdW5z
aWduZWQ7CisgICAgc2l6ZV90IG1ldGFkYXRhVGFibGVTaXplKCkgY29uc3Q7CisKKyAgICB1bnNp
Z25lZCB0b3RhbFNpemUoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1faXNGaW5hbGl6
ZWQpOworICAgICAgICBpZiAobV9pczMyQml0KQorICAgICAgICAgICAgcmV0dXJuIG9mZnNldFRh
YmxlMzIoKVtzX29mZnNldFRhYmxlRW50cmllcyAtIDFdOworICAgICAgICByZXR1cm4gb2Zmc2V0
VGFibGUxNigpW3Nfb2Zmc2V0VGFibGVFbnRyaWVzIC0gMV07CisgICAgfQorCisgICAgdW5zaWdu
ZWQgb2Zmc2V0VGFibGVTaXplKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChtX2lzRmlu
YWxpemVkKTsKKyAgICAgICAgaWYgKG1faXMzMkJpdCkKKyAgICAgICAgICAgIHJldHVybiBzX29m
ZnNldDE2VGFibGVTaXplICsgc19vZmZzZXQzMlRhYmxlU2l6ZTsKKyAgICAgICAgcmV0dXJuIHNf
b2Zmc2V0MTZUYWJsZVNpemU7CisgICAgfQorCisgICAgdXNpbmcgT2Zmc2V0MzIgPSB1aW50MzJf
dDsKKyAgICB1c2luZyBPZmZzZXQxNiA9IHVpbnQxNl90OwogCiAgICAgc3RhdGljIGNvbnN0ZXhw
ciB1bnNpZ25lZCBzX29mZnNldFRhYmxlRW50cmllcyA9IE5VTUJFUl9PRl9CWVRFQ09ERV9XSVRI
X01FVEFEQVRBICsgMTsgLy8gb25lIGV4dHJhIGVudHJ5IGZvciB0aGUgImVuZCIgb2Zmc2V0Owot
ICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgc19vZmZzZXRUYWJsZVNpemUgPSBzX29mZnNl
dFRhYmxlRW50cmllcyAqIHNpemVvZihVbmxpbmtlZE1ldGFkYXRhVGFibGU6Ok9mZnNldCk7Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBzX29mZnNldDE2VGFibGVTaXplID0gcm91bmRV
cFRvTXVsdGlwbGVPZjxzaXplb2YodWludDMyX3QpPihzX29mZnNldFRhYmxlRW50cmllcyAqIHNp
emVvZihPZmZzZXQxNikpOworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgc19vZmZzZXQz
MlRhYmxlU2l6ZSA9IHNfb2Zmc2V0VGFibGVFbnRyaWVzICogc2l6ZW9mKE9mZnNldDMyKTsKKwor
ICAgIE9mZnNldDMyKiBwcmVwcm9jZXNzQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gYml0d2lzZV9j
YXN0PE9mZnNldDMyKj4obV9yYXdCdWZmZXIgKyBzaXplb2YoTGlua2luZ0RhdGEpKTsgfQorICAg
IHZvaWQqIGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fcmF3QnVmZmVyICsgc2l6ZW9mKExpbmtp
bmdEYXRhKTsgfQogCi0gICAgT2Zmc2V0KiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBiaXR3aXNl
X2Nhc3Q8T2Zmc2V0Kj4oYml0d2lzZV9jYXN0PHVpbnQ4X3QqPihtX3Jhd0J1ZmZlcikgKyBzaXpl
b2YoTGlua2luZ0RhdGEpKTsgfQorICAgIE9mZnNldDE2KiBvZmZzZXRUYWJsZTE2KCkgY29uc3Qg
eyByZXR1cm4gYml0d2lzZV9jYXN0PE9mZnNldDE2Kj4obV9yYXdCdWZmZXIgKyBzaXplb2YoTGlu
a2luZ0RhdGEpKTsgfQorICAgIE9mZnNldDMyKiBvZmZzZXRUYWJsZTMyKCkgY29uc3QgeyByZXR1
cm4gYml0d2lzZV9jYXN0PE9mZnNldDMyKj4obV9yYXdCdWZmZXIgKyBzaXplb2YoTGlua2luZ0Rh
dGEpICsgc19vZmZzZXQxNlRhYmxlU2l6ZSk7IH0KIAogICAgIGJvb2wgbV9oYXNNZXRhZGF0YSA6
IDE7CiAgICAgYm9vbCBtX2lzRmluYWxpemVkIDogMTsKICAgICBib29sIG1faXNMaW5rZWQgOiAx
OwotICAgIHZvaWQqIG1fcmF3QnVmZmVyOworICAgIGJvb2wgbV9pczMyQml0IDogMTsKKyAgICB1
aW50OF90KiBtX3Jhd0J1ZmZlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkTWV0YWRhdGFUYWJsZUlu
bGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZE1ldGFkYXRh
VGFibGVJbmxpbmVzLmgKaW5kZXggMzM1MzkyMmNhODNjMzFkNjY5N2VhNWU2YmE1MjM4YzE2Mzg2
OTM4YS4uYWEzYTE2ZTUxZmUwYmJkNTM1M2E5OTVhOWYzYzc5YTYzZTNmY2Y2ZCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkTWV0YWRhdGFUYWJsZUlu
bGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRNZXRh
ZGF0YVRhYmxlSW5saW5lcy5oCkBAIC0zNSw3ICszNSwxNyBAQCBBTFdBWVNfSU5MSU5FIFVubGlu
a2VkTWV0YWRhdGFUYWJsZTo6VW5saW5rZWRNZXRhZGF0YVRhYmxlKCkKICAgICA6IG1faGFzTWV0
YWRhdGEoZmFsc2UpCiAgICAgLCBtX2lzRmluYWxpemVkKGZhbHNlKQogICAgICwgbV9pc0xpbmtl
ZChmYWxzZSkKLSAgICAsIG1fcmF3QnVmZmVyKGZhc3RaZXJvZWRNYWxsb2Moc2l6ZW9mKExpbmtp
bmdEYXRhKSArIHNfb2Zmc2V0VGFibGVTaXplKSkKKyAgICAsIG1faXMzMkJpdChmYWxzZSkKKyAg
ICAsIG1fcmF3QnVmZmVyKHN0YXRpY19jYXN0PHVpbnQ4X3QqPihmYXN0WmVyb2VkTWFsbG9jKHNp
emVvZihMaW5raW5nRGF0YSkgKyBzX29mZnNldDMyVGFibGVTaXplKSkpCit7Cit9CisKK0FMV0FZ
U19JTkxJTkUgVW5saW5rZWRNZXRhZGF0YVRhYmxlOjpVbmxpbmtlZE1ldGFkYXRhVGFibGUoYm9v
bCBpczMyQml0KQorICAgIDogbV9oYXNNZXRhZGF0YShmYWxzZSkKKyAgICAsIG1faXNGaW5hbGl6
ZWQoZmFsc2UpCisgICAgLCBtX2lzTGlua2VkKGZhbHNlKQorICAgICwgbV9pczMyQml0KGlzMzJC
aXQpCisgICAgLCBtX3Jhd0J1ZmZlcihzdGF0aWNfY2FzdDx1aW50OF90Kj4oZmFzdFplcm9lZE1h
bGxvYyhzaXplb2YoTGlua2luZ0RhdGEpICsgKGlzMzJCaXQgPyBzX29mZnNldDE2VGFibGVTaXpl
ICsgc19vZmZzZXQzMlRhYmxlU2l6ZSA6IHNfb2Zmc2V0MTZUYWJsZVNpemUpKSkpCiB7CiB9CiAK
QEAgLTUwLDcgKzYwLDcgQEAgQUxXQVlTX0lOTElORSB1bnNpZ25lZCBVbmxpbmtlZE1ldGFkYXRh
VGFibGU6OmFkZEVudHJ5KE9wY29kZUlEIG9wY29kZUlEKQogewogICAgIEFTU0VSVCghbV9pc0Zp
bmFsaXplZCAmJiBvcGNvZGVJRCA8IHNfb2Zmc2V0VGFibGVFbnRyaWVzIC0gMSk7CiAgICAgbV9o
YXNNZXRhZGF0YSA9IHRydWU7Ci0gICAgcmV0dXJuIGJ1ZmZlcigpW29wY29kZUlEXSsrOworICAg
IHJldHVybiBwcmVwcm9jZXNzQnVmZmVyKClbb3Bjb2RlSURdKys7CiB9CiAKIEFMV0FZU19JTkxJ
TkUgc2l6ZV90IFVubGlua2VkTWV0YWRhdGFUYWJsZTo6c2l6ZUluQnl0ZXMoKQpAQCAtNTgsNyAr
NjgsMTggQEAgQUxXQVlTX0lOTElORSBzaXplX3QgVW5saW5rZWRNZXRhZGF0YVRhYmxlOjpzaXpl
SW5CeXRlcygpCiAgICAgaWYgKG1faXNGaW5hbGl6ZWQgJiYgIW1faGFzTWV0YWRhdGEpCiAgICAg
ICAgIHJldHVybiAwOwogCi0gICAgcmV0dXJuIHNfb2Zmc2V0VGFibGVTaXplOworICAgIGlmICht
X2lzMzJCaXQpCisgICAgICAgIHJldHVybiBzX29mZnNldDE2VGFibGVTaXplICsgc19vZmZzZXQz
MlRhYmxlU2l6ZTsKKyAgICByZXR1cm4gc19vZmZzZXQxNlRhYmxlU2l6ZTsKK30KKworaW5saW5l
IHNpemVfdCBVbmxpbmtlZE1ldGFkYXRhVGFibGU6Om1ldGFkYXRhVGFibGVTaXplKCkgY29uc3QK
K3sKKyAgICBpZiAobV9pc0ZpbmFsaXplZCAmJiAhbV9oYXNNZXRhZGF0YSkKKyAgICAgICAgcmV0
dXJuIDA7CisgICAgaWYgKG1faXMzMkJpdCkKKyAgICAgICAgcmV0dXJuIG9mZnNldFRhYmxlMzIo
KVtzX29mZnNldFRhYmxlRW50cmllcyAtIDFdOworICAgIHJldHVybiBvZmZzZXRUYWJsZTE2KClb
c19vZmZzZXRUYWJsZUVudHJpZXMgLSAxXTsKIH0KIAogQUxXQVlTX0lOTElORSBzaXplX3QgVW5s
aW5rZWRNZXRhZGF0YVRhYmxlOjpzaXplSW5CeXRlcyhNZXRhZGF0YVRhYmxlJiBtZXRhZGF0YVRh
YmxlKQpAQCAtNjcsMzYgKzg4LDE0IEBAIEFMV0FZU19JTkxJTkUgc2l6ZV90IFVubGlua2VkTWV0
YWRhdGFUYWJsZTo6c2l6ZUluQnl0ZXMoTWV0YWRhdGFUYWJsZSYgbWV0YWRhdGFUCiAKICAgICAv
LyBJbiB0aGlzIGNhc2UsIHdlIHJldHVybiB0aGUgc2l6ZSBvZiB0aGUgdGFibGUgbWludXMgdGhl
IG9mZnNldCB0YWJsZSwKICAgICAvLyB3aGljaCB3YXMgYWxyZWFkeSBhY2NvdW50ZWQgZm9yIGlu
IHRoZSBVbmxpbmtlZENvZGVCbG9jay4KKyAgICBzaXplX3QgcmVzdWx0ID0gdG90YWxTaXplKCk7
CiAgICAgaWYgKG1ldGFkYXRhVGFibGUuYnVmZmVyKCkgPT0gYnVmZmVyKCkpIHsKICAgICAgICAg
QVNTRVJUKG1faXNMaW5rZWQpOwotICAgICAgICByZXR1cm4gYnVmZmVyKClbc19vZmZzZXRUYWJs
ZUVudHJpZXMgLSAxXSAtIHNfb2Zmc2V0VGFibGVTaXplOwotICAgIH0KLQotICAgIHJldHVybiBt
ZXRhZGF0YVRhYmxlLmJ1ZmZlcigpW3Nfb2Zmc2V0VGFibGVFbnRyaWVzIC0gMV07Ci19Ci0KLUFM
V0FZU19JTkxJTkUgdm9pZCBVbmxpbmtlZE1ldGFkYXRhVGFibGU6OmZpbmFsaXplKCkKLXsKLSAg
ICBBU1NFUlQoIW1faXNGaW5hbGl6ZWQpOwotICAgIG1faXNGaW5hbGl6ZWQgPSB0cnVlOwotICAg
IGlmICghbV9oYXNNZXRhZGF0YSkgewotICAgICAgICBmYXN0RnJlZShtX3Jhd0J1ZmZlcik7Ci0g
ICAgICAgIG1fcmF3QnVmZmVyID0gbnVsbHB0cjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
ICAgIHVuc2lnbmVkIG9mZnNldCA9IHNfb2Zmc2V0VGFibGVTaXplOwotICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBzX29mZnNldFRhYmxlRW50cmllcyAtIDE7IGkrKykgewotICAgICAgICB1
bnNpZ25lZCBudW1iZXJPZkVudHJpZXMgPSBidWZmZXIoKVtpXTsKLQotICAgICAgICBpZiAobnVt
YmVyT2ZFbnRyaWVzID4gMCkgewotICAgICAgICAgICAgb2Zmc2V0ID0gcm91bmRVcFRvTXVsdGlw
bGVPZihtZXRhZGF0YUFsaWdubWVudChzdGF0aWNfY2FzdDxPcGNvZGVJRD4oaSkpLCBvZmZzZXQp
OwotICAgICAgICAgICAgYnVmZmVyKClbaV0gPSBvZmZzZXQ7Ci0gICAgICAgICAgICBvZmZzZXQg
Kz0gbnVtYmVyT2ZFbnRyaWVzICogbWV0YWRhdGFTaXplKHN0YXRpY19jYXN0PE9wY29kZUlEPihp
KSk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgYnVmZmVyKClbaV0gPSBvZmZzZXQ7Cisg
ICAgICAgIGlmIChtX2lzMzJCaXQpCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0IC0gKHNfb2Zm
c2V0MTZUYWJsZVNpemUgKyBzX29mZnNldDMyVGFibGVTaXplKTsKKyAgICAgICAgcmV0dXJuIHJl
c3VsdCAtIHNfb2Zmc2V0MTZUYWJsZVNpemU7CiAgICAgfQotICAgIGJ1ZmZlcigpW3Nfb2Zmc2V0
VGFibGVFbnRyaWVzIC0gMV0gPSBvZmZzZXQ7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogQUxX
QVlTX0lOTElORSBSZWZQdHI8TWV0YWRhdGFUYWJsZT4gVW5saW5rZWRNZXRhZGF0YVRhYmxlOjps
aW5rKCkKQEAgLTEwNiwxNiArMTA1LDE3IEBAIEFMV0FZU19JTkxJTkUgUmVmUHRyPE1ldGFkYXRh
VGFibGU+IFVubGlua2VkTWV0YWRhdGFUYWJsZTo6bGluaygpCiAgICAgaWYgKCFtX2hhc01ldGFk
YXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHVuc2lnbmVkIHRvdGFsU2l6ZSA9
IGJ1ZmZlcigpW3Nfb2Zmc2V0VGFibGVFbnRyaWVzIC0gMV07CisgICAgdW5zaWduZWQgdG90YWxT
aXplID0gdGhpcy0+dG90YWxTaXplKCk7CisgICAgdW5zaWduZWQgb2Zmc2V0VGFibGVTaXplID0g
dGhpcy0+b2Zmc2V0VGFibGVTaXplKCk7CiAgICAgdWludDhfdCogYnVmZmVyOwogICAgIGlmICgh
bV9pc0xpbmtlZCkgewogICAgICAgICBtX2lzTGlua2VkID0gdHJ1ZTsKICAgICAgICAgbV9yYXdC
dWZmZXIgPSBidWZmZXIgPSByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihmYXN0UmVhbGxvYyht
X3Jhd0J1ZmZlciwgc2l6ZW9mKExpbmtpbmdEYXRhKSArIHRvdGFsU2l6ZSkpOwogICAgIH0gZWxz
ZSB7CiAgICAgICAgIGJ1ZmZlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGZhc3RNYWxs
b2Moc2l6ZW9mKExpbmtpbmdEYXRhKSArIHRvdGFsU2l6ZSkpOwotICAgICAgICBtZW1jcHkoYnVm
ZmVyLCBtX3Jhd0J1ZmZlciwgc2l6ZW9mKExpbmtpbmdEYXRhKSArIHNfb2Zmc2V0VGFibGVTaXpl
KTsKKyAgICAgICAgbWVtY3B5KGJ1ZmZlciwgbV9yYXdCdWZmZXIsIHNpemVvZihMaW5raW5nRGF0
YSkgKyBvZmZzZXRUYWJsZVNpemUpOwogICAgIH0KLSAgICBtZW1zZXQoYnVmZmVyICsgc2l6ZW9m
KExpbmtpbmdEYXRhKSArIHNfb2Zmc2V0VGFibGVTaXplLCAwLCB0b3RhbFNpemUgLSBzX29mZnNl
dFRhYmxlU2l6ZSk7CisgICAgbWVtc2V0KGJ1ZmZlciArIHNpemVvZihMaW5raW5nRGF0YSkgKyBv
ZmZzZXRUYWJsZVNpemUsIDAsIHRvdGFsU2l6ZSAtIG9mZnNldFRhYmxlU2l6ZSk7CiAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgKGJ1ZmZlciArIHNpemVvZihMaW5raW5nRGF0YSkpIE1ldGFkYXRh
VGFibGUoKnRoaXMpKTsKIH0KIApAQCAtMTI4LDcgKzEyOCw3IEBAIEFMV0FZU19JTkxJTkUgdm9p
ZCBVbmxpbmtlZE1ldGFkYXRhVGFibGU6OnVubGluayhNZXRhZGF0YVRhYmxlJiBtZXRhZGF0YVRh
YmxlKQogICAgIGlmIChtZXRhZGF0YVRhYmxlLmJ1ZmZlcigpID09IGJ1ZmZlcigpKSB7CiAgICAg
ICAgIEFTU0VSVChtX2lzTGlua2VkKTsKICAgICAgICAgbV9pc0xpbmtlZCA9IGZhbHNlOwotICAg
ICAgICBtX3Jhd0J1ZmZlciA9IGZhc3RSZWFsbG9jKG1fcmF3QnVmZmVyLCBzaXplb2YoTGlua2lu
Z0RhdGEpICsgc19vZmZzZXRUYWJsZVNpemUpOworICAgICAgICBtX3Jhd0J1ZmZlciA9IHN0YXRp
Y19jYXN0PHVpbnQ4X3QqPihmYXN0UmVhbGxvYyhtX3Jhd0J1ZmZlciwgc2l6ZW9mKExpbmtpbmdE
YXRhKSArIG9mZnNldFRhYmxlU2l6ZSgpKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAg
ZmFzdEZyZWUoJm1ldGFkYXRhVGFibGUubGlua2luZ0RhdGEoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KaW5kZXggYmM0MTll
ZDYxNzkwMDAxMzM0NGU2MTVkYWU4NmZiNDYxMWY3MTkwMi4uMTUyNWE1NDMxZDAzOWNhYzA1ZGIy
YjlhYTU0ZjVlMmVkMDlmZmJkYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQpAQCAtMTgxLDYgKzE4MSw5IEBAIGNvbnN0IFRo
aXNBcmd1bWVudE9mZnNldCA9IEFyZ3VtZW50Q291bnQgKyBTbG90U2l6ZQogY29uc3QgRmlyc3RB
cmd1bWVudE9mZnNldCA9IFRoaXNBcmd1bWVudE9mZnNldCArIFNsb3RTaXplCiBjb25zdCBDYWxs
RnJhbWVIZWFkZXJTaXplID0gVGhpc0FyZ3VtZW50T2Zmc2V0CiAKK2NvbnN0IE1ldGFkYXRhT2Zm
c2V0VGFibGUxNiA9IDAKK2NvbnN0IE1ldGFkYXRhT2Zmc2V0VGFibGUzMiA9IGNvbnN0ZXhwciBV
bmxpbmtlZE1ldGFkYXRhVGFibGU6OnNfb2Zmc2V0MTZUYWJsZVNpemUKKwogIyBTb21lIHZhbHVl
IHJlcHJlc2VudGF0aW9uIGNvbnN0YW50cy4KIGlmIEpTVkFMVUU2NAogICAgIGNvbnN0IFRhZ0Jp
dFR5cGVPdGhlciA9IGNvbnN0ZXhwciBUYWdCaXRUeXBlT3RoZXIKQEAgLTMzNiw3ICszMzksMTAg
QEAgbWFjcm8gd2lkZShuYXJyb3dGbiwgd2lkZUZuLCBrKQogZW5kCiAKIG1hY3JvIG1ldGFkYXRh
KHNpemUsIG9wY29kZSwgZHN0LCBzY3JhdGNoKQotICAgIGxvYWRpIGNvbnN0ZXhwciAlb3Bjb2Rl
JTo6b3Bjb2RlSUQgKiA0W21ldGFkYXRhVGFibGVdLCBkc3QgIyBvZmZzZXQgPSBtZXRhZGF0YVRh
YmxlPHVuc2lnbmVkKj5bb3Bjb2RlSURdCisgICAgbG9hZGggKGNvbnN0ZXhwciAlb3Bjb2RlJTo6
b3Bjb2RlSUQgKiAyICsgTWV0YWRhdGFPZmZzZXRUYWJsZTE2KVttZXRhZGF0YVRhYmxlXSwgZHN0
ICMgb2Zmc2V0ID0gbWV0YWRhdGFUYWJsZTx1aW50MTZfdCo+W29wY29kZUlEXQorICAgIGJ0aW56
IGRzdCwgLnNldFVwT2Zmc2V0CisgICAgbG9hZGkgKGNvbnN0ZXhwciAlb3Bjb2RlJTo6b3Bjb2Rl
SUQgKiA0ICsgTWV0YWRhdGFPZmZzZXRUYWJsZTMyKVttZXRhZGF0YVRhYmxlXSwgZHN0ICMgb2Zm
c2V0ID0gbWV0YWRhdGFUYWJsZTx1aW50MzJfdCo+W29wY29kZUlEXQorLnNldFVwT2Zmc2V0Ogog
ICAgIGdldHUoc2l6ZSwgb3Bjb2RlLCBtX21ldGFkYXRhSUQsIHNjcmF0Y2gpICMgc2NyYXRjaCA9
IGJ5dGVjb2RlLm1fbWV0YWRhdGFJRAogICAgIG11bGkgc2l6ZW9mICVvcGNvZGUlOjpNZXRhZGF0
YSwgc2NyYXRjaCAjIHNjcmF0Y2ggKj0gc2l6ZW9mKE9wOjpNZXRhZGF0YSkKICAgICBhZGRpIHNj
cmF0Y2gsIGRzdCAjIG9mZnNldCArPSBzY3JhdGNoCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9DYWNoZWRUeXBlcy5jcHAKaW5kZXggM2I2MTBhOGQ3Nzc4YTdkN2I4MWJhMGJlNmMx
MzdhNGJkNzYzNmEzZC4uMTQwNTUxZGNmNzA4MzA4ZGViYWI4NmYzYWNkMTNmNDlkZTk1M2UyZSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcApAQCAt
MTMzMSwyMyArMTMzMSwzNSBAQCBjbGFzcyBDYWNoZWRNZXRhZGF0YVRhYmxlIDogcHVibGljIENh
Y2hlZE9iamVjdDxVbmxpbmtlZE1ldGFkYXRhVGFibGU+IHsKICAgICAgICAgbV9oYXNNZXRhZGF0
YSA9IG1ldGFkYXRhVGFibGUubV9oYXNNZXRhZGF0YTsKICAgICAgICAgaWYgKCFtX2hhc01ldGFk
YXRhKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBVbmxp
bmtlZE1ldGFkYXRhVGFibGU6OnNfb2Zmc2V0VGFibGVFbnRyaWVzOyBpLS07KQotICAgICAgICAg
ICAgbV9tZXRhZGF0YVtpXSA9IG1ldGFkYXRhVGFibGUuYnVmZmVyKClbaV07CisgICAgICAgIG1f
aXMzMkJpdCA9IG1ldGFkYXRhVGFibGUubV9pczMyQml0OworICAgICAgICBpZiAobV9pczMyQml0
KSB7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBVbmxpbmtlZE1ldGFkYXRhVGFibGU6
OnNfb2Zmc2V0VGFibGVFbnRyaWVzOyBpLS07KQorICAgICAgICAgICAgICAgIG1fbWV0YWRhdGFb
aV0gPSBtZXRhZGF0YVRhYmxlLm9mZnNldFRhYmxlMzIoKVtpXTsKKyAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IFVubGlua2VkTWV0YWRhdGFUYWJsZTo6c19v
ZmZzZXRUYWJsZUVudHJpZXM7IGktLTspCisgICAgICAgICAgICAgICAgbV9tZXRhZGF0YVtpXSA9
IG1ldGFkYXRhVGFibGUub2Zmc2V0VGFibGUxNigpW2ldOworICAgICAgICB9CiAgICAgfQogCiAg
ICAgUmVmPFVubGlua2VkTWV0YWRhdGFUYWJsZT4gZGVjb2RlKERlY29kZXImKSBjb25zdAogICAg
IHsKLSAgICAgICAgUmVmPFVubGlua2VkTWV0YWRhdGFUYWJsZT4gbWV0YWRhdGFUYWJsZSA9IFVu
bGlua2VkTWV0YWRhdGFUYWJsZTo6Y3JlYXRlKCk7CisgICAgICAgIFJlZjxVbmxpbmtlZE1ldGFk
YXRhVGFibGU+IG1ldGFkYXRhVGFibGUgPSBVbmxpbmtlZE1ldGFkYXRhVGFibGU6OmNyZWF0ZSht
X2lzMzJCaXQpOwogICAgICAgICBtZXRhZGF0YVRhYmxlLT5tX2lzRmluYWxpemVkID0gdHJ1ZTsK
ICAgICAgICAgbWV0YWRhdGFUYWJsZS0+bV9pc0xpbmtlZCA9IGZhbHNlOwogICAgICAgICBtZXRh
ZGF0YVRhYmxlLT5tX2hhc01ldGFkYXRhID0gbV9oYXNNZXRhZGF0YTsKLSAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gVW5saW5rZWRNZXRhZGF0YVRhYmxlOjpzX29mZnNldFRhYmxlRW50cmllczsg
aS0tOykKLSAgICAgICAgICAgIG1ldGFkYXRhVGFibGUtPmJ1ZmZlcigpW2ldID0gbV9tZXRhZGF0
YVtpXTsKKyAgICAgICAgaWYgKG1faXMzMkJpdCkgeworICAgICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gVW5saW5rZWRNZXRhZGF0YVRhYmxlOjpzX29mZnNldFRhYmxlRW50cmllczsgaS0tOykK
KyAgICAgICAgICAgICAgICBtZXRhZGF0YVRhYmxlLT5vZmZzZXRUYWJsZTMyKClbaV0gPSBtX21l
dGFkYXRhW2ldOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gVW5saW5rZWRNZXRhZGF0YVRhYmxlOjpzX29mZnNldFRhYmxlRW50cmllczsgaS0tOykKKyAg
ICAgICAgICAgICAgICBtZXRhZGF0YVRhYmxlLT5vZmZzZXRUYWJsZTE2KClbaV0gPSBtX21ldGFk
YXRhW2ldOworICAgICAgICB9CiAgICAgICAgIHJldHVybiBtZXRhZGF0YVRhYmxlOwogICAgIH0K
IAogcHJpdmF0ZToKICAgICBib29sIG1faGFzTWV0YWRhdGE7CisgICAgYm9vbCBtX2lzMzJCaXQ7
CiAgICAgc3RkOjphcnJheTx1bnNpZ25lZCwgVW5saW5rZWRNZXRhZGF0YVRhYmxlOjpzX29mZnNl
dFRhYmxlRW50cmllcz4gbV9tZXRhZGF0YTsKIH07CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>370189</attachid>
            <date>2019-05-18 03:03:29 -0700</date>
            <delta_ts>2019-05-18 03:10:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-197910-20190518030328.patch</filename>
            <type>text/plain</type>
            <size>27135</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ1NDg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
MmQ1Y2ZlMTY0OWQ0OGFkNDEzN2U4NDM0MzJjZjEyYzkxY2Y0NTE0Li4xM2NlYWU3NWRmOGY4MWQ1
MjQ2N2U4NTUxYmEzNGRmZTAwMzlhOGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3NCBAQAorMjAxOS0wNS0xOCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFVubGlua2VkTWV0YWRhdGFUYWJsZSdzIG9mZnNldCB0YWJsZSBz
aG91bGQgYmUgc21hbGwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE5NzkxMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEluIEdtYWlsLCB3ZSBmb3VuZCB0aGF0IG1hc3NpdmUgIyBvZiBVbmxpbmtlZE1ldGFk
YXRhVGFibGUgKDIxOTc5IC0gMjQ3MjcpIGV4aXN0cy4gRWFjaCBVbmxpbmtlZE1ldGFkYXRhVGFi
bGUgdGFrZXMgYXQgbGVhc3QgMjA0IGJ5dGVzCisgICAgICAgIGJlY2F1c2Ugb2YgbGFyZ2UgKHVu
c2luZ2VkKSBvZmZzZXQgdGFibGUuIFRoaXMgcGF0Y2ggcmVkdWNlcyB0aGUgc2l6ZSBvZiBvZmZz
ZXQgdGFibGUgYnkgaW50cm9kdWNpbmcgMTZiaXQgdmVyc2lvbiBvZmZzZXQgdGFibGUuCisgICAg
ICAgIFByZXZpb3VzbHkgb3VyIGNvZGUgZm9yIGxvb2tpbmcgdXAgTWV0YWRhdGEgaXMgbGlrZSB0
aGlzLgorCisgICAgICAgICAgICBvZmZzZXQgPSBvZmZzZXRUYWJsZTMyW29wY29kZV0KKyAgICAg
ICAgICAgIG1ldGFkYXRhID0gKFNvbWVPcDo6TWV0YWRhdGEqKXRhYmxlW29mZnNldF0gKyBpZAor
CisgICAgICAgIEluc3RlYWQsIHdlIGludHJvZHVjZSB1aW50MTZfdCBvZmZzZXQgdGFibGUuIFRo
ZSBsb29rdXAgY29kZSBiZWNvbWVzIGxpa2UgdGhpcy4KKworICAgICAgICAgICAgb2Zmc2V0ID0g
b2Zmc2V0VGFibGUxNltvcGNvZGVdCisgICAgICAgICAgICBpZiAoIW9mZnNldCkKKyAgICAgICAg
ICAgICAgICBvZmZzZXQgPSBvZmZzZXRUYWJsZTMyW29wY29kZV0KKyAgICAgICAgICAgIG1ldGFk
YXRhID0gKFNvbWVPcDo6TWV0YWRhdGEqKXRhYmxlW29mZnNldF0gKyBpZAorCisgICAgICAgIFdl
IHVzZSAwIG9mZnNldCBhcyBhIG1hcmtlciB0byBpbmRpY2F0ZSB0aGF0IHdlIGhhdmUgMzJiaXQg
b2Zmc2V0IHRhYmxlLiBUaGlzIGlzIE9LIHNpbmNlIDAgb2Zmc2V0IGRvZXMgbm90IGFwcGVhciBz
aW5jZSBhbGwgdGhlIG9mZnNldHMKKyAgICAgICAgaW5jbHVkZWQgaW4gdGhpcyB0YWJsZSBpcyBs
YXJnZXIgdGhhbiBzX29mZnNldDE2VGFibGVTaXplLgorCisgICAgICAgIDMyYml0IG9mZnNldCB0
YWJsZSBpcyBhbGxvY2F0ZWQgb25seSB3aGVuIHRoZSBvZmZzZXQgZXhjZWVkcyAxNmJpdCByYW5n
ZS4gSXQgbWVhbnMgdGhhdCB0aGlzIHdpbGwgYmUgdXNlZCBvbmx5IHdoZW4gTWV0YWRhdGEgdGFi
bGUgaXMgbGFyZ2VyCisgICAgICAgIHRoYW4gYWxtb3N0IDY0S0IuIEV2ZW4gaW4gR21haWwsIHN1
Y2ggTWV0YWRhdGFUYWJsZSBpcyByYXJlLCBhbmQgYWRkaXRpb25hbCAzMmJpdCBvZmZzZXQgdGFi
bGUgc2l6ZSBkb2VzIG5vdCBtYXR0ZXIgbXVjaCBpbiB0aGlzIGNhc2Ugc2luY2UKKyAgICAgICAg
TWV0YWRhdGFUYWJsZSBpcyBhbHJlYWR5IHNvIGxhcmdlLgorCisgICAgICAgIEJhc2VkIG9uIHRo
ZSAjIG9mIFVubGlua2VkTWV0YWRhdGFUYWJsZXMsIHRoaXMgb3B0aW1pemF0aW9uIHNob3VsZCBp
bXByb3ZlIEdtYWlsIHN0ZWFkeSBzdGF0ZSBtZW1vcnkgYnkgMk1CLgorCisgICAgICAgICogSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBTb3VyY2Vz
LnR4dDoKKyAgICAgICAgKiBieXRlY29kZS9NZXRhZGF0YVRhYmxlLmNwcDoKKyAgICAgICAgKEpT
Qzo6TWV0YWRhdGFUYWJsZTo6fk1ldGFkYXRhVGFibGUpOgorICAgICAgICAoSlNDOjpNZXRhZGF0
YVRhYmxlOjpkZXN0cm95KToKKyAgICAgICAgKiBieXRlY29kZS9NZXRhZGF0YVRhYmxlLmg6Cisg
ICAgICAgIChKU0M6Ok1ldGFkYXRhVGFibGU6OnJlZik6CisgICAgICAgIChKU0M6Ok1ldGFkYXRh
VGFibGU6OmRlcmVmKToKKyAgICAgICAgKEpTQzo6TWV0YWRhdGFUYWJsZTo6YnVmZmVyKToKKyAg
ICAgICAgKEpTQzo6TWV0YWRhdGFUYWJsZTo6aXMzMkJpdCBjb25zdCk6CisgICAgICAgIChKU0M6
Ok1ldGFkYXRhVGFibGU6Om9mZnNldFRhYmxlMTYgY29uc3QpOgorICAgICAgICAoSlNDOjpNZXRh
ZGF0YVRhYmxlOjpvZmZzZXRUYWJsZTMyIGNvbnN0KToKKyAgICAgICAgKEpTQzo6TWV0YWRhdGFU
YWJsZTo6dG90YWxTaXplIGNvbnN0KToKKyAgICAgICAgKEpTQzo6TWV0YWRhdGFUYWJsZTo6Z2V0
T2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6TWV0YWRhdGFUYWJsZTo6Z2V0SW1wbCk6Cisg
ICAgICAgIChKU0M6Ok1ldGFkYXRhVGFibGU6OnJlZiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6Ok1ldGFkYXRhVGFibGU6OmRlcmVmIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBi
eXRlY29kZS9PcGNvZGUuY3BwOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkTWV0YWRhdGFU
YWJsZS5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpVbmxpbmtlZE1ldGFkYXRhVGFibGU6OmZp
bmFsaXplKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZE1ldGFkYXRhVGFibGUuaDoKKyAg
ICAgICAgKEpTQzo6VW5saW5rZWRNZXRhZGF0YVRhYmxlOjpjcmVhdGUpOgorICAgICAgICAoSlND
OjpVbmxpbmtlZE1ldGFkYXRhVGFibGU6OnRvdGFsU2l6ZSBjb25zdCk6CisgICAgICAgIChKU0M6
OlVubGlua2VkTWV0YWRhdGFUYWJsZTo6b2Zmc2V0VGFibGVTaXplIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6VW5saW5rZWRNZXRhZGF0YVRhYmxlOjpwcmVwcm9jZXNzQnVmZmVyIGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6VW5saW5rZWRNZXRhZGF0YVRhYmxlOjpidWZmZXIgY29uc3QpOgorICAgICAg
ICAoSlNDOjpVbmxpbmtlZE1ldGFkYXRhVGFibGU6Om9mZnNldFRhYmxlMTYgY29uc3QpOgorICAg
ICAgICAoSlNDOjpVbmxpbmtlZE1ldGFkYXRhVGFibGU6Om9mZnNldFRhYmxlMzIgY29uc3QpOgor
ICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkTWV0YWRhdGFUYWJsZUlubGluZXMuaDoKKyAgICAg
ICAgKEpTQzo6VW5saW5rZWRNZXRhZGF0YVRhYmxlOjpVbmxpbmtlZE1ldGFkYXRhVGFibGUpOgor
ICAgICAgICAoSlNDOjpVbmxpbmtlZE1ldGFkYXRhVGFibGU6OmFkZEVudHJ5KToKKyAgICAgICAg
KEpTQzo6VW5saW5rZWRNZXRhZGF0YVRhYmxlOjpzaXplSW5CeXRlcyk6CisgICAgICAgIChKU0M6
OlVubGlua2VkTWV0YWRhdGFUYWJsZTo6bWV0YWRhdGFUYWJsZVNpemUgY29uc3QpOgorICAgICAg
ICAoSlNDOjpVbmxpbmtlZE1ldGFkYXRhVGFibGU6OmxpbmspOgorICAgICAgICAoSlNDOjpVbmxp
bmtlZE1ldGFkYXRhVGFibGU6OnVubGluayk6CisgICAgICAgIChKU0M6OlVubGlua2VkTWV0YWRh
dGFUYWJsZTo6ZmluYWxpemUpOiBEZWxldGVkLgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIuYXNtOgorICAgICAgICAqIHJ1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwOgorICAgICAg
ICAoSlNDOjpDYWNoZWRNZXRhZGF0YVRhYmxlOjplbmNvZGUpOgorICAgICAgICAoSlNDOjpDYWNo
ZWRNZXRhZGF0YVRhYmxlOjpkZWNvZGUgY29uc3QpOgorCiAyMDE5LTA1LTE3ICBLZWl0aCBSb2xs
aW4gIDxrcm9sbGluQGFwcGxlLmNvbT4KIAogICAgICAgICBSZS1lbmFibGUgZ2VuZXJhdGUteGNm
aWxlbGlzdHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggN2UyMWUwYjA3YzUzMmNj
N2E4MWI3NTEwMDQxYWIyMjI0YzlkMmU3MS4uOGE5NDYyNDhkMmZkNzhlZWQ5NzgyZjIxN2Y5YTgy
ZGYzYjVhMjgwMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQ3MjMsNiArNDcy
Myw3IEBACiAJCUUxNzg2MzZDMEQ5QkVFQzMwMEQ3NEU3NSAvKiBJbml0aWFsaXplVGhyZWFkaW5n
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluaXRpYWxpemVUaHJl
YWRpbmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMThFM0E1NjBERjkyNzhD
MDBEOTBCMzQgLyogVk0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBsaW5lRW5kaW5nID0g
MDsgcGF0aCA9IFZNLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHhjTGFuZ3VhZ2VTcGVjaWZp
Y2F0aW9uSWRlbnRpZmllciA9IHhjb2RlLmxhbmcub2JqY3BwOyB9OwogCQlFMThFM0E1NzBERjky
NzhDMDBEOTBCMzQgLyogVk0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBsaW5l
RW5kaW5nID0gMDsgcGF0aCA9IFZNLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgeGNMYW5n
dWFnZVNwZWNpZmljYXRpb25JZGVudGlmaWVyID0geGNvZGUubGFuZy5jcHA7IH07CisJCUUzMDYw
MTI4MjI4Rjk3ODEwMEZBQUJERiAvKiBVbmxpbmtlZE1ldGFkYXRhVGFibGUuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gVW5saW5rZWRNZXRhZGF0YVRhYmxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRTMwNjc3OTcxQjhCQzZGNTAwM0Y4N0YwIC8qIE1vZHVsZUxvYWRlci5qcyAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IE1vZHVsZUxvYWRlci5qczsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMxMTc5QTkyMjg4Mzg1RDAwNTE0QjJDIC8q
IFN5bWJvbFRhYmxlT3JTY29wZURlcHRoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN5bWJvbFRhYmxlT3JT
Y29wZURlcHRoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzMTYxODEwMUVDNUZF
MDgwMDA2QTIxOCAvKiBET01Bbm5vdGF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IERPTUFubm90YXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTgw
NjUsNiArODA2Niw3IEBACiAJCQkJMTQxNDJFNTQxQjc5NzNDMDAwRjRCRjRCIC8qIFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlLmNwcCAqLywKIAkJCQkxNDE0MkU1MDFCNzk2RUNFMDBGNEJGNEIg
LyogVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaCAqLywKIAkJCQkxNEFEOTExQzFEQ0E5RkE0
MDAxNEY5RkUgLyogVW5saW5rZWRHbG9iYWxDb2RlQmxvY2suaCAqLywKKwkJCQlFMzA2MDEyODIy
OEY5NzgxMDBGQUFCREYgLyogVW5saW5rZWRNZXRhZGF0YVRhYmxlLmNwcCAqLywKIAkJCQkxNDJE
NTJCRTIxNzYyOTU4MDAyREIwODYgLyogVW5saW5rZWRNZXRhZGF0YVRhYmxlLmggKi8sCiAJCQkJ
MTQyRDUyQkQyMTc2Mjk1NzAwMkRCMDg2IC8qIFVubGlua2VkTWV0YWRhdGFUYWJsZUlubGluZXMu
aCAqLywKIAkJCQkxNEFEOTEyQTFEQ0FBQUIwMDAxNEY5RkUgLyogVW5saW5rZWRNb2R1bGVQcm9n
cmFtQ29kZUJsb2NrLmNwcCAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9T
b3VyY2VzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAppbmRleCAyMTk2
Yzk3YmJiMTI5ZTJhYmRiYzMwYzhmNWNjYjQxNGQ2NTI4ZmI4Li40M2Q3ZWY0NzU4MjJhODNhZmFm
OWExMmU4Y2Y5ZTExYTlkN2RiODdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
U291cmNlcy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CkBAIC0y
NzMsNiArMjczLDcgQEAgYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCiBieXRlY29kZS9V
bmxpbmtlZEV2YWxDb2RlQmxvY2suY3BwCiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uQ29kZUJs
b2NrLmNwcAogYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCitieXRlY29k
ZS9VbmxpbmtlZE1ldGFkYXRhVGFibGUuY3BwCiBieXRlY29kZS9VbmxpbmtlZE1vZHVsZVByb2dy
YW1Db2RlQmxvY2suY3BwCiBieXRlY29kZS9VbmxpbmtlZFByb2dyYW1Db2RlQmxvY2suY3BwCiBi
eXRlY29kZS9WYWx1ZVJlY292ZXJ5LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL01ldGFkYXRhVGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL01ldGFkYXRhVGFibGUuY3BwCmluZGV4IDVmZGM4YWQ0Njk3YTRiNzIzNDRmZGU1OTVi
N2Q2MTIyZWVjNTMwZDkuLjgxNWE3YzU2ODQ1OTIzYmExYmVlMDQ0NGVkNWQ4OWM2NmMyZDc3NTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRhZGF0YVRhYmxl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0YWRhdGFUYWJsZS5j
cHAKQEAgLTU2LDExICs1NiwxNiBAQCBNZXRhZGF0YVRhYmxlOjp+TWV0YWRhdGFUYWJsZSgpCiB7
CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IE5VTUJFUl9PRl9CWVRFQ09ERV9XSVRIX01F
VEFEQVRBOyBpKyspCiAgICAgICAgIGdldE9wY29kZVR5cGU8RGVhbGxvY1RhYmxlPihzdGF0aWNf
Y2FzdDxPcGNvZGVJRD4oaSksIHRoaXMpOwotICAgIFJlZjxVbmxpbmtlZE1ldGFkYXRhVGFibGU+
IHVubGlua2VkTWV0YWRhdGEgPSBXVEZNb3ZlKGxpbmtpbmdEYXRhKCkudW5saW5rZWRNZXRhZGF0
YSk7CiAgICAgbGlua2luZ0RhdGEoKS5+TGlua2luZ0RhdGEoKTsKK30KKwordm9pZCBNZXRhZGF0
YVRhYmxlOjpkZXN0cm95KE1ldGFkYXRhVGFibGUqIHRhYmxlKQoreworICAgIFJlZjxVbmxpbmtl
ZE1ldGFkYXRhVGFibGU+IHVubGlua2VkTWV0YWRhdGEgPSBXVEZNb3ZlKHRhYmxlLT5saW5raW5n
RGF0YSgpLnVubGlua2VkTWV0YWRhdGEpOworICAgIHRhYmxlLT5+TWV0YWRhdGFUYWJsZSgpOwog
ICAgIC8vIFNpbmNlIFVubGlua2VkTWV0YWRhdGE6OnVubGluayBmcmVlcyB0aGUgdW5kZXJseWlu
ZyBtZW1vcnkgb2YgTWV0YWRhdGFUYWJsZS4KICAgICAvLyBXZSBuZWVkIHRvIGRlc3Ryb3kgTGlu
a2luZ0RhdGEgYmVmb3JlIGNhbGxpbmcgaXQuCi0gICAgdW5saW5rZWRNZXRhZGF0YS0+dW5saW5r
KCp0aGlzKTsKKyAgICB1bmxpbmtlZE1ldGFkYXRhLT51bmxpbmsoKnRhYmxlKTsKIH0KIAogc2l6
ZV90IE1ldGFkYXRhVGFibGU6OnNpemVJbkJ5dGVzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9NZXRhZGF0YVRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvTWV0YWRhdGFUYWJsZS5oCmluZGV4IGE1ZDQxMjFiMWQ0MWQxNjFiZjI2NTQy
ZTA5Mjg2Y2ZiZDk5Mzk1YjguLjg5ZmRkMzUwZDE1YWYyNDg2YWRlZWM3M2RhYzI4NTQzNzNkNWE5
Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRhZGF0YVRh
YmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGFkYXRhVGFibGUu
aApAQCAtNjMsMTYgKzYzLDE2IEBAIGNsYXNzIE1ldGFkYXRhVGFibGUgewogCiAgICAgc2l6ZV90
IHNpemVJbkJ5dGVzKCk7CiAKLSAgICB2b2lkIHJlZigpIGNvbnN0CisgICAgdm9pZCByZWYoKQog
ICAgIHsKICAgICAgICAgKytsaW5raW5nRGF0YSgpLnJlZkNvdW50OwogICAgIH0KIAotICAgIHZv
aWQgZGVyZWYoKSBjb25zdAorICAgIHZvaWQgZGVyZWYoKQogICAgIHsKICAgICAgICAgdW5zaWdu
ZWQgdGVtcFJlZkNvdW50ID0gbGlua2luZ0RhdGEoKS5yZWZDb3VudCAtIDE7CiAgICAgICAgIGlm
ICghdGVtcFJlZkNvdW50KSB7Ci0gICAgICAgICAgICB0aGlzLT5+TWV0YWRhdGFUYWJsZSgpOwor
ICAgICAgICAgICAgTWV0YWRhdGFUYWJsZTo6ZGVzdHJveSh0aGlzKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogICAgICAgICBsaW5raW5nRGF0YSgpLnJlZkNvdW50ID0gdGVtcFJl
ZkNvdW50OwpAQCAtODgsMjMgKzg4LDQxIEBAIGNsYXNzIE1ldGFkYXRhVGFibGUgewogICAgICAg
ICByZXR1cm4gcmVmQ291bnQoKSA9PSAxOwogICAgIH0KIAotICAgIFVubGlua2VkTWV0YWRhdGFU
YWJsZTo6T2Zmc2V0KiBidWZmZXIoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2Fz
dDxVbmxpbmtlZE1ldGFkYXRhVGFibGU6Ok9mZnNldCo+KHRoaXMpOwotICAgIH0KKyAgICB2b2lk
KiBidWZmZXIoKSB7IHJldHVybiB0aGlzOyB9CisKKyAgICBib29sIGlzMzJCaXQoKSBjb25zdCB7
IHJldHVybiAhb2Zmc2V0VGFibGUxNigpWzBdOyB9CiAKIHByaXZhdGU6CiAgICAgTWV0YWRhdGFU
YWJsZShVbmxpbmtlZE1ldGFkYXRhVGFibGUmKTsKIAorICAgIFVubGlua2VkTWV0YWRhdGFUYWJs
ZTo6T2Zmc2V0MTYqIG9mZnNldFRhYmxlMTYoKSBjb25zdCB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8
VW5saW5rZWRNZXRhZGF0YVRhYmxlOjpPZmZzZXQxNio+KHRoaXMpOyB9CisgICAgVW5saW5rZWRN
ZXRhZGF0YVRhYmxlOjpPZmZzZXQzMiogb2Zmc2V0VGFibGUzMigpIGNvbnN0IHsgcmV0dXJuIGJp
dHdpc2VfY2FzdDxVbmxpbmtlZE1ldGFkYXRhVGFibGU6Ok9mZnNldDMyKj4oYml0d2lzZV9jYXN0
PHVpbnQ4X3QqPih0aGlzKSArIFVubGlua2VkTWV0YWRhdGFUYWJsZTo6c19vZmZzZXQxNlRhYmxl
U2l6ZSk7IH0KKworICAgIHNpemVfdCB0b3RhbFNpemUoKSBjb25zdAorICAgIHsKKyAgICAgICAg
cmV0dXJuIGdldE9mZnNldChVbmxpbmtlZE1ldGFkYXRhVGFibGU6OnNfb2Zmc2V0VGFibGVFbnRy
aWVzIC0gMSk7CisgICAgfQorCiAgICAgVW5saW5rZWRNZXRhZGF0YVRhYmxlOjpMaW5raW5nRGF0
YSYgbGlua2luZ0RhdGEoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuICpiaXR3aXNlX2Nh
c3Q8VW5saW5rZWRNZXRhZGF0YVRhYmxlOjpMaW5raW5nRGF0YSo+KChiaXR3aXNlX2Nhc3Q8dWlu
dDhfdCo+KHRoaXMpIC0gc2l6ZW9mKFVubGlua2VkTWV0YWRhdGFUYWJsZTo6TGlua2luZ0RhdGEp
KSk7CiAgICAgfQogCisgICAgQUxXQVlTX0lOTElORSB1bnNpZ25lZCBnZXRPZmZzZXQodW5zaWdu
ZWQgaSkgY29uc3QKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIG9mZnNldCA9IG9mZnNldFRhYmxl
MTYoKVtpXTsKKyAgICAgICAgaWYgKG9mZnNldCkKKyAgICAgICAgICAgIHJldHVybiBvZmZzZXQ7
CisgICAgICAgIHJldHVybiBvZmZzZXRUYWJsZTMyKClbaV07CisgICAgfQorCiAgICAgQUxXQVlT
X0lOTElORSB1aW50OF90KiBnZXRJbXBsKHVuc2lnbmVkIGkpCiAgICAgewotICAgICAgICByZXR1
cm4gYml0d2lzZV9jYXN0PHVpbnQ4X3QqPih0aGlzKSArIGJ1ZmZlcigpW2ldOworCisgICAgICAg
IHJldHVybiBiaXR3aXNlX2Nhc3Q8dWludDhfdCo+KHRoaXMpICsgZ2V0T2Zmc2V0KGkpOwogICAg
IH0KKworICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koTWV0YWRhdGFUYWJsZSopOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvT3Bjb2RlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuY3Bw
CmluZGV4IDI4NGNlZjdmNjQ0ZjIzYmExZjc1OTk2MTY5MjE2OGY1MjlmMGFjNTAuLjBjMDVmODMw
MjZlYmI0YmFmZGExYTc3M2IyMDQ1ZTM5ZjYwMzA1M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9PcGNvZGUuY3BwCkBAIC0yMDMsNyArMjAzLDcgQEAgdm9pZCBPcGNvZGVTdGF0
czo6cmVzZXRMYXN0SW5zdHJ1Y3Rpb24oKQogCiAjZW5kaWYKIAotc3RhdGljIHVuc2lnbmVkIG1l
dGFkYXRhU2l6ZXNbXSA9IHsKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBtZXRhZGF0YVNpemVzW10g
PSB7CiAKICNkZWZpbmUgTUVUQURBVEFfU0laRShzaXplKSBzaXplLAogICAgIEZPUl9FQUNIX0JZ
VEVDT0RFX01FVEFEQVRBX1NJWkUoTUVUQURBVEFfU0laRSkKQEAgLTIxMSw3ICsyMTEsNyBAQCBz
dGF0aWMgdW5zaWduZWQgbWV0YWRhdGFTaXplc1tdID0gewogCiB9OwogCi1zdGF0aWMgdW5zaWdu
ZWQgbWV0YWRhdGFBbGlnbm1lbnRzW10gPSB7CitzdGF0aWMgY29uc3QgdW5zaWduZWQgbWV0YWRh
dGFBbGlnbm1lbnRzW10gPSB7CiAKICNkZWZpbmUgTUVUQURBVEFfQUxJR05NRU5UKHNpemUpIHNp
emUsCiAgICAgRk9SX0VBQ0hfQllURUNPREVfTUVUQURBVEFfQUxJR05NRU5UKE1FVEFEQVRBX0FM
SUdOTUVOVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxp
bmtlZE1ldGFkYXRhVGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Vu
bGlua2VkTWV0YWRhdGFUYWJsZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGUxNjU4MzE3ZDc1MjkzYTUzNDIw
NTcyZjRhODFkODVkZTQzMzUyMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9VbmxpbmtlZE1ldGFkYXRhVGFibGUuY3BwCkBAIC0wLDAgKzEsODYgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiVW5saW5rZWRNZXRhZGF0YVRhYmxlLmgiCisKKyNpbmNsdWRl
ICJCeXRlY29kZVN0cnVjdHMuaCIKKyNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJK
U0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiT3Bjb2RlSW5saW5lcy5oIgorI2luY2x1ZGUgIlVubGlu
a2VkTWV0YWRhdGFUYWJsZUlubGluZXMuaCIKKyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgor
CituYW1lc3BhY2UgSlNDIHsKKworI2RlZmluZSBKU0NfQUxJR05NRU5UX0NIRUNLKHNpemUpIHN0
YXRpY19hc3NlcnQoc2l6ZSA8PSBVbmxpbmtlZE1ldGFkYXRhVGFibGU6OnNfbWF4TWV0YWRhdGFB
bGlnbm1lbnQpOworRk9SX0VBQ0hfQllURUNPREVfTUVUQURBVEFfQUxJR05NRU5UKEpTQ19BTElH
Tk1FTlRfQ0hFQ0spCisjdW5kZWYgSlNDX0FMSUdOTUVOVF9DSEVDSworCit2b2lkIFVubGlua2Vk
TWV0YWRhdGFUYWJsZTo6ZmluYWxpemUoKQoreworICAgIEFTU0VSVCghbV9pc0ZpbmFsaXplZCk7
CisgICAgbV9pc0ZpbmFsaXplZCA9IHRydWU7CisgICAgaWYgKCFtX2hhc01ldGFkYXRhKSB7Cisg
ICAgICAgIGZhc3RGcmVlKG1fcmF3QnVmZmVyKTsKKyAgICAgICAgbV9yYXdCdWZmZXIgPSBudWxs
cHRyOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgdW5zaWduZWQgb2Zmc2V0ID0gc19v
ZmZzZXQxNlRhYmxlU2l6ZTsKKyAgICB7CisgICAgICAgIE9mZnNldDMyKiBidWZmZXIgPSBwcmVw
cm9jZXNzQnVmZmVyKCk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzX29mZnNl
dFRhYmxlRW50cmllcyAtIDE7IGkrKykgeworICAgICAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZF
bnRyaWVzID0gYnVmZmVyW2ldOworICAgICAgICAgICAgaWYgKCFudW1iZXJPZkVudHJpZXMpIHsK
KyAgICAgICAgICAgICAgICBidWZmZXJbaV0gPSBvZmZzZXQ7CisgICAgICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBvZmZzZXQgPSByb3VuZFVwVG9NdWx0
aXBsZU9mKG1ldGFkYXRhQWxpZ25tZW50KHN0YXRpY19jYXN0PE9wY29kZUlEPihpKSksIG9mZnNl
dCk7CisgICAgICAgICAgICBidWZmZXJbaV0gPSBvZmZzZXQ7CisgICAgICAgICAgICBvZmZzZXQg
Kz0gbnVtYmVyT2ZFbnRyaWVzICogbWV0YWRhdGFTaXplKHN0YXRpY19jYXN0PE9wY29kZUlEPihp
KSk7CisgICAgICAgIH0KKyAgICAgICAgYnVmZmVyW3Nfb2Zmc2V0VGFibGVFbnRyaWVzIC0gMV0g
PSBvZmZzZXQ7CisgICAgICAgIG1faXMzMkJpdCA9IG9mZnNldCA+IFVJTlQxNl9NQVg7CisgICAg
fQorCisgICAgaWYgKG1faXMzMkJpdCkgeworICAgICAgICBtX3Jhd0J1ZmZlciA9IHJlaW50ZXJw
cmV0X2Nhc3Q8dWludDhfdCo+KGZhc3RSZWFsbG9jKG1fcmF3QnVmZmVyLCBzX29mZnNldDE2VGFi
bGVTaXplICsgc19vZmZzZXQzMlRhYmxlU2l6ZSArIHNpemVvZihMaW5raW5nRGF0YSkpKTsKKyAg
ICAgICAgbWVtbW92ZShtX3Jhd0J1ZmZlciArIHNpemVvZihMaW5raW5nRGF0YSkgKyBzX29mZnNl
dDE2VGFibGVTaXplLCBtX3Jhd0J1ZmZlciArIHNpemVvZihMaW5raW5nRGF0YSksIHNfb2Zmc2V0
MzJUYWJsZVNpemUpOworICAgICAgICBtZW1zZXQobV9yYXdCdWZmZXIgKyBzaXplb2YoTGlua2lu
Z0RhdGEpLCAwLCBzX29mZnNldDE2VGFibGVTaXplKTsKKyAgICAgICAgT2Zmc2V0MzIqIGJ1ZmZl
ciA9IGJpdHdpc2VfY2FzdDxPZmZzZXQzMio+KG1fcmF3QnVmZmVyICsgc2l6ZW9mKExpbmtpbmdE
YXRhKSArIHNfb2Zmc2V0MTZUYWJsZVNpemUpOworICAgICAgICAvLyBUaGlzIGFkanVzdG1lbnQg
ZG9lcyBub3QgYnJlYWsgdGhlIGFsaWdubWVudCBjYWxjdWxhdGVkIGZvciBtZXRhZGF0YSBpbiB0
aGUgYWJvdmUgbG9vcCBzbyBsb25nIGFzIHNfb2Zmc2V0MzJUYWJsZVNpemUgaXMgcm91bmRlZCB3
aXRoIDguCisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzX29mZnNldFRhYmxlRW50
cmllczsgaSsrKQorICAgICAgICAgICAgYnVmZmVyW2ldICs9IHNfb2Zmc2V0MzJUYWJsZVNpemU7
CisgICAgfSBlbHNlIHsKKyAgICAgICAgT2Zmc2V0MzIqIG9sZEJ1ZmZlciA9IGJpdHdpc2VfY2Fz
dDxPZmZzZXQzMio+KG1fcmF3QnVmZmVyICsgc2l6ZW9mKExpbmtpbmdEYXRhKSk7CisgICAgICAg
IE9mZnNldDE2KiBidWZmZXIgPSBiaXR3aXNlX2Nhc3Q8T2Zmc2V0MTYqPihtX3Jhd0J1ZmZlciAr
IHNpemVvZihMaW5raW5nRGF0YSkpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
c19vZmZzZXRUYWJsZUVudHJpZXM7IGkrKykKKyAgICAgICAgICAgIGJ1ZmZlcltpXSA9IG9sZEJ1
ZmZlcltpXTsKKyAgICAgICAgbV9yYXdCdWZmZXIgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4oZmFz
dFJlYWxsb2MobV9yYXdCdWZmZXIsIHNfb2Zmc2V0MTZUYWJsZVNpemUgKyBzaXplb2YoTGlua2lu
Z0RhdGEpKSk7CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZE1ldGFkYXRhVGFibGUuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZE1ldGFkYXRhVGFibGUuaAppbmRl
eCA0OTkxYzE1OGJhMDIzZjI0N2YzYjk3OTIyMjQ0OTYwNWJkOWY1YzY2Li5jNWQ4Njc2OGI0NGUw
YjVhNGFlNWU4MGJiYjNiYWQxNGIyZTYzZWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvVW5saW5rZWRNZXRhZGF0YVRhYmxlLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkTWV0YWRhdGFUYWJsZS5oCkBAIC0zNyw4ICszNyw5
IEBAIGNsYXNzIFVubGlua2VkTWV0YWRhdGFUYWJsZSA6IHB1YmxpYyBSZWZDb3VudGVkPFVubGlu
a2VkTWV0YWRhdGFUYWJsZT4gewogICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0
b3I7CiAgICAgZnJpZW5kIGNsYXNzIE1ldGFkYXRhVGFibGU7CiAgICAgZnJpZW5kIGNsYXNzIENh
Y2hlZE1ldGFkYXRhVGFibGU7Ci0KIHB1YmxpYzoKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2ln
bmVkIHNfbWF4TWV0YWRhdGFBbGlnbm1lbnQgPSA4OworCiAgICAgc3RydWN0IExpbmtpbmdEYXRh
IHsKICAgICAgICAgUmVmPFVubGlua2VkTWV0YWRhdGFUYWJsZT4gdW5saW5rZWRNZXRhZGF0YTsK
ICAgICAgICAgdW5zaWduZWQgcmVmQ291bnQ7CkBAIC02MSwyMiArNjIsNTcgQEAgY2xhc3MgVW5s
aW5rZWRNZXRhZGF0YVRhYmxlIDogcHVibGljIFJlZkNvdW50ZWQ8VW5saW5rZWRNZXRhZGF0YVRh
YmxlPiB7CiAKIHByaXZhdGU6CiAgICAgVW5saW5rZWRNZXRhZGF0YVRhYmxlKCk7CisgICAgVW5s
aW5rZWRNZXRhZGF0YVRhYmxlKGJvb2wgaXMzMkJpdCk7CisKKyAgICBzdGF0aWMgUmVmPFVubGlu
a2VkTWV0YWRhdGFUYWJsZT4gY3JlYXRlKGJvb2wgaXMzMkJpdCkKKyAgICB7CisgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFVubGlua2VkTWV0YWRhdGFUYWJsZShpczMyQml0KSk7CisgICAg
fQogCiAgICAgdm9pZCB1bmxpbmsoTWV0YWRhdGFUYWJsZSYpOwogCiAgICAgc2l6ZV90IHNpemVJ
bkJ5dGVzKE1ldGFkYXRhVGFibGUmKTsKIAotICAgIHVzaW5nIE9mZnNldCA9IHVuc2lnbmVkOwor
ICAgIHNpemVfdCBtZXRhZGF0YVRhYmxlU2l6ZSgpIGNvbnN0OworCisgICAgdW5zaWduZWQgdG90
YWxTaXplKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChtX2lzRmluYWxpemVkKTsKKyAg
ICAgICAgaWYgKG1faXMzMkJpdCkKKyAgICAgICAgICAgIHJldHVybiBvZmZzZXRUYWJsZTMyKClb
c19vZmZzZXRUYWJsZUVudHJpZXMgLSAxXTsKKyAgICAgICAgcmV0dXJuIG9mZnNldFRhYmxlMTYo
KVtzX29mZnNldFRhYmxlRW50cmllcyAtIDFdOworICAgIH0KKworICAgIHVuc2lnbmVkIG9mZnNl
dFRhYmxlU2l6ZSgpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQobV9pc0ZpbmFsaXplZCk7
CisgICAgICAgIGlmIChtX2lzMzJCaXQpCisgICAgICAgICAgICByZXR1cm4gc19vZmZzZXQxNlRh
YmxlU2l6ZSArIHNfb2Zmc2V0MzJUYWJsZVNpemU7CisgICAgICAgIHJldHVybiBzX29mZnNldDE2
VGFibGVTaXplOworICAgIH0KKworICAgIHVzaW5nIE9mZnNldDMyID0gdWludDMyX3Q7CisgICAg
dXNpbmcgT2Zmc2V0MTYgPSB1aW50MTZfdDsKIAogICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWdu
ZWQgc19vZmZzZXRUYWJsZUVudHJpZXMgPSBOVU1CRVJfT0ZfQllURUNPREVfV0lUSF9NRVRBREFU
QSArIDE7IC8vIG9uZSBleHRyYSBlbnRyeSBmb3IgdGhlICJlbmQiIG9mZnNldDsKLSAgICBzdGF0
aWMgY29uc3RleHByIHVuc2lnbmVkIHNfb2Zmc2V0VGFibGVTaXplID0gc19vZmZzZXRUYWJsZUVu
dHJpZXMgKiBzaXplb2YoVW5saW5rZWRNZXRhZGF0YVRhYmxlOjpPZmZzZXQpOwogCi0gICAgT2Zm
c2V0KiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8T2Zmc2V0Kj4oYml0d2lz
ZV9jYXN0PHVpbnQ4X3QqPihtX3Jhd0J1ZmZlcikgKyBzaXplb2YoTGlua2luZ0RhdGEpKTsgfQor
ICAgIC8vIE5vdCB0byBicmVhayBhbGlnbm1lbnQgb2YgMzJiaXQgb2Zmc2V0IHRhYmxlLCB3ZSBy
b3VuZCB1cCBzaXplIHdpdGggc2l6ZW9mKE9mZnNldDMyKS4KKyAgICBzdGF0aWMgY29uc3RleHBy
IHVuc2lnbmVkIHNfb2Zmc2V0MTZUYWJsZVNpemUgPSByb3VuZFVwVG9NdWx0aXBsZU9mPHNpemVv
ZihPZmZzZXQzMik+KHNfb2Zmc2V0VGFibGVFbnRyaWVzICogc2l6ZW9mKE9mZnNldDE2KSk7Cisg
ICAgLy8gTm90IHRvIGJyZWFrIGFsaWdubWVudCBvZiB0aGUgbWV0YWRhdGEgY2FsY3VsYXRlZCBi
YXNlZCBvbiB0aGUgYWxpZ25tZW50IG9mIHNfb2Zmc2V0MTZUYWJsZVNpemUsIHNfb2Zmc2V0MzJU
YWJsZVNpemUgbXVzdCBiZSByb3VuZGVkIGJ5IDguCisgICAgLy8gVGhlbiwgc19vZmZzZXQxNlRh
YmxlU2l6ZSBhbmQgc19vZmZzZXQxNlRhYmxlU2l6ZSArIHNfb2Zmc2V0MzJUYWJsZVNpemUgb2Zm
ZXIgdGhlIHNhbWUgYWxpZ25tZW50IGNoYXJhY3RlcmlzdGljcyBmb3Igc3Vic2VxdWVudCBNZXRh
ZGF0YS4KKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIHNfb2Zmc2V0MzJUYWJsZVNpemUg
PSByb3VuZFVwVG9NdWx0aXBsZU9mPHNfbWF4TWV0YWRhdGFBbGlnbm1lbnQ+KHNfb2Zmc2V0VGFi
bGVFbnRyaWVzICogc2l6ZW9mKE9mZnNldDMyKSk7CisKKyAgICBPZmZzZXQzMiogcHJlcHJvY2Vz
c0J1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxPZmZzZXQzMio+KG1fcmF3QnVm
ZmVyICsgc2l6ZW9mKExpbmtpbmdEYXRhKSk7IH0KKyAgICB2b2lkKiBidWZmZXIoKSBjb25zdCB7
IHJldHVybiBtX3Jhd0J1ZmZlciArIHNpemVvZihMaW5raW5nRGF0YSk7IH0KKworICAgIE9mZnNl
dDE2KiBvZmZzZXRUYWJsZTE2KCkgY29uc3QgeyByZXR1cm4gYml0d2lzZV9jYXN0PE9mZnNldDE2
Kj4obV9yYXdCdWZmZXIgKyBzaXplb2YoTGlua2luZ0RhdGEpKTsgfQorICAgIE9mZnNldDMyKiBv
ZmZzZXRUYWJsZTMyKCkgY29uc3QgeyByZXR1cm4gYml0d2lzZV9jYXN0PE9mZnNldDMyKj4obV9y
YXdCdWZmZXIgKyBzaXplb2YoTGlua2luZ0RhdGEpICsgc19vZmZzZXQxNlRhYmxlU2l6ZSk7IH0K
IAogICAgIGJvb2wgbV9oYXNNZXRhZGF0YSA6IDE7CiAgICAgYm9vbCBtX2lzRmluYWxpemVkIDog
MTsKICAgICBib29sIG1faXNMaW5rZWQgOiAxOwotICAgIHZvaWQqIG1fcmF3QnVmZmVyOworICAg
IGJvb2wgbV9pczMyQml0IDogMTsKKyAgICB1aW50OF90KiBtX3Jhd0J1ZmZlcjsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1VubGlua2VkTWV0YWRhdGFUYWJsZUlubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9VbmxpbmtlZE1ldGFkYXRhVGFibGVJbmxpbmVzLmgKaW5kZXggMzM1MzkyMmNh
ODNjMzFkNjY5N2VhNWU2YmE1MjM4YzE2Mzg2OTM4YS4uYWEzYTE2ZTUxZmUwYmJkNTM1M2E5OTVh
OWYzYzc5YTYzZTNmY2Y2ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1VubGlua2VkTWV0YWRhdGFUYWJsZUlubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvVW5saW5rZWRNZXRhZGF0YVRhYmxlSW5saW5lcy5oCkBAIC0zNSw3ICsz
NSwxNyBAQCBBTFdBWVNfSU5MSU5FIFVubGlua2VkTWV0YWRhdGFUYWJsZTo6VW5saW5rZWRNZXRh
ZGF0YVRhYmxlKCkKICAgICA6IG1faGFzTWV0YWRhdGEoZmFsc2UpCiAgICAgLCBtX2lzRmluYWxp
emVkKGZhbHNlKQogICAgICwgbV9pc0xpbmtlZChmYWxzZSkKLSAgICAsIG1fcmF3QnVmZmVyKGZh
c3RaZXJvZWRNYWxsb2Moc2l6ZW9mKExpbmtpbmdEYXRhKSArIHNfb2Zmc2V0VGFibGVTaXplKSkK
KyAgICAsIG1faXMzMkJpdChmYWxzZSkKKyAgICAsIG1fcmF3QnVmZmVyKHN0YXRpY19jYXN0PHVp
bnQ4X3QqPihmYXN0WmVyb2VkTWFsbG9jKHNpemVvZihMaW5raW5nRGF0YSkgKyBzX29mZnNldDMy
VGFibGVTaXplKSkpCit7Cit9CisKK0FMV0FZU19JTkxJTkUgVW5saW5rZWRNZXRhZGF0YVRhYmxl
OjpVbmxpbmtlZE1ldGFkYXRhVGFibGUoYm9vbCBpczMyQml0KQorICAgIDogbV9oYXNNZXRhZGF0
YShmYWxzZSkKKyAgICAsIG1faXNGaW5hbGl6ZWQoZmFsc2UpCisgICAgLCBtX2lzTGlua2VkKGZh
bHNlKQorICAgICwgbV9pczMyQml0KGlzMzJCaXQpCisgICAgLCBtX3Jhd0J1ZmZlcihzdGF0aWNf
Y2FzdDx1aW50OF90Kj4oZmFzdFplcm9lZE1hbGxvYyhzaXplb2YoTGlua2luZ0RhdGEpICsgKGlz
MzJCaXQgPyBzX29mZnNldDE2VGFibGVTaXplICsgc19vZmZzZXQzMlRhYmxlU2l6ZSA6IHNfb2Zm
c2V0MTZUYWJsZVNpemUpKSkpCiB7CiB9CiAKQEAgLTUwLDcgKzYwLDcgQEAgQUxXQVlTX0lOTElO
RSB1bnNpZ25lZCBVbmxpbmtlZE1ldGFkYXRhVGFibGU6OmFkZEVudHJ5KE9wY29kZUlEIG9wY29k
ZUlEKQogewogICAgIEFTU0VSVCghbV9pc0ZpbmFsaXplZCAmJiBvcGNvZGVJRCA8IHNfb2Zmc2V0
VGFibGVFbnRyaWVzIC0gMSk7CiAgICAgbV9oYXNNZXRhZGF0YSA9IHRydWU7Ci0gICAgcmV0dXJu
IGJ1ZmZlcigpW29wY29kZUlEXSsrOworICAgIHJldHVybiBwcmVwcm9jZXNzQnVmZmVyKClbb3Bj
b2RlSURdKys7CiB9CiAKIEFMV0FZU19JTkxJTkUgc2l6ZV90IFVubGlua2VkTWV0YWRhdGFUYWJs
ZTo6c2l6ZUluQnl0ZXMoKQpAQCAtNTgsNyArNjgsMTggQEAgQUxXQVlTX0lOTElORSBzaXplX3Qg
VW5saW5rZWRNZXRhZGF0YVRhYmxlOjpzaXplSW5CeXRlcygpCiAgICAgaWYgKG1faXNGaW5hbGl6
ZWQgJiYgIW1faGFzTWV0YWRhdGEpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgcmV0dXJuIHNf
b2Zmc2V0VGFibGVTaXplOworICAgIGlmIChtX2lzMzJCaXQpCisgICAgICAgIHJldHVybiBzX29m
ZnNldDE2VGFibGVTaXplICsgc19vZmZzZXQzMlRhYmxlU2l6ZTsKKyAgICByZXR1cm4gc19vZmZz
ZXQxNlRhYmxlU2l6ZTsKK30KKworaW5saW5lIHNpemVfdCBVbmxpbmtlZE1ldGFkYXRhVGFibGU6
Om1ldGFkYXRhVGFibGVTaXplKCkgY29uc3QKK3sKKyAgICBpZiAobV9pc0ZpbmFsaXplZCAmJiAh
bV9oYXNNZXRhZGF0YSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgaWYgKG1faXMzMkJpdCkKKyAg
ICAgICAgcmV0dXJuIG9mZnNldFRhYmxlMzIoKVtzX29mZnNldFRhYmxlRW50cmllcyAtIDFdOwor
ICAgIHJldHVybiBvZmZzZXRUYWJsZTE2KClbc19vZmZzZXRUYWJsZUVudHJpZXMgLSAxXTsKIH0K
IAogQUxXQVlTX0lOTElORSBzaXplX3QgVW5saW5rZWRNZXRhZGF0YVRhYmxlOjpzaXplSW5CeXRl
cyhNZXRhZGF0YVRhYmxlJiBtZXRhZGF0YVRhYmxlKQpAQCAtNjcsMzYgKzg4LDE0IEBAIEFMV0FZ
U19JTkxJTkUgc2l6ZV90IFVubGlua2VkTWV0YWRhdGFUYWJsZTo6c2l6ZUluQnl0ZXMoTWV0YWRh
dGFUYWJsZSYgbWV0YWRhdGFUCiAKICAgICAvLyBJbiB0aGlzIGNhc2UsIHdlIHJldHVybiB0aGUg
c2l6ZSBvZiB0aGUgdGFibGUgbWludXMgdGhlIG9mZnNldCB0YWJsZSwKICAgICAvLyB3aGljaCB3
YXMgYWxyZWFkeSBhY2NvdW50ZWQgZm9yIGluIHRoZSBVbmxpbmtlZENvZGVCbG9jay4KKyAgICBz
aXplX3QgcmVzdWx0ID0gdG90YWxTaXplKCk7CiAgICAgaWYgKG1ldGFkYXRhVGFibGUuYnVmZmVy
KCkgPT0gYnVmZmVyKCkpIHsKICAgICAgICAgQVNTRVJUKG1faXNMaW5rZWQpOwotICAgICAgICBy
ZXR1cm4gYnVmZmVyKClbc19vZmZzZXRUYWJsZUVudHJpZXMgLSAxXSAtIHNfb2Zmc2V0VGFibGVT
aXplOwotICAgIH0KLQotICAgIHJldHVybiBtZXRhZGF0YVRhYmxlLmJ1ZmZlcigpW3Nfb2Zmc2V0
VGFibGVFbnRyaWVzIC0gMV07Ci19Ci0KLUFMV0FZU19JTkxJTkUgdm9pZCBVbmxpbmtlZE1ldGFk
YXRhVGFibGU6OmZpbmFsaXplKCkKLXsKLSAgICBBU1NFUlQoIW1faXNGaW5hbGl6ZWQpOwotICAg
IG1faXNGaW5hbGl6ZWQgPSB0cnVlOwotICAgIGlmICghbV9oYXNNZXRhZGF0YSkgewotICAgICAg
ICBmYXN0RnJlZShtX3Jhd0J1ZmZlcik7Ci0gICAgICAgIG1fcmF3QnVmZmVyID0gbnVsbHB0cjsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHVuc2lnbmVkIG9mZnNldCA9IHNfb2Zmc2V0
VGFibGVTaXplOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzX29mZnNldFRhYmxlRW50
cmllcyAtIDE7IGkrKykgewotICAgICAgICB1bnNpZ25lZCBudW1iZXJPZkVudHJpZXMgPSBidWZm
ZXIoKVtpXTsKLQotICAgICAgICBpZiAobnVtYmVyT2ZFbnRyaWVzID4gMCkgewotICAgICAgICAg
ICAgb2Zmc2V0ID0gcm91bmRVcFRvTXVsdGlwbGVPZihtZXRhZGF0YUFsaWdubWVudChzdGF0aWNf
Y2FzdDxPcGNvZGVJRD4oaSkpLCBvZmZzZXQpOwotICAgICAgICAgICAgYnVmZmVyKClbaV0gPSBv
ZmZzZXQ7Ci0gICAgICAgICAgICBvZmZzZXQgKz0gbnVtYmVyT2ZFbnRyaWVzICogbWV0YWRhdGFT
aXplKHN0YXRpY19jYXN0PE9wY29kZUlEPihpKSk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAg
ICAgYnVmZmVyKClbaV0gPSBvZmZzZXQ7CisgICAgICAgIGlmIChtX2lzMzJCaXQpCisgICAgICAg
ICAgICByZXR1cm4gcmVzdWx0IC0gKHNfb2Zmc2V0MTZUYWJsZVNpemUgKyBzX29mZnNldDMyVGFi
bGVTaXplKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdCAtIHNfb2Zmc2V0MTZUYWJsZVNpemU7CiAg
ICAgfQotICAgIGJ1ZmZlcigpW3Nfb2Zmc2V0VGFibGVFbnRyaWVzIC0gMV0gPSBvZmZzZXQ7Cisg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogQUxXQVlTX0lOTElORSBSZWZQdHI8TWV0YWRhdGFUYWJs
ZT4gVW5saW5rZWRNZXRhZGF0YVRhYmxlOjpsaW5rKCkKQEAgLTEwNiwxNiArMTA1LDE3IEBAIEFM
V0FZU19JTkxJTkUgUmVmUHRyPE1ldGFkYXRhVGFibGU+IFVubGlua2VkTWV0YWRhdGFUYWJsZTo6
bGluaygpCiAgICAgaWYgKCFtX2hhc01ldGFkYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAotICAgIHVuc2lnbmVkIHRvdGFsU2l6ZSA9IGJ1ZmZlcigpW3Nfb2Zmc2V0VGFibGVFbnRyaWVz
IC0gMV07CisgICAgdW5zaWduZWQgdG90YWxTaXplID0gdGhpcy0+dG90YWxTaXplKCk7CisgICAg
dW5zaWduZWQgb2Zmc2V0VGFibGVTaXplID0gdGhpcy0+b2Zmc2V0VGFibGVTaXplKCk7CiAgICAg
dWludDhfdCogYnVmZmVyOwogICAgIGlmICghbV9pc0xpbmtlZCkgewogICAgICAgICBtX2lzTGlu
a2VkID0gdHJ1ZTsKICAgICAgICAgbV9yYXdCdWZmZXIgPSBidWZmZXIgPSByZWludGVycHJldF9j
YXN0PHVpbnQ4X3QqPihmYXN0UmVhbGxvYyhtX3Jhd0J1ZmZlciwgc2l6ZW9mKExpbmtpbmdEYXRh
KSArIHRvdGFsU2l6ZSkpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGJ1ZmZlciA9IHJlaW50ZXJw
cmV0X2Nhc3Q8dWludDhfdCo+KGZhc3RNYWxsb2Moc2l6ZW9mKExpbmtpbmdEYXRhKSArIHRvdGFs
U2l6ZSkpOwotICAgICAgICBtZW1jcHkoYnVmZmVyLCBtX3Jhd0J1ZmZlciwgc2l6ZW9mKExpbmtp
bmdEYXRhKSArIHNfb2Zmc2V0VGFibGVTaXplKTsKKyAgICAgICAgbWVtY3B5KGJ1ZmZlciwgbV9y
YXdCdWZmZXIsIHNpemVvZihMaW5raW5nRGF0YSkgKyBvZmZzZXRUYWJsZVNpemUpOwogICAgIH0K
LSAgICBtZW1zZXQoYnVmZmVyICsgc2l6ZW9mKExpbmtpbmdEYXRhKSArIHNfb2Zmc2V0VGFibGVT
aXplLCAwLCB0b3RhbFNpemUgLSBzX29mZnNldFRhYmxlU2l6ZSk7CisgICAgbWVtc2V0KGJ1ZmZl
ciArIHNpemVvZihMaW5raW5nRGF0YSkgKyBvZmZzZXRUYWJsZVNpemUsIDAsIHRvdGFsU2l6ZSAt
IG9mZnNldFRhYmxlU2l6ZSk7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgKGJ1ZmZlciArIHNp
emVvZihMaW5raW5nRGF0YSkpIE1ldGFkYXRhVGFibGUoKnRoaXMpKTsKIH0KIApAQCAtMTI4LDcg
KzEyOCw3IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBVbmxpbmtlZE1ldGFkYXRhVGFibGU6OnVubGlu
ayhNZXRhZGF0YVRhYmxlJiBtZXRhZGF0YVRhYmxlKQogICAgIGlmIChtZXRhZGF0YVRhYmxlLmJ1
ZmZlcigpID09IGJ1ZmZlcigpKSB7CiAgICAgICAgIEFTU0VSVChtX2lzTGlua2VkKTsKICAgICAg
ICAgbV9pc0xpbmtlZCA9IGZhbHNlOwotICAgICAgICBtX3Jhd0J1ZmZlciA9IGZhc3RSZWFsbG9j
KG1fcmF3QnVmZmVyLCBzaXplb2YoTGlua2luZ0RhdGEpICsgc19vZmZzZXRUYWJsZVNpemUpOwor
ICAgICAgICBtX3Jhd0J1ZmZlciA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihmYXN0UmVhbGxvYyht
X3Jhd0J1ZmZlciwgc2l6ZW9mKExpbmtpbmdEYXRhKSArIG9mZnNldFRhYmxlU2l6ZSgpKSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAgICAgZmFzdEZyZWUoJm1ldGFkYXRhVGFibGUubGlua2lu
Z0RhdGEoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlci5hc20KaW5kZXggYmM0MTllZDYxNzkwMDAxMzM0NGU2MTVkYWU4NmZiNDYxMWY3
MTkwMi4uMTUyNWE1NDMxZDAzOWNhYzA1ZGIyYjlhYTU0ZjVlMmVkMDlmZmJkYyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQpA
QCAtMTgxLDYgKzE4MSw5IEBAIGNvbnN0IFRoaXNBcmd1bWVudE9mZnNldCA9IEFyZ3VtZW50Q291
bnQgKyBTbG90U2l6ZQogY29uc3QgRmlyc3RBcmd1bWVudE9mZnNldCA9IFRoaXNBcmd1bWVudE9m
ZnNldCArIFNsb3RTaXplCiBjb25zdCBDYWxsRnJhbWVIZWFkZXJTaXplID0gVGhpc0FyZ3VtZW50
T2Zmc2V0CiAKK2NvbnN0IE1ldGFkYXRhT2Zmc2V0VGFibGUxNiA9IDAKK2NvbnN0IE1ldGFkYXRh
T2Zmc2V0VGFibGUzMiA9IGNvbnN0ZXhwciBVbmxpbmtlZE1ldGFkYXRhVGFibGU6OnNfb2Zmc2V0
MTZUYWJsZVNpemUKKwogIyBTb21lIHZhbHVlIHJlcHJlc2VudGF0aW9uIGNvbnN0YW50cy4KIGlm
IEpTVkFMVUU2NAogICAgIGNvbnN0IFRhZ0JpdFR5cGVPdGhlciA9IGNvbnN0ZXhwciBUYWdCaXRU
eXBlT3RoZXIKQEAgLTMzNiw3ICszMzksMTAgQEAgbWFjcm8gd2lkZShuYXJyb3dGbiwgd2lkZUZu
LCBrKQogZW5kCiAKIG1hY3JvIG1ldGFkYXRhKHNpemUsIG9wY29kZSwgZHN0LCBzY3JhdGNoKQot
ICAgIGxvYWRpIGNvbnN0ZXhwciAlb3Bjb2RlJTo6b3Bjb2RlSUQgKiA0W21ldGFkYXRhVGFibGVd
LCBkc3QgIyBvZmZzZXQgPSBtZXRhZGF0YVRhYmxlPHVuc2lnbmVkKj5bb3Bjb2RlSURdCisgICAg
bG9hZGggKGNvbnN0ZXhwciAlb3Bjb2RlJTo6b3Bjb2RlSUQgKiAyICsgTWV0YWRhdGFPZmZzZXRU
YWJsZTE2KVttZXRhZGF0YVRhYmxlXSwgZHN0ICMgb2Zmc2V0ID0gbWV0YWRhdGFUYWJsZTx1aW50
MTZfdCo+W29wY29kZUlEXQorICAgIGJ0aW56IGRzdCwgLnNldFVwT2Zmc2V0CisgICAgbG9hZGkg
KGNvbnN0ZXhwciAlb3Bjb2RlJTo6b3Bjb2RlSUQgKiA0ICsgTWV0YWRhdGFPZmZzZXRUYWJsZTMy
KVttZXRhZGF0YVRhYmxlXSwgZHN0ICMgb2Zmc2V0ID0gbWV0YWRhdGFUYWJsZTx1aW50MzJfdCo+
W29wY29kZUlEXQorLnNldFVwT2Zmc2V0OgogICAgIGdldHUoc2l6ZSwgb3Bjb2RlLCBtX21ldGFk
YXRhSUQsIHNjcmF0Y2gpICMgc2NyYXRjaCA9IGJ5dGVjb2RlLm1fbWV0YWRhdGFJRAogICAgIG11
bGkgc2l6ZW9mICVvcGNvZGUlOjpNZXRhZGF0YSwgc2NyYXRjaCAjIHNjcmF0Y2ggKj0gc2l6ZW9m
KE9wOjpNZXRhZGF0YSkKICAgICBhZGRpIHNjcmF0Y2gsIGRzdCAjIG9mZnNldCArPSBzY3JhdGNo
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAKaW5kZXgg
M2I2MTBhOGQ3Nzc4YTdkN2I4MWJhMGJlNmMxMzdhNGJkNzYzNmEzZC4uMTQwNTUxZGNmNzA4MzA4
ZGViYWI4NmYzYWNkMTNmNDlkZTk1M2UyZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NhY2hlZFR5cGVzLmNwcApAQCAtMTMzMSwyMyArMTMzMSwzNSBAQCBjbGFzcyBDYWNo
ZWRNZXRhZGF0YVRhYmxlIDogcHVibGljIENhY2hlZE9iamVjdDxVbmxpbmtlZE1ldGFkYXRhVGFi
bGU+IHsKICAgICAgICAgbV9oYXNNZXRhZGF0YSA9IG1ldGFkYXRhVGFibGUubV9oYXNNZXRhZGF0
YTsKICAgICAgICAgaWYgKCFtX2hhc01ldGFkYXRhKQogICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSBVbmxpbmtlZE1ldGFkYXRhVGFibGU6OnNfb2Zmc2V0VGFi
bGVFbnRyaWVzOyBpLS07KQotICAgICAgICAgICAgbV9tZXRhZGF0YVtpXSA9IG1ldGFkYXRhVGFi
bGUuYnVmZmVyKClbaV07CisgICAgICAgIG1faXMzMkJpdCA9IG1ldGFkYXRhVGFibGUubV9pczMy
Qml0OworICAgICAgICBpZiAobV9pczMyQml0KSB7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSBVbmxpbmtlZE1ldGFkYXRhVGFibGU6OnNfb2Zmc2V0VGFibGVFbnRyaWVzOyBpLS07KQor
ICAgICAgICAgICAgICAgIG1fbWV0YWRhdGFbaV0gPSBtZXRhZGF0YVRhYmxlLm9mZnNldFRhYmxl
MzIoKVtpXTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IFVubGlua2VkTWV0YWRhdGFUYWJsZTo6c19vZmZzZXRUYWJsZUVudHJpZXM7IGktLTspCisgICAg
ICAgICAgICAgICAgbV9tZXRhZGF0YVtpXSA9IG1ldGFkYXRhVGFibGUub2Zmc2V0VGFibGUxNigp
W2ldOworICAgICAgICB9CiAgICAgfQogCiAgICAgUmVmPFVubGlua2VkTWV0YWRhdGFUYWJsZT4g
ZGVjb2RlKERlY29kZXImKSBjb25zdAogICAgIHsKLSAgICAgICAgUmVmPFVubGlua2VkTWV0YWRh
dGFUYWJsZT4gbWV0YWRhdGFUYWJsZSA9IFVubGlua2VkTWV0YWRhdGFUYWJsZTo6Y3JlYXRlKCk7
CisgICAgICAgIFJlZjxVbmxpbmtlZE1ldGFkYXRhVGFibGU+IG1ldGFkYXRhVGFibGUgPSBVbmxp
bmtlZE1ldGFkYXRhVGFibGU6OmNyZWF0ZShtX2lzMzJCaXQpOwogICAgICAgICBtZXRhZGF0YVRh
YmxlLT5tX2lzRmluYWxpemVkID0gdHJ1ZTsKICAgICAgICAgbWV0YWRhdGFUYWJsZS0+bV9pc0xp
bmtlZCA9IGZhbHNlOwogICAgICAgICBtZXRhZGF0YVRhYmxlLT5tX2hhc01ldGFkYXRhID0gbV9o
YXNNZXRhZGF0YTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gVW5saW5rZWRNZXRhZGF0YVRh
YmxlOjpzX29mZnNldFRhYmxlRW50cmllczsgaS0tOykKLSAgICAgICAgICAgIG1ldGFkYXRhVGFi
bGUtPmJ1ZmZlcigpW2ldID0gbV9tZXRhZGF0YVtpXTsKKyAgICAgICAgaWYgKG1faXMzMkJpdCkg
eworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gVW5saW5rZWRNZXRhZGF0YVRhYmxlOjpz
X29mZnNldFRhYmxlRW50cmllczsgaS0tOykKKyAgICAgICAgICAgICAgICBtZXRhZGF0YVRhYmxl
LT5vZmZzZXRUYWJsZTMyKClbaV0gPSBtX21ldGFkYXRhW2ldOworICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gVW5saW5rZWRNZXRhZGF0YVRhYmxlOjpzX29m
ZnNldFRhYmxlRW50cmllczsgaS0tOykKKyAgICAgICAgICAgICAgICBtZXRhZGF0YVRhYmxlLT5v
ZmZzZXRUYWJsZTE2KClbaV0gPSBtX21ldGFkYXRhW2ldOworICAgICAgICB9CiAgICAgICAgIHJl
dHVybiBtZXRhZGF0YVRhYmxlOwogICAgIH0KIAogcHJpdmF0ZToKICAgICBib29sIG1faGFzTWV0
YWRhdGE7CisgICAgYm9vbCBtX2lzMzJCaXQ7CiAgICAgc3RkOjphcnJheTx1bnNpZ25lZCwgVW5s
aW5rZWRNZXRhZGF0YVRhYmxlOjpzX29mZnNldFRhYmxlRW50cmllcz4gbV9tZXRhZGF0YTsKIH07
CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>370190</attachid>
            <date>2019-05-18 03:10:05 -0700</date>
            <delta_ts>2019-05-22 13:54:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-197910-20190518031004.patch</filename>
            <type>text/plain</type>
            <size>26761</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ1NDg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
MmQ1Y2ZlMTY0OWQ0OGFkNDEzN2U4NDM0MzJjZjEyYzkxY2Y0NTE0Li5mOGQ1M2I5MTNkMzVhMjkw
NTNkMGU0ZTY1MzUzNTU5MmQwODViM2Q1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3MyBAQAorMjAxOS0wNS0xOCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFVubGlua2VkTWV0YWRhdGFUYWJsZSdzIG9mZnNldCB0YWJsZSBz
aG91bGQgYmUgc21hbGwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE5NzkxMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEluIEdtYWlsLCB3ZSBmb3VuZCB0aGF0IG1hc3NpdmUgIyBvZiBVbmxpbmtlZE1ldGFk
YXRhVGFibGUgKDIxOTc5IC0gMjQ3MjcpIGV4aXN0cy4gRWFjaCBVbmxpbmtlZE1ldGFkYXRhVGFi
bGUgdGFrZXMgYXQgbGVhc3QgMjA0IGJ5dGVzCisgICAgICAgIGJlY2F1c2Ugb2YgbGFyZ2UgKHVu
c2luZ2VkKSBvZmZzZXQgdGFibGUuIFRoaXMgcGF0Y2ggcmVkdWNlcyB0aGUgc2l6ZSBvZiBvZmZz
ZXQgdGFibGUgYnkgaW50cm9kdWNpbmcgMTZiaXQgdmVyc2lvbiBvZmZzZXQgdGFibGUuCisgICAg
ICAgIFByZXZpb3VzbHkgb3VyIGNvZGUgZm9yIGxvb2tpbmcgdXAgTWV0YWRhdGEgaXMgbGlrZSB0
aGlzLgorCisgICAgICAgICAgICBvZmZzZXQgPSBvZmZzZXRUYWJsZTMyW29wY29kZV0KKyAgICAg
ICAgICAgIG1ldGFkYXRhID0gKFNvbWVPcDo6TWV0YWRhdGEqKXRhYmxlW29mZnNldF0gKyBpZAor
CisgICAgICAgIEluc3RlYWQsIHdlIGludHJvZHVjZSB1aW50MTZfdCBvZmZzZXQgdGFibGUuIFRo
ZSBsb29rdXAgY29kZSBiZWNvbWVzIGxpa2UgdGhpcy4KKworICAgICAgICAgICAgb2Zmc2V0ID0g
b2Zmc2V0VGFibGUxNltvcGNvZGVdCisgICAgICAgICAgICBpZiAoIW9mZnNldCkKKyAgICAgICAg
ICAgICAgICBvZmZzZXQgPSBvZmZzZXRUYWJsZTMyW29wY29kZV0KKyAgICAgICAgICAgIG1ldGFk
YXRhID0gKFNvbWVPcDo6TWV0YWRhdGEqKXRhYmxlW29mZnNldF0gKyBpZAorCisgICAgICAgIFdl
IHVzZSAwIG9mZnNldCBhcyBhIG1hcmtlciB0byBpbmRpY2F0ZSB0aGF0IHdlIGhhdmUgMzJiaXQg
b2Zmc2V0IHRhYmxlLiBUaGlzIGlzIE9LIHNpbmNlIDAgb2Zmc2V0IGRvZXMgbm90IGFwcGVhciBz
aW5jZSBhbGwgdGhlIG9mZnNldHMKKyAgICAgICAgaW5jbHVkZWQgaW4gdGhpcyB0YWJsZSBpcyBs
YXJnZXIgdGhhbiBzX29mZnNldDE2VGFibGVTaXplLgorCisgICAgICAgIDMyYml0IG9mZnNldCB0
YWJsZSBpcyBhbGxvY2F0ZWQgb25seSB3aGVuIHRoZSBvZmZzZXQgZXhjZWVkcyAxNmJpdCByYW5n
ZS4gSXQgbWVhbnMgdGhhdCB0aGlzIHdpbGwgYmUgdXNlZCBvbmx5IHdoZW4gTWV0YWRhdGEgdGFi
bGUgaXMgbGFyZ2VyCisgICAgICAgIHRoYW4gYWxtb3N0IDY0S0IuIEV2ZW4gaW4gR21haWwsIHN1
Y2ggTWV0YWRhdGFUYWJsZSBpcyByYXJlLCBhbmQgYWRkaXRpb25hbCAzMmJpdCBvZmZzZXQgdGFi
bGUgc2l6ZSBkb2VzIG5vdCBtYXR0ZXIgbXVjaCBpbiB0aGlzIGNhc2Ugc2luY2UKKyAgICAgICAg
TWV0YWRhdGFUYWJsZSBpcyBhbHJlYWR5IHNvIGxhcmdlLgorCisgICAgICAgIEJhc2VkIG9uIHRo
ZSAjIG9mIFVubGlua2VkTWV0YWRhdGFUYWJsZXMsIHRoaXMgb3B0aW1pemF0aW9uIHNob3VsZCBp
bXByb3ZlIEdtYWlsIHN0ZWFkeSBzdGF0ZSBtZW1vcnkgYnkgMk1CLgorCisgICAgICAgICogSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBTb3VyY2Vz
LnR4dDoKKyAgICAgICAgKiBieXRlY29kZS9NZXRhZGF0YVRhYmxlLmNwcDoKKyAgICAgICAgKEpT
Qzo6TWV0YWRhdGFUYWJsZTo6fk1ldGFkYXRhVGFibGUpOgorICAgICAgICAoSlNDOjpNZXRhZGF0
YVRhYmxlOjpkZXN0cm95KToKKyAgICAgICAgKiBieXRlY29kZS9NZXRhZGF0YVRhYmxlLmg6Cisg
ICAgICAgIChKU0M6Ok1ldGFkYXRhVGFibGU6OnJlZik6CisgICAgICAgIChKU0M6Ok1ldGFkYXRh
VGFibGU6OmRlcmVmKToKKyAgICAgICAgKEpTQzo6TWV0YWRhdGFUYWJsZTo6YnVmZmVyKToKKyAg
ICAgICAgKEpTQzo6TWV0YWRhdGFUYWJsZTo6aXMzMkJpdCBjb25zdCk6CisgICAgICAgIChKU0M6
Ok1ldGFkYXRhVGFibGU6Om9mZnNldFRhYmxlMTYgY29uc3QpOgorICAgICAgICAoSlNDOjpNZXRh
ZGF0YVRhYmxlOjpvZmZzZXRUYWJsZTMyIGNvbnN0KToKKyAgICAgICAgKEpTQzo6TWV0YWRhdGFU
YWJsZTo6dG90YWxTaXplIGNvbnN0KToKKyAgICAgICAgKEpTQzo6TWV0YWRhdGFUYWJsZTo6Z2V0
T2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6TWV0YWRhdGFUYWJsZTo6Z2V0SW1wbCk6Cisg
ICAgICAgIChKU0M6Ok1ldGFkYXRhVGFibGU6OnJlZiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6Ok1ldGFkYXRhVGFibGU6OmRlcmVmIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBi
eXRlY29kZS9PcGNvZGUuY3BwOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkTWV0YWRhdGFU
YWJsZS5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpVbmxpbmtlZE1ldGFkYXRhVGFibGU6OmZp
bmFsaXplKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZE1ldGFkYXRhVGFibGUuaDoKKyAg
ICAgICAgKEpTQzo6VW5saW5rZWRNZXRhZGF0YVRhYmxlOjpjcmVhdGUpOgorICAgICAgICAoSlND
OjpVbmxpbmtlZE1ldGFkYXRhVGFibGU6OnRvdGFsU2l6ZSBjb25zdCk6CisgICAgICAgIChKU0M6
OlVubGlua2VkTWV0YWRhdGFUYWJsZTo6b2Zmc2V0VGFibGVTaXplIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6VW5saW5rZWRNZXRhZGF0YVRhYmxlOjpwcmVwcm9jZXNzQnVmZmVyIGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6VW5saW5rZWRNZXRhZGF0YVRhYmxlOjpidWZmZXIgY29uc3QpOgorICAgICAg
ICAoSlNDOjpVbmxpbmtlZE1ldGFkYXRhVGFibGU6Om9mZnNldFRhYmxlMTYgY29uc3QpOgorICAg
ICAgICAoSlNDOjpVbmxpbmtlZE1ldGFkYXRhVGFibGU6Om9mZnNldFRhYmxlMzIgY29uc3QpOgor
ICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkTWV0YWRhdGFUYWJsZUlubGluZXMuaDoKKyAgICAg
ICAgKEpTQzo6VW5saW5rZWRNZXRhZGF0YVRhYmxlOjpVbmxpbmtlZE1ldGFkYXRhVGFibGUpOgor
ICAgICAgICAoSlNDOjpVbmxpbmtlZE1ldGFkYXRhVGFibGU6OmFkZEVudHJ5KToKKyAgICAgICAg
KEpTQzo6VW5saW5rZWRNZXRhZGF0YVRhYmxlOjpzaXplSW5CeXRlcyk6CisgICAgICAgIChKU0M6
OlVubGlua2VkTWV0YWRhdGFUYWJsZTo6bGluayk6CisgICAgICAgIChKU0M6OlVubGlua2VkTWV0
YWRhdGFUYWJsZTo6dW5saW5rKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRNZXRhZGF0YVRhYmxl
OjpmaW5hbGl6ZSk6IERlbGV0ZWQuCisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5hc206CisgICAgICAgICogcnVudGltZS9DYWNoZWRUeXBlcy5jcHA6CisgICAgICAgIChKU0M6
OkNhY2hlZE1ldGFkYXRhVGFibGU6OmVuY29kZSk6CisgICAgICAgIChKU0M6OkNhY2hlZE1ldGFk
YXRhVGFibGU6OmRlY29kZSBjb25zdCk6CisKIDIwMTktMDUtMTcgIEtlaXRoIFJvbGxpbiAgPGty
b2xsaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlLWVuYWJsZSBnZW5lcmF0ZS14Y2ZpbGVsaXN0
cwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA3ZTIxZTBiMDdjNTMyY2M3YTgxYjc1
MTAwNDFhYjIyMjRjOWQyZTcxLi44YTk0NjI0OGQyZmQ3OGVlZDk3ODJmMjE3ZjlhODJkZjNiNWEy
ODAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDcyMyw2ICs0NzIzLDcgQEAK
IAkJRTE3ODYzNkMwRDlCRUVDMzAwRDc0RTc1IC8qIEluaXRpYWxpemVUaHJlYWRpbmcuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5pdGlhbGl6ZVRocmVhZGluZy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxOEUzQTU2MERGOTI3OEMwMEQ5MEIz
NCAvKiBWTS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IGxpbmVFbmRpbmcgPSAwOyBwYXRo
ID0gVk0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgeGNMYW5ndWFnZVNwZWNpZmljYXRpb25J
ZGVudGlmaWVyID0geGNvZGUubGFuZy5vYmpjcHA7IH07CiAJCUUxOEUzQTU3MERGOTI3OEMwMEQ5
MEIzNCAvKiBWTS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IGxpbmVFbmRpbmcg
PSAwOyBwYXRoID0gVk0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB4Y0xhbmd1YWdlU3Bl
Y2lmaWNhdGlvbklkZW50aWZpZXIgPSB4Y29kZS5sYW5nLmNwcDsgfTsKKwkJRTMwNjAxMjgyMjhG
OTc4MTAwRkFBQkRGIC8qIFVubGlua2VkTWV0YWRhdGFUYWJsZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBVbmxpbmtlZE1ldGFkYXRhVGFibGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFMzA2Nzc5NzFCOEJDNkY1MDAzRjg3RjAgLyogTW9kdWxlTG9hZGVyLmpzICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gTW9kdWxlTG9hZGVyLmpzOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlFMzExNzlBOTIyODgzODVEMDA1MTRCMkMgLyogU3ltYm9s
VGFibGVPclNjb3BlRGVwdGguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3ltYm9sVGFibGVPclNjb3BlRGVw
dGguaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMxNjE4MTAxRUM1RkUwODAwMDZB
MjE4IC8qIERPTUFubm90YXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RE9NQW5ub3RhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODA2NSw2ICs4
MDY2LDcgQEAKIAkJCQkxNDE0MkU1NDFCNzk3M0MwMDBGNEJGNEIgLyogVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUuY3BwICovLAogCQkJCTE0MTQyRTUwMUI3OTZFQ0UwMEY0QkY0QiAvKiBVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oICovLAogCQkJCTE0QUQ5MTFDMURDQTlGQTQwMDE0RjlG
RSAvKiBVbmxpbmtlZEdsb2JhbENvZGVCbG9jay5oICovLAorCQkJCUUzMDYwMTI4MjI4Rjk3ODEw
MEZBQUJERiAvKiBVbmxpbmtlZE1ldGFkYXRhVGFibGUuY3BwICovLAogCQkJCTE0MkQ1MkJFMjE3
NjI5NTgwMDJEQjA4NiAvKiBVbmxpbmtlZE1ldGFkYXRhVGFibGUuaCAqLywKIAkJCQkxNDJENTJC
RDIxNzYyOTU3MDAyREIwODYgLyogVW5saW5rZWRNZXRhZGF0YVRhYmxlSW5saW5lcy5oICovLAog
CQkJCTE0QUQ5MTJBMURDQUFBQjAwMDE0RjlGRSAvKiBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2Rl
QmxvY2suY3BwICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMu
dHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CmluZGV4IDIxOTZjOTdiYmIx
MjllMmFiZGJjMzBjOGY1Y2NiNDE0ZDY1MjhmYjguLjQzZDdlZjQ3NTgyMmE4M2FmYWY5YTEyZThj
ZjllMTFhOWQ3ZGI4N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2Vz
LnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKQEAgLTI3Myw2ICsy
NzMsNyBAQCBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKIGJ5dGVjb2RlL1VubGlua2Vk
RXZhbENvZGVCbG9jay5jcHAKIGJ5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25Db2RlQmxvY2suY3Bw
CiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKK2J5dGVjb2RlL1VubGlu
a2VkTWV0YWRhdGFUYWJsZS5jcHAKIGJ5dGVjb2RlL1VubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVC
bG9jay5jcHAKIGJ5dGVjb2RlL1VubGlua2VkUHJvZ3JhbUNvZGVCbG9jay5jcHAKIGJ5dGVjb2Rl
L1ZhbHVlUmVjb3ZlcnkuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvTWV0YWRhdGFUYWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
TWV0YWRhdGFUYWJsZS5jcHAKaW5kZXggNWZkYzhhZDQ2OTdhNGI3MjM0NGZkZTU5NWI3ZDYxMjJl
ZWM1MzBkOS4uODE1YTdjNTY4NDU5MjNiYTFiZWUwNDQ0ZWQ1ZDg5YzY2YzJkNzc1NyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGFkYXRhVGFibGUuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRhZGF0YVRhYmxlLmNwcApAQCAt
NTYsMTEgKzU2LDE2IEBAIE1ldGFkYXRhVGFibGU6On5NZXRhZGF0YVRhYmxlKCkKIHsKICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgTlVNQkVSX09GX0JZVEVDT0RFX1dJVEhfTUVUQURBVEE7
IGkrKykKICAgICAgICAgZ2V0T3Bjb2RlVHlwZTxEZWFsbG9jVGFibGU+KHN0YXRpY19jYXN0PE9w
Y29kZUlEPihpKSwgdGhpcyk7Ci0gICAgUmVmPFVubGlua2VkTWV0YWRhdGFUYWJsZT4gdW5saW5r
ZWRNZXRhZGF0YSA9IFdURk1vdmUobGlua2luZ0RhdGEoKS51bmxpbmtlZE1ldGFkYXRhKTsKICAg
ICBsaW5raW5nRGF0YSgpLn5MaW5raW5nRGF0YSgpOworfQorCit2b2lkIE1ldGFkYXRhVGFibGU6
OmRlc3Ryb3koTWV0YWRhdGFUYWJsZSogdGFibGUpCit7CisgICAgUmVmPFVubGlua2VkTWV0YWRh
dGFUYWJsZT4gdW5saW5rZWRNZXRhZGF0YSA9IFdURk1vdmUodGFibGUtPmxpbmtpbmdEYXRhKCku
dW5saW5rZWRNZXRhZGF0YSk7CisgICAgdGFibGUtPn5NZXRhZGF0YVRhYmxlKCk7CiAgICAgLy8g
U2luY2UgVW5saW5rZWRNZXRhZGF0YTo6dW5saW5rIGZyZWVzIHRoZSB1bmRlcmx5aW5nIG1lbW9y
eSBvZiBNZXRhZGF0YVRhYmxlLgogICAgIC8vIFdlIG5lZWQgdG8gZGVzdHJveSBMaW5raW5nRGF0
YSBiZWZvcmUgY2FsbGluZyBpdC4KLSAgICB1bmxpbmtlZE1ldGFkYXRhLT51bmxpbmsoKnRoaXMp
OworICAgIHVubGlua2VkTWV0YWRhdGEtPnVubGluaygqdGFibGUpOwogfQogCiBzaXplX3QgTWV0
YWRhdGFUYWJsZTo6c2l6ZUluQnl0ZXMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL01ldGFkYXRhVGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9NZXRhZGF0YVRhYmxlLmgKaW5kZXggYTVkNDEyMWIxZDQxZDE2MWJmMjY1NDJlMDkyODZj
ZmJkOTkzOTViOC4uODlmZGQzNTBkMTVhZjI0ODZhZGVlYzczZGFjMjg1NDM3M2Q1YTljZiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGFkYXRhVGFibGUuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0YWRhdGFUYWJsZS5oCkBAIC02
MywxNiArNjMsMTYgQEAgY2xhc3MgTWV0YWRhdGFUYWJsZSB7CiAKICAgICBzaXplX3Qgc2l6ZUlu
Qnl0ZXMoKTsKIAotICAgIHZvaWQgcmVmKCkgY29uc3QKKyAgICB2b2lkIHJlZigpCiAgICAgewog
ICAgICAgICArK2xpbmtpbmdEYXRhKCkucmVmQ291bnQ7CiAgICAgfQogCi0gICAgdm9pZCBkZXJl
ZigpIGNvbnN0CisgICAgdm9pZCBkZXJlZigpCiAgICAgewogICAgICAgICB1bnNpZ25lZCB0ZW1w
UmVmQ291bnQgPSBsaW5raW5nRGF0YSgpLnJlZkNvdW50IC0gMTsKICAgICAgICAgaWYgKCF0ZW1w
UmVmQ291bnQpIHsKLSAgICAgICAgICAgIHRoaXMtPn5NZXRhZGF0YVRhYmxlKCk7CisgICAgICAg
ICAgICBNZXRhZGF0YVRhYmxlOjpkZXN0cm95KHRoaXMpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAgICAgICAgIGxpbmtpbmdEYXRhKCkucmVmQ291bnQgPSB0ZW1wUmVmQ291bnQ7
CkBAIC04OCwyMyArODgsNDEgQEAgY2xhc3MgTWV0YWRhdGFUYWJsZSB7CiAgICAgICAgIHJldHVy
biByZWZDb3VudCgpID09IDE7CiAgICAgfQogCi0gICAgVW5saW5rZWRNZXRhZGF0YVRhYmxlOjpP
ZmZzZXQqIGJ1ZmZlcigpCi0gICAgewotICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PFVubGlu
a2VkTWV0YWRhdGFUYWJsZTo6T2Zmc2V0Kj4odGhpcyk7Ci0gICAgfQorICAgIHZvaWQqIGJ1ZmZl
cigpIHsgcmV0dXJuIHRoaXM7IH0KKworICAgIGJvb2wgaXMzMkJpdCgpIGNvbnN0IHsgcmV0dXJu
ICFvZmZzZXRUYWJsZTE2KClbMF07IH0KIAogcHJpdmF0ZToKICAgICBNZXRhZGF0YVRhYmxlKFVu
bGlua2VkTWV0YWRhdGFUYWJsZSYpOwogCisgICAgVW5saW5rZWRNZXRhZGF0YVRhYmxlOjpPZmZz
ZXQxNiogb2Zmc2V0VGFibGUxNigpIGNvbnN0IHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxVbmxpbmtl
ZE1ldGFkYXRhVGFibGU6Ok9mZnNldDE2Kj4odGhpcyk7IH0KKyAgICBVbmxpbmtlZE1ldGFkYXRh
VGFibGU6Ok9mZnNldDMyKiBvZmZzZXRUYWJsZTMyKCkgY29uc3QgeyByZXR1cm4gYml0d2lzZV9j
YXN0PFVubGlua2VkTWV0YWRhdGFUYWJsZTo6T2Zmc2V0MzIqPihiaXR3aXNlX2Nhc3Q8dWludDhf
dCo+KHRoaXMpICsgVW5saW5rZWRNZXRhZGF0YVRhYmxlOjpzX29mZnNldDE2VGFibGVTaXplKTsg
fQorCisgICAgc2l6ZV90IHRvdGFsU2l6ZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4g
Z2V0T2Zmc2V0KFVubGlua2VkTWV0YWRhdGFUYWJsZTo6c19vZmZzZXRUYWJsZUVudHJpZXMgLSAx
KTsKKyAgICB9CisKICAgICBVbmxpbmtlZE1ldGFkYXRhVGFibGU6OkxpbmtpbmdEYXRhJiBsaW5r
aW5nRGF0YSgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gKmJpdHdpc2VfY2FzdDxVbmxp
bmtlZE1ldGFkYXRhVGFibGU6OkxpbmtpbmdEYXRhKj4oKGJpdHdpc2VfY2FzdDx1aW50OF90Kj4o
dGhpcykgLSBzaXplb2YoVW5saW5rZWRNZXRhZGF0YVRhYmxlOjpMaW5raW5nRGF0YSkpKTsKICAg
ICB9CiAKKyAgICBBTFdBWVNfSU5MSU5FIHVuc2lnbmVkIGdldE9mZnNldCh1bnNpZ25lZCBpKSBj
b25zdAorICAgIHsKKyAgICAgICAgdW5zaWduZWQgb2Zmc2V0ID0gb2Zmc2V0VGFibGUxNigpW2ld
OworICAgICAgICBpZiAob2Zmc2V0KQorICAgICAgICAgICAgcmV0dXJuIG9mZnNldDsKKyAgICAg
ICAgcmV0dXJuIG9mZnNldFRhYmxlMzIoKVtpXTsKKyAgICB9CisKICAgICBBTFdBWVNfSU5MSU5F
IHVpbnQ4X3QqIGdldEltcGwodW5zaWduZWQgaSkKICAgICB7Ci0gICAgICAgIHJldHVybiBiaXR3
aXNlX2Nhc3Q8dWludDhfdCo+KHRoaXMpICsgYnVmZmVyKClbaV07CisKKyAgICAgICAgcmV0dXJu
IGJpdHdpc2VfY2FzdDx1aW50OF90Kj4odGhpcykgKyBnZXRPZmZzZXQoaSk7CiAgICAgfQorCisg
ICAgc3RhdGljIHZvaWQgZGVzdHJveShNZXRhZGF0YVRhYmxlKik7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNv
ZGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5jcHAKaW5kZXgg
Mjg0Y2VmN2Y2NDRmMjNiYTFmNzU5OTYxNjkyMTY4ZjUyOWYwYWM1MC4uMGMwNWY4MzAyNmViYjRi
YWZkYTFhNzczYjIwNDVlMzlmNjAzMDUzYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL09wY29kZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL09wY29kZS5jcHAKQEAgLTIwMyw3ICsyMDMsNyBAQCB2b2lkIE9wY29kZVN0YXRzOjpyZXNl
dExhc3RJbnN0cnVjdGlvbigpCiAKICNlbmRpZgogCi1zdGF0aWMgdW5zaWduZWQgbWV0YWRhdGFT
aXplc1tdID0geworc3RhdGljIGNvbnN0IHVuc2lnbmVkIG1ldGFkYXRhU2l6ZXNbXSA9IHsKIAog
I2RlZmluZSBNRVRBREFUQV9TSVpFKHNpemUpIHNpemUsCiAgICAgRk9SX0VBQ0hfQllURUNPREVf
TUVUQURBVEFfU0laRShNRVRBREFUQV9TSVpFKQpAQCAtMjExLDcgKzIxMSw3IEBAIHN0YXRpYyB1
bnNpZ25lZCBtZXRhZGF0YVNpemVzW10gPSB7CiAKIH07CiAKLXN0YXRpYyB1bnNpZ25lZCBtZXRh
ZGF0YUFsaWdubWVudHNbXSA9IHsKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBtZXRhZGF0YUFsaWdu
bWVudHNbXSA9IHsKIAogI2RlZmluZSBNRVRBREFUQV9BTElHTk1FTlQoc2l6ZSkgc2l6ZSwKICAg
ICBGT1JfRUFDSF9CWVRFQ09ERV9NRVRBREFUQV9BTElHTk1FTlQoTUVUQURBVEFfQUxJR05NRU5U
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkTWV0
YWRhdGFUYWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRN
ZXRhZGF0YVRhYmxlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZTE2NTgzMTdkNzUyOTNhNTM0MjA1NzJmNGE4
MWQ4NWRlNDMzNTIyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1VubGlua2VkTWV0YWRhdGFUYWJsZS5jcHAKQEAgLTAsMCArMSw4NiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJVbmxpbmtlZE1ldGFkYXRhVGFibGUuaCIKKworI2luY2x1ZGUgIkJ5dGVj
b2RlU3RydWN0cy5oIgorI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkpTQ0lubGlu
ZXMuaCIKKyNpbmNsdWRlICJPcGNvZGVJbmxpbmVzLmgiCisjaW5jbHVkZSAiVW5saW5rZWRNZXRh
ZGF0YVRhYmxlSW5saW5lcy5oIgorI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CisKK25hbWVz
cGFjZSBKU0MgeworCisjZGVmaW5lIEpTQ19BTElHTk1FTlRfQ0hFQ0soc2l6ZSkgc3RhdGljX2Fz
c2VydChzaXplIDw9IFVubGlua2VkTWV0YWRhdGFUYWJsZTo6c19tYXhNZXRhZGF0YUFsaWdubWVu
dCk7CitGT1JfRUFDSF9CWVRFQ09ERV9NRVRBREFUQV9BTElHTk1FTlQoSlNDX0FMSUdOTUVOVF9D
SEVDSykKKyN1bmRlZiBKU0NfQUxJR05NRU5UX0NIRUNLCisKK3ZvaWQgVW5saW5rZWRNZXRhZGF0
YVRhYmxlOjpmaW5hbGl6ZSgpCit7CisgICAgQVNTRVJUKCFtX2lzRmluYWxpemVkKTsKKyAgICBt
X2lzRmluYWxpemVkID0gdHJ1ZTsKKyAgICBpZiAoIW1faGFzTWV0YWRhdGEpIHsKKyAgICAgICAg
ZmFzdEZyZWUobV9yYXdCdWZmZXIpOworICAgICAgICBtX3Jhd0J1ZmZlciA9IG51bGxwdHI7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBvZmZzZXQgPSBzX29mZnNldDE2
VGFibGVTaXplOworICAgIHsKKyAgICAgICAgT2Zmc2V0MzIqIGJ1ZmZlciA9IHByZXByb2Nlc3NC
dWZmZXIoKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNfb2Zmc2V0VGFibGVF
bnRyaWVzIC0gMTsgaSsrKSB7CisgICAgICAgICAgICB1bnNpZ25lZCBudW1iZXJPZkVudHJpZXMg
PSBidWZmZXJbaV07CisgICAgICAgICAgICBpZiAoIW51bWJlck9mRW50cmllcykgeworICAgICAg
ICAgICAgICAgIGJ1ZmZlcltpXSA9IG9mZnNldDsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG9mZnNldCA9IHJvdW5kVXBUb011bHRpcGxlT2Yo
bWV0YWRhdGFBbGlnbm1lbnQoc3RhdGljX2Nhc3Q8T3Bjb2RlSUQ+KGkpKSwgb2Zmc2V0KTsKKyAg
ICAgICAgICAgIGJ1ZmZlcltpXSA9IG9mZnNldDsKKyAgICAgICAgICAgIG9mZnNldCArPSBudW1i
ZXJPZkVudHJpZXMgKiBtZXRhZGF0YVNpemUoc3RhdGljX2Nhc3Q8T3Bjb2RlSUQ+KGkpKTsKKyAg
ICAgICAgfQorICAgICAgICBidWZmZXJbc19vZmZzZXRUYWJsZUVudHJpZXMgLSAxXSA9IG9mZnNl
dDsKKyAgICAgICAgbV9pczMyQml0ID0gb2Zmc2V0ID4gVUlOVDE2X01BWDsKKyAgICB9CisKKyAg
ICBpZiAobV9pczMyQml0KSB7CisgICAgICAgIG1fcmF3QnVmZmVyID0gcmVpbnRlcnByZXRfY2Fz
dDx1aW50OF90Kj4oZmFzdFJlYWxsb2MobV9yYXdCdWZmZXIsIHNfb2Zmc2V0MTZUYWJsZVNpemUg
KyBzX29mZnNldDMyVGFibGVTaXplICsgc2l6ZW9mKExpbmtpbmdEYXRhKSkpOworICAgICAgICBt
ZW1tb3ZlKG1fcmF3QnVmZmVyICsgc2l6ZW9mKExpbmtpbmdEYXRhKSArIHNfb2Zmc2V0MTZUYWJs
ZVNpemUsIG1fcmF3QnVmZmVyICsgc2l6ZW9mKExpbmtpbmdEYXRhKSwgc19vZmZzZXQzMlRhYmxl
U2l6ZSk7CisgICAgICAgIG1lbXNldChtX3Jhd0J1ZmZlciArIHNpemVvZihMaW5raW5nRGF0YSks
IDAsIHNfb2Zmc2V0MTZUYWJsZVNpemUpOworICAgICAgICBPZmZzZXQzMiogYnVmZmVyID0gYml0
d2lzZV9jYXN0PE9mZnNldDMyKj4obV9yYXdCdWZmZXIgKyBzaXplb2YoTGlua2luZ0RhdGEpICsg
c19vZmZzZXQxNlRhYmxlU2l6ZSk7CisgICAgICAgIC8vIFRoaXMgYWRqdXN0bWVudCBkb2VzIG5v
dCBicmVhayB0aGUgYWxpZ25tZW50IGNhbGN1bGF0ZWQgZm9yIG1ldGFkYXRhIGluIHRoZSBhYm92
ZSBsb29wIHNvIGxvbmcgYXMgc19vZmZzZXQzMlRhYmxlU2l6ZSBpcyByb3VuZGVkIHdpdGggOC4K
KyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNfb2Zmc2V0VGFibGVFbnRyaWVzOyBp
KyspCisgICAgICAgICAgICBidWZmZXJbaV0gKz0gc19vZmZzZXQzMlRhYmxlU2l6ZTsKKyAgICB9
IGVsc2UgeworICAgICAgICBPZmZzZXQzMiogb2xkQnVmZmVyID0gYml0d2lzZV9jYXN0PE9mZnNl
dDMyKj4obV9yYXdCdWZmZXIgKyBzaXplb2YoTGlua2luZ0RhdGEpKTsKKyAgICAgICAgT2Zmc2V0
MTYqIGJ1ZmZlciA9IGJpdHdpc2VfY2FzdDxPZmZzZXQxNio+KG1fcmF3QnVmZmVyICsgc2l6ZW9m
KExpbmtpbmdEYXRhKSk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzX29mZnNl
dFRhYmxlRW50cmllczsgaSsrKQorICAgICAgICAgICAgYnVmZmVyW2ldID0gb2xkQnVmZmVyW2ld
OworICAgICAgICBtX3Jhd0J1ZmZlciA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihmYXN0UmVhbGxv
YyhtX3Jhd0J1ZmZlciwgc19vZmZzZXQxNlRhYmxlU2l6ZSArIHNpemVvZihMaW5raW5nRGF0YSkp
KTsKKyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkTWV0YWRhdGFUYWJsZS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkTWV0YWRhdGFUYWJsZS5oCmluZGV4IDQ5OTFj
MTU4YmEwMjNmMjQ3ZjNiOTc5MjIyNDQ5NjA1YmQ5ZjVjNjYuLjQ5YTVhZmI4YjRjOGU5ZDQxNzc3
ODY2YmQ4YTM4Yzk5NGJjODhhOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9VbmxpbmtlZE1ldGFkYXRhVGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvVW5saW5rZWRNZXRhZGF0YVRhYmxlLmgKQEAgLTM3LDggKzM3LDkgQEAgY2xh
c3MgVW5saW5rZWRNZXRhZGF0YVRhYmxlIDogcHVibGljIFJlZkNvdW50ZWQ8VW5saW5rZWRNZXRh
ZGF0YVRhYmxlPiB7CiAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAg
ICBmcmllbmQgY2xhc3MgTWV0YWRhdGFUYWJsZTsKICAgICBmcmllbmQgY2xhc3MgQ2FjaGVkTWV0
YWRhdGFUYWJsZTsKLQogcHVibGljOgorICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgc19t
YXhNZXRhZGF0YUFsaWdubWVudCA9IDg7CisKICAgICBzdHJ1Y3QgTGlua2luZ0RhdGEgewogICAg
ICAgICBSZWY8VW5saW5rZWRNZXRhZGF0YVRhYmxlPiB1bmxpbmtlZE1ldGFkYXRhOwogICAgICAg
ICB1bnNpZ25lZCByZWZDb3VudDsKQEAgLTYxLDIyICs2Miw1NSBAQCBjbGFzcyBVbmxpbmtlZE1l
dGFkYXRhVGFibGUgOiBwdWJsaWMgUmVmQ291bnRlZDxVbmxpbmtlZE1ldGFkYXRhVGFibGU+IHsK
IAogcHJpdmF0ZToKICAgICBVbmxpbmtlZE1ldGFkYXRhVGFibGUoKTsKKyAgICBVbmxpbmtlZE1l
dGFkYXRhVGFibGUoYm9vbCBpczMyQml0KTsKKworICAgIHN0YXRpYyBSZWY8VW5saW5rZWRNZXRh
ZGF0YVRhYmxlPiBjcmVhdGUoYm9vbCBpczMyQml0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgVW5saW5rZWRNZXRhZGF0YVRhYmxlKGlzMzJCaXQpKTsKKyAgICB9CiAKICAg
ICB2b2lkIHVubGluayhNZXRhZGF0YVRhYmxlJik7CiAKICAgICBzaXplX3Qgc2l6ZUluQnl0ZXMo
TWV0YWRhdGFUYWJsZSYpOwogCi0gICAgdXNpbmcgT2Zmc2V0ID0gdW5zaWduZWQ7CisgICAgdW5z
aWduZWQgdG90YWxTaXplKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChtX2lzRmluYWxp
emVkKTsKKyAgICAgICAgaWYgKG1faXMzMkJpdCkKKyAgICAgICAgICAgIHJldHVybiBvZmZzZXRU
YWJsZTMyKClbc19vZmZzZXRUYWJsZUVudHJpZXMgLSAxXTsKKyAgICAgICAgcmV0dXJuIG9mZnNl
dFRhYmxlMTYoKVtzX29mZnNldFRhYmxlRW50cmllcyAtIDFdOworICAgIH0KKworICAgIHVuc2ln
bmVkIG9mZnNldFRhYmxlU2l6ZSgpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQobV9pc0Zp
bmFsaXplZCk7CisgICAgICAgIGlmIChtX2lzMzJCaXQpCisgICAgICAgICAgICByZXR1cm4gc19v
ZmZzZXQxNlRhYmxlU2l6ZSArIHNfb2Zmc2V0MzJUYWJsZVNpemU7CisgICAgICAgIHJldHVybiBz
X29mZnNldDE2VGFibGVTaXplOworICAgIH0KKworICAgIHVzaW5nIE9mZnNldDMyID0gdWludDMy
X3Q7CisgICAgdXNpbmcgT2Zmc2V0MTYgPSB1aW50MTZfdDsKIAogICAgIHN0YXRpYyBjb25zdGV4
cHIgdW5zaWduZWQgc19vZmZzZXRUYWJsZUVudHJpZXMgPSBOVU1CRVJfT0ZfQllURUNPREVfV0lU
SF9NRVRBREFUQSArIDE7IC8vIG9uZSBleHRyYSBlbnRyeSBmb3IgdGhlICJlbmQiIG9mZnNldDsK
LSAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIHNfb2Zmc2V0VGFibGVTaXplID0gc19vZmZz
ZXRUYWJsZUVudHJpZXMgKiBzaXplb2YoVW5saW5rZWRNZXRhZGF0YVRhYmxlOjpPZmZzZXQpOwog
Ci0gICAgT2Zmc2V0KiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8T2Zmc2V0
Kj4oYml0d2lzZV9jYXN0PHVpbnQ4X3QqPihtX3Jhd0J1ZmZlcikgKyBzaXplb2YoTGlua2luZ0Rh
dGEpKTsgfQorICAgIC8vIE5vdCB0byBicmVhayBhbGlnbm1lbnQgb2YgMzJiaXQgb2Zmc2V0IHRh
YmxlLCB3ZSByb3VuZCB1cCBzaXplIHdpdGggc2l6ZW9mKE9mZnNldDMyKS4KKyAgICBzdGF0aWMg
Y29uc3RleHByIHVuc2lnbmVkIHNfb2Zmc2V0MTZUYWJsZVNpemUgPSByb3VuZFVwVG9NdWx0aXBs
ZU9mPHNpemVvZihPZmZzZXQzMik+KHNfb2Zmc2V0VGFibGVFbnRyaWVzICogc2l6ZW9mKE9mZnNl
dDE2KSk7CisgICAgLy8gTm90IHRvIGJyZWFrIGFsaWdubWVudCBvZiB0aGUgbWV0YWRhdGEgY2Fs
Y3VsYXRlZCBiYXNlZCBvbiB0aGUgYWxpZ25tZW50IG9mIHNfb2Zmc2V0MTZUYWJsZVNpemUsIHNf
b2Zmc2V0MzJUYWJsZVNpemUgbXVzdCBiZSByb3VuZGVkIGJ5IDguCisgICAgLy8gVGhlbiwgc19v
ZmZzZXQxNlRhYmxlU2l6ZSBhbmQgc19vZmZzZXQxNlRhYmxlU2l6ZSArIHNfb2Zmc2V0MzJUYWJs
ZVNpemUgb2ZmZXIgdGhlIHNhbWUgYWxpZ25tZW50IGNoYXJhY3RlcmlzdGljcyBmb3Igc3Vic2Vx
dWVudCBNZXRhZGF0YS4KKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIHNfb2Zmc2V0MzJU
YWJsZVNpemUgPSByb3VuZFVwVG9NdWx0aXBsZU9mPHNfbWF4TWV0YWRhdGFBbGlnbm1lbnQ+KHNf
b2Zmc2V0VGFibGVFbnRyaWVzICogc2l6ZW9mKE9mZnNldDMyKSk7CisKKyAgICBPZmZzZXQzMiog
cHJlcHJvY2Vzc0J1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxPZmZzZXQzMio+
KG1fcmF3QnVmZmVyICsgc2l6ZW9mKExpbmtpbmdEYXRhKSk7IH0KKyAgICB2b2lkKiBidWZmZXIo
KSBjb25zdCB7IHJldHVybiBtX3Jhd0J1ZmZlciArIHNpemVvZihMaW5raW5nRGF0YSk7IH0KKwor
ICAgIE9mZnNldDE2KiBvZmZzZXRUYWJsZTE2KCkgY29uc3QgeyByZXR1cm4gYml0d2lzZV9jYXN0
PE9mZnNldDE2Kj4obV9yYXdCdWZmZXIgKyBzaXplb2YoTGlua2luZ0RhdGEpKTsgfQorICAgIE9m
ZnNldDMyKiBvZmZzZXRUYWJsZTMyKCkgY29uc3QgeyByZXR1cm4gYml0d2lzZV9jYXN0PE9mZnNl
dDMyKj4obV9yYXdCdWZmZXIgKyBzaXplb2YoTGlua2luZ0RhdGEpICsgc19vZmZzZXQxNlRhYmxl
U2l6ZSk7IH0KIAogICAgIGJvb2wgbV9oYXNNZXRhZGF0YSA6IDE7CiAgICAgYm9vbCBtX2lzRmlu
YWxpemVkIDogMTsKICAgICBib29sIG1faXNMaW5rZWQgOiAxOwotICAgIHZvaWQqIG1fcmF3QnVm
ZmVyOworICAgIGJvb2wgbV9pczMyQml0IDogMTsKKyAgICB1aW50OF90KiBtX3Jhd0J1ZmZlcjsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1VubGlua2VkTWV0YWRhdGFUYWJsZUlubGluZXMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZE1ldGFkYXRhVGFibGVJbmxpbmVzLmgKaW5kZXgg
MzM1MzkyMmNhODNjMzFkNjY5N2VhNWU2YmE1MjM4YzE2Mzg2OTM4YS4uMzI0NTBkYTFlNTgwYzJl
NGYzYjIxNmRhYmY1ZTQ0MWE1YmJjNGE2NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1VubGlua2VkTWV0YWRhdGFUYWJsZUlubGluZXMuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRNZXRhZGF0YVRhYmxlSW5saW5lcy5oCkBA
IC0zNSw3ICszNSwxNyBAQCBBTFdBWVNfSU5MSU5FIFVubGlua2VkTWV0YWRhdGFUYWJsZTo6VW5s
aW5rZWRNZXRhZGF0YVRhYmxlKCkKICAgICA6IG1faGFzTWV0YWRhdGEoZmFsc2UpCiAgICAgLCBt
X2lzRmluYWxpemVkKGZhbHNlKQogICAgICwgbV9pc0xpbmtlZChmYWxzZSkKLSAgICAsIG1fcmF3
QnVmZmVyKGZhc3RaZXJvZWRNYWxsb2Moc2l6ZW9mKExpbmtpbmdEYXRhKSArIHNfb2Zmc2V0VGFi
bGVTaXplKSkKKyAgICAsIG1faXMzMkJpdChmYWxzZSkKKyAgICAsIG1fcmF3QnVmZmVyKHN0YXRp
Y19jYXN0PHVpbnQ4X3QqPihmYXN0WmVyb2VkTWFsbG9jKHNpemVvZihMaW5raW5nRGF0YSkgKyBz
X29mZnNldDMyVGFibGVTaXplKSkpCit7Cit9CisKK0FMV0FZU19JTkxJTkUgVW5saW5rZWRNZXRh
ZGF0YVRhYmxlOjpVbmxpbmtlZE1ldGFkYXRhVGFibGUoYm9vbCBpczMyQml0KQorICAgIDogbV9o
YXNNZXRhZGF0YShmYWxzZSkKKyAgICAsIG1faXNGaW5hbGl6ZWQoZmFsc2UpCisgICAgLCBtX2lz
TGlua2VkKGZhbHNlKQorICAgICwgbV9pczMyQml0KGlzMzJCaXQpCisgICAgLCBtX3Jhd0J1ZmZl
cihzdGF0aWNfY2FzdDx1aW50OF90Kj4oZmFzdFplcm9lZE1hbGxvYyhzaXplb2YoTGlua2luZ0Rh
dGEpICsgKGlzMzJCaXQgPyBzX29mZnNldDE2VGFibGVTaXplICsgc19vZmZzZXQzMlRhYmxlU2l6
ZSA6IHNfb2Zmc2V0MTZUYWJsZVNpemUpKSkpCiB7CiB9CiAKQEAgLTUwLDcgKzYwLDcgQEAgQUxX
QVlTX0lOTElORSB1bnNpZ25lZCBVbmxpbmtlZE1ldGFkYXRhVGFibGU6OmFkZEVudHJ5KE9wY29k
ZUlEIG9wY29kZUlEKQogewogICAgIEFTU0VSVCghbV9pc0ZpbmFsaXplZCAmJiBvcGNvZGVJRCA8
IHNfb2Zmc2V0VGFibGVFbnRyaWVzIC0gMSk7CiAgICAgbV9oYXNNZXRhZGF0YSA9IHRydWU7Ci0g
ICAgcmV0dXJuIGJ1ZmZlcigpW29wY29kZUlEXSsrOworICAgIHJldHVybiBwcmVwcm9jZXNzQnVm
ZmVyKClbb3Bjb2RlSURdKys7CiB9CiAKIEFMV0FZU19JTkxJTkUgc2l6ZV90IFVubGlua2VkTWV0
YWRhdGFUYWJsZTo6c2l6ZUluQnl0ZXMoKQpAQCAtNTgsNyArNjgsOSBAQCBBTFdBWVNfSU5MSU5F
IHNpemVfdCBVbmxpbmtlZE1ldGFkYXRhVGFibGU6OnNpemVJbkJ5dGVzKCkKICAgICBpZiAobV9p
c0ZpbmFsaXplZCAmJiAhbV9oYXNNZXRhZGF0YSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBy
ZXR1cm4gc19vZmZzZXRUYWJsZVNpemU7CisgICAgaWYgKG1faXMzMkJpdCkKKyAgICAgICAgcmV0
dXJuIHNfb2Zmc2V0MTZUYWJsZVNpemUgKyBzX29mZnNldDMyVGFibGVTaXplOworICAgIHJldHVy
biBzX29mZnNldDE2VGFibGVTaXplOwogfQogCiBBTFdBWVNfSU5MSU5FIHNpemVfdCBVbmxpbmtl
ZE1ldGFkYXRhVGFibGU6OnNpemVJbkJ5dGVzKE1ldGFkYXRhVGFibGUmIG1ldGFkYXRhVGFibGUp
CkBAIC02NywzNiArNzksMTQgQEAgQUxXQVlTX0lOTElORSBzaXplX3QgVW5saW5rZWRNZXRhZGF0
YVRhYmxlOjpzaXplSW5CeXRlcyhNZXRhZGF0YVRhYmxlJiBtZXRhZGF0YVQKIAogICAgIC8vIElu
IHRoaXMgY2FzZSwgd2UgcmV0dXJuIHRoZSBzaXplIG9mIHRoZSB0YWJsZSBtaW51cyB0aGUgb2Zm
c2V0IHRhYmxlLAogICAgIC8vIHdoaWNoIHdhcyBhbHJlYWR5IGFjY291bnRlZCBmb3IgaW4gdGhl
IFVubGlua2VkQ29kZUJsb2NrLgorICAgIHNpemVfdCByZXN1bHQgPSB0b3RhbFNpemUoKTsKICAg
ICBpZiAobWV0YWRhdGFUYWJsZS5idWZmZXIoKSA9PSBidWZmZXIoKSkgewogICAgICAgICBBU1NF
UlQobV9pc0xpbmtlZCk7Ci0gICAgICAgIHJldHVybiBidWZmZXIoKVtzX29mZnNldFRhYmxlRW50
cmllcyAtIDFdIC0gc19vZmZzZXRUYWJsZVNpemU7Ci0gICAgfQotCi0gICAgcmV0dXJuIG1ldGFk
YXRhVGFibGUuYnVmZmVyKClbc19vZmZzZXRUYWJsZUVudHJpZXMgLSAxXTsKLX0KLQotQUxXQVlT
X0lOTElORSB2b2lkIFVubGlua2VkTWV0YWRhdGFUYWJsZTo6ZmluYWxpemUoKQotewotICAgIEFT
U0VSVCghbV9pc0ZpbmFsaXplZCk7Ci0gICAgbV9pc0ZpbmFsaXplZCA9IHRydWU7Ci0gICAgaWYg
KCFtX2hhc01ldGFkYXRhKSB7Ci0gICAgICAgIGZhc3RGcmVlKG1fcmF3QnVmZmVyKTsKLSAgICAg
ICAgbV9yYXdCdWZmZXIgPSBudWxscHRyOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
dW5zaWduZWQgb2Zmc2V0ID0gc19vZmZzZXRUYWJsZVNpemU7Ci0gICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IHNfb2Zmc2V0VGFibGVFbnRyaWVzIC0gMTsgaSsrKSB7Ci0gICAgICAgIHVuc2ln
bmVkIG51bWJlck9mRW50cmllcyA9IGJ1ZmZlcigpW2ldOwotCi0gICAgICAgIGlmIChudW1iZXJP
ZkVudHJpZXMgPiAwKSB7Ci0gICAgICAgICAgICBvZmZzZXQgPSByb3VuZFVwVG9NdWx0aXBsZU9m
KG1ldGFkYXRhQWxpZ25tZW50KHN0YXRpY19jYXN0PE9wY29kZUlEPihpKSksIG9mZnNldCk7Ci0g
ICAgICAgICAgICBidWZmZXIoKVtpXSA9IG9mZnNldDsKLSAgICAgICAgICAgIG9mZnNldCArPSBu
dW1iZXJPZkVudHJpZXMgKiBtZXRhZGF0YVNpemUoc3RhdGljX2Nhc3Q8T3Bjb2RlSUQ+KGkpKTsK
LSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBidWZmZXIoKVtpXSA9IG9mZnNldDsKKyAgICAg
ICAgaWYgKG1faXMzMkJpdCkKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQgLSAoc19vZmZzZXQx
NlRhYmxlU2l6ZSArIHNfb2Zmc2V0MzJUYWJsZVNpemUpOworICAgICAgICByZXR1cm4gcmVzdWx0
IC0gc19vZmZzZXQxNlRhYmxlU2l6ZTsKICAgICB9Ci0gICAgYnVmZmVyKClbc19vZmZzZXRUYWJs
ZUVudHJpZXMgLSAxXSA9IG9mZnNldDsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiBBTFdBWVNf
SU5MSU5FIFJlZlB0cjxNZXRhZGF0YVRhYmxlPiBVbmxpbmtlZE1ldGFkYXRhVGFibGU6Omxpbmso
KQpAQCAtMTA2LDE2ICs5NiwxNyBAQCBBTFdBWVNfSU5MSU5FIFJlZlB0cjxNZXRhZGF0YVRhYmxl
PiBVbmxpbmtlZE1ldGFkYXRhVGFibGU6OmxpbmsoKQogICAgIGlmICghbV9oYXNNZXRhZGF0YSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICB1bnNpZ25lZCB0b3RhbFNpemUgPSBidWZm
ZXIoKVtzX29mZnNldFRhYmxlRW50cmllcyAtIDFdOworICAgIHVuc2lnbmVkIHRvdGFsU2l6ZSA9
IHRoaXMtPnRvdGFsU2l6ZSgpOworICAgIHVuc2lnbmVkIG9mZnNldFRhYmxlU2l6ZSA9IHRoaXMt
Pm9mZnNldFRhYmxlU2l6ZSgpOwogICAgIHVpbnQ4X3QqIGJ1ZmZlcjsKICAgICBpZiAoIW1faXNM
aW5rZWQpIHsKICAgICAgICAgbV9pc0xpbmtlZCA9IHRydWU7CiAgICAgICAgIG1fcmF3QnVmZmVy
ID0gYnVmZmVyID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oZmFzdFJlYWxsb2MobV9yYXdC
dWZmZXIsIHNpemVvZihMaW5raW5nRGF0YSkgKyB0b3RhbFNpemUpKTsKICAgICB9IGVsc2Ugewog
ICAgICAgICBidWZmZXIgPSByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihmYXN0TWFsbG9jKHNp
emVvZihMaW5raW5nRGF0YSkgKyB0b3RhbFNpemUpKTsKLSAgICAgICAgbWVtY3B5KGJ1ZmZlciwg
bV9yYXdCdWZmZXIsIHNpemVvZihMaW5raW5nRGF0YSkgKyBzX29mZnNldFRhYmxlU2l6ZSk7Cisg
ICAgICAgIG1lbWNweShidWZmZXIsIG1fcmF3QnVmZmVyLCBzaXplb2YoTGlua2luZ0RhdGEpICsg
b2Zmc2V0VGFibGVTaXplKTsKICAgICB9Ci0gICAgbWVtc2V0KGJ1ZmZlciArIHNpemVvZihMaW5r
aW5nRGF0YSkgKyBzX29mZnNldFRhYmxlU2l6ZSwgMCwgdG90YWxTaXplIC0gc19vZmZzZXRUYWJs
ZVNpemUpOworICAgIG1lbXNldChidWZmZXIgKyBzaXplb2YoTGlua2luZ0RhdGEpICsgb2Zmc2V0
VGFibGVTaXplLCAwLCB0b3RhbFNpemUgLSBvZmZzZXRUYWJsZVNpemUpOwogICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IChidWZmZXIgKyBzaXplb2YoTGlua2luZ0RhdGEpKSBNZXRhZGF0YVRhYmxl
KCp0aGlzKSk7CiB9CiAKQEAgLTEyOCw3ICsxMTksNyBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgVW5s
aW5rZWRNZXRhZGF0YVRhYmxlOjp1bmxpbmsoTWV0YWRhdGFUYWJsZSYgbWV0YWRhdGFUYWJsZSkK
ICAgICBpZiAobWV0YWRhdGFUYWJsZS5idWZmZXIoKSA9PSBidWZmZXIoKSkgewogICAgICAgICBB
U1NFUlQobV9pc0xpbmtlZCk7CiAgICAgICAgIG1faXNMaW5rZWQgPSBmYWxzZTsKLSAgICAgICAg
bV9yYXdCdWZmZXIgPSBmYXN0UmVhbGxvYyhtX3Jhd0J1ZmZlciwgc2l6ZW9mKExpbmtpbmdEYXRh
KSArIHNfb2Zmc2V0VGFibGVTaXplKTsKKyAgICAgICAgbV9yYXdCdWZmZXIgPSBzdGF0aWNfY2Fz
dDx1aW50OF90Kj4oZmFzdFJlYWxsb2MobV9yYXdCdWZmZXIsIHNpemVvZihMaW5raW5nRGF0YSkg
KyBvZmZzZXRUYWJsZVNpemUoKSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGZhc3RG
cmVlKCZtZXRhZGF0YVRhYmxlLmxpbmtpbmdEYXRhKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCmluZGV4IGJjNDE5ZWQ2MTc5
MDAwMTMzNDRlNjE1ZGFlODZmYjQ2MTFmNzE5MDIuLjE1MjVhNTQzMWQwMzljYWMwNWRiMmI5YWE1
NGY1ZTJlZDA5ZmZiZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyLmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlci5hc20KQEAgLTE4MSw2ICsxODEsOSBAQCBjb25zdCBUaGlzQXJn
dW1lbnRPZmZzZXQgPSBBcmd1bWVudENvdW50ICsgU2xvdFNpemUKIGNvbnN0IEZpcnN0QXJndW1l
bnRPZmZzZXQgPSBUaGlzQXJndW1lbnRPZmZzZXQgKyBTbG90U2l6ZQogY29uc3QgQ2FsbEZyYW1l
SGVhZGVyU2l6ZSA9IFRoaXNBcmd1bWVudE9mZnNldAogCitjb25zdCBNZXRhZGF0YU9mZnNldFRh
YmxlMTYgPSAwCitjb25zdCBNZXRhZGF0YU9mZnNldFRhYmxlMzIgPSBjb25zdGV4cHIgVW5saW5r
ZWRNZXRhZGF0YVRhYmxlOjpzX29mZnNldDE2VGFibGVTaXplCisKICMgU29tZSB2YWx1ZSByZXBy
ZXNlbnRhdGlvbiBjb25zdGFudHMuCiBpZiBKU1ZBTFVFNjQKICAgICBjb25zdCBUYWdCaXRUeXBl
T3RoZXIgPSBjb25zdGV4cHIgVGFnQml0VHlwZU90aGVyCkBAIC0zMzYsNyArMzM5LDEwIEBAIG1h
Y3JvIHdpZGUobmFycm93Rm4sIHdpZGVGbiwgaykKIGVuZAogCiBtYWNybyBtZXRhZGF0YShzaXpl
LCBvcGNvZGUsIGRzdCwgc2NyYXRjaCkKLSAgICBsb2FkaSBjb25zdGV4cHIgJW9wY29kZSU6Om9w
Y29kZUlEICogNFttZXRhZGF0YVRhYmxlXSwgZHN0ICMgb2Zmc2V0ID0gbWV0YWRhdGFUYWJsZTx1
bnNpZ25lZCo+W29wY29kZUlEXQorICAgIGxvYWRoIChjb25zdGV4cHIgJW9wY29kZSU6Om9wY29k
ZUlEICogMiArIE1ldGFkYXRhT2Zmc2V0VGFibGUxNilbbWV0YWRhdGFUYWJsZV0sIGRzdCAjIG9m
ZnNldCA9IG1ldGFkYXRhVGFibGU8dWludDE2X3QqPltvcGNvZGVJRF0KKyAgICBidGlueiBkc3Qs
IC5zZXRVcE9mZnNldAorICAgIGxvYWRpIChjb25zdGV4cHIgJW9wY29kZSU6Om9wY29kZUlEICog
NCArIE1ldGFkYXRhT2Zmc2V0VGFibGUzMilbbWV0YWRhdGFUYWJsZV0sIGRzdCAjIG9mZnNldCA9
IG1ldGFkYXRhVGFibGU8dWludDMyX3QqPltvcGNvZGVJRF0KKy5zZXRVcE9mZnNldDoKICAgICBn
ZXR1KHNpemUsIG9wY29kZSwgbV9tZXRhZGF0YUlELCBzY3JhdGNoKSAjIHNjcmF0Y2ggPSBieXRl
Y29kZS5tX21ldGFkYXRhSUQKICAgICBtdWxpIHNpemVvZiAlb3Bjb2RlJTo6TWV0YWRhdGEsIHNj
cmF0Y2ggIyBzY3JhdGNoICo9IHNpemVvZihPcDo6TWV0YWRhdGEpCiAgICAgYWRkaSBzY3JhdGNo
LCBkc3QgIyBvZmZzZXQgKz0gc2NyYXRjaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ2FjaGVkVHlwZXMuY3BwCmluZGV4IDNiNjEwYThkNzc3OGE3ZDdiODFiYTBiZTZjMTM3YTRi
ZDc2MzZhM2QuLjE0MDU1MWRjZjcwODMwOGRlYmFiODZmM2FjZDEzZjQ5ZGU5NTNlMmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAKQEAgLTEzMzEs
MjMgKzEzMzEsMzUgQEAgY2xhc3MgQ2FjaGVkTWV0YWRhdGFUYWJsZSA6IHB1YmxpYyBDYWNoZWRP
YmplY3Q8VW5saW5rZWRNZXRhZGF0YVRhYmxlPiB7CiAgICAgICAgIG1faGFzTWV0YWRhdGEgPSBt
ZXRhZGF0YVRhYmxlLm1faGFzTWV0YWRhdGE7CiAgICAgICAgIGlmICghbV9oYXNNZXRhZGF0YSkK
ICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gVW5saW5rZWRN
ZXRhZGF0YVRhYmxlOjpzX29mZnNldFRhYmxlRW50cmllczsgaS0tOykKLSAgICAgICAgICAgIG1f
bWV0YWRhdGFbaV0gPSBtZXRhZGF0YVRhYmxlLmJ1ZmZlcigpW2ldOworICAgICAgICBtX2lzMzJC
aXQgPSBtZXRhZGF0YVRhYmxlLm1faXMzMkJpdDsKKyAgICAgICAgaWYgKG1faXMzMkJpdCkgewor
ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gVW5saW5rZWRNZXRhZGF0YVRhYmxlOjpzX29m
ZnNldFRhYmxlRW50cmllczsgaS0tOykKKyAgICAgICAgICAgICAgICBtX21ldGFkYXRhW2ldID0g
bWV0YWRhdGFUYWJsZS5vZmZzZXRUYWJsZTMyKClbaV07CisgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBVbmxpbmtlZE1ldGFkYXRhVGFibGU6OnNfb2Zmc2V0
VGFibGVFbnRyaWVzOyBpLS07KQorICAgICAgICAgICAgICAgIG1fbWV0YWRhdGFbaV0gPSBtZXRh
ZGF0YVRhYmxlLm9mZnNldFRhYmxlMTYoKVtpXTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIFJl
ZjxVbmxpbmtlZE1ldGFkYXRhVGFibGU+IGRlY29kZShEZWNvZGVyJikgY29uc3QKICAgICB7Ci0g
ICAgICAgIFJlZjxVbmxpbmtlZE1ldGFkYXRhVGFibGU+IG1ldGFkYXRhVGFibGUgPSBVbmxpbmtl
ZE1ldGFkYXRhVGFibGU6OmNyZWF0ZSgpOworICAgICAgICBSZWY8VW5saW5rZWRNZXRhZGF0YVRh
YmxlPiBtZXRhZGF0YVRhYmxlID0gVW5saW5rZWRNZXRhZGF0YVRhYmxlOjpjcmVhdGUobV9pczMy
Qml0KTsKICAgICAgICAgbWV0YWRhdGFUYWJsZS0+bV9pc0ZpbmFsaXplZCA9IHRydWU7CiAgICAg
ICAgIG1ldGFkYXRhVGFibGUtPm1faXNMaW5rZWQgPSBmYWxzZTsKICAgICAgICAgbWV0YWRhdGFU
YWJsZS0+bV9oYXNNZXRhZGF0YSA9IG1faGFzTWV0YWRhdGE7Ci0gICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IFVubGlua2VkTWV0YWRhdGFUYWJsZTo6c19vZmZzZXRUYWJsZUVudHJpZXM7IGktLTsp
Ci0gICAgICAgICAgICBtZXRhZGF0YVRhYmxlLT5idWZmZXIoKVtpXSA9IG1fbWV0YWRhdGFbaV07
CisgICAgICAgIGlmIChtX2lzMzJCaXQpIHsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IFVubGlua2VkTWV0YWRhdGFUYWJsZTo6c19vZmZzZXRUYWJsZUVudHJpZXM7IGktLTspCisgICAg
ICAgICAgICAgICAgbWV0YWRhdGFUYWJsZS0+b2Zmc2V0VGFibGUzMigpW2ldID0gbV9tZXRhZGF0
YVtpXTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IFVu
bGlua2VkTWV0YWRhdGFUYWJsZTo6c19vZmZzZXRUYWJsZUVudHJpZXM7IGktLTspCisgICAgICAg
ICAgICAgICAgbWV0YWRhdGFUYWJsZS0+b2Zmc2V0VGFibGUxNigpW2ldID0gbV9tZXRhZGF0YVtp
XTsKKyAgICAgICAgfQogICAgICAgICByZXR1cm4gbWV0YWRhdGFUYWJsZTsKICAgICB9CiAKIHBy
aXZhdGU6CiAgICAgYm9vbCBtX2hhc01ldGFkYXRhOworICAgIGJvb2wgbV9pczMyQml0OwogICAg
IHN0ZDo6YXJyYXk8dW5zaWduZWQsIFVubGlua2VkTWV0YWRhdGFUYWJsZTo6c19vZmZzZXRUYWJs
ZUVudHJpZXM+IG1fbWV0YWRhdGE7CiB9OwogCg==
</data>
<flag name="review"
          id="386189"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>