<?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>221526</bug_id>
          
          <creation_ts>2021-02-07 02:38:54 -0800</creation_ts>
          <short_desc>[JSC] C++ iteration should support fast iterator protocol</short_desc>
          <delta_ts>2021-02-09 21:47:17 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>annulen</cc>
    
    <cc>ashvayka</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>saam</cc>
    
    <cc>sergio</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1726463</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-02-07 02:38:54 -0800</bug_when>
    <thetext>[JSC] C++ iteration should support fast iterator protocol</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1726464</commentid>
    <comment_count>1</comment_count>
      <attachid>419531</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-02-07 02:42:03 -0800</bug_when>
    <thetext>Created attachment 419531
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1726465</commentid>
    <comment_count>2</comment_count>
      <attachid>419531</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-02-07 02:43:33 -0800</bug_when>
    <thetext>Comment on attachment 419531
Patch

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

&gt; Source/JavaScriptCore/runtime/IteratorOperations.h:120
&gt; +                JSArrayIterator* iterator = JSArrayIterator::create(vm, globalObject.arrayIteratorStructure(), array, IterationKind::Values);
&gt; +                iterator-&gt;internalField(JSArrayIterator::Field::Index).setWithoutWriteBarrier(jsNumber(index + 1));
&gt; +                iteratorClose(&amp;globalObject, iterator);
&gt; +                return;

We need to have an array iterator only when we need to catch an error. So, when we found an error, we create an array iterator with appropriate state.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1726466</commentid>
    <comment_count>3</comment_count>
      <attachid>419532</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-02-07 02:48:44 -0800</bug_when>
    <thetext>Created attachment 419532
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1726467</commentid>
    <comment_count>4</comment_count>
      <attachid>419533</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-02-07 02:56:12 -0800</bug_when>
    <thetext>Created attachment 419533
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1726468</commentid>
    <comment_count>5</comment_count>
      <attachid>419534</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-02-07 02:57:51 -0800</bug_when>
    <thetext>Created attachment 419534
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1726470</commentid>
    <comment_count>6</comment_count>
      <attachid>419535</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-02-07 03:17:42 -0800</bug_when>
    <thetext>Created attachment 419535
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1726471</commentid>
    <comment_count>7</comment_count>
      <attachid>419536</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-02-07 03:25:56 -0800</bug_when>
    <thetext>Created attachment 419536
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1727308</commentid>
    <comment_count>8</comment_count>
      <attachid>419536</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-02-09 15:47:00 -0800</bug_when>
    <thetext>Comment on attachment 419536
Patch

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

Well done! r=me with a comment on test and a few nits.

&gt; Source/JavaScriptCore/runtime/CommonSlowPaths.cpp:867
&gt; +    if (prepareForFastArrayIteration(vm, globalObject, iterable, symbolIterator) == IterationMode::FastArray) {

nit: &quot;prepare&quot; in the name suggests the method is performing some side-effects, yet it&apos;s pure. Maybe it&apos;s worth renaming it to something like &quot;getIterationMode&quot;?

&gt; Source/JavaScriptCore/runtime/IteratorOperations.cpp:249
&gt; +    // We don&apos;t want to allocate the values function just to check if it&apos;s the same as our function at so we use the concurrent accessor.

typo: extra &quot;at&quot; after &quot;function&quot;

&gt; Source/JavaScriptCore/runtime/IteratorOperations.cpp:264
&gt; +    // FIXME: We want to support broader JSArrays so long as array[@@iterator] is not defined.

typo: *as* long as

&gt; Source/JavaScriptCore/runtime/IteratorOperations.h:70
&gt; +            JSValue nextValue = array-&gt;getIndex(globalObject, static_cast&lt;unsigned&gt;(index));

nit: Do we really need the static_cast&lt;unsigned&gt; here given that `index` is unsigned and getIndex() has only one overload.

&gt; Source/JavaScriptCore/runtime/IteratorOperations.h:76
&gt; +                iterator-&gt;internalField(JSArrayIterator::Field::Index).setWithoutWriteBarrier(jsNumber(index + 1));

This is very tricky, great catch! Could you please expand stress/map-constructor-hole-throw.js to cover this line?
Since we get a hold of iterator whose [[IteratedObject]] is still defined, we can test its [[ArrayIteratorNextIndex]] value by calling next(), right?

&gt; Source/JavaScriptCore/runtime/IteratorOperations.h:112
&gt; +            JSValue nextValue = array-&gt;getIndex(&amp;globalObject, static_cast&lt;unsigned&gt;(index));

Ditto on static_cast&lt;unsigned&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1727425</commentid>
    <comment_count>9</comment_count>
      <attachid>419536</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-02-09 21:44:53 -0800</bug_when>
    <thetext>Comment on attachment 419536
Patch

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

Thanks!

&gt;&gt; Source/JavaScriptCore/runtime/CommonSlowPaths.cpp:867
&gt;&gt; +    if (prepareForFastArrayIteration(vm, globalObject, iterable, symbolIterator) == IterationMode::FastArray) {
&gt; 
&gt; nit: &quot;prepare&quot; in the name suggests the method is performing some side-effects, yet it&apos;s pure. Maybe it&apos;s worth renaming it to something like &quot;getIterationMode&quot;?

Sounds good! Fixed.

&gt;&gt; Source/JavaScriptCore/runtime/IteratorOperations.cpp:249
&gt;&gt; +    // We don&apos;t want to allocate the values function just to check if it&apos;s the same as our function at so we use the concurrent accessor.
&gt; 
&gt; typo: extra &quot;at&quot; after &quot;function&quot;

Fixed.

&gt;&gt; Source/JavaScriptCore/runtime/IteratorOperations.cpp:264
&gt;&gt; +    // FIXME: We want to support broader JSArrays so long as array[@@iterator] is not defined.
&gt; 
&gt; typo: *as* long as

Fixed.

&gt;&gt; Source/JavaScriptCore/runtime/IteratorOperations.h:70
&gt;&gt; +            JSValue nextValue = array-&gt;getIndex(globalObject, static_cast&lt;unsigned&gt;(index));
&gt; 
&gt; nit: Do we really need the static_cast&lt;unsigned&gt; here given that `index` is unsigned and getIndex() has only one overload.

Fixed.

&gt;&gt; Source/JavaScriptCore/runtime/IteratorOperations.h:76
&gt;&gt; +                iterator-&gt;internalField(JSArrayIterator::Field::Index).setWithoutWriteBarrier(jsNumber(index + 1));
&gt; 
&gt; This is very tricky, great catch! Could you please expand stress/map-constructor-hole-throw.js to cover this line?
&gt; Since we get a hold of iterator whose [[IteratedObject]] is still defined, we can test its [[ArrayIteratorNextIndex]] value by calling next(), right?

Right! Added that test :)

&gt;&gt; Source/JavaScriptCore/runtime/IteratorOperations.h:112
&gt;&gt; +            JSValue nextValue = array-&gt;getIndex(&amp;globalObject, static_cast&lt;unsigned&gt;(index));
&gt; 
&gt; Ditto on static_cast&lt;unsigned&gt;.

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1727426</commentid>
    <comment_count>10</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-02-09 21:46:10 -0800</bug_when>
    <thetext>Committed r272638: &lt;https://trac.webkit.org/changeset/272638&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1727427</commentid>
    <comment_count>11</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-02-09 21:47:17 -0800</bug_when>
    <thetext>&lt;rdar://problem/74175114&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>419531</attachid>
            <date>2021-02-07 02:42:03 -0800</date>
            <delta_ts>2021-02-07 02:55:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221526-20210207024202.patch</filename>
            <type>text/plain</type>
            <size>16871</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyNDcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
NjhmOWU5YzJiOTMxYzhkODEzNDA3MDY5NDExOWNhOTI2YWE0MDc3Li5jYjYzZjU1YmRhMGFiNGEx
Y2M5OTZkOTJhZmE1ZGFhYzEwNmQ5YzRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMiBAQAorMjAyMS0wMi0wNyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEMrKyBpdGVyYXRpb24gc2hvdWxkIHN1cHBvcnQgZmFzdCBpdGVy
YXRvciBwcm90b2NvbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjIxNTI2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVGhpcyBwYXRjaCBhZGRzIGZhc3QgaXRlcmF0aW9uIHByb3RvY29sIHN1cHBvcnQgaW4g
QysrIGl0ZXJhdGlvbiAoZm9yRWFjaEl0ZXJhYmxlKS4KKyAgICAgICAgSW4gSlMsIHdlIGhhdmUg
b3BfaXRlcmF0b3Jfb3BlbiAvIG9wX2l0ZXJhdG9yX25leHQgdG8gaXRlcmF0ZSBhcnJheSBxdWlj
a2x5LgorICAgICAgICBCdXQgd2UgZG8gbm90IHVzZSB0aGlzIGZlYXR1cmUgaW4gQysrIGZvckVh
Y2hJdGVyYWJsZS4gSW4gdGhpcyBwYXRjaCB3ZSBpbnRlZ3JhdGUKKyAgICAgICAgdGhlIHNhbWUg
KG9yIGEgYml0IG1vcmUgZWZmaWNpZW50IHNpbmNlIHdlIGNhbiBhdm9pZCBjcmVhdGluZyBKU0Fy
cmF5SXRlcmF0b3IpIG1lY2hhbmlzbQorICAgICAgICBzbyB0aGF0IGl0ZXJhdGlvbiBpbiBDKysg
Z2V0cyBmYXN0ZXIgZm9yIG5vcm1hbCBhcnJheXMuCisKKyAgICAgICAgV2Ugb2JzZXJ2ZWQgMS45
eCBmYXN0ZXIgaW4gTWFwIGNyZWF0aW9uIHdpdGggYXJyYXlzLgorCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVG9UICAgICAgICAgICAgICAgICAgICAgUGF0Y2hlZAor
CisgICAgICAgICAgICBtYXAtY29uc3RydWN0b3IgICAgICAgMzUuNzQ0NistMC4yMzU0ICAgICBe
ICAgICAxOC43NTE2Ky0wLjQ1MzQgICAgICAgIF4gZGVmaW5pdGVseSAxLjkwNjJ4IGZhc3Rlcgor
CisgICAgICAgICogaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcDoKKyAgICAgICAg
KEluc3BlY3Rvcjo6SlNJbmplY3RlZFNjcmlwdEhvc3Q6Oml0ZXJhdG9yRW50cmllcyk6CisgICAg
ICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjppdGVyYXRv
ck9wZW5UcnlGYXN0SW1wbCk6CisgICAgICAgICogcnVudGltZS9JdGVyYXRvck9wZXJhdGlvbnMu
Y3BwOgorICAgICAgICAoSlNDOjppdGVyYXRvckNsb3NlKToKKyAgICAgICAgKEpTQzo6cHJlcGFy
ZUZvckZhc3RBcnJheUl0ZXJhdGlvbik6CisgICAgICAgICogcnVudGltZS9JdGVyYXRvck9wZXJh
dGlvbnMuaDoKKyAgICAgICAgKEpTQzo6Zm9yRWFjaEluSXRlcmFibGUpOgorCiAyMDIxLTAyLTA2
ICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4KIAogICAgICAgICBSRUdS
RVNTSU9OIChyMjY0NTc0KTogVW5jaGVja2VkIEpTIGV4Y2VwdGlvbiBpbiB2YWxpZGF0ZUFuZEFw
cGx5UHJvcGVydHlEZXNjcmlwdG9yKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdC5jcHAKaW5kZXggYTk4YmQ4NmJkNjA3
ZTIyYjQ4ZGQwMTJkNmM4NmQ3Nzc3NjQxOGNiNi4uOTg2OWYxZGEwYjVmZWY4MzY0OTMxYjQzYWZl
MmNhMjM4ZDJlYzU0MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9KU0luamVjdGVkU2NyaXB0SG9zdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdC5jcHAKQEAgLTYxMyw3ICs2MTMsNyBAQCBKU1Zh
bHVlIEpTSW5qZWN0ZWRTY3JpcHRIb3N0OjppdGVyYXRvckVudHJpZXMoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbAogICAgICAgICBhcnJheS0+cHV0RGlyZWN0SW5kZXgoZ2xvYmFs
T2JqZWN0LCBpLCBlbnRyeSk7CiAgICAgICAgIGlmIChVTkxJS0VMWShzY29wZS5leGNlcHRpb24o
KSkpIHsKICAgICAgICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICAgICAgICAgIGl0ZXJhdG9y
Q2xvc2UoZ2xvYmFsT2JqZWN0LCBpdGVyYXRpb25SZWNvcmQpOworICAgICAgICAgICAgaXRlcmF0
b3JDbG9zZShnbG9iYWxPYmplY3QsIGl0ZXJhdGlvblJlY29yZC5pdGVyYXRvcik7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCmluZGV4IDQ1MTYzMTkzOTkxZDM2MzkzNGJm
ZTkyYTJmOTcyZGQ2YmEwNzNmZTkuLjczZDFiOGY3YjhhNmUwMTRmNjU1YmEzZjc2ZWRjZGYzNzA5
NzQ0NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNs
b3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkVycm9ySGFuZGxpbmdTY29w
ZS5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkZ1enouaCIKICNpbmNsdWRlICJGcmFtZVRyYWNlcnMu
aCIKKyNpbmNsdWRlICJJdGVyYXRvck9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJKU0FycmF5SXRl
cmF0b3IuaCIKICNpbmNsdWRlICJKU0FzeW5jR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNDSW5s
aW5lcy5oIgpAQCAtODYzLDM3ICs4NjQsMTkgQEAgQUxXQVlTX0lOTElORSBTbG93UGF0aFJldHVy
blR5cGUgaXRlcmF0b3JPcGVuVHJ5RmFzdEltcGwoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIGMKICAg
ICBKU1ZhbHVlIHN5bWJvbEl0ZXJhdG9yID0gR0VUX0MoYnl0ZWNvZGUubV9zeW1ib2xJdGVyYXRv
cikuanNWYWx1ZSgpOwogICAgIGF1dG8mIGl0ZXJhdG9yID0gR0VUKGJ5dGVjb2RlLm1faXRlcmF0
b3IpOwogCi0gICAgYXV0byBwcmVwYXJlRm9yRmFzdEFycmF5SXRlcmF0aW9uID0gWyZdIHsKLSAg
ICAgICAgaWYgKCFnbG9iYWxPYmplY3QtPmFycmF5SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnRT
ZXQoKS5pc1N0aWxsVmFsaWQoKSkKLSAgICAgICAgICAgIHJldHVybiBJdGVyYXRpb25Nb2RlOjpH
ZW5lcmljOwotCi0gICAgICAgIC8vIFRoaXMgaXMgY29ycmVjdCBiZWNhdXNlIHdlIGp1c3QgY2hl
Y2tlZCB0aGUgd2F0Y2hwb2ludCBpcyBzdGlsbCB2YWxpZC4KLSAgICAgICAgSlNGdW5jdGlvbiog
c3ltYm9sSXRlcmF0b3JGdW5jdGlvbiA9IGpzRHluYW1pY0Nhc3Q8SlNGdW5jdGlvbio+KHZtLCBz
eW1ib2xJdGVyYXRvcik7Ci0gICAgICAgIGlmICghc3ltYm9sSXRlcmF0b3JGdW5jdGlvbikKLSAg
ICAgICAgICAgIHJldHVybiBJdGVyYXRpb25Nb2RlOjpHZW5lcmljOyAKLQotICAgICAgICAvLyBX
ZSBkb24ndCB3YW50IHRvIGFsbG9jYXRlIHRoZSB2YWx1ZXMgZnVuY3Rpb24ganVzdCB0byBjaGVj
ayBpZiBpdCdzIHRoZSBzYW1lIGFzIG91ciBmdW5jdGlvbiBhdCBzbyB3ZSB1c2UgdGhlIGNvbmN1
cnJlbnQgYWNjZXNzb3IuCi0gICAgICAgIC8vIEZJWE1FOiBUaGlzIG9ubHkgd29ya3MgZm9yIGFy
cmF5cyBmcm9tIHRoZSBzYW1lIGdsb2JhbCBvYmplY3QgYXMgb3Vyc2VsdmVzIGJ1dCB3ZSBzaG91
bGQgYmUgYWJsZSB0byBzdXBwb3J0IGFueSBwYWlyaW5nLgotICAgICAgICBpZiAoZ2xvYmFsT2Jq
ZWN0LT5hcnJheVByb3RvVmFsdWVzRnVuY3Rpb25Db25jdXJyZW50bHkoKSAhPSBzeW1ib2xJdGVy
YXRvckZ1bmN0aW9uKQotICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvbk1vZGU6OkdlbmVyaWM7
Ci0KKyAgICBpZiAocHJlcGFyZUZvckZhc3RBcnJheUl0ZXJhdGlvbih2bSwgZ2xvYmFsT2JqZWN0
LCBpdGVyYWJsZSwgc3ltYm9sSXRlcmF0b3IpID09IEl0ZXJhdGlvbk1vZGU6OkZhc3RBcnJheSkg
ewogICAgICAgICAvLyBXZSBzaG91bGQgYmUgZ29vZCB0byBnby4KICAgICAgICAgbWV0YWRhdGEu
bV9pdGVyYXRpb25NZXRhZGF0YS5zZWVuTW9kZXMgPSBtZXRhZGF0YS5tX2l0ZXJhdGlvbk1ldGFk
YXRhLnNlZW5Nb2RlcyB8IEl0ZXJhdGlvbk1vZGU6OkZhc3RBcnJheTsKICAgICAgICAgR0VUKGJ5
dGVjb2RlLm1fbmV4dCkgPSBKU1ZhbHVlKCk7CiAgICAgICAgIGF1dG8qIGl0ZXJhdGVkT2JqZWN0
ID0ganNDYXN0PEpTT2JqZWN0Kj4oaXRlcmFibGUpOwogICAgICAgICBpdGVyYXRvciA9IEpTQXJy
YXlJdGVyYXRvcjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPmFycmF5SXRlcmF0b3JTdHJ1Y3R1
cmUoKSwgaXRlcmF0ZWRPYmplY3QsIEl0ZXJhdGlvbktpbmQ6OlZhbHVlcyk7CiAgICAgICAgIFBS
T0ZJTEVfVkFMVUVfSU4oaXRlcmF0b3IuanNWYWx1ZSgpLCBtX2l0ZXJhdG9yUHJvZmlsZSk7Ci0g
ICAgICAgIHJldHVybiBJdGVyYXRpb25Nb2RlOjpGYXN0QXJyYXk7Ci0gICAgfTsKLQotICAgIGlm
IChpdGVyYWJsZS5pbmhlcml0czxKU0FycmF5Pih2bSkpIHsKLSAgICAgICAgaWYgKHByZXBhcmVG
b3JGYXN0QXJyYXlJdGVyYXRpb24oKSA9PSBJdGVyYXRpb25Nb2RlOjpGYXN0QXJyYXkpCi0gICAg
ICAgICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KHBjLCByZWludGVycHJldF9jYXN0PHZvaWQqPihJ
dGVyYXRpb25Nb2RlOjpGYXN0QXJyYXkpKTsKKyAgICAgICAgcmV0dXJuIGVuY29kZVJlc3VsdChw
YywgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8dWludHB0cl90PihJdGVyYXRp
b25Nb2RlOjpGYXN0QXJyYXkpKSk7CiAgICAgfQogCiAgICAgLy8gUmV0dXJuIHRvIHRoZSBieXRl
Y29kZSB0byB0cnkgaW4gZ2VuZXJpYyBtb2RlLgogICAgIG1ldGFkYXRhLm1faXRlcmF0aW9uTWV0
YWRhdGEuc2Vlbk1vZGVzID0gbWV0YWRhdGEubV9pdGVyYXRpb25NZXRhZGF0YS5zZWVuTW9kZXMg
fCBJdGVyYXRpb25Nb2RlOjpHZW5lcmljOwotICAgIHJldHVybiBlbmNvZGVSZXN1bHQocGMsIHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KEl0ZXJhdGlvbk1vZGU6OkdlbmVyaWMpKTsKKyAgICByZXR1
cm4gZW5jb2RlUmVzdWx0KHBjLCByZWludGVycHJldF9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDx1
aW50cHRyX3Q+KEl0ZXJhdGlvbk1vZGU6OkdlbmVyaWMpKSk7CiB9CiAKIEpTQ19ERUZJTkVfQ09N
TU9OX1NMT1dfUEFUSChpdGVyYXRvcl9vcGVuX3RyeV9mYXN0X25hcnJvdykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0l0ZXJhdG9yT3BlcmF0aW9ucy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JdGVyYXRvck9wZXJhdGlvbnMuY3BwCmluZGV4
IDY0MDU0YjgwODc2YTlmMWI0YjcyZjg0ZTZmYWU4MjY3ZWJlMzNjNzkuLjEyMDJjMDE2OTA3MmMz
MjJmYzViOGMwNGZmNjQ4YzFjYzU0NzkzYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0l0ZXJhdG9yT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSXRlcmF0b3JPcGVyYXRpb25zLmNwcApAQCAtODIsNyArODIsNyBAQCBK
U1ZhbHVlIGl0ZXJhdG9yU3RlcChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBJdGVyYXRp
b25SZWNvcmQgaXRlcmF0aW9uUmVjbwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXZvaWQgaXRl
cmF0b3JDbG9zZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBJdGVyYXRpb25SZWNvcmQg
aXRlcmF0aW9uUmVjb3JkKQordm9pZCBpdGVyYXRvckNsb3NlKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTVmFsdWUgaXRlcmF0b3IpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpA
QCAtOTQsNyArOTQsNyBAQCB2b2lkIGl0ZXJhdG9yQ2xvc2UoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSXRlcmF0aW9uUmVjb3JkIGl0ZXJhdGlvblJlY29yZAogICAgICAgICBjYXRjaFNj
b3BlLmNsZWFyRXhjZXB0aW9uKCk7CiAgICAgfQogCi0gICAgSlNWYWx1ZSByZXR1cm5GdW5jdGlv
biA9IGl0ZXJhdGlvblJlY29yZC5pdGVyYXRvci5nZXQoZ2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0
eU5hbWVzLT5yZXR1cm5LZXl3b3JkKTsKKyAgICBKU1ZhbHVlIHJldHVybkZ1bmN0aW9uID0gaXRl
cmF0b3IuZ2V0KGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+cmV0dXJuS2V5d29yZCk7
CiAgICAgaWYgKFVOTElLRUxZKHRocm93U2NvcGUuZXhjZXB0aW9uKCkpIHx8IHJldHVybkZ1bmN0
aW9uLmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKICAgICAgICAgaWYgKGV4Y2VwdGlvbikKICAgICAg
ICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgZXhjZXB0aW9u
KTsKQEAgLTExMiw3ICsxMTIsNyBAQCB2b2lkIGl0ZXJhdG9yQ2xvc2UoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSXRlcmF0aW9uUmVjb3JkIGl0ZXJhdGlvblJlY29yZAogCiAgICAgTWFy
a2VkQXJndW1lbnRCdWZmZXIgcmV0dXJuRnVuY3Rpb25Bcmd1bWVudHM7CiAgICAgQVNTRVJUKCFy
ZXR1cm5GdW5jdGlvbkFyZ3VtZW50cy5oYXNPdmVyZmxvd2VkKCkpOwotICAgIEpTVmFsdWUgaW5u
ZXJSZXN1bHQgPSBjYWxsKGdsb2JhbE9iamVjdCwgcmV0dXJuRnVuY3Rpb24sIHJldHVybkZ1bmN0
aW9uQ2FsbERhdGEsIGl0ZXJhdGlvblJlY29yZC5pdGVyYXRvciwgcmV0dXJuRnVuY3Rpb25Bcmd1
bWVudHMpOworICAgIEpTVmFsdWUgaW5uZXJSZXN1bHQgPSBjYWxsKGdsb2JhbE9iamVjdCwgcmV0
dXJuRnVuY3Rpb24sIHJldHVybkZ1bmN0aW9uQ2FsbERhdGEsIGl0ZXJhdG9yLCByZXR1cm5GdW5j
dGlvbkFyZ3VtZW50cyk7CiAKICAgICBpZiAoZXhjZXB0aW9uKSB7CiAgICAgICAgIHRocm93RXhj
ZXB0aW9uKGdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgZXhjZXB0aW9uKTsKQEAgLTIzMyw0ICsy
MzMsNDggQEAgSXRlcmF0aW9uUmVjb3JkIGl0ZXJhdG9yRm9ySXRlcmFibGUoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBpdGVyYWIKICAgICByZXR1cm4geyBpdGVyYXRvciwg
bmV4dE1ldGhvZCB9OwogfQogCitJdGVyYXRpb25Nb2RlIHByZXBhcmVGb3JGYXN0QXJyYXlJdGVy
YXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGl0ZXJh
YmxlLCBKU1ZhbHVlIHN5bWJvbEl0ZXJhdG9yKQoreworICAgIGlmICghaXRlcmFibGUuaW5oZXJp
dHM8SlNBcnJheT4odm0pKQorICAgICAgICByZXR1cm4gSXRlcmF0aW9uTW9kZTo6R2VuZXJpYzsK
KworICAgIGlmICghZ2xvYmFsT2JqZWN0LT5hcnJheUl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50
U2V0KCkuaXNTdGlsbFZhbGlkKCkpCisgICAgICAgIHJldHVybiBJdGVyYXRpb25Nb2RlOjpHZW5l
cmljOworCisgICAgLy8gVGhpcyBpcyBjb3JyZWN0IGJlY2F1c2Ugd2UganVzdCBjaGVja2VkIHRo
ZSB3YXRjaHBvaW50IGlzIHN0aWxsIHZhbGlkLgorICAgIEpTRnVuY3Rpb24qIHN5bWJvbEl0ZXJh
dG9yRnVuY3Rpb24gPSBqc0R5bmFtaWNDYXN0PEpTRnVuY3Rpb24qPih2bSwgc3ltYm9sSXRlcmF0
b3IpOworICAgIGlmICghc3ltYm9sSXRlcmF0b3JGdW5jdGlvbikKKyAgICAgICAgcmV0dXJuIEl0
ZXJhdGlvbk1vZGU6OkdlbmVyaWM7CisKKyAgICAvLyBXZSBkb24ndCB3YW50IHRvIGFsbG9jYXRl
IHRoZSB2YWx1ZXMgZnVuY3Rpb24ganVzdCB0byBjaGVjayBpZiBpdCdzIHRoZSBzYW1lIGFzIG91
ciBmdW5jdGlvbiBhdCBzbyB3ZSB1c2UgdGhlIGNvbmN1cnJlbnQgYWNjZXNzb3IuCisgICAgLy8g
RklYTUU6IFRoaXMgb25seSB3b3JrcyBmb3IgYXJyYXlzIGZyb20gdGhlIHNhbWUgZ2xvYmFsIG9i
amVjdCBhcyBvdXJzZWx2ZXMgYnV0IHdlIHNob3VsZCBiZSBhYmxlIHRvIHN1cHBvcnQgYW55IHBh
aXJpbmcuCisgICAgaWYgKGdsb2JhbE9iamVjdC0+YXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9uQ29u
Y3VycmVudGx5KCkgIT0gc3ltYm9sSXRlcmF0b3JGdW5jdGlvbikKKyAgICAgICAgcmV0dXJuIEl0
ZXJhdGlvbk1vZGU6OkdlbmVyaWM7CisKKyAgICByZXR1cm4gSXRlcmF0aW9uTW9kZTo6RmFzdEFy
cmF5OworfQorCitJdGVyYXRpb25Nb2RlIHByZXBhcmVGb3JGYXN0QXJyYXlJdGVyYXRpb24oVk0m
IHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGl0ZXJhYmxlKQorewor
ICAgIGlmICghaXRlcmFibGUuaW5oZXJpdHM8SlNBcnJheT4odm0pKQorICAgICAgICByZXR1cm4g
SXRlcmF0aW9uTW9kZTo6R2VuZXJpYzsKKworICAgIEpTQXJyYXkqIGFycmF5ID0ganNDYXN0PEpT
QXJyYXkqPihpdGVyYWJsZSk7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBhcnJheS0+c3Ry
dWN0dXJlKHZtKTsKKyAgICAvLyBGSVhNRTogV2Ugd2FudCB0byBzdXBwb3J0IGJyb2FkZXIgSlNB
cnJheXMgc28gbG9uZyBhcyBhcnJheVtAQGl0ZXJhdG9yXSBpcyBub3QgZGVmaW5lZC4KKyAgICBp
ZiAoIWdsb2JhbE9iamVjdC0+aXNPcmlnaW5hbEFycmF5U3RydWN0dXJlKHN0cnVjdHVyZSkpCisg
ICAgICAgIHJldHVybiBJdGVyYXRpb25Nb2RlOjpHZW5lcmljOworCisgICAgaWYgKCFnbG9iYWxP
YmplY3QtPmFycmF5SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnRTZXQoKS5pc1N0aWxsVmFsaWQo
KSkKKyAgICAgICAgcmV0dXJuIEl0ZXJhdGlvbk1vZGU6OkdlbmVyaWM7CisKKyAgICAvLyBOb3cs
IEFycmF5IGhhcyBvcmlnaW5hbCBBcnJheSBTdHJ1Y3R1cmVzIGFuZCBhcnJheUl0ZXJhdG9yUHJv
dG9jb2xXYXRjaHBvaW50U2V0IGlzIG5vdCBmaXJlZC4KKyAgICAvLyBUaGlzIG1lYW5zLAorICAg
IC8vIDEuIEFycmF5LnByb3RvdHlwZSBpcyBbW1Byb3RvdHlwZV1dLgorICAgIC8vIDIuIGFycmF5
W0BAaXRlcmF0b3JdIGlzIG5vdCBvdmVycmlkZGVuLgorICAgIC8vIDMuIEFycmF5LnByb3RvdHlw
ZVtAQGl0ZXJhdG9yXSBpcyBhbiBleHBlY3RlZCBvbmUuCisgICAgLy8gU28sIHdlIGNhbiBzYXkg
dGhpcyB3aWxsIGNyZWF0ZSBhbiBleHBlY3RlZCBBcnJheUl0ZXJhdG9yLgorICAgIHJldHVybiBJ
dGVyYXRpb25Nb2RlOjpGYXN0QXJyYXk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSXRlcmF0b3JPcGVyYXRpb25zLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JdGVyYXRvck9wZXJhdGlvbnMuaAppbmRl
eCAwMWNkMzFjNDkxNmMwYjVhNTU4OTcwN2Q5NTQzN2Y3M2RmYzUzZGIyLi5hN2JhZWNmNjc1ZWEw
NTI3MzIxMjkxMGZlOGIwZGM3ZGRhNDk1NzEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JdGVyYXRvck9wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JdGVyYXRvck9wZXJhdGlvbnMuaApAQCAtMjYsNiArMjYsOCBAQAogCiAj
cHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkl0ZXJhdGlvbk1vZGVNZXRhZGF0YS5oIgorI2luY2x1
ZGUgIkpTQXJyYXlJdGVyYXRvci5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKICNpbmNsdWRl
ICJKU09iamVjdC5oIgogI2luY2x1ZGUgIlRocm93U2NvcGUuaCIKQEAgLTQxLDcgKzQzLDcgQEAg
SlNWYWx1ZSBpdGVyYXRvck5leHQoSlNHbG9iYWxPYmplY3QqLCBJdGVyYXRpb25SZWNvcmQsIEpT
VmFsdWUgYXJndW1lbnQgPSBKU1ZhbHUKIEpTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgaXRlcmF0
b3JWYWx1ZShKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgaXRlclJlc3VsdCk7CiBib29sIGl0ZXJh
dG9yQ29tcGxldGUoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIGl0ZXJSZXN1bHQpOwogSlNfRVhQ
T1JUX1BSSVZBVEUgSlNWYWx1ZSBpdGVyYXRvclN0ZXAoSlNHbG9iYWxPYmplY3QqLCBJdGVyYXRp
b25SZWNvcmQpOwotSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBpdGVyYXRvckNsb3NlKEpTR2xvYmFs
T2JqZWN0KiwgSXRlcmF0aW9uUmVjb3JkKTsKK0pTX0VYUE9SVF9QUklWQVRFIHZvaWQgaXRlcmF0
b3JDbG9zZShKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgaXRlcmF0b3IpOwogSlNfRVhQT1JUX1BS
SVZBVEUgSlNPYmplY3QqIGNyZWF0ZUl0ZXJhdG9yUmVzdWx0T2JqZWN0KEpTR2xvYmFsT2JqZWN0
KiwgSlNWYWx1ZSwgYm9vbCBkb25lKTsKIAogU3RydWN0dXJlKiBjcmVhdGVJdGVyYXRvclJlc3Vs
dE9iamVjdFN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0Jik7CkBAIC01MywxMiArNTUsMzIg
QEAgSlNfRVhQT1JUX1BSSVZBVEUgSXRlcmF0aW9uUmVjb3JkIGl0ZXJhdG9yRm9ySXRlcmFibGUo
SlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIGkKIEpTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgaXRl
cmF0b3JNZXRob2QoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCopOwogSlNfRVhQT1JUX1BSSVZB
VEUgYm9vbCBoYXNJdGVyYXRvck1ldGhvZChKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOwogCitJ
dGVyYXRpb25Nb2RlIHByZXBhcmVGb3JGYXN0QXJyYXlJdGVyYXRpb24oVk0mLCBKU0dsb2JhbE9i
amVjdCosIEpTVmFsdWUgaXRlcmFibGUpOworSXRlcmF0aW9uTW9kZSBwcmVwYXJlRm9yRmFzdEFy
cmF5SXRlcmF0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIGl0ZXJhYmxlLCBKU1Zh
bHVlIHN5bWJvbEl0ZXJhdG9yKTsKKwogdGVtcGxhdGU8dHlwZW5hbWUgQ2FsbEJhY2tUeXBlPgog
dm9pZCBmb3JFYWNoSW5JdGVyYWJsZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Zh
bHVlIGl0ZXJhYmxlLCBjb25zdCBDYWxsQmFja1R5cGUmIGNhbGxiYWNrKQogewogICAgIGF1dG8m
IHZtID0gZ2V0Vk0oZ2xvYmFsT2JqZWN0KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAKKyAgICBpZiAocHJlcGFyZUZvckZhc3RBcnJheUl0ZXJhdGlvbih2bSwg
Z2xvYmFsT2JqZWN0LCBpdGVyYWJsZSkgPT0gSXRlcmF0aW9uTW9kZTo6RmFzdEFycmF5KSB7Cisg
ICAgICAgIGF1dG8qIGFycmF5ID0ganNDYXN0PEpTQXJyYXkqPihpdGVyYWJsZSk7CisgICAgICAg
IGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8IGFycmF5LT5sZW5ndGgoKTsgKytpbmRl
eCkgeworICAgICAgICAgICAgSlNWYWx1ZSBuZXh0VmFsdWUgPSBhcnJheS0+Z2V0SW5kZXgoZ2xv
YmFsT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5kZXgpKTsKKyAgICAgICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisgICAgICAgICAgICBjYWxsYmFjayh2
bSwgZ2xvYmFsT2JqZWN0LCBuZXh0VmFsdWUpOworICAgICAgICAgICAgaWYgKFVOTElLRUxZKHNj
b3BlLmV4Y2VwdGlvbigpKSkgeworICAgICAgICAgICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKKyAg
ICAgICAgICAgICAgICBKU0FycmF5SXRlcmF0b3IqIGl0ZXJhdG9yID0gSlNBcnJheUl0ZXJhdG9y
OjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+YXJyYXlJdGVyYXRvclN0cnVjdHVyZSgpLCBhcnJh
eSwgSXRlcmF0aW9uS2luZDo6VmFsdWVzKTsKKyAgICAgICAgICAgICAgICBpdGVyYXRvci0+aW50
ZXJuYWxGaWVsZChKU0FycmF5SXRlcmF0b3I6OkZpZWxkOjpJbmRleCkuc2V0V2l0aG91dFdyaXRl
QmFycmllcihqc051bWJlcihpbmRleCArIDEpKTsKKyAgICAgICAgICAgICAgICBpdGVyYXRvckNs
b3NlKGdsb2JhbE9iamVjdCwgaXRlcmF0b3IpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgSXRl
cmF0aW9uUmVjb3JkIGl0ZXJhdGlvblJlY29yZCA9IGl0ZXJhdG9yRm9ySXRlcmFibGUoZ2xvYmFs
T2JqZWN0LCBpdGVyYWJsZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgp
KTsKICAgICB3aGlsZSAodHJ1ZSkgewpAQCAtNzIsNyArOTQsNyBAQCB2b2lkIGZvckVhY2hJbkl0
ZXJhYmxlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgaXRlcmFibGUsIGNv
bnN0IENhbAogICAgICAgICBjYWxsYmFjayh2bSwgZ2xvYmFsT2JqZWN0LCBuZXh0VmFsdWUpOwog
ICAgICAgICBpZiAoVU5MSUtFTFkoc2NvcGUuZXhjZXB0aW9uKCkpKSB7CiAgICAgICAgICAgICBz
Y29wZS5yZWxlYXNlKCk7Ci0gICAgICAgICAgICBpdGVyYXRvckNsb3NlKGdsb2JhbE9iamVjdCwg
aXRlcmF0aW9uUmVjb3JkKTsKKyAgICAgICAgICAgIGl0ZXJhdG9yQ2xvc2UoZ2xvYmFsT2JqZWN0
LCBpdGVyYXRpb25SZWNvcmQuaXRlcmF0b3IpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAgICAgfQpAQCAtODQsNiArMTA2LDIzIEBAIHZvaWQgZm9yRWFjaEluSXRlcmFibGUoSlNH
bG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIGl0ZXJhYmxlLCBKU1ZhbHVlCiAg
ICAgYXV0byYgdm0gPSBnZXRWTSgmZ2xvYmFsT2JqZWN0KTsKICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAKKyAgICBpZiAocHJlcGFyZUZvckZhc3RBcnJheUl0ZXJh
dGlvbih2bSwgJmdsb2JhbE9iamVjdCwgaXRlcmFibGUsIGl0ZXJhdG9yTWV0aG9kKSA9PSBJdGVy
YXRpb25Nb2RlOjpGYXN0QXJyYXkpIHsKKyAgICAgICAgYXV0byogYXJyYXkgPSBqc0Nhc3Q8SlNB
cnJheSo+KGl0ZXJhYmxlKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4
IDwgYXJyYXktPmxlbmd0aCgpOyArK2luZGV4KSB7CisgICAgICAgICAgICBKU1ZhbHVlIG5leHRW
YWx1ZSA9IGFycmF5LT5nZXRJbmRleCgmZ2xvYmFsT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oaW5kZXgpKTsKKyAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQo
KSk7CisgICAgICAgICAgICBjYWxsYmFjayh2bSwgZ2xvYmFsT2JqZWN0LCBuZXh0VmFsdWUpOwor
ICAgICAgICAgICAgaWYgKFVOTElLRUxZKHNjb3BlLmV4Y2VwdGlvbigpKSkgeworICAgICAgICAg
ICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKKyAgICAgICAgICAgICAgICBKU0FycmF5SXRlcmF0b3Iq
IGl0ZXJhdG9yID0gSlNBcnJheUl0ZXJhdG9yOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdC5hcnJh
eUl0ZXJhdG9yU3RydWN0dXJlKCksIGFycmF5LCBJdGVyYXRpb25LaW5kOjpWYWx1ZXMpOworICAg
ICAgICAgICAgICAgIGl0ZXJhdG9yLT5pbnRlcm5hbEZpZWxkKEpTQXJyYXlJdGVyYXRvcjo6Rmll
bGQ6OkluZGV4KS5zZXRXaXRob3V0V3JpdGVCYXJyaWVyKGpzTnVtYmVyKGluZGV4ICsgMSkpOwor
ICAgICAgICAgICAgICAgIGl0ZXJhdG9yQ2xvc2UoJmdsb2JhbE9iamVjdCwgaXRlcmF0b3IpOwor
ICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAg
ICByZXR1cm47CisgICAgfQorCiAgICAgYXV0byBpdGVyYXRpb25SZWNvcmQgPSBpdGVyYXRvckZv
ckl0ZXJhYmxlKCZnbG9iYWxPYmplY3QsIGl0ZXJhYmxlLCBpdGVyYXRvck1ldGhvZCk7CiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKICAgICB3aGlsZSAodHJ1ZSkgewpA
QCAtOTcsNyArMTM2LDcgQEAgdm9pZCBmb3JFYWNoSW5JdGVyYWJsZShKU0dsb2JhbE9iamVjdCYg
Z2xvYmFsT2JqZWN0LCBKU09iamVjdCogaXRlcmFibGUsIEpTVmFsdWUKICAgICAgICAgY2FsbGJh
Y2sodm0sIGdsb2JhbE9iamVjdCwgbmV4dFZhbHVlKTsKICAgICAgICAgaWYgKFVOTElLRUxZKHNj
b3BlLmV4Y2VwdGlvbigpKSkgewogICAgICAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAg
ICAgICAgaXRlcmF0b3JDbG9zZSgmZ2xvYmFsT2JqZWN0LCBpdGVyYXRpb25SZWNvcmQpOworICAg
ICAgICAgICAgaXRlcmF0b3JDbG9zZSgmZ2xvYmFsT2JqZWN0LCBpdGVyYXRpb25SZWNvcmQuaXRl
cmF0b3IpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0
IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCA2ZDM1ZGU0YWQ0
OWJkZTIxMTRjN2Y3NThkMmM5MTlkYTBiZDE4NTQ5Li40ZDgyOTI5ODg1NTVlMDg1YzkyZGI3YWM1
NzBhZmVhMzE3OTg3MmI2IDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rl
c3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIxLTAyLTA3ICBZdXN1a2UgU3V6dWtp
ICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW0pTQ10gQysrIGl0ZXJhdGlvbiBzaG91
bGQgc3VwcG9ydCBmYXN0IGl0ZXJhdG9yIHByb3RvY29sCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjE1MjYKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIG1pY3JvYmVuY2htYXJrcy9tYXAtY29uc3RydWN0
b3IuanM6IEFkZGVkLgorICAgICAgICAodGVzdCk6CisgICAgICAgICogc3RyZXNzL21hcC1jb25z
dHJ1Y3Rvci1ob2xlLXRocm93LmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAg
ICAgKHNob3VsZFRocm93KToKKyAgICAgICAgKHZhbHVlcy5fX3Byb3RvX18ucmV0dXJuKToKKyAg
ICAgICAgKE1hcC5wcm90b3R5cGUpOgorCiAyMDIxLTAyLTA2ICBBbGV4ZXkgU2h2YXlrYSAgPHNo
dmFpa2FsZXNoQGdtYWlsLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMjY0NTc0KTogVW5j
aGVja2VkIEpTIGV4Y2VwdGlvbiBpbiB2YWxpZGF0ZUFuZEFwcGx5UHJvcGVydHlEZXNjcmlwdG9y
KCkKZGlmZiAtLWdpdCBhL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL21hcC1jb25zdHJ1Y3Rvci5q
cyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL21hcC1jb25zdHJ1Y3Rvci5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5hNmIyMGE2ZmZlMzFhNmM1MTMxYTA4YTkwYjQzNGRiZWEwMGE1MGY2Ci0tLSAvZGV2L251bGwK
KysrIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvbWFwLWNvbnN0cnVjdG9yLmpzCkBAIC0wLDAg
KzEsMzEgQEAKK2Z1bmN0aW9uIHRlc3QoYXJyYXkpCit7CisgICAgcmV0dXJuIG5ldyBNYXAoYXJy
YXkpOworfQorbm9JbmxpbmUodGVzdCk7CisKK3ZhciBhcnJheSA9IFsKKyAgICBbMCwgMF0sCisg
ICAgWzEsIDBdLAorICAgIFsyLCAwXSwKKyAgICBbMywgMF0sCisgICAgWzQsIDBdLAorICAgIFs1
LCAwXSwKKyAgICBbNiwgMF0sCisgICAgWzcsIDBdLAorICAgIFs4LCAwXSwKKyAgICBbOSwgMF0s
CisgICAgWzEwLCAwXSwKKyAgICBbMTEsIDBdLAorICAgIFsxMiwgMF0sCisgICAgWzEzLCAwXSwK
KyAgICBbMTQsIDBdLAorICAgIFsxNSwgMF0sCisgICAgWzE2LCAwXSwKKyAgICBbMTcsIDBdLAor
ICAgIFsxOCwgMF0sCisgICAgWzE5LCAwXSwKK107CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWU0
OyArK2kpCisgICAgdGVzdChhcnJheSk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9tYXAt
Y29uc3RydWN0b3ItaG9sZS10aHJvdy5qcyBiL0pTVGVzdHMvc3RyZXNzL21hcC1jb25zdHJ1Y3Rv
ci1ob2xlLXRocm93LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJhM2YwNzZjY2I5ZWE5MDAzYTBhZTgwYzJlNTY2
MTgzMjJiYTNlYTkKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9tYXAtY29uc3Ry
dWN0b3ItaG9sZS10aHJvdy5qcwpAQCAtMCwwICsxLDM4IEBACitmdW5jdGlvbiBzaG91bGRCZShh
Y3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAg
IHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKworZnVuY3Rpb24g
c2hvdWxkVGhyb3coZnVuYywgZXJyb3JNZXNzYWdlKSB7CisgICAgdmFyIGVycm9yVGhyb3duID0g
ZmFsc2U7CisgICAgdmFyIGVycm9yID0gbnVsbDsKKyAgICB0cnkgeworICAgICAgICBmdW5jKCk7
CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBlcnJvclRocm93biA9IHRydWU7CisgICAgICAg
IGVycm9yID0gZTsKKyAgICB9CisgICAgaWYgKCFlcnJvclRocm93bikKKyAgICAgICAgdGhyb3cg
bmV3IEVycm9yKCdub3QgdGhyb3duJyk7CisgICAgaWYgKFN0cmluZyhlcnJvcikgIT09IGVycm9y
TWVzc2FnZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgZXJyb3I6ICR7U3RyaW5nKGVy
cm9yKX1gKTsKK30KKwordmFyIGl0ZXJhdG9yOworW10udmFsdWVzKCkuX19wcm90b19fLnJldHVy
biA9IGZ1bmN0aW9uICgpIHsKKyAgICBpdGVyYXRvciA9IHRoaXM7Cit9OworCit2YXIgYXJyYXkg
PSBbCisgICAgWzAsIDBdLAorICAgIFsxLCAwXSwKKyAgICBbMiwgMF0sCitdOworTWFwLnByb3Rv
dHlwZS5zZXQgPSBmdW5jdGlvbiAoKSB7CisgICAgdGhyb3cgbmV3IEVycm9yKCJvayIpOworfTsK
K3Nob3VsZFRocm93KCgpID0+IHsKKyAgICB2YXIgbWFwID0gbmV3IE1hcChhcnJheSk7Cit9LCBg
RXJyb3I6IG9rYCk7CitzaG91bGRCZShpdGVyYXRvciAhPT0gdW5kZWZpbmVkLCB0cnVlKTsKKwo=
</data>
<flag name="commit-queue"
          id="437786"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>419532</attachid>
            <date>2021-02-07 02:48:44 -0800</date>
            <delta_ts>2021-02-07 03:05:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221526-20210207024843.patch</filename>
            <type>text/plain</type>
            <size>19212</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyNDcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
NjhmOWU5YzJiOTMxYzhkODEzNDA3MDY5NDExOWNhOTI2YWE0MDc3Li5jNTkzYzJiNDZiNWFlMDkx
YzBmMGEwNDg3ZTE2MTg4M2VmYWYwMDY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNCBAQAorMjAyMS0wMi0wNyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEMrKyBpdGVyYXRpb24gc2hvdWxkIHN1cHBvcnQgZmFzdCBpdGVy
YXRvciBwcm90b2NvbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjIxNTI2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVGhpcyBwYXRjaCBhZGRzIGZhc3QgaXRlcmF0aW9uIHByb3RvY29sIHN1cHBvcnQgaW4g
QysrIGl0ZXJhdGlvbiAoZm9yRWFjaEl0ZXJhYmxlKS4KKyAgICAgICAgSW4gSlMsIHdlIGhhdmUg
b3BfaXRlcmF0b3Jfb3BlbiAvIG9wX2l0ZXJhdG9yX25leHQgdG8gaXRlcmF0ZSBhcnJheSBxdWlj
a2x5LgorICAgICAgICBCdXQgd2UgZG8gbm90IHVzZSB0aGlzIGZlYXR1cmUgaW4gQysrIGZvckVh
Y2hJdGVyYWJsZS4gSW4gdGhpcyBwYXRjaCB3ZSBpbnRlZ3JhdGUKKyAgICAgICAgdGhlIHNhbWUg
KG9yIGEgYml0IG1vcmUgZWZmaWNpZW50IHNpbmNlIHdlIGNhbiBhdm9pZCBjcmVhdGluZyBKU0Fy
cmF5SXRlcmF0b3IpIG1lY2hhbmlzbQorICAgICAgICBzbyB0aGF0IGl0ZXJhdGlvbiBpbiBDKysg
Z2V0cyBmYXN0ZXIgZm9yIG5vcm1hbCBhcnJheXMuCisKKyAgICAgICAgV2Ugb2JzZXJ2ZWQgMS45
eCBmYXN0ZXIgaW4gTWFwIGNyZWF0aW9uIHdpdGggYXJyYXlzLgorCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVG9UICAgICAgICAgICAgICAgICAgICAgUGF0Y2hlZAor
CisgICAgICAgICAgICBtYXAtY29uc3RydWN0b3IgICAgICAgMzUuNzQ0NistMC4yMzU0ICAgICBe
ICAgICAxOC43NTE2Ky0wLjQ1MzQgICAgICAgIF4gZGVmaW5pdGVseSAxLjkwNjJ4IGZhc3Rlcgor
CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBpbnNwZWN0b3IvSlNJbmplY3RlZFNj
cmlwdEhvc3QuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpKU0luamVjdGVkU2NyaXB0SG9zdDo6
aXRlcmF0b3JFbnRyaWVzKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHA6
CisgICAgICAgIChKU0M6Oml0ZXJhdG9yT3BlblRyeUZhc3RJbXBsKToKKyAgICAgICAgKiBydW50
aW1lL0l0ZXJhdG9yT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6Oml0ZXJhdG9yQ2xvc2Up
OgorICAgICAgICAoSlNDOjpwcmVwYXJlRm9yRmFzdEFycmF5SXRlcmF0aW9uKToKKyAgICAgICAg
KiBydW50aW1lL0l0ZXJhdG9yT3BlcmF0aW9ucy5oOgorICAgICAgICAoSlNDOjpmb3JFYWNoSW5J
dGVyYWJsZSk6CisKIDIwMjEtMDItMDYgIEFsZXhleSBTaHZheWthICA8c2h2YWlrYWxlc2hAZ21h
aWwuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIyNjQ1NzQpOiBVbmNoZWNrZWQgSlMgZXhj
ZXB0aW9uIGluIHZhbGlkYXRlQW5kQXBwbHlQcm9wZXJ0eURlc2NyaXB0b3IoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDRkZjhhMjUwYzBjOWJkMjIzZTU2ODZhZDdjNWY2
N2Y5YTAxMGU3ODAuLjI1MmQ0YmNjNThlYzkxNjJmMzJjYWM5ZTJiZjgzNGE5NjgwODMyZGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTkyMiw2ICs5MjIsNyBAQCBzZXQo
SmF2YVNjcmlwdENvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHJ1bnRpbWUvSlNB
cnJheUJ1ZmZlclByb3RvdHlwZS5oCiAgICAgcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5oCiAg
ICAgcnVudGltZS9KU0FycmF5QnVmZmVyVmlld0lubGluZXMuaAorICAgIHJ1bnRpbWUvSlNBcnJh
eUl0ZXJhdG9yLmgKICAgICBydW50aW1lL0pTQmlnSW50LmgKICAgICBydW50aW1lL0pTQ0NvbmZp
Zy5oCiAgICAgcnVudGltZS9KU0NJbmxpbmVzLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggZDkyMTI3ZmNkNGY4ZDZhZTg2NDk3ZDk4YzZlYzFhMzU3ZWEwMzJkMC4uNTcwNGU0Mjc3
MzM5NTA5YjIxOGEyZWUyMmQyY2JjMWU2MTAyODMwZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTEwOTcsNyArMTA5Nyw3IEBACiAJCTUzOTkzMEM4MjJBRDNCOUEwMDUxQ0RFMiAv
KiBXZWFrT2JqZWN0UmVmQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUzOTkzMEM3MjJBRDNCOUEwMDUxQ0RFMiAvKiBXZWFrT2JqZWN0
UmVmQ29uc3RydWN0b3IuaCAqLzsgfTsKIAkJNTM5QkZCQUUyMkFEM0MzQTAwMjNGNEMwIC8qIFdl
YWtPYmplY3RSZWZQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUzOUJGQkFEMjJBRDNDM0EwMDIzRjRDMCAvKiBXZWFrT2JqZWN0UmVmUHJv
dG90eXBlLmggKi87IH07CiAJCTUzOUJGQkIwMjJBRDNDREMwMDIzRjRDMCAvKiBKU1dlYWtPYmpl
Y3RSZWYuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUz
OUJGQkFGMjJBRDNDREMwMDIzRjRDMCAvKiBKU1dlYWtPYmplY3RSZWYuaCAqLzsgfTsKLQkJNTM5
REQ3RjUyM0MxQkJCNTAwOTA1RjEzIC8qIEpTQXJyYXlJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM5REQ3RjQyM0MxQkJBOTAwOTA1RjEz
IC8qIEpTQXJyYXlJdGVyYXRvci5oICovOyB9OworCQk1MzlERDdGNTIzQzFCQkI1MDA5MDVGMTMg
LyogSlNBcnJheUl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MzlERDdGNDIzQzFCQkE5MDA5MDVGMTMgLyogSlNBcnJheUl0ZXJhdG9yLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTM5RkI4
QkExQzk5REE3QzAwOTQwRkExIC8qIEpTQXJyYXlJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzlGQjhCOTFDOTlEQTdDMDA5NDBGQTEgLyog
SlNBcnJheUlubGluZXMuaCAqLzsgfTsKIAkJNTNCNEJEMTIxRjY4QjMyNTAwRDJCRUEzIC8qIFdh
c21PcHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUz
M0IxNURFMURDN0Y0NjMwMDRENTAwQSAvKiBXYXNtT3BzLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTNCNjAxRUMyMDM0QjhDNTAwNkJFNjY3IC8q
IEpTQ2FzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTNCNjAxRUIyMDM0QjhDNTAwNkJFNjY3IC8qIEpTQ2FzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3QuY3BwCmluZGV4IGE5OGJkODZi
ZDYwN2UyMmI0OGRkMDEyZDZjODZkNzc3NzY0MThjYjYuLjk4NjlmMWRhMGI1ZmVmODM2NDkzMWI0
M2FmZTJjYTIzOGQyZWM1NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3QuY3BwCkBAIC02MTMsNyArNjEzLDcgQEAg
SlNWYWx1ZSBKU0luamVjdGVkU2NyaXB0SG9zdDo6aXRlcmF0b3JFbnRyaWVzKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGwKICAgICAgICAgYXJyYXktPnB1dERpcmVjdEluZGV4KGds
b2JhbE9iamVjdCwgaSwgZW50cnkpOwogICAgICAgICBpZiAoVU5MSUtFTFkoc2NvcGUuZXhjZXB0
aW9uKCkpKSB7CiAgICAgICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgICAgICAgICBpdGVy
YXRvckNsb3NlKGdsb2JhbE9iamVjdCwgaXRlcmF0aW9uUmVjb3JkKTsKKyAgICAgICAgICAgIGl0
ZXJhdG9yQ2xvc2UoZ2xvYmFsT2JqZWN0LCBpdGVyYXRpb25SZWNvcmQuaXRlcmF0b3IpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAppbmRleCA0NTE2MzE5Mzk5MWQzNjM5
MzRiZmU5MmEyZjk3MmRkNmJhMDczZmU5Li43M2QxYjhmN2I4YTZlMDE0ZjY1NWJhM2Y3NmVkY2Rm
MzcwOTc0NDRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21t
b25TbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1v
blNsb3dQYXRocy5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJFcnJvckhhbmRsaW5n
U2NvcGUuaCIKICNpbmNsdWRlICJFeGNlcHRpb25GdXp6LmgiCiAjaW5jbHVkZSAiRnJhbWVUcmFj
ZXJzLmgiCisjaW5jbHVkZSAiSXRlcmF0b3JPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiSlNBcnJh
eUl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNBc3luY0dlbmVyYXRvci5oIgogI2luY2x1ZGUgIkpT
Q0lubGluZXMuaCIKQEAgLTg2MywzNyArODY0LDE5IEBAIEFMV0FZU19JTkxJTkUgU2xvd1BhdGhS
ZXR1cm5UeXBlIGl0ZXJhdG9yT3BlblRyeUZhc3RJbXBsKENhbGxGcmFtZSogY2FsbEZyYW1lLCBj
CiAgICAgSlNWYWx1ZSBzeW1ib2xJdGVyYXRvciA9IEdFVF9DKGJ5dGVjb2RlLm1fc3ltYm9sSXRl
cmF0b3IpLmpzVmFsdWUoKTsKICAgICBhdXRvJiBpdGVyYXRvciA9IEdFVChieXRlY29kZS5tX2l0
ZXJhdG9yKTsKIAotICAgIGF1dG8gcHJlcGFyZUZvckZhc3RBcnJheUl0ZXJhdGlvbiA9IFsmXSB7
Ci0gICAgICAgIGlmICghZ2xvYmFsT2JqZWN0LT5hcnJheUl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBv
aW50U2V0KCkuaXNTdGlsbFZhbGlkKCkpCi0gICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uTW9k
ZTo6R2VuZXJpYzsKLQotICAgICAgICAvLyBUaGlzIGlzIGNvcnJlY3QgYmVjYXVzZSB3ZSBqdXN0
IGNoZWNrZWQgdGhlIHdhdGNocG9pbnQgaXMgc3RpbGwgdmFsaWQuCi0gICAgICAgIEpTRnVuY3Rp
b24qIHN5bWJvbEl0ZXJhdG9yRnVuY3Rpb24gPSBqc0R5bmFtaWNDYXN0PEpTRnVuY3Rpb24qPih2
bSwgc3ltYm9sSXRlcmF0b3IpOwotICAgICAgICBpZiAoIXN5bWJvbEl0ZXJhdG9yRnVuY3Rpb24p
Ci0gICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uTW9kZTo6R2VuZXJpYzsgCi0KLSAgICAgICAg
Ly8gV2UgZG9uJ3Qgd2FudCB0byBhbGxvY2F0ZSB0aGUgdmFsdWVzIGZ1bmN0aW9uIGp1c3QgdG8g
Y2hlY2sgaWYgaXQncyB0aGUgc2FtZSBhcyBvdXIgZnVuY3Rpb24gYXQgc28gd2UgdXNlIHRoZSBj
b25jdXJyZW50IGFjY2Vzc29yLgotICAgICAgICAvLyBGSVhNRTogVGhpcyBvbmx5IHdvcmtzIGZv
ciBhcnJheXMgZnJvbSB0aGUgc2FtZSBnbG9iYWwgb2JqZWN0IGFzIG91cnNlbHZlcyBidXQgd2Ug
c2hvdWxkIGJlIGFibGUgdG8gc3VwcG9ydCBhbnkgcGFpcmluZy4KLSAgICAgICAgaWYgKGdsb2Jh
bE9iamVjdC0+YXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9uQ29uY3VycmVudGx5KCkgIT0gc3ltYm9s
SXRlcmF0b3JGdW5jdGlvbikKLSAgICAgICAgICAgIHJldHVybiBJdGVyYXRpb25Nb2RlOjpHZW5l
cmljOwotCisgICAgaWYgKHByZXBhcmVGb3JGYXN0QXJyYXlJdGVyYXRpb24odm0sIGdsb2JhbE9i
amVjdCwgaXRlcmFibGUsIHN5bWJvbEl0ZXJhdG9yKSA9PSBJdGVyYXRpb25Nb2RlOjpGYXN0QXJy
YXkpIHsKICAgICAgICAgLy8gV2Ugc2hvdWxkIGJlIGdvb2QgdG8gZ28uCiAgICAgICAgIG1ldGFk
YXRhLm1faXRlcmF0aW9uTWV0YWRhdGEuc2Vlbk1vZGVzID0gbWV0YWRhdGEubV9pdGVyYXRpb25N
ZXRhZGF0YS5zZWVuTW9kZXMgfCBJdGVyYXRpb25Nb2RlOjpGYXN0QXJyYXk7CiAgICAgICAgIEdF
VChieXRlY29kZS5tX25leHQpID0gSlNWYWx1ZSgpOwogICAgICAgICBhdXRvKiBpdGVyYXRlZE9i
amVjdCA9IGpzQ2FzdDxKU09iamVjdCo+KGl0ZXJhYmxlKTsKICAgICAgICAgaXRlcmF0b3IgPSBK
U0FycmF5SXRlcmF0b3I6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5hcnJheUl0ZXJhdG9yU3Ry
dWN0dXJlKCksIGl0ZXJhdGVkT2JqZWN0LCBJdGVyYXRpb25LaW5kOjpWYWx1ZXMpOwogICAgICAg
ICBQUk9GSUxFX1ZBTFVFX0lOKGl0ZXJhdG9yLmpzVmFsdWUoKSwgbV9pdGVyYXRvclByb2ZpbGUp
OwotICAgICAgICByZXR1cm4gSXRlcmF0aW9uTW9kZTo6RmFzdEFycmF5OwotICAgIH07Ci0KLSAg
ICBpZiAoaXRlcmFibGUuaW5oZXJpdHM8SlNBcnJheT4odm0pKSB7Ci0gICAgICAgIGlmIChwcmVw
YXJlRm9yRmFzdEFycmF5SXRlcmF0aW9uKCkgPT0gSXRlcmF0aW9uTW9kZTo6RmFzdEFycmF5KQot
ICAgICAgICAgICAgcmV0dXJuIGVuY29kZVJlc3VsdChwYywgcmVpbnRlcnByZXRfY2FzdDx2b2lk
Kj4oSXRlcmF0aW9uTW9kZTo6RmFzdEFycmF5KSk7CisgICAgICAgIHJldHVybiBlbmNvZGVSZXN1
bHQocGMsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oSXRl
cmF0aW9uTW9kZTo6RmFzdEFycmF5KSkpOwogICAgIH0KIAogICAgIC8vIFJldHVybiB0byB0aGUg
Ynl0ZWNvZGUgdG8gdHJ5IGluIGdlbmVyaWMgbW9kZS4KICAgICBtZXRhZGF0YS5tX2l0ZXJhdGlv
bk1ldGFkYXRhLnNlZW5Nb2RlcyA9IG1ldGFkYXRhLm1faXRlcmF0aW9uTWV0YWRhdGEuc2Vlbk1v
ZGVzIHwgSXRlcmF0aW9uTW9kZTo6R2VuZXJpYzsKLSAgICByZXR1cm4gZW5jb2RlUmVzdWx0KHBj
LCByZWludGVycHJldF9jYXN0PHZvaWQqPihJdGVyYXRpb25Nb2RlOjpHZW5lcmljKSk7CisgICAg
cmV0dXJuIGVuY29kZVJlc3VsdChwYywgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oc3RhdGljX2Nh
c3Q8dWludHB0cl90PihJdGVyYXRpb25Nb2RlOjpHZW5lcmljKSkpOwogfQogCiBKU0NfREVGSU5F
X0NPTU1PTl9TTE9XX1BBVEgoaXRlcmF0b3Jfb3Blbl90cnlfZmFzdF9uYXJyb3cpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JdGVyYXRvck9wZXJhdGlvbnMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSXRlcmF0b3JPcGVyYXRpb25zLmNwcApp
bmRleCA2NDA1NGI4MDg3NmE5ZjFiNGI3MmY4NGU2ZmFlODI2N2ViZTMzYzc5Li4xMjAyYzAxNjkw
NzJjMzIyZmM1YjhjMDRmZjY0OGMxY2M1NDc5M2I1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JdGVyYXRvck9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0l0ZXJhdG9yT3BlcmF0aW9ucy5jcHAKQEAgLTgyLDcgKzgyLDcg
QEAgSlNWYWx1ZSBpdGVyYXRvclN0ZXAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSXRl
cmF0aW9uUmVjb3JkIGl0ZXJhdGlvblJlY28KICAgICByZXR1cm4gcmVzdWx0OwogfQogCi12b2lk
IGl0ZXJhdG9yQ2xvc2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSXRlcmF0aW9uUmVj
b3JkIGl0ZXJhdGlvblJlY29yZCkKK3ZvaWQgaXRlcmF0b3JDbG9zZShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGl0ZXJhdG9yKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKQEAgLTk0LDcgKzk0LDcgQEAgdm9pZCBpdGVyYXRvckNsb3NlKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEl0ZXJhdGlvblJlY29yZCBpdGVyYXRpb25SZWNvcmQKICAgICAgICAgY2F0
Y2hTY29wZS5jbGVhckV4Y2VwdGlvbigpOwogICAgIH0KIAotICAgIEpTVmFsdWUgcmV0dXJuRnVu
Y3Rpb24gPSBpdGVyYXRpb25SZWNvcmQuaXRlcmF0b3IuZ2V0KGdsb2JhbE9iamVjdCwgdm0ucHJv
cGVydHlOYW1lcy0+cmV0dXJuS2V5d29yZCk7CisgICAgSlNWYWx1ZSByZXR1cm5GdW5jdGlvbiA9
IGl0ZXJhdG9yLmdldChnbG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPnJldHVybktleXdv
cmQpOwogICAgIGlmIChVTkxJS0VMWSh0aHJvd1Njb3BlLmV4Y2VwdGlvbigpKSB8fCByZXR1cm5G
dW5jdGlvbi5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7CiAgICAgICAgIGlmIChleGNlcHRpb24pCiAg
ICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGV4Y2Vw
dGlvbik7CkBAIC0xMTIsNyArMTEyLDcgQEAgdm9pZCBpdGVyYXRvckNsb3NlKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEl0ZXJhdGlvblJlY29yZCBpdGVyYXRpb25SZWNvcmQKIAogICAg
IE1hcmtlZEFyZ3VtZW50QnVmZmVyIHJldHVybkZ1bmN0aW9uQXJndW1lbnRzOwogICAgIEFTU0VS
VCghcmV0dXJuRnVuY3Rpb25Bcmd1bWVudHMuaGFzT3ZlcmZsb3dlZCgpKTsKLSAgICBKU1ZhbHVl
IGlubmVyUmVzdWx0ID0gY2FsbChnbG9iYWxPYmplY3QsIHJldHVybkZ1bmN0aW9uLCByZXR1cm5G
dW5jdGlvbkNhbGxEYXRhLCBpdGVyYXRpb25SZWNvcmQuaXRlcmF0b3IsIHJldHVybkZ1bmN0aW9u
QXJndW1lbnRzKTsKKyAgICBKU1ZhbHVlIGlubmVyUmVzdWx0ID0gY2FsbChnbG9iYWxPYmplY3Qs
IHJldHVybkZ1bmN0aW9uLCByZXR1cm5GdW5jdGlvbkNhbGxEYXRhLCBpdGVyYXRvciwgcmV0dXJu
RnVuY3Rpb25Bcmd1bWVudHMpOwogCiAgICAgaWYgKGV4Y2VwdGlvbikgewogICAgICAgICB0aHJv
d0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGV4Y2VwdGlvbik7CkBAIC0yMzMs
NCArMjMzLDQ4IEBAIEl0ZXJhdGlvblJlY29yZCBpdGVyYXRvckZvckl0ZXJhYmxlKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgaXRlcmFiCiAgICAgcmV0dXJuIHsgaXRlcmF0
b3IsIG5leHRNZXRob2QgfTsKIH0KIAorSXRlcmF0aW9uTW9kZSBwcmVwYXJlRm9yRmFzdEFycmF5
SXRlcmF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBp
dGVyYWJsZSwgSlNWYWx1ZSBzeW1ib2xJdGVyYXRvcikKK3sKKyAgICBpZiAoIWl0ZXJhYmxlLmlu
aGVyaXRzPEpTQXJyYXk+KHZtKSkKKyAgICAgICAgcmV0dXJuIEl0ZXJhdGlvbk1vZGU6OkdlbmVy
aWM7CisKKyAgICBpZiAoIWdsb2JhbE9iamVjdC0+YXJyYXlJdGVyYXRvclByb3RvY29sV2F0Y2hw
b2ludFNldCgpLmlzU3RpbGxWYWxpZCgpKQorICAgICAgICByZXR1cm4gSXRlcmF0aW9uTW9kZTo6
R2VuZXJpYzsKKworICAgIC8vIFRoaXMgaXMgY29ycmVjdCBiZWNhdXNlIHdlIGp1c3QgY2hlY2tl
ZCB0aGUgd2F0Y2hwb2ludCBpcyBzdGlsbCB2YWxpZC4KKyAgICBKU0Z1bmN0aW9uKiBzeW1ib2xJ
dGVyYXRvckZ1bmN0aW9uID0ganNEeW5hbWljQ2FzdDxKU0Z1bmN0aW9uKj4odm0sIHN5bWJvbEl0
ZXJhdG9yKTsKKyAgICBpZiAoIXN5bWJvbEl0ZXJhdG9yRnVuY3Rpb24pCisgICAgICAgIHJldHVy
biBJdGVyYXRpb25Nb2RlOjpHZW5lcmljOworCisgICAgLy8gV2UgZG9uJ3Qgd2FudCB0byBhbGxv
Y2F0ZSB0aGUgdmFsdWVzIGZ1bmN0aW9uIGp1c3QgdG8gY2hlY2sgaWYgaXQncyB0aGUgc2FtZSBh
cyBvdXIgZnVuY3Rpb24gYXQgc28gd2UgdXNlIHRoZSBjb25jdXJyZW50IGFjY2Vzc29yLgorICAg
IC8vIEZJWE1FOiBUaGlzIG9ubHkgd29ya3MgZm9yIGFycmF5cyBmcm9tIHRoZSBzYW1lIGdsb2Jh
bCBvYmplY3QgYXMgb3Vyc2VsdmVzIGJ1dCB3ZSBzaG91bGQgYmUgYWJsZSB0byBzdXBwb3J0IGFu
eSBwYWlyaW5nLgorICAgIGlmIChnbG9iYWxPYmplY3QtPmFycmF5UHJvdG9WYWx1ZXNGdW5jdGlv
bkNvbmN1cnJlbnRseSgpICE9IHN5bWJvbEl0ZXJhdG9yRnVuY3Rpb24pCisgICAgICAgIHJldHVy
biBJdGVyYXRpb25Nb2RlOjpHZW5lcmljOworCisgICAgcmV0dXJuIEl0ZXJhdGlvbk1vZGU6OkZh
c3RBcnJheTsKK30KKworSXRlcmF0aW9uTW9kZSBwcmVwYXJlRm9yRmFzdEFycmF5SXRlcmF0aW9u
KFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBpdGVyYWJsZSkK
K3sKKyAgICBpZiAoIWl0ZXJhYmxlLmluaGVyaXRzPEpTQXJyYXk+KHZtKSkKKyAgICAgICAgcmV0
dXJuIEl0ZXJhdGlvbk1vZGU6OkdlbmVyaWM7CisKKyAgICBKU0FycmF5KiBhcnJheSA9IGpzQ2Fz
dDxKU0FycmF5Kj4oaXRlcmFibGUpOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gYXJyYXkt
PnN0cnVjdHVyZSh2bSk7CisgICAgLy8gRklYTUU6IFdlIHdhbnQgdG8gc3VwcG9ydCBicm9hZGVy
IEpTQXJyYXlzIHNvIGxvbmcgYXMgYXJyYXlbQEBpdGVyYXRvcl0gaXMgbm90IGRlZmluZWQuCisg
ICAgaWYgKCFnbG9iYWxPYmplY3QtPmlzT3JpZ2luYWxBcnJheVN0cnVjdHVyZShzdHJ1Y3R1cmUp
KQorICAgICAgICByZXR1cm4gSXRlcmF0aW9uTW9kZTo6R2VuZXJpYzsKKworICAgIGlmICghZ2xv
YmFsT2JqZWN0LT5hcnJheUl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50U2V0KCkuaXNTdGlsbFZh
bGlkKCkpCisgICAgICAgIHJldHVybiBJdGVyYXRpb25Nb2RlOjpHZW5lcmljOworCisgICAgLy8g
Tm93LCBBcnJheSBoYXMgb3JpZ2luYWwgQXJyYXkgU3RydWN0dXJlcyBhbmQgYXJyYXlJdGVyYXRv
clByb3RvY29sV2F0Y2hwb2ludFNldCBpcyBub3QgZmlyZWQuCisgICAgLy8gVGhpcyBtZWFucywK
KyAgICAvLyAxLiBBcnJheS5wcm90b3R5cGUgaXMgW1tQcm90b3R5cGVdXS4KKyAgICAvLyAyLiBh
cnJheVtAQGl0ZXJhdG9yXSBpcyBub3Qgb3ZlcnJpZGRlbi4KKyAgICAvLyAzLiBBcnJheS5wcm90
b3R5cGVbQEBpdGVyYXRvcl0gaXMgYW4gZXhwZWN0ZWQgb25lLgorICAgIC8vIFNvLCB3ZSBjYW4g
c2F5IHRoaXMgd2lsbCBjcmVhdGUgYW4gZXhwZWN0ZWQgQXJyYXlJdGVyYXRvci4KKyAgICByZXR1
cm4gSXRlcmF0aW9uTW9kZTo6RmFzdEFycmF5OworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0l0ZXJhdG9yT3BlcmF0aW9u
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSXRlcmF0b3JPcGVyYXRpb25zLmgK
aW5kZXggMDFjZDMxYzQ5MTZjMGI1YTU1ODk3MDdkOTU0MzdmNzNkZmM1M2RiMi4uYTdiYWVjZjY3
NWVhMDUyNzMyMTI5MTBmZThiMGRjN2RkYTQ5NTcxMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSXRlcmF0b3JPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSXRlcmF0b3JPcGVyYXRpb25zLmgKQEAgLTI2LDYgKzI2LDggQEAK
IAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJJdGVyYXRpb25Nb2RlTWV0YWRhdGEuaCIKKyNp
bmNsdWRlICJKU0FycmF5SXRlcmF0b3IuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAjaW5j
bHVkZSAiSlNPYmplY3QuaCIKICNpbmNsdWRlICJUaHJvd1Njb3BlLmgiCkBAIC00MSw3ICs0Myw3
IEBAIEpTVmFsdWUgaXRlcmF0b3JOZXh0KEpTR2xvYmFsT2JqZWN0KiwgSXRlcmF0aW9uUmVjb3Jk
LCBKU1ZhbHVlIGFyZ3VtZW50ID0gSlNWYWx1CiBKU19FWFBPUlRfUFJJVkFURSBKU1ZhbHVlIGl0
ZXJhdG9yVmFsdWUoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIGl0ZXJSZXN1bHQpOwogYm9vbCBp
dGVyYXRvckNvbXBsZXRlKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBpdGVyUmVzdWx0KTsKIEpT
X0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgaXRlcmF0b3JTdGVwKEpTR2xvYmFsT2JqZWN0KiwgSXRl
cmF0aW9uUmVjb3JkKTsKLUpTX0VYUE9SVF9QUklWQVRFIHZvaWQgaXRlcmF0b3JDbG9zZShKU0ds
b2JhbE9iamVjdCosIEl0ZXJhdGlvblJlY29yZCk7CitKU19FWFBPUlRfUFJJVkFURSB2b2lkIGl0
ZXJhdG9yQ2xvc2UoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIGl0ZXJhdG9yKTsKIEpTX0VYUE9S
VF9QUklWQVRFIEpTT2JqZWN0KiBjcmVhdGVJdGVyYXRvclJlc3VsdE9iamVjdChKU0dsb2JhbE9i
amVjdCosIEpTVmFsdWUsIGJvb2wgZG9uZSk7CiAKIFN0cnVjdHVyZSogY3JlYXRlSXRlcmF0b3JS
ZXN1bHRPYmplY3RTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCYpOwpAQCAtNTMsMTIgKzU1
LDMyIEBAIEpTX0VYUE9SVF9QUklWQVRFIEl0ZXJhdGlvblJlY29yZCBpdGVyYXRvckZvckl0ZXJh
YmxlKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBpCiBKU19FWFBPUlRfUFJJVkFURSBKU1ZhbHVl
IGl0ZXJhdG9yTWV0aG9kKEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqKTsKIEpTX0VYUE9SVF9Q
UklWQVRFIGJvb2wgaGFzSXRlcmF0b3JNZXRob2QoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsK
IAorSXRlcmF0aW9uTW9kZSBwcmVwYXJlRm9yRmFzdEFycmF5SXRlcmF0aW9uKFZNJiwgSlNHbG9i
YWxPYmplY3QqLCBKU1ZhbHVlIGl0ZXJhYmxlKTsKK0l0ZXJhdGlvbk1vZGUgcHJlcGFyZUZvckZh
c3RBcnJheUl0ZXJhdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBpdGVyYWJsZSwg
SlNWYWx1ZSBzeW1ib2xJdGVyYXRvcik7CisKIHRlbXBsYXRlPHR5cGVuYW1lIENhbGxCYWNrVHlw
ZT4KIHZvaWQgZm9yRWFjaEluSXRlcmFibGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNWYWx1ZSBpdGVyYWJsZSwgY29uc3QgQ2FsbEJhY2tUeXBlJiBjYWxsYmFjaykKIHsKICAgICBh
dXRvJiB2bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogCisgICAgaWYgKHByZXBhcmVGb3JGYXN0QXJyYXlJdGVyYXRpb24o
dm0sIGdsb2JhbE9iamVjdCwgaXRlcmFibGUpID09IEl0ZXJhdGlvbk1vZGU6OkZhc3RBcnJheSkg
eworICAgICAgICBhdXRvKiBhcnJheSA9IGpzQ2FzdDxKU0FycmF5Kj4oaXRlcmFibGUpOworICAg
ICAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCBhcnJheS0+bGVuZ3RoKCk7ICsr
aW5kZXgpIHsKKyAgICAgICAgICAgIEpTVmFsdWUgbmV4dFZhbHVlID0gYXJyYXktPmdldEluZGV4
KGdsb2JhbE9iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluZGV4KSk7CisgICAgICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworICAgICAgICAgICAgY2FsbGJh
Y2sodm0sIGdsb2JhbE9iamVjdCwgbmV4dFZhbHVlKTsKKyAgICAgICAgICAgIGlmIChVTkxJS0VM
WShzY29wZS5leGNlcHRpb24oKSkpIHsKKyAgICAgICAgICAgICAgICBzY29wZS5yZWxlYXNlKCk7
CisgICAgICAgICAgICAgICAgSlNBcnJheUl0ZXJhdG9yKiBpdGVyYXRvciA9IEpTQXJyYXlJdGVy
YXRvcjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPmFycmF5SXRlcmF0b3JTdHJ1Y3R1cmUoKSwg
YXJyYXksIEl0ZXJhdGlvbktpbmQ6OlZhbHVlcyk7CisgICAgICAgICAgICAgICAgaXRlcmF0b3It
PmludGVybmFsRmllbGQoSlNBcnJheUl0ZXJhdG9yOjpGaWVsZDo6SW5kZXgpLnNldFdpdGhvdXRX
cml0ZUJhcnJpZXIoanNOdW1iZXIoaW5kZXggKyAxKSk7CisgICAgICAgICAgICAgICAgaXRlcmF0
b3JDbG9zZShnbG9iYWxPYmplY3QsIGl0ZXJhdG9yKTsKKyAgICAgICAgICAgICAgICByZXR1cm47
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAg
IEl0ZXJhdGlvblJlY29yZCBpdGVyYXRpb25SZWNvcmQgPSBpdGVyYXRvckZvckl0ZXJhYmxlKGds
b2JhbE9iamVjdCwgaXRlcmFibGUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZv
aWQoKSk7CiAgICAgd2hpbGUgKHRydWUpIHsKQEAgLTcyLDcgKzk0LDcgQEAgdm9pZCBmb3JFYWNo
SW5JdGVyYWJsZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGl0ZXJhYmxl
LCBjb25zdCBDYWwKICAgICAgICAgY2FsbGJhY2sodm0sIGdsb2JhbE9iamVjdCwgbmV4dFZhbHVl
KTsKICAgICAgICAgaWYgKFVOTElLRUxZKHNjb3BlLmV4Y2VwdGlvbigpKSkgewogICAgICAgICAg
ICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICAgICAgaXRlcmF0b3JDbG9zZShnbG9iYWxPYmpl
Y3QsIGl0ZXJhdGlvblJlY29yZCk7CisgICAgICAgICAgICBpdGVyYXRvckNsb3NlKGdsb2JhbE9i
amVjdCwgaXRlcmF0aW9uUmVjb3JkLml0ZXJhdG9yKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogICAgIH0KQEAgLTg0LDYgKzEwNiwyMyBAQCB2b2lkIGZvckVhY2hJbkl0ZXJhYmxl
KEpTR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiBpdGVyYWJsZSwgSlNWYWx1
ZQogICAgIGF1dG8mIHZtID0gZ2V0Vk0oJmdsb2JhbE9iamVjdCk7CiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCisgICAgaWYgKHByZXBhcmVGb3JGYXN0QXJyYXlJ
dGVyYXRpb24odm0sICZnbG9iYWxPYmplY3QsIGl0ZXJhYmxlLCBpdGVyYXRvck1ldGhvZCkgPT0g
SXRlcmF0aW9uTW9kZTo6RmFzdEFycmF5KSB7CisgICAgICAgIGF1dG8qIGFycmF5ID0ganNDYXN0
PEpTQXJyYXkqPihpdGVyYWJsZSk7CisgICAgICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBp
bmRleCA8IGFycmF5LT5sZW5ndGgoKTsgKytpbmRleCkgeworICAgICAgICAgICAgSlNWYWx1ZSBu
ZXh0VmFsdWUgPSBhcnJheS0+Z2V0SW5kZXgoJmdsb2JhbE9iamVjdCwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KGluZGV4KSk7CisgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2
b2lkKCkpOworICAgICAgICAgICAgY2FsbGJhY2sodm0sIGdsb2JhbE9iamVjdCwgbmV4dFZhbHVl
KTsKKyAgICAgICAgICAgIGlmIChVTkxJS0VMWShzY29wZS5leGNlcHRpb24oKSkpIHsKKyAgICAg
ICAgICAgICAgICBzY29wZS5yZWxlYXNlKCk7CisgICAgICAgICAgICAgICAgSlNBcnJheUl0ZXJh
dG9yKiBpdGVyYXRvciA9IEpTQXJyYXlJdGVyYXRvcjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3Qu
YXJyYXlJdGVyYXRvclN0cnVjdHVyZSgpLCBhcnJheSwgSXRlcmF0aW9uS2luZDo6VmFsdWVzKTsK
KyAgICAgICAgICAgICAgICBpdGVyYXRvci0+aW50ZXJuYWxGaWVsZChKU0FycmF5SXRlcmF0b3I6
OkZpZWxkOjpJbmRleCkuc2V0V2l0aG91dFdyaXRlQmFycmllcihqc051bWJlcihpbmRleCArIDEp
KTsKKyAgICAgICAgICAgICAgICBpdGVyYXRvckNsb3NlKCZnbG9iYWxPYmplY3QsIGl0ZXJhdG9y
KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIGF1dG8gaXRlcmF0aW9uUmVjb3JkID0gaXRlcmF0
b3JGb3JJdGVyYWJsZSgmZ2xvYmFsT2JqZWN0LCBpdGVyYWJsZSwgaXRlcmF0b3JNZXRob2QpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAgICAgd2hpbGUgKHRydWUp
IHsKQEAgLTk3LDcgKzEzNiw3IEBAIHZvaWQgZm9yRWFjaEluSXRlcmFibGUoSlNHbG9iYWxPYmpl
Y3QmIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIGl0ZXJhYmxlLCBKU1ZhbHVlCiAgICAgICAgIGNh
bGxiYWNrKHZtLCBnbG9iYWxPYmplY3QsIG5leHRWYWx1ZSk7CiAgICAgICAgIGlmIChVTkxJS0VM
WShzY29wZS5leGNlcHRpb24oKSkpIHsKICAgICAgICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAg
ICAgICAgICAgIGl0ZXJhdG9yQ2xvc2UoJmdsb2JhbE9iamVjdCwgaXRlcmF0aW9uUmVjb3JkKTsK
KyAgICAgICAgICAgIGl0ZXJhdG9yQ2xvc2UoJmdsb2JhbE9iamVjdCwgaXRlcmF0aW9uUmVjb3Jk
Lml0ZXJhdG9yKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KZGlmZiAt
LWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNmQzNWRl
NGFkNDliZGUyMTE0YzdmNzU4ZDJjOTE5ZGEwYmQxODU0OS4uNGQ4MjkyOTg4NTU1ZTA4NWM5MmRi
N2FjNTcwYWZlYTMxNzk4NzJiNiAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIv
SlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAyMS0wMi0wNyAgWXVzdWtlIFN1
enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtKU0NdIEMrKyBpdGVyYXRpb24g
c2hvdWxkIHN1cHBvcnQgZmFzdCBpdGVyYXRvciBwcm90b2NvbAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxNTI2CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBtaWNyb2JlbmNobWFya3MvbWFwLWNvbnN0
cnVjdG9yLmpzOiBBZGRlZC4KKyAgICAgICAgKHRlc3QpOgorICAgICAgICAqIHN0cmVzcy9tYXAt
Y29uc3RydWN0b3ItaG9sZS10aHJvdy5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6Cisg
ICAgICAgIChzaG91bGRUaHJvdyk6CisgICAgICAgICh2YWx1ZXMuX19wcm90b19fLnJldHVybik6
CisgICAgICAgIChNYXAucHJvdG90eXBlKToKKwogMjAyMS0wMi0wNiAgQWxleGV5IFNodmF5a2Eg
IDxzaHZhaWthbGVzaEBnbWFpbC5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjI2NDU3NCk6
IFVuY2hlY2tlZCBKUyBleGNlcHRpb24gaW4gdmFsaWRhdGVBbmRBcHBseVByb3BlcnR5RGVzY3Jp
cHRvcigpCmRpZmYgLS1naXQgYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9tYXAtY29uc3RydWN0
b3IuanMgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9tYXAtY29uc3RydWN0b3IuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYTZiMjBhNmZmZTMxYTZjNTEzMWEwOGE5MGI0MzRkYmVhMDBhNTBmNgotLS0gL2Rldi9u
dWxsCisrKyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL21hcC1jb25zdHJ1Y3Rvci5qcwpAQCAt
MCwwICsxLDMxIEBACitmdW5jdGlvbiB0ZXN0KGFycmF5KQoreworICAgIHJldHVybiBuZXcgTWFw
KGFycmF5KTsKK30KK25vSW5saW5lKHRlc3QpOworCit2YXIgYXJyYXkgPSBbCisgICAgWzAsIDBd
LAorICAgIFsxLCAwXSwKKyAgICBbMiwgMF0sCisgICAgWzMsIDBdLAorICAgIFs0LCAwXSwKKyAg
ICBbNSwgMF0sCisgICAgWzYsIDBdLAorICAgIFs3LCAwXSwKKyAgICBbOCwgMF0sCisgICAgWzks
IDBdLAorICAgIFsxMCwgMF0sCisgICAgWzExLCAwXSwKKyAgICBbMTIsIDBdLAorICAgIFsxMywg
MF0sCisgICAgWzE0LCAwXSwKKyAgICBbMTUsIDBdLAorICAgIFsxNiwgMF0sCisgICAgWzE3LCAw
XSwKKyAgICBbMTgsIDBdLAorICAgIFsxOSwgMF0sCitdOworCitmb3IgKHZhciBpID0gMDsgaSA8
IDFlNDsgKytpKQorICAgIHRlc3QoYXJyYXkpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mv
bWFwLWNvbnN0cnVjdG9yLWhvbGUtdGhyb3cuanMgYi9KU1Rlc3RzL3N0cmVzcy9tYXAtY29uc3Ry
dWN0b3ItaG9sZS10aHJvdy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYTNmMDc2Y2NiOWVhOTAwM2EwYWU4MGMy
ZTU2NjE4MzIyYmEzZWE5Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvbWFwLWNv
bnN0cnVjdG9yLWhvbGUtdGhyb3cuanMKQEAgLTAsMCArMSwzOCBAQAorZnVuY3Rpb24gc2hvdWxk
QmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK2Z1bmN0
aW9uIHNob3VsZFRocm93KGZ1bmMsIGVycm9yTWVzc2FnZSkgeworICAgIHZhciBlcnJvclRocm93
biA9IGZhbHNlOworICAgIHZhciBlcnJvciA9IG51bGw7CisgICAgdHJ5IHsKKyAgICAgICAgZnVu
YygpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgZXJyb3JUaHJvd24gPSB0cnVlOworICAg
ICAgICBlcnJvciA9IGU7CisgICAgfQorICAgIGlmICghZXJyb3JUaHJvd24pCisgICAgICAgIHRo
cm93IG5ldyBFcnJvcignbm90IHRocm93bicpOworICAgIGlmIChTdHJpbmcoZXJyb3IpICE9PSBl
cnJvck1lc3NhZ2UpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIGVycm9yOiAke1N0cmlu
ZyhlcnJvcil9YCk7Cit9CisKK3ZhciBpdGVyYXRvcjsKK1tdLnZhbHVlcygpLl9fcHJvdG9fXy5y
ZXR1cm4gPSBmdW5jdGlvbiAoKSB7CisgICAgaXRlcmF0b3IgPSB0aGlzOworfTsKKwordmFyIGFy
cmF5ID0gWworICAgIFswLCAwXSwKKyAgICBbMSwgMF0sCisgICAgWzIsIDBdLAorXTsKK01hcC5w
cm90b3R5cGUuc2V0ID0gZnVuY3Rpb24gKCkgeworICAgIHRocm93IG5ldyBFcnJvcigib2siKTsK
K307CitzaG91bGRUaHJvdygoKSA9PiB7CisgICAgdmFyIG1hcCA9IG5ldyBNYXAoYXJyYXkpOwor
fSwgYEVycm9yOiBva2ApOworc2hvdWxkQmUoaXRlcmF0b3IgIT09IHVuZGVmaW5lZCwgdHJ1ZSk7
CisK
</data>
<flag name="commit-queue"
          id="437789"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>419533</attachid>
            <date>2021-02-07 02:56:12 -0800</date>
            <delta_ts>2021-02-07 02:57:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221526-20210207025611.patch</filename>
            <type>text/plain</type>
            <size>19248</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyNDcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
NjhmOWU5YzJiOTMxYzhkODEzNDA3MDY5NDExOWNhOTI2YWE0MDc3Li5jNTkzYzJiNDZiNWFlMDkx
YzBmMGEwNDg3ZTE2MTg4M2VmYWYwMDY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNCBAQAorMjAyMS0wMi0wNyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEMrKyBpdGVyYXRpb24gc2hvdWxkIHN1cHBvcnQgZmFzdCBpdGVy
YXRvciBwcm90b2NvbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjIxNTI2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVGhpcyBwYXRjaCBhZGRzIGZhc3QgaXRlcmF0aW9uIHByb3RvY29sIHN1cHBvcnQgaW4g
QysrIGl0ZXJhdGlvbiAoZm9yRWFjaEl0ZXJhYmxlKS4KKyAgICAgICAgSW4gSlMsIHdlIGhhdmUg
b3BfaXRlcmF0b3Jfb3BlbiAvIG9wX2l0ZXJhdG9yX25leHQgdG8gaXRlcmF0ZSBhcnJheSBxdWlj
a2x5LgorICAgICAgICBCdXQgd2UgZG8gbm90IHVzZSB0aGlzIGZlYXR1cmUgaW4gQysrIGZvckVh
Y2hJdGVyYWJsZS4gSW4gdGhpcyBwYXRjaCB3ZSBpbnRlZ3JhdGUKKyAgICAgICAgdGhlIHNhbWUg
KG9yIGEgYml0IG1vcmUgZWZmaWNpZW50IHNpbmNlIHdlIGNhbiBhdm9pZCBjcmVhdGluZyBKU0Fy
cmF5SXRlcmF0b3IpIG1lY2hhbmlzbQorICAgICAgICBzbyB0aGF0IGl0ZXJhdGlvbiBpbiBDKysg
Z2V0cyBmYXN0ZXIgZm9yIG5vcm1hbCBhcnJheXMuCisKKyAgICAgICAgV2Ugb2JzZXJ2ZWQgMS45
eCBmYXN0ZXIgaW4gTWFwIGNyZWF0aW9uIHdpdGggYXJyYXlzLgorCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVG9UICAgICAgICAgICAgICAgICAgICAgUGF0Y2hlZAor
CisgICAgICAgICAgICBtYXAtY29uc3RydWN0b3IgICAgICAgMzUuNzQ0NistMC4yMzU0ICAgICBe
ICAgICAxOC43NTE2Ky0wLjQ1MzQgICAgICAgIF4gZGVmaW5pdGVseSAxLjkwNjJ4IGZhc3Rlcgor
CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBpbnNwZWN0b3IvSlNJbmplY3RlZFNj
cmlwdEhvc3QuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpKU0luamVjdGVkU2NyaXB0SG9zdDo6
aXRlcmF0b3JFbnRyaWVzKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHA6
CisgICAgICAgIChKU0M6Oml0ZXJhdG9yT3BlblRyeUZhc3RJbXBsKToKKyAgICAgICAgKiBydW50
aW1lL0l0ZXJhdG9yT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6Oml0ZXJhdG9yQ2xvc2Up
OgorICAgICAgICAoSlNDOjpwcmVwYXJlRm9yRmFzdEFycmF5SXRlcmF0aW9uKToKKyAgICAgICAg
KiBydW50aW1lL0l0ZXJhdG9yT3BlcmF0aW9ucy5oOgorICAgICAgICAoSlNDOjpmb3JFYWNoSW5J
dGVyYWJsZSk6CisKIDIwMjEtMDItMDYgIEFsZXhleSBTaHZheWthICA8c2h2YWlrYWxlc2hAZ21h
aWwuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIyNjQ1NzQpOiBVbmNoZWNrZWQgSlMgZXhj
ZXB0aW9uIGluIHZhbGlkYXRlQW5kQXBwbHlQcm9wZXJ0eURlc2NyaXB0b3IoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDRkZjhhMjUwYzBjOWJkMjIzZTU2ODZhZDdjNWY2
N2Y5YTAxMGU3ODAuLjI1MmQ0YmNjNThlYzkxNjJmMzJjYWM5ZTJiZjgzNGE5NjgwODMyZGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTkyMiw2ICs5MjIsNyBAQCBzZXQo
SmF2YVNjcmlwdENvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHJ1bnRpbWUvSlNB
cnJheUJ1ZmZlclByb3RvdHlwZS5oCiAgICAgcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5oCiAg
ICAgcnVudGltZS9KU0FycmF5QnVmZmVyVmlld0lubGluZXMuaAorICAgIHJ1bnRpbWUvSlNBcnJh
eUl0ZXJhdG9yLmgKICAgICBydW50aW1lL0pTQmlnSW50LmgKICAgICBydW50aW1lL0pTQ0NvbmZp
Zy5oCiAgICAgcnVudGltZS9KU0NJbmxpbmVzLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggZDkyMTI3ZmNkNGY4ZDZhZTg2NDk3ZDk4YzZlYzFhMzU3ZWEwMzJkMC4uNTcwNGU0Mjc3
MzM5NTA5YjIxOGEyZWUyMmQyY2JjMWU2MTAyODMwZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTEwOTcsNyArMTA5Nyw3IEBACiAJCTUzOTkzMEM4MjJBRDNCOUEwMDUxQ0RFMiAv
KiBXZWFrT2JqZWN0UmVmQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUzOTkzMEM3MjJBRDNCOUEwMDUxQ0RFMiAvKiBXZWFrT2JqZWN0
UmVmQ29uc3RydWN0b3IuaCAqLzsgfTsKIAkJNTM5QkZCQUUyMkFEM0MzQTAwMjNGNEMwIC8qIFdl
YWtPYmplY3RSZWZQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUzOUJGQkFEMjJBRDNDM0EwMDIzRjRDMCAvKiBXZWFrT2JqZWN0UmVmUHJv
dG90eXBlLmggKi87IH07CiAJCTUzOUJGQkIwMjJBRDNDREMwMDIzRjRDMCAvKiBKU1dlYWtPYmpl
Y3RSZWYuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUz
OUJGQkFGMjJBRDNDREMwMDIzRjRDMCAvKiBKU1dlYWtPYmplY3RSZWYuaCAqLzsgfTsKLQkJNTM5
REQ3RjUyM0MxQkJCNTAwOTA1RjEzIC8qIEpTQXJyYXlJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM5REQ3RjQyM0MxQkJBOTAwOTA1RjEz
IC8qIEpTQXJyYXlJdGVyYXRvci5oICovOyB9OworCQk1MzlERDdGNTIzQzFCQkI1MDA5MDVGMTMg
LyogSlNBcnJheUl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MzlERDdGNDIzQzFCQkE5MDA5MDVGMTMgLyogSlNBcnJheUl0ZXJhdG9yLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTM5RkI4
QkExQzk5REE3QzAwOTQwRkExIC8qIEpTQXJyYXlJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzlGQjhCOTFDOTlEQTdDMDA5NDBGQTEgLyog
SlNBcnJheUlubGluZXMuaCAqLzsgfTsKIAkJNTNCNEJEMTIxRjY4QjMyNTAwRDJCRUEzIC8qIFdh
c21PcHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUz
M0IxNURFMURDN0Y0NjMwMDRENTAwQSAvKiBXYXNtT3BzLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTNCNjAxRUMyMDM0QjhDNTAwNkJFNjY3IC8q
IEpTQ2FzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTNCNjAxRUIyMDM0QjhDNTAwNkJFNjY3IC8qIEpTQ2FzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3QuY3BwCmluZGV4IGE5OGJkODZi
ZDYwN2UyMmI0OGRkMDEyZDZjODZkNzc3NzY0MThjYjYuLjk4NjlmMWRhMGI1ZmVmODM2NDkzMWI0
M2FmZTJjYTIzOGQyZWM1NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3QuY3BwCkBAIC02MTMsNyArNjEzLDcgQEAg
SlNWYWx1ZSBKU0luamVjdGVkU2NyaXB0SG9zdDo6aXRlcmF0b3JFbnRyaWVzKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGwKICAgICAgICAgYXJyYXktPnB1dERpcmVjdEluZGV4KGds
b2JhbE9iamVjdCwgaSwgZW50cnkpOwogICAgICAgICBpZiAoVU5MSUtFTFkoc2NvcGUuZXhjZXB0
aW9uKCkpKSB7CiAgICAgICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgICAgICAgICBpdGVy
YXRvckNsb3NlKGdsb2JhbE9iamVjdCwgaXRlcmF0aW9uUmVjb3JkKTsKKyAgICAgICAgICAgIGl0
ZXJhdG9yQ2xvc2UoZ2xvYmFsT2JqZWN0LCBpdGVyYXRpb25SZWNvcmQuaXRlcmF0b3IpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAppbmRleCA0NTE2MzE5Mzk5MWQzNjM5
MzRiZmU5MmEyZjk3MmRkNmJhMDczZmU5Li43M2QxYjhmN2I4YTZlMDE0ZjY1NWJhM2Y3NmVkY2Rm
MzcwOTc0NDRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21t
b25TbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1v
blNsb3dQYXRocy5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJFcnJvckhhbmRsaW5n
U2NvcGUuaCIKICNpbmNsdWRlICJFeGNlcHRpb25GdXp6LmgiCiAjaW5jbHVkZSAiRnJhbWVUcmFj
ZXJzLmgiCisjaW5jbHVkZSAiSXRlcmF0b3JPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiSlNBcnJh
eUl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNBc3luY0dlbmVyYXRvci5oIgogI2luY2x1ZGUgIkpT
Q0lubGluZXMuaCIKQEAgLTg2MywzNyArODY0LDE5IEBAIEFMV0FZU19JTkxJTkUgU2xvd1BhdGhS
ZXR1cm5UeXBlIGl0ZXJhdG9yT3BlblRyeUZhc3RJbXBsKENhbGxGcmFtZSogY2FsbEZyYW1lLCBj
CiAgICAgSlNWYWx1ZSBzeW1ib2xJdGVyYXRvciA9IEdFVF9DKGJ5dGVjb2RlLm1fc3ltYm9sSXRl
cmF0b3IpLmpzVmFsdWUoKTsKICAgICBhdXRvJiBpdGVyYXRvciA9IEdFVChieXRlY29kZS5tX2l0
ZXJhdG9yKTsKIAotICAgIGF1dG8gcHJlcGFyZUZvckZhc3RBcnJheUl0ZXJhdGlvbiA9IFsmXSB7
Ci0gICAgICAgIGlmICghZ2xvYmFsT2JqZWN0LT5hcnJheUl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBv
aW50U2V0KCkuaXNTdGlsbFZhbGlkKCkpCi0gICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uTW9k
ZTo6R2VuZXJpYzsKLQotICAgICAgICAvLyBUaGlzIGlzIGNvcnJlY3QgYmVjYXVzZSB3ZSBqdXN0
IGNoZWNrZWQgdGhlIHdhdGNocG9pbnQgaXMgc3RpbGwgdmFsaWQuCi0gICAgICAgIEpTRnVuY3Rp
b24qIHN5bWJvbEl0ZXJhdG9yRnVuY3Rpb24gPSBqc0R5bmFtaWNDYXN0PEpTRnVuY3Rpb24qPih2
bSwgc3ltYm9sSXRlcmF0b3IpOwotICAgICAgICBpZiAoIXN5bWJvbEl0ZXJhdG9yRnVuY3Rpb24p
Ci0gICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uTW9kZTo6R2VuZXJpYzsgCi0KLSAgICAgICAg
Ly8gV2UgZG9uJ3Qgd2FudCB0byBhbGxvY2F0ZSB0aGUgdmFsdWVzIGZ1bmN0aW9uIGp1c3QgdG8g
Y2hlY2sgaWYgaXQncyB0aGUgc2FtZSBhcyBvdXIgZnVuY3Rpb24gYXQgc28gd2UgdXNlIHRoZSBj
b25jdXJyZW50IGFjY2Vzc29yLgotICAgICAgICAvLyBGSVhNRTogVGhpcyBvbmx5IHdvcmtzIGZv
ciBhcnJheXMgZnJvbSB0aGUgc2FtZSBnbG9iYWwgb2JqZWN0IGFzIG91cnNlbHZlcyBidXQgd2Ug
c2hvdWxkIGJlIGFibGUgdG8gc3VwcG9ydCBhbnkgcGFpcmluZy4KLSAgICAgICAgaWYgKGdsb2Jh
bE9iamVjdC0+YXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9uQ29uY3VycmVudGx5KCkgIT0gc3ltYm9s
SXRlcmF0b3JGdW5jdGlvbikKLSAgICAgICAgICAgIHJldHVybiBJdGVyYXRpb25Nb2RlOjpHZW5l
cmljOwotCisgICAgaWYgKHByZXBhcmVGb3JGYXN0QXJyYXlJdGVyYXRpb24odm0sIGdsb2JhbE9i
amVjdCwgaXRlcmFibGUsIHN5bWJvbEl0ZXJhdG9yKSA9PSBJdGVyYXRpb25Nb2RlOjpGYXN0QXJy
YXkpIHsKICAgICAgICAgLy8gV2Ugc2hvdWxkIGJlIGdvb2QgdG8gZ28uCiAgICAgICAgIG1ldGFk
YXRhLm1faXRlcmF0aW9uTWV0YWRhdGEuc2Vlbk1vZGVzID0gbWV0YWRhdGEubV9pdGVyYXRpb25N
ZXRhZGF0YS5zZWVuTW9kZXMgfCBJdGVyYXRpb25Nb2RlOjpGYXN0QXJyYXk7CiAgICAgICAgIEdF
VChieXRlY29kZS5tX25leHQpID0gSlNWYWx1ZSgpOwogICAgICAgICBhdXRvKiBpdGVyYXRlZE9i
amVjdCA9IGpzQ2FzdDxKU09iamVjdCo+KGl0ZXJhYmxlKTsKICAgICAgICAgaXRlcmF0b3IgPSBK
U0FycmF5SXRlcmF0b3I6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5hcnJheUl0ZXJhdG9yU3Ry
dWN0dXJlKCksIGl0ZXJhdGVkT2JqZWN0LCBJdGVyYXRpb25LaW5kOjpWYWx1ZXMpOwogICAgICAg
ICBQUk9GSUxFX1ZBTFVFX0lOKGl0ZXJhdG9yLmpzVmFsdWUoKSwgbV9pdGVyYXRvclByb2ZpbGUp
OwotICAgICAgICByZXR1cm4gSXRlcmF0aW9uTW9kZTo6RmFzdEFycmF5OwotICAgIH07Ci0KLSAg
ICBpZiAoaXRlcmFibGUuaW5oZXJpdHM8SlNBcnJheT4odm0pKSB7Ci0gICAgICAgIGlmIChwcmVw
YXJlRm9yRmFzdEFycmF5SXRlcmF0aW9uKCkgPT0gSXRlcmF0aW9uTW9kZTo6RmFzdEFycmF5KQot
ICAgICAgICAgICAgcmV0dXJuIGVuY29kZVJlc3VsdChwYywgcmVpbnRlcnByZXRfY2FzdDx2b2lk
Kj4oSXRlcmF0aW9uTW9kZTo6RmFzdEFycmF5KSk7CisgICAgICAgIHJldHVybiBlbmNvZGVSZXN1
bHQocGMsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oSXRl
cmF0aW9uTW9kZTo6RmFzdEFycmF5KSkpOwogICAgIH0KIAogICAgIC8vIFJldHVybiB0byB0aGUg
Ynl0ZWNvZGUgdG8gdHJ5IGluIGdlbmVyaWMgbW9kZS4KICAgICBtZXRhZGF0YS5tX2l0ZXJhdGlv
bk1ldGFkYXRhLnNlZW5Nb2RlcyA9IG1ldGFkYXRhLm1faXRlcmF0aW9uTWV0YWRhdGEuc2Vlbk1v
ZGVzIHwgSXRlcmF0aW9uTW9kZTo6R2VuZXJpYzsKLSAgICByZXR1cm4gZW5jb2RlUmVzdWx0KHBj
LCByZWludGVycHJldF9jYXN0PHZvaWQqPihJdGVyYXRpb25Nb2RlOjpHZW5lcmljKSk7CisgICAg
cmV0dXJuIGVuY29kZVJlc3VsdChwYywgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oc3RhdGljX2Nh
c3Q8dWludHB0cl90PihJdGVyYXRpb25Nb2RlOjpHZW5lcmljKSkpOwogfQogCiBKU0NfREVGSU5F
X0NPTU1PTl9TTE9XX1BBVEgoaXRlcmF0b3Jfb3Blbl90cnlfZmFzdF9uYXJyb3cpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JdGVyYXRvck9wZXJhdGlvbnMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSXRlcmF0b3JPcGVyYXRpb25zLmNwcApp
bmRleCA2NDA1NGI4MDg3NmE5ZjFiNGI3MmY4NGU2ZmFlODI2N2ViZTMzYzc5Li4xMjAyYzAxNjkw
NzJjMzIyZmM1YjhjMDRmZjY0OGMxY2M1NDc5M2I1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JdGVyYXRvck9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0l0ZXJhdG9yT3BlcmF0aW9ucy5jcHAKQEAgLTgyLDcgKzgyLDcg
QEAgSlNWYWx1ZSBpdGVyYXRvclN0ZXAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSXRl
cmF0aW9uUmVjb3JkIGl0ZXJhdGlvblJlY28KICAgICByZXR1cm4gcmVzdWx0OwogfQogCi12b2lk
IGl0ZXJhdG9yQ2xvc2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSXRlcmF0aW9uUmVj
b3JkIGl0ZXJhdGlvblJlY29yZCkKK3ZvaWQgaXRlcmF0b3JDbG9zZShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGl0ZXJhdG9yKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKQEAgLTk0LDcgKzk0LDcgQEAgdm9pZCBpdGVyYXRvckNsb3NlKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEl0ZXJhdGlvblJlY29yZCBpdGVyYXRpb25SZWNvcmQKICAgICAgICAgY2F0
Y2hTY29wZS5jbGVhckV4Y2VwdGlvbigpOwogICAgIH0KIAotICAgIEpTVmFsdWUgcmV0dXJuRnVu
Y3Rpb24gPSBpdGVyYXRpb25SZWNvcmQuaXRlcmF0b3IuZ2V0KGdsb2JhbE9iamVjdCwgdm0ucHJv
cGVydHlOYW1lcy0+cmV0dXJuS2V5d29yZCk7CisgICAgSlNWYWx1ZSByZXR1cm5GdW5jdGlvbiA9
IGl0ZXJhdG9yLmdldChnbG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPnJldHVybktleXdv
cmQpOwogICAgIGlmIChVTkxJS0VMWSh0aHJvd1Njb3BlLmV4Y2VwdGlvbigpKSB8fCByZXR1cm5G
dW5jdGlvbi5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7CiAgICAgICAgIGlmIChleGNlcHRpb24pCiAg
ICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGV4Y2Vw
dGlvbik7CkBAIC0xMTIsNyArMTEyLDcgQEAgdm9pZCBpdGVyYXRvckNsb3NlKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEl0ZXJhdGlvblJlY29yZCBpdGVyYXRpb25SZWNvcmQKIAogICAg
IE1hcmtlZEFyZ3VtZW50QnVmZmVyIHJldHVybkZ1bmN0aW9uQXJndW1lbnRzOwogICAgIEFTU0VS
VCghcmV0dXJuRnVuY3Rpb25Bcmd1bWVudHMuaGFzT3ZlcmZsb3dlZCgpKTsKLSAgICBKU1ZhbHVl
IGlubmVyUmVzdWx0ID0gY2FsbChnbG9iYWxPYmplY3QsIHJldHVybkZ1bmN0aW9uLCByZXR1cm5G
dW5jdGlvbkNhbGxEYXRhLCBpdGVyYXRpb25SZWNvcmQuaXRlcmF0b3IsIHJldHVybkZ1bmN0aW9u
QXJndW1lbnRzKTsKKyAgICBKU1ZhbHVlIGlubmVyUmVzdWx0ID0gY2FsbChnbG9iYWxPYmplY3Qs
IHJldHVybkZ1bmN0aW9uLCByZXR1cm5GdW5jdGlvbkNhbGxEYXRhLCBpdGVyYXRvciwgcmV0dXJu
RnVuY3Rpb25Bcmd1bWVudHMpOwogCiAgICAgaWYgKGV4Y2VwdGlvbikgewogICAgICAgICB0aHJv
d0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGV4Y2VwdGlvbik7CkBAIC0yMzMs
NCArMjMzLDQ4IEBAIEl0ZXJhdGlvblJlY29yZCBpdGVyYXRvckZvckl0ZXJhYmxlKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgaXRlcmFiCiAgICAgcmV0dXJuIHsgaXRlcmF0
b3IsIG5leHRNZXRob2QgfTsKIH0KIAorSXRlcmF0aW9uTW9kZSBwcmVwYXJlRm9yRmFzdEFycmF5
SXRlcmF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBp
dGVyYWJsZSwgSlNWYWx1ZSBzeW1ib2xJdGVyYXRvcikKK3sKKyAgICBpZiAoIWl0ZXJhYmxlLmlu
aGVyaXRzPEpTQXJyYXk+KHZtKSkKKyAgICAgICAgcmV0dXJuIEl0ZXJhdGlvbk1vZGU6OkdlbmVy
aWM7CisKKyAgICBpZiAoIWdsb2JhbE9iamVjdC0+YXJyYXlJdGVyYXRvclByb3RvY29sV2F0Y2hw
b2ludFNldCgpLmlzU3RpbGxWYWxpZCgpKQorICAgICAgICByZXR1cm4gSXRlcmF0aW9uTW9kZTo6
R2VuZXJpYzsKKworICAgIC8vIFRoaXMgaXMgY29ycmVjdCBiZWNhdXNlIHdlIGp1c3QgY2hlY2tl
ZCB0aGUgd2F0Y2hwb2ludCBpcyBzdGlsbCB2YWxpZC4KKyAgICBKU0Z1bmN0aW9uKiBzeW1ib2xJ
dGVyYXRvckZ1bmN0aW9uID0ganNEeW5hbWljQ2FzdDxKU0Z1bmN0aW9uKj4odm0sIHN5bWJvbEl0
ZXJhdG9yKTsKKyAgICBpZiAoIXN5bWJvbEl0ZXJhdG9yRnVuY3Rpb24pCisgICAgICAgIHJldHVy
biBJdGVyYXRpb25Nb2RlOjpHZW5lcmljOworCisgICAgLy8gV2UgZG9uJ3Qgd2FudCB0byBhbGxv
Y2F0ZSB0aGUgdmFsdWVzIGZ1bmN0aW9uIGp1c3QgdG8gY2hlY2sgaWYgaXQncyB0aGUgc2FtZSBh
cyBvdXIgZnVuY3Rpb24gYXQgc28gd2UgdXNlIHRoZSBjb25jdXJyZW50IGFjY2Vzc29yLgorICAg
IC8vIEZJWE1FOiBUaGlzIG9ubHkgd29ya3MgZm9yIGFycmF5cyBmcm9tIHRoZSBzYW1lIGdsb2Jh
bCBvYmplY3QgYXMgb3Vyc2VsdmVzIGJ1dCB3ZSBzaG91bGQgYmUgYWJsZSB0byBzdXBwb3J0IGFu
eSBwYWlyaW5nLgorICAgIGlmIChnbG9iYWxPYmplY3QtPmFycmF5UHJvdG9WYWx1ZXNGdW5jdGlv
bkNvbmN1cnJlbnRseSgpICE9IHN5bWJvbEl0ZXJhdG9yRnVuY3Rpb24pCisgICAgICAgIHJldHVy
biBJdGVyYXRpb25Nb2RlOjpHZW5lcmljOworCisgICAgcmV0dXJuIEl0ZXJhdGlvbk1vZGU6OkZh
c3RBcnJheTsKK30KKworSXRlcmF0aW9uTW9kZSBwcmVwYXJlRm9yRmFzdEFycmF5SXRlcmF0aW9u
KFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBpdGVyYWJsZSkK
K3sKKyAgICBpZiAoIWl0ZXJhYmxlLmluaGVyaXRzPEpTQXJyYXk+KHZtKSkKKyAgICAgICAgcmV0
dXJuIEl0ZXJhdGlvbk1vZGU6OkdlbmVyaWM7CisKKyAgICBKU0FycmF5KiBhcnJheSA9IGpzQ2Fz
dDxKU0FycmF5Kj4oaXRlcmFibGUpOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gYXJyYXkt
PnN0cnVjdHVyZSh2bSk7CisgICAgLy8gRklYTUU6IFdlIHdhbnQgdG8gc3VwcG9ydCBicm9hZGVy
IEpTQXJyYXlzIHNvIGxvbmcgYXMgYXJyYXlbQEBpdGVyYXRvcl0gaXMgbm90IGRlZmluZWQuCisg
ICAgaWYgKCFnbG9iYWxPYmplY3QtPmlzT3JpZ2luYWxBcnJheVN0cnVjdHVyZShzdHJ1Y3R1cmUp
KQorICAgICAgICByZXR1cm4gSXRlcmF0aW9uTW9kZTo6R2VuZXJpYzsKKworICAgIGlmICghZ2xv
YmFsT2JqZWN0LT5hcnJheUl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50U2V0KCkuaXNTdGlsbFZh
bGlkKCkpCisgICAgICAgIHJldHVybiBJdGVyYXRpb25Nb2RlOjpHZW5lcmljOworCisgICAgLy8g
Tm93LCBBcnJheSBoYXMgb3JpZ2luYWwgQXJyYXkgU3RydWN0dXJlcyBhbmQgYXJyYXlJdGVyYXRv
clByb3RvY29sV2F0Y2hwb2ludFNldCBpcyBub3QgZmlyZWQuCisgICAgLy8gVGhpcyBtZWFucywK
KyAgICAvLyAxLiBBcnJheS5wcm90b3R5cGUgaXMgW1tQcm90b3R5cGVdXS4KKyAgICAvLyAyLiBh
cnJheVtAQGl0ZXJhdG9yXSBpcyBub3Qgb3ZlcnJpZGRlbi4KKyAgICAvLyAzLiBBcnJheS5wcm90
b3R5cGVbQEBpdGVyYXRvcl0gaXMgYW4gZXhwZWN0ZWQgb25lLgorICAgIC8vIFNvLCB3ZSBjYW4g
c2F5IHRoaXMgd2lsbCBjcmVhdGUgYW4gZXhwZWN0ZWQgQXJyYXlJdGVyYXRvci4KKyAgICByZXR1
cm4gSXRlcmF0aW9uTW9kZTo6RmFzdEFycmF5OworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0l0ZXJhdG9yT3BlcmF0aW9u
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSXRlcmF0b3JPcGVyYXRpb25zLmgK
aW5kZXggMDFjZDMxYzQ5MTZjMGI1YTU1ODk3MDdkOTU0MzdmNzNkZmM1M2RiMi4uZDA0NTUyZGE5
OTVmOWI2NmM5ZDNlOGVkZmFmODNkY2NkMjc2OWE2ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSXRlcmF0b3JPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSXRlcmF0b3JPcGVyYXRpb25zLmgKQEAgLTI2LDYgKzI2LDggQEAK
IAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJJdGVyYXRpb25Nb2RlTWV0YWRhdGEuaCIKKyNp
bmNsdWRlICJKU0FycmF5SXRlcmF0b3IuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAjaW5j
bHVkZSAiSlNPYmplY3QuaCIKICNpbmNsdWRlICJUaHJvd1Njb3BlLmgiCkBAIC00MSw3ICs0Myw3
IEBAIEpTVmFsdWUgaXRlcmF0b3JOZXh0KEpTR2xvYmFsT2JqZWN0KiwgSXRlcmF0aW9uUmVjb3Jk
LCBKU1ZhbHVlIGFyZ3VtZW50ID0gSlNWYWx1CiBKU19FWFBPUlRfUFJJVkFURSBKU1ZhbHVlIGl0
ZXJhdG9yVmFsdWUoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIGl0ZXJSZXN1bHQpOwogYm9vbCBp
dGVyYXRvckNvbXBsZXRlKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBpdGVyUmVzdWx0KTsKIEpT
X0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgaXRlcmF0b3JTdGVwKEpTR2xvYmFsT2JqZWN0KiwgSXRl
cmF0aW9uUmVjb3JkKTsKLUpTX0VYUE9SVF9QUklWQVRFIHZvaWQgaXRlcmF0b3JDbG9zZShKU0ds
b2JhbE9iamVjdCosIEl0ZXJhdGlvblJlY29yZCk7CitKU19FWFBPUlRfUFJJVkFURSB2b2lkIGl0
ZXJhdG9yQ2xvc2UoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIGl0ZXJhdG9yKTsKIEpTX0VYUE9S
VF9QUklWQVRFIEpTT2JqZWN0KiBjcmVhdGVJdGVyYXRvclJlc3VsdE9iamVjdChKU0dsb2JhbE9i
amVjdCosIEpTVmFsdWUsIGJvb2wgZG9uZSk7CiAKIFN0cnVjdHVyZSogY3JlYXRlSXRlcmF0b3JS
ZXN1bHRPYmplY3RTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCYpOwpAQCAtNTMsMTIgKzU1
LDMyIEBAIEpTX0VYUE9SVF9QUklWQVRFIEl0ZXJhdGlvblJlY29yZCBpdGVyYXRvckZvckl0ZXJh
YmxlKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBpCiBKU19FWFBPUlRfUFJJVkFURSBKU1ZhbHVl
IGl0ZXJhdG9yTWV0aG9kKEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqKTsKIEpTX0VYUE9SVF9Q
UklWQVRFIGJvb2wgaGFzSXRlcmF0b3JNZXRob2QoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsK
IAorSlNfRVhQT1JUX1BSSVZBVEUgSXRlcmF0aW9uTW9kZSBwcmVwYXJlRm9yRmFzdEFycmF5SXRl
cmF0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIGl0ZXJhYmxlKTsKK0pTX0VYUE9S
VF9QUklWQVRFIEl0ZXJhdGlvbk1vZGUgcHJlcGFyZUZvckZhc3RBcnJheUl0ZXJhdGlvbihWTSYs
IEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBpdGVyYWJsZSwgSlNWYWx1ZSBzeW1ib2xJdGVyYXRv
cik7CisKIHRlbXBsYXRlPHR5cGVuYW1lIENhbGxCYWNrVHlwZT4KIHZvaWQgZm9yRWFjaEluSXRl
cmFibGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBpdGVyYWJsZSwgY29u
c3QgQ2FsbEJhY2tUeXBlJiBjYWxsYmFjaykKIHsKICAgICBhdXRvJiB2bSA9IGdldFZNKGdsb2Jh
bE9iamVjdCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCisg
ICAgaWYgKHByZXBhcmVGb3JGYXN0QXJyYXlJdGVyYXRpb24odm0sIGdsb2JhbE9iamVjdCwgaXRl
cmFibGUpID09IEl0ZXJhdGlvbk1vZGU6OkZhc3RBcnJheSkgeworICAgICAgICBhdXRvKiBhcnJh
eSA9IGpzQ2FzdDxKU0FycmF5Kj4oaXRlcmFibGUpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGlu
ZGV4ID0gMDsgaW5kZXggPCBhcnJheS0+bGVuZ3RoKCk7ICsraW5kZXgpIHsKKyAgICAgICAgICAg
IEpTVmFsdWUgbmV4dFZhbHVlID0gYXJyYXktPmdldEluZGV4KGdsb2JhbE9iamVjdCwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KGluZGV4KSk7CisgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCB2b2lkKCkpOworICAgICAgICAgICAgY2FsbGJhY2sodm0sIGdsb2JhbE9iamVjdCwg
bmV4dFZhbHVlKTsKKyAgICAgICAgICAgIGlmIChVTkxJS0VMWShzY29wZS5leGNlcHRpb24oKSkp
IHsKKyAgICAgICAgICAgICAgICBzY29wZS5yZWxlYXNlKCk7CisgICAgICAgICAgICAgICAgSlNB
cnJheUl0ZXJhdG9yKiBpdGVyYXRvciA9IEpTQXJyYXlJdGVyYXRvcjo6Y3JlYXRlKHZtLCBnbG9i
YWxPYmplY3QtPmFycmF5SXRlcmF0b3JTdHJ1Y3R1cmUoKSwgYXJyYXksIEl0ZXJhdGlvbktpbmQ6
OlZhbHVlcyk7CisgICAgICAgICAgICAgICAgaXRlcmF0b3ItPmludGVybmFsRmllbGQoSlNBcnJh
eUl0ZXJhdG9yOjpGaWVsZDo6SW5kZXgpLnNldFdpdGhvdXRXcml0ZUJhcnJpZXIoanNOdW1iZXIo
aW5kZXggKyAxKSk7CisgICAgICAgICAgICAgICAgaXRlcmF0b3JDbG9zZShnbG9iYWxPYmplY3Qs
IGl0ZXJhdG9yKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIEl0ZXJhdGlvblJlY29yZCBpdGVy
YXRpb25SZWNvcmQgPSBpdGVyYXRvckZvckl0ZXJhYmxlKGdsb2JhbE9iamVjdCwgaXRlcmFibGUp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAgICAgd2hpbGUgKHRy
dWUpIHsKQEAgLTcyLDcgKzk0LDcgQEAgdm9pZCBmb3JFYWNoSW5JdGVyYWJsZShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGl0ZXJhYmxlLCBjb25zdCBDYWwKICAgICAgICAg
Y2FsbGJhY2sodm0sIGdsb2JhbE9iamVjdCwgbmV4dFZhbHVlKTsKICAgICAgICAgaWYgKFVOTElL
RUxZKHNjb3BlLmV4Y2VwdGlvbigpKSkgewogICAgICAgICAgICAgc2NvcGUucmVsZWFzZSgpOwot
ICAgICAgICAgICAgaXRlcmF0b3JDbG9zZShnbG9iYWxPYmplY3QsIGl0ZXJhdGlvblJlY29yZCk7
CisgICAgICAgICAgICBpdGVyYXRvckNsb3NlKGdsb2JhbE9iamVjdCwgaXRlcmF0aW9uUmVjb3Jk
Lml0ZXJhdG9yKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KQEAgLTg0
LDYgKzEwNiwyMyBAQCB2b2lkIGZvckVhY2hJbkl0ZXJhYmxlKEpTR2xvYmFsT2JqZWN0JiBnbG9i
YWxPYmplY3QsIEpTT2JqZWN0KiBpdGVyYWJsZSwgSlNWYWx1ZQogICAgIGF1dG8mIHZtID0gZ2V0
Vk0oJmdsb2JhbE9iamVjdCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogCisgICAgaWYgKHByZXBhcmVGb3JGYXN0QXJyYXlJdGVyYXRpb24odm0sICZnbG9iYWxP
YmplY3QsIGl0ZXJhYmxlLCBpdGVyYXRvck1ldGhvZCkgPT0gSXRlcmF0aW9uTW9kZTo6RmFzdEFy
cmF5KSB7CisgICAgICAgIGF1dG8qIGFycmF5ID0ganNDYXN0PEpTQXJyYXkqPihpdGVyYWJsZSk7
CisgICAgICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8IGFycmF5LT5sZW5ndGgo
KTsgKytpbmRleCkgeworICAgICAgICAgICAgSlNWYWx1ZSBuZXh0VmFsdWUgPSBhcnJheS0+Z2V0
SW5kZXgoJmdsb2JhbE9iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluZGV4KSk7CisgICAg
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworICAgICAgICAgICAg
Y2FsbGJhY2sodm0sIGdsb2JhbE9iamVjdCwgbmV4dFZhbHVlKTsKKyAgICAgICAgICAgIGlmIChV
TkxJS0VMWShzY29wZS5leGNlcHRpb24oKSkpIHsKKyAgICAgICAgICAgICAgICBzY29wZS5yZWxl
YXNlKCk7CisgICAgICAgICAgICAgICAgSlNBcnJheUl0ZXJhdG9yKiBpdGVyYXRvciA9IEpTQXJy
YXlJdGVyYXRvcjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QuYXJyYXlJdGVyYXRvclN0cnVjdHVy
ZSgpLCBhcnJheSwgSXRlcmF0aW9uS2luZDo6VmFsdWVzKTsKKyAgICAgICAgICAgICAgICBpdGVy
YXRvci0+aW50ZXJuYWxGaWVsZChKU0FycmF5SXRlcmF0b3I6OkZpZWxkOjpJbmRleCkuc2V0V2l0
aG91dFdyaXRlQmFycmllcihqc051bWJlcihpbmRleCArIDEpKTsKKyAgICAgICAgICAgICAgICBp
dGVyYXRvckNsb3NlKCZnbG9iYWxPYmplY3QsIGl0ZXJhdG9yKTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuOworICAgIH0K
KwogICAgIGF1dG8gaXRlcmF0aW9uUmVjb3JkID0gaXRlcmF0b3JGb3JJdGVyYWJsZSgmZ2xvYmFs
T2JqZWN0LCBpdGVyYWJsZSwgaXRlcmF0b3JNZXRob2QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIHZvaWQoKSk7CiAgICAgd2hpbGUgKHRydWUpIHsKQEAgLTk3LDcgKzEzNiw3IEBA
IHZvaWQgZm9yRWFjaEluSXRlcmFibGUoSlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgSlNP
YmplY3QqIGl0ZXJhYmxlLCBKU1ZhbHVlCiAgICAgICAgIGNhbGxiYWNrKHZtLCBnbG9iYWxPYmpl
Y3QsIG5leHRWYWx1ZSk7CiAgICAgICAgIGlmIChVTkxJS0VMWShzY29wZS5leGNlcHRpb24oKSkp
IHsKICAgICAgICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICAgICAgICAgIGl0ZXJhdG9yQ2xv
c2UoJmdsb2JhbE9iamVjdCwgaXRlcmF0aW9uUmVjb3JkKTsKKyAgICAgICAgICAgIGl0ZXJhdG9y
Q2xvc2UoJmdsb2JhbE9iamVjdCwgaXRlcmF0aW9uUmVjb3JkLml0ZXJhdG9yKTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdl
TG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNmQzNWRlNGFkNDliZGUyMTE0YzdmNzU4ZDJj
OTE5ZGEwYmQxODU0OS4uNGQ4MjkyOTg4NTU1ZTA4NWM5MmRiN2FjNTcwYWZlYTMxNzk4NzJiNiAx
MDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxOCBAQAorMjAyMS0wMi0wNyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUu
Y29tPgorCisgICAgICAgIFtKU0NdIEMrKyBpdGVyYXRpb24gc2hvdWxkIHN1cHBvcnQgZmFzdCBp
dGVyYXRvciBwcm90b2NvbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjIxNTI2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBtaWNyb2JlbmNobWFya3MvbWFwLWNvbnN0cnVjdG9yLmpzOiBBZGRlZC4KKyAg
ICAgICAgKHRlc3QpOgorICAgICAgICAqIHN0cmVzcy9tYXAtY29uc3RydWN0b3ItaG9sZS10aHJv
dy5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgIChzaG91bGRUaHJvdyk6
CisgICAgICAgICh2YWx1ZXMuX19wcm90b19fLnJldHVybik6CisgICAgICAgIChNYXAucHJvdG90
eXBlKToKKwogMjAyMS0wMi0wNiAgQWxleGV5IFNodmF5a2EgIDxzaHZhaWthbGVzaEBnbWFpbC5j
b20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjI2NDU3NCk6IFVuY2hlY2tlZCBKUyBleGNlcHRp
b24gaW4gdmFsaWRhdGVBbmRBcHBseVByb3BlcnR5RGVzY3JpcHRvcigpCmRpZmYgLS1naXQgYS9K
U1Rlc3RzL21pY3JvYmVuY2htYXJrcy9tYXAtY29uc3RydWN0b3IuanMgYi9KU1Rlc3RzL21pY3Jv
YmVuY2htYXJrcy9tYXAtY29uc3RydWN0b3IuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTZiMjBhNmZmZTMxYTZj
NTEzMWEwOGE5MGI0MzRkYmVhMDBhNTBmNgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvbWlj
cm9iZW5jaG1hcmtzL21hcC1jb25zdHJ1Y3Rvci5qcwpAQCAtMCwwICsxLDMxIEBACitmdW5jdGlv
biB0ZXN0KGFycmF5KQoreworICAgIHJldHVybiBuZXcgTWFwKGFycmF5KTsKK30KK25vSW5saW5l
KHRlc3QpOworCit2YXIgYXJyYXkgPSBbCisgICAgWzAsIDBdLAorICAgIFsxLCAwXSwKKyAgICBb
MiwgMF0sCisgICAgWzMsIDBdLAorICAgIFs0LCAwXSwKKyAgICBbNSwgMF0sCisgICAgWzYsIDBd
LAorICAgIFs3LCAwXSwKKyAgICBbOCwgMF0sCisgICAgWzksIDBdLAorICAgIFsxMCwgMF0sCisg
ICAgWzExLCAwXSwKKyAgICBbMTIsIDBdLAorICAgIFsxMywgMF0sCisgICAgWzE0LCAwXSwKKyAg
ICBbMTUsIDBdLAorICAgIFsxNiwgMF0sCisgICAgWzE3LCAwXSwKKyAgICBbMTgsIDBdLAorICAg
IFsxOSwgMF0sCitdOworCitmb3IgKHZhciBpID0gMDsgaSA8IDFlNDsgKytpKQorICAgIHRlc3Qo
YXJyYXkpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvbWFwLWNvbnN0cnVjdG9yLWhvbGUt
dGhyb3cuanMgYi9KU1Rlc3RzL3N0cmVzcy9tYXAtY29uc3RydWN0b3ItaG9sZS10aHJvdy5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5iYTNmMDc2Y2NiOWVhOTAwM2EwYWU4MGMyZTU2NjE4MzIyYmEzZWE5Ci0tLSAv
ZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvbWFwLWNvbnN0cnVjdG9yLWhvbGUtdGhyb3cu
anMKQEAgLTAsMCArMSwzOCBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkg
eworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
J2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZFRocm93KGZ1bmMs
IGVycm9yTWVzc2FnZSkgeworICAgIHZhciBlcnJvclRocm93biA9IGZhbHNlOworICAgIHZhciBl
cnJvciA9IG51bGw7CisgICAgdHJ5IHsKKyAgICAgICAgZnVuYygpOworICAgIH0gY2F0Y2ggKGUp
IHsKKyAgICAgICAgZXJyb3JUaHJvd24gPSB0cnVlOworICAgICAgICBlcnJvciA9IGU7CisgICAg
fQorICAgIGlmICghZXJyb3JUaHJvd24pCisgICAgICAgIHRocm93IG5ldyBFcnJvcignbm90IHRo
cm93bicpOworICAgIGlmIChTdHJpbmcoZXJyb3IpICE9PSBlcnJvck1lc3NhZ2UpCisgICAgICAg
IHRocm93IG5ldyBFcnJvcihgYmFkIGVycm9yOiAke1N0cmluZyhlcnJvcil9YCk7Cit9CisKK3Zh
ciBpdGVyYXRvcjsKK1tdLnZhbHVlcygpLl9fcHJvdG9fXy5yZXR1cm4gPSBmdW5jdGlvbiAoKSB7
CisgICAgaXRlcmF0b3IgPSB0aGlzOworfTsKKwordmFyIGFycmF5ID0gWworICAgIFswLCAwXSwK
KyAgICBbMSwgMF0sCisgICAgWzIsIDBdLAorXTsKK01hcC5wcm90b3R5cGUuc2V0ID0gZnVuY3Rp
b24gKCkgeworICAgIHRocm93IG5ldyBFcnJvcigib2siKTsKK307CitzaG91bGRUaHJvdygoKSA9
PiB7CisgICAgdmFyIG1hcCA9IG5ldyBNYXAoYXJyYXkpOworfSwgYEVycm9yOiBva2ApOworc2hv
dWxkQmUoaXRlcmF0b3IgIT09IHVuZGVmaW5lZCwgdHJ1ZSk7CisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>419534</attachid>
            <date>2021-02-07 02:57:51 -0800</date>
            <delta_ts>2021-02-07 03:46:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221526-20210207025750.patch</filename>
            <type>text/plain</type>
            <size>20344</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyNDcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
NjhmOWU5YzJiOTMxYzhkODEzNDA3MDY5NDExOWNhOTI2YWE0MDc3Li5iOThhNTYzNmFmNGUxZGQ1
YTU3OTM3M2ZlYmJhMTZiNmU1NDMxMzI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNSBAQAorMjAyMS0wMi0wNyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEMrKyBpdGVyYXRpb24gc2hvdWxkIHN1cHBvcnQgZmFzdCBpdGVy
YXRvciBwcm90b2NvbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjIxNTI2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVGhpcyBwYXRjaCBhZGRzIGZhc3QgaXRlcmF0aW9uIHByb3RvY29sIHN1cHBvcnQgaW4g
QysrIGl0ZXJhdGlvbiAoZm9yRWFjaEl0ZXJhYmxlKS4KKyAgICAgICAgSW4gSlMsIHdlIGhhdmUg
b3BfaXRlcmF0b3Jfb3BlbiAvIG9wX2l0ZXJhdG9yX25leHQgdG8gaXRlcmF0ZSBhcnJheSBxdWlj
a2x5LgorICAgICAgICBCdXQgd2UgZG8gbm90IHVzZSB0aGlzIGZlYXR1cmUgaW4gQysrIGZvckVh
Y2hJdGVyYWJsZS4gSW4gdGhpcyBwYXRjaCB3ZSBpbnRlZ3JhdGUKKyAgICAgICAgdGhlIHNhbWUg
KG9yIGEgYml0IG1vcmUgZWZmaWNpZW50IHNpbmNlIHdlIGNhbiBhdm9pZCBjcmVhdGluZyBKU0Fy
cmF5SXRlcmF0b3IpIG1lY2hhbmlzbQorICAgICAgICBzbyB0aGF0IGl0ZXJhdGlvbiBpbiBDKysg
Z2V0cyBmYXN0ZXIgZm9yIG5vcm1hbCBhcnJheXMuCisKKyAgICAgICAgV2Ugb2JzZXJ2ZWQgMS45
eCBmYXN0ZXIgaW4gTWFwIGNyZWF0aW9uIHdpdGggYXJyYXlzLgorCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVG9UICAgICAgICAgICAgICAgICAgICAgUGF0Y2hlZAor
CisgICAgICAgICAgICBtYXAtY29uc3RydWN0b3IgICAgICAgMzUuNzQ0NistMC4yMzU0ICAgICBe
ICAgICAxOC43NTE2Ky0wLjQ1MzQgICAgICAgIF4gZGVmaW5pdGVseSAxLjkwNjJ4IGZhc3Rlcgor
CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBpbnNwZWN0b3IvSlNJbmplY3RlZFNj
cmlwdEhvc3QuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpKU0luamVjdGVkU2NyaXB0SG9zdDo6
aXRlcmF0b3JFbnRyaWVzKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHA6
CisgICAgICAgIChKU0M6Oml0ZXJhdG9yT3BlblRyeUZhc3RJbXBsKToKKyAgICAgICAgKiBydW50
aW1lL0l0ZXJhdG9yT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6Oml0ZXJhdG9yQ2xvc2Up
OgorICAgICAgICAoSlNDOjpwcmVwYXJlRm9yRmFzdEFycmF5SXRlcmF0aW9uKToKKyAgICAgICAg
KiBydW50aW1lL0l0ZXJhdG9yT3BlcmF0aW9ucy5oOgorICAgICAgICAoSlNDOjpmb3JFYWNoSW5J
dGVyYWJsZSk6CisgICAgICAgICogcnVudGltZS9KU0FycmF5SXRlcmF0b3IuaDoKKwogMjAyMS0w
Mi0wNiAgQWxleGV5IFNodmF5a2EgIDxzaHZhaWthbGVzaEBnbWFpbC5jb20+CiAKICAgICAgICAg
UkVHUkVTU0lPTiAocjI2NDU3NCk6IFVuY2hlY2tlZCBKUyBleGNlcHRpb24gaW4gdmFsaWRhdGVB
bmRBcHBseVByb3BlcnR5RGVzY3JpcHRvcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50
eHQKaW5kZXggNGRmOGEyNTBjMGM5YmQyMjNlNTY4NmFkN2M1ZjY3ZjlhMDEwZTc4MC4uMjUyZDRi
Y2M1OGVjOTE2MmYzMmNhYzllMmJmODM0YTk2ODA4MzJkZCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
TWFrZUxpc3RzLnR4dApAQCAtOTIyLDYgKzkyMiw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklW
QVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcnVudGltZS9KU0FycmF5QnVmZmVyUHJvdG90eXBl
LmgKICAgICBydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmgKICAgICBydW50aW1lL0pTQXJyYXlC
dWZmZXJWaWV3SW5saW5lcy5oCisgICAgcnVudGltZS9KU0FycmF5SXRlcmF0b3IuaAogICAgIHJ1
bnRpbWUvSlNCaWdJbnQuaAogICAgIHJ1bnRpbWUvSlNDQ29uZmlnLmgKICAgICBydW50aW1lL0pT
Q0lubGluZXMuaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkOTIxMjdmY2Q0Zjhk
NmFlODY0OTdkOThjNmVjMWEzNTdlYTAzMmQwLi41NzA0ZTQyNzczMzk1MDliMjE4YTJlZTIyZDJj
YmMxZTYxMDI4MzBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTA5Nyw3ICsx
MDk3LDcgQEAKIAkJNTM5OTMwQzgyMkFEM0I5QTAwNTFDREUyIC8qIFdlYWtPYmplY3RSZWZDb25z
dHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTM5OTMwQzcyMkFEM0I5QTAwNTFDREUyIC8qIFdlYWtPYmplY3RSZWZDb25zdHJ1Y3Rvci5oICov
OyB9OwogCQk1MzlCRkJBRTIyQUQzQzNBMDAyM0Y0QzAgLyogV2Vha09iamVjdFJlZlByb3RvdHlw
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM5QkZC
QUQyMkFEM0MzQTAwMjNGNEMwIC8qIFdlYWtPYmplY3RSZWZQcm90b3R5cGUuaCAqLzsgfTsKIAkJ
NTM5QkZCQjAyMkFEM0NEQzAwMjNGNEMwIC8qIEpTV2Vha09iamVjdFJlZi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM5QkZCQUYyMkFEM0NEQzAwMjNG
NEMwIC8qIEpTV2Vha09iamVjdFJlZi5oICovOyB9OwotCQk1MzlERDdGNTIzQzFCQkI1MDA5MDVG
MTMgLyogSlNBcnJheUl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MzlERDdGNDIzQzFCQkE5MDA5MDVGMTMgLyogSlNBcnJheUl0ZXJhdG9y
LmggKi87IH07CisJCTUzOUREN0Y1MjNDMUJCQjUwMDkwNUYxMyAvKiBKU0FycmF5SXRlcmF0b3Iu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzOUREN0Y0
MjNDMUJCQTkwMDkwNUYxMyAvKiBKU0FycmF5SXRlcmF0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MzlGQjhCQTFDOTlEQTdDMDA5NDBGQTEg
LyogSlNBcnJheUlubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUzOUZCOEI5MUM5OURBN0MwMDk0MEZBMSAvKiBKU0FycmF5SW5saW5lcy5oICov
OyB9OwogCQk1M0I0QkQxMjFGNjhCMzI1MDBEMkJFQTMgLyogV2FzbU9wcy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTMzQjE1REUxREM3RjQ2MzAwNEQ1
MDBBIC8qIFdhc21PcHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk1M0I2MDFFQzIwMzRCOEM1MDA2QkU2NjcgLyogSlNDYXN0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1M0I2MDFFQjIwMzRCOEM1MDA2
QkU2NjcgLyogSlNDYXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJ
bmplY3RlZFNjcmlwdEhvc3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9K
U0luamVjdGVkU2NyaXB0SG9zdC5jcHAKaW5kZXggYTk4YmQ4NmJkNjA3ZTIyYjQ4ZGQwMTJkNmM4
NmQ3Nzc3NjQxOGNiNi4uOTg2OWYxZGEwYjVmZWY4MzY0OTMxYjQzYWZlMmNhMjM4ZDJlYzU0MiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0luamVjdGVkU2Ny
aXB0SG9zdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0luamVj
dGVkU2NyaXB0SG9zdC5jcHAKQEAgLTYxMyw3ICs2MTMsNyBAQCBKU1ZhbHVlIEpTSW5qZWN0ZWRT
Y3JpcHRIb3N0OjppdGVyYXRvckVudHJpZXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbAogICAgICAgICBhcnJheS0+cHV0RGlyZWN0SW5kZXgoZ2xvYmFsT2JqZWN0LCBpLCBlbnRy
eSk7CiAgICAgICAgIGlmIChVTkxJS0VMWShzY29wZS5leGNlcHRpb24oKSkpIHsKICAgICAgICAg
ICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICAgICAgICAgIGl0ZXJhdG9yQ2xvc2UoZ2xvYmFsT2Jq
ZWN0LCBpdGVyYXRpb25SZWNvcmQpOworICAgICAgICAgICAgaXRlcmF0b3JDbG9zZShnbG9iYWxP
YmplY3QsIGl0ZXJhdGlvblJlY29yZC5pdGVyYXRvcik7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbW1vblNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21t
b25TbG93UGF0aHMuY3BwCmluZGV4IDQ1MTYzMTkzOTkxZDM2MzkzNGJmZTkyYTJmOTcyZGQ2YmEw
NzNmZTkuLjczZDFiOGY3YjhhNmUwMTRmNjU1YmEzZjc2ZWRjZGYzNzA5NzQ0NGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcApAQCAt
MzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkVycm9ySGFuZGxpbmdTY29wZS5oIgogI2luY2x1ZGUg
IkV4Y2VwdGlvbkZ1enouaCIKICNpbmNsdWRlICJGcmFtZVRyYWNlcnMuaCIKKyNpbmNsdWRlICJJ
dGVyYXRvck9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJKU0FycmF5SXRlcmF0b3IuaCIKICNpbmNs
dWRlICJKU0FzeW5jR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgpAQCAtODYz
LDM3ICs4NjQsMTkgQEAgQUxXQVlTX0lOTElORSBTbG93UGF0aFJldHVyblR5cGUgaXRlcmF0b3JP
cGVuVHJ5RmFzdEltcGwoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIGMKICAgICBKU1ZhbHVlIHN5bWJv
bEl0ZXJhdG9yID0gR0VUX0MoYnl0ZWNvZGUubV9zeW1ib2xJdGVyYXRvcikuanNWYWx1ZSgpOwog
ICAgIGF1dG8mIGl0ZXJhdG9yID0gR0VUKGJ5dGVjb2RlLm1faXRlcmF0b3IpOwogCi0gICAgYXV0
byBwcmVwYXJlRm9yRmFzdEFycmF5SXRlcmF0aW9uID0gWyZdIHsKLSAgICAgICAgaWYgKCFnbG9i
YWxPYmplY3QtPmFycmF5SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnRTZXQoKS5pc1N0aWxsVmFs
aWQoKSkKLSAgICAgICAgICAgIHJldHVybiBJdGVyYXRpb25Nb2RlOjpHZW5lcmljOwotCi0gICAg
ICAgIC8vIFRoaXMgaXMgY29ycmVjdCBiZWNhdXNlIHdlIGp1c3QgY2hlY2tlZCB0aGUgd2F0Y2hw
b2ludCBpcyBzdGlsbCB2YWxpZC4KLSAgICAgICAgSlNGdW5jdGlvbiogc3ltYm9sSXRlcmF0b3JG
dW5jdGlvbiA9IGpzRHluYW1pY0Nhc3Q8SlNGdW5jdGlvbio+KHZtLCBzeW1ib2xJdGVyYXRvcik7
Ci0gICAgICAgIGlmICghc3ltYm9sSXRlcmF0b3JGdW5jdGlvbikKLSAgICAgICAgICAgIHJldHVy
biBJdGVyYXRpb25Nb2RlOjpHZW5lcmljOyAKLQotICAgICAgICAvLyBXZSBkb24ndCB3YW50IHRv
IGFsbG9jYXRlIHRoZSB2YWx1ZXMgZnVuY3Rpb24ganVzdCB0byBjaGVjayBpZiBpdCdzIHRoZSBz
YW1lIGFzIG91ciBmdW5jdGlvbiBhdCBzbyB3ZSB1c2UgdGhlIGNvbmN1cnJlbnQgYWNjZXNzb3Iu
Ci0gICAgICAgIC8vIEZJWE1FOiBUaGlzIG9ubHkgd29ya3MgZm9yIGFycmF5cyBmcm9tIHRoZSBz
YW1lIGdsb2JhbCBvYmplY3QgYXMgb3Vyc2VsdmVzIGJ1dCB3ZSBzaG91bGQgYmUgYWJsZSB0byBz
dXBwb3J0IGFueSBwYWlyaW5nLgotICAgICAgICBpZiAoZ2xvYmFsT2JqZWN0LT5hcnJheVByb3Rv
VmFsdWVzRnVuY3Rpb25Db25jdXJyZW50bHkoKSAhPSBzeW1ib2xJdGVyYXRvckZ1bmN0aW9uKQot
ICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvbk1vZGU6OkdlbmVyaWM7Ci0KKyAgICBpZiAocHJl
cGFyZUZvckZhc3RBcnJheUl0ZXJhdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBpdGVyYWJsZSwgc3lt
Ym9sSXRlcmF0b3IpID09IEl0ZXJhdGlvbk1vZGU6OkZhc3RBcnJheSkgewogICAgICAgICAvLyBX
ZSBzaG91bGQgYmUgZ29vZCB0byBnby4KICAgICAgICAgbWV0YWRhdGEubV9pdGVyYXRpb25NZXRh
ZGF0YS5zZWVuTW9kZXMgPSBtZXRhZGF0YS5tX2l0ZXJhdGlvbk1ldGFkYXRhLnNlZW5Nb2RlcyB8
IEl0ZXJhdGlvbk1vZGU6OkZhc3RBcnJheTsKICAgICAgICAgR0VUKGJ5dGVjb2RlLm1fbmV4dCkg
PSBKU1ZhbHVlKCk7CiAgICAgICAgIGF1dG8qIGl0ZXJhdGVkT2JqZWN0ID0ganNDYXN0PEpTT2Jq
ZWN0Kj4oaXRlcmFibGUpOwogICAgICAgICBpdGVyYXRvciA9IEpTQXJyYXlJdGVyYXRvcjo6Y3Jl
YXRlKHZtLCBnbG9iYWxPYmplY3QtPmFycmF5SXRlcmF0b3JTdHJ1Y3R1cmUoKSwgaXRlcmF0ZWRP
YmplY3QsIEl0ZXJhdGlvbktpbmQ6OlZhbHVlcyk7CiAgICAgICAgIFBST0ZJTEVfVkFMVUVfSU4o
aXRlcmF0b3IuanNWYWx1ZSgpLCBtX2l0ZXJhdG9yUHJvZmlsZSk7Ci0gICAgICAgIHJldHVybiBJ
dGVyYXRpb25Nb2RlOjpGYXN0QXJyYXk7Ci0gICAgfTsKLQotICAgIGlmIChpdGVyYWJsZS5pbmhl
cml0czxKU0FycmF5Pih2bSkpIHsKLSAgICAgICAgaWYgKHByZXBhcmVGb3JGYXN0QXJyYXlJdGVy
YXRpb24oKSA9PSBJdGVyYXRpb25Nb2RlOjpGYXN0QXJyYXkpCi0gICAgICAgICAgICByZXR1cm4g
ZW5jb2RlUmVzdWx0KHBjLCByZWludGVycHJldF9jYXN0PHZvaWQqPihJdGVyYXRpb25Nb2RlOjpG
YXN0QXJyYXkpKTsKKyAgICAgICAgcmV0dXJuIGVuY29kZVJlc3VsdChwYywgcmVpbnRlcnByZXRf
Y2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8dWludHB0cl90PihJdGVyYXRpb25Nb2RlOjpGYXN0QXJy
YXkpKSk7CiAgICAgfQogCiAgICAgLy8gUmV0dXJuIHRvIHRoZSBieXRlY29kZSB0byB0cnkgaW4g
Z2VuZXJpYyBtb2RlLgogICAgIG1ldGFkYXRhLm1faXRlcmF0aW9uTWV0YWRhdGEuc2Vlbk1vZGVz
ID0gbWV0YWRhdGEubV9pdGVyYXRpb25NZXRhZGF0YS5zZWVuTW9kZXMgfCBJdGVyYXRpb25Nb2Rl
OjpHZW5lcmljOwotICAgIHJldHVybiBlbmNvZGVSZXN1bHQocGMsIHJlaW50ZXJwcmV0X2Nhc3Q8
dm9pZCo+KEl0ZXJhdGlvbk1vZGU6OkdlbmVyaWMpKTsKKyAgICByZXR1cm4gZW5jb2RlUmVzdWx0
KHBjLCByZWludGVycHJldF9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KEl0ZXJh
dGlvbk1vZGU6OkdlbmVyaWMpKSk7CiB9CiAKIEpTQ19ERUZJTkVfQ09NTU9OX1NMT1dfUEFUSChp
dGVyYXRvcl9vcGVuX3RyeV9mYXN0X25hcnJvdykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0l0ZXJhdG9yT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JdGVyYXRvck9wZXJhdGlvbnMuY3BwCmluZGV4IDY0MDU0YjgwODc2YTlm
MWI0YjcyZjg0ZTZmYWU4MjY3ZWJlMzNjNzkuLjEyMDJjMDE2OTA3MmMzMjJmYzViOGMwNGZmNjQ4
YzFjYzU0NzkzYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0l0
ZXJhdG9yT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SXRlcmF0b3JPcGVyYXRpb25zLmNwcApAQCAtODIsNyArODIsNyBAQCBKU1ZhbHVlIGl0ZXJhdG9y
U3RlcChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBJdGVyYXRpb25SZWNvcmQgaXRlcmF0
aW9uUmVjbwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXZvaWQgaXRlcmF0b3JDbG9zZShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBJdGVyYXRpb25SZWNvcmQgaXRlcmF0aW9uUmVjb3Jk
KQordm9pZCBpdGVyYXRvckNsb3NlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFs
dWUgaXRlcmF0b3IpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtOTQsNyArOTQsNyBA
QCB2b2lkIGl0ZXJhdG9yQ2xvc2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSXRlcmF0
aW9uUmVjb3JkIGl0ZXJhdGlvblJlY29yZAogICAgICAgICBjYXRjaFNjb3BlLmNsZWFyRXhjZXB0
aW9uKCk7CiAgICAgfQogCi0gICAgSlNWYWx1ZSByZXR1cm5GdW5jdGlvbiA9IGl0ZXJhdGlvblJl
Y29yZC5pdGVyYXRvci5nZXQoZ2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT5yZXR1cm5L
ZXl3b3JkKTsKKyAgICBKU1ZhbHVlIHJldHVybkZ1bmN0aW9uID0gaXRlcmF0b3IuZ2V0KGdsb2Jh
bE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+cmV0dXJuS2V5d29yZCk7CiAgICAgaWYgKFVOTElL
RUxZKHRocm93U2NvcGUuZXhjZXB0aW9uKCkpIHx8IHJldHVybkZ1bmN0aW9uLmlzVW5kZWZpbmVk
T3JOdWxsKCkpIHsKICAgICAgICAgaWYgKGV4Y2VwdGlvbikKICAgICAgICAgICAgIHRocm93RXhj
ZXB0aW9uKGdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgZXhjZXB0aW9uKTsKQEAgLTExMiw3ICsx
MTIsNyBAQCB2b2lkIGl0ZXJhdG9yQ2xvc2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SXRlcmF0aW9uUmVjb3JkIGl0ZXJhdGlvblJlY29yZAogCiAgICAgTWFya2VkQXJndW1lbnRCdWZm
ZXIgcmV0dXJuRnVuY3Rpb25Bcmd1bWVudHM7CiAgICAgQVNTRVJUKCFyZXR1cm5GdW5jdGlvbkFy
Z3VtZW50cy5oYXNPdmVyZmxvd2VkKCkpOwotICAgIEpTVmFsdWUgaW5uZXJSZXN1bHQgPSBjYWxs
KGdsb2JhbE9iamVjdCwgcmV0dXJuRnVuY3Rpb24sIHJldHVybkZ1bmN0aW9uQ2FsbERhdGEsIGl0
ZXJhdGlvblJlY29yZC5pdGVyYXRvciwgcmV0dXJuRnVuY3Rpb25Bcmd1bWVudHMpOworICAgIEpT
VmFsdWUgaW5uZXJSZXN1bHQgPSBjYWxsKGdsb2JhbE9iamVjdCwgcmV0dXJuRnVuY3Rpb24sIHJl
dHVybkZ1bmN0aW9uQ2FsbERhdGEsIGl0ZXJhdG9yLCByZXR1cm5GdW5jdGlvbkFyZ3VtZW50cyk7
CiAKICAgICBpZiAoZXhjZXB0aW9uKSB7CiAgICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgZXhjZXB0aW9uKTsKQEAgLTIzMyw0ICsyMzMsNDggQEAgSXRlcmF0
aW9uUmVjb3JkIGl0ZXJhdG9yRm9ySXRlcmFibGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYWx1ZSBpdGVyYWIKICAgICByZXR1cm4geyBpdGVyYXRvciwgbmV4dE1ldGhvZCB9Owog
fQogCitJdGVyYXRpb25Nb2RlIHByZXBhcmVGb3JGYXN0QXJyYXlJdGVyYXRpb24oVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGl0ZXJhYmxlLCBKU1ZhbHVlIHN5
bWJvbEl0ZXJhdG9yKQoreworICAgIGlmICghaXRlcmFibGUuaW5oZXJpdHM8SlNBcnJheT4odm0p
KQorICAgICAgICByZXR1cm4gSXRlcmF0aW9uTW9kZTo6R2VuZXJpYzsKKworICAgIGlmICghZ2xv
YmFsT2JqZWN0LT5hcnJheUl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50U2V0KCkuaXNTdGlsbFZh
bGlkKCkpCisgICAgICAgIHJldHVybiBJdGVyYXRpb25Nb2RlOjpHZW5lcmljOworCisgICAgLy8g
VGhpcyBpcyBjb3JyZWN0IGJlY2F1c2Ugd2UganVzdCBjaGVja2VkIHRoZSB3YXRjaHBvaW50IGlz
IHN0aWxsIHZhbGlkLgorICAgIEpTRnVuY3Rpb24qIHN5bWJvbEl0ZXJhdG9yRnVuY3Rpb24gPSBq
c0R5bmFtaWNDYXN0PEpTRnVuY3Rpb24qPih2bSwgc3ltYm9sSXRlcmF0b3IpOworICAgIGlmICgh
c3ltYm9sSXRlcmF0b3JGdW5jdGlvbikKKyAgICAgICAgcmV0dXJuIEl0ZXJhdGlvbk1vZGU6Okdl
bmVyaWM7CisKKyAgICAvLyBXZSBkb24ndCB3YW50IHRvIGFsbG9jYXRlIHRoZSB2YWx1ZXMgZnVu
Y3Rpb24ganVzdCB0byBjaGVjayBpZiBpdCdzIHRoZSBzYW1lIGFzIG91ciBmdW5jdGlvbiBhdCBz
byB3ZSB1c2UgdGhlIGNvbmN1cnJlbnQgYWNjZXNzb3IuCisgICAgLy8gRklYTUU6IFRoaXMgb25s
eSB3b3JrcyBmb3IgYXJyYXlzIGZyb20gdGhlIHNhbWUgZ2xvYmFsIG9iamVjdCBhcyBvdXJzZWx2
ZXMgYnV0IHdlIHNob3VsZCBiZSBhYmxlIHRvIHN1cHBvcnQgYW55IHBhaXJpbmcuCisgICAgaWYg
KGdsb2JhbE9iamVjdC0+YXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9uQ29uY3VycmVudGx5KCkgIT0g
c3ltYm9sSXRlcmF0b3JGdW5jdGlvbikKKyAgICAgICAgcmV0dXJuIEl0ZXJhdGlvbk1vZGU6Okdl
bmVyaWM7CisKKyAgICByZXR1cm4gSXRlcmF0aW9uTW9kZTo6RmFzdEFycmF5OworfQorCitJdGVy
YXRpb25Nb2RlIHByZXBhcmVGb3JGYXN0QXJyYXlJdGVyYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGl0ZXJhYmxlKQoreworICAgIGlmICghaXRlcmFi
bGUuaW5oZXJpdHM8SlNBcnJheT4odm0pKQorICAgICAgICByZXR1cm4gSXRlcmF0aW9uTW9kZTo6
R2VuZXJpYzsKKworICAgIEpTQXJyYXkqIGFycmF5ID0ganNDYXN0PEpTQXJyYXkqPihpdGVyYWJs
ZSk7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBhcnJheS0+c3RydWN0dXJlKHZtKTsKKyAg
ICAvLyBGSVhNRTogV2Ugd2FudCB0byBzdXBwb3J0IGJyb2FkZXIgSlNBcnJheXMgc28gbG9uZyBh
cyBhcnJheVtAQGl0ZXJhdG9yXSBpcyBub3QgZGVmaW5lZC4KKyAgICBpZiAoIWdsb2JhbE9iamVj
dC0+aXNPcmlnaW5hbEFycmF5U3RydWN0dXJlKHN0cnVjdHVyZSkpCisgICAgICAgIHJldHVybiBJ
dGVyYXRpb25Nb2RlOjpHZW5lcmljOworCisgICAgaWYgKCFnbG9iYWxPYmplY3QtPmFycmF5SXRl
cmF0b3JQcm90b2NvbFdhdGNocG9pbnRTZXQoKS5pc1N0aWxsVmFsaWQoKSkKKyAgICAgICAgcmV0
dXJuIEl0ZXJhdGlvbk1vZGU6OkdlbmVyaWM7CisKKyAgICAvLyBOb3csIEFycmF5IGhhcyBvcmln
aW5hbCBBcnJheSBTdHJ1Y3R1cmVzIGFuZCBhcnJheUl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50
U2V0IGlzIG5vdCBmaXJlZC4KKyAgICAvLyBUaGlzIG1lYW5zLAorICAgIC8vIDEuIEFycmF5LnBy
b3RvdHlwZSBpcyBbW1Byb3RvdHlwZV1dLgorICAgIC8vIDIuIGFycmF5W0BAaXRlcmF0b3JdIGlz
IG5vdCBvdmVycmlkZGVuLgorICAgIC8vIDMuIEFycmF5LnByb3RvdHlwZVtAQGl0ZXJhdG9yXSBp
cyBhbiBleHBlY3RlZCBvbmUuCisgICAgLy8gU28sIHdlIGNhbiBzYXkgdGhpcyB3aWxsIGNyZWF0
ZSBhbiBleHBlY3RlZCBBcnJheUl0ZXJhdG9yLgorICAgIHJldHVybiBJdGVyYXRpb25Nb2RlOjpG
YXN0QXJyYXk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSXRlcmF0b3JPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JdGVyYXRvck9wZXJhdGlvbnMuaAppbmRleCAwMWNkMzFjNDkxNmMw
YjVhNTU4OTcwN2Q5NTQzN2Y3M2RmYzUzZGIyLi5kMDQ1NTJkYTk5NWY5YjY2YzlkM2U4ZWRmYWY4
M2RjY2QyNzY5YTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
dGVyYXRvck9wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
dGVyYXRvck9wZXJhdGlvbnMuaApAQCAtMjYsNiArMjYsOCBAQAogCiAjcHJhZ21hIG9uY2UKIAor
I2luY2x1ZGUgIkl0ZXJhdGlvbk1vZGVNZXRhZGF0YS5oIgorI2luY2x1ZGUgIkpTQXJyYXlJdGVy
YXRvci5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKICNpbmNsdWRlICJKU09iamVjdC5oIgog
I2luY2x1ZGUgIlRocm93U2NvcGUuaCIKQEAgLTQxLDcgKzQzLDcgQEAgSlNWYWx1ZSBpdGVyYXRv
ck5leHQoSlNHbG9iYWxPYmplY3QqLCBJdGVyYXRpb25SZWNvcmQsIEpTVmFsdWUgYXJndW1lbnQg
PSBKU1ZhbHUKIEpTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgaXRlcmF0b3JWYWx1ZShKU0dsb2Jh
bE9iamVjdCosIEpTVmFsdWUgaXRlclJlc3VsdCk7CiBib29sIGl0ZXJhdG9yQ29tcGxldGUoSlNH
bG9iYWxPYmplY3QqLCBKU1ZhbHVlIGl0ZXJSZXN1bHQpOwogSlNfRVhQT1JUX1BSSVZBVEUgSlNW
YWx1ZSBpdGVyYXRvclN0ZXAoSlNHbG9iYWxPYmplY3QqLCBJdGVyYXRpb25SZWNvcmQpOwotSlNf
RVhQT1JUX1BSSVZBVEUgdm9pZCBpdGVyYXRvckNsb3NlKEpTR2xvYmFsT2JqZWN0KiwgSXRlcmF0
aW9uUmVjb3JkKTsKK0pTX0VYUE9SVF9QUklWQVRFIHZvaWQgaXRlcmF0b3JDbG9zZShKU0dsb2Jh
bE9iamVjdCosIEpTVmFsdWUgaXRlcmF0b3IpOwogSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3Qq
IGNyZWF0ZUl0ZXJhdG9yUmVzdWx0T2JqZWN0KEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSwgYm9v
bCBkb25lKTsKIAogU3RydWN0dXJlKiBjcmVhdGVJdGVyYXRvclJlc3VsdE9iamVjdFN0cnVjdHVy
ZShWTSYsIEpTR2xvYmFsT2JqZWN0Jik7CkBAIC01MywxMiArNTUsMzIgQEAgSlNfRVhQT1JUX1BS
SVZBVEUgSXRlcmF0aW9uUmVjb3JkIGl0ZXJhdG9yRm9ySXRlcmFibGUoSlNHbG9iYWxPYmplY3Qq
LCBKU1ZhbHVlIGkKIEpTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgaXRlcmF0b3JNZXRob2QoSlNH
bG9iYWxPYmplY3QqLCBKU09iamVjdCopOwogSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBoYXNJdGVy
YXRvck1ldGhvZChKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOwogCitKU19FWFBPUlRfUFJJVkFU
RSBJdGVyYXRpb25Nb2RlIHByZXBhcmVGb3JGYXN0QXJyYXlJdGVyYXRpb24oVk0mLCBKU0dsb2Jh
bE9iamVjdCosIEpTVmFsdWUgaXRlcmFibGUpOworSlNfRVhQT1JUX1BSSVZBVEUgSXRlcmF0aW9u
TW9kZSBwcmVwYXJlRm9yRmFzdEFycmF5SXRlcmF0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBK
U1ZhbHVlIGl0ZXJhYmxlLCBKU1ZhbHVlIHN5bWJvbEl0ZXJhdG9yKTsKKwogdGVtcGxhdGU8dHlw
ZW5hbWUgQ2FsbEJhY2tUeXBlPgogdm9pZCBmb3JFYWNoSW5JdGVyYWJsZShKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGl0ZXJhYmxlLCBjb25zdCBDYWxsQmFja1R5cGUmIGNh
bGxiYWNrKQogewogICAgIGF1dG8mIHZtID0gZ2V0Vk0oZ2xvYmFsT2JqZWN0KTsKICAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKKyAgICBpZiAocHJlcGFyZUZvckZh
c3RBcnJheUl0ZXJhdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBpdGVyYWJsZSkgPT0gSXRlcmF0aW9u
TW9kZTo6RmFzdEFycmF5KSB7CisgICAgICAgIGF1dG8qIGFycmF5ID0ganNDYXN0PEpTQXJyYXkq
PihpdGVyYWJsZSk7CisgICAgICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8IGFy
cmF5LT5sZW5ndGgoKTsgKytpbmRleCkgeworICAgICAgICAgICAgSlNWYWx1ZSBuZXh0VmFsdWUg
PSBhcnJheS0+Z2V0SW5kZXgoZ2xvYmFsT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5k
ZXgpKTsKKyAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7Cisg
ICAgICAgICAgICBjYWxsYmFjayh2bSwgZ2xvYmFsT2JqZWN0LCBuZXh0VmFsdWUpOworICAgICAg
ICAgICAgaWYgKFVOTElLRUxZKHNjb3BlLmV4Y2VwdGlvbigpKSkgeworICAgICAgICAgICAgICAg
IHNjb3BlLnJlbGVhc2UoKTsKKyAgICAgICAgICAgICAgICBKU0FycmF5SXRlcmF0b3IqIGl0ZXJh
dG9yID0gSlNBcnJheUl0ZXJhdG9yOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+YXJyYXlJdGVy
YXRvclN0cnVjdHVyZSgpLCBhcnJheSwgSXRlcmF0aW9uS2luZDo6VmFsdWVzKTsKKyAgICAgICAg
ICAgICAgICBpdGVyYXRvci0+aW50ZXJuYWxGaWVsZChKU0FycmF5SXRlcmF0b3I6OkZpZWxkOjpJ
bmRleCkuc2V0V2l0aG91dFdyaXRlQmFycmllcihqc051bWJlcihpbmRleCArIDEpKTsKKyAgICAg
ICAgICAgICAgICBpdGVyYXRvckNsb3NlKGdsb2JhbE9iamVjdCwgaXRlcmF0b3IpOworICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1
cm47CisgICAgfQorCiAgICAgSXRlcmF0aW9uUmVjb3JkIGl0ZXJhdGlvblJlY29yZCA9IGl0ZXJh
dG9yRm9ySXRlcmFibGUoZ2xvYmFsT2JqZWN0LCBpdGVyYWJsZSk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgdm9pZCgpKTsKICAgICB3aGlsZSAodHJ1ZSkgewpAQCAtNzIsNyArOTQs
NyBAQCB2b2lkIGZvckVhY2hJbkl0ZXJhYmxlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTVmFsdWUgaXRlcmFibGUsIGNvbnN0IENhbAogICAgICAgICBjYWxsYmFjayh2bSwgZ2xvYmFs
T2JqZWN0LCBuZXh0VmFsdWUpOwogICAgICAgICBpZiAoVU5MSUtFTFkoc2NvcGUuZXhjZXB0aW9u
KCkpKSB7CiAgICAgICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgICAgICAgICBpdGVyYXRv
ckNsb3NlKGdsb2JhbE9iamVjdCwgaXRlcmF0aW9uUmVjb3JkKTsKKyAgICAgICAgICAgIGl0ZXJh
dG9yQ2xvc2UoZ2xvYmFsT2JqZWN0LCBpdGVyYXRpb25SZWNvcmQuaXRlcmF0b3IpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQpAQCAtODQsNiArMTA2LDIzIEBAIHZvaWQg
Zm9yRWFjaEluSXRlcmFibGUoSlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgSlNPYmplY3Qq
IGl0ZXJhYmxlLCBKU1ZhbHVlCiAgICAgYXV0byYgdm0gPSBnZXRWTSgmZ2xvYmFsT2JqZWN0KTsK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKKyAgICBpZiAocHJl
cGFyZUZvckZhc3RBcnJheUl0ZXJhdGlvbih2bSwgJmdsb2JhbE9iamVjdCwgaXRlcmFibGUsIGl0
ZXJhdG9yTWV0aG9kKSA9PSBJdGVyYXRpb25Nb2RlOjpGYXN0QXJyYXkpIHsKKyAgICAgICAgYXV0
byogYXJyYXkgPSBqc0Nhc3Q8SlNBcnJheSo+KGl0ZXJhYmxlKTsKKyAgICAgICAgZm9yICh1bnNp
Z25lZCBpbmRleCA9IDA7IGluZGV4IDwgYXJyYXktPmxlbmd0aCgpOyArK2luZGV4KSB7CisgICAg
ICAgICAgICBKU1ZhbHVlIG5leHRWYWx1ZSA9IGFycmF5LT5nZXRJbmRleCgmZ2xvYmFsT2JqZWN0
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5kZXgpKTsKKyAgICAgICAgICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisgICAgICAgICAgICBjYWxsYmFjayh2bSwgZ2xvYmFs
T2JqZWN0LCBuZXh0VmFsdWUpOworICAgICAgICAgICAgaWYgKFVOTElLRUxZKHNjb3BlLmV4Y2Vw
dGlvbigpKSkgeworICAgICAgICAgICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKKyAgICAgICAgICAg
ICAgICBKU0FycmF5SXRlcmF0b3IqIGl0ZXJhdG9yID0gSlNBcnJheUl0ZXJhdG9yOjpjcmVhdGUo
dm0sIGdsb2JhbE9iamVjdC5hcnJheUl0ZXJhdG9yU3RydWN0dXJlKCksIGFycmF5LCBJdGVyYXRp
b25LaW5kOjpWYWx1ZXMpOworICAgICAgICAgICAgICAgIGl0ZXJhdG9yLT5pbnRlcm5hbEZpZWxk
KEpTQXJyYXlJdGVyYXRvcjo6RmllbGQ6OkluZGV4KS5zZXRXaXRob3V0V3JpdGVCYXJyaWVyKGpz
TnVtYmVyKGluZGV4ICsgMSkpOworICAgICAgICAgICAgICAgIGl0ZXJhdG9yQ2xvc2UoJmdsb2Jh
bE9iamVjdCwgaXRlcmF0b3IpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgYXV0byBpdGVyYXRp
b25SZWNvcmQgPSBpdGVyYXRvckZvckl0ZXJhYmxlKCZnbG9iYWxPYmplY3QsIGl0ZXJhYmxlLCBp
dGVyYXRvck1ldGhvZCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsK
ICAgICB3aGlsZSAodHJ1ZSkgewpAQCAtOTcsNyArMTM2LDcgQEAgdm9pZCBmb3JFYWNoSW5JdGVy
YWJsZShKU0dsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogaXRlcmFibGUsIEpT
VmFsdWUKICAgICAgICAgY2FsbGJhY2sodm0sIGdsb2JhbE9iamVjdCwgbmV4dFZhbHVlKTsKICAg
ICAgICAgaWYgKFVOTElLRUxZKHNjb3BlLmV4Y2VwdGlvbigpKSkgewogICAgICAgICAgICAgc2Nv
cGUucmVsZWFzZSgpOwotICAgICAgICAgICAgaXRlcmF0b3JDbG9zZSgmZ2xvYmFsT2JqZWN0LCBp
dGVyYXRpb25SZWNvcmQpOworICAgICAgICAgICAgaXRlcmF0b3JDbG9zZSgmZ2xvYmFsT2JqZWN0
LCBpdGVyYXRpb25SZWNvcmQuaXRlcmF0b3IpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNB
cnJheUl0ZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5SXRl
cmF0b3IuaAppbmRleCAwZTg1YmRiMGQ1ODFiMmI4NGM1NTI5N2MzZTI3NzAzYWQ5MzQxNmIwLi4x
ZmNiY2Q1MzVkMTg3ZmYxNDBjZDBlYjU1NDM4MWU4MzI3Y2U3YTRiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5SXRlcmF0b3IuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5SXRlcmF0b3IuaApAQCAtNjgsNyArNjgsNyBA
QCBjbGFzcyBKU0FycmF5SXRlcmF0b3IgZmluYWwgOiBwdWJsaWMgSlNJbnRlcm5hbEZpZWxkT2Jq
ZWN0SW1wbDwzPiB7CiAgICAgSXRlcmF0aW9uS2luZCBraW5kKCkgY29uc3QgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8SXRlcmF0aW9uS2luZD4oaW50ZXJuYWxGaWVsZChGaWVsZDo6S2luZCkuZ2V0KCku
YXNVSW50MzJBc0FueUludCgpKTsgfQogICAgIEpTT2JqZWN0KiBpdGVyYXRlZE9iamVjdCgpIGNv
bnN0IHsgcmV0dXJuIGpzQ2FzdDxKU09iamVjdCo+KGludGVybmFsRmllbGQoRmllbGQ6Okl0ZXJh
dGVkT2JqZWN0KS5nZXQoKSk7IH0KIAotICAgIHN0YXRpYyBKU0FycmF5SXRlcmF0b3IqIGNyZWF0
ZShWTSYsIFN0cnVjdHVyZSosIEpTT2JqZWN0KiBpdGVyYXRlZE9iamVjdCwgSlNWYWx1ZSBraW5k
KTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgSlNBcnJheUl0ZXJhdG9yKiBjcmVhdGUo
Vk0mLCBTdHJ1Y3R1cmUqLCBKU09iamVjdCogaXRlcmF0ZWRPYmplY3QsIEpTVmFsdWUga2luZCk7
CiAgICAgc3RhdGljIEpTQXJyYXlJdGVyYXRvciogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIEpTT2JqZWN0KiBpdGVyYXRlZE9iamVjdCwgSXRlcmF0aW9uS2luZCBraW5kKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIGNyZWF0ZSh2bSwgc3RydWN0dXJlLCBpdGVyYXRlZE9iamVj
dCwganNOdW1iZXIoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGtpbmQpKSk7CmRpZmYgLS1naXQgYS9K
U1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDZkMzVkZTRhZDQ5YmRl
MjExNGM3Zjc1OGQyYzkxOWRhMGJkMTg1NDkuLjRkODI5Mjk4ODU1NWUwODVjOTJkYjdhYzU3MGFm
ZWEzMTc5ODcyYjYgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjEtMDItMDcgIFl1c3VrZSBTdXp1a2kgIDx5
c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbSlNDXSBDKysgaXRlcmF0aW9uIHNob3VsZCBz
dXBwb3J0IGZhc3QgaXRlcmF0b3IgcHJvdG9jb2wKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTUyNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogbWljcm9iZW5jaG1hcmtzL21hcC1jb25zdHJ1Y3Rvci5q
czogQWRkZWQuCisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKiBzdHJlc3MvbWFwLWNvbnN0cnVj
dG9yLWhvbGUtdGhyb3cuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAo
c2hvdWxkVGhyb3cpOgorICAgICAgICAodmFsdWVzLl9fcHJvdG9fXy5yZXR1cm4pOgorICAgICAg
ICAoTWFwLnByb3RvdHlwZSk6CisKIDIwMjEtMDItMDYgIEFsZXhleSBTaHZheWthICA8c2h2YWlr
YWxlc2hAZ21haWwuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIyNjQ1NzQpOiBVbmNoZWNr
ZWQgSlMgZXhjZXB0aW9uIGluIHZhbGlkYXRlQW5kQXBwbHlQcm9wZXJ0eURlc2NyaXB0b3IoKQpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvbWFwLWNvbnN0cnVjdG9yLmpzIGIv
SlNUZXN0cy9taWNyb2JlbmNobWFya3MvbWFwLWNvbnN0cnVjdG9yLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE2
YjIwYTZmZmUzMWE2YzUxMzFhMDhhOTBiNDM0ZGJlYTAwYTUwZjYKLS0tIC9kZXYvbnVsbAorKysg
Yi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9tYXAtY29uc3RydWN0b3IuanMKQEAgLTAsMCArMSwz
MSBAQAorZnVuY3Rpb24gdGVzdChhcnJheSkKK3sKKyAgICByZXR1cm4gbmV3IE1hcChhcnJheSk7
Cit9Citub0lubGluZSh0ZXN0KTsKKwordmFyIGFycmF5ID0gWworICAgIFswLCAwXSwKKyAgICBb
MSwgMF0sCisgICAgWzIsIDBdLAorICAgIFszLCAwXSwKKyAgICBbNCwgMF0sCisgICAgWzUsIDBd
LAorICAgIFs2LCAwXSwKKyAgICBbNywgMF0sCisgICAgWzgsIDBdLAorICAgIFs5LCAwXSwKKyAg
ICBbMTAsIDBdLAorICAgIFsxMSwgMF0sCisgICAgWzEyLCAwXSwKKyAgICBbMTMsIDBdLAorICAg
IFsxNCwgMF0sCisgICAgWzE1LCAwXSwKKyAgICBbMTYsIDBdLAorICAgIFsxNywgMF0sCisgICAg
WzE4LCAwXSwKKyAgICBbMTksIDBdLAorXTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTQ7ICsr
aSkKKyAgICB0ZXN0KGFycmF5KTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL21hcC1jb25z
dHJ1Y3Rvci1ob2xlLXRocm93LmpzIGIvSlNUZXN0cy9zdHJlc3MvbWFwLWNvbnN0cnVjdG9yLWhv
bGUtdGhyb3cuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmEzZjA3NmNjYjllYTkwMDNhMGFlODBjMmU1NjYxODMy
MmJhM2VhOQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL21hcC1jb25zdHJ1Y3Rv
ci1ob2xlLXRocm93LmpzCkBAIC0wLDAgKzEsMzggQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVh
bCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhy
b3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCitmdW5jdGlvbiBzaG91
bGRUaHJvdyhmdW5jLCBlcnJvck1lc3NhZ2UpIHsKKyAgICB2YXIgZXJyb3JUaHJvd24gPSBmYWxz
ZTsKKyAgICB2YXIgZXJyb3IgPSBudWxsOworICAgIHRyeSB7CisgICAgICAgIGZ1bmMoKTsKKyAg
ICB9IGNhdGNoIChlKSB7CisgICAgICAgIGVycm9yVGhyb3duID0gdHJ1ZTsKKyAgICAgICAgZXJy
b3IgPSBlOworICAgIH0KKyAgICBpZiAoIWVycm9yVGhyb3duKQorICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoJ25vdCB0aHJvd24nKTsKKyAgICBpZiAoU3RyaW5nKGVycm9yKSAhPT0gZXJyb3JNZXNz
YWdlKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCBlcnJvcjogJHtTdHJpbmcoZXJyb3Ip
fWApOworfQorCit2YXIgaXRlcmF0b3I7CitbXS52YWx1ZXMoKS5fX3Byb3RvX18ucmV0dXJuID0g
ZnVuY3Rpb24gKCkgeworICAgIGl0ZXJhdG9yID0gdGhpczsKK307CisKK3ZhciBhcnJheSA9IFsK
KyAgICBbMCwgMF0sCisgICAgWzEsIDBdLAorICAgIFsyLCAwXSwKK107CitNYXAucHJvdG90eXBl
LnNldCA9IGZ1bmN0aW9uICgpIHsKKyAgICB0aHJvdyBuZXcgRXJyb3IoIm9rIik7Cit9Oworc2hv
dWxkVGhyb3coKCkgPT4geworICAgIHZhciBtYXAgPSBuZXcgTWFwKGFycmF5KTsKK30sIGBFcnJv
cjogb2tgKTsKK3Nob3VsZEJlKGl0ZXJhdG9yICE9PSB1bmRlZmluZWQsIHRydWUpOworCg==
</data>
<flag name="commit-queue"
          id="437794"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>419535</attachid>
            <date>2021-02-07 03:17:42 -0800</date>
            <delta_ts>2021-02-07 03:30:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221526-20210207031742.patch</filename>
            <type>text/plain</type>
            <size>20394</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyNDcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
NjhmOWU5YzJiOTMxYzhkODEzNDA3MDY5NDExOWNhOTI2YWE0MDc3Li5iOThhNTYzNmFmNGUxZGQ1
YTU3OTM3M2ZlYmJhMTZiNmU1NDMxMzI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNSBAQAorMjAyMS0wMi0wNyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEMrKyBpdGVyYXRpb24gc2hvdWxkIHN1cHBvcnQgZmFzdCBpdGVy
YXRvciBwcm90b2NvbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjIxNTI2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVGhpcyBwYXRjaCBhZGRzIGZhc3QgaXRlcmF0aW9uIHByb3RvY29sIHN1cHBvcnQgaW4g
QysrIGl0ZXJhdGlvbiAoZm9yRWFjaEl0ZXJhYmxlKS4KKyAgICAgICAgSW4gSlMsIHdlIGhhdmUg
b3BfaXRlcmF0b3Jfb3BlbiAvIG9wX2l0ZXJhdG9yX25leHQgdG8gaXRlcmF0ZSBhcnJheSBxdWlj
a2x5LgorICAgICAgICBCdXQgd2UgZG8gbm90IHVzZSB0aGlzIGZlYXR1cmUgaW4gQysrIGZvckVh
Y2hJdGVyYWJsZS4gSW4gdGhpcyBwYXRjaCB3ZSBpbnRlZ3JhdGUKKyAgICAgICAgdGhlIHNhbWUg
KG9yIGEgYml0IG1vcmUgZWZmaWNpZW50IHNpbmNlIHdlIGNhbiBhdm9pZCBjcmVhdGluZyBKU0Fy
cmF5SXRlcmF0b3IpIG1lY2hhbmlzbQorICAgICAgICBzbyB0aGF0IGl0ZXJhdGlvbiBpbiBDKysg
Z2V0cyBmYXN0ZXIgZm9yIG5vcm1hbCBhcnJheXMuCisKKyAgICAgICAgV2Ugb2JzZXJ2ZWQgMS45
eCBmYXN0ZXIgaW4gTWFwIGNyZWF0aW9uIHdpdGggYXJyYXlzLgorCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVG9UICAgICAgICAgICAgICAgICAgICAgUGF0Y2hlZAor
CisgICAgICAgICAgICBtYXAtY29uc3RydWN0b3IgICAgICAgMzUuNzQ0NistMC4yMzU0ICAgICBe
ICAgICAxOC43NTE2Ky0wLjQ1MzQgICAgICAgIF4gZGVmaW5pdGVseSAxLjkwNjJ4IGZhc3Rlcgor
CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBpbnNwZWN0b3IvSlNJbmplY3RlZFNj
cmlwdEhvc3QuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpKU0luamVjdGVkU2NyaXB0SG9zdDo6
aXRlcmF0b3JFbnRyaWVzKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHA6
CisgICAgICAgIChKU0M6Oml0ZXJhdG9yT3BlblRyeUZhc3RJbXBsKToKKyAgICAgICAgKiBydW50
aW1lL0l0ZXJhdG9yT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6Oml0ZXJhdG9yQ2xvc2Up
OgorICAgICAgICAoSlNDOjpwcmVwYXJlRm9yRmFzdEFycmF5SXRlcmF0aW9uKToKKyAgICAgICAg
KiBydW50aW1lL0l0ZXJhdG9yT3BlcmF0aW9ucy5oOgorICAgICAgICAoSlNDOjpmb3JFYWNoSW5J
dGVyYWJsZSk6CisgICAgICAgICogcnVudGltZS9KU0FycmF5SXRlcmF0b3IuaDoKKwogMjAyMS0w
Mi0wNiAgQWxleGV5IFNodmF5a2EgIDxzaHZhaWthbGVzaEBnbWFpbC5jb20+CiAKICAgICAgICAg
UkVHUkVTU0lPTiAocjI2NDU3NCk6IFVuY2hlY2tlZCBKUyBleGNlcHRpb24gaW4gdmFsaWRhdGVB
bmRBcHBseVByb3BlcnR5RGVzY3JpcHRvcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50
eHQKaW5kZXggNGRmOGEyNTBjMGM5YmQyMjNlNTY4NmFkN2M1ZjY3ZjlhMDEwZTc4MC4uMjUyZDRi
Y2M1OGVjOTE2MmYzMmNhYzllMmJmODM0YTk2ODA4MzJkZCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
TWFrZUxpc3RzLnR4dApAQCAtOTIyLDYgKzkyMiw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklW
QVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcnVudGltZS9KU0FycmF5QnVmZmVyUHJvdG90eXBl
LmgKICAgICBydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmgKICAgICBydW50aW1lL0pTQXJyYXlC
dWZmZXJWaWV3SW5saW5lcy5oCisgICAgcnVudGltZS9KU0FycmF5SXRlcmF0b3IuaAogICAgIHJ1
bnRpbWUvSlNCaWdJbnQuaAogICAgIHJ1bnRpbWUvSlNDQ29uZmlnLmgKICAgICBydW50aW1lL0pT
Q0lubGluZXMuaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkOTIxMjdmY2Q0Zjhk
NmFlODY0OTdkOThjNmVjMWEzNTdlYTAzMmQwLi41NzA0ZTQyNzczMzk1MDliMjE4YTJlZTIyZDJj
YmMxZTYxMDI4MzBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTA5Nyw3ICsx
MDk3LDcgQEAKIAkJNTM5OTMwQzgyMkFEM0I5QTAwNTFDREUyIC8qIFdlYWtPYmplY3RSZWZDb25z
dHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTM5OTMwQzcyMkFEM0I5QTAwNTFDREUyIC8qIFdlYWtPYmplY3RSZWZDb25zdHJ1Y3Rvci5oICov
OyB9OwogCQk1MzlCRkJBRTIyQUQzQzNBMDAyM0Y0QzAgLyogV2Vha09iamVjdFJlZlByb3RvdHlw
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM5QkZC
QUQyMkFEM0MzQTAwMjNGNEMwIC8qIFdlYWtPYmplY3RSZWZQcm90b3R5cGUuaCAqLzsgfTsKIAkJ
NTM5QkZCQjAyMkFEM0NEQzAwMjNGNEMwIC8qIEpTV2Vha09iamVjdFJlZi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM5QkZCQUYyMkFEM0NEQzAwMjNG
NEMwIC8qIEpTV2Vha09iamVjdFJlZi5oICovOyB9OwotCQk1MzlERDdGNTIzQzFCQkI1MDA5MDVG
MTMgLyogSlNBcnJheUl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MzlERDdGNDIzQzFCQkE5MDA5MDVGMTMgLyogSlNBcnJheUl0ZXJhdG9y
LmggKi87IH07CisJCTUzOUREN0Y1MjNDMUJCQjUwMDkwNUYxMyAvKiBKU0FycmF5SXRlcmF0b3Iu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzOUREN0Y0
MjNDMUJCQTkwMDkwNUYxMyAvKiBKU0FycmF5SXRlcmF0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MzlGQjhCQTFDOTlEQTdDMDA5NDBGQTEg
LyogSlNBcnJheUlubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUzOUZCOEI5MUM5OURBN0MwMDk0MEZBMSAvKiBKU0FycmF5SW5saW5lcy5oICov
OyB9OwogCQk1M0I0QkQxMjFGNjhCMzI1MDBEMkJFQTMgLyogV2FzbU9wcy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTMzQjE1REUxREM3RjQ2MzAwNEQ1
MDBBIC8qIFdhc21PcHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk1M0I2MDFFQzIwMzRCOEM1MDA2QkU2NjcgLyogSlNDYXN0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1M0I2MDFFQjIwMzRCOEM1MDA2
QkU2NjcgLyogSlNDYXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJ
bmplY3RlZFNjcmlwdEhvc3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9K
U0luamVjdGVkU2NyaXB0SG9zdC5jcHAKaW5kZXggYTk4YmQ4NmJkNjA3ZTIyYjQ4ZGQwMTJkNmM4
NmQ3Nzc3NjQxOGNiNi4uOTg2OWYxZGEwYjVmZWY4MzY0OTMxYjQzYWZlMmNhMjM4ZDJlYzU0MiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0luamVjdGVkU2Ny
aXB0SG9zdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0luamVj
dGVkU2NyaXB0SG9zdC5jcHAKQEAgLTYxMyw3ICs2MTMsNyBAQCBKU1ZhbHVlIEpTSW5qZWN0ZWRT
Y3JpcHRIb3N0OjppdGVyYXRvckVudHJpZXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbAogICAgICAgICBhcnJheS0+cHV0RGlyZWN0SW5kZXgoZ2xvYmFsT2JqZWN0LCBpLCBlbnRy
eSk7CiAgICAgICAgIGlmIChVTkxJS0VMWShzY29wZS5leGNlcHRpb24oKSkpIHsKICAgICAgICAg
ICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICAgICAgICAgIGl0ZXJhdG9yQ2xvc2UoZ2xvYmFsT2Jq
ZWN0LCBpdGVyYXRpb25SZWNvcmQpOworICAgICAgICAgICAgaXRlcmF0b3JDbG9zZShnbG9iYWxP
YmplY3QsIGl0ZXJhdGlvblJlY29yZC5pdGVyYXRvcik7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbW1vblNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21t
b25TbG93UGF0aHMuY3BwCmluZGV4IDQ1MTYzMTkzOTkxZDM2MzkzNGJmZTkyYTJmOTcyZGQ2YmEw
NzNmZTkuLjczZDFiOGY3YjhhNmUwMTRmNjU1YmEzZjc2ZWRjZGYzNzA5NzQ0NGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcApAQCAt
MzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkVycm9ySGFuZGxpbmdTY29wZS5oIgogI2luY2x1ZGUg
IkV4Y2VwdGlvbkZ1enouaCIKICNpbmNsdWRlICJGcmFtZVRyYWNlcnMuaCIKKyNpbmNsdWRlICJJ
dGVyYXRvck9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJKU0FycmF5SXRlcmF0b3IuaCIKICNpbmNs
dWRlICJKU0FzeW5jR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgpAQCAtODYz
LDM3ICs4NjQsMTkgQEAgQUxXQVlTX0lOTElORSBTbG93UGF0aFJldHVyblR5cGUgaXRlcmF0b3JP
cGVuVHJ5RmFzdEltcGwoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIGMKICAgICBKU1ZhbHVlIHN5bWJv
bEl0ZXJhdG9yID0gR0VUX0MoYnl0ZWNvZGUubV9zeW1ib2xJdGVyYXRvcikuanNWYWx1ZSgpOwog
ICAgIGF1dG8mIGl0ZXJhdG9yID0gR0VUKGJ5dGVjb2RlLm1faXRlcmF0b3IpOwogCi0gICAgYXV0
byBwcmVwYXJlRm9yRmFzdEFycmF5SXRlcmF0aW9uID0gWyZdIHsKLSAgICAgICAgaWYgKCFnbG9i
YWxPYmplY3QtPmFycmF5SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnRTZXQoKS5pc1N0aWxsVmFs
aWQoKSkKLSAgICAgICAgICAgIHJldHVybiBJdGVyYXRpb25Nb2RlOjpHZW5lcmljOwotCi0gICAg
ICAgIC8vIFRoaXMgaXMgY29ycmVjdCBiZWNhdXNlIHdlIGp1c3QgY2hlY2tlZCB0aGUgd2F0Y2hw
b2ludCBpcyBzdGlsbCB2YWxpZC4KLSAgICAgICAgSlNGdW5jdGlvbiogc3ltYm9sSXRlcmF0b3JG
dW5jdGlvbiA9IGpzRHluYW1pY0Nhc3Q8SlNGdW5jdGlvbio+KHZtLCBzeW1ib2xJdGVyYXRvcik7
Ci0gICAgICAgIGlmICghc3ltYm9sSXRlcmF0b3JGdW5jdGlvbikKLSAgICAgICAgICAgIHJldHVy
biBJdGVyYXRpb25Nb2RlOjpHZW5lcmljOyAKLQotICAgICAgICAvLyBXZSBkb24ndCB3YW50IHRv
IGFsbG9jYXRlIHRoZSB2YWx1ZXMgZnVuY3Rpb24ganVzdCB0byBjaGVjayBpZiBpdCdzIHRoZSBz
YW1lIGFzIG91ciBmdW5jdGlvbiBhdCBzbyB3ZSB1c2UgdGhlIGNvbmN1cnJlbnQgYWNjZXNzb3Iu
Ci0gICAgICAgIC8vIEZJWE1FOiBUaGlzIG9ubHkgd29ya3MgZm9yIGFycmF5cyBmcm9tIHRoZSBz
YW1lIGdsb2JhbCBvYmplY3QgYXMgb3Vyc2VsdmVzIGJ1dCB3ZSBzaG91bGQgYmUgYWJsZSB0byBz
dXBwb3J0IGFueSBwYWlyaW5nLgotICAgICAgICBpZiAoZ2xvYmFsT2JqZWN0LT5hcnJheVByb3Rv
VmFsdWVzRnVuY3Rpb25Db25jdXJyZW50bHkoKSAhPSBzeW1ib2xJdGVyYXRvckZ1bmN0aW9uKQot
ICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvbk1vZGU6OkdlbmVyaWM7Ci0KKyAgICBpZiAocHJl
cGFyZUZvckZhc3RBcnJheUl0ZXJhdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBpdGVyYWJsZSwgc3lt
Ym9sSXRlcmF0b3IpID09IEl0ZXJhdGlvbk1vZGU6OkZhc3RBcnJheSkgewogICAgICAgICAvLyBX
ZSBzaG91bGQgYmUgZ29vZCB0byBnby4KICAgICAgICAgbWV0YWRhdGEubV9pdGVyYXRpb25NZXRh
ZGF0YS5zZWVuTW9kZXMgPSBtZXRhZGF0YS5tX2l0ZXJhdGlvbk1ldGFkYXRhLnNlZW5Nb2RlcyB8
IEl0ZXJhdGlvbk1vZGU6OkZhc3RBcnJheTsKICAgICAgICAgR0VUKGJ5dGVjb2RlLm1fbmV4dCkg
PSBKU1ZhbHVlKCk7CiAgICAgICAgIGF1dG8qIGl0ZXJhdGVkT2JqZWN0ID0ganNDYXN0PEpTT2Jq
ZWN0Kj4oaXRlcmFibGUpOwogICAgICAgICBpdGVyYXRvciA9IEpTQXJyYXlJdGVyYXRvcjo6Y3Jl
YXRlKHZtLCBnbG9iYWxPYmplY3QtPmFycmF5SXRlcmF0b3JTdHJ1Y3R1cmUoKSwgaXRlcmF0ZWRP
YmplY3QsIEl0ZXJhdGlvbktpbmQ6OlZhbHVlcyk7CiAgICAgICAgIFBST0ZJTEVfVkFMVUVfSU4o
aXRlcmF0b3IuanNWYWx1ZSgpLCBtX2l0ZXJhdG9yUHJvZmlsZSk7Ci0gICAgICAgIHJldHVybiBJ
dGVyYXRpb25Nb2RlOjpGYXN0QXJyYXk7Ci0gICAgfTsKLQotICAgIGlmIChpdGVyYWJsZS5pbmhl
cml0czxKU0FycmF5Pih2bSkpIHsKLSAgICAgICAgaWYgKHByZXBhcmVGb3JGYXN0QXJyYXlJdGVy
YXRpb24oKSA9PSBJdGVyYXRpb25Nb2RlOjpGYXN0QXJyYXkpCi0gICAgICAgICAgICByZXR1cm4g
ZW5jb2RlUmVzdWx0KHBjLCByZWludGVycHJldF9jYXN0PHZvaWQqPihJdGVyYXRpb25Nb2RlOjpG
YXN0QXJyYXkpKTsKKyAgICAgICAgcmV0dXJuIGVuY29kZVJlc3VsdChwYywgcmVpbnRlcnByZXRf
Y2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8dWludHB0cl90PihJdGVyYXRpb25Nb2RlOjpGYXN0QXJy
YXkpKSk7CiAgICAgfQogCiAgICAgLy8gUmV0dXJuIHRvIHRoZSBieXRlY29kZSB0byB0cnkgaW4g
Z2VuZXJpYyBtb2RlLgogICAgIG1ldGFkYXRhLm1faXRlcmF0aW9uTWV0YWRhdGEuc2Vlbk1vZGVz
ID0gbWV0YWRhdGEubV9pdGVyYXRpb25NZXRhZGF0YS5zZWVuTW9kZXMgfCBJdGVyYXRpb25Nb2Rl
OjpHZW5lcmljOwotICAgIHJldHVybiBlbmNvZGVSZXN1bHQocGMsIHJlaW50ZXJwcmV0X2Nhc3Q8
dm9pZCo+KEl0ZXJhdGlvbk1vZGU6OkdlbmVyaWMpKTsKKyAgICByZXR1cm4gZW5jb2RlUmVzdWx0
KHBjLCByZWludGVycHJldF9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KEl0ZXJh
dGlvbk1vZGU6OkdlbmVyaWMpKSk7CiB9CiAKIEpTQ19ERUZJTkVfQ09NTU9OX1NMT1dfUEFUSChp
dGVyYXRvcl9vcGVuX3RyeV9mYXN0X25hcnJvdykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0l0ZXJhdG9yT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JdGVyYXRvck9wZXJhdGlvbnMuY3BwCmluZGV4IDY0MDU0YjgwODc2YTlm
MWI0YjcyZjg0ZTZmYWU4MjY3ZWJlMzNjNzkuLjEyMDJjMDE2OTA3MmMzMjJmYzViOGMwNGZmNjQ4
YzFjYzU0NzkzYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0l0
ZXJhdG9yT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SXRlcmF0b3JPcGVyYXRpb25zLmNwcApAQCAtODIsNyArODIsNyBAQCBKU1ZhbHVlIGl0ZXJhdG9y
U3RlcChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBJdGVyYXRpb25SZWNvcmQgaXRlcmF0
aW9uUmVjbwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXZvaWQgaXRlcmF0b3JDbG9zZShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBJdGVyYXRpb25SZWNvcmQgaXRlcmF0aW9uUmVjb3Jk
KQordm9pZCBpdGVyYXRvckNsb3NlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFs
dWUgaXRlcmF0b3IpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtOTQsNyArOTQsNyBA
QCB2b2lkIGl0ZXJhdG9yQ2xvc2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSXRlcmF0
aW9uUmVjb3JkIGl0ZXJhdGlvblJlY29yZAogICAgICAgICBjYXRjaFNjb3BlLmNsZWFyRXhjZXB0
aW9uKCk7CiAgICAgfQogCi0gICAgSlNWYWx1ZSByZXR1cm5GdW5jdGlvbiA9IGl0ZXJhdGlvblJl
Y29yZC5pdGVyYXRvci5nZXQoZ2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT5yZXR1cm5L
ZXl3b3JkKTsKKyAgICBKU1ZhbHVlIHJldHVybkZ1bmN0aW9uID0gaXRlcmF0b3IuZ2V0KGdsb2Jh
bE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+cmV0dXJuS2V5d29yZCk7CiAgICAgaWYgKFVOTElL
RUxZKHRocm93U2NvcGUuZXhjZXB0aW9uKCkpIHx8IHJldHVybkZ1bmN0aW9uLmlzVW5kZWZpbmVk
T3JOdWxsKCkpIHsKICAgICAgICAgaWYgKGV4Y2VwdGlvbikKICAgICAgICAgICAgIHRocm93RXhj
ZXB0aW9uKGdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgZXhjZXB0aW9uKTsKQEAgLTExMiw3ICsx
MTIsNyBAQCB2b2lkIGl0ZXJhdG9yQ2xvc2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SXRlcmF0aW9uUmVjb3JkIGl0ZXJhdGlvblJlY29yZAogCiAgICAgTWFya2VkQXJndW1lbnRCdWZm
ZXIgcmV0dXJuRnVuY3Rpb25Bcmd1bWVudHM7CiAgICAgQVNTRVJUKCFyZXR1cm5GdW5jdGlvbkFy
Z3VtZW50cy5oYXNPdmVyZmxvd2VkKCkpOwotICAgIEpTVmFsdWUgaW5uZXJSZXN1bHQgPSBjYWxs
KGdsb2JhbE9iamVjdCwgcmV0dXJuRnVuY3Rpb24sIHJldHVybkZ1bmN0aW9uQ2FsbERhdGEsIGl0
ZXJhdGlvblJlY29yZC5pdGVyYXRvciwgcmV0dXJuRnVuY3Rpb25Bcmd1bWVudHMpOworICAgIEpT
VmFsdWUgaW5uZXJSZXN1bHQgPSBjYWxsKGdsb2JhbE9iamVjdCwgcmV0dXJuRnVuY3Rpb24sIHJl
dHVybkZ1bmN0aW9uQ2FsbERhdGEsIGl0ZXJhdG9yLCByZXR1cm5GdW5jdGlvbkFyZ3VtZW50cyk7
CiAKICAgICBpZiAoZXhjZXB0aW9uKSB7CiAgICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgZXhjZXB0aW9uKTsKQEAgLTIzMyw0ICsyMzMsNDggQEAgSXRlcmF0
aW9uUmVjb3JkIGl0ZXJhdG9yRm9ySXRlcmFibGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYWx1ZSBpdGVyYWIKICAgICByZXR1cm4geyBpdGVyYXRvciwgbmV4dE1ldGhvZCB9Owog
fQogCitJdGVyYXRpb25Nb2RlIHByZXBhcmVGb3JGYXN0QXJyYXlJdGVyYXRpb24oVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGl0ZXJhYmxlLCBKU1ZhbHVlIHN5
bWJvbEl0ZXJhdG9yKQoreworICAgIGlmICghaXRlcmFibGUuaW5oZXJpdHM8SlNBcnJheT4odm0p
KQorICAgICAgICByZXR1cm4gSXRlcmF0aW9uTW9kZTo6R2VuZXJpYzsKKworICAgIGlmICghZ2xv
YmFsT2JqZWN0LT5hcnJheUl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50U2V0KCkuaXNTdGlsbFZh
bGlkKCkpCisgICAgICAgIHJldHVybiBJdGVyYXRpb25Nb2RlOjpHZW5lcmljOworCisgICAgLy8g
VGhpcyBpcyBjb3JyZWN0IGJlY2F1c2Ugd2UganVzdCBjaGVja2VkIHRoZSB3YXRjaHBvaW50IGlz
IHN0aWxsIHZhbGlkLgorICAgIEpTRnVuY3Rpb24qIHN5bWJvbEl0ZXJhdG9yRnVuY3Rpb24gPSBq
c0R5bmFtaWNDYXN0PEpTRnVuY3Rpb24qPih2bSwgc3ltYm9sSXRlcmF0b3IpOworICAgIGlmICgh
c3ltYm9sSXRlcmF0b3JGdW5jdGlvbikKKyAgICAgICAgcmV0dXJuIEl0ZXJhdGlvbk1vZGU6Okdl
bmVyaWM7CisKKyAgICAvLyBXZSBkb24ndCB3YW50IHRvIGFsbG9jYXRlIHRoZSB2YWx1ZXMgZnVu
Y3Rpb24ganVzdCB0byBjaGVjayBpZiBpdCdzIHRoZSBzYW1lIGFzIG91ciBmdW5jdGlvbiBhdCBz
byB3ZSB1c2UgdGhlIGNvbmN1cnJlbnQgYWNjZXNzb3IuCisgICAgLy8gRklYTUU6IFRoaXMgb25s
eSB3b3JrcyBmb3IgYXJyYXlzIGZyb20gdGhlIHNhbWUgZ2xvYmFsIG9iamVjdCBhcyBvdXJzZWx2
ZXMgYnV0IHdlIHNob3VsZCBiZSBhYmxlIHRvIHN1cHBvcnQgYW55IHBhaXJpbmcuCisgICAgaWYg
KGdsb2JhbE9iamVjdC0+YXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9uQ29uY3VycmVudGx5KCkgIT0g
c3ltYm9sSXRlcmF0b3JGdW5jdGlvbikKKyAgICAgICAgcmV0dXJuIEl0ZXJhdGlvbk1vZGU6Okdl
bmVyaWM7CisKKyAgICByZXR1cm4gSXRlcmF0aW9uTW9kZTo6RmFzdEFycmF5OworfQorCitJdGVy
YXRpb25Nb2RlIHByZXBhcmVGb3JGYXN0QXJyYXlJdGVyYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGl0ZXJhYmxlKQoreworICAgIGlmICghaXRlcmFi
bGUuaW5oZXJpdHM8SlNBcnJheT4odm0pKQorICAgICAgICByZXR1cm4gSXRlcmF0aW9uTW9kZTo6
R2VuZXJpYzsKKworICAgIEpTQXJyYXkqIGFycmF5ID0ganNDYXN0PEpTQXJyYXkqPihpdGVyYWJs
ZSk7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBhcnJheS0+c3RydWN0dXJlKHZtKTsKKyAg
ICAvLyBGSVhNRTogV2Ugd2FudCB0byBzdXBwb3J0IGJyb2FkZXIgSlNBcnJheXMgc28gbG9uZyBh
cyBhcnJheVtAQGl0ZXJhdG9yXSBpcyBub3QgZGVmaW5lZC4KKyAgICBpZiAoIWdsb2JhbE9iamVj
dC0+aXNPcmlnaW5hbEFycmF5U3RydWN0dXJlKHN0cnVjdHVyZSkpCisgICAgICAgIHJldHVybiBJ
dGVyYXRpb25Nb2RlOjpHZW5lcmljOworCisgICAgaWYgKCFnbG9iYWxPYmplY3QtPmFycmF5SXRl
cmF0b3JQcm90b2NvbFdhdGNocG9pbnRTZXQoKS5pc1N0aWxsVmFsaWQoKSkKKyAgICAgICAgcmV0
dXJuIEl0ZXJhdGlvbk1vZGU6OkdlbmVyaWM7CisKKyAgICAvLyBOb3csIEFycmF5IGhhcyBvcmln
aW5hbCBBcnJheSBTdHJ1Y3R1cmVzIGFuZCBhcnJheUl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50
U2V0IGlzIG5vdCBmaXJlZC4KKyAgICAvLyBUaGlzIG1lYW5zLAorICAgIC8vIDEuIEFycmF5LnBy
b3RvdHlwZSBpcyBbW1Byb3RvdHlwZV1dLgorICAgIC8vIDIuIGFycmF5W0BAaXRlcmF0b3JdIGlz
IG5vdCBvdmVycmlkZGVuLgorICAgIC8vIDMuIEFycmF5LnByb3RvdHlwZVtAQGl0ZXJhdG9yXSBp
cyBhbiBleHBlY3RlZCBvbmUuCisgICAgLy8gU28sIHdlIGNhbiBzYXkgdGhpcyB3aWxsIGNyZWF0
ZSBhbiBleHBlY3RlZCBBcnJheUl0ZXJhdG9yLgorICAgIHJldHVybiBJdGVyYXRpb25Nb2RlOjpG
YXN0QXJyYXk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSXRlcmF0b3JPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JdGVyYXRvck9wZXJhdGlvbnMuaAppbmRleCAwMWNkMzFjNDkxNmMw
YjVhNTU4OTcwN2Q5NTQzN2Y3M2RmYzUzZGIyLi40OTZmNTIyYWRmYjc1YmI3NTAzYjA3YjRlZGI4
NmU4NTY5OWI1MWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
dGVyYXRvck9wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
dGVyYXRvck9wZXJhdGlvbnMuaApAQCAtMjYsOCArMjYsMTAgQEAKIAogI3ByYWdtYSBvbmNlCiAK
KyNpbmNsdWRlICJJdGVyYXRpb25Nb2RlTWV0YWRhdGEuaCIKKyNpbmNsdWRlICJKU0FycmF5SXRl
cmF0b3IuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCi0jaW5jbHVkZSAiSlNPYmplY3QuaCIK
KyNpbmNsdWRlICJKU09iamVjdElubGluZXMuaCIKICNpbmNsdWRlICJUaHJvd1Njb3BlLmgiCiAK
IG5hbWVzcGFjZSBKU0MgewpAQCAtNDEsNyArNDMsNyBAQCBKU1ZhbHVlIGl0ZXJhdG9yTmV4dChK
U0dsb2JhbE9iamVjdCosIEl0ZXJhdGlvblJlY29yZCwgSlNWYWx1ZSBhcmd1bWVudCA9IEpTVmFs
dQogSlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1ZSBpdGVyYXRvclZhbHVlKEpTR2xvYmFsT2JqZWN0
KiwgSlNWYWx1ZSBpdGVyUmVzdWx0KTsKIGJvb2wgaXRlcmF0b3JDb21wbGV0ZShKU0dsb2JhbE9i
amVjdCosIEpTVmFsdWUgaXRlclJlc3VsdCk7CiBKU19FWFBPUlRfUFJJVkFURSBKU1ZhbHVlIGl0
ZXJhdG9yU3RlcChKU0dsb2JhbE9iamVjdCosIEl0ZXJhdGlvblJlY29yZCk7Ci1KU19FWFBPUlRf
UFJJVkFURSB2b2lkIGl0ZXJhdG9yQ2xvc2UoSlNHbG9iYWxPYmplY3QqLCBJdGVyYXRpb25SZWNv
cmQpOworSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBpdGVyYXRvckNsb3NlKEpTR2xvYmFsT2JqZWN0
KiwgSlNWYWx1ZSBpdGVyYXRvcik7CiBKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogY3JlYXRl
SXRlcmF0b3JSZXN1bHRPYmplY3QoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlLCBib29sIGRvbmUp
OwogCiBTdHJ1Y3R1cmUqIGNyZWF0ZUl0ZXJhdG9yUmVzdWx0T2JqZWN0U3RydWN0dXJlKFZNJiwg
SlNHbG9iYWxPYmplY3QmKTsKQEAgLTUzLDEyICs1NSwzMiBAQCBKU19FWFBPUlRfUFJJVkFURSBJ
dGVyYXRpb25SZWNvcmQgaXRlcmF0b3JGb3JJdGVyYWJsZShKU0dsb2JhbE9iamVjdCosIEpTVmFs
dWUgaQogSlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1ZSBpdGVyYXRvck1ldGhvZChKU0dsb2JhbE9i
amVjdCosIEpTT2JqZWN0Kik7CiBKU19FWFBPUlRfUFJJVkFURSBib29sIGhhc0l0ZXJhdG9yTWV0
aG9kKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CiAKK0pTX0VYUE9SVF9QUklWQVRFIEl0ZXJh
dGlvbk1vZGUgcHJlcGFyZUZvckZhc3RBcnJheUl0ZXJhdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0
KiwgSlNWYWx1ZSBpdGVyYWJsZSk7CitKU19FWFBPUlRfUFJJVkFURSBJdGVyYXRpb25Nb2RlIHBy
ZXBhcmVGb3JGYXN0QXJyYXlJdGVyYXRpb24oVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUg
aXRlcmFibGUsIEpTVmFsdWUgc3ltYm9sSXRlcmF0b3IpOworCiB0ZW1wbGF0ZTx0eXBlbmFtZSBD
YWxsQmFja1R5cGU+CiB2b2lkIGZvckVhY2hJbkl0ZXJhYmxlKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTVmFsdWUgaXRlcmFibGUsIGNvbnN0IENhbGxCYWNrVHlwZSYgY2FsbGJhY2sp
CiB7CiAgICAgYXV0byYgdm0gPSBnZXRWTShnbG9iYWxPYmplY3QpOwogICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAorICAgIGlmIChwcmVwYXJlRm9yRmFzdEFycmF5
SXRlcmF0aW9uKHZtLCBnbG9iYWxPYmplY3QsIGl0ZXJhYmxlKSA9PSBJdGVyYXRpb25Nb2RlOjpG
YXN0QXJyYXkpIHsKKyAgICAgICAgYXV0byogYXJyYXkgPSBqc0Nhc3Q8SlNBcnJheSo+KGl0ZXJh
YmxlKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgYXJyYXktPmxl
bmd0aCgpOyArK2luZGV4KSB7CisgICAgICAgICAgICBKU1ZhbHVlIG5leHRWYWx1ZSA9IGFycmF5
LT5nZXRJbmRleChnbG9iYWxPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbmRleCkpOwor
ICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKyAgICAgICAg
ICAgIGNhbGxiYWNrKHZtLCBnbG9iYWxPYmplY3QsIG5leHRWYWx1ZSk7CisgICAgICAgICAgICBp
ZiAoVU5MSUtFTFkoc2NvcGUuZXhjZXB0aW9uKCkpKSB7CisgICAgICAgICAgICAgICAgc2NvcGUu
cmVsZWFzZSgpOworICAgICAgICAgICAgICAgIEpTQXJyYXlJdGVyYXRvciogaXRlcmF0b3IgPSBK
U0FycmF5SXRlcmF0b3I6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5hcnJheUl0ZXJhdG9yU3Ry
dWN0dXJlKCksIGFycmF5LCBJdGVyYXRpb25LaW5kOjpWYWx1ZXMpOworICAgICAgICAgICAgICAg
IGl0ZXJhdG9yLT5pbnRlcm5hbEZpZWxkKEpTQXJyYXlJdGVyYXRvcjo6RmllbGQ6OkluZGV4KS5z
ZXRXaXRob3V0V3JpdGVCYXJyaWVyKGpzTnVtYmVyKGluZGV4ICsgMSkpOworICAgICAgICAgICAg
ICAgIGl0ZXJhdG9yQ2xvc2UoZ2xvYmFsT2JqZWN0LCBpdGVyYXRvcik7CisgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKICAgICBJdGVyYXRpb25SZWNvcmQgaXRlcmF0aW9uUmVjb3JkID0gaXRlcmF0b3JGb3JJ
dGVyYWJsZShnbG9iYWxPYmplY3QsIGl0ZXJhYmxlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCB2b2lkKCkpOwogICAgIHdoaWxlICh0cnVlKSB7CkBAIC03Miw3ICs5NCw3IEBAIHZv
aWQgZm9yRWFjaEluSXRlcmFibGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1
ZSBpdGVyYWJsZSwgY29uc3QgQ2FsCiAgICAgICAgIGNhbGxiYWNrKHZtLCBnbG9iYWxPYmplY3Qs
IG5leHRWYWx1ZSk7CiAgICAgICAgIGlmIChVTkxJS0VMWShzY29wZS5leGNlcHRpb24oKSkpIHsK
ICAgICAgICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICAgICAgICAgIGl0ZXJhdG9yQ2xvc2Uo
Z2xvYmFsT2JqZWN0LCBpdGVyYXRpb25SZWNvcmQpOworICAgICAgICAgICAgaXRlcmF0b3JDbG9z
ZShnbG9iYWxPYmplY3QsIGl0ZXJhdGlvblJlY29yZC5pdGVyYXRvcik7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KICAgICB9CkBAIC04NCw2ICsxMDYsMjMgQEAgdm9pZCBmb3JFYWNo
SW5JdGVyYWJsZShKU0dsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogaXRlcmFi
bGUsIEpTVmFsdWUKICAgICBhdXRvJiB2bSA9IGdldFZNKCZnbG9iYWxPYmplY3QpOwogICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAorICAgIGlmIChwcmVwYXJlRm9y
RmFzdEFycmF5SXRlcmF0aW9uKHZtLCAmZ2xvYmFsT2JqZWN0LCBpdGVyYWJsZSwgaXRlcmF0b3JN
ZXRob2QpID09IEl0ZXJhdGlvbk1vZGU6OkZhc3RBcnJheSkgeworICAgICAgICBhdXRvKiBhcnJh
eSA9IGpzQ2FzdDxKU0FycmF5Kj4oaXRlcmFibGUpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGlu
ZGV4ID0gMDsgaW5kZXggPCBhcnJheS0+bGVuZ3RoKCk7ICsraW5kZXgpIHsKKyAgICAgICAgICAg
IEpTVmFsdWUgbmV4dFZhbHVlID0gYXJyYXktPmdldEluZGV4KCZnbG9iYWxPYmplY3QsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihpbmRleCkpOworICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgdm9pZCgpKTsKKyAgICAgICAgICAgIGNhbGxiYWNrKHZtLCBnbG9iYWxPYmplY3Qs
IG5leHRWYWx1ZSk7CisgICAgICAgICAgICBpZiAoVU5MSUtFTFkoc2NvcGUuZXhjZXB0aW9uKCkp
KSB7CisgICAgICAgICAgICAgICAgc2NvcGUucmVsZWFzZSgpOworICAgICAgICAgICAgICAgIEpT
QXJyYXlJdGVyYXRvciogaXRlcmF0b3IgPSBKU0FycmF5SXRlcmF0b3I6OmNyZWF0ZSh2bSwgZ2xv
YmFsT2JqZWN0LmFycmF5SXRlcmF0b3JTdHJ1Y3R1cmUoKSwgYXJyYXksIEl0ZXJhdGlvbktpbmQ6
OlZhbHVlcyk7CisgICAgICAgICAgICAgICAgaXRlcmF0b3ItPmludGVybmFsRmllbGQoSlNBcnJh
eUl0ZXJhdG9yOjpGaWVsZDo6SW5kZXgpLnNldFdpdGhvdXRXcml0ZUJhcnJpZXIoanNOdW1iZXIo
aW5kZXggKyAxKSk7CisgICAgICAgICAgICAgICAgaXRlcmF0b3JDbG9zZSgmZ2xvYmFsT2JqZWN0
LCBpdGVyYXRvcik7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBhdXRvIGl0ZXJhdGlvblJlY29y
ZCA9IGl0ZXJhdG9yRm9ySXRlcmFibGUoJmdsb2JhbE9iamVjdCwgaXRlcmFibGUsIGl0ZXJhdG9y
TWV0aG9kKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogICAgIHdo
aWxlICh0cnVlKSB7CkBAIC05Nyw3ICsxMzYsNyBAQCB2b2lkIGZvckVhY2hJbkl0ZXJhYmxlKEpT
R2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiBpdGVyYWJsZSwgSlNWYWx1ZQog
ICAgICAgICBjYWxsYmFjayh2bSwgZ2xvYmFsT2JqZWN0LCBuZXh0VmFsdWUpOwogICAgICAgICBp
ZiAoVU5MSUtFTFkoc2NvcGUuZXhjZXB0aW9uKCkpKSB7CiAgICAgICAgICAgICBzY29wZS5yZWxl
YXNlKCk7Ci0gICAgICAgICAgICBpdGVyYXRvckNsb3NlKCZnbG9iYWxPYmplY3QsIGl0ZXJhdGlv
blJlY29yZCk7CisgICAgICAgICAgICBpdGVyYXRvckNsb3NlKCZnbG9iYWxPYmplY3QsIGl0ZXJh
dGlvblJlY29yZC5pdGVyYXRvcik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5SXRl
cmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlJdGVyYXRvci5o
CmluZGV4IDBlODViZGIwZDU4MWIyYjg0YzU1Mjk3YzNlMjc3MDNhZDkzNDE2YjAuLjFmY2JjZDUz
NWQxODdmZjE0MGNkMGViNTU0MzgxZTgzMjdjZTdhNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlJdGVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQXJyYXlJdGVyYXRvci5oCkBAIC02OCw3ICs2OCw3IEBAIGNsYXNz
IEpTQXJyYXlJdGVyYXRvciBmaW5hbCA6IHB1YmxpYyBKU0ludGVybmFsRmllbGRPYmplY3RJbXBs
PDM+IHsKICAgICBJdGVyYXRpb25LaW5kIGtpbmQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2Fz
dDxJdGVyYXRpb25LaW5kPihpbnRlcm5hbEZpZWxkKEZpZWxkOjpLaW5kKS5nZXQoKS5hc1VJbnQz
MkFzQW55SW50KCkpOyB9CiAgICAgSlNPYmplY3QqIGl0ZXJhdGVkT2JqZWN0KCkgY29uc3QgeyBy
ZXR1cm4ganNDYXN0PEpTT2JqZWN0Kj4oaW50ZXJuYWxGaWVsZChGaWVsZDo6SXRlcmF0ZWRPYmpl
Y3QpLmdldCgpKTsgfQogCi0gICAgc3RhdGljIEpTQXJyYXlJdGVyYXRvciogY3JlYXRlKFZNJiwg
U3RydWN0dXJlKiwgSlNPYmplY3QqIGl0ZXJhdGVkT2JqZWN0LCBKU1ZhbHVlIGtpbmQpOworICAg
IEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBKU0FycmF5SXRlcmF0b3IqIGNyZWF0ZShWTSYsIFN0
cnVjdHVyZSosIEpTT2JqZWN0KiBpdGVyYXRlZE9iamVjdCwgSlNWYWx1ZSBraW5kKTsKICAgICBz
dGF0aWMgSlNBcnJheUl0ZXJhdG9yKiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgSlNPYmplY3QqIGl0ZXJhdGVkT2JqZWN0LCBJdGVyYXRpb25LaW5kIGtpbmQpCiAgICAgewog
ICAgICAgICByZXR1cm4gY3JlYXRlKHZtLCBzdHJ1Y3R1cmUsIGl0ZXJhdGVkT2JqZWN0LCBqc051
bWJlcihzdGF0aWNfY2FzdDx1bnNpZ25lZD4oa2luZCkpKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMv
Q2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNmQzNWRlNGFkNDliZGUyMTE0Yzdm
NzU4ZDJjOTE5ZGEwYmQxODU0OS4uNGQ4MjkyOTg4NTU1ZTA4NWM5MmRiN2FjNTcwYWZlYTMxNzk4
NzJiNiAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxOCBAQAorMjAyMS0wMi0wNyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lA
YXBwbGUuY29tPgorCisgICAgICAgIFtKU0NdIEMrKyBpdGVyYXRpb24gc2hvdWxkIHN1cHBvcnQg
ZmFzdCBpdGVyYXRvciBwcm90b2NvbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjIxNTI2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBtaWNyb2JlbmNobWFya3MvbWFwLWNvbnN0cnVjdG9yLmpzOiBBZGRl
ZC4KKyAgICAgICAgKHRlc3QpOgorICAgICAgICAqIHN0cmVzcy9tYXAtY29uc3RydWN0b3ItaG9s
ZS10aHJvdy5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgIChzaG91bGRU
aHJvdyk6CisgICAgICAgICh2YWx1ZXMuX19wcm90b19fLnJldHVybik6CisgICAgICAgIChNYXAu
cHJvdG90eXBlKToKKwogMjAyMS0wMi0wNiAgQWxleGV5IFNodmF5a2EgIDxzaHZhaWthbGVzaEBn
bWFpbC5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjI2NDU3NCk6IFVuY2hlY2tlZCBKUyBl
eGNlcHRpb24gaW4gdmFsaWRhdGVBbmRBcHBseVByb3BlcnR5RGVzY3JpcHRvcigpCmRpZmYgLS1n
aXQgYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9tYXAtY29uc3RydWN0b3IuanMgYi9KU1Rlc3Rz
L21pY3JvYmVuY2htYXJrcy9tYXAtY29uc3RydWN0b3IuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTZiMjBhNmZm
ZTMxYTZjNTEzMWEwOGE5MGI0MzRkYmVhMDBhNTBmNgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVz
dHMvbWljcm9iZW5jaG1hcmtzL21hcC1jb25zdHJ1Y3Rvci5qcwpAQCAtMCwwICsxLDMxIEBACitm
dW5jdGlvbiB0ZXN0KGFycmF5KQoreworICAgIHJldHVybiBuZXcgTWFwKGFycmF5KTsKK30KK25v
SW5saW5lKHRlc3QpOworCit2YXIgYXJyYXkgPSBbCisgICAgWzAsIDBdLAorICAgIFsxLCAwXSwK
KyAgICBbMiwgMF0sCisgICAgWzMsIDBdLAorICAgIFs0LCAwXSwKKyAgICBbNSwgMF0sCisgICAg
WzYsIDBdLAorICAgIFs3LCAwXSwKKyAgICBbOCwgMF0sCisgICAgWzksIDBdLAorICAgIFsxMCwg
MF0sCisgICAgWzExLCAwXSwKKyAgICBbMTIsIDBdLAorICAgIFsxMywgMF0sCisgICAgWzE0LCAw
XSwKKyAgICBbMTUsIDBdLAorICAgIFsxNiwgMF0sCisgICAgWzE3LCAwXSwKKyAgICBbMTgsIDBd
LAorICAgIFsxOSwgMF0sCitdOworCitmb3IgKHZhciBpID0gMDsgaSA8IDFlNDsgKytpKQorICAg
IHRlc3QoYXJyYXkpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvbWFwLWNvbnN0cnVjdG9y
LWhvbGUtdGhyb3cuanMgYi9KU1Rlc3RzL3N0cmVzcy9tYXAtY29uc3RydWN0b3ItaG9sZS10aHJv
dy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5iYTNmMDc2Y2NiOWVhOTAwM2EwYWU4MGMyZTU2NjE4MzIyYmEzZWE5
Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvbWFwLWNvbnN0cnVjdG9yLWhvbGUt
dGhyb3cuanMKQEAgLTAsMCArMSwzOCBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBl
Y3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZFRocm93
KGZ1bmMsIGVycm9yTWVzc2FnZSkgeworICAgIHZhciBlcnJvclRocm93biA9IGZhbHNlOworICAg
IHZhciBlcnJvciA9IG51bGw7CisgICAgdHJ5IHsKKyAgICAgICAgZnVuYygpOworICAgIH0gY2F0
Y2ggKGUpIHsKKyAgICAgICAgZXJyb3JUaHJvd24gPSB0cnVlOworICAgICAgICBlcnJvciA9IGU7
CisgICAgfQorICAgIGlmICghZXJyb3JUaHJvd24pCisgICAgICAgIHRocm93IG5ldyBFcnJvcign
bm90IHRocm93bicpOworICAgIGlmIChTdHJpbmcoZXJyb3IpICE9PSBlcnJvck1lc3NhZ2UpCisg
ICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIGVycm9yOiAke1N0cmluZyhlcnJvcil9YCk7Cit9
CisKK3ZhciBpdGVyYXRvcjsKK1tdLnZhbHVlcygpLl9fcHJvdG9fXy5yZXR1cm4gPSBmdW5jdGlv
biAoKSB7CisgICAgaXRlcmF0b3IgPSB0aGlzOworfTsKKwordmFyIGFycmF5ID0gWworICAgIFsw
LCAwXSwKKyAgICBbMSwgMF0sCisgICAgWzIsIDBdLAorXTsKK01hcC5wcm90b3R5cGUuc2V0ID0g
ZnVuY3Rpb24gKCkgeworICAgIHRocm93IG5ldyBFcnJvcigib2siKTsKK307CitzaG91bGRUaHJv
dygoKSA9PiB7CisgICAgdmFyIG1hcCA9IG5ldyBNYXAoYXJyYXkpOworfSwgYEVycm9yOiBva2Ap
Oworc2hvdWxkQmUoaXRlcmF0b3IgIT09IHVuZGVmaW5lZCwgdHJ1ZSk7CisK
</data>
<flag name="commit-queue"
          id="437793"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>419536</attachid>
            <date>2021-02-07 03:25:56 -0800</date>
            <delta_ts>2021-02-09 15:47:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221526-20210207032556.patch</filename>
            <type>text/plain</type>
            <size>20731</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyNDcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
NjhmOWU5YzJiOTMxYzhkODEzNDA3MDY5NDExOWNhOTI2YWE0MDc3Li5iOThhNTYzNmFmNGUxZGQ1
YTU3OTM3M2ZlYmJhMTZiNmU1NDMxMzI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNSBAQAorMjAyMS0wMi0wNyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEMrKyBpdGVyYXRpb24gc2hvdWxkIHN1cHBvcnQgZmFzdCBpdGVy
YXRvciBwcm90b2NvbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjIxNTI2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVGhpcyBwYXRjaCBhZGRzIGZhc3QgaXRlcmF0aW9uIHByb3RvY29sIHN1cHBvcnQgaW4g
QysrIGl0ZXJhdGlvbiAoZm9yRWFjaEl0ZXJhYmxlKS4KKyAgICAgICAgSW4gSlMsIHdlIGhhdmUg
b3BfaXRlcmF0b3Jfb3BlbiAvIG9wX2l0ZXJhdG9yX25leHQgdG8gaXRlcmF0ZSBhcnJheSBxdWlj
a2x5LgorICAgICAgICBCdXQgd2UgZG8gbm90IHVzZSB0aGlzIGZlYXR1cmUgaW4gQysrIGZvckVh
Y2hJdGVyYWJsZS4gSW4gdGhpcyBwYXRjaCB3ZSBpbnRlZ3JhdGUKKyAgICAgICAgdGhlIHNhbWUg
KG9yIGEgYml0IG1vcmUgZWZmaWNpZW50IHNpbmNlIHdlIGNhbiBhdm9pZCBjcmVhdGluZyBKU0Fy
cmF5SXRlcmF0b3IpIG1lY2hhbmlzbQorICAgICAgICBzbyB0aGF0IGl0ZXJhdGlvbiBpbiBDKysg
Z2V0cyBmYXN0ZXIgZm9yIG5vcm1hbCBhcnJheXMuCisKKyAgICAgICAgV2Ugb2JzZXJ2ZWQgMS45
eCBmYXN0ZXIgaW4gTWFwIGNyZWF0aW9uIHdpdGggYXJyYXlzLgorCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVG9UICAgICAgICAgICAgICAgICAgICAgUGF0Y2hlZAor
CisgICAgICAgICAgICBtYXAtY29uc3RydWN0b3IgICAgICAgMzUuNzQ0NistMC4yMzU0ICAgICBe
ICAgICAxOC43NTE2Ky0wLjQ1MzQgICAgICAgIF4gZGVmaW5pdGVseSAxLjkwNjJ4IGZhc3Rlcgor
CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBpbnNwZWN0b3IvSlNJbmplY3RlZFNj
cmlwdEhvc3QuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpKU0luamVjdGVkU2NyaXB0SG9zdDo6
aXRlcmF0b3JFbnRyaWVzKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHA6
CisgICAgICAgIChKU0M6Oml0ZXJhdG9yT3BlblRyeUZhc3RJbXBsKToKKyAgICAgICAgKiBydW50
aW1lL0l0ZXJhdG9yT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6Oml0ZXJhdG9yQ2xvc2Up
OgorICAgICAgICAoSlNDOjpwcmVwYXJlRm9yRmFzdEFycmF5SXRlcmF0aW9uKToKKyAgICAgICAg
KiBydW50aW1lL0l0ZXJhdG9yT3BlcmF0aW9ucy5oOgorICAgICAgICAoSlNDOjpmb3JFYWNoSW5J
dGVyYWJsZSk6CisgICAgICAgICogcnVudGltZS9KU0FycmF5SXRlcmF0b3IuaDoKKwogMjAyMS0w
Mi0wNiAgQWxleGV5IFNodmF5a2EgIDxzaHZhaWthbGVzaEBnbWFpbC5jb20+CiAKICAgICAgICAg
UkVHUkVTU0lPTiAocjI2NDU3NCk6IFVuY2hlY2tlZCBKUyBleGNlcHRpb24gaW4gdmFsaWRhdGVB
bmRBcHBseVByb3BlcnR5RGVzY3JpcHRvcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50
eHQKaW5kZXggNGRmOGEyNTBjMGM5YmQyMjNlNTY4NmFkN2M1ZjY3ZjlhMDEwZTc4MC4uODg3MGQx
ZWEwNDhlOWVjNGFjMGVkZWRjZDdmMTk3MzQzNWUzOGIyZiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
TWFrZUxpc3RzLnR4dApAQCAtNTYwLDYgKzU2MCw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklW
QVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaAogICAgIGJ5
dGVjb2RlL0luc3RydWN0aW9uU3RyZWFtLmgKICAgICBieXRlY29kZS9JbnRlcm5hbEZ1bmN0aW9u
QWxsb2NhdGlvblByb2ZpbGUuaAorICAgIGJ5dGVjb2RlL0l0ZXJhdGlvbk1vZGVNZXRhZGF0YS5o
CiAgICAgYnl0ZWNvZGUvSnVtcFRhYmxlLmgKICAgICBieXRlY29kZS9MTEludENhbGxMaW5rSW5m
by5oCiAgICAgYnl0ZWNvZGUvTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRj
aHBvaW50LmgKQEAgLTkyMiw2ICs5MjMsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfUFJJVkFURV9G
UkFNRVdPUktfSEVBREVSUwogICAgIHJ1bnRpbWUvSlNBcnJheUJ1ZmZlclByb3RvdHlwZS5oCiAg
ICAgcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5oCiAgICAgcnVudGltZS9KU0FycmF5QnVmZmVy
Vmlld0lubGluZXMuaAorICAgIHJ1bnRpbWUvSlNBcnJheUl0ZXJhdG9yLmgKICAgICBydW50aW1l
L0pTQmlnSW50LmgKICAgICBydW50aW1lL0pTQ0NvbmZpZy5oCiAgICAgcnVudGltZS9KU0NJbmxp
bmVzLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZDkyMTI3ZmNkNGY4ZDZhZTg2
NDk3ZDk4YzZlYzFhMzU3ZWEwMzJkMC4uNTcwNGU0Mjc3MzM5NTA5YjIxOGEyZWUyMmQyY2JjMWU2
MTAyODMwZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEwOTcsNyArMTA5Nyw3
IEBACiAJCTUzOTkzMEM4MjJBRDNCOUEwMDUxQ0RFMiAvKiBXZWFrT2JqZWN0UmVmQ29uc3RydWN0
b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzOTkz
MEM3MjJBRDNCOUEwMDUxQ0RFMiAvKiBXZWFrT2JqZWN0UmVmQ29uc3RydWN0b3IuaCAqLzsgfTsK
IAkJNTM5QkZCQUUyMkFEM0MzQTAwMjNGNEMwIC8qIFdlYWtPYmplY3RSZWZQcm90b3R5cGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzOUJGQkFEMjJB
RDNDM0EwMDIzRjRDMCAvKiBXZWFrT2JqZWN0UmVmUHJvdG90eXBlLmggKi87IH07CiAJCTUzOUJG
QkIwMjJBRDNDREMwMDIzRjRDMCAvKiBKU1dlYWtPYmplY3RSZWYuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzOUJGQkFGMjJBRDNDREMwMDIzRjRDMCAv
KiBKU1dlYWtPYmplY3RSZWYuaCAqLzsgfTsKLQkJNTM5REQ3RjUyM0MxQkJCNTAwOTA1RjEzIC8q
IEpTQXJyYXlJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTM5REQ3RjQyM0MxQkJBOTAwOTA1RjEzIC8qIEpTQXJyYXlJdGVyYXRvci5oICov
OyB9OworCQk1MzlERDdGNTIzQzFCQkI1MDA5MDVGMTMgLyogSlNBcnJheUl0ZXJhdG9yLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzlERDdGNDIzQzFC
QkE5MDA5MDVGMTMgLyogSlNBcnJheUl0ZXJhdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTM5RkI4QkExQzk5REE3QzAwOTQwRkExIC8qIEpT
QXJyYXlJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MzlGQjhCOTFDOTlEQTdDMDA5NDBGQTEgLyogSlNBcnJheUlubGluZXMuaCAqLzsgfTsK
IAkJNTNCNEJEMTIxRjY4QjMyNTAwRDJCRUEzIC8qIFdhc21PcHMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzM0IxNURFMURDN0Y0NjMwMDRENTAwQSAv
KiBXYXNtT3BzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNTNCNjAxRUMyMDM0QjhDNTAwNkJFNjY3IC8qIEpTQ2FzdC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTNCNjAxRUIyMDM0QjhDNTAwNkJFNjY3
IC8qIEpTQ2FzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0
ZWRTY3JpcHRIb3N0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmpl
Y3RlZFNjcmlwdEhvc3QuY3BwCmluZGV4IGE5OGJkODZiZDYwN2UyMmI0OGRkMDEyZDZjODZkNzc3
NzY0MThjYjYuLjk4NjlmMWRhMGI1ZmVmODM2NDkzMWI0M2FmZTJjYTIzOGQyZWM1NDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhv
c3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNj
cmlwdEhvc3QuY3BwCkBAIC02MTMsNyArNjEzLDcgQEAgSlNWYWx1ZSBKU0luamVjdGVkU2NyaXB0
SG9zdDo6aXRlcmF0b3JFbnRyaWVzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGwK
ICAgICAgICAgYXJyYXktPnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdCwgaSwgZW50cnkpOwog
ICAgICAgICBpZiAoVU5MSUtFTFkoc2NvcGUuZXhjZXB0aW9uKCkpKSB7CiAgICAgICAgICAgICBz
Y29wZS5yZWxlYXNlKCk7Ci0gICAgICAgICAgICBpdGVyYXRvckNsb3NlKGdsb2JhbE9iamVjdCwg
aXRlcmF0aW9uUmVjb3JkKTsKKyAgICAgICAgICAgIGl0ZXJhdG9yQ2xvc2UoZ2xvYmFsT2JqZWN0
LCBpdGVyYXRpb25SZWNvcmQuaXRlcmF0b3IpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21t
b25TbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzLmNwcAppbmRleCA0NTE2MzE5Mzk5MWQzNjM5MzRiZmU5MmEyZjk3MmRkNmJhMDczZmU5
Li43M2QxYjhmN2I4YTZlMDE0ZjY1NWJhM2Y3NmVkY2RmMzcwOTc0NDRhIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKQEAgLTM0LDYg
KzM0LDcgQEAKICNpbmNsdWRlICJFcnJvckhhbmRsaW5nU2NvcGUuaCIKICNpbmNsdWRlICJFeGNl
cHRpb25GdXp6LmgiCiAjaW5jbHVkZSAiRnJhbWVUcmFjZXJzLmgiCisjaW5jbHVkZSAiSXRlcmF0
b3JPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiSlNBcnJheUl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAi
SlNBc3luY0dlbmVyYXRvci5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKQEAgLTg2MywzNyAr
ODY0LDE5IEBAIEFMV0FZU19JTkxJTkUgU2xvd1BhdGhSZXR1cm5UeXBlIGl0ZXJhdG9yT3BlblRy
eUZhc3RJbXBsKENhbGxGcmFtZSogY2FsbEZyYW1lLCBjCiAgICAgSlNWYWx1ZSBzeW1ib2xJdGVy
YXRvciA9IEdFVF9DKGJ5dGVjb2RlLm1fc3ltYm9sSXRlcmF0b3IpLmpzVmFsdWUoKTsKICAgICBh
dXRvJiBpdGVyYXRvciA9IEdFVChieXRlY29kZS5tX2l0ZXJhdG9yKTsKIAotICAgIGF1dG8gcHJl
cGFyZUZvckZhc3RBcnJheUl0ZXJhdGlvbiA9IFsmXSB7Ci0gICAgICAgIGlmICghZ2xvYmFsT2Jq
ZWN0LT5hcnJheUl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50U2V0KCkuaXNTdGlsbFZhbGlkKCkp
Ci0gICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uTW9kZTo6R2VuZXJpYzsKLQotICAgICAgICAv
LyBUaGlzIGlzIGNvcnJlY3QgYmVjYXVzZSB3ZSBqdXN0IGNoZWNrZWQgdGhlIHdhdGNocG9pbnQg
aXMgc3RpbGwgdmFsaWQuCi0gICAgICAgIEpTRnVuY3Rpb24qIHN5bWJvbEl0ZXJhdG9yRnVuY3Rp
b24gPSBqc0R5bmFtaWNDYXN0PEpTRnVuY3Rpb24qPih2bSwgc3ltYm9sSXRlcmF0b3IpOwotICAg
ICAgICBpZiAoIXN5bWJvbEl0ZXJhdG9yRnVuY3Rpb24pCi0gICAgICAgICAgICByZXR1cm4gSXRl
cmF0aW9uTW9kZTo6R2VuZXJpYzsgCi0KLSAgICAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0byBhbGxv
Y2F0ZSB0aGUgdmFsdWVzIGZ1bmN0aW9uIGp1c3QgdG8gY2hlY2sgaWYgaXQncyB0aGUgc2FtZSBh
cyBvdXIgZnVuY3Rpb24gYXQgc28gd2UgdXNlIHRoZSBjb25jdXJyZW50IGFjY2Vzc29yLgotICAg
ICAgICAvLyBGSVhNRTogVGhpcyBvbmx5IHdvcmtzIGZvciBhcnJheXMgZnJvbSB0aGUgc2FtZSBn
bG9iYWwgb2JqZWN0IGFzIG91cnNlbHZlcyBidXQgd2Ugc2hvdWxkIGJlIGFibGUgdG8gc3VwcG9y
dCBhbnkgcGFpcmluZy4KLSAgICAgICAgaWYgKGdsb2JhbE9iamVjdC0+YXJyYXlQcm90b1ZhbHVl
c0Z1bmN0aW9uQ29uY3VycmVudGx5KCkgIT0gc3ltYm9sSXRlcmF0b3JGdW5jdGlvbikKLSAgICAg
ICAgICAgIHJldHVybiBJdGVyYXRpb25Nb2RlOjpHZW5lcmljOwotCisgICAgaWYgKHByZXBhcmVG
b3JGYXN0QXJyYXlJdGVyYXRpb24odm0sIGdsb2JhbE9iamVjdCwgaXRlcmFibGUsIHN5bWJvbEl0
ZXJhdG9yKSA9PSBJdGVyYXRpb25Nb2RlOjpGYXN0QXJyYXkpIHsKICAgICAgICAgLy8gV2Ugc2hv
dWxkIGJlIGdvb2QgdG8gZ28uCiAgICAgICAgIG1ldGFkYXRhLm1faXRlcmF0aW9uTWV0YWRhdGEu
c2Vlbk1vZGVzID0gbWV0YWRhdGEubV9pdGVyYXRpb25NZXRhZGF0YS5zZWVuTW9kZXMgfCBJdGVy
YXRpb25Nb2RlOjpGYXN0QXJyYXk7CiAgICAgICAgIEdFVChieXRlY29kZS5tX25leHQpID0gSlNW
YWx1ZSgpOwogICAgICAgICBhdXRvKiBpdGVyYXRlZE9iamVjdCA9IGpzQ2FzdDxKU09iamVjdCo+
KGl0ZXJhYmxlKTsKICAgICAgICAgaXRlcmF0b3IgPSBKU0FycmF5SXRlcmF0b3I6OmNyZWF0ZSh2
bSwgZ2xvYmFsT2JqZWN0LT5hcnJheUl0ZXJhdG9yU3RydWN0dXJlKCksIGl0ZXJhdGVkT2JqZWN0
LCBJdGVyYXRpb25LaW5kOjpWYWx1ZXMpOwogICAgICAgICBQUk9GSUxFX1ZBTFVFX0lOKGl0ZXJh
dG9yLmpzVmFsdWUoKSwgbV9pdGVyYXRvclByb2ZpbGUpOwotICAgICAgICByZXR1cm4gSXRlcmF0
aW9uTW9kZTo6RmFzdEFycmF5OwotICAgIH07Ci0KLSAgICBpZiAoaXRlcmFibGUuaW5oZXJpdHM8
SlNBcnJheT4odm0pKSB7Ci0gICAgICAgIGlmIChwcmVwYXJlRm9yRmFzdEFycmF5SXRlcmF0aW9u
KCkgPT0gSXRlcmF0aW9uTW9kZTo6RmFzdEFycmF5KQotICAgICAgICAgICAgcmV0dXJuIGVuY29k
ZVJlc3VsdChwYywgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oSXRlcmF0aW9uTW9kZTo6RmFzdEFy
cmF5KSk7CisgICAgICAgIHJldHVybiBlbmNvZGVSZXN1bHQocGMsIHJlaW50ZXJwcmV0X2Nhc3Q8
dm9pZCo+KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oSXRlcmF0aW9uTW9kZTo6RmFzdEFycmF5KSkp
OwogICAgIH0KIAogICAgIC8vIFJldHVybiB0byB0aGUgYnl0ZWNvZGUgdG8gdHJ5IGluIGdlbmVy
aWMgbW9kZS4KICAgICBtZXRhZGF0YS5tX2l0ZXJhdGlvbk1ldGFkYXRhLnNlZW5Nb2RlcyA9IG1l
dGFkYXRhLm1faXRlcmF0aW9uTWV0YWRhdGEuc2Vlbk1vZGVzIHwgSXRlcmF0aW9uTW9kZTo6R2Vu
ZXJpYzsKLSAgICByZXR1cm4gZW5jb2RlUmVzdWx0KHBjLCByZWludGVycHJldF9jYXN0PHZvaWQq
PihJdGVyYXRpb25Nb2RlOjpHZW5lcmljKSk7CisgICAgcmV0dXJuIGVuY29kZVJlc3VsdChwYywg
cmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8dWludHB0cl90PihJdGVyYXRpb25N
b2RlOjpHZW5lcmljKSkpOwogfQogCiBKU0NfREVGSU5FX0NPTU1PTl9TTE9XX1BBVEgoaXRlcmF0
b3Jfb3Blbl90cnlfZmFzdF9uYXJyb3cpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JdGVyYXRvck9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSXRlcmF0b3JPcGVyYXRpb25zLmNwcAppbmRleCA2NDA1NGI4MDg3NmE5ZjFiNGI3
MmY4NGU2ZmFlODI2N2ViZTMzYzc5Li4xMjAyYzAxNjkwNzJjMzIyZmM1YjhjMDRmZjY0OGMxY2M1
NDc5M2I1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JdGVyYXRv
ck9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0l0ZXJh
dG9yT3BlcmF0aW9ucy5jcHAKQEAgLTgyLDcgKzgyLDcgQEAgSlNWYWx1ZSBpdGVyYXRvclN0ZXAo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSXRlcmF0aW9uUmVjb3JkIGl0ZXJhdGlvblJl
Y28KICAgICByZXR1cm4gcmVzdWx0OwogfQogCi12b2lkIGl0ZXJhdG9yQ2xvc2UoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSXRlcmF0aW9uUmVjb3JkIGl0ZXJhdGlvblJlY29yZCkKK3Zv
aWQgaXRlcmF0b3JDbG9zZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGl0
ZXJhdG9yKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTk0LDcgKzk0LDcgQEAgdm9p
ZCBpdGVyYXRvckNsb3NlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEl0ZXJhdGlvblJl
Y29yZCBpdGVyYXRpb25SZWNvcmQKICAgICAgICAgY2F0Y2hTY29wZS5jbGVhckV4Y2VwdGlvbigp
OwogICAgIH0KIAotICAgIEpTVmFsdWUgcmV0dXJuRnVuY3Rpb24gPSBpdGVyYXRpb25SZWNvcmQu
aXRlcmF0b3IuZ2V0KGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+cmV0dXJuS2V5d29y
ZCk7CisgICAgSlNWYWx1ZSByZXR1cm5GdW5jdGlvbiA9IGl0ZXJhdG9yLmdldChnbG9iYWxPYmpl
Y3QsIHZtLnByb3BlcnR5TmFtZXMtPnJldHVybktleXdvcmQpOwogICAgIGlmIChVTkxJS0VMWSh0
aHJvd1Njb3BlLmV4Y2VwdGlvbigpKSB8fCByZXR1cm5GdW5jdGlvbi5pc1VuZGVmaW5lZE9yTnVs
bCgpKSB7CiAgICAgICAgIGlmIChleGNlcHRpb24pCiAgICAgICAgICAgICB0aHJvd0V4Y2VwdGlv
bihnbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGV4Y2VwdGlvbik7CkBAIC0xMTIsNyArMTEyLDcg
QEAgdm9pZCBpdGVyYXRvckNsb3NlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEl0ZXJh
dGlvblJlY29yZCBpdGVyYXRpb25SZWNvcmQKIAogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIHJl
dHVybkZ1bmN0aW9uQXJndW1lbnRzOwogICAgIEFTU0VSVCghcmV0dXJuRnVuY3Rpb25Bcmd1bWVu
dHMuaGFzT3ZlcmZsb3dlZCgpKTsKLSAgICBKU1ZhbHVlIGlubmVyUmVzdWx0ID0gY2FsbChnbG9i
YWxPYmplY3QsIHJldHVybkZ1bmN0aW9uLCByZXR1cm5GdW5jdGlvbkNhbGxEYXRhLCBpdGVyYXRp
b25SZWNvcmQuaXRlcmF0b3IsIHJldHVybkZ1bmN0aW9uQXJndW1lbnRzKTsKKyAgICBKU1ZhbHVl
IGlubmVyUmVzdWx0ID0gY2FsbChnbG9iYWxPYmplY3QsIHJldHVybkZ1bmN0aW9uLCByZXR1cm5G
dW5jdGlvbkNhbGxEYXRhLCBpdGVyYXRvciwgcmV0dXJuRnVuY3Rpb25Bcmd1bWVudHMpOwogCiAg
ICAgaWYgKGV4Y2VwdGlvbikgewogICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIGV4Y2VwdGlvbik7CkBAIC0yMzMsNCArMjMzLDQ4IEBAIEl0ZXJhdGlvblJl
Y29yZCBpdGVyYXRvckZvckl0ZXJhYmxlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
VmFsdWUgaXRlcmFiCiAgICAgcmV0dXJuIHsgaXRlcmF0b3IsIG5leHRNZXRob2QgfTsKIH0KIAor
SXRlcmF0aW9uTW9kZSBwcmVwYXJlRm9yRmFzdEFycmF5SXRlcmF0aW9uKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBpdGVyYWJsZSwgSlNWYWx1ZSBzeW1ib2xJ
dGVyYXRvcikKK3sKKyAgICBpZiAoIWl0ZXJhYmxlLmluaGVyaXRzPEpTQXJyYXk+KHZtKSkKKyAg
ICAgICAgcmV0dXJuIEl0ZXJhdGlvbk1vZGU6OkdlbmVyaWM7CisKKyAgICBpZiAoIWdsb2JhbE9i
amVjdC0+YXJyYXlJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNldCgpLmlzU3RpbGxWYWxpZCgp
KQorICAgICAgICByZXR1cm4gSXRlcmF0aW9uTW9kZTo6R2VuZXJpYzsKKworICAgIC8vIFRoaXMg
aXMgY29ycmVjdCBiZWNhdXNlIHdlIGp1c3QgY2hlY2tlZCB0aGUgd2F0Y2hwb2ludCBpcyBzdGls
bCB2YWxpZC4KKyAgICBKU0Z1bmN0aW9uKiBzeW1ib2xJdGVyYXRvckZ1bmN0aW9uID0ganNEeW5h
bWljQ2FzdDxKU0Z1bmN0aW9uKj4odm0sIHN5bWJvbEl0ZXJhdG9yKTsKKyAgICBpZiAoIXN5bWJv
bEl0ZXJhdG9yRnVuY3Rpb24pCisgICAgICAgIHJldHVybiBJdGVyYXRpb25Nb2RlOjpHZW5lcmlj
OworCisgICAgLy8gV2UgZG9uJ3Qgd2FudCB0byBhbGxvY2F0ZSB0aGUgdmFsdWVzIGZ1bmN0aW9u
IGp1c3QgdG8gY2hlY2sgaWYgaXQncyB0aGUgc2FtZSBhcyBvdXIgZnVuY3Rpb24gYXQgc28gd2Ug
dXNlIHRoZSBjb25jdXJyZW50IGFjY2Vzc29yLgorICAgIC8vIEZJWE1FOiBUaGlzIG9ubHkgd29y
a3MgZm9yIGFycmF5cyBmcm9tIHRoZSBzYW1lIGdsb2JhbCBvYmplY3QgYXMgb3Vyc2VsdmVzIGJ1
dCB3ZSBzaG91bGQgYmUgYWJsZSB0byBzdXBwb3J0IGFueSBwYWlyaW5nLgorICAgIGlmIChnbG9i
YWxPYmplY3QtPmFycmF5UHJvdG9WYWx1ZXNGdW5jdGlvbkNvbmN1cnJlbnRseSgpICE9IHN5bWJv
bEl0ZXJhdG9yRnVuY3Rpb24pCisgICAgICAgIHJldHVybiBJdGVyYXRpb25Nb2RlOjpHZW5lcmlj
OworCisgICAgcmV0dXJuIEl0ZXJhdGlvbk1vZGU6OkZhc3RBcnJheTsKK30KKworSXRlcmF0aW9u
TW9kZSBwcmVwYXJlRm9yRmFzdEFycmF5SXRlcmF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBpdGVyYWJsZSkKK3sKKyAgICBpZiAoIWl0ZXJhYmxlLmlu
aGVyaXRzPEpTQXJyYXk+KHZtKSkKKyAgICAgICAgcmV0dXJuIEl0ZXJhdGlvbk1vZGU6OkdlbmVy
aWM7CisKKyAgICBKU0FycmF5KiBhcnJheSA9IGpzQ2FzdDxKU0FycmF5Kj4oaXRlcmFibGUpOwor
ICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gYXJyYXktPnN0cnVjdHVyZSh2bSk7CisgICAgLy8g
RklYTUU6IFdlIHdhbnQgdG8gc3VwcG9ydCBicm9hZGVyIEpTQXJyYXlzIHNvIGxvbmcgYXMgYXJy
YXlbQEBpdGVyYXRvcl0gaXMgbm90IGRlZmluZWQuCisgICAgaWYgKCFnbG9iYWxPYmplY3QtPmlz
T3JpZ2luYWxBcnJheVN0cnVjdHVyZShzdHJ1Y3R1cmUpKQorICAgICAgICByZXR1cm4gSXRlcmF0
aW9uTW9kZTo6R2VuZXJpYzsKKworICAgIGlmICghZ2xvYmFsT2JqZWN0LT5hcnJheUl0ZXJhdG9y
UHJvdG9jb2xXYXRjaHBvaW50U2V0KCkuaXNTdGlsbFZhbGlkKCkpCisgICAgICAgIHJldHVybiBJ
dGVyYXRpb25Nb2RlOjpHZW5lcmljOworCisgICAgLy8gTm93LCBBcnJheSBoYXMgb3JpZ2luYWwg
QXJyYXkgU3RydWN0dXJlcyBhbmQgYXJyYXlJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNldCBp
cyBub3QgZmlyZWQuCisgICAgLy8gVGhpcyBtZWFucywKKyAgICAvLyAxLiBBcnJheS5wcm90b3R5
cGUgaXMgW1tQcm90b3R5cGVdXS4KKyAgICAvLyAyLiBhcnJheVtAQGl0ZXJhdG9yXSBpcyBub3Qg
b3ZlcnJpZGRlbi4KKyAgICAvLyAzLiBBcnJheS5wcm90b3R5cGVbQEBpdGVyYXRvcl0gaXMgYW4g
ZXhwZWN0ZWQgb25lLgorICAgIC8vIFNvLCB3ZSBjYW4gc2F5IHRoaXMgd2lsbCBjcmVhdGUgYW4g
ZXhwZWN0ZWQgQXJyYXlJdGVyYXRvci4KKyAgICByZXR1cm4gSXRlcmF0aW9uTW9kZTo6RmFzdEFy
cmF5OworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0l0ZXJhdG9yT3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSXRlcmF0b3JPcGVyYXRpb25zLmgKaW5kZXggMDFjZDMxYzQ5MTZjMGI1YTU1
ODk3MDdkOTU0MzdmNzNkZmM1M2RiMi4uNDk2ZjUyMmFkZmI3NWJiNzUwM2IwN2I0ZWRiODZlODU2
OTliNTFhZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSXRlcmF0
b3JPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSXRlcmF0
b3JPcGVyYXRpb25zLmgKQEAgLTI2LDggKzI2LDEwIEBACiAKICNwcmFnbWEgb25jZQogCisjaW5j
bHVkZSAiSXRlcmF0aW9uTW9kZU1ldGFkYXRhLmgiCisjaW5jbHVkZSAiSlNBcnJheUl0ZXJhdG9y
LmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgotI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5j
bHVkZSAiSlNPYmplY3RJbmxpbmVzLmgiCiAjaW5jbHVkZSAiVGhyb3dTY29wZS5oIgogCiBuYW1l
c3BhY2UgSlNDIHsKQEAgLTQxLDcgKzQzLDcgQEAgSlNWYWx1ZSBpdGVyYXRvck5leHQoSlNHbG9i
YWxPYmplY3QqLCBJdGVyYXRpb25SZWNvcmQsIEpTVmFsdWUgYXJndW1lbnQgPSBKU1ZhbHUKIEpT
X0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgaXRlcmF0b3JWYWx1ZShKU0dsb2JhbE9iamVjdCosIEpT
VmFsdWUgaXRlclJlc3VsdCk7CiBib29sIGl0ZXJhdG9yQ29tcGxldGUoSlNHbG9iYWxPYmplY3Qq
LCBKU1ZhbHVlIGl0ZXJSZXN1bHQpOwogSlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1ZSBpdGVyYXRv
clN0ZXAoSlNHbG9iYWxPYmplY3QqLCBJdGVyYXRpb25SZWNvcmQpOwotSlNfRVhQT1JUX1BSSVZB
VEUgdm9pZCBpdGVyYXRvckNsb3NlKEpTR2xvYmFsT2JqZWN0KiwgSXRlcmF0aW9uUmVjb3JkKTsK
K0pTX0VYUE9SVF9QUklWQVRFIHZvaWQgaXRlcmF0b3JDbG9zZShKU0dsb2JhbE9iamVjdCosIEpT
VmFsdWUgaXRlcmF0b3IpOwogSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIGNyZWF0ZUl0ZXJh
dG9yUmVzdWx0T2JqZWN0KEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSwgYm9vbCBkb25lKTsKIAog
U3RydWN0dXJlKiBjcmVhdGVJdGVyYXRvclJlc3VsdE9iamVjdFN0cnVjdHVyZShWTSYsIEpTR2xv
YmFsT2JqZWN0Jik7CkBAIC01MywxMiArNTUsMzIgQEAgSlNfRVhQT1JUX1BSSVZBVEUgSXRlcmF0
aW9uUmVjb3JkIGl0ZXJhdG9yRm9ySXRlcmFibGUoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIGkK
IEpTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgaXRlcmF0b3JNZXRob2QoSlNHbG9iYWxPYmplY3Qq
LCBKU09iamVjdCopOwogSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBoYXNJdGVyYXRvck1ldGhvZChK
U0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOwogCitKU19FWFBPUlRfUFJJVkFURSBJdGVyYXRpb25N
b2RlIHByZXBhcmVGb3JGYXN0QXJyYXlJdGVyYXRpb24oVk0mLCBKU0dsb2JhbE9iamVjdCosIEpT
VmFsdWUgaXRlcmFibGUpOworSlNfRVhQT1JUX1BSSVZBVEUgSXRlcmF0aW9uTW9kZSBwcmVwYXJl
Rm9yRmFzdEFycmF5SXRlcmF0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIGl0ZXJh
YmxlLCBKU1ZhbHVlIHN5bWJvbEl0ZXJhdG9yKTsKKwogdGVtcGxhdGU8dHlwZW5hbWUgQ2FsbEJh
Y2tUeXBlPgogdm9pZCBmb3JFYWNoSW5JdGVyYWJsZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU1ZhbHVlIGl0ZXJhYmxlLCBjb25zdCBDYWxsQmFja1R5cGUmIGNhbGxiYWNrKQogewog
ICAgIGF1dG8mIHZtID0gZ2V0Vk0oZ2xvYmFsT2JqZWN0KTsKICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAKKyAgICBpZiAocHJlcGFyZUZvckZhc3RBcnJheUl0ZXJh
dGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBpdGVyYWJsZSkgPT0gSXRlcmF0aW9uTW9kZTo6RmFzdEFy
cmF5KSB7CisgICAgICAgIGF1dG8qIGFycmF5ID0ganNDYXN0PEpTQXJyYXkqPihpdGVyYWJsZSk7
CisgICAgICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8IGFycmF5LT5sZW5ndGgo
KTsgKytpbmRleCkgeworICAgICAgICAgICAgSlNWYWx1ZSBuZXh0VmFsdWUgPSBhcnJheS0+Z2V0
SW5kZXgoZ2xvYmFsT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5kZXgpKTsKKyAgICAg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisgICAgICAgICAgICBj
YWxsYmFjayh2bSwgZ2xvYmFsT2JqZWN0LCBuZXh0VmFsdWUpOworICAgICAgICAgICAgaWYgKFVO
TElLRUxZKHNjb3BlLmV4Y2VwdGlvbigpKSkgeworICAgICAgICAgICAgICAgIHNjb3BlLnJlbGVh
c2UoKTsKKyAgICAgICAgICAgICAgICBKU0FycmF5SXRlcmF0b3IqIGl0ZXJhdG9yID0gSlNBcnJh
eUl0ZXJhdG9yOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+YXJyYXlJdGVyYXRvclN0cnVjdHVy
ZSgpLCBhcnJheSwgSXRlcmF0aW9uS2luZDo6VmFsdWVzKTsKKyAgICAgICAgICAgICAgICBpdGVy
YXRvci0+aW50ZXJuYWxGaWVsZChKU0FycmF5SXRlcmF0b3I6OkZpZWxkOjpJbmRleCkuc2V0V2l0
aG91dFdyaXRlQmFycmllcihqc051bWJlcihpbmRleCArIDEpKTsKKyAgICAgICAgICAgICAgICBp
dGVyYXRvckNsb3NlKGdsb2JhbE9iamVjdCwgaXRlcmF0b3IpOworICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm47CisgICAgfQor
CiAgICAgSXRlcmF0aW9uUmVjb3JkIGl0ZXJhdGlvblJlY29yZCA9IGl0ZXJhdG9yRm9ySXRlcmFi
bGUoZ2xvYmFsT2JqZWN0LCBpdGVyYWJsZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgdm9pZCgpKTsKICAgICB3aGlsZSAodHJ1ZSkgewpAQCAtNzIsNyArOTQsNyBAQCB2b2lkIGZv
ckVhY2hJbkl0ZXJhYmxlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgaXRl
cmFibGUsIGNvbnN0IENhbAogICAgICAgICBjYWxsYmFjayh2bSwgZ2xvYmFsT2JqZWN0LCBuZXh0
VmFsdWUpOwogICAgICAgICBpZiAoVU5MSUtFTFkoc2NvcGUuZXhjZXB0aW9uKCkpKSB7CiAgICAg
ICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgICAgICAgICBpdGVyYXRvckNsb3NlKGdsb2Jh
bE9iamVjdCwgaXRlcmF0aW9uUmVjb3JkKTsKKyAgICAgICAgICAgIGl0ZXJhdG9yQ2xvc2UoZ2xv
YmFsT2JqZWN0LCBpdGVyYXRpb25SZWNvcmQuaXRlcmF0b3IpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAgICAgfQpAQCAtODQsNiArMTA2LDIzIEBAIHZvaWQgZm9yRWFjaEluSXRl
cmFibGUoSlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIGl0ZXJhYmxlLCBK
U1ZhbHVlCiAgICAgYXV0byYgdm0gPSBnZXRWTSgmZ2xvYmFsT2JqZWN0KTsKICAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKKyAgICBpZiAocHJlcGFyZUZvckZhc3RB
cnJheUl0ZXJhdGlvbih2bSwgJmdsb2JhbE9iamVjdCwgaXRlcmFibGUsIGl0ZXJhdG9yTWV0aG9k
KSA9PSBJdGVyYXRpb25Nb2RlOjpGYXN0QXJyYXkpIHsKKyAgICAgICAgYXV0byogYXJyYXkgPSBq
c0Nhc3Q8SlNBcnJheSo+KGl0ZXJhYmxlKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9
IDA7IGluZGV4IDwgYXJyYXktPmxlbmd0aCgpOyArK2luZGV4KSB7CisgICAgICAgICAgICBKU1Zh
bHVlIG5leHRWYWx1ZSA9IGFycmF5LT5nZXRJbmRleCgmZ2xvYmFsT2JqZWN0LCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oaW5kZXgpKTsKKyAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIHZvaWQoKSk7CisgICAgICAgICAgICBjYWxsYmFjayh2bSwgZ2xvYmFsT2JqZWN0LCBuZXh0
VmFsdWUpOworICAgICAgICAgICAgaWYgKFVOTElLRUxZKHNjb3BlLmV4Y2VwdGlvbigpKSkgewor
ICAgICAgICAgICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKKyAgICAgICAgICAgICAgICBKU0FycmF5
SXRlcmF0b3IqIGl0ZXJhdG9yID0gSlNBcnJheUl0ZXJhdG9yOjpjcmVhdGUodm0sIGdsb2JhbE9i
amVjdC5hcnJheUl0ZXJhdG9yU3RydWN0dXJlKCksIGFycmF5LCBJdGVyYXRpb25LaW5kOjpWYWx1
ZXMpOworICAgICAgICAgICAgICAgIGl0ZXJhdG9yLT5pbnRlcm5hbEZpZWxkKEpTQXJyYXlJdGVy
YXRvcjo6RmllbGQ6OkluZGV4KS5zZXRXaXRob3V0V3JpdGVCYXJyaWVyKGpzTnVtYmVyKGluZGV4
ICsgMSkpOworICAgICAgICAgICAgICAgIGl0ZXJhdG9yQ2xvc2UoJmdsb2JhbE9iamVjdCwgaXRl
cmF0b3IpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgYXV0byBpdGVyYXRpb25SZWNvcmQgPSBp
dGVyYXRvckZvckl0ZXJhYmxlKCZnbG9iYWxPYmplY3QsIGl0ZXJhYmxlLCBpdGVyYXRvck1ldGhv
ZCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKICAgICB3aGlsZSAo
dHJ1ZSkgewpAQCAtOTcsNyArMTM2LDcgQEAgdm9pZCBmb3JFYWNoSW5JdGVyYWJsZShKU0dsb2Jh
bE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogaXRlcmFibGUsIEpTVmFsdWUKICAgICAg
ICAgY2FsbGJhY2sodm0sIGdsb2JhbE9iamVjdCwgbmV4dFZhbHVlKTsKICAgICAgICAgaWYgKFVO
TElLRUxZKHNjb3BlLmV4Y2VwdGlvbigpKSkgewogICAgICAgICAgICAgc2NvcGUucmVsZWFzZSgp
OwotICAgICAgICAgICAgaXRlcmF0b3JDbG9zZSgmZ2xvYmFsT2JqZWN0LCBpdGVyYXRpb25SZWNv
cmQpOworICAgICAgICAgICAgaXRlcmF0b3JDbG9zZSgmZ2xvYmFsT2JqZWN0LCBpdGVyYXRpb25S
ZWNvcmQuaXRlcmF0b3IpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUl0ZXJhdG9y
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5SXRlcmF0b3IuaAppbmRl
eCAwZTg1YmRiMGQ1ODFiMmI4NGM1NTI5N2MzZTI3NzAzYWQ5MzQxNmIwLi4xZmNiY2Q1MzVkMTg3
ZmYxNDBjZDBlYjU1NDM4MWU4MzI3Y2U3YTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0FycmF5SXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0FycmF5SXRlcmF0b3IuaApAQCAtNjgsNyArNjgsNyBAQCBjbGFzcyBKU0Fy
cmF5SXRlcmF0b3IgZmluYWwgOiBwdWJsaWMgSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbDwzPiB7
CiAgICAgSXRlcmF0aW9uS2luZCBraW5kKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8SXRl
cmF0aW9uS2luZD4oaW50ZXJuYWxGaWVsZChGaWVsZDo6S2luZCkuZ2V0KCkuYXNVSW50MzJBc0Fu
eUludCgpKTsgfQogICAgIEpTT2JqZWN0KiBpdGVyYXRlZE9iamVjdCgpIGNvbnN0IHsgcmV0dXJu
IGpzQ2FzdDxKU09iamVjdCo+KGludGVybmFsRmllbGQoRmllbGQ6Okl0ZXJhdGVkT2JqZWN0KS5n
ZXQoKSk7IH0KIAotICAgIHN0YXRpYyBKU0FycmF5SXRlcmF0b3IqIGNyZWF0ZShWTSYsIFN0cnVj
dHVyZSosIEpTT2JqZWN0KiBpdGVyYXRlZE9iamVjdCwgSlNWYWx1ZSBraW5kKTsKKyAgICBKU19F
WFBPUlRfUFJJVkFURSBzdGF0aWMgSlNBcnJheUl0ZXJhdG9yKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1
cmUqLCBKU09iamVjdCogaXRlcmF0ZWRPYmplY3QsIEpTVmFsdWUga2luZCk7CiAgICAgc3RhdGlj
IEpTQXJyYXlJdGVyYXRvciogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpT
T2JqZWN0KiBpdGVyYXRlZE9iamVjdCwgSXRlcmF0aW9uS2luZCBraW5kKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIGNyZWF0ZSh2bSwgc3RydWN0dXJlLCBpdGVyYXRlZE9iamVjdCwganNOdW1iZXIo
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGtpbmQpKSk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5n
ZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDZkMzVkZTRhZDQ5YmRlMjExNGM3Zjc1OGQy
YzkxOWRhMGJkMTg1NDkuLjRkODI5Mjk4ODU1NWUwODVjOTJkYjdhYzU3MGFmZWEzMTc5ODcyYjYg
MTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTggQEAKKzIwMjEtMDItMDcgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxl
LmNvbT4KKworICAgICAgICBbSlNDXSBDKysgaXRlcmF0aW9uIHNob3VsZCBzdXBwb3J0IGZhc3Qg
aXRlcmF0b3IgcHJvdG9jb2wKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyMTUyNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogbWljcm9iZW5jaG1hcmtzL21hcC1jb25zdHJ1Y3Rvci5qczogQWRkZWQuCisg
ICAgICAgICh0ZXN0KToKKyAgICAgICAgKiBzdHJlc3MvbWFwLWNvbnN0cnVjdG9yLWhvbGUtdGhy
b3cuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoc2hvdWxkVGhyb3cp
OgorICAgICAgICAodmFsdWVzLl9fcHJvdG9fXy5yZXR1cm4pOgorICAgICAgICAoTWFwLnByb3Rv
dHlwZSk6CisKIDIwMjEtMDItMDYgIEFsZXhleSBTaHZheWthICA8c2h2YWlrYWxlc2hAZ21haWwu
Y29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIyNjQ1NzQpOiBVbmNoZWNrZWQgSlMgZXhjZXB0
aW9uIGluIHZhbGlkYXRlQW5kQXBwbHlQcm9wZXJ0eURlc2NyaXB0b3IoKQpkaWZmIC0tZ2l0IGEv
SlNUZXN0cy9taWNyb2JlbmNobWFya3MvbWFwLWNvbnN0cnVjdG9yLmpzIGIvSlNUZXN0cy9taWNy
b2JlbmNobWFya3MvbWFwLWNvbnN0cnVjdG9yLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE2YjIwYTZmZmUzMWE2
YzUxMzFhMDhhOTBiNDM0ZGJlYTAwYTUwZjYKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL21p
Y3JvYmVuY2htYXJrcy9tYXAtY29uc3RydWN0b3IuanMKQEAgLTAsMCArMSwzMSBAQAorZnVuY3Rp
b24gdGVzdChhcnJheSkKK3sKKyAgICByZXR1cm4gbmV3IE1hcChhcnJheSk7Cit9Citub0lubGlu
ZSh0ZXN0KTsKKwordmFyIGFycmF5ID0gWworICAgIFswLCAwXSwKKyAgICBbMSwgMF0sCisgICAg
WzIsIDBdLAorICAgIFszLCAwXSwKKyAgICBbNCwgMF0sCisgICAgWzUsIDBdLAorICAgIFs2LCAw
XSwKKyAgICBbNywgMF0sCisgICAgWzgsIDBdLAorICAgIFs5LCAwXSwKKyAgICBbMTAsIDBdLAor
ICAgIFsxMSwgMF0sCisgICAgWzEyLCAwXSwKKyAgICBbMTMsIDBdLAorICAgIFsxNCwgMF0sCisg
ICAgWzE1LCAwXSwKKyAgICBbMTYsIDBdLAorICAgIFsxNywgMF0sCisgICAgWzE4LCAwXSwKKyAg
ICBbMTksIDBdLAorXTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTQ7ICsraSkKKyAgICB0ZXN0
KGFycmF5KTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL21hcC1jb25zdHJ1Y3Rvci1ob2xl
LXRocm93LmpzIGIvSlNUZXN0cy9zdHJlc3MvbWFwLWNvbnN0cnVjdG9yLWhvbGUtdGhyb3cuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYmEzZjA3NmNjYjllYTkwMDNhMGFlODBjMmU1NjYxODMyMmJhM2VhOQotLS0g
L2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL21hcC1jb25zdHJ1Y3Rvci1ob2xlLXRocm93
LmpzCkBAIC0wLDAgKzEsMzggQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQp
IHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9y
KCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCitmdW5jdGlvbiBzaG91bGRUaHJvdyhmdW5j
LCBlcnJvck1lc3NhZ2UpIHsKKyAgICB2YXIgZXJyb3JUaHJvd24gPSBmYWxzZTsKKyAgICB2YXIg
ZXJyb3IgPSBudWxsOworICAgIHRyeSB7CisgICAgICAgIGZ1bmMoKTsKKyAgICB9IGNhdGNoIChl
KSB7CisgICAgICAgIGVycm9yVGhyb3duID0gdHJ1ZTsKKyAgICAgICAgZXJyb3IgPSBlOworICAg
IH0KKyAgICBpZiAoIWVycm9yVGhyb3duKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCB0
aHJvd24nKTsKKyAgICBpZiAoU3RyaW5nKGVycm9yKSAhPT0gZXJyb3JNZXNzYWdlKQorICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoYGJhZCBlcnJvcjogJHtTdHJpbmcoZXJyb3IpfWApOworfQorCit2
YXIgaXRlcmF0b3I7CitbXS52YWx1ZXMoKS5fX3Byb3RvX18ucmV0dXJuID0gZnVuY3Rpb24gKCkg
eworICAgIGl0ZXJhdG9yID0gdGhpczsKK307CisKK3ZhciBhcnJheSA9IFsKKyAgICBbMCwgMF0s
CisgICAgWzEsIDBdLAorICAgIFsyLCAwXSwKK107CitNYXAucHJvdG90eXBlLnNldCA9IGZ1bmN0
aW9uICgpIHsKKyAgICB0aHJvdyBuZXcgRXJyb3IoIm9rIik7Cit9Oworc2hvdWxkVGhyb3coKCkg
PT4geworICAgIHZhciBtYXAgPSBuZXcgTWFwKGFycmF5KTsKK30sIGBFcnJvcjogb2tgKTsKK3No
b3VsZEJlKGl0ZXJhdG9yICE9PSB1bmRlZmluZWQsIHRydWUpOworCg==
</data>
<flag name="review"
          id="437792"
          type_id="1"
          status="+"
          setter="ashvayka"
    />
          </attachment>
      

    </bug>

</bugzilla>