<?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>199474</bug_id>
          
          <creation_ts>2019-07-03 15:52:16 -0700</creation_ts>
          <short_desc>[WHLSL] Remove the phase resolveCallsInFunctions</short_desc>
          <delta_ts>2019-07-05 13:09:47 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebGPU</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="Robin Morisset">rmorisset</reporter>
          <assigned_to name="Robin Morisset">rmorisset</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1550060</commentid>
    <comment_count>0</comment_count>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2019-07-03 15:52:16 -0700</bug_when>
    <thetext>This pass only stores into each property access and call expression vectors of all the functions it might be calling, for use by the Checker afterwards.
But the checker is perfectly able to compute a pointer to these vectors by itself.
So by removing this pass, we gain the following:

- One less pass over the AST
- No need to copy these vectors (which can be large for heavily overloaded functions, of which there are quite a few in the stdlib)
- No need to have these vectors in the expressions, saving 24 bytes per CallExpression and 72 bytes per PropertyAccessExpression
- No need to allocate and then destroy these vectors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1550079</commentid>
    <comment_count>1</comment_count>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2019-07-03 16:31:34 -0700</bug_when>
    <thetext>Turns out this pass is also used for some other miscellaneous name resolving, so it cannot be removed altogether. But the vector copying and storing at least should be avoidable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1550096</commentid>
    <comment_count>2</comment_count>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2019-07-03 16:55:34 -0700</bug_when>
    <thetext>I was confused, this pass is truly not necessary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1550097</commentid>
    <comment_count>3</comment_count>
      <attachid>373438</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2019-07-03 16:57:17 -0700</bug_when>
    <thetext>Created attachment 373438
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1550098</commentid>
    <comment_count>4</comment_count>
      <attachid>373439</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2019-07-03 16:59:03 -0700</bug_when>
    <thetext>Created attachment 373439
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1550102</commentid>
    <comment_count>5</comment_count>
      <attachid>373439</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2019-07-03 17:14:10 -0700</bug_when>
    <thetext>Comment on attachment 373439
Patch

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

&gt; Source/WebCore/Modules/webgpu/WHLSL/WHLSLChecker.cpp:1028
&gt; +        getterFunction = resolveFunction(m_program, getterFunctions, getterArgumentTypes, getterName, propertyAccessExpression.origin(), m_intrinsics);

nit: if ((getterFunction = resolveFunction(...))</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1550105</commentid>
    <comment_count>6</comment_count>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2019-07-03 17:18:08 -0700</bug_when>
    <thetext>(In reply to Myles C. Maxfield from comment #5)
&gt; Comment on attachment 373439 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=373439&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/webgpu/WHLSL/WHLSLChecker.cpp:1028
&gt; &gt; +        getterFunction = resolveFunction(m_program, getterFunctions, getterArgumentTypes, getterName, propertyAccessExpression.origin(), m_intrinsics);
&gt; 
&gt; nit: if ((getterFunction = resolveFunction(...))

I tried that at first, but it no longer fit on one line on my screen, and was not really a readability improvement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1550138</commentid>
    <comment_count>7</comment_count>
      <attachid>373439</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-07-03 18:15:44 -0700</bug_when>
    <thetext>Comment on attachment 373439
Patch

Clearing flags on attachment: 373439

Committed r247127: &lt;https://trac.webkit.org/changeset/247127&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1550139</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-07-03 18:15:46 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1550142</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-07-03 18:18:21 -0700</bug_when>
    <thetext>&lt;rdar://problem/52622712&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1550253</commentid>
    <comment_count>10</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2019-07-04 11:53:44 -0700</bug_when>
    <thetext>Reverted r247127 for reason:

Broke the watchOS build.

Committed r247144: &lt;https://trac.webkit.org/changeset/247144&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1550452</commentid>
    <comment_count>11</comment_count>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2019-07-05 11:50:38 -0700</bug_when>
    <thetext>Found the problem: we replace in-place a PropertyAccessExpression by a CallExpression.
Since I&apos;ve shrunk PropertyAccessExpression, this is no longer safe on 32-bit platforms.

The good news is that there is no bare PropertyAccessExpression, all of them are either DotExpressions or IndexExpressions, both of which have an extra field that make them large enough to replace by a CallExpression in-place.
So I just have to add a downcast to the right subclass before the call to replaceWith&lt;CallExpression&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1550457</commentid>
    <comment_count>12</comment_count>
      <attachid>373519</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2019-07-05 12:00:24 -0700</bug_when>
    <thetext>Created attachment 373519
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1550458</commentid>
    <comment_count>13</comment_count>
      <attachid>373520</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2019-07-05 12:02:11 -0700</bug_when>
    <thetext>Created attachment 373520
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1550489</commentid>
    <comment_count>14</comment_count>
      <attachid>373520</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-07-05 13:09:45 -0700</bug_when>
    <thetext>Comment on attachment 373520
Patch

Clearing flags on attachment: 373520

Committed r247170: &lt;https://trac.webkit.org/changeset/247170&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1550490</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-07-05 13:09:47 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>373438</attachid>
            <date>2019-07-03 16:57:17 -0700</date>
            <delta_ts>2019-07-03 16:59:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-199474-20190703165717.patch</filename>
            <type>text/plain</type>
            <size>19460</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ3MTE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTUzMTQyNzhiMTY4M2Y4
NjIxNDQ0MWY1N2FlNzYwZGFmNjFkMzc4Zi4uYTEyN2JkNWJlYzI1YzM4MDExNDg4ZGM2MDQ0Yzkz
OGUyODlhZWI5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDE5LTA3LTAzICBSb2Jp
biBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+CisKKyAgICAgICAgW1dITFNMXSBSZW1v
dmUgdGhlIHBoYXNlIHJlc29sdmVDYWxsc0luRnVuY3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTk0NzQKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhc3Mgb25seSBzdG9yZXMgaW50byBl
YWNoIHByb3BlcnR5IGFjY2VzcyBhbmQgY2FsbCBleHByZXNzaW9uIHZlY3RvcnMgb2YgYWxsIHRo
ZSBmdW5jdGlvbnMgaXQgbWlnaHQgYmUgY2FsbGluZywgZm9yIHVzZSBieSB0aGUgQ2hlY2tlciBh
ZnRlcndhcmRzLgorICAgICAgICBCdXQgdGhlIGNoZWNrZXIgaXMgcGVyZmVjdGx5IGFibGUgdG8g
Y29tcHV0ZSBhIHBvaW50ZXIgdG8gdGhlc2UgdmVjdG9ycyBieSBpdHNlbGYuCisgICAgICAgIFNv
IGJ5IHJlbW92aW5nIHRoaXMgcGFzcywgd2UgZ2FpbiB0aGUgZm9sbG93aW5nOgorICAgICAgICAt
IE9uZSBsZXNzIHBhc3Mgb3ZlciB0aGUgQVNUCisgICAgICAgIC0gTm8gbmVlZCB0byBjb3B5IHRo
ZXNlIHZlY3RvcnMgKHdoaWNoIGNhbiBiZSBsYXJnZSBmb3IgaGVhdmlseSBvdmVybG9hZGVkIGZ1
bmN0aW9ucywgb2Ygd2hpY2ggdGhlcmUgYXJlIHF1aXRlIGEgZmV3IGluIHRoZSBzdGRsaWIpCisg
ICAgICAgIC0gTm8gbmVlZCB0byBoYXZlIHRoZXNlIHZlY3RvcnMgaW4gdGhlIGV4cHJlc3Npb25z
LCBzYXZpbmcgMjQgYnl0ZXMgcGVyIENhbGxFeHByZXNzaW9uIGFuZCA3MiBieXRlcyBwZXIgUHJv
cGVydHlBY2Nlc3NFeHByZXNzaW9uCisgICAgICAgIC0gTm8gbmVlZCB0byBhbGxvY2F0ZSBhbmQg
dGhlbiBkZXN0cm95IHRoZXNlIHZlY3RvcnMuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIGFzIHRo
ZXJlIGlzIG5vIGludGVuZGVkIGZ1bmN0aW9uYWwgY2hhbmdlLgorCisgICAgICAgICogTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQ2FsbEV4cHJlc3Npb24uaDoKKyAgICAgICAgKFdlYkNv
cmU6OldITFNMOjpBU1Q6OkNhbGxFeHByZXNzaW9uOjpjYXN0UmV0dXJuVHlwZSk6CisgICAgICAg
ICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9u
Lmg6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xBdXRvSW5pdGlhbGl6ZVZh
cmlhYmxlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QXV0b0luaXRpYWxpemU6OnZp
c2l0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNrZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OnJlc29sdmVGdW5jdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpXSExTTDo6Q2hlY2tlcjo6ZmluaXNoVmlzaXRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6
V0hMU0w6OkNoZWNrZXI6OnZpc2l0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9X
SExTTE5hbWVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6TmFtZVJlc29s
dmVyOjpOYW1lUmVzb2x2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6Ok5hbWVSZXNvbHZl
cjo6dmlzaXQpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMTmFtZVJlc29s
dmVyLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQcmVwYXJlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpwcmVwYXJlU2hhcmVkKToKKwogMjAxOS0wNy0wMiAg
TXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFtXSExT
TF0gU3RhbmRhcmQgbGlicmFyeSBpcyB0b28gYmlnIHRvIGRpcmVjdGx5IGluY2x1ZGUgaW4gV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMQ2FsbEV4cHJlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTENhbGxFeHByZXNzaW9uLmgKaW5kZXggMTdiOTRjZGNhMDcxY2U5YTA0Mjk3
MGRmNzk4NjM5OTQ5NDg1NTc1NS4uMjA2YjAyYTI2NDY5NDUxN2ZlYTEyY2NmNjc2MDdiMmJiNzJh
ZWVlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMQ2FsbEV4cHJlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xDYWxsRXhwcmVzc2lvbi5oCkBAIC02NywxMyArNjcsNiBAQCBwdWJs
aWM6CiAKICAgICBib29sIGlzQ2FzdCgpIHsgcmV0dXJuIG1fY2FzdFJldHVyblR5cGU7IH0KICAg
ICBOYW1lZFR5cGUqIGNhc3RSZXR1cm5UeXBlKCkgeyByZXR1cm4gbV9jYXN0UmV0dXJuVHlwZTsg
fQotICAgIGJvb2wgaGFzT3ZlcmxvYWRzKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9v
bD4obV9vdmVybG9hZHMpOyB9Ci0gICAgT3B0aW9uYWw8VmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dy
YXBwZXI8RnVuY3Rpb25EZWNsYXJhdGlvbj4sIDE+PiYgb3ZlcmxvYWRzKCkgeyByZXR1cm4gbV9v
dmVybG9hZHM7IH0KLSAgICB2b2lkIHNldE92ZXJsb2Fkcyhjb25zdCBWZWN0b3I8c3RkOjpyZWZl
cmVuY2Vfd3JhcHBlcjxGdW5jdGlvbkRlY2xhcmF0aW9uPiwgMT4mIG92ZXJsb2FkcykKLSAgICB7
Ci0gICAgICAgIEFTU0VSVCghaGFzT3ZlcmxvYWRzKCkpOwotICAgICAgICBtX292ZXJsb2FkcyA9
IG92ZXJsb2FkczsKLSAgICB9CiAKICAgICBGdW5jdGlvbkRlY2xhcmF0aW9uJiBmdW5jdGlvbigp
CiAgICAgewpAQCAtOTAsNyArODMsNiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFN0cmluZyBt
X25hbWU7CiAgICAgVmVjdG9yPFVuaXF1ZVJlZjxFeHByZXNzaW9uPj4gbV9hcmd1bWVudHM7Ci0g
ICAgT3B0aW9uYWw8VmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8RnVuY3Rpb25EZWNsYXJh
dGlvbj4sIDE+PiBtX292ZXJsb2FkczsKICAgICBGdW5jdGlvbkRlY2xhcmF0aW9uKiBtX2Z1bmN0
aW9uIHsgbnVsbHB0ciB9OwogICAgIE5hbWVkVHlwZSogbV9jYXN0UmV0dXJuVHlwZSB7IG51bGxw
dHIgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbi5oCmlu
ZGV4IGJiMGMzMDEyZWViMjAzOTAzYTQzMDAyMDMyOGM4Yjk0ODI5YjY4NGQuLjM0ZDEyYTFlOWRk
OWI2YzM2MjExZDY2MmFmNGI5NzFiOWI3N2U5YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFByb3Bl
cnR5QWNjZXNzRXhwcmVzc2lvbi5oCkBAIC01NywyNyArNTcsMTEgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgU3RyaW5nIHNldHRlckZ1bmN0aW9uTmFtZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFs
IFN0cmluZyBhbmRlckZ1bmN0aW9uTmFtZSgpIGNvbnN0ID0gMDsKIAotICAgIFZlY3RvcjxzdGQ6
OnJlZmVyZW5jZV93cmFwcGVyPEZ1bmN0aW9uRGVjbGFyYXRpb24+LCAxPiYgcG9zc2libGVHZXR0
ZXJPdmVybG9hZHMoKSB7IHJldHVybiBtX3Bvc3NpYmxlR2V0dGVyT3ZlcmxvYWRzOyB9Ci0gICAg
VmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8RnVuY3Rpb25EZWNsYXJhdGlvbj4sIDE+JiBw
b3NzaWJsZVNldHRlck92ZXJsb2FkcygpIHsgcmV0dXJuIG1fcG9zc2libGVTZXR0ZXJPdmVybG9h
ZHM7IH0KLSAgICBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxGdW5jdGlvbkRlY2xhcmF0
aW9uPiwgMT4mIHBvc3NpYmxlQW5kZXJPdmVybG9hZHMoKSB7IHJldHVybiBtX3Bvc3NpYmxlQW5k
ZXJPdmVybG9hZHM7IH0KICAgICBGdW5jdGlvbkRlY2xhcmF0aW9uKiBnZXR0ZXJGdW5jdGlvbigp
IHsgcmV0dXJuIG1fZ2V0dGVyRnVuY3Rpb247IH0KICAgICBGdW5jdGlvbkRlY2xhcmF0aW9uKiBh
bmRlckZ1bmN0aW9uKCkgeyByZXR1cm4gbV9hbmRlckZ1bmN0aW9uOyB9CiAgICAgRnVuY3Rpb25E
ZWNsYXJhdGlvbiogdGhyZWFkQW5kZXJGdW5jdGlvbigpIHsgcmV0dXJuIG1fdGhyZWFkQW5kZXJG
dW5jdGlvbjsgfQogICAgIEZ1bmN0aW9uRGVjbGFyYXRpb24qIHNldHRlckZ1bmN0aW9uKCkgeyBy
ZXR1cm4gbV9zZXR0ZXJGdW5jdGlvbjsgfQogCi0gICAgdm9pZCBzZXRQb3NzaWJsZUdldHRlck92
ZXJsb2Fkcyhjb25zdCBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxGdW5jdGlvbkRlY2xh
cmF0aW9uPiwgMT4mIG92ZXJsb2FkcykKLSAgICB7Ci0gICAgICAgIG1fcG9zc2libGVHZXR0ZXJP
dmVybG9hZHMgPSBvdmVybG9hZHM7Ci0gICAgfQotICAgIHZvaWQgc2V0UG9zc2libGVBbmRlck92
ZXJsb2Fkcyhjb25zdCBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxGdW5jdGlvbkRlY2xh
cmF0aW9uPiwgMT4mIG92ZXJsb2FkcykKLSAgICB7Ci0gICAgICAgIG1fcG9zc2libGVBbmRlck92
ZXJsb2FkcyA9IG92ZXJsb2FkczsKLSAgICB9Ci0gICAgdm9pZCBzZXRQb3NzaWJsZVNldHRlck92
ZXJsb2Fkcyhjb25zdCBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxGdW5jdGlvbkRlY2xh
cmF0aW9uPiwgMT4mIG92ZXJsb2FkcykKLSAgICB7Ci0gICAgICAgIG1fcG9zc2libGVTZXR0ZXJP
dmVybG9hZHMgPSBvdmVybG9hZHM7Ci0gICAgfQotCiAgICAgdm9pZCBzZXRHZXR0ZXJGdW5jdGlv
bihGdW5jdGlvbkRlY2xhcmF0aW9uKiBnZXR0ZXJGdW5jdGlvbikKICAgICB7CiAgICAgICAgIG1f
Z2V0dGVyRnVuY3Rpb24gPSBnZXR0ZXJGdW5jdGlvbjsKQEAgLTEwNCw5ICs4OCw2IEBAIHB1Ymxp
YzoKIAogcHJpdmF0ZToKICAgICBVbmlxdWVSZWY8RXhwcmVzc2lvbj4gbV9iYXNlOwotICAgIFZl
Y3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPEZ1bmN0aW9uRGVjbGFyYXRpb24+LCAxPiBtX3Bv
c3NpYmxlR2V0dGVyT3ZlcmxvYWRzOwotICAgIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVy
PEZ1bmN0aW9uRGVjbGFyYXRpb24+LCAxPiBtX3Bvc3NpYmxlU2V0dGVyT3ZlcmxvYWRzOwotICAg
IFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPEZ1bmN0aW9uRGVjbGFyYXRpb24+LCAxPiBt
X3Bvc3NpYmxlQW5kZXJPdmVybG9hZHM7CiAgICAgRnVuY3Rpb25EZWNsYXJhdGlvbiogbV9nZXR0
ZXJGdW5jdGlvbiB7IG51bGxwdHIgfTsKICAgICBGdW5jdGlvbkRlY2xhcmF0aW9uKiBtX2FuZGVy
RnVuY3Rpb24geyBudWxscHRyIH07CiAgICAgRnVuY3Rpb25EZWNsYXJhdGlvbiogbV90aHJlYWRB
bmRlckZ1bmN0aW9uIHsgbnVsbHB0ciB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvV0hMU0xBdXRvSW5pdGlhbGl6ZVZhcmlhYmxlcy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEF1dG9Jbml0aWFsaXplVmFyaWFi
bGVzLmNwcAppbmRleCBkMTFiOTA3YWYzZGQzZGNmNjk5ODQ0ZGIzYTI3YmJmZmM3OWM0NDgzLi44
MTY0NzA5MzU2N2VjZWY3OGNiNTcyNTRhOTliMTY3NTJiZGEzOTg2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEF1dG9Jbml0aWFsaXplVmFyaWFi
bGVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEF1
dG9Jbml0aWFsaXplVmFyaWFibGVzLmNwcApAQCAtNzIsOSArNzIsOCBAQCBwcml2YXRlOgogICAg
ICAgICBhdXRvIGNhbGxFeHByZXNzaW9uID0gc3RkOjptYWtlX3VuaXF1ZTxBU1Q6OkNhbGxFeHBy
ZXNzaW9uPih2YXJpYWJsZURlY2xhcmF0aW9uLm9yaWdpbigpLCBXVEZNb3ZlKGZ1bmN0aW9uTmFt
ZSksIFZlY3RvcjxVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPj4oKSk7CiAgICAgICAgIGNhbGxF
eHByZXNzaW9uLT5zZXRUeXBlKHR5cGUtPmNsb25lKCkpOwogICAgICAgICBjYWxsRXhwcmVzc2lv
bi0+c2V0VHlwZUFubm90YXRpb24oQVNUOjpSaWdodFZhbHVlKCkpOwotICAgICAgICBjYWxsRXhw
cmVzc2lvbi0+c2V0T3ZlcmxvYWRzKG1fY2FzdEZ1bmN0aW9ucyk7CiAgICAgICAgIFZlY3Rvcjxz
dGQ6OnJlZmVyZW5jZV93cmFwcGVyPFJlc29sdmluZ1R5cGU+PiBhcmd1bWVudFR5cGVzOwotICAg
ICAgICBhdXRvKiBmdW5jdGlvbiA9IHJlc29sdmVGdW5jdGlvbk92ZXJsb2FkKCpjYWxsRXhwcmVz
c2lvbi0+b3ZlcmxvYWRzKCksIGFyZ3VtZW50VHlwZXMsIHR5cGUpOworICAgICAgICBhdXRvKiBm
dW5jdGlvbiA9IHJlc29sdmVGdW5jdGlvbk92ZXJsb2FkKG1fY2FzdEZ1bmN0aW9ucywgYXJndW1l
bnRUeXBlcywgdHlwZSk7CiAgICAgICAgIGlmICghZnVuY3Rpb24pIHsKICAgICAgICAgICAgIHNl
dEVycm9yKCk7CiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDaGVja2VyLmNwcAppbmRleCA2Mzk4NWQ5Mjk5MThl
NWUyZjc3OThjZDkxYTc5ZDc2YzM3YmM2ZDAyLi4wZTUwODY5YTNjZjdjZjZiY2YwODg0OTE3YWZm
YjYxNTQzYjgzZTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9XSExTTENoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML1dITFNMQ2hlY2tlci5jcHAKQEAgLTQ2LDYgKzQ2LDcgQEAKICNpbmNsdWRlICJXSExT
TExvZ2ljYWxOb3RFeHByZXNzaW9uLmgiCiAjaW5jbHVkZSAiV0hMU0xNYWtlQXJyYXlSZWZlcmVu
Y2VFeHByZXNzaW9uLmgiCiAjaW5jbHVkZSAiV0hMU0xNYWtlUG9pbnRlckV4cHJlc3Npb24uaCIK
KyNpbmNsdWRlICJXSExTTE5hbWVDb250ZXh0LmgiCiAjaW5jbHVkZSAiV0hMU0xQb2ludGVyVHlw
ZS5oIgogI2luY2x1ZGUgIldITFNMUHJvZ3JhbS5oIgogI2luY2x1ZGUgIldITFNMUmVhZE1vZGlm
eVdyaXRlRXhwcmVzc2lvbi5oIgpAQCAtMjE2LDEwICsyMTcsMTIgQEAgc3RhdGljIE9wdGlvbmFs
PEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbj4gcmVzb2x2ZUJ5SW5zdGFudGlhdGlvbihj
b25zdCBTdHIKICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogfQogCi1zdGF0aWMgQVNUOjpGdW5j
dGlvbkRlY2xhcmF0aW9uKiByZXNvbHZlRnVuY3Rpb24oUHJvZ3JhbSYgcHJvZ3JhbSwgVmVjdG9y
PHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uPiwgMT4mIHBv
c3NpYmxlT3ZlcmxvYWRzLCBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxSZXNvbHZpbmdU
eXBlPj4mIHR5cGVzLCBjb25zdCBTdHJpbmcmIG5hbWUsIExleGVyOjpUb2tlbiBvcmlnaW4sIGNv
bnN0IEludHJpbnNpY3MmIGludHJpbnNpY3MsIEFTVDo6TmFtZWRUeXBlKiBjYXN0UmV0dXJuVHlw
ZSA9IG51bGxwdHIpCitzdGF0aWMgQVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uKiByZXNvbHZlRnVu
Y3Rpb24oUHJvZ3JhbSYgcHJvZ3JhbSwgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8QVNU
OjpGdW5jdGlvbkRlY2xhcmF0aW9uPiwgMT4qIHBvc3NpYmxlT3ZlcmxvYWRzLCBWZWN0b3I8c3Rk
OjpyZWZlcmVuY2Vfd3JhcHBlcjxSZXNvbHZpbmdUeXBlPj4mIHR5cGVzLCBjb25zdCBTdHJpbmcm
IG5hbWUsIExleGVyOjpUb2tlbiBvcmlnaW4sIGNvbnN0IEludHJpbnNpY3MmIGludHJpbnNpY3Ms
IEFTVDo6TmFtZWRUeXBlKiBjYXN0UmV0dXJuVHlwZSA9IG51bGxwdHIpCiB7Ci0gICAgaWYgKEFT
VDo6RnVuY3Rpb25EZWNsYXJhdGlvbiogZnVuY3Rpb24gPSByZXNvbHZlRnVuY3Rpb25PdmVybG9h
ZChwb3NzaWJsZU92ZXJsb2FkcywgdHlwZXMsIGNhc3RSZXR1cm5UeXBlKSkKLSAgICAgICAgcmV0
dXJuIGZ1bmN0aW9uOworICAgIGlmIChwb3NzaWJsZU92ZXJsb2FkcykgeworICAgICAgICBpZiAo
QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uKiBmdW5jdGlvbiA9IHJlc29sdmVGdW5jdGlvbk92ZXJs
b2FkKCpwb3NzaWJsZU92ZXJsb2FkcywgdHlwZXMsIGNhc3RSZXR1cm5UeXBlKSkKKyAgICAgICAg
ICAgIHJldHVybiBmdW5jdGlvbjsKKyAgICB9CiAKICAgICBpZiAoYXV0byBuZXdGdW5jdGlvbiA9
IHJlc29sdmVCeUluc3RhbnRpYXRpb24obmFtZSwgb3JpZ2luLCB0eXBlcywgaW50cmluc2ljcykp
IHsKICAgICAgICAgcHJvZ3JhbS5hcHBlbmQoV1RGTW92ZSgqbmV3RnVuY3Rpb24pKTsKQEAgLTEw
MjAsNyArMTAyMywxMCBAQCB2b2lkIENoZWNrZXI6OmZpbmlzaFZpc2l0aW5nKEFTVDo6UHJvcGVy
dHlBY2Nlc3NFeHByZXNzaW9uJiBwcm9wZXJ0eUFjY2Vzc0V4cHJlcwogICAgICAgICBWZWN0b3I8
c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxSZXNvbHZpbmdUeXBlPj4gZ2V0dGVyQXJndW1lbnRUeXBl
cyB7IGJhc2VJbmZvLT5yZXNvbHZpbmdUeXBlIH07CiAgICAgICAgIGlmIChhZGRpdGlvbmFsQXJn
dW1lbnRUeXBlKQogICAgICAgICAgICAgZ2V0dGVyQXJndW1lbnRUeXBlcy5hcHBlbmQoKmFkZGl0
aW9uYWxBcmd1bWVudFR5cGUpOwotICAgICAgICBpZiAoKGdldHRlckZ1bmN0aW9uID0gcmVzb2x2
ZUZ1bmN0aW9uKG1fcHJvZ3JhbSwgcHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uLnBvc3NpYmxlR2V0
dGVyT3ZlcmxvYWRzKCksIGdldHRlckFyZ3VtZW50VHlwZXMsIHByb3BlcnR5QWNjZXNzRXhwcmVz
c2lvbi5nZXR0ZXJGdW5jdGlvbk5hbWUoKSwgcHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uLm9yaWdp
bigpLCBtX2ludHJpbnNpY3MpKSkKKyAgICAgICAgYXV0byBnZXR0ZXJOYW1lID0gcHJvcGVydHlB
Y2Nlc3NFeHByZXNzaW9uLmdldHRlckZ1bmN0aW9uTmFtZSgpOworICAgICAgICBhdXRvKiBnZXR0
ZXJGdW5jdGlvbnMgPSBtX3Byb2dyYW0ubmFtZUNvbnRleHQoKS5nZXRGdW5jdGlvbnMoZ2V0dGVy
TmFtZSk7CisgICAgICAgIGdldHRlckZ1bmN0aW9uID0gcmVzb2x2ZUZ1bmN0aW9uKG1fcHJvZ3Jh
bSwgZ2V0dGVyRnVuY3Rpb25zLCBnZXR0ZXJBcmd1bWVudFR5cGVzLCBnZXR0ZXJOYW1lLCBwcm9w
ZXJ0eUFjY2Vzc0V4cHJlc3Npb24ub3JpZ2luKCksIG1faW50cmluc2ljcyk7CisgICAgICAgIGlm
IChnZXR0ZXJGdW5jdGlvbikKICAgICAgICAgICAgIGdldHRlclJldHVyblR5cGUgPSAmZ2V0dGVy
RnVuY3Rpb24tPnR5cGUoKTsKICAgICB9CiAKQEAgLTEwMzMsNyArMTAzOSwxMCBAQCB2b2lkIENo
ZWNrZXI6OmZpbmlzaFZpc2l0aW5nKEFTVDo6UHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uJiBwcm9w
ZXJ0eUFjY2Vzc0V4cHJlcwogICAgICAgICAgICAgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBw
ZXI8UmVzb2x2aW5nVHlwZT4+IGFuZGVyQXJndW1lbnRUeXBlcyB7IGFyZ3VtZW50VHlwZSB9Owog
ICAgICAgICAgICAgaWYgKGFkZGl0aW9uYWxBcmd1bWVudFR5cGUpCiAgICAgICAgICAgICAgICAg
YW5kZXJBcmd1bWVudFR5cGVzLmFwcGVuZCgqYWRkaXRpb25hbEFyZ3VtZW50VHlwZSk7Ci0gICAg
ICAgICAgICBpZiAoKGFuZGVyRnVuY3Rpb24gPSByZXNvbHZlRnVuY3Rpb24obV9wcm9ncmFtLCBw
cm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24ucG9zc2libGVBbmRlck92ZXJsb2FkcygpLCBhbmRlckFy
Z3VtZW50VHlwZXMsIHByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbi5hbmRlckZ1bmN0aW9uTmFtZSgp
LCBwcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24ub3JpZ2luKCksIG1faW50cmluc2ljcykpKQorICAg
ICAgICAgICAgYXV0byBhbmRlck5hbWUgPSBwcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24uYW5kZXJG
dW5jdGlvbk5hbWUoKTsKKyAgICAgICAgICAgIGF1dG8qIGFuZGVyRnVuY3Rpb25zID0gbV9wcm9n
cmFtLm5hbWVDb250ZXh0KCkuZ2V0RnVuY3Rpb25zKGFuZGVyTmFtZSk7CisgICAgICAgICAgICBh
bmRlckZ1bmN0aW9uID0gcmVzb2x2ZUZ1bmN0aW9uKG1fcHJvZ3JhbSwgYW5kZXJGdW5jdGlvbnMs
IGFuZGVyQXJndW1lbnRUeXBlcywgYW5kZXJOYW1lLCBwcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24u
b3JpZ2luKCksIG1faW50cmluc2ljcyk7CisgICAgICAgICAgICBpZiAoYW5kZXJGdW5jdGlvbikK
ICAgICAgICAgICAgICAgICBhbmRlclJldHVyblR5cGUgPSAmZG93bmNhc3Q8QVNUOjpQb2ludGVy
VHlwZT4oYW5kZXJGdW5jdGlvbi0+dHlwZSgpKS5lbGVtZW50VHlwZSgpOyAvLyBGSVhNRTogaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODE2NCBFbmZvcmNlIHRoZSBy
ZXR1cm4gb2YgYW5kZXJzIHdpbGwgYWx3YXlzIGJlIGEgcG9pbnRlcgogICAgICAgICB9CiAgICAg
fQpAQCAtMTA0NSw3ICsxMDU0LDEwIEBAIHZvaWQgQ2hlY2tlcjo6ZmluaXNoVmlzaXRpbmcoQVNU
OjpQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24mIHByb3BlcnR5QWNjZXNzRXhwcmVzCiAgICAgICAg
IFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFJlc29sdmluZ1R5cGU+PiB0aHJlYWRBbmRl
ckFyZ3VtZW50VHlwZXMgeyBhcmd1bWVudFR5cGUgfTsKICAgICAgICAgaWYgKGFkZGl0aW9uYWxB
cmd1bWVudFR5cGUpCiAgICAgICAgICAgICB0aHJlYWRBbmRlckFyZ3VtZW50VHlwZXMuYXBwZW5k
KCphZGRpdGlvbmFsQXJndW1lbnRUeXBlKTsKLSAgICAgICAgaWYgKCh0aHJlYWRBbmRlckZ1bmN0
aW9uID0gcmVzb2x2ZUZ1bmN0aW9uKG1fcHJvZ3JhbSwgcHJvcGVydHlBY2Nlc3NFeHByZXNzaW9u
LnBvc3NpYmxlQW5kZXJPdmVybG9hZHMoKSwgdGhyZWFkQW5kZXJBcmd1bWVudFR5cGVzLCBwcm9w
ZXJ0eUFjY2Vzc0V4cHJlc3Npb24uYW5kZXJGdW5jdGlvbk5hbWUoKSwgcHJvcGVydHlBY2Nlc3NF
eHByZXNzaW9uLm9yaWdpbigpLCBtX2ludHJpbnNpY3MpKSkKKyAgICAgICAgYXV0byBhbmRlck5h
bWUgPSBwcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24uYW5kZXJGdW5jdGlvbk5hbWUoKTsKKyAgICAg
ICAgYXV0byogYW5kZXJGdW5jdGlvbnMgPSBtX3Byb2dyYW0ubmFtZUNvbnRleHQoKS5nZXRGdW5j
dGlvbnMoYW5kZXJOYW1lKTsKKyAgICAgICAgdGhyZWFkQW5kZXJGdW5jdGlvbiA9IHJlc29sdmVG
dW5jdGlvbihtX3Byb2dyYW0sIGFuZGVyRnVuY3Rpb25zLCB0aHJlYWRBbmRlckFyZ3VtZW50VHlw
ZXMsIGFuZGVyTmFtZSwgcHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uLm9yaWdpbigpLCBtX2ludHJp
bnNpY3MpOworICAgICAgICBpZiAodGhyZWFkQW5kZXJGdW5jdGlvbikKICAgICAgICAgICAgIHRo
cmVhZEFuZGVyUmV0dXJuVHlwZSA9ICZkb3duY2FzdDxBU1Q6OlBvaW50ZXJUeXBlPih0aHJlYWRB
bmRlckZ1bmN0aW9uLT50eXBlKCkpLmVsZW1lbnRUeXBlKCk7IC8vIEZJWE1FOiBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4MTY0IEVuZm9yY2UgdGhlIHJldHVybiBv
ZiBhbmRlcnMgd2lsbCBhbHdheXMgYmUgYSBwb2ludGVyCiAgICAgfQogCkBAIC0xMDg5LDcgKzEx
MDEsOSBAQCB2b2lkIENoZWNrZXI6OmZpbmlzaFZpc2l0aW5nKEFTVDo6UHJvcGVydHlBY2Nlc3NF
eHByZXNzaW9uJiBwcm9wZXJ0eUFjY2Vzc0V4cHJlcwogICAgICAgICBpZiAoYWRkaXRpb25hbEFy
Z3VtZW50VHlwZSkKICAgICAgICAgICAgIHNldHRlckFyZ3VtZW50VHlwZXMuYXBwZW5kKCphZGRp
dGlvbmFsQXJndW1lbnRUeXBlKTsKICAgICAgICAgc2V0dGVyQXJndW1lbnRUeXBlcy5hcHBlbmQo
ZmllbGRSZXNvbHZpbmdUeXBlKTsKLSAgICAgICAgc2V0dGVyRnVuY3Rpb24gPSByZXNvbHZlRnVu
Y3Rpb24obV9wcm9ncmFtLCBwcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24ucG9zc2libGVTZXR0ZXJP
dmVybG9hZHMoKSwgc2V0dGVyQXJndW1lbnRUeXBlcywgcHJvcGVydHlBY2Nlc3NFeHByZXNzaW9u
LnNldHRlckZ1bmN0aW9uTmFtZSgpLCBwcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24ub3JpZ2luKCks
IG1faW50cmluc2ljcyk7CisgICAgICAgIGF1dG8gc2V0dGVyTmFtZSA9IHByb3BlcnR5QWNjZXNz
RXhwcmVzc2lvbi5zZXR0ZXJGdW5jdGlvbk5hbWUoKTsKKyAgICAgICAgYXV0byogc2V0dGVyRnVu
Y3Rpb25zID0gbV9wcm9ncmFtLm5hbWVDb250ZXh0KCkuZ2V0RnVuY3Rpb25zKHNldHRlck5hbWUp
OworICAgICAgICBzZXR0ZXJGdW5jdGlvbiA9IHJlc29sdmVGdW5jdGlvbihtX3Byb2dyYW0sIHNl
dHRlckZ1bmN0aW9ucywgc2V0dGVyQXJndW1lbnRUeXBlcywgc2V0dGVyTmFtZSwgcHJvcGVydHlB
Y2Nlc3NFeHByZXNzaW9uLm9yaWdpbigpLCBtX2ludHJpbnNpY3MpOwogICAgICAgICBpZiAoc2V0
dGVyRnVuY3Rpb24pCiAgICAgICAgICAgICBzZXR0ZXJSZXR1cm5UeXBlID0gJnNldHRlckZ1bmN0
aW9uLT50eXBlKCk7CiAgICAgfQpAQCAtMTQ2OSw4ICsxNDgzLDIyIEBAIHZvaWQgQ2hlY2tlcjo6
dmlzaXQoQVNUOjpDYWxsRXhwcmVzc2lvbiYgY2FsbEV4cHJlc3Npb24pCiAgICAgLy8gRG9uJ3Qg
cmVjdXJzZSBvbiB0aGUgY2FzdFJldHVyblR5cGUsIGJlY2F1c2UgaXQncyBndWFyYW50ZWVkIHRv
IGJlIGEgTmFtZWRUeXBlLCB3aGljaCB3aWxsIGdldCB2aXNpdGVkIGxhdGVyLgogICAgIC8vIFdl
IGRvbid0IHdhbnQgdG8gcmVjdXJzZSB0byB0aGUgc2FtZSBub2RlIHR3aWNlLgogCi0gICAgQVNT
RVJUKGNhbGxFeHByZXNzaW9uLmhhc092ZXJsb2FkcygpKTsKLSAgICBhdXRvKiBmdW5jdGlvbiA9
IHJlc29sdmVGdW5jdGlvbihtX3Byb2dyYW0sICpjYWxsRXhwcmVzc2lvbi5vdmVybG9hZHMoKSwg
dHlwZXMsIGNhbGxFeHByZXNzaW9uLm5hbWUoKSwgY2FsbEV4cHJlc3Npb24ub3JpZ2luKCksIG1f
aW50cmluc2ljcywgY2FsbEV4cHJlc3Npb24uY2FzdFJldHVyblR5cGUoKSk7CisgICAgTmFtZUNv
bnRleHQmIG5hbWVDb250ZXh0ID0gbV9wcm9ncmFtLm5hbWVDb250ZXh0KCk7CisgICAgYXV0byog
ZnVuY3Rpb25zID0gbmFtZUNvbnRleHQuZ2V0RnVuY3Rpb25zKGNhbGxFeHByZXNzaW9uLm5hbWUo
KSk7CisgICAgaWYgKCFmdW5jdGlvbnMpIHsKKyAgICAgICAgaWYgKGF1dG8qIHR5cGVzID0gbmFt
ZUNvbnRleHQuZ2V0VHlwZXMoY2FsbEV4cHJlc3Npb24ubmFtZSgpKSkgeworICAgICAgICAgICAg
aWYgKHR5cGVzLT5zaXplKCkgPT0gMSkgeworICAgICAgICAgICAgICAgIGlmICgoZnVuY3Rpb25z
ID0gbmFtZUNvbnRleHQuZ2V0RnVuY3Rpb25zKCJvcGVyYXRvciBjYXN0Il9zdHIpKSkKKyAgICAg
ICAgICAgICAgICAgICAgY2FsbEV4cHJlc3Npb24uc2V0Q2FzdERhdGEoKCp0eXBlcylbMF0uZ2V0
KCkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIGlmICghZnVuY3Rpb25z
KSB7CisgICAgICAgIHNldEVycm9yKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBh
dXRvKiBmdW5jdGlvbiA9IHJlc29sdmVGdW5jdGlvbihtX3Byb2dyYW0sIGZ1bmN0aW9ucywgdHlw
ZXMsIGNhbGxFeHByZXNzaW9uLm5hbWUoKSwgY2FsbEV4cHJlc3Npb24ub3JpZ2luKCksIG1faW50
cmluc2ljcywgY2FsbEV4cHJlc3Npb24uY2FzdFJldHVyblR5cGUoKSk7CiAgICAgaWYgKCFmdW5j
dGlvbikgewogICAgICAgICBzZXRFcnJvcigpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTE5hbWVSZXNvbHZlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTE5hbWVSZXNvbHZl
ci5jcHAKaW5kZXggMDcyZjVjOTQ2NjRiNDNkZWM4OWRmMmJlOGRmZGNkMmYyYzcyZjFmZi4uMmMz
YTJkNzQyZTgyNzdkNWUzYjJiZmNmYzdhYjJhZDcwNDM1MzQyZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xOYW1lUmVzb2x2ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMTmFtZVJlc29sdmVyLmNw
cApAQCAtNjEsNyArNjEsNiBAQCBOYW1lUmVzb2x2ZXI6Ok5hbWVSZXNvbHZlcihOYW1lUmVzb2x2
ZXImIHBhcmVudFJlc29sdmVyLCBOYW1lQ29udGV4dCYgbmFtZUNvbnRleAogICAgIDogbV9uYW1l
Q29udGV4dChuYW1lQ29udGV4dCkKICAgICAsIG1fcGFyZW50TmFtZVJlc29sdmVyKCZwYXJlbnRS
ZXNvbHZlcikKIHsKLSAgICBtX2lzUmVzb2x2aW5nQ2FsbHMgPSBwYXJlbnRSZXNvbHZlci5tX2lz
UmVzb2x2aW5nQ2FsbHM7CiAgICAgc2V0Q3VycmVudEZ1bmN0aW9uRGVmaW5pdGlvbihwYXJlbnRS
ZXNvbHZlci5tX2N1cnJlbnRGdW5jdGlvbik7CiB9CiAKQEAgLTczLDkgKzcyLDYgQEAgTmFtZVJl
c29sdmVyOjp+TmFtZVJlc29sdmVyKCkKIAogdm9pZCBOYW1lUmVzb2x2ZXI6OnZpc2l0KEFTVDo6
VHlwZVJlZmVyZW5jZSYgdHlwZVJlZmVyZW5jZSkKIHsKLSAgICBpZiAobV9pc1Jlc29sdmluZ0Nh
bGxzKQotICAgICAgICByZXR1cm47Ci0KICAgICBTY29wZWRTZXRBZGRlcjxBU1Q6OlR5cGVSZWZl
cmVuY2UqPiBhZGRlcihtX3R5cGVSZWZlcmVuY2VzLCAmdHlwZVJlZmVyZW5jZSk7CiAgICAgaWYg
KCFhZGRlci5pc05ld0VudHJ5KCkpIHsKICAgICAgICAgc2V0RXJyb3IoKTsKQEAgLTIwMywxNCAr
MTk5LDYgQEAgdm9pZCBOYW1lUmVzb2x2ZXI6OnZpc2l0KEFTVDo6UmV0dXJuJiByZXR1cm5TdGF0
ZW1lbnQpCiAKIHZvaWQgTmFtZVJlc29sdmVyOjp2aXNpdChBU1Q6OlByb3BlcnR5QWNjZXNzRXhw
cmVzc2lvbiYgcHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKQogewotICAgIGlmIChtX2lzUmVzb2x2
aW5nQ2FsbHMpIHsKLSAgICAgICAgaWYgKGF1dG8qIGdldHRlckZ1bmN0aW9ucyA9IG1fbmFtZUNv
bnRleHQuZ2V0RnVuY3Rpb25zKHByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbi5nZXR0ZXJGdW5jdGlv
bk5hbWUoKSkpCi0gICAgICAgICAgICBwcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24uc2V0UG9zc2li
bGVHZXR0ZXJPdmVybG9hZHMoKmdldHRlckZ1bmN0aW9ucyk7Ci0gICAgICAgIGlmIChhdXRvKiBz
ZXR0ZXJGdW5jdGlvbnMgPSBtX25hbWVDb250ZXh0LmdldEZ1bmN0aW9ucyhwcm9wZXJ0eUFjY2Vz
c0V4cHJlc3Npb24uc2V0dGVyRnVuY3Rpb25OYW1lKCkpKQotICAgICAgICAgICAgcHJvcGVydHlB
Y2Nlc3NFeHByZXNzaW9uLnNldFBvc3NpYmxlU2V0dGVyT3ZlcmxvYWRzKCpzZXR0ZXJGdW5jdGlv
bnMpOwotICAgICAgICBpZiAoYXV0byogYW5kZXJGdW5jdGlvbnMgPSBtX25hbWVDb250ZXh0Lmdl
dEZ1bmN0aW9ucyhwcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24uYW5kZXJGdW5jdGlvbk5hbWUoKSkp
Ci0gICAgICAgICAgICBwcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24uc2V0UG9zc2libGVBbmRlck92
ZXJsb2FkcygqYW5kZXJGdW5jdGlvbnMpOwotICAgIH0KICAgICBWaXNpdG9yOjp2aXNpdChwcm9w
ZXJ0eUFjY2Vzc0V4cHJlc3Npb24pOwogfQogCkBAIC0yNDEsMjYgKzIyOSw2IEBAIHZvaWQgTmFt
ZVJlc29sdmVyOjp2aXNpdChBU1Q6OkRvdEV4cHJlc3Npb24mIGRvdEV4cHJlc3Npb24pCiAKIHZv
aWQgTmFtZVJlc29sdmVyOjp2aXNpdChBU1Q6OkNhbGxFeHByZXNzaW9uJiBjYWxsRXhwcmVzc2lv
bikKIHsKLSAgICBpZiAobV9pc1Jlc29sdmluZ0NhbGxzKSB7Ci0gICAgICAgIGlmICghY2FsbEV4
cHJlc3Npb24uaGFzT3ZlcmxvYWRzKCkpIHsKLSAgICAgICAgICAgIGlmIChhdXRvKiBmdW5jdGlv
bnMgPSBtX25hbWVDb250ZXh0LmdldEZ1bmN0aW9ucyhjYWxsRXhwcmVzc2lvbi5uYW1lKCkpKQot
ICAgICAgICAgICAgICAgIGNhbGxFeHByZXNzaW9uLnNldE92ZXJsb2FkcygqZnVuY3Rpb25zKTsK
LSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIGlmIChhdXRvKiB0eXBlcyA9IG1f
bmFtZUNvbnRleHQuZ2V0VHlwZXMoY2FsbEV4cHJlc3Npb24ubmFtZSgpKSkgewotICAgICAgICAg
ICAgICAgICAgICBpZiAodHlwZXMtPnNpemUoKSA9PSAxKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoYXV0byogZnVuY3Rpb25zID0gbV9uYW1lQ29udGV4dC5nZXRGdW5jdGlvbnMoIm9w
ZXJhdG9yIGNhc3QiX3N0cikpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsRXhw
cmVzc2lvbi5zZXRDYXN0RGF0YSgoKnR5cGVzKVswXS5nZXQoKSk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY2FsbEV4cHJlc3Npb24uc2V0T3ZlcmxvYWRzKCpmdW5jdGlvbnMpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGlmICghY2FsbEV4cHJl
c3Npb24uaGFzT3ZlcmxvYWRzKCkpIHsKLSAgICAgICAgICAgIHNldEVycm9yKCk7Ci0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICB9CiAgICAgVmlzaXRvcjo6dmlzaXQoY2FsbEV4
cHJlc3Npb24pOwogfQogCkBAIC0zMzUsMjAgKzMwMyw2IEBAIGJvb2wgcmVzb2x2ZVR5cGVOYW1l
c0luRnVuY3Rpb25zKFByb2dyYW0mIHByb2dyYW0sIE5hbWVSZXNvbHZlciYgbmFtZVJlc29sdmVy
KQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIHJlc29sdmVDYWxsc0luRnVuY3Rpb25zKFBy
b2dyYW0mIHByb2dyYW0sIE5hbWVSZXNvbHZlciYgbmFtZVJlc29sdmVyKQotewotICAgIG5hbWVS
ZXNvbHZlci5zZXRJc1Jlc29sdmluZ0NhbGxzKHRydWUpOwotICAgIGZvciAoYXV0byYgZnVuY3Rp
b25EZWZpbml0aW9uIDogcHJvZ3JhbS5mdW5jdGlvbkRlZmluaXRpb25zKCkpIHsKLSAgICAgICAg
bmFtZVJlc29sdmVyLnNldEN1cnJlbnRGdW5jdGlvbkRlZmluaXRpb24oJmZ1bmN0aW9uRGVmaW5p
dGlvbik7Ci0gICAgICAgIG5hbWVSZXNvbHZlci5jaGVja0Vycm9yQW5kVmlzaXQoZnVuY3Rpb25E
ZWZpbml0aW9uKTsKLSAgICAgICAgaWYgKG5hbWVSZXNvbHZlci5lcnJvcigpKQotICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICBuYW1lUmVzb2x2ZXIuc2V0Q3VycmVudEZ1bmN0
aW9uRGVmaW5pdGlvbihudWxscHRyKTsKLSAgICBuYW1lUmVzb2x2ZXIuc2V0SXNSZXNvbHZpbmdD
YWxscyhmYWxzZSk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdITFNM
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMTmFtZVJlc29sdmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTE5hbWVSZXNvbHZlci5oCmluZGV4IDkxZmFhY2NjYzBj
N2U5YjhhZTFiNjIzMTJkN2E4OTRhMmJiNTQ3NmEuLjEzZjIxMGJmYzViYmQ0YTk4MGE3NjlmYmQz
ZWZjODE3Yjk3MjMxZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML1dITFNMTmFtZVJlc29sdmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvV0hMU0xOYW1lUmVzb2x2ZXIuaApAQCAtNTEsOCArNTEsNiBAQCBwdWJsaWM6
CiAgICAgICAgIG1fY3VycmVudEZ1bmN0aW9uID0gZnVuY3Rpb25EZWZpbml0aW9uOwogICAgIH0K
IAotICAgIHZvaWQgc2V0SXNSZXNvbHZpbmdDYWxscyhib29sIGlzUmVzb2x2aW5nQ2FsbHMpIHsg
bV9pc1Jlc29sdmluZ0NhbGxzID0gaXNSZXNvbHZpbmdDYWxsczsgfQotCiBwcml2YXRlOgogICAg
IHZvaWQgdmlzaXQoQVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uJikgb3ZlcnJpZGU7CiAg
ICAgdm9pZCB2aXNpdChBU1Q6OlR5cGVSZWZlcmVuY2UmKSBvdmVycmlkZTsKQEAgLTczLDEyICs3
MSwxMCBAQCBwcml2YXRlOgogICAgIEhhc2hTZXQ8QVNUOjpUeXBlUmVmZXJlbmNlKj4gbV90eXBl
UmVmZXJlbmNlczsKICAgICBBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbiogbV9jdXJyZW50RnVuY3Rp
b24geyBudWxscHRyIH07CiAgICAgTmFtZVJlc29sdmVyKiBtX3BhcmVudE5hbWVSZXNvbHZlciB7
IG51bGxwdHIgfTsKLSAgICBib29sIG1faXNSZXNvbHZpbmdDYWxscyB7IGZhbHNlIH07CiB9Owog
CiBib29sIHJlc29sdmVOYW1lc0luVHlwZXMoUHJvZ3JhbSYsIE5hbWVSZXNvbHZlciYpOwogYm9v
bCByZXNvbHZlVHlwZU5hbWVzSW5GdW5jdGlvbnMoUHJvZ3JhbSYsIE5hbWVSZXNvbHZlciYpOwot
Ym9vbCByZXNvbHZlQ2FsbHNJbkZ1bmN0aW9ucyhQcm9ncmFtJiwgTmFtZVJlc29sdmVyJik7CiAK
IH0gLy8gbmFtZXNwYWNlIFdITFNMCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML1dITFNMUHJlcGFyZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9XSExTTFByZXBhcmUuY3BwCmluZGV4IDIyOGE0OGZjNTkzYTc3OTM5MTNm
ODk5ZjE2ZDBkOTJmYTVmYjhmMjguLjdjNTVjZWFhY2NjNWI4MTQyNjQ1OTA3Yzg1M2Y5ZWE3OGI3
YTU3MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dI
TFNMUHJlcGFyZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
V0hMU0xQcmVwYXJlLmNwcApAQCAtNTQsNiArNTQsOCBAQAogI2luY2x1ZGUgIldITFNMU3ludGhl
c2l6ZVN0cnVjdHVyZUFjY2Vzc29ycy5oIgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogCisj
aW5jbHVkZSA8d3RmL1RpbWluZ1Njb3BlLmg+CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogbmFt
ZXNwYWNlIFdITFNMIHsKQEAgLTEyOCw3ICsxMzAsNiBAQCBzdGF0aWMgT3B0aW9uYWw8UHJvZ3Jh
bT4gcHJlcGFyZVNoYXJlZChTdHJpbmcmIHdobHNsU291cmNlKQogICAgIENIRUNLX1BBU1Moc3lu
dGhlc2l6ZUFycmF5T3BlcmF0b3JMZW5ndGgsIHByb2dyYW0pOwogICAgIENIRUNLX1BBU1MocmVz
b2x2ZVR5cGVOYW1lc0luRnVuY3Rpb25zLCBwcm9ncmFtLCBuYW1lUmVzb2x2ZXIpOwogICAgIENI
RUNLX1BBU1Moc3ludGhlc2l6ZUNvbnN0cnVjdG9ycywgcHJvZ3JhbSk7Ci0gICAgQ0hFQ0tfUEFT
UyhyZXNvbHZlQ2FsbHNJbkZ1bmN0aW9ucywgcHJvZ3JhbSwgbmFtZVJlc29sdmVyKTsKICAgICBD
SEVDS19QQVNTKGNoZWNrRHVwbGljYXRlRnVuY3Rpb25zLCBwcm9ncmFtKTsKIAogICAgIENIRUNL
X1BBU1MoY2hlY2ssIHByb2dyYW0pOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>373439</attachid>
            <date>2019-07-03 16:59:03 -0700</date>
            <delta_ts>2019-07-05 12:00:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-199474-20190703165902.patch</filename>
            <type>text/plain</type>
            <size>19291</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ3MTE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTUzMTQyNzhiMTY4M2Y4
NjIxNDQ0MWY1N2FlNzYwZGFmNjFkMzc4Zi4uYTEyN2JkNWJlYzI1YzM4MDExNDg4ZGM2MDQ0Yzkz
OGUyODlhZWI5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDE5LTA3LTAzICBSb2Jp
biBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+CisKKyAgICAgICAgW1dITFNMXSBSZW1v
dmUgdGhlIHBoYXNlIHJlc29sdmVDYWxsc0luRnVuY3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTk0NzQKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhc3Mgb25seSBzdG9yZXMgaW50byBl
YWNoIHByb3BlcnR5IGFjY2VzcyBhbmQgY2FsbCBleHByZXNzaW9uIHZlY3RvcnMgb2YgYWxsIHRo
ZSBmdW5jdGlvbnMgaXQgbWlnaHQgYmUgY2FsbGluZywgZm9yIHVzZSBieSB0aGUgQ2hlY2tlciBh
ZnRlcndhcmRzLgorICAgICAgICBCdXQgdGhlIGNoZWNrZXIgaXMgcGVyZmVjdGx5IGFibGUgdG8g
Y29tcHV0ZSBhIHBvaW50ZXIgdG8gdGhlc2UgdmVjdG9ycyBieSBpdHNlbGYuCisgICAgICAgIFNv
IGJ5IHJlbW92aW5nIHRoaXMgcGFzcywgd2UgZ2FpbiB0aGUgZm9sbG93aW5nOgorICAgICAgICAt
IE9uZSBsZXNzIHBhc3Mgb3ZlciB0aGUgQVNUCisgICAgICAgIC0gTm8gbmVlZCB0byBjb3B5IHRo
ZXNlIHZlY3RvcnMgKHdoaWNoIGNhbiBiZSBsYXJnZSBmb3IgaGVhdmlseSBvdmVybG9hZGVkIGZ1
bmN0aW9ucywgb2Ygd2hpY2ggdGhlcmUgYXJlIHF1aXRlIGEgZmV3IGluIHRoZSBzdGRsaWIpCisg
ICAgICAgIC0gTm8gbmVlZCB0byBoYXZlIHRoZXNlIHZlY3RvcnMgaW4gdGhlIGV4cHJlc3Npb25z
LCBzYXZpbmcgMjQgYnl0ZXMgcGVyIENhbGxFeHByZXNzaW9uIGFuZCA3MiBieXRlcyBwZXIgUHJv
cGVydHlBY2Nlc3NFeHByZXNzaW9uCisgICAgICAgIC0gTm8gbmVlZCB0byBhbGxvY2F0ZSBhbmQg
dGhlbiBkZXN0cm95IHRoZXNlIHZlY3RvcnMuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIGFzIHRo
ZXJlIGlzIG5vIGludGVuZGVkIGZ1bmN0aW9uYWwgY2hhbmdlLgorCisgICAgICAgICogTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQ2FsbEV4cHJlc3Npb24uaDoKKyAgICAgICAgKFdlYkNv
cmU6OldITFNMOjpBU1Q6OkNhbGxFeHByZXNzaW9uOjpjYXN0UmV0dXJuVHlwZSk6CisgICAgICAg
ICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9u
Lmg6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xBdXRvSW5pdGlhbGl6ZVZh
cmlhYmxlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QXV0b0luaXRpYWxpemU6OnZp
c2l0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNrZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OnJlc29sdmVGdW5jdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpXSExTTDo6Q2hlY2tlcjo6ZmluaXNoVmlzaXRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6
V0hMU0w6OkNoZWNrZXI6OnZpc2l0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9X
SExTTE5hbWVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6TmFtZVJlc29s
dmVyOjpOYW1lUmVzb2x2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6Ok5hbWVSZXNvbHZl
cjo6dmlzaXQpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMTmFtZVJlc29s
dmVyLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQcmVwYXJlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpwcmVwYXJlU2hhcmVkKToKKwogMjAxOS0wNy0wMiAg
TXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFtXSExT
TF0gU3RhbmRhcmQgbGlicmFyeSBpcyB0b28gYmlnIHRvIGRpcmVjdGx5IGluY2x1ZGUgaW4gV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMQ2FsbEV4cHJlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTENhbGxFeHByZXNzaW9uLmgKaW5kZXggMTdiOTRjZGNhMDcxY2U5YTA0Mjk3
MGRmNzk4NjM5OTQ5NDg1NTc1NS4uMjA2YjAyYTI2NDY5NDUxN2ZlYTEyY2NmNjc2MDdiMmJiNzJh
ZWVlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMQ2FsbEV4cHJlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xDYWxsRXhwcmVzc2lvbi5oCkBAIC02NywxMyArNjcsNiBAQCBwdWJs
aWM6CiAKICAgICBib29sIGlzQ2FzdCgpIHsgcmV0dXJuIG1fY2FzdFJldHVyblR5cGU7IH0KICAg
ICBOYW1lZFR5cGUqIGNhc3RSZXR1cm5UeXBlKCkgeyByZXR1cm4gbV9jYXN0UmV0dXJuVHlwZTsg
fQotICAgIGJvb2wgaGFzT3ZlcmxvYWRzKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9v
bD4obV9vdmVybG9hZHMpOyB9Ci0gICAgT3B0aW9uYWw8VmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dy
YXBwZXI8RnVuY3Rpb25EZWNsYXJhdGlvbj4sIDE+PiYgb3ZlcmxvYWRzKCkgeyByZXR1cm4gbV9v
dmVybG9hZHM7IH0KLSAgICB2b2lkIHNldE92ZXJsb2Fkcyhjb25zdCBWZWN0b3I8c3RkOjpyZWZl
cmVuY2Vfd3JhcHBlcjxGdW5jdGlvbkRlY2xhcmF0aW9uPiwgMT4mIG92ZXJsb2FkcykKLSAgICB7
Ci0gICAgICAgIEFTU0VSVCghaGFzT3ZlcmxvYWRzKCkpOwotICAgICAgICBtX292ZXJsb2FkcyA9
IG92ZXJsb2FkczsKLSAgICB9CiAKICAgICBGdW5jdGlvbkRlY2xhcmF0aW9uJiBmdW5jdGlvbigp
CiAgICAgewpAQCAtOTAsNyArODMsNiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFN0cmluZyBt
X25hbWU7CiAgICAgVmVjdG9yPFVuaXF1ZVJlZjxFeHByZXNzaW9uPj4gbV9hcmd1bWVudHM7Ci0g
ICAgT3B0aW9uYWw8VmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8RnVuY3Rpb25EZWNsYXJh
dGlvbj4sIDE+PiBtX292ZXJsb2FkczsKICAgICBGdW5jdGlvbkRlY2xhcmF0aW9uKiBtX2Z1bmN0
aW9uIHsgbnVsbHB0ciB9OwogICAgIE5hbWVkVHlwZSogbV9jYXN0UmV0dXJuVHlwZSB7IG51bGxw
dHIgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbi5oCmlu
ZGV4IGJiMGMzMDEyZWViMjAzOTAzYTQzMDAyMDMyOGM4Yjk0ODI5YjY4NGQuLjM0ZDEyYTFlOWRk
OWI2YzM2MjExZDY2MmFmNGI5NzFiOWI3N2U5YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFByb3Bl
cnR5QWNjZXNzRXhwcmVzc2lvbi5oCkBAIC01NywyNyArNTcsMTEgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgU3RyaW5nIHNldHRlckZ1bmN0aW9uTmFtZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFs
IFN0cmluZyBhbmRlckZ1bmN0aW9uTmFtZSgpIGNvbnN0ID0gMDsKIAotICAgIFZlY3RvcjxzdGQ6
OnJlZmVyZW5jZV93cmFwcGVyPEZ1bmN0aW9uRGVjbGFyYXRpb24+LCAxPiYgcG9zc2libGVHZXR0
ZXJPdmVybG9hZHMoKSB7IHJldHVybiBtX3Bvc3NpYmxlR2V0dGVyT3ZlcmxvYWRzOyB9Ci0gICAg
VmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8RnVuY3Rpb25EZWNsYXJhdGlvbj4sIDE+JiBw
b3NzaWJsZVNldHRlck92ZXJsb2FkcygpIHsgcmV0dXJuIG1fcG9zc2libGVTZXR0ZXJPdmVybG9h
ZHM7IH0KLSAgICBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxGdW5jdGlvbkRlY2xhcmF0
aW9uPiwgMT4mIHBvc3NpYmxlQW5kZXJPdmVybG9hZHMoKSB7IHJldHVybiBtX3Bvc3NpYmxlQW5k
ZXJPdmVybG9hZHM7IH0KICAgICBGdW5jdGlvbkRlY2xhcmF0aW9uKiBnZXR0ZXJGdW5jdGlvbigp
IHsgcmV0dXJuIG1fZ2V0dGVyRnVuY3Rpb247IH0KICAgICBGdW5jdGlvbkRlY2xhcmF0aW9uKiBh
bmRlckZ1bmN0aW9uKCkgeyByZXR1cm4gbV9hbmRlckZ1bmN0aW9uOyB9CiAgICAgRnVuY3Rpb25E
ZWNsYXJhdGlvbiogdGhyZWFkQW5kZXJGdW5jdGlvbigpIHsgcmV0dXJuIG1fdGhyZWFkQW5kZXJG
dW5jdGlvbjsgfQogICAgIEZ1bmN0aW9uRGVjbGFyYXRpb24qIHNldHRlckZ1bmN0aW9uKCkgeyBy
ZXR1cm4gbV9zZXR0ZXJGdW5jdGlvbjsgfQogCi0gICAgdm9pZCBzZXRQb3NzaWJsZUdldHRlck92
ZXJsb2Fkcyhjb25zdCBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxGdW5jdGlvbkRlY2xh
cmF0aW9uPiwgMT4mIG92ZXJsb2FkcykKLSAgICB7Ci0gICAgICAgIG1fcG9zc2libGVHZXR0ZXJP
dmVybG9hZHMgPSBvdmVybG9hZHM7Ci0gICAgfQotICAgIHZvaWQgc2V0UG9zc2libGVBbmRlck92
ZXJsb2Fkcyhjb25zdCBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxGdW5jdGlvbkRlY2xh
cmF0aW9uPiwgMT4mIG92ZXJsb2FkcykKLSAgICB7Ci0gICAgICAgIG1fcG9zc2libGVBbmRlck92
ZXJsb2FkcyA9IG92ZXJsb2FkczsKLSAgICB9Ci0gICAgdm9pZCBzZXRQb3NzaWJsZVNldHRlck92
ZXJsb2Fkcyhjb25zdCBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxGdW5jdGlvbkRlY2xh
cmF0aW9uPiwgMT4mIG92ZXJsb2FkcykKLSAgICB7Ci0gICAgICAgIG1fcG9zc2libGVTZXR0ZXJP
dmVybG9hZHMgPSBvdmVybG9hZHM7Ci0gICAgfQotCiAgICAgdm9pZCBzZXRHZXR0ZXJGdW5jdGlv
bihGdW5jdGlvbkRlY2xhcmF0aW9uKiBnZXR0ZXJGdW5jdGlvbikKICAgICB7CiAgICAgICAgIG1f
Z2V0dGVyRnVuY3Rpb24gPSBnZXR0ZXJGdW5jdGlvbjsKQEAgLTEwNCw5ICs4OCw2IEBAIHB1Ymxp
YzoKIAogcHJpdmF0ZToKICAgICBVbmlxdWVSZWY8RXhwcmVzc2lvbj4gbV9iYXNlOwotICAgIFZl
Y3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPEZ1bmN0aW9uRGVjbGFyYXRpb24+LCAxPiBtX3Bv
c3NpYmxlR2V0dGVyT3ZlcmxvYWRzOwotICAgIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVy
PEZ1bmN0aW9uRGVjbGFyYXRpb24+LCAxPiBtX3Bvc3NpYmxlU2V0dGVyT3ZlcmxvYWRzOwotICAg
IFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPEZ1bmN0aW9uRGVjbGFyYXRpb24+LCAxPiBt
X3Bvc3NpYmxlQW5kZXJPdmVybG9hZHM7CiAgICAgRnVuY3Rpb25EZWNsYXJhdGlvbiogbV9nZXR0
ZXJGdW5jdGlvbiB7IG51bGxwdHIgfTsKICAgICBGdW5jdGlvbkRlY2xhcmF0aW9uKiBtX2FuZGVy
RnVuY3Rpb24geyBudWxscHRyIH07CiAgICAgRnVuY3Rpb25EZWNsYXJhdGlvbiogbV90aHJlYWRB
bmRlckZ1bmN0aW9uIHsgbnVsbHB0ciB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvV0hMU0xBdXRvSW5pdGlhbGl6ZVZhcmlhYmxlcy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEF1dG9Jbml0aWFsaXplVmFyaWFi
bGVzLmNwcAppbmRleCBkMTFiOTA3YWYzZGQzZGNmNjk5ODQ0ZGIzYTI3YmJmZmM3OWM0NDgzLi44
MTY0NzA5MzU2N2VjZWY3OGNiNTcyNTRhOTliMTY3NTJiZGEzOTg2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEF1dG9Jbml0aWFsaXplVmFyaWFi
bGVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEF1
dG9Jbml0aWFsaXplVmFyaWFibGVzLmNwcApAQCAtNzIsOSArNzIsOCBAQCBwcml2YXRlOgogICAg
ICAgICBhdXRvIGNhbGxFeHByZXNzaW9uID0gc3RkOjptYWtlX3VuaXF1ZTxBU1Q6OkNhbGxFeHBy
ZXNzaW9uPih2YXJpYWJsZURlY2xhcmF0aW9uLm9yaWdpbigpLCBXVEZNb3ZlKGZ1bmN0aW9uTmFt
ZSksIFZlY3RvcjxVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPj4oKSk7CiAgICAgICAgIGNhbGxF
eHByZXNzaW9uLT5zZXRUeXBlKHR5cGUtPmNsb25lKCkpOwogICAgICAgICBjYWxsRXhwcmVzc2lv
bi0+c2V0VHlwZUFubm90YXRpb24oQVNUOjpSaWdodFZhbHVlKCkpOwotICAgICAgICBjYWxsRXhw
cmVzc2lvbi0+c2V0T3ZlcmxvYWRzKG1fY2FzdEZ1bmN0aW9ucyk7CiAgICAgICAgIFZlY3Rvcjxz
dGQ6OnJlZmVyZW5jZV93cmFwcGVyPFJlc29sdmluZ1R5cGU+PiBhcmd1bWVudFR5cGVzOwotICAg
ICAgICBhdXRvKiBmdW5jdGlvbiA9IHJlc29sdmVGdW5jdGlvbk92ZXJsb2FkKCpjYWxsRXhwcmVz
c2lvbi0+b3ZlcmxvYWRzKCksIGFyZ3VtZW50VHlwZXMsIHR5cGUpOworICAgICAgICBhdXRvKiBm
dW5jdGlvbiA9IHJlc29sdmVGdW5jdGlvbk92ZXJsb2FkKG1fY2FzdEZ1bmN0aW9ucywgYXJndW1l
bnRUeXBlcywgdHlwZSk7CiAgICAgICAgIGlmICghZnVuY3Rpb24pIHsKICAgICAgICAgICAgIHNl
dEVycm9yKCk7CiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDaGVja2VyLmNwcAppbmRleCA2Mzk4NWQ5Mjk5MThl
NWUyZjc3OThjZDkxYTc5ZDc2YzM3YmM2ZDAyLi4wZTUwODY5YTNjZjdjZjZiY2YwODg0OTE3YWZm
YjYxNTQzYjgzZTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9XSExTTENoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML1dITFNMQ2hlY2tlci5jcHAKQEAgLTQ2LDYgKzQ2LDcgQEAKICNpbmNsdWRlICJXSExT
TExvZ2ljYWxOb3RFeHByZXNzaW9uLmgiCiAjaW5jbHVkZSAiV0hMU0xNYWtlQXJyYXlSZWZlcmVu
Y2VFeHByZXNzaW9uLmgiCiAjaW5jbHVkZSAiV0hMU0xNYWtlUG9pbnRlckV4cHJlc3Npb24uaCIK
KyNpbmNsdWRlICJXSExTTE5hbWVDb250ZXh0LmgiCiAjaW5jbHVkZSAiV0hMU0xQb2ludGVyVHlw
ZS5oIgogI2luY2x1ZGUgIldITFNMUHJvZ3JhbS5oIgogI2luY2x1ZGUgIldITFNMUmVhZE1vZGlm
eVdyaXRlRXhwcmVzc2lvbi5oIgpAQCAtMjE2LDEwICsyMTcsMTIgQEAgc3RhdGljIE9wdGlvbmFs
PEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbj4gcmVzb2x2ZUJ5SW5zdGFudGlhdGlvbihj
b25zdCBTdHIKICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogfQogCi1zdGF0aWMgQVNUOjpGdW5j
dGlvbkRlY2xhcmF0aW9uKiByZXNvbHZlRnVuY3Rpb24oUHJvZ3JhbSYgcHJvZ3JhbSwgVmVjdG9y
PHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uPiwgMT4mIHBv
c3NpYmxlT3ZlcmxvYWRzLCBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxSZXNvbHZpbmdU
eXBlPj4mIHR5cGVzLCBjb25zdCBTdHJpbmcmIG5hbWUsIExleGVyOjpUb2tlbiBvcmlnaW4sIGNv
bnN0IEludHJpbnNpY3MmIGludHJpbnNpY3MsIEFTVDo6TmFtZWRUeXBlKiBjYXN0UmV0dXJuVHlw
ZSA9IG51bGxwdHIpCitzdGF0aWMgQVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uKiByZXNvbHZlRnVu
Y3Rpb24oUHJvZ3JhbSYgcHJvZ3JhbSwgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8QVNU
OjpGdW5jdGlvbkRlY2xhcmF0aW9uPiwgMT4qIHBvc3NpYmxlT3ZlcmxvYWRzLCBWZWN0b3I8c3Rk
OjpyZWZlcmVuY2Vfd3JhcHBlcjxSZXNvbHZpbmdUeXBlPj4mIHR5cGVzLCBjb25zdCBTdHJpbmcm
IG5hbWUsIExleGVyOjpUb2tlbiBvcmlnaW4sIGNvbnN0IEludHJpbnNpY3MmIGludHJpbnNpY3Ms
IEFTVDo6TmFtZWRUeXBlKiBjYXN0UmV0dXJuVHlwZSA9IG51bGxwdHIpCiB7Ci0gICAgaWYgKEFT
VDo6RnVuY3Rpb25EZWNsYXJhdGlvbiogZnVuY3Rpb24gPSByZXNvbHZlRnVuY3Rpb25PdmVybG9h
ZChwb3NzaWJsZU92ZXJsb2FkcywgdHlwZXMsIGNhc3RSZXR1cm5UeXBlKSkKLSAgICAgICAgcmV0
dXJuIGZ1bmN0aW9uOworICAgIGlmIChwb3NzaWJsZU92ZXJsb2FkcykgeworICAgICAgICBpZiAo
QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uKiBmdW5jdGlvbiA9IHJlc29sdmVGdW5jdGlvbk92ZXJs
b2FkKCpwb3NzaWJsZU92ZXJsb2FkcywgdHlwZXMsIGNhc3RSZXR1cm5UeXBlKSkKKyAgICAgICAg
ICAgIHJldHVybiBmdW5jdGlvbjsKKyAgICB9CiAKICAgICBpZiAoYXV0byBuZXdGdW5jdGlvbiA9
IHJlc29sdmVCeUluc3RhbnRpYXRpb24obmFtZSwgb3JpZ2luLCB0eXBlcywgaW50cmluc2ljcykp
IHsKICAgICAgICAgcHJvZ3JhbS5hcHBlbmQoV1RGTW92ZSgqbmV3RnVuY3Rpb24pKTsKQEAgLTEw
MjAsNyArMTAyMywxMCBAQCB2b2lkIENoZWNrZXI6OmZpbmlzaFZpc2l0aW5nKEFTVDo6UHJvcGVy
dHlBY2Nlc3NFeHByZXNzaW9uJiBwcm9wZXJ0eUFjY2Vzc0V4cHJlcwogICAgICAgICBWZWN0b3I8
c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxSZXNvbHZpbmdUeXBlPj4gZ2V0dGVyQXJndW1lbnRUeXBl
cyB7IGJhc2VJbmZvLT5yZXNvbHZpbmdUeXBlIH07CiAgICAgICAgIGlmIChhZGRpdGlvbmFsQXJn
dW1lbnRUeXBlKQogICAgICAgICAgICAgZ2V0dGVyQXJndW1lbnRUeXBlcy5hcHBlbmQoKmFkZGl0
aW9uYWxBcmd1bWVudFR5cGUpOwotICAgICAgICBpZiAoKGdldHRlckZ1bmN0aW9uID0gcmVzb2x2
ZUZ1bmN0aW9uKG1fcHJvZ3JhbSwgcHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uLnBvc3NpYmxlR2V0
dGVyT3ZlcmxvYWRzKCksIGdldHRlckFyZ3VtZW50VHlwZXMsIHByb3BlcnR5QWNjZXNzRXhwcmVz
c2lvbi5nZXR0ZXJGdW5jdGlvbk5hbWUoKSwgcHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uLm9yaWdp
bigpLCBtX2ludHJpbnNpY3MpKSkKKyAgICAgICAgYXV0byBnZXR0ZXJOYW1lID0gcHJvcGVydHlB
Y2Nlc3NFeHByZXNzaW9uLmdldHRlckZ1bmN0aW9uTmFtZSgpOworICAgICAgICBhdXRvKiBnZXR0
ZXJGdW5jdGlvbnMgPSBtX3Byb2dyYW0ubmFtZUNvbnRleHQoKS5nZXRGdW5jdGlvbnMoZ2V0dGVy
TmFtZSk7CisgICAgICAgIGdldHRlckZ1bmN0aW9uID0gcmVzb2x2ZUZ1bmN0aW9uKG1fcHJvZ3Jh
bSwgZ2V0dGVyRnVuY3Rpb25zLCBnZXR0ZXJBcmd1bWVudFR5cGVzLCBnZXR0ZXJOYW1lLCBwcm9w
ZXJ0eUFjY2Vzc0V4cHJlc3Npb24ub3JpZ2luKCksIG1faW50cmluc2ljcyk7CisgICAgICAgIGlm
IChnZXR0ZXJGdW5jdGlvbikKICAgICAgICAgICAgIGdldHRlclJldHVyblR5cGUgPSAmZ2V0dGVy
RnVuY3Rpb24tPnR5cGUoKTsKICAgICB9CiAKQEAgLTEwMzMsNyArMTAzOSwxMCBAQCB2b2lkIENo
ZWNrZXI6OmZpbmlzaFZpc2l0aW5nKEFTVDo6UHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uJiBwcm9w
ZXJ0eUFjY2Vzc0V4cHJlcwogICAgICAgICAgICAgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBw
ZXI8UmVzb2x2aW5nVHlwZT4+IGFuZGVyQXJndW1lbnRUeXBlcyB7IGFyZ3VtZW50VHlwZSB9Owog
ICAgICAgICAgICAgaWYgKGFkZGl0aW9uYWxBcmd1bWVudFR5cGUpCiAgICAgICAgICAgICAgICAg
YW5kZXJBcmd1bWVudFR5cGVzLmFwcGVuZCgqYWRkaXRpb25hbEFyZ3VtZW50VHlwZSk7Ci0gICAg
ICAgICAgICBpZiAoKGFuZGVyRnVuY3Rpb24gPSByZXNvbHZlRnVuY3Rpb24obV9wcm9ncmFtLCBw
cm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24ucG9zc2libGVBbmRlck92ZXJsb2FkcygpLCBhbmRlckFy
Z3VtZW50VHlwZXMsIHByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbi5hbmRlckZ1bmN0aW9uTmFtZSgp
LCBwcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24ub3JpZ2luKCksIG1faW50cmluc2ljcykpKQorICAg
ICAgICAgICAgYXV0byBhbmRlck5hbWUgPSBwcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24uYW5kZXJG
dW5jdGlvbk5hbWUoKTsKKyAgICAgICAgICAgIGF1dG8qIGFuZGVyRnVuY3Rpb25zID0gbV9wcm9n
cmFtLm5hbWVDb250ZXh0KCkuZ2V0RnVuY3Rpb25zKGFuZGVyTmFtZSk7CisgICAgICAgICAgICBh
bmRlckZ1bmN0aW9uID0gcmVzb2x2ZUZ1bmN0aW9uKG1fcHJvZ3JhbSwgYW5kZXJGdW5jdGlvbnMs
IGFuZGVyQXJndW1lbnRUeXBlcywgYW5kZXJOYW1lLCBwcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24u
b3JpZ2luKCksIG1faW50cmluc2ljcyk7CisgICAgICAgICAgICBpZiAoYW5kZXJGdW5jdGlvbikK
ICAgICAgICAgICAgICAgICBhbmRlclJldHVyblR5cGUgPSAmZG93bmNhc3Q8QVNUOjpQb2ludGVy
VHlwZT4oYW5kZXJGdW5jdGlvbi0+dHlwZSgpKS5lbGVtZW50VHlwZSgpOyAvLyBGSVhNRTogaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODE2NCBFbmZvcmNlIHRoZSBy
ZXR1cm4gb2YgYW5kZXJzIHdpbGwgYWx3YXlzIGJlIGEgcG9pbnRlcgogICAgICAgICB9CiAgICAg
fQpAQCAtMTA0NSw3ICsxMDU0LDEwIEBAIHZvaWQgQ2hlY2tlcjo6ZmluaXNoVmlzaXRpbmcoQVNU
OjpQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24mIHByb3BlcnR5QWNjZXNzRXhwcmVzCiAgICAgICAg
IFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFJlc29sdmluZ1R5cGU+PiB0aHJlYWRBbmRl
ckFyZ3VtZW50VHlwZXMgeyBhcmd1bWVudFR5cGUgfTsKICAgICAgICAgaWYgKGFkZGl0aW9uYWxB
cmd1bWVudFR5cGUpCiAgICAgICAgICAgICB0aHJlYWRBbmRlckFyZ3VtZW50VHlwZXMuYXBwZW5k
KCphZGRpdGlvbmFsQXJndW1lbnRUeXBlKTsKLSAgICAgICAgaWYgKCh0aHJlYWRBbmRlckZ1bmN0
aW9uID0gcmVzb2x2ZUZ1bmN0aW9uKG1fcHJvZ3JhbSwgcHJvcGVydHlBY2Nlc3NFeHByZXNzaW9u
LnBvc3NpYmxlQW5kZXJPdmVybG9hZHMoKSwgdGhyZWFkQW5kZXJBcmd1bWVudFR5cGVzLCBwcm9w
ZXJ0eUFjY2Vzc0V4cHJlc3Npb24uYW5kZXJGdW5jdGlvbk5hbWUoKSwgcHJvcGVydHlBY2Nlc3NF
eHByZXNzaW9uLm9yaWdpbigpLCBtX2ludHJpbnNpY3MpKSkKKyAgICAgICAgYXV0byBhbmRlck5h
bWUgPSBwcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24uYW5kZXJGdW5jdGlvbk5hbWUoKTsKKyAgICAg
ICAgYXV0byogYW5kZXJGdW5jdGlvbnMgPSBtX3Byb2dyYW0ubmFtZUNvbnRleHQoKS5nZXRGdW5j
dGlvbnMoYW5kZXJOYW1lKTsKKyAgICAgICAgdGhyZWFkQW5kZXJGdW5jdGlvbiA9IHJlc29sdmVG
dW5jdGlvbihtX3Byb2dyYW0sIGFuZGVyRnVuY3Rpb25zLCB0aHJlYWRBbmRlckFyZ3VtZW50VHlw
ZXMsIGFuZGVyTmFtZSwgcHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uLm9yaWdpbigpLCBtX2ludHJp
bnNpY3MpOworICAgICAgICBpZiAodGhyZWFkQW5kZXJGdW5jdGlvbikKICAgICAgICAgICAgIHRo
cmVhZEFuZGVyUmV0dXJuVHlwZSA9ICZkb3duY2FzdDxBU1Q6OlBvaW50ZXJUeXBlPih0aHJlYWRB
bmRlckZ1bmN0aW9uLT50eXBlKCkpLmVsZW1lbnRUeXBlKCk7IC8vIEZJWE1FOiBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4MTY0IEVuZm9yY2UgdGhlIHJldHVybiBv
ZiBhbmRlcnMgd2lsbCBhbHdheXMgYmUgYSBwb2ludGVyCiAgICAgfQogCkBAIC0xMDg5LDcgKzEx
MDEsOSBAQCB2b2lkIENoZWNrZXI6OmZpbmlzaFZpc2l0aW5nKEFTVDo6UHJvcGVydHlBY2Nlc3NF
eHByZXNzaW9uJiBwcm9wZXJ0eUFjY2Vzc0V4cHJlcwogICAgICAgICBpZiAoYWRkaXRpb25hbEFy
Z3VtZW50VHlwZSkKICAgICAgICAgICAgIHNldHRlckFyZ3VtZW50VHlwZXMuYXBwZW5kKCphZGRp
dGlvbmFsQXJndW1lbnRUeXBlKTsKICAgICAgICAgc2V0dGVyQXJndW1lbnRUeXBlcy5hcHBlbmQo
ZmllbGRSZXNvbHZpbmdUeXBlKTsKLSAgICAgICAgc2V0dGVyRnVuY3Rpb24gPSByZXNvbHZlRnVu
Y3Rpb24obV9wcm9ncmFtLCBwcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24ucG9zc2libGVTZXR0ZXJP
dmVybG9hZHMoKSwgc2V0dGVyQXJndW1lbnRUeXBlcywgcHJvcGVydHlBY2Nlc3NFeHByZXNzaW9u
LnNldHRlckZ1bmN0aW9uTmFtZSgpLCBwcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24ub3JpZ2luKCks
IG1faW50cmluc2ljcyk7CisgICAgICAgIGF1dG8gc2V0dGVyTmFtZSA9IHByb3BlcnR5QWNjZXNz
RXhwcmVzc2lvbi5zZXR0ZXJGdW5jdGlvbk5hbWUoKTsKKyAgICAgICAgYXV0byogc2V0dGVyRnVu
Y3Rpb25zID0gbV9wcm9ncmFtLm5hbWVDb250ZXh0KCkuZ2V0RnVuY3Rpb25zKHNldHRlck5hbWUp
OworICAgICAgICBzZXR0ZXJGdW5jdGlvbiA9IHJlc29sdmVGdW5jdGlvbihtX3Byb2dyYW0sIHNl
dHRlckZ1bmN0aW9ucywgc2V0dGVyQXJndW1lbnRUeXBlcywgc2V0dGVyTmFtZSwgcHJvcGVydHlB
Y2Nlc3NFeHByZXNzaW9uLm9yaWdpbigpLCBtX2ludHJpbnNpY3MpOwogICAgICAgICBpZiAoc2V0
dGVyRnVuY3Rpb24pCiAgICAgICAgICAgICBzZXR0ZXJSZXR1cm5UeXBlID0gJnNldHRlckZ1bmN0
aW9uLT50eXBlKCk7CiAgICAgfQpAQCAtMTQ2OSw4ICsxNDgzLDIyIEBAIHZvaWQgQ2hlY2tlcjo6
dmlzaXQoQVNUOjpDYWxsRXhwcmVzc2lvbiYgY2FsbEV4cHJlc3Npb24pCiAgICAgLy8gRG9uJ3Qg
cmVjdXJzZSBvbiB0aGUgY2FzdFJldHVyblR5cGUsIGJlY2F1c2UgaXQncyBndWFyYW50ZWVkIHRv
IGJlIGEgTmFtZWRUeXBlLCB3aGljaCB3aWxsIGdldCB2aXNpdGVkIGxhdGVyLgogICAgIC8vIFdl
IGRvbid0IHdhbnQgdG8gcmVjdXJzZSB0byB0aGUgc2FtZSBub2RlIHR3aWNlLgogCi0gICAgQVNT
RVJUKGNhbGxFeHByZXNzaW9uLmhhc092ZXJsb2FkcygpKTsKLSAgICBhdXRvKiBmdW5jdGlvbiA9
IHJlc29sdmVGdW5jdGlvbihtX3Byb2dyYW0sICpjYWxsRXhwcmVzc2lvbi5vdmVybG9hZHMoKSwg
dHlwZXMsIGNhbGxFeHByZXNzaW9uLm5hbWUoKSwgY2FsbEV4cHJlc3Npb24ub3JpZ2luKCksIG1f
aW50cmluc2ljcywgY2FsbEV4cHJlc3Npb24uY2FzdFJldHVyblR5cGUoKSk7CisgICAgTmFtZUNv
bnRleHQmIG5hbWVDb250ZXh0ID0gbV9wcm9ncmFtLm5hbWVDb250ZXh0KCk7CisgICAgYXV0byog
ZnVuY3Rpb25zID0gbmFtZUNvbnRleHQuZ2V0RnVuY3Rpb25zKGNhbGxFeHByZXNzaW9uLm5hbWUo
KSk7CisgICAgaWYgKCFmdW5jdGlvbnMpIHsKKyAgICAgICAgaWYgKGF1dG8qIHR5cGVzID0gbmFt
ZUNvbnRleHQuZ2V0VHlwZXMoY2FsbEV4cHJlc3Npb24ubmFtZSgpKSkgeworICAgICAgICAgICAg
aWYgKHR5cGVzLT5zaXplKCkgPT0gMSkgeworICAgICAgICAgICAgICAgIGlmICgoZnVuY3Rpb25z
ID0gbmFtZUNvbnRleHQuZ2V0RnVuY3Rpb25zKCJvcGVyYXRvciBjYXN0Il9zdHIpKSkKKyAgICAg
ICAgICAgICAgICAgICAgY2FsbEV4cHJlc3Npb24uc2V0Q2FzdERhdGEoKCp0eXBlcylbMF0uZ2V0
KCkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIGlmICghZnVuY3Rpb25z
KSB7CisgICAgICAgIHNldEVycm9yKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBh
dXRvKiBmdW5jdGlvbiA9IHJlc29sdmVGdW5jdGlvbihtX3Byb2dyYW0sIGZ1bmN0aW9ucywgdHlw
ZXMsIGNhbGxFeHByZXNzaW9uLm5hbWUoKSwgY2FsbEV4cHJlc3Npb24ub3JpZ2luKCksIG1faW50
cmluc2ljcywgY2FsbEV4cHJlc3Npb24uY2FzdFJldHVyblR5cGUoKSk7CiAgICAgaWYgKCFmdW5j
dGlvbikgewogICAgICAgICBzZXRFcnJvcigpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTE5hbWVSZXNvbHZlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTE5hbWVSZXNvbHZl
ci5jcHAKaW5kZXggMDcyZjVjOTQ2NjRiNDNkZWM4OWRmMmJlOGRmZGNkMmYyYzcyZjFmZi4uMmMz
YTJkNzQyZTgyNzdkNWUzYjJiZmNmYzdhYjJhZDcwNDM1MzQyZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xOYW1lUmVzb2x2ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMTmFtZVJlc29sdmVyLmNw
cApAQCAtNjEsNyArNjEsNiBAQCBOYW1lUmVzb2x2ZXI6Ok5hbWVSZXNvbHZlcihOYW1lUmVzb2x2
ZXImIHBhcmVudFJlc29sdmVyLCBOYW1lQ29udGV4dCYgbmFtZUNvbnRleAogICAgIDogbV9uYW1l
Q29udGV4dChuYW1lQ29udGV4dCkKICAgICAsIG1fcGFyZW50TmFtZVJlc29sdmVyKCZwYXJlbnRS
ZXNvbHZlcikKIHsKLSAgICBtX2lzUmVzb2x2aW5nQ2FsbHMgPSBwYXJlbnRSZXNvbHZlci5tX2lz
UmVzb2x2aW5nQ2FsbHM7CiAgICAgc2V0Q3VycmVudEZ1bmN0aW9uRGVmaW5pdGlvbihwYXJlbnRS
ZXNvbHZlci5tX2N1cnJlbnRGdW5jdGlvbik7CiB9CiAKQEAgLTczLDkgKzcyLDYgQEAgTmFtZVJl
c29sdmVyOjp+TmFtZVJlc29sdmVyKCkKIAogdm9pZCBOYW1lUmVzb2x2ZXI6OnZpc2l0KEFTVDo6
VHlwZVJlZmVyZW5jZSYgdHlwZVJlZmVyZW5jZSkKIHsKLSAgICBpZiAobV9pc1Jlc29sdmluZ0Nh
bGxzKQotICAgICAgICByZXR1cm47Ci0KICAgICBTY29wZWRTZXRBZGRlcjxBU1Q6OlR5cGVSZWZl
cmVuY2UqPiBhZGRlcihtX3R5cGVSZWZlcmVuY2VzLCAmdHlwZVJlZmVyZW5jZSk7CiAgICAgaWYg
KCFhZGRlci5pc05ld0VudHJ5KCkpIHsKICAgICAgICAgc2V0RXJyb3IoKTsKQEAgLTIwMywxNCAr
MTk5LDYgQEAgdm9pZCBOYW1lUmVzb2x2ZXI6OnZpc2l0KEFTVDo6UmV0dXJuJiByZXR1cm5TdGF0
ZW1lbnQpCiAKIHZvaWQgTmFtZVJlc29sdmVyOjp2aXNpdChBU1Q6OlByb3BlcnR5QWNjZXNzRXhw
cmVzc2lvbiYgcHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKQogewotICAgIGlmIChtX2lzUmVzb2x2
aW5nQ2FsbHMpIHsKLSAgICAgICAgaWYgKGF1dG8qIGdldHRlckZ1bmN0aW9ucyA9IG1fbmFtZUNv
bnRleHQuZ2V0RnVuY3Rpb25zKHByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbi5nZXR0ZXJGdW5jdGlv
bk5hbWUoKSkpCi0gICAgICAgICAgICBwcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24uc2V0UG9zc2li
bGVHZXR0ZXJPdmVybG9hZHMoKmdldHRlckZ1bmN0aW9ucyk7Ci0gICAgICAgIGlmIChhdXRvKiBz
ZXR0ZXJGdW5jdGlvbnMgPSBtX25hbWVDb250ZXh0LmdldEZ1bmN0aW9ucyhwcm9wZXJ0eUFjY2Vz
c0V4cHJlc3Npb24uc2V0dGVyRnVuY3Rpb25OYW1lKCkpKQotICAgICAgICAgICAgcHJvcGVydHlB
Y2Nlc3NFeHByZXNzaW9uLnNldFBvc3NpYmxlU2V0dGVyT3ZlcmxvYWRzKCpzZXR0ZXJGdW5jdGlv
bnMpOwotICAgICAgICBpZiAoYXV0byogYW5kZXJGdW5jdGlvbnMgPSBtX25hbWVDb250ZXh0Lmdl
dEZ1bmN0aW9ucyhwcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24uYW5kZXJGdW5jdGlvbk5hbWUoKSkp
Ci0gICAgICAgICAgICBwcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24uc2V0UG9zc2libGVBbmRlck92
ZXJsb2FkcygqYW5kZXJGdW5jdGlvbnMpOwotICAgIH0KICAgICBWaXNpdG9yOjp2aXNpdChwcm9w
ZXJ0eUFjY2Vzc0V4cHJlc3Npb24pOwogfQogCkBAIC0yNDEsMjYgKzIyOSw2IEBAIHZvaWQgTmFt
ZVJlc29sdmVyOjp2aXNpdChBU1Q6OkRvdEV4cHJlc3Npb24mIGRvdEV4cHJlc3Npb24pCiAKIHZv
aWQgTmFtZVJlc29sdmVyOjp2aXNpdChBU1Q6OkNhbGxFeHByZXNzaW9uJiBjYWxsRXhwcmVzc2lv
bikKIHsKLSAgICBpZiAobV9pc1Jlc29sdmluZ0NhbGxzKSB7Ci0gICAgICAgIGlmICghY2FsbEV4
cHJlc3Npb24uaGFzT3ZlcmxvYWRzKCkpIHsKLSAgICAgICAgICAgIGlmIChhdXRvKiBmdW5jdGlv
bnMgPSBtX25hbWVDb250ZXh0LmdldEZ1bmN0aW9ucyhjYWxsRXhwcmVzc2lvbi5uYW1lKCkpKQot
ICAgICAgICAgICAgICAgIGNhbGxFeHByZXNzaW9uLnNldE92ZXJsb2FkcygqZnVuY3Rpb25zKTsK
LSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIGlmIChhdXRvKiB0eXBlcyA9IG1f
bmFtZUNvbnRleHQuZ2V0VHlwZXMoY2FsbEV4cHJlc3Npb24ubmFtZSgpKSkgewotICAgICAgICAg
ICAgICAgICAgICBpZiAodHlwZXMtPnNpemUoKSA9PSAxKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoYXV0byogZnVuY3Rpb25zID0gbV9uYW1lQ29udGV4dC5nZXRGdW5jdGlvbnMoIm9w
ZXJhdG9yIGNhc3QiX3N0cikpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsRXhw
cmVzc2lvbi5zZXRDYXN0RGF0YSgoKnR5cGVzKVswXS5nZXQoKSk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY2FsbEV4cHJlc3Npb24uc2V0T3ZlcmxvYWRzKCpmdW5jdGlvbnMpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGlmICghY2FsbEV4cHJl
c3Npb24uaGFzT3ZlcmxvYWRzKCkpIHsKLSAgICAgICAgICAgIHNldEVycm9yKCk7Ci0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICB9CiAgICAgVmlzaXRvcjo6dmlzaXQoY2FsbEV4
cHJlc3Npb24pOwogfQogCkBAIC0zMzUsMjAgKzMwMyw2IEBAIGJvb2wgcmVzb2x2ZVR5cGVOYW1l
c0luRnVuY3Rpb25zKFByb2dyYW0mIHByb2dyYW0sIE5hbWVSZXNvbHZlciYgbmFtZVJlc29sdmVy
KQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIHJlc29sdmVDYWxsc0luRnVuY3Rpb25zKFBy
b2dyYW0mIHByb2dyYW0sIE5hbWVSZXNvbHZlciYgbmFtZVJlc29sdmVyKQotewotICAgIG5hbWVS
ZXNvbHZlci5zZXRJc1Jlc29sdmluZ0NhbGxzKHRydWUpOwotICAgIGZvciAoYXV0byYgZnVuY3Rp
b25EZWZpbml0aW9uIDogcHJvZ3JhbS5mdW5jdGlvbkRlZmluaXRpb25zKCkpIHsKLSAgICAgICAg
bmFtZVJlc29sdmVyLnNldEN1cnJlbnRGdW5jdGlvbkRlZmluaXRpb24oJmZ1bmN0aW9uRGVmaW5p
dGlvbik7Ci0gICAgICAgIG5hbWVSZXNvbHZlci5jaGVja0Vycm9yQW5kVmlzaXQoZnVuY3Rpb25E
ZWZpbml0aW9uKTsKLSAgICAgICAgaWYgKG5hbWVSZXNvbHZlci5lcnJvcigpKQotICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICBuYW1lUmVzb2x2ZXIuc2V0Q3VycmVudEZ1bmN0
aW9uRGVmaW5pdGlvbihudWxscHRyKTsKLSAgICBuYW1lUmVzb2x2ZXIuc2V0SXNSZXNvbHZpbmdD
YWxscyhmYWxzZSk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdITFNM
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMTmFtZVJlc29sdmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTE5hbWVSZXNvbHZlci5oCmluZGV4IDkxZmFhY2NjYzBj
N2U5YjhhZTFiNjIzMTJkN2E4OTRhMmJiNTQ3NmEuLjEzZjIxMGJmYzViYmQ0YTk4MGE3NjlmYmQz
ZWZjODE3Yjk3MjMxZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML1dITFNMTmFtZVJlc29sdmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvV0hMU0xOYW1lUmVzb2x2ZXIuaApAQCAtNTEsOCArNTEsNiBAQCBwdWJsaWM6
CiAgICAgICAgIG1fY3VycmVudEZ1bmN0aW9uID0gZnVuY3Rpb25EZWZpbml0aW9uOwogICAgIH0K
IAotICAgIHZvaWQgc2V0SXNSZXNvbHZpbmdDYWxscyhib29sIGlzUmVzb2x2aW5nQ2FsbHMpIHsg
bV9pc1Jlc29sdmluZ0NhbGxzID0gaXNSZXNvbHZpbmdDYWxsczsgfQotCiBwcml2YXRlOgogICAg
IHZvaWQgdmlzaXQoQVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uJikgb3ZlcnJpZGU7CiAg
ICAgdm9pZCB2aXNpdChBU1Q6OlR5cGVSZWZlcmVuY2UmKSBvdmVycmlkZTsKQEAgLTczLDEyICs3
MSwxMCBAQCBwcml2YXRlOgogICAgIEhhc2hTZXQ8QVNUOjpUeXBlUmVmZXJlbmNlKj4gbV90eXBl
UmVmZXJlbmNlczsKICAgICBBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbiogbV9jdXJyZW50RnVuY3Rp
b24geyBudWxscHRyIH07CiAgICAgTmFtZVJlc29sdmVyKiBtX3BhcmVudE5hbWVSZXNvbHZlciB7
IG51bGxwdHIgfTsKLSAgICBib29sIG1faXNSZXNvbHZpbmdDYWxscyB7IGZhbHNlIH07CiB9Owog
CiBib29sIHJlc29sdmVOYW1lc0luVHlwZXMoUHJvZ3JhbSYsIE5hbWVSZXNvbHZlciYpOwogYm9v
bCByZXNvbHZlVHlwZU5hbWVzSW5GdW5jdGlvbnMoUHJvZ3JhbSYsIE5hbWVSZXNvbHZlciYpOwot
Ym9vbCByZXNvbHZlQ2FsbHNJbkZ1bmN0aW9ucyhQcm9ncmFtJiwgTmFtZVJlc29sdmVyJik7CiAK
IH0gLy8gbmFtZXNwYWNlIFdITFNMCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML1dITFNMUHJlcGFyZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9XSExTTFByZXBhcmUuY3BwCmluZGV4IDIyOGE0OGZjNTkzYTc3OTM5MTNm
ODk5ZjE2ZDBkOTJmYTVmYjhmMjguLjUxNGVjMzU1OTQ5ZGVhYjlkNTEyMDcwNGQ0MDA3MWNhODQw
NWVmZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dI
TFNMUHJlcGFyZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
V0hMU0xQcmVwYXJlLmNwcApAQCAtMTI4LDcgKzEyOCw2IEBAIHN0YXRpYyBPcHRpb25hbDxQcm9n
cmFtPiBwcmVwYXJlU2hhcmVkKFN0cmluZyYgd2hsc2xTb3VyY2UpCiAgICAgQ0hFQ0tfUEFTUyhz
eW50aGVzaXplQXJyYXlPcGVyYXRvckxlbmd0aCwgcHJvZ3JhbSk7CiAgICAgQ0hFQ0tfUEFTUyhy
ZXNvbHZlVHlwZU5hbWVzSW5GdW5jdGlvbnMsIHByb2dyYW0sIG5hbWVSZXNvbHZlcik7CiAgICAg
Q0hFQ0tfUEFTUyhzeW50aGVzaXplQ29uc3RydWN0b3JzLCBwcm9ncmFtKTsKLSAgICBDSEVDS19Q
QVNTKHJlc29sdmVDYWxsc0luRnVuY3Rpb25zLCBwcm9ncmFtLCBuYW1lUmVzb2x2ZXIpOwogICAg
IENIRUNLX1BBU1MoY2hlY2tEdXBsaWNhdGVGdW5jdGlvbnMsIHByb2dyYW0pOwogCiAgICAgQ0hF
Q0tfUEFTUyhjaGVjaywgcHJvZ3JhbSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>373519</attachid>
            <date>2019-07-05 12:00:24 -0700</date>
            <delta_ts>2019-07-05 12:01:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-199474-20190705120024.patch</filename>
            <type>text/plain</type>
            <size>21204</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ3MTY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmM5ZDE3MmQ2NDkxM2U4
NjI1YjgyY2VkZDBjNjIxYzRiNDcxNzM2NC4uZTI3YWU0ZjYzZTBmMTk3ZDFkMTQ5NWE4YWQxZDc0
OTU0OGNhYzYwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDE5LTA3LTAzICBSb2Jp
biBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+CisKKyAgICAgICAgW1dITFNMXSBSZW1v
dmUgdGhlIHBoYXNlIHJlc29sdmVDYWxsc0luRnVuY3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTk0NzQKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhc3Mgb25seSBzdG9yZXMgaW50byBl
YWNoIHByb3BlcnR5IGFjY2VzcyBhbmQgY2FsbCBleHByZXNzaW9uIHZlY3RvcnMgb2YgYWxsIHRo
ZSBmdW5jdGlvbnMgaXQgbWlnaHQgYmUgY2FsbGluZywgZm9yIHVzZSBieSB0aGUgQ2hlY2tlciBh
ZnRlcndhcmRzLgorICAgICAgICBCdXQgdGhlIGNoZWNrZXIgaXMgcGVyZmVjdGx5IGFibGUgdG8g
Y29tcHV0ZSBhIHBvaW50ZXIgdG8gdGhlc2UgdmVjdG9ycyBieSBpdHNlbGYuCisgICAgICAgIFNv
IGJ5IHJlbW92aW5nIHRoaXMgcGFzcywgd2UgZ2FpbiB0aGUgZm9sbG93aW5nOgorICAgICAgICAt
IE9uZSBsZXNzIHBhc3Mgb3ZlciB0aGUgQVNUCisgICAgICAgIC0gTm8gbmVlZCB0byBjb3B5IHRo
ZXNlIHZlY3RvcnMgKHdoaWNoIGNhbiBiZSBsYXJnZSBmb3IgaGVhdmlseSBvdmVybG9hZGVkIGZ1
bmN0aW9ucywgb2Ygd2hpY2ggdGhlcmUgYXJlIHF1aXRlIGEgZmV3IGluIHRoZSBzdGRsaWIpCisg
ICAgICAgIC0gTm8gbmVlZCB0byBoYXZlIHRoZXNlIHZlY3RvcnMgaW4gdGhlIGV4cHJlc3Npb25z
LCBzYXZpbmcgMjQgYnl0ZXMgcGVyIENhbGxFeHByZXNzaW9uIGFuZCA3MiBieXRlcyBwZXIgUHJv
cGVydHlBY2Nlc3NFeHByZXNzaW9uCisgICAgICAgIC0gTm8gbmVlZCB0byBhbGxvY2F0ZSBhbmQg
dGhlbiBkZXN0cm95IHRoZXNlIHZlY3RvcnMuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIGFzIHRo
ZXJlIGlzIG5vIGludGVuZGVkIGZ1bmN0aW9uYWwgY2hhbmdlLgorCisgICAgICAgICogTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQ2FsbEV4cHJlc3Npb24uaDoKKyAgICAgICAgKFdlYkNv
cmU6OldITFNMOjpBU1Q6OkNhbGxFeHByZXNzaW9uOjpjYXN0UmV0dXJuVHlwZSk6CisgICAgICAg
ICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9u
Lmg6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xBdXRvSW5pdGlhbGl6ZVZh
cmlhYmxlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QXV0b0luaXRpYWxpemU6OnZp
c2l0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNrZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OnJlc29sdmVGdW5jdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpXSExTTDo6Q2hlY2tlcjo6ZmluaXNoVmlzaXRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6
V0hMU0w6OkNoZWNrZXI6OnZpc2l0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9X
SExTTE5hbWVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6TmFtZVJlc29s
dmVyOjpOYW1lUmVzb2x2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6Ok5hbWVSZXNvbHZl
cjo6dmlzaXQpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMTmFtZVJlc29s
dmVyLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQcmVwYXJlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpwcmVwYXJlU2hhcmVkKToKKwogMjAxOS0wNy0wNSAg
UnlhbiBIYWRkYWQgIDxyeWFuaGFkZGFkQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2Vk
LCByb2xsaW5nIG91dCByMjQ3MTE1LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQ2FsbEV4cHJlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTENhbGxFeHByZXNzaW9uLmgKaW5kZXggMWEw
ZDAyNzRlNGQzYzcyZWQyZjZjMGM4YWIxZGUxOTRkNWZlNTQ0Yy4uY2JjZGJmOWQwOGVhNjdkMWEz
ZGFjZjc5MWVkOGY0M2Y2NjYwNWZkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQ2FsbEV4cHJlc3Npb24uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xDYWxsRXhwcmVzc2lvbi5oCkBAIC02
NywxNCArNjcsNiBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzQ2FzdCgpIHsgcmV0dXJuIG1fY2Fz
dFJldHVyblR5cGU7IH0KICAgICBOYW1lZFR5cGUqIGNhc3RSZXR1cm5UeXBlKCkgeyByZXR1cm4g
bV9jYXN0UmV0dXJuVHlwZTsgfQotICAgIGJvb2wgaGFzT3ZlcmxvYWRzKCkgY29uc3QgeyByZXR1
cm4gc3RhdGljX2Nhc3Q8Ym9vbD4obV9vdmVybG9hZHMpOyB9Ci0gICAgT3B0aW9uYWw8VmVjdG9y
PHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8RnVuY3Rpb25EZWNsYXJhdGlvbj4sIDE+PiYgb3Zlcmxv
YWRzKCkgeyByZXR1cm4gbV9vdmVybG9hZHM7IH0KLSAgICB2b2lkIHNldE92ZXJsb2Fkcyhjb25z
dCBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxGdW5jdGlvbkRlY2xhcmF0aW9uPiwgMT4m
IG92ZXJsb2FkcykKLSAgICB7Ci0gICAgICAgIGFzc2VydCghaGFzT3ZlcmxvYWRzKCkpOwotICAg
ICAgICBtX292ZXJsb2FkcyA9IG92ZXJsb2FkczsKLSAgICB9Ci0KICAgICBGdW5jdGlvbkRlY2xh
cmF0aW9uKiBmdW5jdGlvbigpIHsgcmV0dXJuIG1fZnVuY3Rpb247IH0KIAogICAgIHZvaWQgc2V0
RnVuY3Rpb24oRnVuY3Rpb25EZWNsYXJhdGlvbiYgZnVuY3Rpb25EZWNsYXJhdGlvbikKQEAgLTg2
LDcgKzc4LDYgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBTdHJpbmcgbV9uYW1lOwogICAgIFZl
Y3RvcjxVbmlxdWVSZWY8RXhwcmVzc2lvbj4+IG1fYXJndW1lbnRzOwotICAgIE9wdGlvbmFsPFZl
Y3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPEZ1bmN0aW9uRGVjbGFyYXRpb24+LCAxPj4gbV9v
dmVybG9hZHM7CiAgICAgRnVuY3Rpb25EZWNsYXJhdGlvbiogbV9mdW5jdGlvbiB7IG51bGxwdHIg
fTsKICAgICBOYW1lZFR5cGUqIG1fY2FzdFJldHVyblR5cGUgeyBudWxscHRyIH07CiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUHJv
cGVydHlBY2Nlc3NFeHByZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24uaAppbmRleCBiYjBjMzAxMmVl
YjIwMzkwM2E0MzAwMjAzMjhjOGI5NDgyOWI2ODRkLi4zNGQxMmExZTlkZDliNmMzNjIxMWQ2NjJh
ZjRiOTcxYjliNzdlOWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xQcm9wZXJ0eUFjY2Vzc0V4cHJl
c3Npb24uaApAQCAtNTcsMjcgKzU3LDExIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0cmluZyBz
ZXR0ZXJGdW5jdGlvbk5hbWUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBTdHJpbmcgYW5kZXJG
dW5jdGlvbk5hbWUoKSBjb25zdCA9IDA7CiAKLSAgICBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3Jh
cHBlcjxGdW5jdGlvbkRlY2xhcmF0aW9uPiwgMT4mIHBvc3NpYmxlR2V0dGVyT3ZlcmxvYWRzKCkg
eyByZXR1cm4gbV9wb3NzaWJsZUdldHRlck92ZXJsb2FkczsgfQotICAgIFZlY3RvcjxzdGQ6OnJl
ZmVyZW5jZV93cmFwcGVyPEZ1bmN0aW9uRGVjbGFyYXRpb24+LCAxPiYgcG9zc2libGVTZXR0ZXJP
dmVybG9hZHMoKSB7IHJldHVybiBtX3Bvc3NpYmxlU2V0dGVyT3ZlcmxvYWRzOyB9Ci0gICAgVmVj
dG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8RnVuY3Rpb25EZWNsYXJhdGlvbj4sIDE+JiBwb3Nz
aWJsZUFuZGVyT3ZlcmxvYWRzKCkgeyByZXR1cm4gbV9wb3NzaWJsZUFuZGVyT3ZlcmxvYWRzOyB9
CiAgICAgRnVuY3Rpb25EZWNsYXJhdGlvbiogZ2V0dGVyRnVuY3Rpb24oKSB7IHJldHVybiBtX2dl
dHRlckZ1bmN0aW9uOyB9CiAgICAgRnVuY3Rpb25EZWNsYXJhdGlvbiogYW5kZXJGdW5jdGlvbigp
IHsgcmV0dXJuIG1fYW5kZXJGdW5jdGlvbjsgfQogICAgIEZ1bmN0aW9uRGVjbGFyYXRpb24qIHRo
cmVhZEFuZGVyRnVuY3Rpb24oKSB7IHJldHVybiBtX3RocmVhZEFuZGVyRnVuY3Rpb247IH0KICAg
ICBGdW5jdGlvbkRlY2xhcmF0aW9uKiBzZXR0ZXJGdW5jdGlvbigpIHsgcmV0dXJuIG1fc2V0dGVy
RnVuY3Rpb247IH0KIAotICAgIHZvaWQgc2V0UG9zc2libGVHZXR0ZXJPdmVybG9hZHMoY29uc3Qg
VmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8RnVuY3Rpb25EZWNsYXJhdGlvbj4sIDE+JiBv
dmVybG9hZHMpCi0gICAgewotICAgICAgICBtX3Bvc3NpYmxlR2V0dGVyT3ZlcmxvYWRzID0gb3Zl
cmxvYWRzOwotICAgIH0KLSAgICB2b2lkIHNldFBvc3NpYmxlQW5kZXJPdmVybG9hZHMoY29uc3Qg
VmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8RnVuY3Rpb25EZWNsYXJhdGlvbj4sIDE+JiBv
dmVybG9hZHMpCi0gICAgewotICAgICAgICBtX3Bvc3NpYmxlQW5kZXJPdmVybG9hZHMgPSBvdmVy
bG9hZHM7Ci0gICAgfQotICAgIHZvaWQgc2V0UG9zc2libGVTZXR0ZXJPdmVybG9hZHMoY29uc3Qg
VmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8RnVuY3Rpb25EZWNsYXJhdGlvbj4sIDE+JiBv
dmVybG9hZHMpCi0gICAgewotICAgICAgICBtX3Bvc3NpYmxlU2V0dGVyT3ZlcmxvYWRzID0gb3Zl
cmxvYWRzOwotICAgIH0KLQogICAgIHZvaWQgc2V0R2V0dGVyRnVuY3Rpb24oRnVuY3Rpb25EZWNs
YXJhdGlvbiogZ2V0dGVyRnVuY3Rpb24pCiAgICAgewogICAgICAgICBtX2dldHRlckZ1bmN0aW9u
ID0gZ2V0dGVyRnVuY3Rpb247CkBAIC0xMDQsOSArODgsNiBAQCBwdWJsaWM6CiAKIHByaXZhdGU6
CiAgICAgVW5pcXVlUmVmPEV4cHJlc3Npb24+IG1fYmFzZTsKLSAgICBWZWN0b3I8c3RkOjpyZWZl
cmVuY2Vfd3JhcHBlcjxGdW5jdGlvbkRlY2xhcmF0aW9uPiwgMT4gbV9wb3NzaWJsZUdldHRlck92
ZXJsb2FkczsKLSAgICBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxGdW5jdGlvbkRlY2xh
cmF0aW9uPiwgMT4gbV9wb3NzaWJsZVNldHRlck92ZXJsb2FkczsKLSAgICBWZWN0b3I8c3RkOjpy
ZWZlcmVuY2Vfd3JhcHBlcjxGdW5jdGlvbkRlY2xhcmF0aW9uPiwgMT4gbV9wb3NzaWJsZUFuZGVy
T3ZlcmxvYWRzOwogICAgIEZ1bmN0aW9uRGVjbGFyYXRpb24qIG1fZ2V0dGVyRnVuY3Rpb24geyBu
dWxscHRyIH07CiAgICAgRnVuY3Rpb25EZWNsYXJhdGlvbiogbV9hbmRlckZ1bmN0aW9uIHsgbnVs
bHB0ciB9OwogICAgIEZ1bmN0aW9uRGVjbGFyYXRpb24qIG1fdGhyZWFkQW5kZXJGdW5jdGlvbiB7
IG51bGxwdHIgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML1dITFNMQXV0b0luaXRpYWxpemVWYXJpYWJsZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvV0hMU0xBdXRvSW5pdGlhbGl6ZVZhcmlhYmxlcy5jcHAKaW5kZXgg
ZDExYjkwN2FmM2RkM2RjZjY5OTg0NGRiM2EyN2JiZmZjNzljNDQ4My4uODE2NDcwOTM1NjdlY2Vm
NzhjYjU3MjU0YTk5YjE2NzUyYmRhMzk4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvV0hMU0xBdXRvSW5pdGlhbGl6ZVZhcmlhYmxlcy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xBdXRvSW5pdGlhbGl6ZVZh
cmlhYmxlcy5jcHAKQEAgLTcyLDkgKzcyLDggQEAgcHJpdmF0ZToKICAgICAgICAgYXV0byBjYWxs
RXhwcmVzc2lvbiA9IHN0ZDo6bWFrZV91bmlxdWU8QVNUOjpDYWxsRXhwcmVzc2lvbj4odmFyaWFi
bGVEZWNsYXJhdGlvbi5vcmlnaW4oKSwgV1RGTW92ZShmdW5jdGlvbk5hbWUpLCBWZWN0b3I8VW5p
cXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4+KCkpOwogICAgICAgICBjYWxsRXhwcmVzc2lvbi0+c2V0
VHlwZSh0eXBlLT5jbG9uZSgpKTsKICAgICAgICAgY2FsbEV4cHJlc3Npb24tPnNldFR5cGVBbm5v
dGF0aW9uKEFTVDo6UmlnaHRWYWx1ZSgpKTsKLSAgICAgICAgY2FsbEV4cHJlc3Npb24tPnNldE92
ZXJsb2FkcyhtX2Nhc3RGdW5jdGlvbnMpOwogICAgICAgICBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vf
d3JhcHBlcjxSZXNvbHZpbmdUeXBlPj4gYXJndW1lbnRUeXBlczsKLSAgICAgICAgYXV0byogZnVu
Y3Rpb24gPSByZXNvbHZlRnVuY3Rpb25PdmVybG9hZCgqY2FsbEV4cHJlc3Npb24tPm92ZXJsb2Fk
cygpLCBhcmd1bWVudFR5cGVzLCB0eXBlKTsKKyAgICAgICAgYXV0byogZnVuY3Rpb24gPSByZXNv
bHZlRnVuY3Rpb25PdmVybG9hZChtX2Nhc3RGdW5jdGlvbnMsIGFyZ3VtZW50VHlwZXMsIHR5cGUp
OwogICAgICAgICBpZiAoIWZ1bmN0aW9uKSB7CiAgICAgICAgICAgICBzZXRFcnJvcigpOwogICAg
ICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvV0hMU0xDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML1dITFNMQ2hlY2tlci5jcHAKaW5kZXggZWIxZmE5ODNiZGQ2ZGFmMDM3OGNlOWEyOWNi
N2RhODY1NDE3ZjMzOC4uY2M2Mzg4NGU1ZTBlN2RlNzk0YjlkMzEwNGUxMGY5MGIyMjc1M2RmYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDaGVj
a2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENo
ZWNrZXIuY3BwCkBAIC00Niw2ICs0Niw3IEBACiAjaW5jbHVkZSAiV0hMU0xMb2dpY2FsTm90RXhw
cmVzc2lvbi5oIgogI2luY2x1ZGUgIldITFNMTWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbi5o
IgogI2luY2x1ZGUgIldITFNMTWFrZVBvaW50ZXJFeHByZXNzaW9uLmgiCisjaW5jbHVkZSAiV0hM
U0xOYW1lQ29udGV4dC5oIgogI2luY2x1ZGUgIldITFNMUG9pbnRlclR5cGUuaCIKICNpbmNsdWRl
ICJXSExTTFByb2dyYW0uaCIKICNpbmNsdWRlICJXSExTTFJlYWRNb2RpZnlXcml0ZUV4cHJlc3Np
b24uaCIKQEAgLTIxNSwxMCArMjE2LDEyIEBAIHN0YXRpYyBPcHRpb25hbDxBU1Q6Ok5hdGl2ZUZ1
bmN0aW9uRGVjbGFyYXRpb24+IHJlc29sdmVCeUluc3RhbnRpYXRpb24oY29uc3QgU3RyCiAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKIH0KIAotc3RhdGljIEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlv
biogcmVzb2x2ZUZ1bmN0aW9uKFByb2dyYW0mIHByb2dyYW0sIFZlY3RvcjxzdGQ6OnJlZmVyZW5j
ZV93cmFwcGVyPEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbj4sIDE+JiBwb3NzaWJsZU92ZXJsb2Fk
cywgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UmVzb2x2aW5nVHlwZT4+JiB0eXBlcywg
Y29uc3QgU3RyaW5nJiBuYW1lLCBMZXhlcjo6VG9rZW4gb3JpZ2luLCBjb25zdCBJbnRyaW5zaWNz
JiBpbnRyaW5zaWNzLCBBU1Q6Ok5hbWVkVHlwZSogY2FzdFJldHVyblR5cGUgPSBudWxscHRyKQor
c3RhdGljIEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbiogcmVzb2x2ZUZ1bmN0aW9uKFByb2dyYW0m
IHByb2dyYW0sIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPEFTVDo6RnVuY3Rpb25EZWNs
YXJhdGlvbj4sIDE+KiBwb3NzaWJsZU92ZXJsb2FkcywgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dy
YXBwZXI8UmVzb2x2aW5nVHlwZT4+JiB0eXBlcywgY29uc3QgU3RyaW5nJiBuYW1lLCBMZXhlcjo6
VG9rZW4gb3JpZ2luLCBjb25zdCBJbnRyaW5zaWNzJiBpbnRyaW5zaWNzLCBBU1Q6Ok5hbWVkVHlw
ZSogY2FzdFJldHVyblR5cGUgPSBudWxscHRyKQogewotICAgIGlmIChBU1Q6OkZ1bmN0aW9uRGVj
bGFyYXRpb24qIGZ1bmN0aW9uID0gcmVzb2x2ZUZ1bmN0aW9uT3ZlcmxvYWQocG9zc2libGVPdmVy
bG9hZHMsIHR5cGVzLCBjYXN0UmV0dXJuVHlwZSkpCi0gICAgICAgIHJldHVybiBmdW5jdGlvbjsK
KyAgICBpZiAocG9zc2libGVPdmVybG9hZHMpIHsKKyAgICAgICAgaWYgKEFTVDo6RnVuY3Rpb25E
ZWNsYXJhdGlvbiogZnVuY3Rpb24gPSByZXNvbHZlRnVuY3Rpb25PdmVybG9hZCgqcG9zc2libGVP
dmVybG9hZHMsIHR5cGVzLCBjYXN0UmV0dXJuVHlwZSkpCisgICAgICAgICAgICByZXR1cm4gZnVu
Y3Rpb247CisgICAgfQogCiAgICAgaWYgKGF1dG8gbmV3RnVuY3Rpb24gPSByZXNvbHZlQnlJbnN0
YW50aWF0aW9uKG5hbWUsIG9yaWdpbiwgdHlwZXMsIGludHJpbnNpY3MpKSB7CiAgICAgICAgIHBy
b2dyYW0uYXBwZW5kKFdURk1vdmUoKm5ld0Z1bmN0aW9uKSk7CkBAIC0xMDE5LDcgKzEwMjIsMTAg
QEAgdm9pZCBDaGVja2VyOjpmaW5pc2hWaXNpdGluZyhBU1Q6OlByb3BlcnR5QWNjZXNzRXhwcmVz
c2lvbiYgcHJvcGVydHlBY2Nlc3NFeHByZXMKICAgICAgICAgVmVjdG9yPHN0ZDo6cmVmZXJlbmNl
X3dyYXBwZXI8UmVzb2x2aW5nVHlwZT4+IGdldHRlckFyZ3VtZW50VHlwZXMgeyBiYXNlSW5mby0+
cmVzb2x2aW5nVHlwZSB9OwogICAgICAgICBpZiAoYWRkaXRpb25hbEFyZ3VtZW50VHlwZSkKICAg
ICAgICAgICAgIGdldHRlckFyZ3VtZW50VHlwZXMuYXBwZW5kKCphZGRpdGlvbmFsQXJndW1lbnRU
eXBlKTsKLSAgICAgICAgaWYgKChnZXR0ZXJGdW5jdGlvbiA9IHJlc29sdmVGdW5jdGlvbihtX3By
b2dyYW0sIHByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbi5wb3NzaWJsZUdldHRlck92ZXJsb2Fkcygp
LCBnZXR0ZXJBcmd1bWVudFR5cGVzLCBwcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24uZ2V0dGVyRnVu
Y3Rpb25OYW1lKCksIHByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbi5vcmlnaW4oKSwgbV9pbnRyaW5z
aWNzKSkpCisgICAgICAgIGF1dG8gZ2V0dGVyTmFtZSA9IHByb3BlcnR5QWNjZXNzRXhwcmVzc2lv
bi5nZXR0ZXJGdW5jdGlvbk5hbWUoKTsKKyAgICAgICAgYXV0byogZ2V0dGVyRnVuY3Rpb25zID0g
bV9wcm9ncmFtLm5hbWVDb250ZXh0KCkuZ2V0RnVuY3Rpb25zKGdldHRlck5hbWUpOworICAgICAg
ICBnZXR0ZXJGdW5jdGlvbiA9IHJlc29sdmVGdW5jdGlvbihtX3Byb2dyYW0sIGdldHRlckZ1bmN0
aW9ucywgZ2V0dGVyQXJndW1lbnRUeXBlcywgZ2V0dGVyTmFtZSwgcHJvcGVydHlBY2Nlc3NFeHBy
ZXNzaW9uLm9yaWdpbigpLCBtX2ludHJpbnNpY3MpOworICAgICAgICBpZiAoZ2V0dGVyRnVuY3Rp
b24pCiAgICAgICAgICAgICBnZXR0ZXJSZXR1cm5UeXBlID0gJmdldHRlckZ1bmN0aW9uLT50eXBl
KCk7CiAgICAgfQogCkBAIC0xMDMyLDcgKzEwMzgsMTAgQEAgdm9pZCBDaGVja2VyOjpmaW5pc2hW
aXNpdGluZyhBU1Q6OlByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbiYgcHJvcGVydHlBY2Nlc3NFeHBy
ZXMKICAgICAgICAgICAgIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFJlc29sdmluZ1R5
cGU+PiBhbmRlckFyZ3VtZW50VHlwZXMgeyBhcmd1bWVudFR5cGUgfTsKICAgICAgICAgICAgIGlm
IChhZGRpdGlvbmFsQXJndW1lbnRUeXBlKQogICAgICAgICAgICAgICAgIGFuZGVyQXJndW1lbnRU
eXBlcy5hcHBlbmQoKmFkZGl0aW9uYWxBcmd1bWVudFR5cGUpOwotICAgICAgICAgICAgaWYgKChh
bmRlckZ1bmN0aW9uID0gcmVzb2x2ZUZ1bmN0aW9uKG1fcHJvZ3JhbSwgcHJvcGVydHlBY2Nlc3NF
eHByZXNzaW9uLnBvc3NpYmxlQW5kZXJPdmVybG9hZHMoKSwgYW5kZXJBcmd1bWVudFR5cGVzLCBw
cm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24uYW5kZXJGdW5jdGlvbk5hbWUoKSwgcHJvcGVydHlBY2Nl
c3NFeHByZXNzaW9uLm9yaWdpbigpLCBtX2ludHJpbnNpY3MpKSkKKyAgICAgICAgICAgIGF1dG8g
YW5kZXJOYW1lID0gcHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uLmFuZGVyRnVuY3Rpb25OYW1lKCk7
CisgICAgICAgICAgICBhdXRvKiBhbmRlckZ1bmN0aW9ucyA9IG1fcHJvZ3JhbS5uYW1lQ29udGV4
dCgpLmdldEZ1bmN0aW9ucyhhbmRlck5hbWUpOworICAgICAgICAgICAgYW5kZXJGdW5jdGlvbiA9
IHJlc29sdmVGdW5jdGlvbihtX3Byb2dyYW0sIGFuZGVyRnVuY3Rpb25zLCBhbmRlckFyZ3VtZW50
VHlwZXMsIGFuZGVyTmFtZSwgcHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uLm9yaWdpbigpLCBtX2lu
dHJpbnNpY3MpOworICAgICAgICAgICAgaWYgKGFuZGVyRnVuY3Rpb24pCiAgICAgICAgICAgICAg
ICAgYW5kZXJSZXR1cm5UeXBlID0gJmRvd25jYXN0PEFTVDo6UG9pbnRlclR5cGU+KGFuZGVyRnVu
Y3Rpb24tPnR5cGUoKSkuZWxlbWVudFR5cGUoKTsgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTgxNjQgRW5mb3JjZSB0aGUgcmV0dXJuIG9mIGFuZGVy
cyB3aWxsIGFsd2F5cyBiZSBhIHBvaW50ZXIKICAgICAgICAgfQogICAgIH0KQEAgLTEwNDQsNyAr
MTA1MywxMCBAQCB2b2lkIENoZWNrZXI6OmZpbmlzaFZpc2l0aW5nKEFTVDo6UHJvcGVydHlBY2Nl
c3NFeHByZXNzaW9uJiBwcm9wZXJ0eUFjY2Vzc0V4cHJlcwogICAgICAgICBWZWN0b3I8c3RkOjpy
ZWZlcmVuY2Vfd3JhcHBlcjxSZXNvbHZpbmdUeXBlPj4gdGhyZWFkQW5kZXJBcmd1bWVudFR5cGVz
IHsgYXJndW1lbnRUeXBlIH07CiAgICAgICAgIGlmIChhZGRpdGlvbmFsQXJndW1lbnRUeXBlKQog
ICAgICAgICAgICAgdGhyZWFkQW5kZXJBcmd1bWVudFR5cGVzLmFwcGVuZCgqYWRkaXRpb25hbEFy
Z3VtZW50VHlwZSk7Ci0gICAgICAgIGlmICgodGhyZWFkQW5kZXJGdW5jdGlvbiA9IHJlc29sdmVG
dW5jdGlvbihtX3Byb2dyYW0sIHByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbi5wb3NzaWJsZUFuZGVy
T3ZlcmxvYWRzKCksIHRocmVhZEFuZGVyQXJndW1lbnRUeXBlcywgcHJvcGVydHlBY2Nlc3NFeHBy
ZXNzaW9uLmFuZGVyRnVuY3Rpb25OYW1lKCksIHByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbi5vcmln
aW4oKSwgbV9pbnRyaW5zaWNzKSkpCisgICAgICAgIGF1dG8gYW5kZXJOYW1lID0gcHJvcGVydHlB
Y2Nlc3NFeHByZXNzaW9uLmFuZGVyRnVuY3Rpb25OYW1lKCk7CisgICAgICAgIGF1dG8qIGFuZGVy
RnVuY3Rpb25zID0gbV9wcm9ncmFtLm5hbWVDb250ZXh0KCkuZ2V0RnVuY3Rpb25zKGFuZGVyTmFt
ZSk7CisgICAgICAgIHRocmVhZEFuZGVyRnVuY3Rpb24gPSByZXNvbHZlRnVuY3Rpb24obV9wcm9n
cmFtLCBhbmRlckZ1bmN0aW9ucywgdGhyZWFkQW5kZXJBcmd1bWVudFR5cGVzLCBhbmRlck5hbWUs
IHByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbi5vcmlnaW4oKSwgbV9pbnRyaW5zaWNzKTsKKyAgICAg
ICAgaWYgKHRocmVhZEFuZGVyRnVuY3Rpb24pCiAgICAgICAgICAgICB0aHJlYWRBbmRlclJldHVy
blR5cGUgPSAmZG93bmNhc3Q8QVNUOjpQb2ludGVyVHlwZT4odGhyZWFkQW5kZXJGdW5jdGlvbi0+
dHlwZSgpKS5lbGVtZW50VHlwZSgpOyAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE5ODE2NCBFbmZvcmNlIHRoZSByZXR1cm4gb2YgYW5kZXJzIHdpbGwg
YWx3YXlzIGJlIGEgcG9pbnRlcgogICAgIH0KIApAQCAtMTA4OCw3ICsxMTAwLDkgQEAgdm9pZCBD
aGVja2VyOjpmaW5pc2hWaXNpdGluZyhBU1Q6OlByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbiYgcHJv
cGVydHlBY2Nlc3NFeHByZXMKICAgICAgICAgaWYgKGFkZGl0aW9uYWxBcmd1bWVudFR5cGUpCiAg
ICAgICAgICAgICBzZXR0ZXJBcmd1bWVudFR5cGVzLmFwcGVuZCgqYWRkaXRpb25hbEFyZ3VtZW50
VHlwZSk7CiAgICAgICAgIHNldHRlckFyZ3VtZW50VHlwZXMuYXBwZW5kKGZpZWxkUmVzb2x2aW5n
VHlwZSk7Ci0gICAgICAgIHNldHRlckZ1bmN0aW9uID0gcmVzb2x2ZUZ1bmN0aW9uKG1fcHJvZ3Jh
bSwgcHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uLnBvc3NpYmxlU2V0dGVyT3ZlcmxvYWRzKCksIHNl
dHRlckFyZ3VtZW50VHlwZXMsIHByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbi5zZXR0ZXJGdW5jdGlv
bk5hbWUoKSwgcHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uLm9yaWdpbigpLCBtX2ludHJpbnNpY3Mp
OworICAgICAgICBhdXRvIHNldHRlck5hbWUgPSBwcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24uc2V0
dGVyRnVuY3Rpb25OYW1lKCk7CisgICAgICAgIGF1dG8qIHNldHRlckZ1bmN0aW9ucyA9IG1fcHJv
Z3JhbS5uYW1lQ29udGV4dCgpLmdldEZ1bmN0aW9ucyhzZXR0ZXJOYW1lKTsKKyAgICAgICAgc2V0
dGVyRnVuY3Rpb24gPSByZXNvbHZlRnVuY3Rpb24obV9wcm9ncmFtLCBzZXR0ZXJGdW5jdGlvbnMs
IHNldHRlckFyZ3VtZW50VHlwZXMsIHNldHRlck5hbWUsIHByb3BlcnR5QWNjZXNzRXhwcmVzc2lv
bi5vcmlnaW4oKSwgbV9pbnRyaW5zaWNzKTsKICAgICAgICAgaWYgKHNldHRlckZ1bmN0aW9uKQog
ICAgICAgICAgICAgc2V0dGVyUmV0dXJuVHlwZSA9ICZzZXR0ZXJGdW5jdGlvbi0+dHlwZSgpOwog
ICAgIH0KQEAgLTE0NjksOCArMTQ4MywyMiBAQCB2b2lkIENoZWNrZXI6OnZpc2l0KEFTVDo6Q2Fs
bEV4cHJlc3Npb24mIGNhbGxFeHByZXNzaW9uKQogICAgIC8vIERvbid0IHJlY3Vyc2Ugb24gdGhl
IGNhc3RSZXR1cm5UeXBlLCBiZWNhdXNlIGl0J3MgZ3VhcmFudGVlZCB0byBiZSBhIE5hbWVkVHlw
ZSwgd2hpY2ggd2lsbCBnZXQgdmlzaXRlZCBsYXRlci4KICAgICAvLyBXZSBkb24ndCB3YW50IHRv
IHJlY3Vyc2UgdG8gdGhlIHNhbWUgbm9kZSB0d2ljZS4KIAotICAgIEFTU0VSVChjYWxsRXhwcmVz
c2lvbi5oYXNPdmVybG9hZHMoKSk7Ci0gICAgYXV0byogZnVuY3Rpb24gPSByZXNvbHZlRnVuY3Rp
b24obV9wcm9ncmFtLCAqY2FsbEV4cHJlc3Npb24ub3ZlcmxvYWRzKCksIHR5cGVzLCBjYWxsRXhw
cmVzc2lvbi5uYW1lKCksIGNhbGxFeHByZXNzaW9uLm9yaWdpbigpLCBtX2ludHJpbnNpY3MsIGNh
bGxFeHByZXNzaW9uLmNhc3RSZXR1cm5UeXBlKCkpOworICAgIE5hbWVDb250ZXh0JiBuYW1lQ29u
dGV4dCA9IG1fcHJvZ3JhbS5uYW1lQ29udGV4dCgpOworICAgIGF1dG8qIGZ1bmN0aW9ucyA9IG5h
bWVDb250ZXh0LmdldEZ1bmN0aW9ucyhjYWxsRXhwcmVzc2lvbi5uYW1lKCkpOworICAgIGlmICgh
ZnVuY3Rpb25zKSB7CisgICAgICAgIGlmIChhdXRvKiB0eXBlcyA9IG5hbWVDb250ZXh0LmdldFR5
cGVzKGNhbGxFeHByZXNzaW9uLm5hbWUoKSkpIHsKKyAgICAgICAgICAgIGlmICh0eXBlcy0+c2l6
ZSgpID09IDEpIHsKKyAgICAgICAgICAgICAgICBpZiAoKGZ1bmN0aW9ucyA9IG5hbWVDb250ZXh0
LmdldEZ1bmN0aW9ucygib3BlcmF0b3IgY2FzdCJfc3RyKSkpCisgICAgICAgICAgICAgICAgICAg
IGNhbGxFeHByZXNzaW9uLnNldENhc3REYXRhKCgqdHlwZXMpWzBdLmdldCgpKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoIWZ1bmN0aW9ucykgeworICAgICAgICBz
ZXRFcnJvcigpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byogZnVuY3Rpb24g
PSByZXNvbHZlRnVuY3Rpb24obV9wcm9ncmFtLCBmdW5jdGlvbnMsIHR5cGVzLCBjYWxsRXhwcmVz
c2lvbi5uYW1lKCksIGNhbGxFeHByZXNzaW9uLm9yaWdpbigpLCBtX2ludHJpbnNpY3MsIGNhbGxF
eHByZXNzaW9uLmNhc3RSZXR1cm5UeXBlKCkpOwogICAgIGlmICghZnVuY3Rpb24pIHsKICAgICAg
ICAgc2V0RXJyb3IoKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xOYW1lUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xOYW1lUmVzb2x2ZXIuY3BwCmluZGV4IDAw
Njc0Nzg4ZmRhYTE0YjE4MzE4NTY4NGI0NTRkZTYyZDhhOGY1YzQuLjA2OWI5M2NjMTBkNTM4Zjhl
ZTI3MGRhNjc2ZDM0YjBjNDAyYzU2MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML1dITFNMTmFtZVJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTE5hbWVSZXNvbHZlci5jcHAKQEAgLTYxLDcgKzYx
LDYgQEAgTmFtZVJlc29sdmVyOjpOYW1lUmVzb2x2ZXIoTmFtZVJlc29sdmVyJiBwYXJlbnRSZXNv
bHZlciwgTmFtZUNvbnRleHQmIG5hbWVDb250ZXgKICAgICA6IG1fbmFtZUNvbnRleHQobmFtZUNv
bnRleHQpCiAgICAgLCBtX3BhcmVudE5hbWVSZXNvbHZlcigmcGFyZW50UmVzb2x2ZXIpCiB7Ci0g
ICAgbV9pc1Jlc29sdmluZ0NhbGxzID0gcGFyZW50UmVzb2x2ZXIubV9pc1Jlc29sdmluZ0NhbGxz
OwogICAgIHNldEN1cnJlbnRGdW5jdGlvbkRlZmluaXRpb24ocGFyZW50UmVzb2x2ZXIubV9jdXJy
ZW50RnVuY3Rpb24pOwogfQogCkBAIC03Myw5ICs3Miw2IEBAIE5hbWVSZXNvbHZlcjo6fk5hbWVS
ZXNvbHZlcigpCiAKIHZvaWQgTmFtZVJlc29sdmVyOjp2aXNpdChBU1Q6OlR5cGVSZWZlcmVuY2Um
IHR5cGVSZWZlcmVuY2UpCiB7Ci0gICAgaWYgKG1faXNSZXNvbHZpbmdDYWxscykKLSAgICAgICAg
cmV0dXJuOwotCiAgICAgU2NvcGVkU2V0QWRkZXI8QVNUOjpUeXBlUmVmZXJlbmNlKj4gYWRkZXIo
bV90eXBlUmVmZXJlbmNlcywgJnR5cGVSZWZlcmVuY2UpOwogICAgIGlmICghYWRkZXIuaXNOZXdF
bnRyeSgpKSB7CiAgICAgICAgIHNldEVycm9yKCk7CkBAIC0xOTksMTQgKzE5NSw2IEBAIHZvaWQg
TmFtZVJlc29sdmVyOjp2aXNpdChBU1Q6OlJldHVybiYgcmV0dXJuU3RhdGVtZW50KQogCiB2b2lk
IE5hbWVSZXNvbHZlcjo6dmlzaXQoQVNUOjpQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24mIHByb3Bl
cnR5QWNjZXNzRXhwcmVzc2lvbikKIHsKLSAgICBpZiAobV9pc1Jlc29sdmluZ0NhbGxzKSB7Ci0g
ICAgICAgIGlmIChhdXRvKiBnZXR0ZXJGdW5jdGlvbnMgPSBtX25hbWVDb250ZXh0LmdldEZ1bmN0
aW9ucyhwcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24uZ2V0dGVyRnVuY3Rpb25OYW1lKCkpKQotICAg
ICAgICAgICAgcHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uLnNldFBvc3NpYmxlR2V0dGVyT3Zlcmxv
YWRzKCpnZXR0ZXJGdW5jdGlvbnMpOwotICAgICAgICBpZiAoYXV0byogc2V0dGVyRnVuY3Rpb25z
ID0gbV9uYW1lQ29udGV4dC5nZXRGdW5jdGlvbnMocHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uLnNl
dHRlckZ1bmN0aW9uTmFtZSgpKSkKLSAgICAgICAgICAgIHByb3BlcnR5QWNjZXNzRXhwcmVzc2lv
bi5zZXRQb3NzaWJsZVNldHRlck92ZXJsb2Fkcygqc2V0dGVyRnVuY3Rpb25zKTsKLSAgICAgICAg
aWYgKGF1dG8qIGFuZGVyRnVuY3Rpb25zID0gbV9uYW1lQ29udGV4dC5nZXRGdW5jdGlvbnMocHJv
cGVydHlBY2Nlc3NFeHByZXNzaW9uLmFuZGVyRnVuY3Rpb25OYW1lKCkpKQotICAgICAgICAgICAg
cHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uLnNldFBvc3NpYmxlQW5kZXJPdmVybG9hZHMoKmFuZGVy
RnVuY3Rpb25zKTsKLSAgICB9CiAgICAgVmlzaXRvcjo6dmlzaXQocHJvcGVydHlBY2Nlc3NFeHBy
ZXNzaW9uKTsKIH0KIApAQCAtMjM3LDI2ICsyMjUsNiBAQCB2b2lkIE5hbWVSZXNvbHZlcjo6dmlz
aXQoQVNUOjpEb3RFeHByZXNzaW9uJiBkb3RFeHByZXNzaW9uKQogCiB2b2lkIE5hbWVSZXNvbHZl
cjo6dmlzaXQoQVNUOjpDYWxsRXhwcmVzc2lvbiYgY2FsbEV4cHJlc3Npb24pCiB7Ci0gICAgaWYg
KG1faXNSZXNvbHZpbmdDYWxscykgewotICAgICAgICBpZiAoIWNhbGxFeHByZXNzaW9uLmhhc092
ZXJsb2FkcygpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byogZnVuY3Rpb25zID0gbV9uYW1lQ29u
dGV4dC5nZXRGdW5jdGlvbnMoY2FsbEV4cHJlc3Npb24ubmFtZSgpKSkKLSAgICAgICAgICAgICAg
ICBjYWxsRXhwcmVzc2lvbi5zZXRPdmVybG9hZHMoKmZ1bmN0aW9ucyk7Ci0gICAgICAgICAgICBl
bHNlIHsKLSAgICAgICAgICAgICAgICBpZiAoYXV0byogdHlwZXMgPSBtX25hbWVDb250ZXh0Lmdl
dFR5cGVzKGNhbGxFeHByZXNzaW9uLm5hbWUoKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYg
KHR5cGVzLT5zaXplKCkgPT0gMSkgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGF1dG8q
IGZ1bmN0aW9ucyA9IG1fbmFtZUNvbnRleHQuZ2V0RnVuY3Rpb25zKCJvcGVyYXRvciBjYXN0Il9z
dHIpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbEV4cHJlc3Npb24uc2V0Q2Fz
dERhdGEoKCp0eXBlcylbMF0uZ2V0KCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNh
bGxFeHByZXNzaW9uLnNldE92ZXJsb2FkcygqZnVuY3Rpb25zKTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBpZiAoIWNhbGxFeHByZXNzaW9uLmhhc092ZXJs
b2FkcygpKSB7Ci0gICAgICAgICAgICBzZXRFcnJvcigpOwotICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICB9Ci0gICAgfQogICAgIFZpc2l0b3I6OnZpc2l0KGNhbGxFeHByZXNzaW9uKTsKIH0K
IApAQCAtMzMxLDIwICsyOTksNiBAQCBib29sIHJlc29sdmVUeXBlTmFtZXNJbkZ1bmN0aW9ucyhQ
cm9ncmFtJiBwcm9ncmFtLCBOYW1lUmVzb2x2ZXImIG5hbWVSZXNvbHZlcikKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotYm9vbCByZXNvbHZlQ2FsbHNJbkZ1bmN0aW9ucyhQcm9ncmFtJiBwcm9ncmFt
LCBOYW1lUmVzb2x2ZXImIG5hbWVSZXNvbHZlcikKLXsKLSAgICBuYW1lUmVzb2x2ZXIuc2V0SXNS
ZXNvbHZpbmdDYWxscyh0cnVlKTsKLSAgICBmb3IgKGF1dG8mIGZ1bmN0aW9uRGVmaW5pdGlvbiA6
IHByb2dyYW0uZnVuY3Rpb25EZWZpbml0aW9ucygpKSB7Ci0gICAgICAgIG5hbWVSZXNvbHZlci5z
ZXRDdXJyZW50RnVuY3Rpb25EZWZpbml0aW9uKCZmdW5jdGlvbkRlZmluaXRpb24pOwotICAgICAg
ICBuYW1lUmVzb2x2ZXIuY2hlY2tFcnJvckFuZFZpc2l0KGZ1bmN0aW9uRGVmaW5pdGlvbik7Ci0g
ICAgICAgIGlmIChuYW1lUmVzb2x2ZXIuZXJyb3IoKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICB9Ci0gICAgbmFtZVJlc29sdmVyLnNldEN1cnJlbnRGdW5jdGlvbkRlZmluaXRpb24o
bnVsbHB0cik7Ci0gICAgbmFtZVJlc29sdmVyLnNldElzUmVzb2x2aW5nQ2FsbHMoZmFsc2UpOwot
ICAgIHJldHVybiB0cnVlOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXSExTTAogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9XSExTTE5hbWVSZXNvbHZlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvV0hMU0xOYW1lUmVzb2x2ZXIuaAppbmRleCA5MWZhYWNjY2MwYzdlOWI4YWUxYjYyMzEy
ZDdhODk0YTJiYjU0NzZhLi4xM2YyMTBiZmM1YmJkNGE5ODBhNzY5ZmJkM2VmYzgxN2I5NzIzMWUx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTE5h
bWVSZXNvbHZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dI
TFNMTmFtZVJlc29sdmVyLmgKQEAgLTUxLDggKzUxLDYgQEAgcHVibGljOgogICAgICAgICBtX2N1
cnJlbnRGdW5jdGlvbiA9IGZ1bmN0aW9uRGVmaW5pdGlvbjsKICAgICB9CiAKLSAgICB2b2lkIHNl
dElzUmVzb2x2aW5nQ2FsbHMoYm9vbCBpc1Jlc29sdmluZ0NhbGxzKSB7IG1faXNSZXNvbHZpbmdD
YWxscyA9IGlzUmVzb2x2aW5nQ2FsbHM7IH0KLQogcHJpdmF0ZToKICAgICB2b2lkIHZpc2l0KEFT
VDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiYpIG92ZXJyaWRlOwogICAgIHZvaWQgdmlzaXQo
QVNUOjpUeXBlUmVmZXJlbmNlJikgb3ZlcnJpZGU7CkBAIC03MywxMiArNzEsMTAgQEAgcHJpdmF0
ZToKICAgICBIYXNoU2V0PEFTVDo6VHlwZVJlZmVyZW5jZSo+IG1fdHlwZVJlZmVyZW5jZXM7CiAg
ICAgQVNUOjpGdW5jdGlvbkRlZmluaXRpb24qIG1fY3VycmVudEZ1bmN0aW9uIHsgbnVsbHB0ciB9
OwogICAgIE5hbWVSZXNvbHZlciogbV9wYXJlbnROYW1lUmVzb2x2ZXIgeyBudWxscHRyIH07Ci0g
ICAgYm9vbCBtX2lzUmVzb2x2aW5nQ2FsbHMgeyBmYWxzZSB9OwogfTsKIAogYm9vbCByZXNvbHZl
TmFtZXNJblR5cGVzKFByb2dyYW0mLCBOYW1lUmVzb2x2ZXImKTsKIGJvb2wgcmVzb2x2ZVR5cGVO
YW1lc0luRnVuY3Rpb25zKFByb2dyYW0mLCBOYW1lUmVzb2x2ZXImKTsKLWJvb2wgcmVzb2x2ZUNh
bGxzSW5GdW5jdGlvbnMoUHJvZ3JhbSYsIE5hbWVSZXNvbHZlciYpOwogCiB9IC8vIG5hbWVzcGFj
ZSBXSExTTAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9XSExTTFByZXBhcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
V0hMU0xQcmVwYXJlLmNwcAppbmRleCBlZDk5MzBiNjk5M2I2NGE1Mjg4MDY4OTdmYzliODIxYmE0
YTdhZDk1Li45ZDRmMzNiMmMxMjc0YmEwZDAwNzIxODRkZjhkMmY1MDA0MTIyMzc5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFByZXBhcmUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJlcGFyZS5j
cHAKQEAgLTEzMyw3ICsxMzMsNiBAQCBzdGF0aWMgT3B0aW9uYWw8UHJvZ3JhbT4gcHJlcGFyZVNo
YXJlZChTdHJpbmcmIHdobHNsU291cmNlKQogICAgIENIRUNLX1BBU1Moc3ludGhlc2l6ZUFycmF5
T3BlcmF0b3JMZW5ndGgsIHByb2dyYW0pOwogICAgIENIRUNLX1BBU1MocmVzb2x2ZVR5cGVOYW1l
c0luRnVuY3Rpb25zLCBwcm9ncmFtLCBuYW1lUmVzb2x2ZXIpOwogICAgIENIRUNLX1BBU1Moc3lu
dGhlc2l6ZUNvbnN0cnVjdG9ycywgcHJvZ3JhbSk7Ci0gICAgQ0hFQ0tfUEFTUyhyZXNvbHZlQ2Fs
bHNJbkZ1bmN0aW9ucywgcHJvZ3JhbSwgbmFtZVJlc29sdmVyKTsKICAgICBDSEVDS19QQVNTKGNo
ZWNrRHVwbGljYXRlRnVuY3Rpb25zLCBwcm9ncmFtKTsKIAogICAgIENIRUNLX1BBU1MoY2hlY2ss
IHByb2dyYW0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvV0hMU0xQcm9wZXJ0eVJlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML1dITFNMUHJvcGVydHlSZXNvbHZlci5jcHAKaW5kZXggZGQ3YjkyOWYyMDVjMWVl
YWMwNDdiYjAwZThhYzk0NDEyYTVmMDZkOC4uOGFiZjBmNjc0YjJkYWYyODUzMjFhNWQ4ZWE0OGU5
MWNlZmRjOTBiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvV0hMU0xQcm9wZXJ0eVJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9XSExTTFByb3BlcnR5UmVzb2x2ZXIuY3BwCkBAIC03NTksOSArNzU5LDE2
IEBAIHZvaWQgUHJvcGVydHlSZXNvbHZlcjo6c2ltcGxpZnlSaWdodFZhbHVlKEFTVDo6UHJvcGVy
dHlBY2Nlc3NFeHByZXNzaW9uJiBwcm9wZXJ0CiAgICAgYXV0byYgZ2V0dGVyRnVuY3Rpb24gPSAq
cHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uLmdldHRlckZ1bmN0aW9uKCk7CiAgICAgVmVjdG9yPFVu
aXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+PiBhcmd1bWVudHM7CiAgICAgYXJndW1lbnRzLmFwcGVu
ZChwcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24udGFrZUJhc2UoKSk7Ci0gICAgaWYgKGlzPEFTVDo6
SW5kZXhFeHByZXNzaW9uPihwcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24pKQotICAgICAgICBhcmd1
bWVudHMuYXBwZW5kKGRvd25jYXN0PEFTVDo6SW5kZXhFeHByZXNzaW9uPihwcm9wZXJ0eUFjY2Vz
c0V4cHJlc3Npb24pLnRha2VJbmRleCgpKTsKLSAgICBhdXRvKiBjYWxsRXhwcmVzc2lvbiA9IEFT
VDo6cmVwbGFjZVdpdGg8QVNUOjpDYWxsRXhwcmVzc2lvbj4ocHJvcGVydHlBY2Nlc3NFeHByZXNz
aW9uLCBXVEZNb3ZlKG9yaWdpbiksIFN0cmluZyhnZXR0ZXJGdW5jdGlvbi5uYW1lKCkpLCBXVEZN
b3ZlKGFyZ3VtZW50cykpOworICAgIEFTVDo6Q2FsbEV4cHJlc3Npb24qIGNhbGxFeHByZXNzaW9u
OworICAgIGlmIChpczxBU1Q6OkluZGV4RXhwcmVzc2lvbj4ocHJvcGVydHlBY2Nlc3NFeHByZXNz
aW9uKSkgeworICAgICAgICBhdXRvJiBpbmRleEV4cHJlc3Npb24gPSBkb3duY2FzdDxBU1Q6Oklu
ZGV4RXhwcmVzc2lvbj4ocHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKTsKKyAgICAgICAgYXJndW1l
bnRzLmFwcGVuZChpbmRleEV4cHJlc3Npb24udGFrZUluZGV4KCkpOworICAgICAgICBjYWxsRXhw
cmVzc2lvbiA9IEFTVDo6cmVwbGFjZVdpdGg8QVNUOjpDYWxsRXhwcmVzc2lvbj4oaW5kZXhFeHBy
ZXNzaW9uLCBXVEZNb3ZlKG9yaWdpbiksIFN0cmluZyhnZXR0ZXJGdW5jdGlvbi5uYW1lKCkpLCBX
VEZNb3ZlKGFyZ3VtZW50cykpOworICAgIH0gZWxzZSB7CisgICAgICAgIEFTU0VSVChpczxBU1Q6
OkRvdEV4cHJlc3Npb24+KHByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbikpOworICAgICAgICBhdXRv
JiBkb3RFeHByZXNzaW9uID0gZG93bmNhc3Q8QVNUOjpEb3RFeHByZXNzaW9uPihwcm9wZXJ0eUFj
Y2Vzc0V4cHJlc3Npb24pOworICAgICAgICBjYWxsRXhwcmVzc2lvbiA9IEFTVDo6cmVwbGFjZVdp
dGg8QVNUOjpDYWxsRXhwcmVzc2lvbj4oZG90RXhwcmVzc2lvbiwgV1RGTW92ZShvcmlnaW4pLCBT
dHJpbmcoZ2V0dGVyRnVuY3Rpb24ubmFtZSgpKSwgV1RGTW92ZShhcmd1bWVudHMpKTsKKyAgICB9
CiAgICAgY2FsbEV4cHJlc3Npb24tPnNldEZ1bmN0aW9uKGdldHRlckZ1bmN0aW9uKTsKICAgICBj
YWxsRXhwcmVzc2lvbi0+c2V0VHlwZShnZXR0ZXJGdW5jdGlvbi50eXBlKCkuY2xvbmUoKSk7CiAg
ICAgY2FsbEV4cHJlc3Npb24tPnNldFR5cGVBbm5vdGF0aW9uKEFTVDo6UmlnaHRWYWx1ZSgpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>373520</attachid>
            <date>2019-07-05 12:02:11 -0700</date>
            <delta_ts>2019-07-05 13:09:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-199474-20190705120211.patch</filename>
            <type>text/plain</type>
            <size>21204</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ3MTY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmM5ZDE3MmQ2NDkxM2U4
NjI1YjgyY2VkZDBjNjIxYzRiNDcxNzM2NC4uNTBkN2M3MjQwOGFhZWEzMzgxZmM4NDk3ZGYwZTli
NzM1YmRjN2UwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDE5LTA3LTAzICBSb2Jp
biBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+CisKKyAgICAgICAgW1dITFNMXSBSZW1v
dmUgdGhlIHBoYXNlIHJlc29sdmVDYWxsc0luRnVuY3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTk0NzQKKworICAgICAgICBSZXZpZXdlZCBi
eSBNeWxlcyBNYXhmaWVsZC4KKworICAgICAgICBUaGlzIHBhc3Mgb25seSBzdG9yZXMgaW50byBl
YWNoIHByb3BlcnR5IGFjY2VzcyBhbmQgY2FsbCBleHByZXNzaW9uIHZlY3RvcnMgb2YgYWxsIHRo
ZSBmdW5jdGlvbnMgaXQgbWlnaHQgYmUgY2FsbGluZywgZm9yIHVzZSBieSB0aGUgQ2hlY2tlciBh
ZnRlcndhcmRzLgorICAgICAgICBCdXQgdGhlIGNoZWNrZXIgaXMgcGVyZmVjdGx5IGFibGUgdG8g
Y29tcHV0ZSBhIHBvaW50ZXIgdG8gdGhlc2UgdmVjdG9ycyBieSBpdHNlbGYuCisgICAgICAgIFNv
IGJ5IHJlbW92aW5nIHRoaXMgcGFzcywgd2UgZ2FpbiB0aGUgZm9sbG93aW5nOgorICAgICAgICAt
IE9uZSBsZXNzIHBhc3Mgb3ZlciB0aGUgQVNUCisgICAgICAgIC0gTm8gbmVlZCB0byBjb3B5IHRo
ZXNlIHZlY3RvcnMgKHdoaWNoIGNhbiBiZSBsYXJnZSBmb3IgaGVhdmlseSBvdmVybG9hZGVkIGZ1
bmN0aW9ucywgb2Ygd2hpY2ggdGhlcmUgYXJlIHF1aXRlIGEgZmV3IGluIHRoZSBzdGRsaWIpCisg
ICAgICAgIC0gTm8gbmVlZCB0byBoYXZlIHRoZXNlIHZlY3RvcnMgaW4gdGhlIGV4cHJlc3Npb25z
LCBzYXZpbmcgMjQgYnl0ZXMgcGVyIENhbGxFeHByZXNzaW9uIGFuZCA3MiBieXRlcyBwZXIgUHJv
cGVydHlBY2Nlc3NFeHByZXNzaW9uCisgICAgICAgIC0gTm8gbmVlZCB0byBhbGxvY2F0ZSBhbmQg
dGhlbiBkZXN0cm95IHRoZXNlIHZlY3RvcnMuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIGFzIHRo
ZXJlIGlzIG5vIGludGVuZGVkIGZ1bmN0aW9uYWwgY2hhbmdlLgorCisgICAgICAgICogTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQ2FsbEV4cHJlc3Npb24uaDoKKyAgICAgICAgKFdlYkNv
cmU6OldITFNMOjpBU1Q6OkNhbGxFeHByZXNzaW9uOjpjYXN0UmV0dXJuVHlwZSk6CisgICAgICAg
ICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9u
Lmg6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xBdXRvSW5pdGlhbGl6ZVZh
cmlhYmxlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QXV0b0luaXRpYWxpemU6OnZp
c2l0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNrZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OnJlc29sdmVGdW5jdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpXSExTTDo6Q2hlY2tlcjo6ZmluaXNoVmlzaXRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6
V0hMU0w6OkNoZWNrZXI6OnZpc2l0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9X
SExTTE5hbWVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6TmFtZVJlc29s
dmVyOjpOYW1lUmVzb2x2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6Ok5hbWVSZXNvbHZl
cjo6dmlzaXQpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMTmFtZVJlc29s
dmVyLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQcmVwYXJlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpwcmVwYXJlU2hhcmVkKToKKwogMjAxOS0wNy0wNSAg
UnlhbiBIYWRkYWQgIDxyeWFuaGFkZGFkQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2Vk
LCByb2xsaW5nIG91dCByMjQ3MTE1LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQ2FsbEV4cHJlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTENhbGxFeHByZXNzaW9uLmgKaW5kZXggMWEw
ZDAyNzRlNGQzYzcyZWQyZjZjMGM4YWIxZGUxOTRkNWZlNTQ0Yy4uY2JjZGJmOWQwOGVhNjdkMWEz
ZGFjZjc5MWVkOGY0M2Y2NjYwNWZkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQ2FsbEV4cHJlc3Npb24uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xDYWxsRXhwcmVzc2lvbi5oCkBAIC02
NywxNCArNjcsNiBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzQ2FzdCgpIHsgcmV0dXJuIG1fY2Fz
dFJldHVyblR5cGU7IH0KICAgICBOYW1lZFR5cGUqIGNhc3RSZXR1cm5UeXBlKCkgeyByZXR1cm4g
bV9jYXN0UmV0dXJuVHlwZTsgfQotICAgIGJvb2wgaGFzT3ZlcmxvYWRzKCkgY29uc3QgeyByZXR1
cm4gc3RhdGljX2Nhc3Q8Ym9vbD4obV9vdmVybG9hZHMpOyB9Ci0gICAgT3B0aW9uYWw8VmVjdG9y
PHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8RnVuY3Rpb25EZWNsYXJhdGlvbj4sIDE+PiYgb3Zlcmxv
YWRzKCkgeyByZXR1cm4gbV9vdmVybG9hZHM7IH0KLSAgICB2b2lkIHNldE92ZXJsb2Fkcyhjb25z
dCBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxGdW5jdGlvbkRlY2xhcmF0aW9uPiwgMT4m
IG92ZXJsb2FkcykKLSAgICB7Ci0gICAgICAgIGFzc2VydCghaGFzT3ZlcmxvYWRzKCkpOwotICAg
ICAgICBtX292ZXJsb2FkcyA9IG92ZXJsb2FkczsKLSAgICB9Ci0KICAgICBGdW5jdGlvbkRlY2xh
cmF0aW9uKiBmdW5jdGlvbigpIHsgcmV0dXJuIG1fZnVuY3Rpb247IH0KIAogICAgIHZvaWQgc2V0
RnVuY3Rpb24oRnVuY3Rpb25EZWNsYXJhdGlvbiYgZnVuY3Rpb25EZWNsYXJhdGlvbikKQEAgLTg2
LDcgKzc4LDYgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBTdHJpbmcgbV9uYW1lOwogICAgIFZl
Y3RvcjxVbmlxdWVSZWY8RXhwcmVzc2lvbj4+IG1fYXJndW1lbnRzOwotICAgIE9wdGlvbmFsPFZl
Y3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPEZ1bmN0aW9uRGVjbGFyYXRpb24+LCAxPj4gbV9v
dmVybG9hZHM7CiAgICAgRnVuY3Rpb25EZWNsYXJhdGlvbiogbV9mdW5jdGlvbiB7IG51bGxwdHIg
fTsKICAgICBOYW1lZFR5cGUqIG1fY2FzdFJldHVyblR5cGUgeyBudWxscHRyIH07CiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUHJv
cGVydHlBY2Nlc3NFeHByZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24uaAppbmRleCBiYjBjMzAxMmVl
YjIwMzkwM2E0MzAwMjAzMjhjOGI5NDgyOWI2ODRkLi4zNGQxMmExZTlkZDliNmMzNjIxMWQ2NjJh
ZjRiOTcxYjliNzdlOWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xQcm9wZXJ0eUFjY2Vzc0V4cHJl
c3Npb24uaApAQCAtNTcsMjcgKzU3LDExIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0cmluZyBz
ZXR0ZXJGdW5jdGlvbk5hbWUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBTdHJpbmcgYW5kZXJG
dW5jdGlvbk5hbWUoKSBjb25zdCA9IDA7CiAKLSAgICBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3Jh
cHBlcjxGdW5jdGlvbkRlY2xhcmF0aW9uPiwgMT4mIHBvc3NpYmxlR2V0dGVyT3ZlcmxvYWRzKCkg
eyByZXR1cm4gbV9wb3NzaWJsZUdldHRlck92ZXJsb2FkczsgfQotICAgIFZlY3RvcjxzdGQ6OnJl
ZmVyZW5jZV93cmFwcGVyPEZ1bmN0aW9uRGVjbGFyYXRpb24+LCAxPiYgcG9zc2libGVTZXR0ZXJP
dmVybG9hZHMoKSB7IHJldHVybiBtX3Bvc3NpYmxlU2V0dGVyT3ZlcmxvYWRzOyB9Ci0gICAgVmVj
dG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8RnVuY3Rpb25EZWNsYXJhdGlvbj4sIDE+JiBwb3Nz
aWJsZUFuZGVyT3ZlcmxvYWRzKCkgeyByZXR1cm4gbV9wb3NzaWJsZUFuZGVyT3ZlcmxvYWRzOyB9
CiAgICAgRnVuY3Rpb25EZWNsYXJhdGlvbiogZ2V0dGVyRnVuY3Rpb24oKSB7IHJldHVybiBtX2dl
dHRlckZ1bmN0aW9uOyB9CiAgICAgRnVuY3Rpb25EZWNsYXJhdGlvbiogYW5kZXJGdW5jdGlvbigp
IHsgcmV0dXJuIG1fYW5kZXJGdW5jdGlvbjsgfQogICAgIEZ1bmN0aW9uRGVjbGFyYXRpb24qIHRo
cmVhZEFuZGVyRnVuY3Rpb24oKSB7IHJldHVybiBtX3RocmVhZEFuZGVyRnVuY3Rpb247IH0KICAg
ICBGdW5jdGlvbkRlY2xhcmF0aW9uKiBzZXR0ZXJGdW5jdGlvbigpIHsgcmV0dXJuIG1fc2V0dGVy
RnVuY3Rpb247IH0KIAotICAgIHZvaWQgc2V0UG9zc2libGVHZXR0ZXJPdmVybG9hZHMoY29uc3Qg
VmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8RnVuY3Rpb25EZWNsYXJhdGlvbj4sIDE+JiBv
dmVybG9hZHMpCi0gICAgewotICAgICAgICBtX3Bvc3NpYmxlR2V0dGVyT3ZlcmxvYWRzID0gb3Zl
cmxvYWRzOwotICAgIH0KLSAgICB2b2lkIHNldFBvc3NpYmxlQW5kZXJPdmVybG9hZHMoY29uc3Qg
VmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8RnVuY3Rpb25EZWNsYXJhdGlvbj4sIDE+JiBv
dmVybG9hZHMpCi0gICAgewotICAgICAgICBtX3Bvc3NpYmxlQW5kZXJPdmVybG9hZHMgPSBvdmVy
bG9hZHM7Ci0gICAgfQotICAgIHZvaWQgc2V0UG9zc2libGVTZXR0ZXJPdmVybG9hZHMoY29uc3Qg
VmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8RnVuY3Rpb25EZWNsYXJhdGlvbj4sIDE+JiBv
dmVybG9hZHMpCi0gICAgewotICAgICAgICBtX3Bvc3NpYmxlU2V0dGVyT3ZlcmxvYWRzID0gb3Zl
cmxvYWRzOwotICAgIH0KLQogICAgIHZvaWQgc2V0R2V0dGVyRnVuY3Rpb24oRnVuY3Rpb25EZWNs
YXJhdGlvbiogZ2V0dGVyRnVuY3Rpb24pCiAgICAgewogICAgICAgICBtX2dldHRlckZ1bmN0aW9u
ID0gZ2V0dGVyRnVuY3Rpb247CkBAIC0xMDQsOSArODgsNiBAQCBwdWJsaWM6CiAKIHByaXZhdGU6
CiAgICAgVW5pcXVlUmVmPEV4cHJlc3Npb24+IG1fYmFzZTsKLSAgICBWZWN0b3I8c3RkOjpyZWZl
cmVuY2Vfd3JhcHBlcjxGdW5jdGlvbkRlY2xhcmF0aW9uPiwgMT4gbV9wb3NzaWJsZUdldHRlck92
ZXJsb2FkczsKLSAgICBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxGdW5jdGlvbkRlY2xh
cmF0aW9uPiwgMT4gbV9wb3NzaWJsZVNldHRlck92ZXJsb2FkczsKLSAgICBWZWN0b3I8c3RkOjpy
ZWZlcmVuY2Vfd3JhcHBlcjxGdW5jdGlvbkRlY2xhcmF0aW9uPiwgMT4gbV9wb3NzaWJsZUFuZGVy
T3ZlcmxvYWRzOwogICAgIEZ1bmN0aW9uRGVjbGFyYXRpb24qIG1fZ2V0dGVyRnVuY3Rpb24geyBu
dWxscHRyIH07CiAgICAgRnVuY3Rpb25EZWNsYXJhdGlvbiogbV9hbmRlckZ1bmN0aW9uIHsgbnVs
bHB0ciB9OwogICAgIEZ1bmN0aW9uRGVjbGFyYXRpb24qIG1fdGhyZWFkQW5kZXJGdW5jdGlvbiB7
IG51bGxwdHIgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML1dITFNMQXV0b0luaXRpYWxpemVWYXJpYWJsZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvV0hMU0xBdXRvSW5pdGlhbGl6ZVZhcmlhYmxlcy5jcHAKaW5kZXgg
ZDExYjkwN2FmM2RkM2RjZjY5OTg0NGRiM2EyN2JiZmZjNzljNDQ4My4uODE2NDcwOTM1NjdlY2Vm
NzhjYjU3MjU0YTk5YjE2NzUyYmRhMzk4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvV0hMU0xBdXRvSW5pdGlhbGl6ZVZhcmlhYmxlcy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xBdXRvSW5pdGlhbGl6ZVZh
cmlhYmxlcy5jcHAKQEAgLTcyLDkgKzcyLDggQEAgcHJpdmF0ZToKICAgICAgICAgYXV0byBjYWxs
RXhwcmVzc2lvbiA9IHN0ZDo6bWFrZV91bmlxdWU8QVNUOjpDYWxsRXhwcmVzc2lvbj4odmFyaWFi
bGVEZWNsYXJhdGlvbi5vcmlnaW4oKSwgV1RGTW92ZShmdW5jdGlvbk5hbWUpLCBWZWN0b3I8VW5p
cXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4+KCkpOwogICAgICAgICBjYWxsRXhwcmVzc2lvbi0+c2V0
VHlwZSh0eXBlLT5jbG9uZSgpKTsKICAgICAgICAgY2FsbEV4cHJlc3Npb24tPnNldFR5cGVBbm5v
dGF0aW9uKEFTVDo6UmlnaHRWYWx1ZSgpKTsKLSAgICAgICAgY2FsbEV4cHJlc3Npb24tPnNldE92
ZXJsb2FkcyhtX2Nhc3RGdW5jdGlvbnMpOwogICAgICAgICBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vf
d3JhcHBlcjxSZXNvbHZpbmdUeXBlPj4gYXJndW1lbnRUeXBlczsKLSAgICAgICAgYXV0byogZnVu
Y3Rpb24gPSByZXNvbHZlRnVuY3Rpb25PdmVybG9hZCgqY2FsbEV4cHJlc3Npb24tPm92ZXJsb2Fk
cygpLCBhcmd1bWVudFR5cGVzLCB0eXBlKTsKKyAgICAgICAgYXV0byogZnVuY3Rpb24gPSByZXNv
bHZlRnVuY3Rpb25PdmVybG9hZChtX2Nhc3RGdW5jdGlvbnMsIGFyZ3VtZW50VHlwZXMsIHR5cGUp
OwogICAgICAgICBpZiAoIWZ1bmN0aW9uKSB7CiAgICAgICAgICAgICBzZXRFcnJvcigpOwogICAg
ICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvV0hMU0xDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML1dITFNMQ2hlY2tlci5jcHAKaW5kZXggZWIxZmE5ODNiZGQ2ZGFmMDM3OGNlOWEyOWNi
N2RhODY1NDE3ZjMzOC4uY2M2Mzg4NGU1ZTBlN2RlNzk0YjlkMzEwNGUxMGY5MGIyMjc1M2RmYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDaGVj
a2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENo
ZWNrZXIuY3BwCkBAIC00Niw2ICs0Niw3IEBACiAjaW5jbHVkZSAiV0hMU0xMb2dpY2FsTm90RXhw
cmVzc2lvbi5oIgogI2luY2x1ZGUgIldITFNMTWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbi5o
IgogI2luY2x1ZGUgIldITFNMTWFrZVBvaW50ZXJFeHByZXNzaW9uLmgiCisjaW5jbHVkZSAiV0hM
U0xOYW1lQ29udGV4dC5oIgogI2luY2x1ZGUgIldITFNMUG9pbnRlclR5cGUuaCIKICNpbmNsdWRl
ICJXSExTTFByb2dyYW0uaCIKICNpbmNsdWRlICJXSExTTFJlYWRNb2RpZnlXcml0ZUV4cHJlc3Np
b24uaCIKQEAgLTIxNSwxMCArMjE2LDEyIEBAIHN0YXRpYyBPcHRpb25hbDxBU1Q6Ok5hdGl2ZUZ1
bmN0aW9uRGVjbGFyYXRpb24+IHJlc29sdmVCeUluc3RhbnRpYXRpb24oY29uc3QgU3RyCiAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKIH0KIAotc3RhdGljIEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlv
biogcmVzb2x2ZUZ1bmN0aW9uKFByb2dyYW0mIHByb2dyYW0sIFZlY3RvcjxzdGQ6OnJlZmVyZW5j
ZV93cmFwcGVyPEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbj4sIDE+JiBwb3NzaWJsZU92ZXJsb2Fk
cywgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UmVzb2x2aW5nVHlwZT4+JiB0eXBlcywg
Y29uc3QgU3RyaW5nJiBuYW1lLCBMZXhlcjo6VG9rZW4gb3JpZ2luLCBjb25zdCBJbnRyaW5zaWNz
JiBpbnRyaW5zaWNzLCBBU1Q6Ok5hbWVkVHlwZSogY2FzdFJldHVyblR5cGUgPSBudWxscHRyKQor
c3RhdGljIEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbiogcmVzb2x2ZUZ1bmN0aW9uKFByb2dyYW0m
IHByb2dyYW0sIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPEFTVDo6RnVuY3Rpb25EZWNs
YXJhdGlvbj4sIDE+KiBwb3NzaWJsZU92ZXJsb2FkcywgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dy
YXBwZXI8UmVzb2x2aW5nVHlwZT4+JiB0eXBlcywgY29uc3QgU3RyaW5nJiBuYW1lLCBMZXhlcjo6
VG9rZW4gb3JpZ2luLCBjb25zdCBJbnRyaW5zaWNzJiBpbnRyaW5zaWNzLCBBU1Q6Ok5hbWVkVHlw
ZSogY2FzdFJldHVyblR5cGUgPSBudWxscHRyKQogewotICAgIGlmIChBU1Q6OkZ1bmN0aW9uRGVj
bGFyYXRpb24qIGZ1bmN0aW9uID0gcmVzb2x2ZUZ1bmN0aW9uT3ZlcmxvYWQocG9zc2libGVPdmVy
bG9hZHMsIHR5cGVzLCBjYXN0UmV0dXJuVHlwZSkpCi0gICAgICAgIHJldHVybiBmdW5jdGlvbjsK
KyAgICBpZiAocG9zc2libGVPdmVybG9hZHMpIHsKKyAgICAgICAgaWYgKEFTVDo6RnVuY3Rpb25E
ZWNsYXJhdGlvbiogZnVuY3Rpb24gPSByZXNvbHZlRnVuY3Rpb25PdmVybG9hZCgqcG9zc2libGVP
dmVybG9hZHMsIHR5cGVzLCBjYXN0UmV0dXJuVHlwZSkpCisgICAgICAgICAgICByZXR1cm4gZnVu
Y3Rpb247CisgICAgfQogCiAgICAgaWYgKGF1dG8gbmV3RnVuY3Rpb24gPSByZXNvbHZlQnlJbnN0
YW50aWF0aW9uKG5hbWUsIG9yaWdpbiwgdHlwZXMsIGludHJpbnNpY3MpKSB7CiAgICAgICAgIHBy
b2dyYW0uYXBwZW5kKFdURk1vdmUoKm5ld0Z1bmN0aW9uKSk7CkBAIC0xMDE5LDcgKzEwMjIsMTAg
QEAgdm9pZCBDaGVja2VyOjpmaW5pc2hWaXNpdGluZyhBU1Q6OlByb3BlcnR5QWNjZXNzRXhwcmVz
c2lvbiYgcHJvcGVydHlBY2Nlc3NFeHByZXMKICAgICAgICAgVmVjdG9yPHN0ZDo6cmVmZXJlbmNl
X3dyYXBwZXI8UmVzb2x2aW5nVHlwZT4+IGdldHRlckFyZ3VtZW50VHlwZXMgeyBiYXNlSW5mby0+
cmVzb2x2aW5nVHlwZSB9OwogICAgICAgICBpZiAoYWRkaXRpb25hbEFyZ3VtZW50VHlwZSkKICAg
ICAgICAgICAgIGdldHRlckFyZ3VtZW50VHlwZXMuYXBwZW5kKCphZGRpdGlvbmFsQXJndW1lbnRU
eXBlKTsKLSAgICAgICAgaWYgKChnZXR0ZXJGdW5jdGlvbiA9IHJlc29sdmVGdW5jdGlvbihtX3By
b2dyYW0sIHByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbi5wb3NzaWJsZUdldHRlck92ZXJsb2Fkcygp
LCBnZXR0ZXJBcmd1bWVudFR5cGVzLCBwcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24uZ2V0dGVyRnVu
Y3Rpb25OYW1lKCksIHByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbi5vcmlnaW4oKSwgbV9pbnRyaW5z
aWNzKSkpCisgICAgICAgIGF1dG8gZ2V0dGVyTmFtZSA9IHByb3BlcnR5QWNjZXNzRXhwcmVzc2lv
bi5nZXR0ZXJGdW5jdGlvbk5hbWUoKTsKKyAgICAgICAgYXV0byogZ2V0dGVyRnVuY3Rpb25zID0g
bV9wcm9ncmFtLm5hbWVDb250ZXh0KCkuZ2V0RnVuY3Rpb25zKGdldHRlck5hbWUpOworICAgICAg
ICBnZXR0ZXJGdW5jdGlvbiA9IHJlc29sdmVGdW5jdGlvbihtX3Byb2dyYW0sIGdldHRlckZ1bmN0
aW9ucywgZ2V0dGVyQXJndW1lbnRUeXBlcywgZ2V0dGVyTmFtZSwgcHJvcGVydHlBY2Nlc3NFeHBy
ZXNzaW9uLm9yaWdpbigpLCBtX2ludHJpbnNpY3MpOworICAgICAgICBpZiAoZ2V0dGVyRnVuY3Rp
b24pCiAgICAgICAgICAgICBnZXR0ZXJSZXR1cm5UeXBlID0gJmdldHRlckZ1bmN0aW9uLT50eXBl
KCk7CiAgICAgfQogCkBAIC0xMDMyLDcgKzEwMzgsMTAgQEAgdm9pZCBDaGVja2VyOjpmaW5pc2hW
aXNpdGluZyhBU1Q6OlByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbiYgcHJvcGVydHlBY2Nlc3NFeHBy
ZXMKICAgICAgICAgICAgIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFJlc29sdmluZ1R5
cGU+PiBhbmRlckFyZ3VtZW50VHlwZXMgeyBhcmd1bWVudFR5cGUgfTsKICAgICAgICAgICAgIGlm
IChhZGRpdGlvbmFsQXJndW1lbnRUeXBlKQogICAgICAgICAgICAgICAgIGFuZGVyQXJndW1lbnRU
eXBlcy5hcHBlbmQoKmFkZGl0aW9uYWxBcmd1bWVudFR5cGUpOwotICAgICAgICAgICAgaWYgKChh
bmRlckZ1bmN0aW9uID0gcmVzb2x2ZUZ1bmN0aW9uKG1fcHJvZ3JhbSwgcHJvcGVydHlBY2Nlc3NF
eHByZXNzaW9uLnBvc3NpYmxlQW5kZXJPdmVybG9hZHMoKSwgYW5kZXJBcmd1bWVudFR5cGVzLCBw
cm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24uYW5kZXJGdW5jdGlvbk5hbWUoKSwgcHJvcGVydHlBY2Nl
c3NFeHByZXNzaW9uLm9yaWdpbigpLCBtX2ludHJpbnNpY3MpKSkKKyAgICAgICAgICAgIGF1dG8g
YW5kZXJOYW1lID0gcHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uLmFuZGVyRnVuY3Rpb25OYW1lKCk7
CisgICAgICAgICAgICBhdXRvKiBhbmRlckZ1bmN0aW9ucyA9IG1fcHJvZ3JhbS5uYW1lQ29udGV4
dCgpLmdldEZ1bmN0aW9ucyhhbmRlck5hbWUpOworICAgICAgICAgICAgYW5kZXJGdW5jdGlvbiA9
IHJlc29sdmVGdW5jdGlvbihtX3Byb2dyYW0sIGFuZGVyRnVuY3Rpb25zLCBhbmRlckFyZ3VtZW50
VHlwZXMsIGFuZGVyTmFtZSwgcHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uLm9yaWdpbigpLCBtX2lu
dHJpbnNpY3MpOworICAgICAgICAgICAgaWYgKGFuZGVyRnVuY3Rpb24pCiAgICAgICAgICAgICAg
ICAgYW5kZXJSZXR1cm5UeXBlID0gJmRvd25jYXN0PEFTVDo6UG9pbnRlclR5cGU+KGFuZGVyRnVu
Y3Rpb24tPnR5cGUoKSkuZWxlbWVudFR5cGUoKTsgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTgxNjQgRW5mb3JjZSB0aGUgcmV0dXJuIG9mIGFuZGVy
cyB3aWxsIGFsd2F5cyBiZSBhIHBvaW50ZXIKICAgICAgICAgfQogICAgIH0KQEAgLTEwNDQsNyAr
MTA1MywxMCBAQCB2b2lkIENoZWNrZXI6OmZpbmlzaFZpc2l0aW5nKEFTVDo6UHJvcGVydHlBY2Nl
c3NFeHByZXNzaW9uJiBwcm9wZXJ0eUFjY2Vzc0V4cHJlcwogICAgICAgICBWZWN0b3I8c3RkOjpy
ZWZlcmVuY2Vfd3JhcHBlcjxSZXNvbHZpbmdUeXBlPj4gdGhyZWFkQW5kZXJBcmd1bWVudFR5cGVz
IHsgYXJndW1lbnRUeXBlIH07CiAgICAgICAgIGlmIChhZGRpdGlvbmFsQXJndW1lbnRUeXBlKQog
ICAgICAgICAgICAgdGhyZWFkQW5kZXJBcmd1bWVudFR5cGVzLmFwcGVuZCgqYWRkaXRpb25hbEFy
Z3VtZW50VHlwZSk7Ci0gICAgICAgIGlmICgodGhyZWFkQW5kZXJGdW5jdGlvbiA9IHJlc29sdmVG
dW5jdGlvbihtX3Byb2dyYW0sIHByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbi5wb3NzaWJsZUFuZGVy
T3ZlcmxvYWRzKCksIHRocmVhZEFuZGVyQXJndW1lbnRUeXBlcywgcHJvcGVydHlBY2Nlc3NFeHBy
ZXNzaW9uLmFuZGVyRnVuY3Rpb25OYW1lKCksIHByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbi5vcmln
aW4oKSwgbV9pbnRyaW5zaWNzKSkpCisgICAgICAgIGF1dG8gYW5kZXJOYW1lID0gcHJvcGVydHlB
Y2Nlc3NFeHByZXNzaW9uLmFuZGVyRnVuY3Rpb25OYW1lKCk7CisgICAgICAgIGF1dG8qIGFuZGVy
RnVuY3Rpb25zID0gbV9wcm9ncmFtLm5hbWVDb250ZXh0KCkuZ2V0RnVuY3Rpb25zKGFuZGVyTmFt
ZSk7CisgICAgICAgIHRocmVhZEFuZGVyRnVuY3Rpb24gPSByZXNvbHZlRnVuY3Rpb24obV9wcm9n
cmFtLCBhbmRlckZ1bmN0aW9ucywgdGhyZWFkQW5kZXJBcmd1bWVudFR5cGVzLCBhbmRlck5hbWUs
IHByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbi5vcmlnaW4oKSwgbV9pbnRyaW5zaWNzKTsKKyAgICAg
ICAgaWYgKHRocmVhZEFuZGVyRnVuY3Rpb24pCiAgICAgICAgICAgICB0aHJlYWRBbmRlclJldHVy
blR5cGUgPSAmZG93bmNhc3Q8QVNUOjpQb2ludGVyVHlwZT4odGhyZWFkQW5kZXJGdW5jdGlvbi0+
dHlwZSgpKS5lbGVtZW50VHlwZSgpOyAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE5ODE2NCBFbmZvcmNlIHRoZSByZXR1cm4gb2YgYW5kZXJzIHdpbGwg
YWx3YXlzIGJlIGEgcG9pbnRlcgogICAgIH0KIApAQCAtMTA4OCw3ICsxMTAwLDkgQEAgdm9pZCBD
aGVja2VyOjpmaW5pc2hWaXNpdGluZyhBU1Q6OlByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbiYgcHJv
cGVydHlBY2Nlc3NFeHByZXMKICAgICAgICAgaWYgKGFkZGl0aW9uYWxBcmd1bWVudFR5cGUpCiAg
ICAgICAgICAgICBzZXR0ZXJBcmd1bWVudFR5cGVzLmFwcGVuZCgqYWRkaXRpb25hbEFyZ3VtZW50
VHlwZSk7CiAgICAgICAgIHNldHRlckFyZ3VtZW50VHlwZXMuYXBwZW5kKGZpZWxkUmVzb2x2aW5n
VHlwZSk7Ci0gICAgICAgIHNldHRlckZ1bmN0aW9uID0gcmVzb2x2ZUZ1bmN0aW9uKG1fcHJvZ3Jh
bSwgcHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uLnBvc3NpYmxlU2V0dGVyT3ZlcmxvYWRzKCksIHNl
dHRlckFyZ3VtZW50VHlwZXMsIHByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbi5zZXR0ZXJGdW5jdGlv
bk5hbWUoKSwgcHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uLm9yaWdpbigpLCBtX2ludHJpbnNpY3Mp
OworICAgICAgICBhdXRvIHNldHRlck5hbWUgPSBwcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24uc2V0
dGVyRnVuY3Rpb25OYW1lKCk7CisgICAgICAgIGF1dG8qIHNldHRlckZ1bmN0aW9ucyA9IG1fcHJv
Z3JhbS5uYW1lQ29udGV4dCgpLmdldEZ1bmN0aW9ucyhzZXR0ZXJOYW1lKTsKKyAgICAgICAgc2V0
dGVyRnVuY3Rpb24gPSByZXNvbHZlRnVuY3Rpb24obV9wcm9ncmFtLCBzZXR0ZXJGdW5jdGlvbnMs
IHNldHRlckFyZ3VtZW50VHlwZXMsIHNldHRlck5hbWUsIHByb3BlcnR5QWNjZXNzRXhwcmVzc2lv
bi5vcmlnaW4oKSwgbV9pbnRyaW5zaWNzKTsKICAgICAgICAgaWYgKHNldHRlckZ1bmN0aW9uKQog
ICAgICAgICAgICAgc2V0dGVyUmV0dXJuVHlwZSA9ICZzZXR0ZXJGdW5jdGlvbi0+dHlwZSgpOwog
ICAgIH0KQEAgLTE0NjksOCArMTQ4MywyMiBAQCB2b2lkIENoZWNrZXI6OnZpc2l0KEFTVDo6Q2Fs
bEV4cHJlc3Npb24mIGNhbGxFeHByZXNzaW9uKQogICAgIC8vIERvbid0IHJlY3Vyc2Ugb24gdGhl
IGNhc3RSZXR1cm5UeXBlLCBiZWNhdXNlIGl0J3MgZ3VhcmFudGVlZCB0byBiZSBhIE5hbWVkVHlw
ZSwgd2hpY2ggd2lsbCBnZXQgdmlzaXRlZCBsYXRlci4KICAgICAvLyBXZSBkb24ndCB3YW50IHRv
IHJlY3Vyc2UgdG8gdGhlIHNhbWUgbm9kZSB0d2ljZS4KIAotICAgIEFTU0VSVChjYWxsRXhwcmVz
c2lvbi5oYXNPdmVybG9hZHMoKSk7Ci0gICAgYXV0byogZnVuY3Rpb24gPSByZXNvbHZlRnVuY3Rp
b24obV9wcm9ncmFtLCAqY2FsbEV4cHJlc3Npb24ub3ZlcmxvYWRzKCksIHR5cGVzLCBjYWxsRXhw
cmVzc2lvbi5uYW1lKCksIGNhbGxFeHByZXNzaW9uLm9yaWdpbigpLCBtX2ludHJpbnNpY3MsIGNh
bGxFeHByZXNzaW9uLmNhc3RSZXR1cm5UeXBlKCkpOworICAgIE5hbWVDb250ZXh0JiBuYW1lQ29u
dGV4dCA9IG1fcHJvZ3JhbS5uYW1lQ29udGV4dCgpOworICAgIGF1dG8qIGZ1bmN0aW9ucyA9IG5h
bWVDb250ZXh0LmdldEZ1bmN0aW9ucyhjYWxsRXhwcmVzc2lvbi5uYW1lKCkpOworICAgIGlmICgh
ZnVuY3Rpb25zKSB7CisgICAgICAgIGlmIChhdXRvKiB0eXBlcyA9IG5hbWVDb250ZXh0LmdldFR5
cGVzKGNhbGxFeHByZXNzaW9uLm5hbWUoKSkpIHsKKyAgICAgICAgICAgIGlmICh0eXBlcy0+c2l6
ZSgpID09IDEpIHsKKyAgICAgICAgICAgICAgICBpZiAoKGZ1bmN0aW9ucyA9IG5hbWVDb250ZXh0
LmdldEZ1bmN0aW9ucygib3BlcmF0b3IgY2FzdCJfc3RyKSkpCisgICAgICAgICAgICAgICAgICAg
IGNhbGxFeHByZXNzaW9uLnNldENhc3REYXRhKCgqdHlwZXMpWzBdLmdldCgpKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoIWZ1bmN0aW9ucykgeworICAgICAgICBz
ZXRFcnJvcigpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byogZnVuY3Rpb24g
PSByZXNvbHZlRnVuY3Rpb24obV9wcm9ncmFtLCBmdW5jdGlvbnMsIHR5cGVzLCBjYWxsRXhwcmVz
c2lvbi5uYW1lKCksIGNhbGxFeHByZXNzaW9uLm9yaWdpbigpLCBtX2ludHJpbnNpY3MsIGNhbGxF
eHByZXNzaW9uLmNhc3RSZXR1cm5UeXBlKCkpOwogICAgIGlmICghZnVuY3Rpb24pIHsKICAgICAg
ICAgc2V0RXJyb3IoKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xOYW1lUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xOYW1lUmVzb2x2ZXIuY3BwCmluZGV4IDAw
Njc0Nzg4ZmRhYTE0YjE4MzE4NTY4NGI0NTRkZTYyZDhhOGY1YzQuLjA2OWI5M2NjMTBkNTM4Zjhl
ZTI3MGRhNjc2ZDM0YjBjNDAyYzU2MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML1dITFNMTmFtZVJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTE5hbWVSZXNvbHZlci5jcHAKQEAgLTYxLDcgKzYx
LDYgQEAgTmFtZVJlc29sdmVyOjpOYW1lUmVzb2x2ZXIoTmFtZVJlc29sdmVyJiBwYXJlbnRSZXNv
bHZlciwgTmFtZUNvbnRleHQmIG5hbWVDb250ZXgKICAgICA6IG1fbmFtZUNvbnRleHQobmFtZUNv
bnRleHQpCiAgICAgLCBtX3BhcmVudE5hbWVSZXNvbHZlcigmcGFyZW50UmVzb2x2ZXIpCiB7Ci0g
ICAgbV9pc1Jlc29sdmluZ0NhbGxzID0gcGFyZW50UmVzb2x2ZXIubV9pc1Jlc29sdmluZ0NhbGxz
OwogICAgIHNldEN1cnJlbnRGdW5jdGlvbkRlZmluaXRpb24ocGFyZW50UmVzb2x2ZXIubV9jdXJy
ZW50RnVuY3Rpb24pOwogfQogCkBAIC03Myw5ICs3Miw2IEBAIE5hbWVSZXNvbHZlcjo6fk5hbWVS
ZXNvbHZlcigpCiAKIHZvaWQgTmFtZVJlc29sdmVyOjp2aXNpdChBU1Q6OlR5cGVSZWZlcmVuY2Um
IHR5cGVSZWZlcmVuY2UpCiB7Ci0gICAgaWYgKG1faXNSZXNvbHZpbmdDYWxscykKLSAgICAgICAg
cmV0dXJuOwotCiAgICAgU2NvcGVkU2V0QWRkZXI8QVNUOjpUeXBlUmVmZXJlbmNlKj4gYWRkZXIo
bV90eXBlUmVmZXJlbmNlcywgJnR5cGVSZWZlcmVuY2UpOwogICAgIGlmICghYWRkZXIuaXNOZXdF
bnRyeSgpKSB7CiAgICAgICAgIHNldEVycm9yKCk7CkBAIC0xOTksMTQgKzE5NSw2IEBAIHZvaWQg
TmFtZVJlc29sdmVyOjp2aXNpdChBU1Q6OlJldHVybiYgcmV0dXJuU3RhdGVtZW50KQogCiB2b2lk
IE5hbWVSZXNvbHZlcjo6dmlzaXQoQVNUOjpQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24mIHByb3Bl
cnR5QWNjZXNzRXhwcmVzc2lvbikKIHsKLSAgICBpZiAobV9pc1Jlc29sdmluZ0NhbGxzKSB7Ci0g
ICAgICAgIGlmIChhdXRvKiBnZXR0ZXJGdW5jdGlvbnMgPSBtX25hbWVDb250ZXh0LmdldEZ1bmN0
aW9ucyhwcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24uZ2V0dGVyRnVuY3Rpb25OYW1lKCkpKQotICAg
ICAgICAgICAgcHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uLnNldFBvc3NpYmxlR2V0dGVyT3Zlcmxv
YWRzKCpnZXR0ZXJGdW5jdGlvbnMpOwotICAgICAgICBpZiAoYXV0byogc2V0dGVyRnVuY3Rpb25z
ID0gbV9uYW1lQ29udGV4dC5nZXRGdW5jdGlvbnMocHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uLnNl
dHRlckZ1bmN0aW9uTmFtZSgpKSkKLSAgICAgICAgICAgIHByb3BlcnR5QWNjZXNzRXhwcmVzc2lv
bi5zZXRQb3NzaWJsZVNldHRlck92ZXJsb2Fkcygqc2V0dGVyRnVuY3Rpb25zKTsKLSAgICAgICAg
aWYgKGF1dG8qIGFuZGVyRnVuY3Rpb25zID0gbV9uYW1lQ29udGV4dC5nZXRGdW5jdGlvbnMocHJv
cGVydHlBY2Nlc3NFeHByZXNzaW9uLmFuZGVyRnVuY3Rpb25OYW1lKCkpKQotICAgICAgICAgICAg
cHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uLnNldFBvc3NpYmxlQW5kZXJPdmVybG9hZHMoKmFuZGVy
RnVuY3Rpb25zKTsKLSAgICB9CiAgICAgVmlzaXRvcjo6dmlzaXQocHJvcGVydHlBY2Nlc3NFeHBy
ZXNzaW9uKTsKIH0KIApAQCAtMjM3LDI2ICsyMjUsNiBAQCB2b2lkIE5hbWVSZXNvbHZlcjo6dmlz
aXQoQVNUOjpEb3RFeHByZXNzaW9uJiBkb3RFeHByZXNzaW9uKQogCiB2b2lkIE5hbWVSZXNvbHZl
cjo6dmlzaXQoQVNUOjpDYWxsRXhwcmVzc2lvbiYgY2FsbEV4cHJlc3Npb24pCiB7Ci0gICAgaWYg
KG1faXNSZXNvbHZpbmdDYWxscykgewotICAgICAgICBpZiAoIWNhbGxFeHByZXNzaW9uLmhhc092
ZXJsb2FkcygpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byogZnVuY3Rpb25zID0gbV9uYW1lQ29u
dGV4dC5nZXRGdW5jdGlvbnMoY2FsbEV4cHJlc3Npb24ubmFtZSgpKSkKLSAgICAgICAgICAgICAg
ICBjYWxsRXhwcmVzc2lvbi5zZXRPdmVybG9hZHMoKmZ1bmN0aW9ucyk7Ci0gICAgICAgICAgICBl
bHNlIHsKLSAgICAgICAgICAgICAgICBpZiAoYXV0byogdHlwZXMgPSBtX25hbWVDb250ZXh0Lmdl
dFR5cGVzKGNhbGxFeHByZXNzaW9uLm5hbWUoKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYg
KHR5cGVzLT5zaXplKCkgPT0gMSkgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGF1dG8q
IGZ1bmN0aW9ucyA9IG1fbmFtZUNvbnRleHQuZ2V0RnVuY3Rpb25zKCJvcGVyYXRvciBjYXN0Il9z
dHIpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbEV4cHJlc3Npb24uc2V0Q2Fz
dERhdGEoKCp0eXBlcylbMF0uZ2V0KCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNh
bGxFeHByZXNzaW9uLnNldE92ZXJsb2FkcygqZnVuY3Rpb25zKTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBpZiAoIWNhbGxFeHByZXNzaW9uLmhhc092ZXJs
b2FkcygpKSB7Ci0gICAgICAgICAgICBzZXRFcnJvcigpOwotICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICB9Ci0gICAgfQogICAgIFZpc2l0b3I6OnZpc2l0KGNhbGxFeHByZXNzaW9uKTsKIH0K
IApAQCAtMzMxLDIwICsyOTksNiBAQCBib29sIHJlc29sdmVUeXBlTmFtZXNJbkZ1bmN0aW9ucyhQ
cm9ncmFtJiBwcm9ncmFtLCBOYW1lUmVzb2x2ZXImIG5hbWVSZXNvbHZlcikKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotYm9vbCByZXNvbHZlQ2FsbHNJbkZ1bmN0aW9ucyhQcm9ncmFtJiBwcm9ncmFt
LCBOYW1lUmVzb2x2ZXImIG5hbWVSZXNvbHZlcikKLXsKLSAgICBuYW1lUmVzb2x2ZXIuc2V0SXNS
ZXNvbHZpbmdDYWxscyh0cnVlKTsKLSAgICBmb3IgKGF1dG8mIGZ1bmN0aW9uRGVmaW5pdGlvbiA6
IHByb2dyYW0uZnVuY3Rpb25EZWZpbml0aW9ucygpKSB7Ci0gICAgICAgIG5hbWVSZXNvbHZlci5z
ZXRDdXJyZW50RnVuY3Rpb25EZWZpbml0aW9uKCZmdW5jdGlvbkRlZmluaXRpb24pOwotICAgICAg
ICBuYW1lUmVzb2x2ZXIuY2hlY2tFcnJvckFuZFZpc2l0KGZ1bmN0aW9uRGVmaW5pdGlvbik7Ci0g
ICAgICAgIGlmIChuYW1lUmVzb2x2ZXIuZXJyb3IoKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICB9Ci0gICAgbmFtZVJlc29sdmVyLnNldEN1cnJlbnRGdW5jdGlvbkRlZmluaXRpb24o
bnVsbHB0cik7Ci0gICAgbmFtZVJlc29sdmVyLnNldElzUmVzb2x2aW5nQ2FsbHMoZmFsc2UpOwot
ICAgIHJldHVybiB0cnVlOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXSExTTAogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9XSExTTE5hbWVSZXNvbHZlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvV0hMU0xOYW1lUmVzb2x2ZXIuaAppbmRleCA5MWZhYWNjY2MwYzdlOWI4YWUxYjYyMzEy
ZDdhODk0YTJiYjU0NzZhLi4xM2YyMTBiZmM1YmJkNGE5ODBhNzY5ZmJkM2VmYzgxN2I5NzIzMWUx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTE5h
bWVSZXNvbHZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dI
TFNMTmFtZVJlc29sdmVyLmgKQEAgLTUxLDggKzUxLDYgQEAgcHVibGljOgogICAgICAgICBtX2N1
cnJlbnRGdW5jdGlvbiA9IGZ1bmN0aW9uRGVmaW5pdGlvbjsKICAgICB9CiAKLSAgICB2b2lkIHNl
dElzUmVzb2x2aW5nQ2FsbHMoYm9vbCBpc1Jlc29sdmluZ0NhbGxzKSB7IG1faXNSZXNvbHZpbmdD
YWxscyA9IGlzUmVzb2x2aW5nQ2FsbHM7IH0KLQogcHJpdmF0ZToKICAgICB2b2lkIHZpc2l0KEFT
VDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiYpIG92ZXJyaWRlOwogICAgIHZvaWQgdmlzaXQo
QVNUOjpUeXBlUmVmZXJlbmNlJikgb3ZlcnJpZGU7CkBAIC03MywxMiArNzEsMTAgQEAgcHJpdmF0
ZToKICAgICBIYXNoU2V0PEFTVDo6VHlwZVJlZmVyZW5jZSo+IG1fdHlwZVJlZmVyZW5jZXM7CiAg
ICAgQVNUOjpGdW5jdGlvbkRlZmluaXRpb24qIG1fY3VycmVudEZ1bmN0aW9uIHsgbnVsbHB0ciB9
OwogICAgIE5hbWVSZXNvbHZlciogbV9wYXJlbnROYW1lUmVzb2x2ZXIgeyBudWxscHRyIH07Ci0g
ICAgYm9vbCBtX2lzUmVzb2x2aW5nQ2FsbHMgeyBmYWxzZSB9OwogfTsKIAogYm9vbCByZXNvbHZl
TmFtZXNJblR5cGVzKFByb2dyYW0mLCBOYW1lUmVzb2x2ZXImKTsKIGJvb2wgcmVzb2x2ZVR5cGVO
YW1lc0luRnVuY3Rpb25zKFByb2dyYW0mLCBOYW1lUmVzb2x2ZXImKTsKLWJvb2wgcmVzb2x2ZUNh
bGxzSW5GdW5jdGlvbnMoUHJvZ3JhbSYsIE5hbWVSZXNvbHZlciYpOwogCiB9IC8vIG5hbWVzcGFj
ZSBXSExTTAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9XSExTTFByZXBhcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
V0hMU0xQcmVwYXJlLmNwcAppbmRleCBlZDk5MzBiNjk5M2I2NGE1Mjg4MDY4OTdmYzliODIxYmE0
YTdhZDk1Li45ZDRmMzNiMmMxMjc0YmEwZDAwNzIxODRkZjhkMmY1MDA0MTIyMzc5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFByZXBhcmUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJlcGFyZS5j
cHAKQEAgLTEzMyw3ICsxMzMsNiBAQCBzdGF0aWMgT3B0aW9uYWw8UHJvZ3JhbT4gcHJlcGFyZVNo
YXJlZChTdHJpbmcmIHdobHNsU291cmNlKQogICAgIENIRUNLX1BBU1Moc3ludGhlc2l6ZUFycmF5
T3BlcmF0b3JMZW5ndGgsIHByb2dyYW0pOwogICAgIENIRUNLX1BBU1MocmVzb2x2ZVR5cGVOYW1l
c0luRnVuY3Rpb25zLCBwcm9ncmFtLCBuYW1lUmVzb2x2ZXIpOwogICAgIENIRUNLX1BBU1Moc3lu
dGhlc2l6ZUNvbnN0cnVjdG9ycywgcHJvZ3JhbSk7Ci0gICAgQ0hFQ0tfUEFTUyhyZXNvbHZlQ2Fs
bHNJbkZ1bmN0aW9ucywgcHJvZ3JhbSwgbmFtZVJlc29sdmVyKTsKICAgICBDSEVDS19QQVNTKGNo
ZWNrRHVwbGljYXRlRnVuY3Rpb25zLCBwcm9ncmFtKTsKIAogICAgIENIRUNLX1BBU1MoY2hlY2ss
IHByb2dyYW0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvV0hMU0xQcm9wZXJ0eVJlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML1dITFNMUHJvcGVydHlSZXNvbHZlci5jcHAKaW5kZXggZGQ3YjkyOWYyMDVjMWVl
YWMwNDdiYjAwZThhYzk0NDEyYTVmMDZkOC4uOGFiZjBmNjc0YjJkYWYyODUzMjFhNWQ4ZWE0OGU5
MWNlZmRjOTBiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvV0hMU0xQcm9wZXJ0eVJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9XSExTTFByb3BlcnR5UmVzb2x2ZXIuY3BwCkBAIC03NTksOSArNzU5LDE2
IEBAIHZvaWQgUHJvcGVydHlSZXNvbHZlcjo6c2ltcGxpZnlSaWdodFZhbHVlKEFTVDo6UHJvcGVy
dHlBY2Nlc3NFeHByZXNzaW9uJiBwcm9wZXJ0CiAgICAgYXV0byYgZ2V0dGVyRnVuY3Rpb24gPSAq
cHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uLmdldHRlckZ1bmN0aW9uKCk7CiAgICAgVmVjdG9yPFVu
aXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+PiBhcmd1bWVudHM7CiAgICAgYXJndW1lbnRzLmFwcGVu
ZChwcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24udGFrZUJhc2UoKSk7Ci0gICAgaWYgKGlzPEFTVDo6
SW5kZXhFeHByZXNzaW9uPihwcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24pKQotICAgICAgICBhcmd1
bWVudHMuYXBwZW5kKGRvd25jYXN0PEFTVDo6SW5kZXhFeHByZXNzaW9uPihwcm9wZXJ0eUFjY2Vz
c0V4cHJlc3Npb24pLnRha2VJbmRleCgpKTsKLSAgICBhdXRvKiBjYWxsRXhwcmVzc2lvbiA9IEFT
VDo6cmVwbGFjZVdpdGg8QVNUOjpDYWxsRXhwcmVzc2lvbj4ocHJvcGVydHlBY2Nlc3NFeHByZXNz
aW9uLCBXVEZNb3ZlKG9yaWdpbiksIFN0cmluZyhnZXR0ZXJGdW5jdGlvbi5uYW1lKCkpLCBXVEZN
b3ZlKGFyZ3VtZW50cykpOworICAgIEFTVDo6Q2FsbEV4cHJlc3Npb24qIGNhbGxFeHByZXNzaW9u
OworICAgIGlmIChpczxBU1Q6OkluZGV4RXhwcmVzc2lvbj4ocHJvcGVydHlBY2Nlc3NFeHByZXNz
aW9uKSkgeworICAgICAgICBhdXRvJiBpbmRleEV4cHJlc3Npb24gPSBkb3duY2FzdDxBU1Q6Oklu
ZGV4RXhwcmVzc2lvbj4ocHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKTsKKyAgICAgICAgYXJndW1l
bnRzLmFwcGVuZChpbmRleEV4cHJlc3Npb24udGFrZUluZGV4KCkpOworICAgICAgICBjYWxsRXhw
cmVzc2lvbiA9IEFTVDo6cmVwbGFjZVdpdGg8QVNUOjpDYWxsRXhwcmVzc2lvbj4oaW5kZXhFeHBy
ZXNzaW9uLCBXVEZNb3ZlKG9yaWdpbiksIFN0cmluZyhnZXR0ZXJGdW5jdGlvbi5uYW1lKCkpLCBX
VEZNb3ZlKGFyZ3VtZW50cykpOworICAgIH0gZWxzZSB7CisgICAgICAgIEFTU0VSVChpczxBU1Q6
OkRvdEV4cHJlc3Npb24+KHByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbikpOworICAgICAgICBhdXRv
JiBkb3RFeHByZXNzaW9uID0gZG93bmNhc3Q8QVNUOjpEb3RFeHByZXNzaW9uPihwcm9wZXJ0eUFj
Y2Vzc0V4cHJlc3Npb24pOworICAgICAgICBjYWxsRXhwcmVzc2lvbiA9IEFTVDo6cmVwbGFjZVdp
dGg8QVNUOjpDYWxsRXhwcmVzc2lvbj4oZG90RXhwcmVzc2lvbiwgV1RGTW92ZShvcmlnaW4pLCBT
dHJpbmcoZ2V0dGVyRnVuY3Rpb24ubmFtZSgpKSwgV1RGTW92ZShhcmd1bWVudHMpKTsKKyAgICB9
CiAgICAgY2FsbEV4cHJlc3Npb24tPnNldEZ1bmN0aW9uKGdldHRlckZ1bmN0aW9uKTsKICAgICBj
YWxsRXhwcmVzc2lvbi0+c2V0VHlwZShnZXR0ZXJGdW5jdGlvbi50eXBlKCkuY2xvbmUoKSk7CiAg
ICAgY2FsbEV4cHJlc3Npb24tPnNldFR5cGVBbm5vdGF0aW9uKEFTVDo6UmlnaHRWYWx1ZSgpKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>