<?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>219007</bug_id>
          
          <creation_ts>2020-11-16 15:20:26 -0800</creation_ts>
          <short_desc>[GPU Process] Clean up recreating the ImageBufferBackend because of GPU crashing</short_desc>
          <delta_ts>2020-12-07 19:22:57 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Canvas</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=218924</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=219568</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=219623</see_also>
          <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="Said Abou-Hallawa">sabouhallawa</reporter>
          <assigned_to name="Said Abou-Hallawa">sabouhallawa</assigned_to>
          <cc>annulen</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1708019</commentid>
    <comment_count>0</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-11-16 15:20:26 -0800</bug_when>
    <thetext>No need to store the backend parameters in RemoteImageBufferProxy. They can be accessed from the current ImageBufferBackend via the ImageBuffer before the backend is cleared.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1708049</commentid>
    <comment_count>1</comment_count>
      <attachid>414293</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-11-16 16:41:54 -0800</bug_when>
    <thetext>Created attachment 414293
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1708061</commentid>
    <comment_count>2</comment_count>
      <attachid>414293</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-11-16 17:57:10 -0800</bug_when>
    <thetext>Comment on attachment 414293
Patch

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

&gt; Source/WebKit/WebProcess/GPU/graphics/RemoteImageBufferProxy.h:187
&gt; +    void commitFlushDisplayList(WebCore::DisplayList::FlushIdentifier flushIdentifier) override

We need to stop using &quot;commit&quot; and &quot;flush&quot; in ways we don&apos;t all understand.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1708074</commentid>
    <comment_count>3</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-11-16 18:40:09 -0800</bug_when>
    <thetext>IMO (but obv. up for discussion):

&quot;submit&quot; for &quot;send display list/work to GPUP&quot;, like Wenson fixed elsewhere
&quot;flush&quot; is &quot;wait till all submitted work has actually been completed&quot;
&quot;commit&quot; should be just for the layer tree transactions (but is effectively the same as &quot;submit&quot; for a transaction)

and no combination of the above means anything so we shouldn&apos;t see them adjacent to each other :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1710048</commentid>
    <comment_count>4</comment_count>
      <attachid>414861</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-11-25 02:09:42 -0800</bug_when>
    <thetext>Created attachment 414861
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1710108</commentid>
    <comment_count>5</comment_count>
      <attachid>414879</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-11-25 21:49:34 -0800</bug_when>
    <thetext>Created attachment 414879
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1710109</commentid>
    <comment_count>6</comment_count>
      <attachid>414880</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-11-25 22:00:02 -0800</bug_when>
    <thetext>Created attachment 414880
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1710115</commentid>
    <comment_count>7</comment_count>
      <attachid>414885</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-11-26 00:47:26 -0800</bug_when>
    <thetext>Created attachment 414885
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1710135</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-11-26 03:22:02 -0800</bug_when>
    <thetext>&lt;rdar://problem/71747762&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1710204</commentid>
    <comment_count>9</comment_count>
      <attachid>414912</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-11-26 19:06:21 -0800</bug_when>
    <thetext>Created attachment 414912
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1710263</commentid>
    <comment_count>10</comment_count>
      <attachid>414935</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-11-27 03:08:05 -0800</bug_when>
    <thetext>Created attachment 414935
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1710672</commentid>
    <comment_count>11</comment_count>
      <attachid>414935</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-11-30 10:50:10 -0800</bug_when>
    <thetext>Comment on attachment 414935
Patch

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

&gt; Source/WebCore/platform/graphics/ConcreteImageBuffer.h:297
&gt; +    std::unique_ptr&lt;ImageBufferBackend::Parameters&gt; m_parameters;

Why not just store a copy of the tiny struct? Much simpler.

&gt; Source/WebCore/platform/graphics/ImageBufferBackend.h:166
&gt; +    const Parameters&amp; m_parameters;

Who owns the original data? Would be safer to just store by value.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1710713</commentid>
    <comment_count>12</comment_count>
      <attachid>415043</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-11-30 12:34:53 -0800</bug_when>
    <thetext>Created attachment 415043
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1710716</commentid>
    <comment_count>13</comment_count>
      <attachid>415045</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-11-30 12:43:17 -0800</bug_when>
    <thetext>Created attachment 415045
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1710717</commentid>
    <comment_count>14</comment_count>
      <attachid>415046</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-11-30 12:49:24 -0800</bug_when>
    <thetext>Created attachment 415046
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1710739</commentid>
    <comment_count>15</comment_count>
      <attachid>415050</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-11-30 13:30:29 -0800</bug_when>
    <thetext>Created attachment 415050
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1710742</commentid>
    <comment_count>16</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-11-30 13:34:37 -0800</bug_when>
    <thetext>ImageBufferBackend::Parameters are saved by value in ImageBufferBackend and ConcreteImageBuffer. Renaming the flush/commit/flush functions was removed from this patch and will be addressed in a different patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1711970</commentid>
    <comment_count>17</comment_count>
      <attachid>415395</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-12-04 01:48:59 -0800</bug_when>
    <thetext>Created attachment 415395
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1712063</commentid>
    <comment_count>18</comment_count>
      <attachid>415395</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-12-04 10:54:41 -0800</bug_when>
    <thetext>Comment on attachment 415395
Patch

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

&gt; Source/WebCore/platform/graphics/cg/ImageBufferCGBackend.cpp:124
&gt; +    auto backendSize = this-&gt;backendSize();

Doesn&apos;t seem worthwhile storing this in a local.

&gt; Source/WebCore/platform/graphics/cg/ImageBufferCGBitmapBackend.cpp:108
&gt; +    return { static_cast&lt;int&gt;(CGBitmapContextGetWidth(context().platformContext())), static_cast&lt;int&gt;(CGBitmapContextGetHeight(context().platformContext())) };

Let&apos;s not fetch context().platformContext() twice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1712081</commentid>
    <comment_count>19</comment_count>
      <attachid>415434</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-12-04 11:21:40 -0800</bug_when>
    <thetext>Created attachment 415434
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1712115</commentid>
    <comment_count>20</comment_count>
      <attachid>415445</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-12-04 12:31:04 -0800</bug_when>
    <thetext>Created attachment 415445
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1712119</commentid>
    <comment_count>21</comment_count>
      <attachid>415395</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-12-04 12:33:32 -0800</bug_when>
    <thetext>Comment on attachment 415395
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/cg/ImageBufferCGBackend.cpp:124
&gt;&gt; +    auto backendSize = this-&gt;backendSize();
&gt; 
&gt; Doesn&apos;t seem worthwhile storing this in a local.

Actually it is worthy. sinkIntoNativeImage() destroys the backend. So we can&apos;t call backendSize() after calling sinkIntoNativeImage(). I put it back and I added a comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1712168</commentid>
    <comment_count>22</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-12-04 14:30:50 -0800</bug_when>
    <thetext>Committed r270458: &lt;https://trac.webkit.org/changeset/270458&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 415445.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414293</attachid>
            <date>2020-11-16 16:41:54 -0800</date>
            <delta_ts>2020-11-25 02:09:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219007-20201116164153.patch</filename>
            <type>text/plain</type>
            <size>28051</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5ODcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTgxMTc1Y2M1NmY2NmVl
NzQ0MzYxNTkzMDY2ZWFkN2Q2Nzc4Y2UxNS4uYmEyOTViNGVmZGM0NTM4MTNiYzAyYjQ1ZjI1Zjlh
NTFhYTY3NzY1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDIwLTExLTE2ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10g
Q2xlYW4gdXAgcmVjcmVhdGluZyB0aGUgSW1hZ2VCdWZmZXJCYWNrZW5kIGJlY2F1c2Ugb2YgR1BV
IGNyYXNoaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMTkwMDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAtLSBFeHBvc2UgdGhlIEltYWdlQnVmZmVyQmFja2VuZCBjcmVhdGlvbiBwYXJhbWV0ZXJzIHRo
cm91Z2ggSW1hZ2VCdWZmZXIuCisgICAgICAgIC0tIEV4cG9zZSBtZXRob2RzIHRvIHNldCBhbmQg
Y2xlYXIgdGhlIGJhY2tlbmQgb2YgYW4gSW1hZ2VCdWZmZXIuCisgICAgICAgIC0tIEV4cG9zZSBj
b21taXRGbHVzaERpc3BsYXlMaXN0KCkgdGhyb3VnaCBJbWFnZUJ1ZmZlciBzbyBubyBjYXN0aW5n
IGlzCisgICAgICAgICAgIG5lZWRlZCB3aGVuIGNhbGxpbmcgUmVtb3RlSW1hZ2VCdWZlclByb3h5
Ojpjb21taXRGbHVzaERpc3BsYXlMaXN0KCkuCisgICAgICAgIC0tIFJlcGxhY2UgYWxsIHRoZSBp
bnN0YW5jZXMgb2YgJ2lzQWNjZWxlcmF0ZWQnIGJ5ICdyZW5kZXJpbmdNb2RlJyBzbyBubworICAg
ICAgICAgICBuZWVkIHRvIGNvbnZlcnQgb25lIHR5cGUgdG8gdGhlIG90aGVyLgorCisgICAgICAg
ICogSGVhZGVycy5jbWFrZToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZlci5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmg6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6Y29tbWl0Rmx1c2hEaXNwbGF5TGlzdCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvUGxhdGZvcm1JbWFnZUJ1ZmZlci5oOgorICAgICAgICAoaXNUeXBlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3Qu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RG
bHVzaElkZW50aWZpZXIuaDogQWRkZWQuCisKIDIwMjAtMTEtMTYgIERldmluIFJvdXNzbyAgPGRy
b3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAgIElnbm9yZSBkZXByZWNhdGlvbiB3YXJuaW5ncyBm
b3IgdGhlIHVuaWZvcm0gdHlwZXMgQyBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggOWRiN2MyOTFkMzA2NzAxYjFm
MzE5NDg1ZTA1MGYxZjVkOTUwZGE1NC4uMWEyZjljZTYwMzhhNTM1NDliYzFhNTQ2YjA5YTU1MTE5
ZGVkMGU0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOCBAQAorMjAyMC0xMS0xNiAgU2FpZCBBYm91
LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3NdIENsZWFu
IHVwIHJlY3JlYXRpbmcgdGhlIEltYWdlQnVmZmVyQmFja2VuZCBiZWNhdXNlIG9mIEdQVSBjcmFz
aGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE5
MDA3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhp
cyBpcyBubyBuZWVkIHRvIHN0b3JlIHRoZSBiYWNrZW5kIHBhcmFtZXRlcnMgaW4gUmVtb3RlSW1h
Z2VCdWZmZXJQcm94eS4KKyAgICAgICAgVGhlc2UgcGFyYW1ldGVycyBjYW4gYmUgYWNjZXNzZWQg
ZnJvbSB0aGUgY3VycmVudCBJbWFnZUJ1ZmZlckJhY2tlbmQgdmlhCisgICAgICAgIHRoZSBJbWFn
ZUJ1ZmZlciBiZWZvcmUgdGhlIGJhY2tlbmQgaXMgY2xlYXJlZC4KKworICAgICAgICBSZW1vdmUg
dGhlIHRyYWl0cyBkZWZpbml0aW9uIGZvciBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5IHR5cGVzIGJl
Y2F1c2UKKyAgICAgICAgdGhleSBhcmUgd3JvbmcuIEFsbCBJbWFnZUJ1ZmZlcnMgaGF2ZSB2YWxp
ZCByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKQorICAgICAgICByZWdhcmRsZXNzIHdoZXRo
ZXIgdGhleSBhcmUgcmVtb3RlIG9yIG5vdC4gSW1hZ2VCdWZmZXI6OnNldEJhY2tlbmQgYW5kCisg
ICAgICAgIEltYWdlQnVmZmVyOjpjb21taXRGbHVzaERpc3BsYXlMaXN0KCkgYXJlIG5vdyBpbXBs
ZW1lbnRlZCBpbiBXZWJDb3JlLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UGxhdGZvcm1SZW1vdGVJbWFnZUJ1ZmZlclByb3h5Lmg6CisgICAgICAgIChpc1R5cGUpOiBEZWxl
dGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVy
UHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6UmVtb3RlSW1hZ2VC
dWZmZXJQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyUHJveHk6OmNs
ZWFyQmFja2VuZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVy
UHJveHk6OmNyZWF0ZUJhY2tlbmQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJ
bWFnZUJ1ZmZlclByb3h5Ojpjb21taXRGbHVzaERpc3BsYXlMaXN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6c2l6ZSBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyUHJveHk6OnJlbmRlcmluZ01vZGUg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlclByb3h5
Ojpjb2xvclNwYWNlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1h
Z2VCdWZmZXJQcm94eTo6cGl4ZWxGb3JtYXQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIFdl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6cmVlc3RhYmxpc2hH
UFVQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eTo6Y3JlYXRlSW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHk6OmltYWdlQnVmZmVyQmFja2VuZFdhc0NyZWF0ZWQpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmZsdXNoRGlzcGxheUxp
c3RXYXNDb21taXR0ZWQpOgorICAgICAgICAoV2ViS2l0OjpyZWNyZWF0ZUltYWdlQnVmZmVyKTog
RGVsZXRlZC4KKwogMjAyMC0xMS0xNiAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+
CiAKICAgICAgICAgSWdub3JlIGRlcHJlY2F0aW9uIHdhcm5pbmdzIGZvciB0aGUgdW5pZm9ybSB0
eXBlcyBDIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1Nv
dXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggYmViMDA2MGJhZWE0Mzk0YTA1MDRjY2Vk
MjY3ZTYyNjAwYTM5NmI3Ni4uY2M1YWYwODkyNGFiMDk2ZTVmZjIzMjU0YTZlMzBhNTExYjBjZDQz
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC0xMjUxLDYgKzEyNTEsNyBAQCBzZXQoV2ViQ29yZV9Q
UklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0LmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3REcmF3R2x5cGhzUmVjb3JkZXIuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0LmgKKyAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RGbHVzaElkZW50aWZpZXIuaAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEltYWdlQnVmZmVyLmgKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmgKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlwZS5oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
Y2UyYWE3MDdhZGFkYjZiMzQ3YTQ0NDRhNmRlZWYyYzg1ZGE3M2Y0MS4uNDAwMGU5MDAxZTNiNTMx
N2NhYTVmMTJmZDU0ZmUyNGY0M2M1NGQyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjE3MCw2ICsyMTcwLDcgQEAKIAkJNzI0
RUQzMzIxQTNBOEIyMzAwRjVGMTNDIC8qIEpTRVhUQmxlbmRNaW5NYXguaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyNEVEMzMwMUEzQThCMjMwMEY1RjEz
QyAvKiBKU0VYVEJsZW5kTWluTWF4LmggKi87IH07CiAJCTcyNEVFNTUwMURDODBEN0YwMEE5MUZG
QiAvKiBBY3Rpdml0eVN0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3MjRFRTU0RTFEQzdGMjVCMDBBOTFGRkIgLyogQWN0aXZpdHlTdGF0ZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcyNEVFNTUx
MURDODBEODQwMEE5MUZGQiAvKiBBY3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyNEVFNTRGMURDN0YyNUIw
MEE5MUZGQiAvKiBBY3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXIuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3MjZDODVCMzI1NjM0REVGMDBENkJG
QTggLyogRGlzcGxheUxpc3RGbHVzaElkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyNkM4NUIxMjU2MzRDMTgwMEQ2QkZBOCAvKiBEaXNw
bGF5TGlzdEZsdXNoSWRlbnRpZmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTcyNkQ1NkUyMjUzQUUyOEQwMDAyRUY5MCAvKiBQbGF0Zm9ybUlt
YWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjZE
NTZFMTI1M0FFMDQzMDAwMkVGOTAgLyogUGxhdGZvcm1JbWFnZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcyNkQ1NkUzMjUzQUUzNjYwMDAyRUY5
MCAvKiBOYXRpdmVJbWFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTVBMzM2RjYxRDgyMDlGNDAwMjJDNEM3IC8qIE5hdGl2ZUltYWdlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzI3QTdGM0EyNDA3
OEI4NDAwNEQyOTMxIC8qIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzJCQUMzQUIyM0UxRTU0NDAwOEQ3
NDFDIC8qIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMDAwMiw2ICsxMDAwMyw3IEBACiAJCTcy
NjZGMDI4MjI0MzEyMDMwMDgzMzk3NSAvKiBTVkdBbmltYXRpb25BZGRpdGl2ZUxpc3RGdW5jdGlv
bkltcGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHQW5pbWF0aW9uQWRkaXRpdmVMaXN0RnVuY3Rpb25J
bXBsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyNjZGMDI5MjI0MzEyQjEwMDgz
Mzk3NSAvKiBTVkdBbmltYXRpb25BZGRpdGl2ZUxpc3RGdW5jdGlvbi5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTVkdBbmltYXRpb25BZGRpdGl2ZUxpc3RGdW5jdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3MjY2RjAyQTIyNDMxNDlCMDA4MzM5NzUgLyogU1ZHQW5pbWF0ZWRQcm9wZXJ0
eUxpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHQW5pbWF0ZWRQcm9wZXJ0eUxpc3QuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzI2Qzg1QjEyNTYzNEMxODAwRDZCRkE4IC8qIERpc3Bs
YXlMaXN0Rmx1c2hJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpc3BsYXlMaXN0Rmx1c2hJ
ZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyNkQ1NkUxMjUzQUUw
NDMwMDAyRUY5MCAvKiBQbGF0Zm9ybUltYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtSW1h
Z2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI3QUZFRDExQTJFQTZBMDAwMDQ0
MkU4IC8qIEVYVHNSR0IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
RVhUc1JHQi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyN0FGRUQyMUEyRUE2
QTAwMDA0NDJFOCAvKiBFWFRzUkdCLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEVYVHNSR0IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE3NzA2LDYgKzE3NzA4
LDcgQEAKIAkJCQkxQ0FGNTZERTI1MzAyNDVBMDAxN0I0NzIgLyogRGlzcGxheUxpc3REcmF3R2x5
cGhzUmVjb3JkZXJDb3JlVGV4dC5jcHAgKi8sCiAJCQkJNTVDMEEyOTUyM0ZFMkNFMDAwRjJDQjkz
IC8qIERpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuY3BwICovLAogCQkJCTcyRUEwOUY5MjNGQ0ND
NkEwMDg1MDRBNSAvKiBEaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0LmggKi8sCisJCQkJNzI2Qzg1
QjEyNTYzNEMxODAwRDZCRkE4IC8qIERpc3BsYXlMaXN0Rmx1c2hJZGVudGlmaWVyLmggKi8sCiAJ
CQkJNzJFQTA5RjcyM0ZDQ0IzRDAwODUwNEE1IC8qIERpc3BsYXlMaXN0SW1hZ2VCdWZmZXIuaCAq
LywKIAkJCQlGNDIyQjhCNjI1M0Y3MDY1MDA0RTc3RTggLyogRGlzcGxheUxpc3RJdGVtQnVmZmVy
LmNwcCAqLywKIAkJCQlGNDIyQjhCNTI1M0Y3MDY1MDA0RTc3RTggLyogRGlzcGxheUxpc3RJdGVt
QnVmZmVyLmggKi8sCkBAIC0zMTU2Miw2ICszMTU2NSw3IEBACiAJCQkJMEZFNUZCRDMxQzNERDUx
RTAwMDdBMkNBIC8qIERpc3BsYXlMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQ0FGNTZEQjI1
MzAxQUM4MDAxN0I0NzIgLyogRGlzcGxheUxpc3REcmF3R2x5cGhzUmVjb3JkZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTU1QUQwOTQwMjQwODk2NDAwMERFNEQyRiAvKiBEaXNwbGF5TGlzdERyYXdp
bmdDb250ZXh0LmggaW4gSGVhZGVycyAqLywKKwkJCQk3MjZDODVCMzI1NjM0REVGMDBENkJGQTgg
LyogRGlzcGxheUxpc3RGbHVzaElkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTU1QUQw
OTNFMjQwODk2MzUwMERFNEQyRiAvKiBEaXNwbGF5TGlzdEltYWdlQnVmZmVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlGNEQ0MEJDOTI1NTQ2M0JGMDA3MjEzNDkgLyogRGlzcGxheUxpc3RJdGVtQnVm
ZmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkU1RkJENTFDM0RENTFFMDAwN0EyQ0EgLyogRGlz
cGxheUxpc3RJdGVtcy5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmgKaW5kZXggODI0Mjk5MDAy
ZWU2NjBmMGJhZTNmMTYzYWQxYzg5YjAzZDRkZGE3OS4uODk3NDkwMDU0NGRjMjExMzExZmY3NDUy
NDUxMTcxODY0MTk1NTMzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaApAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6
CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW1hZ2VCdWZmZXJUeXBlKFdURk1vdmUoYmFj
a2VuZCksIHN0ZDo6Zm9yd2FyZDxBcmd1bWVudHM+KGFyZ3VtZW50cykuLi4pKTsKICAgICB9CiAK
LSAgICBib29sIGlzQWNjZWxlcmF0ZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBCYWNrZW5k
VHlwZTo6aXNBY2NlbGVyYXRlZDsgfQorICAgIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEJhY2tlbmRUeXBlOjpyZW5kZXJpbmdNb2RlOyB9CiAK
IHByb3RlY3RlZDoKICAgICBDb25jcmV0ZUltYWdlQnVmZmVyKHN0ZDo6dW5pcXVlX3B0cjxCYWNr
ZW5kVHlwZT4mJiBiYWNrZW5kID0gbnVsbHB0ciwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
IHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciA9IFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cjo6Z2VuZXJhdGUoKSkKQEAgLTYwLDYgKzYwLDE0IEBAIHByb3RlY3RlZDoKICAgICB7CiAgICAg
fQogCisgICAgdm9pZCBzZXRCYWNrZW5kKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckJhY2tl
bmQ+JiYgYmFja2VuZCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIEFTU0VSVCghbV9iYWNrZW5k
KTsKKyAgICAgICAgbV9iYWNrZW5kID0gc3RkOjp1bmlxdWVfcHRyPEJhY2tlbmRUeXBlPiB7IHN0
YXRpY19jYXN0PEJhY2tlbmRUeXBlKj4oYmFja2VuZC5yZWxlYXNlKCkpIH07CisgICAgfQorCisg
ICAgdm9pZCBjbGVhckJhY2tlbmQoKSBvdmVycmlkZSB7IG1fYmFja2VuZCA9IG51bGxwdHI7IH0K
KwogICAgIHZpcnR1YWwgQmFja2VuZFR5cGUqIGVuc3VyZUJhY2tlbmRDcmVhdGVkKCkgY29uc3Qg
eyByZXR1cm4gbV9iYWNrZW5kLmdldCgpOyB9CiAKICAgICBSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gbV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI7IH0KQEAgLTEwNiw2ICsxMTQsMjAgQEAg
cHJvdGVjdGVkOgogICAgICAgICByZXR1cm4gMTsKICAgICB9CiAKKyAgICBDb2xvclNwYWNlIGNv
bG9yU3BhY2UoKSBjb25zdCBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKGF1dG8qIGJhY2tl
bmQgPSBlbnN1cmVCYWNrZW5kQ3JlYXRlZCgpKQorICAgICAgICAgICAgcmV0dXJuIGJhY2tlbmQt
PmNvbG9yU3BhY2UoKTsKKyAgICAgICAgcmV0dXJuIENvbG9yU3BhY2U6OlNSR0I7CisgICAgfQor
CisgICAgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQoKSBjb25zdCBvdmVycmlkZQorICAgIHsKKyAg
ICAgICAgaWYgKGF1dG8qIGJhY2tlbmQgPSBlbnN1cmVCYWNrZW5kQ3JlYXRlZCgpKQorICAgICAg
ICAgICAgcmV0dXJuIGJhY2tlbmQtPnBpeGVsRm9ybWF0KCk7CisgICAgICAgIHJldHVybiBQaXhl
bEZvcm1hdDo6QkdSQTg7CisgICAgfQorCiAgICAgc2l6ZV90IG1lbW9yeUNvc3QoKSBjb25zdCBv
dmVycmlkZQogICAgIHsKICAgICAgICAgcmV0dXJuIG1fYmFja2VuZCA/IG1fYmFja2VuZC0+bWVt
b3J5Q29zdCgpIDogMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZUJ1ZmZlci5oCmluZGV4IDgyYzM2MTJjMDBmZTk3NWJkMzg5NzE1OTMyM2I2YWM4MTAxYjkyNTMu
LmU3ZGEwZDgzOGQ3NTk5NGUyYWZmNmZlMTQ0ZDlhMjQxNTJmNTA3ZDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaApAQCAtMjcsNiArMjcsNyBA
QAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkRpc3BsYXlMaXN0Rmx1c2hJZGVudGlmaWVy
LmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXJCYWNrZW5kLmgiCiAjaW5jbHVkZSAiUmVuZGVyaW5n
TW9kZS5oIgogI2luY2x1ZGUgIlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5oIgpAQCAtNjAs
MTAgKzYxLDEzIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgRmxvYXRSZWN0IGNsYW1wZWRSZWN0KGNv
bnN0IEZsb2F0UmVjdCYpOwogCiAgICAgc3RhdGljIEludFNpemUgY29tcGF0aWJsZUJ1ZmZlclNp
emUoY29uc3QgRmxvYXRTaXplJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0Jik7Ci0gICAgCisKICAg
ICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5JbWFnZUJ1ZmZlcigpID0gZGVmYXVsdDsKIAotICAg
IHZpcnR1YWwgYm9vbCBpc0FjY2VsZXJhdGVkKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBzZXRCYWNrZW5kKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckJhY2tlbmQ+JiYpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJCYWNrZW5kKCkgPSAwOworCisgICAgdmlydHVhbCBSZW5k
ZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCkgY29uc3Qg
eyByZXR1cm4geyB9OyB9CiAgICAgCiAgICAgdmlydHVhbCBHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQoKSBjb25zdCA9IDA7CkBAIC03NCwxMSArNzgsMTQgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBmbHVzaERyYXdpbmdDb250ZXh0KCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGZsdXNoRHJh
d2luZ0NvbnRleHRBbmRDb21taXQoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc3VibWl0RGlzcGxh
eUxpc3QoY29uc3QgRGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JikgeyB9CisgICAgdmlydHVhbCB2
b2lkIGNvbW1pdEZsdXNoRGlzcGxheUxpc3QoRGlzcGxheUxpc3Q6OkZsdXNoSWRlbnRpZmllcikg
eyB9CiAKICAgICB2aXJ0dWFsIEFmZmluZVRyYW5zZm9ybSBiYXNlVHJhbnNmb3JtKCkgY29uc3Qg
PSAwOwogICAgIHZpcnR1YWwgSW50U2l6ZSBsb2dpY2FsU2l6ZSgpIGNvbnN0ID0gMDsKICAgICB2
aXJ0dWFsIEludFNpemUgYmFja2VuZFNpemUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBmbG9h
dCByZXNvbHV0aW9uU2NhbGUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBDb2xvclNwYWNlIGNv
bG9yU3BhY2UoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1h
dCgpIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1YWwgc2l6ZV90IG1lbW9yeUNvc3QoKSBjb25zdCA9
IDA7CiAgICAgdmlydHVhbCBzaXplX3QgZXh0ZXJuYWxNZW1vcnlDb3N0KCkgY29uc3QgPSAwOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJC
YWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJh
Y2tlbmQuaAppbmRleCA1ODA2NzE1YTdiMmM4NzU3NjkwMmE3NzM1ODRkZjE4MDU4MjUxMDBmLi44
NzIzZjI0NjdiNjJjNmEyMWUzZDM1YmRjOTJlN2YwODE5ODNlNzUxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaApAQCAt
MzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkltYWdlUGFpbnRpbmdPcHRpb25zLmgiCiAjaW5jbHVk
ZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtTGF5ZXIuaCIKKyNpbmNsdWRlICJSZW5k
ZXJpbmdNb2RlLmgiCiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KIApAQCAtMTI3LDcgKzEyOCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHN0ZDo6dW5p
cXVlX3B0cjxUaHJlYWRTYWZlSW1hZ2VCdWZmZXJGbHVzaGVyPiBjcmVhdGVGbHVzaGVyKCkgeyBy
ZXR1cm4gbnVsbHB0cjsgfQogICAgIAogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc09yaWdp
bkF0VXBwZXJMZWZ0Q29ybmVyID0gZmFsc2U7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlz
QWNjZWxlcmF0ZWQgPSBmYWxzZTsKKyAgICBzdGF0aWMgY29uc3RleHByIFJlbmRlcmluZ01vZGUg
cmVuZGVyaW5nTW9kZSA9IFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQ7CiAKIHByb3RlY3Rl
ZDoKICAgICBXRUJDT1JFX0VYUE9SVCBJbWFnZUJ1ZmZlckJhY2tlbmQoY29uc3QgRmxvYXRTaXpl
JiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRp
b25TY2FsZSwgQ29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1JbWFnZUJ1ZmZlci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1JbWFnZUJ1ZmZlci5oCmluZGV4IGIwNWZh
NjUxNjk3MWQxNzY3MTMxZDU2YTQ2MzkzNTNlZjk0ZTQ5MjUuLjUyZGQ4M2NjOTNkNTU1M2IzNzll
NTg3ZDQzODVkNGY3ODA1OTQ0YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1BsYXRmb3JtSW1hZ2VCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybUltYWdlQnVmZmVyLmgKQEAgLTc1LDUgKzc1LDUgQEAgdXNp
bmcgRGlzcGxheUxpc3RBY2NlbGVyYXRlZEltYWdlQnVmZmVyID0gRGlzcGxheUxpc3Q6OkltYWdl
QnVmZmVyPEFjY2VsZXJhdGVkSW0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogU1BFQ0lBTEla
RV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpBY2NlbGVyYXRlZEltYWdlQnVmZmVyKQotICAg
IHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpJbWFnZUJ1ZmZlciYgYnVmZmVyKSB7
IHJldHVybiBidWZmZXIuaXNBY2NlbGVyYXRlZCgpOyB9CisgICAgc3RhdGljIGJvb2wgaXNUeXBl
KGNvbnN0IFdlYkNvcmU6OkltYWdlQnVmZmVyJiBidWZmZXIpIHsgcmV0dXJuIGJ1ZmZlci5yZW5k
ZXJpbmdNb2RlKCkgPT0gV2ViQ29yZTo6UmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQ7IH0KIFNQ
RUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5k
LmgKaW5kZXggZGU5ODIxMTFlNTJjMTJlZGIwOGRjNzg4YjUwZWNlZmIzNjUwNzY1MC4uZDYyMDI1
Y2ZiNjM5NzEzOGMwNWVjMDUzYjQ3YjQ3ZjlkOWM1YTRmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1
cmZhY2VCYWNrZW5kLmgKQEAgLTY5LDcgKzY5LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVsZWFz
ZUJ1ZmZlclRvUG9vbCgpIG92ZXJyaWRlOwogCiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlz
T3JpZ2luQXRVcHBlckxlZnRDb3JuZXIgPSB0cnVlOwotICAgIHN0YXRpYyBjb25zdGV4cHIgYm9v
bCBpc0FjY2VsZXJhdGVkID0gdHJ1ZTsKKyAgICBzdGF0aWMgY29uc3RleHByIFJlbmRlcmluZ01v
ZGUgcmVuZGVyaW5nTW9kZSA9IFJlbmRlcmluZ01vZGU6OkFjY2VsZXJhdGVkOwogCiBwcm90ZWN0
ZWQ6CiAgICAgc3RhdGljIFJldGFpblB0cjxDR0NvbG9yU3BhY2VSZWY+IGNvbnRleHRDb2xvclNw
YWNlKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaAppbmRleCA3
ZjYwNzhmODg0ZmMzNWM0ZjVhODM4NGU1ZjI4OGUzNzE4ODRhMTdlLi5mNDc2ZDZkYmI2ZGM5ZDVi
NjY4OGNlMjFjODBiMGQ1ZDdkM2YwOTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaApAQCAtMzMs
NyArMzMsNiBAQAogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAjaW5jbHVkZSA8d3RmL0hh
c2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KLSNpbmNsdWRlIDx3dGYvT2Jq
ZWN0SWRlbnRpZmllci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtNDUsOSArNDQsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIG5hbWVzcGFjZSBEaXNwbGF5TGlzdCB7CiAKLWVudW0gRmx1c2hJZGVudGlmaWVyVHlwZSB7
IH07Ci11c2luZyBGbHVzaElkZW50aWZpZXIgPSBPYmplY3RJZGVudGlmaWVyPEZsdXNoSWRlbnRp
ZmllclR5cGU+OwotCiBlbnVtIEFzVGV4dEZsYWcgewogICAgIE5vbmUgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSAwLAogICAgIEluY2x1ZGVzUGxhdGZvcm1PcGVyYXRpb25zICAgICAgPSAx
IDw8IDAsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RGbHVzaElkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEZsdXNoSWRlbnRpZmllci5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjljZjc4MTY4ZWJiN2ZjNzM3YjliNGE2Y2Y4ZDUzNzI5ZjVhMDYwZWMKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RGbHVzaElkZW50aWZpZXIuaApAQCAtMCwwICsxLDM5IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvT2JqZWN0SWRlbnRpZmllci5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBEaXNwbGF5TGlzdCB7CisKK2Vu
dW0gRmx1c2hJZGVudGlmaWVyVHlwZSB7IH07Cit1c2luZyBGbHVzaElkZW50aWZpZXIgPSBPYmpl
Y3RJZGVudGlmaWVyPEZsdXNoSWRlbnRpZmllclR5cGU+OworCit9IC8vIERpc3BsYXlMaXN0CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUGxhdGZvcm1SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1BsYXRmb3JtUmVtb3RlSW1hZ2VCdWZm
ZXJQcm94eS5oCmluZGV4IDA1MTc2NzgzZDU1MzFiZmU3MGY4NTBiZjJjMTQ5Zjc4ODIyZDBlMzku
LjlhZmYwODhlMzdjYTc2YTdmODY0YWU3ZTQyYmJiNzAwNGYxZjE1MjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUGxhdGZvcm1SZW1vdGVJbWFnZUJ1
ZmZlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9Q
bGF0Zm9ybVJlbW90ZUltYWdlQnVmZmVyUHJveHkuaApAQCAtMzcsMTQgKzM3LDQgQEAgdXNpbmcg
QWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlclByb3h5ID0gUmVtb3RlSW1hZ2VCdWZmZXJQcm94
eTxBY2NlbGVyYXRlZEltYWcKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKLVNQRUNJQUxJWkVf
VFlQRV9UUkFJVFNfQkVHSU4oV2ViS2l0OjpVbmFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXJQ
cm94eSkKLSAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6SW1hZ2VCdWZmZXIm
IGltYWdlQnVmZmVyKSB7IHJldHVybiBpbWFnZUJ1ZmZlci5yZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIoKSAmJiAhaW1hZ2VCdWZmZXIuaXNBY2NlbGVyYXRlZCgpOyB9Ci1TUEVDSUFMSVpFX1RZ
UEVfVFJBSVRTX0VORCgpCi0KLSNpZiBIQVZFKElPU1VSRkFDRSkKLVNQRUNJQUxJWkVfVFlQRV9U
UkFJVFNfQkVHSU4oV2ViS2l0OjpBY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyUHJveHkpCi0g
ICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OkltYWdlQnVmZmVyJiBpbWFnZUJ1
ZmZlcikgeyByZXR1cm4gaW1hZ2VCdWZmZXIucmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCkg
JiYgaW1hZ2VCdWZmZXIuaXNBY2NlbGVyYXRlZCgpOyB9Ci1TUEVDSUFMSVpFX1RZUEVfVFJBSVRT
X0VORCgpCi0jZW5kaWYKLQogI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZm
ZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJ
bWFnZUJ1ZmZlclByb3h5LmgKaW5kZXggMDU3ZGNhZDY2NTI3OGUyODE2Mjc3YjMwY2QyZGE4Njk3
YzEzZDU5Mi4uMDczZWY2YjgzYWNlYzIwZWI4NzNmNWZlZDE4NzU0MWVhMTA4MDBmNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1
ZmZlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9S
ZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgKQEAgLTY1LDEyICs2NSwxMiBAQCBjbGFzcyBSZW1vdGVJ
bWFnZUJ1ZmZlclByb3h5IDogcHVibGljIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJbWFnZUJ1ZmZl
cjxCYWNrZW5kVAogICAgIHVzaW5nIEJhc2VEaXNwbGF5TGlzdEltYWdlQnVmZmVyOjptX3JlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcjsKIAogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8UmVt
b3RlSW1hZ2VCdWZmZXJQcm94eT4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgc2l6
ZSwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9u
U2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgV2ViQ29yZTo6UGl4ZWxGb3Jt
YXQgcGl4ZWxGb3JtYXQsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSYgcmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5KQorICAgIHN0YXRpYyBSZWZQdHI8UmVtb3RlSW1hZ2VCdWZmZXJQcm94
eT4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlv
blNjYWxlLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkmIHJlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eSkKICAgICB7CiAgICAgICAgIGlmIChCYWNrZW5kVHlwZTo6Y2FsY3VsYXRlQmFja2Vu
ZFNpemUoc2l6ZSwgcmVzb2x1dGlvblNjYWxlKS5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFJlbW90ZUltYWdlQnVm
ZmVyUHJveHkoc2l6ZSwgcmVuZGVyaW5nTW9kZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNl
LCBwaXhlbEZvcm1hdCwgcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KSk7CisgICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgUmVtb3RlSW1hZ2VCdWZmZXJQcm94eShzaXplLCByZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHkpKTsKICAgICB9CiAKICAgICB+UmVtb3RlSW1hZ2VCdWZmZXJQcm94
eSgpCkBAIC04MiwyNSArODIsNiBAQCBwdWJsaWM6CiAgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5LT5yZWxlYXNlUmVtb3RlUmVzb3VyY2UobV9yZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIpOwogICAgIH0KIAotICAgIHZvaWQgY2xlYXJCYWNrZW5kKCkgeyBtX2JhY2tlbmQg
PSBudWxscHRyOyB9Ci0KLSAgICB2b2lkIGNyZWF0ZUJhY2tlbmQoY29uc3QgV2ViQ29yZTo6Rmxv
YXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgYmFja2VuZFNpemUs
IGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSBjb2xvclNwYWNlLCBX
ZWJDb3JlOjpQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxl
IGhhbmRsZSkKLSAgICB7Ci0gICAgICAgIEFTU0VSVCghbV9iYWNrZW5kKTsKLSAgICAgICAgbV9i
YWNrZW5kID0gQmFja2VuZFR5cGU6OmNyZWF0ZShsb2dpY2FsU2l6ZSwgYmFja2VuZFNpemUsIHJl
c29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQsIFdURk1vdmUoaGFuZGxlKSk7
Ci0gICAgfQotCi0gICAgdm9pZCBjb21taXRGbHVzaERpc3BsYXlMaXN0KFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpGbHVzaElkZW50aWZpZXIgZmx1c2hJZGVudGlmaWVyKQotICAgIHsKLSAgICAgICAg
bV9yZWNlaXZlZEZsdXNoSWRlbnRpZmllciA9IGZsdXNoSWRlbnRpZmllcjsKLSAgICB9Ci0KLSAg
ICBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7
IH0KLSAgICBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUoKSBjb25zdCB7IHJl
dHVybiBtX3JlbmRlcmluZ01vZGU7IH0KLSAgICBmbG9hdCByZXNvbHV0aW9uU2NhbGUoKSBjb25z
dCBmaW5hbCB7IHJldHVybiBtX3Jlc29sdXRpb25TY2FsZTsgfQotICAgIFdlYkNvcmU6OkNvbG9y
U3BhY2UgY29sb3JTcGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29sb3JTcGFjZTsgfQotICAgIFdl
YkNvcmU6OlBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0KCkgY29uc3QgeyByZXR1cm4gbV9waXhlbEZv
cm1hdDsgfQotCiAgICAgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGNyZWF0ZUltYWdlQnVmZmVy
QmFja2VuZEhhbmRsZSgpCiAgICAgewogICAgICAgICBlbnN1cmVCYWNrZW5kQ3JlYXRlZCgpOwpA
QCAtMTA4LDE0ICs4OSw5IEBAIHB1YmxpYzoKICAgICB9CiAKIHByb3RlY3RlZDoKLSAgICBSZW1v
dGVJbWFnZUJ1ZmZlclByb3h5KGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgc2l6ZSwgV2ViQ29y
ZTo6UmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdl
YkNvcmU6OkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgV2ViQ29yZTo6UGl4ZWxGb3JtYXQgcGl4ZWxG
b3JtYXQsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSYgcmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5KQorICAgIFJlbW90ZUltYWdlQnVmZmVyUHJveHkoY29uc3QgV2ViQ29yZTo6RmxvYXRT
aXplJiBzaXplLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkmIHJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eSkKICAgICAgICAgOiBCYXNlRGlzcGxheUxpc3RJbWFnZUJ1ZmZlcihzaXplLCB0
aGlzKQogICAgICAgICAsIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KG1ha2VXZWFrUHRy
KHJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkpCi0gICAgICAgICwgbV9zaXplKHNpemUpCi0g
ICAgICAgICwgbV9yZW5kZXJpbmdNb2RlKHJlbmRlcmluZ01vZGUpCi0gICAgICAgICwgbV9yZXNv
bHV0aW9uU2NhbGUocmVzb2x1dGlvblNjYWxlKQotICAgICAgICAsIG1fY29sb3JTcGFjZShjb2xv
clNwYWNlKQotICAgICAgICAsIG1fcGl4ZWxGb3JtYXQocGl4ZWxGb3JtYXQpCiAgICAgewogICAg
ICAgICBBU1NFUlQobV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpOwogICAgICAgICBtX3Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+cmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5KCkuY2Fj
aGVJbWFnZUJ1ZmZlcigqdGhpcyk7CkBAIC0yMDgsNiArMTg0LDExIEBAIHByb3RlY3RlZDoKICAg
ICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHktPnN1Ym1pdERpc3BsYXlMaXN0KGRp
c3BsYXlMaXN0LCBtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAgfQogCisgICAg
dm9pZCBjb21taXRGbHVzaERpc3BsYXlMaXN0KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpGbHVzaElk
ZW50aWZpZXIgZmx1c2hJZGVudGlmaWVyKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgbV9yZWNl
aXZlZEZsdXNoSWRlbnRpZmllciA9IGZsdXNoSWRlbnRpZmllcjsKKyAgICB9CisKICAgICB2b2lk
IHdpbGxBcHBlbmRJdGVtT2ZUeXBlKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZSkgb3Zl
cnJpZGUKICAgICB7CiAgICAgICAgIGNvbnN0ZXhwciBzaXplX3QgRGlzcGxheUxpc3RCYXRjaFNp
emUgPSA1MTI7CkBAIC0zNDQsMTEgKzMyNSw2IEBAIHByb3RlY3RlZDoKICAgICBXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6Rmx1c2hJZGVudGlmaWVyIG1fcmVjZWl2ZWRGbHVzaElkZW50aWZpZXI7CiAg
ICAgV2Vha1B0cjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk+IG1fcmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5OwogICAgIHNpemVfdCBtX2l0ZW1Db3VudEluQ3VycmVudERpc3BsYXlMaXN0
IHsgMCB9OwotICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBtX3NpemU7Ci0gICAgV2ViQ29yZTo6UmVu
ZGVyaW5nTW9kZSBtX3JlbmRlcmluZ01vZGU7Ci0gICAgZmxvYXQgbV9yZXNvbHV0aW9uU2NhbGU7
Ci0gICAgV2ViQ29yZTo6Q29sb3JTcGFjZSBtX2NvbG9yU3BhY2U7Ci0gICAgV2ViQ29yZTo6UGl4
ZWxGb3JtYXQgbV9waXhlbEZvcm1hdDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwCmluZGV4IDM2YjAzZDM4MWVkMmM1
MjQxY2ZjZDNmNWIzNTUxNzhiYjM4Y2Y2YTUuLjg1NDRhOTJmNTA2MjU3YTQ0ZWQ1NjFiYjBkMzQz
M2E0NDJlYmRlMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAK
QEAgLTcwLDI0ICs3MCwxNSBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Y29u
bmVjdFRvR1BVUHJvY2VzcygpCiAgICAgc2VuZChNZXNzYWdlczo6R1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6Q3JlYXRlUmVuZGVyaW5nQmFja2VuZChtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlm
aWVyKSwgMCk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdGF0aWMgdm9pZCByZWNyZWF0
ZUltYWdlQnVmZmVyKFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSYgcHJveHksIFQmIGltYWdl
QnVmZmVyLCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVzb3VyY2VJZGVudGlmaWVyLCBS
ZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciByZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcikKLXsK
LSAgICBpbWFnZUJ1ZmZlci5jbGVhckJhY2tlbmQoKTsKLSAgICBwcm94eS5zZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpDcmVhdGVJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlci5z
aXplKCksIGltYWdlQnVmZmVyLnJlbmRlcmluZ01vZGUoKSwgaW1hZ2VCdWZmZXIucmVzb2x1dGlv
blNjYWxlKCksIGltYWdlQnVmZmVyLmNvbG9yU3BhY2UoKSwgaW1hZ2VCdWZmZXIucGl4ZWxGb3Jt
YXQoKSwgcmVzb3VyY2VJZGVudGlmaWVyKSwgcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOwot
fQotCiB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6cmVlc3RhYmxpc2hHUFVQcm9j
ZXNzQ29ubmVjdGlvbigpCiB7CiAgICAgY29ubmVjdFRvR1BVUHJvY2VzcygpOwogCi0gICAgZm9y
IChhdXRvJiBwYWlyIDogbV9yZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuaW1hZ2VCdWZmZXJzKCkp
IHsKLSAgICAgICAgaWYgKGF1dG8mIGJhc2VJbWFnZUJ1ZmZlciA9IHBhaXIudmFsdWUpIHsKLSAg
ICAgICAgICAgIGlmIChpczxBY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyUHJveHk+KCpiYXNl
SW1hZ2VCdWZmZXIpKQotICAgICAgICAgICAgICAgIHJlY3JlYXRlSW1hZ2VCdWZmZXIoKnRoaXMs
IGRvd25jYXN0PEFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXJQcm94eT4oKmJhc2VJbWFnZUJ1
ZmZlciksIHBhaXIua2V5LCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKLSAgICAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgICAgICByZWNyZWF0ZUltYWdlQnVmZmVyKCp0aGlzLCBkb3du
Y2FzdDxVbmFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXJQcm94eT4oKmJhc2VJbWFnZUJ1ZmZl
ciksIHBhaXIua2V5LCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKLSAgICAgICAgfQor
ICAgIGZvciAoYXV0byYgaW1hZ2VCdWZmZXIgOiBtX3JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5p
bWFnZUJ1ZmZlcnMoKS52YWx1ZXMoKSkgeworICAgICAgICBpZiAoIWltYWdlQnVmZmVyKQorICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQ6OkNyZWF0ZUltYWdlQnVmZmVyKGltYWdlQnVmZmVyLT5sb2dpY2FsU2l6ZSgpLCBp
bWFnZUJ1ZmZlci0+cmVuZGVyaW5nTW9kZSgpLCBpbWFnZUJ1ZmZlci0+cmVzb2x1dGlvblNjYWxl
KCksIGltYWdlQnVmZmVyLT5jb2xvclNwYWNlKCksIGltYWdlQnVmZmVyLT5waXhlbEZvcm1hdCgp
LCBpbWFnZUJ1ZmZlci0+cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCkpLCBtX3JlbmRlcmlu
Z0JhY2tlbmRJZGVudGlmaWVyKTsKKyAgICAgICAgaW1hZ2VCdWZmZXItPmNsZWFyQmFja2VuZCgp
OwogICAgIH0KIH0KIApAQCAtMTI5LDEwICsxMjAsMTAgQEAgUmVmUHRyPEltYWdlQnVmZmVyPiBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0
U2kKICAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyOwogCiAgICAgaWYgKHJlbmRl
cmluZ01vZGUgPT0gUmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQpCi0gICAgICAgIGltYWdlQnVm
ZmVyID0gQWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlclByb3h5OjpjcmVhdGUoc2l6ZSwgcmVu
ZGVyaW5nTW9kZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCwgKnRo
aXMpOworICAgICAgICBpbWFnZUJ1ZmZlciA9IEFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXJQ
cm94eTo6Y3JlYXRlKHNpemUsIHJlc29sdXRpb25TY2FsZSwgKnRoaXMpOwogCiAgICAgaWYgKCFp
bWFnZUJ1ZmZlcikKLSAgICAgICAgaW1hZ2VCdWZmZXIgPSBVbmFjY2VsZXJhdGVkUmVtb3RlSW1h
Z2VCdWZmZXJQcm94eTo6Y3JlYXRlKHNpemUsIHJlbmRlcmluZ01vZGUsIHJlc29sdXRpb25TY2Fs
ZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQsICp0aGlzKTsKKyAgICAgICAgaW1hZ2VCdWZmZXIg
PSBVbmFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6Y3JlYXRlKHNpemUsIHJlc29s
dXRpb25TY2FsZSwgKnRoaXMpOwogCiAgICAgaWYgKGltYWdlQnVmZmVyKSB7CiAgICAgICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OkNyZWF0ZUltYWdlQnVmZmVyKHNp
emUsIHJlbmRlcmluZ01vZGUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3Jt
YXQsIGltYWdlQnVmZmVyLT5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSksIG1fcmVuZGVy
aW5nQmFja2VuZElkZW50aWZpZXIpOwpAQCAtMTg5LDIyICsxODAsMTYgQEAgdm9pZCBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHk6OmltYWdlQnVmZmVyQmFja2VuZFdhc0NyZWF0ZWQoY29uc3Qg
RmxvYXRTaXplJgogICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAgICAgIHJldHVybjsKICAgICAK
LSAgICBpZiAoaW1hZ2VCdWZmZXItPmlzQWNjZWxlcmF0ZWQoKSkKLSAgICAgICAgZG93bmNhc3Q8
QWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlclByb3h5PigqaW1hZ2VCdWZmZXIpLmNyZWF0ZUJh
Y2tlbmQobG9naWNhbFNpemUsIGJhY2tlbmRTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3Bh
Y2UsIHBpeGVsRm9ybWF0LCBXVEZNb3ZlKGhhbmRsZSkpOworICAgIGlmIChpbWFnZUJ1ZmZlci0+
cmVuZGVyaW5nTW9kZSgpID09IFJlbmRlcmluZ01vZGU6OkFjY2VsZXJhdGVkKQorICAgICAgICBp
bWFnZUJ1ZmZlci0+c2V0QmFja2VuZChBY2NlbGVyYXRlZEltYWdlQnVmZmVyU2hhcmVhYmxlQmFj
a2VuZDo6Y3JlYXRlKGxvZ2ljYWxTaXplLCBiYWNrZW5kU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBj
b2xvclNwYWNlLCBwaXhlbEZvcm1hdCwgV1RGTW92ZShoYW5kbGUpKSk7CiAgICAgZWxzZQotICAg
ICAgICBkb3duY2FzdDxVbmFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXJQcm94eT4oKmltYWdl
QnVmZmVyKS5jcmVhdGVCYWNrZW5kKGxvZ2ljYWxTaXplLCBiYWNrZW5kU2l6ZSwgcmVzb2x1dGlv
blNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCwgV1RGTW92ZShoYW5kbGUpKTsKKyAgICAg
ICAgaW1hZ2VCdWZmZXItPnNldEJhY2tlbmQoVW5hY2NlbGVyYXRlZEltYWdlQnVmZmVyU2hhcmVh
YmxlQmFja2VuZDo6Y3JlYXRlKGxvZ2ljYWxTaXplLCBiYWNrZW5kU2l6ZSwgcmVzb2x1dGlvblNj
YWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCwgV1RGTW92ZShoYW5kbGUpKSk7CiB9CiAKIHZv
aWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpmbHVzaERpc3BsYXlMaXN0V2FzQ29tbWl0
dGVkKERpc3BsYXlMaXN0OjpGbHVzaElkZW50aWZpZXIgZmx1c2hJZGVudGlmaWVyLCBSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogewotICAg
IGF1dG8gaW1hZ2VCdWZmZXIgPSBtX3JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jYWNoZWRJbWFn
ZUJ1ZmZlcihyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwotICAgIGlmICghaW1hZ2VCdWZm
ZXIpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChpbWFnZUJ1ZmZlci0+aXNBY2NlbGVyYXRl
ZCgpKQotICAgICAgICBkb3duY2FzdDxBY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyUHJveHk+
KCppbWFnZUJ1ZmZlcikuY29tbWl0Rmx1c2hEaXNwbGF5TGlzdChmbHVzaElkZW50aWZpZXIpOwot
ICAgIGVsc2UKLSAgICAgICAgZG93bmNhc3Q8VW5hY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVy
UHJveHk+KCppbWFnZUJ1ZmZlcikuY29tbWl0Rmx1c2hEaXNwbGF5TGlzdChmbHVzaElkZW50aWZp
ZXIpOworICAgIGlmIChhdXRvIGltYWdlQnVmZmVyID0gbV9yZW1vdGVSZXNvdXJjZUNhY2hlUHJv
eHkuY2FjaGVkSW1hZ2VCdWZmZXIocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSkKKyAgICAg
ICAgaW1hZ2VCdWZmZXItPmNvbW1pdEZsdXNoRGlzcGxheUxpc3QoZmx1c2hJZGVudGlmaWVyKTsK
IH0KIAogdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OnVwZGF0ZVJldXNhYmxlSGFu
ZGxlcygpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414861</attachid>
            <date>2020-11-25 02:09:42 -0800</date>
            <delta_ts>2020-11-25 22:03:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219007-20201125020941.patch</filename>
            <type>text/plain</type>
            <size>87778</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwMTY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzIzYWI2YjRlNmM0NDFj
MDYzZWM1Mzg0YzZmOTA5NDdiZDFhNDY5ZC4uYzBmMTE1NDhhN2Y1ZGU1MzZjYzA0Yjk3Yzc2MjBl
Yzg0YzJhNTAxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc4IEBACisyMDIwLTExLTI1ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10g
Q2xlYW4gdXAgcmVjcmVhdGluZyB0aGUgSW1hZ2VCdWZmZXJCYWNrZW5kIGJlY2F1c2Ugb2YgR1BV
IGNyYXNoaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMTkwMDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAtLSBBZGQgdGhlIHN0cnVjdHVyZSBJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnMuIE1h
a2UgQ29uY3JldGVJbWFnZUJ1ZmZlcgorICAgICAgICAgICBvd24gYW4gaW5zdGFuY2Ugb2YgdGhp
cyBzdHJ1Y3R1cmUuIEFuZCBtYWtlIEltYWdlQnVmZmVyQmFja2VuZCBvd24gYQorICAgICAgICAg
ICBjb25zdCByZWZlcmVuY2UgdG8gdGhpcyBzdHJ1Y3R1cmUuCisgICAgICAgIC0tIEV4cG9zZSB0
aGUgSW1hZ2VCdWZmZXJCYWNrZW5kIGNyZWF0aW9uIHBhcmFtZXRlcnMgdGhyb3VnaCBJbWFnZUJ1
ZmZlci4KKyAgICAgICAgLS0gRXhwb3NlIG1ldGhvZHMgdG8gc2V0IGFuZCBjbGVhciB0aGUgYmFj
a2VuZCBvZiBhbiBJbWFnZUJ1ZmZlci4KKyAgICAgICAgLS0gRXhwb3NlIHN1Ym1pdERyYXdpbmdD
b250ZXh0KCkgYW5kIGRpZEZsdXNoKCkgdGhyb3VnaCBJbWFnZUJ1ZmZlciBzbyBubworICAgICAg
ICAgICBjYXN0aW5nIGlzIG5lZWRlZCB3aGVuIGNhbGxpbmcgdGhlc2UgZnVuY3Rpb25zIHRocm91
Z2ggUmVtb3RlSW1hZ2VCdWZlclByb3h5LgorICAgICAgICAtLSBSZXBsYWNlIGFsbCB0aGUgaW5z
dGFuY2VzIG9mICdpc0FjY2VsZXJhdGVkJyBieSAncmVuZGVyaW5nTW9kZScgc28gbm8KKyAgICAg
ICAgICAgbmVlZCB0byBjb252ZXJ0IG9uZSB0eXBlIHRvIHRoZSBvdGhlci4KKworICAgICAgICAq
IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBodG1sL2NhbnZh
cy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNh
bnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OnByZXBhcmVGb3JEaXNwbGF5KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmg6CisgICAgICAgIChXZWJD
b3JlOjpDb25jcmV0ZUltYWdlQnVmZmVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q29u
Y3JldGVJbWFnZUJ1ZmZlcjo6Q29uY3JldGVJbWFnZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVy
OjpzdWJtaXREcmF3aW5nQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6
c3VibWl0RGlzcGxheUxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmRpZEZs
dXNoKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpmbHVzaERyYXdpbmdDb250ZXh0
QW5kQ29tbWl0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1
ZmZlckJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjpJ
bWFnZUJ1ZmZlckJhY2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5k
Ojp0b0JHUkFEYXRhIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1
ZmZlckJhY2tlbmQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQmFja2VuZDo6YmFj
a2VuZFNpemUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjpt
ZW1vcnlDb3N0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQmFja2VuZDo6
Ynl0ZXNQZXJSb3cgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5k
Ojp0b0JhY2tlbmRDb29yZGluYXRlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1
ZmZlckJhY2tlbmQ6OmxvZ2ljYWxTaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
QnVmZmVyQmFja2VuZDo6cmVzb2x1dGlvblNjYWxlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlQnVmZmVyQmFja2VuZDo6Y29sb3JTcGFjZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OnBpeGVsRm9ybWF0IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlQnVmZmVyQmFja2VuZDo6bG9naWNhbFJlY3QgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjpiYWNrZW5kUmVjdCBjb25zdCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1JbWFnZUJ1ZmZlci5oOgorICAgICAgICAoaXNUeXBl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFj
a2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNhaXJvQmFja2VuZDo6ZHJh
d1BhdHRlcm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVy
Q2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVm
ZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kOjpwbGF0Zm9ybVRyYW5zZm9ybUNvbG9yU3BhY2Up
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCYWNrZW5kLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ0dCYWNrZW5kOjpzZXR1cENvbnRleHQg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OmNvcHlJbWFn
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNHQmFja2VuZDo6c2lua0lu
dG9JbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNHQmFja2VuZDo6ZHJhdyk6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNHQmFja2VuZDo6ZHJhd1BhdHRlcm4pOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OmJhc2VUcmFuc2Zvcm0gY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OnRvQ0ZEYXRhIGNv
bnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFw
QmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2Vu
ZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5k
OjpJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1
ZmZlckNHQml0bWFwQmFja2VuZDo6Y29weU5hdGl2ZUltYWdlIGNvbnN0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OkltYWdlQnVm
ZmVySU9TdXJmYWNlQmFja2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcklPU3Vy
ZmFjZUJhY2tlbmQ6OmRyYXdDb25zdW1pbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEZsdXNoSWRlbnRpZmllci5oOiBBZGRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJbWFn
ZUJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkltYWdlQnVmZmVyOjpJ
bWFnZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVy
RGlyZWN0MkRCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyRGlyZWN0
MkRCYWNrZW5kOjpjb3B5SW1hZ2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZm
ZXJEaXJlY3QyREJhY2tlbmQ6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJE
aXJlY3QyREJhY2tlbmQ6OmRyYXdQYXR0ZXJuKToKKwogMjAyMC0xMS0yMiAgQW50dGkgS29pdmlz
dG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ11bSW50ZWdyYXRpb25dIENvbnZl
cnQgc29tZSByZW1haW5pbmcgSW5saW5lQm94IGFjY2VzcyB0byB1c2UgaW5saW5lIGl0ZXJhdG9y
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCmluZGV4IGU5Nzc2OWJlYjQwYWZjNWY4ZGNjNDdjYjE0MWY4YzU4MDUwMzMxNGMuLmQw
YzgzNGJiMTU3NWY0NTIwNjRmMjcxNjA2YmQ3MDlhZjkwZTE3MTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsNTcgQEAKKzIwMjAtMTEtMjUgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2FpZEBhcHBsZS5jb20+
CisKKyAgICAgICAgW0dQVSBQcm9jZXNzXSBDbGVhbiB1cCByZWNyZWF0aW5nIHRoZSBJbWFnZUJ1
ZmZlckJhY2tlbmQgYmVjYXVzZSBvZiBHUFUgY3Jhc2hpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTAwNworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgaXMgbm8gbmVlZCB0byBzdG9yZSB0aGUg
YmFja2VuZCBwYXJhbWV0ZXJzIGluIFJlbW90ZUltYWdlQnVmZmVyUHJveHkuCisgICAgICAgIFRo
ZXNlIHBhcmFtZXRlcnMgY2FuIGJlIGFjY2Vzc2VkIGZyb20gdGhlIGN1cnJlbnQgSW1hZ2VCdWZm
ZXJCYWNrZW5kIHZpYQorICAgICAgICB0aGUgSW1hZ2VCdWZmZXIgYmVmb3JlIHRoZSBiYWNrZW5k
IGlzIGNsZWFyZWQuCisKKyAgICAgICAgUmVtb3ZlIHRoZSB0cmFpdHMgZGVmaW5pdGlvbiBmb3Ig
UmVtb3RlSW1hZ2VCdWZmZXJQcm94eSB0eXBlcyBiZWNhdXNlCisgICAgICAgIHRoZXkgYXJlIHdy
b25nLiBBbGwgSW1hZ2VCdWZmZXJzIGhhdmUgdmFsaWQgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyKCkKKyAgICAgICAgcmVnYXJkbGVzcyB3aGV0aGVyIHRoZXkgYXJlIHJlbW90ZSBvciBub3Qu
IEltYWdlQnVmZmVyOjpzZXRCYWNrZW5kIGFuZAorICAgICAgICBJbWFnZUJ1ZmZlcjo6Y29tbWl0
Rmx1c2hEaXNwbGF5TGlzdCgpIGFyZSBub3cgaW1wbGVtZW50ZWQgaW4gV2ViQ29yZS4KKworICAg
ICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaDoKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXI6OlJlbW90ZUltYWdlQnVmZmVyKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXI6OnN1Ym1pdERpc3BsYXlMaXN0KTogRGVsZXRlZC4K
KyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjppbWFnZUJ1ZmZlckJh
Y2tlbmRXYXNDcmVhdGVkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZDo6YXBwbHlEaXNwbGF5TGlzdHNGcm9tSGFuZGxlKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaDoKKyAgICAgICAgKiBTaGFyZWQvUmVtb3Rl
TGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZGlzcGxheSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViS2l0OjpJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OkltYWdl
QnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUGxhdGZvcm1SZW1vdGVJbWFnZUJ1ZmZlclByb3h5Lmg6
CisgICAgICAgIChpc1R5cGUpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
SW1hZ2VCdWZmZXJQcm94eTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VC
dWZmZXJQcm94eTo6UmVtb3RlSW1hZ2VCdWZmZXJQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUltYWdlQnVmZmVyUHJveHk6OmNsZWFyQmFja2VuZCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyUHJveHk6OmNyZWF0ZUJhY2tlbmQpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlclByb3h5OjpkaWRGbHVzaCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyUHJveHk6OnNpemUgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlclByb3h5OjpyZW5k
ZXJpbmdNb2RlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VC
dWZmZXJQcm94eTo6Y29sb3JTcGFjZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUltYWdlQnVmZmVyUHJveHk6OnBpeGVsRm9ybWF0IGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6c3VibWl0RGlzcGxheUxpc3Qp
OiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eTo6cmVlc3RhYmxpc2hHUFVQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Y3JlYXRlSW1hZ2VCdWZmZXIpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmltYWdlQnVmZmVy
QmFja2VuZFdhc0NyZWF0ZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHk6OmRpZEZsdXNoKToKKyAgICAgICAgKFdlYktpdDo6cmVjcmVhdGVJbWFnZUJ1ZmZl
cik6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFj
a2VuZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNl
QmFja2VuZDo6Y3JlYXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2Nv
YS9JbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQuaDoKKwogMjAyMC0xMS0yMSAg
U2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KIAogICAgICAgICBJbXBsZW1lbnQgYXVk
aW8gY2FwdHVyZSBmb3IgU3BlZWNoUmVjb2duaXRpb24gb24gbWFjT1MKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5MWQ3NGM3NDUy
MjU5NzkwNjc5MWFkMWU4YTIxMjgzZDU0YzYxMTY4Li5kZDVhYTFjMTUwNmRlMTk3OTMyNjU2NzNi
NzE4N2IyYWU0ZWQ0NDM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMTg3LDYgKzIxODcsNyBAQAogCQk3MjdBN0YzQTI0MDc4
Qjg0MDA0RDI5MzEgLyogSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MkJBQzNBQjIzRTFFNTQ0MDA4RDc0
MUMgLyogSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzI5OUJDNjcyM0Q2QTUzMjAwQ0M2ODgzIC8q
IEFscGhhUHJlbXVsdGlwbGljYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDcyOTlCQzY0MjNENjg2QTYwMENDNjg4MyAvKiBBbHBoYVByZW11bHRp
cGxpY2F0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNzI5OUJDNjgyM0Q2QTUzRTAwQ0M2ODgzIC8qIFJlbmRlcmluZ01vZGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyOTlCQzY2MjNENjg2QzYw
MENDNjg4MyAvKiBSZW5kZXJpbmdNb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzI5QzQ1RTgyNTZFMDkxOTAwMDQwN0NGIC8qIERpc3BsYXlM
aXN0Rmx1c2hJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3MjlDNDVFNjI1NkUwNUY5MDAwNDA3Q0YgLyogRGlzcGxheUxpc3RGbHVzaElk
ZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk3MjlEMDUzMDI1MzE0MjQzMDA0MjIwOTggLyogUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjlE
MDUyRTI1MzEzRTI2MDA0MjIwOTggLyogUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzJBNzNCRUYy
NDVBM0Y5MDAwMUM5RDAzIC8qIEFuaW1hdGlvbkZyYW1lUmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzIyQTgxNUMyMzhGRDUwNTAwQzAwNTgzIC8q
IEFuaW1hdGlvbkZyYW1lUmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTcyQUI5QTIxMjU1QTlGREUwMEU2RUJGMSAvKiBOYXRpdmVJbWFnZVJl
ZmVyZW5jZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NzJBQjlBMUYyNTVBOUVBNjAwRTZFQkYxIC8qIE5hdGl2ZUltYWdlUmVmZXJlbmNlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEwMDcyLDYgKzEw
MDczLDcgQEAKIAkJNzI3QUZFRDMxQTJFQTZBMDAwMDQ0MkU4IC8qIEVYVHNSR0IuaWRsICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dDsgcGF0aCA9IEVYVHNSR0IuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3Mjk5QkM2NDIzRDY4NkE2MDBDQzY4ODMgLyogQWxwaGFQcmVtdWx0aXBsaWNhdGlvbi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBBbHBoYVByZW11bHRpcGxpY2F0aW9uLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTcyOTlCQzY2MjNENjg2QzYwMENDNjg4MyAvKiBSZW5kZXJpbmdNb2Rl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlcmluZ01vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNzI5QzQ1RTYyNTZFMDVGOTAwMDQwN0NGIC8qIERpc3BsYXlMaXN0Rmx1c2hJZGVu
dGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpc3BsYXlMaXN0Rmx1c2hJZGVudGlmaWVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyOUQwNTJFMjUzMTNFMjYwMDQyMjA5OCAvKiBS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyQUI5QTFG
MjU1QTlFQTYwMEU2RUJGMSAvKiBOYXRpdmVJbWFnZVJlZmVyZW5jZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBOYXRpdmVJbWFnZVJlZmVyZW5jZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
MkJBQzNBNDIzRTE3MzI3MDA4RDc0MUMgLyogSW1hZ2VCdWZmZXJCYWNrZW5kLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEltYWdlQnVmZmVyQmFja2VuZC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzc5MCw2ICsxNzc5Miw3IEBACiAJCQkJMUNB
RjU2REUyNTMwMjQ1QTAwMTdCNDcyIC8qIERpc3BsYXlMaXN0RHJhd0dseXBoc1JlY29yZGVyQ29y
ZVRleHQuY3BwICovLAogCQkJCTU1QzBBMjk1MjNGRTJDRTAwMEYyQ0I5MyAvKiBEaXNwbGF5TGlz
dERyYXdpbmdDb250ZXh0LmNwcCAqLywKIAkJCQk3MkVBMDlGOTIzRkNDQzZBMDA4NTA0QTUgLyog
RGlzcGxheUxpc3REcmF3aW5nQ29udGV4dC5oICovLAorCQkJCTcyOUM0NUU2MjU2RTA1RjkwMDA0
MDdDRiAvKiBEaXNwbGF5TGlzdEZsdXNoSWRlbnRpZmllci5oICovLAogCQkJCTcyRUEwOUY3MjNG
Q0NCM0QwMDg1MDRBNSAvKiBEaXNwbGF5TGlzdEltYWdlQnVmZmVyLmggKi8sCiAJCQkJRjQyMkI4
QjYyNTNGNzA2NTAwNEU3N0U4IC8qIERpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAgKi8sCiAJCQkJ
RjQyMkI4QjUyNTNGNzA2NTAwNEU3N0U4IC8qIERpc3BsYXlMaXN0SXRlbUJ1ZmZlci5oICovLApA
QCAtMTgwMjIsNyArMTgwMjUsNiBAQAogCQkJCUExQ0M1NjRBMUY0NjEzQkIwMEE0NTU1QiAvKiBQ
YXltZW50UmVxdWVzdCAqLywKIAkJCQkxRDAwMjY5QTIzNzRCOUY4MDBDQTZDREYgLyogUGljdHVy
ZUluUGljdHVyZSAqLywKIAkJCQlBOUQyNDdGOTBENzU3RTQxMDBGREY5NTkgLyogUGx1Z2lucyAq
LywKLQkJCQk4OUY2MEIxNzE1N0Y2QTAyMDA3NUUxNTcgLyogUXVvdGEgKi8sCiAJCQkJQkM5ODU0
NDYwQ0QzREE1RjAwMDY5QkMxIC8qIFJhbmdlcyAqLywKIAkJCQlDRDhDNkMyNDIyRkREQTY0MDBB
NzIwQUIgLyogUmVtb3RlUGxheWJhY2sgKi8sCiAJCQkJNTE4MkMyNEMxRjMxNDIwOTAwNTlCQTdD
IC8qIFNlcnZpY2VXb3JrZXJzICovLApAQCAtMzE2NzQsNiArMzE2NzYsNyBAQAogCQkJCTBGRTVG
QkQzMUMzREQ1MUUwMDA3QTJDQSAvKiBEaXNwbGF5TGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MUNBRjU2REIyNTMwMUFDODAwMTdCNDcyIC8qIERpc3BsYXlMaXN0RHJhd0dseXBoc1JlY29yZGVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1NUFEMDk0MDI0MDg5NjQwMDBERTREMkYgLyogRGlzcGxh
eUxpc3REcmF3aW5nQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzI5QzQ1RTgyNTZFMDkx
OTAwMDQwN0NGIC8qIERpc3BsYXlMaXN0Rmx1c2hJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1NUFEMDkzRTI0MDg5NjM1MDBERTREMkYgLyogRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRjRENDBCQzkyNTU0NjNCRjAwNzIxMzQ5IC8qIERpc3BsYXlM
aXN0SXRlbUJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFNUZCRDUxQzNERDUxRTAwMDdB
MkNBIC8qIERpc3BsYXlMaXN0SXRlbXMuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNl
LmNwcAppbmRleCBhMzk1NGM3ZjVlNDJjNzJmNDFhMzg4ODk0NjViMzEyNDIyYTA0NmYyLi5lZDFh
YjA1ZmQwYTY1NDM1M2ViZmQxMDg4Mjc2NmNhOTUwMTg5ZWEzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNl
LmNwcApAQCAtMjA0Miw3ICsyMDQyLDcgQEAgR3JhcGhpY3NDb250ZXh0KiBDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkRCYXNlOjpkcmF3aW5nQ29udGV4dCgpIGNvbnN0CiB2b2lkIENhbnZhc1JlbmRl
cmluZ0NvbnRleHQyREJhc2U6OnByZXBhcmVGb3JEaXNwbGF5KCkKIHsKICAgICBpZiAoYXV0byBi
dWZmZXIgPSBjYW52YXNCYXNlKCkuYnVmZmVyKCkpCi0gICAgICAgIGJ1ZmZlci0+Zmx1c2hEcmF3
aW5nQ29udGV4dEFuZENvbW1pdCgpOworICAgICAgICBidWZmZXItPnN1Ym1pdERyYXdpbmdDb250
ZXh0KCk7CiB9CiAKIGJvb2wgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6bmVlZHNQcmVw
YXJhdGlvbkZvckRpc3BsYXkoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZlci5oCmluZGV4IDgyNDI5OTAwMmVlNjYw
ZjBiYWUzZjE2M2FkMWM4OWIwM2Q0ZGRhNzkuLjM5MzEzMjcxOGEwYzYwNmY0NDRiYjJiNDk4Mjhj
N2I2MDZjNDBlYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0NvbmNyZXRlSW1hZ2VCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmgKQEAgLTM2LDMwICszNiw0MSBAQCBwdWJsaWM6CiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgSW1hZ2VCdWZmZXJUeXBlID0gQ29uY3JldGVJbWFnZUJ1ZmZl
ciwgdHlwZW5hbWUuLi4gQXJndW1lbnRzPgogICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VCdWZmZXJU
eXBlPiBjcmVhdGUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUs
IENvbG9yU3BhY2UgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIGNvbnN0IEhv
c3RXaW5kb3cqIGhvc3RXaW5kb3csIEFyZ3VtZW50cyYmLi4uIGFyZ3VtZW50cykKICAgICB7Ci0g
ICAgICAgIGF1dG8gYmFja2VuZCA9IEJhY2tlbmRUeXBlOjpjcmVhdGUoc2l6ZSwgcmVzb2x1dGlv
blNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCwgaG9zdFdpbmRvdyk7CisgICAgICAgIGF1
dG8gcGFyYW1ldGVycyA9IHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFt
ZXRlcnM+KG5ldyBJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnMoeyBzaXplLCByZXNvbHV0
aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0IH0pKTsKKyAgICAgICAgYXV0byBiYWNr
ZW5kID0gQmFja2VuZFR5cGU6OmNyZWF0ZSgqcGFyYW1ldGVycywgaG9zdFdpbmRvdyk7CiAgICAg
ICAgIGlmICghYmFja2VuZCkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IEltYWdlQnVmZmVyVHlwZShXVEZNb3ZlKGJhY2tlbmQpLCBzdGQ6
OmZvcndhcmQ8QXJndW1lbnRzPihhcmd1bWVudHMpLi4uKSk7CisgICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgSW1hZ2VCdWZmZXJUeXBlKFdURk1vdmUocGFyYW1ldGVycyksIFdURk1vdmUoYmFj
a2VuZCksIHN0ZDo6Zm9yd2FyZDxBcmd1bWVudHM+KGFyZ3VtZW50cykuLi4pKTsKICAgICB9CiAK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJbWFnZUJ1ZmZlclR5cGUgPSBDb25jcmV0ZUltYWdlQnVm
ZmVyLCB0eXBlbmFtZS4uLiBBcmd1bWVudHM+CiAgICAgc3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZl
clR5cGU+IGNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIGNvbnN0IEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgQXJndW1lbnRzJiYuLi4gYXJndW1lbnRzKQogICAgIHsKLSAgICAgICAgYXV0
byBiYWNrZW5kID0gQmFja2VuZFR5cGU6OmNyZWF0ZShzaXplLCBjb250ZXh0KTsKKyAgICAgICAg
YXV0byBwYXJhbWV0ZXJzID0gc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQmFja2VuZDo6UGFy
YW1ldGVycz4obmV3IEltYWdlQnVmZmVyQmFja2VuZDo6UGFyYW1ldGVycyh7IHNpemUsIDEsIENv
bG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCB9KSk7CisgICAgICAgIGF1dG8gYmFj
a2VuZCA9IEJhY2tlbmRUeXBlOjpjcmVhdGUoKnBhcmFtZXRlcnMsIGNvbnRleHQpOwogICAgICAg
ICBpZiAoIWJhY2tlbmQpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBJbWFnZUJ1ZmZlclR5cGUoV1RGTW92ZShiYWNrZW5kKSwgc3RkOjpm
b3J3YXJkPEFyZ3VtZW50cz4oYXJndW1lbnRzKS4uLikpOworICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IEltYWdlQnVmZmVyVHlwZShXVEZNb3ZlKHBhcmFtZXRlcnMpLCBXVEZNb3ZlKGJhY2tl
bmQpLCBzdGQ6OmZvcndhcmQ8QXJndW1lbnRzPihhcmd1bWVudHMpLi4uKSk7CiAgICAgfQogCi0g
ICAgYm9vbCBpc0FjY2VsZXJhdGVkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gQmFja2VuZFR5
cGU6OmlzQWNjZWxlcmF0ZWQ7IH0KKyAgICBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBCYWNrZW5kVHlwZTo6cmVuZGVyaW5nTW9kZTsgfQogCiBw
cm90ZWN0ZWQ6Ci0gICAgQ29uY3JldGVJbWFnZUJ1ZmZlcihzdGQ6OnVuaXF1ZV9wdHI8QmFja2Vu
ZFR5cGU+JiYgYmFja2VuZCA9IG51bGxwdHIsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBy
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgPSBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI6
OmdlbmVyYXRlKCkpCi0gICAgICAgIDogbV9iYWNrZW5kKFdURk1vdmUoYmFja2VuZCkpCisgICAg
Q29uY3JldGVJbWFnZUJ1ZmZlcihzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJCYWNrZW5kOjpQ
YXJhbWV0ZXJzPiYmIHBhcmFtZXRlcnMsIHN0ZDo6dW5pcXVlX3B0cjxCYWNrZW5kVHlwZT4mJiBi
YWNrZW5kID0gbnVsbHB0ciwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllciA9IFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcjo6Z2VuZXJhdGUo
KSkKKyAgICAgICAgOiBtX3BhcmFtZXRlcnMoV1RGTW92ZShwYXJhbWV0ZXJzKSkKKyAgICAgICAg
LCBtX2JhY2tlbmQoV1RGTW92ZShiYWNrZW5kKSkKICAgICAgICAgLCBtX3JlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcihyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCiAgICAgewogICAgIH0K
IAorICAgIHZvaWQgc2V0QmFja2VuZChzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJCYWNrZW5k
PiYmIGJhY2tlbmQpIG92ZXJyaWRlCisgICAgeworICAgICAgICBBU1NFUlQoIW1fYmFja2VuZCk7
CisgICAgICAgIG1fYmFja2VuZCA9IHN0ZDo6dW5pcXVlX3B0cjxCYWNrZW5kVHlwZT4geyBzdGF0
aWNfY2FzdDxCYWNrZW5kVHlwZSo+KGJhY2tlbmQucmVsZWFzZSgpKSB9OworICAgIH0KKworICAg
IHZvaWQgY2xlYXJCYWNrZW5kKCkgb3ZlcnJpZGUgeyBtX2JhY2tlbmQgPSBudWxscHRyOyB9CisK
ICAgICB2aXJ0dWFsIEJhY2tlbmRUeXBlKiBlbnN1cmVCYWNrZW5kQ3JlYXRlZCgpIGNvbnN0IHsg
cmV0dXJuIG1fYmFja2VuZC5nZXQoKTsgfQogCiAgICAgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyOyB9CkBAIC03OCwxOSArODksMTEgQEAgcHJv
dGVjdGVkOgogICAgICAgICB9CiAgICAgfQogCi0gICAgQWZmaW5lVHJhbnNmb3JtIGJhc2VUcmFu
c2Zvcm0oKSBjb25zdCBvdmVycmlkZQotICAgIHsKLSAgICAgICAgaWYgKGF1dG8qIGJhY2tlbmQg
PSBlbnN1cmVCYWNrZW5kQ3JlYXRlZCgpKQotICAgICAgICAgICAgcmV0dXJuIGJhY2tlbmQtPmJh
c2VUcmFuc2Zvcm0oKTsKLSAgICAgICAgcmV0dXJuIHsgfTsKLSAgICB9Ci0KLSAgICBJbnRTaXpl
IGxvZ2ljYWxTaXplKCkgY29uc3Qgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIGlmIChhdXRvKiBi
YWNrZW5kID0gZW5zdXJlQmFja2VuZENyZWF0ZWQoKSkKLSAgICAgICAgICAgIHJldHVybiBiYWNr
ZW5kLT5sb2dpY2FsU2l6ZSgpOwotICAgICAgICByZXR1cm4geyB9OwotICAgIH0KKyAgICBJbnRT
aXplIGxvZ2ljYWxTaXplKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gSW50U2l6ZShtX3BhcmFt
ZXRlcnMtPmxvZ2ljYWxTaXplKTsgfQorICAgIGZsb2F0IHJlc29sdXRpb25TY2FsZSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIG1fcGFyYW1ldGVycy0+cmVzb2x1dGlvblNjYWxlOyB9CisgICAg
Q29sb3JTcGFjZSBjb2xvclNwYWNlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9wYXJhbWV0
ZXJzLT5jb2xvclNwYWNlOyB9CisgICAgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBtX3BhcmFtZXRlcnMtPnBpeGVsRm9ybWF0OyB9CisgICAgY29uc3Qg
SW1hZ2VCdWZmZXJCYWNrZW5kOjpQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gKm1fcGFyYW1ldGVyczsgfQogCiAgICAgSW50U2l6ZSBiYWNrZW5kU2l6ZSgp
IGNvbnN0IG92ZXJyaWRlCiAgICAgewpAQCAtOTksMTEgKzEwMiwxMSBAQCBwcm90ZWN0ZWQ6CiAg
ICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCi0gICAgZmxvYXQgcmVzb2x1dGlvblNjYWxlKCkg
Y29uc3Qgb3ZlcnJpZGUKKyAgICBBZmZpbmVUcmFuc2Zvcm0gYmFzZVRyYW5zZm9ybSgpIGNvbnN0
IG92ZXJyaWRlCiAgICAgewogICAgICAgICBpZiAoYXV0byogYmFja2VuZCA9IGVuc3VyZUJhY2tl
bmRDcmVhdGVkKCkpCi0gICAgICAgICAgICByZXR1cm4gYmFja2VuZC0+cmVzb2x1dGlvblNjYWxl
KCk7Ci0gICAgICAgIHJldHVybiAxOworICAgICAgICAgICAgcmV0dXJuIGJhY2tlbmQtPmJhc2VU
cmFuc2Zvcm0oKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAKICAgICBzaXplX3QgbWVt
b3J5Q29zdCgpIGNvbnN0IG92ZXJyaWRlCkBAIC0yOTEsNiArMjk0LDcgQEAgcHJvdGVjdGVkOgog
ICAgICAgICAgICAgYmFja2VuZC0+cmVsZWFzZUJ1ZmZlclRvUG9vbCgpOwogICAgIH0KIAorICAg
IHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnM+IG1fcGFyYW1l
dGVyczsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QmFja2VuZFR5cGU+IG1fYmFja2VuZDsKICAgICBS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgbV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI7
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VC
dWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgK
aW5kZXggNjJhM2Y3ZmZhMzc3OGE4YzAxMzkwMTYyNTQzNzUzYWE3YmQyYzIxZC4uNzdkOTI2MTYz
ZDk2NDZlMjk1ZmQwNGI3YzEyZDQ5Zjc1NGM5Yjk2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNwcmFn
bWEgb25jZQogCisjaW5jbHVkZSAiRGlzcGxheUxpc3RGbHVzaElkZW50aWZpZXIuaCIKICNpbmNs
dWRlICJJbWFnZUJ1ZmZlckJhY2tlbmQuaCIKICNpbmNsdWRlICJSZW5kZXJpbmdNb2RlLmgiCiAj
aW5jbHVkZSAiUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLmgiCkBAIC02MCwxMCArNjEsMTMg
QEAgcHVibGljOgogICAgIHN0YXRpYyBGbG9hdFJlY3QgY2xhbXBlZFJlY3QoY29uc3QgRmxvYXRS
ZWN0Jik7CiAKICAgICBzdGF0aWMgSW50U2l6ZSBjb21wYXRpYmxlQnVmZmVyU2l6ZShjb25zdCBG
bG9hdFNpemUmLCBjb25zdCBHcmFwaGljc0NvbnRleHQmKTsKLSAgICAKKwogICAgIFdFQkNPUkVf
RVhQT1JUIHZpcnR1YWwgfkltYWdlQnVmZmVyKCkgPSBkZWZhdWx0OwogCi0gICAgdmlydHVhbCBi
b29sIGlzQWNjZWxlcmF0ZWQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldEJhY2tl
bmQoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQmFja2VuZD4mJikgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBjbGVhckJhY2tlbmQoKSA9IDA7CisKKyAgICB2aXJ0dWFsIFJlbmRlcmluZ01vZGUg
cmVuZGVyaW5nTW9kZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiB7
IH07IH0KICAgICAKICAgICB2aXJ0dWFsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCgpIGNvbnN0
ID0gMDsKQEAgLTcyLDEyICs3NiwxOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBEaXNwbGF5TGlz
dDo6RHJhd2luZ0NvbnRleHQqIGRyYXdpbmdDb250ZXh0KCkgeyByZXR1cm4gbnVsbHB0cjsgfQog
ICAgIHZpcnR1YWwgYm9vbCBwcmVmZXJzUHJlcGFyYXRpb25Gb3JEaXNwbGF5KCkgeyByZXR1cm4g
ZmFsc2U7IH0KICAgICB2aXJ0dWFsIHZvaWQgZmx1c2hEcmF3aW5nQ29udGV4dCgpIHsgfQotICAg
IHZpcnR1YWwgdm9pZCBmbHVzaERyYXdpbmdDb250ZXh0QW5kQ29tbWl0KCkgeyB9CisgICAgdmly
dHVhbCB2b2lkIHN1Ym1pdERyYXdpbmdDb250ZXh0KCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHN1
Ym1pdERpc3BsYXlMaXN0KGNvbnN0IERpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYpIHsgfQorICAg
IHZpcnR1YWwgdm9pZCBkaWRGbHVzaChEaXNwbGF5TGlzdDo6Rmx1c2hJZGVudGlmaWVyKSB7IH0K
IAotICAgIHZpcnR1YWwgQWZmaW5lVHJhbnNmb3JtIGJhc2VUcmFuc2Zvcm0oKSBjb25zdCA9IDA7
CiAgICAgdmlydHVhbCBJbnRTaXplIGxvZ2ljYWxTaXplKCkgY29uc3QgPSAwOwotICAgIHZpcnR1
YWwgSW50U2l6ZSBiYWNrZW5kU2l6ZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGZsb2F0IHJl
c29sdXRpb25TY2FsZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIENvbG9yU3BhY2UgY29sb3JT
cGFjZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0KCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgY29uc3QgSW1hZ2VCdWZmZXJCYWNrZW5kOjpQYXJhbWV0
ZXJzJiBwYXJhbWV0ZXJzKCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBJbnRTaXplIGJhY2tl
bmRTaXplKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgQWZmaW5lVHJhbnNmb3JtIGJhc2VUcmFu
c2Zvcm0oKSBjb25zdCA9IDA7CiAKICAgICB2aXJ0dWFsIHNpemVfdCBtZW1vcnlDb3N0KCkgY29u
c3QgPSAwOwogICAgIHZpcnR1YWwgc2l6ZV90IGV4dGVybmFsTWVtb3J5Q29zdCgpIGNvbnN0ID0g
MDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVm
ZmVyQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1
ZmZlckJhY2tlbmQuY3BwCmluZGV4IDdmMGZlOWU2ZDk2NmU3NGI0NWY4NWFhZDBlM2IyZmI4NGQ5
NDUwYjkuLjhiNjk5NmRmYjllOGU5YjhmMTFlMWRhMWZjMGMzOGM0NDU1NzFhNDAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNr
ZW5kLmNwcApAQCAtMzEsMTIgKzMxLDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1JbWFn
ZUJ1ZmZlckJhY2tlbmQ6OkltYWdlQnVmZmVyQmFja2VuZChjb25zdCBGbG9hdFNpemUmIGxvZ2lj
YWxTaXplLCBjb25zdCBJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxl
LCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0KQotICAgIDog
bV9sb2dpY2FsU2l6ZShsb2dpY2FsU2l6ZSkKK0ltYWdlQnVmZmVyQmFja2VuZDo6SW1hZ2VCdWZm
ZXJCYWNrZW5kKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIGNvbnN0IEludFNpemUmIGJh
Y2tlbmRTaXplKQorICAgIDogbV9wYXJhbWV0ZXJzKHBhcmFtZXRlcnMpCiAgICAgLCBtX2JhY2tl
bmRTaXplKGJhY2tlbmRTaXplKQotICAgICwgbV9yZXNvbHV0aW9uU2NhbGUocmVzb2x1dGlvblNj
YWxlKQotICAgICwgbV9jb2xvclNwYWNlKGNvbG9yU3BhY2UpCi0gICAgLCBtX3BpeGVsRm9ybWF0
KHBpeGVsRm9ybWF0KQogewogfQogCkBAIC05OSwxNSArOTYsMTUgQEAgdm9pZCBJbWFnZUJ1ZmZl
ckJhY2tlbmQ6OmNvbnZlcnRUb0x1bWluYW5jZU1hc2soKQogCiBWZWN0b3I8dWludDhfdD4gSW1h
Z2VCdWZmZXJCYWNrZW5kOjp0b0JHUkFEYXRhKHZvaWQqIGRhdGEpIGNvbnN0CiB7Ci0gICAgVmVj
dG9yPHVpbnQ4X3Q+IHJlc3VsdCg0ICogbV9sb2dpY2FsU2l6ZS5hcmVhKCkudW5zYWZlR2V0KCkp
OwotICAgIHNpemVfdCBkZXN0Qnl0ZXNQZXJSb3cgPSBtX2xvZ2ljYWxTaXplLndpZHRoKCkgKiA0
OworICAgIFZlY3Rvcjx1aW50OF90PiByZXN1bHQoNCAqIGxvZ2ljYWxTaXplKCkuYXJlYSgpLnVu
c2FmZUdldCgpKTsKKyAgICBzaXplX3QgZGVzdEJ5dGVzUGVyUm93ID0gbG9naWNhbFNpemUoKS53
aWR0aCgpICogNDsKICAgICBzaXplX3Qgc3JjQnl0ZXNQZXJSb3cgPSBieXRlc1BlclJvdygpOwog
CiAgICAgdWludDhfdCogc3JjUm93cyA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGRhdGEp
OwogCiAgICAgY29weUltYWdlUGl4ZWxzKAogICAgICAgICBBbHBoYVByZW11bHRpcGxpY2F0aW9u
OjpQcmVtdWx0aXBsaWVkLCBwaXhlbEZvcm1hdCgpLCBzcmNCeXRlc1BlclJvdywgc3JjUm93cywK
LSAgICAgICAgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBQaXhlbEZv
cm1hdDo6QkdSQTgsIGRlc3RCeXRlc1BlclJvdywgcmVzdWx0LmRhdGEoKSwgbV9sb2dpY2FsU2l6
ZSk7CisgICAgICAgIEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCwgUGl4
ZWxGb3JtYXQ6OkJHUkE4LCBkZXN0Qnl0ZXNQZXJSb3csIHJlc3VsdC5kYXRhKCksIGxvZ2ljYWxT
aXplKCkpOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmgKaW5kZXggNTgwNjcxNWE3
YjJjODc1NzY5MDJhNzczNTg0ZGYxODA1ODI1MTAwZi4uNzA3ZDQ0NDc3ZDg1MGUzZjkxZGU2OTFj
Njg0YjUzYTA0ZGQwYTNlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRl
ICJJbWFnZVBhaW50aW5nT3B0aW9ucy5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRl
ICJQbGF0Zm9ybUxheWVyLmgiCisjaW5jbHVkZSAiUmVuZGVyaW5nTW9kZS5oIgogI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKQEAgLTc3LDYgKzc4LDEz
IEBAIHB1YmxpYzoKIAogY2xhc3MgSW1hZ2VCdWZmZXJCYWNrZW5kIHsKIHB1YmxpYzoKKyAgICBz
dHJ1Y3QgUGFyYW1ldGVycyB7CisgICAgICAgIEZsb2F0U2l6ZSBsb2dpY2FsU2l6ZTsKKyAgICAg
ICAgZmxvYXQgcmVzb2x1dGlvblNjYWxlOworICAgICAgICBDb2xvclNwYWNlIGNvbG9yU3BhY2U7
CisgICAgICAgIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0OworICAgIH07CisKICAgICBXRUJDT1JF
X0VYUE9SVCB2aXJ0dWFsIH5JbWFnZUJ1ZmZlckJhY2tlbmQoKSA9IGRlZmF1bHQ7CiAKICAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgSW50U2l6ZSBjYWxjdWxhdGVCYWNrZW5kU2l6ZShjb25zdCBG
bG9hdFNpemUmLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUpOwpAQCAtODQsMTQgKzkyLDEwIEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCgpIGNvbnN0ID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgZmx1c2hDb250ZXh0KCkgeyB9CiAKLSAgICBJbnRTaXplIGxvZ2lj
YWxTaXplKCkgY29uc3QgeyByZXR1cm4gbV9sb2dpY2FsU2l6ZTsgfQogICAgIEludFNpemUgYmFj
a2VuZFNpemUoKSBjb25zdCB7IHJldHVybiBtX2JhY2tlbmRTaXplOyB9Ci0gICAgZmxvYXQgcmVz
b2x1dGlvblNjYWxlKCkgY29uc3QgeyByZXR1cm4gbV9yZXNvbHV0aW9uU2NhbGU7IH0KLSAgICBD
b2xvclNwYWNlIGNvbG9yU3BhY2UoKSBjb25zdCB7IHJldHVybiBtX2NvbG9yU3BhY2U7IH0KLSAg
ICBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCgpIGNvbnN0IHsgcmV0dXJuIG1fcGl4ZWxGb3JtYXQ7
IH0KLQogICAgIHZpcnR1YWwgQWZmaW5lVHJhbnNmb3JtIGJhc2VUcmFuc2Zvcm0oKSBjb25zdCB7
IHJldHVybiBBZmZpbmVUcmFuc2Zvcm0oKTsgfQotICAgIHZpcnR1YWwgc2l6ZV90IG1lbW9yeUNv
c3QoKSBjb25zdCB7IHJldHVybiA0ICogbV9iYWNrZW5kU2l6ZS5hcmVhKCkudW5zYWZlR2V0KCk7
IH0KKworICAgIHZpcnR1YWwgc2l6ZV90IG1lbW9yeUNvc3QoKSBjb25zdCB7IHJldHVybiA0ICog
YmFja2VuZFNpemUoKS5hcmVhKCkudW5zYWZlR2V0KCk7IH0KICAgICB2aXJ0dWFsIHNpemVfdCBl
eHRlcm5hbE1lbW9yeUNvc3QoKSBjb25zdCB7IHJldHVybiAwOyB9CiAKICAgICB2aXJ0dWFsIFJl
ZlB0cjxOYXRpdmVJbWFnZT4gY29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkpIGNvbnN0
ID0gMDsKQEAgLTEyNywyNCArMTMxLDI5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHN0ZDo6dW5p
cXVlX3B0cjxUaHJlYWRTYWZlSW1hZ2VCdWZmZXJGbHVzaGVyPiBjcmVhdGVGbHVzaGVyKCkgeyBy
ZXR1cm4gbnVsbHB0cjsgfQogICAgIAogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc09yaWdp
bkF0VXBwZXJMZWZ0Q29ybmVyID0gZmFsc2U7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlz
QWNjZWxlcmF0ZWQgPSBmYWxzZTsKKyAgICBzdGF0aWMgY29uc3RleHByIFJlbmRlcmluZ01vZGUg
cmVuZGVyaW5nTW9kZSA9IFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQ7CiAKIHByb3RlY3Rl
ZDoKLSAgICBXRUJDT1JFX0VYUE9SVCBJbWFnZUJ1ZmZlckJhY2tlbmQoY29uc3QgRmxvYXRTaXpl
JiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRp
b25TY2FsZSwgQ29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQpOworICAgIFdFQkNPUkVfRVhQT1JUIElt
YWdlQnVmZmVyQmFja2VuZChjb25zdCBQYXJhbWV0ZXJzJiwgY29uc3QgSW50U2l6ZSYgYmFja2Vu
ZFNpemUpOwogCi0gICAgdmlydHVhbCB1bnNpZ25lZCBieXRlc1BlclJvdygpIGNvbnN0IHsgcmV0
dXJuIDQgKiBtX2JhY2tlbmRTaXplLndpZHRoKCk7IH0KKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGJ5
dGVzUGVyUm93KCkgY29uc3QgeyByZXR1cm4gNCAqIGJhY2tlbmRTaXplKCkud2lkdGgoKTsgfQog
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICBUIHRvQmFja2VuZENvb3JkaW5hdGVzKFQg
dCkgY29uc3QKICAgICB7CiAgICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPFQsIElu
dFBvaW50Pjo6dmFsdWUgfHwgc3RkOjppc19zYW1lPFQsIEludFNpemU+Ojp2YWx1ZSB8fCBzdGQ6
OmlzX3NhbWU8VCwgSW50UmVjdD46OnZhbHVlKTsKLSAgICAgICAgaWYgKG1fcmVzb2x1dGlvblNj
YWxlICE9IDEpCi0gICAgICAgICAgICB0LnNjYWxlKG1fcmVzb2x1dGlvblNjYWxlKTsKKyAgICAg
ICAgaWYgKHJlc29sdXRpb25TY2FsZSgpICE9IDEpCisgICAgICAgICAgICB0LnNjYWxlKHJlc29s
dXRpb25TY2FsZSgpKTsKICAgICAgICAgcmV0dXJuIHQ7CiAgICAgfQogCi0gICAgSW50UmVjdCBs
b2dpY2FsUmVjdCgpIGNvbnN0IHsgcmV0dXJuIEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgbV9s
b2dpY2FsU2l6ZSk7IH07Ci0gICAgSW50UmVjdCBiYWNrZW5kUmVjdCgpIGNvbnN0IHsgcmV0dXJu
IEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgbV9iYWNrZW5kU2l6ZSk7IH07CisgICAgSW50U2l6
ZSBsb2dpY2FsU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIEludFNpemUobV9wYXJhbWV0ZXJzLmxvZ2lj
YWxTaXplKTsgfQorICAgIGZsb2F0IHJlc29sdXRpb25TY2FsZSgpIGNvbnN0IHsgcmV0dXJuIG1f
cGFyYW1ldGVycy5yZXNvbHV0aW9uU2NhbGU7IH0KKyAgICBDb2xvclNwYWNlIGNvbG9yU3BhY2Uo
KSBjb25zdCB7IHJldHVybiBtX3BhcmFtZXRlcnMuY29sb3JTcGFjZTsgfQorICAgIFBpeGVsRm9y
bWF0IHBpeGVsRm9ybWF0KCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0ZXJzLnBpeGVsRm9ybWF0
OyB9CisKKyAgICBJbnRSZWN0IGxvZ2ljYWxSZWN0KCkgY29uc3QgeyByZXR1cm4gSW50UmVjdChJ
bnRQb2ludDo6emVybygpLCBsb2dpY2FsU2l6ZSgpKTsgfTsKKyAgICBJbnRSZWN0IGJhY2tlbmRS
ZWN0KCkgY29uc3QgeyByZXR1cm4gSW50UmVjdChJbnRQb2ludDo6emVybygpLCBiYWNrZW5kU2l6
ZSgpKTsgfTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBjb3B5SW1hZ2VQaXhl
bHMoCiAgICAgICAgIEFscGhhUHJlbXVsdGlwbGljYXRpb24gc3JjQWxwaGFGb3JtYXQsIFBpeGVs
Rm9ybWF0IHNyY1BpeGVsRm9ybWF0LCB1bnNpZ25lZCBzcmNCeXRlc1BlclJvdywgdWludDhfdCog
c3JjUm93cywKQEAgLTE1NSwxMSArMTY0LDggQEAgcHJvdGVjdGVkOgogICAgIFdFQkNPUkVfRVhQ
T1JUIFJlZlB0cjxJbWFnZURhdGE+IGdldEltYWdlRGF0YShBbHBoYVByZW11bHRpcGxpY2F0aW9u
IG91dHB1dEZvcm1hdCwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwgdm9pZCogZGF0YSkgY29uc3Q7
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwdXRJbWFnZURhdGEoQWxwaGFQcmVtdWx0aXBsaWNh
dGlvbiBpbnB1dEZvcm1hdCwgY29uc3QgSW1hZ2VEYXRhJiwgY29uc3QgSW50UmVjdCYgc3JjUmVj
dCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBkZXN0
Rm9ybWF0LCB2b2lkKiBkYXRhKTsKIAotICAgIEludFNpemUgbV9sb2dpY2FsU2l6ZTsKKyAgICBj
b25zdCBQYXJhbWV0ZXJzJiBtX3BhcmFtZXRlcnM7CiAgICAgSW50U2l6ZSBtX2JhY2tlbmRTaXpl
OwotICAgIGZsb2F0IG1fcmVzb2x1dGlvblNjYWxlOwotICAgIENvbG9yU3BhY2UgbV9jb2xvclNw
YWNlOwotICAgIFBpeGVsRm9ybWF0IG1fcGl4ZWxGb3JtYXQ7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Q
bGF0Zm9ybUltYWdlQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Q
bGF0Zm9ybUltYWdlQnVmZmVyLmgKaW5kZXggYjA1ZmE2NTE2OTcxZDE3NjcxMzFkNTZhNDYzOTM1
M2VmOTRlNDkyNS4uNTJkZDgzY2M5M2Q1NTUzYjM3OWU1ODdkNDM4NWQ0Zjc4MDU5NDRiYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1JbWFnZUJ1
ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtSW1h
Z2VCdWZmZXIuaApAQCAtNzUsNSArNzUsNSBAQCB1c2luZyBEaXNwbGF5TGlzdEFjY2VsZXJhdGVk
SW1hZ2VCdWZmZXIgPSBEaXNwbGF5TGlzdDo6SW1hZ2VCdWZmZXI8QWNjZWxlcmF0ZWRJbQogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNv
cmU6OkFjY2VsZXJhdGVkSW1hZ2VCdWZmZXIpCi0gICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0
IFdlYkNvcmU6OkltYWdlQnVmZmVyJiBidWZmZXIpIHsgcmV0dXJuIGJ1ZmZlci5pc0FjY2VsZXJh
dGVkKCk7IH0KKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6SW1hZ2VCdWZm
ZXImIGJ1ZmZlcikgeyByZXR1cm4gYnVmZmVyLnJlbmRlcmluZ01vZGUoKSA9PSBXZWJDb3JlOjpS
ZW5kZXJpbmdNb2RlOjpBY2NlbGVyYXRlZDsgfQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1h
Z2VCdWZmZXJDYWlyb0JhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQuY3BwCmluZGV4IDEyYTViNjBhMmU5MDQ2
YTE5NTg5MmJhZjVkZDdlZDQ5NjMzYjNlNzQuLmIzYmZkODEyN2I4N2QxNjg4ZWFiYjVjZjRiMmE3
MWMzMzU5Y2QyZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5jcHAKQEAgLTgw
LDcgKzgwLDcgQEAgdm9pZCBJbWFnZUJ1ZmZlckNhaXJvQmFja2VuZDo6ZHJhd1BhdHRlcm4oR3Jh
cGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmwKICAgICB9CiAKICAgICBpZiAoYXV0
byBpbWFnZSA9IGNvcHlOYXRpdmVJbWFnZSgmZGVzdENvbnRleHQgPT0gJmNvbnRleHQoKSA/IENv
cHlCYWNraW5nU3RvcmUgOiBEb250Q29weUJhY2tpbmdTdG9yZSkpCi0gICAgICAgIENhaXJvOjpk
cmF3UGF0dGVybigqZGVzdENvbnRleHQucGxhdGZvcm1Db250ZXh0KCksIGltYWdlLT5wbGF0Zm9y
bUltYWdlKCkuZ2V0KCksIG1fbG9naWNhbFNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBwYXR0ZXJu
VHJhbnNmb3JtLCBwaGFzZSwgb3B0aW9ucyk7CisgICAgICAgIENhaXJvOjpkcmF3UGF0dGVybigq
ZGVzdENvbnRleHQucGxhdGZvcm1Db250ZXh0KCksIGltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0
KCksIGxvZ2ljYWxTaXplKCksIGRlc3RSZWN0LCBzcmNSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBw
aGFzZSwgb3B0aW9ucyk7CiB9CiAKIHZvaWQgSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQ6OmNsaXBU
b01hc2soR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
UmVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0ltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNr
ZW5kLmNwcAppbmRleCAxY2QwNzU0YjM5MTQzYWY0MjliNDZkNWQ3OGU0NTFmMGQxZTA3NGMzLi5i
YWMwMmJlYjJiNGE0NTU4YTRlOTRmMmI5OWZjYTg3ZWNiMDEwNDJjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvSW1hZ2VT
dXJmYWNlQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQuY3BwCkBAIC03OSwxNiAr
NzksMTYgQEAgdm9pZCBJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZDo6cGxhdGZv
cm1UcmFuc2Zvcm1Db2xvclNwYWNlKGNvbnN0IHN0ZDoKIHsKICAgICB1bnNpZ25lZCBjaGFyKiBk
YXRhU3JjID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfZGF0YShtX3N1cmZhY2UuZ2V0KCkpOwog
ICAgIGludCBzdHJpZGUgPSBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9zdHJpZGUobV9zdXJmYWNl
LmdldCgpKTsKLSAgICBmb3IgKGludCB5ID0gMDsgeSA8IG1fbG9naWNhbFNpemUuaGVpZ2h0KCk7
ICsreSkgeworICAgIGZvciAoaW50IHkgPSAwOyB5IDwgbG9naWNhbFNpemUoKS5oZWlnaHQoKTsg
Kyt5KSB7CiAgICAgICAgIHVuc2lnbmVkKiByb3cgPSByZWludGVycHJldF9jYXN0X3B0cjx1bnNp
Z25lZCo+KGRhdGFTcmMgKyBzdHJpZGUgKiB5KTsKLSAgICAgICAgZm9yIChpbnQgeCA9IDA7IHgg
PCBtX2xvZ2ljYWxTaXplLndpZHRoKCk7IHgrKykgeworICAgICAgICBmb3IgKGludCB4ID0gMDsg
eCA8IGxvZ2ljYWxTaXplKCkud2lkdGgoKTsgeCsrKSB7CiAgICAgICAgICAgICB1bnNpZ25lZCog
cGl4ZWwgPSByb3cgKyB4OwogICAgICAgICAgICAgYXV0byBwaXhlbENvbXBvbmVudHMgPSB1bnBy
ZW11bHRpcGxpZWQoYXNTUkdCQShQYWNrZWRDb2xvcjo6QVJHQiB7ICpwaXhlbCB9KSk7CiAgICAg
ICAgICAgICBwaXhlbENvbXBvbmVudHMgPSB7IGxvb2tVcFRhYmxlW3BpeGVsQ29tcG9uZW50cy5y
ZWRdLCBsb29rVXBUYWJsZVtwaXhlbENvbXBvbmVudHMuZ3JlZW5dLCBsb29rVXBUYWJsZVtwaXhl
bENvbXBvbmVudHMuYmx1ZV0sIHBpeGVsQ29tcG9uZW50cy5hbHBoYSB9OwogICAgICAgICAgICAg
KnBpeGVsID0gUGFja2VkQ29sb3I6OkFSR0IgeyBwcmVtdWx0aXBsaWVkQ2VpbGluZyhwaXhlbENv
bXBvbmVudHMpIH0udmFsdWU7CiAgICAgICAgIH0KICAgICB9Ci0gICAgY2Fpcm9fc3VyZmFjZV9t
YXJrX2RpcnR5X3JlY3RhbmdsZShtX3N1cmZhY2UuZ2V0KCksIDAsIDAsIG1fbG9naWNhbFNpemUu
d2lkdGgoKSwgbV9sb2dpY2FsU2l6ZS5oZWlnaHQoKSk7CisgICAgY2Fpcm9fc3VyZmFjZV9tYXJr
X2RpcnR5X3JlY3RhbmdsZShtX3N1cmZhY2UuZ2V0KCksIDAsIDAsIGxvZ2ljYWxTaXplKCkud2lk
dGgoKSwgbG9naWNhbFNpemUoKS5oZWlnaHQoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
QnVmZmVyQ0dCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlQnVmZmVyQ0dCYWNrZW5kLmNwcAppbmRleCA1MDE3YmExMmM4YjQ4N2IwY2EwNmU1NDNi
MTI5NjM2NWQ2ZGQyYjJiLi45NTBlOWE3ZTZmZWMyYmJhYWQ3MmQ0NjdlZWI2NmVhMDg0ZGVmOWEw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1
ZmZlckNHQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VCdWZmZXJDR0JhY2tlbmQuY3BwCkBAIC03OSw4ICs3OSw4IEBAIHZvaWQgSW1hZ2VC
dWZmZXJDR0JhY2tlbmQ6OnNldHVwQ29udGV4dCgpIGNvbnN0CiB7CiAgICAgLy8gVGhlIGluaXRp
YWwgQ1RNIG1hdGNoZXMgRGlzcGxheUxpc3Q6OlJlY29yZGVyOjpjbGlwVG9EcmF3aW5nQ29tbWFu
ZHMoKSdzIGluaXRpYWwgQ1RNLgogICAgIGNvbnRleHQoKS5zY2FsZShGbG9hdFNpemUoMSwgLTEp
KTsKLSAgICBjb250ZXh0KCkudHJhbnNsYXRlKDAsIC1tX2JhY2tlbmRTaXplLmhlaWdodCgpKTsK
LSAgICBjb250ZXh0KCkuYXBwbHlEZXZpY2VTY2FsZUZhY3RvcihtX3Jlc29sdXRpb25TY2FsZSk7
CisgICAgY29udGV4dCgpLnRyYW5zbGF0ZSgwLCAtYmFja2VuZFNpemUoKS5oZWlnaHQoKSk7Cisg
ICAgY29udGV4dCgpLmFwcGx5RGV2aWNlU2NhbGVGYWN0b3IocmVzb2x1dGlvblNjYWxlKCkpOwog
fQogCiBzdGF0aWMgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGNyZWF0ZUNyb3BwZWRJbWFnZUlmTmVj
ZXNzYXJ5KENHSW1hZ2VSZWYgaW1hZ2UsIGNvbnN0IEludFNpemUmIGJhY2tlbmRTaXplKQpAQCAt
MTEyLDMxICsxMTIsMzEgQEAgc3RhdGljIFJlZlB0cjxJbWFnZT4gY3JlYXRlQml0bWFwSW1hZ2VB
ZnRlclNjYWxpbmdJZk5lZWRlZChSZWZQdHI8TmF0aXZlSW1hZ2U+JiYKIFJlZlB0cjxJbWFnZT4g
SW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OmNvcHlJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHlCZWhh
dmlvciwgUHJlc2VydmVSZXNvbHV0aW9uIHByZXNlcnZlUmVzb2x1dGlvbikgY29uc3QKIHsKICAg
ICBSZWZQdHI8TmF0aXZlSW1hZ2U+IGltYWdlOwotICAgIGlmIChtX3Jlc29sdXRpb25TY2FsZSA9
PSAxIHx8IHByZXNlcnZlUmVzb2x1dGlvbiA9PSBQcmVzZXJ2ZVJlc29sdXRpb246OlllcykKKyAg
ICBpZiAocmVzb2x1dGlvblNjYWxlKCkgPT0gMSB8fCBwcmVzZXJ2ZVJlc29sdXRpb24gPT0gUHJl
c2VydmVSZXNvbHV0aW9uOjpZZXMpCiAgICAgICAgIGltYWdlID0gY29weU5hdGl2ZUltYWdlKGNv
cHlCZWhhdmlvcik7CiAgICAgZWxzZQogICAgICAgICBpbWFnZSA9IGNvcHlOYXRpdmVJbWFnZShE
b250Q29weUJhY2tpbmdTdG9yZSk7Ci0gICAgcmV0dXJuIGNyZWF0ZUJpdG1hcEltYWdlQWZ0ZXJT
Y2FsaW5nSWZOZWVkZWQoV1RGTW92ZShpbWFnZSksIG1fbG9naWNhbFNpemUsIG1fYmFja2VuZFNp
emUsIG1fcmVzb2x1dGlvblNjYWxlLCBwcmVzZXJ2ZVJlc29sdXRpb24pOworICAgIHJldHVybiBj
cmVhdGVCaXRtYXBJbWFnZUFmdGVyU2NhbGluZ0lmTmVlZGVkKFdURk1vdmUoaW1hZ2UpLCBsb2dp
Y2FsU2l6ZSgpLCBiYWNrZW5kU2l6ZSgpLCByZXNvbHV0aW9uU2NhbGUoKSwgcHJlc2VydmVSZXNv
bHV0aW9uKTsKIH0KIAogUmVmUHRyPEltYWdlPiBJbWFnZUJ1ZmZlckNHQmFja2VuZDo6c2lua0lu
dG9JbWFnZShQcmVzZXJ2ZVJlc29sdXRpb24gcHJlc2VydmVSZXNvbHV0aW9uKQogewotICAgIHJl
dHVybiBjcmVhdGVCaXRtYXBJbWFnZUFmdGVyU2NhbGluZ0lmTmVlZGVkKHNpbmtJbnRvTmF0aXZl
SW1hZ2UoKSwgbV9sb2dpY2FsU2l6ZSwgbV9iYWNrZW5kU2l6ZSwgbV9yZXNvbHV0aW9uU2NhbGUs
IHByZXNlcnZlUmVzb2x1dGlvbik7CisgICAgcmV0dXJuIGNyZWF0ZUJpdG1hcEltYWdlQWZ0ZXJT
Y2FsaW5nSWZOZWVkZWQoc2lua0ludG9OYXRpdmVJbWFnZSgpLCBsb2dpY2FsU2l6ZSgpLCBiYWNr
ZW5kU2l6ZSgpLCByZXNvbHV0aW9uU2NhbGUoKSwgcHJlc2VydmVSZXNvbHV0aW9uKTsKIH0KIAog
dm9pZCBJbWFnZUJ1ZmZlckNHQmFja2VuZDo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGRlc3RDb250
ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIEZsb2F0UmVjdCBz
cmNSZWN0U2NhbGVkID0gc3JjUmVjdDsKLSAgICBzcmNSZWN0U2NhbGVkLnNjYWxlKG1fcmVzb2x1
dGlvblNjYWxlKTsKKyAgICBzcmNSZWN0U2NhbGVkLnNjYWxlKHJlc29sdXRpb25TY2FsZSgpKTsK
IAogICAgIGlmIChhdXRvIGltYWdlID0gY29weU5hdGl2ZUltYWdlKCZkZXN0Q29udGV4dCA9PSAm
Y29udGV4dCgpID8gQ29weUJhY2tpbmdTdG9yZSA6IERvbnRDb3B5QmFja2luZ1N0b3JlKSkKLSAg
ICAgICAgZGVzdENvbnRleHQuZHJhd05hdGl2ZUltYWdlKCppbWFnZSwgbV9iYWNrZW5kU2l6ZSwg
ZGVzdFJlY3QsIHNyY1JlY3RTY2FsZWQsIG9wdGlvbnMpOworICAgICAgICBkZXN0Q29udGV4dC5k
cmF3TmF0aXZlSW1hZ2UoKmltYWdlLCBiYWNrZW5kU2l6ZSgpLCBkZXN0UmVjdCwgc3JjUmVjdFNj
YWxlZCwgb3B0aW9ucyk7CiB9CiAKIHZvaWQgSW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OmRyYXdQYXR0
ZXJuKEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0
ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBz
cGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBGbG9h
dFJlY3QgYWRqdXN0ZWRTcmNSZWN0ID0gc3JjUmVjdDsKLSAgICBhZGp1c3RlZFNyY1JlY3Quc2Nh
bGUobV9yZXNvbHV0aW9uU2NhbGUpOworICAgIGFkanVzdGVkU3JjUmVjdC5zY2FsZShyZXNvbHV0
aW9uU2NhbGUoKSk7CiAKICAgICBpZiAoYXV0byBpbWFnZSA9IGNvcHlJbWFnZSgmZGVzdENvbnRl
eHQgPT0gJmNvbnRleHQoKSA/IENvcHlCYWNraW5nU3RvcmUgOiBEb250Q29weUJhY2tpbmdTdG9y
ZSkpCiAgICAgICAgIGltYWdlLT5kcmF3UGF0dGVybihkZXN0Q29udGV4dCwgZGVzdFJlY3QsIGFk
anVzdGVkU3JjUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIG9wdGlvbnMp
OwpAQCAtMTYxLDcgKzE2MSw3IEBAIHZvaWQgSW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OmNsaXBUb01h
c2soR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSCiAKIEFmZmluZVRy
YW5zZm9ybSBJbWFnZUJ1ZmZlckNHQmFja2VuZDo6YmFzZVRyYW5zZm9ybSgpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIEFmZmluZVRyYW5zZm9ybSgxLCAwLCAwLCAtMSwgMCwgbV9sb2dpY2FsU2l6ZS5o
ZWlnaHQoKSk7CisgICAgcmV0dXJuIEFmZmluZVRyYW5zZm9ybSgxLCAwLCAwLCAtMSwgMCwgbG9n
aWNhbFNpemUoKS5oZWlnaHQoKSk7CiB9CiAKIFJldGFpblB0cjxDRkRhdGFSZWY+IEltYWdlQnVm
ZmVyQ0dCYWNrZW5kOjp0b0NGRGF0YShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpb25hbDxk
b3VibGU+IHF1YWxpdHksIFByZXNlcnZlUmVzb2x1dGlvbiBwcmVzZXJ2ZVJlc29sdXRpb24pIGNv
bnN0CkBAIC0xOTAsNyArMTkwLDcgQEAgUmV0YWluUHRyPENGRGF0YVJlZj4gSW1hZ2VCdWZmZXJD
R0JhY2tlbmQ6OnRvQ0ZEYXRhKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGkKICAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCiAgICAgICAgIGltYWdlID0gYWRvcHRDRihDR0ltYWdlQ3Jl
YXRlKHBpeGVsQXJyYXlEaW1lbnNpb25zLndpZHRoKCksIHBpeGVsQXJyYXlEaW1lbnNpb25zLmhl
aWdodCgpLCA4LCAzMiwgNCAqIHBpeGVsQXJyYXlEaW1lbnNpb25zLndpZHRoKCksIHNSR0JDb2xv
clNwYWNlUmVmKCksIGtDR0JpdG1hcEJ5dGVPcmRlckRlZmF1bHQgfCBrQ0dJbWFnZUFscGhhTm9u
ZVNraXBMYXN0LCBkYXRhUHJvdmlkZXIuZ2V0KCksIDAsIGZhbHNlLCBrQ0dSZW5kZXJpbmdJbnRl
bnREZWZhdWx0KSk7Ci0gICAgfSBlbHNlIGlmIChtX3Jlc29sdXRpb25TY2FsZSA9PSAxIHx8IHBy
ZXNlcnZlUmVzb2x1dGlvbiA9PSBQcmVzZXJ2ZVJlc29sdXRpb246OlllcykgeworICAgIH0gZWxz
ZSBpZiAocmVzb2x1dGlvblNjYWxlKCkgPT0gMSB8fCBwcmVzZXJ2ZVJlc29sdXRpb24gPT0gUHJl
c2VydmVSZXNvbHV0aW9uOjpZZXMpIHsKICAgICAgICAgaW1hZ2UgPSBjb3B5TmF0aXZlSW1hZ2Uo
Q29weUJhY2tpbmdTdG9yZSktPnBsYXRmb3JtSW1hZ2UoKTsKICAgICAgICAgaW1hZ2UgPSBjcmVh
dGVDcm9wcGVkSW1hZ2VJZk5lY2Vzc2FyeShpbWFnZS5nZXQoKSwgYmFja2VuZFNpemUoKSk7CiAg
ICAgfSBlbHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmNwcAppbmRleCBmMjE4
ZjI3ZjJmNTNjNWE0YWRiYjZhNWFlZGMzYzQ5ZTQ4Y2Q2M2E0Li4yZTYyMjQzMDJlZWYyMGMwZmUx
ZTJkYjI0YmQ4OGE3ZGE5NTU3YzU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQu
Y3BwCkBAIC0zOSwxMSArMzksMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9J
U09fQUxMT0NBVEVEX0lNUEwoSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQpOwogCi1zdGQ6OnVu
aXF1ZV9wdHI8SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ+IEltYWdlQnVmZmVyQ0dCaXRtYXBC
YWNrZW5kOjpjcmVhdGUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2Nh
bGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgQ0dDb2xvclNwYWNlUmVmIGNnQ29sb3JTcGFjZSwg
UGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIGNvbnN0IEhvc3RXaW5kb3cqKQorc3RkOjp1bmlxdWVf
cHRyPEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kPiBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2Vu
ZDo6Y3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIENHQ29sb3JTcGFjZVJlZiBj
Z0NvbG9yU3BhY2UsIGNvbnN0IEhvc3RXaW5kb3cqKQogewotICAgIEFTU0VSVChwaXhlbEZvcm1h
dCA9PSBQaXhlbEZvcm1hdDo6QkdSQTgpOworICAgIEFTU0VSVChwYXJhbWV0ZXJzLnBpeGVsRm9y
bWF0ID09IFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAKLSAgICBJbnRTaXplIGJhY2tlbmRTaXplID0g
Y2FsY3VsYXRlQmFja2VuZFNpemUoc2l6ZSwgcmVzb2x1dGlvblNjYWxlKTsKKyAgICBJbnRTaXpl
IGJhY2tlbmRTaXplID0gY2FsY3VsYXRlQmFja2VuZFNpemUocGFyYW1ldGVycy5sb2dpY2FsU2l6
ZSwgcGFyYW1ldGVycy5yZXNvbHV0aW9uU2NhbGUpOwogICAgIGlmIChiYWNrZW5kU2l6ZS5pc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC03MCwyNCArNzAsMjQgQEAgc3Rk
Ojp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kPiBJbWFnZUJ1ZmZlckNHQml0
bWFwQmFja2VuZDo6Y3JlYXRlKGMKIAogICAgIGF1dG8gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihD
R0RhdGFQcm92aWRlckNyZWF0ZVdpdGhEYXRhKDAsIGRhdGEsIG51bUJ5dGVzLCByZWxlYXNlSW1h
Z2VEYXRhKSk7CiAKLSAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQ0dCaXRt
YXBCYWNrZW5kPihuZXcgSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQoc2l6ZSwgYmFja2VuZFNp
emUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQsIGRhdGEsIFdURk1v
dmUoZGF0YVByb3ZpZGVyKSwgV1RGTW92ZShjb250ZXh0KSkpOworICAgIHJldHVybiBzdGQ6OnVu
aXF1ZV9wdHI8SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ+KG5ldyBJbWFnZUJ1ZmZlckNHQml0
bWFwQmFja2VuZChwYXJhbWV0ZXJzLCBiYWNrZW5kU2l6ZSwgZGF0YSwgV1RGTW92ZShkYXRhUHJv
dmlkZXIpLCBXVEZNb3ZlKGNvbnRleHQpKSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1
ZmZlckNHQml0bWFwQmFja2VuZD4gSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNyZWF0ZShj
b25zdCBGbG9hdFNpemUmIHNpemUsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKK3N0
ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZD4gSW1hZ2VCdWZmZXJDR0Jp
dG1hcEJhY2tlbmQ6OmNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBjb25zdCBH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiB7CiAgICAgaWYgKGF1dG8gY2dDb2xvclNwYWNlID0g
Y29udGV4dENvbG9yU3BhY2UoY29udGV4dCkpCi0gICAgICAgIHJldHVybiBJbWFnZUJ1ZmZlckNH
Qml0bWFwQmFja2VuZDo6Y3JlYXRlKHNpemUsIDEsIENvbG9yU3BhY2U6OlNSR0IsIGNnQ29sb3JT
cGFjZS5nZXQoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4LCBudWxscHRyKTsKLSAgICAKLSAgICByZXR1
cm4gSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNyZWF0ZShzaXplLCAxLCBDb2xvclNwYWNl
OjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdSQTgsIG51bGxwdHIpOworICAgICAgICByZXR1cm4gSW1h
Z2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNyZWF0ZShwYXJhbWV0ZXJzLCBjZ0NvbG9yU3BhY2Uu
Z2V0KCksIG51bGxwdHIpOworCisgICAgcmV0dXJuIEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5k
OjpjcmVhdGUocGFyYW1ldGVycywgbnVsbHB0cik7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxJbWFn
ZUJ1ZmZlckNHQml0bWFwQmFja2VuZD4gSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNyZWF0
ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFj
ZSBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgY29uc3QgSG9zdFdpbmRvdyog
aG9zdFdpbmRvdykKK3N0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZD4g
SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiBwYXJh
bWV0ZXJzLCBjb25zdCBIb3N0V2luZG93KiBob3N0V2luZG93KQogewotICAgIHJldHVybiBJbWFn
ZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y3JlYXRlKHNpemUsIHJlc29sdXRpb25TY2FsZSwgY29s
b3JTcGFjZSwgY2FjaGVkQ0dDb2xvclNwYWNlKGNvbG9yU3BhY2UpLCBwaXhlbEZvcm1hdCwgaG9z
dFdpbmRvdyk7CisgICAgcmV0dXJuIEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpjcmVhdGUo
cGFyYW1ldGVycywgY2FjaGVkQ0dDb2xvclNwYWNlKHBhcmFtZXRlcnMuY29sb3JTcGFjZSksIGhv
c3RXaW5kb3cpOwogfQogCi1JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6SW1hZ2VCdWZmZXJD
R0JpdG1hcEJhY2tlbmQoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50U2l6
ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNw
YWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgdm9pZCogZGF0YSwgUmV0YWluUHRyPENHRGF0
YVByb3ZpZGVyUmVmPiYmIGRhdGFQcm92aWRlciwgc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzQ29u
dGV4dD4mJiBjb250ZXh0KQotICAgIDogSW1hZ2VCdWZmZXJDR0JhY2tlbmQobG9naWNhbFNpemUs
IGJhY2tlbmRTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0KQor
SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OkltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kKGNv
bnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIGNvbnN0IEludFNpemUmIGJhY2tlbmRTaXplLCB2
b2lkKiBkYXRhLCBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+JiYgZGF0YVByb3ZpZGVyLCBz
dGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NDb250ZXh0PiYmIGNvbnRleHQpCisgICAgOiBJbWFnZUJ1
ZmZlckNHQmFja2VuZChwYXJhbWV0ZXJzLCBiYWNrZW5kU2l6ZSkKICAgICAsIG1fZGF0YShkYXRh
KQogICAgICwgbV9kYXRhUHJvdmlkZXIoV1RGTW92ZShkYXRhUHJvdmlkZXIpKQogICAgICwgbV9j
b250ZXh0KFdURk1vdmUoY29udGV4dCkpCkBAIC0xMTIsNyArMTEyLDcgQEAgUmVmUHRyPE5hdGl2
ZUltYWdlPiBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y29weU5hdGl2ZUltYWdlKEJhY2tp
bmdTdG9yZUNvcHkKICAgICBjYXNlIERvbnRDb3B5QmFja2luZ1N0b3JlOgogICAgICAgICByZXR1
cm4gTmF0aXZlSW1hZ2U6OmNyZWF0ZShhZG9wdENGKENHSW1hZ2VDcmVhdGUoCiAgICAgICAgICAg
ICBtX2JhY2tlbmRTaXplLndpZHRoKCksIG1fYmFja2VuZFNpemUuaGVpZ2h0KCksIDgsIDMyLCBi
eXRlc1BlclJvdygpLAotICAgICAgICAgICAgY2FjaGVkQ0dDb2xvclNwYWNlKG1fY29sb3JTcGFj
ZSksIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkRmlyc3QgfCBrQ0dCaXRtYXBCeXRlT3JkZXIz
Mkhvc3QsIG1fZGF0YVByb3ZpZGVyLmdldCgpLAorICAgICAgICAgICAgY2FjaGVkQ0dDb2xvclNw
YWNlKGNvbG9yU3BhY2UoKSksIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkRmlyc3QgfCBrQ0dC
aXRtYXBCeXRlT3JkZXIzMkhvc3QsIG1fZGF0YVByb3ZpZGVyLmdldCgpLAogICAgICAgICAgICAg
MCwgdHJ1ZSwga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVsdCkpKTsKICAgICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRt
YXBCYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1
ZmZlckNHQml0bWFwQmFja2VuZC5oCmluZGV4IGU5MmM5MmY1ZDUwZmRlNTdhYWEzY2E1YzJmZjI5
ZGYwOGI4NjRkMjkuLjJiNjNmYThkYjExZTRiMmQ5MTIzYjk5MmQ5MTA5ODg0NDkxMjM1OGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVy
Q0dCaXRtYXBCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQuaApAQCAtMzYsOSArMzYsOSBAQCBjbGFzcyBJ
bWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZCA6IHB1YmxpYyBJbWFnZUJ1ZmZlckNHQmFja2VuZCB7
CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZCk7
CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQpOwog
cHVibGljOgotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJDR0JpdG1hcEJh
Y2tlbmQ+IGNyZWF0ZShjb25zdCBGbG9hdFNpemUmLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENv
bG9yU3BhY2UsIENHQ29sb3JTcGFjZVJlZiwgUGl4ZWxGb3JtYXQsIGNvbnN0IEhvc3RXaW5kb3cq
KTsKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5k
PiBjcmVhdGUoY29uc3QgRmxvYXRTaXplJiwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNw
YWNlLCBQaXhlbEZvcm1hdCwgY29uc3QgSG9zdFdpbmRvdyopOwotICAgIHN0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ+IGNyZWF0ZShjb25zdCBGbG9hdFNp
emUmLCBjb25zdCBHcmFwaGljc0NvbnRleHQmKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRy
PEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kPiBjcmVhdGUoY29uc3QgUGFyYW1ldGVycyYsIENH
Q29sb3JTcGFjZVJlZiwgY29uc3QgSG9zdFdpbmRvdyopOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1
ZV9wdHI8SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ+IGNyZWF0ZShjb25zdCBQYXJhbWV0ZXJz
JiwgY29uc3QgSG9zdFdpbmRvdyopOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VC
dWZmZXJDR0JpdG1hcEJhY2tlbmQ+IGNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiwgY29uc3QgR3Jh
cGhpY3NDb250ZXh0Jik7CiAKICAgICBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQoKSBjb25zdCBv
dmVycmlkZTsKIApAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhw
ciBib29sIGlzT3JpZ2luQXRVcHBlckxlZnRDb3JuZXIgPSB0cnVlOwogCiBwcml2YXRlOgotICAg
IEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUs
IGNvbnN0IEludFNpemUmIHBoeXNpY2FsU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xv
clNwYWNlLCBQaXhlbEZvcm1hdCwgdm9pZCogZGF0YSwgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVy
UmVmPiYmLCBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NDb250ZXh0PiYmKTsKKyAgICBJbWFnZUJ1
ZmZlckNHQml0bWFwQmFja2VuZChjb25zdCBQYXJhbWV0ZXJzJiwgY29uc3QgSW50U2l6ZSYgYmFj
a2VuZFNpemUsIHZvaWQqIGRhdGEsIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4mJiwgc3Rk
Ojp1bmlxdWVfcHRyPEdyYXBoaWNzQ29udGV4dD4mJik7CiAKICAgICB2b2lkKiBtX2RhdGE7CiAg
ICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiBtX2RhdGFQcm92aWRlcjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJm
YWNlQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFn
ZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuY3BwCmluZGV4IGFkM2ZmMWQ3OTc3MjAzNzY0MGUyZDY5
OTU0MTI4ODYwYjc3NDhjMzYuLjc0OWRjNDM3ZjA1ODRiZWY0NGM3MjEwYTVjZmE5OGRlMWEwZjdm
MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
QnVmZmVySU9TdXJmYWNlQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmNwcApAQCAtNjQsMTMgKzY0
LDEzIEBAIFJldGFpblB0cjxDR0NvbG9yU3BhY2VSZWY+IEltYWdlQnVmZmVySU9TdXJmYWNlQmFj
a2VuZDo6Y29udGV4dENvbG9yU3BhY2UoY29uc3QKICAgICByZXR1cm4gSW1hZ2VCdWZmZXJDR0Jh
Y2tlbmQ6OmNvbnRleHRDb2xvclNwYWNlKGNvbnRleHQpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8
SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kPiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6
OmNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29s
b3JTcGFjZSBjb2xvclNwYWNlLCBDR0NvbG9yU3BhY2VSZWYgY2dDb2xvclNwYWNlLCBQaXhlbEZv
cm1hdCBwaXhlbEZvcm1hdCwgY29uc3QgSG9zdFdpbmRvdyogaG9zdFdpbmRvdykKK3N0ZDo6dW5p
cXVlX3B0cjxJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ+IEltYWdlQnVmZmVySU9TdXJmYWNl
QmFja2VuZDo6Y3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIENHQ29sb3JTcGFj
ZVJlZiBjZ0NvbG9yU3BhY2UsIGNvbnN0IEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cpCiB7Ci0gICAg
SW50U2l6ZSBiYWNrZW5kU2l6ZSA9IGNhbGN1bGF0ZUJhY2tlbmRTaXplKHNpemUsIHJlc29sdXRp
b25TY2FsZSk7CisgICAgSW50U2l6ZSBiYWNrZW5kU2l6ZSA9IGNhbGN1bGF0ZUJhY2tlbmRTaXpl
KHBhcmFtZXRlcnMubG9naWNhbFNpemUsIHBhcmFtZXRlcnMucmVzb2x1dGlvblNjYWxlKTsKICAg
ICBpZiAoYmFja2VuZFNpemUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAot
ICAgIGF1dG8gc3VyZmFjZSA9IElPU3VyZmFjZTo6Y3JlYXRlKGJhY2tlbmRTaXplLCBiYWNrZW5k
U2l6ZSwgY2dDb2xvclNwYWNlLCBJT1N1cmZhY2U6OmZvcm1hdEZvclBpeGVsRm9ybWF0KHBpeGVs
Rm9ybWF0KSk7CisgICAgYXV0byBzdXJmYWNlID0gSU9TdXJmYWNlOjpjcmVhdGUoYmFja2VuZFNp
emUsIGJhY2tlbmRTaXplLCBjZ0NvbG9yU3BhY2UsIElPU3VyZmFjZTo6Zm9ybWF0Rm9yUGl4ZWxG
b3JtYXQocGFyYW1ldGVycy5waXhlbEZvcm1hdCkpOwogICAgIGlmICghc3VyZmFjZSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTgwLDI0ICs4MCwyNCBAQCBzdGQ6OnVuaXF1ZV9wdHI8
SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kPiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6
OmNyZWF0ZQogCiAgICAgQ0dDb250ZXh0Q2xlYXJSZWN0KGNnQ29udGV4dC5nZXQoKSwgRmxvYXRS
ZWN0KEZsb2F0UG9pbnQ6Onplcm8oKSwgYmFja2VuZFNpemUpKTsKIAotICAgIHJldHVybiBtYWtl
VW5pcXVlPEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZD4oc2l6ZSwgYmFja2VuZFNpemUsIHJl
c29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQsIFdURk1vdmUoc3VyZmFjZSkp
OworICAgIHJldHVybiBtYWtlVW5pcXVlPEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZD4ocGFy
YW1ldGVycywgYmFja2VuZFNpemUsIFdURk1vdmUoc3VyZmFjZSkpOwogfQogCi1zdGQ6OnVuaXF1
ZV9wdHI8SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kPiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJh
Y2tlbmQ6OmNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIGNvbnN0IEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCkKK3N0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ+
IEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmIHBh
cmFtZXRlcnMsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKIHsKICAgICBpZiAoYXV0
byBjZ0NvbG9yU3BhY2UgPSBjb250ZXh0Q29sb3JTcGFjZShjb250ZXh0KSkKLSAgICAgICAgcmV0
dXJuIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlKHNpemUsIDEsIENvbG9yU3Bh
Y2U6OlNSR0IsIGNnQ29sb3JTcGFjZS5nZXQoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4LCBudWxscHRy
KTsKLSAgICAKLSAgICByZXR1cm4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGUo
c2l6ZSwgMSwgQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4LCBudWxscHRyKTsK
KyAgICAgICAgcmV0dXJuIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlKHBhcmFt
ZXRlcnMsIGNnQ29sb3JTcGFjZS5nZXQoKSwgbnVsbHB0cik7CisKKyAgICByZXR1cm4gSW1hZ2VC
dWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGUocGFyYW1ldGVycywgbnVsbHB0cik7CiB9CiAK
LXN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ+IEltYWdlQnVmZmVy
SU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVz
b2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9y
bWF0LCBjb25zdCBIb3N0V2luZG93KiBob3N0V2luZG93KQorc3RkOjp1bmlxdWVfcHRyPEltYWdl
QnVmZmVySU9TdXJmYWNlQmFja2VuZD4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpjcmVh
dGUoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycywgY29uc3QgSG9zdFdpbmRvdyogaG9zdFdp
bmRvdykKIHsKLSAgICByZXR1cm4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGUo
c2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBjYWNoZWRDR0NvbG9yU3BhY2UoY29s
b3JTcGFjZSksIHBpeGVsRm9ybWF0LCBob3N0V2luZG93KTsKKyAgICByZXR1cm4gSW1hZ2VCdWZm
ZXJJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGUocGFyYW1ldGVycywgY2FjaGVkQ0dDb2xvclNwYWNl
KHBhcmFtZXRlcnMuY29sb3JTcGFjZSksIGhvc3RXaW5kb3cpOwogfQogCi1JbWFnZUJ1ZmZlcklP
U3VyZmFjZUJhY2tlbmQ6OkltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZChjb25zdCBGbG9hdFNp
emUmIGxvZ2ljYWxTaXplLCBjb25zdCBJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1
dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0
LCBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiYmIHN1cmZhY2UpCi0gICAgOiBJbWFnZUJ1ZmZl
ckNHQmFja2VuZChsb2dpY2FsU2l6ZSwgYmFja2VuZFNpemUsIHJlc29sdXRpb25TY2FsZSwgY29s
b3JTcGFjZSwgcGl4ZWxGb3JtYXQpCitJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OkltYWdl
QnVmZmVySU9TdXJmYWNlQmFja2VuZChjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBjb25z
dCBJbnRTaXplJiBiYWNrZW5kU2l6ZSwgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4mJiBzdXJm
YWNlKQorICAgIDogSW1hZ2VCdWZmZXJDR0JhY2tlbmQocGFyYW1ldGVycywgYmFja2VuZFNpemUp
CiAgICAgLCBtX3N1cmZhY2UoV1RGTW92ZShzdXJmYWNlKSkKIHsKICAgICBBU1NFUlQobV9zdXJm
YWNlKTsKQEAgLTE0OCw3ICsxNDgsNyBAQCBSZWZQdHI8TmF0aXZlSW1hZ2U+IEltYWdlQnVmZmVy
SU9TdXJmYWNlQmFja2VuZDo6c2lua0ludG9OYXRpdmVJbWFnZSgpCiB2b2lkIEltYWdlQnVmZmVy
SU9TdXJmYWNlQmFja2VuZDo6ZHJhd0NvbnN1bWluZyhHcmFwaGljc0NvbnRleHQmIGRlc3RDb250
ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIEZsb2F0UmVjdCBh
ZGp1c3RlZFNyY1JlY3QgPSBzcmNSZWN0OwotICAgIGFkanVzdGVkU3JjUmVjdC5zY2FsZShtX3Jl
c29sdXRpb25TY2FsZSk7CisgICAgYWRqdXN0ZWRTcmNSZWN0LnNjYWxlKHJlc29sdXRpb25TY2Fs
ZSgpKTsKIAogICAgIGlmIChhdXRvIGltYWdlID0gc2lua0ludG9OYXRpdmVJbWFnZSgpKQogICAg
ICAgICBkZXN0Q29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoKmltYWdlLCBtX2JhY2tlbmRTaXplLCBk
ZXN0UmVjdCwgYWRqdXN0ZWRTcmNSZWN0LCBvcHRpb25zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZh
Y2VCYWNrZW5kLmgKaW5kZXggZGU5ODIxMTFlNTJjMTJlZGIwOGRjNzg4YjUwZWNlZmIzNjUwNzY1
MC4uZjFlMmQ5NGY1NmE1YmE0OTAzN2M4ZTVjMzU0YWM4MmU2MGUzMWEzZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VC
YWNrZW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VC
dWZmZXJJT1N1cmZhY2VCYWNrZW5kLmgKQEAgLTM5LDExICszOSwxMSBAQCBjbGFzcyBXRUJDT1JF
X0VYUE9SVCBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQgOiBwdWJsaWMgSW1hZ2VCdWZmZXJD
R0JhY2tlbmQgewogcHVibGljOgogICAgIHN0YXRpYyBJbnRTaXplIGNhbGN1bGF0ZUJhY2tlbmRT
aXplKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSk7
CiAKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2Vu
ZD4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JT
cGFjZSwgQ0dDb2xvclNwYWNlUmVmLCBQaXhlbEZvcm1hdCwgY29uc3QgSG9zdFdpbmRvdyopOwot
ICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kPiBj
cmVhdGUoY29uc3QgRmxvYXRTaXplJiwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNl
LCBQaXhlbEZvcm1hdCwgY29uc3QgSG9zdFdpbmRvdyopOwotICAgIHN0YXRpYyBzdGQ6OnVuaXF1
ZV9wdHI8SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kPiBjcmVhdGUoY29uc3QgRmxvYXRTaXpl
JiwgY29uc3QgR3JhcGhpY3NDb250ZXh0Jik7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJ
bWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ+IGNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiwgQ0dD
b2xvclNwYWNlUmVmLCBjb25zdCBIb3N0V2luZG93Kik7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVl
X3B0cjxJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ+IGNyZWF0ZShjb25zdCBQYXJhbWV0ZXJz
JiwgY29uc3QgSG9zdFdpbmRvdyopOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VC
dWZmZXJJT1N1cmZhY2VCYWNrZW5kPiBjcmVhdGUoY29uc3QgUGFyYW1ldGVycyYsIGNvbnN0IEdy
YXBoaWNzQ29udGV4dCYpOwogCi0gICAgSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kKGNvbnN0
IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEludFNpemUmIHBoeXNpY2FsU2l6ZSwgZmxv
YXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlLCBQaXhlbEZvcm1hdCwgc3RkOjp1bmlxdWVf
cHRyPElPU3VyZmFjZT4mJik7CisgICAgSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kKGNvbnN0
IFBhcmFtZXRlcnMmLCBjb25zdCBJbnRTaXplJiBiYWNrZW5kU2l6ZSwgc3RkOjp1bmlxdWVfcHRy
PElPU3VyZmFjZT4mJik7CiAKICAgICBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQoKSBjb25zdCBv
dmVycmlkZTsKICAgICB2b2lkIGZsdXNoQ29udGV4dCgpIG92ZXJyaWRlOwpAQCAtNjksNyArNjks
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWxlYXNlQnVmZmVyVG9Qb29sKCkgb3ZlcnJpZGU7CiAK
ICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNPcmlnaW5BdFVwcGVyTGVmdENvcm5lciA9IHRy
dWU7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzQWNjZWxlcmF0ZWQgPSB0cnVlOworICAg
IHN0YXRpYyBjb25zdGV4cHIgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlID0gUmVuZGVyaW5n
TW9kZTo6QWNjZWxlcmF0ZWQ7CiAKIHByb3RlY3RlZDoKICAgICBzdGF0aWMgUmV0YWluUHRyPENH
Q29sb3JTcGFjZVJlZj4gY29udGV4dENvbG9yU3BhY2UoY29uc3QgR3JhcGhpY3NDb250ZXh0Jik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdC5oCmluZGV4IDI2ZmM5NzMwNzIxMTI3MzAzOTNlMmRjYmM4N2Qw
YzZiOWNhNTQyNTguLjE2YjE5N2Y5ZWUyZDI4ZGJlOTIxZDkzMDk0M2Q0MzA0NjFkZmNkODYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdC5oCkBAIC0zMyw3ICszMyw2IEBACiAjaW5jbHVkZSA8d3RmL0Zh
c3RNYWxsb2MuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25j
b3B5YWJsZS5oPgotI2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC00NSw5
ICs0NCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsK
IAotZW51bSBGbHVzaElkZW50aWZpZXJUeXBlIHsgfTsKLXVzaW5nIEZsdXNoSWRlbnRpZmllciA9
IE9iamVjdElkZW50aWZpZXI8Rmx1c2hJZGVudGlmaWVyVHlwZT47Ci0KIGVudW0gQXNUZXh0Rmxh
ZyB7CiAgICAgTm9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDAsCiAgICAgSW5jbHVk
ZXNQbGF0Zm9ybU9wZXJhdGlvbnMgICAgICA9IDEgPDwgMCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEZsdXNoSWRl
bnRpZmllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0Rmx1c2hJZGVudGlmaWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWNmNzgxNjhlYmI3ZmM3
MzdiOWI0YTZjZjhkNTM3MjlmNWEwNjBlYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEZsdXNoSWRlbnRp
Zmllci5oCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lu
Y2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
bmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKKworZW51bSBGbHVzaElkZW50aWZpZXJUeXBlIHsgfTsK
K3VzaW5nIEZsdXNoSWRlbnRpZmllciA9IE9iamVjdElkZW50aWZpZXI8Rmx1c2hJZGVudGlmaWVy
VHlwZT47CisKK30gLy8gRGlzcGxheUxpc3QKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0SW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEltYWdlQnVmZmVyLmgKaW5kZXggZjViMjIzNDAyYWVi
Mzc3MjhiNzMwMWZiNjY3MTE4YTNiMmU4YjA0MC4uMzQzMTFkNTI3NzhlYWYyMzcwOTExZDUwMjYy
Yjg3OTgxYWM2MTU4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJbWFnZUJ1ZmZl
ci5oCkBAIC0zNCw2ICszNCw3IEBAIG5hbWVzcGFjZSBEaXNwbGF5TGlzdCB7CiB0ZW1wbGF0ZTx0
eXBlbmFtZSBCYWNrZW5kVHlwZT4KIGNsYXNzIEltYWdlQnVmZmVyIDogcHVibGljIENvbmNyZXRl
SW1hZ2VCdWZmZXI8QmFja2VuZFR5cGU+IHsKICAgICB1c2luZyBCYXNlQ29uY3JldGVJbWFnZUJ1
ZmZlciA9IENvbmNyZXRlSW1hZ2VCdWZmZXI8QmFja2VuZFR5cGU+OworICAgIHVzaW5nIEJhc2VD
b25jcmV0ZUltYWdlQnVmZmVyOjpsb2dpY2FsU2l6ZTsKIAogcHVibGljOgogICAgIHN0YXRpYyBh
dXRvIGNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwg
Q29sb3JTcGFjZSBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgY29uc3QgSG9z
dFdpbmRvdyogaG9zdFdpbmRvdykKQEAgLTQ2LDE0ICs0NywxNSBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZlcjo6dGVtcGxhdGUgY3JlYXRlPEltYWdlQnVm
ZmVyPihzaXplLCBjb250ZXh0LCBzaXplKTsKICAgICB9CiAKLSAgICBJbWFnZUJ1ZmZlcihzdGQ6
OnVuaXF1ZV9wdHI8QmFja2VuZFR5cGU+JiYgZGF0YUJhY2tlbmQsIGNvbnN0IEZsb2F0U2l6ZSYg
c2l6ZSkKLSAgICAgICAgOiBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZlcihXVEZNb3ZlKGRhdGFCYWNr
ZW5kKSkKKyAgICBJbWFnZUJ1ZmZlcihzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJCYWNrZW5k
OjpQYXJhbWV0ZXJzPiYmIHBhcmFtZXRlcnMsIHN0ZDo6dW5pcXVlX3B0cjxCYWNrZW5kVHlwZT4m
JiBkYXRhQmFja2VuZCwgY29uc3QgRmxvYXRTaXplJiBzaXplKQorICAgICAgICA6IEJhc2VDb25j
cmV0ZUltYWdlQnVmZmVyKFdURk1vdmUocGFyYW1ldGVycyksIFdURk1vdmUoZGF0YUJhY2tlbmQp
KQogICAgICAgICAsIG1fZHJhd2luZ0NvbnRleHQoc2l6ZSwgaW5pdGlhbERyYXdpbmdDb250ZXh0
Q1RNKHNpemUpKQogICAgIHsKICAgICB9CiAKLSAgICBJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNp
emUmIHNpemUsIFJlY29yZGVyOjpEZWxlZ2F0ZSogZGVsZWdhdGUgPSBudWxscHRyKQotICAgICAg
ICA6IG1fZHJhd2luZ0NvbnRleHQoc2l6ZSwgaW5pdGlhbERyYXdpbmdDb250ZXh0Q1RNKHNpemUp
LCBkZWxlZ2F0ZSkKKyAgICBJbWFnZUJ1ZmZlcihzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJC
YWNrZW5kOjpQYXJhbWV0ZXJzPiYmIHBhcmFtZXRlcnMsIFJlY29yZGVyOjpEZWxlZ2F0ZSogZGVs
ZWdhdGUgPSBudWxscHRyKQorICAgICAgICA6IEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyKFdURk1v
dmUocGFyYW1ldGVycykpCisgICAgICAgICwgbV9kcmF3aW5nQ29udGV4dChsb2dpY2FsU2l6ZSgp
LCBpbml0aWFsRHJhd2luZ0NvbnRleHRDVE0obG9naWNhbFNpemUoKSksIGRlbGVnYXRlKQogICAg
IHsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9JbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQuY3BwCmluZGV4IDM3
OGFhZjRjNDBjNGUxMjJhY2JlMDY5NDMyYzdhZDdlYzIwOWVkNzMuLjAxZDJlNzgwMjg1YjExZmVj
MzliNGNkMjZiZjRjZmZmMDgwNzMzNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0MkRCYWNr
ZW5kLmNwcApAQCAtMTcxLDcgKzE3MSw3IEBAIHN0YXRpYyBSZWZQdHI8SW1hZ2U+IGNyZWF0ZUJp
dG1hcEltYWdlQWZ0ZXJTY2FsaW5nSWZOZWVkZWQoSUQyRDFCaXRtYXBSZW5kZXJUYXJnCiBSZWZQ
dHI8SW1hZ2U+IEltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpjb3B5SW1hZ2UoQmFja2luZ1N0
b3JlQ29weSBjb3B5QmVoYXZpb3IsIFByZXNlcnZlUmVzb2x1dGlvbiBwcmVzZXJ2ZVJlc29sdXRp
b24pIGNvbnN0CiB7CiAgICAgUGxhdGZvcm1JbWFnZVB0ciBpbWFnZTsKLSAgICBpZiAobV9yZXNv
bHV0aW9uU2NhbGUgPT0gMSB8fCBwcmVzZXJ2ZVJlc29sdXRpb24gPT0gUHJlc2VydmVSZXNvbHV0
aW9uOjpZZXMpCisgICAgaWYgKHJlc29sdXRpb25TY2FsZSgpID09IDEgfHwgcHJlc2VydmVSZXNv
bHV0aW9uID09IFByZXNlcnZlUmVzb2x1dGlvbjo6WWVzKQogICAgICAgICBpbWFnZSA9IGNvcHlO
YXRpdmVJbWFnZShjb3B5QmVoYXZpb3IpLT5wbGF0Zm9ybUltYWdlKCk7CiAgICAgZWxzZQogICAg
ICAgICBpbWFnZSA9IGNvcHlOYXRpdmVJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSktPnBsYXRm
b3JtSW1hZ2UoKTsKQEAgLTI2OSw3ICsyNjksNyBAQCBQbGF0Zm9ybUltYWdlUHRyIEltYWdlQnVm
ZmVyRGlyZWN0MkRCYWNrZW5kOjpjb21wYXRpYmxlQml0bWFwKElEMkQxUmVuZGVyVGFyZ2V0Kgog
dm9pZCBJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGRl
c3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIEZsb2F0
UmVjdCBhZGp1c3RlZFNyY1JlY3QgPSBzcmNSZWN0OwotICAgIGFkanVzdGVkU3JjUmVjdC5zY2Fs
ZShtX3Jlc29sdXRpb25TY2FsZSwgbV9yZXNvbHV0aW9uU2NhbGUpOworICAgIGFkanVzdGVkU3Jj
UmVjdC5zY2FsZShyZXNvbHV0aW9uU2NhbGUoKSk7CiAKICAgICBhdXRvIGNvbXBhdGlibGVCaXRt
YXAgPSBjb21wYXRpYmxlQml0bWFwKGRlc3RDb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLT5yZW5k
ZXJUYXJnZXQoKSk7CiAKQEAgLTI4Myw3ICsyODMsNyBAQCB2b2lkIEltYWdlQnVmZmVyRGlyZWN0
MkRCYWNrZW5kOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0
Ugogdm9pZCBJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6ZHJhd1BhdHRlcm4oR3JhcGhpY3ND
b250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0s
IGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0
IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIEZsb2F0UmVjdCBhZGp1c3Rl
ZFNyY1JlY3QgPSBzcmNSZWN0OwotICAgIGFkanVzdGVkU3JjUmVjdC5zY2FsZShtX3Jlc29sdXRp
b25TY2FsZSk7CisgICAgYWRqdXN0ZWRTcmNSZWN0LnNjYWxlKHJlc29sdXRpb25TY2FsZSgpKTsK
IAogICAgIGlmIChhdXRvIGltYWdlID0gY29weUltYWdlKCZkZXN0Q29udGV4dCA9PSAmY29udGV4
dCgpID8gQ29weUJhY2tpbmdTdG9yZSA6IERvbnRDb3B5QmFja2luZ1N0b3JlKSkKICAgICAgICAg
aW1hZ2UtPmRyYXdQYXR0ZXJuKGRlc3RDb250ZXh0LCBkZXN0UmVjdCwgYWRqdXN0ZWRTcmNSZWN0
LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgb3B0aW9ucyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaCBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oCmlu
ZGV4IDVjNzU0NWJmZTY2OTI2MjBkMDEzZmRjODg2ZDc1ZWYzOWM4MWFmZGQuLjY1MDIxZjAwM2Yx
NTVmZThkMTBiMGFjZjYyYjdiNzE3MmQxYTMyNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oCkBAIC00OSwxMiArNDks
MTIgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXI6OnRl
bXBsYXRlIGNyZWF0ZTxSZW1vdGVJbWFnZUJ1ZmZlcj4oc2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBj
b2xvclNwYWNlLCBwaXhlbEZvcm1hdCwgbnVsbHB0ciwgcmVtb3RlUmVuZGVyaW5nQmFja2VuZCwg
cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB9CiAKLSAgICBSZW1vdGVJbWFnZUJ1
ZmZlcihzdGQ6OnVuaXF1ZV9wdHI8QmFja2VuZFR5cGU+JiYgYmFja2VuZCwgUmVtb3RlUmVuZGVy
aW5nQmFja2VuZCYgcmVtb3RlUmVuZGVyaW5nQmFja2VuZCwgV2ViQ29yZTo6UmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKLSAgICAgICAgOiBC
YXNlQ29uY3JldGVJbWFnZUJ1ZmZlcihXVEZNb3ZlKGJhY2tlbmQpLCByZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIpCisgICAgUmVtb3RlSW1hZ2VCdWZmZXIoc3RkOjp1bmlxdWVfcHRyPFdlYkNv
cmU6OkltYWdlQnVmZmVyQmFja2VuZDo6UGFyYW1ldGVycz4mJiBwYXJhbWV0ZXJzLCBzdGQ6OnVu
aXF1ZV9wdHI8QmFja2VuZFR5cGU+JiYgYmFja2VuZCwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZCYg
cmVtb3RlUmVuZGVyaW5nQmFja2VuZCwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKKyAgICAgICAgOiBCYXNlQ29uY3JldGVJ
bWFnZUJ1ZmZlcihXVEZNb3ZlKHBhcmFtZXRlcnMpLCBXVEZNb3ZlKGJhY2tlbmQpLCByZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIpCiAgICAgICAgICwgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5k
KHJlbW90ZVJlbmRlcmluZ0JhY2tlbmQpCiAgICAgICAgICwgbV9yZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogICAgIHsKLSAgICAgICAgbV9y
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmltYWdlQnVmZmVyQmFja2VuZFdhc0NyZWF0ZWQobV9iYWNr
ZW5kLT5sb2dpY2FsU2l6ZSgpLCBtX2JhY2tlbmQtPmJhY2tlbmRTaXplKCksIG1fYmFja2VuZC0+
cmVzb2x1dGlvblNjYWxlKCksIG1fYmFja2VuZC0+Y29sb3JTcGFjZSgpLCBtX2JhY2tlbmQtPnBp
eGVsRm9ybWF0KCksIG1fYmFja2VuZC0+Y3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKCks
IHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CisgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5n
QmFja2VuZC5pbWFnZUJ1ZmZlckJhY2tlbmRXYXNDcmVhdGVkKG1fYmFja2VuZC0+YmFja2VuZFNp
emUoKSwgbV9iYWNrZW5kLT5jcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUoKSwgcmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB9CiAKICAgICB+UmVtb3RlSW1hZ2VCdWZmZXIo
KQpAQCAtNjUsMTcgKzY1LDYgQEAgcHVibGljOgogICAgICAgICAgICAgY29udGV4dCgpLnJlc3Rv
cmUoKTsKICAgICB9CiAKLSAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVwbGF5UmVzdWx0IHN1
Ym1pdERpc3BsYXlMaXN0KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYg
ZGlzcGxheUxpc3QpCi0gICAgewotICAgICAgICBpZiAoZGlzcGxheUxpc3QuaXNFbXB0eSgpKQot
ICAgICAgICAgICAgcmV0dXJuIHsgfTsKLQotICAgICAgICBjb25zdCBhdXRvJiBpbWFnZUJ1ZmZl
cnMgPSBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQucmVtb3RlUmVzb3VyY2VDYWNoZSgpLmltYWdl
QnVmZmVycygpOwotICAgICAgICBjb25zdCBhdXRvJiBuYXRpdmVJbWFnZXMgPSBtX3JlbW90ZVJl
bmRlcmluZ0JhY2tlbmQucmVtb3RlUmVzb3VyY2VDYWNoZSgpLm5hdGl2ZUltYWdlcygpOwotICAg
ICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVwbGF5ZXIgcmVwbGF5ZXIgeyBCYXNlQ29uY3Jl
dGVJbWFnZUJ1ZmZlcjo6Y29udGV4dCgpLCBkaXNwbGF5TGlzdCwgJmltYWdlQnVmZmVycywgJm5h
dGl2ZUltYWdlcywgdGhpcyB9OwotICAgICAgICByZXR1cm4gcmVwbGF5ZXIucmVwbGF5KCk7Ci0g
ICAgfQotCiBwcml2YXRlOgogICAgIGJvb2wgYXBwbHkoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0
ZW1IYW5kbGUgaXRlbSwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBvdmVycmlk
ZQogICAgIHsKQEAgLTEwMSw2ICs5MCwxNyBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gbV9y
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmFwcGx5TWVkaWFJdGVtKGl0ZW0sIGNvbnRleHQpOwogICAg
IH0KIAorICAgIHZvaWQgc3VibWl0RGlzcGxheUxpc3QoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OkRpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGlm
IChkaXNwbGF5TGlzdC5pc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
Y29uc3QgYXV0byYgaW1hZ2VCdWZmZXJzID0gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLnJlbW90
ZVJlc291cmNlQ2FjaGUoKS5pbWFnZUJ1ZmZlcnMoKTsKKyAgICAgICAgY29uc3QgYXV0byYgbmF0
aXZlSW1hZ2VzID0gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLnJlbW90ZVJlc291cmNlQ2FjaGUo
KS5uYXRpdmVJbWFnZXMoKTsKKyAgICAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlcGxheWVy
IHJlcGxheWVyIHsgQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXI6OmNvbnRleHQoKSwgZGlzcGxheUxp
c3QsICZpbWFnZUJ1ZmZlcnMsICZuYXRpdmVJbWFnZXMsIHRoaXMgfTsKKyAgICAgICAgcmVwbGF5
ZXIucmVwbGF5KCk7CisgICAgfQorCiAgICAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZCYgbV9yZW1v
dGVSZW5kZXJpbmdCYWNrZW5kOwogICAgIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllciBtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcjsKIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZC5jcHAKaW5kZXggZjU5YzM4NzI0ZjhmNjJlZTc4MDJiOTIwMjM3ZjY4ODQ3M2Q3ZmJmOS4uMmNh
MjQ4Y2JjZTI5YWZlOTU2ZTAxMjcxMWFkNmExZDY3YjcwZmE5ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kLmNwcApAQCAtOTksOSArOTksOSBAQCBib29sIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmFw
cGx5TWVkaWFJdGVtKERpc3BsYXlMaXN0OjpJdGVtSGFuZGxlIGl0ZW0sIEdyYXBoaQogICAgIHJl
dHVybiB0cnVlOwogfQogCi12b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmltYWdlQnVmZmVy
QmFja2VuZFdhc0NyZWF0ZWQoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50
U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xv
clNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxl
IGhhbmRsZSwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcikKK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6aW1hZ2VCdWZmZXJCYWNrZW5k
V2FzQ3JlYXRlZChjb25zdCBJbnRTaXplJiBiYWNrZW5kU2l6ZSwgSW1hZ2VCdWZmZXJCYWNrZW5k
SGFuZGxlIGhhbmRsZSwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcikKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHk6OkltYWdlQnVmZmVyQmFja2VuZFdhc0NyZWF0ZWQobG9naWNhbFNpemUsIGJhY2tl
bmRTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0LCBXVEZNb3Zl
KGhhbmRsZSksIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciksIG1fcmVuZGVyaW5nQmFja2Vu
ZElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eTo6SW1hZ2VCdWZmZXJCYWNrZW5kV2FzQ3JlYXRlZChiYWNrZW5kU2l6ZSwgV1RGTW92ZSho
YW5kbGUpLCByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpLCBtX3JlbmRlcmluZ0JhY2tlbmRJ
ZGVudGlmaWVyKTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpkaWRGbHVzaChE
aXNwbGF5TGlzdDo6Rmx1c2hJZGVudGlmaWVyIGZsdXNoSWRlbnRpZmllciwgUmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKQEAgLTE0OCwxMCAr
MTQ4LDcgQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjphcHBseURpc3BsYXlMaXN0c0Zy
b21IYW5kbGUoSW1hZ2VCdWZmZXImIGRlc3RpbmF0aW8KICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogCi0gICAgICAgIGlmIChkZXN0aW5hdGlvbi5pc0FjY2VsZXJhdGVkKCkpCi0gICAg
ICAgICAgICBzdGF0aWNfY2FzdDxBY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyJj4oZGVzdGlu
YXRpb24pLnN1Ym1pdERpc3BsYXlMaXN0KCpkaXNwbGF5TGlzdCk7Ci0gICAgICAgIGVsc2UKLSAg
ICAgICAgICAgIHN0YXRpY19jYXN0PFVuYWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlciY+KGRl
c3RpbmF0aW9uKS5zdWJtaXREaXNwbGF5TGlzdCgqZGlzcGxheUxpc3QpOworICAgICAgICBkZXN0
aW5hdGlvbi5zdWJtaXREaXNwbGF5TGlzdCgqZGlzcGxheUxpc3QpOwogCiAgICAgICAgIENoZWNr
ZWRTaXplIGNoZWNrZWRPZmZzZXQgPSBvZmZzZXQ7CiAgICAgICAgIGNoZWNrZWRPZmZzZXQgKz0g
c2l6ZVRvUmVhZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCmluZGV4IDY0MDY2NjhmYWUwNTA1N2U5ZGYz
MjY0ZjU3NTI0OTQ4OWQ3MDVjNzguLmVmYjliMTIyY2JhMDRmNzk4YzRhODk5NDhjMjQxOTY4YTI0
NjIxYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVSZW5kZXJpbmdCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaApAQCAtNzAsNyArNzAsNyBAQCBwdWJsaWM6CiAg
ICAgYm9vbCBhcHBseU1lZGlhSXRlbShXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZSwg
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Jik7CiAKICAgICAvLyBNZXNzYWdlcyB0byBiZSBzZW50
LgotICAgIHZvaWQgaW1hZ2VCdWZmZXJCYWNrZW5kV2FzQ3JlYXRlZChjb25zdCBXZWJDb3JlOjpG
bG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBiYWNrZW5kU2l6
ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlLCBXZWJDb3JlOjpQ
aXhlbEZvcm1hdCwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLCBXZWJDb3JlOjpSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIpOworICAgIHZvaWQgaW1hZ2VCdWZmZXJCYWNrZW5kV2FzQ3JlYXRl
ZChjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBiYWNrZW5kU2l6ZSwgSW1hZ2VCdWZmZXJCYWNrZW5k
SGFuZGxlLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIHZvaWQg
ZGlkRmx1c2goV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZsdXNoSWRlbnRpZmllciwgV2ViQ29yZTo6
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKIAogICAgIHZvaWQgc2V0TmV4dEl0ZW1CdWZm
ZXJUb1JlYWQoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXll
ckJhY2tpbmdTdG9yZS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9S
ZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbQppbmRleCBlZjk0YzZiMDIwNTA0M2QzNzFiZjBmOTY5
NmM4ZDhjYTYzNmMwMTI1Li41ZjQ0YTM5YmMwYzE3NDI1NmQ2NzQ5OWFiYTVmMzQwYmJmM2U3ZTcx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3Rl
TGF5ZXJCYWNraW5nU3RvcmUubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5
ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tCkBAIC0zMTUsOCArMzE1LDcgQEAgYm9v
bCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZGlzcGxheSgpCiAKICAgICBtX2xheWVyLT5vd25l
cigpLT5wbGF0Zm9ybUNBTGF5ZXJMYXllckRpZERpc3BsYXkobV9sYXllcik7CiAKLSAgICAvLyBG
SVhNRTogVGhpcyBtZXRob2QgaGFzIGEgd2VpcmQgbmFtZS4gVGhpcyBpcyAic3VibWl0IHdvcmsi
LgotICAgIG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXItPmZsdXNoRHJhd2luZ0NvbnRleHRBbmRD
b21taXQoKTsKKyAgICBtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVyLT5zdWJtaXREcmF3aW5nQ29u
dGV4dCgpOwogCiAgICAgbV9mcm9udEJ1ZmZlckZsdXNoZXIgPSBtX2Zyb250QnVmZmVyLmltYWdl
QnVmZmVyLT5jcmVhdGVGbHVzaGVyKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFy
ZWFibGVCaXRtYXBCYWNrZW5kLmNwcAppbmRleCA4NTVjODk0OTY2YzU4N2JiMGU2YWVjNTExOWRl
NGI5NDQ1MDg3ZDRiLi5jYWM1NjcyYmQ4MDQwZjNlNTJiNjZlZDMwYzYyZGY2NjFjNDUzZTFiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVm
ZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwCkBA
IC00MywxNyArNDMsMTcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIFdURl9NQUtFX0lT
T19BTExPQ0FURURfSU1QTChJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQpOwogCi1z
dGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kPiBJbWFnZUJ1
ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHNpemUs
IGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBQaXhlbEZvcm1h
dCBwaXhlbEZvcm1hdCwgY29uc3QgSG9zdFdpbmRvdyopCitzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VC
dWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kPiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJh
Y2tlbmQ6OmNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBjb25zdCBIb3N0V2lu
ZG93KikKIHsKLSAgICBBU1NFUlQocGl4ZWxGb3JtYXQgPT0gUGl4ZWxGb3JtYXQ6OkJHUkE4KTsK
KyAgICBBU1NFUlQocGFyYW1ldGVycy5waXhlbEZvcm1hdCA9PSBQaXhlbEZvcm1hdDo6QkdSQTgp
OwogCi0gICAgSW50U2l6ZSBiYWNrZW5kU2l6ZSA9IGNhbGN1bGF0ZUJhY2tlbmRTaXplKHNpemUs
IHJlc29sdXRpb25TY2FsZSk7CisgICAgSW50U2l6ZSBiYWNrZW5kU2l6ZSA9IGNhbGN1bGF0ZUJh
Y2tlbmRTaXplKHBhcmFtZXRlcnMubG9naWNhbFNpemUsIHBhcmFtZXRlcnMucmVzb2x1dGlvblNj
YWxlKTsKICAgICBpZiAoYmFja2VuZFNpemUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAogICAgIFNoYXJlYWJsZUJpdG1hcDo6Q29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9u
OwogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIGNvbmZpZ3VyYXRpb24uY29sb3JTcGFjZSA9IHsg
Y2FjaGVkQ0dDb2xvclNwYWNlKGNvbG9yU3BhY2UpIH07CisgICAgY29uZmlndXJhdGlvbi5jb2xv
clNwYWNlID0geyBjYWNoZWRDR0NvbG9yU3BhY2UocGFyYW1ldGVycy5jb2xvclNwYWNlKSB9Owog
I2VuZGlmCiAgICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJs
ZShiYWNrZW5kU2l6ZSwgY29uZmlndXJhdGlvbik7CiAgICAgaWYgKCFiaXRtYXApCkBAIC02Mywx
MCArNjMsMTAgQEAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFj
a2VuZD4gSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWMKICAgICBpZiAoIWNvbnRleHQpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIG1ha2VVbmlxdWU8SW1hZ2VCdWZm
ZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kPihzaXplLCBiYWNrZW5kU2l6ZSwgcmVzb2x1dGlvblNj
YWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCwgV1RGTW92ZShiaXRtYXApLCBXVEZNb3ZlKGNv
bnRleHQpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1h
cEJhY2tlbmQ+KHBhcmFtZXRlcnMsIGJhY2tlbmRTaXplLCBXVEZNb3ZlKGJpdG1hcCksIFdURk1v
dmUoY29udGV4dCkpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJTaGFyZWFibGVC
aXRtYXBCYWNrZW5kPiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmNyZWF0ZShj
b25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBJbnRTaXplJiBiYWNrZW5kU2l6ZSwg
ZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0
IHBpeGVsRm9ybWF0LCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgaGFuZGxlKQorc3RkOjp1bmlx
dWVfcHRyPEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZD4gSW1hZ2VCdWZmZXJTaGFy
ZWFibGVCaXRtYXBCYWNrZW5kOjpjcmVhdGUoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycywg
Y29uc3QgSW50U2l6ZSYgYmFja2VuZFNpemUsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBoYW5k
bGUpCiB7CiAgICAgaWYgKCFXVEY6OmhvbGRzX2FsdGVybmF0aXZlPFNoYXJlYWJsZUJpdG1hcDo6
SGFuZGxlPihoYW5kbGUpKSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtODEs
MTEgKzgxLDExIEBAIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJh
Y2tlbmQ+IEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFjCiAgICAgaWYgKCFjb250ZXh0KQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBtYWtlVW5pcXVlPEltYWdlQnVm
ZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZD4obG9naWNhbFNpemUsIGJhY2tlbmRTaXplLCByZXNv
bHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0LCBXVEZNb3ZlKGJpdG1hcCksIFdU
Rk1vdmUoY29udGV4dCkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEltYWdlQnVmZmVyU2hhcmVh
YmxlQml0bWFwQmFja2VuZD4ocGFyYW1ldGVycywgYmFja2VuZFNpemUsIFdURk1vdmUoYml0bWFw
KSwgV1RGTW92ZShjb250ZXh0KSk7CiB9CiAKLUltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFj
a2VuZDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kKGNvbnN0IEZsb2F0U2l6ZSYg
bG9naWNhbFNpemUsIGNvbnN0IEludFNpemUmIHBoeXNpY2FsU2l6ZSwgZmxvYXQgcmVzb2x1dGlv
blNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBS
ZWZQdHI8U2hhcmVhYmxlQml0bWFwPiYmIGJpdG1hcCwgc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNz
Q29udGV4dD4mJiBjb250ZXh0KQotICAgIDogUGxhdGZvcm1JbWFnZUJ1ZmZlckJhY2tlbmQobG9n
aWNhbFNpemUsIHBoeXNpY2FsU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhl
bEZvcm1hdCkKK0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6SW1hZ2VCdWZmZXJT
aGFyZWFibGVCaXRtYXBCYWNrZW5kKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIGNvbnN0
IEludFNpemUmIGJhY2tlbmRTaXplLCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiYmIGJpdG1hcCwg
c3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzQ29udGV4dD4mJiBjb250ZXh0KQorICAgIDogUGxhdGZv
cm1JbWFnZUJ1ZmZlckJhY2tlbmQocGFyYW1ldGVycywgYmFja2VuZFNpemUpCiAgICAgLCBtX2Jp
dG1hcChXVEZNb3ZlKGJpdG1hcCkpCiAgICAgLCBtX2NvbnRleHQoV1RGTW92ZShjb250ZXh0KSkK
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1h
Z2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5oCmluZGV4
IDBjN2YwNDdmODgzNWU0YjhkNjNjMTVmNDFlYzkyMTAyZTQ1ODUzOTkuLmVhMzYwNzYxNDlhNGUw
NTJmZTI0NDM5NTdlMGEzYjk5MjJmNTUzNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNo
YXJlYWJsZUJpdG1hcEJhY2tlbmQuaApAQCAtNDMsMTAgKzQzLDEwIEBAIGNsYXNzIEltYWdlQnVm
ZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZCA6IHB1YmxpYyBXZWJDb3JlOjpQbGF0Zm9ybUltYWdl
QnVmZmVyQmFjCiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChJbWFnZUJ1ZmZlclNoYXJlYWJs
ZUJpdG1hcEJhY2tlbmQpOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEltYWdlQnVmZmVyU2hh
cmVhYmxlQml0bWFwQmFja2VuZCk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ+IGNyZWF0ZShjb25zdCBXZWJDb3Jl
OjpGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdl
YkNvcmU6OkNvbG9yU3BhY2UsIFdlYkNvcmU6OlBpeGVsRm9ybWF0LCBjb25zdCBXZWJDb3JlOjpI
b3N0V2luZG93Kik7Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlclNoYXJl
YWJsZUJpdG1hcEJhY2tlbmQ+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2lj
YWxTaXplLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBpbnRlcm5hbFNpemUsIGZsb2F0IHJlc29s
dXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSwgV2ViQ29yZTo6UGl4ZWxGb3JtYXQsIElt
YWdlQnVmZmVyQmFja2VuZEhhbmRsZSk7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFn
ZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ+IGNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiwg
Y29uc3QgV2ViQ29yZTo6SG9zdFdpbmRvdyopOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kPiBjcmVhdGUoY29uc3QgUGFyYW1ldGVy
cyYsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGJhY2tlbmRTaXplLCBJbWFnZUJ1ZmZlckJhY2tl
bmRIYW5kbGUpOwogCi0gICAgSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kKGNvbnN0
IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IFdlYkNvcmU6OkludFNpemUm
IHBoeXNpY2FsU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNl
LCBXZWJDb3JlOjpQaXhlbEZvcm1hdCwgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4mJiwgc3RkOjp1
bmlxdWVfcHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dD4mJik7CisgICAgSW1hZ2VCdWZmZXJT
aGFyZWFibGVCaXRtYXBCYWNrZW5kKGNvbnN0IFBhcmFtZXRlcnMmLCBjb25zdCBXZWJDb3JlOjpJ
bnRTaXplJiBiYWNrZW5kU2l6ZSwgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4mJiwgc3RkOjp1bmlx
dWVfcHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dD4mJik7CiAKICAgICBJbWFnZUJ1ZmZlckJh
Y2tlbmRIYW5kbGUgY3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKCkgY29uc3Q7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUGxhdGZvcm1S
ZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1BsYXRmb3JtUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCmluZGV4IDA1MTc2NzgzZDU1
MzFiZmU3MGY4NTBiZjJjMTQ5Zjc4ODIyZDBlMzkuLjlhZmYwODhlMzdjYTc2YTdmODY0YWU3ZTQy
YmJiNzAwNGYxZjE1MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUGxhdGZvcm1SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9QbGF0Zm9ybVJlbW90ZUltYWdlQnVmZmVyUHJv
eHkuaApAQCAtMzcsMTQgKzM3LDQgQEAgdXNpbmcgQWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZl
clByb3h5ID0gUmVtb3RlSW1hZ2VCdWZmZXJQcm94eTxBY2NlbGVyYXRlZEltYWcKIAogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CiAKLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViS2l0OjpV
bmFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXJQcm94eSkKLSAgICBzdGF0aWMgYm9vbCBpc1R5
cGUoY29uc3QgV2ViQ29yZTo6SW1hZ2VCdWZmZXImIGltYWdlQnVmZmVyKSB7IHJldHVybiBpbWFn
ZUJ1ZmZlci5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSAmJiAhaW1hZ2VCdWZmZXIuaXNB
Y2NlbGVyYXRlZCgpOyB9Ci1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCi0KLSNpZiBIQVZF
KElPU1VSRkFDRSkKLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViS2l0OjpBY2NlbGVy
YXRlZFJlbW90ZUltYWdlQnVmZmVyUHJveHkpCi0gICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0
IFdlYkNvcmU6OkltYWdlQnVmZmVyJiBpbWFnZUJ1ZmZlcikgeyByZXR1cm4gaW1hZ2VCdWZmZXIu
cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCkgJiYgaW1hZ2VCdWZmZXIuaXNBY2NlbGVyYXRl
ZCgpOyB9Ci1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCi0jZW5kaWYKLQogI2VuZGlmIC8v
IEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgKaW5kZXggMzFj
ZDAyZDFiMGYyMWVkZTU4MjJiZjk0NWJhZDQ2ZWRlZjFlYjM3YS4uZmNkZWY1MDZkODI2N2I4NGYz
M2I1N2E4ZjkzNTJkZmZjZTM2ZjMxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgKQEAg
LTUwLDE0ICs1MCwxNiBAQCBjbGFzcyBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5IDogcHVibGljIFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpJbWFnZUJ1ZmZlcjxCYWNrZW5kVAogICAgIHVzaW5nIEJhc2VE
aXNwbGF5TGlzdEltYWdlQnVmZmVyOjptX2JhY2tlbmQ7CiAgICAgdXNpbmcgQmFzZURpc3BsYXlM
aXN0SW1hZ2VCdWZmZXI6Om1fZHJhd2luZ0NvbnRleHQ7CiAgICAgdXNpbmcgQmFzZURpc3BsYXlM
aXN0SW1hZ2VCdWZmZXI6Om1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyOworICAgIHVzaW5n
IEJhc2VEaXNwbGF5TGlzdEltYWdlQnVmZmVyOjpyZXNvbHV0aW9uU2NhbGU7CiAKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUmVmUHRyPFJlbW90ZUltYWdlQnVmZmVyUHJveHk+IGNyZWF0ZShjb25zdCBX
ZWJDb3JlOjpGbG9hdFNpemUmIHNpemUsIFdlYkNvcmU6OlJlbmRlcmluZ01vZGUgcmVuZGVyaW5n
TW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlIGNvbG9yU3Bh
Y2UsIFdlYkNvcmU6OlBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHkmIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKKyAgICBzdGF0aWMgUmVmUHRy
PFJlbW90ZUltYWdlQnVmZmVyUHJveHk+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUm
IHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSBjb2xvclNw
YWNlLCBXZWJDb3JlOjpQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5JiByZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpCiAgICAgewogICAgICAgICBp
ZiAoQmFja2VuZFR5cGU6OmNhbGN1bGF0ZUJhY2tlbmRTaXplKHNpemUsIHJlc29sdXRpb25TY2Fs
ZSkuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5KHNpemUsIHJlbmRlcmluZ01v
ZGUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQsIHJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eSkpOworICAgICAgICBhdXRvIHBhcmFtZXRlcnMgPSBzdGQ6OnVuaXF1
ZV9wdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjpQYXJhbWV0ZXJzPihuZXcgV2ViQ29y
ZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjpQYXJhbWV0ZXJzKHsgc2l6ZSwgcmVzb2x1dGlvblNjYWxl
LCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCB9KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgUmVtb3RlSW1hZ2VCdWZmZXJQcm94eShXVEZNb3ZlKHBhcmFtZXRlcnMpLCByZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHkpKTsKICAgICB9CiAKICAgICB+UmVtb3RlSW1hZ2VCdWZmZXJQcm94
eSgpCkBAIC02OSwyNyArNzEsNiBAQCBwdWJsaWM6CiAgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5LT5yZWxlYXNlUmVtb3RlUmVzb3VyY2UobV9yZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIpOwogICAgIH0KIAotICAgIHZvaWQgY2xlYXJCYWNrZW5kKCkgeyBtX2JhY2tlbmQg
PSBudWxscHRyOyB9Ci0KLSAgICB2b2lkIGNyZWF0ZUJhY2tlbmQoY29uc3QgV2ViQ29yZTo6Rmxv
YXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgYmFja2VuZFNpemUs
IGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSBjb2xvclNwYWNlLCBX
ZWJDb3JlOjpQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxl
IGhhbmRsZSkKLSAgICB7Ci0gICAgICAgIEFTU0VSVCghbV9iYWNrZW5kKTsKLSAgICAgICAgbV9i
YWNrZW5kID0gQmFja2VuZFR5cGU6OmNyZWF0ZShsb2dpY2FsU2l6ZSwgYmFja2VuZFNpemUsIHJl
c29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQsIFdURk1vdmUoaGFuZGxlKSk7
Ci0gICAgfQotCi0gICAgdm9pZCBkaWRGbHVzaChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Rmx1c2hJ
ZGVudGlmaWVyIGZsdXNoSWRlbnRpZmllcikKLSAgICB7Ci0gICAgICAgIGF1dG8gbG9ja2VyID0g
aG9sZExvY2sobV9yZWNlaXZlZEZsdXNoSWRlbnRpZmllckxvY2spOwotICAgICAgICBtX3JlY2Vp
dmVkRmx1c2hJZGVudGlmaWVyID0gZmx1c2hJZGVudGlmaWVyOwotICAgICAgICBtX3JlY2VpdmVk
Rmx1c2hJZGVudGlmaWVyQ2hhbmdlZENvbmRpdGlvbi5ub3RpZnlBbGwoKTsKLSAgICB9Ci0KLSAg
ICBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7
IH0KLSAgICBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUoKSBjb25zdCB7IHJl
dHVybiBtX3JlbmRlcmluZ01vZGU7IH0KLSAgICBmbG9hdCByZXNvbHV0aW9uU2NhbGUoKSBjb25z
dCBmaW5hbCB7IHJldHVybiBtX3Jlc29sdXRpb25TY2FsZTsgfQotICAgIFdlYkNvcmU6OkNvbG9y
U3BhY2UgY29sb3JTcGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29sb3JTcGFjZTsgfQotICAgIFdl
YkNvcmU6OlBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0KCkgY29uc3QgeyByZXR1cm4gbV9waXhlbEZv
cm1hdDsgfQotCiAgICAgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGNyZWF0ZUltYWdlQnVmZmVy
QmFja2VuZEhhbmRsZSgpCiAgICAgewogICAgICAgICBlbnN1cmVCYWNrZW5kQ3JlYXRlZCgpOwpA
QCAtMTEzLDE0ICs5NCw5IEBAIHB1YmxpYzoKIAogcHJvdGVjdGVkOgogICAgIGZyaWVuZCBjbGFz
cyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOwotICAgIFJlbW90ZUltYWdlQnVmZmVyUHJveHkoY29u
c3QgV2ViQ29yZTo6RmxvYXRTaXplJiBzaXplLCBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlIHJlbmRl
cmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSBjb2xv
clNwYWNlLCBXZWJDb3JlOjpQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5JiByZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpCi0gICAgICAgIDogQmFz
ZURpc3BsYXlMaXN0SW1hZ2VCdWZmZXIoc2l6ZSwgdGhpcykKKyAgICBSZW1vdGVJbWFnZUJ1ZmZl
clByb3h5KHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFt
ZXRlcnM+JiYgcGFyYW1ldGVycywgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5JiByZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHkpCisgICAgICAgIDogQmFzZURpc3BsYXlMaXN0SW1hZ2VCdWZm
ZXIoV1RGTW92ZShwYXJhbWV0ZXJzKSwgdGhpcykKICAgICAgICAgLCBtX3JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eShtYWtlV2Vha1B0cihyZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpKQot
ICAgICAgICAsIG1fc2l6ZShzaXplKQotICAgICAgICAsIG1fcmVuZGVyaW5nTW9kZShyZW5kZXJp
bmdNb2RlKQotICAgICAgICAsIG1fcmVzb2x1dGlvblNjYWxlKHJlc29sdXRpb25TY2FsZSkKLSAg
ICAgICAgLCBtX2NvbG9yU3BhY2UoY29sb3JTcGFjZSkKLSAgICAgICAgLCBtX3BpeGVsRm9ybWF0
KHBpeGVsRm9ybWF0KQogICAgIHsKICAgICAgICAgQVNTRVJUKG1fcmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5KTsKICAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHktPnJlbW90
ZVJlc291cmNlQ2FjaGVQcm94eSgpLmNhY2hlSW1hZ2VCdWZmZXIoKnRoaXMpOwpAQCAtMTMxLDYg
KzEwNywxMyBAQCBwcm90ZWN0ZWQ6CiAKICAgICBib29sIGhhc1BlbmRpbmdGbHVzaCgpIGNvbnN0
IHsgcmV0dXJuIG1fc2VudEZsdXNoSWRlbnRpZmllciAhPSBtX3JlY2VpdmVkRmx1c2hJZGVudGlm
aWVyOyB9CiAKKyAgICB2b2lkIGRpZEZsdXNoKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpGbHVzaElk
ZW50aWZpZXIgZmx1c2hJZGVudGlmaWVyKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgYXV0byBs
b2NrZXIgPSBob2xkTG9jayhtX3JlY2VpdmVkRmx1c2hJZGVudGlmaWVyTG9jayk7CisgICAgICAg
IG1fcmVjZWl2ZWRGbHVzaElkZW50aWZpZXIgPSBmbHVzaElkZW50aWZpZXI7CisgICAgICAgIG1f
cmVjZWl2ZWRGbHVzaElkZW50aWZpZXJDaGFuZ2VkQ29uZGl0aW9uLm5vdGlmeUFsbCgpOworICAg
IH0KKwogICAgIHZvaWQgd2FpdEZvckRpZEZsdXNoV2l0aFRpbWVvdXQoKQogICAgIHsKICAgICAg
ICAgaWYgKCFtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKQEAgLTE2OSw4ICsxNTIsOCBA
QCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBwdXRJbWFnZURhdGEoV2ViQ29yZTo6QWxwaGFQcmVtdWx0
aXBsaWNhdGlvbiBpbnB1dEZvcm1hdCwgY29uc3QgV2ViQ29yZTo6SW1hZ2VEYXRhJiBpbWFnZURh
dGEsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHNyY1JlY3QsIGNvbnN0IFdlYkNvcmU6OkludFBv
aW50JiBkZXN0UG9pbnQgPSB7IH0sIFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb24gZGVz
dEZvcm1hdCA9IFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb246OlByZW11bHRpcGxpZWQp
IG92ZXJyaWRlCiAgICAgewogICAgICAgICAvLyBUaGUgbWF0aCBpbnNpZGUgSW1hZ2VEYXRhOjpj
cmVhdGUoKSBkb2Vzbid0IGFncmVlIHdpdGggdGhlIG1hdGggaW5zaWRlIEltYWdlQnVmZmVyQmFj
a2VuZDo6cHV0SW1hZ2VEYXRhKCkgYWJvdXQgaG93IG1fcmVzb2x1dGlvblNjYWxlIGludGVyYWN0
cyB3aXRoIHRoZSBkYXRhIGluIHRoZSBJbWFnZUJ1ZmZlci4KLSAgICAgICAgLy8gVGhpcyBtZWFu
cyB0aGF0IHB1dEltYWdlRGF0YSgpIGlzIG9ubHkgY2FsbGVkIHdoZW4gbV9yZXNvbHV0aW9uU2Nh
bGUgPT0gMS4KLSAgICAgICAgQVNTRVJUX0lNUExJRVMobV9iYWNrZW5kLCBtX2JhY2tlbmQtPnJl
c29sdXRpb25TY2FsZSgpID09IDEpOworICAgICAgICAvLyBUaGlzIG1lYW5zIHRoYXQgcHV0SW1h
Z2VEYXRhKCkgaXMgb25seSBjYWxsZWQgd2hlbiByZXNvbHV0aW9uU2NhbGUoKSA9PSAxLgorICAg
ICAgICBBU1NFUlQocmVzb2x1dGlvblNjYWxlKCkgPT0gMSk7CiAgICAgICAgIG1fZHJhd2luZ0Nv
bnRleHQucmVjb3JkZXIoKS5wdXRJbWFnZURhdGEoaW5wdXRGb3JtYXQsIGltYWdlRGF0YSwgc3Jj
UmVjdCwgZGVzdFBvaW50LCBkZXN0Rm9ybWF0KTsKICAgICB9CiAKQEAgLTE4NSwxMSArMTY4LDEx
IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGZsdXNoRHJhd2luZ0NvbnRleHQoKSBvdmVycmlkZQog
ICAgIHsKICAgICAgICAgVHJhY2VTY29wZSB0cmFjaW5nU2NvcGUoRmx1c2hSZW1vdGVJbWFnZUJ1
ZmZlclN0YXJ0LCBGbHVzaFJlbW90ZUltYWdlQnVmZmVyRW5kKTsKLSAgICAgICAgZmx1c2hEcmF3
aW5nQ29udGV4dEFuZENvbW1pdCgpOworICAgICAgICBzdWJtaXREcmF3aW5nQ29udGV4dCgpOwog
ICAgICAgICB3YWl0Rm9yRGlkRmx1c2hXaXRoVGltZW91dCgpOwogICAgIH0KIAotICAgIHZvaWQg
Zmx1c2hEcmF3aW5nQ29udGV4dEFuZENvbW1pdCgpIG92ZXJyaWRlCisgICAgdm9pZCBzdWJtaXRE
cmF3aW5nQ29udGV4dCgpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBpZiAoIW1fcmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5KQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjAwLDEyICsxODMs
MTIgQEAgcHJvdGVjdGVkOgogCiAgICAgICAgIG1fc2VudEZsdXNoSWRlbnRpZmllciA9IFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpGbHVzaElkZW50aWZpZXI6OmdlbmVyYXRlKCk7CiAgICAgICAgIGRp
c3BsYXlMaXN0LnRlbXBsYXRlIGFwcGVuZDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Rmx1c2hDb250
ZXh0PihtX3NlbnRGbHVzaElkZW50aWZpZXIpOwotICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eS0+c3VibWl0RGlzcGxheUxpc3QoZGlzcGxheUxpc3QsIG1fcmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyKTsKLSAgICAgICAgbV9pdGVtQ291bnRJbkN1cnJlbnREaXNwbGF5TGlz
dCA9IDA7CisgICAgICAgIHN1Ym1pdERpc3BsYXlMaXN0KGRpc3BsYXlMaXN0KTsKICAgICAgICAg
ZGlzcGxheUxpc3QuY2xlYXIoKTsKKyAgICAgICAgbV9pdGVtQ291bnRJbkN1cnJlbnREaXNwbGF5
TGlzdCA9IDA7CiAgICAgfQogCi0gICAgdm9pZCBzdWJtaXREaXNwbGF5TGlzdChjb25zdCBXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0KQorICAgIHZvaWQgc3Vi
bWl0RGlzcGxheUxpc3QoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiBk
aXNwbGF5TGlzdCkgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIGlmICghbV9yZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHkgfHwgZGlzcGxheUxpc3QuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0
dXJuOwpAQCAtMzUxLDExICszMzQsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OkZsdXNoSWRlbnRpZmllciBtX3JlY2VpdmVkRmx1c2hJZGVudGlmaWVyOwogICAgIFdl
YWtQdHI8UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5PiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eTsKICAgICBzaXplX3QgbV9pdGVtQ291bnRJbkN1cnJlbnREaXNwbGF5TGlzdCB7IDAg
fTsKLSAgICBXZWJDb3JlOjpGbG9hdFNpemUgbV9zaXplOwotICAgIFdlYkNvcmU6OlJlbmRlcmlu
Z01vZGUgbV9yZW5kZXJpbmdNb2RlOwotICAgIGZsb2F0IG1fcmVzb2x1dGlvblNjYWxlOwotICAg
IFdlYkNvcmU6OkNvbG9yU3BhY2UgbV9jb2xvclNwYWNlOwotICAgIFdlYkNvcmU6OlBpeGVsRm9y
bWF0IG1fcGl4ZWxGb3JtYXQ7CiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBCYWNrZW5kVHlwZT4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcAppbmRleCBlNTJjYTQwNzM1
ZTk3OWUzODdkODNkMTRkMjdjNDk2NjE3OGVjZmM3Li42NzZjM2M1NWQ4MjEzN2E5ZjQ4Y2UzNDY4
ZTdhMWJlMDg1MzczNWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHku
Y3BwCkBAIC03MCwyNCArNzAsMTUgQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6
OmNvbm5lY3RUb0dQVVByb2Nlc3MoKQogICAgIHNlbmQoTWVzc2FnZXM6OkdQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OkNyZWF0ZVJlbmRlcmluZ0JhY2tlbmQobV9yZW5kZXJpbmdCYWNrZW5kSWRl
bnRpZmllciksIDApOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RhdGljIHZvaWQgcmVj
cmVhdGVJbWFnZUJ1ZmZlcihSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkmIHByb3h5LCBUJiBp
bWFnZUJ1ZmZlciwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlc291cmNlSWRlbnRpZmll
ciwgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIp
Ci17Ci0gICAgaW1hZ2VCdWZmZXIuY2xlYXJCYWNrZW5kKCk7Ci0gICAgcHJveHkuc2VuZChNZXNz
YWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Q3JlYXRlSW1hZ2VCdWZmZXIoaW1hZ2VCdWZm
ZXIuc2l6ZSgpLCBpbWFnZUJ1ZmZlci5yZW5kZXJpbmdNb2RlKCksIGltYWdlQnVmZmVyLnJlc29s
dXRpb25TY2FsZSgpLCBpbWFnZUJ1ZmZlci5jb2xvclNwYWNlKCksIGltYWdlQnVmZmVyLnBpeGVs
Rm9ybWF0KCksIHJlc291cmNlSWRlbnRpZmllciksIHJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVy
KTsKLX0KLQogdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OnJlZXN0YWJsaXNoR1BV
UHJvY2Vzc0Nvbm5lY3Rpb24oKQogewogICAgIGNvbm5lY3RUb0dQVVByb2Nlc3MoKTsKIAotICAg
IGZvciAoYXV0byYgcGFpciA6IG1fcmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmltYWdlQnVmZmVy
cygpKSB7Ci0gICAgICAgIGlmIChhdXRvJiBiYXNlSW1hZ2VCdWZmZXIgPSBwYWlyLnZhbHVlKSB7
Ci0gICAgICAgICAgICBpZiAoaXM8QWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlclByb3h5Pigq
YmFzZUltYWdlQnVmZmVyKSkKLSAgICAgICAgICAgICAgICByZWNyZWF0ZUltYWdlQnVmZmVyKCp0
aGlzLCBkb3duY2FzdDxBY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyUHJveHk+KCpiYXNlSW1h
Z2VCdWZmZXIpLCBwYWlyLmtleSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7Ci0gICAg
ICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcmVjcmVhdGVJbWFnZUJ1ZmZlcigqdGhpcywg
ZG93bmNhc3Q8VW5hY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyUHJveHk+KCpiYXNlSW1hZ2VC
dWZmZXIpLCBwYWlyLmtleSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7Ci0gICAgICAg
IH0KKyAgICBmb3IgKGF1dG8mIGltYWdlQnVmZmVyIDogbV9yZW1vdGVSZXNvdXJjZUNhY2hlUHJv
eHkuaW1hZ2VCdWZmZXJzKCkudmFsdWVzKCkpIHsKKyAgICAgICAgaWYgKCFpbWFnZUJ1ZmZlcikK
KyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kOjpDcmVhdGVJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlci0+bG9naWNhbFNpemUo
KSwgaW1hZ2VCdWZmZXItPnJlbmRlcmluZ01vZGUoKSwgaW1hZ2VCdWZmZXItPnJlc29sdXRpb25T
Y2FsZSgpLCBpbWFnZUJ1ZmZlci0+Y29sb3JTcGFjZSgpLCBpbWFnZUJ1ZmZlci0+cGl4ZWxGb3Jt
YXQoKSwgaW1hZ2VCdWZmZXItPnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpKSwgbV9yZW5k
ZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7CisgICAgICAgIGltYWdlQnVmZmVyLT5jbGVhckJhY2tl
bmQoKTsKICAgICB9CiB9CiAKQEAgLTEyOSwxMCArMTIwLDEwIEBAIFJlZlB0cjxJbWFnZUJ1ZmZl
cj4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBG
bG9hdFNpCiAgICAgUmVmUHRyPEltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlcjsKIAogICAgIGlmIChy
ZW5kZXJpbmdNb2RlID09IFJlbmRlcmluZ01vZGU6OkFjY2VsZXJhdGVkKQotICAgICAgICBpbWFn
ZUJ1ZmZlciA9IEFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6Y3JlYXRlKHNpemUs
IHJlbmRlcmluZ01vZGUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQs
ICp0aGlzKTsKKyAgICAgICAgaW1hZ2VCdWZmZXIgPSBBY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVm
ZmVyUHJveHk6OmNyZWF0ZShzaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVs
Rm9ybWF0LCAqdGhpcyk7CiAKICAgICBpZiAoIWltYWdlQnVmZmVyKQotICAgICAgICBpbWFnZUJ1
ZmZlciA9IFVuYWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlclByb3h5OjpjcmVhdGUoc2l6ZSwg
cmVuZGVyaW5nTW9kZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCwg
KnRoaXMpOworICAgICAgICBpbWFnZUJ1ZmZlciA9IFVuYWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1
ZmZlclByb3h5OjpjcmVhdGUoc2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhl
bEZvcm1hdCwgKnRoaXMpOwogCiAgICAgaWYgKGltYWdlQnVmZmVyKSB7CiAgICAgICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OkNyZWF0ZUltYWdlQnVmZmVyKHNpemUs
IHJlbmRlcmluZ01vZGUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQs
IGltYWdlQnVmZmVyLT5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSksIG1fcmVuZGVyaW5n
QmFja2VuZElkZW50aWZpZXIpOwpAQCAtMTgzLDI4ICsxNzQsMjIgQEAgdm9pZCBSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHk6OnJlbGVhc2VSZW1vdGVSZXNvdXJjZShSZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWYKICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpSZWxl
YXNlUmVtb3RlUmVzb3VyY2UocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSwgbV9yZW5kZXJp
bmdCYWNrZW5kSWRlbnRpZmllcik7CiB9CiAKLXZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5OjppbWFnZUJ1ZmZlckJhY2tlbmRXYXNDcmVhdGVkKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNh
bFNpemUsIGNvbnN0IEludFNpemUmIGJhY2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUs
IENvbG9yU3BhY2UgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIEltYWdlQnVm
ZmVyQmFja2VuZEhhbmRsZSBoYW5kbGUsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eTo6aW1hZ2VCdWZmZXJCYWNrZW5kV2FzQ3JlYXRlZChjb25zdCBJbnRTaXplJiBiYWNrZW5kU2l6
ZSwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGhhbmRsZSwgUmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKIHsKICAgICBhdXRvIGltYWdlQnVm
ZmVyID0gbV9yZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY2FjaGVkSW1hZ2VCdWZmZXIocmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAgICAgICBy
ZXR1cm47Ci0gICAgCi0gICAgaWYgKGltYWdlQnVmZmVyLT5pc0FjY2VsZXJhdGVkKCkpCi0gICAg
ICAgIGRvd25jYXN0PEFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXJQcm94eT4oKmltYWdlQnVm
ZmVyKS5jcmVhdGVCYWNrZW5kKGxvZ2ljYWxTaXplLCBiYWNrZW5kU2l6ZSwgcmVzb2x1dGlvblNj
YWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCwgV1RGTW92ZShoYW5kbGUpKTsKKworICAgIGlm
IChpbWFnZUJ1ZmZlci0+cmVuZGVyaW5nTW9kZSgpID09IFJlbmRlcmluZ01vZGU6OkFjY2VsZXJh
dGVkKQorICAgICAgICBpbWFnZUJ1ZmZlci0+c2V0QmFja2VuZChBY2NlbGVyYXRlZEltYWdlQnVm
ZmVyU2hhcmVhYmxlQmFja2VuZDo6Y3JlYXRlKGltYWdlQnVmZmVyLT5wYXJhbWV0ZXJzKCksIGJh
Y2tlbmRTaXplLCBXVEZNb3ZlKGhhbmRsZSkpKTsKICAgICBlbHNlCi0gICAgICAgIGRvd25jYXN0
PFVuYWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlclByb3h5PigqaW1hZ2VCdWZmZXIpLmNyZWF0
ZUJhY2tlbmQobG9naWNhbFNpemUsIGJhY2tlbmRTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9y
U3BhY2UsIHBpeGVsRm9ybWF0LCBXVEZNb3ZlKGhhbmRsZSkpOworICAgICAgICBpbWFnZUJ1ZmZl
ci0+c2V0QmFja2VuZChVbmFjY2VsZXJhdGVkSW1hZ2VCdWZmZXJTaGFyZWFibGVCYWNrZW5kOjpj
cmVhdGUoaW1hZ2VCdWZmZXItPnBhcmFtZXRlcnMoKSwgYmFja2VuZFNpemUsIFdURk1vdmUoaGFu
ZGxlKSkpOwogfQogCiB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6ZGlkRmx1c2go
RGlzcGxheUxpc3Q6OkZsdXNoSWRlbnRpZmllciBmbHVzaElkZW50aWZpZXIsIFJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCiB7Ci0gICAgYXV0
byBpbWFnZUJ1ZmZlciA9IG1fcmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNhY2hlZEltYWdlQnVm
ZmVyKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7Ci0gICAgaWYgKCFpbWFnZUJ1ZmZlcikK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKGltYWdlQnVmZmVyLT5pc0FjY2VsZXJhdGVkKCkp
Ci0gICAgICAgIGRvd25jYXN0PEFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXJQcm94eT4oKmlt
YWdlQnVmZmVyKS5kaWRGbHVzaChmbHVzaElkZW50aWZpZXIpOwotICAgIGVsc2UKLSAgICAgICAg
ZG93bmNhc3Q8VW5hY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyUHJveHk+KCppbWFnZUJ1ZmZl
cikuZGlkRmx1c2goZmx1c2hJZGVudGlmaWVyKTsKKyAgICBpZiAoYXV0byBpbWFnZUJ1ZmZlciA9
IG1fcmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNhY2hlZEltYWdlQnVmZmVyKHJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcikpCisgICAgICAgIGltYWdlQnVmZmVyLT5kaWRGbHVzaChmbHVzaElk
ZW50aWZpZXIpOwogfQogCiB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6dXBkYXRl
UmV1c2FibGVIYW5kbGVzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oCmlu
ZGV4IDk1ZjhkMmI0MTJmYjkxZGY3N2M2OGYxMzZiMDA3ODZmMDI0ZDdlMjYuLjk4Zjg0YWFkMTFi
YWViN2IwNzVkZDIyOTE2OTUwYmYwZTI0YWY4NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHkuaApAQCAtOTUsNyArOTUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRl
UmV1c2FibGVIYW5kbGVzKCk7CiAKICAgICAvLyBNZXNzYWdlcyB0byBiZSByZWNlaXZlZC4KLSAg
ICB2b2lkIGltYWdlQnVmZmVyQmFja2VuZFdhc0NyZWF0ZWQoY29uc3QgV2ViQ29yZTo6RmxvYXRT
aXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgYmFja2VuZFNpemUsIGZs
b2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSwgV2ViQ29yZTo6UGl4ZWxG
b3JtYXQsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyKTsKKyAgICB2b2lkIGltYWdlQnVmZmVyQmFja2VuZFdhc0NyZWF0ZWQoY29u
c3QgV2ViQ29yZTo6SW50U2l6ZSYgYmFja2VuZFNpemUsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRs
ZSwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB2b2lkIGRpZEZs
dXNoKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpGbHVzaElkZW50aWZpZXIsIFdlYkNvcmU6OlJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAKICAgICBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkg
bV9yZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkgeyAqdGhpcyB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5tZXNzYWdlcy5pbgppbmRleCA5MjBkZTNmNzc3NTQw
MTY0MDUxZmY1MWNkMjFiNTA1NTk4NTRmODQ0Li41MjIyZjRkNDA1M2NjMjg3ZWQzYjIyMDQ1NTYw
M2NmZTRlZGQ0YmM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eS5tZXNzYWdlcy5pbgpAQCAtMjMsNyArMjMsNyBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VT
UykKIAogbWVzc2FnZXMgLT4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5IE5vdFJlZkNvdW50
ZWQgewotICAgIEltYWdlQnVmZmVyQmFja2VuZFdhc0NyZWF0ZWQoV2ViQ29yZTo6RmxvYXRTaXpl
IGxvZ2ljYWxTaXplLCBXZWJDb3JlOjpJbnRTaXplIGJhY2tlbmRTaXplLCBmbG9hdCByZXNvbHV0
aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgZW51bTp1aW50OF90IFdl
YkNvcmU6OlBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBXZWJLaXQ6OkltYWdlQnVmZmVyQmFja2Vu
ZEhhbmRsZSBoYW5kbGUsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCisgICAgSW1hZ2VCdWZmZXJCYWNrZW5kV2FzQ3JlYXRl
ZChXZWJDb3JlOjpJbnRTaXplIGJhY2tlbmRTaXplLCBXZWJLaXQ6OkltYWdlQnVmZmVyQmFja2Vu
ZEhhbmRsZSBoYW5kbGUsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCiAgICAgRGlkRmx1c2goV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OkZsdXNoSWRlbnRpZmllciBmbHVzaElkZW50aWZpZXIsIFdlYkNvcmU6OlJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VC
dWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNr
ZW5kLmNwcAppbmRleCA1MTYyN2M1ZWRkODkxYjk0ZjM2MzkxYzBhYjRjMjgwOGM2ODBiZWZmLi5l
ZWMyODhmYmRhZDJjMTBiNGZlMzJmYWU5N2U3ZWYzMWRlNTgyMGRkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVh
YmxlSU9TdXJmYWNlQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQuY3Bw
CkBAIC0zNywxMyArMzcsMTMgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIFdURl9NQUtF
X0lTT19BTExPQ0FURURfSU1QTChJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQp
OwogCi1zdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5k
PiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZShjb25zdCBGbG9h
dFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNl
LCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgY29uc3QgSG9zdFdpbmRvdyopCitzdGQ6OnVuaXF1
ZV9wdHI8SW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kPiBJbWFnZUJ1ZmZlclNo
YXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0
ZXJzLCBjb25zdCBIb3N0V2luZG93KikKIHsKLSAgICBJbnRTaXplIGJhY2tlbmRTaXplID0gY2Fs
Y3VsYXRlQmFja2VuZFNpemUoc2l6ZSwgcmVzb2x1dGlvblNjYWxlKTsKKyAgICBJbnRTaXplIGJh
Y2tlbmRTaXplID0gY2FsY3VsYXRlQmFja2VuZFNpemUocGFyYW1ldGVycy5sb2dpY2FsU2l6ZSwg
cGFyYW1ldGVycy5yZXNvbHV0aW9uU2NhbGUpOwogICAgIGlmIChiYWNrZW5kU2l6ZS5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgYXV0byBzdXJmYWNlID0gSU9TdXJm
YWNlOjpjcmVhdGUoYmFja2VuZFNpemUsIGJhY2tlbmRTaXplLCBjYWNoZWRDR0NvbG9yU3BhY2Uo
Y29sb3JTcGFjZSksIElPU3VyZmFjZTo6Zm9ybWF0Rm9yUGl4ZWxGb3JtYXQocGl4ZWxGb3JtYXQp
KTsKKyAgICBhdXRvIHN1cmZhY2UgPSBJT1N1cmZhY2U6OmNyZWF0ZShiYWNrZW5kU2l6ZSwgYmFj
a2VuZFNpemUsIGNhY2hlZENHQ29sb3JTcGFjZShwYXJhbWV0ZXJzLmNvbG9yU3BhY2UpLCBJT1N1
cmZhY2U6OmZvcm1hdEZvclBpeGVsRm9ybWF0KHBhcmFtZXRlcnMucGl4ZWxGb3JtYXQpKTsKICAg
ICBpZiAoIXN1cmZhY2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC01MywyMSArNTMs
MjEgQEAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2Vu
ZD4gSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmYKIAogICAgIENHQ29udGV4dENsZWFyUmVjdChj
Z0NvbnRleHQuZ2V0KCksIEZsb2F0UmVjdChGbG9hdFBvaW50Ojp6ZXJvKCksIGJhY2tlbmRTaXpl
KSk7CiAKLSAgICByZXR1cm4gbWFrZVVuaXF1ZTxJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFj
ZUJhY2tlbmQ+KHNpemUsIGJhY2tlbmRTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2Us
IHBpeGVsRm9ybWF0LCBXVEZNb3ZlKHN1cmZhY2UpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxJ
bWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQ+KHBhcmFtZXRlcnMsIGJhY2tlbmRT
aXplLCBXVEZNb3ZlKHN1cmZhY2UpKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVy
U2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZD4gSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VC
YWNrZW5kOjpjcmVhdGUoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50U2l6
ZSYgaW50ZXJuYWxTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JT
cGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBo
YW5kbGUpCitzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNr
ZW5kPiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZShjb25zdCBQ
YXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBjb25zdCBJbnRTaXplJiBiYWNrZW5kU2l6ZSwgSW1hZ2VC
dWZmZXJCYWNrZW5kSGFuZGxlIGhhbmRsZSkKIHsKICAgICBpZiAoIVdURjo6aG9sZHNfYWx0ZXJu
YXRpdmU8TWFjaFNlbmRSaWdodD4oaGFuZGxlKSkgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgYXV0byBzdXJmYWNl
ID0gSU9TdXJmYWNlOjpjcmVhdGVGcm9tU2VuZFJpZ2h0KFdURk1vdmUoV1RGOjpnZXQ8TWFjaFNl
bmRSaWdodD4oaGFuZGxlKSksIGNhY2hlZENHQ29sb3JTcGFjZShjb2xvclNwYWNlKSk7CisgICAg
YXV0byBzdXJmYWNlID0gSU9TdXJmYWNlOjpjcmVhdGVGcm9tU2VuZFJpZ2h0KFdURk1vdmUoV1RG
OjpnZXQ8TWFjaFNlbmRSaWdodD4oaGFuZGxlKSksIGNhY2hlZENHQ29sb3JTcGFjZShwYXJhbWV0
ZXJzLmNvbG9yU3BhY2UpKTsKICAgICBpZiAoIXN1cmZhY2UpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCi0gICAgcmV0dXJuIG1ha2VVbmlxdWU8SW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZh
Y2VCYWNrZW5kPihsb2dpY2FsU2l6ZSwgaW50ZXJuYWxTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNv
bG9yU3BhY2UsIHBpeGVsRm9ybWF0LCBXVEZNb3ZlKHN1cmZhY2UpKTsKKyAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQ+KHBhcmFtZXRlcnMs
IGJhY2tlbmRTaXplLCBXVEZNb3ZlKHN1cmZhY2UpKTsKIH0KIAogSW1hZ2VCdWZmZXJCYWNrZW5k
SGFuZGxlIEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlSW1hZ2VC
dWZmZXJCYWNrZW5kSGFuZGxlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VC
YWNrZW5kLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0lt
YWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZC5oCmluZGV4IGVkNTE2MjRlYjBhYTEw
NTBlMTNiZmExN2VhMzRmMGZlM2MxZmZmNmQuLjFlYTQ2YWUyNzRlYWZiNzY0MmYwNjA4OGQ1YTJh
Zjg1YWQ2ZDAyNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kLmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNo
YXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQuaApAQCAtMzksOCArMzksOCBAQCBjbGFzcyBJbWFnZUJ1
ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQgOiBwdWJsaWMgV2ViQ29yZTo6SW1hZ2VCdWZm
ZXJJT1N1cmZhYwogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoSW1hZ2VCdWZmZXJTaGFyZWFi
bGVJT1N1cmZhY2VCYWNrZW5kKTsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbWFnZUJ1ZmZl
clNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQpOwogcHVibGljOgotICAgIHN0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8SW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kPiBjcmVhdGUoY29u
c3QgV2ViQ29yZTo6RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgZmxvYXQgcmVzb2x1dGlv
blNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlLCBXZWJDb3JlOjpQaXhlbEZvcm1hdCwgY29uc3Qg
V2ViQ29yZTo6SG9zdFdpbmRvdyopOwotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VC
dWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kPiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6Rmxv
YXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgaW50ZXJuYWxTaXpl
LCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UsIFdlYkNvcmU6OlBp
eGVsRm9ybWF0LCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUpOworICAgIHN0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8SW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kPiBjcmVhdGUoY29u
c3QgUGFyYW1ldGVycyYsIGNvbnN0IFdlYkNvcmU6Okhvc3RXaW5kb3cqKTsKKyAgICBzdGF0aWMg
c3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZD4gY3Jl
YXRlKGNvbnN0IFBhcmFtZXRlcnMmLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBiYWNrZW5kU2l6
ZSwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKTsKIAogICAgIHVzaW5nIFdlYkNvcmU6OkltYWdl
QnVmZmVySU9TdXJmYWNlQmFja2VuZDo6SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOwogCg==
</data>
<flag name="commit-queue"
          id="431861"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414879</attachid>
            <date>2020-11-25 21:49:34 -0800</date>
            <delta_ts>2020-11-25 22:00:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219007-20201125214933.patch</filename>
            <type>text/plain</type>
            <size>98521</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwMTY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzIzYWI2YjRlNmM0NDFj
MDYzZWM1Mzg0YzZmOTA5NDdiZDFhNDY5ZC4uMDQwNjNjOGUxYTcxYjEzODVkMGJlYTkyNWFlMDNh
OGM2OTIwZDA4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg2IEBACisyMDIwLTExLTI1ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10g
Q2xlYW4gdXAgcmVjcmVhdGluZyB0aGUgSW1hZ2VCdWZmZXJCYWNrZW5kIGJlY2F1c2Ugb2YgR1BV
IGNyYXNoaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMTkwMDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAtLSBBZGQgdGhlIHN0cnVjdHVyZSBJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnMuIE1h
a2UgQ29uY3JldGVJbWFnZUJ1ZmZlcgorICAgICAgICAgICBvd24gYW4gaW5zdGFuY2Ugb2YgdGhp
cyBzdHJ1Y3R1cmUuIEFuZCBtYWtlIEltYWdlQnVmZmVyQmFja2VuZCBvd24gYQorICAgICAgICAg
ICBjb25zdCByZWZlcmVuY2UgdG8gdGhpcyBzdHJ1Y3R1cmUuCisgICAgICAgIC0tIEV4cG9zZSB0
aGUgSW1hZ2VCdWZmZXJCYWNrZW5kIGNyZWF0aW9uIHBhcmFtZXRlcnMgdGhyb3VnaCBJbWFnZUJ1
ZmZlci4KKyAgICAgICAgLS0gRXhwb3NlIG1ldGhvZHMgdG8gc2V0IGFuZCBjbGVhciB0aGUgYmFj
a2VuZCBvZiBhbiBJbWFnZUJ1ZmZlci4KKyAgICAgICAgLS0gRXhwb3NlIHN1Ym1pdERyYXdpbmdD
b250ZXh0KCkgYW5kIGRpZEZsdXNoKCkgdGhyb3VnaCBJbWFnZUJ1ZmZlciBzbyBubworICAgICAg
ICAgICBjYXN0aW5nIGlzIG5lZWRlZCB3aGVuIGNhbGxpbmcgdGhlc2UgZnVuY3Rpb25zIHRocm91
Z2ggUmVtb3RlSW1hZ2VCdWZlclByb3h5LgorICAgICAgICAtLSBSZXBsYWNlIGFsbCB0aGUgaW5z
dGFuY2VzIG9mICdpc0FjY2VsZXJhdGVkJyBieSAncmVuZGVyaW5nTW9kZScgc28gbm8KKyAgICAg
ICAgICAgbmVlZCB0byBjb252ZXJ0IG9uZSB0eXBlIHRvIHRoZSBvdGhlci4KKworICAgICAgICAq
IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBodG1sL2NhbnZh
cy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNh
bnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OnByZXBhcmVGb3JEaXNwbGF5KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmg6CisgICAgICAgIChXZWJD
b3JlOjpDb25jcmV0ZUltYWdlQnVmZmVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q29u
Y3JldGVJbWFnZUJ1ZmZlcjo6Q29uY3JldGVJbWFnZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVy
OjpzdWJtaXREcmF3aW5nQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6
c3VibWl0RGlzcGxheUxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmRpZEZs
dXNoKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpmbHVzaERyYXdpbmdDb250ZXh0
QW5kQ29tbWl0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1
ZmZlckJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjpJ
bWFnZUJ1ZmZlckJhY2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5k
Ojp0b0JHUkFEYXRhIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1
ZmZlckJhY2tlbmQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQmFja2VuZDo6bWVt
b3J5Q29zdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OmJ5
dGVzUGVyUm93IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQmFja2VuZDo6
dG9CYWNrZW5kQ29vcmRpbmF0ZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZm
ZXJCYWNrZW5kOjpsb2dpY2FsU2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1
ZmZlckJhY2tlbmQ6OnJlc29sdXRpb25TY2FsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZUJ1ZmZlckJhY2tlbmQ6OmNvbG9yU3BhY2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VCdWZmZXJCYWNrZW5kOjpwaXhlbEZvcm1hdCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OmxvZ2ljYWxSZWN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlQnVmZmVyQmFja2VuZDo6YmFja2VuZFJlY3QgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjpiYWNrZW5kU2l6ZSBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1JbWFnZUJ1ZmZlci5oOgorICAgICAg
ICAoaXNUeXBlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZl
ckNhaXJvQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNhaXJvQmFj
a2VuZDo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0lt
YWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kOjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQ6OkltYWdlQnVmZmVy
Q2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVy
Q2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kOjpwbGF0Zm9ybVRyYW5zZm9ybUNvbG9yU3BhY2UpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1
cmZhY2VCYWNrZW5kLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VC
dWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVm
ZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZDo6SW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kKToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZDo6YmFja2Vu
ZFNpemUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVm
ZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlQnVmZmVyQ0dCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVy
Q0dCYWNrZW5kOjpzZXR1cENvbnRleHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VC
dWZmZXJDR0JhY2tlbmQ6OmNvcHlJbWFnZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZUJ1ZmZlckNHQmFja2VuZDo6c2lua0ludG9JbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZUJ1ZmZlckNHQmFja2VuZDo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNH
QmFja2VuZDo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDR0Jh
Y2tlbmQ6OmJhc2VUcmFuc2Zvcm0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZm
ZXJDR0JhY2tlbmQ6OnRvQ0ZEYXRhIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y29weU5hdGl2ZUlt
YWdlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNH
Qml0bWFwQmFja2VuZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVm
ZmVySU9TdXJmYWNlQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcklP
U3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcklP
U3VyZmFjZUJhY2tlbmQ6OkltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmJhY2tlbmRTaXplIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6ZHJhd0NvbnN1
bWluZyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZh
Y2VCYWNrZW5kLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0Rmx1c2hJZGVudGlmaWVyLmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEltYWdlQnVmZmVyLmg6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6SW1hZ2VCdWZmZXI6OkltYWdlQnVmZmVyKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OmNvcHlJbWFnZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6ZHJh
dyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6ZHJhd1Bh
dHRlcm4pOgorCiAyMDIwLTExLTIyICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4K
IAogICAgICAgICBbTEZDXVtJbnRlZ3JhdGlvbl0gQ29udmVydCBzb21lIHJlbWFpbmluZyBJbmxp
bmVCb3ggYWNjZXNzIHRvIHVzZSBpbmxpbmUgaXRlcmF0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZTk3NzY5YmVi
NDBhZmM1ZjhkY2M0N2NiMTQxZjhjNTgwNTAzMzE0Yy4uNzJiYjdkODk5MDgzYjM5ZjZkNDVjM2M2
YzMwMjJjYWM4ZjFjMTBmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MiBAQAorMjAyMC0xMS0yNSAg
U2FpZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nl
c3NdIENsZWFuIHVwIHJlY3JlYXRpbmcgdGhlIEltYWdlQnVmZmVyQmFja2VuZCBiZWNhdXNlIG9m
IEdQVSBjcmFzaGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjE5MDA3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVGhpcyBpcyBubyBuZWVkIHRvIHN0b3JlIHRoZSBiYWNrZW5kIHBhcmFtZXRlcnMgaW4g
UmVtb3RlSW1hZ2VCdWZmZXJQcm94eS4KKyAgICAgICAgVGhlc2UgcGFyYW1ldGVycyBjYW4gYmUg
YWNjZXNzZWQgZnJvbSB0aGUgY3VycmVudCBJbWFnZUJ1ZmZlckJhY2tlbmQgdmlhCisgICAgICAg
IHRoZSBJbWFnZUJ1ZmZlciBiZWZvcmUgdGhlIGJhY2tlbmQgaXMgY2xlYXJlZC4KKworICAgICAg
ICBSZW1vdmUgdGhlIHRyYWl0cyBkZWZpbml0aW9uIGZvciBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5
IHR5cGVzIGJlY2F1c2UKKyAgICAgICAgdGhleSBhcmUgd3JvbmcuIEFsbCBJbWFnZUJ1ZmZlcnMg
aGF2ZSB2YWxpZCByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKQorICAgICAgICByZWdhcmRs
ZXNzIHdoZXRoZXIgdGhleSBhcmUgcmVtb3RlIG9yIG5vdC4gSW1hZ2VCdWZmZXI6OnNldEJhY2tl
bmQgYW5kCisgICAgICAgIEltYWdlQnVmZmVyOjpjb21taXRGbHVzaERpc3BsYXlMaXN0KCkgYXJl
IG5vdyBpbXBsZW1lbnRlZCBpbiBXZWJDb3JlLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1
ZmZlcjo6UmVtb3RlSW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1
ZmZlcjo6c3VibWl0RGlzcGxheUxpc3QpOiBEZWxldGVkLgorICAgICAgICAqIEdQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmRpZENyZWF0ZUltYWdlQnVmZmVyQmFja2VuZCk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmFwcGx5RGlzcGxheUxpc3RzRnJv
bUhhbmRsZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmltYWdl
QnVmZmVyQmFja2VuZFdhc0NyZWF0ZWQpOiBEZWxldGVkLgorICAgICAgICAqIEdQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oOgorICAgICAgICAqIFNoYXJlZC9SZW1v
dGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW06CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpkaXNwbGF5KToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJLaXQ6OkltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6SW1h
Z2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kKToKKyAgICAgICAgKFdlYktpdDo6SW1hZ2VC
dWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpiYWNrZW5kU2l6ZSBjb25zdCk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNr
ZW5kLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUGxhdGZvcm1SZW1vdGVJ
bWFnZUJ1ZmZlclByb3h5Lmg6CisgICAgICAgIChpc1R5cGUpOiBEZWxldGVkLgorICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaDoKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6UmVtb3RlSW1hZ2VCdWZmZXJQcm94eSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyUHJveHk6OmNsZWFyQmFja2VuZCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyUHJveHk6OmNyZWF0ZUJh
Y2tlbmQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlclByb3h5
OjpkaWRGbHVzaCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVy
UHJveHk6OnNpemUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFn
ZUJ1ZmZlclByb3h5OjpyZW5kZXJpbmdNb2RlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6Y29sb3JTcGFjZSBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyUHJveHk6OnBpeGVsRm9ybWF0IGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6
c3VibWl0RGlzcGxheUxpc3QpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6cmVlc3RhYmxpc2hHUFVQcm9jZXNzQ29ubmVj
dGlvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6d2Fp
dEZvckRpZENyZWF0ZUltYWdlQnVmZmVyQmFja2VuZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Y3JlYXRlSW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmRpZENyZWF0ZUltYWdlQnVmZmVyQmFj
a2VuZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6ZGlk
Rmx1c2gpOgorICAgICAgICAoV2ViS2l0OjpyZWNyZWF0ZUltYWdlQnVmZmVyKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Ojp3YWl0Rm9ySW1h
Z2VCdWZmZXJCYWNrZW5kV2FzQ3JlYXRlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6aW1hZ2VCdWZmZXJCYWNrZW5kV2FzQ3JlYXRlZCk6
IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2Vu
ZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFj
a2VuZDo6Y3JlYXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9J
bWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQuaDoKKwogMjAyMC0xMS0yMSAgU2lo
dWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KIAogICAgICAgICBJbXBsZW1lbnQgYXVkaW8g
Y2FwdHVyZSBmb3IgU3BlZWNoUmVjb2duaXRpb24gb24gbWFjT1MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5MWQ3NGM3NDUyMjU5
NzkwNjc5MWFkMWU4YTIxMjgzZDU0YzYxMTY4Li5kZDVhYTFjMTUwNmRlMTk3OTMyNjU2NzNiNzE4
N2IyYWU0ZWQ0NDM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC0yMTg3LDYgKzIxODcsNyBAQAogCQk3MjdBN0YzQTI0MDc4Qjg0
MDA0RDI5MzEgLyogSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MkJBQzNBQjIzRTFFNTQ0MDA4RDc0MUMg
LyogSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzI5OUJDNjcyM0Q2QTUzMjAwQ0M2ODgzIC8qIEFs
cGhhUHJlbXVsdGlwbGljYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDcyOTlCQzY0MjNENjg2QTYwMENDNjg4MyAvKiBBbHBoYVByZW11bHRpcGxp
Y2F0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNzI5OUJDNjgyM0Q2QTUzRTAwQ0M2ODgzIC8qIFJlbmRlcmluZ01vZGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyOTlCQzY2MjNENjg2QzYwMEND
Njg4MyAvKiBSZW5kZXJpbmdNb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJNzI5QzQ1RTgyNTZFMDkxOTAwMDQwN0NGIC8qIERpc3BsYXlMaXN0
Rmx1c2hJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3MjlDNDVFNjI1NkUwNUY5MDAwNDA3Q0YgLyogRGlzcGxheUxpc3RGbHVzaElkZW50
aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk3MjlEMDUzMDI1MzE0MjQzMDA0MjIwOTggLyogUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjlEMDUy
RTI1MzEzRTI2MDA0MjIwOTggLyogUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzJBNzNCRUYyNDVB
M0Y5MDAwMUM5RDAzIC8qIEFuaW1hdGlvbkZyYW1lUmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzIyQTgxNUMyMzhGRDUwNTAwQzAwNTgzIC8qIEFu
aW1hdGlvbkZyYW1lUmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTcyQUI5QTIxMjU1QTlGREUwMEU2RUJGMSAvKiBOYXRpdmVJbWFnZVJlZmVy
ZW5jZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzJB
QjlBMUYyNTVBOUVBNjAwRTZFQkYxIC8qIE5hdGl2ZUltYWdlUmVmZXJlbmNlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEwMDcyLDYgKzEwMDcz
LDcgQEAKIAkJNzI3QUZFRDMxQTJFQTZBMDAwMDQ0MkU4IC8qIEVYVHNSR0IuaWRsICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IEVYVHNSR0IuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3Mjk5QkM2NDIzRDY4NkE2MDBDQzY4ODMgLyogQWxwaGFQcmVtdWx0aXBsaWNhdGlvbi5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBBbHBoYVByZW11bHRpcGxpY2F0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTcyOTlCQzY2MjNENjg2QzYwMENDNjg4MyAvKiBSZW5kZXJpbmdNb2RlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFJlbmRlcmluZ01vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNzI5QzQ1RTYyNTZFMDVGOTAwMDQwN0NGIC8qIERpc3BsYXlMaXN0Rmx1c2hJZGVudGlm
aWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpc3BsYXlMaXN0Rmx1c2hJZGVudGlmaWVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyOUQwNTJFMjUzMTNFMjYwMDQyMjA5OCAvKiBSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyQUI5QTFGMjU1
QTlFQTYwMEU2RUJGMSAvKiBOYXRpdmVJbWFnZVJlZmVyZW5jZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBO
YXRpdmVJbWFnZVJlZmVyZW5jZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MkJB
QzNBNDIzRTE3MzI3MDA4RDc0MUMgLyogSW1hZ2VCdWZmZXJCYWNrZW5kLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEltYWdlQnVmZmVyQmFja2VuZC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzc5MCw2ICsxNzc5Miw3IEBACiAJCQkJMUNBRjU2
REUyNTMwMjQ1QTAwMTdCNDcyIC8qIERpc3BsYXlMaXN0RHJhd0dseXBoc1JlY29yZGVyQ29yZVRl
eHQuY3BwICovLAogCQkJCTU1QzBBMjk1MjNGRTJDRTAwMEYyQ0I5MyAvKiBEaXNwbGF5TGlzdERy
YXdpbmdDb250ZXh0LmNwcCAqLywKIAkJCQk3MkVBMDlGOTIzRkNDQzZBMDA4NTA0QTUgLyogRGlz
cGxheUxpc3REcmF3aW5nQ29udGV4dC5oICovLAorCQkJCTcyOUM0NUU2MjU2RTA1RjkwMDA0MDdD
RiAvKiBEaXNwbGF5TGlzdEZsdXNoSWRlbnRpZmllci5oICovLAogCQkJCTcyRUEwOUY3MjNGQ0NC
M0QwMDg1MDRBNSAvKiBEaXNwbGF5TGlzdEltYWdlQnVmZmVyLmggKi8sCiAJCQkJRjQyMkI4QjYy
NTNGNzA2NTAwNEU3N0U4IC8qIERpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAgKi8sCiAJCQkJRjQy
MkI4QjUyNTNGNzA2NTAwNEU3N0U4IC8qIERpc3BsYXlMaXN0SXRlbUJ1ZmZlci5oICovLApAQCAt
MTgwMjIsNyArMTgwMjUsNiBAQAogCQkJCUExQ0M1NjRBMUY0NjEzQkIwMEE0NTU1QiAvKiBQYXlt
ZW50UmVxdWVzdCAqLywKIAkJCQkxRDAwMjY5QTIzNzRCOUY4MDBDQTZDREYgLyogUGljdHVyZUlu
UGljdHVyZSAqLywKIAkJCQlBOUQyNDdGOTBENzU3RTQxMDBGREY5NTkgLyogUGx1Z2lucyAqLywK
LQkJCQk4OUY2MEIxNzE1N0Y2QTAyMDA3NUUxNTcgLyogUXVvdGEgKi8sCiAJCQkJQkM5ODU0NDYw
Q0QzREE1RjAwMDY5QkMxIC8qIFJhbmdlcyAqLywKIAkJCQlDRDhDNkMyNDIyRkREQTY0MDBBNzIw
QUIgLyogUmVtb3RlUGxheWJhY2sgKi8sCiAJCQkJNTE4MkMyNEMxRjMxNDIwOTAwNTlCQTdDIC8q
IFNlcnZpY2VXb3JrZXJzICovLApAQCAtMzE2NzQsNiArMzE2NzYsNyBAQAogCQkJCTBGRTVGQkQz
MUMzREQ1MUUwMDA3QTJDQSAvKiBEaXNwbGF5TGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUNB
RjU2REIyNTMwMUFDODAwMTdCNDcyIC8qIERpc3BsYXlMaXN0RHJhd0dseXBoc1JlY29yZGVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk1NUFEMDk0MDI0MDg5NjQwMDBERTREMkYgLyogRGlzcGxheUxp
c3REcmF3aW5nQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzI5QzQ1RTgyNTZFMDkxOTAw
MDQwN0NGIC8qIERpc3BsYXlMaXN0Rmx1c2hJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk1NUFEMDkzRTI0MDg5NjM1MDBERTREMkYgLyogRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRjRENDBCQzkyNTU0NjNCRjAwNzIxMzQ5IC8qIERpc3BsYXlMaXN0
SXRlbUJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFNUZCRDUxQzNERDUxRTAwMDdBMkNB
IC8qIERpc3BsYXlMaXN0SXRlbXMuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNw
cAppbmRleCBhMzk1NGM3ZjVlNDJjNzJmNDFhMzg4ODk0NjViMzEyNDIyYTA0NmYyLi5lZDFhYjA1
ZmQwYTY1NDM1M2ViZmQxMDg4Mjc2NmNhOTUwMTg5ZWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNw
cApAQCAtMjA0Miw3ICsyMDQyLDcgQEAgR3JhcGhpY3NDb250ZXh0KiBDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkRCYXNlOjpkcmF3aW5nQ29udGV4dCgpIGNvbnN0CiB2b2lkIENhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyREJhc2U6OnByZXBhcmVGb3JEaXNwbGF5KCkKIHsKICAgICBpZiAoYXV0byBidWZm
ZXIgPSBjYW52YXNCYXNlKCkuYnVmZmVyKCkpCi0gICAgICAgIGJ1ZmZlci0+Zmx1c2hEcmF3aW5n
Q29udGV4dEFuZENvbW1pdCgpOworICAgICAgICBidWZmZXItPnN1Ym1pdERyYXdpbmdDb250ZXh0
KCk7CiB9CiAKIGJvb2wgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6bmVlZHNQcmVwYXJh
dGlvbkZvckRpc3BsYXkoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZlci5oCmluZGV4IDgyNDI5OTAwMmVlNjYwZjBi
YWUzZjE2M2FkMWM4OWIwM2Q0ZGRhNzkuLjM5MzEzMjcxOGEwYzYwNmY0NDRiYjJiNDk4MjhjN2I2
MDZjNDBlYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nv
bmNyZXRlSW1hZ2VCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Db25jcmV0ZUltYWdlQnVmZmVyLmgKQEAgLTM2LDMwICszNiw0MSBAQCBwdWJsaWM6CiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgSW1hZ2VCdWZmZXJUeXBlID0gQ29uY3JldGVJbWFnZUJ1ZmZlciwg
dHlwZW5hbWUuLi4gQXJndW1lbnRzPgogICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VCdWZmZXJUeXBl
PiBjcmVhdGUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENv
bG9yU3BhY2UgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIGNvbnN0IEhvc3RX
aW5kb3cqIGhvc3RXaW5kb3csIEFyZ3VtZW50cyYmLi4uIGFyZ3VtZW50cykKICAgICB7Ci0gICAg
ICAgIGF1dG8gYmFja2VuZCA9IEJhY2tlbmRUeXBlOjpjcmVhdGUoc2l6ZSwgcmVzb2x1dGlvblNj
YWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCwgaG9zdFdpbmRvdyk7CisgICAgICAgIGF1dG8g
cGFyYW1ldGVycyA9IHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRl
cnM+KG5ldyBJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnMoeyBzaXplLCByZXNvbHV0aW9u
U2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0IH0pKTsKKyAgICAgICAgYXV0byBiYWNrZW5k
ID0gQmFja2VuZFR5cGU6OmNyZWF0ZSgqcGFyYW1ldGVycywgaG9zdFdpbmRvdyk7CiAgICAgICAg
IGlmICghYmFja2VuZCkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IEltYWdlQnVmZmVyVHlwZShXVEZNb3ZlKGJhY2tlbmQpLCBzdGQ6OmZv
cndhcmQ8QXJndW1lbnRzPihhcmd1bWVudHMpLi4uKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgSW1hZ2VCdWZmZXJUeXBlKFdURk1vdmUocGFyYW1ldGVycyksIFdURk1vdmUoYmFja2Vu
ZCksIHN0ZDo6Zm9yd2FyZDxBcmd1bWVudHM+KGFyZ3VtZW50cykuLi4pKTsKICAgICB9CiAKICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBJbWFnZUJ1ZmZlclR5cGUgPSBDb25jcmV0ZUltYWdlQnVmZmVy
LCB0eXBlbmFtZS4uLiBBcmd1bWVudHM+CiAgICAgc3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZlclR5
cGU+IGNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgQXJndW1lbnRzJiYuLi4gYXJndW1lbnRzKQogICAgIHsKLSAgICAgICAgYXV0byBi
YWNrZW5kID0gQmFja2VuZFR5cGU6OmNyZWF0ZShzaXplLCBjb250ZXh0KTsKKyAgICAgICAgYXV0
byBwYXJhbWV0ZXJzID0gc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQmFja2VuZDo6UGFyYW1l
dGVycz4obmV3IEltYWdlQnVmZmVyQmFja2VuZDo6UGFyYW1ldGVycyh7IHNpemUsIDEsIENvbG9y
U3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCB9KSk7CisgICAgICAgIGF1dG8gYmFja2Vu
ZCA9IEJhY2tlbmRUeXBlOjpjcmVhdGUoKnBhcmFtZXRlcnMsIGNvbnRleHQpOwogICAgICAgICBp
ZiAoIWJhY2tlbmQpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBJbWFnZUJ1ZmZlclR5cGUoV1RGTW92ZShiYWNrZW5kKSwgc3RkOjpmb3J3
YXJkPEFyZ3VtZW50cz4oYXJndW1lbnRzKS4uLikpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IEltYWdlQnVmZmVyVHlwZShXVEZNb3ZlKHBhcmFtZXRlcnMpLCBXVEZNb3ZlKGJhY2tlbmQp
LCBzdGQ6OmZvcndhcmQ8QXJndW1lbnRzPihhcmd1bWVudHMpLi4uKSk7CiAgICAgfQogCi0gICAg
Ym9vbCBpc0FjY2VsZXJhdGVkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gQmFja2VuZFR5cGU6
OmlzQWNjZWxlcmF0ZWQ7IH0KKyAgICBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBCYWNrZW5kVHlwZTo6cmVuZGVyaW5nTW9kZTsgfQogCiBwcm90
ZWN0ZWQ6Ci0gICAgQ29uY3JldGVJbWFnZUJ1ZmZlcihzdGQ6OnVuaXF1ZV9wdHI8QmFja2VuZFR5
cGU+JiYgYmFja2VuZCA9IG51bGxwdHIsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgPSBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI6Omdl
bmVyYXRlKCkpCi0gICAgICAgIDogbV9iYWNrZW5kKFdURk1vdmUoYmFja2VuZCkpCisgICAgQ29u
Y3JldGVJbWFnZUJ1ZmZlcihzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJCYWNrZW5kOjpQYXJh
bWV0ZXJzPiYmIHBhcmFtZXRlcnMsIHN0ZDo6dW5pcXVlX3B0cjxCYWNrZW5kVHlwZT4mJiBiYWNr
ZW5kID0gbnVsbHB0ciwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllciA9IFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSkK
KyAgICAgICAgOiBtX3BhcmFtZXRlcnMoV1RGTW92ZShwYXJhbWV0ZXJzKSkKKyAgICAgICAgLCBt
X2JhY2tlbmQoV1RGTW92ZShiYWNrZW5kKSkKICAgICAgICAgLCBtX3JlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcihyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCiAgICAgewogICAgIH0KIAor
ICAgIHZvaWQgc2V0QmFja2VuZChzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJCYWNrZW5kPiYm
IGJhY2tlbmQpIG92ZXJyaWRlCisgICAgeworICAgICAgICBBU1NFUlQoIW1fYmFja2VuZCk7Cisg
ICAgICAgIG1fYmFja2VuZCA9IHN0ZDo6dW5pcXVlX3B0cjxCYWNrZW5kVHlwZT4geyBzdGF0aWNf
Y2FzdDxCYWNrZW5kVHlwZSo+KGJhY2tlbmQucmVsZWFzZSgpKSB9OworICAgIH0KKworICAgIHZv
aWQgY2xlYXJCYWNrZW5kKCkgb3ZlcnJpZGUgeyBtX2JhY2tlbmQgPSBudWxscHRyOyB9CisKICAg
ICB2aXJ0dWFsIEJhY2tlbmRUeXBlKiBlbnN1cmVCYWNrZW5kQ3JlYXRlZCgpIGNvbnN0IHsgcmV0
dXJuIG1fYmFja2VuZC5nZXQoKTsgfQogCiAgICAgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
IHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1f
cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyOyB9CkBAIC03OCwxOSArODksMTEgQEAgcHJvdGVj
dGVkOgogICAgICAgICB9CiAgICAgfQogCi0gICAgQWZmaW5lVHJhbnNmb3JtIGJhc2VUcmFuc2Zv
cm0oKSBjb25zdCBvdmVycmlkZQotICAgIHsKLSAgICAgICAgaWYgKGF1dG8qIGJhY2tlbmQgPSBl
bnN1cmVCYWNrZW5kQ3JlYXRlZCgpKQotICAgICAgICAgICAgcmV0dXJuIGJhY2tlbmQtPmJhc2VU
cmFuc2Zvcm0oKTsKLSAgICAgICAgcmV0dXJuIHsgfTsKLSAgICB9Ci0KLSAgICBJbnRTaXplIGxv
Z2ljYWxTaXplKCkgY29uc3Qgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIGlmIChhdXRvKiBiYWNr
ZW5kID0gZW5zdXJlQmFja2VuZENyZWF0ZWQoKSkKLSAgICAgICAgICAgIHJldHVybiBiYWNrZW5k
LT5sb2dpY2FsU2l6ZSgpOwotICAgICAgICByZXR1cm4geyB9OwotICAgIH0KKyAgICBJbnRTaXpl
IGxvZ2ljYWxTaXplKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gSW50U2l6ZShtX3BhcmFtZXRl
cnMtPmxvZ2ljYWxTaXplKTsgfQorICAgIGZsb2F0IHJlc29sdXRpb25TY2FsZSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIG1fcGFyYW1ldGVycy0+cmVzb2x1dGlvblNjYWxlOyB9CisgICAgQ29s
b3JTcGFjZSBjb2xvclNwYWNlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9wYXJhbWV0ZXJz
LT5jb2xvclNwYWNlOyB9CisgICAgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBtX3BhcmFtZXRlcnMtPnBpeGVsRm9ybWF0OyB9CisgICAgY29uc3QgSW1h
Z2VCdWZmZXJCYWNrZW5kOjpQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gKm1fcGFyYW1ldGVyczsgfQogCiAgICAgSW50U2l6ZSBiYWNrZW5kU2l6ZSgpIGNv
bnN0IG92ZXJyaWRlCiAgICAgewpAQCAtOTksMTEgKzEwMiwxMSBAQCBwcm90ZWN0ZWQ6CiAgICAg
ICAgIHJldHVybiB7IH07CiAgICAgfQogCi0gICAgZmxvYXQgcmVzb2x1dGlvblNjYWxlKCkgY29u
c3Qgb3ZlcnJpZGUKKyAgICBBZmZpbmVUcmFuc2Zvcm0gYmFzZVRyYW5zZm9ybSgpIGNvbnN0IG92
ZXJyaWRlCiAgICAgewogICAgICAgICBpZiAoYXV0byogYmFja2VuZCA9IGVuc3VyZUJhY2tlbmRD
cmVhdGVkKCkpCi0gICAgICAgICAgICByZXR1cm4gYmFja2VuZC0+cmVzb2x1dGlvblNjYWxlKCk7
Ci0gICAgICAgIHJldHVybiAxOworICAgICAgICAgICAgcmV0dXJuIGJhY2tlbmQtPmJhc2VUcmFu
c2Zvcm0oKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAKICAgICBzaXplX3QgbWVtb3J5
Q29zdCgpIGNvbnN0IG92ZXJyaWRlCkBAIC0yOTEsNiArMjk0LDcgQEAgcHJvdGVjdGVkOgogICAg
ICAgICAgICAgYmFja2VuZC0+cmVsZWFzZUJ1ZmZlclRvUG9vbCgpOwogICAgIH0KIAorICAgIHN0
ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnM+IG1fcGFyYW1ldGVy
czsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QmFja2VuZFR5cGU+IG1fYmFja2VuZDsKICAgICBSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgbV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI7CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZm
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKaW5k
ZXggNjJhM2Y3ZmZhMzc3OGE4YzAxMzkwMTYyNTQzNzUzYWE3YmQyYzIxZC4uNzdkOTI2MTYzZDk2
NDZlMjk1ZmQwNGI3YzEyZDQ5Zjc1NGM5Yjk2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNwcmFnbWEg
b25jZQogCisjaW5jbHVkZSAiRGlzcGxheUxpc3RGbHVzaElkZW50aWZpZXIuaCIKICNpbmNsdWRl
ICJJbWFnZUJ1ZmZlckJhY2tlbmQuaCIKICNpbmNsdWRlICJSZW5kZXJpbmdNb2RlLmgiCiAjaW5j
bHVkZSAiUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLmgiCkBAIC02MCwxMCArNjEsMTMgQEAg
cHVibGljOgogICAgIHN0YXRpYyBGbG9hdFJlY3QgY2xhbXBlZFJlY3QoY29uc3QgRmxvYXRSZWN0
Jik7CiAKICAgICBzdGF0aWMgSW50U2l6ZSBjb21wYXRpYmxlQnVmZmVyU2l6ZShjb25zdCBGbG9h
dFNpemUmLCBjb25zdCBHcmFwaGljc0NvbnRleHQmKTsKLSAgICAKKwogICAgIFdFQkNPUkVfRVhQ
T1JUIHZpcnR1YWwgfkltYWdlQnVmZmVyKCkgPSBkZWZhdWx0OwogCi0gICAgdmlydHVhbCBib29s
IGlzQWNjZWxlcmF0ZWQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldEJhY2tlbmQo
c3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQmFja2VuZD4mJikgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBjbGVhckJhY2tlbmQoKSA9IDA7CisKKyAgICB2aXJ0dWFsIFJlbmRlcmluZ01vZGUgcmVu
ZGVyaW5nTW9kZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiB7IH07
IH0KICAgICAKICAgICB2aXJ0dWFsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCgpIGNvbnN0ID0g
MDsKQEAgLTcyLDEyICs3NiwxOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBEaXNwbGF5TGlzdDo6
RHJhd2luZ0NvbnRleHQqIGRyYXdpbmdDb250ZXh0KCkgeyByZXR1cm4gbnVsbHB0cjsgfQogICAg
IHZpcnR1YWwgYm9vbCBwcmVmZXJzUHJlcGFyYXRpb25Gb3JEaXNwbGF5KCkgeyByZXR1cm4gZmFs
c2U7IH0KICAgICB2aXJ0dWFsIHZvaWQgZmx1c2hEcmF3aW5nQ29udGV4dCgpIHsgfQotICAgIHZp
cnR1YWwgdm9pZCBmbHVzaERyYXdpbmdDb250ZXh0QW5kQ29tbWl0KCkgeyB9CisgICAgdmlydHVh
bCB2b2lkIHN1Ym1pdERyYXdpbmdDb250ZXh0KCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHN1Ym1p
dERpc3BsYXlMaXN0KGNvbnN0IERpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYpIHsgfQorICAgIHZp
cnR1YWwgdm9pZCBkaWRGbHVzaChEaXNwbGF5TGlzdDo6Rmx1c2hJZGVudGlmaWVyKSB7IH0KIAot
ICAgIHZpcnR1YWwgQWZmaW5lVHJhbnNmb3JtIGJhc2VUcmFuc2Zvcm0oKSBjb25zdCA9IDA7CiAg
ICAgdmlydHVhbCBJbnRTaXplIGxvZ2ljYWxTaXplKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwg
SW50U2l6ZSBiYWNrZW5kU2l6ZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGZsb2F0IHJlc29s
dXRpb25TY2FsZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIENvbG9yU3BhY2UgY29sb3JTcGFj
ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0KCkgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgY29uc3QgSW1hZ2VCdWZmZXJCYWNrZW5kOjpQYXJhbWV0ZXJz
JiBwYXJhbWV0ZXJzKCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBJbnRTaXplIGJhY2tlbmRT
aXplKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgQWZmaW5lVHJhbnNmb3JtIGJhc2VUcmFuc2Zv
cm0oKSBjb25zdCA9IDA7CiAKICAgICB2aXJ0dWFsIHNpemVfdCBtZW1vcnlDb3N0KCkgY29uc3Qg
PSAwOwogICAgIHZpcnR1YWwgc2l6ZV90IGV4dGVybmFsTWVtb3J5Q29zdCgpIGNvbnN0ID0gMDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVy
QmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZl
ckJhY2tlbmQuY3BwCmluZGV4IDdmMGZlOWU2ZDk2NmU3NGI0NWY4NWFhZDBlM2IyZmI4NGQ5NDUw
YjkuLjkzOTRlN2JmZjQyOWJjMjFlZmNkZjNiMTQwMTExZjFhZTJjYTk0NGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5k
LmNwcApAQCAtMzEsMTIgKzMxLDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1JbWFnZUJ1
ZmZlckJhY2tlbmQ6OkltYWdlQnVmZmVyQmFja2VuZChjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxT
aXplLCBjb25zdCBJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBD
b2xvclNwYWNlIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0KQotICAgIDogbV9s
b2dpY2FsU2l6ZShsb2dpY2FsU2l6ZSkKLSAgICAsIG1fYmFja2VuZFNpemUoYmFja2VuZFNpemUp
Ci0gICAgLCBtX3Jlc29sdXRpb25TY2FsZShyZXNvbHV0aW9uU2NhbGUpCi0gICAgLCBtX2NvbG9y
U3BhY2UoY29sb3JTcGFjZSkKLSAgICAsIG1fcGl4ZWxGb3JtYXQocGl4ZWxGb3JtYXQpCitJbWFn
ZUJ1ZmZlckJhY2tlbmQ6OkltYWdlQnVmZmVyQmFja2VuZChjb25zdCBQYXJhbWV0ZXJzJiBwYXJh
bWV0ZXJzKQorICAgIDogbV9wYXJhbWV0ZXJzKHBhcmFtZXRlcnMpCiB7CiB9CiAKQEAgLTk5LDE1
ICs5NSwxNSBAQCB2b2lkIEltYWdlQnVmZmVyQmFja2VuZDo6Y29udmVydFRvTHVtaW5hbmNlTWFz
aygpCiAKIFZlY3Rvcjx1aW50OF90PiBJbWFnZUJ1ZmZlckJhY2tlbmQ6OnRvQkdSQURhdGEodm9p
ZCogZGF0YSkgY29uc3QKIHsKLSAgICBWZWN0b3I8dWludDhfdD4gcmVzdWx0KDQgKiBtX2xvZ2lj
YWxTaXplLmFyZWEoKS51bnNhZmVHZXQoKSk7Ci0gICAgc2l6ZV90IGRlc3RCeXRlc1BlclJvdyA9
IG1fbG9naWNhbFNpemUud2lkdGgoKSAqIDQ7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3VsdCg0
ICogbG9naWNhbFNpemUoKS5hcmVhKCkudW5zYWZlR2V0KCkpOworICAgIHNpemVfdCBkZXN0Qnl0
ZXNQZXJSb3cgPSBsb2dpY2FsU2l6ZSgpLndpZHRoKCkgKiA0OwogICAgIHNpemVfdCBzcmNCeXRl
c1BlclJvdyA9IGJ5dGVzUGVyUm93KCk7CiAKICAgICB1aW50OF90KiBzcmNSb3dzID0gcmVpbnRl
cnByZXRfY2FzdDx1aW50OF90Kj4oZGF0YSk7CiAKICAgICBjb3B5SW1hZ2VQaXhlbHMoCiAgICAg
ICAgIEFscGhhUHJlbXVsdGlwbGljYXRpb246OlByZW11bHRpcGxpZWQsIHBpeGVsRm9ybWF0KCks
IHNyY0J5dGVzUGVyUm93LCBzcmNSb3dzLAotICAgICAgICBBbHBoYVByZW11bHRpcGxpY2F0aW9u
OjpVbnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpCR1JBOCwgZGVzdEJ5dGVzUGVyUm93LCBy
ZXN1bHQuZGF0YSgpLCBtX2xvZ2ljYWxTaXplKTsKKyAgICAgICAgQWxwaGFQcmVtdWx0aXBsaWNh
dGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6QkdSQTgsIGRlc3RCeXRlc1BlclJv
dywgcmVzdWx0LmRhdGEoKSwgbG9naWNhbFNpemUoKSk7CiAKICAgICByZXR1cm4gcmVzdWx0Owog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZm
ZXJCYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZl
ckJhY2tlbmQuaAppbmRleCA1ODA2NzE1YTdiMmM4NzU3NjkwMmE3NzM1ODRkZjE4MDU4MjUxMDBm
Li45NTRmMjc5MjUxY2Y2MWNlZTJkYjk4ZDA4MmExZjY1YzE2MGI1MWRjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaApA
QCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkltYWdlUGFpbnRpbmdPcHRpb25zLmgiCiAjaW5j
bHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtTGF5ZXIuaCIKKyNpbmNsdWRlICJS
ZW5kZXJpbmdNb2RlLmgiCiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KIApAQCAtNzcsNiArNzgsMTMgQEAgcHVibGljOgogCiBjbGFzcyBJbWFnZUJ1ZmZl
ckJhY2tlbmQgewogcHVibGljOgorICAgIHN0cnVjdCBQYXJhbWV0ZXJzIHsKKyAgICAgICAgRmxv
YXRTaXplIGxvZ2ljYWxTaXplOworICAgICAgICBmbG9hdCByZXNvbHV0aW9uU2NhbGU7CisgICAg
ICAgIENvbG9yU3BhY2UgY29sb3JTcGFjZTsKKyAgICAgICAgUGl4ZWxGb3JtYXQgcGl4ZWxGb3Jt
YXQ7CisgICAgfTsKKwogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgfkltYWdlQnVmZmVyQmFj
a2VuZCgpID0gZGVmYXVsdDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBJbnRTaXplIGNh
bGN1bGF0ZUJhY2tlbmRTaXplKGNvbnN0IEZsb2F0U2l6ZSYsIGZsb2F0IHJlc29sdXRpb25TY2Fs
ZSk7CkBAIC04NCwxNCArOTIsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBmbHVzaENvbnRleHQo
KSB7IH0KIAotICAgIEludFNpemUgbG9naWNhbFNpemUoKSBjb25zdCB7IHJldHVybiBtX2xvZ2lj
YWxTaXplOyB9Ci0gICAgSW50U2l6ZSBiYWNrZW5kU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYmFj
a2VuZFNpemU7IH0KLSAgICBmbG9hdCByZXNvbHV0aW9uU2NhbGUoKSBjb25zdCB7IHJldHVybiBt
X3Jlc29sdXRpb25TY2FsZTsgfQotICAgIENvbG9yU3BhY2UgY29sb3JTcGFjZSgpIGNvbnN0IHsg
cmV0dXJuIG1fY29sb3JTcGFjZTsgfQotICAgIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0KCkgY29u
c3QgeyByZXR1cm4gbV9waXhlbEZvcm1hdDsgfQotCisgICAgdmlydHVhbCBJbnRTaXplIGJhY2tl
bmRTaXplKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgQWZmaW5lVHJhbnNmb3JtIGJhc2VUcmFu
c2Zvcm0oKSBjb25zdCB7IHJldHVybiBBZmZpbmVUcmFuc2Zvcm0oKTsgfQotICAgIHZpcnR1YWwg
c2l6ZV90IG1lbW9yeUNvc3QoKSBjb25zdCB7IHJldHVybiA0ICogbV9iYWNrZW5kU2l6ZS5hcmVh
KCkudW5zYWZlR2V0KCk7IH0KKworICAgIHZpcnR1YWwgc2l6ZV90IG1lbW9yeUNvc3QoKSBjb25z
dCB7IHJldHVybiA0ICogYmFja2VuZFNpemUoKS5hcmVhKCkudW5zYWZlR2V0KCk7IH0KICAgICB2
aXJ0dWFsIHNpemVfdCBleHRlcm5hbE1lbW9yeUNvc3QoKSBjb25zdCB7IHJldHVybiAwOyB9CiAK
ICAgICB2aXJ0dWFsIFJlZlB0cjxOYXRpdmVJbWFnZT4gY29weU5hdGl2ZUltYWdlKEJhY2tpbmdT
dG9yZUNvcHkpIGNvbnN0ID0gMDsKQEAgLTEyNywyNCArMTMxLDI5IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxUaHJlYWRTYWZlSW1hZ2VCdWZmZXJGbHVzaGVyPiBjcmVh
dGVGbHVzaGVyKCkgeyByZXR1cm4gbnVsbHB0cjsgfQogICAgIAogICAgIHN0YXRpYyBjb25zdGV4
cHIgYm9vbCBpc09yaWdpbkF0VXBwZXJMZWZ0Q29ybmVyID0gZmFsc2U7Ci0gICAgc3RhdGljIGNv
bnN0ZXhwciBib29sIGlzQWNjZWxlcmF0ZWQgPSBmYWxzZTsKKyAgICBzdGF0aWMgY29uc3RleHBy
IFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSA9IFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0
ZWQ7CiAKIHByb3RlY3RlZDoKLSAgICBXRUJDT1JFX0VYUE9SVCBJbWFnZUJ1ZmZlckJhY2tlbmQo
Y29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50U2l6ZSYgYmFja2VuZFNpemUs
IGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQpOworICAgIFdF
QkNPUkVfRVhQT1JUIEltYWdlQnVmZmVyQmFja2VuZChjb25zdCBQYXJhbWV0ZXJzJik7CiAKLSAg
ICB2aXJ0dWFsIHVuc2lnbmVkIGJ5dGVzUGVyUm93KCkgY29uc3QgeyByZXR1cm4gNCAqIG1fYmFj
a2VuZFNpemUud2lkdGgoKTsgfQorICAgIHZpcnR1YWwgdW5zaWduZWQgYnl0ZXNQZXJSb3coKSBj
b25zdCB7IHJldHVybiA0ICogYmFja2VuZFNpemUoKS53aWR0aCgpOyB9CiAKICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPgogICAgIFQgdG9CYWNrZW5kQ29vcmRpbmF0ZXMoVCB0KSBjb25zdAogICAg
IHsKICAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8VCwgSW50UG9pbnQ+Ojp2YWx1
ZSB8fCBzdGQ6OmlzX3NhbWU8VCwgSW50U2l6ZT46OnZhbHVlIHx8IHN0ZDo6aXNfc2FtZTxULCBJ
bnRSZWN0Pjo6dmFsdWUpOwotICAgICAgICBpZiAobV9yZXNvbHV0aW9uU2NhbGUgIT0gMSkKLSAg
ICAgICAgICAgIHQuc2NhbGUobV9yZXNvbHV0aW9uU2NhbGUpOworICAgICAgICBpZiAocmVzb2x1
dGlvblNjYWxlKCkgIT0gMSkKKyAgICAgICAgICAgIHQuc2NhbGUocmVzb2x1dGlvblNjYWxlKCkp
OwogICAgICAgICByZXR1cm4gdDsKICAgICB9CiAKLSAgICBJbnRSZWN0IGxvZ2ljYWxSZWN0KCkg
Y29uc3QgeyByZXR1cm4gSW50UmVjdChJbnRQb2ludDo6emVybygpLCBtX2xvZ2ljYWxTaXplKTsg
fTsKLSAgICBJbnRSZWN0IGJhY2tlbmRSZWN0KCkgY29uc3QgeyByZXR1cm4gSW50UmVjdChJbnRQ
b2ludDo6emVybygpLCBtX2JhY2tlbmRTaXplKTsgfTsKKyAgICBJbnRTaXplIGxvZ2ljYWxTaXpl
KCkgY29uc3QgeyByZXR1cm4gSW50U2l6ZShtX3BhcmFtZXRlcnMubG9naWNhbFNpemUpOyB9Cisg
ICAgZmxvYXQgcmVzb2x1dGlvblNjYWxlKCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0ZXJzLnJl
c29sdXRpb25TY2FsZTsgfQorICAgIENvbG9yU3BhY2UgY29sb3JTcGFjZSgpIGNvbnN0IHsgcmV0
dXJuIG1fcGFyYW1ldGVycy5jb2xvclNwYWNlOyB9CisgICAgUGl4ZWxGb3JtYXQgcGl4ZWxGb3Jt
YXQoKSBjb25zdCB7IHJldHVybiBtX3BhcmFtZXRlcnMucGl4ZWxGb3JtYXQ7IH0KKworICAgIElu
dFJlY3QgbG9naWNhbFJlY3QoKSBjb25zdCB7IHJldHVybiBJbnRSZWN0KEludFBvaW50Ojp6ZXJv
KCksIGxvZ2ljYWxTaXplKCkpOyB9OworICAgIEludFJlY3QgYmFja2VuZFJlY3QoKSBjb25zdCB7
IHJldHVybiBJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIGJhY2tlbmRTaXplKCkpOyB9OwogCiAg
ICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGNvcHlJbWFnZVBpeGVscygKICAgICAgICAg
QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBzcmNBbHBoYUZvcm1hdCwgUGl4ZWxGb3JtYXQgc3JjUGl4
ZWxGb3JtYXQsIHVuc2lnbmVkIHNyY0J5dGVzUGVyUm93LCB1aW50OF90KiBzcmNSb3dzLApAQCAt
MTU1LDExICsxNjQsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPElt
YWdlRGF0YT4gZ2V0SW1hZ2VEYXRhKEFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0
LCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0LCB2b2lkKiBkYXRhKSBjb25zdDsKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHB1dEltYWdlRGF0YShBbHBoYVByZW11bHRpcGxpY2F0aW9uIGlucHV0Rm9y
bWF0LCBjb25zdCBJbWFnZURhdGEmLCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRQ
b2ludCYgZGVzdFBvaW50LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uIGRlc3RGb3JtYXQsIHZvaWQq
IGRhdGEpOwogCi0gICAgSW50U2l6ZSBtX2xvZ2ljYWxTaXplOwotICAgIEludFNpemUgbV9iYWNr
ZW5kU2l6ZTsKLSAgICBmbG9hdCBtX3Jlc29sdXRpb25TY2FsZTsKLSAgICBDb2xvclNwYWNlIG1f
Y29sb3JTcGFjZTsKLSAgICBQaXhlbEZvcm1hdCBtX3BpeGVsRm9ybWF0OworICAgIGNvbnN0IFBh
cmFtZXRlcnMmIG1fcGFyYW1ldGVyczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtSW1hZ2VC
dWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtSW1hZ2VC
dWZmZXIuaAppbmRleCBiMDVmYTY1MTY5NzFkMTc2NzEzMWQ1NmE0NjM5MzUzZWY5NGU0OTI1Li41
MmRkODNjYzkzZDU1NTNiMzc5ZTU4N2Q0Mzg1ZDRmNzgwNTk0NGJiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybUltYWdlQnVmZmVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1JbWFnZUJ1ZmZlci5oCkBA
IC03NSw1ICs3NSw1IEBAIHVzaW5nIERpc3BsYXlMaXN0QWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlciA9
IERpc3BsYXlMaXN0OjpJbWFnZUJ1ZmZlcjxBY2NlbGVyYXRlZEltCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6QWNjZWxlcmF0
ZWRJbWFnZUJ1ZmZlcikKLSAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6SW1h
Z2VCdWZmZXImIGJ1ZmZlcikgeyByZXR1cm4gYnVmZmVyLmlzQWNjZWxlcmF0ZWQoKTsgfQorICAg
IHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpJbWFnZUJ1ZmZlciYgYnVmZmVyKSB7
IHJldHVybiBidWZmZXIucmVuZGVyaW5nTW9kZSgpID09IFdlYkNvcmU6OlJlbmRlcmluZ01vZGU6
OkFjY2VsZXJhdGVkOyB9CiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJv
QmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFn
ZUJ1ZmZlckNhaXJvQmFja2VuZC5jcHAKaW5kZXggMTJhNWI2MGEyZTkwNDZhMTk1ODkyYmFmNWRk
N2VkNDk2MzNiM2U3NC4uYjNiZmQ4MTI3Yjg3ZDE2ODhlYWJiNWNmNGIyYTcxYzMzNTljZDJkMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VC
dWZmZXJDYWlyb0JhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmNwcApAQCAtODAsNyArODAsNyBAQCB2
b2lkIEltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQm
IGRlc3RDb250ZXh0LCBjb25zdCBGbAogICAgIH0KIAogICAgIGlmIChhdXRvIGltYWdlID0gY29w
eU5hdGl2ZUltYWdlKCZkZXN0Q29udGV4dCA9PSAmY29udGV4dCgpID8gQ29weUJhY2tpbmdTdG9y
ZSA6IERvbnRDb3B5QmFja2luZ1N0b3JlKSkKLSAgICAgICAgQ2Fpcm86OmRyYXdQYXR0ZXJuKCpk
ZXN0Q29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSwgaW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQo
KSwgbV9sb2dpY2FsU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBo
YXNlLCBvcHRpb25zKTsKKyAgICAgICAgQ2Fpcm86OmRyYXdQYXR0ZXJuKCpkZXN0Q29udGV4dC5w
bGF0Zm9ybUNvbnRleHQoKSwgaW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSwgbG9naWNhbFNp
emUoKSwgZGVzdFJlY3QsIHNyY1JlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBvcHRpb25z
KTsKIH0KIAogdm9pZCBJbWFnZUJ1ZmZlckNhaXJvQmFja2VuZDo6Y2xpcFRvTWFzayhHcmFwaGlj
c0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJD
YWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQuY3BwCmluZGV4
IDFjZDA3NTRiMzkxNDNhZjQyOWI0NmQ1ZDc4ZTQ1MWYwZDFlMDc0YzMuLjNkYTE0NTVlYmEwNmQ2
Nzk0ZTMzMjcwMTdkYWFmZDc5YmM1NDcyZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5k
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1
ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZC5jcHAKQEAgLTQxLDEzICs0MSwxMyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChJbWFnZUJ1ZmZl
ckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZCk7CiAKLXN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZl
ckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZD4gSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJh
Y2tlbmQ6OmNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2Fs
ZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgY29uc3Qg
SG9zdFdpbmRvdyopCitzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFj
ZUJhY2tlbmQ+IEltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kOjpjcmVhdGUoY29u
c3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycywgY29uc3QgSG9zdFdpbmRvdyopCiB7Ci0gICAgQVNT
RVJUKHBpeGVsRm9ybWF0ID09IFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgQVNTRVJUKHBhcmFt
ZXRlcnMucGl4ZWxGb3JtYXQgPT0gUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKIAogICAgIHN0YXRpYyBj
YWlyb191c2VyX2RhdGFfa2V5X3Qgc19zdXJmYWNlRGF0YUtleTsKIAotICAgIEludFNpemUgYmFj
a2VuZFNpemUgPSBjYWxjdWxhdGVCYWNrZW5kU2l6ZShzaXplLCByZXNvbHV0aW9uU2NhbGUpOwor
ICAgIEludFNpemUgYmFja2VuZFNpemUgPSBjYWxjdWxhdGVCYWNrZW5kU2l6ZShwYXJhbWV0ZXJz
LmxvZ2ljYWxTaXplLCBwYXJhbWV0ZXJzLnJlc29sdXRpb25TY2FsZSk7CiAgICAgaWYgKGJhY2tl
bmRTaXplLmlzRW1wdHkoKSB8fCBiYWNrZW5kU2l6ZS53aWR0aCgpID4gY2Fpcm9NYXhJbWFnZVNp
emUgfHwgYmFja2VuZFNpemUuaGVpZ2h0KCkgPiBjYWlyb01heEltYWdlU2l6ZSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKQEAgLTYxLDE2ICs2MSwxNiBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW1h
Z2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQ+IEltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1
cmZhYwogICAgICAgICBmYXN0RnJlZShkYXRhKTsKICAgICB9KTsKIAotICAgIHJldHVybiBzdGQ6
OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQ+KG5ldyBJbWFn
ZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZChzaXplLCBiYWNrZW5kU2l6ZSwgcmVzb2x1
dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCwgV1RGTW92ZShzdXJmYWNlKSkpOwor
ICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJh
Y2tlbmQ+KG5ldyBJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZChwYXJhbWV0ZXJz
LCBXVEZNb3ZlKHN1cmZhY2UpKSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNh
aXJvSW1hZ2VTdXJmYWNlQmFja2VuZD4gSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tl
bmQ6OmNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYp
CitzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQ+IElt
YWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kOjpjcmVhdGUoY29uc3QgUGFyYW1ldGVy
cyYgcGFyYW1ldGVycywgY29uc3QgR3JhcGhpY3NDb250ZXh0JikKIHsKLSAgICByZXR1cm4gSW1h
Z2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZShzaXplLCAxLCBDb2xvclNw
YWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdSQTgsIG51bGxwdHIpOworICAgIHJldHVybiBJbWFn
ZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZDo6Y3JlYXRlKHBhcmFtZXRlcnMsIG51bGxw
dHIpOwogfQogCi1JbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZDo6SW1hZ2VCdWZm
ZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwg
Y29uc3QgSW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JT
cGFjZSBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgUmVmUHRyPGNhaXJvX3N1
cmZhY2VfdD4mJiBzdXJmYWNlKQotICAgIDogSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5k
KGxvZ2ljYWxTaXplLCBiYWNrZW5kU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBw
aXhlbEZvcm1hdCwgV1RGTW92ZShzdXJmYWNlKSkKK0ltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZh
Y2VCYWNrZW5kOjpJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZChjb25zdCBQYXJh
bWV0ZXJzJiBwYXJhbWV0ZXJzLCBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiYmIHN1cmZhY2UpCisg
ICAgOiBJbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQocGFyYW1ldGVycywgV1RGTW92ZShz
dXJmYWNlKSkKIHsKICAgICBBU1NFUlQoY2Fpcm9fc3VyZmFjZV9nZXRfdHlwZShtX3N1cmZhY2Uu
Z2V0KCkpID09IENBSVJPX1NVUkZBQ0VfVFlQRV9JTUFHRSk7CiB9CkBAIC03OSwxNiArNzksMTYg
QEAgdm9pZCBJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZDo6cGxhdGZvcm1UcmFu
c2Zvcm1Db2xvclNwYWNlKGNvbnN0IHN0ZDoKIHsKICAgICB1bnNpZ25lZCBjaGFyKiBkYXRhU3Jj
ID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfZGF0YShtX3N1cmZhY2UuZ2V0KCkpOwogICAgIGlu
dCBzdHJpZGUgPSBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9zdHJpZGUobV9zdXJmYWNlLmdldCgp
KTsKLSAgICBmb3IgKGludCB5ID0gMDsgeSA8IG1fbG9naWNhbFNpemUuaGVpZ2h0KCk7ICsreSkg
eworICAgIGZvciAoaW50IHkgPSAwOyB5IDwgbG9naWNhbFNpemUoKS5oZWlnaHQoKTsgKyt5KSB7
CiAgICAgICAgIHVuc2lnbmVkKiByb3cgPSByZWludGVycHJldF9jYXN0X3B0cjx1bnNpZ25lZCo+
KGRhdGFTcmMgKyBzdHJpZGUgKiB5KTsKLSAgICAgICAgZm9yIChpbnQgeCA9IDA7IHggPCBtX2xv
Z2ljYWxTaXplLndpZHRoKCk7IHgrKykgeworICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8IGxv
Z2ljYWxTaXplKCkud2lkdGgoKTsgeCsrKSB7CiAgICAgICAgICAgICB1bnNpZ25lZCogcGl4ZWwg
PSByb3cgKyB4OwogICAgICAgICAgICAgYXV0byBwaXhlbENvbXBvbmVudHMgPSB1bnByZW11bHRp
cGxpZWQoYXNTUkdCQShQYWNrZWRDb2xvcjo6QVJHQiB7ICpwaXhlbCB9KSk7CiAgICAgICAgICAg
ICBwaXhlbENvbXBvbmVudHMgPSB7IGxvb2tVcFRhYmxlW3BpeGVsQ29tcG9uZW50cy5yZWRdLCBs
b29rVXBUYWJsZVtwaXhlbENvbXBvbmVudHMuZ3JlZW5dLCBsb29rVXBUYWJsZVtwaXhlbENvbXBv
bmVudHMuYmx1ZV0sIHBpeGVsQ29tcG9uZW50cy5hbHBoYSB9OwogICAgICAgICAgICAgKnBpeGVs
ID0gUGFja2VkQ29sb3I6OkFSR0IgeyBwcmVtdWx0aXBsaWVkQ2VpbGluZyhwaXhlbENvbXBvbmVu
dHMpIH0udmFsdWU7CiAgICAgICAgIH0KICAgICB9Ci0gICAgY2Fpcm9fc3VyZmFjZV9tYXJrX2Rp
cnR5X3JlY3RhbmdsZShtX3N1cmZhY2UuZ2V0KCksIDAsIDAsIG1fbG9naWNhbFNpemUud2lkdGgo
KSwgbV9sb2dpY2FsU2l6ZS5oZWlnaHQoKSk7CisgICAgY2Fpcm9fc3VyZmFjZV9tYXJrX2RpcnR5
X3JlY3RhbmdsZShtX3N1cmZhY2UuZ2V0KCksIDAsIDAsIGxvZ2ljYWxTaXplKCkud2lkdGgoKSwg
bG9naWNhbFNpemUoKS5oZWlnaHQoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVm
ZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZC5oCmluZGV4
IGQxNmQzM2VhYzQ2YzVkZjY2ZmI4ZmEyZDk1NDkxMGUyZjkxMTVhMDMuLjg2NWNjNjliMmQ1MzM4
NTQ1ZjM3ZTQxOTNjYjk0ZjE5ODBiZTczYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5k
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZm
ZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQuaApAQCAtNDAsMTEgKzQwLDExIEBAIGNsYXNzIElt
YWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kIDogcHVibGljIEltYWdlQnVmZmVyQ2Fp
cm9TdXJmYWNlQmFja2VuCiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChJbWFnZUJ1ZmZlckNh
aXJvSW1hZ2VTdXJmYWNlQmFja2VuZCk7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW1hZ2VC
dWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQpOwogcHVibGljOgotICAgIHN0YXRpYyBzdGQ6
OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQ+IGNyZWF0ZShj
b25zdCBGbG9hdFNpemUmLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UsIFBpeGVs
Rm9ybWF0LCBjb25zdCBIb3N0V2luZG93Kik7Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJ
bWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZD4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6
ZSYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
SW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQ+IGNyZWF0ZShjb25zdCBQYXJhbWV0
ZXJzJiwgY29uc3QgSG9zdFdpbmRvdyopOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1h
Z2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQ+IGNyZWF0ZShjb25zdCBQYXJhbWV0ZXJz
JiwgY29uc3QgR3JhcGhpY3NDb250ZXh0Jik7CiAKIHByaXZhdGU6Ci0gICAgSW1hZ2VCdWZmZXJD
YWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29u
c3QgSW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFj
ZSwgUGl4ZWxGb3JtYXQsIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+JiYpOworICAgIEltYWdlQnVm
ZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kKGNvbnN0IFBhcmFtZXRlcnMmLCBSZWZQdHI8Y2Fp
cm9fc3VyZmFjZV90PiYmKTsKIAogICAgIHZvaWQgcGxhdGZvcm1UcmFuc2Zvcm1Db2xvclNwYWNl
KGNvbnN0IHN0ZDo6YXJyYXk8dWludDhfdCwgMjU2PiYgbG9va1VwVGFibGUpIG92ZXJyaWRlOwog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0lt
YWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQuY3BwCmluZGV4
IDliODIxNjRhZWEzMzA3MWU1MzYxYzZmZTM5YjFiODI3YzliNmIxNTAuLjBiNzNmMTRiYTcwMDVl
NTIwNTBlZDU4MjE2NGExMTYzODA1NDk3MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJD
YWlyb1N1cmZhY2VCYWNrZW5kLmNwcApAQCAtNDMsOCArNDMsOCBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLUltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZDo6SW1hZ2VCdWZmZXJDYWly
b1N1cmZhY2VCYWNrZW5kKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEludFNp
emUmIGJhY2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JT
cGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+JiYg
c3VyZmFjZSkKLSAgICA6IEltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kKGxvZ2ljYWxTaXplLCBiYWNr
ZW5kU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCkKK0ltYWdl
QnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZDo6SW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5k
KGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+JiYg
c3VyZmFjZSkKKyAgICA6IEltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kKHBhcmFtZXRlcnMpCiAgICAg
LCBtX3N1cmZhY2UoV1RGTW92ZShzdXJmYWNlKSkKIHsKICAgICBBU1NFUlQoY2Fpcm9fc3VyZmFj
ZV9zdGF0dXMobV9zdXJmYWNlLmdldCgpKSA9PSBDQUlST19TVEFUVVNfU1VDQ0VTUyk7CkBAIC01
OSw2ICs1OSwxMSBAQCBHcmFwaGljc0NvbnRleHQmIEltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFj
a2VuZDo6Y29udGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuICptX2NvbnRleHQ7CiB9CiAKK0ludFNp
emUgSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kOjpiYWNrZW5kU2l6ZSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIHsgY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfd2lkdGgobV9zdXJmYWNlLmdl
dCgpKSwgY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfaGVpZ2h0KG1fc3VyZmFjZS5nZXQoKSkgfTsK
K30KKwogdW5zaWduZWQgSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kOjpieXRlc1BlclJv
dygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3N0cmlkZSht
X3N1cmZhY2UuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tl
bmQuaAppbmRleCAxMmFhMmIxY2U4OGVlNDI2NDVmYTc3MmU2NzlmNWQ0MTk1YTI2NzQ3Li45ZTkz
ZGRlODU4ZWY0M2IyODJkNDM4Y2E1YTc2N2ZlYmNiYmRkYmNkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJh
Y2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFn
ZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQuaApAQCAtNDAsNiArNDAsOCBAQCBjbGFzcyBJbWFn
ZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQgOiBwdWJsaWMgSW1hZ2VCdWZmZXJDYWlyb0JhY2tl
bmQgewogcHVibGljOgogICAgIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCgpIGNvbnN0IG92ZXJy
aWRlOwogCisgICAgSW50U2l6ZSBiYWNrZW5kU2l6ZSgpIGNvbnN0IG92ZXJyaWRlOworCiAgICAg
UmVmUHRyPE5hdGl2ZUltYWdlPiBjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSkgY29u
c3Qgb3ZlcnJpZGU7CiAKICAgICBWZWN0b3I8dWludDhfdD4gdG9CR1JBRGF0YSgpIGNvbnN0IG92
ZXJyaWRlOwpAQCAtNDcsNyArNDksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBwdXRJbWFnZURhdGEo
QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBpbnB1dEZvcm1hdCwgY29uc3QgSW1hZ2VEYXRhJiwgY29u
c3QgSW50UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCwgQWxwaGFQcmVt
dWx0aXBsaWNhdGlvbiBkZXN0Rm9ybWF0KSBvdmVycmlkZTsKIAogcHJvdGVjdGVkOgotICAgIElt
YWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZChjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXpl
LCBjb25zdCBJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xv
clNwYWNlLCBQaXhlbEZvcm1hdCwgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4mJik7CisgICAgSW1h
Z2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kKGNvbnN0IFBhcmFtZXRlcnMmLCBSZWZQdHI8Y2Fp
cm9fc3VyZmFjZV90PiYmKTsKIAogICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gY2Fpcm9TdXJmYWNl
Q29lcmNlVG9JbWFnZSgpIGNvbnN0OwogICAgIHVuc2lnbmVkIGJ5dGVzUGVyUm93KCkgY29uc3Qg
b3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5jcHAKaW5kZXggNTAxN2JhMTJjOGI0ODdiMGNh
MDZlNTQzYjEyOTYzNjVkNmRkMmIyYi4uOTUwZTlhN2U2ZmVjMmJiYWFkNzJkNDY3ZWViNjZlYTA4
NGRlZjlhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VCdWZmZXJDR0JhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCYWNrZW5kLmNwcApAQCAtNzksOCArNzksOCBAQCB2b2lk
IEltYWdlQnVmZmVyQ0dCYWNrZW5kOjpzZXR1cENvbnRleHQoKSBjb25zdAogewogICAgIC8vIFRo
ZSBpbml0aWFsIENUTSBtYXRjaGVzIERpc3BsYXlMaXN0OjpSZWNvcmRlcjo6Y2xpcFRvRHJhd2lu
Z0NvbW1hbmRzKCkncyBpbml0aWFsIENUTS4KICAgICBjb250ZXh0KCkuc2NhbGUoRmxvYXRTaXpl
KDEsIC0xKSk7Ci0gICAgY29udGV4dCgpLnRyYW5zbGF0ZSgwLCAtbV9iYWNrZW5kU2l6ZS5oZWln
aHQoKSk7Ci0gICAgY29udGV4dCgpLmFwcGx5RGV2aWNlU2NhbGVGYWN0b3IobV9yZXNvbHV0aW9u
U2NhbGUpOworICAgIGNvbnRleHQoKS50cmFuc2xhdGUoMCwgLWJhY2tlbmRTaXplKCkuaGVpZ2h0
KCkpOworICAgIGNvbnRleHQoKS5hcHBseURldmljZVNjYWxlRmFjdG9yKHJlc29sdXRpb25TY2Fs
ZSgpKTsKIH0KIAogc3RhdGljIFJldGFpblB0cjxDR0ltYWdlUmVmPiBjcmVhdGVDcm9wcGVkSW1h
Z2VJZk5lY2Vzc2FyeShDR0ltYWdlUmVmIGltYWdlLCBjb25zdCBJbnRTaXplJiBiYWNrZW5kU2l6
ZSkKQEAgLTExMiwzMSArMTEyLDMxIEBAIHN0YXRpYyBSZWZQdHI8SW1hZ2U+IGNyZWF0ZUJpdG1h
cEltYWdlQWZ0ZXJTY2FsaW5nSWZOZWVkZWQoUmVmUHRyPE5hdGl2ZUltYWdlPiYmCiBSZWZQdHI8
SW1hZ2U+IEltYWdlQnVmZmVyQ0dCYWNrZW5kOjpjb3B5SW1hZ2UoQmFja2luZ1N0b3JlQ29weSBj
b3B5QmVoYXZpb3IsIFByZXNlcnZlUmVzb2x1dGlvbiBwcmVzZXJ2ZVJlc29sdXRpb24pIGNvbnN0
CiB7CiAgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBpbWFnZTsKLSAgICBpZiAobV9yZXNvbHV0aW9u
U2NhbGUgPT0gMSB8fCBwcmVzZXJ2ZVJlc29sdXRpb24gPT0gUHJlc2VydmVSZXNvbHV0aW9uOjpZ
ZXMpCisgICAgaWYgKHJlc29sdXRpb25TY2FsZSgpID09IDEgfHwgcHJlc2VydmVSZXNvbHV0aW9u
ID09IFByZXNlcnZlUmVzb2x1dGlvbjo6WWVzKQogICAgICAgICBpbWFnZSA9IGNvcHlOYXRpdmVJ
bWFnZShjb3B5QmVoYXZpb3IpOwogICAgIGVsc2UKICAgICAgICAgaW1hZ2UgPSBjb3B5TmF0aXZl
SW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpOwotICAgIHJldHVybiBjcmVhdGVCaXRtYXBJbWFn
ZUFmdGVyU2NhbGluZ0lmTmVlZGVkKFdURk1vdmUoaW1hZ2UpLCBtX2xvZ2ljYWxTaXplLCBtX2Jh
Y2tlbmRTaXplLCBtX3Jlc29sdXRpb25TY2FsZSwgcHJlc2VydmVSZXNvbHV0aW9uKTsKKyAgICBy
ZXR1cm4gY3JlYXRlQml0bWFwSW1hZ2VBZnRlclNjYWxpbmdJZk5lZWRlZChXVEZNb3ZlKGltYWdl
KSwgbG9naWNhbFNpemUoKSwgYmFja2VuZFNpemUoKSwgcmVzb2x1dGlvblNjYWxlKCksIHByZXNl
cnZlUmVzb2x1dGlvbik7CiB9CiAKIFJlZlB0cjxJbWFnZT4gSW1hZ2VCdWZmZXJDR0JhY2tlbmQ6
OnNpbmtJbnRvSW1hZ2UoUHJlc2VydmVSZXNvbHV0aW9uIHByZXNlcnZlUmVzb2x1dGlvbikKIHsK
LSAgICByZXR1cm4gY3JlYXRlQml0bWFwSW1hZ2VBZnRlclNjYWxpbmdJZk5lZWRlZChzaW5rSW50
b05hdGl2ZUltYWdlKCksIG1fbG9naWNhbFNpemUsIG1fYmFja2VuZFNpemUsIG1fcmVzb2x1dGlv
blNjYWxlLCBwcmVzZXJ2ZVJlc29sdXRpb24pOworICAgIHJldHVybiBjcmVhdGVCaXRtYXBJbWFn
ZUFmdGVyU2NhbGluZ0lmTmVlZGVkKHNpbmtJbnRvTmF0aXZlSW1hZ2UoKSwgbG9naWNhbFNpemUo
KSwgYmFja2VuZFNpemUoKSwgcmVzb2x1dGlvblNjYWxlKCksIHByZXNlcnZlUmVzb2x1dGlvbik7
CiB9CiAKIHZvaWQgSW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBk
ZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBGbG9h
dFJlY3Qgc3JjUmVjdFNjYWxlZCA9IHNyY1JlY3Q7Ci0gICAgc3JjUmVjdFNjYWxlZC5zY2FsZSht
X3Jlc29sdXRpb25TY2FsZSk7CisgICAgc3JjUmVjdFNjYWxlZC5zY2FsZShyZXNvbHV0aW9uU2Nh
bGUoKSk7CiAKICAgICBpZiAoYXV0byBpbWFnZSA9IGNvcHlOYXRpdmVJbWFnZSgmZGVzdENvbnRl
eHQgPT0gJmNvbnRleHQoKSA/IENvcHlCYWNraW5nU3RvcmUgOiBEb250Q29weUJhY2tpbmdTdG9y
ZSkpCi0gICAgICAgIGRlc3RDb250ZXh0LmRyYXdOYXRpdmVJbWFnZSgqaW1hZ2UsIG1fYmFja2Vu
ZFNpemUsIGRlc3RSZWN0LCBzcmNSZWN0U2NhbGVkLCBvcHRpb25zKTsKKyAgICAgICAgZGVzdENv
bnRleHQuZHJhd05hdGl2ZUltYWdlKCppbWFnZSwgYmFja2VuZFNpemUoKSwgZGVzdFJlY3QsIHNy
Y1JlY3RTY2FsZWQsIG9wdGlvbnMpOwogfQogCiB2b2lkIEltYWdlQnVmZmVyQ0dCYWNrZW5kOjpk
cmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0
U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAg
ICAgRmxvYXRSZWN0IGFkanVzdGVkU3JjUmVjdCA9IHNyY1JlY3Q7Ci0gICAgYWRqdXN0ZWRTcmNS
ZWN0LnNjYWxlKG1fcmVzb2x1dGlvblNjYWxlKTsKKyAgICBhZGp1c3RlZFNyY1JlY3Quc2NhbGUo
cmVzb2x1dGlvblNjYWxlKCkpOwogCiAgICAgaWYgKGF1dG8gaW1hZ2UgPSBjb3B5SW1hZ2UoJmRl
c3RDb250ZXh0ID09ICZjb250ZXh0KCkgPyBDb3B5QmFja2luZ1N0b3JlIDogRG9udENvcHlCYWNr
aW5nU3RvcmUpKQogICAgICAgICBpbWFnZS0+ZHJhd1BhdHRlcm4oZGVzdENvbnRleHQsIGRlc3RS
ZWN0LCBhZGp1c3RlZFNyY1JlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBv
cHRpb25zKTsKQEAgLTE2MSw3ICsxNjEsNyBAQCB2b2lkIEltYWdlQnVmZmVyQ0dCYWNrZW5kOjpj
bGlwVG9NYXNrKEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UgogCiBB
ZmZpbmVUcmFuc2Zvcm0gSW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OmJhc2VUcmFuc2Zvcm0oKSBjb25z
dAogewotICAgIHJldHVybiBBZmZpbmVUcmFuc2Zvcm0oMSwgMCwgMCwgLTEsIDAsIG1fbG9naWNh
bFNpemUuaGVpZ2h0KCkpOworICAgIHJldHVybiBBZmZpbmVUcmFuc2Zvcm0oMSwgMCwgMCwgLTEs
IDAsIGxvZ2ljYWxTaXplKCkuaGVpZ2h0KCkpOwogfQogCiBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBJ
bWFnZUJ1ZmZlckNHQmFja2VuZDo6dG9DRkRhdGEoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0
aW9uYWw8ZG91YmxlPiBxdWFsaXR5LCBQcmVzZXJ2ZVJlc29sdXRpb24gcHJlc2VydmVSZXNvbHV0
aW9uKSBjb25zdApAQCAtMTkwLDcgKzE5MCw3IEBAIFJldGFpblB0cjxDRkRhdGFSZWY+IEltYWdl
QnVmZmVyQ0dCYWNrZW5kOjp0b0NGRGF0YShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpCiAg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgICAgICBpbWFnZSA9IGFkb3B0Q0YoQ0dJ
bWFnZUNyZWF0ZShwaXhlbEFycmF5RGltZW5zaW9ucy53aWR0aCgpLCBwaXhlbEFycmF5RGltZW5z
aW9ucy5oZWlnaHQoKSwgOCwgMzIsIDQgKiBwaXhlbEFycmF5RGltZW5zaW9ucy53aWR0aCgpLCBz
UkdCQ29sb3JTcGFjZVJlZigpLCBrQ0dCaXRtYXBCeXRlT3JkZXJEZWZhdWx0IHwga0NHSW1hZ2VB
bHBoYU5vbmVTa2lwTGFzdCwgZGF0YVByb3ZpZGVyLmdldCgpLCAwLCBmYWxzZSwga0NHUmVuZGVy
aW5nSW50ZW50RGVmYXVsdCkpOwotICAgIH0gZWxzZSBpZiAobV9yZXNvbHV0aW9uU2NhbGUgPT0g
MSB8fCBwcmVzZXJ2ZVJlc29sdXRpb24gPT0gUHJlc2VydmVSZXNvbHV0aW9uOjpZZXMpIHsKKyAg
ICB9IGVsc2UgaWYgKHJlc29sdXRpb25TY2FsZSgpID09IDEgfHwgcHJlc2VydmVSZXNvbHV0aW9u
ID09IFByZXNlcnZlUmVzb2x1dGlvbjo6WWVzKSB7CiAgICAgICAgIGltYWdlID0gY29weU5hdGl2
ZUltYWdlKENvcHlCYWNraW5nU3RvcmUpLT5wbGF0Zm9ybUltYWdlKCk7CiAgICAgICAgIGltYWdl
ID0gY3JlYXRlQ3JvcHBlZEltYWdlSWZOZWNlc3NhcnkoaW1hZ2UuZ2V0KCksIGJhY2tlbmRTaXpl
KCkpOwogICAgIH0gZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5jcHAKaW5k
ZXggZjIxOGYyN2YyZjUzYzVhNGFkYmI2YTVhZWRjM2M0OWU0OGNkNjNhNC4uNWJlYTMwMDY2N2U0
YjU0MTcwNTUwMmQxZTNhNzU1MjdlNTg4ODMyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBC
YWNrZW5kLmNwcApAQCAtMzksMTEgKzM5LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RG
X01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kKTsKIAot
c3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kPiBJbWFnZUJ1ZmZlckNH
Qml0bWFwQmFja2VuZDo6Y3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1
dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIENHQ29sb3JTcGFjZVJlZiBjZ0NvbG9y
U3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBjb25zdCBIb3N0V2luZG93KikKK3N0ZDo6
dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZD4gSW1hZ2VCdWZmZXJDR0JpdG1h
cEJhY2tlbmQ6OmNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBDR0NvbG9yU3Bh
Y2VSZWYgY2dDb2xvclNwYWNlLCBjb25zdCBIb3N0V2luZG93KikKIHsKLSAgICBBU1NFUlQocGl4
ZWxGb3JtYXQgPT0gUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBBU1NFUlQocGFyYW1ldGVycy5w
aXhlbEZvcm1hdCA9PSBQaXhlbEZvcm1hdDo6QkdSQTgpOwogCi0gICAgSW50U2l6ZSBiYWNrZW5k
U2l6ZSA9IGNhbGN1bGF0ZUJhY2tlbmRTaXplKHNpemUsIHJlc29sdXRpb25TY2FsZSk7CisgICAg
SW50U2l6ZSBiYWNrZW5kU2l6ZSA9IGNhbGN1bGF0ZUJhY2tlbmRTaXplKHBhcmFtZXRlcnMubG9n
aWNhbFNpemUsIHBhcmFtZXRlcnMucmVzb2x1dGlvblNjYWxlKTsKICAgICBpZiAoYmFja2VuZFNp
emUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtNzAsMjQgKzcwLDI1
IEBAIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZD4gSW1hZ2VCdWZm
ZXJDR0JpdG1hcEJhY2tlbmQ6OmNyZWF0ZShjCiAKICAgICBhdXRvIGRhdGFQcm92aWRlciA9IGFk
b3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRoRGF0YSgwLCBkYXRhLCBudW1CeXRlcywgcmVs
ZWFzZUltYWdlRGF0YSkpOwogCi0gICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZl
ckNHQml0bWFwQmFja2VuZD4obmV3IEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kKHNpemUsIGJh
Y2tlbmRTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0LCBkYXRh
LCBXVEZNb3ZlKGRhdGFQcm92aWRlciksIFdURk1vdmUoY29udGV4dCkpKTsKKyAgICByZXR1cm4g
c3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kPihuZXcgSW1hZ2VCdWZm
ZXJDR0JpdG1hcEJhY2tlbmQocGFyYW1ldGVycywgYmFja2VuZFNpemUsIGRhdGEsIFdURk1vdmUo
ZGF0YVByb3ZpZGVyKSwgV1RGTW92ZShjb250ZXh0KSkpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8
SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ+IEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpj
cmVhdGUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBjb25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQpCitzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ+IEltYWdlQnVm
ZmVyQ0dCaXRtYXBCYWNrZW5kOjpjcmVhdGUoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycywg
Y29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogewogICAgIGlmIChhdXRvIGNnQ29sb3JT
cGFjZSA9IGNvbnRleHRDb2xvclNwYWNlKGNvbnRleHQpKQotICAgICAgICByZXR1cm4gSW1hZ2VC
dWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNyZWF0ZShzaXplLCAxLCBDb2xvclNwYWNlOjpTUkdCLCBj
Z0NvbG9yU3BhY2UuZ2V0KCksIFBpeGVsRm9ybWF0OjpCR1JBOCwgbnVsbHB0cik7Ci0gICAgCi0g
ICAgcmV0dXJuIEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpjcmVhdGUoc2l6ZSwgMSwgQ29s
b3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4LCBudWxscHRyKTsKKyAgICAgICAgcmV0
dXJuIEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpjcmVhdGUocGFyYW1ldGVycywgY2dDb2xv
clNwYWNlLmdldCgpLCBudWxscHRyKTsKKworICAgIHJldHVybiBJbWFnZUJ1ZmZlckNHQml0bWFw
QmFja2VuZDo6Y3JlYXRlKHBhcmFtZXRlcnMsIG51bGxwdHIpOwogfQogCi1zdGQ6OnVuaXF1ZV9w
dHI8SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ+IEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5k
OjpjcmVhdGUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENv
bG9yU3BhY2UgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIGNvbnN0IEhvc3RX
aW5kb3cqIGhvc3RXaW5kb3cpCitzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJDR0JpdG1hcEJh
Y2tlbmQ+IEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpjcmVhdGUoY29uc3QgUGFyYW1ldGVy
cyYgcGFyYW1ldGVycywgY29uc3QgSG9zdFdpbmRvdyogaG9zdFdpbmRvdykKIHsKLSAgICByZXR1
cm4gSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNyZWF0ZShzaXplLCByZXNvbHV0aW9uU2Nh
bGUsIGNvbG9yU3BhY2UsIGNhY2hlZENHQ29sb3JTcGFjZShjb2xvclNwYWNlKSwgcGl4ZWxGb3Jt
YXQsIGhvc3RXaW5kb3cpOworICAgIHJldHVybiBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6
Y3JlYXRlKHBhcmFtZXRlcnMsIGNhY2hlZENHQ29sb3JTcGFjZShwYXJhbWV0ZXJzLmNvbG9yU3Bh
Y2UpLCBob3N0V2luZG93KTsKIH0KIAotSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OkltYWdl
QnVmZmVyQ0dCaXRtYXBCYWNrZW5kKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0
IEludFNpemUmIGJhY2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2Ug
Y29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIHZvaWQqIGRhdGEsIFJldGFpblB0
cjxDR0RhdGFQcm92aWRlclJlZj4mJiBkYXRhUHJvdmlkZXIsIHN0ZDo6dW5pcXVlX3B0cjxHcmFw
aGljc0NvbnRleHQ+JiYgY29udGV4dCkKLSAgICA6IEltYWdlQnVmZmVyQ0dCYWNrZW5kKGxvZ2lj
YWxTaXplLCBiYWNrZW5kU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZv
cm1hdCkKK0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpJbWFnZUJ1ZmZlckNHQml0bWFwQmFj
a2VuZChjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBjb25zdCBJbnRTaXplJiBiYWNrZW5k
U2l6ZSwgdm9pZCogZGF0YSwgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiYmIGRhdGFQcm92
aWRlciwgc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzQ29udGV4dD4mJiBjb250ZXh0KQorICAgIDog
SW1hZ2VCdWZmZXJDR0JhY2tlbmQocGFyYW1ldGVycykKKyAgICAsIG1fYmFja2VuZFNpemUoYmFj
a2VuZFNpemUpCiAgICAgLCBtX2RhdGEoZGF0YSkKICAgICAsIG1fZGF0YVByb3ZpZGVyKFdURk1v
dmUoZGF0YVByb3ZpZGVyKSkKICAgICAsIG1fY29udGV4dChXVEZNb3ZlKGNvbnRleHQpKQpAQCAt
MTEyLDcgKzExMyw3IEBAIFJlZlB0cjxOYXRpdmVJbWFnZT4gSW1hZ2VCdWZmZXJDR0JpdG1hcEJh
Y2tlbmQ6OmNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5CiAgICAgY2FzZSBEb250Q29w
eUJhY2tpbmdTdG9yZToKICAgICAgICAgcmV0dXJuIE5hdGl2ZUltYWdlOjpjcmVhdGUoYWRvcHRD
RihDR0ltYWdlQ3JlYXRlKAogICAgICAgICAgICAgbV9iYWNrZW5kU2l6ZS53aWR0aCgpLCBtX2Jh
Y2tlbmRTaXplLmhlaWdodCgpLCA4LCAzMiwgYnl0ZXNQZXJSb3coKSwKLSAgICAgICAgICAgIGNh
Y2hlZENHQ29sb3JTcGFjZShtX2NvbG9yU3BhY2UpLCBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGll
ZEZpcnN0IHwga0NHQml0bWFwQnl0ZU9yZGVyMzJIb3N0LCBtX2RhdGFQcm92aWRlci5nZXQoKSwK
KyAgICAgICAgICAgIGNhY2hlZENHQ29sb3JTcGFjZShjb2xvclNwYWNlKCkpLCBrQ0dJbWFnZUFs
cGhhUHJlbXVsdGlwbGllZEZpcnN0IHwga0NHQml0bWFwQnl0ZU9yZGVyMzJIb3N0LCBtX2RhdGFQ
cm92aWRlci5nZXQoKSwKICAgICAgICAgICAgIDAsIHRydWUsIGtDR1JlbmRlcmluZ0ludGVudERl
ZmF1bHQpKSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQuaAppbmRleCBl
OTJjOTJmNWQ1MGZkZTU3YWFhM2NhNWMyZmYyOWRmMDhiODY0ZDI5Li42Yjc4NjExMDg1NTk3YjVl
MmFhMzdkOWQ1NWM0ZWNjYWQ3M2U4NjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5k
LmgKQEAgLTM2LDEyICszNiwxNCBAQCBjbGFzcyBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZCA6
IHB1YmxpYyBJbWFnZUJ1ZmZlckNHQmFja2VuZCB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRF
RChJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZCk7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQpOwogcHVibGljOgotICAgIHN0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ+IGNyZWF0ZShjb25zdCBGbG9hdFNp
emUmLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UsIENHQ29sb3JTcGFjZVJlZiwg
UGl4ZWxGb3JtYXQsIGNvbnN0IEhvc3RXaW5kb3cqKTsKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVf
cHRyPEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kPiBjcmVhdGUoY29uc3QgRmxvYXRTaXplJiwg
ZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlLCBQaXhlbEZvcm1hdCwgY29uc3QgSG9z
dFdpbmRvdyopOwotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJDR0JpdG1h
cEJhY2tlbmQ+IGNyZWF0ZShjb25zdCBGbG9hdFNpemUmLCBjb25zdCBHcmFwaGljc0NvbnRleHQm
KTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5k
PiBjcmVhdGUoY29uc3QgUGFyYW1ldGVycyYsIENHQ29sb3JTcGFjZVJlZiwgY29uc3QgSG9zdFdp
bmRvdyopOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJDR0JpdG1hcEJh
Y2tlbmQ+IGNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiwgY29uc3QgSG9zdFdpbmRvdyopOworICAg
IHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ+IGNyZWF0
ZShjb25zdCBQYXJhbWV0ZXJzJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0Jik7CiAKICAgICBHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQoKSBjb25zdCBvdmVycmlkZTsKIAorICAgIEludFNpemUgYmFj
a2VuZFNpemUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2JhY2tlbmRTaXplOyB9CisKICAg
ICBSZWZQdHI8TmF0aXZlSW1hZ2U+IGNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5ID0g
Q29weUJhY2tpbmdTdG9yZSkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBWZWN0b3I8dWludDhfdD4g
dG9CR1JBRGF0YSgpIGNvbnN0IG92ZXJyaWRlOwpAQCAtNTIsOCArNTQsOSBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzT3JpZ2luQXRVcHBlckxlZnRDb3JuZXIgPSB0cnVl
OwogCiBwcml2YXRlOgotICAgIEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kKGNvbnN0IEZsb2F0
U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEludFNpemUmIHBoeXNpY2FsU2l6ZSwgZmxvYXQgcmVz
b2x1dGlvblNjYWxlLCBDb2xvclNwYWNlLCBQaXhlbEZvcm1hdCwgdm9pZCogZGF0YSwgUmV0YWlu
UHRyPENHRGF0YVByb3ZpZGVyUmVmPiYmLCBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NDb250ZXh0
PiYmKTsKKyAgICBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZChjb25zdCBQYXJhbWV0ZXJzJiwg
Y29uc3QgSW50U2l6ZSYgYmFja2VuZFNpemUsIHZvaWQqIGRhdGEsIFJldGFpblB0cjxDR0RhdGFQ
cm92aWRlclJlZj4mJiwgc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzQ29udGV4dD4mJik7CiAKKyAg
ICBJbnRTaXplIG1fYmFja2VuZFNpemU7CiAgICAgdm9pZCogbV9kYXRhOwogICAgIFJldGFpblB0
cjxDR0RhdGFQcm92aWRlclJlZj4gbV9kYXRhUHJvdmlkZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRy
PEdyYXBoaWNzQ29udGV4dD4gbV9jb250ZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFj
a2VuZC5jcHAKaW5kZXggYWQzZmYxZDc5NzcyMDM3NjQwZTJkNjk5NTQxMjg4NjBiNzc0OGMzNi4u
N2E2OWM1NTNjMDAxMzZkOTc4ZjQ0YzkzMmU0YWU1ZjFlNjRmZDU4YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNr
ZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1
ZmZlcklPU3VyZmFjZUJhY2tlbmQuY3BwCkBAIC02NCwxMyArNjQsMTMgQEAgUmV0YWluUHRyPENH
Q29sb3JTcGFjZVJlZj4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpjb250ZXh0Q29sb3JT
cGFjZShjb25zdAogICAgIHJldHVybiBJbWFnZUJ1ZmZlckNHQmFja2VuZDo6Y29udGV4dENvbG9y
U3BhY2UoY29udGV4dCk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcklPU3VyZmFj
ZUJhY2tlbmQ+IEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlKGNvbnN0IEZsb2F0
U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2Us
IENHQ29sb3JTcGFjZVJlZiBjZ0NvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBj
b25zdCBIb3N0V2luZG93KiBob3N0V2luZG93KQorc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVy
SU9TdXJmYWNlQmFja2VuZD4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGUoY29u
c3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycywgQ0dDb2xvclNwYWNlUmVmIGNnQ29sb3JTcGFjZSwg
Y29uc3QgSG9zdFdpbmRvdyogaG9zdFdpbmRvdykKIHsKLSAgICBJbnRTaXplIGJhY2tlbmRTaXpl
ID0gY2FsY3VsYXRlQmFja2VuZFNpemUoc2l6ZSwgcmVzb2x1dGlvblNjYWxlKTsKKyAgICBJbnRT
aXplIGJhY2tlbmRTaXplID0gY2FsY3VsYXRlQmFja2VuZFNpemUocGFyYW1ldGVycy5sb2dpY2Fs
U2l6ZSwgcGFyYW1ldGVycy5yZXNvbHV0aW9uU2NhbGUpOwogICAgIGlmIChiYWNrZW5kU2l6ZS5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgYXV0byBzdXJmYWNlID0g
SU9TdXJmYWNlOjpjcmVhdGUoYmFja2VuZFNpemUsIGJhY2tlbmRTaXplLCBjZ0NvbG9yU3BhY2Us
IElPU3VyZmFjZTo6Zm9ybWF0Rm9yUGl4ZWxGb3JtYXQocGl4ZWxGb3JtYXQpKTsKKyAgICBhdXRv
IHN1cmZhY2UgPSBJT1N1cmZhY2U6OmNyZWF0ZShiYWNrZW5kU2l6ZSwgYmFja2VuZFNpemUsIGNn
Q29sb3JTcGFjZSwgSU9TdXJmYWNlOjpmb3JtYXRGb3JQaXhlbEZvcm1hdChwYXJhbWV0ZXJzLnBp
eGVsRm9ybWF0KSk7CiAgICAgaWYgKCFzdXJmYWNlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IApAQCAtODAsMjQgKzgwLDI0IEBAIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcklPU3VyZmFj
ZUJhY2tlbmQ+IEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlCiAKICAgICBDR0Nv
bnRleHRDbGVhclJlY3QoY2dDb250ZXh0LmdldCgpLCBGbG9hdFJlY3QoRmxvYXRQb2ludDo6emVy
bygpLCBiYWNrZW5kU2l6ZSkpOwogCi0gICAgcmV0dXJuIG1ha2VVbmlxdWU8SW1hZ2VCdWZmZXJJ
T1N1cmZhY2VCYWNrZW5kPihzaXplLCBiYWNrZW5kU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xv
clNwYWNlLCBwaXhlbEZvcm1hdCwgV1RGTW92ZShzdXJmYWNlKSk7CisgICAgcmV0dXJuIG1ha2VV
bmlxdWU8SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kPihwYXJhbWV0ZXJzLCBXVEZNb3ZlKHN1
cmZhY2UpKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2Vu
ZD4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGUoY29uc3QgRmxvYXRTaXplJiBz
aXplLCBjb25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCitzdGQ6OnVuaXF1ZV9wdHI8SW1h
Z2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kPiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNy
ZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBjb25zdCBHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQpCiB7CiAgICAgaWYgKGF1dG8gY2dDb2xvclNwYWNlID0gY29udGV4dENvbG9yU3Bh
Y2UoY29udGV4dCkpCi0gICAgICAgIHJldHVybiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6
OmNyZWF0ZShzaXplLCAxLCBDb2xvclNwYWNlOjpTUkdCLCBjZ0NvbG9yU3BhY2UuZ2V0KCksIFBp
eGVsRm9ybWF0OjpCR1JBOCwgbnVsbHB0cik7Ci0gICAgCi0gICAgcmV0dXJuIEltYWdlQnVmZmVy
SU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlKHNpemUsIDEsIENvbG9yU3BhY2U6OlNSR0IsIFBpeGVs
Rm9ybWF0OjpCR1JBOCwgbnVsbHB0cik7CisgICAgICAgIHJldHVybiBJbWFnZUJ1ZmZlcklPU3Vy
ZmFjZUJhY2tlbmQ6OmNyZWF0ZShwYXJhbWV0ZXJzLCBjZ0NvbG9yU3BhY2UuZ2V0KCksIG51bGxw
dHIpOworCisgICAgcmV0dXJuIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlKHBh
cmFtZXRlcnMsIG51bGxwdHIpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJJT1N1
cmZhY2VCYWNrZW5kPiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZShjb25zdCBG
bG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNw
YWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgY29uc3QgSG9zdFdpbmRvdyogaG9zdFdpbmRv
dykKK3N0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ+IEltYWdlQnVm
ZmVySU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMs
IGNvbnN0IEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cpCiB7Ci0gICAgcmV0dXJuIEltYWdlQnVmZmVy
SU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlKHNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFj
ZSwgY2FjaGVkQ0dDb2xvclNwYWNlKGNvbG9yU3BhY2UpLCBwaXhlbEZvcm1hdCwgaG9zdFdpbmRv
dyk7CisgICAgcmV0dXJuIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlKHBhcmFt
ZXRlcnMsIGNhY2hlZENHQ29sb3JTcGFjZShwYXJhbWV0ZXJzLmNvbG9yU3BhY2UpLCBob3N0V2lu
ZG93KTsKIH0KIAotSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpJbWFnZUJ1ZmZlcklPU3Vy
ZmFjZUJhY2tlbmQoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50U2l6ZSYg
YmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNl
LCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4mJiBz
dXJmYWNlKQotICAgIDogSW1hZ2VCdWZmZXJDR0JhY2tlbmQobG9naWNhbFNpemUsIGJhY2tlbmRT
aXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0KQorSW1hZ2VCdWZm
ZXJJT1N1cmZhY2VCYWNrZW5kOjpJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQoY29uc3QgUGFy
YW1ldGVycyYgcGFyYW1ldGVycywgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4mJiBzdXJmYWNl
KQorICAgIDogSW1hZ2VCdWZmZXJDR0JhY2tlbmQocGFyYW1ldGVycykKICAgICAsIG1fc3VyZmFj
ZShXVEZNb3ZlKHN1cmZhY2UpKQogewogICAgIEFTU0VSVChtX3N1cmZhY2UpOwpAQCAtMTIwLDYg
KzEyMCwxMSBAQCB2b2lkIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Zmx1c2hDb250ZXh0
KCkKICAgICBDR0NvbnRleHRGbHVzaChjb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCkpOwogfQog
CitJbnRTaXplIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6YmFja2VuZFNpemUoKSBjb25z
dAoreworICAgIHJldHVybiBtX3N1cmZhY2UtPnNpemUoKTsKK30KKwogc2l6ZV90IEltYWdlQnVm
ZmVySU9TdXJmYWNlQmFja2VuZDo6bWVtb3J5Q29zdCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1f
c3VyZmFjZS0+dG90YWxCeXRlcygpOwpAQCAtMTQ4LDEwICsxNTMsMTAgQEAgUmVmUHRyPE5hdGl2
ZUltYWdlPiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OnNpbmtJbnRvTmF0aXZlSW1hZ2Uo
KQogdm9pZCBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmRyYXdDb25zdW1pbmcoR3JhcGhp
Y3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykK
IHsKICAgICBGbG9hdFJlY3QgYWRqdXN0ZWRTcmNSZWN0ID0gc3JjUmVjdDsKLSAgICBhZGp1c3Rl
ZFNyY1JlY3Quc2NhbGUobV9yZXNvbHV0aW9uU2NhbGUpOworICAgIGFkanVzdGVkU3JjUmVjdC5z
Y2FsZShyZXNvbHV0aW9uU2NhbGUoKSk7CiAKICAgICBpZiAoYXV0byBpbWFnZSA9IHNpbmtJbnRv
TmF0aXZlSW1hZ2UoKSkKLSAgICAgICAgZGVzdENvbnRleHQuZHJhd05hdGl2ZUltYWdlKCppbWFn
ZSwgbV9iYWNrZW5kU2l6ZSwgZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVjdCwgb3B0aW9ucyk7Cisg
ICAgICAgIGRlc3RDb250ZXh0LmRyYXdOYXRpdmVJbWFnZSgqaW1hZ2UsIGJhY2tlbmRTaXplKCks
IGRlc3RSZWN0LCBhZGp1c3RlZFNyY1JlY3QsIG9wdGlvbnMpOwogfQogCiBSZXRhaW5QdHI8Q0ZE
YXRhUmVmPiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OnRvQ0ZEYXRhKGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSwgUHJlc2VydmVSZXNvbHV0aW9u
IHByZXNlcnZlUmVzb2x1dGlvbikgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5k
LmgKaW5kZXggZGU5ODIxMTFlNTJjMTJlZGIwOGRjNzg4YjUwZWNlZmIzNjUwNzY1MC4uNDg1OWRm
NmZjNTI1ZDg1YzMyOGMxNDVmMDc5MTc4MzU2OTA5ZTI1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1
cmZhY2VCYWNrZW5kLmgKQEAgLTM5LDE1ICszOSwxNyBAQCBjbGFzcyBXRUJDT1JFX0VYUE9SVCBJ
bWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQgOiBwdWJsaWMgSW1hZ2VCdWZmZXJDR0JhY2tlbmQg
ewogcHVibGljOgogICAgIHN0YXRpYyBJbnRTaXplIGNhbGN1bGF0ZUJhY2tlbmRTaXplKGNvbnN0
IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSk7CiAKLSAgICBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZD4gY3JlYXRl
KGNvbnN0IEZsb2F0U2l6ZSYsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSwgQ0dD
b2xvclNwYWNlUmVmLCBQaXhlbEZvcm1hdCwgY29uc3QgSG9zdFdpbmRvdyopOwotICAgIHN0YXRp
YyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kPiBjcmVhdGUoY29u
c3QgRmxvYXRTaXplJiwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlLCBQaXhlbEZv
cm1hdCwgY29uc3QgSG9zdFdpbmRvdyopOwotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1h
Z2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kPiBjcmVhdGUoY29uc3QgRmxvYXRTaXplJiwgY29uc3Qg
R3JhcGhpY3NDb250ZXh0Jik7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZl
cklPU3VyZmFjZUJhY2tlbmQ+IGNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiwgQ0dDb2xvclNwYWNl
UmVmLCBjb25zdCBIb3N0V2luZG93Kik7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFn
ZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ+IGNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiwgY29uc3Qg
SG9zdFdpbmRvdyopOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJJT1N1
cmZhY2VCYWNrZW5kPiBjcmVhdGUoY29uc3QgUGFyYW1ldGVycyYsIGNvbnN0IEdyYXBoaWNzQ29u
dGV4dCYpOwogCi0gICAgSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kKGNvbnN0IEZsb2F0U2l6
ZSYgbG9naWNhbFNpemUsIGNvbnN0IEludFNpemUmIHBoeXNpY2FsU2l6ZSwgZmxvYXQgcmVzb2x1
dGlvblNjYWxlLCBDb2xvclNwYWNlLCBQaXhlbEZvcm1hdCwgc3RkOjp1bmlxdWVfcHRyPElPU3Vy
ZmFjZT4mJik7CisgICAgSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kKGNvbnN0IFBhcmFtZXRl
cnMmLCBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiYmKTsKIAogICAgIEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgZmx1c2hDb250ZXh0KCkgb3Zl
cnJpZGU7CiAKKyAgICBJbnRTaXplIGJhY2tlbmRTaXplKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAg
CiAgICAgc2l6ZV90IG1lbW9yeUNvc3QoKSBjb25zdCBvdmVycmlkZTsKICAgICBzaXplX3QgZXh0
ZXJuYWxNZW1vcnlDb3N0KCkgY29uc3Qgb3ZlcnJpZGU7CiAKQEAgLTY5LDcgKzcxLDcgQEAgcHVi
bGljOgogICAgIHZvaWQgcmVsZWFzZUJ1ZmZlclRvUG9vbCgpIG92ZXJyaWRlOwogCiAgICAgc3Rh
dGljIGNvbnN0ZXhwciBib29sIGlzT3JpZ2luQXRVcHBlckxlZnRDb3JuZXIgPSB0cnVlOwotICAg
IHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0FjY2VsZXJhdGVkID0gdHJ1ZTsKKyAgICBzdGF0aWMg
Y29uc3RleHByIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSA9IFJlbmRlcmluZ01vZGU6OkFj
Y2VsZXJhdGVkOwogCiBwcm90ZWN0ZWQ6CiAgICAgc3RhdGljIFJldGFpblB0cjxDR0NvbG9yU3Bh
Y2VSZWY+IGNvbnRleHRDb2xvclNwYWNlKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3QuaAppbmRleCAyNmZjOTczMDcyMTEyNzMwMzkzZTJkY2JjODdkMGM2YjljYTU0
MjU4Li4xNmIxOTdmOWVlMmQyOGRiZTkyMWQ5MzA5NDNkNDMwNDYxZGZjZDg2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3QuaApAQCAtMzMsNyArMzMsNiBAQAogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9j
Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUu
aD4KLSNpbmNsdWRlIDx3dGYvT2JqZWN0SWRlbnRpZmllci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtNDUsOSArNDQsNiBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIG5hbWVzcGFjZSBEaXNwbGF5TGlzdCB7CiAKLWVudW0g
Rmx1c2hJZGVudGlmaWVyVHlwZSB7IH07Ci11c2luZyBGbHVzaElkZW50aWZpZXIgPSBPYmplY3RJ
ZGVudGlmaWVyPEZsdXNoSWRlbnRpZmllclR5cGU+OwotCiBlbnVtIEFzVGV4dEZsYWcgewogICAg
IE5vbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAwLAogICAgIEluY2x1ZGVzUGxhdGZv
cm1PcGVyYXRpb25zICAgICAgPSAxIDw8IDAsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RGbHVzaElkZW50aWZpZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdEZsdXNoSWRlbnRpZmllci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjljZjc4MTY4ZWJiN2ZjNzM3YjliNGE2
Y2Y4ZDUzNzI5ZjVhMDYwZWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RGbHVzaElkZW50aWZpZXIuaApA
QCAtMCwwICsxLDM5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3
dGYvT2JqZWN0SWRlbnRpZmllci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFj
ZSBEaXNwbGF5TGlzdCB7CisKK2VudW0gRmx1c2hJZGVudGlmaWVyVHlwZSB7IH07Cit1c2luZyBG
bHVzaElkZW50aWZpZXIgPSBPYmplY3RJZGVudGlmaWVyPEZsdXNoSWRlbnRpZmllclR5cGU+Owor
Cit9IC8vIERpc3BsYXlMaXN0CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dEltYWdlQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oCmluZGV4IGY1YjIyMzQwMmFlYjM3NzI4Yjcz
MDFmYjY2NzExOGEzYjJlOGIwNDAuLjM0MzExZDUyNzc4ZWFmMjM3MDkxMWQ1MDI2MmI4Nzk4MWFj
NjE1ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdEltYWdlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXIuaApAQCAt
MzQsNiArMzQsNyBAQCBuYW1lc3BhY2UgRGlzcGxheUxpc3QgewogdGVtcGxhdGU8dHlwZW5hbWUg
QmFja2VuZFR5cGU+CiBjbGFzcyBJbWFnZUJ1ZmZlciA6IHB1YmxpYyBDb25jcmV0ZUltYWdlQnVm
ZmVyPEJhY2tlbmRUeXBlPiB7CiAgICAgdXNpbmcgQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXIgPSBD
b25jcmV0ZUltYWdlQnVmZmVyPEJhY2tlbmRUeXBlPjsKKyAgICB1c2luZyBCYXNlQ29uY3JldGVJ
bWFnZUJ1ZmZlcjo6bG9naWNhbFNpemU7CiAKIHB1YmxpYzoKICAgICBzdGF0aWMgYXV0byBjcmVh
dGUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3Bh
Y2UgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIGNvbnN0IEhvc3RXaW5kb3cq
IGhvc3RXaW5kb3cpCkBAIC00NiwxNCArNDcsMTUgQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
QmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXI6OnRlbXBsYXRlIGNyZWF0ZTxJbWFnZUJ1ZmZlcj4oc2l6
ZSwgY29udGV4dCwgc2l6ZSk7CiAgICAgfQogCi0gICAgSW1hZ2VCdWZmZXIoc3RkOjp1bmlxdWVf
cHRyPEJhY2tlbmRUeXBlPiYmIGRhdGFCYWNrZW5kLCBjb25zdCBGbG9hdFNpemUmIHNpemUpCi0g
ICAgICAgIDogQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXIoV1RGTW92ZShkYXRhQmFja2VuZCkpCisg
ICAgSW1hZ2VCdWZmZXIoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQmFja2VuZDo6UGFyYW1l
dGVycz4mJiBwYXJhbWV0ZXJzLCBzdGQ6OnVuaXF1ZV9wdHI8QmFja2VuZFR5cGU+JiYgZGF0YUJh
Y2tlbmQsIGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKKyAgICAgICAgOiBCYXNlQ29uY3JldGVJbWFn
ZUJ1ZmZlcihXVEZNb3ZlKHBhcmFtZXRlcnMpLCBXVEZNb3ZlKGRhdGFCYWNrZW5kKSkKICAgICAg
ICAgLCBtX2RyYXdpbmdDb250ZXh0KHNpemUsIGluaXRpYWxEcmF3aW5nQ29udGV4dENUTShzaXpl
KSkKICAgICB7CiAgICAgfQogCi0gICAgSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXpl
LCBSZWNvcmRlcjo6RGVsZWdhdGUqIGRlbGVnYXRlID0gbnVsbHB0cikKLSAgICAgICAgOiBtX2Ry
YXdpbmdDb250ZXh0KHNpemUsIGluaXRpYWxEcmF3aW5nQ29udGV4dENUTShzaXplKSwgZGVsZWdh
dGUpCisgICAgSW1hZ2VCdWZmZXIoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQmFja2VuZDo6
UGFyYW1ldGVycz4mJiBwYXJhbWV0ZXJzLCBSZWNvcmRlcjo6RGVsZWdhdGUqIGRlbGVnYXRlID0g
bnVsbHB0cikKKyAgICAgICAgOiBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZlcihXVEZNb3ZlKHBhcmFt
ZXRlcnMpKQorICAgICAgICAsIG1fZHJhd2luZ0NvbnRleHQobG9naWNhbFNpemUoKSwgaW5pdGlh
bERyYXdpbmdDb250ZXh0Q1RNKGxvZ2ljYWxTaXplKCkpLCBkZWxlZ2F0ZSkKICAgICB7CiAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1h
Z2VCdWZmZXJEaXJlY3QyREJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kLmNwcAppbmRleCAzNzhhYWY0YzQw
YzRlMTIyYWNiZTA2OTQzMmM3YWQ3ZWMyMDllZDczLi4wMWQyZTc4MDI4NWIxMWZlYzM5YjRjZDI2
YmY0Y2ZmZjA4MDczMzc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZC5jcHAK
QEAgLTE3MSw3ICsxNzEsNyBAQCBzdGF0aWMgUmVmUHRyPEltYWdlPiBjcmVhdGVCaXRtYXBJbWFn
ZUFmdGVyU2NhbGluZ0lmTmVlZGVkKElEMkQxQml0bWFwUmVuZGVyVGFyZwogUmVmUHRyPEltYWdl
PiBJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6Y29weUltYWdlKEJhY2tpbmdTdG9yZUNvcHkg
Y29weUJlaGF2aW9yLCBQcmVzZXJ2ZVJlc29sdXRpb24gcHJlc2VydmVSZXNvbHV0aW9uKSBjb25z
dAogewogICAgIFBsYXRmb3JtSW1hZ2VQdHIgaW1hZ2U7Ci0gICAgaWYgKG1fcmVzb2x1dGlvblNj
YWxlID09IDEgfHwgcHJlc2VydmVSZXNvbHV0aW9uID09IFByZXNlcnZlUmVzb2x1dGlvbjo6WWVz
KQorICAgIGlmIChyZXNvbHV0aW9uU2NhbGUoKSA9PSAxIHx8IHByZXNlcnZlUmVzb2x1dGlvbiA9
PSBQcmVzZXJ2ZVJlc29sdXRpb246OlllcykKICAgICAgICAgaW1hZ2UgPSBjb3B5TmF0aXZlSW1h
Z2UoY29weUJlaGF2aW9yKS0+cGxhdGZvcm1JbWFnZSgpOwogICAgIGVsc2UKICAgICAgICAgaW1h
Z2UgPSBjb3B5TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpLT5wbGF0Zm9ybUltYWdl
KCk7CkBAIC0yNjksNyArMjY5LDcgQEAgUGxhdGZvcm1JbWFnZVB0ciBJbWFnZUJ1ZmZlckRpcmVj
dDJEQmFja2VuZDo6Y29tcGF0aWJsZUJpdG1hcChJRDJEMVJlbmRlclRhcmdldCoKIHZvaWQgSW1h
Z2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4
dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBGbG9hdFJlY3QgYWRq
dXN0ZWRTcmNSZWN0ID0gc3JjUmVjdDsKLSAgICBhZGp1c3RlZFNyY1JlY3Quc2NhbGUobV9yZXNv
bHV0aW9uU2NhbGUsIG1fcmVzb2x1dGlvblNjYWxlKTsKKyAgICBhZGp1c3RlZFNyY1JlY3Quc2Nh
bGUocmVzb2x1dGlvblNjYWxlKCkpOwogCiAgICAgYXV0byBjb21wYXRpYmxlQml0bWFwID0gY29t
cGF0aWJsZUJpdG1hcChkZXN0Q29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKS0+cmVuZGVyVGFyZ2V0
KCkpOwogCkBAIC0yODMsNyArMjgzLDcgQEAgdm9pZCBJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2Vu
ZDo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFIKIHZvaWQg
SW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYg
ZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBG
bG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBGbG9hdFJlY3QgYWRqdXN0ZWRTcmNSZWN0
ID0gc3JjUmVjdDsKLSAgICBhZGp1c3RlZFNyY1JlY3Quc2NhbGUobV9yZXNvbHV0aW9uU2NhbGUp
OworICAgIGFkanVzdGVkU3JjUmVjdC5zY2FsZShyZXNvbHV0aW9uU2NhbGUoKSk7CiAKICAgICBp
ZiAoYXV0byBpbWFnZSA9IGNvcHlJbWFnZSgmZGVzdENvbnRleHQgPT0gJmNvbnRleHQoKSA/IENv
cHlCYWNraW5nU3RvcmUgOiBEb250Q29weUJhY2tpbmdTdG9yZSkpCiAgICAgICAgIGltYWdlLT5k
cmF3UGF0dGVybihkZXN0Q29udGV4dCwgZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVjdCwgcGF0dGVy
blRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIG9wdGlvbnMpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmggYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaAppbmRleCA1Yzc1
NDViZmU2NjkyNjIwZDAxM2ZkYzg4NmQ3NWVmMzljODFhZmRkLi44MmZmYzYwZjkxZGQyMGZhOTZj
MGRiNGNhMDc5ZDc4ZGY4ZGI0OGU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaApAQCAtNDksMTIgKzQ5LDEyIEBAIHB1
YmxpYzoKICAgICAgICAgcmV0dXJuIEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyOjp0ZW1wbGF0ZSBj
cmVhdGU8UmVtb3RlSW1hZ2VCdWZmZXI+KHNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFj
ZSwgcGl4ZWxGb3JtYXQsIG51bGxwdHIsIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmQsIHJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAgfQogCi0gICAgUmVtb3RlSW1hZ2VCdWZmZXIoc3Rk
Ojp1bmlxdWVfcHRyPEJhY2tlbmRUeXBlPiYmIGJhY2tlbmQsIFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmQmIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmQsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCi0gICAgICAgIDogQmFzZUNvbmNy
ZXRlSW1hZ2VCdWZmZXIoV1RGTW92ZShiYWNrZW5kKSwgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyKQorICAgIFJlbW90ZUltYWdlQnVmZmVyKHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJbWFn
ZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnM+JiYgcGFyYW1ldGVycywgc3RkOjp1bmlxdWVfcHRy
PEJhY2tlbmRUeXBlPiYmIGJhY2tlbmQsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQmIHJlbW90ZVJl
bmRlcmluZ0JhY2tlbmQsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCisgICAgICAgIDogQmFzZUNvbmNyZXRlSW1hZ2VCdWZm
ZXIoV1RGTW92ZShwYXJhbWV0ZXJzKSwgV1RGTW92ZShiYWNrZW5kKSwgcmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyKQogICAgICAgICAsIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZChyZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kKQogICAgICAgICAsIG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
KHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKICAgICB7Ci0gICAgICAgIG1fcmVtb3RlUmVu
ZGVyaW5nQmFja2VuZC5pbWFnZUJ1ZmZlckJhY2tlbmRXYXNDcmVhdGVkKG1fYmFja2VuZC0+bG9n
aWNhbFNpemUoKSwgbV9iYWNrZW5kLT5iYWNrZW5kU2l6ZSgpLCBtX2JhY2tlbmQtPnJlc29sdXRp
b25TY2FsZSgpLCBtX2JhY2tlbmQtPmNvbG9yU3BhY2UoKSwgbV9iYWNrZW5kLT5waXhlbEZvcm1h
dCgpLCBtX2JhY2tlbmQtPmNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSgpLCByZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIpOworICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQu
ZGlkQ3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kKG1fYmFja2VuZC0+Y3JlYXRlSW1hZ2VCdWZmZXJC
YWNrZW5kSGFuZGxlKCksIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAgfQogCiAg
ICAgflJlbW90ZUltYWdlQnVmZmVyKCkKQEAgLTY1LDE3ICs2NSw2IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgIGNvbnRleHQoKS5yZXN0b3JlKCk7CiAgICAgfQogCi0gICAgV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OlJlcGxheVJlc3VsdCBzdWJtaXREaXNwbGF5TGlzdChjb25zdCBXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6RGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0KQotICAgIHsKLSAgICAgICAgaWYgKGRp
c3BsYXlMaXN0LmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHJldHVybiB7IH07Ci0KLSAgICAgICAg
Y29uc3QgYXV0byYgaW1hZ2VCdWZmZXJzID0gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLnJlbW90
ZVJlc291cmNlQ2FjaGUoKS5pbWFnZUJ1ZmZlcnMoKTsKLSAgICAgICAgY29uc3QgYXV0byYgbmF0
aXZlSW1hZ2VzID0gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLnJlbW90ZVJlc291cmNlQ2FjaGUo
KS5uYXRpdmVJbWFnZXMoKTsKLSAgICAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlcGxheWVy
IHJlcGxheWVyIHsgQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXI6OmNvbnRleHQoKSwgZGlzcGxheUxp
c3QsICZpbWFnZUJ1ZmZlcnMsICZuYXRpdmVJbWFnZXMsIHRoaXMgfTsKLSAgICAgICAgcmV0dXJu
IHJlcGxheWVyLnJlcGxheSgpOwotICAgIH0KLQogcHJpdmF0ZToKICAgICBib29sIGFwcGx5KFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtSGFuZGxlIGl0ZW0sIFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCkgb3ZlcnJpZGUKICAgICB7CkBAIC0xMDEsNiArOTAsMTcgQEAgcHJpdmF0
ZToKICAgICAgICAgcmV0dXJuIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC5hcHBseU1lZGlhSXRl
bShpdGVtLCBjb250ZXh0KTsKICAgICB9CiAKKyAgICB2b2lkIHN1Ym1pdERpc3BsYXlMaXN0KGNv
bnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QpIG92ZXJy
aWRlCisgICAgeworICAgICAgICBpZiAoZGlzcGxheUxpc3QuaXNFbXB0eSgpKQorICAgICAgICAg
ICAgcmV0dXJuOworCisgICAgICAgIGNvbnN0IGF1dG8mIGltYWdlQnVmZmVycyA9IG1fcmVtb3Rl
UmVuZGVyaW5nQmFja2VuZC5yZW1vdGVSZXNvdXJjZUNhY2hlKCkuaW1hZ2VCdWZmZXJzKCk7Cisg
ICAgICAgIGNvbnN0IGF1dG8mIG5hdGl2ZUltYWdlcyA9IG1fcmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZC5yZW1vdGVSZXNvdXJjZUNhY2hlKCkubmF0aXZlSW1hZ2VzKCk7CisgICAgICAgIFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpSZXBsYXllciByZXBsYXllciB7IEJhc2VDb25jcmV0ZUltYWdlQnVmZmVy
Ojpjb250ZXh0KCksIGRpc3BsYXlMaXN0LCAmaW1hZ2VCdWZmZXJzLCAmbmF0aXZlSW1hZ2VzLCB0
aGlzIH07CisgICAgICAgIHJlcGxheWVyLnJlcGxheSgpOworICAgIH0KKwogICAgIFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmQmIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZDsKICAgICBXZWJDb3JlOjpS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgbV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI7
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZVJlbmRlcmluZ0JhY2tlbmQuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCmluZGV4IGY1OWMzODcyNGY4ZjYyZWU3ODAyYjky
MDIzN2Y2ODg0NzNkN2ZiZjkuLmQyNzY5ODY5MTg1YzYzM2JiZTBhZWEwOWQ3Njk1MDc0NGEyMTU0
NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKQEAgLTk5LDkgKzk5LDkgQEAgYm9vbCBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kOjphcHBseU1lZGlhSXRlbShEaXNwbGF5TGlzdDo6SXRlbUhhbmRs
ZSBpdGVtLCBHcmFwaGkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kOjppbWFnZUJ1ZmZlckJhY2tlbmRXYXNDcmVhdGVkKGNvbnN0IEZsb2F0U2l6ZSYg
bG9naWNhbFNpemUsIGNvbnN0IEludFNpemUmIGJhY2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9u
U2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIElt
YWdlQnVmZmVyQmFja2VuZEhhbmRsZSBoYW5kbGUsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
ciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmQ6OmRpZENyZWF0ZUltYWdlQnVmZmVyQmFja2VuZChJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUg
aGFuZGxlLCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eTo6SW1hZ2VCdWZmZXJCYWNrZW5kV2FzQ3JlYXRlZChsb2dpY2FsU2l6ZSwgYmFja2VuZFNpemUs
IHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQsIFdURk1vdmUoaGFuZGxl
KSwgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRp
Zmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpE
aWRDcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQoV1RGTW92ZShoYW5kbGUpLCByZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIpLCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKIH0KIAogdm9p
ZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpkaWRGbHVzaChEaXNwbGF5TGlzdDo6Rmx1c2hJZGVu
dGlmaWVyIGZsdXNoSWRlbnRpZmllciwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcikKQEAgLTE0OCwxMCArMTQ4LDcgQEAgdm9pZCBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kOjphcHBseURpc3BsYXlMaXN0c0Zyb21IYW5kbGUoSW1hZ2VCdWZmZXIm
IGRlc3RpbmF0aW8KICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGlm
IChkZXN0aW5hdGlvbi5pc0FjY2VsZXJhdGVkKCkpCi0gICAgICAgICAgICBzdGF0aWNfY2FzdDxB
Y2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyJj4oZGVzdGluYXRpb24pLnN1Ym1pdERpc3BsYXlM
aXN0KCpkaXNwbGF5TGlzdCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHN0YXRpY19jYXN0
PFVuYWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlciY+KGRlc3RpbmF0aW9uKS5zdWJtaXREaXNw
bGF5TGlzdCgqZGlzcGxheUxpc3QpOworICAgICAgICBkZXN0aW5hdGlvbi5zdWJtaXREaXNwbGF5
TGlzdCgqZGlzcGxheUxpc3QpOwogCiAgICAgICAgIENoZWNrZWRTaXplIGNoZWNrZWRPZmZzZXQg
PSBvZmZzZXQ7CiAgICAgICAgIGNoZWNrZWRPZmZzZXQgKz0gc2l6ZVRvUmVhZDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5n
QmFja2VuZC5oCmluZGV4IDY0MDY2NjhmYWUwNTA1N2U5ZGYzMjY0ZjU3NTI0OTQ4OWQ3MDVjNzgu
LjU5MTllOTU2NGY2NjNkZjM5ZmZiM2MxNWIxNWEzYjhjMzIzMGY1ZmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgK
KysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQuaApAQCAtNzAsNyArNzAsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBhcHBseU1lZGlhSXRl
bShXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZSwgV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0Jik7CiAKICAgICAvLyBNZXNzYWdlcyB0byBiZSBzZW50LgotICAgIHZvaWQgaW1hZ2VCdWZm
ZXJCYWNrZW5kV2FzQ3JlYXRlZChjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxTaXpl
LCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNj
YWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlLCBXZWJDb3JlOjpQaXhlbEZvcm1hdCwgSW1hZ2VCdWZm
ZXJCYWNrZW5kSGFuZGxlLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwor
ICAgIHZvaWQgZGlkQ3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kKEltYWdlQnVmZmVyQmFja2VuZEhh
bmRsZSwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB2b2lkIGRp
ZEZsdXNoKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpGbHVzaElkZW50aWZpZXIsIFdlYkNvcmU6OlJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAKICAgICB2b2lkIHNldE5leHRJdGVtQnVmZmVy
VG9SZWFkKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllcik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJC
YWNraW5nU3RvcmUubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVt
b3RlTGF5ZXJCYWNraW5nU3RvcmUubW0KaW5kZXggZWY5NGM2YjAyMDUwNDNkMzcxYmYwZjk2OTZj
OGQ4Y2E2MzZjMDEyNS4uNWY0NGEzOWJjMGMxNzQyNTZkNjc0OTlhYmE1ZjM0MGJiZjNlN2U3MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxh
eWVyQmFja2luZ1N0b3JlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVy
VHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbQpAQCAtMzE1LDggKzMxNSw3IEBAIGJvb2wg
UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmRpc3BsYXkoKQogCiAgICAgbV9sYXllci0+b3duZXIo
KS0+cGxhdGZvcm1DQUxheWVyTGF5ZXJEaWREaXNwbGF5KG1fbGF5ZXIpOwogCi0gICAgLy8gRklY
TUU6IFRoaXMgbWV0aG9kIGhhcyBhIHdlaXJkIG5hbWUuIFRoaXMgaXMgInN1Ym1pdCB3b3JrIi4K
LSAgICBtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVyLT5mbHVzaERyYXdpbmdDb250ZXh0QW5kQ29t
bWl0KCk7CisgICAgbV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlci0+c3VibWl0RHJhd2luZ0NvbnRl
eHQoKTsKIAogICAgIG1fZnJvbnRCdWZmZXJGbHVzaGVyID0gbV9mcm9udEJ1ZmZlci5pbWFnZUJ1
ZmZlci0+Y3JlYXRlRmx1c2hlcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVh
YmxlQml0bWFwQmFja2VuZC5jcHAKaW5kZXggODU1Yzg5NDk2NmM1ODdiYjBlNmFlYzUxMTlkZTRi
OTQ0NTA4N2Q0Yi4uNGM5NjQyYzMxZDczOTcxYmQ3YWY0NWJmNTU1MmViZjFmZTNjNDcxMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZl
clNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcApAQCAt
NDMsMTcgKzQzLDE3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBXVEZfTUFLRV9JU09f
QUxMT0NBVEVEX0lNUEwoSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kKTsKIAotc3Rk
Ojp1bmlxdWVfcHRyPEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZD4gSW1hZ2VCdWZm
ZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpjcmVhdGUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBm
bG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQg
cGl4ZWxGb3JtYXQsIGNvbnN0IEhvc3RXaW5kb3cqKQorc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVm
ZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZD4gSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNr
ZW5kOjpjcmVhdGUoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycywgY29uc3QgSG9zdFdpbmRv
dyopCiB7Ci0gICAgQVNTRVJUKHBpeGVsRm9ybWF0ID09IFBpeGVsRm9ybWF0OjpCR1JBOCk7Cisg
ICAgQVNTRVJUKHBhcmFtZXRlcnMucGl4ZWxGb3JtYXQgPT0gUGl4ZWxGb3JtYXQ6OkJHUkE4KTsK
IAotICAgIEludFNpemUgYmFja2VuZFNpemUgPSBjYWxjdWxhdGVCYWNrZW5kU2l6ZShzaXplLCBy
ZXNvbHV0aW9uU2NhbGUpOworICAgIEludFNpemUgYmFja2VuZFNpemUgPSBjYWxjdWxhdGVCYWNr
ZW5kU2l6ZShwYXJhbWV0ZXJzLmxvZ2ljYWxTaXplLCBwYXJhbWV0ZXJzLnJlc29sdXRpb25TY2Fs
ZSk7CiAgICAgaWYgKGJhY2tlbmRTaXplLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKICAgICBTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbjsK
ICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBjb25maWd1cmF0aW9uLmNvbG9yU3BhY2UgPSB7IGNh
Y2hlZENHQ29sb3JTcGFjZShjb2xvclNwYWNlKSB9OworICAgIGNvbmZpZ3VyYXRpb24uY29sb3JT
cGFjZSA9IHsgY2FjaGVkQ0dDb2xvclNwYWNlKHBhcmFtZXRlcnMuY29sb3JTcGFjZSkgfTsKICNl
bmRpZgogICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUo
YmFja2VuZFNpemUsIGNvbmZpZ3VyYXRpb24pOwogICAgIGlmICghYml0bWFwKQpAQCAtNjMsMTAg
KzYzLDEwIEBAIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tl
bmQ+IEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFjCiAgICAgaWYgKCFjb250ZXh0KQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBtYWtlVW5pcXVlPEltYWdlQnVmZmVy
U2hhcmVhYmxlQml0bWFwQmFja2VuZD4oc2l6ZSwgYmFja2VuZFNpemUsIHJlc29sdXRpb25TY2Fs
ZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQsIFdURk1vdmUoYml0bWFwKSwgV1RGTW92ZShjb250
ZXh0KSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBC
YWNrZW5kPihwYXJhbWV0ZXJzLCBXVEZNb3ZlKGJpdG1hcCksIFdURk1vdmUoY29udGV4dCkpOwog
fQogCi1zdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kPiBJ
bWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmNyZWF0ZShjb25zdCBGbG9hdFNpemUm
IGxvZ2ljYWxTaXplLCBjb25zdCBJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlv
blNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBJ
bWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgaGFuZGxlKQorc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVm
ZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZD4gSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNr
ZW5kOjpjcmVhdGUoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycywgSW1hZ2VCdWZmZXJCYWNr
ZW5kSGFuZGxlIGhhbmRsZSkKIHsKICAgICBpZiAoIVdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8U2hh
cmVhYmxlQml0bWFwOjpIYW5kbGU+KGhhbmRsZSkpIHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CkBAIC04MSwxMSArODEsMTEgQEAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyU2hh
cmVhYmxlQml0bWFwQmFja2VuZD4gSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWMKICAgICBp
ZiAoIWNvbnRleHQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIG1ha2VV
bmlxdWU8SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kPihsb2dpY2FsU2l6ZSwgYmFj
a2VuZFNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQsIFdURk1v
dmUoYml0bWFwKSwgV1RGTW92ZShjb250ZXh0KSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8SW1h
Z2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kPihwYXJhbWV0ZXJzLCBXVEZNb3ZlKGJpdG1h
cCksIFdURk1vdmUoY29udGV4dCkpOwogfQogCi1JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJh
Y2tlbmQ6OkltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZChjb25zdCBGbG9hdFNpemUm
IGxvZ2ljYWxTaXplLCBjb25zdCBJbnRTaXplJiBwaHlzaWNhbFNpemUsIGZsb2F0IHJlc29sdXRp
b25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwg
UmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4mJiBiaXRtYXAsIHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGlj
c0NvbnRleHQ+JiYgY29udGV4dCkKLSAgICA6IFBsYXRmb3JtSW1hZ2VCdWZmZXJCYWNrZW5kKGxv
Z2ljYWxTaXplLCBwaHlzaWNhbFNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4
ZWxGb3JtYXQpCitJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OkltYWdlQnVmZmVy
U2hhcmVhYmxlQml0bWFwQmFja2VuZChjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBSZWZQ
dHI8U2hhcmVhYmxlQml0bWFwPiYmIGJpdG1hcCwgc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzQ29u
dGV4dD4mJiBjb250ZXh0KQorICAgIDogUGxhdGZvcm1JbWFnZUJ1ZmZlckJhY2tlbmQocGFyYW1l
dGVycykKICAgICAsIG1fYml0bWFwKFdURk1vdmUoYml0bWFwKSkKICAgICAsIG1fY29udGV4dChX
VEZNb3ZlKGNvbnRleHQpKQogewpAQCAtOTgsNiArOTgsMTEgQEAgSW1hZ2VCdWZmZXJCYWNrZW5k
SGFuZGxlIEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZm
ZXJCYWMKICAgICByZXR1cm4gSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKFdURk1vdmUoaGFuZGxl
KSk7CiB9CiAKK0ludFNpemUgSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpiYWNr
ZW5kU2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fYml0bWFwLT5zaXplKCk7Cit9CisKIFJl
ZlB0cjxOYXRpdmVJbWFnZT4gSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpjb3B5
TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSkgY29uc3QKIHsKICNpZiBVU0UoQ0cpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVy
U2hhcmVhYmxlQml0bWFwQmFja2VuZC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuaAppbmRleCAwYzdmMDQ3
Zjg4MzVlNGI4ZDYzYzE1ZjQxZWM5MjEwMmU0NTg1Mzk5Li41NTUwNmE0OWQwM2UzOWU4OGUwMzYx
ZTQ5MTU1ZjEzMWQ3OTkwMTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVC
aXRtYXBCYWNrZW5kLmgKQEAgLTQzLDE0ICs0MywxNiBAQCBjbGFzcyBJbWFnZUJ1ZmZlclNoYXJl
YWJsZUJpdG1hcEJhY2tlbmQgOiBwdWJsaWMgV2ViQ29yZTo6UGxhdGZvcm1JbWFnZUJ1ZmZlckJh
YwogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBC
YWNrZW5kKTsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbWFnZUJ1ZmZlclNoYXJlYWJsZUJp
dG1hcEJhY2tlbmQpOwogcHVibGljOgotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VC
dWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kPiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6RmxvYXRT
aXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpD
b2xvclNwYWNlLCBXZWJDb3JlOjpQaXhlbEZvcm1hdCwgY29uc3QgV2ViQ29yZTo6SG9zdFdpbmRv
dyopOwotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRt
YXBCYWNrZW5kPiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwg
Y29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgaW50ZXJuYWxTaXplLCBmbG9hdCByZXNvbHV0aW9uU2Nh
bGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UsIFdlYkNvcmU6OlBpeGVsRm9ybWF0LCBJbWFnZUJ1ZmZl
ckJhY2tlbmRIYW5kbGUpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJT
aGFyZWFibGVCaXRtYXBCYWNrZW5kPiBjcmVhdGUoY29uc3QgUGFyYW1ldGVycyYsIGNvbnN0IFdl
YkNvcmU6Okhvc3RXaW5kb3cqKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVm
ZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZD4gY3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmLCBJbWFn
ZUJ1ZmZlckJhY2tlbmRIYW5kbGUpOwogCi0gICAgSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBC
YWNrZW5kKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IFdlYkNv
cmU6OkludFNpemUmIHBoeXNpY2FsU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3Jl
OjpDb2xvclNwYWNlLCBXZWJDb3JlOjpQaXhlbEZvcm1hdCwgUmVmUHRyPFNoYXJlYWJsZUJpdG1h
cD4mJiwgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dD4mJik7CisgICAg
SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kKGNvbnN0IFBhcmFtZXRlcnMmLCBSZWZQ
dHI8U2hhcmVhYmxlQml0bWFwPiYmLCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0PiYmKTsKIAogICAgIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBjcmVhdGVJbWFnZUJ1
ZmZlckJhY2tlbmRIYW5kbGUoKSBjb25zdDsKIAogICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICptX2NvbnRleHQ7IH0KKyAgICAK
KyAgICBXZWJDb3JlOjpJbnRTaXplIGJhY2tlbmRTaXplKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAg
ICBSZWZQdHI8V2ViQ29yZTo6TmF0aXZlSW1hZ2U+IGNvcHlOYXRpdmVJbWFnZShXZWJDb3JlOjpC
YWNraW5nU3RvcmVDb3B5ID0gV2ViQ29yZTo6Q29weUJhY2tpbmdTdG9yZSkgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlPiBjb3B5SW1hZ2UoV2ViQ29yZTo6QmFja2lu
Z1N0b3JlQ29weSA9IFdlYkNvcmU6OkNvcHlCYWNraW5nU3RvcmUsIFdlYkNvcmU6OlByZXNlcnZl
UmVzb2x1dGlvbiA9IFdlYkNvcmU6OlByZXNlcnZlUmVzb2x1dGlvbjo6Tm8pIGNvbnN0IG92ZXJy
aWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9Q
bGF0Zm9ybVJlbW90ZUltYWdlQnVmZmVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUGxhdGZvcm1SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgKaW5kZXggMDUx
NzY3ODNkNTUzMWJmZTcwZjg1MGJmMmMxNDlmNzg4MjJkMGUzOS4uOWFmZjA4OGUzN2NhNzZhN2Y4
NjRhZTdlNDJiYmI3MDA0ZjFmMTUyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9QbGF0Zm9ybVJlbW90ZUltYWdlQnVmZmVyUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1BsYXRmb3JtUmVtb3RlSW1hZ2VC
dWZmZXJQcm94eS5oCkBAIC0zNywxNCArMzcsNCBAQCB1c2luZyBBY2NlbGVyYXRlZFJlbW90ZUlt
YWdlQnVmZmVyUHJveHkgPSBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5PEFjY2VsZXJhdGVkSW1hZwog
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihX
ZWJLaXQ6OlVuYWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlclByb3h5KQotICAgIHN0YXRpYyBi
b29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpJbWFnZUJ1ZmZlciYgaW1hZ2VCdWZmZXIpIHsgcmV0
dXJuIGltYWdlQnVmZmVyLnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpICYmICFpbWFnZUJ1
ZmZlci5pc0FjY2VsZXJhdGVkKCk7IH0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKLQot
I2lmIEhBVkUoSU9TVVJGQUNFKQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJLaXQ6
OkFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXJQcm94eSkKLSAgICBzdGF0aWMgYm9vbCBpc1R5
cGUoY29uc3QgV2ViQ29yZTo6SW1hZ2VCdWZmZXImIGltYWdlQnVmZmVyKSB7IHJldHVybiBpbWFn
ZUJ1ZmZlci5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSAmJiBpbWFnZUJ1ZmZlci5pc0Fj
Y2VsZXJhdGVkKCk7IH0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKLSNlbmRpZgotCiAj
ZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaApp
bmRleCAzMWNkMDJkMWIwZjIxZWRlNTgyMmJmOTQ1YmFkNDZlZGVmMWViMzdhLi5mODUxNTJjYjY2
OGU2Nzk4MGE4ZGI5OGQ2NjEyYTkwMGI3NzU3MjMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJv
eHkuaApAQCAtNTAsMTQgKzUwLDE2IEBAIGNsYXNzIFJlbW90ZUltYWdlQnVmZmVyUHJveHkgOiBw
dWJsaWMgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkltYWdlQnVmZmVyPEJhY2tlbmRUCiAgICAgdXNp
bmcgQmFzZURpc3BsYXlMaXN0SW1hZ2VCdWZmZXI6Om1fYmFja2VuZDsKICAgICB1c2luZyBCYXNl
RGlzcGxheUxpc3RJbWFnZUJ1ZmZlcjo6bV9kcmF3aW5nQ29udGV4dDsKICAgICB1c2luZyBCYXNl
RGlzcGxheUxpc3RJbWFnZUJ1ZmZlcjo6bV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI7Cisg
ICAgdXNpbmcgQmFzZURpc3BsYXlMaXN0SW1hZ2VCdWZmZXI6OnJlc29sdXRpb25TY2FsZTsKIAog
cHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8UmVtb3RlSW1hZ2VCdWZmZXJQcm94eT4gY3JlYXRl
KGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgc2l6ZSwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSBy
ZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2Ug
Y29sb3JTcGFjZSwgV2ViQ29yZTo6UGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eSYgcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KQorICAgIHN0YXRp
YyBSZWZQdHI8UmVtb3RlSW1hZ2VCdWZmZXJQcm94eT4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkZs
b2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNl
IGNvbG9yU3BhY2UsIFdlYkNvcmU6OlBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHkmIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKICAgICB7CiAg
ICAgICAgIGlmIChCYWNrZW5kVHlwZTo6Y2FsY3VsYXRlQmFja2VuZFNpemUoc2l6ZSwgcmVzb2x1
dGlvblNjYWxlKS5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFJlbW90ZUltYWdlQnVmZmVyUHJveHkoc2l6ZSwgcmVu
ZGVyaW5nTW9kZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCwgcmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KSk7CisgICAgICAgIGF1dG8gcGFyYW1ldGVycyA9IHN0
ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnM+KG5l
dyBXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnMoeyBzaXplLCByZXNvbHV0
aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0IH0pKTsKKyAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5KFdURk1vdmUocGFyYW1ldGVycyksIHJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkpOwogICAgIH0KIAogICAgIH5SZW1vdGVJbWFnZUJ1
ZmZlclByb3h5KCkKQEAgLTY5LDI3ICs3MSw2IEBAIHB1YmxpYzoKICAgICAgICAgbV9yZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHktPnJlbGVhc2VSZW1vdGVSZXNvdXJjZShtX3JlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcik7CiAgICAgfQogCi0gICAgdm9pZCBjbGVhckJhY2tlbmQoKSB7IG1f
YmFja2VuZCA9IG51bGxwdHI7IH0KLQotICAgIHZvaWQgY3JlYXRlQmFja2VuZChjb25zdCBXZWJD
b3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBiYWNr
ZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlIGNvbG9y
U3BhY2UsIFdlYkNvcmU6OlBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBJbWFnZUJ1ZmZlckJhY2tl
bmRIYW5kbGUgaGFuZGxlKQotICAgIHsKLSAgICAgICAgQVNTRVJUKCFtX2JhY2tlbmQpOwotICAg
ICAgICBtX2JhY2tlbmQgPSBCYWNrZW5kVHlwZTo6Y3JlYXRlKGxvZ2ljYWxTaXplLCBiYWNrZW5k
U2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCwgV1RGTW92ZSho
YW5kbGUpKTsKLSAgICB9Ci0KLSAgICB2b2lkIGRpZEZsdXNoKFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpGbHVzaElkZW50aWZpZXIgZmx1c2hJZGVudGlmaWVyKQotICAgIHsKLSAgICAgICAgYXV0byBs
b2NrZXIgPSBob2xkTG9jayhtX3JlY2VpdmVkRmx1c2hJZGVudGlmaWVyTG9jayk7Ci0gICAgICAg
IG1fcmVjZWl2ZWRGbHVzaElkZW50aWZpZXIgPSBmbHVzaElkZW50aWZpZXI7Ci0gICAgICAgIG1f
cmVjZWl2ZWRGbHVzaElkZW50aWZpZXJDaGFuZ2VkQ29uZGl0aW9uLm5vdGlmeUFsbCgpOwotICAg
IH0KLQotICAgIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgc2l6ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fc2l6ZTsgfQotICAgIFdlYkNvcmU6OlJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSgpIGNv
bnN0IHsgcmV0dXJuIG1fcmVuZGVyaW5nTW9kZTsgfQotICAgIGZsb2F0IHJlc29sdXRpb25TY2Fs
ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcmVzb2x1dGlvblNjYWxlOyB9Ci0gICAgV2ViQ29y
ZTo6Q29sb3JTcGFjZSBjb2xvclNwYWNlKCkgY29uc3QgeyByZXR1cm4gbV9jb2xvclNwYWNlOyB9
Ci0gICAgV2ViQ29yZTo6UGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQoKSBjb25zdCB7IHJldHVybiBt
X3BpeGVsRm9ybWF0OyB9Ci0KICAgICBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgY3JlYXRlSW1h
Z2VCdWZmZXJCYWNrZW5kSGFuZGxlKCkKICAgICB7CiAgICAgICAgIGVuc3VyZUJhY2tlbmRDcmVh
dGVkKCk7CkBAIC0xMTMsMTQgKzk0LDkgQEAgcHVibGljOgogCiBwcm90ZWN0ZWQ6CiAgICAgZnJp
ZW5kIGNsYXNzIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ7Ci0gICAgUmVtb3RlSW1hZ2VCdWZmZXJQ
cm94eShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHNpemUsIFdlYkNvcmU6OlJlbmRlcmluZ01v
ZGUgcmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNw
YWNlIGNvbG9yU3BhY2UsIFdlYkNvcmU6OlBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHkmIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKLSAgICAg
ICAgOiBCYXNlRGlzcGxheUxpc3RJbWFnZUJ1ZmZlcihzaXplLCB0aGlzKQorICAgIFJlbW90ZUlt
YWdlQnVmZmVyUHJveHkoc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyQmFja2Vu
ZDo6UGFyYW1ldGVycz4mJiBwYXJhbWV0ZXJzLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkm
IHJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKKyAgICAgICAgOiBCYXNlRGlzcGxheUxpc3RJ
bWFnZUJ1ZmZlcihXVEZNb3ZlKHBhcmFtZXRlcnMpLCB0aGlzKQogICAgICAgICAsIG1fcmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5KG1ha2VXZWFrUHRyKHJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eSkpCi0gICAgICAgICwgbV9zaXplKHNpemUpCi0gICAgICAgICwgbV9yZW5kZXJpbmdNb2Rl
KHJlbmRlcmluZ01vZGUpCi0gICAgICAgICwgbV9yZXNvbHV0aW9uU2NhbGUocmVzb2x1dGlvblNj
YWxlKQotICAgICAgICAsIG1fY29sb3JTcGFjZShjb2xvclNwYWNlKQotICAgICAgICAsIG1fcGl4
ZWxGb3JtYXQocGl4ZWxGb3JtYXQpCiAgICAgewogICAgICAgICBBU1NFUlQobV9yZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHkpOwogICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eS0+cmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5KCkuY2FjaGVJbWFnZUJ1ZmZlcigqdGhpcyk7CkBA
IC0xMzEsNiArMTA3LDEzIEBAIHByb3RlY3RlZDoKIAogICAgIGJvb2wgaGFzUGVuZGluZ0ZsdXNo
KCkgY29uc3QgeyByZXR1cm4gbV9zZW50Rmx1c2hJZGVudGlmaWVyICE9IG1fcmVjZWl2ZWRGbHVz
aElkZW50aWZpZXI7IH0KIAorICAgIHZvaWQgZGlkRmx1c2goV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OkZsdXNoSWRlbnRpZmllciBmbHVzaElkZW50aWZpZXIpIG92ZXJyaWRlCisgICAgeworICAgICAg
ICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fcmVjZWl2ZWRGbHVzaElkZW50aWZpZXJMb2NrKTsK
KyAgICAgICAgbV9yZWNlaXZlZEZsdXNoSWRlbnRpZmllciA9IGZsdXNoSWRlbnRpZmllcjsKKyAg
ICAgICAgbV9yZWNlaXZlZEZsdXNoSWRlbnRpZmllckNoYW5nZWRDb25kaXRpb24ubm90aWZ5QWxs
KCk7CisgICAgfQorCiAgICAgdm9pZCB3YWl0Rm9yRGlkRmx1c2hXaXRoVGltZW91dCgpCiAgICAg
ewogICAgICAgICBpZiAoIW1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KQpAQCAtMTQ1LDcg
KzEyOCw3IEBAIHByb3RlY3RlZDoKICAgICBCYWNrZW5kVHlwZSogZW5zdXJlQmFja2VuZENyZWF0
ZWQoKSBjb25zdCBvdmVycmlkZQogICAgIHsKICAgICAgICAgaWYgKCFtX2JhY2tlbmQgJiYgbV9y
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpCi0gICAgICAgICAgICBtX3JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eS0+d2FpdEZvckltYWdlQnVmZmVyQmFja2VuZFdhc0NyZWF0ZWQoKTsKKyAg
ICAgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT53YWl0Rm9yRGlkQ3JlYXRl
SW1hZ2VCdWZmZXJCYWNrZW5kKCk7CiAgICAgICAgIHJldHVybiBtX2JhY2tlbmQuZ2V0KCk7CiAg
ICAgfQogCkBAIC0xNjksOCArMTUyLDggQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgcHV0SW1hZ2VE
YXRhKFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb24gaW5wdXRGb3JtYXQsIGNvbnN0IFdl
YkNvcmU6OkltYWdlRGF0YSYgaW1hZ2VEYXRhLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzcmNS
ZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZGVzdFBvaW50ID0geyB9LCBXZWJDb3JlOjpB
bHBoYVByZW11bHRpcGxpY2F0aW9uIGRlc3RGb3JtYXQgPSBXZWJDb3JlOjpBbHBoYVByZW11bHRp
cGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgLy8gVGhl
IG1hdGggaW5zaWRlIEltYWdlRGF0YTo6Y3JlYXRlKCkgZG9lc24ndCBhZ3JlZSB3aXRoIHRoZSBt
YXRoIGluc2lkZSBJbWFnZUJ1ZmZlckJhY2tlbmQ6OnB1dEltYWdlRGF0YSgpIGFib3V0IGhvdyBt
X3Jlc29sdXRpb25TY2FsZSBpbnRlcmFjdHMgd2l0aCB0aGUgZGF0YSBpbiB0aGUgSW1hZ2VCdWZm
ZXIuCi0gICAgICAgIC8vIFRoaXMgbWVhbnMgdGhhdCBwdXRJbWFnZURhdGEoKSBpcyBvbmx5IGNh
bGxlZCB3aGVuIG1fcmVzb2x1dGlvblNjYWxlID09IDEuCi0gICAgICAgIEFTU0VSVF9JTVBMSUVT
KG1fYmFja2VuZCwgbV9iYWNrZW5kLT5yZXNvbHV0aW9uU2NhbGUoKSA9PSAxKTsKKyAgICAgICAg
Ly8gVGhpcyBtZWFucyB0aGF0IHB1dEltYWdlRGF0YSgpIGlzIG9ubHkgY2FsbGVkIHdoZW4gcmVz
b2x1dGlvblNjYWxlKCkgPT0gMS4KKyAgICAgICAgQVNTRVJUKHJlc29sdXRpb25TY2FsZSgpID09
IDEpOwogICAgICAgICBtX2RyYXdpbmdDb250ZXh0LnJlY29yZGVyKCkucHV0SW1hZ2VEYXRhKGlu
cHV0Rm9ybWF0LCBpbWFnZURhdGEsIHNyY1JlY3QsIGRlc3RQb2ludCwgZGVzdEZvcm1hdCk7CiAg
ICAgfQogCkBAIC0xODUsMTEgKzE2OCwxMSBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBmbHVzaERy
YXdpbmdDb250ZXh0KCkgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIFRyYWNlU2NvcGUgdHJhY2lu
Z1Njb3BlKEZsdXNoUmVtb3RlSW1hZ2VCdWZmZXJTdGFydCwgRmx1c2hSZW1vdGVJbWFnZUJ1ZmZl
ckVuZCk7Ci0gICAgICAgIGZsdXNoRHJhd2luZ0NvbnRleHRBbmRDb21taXQoKTsKKyAgICAgICAg
c3VibWl0RHJhd2luZ0NvbnRleHQoKTsKICAgICAgICAgd2FpdEZvckRpZEZsdXNoV2l0aFRpbWVv
dXQoKTsKICAgICB9CiAKLSAgICB2b2lkIGZsdXNoRHJhd2luZ0NvbnRleHRBbmRDb21taXQoKSBv
dmVycmlkZQorICAgIHZvaWQgc3VibWl0RHJhd2luZ0NvbnRleHQoKSBvdmVycmlkZQogICAgIHsK
ICAgICAgICAgaWYgKCFtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKICAgICAgICAgICAg
IHJldHVybjsKQEAgLTIwMCwxMiArMTgzLDEyIEBAIHByb3RlY3RlZDoKIAogICAgICAgICBtX3Nl
bnRGbHVzaElkZW50aWZpZXIgPSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Rmx1c2hJZGVudGlmaWVy
OjpnZW5lcmF0ZSgpOwogICAgICAgICBkaXNwbGF5TGlzdC50ZW1wbGF0ZSBhcHBlbmQ8V2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OkZsdXNoQ29udGV4dD4obV9zZW50Rmx1c2hJZGVudGlmaWVyKTsKLSAg
ICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHktPnN1Ym1pdERpc3BsYXlMaXN0KGRp
c3BsYXlMaXN0LCBtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7Ci0gICAgICAgIG1faXRl
bUNvdW50SW5DdXJyZW50RGlzcGxheUxpc3QgPSAwOworICAgICAgICBzdWJtaXREaXNwbGF5TGlz
dChkaXNwbGF5TGlzdCk7CiAgICAgICAgIGRpc3BsYXlMaXN0LmNsZWFyKCk7CisgICAgICAgIG1f
aXRlbUNvdW50SW5DdXJyZW50RGlzcGxheUxpc3QgPSAwOwogICAgIH0KIAotICAgIHZvaWQgc3Vi
bWl0RGlzcGxheUxpc3QoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiBk
aXNwbGF5TGlzdCkKKyAgICB2b2lkIHN1Ym1pdERpc3BsYXlMaXN0KGNvbnN0IFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QpIG92ZXJyaWRlCiAgICAgewogICAg
ICAgICBpZiAoIW1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5IHx8IGRpc3BsYXlMaXN0Lmlz
RW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTM1MSwxMSArMzM0LDYgQEAgcHJvdGVj
dGVkOgogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpGbHVzaElkZW50aWZpZXIgbV9yZWNlaXZl
ZEZsdXNoSWRlbnRpZmllcjsKICAgICBXZWFrUHRyPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eT4gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk7CiAgICAgc2l6ZV90IG1faXRlbUNvdW50
SW5DdXJyZW50RGlzcGxheUxpc3QgeyAwIH07Ci0gICAgV2ViQ29yZTo6RmxvYXRTaXplIG1fc2l6
ZTsKLSAgICBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlIG1fcmVuZGVyaW5nTW9kZTsKLSAgICBmbG9h
dCBtX3Jlc29sdXRpb25TY2FsZTsKLSAgICBXZWJDb3JlOjpDb2xvclNwYWNlIG1fY29sb3JTcGFj
ZTsKLSAgICBXZWJDb3JlOjpQaXhlbEZvcm1hdCBtX3BpeGVsRm9ybWF0OwogfTsKIAogdGVtcGxh
dGU8dHlwZW5hbWUgQmFja2VuZFR5cGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eS5jcHAKaW5kZXggZTUyY2E0MDczNWU5NzllMzg3ZDgzZDE0ZDI3YzQ5NjYxNzhlY2ZjNy4u
YzY0MzU2MWQ0OTIwOTE3NGFiZmU5MTMyN2QwYjQ4MGRkZWYwMDczMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcApAQCAtNzAsMjQgKzcwLDE1IEBAIHZvaWQgUmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Ojpjb25uZWN0VG9HUFVQcm9jZXNzKCkKICAgICBzZW5k
KE1lc3NhZ2VzOjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDcmVhdGVSZW5kZXJpbmdCYWNr
ZW5kKG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpLCAwKTsKIH0KIAotdGVtcGxhdGU8dHlw
ZW5hbWUgVD4KLXN0YXRpYyB2b2lkIHJlY3JlYXRlSW1hZ2VCdWZmZXIoUmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5JiBwcm94eSwgVCYgaW1hZ2VCdWZmZXIsIFJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllciByZXNvdXJjZUlkZW50aWZpZXIsIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIHJl
bmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKQotewotICAgIGltYWdlQnVmZmVyLmNsZWFyQmFja2Vu
ZCgpOwotICAgIHByb3h5LnNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OkNy
ZWF0ZUltYWdlQnVmZmVyKGltYWdlQnVmZmVyLnNpemUoKSwgaW1hZ2VCdWZmZXIucmVuZGVyaW5n
TW9kZSgpLCBpbWFnZUJ1ZmZlci5yZXNvbHV0aW9uU2NhbGUoKSwgaW1hZ2VCdWZmZXIuY29sb3JT
cGFjZSgpLCBpbWFnZUJ1ZmZlci5waXhlbEZvcm1hdCgpLCByZXNvdXJjZUlkZW50aWZpZXIpLCBy
ZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7Ci19Ci0KIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5OjpyZWVzdGFibGlzaEdQVVByb2Nlc3NDb25uZWN0aW9uKCkKIHsKICAgICBjb25u
ZWN0VG9HUFVQcm9jZXNzKCk7CiAKLSAgICBmb3IgKGF1dG8mIHBhaXIgOiBtX3JlbW90ZVJlc291
cmNlQ2FjaGVQcm94eS5pbWFnZUJ1ZmZlcnMoKSkgewotICAgICAgICBpZiAoYXV0byYgYmFzZUlt
YWdlQnVmZmVyID0gcGFpci52YWx1ZSkgewotICAgICAgICAgICAgaWYgKGlzPEFjY2VsZXJhdGVk
UmVtb3RlSW1hZ2VCdWZmZXJQcm94eT4oKmJhc2VJbWFnZUJ1ZmZlcikpCi0gICAgICAgICAgICAg
ICAgcmVjcmVhdGVJbWFnZUJ1ZmZlcigqdGhpcywgZG93bmNhc3Q8QWNjZWxlcmF0ZWRSZW1vdGVJ
bWFnZUJ1ZmZlclByb3h5PigqYmFzZUltYWdlQnVmZmVyKSwgcGFpci5rZXksIG1fcmVuZGVyaW5n
QmFja2VuZElkZW50aWZpZXIpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJl
Y3JlYXRlSW1hZ2VCdWZmZXIoKnRoaXMsIGRvd25jYXN0PFVuYWNjZWxlcmF0ZWRSZW1vdGVJbWFn
ZUJ1ZmZlclByb3h5PigqYmFzZUltYWdlQnVmZmVyKSwgcGFpci5rZXksIG1fcmVuZGVyaW5nQmFj
a2VuZElkZW50aWZpZXIpOwotICAgICAgICB9CisgICAgZm9yIChhdXRvJiBpbWFnZUJ1ZmZlciA6
IG1fcmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmltYWdlQnVmZmVycygpLnZhbHVlcygpKSB7Cisg
ICAgICAgIGlmICghaW1hZ2VCdWZmZXIpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Q3JlYXRlSW1hZ2VCdWZmZXIo
aW1hZ2VCdWZmZXItPmxvZ2ljYWxTaXplKCksIGltYWdlQnVmZmVyLT5yZW5kZXJpbmdNb2RlKCks
IGltYWdlQnVmZmVyLT5yZXNvbHV0aW9uU2NhbGUoKSwgaW1hZ2VCdWZmZXItPmNvbG9yU3BhY2Uo
KSwgaW1hZ2VCdWZmZXItPnBpeGVsRm9ybWF0KCksIGltYWdlQnVmZmVyLT5yZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIoKSksIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOworICAgICAg
ICBpbWFnZUJ1ZmZlci0+Y2xlYXJCYWNrZW5kKCk7CiAgICAgfQogfQogCkBAIC0xMTIsMTAgKzEw
MywxMCBAQCB1aW50NjRfdCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6Om1lc3NhZ2VTZW5k
ZXJEZXN0aW5hdGlvbklEKCkgY29uc3QKICAgICByZXR1cm4gbV9yZW5kZXJpbmdCYWNrZW5kSWRl
bnRpZmllci50b1VJbnQ2NCgpOwogfQogCi1ib29sIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eTo6d2FpdEZvckltYWdlQnVmZmVyQmFja2VuZFdhc0NyZWF0ZWQoKQorYm9vbCBSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHk6OndhaXRGb3JEaWRDcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQoKQog
ewogICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IGNvbm5lY3Rpb24gPSBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKTsKLSAgICBy
ZXR1cm4gY29ubmVjdGlvbi0+d2FpdEZvckFuZERpc3BhdGNoSW1tZWRpYXRlbHk8TWVzc2FnZXM6
OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6SW1hZ2VCdWZmZXJCYWNrZW5kV2FzQ3JlYXRl
ZD4obV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciwgMV9zLCBJUEM6OldhaXRGb3JPcHRpb246
OkludGVycnVwdFdhaXRpbmdJZlN5bmNNZXNzYWdlQXJyaXZlcyk7CisgICAgcmV0dXJuIGNvbm5l
Y3Rpb24tPndhaXRGb3JBbmREaXNwYXRjaEltbWVkaWF0ZWx5PE1lc3NhZ2VzOjpSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHk6OkRpZENyZWF0ZUltYWdlQnVmZmVyQmFja2VuZD4obV9yZW5kZXJp
bmdCYWNrZW5kSWRlbnRpZmllciwgMV9zLCBJUEM6OldhaXRGb3JPcHRpb246OkludGVycnVwdFdh
aXRpbmdJZlN5bmNNZXNzYWdlQXJyaXZlcyk7CiB9CiAKIGJvb2wgUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5Ojp3YWl0Rm9yRGlkRmx1c2goKQpAQCAtMTI5LDEwICsxMjAsMTAgQEAgUmVmUHRy
PEltYWdlQnVmZmVyPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmNyZWF0ZUltYWdlQnVm
ZmVyKGNvbnN0IEZsb2F0U2kKICAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyOwog
CiAgICAgaWYgKHJlbmRlcmluZ01vZGUgPT0gUmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQpCi0g
ICAgICAgIGltYWdlQnVmZmVyID0gQWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlclByb3h5Ojpj
cmVhdGUoc2l6ZSwgcmVuZGVyaW5nTW9kZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBw
aXhlbEZvcm1hdCwgKnRoaXMpOworICAgICAgICBpbWFnZUJ1ZmZlciA9IEFjY2VsZXJhdGVkUmVt
b3RlSW1hZ2VCdWZmZXJQcm94eTo6Y3JlYXRlKHNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JT
cGFjZSwgcGl4ZWxGb3JtYXQsICp0aGlzKTsKIAogICAgIGlmICghaW1hZ2VCdWZmZXIpCi0gICAg
ICAgIGltYWdlQnVmZmVyID0gVW5hY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyUHJveHk6OmNy
ZWF0ZShzaXplLCByZW5kZXJpbmdNb2RlLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBp
eGVsRm9ybWF0LCAqdGhpcyk7CisgICAgICAgIGltYWdlQnVmZmVyID0gVW5hY2NlbGVyYXRlZFJl
bW90ZUltYWdlQnVmZmVyUHJveHk6OmNyZWF0ZShzaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9y
U3BhY2UsIHBpeGVsRm9ybWF0LCAqdGhpcyk7CiAKICAgICBpZiAoaW1hZ2VCdWZmZXIpIHsKICAg
ICAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Q3JlYXRlSW1hZ2VC
dWZmZXIoc2l6ZSwgcmVuZGVyaW5nTW9kZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBw
aXhlbEZvcm1hdCwgaW1hZ2VCdWZmZXItPnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpKSwg
bV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7CkBAIC0xODMsMjggKzE3NCwyMiBAQCB2b2lk
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6cmVsZWFzZVJlbW90ZVJlc291cmNlKFJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZgogICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQ6OlJlbGVhc2VSZW1vdGVSZXNvdXJjZShyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIp
LCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKIH0KIAotdm9pZCBSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHk6OmltYWdlQnVmZmVyQmFja2VuZFdhc0NyZWF0ZWQoY29uc3QgRmxvYXRT
aXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29s
dXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1h
dCwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGhhbmRsZSwgUmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKK3ZvaWQgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5OjpkaWRDcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQoSW1hZ2VCdWZmZXJCYWNr
ZW5kSGFuZGxlIGhhbmRsZSwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcikKIHsKICAgICBhdXRvIGltYWdlQnVmZmVyID0gbV9yZW1vdGVSZXNv
dXJjZUNhY2hlUHJveHkuY2FjaGVkSW1hZ2VCdWZmZXIocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyKTsKICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAgICAgICByZXR1cm47Ci0gICAgCi0gICAg
aWYgKGltYWdlQnVmZmVyLT5pc0FjY2VsZXJhdGVkKCkpCi0gICAgICAgIGRvd25jYXN0PEFjY2Vs
ZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXJQcm94eT4oKmltYWdlQnVmZmVyKS5jcmVhdGVCYWNrZW5k
KGxvZ2ljYWxTaXplLCBiYWNrZW5kU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBw
aXhlbEZvcm1hdCwgV1RGTW92ZShoYW5kbGUpKTsKKworICAgIGlmIChpbWFnZUJ1ZmZlci0+cmVu
ZGVyaW5nTW9kZSgpID09IFJlbmRlcmluZ01vZGU6OkFjY2VsZXJhdGVkKQorICAgICAgICBpbWFn
ZUJ1ZmZlci0+c2V0QmFja2VuZChBY2NlbGVyYXRlZEltYWdlQnVmZmVyU2hhcmVhYmxlQmFja2Vu
ZDo6Y3JlYXRlKGltYWdlQnVmZmVyLT5wYXJhbWV0ZXJzKCksIFdURk1vdmUoaGFuZGxlKSkpOwog
ICAgIGVsc2UKLSAgICAgICAgZG93bmNhc3Q8VW5hY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVy
UHJveHk+KCppbWFnZUJ1ZmZlcikuY3JlYXRlQmFja2VuZChsb2dpY2FsU2l6ZSwgYmFja2VuZFNp
emUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQsIFdURk1vdmUoaGFu
ZGxlKSk7CisgICAgICAgIGltYWdlQnVmZmVyLT5zZXRCYWNrZW5kKFVuYWNjZWxlcmF0ZWRJbWFn
ZUJ1ZmZlclNoYXJlYWJsZUJhY2tlbmQ6OmNyZWF0ZShpbWFnZUJ1ZmZlci0+cGFyYW1ldGVycygp
LCBXVEZNb3ZlKGhhbmRsZSkpKTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHk6OmRpZEZsdXNoKERpc3BsYXlMaXN0OjpGbHVzaElkZW50aWZpZXIgZmx1c2hJZGVudGlmaWVy
LCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
KQogewotICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBtX3JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5j
YWNoZWRJbWFnZUJ1ZmZlcihyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwotICAgIGlmICgh
aW1hZ2VCdWZmZXIpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChpbWFnZUJ1ZmZlci0+aXNB
Y2NlbGVyYXRlZCgpKQotICAgICAgICBkb3duY2FzdDxBY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVm
ZmVyUHJveHk+KCppbWFnZUJ1ZmZlcikuZGlkRmx1c2goZmx1c2hJZGVudGlmaWVyKTsKLSAgICBl
bHNlCi0gICAgICAgIGRvd25jYXN0PFVuYWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlclByb3h5
PigqaW1hZ2VCdWZmZXIpLmRpZEZsdXNoKGZsdXNoSWRlbnRpZmllcik7CisgICAgaWYgKGF1dG8g
aW1hZ2VCdWZmZXIgPSBtX3JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jYWNoZWRJbWFnZUJ1ZmZl
cihyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpKQorICAgICAgICBpbWFnZUJ1ZmZlci0+ZGlk
Rmx1c2goZmx1c2hJZGVudGlmaWVyKTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHk6OnVwZGF0ZVJldXNhYmxlSGFuZGxlcygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHkuaAppbmRleCA5NWY4ZDJiNDEyZmI5MWRmNzdjNjhmMTM2YjAwNzg2ZjAyNGQ3ZTI2
Li5mODA1ZmMxZWZmOWNhNTE0NTM1OWNhMjkyYjUyZGRmZWVmOGRhODFlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmgKQEAgLTgxLDcgKzgxLDcgQEAgcHVibGljOgogICAg
IHZvaWQgY2FjaGVOYXRpdmVJbWFnZShXZWJDb3JlOjpOYXRpdmVJbWFnZSYpOwogICAgIHZvaWQg
cmVsZWFzZVJlbW90ZVJlc291cmNlKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cik7CiAKLSAgICBib29sIHdhaXRGb3JJbWFnZUJ1ZmZlckJhY2tlbmRXYXNDcmVhdGVkKCk7Cisg
ICAgYm9vbCB3YWl0Rm9yRGlkQ3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kKCk7CiAgICAgYm9vbCB3
YWl0Rm9yRGlkRmx1c2goKTsKIAogcHJpdmF0ZToKQEAgLTk1LDcgKzk1LDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIHVwZGF0ZVJldXNhYmxlSGFuZGxlcygpOwogCiAgICAgLy8gTWVzc2FnZXMgdG8g
YmUgcmVjZWl2ZWQuCi0gICAgdm9pZCBpbWFnZUJ1ZmZlckJhY2tlbmRXYXNDcmVhdGVkKGNvbnN0
IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IFdlYkNvcmU6OkludFNpemUm
IGJhY2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2Us
IFdlYkNvcmU6OlBpeGVsRm9ybWF0LCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUsIFdlYkNvcmU6
OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CisgICAgdm9pZCBkaWRDcmVhdGVJbWFnZUJ1
ZmZlckJhY2tlbmQoSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLCBXZWJDb3JlOjpSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIHZvaWQgZGlkRmx1c2goV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OkZsdXNoSWRlbnRpZmllciwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
KTsKIAogICAgIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eSBtX3JlbW90ZVJlc291cmNlQ2FjaGVQ
cm94eSB7ICp0aGlzIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5Lm1lc3NhZ2VzLmluCmluZGV4IDkyMGRlM2Y3Nzc1NDAxNjQwNTFmZjUxY2QyMWI1MDU1OTg1
NGY4NDQuLjNhNTMyZDVlNGZmNjE2YmRiMDdlZGU3YTlhODNlOTMxMzdlNzNiZjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lm1lc3NhZ2VzLmluCkBAIC0y
Myw3ICsyMyw3IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiBtZXNzYWdlcyAtPiBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHkgTm90UmVmQ291bnRlZCB7Ci0gICAgSW1hZ2VCdWZmZXJC
YWNrZW5kV2FzQ3JlYXRlZChXZWJDb3JlOjpGbG9hdFNpemUgbG9naWNhbFNpemUsIFdlYkNvcmU6
OkludFNpemUgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29s
b3JTcGFjZSBjb2xvclNwYWNlLCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6UGl4ZWxGb3JtYXQgcGl4
ZWxGb3JtYXQsIFdlYktpdDo6SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGhhbmRsZSwgV2ViQ29y
ZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cikKKyAgICBEaWRDcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQoV2ViS2l0OjpJbWFnZUJ1ZmZlckJh
Y2tlbmRIYW5kbGUgaGFuZGxlLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIg
cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogICAgIERpZEZsdXNoKFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpGbHVzaElkZW50aWZpZXIgZmx1c2hJZGVudGlmaWVyLCBXZWJDb3JlOjpSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0lt
YWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNl
QmFja2VuZC5jcHAKaW5kZXggNTE2MjdjNWVkZDg5MWI5NGYzNjM5MWMwYWI0YzI4MDhjNjgwYmVm
Zi4uZTQxMmU3ZjYzZjQwODdmMjE3NzI0NjgyZTkzNThmYjg1ODhmYzVjMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNo
YXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5k
LmNwcApAQCAtMzcsMTMgKzM3LDEzIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBXVEZf
TUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNr
ZW5kKTsKIAotc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFj
a2VuZD4gSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGUoY29uc3Qg
RmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JT
cGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIGNvbnN0IEhvc3RXaW5kb3cqKQorc3RkOjp1
bmlxdWVfcHRyPEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZD4gSW1hZ2VCdWZm
ZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGUoY29uc3QgUGFyYW1ldGVycyYgcGFy
YW1ldGVycywgY29uc3QgSG9zdFdpbmRvdyopCiB7Ci0gICAgSW50U2l6ZSBiYWNrZW5kU2l6ZSA9
IGNhbGN1bGF0ZUJhY2tlbmRTaXplKHNpemUsIHJlc29sdXRpb25TY2FsZSk7CisgICAgSW50U2l6
ZSBiYWNrZW5kU2l6ZSA9IGNhbGN1bGF0ZUJhY2tlbmRTaXplKHBhcmFtZXRlcnMubG9naWNhbFNp
emUsIHBhcmFtZXRlcnMucmVzb2x1dGlvblNjYWxlKTsKICAgICBpZiAoYmFja2VuZFNpemUuaXNF
bXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGF1dG8gc3VyZmFjZSA9IElP
U3VyZmFjZTo6Y3JlYXRlKGJhY2tlbmRTaXplLCBiYWNrZW5kU2l6ZSwgY2FjaGVkQ0dDb2xvclNw
YWNlKGNvbG9yU3BhY2UpLCBJT1N1cmZhY2U6OmZvcm1hdEZvclBpeGVsRm9ybWF0KHBpeGVsRm9y
bWF0KSk7CisgICAgYXV0byBzdXJmYWNlID0gSU9TdXJmYWNlOjpjcmVhdGUoYmFja2VuZFNpemUs
IGJhY2tlbmRTaXplLCBjYWNoZWRDR0NvbG9yU3BhY2UocGFyYW1ldGVycy5jb2xvclNwYWNlKSwg
SU9TdXJmYWNlOjpmb3JtYXRGb3JQaXhlbEZvcm1hdChwYXJhbWV0ZXJzLnBpeGVsRm9ybWF0KSk7
CiAgICAgaWYgKCFzdXJmYWNlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtNTMsMjEg
KzUzLDIxIEBAIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJh
Y2tlbmQ+IEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmCiAKICAgICBDR0NvbnRleHRDbGVhclJl
Y3QoY2dDb250ZXh0LmdldCgpLCBGbG9hdFJlY3QoRmxvYXRQb2ludDo6emVybygpLCBiYWNrZW5k
U2l6ZSkpOwogCi0gICAgcmV0dXJuIG1ha2VVbmlxdWU8SW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1
cmZhY2VCYWNrZW5kPihzaXplLCBiYWNrZW5kU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNw
YWNlLCBwaXhlbEZvcm1hdCwgV1RGTW92ZShzdXJmYWNlKSk7CisgICAgcmV0dXJuIG1ha2VVbmlx
dWU8SW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kPihwYXJhbWV0ZXJzLCBXVEZN
b3ZlKHN1cmZhY2UpKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyU2hhcmVhYmxl
SU9TdXJmYWNlQmFja2VuZD4gSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kOjpj
cmVhdGUoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50U2l6ZSYgaW50ZXJu
YWxTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgUGl4
ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBoYW5kbGUpCitz
dGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kPiBJbWFn
ZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZShjb25zdCBQYXJhbWV0ZXJz
JiBwYXJhbWV0ZXJzLCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgaGFuZGxlKQogewogICAgIGlm
ICghV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxNYWNoU2VuZFJpZ2h0PihoYW5kbGUpKSB7CiAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9
CiAKLSAgICBhdXRvIHN1cmZhY2UgPSBJT1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQoV1RG
TW92ZShXVEY6OmdldDxNYWNoU2VuZFJpZ2h0PihoYW5kbGUpKSwgY2FjaGVkQ0dDb2xvclNwYWNl
KGNvbG9yU3BhY2UpKTsKKyAgICBhdXRvIHN1cmZhY2UgPSBJT1N1cmZhY2U6OmNyZWF0ZUZyb21T
ZW5kUmlnaHQoV1RGTW92ZShXVEY6OmdldDxNYWNoU2VuZFJpZ2h0PihoYW5kbGUpKSwgY2FjaGVk
Q0dDb2xvclNwYWNlKHBhcmFtZXRlcnMuY29sb3JTcGFjZSkpOwogICAgIGlmICghc3VyZmFjZSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gbWFrZVVuaXF1ZTxJbWFnZUJ1
ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQ+KGxvZ2ljYWxTaXplLCBpbnRlcm5hbFNpemUs
IHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQsIFdURk1vdmUoc3VyZmFj
ZSkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNl
QmFja2VuZD4ocGFyYW1ldGVycywgV1RGTW92ZShzdXJmYWNlKSk7CiB9CiAKIEltYWdlQnVmZmVy
QmFja2VuZEhhbmRsZSBJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0
ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlSU9T
dXJmYWNlQmFja2VuZC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9j
b2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQuaAppbmRleCBlZDUxNjI0
ZWIwYWExMDUwZTEzYmZhMTdlYTM0ZjBmZTNjMWZmZjZkLi4zMTg5MjE1ZjMzYWNhYjc5MDFmYWNi
NTA1ZjJhNWMxMzk5YTBkZTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VC
dWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kLmgKQEAgLTM5LDggKzM5LDggQEAgY2xhc3Mg
SW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kIDogcHVibGljIFdlYkNvcmU6Oklt
YWdlQnVmZmVySU9TdXJmYWMKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEltYWdlQnVmZmVy
U2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZCk7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW1h
Z2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
c3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZD4gY3Jl
YXRlKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IGZsb2F0IHJl
c29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSwgV2ViQ29yZTo6UGl4ZWxGb3JtYXQs
IGNvbnN0IFdlYkNvcmU6Okhvc3RXaW5kb3cqKTsKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRy
PEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZD4gY3JlYXRlKGNvbnN0IFdlYkNv
cmU6OkZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGludGVy
bmFsU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlLCBXZWJD
b3JlOjpQaXhlbEZvcm1hdCwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKTsKKyAgICBzdGF0aWMg
c3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZD4gY3Jl
YXRlKGNvbnN0IFBhcmFtZXRlcnMmLCBjb25zdCBXZWJDb3JlOjpIb3N0V2luZG93Kik7CisgICAg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tl
bmQ+IGNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKTsK
IAogICAgIHVzaW5nIFdlYkNvcmU6OkltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6SW1hZ2VC
dWZmZXJJT1N1cmZhY2VCYWNrZW5kOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414880</attachid>
            <date>2020-11-25 22:00:02 -0800</date>
            <delta_ts>2020-11-26 00:47:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219007-20201125220001.patch</filename>
            <type>text/plain</type>
            <size>99272</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwMTY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzIzYWI2YjRlNmM0NDFj
MDYzZWM1Mzg0YzZmOTA5NDdiZDFhNDY5ZC4uOTAzOTEzNGVkODkzYjQ2NTJkNjc0ZjBmMGIyYzBm
ZWY5ZjA3YjgxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg3IEBACisyMDIwLTExLTI1ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10g
Q2xlYW4gdXAgcmVjcmVhdGluZyB0aGUgSW1hZ2VCdWZmZXJCYWNrZW5kIGJlY2F1c2Ugb2YgR1BV
IGNyYXNoaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMTkwMDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAtLSBBZGQgdGhlIHN0cnVjdHVyZSBJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnMuIE1h
a2UgQ29uY3JldGVJbWFnZUJ1ZmZlcgorICAgICAgICAgICBvd24gYW4gaW5zdGFuY2Ugb2YgdGhp
cyBzdHJ1Y3R1cmUuIEFuZCBtYWtlIEltYWdlQnVmZmVyQmFja2VuZCBvd24gYQorICAgICAgICAg
ICBjb25zdCByZWZlcmVuY2UgdG8gdGhpcyBzdHJ1Y3R1cmUuCisgICAgICAgIC0tIEV4cG9zZSB0
aGUgSW1hZ2VCdWZmZXJCYWNrZW5kIGNyZWF0aW9uIHBhcmFtZXRlcnMgdGhyb3VnaCBJbWFnZUJ1
ZmZlci4KKyAgICAgICAgLS0gRXhwb3NlIG1ldGhvZHMgdG8gc2V0IGFuZCBjbGVhciB0aGUgYmFj
a2VuZCBvZiBhbiBJbWFnZUJ1ZmZlci4KKyAgICAgICAgLS0gRXhwb3NlIHN1Ym1pdERyYXdpbmdD
b250ZXh0KCkgYW5kIGRpZEZsdXNoKCkgdGhyb3VnaCBJbWFnZUJ1ZmZlciBzbyBubworICAgICAg
ICAgICBjYXN0aW5nIGlzIG5lZWRlZCB3aGVuIGNhbGxpbmcgdGhlc2UgZnVuY3Rpb25zIHRocm91
Z2ggUmVtb3RlSW1hZ2VCdWZlclByb3h5LgorICAgICAgICAtLSBSZXBsYWNlIGFsbCB0aGUgaW5z
dGFuY2VzIG9mICdpc0FjY2VsZXJhdGVkJyBieSAncmVuZGVyaW5nTW9kZScgc28gbm8KKyAgICAg
ICAgICAgbmVlZCB0byBjb252ZXJ0IG9uZSB0eXBlIHRvIHRoZSBvdGhlci4KKworICAgICAgICAq
IEhlYWRlcnMuY21ha2U6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6cHJl
cGFyZUZvckRpc3BsYXkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1h
Z2VCdWZmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbmNyZXRlSW1hZ2VCdWZmZXI6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb25jcmV0ZUltYWdlQnVmZmVyOjpDb25jcmV0ZUltYWdl
QnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OnN1Ym1pdERyYXdpbmdDb250ZXh0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpzdWJtaXREaXNwbGF5TGlzdCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6ZGlkRmx1c2gpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VC
dWZmZXI6OmZsdXNoRHJhd2luZ0NvbnRleHRBbmRDb21taXQpOiBEZWxldGVkLgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OkltYWdlQnVmZmVyQmFja2VuZCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OnRvQkdSQURhdGEgY29uc3QpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjptZW1vcnlDb3N0IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlQnVmZmVyQmFja2VuZDo6Ynl0ZXNQZXJSb3cgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjp0b0JhY2tlbmRDb29yZGluYXRlcyBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OmxvZ2ljYWxTaXplIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQmFja2VuZDo6cmVzb2x1dGlvblNjYWxlIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQmFja2VuZDo6Y29sb3JTcGFjZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OnBpeGVsRm9ybWF0
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQmFja2VuZDo6bG9naWNhbFJl
Y3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjpiYWNrZW5k
UmVjdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OmJhY2tl
bmRTaXplIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0
Zm9ybUltYWdlQnVmZmVyLmg6CisgICAgICAgIChpc1R5cGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kOjpkcmF3UGF0dGVybik6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tl
bmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJh
Y2tlbmQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VT
dXJmYWNlQmFja2VuZDo6SW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQpOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQ6OnBsYXRm
b3JtVHJhbnNmb3JtQ29sb3JTcGFjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kOjpJbWFnZUJ1
ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJD
YWlyb1N1cmZhY2VCYWNrZW5kOjpiYWNrZW5kU2l6ZSBjb25zdCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JhY2tlbmQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OnNldHVwQ29udGV4dCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNHQmFja2VuZDo6Y29weUltYWdlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ0dCYWNrZW5kOjpzaW5rSW50b0ltYWdl
KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ0dCYWNrZW5kOjpkcmF3KToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ0dCYWNrZW5kOjpkcmF3UGF0dGVybik6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNHQmFja2VuZDo6YmFzZVRyYW5zZm9ybSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNHQmFja2VuZDo6dG9DRkRhdGEgY29uc3QpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5k
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OkltYWdl
QnVmZmVyQ0dCaXRtYXBCYWNrZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ0dC
aXRtYXBCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6SW1hZ2VCdWZmZXJJT1N1
cmZhY2VCYWNrZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVySU9TdXJmYWNlQmFj
a2VuZDo6YmFja2VuZFNpemUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJJ
T1N1cmZhY2VCYWNrZW5kOjpkcmF3Q29uc3VtaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RGbHVzaElkZW50aWZpZXIuaDogQWRk
ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
SW1hZ2VCdWZmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJbWFnZUJ1ZmZl
cjo6SW1hZ2VCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1
ZmZlckRpcmVjdDJEQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckRp
cmVjdDJEQmFja2VuZDo6Y29weUltYWdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
QnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpkcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVm
ZmVyRGlyZWN0MkRCYWNrZW5kOjpkcmF3UGF0dGVybik6CisKIDIwMjAtMTEtMjIgIEFudHRpIEtv
aXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdW0ludGVncmF0aW9uXSBD
b252ZXJ0IHNvbWUgcmVtYWluaW5nIElubGluZUJveCBhY2Nlc3MgdG8gdXNlIGlubGluZSBpdGVy
YXRvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwppbmRleCBlOTc3NjliZWI0MGFmYzVmOGRjYzQ3Y2IxNDFmOGM1ODA1MDMzMTRj
Li43MmJiN2Q4OTkwODNiMzlmNmQ0NWMzYzZjMzAyMmNhYzhmMWMxMGY4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAt
MSwzICsxLDYyIEBACisyMDIwLTExLTI1ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUu
Y29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10gQ2xlYW4gdXAgcmVjcmVhdGluZyB0aGUgSW1h
Z2VCdWZmZXJCYWNrZW5kIGJlY2F1c2Ugb2YgR1BVIGNyYXNoaW5nCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTkwMDcKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGlzIG5vIG5lZWQgdG8gc3RvcmUg
dGhlIGJhY2tlbmQgcGFyYW1ldGVycyBpbiBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5LgorICAgICAg
ICBUaGVzZSBwYXJhbWV0ZXJzIGNhbiBiZSBhY2Nlc3NlZCBmcm9tIHRoZSBjdXJyZW50IEltYWdl
QnVmZmVyQmFja2VuZCB2aWEKKyAgICAgICAgdGhlIEltYWdlQnVmZmVyIGJlZm9yZSB0aGUgYmFj
a2VuZCBpcyBjbGVhcmVkLgorCisgICAgICAgIFJlbW92ZSB0aGUgdHJhaXRzIGRlZmluaXRpb24g
Zm9yIFJlbW90ZUltYWdlQnVmZmVyUHJveHkgdHlwZXMgYmVjYXVzZQorICAgICAgICB0aGV5IGFy
ZSB3cm9uZy4gQWxsIEltYWdlQnVmZmVycyBoYXZlIHZhbGlkIHJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcigpCisgICAgICAgIHJlZ2FyZGxlc3Mgd2hldGhlciB0aGV5IGFyZSByZW1vdGUgb3Ig
bm90LiBJbWFnZUJ1ZmZlcjo6c2V0QmFja2VuZCBhbmQKKyAgICAgICAgSW1hZ2VCdWZmZXI6OmNv
bW1pdEZsdXNoRGlzcGxheUxpc3QoKSBhcmUgbm93IGltcGxlbWVudGVkIGluIFdlYkNvcmUuCisK
KyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmg6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyOjpSZW1vdGVJbWFnZUJ1ZmZlcik6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyOjpzdWJtaXREaXNwbGF5TGlzdCk6IERlbGV0
ZWQuCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5k
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6ZGlkQ3JlYXRl
SW1hZ2VCdWZmZXJCYWNrZW5kKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFj
a2VuZDo6YXBwbHlEaXNwbGF5TGlzdHNGcm9tSGFuZGxlKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlUmVuZGVyaW5nQmFja2VuZDo6aW1hZ2VCdWZmZXJCYWNrZW5kV2FzQ3JlYXRlZCk6IERlbGV0
ZWQuCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5k
Lmg6CisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdT
dG9yZS5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmRpc3Bs
YXkpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVh
YmxlQml0bWFwQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkltYWdlQnVmZmVyU2hhcmVh
YmxlQml0bWFwQmFja2VuZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6SW1hZ2VCdWZmZXJT
aGFyZWFibGVCaXRtYXBCYWNrZW5kOjpJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQp
OgorICAgICAgICAoV2ViS2l0OjpJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmJh
Y2tlbmRTaXplIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFn
ZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9QbGF0Zm9ybVJlbW90ZUltYWdlQnVmZmVyUHJveHkuaDoKKyAgICAgICAgKGlz
VHlwZSk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
SW1hZ2VCdWZmZXJQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlclBy
b3h5OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlclByb3h5OjpS
ZW1vdGVJbWFnZUJ1ZmZlclByb3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZm
ZXJQcm94eTo6Y2xlYXJCYWNrZW5kKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
SW1hZ2VCdWZmZXJQcm94eTo6Y3JlYXRlQmFja2VuZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUltYWdlQnVmZmVyUHJveHk6OmRpZEZsdXNoKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6c2l6ZSBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyUHJveHk6OnJlbmRlcmluZ01vZGUgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlclByb3h5Ojpj
b2xvclNwYWNlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VC
dWZmZXJQcm94eTo6cGl4ZWxGb3JtYXQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVJbWFnZUJ1ZmZlclByb3h5OjpzdWJtaXREaXNwbGF5TGlzdCk6IERlbGV0ZWQuCisg
ICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Ojpy
ZWVzdGFibGlzaEdQVVByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5Ojp3YWl0Rm9yRGlkQ3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5k
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpjcmVhdGVJ
bWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eTo6ZGlkQ3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5OjpkaWRGbHVzaCk6CisgICAgICAgIChXZWJLaXQ6OnJlY3Jl
YXRlSW1hZ2VCdWZmZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHk6OndhaXRGb3JJbWFnZUJ1ZmZlckJhY2tlbmRXYXNDcmVhdGVkKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjppbWFn
ZUJ1ZmZlckJhY2tlbmRXYXNDcmVhdGVkKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkubWVzc2Fn
ZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZm
ZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW1hZ2VC
dWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGUpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFj
a2VuZC5oOgorCiAyMDIwLTExLTIxICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgog
CiAgICAgICAgIEltcGxlbWVudCBhdWRpbyBjYXB0dXJlIGZvciBTcGVlY2hSZWNvZ25pdGlvbiBv
biBtYWNPUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJj
ZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggMzc4OWFhMzgzOTQwZDI1NzQxMjRiYzJmZjQz
ZTdlZWM0YWU5NTBkNS4uZGZhMjQ0ZmRjZDlkNzMzZDdjOTU4OTI3M2UwNjljN2MwMDRmZTdhNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9IZWFkZXJzLmNtYWtlCkBAIC0xMjcwLDYgKzEyNzAsNyBAQCBzZXQoV2ViQ29yZV9QUklW
QVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0LmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3REcmF3R2x5cGhzUmVjb3JkZXIuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0LmgKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RGbHVzaElkZW50aWZpZXIuaAogICAgIHBsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEltYWdlQnVmZmVyLmgKICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmgKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlwZS5oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOTFk
NzRjNzQ1MjI1OTc5MDY3OTFhZDFlOGEyMTI4M2Q1NGM2MTE2OC4uZGQ1YWExYzE1MDZkZTE5Nzkz
MjY1NjczYjcxODdiMmFlNGVkNDQzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjE4Nyw2ICsyMTg3LDcgQEAKIAkJNzI3QTdG
M0EyNDA3OEI4NDAwNEQyOTMxIC8qIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzJCQUMzQUIyM0UxRTU0
NDAwOEQ3NDFDIC8qIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcyOTlCQzY3MjNENkE1MzIwMEND
Njg4MyAvKiBBbHBoYVByZW11bHRpcGxpY2F0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Mjk5QkM2NDIzRDY4NkE2MDBDQzY4ODMgLyogQWxwaGFQ
cmVtdWx0aXBsaWNhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTcyOTlCQzY4MjNENkE1M0UwMENDNjg4MyAvKiBSZW5kZXJpbmdNb2RlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Mjk5QkM2NjIz
RDY4NkM2MDBDQzY4ODMgLyogUmVuZGVyaW5nTW9kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTcyOUM0NUU4MjU2RTA5MTkwMDA0MDdDRiAvKiBE
aXNwbGF5TGlzdEZsdXNoSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNzI5QzQ1RTYyNTZFMDVGOTAwMDQwN0NGIC8qIERpc3BsYXlMaXN0
Rmx1c2hJZGVudGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNzI5RDA1MzAyNTMxNDI0MzAwNDIyMDk4IC8qIFJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNzI5RDA1MkUyNTMxM0UyNjAwNDIyMDk4IC8qIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcy
QTczQkVGMjQ1QTNGOTAwMDFDOUQwMyAvKiBBbmltYXRpb25GcmFtZVJhdGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyMkE4MTVDMjM4RkQ1MDUwMEMw
MDU4MyAvKiBBbmltYXRpb25GcmFtZVJhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk3MkFCOUEyMTI1NUE5RkRFMDBFNkVCRjEgLyogTmF0aXZl
SW1hZ2VSZWZlcmVuY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDcyQUI5QTFGMjU1QTlFQTYwMEU2RUJGMSAvKiBOYXRpdmVJbWFnZVJlZmVyZW5jZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMDA3
Miw2ICsxMDA3Myw3IEBACiAJCTcyN0FGRUQzMUEyRUE2QTAwMDA0NDJFOCAvKiBFWFRzUkdCLmlk
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBFWFRzUkdCLmlkbDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNzI5OUJDNjQyM0Q2ODZBNjAwQ0M2ODgzIC8qIEFscGhhUHJlbXVsdGlwbGlj
YXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWxwaGFQcmVtdWx0aXBsaWNhdGlvbi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3Mjk5QkM2NjIzRDY4NkM2MDBDQzY4ODMgLyogUmVuZGVy
aW5nTW9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJpbmdNb2RlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTcyOUM0NUU2MjU2RTA1RjkwMDA0MDdDRiAvKiBEaXNwbGF5TGlzdEZs
dXNoSWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEaXNwbGF5TGlzdEZsdXNoSWRlbnRpZmll
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjlEMDUyRTI1MzEzRTI2MDA0MjIw
OTggLyogUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
MkFCOUExRjI1NUE5RUE2MDBFNkVCRjEgLyogTmF0aXZlSW1hZ2VSZWZlcmVuY2UuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gTmF0aXZlSW1hZ2VSZWZlcmVuY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNzJCQUMzQTQyM0UxNzMyNzAwOEQ3NDFDIC8qIEltYWdlQnVmZmVyQmFja2VuZC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbWFnZUJ1ZmZlckJhY2tlbmQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTc3OTAsNiArMTc3OTIsNyBAQAog
CQkJCTFDQUY1NkRFMjUzMDI0NUEwMDE3QjQ3MiAvKiBEaXNwbGF5TGlzdERyYXdHbHlwaHNSZWNv
cmRlckNvcmVUZXh0LmNwcCAqLywKIAkJCQk1NUMwQTI5NTIzRkUyQ0UwMDBGMkNCOTMgLyogRGlz
cGxheUxpc3REcmF3aW5nQ29udGV4dC5jcHAgKi8sCiAJCQkJNzJFQTA5RjkyM0ZDQ0M2QTAwODUw
NEE1IC8qIERpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuaCAqLywKKwkJCQk3MjlDNDVFNjI1NkUw
NUY5MDAwNDA3Q0YgLyogRGlzcGxheUxpc3RGbHVzaElkZW50aWZpZXIuaCAqLywKIAkJCQk3MkVB
MDlGNzIzRkNDQjNEMDA4NTA0QTUgLyogRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oICovLAogCQkJ
CUY0MjJCOEI2MjUzRjcwNjUwMDRFNzdFOCAvKiBEaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwICov
LAogCQkJCUY0MjJCOEI1MjUzRjcwNjUwMDRFNzdFOCAvKiBEaXNwbGF5TGlzdEl0ZW1CdWZmZXIu
aCAqLywKQEAgLTE4MDIyLDcgKzE4MDI1LDYgQEAKIAkJCQlBMUNDNTY0QTFGNDYxM0JCMDBBNDU1
NUIgLyogUGF5bWVudFJlcXVlc3QgKi8sCiAJCQkJMUQwMDI2OUEyMzc0QjlGODAwQ0E2Q0RGIC8q
IFBpY3R1cmVJblBpY3R1cmUgKi8sCiAJCQkJQTlEMjQ3RjkwRDc1N0U0MTAwRkRGOTU5IC8qIFBs
dWdpbnMgKi8sCi0JCQkJODlGNjBCMTcxNTdGNkEwMjAwNzVFMTU3IC8qIFF1b3RhICovLAogCQkJ
CUJDOTg1NDQ2MENEM0RBNUYwMDA2OUJDMSAvKiBSYW5nZXMgKi8sCiAJCQkJQ0Q4QzZDMjQyMkZE
REE2NDAwQTcyMEFCIC8qIFJlbW90ZVBsYXliYWNrICovLAogCQkJCTUxODJDMjRDMUYzMTQyMDkw
MDU5QkE3QyAvKiBTZXJ2aWNlV29ya2VycyAqLywKQEAgLTMxNjc0LDYgKzMxNjc2LDcgQEAKIAkJ
CQkwRkU1RkJEMzFDM0RENTFFMDAwN0EyQ0EgLyogRGlzcGxheUxpc3QuaCBpbiBIZWFkZXJzICov
LAogCQkJCTFDQUY1NkRCMjUzMDFBQzgwMDE3QjQ3MiAvKiBEaXNwbGF5TGlzdERyYXdHbHlwaHNS
ZWNvcmRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTVBRDA5NDAyNDA4OTY0MDAwREU0RDJGIC8q
IERpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuaCBpbiBIZWFkZXJzICovLAorCQkJCTcyOUM0NUU4
MjU2RTA5MTkwMDA0MDdDRiAvKiBEaXNwbGF5TGlzdEZsdXNoSWRlbnRpZmllci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNTVBRDA5M0UyNDA4OTYzNTAwREU0RDJGIC8qIERpc3BsYXlMaXN0SW1hZ2VC
dWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUY0RDQwQkM5MjU1NDYzQkYwMDcyMTM0OSAvKiBE
aXNwbGF5TGlzdEl0ZW1CdWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRTVGQkQ1MUMzREQ1
MUUwMDA3QTJDQSAvKiBEaXNwbGF5TGlzdEl0ZW1zLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJh
c2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEQmFzZS5jcHAKaW5kZXggYTM5NTRjN2Y1ZTQyYzcyZjQxYTM4ODg5NDY1YjMxMjQyMmEwNDZm
Mi4uZWQxYWIwNWZkMGE2NTQzNTNlYmZkMTA4ODI3NjZjYTk1MDE4OWVhMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEQmFzZS5jcHAKQEAgLTIwNDIsNyArMjA0Miw3IEBAIEdyYXBoaWNzQ29udGV4dCogQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6ZHJhd2luZ0NvbnRleHQoKSBjb25zdAogdm9pZCBDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpwcmVwYXJlRm9yRGlzcGxheSgpCiB7CiAgICAgaWYg
KGF1dG8gYnVmZmVyID0gY2FudmFzQmFzZSgpLmJ1ZmZlcigpKQotICAgICAgICBidWZmZXItPmZs
dXNoRHJhd2luZ0NvbnRleHRBbmRDb21taXQoKTsKKyAgICAgICAgYnVmZmVyLT5zdWJtaXREcmF3
aW5nQ29udGV4dCgpOwogfQogCiBib29sIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6Om5l
ZWRzUHJlcGFyYXRpb25Gb3JEaXNwbGF5KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaAppbmRleCA4MjQyOTkw
MDJlZTY2MGYwYmFlM2YxNjNhZDFjODliMDNkNGRkYTc5Li4zOTMxMzI3MThhMGM2MDZmNDQ0YmIy
YjQ5ODI4YzdiNjA2YzQwZWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZlci5oCkBAIC0zNiwzMCArMzYsNDEgQEAgcHVi
bGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEltYWdlQnVmZmVyVHlwZSA9IENvbmNyZXRlSW1h
Z2VCdWZmZXIsIHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KICAgICBzdGF0aWMgUmVmUHRyPEltYWdl
QnVmZmVyVHlwZT4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlv
blNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBj
b25zdCBIb3N0V2luZG93KiBob3N0V2luZG93LCBBcmd1bWVudHMmJi4uLiBhcmd1bWVudHMpCiAg
ICAgewotICAgICAgICBhdXRvIGJhY2tlbmQgPSBCYWNrZW5kVHlwZTo6Y3JlYXRlKHNpemUsIHJl
c29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQsIGhvc3RXaW5kb3cpOworICAg
ICAgICBhdXRvIHBhcmFtZXRlcnMgPSBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJCYWNrZW5k
OjpQYXJhbWV0ZXJzPihuZXcgSW1hZ2VCdWZmZXJCYWNrZW5kOjpQYXJhbWV0ZXJzKHsgc2l6ZSwg
cmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCB9KSk7CisgICAgICAgIGF1
dG8gYmFja2VuZCA9IEJhY2tlbmRUeXBlOjpjcmVhdGUoKnBhcmFtZXRlcnMsIGhvc3RXaW5kb3cp
OwogICAgICAgICBpZiAoIWJhY2tlbmQpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbWFnZUJ1ZmZlclR5cGUoV1RGTW92ZShiYWNrZW5k
KSwgc3RkOjpmb3J3YXJkPEFyZ3VtZW50cz4oYXJndW1lbnRzKS4uLikpOworICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IEltYWdlQnVmZmVyVHlwZShXVEZNb3ZlKHBhcmFtZXRlcnMpLCBXVEZN
b3ZlKGJhY2tlbmQpLCBzdGQ6OmZvcndhcmQ8QXJndW1lbnRzPihhcmd1bWVudHMpLi4uKSk7CiAg
ICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSW1hZ2VCdWZmZXJUeXBlID0gQ29uY3JldGVJ
bWFnZUJ1ZmZlciwgdHlwZW5hbWUuLi4gQXJndW1lbnRzPgogICAgIHN0YXRpYyBSZWZQdHI8SW1h
Z2VCdWZmZXJUeXBlPiBjcmVhdGUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBjb25zdCBHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsIEFyZ3VtZW50cyYmLi4uIGFyZ3VtZW50cykKICAgICB7Ci0gICAg
ICAgIGF1dG8gYmFja2VuZCA9IEJhY2tlbmRUeXBlOjpjcmVhdGUoc2l6ZSwgY29udGV4dCk7Cisg
ICAgICAgIGF1dG8gcGFyYW1ldGVycyA9IHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckJhY2tl
bmQ6OlBhcmFtZXRlcnM+KG5ldyBJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnMoeyBzaXpl
LCAxLCBDb2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdSQTggfSkpOworICAgICAgICBh
dXRvIGJhY2tlbmQgPSBCYWNrZW5kVHlwZTo6Y3JlYXRlKCpwYXJhbWV0ZXJzLCBjb250ZXh0KTsK
ICAgICAgICAgaWYgKCFiYWNrZW5kKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW1hZ2VCdWZmZXJUeXBlKFdURk1vdmUoYmFja2VuZCks
IHN0ZDo6Zm9yd2FyZDxBcmd1bWVudHM+KGFyZ3VtZW50cykuLi4pKTsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBJbWFnZUJ1ZmZlclR5cGUoV1RGTW92ZShwYXJhbWV0ZXJzKSwgV1RGTW92
ZShiYWNrZW5kKSwgc3RkOjpmb3J3YXJkPEFyZ3VtZW50cz4oYXJndW1lbnRzKS4uLikpOwogICAg
IH0KIAotICAgIGJvb2wgaXNBY2NlbGVyYXRlZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEJh
Y2tlbmRUeXBlOjppc0FjY2VsZXJhdGVkOyB9CisgICAgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdN
b2RlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gQmFja2VuZFR5cGU6OnJlbmRlcmluZ01vZGU7
IH0KIAogcHJvdGVjdGVkOgotICAgIENvbmNyZXRlSW1hZ2VCdWZmZXIoc3RkOjp1bmlxdWVfcHRy
PEJhY2tlbmRUeXBlPiYmIGJhY2tlbmQgPSBudWxscHRyLCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyID0gUmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyOjpnZW5lcmF0ZSgpKQotICAgICAgICA6IG1fYmFja2VuZChXVEZNb3ZlKGJhY2tlbmQp
KQorICAgIENvbmNyZXRlSW1hZ2VCdWZmZXIoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQmFj
a2VuZDo6UGFyYW1ldGVycz4mJiBwYXJhbWV0ZXJzLCBzdGQ6OnVuaXF1ZV9wdHI8QmFja2VuZFR5
cGU+JiYgYmFja2VuZCA9IG51bGxwdHIsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgPSBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI6Omdl
bmVyYXRlKCkpCisgICAgICAgIDogbV9wYXJhbWV0ZXJzKFdURk1vdmUocGFyYW1ldGVycykpCisg
ICAgICAgICwgbV9iYWNrZW5kKFdURk1vdmUoYmFja2VuZCkpCiAgICAgICAgICwgbV9yZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogICAgIHsK
ICAgICB9CiAKKyAgICB2b2lkIHNldEJhY2tlbmQoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVy
QmFja2VuZD4mJiBiYWNrZW5kKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgQVNTRVJUKCFtX2Jh
Y2tlbmQpOworICAgICAgICBtX2JhY2tlbmQgPSBzdGQ6OnVuaXF1ZV9wdHI8QmFja2VuZFR5cGU+
IHsgc3RhdGljX2Nhc3Q8QmFja2VuZFR5cGUqPihiYWNrZW5kLnJlbGVhc2UoKSkgfTsKKyAgICB9
CisKKyAgICB2b2lkIGNsZWFyQmFja2VuZCgpIG92ZXJyaWRlIHsgbV9iYWNrZW5kID0gbnVsbHB0
cjsgfQorCiAgICAgdmlydHVhbCBCYWNrZW5kVHlwZSogZW5zdXJlQmFja2VuZENyZWF0ZWQoKSBj
b25zdCB7IHJldHVybiBtX2JhY2tlbmQuZ2V0KCk7IH0KIAogICAgIFJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcjsgfQpAQCAtNzgsMTkgKzg5LDEx
IEBAIHByb3RlY3RlZDoKICAgICAgICAgfQogICAgIH0KIAotICAgIEFmZmluZVRyYW5zZm9ybSBi
YXNlVHJhbnNmb3JtKCkgY29uc3Qgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIGlmIChhdXRvKiBi
YWNrZW5kID0gZW5zdXJlQmFja2VuZENyZWF0ZWQoKSkKLSAgICAgICAgICAgIHJldHVybiBiYWNr
ZW5kLT5iYXNlVHJhbnNmb3JtKCk7Ci0gICAgICAgIHJldHVybiB7IH07Ci0gICAgfQotCi0gICAg
SW50U2l6ZSBsb2dpY2FsU2l6ZSgpIGNvbnN0IG92ZXJyaWRlCi0gICAgewotICAgICAgICBpZiAo
YXV0byogYmFja2VuZCA9IGVuc3VyZUJhY2tlbmRDcmVhdGVkKCkpCi0gICAgICAgICAgICByZXR1
cm4gYmFja2VuZC0+bG9naWNhbFNpemUoKTsKLSAgICAgICAgcmV0dXJuIHsgfTsKLSAgICB9Cisg
ICAgSW50U2l6ZSBsb2dpY2FsU2l6ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEludFNpemUo
bV9wYXJhbWV0ZXJzLT5sb2dpY2FsU2l6ZSk7IH0KKyAgICBmbG9hdCByZXNvbHV0aW9uU2NhbGUo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3BhcmFtZXRlcnMtPnJlc29sdXRpb25TY2FsZTsg
fQorICAgIENvbG9yU3BhY2UgY29sb3JTcGFjZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1f
cGFyYW1ldGVycy0+Y29sb3JTcGFjZTsgfQorICAgIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0KCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9wYXJhbWV0ZXJzLT5waXhlbEZvcm1hdDsgfQorICAg
IGNvbnN0IEltYWdlQnVmZmVyQmFja2VuZDo6UGFyYW1ldGVycyYgcGFyYW1ldGVycygpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuICptX3BhcmFtZXRlcnM7IH0KIAogICAgIEludFNpemUgYmFja2Vu
ZFNpemUoKSBjb25zdCBvdmVycmlkZQogICAgIHsKQEAgLTk5LDExICsxMDIsMTEgQEAgcHJvdGVj
dGVkOgogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KIAotICAgIGZsb2F0IHJlc29sdXRpb25T
Y2FsZSgpIGNvbnN0IG92ZXJyaWRlCisgICAgQWZmaW5lVHJhbnNmb3JtIGJhc2VUcmFuc2Zvcm0o
KSBjb25zdCBvdmVycmlkZQogICAgIHsKICAgICAgICAgaWYgKGF1dG8qIGJhY2tlbmQgPSBlbnN1
cmVCYWNrZW5kQ3JlYXRlZCgpKQotICAgICAgICAgICAgcmV0dXJuIGJhY2tlbmQtPnJlc29sdXRp
b25TY2FsZSgpOwotICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgICAgIHJldHVybiBiYWNrZW5k
LT5iYXNlVHJhbnNmb3JtKCk7CisgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCiAgICAgc2l6
ZV90IG1lbW9yeUNvc3QoKSBjb25zdCBvdmVycmlkZQpAQCAtMjkxLDYgKzI5NCw3IEBAIHByb3Rl
Y3RlZDoKICAgICAgICAgICAgIGJhY2tlbmQtPnJlbGVhc2VCdWZmZXJUb1Bvb2woKTsKICAgICB9
CiAKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJCYWNrZW5kOjpQYXJhbWV0ZXJzPiBt
X3BhcmFtZXRlcnM7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEJhY2tlbmRUeXBlPiBtX2JhY2tlbmQ7
CiAgICAgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1
ZmZlci5oCmluZGV4IDYyYTNmN2ZmYTM3NzhhOGMwMTM5MDE2MjU0Mzc1M2FhN2JkMmMyMWQuLjc3
ZDkyNjE2M2Q5NjQ2ZTI5NWZkMDRiN2MxMmQ0OWY3NTRjOWI5NmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaApAQCAtMjcsNiArMjcsNyBAQAog
CiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkRpc3BsYXlMaXN0Rmx1c2hJZGVudGlmaWVyLmgi
CiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXJCYWNrZW5kLmgiCiAjaW5jbHVkZSAiUmVuZGVyaW5nTW9k
ZS5oIgogI2luY2x1ZGUgIlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5oIgpAQCAtNjAsMTAg
KzYxLDEzIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgRmxvYXRSZWN0IGNsYW1wZWRSZWN0KGNvbnN0
IEZsb2F0UmVjdCYpOwogCiAgICAgc3RhdGljIEludFNpemUgY29tcGF0aWJsZUJ1ZmZlclNpemUo
Y29uc3QgRmxvYXRTaXplJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0Jik7Ci0gICAgCisKICAgICBX
RUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5JbWFnZUJ1ZmZlcigpID0gZGVmYXVsdDsKIAotICAgIHZp
cnR1YWwgYm9vbCBpc0FjY2VsZXJhdGVkKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBz
ZXRCYWNrZW5kKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckJhY2tlbmQ+JiYpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgY2xlYXJCYWNrZW5kKCkgPSAwOworCisgICAgdmlydHVhbCBSZW5kZXJp
bmdNb2RlIHJlbmRlcmluZ01vZGUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCkgY29uc3QgeyBy
ZXR1cm4geyB9OyB9CiAgICAgCiAgICAgdmlydHVhbCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQo
KSBjb25zdCA9IDA7CkBAIC03MiwxMiArNzYsMTggQEAgcHVibGljOgogICAgIHZpcnR1YWwgRGlz
cGxheUxpc3Q6OkRyYXdpbmdDb250ZXh0KiBkcmF3aW5nQ29udGV4dCgpIHsgcmV0dXJuIG51bGxw
dHI7IH0KICAgICB2aXJ0dWFsIGJvb2wgcHJlZmVyc1ByZXBhcmF0aW9uRm9yRGlzcGxheSgpIHsg
cmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCB2b2lkIGZsdXNoRHJhd2luZ0NvbnRleHQoKSB7
IH0KLSAgICB2aXJ0dWFsIHZvaWQgZmx1c2hEcmF3aW5nQ29udGV4dEFuZENvbW1pdCgpIHsgfQor
ICAgIHZpcnR1YWwgdm9pZCBzdWJtaXREcmF3aW5nQ29udGV4dCgpIHsgfQorICAgIHZpcnR1YWwg
dm9pZCBzdWJtaXREaXNwbGF5TGlzdChjb25zdCBEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmKSB7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmx1c2goRGlzcGxheUxpc3Q6OkZsdXNoSWRlbnRpZmll
cikgeyB9CiAKLSAgICB2aXJ0dWFsIEFmZmluZVRyYW5zZm9ybSBiYXNlVHJhbnNmb3JtKCkgY29u
c3QgPSAwOwogICAgIHZpcnR1YWwgSW50U2l6ZSBsb2dpY2FsU2l6ZSgpIGNvbnN0ID0gMDsKLSAg
ICB2aXJ0dWFsIEludFNpemUgYmFja2VuZFNpemUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBm
bG9hdCByZXNvbHV0aW9uU2NhbGUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBDb2xvclNwYWNl
IGNvbG9yU3BhY2UoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBQaXhlbEZvcm1hdCBwaXhlbEZv
cm1hdCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGNvbnN0IEltYWdlQnVmZmVyQmFja2VuZDo6
UGFyYW1ldGVycyYgcGFyYW1ldGVycygpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgSW50U2l6
ZSBiYWNrZW5kU2l6ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEFmZmluZVRyYW5zZm9ybSBi
YXNlVHJhbnNmb3JtKCkgY29uc3QgPSAwOwogCiAgICAgdmlydHVhbCBzaXplX3QgbWVtb3J5Q29z
dCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHNpemVfdCBleHRlcm5hbE1lbW9yeUNvc3QoKSBj
b25zdCA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZUJ1ZmZlckJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcAppbmRleCA3ZjBmZTllNmQ5NjZlNzRiNDVmODVhYWQwZTNi
MmZiODRkOTQ1MGI5Li45Mzk0ZTdiZmY0MjliYzIxZWZjZGYzYjE0MDExMWYxYWUyY2E5NDRkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJh
Y2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVm
ZmVyQmFja2VuZC5jcHAKQEAgLTMxLDEyICszMSw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotSW1hZ2VCdWZmZXJCYWNrZW5kOjpJbWFnZUJ1ZmZlckJhY2tlbmQoY29uc3QgRmxvYXRTaXpl
JiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRp
b25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCkK
LSAgICA6IG1fbG9naWNhbFNpemUobG9naWNhbFNpemUpCi0gICAgLCBtX2JhY2tlbmRTaXplKGJh
Y2tlbmRTaXplKQotICAgICwgbV9yZXNvbHV0aW9uU2NhbGUocmVzb2x1dGlvblNjYWxlKQotICAg
ICwgbV9jb2xvclNwYWNlKGNvbG9yU3BhY2UpCi0gICAgLCBtX3BpeGVsRm9ybWF0KHBpeGVsRm9y
bWF0KQorSW1hZ2VCdWZmZXJCYWNrZW5kOjpJbWFnZUJ1ZmZlckJhY2tlbmQoY29uc3QgUGFyYW1l
dGVycyYgcGFyYW1ldGVycykKKyAgICA6IG1fcGFyYW1ldGVycyhwYXJhbWV0ZXJzKQogewogfQog
CkBAIC05OSwxNSArOTUsMTUgQEAgdm9pZCBJbWFnZUJ1ZmZlckJhY2tlbmQ6OmNvbnZlcnRUb0x1
bWluYW5jZU1hc2soKQogCiBWZWN0b3I8dWludDhfdD4gSW1hZ2VCdWZmZXJCYWNrZW5kOjp0b0JH
UkFEYXRhKHZvaWQqIGRhdGEpIGNvbnN0CiB7Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3VsdCg0
ICogbV9sb2dpY2FsU2l6ZS5hcmVhKCkudW5zYWZlR2V0KCkpOwotICAgIHNpemVfdCBkZXN0Qnl0
ZXNQZXJSb3cgPSBtX2xvZ2ljYWxTaXplLndpZHRoKCkgKiA0OworICAgIFZlY3Rvcjx1aW50OF90
PiByZXN1bHQoNCAqIGxvZ2ljYWxTaXplKCkuYXJlYSgpLnVuc2FmZUdldCgpKTsKKyAgICBzaXpl
X3QgZGVzdEJ5dGVzUGVyUm93ID0gbG9naWNhbFNpemUoKS53aWR0aCgpICogNDsKICAgICBzaXpl
X3Qgc3JjQnl0ZXNQZXJSb3cgPSBieXRlc1BlclJvdygpOwogCiAgICAgdWludDhfdCogc3JjUm93
cyA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGRhdGEpOwogCiAgICAgY29weUltYWdlUGl4
ZWxzKAogICAgICAgICBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkLCBwaXhl
bEZvcm1hdCgpLCBzcmNCeXRlc1BlclJvdywgc3JjUm93cywKLSAgICAgICAgQWxwaGFQcmVtdWx0
aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6QkdSQTgsIGRlc3RCeXRl
c1BlclJvdywgcmVzdWx0LmRhdGEoKSwgbV9sb2dpY2FsU2l6ZSk7CisgICAgICAgIEFscGhhUHJl
bXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OkJHUkE4LCBkZXN0
Qnl0ZXNQZXJSb3csIHJlc3VsdC5kYXRhKCksIGxvZ2ljYWxTaXplKCkpOwogCiAgICAgcmV0dXJu
IHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlQnVmZmVyQmFja2VuZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VCdWZmZXJCYWNrZW5kLmgKaW5kZXggNTgwNjcxNWE3YjJjODc1NzY5MDJhNzczNTg0ZGYx
ODA1ODI1MTAwZi4uOTU0ZjI3OTI1MWNmNjFjZWUyZGI5OGQwODJhMWY2NWMxNjBiNTFkYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNr
ZW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJC
YWNrZW5kLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJJbWFnZVBhaW50aW5nT3B0aW9u
cy5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUxheWVyLmgiCisj
aW5jbHVkZSAiUmVuZGVyaW5nTW9kZS5oIgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CiAKQEAgLTc3LDYgKzc4LDEzIEBAIHB1YmxpYzoKIAogY2xhc3Mg
SW1hZ2VCdWZmZXJCYWNrZW5kIHsKIHB1YmxpYzoKKyAgICBzdHJ1Y3QgUGFyYW1ldGVycyB7Cisg
ICAgICAgIEZsb2F0U2l6ZSBsb2dpY2FsU2l6ZTsKKyAgICAgICAgZmxvYXQgcmVzb2x1dGlvblNj
YWxlOworICAgICAgICBDb2xvclNwYWNlIGNvbG9yU3BhY2U7CisgICAgICAgIFBpeGVsRm9ybWF0
IHBpeGVsRm9ybWF0OworICAgIH07CisKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5JbWFn
ZUJ1ZmZlckJhY2tlbmQoKSA9IGRlZmF1bHQ7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
SW50U2l6ZSBjYWxjdWxhdGVCYWNrZW5kU2l6ZShjb25zdCBGbG9hdFNpemUmLCBmbG9hdCByZXNv
bHV0aW9uU2NhbGUpOwpAQCAtODQsMTQgKzkyLDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZmx1
c2hDb250ZXh0KCkgeyB9CiAKLSAgICBJbnRTaXplIGxvZ2ljYWxTaXplKCkgY29uc3QgeyByZXR1
cm4gbV9sb2dpY2FsU2l6ZTsgfQotICAgIEludFNpemUgYmFja2VuZFNpemUoKSBjb25zdCB7IHJl
dHVybiBtX2JhY2tlbmRTaXplOyB9Ci0gICAgZmxvYXQgcmVzb2x1dGlvblNjYWxlKCkgY29uc3Qg
eyByZXR1cm4gbV9yZXNvbHV0aW9uU2NhbGU7IH0KLSAgICBDb2xvclNwYWNlIGNvbG9yU3BhY2Uo
KSBjb25zdCB7IHJldHVybiBtX2NvbG9yU3BhY2U7IH0KLSAgICBQaXhlbEZvcm1hdCBwaXhlbEZv
cm1hdCgpIGNvbnN0IHsgcmV0dXJuIG1fcGl4ZWxGb3JtYXQ7IH0KLQorICAgIHZpcnR1YWwgSW50
U2l6ZSBiYWNrZW5kU2l6ZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIEFmZmluZVRyYW5zZm9y
bSBiYXNlVHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gQWZmaW5lVHJhbnNmb3JtKCk7IH0KLSAg
ICB2aXJ0dWFsIHNpemVfdCBtZW1vcnlDb3N0KCkgY29uc3QgeyByZXR1cm4gNCAqIG1fYmFja2Vu
ZFNpemUuYXJlYSgpLnVuc2FmZUdldCgpOyB9CisKKyAgICB2aXJ0dWFsIHNpemVfdCBtZW1vcnlD
b3N0KCkgY29uc3QgeyByZXR1cm4gNCAqIGJhY2tlbmRTaXplKCkuYXJlYSgpLnVuc2FmZUdldCgp
OyB9CiAgICAgdmlydHVhbCBzaXplX3QgZXh0ZXJuYWxNZW1vcnlDb3N0KCkgY29uc3QgeyByZXR1
cm4gMDsgfQogCiAgICAgdmlydHVhbCBSZWZQdHI8TmF0aXZlSW1hZ2U+IGNvcHlOYXRpdmVJbWFn
ZShCYWNraW5nU3RvcmVDb3B5KSBjb25zdCA9IDA7CkBAIC0xMjcsMjQgKzEzMSwyOSBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8VGhyZWFkU2FmZUltYWdlQnVmZmVyRmx1
c2hlcj4gY3JlYXRlRmx1c2hlcigpIHsgcmV0dXJuIG51bGxwdHI7IH0KICAgICAKICAgICBzdGF0
aWMgY29uc3RleHByIGJvb2wgaXNPcmlnaW5BdFVwcGVyTGVmdENvcm5lciA9IGZhbHNlOwotICAg
IHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0FjY2VsZXJhdGVkID0gZmFsc2U7CisgICAgc3RhdGlj
IGNvbnN0ZXhwciBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUgPSBSZW5kZXJpbmdNb2RlOjpV
bmFjY2VsZXJhdGVkOwogCiBwcm90ZWN0ZWQ6Ci0gICAgV0VCQ09SRV9FWFBPUlQgSW1hZ2VCdWZm
ZXJCYWNrZW5kKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEludFNpemUmIGJh
Y2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UsIFBpeGVsRm9ybWF0
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBJbWFnZUJ1ZmZlckJhY2tlbmQoY29uc3QgUGFyYW1ldGVy
cyYpOwogCi0gICAgdmlydHVhbCB1bnNpZ25lZCBieXRlc1BlclJvdygpIGNvbnN0IHsgcmV0dXJu
IDQgKiBtX2JhY2tlbmRTaXplLndpZHRoKCk7IH0KKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGJ5dGVz
UGVyUm93KCkgY29uc3QgeyByZXR1cm4gNCAqIGJhY2tlbmRTaXplKCkud2lkdGgoKTsgfQogCiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICBUIHRvQmFja2VuZENvb3JkaW5hdGVzKFQgdCkg
Y29uc3QKICAgICB7CiAgICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPFQsIEludFBv
aW50Pjo6dmFsdWUgfHwgc3RkOjppc19zYW1lPFQsIEludFNpemU+Ojp2YWx1ZSB8fCBzdGQ6Omlz
X3NhbWU8VCwgSW50UmVjdD46OnZhbHVlKTsKLSAgICAgICAgaWYgKG1fcmVzb2x1dGlvblNjYWxl
ICE9IDEpCi0gICAgICAgICAgICB0LnNjYWxlKG1fcmVzb2x1dGlvblNjYWxlKTsKKyAgICAgICAg
aWYgKHJlc29sdXRpb25TY2FsZSgpICE9IDEpCisgICAgICAgICAgICB0LnNjYWxlKHJlc29sdXRp
b25TY2FsZSgpKTsKICAgICAgICAgcmV0dXJuIHQ7CiAgICAgfQogCi0gICAgSW50UmVjdCBsb2dp
Y2FsUmVjdCgpIGNvbnN0IHsgcmV0dXJuIEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgbV9sb2dp
Y2FsU2l6ZSk7IH07Ci0gICAgSW50UmVjdCBiYWNrZW5kUmVjdCgpIGNvbnN0IHsgcmV0dXJuIElu
dFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgbV9iYWNrZW5kU2l6ZSk7IH07CisgICAgSW50U2l6ZSBs
b2dpY2FsU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIEludFNpemUobV9wYXJhbWV0ZXJzLmxvZ2ljYWxT
aXplKTsgfQorICAgIGZsb2F0IHJlc29sdXRpb25TY2FsZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFy
YW1ldGVycy5yZXNvbHV0aW9uU2NhbGU7IH0KKyAgICBDb2xvclNwYWNlIGNvbG9yU3BhY2UoKSBj
b25zdCB7IHJldHVybiBtX3BhcmFtZXRlcnMuY29sb3JTcGFjZTsgfQorICAgIFBpeGVsRm9ybWF0
IHBpeGVsRm9ybWF0KCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0ZXJzLnBpeGVsRm9ybWF0OyB9
CisKKyAgICBJbnRSZWN0IGxvZ2ljYWxSZWN0KCkgY29uc3QgeyByZXR1cm4gSW50UmVjdChJbnRQ
b2ludDo6emVybygpLCBsb2dpY2FsU2l6ZSgpKTsgfTsKKyAgICBJbnRSZWN0IGJhY2tlbmRSZWN0
KCkgY29uc3QgeyByZXR1cm4gSW50UmVjdChJbnRQb2ludDo6emVybygpLCBiYWNrZW5kU2l6ZSgp
KTsgfTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBjb3B5SW1hZ2VQaXhlbHMo
CiAgICAgICAgIEFscGhhUHJlbXVsdGlwbGljYXRpb24gc3JjQWxwaGFGb3JtYXQsIFBpeGVsRm9y
bWF0IHNyY1BpeGVsRm9ybWF0LCB1bnNpZ25lZCBzcmNCeXRlc1BlclJvdywgdWludDhfdCogc3Jj
Um93cywKQEAgLTE1NSwxMSArMTY0LDcgQEAgcHJvdGVjdGVkOgogICAgIFdFQkNPUkVfRVhQT1JU
IFJlZlB0cjxJbWFnZURhdGE+IGdldEltYWdlRGF0YShBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91
dHB1dEZvcm1hdCwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwgdm9pZCogZGF0YSkgY29uc3Q7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwdXRJbWFnZURhdGEoQWxwaGFQcmVtdWx0aXBsaWNhdGlv
biBpbnB1dEZvcm1hdCwgY29uc3QgSW1hZ2VEYXRhJiwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwg
Y29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBkZXN0Rm9y
bWF0LCB2b2lkKiBkYXRhKTsKIAotICAgIEludFNpemUgbV9sb2dpY2FsU2l6ZTsKLSAgICBJbnRT
aXplIG1fYmFja2VuZFNpemU7Ci0gICAgZmxvYXQgbV9yZXNvbHV0aW9uU2NhbGU7Ci0gICAgQ29s
b3JTcGFjZSBtX2NvbG9yU3BhY2U7Ci0gICAgUGl4ZWxGb3JtYXQgbV9waXhlbEZvcm1hdDsKKyAg
ICBjb25zdCBQYXJhbWV0ZXJzJiBtX3BhcmFtZXRlcnM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0
Zm9ybUltYWdlQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0
Zm9ybUltYWdlQnVmZmVyLmgKaW5kZXggYjA1ZmE2NTE2OTcxZDE3NjcxMzFkNTZhNDYzOTM1M2Vm
OTRlNDkyNS4uNTJkZDgzY2M5M2Q1NTUzYjM3OWU1ODdkNDM4NWQ0Zjc4MDU5NDRiYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1JbWFnZUJ1ZmZl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtSW1hZ2VC
dWZmZXIuaApAQCAtNzUsNSArNzUsNSBAQCB1c2luZyBEaXNwbGF5TGlzdEFjY2VsZXJhdGVkSW1h
Z2VCdWZmZXIgPSBEaXNwbGF5TGlzdDo6SW1hZ2VCdWZmZXI8QWNjZWxlcmF0ZWRJbQogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6
OkFjY2VsZXJhdGVkSW1hZ2VCdWZmZXIpCi0gICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdl
YkNvcmU6OkltYWdlQnVmZmVyJiBidWZmZXIpIHsgcmV0dXJuIGJ1ZmZlci5pc0FjY2VsZXJhdGVk
KCk7IH0KKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6SW1hZ2VCdWZmZXIm
IGJ1ZmZlcikgeyByZXR1cm4gYnVmZmVyLnJlbmRlcmluZ01vZGUoKSA9PSBXZWJDb3JlOjpSZW5k
ZXJpbmdNb2RlOjpBY2NlbGVyYXRlZDsgfQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VC
dWZmZXJDYWlyb0JhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQuY3BwCmluZGV4IDEyYTViNjBhMmU5MDQ2YTE5
NTg5MmJhZjVkZDdlZDQ5NjMzYjNlNzQuLmIzYmZkODEyN2I4N2QxNjg4ZWFiYjVjZjRiMmE3MWMz
MzU5Y2QyZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5jcHAKQEAgLTgwLDcg
KzgwLDcgQEAgdm9pZCBJbWFnZUJ1ZmZlckNhaXJvQmFja2VuZDo6ZHJhd1BhdHRlcm4oR3JhcGhp
Y3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmwKICAgICB9CiAKICAgICBpZiAoYXV0byBp
bWFnZSA9IGNvcHlOYXRpdmVJbWFnZSgmZGVzdENvbnRleHQgPT0gJmNvbnRleHQoKSA/IENvcHlC
YWNraW5nU3RvcmUgOiBEb250Q29weUJhY2tpbmdTdG9yZSkpCi0gICAgICAgIENhaXJvOjpkcmF3
UGF0dGVybigqZGVzdENvbnRleHQucGxhdGZvcm1Db250ZXh0KCksIGltYWdlLT5wbGF0Zm9ybUlt
YWdlKCkuZ2V0KCksIG1fbG9naWNhbFNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBwYXR0ZXJuVHJh
bnNmb3JtLCBwaGFzZSwgb3B0aW9ucyk7CisgICAgICAgIENhaXJvOjpkcmF3UGF0dGVybigqZGVz
dENvbnRleHQucGxhdGZvcm1Db250ZXh0KCksIGltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCks
IGxvZ2ljYWxTaXplKCksIGRlc3RSZWN0LCBzcmNSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFz
ZSwgb3B0aW9ucyk7CiB9CiAKIHZvaWQgSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQ6OmNsaXBUb01h
c2soR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0lt
YWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5k
LmNwcAppbmRleCAxY2QwNzU0YjM5MTQzYWY0MjliNDZkNWQ3OGU0NTFmMGQxZTA3NGMzLi4zZGEx
NDU1ZWJhMDZkNjc5NGUzMzI3MDE3ZGFhZmQ3OWJjNTQ3MmRjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJm
YWNlQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQuY3BwCkBAIC00MSwxMyArNDEs
MTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwo
SW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQpOwogCi1zdGQ6OnVuaXF1ZV9wdHI8
SW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQ+IEltYWdlQnVmZmVyQ2Fpcm9JbWFn
ZVN1cmZhY2VCYWNrZW5kOjpjcmVhdGUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNv
bHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3Jt
YXQsIGNvbnN0IEhvc3RXaW5kb3cqKQorc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQ2Fpcm9J
bWFnZVN1cmZhY2VCYWNrZW5kPiBJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZDo6
Y3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIGNvbnN0IEhvc3RXaW5kb3cqKQog
ewotICAgIEFTU0VSVChwaXhlbEZvcm1hdCA9PSBQaXhlbEZvcm1hdDo6QkdSQTgpOworICAgIEFT
U0VSVChwYXJhbWV0ZXJzLnBpeGVsRm9ybWF0ID09IFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAKICAg
ICBzdGF0aWMgY2Fpcm9fdXNlcl9kYXRhX2tleV90IHNfc3VyZmFjZURhdGFLZXk7CiAKLSAgICBJ
bnRTaXplIGJhY2tlbmRTaXplID0gY2FsY3VsYXRlQmFja2VuZFNpemUoc2l6ZSwgcmVzb2x1dGlv
blNjYWxlKTsKKyAgICBJbnRTaXplIGJhY2tlbmRTaXplID0gY2FsY3VsYXRlQmFja2VuZFNpemUo
cGFyYW1ldGVycy5sb2dpY2FsU2l6ZSwgcGFyYW1ldGVycy5yZXNvbHV0aW9uU2NhbGUpOwogICAg
IGlmIChiYWNrZW5kU2l6ZS5pc0VtcHR5KCkgfHwgYmFja2VuZFNpemUud2lkdGgoKSA+IGNhaXJv
TWF4SW1hZ2VTaXplIHx8IGJhY2tlbmRTaXplLmhlaWdodCgpID4gY2Fpcm9NYXhJbWFnZVNpemUp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC02MSwxNiArNjEsMTYgQEAgc3RkOjp1bmlx
dWVfcHRyPEltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kPiBJbWFnZUJ1ZmZlckNh
aXJvSW1hZ2VTdXJmYWMKICAgICAgICAgZmFzdEZyZWUoZGF0YSk7CiAgICAgfSk7CiAKLSAgICBy
ZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5k
PihuZXcgSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQoc2l6ZSwgYmFja2VuZFNp
emUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQsIFdURk1vdmUoc3Vy
ZmFjZSkpKTsKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQ2Fpcm9JbWFn
ZVN1cmZhY2VCYWNrZW5kPihuZXcgSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQo
cGFyYW1ldGVycywgV1RGTW92ZShzdXJmYWNlKSkpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8SW1h
Z2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQ+IEltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1
cmZhY2VCYWNrZW5kOjpjcmVhdGUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBjb25zdCBHcmFwaGlj
c0NvbnRleHQmKQorc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VC
YWNrZW5kPiBJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZDo6Y3JlYXRlKGNvbnN0
IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpCiB7Ci0gICAg
cmV0dXJuIEltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kOjpjcmVhdGUoc2l6ZSwg
MSwgQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4LCBudWxscHRyKTsKKyAgICBy
ZXR1cm4gSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZShwYXJhbWV0
ZXJzLCBudWxscHRyKTsKIH0KIAotSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQ6
OkltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kKGNvbnN0IEZsb2F0U2l6ZSYgbG9n
aWNhbFNpemUsIGNvbnN0IEludFNpemUmIGJhY2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2Nh
bGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIFJlZlB0
cjxjYWlyb19zdXJmYWNlX3Q+JiYgc3VyZmFjZSkKLSAgICA6IEltYWdlQnVmZmVyQ2Fpcm9TdXJm
YWNlQmFja2VuZChsb2dpY2FsU2l6ZSwgYmFja2VuZFNpemUsIHJlc29sdXRpb25TY2FsZSwgY29s
b3JTcGFjZSwgcGl4ZWxGb3JtYXQsIFdURk1vdmUoc3VyZmFjZSkpCitJbWFnZUJ1ZmZlckNhaXJv
SW1hZ2VTdXJmYWNlQmFja2VuZDo6SW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQo
Y29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycywgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4mJiBz
dXJmYWNlKQorICAgIDogSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kKHBhcmFtZXRlcnMs
IFdURk1vdmUoc3VyZmFjZSkpCiB7CiAgICAgQVNTRVJUKGNhaXJvX3N1cmZhY2VfZ2V0X3R5cGUo
bV9zdXJmYWNlLmdldCgpKSA9PSBDQUlST19TVVJGQUNFX1RZUEVfSU1BR0UpOwogfQpAQCAtNzks
MTYgKzc5LDE2IEBAIHZvaWQgSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQ6OnBs
YXRmb3JtVHJhbnNmb3JtQ29sb3JTcGFjZShjb25zdCBzdGQ6CiB7CiAgICAgdW5zaWduZWQgY2hh
ciogZGF0YVNyYyA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEobV9zdXJmYWNlLmdldCgp
KTsKICAgICBpbnQgc3RyaWRlID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfc3RyaWRlKG1fc3Vy
ZmFjZS5nZXQoKSk7Ci0gICAgZm9yIChpbnQgeSA9IDA7IHkgPCBtX2xvZ2ljYWxTaXplLmhlaWdo
dCgpOyArK3kpIHsKKyAgICBmb3IgKGludCB5ID0gMDsgeSA8IGxvZ2ljYWxTaXplKCkuaGVpZ2h0
KCk7ICsreSkgewogICAgICAgICB1bnNpZ25lZCogcm93ID0gcmVpbnRlcnByZXRfY2FzdF9wdHI8
dW5zaWduZWQqPihkYXRhU3JjICsgc3RyaWRlICogeSk7Ci0gICAgICAgIGZvciAoaW50IHggPSAw
OyB4IDwgbV9sb2dpY2FsU2l6ZS53aWR0aCgpOyB4KyspIHsKKyAgICAgICAgZm9yIChpbnQgeCA9
IDA7IHggPCBsb2dpY2FsU2l6ZSgpLndpZHRoKCk7IHgrKykgewogICAgICAgICAgICAgdW5zaWdu
ZWQqIHBpeGVsID0gcm93ICsgeDsKICAgICAgICAgICAgIGF1dG8gcGl4ZWxDb21wb25lbnRzID0g
dW5wcmVtdWx0aXBsaWVkKGFzU1JHQkEoUGFja2VkQ29sb3I6OkFSR0IgeyAqcGl4ZWwgfSkpOwog
ICAgICAgICAgICAgcGl4ZWxDb21wb25lbnRzID0geyBsb29rVXBUYWJsZVtwaXhlbENvbXBvbmVu
dHMucmVkXSwgbG9va1VwVGFibGVbcGl4ZWxDb21wb25lbnRzLmdyZWVuXSwgbG9va1VwVGFibGVb
cGl4ZWxDb21wb25lbnRzLmJsdWVdLCBwaXhlbENvbXBvbmVudHMuYWxwaGEgfTsKICAgICAgICAg
ICAgICpwaXhlbCA9IFBhY2tlZENvbG9yOjpBUkdCIHsgcHJlbXVsdGlwbGllZENlaWxpbmcocGl4
ZWxDb21wb25lbnRzKSB9LnZhbHVlOwogICAgICAgICB9CiAgICAgfQotICAgIGNhaXJvX3N1cmZh
Y2VfbWFya19kaXJ0eV9yZWN0YW5nbGUobV9zdXJmYWNlLmdldCgpLCAwLCAwLCBtX2xvZ2ljYWxT
aXplLndpZHRoKCksIG1fbG9naWNhbFNpemUuaGVpZ2h0KCkpOworICAgIGNhaXJvX3N1cmZhY2Vf
bWFya19kaXJ0eV9yZWN0YW5nbGUobV9zdXJmYWNlLmdldCgpLCAwLCAwLCBsb2dpY2FsU2l6ZSgp
LndpZHRoKCksIGxvZ2ljYWxTaXplKCkuaGVpZ2h0KCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9JbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tl
bmQuaAppbmRleCBkMTZkMzNlYWM0NmM1ZGY2NmZiOGZhMmQ5NTQ5MTBlMmY5MTE1YTAzLi44NjVj
YzY5YjJkNTMzODU0NWYzN2U0MTkzY2I5NGYxOTgwYmU3M2E0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJm
YWNlQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0ltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kLmgKQEAgLTQwLDExICs0MCwxMSBA
QCBjbGFzcyBJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZCA6IHB1YmxpYyBJbWFn
ZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbgogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoSW1h
Z2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQpOwogICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKEltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kKTsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5k
PiBjcmVhdGUoY29uc3QgRmxvYXRTaXplJiwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNw
YWNlLCBQaXhlbEZvcm1hdCwgY29uc3QgSG9zdFdpbmRvdyopOwotICAgIHN0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8SW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQ+IGNyZWF0ZShjb25z
dCBGbG9hdFNpemUmLCBjb25zdCBHcmFwaGljc0NvbnRleHQmKTsKKyAgICBzdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPEltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kPiBjcmVhdGUoY29u
c3QgUGFyYW1ldGVycyYsIGNvbnN0IEhvc3RXaW5kb3cqKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlx
dWVfcHRyPEltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kPiBjcmVhdGUoY29uc3Qg
UGFyYW1ldGVycyYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpOwogCiBwcml2YXRlOgotICAgIElt
YWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNh
bFNpemUsIGNvbnN0IEludFNpemUmIGJhY2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUs
IENvbG9yU3BhY2UsIFBpeGVsRm9ybWF0LCBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiYmKTsKKyAg
ICBJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZChjb25zdCBQYXJhbWV0ZXJzJiwg
UmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4mJik7CiAKICAgICB2b2lkIHBsYXRmb3JtVHJhbnNmb3Jt
Q29sb3JTcGFjZShjb25zdCBzdGQ6OmFycmF5PHVpbnQ4X3QsIDI1Nj4mIGxvb2tVcFRhYmxlKSBv
dmVycmlkZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5k
LmNwcAppbmRleCA5YjgyMTY0YWVhMzMwNzFlNTM2MWM2ZmUzOWIxYjgyN2M5YjZiMTUwLi4wYjcz
ZjE0YmE3MDA1ZTUyMDUwZWQ1ODIxNjRhMTE2MzgwNTQ5NzFmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJh
Y2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0lt
YWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZC5jcHAKQEAgLTQzLDggKzQzLDggQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1JbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQ6OkltYWdl
QnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZChjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBj
b25zdCBJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNw
YWNlIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBSZWZQdHI8Y2Fpcm9fc3Vy
ZmFjZV90PiYmIHN1cmZhY2UpCi0gICAgOiBJbWFnZUJ1ZmZlckNhaXJvQmFja2VuZChsb2dpY2Fs
U2l6ZSwgYmFja2VuZFNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3Jt
YXQpCitJbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQ6OkltYWdlQnVmZmVyQ2Fpcm9TdXJm
YWNlQmFja2VuZChjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBSZWZQdHI8Y2Fpcm9fc3Vy
ZmFjZV90PiYmIHN1cmZhY2UpCisgICAgOiBJbWFnZUJ1ZmZlckNhaXJvQmFja2VuZChwYXJhbWV0
ZXJzKQogICAgICwgbV9zdXJmYWNlKFdURk1vdmUoc3VyZmFjZSkpCiB7CiAgICAgQVNTRVJUKGNh
aXJvX3N1cmZhY2Vfc3RhdHVzKG1fc3VyZmFjZS5nZXQoKSkgPT0gQ0FJUk9fU1RBVFVTX1NVQ0NF
U1MpOwpAQCAtNTksNiArNTksMTEgQEAgR3JhcGhpY3NDb250ZXh0JiBJbWFnZUJ1ZmZlckNhaXJv
U3VyZmFjZUJhY2tlbmQ6OmNvbnRleHQoKSBjb25zdAogICAgIHJldHVybiAqbV9jb250ZXh0Owog
fQogCitJbnRTaXplIEltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZDo6YmFja2VuZFNpemUo
KSBjb25zdAoreworICAgIHJldHVybiB7IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3dpZHRoKG1f
c3VyZmFjZS5nZXQoKSksIGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2hlaWdodChtX3N1cmZhY2Uu
Z2V0KCkpIH07Cit9CisKIHVuc2lnbmVkIEltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZDo6
Ynl0ZXNQZXJSb3coKSBjb25zdAogewogICAgIHJldHVybiBjYWlyb19pbWFnZV9zdXJmYWNlX2dl
dF9zdHJpZGUobV9zdXJmYWNlLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb1N1
cmZhY2VCYWNrZW5kLmgKaW5kZXggMTJhYTJiMWNlODhlZTQyNjQ1ZmE3NzJlNjc5ZjVkNDE5NWEy
Njc0Ny4uOWU5M2RkZTg1OGVmNDNiMjgyZDQzOGNhNWE3NjdmZWJjYmJkZGJjZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWly
b1N1cmZhY2VCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kLmgKQEAgLTQwLDYgKzQwLDggQEAg
Y2xhc3MgSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kIDogcHVibGljIEltYWdlQnVmZmVy
Q2Fpcm9CYWNrZW5kIHsKIHB1YmxpYzoKICAgICBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQoKSBj
b25zdCBvdmVycmlkZTsKIAorICAgIEludFNpemUgYmFja2VuZFNpemUoKSBjb25zdCBvdmVycmlk
ZTsKKwogICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gY29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9y
ZUNvcHkpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHRvQkdSQURhdGEo
KSBjb25zdCBvdmVycmlkZTsKQEAgLTQ3LDcgKzQ5LDcgQEAgcHVibGljOgogICAgIHZvaWQgcHV0
SW1hZ2VEYXRhKEFscGhhUHJlbXVsdGlwbGljYXRpb24gaW5wdXRGb3JtYXQsIGNvbnN0IEltYWdl
RGF0YSYsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0UG9pbnQs
IEFscGhhUHJlbXVsdGlwbGljYXRpb24gZGVzdEZvcm1hdCkgb3ZlcnJpZGU7CiAKIHByb3RlY3Rl
ZDoKLSAgICBJbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQoY29uc3QgRmxvYXRTaXplJiBs
b2dpY2FsU2l6ZSwgY29uc3QgSW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25T
Y2FsZSwgQ29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQsIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+JiYp
OworICAgIEltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZChjb25zdCBQYXJhbWV0ZXJzJiwg
UmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4mJik7CiAKICAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IGNh
aXJvU3VyZmFjZUNvZXJjZVRvSW1hZ2UoKSBjb25zdDsKICAgICB1bnNpZ25lZCBieXRlc1BlclJv
dygpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JhY2tlbmQuY3BwCmluZGV4IDUwMTdiYTEy
YzhiNDg3YjBjYTA2ZTU0M2IxMjk2MzY1ZDZkZDJiMmIuLjk1MGU5YTdlNmZlYzJiYmFhZDcyZDQ2
N2VlYjY2ZWEwODRkZWY5YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5jcHAKQEAgLTc5LDggKzc5
LDggQEAgdm9pZCBJbWFnZUJ1ZmZlckNHQmFja2VuZDo6c2V0dXBDb250ZXh0KCkgY29uc3QKIHsK
ICAgICAvLyBUaGUgaW5pdGlhbCBDVE0gbWF0Y2hlcyBEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmNs
aXBUb0RyYXdpbmdDb21tYW5kcygpJ3MgaW5pdGlhbCBDVE0uCiAgICAgY29udGV4dCgpLnNjYWxl
KEZsb2F0U2l6ZSgxLCAtMSkpOwotICAgIGNvbnRleHQoKS50cmFuc2xhdGUoMCwgLW1fYmFja2Vu
ZFNpemUuaGVpZ2h0KCkpOwotICAgIGNvbnRleHQoKS5hcHBseURldmljZVNjYWxlRmFjdG9yKG1f
cmVzb2x1dGlvblNjYWxlKTsKKyAgICBjb250ZXh0KCkudHJhbnNsYXRlKDAsIC1iYWNrZW5kU2l6
ZSgpLmhlaWdodCgpKTsKKyAgICBjb250ZXh0KCkuYXBwbHlEZXZpY2VTY2FsZUZhY3RvcihyZXNv
bHV0aW9uU2NhbGUoKSk7CiB9CiAKIHN0YXRpYyBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gY3JlYXRl
Q3JvcHBlZEltYWdlSWZOZWNlc3NhcnkoQ0dJbWFnZVJlZiBpbWFnZSwgY29uc3QgSW50U2l6ZSYg
YmFja2VuZFNpemUpCkBAIC0xMTIsMzEgKzExMiwzMSBAQCBzdGF0aWMgUmVmUHRyPEltYWdlPiBj
cmVhdGVCaXRtYXBJbWFnZUFmdGVyU2NhbGluZ0lmTmVlZGVkKFJlZlB0cjxOYXRpdmVJbWFnZT4m
JgogUmVmUHRyPEltYWdlPiBJbWFnZUJ1ZmZlckNHQmFja2VuZDo6Y29weUltYWdlKEJhY2tpbmdT
dG9yZUNvcHkgY29weUJlaGF2aW9yLCBQcmVzZXJ2ZVJlc29sdXRpb24gcHJlc2VydmVSZXNvbHV0
aW9uKSBjb25zdAogewogICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gaW1hZ2U7Ci0gICAgaWYgKG1f
cmVzb2x1dGlvblNjYWxlID09IDEgfHwgcHJlc2VydmVSZXNvbHV0aW9uID09IFByZXNlcnZlUmVz
b2x1dGlvbjo6WWVzKQorICAgIGlmIChyZXNvbHV0aW9uU2NhbGUoKSA9PSAxIHx8IHByZXNlcnZl
UmVzb2x1dGlvbiA9PSBQcmVzZXJ2ZVJlc29sdXRpb246OlllcykKICAgICAgICAgaW1hZ2UgPSBj
b3B5TmF0aXZlSW1hZ2UoY29weUJlaGF2aW9yKTsKICAgICBlbHNlCiAgICAgICAgIGltYWdlID0g
Y29weU5hdGl2ZUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKTsKLSAgICByZXR1cm4gY3JlYXRl
Qml0bWFwSW1hZ2VBZnRlclNjYWxpbmdJZk5lZWRlZChXVEZNb3ZlKGltYWdlKSwgbV9sb2dpY2Fs
U2l6ZSwgbV9iYWNrZW5kU2l6ZSwgbV9yZXNvbHV0aW9uU2NhbGUsIHByZXNlcnZlUmVzb2x1dGlv
bik7CisgICAgcmV0dXJuIGNyZWF0ZUJpdG1hcEltYWdlQWZ0ZXJTY2FsaW5nSWZOZWVkZWQoV1RG
TW92ZShpbWFnZSksIGxvZ2ljYWxTaXplKCksIGJhY2tlbmRTaXplKCksIHJlc29sdXRpb25TY2Fs
ZSgpLCBwcmVzZXJ2ZVJlc29sdXRpb24pOwogfQogCiBSZWZQdHI8SW1hZ2U+IEltYWdlQnVmZmVy
Q0dCYWNrZW5kOjpzaW5rSW50b0ltYWdlKFByZXNlcnZlUmVzb2x1dGlvbiBwcmVzZXJ2ZVJlc29s
dXRpb24pCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZUJpdG1hcEltYWdlQWZ0ZXJTY2FsaW5nSWZOZWVk
ZWQoc2lua0ludG9OYXRpdmVJbWFnZSgpLCBtX2xvZ2ljYWxTaXplLCBtX2JhY2tlbmRTaXplLCBt
X3Jlc29sdXRpb25TY2FsZSwgcHJlc2VydmVSZXNvbHV0aW9uKTsKKyAgICByZXR1cm4gY3JlYXRl
Qml0bWFwSW1hZ2VBZnRlclNjYWxpbmdJZk5lZWRlZChzaW5rSW50b05hdGl2ZUltYWdlKCksIGxv
Z2ljYWxTaXplKCksIGJhY2tlbmRTaXplKCksIHJlc29sdXRpb25TY2FsZSgpLCBwcmVzZXJ2ZVJl
c29sdXRpb24pOwogfQogCiB2b2lkIEltYWdlQnVmZmVyQ0dCYWNrZW5kOjpkcmF3KEdyYXBoaWNz
Q29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7
CiAgICAgRmxvYXRSZWN0IHNyY1JlY3RTY2FsZWQgPSBzcmNSZWN0OwotICAgIHNyY1JlY3RTY2Fs
ZWQuc2NhbGUobV9yZXNvbHV0aW9uU2NhbGUpOworICAgIHNyY1JlY3RTY2FsZWQuc2NhbGUocmVz
b2x1dGlvblNjYWxlKCkpOwogCiAgICAgaWYgKGF1dG8gaW1hZ2UgPSBjb3B5TmF0aXZlSW1hZ2Uo
JmRlc3RDb250ZXh0ID09ICZjb250ZXh0KCkgPyBDb3B5QmFja2luZ1N0b3JlIDogRG9udENvcHlC
YWNraW5nU3RvcmUpKQotICAgICAgICBkZXN0Q29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoKmltYWdl
LCBtX2JhY2tlbmRTaXplLCBkZXN0UmVjdCwgc3JjUmVjdFNjYWxlZCwgb3B0aW9ucyk7CisgICAg
ICAgIGRlc3RDb250ZXh0LmRyYXdOYXRpdmVJbWFnZSgqaW1hZ2UsIGJhY2tlbmRTaXplKCksIGRl
c3RSZWN0LCBzcmNSZWN0U2NhbGVkLCBvcHRpb25zKTsKIH0KIAogdm9pZCBJbWFnZUJ1ZmZlckNH
QmFja2VuZDo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBj
b25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRp
b25zKQogewogICAgIEZsb2F0UmVjdCBhZGp1c3RlZFNyY1JlY3QgPSBzcmNSZWN0OwotICAgIGFk
anVzdGVkU3JjUmVjdC5zY2FsZShtX3Jlc29sdXRpb25TY2FsZSk7CisgICAgYWRqdXN0ZWRTcmNS
ZWN0LnNjYWxlKHJlc29sdXRpb25TY2FsZSgpKTsKIAogICAgIGlmIChhdXRvIGltYWdlID0gY29w
eUltYWdlKCZkZXN0Q29udGV4dCA9PSAmY29udGV4dCgpID8gQ29weUJhY2tpbmdTdG9yZSA6IERv
bnRDb3B5QmFja2luZ1N0b3JlKSkKICAgICAgICAgaW1hZ2UtPmRyYXdQYXR0ZXJuKGRlc3RDb250
ZXh0LCBkZXN0UmVjdCwgYWRqdXN0ZWRTcmNSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwg
c3BhY2luZywgb3B0aW9ucyk7CkBAIC0xNjEsNyArMTYxLDcgQEAgdm9pZCBJbWFnZUJ1ZmZlckNH
QmFja2VuZDo6Y2xpcFRvTWFzayhHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBG
bG9hdFIKIAogQWZmaW5lVHJhbnNmb3JtIEltYWdlQnVmZmVyQ0dCYWNrZW5kOjpiYXNlVHJhbnNm
b3JtKCkgY29uc3QKIHsKLSAgICByZXR1cm4gQWZmaW5lVHJhbnNmb3JtKDEsIDAsIDAsIC0xLCAw
LCBtX2xvZ2ljYWxTaXplLmhlaWdodCgpKTsKKyAgICByZXR1cm4gQWZmaW5lVHJhbnNmb3JtKDEs
IDAsIDAsIC0xLCAwLCBsb2dpY2FsU2l6ZSgpLmhlaWdodCgpKTsKIH0KIAogUmV0YWluUHRyPENG
RGF0YVJlZj4gSW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OnRvQ0ZEYXRhKGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSwgUHJlc2VydmVSZXNvbHV0aW9uIHByZXNl
cnZlUmVzb2x1dGlvbikgY29uc3QKQEAgLTE5MCw3ICsxOTAsNyBAQCBSZXRhaW5QdHI8Q0ZEYXRh
UmVmPiBJbWFnZUJ1ZmZlckNHQmFja2VuZDo6dG9DRkRhdGEoY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSwgT3B0aQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAgICAgaW1hZ2UgPSBh
ZG9wdENGKENHSW1hZ2VDcmVhdGUocGl4ZWxBcnJheURpbWVuc2lvbnMud2lkdGgoKSwgcGl4ZWxB
cnJheURpbWVuc2lvbnMuaGVpZ2h0KCksIDgsIDMyLCA0ICogcGl4ZWxBcnJheURpbWVuc2lvbnMu
d2lkdGgoKSwgc1JHQkNvbG9yU3BhY2VSZWYoKSwga0NHQml0bWFwQnl0ZU9yZGVyRGVmYXVsdCB8
IGtDR0ltYWdlQWxwaGFOb25lU2tpcExhc3QsIGRhdGFQcm92aWRlci5nZXQoKSwgMCwgZmFsc2Us
IGtDR1JlbmRlcmluZ0ludGVudERlZmF1bHQpKTsKLSAgICB9IGVsc2UgaWYgKG1fcmVzb2x1dGlv
blNjYWxlID09IDEgfHwgcHJlc2VydmVSZXNvbHV0aW9uID09IFByZXNlcnZlUmVzb2x1dGlvbjo6
WWVzKSB7CisgICAgfSBlbHNlIGlmIChyZXNvbHV0aW9uU2NhbGUoKSA9PSAxIHx8IHByZXNlcnZl
UmVzb2x1dGlvbiA9PSBQcmVzZXJ2ZVJlc29sdXRpb246OlllcykgewogICAgICAgICBpbWFnZSA9
IGNvcHlOYXRpdmVJbWFnZShDb3B5QmFja2luZ1N0b3JlKS0+cGxhdGZvcm1JbWFnZSgpOwogICAg
ICAgICBpbWFnZSA9IGNyZWF0ZUNyb3BwZWRJbWFnZUlmTmVjZXNzYXJ5KGltYWdlLmdldCgpLCBi
YWNrZW5kU2l6ZSgpKTsKICAgICB9IGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tl
bmQuY3BwCmluZGV4IGYyMThmMjdmMmY1M2M1YTRhZGJiNmE1YWVkYzNjNDllNDhjZDYzYTQuLjVi
ZWEzMDA2NjdlNGI1NDE3MDU1MDJkMWUzYTc1NTI3ZTU4ODgzMjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5k
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZl
ckNHQml0bWFwQmFja2VuZC5jcHAKQEAgLTM5LDExICszOSwxMSBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChJbWFnZUJ1ZmZlckNHQml0bWFwQmFj
a2VuZCk7CiAKLXN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZD4gSW1h
Z2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIGZs
b2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBDR0NvbG9yU3BhY2VS
ZWYgY2dDb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgY29uc3QgSG9zdFdpbmRv
dyopCitzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ+IEltYWdlQnVm
ZmVyQ0dCaXRtYXBCYWNrZW5kOjpjcmVhdGUoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycywg
Q0dDb2xvclNwYWNlUmVmIGNnQ29sb3JTcGFjZSwgY29uc3QgSG9zdFdpbmRvdyopCiB7Ci0gICAg
QVNTRVJUKHBpeGVsRm9ybWF0ID09IFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgQVNTRVJUKHBh
cmFtZXRlcnMucGl4ZWxGb3JtYXQgPT0gUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKIAotICAgIEludFNp
emUgYmFja2VuZFNpemUgPSBjYWxjdWxhdGVCYWNrZW5kU2l6ZShzaXplLCByZXNvbHV0aW9uU2Nh
bGUpOworICAgIEludFNpemUgYmFja2VuZFNpemUgPSBjYWxjdWxhdGVCYWNrZW5kU2l6ZShwYXJh
bWV0ZXJzLmxvZ2ljYWxTaXplLCBwYXJhbWV0ZXJzLnJlc29sdXRpb25TY2FsZSk7CiAgICAgaWYg
KGJhY2tlbmRTaXplLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTcw
LDI0ICs3MCwyNSBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ+
IEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpjcmVhdGUoYwogCiAgICAgYXV0byBkYXRhUHJv
dmlkZXIgPSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ3JlYXRlV2l0aERhdGEoMCwgZGF0YSwgbnVt
Qnl0ZXMsIHJlbGVhc2VJbWFnZURhdGEpKTsKIAotICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8
SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ+KG5ldyBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2Vu
ZChzaXplLCBiYWNrZW5kU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZv
cm1hdCwgZGF0YSwgV1RGTW92ZShkYXRhUHJvdmlkZXIpLCBXVEZNb3ZlKGNvbnRleHQpKSk7Cisg
ICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZD4obmV3
IEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kKHBhcmFtZXRlcnMsIGJhY2tlbmRTaXplLCBkYXRh
LCBXVEZNb3ZlKGRhdGFQcm92aWRlciksIFdURk1vdmUoY29udGV4dCkpKTsKIH0KIAotc3RkOjp1
bmlxdWVfcHRyPEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kPiBJbWFnZUJ1ZmZlckNHQml0bWFw
QmFja2VuZDo6Y3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgY29uc3QgR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0KQorc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5k
PiBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmIHBh
cmFtZXRlcnMsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKIHsKICAgICBpZiAoYXV0
byBjZ0NvbG9yU3BhY2UgPSBjb250ZXh0Q29sb3JTcGFjZShjb250ZXh0KSkKLSAgICAgICAgcmV0
dXJuIEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpjcmVhdGUoc2l6ZSwgMSwgQ29sb3JTcGFj
ZTo6U1JHQiwgY2dDb2xvclNwYWNlLmdldCgpLCBQaXhlbEZvcm1hdDo6QkdSQTgsIG51bGxwdHIp
OwotICAgIAotICAgIHJldHVybiBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y3JlYXRlKHNp
emUsIDEsIENvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCwgbnVsbHB0cik7Cisg
ICAgICAgIHJldHVybiBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y3JlYXRlKHBhcmFtZXRl
cnMsIGNnQ29sb3JTcGFjZS5nZXQoKSwgbnVsbHB0cik7CisKKyAgICByZXR1cm4gSW1hZ2VCdWZm
ZXJDR0JpdG1hcEJhY2tlbmQ6OmNyZWF0ZShwYXJhbWV0ZXJzLCBudWxscHRyKTsKIH0KIAotc3Rk
Ojp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kPiBJbWFnZUJ1ZmZlckNHQml0
bWFwQmFja2VuZDo6Y3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlv
blNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBj
b25zdCBIb3N0V2luZG93KiBob3N0V2luZG93KQorc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVy
Q0dCaXRtYXBCYWNrZW5kPiBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y3JlYXRlKGNvbnN0
IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIGNvbnN0IEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cpCiB7
Ci0gICAgcmV0dXJuIEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpjcmVhdGUoc2l6ZSwgcmVz
b2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBjYWNoZWRDR0NvbG9yU3BhY2UoY29sb3JTcGFjZSks
IHBpeGVsRm9ybWF0LCBob3N0V2luZG93KTsKKyAgICByZXR1cm4gSW1hZ2VCdWZmZXJDR0JpdG1h
cEJhY2tlbmQ6OmNyZWF0ZShwYXJhbWV0ZXJzLCBjYWNoZWRDR0NvbG9yU3BhY2UocGFyYW1ldGVy
cy5jb2xvclNwYWNlKSwgaG9zdFdpbmRvdyk7CiB9CiAKLUltYWdlQnVmZmVyQ0dCaXRtYXBCYWNr
ZW5kOjpJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZChjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxT
aXplLCBjb25zdCBJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBD
b2xvclNwYWNlIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCB2b2lkKiBkYXRh
LCBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+JiYgZGF0YVByb3ZpZGVyLCBzdGQ6OnVuaXF1
ZV9wdHI8R3JhcGhpY3NDb250ZXh0PiYmIGNvbnRleHQpCi0gICAgOiBJbWFnZUJ1ZmZlckNHQmFj
a2VuZChsb2dpY2FsU2l6ZSwgYmFja2VuZFNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFj
ZSwgcGl4ZWxGb3JtYXQpCitJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6SW1hZ2VCdWZmZXJD
R0JpdG1hcEJhY2tlbmQoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycywgY29uc3QgSW50U2l6
ZSYgYmFja2VuZFNpemUsIHZvaWQqIGRhdGEsIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4m
JiBkYXRhUHJvdmlkZXIsIHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0NvbnRleHQ+JiYgY29udGV4
dCkKKyAgICA6IEltYWdlQnVmZmVyQ0dCYWNrZW5kKHBhcmFtZXRlcnMpCisgICAgLCBtX2JhY2tl
bmRTaXplKGJhY2tlbmRTaXplKQogICAgICwgbV9kYXRhKGRhdGEpCiAgICAgLCBtX2RhdGFQcm92
aWRlcihXVEZNb3ZlKGRhdGFQcm92aWRlcikpCiAgICAgLCBtX2NvbnRleHQoV1RGTW92ZShjb250
ZXh0KSkKQEAgLTExMiw3ICsxMTMsNyBAQCBSZWZQdHI8TmF0aXZlSW1hZ2U+IEltYWdlQnVmZmVy
Q0dCaXRtYXBCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weQogICAgIGNh
c2UgRG9udENvcHlCYWNraW5nU3RvcmU6CiAgICAgICAgIHJldHVybiBOYXRpdmVJbWFnZTo6Y3Jl
YXRlKGFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZSgKICAgICAgICAgICAgIG1fYmFja2VuZFNpemUud2lk
dGgoKSwgbV9iYWNrZW5kU2l6ZS5oZWlnaHQoKSwgOCwgMzIsIGJ5dGVzUGVyUm93KCksCi0gICAg
ICAgICAgICBjYWNoZWRDR0NvbG9yU3BhY2UobV9jb2xvclNwYWNlKSwga0NHSW1hZ2VBbHBoYVBy
ZW11bHRpcGxpZWRGaXJzdCB8IGtDR0JpdG1hcEJ5dGVPcmRlcjMySG9zdCwgbV9kYXRhUHJvdmlk
ZXIuZ2V0KCksCisgICAgICAgICAgICBjYWNoZWRDR0NvbG9yU3BhY2UoY29sb3JTcGFjZSgpKSwg
a0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRGaXJzdCB8IGtDR0JpdG1hcEJ5dGVPcmRlcjMySG9z
dCwgbV9kYXRhUHJvdmlkZXIuZ2V0KCksCiAgICAgICAgICAgICAwLCB0cnVlLCBrQ0dSZW5kZXJp
bmdJbnRlbnREZWZhdWx0KSkpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5k
LmgKaW5kZXggZTkyYzkyZjVkNTBmZGU1N2FhYTNjYTVjMmZmMjlkZjA4Yjg2NGQyOS4uNmI3ODYx
MTA4NTU5N2I1ZTJhYTM3ZDlkNTVjNGVjY2FkNzNlODY1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0
bWFwQmFja2VuZC5oCkBAIC0zNiwxMiArMzYsMTQgQEAgY2xhc3MgSW1hZ2VCdWZmZXJDR0JpdG1h
cEJhY2tlbmQgOiBwdWJsaWMgSW1hZ2VCdWZmZXJDR0JhY2tlbmQgewogICAgIFdURl9NQUtFX0lT
T19BTExPQ0FURUQoSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQpOwogICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kKTsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kPiBjcmVhdGUoY29u
c3QgRmxvYXRTaXplJiwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlLCBDR0NvbG9y
U3BhY2VSZWYsIFBpeGVsRm9ybWF0LCBjb25zdCBIb3N0V2luZG93Kik7Ci0gICAgc3RhdGljIHN0
ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZD4gY3JlYXRlKGNvbnN0IEZs
b2F0U2l6ZSYsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQs
IGNvbnN0IEhvc3RXaW5kb3cqKTsKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVm
ZmVyQ0dCaXRtYXBCYWNrZW5kPiBjcmVhdGUoY29uc3QgRmxvYXRTaXplJiwgY29uc3QgR3JhcGhp
Y3NDb250ZXh0Jik7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNHQml0
bWFwQmFja2VuZD4gY3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmLCBDR0NvbG9yU3BhY2VSZWYsIGNv
bnN0IEhvc3RXaW5kb3cqKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVy
Q0dCaXRtYXBCYWNrZW5kPiBjcmVhdGUoY29uc3QgUGFyYW1ldGVycyYsIGNvbnN0IEhvc3RXaW5k
b3cqKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNr
ZW5kPiBjcmVhdGUoY29uc3QgUGFyYW1ldGVycyYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpOwog
CiAgICAgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KCkgY29uc3Qgb3ZlcnJpZGU7CiAKKyAgICBJ
bnRTaXplIGJhY2tlbmRTaXplKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9iYWNrZW5kU2l6
ZTsgfQorCiAgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0
b3JlQ29weSA9IENvcHlCYWNraW5nU3RvcmUpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgVmVjdG9y
PHVpbnQ4X3Q+IHRvQkdSQURhdGEoKSBjb25zdCBvdmVycmlkZTsKQEAgLTUyLDggKzU0LDkgQEAg
cHVibGljOgogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc09yaWdpbkF0VXBwZXJMZWZ0Q29y
bmVyID0gdHJ1ZTsKIAogcHJpdmF0ZToKLSAgICBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZChj
b25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBJbnRTaXplJiBwaHlzaWNhbFNpemUs
IGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQsIHZvaWQqIGRh
dGEsIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4mJiwgc3RkOjp1bmlxdWVfcHRyPEdyYXBo
aWNzQ29udGV4dD4mJik7CisgICAgSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQoY29uc3QgUGFy
YW1ldGVycyYsIGNvbnN0IEludFNpemUmIGJhY2tlbmRTaXplLCB2b2lkKiBkYXRhLCBSZXRhaW5Q
dHI8Q0dEYXRhUHJvdmlkZXJSZWY+JiYsIHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0NvbnRleHQ+
JiYpOwogCisgICAgSW50U2l6ZSBtX2JhY2tlbmRTaXplOwogICAgIHZvaWQqIG1fZGF0YTsKICAg
ICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+IG1fZGF0YVByb3ZpZGVyOwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxHcmFwaGljc0NvbnRleHQ+IG1fY29udGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2Vu
ZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklP
U3VyZmFjZUJhY2tlbmQuY3BwCmluZGV4IGFkM2ZmMWQ3OTc3MjAzNzY0MGUyZDY5OTU0MTI4ODYw
Yjc3NDhjMzYuLjdhNjljNTUzYzAwMTM2ZDk3OGY0NGM5MzJlNGFlNWYxZTY0ZmQ1OGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9T
dXJmYWNlQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmNwcApAQCAtNjQsMTMgKzY0LDEzIEBAIFJl
dGFpblB0cjxDR0NvbG9yU3BhY2VSZWY+IEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y29u
dGV4dENvbG9yU3BhY2UoY29uc3QKICAgICByZXR1cm4gSW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OmNv
bnRleHRDb2xvclNwYWNlKGNvbnRleHQpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZm
ZXJJT1N1cmZhY2VCYWNrZW5kPiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZShj
b25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBj
b2xvclNwYWNlLCBDR0NvbG9yU3BhY2VSZWYgY2dDb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhl
bEZvcm1hdCwgY29uc3QgSG9zdFdpbmRvdyogaG9zdFdpbmRvdykKK3N0ZDo6dW5pcXVlX3B0cjxJ
bWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ+IEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6
Y3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIENHQ29sb3JTcGFjZVJlZiBjZ0Nv
bG9yU3BhY2UsIGNvbnN0IEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cpCiB7Ci0gICAgSW50U2l6ZSBi
YWNrZW5kU2l6ZSA9IGNhbGN1bGF0ZUJhY2tlbmRTaXplKHNpemUsIHJlc29sdXRpb25TY2FsZSk7
CisgICAgSW50U2l6ZSBiYWNrZW5kU2l6ZSA9IGNhbGN1bGF0ZUJhY2tlbmRTaXplKHBhcmFtZXRl
cnMubG9naWNhbFNpemUsIHBhcmFtZXRlcnMucmVzb2x1dGlvblNjYWxlKTsKICAgICBpZiAoYmFj
a2VuZFNpemUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGF1dG8g
c3VyZmFjZSA9IElPU3VyZmFjZTo6Y3JlYXRlKGJhY2tlbmRTaXplLCBiYWNrZW5kU2l6ZSwgY2dD
b2xvclNwYWNlLCBJT1N1cmZhY2U6OmZvcm1hdEZvclBpeGVsRm9ybWF0KHBpeGVsRm9ybWF0KSk7
CisgICAgYXV0byBzdXJmYWNlID0gSU9TdXJmYWNlOjpjcmVhdGUoYmFja2VuZFNpemUsIGJhY2tl
bmRTaXplLCBjZ0NvbG9yU3BhY2UsIElPU3VyZmFjZTo6Zm9ybWF0Rm9yUGl4ZWxGb3JtYXQocGFy
YW1ldGVycy5waXhlbEZvcm1hdCkpOwogICAgIGlmICghc3VyZmFjZSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKQEAgLTgwLDI0ICs4MCwyNCBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZm
ZXJJT1N1cmZhY2VCYWNrZW5kPiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZQog
CiAgICAgQ0dDb250ZXh0Q2xlYXJSZWN0KGNnQ29udGV4dC5nZXQoKSwgRmxvYXRSZWN0KEZsb2F0
UG9pbnQ6Onplcm8oKSwgYmFja2VuZFNpemUpKTsKIAotICAgIHJldHVybiBtYWtlVW5pcXVlPElt
YWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZD4oc2l6ZSwgYmFja2VuZFNpemUsIHJlc29sdXRpb25T
Y2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQsIFdURk1vdmUoc3VyZmFjZSkpOworICAgIHJl
dHVybiBtYWtlVW5pcXVlPEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZD4ocGFyYW1ldGVycywg
V1RGTW92ZShzdXJmYWNlKSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcklPU3Vy
ZmFjZUJhY2tlbmQ+IEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlKGNvbnN0IEZs
b2F0U2l6ZSYgc2l6ZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQorc3RkOjp1bmlx
dWVfcHRyPEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZD4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VC
YWNrZW5kOjpjcmVhdGUoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycywgY29uc3QgR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0KQogewogICAgIGlmIChhdXRvIGNnQ29sb3JTcGFjZSA9IGNvbnRl
eHRDb2xvclNwYWNlKGNvbnRleHQpKQotICAgICAgICByZXR1cm4gSW1hZ2VCdWZmZXJJT1N1cmZh
Y2VCYWNrZW5kOjpjcmVhdGUoc2l6ZSwgMSwgQ29sb3JTcGFjZTo6U1JHQiwgY2dDb2xvclNwYWNl
LmdldCgpLCBQaXhlbEZvcm1hdDo6QkdSQTgsIG51bGxwdHIpOwotICAgIAotICAgIHJldHVybiBJ
bWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZShzaXplLCAxLCBDb2xvclNwYWNlOjpT
UkdCLCBQaXhlbEZvcm1hdDo6QkdSQTgsIG51bGxwdHIpOworICAgICAgICByZXR1cm4gSW1hZ2VC
dWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGUocGFyYW1ldGVycywgY2dDb2xvclNwYWNlLmdl
dCgpLCBudWxscHRyKTsKKworICAgIHJldHVybiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6
OmNyZWF0ZShwYXJhbWV0ZXJzLCBudWxscHRyKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEltYWdl
QnVmZmVySU9TdXJmYWNlQmFja2VuZD4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpjcmVh
dGUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3Bh
Y2UgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIGNvbnN0IEhvc3RXaW5kb3cq
IGhvc3RXaW5kb3cpCitzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5k
PiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiBw
YXJhbWV0ZXJzLCBjb25zdCBIb3N0V2luZG93KiBob3N0V2luZG93KQogewotICAgIHJldHVybiBJ
bWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZShzaXplLCByZXNvbHV0aW9uU2NhbGUs
IGNvbG9yU3BhY2UsIGNhY2hlZENHQ29sb3JTcGFjZShjb2xvclNwYWNlKSwgcGl4ZWxGb3JtYXQs
IGhvc3RXaW5kb3cpOworICAgIHJldHVybiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNy
ZWF0ZShwYXJhbWV0ZXJzLCBjYWNoZWRDR0NvbG9yU3BhY2UocGFyYW1ldGVycy5jb2xvclNwYWNl
KSwgaG9zdFdpbmRvdyk7CiB9CiAKLUltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6SW1hZ2VC
dWZmZXJJT1N1cmZhY2VCYWNrZW5kKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0
IEludFNpemUmIGJhY2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2Ug
Y29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIHN0ZDo6dW5pcXVlX3B0cjxJT1N1
cmZhY2U+JiYgc3VyZmFjZSkKLSAgICA6IEltYWdlQnVmZmVyQ0dCYWNrZW5kKGxvZ2ljYWxTaXpl
LCBiYWNrZW5kU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCkK
K0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5k
KGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+
JiYgc3VyZmFjZSkKKyAgICA6IEltYWdlQnVmZmVyQ0dCYWNrZW5kKHBhcmFtZXRlcnMpCiAgICAg
LCBtX3N1cmZhY2UoV1RGTW92ZShzdXJmYWNlKSkKIHsKICAgICBBU1NFUlQobV9zdXJmYWNlKTsK
QEAgLTEyMCw2ICsxMjAsMTEgQEAgdm9pZCBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmZs
dXNoQ29udGV4dCgpCiAgICAgQ0dDb250ZXh0Rmx1c2goY29udGV4dCgpLnBsYXRmb3JtQ29udGV4
dCgpKTsKIH0KIAorSW50U2l6ZSBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmJhY2tlbmRT
aXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zdXJmYWNlLT5zaXplKCk7Cit9CisKIHNpemVf
dCBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6Om1lbW9yeUNvc3QoKSBjb25zdAogewogICAg
IHJldHVybiBtX3N1cmZhY2UtPnRvdGFsQnl0ZXMoKTsKQEAgLTE0OCwxMCArMTUzLDEwIEBAIFJl
ZlB0cjxOYXRpdmVJbWFnZT4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpzaW5rSW50b05h
dGl2ZUltYWdlKCkKIHZvaWQgSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpkcmF3Q29uc3Vt
aW5nKEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMm
IG9wdGlvbnMpCiB7CiAgICAgRmxvYXRSZWN0IGFkanVzdGVkU3JjUmVjdCA9IHNyY1JlY3Q7Ci0g
ICAgYWRqdXN0ZWRTcmNSZWN0LnNjYWxlKG1fcmVzb2x1dGlvblNjYWxlKTsKKyAgICBhZGp1c3Rl
ZFNyY1JlY3Quc2NhbGUocmVzb2x1dGlvblNjYWxlKCkpOwogCiAgICAgaWYgKGF1dG8gaW1hZ2Ug
PSBzaW5rSW50b05hdGl2ZUltYWdlKCkpCi0gICAgICAgIGRlc3RDb250ZXh0LmRyYXdOYXRpdmVJ
bWFnZSgqaW1hZ2UsIG1fYmFja2VuZFNpemUsIGRlc3RSZWN0LCBhZGp1c3RlZFNyY1JlY3QsIG9w
dGlvbnMpOworICAgICAgICBkZXN0Q29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoKmltYWdlLCBiYWNr
ZW5kU2l6ZSgpLCBkZXN0UmVjdCwgYWRqdXN0ZWRTcmNSZWN0LCBvcHRpb25zKTsKIH0KIAogUmV0
YWluUHRyPENGRGF0YVJlZj4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjp0b0NGRGF0YShj
b25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHksIFByZXNlcnZl
UmVzb2x1dGlvbiBwcmVzZXJ2ZVJlc29sdXRpb24pIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJm
YWNlQmFja2VuZC5oCmluZGV4IGRlOTgyMTExZTUyYzEyZWRiMDhkYzc4OGI1MGVjZWZiMzY1MDc2
NTAuLjQ4NTlkZjZmYzUyNWQ4NWMzMjhjMTQ1ZjA3OTE3ODM1NjkwOWUyNWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNl
QmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
QnVmZmVySU9TdXJmYWNlQmFja2VuZC5oCkBAIC0zOSwxNSArMzksMTcgQEAgY2xhc3MgV0VCQ09S
RV9FWFBPUlQgSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kIDogcHVibGljIEltYWdlQnVmZmVy
Q0dCYWNrZW5kIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgSW50U2l6ZSBjYWxjdWxhdGVCYWNrZW5k
U2l6ZShjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUp
OwogCi0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tl
bmQ+IGNyZWF0ZShjb25zdCBGbG9hdFNpemUmLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9y
U3BhY2UsIENHQ29sb3JTcGFjZVJlZiwgUGl4ZWxGb3JtYXQsIGNvbnN0IEhvc3RXaW5kb3cqKTsK
LSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZD4g
Y3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFj
ZSwgUGl4ZWxGb3JtYXQsIGNvbnN0IEhvc3RXaW5kb3cqKTsKLSAgICBzdGF0aWMgc3RkOjp1bmlx
dWVfcHRyPEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZD4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6
ZSYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kPiBjcmVhdGUoY29uc3QgUGFyYW1ldGVycyYsIENH
Q29sb3JTcGFjZVJlZiwgY29uc3QgSG9zdFdpbmRvdyopOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1
ZV9wdHI8SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kPiBjcmVhdGUoY29uc3QgUGFyYW1ldGVy
cyYsIGNvbnN0IEhvc3RXaW5kb3cqKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdl
QnVmZmVySU9TdXJmYWNlQmFja2VuZD4gY3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmLCBjb25zdCBH
cmFwaGljc0NvbnRleHQmKTsKIAotICAgIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZChjb25z
dCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBJbnRTaXplJiBwaHlzaWNhbFNpemUsIGZs
b2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQsIHN0ZDo6dW5pcXVl
X3B0cjxJT1N1cmZhY2U+JiYpOworICAgIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZChjb25z
dCBQYXJhbWV0ZXJzJiwgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4mJik7CiAKICAgICBHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQoKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIGZsdXNoQ29u
dGV4dCgpIG92ZXJyaWRlOwogCisgICAgSW50U2l6ZSBiYWNrZW5kU2l6ZSgpIGNvbnN0IG92ZXJy
aWRlOworICAgIAogICAgIHNpemVfdCBtZW1vcnlDb3N0KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAg
c2l6ZV90IGV4dGVybmFsTWVtb3J5Q29zdCgpIGNvbnN0IG92ZXJyaWRlOwogCkBAIC02OSw3ICs3
MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbGVhc2VCdWZmZXJUb1Bvb2woKSBvdmVycmlkZTsK
IAogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc09yaWdpbkF0VXBwZXJMZWZ0Q29ybmVyID0g
dHJ1ZTsKLSAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNBY2NlbGVyYXRlZCA9IHRydWU7Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUgPSBSZW5kZXJp
bmdNb2RlOjpBY2NlbGVyYXRlZDsKIAogcHJvdGVjdGVkOgogICAgIHN0YXRpYyBSZXRhaW5QdHI8
Q0dDb2xvclNwYWNlUmVmPiBjb250ZXh0Q29sb3JTcGFjZShjb25zdCBHcmFwaGljc0NvbnRleHQm
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0LmgKaW5kZXggMjZmYzk3MzA3MjExMjczMDM5M2UyZGNiYzg3
ZDBjNmI5Y2E1NDI1OC4uMTZiMTk3ZjllZTJkMjhkYmU5MjFkOTMwOTQzZDQzMDQ2MWRmY2Q4NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0LmgKQEAgLTMzLDcgKzMzLDYgQEAKICNpbmNsdWRlIDx3dGYv
RmFzdE1hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL05v
bmNvcHlhYmxlLmg+Ci0jaW5jbHVkZSA8d3RmL09iamVjdElkZW50aWZpZXIuaD4KICNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTQ1
LDkgKzQ0LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBuYW1lc3BhY2UgRGlzcGxheUxpc3Qg
ewogCi1lbnVtIEZsdXNoSWRlbnRpZmllclR5cGUgeyB9OwotdXNpbmcgRmx1c2hJZGVudGlmaWVy
ID0gT2JqZWN0SWRlbnRpZmllcjxGbHVzaElkZW50aWZpZXJUeXBlPjsKLQogZW51bSBBc1RleHRG
bGFnIHsKICAgICBOb25lICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMCwKICAgICBJbmNs
dWRlc1BsYXRmb3JtT3BlcmF0aW9ucyAgICAgID0gMSA8PCAwLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0Rmx1c2hJ
ZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RGbHVzaElkZW50aWZpZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45Y2Y3ODE2OGViYjdm
YzczN2I5YjRhNmNmOGQ1MzcyOWY1YTA2MGVjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0Rmx1c2hJZGVu
dGlmaWVyLmgKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aW5jbHVkZSA8d3RmL09iamVjdElkZW50aWZpZXIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CituYW1lc3BhY2UgRGlzcGxheUxpc3QgeworCitlbnVtIEZsdXNoSWRlbnRpZmllclR5cGUgeyB9
OwordXNpbmcgRmx1c2hJZGVudGlmaWVyID0gT2JqZWN0SWRlbnRpZmllcjxGbHVzaElkZW50aWZp
ZXJUeXBlPjsKKworfSAvLyBEaXNwbGF5TGlzdAorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXIuaAppbmRleCBmNWIyMjM0MDJh
ZWIzNzcyOGI3MzAxZmI2NjcxMThhM2IyZThiMDQwLi4zNDMxMWQ1Mjc3OGVhZjIzNzA5MTFkNTAy
NjJiODc5ODFhYzYxNTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEltYWdlQnVm
ZmVyLmgKQEAgLTM0LDYgKzM0LDcgQEAgbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKIHRlbXBsYXRl
PHR5cGVuYW1lIEJhY2tlbmRUeXBlPgogY2xhc3MgSW1hZ2VCdWZmZXIgOiBwdWJsaWMgQ29uY3Jl
dGVJbWFnZUJ1ZmZlcjxCYWNrZW5kVHlwZT4gewogICAgIHVzaW5nIEJhc2VDb25jcmV0ZUltYWdl
QnVmZmVyID0gQ29uY3JldGVJbWFnZUJ1ZmZlcjxCYWNrZW5kVHlwZT47CisgICAgdXNpbmcgQmFz
ZUNvbmNyZXRlSW1hZ2VCdWZmZXI6OmxvZ2ljYWxTaXplOwogCiBwdWJsaWM6CiAgICAgc3RhdGlj
IGF1dG8gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxl
LCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBjb25zdCBI
b3N0V2luZG93KiBob3N0V2luZG93KQpAQCAtNDYsMTQgKzQ3LDE1IEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuIEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyOjp0ZW1wbGF0ZSBjcmVhdGU8SW1hZ2VC
dWZmZXI+KHNpemUsIGNvbnRleHQsIHNpemUpOwogICAgIH0KIAotICAgIEltYWdlQnVmZmVyKHN0
ZDo6dW5pcXVlX3B0cjxCYWNrZW5kVHlwZT4mJiBkYXRhQmFja2VuZCwgY29uc3QgRmxvYXRTaXpl
JiBzaXplKQotICAgICAgICA6IEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyKFdURk1vdmUoZGF0YUJh
Y2tlbmQpKQorICAgIEltYWdlQnVmZmVyKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckJhY2tl
bmQ6OlBhcmFtZXRlcnM+JiYgcGFyYW1ldGVycywgc3RkOjp1bmlxdWVfcHRyPEJhY2tlbmRUeXBl
PiYmIGRhdGFCYWNrZW5kLCBjb25zdCBGbG9hdFNpemUmIHNpemUpCisgICAgICAgIDogQmFzZUNv
bmNyZXRlSW1hZ2VCdWZmZXIoV1RGTW92ZShwYXJhbWV0ZXJzKSwgV1RGTW92ZShkYXRhQmFja2Vu
ZCkpCiAgICAgICAgICwgbV9kcmF3aW5nQ29udGV4dChzaXplLCBpbml0aWFsRHJhd2luZ0NvbnRl
eHRDVE0oc2l6ZSkpCiAgICAgewogICAgIH0KIAotICAgIEltYWdlQnVmZmVyKGNvbnN0IEZsb2F0
U2l6ZSYgc2l6ZSwgUmVjb3JkZXI6OkRlbGVnYXRlKiBkZWxlZ2F0ZSA9IG51bGxwdHIpCi0gICAg
ICAgIDogbV9kcmF3aW5nQ29udGV4dChzaXplLCBpbml0aWFsRHJhd2luZ0NvbnRleHRDVE0oc2l6
ZSksIGRlbGVnYXRlKQorICAgIEltYWdlQnVmZmVyKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZl
ckJhY2tlbmQ6OlBhcmFtZXRlcnM+JiYgcGFyYW1ldGVycywgUmVjb3JkZXI6OkRlbGVnYXRlKiBk
ZWxlZ2F0ZSA9IG51bGxwdHIpCisgICAgICAgIDogQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXIoV1RG
TW92ZShwYXJhbWV0ZXJzKSkKKyAgICAgICAgLCBtX2RyYXdpbmdDb250ZXh0KGxvZ2ljYWxTaXpl
KCksIGluaXRpYWxEcmF3aW5nQ29udGV4dENUTShsb2dpY2FsU2l6ZSgpKSwgZGVsZWdhdGUpCiAg
ICAgewogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZC5jcHAKaW5kZXgg
Mzc4YWFmNGM0MGM0ZTEyMmFjYmUwNjk0MzJjN2FkN2VjMjA5ZWQ3My4uMDFkMmU3ODAyODViMTFm
ZWMzOWI0Y2QyNmJmNGNmZmYwODA3MzM3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJlY3QyREJh
Y2tlbmQuY3BwCkBAIC0xNzEsNyArMTcxLDcgQEAgc3RhdGljIFJlZlB0cjxJbWFnZT4gY3JlYXRl
Qml0bWFwSW1hZ2VBZnRlclNjYWxpbmdJZk5lZWRlZChJRDJEMUJpdG1hcFJlbmRlclRhcmcKIFJl
ZlB0cjxJbWFnZT4gSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OmNvcHlJbWFnZShCYWNraW5n
U3RvcmVDb3B5IGNvcHlCZWhhdmlvciwgUHJlc2VydmVSZXNvbHV0aW9uIHByZXNlcnZlUmVzb2x1
dGlvbikgY29uc3QKIHsKICAgICBQbGF0Zm9ybUltYWdlUHRyIGltYWdlOwotICAgIGlmIChtX3Jl
c29sdXRpb25TY2FsZSA9PSAxIHx8IHByZXNlcnZlUmVzb2x1dGlvbiA9PSBQcmVzZXJ2ZVJlc29s
dXRpb246OlllcykKKyAgICBpZiAocmVzb2x1dGlvblNjYWxlKCkgPT0gMSB8fCBwcmVzZXJ2ZVJl
c29sdXRpb24gPT0gUHJlc2VydmVSZXNvbHV0aW9uOjpZZXMpCiAgICAgICAgIGltYWdlID0gY29w
eU5hdGl2ZUltYWdlKGNvcHlCZWhhdmlvciktPnBsYXRmb3JtSW1hZ2UoKTsKICAgICBlbHNlCiAg
ICAgICAgIGltYWdlID0gY29weU5hdGl2ZUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKS0+cGxh
dGZvcm1JbWFnZSgpOwpAQCAtMjY5LDcgKzI2OSw3IEBAIFBsYXRmb3JtSW1hZ2VQdHIgSW1hZ2VC
dWZmZXJEaXJlY3QyREJhY2tlbmQ6OmNvbXBhdGlibGVCaXRtYXAoSUQyRDFSZW5kZXJUYXJnZXQq
CiB2b2lkIEltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYg
ZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgRmxv
YXRSZWN0IGFkanVzdGVkU3JjUmVjdCA9IHNyY1JlY3Q7Ci0gICAgYWRqdXN0ZWRTcmNSZWN0LnNj
YWxlKG1fcmVzb2x1dGlvblNjYWxlLCBtX3Jlc29sdXRpb25TY2FsZSk7CisgICAgYWRqdXN0ZWRT
cmNSZWN0LnNjYWxlKHJlc29sdXRpb25TY2FsZSgpKTsKIAogICAgIGF1dG8gY29tcGF0aWJsZUJp
dG1hcCA9IGNvbXBhdGlibGVCaXRtYXAoZGVzdENvbnRleHQucGxhdGZvcm1Db250ZXh0KCktPnJl
bmRlclRhcmdldCgpKTsKIApAQCAtMjgzLDcgKzI4Myw3IEBAIHZvaWQgSW1hZ2VCdWZmZXJEaXJl
Y3QyREJhY2tlbmQ6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxv
YXRSCiB2b2lkIEltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpkcmF3UGF0dGVybihHcmFwaGlj
c0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9y
bSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgRmxvYXRSZWN0IGFkanVz
dGVkU3JjUmVjdCA9IHNyY1JlY3Q7Ci0gICAgYWRqdXN0ZWRTcmNSZWN0LnNjYWxlKG1fcmVzb2x1
dGlvblNjYWxlKTsKKyAgICBhZGp1c3RlZFNyY1JlY3Quc2NhbGUocmVzb2x1dGlvblNjYWxlKCkp
OwogCiAgICAgaWYgKGF1dG8gaW1hZ2UgPSBjb3B5SW1hZ2UoJmRlc3RDb250ZXh0ID09ICZjb250
ZXh0KCkgPyBDb3B5QmFja2luZ1N0b3JlIDogRG9udENvcHlCYWNraW5nU3RvcmUpKQogICAgICAg
ICBpbWFnZS0+ZHJhd1BhdHRlcm4oZGVzdENvbnRleHQsIGRlc3RSZWN0LCBhZGp1c3RlZFNyY1Jl
Y3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBvcHRpb25zKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5o
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmgK
aW5kZXggNWM3NTQ1YmZlNjY5MjYyMGQwMTNmZGM4ODZkNzVlZjM5YzgxYWZkZC4uODJmZmM2MGY5
MWRkMjBmYTk2YzBkYjRjYTA3OWQ3OGRmOGRiNDhlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmgKKysrIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmgKQEAgLTQ5LDEyICs0
OSwxMiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZlcjo6
dGVtcGxhdGUgY3JlYXRlPFJlbW90ZUltYWdlQnVmZmVyPihzaXplLCByZXNvbHV0aW9uU2NhbGUs
IGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0LCBudWxscHRyLCByZW1vdGVSZW5kZXJpbmdCYWNrZW5k
LCByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIH0KIAotICAgIFJlbW90ZUltYWdl
QnVmZmVyKHN0ZDo6dW5pcXVlX3B0cjxCYWNrZW5kVHlwZT4mJiBiYWNrZW5kLCBSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kJiByZW1vdGVSZW5kZXJpbmdCYWNrZW5kLCBXZWJDb3JlOjpSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQotICAgICAgICA6
IEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyKFdURk1vdmUoYmFja2VuZCksIHJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcikKKyAgICBSZW1vdGVJbWFnZUJ1ZmZlcihzdGQ6OnVuaXF1ZV9wdHI8V2Vi
Q29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjpQYXJhbWV0ZXJzPiYmIHBhcmFtZXRlcnMsIHN0ZDo6
dW5pcXVlX3B0cjxCYWNrZW5kVHlwZT4mJiBiYWNrZW5kLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
JiByZW1vdGVSZW5kZXJpbmdCYWNrZW5kLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQorICAgICAgICA6IEJhc2VDb25jcmV0
ZUltYWdlQnVmZmVyKFdURk1vdmUocGFyYW1ldGVycyksIFdURk1vdmUoYmFja2VuZCksIHJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcikKICAgICAgICAgLCBtX3JlbW90ZVJlbmRlcmluZ0JhY2tl
bmQocmVtb3RlUmVuZGVyaW5nQmFja2VuZCkKICAgICAgICAgLCBtX3JlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcihyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCiAgICAgewotICAgICAgICBt
X3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaW1hZ2VCdWZmZXJCYWNrZW5kV2FzQ3JlYXRlZChtX2Jh
Y2tlbmQtPmxvZ2ljYWxTaXplKCksIG1fYmFja2VuZC0+YmFja2VuZFNpemUoKSwgbV9iYWNrZW5k
LT5yZXNvbHV0aW9uU2NhbGUoKSwgbV9iYWNrZW5kLT5jb2xvclNwYWNlKCksIG1fYmFja2VuZC0+
cGl4ZWxGb3JtYXQoKSwgbV9iYWNrZW5kLT5jcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUo
KSwgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICAgICAgbV9yZW1vdGVSZW5kZXJp
bmdCYWNrZW5kLmRpZENyZWF0ZUltYWdlQnVmZmVyQmFja2VuZChtX2JhY2tlbmQtPmNyZWF0ZUlt
YWdlQnVmZmVyQmFja2VuZEhhbmRsZSgpLCByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwog
ICAgIH0KIAogICAgIH5SZW1vdGVJbWFnZUJ1ZmZlcigpCkBAIC02NSwxNyArNjUsNiBAQCBwdWJs
aWM6CiAgICAgICAgICAgICBjb250ZXh0KCkucmVzdG9yZSgpOwogICAgIH0KIAotICAgIFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpSZXBsYXlSZXN1bHQgc3VibWl0RGlzcGxheUxpc3QoY29uc3QgV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCkKLSAgICB7Ci0gICAg
ICAgIGlmIChkaXNwbGF5TGlzdC5pc0VtcHR5KCkpCi0gICAgICAgICAgICByZXR1cm4geyB9Owot
Ci0gICAgICAgIGNvbnN0IGF1dG8mIGltYWdlQnVmZmVycyA9IG1fcmVtb3RlUmVuZGVyaW5nQmFj
a2VuZC5yZW1vdGVSZXNvdXJjZUNhY2hlKCkuaW1hZ2VCdWZmZXJzKCk7Ci0gICAgICAgIGNvbnN0
IGF1dG8mIG5hdGl2ZUltYWdlcyA9IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC5yZW1vdGVSZXNv
dXJjZUNhY2hlKCkubmF0aXZlSW1hZ2VzKCk7Ci0gICAgICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpSZXBsYXllciByZXBsYXllciB7IEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyOjpjb250ZXh0KCks
IGRpc3BsYXlMaXN0LCAmaW1hZ2VCdWZmZXJzLCAmbmF0aXZlSW1hZ2VzLCB0aGlzIH07Ci0gICAg
ICAgIHJldHVybiByZXBsYXllci5yZXBsYXkoKTsKLSAgICB9Ci0KIHByaXZhdGU6CiAgICAgYm9v
bCBhcHBseShXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZSBpdGVtLCBXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQpIG92ZXJyaWRlCiAgICAgewpAQCAtMTAxLDYgKzkwLDE3
IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuYXBw
bHlNZWRpYUl0ZW0oaXRlbSwgY29udGV4dCk7CiAgICAgfQogCisgICAgdm9pZCBzdWJtaXREaXNw
bGF5TGlzdChjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmIGRpc3BsYXlM
aXN0KSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKGRpc3BsYXlMaXN0LmlzRW1wdHkoKSkK
KyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBjb25zdCBhdXRvJiBpbWFnZUJ1ZmZlcnMg
PSBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQucmVtb3RlUmVzb3VyY2VDYWNoZSgpLmltYWdlQnVm
ZmVycygpOworICAgICAgICBjb25zdCBhdXRvJiBuYXRpdmVJbWFnZXMgPSBtX3JlbW90ZVJlbmRl
cmluZ0JhY2tlbmQucmVtb3RlUmVzb3VyY2VDYWNoZSgpLm5hdGl2ZUltYWdlcygpOworICAgICAg
ICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVwbGF5ZXIgcmVwbGF5ZXIgeyBCYXNlQ29uY3JldGVJ
bWFnZUJ1ZmZlcjo6Y29udGV4dCgpLCBkaXNwbGF5TGlzdCwgJmltYWdlQnVmZmVycywgJm5hdGl2
ZUltYWdlcywgdGhpcyB9OworICAgICAgICByZXBsYXllci5yZXBsYXkoKTsKKyAgICB9CisKICAg
ICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kJiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQ7CiAgICAg
V2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIG1fcmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcAppbmRleCBmNTljMzg3MjRmOGY2
MmVlNzgwMmI5MjAyMzdmNjg4NDczZDdmYmY5Li5kMjc2OTg2OTE4NWM2MzNiYmUwYWVhMDlkNzY5
NTA3NDRhMjE1NDRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCkBAIC05OSw5ICs5OSw5IEBA
IGJvb2wgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6YXBwbHlNZWRpYUl0ZW0oRGlzcGxheUxpc3Q6
Okl0ZW1IYW5kbGUgaXRlbSwgR3JhcGhpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgUmVt
b3RlUmVuZGVyaW5nQmFja2VuZDo6aW1hZ2VCdWZmZXJCYWNrZW5kV2FzQ3JlYXRlZChjb25zdCBG
bG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQg
cmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVs
Rm9ybWF0LCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgaGFuZGxlLCBSZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQordm9pZCBSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kOjpkaWRDcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQoSW1hZ2VCdWZmZXJCYWNr
ZW5kSGFuZGxlIGhhbmRsZSwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcikKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHk6OkltYWdlQnVmZmVyQmFja2VuZFdhc0NyZWF0ZWQobG9naWNhbFNpemUsIGJh
Y2tlbmRTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0LCBXVEZN
b3ZlKGhhbmRsZSksIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciksIG1fcmVuZGVyaW5nQmFj
a2VuZElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eTo6RGlkQ3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kKFdURk1vdmUoaGFuZGxlKSwgcmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7
CiB9CiAKIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6ZGlkRmx1c2goRGlzcGxheUxpc3Q6
OkZsdXNoSWRlbnRpZmllciBmbHVzaElkZW50aWZpZXIsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCkBAIC0xNDgsMTAgKzE0OCw3IEBAIHZv
aWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6YXBwbHlEaXNwbGF5TGlzdHNGcm9tSGFuZGxlKElt
YWdlQnVmZmVyJiBkZXN0aW5hdGlvCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAot
ICAgICAgICBpZiAoZGVzdGluYXRpb24uaXNBY2NlbGVyYXRlZCgpKQotICAgICAgICAgICAgc3Rh
dGljX2Nhc3Q8QWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlciY+KGRlc3RpbmF0aW9uKS5zdWJt
aXREaXNwbGF5TGlzdCgqZGlzcGxheUxpc3QpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBz
dGF0aWNfY2FzdDxVbmFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXImPihkZXN0aW5hdGlvbiku
c3VibWl0RGlzcGxheUxpc3QoKmRpc3BsYXlMaXN0KTsKKyAgICAgICAgZGVzdGluYXRpb24uc3Vi
bWl0RGlzcGxheUxpc3QoKmRpc3BsYXlMaXN0KTsKIAogICAgICAgICBDaGVja2VkU2l6ZSBjaGVj
a2VkT2Zmc2V0ID0gb2Zmc2V0OwogICAgICAgICBjaGVja2VkT2Zmc2V0ICs9IHNpemVUb1JlYWQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZC5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZVJlbmRlcmluZ0JhY2tlbmQuaAppbmRleCA2NDA2NjY4ZmFlMDUwNTdlOWRmMzI2NGY1NzUyNDk0
ODlkNzA1Yzc4Li41OTE5ZTk1NjRmNjYzZGYzOWZmYjNjMTViMTVhM2I4YzMyMzBmNWZmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5n
QmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kLmgKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgogICAgIGJvb2wgYXBw
bHlNZWRpYUl0ZW0oV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1IYW5kbGUsIFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dCYpOwogCiAgICAgLy8gTWVzc2FnZXMgdG8gYmUgc2VudC4KLSAgICB2b2lk
IGltYWdlQnVmZmVyQmFja2VuZFdhc0NyZWF0ZWQoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBs
b2dpY2FsU2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJl
c29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSwgV2ViQ29yZTo6UGl4ZWxGb3JtYXQs
IEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyKTsKKyAgICB2b2lkIGRpZENyZWF0ZUltYWdlQnVmZmVyQmFja2VuZChJbWFnZUJ1ZmZl
ckJhY2tlbmRIYW5kbGUsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAg
ICAgdm9pZCBkaWRGbHVzaChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Rmx1c2hJZGVudGlmaWVyLCBX
ZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogCiAgICAgdm9pZCBzZXROZXh0
SXRlbUJ1ZmZlclRvUmVhZChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZp
ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1Jl
bW90ZUxheWVyQmFja2luZ1N0b3JlLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5
ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tCmluZGV4IGVmOTRjNmIwMjA1MDQzZDM3
MWJmMGY5Njk2YzhkOGNhNjM2YzAxMjUuLjVmNDRhMzliYzBjMTc0MjU2ZDY3NDk5YWJhNWYzNDBi
YmYzZTdlNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJl
ZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9S
ZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW0KQEAgLTMxNSw4ICszMTUs
NyBAQCBib29sIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpkaXNwbGF5KCkKIAogICAgIG1fbGF5
ZXItPm93bmVyKCktPnBsYXRmb3JtQ0FMYXllckxheWVyRGlkRGlzcGxheShtX2xheWVyKTsKIAot
ICAgIC8vIEZJWE1FOiBUaGlzIG1ldGhvZCBoYXMgYSB3ZWlyZCBuYW1lLiBUaGlzIGlzICJzdWJt
aXQgd29yayIuCi0gICAgbV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlci0+Zmx1c2hEcmF3aW5nQ29u
dGV4dEFuZENvbW1pdCgpOworICAgIG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXItPnN1Ym1pdERy
YXdpbmdDb250ZXh0KCk7CiAKICAgICBtX2Zyb250QnVmZmVyRmx1c2hlciA9IG1fZnJvbnRCdWZm
ZXIuaW1hZ2VCdWZmZXItPmNyZWF0ZUZsdXNoZXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJh
Y2tlbmQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1
ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwCmluZGV4IDg1NWM4OTQ5NjZjNTg3YmIwZTZh
ZWM1MTE5ZGU0Yjk0NDUwODdkNGIuLjRjOTY0MmMzMWQ3Mzk3MWJkN2FmNDViZjU1NTJlYmYxZmUz
YzQ3MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2Vu
ZC5jcHAKQEAgLTQzLDE3ICs0MywxNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogV1RG
X01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2Vu
ZCk7CiAKLXN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ+
IEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6Y3JlYXRlKGNvbnN0IEZsb2F0U2l6
ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFBp
eGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBjb25zdCBIb3N0V2luZG93KikKK3N0ZDo6dW5pcXVlX3B0
cjxJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ+IEltYWdlQnVmZmVyU2hhcmVhYmxl
Qml0bWFwQmFja2VuZDo6Y3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIGNvbnN0
IEhvc3RXaW5kb3cqKQogewotICAgIEFTU0VSVChwaXhlbEZvcm1hdCA9PSBQaXhlbEZvcm1hdDo6
QkdSQTgpOworICAgIEFTU0VSVChwYXJhbWV0ZXJzLnBpeGVsRm9ybWF0ID09IFBpeGVsRm9ybWF0
OjpCR1JBOCk7CiAKLSAgICBJbnRTaXplIGJhY2tlbmRTaXplID0gY2FsY3VsYXRlQmFja2VuZFNp
emUoc2l6ZSwgcmVzb2x1dGlvblNjYWxlKTsKKyAgICBJbnRTaXplIGJhY2tlbmRTaXplID0gY2Fs
Y3VsYXRlQmFja2VuZFNpemUocGFyYW1ldGVycy5sb2dpY2FsU2l6ZSwgcGFyYW1ldGVycy5yZXNv
bHV0aW9uU2NhbGUpOwogICAgIGlmIChiYWNrZW5kU2l6ZS5pc0VtcHR5KCkpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCiAgICAgU2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9uIGNvbmZp
Z3VyYXRpb247CiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgY29uZmlndXJhdGlvbi5jb2xvclNw
YWNlID0geyBjYWNoZWRDR0NvbG9yU3BhY2UoY29sb3JTcGFjZSkgfTsKKyAgICBjb25maWd1cmF0
aW9uLmNvbG9yU3BhY2UgPSB7IGNhY2hlZENHQ29sb3JTcGFjZShwYXJhbWV0ZXJzLmNvbG9yU3Bh
Y2UpIH07CiAjZW5kaWYKICAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRl
U2hhcmVhYmxlKGJhY2tlbmRTaXplLCBjb25maWd1cmF0aW9uKTsKICAgICBpZiAoIWJpdG1hcCkK
QEAgLTYzLDEwICs2MywxMCBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJTaGFyZWFibGVC
aXRtYXBCYWNrZW5kPiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhYwogICAgIGlmICghY29u
dGV4dCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gbWFrZVVuaXF1ZTxJ
bWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ+KHNpemUsIGJhY2tlbmRTaXplLCByZXNv
bHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0LCBXVEZNb3ZlKGJpdG1hcCksIFdU
Rk1vdmUoY29udGV4dCkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEltYWdlQnVmZmVyU2hhcmVh
YmxlQml0bWFwQmFja2VuZD4ocGFyYW1ldGVycywgV1RGTW92ZShiaXRtYXApLCBXVEZNb3ZlKGNv
bnRleHQpKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFw
QmFja2VuZD4gSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpjcmVhdGUoY29uc3Qg
RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0
IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhl
bEZvcm1hdCwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGhhbmRsZSkKK3N0ZDo6dW5pcXVlX3B0
cjxJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ+IEltYWdlQnVmZmVyU2hhcmVhYmxl
Qml0bWFwQmFja2VuZDo6Y3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIEltYWdl
QnVmZmVyQmFja2VuZEhhbmRsZSBoYW5kbGUpCiB7CiAgICAgaWYgKCFXVEY6OmhvbGRzX2FsdGVy
bmF0aXZlPFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlPihoYW5kbGUpKSB7CiAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwpAQCAtODEsMTEgKzgxLDExIEBAIHN0ZDo6dW5pcXVlX3B0cjxJbWFn
ZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ+IEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFw
QmFjCiAgICAgaWYgKCFjb250ZXh0KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJl
dHVybiBtYWtlVW5pcXVlPEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZD4obG9naWNh
bFNpemUsIGJhY2tlbmRTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9y
bWF0LCBXVEZNb3ZlKGJpdG1hcCksIFdURk1vdmUoY29udGV4dCkpOworICAgIHJldHVybiBtYWtl
VW5pcXVlPEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZD4ocGFyYW1ldGVycywgV1RG
TW92ZShiaXRtYXApLCBXVEZNb3ZlKGNvbnRleHQpKTsKIH0KIAotSW1hZ2VCdWZmZXJTaGFyZWFi
bGVCaXRtYXBCYWNrZW5kOjpJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQoY29uc3Qg
RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50U2l6ZSYgcGh5c2ljYWxTaXplLCBmbG9h
dCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4
ZWxGb3JtYXQsIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+JiYgYml0bWFwLCBzdGQ6OnVuaXF1ZV9w
dHI8R3JhcGhpY3NDb250ZXh0PiYmIGNvbnRleHQpCi0gICAgOiBQbGF0Zm9ybUltYWdlQnVmZmVy
QmFja2VuZChsb2dpY2FsU2l6ZSwgcGh5c2ljYWxTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9y
U3BhY2UsIHBpeGVsRm9ybWF0KQorSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpJ
bWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1l
dGVycywgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4mJiBiaXRtYXAsIHN0ZDo6dW5pcXVlX3B0cjxH
cmFwaGljc0NvbnRleHQ+JiYgY29udGV4dCkKKyAgICA6IFBsYXRmb3JtSW1hZ2VCdWZmZXJCYWNr
ZW5kKHBhcmFtZXRlcnMpCiAgICAgLCBtX2JpdG1hcChXVEZNb3ZlKGJpdG1hcCkpCiAgICAgLCBt
X2NvbnRleHQoV1RGTW92ZShjb250ZXh0KSkKIHsKQEAgLTk4LDYgKzk4LDExIEBAIEltYWdlQnVm
ZmVyQmFja2VuZEhhbmRsZSBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmNyZWF0
ZUltYWdlQnVmZmVyQmFjCiAgICAgcmV0dXJuIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZShXVEZN
b3ZlKGhhbmRsZSkpOwogfQogCitJbnRTaXplIEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFj
a2VuZDo6YmFja2VuZFNpemUoKSBjb25zdAoreworICAgIHJldHVybiBtX2JpdG1hcC0+c2l6ZSgp
OworfQorCiBSZWZQdHI8TmF0aXZlSW1hZ2U+IEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFj
a2VuZDo6Y29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkpIGNvbnN0CiB7CiAjaWYgVVNF
KENHKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9J
bWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmgKaW5k
ZXggMGM3ZjA0N2Y4ODM1ZTRiOGQ2M2MxNWY0MWVjOTIxMDJlNDU4NTM5OS4uNTU1MDZhNDlkMDNl
MzllODhlMDM2MWU0OTE1NWYxMzFkNzk5MDEwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVy
U2hhcmVhYmxlQml0bWFwQmFja2VuZC5oCkBAIC00MywxNCArNDMsMTYgQEAgY2xhc3MgSW1hZ2VC
dWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kIDogcHVibGljIFdlYkNvcmU6OlBsYXRmb3JtSW1h
Z2VCdWZmZXJCYWMKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEltYWdlQnVmZmVyU2hhcmVh
YmxlQml0bWFwQmFja2VuZCk7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW1hZ2VCdWZmZXJT
aGFyZWFibGVCaXRtYXBCYWNrZW5kKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVf
cHRyPEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZD4gY3JlYXRlKGNvbnN0IFdlYkNv
cmU6OkZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IGZsb2F0IHJlc29sdXRpb25TY2FsZSwg
V2ViQ29yZTo6Q29sb3JTcGFjZSwgV2ViQ29yZTo6UGl4ZWxGb3JtYXQsIGNvbnN0IFdlYkNvcmU6
Okhvc3RXaW5kb3cqKTsKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyU2hh
cmVhYmxlQml0bWFwQmFja2VuZD4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbG9n
aWNhbFNpemUsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGludGVybmFsU2l6ZSwgZmxvYXQgcmVz
b2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlLCBXZWJDb3JlOjpQaXhlbEZvcm1hdCwg
SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPElt
YWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZD4gY3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMm
LCBjb25zdCBXZWJDb3JlOjpIb3N0V2luZG93Kik7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ+IGNyZWF0ZShjb25zdCBQYXJhbWV0
ZXJzJiwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKTsKIAotICAgIEltYWdlQnVmZmVyU2hhcmVh
YmxlQml0bWFwQmFja2VuZChjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBj
b25zdCBXZWJDb3JlOjpJbnRTaXplJiBwaHlzaWNhbFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2Fs
ZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSwgV2ViQ29yZTo6UGl4ZWxGb3JtYXQsIFJlZlB0cjxTaGFy
ZWFibGVCaXRtYXA+JiYsIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ+
JiYpOworICAgIEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZChjb25zdCBQYXJhbWV0
ZXJzJiwgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4mJiwgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dD4mJik7CiAKICAgICBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgY3Jl
YXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKCkgY29uc3Q7CiAKICAgICBXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAqbV9jb250ZXh0
OyB9CisgICAgCisgICAgV2ViQ29yZTo6SW50U2l6ZSBiYWNrZW5kU2l6ZSgpIGNvbnN0IG92ZXJy
aWRlOwogCiAgICAgUmVmUHRyPFdlYkNvcmU6Ok5hdGl2ZUltYWdlPiBjb3B5TmF0aXZlSW1hZ2Uo
V2ViQ29yZTo6QmFja2luZ1N0b3JlQ29weSA9IFdlYkNvcmU6OkNvcHlCYWNraW5nU3RvcmUpIGNv
bnN0IG92ZXJyaWRlOwogICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZT4gY29weUltYWdlKFdlYkNv
cmU6OkJhY2tpbmdTdG9yZUNvcHkgPSBXZWJDb3JlOjpDb3B5QmFja2luZ1N0b3JlLCBXZWJDb3Jl
OjpQcmVzZXJ2ZVJlc29sdXRpb24gPSBXZWJDb3JlOjpQcmVzZXJ2ZVJlc29sdXRpb246Ok5vKSBj
b25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUGxhdGZvcm1SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1BsYXRmb3JtUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5o
CmluZGV4IDA1MTc2NzgzZDU1MzFiZmU3MGY4NTBiZjJjMTQ5Zjc4ODIyZDBlMzkuLjlhZmYwODhl
MzdjYTc2YTdmODY0YWU3ZTQyYmJiNzAwNGYxZjE1MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUGxhdGZvcm1SZW1vdGVJbWFnZUJ1ZmZlclByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9QbGF0Zm9ybVJl
bW90ZUltYWdlQnVmZmVyUHJveHkuaApAQCAtMzcsMTQgKzM3LDQgQEAgdXNpbmcgQWNjZWxlcmF0
ZWRSZW1vdGVJbWFnZUJ1ZmZlclByb3h5ID0gUmVtb3RlSW1hZ2VCdWZmZXJQcm94eTxBY2NlbGVy
YXRlZEltYWcKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKLVNQRUNJQUxJWkVfVFlQRV9UUkFJ
VFNfQkVHSU4oV2ViS2l0OjpVbmFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXJQcm94eSkKLSAg
ICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6SW1hZ2VCdWZmZXImIGltYWdlQnVm
ZmVyKSB7IHJldHVybiBpbWFnZUJ1ZmZlci5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSAm
JiAhaW1hZ2VCdWZmZXIuaXNBY2NlbGVyYXRlZCgpOyB9Ci1TUEVDSUFMSVpFX1RZUEVfVFJBSVRT
X0VORCgpCi0KLSNpZiBIQVZFKElPU1VSRkFDRSkKLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVH
SU4oV2ViS2l0OjpBY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyUHJveHkpCi0gICAgc3RhdGlj
IGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OkltYWdlQnVmZmVyJiBpbWFnZUJ1ZmZlcikgeyBy
ZXR1cm4gaW1hZ2VCdWZmZXIucmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCkgJiYgaW1hZ2VC
dWZmZXIuaXNBY2NlbGVyYXRlZCgpOyB9Ci1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCi0j
ZW5kaWYKLQogI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZl
clByb3h5LmgKaW5kZXggMzFjZDAyZDFiMGYyMWVkZTU4MjJiZjk0NWJhZDQ2ZWRlZjFlYjM3YS4u
Zjg1MTUyY2I2NjhlNjc5ODBhOGRiOThkNjYxMmE5MDBiNzc1NzIzMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFn
ZUJ1ZmZlclByb3h5LmgKQEAgLTUwLDE0ICs1MCwxNiBAQCBjbGFzcyBSZW1vdGVJbWFnZUJ1ZmZl
clByb3h5IDogcHVibGljIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJbWFnZUJ1ZmZlcjxCYWNrZW5k
VAogICAgIHVzaW5nIEJhc2VEaXNwbGF5TGlzdEltYWdlQnVmZmVyOjptX2JhY2tlbmQ7CiAgICAg
dXNpbmcgQmFzZURpc3BsYXlMaXN0SW1hZ2VCdWZmZXI6Om1fZHJhd2luZ0NvbnRleHQ7CiAgICAg
dXNpbmcgQmFzZURpc3BsYXlMaXN0SW1hZ2VCdWZmZXI6Om1fcmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyOworICAgIHVzaW5nIEJhc2VEaXNwbGF5TGlzdEltYWdlQnVmZmVyOjpyZXNvbHV0aW9u
U2NhbGU7CiAKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPFJlbW90ZUltYWdlQnVmZmVyUHJv
eHk+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHNpemUsIFdlYkNvcmU6OlJlbmRl
cmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpD
b2xvclNwYWNlIGNvbG9yU3BhY2UsIFdlYkNvcmU6OlBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkmIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkK
KyAgICBzdGF0aWMgUmVmUHRyPFJlbW90ZUltYWdlQnVmZmVyUHJveHk+IGNyZWF0ZShjb25zdCBX
ZWJDb3JlOjpGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6
Q29sb3JTcGFjZSBjb2xvclNwYWNlLCBXZWJDb3JlOjpQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwg
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5JiByZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkp
CiAgICAgewogICAgICAgICBpZiAoQmFja2VuZFR5cGU6OmNhbGN1bGF0ZUJhY2tlbmRTaXplKHNp
emUsIHJlc29sdXRpb25TY2FsZSkuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5
KHNpemUsIHJlbmRlcmluZ01vZGUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxG
b3JtYXQsIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkpOworICAgICAgICBhdXRvIHBhcmFt
ZXRlcnMgPSBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjpQYXJh
bWV0ZXJzPihuZXcgV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjpQYXJhbWV0ZXJzKHsgc2l6
ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCB9KSk7CisgICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgUmVtb3RlSW1hZ2VCdWZmZXJQcm94eShXVEZNb3ZlKHBhcmFt
ZXRlcnMpLCByZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpKTsKICAgICB9CiAKICAgICB+UmVt
b3RlSW1hZ2VCdWZmZXJQcm94eSgpCkBAIC02OSwyNyArNzEsNiBAQCBwdWJsaWM6CiAgICAgICAg
IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT5yZWxlYXNlUmVtb3RlUmVzb3VyY2UobV9y
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIH0KIAotICAgIHZvaWQgY2xlYXJCYWNr
ZW5kKCkgeyBtX2JhY2tlbmQgPSBudWxscHRyOyB9Ci0KLSAgICB2b2lkIGNyZWF0ZUJhY2tlbmQo
Y29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50
U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JT
cGFjZSBjb2xvclNwYWNlLCBXZWJDb3JlOjpQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgSW1hZ2VC
dWZmZXJCYWNrZW5kSGFuZGxlIGhhbmRsZSkKLSAgICB7Ci0gICAgICAgIEFTU0VSVCghbV9iYWNr
ZW5kKTsKLSAgICAgICAgbV9iYWNrZW5kID0gQmFja2VuZFR5cGU6OmNyZWF0ZShsb2dpY2FsU2l6
ZSwgYmFja2VuZFNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQs
IFdURk1vdmUoaGFuZGxlKSk7Ci0gICAgfQotCi0gICAgdm9pZCBkaWRGbHVzaChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6Rmx1c2hJZGVudGlmaWVyIGZsdXNoSWRlbnRpZmllcikKLSAgICB7Ci0gICAg
ICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9yZWNlaXZlZEZsdXNoSWRlbnRpZmllckxvY2sp
OwotICAgICAgICBtX3JlY2VpdmVkRmx1c2hJZGVudGlmaWVyID0gZmx1c2hJZGVudGlmaWVyOwot
ICAgICAgICBtX3JlY2VpdmVkRmx1c2hJZGVudGlmaWVyQ2hhbmdlZENvbmRpdGlvbi5ub3RpZnlB
bGwoKTsKLSAgICB9Ci0KLSAgICBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHNpemUoKSBjb25z
dCB7IHJldHVybiBtX3NpemU7IH0KLSAgICBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlIHJlbmRlcmlu
Z01vZGUoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlcmluZ01vZGU7IH0KLSAgICBmbG9hdCByZXNv
bHV0aW9uU2NhbGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Jlc29sdXRpb25TY2FsZTsgfQot
ICAgIFdlYkNvcmU6OkNvbG9yU3BhY2UgY29sb3JTcGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29s
b3JTcGFjZTsgfQotICAgIFdlYkNvcmU6OlBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0KCkgY29uc3Qg
eyByZXR1cm4gbV9waXhlbEZvcm1hdDsgfQotCiAgICAgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxl
IGNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSgpCiAgICAgewogICAgICAgICBlbnN1cmVC
YWNrZW5kQ3JlYXRlZCgpOwpAQCAtMTEzLDE0ICs5NCw5IEBAIHB1YmxpYzoKIAogcHJvdGVjdGVk
OgogICAgIGZyaWVuZCBjbGFzcyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOwotICAgIFJlbW90ZUlt
YWdlQnVmZmVyUHJveHkoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBzaXplLCBXZWJDb3JlOjpS
ZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29y
ZTo6Q29sb3JTcGFjZSBjb2xvclNwYWNlLCBXZWJDb3JlOjpQaXhlbEZvcm1hdCBwaXhlbEZvcm1h
dCwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5JiByZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHkpCi0gICAgICAgIDogQmFzZURpc3BsYXlMaXN0SW1hZ2VCdWZmZXIoc2l6ZSwgdGhpcykKKyAg
ICBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5KHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJbWFnZUJ1
ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnM+JiYgcGFyYW1ldGVycywgUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5JiByZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpCisgICAgICAgIDogQmFzZURp
c3BsYXlMaXN0SW1hZ2VCdWZmZXIoV1RGTW92ZShwYXJhbWV0ZXJzKSwgdGhpcykKICAgICAgICAg
LCBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eShtYWtlV2Vha1B0cihyZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHkpKQotICAgICAgICAsIG1fc2l6ZShzaXplKQotICAgICAgICAsIG1fcmVu
ZGVyaW5nTW9kZShyZW5kZXJpbmdNb2RlKQotICAgICAgICAsIG1fcmVzb2x1dGlvblNjYWxlKHJl
c29sdXRpb25TY2FsZSkKLSAgICAgICAgLCBtX2NvbG9yU3BhY2UoY29sb3JTcGFjZSkKLSAgICAg
ICAgLCBtX3BpeGVsRm9ybWF0KHBpeGVsRm9ybWF0KQogICAgIHsKICAgICAgICAgQVNTRVJUKG1f
cmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KTsKICAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHktPnJlbW90ZVJlc291cmNlQ2FjaGVQcm94eSgpLmNhY2hlSW1hZ2VCdWZmZXIo
KnRoaXMpOwpAQCAtMTMxLDYgKzEwNywxMyBAQCBwcm90ZWN0ZWQ6CiAKICAgICBib29sIGhhc1Bl
bmRpbmdGbHVzaCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VudEZsdXNoSWRlbnRpZmllciAhPSBtX3Jl
Y2VpdmVkRmx1c2hJZGVudGlmaWVyOyB9CiAKKyAgICB2b2lkIGRpZEZsdXNoKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpGbHVzaElkZW50aWZpZXIgZmx1c2hJZGVudGlmaWVyKSBvdmVycmlkZQorICAg
IHsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3JlY2VpdmVkRmx1c2hJZGVudGlm
aWVyTG9jayk7CisgICAgICAgIG1fcmVjZWl2ZWRGbHVzaElkZW50aWZpZXIgPSBmbHVzaElkZW50
aWZpZXI7CisgICAgICAgIG1fcmVjZWl2ZWRGbHVzaElkZW50aWZpZXJDaGFuZ2VkQ29uZGl0aW9u
Lm5vdGlmeUFsbCgpOworICAgIH0KKwogICAgIHZvaWQgd2FpdEZvckRpZEZsdXNoV2l0aFRpbWVv
dXQoKQogICAgIHsKICAgICAgICAgaWYgKCFtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkK
QEAgLTE0NSw3ICsxMjgsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgQmFja2VuZFR5cGUqIGVuc3VyZUJh
Y2tlbmRDcmVhdGVkKCkgY29uc3Qgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIGlmICghbV9iYWNr
ZW5kICYmIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KQotICAgICAgICAgICAgbV9yZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHktPndhaXRGb3JJbWFnZUJ1ZmZlckJhY2tlbmRXYXNDcmVh
dGVkKCk7CisgICAgICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+d2FpdEZv
ckRpZENyZWF0ZUltYWdlQnVmZmVyQmFja2VuZCgpOwogICAgICAgICByZXR1cm4gbV9iYWNrZW5k
LmdldCgpOwogICAgIH0KIApAQCAtMTY5LDggKzE1Miw4IEBAIHByb3RlY3RlZDoKICAgICB2b2lk
IHB1dEltYWdlRGF0YShXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIGlucHV0Rm9ybWF0
LCBjb25zdCBXZWJDb3JlOjpJbWFnZURhdGEmIGltYWdlRGF0YSwgY29uc3QgV2ViQ29yZTo6SW50
UmVjdCYgc3JjUmVjdCwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGRlc3RQb2ludCA9IHsgfSwg
V2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBkZXN0Rm9ybWF0ID0gV2ViQ29yZTo6QWxw
aGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGllZCkgb3ZlcnJpZGUKICAgICB7CiAgICAg
ICAgIC8vIFRoZSBtYXRoIGluc2lkZSBJbWFnZURhdGE6OmNyZWF0ZSgpIGRvZXNuJ3QgYWdyZWUg
d2l0aCB0aGUgbWF0aCBpbnNpZGUgSW1hZ2VCdWZmZXJCYWNrZW5kOjpwdXRJbWFnZURhdGEoKSBh
Ym91dCBob3cgbV9yZXNvbHV0aW9uU2NhbGUgaW50ZXJhY3RzIHdpdGggdGhlIGRhdGEgaW4gdGhl
IEltYWdlQnVmZmVyLgotICAgICAgICAvLyBUaGlzIG1lYW5zIHRoYXQgcHV0SW1hZ2VEYXRhKCkg
aXMgb25seSBjYWxsZWQgd2hlbiBtX3Jlc29sdXRpb25TY2FsZSA9PSAxLgotICAgICAgICBBU1NF
UlRfSU1QTElFUyhtX2JhY2tlbmQsIG1fYmFja2VuZC0+cmVzb2x1dGlvblNjYWxlKCkgPT0gMSk7
CisgICAgICAgIC8vIFRoaXMgbWVhbnMgdGhhdCBwdXRJbWFnZURhdGEoKSBpcyBvbmx5IGNhbGxl
ZCB3aGVuIHJlc29sdXRpb25TY2FsZSgpID09IDEuCisgICAgICAgIEFTU0VSVChyZXNvbHV0aW9u
U2NhbGUoKSA9PSAxKTsKICAgICAgICAgbV9kcmF3aW5nQ29udGV4dC5yZWNvcmRlcigpLnB1dElt
YWdlRGF0YShpbnB1dEZvcm1hdCwgaW1hZ2VEYXRhLCBzcmNSZWN0LCBkZXN0UG9pbnQsIGRlc3RG
b3JtYXQpOwogICAgIH0KIApAQCAtMTg1LDExICsxNjgsMTEgQEAgcHJvdGVjdGVkOgogICAgIHZv
aWQgZmx1c2hEcmF3aW5nQ29udGV4dCgpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBUcmFjZVNj
b3BlIHRyYWNpbmdTY29wZShGbHVzaFJlbW90ZUltYWdlQnVmZmVyU3RhcnQsIEZsdXNoUmVtb3Rl
SW1hZ2VCdWZmZXJFbmQpOwotICAgICAgICBmbHVzaERyYXdpbmdDb250ZXh0QW5kQ29tbWl0KCk7
CisgICAgICAgIHN1Ym1pdERyYXdpbmdDb250ZXh0KCk7CiAgICAgICAgIHdhaXRGb3JEaWRGbHVz
aFdpdGhUaW1lb3V0KCk7CiAgICAgfQogCi0gICAgdm9pZCBmbHVzaERyYXdpbmdDb250ZXh0QW5k
Q29tbWl0KCkgb3ZlcnJpZGUKKyAgICB2b2lkIHN1Ym1pdERyYXdpbmdDb250ZXh0KCkgb3ZlcnJp
ZGUKICAgICB7CiAgICAgICAgIGlmICghbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpCiAg
ICAgICAgICAgICByZXR1cm47CkBAIC0yMDAsMTIgKzE4MywxMiBAQCBwcm90ZWN0ZWQ6CiAKICAg
ICAgICAgbV9zZW50Rmx1c2hJZGVudGlmaWVyID0gV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZsdXNo
SWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKICAgICAgICAgZGlzcGxheUxpc3QudGVtcGxhdGUgYXBw
ZW5kPFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpGbHVzaENvbnRleHQ+KG1fc2VudEZsdXNoSWRlbnRp
Zmllcik7Ci0gICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT5zdWJtaXREaXNw
bGF5TGlzdChkaXNwbGF5TGlzdCwgbV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwotICAg
ICAgICBtX2l0ZW1Db3VudEluQ3VycmVudERpc3BsYXlMaXN0ID0gMDsKKyAgICAgICAgc3VibWl0
RGlzcGxheUxpc3QoZGlzcGxheUxpc3QpOwogICAgICAgICBkaXNwbGF5TGlzdC5jbGVhcigpOwor
ICAgICAgICBtX2l0ZW1Db3VudEluQ3VycmVudERpc3BsYXlMaXN0ID0gMDsKICAgICB9CiAKLSAg
ICB2b2lkIHN1Ym1pdERpc3BsYXlMaXN0KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNw
bGF5TGlzdCYgZGlzcGxheUxpc3QpCisgICAgdm9pZCBzdWJtaXREaXNwbGF5TGlzdChjb25zdCBX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0KSBvdmVycmlkZQog
ICAgIHsKICAgICAgICAgaWYgKCFtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSB8fCBkaXNw
bGF5TGlzdC5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0zNTEsMTEgKzMzNCw2
IEBAIHByb3RlY3RlZDoKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Rmx1c2hJZGVudGlmaWVy
IG1fcmVjZWl2ZWRGbHVzaElkZW50aWZpZXI7CiAgICAgV2Vha1B0cjxSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHk+IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OwogICAgIHNpemVfdCBt
X2l0ZW1Db3VudEluQ3VycmVudERpc3BsYXlMaXN0IHsgMCB9OwotICAgIFdlYkNvcmU6OkZsb2F0
U2l6ZSBtX3NpemU7Ci0gICAgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSBtX3JlbmRlcmluZ01vZGU7
Ci0gICAgZmxvYXQgbV9yZXNvbHV0aW9uU2NhbGU7Ci0gICAgV2ViQ29yZTo6Q29sb3JTcGFjZSBt
X2NvbG9yU3BhY2U7Ci0gICAgV2ViQ29yZTo6UGl4ZWxGb3JtYXQgbV9waXhlbEZvcm1hdDsKIH07
CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEJhY2tlbmRUeXBlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHkuY3BwCmluZGV4IGU1MmNhNDA3MzVlOTc5ZTM4N2Q4M2QxNGQyN2M0OTY2
MTc4ZWNmYzcuLmM2NDM1NjFkNDkyMDkxNzRhYmZlOTEzMjdkMGI0ODBkZGVmMDA3MzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKQEAgLTcwLDI0ICs3MCwxNSBA
QCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Y29ubmVjdFRvR1BVUHJvY2Vzcygp
CiAgICAgc2VuZChNZXNzYWdlczo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q3JlYXRlUmVu
ZGVyaW5nQmFja2VuZChtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKSwgMCk7CiB9CiAKLXRl
bXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdGF0aWMgdm9pZCByZWNyZWF0ZUltYWdlQnVmZmVyKFJlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSYgcHJveHksIFQmIGltYWdlQnVmZmVyLCBSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIgcmVzb3VyY2VJZGVudGlmaWVyLCBSZW5kZXJpbmdCYWNrZW5kSWRl
bnRpZmllciByZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcikKLXsKLSAgICBpbWFnZUJ1ZmZlci5j
bGVhckJhY2tlbmQoKTsKLSAgICBwcm94eS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kOjpDcmVhdGVJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlci5zaXplKCksIGltYWdlQnVmZmVy
LnJlbmRlcmluZ01vZGUoKSwgaW1hZ2VCdWZmZXIucmVzb2x1dGlvblNjYWxlKCksIGltYWdlQnVm
ZmVyLmNvbG9yU3BhY2UoKSwgaW1hZ2VCdWZmZXIucGl4ZWxGb3JtYXQoKSwgcmVzb3VyY2VJZGVu
dGlmaWVyKSwgcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOwotfQotCiB2b2lkIFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eTo6cmVlc3RhYmxpc2hHUFVQcm9jZXNzQ29ubmVjdGlvbigpCiB7
CiAgICAgY29ubmVjdFRvR1BVUHJvY2VzcygpOwogCi0gICAgZm9yIChhdXRvJiBwYWlyIDogbV9y
ZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuaW1hZ2VCdWZmZXJzKCkpIHsKLSAgICAgICAgaWYgKGF1
dG8mIGJhc2VJbWFnZUJ1ZmZlciA9IHBhaXIudmFsdWUpIHsKLSAgICAgICAgICAgIGlmIChpczxB
Y2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyUHJveHk+KCpiYXNlSW1hZ2VCdWZmZXIpKQotICAg
ICAgICAgICAgICAgIHJlY3JlYXRlSW1hZ2VCdWZmZXIoKnRoaXMsIGRvd25jYXN0PEFjY2VsZXJh
dGVkUmVtb3RlSW1hZ2VCdWZmZXJQcm94eT4oKmJhc2VJbWFnZUJ1ZmZlciksIHBhaXIua2V5LCBt
X3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgICAgICByZWNyZWF0ZUltYWdlQnVmZmVyKCp0aGlzLCBkb3duY2FzdDxVbmFjY2VsZXJhdGVk
UmVtb3RlSW1hZ2VCdWZmZXJQcm94eT4oKmJhc2VJbWFnZUJ1ZmZlciksIHBhaXIua2V5LCBtX3Jl
bmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKLSAgICAgICAgfQorICAgIGZvciAoYXV0byYgaW1h
Z2VCdWZmZXIgOiBtX3JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5pbWFnZUJ1ZmZlcnMoKS52YWx1
ZXMoKSkgeworICAgICAgICBpZiAoIWltYWdlQnVmZmVyKQorICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OkNyZWF0ZUlt
YWdlQnVmZmVyKGltYWdlQnVmZmVyLT5sb2dpY2FsU2l6ZSgpLCBpbWFnZUJ1ZmZlci0+cmVuZGVy
aW5nTW9kZSgpLCBpbWFnZUJ1ZmZlci0+cmVzb2x1dGlvblNjYWxlKCksIGltYWdlQnVmZmVyLT5j
b2xvclNwYWNlKCksIGltYWdlQnVmZmVyLT5waXhlbEZvcm1hdCgpLCBpbWFnZUJ1ZmZlci0+cmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCkpLCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVy
KTsKKyAgICAgICAgaW1hZ2VCdWZmZXItPmNsZWFyQmFja2VuZCgpOwogICAgIH0KIH0KIApAQCAt
MTEyLDEwICsxMDMsMTAgQEAgdWludDY0X3QgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Ojpt
ZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fcmVuZGVyaW5n
QmFja2VuZElkZW50aWZpZXIudG9VSW50NjQoKTsKIH0KIAotYm9vbCBSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHk6OndhaXRGb3JJbWFnZUJ1ZmZlckJhY2tlbmRXYXNDcmVhdGVkKCkKK2Jvb2wg
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Ojp3YWl0Rm9yRGlkQ3JlYXRlSW1hZ2VCdWZmZXJC
YWNrZW5kKCkKIHsKICAgICBSZWY8SVBDOjpDb25uZWN0aW9uPiBjb25uZWN0aW9uID0gV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9u
KCk7Ci0gICAgcmV0dXJuIGNvbm5lY3Rpb24tPndhaXRGb3JBbmREaXNwYXRjaEltbWVkaWF0ZWx5
PE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OkltYWdlQnVmZmVyQmFja2Vu
ZFdhc0NyZWF0ZWQ+KG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIsIDFfcywgSVBDOjpXYWl0
Rm9yT3B0aW9uOjpJbnRlcnJ1cHRXYWl0aW5nSWZTeW5jTWVzc2FnZUFycml2ZXMpOworICAgIHJl
dHVybiBjb25uZWN0aW9uLT53YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseTxNZXNzYWdlczo6
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpEaWRDcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQ+
KG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIsIDFfcywgSVBDOjpXYWl0Rm9yT3B0aW9uOjpJ
bnRlcnJ1cHRXYWl0aW5nSWZTeW5jTWVzc2FnZUFycml2ZXMpOwogfQogCiBib29sIFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eTo6d2FpdEZvckRpZEZsdXNoKCkKQEAgLTEyOSwxMCArMTIwLDEw
IEBAIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpjcmVh
dGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpCiAgICAgUmVmUHRyPEltYWdlQnVmZmVyPiBpbWFn
ZUJ1ZmZlcjsKIAogICAgIGlmIChyZW5kZXJpbmdNb2RlID09IFJlbmRlcmluZ01vZGU6OkFjY2Vs
ZXJhdGVkKQotICAgICAgICBpbWFnZUJ1ZmZlciA9IEFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZm
ZXJQcm94eTo6Y3JlYXRlKHNpemUsIHJlbmRlcmluZ01vZGUsIHJlc29sdXRpb25TY2FsZSwgY29s
b3JTcGFjZSwgcGl4ZWxGb3JtYXQsICp0aGlzKTsKKyAgICAgICAgaW1hZ2VCdWZmZXIgPSBBY2Nl
bGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyUHJveHk6OmNyZWF0ZShzaXplLCByZXNvbHV0aW9uU2Nh
bGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0LCAqdGhpcyk7CiAKICAgICBpZiAoIWltYWdlQnVm
ZmVyKQotICAgICAgICBpbWFnZUJ1ZmZlciA9IFVuYWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZl
clByb3h5OjpjcmVhdGUoc2l6ZSwgcmVuZGVyaW5nTW9kZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xv
clNwYWNlLCBwaXhlbEZvcm1hdCwgKnRoaXMpOworICAgICAgICBpbWFnZUJ1ZmZlciA9IFVuYWNj
ZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlclByb3h5OjpjcmVhdGUoc2l6ZSwgcmVzb2x1dGlvblNj
YWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCwgKnRoaXMpOwogCiAgICAgaWYgKGltYWdlQnVm
ZmVyKSB7CiAgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OkNy
ZWF0ZUltYWdlQnVmZmVyKHNpemUsIHJlbmRlcmluZ01vZGUsIHJlc29sdXRpb25TY2FsZSwgY29s
b3JTcGFjZSwgcGl4ZWxGb3JtYXQsIGltYWdlQnVmZmVyLT5yZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIoKSksIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOwpAQCAtMTgzLDI4ICsxNzQs
MjIgQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OnJlbGVhc2VSZW1vdGVSZXNv
dXJjZShSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWYKICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kOjpSZWxlYXNlUmVtb3RlUmVzb3VyY2UocmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyKSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7CiB9CiAKLXZvaWQgUmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjppbWFnZUJ1ZmZlckJhY2tlbmRXYXNDcmVhdGVkKGNv
bnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEludFNpemUmIGJhY2tlbmRTaXplLCBm
bG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQg
cGl4ZWxGb3JtYXQsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBoYW5kbGUsIFJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCit2b2lkIFJlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6ZGlkQ3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kKEltYWdl
QnVmZmVyQmFja2VuZEhhbmRsZSBoYW5kbGUsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBy
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCiB7CiAgICAgYXV0byBpbWFnZUJ1ZmZlciA9IG1f
cmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNhY2hlZEltYWdlQnVmZmVyKHJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcik7CiAgICAgaWYgKCFpbWFnZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwot
ICAgIAotICAgIGlmIChpbWFnZUJ1ZmZlci0+aXNBY2NlbGVyYXRlZCgpKQotICAgICAgICBkb3du
Y2FzdDxBY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyUHJveHk+KCppbWFnZUJ1ZmZlcikuY3Jl
YXRlQmFja2VuZChsb2dpY2FsU2l6ZSwgYmFja2VuZFNpemUsIHJlc29sdXRpb25TY2FsZSwgY29s
b3JTcGFjZSwgcGl4ZWxGb3JtYXQsIFdURk1vdmUoaGFuZGxlKSk7CisKKyAgICBpZiAoaW1hZ2VC
dWZmZXItPnJlbmRlcmluZ01vZGUoKSA9PSBSZW5kZXJpbmdNb2RlOjpBY2NlbGVyYXRlZCkKKyAg
ICAgICAgaW1hZ2VCdWZmZXItPnNldEJhY2tlbmQoQWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlclNoYXJl
YWJsZUJhY2tlbmQ6OmNyZWF0ZShpbWFnZUJ1ZmZlci0+cGFyYW1ldGVycygpLCBXVEZNb3ZlKGhh
bmRsZSkpKTsKICAgICBlbHNlCi0gICAgICAgIGRvd25jYXN0PFVuYWNjZWxlcmF0ZWRSZW1vdGVJ
bWFnZUJ1ZmZlclByb3h5PigqaW1hZ2VCdWZmZXIpLmNyZWF0ZUJhY2tlbmQobG9naWNhbFNpemUs
IGJhY2tlbmRTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0LCBX
VEZNb3ZlKGhhbmRsZSkpOworICAgICAgICBpbWFnZUJ1ZmZlci0+c2V0QmFja2VuZChVbmFjY2Vs
ZXJhdGVkSW1hZ2VCdWZmZXJTaGFyZWFibGVCYWNrZW5kOjpjcmVhdGUoaW1hZ2VCdWZmZXItPnBh
cmFtZXRlcnMoKSwgV1RGTW92ZShoYW5kbGUpKSk7CiB9CiAKIHZvaWQgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5OjpkaWRGbHVzaChEaXNwbGF5TGlzdDo6Rmx1c2hJZGVudGlmaWVyIGZsdXNo
SWRlbnRpZmllciwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcikKIHsKLSAgICBhdXRvIGltYWdlQnVmZmVyID0gbV9yZW1vdGVSZXNvdXJjZUNh
Y2hlUHJveHkuY2FjaGVkSW1hZ2VCdWZmZXIocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsK
LSAgICBpZiAoIWltYWdlQnVmZmVyKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoaW1hZ2VC
dWZmZXItPmlzQWNjZWxlcmF0ZWQoKSkKLSAgICAgICAgZG93bmNhc3Q8QWNjZWxlcmF0ZWRSZW1v
dGVJbWFnZUJ1ZmZlclByb3h5PigqaW1hZ2VCdWZmZXIpLmRpZEZsdXNoKGZsdXNoSWRlbnRpZmll
cik7Ci0gICAgZWxzZQotICAgICAgICBkb3duY2FzdDxVbmFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VC
dWZmZXJQcm94eT4oKmltYWdlQnVmZmVyKS5kaWRGbHVzaChmbHVzaElkZW50aWZpZXIpOworICAg
IGlmIChhdXRvIGltYWdlQnVmZmVyID0gbV9yZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY2FjaGVk
SW1hZ2VCdWZmZXIocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSkKKyAgICAgICAgaW1hZ2VC
dWZmZXItPmRpZEZsdXNoKGZsdXNoSWRlbnRpZmllcik7CiB9CiAKIHZvaWQgUmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5Ojp1cGRhdGVSZXVzYWJsZUhhbmRsZXMoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5LmgKaW5kZXggOTVmOGQyYjQxMmZiOTFkZjc3YzY4ZjEzNmIwMDc4
NmYwMjRkN2UyNi4uZjgwNWZjMWVmZjljYTUxNDUzNTljYTI5MmI1MmRkZmVlZjhkYTgxZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oCkBAIC04MSw3ICs4MSw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIGNhY2hlTmF0aXZlSW1hZ2UoV2ViQ29yZTo6TmF0aXZlSW1hZ2UmKTsK
ICAgICB2b2lkIHJlbGVhc2VSZW1vdGVSZXNvdXJjZShXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIpOwogCi0gICAgYm9vbCB3YWl0Rm9ySW1hZ2VCdWZmZXJCYWNrZW5kV2FzQ3Jl
YXRlZCgpOworICAgIGJvb2wgd2FpdEZvckRpZENyZWF0ZUltYWdlQnVmZmVyQmFja2VuZCgpOwog
ICAgIGJvb2wgd2FpdEZvckRpZEZsdXNoKCk7CiAKIHByaXZhdGU6CkBAIC05NSw3ICs5NSw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVSZXVzYWJsZUhhbmRsZXMoKTsKIAogICAgIC8vIE1l
c3NhZ2VzIHRvIGJlIHJlY2VpdmVkLgotICAgIHZvaWQgaW1hZ2VCdWZmZXJCYWNrZW5kV2FzQ3Jl
YXRlZChjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBXZWJDb3Jl
OjpJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpD
b2xvclNwYWNlLCBXZWJDb3JlOjpQaXhlbEZvcm1hdCwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxl
LCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIHZvaWQgZGlkQ3Jl
YXRlSW1hZ2VCdWZmZXJCYWNrZW5kKEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSwgV2ViQ29yZTo6
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB2b2lkIGRpZEZsdXNoKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpGbHVzaElkZW50aWZpZXIsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcik7CiAKICAgICBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkgbV9yZW1vdGVSZXNv
dXJjZUNhY2hlUHJveHkgeyAqdGhpcyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkubWVzc2FnZXMu
aW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eS5tZXNzYWdlcy5pbgppbmRleCA5MjBkZTNmNzc3NTQwMTY0MDUxZmY1MWNk
MjFiNTA1NTk4NTRmODQ0Li4zYTUzMmQ1ZTRmZjYxNmJkYjA3ZWRlN2E5YTgzZTkzMTM3ZTczYmYx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5tZXNzYWdl
cy5pbgpAQCAtMjMsNyArMjMsNyBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogbWVzc2Fn
ZXMgLT4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5IE5vdFJlZkNvdW50ZWQgewotICAgIElt
YWdlQnVmZmVyQmFja2VuZFdhc0NyZWF0ZWQoV2ViQ29yZTo6RmxvYXRTaXplIGxvZ2ljYWxTaXpl
LCBXZWJDb3JlOjpJbnRTaXplIGJhY2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdl
YkNvcmU6OkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgZW51bTp1aW50OF90IFdlYkNvcmU6OlBpeGVs
Rm9ybWF0IHBpeGVsRm9ybWF0LCBXZWJLaXQ6OkltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBoYW5k
bGUsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIpCisgICAgRGlkQ3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kKFdlYktpdDo6SW1h
Z2VCdWZmZXJCYWNrZW5kSGFuZGxlIGhhbmRsZSwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKICAgICBEaWRGbHVzaChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6Rmx1c2hJZGVudGlmaWVyIGZsdXNoSWRlbnRpZmllciwgV2ViQ29y
ZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cikKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJs
ZUlPU3VyZmFjZUJhY2tlbmQuY3BwCmluZGV4IDUxNjI3YzVlZGQ4OTFiOTRmMzYzOTFjMGFiNGMy
ODA4YzY4MGJlZmYuLmU0MTJlN2Y2M2Y0MDg3ZjIxNzcyNDY4MmU5MzU4ZmI4NTg4ZmM1YzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1h
Z2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJm
YWNlQmFja2VuZC5jcHAKQEAgLTM3LDEzICszNywxMyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKEltYWdlQnVmZmVyU2hhcmVhYmxlSU9T
dXJmYWNlQmFja2VuZCk7CiAKLXN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlclNoYXJlYWJsZUlP
U3VyZmFjZUJhY2tlbmQ+IEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZDo6Y3Jl
YXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNw
YWNlIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBjb25zdCBIb3N0V2luZG93
KikKK3N0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQ+
IEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlKGNvbnN0IFBhcmFt
ZXRlcnMmIHBhcmFtZXRlcnMsIGNvbnN0IEhvc3RXaW5kb3cqKQogewotICAgIEludFNpemUgYmFj
a2VuZFNpemUgPSBjYWxjdWxhdGVCYWNrZW5kU2l6ZShzaXplLCByZXNvbHV0aW9uU2NhbGUpOwor
ICAgIEludFNpemUgYmFja2VuZFNpemUgPSBjYWxjdWxhdGVCYWNrZW5kU2l6ZShwYXJhbWV0ZXJz
LmxvZ2ljYWxTaXplLCBwYXJhbWV0ZXJzLnJlc29sdXRpb25TY2FsZSk7CiAgICAgaWYgKGJhY2tl
bmRTaXplLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvIHN1
cmZhY2UgPSBJT1N1cmZhY2U6OmNyZWF0ZShiYWNrZW5kU2l6ZSwgYmFja2VuZFNpemUsIGNhY2hl
ZENHQ29sb3JTcGFjZShjb2xvclNwYWNlKSwgSU9TdXJmYWNlOjpmb3JtYXRGb3JQaXhlbEZvcm1h
dChwaXhlbEZvcm1hdCkpOworICAgIGF1dG8gc3VyZmFjZSA9IElPU3VyZmFjZTo6Y3JlYXRlKGJh
Y2tlbmRTaXplLCBiYWNrZW5kU2l6ZSwgY2FjaGVkQ0dDb2xvclNwYWNlKHBhcmFtZXRlcnMuY29s
b3JTcGFjZSksIElPU3VyZmFjZTo6Zm9ybWF0Rm9yUGl4ZWxGb3JtYXQocGFyYW1ldGVycy5waXhl
bEZvcm1hdCkpOwogICAgIGlmICghc3VyZmFjZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
QEAgLTUzLDIxICs1MywyMSBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJTaGFyZWFibGVJ
T1N1cmZhY2VCYWNrZW5kPiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZgogCiAgICAgQ0dDb250
ZXh0Q2xlYXJSZWN0KGNnQ29udGV4dC5nZXQoKSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQ6Onplcm8o
KSwgYmFja2VuZFNpemUpKTsKIAotICAgIHJldHVybiBtYWtlVW5pcXVlPEltYWdlQnVmZmVyU2hh
cmVhYmxlSU9TdXJmYWNlQmFja2VuZD4oc2l6ZSwgYmFja2VuZFNpemUsIHJlc29sdXRpb25TY2Fs
ZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQsIFdURk1vdmUoc3VyZmFjZSkpOworICAgIHJldHVy
biBtYWtlVW5pcXVlPEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZD4ocGFyYW1l
dGVycywgV1RGTW92ZShzdXJmYWNlKSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZl
clNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQ+IEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNl
QmFja2VuZDo6Y3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEludFNp
emUmIGludGVybmFsU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9y
U3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUg
aGFuZGxlKQorc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFj
a2VuZD4gSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGUoY29uc3Qg
UGFyYW1ldGVycyYgcGFyYW1ldGVycywgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGhhbmRsZSkK
IHsKICAgICBpZiAoIVdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8TWFjaFNlbmRSaWdodD4oaGFuZGxl
KSkgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgfQogCi0gICAgYXV0byBzdXJmYWNlID0gSU9TdXJmYWNlOjpjcmVhdGVGcm9tU2Vu
ZFJpZ2h0KFdURk1vdmUoV1RGOjpnZXQ8TWFjaFNlbmRSaWdodD4oaGFuZGxlKSksIGNhY2hlZENH
Q29sb3JTcGFjZShjb2xvclNwYWNlKSk7CisgICAgYXV0byBzdXJmYWNlID0gSU9TdXJmYWNlOjpj
cmVhdGVGcm9tU2VuZFJpZ2h0KFdURk1vdmUoV1RGOjpnZXQ8TWFjaFNlbmRSaWdodD4oaGFuZGxl
KSksIGNhY2hlZENHQ29sb3JTcGFjZShwYXJhbWV0ZXJzLmNvbG9yU3BhY2UpKTsKICAgICBpZiAo
IXN1cmZhY2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIG1ha2VVbmlx
dWU8SW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kPihsb2dpY2FsU2l6ZSwgaW50
ZXJuYWxTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0LCBXVEZN
b3ZlKHN1cmZhY2UpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxJbWFnZUJ1ZmZlclNoYXJlYWJs
ZUlPU3VyZmFjZUJhY2tlbmQ+KHBhcmFtZXRlcnMsIFdURk1vdmUoc3VyZmFjZSkpOwogfQogCiBJ
bWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNr
ZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUoKSBjb25zdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNo
YXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kLmgKaW5k
ZXggZWQ1MTYyNGViMGFhMTA1MGUxM2JmYTE3ZWEzNGYwZmUzYzFmZmY2ZC4uMzE4OTIxNWYzM2Fj
YWI3OTAxZmFjYjUwNWYyYTVjMTM5OWEwZGU3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFj
ZUJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2Nv
Y29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZC5oCkBAIC0zOSw4ICszOSw4
IEBAIGNsYXNzIEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZCA6IHB1YmxpYyBX
ZWJDb3JlOjpJbWFnZUJ1ZmZlcklPU3VyZmFjCiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChJ
bWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQpOwogICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZCk7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJh
Y2tlbmQ+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25z
dCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UsIFdlYkNvcmU6OlBp
eGVsRm9ybWF0LCBjb25zdCBXZWJDb3JlOjpIb3N0V2luZG93Kik7Ci0gICAgc3RhdGljIHN0ZDo6
dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQ+IGNyZWF0ZShj
b25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBXZWJDb3JlOjpJbnRT
aXplJiBpbnRlcm5hbFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JT
cGFjZSwgV2ViQ29yZTo6UGl4ZWxGb3JtYXQsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSk7Cisg
ICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJh
Y2tlbmQ+IGNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiwgY29uc3QgV2ViQ29yZTo6SG9zdFdpbmRv
dyopOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1
cmZhY2VCYWNrZW5kPiBjcmVhdGUoY29uc3QgUGFyYW1ldGVycyYsIEltYWdlQnVmZmVyQmFja2Vu
ZEhhbmRsZSk7CiAKICAgICB1c2luZyBXZWJDb3JlOjpJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tl
bmQ6OkltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414885</attachid>
            <date>2020-11-26 00:47:26 -0800</date>
            <delta_ts>2020-11-26 19:06:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219007-20201126004725.patch</filename>
            <type>text/plain</type>
            <size>101385</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwMTY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzIzYWI2YjRlNmM0NDFj
MDYzZWM1Mzg0YzZmOTA5NDdiZDFhNDY5ZC4uMGY0NmMxODA3N2JiNWNkOGVhYzBjMDYxZDE1MTc1
MmIxNDZiOWQ3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkxIEBACisyMDIwLTExLTI2ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10g
Q2xlYW4gdXAgcmVjcmVhdGluZyB0aGUgSW1hZ2VCdWZmZXJCYWNrZW5kIGJlY2F1c2Ugb2YgR1BV
IGNyYXNoaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMTkwMDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAtLSBBZGQgdGhlIHN0cnVjdHVyZSBJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnMuIE1h
a2UgQ29uY3JldGVJbWFnZUJ1ZmZlcgorICAgICAgICAgICBvd24gYW4gaW5zdGFuY2Ugb2YgdGhp
cyBzdHJ1Y3R1cmUuIEFuZCBtYWtlIEltYWdlQnVmZmVyQmFja2VuZCBvd24gYQorICAgICAgICAg
ICBjb25zdCByZWZlcmVuY2UgdG8gdGhpcyBzdHJ1Y3R1cmUuCisgICAgICAgIC0tIEV4cG9zZSB0
aGUgSW1hZ2VCdWZmZXJCYWNrZW5kIGNyZWF0aW9uIHBhcmFtZXRlcnMgdGhyb3VnaCBJbWFnZUJ1
ZmZlci4KKyAgICAgICAgLS0gRXhwb3NlIG1ldGhvZHMgdG8gc2V0IGFuZCBjbGVhciB0aGUgYmFj
a2VuZCBvZiBhbiBJbWFnZUJ1ZmZlci4KKyAgICAgICAgLS0gRXhwb3NlIHN1Ym1pdERyYXdpbmdD
b250ZXh0KCkgYW5kIGRpZEZsdXNoKCkgdGhyb3VnaCBJbWFnZUJ1ZmZlciBzbyBubworICAgICAg
ICAgICBjYXN0aW5nIGlzIG5lZWRlZCB3aGVuIGNhbGxpbmcgdGhlc2UgZnVuY3Rpb25zIHRocm91
Z2ggUmVtb3RlSW1hZ2VCdWZlclByb3h5LgorICAgICAgICAtLSBSZXBsYWNlIGFsbCB0aGUgaW5z
dGFuY2VzIG9mICdpc0FjY2VsZXJhdGVkJyBieSAncmVuZGVyaW5nTW9kZScgc28gbm8KKyAgICAg
ICAgICAgbmVlZCB0byBjb252ZXJ0IG9uZSB0eXBlIHRvIHRoZSBvdGhlci4KKworICAgICAgICAq
IEhlYWRlcnMuY21ha2U6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6cHJl
cGFyZUZvckRpc3BsYXkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1h
Z2VCdWZmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbmNyZXRlSW1hZ2VCdWZmZXI6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb25jcmV0ZUltYWdlQnVmZmVyOjpDb25jcmV0ZUltYWdl
QnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OnN1Ym1pdERyYXdpbmdDb250ZXh0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpzdWJtaXREaXNwbGF5TGlzdCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6ZGlkRmx1c2gpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VC
dWZmZXI6OmZsdXNoRHJhd2luZ0NvbnRleHRBbmRDb21taXQpOiBEZWxldGVkLgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OkltYWdlQnVmZmVyQmFja2VuZCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OnRvQkdSQURhdGEgY29uc3QpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjptZW1vcnlDb3N0IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlQnVmZmVyQmFja2VuZDo6Ynl0ZXNQZXJSb3cgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjp0b0JhY2tlbmRDb29yZGluYXRlcyBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OmxvZ2ljYWxTaXplIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQmFja2VuZDo6cmVzb2x1dGlvblNjYWxlIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQmFja2VuZDo6Y29sb3JTcGFjZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OnBpeGVsRm9ybWF0
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQmFja2VuZDo6bG9naWNhbFJl
Y3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjpiYWNrZW5k
UmVjdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OmJhY2tl
bmRTaXplIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQmFj
a2VuZDo6YmFzZVRyYW5zZm9ybSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvUGxhdGZvcm1JbWFnZUJ1ZmZlci5oOgorICAgICAgICAoaXNUeXBlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNhaXJvQmFja2VuZDo6ZHJhd1BhdHRlcm4p
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9JbWFn
ZVN1cmZhY2VCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ2Fpcm9J
bWFnZVN1cmZhY2VCYWNrZW5kOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZm
ZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQ6OkltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VC
YWNrZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VC
YWNrZW5kOjpwbGF0Zm9ybVRyYW5zZm9ybUNvbG9yU3BhY2UpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VC
YWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFj
a2VuZDo6SW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kKToKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZDo6YmFja2VuZFNpemUgY29uc3QpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFj
a2VuZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCYWNr
ZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ0dCYWNrZW5kOjpzZXR1cENv
bnRleHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OmNv
cHlJbWFnZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNHQmFja2VuZDo6
c2lua0ludG9JbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNHQmFja2VuZDo6
ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNHQmFja2VuZDo6ZHJhd1BhdHRl
cm4pOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OnRvQ0ZEYXRhIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ0dCYWNrZW5kOjpiYXNlVHJhbnNm
b3JtIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFn
ZUJ1ZmZlckNHQmFja2VuZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
QnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVy
Q0dCaXRtYXBCYWNrZW5kOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJD
R0JpdG1hcEJhY2tlbmQ6OkltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kKToKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UgY29uc3Qp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNr
ZW5kLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZh
Y2VCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVySU9TdXJmYWNlQmFj
a2VuZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVySU9TdXJmYWNlQmFj
a2VuZDo6SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6YmFja2VuZFNpemUgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpkcmF3Q29uc3VtaW5nKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3Qu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RG
bHVzaElkZW50aWZpZXIuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpJbWFnZUJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpJbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OkltYWdlQnVmZmVyOjppbml0aWFsRHJhd2luZ0NvbnRleHRDVE0pOiBEZWxldGVk
LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRpcmVjdDJEQmFj
a2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6
Y29weUltYWdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyRGlyZWN0MkRC
YWNrZW5kOjpkcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyRGlyZWN0MkRCYWNr
ZW5kOjpkcmF3UGF0dGVybik6CisKIDIwMjAtMTEtMjIgIEFudHRpIEtvaXZpc3RvICA8YW50dGlA
YXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdW0ludGVncmF0aW9uXSBDb252ZXJ0IHNvbWUgcmVt
YWluaW5nIElubGluZUJveCBhY2Nlc3MgdG8gdXNlIGlubGluZSBpdGVyYXRvcgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRl
eCBlOTc3NjliZWI0MGFmYzVmOGRjYzQ3Y2IxNDFmOGM1ODA1MDMzMTRjLi5mNmNmMTAxOWQxYTM0
NzMzMWUzNzkzNzUwMWEwYWRiNTIyZGQ4OGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisy
MDIwLTExLTI2ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAg
IFtHUFUgUHJvY2Vzc10gQ2xlYW4gdXAgcmVjcmVhdGluZyB0aGUgSW1hZ2VCdWZmZXJCYWNrZW5k
IGJlY2F1c2Ugb2YgR1BVIGNyYXNoaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMTkwMDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBUaGlzIGlzIG5vIG5lZWQgdG8gc3RvcmUgdGhlIGJhY2tlbmQgcGFy
YW1ldGVycyBpbiBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5LgorICAgICAgICBUaGVzZSBwYXJhbWV0
ZXJzIGNhbiBiZSBhY2Nlc3NlZCBmcm9tIHRoZSBjdXJyZW50IEltYWdlQnVmZmVyQmFja2VuZCB2
aWEKKyAgICAgICAgdGhlIEltYWdlQnVmZmVyIGJlZm9yZSB0aGUgYmFja2VuZCBpcyBjbGVhcmVk
LgorCisgICAgICAgIFJlbW92ZSB0aGUgdHJhaXRzIGRlZmluaXRpb24gZm9yIFJlbW90ZUltYWdl
QnVmZmVyUHJveHkgdHlwZXMgYmVjYXVzZQorICAgICAgICB0aGV5IGFyZSB3cm9uZy4gQWxsIElt
YWdlQnVmZmVycyBoYXZlIHZhbGlkIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpCisgICAg
ICAgIHJlZ2FyZGxlc3Mgd2hldGhlciB0aGV5IGFyZSByZW1vdGUgb3Igbm90LiBJbWFnZUJ1ZmZl
cjo6c2V0QmFja2VuZCBhbmQKKyAgICAgICAgSW1hZ2VCdWZmZXI6OmNvbW1pdEZsdXNoRGlzcGxh
eUxpc3QoKSBhcmUgbm93IGltcGxlbWVudGVkIGluIFdlYkNvcmUuCisKKyAgICAgICAgKiBHUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmg6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUltYWdlQnVmZmVyOjpSZW1vdGVJbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUltYWdlQnVmZmVyOjpzdWJtaXREaXNwbGF5TGlzdCk6IERlbGV0ZWQuCisgICAgICAgICog
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6ZGlkQ3JlYXRlSW1hZ2VCdWZmZXJCYWNr
ZW5kKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6YXBwbHlEaXNw
bGF5TGlzdHNGcm9tSGFuZGxlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFj
a2VuZDo6aW1hZ2VCdWZmZXJCYWNrZW5kV2FzQ3JlYXRlZCk6IERlbGV0ZWQuCisgICAgICAgICog
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmg6CisgICAgICAgICog
U2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmRpc3BsYXkpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2Vu
ZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2Vu
ZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBC
YWNrZW5kOjpJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQpOgorICAgICAgICAoV2Vi
S2l0OjpJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmJhY2tlbmRTaXplIGNvbnN0
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJs
ZUJpdG1hcEJhY2tlbmQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9QbGF0
Zm9ybVJlbW90ZUltYWdlQnVmZmVyUHJveHkuaDoKKyAgICAgICAgKGlzVHlwZSk6IERlbGV0ZWQu
CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94
eS5oOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlclByb3h5OjpjcmVhdGUpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlclByb3h5OjpSZW1vdGVJbWFnZUJ1ZmZl
clByb3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6Y2xlYXJC
YWNrZW5kKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJQcm94
eTo6Y3JlYXRlQmFja2VuZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdl
QnVmZmVyUHJveHk6OmRpZEZsdXNoKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
SW1hZ2VCdWZmZXJQcm94eTo6c2l6ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUltYWdlQnVmZmVyUHJveHk6OnJlbmRlcmluZ01vZGUgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlclByb3h5Ojpjb2xvclNwYWNlIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6cGl4
ZWxGb3JtYXQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1
ZmZlclByb3h5OjpzdWJtaXREaXNwbGF5TGlzdCk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpyZWVzdGFibGlzaEdQVVBy
b2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5Ojp3YWl0Rm9yRGlkQ3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpjcmVhdGVJbWFnZUJ1ZmZlcik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6ZGlkQ3JlYXRlSW1h
Z2VCdWZmZXJCYWNrZW5kKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5OjpkaWRGbHVzaCk6CisgICAgICAgIChXZWJLaXQ6OnJlY3JlYXRlSW1hZ2VCdWZmZXIp
OiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6
OndhaXRGb3JJbWFnZUJ1ZmZlckJhY2tlbmRXYXNDcmVhdGVkKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjppbWFnZUJ1ZmZlckJhY2tlbmRX
YXNDcmVhdGVkKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9S
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkubWVzc2FnZXMuaW46CisgICAgICAg
ICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1
cmZhY2VCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVJ
T1N1cmZhY2VCYWNrZW5kOjpjcmVhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZC5oOgorCiAyMDIw
LTExLTIxICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgogCiAgICAgICAgIEltcGxl
bWVudCBhdWRpbyBjYXB0dXJlIGZvciBTcGVlY2hSZWNvZ25pdGlvbiBvbiBtYWNPUwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRl
cnMuY21ha2UKaW5kZXggMzc4OWFhMzgzOTQwZDI1NzQxMjRiYzJmZjQzZTdlZWM0YWU5NTBkNS4u
ZGZhMjQ0ZmRjZDlkNzMzZDdjOTU4OTI3M2UwNjljN2MwMDRmZTdhNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNt
YWtlCkBAIC0xMjcwLDYgKzEyNzAsNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19I
RUFERVJTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmgK
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3R2x5cGhz
UmVjb3JkZXIuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dERyYXdpbmdDb250ZXh0LmgKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RGbHVzaElkZW50aWZpZXIuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdEltYWdlQnVmZmVyLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlwZS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOTFkNzRjNzQ1MjI1OTc5MDY3
OTFhZDFlOGEyMTI4M2Q1NGM2MTE2OC4uZGQ1YWExYzE1MDZkZTE5NzkzMjY1NjczYjcxODdiMmFl
NGVkNDQzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtMjE4Nyw2ICsyMTg3LDcgQEAKIAkJNzI3QTdGM0EyNDA3OEI4NDAwNEQy
OTMxIC8qIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzJCQUMzQUIyM0UxRTU0NDAwOEQ3NDFDIC8qIElt
YWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTcyOTlCQzY3MjNENkE1MzIwMENDNjg4MyAvKiBBbHBoYVBy
ZW11bHRpcGxpY2F0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3Mjk5QkM2NDIzRDY4NkE2MDBDQzY4ODMgLyogQWxwaGFQcmVtdWx0aXBsaWNhdGlv
bi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcy
OTlCQzY4MjNENkE1M0UwMENDNjg4MyAvKiBSZW5kZXJpbmdNb2RlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Mjk5QkM2NjIzRDY4NkM2MDBDQzY4ODMg
LyogUmVuZGVyaW5nTW9kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCTcyOUM0NUU4MjU2RTA5MTkwMDA0MDdDRiAvKiBEaXNwbGF5TGlzdEZsdXNo
SWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNzI5QzQ1RTYyNTZFMDVGOTAwMDQwN0NGIC8qIERpc3BsYXlMaXN0Rmx1c2hJZGVudGlmaWVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzI5
RDA1MzAyNTMxNDI0MzAwNDIyMDk4IC8qIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI5RDA1MkUyNTMx
M0UyNjAwNDIyMDk4IC8qIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcyQTczQkVGMjQ1QTNGOTAw
MDFDOUQwMyAvKiBBbmltYXRpb25GcmFtZVJhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyMkE4MTVDMjM4RkQ1MDUwMEMwMDU4MyAvKiBBbmltYXRp
b25GcmFtZVJhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk3MkFCOUEyMTI1NUE5RkRFMDBFNkVCRjEgLyogTmF0aXZlSW1hZ2VSZWZlcmVuY2Uu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyQUI5QTFG
MjU1QTlFQTYwMEU2RUJGMSAvKiBOYXRpdmVJbWFnZVJlZmVyZW5jZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMDA3Miw2ICsxMDA3Myw3IEBA
CiAJCTcyN0FGRUQzMUEyRUE2QTAwMDA0NDJFOCAvKiBFWFRzUkdCLmlkbCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IHBhdGggPSBFWFRzUkdCLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI5
OUJDNjQyM0Q2ODZBNjAwQ0M2ODgzIC8qIEFscGhhUHJlbXVsdGlwbGljYXRpb24uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQWxwaGFQcmVtdWx0aXBsaWNhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3Mjk5QkM2NjIzRDY4NkM2MDBDQzY4ODMgLyogUmVuZGVyaW5nTW9kZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBSZW5kZXJpbmdNb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTcyOUM0NUU2MjU2RTA1RjkwMDA0MDdDRiAvKiBEaXNwbGF5TGlzdEZsdXNoSWRlbnRpZmllci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBEaXNwbGF5TGlzdEZsdXNoSWRlbnRpZmllci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3MjlEMDUyRTI1MzEzRTI2MDA0MjIwOTggLyogUmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MkFCOUExRjI1NUE5RUE2
MDBFNkVCRjEgLyogTmF0aXZlSW1hZ2VSZWZlcmVuY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmF0aXZl
SW1hZ2VSZWZlcmVuY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzJCQUMzQTQy
M0UxNzMyNzAwOEQ3NDFDIC8qIEltYWdlQnVmZmVyQmFja2VuZC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMTc3OTAsNiArMTc3OTIsNyBAQAogCQkJCTFDQUY1NkRFMjUz
MDI0NUEwMDE3QjQ3MiAvKiBEaXNwbGF5TGlzdERyYXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0LmNw
cCAqLywKIAkJCQk1NUMwQTI5NTIzRkUyQ0UwMDBGMkNCOTMgLyogRGlzcGxheUxpc3REcmF3aW5n
Q29udGV4dC5jcHAgKi8sCiAJCQkJNzJFQTA5RjkyM0ZDQ0M2QTAwODUwNEE1IC8qIERpc3BsYXlM
aXN0RHJhd2luZ0NvbnRleHQuaCAqLywKKwkJCQk3MjlDNDVFNjI1NkUwNUY5MDAwNDA3Q0YgLyog
RGlzcGxheUxpc3RGbHVzaElkZW50aWZpZXIuaCAqLywKIAkJCQk3MkVBMDlGNzIzRkNDQjNEMDA4
NTA0QTUgLyogRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oICovLAogCQkJCUY0MjJCOEI2MjUzRjcw
NjUwMDRFNzdFOCAvKiBEaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwICovLAogCQkJCUY0MjJCOEI1
MjUzRjcwNjUwMDRFNzdFOCAvKiBEaXNwbGF5TGlzdEl0ZW1CdWZmZXIuaCAqLywKQEAgLTE4MDIy
LDcgKzE4MDI1LDYgQEAKIAkJCQlBMUNDNTY0QTFGNDYxM0JCMDBBNDU1NUIgLyogUGF5bWVudFJl
cXVlc3QgKi8sCiAJCQkJMUQwMDI2OUEyMzc0QjlGODAwQ0E2Q0RGIC8qIFBpY3R1cmVJblBpY3R1
cmUgKi8sCiAJCQkJQTlEMjQ3RjkwRDc1N0U0MTAwRkRGOTU5IC8qIFBsdWdpbnMgKi8sCi0JCQkJ
ODlGNjBCMTcxNTdGNkEwMjAwNzVFMTU3IC8qIFF1b3RhICovLAogCQkJCUJDOTg1NDQ2MENEM0RB
NUYwMDA2OUJDMSAvKiBSYW5nZXMgKi8sCiAJCQkJQ0Q4QzZDMjQyMkZEREE2NDAwQTcyMEFCIC8q
IFJlbW90ZVBsYXliYWNrICovLAogCQkJCTUxODJDMjRDMUYzMTQyMDkwMDU5QkE3QyAvKiBTZXJ2
aWNlV29ya2VycyAqLywKQEAgLTMxNjc0LDYgKzMxNjc2LDcgQEAKIAkJCQkwRkU1RkJEMzFDM0RE
NTFFMDAwN0EyQ0EgLyogRGlzcGxheUxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTFDQUY1NkRC
MjUzMDFBQzgwMDE3QjQ3MiAvKiBEaXNwbGF5TGlzdERyYXdHbHlwaHNSZWNvcmRlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNTVBRDA5NDAyNDA4OTY0MDAwREU0RDJGIC8qIERpc3BsYXlMaXN0RHJh
d2luZ0NvbnRleHQuaCBpbiBIZWFkZXJzICovLAorCQkJCTcyOUM0NUU4MjU2RTA5MTkwMDA0MDdD
RiAvKiBEaXNwbGF5TGlzdEZsdXNoSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTVB
RDA5M0UyNDA4OTYzNTAwREU0RDJGIC8qIERpc3BsYXlMaXN0SW1hZ2VCdWZmZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUY0RDQwQkM5MjU1NDYzQkYwMDcyMTM0OSAvKiBEaXNwbGF5TGlzdEl0ZW1C
dWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRTVGQkQ1MUMzREQ1MUUwMDA3QTJDQSAvKiBE
aXNwbGF5TGlzdEl0ZW1zLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKaW5k
ZXggYTM5NTRjN2Y1ZTQyYzcyZjQxYTM4ODg5NDY1YjMxMjQyMmEwNDZmMi4uZWQxYWIwNWZkMGE2
NTQzNTNlYmZkMTA4ODI3NjZjYTk1MDE4OWVhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKQEAg
LTIwNDIsNyArMjA0Miw3IEBAIEdyYXBoaWNzQ29udGV4dCogQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEQmFzZTo6ZHJhd2luZ0NvbnRleHQoKSBjb25zdAogdm9pZCBDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkRCYXNlOjpwcmVwYXJlRm9yRGlzcGxheSgpCiB7CiAgICAgaWYgKGF1dG8gYnVmZmVyID0g
Y2FudmFzQmFzZSgpLmJ1ZmZlcigpKQotICAgICAgICBidWZmZXItPmZsdXNoRHJhd2luZ0NvbnRl
eHRBbmRDb21taXQoKTsKKyAgICAgICAgYnVmZmVyLT5zdWJtaXREcmF3aW5nQ29udGV4dCgpOwog
fQogCiBib29sIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6Om5lZWRzUHJlcGFyYXRpb25G
b3JEaXNwbGF5KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaAppbmRleCA4MjQyOTkwMDJlZTY2MGYwYmFlM2Yx
NjNhZDFjODliMDNkNGRkYTc5Li4xZTYyYjU5MDBjZmVjNDgxMTE5NmI0YzZhYWY1YmQyNTRlYzE1
ZjI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0
ZUltYWdlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29u
Y3JldGVJbWFnZUJ1ZmZlci5oCkBAIC0zNiwzMCArMzYsNDEgQEAgcHVibGljOgogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEltYWdlQnVmZmVyVHlwZSA9IENvbmNyZXRlSW1hZ2VCdWZmZXIsIHR5cGVu
YW1lLi4uIEFyZ3VtZW50cz4KICAgICBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyVHlwZT4gY3Jl
YXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNw
YWNlIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBjb25zdCBIb3N0V2luZG93
KiBob3N0V2luZG93LCBBcmd1bWVudHMmJi4uLiBhcmd1bWVudHMpCiAgICAgewotICAgICAgICBh
dXRvIGJhY2tlbmQgPSBCYWNrZW5kVHlwZTo6Y3JlYXRlKHNpemUsIHJlc29sdXRpb25TY2FsZSwg
Y29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQsIGhvc3RXaW5kb3cpOworICAgICAgICBhdXRvIHBhcmFt
ZXRlcnMgPSBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJCYWNrZW5kOjpQYXJhbWV0ZXJzPihu
ZXcgSW1hZ2VCdWZmZXJCYWNrZW5kOjpQYXJhbWV0ZXJzKHsgc2l6ZSwgcmVzb2x1dGlvblNjYWxl
LCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCB9KSk7CisgICAgICAgIGF1dG8gYmFja2VuZCA9IEJh
Y2tlbmRUeXBlOjpjcmVhdGUoKnBhcmFtZXRlcnMsIGhvc3RXaW5kb3cpOwogICAgICAgICBpZiAo
IWJhY2tlbmQpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBJbWFnZUJ1ZmZlclR5cGUoV1RGTW92ZShiYWNrZW5kKSwgc3RkOjpmb3J3YXJk
PEFyZ3VtZW50cz4oYXJndW1lbnRzKS4uLikpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IEltYWdlQnVmZmVyVHlwZShXVEZNb3ZlKHBhcmFtZXRlcnMpLCBXVEZNb3ZlKGJhY2tlbmQpLCBz
dGQ6OmZvcndhcmQ8QXJndW1lbnRzPihhcmd1bWVudHMpLi4uKSk7CiAgICAgfQogCiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgSW1hZ2VCdWZmZXJUeXBlID0gQ29uY3JldGVJbWFnZUJ1ZmZlciwgdHlw
ZW5hbWUuLi4gQXJndW1lbnRzPgogICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VCdWZmZXJUeXBlPiBj
cmVhdGUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBjb25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIEFyZ3VtZW50cyYmLi4uIGFyZ3VtZW50cykKICAgICB7Ci0gICAgICAgIGF1dG8gYmFja2Vu
ZCA9IEJhY2tlbmRUeXBlOjpjcmVhdGUoc2l6ZSwgY29udGV4dCk7CisgICAgICAgIGF1dG8gcGFy
YW1ldGVycyA9IHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnM+
KG5ldyBJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnMoeyBzaXplLCAxLCBDb2xvclNwYWNl
OjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdSQTggfSkpOworICAgICAgICBhdXRvIGJhY2tlbmQgPSBC
YWNrZW5kVHlwZTo6Y3JlYXRlKCpwYXJhbWV0ZXJzLCBjb250ZXh0KTsKICAgICAgICAgaWYgKCFi
YWNrZW5kKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgSW1hZ2VCdWZmZXJUeXBlKFdURk1vdmUoYmFja2VuZCksIHN0ZDo6Zm9yd2FyZDxB
cmd1bWVudHM+KGFyZ3VtZW50cykuLi4pKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJ
bWFnZUJ1ZmZlclR5cGUoV1RGTW92ZShwYXJhbWV0ZXJzKSwgV1RGTW92ZShiYWNrZW5kKSwgc3Rk
Ojpmb3J3YXJkPEFyZ3VtZW50cz4oYXJndW1lbnRzKS4uLikpOwogICAgIH0KIAotICAgIGJvb2wg
aXNBY2NlbGVyYXRlZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEJhY2tlbmRUeXBlOjppc0Fj
Y2VsZXJhdGVkOyB9CisgICAgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gQmFja2VuZFR5cGU6OnJlbmRlcmluZ01vZGU7IH0KIAogcHJvdGVjdGVk
OgotICAgIENvbmNyZXRlSW1hZ2VCdWZmZXIoc3RkOjp1bmlxdWVfcHRyPEJhY2tlbmRUeXBlPiYm
IGJhY2tlbmQgPSBudWxscHRyLCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyID0gUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyOjpnZW5lcmF0
ZSgpKQotICAgICAgICA6IG1fYmFja2VuZChXVEZNb3ZlKGJhY2tlbmQpKQorICAgIENvbmNyZXRl
SW1hZ2VCdWZmZXIoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQmFja2VuZDo6UGFyYW1ldGVy
cz4mJiBwYXJhbWV0ZXJzLCBzdGQ6OnVuaXF1ZV9wdHI8QmFja2VuZFR5cGU+JiYgYmFja2VuZCA9
IG51bGxwdHIsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIgPSBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI6OmdlbmVyYXRlKCkpCisgICAg
ICAgIDogbV9wYXJhbWV0ZXJzKFdURk1vdmUocGFyYW1ldGVycykpCisgICAgICAgICwgbV9iYWNr
ZW5kKFdURk1vdmUoYmFja2VuZCkpCiAgICAgICAgICwgbV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogICAgIHsKICAgICB9CiAKKyAgICB2
b2lkIHNldEJhY2tlbmQoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQmFja2VuZD4mJiBiYWNr
ZW5kKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgQVNTRVJUKCFtX2JhY2tlbmQpOworICAgICAg
ICBtX2JhY2tlbmQgPSBzdGQ6OnVuaXF1ZV9wdHI8QmFja2VuZFR5cGU+IHsgc3RhdGljX2Nhc3Q8
QmFja2VuZFR5cGUqPihiYWNrZW5kLnJlbGVhc2UoKSkgfTsKKyAgICB9CisKKyAgICB2b2lkIGNs
ZWFyQmFja2VuZCgpIG92ZXJyaWRlIHsgbV9iYWNrZW5kID0gbnVsbHB0cjsgfQorCiAgICAgdmly
dHVhbCBCYWNrZW5kVHlwZSogZW5zdXJlQmFja2VuZENyZWF0ZWQoKSBjb25zdCB7IHJldHVybiBt
X2JhY2tlbmQuZ2V0KCk7IH0KIAogICAgIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3JlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcjsgfQpAQCAtNzgsMTkgKzg5LDExIEBAIHByb3RlY3RlZDoK
ICAgICAgICAgfQogICAgIH0KIAotICAgIEFmZmluZVRyYW5zZm9ybSBiYXNlVHJhbnNmb3JtKCkg
Y29uc3Qgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIGlmIChhdXRvKiBiYWNrZW5kID0gZW5zdXJl
QmFja2VuZENyZWF0ZWQoKSkKLSAgICAgICAgICAgIHJldHVybiBiYWNrZW5kLT5iYXNlVHJhbnNm
b3JtKCk7Ci0gICAgICAgIHJldHVybiB7IH07Ci0gICAgfQotCi0gICAgSW50U2l6ZSBsb2dpY2Fs
U2l6ZSgpIGNvbnN0IG92ZXJyaWRlCi0gICAgewotICAgICAgICBpZiAoYXV0byogYmFja2VuZCA9
IGVuc3VyZUJhY2tlbmRDcmVhdGVkKCkpCi0gICAgICAgICAgICByZXR1cm4gYmFja2VuZC0+bG9n
aWNhbFNpemUoKTsKLSAgICAgICAgcmV0dXJuIHsgfTsKLSAgICB9CisgICAgSW50U2l6ZSBsb2dp
Y2FsU2l6ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEludFNpemUobV9wYXJhbWV0ZXJzLT5s
b2dpY2FsU2l6ZSk7IH0KKyAgICBmbG9hdCByZXNvbHV0aW9uU2NhbGUoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBtX3BhcmFtZXRlcnMtPnJlc29sdXRpb25TY2FsZTsgfQorICAgIENvbG9yU3Bh
Y2UgY29sb3JTcGFjZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcGFyYW1ldGVycy0+Y29s
b3JTcGFjZTsgfQorICAgIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0KCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gbV9wYXJhbWV0ZXJzLT5waXhlbEZvcm1hdDsgfQorICAgIGNvbnN0IEltYWdlQnVm
ZmVyQmFja2VuZDo6UGFyYW1ldGVycyYgcGFyYW1ldGVycygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuICptX3BhcmFtZXRlcnM7IH0KIAogICAgIEludFNpemUgYmFja2VuZFNpemUoKSBjb25zdCBv
dmVycmlkZQogICAgIHsKQEAgLTk5LDExICsxMDIsMTEgQEAgcHJvdGVjdGVkOgogICAgICAgICBy
ZXR1cm4geyB9OwogICAgIH0KIAotICAgIGZsb2F0IHJlc29sdXRpb25TY2FsZSgpIGNvbnN0IG92
ZXJyaWRlCisgICAgQWZmaW5lVHJhbnNmb3JtIGJhc2VUcmFuc2Zvcm0oKSBjb25zdCBvdmVycmlk
ZQogICAgIHsKLSAgICAgICAgaWYgKGF1dG8qIGJhY2tlbmQgPSBlbnN1cmVCYWNrZW5kQ3JlYXRl
ZCgpKQotICAgICAgICAgICAgcmV0dXJuIGJhY2tlbmQtPnJlc29sdXRpb25TY2FsZSgpOwotICAg
ICAgICByZXR1cm4gMTsKKyAgICAgICAgaWYgKEJhY2tlbmRUeXBlOjppc09yaWdpbkF0VXBwZXJM
ZWZ0Q29ybmVyKQorICAgICAgICAgICAgcmV0dXJuIEFmZmluZVRyYW5zZm9ybSgxLCAwLCAwLCAt
MSwgMCwgbG9naWNhbFNpemUoKS5oZWlnaHQoKSk7CisgICAgICAgIHJldHVybiB7IH07CiAgICAg
fQogCiAgICAgc2l6ZV90IG1lbW9yeUNvc3QoKSBjb25zdCBvdmVycmlkZQpAQCAtMjkxLDYgKzI5
NCw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgICAgIGJhY2tlbmQtPnJlbGVhc2VCdWZmZXJUb1Bv
b2woKTsKICAgICB9CiAKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJCYWNrZW5kOjpQ
YXJhbWV0ZXJzPiBtX3BhcmFtZXRlcnM7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEJhY2tlbmRUeXBl
PiBtX2JhY2tlbmQ7CiAgICAgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIG1fcmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZUJ1ZmZlci5oCmluZGV4IDYyYTNmN2ZmYTM3NzhhOGMwMTM5MDE2MjU0Mzc1M2Fh
N2JkMmMyMWQuLjc3ZDkyNjE2M2Q5NjQ2ZTI5NWZkMDRiN2MxMmQ0OWY3NTRjOWI5NmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaApAQCAtMjcs
NiArMjcsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkRpc3BsYXlMaXN0Rmx1c2hJ
ZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXJCYWNrZW5kLmgiCiAjaW5jbHVkZSAi
UmVuZGVyaW5nTW9kZS5oIgogI2luY2x1ZGUgIlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5o
IgpAQCAtNjAsMTAgKzYxLDEzIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgRmxvYXRSZWN0IGNsYW1w
ZWRSZWN0KGNvbnN0IEZsb2F0UmVjdCYpOwogCiAgICAgc3RhdGljIEludFNpemUgY29tcGF0aWJs
ZUJ1ZmZlclNpemUoY29uc3QgRmxvYXRTaXplJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0Jik7Ci0g
ICAgCisKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5JbWFnZUJ1ZmZlcigpID0gZGVmYXVs
dDsKIAotICAgIHZpcnR1YWwgYm9vbCBpc0FjY2VsZXJhdGVkKCkgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBzZXRCYWNrZW5kKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckJhY2tlbmQ+
JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJCYWNrZW5kKCkgPSAwOworCisgICAgdmly
dHVhbCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVh
bCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
KCkgY29uc3QgeyByZXR1cm4geyB9OyB9CiAgICAgCiAgICAgdmlydHVhbCBHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQoKSBjb25zdCA9IDA7CkBAIC03MiwxMiArNzYsMTggQEAgcHVibGljOgogICAg
IHZpcnR1YWwgRGlzcGxheUxpc3Q6OkRyYXdpbmdDb250ZXh0KiBkcmF3aW5nQ29udGV4dCgpIHsg
cmV0dXJuIG51bGxwdHI7IH0KICAgICB2aXJ0dWFsIGJvb2wgcHJlZmVyc1ByZXBhcmF0aW9uRm9y
RGlzcGxheSgpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCB2b2lkIGZsdXNoRHJhd2lu
Z0NvbnRleHQoKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZmx1c2hEcmF3aW5nQ29udGV4dEFuZENv
bW1pdCgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBzdWJtaXREcmF3aW5nQ29udGV4dCgpIHsgfQor
ICAgIHZpcnR1YWwgdm9pZCBzdWJtaXREaXNwbGF5TGlzdChjb25zdCBEaXNwbGF5TGlzdDo6RGlz
cGxheUxpc3QmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmx1c2goRGlzcGxheUxpc3Q6OkZs
dXNoSWRlbnRpZmllcikgeyB9CiAKLSAgICB2aXJ0dWFsIEFmZmluZVRyYW5zZm9ybSBiYXNlVHJh
bnNmb3JtKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgSW50U2l6ZSBsb2dpY2FsU2l6ZSgpIGNv
bnN0ID0gMDsKLSAgICB2aXJ0dWFsIEludFNpemUgYmFja2VuZFNpemUoKSBjb25zdCA9IDA7CiAg
ICAgdmlydHVhbCBmbG9hdCByZXNvbHV0aW9uU2NhbGUoKSBjb25zdCA9IDA7CisgICAgdmlydHVh
bCBDb2xvclNwYWNlIGNvbG9yU3BhY2UoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBQaXhlbEZv
cm1hdCBwaXhlbEZvcm1hdCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGNvbnN0IEltYWdlQnVm
ZmVyQmFja2VuZDo6UGFyYW1ldGVycyYgcGFyYW1ldGVycygpIGNvbnN0ID0gMDsKKworICAgIHZp
cnR1YWwgSW50U2l6ZSBiYWNrZW5kU2l6ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEFmZmlu
ZVRyYW5zZm9ybSBiYXNlVHJhbnNmb3JtKCkgY29uc3QgPSAwOwogCiAgICAgdmlydHVhbCBzaXpl
X3QgbWVtb3J5Q29zdCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHNpemVfdCBleHRlcm5hbE1l
bW9yeUNvc3QoKSBjb25zdCA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmNwcAppbmRleCA3ZjBmZTllNmQ5NjZlNzRi
NDVmODVhYWQwZTNiMmZiODRkOTQ1MGI5Li45Mzk0ZTdiZmY0MjliYzIxZWZjZGYzYjE0MDExMWYx
YWUyY2E5NDRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZUJ1ZmZlckJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlQnVmZmVyQmFja2VuZC5jcHAKQEAgLTMxLDEyICszMSw4IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotSW1hZ2VCdWZmZXJCYWNrZW5kOjpJbWFnZUJ1ZmZlckJhY2tlbmQoY29u
c3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50U2l6ZSYgYmFja2VuZFNpemUsIGZs
b2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBw
aXhlbEZvcm1hdCkKLSAgICA6IG1fbG9naWNhbFNpemUobG9naWNhbFNpemUpCi0gICAgLCBtX2Jh
Y2tlbmRTaXplKGJhY2tlbmRTaXplKQotICAgICwgbV9yZXNvbHV0aW9uU2NhbGUocmVzb2x1dGlv
blNjYWxlKQotICAgICwgbV9jb2xvclNwYWNlKGNvbG9yU3BhY2UpCi0gICAgLCBtX3BpeGVsRm9y
bWF0KHBpeGVsRm9ybWF0KQorSW1hZ2VCdWZmZXJCYWNrZW5kOjpJbWFnZUJ1ZmZlckJhY2tlbmQo
Y29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycykKKyAgICA6IG1fcGFyYW1ldGVycyhwYXJhbWV0
ZXJzKQogewogfQogCkBAIC05OSwxNSArOTUsMTUgQEAgdm9pZCBJbWFnZUJ1ZmZlckJhY2tlbmQ6
OmNvbnZlcnRUb0x1bWluYW5jZU1hc2soKQogCiBWZWN0b3I8dWludDhfdD4gSW1hZ2VCdWZmZXJC
YWNrZW5kOjp0b0JHUkFEYXRhKHZvaWQqIGRhdGEpIGNvbnN0CiB7Ci0gICAgVmVjdG9yPHVpbnQ4
X3Q+IHJlc3VsdCg0ICogbV9sb2dpY2FsU2l6ZS5hcmVhKCkudW5zYWZlR2V0KCkpOwotICAgIHNp
emVfdCBkZXN0Qnl0ZXNQZXJSb3cgPSBtX2xvZ2ljYWxTaXplLndpZHRoKCkgKiA0OworICAgIFZl
Y3Rvcjx1aW50OF90PiByZXN1bHQoNCAqIGxvZ2ljYWxTaXplKCkuYXJlYSgpLnVuc2FmZUdldCgp
KTsKKyAgICBzaXplX3QgZGVzdEJ5dGVzUGVyUm93ID0gbG9naWNhbFNpemUoKS53aWR0aCgpICog
NDsKICAgICBzaXplX3Qgc3JjQnl0ZXNQZXJSb3cgPSBieXRlc1BlclJvdygpOwogCiAgICAgdWlu
dDhfdCogc3JjUm93cyA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGRhdGEpOwogCiAgICAg
Y29weUltYWdlUGl4ZWxzKAogICAgICAgICBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0
aXBsaWVkLCBwaXhlbEZvcm1hdCgpLCBzcmNCeXRlc1BlclJvdywgc3JjUm93cywKLSAgICAgICAg
QWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6QkdS
QTgsIGRlc3RCeXRlc1BlclJvdywgcmVzdWx0LmRhdGEoKSwgbV9sb2dpY2FsU2l6ZSk7CisgICAg
ICAgIEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6
OkJHUkE4LCBkZXN0Qnl0ZXNQZXJSb3csIHJlc3VsdC5kYXRhKCksIGxvZ2ljYWxTaXplKCkpOwog
CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmgKaW5kZXggNTgwNjcxNWE3YjJjODc1NzY5
MDJhNzczNTg0ZGYxODA1ODI1MTAwZi4uNGE2NTQ3OGY4YjY0MGM2ZWQxMWYzNWYxNzY5OTAyODgx
YjM4ODUxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VCdWZmZXJCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VCdWZmZXJCYWNrZW5kLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJJbWFnZVBh
aW50aW5nT3B0aW9ucy5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJQbGF0Zm9y
bUxheWVyLmgiCisjaW5jbHVkZSAiUmVuZGVyaW5nTW9kZS5oIgogI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKQEAgLTc3LDYgKzc4LDEzIEBAIHB1Ymxp
YzoKIAogY2xhc3MgSW1hZ2VCdWZmZXJCYWNrZW5kIHsKIHB1YmxpYzoKKyAgICBzdHJ1Y3QgUGFy
YW1ldGVycyB7CisgICAgICAgIEZsb2F0U2l6ZSBsb2dpY2FsU2l6ZTsKKyAgICAgICAgZmxvYXQg
cmVzb2x1dGlvblNjYWxlOworICAgICAgICBDb2xvclNwYWNlIGNvbG9yU3BhY2U7CisgICAgICAg
IFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0OworICAgIH07CisKICAgICBXRUJDT1JFX0VYUE9SVCB2
aXJ0dWFsIH5JbWFnZUJ1ZmZlckJhY2tlbmQoKSA9IGRlZmF1bHQ7CiAKICAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgSW50U2l6ZSBjYWxjdWxhdGVCYWNrZW5kU2l6ZShjb25zdCBGbG9hdFNpemUm
LCBmbG9hdCByZXNvbHV0aW9uU2NhbGUpOwpAQCAtODQsMTQgKzkyLDkgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KCkgY29uc3QgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBmbHVzaENvbnRleHQoKSB7IH0KIAotICAgIEludFNpemUgbG9naWNhbFNpemUoKSBj
b25zdCB7IHJldHVybiBtX2xvZ2ljYWxTaXplOyB9Ci0gICAgSW50U2l6ZSBiYWNrZW5kU2l6ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fYmFja2VuZFNpemU7IH0KLSAgICBmbG9hdCByZXNvbHV0aW9uU2Nh
bGUoKSBjb25zdCB7IHJldHVybiBtX3Jlc29sdXRpb25TY2FsZTsgfQotICAgIENvbG9yU3BhY2Ug
Y29sb3JTcGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29sb3JTcGFjZTsgfQotICAgIFBpeGVsRm9y
bWF0IHBpeGVsRm9ybWF0KCkgY29uc3QgeyByZXR1cm4gbV9waXhlbEZvcm1hdDsgfQorICAgIHZp
cnR1YWwgSW50U2l6ZSBiYWNrZW5kU2l6ZSgpIGNvbnN0ID0gMDsKIAotICAgIHZpcnR1YWwgQWZm
aW5lVHJhbnNmb3JtIGJhc2VUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBBZmZpbmVUcmFuc2Zv
cm0oKTsgfQotICAgIHZpcnR1YWwgc2l6ZV90IG1lbW9yeUNvc3QoKSBjb25zdCB7IHJldHVybiA0
ICogbV9iYWNrZW5kU2l6ZS5hcmVhKCkudW5zYWZlR2V0KCk7IH0KKyAgICB2aXJ0dWFsIHNpemVf
dCBtZW1vcnlDb3N0KCkgY29uc3QgeyByZXR1cm4gNCAqIGJhY2tlbmRTaXplKCkuYXJlYSgpLnVu
c2FmZUdldCgpOyB9CiAgICAgdmlydHVhbCBzaXplX3QgZXh0ZXJuYWxNZW1vcnlDb3N0KCkgY29u
c3QgeyByZXR1cm4gMDsgfQogCiAgICAgdmlydHVhbCBSZWZQdHI8TmF0aXZlSW1hZ2U+IGNvcHlO
YXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5KSBjb25zdCA9IDA7CkBAIC0xMjcsMjQgKzEzMCwy
OSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8VGhyZWFkU2FmZUltYWdl
QnVmZmVyRmx1c2hlcj4gY3JlYXRlRmx1c2hlcigpIHsgcmV0dXJuIG51bGxwdHI7IH0KICAgICAK
ICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNPcmlnaW5BdFVwcGVyTGVmdENvcm5lciA9IGZh
bHNlOwotICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0FjY2VsZXJhdGVkID0gZmFsc2U7Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUgPSBSZW5kZXJp
bmdNb2RlOjpVbmFjY2VsZXJhdGVkOwogCiBwcm90ZWN0ZWQ6Ci0gICAgV0VCQ09SRV9FWFBPUlQg
SW1hZ2VCdWZmZXJCYWNrZW5kKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IElu
dFNpemUmIGJhY2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UsIFBp
eGVsRm9ybWF0KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBJbWFnZUJ1ZmZlckJhY2tlbmQoY29uc3Qg
UGFyYW1ldGVycyYpOwogCi0gICAgdmlydHVhbCB1bnNpZ25lZCBieXRlc1BlclJvdygpIGNvbnN0
IHsgcmV0dXJuIDQgKiBtX2JhY2tlbmRTaXplLndpZHRoKCk7IH0KKyAgICB2aXJ0dWFsIHVuc2ln
bmVkIGJ5dGVzUGVyUm93KCkgY29uc3QgeyByZXR1cm4gNCAqIGJhY2tlbmRTaXplKCkud2lkdGgo
KTsgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICBUIHRvQmFja2VuZENvb3JkaW5h
dGVzKFQgdCkgY29uc3QKICAgICB7CiAgICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1l
PFQsIEludFBvaW50Pjo6dmFsdWUgfHwgc3RkOjppc19zYW1lPFQsIEludFNpemU+Ojp2YWx1ZSB8
fCBzdGQ6OmlzX3NhbWU8VCwgSW50UmVjdD46OnZhbHVlKTsKLSAgICAgICAgaWYgKG1fcmVzb2x1
dGlvblNjYWxlICE9IDEpCi0gICAgICAgICAgICB0LnNjYWxlKG1fcmVzb2x1dGlvblNjYWxlKTsK
KyAgICAgICAgaWYgKHJlc29sdXRpb25TY2FsZSgpICE9IDEpCisgICAgICAgICAgICB0LnNjYWxl
KHJlc29sdXRpb25TY2FsZSgpKTsKICAgICAgICAgcmV0dXJuIHQ7CiAgICAgfQogCi0gICAgSW50
UmVjdCBsb2dpY2FsUmVjdCgpIGNvbnN0IHsgcmV0dXJuIEludFJlY3QoSW50UG9pbnQ6Onplcm8o
KSwgbV9sb2dpY2FsU2l6ZSk7IH07Ci0gICAgSW50UmVjdCBiYWNrZW5kUmVjdCgpIGNvbnN0IHsg
cmV0dXJuIEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgbV9iYWNrZW5kU2l6ZSk7IH07CisgICAg
SW50U2l6ZSBsb2dpY2FsU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIEludFNpemUobV9wYXJhbWV0ZXJz
LmxvZ2ljYWxTaXplKTsgfQorICAgIGZsb2F0IHJlc29sdXRpb25TY2FsZSgpIGNvbnN0IHsgcmV0
dXJuIG1fcGFyYW1ldGVycy5yZXNvbHV0aW9uU2NhbGU7IH0KKyAgICBDb2xvclNwYWNlIGNvbG9y
U3BhY2UoKSBjb25zdCB7IHJldHVybiBtX3BhcmFtZXRlcnMuY29sb3JTcGFjZTsgfQorICAgIFBp
eGVsRm9ybWF0IHBpeGVsRm9ybWF0KCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0ZXJzLnBpeGVs
Rm9ybWF0OyB9CisKKyAgICBJbnRSZWN0IGxvZ2ljYWxSZWN0KCkgY29uc3QgeyByZXR1cm4gSW50
UmVjdChJbnRQb2ludDo6emVybygpLCBsb2dpY2FsU2l6ZSgpKTsgfTsKKyAgICBJbnRSZWN0IGJh
Y2tlbmRSZWN0KCkgY29uc3QgeyByZXR1cm4gSW50UmVjdChJbnRQb2ludDo6emVybygpLCBiYWNr
ZW5kU2l6ZSgpKTsgfTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBjb3B5SW1h
Z2VQaXhlbHMoCiAgICAgICAgIEFscGhhUHJlbXVsdGlwbGljYXRpb24gc3JjQWxwaGFGb3JtYXQs
IFBpeGVsRm9ybWF0IHNyY1BpeGVsRm9ybWF0LCB1bnNpZ25lZCBzcmNCeXRlc1BlclJvdywgdWlu
dDhfdCogc3JjUm93cywKQEAgLTE1NSwxMSArMTYzLDcgQEAgcHJvdGVjdGVkOgogICAgIFdFQkNP
UkVfRVhQT1JUIFJlZlB0cjxJbWFnZURhdGE+IGdldEltYWdlRGF0YShBbHBoYVByZW11bHRpcGxp
Y2F0aW9uIG91dHB1dEZvcm1hdCwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwgdm9pZCogZGF0YSkg
Y29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwdXRJbWFnZURhdGEoQWxwaGFQcmVtdWx0
aXBsaWNhdGlvbiBpbnB1dEZvcm1hdCwgY29uc3QgSW1hZ2VEYXRhJiwgY29uc3QgSW50UmVjdCYg
c3JjUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCwgQWxwaGFQcmVtdWx0aXBsaWNhdGlv
biBkZXN0Rm9ybWF0LCB2b2lkKiBkYXRhKTsKIAotICAgIEludFNpemUgbV9sb2dpY2FsU2l6ZTsK
LSAgICBJbnRTaXplIG1fYmFja2VuZFNpemU7Ci0gICAgZmxvYXQgbV9yZXNvbHV0aW9uU2NhbGU7
Ci0gICAgQ29sb3JTcGFjZSBtX2NvbG9yU3BhY2U7Ci0gICAgUGl4ZWxGb3JtYXQgbV9waXhlbEZv
cm1hdDsKKyAgICBjb25zdCBQYXJhbWV0ZXJzJiBtX3BhcmFtZXRlcnM7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9QbGF0Zm9ybUltYWdlQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9QbGF0Zm9ybUltYWdlQnVmZmVyLmgKaW5kZXggYjA1ZmE2NTE2OTcxZDE3NjcxMzFkNTZh
NDYzOTM1M2VmOTRlNDkyNS4uNTJkZDgzY2M5M2Q1NTUzYjM3OWU1ODdkNDM4NWQ0Zjc4MDU5NDRi
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1J
bWFnZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRm
b3JtSW1hZ2VCdWZmZXIuaApAQCAtNzUsNSArNzUsNSBAQCB1c2luZyBEaXNwbGF5TGlzdEFjY2Vs
ZXJhdGVkSW1hZ2VCdWZmZXIgPSBEaXNwbGF5TGlzdDo6SW1hZ2VCdWZmZXI8QWNjZWxlcmF0ZWRJ
bQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lO
KFdlYkNvcmU6OkFjY2VsZXJhdGVkSW1hZ2VCdWZmZXIpCi0gICAgc3RhdGljIGJvb2wgaXNUeXBl
KGNvbnN0IFdlYkNvcmU6OkltYWdlQnVmZmVyJiBidWZmZXIpIHsgcmV0dXJuIGJ1ZmZlci5pc0Fj
Y2VsZXJhdGVkKCk7IH0KKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6SW1h
Z2VCdWZmZXImIGJ1ZmZlcikgeyByZXR1cm4gYnVmZmVyLnJlbmRlcmluZ01vZGUoKSA9PSBXZWJD
b3JlOjpSZW5kZXJpbmdNb2RlOjpBY2NlbGVyYXRlZDsgfQogU1BFQ0lBTElaRV9UWVBFX1RSQUlU
U19FTkQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQuY3BwCmluZGV4IDEyYTViNjBh
MmU5MDQ2YTE5NTg5MmJhZjVkZDdlZDQ5NjMzYjNlNzQuLmIzYmZkODEyN2I4N2QxNjg4ZWFiYjVj
ZjRiMmE3MWMzMzU5Y2QyZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5jcHAK
QEAgLTgwLDcgKzgwLDcgQEAgdm9pZCBJbWFnZUJ1ZmZlckNhaXJvQmFja2VuZDo6ZHJhd1BhdHRl
cm4oR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmwKICAgICB9CiAKICAgICBp
ZiAoYXV0byBpbWFnZSA9IGNvcHlOYXRpdmVJbWFnZSgmZGVzdENvbnRleHQgPT0gJmNvbnRleHQo
KSA/IENvcHlCYWNraW5nU3RvcmUgOiBEb250Q29weUJhY2tpbmdTdG9yZSkpCi0gICAgICAgIENh
aXJvOjpkcmF3UGF0dGVybigqZGVzdENvbnRleHQucGxhdGZvcm1Db250ZXh0KCksIGltYWdlLT5w
bGF0Zm9ybUltYWdlKCkuZ2V0KCksIG1fbG9naWNhbFNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBw
YXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgb3B0aW9ucyk7CisgICAgICAgIENhaXJvOjpkcmF3UGF0
dGVybigqZGVzdENvbnRleHQucGxhdGZvcm1Db250ZXh0KCksIGltYWdlLT5wbGF0Zm9ybUltYWdl
KCkuZ2V0KCksIGxvZ2ljYWxTaXplKCksIGRlc3RSZWN0LCBzcmNSZWN0LCBwYXR0ZXJuVHJhbnNm
b3JtLCBwaGFzZSwgb3B0aW9ucyk7CiB9CiAKIHZvaWQgSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQ6
OmNsaXBUb01hc2soR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZh
Y2VCYWNrZW5kLmNwcAppbmRleCAxY2QwNzU0YjM5MTQzYWY0MjliNDZkNWQ3OGU0NTFmMGQxZTA3
NGMzLi4zZGExNDU1ZWJhMDZkNjc5NGUzMzI3MDE3ZGFhZmQ3OWJjNTQ3MmRjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJv
SW1hZ2VTdXJmYWNlQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQuY3BwCkBAIC00
MSwxMyArNDEsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NB
VEVEX0lNUEwoSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQpOwogCi1zdGQ6OnVu
aXF1ZV9wdHI8SW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQ+IEltYWdlQnVmZmVy
Q2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kOjpjcmVhdGUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBm
bG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQg
cGl4ZWxGb3JtYXQsIGNvbnN0IEhvc3RXaW5kb3cqKQorc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVm
ZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kPiBJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNl
QmFja2VuZDo6Y3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIGNvbnN0IEhvc3RX
aW5kb3cqKQogewotICAgIEFTU0VSVChwaXhlbEZvcm1hdCA9PSBQaXhlbEZvcm1hdDo6QkdSQTgp
OworICAgIEFTU0VSVChwYXJhbWV0ZXJzLnBpeGVsRm9ybWF0ID09IFBpeGVsRm9ybWF0OjpCR1JB
OCk7CiAKICAgICBzdGF0aWMgY2Fpcm9fdXNlcl9kYXRhX2tleV90IHNfc3VyZmFjZURhdGFLZXk7
CiAKLSAgICBJbnRTaXplIGJhY2tlbmRTaXplID0gY2FsY3VsYXRlQmFja2VuZFNpemUoc2l6ZSwg
cmVzb2x1dGlvblNjYWxlKTsKKyAgICBJbnRTaXplIGJhY2tlbmRTaXplID0gY2FsY3VsYXRlQmFj
a2VuZFNpemUocGFyYW1ldGVycy5sb2dpY2FsU2l6ZSwgcGFyYW1ldGVycy5yZXNvbHV0aW9uU2Nh
bGUpOwogICAgIGlmIChiYWNrZW5kU2l6ZS5pc0VtcHR5KCkgfHwgYmFja2VuZFNpemUud2lkdGgo
KSA+IGNhaXJvTWF4SW1hZ2VTaXplIHx8IGJhY2tlbmRTaXplLmhlaWdodCgpID4gY2Fpcm9NYXhJ
bWFnZVNpemUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC02MSwxNiArNjEsMTYgQEAg
c3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kPiBJbWFn
ZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWMKICAgICAgICAgZmFzdEZyZWUoZGF0YSk7CiAgICAgfSk7
CiAKLSAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZh
Y2VCYWNrZW5kPihuZXcgSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQoc2l6ZSwg
YmFja2VuZFNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQsIFdU
Rk1vdmUoc3VyZmFjZSkpKTsKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVy
Q2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kPihuZXcgSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFj
ZUJhY2tlbmQocGFyYW1ldGVycywgV1RGTW92ZShzdXJmYWNlKSkpOwogfQogCi1zdGQ6OnVuaXF1
ZV9wdHI8SW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQ+IEltYWdlQnVmZmVyQ2Fp
cm9JbWFnZVN1cmZhY2VCYWNrZW5kOjpjcmVhdGUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBjb25z
dCBHcmFwaGljc0NvbnRleHQmKQorc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQ2Fpcm9JbWFn
ZVN1cmZhY2VCYWNrZW5kPiBJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZDo6Y3Jl
YXRlKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYp
CiB7Ci0gICAgcmV0dXJuIEltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kOjpjcmVh
dGUoc2l6ZSwgMSwgQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4LCBudWxscHRy
KTsKKyAgICByZXR1cm4gSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQ6OmNyZWF0
ZShwYXJhbWV0ZXJzLCBudWxscHRyKTsKIH0KIAotSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFj
ZUJhY2tlbmQ6OkltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kKGNvbnN0IEZsb2F0
U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEludFNpemUmIGJhY2tlbmRTaXplLCBmbG9hdCByZXNv
bHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3Jt
YXQsIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+JiYgc3VyZmFjZSkKLSAgICA6IEltYWdlQnVmZmVy
Q2Fpcm9TdXJmYWNlQmFja2VuZChsb2dpY2FsU2l6ZSwgYmFja2VuZFNpemUsIHJlc29sdXRpb25T
Y2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQsIFdURk1vdmUoc3VyZmFjZSkpCitJbWFnZUJ1
ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZDo6SW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFj
ZUJhY2tlbmQoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycywgUmVmUHRyPGNhaXJvX3N1cmZh
Y2VfdD4mJiBzdXJmYWNlKQorICAgIDogSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kKHBh
cmFtZXRlcnMsIFdURk1vdmUoc3VyZmFjZSkpCiB7CiAgICAgQVNTRVJUKGNhaXJvX3N1cmZhY2Vf
Z2V0X3R5cGUobV9zdXJmYWNlLmdldCgpKSA9PSBDQUlST19TVVJGQUNFX1RZUEVfSU1BR0UpOwog
fQpAQCAtNzksMTYgKzc5LDE2IEBAIHZvaWQgSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJh
Y2tlbmQ6OnBsYXRmb3JtVHJhbnNmb3JtQ29sb3JTcGFjZShjb25zdCBzdGQ6CiB7CiAgICAgdW5z
aWduZWQgY2hhciogZGF0YVNyYyA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEobV9zdXJm
YWNlLmdldCgpKTsKICAgICBpbnQgc3RyaWRlID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfc3Ry
aWRlKG1fc3VyZmFjZS5nZXQoKSk7Ci0gICAgZm9yIChpbnQgeSA9IDA7IHkgPCBtX2xvZ2ljYWxT
aXplLmhlaWdodCgpOyArK3kpIHsKKyAgICBmb3IgKGludCB5ID0gMDsgeSA8IGxvZ2ljYWxTaXpl
KCkuaGVpZ2h0KCk7ICsreSkgewogICAgICAgICB1bnNpZ25lZCogcm93ID0gcmVpbnRlcnByZXRf
Y2FzdF9wdHI8dW5zaWduZWQqPihkYXRhU3JjICsgc3RyaWRlICogeSk7Ci0gICAgICAgIGZvciAo
aW50IHggPSAwOyB4IDwgbV9sb2dpY2FsU2l6ZS53aWR0aCgpOyB4KyspIHsKKyAgICAgICAgZm9y
IChpbnQgeCA9IDA7IHggPCBsb2dpY2FsU2l6ZSgpLndpZHRoKCk7IHgrKykgewogICAgICAgICAg
ICAgdW5zaWduZWQqIHBpeGVsID0gcm93ICsgeDsKICAgICAgICAgICAgIGF1dG8gcGl4ZWxDb21w
b25lbnRzID0gdW5wcmVtdWx0aXBsaWVkKGFzU1JHQkEoUGFja2VkQ29sb3I6OkFSR0IgeyAqcGl4
ZWwgfSkpOwogICAgICAgICAgICAgcGl4ZWxDb21wb25lbnRzID0geyBsb29rVXBUYWJsZVtwaXhl
bENvbXBvbmVudHMucmVkXSwgbG9va1VwVGFibGVbcGl4ZWxDb21wb25lbnRzLmdyZWVuXSwgbG9v
a1VwVGFibGVbcGl4ZWxDb21wb25lbnRzLmJsdWVdLCBwaXhlbENvbXBvbmVudHMuYWxwaGEgfTsK
ICAgICAgICAgICAgICpwaXhlbCA9IFBhY2tlZENvbG9yOjpBUkdCIHsgcHJlbXVsdGlwbGllZENl
aWxpbmcocGl4ZWxDb21wb25lbnRzKSB9LnZhbHVlOwogICAgICAgICB9CiAgICAgfQotICAgIGNh
aXJvX3N1cmZhY2VfbWFya19kaXJ0eV9yZWN0YW5nbGUobV9zdXJmYWNlLmdldCgpLCAwLCAwLCBt
X2xvZ2ljYWxTaXplLndpZHRoKCksIG1fbG9naWNhbFNpemUuaGVpZ2h0KCkpOworICAgIGNhaXJv
X3N1cmZhY2VfbWFya19kaXJ0eV9yZWN0YW5nbGUobV9zdXJmYWNlLmdldCgpLCAwLCAwLCBsb2dp
Y2FsU2l6ZSgpLndpZHRoKCksIGxvZ2ljYWxTaXplKCkuaGVpZ2h0KCkpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3Vy
ZmFjZUJhY2tlbmQuaAppbmRleCBkMTZkMzNlYWM0NmM1ZGY2NmZiOGZhMmQ5NTQ5MTBlMmY5MTE1
YTAzLi44NjVjYzY5YjJkNTMzODU0NWYzN2U0MTkzY2I5NGYxOTgwYmU3M2E0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJv
SW1hZ2VTdXJmYWNlQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kLmgKQEAgLTQwLDEx
ICs0MCwxMSBAQCBjbGFzcyBJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZCA6IHB1
YmxpYyBJbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbgogICAgIFdURl9NQUtFX0lTT19BTExP
Q0FURUQoSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQpOwogICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKEltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kKTsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZh
Y2VCYWNrZW5kPiBjcmVhdGUoY29uc3QgRmxvYXRTaXplJiwgZmxvYXQgcmVzb2x1dGlvblNjYWxl
LCBDb2xvclNwYWNlLCBQaXhlbEZvcm1hdCwgY29uc3QgSG9zdFdpbmRvdyopOwotICAgIHN0YXRp
YyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQ+IGNy
ZWF0ZShjb25zdCBGbG9hdFNpemUmLCBjb25zdCBHcmFwaGljc0NvbnRleHQmKTsKKyAgICBzdGF0
aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kPiBj
cmVhdGUoY29uc3QgUGFyYW1ldGVycyYsIGNvbnN0IEhvc3RXaW5kb3cqKTsKKyAgICBzdGF0aWMg
c3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kPiBjcmVh
dGUoY29uc3QgUGFyYW1ldGVycyYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpOwogCiBwcml2YXRl
OgotICAgIEltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kKGNvbnN0IEZsb2F0U2l6
ZSYgbG9naWNhbFNpemUsIGNvbnN0IEludFNpemUmIGJhY2tlbmRTaXplLCBmbG9hdCByZXNvbHV0
aW9uU2NhbGUsIENvbG9yU3BhY2UsIFBpeGVsRm9ybWF0LCBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90
PiYmKTsKKyAgICBJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZChjb25zdCBQYXJh
bWV0ZXJzJiwgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4mJik7CiAKICAgICB2b2lkIHBsYXRmb3Jt
VHJhbnNmb3JtQ29sb3JTcGFjZShjb25zdCBzdGQ6OmFycmF5PHVpbnQ4X3QsIDI1Nj4mIGxvb2tV
cFRhYmxlKSBvdmVycmlkZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZh
Y2VCYWNrZW5kLmNwcAppbmRleCA5YjgyMTY0YWVhMzMwNzFlNTM2MWM2ZmUzOWIxYjgyN2M5YjZi
MTUwLi4wYjczZjE0YmE3MDA1ZTUyMDUwZWQ1ODIxNjRhMTE2MzgwNTQ5NzFmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJv
U3VyZmFjZUJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZC5jcHAKQEAgLTQzLDggKzQzLDgg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1JbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tl
bmQ6OkltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZChjb25zdCBGbG9hdFNpemUmIGxvZ2lj
YWxTaXplLCBjb25zdCBJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxl
LCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBSZWZQdHI8
Y2Fpcm9fc3VyZmFjZV90PiYmIHN1cmZhY2UpCi0gICAgOiBJbWFnZUJ1ZmZlckNhaXJvQmFja2Vu
ZChsb2dpY2FsU2l6ZSwgYmFja2VuZFNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwg
cGl4ZWxGb3JtYXQpCitJbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQ6OkltYWdlQnVmZmVy
Q2Fpcm9TdXJmYWNlQmFja2VuZChjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBSZWZQdHI8
Y2Fpcm9fc3VyZmFjZV90PiYmIHN1cmZhY2UpCisgICAgOiBJbWFnZUJ1ZmZlckNhaXJvQmFja2Vu
ZChwYXJhbWV0ZXJzKQogICAgICwgbV9zdXJmYWNlKFdURk1vdmUoc3VyZmFjZSkpCiB7CiAgICAg
QVNTRVJUKGNhaXJvX3N1cmZhY2Vfc3RhdHVzKG1fc3VyZmFjZS5nZXQoKSkgPT0gQ0FJUk9fU1RB
VFVTX1NVQ0NFU1MpOwpAQCAtNTksNiArNTksMTEgQEAgR3JhcGhpY3NDb250ZXh0JiBJbWFnZUJ1
ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQ6OmNvbnRleHQoKSBjb25zdAogICAgIHJldHVybiAqbV9j
b250ZXh0OwogfQogCitJbnRTaXplIEltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZDo6YmFj
a2VuZFNpemUoKSBjb25zdAoreworICAgIHJldHVybiB7IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0
X3dpZHRoKG1fc3VyZmFjZS5nZXQoKSksIGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2hlaWdodCht
X3N1cmZhY2UuZ2V0KCkpIH07Cit9CisKIHVuc2lnbmVkIEltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNl
QmFja2VuZDo6Ynl0ZXNQZXJSb3coKSBjb25zdAogewogICAgIHJldHVybiBjYWlyb19pbWFnZV9z
dXJmYWNlX2dldF9zdHJpZGUobV9zdXJmYWNlLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFj
a2VuZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZm
ZXJDYWlyb1N1cmZhY2VCYWNrZW5kLmgKaW5kZXggMTJhYTJiMWNlODhlZTQyNjQ1ZmE3NzJlNjc5
ZjVkNDE5NWEyNjc0Ny4uOWU5M2RkZTg1OGVmNDNiMjgyZDQzOGNhNWE3NjdmZWJjYmJkZGJjZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VC
dWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kLmgKQEAgLTQwLDYg
KzQwLDggQEAgY2xhc3MgSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kIDogcHVibGljIElt
YWdlQnVmZmVyQ2Fpcm9CYWNrZW5kIHsKIHB1YmxpYzoKICAgICBHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQoKSBjb25zdCBvdmVycmlkZTsKIAorICAgIEludFNpemUgYmFja2VuZFNpemUoKSBjb25z
dCBvdmVycmlkZTsKKwogICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gY29weU5hdGl2ZUltYWdlKEJh
Y2tpbmdTdG9yZUNvcHkpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHRv
QkdSQURhdGEoKSBjb25zdCBvdmVycmlkZTsKQEAgLTQ3LDcgKzQ5LDcgQEAgcHVibGljOgogICAg
IHZvaWQgcHV0SW1hZ2VEYXRhKEFscGhhUHJlbXVsdGlwbGljYXRpb24gaW5wdXRGb3JtYXQsIGNv
bnN0IEltYWdlRGF0YSYsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QsIGNvbnN0IEludFBvaW50JiBk
ZXN0UG9pbnQsIEFscGhhUHJlbXVsdGlwbGljYXRpb24gZGVzdEZvcm1hdCkgb3ZlcnJpZGU7CiAK
IHByb3RlY3RlZDoKLSAgICBJbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQoY29uc3QgRmxv
YXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJl
c29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQsIFJlZlB0cjxjYWlyb19zdXJm
YWNlX3Q+JiYpOworICAgIEltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZChjb25zdCBQYXJh
bWV0ZXJzJiwgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4mJik7CiAKICAgICBSZWZQdHI8TmF0aXZl
SW1hZ2U+IGNhaXJvU3VyZmFjZUNvZXJjZVRvSW1hZ2UoKSBjb25zdDsKICAgICB1bnNpZ25lZCBi
eXRlc1BlclJvdygpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JhY2tlbmQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JhY2tlbmQuY3BwCmluZGV4
IDUwMTdiYTEyYzhiNDg3YjBjYTA2ZTU0M2IxMjk2MzY1ZDZkZDJiMmIuLmFiYmQzNjg4NzgyNjdk
OGNmNzc4YzY2MDZmZGIyODAzZGQ0YTFkNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5jcHAKQEAg
LTc5LDggKzc5LDggQEAgdm9pZCBJbWFnZUJ1ZmZlckNHQmFja2VuZDo6c2V0dXBDb250ZXh0KCkg
Y29uc3QKIHsKICAgICAvLyBUaGUgaW5pdGlhbCBDVE0gbWF0Y2hlcyBEaXNwbGF5TGlzdDo6UmVj
b3JkZXI6OmNsaXBUb0RyYXdpbmdDb21tYW5kcygpJ3MgaW5pdGlhbCBDVE0uCiAgICAgY29udGV4
dCgpLnNjYWxlKEZsb2F0U2l6ZSgxLCAtMSkpOwotICAgIGNvbnRleHQoKS50cmFuc2xhdGUoMCwg
LW1fYmFja2VuZFNpemUuaGVpZ2h0KCkpOwotICAgIGNvbnRleHQoKS5hcHBseURldmljZVNjYWxl
RmFjdG9yKG1fcmVzb2x1dGlvblNjYWxlKTsKKyAgICBjb250ZXh0KCkudHJhbnNsYXRlKDAsIC1i
YWNrZW5kU2l6ZSgpLmhlaWdodCgpKTsKKyAgICBjb250ZXh0KCkuYXBwbHlEZXZpY2VTY2FsZUZh
Y3RvcihyZXNvbHV0aW9uU2NhbGUoKSk7CiB9CiAKIHN0YXRpYyBSZXRhaW5QdHI8Q0dJbWFnZVJl
Zj4gY3JlYXRlQ3JvcHBlZEltYWdlSWZOZWNlc3NhcnkoQ0dJbWFnZVJlZiBpbWFnZSwgY29uc3Qg
SW50U2l6ZSYgYmFja2VuZFNpemUpCkBAIC0xMTIsMzEgKzExMiwzMiBAQCBzdGF0aWMgUmVmUHRy
PEltYWdlPiBjcmVhdGVCaXRtYXBJbWFnZUFmdGVyU2NhbGluZ0lmTmVlZGVkKFJlZlB0cjxOYXRp
dmVJbWFnZT4mJgogUmVmUHRyPEltYWdlPiBJbWFnZUJ1ZmZlckNHQmFja2VuZDo6Y29weUltYWdl
KEJhY2tpbmdTdG9yZUNvcHkgY29weUJlaGF2aW9yLCBQcmVzZXJ2ZVJlc29sdXRpb24gcHJlc2Vy
dmVSZXNvbHV0aW9uKSBjb25zdAogewogICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gaW1hZ2U7Ci0g
ICAgaWYgKG1fcmVzb2x1dGlvblNjYWxlID09IDEgfHwgcHJlc2VydmVSZXNvbHV0aW9uID09IFBy
ZXNlcnZlUmVzb2x1dGlvbjo6WWVzKQorICAgIGlmIChyZXNvbHV0aW9uU2NhbGUoKSA9PSAxIHx8
IHByZXNlcnZlUmVzb2x1dGlvbiA9PSBQcmVzZXJ2ZVJlc29sdXRpb246OlllcykKICAgICAgICAg
aW1hZ2UgPSBjb3B5TmF0aXZlSW1hZ2UoY29weUJlaGF2aW9yKTsKICAgICBlbHNlCiAgICAgICAg
IGltYWdlID0gY29weU5hdGl2ZUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKTsKLSAgICByZXR1
cm4gY3JlYXRlQml0bWFwSW1hZ2VBZnRlclNjYWxpbmdJZk5lZWRlZChXVEZNb3ZlKGltYWdlKSwg
bV9sb2dpY2FsU2l6ZSwgbV9iYWNrZW5kU2l6ZSwgbV9yZXNvbHV0aW9uU2NhbGUsIHByZXNlcnZl
UmVzb2x1dGlvbik7CisgICAgcmV0dXJuIGNyZWF0ZUJpdG1hcEltYWdlQWZ0ZXJTY2FsaW5nSWZO
ZWVkZWQoV1RGTW92ZShpbWFnZSksIGxvZ2ljYWxTaXplKCksIGJhY2tlbmRTaXplKCksIHJlc29s
dXRpb25TY2FsZSgpLCBwcmVzZXJ2ZVJlc29sdXRpb24pOwogfQogCiBSZWZQdHI8SW1hZ2U+IElt
YWdlQnVmZmVyQ0dCYWNrZW5kOjpzaW5rSW50b0ltYWdlKFByZXNlcnZlUmVzb2x1dGlvbiBwcmVz
ZXJ2ZVJlc29sdXRpb24pCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZUJpdG1hcEltYWdlQWZ0ZXJTY2Fs
aW5nSWZOZWVkZWQoc2lua0ludG9OYXRpdmVJbWFnZSgpLCBtX2xvZ2ljYWxTaXplLCBtX2JhY2tl
bmRTaXplLCBtX3Jlc29sdXRpb25TY2FsZSwgcHJlc2VydmVSZXNvbHV0aW9uKTsKKyAgICBhdXRv
IGJhY2tlbmRTaXplID0gdGhpcy0+YmFja2VuZFNpemUoKTsKKyAgICByZXR1cm4gY3JlYXRlQml0
bWFwSW1hZ2VBZnRlclNjYWxpbmdJZk5lZWRlZChzaW5rSW50b05hdGl2ZUltYWdlKCksIGxvZ2lj
YWxTaXplKCksIGJhY2tlbmRTaXplLCByZXNvbHV0aW9uU2NhbGUoKSwgcHJlc2VydmVSZXNvbHV0
aW9uKTsKIH0KIAogdm9pZCBJbWFnZUJ1ZmZlckNHQmFja2VuZDo6ZHJhdyhHcmFwaGljc0NvbnRl
eHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAg
IEZsb2F0UmVjdCBzcmNSZWN0U2NhbGVkID0gc3JjUmVjdDsKLSAgICBzcmNSZWN0U2NhbGVkLnNj
YWxlKG1fcmVzb2x1dGlvblNjYWxlKTsKKyAgICBzcmNSZWN0U2NhbGVkLnNjYWxlKHJlc29sdXRp
b25TY2FsZSgpKTsKIAogICAgIGlmIChhdXRvIGltYWdlID0gY29weU5hdGl2ZUltYWdlKCZkZXN0
Q29udGV4dCA9PSAmY29udGV4dCgpID8gQ29weUJhY2tpbmdTdG9yZSA6IERvbnRDb3B5QmFja2lu
Z1N0b3JlKSkKLSAgICAgICAgZGVzdENvbnRleHQuZHJhd05hdGl2ZUltYWdlKCppbWFnZSwgbV9i
YWNrZW5kU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3RTY2FsZWQsIG9wdGlvbnMpOworICAgICAgICBk
ZXN0Q29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoKmltYWdlLCBiYWNrZW5kU2l6ZSgpLCBkZXN0UmVj
dCwgc3JjUmVjdFNjYWxlZCwgb3B0aW9ucyk7CiB9CiAKIHZvaWQgSW1hZ2VCdWZmZXJDR0JhY2tl
bmQ6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3Qg
RmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykK
IHsKICAgICBGbG9hdFJlY3QgYWRqdXN0ZWRTcmNSZWN0ID0gc3JjUmVjdDsKLSAgICBhZGp1c3Rl
ZFNyY1JlY3Quc2NhbGUobV9yZXNvbHV0aW9uU2NhbGUpOworICAgIGFkanVzdGVkU3JjUmVjdC5z
Y2FsZShyZXNvbHV0aW9uU2NhbGUoKSk7CiAKICAgICBpZiAoYXV0byBpbWFnZSA9IGNvcHlJbWFn
ZSgmZGVzdENvbnRleHQgPT0gJmNvbnRleHQoKSA/IENvcHlCYWNraW5nU3RvcmUgOiBEb250Q29w
eUJhY2tpbmdTdG9yZSkpCiAgICAgICAgIGltYWdlLT5kcmF3UGF0dGVybihkZXN0Q29udGV4dCwg
ZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNp
bmcsIG9wdGlvbnMpOwpAQCAtMTU5LDExICsxNjAsNiBAQCB2b2lkIEltYWdlQnVmZmVyQ0dCYWNr
ZW5kOjpjbGlwVG9NYXNrKEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0
UgogICAgIENHQ29udGV4dFRyYW5zbGF0ZUNUTShjZ0NvbnRleHQsIC1kZXN0UmVjdC54KCksIC1k
ZXN0UmVjdC5tYXhZKCkpOwogfQogCi1BZmZpbmVUcmFuc2Zvcm0gSW1hZ2VCdWZmZXJDR0JhY2tl
bmQ6OmJhc2VUcmFuc2Zvcm0oKSBjb25zdAotewotICAgIHJldHVybiBBZmZpbmVUcmFuc2Zvcm0o
MSwgMCwgMCwgLTEsIDAsIG1fbG9naWNhbFNpemUuaGVpZ2h0KCkpOwotfQotCiBSZXRhaW5QdHI8
Q0ZEYXRhUmVmPiBJbWFnZUJ1ZmZlckNHQmFja2VuZDo6dG9DRkRhdGEoY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5LCBQcmVzZXJ2ZVJlc29sdXRpb24gcHJl
c2VydmVSZXNvbHV0aW9uKSBjb25zdAogewogICAgIEFTU0VSVChNSU1FVHlwZVJlZ2lzdHJ5Ojpp
c1N1cHBvcnRlZEltYWdlTUlNRVR5cGVGb3JFbmNvZGluZyhtaW1lVHlwZSkpOwpAQCAtMTkwLDcg
KzE4Niw3IEBAIFJldGFpblB0cjxDRkRhdGFSZWY+IEltYWdlQnVmZmVyQ0dCYWNrZW5kOjp0b0NG
RGF0YShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpCiAgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAogICAgICAgICBpbWFnZSA9IGFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZShwaXhlbEFycmF5
RGltZW5zaW9ucy53aWR0aCgpLCBwaXhlbEFycmF5RGltZW5zaW9ucy5oZWlnaHQoKSwgOCwgMzIs
IDQgKiBwaXhlbEFycmF5RGltZW5zaW9ucy53aWR0aCgpLCBzUkdCQ29sb3JTcGFjZVJlZigpLCBr
Q0dCaXRtYXBCeXRlT3JkZXJEZWZhdWx0IHwga0NHSW1hZ2VBbHBoYU5vbmVTa2lwTGFzdCwgZGF0
YVByb3ZpZGVyLmdldCgpLCAwLCBmYWxzZSwga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVsdCkpOwot
ICAgIH0gZWxzZSBpZiAobV9yZXNvbHV0aW9uU2NhbGUgPT0gMSB8fCBwcmVzZXJ2ZVJlc29sdXRp
b24gPT0gUHJlc2VydmVSZXNvbHV0aW9uOjpZZXMpIHsKKyAgICB9IGVsc2UgaWYgKHJlc29sdXRp
b25TY2FsZSgpID09IDEgfHwgcHJlc2VydmVSZXNvbHV0aW9uID09IFByZXNlcnZlUmVzb2x1dGlv
bjo6WWVzKSB7CiAgICAgICAgIGltYWdlID0gY29weU5hdGl2ZUltYWdlKENvcHlCYWNraW5nU3Rv
cmUpLT5wbGF0Zm9ybUltYWdlKCk7CiAgICAgICAgIGltYWdlID0gY3JlYXRlQ3JvcHBlZEltYWdl
SWZOZWNlc3NhcnkoaW1hZ2UuZ2V0KCksIGJhY2tlbmRTaXplKCkpOwogICAgIH0gZWxzZSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZl
ckNHQmFja2VuZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VC
dWZmZXJDR0JhY2tlbmQuaAppbmRleCAxZTA3ZmRjNjQ0M2ZkYzA4ZjZhZjYzZTA4ODNlYjMyMDUz
ZTRkNTk3Li5iMjZhZTA4NDM0N2I5ZTIzMzQwNDYwMGMyZWE0YTRhMjhiMWUxYmE3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFj
a2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVm
ZmVyQ0dCYWNrZW5kLmgKQEAgLTQxLDggKzQxLDYgQEAgcHVibGljOgogICAgIAogICAgIHZvaWQg
Y2xpcFRvTWFzayhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0KSBv
dmVycmlkZTsKIAotICAgIEFmZmluZVRyYW5zZm9ybSBiYXNlVHJhbnNmb3JtKCkgY29uc3Qgb3Zl
cnJpZGU7Ci0KICAgICBTdHJpbmcgdG9EYXRhVVJMKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9w
dGlvbmFsPGRvdWJsZT4gcXVhbGl0eSwgUHJlc2VydmVSZXNvbHV0aW9uKSBjb25zdCBvdmVycmlk
ZTsKICAgICBWZWN0b3I8dWludDhfdD4gdG9EYXRhKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9w
dGlvbmFsPGRvdWJsZT4gcXVhbGl0eSkgY29uc3Qgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNr
ZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVy
Q0dCaXRtYXBCYWNrZW5kLmNwcAppbmRleCBmMjE4ZjI3ZjJmNTNjNWE0YWRiYjZhNWFlZGMzYzQ5
ZTQ4Y2Q2M2E0Li41YmVhMzAwNjY3ZTRiNTQxNzA1NTAyZDFlM2E3NTUyN2U1ODg4MzI0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNH
Qml0bWFwQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQuY3BwCkBAIC0zOSwxMSArMzksMTEgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoSW1hZ2VCdWZm
ZXJDR0JpdG1hcEJhY2tlbmQpOwogCi1zdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJDR0JpdG1h
cEJhY2tlbmQ+IEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpjcmVhdGUoY29uc3QgRmxvYXRT
aXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwg
Q0dDb2xvclNwYWNlUmVmIGNnQ29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIGNv
bnN0IEhvc3RXaW5kb3cqKQorc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNr
ZW5kPiBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMm
IHBhcmFtZXRlcnMsIENHQ29sb3JTcGFjZVJlZiBjZ0NvbG9yU3BhY2UsIGNvbnN0IEhvc3RXaW5k
b3cqKQogewotICAgIEFTU0VSVChwaXhlbEZvcm1hdCA9PSBQaXhlbEZvcm1hdDo6QkdSQTgpOwor
ICAgIEFTU0VSVChwYXJhbWV0ZXJzLnBpeGVsRm9ybWF0ID09IFBpeGVsRm9ybWF0OjpCR1JBOCk7
CiAKLSAgICBJbnRTaXplIGJhY2tlbmRTaXplID0gY2FsY3VsYXRlQmFja2VuZFNpemUoc2l6ZSwg
cmVzb2x1dGlvblNjYWxlKTsKKyAgICBJbnRTaXplIGJhY2tlbmRTaXplID0gY2FsY3VsYXRlQmFj
a2VuZFNpemUocGFyYW1ldGVycy5sb2dpY2FsU2l6ZSwgcGFyYW1ldGVycy5yZXNvbHV0aW9uU2Nh
bGUpOwogICAgIGlmIChiYWNrZW5kU2l6ZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCkBAIC03MCwyNCArNzAsMjUgQEAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQ0dC
aXRtYXBCYWNrZW5kPiBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y3JlYXRlKGMKIAogICAg
IGF1dG8gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZVdpdGhEYXRh
KDAsIGRhdGEsIG51bUJ5dGVzLCByZWxlYXNlSW1hZ2VEYXRhKSk7CiAKLSAgICByZXR1cm4gc3Rk
Ojp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kPihuZXcgSW1hZ2VCdWZmZXJD
R0JpdG1hcEJhY2tlbmQoc2l6ZSwgYmFja2VuZFNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JT
cGFjZSwgcGl4ZWxGb3JtYXQsIGRhdGEsIFdURk1vdmUoZGF0YVByb3ZpZGVyKSwgV1RGTW92ZShj
b250ZXh0KSkpOworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJDR0JpdG1h
cEJhY2tlbmQ+KG5ldyBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZChwYXJhbWV0ZXJzLCBiYWNr
ZW5kU2l6ZSwgZGF0YSwgV1RGTW92ZShkYXRhUHJvdmlkZXIpLCBXVEZNb3ZlKGNvbnRleHQpKSk7
CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZD4gSW1hZ2VC
dWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIGNvbnN0
IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKK3N0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNH
Qml0bWFwQmFja2VuZD4gSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNyZWF0ZShjb25zdCBQ
YXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBjb25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiB7
CiAgICAgaWYgKGF1dG8gY2dDb2xvclNwYWNlID0gY29udGV4dENvbG9yU3BhY2UoY29udGV4dCkp
Ci0gICAgICAgIHJldHVybiBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y3JlYXRlKHNpemUs
IDEsIENvbG9yU3BhY2U6OlNSR0IsIGNnQ29sb3JTcGFjZS5nZXQoKSwgUGl4ZWxGb3JtYXQ6OkJH
UkE4LCBudWxscHRyKTsKLSAgICAKLSAgICByZXR1cm4gSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tl
bmQ6OmNyZWF0ZShzaXplLCAxLCBDb2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdSQTgs
IG51bGxwdHIpOworICAgICAgICByZXR1cm4gSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNy
ZWF0ZShwYXJhbWV0ZXJzLCBjZ0NvbG9yU3BhY2UuZ2V0KCksIG51bGxwdHIpOworCisgICAgcmV0
dXJuIEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpjcmVhdGUocGFyYW1ldGVycywgbnVsbHB0
cik7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZD4gSW1h
Z2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIGZs
b2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBw
aXhlbEZvcm1hdCwgY29uc3QgSG9zdFdpbmRvdyogaG9zdFdpbmRvdykKK3N0ZDo6dW5pcXVlX3B0
cjxJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZD4gSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6
OmNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBjb25zdCBIb3N0V2luZG93KiBo
b3N0V2luZG93KQogewotICAgIHJldHVybiBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y3Jl
YXRlKHNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgY2FjaGVkQ0dDb2xvclNwYWNl
KGNvbG9yU3BhY2UpLCBwaXhlbEZvcm1hdCwgaG9zdFdpbmRvdyk7CisgICAgcmV0dXJuIEltYWdl
QnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpjcmVhdGUocGFyYW1ldGVycywgY2FjaGVkQ0dDb2xvclNw
YWNlKHBhcmFtZXRlcnMuY29sb3JTcGFjZSksIGhvc3RXaW5kb3cpOwogfQogCi1JbWFnZUJ1ZmZl
ckNHQml0bWFwQmFja2VuZDo6SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQoY29uc3QgRmxvYXRT
aXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29s
dXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1h
dCwgdm9pZCogZGF0YSwgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiYmIGRhdGFQcm92aWRl
ciwgc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzQ29udGV4dD4mJiBjb250ZXh0KQotICAgIDogSW1h
Z2VCdWZmZXJDR0JhY2tlbmQobG9naWNhbFNpemUsIGJhY2tlbmRTaXplLCByZXNvbHV0aW9uU2Nh
bGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0KQorSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6
OkltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMs
IGNvbnN0IEludFNpemUmIGJhY2tlbmRTaXplLCB2b2lkKiBkYXRhLCBSZXRhaW5QdHI8Q0dEYXRh
UHJvdmlkZXJSZWY+JiYgZGF0YVByb3ZpZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NDb250
ZXh0PiYmIGNvbnRleHQpCisgICAgOiBJbWFnZUJ1ZmZlckNHQmFja2VuZChwYXJhbWV0ZXJzKQor
ICAgICwgbV9iYWNrZW5kU2l6ZShiYWNrZW5kU2l6ZSkKICAgICAsIG1fZGF0YShkYXRhKQogICAg
ICwgbV9kYXRhUHJvdmlkZXIoV1RGTW92ZShkYXRhUHJvdmlkZXIpKQogICAgICwgbV9jb250ZXh0
KFdURk1vdmUoY29udGV4dCkpCkBAIC0xMTIsNyArMTEzLDcgQEAgUmVmUHRyPE5hdGl2ZUltYWdl
PiBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9y
ZUNvcHkKICAgICBjYXNlIERvbnRDb3B5QmFja2luZ1N0b3JlOgogICAgICAgICByZXR1cm4gTmF0
aXZlSW1hZ2U6OmNyZWF0ZShhZG9wdENGKENHSW1hZ2VDcmVhdGUoCiAgICAgICAgICAgICBtX2Jh
Y2tlbmRTaXplLndpZHRoKCksIG1fYmFja2VuZFNpemUuaGVpZ2h0KCksIDgsIDMyLCBieXRlc1Bl
clJvdygpLAotICAgICAgICAgICAgY2FjaGVkQ0dDb2xvclNwYWNlKG1fY29sb3JTcGFjZSksIGtD
R0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkRmlyc3QgfCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkhvc3Qs
IG1fZGF0YVByb3ZpZGVyLmdldCgpLAorICAgICAgICAgICAgY2FjaGVkQ0dDb2xvclNwYWNlKGNv
bG9yU3BhY2UoKSksIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkRmlyc3QgfCBrQ0dCaXRtYXBC
eXRlT3JkZXIzMkhvc3QsIG1fZGF0YVByb3ZpZGVyLmdldCgpLAogICAgICAgICAgICAgMCwgdHJ1
ZSwga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVsdCkpKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNr
ZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNH
Qml0bWFwQmFja2VuZC5oCmluZGV4IGU5MmM5MmY1ZDUwZmRlNTdhYWEzY2E1YzJmZjI5ZGYwOGI4
NjRkMjkuLjZiNzg2MTEwODU1OTdiNWUyYWEzN2Q5ZDU1YzRlY2NhZDczZTg2NTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRt
YXBCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1h
Z2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQuaApAQCAtMzYsMTIgKzM2LDE0IEBAIGNsYXNzIEltYWdl
QnVmZmVyQ0dCaXRtYXBCYWNrZW5kIDogcHVibGljIEltYWdlQnVmZmVyQ0dCYWNrZW5kIHsKICAg
ICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kKTsKICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZCk7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2Vu
ZD4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JT
cGFjZSwgQ0dDb2xvclNwYWNlUmVmLCBQaXhlbEZvcm1hdCwgY29uc3QgSG9zdFdpbmRvdyopOwot
ICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ+IGNy
ZWF0ZShjb25zdCBGbG9hdFNpemUmLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2Us
IFBpeGVsRm9ybWF0LCBjb25zdCBIb3N0V2luZG93Kik7Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVl
X3B0cjxJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZD4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYs
IGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1h
Z2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ+IGNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiwgQ0dDb2xv
clNwYWNlUmVmLCBjb25zdCBIb3N0V2luZG93Kik7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZD4gY3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmLCBj
b25zdCBIb3N0V2luZG93Kik7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZl
ckNHQml0bWFwQmFja2VuZD4gY3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmLCBjb25zdCBHcmFwaGlj
c0NvbnRleHQmKTsKIAogICAgIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCgpIGNvbnN0IG92ZXJy
aWRlOwogCisgICAgSW50U2l6ZSBiYWNrZW5kU2l6ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IG1fYmFja2VuZFNpemU7IH0KKwogICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gY29weU5hdGl2ZUlt
YWdlKEJhY2tpbmdTdG9yZUNvcHkgPSBDb3B5QmFja2luZ1N0b3JlKSBjb25zdCBvdmVycmlkZTsK
IAogICAgIFZlY3Rvcjx1aW50OF90PiB0b0JHUkFEYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CkBAIC01
Miw4ICs1NCw5IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNPcmlnaW5B
dFVwcGVyTGVmdENvcm5lciA9IHRydWU7CiAKIHByaXZhdGU6Ci0gICAgSW1hZ2VCdWZmZXJDR0Jp
dG1hcEJhY2tlbmQoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50U2l6ZSYg
cGh5c2ljYWxTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UsIFBpeGVsRm9y
bWF0LCB2b2lkKiBkYXRhLCBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+JiYsIHN0ZDo6dW5p
cXVlX3B0cjxHcmFwaGljc0NvbnRleHQ+JiYpOworICAgIEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNr
ZW5kKGNvbnN0IFBhcmFtZXRlcnMmLCBjb25zdCBJbnRTaXplJiBiYWNrZW5kU2l6ZSwgdm9pZCog
ZGF0YSwgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiYmLCBzdGQ6OnVuaXF1ZV9wdHI8R3Jh
cGhpY3NDb250ZXh0PiYmKTsKIAorICAgIEludFNpemUgbV9iYWNrZW5kU2l6ZTsKICAgICB2b2lk
KiBtX2RhdGE7CiAgICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiBtX2RhdGFQcm92aWRl
cjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NDb250ZXh0PiBtX2NvbnRleHQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklP
U3VyZmFjZUJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmNwcAppbmRleCBhZDNmZjFkNzk3NzIwMzc2NDBl
MmQ2OTk1NDEyODg2MGI3NzQ4YzM2Li43YTY5YzU1M2MwMDEzNmQ5NzhmNDRjOTMyZTRhZTVmMWU2
NGZkNThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9J
bWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5jcHAKQEAgLTY0LDEz
ICs2NCwxMyBAQCBSZXRhaW5QdHI8Q0dDb2xvclNwYWNlUmVmPiBJbWFnZUJ1ZmZlcklPU3VyZmFj
ZUJhY2tlbmQ6OmNvbnRleHRDb2xvclNwYWNlKGNvbnN0CiAgICAgcmV0dXJuIEltYWdlQnVmZmVy
Q0dCYWNrZW5kOjpjb250ZXh0Q29sb3JTcGFjZShjb250ZXh0KTsKIH0KIAotc3RkOjp1bmlxdWVf
cHRyPEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZD4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNr
ZW5kOjpjcmVhdGUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUs
IENvbG9yU3BhY2UgY29sb3JTcGFjZSwgQ0dDb2xvclNwYWNlUmVmIGNnQ29sb3JTcGFjZSwgUGl4
ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIGNvbnN0IEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cpCitzdGQ6
OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kPiBJbWFnZUJ1ZmZlcklPU3Vy
ZmFjZUJhY2tlbmQ6OmNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBDR0NvbG9y
U3BhY2VSZWYgY2dDb2xvclNwYWNlLCBjb25zdCBIb3N0V2luZG93KiBob3N0V2luZG93KQogewot
ICAgIEludFNpemUgYmFja2VuZFNpemUgPSBjYWxjdWxhdGVCYWNrZW5kU2l6ZShzaXplLCByZXNv
bHV0aW9uU2NhbGUpOworICAgIEludFNpemUgYmFja2VuZFNpemUgPSBjYWxjdWxhdGVCYWNrZW5k
U2l6ZShwYXJhbWV0ZXJzLmxvZ2ljYWxTaXplLCBwYXJhbWV0ZXJzLnJlc29sdXRpb25TY2FsZSk7
CiAgICAgaWYgKGJhY2tlbmRTaXplLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKLSAgICBhdXRvIHN1cmZhY2UgPSBJT1N1cmZhY2U6OmNyZWF0ZShiYWNrZW5kU2l6ZSwgYmFj
a2VuZFNpemUsIGNnQ29sb3JTcGFjZSwgSU9TdXJmYWNlOjpmb3JtYXRGb3JQaXhlbEZvcm1hdChw
aXhlbEZvcm1hdCkpOworICAgIGF1dG8gc3VyZmFjZSA9IElPU3VyZmFjZTo6Y3JlYXRlKGJhY2tl
bmRTaXplLCBiYWNrZW5kU2l6ZSwgY2dDb2xvclNwYWNlLCBJT1N1cmZhY2U6OmZvcm1hdEZvclBp
eGVsRm9ybWF0KHBhcmFtZXRlcnMucGl4ZWxGb3JtYXQpKTsKICAgICBpZiAoIXN1cmZhY2UpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC04MCwyNCArODAsMjQgQEAgc3RkOjp1bmlxdWVf
cHRyPEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZD4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNr
ZW5kOjpjcmVhdGUKIAogICAgIENHQ29udGV4dENsZWFyUmVjdChjZ0NvbnRleHQuZ2V0KCksIEZs
b2F0UmVjdChGbG9hdFBvaW50Ojp6ZXJvKCksIGJhY2tlbmRTaXplKSk7CiAKLSAgICByZXR1cm4g
bWFrZVVuaXF1ZTxJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ+KHNpemUsIGJhY2tlbmRTaXpl
LCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0LCBXVEZNb3ZlKHN1cmZh
Y2UpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ+
KHBhcmFtZXRlcnMsIFdURk1vdmUoc3VyZmFjZSkpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8SW1h
Z2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kPiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNy
ZWF0ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCkKK3N0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ+IEltYWdlQnVm
ZmVySU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMs
IGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKIHsKICAgICBpZiAoYXV0byBjZ0NvbG9y
U3BhY2UgPSBjb250ZXh0Q29sb3JTcGFjZShjb250ZXh0KSkKLSAgICAgICAgcmV0dXJuIEltYWdl
QnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlKHNpemUsIDEsIENvbG9yU3BhY2U6OlNSR0Is
IGNnQ29sb3JTcGFjZS5nZXQoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4LCBudWxscHRyKTsKLSAgICAK
LSAgICByZXR1cm4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGUoc2l6ZSwgMSwg
Q29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4LCBudWxscHRyKTsKKyAgICAgICAg
cmV0dXJuIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlKHBhcmFtZXRlcnMsIGNn
Q29sb3JTcGFjZS5nZXQoKSwgbnVsbHB0cik7CisKKyAgICByZXR1cm4gSW1hZ2VCdWZmZXJJT1N1
cmZhY2VCYWNrZW5kOjpjcmVhdGUocGFyYW1ldGVycywgbnVsbHB0cik7CiB9CiAKLXN0ZDo6dW5p
cXVlX3B0cjxJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ+IEltYWdlQnVmZmVySU9TdXJmYWNl
QmFja2VuZDo6Y3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNj
YWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBjb25z
dCBIb3N0V2luZG93KiBob3N0V2luZG93KQorc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVySU9T
dXJmYWNlQmFja2VuZD4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGUoY29uc3Qg
UGFyYW1ldGVycyYgcGFyYW1ldGVycywgY29uc3QgSG9zdFdpbmRvdyogaG9zdFdpbmRvdykKIHsK
LSAgICByZXR1cm4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGUoc2l6ZSwgcmVz
b2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBjYWNoZWRDR0NvbG9yU3BhY2UoY29sb3JTcGFjZSks
IHBpeGVsRm9ybWF0LCBob3N0V2luZG93KTsKKyAgICByZXR1cm4gSW1hZ2VCdWZmZXJJT1N1cmZh
Y2VCYWNrZW5kOjpjcmVhdGUocGFyYW1ldGVycywgY2FjaGVkQ0dDb2xvclNwYWNlKHBhcmFtZXRl
cnMuY29sb3JTcGFjZSksIGhvc3RXaW5kb3cpOwogfQogCi1JbWFnZUJ1ZmZlcklPU3VyZmFjZUJh
Y2tlbmQ6OkltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZChjb25zdCBGbG9hdFNpemUmIGxvZ2lj
YWxTaXplLCBjb25zdCBJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxl
LCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBzdGQ6OnVu
aXF1ZV9wdHI8SU9TdXJmYWNlPiYmIHN1cmZhY2UpCi0gICAgOiBJbWFnZUJ1ZmZlckNHQmFja2Vu
ZChsb2dpY2FsU2l6ZSwgYmFja2VuZFNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwg
cGl4ZWxGb3JtYXQpCitJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OkltYWdlQnVmZmVySU9T
dXJmYWNlQmFja2VuZChjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBzdGQ6OnVuaXF1ZV9w
dHI8SU9TdXJmYWNlPiYmIHN1cmZhY2UpCisgICAgOiBJbWFnZUJ1ZmZlckNHQmFja2VuZChwYXJh
bWV0ZXJzKQogICAgICwgbV9zdXJmYWNlKFdURk1vdmUoc3VyZmFjZSkpCiB7CiAgICAgQVNTRVJU
KG1fc3VyZmFjZSk7CkBAIC0xMjAsNiArMTIwLDExIEBAIHZvaWQgSW1hZ2VCdWZmZXJJT1N1cmZh
Y2VCYWNrZW5kOjpmbHVzaENvbnRleHQoKQogICAgIENHQ29udGV4dEZsdXNoKGNvbnRleHQoKS5w
bGF0Zm9ybUNvbnRleHQoKSk7CiB9CiAKK0ludFNpemUgSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNr
ZW5kOjpiYWNrZW5kU2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc3VyZmFjZS0+c2l6ZSgp
OworfQorCiBzaXplX3QgSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjptZW1vcnlDb3N0KCkg
Y29uc3QKIHsKICAgICByZXR1cm4gbV9zdXJmYWNlLT50b3RhbEJ5dGVzKCk7CkBAIC0xNDgsMTAg
KzE1MywxMCBAQCBSZWZQdHI8TmF0aXZlSW1hZ2U+IEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2Vu
ZDo6c2lua0ludG9OYXRpdmVJbWFnZSgpCiB2b2lkIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2Vu
ZDo6ZHJhd0NvbnN1bWluZyhHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFp
bnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIEZsb2F0UmVjdCBhZGp1c3RlZFNyY1JlY3Qg
PSBzcmNSZWN0OwotICAgIGFkanVzdGVkU3JjUmVjdC5zY2FsZShtX3Jlc29sdXRpb25TY2FsZSk7
CisgICAgYWRqdXN0ZWRTcmNSZWN0LnNjYWxlKHJlc29sdXRpb25TY2FsZSgpKTsKIAogICAgIGlm
IChhdXRvIGltYWdlID0gc2lua0ludG9OYXRpdmVJbWFnZSgpKQotICAgICAgICBkZXN0Q29udGV4
dC5kcmF3TmF0aXZlSW1hZ2UoKmltYWdlLCBtX2JhY2tlbmRTaXplLCBkZXN0UmVjdCwgYWRqdXN0
ZWRTcmNSZWN0LCBvcHRpb25zKTsKKyAgICAgICAgZGVzdENvbnRleHQuZHJhd05hdGl2ZUltYWdl
KCppbWFnZSwgYmFja2VuZFNpemUoKSwgZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVjdCwgb3B0aW9u
cyk7CiB9CiAKIFJldGFpblB0cjxDRkRhdGFSZWY+IEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2Vu
ZDo6dG9DRkRhdGEoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFs
aXR5LCBQcmVzZXJ2ZVJlc29sdXRpb24gcHJlc2VydmVSZXNvbHV0aW9uKSBjb25zdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1
cmZhY2VCYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFn
ZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuaAppbmRleCBkZTk4MjExMWU1MmMxMmVkYjA4ZGM3ODhi
NTBlY2VmYjM2NTA3NjUwLi40ODU5ZGY2ZmM1MjVkODVjMzI4YzE0NWYwNzkxNzgzNTY5MDllMjVk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1
ZmZlcklPU3VyZmFjZUJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuaApAQCAtMzksMTUgKzM5LDE3IEBA
IGNsYXNzIFdFQkNPUkVfRVhQT1JUIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZCA6IHB1Ymxp
YyBJbWFnZUJ1ZmZlckNHQmFja2VuZCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIEludFNpemUgY2Fs
Y3VsYXRlQmFja2VuZFNpemUoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgZmxvYXQgcmVz
b2x1dGlvblNjYWxlKTsKIAotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJJ
T1N1cmZhY2VCYWNrZW5kPiBjcmVhdGUoY29uc3QgRmxvYXRTaXplJiwgZmxvYXQgcmVzb2x1dGlv
blNjYWxlLCBDb2xvclNwYWNlLCBDR0NvbG9yU3BhY2VSZWYsIFBpeGVsRm9ybWF0LCBjb25zdCBI
b3N0V2luZG93Kik7Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcklPU3Vy
ZmFjZUJhY2tlbmQ+IGNyZWF0ZShjb25zdCBGbG9hdFNpemUmLCBmbG9hdCByZXNvbHV0aW9uU2Nh
bGUsIENvbG9yU3BhY2UsIFBpeGVsRm9ybWF0LCBjb25zdCBIb3N0V2luZG93Kik7Ci0gICAgc3Rh
dGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ+IGNyZWF0ZShj
b25zdCBGbG9hdFNpemUmLCBjb25zdCBHcmFwaGljc0NvbnRleHQmKTsKKyAgICBzdGF0aWMgc3Rk
Ojp1bmlxdWVfcHRyPEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZD4gY3JlYXRlKGNvbnN0IFBh
cmFtZXRlcnMmLCBDR0NvbG9yU3BhY2VSZWYsIGNvbnN0IEhvc3RXaW5kb3cqKTsKKyAgICBzdGF0
aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZD4gY3JlYXRlKGNv
bnN0IFBhcmFtZXRlcnMmLCBjb25zdCBIb3N0V2luZG93Kik7CisgICAgc3RhdGljIHN0ZDo6dW5p
cXVlX3B0cjxJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ+IGNyZWF0ZShjb25zdCBQYXJhbWV0
ZXJzJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0Jik7CiAKLSAgICBJbWFnZUJ1ZmZlcklPU3VyZmFj
ZUJhY2tlbmQoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50U2l6ZSYgcGh5
c2ljYWxTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UsIFBpeGVsRm9ybWF0
LCBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiYmKTsKKyAgICBJbWFnZUJ1ZmZlcklPU3VyZmFj
ZUJhY2tlbmQoY29uc3QgUGFyYW1ldGVycyYsIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+JiYp
OwogCiAgICAgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAg
dm9pZCBmbHVzaENvbnRleHQoKSBvdmVycmlkZTsKIAorICAgIEludFNpemUgYmFja2VuZFNpemUo
KSBjb25zdCBvdmVycmlkZTsKKyAgICAKICAgICBzaXplX3QgbWVtb3J5Q29zdCgpIGNvbnN0IG92
ZXJyaWRlOwogICAgIHNpemVfdCBleHRlcm5hbE1lbW9yeUNvc3QoKSBjb25zdCBvdmVycmlkZTsK
IApAQCAtNjksNyArNzEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWxlYXNlQnVmZmVyVG9Qb29s
KCkgb3ZlcnJpZGU7CiAKICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNPcmlnaW5BdFVwcGVy
TGVmdENvcm5lciA9IHRydWU7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzQWNjZWxlcmF0
ZWQgPSB0cnVlOworICAgIHN0YXRpYyBjb25zdGV4cHIgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdN
b2RlID0gUmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQ7CiAKIHByb3RlY3RlZDoKICAgICBzdGF0
aWMgUmV0YWluUHRyPENHQ29sb3JTcGFjZVJlZj4gY29udGV4dENvbG9yU3BhY2UoY29uc3QgR3Jh
cGhpY3NDb250ZXh0Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oCmluZGV4IDI2ZmM5NzMwNzIxMTI3
MzAzOTNlMmRjYmM4N2QwYzZiOWNhNTQyNTguLjE2YjE5N2Y5ZWUyZDI4ZGJlOTIxZDkzMDk0M2Q0
MzA0NjFkZmNkODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oCkBAIC0zMyw3ICszMyw2IEBACiAj
aW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2lu
Y2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgotI2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlmaWVy
Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgogCkBAIC00NSw5ICs0NCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogbmFtZXNwYWNl
IERpc3BsYXlMaXN0IHsKIAotZW51bSBGbHVzaElkZW50aWZpZXJUeXBlIHsgfTsKLXVzaW5nIEZs
dXNoSWRlbnRpZmllciA9IE9iamVjdElkZW50aWZpZXI8Rmx1c2hJZGVudGlmaWVyVHlwZT47Ci0K
IGVudW0gQXNUZXh0RmxhZyB7CiAgICAgTm9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICA9
IDAsCiAgICAgSW5jbHVkZXNQbGF0Zm9ybU9wZXJhdGlvbnMgICAgICA9IDEgPDwgMCwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdEZsdXNoSWRlbnRpZmllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0Rmx1c2hJZGVudGlmaWVyLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
OWNmNzgxNjhlYmI3ZmM3MzdiOWI0YTZjZjhkNTM3MjlmNWEwNjBlYwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdEZsdXNoSWRlbnRpZmllci5oCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKKworZW51bSBGbHVzaElkZW50
aWZpZXJUeXBlIHsgfTsKK3VzaW5nIEZsdXNoSWRlbnRpZmllciA9IE9iamVjdElkZW50aWZpZXI8
Rmx1c2hJZGVudGlmaWVyVHlwZT47CisKK30gLy8gRGlzcGxheUxpc3QKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEltYWdlQnVmZmVyLmgKaW5k
ZXggZjViMjIzNDAyYWViMzc3MjhiNzMwMWZiNjY3MTE4YTNiMmU4YjA0MC4uNmEwYTI1Mjg0M2Ew
ZjBkMWViYmFjMmU0MWJiNDI3OWM0YWZkMWVhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RJbWFnZUJ1ZmZlci5oCkBAIC0zNCwyNiArMzQsMjkgQEAgbmFtZXNwYWNlIERpc3BsYXlM
aXN0IHsKIHRlbXBsYXRlPHR5cGVuYW1lIEJhY2tlbmRUeXBlPgogY2xhc3MgSW1hZ2VCdWZmZXIg
OiBwdWJsaWMgQ29uY3JldGVJbWFnZUJ1ZmZlcjxCYWNrZW5kVHlwZT4gewogICAgIHVzaW5nIEJh
c2VDb25jcmV0ZUltYWdlQnVmZmVyID0gQ29uY3JldGVJbWFnZUJ1ZmZlcjxCYWNrZW5kVHlwZT47
CisgICAgdXNpbmcgQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXI6OmxvZ2ljYWxTaXplOworICAgIHVz
aW5nIEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyOjpiYXNlVHJhbnNmb3JtOwogCiBwdWJsaWM6CiAg
ICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1
dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0
LCBjb25zdCBIb3N0V2luZG93KiBob3N0V2luZG93KQogICAgIHsKLSAgICAgICAgcmV0dXJuIEJh
c2VDb25jcmV0ZUltYWdlQnVmZmVyOjp0ZW1wbGF0ZSBjcmVhdGU8SW1hZ2VCdWZmZXI+KHNpemUs
IHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQsIGhvc3RXaW5kb3csIHNp
emUpOworICAgICAgICByZXR1cm4gQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXI6OnRlbXBsYXRlIGNy
ZWF0ZTxJbWFnZUJ1ZmZlcj4oc2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhl
bEZvcm1hdCwgaG9zdFdpbmRvdyk7CiAgICAgfQogCiAgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNv
bnN0IEZsb2F0U2l6ZSYgc2l6ZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogICAg
IHsKLSAgICAgICAgcmV0dXJuIEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyOjp0ZW1wbGF0ZSBjcmVh
dGU8SW1hZ2VCdWZmZXI+KHNpemUsIGNvbnRleHQsIHNpemUpOworICAgICAgICByZXR1cm4gQmFz
ZUNvbmNyZXRlSW1hZ2VCdWZmZXI6OnRlbXBsYXRlIGNyZWF0ZTxJbWFnZUJ1ZmZlcj4oc2l6ZSwg
Y29udGV4dCk7CiAgICAgfQogCi0gICAgSW1hZ2VCdWZmZXIoc3RkOjp1bmlxdWVfcHRyPEJhY2tl
bmRUeXBlPiYmIGRhdGFCYWNrZW5kLCBjb25zdCBGbG9hdFNpemUmIHNpemUpCi0gICAgICAgIDog
QmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXIoV1RGTW92ZShkYXRhQmFja2VuZCkpCi0gICAgICAgICwg
bV9kcmF3aW5nQ29udGV4dChzaXplLCBpbml0aWFsRHJhd2luZ0NvbnRleHRDVE0oc2l6ZSkpCisg
ICAgSW1hZ2VCdWZmZXIoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQmFja2VuZDo6UGFyYW1l
dGVycz4mJiBwYXJhbWV0ZXJzLCBzdGQ6OnVuaXF1ZV9wdHI8QmFja2VuZFR5cGU+JiYgYmFja2Vu
ZCkKKyAgICAgICAgOiBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZlcihXVEZNb3ZlKHBhcmFtZXRlcnMp
LCBXVEZNb3ZlKGJhY2tlbmQpKQorICAgICAgICAsIG1fZHJhd2luZ0NvbnRleHQobG9naWNhbFNp
emUoKSwgYmFzZVRyYW5zZm9ybSgpKQogICAgIHsKICAgICB9CiAKLSAgICBJbWFnZUJ1ZmZlcihj
b25zdCBGbG9hdFNpemUmIHNpemUsIFJlY29yZGVyOjpEZWxlZ2F0ZSogZGVsZWdhdGUgPSBudWxs
cHRyKQotICAgICAgICA6IG1fZHJhd2luZ0NvbnRleHQoc2l6ZSwgaW5pdGlhbERyYXdpbmdDb250
ZXh0Q1RNKHNpemUpLCBkZWxlZ2F0ZSkKKyAgICBJbWFnZUJ1ZmZlcihzdGQ6OnVuaXF1ZV9wdHI8
SW1hZ2VCdWZmZXJCYWNrZW5kOjpQYXJhbWV0ZXJzPiYmIHBhcmFtZXRlcnMsIFJlY29yZGVyOjpE
ZWxlZ2F0ZSogZGVsZWdhdGUgPSBudWxscHRyKQorICAgICAgICA6IEJhc2VDb25jcmV0ZUltYWdl
QnVmZmVyKFdURk1vdmUocGFyYW1ldGVycykpCisgICAgICAgICwgbV9kcmF3aW5nQ29udGV4dChs
b2dpY2FsU2l6ZSgpLCBiYXNlVHJhbnNmb3JtKCksIGRlbGVnYXRlKQogICAgIHsKICAgICB9CiAK
QEAgLTc3LDE1ICs4MCw2IEBAIHB1YmxpYzoKIAogcHJvdGVjdGVkOgogICAgIERyYXdpbmdDb250
ZXh0IG1fZHJhd2luZ0NvbnRleHQ7Ci0KLXByaXZhdGU6Ci0gICAgc3RhdGljIEFmZmluZVRyYW5z
Zm9ybSBpbml0aWFsRHJhd2luZ0NvbnRleHRDVE0oY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6
ZSkKLSAgICB7Ci0gICAgICAgIEFmZmluZVRyYW5zZm9ybSBpbml0aWFsQ1RNOwotICAgICAgICBp
ZiAoQmFja2VuZFR5cGU6OmlzT3JpZ2luQXRVcHBlckxlZnRDb3JuZXIpCi0gICAgICAgICAgICBp
bml0aWFsQ1RNID0gaW5pdGlhbENUTS5zY2FsZSgxLCAtMSkudHJhbnNsYXRlKDAsIC1sb2dpY2Fs
U2l6ZS5oZWlnaHQoKSk7Ci0gICAgICAgIHJldHVybiBpbml0aWFsQ1RNOwotICAgIH0KIH07CiAK
IH0gLy8gRGlzcGxheUxpc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQuY3BwCmlu
ZGV4IDM3OGFhZjRjNDBjNGUxMjJhY2JlMDY5NDMyYzdhZDdlYzIwOWVkNzMuLjAxZDJlNzgwMjg1
YjExZmVjMzliNGNkMjZiZjRjZmZmMDgwNzMzNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0
MkRCYWNrZW5kLmNwcApAQCAtMTcxLDcgKzE3MSw3IEBAIHN0YXRpYyBSZWZQdHI8SW1hZ2U+IGNy
ZWF0ZUJpdG1hcEltYWdlQWZ0ZXJTY2FsaW5nSWZOZWVkZWQoSUQyRDFCaXRtYXBSZW5kZXJUYXJn
CiBSZWZQdHI8SW1hZ2U+IEltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpjb3B5SW1hZ2UoQmFj
a2luZ1N0b3JlQ29weSBjb3B5QmVoYXZpb3IsIFByZXNlcnZlUmVzb2x1dGlvbiBwcmVzZXJ2ZVJl
c29sdXRpb24pIGNvbnN0CiB7CiAgICAgUGxhdGZvcm1JbWFnZVB0ciBpbWFnZTsKLSAgICBpZiAo
bV9yZXNvbHV0aW9uU2NhbGUgPT0gMSB8fCBwcmVzZXJ2ZVJlc29sdXRpb24gPT0gUHJlc2VydmVS
ZXNvbHV0aW9uOjpZZXMpCisgICAgaWYgKHJlc29sdXRpb25TY2FsZSgpID09IDEgfHwgcHJlc2Vy
dmVSZXNvbHV0aW9uID09IFByZXNlcnZlUmVzb2x1dGlvbjo6WWVzKQogICAgICAgICBpbWFnZSA9
IGNvcHlOYXRpdmVJbWFnZShjb3B5QmVoYXZpb3IpLT5wbGF0Zm9ybUltYWdlKCk7CiAgICAgZWxz
ZQogICAgICAgICBpbWFnZSA9IGNvcHlOYXRpdmVJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSkt
PnBsYXRmb3JtSW1hZ2UoKTsKQEAgLTI2OSw3ICsyNjksNyBAQCBQbGF0Zm9ybUltYWdlUHRyIElt
YWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpjb21wYXRpYmxlQml0bWFwKElEMkQxUmVuZGVyVGFy
Z2V0Kgogdm9pZCBJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6ZHJhdyhHcmFwaGljc0NvbnRl
eHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAg
IEZsb2F0UmVjdCBhZGp1c3RlZFNyY1JlY3QgPSBzcmNSZWN0OwotICAgIGFkanVzdGVkU3JjUmVj
dC5zY2FsZShtX3Jlc29sdXRpb25TY2FsZSwgbV9yZXNvbHV0aW9uU2NhbGUpOworICAgIGFkanVz
dGVkU3JjUmVjdC5zY2FsZShyZXNvbHV0aW9uU2NhbGUoKSk7CiAKICAgICBhdXRvIGNvbXBhdGli
bGVCaXRtYXAgPSBjb21wYXRpYmxlQml0bWFwKGRlc3RDb250ZXh0LnBsYXRmb3JtQ29udGV4dCgp
LT5yZW5kZXJUYXJnZXQoKSk7CiAKQEAgLTI4Myw3ICsyODMsNyBAQCB2b2lkIEltYWdlQnVmZmVy
RGlyZWN0MkRCYWNrZW5kOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0
IEZsb2F0Ugogdm9pZCBJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6ZHJhd1BhdHRlcm4oR3Jh
cGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFu
c2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcs
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIEZsb2F0UmVjdCBh
ZGp1c3RlZFNyY1JlY3QgPSBzcmNSZWN0OwotICAgIGFkanVzdGVkU3JjUmVjdC5zY2FsZShtX3Jl
c29sdXRpb25TY2FsZSk7CisgICAgYWRqdXN0ZWRTcmNSZWN0LnNjYWxlKHJlc29sdXRpb25TY2Fs
ZSgpKTsKIAogICAgIGlmIChhdXRvIGltYWdlID0gY29weUltYWdlKCZkZXN0Q29udGV4dCA9PSAm
Y29udGV4dCgpID8gQ29weUJhY2tpbmdTdG9yZSA6IERvbnRDb3B5QmFja2luZ1N0b3JlKSkKICAg
ICAgICAgaW1hZ2UtPmRyYXdQYXR0ZXJuKGRlc3RDb250ZXh0LCBkZXN0UmVjdCwgYWRqdXN0ZWRT
cmNSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgb3B0aW9ucyk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZm
ZXIuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZl
ci5oCmluZGV4IDVjNzU0NWJmZTY2OTI2MjBkMDEzZmRjODg2ZDc1ZWYzOWM4MWFmZGQuLjgyZmZj
NjBmOTFkZDIwZmE5NmMwZGI0Y2EwNzlkNzhkZjhkYjQ4ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oCkBAIC00OSwx
MiArNDksMTIgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gQmFzZUNvbmNyZXRlSW1hZ2VCdWZm
ZXI6OnRlbXBsYXRlIGNyZWF0ZTxSZW1vdGVJbWFnZUJ1ZmZlcj4oc2l6ZSwgcmVzb2x1dGlvblNj
YWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCwgbnVsbHB0ciwgcmVtb3RlUmVuZGVyaW5nQmFj
a2VuZCwgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB9CiAKLSAgICBSZW1vdGVJ
bWFnZUJ1ZmZlcihzdGQ6OnVuaXF1ZV9wdHI8QmFja2VuZFR5cGU+JiYgYmFja2VuZCwgUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZCYgcmVtb3RlUmVuZGVyaW5nQmFja2VuZCwgV2ViQ29yZTo6UmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKLSAgICAg
ICAgOiBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZlcihXVEZNb3ZlKGJhY2tlbmQpLCByZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIpCisgICAgUmVtb3RlSW1hZ2VCdWZmZXIoc3RkOjp1bmlxdWVfcHRy
PFdlYkNvcmU6OkltYWdlQnVmZmVyQmFja2VuZDo6UGFyYW1ldGVycz4mJiBwYXJhbWV0ZXJzLCBz
dGQ6OnVuaXF1ZV9wdHI8QmFja2VuZFR5cGU+JiYgYmFja2VuZCwgUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZCYgcmVtb3RlUmVuZGVyaW5nQmFja2VuZCwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKKyAgICAgICAgOiBCYXNlQ29u
Y3JldGVJbWFnZUJ1ZmZlcihXVEZNb3ZlKHBhcmFtZXRlcnMpLCBXVEZNb3ZlKGJhY2tlbmQpLCBy
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCiAgICAgICAgICwgbV9yZW1vdGVSZW5kZXJpbmdC
YWNrZW5kKHJlbW90ZVJlbmRlcmluZ0JhY2tlbmQpCiAgICAgICAgICwgbV9yZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogICAgIHsKLSAgICAg
ICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmltYWdlQnVmZmVyQmFja2VuZFdhc0NyZWF0ZWQo
bV9iYWNrZW5kLT5sb2dpY2FsU2l6ZSgpLCBtX2JhY2tlbmQtPmJhY2tlbmRTaXplKCksIG1fYmFj
a2VuZC0+cmVzb2x1dGlvblNjYWxlKCksIG1fYmFja2VuZC0+Y29sb3JTcGFjZSgpLCBtX2JhY2tl
bmQtPnBpeGVsRm9ybWF0KCksIG1fYmFja2VuZC0+Y3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFu
ZGxlKCksIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CisgICAgICAgIG1fcmVtb3RlUmVu
ZGVyaW5nQmFja2VuZC5kaWRDcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQobV9iYWNrZW5kLT5jcmVh
dGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUoKSwgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
KTsKICAgICB9CiAKICAgICB+UmVtb3RlSW1hZ2VCdWZmZXIoKQpAQCAtNjUsMTcgKzY1LDYgQEAg
cHVibGljOgogICAgICAgICAgICAgY29udGV4dCgpLnJlc3RvcmUoKTsKICAgICB9CiAKLSAgICBX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVwbGF5UmVzdWx0IHN1Ym1pdERpc3BsYXlMaXN0KGNvbnN0
IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QpCi0gICAgewot
ICAgICAgICBpZiAoZGlzcGxheUxpc3QuaXNFbXB0eSgpKQotICAgICAgICAgICAgcmV0dXJuIHsg
fTsKLQotICAgICAgICBjb25zdCBhdXRvJiBpbWFnZUJ1ZmZlcnMgPSBtX3JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQucmVtb3RlUmVzb3VyY2VDYWNoZSgpLmltYWdlQnVmZmVycygpOwotICAgICAgICBj
b25zdCBhdXRvJiBuYXRpdmVJbWFnZXMgPSBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQucmVtb3Rl
UmVzb3VyY2VDYWNoZSgpLm5hdGl2ZUltYWdlcygpOwotICAgICAgICBXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6UmVwbGF5ZXIgcmVwbGF5ZXIgeyBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZlcjo6Y29udGV4
dCgpLCBkaXNwbGF5TGlzdCwgJmltYWdlQnVmZmVycywgJm5hdGl2ZUltYWdlcywgdGhpcyB9Owot
ICAgICAgICByZXR1cm4gcmVwbGF5ZXIucmVwbGF5KCk7Ci0gICAgfQotCiBwcml2YXRlOgogICAg
IGJvb2wgYXBwbHkoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1IYW5kbGUgaXRlbSwgV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBvdmVycmlkZQogICAgIHsKQEAgLTEwMSw2ICs5
MCwxNyBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5k
LmFwcGx5TWVkaWFJdGVtKGl0ZW0sIGNvbnRleHQpOwogICAgIH0KIAorICAgIHZvaWQgc3VibWl0
RGlzcGxheUxpc3QoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiBkaXNw
bGF5TGlzdCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGlmIChkaXNwbGF5TGlzdC5pc0VtcHR5
KCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgY29uc3QgYXV0byYgaW1hZ2VCdWZm
ZXJzID0gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLnJlbW90ZVJlc291cmNlQ2FjaGUoKS5pbWFn
ZUJ1ZmZlcnMoKTsKKyAgICAgICAgY29uc3QgYXV0byYgbmF0aXZlSW1hZ2VzID0gbV9yZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kLnJlbW90ZVJlc291cmNlQ2FjaGUoKS5uYXRpdmVJbWFnZXMoKTsKKyAg
ICAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlcGxheWVyIHJlcGxheWVyIHsgQmFzZUNvbmNy
ZXRlSW1hZ2VCdWZmZXI6OmNvbnRleHQoKSwgZGlzcGxheUxpc3QsICZpbWFnZUJ1ZmZlcnMsICZu
YXRpdmVJbWFnZXMsIHRoaXMgfTsKKyAgICAgICAgcmVwbGF5ZXIucmVwbGF5KCk7CisgICAgfQor
CiAgICAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZCYgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kOwog
ICAgIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBtX3JlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKaW5kZXggZjU5YzM4NzI0
ZjhmNjJlZTc4MDJiOTIwMjM3ZjY4ODQ3M2Q3ZmJmOS4uZDI3Njk4NjkxODVjNjMzYmJlMGFlYTA5
ZDc2OTUwNzQ0YTIxNTQ0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcApAQCAtOTksOSArOTks
OSBAQCBib29sIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmFwcGx5TWVkaWFJdGVtKERpc3BsYXlM
aXN0OjpJdGVtSGFuZGxlIGl0ZW0sIEdyYXBoaQogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lk
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmltYWdlQnVmZmVyQmFja2VuZFdhc0NyZWF0ZWQoY29u
c3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50U2l6ZSYgYmFja2VuZFNpemUsIGZs
b2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBw
aXhlbEZvcm1hdCwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGhhbmRsZSwgUmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKK3ZvaWQgUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZDo6ZGlkQ3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kKEltYWdlQnVmZmVy
QmFja2VuZEhhbmRsZSBoYW5kbGUsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5OjpJbWFnZUJ1ZmZlckJhY2tlbmRXYXNDcmVhdGVkKGxvZ2ljYWxTaXpl
LCBiYWNrZW5kU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCwg
V1RGTW92ZShoYW5kbGUpLCByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpLCBtX3JlbmRlcmlu
Z0JhY2tlbmRJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHk6OkRpZENyZWF0ZUltYWdlQnVmZmVyQmFja2VuZChXVEZNb3ZlKGhhbmRsZSks
IHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciksIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZp
ZXIpOwogfQogCiB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmRpZEZsdXNoKERpc3BsYXlM
aXN0OjpGbHVzaElkZW50aWZpZXIgZmx1c2hJZGVudGlmaWVyLCBSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQpAQCAtMTQ4LDEwICsxNDgsNyBA
QCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmFwcGx5RGlzcGxheUxpc3RzRnJvbUhhbmRs
ZShJbWFnZUJ1ZmZlciYgZGVzdGluYXRpbwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAKLSAgICAgICAgaWYgKGRlc3RpbmF0aW9uLmlzQWNjZWxlcmF0ZWQoKSkKLSAgICAgICAgICAg
IHN0YXRpY19jYXN0PEFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXImPihkZXN0aW5hdGlvbiku
c3VibWl0RGlzcGxheUxpc3QoKmRpc3BsYXlMaXN0KTsKLSAgICAgICAgZWxzZQotICAgICAgICAg
ICAgc3RhdGljX2Nhc3Q8VW5hY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyJj4oZGVzdGluYXRp
b24pLnN1Ym1pdERpc3BsYXlMaXN0KCpkaXNwbGF5TGlzdCk7CisgICAgICAgIGRlc3RpbmF0aW9u
LnN1Ym1pdERpc3BsYXlMaXN0KCpkaXNwbGF5TGlzdCk7CiAKICAgICAgICAgQ2hlY2tlZFNpemUg
Y2hlY2tlZE9mZnNldCA9IG9mZnNldDsKICAgICAgICAgY2hlY2tlZE9mZnNldCArPSBzaXplVG9S
ZWFkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZVJlbmRlcmluZ0JhY2tlbmQuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9S
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKaW5kZXggNjQwNjY2OGZhZTA1MDU3ZTlkZjMyNjRmNTc1
MjQ5NDg5ZDcwNWM3OC4uNTkxOWU5NTY0ZjY2M2RmMzlmZmIzYzE1YjE1YTNiOGMzMjMwZjVmZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRl
cmluZ0JhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlUmVuZGVyaW5nQmFja2VuZC5oCkBAIC03MCw3ICs3MCw3IEBAIHB1YmxpYzoKICAgICBib29s
IGFwcGx5TWVkaWFJdGVtKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtSGFuZGxlLCBXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQmKTsKIAogICAgIC8vIE1lc3NhZ2VzIHRvIGJlIHNlbnQuCi0gICAg
dm9pZCBpbWFnZUJ1ZmZlckJhY2tlbmRXYXNDcmVhdGVkKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6
ZSYgbG9naWNhbFNpemUsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGJhY2tlbmRTaXplLCBmbG9h
dCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UsIFdlYkNvcmU6OlBpeGVsRm9y
bWF0LCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcik7CisgICAgdm9pZCBkaWRDcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQoSW1hZ2VC
dWZmZXJCYWNrZW5kSGFuZGxlLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIp
OwogICAgIHZvaWQgZGlkRmx1c2goV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZsdXNoSWRlbnRpZmll
ciwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKIAogICAgIHZvaWQgc2V0
TmV4dEl0ZW1CdWZmZXJUb1JlYWQoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVu
dGlmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJl
ZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90
ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbQppbmRleCBlZjk0YzZiMDIwNTA0
M2QzNzFiZjBmOTY5NmM4ZDhjYTYzNmMwMTI1Li41ZjQ0YTM5YmMwYzE3NDI1NmQ2NzQ5OWFiYTVm
MzQwYmJmM2U3ZTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXll
clRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tCkBAIC0zMTUsOCAr
MzE1LDcgQEAgYm9vbCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZGlzcGxheSgpCiAKICAgICBt
X2xheWVyLT5vd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJMYXllckRpZERpc3BsYXkobV9sYXllcik7
CiAKLSAgICAvLyBGSVhNRTogVGhpcyBtZXRob2QgaGFzIGEgd2VpcmQgbmFtZS4gVGhpcyBpcyAi
c3VibWl0IHdvcmsiLgotICAgIG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXItPmZsdXNoRHJhd2lu
Z0NvbnRleHRBbmRDb21taXQoKTsKKyAgICBtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVyLT5zdWJt
aXREcmF3aW5nQ29udGV4dCgpOwogCiAgICAgbV9mcm9udEJ1ZmZlckZsdXNoZXIgPSBtX2Zyb250
QnVmZmVyLmltYWdlQnVmZmVyLT5jcmVhdGVGbHVzaGVyKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRt
YXBCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1h
Z2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcAppbmRleCA4NTVjODk0OTY2YzU4N2Ji
MGU2YWVjNTExOWRlNGI5NDQ1MDg3ZDRiLi40Yzk2NDJjMzFkNzM5NzFiZDdhZjQ1YmY1NTUyZWJm
MWZlM2M0NzExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJh
Y2tlbmQuY3BwCkBAIC00MywxNyArNDMsMTcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAK
IFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJh
Y2tlbmQpOwogCi1zdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNr
ZW5kPiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmNyZWF0ZShjb25zdCBGbG9h
dFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNl
LCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgY29uc3QgSG9zdFdpbmRvdyopCitzdGQ6OnVuaXF1
ZV9wdHI8SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kPiBJbWFnZUJ1ZmZlclNoYXJl
YWJsZUJpdG1hcEJhY2tlbmQ6OmNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBj
b25zdCBIb3N0V2luZG93KikKIHsKLSAgICBBU1NFUlQocGl4ZWxGb3JtYXQgPT0gUGl4ZWxGb3Jt
YXQ6OkJHUkE4KTsKKyAgICBBU1NFUlQocGFyYW1ldGVycy5waXhlbEZvcm1hdCA9PSBQaXhlbEZv
cm1hdDo6QkdSQTgpOwogCi0gICAgSW50U2l6ZSBiYWNrZW5kU2l6ZSA9IGNhbGN1bGF0ZUJhY2tl
bmRTaXplKHNpemUsIHJlc29sdXRpb25TY2FsZSk7CisgICAgSW50U2l6ZSBiYWNrZW5kU2l6ZSA9
IGNhbGN1bGF0ZUJhY2tlbmRTaXplKHBhcmFtZXRlcnMubG9naWNhbFNpemUsIHBhcmFtZXRlcnMu
cmVzb2x1dGlvblNjYWxlKTsKICAgICBpZiAoYmFja2VuZFNpemUuaXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAogICAgIFNoYXJlYWJsZUJpdG1hcDo6Q29uZmlndXJhdGlvbiBj
b25maWd1cmF0aW9uOwogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIGNvbmZpZ3VyYXRpb24uY29s
b3JTcGFjZSA9IHsgY2FjaGVkQ0dDb2xvclNwYWNlKGNvbG9yU3BhY2UpIH07CisgICAgY29uZmln
dXJhdGlvbi5jb2xvclNwYWNlID0geyBjYWNoZWRDR0NvbG9yU3BhY2UocGFyYW1ldGVycy5jb2xv
clNwYWNlKSB9OwogI2VuZGlmCiAgICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNy
ZWF0ZVNoYXJlYWJsZShiYWNrZW5kU2l6ZSwgY29uZmlndXJhdGlvbik7CiAgICAgaWYgKCFiaXRt
YXApCkBAIC02MywxMCArNjMsMTAgQEAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyU2hhcmVh
YmxlQml0bWFwQmFja2VuZD4gSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWMKICAgICBpZiAo
IWNvbnRleHQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIG1ha2VVbmlx
dWU8SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kPihzaXplLCBiYWNrZW5kU2l6ZSwg
cmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCwgV1RGTW92ZShiaXRtYXAp
LCBXVEZNb3ZlKGNvbnRleHQpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxJbWFnZUJ1ZmZlclNo
YXJlYWJsZUJpdG1hcEJhY2tlbmQ+KHBhcmFtZXRlcnMsIFdURk1vdmUoYml0bWFwKSwgV1RGTW92
ZShjb250ZXh0KSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlclNoYXJlYWJsZUJp
dG1hcEJhY2tlbmQ+IEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6Y3JlYXRlKGNv
bnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEludFNpemUmIGJhY2tlbmRTaXplLCBm
bG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQg
cGl4ZWxGb3JtYXQsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBoYW5kbGUpCitzdGQ6OnVuaXF1
ZV9wdHI8SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kPiBJbWFnZUJ1ZmZlclNoYXJl
YWJsZUJpdG1hcEJhY2tlbmQ6OmNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBJ
bWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgaGFuZGxlKQogewogICAgIGlmICghV1RGOjpob2xkc19h
bHRlcm5hdGl2ZTxTaGFyZWFibGVCaXRtYXA6OkhhbmRsZT4oaGFuZGxlKSkgewogICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTgxLDExICs4MSwxMSBAQCBzdGQ6OnVuaXF1ZV9wdHI8
SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kPiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJp
dG1hcEJhYwogICAgIGlmICghY29udGV4dCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ+KGxv
Z2ljYWxTaXplLCBiYWNrZW5kU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhl
bEZvcm1hdCwgV1RGTW92ZShiaXRtYXApLCBXVEZNb3ZlKGNvbnRleHQpKTsKKyAgICByZXR1cm4g
bWFrZVVuaXF1ZTxJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ+KHBhcmFtZXRlcnMs
IFdURk1vdmUoYml0bWFwKSwgV1RGTW92ZShjb250ZXh0KSk7CiB9CiAKLUltYWdlQnVmZmVyU2hh
cmVhYmxlQml0bWFwQmFja2VuZDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kKGNv
bnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEludFNpemUmIHBoeXNpY2FsU2l6ZSwg
ZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0
IHBpeGVsRm9ybWF0LCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiYmIGJpdG1hcCwgc3RkOjp1bmlx
dWVfcHRyPEdyYXBoaWNzQ29udGV4dD4mJiBjb250ZXh0KQotICAgIDogUGxhdGZvcm1JbWFnZUJ1
ZmZlckJhY2tlbmQobG9naWNhbFNpemUsIHBoeXNpY2FsU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBj
b2xvclNwYWNlLCBwaXhlbEZvcm1hdCkKK0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2Vu
ZDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kKGNvbnN0IFBhcmFtZXRlcnMmIHBh
cmFtZXRlcnMsIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+JiYgYml0bWFwLCBzdGQ6OnVuaXF1ZV9w
dHI8R3JhcGhpY3NDb250ZXh0PiYmIGNvbnRleHQpCisgICAgOiBQbGF0Zm9ybUltYWdlQnVmZmVy
QmFja2VuZChwYXJhbWV0ZXJzKQogICAgICwgbV9iaXRtYXAoV1RGTW92ZShiaXRtYXApKQogICAg
ICwgbV9jb250ZXh0KFdURk1vdmUoY29udGV4dCkpCiB7CkBAIC05OCw2ICs5OCwxMSBAQCBJbWFn
ZUJ1ZmZlckJhY2tlbmRIYW5kbGUgSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpj
cmVhdGVJbWFnZUJ1ZmZlckJhYwogICAgIHJldHVybiBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUo
V1RGTW92ZShoYW5kbGUpKTsKIH0KIAorSW50U2l6ZSBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1h
cEJhY2tlbmQ6OmJhY2tlbmRTaXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9iaXRtYXAtPnNp
emUoKTsKK30KKwogUmVmUHRyPE5hdGl2ZUltYWdlPiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1h
cEJhY2tlbmQ6OmNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5KSBjb25zdAogewogI2lm
IFVTRShDRykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5o
CmluZGV4IDBjN2YwNDdmODgzNWU0YjhkNjNjMTVmNDFlYzkyMTAyZTQ1ODUzOTkuLjU1NTA2YTQ5
ZDAzZTM5ZTg4ZTAzNjFlNDkxNTVmMTMxZDc5OTAxMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNr
ZW5kLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1
ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuaApAQCAtNDMsMTQgKzQzLDE2IEBAIGNsYXNzIElt
YWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZCA6IHB1YmxpYyBXZWJDb3JlOjpQbGF0Zm9y
bUltYWdlQnVmZmVyQmFjCiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChJbWFnZUJ1ZmZlclNo
YXJlYWJsZUJpdG1hcEJhY2tlbmQpOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEltYWdlQnVm
ZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZCk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHN0ZDo6dW5p
cXVlX3B0cjxJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ+IGNyZWF0ZShjb25zdCBX
ZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBmbG9hdCByZXNvbHV0aW9uU2Nh
bGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UsIFdlYkNvcmU6OlBpeGVsRm9ybWF0LCBjb25zdCBXZWJD
b3JlOjpIb3N0V2luZG93Kik7Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZl
clNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUm
IGxvZ2ljYWxTaXplLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBpbnRlcm5hbFNpemUsIGZsb2F0
IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSwgV2ViQ29yZTo6UGl4ZWxGb3Jt
YXQsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSk7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ+IGNyZWF0ZShjb25zdCBQYXJhbWV0
ZXJzJiwgY29uc3QgV2ViQ29yZTo6SG9zdFdpbmRvdyopOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1
ZV9wdHI8SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kPiBjcmVhdGUoY29uc3QgUGFy
YW1ldGVycyYsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSk7CiAKLSAgICBJbWFnZUJ1ZmZlclNo
YXJlYWJsZUJpdG1hcEJhY2tlbmQoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBsb2dpY2FsU2l6
ZSwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgcGh5c2ljYWxTaXplLCBmbG9hdCByZXNvbHV0aW9u
U2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UsIFdlYkNvcmU6OlBpeGVsRm9ybWF0LCBSZWZQdHI8
U2hhcmVhYmxlQml0bWFwPiYmLCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0PiYmKTsKKyAgICBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQoY29uc3QgUGFy
YW1ldGVycyYsIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+JiYsIHN0ZDo6dW5pcXVlX3B0cjxXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQ+JiYpOwogCiAgICAgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxl
IGNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSgpIGNvbnN0OwogCiAgICAgV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gKm1fY29u
dGV4dDsgfQorICAgIAorICAgIFdlYkNvcmU6OkludFNpemUgYmFja2VuZFNpemUoKSBjb25zdCBv
dmVycmlkZTsKIAogICAgIFJlZlB0cjxXZWJDb3JlOjpOYXRpdmVJbWFnZT4gY29weU5hdGl2ZUlt
YWdlKFdlYkNvcmU6OkJhY2tpbmdTdG9yZUNvcHkgPSBXZWJDb3JlOjpDb3B5QmFja2luZ1N0b3Jl
KSBjb25zdCBvdmVycmlkZTsKICAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2U+IGNvcHlJbWFnZShX
ZWJDb3JlOjpCYWNraW5nU3RvcmVDb3B5ID0gV2ViQ29yZTo6Q29weUJhY2tpbmdTdG9yZSwgV2Vi
Q29yZTo6UHJlc2VydmVSZXNvbHV0aW9uID0gV2ViQ29yZTo6UHJlc2VydmVSZXNvbHV0aW9uOjpO
bykgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1BsYXRmb3JtUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9QbGF0Zm9ybVJlbW90ZUltYWdlQnVmZmVyUHJv
eHkuaAppbmRleCAwNTE3Njc4M2Q1NTMxYmZlNzBmODUwYmYyYzE0OWY3ODgyMmQwZTM5Li45YWZm
MDg4ZTM3Y2E3NmE3Zjg2NGFlN2U0MmJiYjcwMDRmMWYxNTIzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1BsYXRmb3JtUmVtb3RlSW1hZ2VCdWZmZXJQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUGxhdGZv
cm1SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgKQEAgLTM3LDE0ICszNyw0IEBAIHVzaW5nIEFjY2Vs
ZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXJQcm94eSA9IFJlbW90ZUltYWdlQnVmZmVyUHJveHk8QWNj
ZWxlcmF0ZWRJbWFnCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCi1TUEVDSUFMSVpFX1RZUEVf
VFJBSVRTX0JFR0lOKFdlYktpdDo6VW5hY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyUHJveHkp
Ci0gICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OkltYWdlQnVmZmVyJiBpbWFn
ZUJ1ZmZlcikgeyByZXR1cm4gaW1hZ2VCdWZmZXIucmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
KCkgJiYgIWltYWdlQnVmZmVyLmlzQWNjZWxlcmF0ZWQoKTsgfQotU1BFQ0lBTElaRV9UWVBFX1RS
QUlUU19FTkQoKQotCi0jaWYgSEFWRShJT1NVUkZBQ0UpCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRT
X0JFR0lOKFdlYktpdDo6QWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlclByb3h5KQotICAgIHN0
YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpJbWFnZUJ1ZmZlciYgaW1hZ2VCdWZmZXIp
IHsgcmV0dXJuIGltYWdlQnVmZmVyLnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpICYmIGlt
YWdlQnVmZmVyLmlzQWNjZWxlcmF0ZWQoKTsgfQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQo
KQotI2VuZGlmCi0KICNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VC
dWZmZXJQcm94eS5oCmluZGV4IDMxY2QwMmQxYjBmMjFlZGU1ODIyYmY5NDViYWQ0NmVkZWYxZWIz
N2EuLmY4NTE1MmNiNjY4ZTY3OTgwYThkYjk4ZDY2MTJhOTAwYjc3NTcyMzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
SW1hZ2VCdWZmZXJQcm94eS5oCkBAIC01MCwxNCArNTAsMTYgQEAgY2xhc3MgUmVtb3RlSW1hZ2VC
dWZmZXJQcm94eSA6IHB1YmxpYyBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SW1hZ2VCdWZmZXI8QmFj
a2VuZFQKICAgICB1c2luZyBCYXNlRGlzcGxheUxpc3RJbWFnZUJ1ZmZlcjo6bV9iYWNrZW5kOwog
ICAgIHVzaW5nIEJhc2VEaXNwbGF5TGlzdEltYWdlQnVmZmVyOjptX2RyYXdpbmdDb250ZXh0Owog
ICAgIHVzaW5nIEJhc2VEaXNwbGF5TGlzdEltYWdlQnVmZmVyOjptX3JlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcjsKKyAgICB1c2luZyBCYXNlRGlzcGxheUxpc3RJbWFnZUJ1ZmZlcjo6cmVzb2x1
dGlvblNjYWxlOwogCiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxSZW1vdGVJbWFnZUJ1ZmZl
clByb3h5PiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBzaXplLCBXZWJDb3JlOjpS
ZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29y
ZTo6Q29sb3JTcGFjZSBjb2xvclNwYWNlLCBXZWJDb3JlOjpQaXhlbEZvcm1hdCBwaXhlbEZvcm1h
dCwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5JiByZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHkpCisgICAgc3RhdGljIFJlZlB0cjxSZW1vdGVJbWFnZUJ1ZmZlclByb3h5PiBjcmVhdGUoY29u
c3QgV2ViQ29yZTo6RmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNv
cmU6OkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgV2ViQ29yZTo6UGl4ZWxGb3JtYXQgcGl4ZWxGb3Jt
YXQsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSYgcmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5KQogICAgIHsKICAgICAgICAgaWYgKEJhY2tlbmRUeXBlOjpjYWxjdWxhdGVCYWNrZW5kU2l6
ZShzaXplLCByZXNvbHV0aW9uU2NhbGUpLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOwogCi0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgUmVtb3RlSW1hZ2VCdWZmZXJQ
cm94eShzaXplLCByZW5kZXJpbmdNb2RlLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBp
eGVsRm9ybWF0LCByZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpKTsKKyAgICAgICAgYXV0byBw
YXJhbWV0ZXJzID0gc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyQmFja2VuZDo6
UGFyYW1ldGVycz4obmV3IFdlYkNvcmU6OkltYWdlQnVmZmVyQmFja2VuZDo6UGFyYW1ldGVycyh7
IHNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQgfSkpOworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFJlbW90ZUltYWdlQnVmZmVyUHJveHkoV1RGTW92ZShw
YXJhbWV0ZXJzKSwgcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KSk7CiAgICAgfQogCiAgICAg
flJlbW90ZUltYWdlQnVmZmVyUHJveHkoKQpAQCAtNjksMjcgKzcxLDYgQEAgcHVibGljOgogICAg
ICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+cmVsZWFzZVJlbW90ZVJlc291cmNl
KG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB9CiAKLSAgICB2b2lkIGNsZWFy
QmFja2VuZCgpIHsgbV9iYWNrZW5kID0gbnVsbHB0cjsgfQotCi0gICAgdm9pZCBjcmVhdGVCYWNr
ZW5kKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IFdlYkNvcmU6
OkludFNpemUmIGJhY2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNv
bG9yU3BhY2UgY29sb3JTcGFjZSwgV2ViQ29yZTo6UGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIElt
YWdlQnVmZmVyQmFja2VuZEhhbmRsZSBoYW5kbGUpCi0gICAgewotICAgICAgICBBU1NFUlQoIW1f
YmFja2VuZCk7Ci0gICAgICAgIG1fYmFja2VuZCA9IEJhY2tlbmRUeXBlOjpjcmVhdGUobG9naWNh
bFNpemUsIGJhY2tlbmRTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9y
bWF0LCBXVEZNb3ZlKGhhbmRsZSkpOwotICAgIH0KLQotICAgIHZvaWQgZGlkRmx1c2goV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OkZsdXNoSWRlbnRpZmllciBmbHVzaElkZW50aWZpZXIpCi0gICAgewot
ICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fcmVjZWl2ZWRGbHVzaElkZW50aWZpZXJM
b2NrKTsKLSAgICAgICAgbV9yZWNlaXZlZEZsdXNoSWRlbnRpZmllciA9IGZsdXNoSWRlbnRpZmll
cjsKLSAgICAgICAgbV9yZWNlaXZlZEZsdXNoSWRlbnRpZmllckNoYW5nZWRDb25kaXRpb24ubm90
aWZ5QWxsKCk7Ci0gICAgfQotCi0gICAgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBzaXplKCkg
Y29uc3QgeyByZXR1cm4gbV9zaXplOyB9Ci0gICAgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSByZW5k
ZXJpbmdNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJpbmdNb2RlOyB9Ci0gICAgZmxvYXQg
cmVzb2x1dGlvblNjYWxlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9yZXNvbHV0aW9uU2NhbGU7
IH0KLSAgICBXZWJDb3JlOjpDb2xvclNwYWNlIGNvbG9yU3BhY2UoKSBjb25zdCB7IHJldHVybiBt
X2NvbG9yU3BhY2U7IH0KLSAgICBXZWJDb3JlOjpQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCgpIGNv
bnN0IHsgcmV0dXJuIG1fcGl4ZWxGb3JtYXQ7IH0KLQogICAgIEltYWdlQnVmZmVyQmFja2VuZEhh
bmRsZSBjcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUoKQogICAgIHsKICAgICAgICAgZW5z
dXJlQmFja2VuZENyZWF0ZWQoKTsKQEAgLTExMywxNCArOTQsOSBAQCBwdWJsaWM6CiAKIHByb3Rl
Y3RlZDoKICAgICBmcmllbmQgY2xhc3MgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDsKLSAgICBSZW1v
dGVJbWFnZUJ1ZmZlclByb3h5KGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgc2l6ZSwgV2ViQ29y
ZTo6UmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdl
YkNvcmU6OkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgV2ViQ29yZTo6UGl4ZWxGb3JtYXQgcGl4ZWxG
b3JtYXQsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSYgcmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5KQotICAgICAgICA6IEJhc2VEaXNwbGF5TGlzdEltYWdlQnVmZmVyKHNpemUsIHRoaXMp
CisgICAgUmVtb3RlSW1hZ2VCdWZmZXJQcm94eShzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SW1h
Z2VCdWZmZXJCYWNrZW5kOjpQYXJhbWV0ZXJzPiYmIHBhcmFtZXRlcnMsIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eSYgcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KQorICAgICAgICA6IEJh
c2VEaXNwbGF5TGlzdEltYWdlQnVmZmVyKFdURk1vdmUocGFyYW1ldGVycyksIHRoaXMpCiAgICAg
ICAgICwgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkobWFrZVdlYWtQdHIocmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5KSkKLSAgICAgICAgLCBtX3NpemUoc2l6ZSkKLSAgICAgICAgLCBt
X3JlbmRlcmluZ01vZGUocmVuZGVyaW5nTW9kZSkKLSAgICAgICAgLCBtX3Jlc29sdXRpb25TY2Fs
ZShyZXNvbHV0aW9uU2NhbGUpCi0gICAgICAgICwgbV9jb2xvclNwYWNlKGNvbG9yU3BhY2UpCi0g
ICAgICAgICwgbV9waXhlbEZvcm1hdChwaXhlbEZvcm1hdCkKICAgICB7CiAgICAgICAgIEFTU0VS
VChtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSk7CiAgICAgICAgIG1fcmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5LT5yZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkoKS5jYWNoZUltYWdlQnVm
ZmVyKCp0aGlzKTsKQEAgLTEzMSw2ICsxMDcsMTMgQEAgcHJvdGVjdGVkOgogCiAgICAgYm9vbCBo
YXNQZW5kaW5nRmx1c2goKSBjb25zdCB7IHJldHVybiBtX3NlbnRGbHVzaElkZW50aWZpZXIgIT0g
bV9yZWNlaXZlZEZsdXNoSWRlbnRpZmllcjsgfQogCisgICAgdm9pZCBkaWRGbHVzaChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6Rmx1c2hJZGVudGlmaWVyIGZsdXNoSWRlbnRpZmllcikgb3ZlcnJpZGUK
KyAgICB7CisgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9yZWNlaXZlZEZsdXNoSWRl
bnRpZmllckxvY2spOworICAgICAgICBtX3JlY2VpdmVkRmx1c2hJZGVudGlmaWVyID0gZmx1c2hJ
ZGVudGlmaWVyOworICAgICAgICBtX3JlY2VpdmVkRmx1c2hJZGVudGlmaWVyQ2hhbmdlZENvbmRp
dGlvbi5ub3RpZnlBbGwoKTsKKyAgICB9CisKICAgICB2b2lkIHdhaXRGb3JEaWRGbHVzaFdpdGhU
aW1lb3V0KCkKICAgICB7CiAgICAgICAgIGlmICghbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHkpCkBAIC0xNDUsNyArMTI4LDcgQEAgcHJvdGVjdGVkOgogICAgIEJhY2tlbmRUeXBlKiBlbnN1
cmVCYWNrZW5kQ3JlYXRlZCgpIGNvbnN0IG92ZXJyaWRlCiAgICAgewogICAgICAgICBpZiAoIW1f
YmFja2VuZCAmJiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKLSAgICAgICAgICAgIG1f
cmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT53YWl0Rm9ySW1hZ2VCdWZmZXJCYWNrZW5kV2Fz
Q3JlYXRlZCgpOworICAgICAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHktPndh
aXRGb3JEaWRDcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQoKTsKICAgICAgICAgcmV0dXJuIG1fYmFj
a2VuZC5nZXQoKTsKICAgICB9CiAKQEAgLTE2OSw4ICsxNTIsOCBAQCBwcm90ZWN0ZWQ6CiAgICAg
dm9pZCBwdXRJbWFnZURhdGEoV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBpbnB1dEZv
cm1hdCwgY29uc3QgV2ViQ29yZTo6SW1hZ2VEYXRhJiBpbWFnZURhdGEsIGNvbnN0IFdlYkNvcmU6
OkludFJlY3QmIHNyY1JlY3QsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBkZXN0UG9pbnQgPSB7
IH0sIFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb24gZGVzdEZvcm1hdCA9IFdlYkNvcmU6
OkFscGhhUHJlbXVsdGlwbGljYXRpb246OlByZW11bHRpcGxpZWQpIG92ZXJyaWRlCiAgICAgewog
ICAgICAgICAvLyBUaGUgbWF0aCBpbnNpZGUgSW1hZ2VEYXRhOjpjcmVhdGUoKSBkb2Vzbid0IGFn
cmVlIHdpdGggdGhlIG1hdGggaW5zaWRlIEltYWdlQnVmZmVyQmFja2VuZDo6cHV0SW1hZ2VEYXRh
KCkgYWJvdXQgaG93IG1fcmVzb2x1dGlvblNjYWxlIGludGVyYWN0cyB3aXRoIHRoZSBkYXRhIGlu
IHRoZSBJbWFnZUJ1ZmZlci4KLSAgICAgICAgLy8gVGhpcyBtZWFucyB0aGF0IHB1dEltYWdlRGF0
YSgpIGlzIG9ubHkgY2FsbGVkIHdoZW4gbV9yZXNvbHV0aW9uU2NhbGUgPT0gMS4KLSAgICAgICAg
QVNTRVJUX0lNUExJRVMobV9iYWNrZW5kLCBtX2JhY2tlbmQtPnJlc29sdXRpb25TY2FsZSgpID09
IDEpOworICAgICAgICAvLyBUaGlzIG1lYW5zIHRoYXQgcHV0SW1hZ2VEYXRhKCkgaXMgb25seSBj
YWxsZWQgd2hlbiByZXNvbHV0aW9uU2NhbGUoKSA9PSAxLgorICAgICAgICBBU1NFUlQocmVzb2x1
dGlvblNjYWxlKCkgPT0gMSk7CiAgICAgICAgIG1fZHJhd2luZ0NvbnRleHQucmVjb3JkZXIoKS5w
dXRJbWFnZURhdGEoaW5wdXRGb3JtYXQsIGltYWdlRGF0YSwgc3JjUmVjdCwgZGVzdFBvaW50LCBk
ZXN0Rm9ybWF0KTsKICAgICB9CiAKQEAgLTE4NSwxMSArMTY4LDExIEBAIHByb3RlY3RlZDoKICAg
ICB2b2lkIGZsdXNoRHJhd2luZ0NvbnRleHQoKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgVHJh
Y2VTY29wZSB0cmFjaW5nU2NvcGUoRmx1c2hSZW1vdGVJbWFnZUJ1ZmZlclN0YXJ0LCBGbHVzaFJl
bW90ZUltYWdlQnVmZmVyRW5kKTsKLSAgICAgICAgZmx1c2hEcmF3aW5nQ29udGV4dEFuZENvbW1p
dCgpOworICAgICAgICBzdWJtaXREcmF3aW5nQ29udGV4dCgpOwogICAgICAgICB3YWl0Rm9yRGlk
Rmx1c2hXaXRoVGltZW91dCgpOwogICAgIH0KIAotICAgIHZvaWQgZmx1c2hEcmF3aW5nQ29udGV4
dEFuZENvbW1pdCgpIG92ZXJyaWRlCisgICAgdm9pZCBzdWJtaXREcmF3aW5nQ29udGV4dCgpIG92
ZXJyaWRlCiAgICAgewogICAgICAgICBpZiAoIW1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
KQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjAwLDEyICsxODMsMTIgQEAgcHJvdGVjdGVkOgog
CiAgICAgICAgIG1fc2VudEZsdXNoSWRlbnRpZmllciA9IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpG
bHVzaElkZW50aWZpZXI6OmdlbmVyYXRlKCk7CiAgICAgICAgIGRpc3BsYXlMaXN0LnRlbXBsYXRl
IGFwcGVuZDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Rmx1c2hDb250ZXh0PihtX3NlbnRGbHVzaElk
ZW50aWZpZXIpOwotICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+c3VibWl0
RGlzcGxheUxpc3QoZGlzcGxheUxpc3QsIG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsK
LSAgICAgICAgbV9pdGVtQ291bnRJbkN1cnJlbnREaXNwbGF5TGlzdCA9IDA7CisgICAgICAgIHN1
Ym1pdERpc3BsYXlMaXN0KGRpc3BsYXlMaXN0KTsKICAgICAgICAgZGlzcGxheUxpc3QuY2xlYXIo
KTsKKyAgICAgICAgbV9pdGVtQ291bnRJbkN1cnJlbnREaXNwbGF5TGlzdCA9IDA7CiAgICAgfQog
Ci0gICAgdm9pZCBzdWJtaXREaXNwbGF5TGlzdChjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
RGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0KQorICAgIHZvaWQgc3VibWl0RGlzcGxheUxpc3QoY29u
c3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCkgb3ZlcnJp
ZGUKICAgICB7CiAgICAgICAgIGlmICghbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkgfHwg
ZGlzcGxheUxpc3QuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzUxLDExICsz
MzQsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZsdXNoSWRlbnRp
ZmllciBtX3JlY2VpdmVkRmx1c2hJZGVudGlmaWVyOwogICAgIFdlYWtQdHI8UmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5PiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTsKICAgICBzaXpl
X3QgbV9pdGVtQ291bnRJbkN1cnJlbnREaXNwbGF5TGlzdCB7IDAgfTsKLSAgICBXZWJDb3JlOjpG
bG9hdFNpemUgbV9zaXplOwotICAgIFdlYkNvcmU6OlJlbmRlcmluZ01vZGUgbV9yZW5kZXJpbmdN
b2RlOwotICAgIGZsb2F0IG1fcmVzb2x1dGlvblNjYWxlOwotICAgIFdlYkNvcmU6OkNvbG9yU3Bh
Y2UgbV9jb2xvclNwYWNlOwotICAgIFdlYkNvcmU6OlBpeGVsRm9ybWF0IG1fcGl4ZWxGb3JtYXQ7
CiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBCYWNrZW5kVHlwZT4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5LmNwcAppbmRleCBlNTJjYTQwNzM1ZTk3OWUzODdkODNkMTRkMjdj
NDk2NjE3OGVjZmM3Li5jNjQzNTYxZDQ5MjA5MTc0YWJmZTkxMzI3ZDBiNDgwZGRlZjAwNzMxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwCkBAIC03MCwyNCArNzAs
MTUgQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmNvbm5lY3RUb0dQVVByb2Nl
c3MoKQogICAgIHNlbmQoTWVzc2FnZXM6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNyZWF0
ZVJlbmRlcmluZ0JhY2tlbmQobV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciksIDApOwogfQog
Ci10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RhdGljIHZvaWQgcmVjcmVhdGVJbWFnZUJ1ZmZlcihS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkmIHByb3h5LCBUJiBpbWFnZUJ1ZmZlciwgUmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlc291cmNlSWRlbnRpZmllciwgUmVuZGVyaW5nQmFja2Vu
ZElkZW50aWZpZXIgcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpCi17Ci0gICAgaW1hZ2VCdWZm
ZXIuY2xlYXJCYWNrZW5kKCk7Ci0gICAgcHJveHkuc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVy
aW5nQmFja2VuZDo6Q3JlYXRlSW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIuc2l6ZSgpLCBpbWFnZUJ1
ZmZlci5yZW5kZXJpbmdNb2RlKCksIGltYWdlQnVmZmVyLnJlc29sdXRpb25TY2FsZSgpLCBpbWFn
ZUJ1ZmZlci5jb2xvclNwYWNlKCksIGltYWdlQnVmZmVyLnBpeGVsRm9ybWF0KCksIHJlc291cmNl
SWRlbnRpZmllciksIHJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKLX0KLQogdm9pZCBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OnJlZXN0YWJsaXNoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24o
KQogewogICAgIGNvbm5lY3RUb0dQVVByb2Nlc3MoKTsKIAotICAgIGZvciAoYXV0byYgcGFpciA6
IG1fcmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmltYWdlQnVmZmVycygpKSB7Ci0gICAgICAgIGlm
IChhdXRvJiBiYXNlSW1hZ2VCdWZmZXIgPSBwYWlyLnZhbHVlKSB7Ci0gICAgICAgICAgICBpZiAo
aXM8QWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlclByb3h5PigqYmFzZUltYWdlQnVmZmVyKSkK
LSAgICAgICAgICAgICAgICByZWNyZWF0ZUltYWdlQnVmZmVyKCp0aGlzLCBkb3duY2FzdDxBY2Nl
bGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyUHJveHk+KCpiYXNlSW1hZ2VCdWZmZXIpLCBwYWlyLmtl
eSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7Ci0gICAgICAgICAgICBlbHNlCi0gICAg
ICAgICAgICAgICAgcmVjcmVhdGVJbWFnZUJ1ZmZlcigqdGhpcywgZG93bmNhc3Q8VW5hY2NlbGVy
YXRlZFJlbW90ZUltYWdlQnVmZmVyUHJveHk+KCpiYXNlSW1hZ2VCdWZmZXIpLCBwYWlyLmtleSwg
bV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7Ci0gICAgICAgIH0KKyAgICBmb3IgKGF1dG8m
IGltYWdlQnVmZmVyIDogbV9yZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuaW1hZ2VCdWZmZXJzKCku
dmFsdWVzKCkpIHsKKyAgICAgICAgaWYgKCFpbWFnZUJ1ZmZlcikKKyAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpDcmVh
dGVJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlci0+bG9naWNhbFNpemUoKSwgaW1hZ2VCdWZmZXItPnJl
bmRlcmluZ01vZGUoKSwgaW1hZ2VCdWZmZXItPnJlc29sdXRpb25TY2FsZSgpLCBpbWFnZUJ1ZmZl
ci0+Y29sb3JTcGFjZSgpLCBpbWFnZUJ1ZmZlci0+cGl4ZWxGb3JtYXQoKSwgaW1hZ2VCdWZmZXIt
PnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpKSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRp
Zmllcik7CisgICAgICAgIGltYWdlQnVmZmVyLT5jbGVhckJhY2tlbmQoKTsKICAgICB9CiB9CiAK
QEAgLTExMiwxMCArMTAzLDEwIEBAIHVpbnQ2NF90IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eTo6bWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdAogICAgIHJldHVybiBtX3JlbmRl
cmluZ0JhY2tlbmRJZGVudGlmaWVyLnRvVUludDY0KCk7CiB9CiAKLWJvb2wgUmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5Ojp3YWl0Rm9ySW1hZ2VCdWZmZXJCYWNrZW5kV2FzQ3JlYXRlZCgpCiti
b29sIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6d2FpdEZvckRpZENyZWF0ZUltYWdlQnVm
ZmVyQmFja2VuZCgpCiB7CiAgICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gY29ubmVjdGlvbiA9IFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVj
dGlvbigpOwotICAgIHJldHVybiBjb25uZWN0aW9uLT53YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlh
dGVseTxNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpJbWFnZUJ1ZmZlckJh
Y2tlbmRXYXNDcmVhdGVkPihtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLCAxX3MsIElQQzo6
V2FpdEZvck9wdGlvbjo6SW50ZXJydXB0V2FpdGluZ0lmU3luY01lc3NhZ2VBcnJpdmVzKTsKKyAg
ICByZXR1cm4gY29ubmVjdGlvbi0+d2FpdEZvckFuZERpc3BhdGNoSW1tZWRpYXRlbHk8TWVzc2Fn
ZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6RGlkQ3JlYXRlSW1hZ2VCdWZmZXJCYWNr
ZW5kPihtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLCAxX3MsIElQQzo6V2FpdEZvck9wdGlv
bjo6SW50ZXJydXB0V2FpdGluZ0lmU3luY01lc3NhZ2VBcnJpdmVzKTsKIH0KIAogYm9vbCBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OndhaXRGb3JEaWRGbHVzaCgpCkBAIC0xMjksMTAgKzEy
MCwxMCBAQCBSZWZQdHI8SW1hZ2VCdWZmZXI+IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6
Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaQogICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4g
aW1hZ2VCdWZmZXI7CiAKICAgICBpZiAocmVuZGVyaW5nTW9kZSA9PSBSZW5kZXJpbmdNb2RlOjpB
Y2NlbGVyYXRlZCkKLSAgICAgICAgaW1hZ2VCdWZmZXIgPSBBY2NlbGVyYXRlZFJlbW90ZUltYWdl
QnVmZmVyUHJveHk6OmNyZWF0ZShzaXplLCByZW5kZXJpbmdNb2RlLCByZXNvbHV0aW9uU2NhbGUs
IGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0LCAqdGhpcyk7CisgICAgICAgIGltYWdlQnVmZmVyID0g
QWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlclByb3h5OjpjcmVhdGUoc2l6ZSwgcmVzb2x1dGlv
blNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCwgKnRoaXMpOwogCiAgICAgaWYgKCFpbWFn
ZUJ1ZmZlcikKLSAgICAgICAgaW1hZ2VCdWZmZXIgPSBVbmFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VC
dWZmZXJQcm94eTo6Y3JlYXRlKHNpemUsIHJlbmRlcmluZ01vZGUsIHJlc29sdXRpb25TY2FsZSwg
Y29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQsICp0aGlzKTsKKyAgICAgICAgaW1hZ2VCdWZmZXIgPSBV
bmFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6Y3JlYXRlKHNpemUsIHJlc29sdXRp
b25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQsICp0aGlzKTsKIAogICAgIGlmIChpbWFn
ZUJ1ZmZlcikgewogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
OjpDcmVhdGVJbWFnZUJ1ZmZlcihzaXplLCByZW5kZXJpbmdNb2RlLCByZXNvbHV0aW9uU2NhbGUs
IGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0LCBpbWFnZUJ1ZmZlci0+cmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyKCkpLCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKQEAgLTE4MywyOCAr
MTc0LDIyIEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpyZWxlYXNlUmVtb3Rl
UmVzb3VyY2UoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmCiAgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlUmVuZGVyaW5nQmFja2VuZDo6UmVsZWFzZVJlbW90ZVJlc291cmNlKHJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllciksIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOwogfQogCi12b2lk
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6aW1hZ2VCdWZmZXJCYWNrZW5kV2FzQ3JlYXRl
ZChjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBJbnRTaXplJiBiYWNrZW5kU2l6
ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFBpeGVsRm9y
bWF0IHBpeGVsRm9ybWF0LCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgaGFuZGxlLCBSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQordm9pZCBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmRpZENyZWF0ZUltYWdlQnVmZmVyQmFja2VuZChJ
bWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgaGFuZGxlLCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogewogICAgIGF1dG8gaW1hZ2VCdWZmZXIg
PSBtX3JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jYWNoZWRJbWFnZUJ1ZmZlcihyZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAgICAgIHJldHVy
bjsKLSAgICAKLSAgICBpZiAoaW1hZ2VCdWZmZXItPmlzQWNjZWxlcmF0ZWQoKSkKLSAgICAgICAg
ZG93bmNhc3Q8QWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlclByb3h5PigqaW1hZ2VCdWZmZXIp
LmNyZWF0ZUJhY2tlbmQobG9naWNhbFNpemUsIGJhY2tlbmRTaXplLCByZXNvbHV0aW9uU2NhbGUs
IGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0LCBXVEZNb3ZlKGhhbmRsZSkpOworCisgICAgaWYgKGlt
YWdlQnVmZmVyLT5yZW5kZXJpbmdNb2RlKCkgPT0gUmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQp
CisgICAgICAgIGltYWdlQnVmZmVyLT5zZXRCYWNrZW5kKEFjY2VsZXJhdGVkSW1hZ2VCdWZmZXJT
aGFyZWFibGVCYWNrZW5kOjpjcmVhdGUoaW1hZ2VCdWZmZXItPnBhcmFtZXRlcnMoKSwgV1RGTW92
ZShoYW5kbGUpKSk7CiAgICAgZWxzZQotICAgICAgICBkb3duY2FzdDxVbmFjY2VsZXJhdGVkUmVt
b3RlSW1hZ2VCdWZmZXJQcm94eT4oKmltYWdlQnVmZmVyKS5jcmVhdGVCYWNrZW5kKGxvZ2ljYWxT
aXplLCBiYWNrZW5kU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1h
dCwgV1RGTW92ZShoYW5kbGUpKTsKKyAgICAgICAgaW1hZ2VCdWZmZXItPnNldEJhY2tlbmQoVW5h
Y2NlbGVyYXRlZEltYWdlQnVmZmVyU2hhcmVhYmxlQmFja2VuZDo6Y3JlYXRlKGltYWdlQnVmZmVy
LT5wYXJhbWV0ZXJzKCksIFdURk1vdmUoaGFuZGxlKSkpOwogfQogCiB2b2lkIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eTo6ZGlkRmx1c2goRGlzcGxheUxpc3Q6OkZsdXNoSWRlbnRpZmllciBm
bHVzaElkZW50aWZpZXIsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIpCiB7Ci0gICAgYXV0byBpbWFnZUJ1ZmZlciA9IG1fcmVtb3RlUmVzb3Vy
Y2VDYWNoZVByb3h5LmNhY2hlZEltYWdlQnVmZmVyKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cik7Ci0gICAgaWYgKCFpbWFnZUJ1ZmZlcikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKGlt
YWdlQnVmZmVyLT5pc0FjY2VsZXJhdGVkKCkpCi0gICAgICAgIGRvd25jYXN0PEFjY2VsZXJhdGVk
UmVtb3RlSW1hZ2VCdWZmZXJQcm94eT4oKmltYWdlQnVmZmVyKS5kaWRGbHVzaChmbHVzaElkZW50
aWZpZXIpOwotICAgIGVsc2UKLSAgICAgICAgZG93bmNhc3Q8VW5hY2NlbGVyYXRlZFJlbW90ZUlt
YWdlQnVmZmVyUHJveHk+KCppbWFnZUJ1ZmZlcikuZGlkRmx1c2goZmx1c2hJZGVudGlmaWVyKTsK
KyAgICBpZiAoYXV0byBpbWFnZUJ1ZmZlciA9IG1fcmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNh
Y2hlZEltYWdlQnVmZmVyKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikpCisgICAgICAgIGlt
YWdlQnVmZmVyLT5kaWRGbHVzaChmbHVzaElkZW50aWZpZXIpOwogfQogCiB2b2lkIFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eTo6dXBkYXRlUmV1c2FibGVIYW5kbGVzKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oCmluZGV4IDk1ZjhkMmI0MTJmYjkxZGY3N2M2OGYxMzZi
MDA3ODZmMDI0ZDdlMjYuLmY4MDVmYzFlZmY5Y2E1MTQ1MzU5Y2EyOTJiNTJkZGZlZWY4ZGE4MWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaApAQCAtODEsNyArODEsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBjYWNoZU5hdGl2ZUltYWdlKFdlYkNvcmU6Ok5hdGl2ZUltYWdl
Jik7CiAgICAgdm9pZCByZWxlYXNlUmVtb3RlUmVzb3VyY2UoV2ViQ29yZTo6UmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyKTsKIAotICAgIGJvb2wgd2FpdEZvckltYWdlQnVmZmVyQmFja2VuZFdh
c0NyZWF0ZWQoKTsKKyAgICBib29sIHdhaXRGb3JEaWRDcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQo
KTsKICAgICBib29sIHdhaXRGb3JEaWRGbHVzaCgpOwogCiBwcml2YXRlOgpAQCAtOTUsNyArOTUs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRlUmV1c2FibGVIYW5kbGVzKCk7CiAKICAgICAv
LyBNZXNzYWdlcyB0byBiZSByZWNlaXZlZC4KLSAgICB2b2lkIGltYWdlQnVmZmVyQmFja2VuZFdh
c0NyZWF0ZWQoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgV2Vi
Q29yZTo6SW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29y
ZTo6Q29sb3JTcGFjZSwgV2ViQ29yZTo6UGl4ZWxGb3JtYXQsIEltYWdlQnVmZmVyQmFja2VuZEhh
bmRsZSwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICB2b2lkIGRp
ZENyZWF0ZUltYWdlQnVmZmVyQmFja2VuZChJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUsIFdlYkNv
cmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAgdm9pZCBkaWRGbHVzaChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6Rmx1c2hJZGVudGlmaWVyLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIpOwogCiAgICAgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5IG1fcmVtb3Rl
UmVzb3VyY2VDYWNoZVByb3h5IHsgKnRoaXMgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lm1lc3Nh
Z2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHkubWVzc2FnZXMuaW4KaW5kZXggOTIwZGUzZjc3NzU0MDE2NDA1MWZm
NTFjZDIxYjUwNTU5ODU0Zjg0NC4uM2E1MzJkNWU0ZmY2MTZiZGIwN2VkZTdhOWE4M2U5MzEzN2U3
M2JmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9S
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkubWVz
c2FnZXMuaW4KQEAgLTIzLDcgKzIzLDcgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKIG1l
c3NhZ2VzIC0+IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSBOb3RSZWZDb3VudGVkIHsKLSAg
ICBJbWFnZUJ1ZmZlckJhY2tlbmRXYXNDcmVhdGVkKFdlYkNvcmU6OkZsb2F0U2l6ZSBsb2dpY2Fs
U2l6ZSwgV2ViQ29yZTo6SW50U2l6ZSBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxl
LCBXZWJDb3JlOjpDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGVudW06dWludDhfdCBXZWJDb3JlOjpQ
aXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgV2ViS2l0OjpJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUg
aGFuZGxlLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyKQorICAgIERpZENyZWF0ZUltYWdlQnVmZmVyQmFja2VuZChXZWJLaXQ6
OkltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBoYW5kbGUsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCiAgICAgRGlkRmx1c2go
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZsdXNoSWRlbnRpZmllciBmbHVzaElkZW50aWZpZXIsIFdl
YkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIpCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFy
ZWFibGVJT1N1cmZhY2VCYWNrZW5kLmNwcAppbmRleCA1MTYyN2M1ZWRkODkxYjk0ZjM2MzkxYzBh
YjRjMjgwOGM2ODBiZWZmLi5lNDEyZTdmNjNmNDA4N2YyMTc3MjQ2ODJlOTM1OGZiODU4OGZjNWMz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29h
L0ltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZUlP
U3VyZmFjZUJhY2tlbmQuY3BwCkBAIC0zNywxMyArMzcsMTMgQEAgdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChJbWFnZUJ1ZmZlclNoYXJlYWJs
ZUlPU3VyZmFjZUJhY2tlbmQpOwogCi1zdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJTaGFyZWFi
bGVJT1N1cmZhY2VCYWNrZW5kPiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQ6
OmNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29s
b3JTcGFjZSBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgY29uc3QgSG9zdFdp
bmRvdyopCitzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNr
ZW5kPiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZShjb25zdCBQ
YXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBjb25zdCBIb3N0V2luZG93KikKIHsKLSAgICBJbnRTaXpl
IGJhY2tlbmRTaXplID0gY2FsY3VsYXRlQmFja2VuZFNpemUoc2l6ZSwgcmVzb2x1dGlvblNjYWxl
KTsKKyAgICBJbnRTaXplIGJhY2tlbmRTaXplID0gY2FsY3VsYXRlQmFja2VuZFNpemUocGFyYW1l
dGVycy5sb2dpY2FsU2l6ZSwgcGFyYW1ldGVycy5yZXNvbHV0aW9uU2NhbGUpOwogICAgIGlmIChi
YWNrZW5kU2l6ZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgYXV0
byBzdXJmYWNlID0gSU9TdXJmYWNlOjpjcmVhdGUoYmFja2VuZFNpemUsIGJhY2tlbmRTaXplLCBj
YWNoZWRDR0NvbG9yU3BhY2UoY29sb3JTcGFjZSksIElPU3VyZmFjZTo6Zm9ybWF0Rm9yUGl4ZWxG
b3JtYXQocGl4ZWxGb3JtYXQpKTsKKyAgICBhdXRvIHN1cmZhY2UgPSBJT1N1cmZhY2U6OmNyZWF0
ZShiYWNrZW5kU2l6ZSwgYmFja2VuZFNpemUsIGNhY2hlZENHQ29sb3JTcGFjZShwYXJhbWV0ZXJz
LmNvbG9yU3BhY2UpLCBJT1N1cmZhY2U6OmZvcm1hdEZvclBpeGVsRm9ybWF0KHBhcmFtZXRlcnMu
cGl4ZWxGb3JtYXQpKTsKICAgICBpZiAoIXN1cmZhY2UpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCkBAIC01MywyMSArNTMsMjEgQEAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyU2hhcmVh
YmxlSU9TdXJmYWNlQmFja2VuZD4gSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmYKIAogICAgIENH
Q29udGV4dENsZWFyUmVjdChjZ0NvbnRleHQuZ2V0KCksIEZsb2F0UmVjdChGbG9hdFBvaW50Ojp6
ZXJvKCksIGJhY2tlbmRTaXplKSk7CiAKLSAgICByZXR1cm4gbWFrZVVuaXF1ZTxJbWFnZUJ1ZmZl
clNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQ+KHNpemUsIGJhY2tlbmRTaXplLCByZXNvbHV0aW9u
U2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0LCBXVEZNb3ZlKHN1cmZhY2UpKTsKKyAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQ+KHBh
cmFtZXRlcnMsIFdURk1vdmUoc3VyZmFjZSkpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VC
dWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kPiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3Vy
ZmFjZUJhY2tlbmQ6OmNyZWF0ZShjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBJ
bnRTaXplJiBpbnRlcm5hbFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBj
b2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFu
ZGxlIGhhbmRsZSkKK3N0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFj
ZUJhY2tlbmQ+IEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlKGNv
bnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBoYW5k
bGUpCiB7CiAgICAgaWYgKCFXVEY6OmhvbGRzX2FsdGVybmF0aXZlPE1hY2hTZW5kUmlnaHQ+KGhh
bmRsZSkpIHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIH0KIAotICAgIGF1dG8gc3VyZmFjZSA9IElPU3VyZmFjZTo6Y3JlYXRlRnJv
bVNlbmRSaWdodChXVEZNb3ZlKFdURjo6Z2V0PE1hY2hTZW5kUmlnaHQ+KGhhbmRsZSkpLCBjYWNo
ZWRDR0NvbG9yU3BhY2UoY29sb3JTcGFjZSkpOworICAgIGF1dG8gc3VyZmFjZSA9IElPU3VyZmFj
ZTo6Y3JlYXRlRnJvbVNlbmRSaWdodChXVEZNb3ZlKFdURjo6Z2V0PE1hY2hTZW5kUmlnaHQ+KGhh
bmRsZSkpLCBjYWNoZWRDR0NvbG9yU3BhY2UocGFyYW1ldGVycy5jb2xvclNwYWNlKSk7CiAgICAg
aWYgKCFzdXJmYWNlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBtYWtl
VW5pcXVlPEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZD4obG9naWNhbFNpemUs
IGludGVybmFsU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCwg
V1RGTW92ZShzdXJmYWNlKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8SW1hZ2VCdWZmZXJTaGFy
ZWFibGVJT1N1cmZhY2VCYWNrZW5kPihwYXJhbWV0ZXJzLCBXVEZNb3ZlKHN1cmZhY2UpKTsKIH0K
IAogSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNl
QmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKCkgY29uc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZm
ZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZC5o
CmluZGV4IGVkNTE2MjRlYjBhYTEwNTBlMTNiZmExN2VhMzRmMGZlM2MxZmZmNmQuLjMxODkyMTVm
MzNhY2FiNzkwMWZhY2I1MDVmMmE1YzEzOTlhMGRlNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1
cmZhY2VCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQuaApAQCAtMzksOCAr
MzksOCBAQCBjbGFzcyBJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQgOiBwdWJs
aWMgV2ViQ29yZTo6SW1hZ2VCdWZmZXJJT1N1cmZhYwogICAgIFdURl9NQUtFX0lTT19BTExPQ0FU
RUQoSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kKTsKICAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQpOwogcHVibGlj
OgotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZh
Y2VCYWNrZW5kPiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwg
Y29uc3QgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlLCBXZWJDb3Jl
OjpQaXhlbEZvcm1hdCwgY29uc3QgV2ViQ29yZTo6SG9zdFdpbmRvdyopOwotICAgIHN0YXRpYyBz
dGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kPiBjcmVh
dGUoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgV2ViQ29yZTo6
SW50U2l6ZSYgaW50ZXJuYWxTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNv
bG9yU3BhY2UsIFdlYkNvcmU6OlBpeGVsRm9ybWF0LCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUp
OworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZh
Y2VCYWNrZW5kPiBjcmVhdGUoY29uc3QgUGFyYW1ldGVycyYsIGNvbnN0IFdlYkNvcmU6Okhvc3RX
aW5kb3cqKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyU2hhcmVhYmxl
SU9TdXJmYWNlQmFja2VuZD4gY3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmLCBJbWFnZUJ1ZmZlckJh
Y2tlbmRIYW5kbGUpOwogCiAgICAgdXNpbmcgV2ViQ29yZTo6SW1hZ2VCdWZmZXJJT1N1cmZhY2VC
YWNrZW5kOjpJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414912</attachid>
            <date>2020-11-26 19:06:21 -0800</date>
            <delta_ts>2020-11-27 03:08:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219007-20201126190620.patch</filename>
            <type>text/plain</type>
            <size>105031</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwMTY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzIzYWI2YjRlNmM0NDFj
MDYzZWM1Mzg0YzZmOTA5NDdiZDFhNDY5ZC4uMWFiYWJjMzk1ZTFlNzg0OTcwMzNjOTJmMTE0ZGQw
YjZkMzg2YjFjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyOCBAQAorMjAyMC0xMS0yNiAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3Nd
IENsZWFuIHVwIHJlY3JlYXRpbmcgdGhlIEltYWdlQnVmZmVyQmFja2VuZCBiZWNhdXNlIG9mIEdQ
VSBjcmFzaGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjE5MDA3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVG8gYXZvaWQgcmVwZWF0aW5nIHRoZSBJbWFnZUJ1ZmZlciBjcmVhdGlvbiBwYXJhbWV0ZXJz
IGluIFJlbW90ZUltYWdlQnVmZmVyUHJveHkKKyAgICAgICAgYW5kIGluIEltYWdlQnVmZmVyQmFj
a2VuZCwgSW1hZ2VCdWZmZXJCYWNrZW5kOjpQYXJhbWV0ZXJzIHdpbGwgYmUgaW50cm9kdWNlZC4K
KyAgICAgICAgVGhpcyBzdHJ1Y3R1cmUgY29udGFpbnMgdGhlIHBhcmFtZXRlcnMgd2hpY2ggd2Vy
ZSBwYXNzZWQgYnkgdGhlIGNhbGxlciBpbgorICAgICAgICB0aGUgV2ViUHJvY2VzcyBhbmQgd2hp
Y2ggYXJlIHN1ZmZpY2llbnQgdG8gcmVjcmVhdGUgUmVtb3RlSW1hZ2VCdWZmZXIgaWYKKyAgICAg
ICAgdGhlIEdQVSBQcm9jZXNzIGNyYXNoZXMuIENvbmNyZXRlSW1hZ2VCdWZmZXIgd2lsbCBob2xk
IGEgc3RkOjp1bmlxdWVfcHRyCisgICAgICAgIHRvIHRoZSBQYXJhbWV0ZXJzIHN0cnVjdHVyZSB3
aGlsZSBJbWFnZUJ1ZmZlckJhY2tlbmQgd2lsbCBob2xkIGEgcmVmZXJlbmNlCisgICAgICAgIHRo
ZSBzYW1lIHN0cnVjdHVyZS4KKworICAgICAgICBJbiB0aGlzIHBhdGNoIGFsc28sIHRoZSBuYW1l
cyBmb3IgcmVwbGF5aW5nIGJhY2sgdGhlIERpc3BsYXlMaXN0IGludG8gYW4KKyAgICAgICAgSW1h
Z2VCdWZmZXJCYWNrZW5kIHdpbGwgdG8gYmUgY29uc2lzdGVudCBhbmQgbW9yZSBjbGVhci4gV2Ug
d2lsbCBhZG9wdCB0aGUKKyAgICAgICAgZm9sbG93aW5nIG5hbWluZyBzY2hlbWU6CisgICAgICAg
IC0tIHN1Ym1pdDogUmVwbGF5IGJhY2sgYSBEaXNwbGF5TGlzdCBvciBhIERyYXdpbmdDb250ZXh0
IGVpdGhlciBpbiB0aGUgV2ViCisgICAgICAgICAgIFByb2Nlc3Mgb3IgdGhyb3VnaCB0aGUgR1BV
IFByb2Nlc3MuIE5vIHJlcGx5IGZyb20gdGhlIEdQVSBQcm9jZXNzIGlzCisgICAgICAgICAgIG5l
ZWRlZCBpbiB0aGlzIGNhc2UuIE5vIHdhaXRpbmcgaW4gdGhlIFdlYiBQcm9jZXNzIHdpbGwgYmUg
aW5jdXJyZWQuCisgICAgICAgIC0tIGZsdXNoOiBTdWJtaXQgdGhlIERyYXdpbmdDb250ZXh0IGFu
ZCB3YWl0IHRpbGwgYWxsIHN1Ym1pdHRlZCB3b3JrIGhhcworICAgICAgICAgICBhY3R1YWxseSBi
ZWVuIGNvbXBsZXRlZC4gR1BVIFByb2Nlc3MgaGFzIHRvIHNlbmQgIkRpZEZsdXNoIiBtZXNzYWdl
IAorICAgICAgICAgICB3aGVuIGl0IGlzIGRvbmUgYW5kIHRoZSBXZWIgUHJvY2VzcyBoYXMgdG8g
d2FpdCB1bnRpbCBpdCBpcyByZWNlaXZlZC4KKworICAgICAgICBBbHNvIHJlcGxhY2UgYWxsIHRo
ZSBpbnN0YW5jZXMgb2YgJ2lzQWNjZWxlcmF0ZWQnIGJ5ICdyZW5kZXJpbmdNb2RlJy4gU28KKyAg
ICAgICAgbm8gbmVlZCB0byBjb252ZXJ0IG9uZSB0eXBlIHRvIHRoZSBvdGhlci4KKworICAgICAg
ICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJh
c2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6
cHJlcGFyZUZvckRpc3BsYXkpOgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3Jl
dGVJbWFnZUJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6Q29uY3JldGVJbWFnZUJ1ZmZlcjo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbmNyZXRlSW1hZ2VCdWZmZXI6OkNvbmNyZXRl
SW1hZ2VCdWZmZXIpOgorICAgICAgICAtLSBNYWtlIENvbmNyZXRlSW1hZ2VCdWZmZXIgb3duIGFu
IHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnM+LgorICAgICAg
ICAtLSBBZGQgbWV0aG9kcyB0byBzZXQgYW5kIGNsZWFyIHRoZSBiYWNrZW5kIG9mIGFuIEltYWdl
QnVmZmVyLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpzdWJtaXREcmF3aW5nQ29udGV4dCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6c3VibWl0RGlzcGxheUxpc3QpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmRpZEZsdXNoKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
QnVmZmVyOjpmbHVzaERyYXdpbmdDb250ZXh0QW5kQ29tbWl0KTogRGVsZXRlZC4KKyAgICAgICAg
LS0gRXhwb3NlIHRoZSBJbWFnZUJ1ZmZlckJhY2tlbmQgY3JlYXRpb24gcGFyYW1ldGVycyB0aHJv
dWdoIG1ldGhvZHMuCisgICAgICAgIC0tIEFkb3B0IHRoZSBuZXcgbmFtaW5nIHNjaGVtZSBmb3Ig
dGhlIHJlcGxheSBiYWNrIG1ldGhvZHMuCisgICAgICAgIC0tIEV4cG9zZSBzdWJtaXREcmF3aW5n
Q29udGV4dCgpIGFuZCBkaWRGbHVzaCgpIHNvIG5vIGNhc3RpbmcgaXMgbmVlZGVkCisgICAgICAg
ICAgIHdoZW4gY2FsbGluZyB0aGVzZSBmdW5jdGlvbnMgdGhyb3VnaCBSZW1vdGVJbWFnZUJ1ZmVy
UHJveHkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjpJbWFnZUJ1ZmZlckJh
Y2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjp0b0JHUkFEYXRh
IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQmFja2VuZDo6bWVtb3J5Q29zdCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OmJ5dGVzUGVyUm93IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQmFja2VuZDo6dG9CYWNrZW5kQ29v
cmRpbmF0ZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjps
b2dpY2FsU2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6
OnJlc29sdXRpb25TY2FsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckJh
Y2tlbmQ6OmNvbG9yU3BhY2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJC
YWNrZW5kOjpwaXhlbEZvcm1hdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZl
ckJhY2tlbmQ6OmxvZ2ljYWxSZWN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVm
ZmVyQmFja2VuZDo6YmFja2VuZFJlY3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VC
dWZmZXJCYWNrZW5kOjpiYWNrZW5kU2l6ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OmJhc2VUcmFuc2Zvcm0gY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAtLSBBZGQgdGhlIHN0cnVjdHVyZSBJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRl
cnMuIAorICAgICAgICAtLSBNYWtlIEltYWdlQnVmZmVyQmFja2VuZCBvd24gYSBjb25zdCByZWZl
cmVuY2UgdG8gdGhpcyBzdHJ1Y3R1cmUuCisgICAgICAgIC0tIE1ha2UgYmFja2VuZFNpemUoKSBh
IHB1cmUgdmlydHVhbCBtZXRob2QuCisgICAgICAgIC0tIERlbGV0ZSBiYXNlVHJhbnNmb3JtKCkg
c2luY2UgaXQgaXMgaW1wbGVtZW50ZWQgaW4gQ29uY3JldGVJbWFnZUJ1ZmZlci4KKworICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtSW1hZ2VCdWZmZXIuaDoKKyAgICAgICAgKGlz
VHlwZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWly
b0JhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQ6
OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1
ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kOjpJbWFnZUJ1ZmZlckNhaXJv
SW1hZ2VTdXJmYWNlQmFja2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNhaXJv
SW1hZ2VTdXJmYWNlQmFja2VuZDo6cGxhdGZvcm1UcmFuc2Zvcm1Db2xvclNwYWNlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNl
QmFja2VuZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVy
Q2Fpcm9TdXJmYWNlQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNh
aXJvU3VyZmFjZUJhY2tlbmQ6OkltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQ6OmJhY2tlbmRTaXpl
IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNh
aXJvU3VyZmFjZUJhY2tlbmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFn
ZUJ1ZmZlckNHQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNHQmFj
a2VuZDo6c2V0dXBDb250ZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVy
Q0dCYWNrZW5kOjpjb3B5SW1hZ2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZm
ZXJDR0JhY2tlbmQ6OnNpbmtJbnRvSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZm
ZXJDR0JhY2tlbmQ6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDR0JhY2tl
bmQ6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ0dCYWNrZW5k
Ojp0b0NGRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNHQmFja2Vu
ZDo6YmFzZVRyYW5zZm9ybSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JhY2tlbmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZCk6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y29weU5hdGl2
ZUltYWdlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZl
ckNHQml0bWFwQmFja2VuZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
QnVmZmVySU9TdXJmYWNlQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZl
cklPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZl
cklPU3VyZmFjZUJhY2tlbmQ6OkltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZCk6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmJhY2tlbmRTaXplIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6ZHJhd0Nv
bnN1bWluZyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1
cmZhY2VCYWNrZW5kLmg6CisgICAgICAgIC0tIENoYW5nZSB0aGUgY3JlYXRlKCkgbWV0aG9kcyB0
byB0YWtlIGEgIlBhcmFtZXRlcnMiIGFyZ3VtZW50LgorICAgICAgICAtLSBVc2UgdGhlIGJhY2tl
bmQgbWV0aG9kIHRvIGFjY2VzcyB0aGUgIlBhcmFtZXRlcnMiIHN0cnVjdHVyZS4KKworICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEZsdXNoSWRlbnRp
Zmllci5oOiBBZGRlZC4KKyAgICAgICAgTW92ZSBEaXNwbGF5TGlzdEZsdXNoSWRlbnRpZmllciB0
byBhIHNlcGFyYXRlIGZpbGUgc28gaXQgY2FuIGJlIGluY2x1ZGVkCisgICAgICAgIGluIEltYWdl
QnVmZmVyLmggd2l0aG91dCBoYXZpbmcgdG8gaW5jbHVkZSBEaXNwbGF5TGlzdC5oLgorCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SW1hZ2VCdWZm
ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJbWFnZUJ1ZmZlcjo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZm
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkltYWdlQnVmZmVyOjppbml0aWFs
RHJhd2luZ0NvbnRleHRDVE0pOiBEZWxldGVkLgorICAgICAgICAtLSBObyBuZWVkIHRvIHBhc3Mg
dGhlICdzaXplJyBhcmd1bWVudCB0d2ljZSBpbiB0aGUgJ2NyZWF0ZScgbWV0aG9kcyBzaW5jZQor
ICAgICAgICAgICB0aGUgc3RydWN0dXJlIFBhcmFtZXRlcnMgaGFzIHRvIGJlIHBhc3NlZCB0byB0
aGUgY29uc3RydWN0b3IgYW55d2F5LgorICAgICAgICAtLSBObyBuZWVkIHRvIGluaXRpYWxEcmF3
aW5nQ29udGV4dENUTSgpIHNpbmNlIGl0IGlzIGVxdWl2YWxlbnQgdG8gCisgICAgICAgICAgIGJh
c2VUcmFuc2Zvcm0oKS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1
ZmZlckRpcmVjdDJEQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckRp
cmVjdDJEQmFja2VuZDo6Y29weUltYWdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
QnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpkcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVm
ZmVyRGlyZWN0MkRCYWNrZW5kOjpkcmF3UGF0dGVybik6CisgICAgICAgIC0tIFVzZSB0aGUgYmFj
a2VuZCBtZXRob2QgdG8gYWNjZXNzIHRoZSAiUGFyYW1ldGVycyIgc3RydWN0dXJlLgorCiAyMDIw
LTExLTIyICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZD
XVtJbnRlZ3JhdGlvbl0gQ29udmVydCBzb21lIHJlbWFpbmluZyBJbmxpbmVCb3ggYWNjZXNzIHRv
IHVzZSBpbmxpbmUgaXRlcmF0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZTk3NzY5YmViNDBhZmM1ZjhkY2M0N2Ni
MTQxZjhjNTgwNTAzMzE0Yy4uZDVmNjA1N2Y4MDVhYTIyZDAxZmNhZWI4ZTZkNTgyMjkyZTUwODE5
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw5OCBAQAorMjAyMC0xMS0yNiAgU2FpZCBBYm91LUhhbGxh
d2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3NdIENsZWFuIHVwIHJl
Y3JlYXRpbmcgdGhlIEltYWdlQnVmZmVyQmFja2VuZCBiZWNhdXNlIG9mIEdQVSBjcmFzaGluZwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE5MDA3CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlcmUgaXMg
bm8gbmVlZCB0byBzdG9yZSB0aGUgYmFja2VuZCBwYXJhbWV0ZXJzIGluIFJlbW90ZUltYWdlQnVm
ZmVyUHJveHkuCisgICAgICAgIFRoZXNlIHBhcmFtZXRlcnMgY2FuIGJlIGFjY2Vzc2VkIGZyb20g
dGhlIGN1cnJlbnQgSW1hZ2VCdWZmZXJCYWNrZW5kIHZpYQorICAgICAgICB0aGUgSW1hZ2VCdWZm
ZXIgYmVmb3JlIHRoZSBiYWNrZW5kIGlzIGNsZWFyZWQuCisKKyAgICAgICAgUmVtb3ZlIHRoZSB0
cmFpdHMgZGVmaW5pdGlvbiBmb3IgUmVtb3RlSW1hZ2VCdWZmZXJQcm94eSB0eXBlcyBiZWNhdXNl
CisgICAgICAgIHRoZXkgYXJlIHdyb25nLiBBbGwgSW1hZ2VCdWZmZXJzIGhhdmUgdmFsaWQgcmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCkKKyAgICAgICAgcmVnYXJkbGVzcyB3aGV0aGVyIHRo
ZXkgYXJlIHJlbW90ZSBvciBub3QuIEltYWdlQnVmZmVyOjpzZXRCYWNrZW5kIGFuZAorICAgICAg
ICBJbWFnZUJ1ZmZlcjo6Y29tbWl0Rmx1c2hEaXNwbGF5TGlzdCgpIGFyZSBub3cgaW1wbGVtZW50
ZWQgaW4gV2ViQ29yZS4KKworICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1h
Z2VCdWZmZXIuaDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXI6OlJlbW90ZUlt
YWdlQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXI6OnN1Ym1pdERp
c3BsYXlMaXN0KTogRGVsZXRlZC4KKyAgICAgICAgc3VibWl0RGlzcGxheUxpc3QoKSBpcyBub3cg
YSB2aXJ0dWFsIG1ldGhvZCBvZiBJbWFnZUJ1ZmZlci4gU28gbWFrZSBpdAorICAgICAgICBwcml2
YXRlIGFuZCBpZ25vcmUgdGhlIHJldHVybiBvZiBEaXNwbGF5TGlzdDo6UmVwbGF5ZXI6OnJlcGxh
eSgpIHNpbmNlIAorICAgICAgICBubyBjYWxsZXIgaXMgdXNpbmcgaXQuCisKKyAgICAgICAgKiBH
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpkaWRDcmVhdGVJbWFnZUJ1ZmZlckJhY2tl
bmQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjphcHBseURpc3Bs
YXlMaXN0c0Zyb21IYW5kbGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kOjppbWFnZUJ1ZmZlckJhY2tlbmRXYXNDcmVhdGVkKTogRGVsZXRlZC4KKyAgICAgICAgKiBH
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaDoKKyAgICAgICAgUmVu
YW1lICdpbWFnZUJ1ZmZlckJhY2tlbmRXYXNDcmVhdGVkKCknIHRvICdkaWRDcmVhdGVJbWFnZUJ1
ZmZlckJhY2tlbmQoKScKKyAgICAgICAgdG8gYmUgY29uc2lzdGVudCB3aXRoICdkaWRGbHVzaCgp
Jy4KKworICAgICAgICAqIFNoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5n
U3RvcmUubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpkaXNw
bGF5KToKKyAgICAgICAgQ2FsbCB0aGUgZnVuY3Rpb24gd2l0aCB0aGUgbmV3IG5hbWUgYW5kIGRl
bGV0ZSB0aGUgRklYTUUgY29tbWVudC4KKworICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OkltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYktpdDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpJbWFnZUJ1ZmZlclNo
YXJlYWJsZUJpdG1hcEJhY2tlbmQpOgorICAgICAgICAoV2ViS2l0OjpJbWFnZUJ1ZmZlclNoYXJl
YWJsZUJpdG1hcEJhY2tlbmQ6OmJhY2tlbmRTaXplIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuaDoKKyAg
ICAgICAgVXNlIHRoZSBuZXcgc3RydWN0dXJlICdJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRl
cnMnIGFuZCBpbXBsZW1lbnQgdGhlCisgICAgICAgIHZpcnR1YWwgbWV0aG9kICdiYWNrZW5kU2l6
ZSgpJy4KKworICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1BsYXRmb3JtUmVtb3Rl
SW1hZ2VCdWZmZXJQcm94eS5oOgorICAgICAgICAoaXNUeXBlKTogRGVsZXRlZC4KKyAgICAgICAg
RGVsZXRlIHRoZSB3cm9uZyB0cmFpdHMuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUlt
YWdlQnVmZmVyUHJveHk6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVm
ZmVyUHJveHk6OlJlbW90ZUltYWdlQnVmZmVyUHJveHkpOgorICAgICAgICBVc2UgdGhlIG5ldyBz
dHJ1Y3R1cmUgJ0ltYWdlQnVmZmVyQmFja2VuZDo6UGFyYW1ldGVycycuCisKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6Y2xlYXJCYWNrZW5kKTogRGVsZXRlZC4KKyAg
ICAgICAgVGhpcyBpcyBub3cgaW1wbGVtZW50ZWQgaW4gQ29uY3JldGVJbWFnZUJ1ZmZlcjo6Y2xl
YXJCYWNrZW5kKCkuCisKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6
Y3JlYXRlQmFja2VuZCk6IERlbGV0ZWQuCisgICAgICAgIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eTo6ZGlkQ3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kKCkgY3JlYXRlcyB0aGUKKyAgICAgICAg
YmFja2VuZCBhbmQgQ29uY3JldGVJbWFnZUJ1ZmZlcjo6c2V0QmFja2VuZCgpIHNldHMgaXQuCisK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6ZGlkRmx1c2gpOiBEZWxl
dGVkLgorICAgICAgICBkaWRGbHVzaCgpIGlzIG5vdyB2aXJ0dWFsIHNvIGl0IGNhbiBiZSBwcml2
YXRlLgorCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyUHJveHk6OnNpemUgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlclByb3h5Ojpy
ZW5kZXJpbmdNb2RlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1h
Z2VCdWZmZXJQcm94eTo6Y29sb3JTcGFjZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUltYWdlQnVmZmVyUHJveHk6OnBpeGVsRm9ybWF0IGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgVGhlc2UgYXJlIGltcGxlbWVudGVkIGluIENvbmNyZXRlSW1hZ2VCdWZmZXIuCisK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6c3VibWl0RGlzcGxheUxp
c3QpOiBEZWxldGVkLgorICAgICAgICBzdWJtaXREaXNwbGF5TGlzdCgpIGlzIG5vdyB2aXJ0dWFs
LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5OjpyZWVzdGFibGlzaEdQVVByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Ojp3YWl0Rm9yRGlkQ3JlYXRlSW1hZ2VCdWZmZXJC
YWNrZW5kKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Ojpj
cmVhdGVJbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eTo6ZGlkQ3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpkaWRGbHVzaCk6CisgICAgICAgIChXZWJLaXQ6
OnJlY3JlYXRlSW1hZ2VCdWZmZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHk6OndhaXRGb3JJbWFnZUJ1ZmZlckJhY2tlbmRXYXNDcmVhdGVk
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
OjppbWFnZUJ1ZmZlckJhY2tlbmRXYXNDcmVhdGVkKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaDoKKyAgICAg
ICAgTm8gbmVlZCB0byBjYXN0IHRoZSBJbWFnZUJ1ZmZlciB0byBSZW1vdGVJbWFnZUJ1ZmZlclBy
b3h5IHNpbmNlIGFsbCAKKyAgICAgICAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5IG5lZWRz
IGNhbiBiZSBhY2Nlc3NlZCB0aHJvdWdoIHRoZSBiYXNlIGNsYXNzLgorCisgICAgICAgICogV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lm1lc3NhZ2Vz
LmluOgorICAgICAgICBSZW5hbWUgJ0ltYWdlQnVmZmVyQmFja2VuZFdhc0NyZWF0ZWQnIHRvICdE
aWRDcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQnCisgICAgICAgIHRvIGJlIGNvbnNpc3RlbnQgd2l0
aCAnRGlkRmx1c2gnLiBObyBuZWVkIHRvIHBhc3MgdGhlIGNyZWF0aW9uIHBhcmFtZXRlcnMKKyAg
ICAgICAgc2luY2UgdGhleSBzZXQgaW4gdGhlIENvbmNyZXRlSW1hZ2VCdWZmZXIuIE5vIG5lZWQg
dG8gcGFzcyB0aGUgYmFja2VuZFNpemUKKyAgICAgICAgc2luY2UgaXQgY2FuIGJlIHJldHJpZXZl
ZCB0aHJvdWdoIHRoZSBiYWNrZW5kIGl0c2VsZi4KKworICAgICAgICAqIFdlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZDo6
Y3JlYXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1
ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQuaDoKKyAgICAgICAgVXNlIHRoZSBuZXcgc3Ry
dWN0dXJlICdJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnMnLgorCiAyMDIwLTExLTIxICBT
aWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgogCiAgICAgICAgIEltcGxlbWVudCBhdWRp
byBjYXB0dXJlIGZvciBTcGVlY2hSZWNvZ25pdGlvbiBvbiBtYWNPUwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UK
aW5kZXggMzc4OWFhMzgzOTQwZDI1NzQxMjRiYzJmZjQzZTdlZWM0YWU5NTBkNS4uZGZhMjQ0ZmRj
ZDlkNzMzZDdjOTU4OTI3M2UwNjljN2MwMDRmZTdhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC0x
MjcwLDYgKzEyNzAsNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmgKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3R2x5cGhzUmVjb3JkZXIu
aAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdpbmdD
b250ZXh0LmgKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RG
bHVzaElkZW50aWZpZXIuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdEltYWdlQnVmZmVyLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RJdGVtQnVmZmVyLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RJdGVtVHlwZS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOTFkNzRjNzQ1MjI1OTc5MDY3OTFhZDFlOGEy
MTI4M2Q1NGM2MTE2OC4uZGQ1YWExYzE1MDZkZTE5NzkzMjY1NjczYjcxODdiMmFlNGVkNDQzOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtMjE4Nyw2ICsyMTg3LDcgQEAKIAkJNzI3QTdGM0EyNDA3OEI4NDAwNEQyOTMxIC8qIElt
YWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNzJCQUMzQUIyM0UxRTU0NDAwOEQ3NDFDIC8qIEltYWdlQnVmZmVy
SU9TdXJmYWNlQmFja2VuZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTcyOTlCQzY3MjNENkE1MzIwMENDNjg4MyAvKiBBbHBoYVByZW11bHRpcGxp
Y2F0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
Mjk5QkM2NDIzRDY4NkE2MDBDQzY4ODMgLyogQWxwaGFQcmVtdWx0aXBsaWNhdGlvbi5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcyOTlCQzY4MjNE
NkE1M0UwMENDNjg4MyAvKiBSZW5kZXJpbmdNb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Mjk5QkM2NjIzRDY4NkM2MDBDQzY4ODMgLyogUmVuZGVy
aW5nTW9kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCTcyOUM0NUU4MjU2RTA5MTkwMDA0MDdDRiAvKiBEaXNwbGF5TGlzdEZsdXNoSWRlbnRpZmll
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI5QzQ1
RTYyNTZFMDVGOTAwMDQwN0NGIC8qIERpc3BsYXlMaXN0Rmx1c2hJZGVudGlmaWVyLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzI5RDA1MzAyNTMx
NDI0MzAwNDIyMDk4IC8qIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI5RDA1MkUyNTMxM0UyNjAwNDIy
MDk4IC8qIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcyQTczQkVGMjQ1QTNGOTAwMDFDOUQwMyAv
KiBBbmltYXRpb25GcmFtZVJhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDcyMkE4MTVDMjM4RkQ1MDUwMEMwMDU4MyAvKiBBbmltYXRpb25GcmFtZVJh
dGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3
MkFCOUEyMTI1NUE5RkRFMDBFNkVCRjEgLyogTmF0aXZlSW1hZ2VSZWZlcmVuY2UuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyQUI5QTFGMjU1QTlFQTYw
MEU2RUJGMSAvKiBOYXRpdmVJbWFnZVJlZmVyZW5jZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMDA3Miw2ICsxMDA3Myw3IEBACiAJCTcyN0FG
RUQzMUEyRUE2QTAwMDA0NDJFOCAvKiBFWFRzUkdCLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBFWFRzUkdCLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI5OUJDNjQyM0Q2
ODZBNjAwQ0M2ODgzIC8qIEFscGhhUHJlbXVsdGlwbGljYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
QWxwaGFQcmVtdWx0aXBsaWNhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
Mjk5QkM2NjIzRDY4NkM2MDBDQzY4ODMgLyogUmVuZGVyaW5nTW9kZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBSZW5kZXJpbmdNb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyOUM0NUU2
MjU2RTA1RjkwMDA0MDdDRiAvKiBEaXNwbGF5TGlzdEZsdXNoSWRlbnRpZmllci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBEaXNwbGF5TGlzdEZsdXNoSWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3MjlEMDUyRTI1MzEzRTI2MDA0MjIwOTggLyogUmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MkFCOUExRjI1NUE5RUE2MDBFNkVCRjEg
LyogTmF0aXZlSW1hZ2VSZWZlcmVuY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmF0aXZlSW1hZ2VSZWZl
cmVuY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzJCQUMzQTQyM0UxNzMyNzAw
OEQ3NDFDIC8qIEltYWdlQnVmZmVyQmFja2VuZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMTc3OTAsNiArMTc3OTIsNyBAQAogCQkJCTFDQUY1NkRFMjUzMDI0NUEwMDE3
QjQ3MiAvKiBEaXNwbGF5TGlzdERyYXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0LmNwcCAqLywKIAkJ
CQk1NUMwQTI5NTIzRkUyQ0UwMDBGMkNCOTMgLyogRGlzcGxheUxpc3REcmF3aW5nQ29udGV4dC5j
cHAgKi8sCiAJCQkJNzJFQTA5RjkyM0ZDQ0M2QTAwODUwNEE1IC8qIERpc3BsYXlMaXN0RHJhd2lu
Z0NvbnRleHQuaCAqLywKKwkJCQk3MjlDNDVFNjI1NkUwNUY5MDAwNDA3Q0YgLyogRGlzcGxheUxp
c3RGbHVzaElkZW50aWZpZXIuaCAqLywKIAkJCQk3MkVBMDlGNzIzRkNDQjNEMDA4NTA0QTUgLyog
RGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oICovLAogCQkJCUY0MjJCOEI2MjUzRjcwNjUwMDRFNzdF
OCAvKiBEaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwICovLAogCQkJCUY0MjJCOEI1MjUzRjcwNjUw
MDRFNzdFOCAvKiBEaXNwbGF5TGlzdEl0ZW1CdWZmZXIuaCAqLywKQEAgLTE4MDIyLDcgKzE4MDI1
LDYgQEAKIAkJCQlBMUNDNTY0QTFGNDYxM0JCMDBBNDU1NUIgLyogUGF5bWVudFJlcXVlc3QgKi8s
CiAJCQkJMUQwMDI2OUEyMzc0QjlGODAwQ0E2Q0RGIC8qIFBpY3R1cmVJblBpY3R1cmUgKi8sCiAJ
CQkJQTlEMjQ3RjkwRDc1N0U0MTAwRkRGOTU5IC8qIFBsdWdpbnMgKi8sCi0JCQkJODlGNjBCMTcx
NTdGNkEwMjAwNzVFMTU3IC8qIFF1b3RhICovLAogCQkJCUJDOTg1NDQ2MENEM0RBNUYwMDA2OUJD
MSAvKiBSYW5nZXMgKi8sCiAJCQkJQ0Q4QzZDMjQyMkZEREE2NDAwQTcyMEFCIC8qIFJlbW90ZVBs
YXliYWNrICovLAogCQkJCTUxODJDMjRDMUYzMTQyMDkwMDU5QkE3QyAvKiBTZXJ2aWNlV29ya2Vy
cyAqLywKQEAgLTMxNjc0LDYgKzMxNjc2LDcgQEAKIAkJCQkwRkU1RkJEMzFDM0RENTFFMDAwN0Ey
Q0EgLyogRGlzcGxheUxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTFDQUY1NkRCMjUzMDFBQzgw
MDE3QjQ3MiAvKiBEaXNwbGF5TGlzdERyYXdHbHlwaHNSZWNvcmRlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNTVBRDA5NDAyNDA4OTY0MDAwREU0RDJGIC8qIERpc3BsYXlMaXN0RHJhd2luZ0NvbnRl
eHQuaCBpbiBIZWFkZXJzICovLAorCQkJCTcyOUM0NUU4MjU2RTA5MTkwMDA0MDdDRiAvKiBEaXNw
bGF5TGlzdEZsdXNoSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTVBRDA5M0UyNDA4
OTYzNTAwREU0RDJGIC8qIERpc3BsYXlMaXN0SW1hZ2VCdWZmZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCUY0RDQwQkM5MjU1NDYzQkYwMDcyMTM0OSAvKiBEaXNwbGF5TGlzdEl0ZW1CdWZmZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGRTVGQkQ1MUMzREQ1MUUwMDA3QTJDQSAvKiBEaXNwbGF5TGlz
dEl0ZW1zLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKaW5kZXggYTM5NTRj
N2Y1ZTQyYzcyZjQxYTM4ODg5NDY1YjMxMjQyMmEwNDZmMi4uZWQxYWIwNWZkMGE2NTQzNTNlYmZk
MTA4ODI3NjZjYTk1MDE4OWVhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKQEAgLTIwNDIsNyAr
MjA0Miw3IEBAIEdyYXBoaWNzQ29udGV4dCogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6
ZHJhd2luZ0NvbnRleHQoKSBjb25zdAogdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNl
OjpwcmVwYXJlRm9yRGlzcGxheSgpCiB7CiAgICAgaWYgKGF1dG8gYnVmZmVyID0gY2FudmFzQmFz
ZSgpLmJ1ZmZlcigpKQotICAgICAgICBidWZmZXItPmZsdXNoRHJhd2luZ0NvbnRleHRBbmRDb21t
aXQoKTsKKyAgICAgICAgYnVmZmVyLT5zdWJtaXREcmF3aW5nQ29udGV4dCgpOwogfQogCiBib29s
IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6Om5lZWRzUHJlcGFyYXRpb25Gb3JEaXNwbGF5
KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nv
bmNyZXRlSW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nv
bmNyZXRlSW1hZ2VCdWZmZXIuaAppbmRleCA4MjQyOTkwMDJlZTY2MGYwYmFlM2YxNjNhZDFjODli
MDNkNGRkYTc5Li4xZTYyYjU5MDBjZmVjNDgxMTE5NmI0YzZhYWY1YmQyNTRlYzE1ZjI3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVm
ZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJbWFn
ZUJ1ZmZlci5oCkBAIC0zNiwzMCArMzYsNDEgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEltYWdlQnVmZmVyVHlwZSA9IENvbmNyZXRlSW1hZ2VCdWZmZXIsIHR5cGVuYW1lLi4uIEFy
Z3VtZW50cz4KICAgICBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyVHlwZT4gY3JlYXRlKGNvbnN0
IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9y
U3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBjb25zdCBIb3N0V2luZG93KiBob3N0V2lu
ZG93LCBBcmd1bWVudHMmJi4uLiBhcmd1bWVudHMpCiAgICAgewotICAgICAgICBhdXRvIGJhY2tl
bmQgPSBCYWNrZW5kVHlwZTo6Y3JlYXRlKHNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFj
ZSwgcGl4ZWxGb3JtYXQsIGhvc3RXaW5kb3cpOworICAgICAgICBhdXRvIHBhcmFtZXRlcnMgPSBz
dGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJCYWNrZW5kOjpQYXJhbWV0ZXJzPihuZXcgSW1hZ2VC
dWZmZXJCYWNrZW5kOjpQYXJhbWV0ZXJzKHsgc2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNw
YWNlLCBwaXhlbEZvcm1hdCB9KSk7CisgICAgICAgIGF1dG8gYmFja2VuZCA9IEJhY2tlbmRUeXBl
OjpjcmVhdGUoKnBhcmFtZXRlcnMsIGhvc3RXaW5kb3cpOwogICAgICAgICBpZiAoIWJhY2tlbmQp
CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBJbWFnZUJ1ZmZlclR5cGUoV1RGTW92ZShiYWNrZW5kKSwgc3RkOjpmb3J3YXJkPEFyZ3VtZW50
cz4oYXJndW1lbnRzKS4uLikpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEltYWdlQnVm
ZmVyVHlwZShXVEZNb3ZlKHBhcmFtZXRlcnMpLCBXVEZNb3ZlKGJhY2tlbmQpLCBzdGQ6OmZvcndh
cmQ8QXJndW1lbnRzPihhcmd1bWVudHMpLi4uKSk7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgSW1hZ2VCdWZmZXJUeXBlID0gQ29uY3JldGVJbWFnZUJ1ZmZlciwgdHlwZW5hbWUuLi4g
QXJndW1lbnRzPgogICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VCdWZmZXJUeXBlPiBjcmVhdGUoY29u
c3QgRmxvYXRTaXplJiBzaXplLCBjb25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIEFyZ3Vt
ZW50cyYmLi4uIGFyZ3VtZW50cykKICAgICB7Ci0gICAgICAgIGF1dG8gYmFja2VuZCA9IEJhY2tl
bmRUeXBlOjpjcmVhdGUoc2l6ZSwgY29udGV4dCk7CisgICAgICAgIGF1dG8gcGFyYW1ldGVycyA9
IHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnM+KG5ldyBJbWFn
ZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnMoeyBzaXplLCAxLCBDb2xvclNwYWNlOjpTUkdCLCBQ
aXhlbEZvcm1hdDo6QkdSQTggfSkpOworICAgICAgICBhdXRvIGJhY2tlbmQgPSBCYWNrZW5kVHlw
ZTo6Y3JlYXRlKCpwYXJhbWV0ZXJzLCBjb250ZXh0KTsKICAgICAgICAgaWYgKCFiYWNrZW5kKQog
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
SW1hZ2VCdWZmZXJUeXBlKFdURk1vdmUoYmFja2VuZCksIHN0ZDo6Zm9yd2FyZDxBcmd1bWVudHM+
KGFyZ3VtZW50cykuLi4pKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbWFnZUJ1ZmZl
clR5cGUoV1RGTW92ZShwYXJhbWV0ZXJzKSwgV1RGTW92ZShiYWNrZW5kKSwgc3RkOjpmb3J3YXJk
PEFyZ3VtZW50cz4oYXJndW1lbnRzKS4uLikpOwogICAgIH0KIAotICAgIGJvb2wgaXNBY2NlbGVy
YXRlZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEJhY2tlbmRUeXBlOjppc0FjY2VsZXJhdGVk
OyB9CisgICAgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gQmFja2VuZFR5cGU6OnJlbmRlcmluZ01vZGU7IH0KIAogcHJvdGVjdGVkOgotICAgIENv
bmNyZXRlSW1hZ2VCdWZmZXIoc3RkOjp1bmlxdWVfcHRyPEJhY2tlbmRUeXBlPiYmIGJhY2tlbmQg
PSBudWxscHRyLCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyID0gUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyOjpnZW5lcmF0ZSgpKQotICAg
ICAgICA6IG1fYmFja2VuZChXVEZNb3ZlKGJhY2tlbmQpKQorICAgIENvbmNyZXRlSW1hZ2VCdWZm
ZXIoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQmFja2VuZDo6UGFyYW1ldGVycz4mJiBwYXJh
bWV0ZXJzLCBzdGQ6OnVuaXF1ZV9wdHI8QmFja2VuZFR5cGU+JiYgYmFja2VuZCA9IG51bGxwdHIs
IFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIg
PSBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI6OmdlbmVyYXRlKCkpCisgICAgICAgIDogbV9w
YXJhbWV0ZXJzKFdURk1vdmUocGFyYW1ldGVycykpCisgICAgICAgICwgbV9iYWNrZW5kKFdURk1v
dmUoYmFja2VuZCkpCiAgICAgICAgICwgbV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIocmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogICAgIHsKICAgICB9CiAKKyAgICB2b2lkIHNldEJh
Y2tlbmQoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQmFja2VuZD4mJiBiYWNrZW5kKSBvdmVy
cmlkZQorICAgIHsKKyAgICAgICAgQVNTRVJUKCFtX2JhY2tlbmQpOworICAgICAgICBtX2JhY2tl
bmQgPSBzdGQ6OnVuaXF1ZV9wdHI8QmFja2VuZFR5cGU+IHsgc3RhdGljX2Nhc3Q8QmFja2VuZFR5
cGUqPihiYWNrZW5kLnJlbGVhc2UoKSkgfTsKKyAgICB9CisKKyAgICB2b2lkIGNsZWFyQmFja2Vu
ZCgpIG92ZXJyaWRlIHsgbV9iYWNrZW5kID0gbnVsbHB0cjsgfQorCiAgICAgdmlydHVhbCBCYWNr
ZW5kVHlwZSogZW5zdXJlQmFja2VuZENyZWF0ZWQoKSBjb25zdCB7IHJldHVybiBtX2JhY2tlbmQu
Z2V0KCk7IH0KIAogICAgIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3JlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcjsgfQpAQCAtNzgsMTkgKzg5LDExIEBAIHByb3RlY3RlZDoKICAgICAgICAg
fQogICAgIH0KIAotICAgIEFmZmluZVRyYW5zZm9ybSBiYXNlVHJhbnNmb3JtKCkgY29uc3Qgb3Zl
cnJpZGUKLSAgICB7Ci0gICAgICAgIGlmIChhdXRvKiBiYWNrZW5kID0gZW5zdXJlQmFja2VuZENy
ZWF0ZWQoKSkKLSAgICAgICAgICAgIHJldHVybiBiYWNrZW5kLT5iYXNlVHJhbnNmb3JtKCk7Ci0g
ICAgICAgIHJldHVybiB7IH07Ci0gICAgfQotCi0gICAgSW50U2l6ZSBsb2dpY2FsU2l6ZSgpIGNv
bnN0IG92ZXJyaWRlCi0gICAgewotICAgICAgICBpZiAoYXV0byogYmFja2VuZCA9IGVuc3VyZUJh
Y2tlbmRDcmVhdGVkKCkpCi0gICAgICAgICAgICByZXR1cm4gYmFja2VuZC0+bG9naWNhbFNpemUo
KTsKLSAgICAgICAgcmV0dXJuIHsgfTsKLSAgICB9CisgICAgSW50U2l6ZSBsb2dpY2FsU2l6ZSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEludFNpemUobV9wYXJhbWV0ZXJzLT5sb2dpY2FsU2l6
ZSk7IH0KKyAgICBmbG9hdCByZXNvbHV0aW9uU2NhbGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBtX3BhcmFtZXRlcnMtPnJlc29sdXRpb25TY2FsZTsgfQorICAgIENvbG9yU3BhY2UgY29sb3JT
cGFjZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcGFyYW1ldGVycy0+Y29sb3JTcGFjZTsg
fQorICAgIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
bV9wYXJhbWV0ZXJzLT5waXhlbEZvcm1hdDsgfQorICAgIGNvbnN0IEltYWdlQnVmZmVyQmFja2Vu
ZDo6UGFyYW1ldGVycyYgcGFyYW1ldGVycygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICptX3Bh
cmFtZXRlcnM7IH0KIAogICAgIEludFNpemUgYmFja2VuZFNpemUoKSBjb25zdCBvdmVycmlkZQog
ICAgIHsKQEAgLTk5LDExICsxMDIsMTEgQEAgcHJvdGVjdGVkOgogICAgICAgICByZXR1cm4geyB9
OwogICAgIH0KIAotICAgIGZsb2F0IHJlc29sdXRpb25TY2FsZSgpIGNvbnN0IG92ZXJyaWRlCisg
ICAgQWZmaW5lVHJhbnNmb3JtIGJhc2VUcmFuc2Zvcm0oKSBjb25zdCBvdmVycmlkZQogICAgIHsK
LSAgICAgICAgaWYgKGF1dG8qIGJhY2tlbmQgPSBlbnN1cmVCYWNrZW5kQ3JlYXRlZCgpKQotICAg
ICAgICAgICAgcmV0dXJuIGJhY2tlbmQtPnJlc29sdXRpb25TY2FsZSgpOwotICAgICAgICByZXR1
cm4gMTsKKyAgICAgICAgaWYgKEJhY2tlbmRUeXBlOjppc09yaWdpbkF0VXBwZXJMZWZ0Q29ybmVy
KQorICAgICAgICAgICAgcmV0dXJuIEFmZmluZVRyYW5zZm9ybSgxLCAwLCAwLCAtMSwgMCwgbG9n
aWNhbFNpemUoKS5oZWlnaHQoKSk7CisgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCiAgICAg
c2l6ZV90IG1lbW9yeUNvc3QoKSBjb25zdCBvdmVycmlkZQpAQCAtMjkxLDYgKzI5NCw3IEBAIHBy
b3RlY3RlZDoKICAgICAgICAgICAgIGJhY2tlbmQtPnJlbGVhc2VCdWZmZXJUb1Bvb2woKTsKICAg
ICB9CiAKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJCYWNrZW5kOjpQYXJhbWV0ZXJz
PiBtX3BhcmFtZXRlcnM7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEJhY2tlbmRUeXBlPiBtX2JhY2tl
bmQ7CiAgICAgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIG1fcmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZUJ1ZmZlci5oCmluZGV4IDYyYTNmN2ZmYTM3NzhhOGMwMTM5MDE2MjU0Mzc1M2FhN2JkMmMyMWQu
Ljc3ZDkyNjE2M2Q5NjQ2ZTI5NWZkMDRiN2MxMmQ0OWY3NTRjOWI5NmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaApAQCAtMjcsNiArMjcsNyBA
QAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkRpc3BsYXlMaXN0Rmx1c2hJZGVudGlmaWVy
LmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXJCYWNrZW5kLmgiCiAjaW5jbHVkZSAiUmVuZGVyaW5n
TW9kZS5oIgogI2luY2x1ZGUgIlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5oIgpAQCAtNjAs
MTAgKzYxLDEzIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgRmxvYXRSZWN0IGNsYW1wZWRSZWN0KGNv
bnN0IEZsb2F0UmVjdCYpOwogCiAgICAgc3RhdGljIEludFNpemUgY29tcGF0aWJsZUJ1ZmZlclNp
emUoY29uc3QgRmxvYXRTaXplJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0Jik7Ci0gICAgCisKICAg
ICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5JbWFnZUJ1ZmZlcigpID0gZGVmYXVsdDsKIAotICAg
IHZpcnR1YWwgYm9vbCBpc0FjY2VsZXJhdGVkKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBzZXRCYWNrZW5kKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckJhY2tlbmQ+JiYpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJCYWNrZW5kKCkgPSAwOworCisgICAgdmlydHVhbCBSZW5k
ZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCkgY29uc3Qg
eyByZXR1cm4geyB9OyB9CiAgICAgCiAgICAgdmlydHVhbCBHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQoKSBjb25zdCA9IDA7CkBAIC03MiwxMiArNzYsMTggQEAgcHVibGljOgogICAgIHZpcnR1YWwg
RGlzcGxheUxpc3Q6OkRyYXdpbmdDb250ZXh0KiBkcmF3aW5nQ29udGV4dCgpIHsgcmV0dXJuIG51
bGxwdHI7IH0KICAgICB2aXJ0dWFsIGJvb2wgcHJlZmVyc1ByZXBhcmF0aW9uRm9yRGlzcGxheSgp
IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCB2b2lkIGZsdXNoRHJhd2luZ0NvbnRleHQo
KSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZmx1c2hEcmF3aW5nQ29udGV4dEFuZENvbW1pdCgpIHsg
fQorICAgIHZpcnR1YWwgdm9pZCBzdWJtaXREcmF3aW5nQ29udGV4dCgpIHsgfQorICAgIHZpcnR1
YWwgdm9pZCBzdWJtaXREaXNwbGF5TGlzdChjb25zdCBEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Qm
KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmx1c2goRGlzcGxheUxpc3Q6OkZsdXNoSWRlbnRp
ZmllcikgeyB9CiAKLSAgICB2aXJ0dWFsIEFmZmluZVRyYW5zZm9ybSBiYXNlVHJhbnNmb3JtKCkg
Y29uc3QgPSAwOwogICAgIHZpcnR1YWwgSW50U2l6ZSBsb2dpY2FsU2l6ZSgpIGNvbnN0ID0gMDsK
LSAgICB2aXJ0dWFsIEludFNpemUgYmFja2VuZFNpemUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVh
bCBmbG9hdCByZXNvbHV0aW9uU2NhbGUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBDb2xvclNw
YWNlIGNvbG9yU3BhY2UoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBQaXhlbEZvcm1hdCBwaXhl
bEZvcm1hdCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGNvbnN0IEltYWdlQnVmZmVyQmFja2Vu
ZDo6UGFyYW1ldGVycyYgcGFyYW1ldGVycygpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgSW50
U2l6ZSBiYWNrZW5kU2l6ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEFmZmluZVRyYW5zZm9y
bSBiYXNlVHJhbnNmb3JtKCkgY29uc3QgPSAwOwogCiAgICAgdmlydHVhbCBzaXplX3QgbWVtb3J5
Q29zdCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHNpemVfdCBleHRlcm5hbE1lbW9yeUNvc3Qo
KSBjb25zdCA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZUJ1ZmZlckJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmNwcAppbmRleCA3ZjBmZTllNmQ5NjZlNzRiNDVmODVhYWQw
ZTNiMmZiODRkOTQ1MGI5Li45Mzk0ZTdiZmY0MjliYzIxZWZjZGYzYjE0MDExMWYxYWUyY2E5NDRk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZl
ckJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
QnVmZmVyQmFja2VuZC5jcHAKQEAgLTMxLDEyICszMSw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotSW1hZ2VCdWZmZXJCYWNrZW5kOjpJbWFnZUJ1ZmZlckJhY2tlbmQoY29uc3QgRmxvYXRT
aXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29s
dXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1h
dCkKLSAgICA6IG1fbG9naWNhbFNpemUobG9naWNhbFNpemUpCi0gICAgLCBtX2JhY2tlbmRTaXpl
KGJhY2tlbmRTaXplKQotICAgICwgbV9yZXNvbHV0aW9uU2NhbGUocmVzb2x1dGlvblNjYWxlKQot
ICAgICwgbV9jb2xvclNwYWNlKGNvbG9yU3BhY2UpCi0gICAgLCBtX3BpeGVsRm9ybWF0KHBpeGVs
Rm9ybWF0KQorSW1hZ2VCdWZmZXJCYWNrZW5kOjpJbWFnZUJ1ZmZlckJhY2tlbmQoY29uc3QgUGFy
YW1ldGVycyYgcGFyYW1ldGVycykKKyAgICA6IG1fcGFyYW1ldGVycyhwYXJhbWV0ZXJzKQogewog
fQogCkBAIC05OSwxNSArOTUsMTUgQEAgdm9pZCBJbWFnZUJ1ZmZlckJhY2tlbmQ6OmNvbnZlcnRU
b0x1bWluYW5jZU1hc2soKQogCiBWZWN0b3I8dWludDhfdD4gSW1hZ2VCdWZmZXJCYWNrZW5kOjp0
b0JHUkFEYXRhKHZvaWQqIGRhdGEpIGNvbnN0CiB7Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3Vs
dCg0ICogbV9sb2dpY2FsU2l6ZS5hcmVhKCkudW5zYWZlR2V0KCkpOwotICAgIHNpemVfdCBkZXN0
Qnl0ZXNQZXJSb3cgPSBtX2xvZ2ljYWxTaXplLndpZHRoKCkgKiA0OworICAgIFZlY3Rvcjx1aW50
OF90PiByZXN1bHQoNCAqIGxvZ2ljYWxTaXplKCkuYXJlYSgpLnVuc2FmZUdldCgpKTsKKyAgICBz
aXplX3QgZGVzdEJ5dGVzUGVyUm93ID0gbG9naWNhbFNpemUoKS53aWR0aCgpICogNDsKICAgICBz
aXplX3Qgc3JjQnl0ZXNQZXJSb3cgPSBieXRlc1BlclJvdygpOwogCiAgICAgdWludDhfdCogc3Jj
Um93cyA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGRhdGEpOwogCiAgICAgY29weUltYWdl
UGl4ZWxzKAogICAgICAgICBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkLCBw
aXhlbEZvcm1hdCgpLCBzcmNCeXRlc1BlclJvdywgc3JjUm93cywKLSAgICAgICAgQWxwaGFQcmVt
dWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6QkdSQTgsIGRlc3RC
eXRlc1BlclJvdywgcmVzdWx0LmRhdGEoKSwgbV9sb2dpY2FsU2l6ZSk7CisgICAgICAgIEFscGhh
UHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OkJHUkE4LCBk
ZXN0Qnl0ZXNQZXJSb3csIHJlc3VsdC5kYXRhKCksIGxvZ2ljYWxTaXplKCkpOwogCiAgICAgcmV0
dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmgKaW5kZXggNTgwNjcxNWE3YjJjODc1NzY5MDJhNzczNTg0
ZGYxODA1ODI1MTAwZi4uNGE2NTQ3OGY4YjY0MGM2ZWQxMWYzNWYxNzY5OTAyODgxYjM4ODUxMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJC
YWNrZW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZm
ZXJCYWNrZW5kLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJJbWFnZVBhaW50aW5nT3B0
aW9ucy5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUxheWVyLmgi
CisjaW5jbHVkZSAiUmVuZGVyaW5nTW9kZS5oIgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKQEAgLTc3LDYgKzc4LDEzIEBAIHB1YmxpYzoKIAogY2xh
c3MgSW1hZ2VCdWZmZXJCYWNrZW5kIHsKIHB1YmxpYzoKKyAgICBzdHJ1Y3QgUGFyYW1ldGVycyB7
CisgICAgICAgIEZsb2F0U2l6ZSBsb2dpY2FsU2l6ZTsKKyAgICAgICAgZmxvYXQgcmVzb2x1dGlv
blNjYWxlOworICAgICAgICBDb2xvclNwYWNlIGNvbG9yU3BhY2U7CisgICAgICAgIFBpeGVsRm9y
bWF0IHBpeGVsRm9ybWF0OworICAgIH07CisKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5J
bWFnZUJ1ZmZlckJhY2tlbmQoKSA9IGRlZmF1bHQ7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgSW50U2l6ZSBjYWxjdWxhdGVCYWNrZW5kU2l6ZShjb25zdCBGbG9hdFNpemUmLCBmbG9hdCBy
ZXNvbHV0aW9uU2NhbGUpOwpAQCAtODQsMTQgKzkyLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBm
bHVzaENvbnRleHQoKSB7IH0KIAotICAgIEludFNpemUgbG9naWNhbFNpemUoKSBjb25zdCB7IHJl
dHVybiBtX2xvZ2ljYWxTaXplOyB9Ci0gICAgSW50U2l6ZSBiYWNrZW5kU2l6ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fYmFja2VuZFNpemU7IH0KLSAgICBmbG9hdCByZXNvbHV0aW9uU2NhbGUoKSBjb25z
dCB7IHJldHVybiBtX3Jlc29sdXRpb25TY2FsZTsgfQotICAgIENvbG9yU3BhY2UgY29sb3JTcGFj
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29sb3JTcGFjZTsgfQotICAgIFBpeGVsRm9ybWF0IHBpeGVs
Rm9ybWF0KCkgY29uc3QgeyByZXR1cm4gbV9waXhlbEZvcm1hdDsgfQorICAgIHZpcnR1YWwgSW50
U2l6ZSBiYWNrZW5kU2l6ZSgpIGNvbnN0ID0gMDsKIAotICAgIHZpcnR1YWwgQWZmaW5lVHJhbnNm
b3JtIGJhc2VUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBBZmZpbmVUcmFuc2Zvcm0oKTsgfQot
ICAgIHZpcnR1YWwgc2l6ZV90IG1lbW9yeUNvc3QoKSBjb25zdCB7IHJldHVybiA0ICogbV9iYWNr
ZW5kU2l6ZS5hcmVhKCkudW5zYWZlR2V0KCk7IH0KKyAgICB2aXJ0dWFsIHNpemVfdCBtZW1vcnlD
b3N0KCkgY29uc3QgeyByZXR1cm4gNCAqIGJhY2tlbmRTaXplKCkuYXJlYSgpLnVuc2FmZUdldCgp
OyB9CiAgICAgdmlydHVhbCBzaXplX3QgZXh0ZXJuYWxNZW1vcnlDb3N0KCkgY29uc3QgeyByZXR1
cm4gMDsgfQogCiAgICAgdmlydHVhbCBSZWZQdHI8TmF0aXZlSW1hZ2U+IGNvcHlOYXRpdmVJbWFn
ZShCYWNraW5nU3RvcmVDb3B5KSBjb25zdCA9IDA7CkBAIC0xMjcsMjQgKzEzMCwyOSBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8VGhyZWFkU2FmZUltYWdlQnVmZmVyRmx1
c2hlcj4gY3JlYXRlRmx1c2hlcigpIHsgcmV0dXJuIG51bGxwdHI7IH0KICAgICAKICAgICBzdGF0
aWMgY29uc3RleHByIGJvb2wgaXNPcmlnaW5BdFVwcGVyTGVmdENvcm5lciA9IGZhbHNlOwotICAg
IHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0FjY2VsZXJhdGVkID0gZmFsc2U7CisgICAgc3RhdGlj
IGNvbnN0ZXhwciBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUgPSBSZW5kZXJpbmdNb2RlOjpV
bmFjY2VsZXJhdGVkOwogCiBwcm90ZWN0ZWQ6Ci0gICAgV0VCQ09SRV9FWFBPUlQgSW1hZ2VCdWZm
ZXJCYWNrZW5kKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEludFNpemUmIGJh
Y2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UsIFBpeGVsRm9ybWF0
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBJbWFnZUJ1ZmZlckJhY2tlbmQoY29uc3QgUGFyYW1ldGVy
cyYpOwogCi0gICAgdmlydHVhbCB1bnNpZ25lZCBieXRlc1BlclJvdygpIGNvbnN0IHsgcmV0dXJu
IDQgKiBtX2JhY2tlbmRTaXplLndpZHRoKCk7IH0KKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGJ5dGVz
UGVyUm93KCkgY29uc3QgeyByZXR1cm4gNCAqIGJhY2tlbmRTaXplKCkud2lkdGgoKTsgfQogCiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICBUIHRvQmFja2VuZENvb3JkaW5hdGVzKFQgdCkg
Y29uc3QKICAgICB7CiAgICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPFQsIEludFBv
aW50Pjo6dmFsdWUgfHwgc3RkOjppc19zYW1lPFQsIEludFNpemU+Ojp2YWx1ZSB8fCBzdGQ6Omlz
X3NhbWU8VCwgSW50UmVjdD46OnZhbHVlKTsKLSAgICAgICAgaWYgKG1fcmVzb2x1dGlvblNjYWxl
ICE9IDEpCi0gICAgICAgICAgICB0LnNjYWxlKG1fcmVzb2x1dGlvblNjYWxlKTsKKyAgICAgICAg
aWYgKHJlc29sdXRpb25TY2FsZSgpICE9IDEpCisgICAgICAgICAgICB0LnNjYWxlKHJlc29sdXRp
b25TY2FsZSgpKTsKICAgICAgICAgcmV0dXJuIHQ7CiAgICAgfQogCi0gICAgSW50UmVjdCBsb2dp
Y2FsUmVjdCgpIGNvbnN0IHsgcmV0dXJuIEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgbV9sb2dp
Y2FsU2l6ZSk7IH07Ci0gICAgSW50UmVjdCBiYWNrZW5kUmVjdCgpIGNvbnN0IHsgcmV0dXJuIElu
dFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgbV9iYWNrZW5kU2l6ZSk7IH07CisgICAgSW50U2l6ZSBs
b2dpY2FsU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIEludFNpemUobV9wYXJhbWV0ZXJzLmxvZ2ljYWxT
aXplKTsgfQorICAgIGZsb2F0IHJlc29sdXRpb25TY2FsZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFy
YW1ldGVycy5yZXNvbHV0aW9uU2NhbGU7IH0KKyAgICBDb2xvclNwYWNlIGNvbG9yU3BhY2UoKSBj
b25zdCB7IHJldHVybiBtX3BhcmFtZXRlcnMuY29sb3JTcGFjZTsgfQorICAgIFBpeGVsRm9ybWF0
IHBpeGVsRm9ybWF0KCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0ZXJzLnBpeGVsRm9ybWF0OyB9
CisKKyAgICBJbnRSZWN0IGxvZ2ljYWxSZWN0KCkgY29uc3QgeyByZXR1cm4gSW50UmVjdChJbnRQ
b2ludDo6emVybygpLCBsb2dpY2FsU2l6ZSgpKTsgfTsKKyAgICBJbnRSZWN0IGJhY2tlbmRSZWN0
KCkgY29uc3QgeyByZXR1cm4gSW50UmVjdChJbnRQb2ludDo6emVybygpLCBiYWNrZW5kU2l6ZSgp
KTsgfTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBjb3B5SW1hZ2VQaXhlbHMo
CiAgICAgICAgIEFscGhhUHJlbXVsdGlwbGljYXRpb24gc3JjQWxwaGFGb3JtYXQsIFBpeGVsRm9y
bWF0IHNyY1BpeGVsRm9ybWF0LCB1bnNpZ25lZCBzcmNCeXRlc1BlclJvdywgdWludDhfdCogc3Jj
Um93cywKQEAgLTE1NSwxMSArMTYzLDcgQEAgcHJvdGVjdGVkOgogICAgIFdFQkNPUkVfRVhQT1JU
IFJlZlB0cjxJbWFnZURhdGE+IGdldEltYWdlRGF0YShBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91
dHB1dEZvcm1hdCwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwgdm9pZCogZGF0YSkgY29uc3Q7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwdXRJbWFnZURhdGEoQWxwaGFQcmVtdWx0aXBsaWNhdGlv
biBpbnB1dEZvcm1hdCwgY29uc3QgSW1hZ2VEYXRhJiwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwg
Y29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBkZXN0Rm9y
bWF0LCB2b2lkKiBkYXRhKTsKIAotICAgIEludFNpemUgbV9sb2dpY2FsU2l6ZTsKLSAgICBJbnRT
aXplIG1fYmFja2VuZFNpemU7Ci0gICAgZmxvYXQgbV9yZXNvbHV0aW9uU2NhbGU7Ci0gICAgQ29s
b3JTcGFjZSBtX2NvbG9yU3BhY2U7Ci0gICAgUGl4ZWxGb3JtYXQgbV9waXhlbEZvcm1hdDsKKyAg
ICBjb25zdCBQYXJhbWV0ZXJzJiBtX3BhcmFtZXRlcnM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0
Zm9ybUltYWdlQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0
Zm9ybUltYWdlQnVmZmVyLmgKaW5kZXggYjA1ZmE2NTE2OTcxZDE3NjcxMzFkNTZhNDYzOTM1M2Vm
OTRlNDkyNS4uNTJkZDgzY2M5M2Q1NTUzYjM3OWU1ODdkNDM4NWQ0Zjc4MDU5NDRiYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1JbWFnZUJ1ZmZl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtSW1hZ2VC
dWZmZXIuaApAQCAtNzUsNSArNzUsNSBAQCB1c2luZyBEaXNwbGF5TGlzdEFjY2VsZXJhdGVkSW1h
Z2VCdWZmZXIgPSBEaXNwbGF5TGlzdDo6SW1hZ2VCdWZmZXI8QWNjZWxlcmF0ZWRJbQogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6
OkFjY2VsZXJhdGVkSW1hZ2VCdWZmZXIpCi0gICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdl
YkNvcmU6OkltYWdlQnVmZmVyJiBidWZmZXIpIHsgcmV0dXJuIGJ1ZmZlci5pc0FjY2VsZXJhdGVk
KCk7IH0KKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6SW1hZ2VCdWZmZXIm
IGJ1ZmZlcikgeyByZXR1cm4gYnVmZmVyLnJlbmRlcmluZ01vZGUoKSA9PSBXZWJDb3JlOjpSZW5k
ZXJpbmdNb2RlOjpBY2NlbGVyYXRlZDsgfQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VC
dWZmZXJDYWlyb0JhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQuY3BwCmluZGV4IDEyYTViNjBhMmU5MDQ2YTE5
NTg5MmJhZjVkZDdlZDQ5NjMzYjNlNzQuLmIzYmZkODEyN2I4N2QxNjg4ZWFiYjVjZjRiMmE3MWMz
MzU5Y2QyZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5jcHAKQEAgLTgwLDcg
KzgwLDcgQEAgdm9pZCBJbWFnZUJ1ZmZlckNhaXJvQmFja2VuZDo6ZHJhd1BhdHRlcm4oR3JhcGhp
Y3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmwKICAgICB9CiAKICAgICBpZiAoYXV0byBp
bWFnZSA9IGNvcHlOYXRpdmVJbWFnZSgmZGVzdENvbnRleHQgPT0gJmNvbnRleHQoKSA/IENvcHlC
YWNraW5nU3RvcmUgOiBEb250Q29weUJhY2tpbmdTdG9yZSkpCi0gICAgICAgIENhaXJvOjpkcmF3
UGF0dGVybigqZGVzdENvbnRleHQucGxhdGZvcm1Db250ZXh0KCksIGltYWdlLT5wbGF0Zm9ybUlt
YWdlKCkuZ2V0KCksIG1fbG9naWNhbFNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBwYXR0ZXJuVHJh
bnNmb3JtLCBwaGFzZSwgb3B0aW9ucyk7CisgICAgICAgIENhaXJvOjpkcmF3UGF0dGVybigqZGVz
dENvbnRleHQucGxhdGZvcm1Db250ZXh0KCksIGltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCks
IGxvZ2ljYWxTaXplKCksIGRlc3RSZWN0LCBzcmNSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFz
ZSwgb3B0aW9ucyk7CiB9CiAKIHZvaWQgSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQ6OmNsaXBUb01h
c2soR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0lt
YWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5k
LmNwcAppbmRleCAxY2QwNzU0YjM5MTQzYWY0MjliNDZkNWQ3OGU0NTFmMGQxZTA3NGMzLi4zZGEx
NDU1ZWJhMDZkNjc5NGUzMzI3MDE3ZGFhZmQ3OWJjNTQ3MmRjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJm
YWNlQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQuY3BwCkBAIC00MSwxMyArNDEs
MTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwo
SW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQpOwogCi1zdGQ6OnVuaXF1ZV9wdHI8
SW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQ+IEltYWdlQnVmZmVyQ2Fpcm9JbWFn
ZVN1cmZhY2VCYWNrZW5kOjpjcmVhdGUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNv
bHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3Jt
YXQsIGNvbnN0IEhvc3RXaW5kb3cqKQorc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQ2Fpcm9J
bWFnZVN1cmZhY2VCYWNrZW5kPiBJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZDo6
Y3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIGNvbnN0IEhvc3RXaW5kb3cqKQog
ewotICAgIEFTU0VSVChwaXhlbEZvcm1hdCA9PSBQaXhlbEZvcm1hdDo6QkdSQTgpOworICAgIEFT
U0VSVChwYXJhbWV0ZXJzLnBpeGVsRm9ybWF0ID09IFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAKICAg
ICBzdGF0aWMgY2Fpcm9fdXNlcl9kYXRhX2tleV90IHNfc3VyZmFjZURhdGFLZXk7CiAKLSAgICBJ
bnRTaXplIGJhY2tlbmRTaXplID0gY2FsY3VsYXRlQmFja2VuZFNpemUoc2l6ZSwgcmVzb2x1dGlv
blNjYWxlKTsKKyAgICBJbnRTaXplIGJhY2tlbmRTaXplID0gY2FsY3VsYXRlQmFja2VuZFNpemUo
cGFyYW1ldGVycy5sb2dpY2FsU2l6ZSwgcGFyYW1ldGVycy5yZXNvbHV0aW9uU2NhbGUpOwogICAg
IGlmIChiYWNrZW5kU2l6ZS5pc0VtcHR5KCkgfHwgYmFja2VuZFNpemUud2lkdGgoKSA+IGNhaXJv
TWF4SW1hZ2VTaXplIHx8IGJhY2tlbmRTaXplLmhlaWdodCgpID4gY2Fpcm9NYXhJbWFnZVNpemUp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC02MSwxNiArNjEsMTYgQEAgc3RkOjp1bmlx
dWVfcHRyPEltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kPiBJbWFnZUJ1ZmZlckNh
aXJvSW1hZ2VTdXJmYWMKICAgICAgICAgZmFzdEZyZWUoZGF0YSk7CiAgICAgfSk7CiAKLSAgICBy
ZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5k
PihuZXcgSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQoc2l6ZSwgYmFja2VuZFNp
emUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQsIFdURk1vdmUoc3Vy
ZmFjZSkpKTsKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQ2Fpcm9JbWFn
ZVN1cmZhY2VCYWNrZW5kPihuZXcgSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQo
cGFyYW1ldGVycywgV1RGTW92ZShzdXJmYWNlKSkpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8SW1h
Z2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQ+IEltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1
cmZhY2VCYWNrZW5kOjpjcmVhdGUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBjb25zdCBHcmFwaGlj
c0NvbnRleHQmKQorc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VC
YWNrZW5kPiBJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZDo6Y3JlYXRlKGNvbnN0
IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpCiB7Ci0gICAg
cmV0dXJuIEltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kOjpjcmVhdGUoc2l6ZSwg
MSwgQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4LCBudWxscHRyKTsKKyAgICBy
ZXR1cm4gSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZShwYXJhbWV0
ZXJzLCBudWxscHRyKTsKIH0KIAotSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQ6
OkltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kKGNvbnN0IEZsb2F0U2l6ZSYgbG9n
aWNhbFNpemUsIGNvbnN0IEludFNpemUmIGJhY2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2Nh
bGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIFJlZlB0
cjxjYWlyb19zdXJmYWNlX3Q+JiYgc3VyZmFjZSkKLSAgICA6IEltYWdlQnVmZmVyQ2Fpcm9TdXJm
YWNlQmFja2VuZChsb2dpY2FsU2l6ZSwgYmFja2VuZFNpemUsIHJlc29sdXRpb25TY2FsZSwgY29s
b3JTcGFjZSwgcGl4ZWxGb3JtYXQsIFdURk1vdmUoc3VyZmFjZSkpCitJbWFnZUJ1ZmZlckNhaXJv
SW1hZ2VTdXJmYWNlQmFja2VuZDo6SW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQo
Y29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycywgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4mJiBz
dXJmYWNlKQorICAgIDogSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kKHBhcmFtZXRlcnMs
IFdURk1vdmUoc3VyZmFjZSkpCiB7CiAgICAgQVNTRVJUKGNhaXJvX3N1cmZhY2VfZ2V0X3R5cGUo
bV9zdXJmYWNlLmdldCgpKSA9PSBDQUlST19TVVJGQUNFX1RZUEVfSU1BR0UpOwogfQpAQCAtNzks
MTYgKzc5LDE2IEBAIHZvaWQgSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQ6OnBs
YXRmb3JtVHJhbnNmb3JtQ29sb3JTcGFjZShjb25zdCBzdGQ6CiB7CiAgICAgdW5zaWduZWQgY2hh
ciogZGF0YVNyYyA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEobV9zdXJmYWNlLmdldCgp
KTsKICAgICBpbnQgc3RyaWRlID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfc3RyaWRlKG1fc3Vy
ZmFjZS5nZXQoKSk7Ci0gICAgZm9yIChpbnQgeSA9IDA7IHkgPCBtX2xvZ2ljYWxTaXplLmhlaWdo
dCgpOyArK3kpIHsKKyAgICBmb3IgKGludCB5ID0gMDsgeSA8IGxvZ2ljYWxTaXplKCkuaGVpZ2h0
KCk7ICsreSkgewogICAgICAgICB1bnNpZ25lZCogcm93ID0gcmVpbnRlcnByZXRfY2FzdF9wdHI8
dW5zaWduZWQqPihkYXRhU3JjICsgc3RyaWRlICogeSk7Ci0gICAgICAgIGZvciAoaW50IHggPSAw
OyB4IDwgbV9sb2dpY2FsU2l6ZS53aWR0aCgpOyB4KyspIHsKKyAgICAgICAgZm9yIChpbnQgeCA9
IDA7IHggPCBsb2dpY2FsU2l6ZSgpLndpZHRoKCk7IHgrKykgewogICAgICAgICAgICAgdW5zaWdu
ZWQqIHBpeGVsID0gcm93ICsgeDsKICAgICAgICAgICAgIGF1dG8gcGl4ZWxDb21wb25lbnRzID0g
dW5wcmVtdWx0aXBsaWVkKGFzU1JHQkEoUGFja2VkQ29sb3I6OkFSR0IgeyAqcGl4ZWwgfSkpOwog
ICAgICAgICAgICAgcGl4ZWxDb21wb25lbnRzID0geyBsb29rVXBUYWJsZVtwaXhlbENvbXBvbmVu
dHMucmVkXSwgbG9va1VwVGFibGVbcGl4ZWxDb21wb25lbnRzLmdyZWVuXSwgbG9va1VwVGFibGVb
cGl4ZWxDb21wb25lbnRzLmJsdWVdLCBwaXhlbENvbXBvbmVudHMuYWxwaGEgfTsKICAgICAgICAg
ICAgICpwaXhlbCA9IFBhY2tlZENvbG9yOjpBUkdCIHsgcHJlbXVsdGlwbGllZENlaWxpbmcocGl4
ZWxDb21wb25lbnRzKSB9LnZhbHVlOwogICAgICAgICB9CiAgICAgfQotICAgIGNhaXJvX3N1cmZh
Y2VfbWFya19kaXJ0eV9yZWN0YW5nbGUobV9zdXJmYWNlLmdldCgpLCAwLCAwLCBtX2xvZ2ljYWxT
aXplLndpZHRoKCksIG1fbG9naWNhbFNpemUuaGVpZ2h0KCkpOworICAgIGNhaXJvX3N1cmZhY2Vf
bWFya19kaXJ0eV9yZWN0YW5nbGUobV9zdXJmYWNlLmdldCgpLCAwLCAwLCBsb2dpY2FsU2l6ZSgp
LndpZHRoKCksIGxvZ2ljYWxTaXplKCkuaGVpZ2h0KCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9JbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tl
bmQuaAppbmRleCBkMTZkMzNlYWM0NmM1ZGY2NmZiOGZhMmQ5NTQ5MTBlMmY5MTE1YTAzLi44NjVj
YzY5YjJkNTMzODU0NWYzN2U0MTkzY2I5NGYxOTgwYmU3M2E0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJm
YWNlQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0ltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kLmgKQEAgLTQwLDExICs0MCwxMSBA
QCBjbGFzcyBJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZCA6IHB1YmxpYyBJbWFn
ZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbgogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoSW1h
Z2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQpOwogICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKEltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kKTsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5k
PiBjcmVhdGUoY29uc3QgRmxvYXRTaXplJiwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNw
YWNlLCBQaXhlbEZvcm1hdCwgY29uc3QgSG9zdFdpbmRvdyopOwotICAgIHN0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8SW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQ+IGNyZWF0ZShjb25z
dCBGbG9hdFNpemUmLCBjb25zdCBHcmFwaGljc0NvbnRleHQmKTsKKyAgICBzdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPEltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kPiBjcmVhdGUoY29u
c3QgUGFyYW1ldGVycyYsIGNvbnN0IEhvc3RXaW5kb3cqKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlx
dWVfcHRyPEltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kPiBjcmVhdGUoY29uc3Qg
UGFyYW1ldGVycyYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpOwogCiBwcml2YXRlOgotICAgIElt
YWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNh
bFNpemUsIGNvbnN0IEludFNpemUmIGJhY2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUs
IENvbG9yU3BhY2UsIFBpeGVsRm9ybWF0LCBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiYmKTsKKyAg
ICBJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZChjb25zdCBQYXJhbWV0ZXJzJiwg
UmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4mJik7CiAKICAgICB2b2lkIHBsYXRmb3JtVHJhbnNmb3Jt
Q29sb3JTcGFjZShjb25zdCBzdGQ6OmFycmF5PHVpbnQ4X3QsIDI1Nj4mIGxvb2tVcFRhYmxlKSBv
dmVycmlkZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5k
LmNwcAppbmRleCA5YjgyMTY0YWVhMzMwNzFlNTM2MWM2ZmUzOWIxYjgyN2M5YjZiMTUwLi4wYjcz
ZjE0YmE3MDA1ZTUyMDUwZWQ1ODIxNjRhMTE2MzgwNTQ5NzFmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJh
Y2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0lt
YWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZC5jcHAKQEAgLTQzLDggKzQzLDggQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1JbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQ6OkltYWdl
QnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZChjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBj
b25zdCBJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNw
YWNlIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBSZWZQdHI8Y2Fpcm9fc3Vy
ZmFjZV90PiYmIHN1cmZhY2UpCi0gICAgOiBJbWFnZUJ1ZmZlckNhaXJvQmFja2VuZChsb2dpY2Fs
U2l6ZSwgYmFja2VuZFNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3Jt
YXQpCitJbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQ6OkltYWdlQnVmZmVyQ2Fpcm9TdXJm
YWNlQmFja2VuZChjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBSZWZQdHI8Y2Fpcm9fc3Vy
ZmFjZV90PiYmIHN1cmZhY2UpCisgICAgOiBJbWFnZUJ1ZmZlckNhaXJvQmFja2VuZChwYXJhbWV0
ZXJzKQogICAgICwgbV9zdXJmYWNlKFdURk1vdmUoc3VyZmFjZSkpCiB7CiAgICAgQVNTRVJUKGNh
aXJvX3N1cmZhY2Vfc3RhdHVzKG1fc3VyZmFjZS5nZXQoKSkgPT0gQ0FJUk9fU1RBVFVTX1NVQ0NF
U1MpOwpAQCAtNTksNiArNTksMTEgQEAgR3JhcGhpY3NDb250ZXh0JiBJbWFnZUJ1ZmZlckNhaXJv
U3VyZmFjZUJhY2tlbmQ6OmNvbnRleHQoKSBjb25zdAogICAgIHJldHVybiAqbV9jb250ZXh0Owog
fQogCitJbnRTaXplIEltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZDo6YmFja2VuZFNpemUo
KSBjb25zdAoreworICAgIHJldHVybiB7IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3dpZHRoKG1f
c3VyZmFjZS5nZXQoKSksIGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2hlaWdodChtX3N1cmZhY2Uu
Z2V0KCkpIH07Cit9CisKIHVuc2lnbmVkIEltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZDo6
Ynl0ZXNQZXJSb3coKSBjb25zdAogewogICAgIHJldHVybiBjYWlyb19pbWFnZV9zdXJmYWNlX2dl
dF9zdHJpZGUobV9zdXJmYWNlLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb1N1
cmZhY2VCYWNrZW5kLmgKaW5kZXggMTJhYTJiMWNlODhlZTQyNjQ1ZmE3NzJlNjc5ZjVkNDE5NWEy
Njc0Ny4uOWU5M2RkZTg1OGVmNDNiMjgyZDQzOGNhNWE3NjdmZWJjYmJkZGJjZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWly
b1N1cmZhY2VCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kLmgKQEAgLTQwLDYgKzQwLDggQEAg
Y2xhc3MgSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kIDogcHVibGljIEltYWdlQnVmZmVy
Q2Fpcm9CYWNrZW5kIHsKIHB1YmxpYzoKICAgICBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQoKSBj
b25zdCBvdmVycmlkZTsKIAorICAgIEludFNpemUgYmFja2VuZFNpemUoKSBjb25zdCBvdmVycmlk
ZTsKKwogICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gY29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9y
ZUNvcHkpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHRvQkdSQURhdGEo
KSBjb25zdCBvdmVycmlkZTsKQEAgLTQ3LDcgKzQ5LDcgQEAgcHVibGljOgogICAgIHZvaWQgcHV0
SW1hZ2VEYXRhKEFscGhhUHJlbXVsdGlwbGljYXRpb24gaW5wdXRGb3JtYXQsIGNvbnN0IEltYWdl
RGF0YSYsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0UG9pbnQs
IEFscGhhUHJlbXVsdGlwbGljYXRpb24gZGVzdEZvcm1hdCkgb3ZlcnJpZGU7CiAKIHByb3RlY3Rl
ZDoKLSAgICBJbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQoY29uc3QgRmxvYXRTaXplJiBs
b2dpY2FsU2l6ZSwgY29uc3QgSW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25T
Y2FsZSwgQ29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQsIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+JiYp
OworICAgIEltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZChjb25zdCBQYXJhbWV0ZXJzJiwg
UmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4mJik7CiAKICAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IGNh
aXJvU3VyZmFjZUNvZXJjZVRvSW1hZ2UoKSBjb25zdDsKICAgICB1bnNpZ25lZCBieXRlc1BlclJv
dygpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JhY2tlbmQuY3BwCmluZGV4IDUwMTdiYTEy
YzhiNDg3YjBjYTA2ZTU0M2IxMjk2MzY1ZDZkZDJiMmIuLmFiYmQzNjg4NzgyNjdkOGNmNzc4YzY2
MDZmZGIyODAzZGQ0YTFkNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5jcHAKQEAgLTc5LDggKzc5
LDggQEAgdm9pZCBJbWFnZUJ1ZmZlckNHQmFja2VuZDo6c2V0dXBDb250ZXh0KCkgY29uc3QKIHsK
ICAgICAvLyBUaGUgaW5pdGlhbCBDVE0gbWF0Y2hlcyBEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmNs
aXBUb0RyYXdpbmdDb21tYW5kcygpJ3MgaW5pdGlhbCBDVE0uCiAgICAgY29udGV4dCgpLnNjYWxl
KEZsb2F0U2l6ZSgxLCAtMSkpOwotICAgIGNvbnRleHQoKS50cmFuc2xhdGUoMCwgLW1fYmFja2Vu
ZFNpemUuaGVpZ2h0KCkpOwotICAgIGNvbnRleHQoKS5hcHBseURldmljZVNjYWxlRmFjdG9yKG1f
cmVzb2x1dGlvblNjYWxlKTsKKyAgICBjb250ZXh0KCkudHJhbnNsYXRlKDAsIC1iYWNrZW5kU2l6
ZSgpLmhlaWdodCgpKTsKKyAgICBjb250ZXh0KCkuYXBwbHlEZXZpY2VTY2FsZUZhY3RvcihyZXNv
bHV0aW9uU2NhbGUoKSk7CiB9CiAKIHN0YXRpYyBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gY3JlYXRl
Q3JvcHBlZEltYWdlSWZOZWNlc3NhcnkoQ0dJbWFnZVJlZiBpbWFnZSwgY29uc3QgSW50U2l6ZSYg
YmFja2VuZFNpemUpCkBAIC0xMTIsMzEgKzExMiwzMiBAQCBzdGF0aWMgUmVmUHRyPEltYWdlPiBj
cmVhdGVCaXRtYXBJbWFnZUFmdGVyU2NhbGluZ0lmTmVlZGVkKFJlZlB0cjxOYXRpdmVJbWFnZT4m
JgogUmVmUHRyPEltYWdlPiBJbWFnZUJ1ZmZlckNHQmFja2VuZDo6Y29weUltYWdlKEJhY2tpbmdT
dG9yZUNvcHkgY29weUJlaGF2aW9yLCBQcmVzZXJ2ZVJlc29sdXRpb24gcHJlc2VydmVSZXNvbHV0
aW9uKSBjb25zdAogewogICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gaW1hZ2U7Ci0gICAgaWYgKG1f
cmVzb2x1dGlvblNjYWxlID09IDEgfHwgcHJlc2VydmVSZXNvbHV0aW9uID09IFByZXNlcnZlUmVz
b2x1dGlvbjo6WWVzKQorICAgIGlmIChyZXNvbHV0aW9uU2NhbGUoKSA9PSAxIHx8IHByZXNlcnZl
UmVzb2x1dGlvbiA9PSBQcmVzZXJ2ZVJlc29sdXRpb246OlllcykKICAgICAgICAgaW1hZ2UgPSBj
b3B5TmF0aXZlSW1hZ2UoY29weUJlaGF2aW9yKTsKICAgICBlbHNlCiAgICAgICAgIGltYWdlID0g
Y29weU5hdGl2ZUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKTsKLSAgICByZXR1cm4gY3JlYXRl
Qml0bWFwSW1hZ2VBZnRlclNjYWxpbmdJZk5lZWRlZChXVEZNb3ZlKGltYWdlKSwgbV9sb2dpY2Fs
U2l6ZSwgbV9iYWNrZW5kU2l6ZSwgbV9yZXNvbHV0aW9uU2NhbGUsIHByZXNlcnZlUmVzb2x1dGlv
bik7CisgICAgcmV0dXJuIGNyZWF0ZUJpdG1hcEltYWdlQWZ0ZXJTY2FsaW5nSWZOZWVkZWQoV1RG
TW92ZShpbWFnZSksIGxvZ2ljYWxTaXplKCksIGJhY2tlbmRTaXplKCksIHJlc29sdXRpb25TY2Fs
ZSgpLCBwcmVzZXJ2ZVJlc29sdXRpb24pOwogfQogCiBSZWZQdHI8SW1hZ2U+IEltYWdlQnVmZmVy
Q0dCYWNrZW5kOjpzaW5rSW50b0ltYWdlKFByZXNlcnZlUmVzb2x1dGlvbiBwcmVzZXJ2ZVJlc29s
dXRpb24pCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZUJpdG1hcEltYWdlQWZ0ZXJTY2FsaW5nSWZOZWVk
ZWQoc2lua0ludG9OYXRpdmVJbWFnZSgpLCBtX2xvZ2ljYWxTaXplLCBtX2JhY2tlbmRTaXplLCBt
X3Jlc29sdXRpb25TY2FsZSwgcHJlc2VydmVSZXNvbHV0aW9uKTsKKyAgICBhdXRvIGJhY2tlbmRT
aXplID0gdGhpcy0+YmFja2VuZFNpemUoKTsKKyAgICByZXR1cm4gY3JlYXRlQml0bWFwSW1hZ2VB
ZnRlclNjYWxpbmdJZk5lZWRlZChzaW5rSW50b05hdGl2ZUltYWdlKCksIGxvZ2ljYWxTaXplKCks
IGJhY2tlbmRTaXplLCByZXNvbHV0aW9uU2NhbGUoKSwgcHJlc2VydmVSZXNvbHV0aW9uKTsKIH0K
IAogdm9pZCBJbWFnZUJ1ZmZlckNHQmFja2VuZDo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGRlc3RD
b250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIEZsb2F0UmVj
dCBzcmNSZWN0U2NhbGVkID0gc3JjUmVjdDsKLSAgICBzcmNSZWN0U2NhbGVkLnNjYWxlKG1fcmVz
b2x1dGlvblNjYWxlKTsKKyAgICBzcmNSZWN0U2NhbGVkLnNjYWxlKHJlc29sdXRpb25TY2FsZSgp
KTsKIAogICAgIGlmIChhdXRvIGltYWdlID0gY29weU5hdGl2ZUltYWdlKCZkZXN0Q29udGV4dCA9
PSAmY29udGV4dCgpID8gQ29weUJhY2tpbmdTdG9yZSA6IERvbnRDb3B5QmFja2luZ1N0b3JlKSkK
LSAgICAgICAgZGVzdENvbnRleHQuZHJhd05hdGl2ZUltYWdlKCppbWFnZSwgbV9iYWNrZW5kU2l6
ZSwgZGVzdFJlY3QsIHNyY1JlY3RTY2FsZWQsIG9wdGlvbnMpOworICAgICAgICBkZXN0Q29udGV4
dC5kcmF3TmF0aXZlSW1hZ2UoKmltYWdlLCBiYWNrZW5kU2l6ZSgpLCBkZXN0UmVjdCwgc3JjUmVj
dFNjYWxlZCwgb3B0aW9ucyk7CiB9CiAKIHZvaWQgSW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OmRyYXdQ
YXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBw
YXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXpl
JiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBG
bG9hdFJlY3QgYWRqdXN0ZWRTcmNSZWN0ID0gc3JjUmVjdDsKLSAgICBhZGp1c3RlZFNyY1JlY3Qu
c2NhbGUobV9yZXNvbHV0aW9uU2NhbGUpOworICAgIGFkanVzdGVkU3JjUmVjdC5zY2FsZShyZXNv
bHV0aW9uU2NhbGUoKSk7CiAKICAgICBpZiAoYXV0byBpbWFnZSA9IGNvcHlJbWFnZSgmZGVzdENv
bnRleHQgPT0gJmNvbnRleHQoKSA/IENvcHlCYWNraW5nU3RvcmUgOiBEb250Q29weUJhY2tpbmdT
dG9yZSkpCiAgICAgICAgIGltYWdlLT5kcmF3UGF0dGVybihkZXN0Q29udGV4dCwgZGVzdFJlY3Qs
IGFkanVzdGVkU3JjUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIG9wdGlv
bnMpOwpAQCAtMTU5LDExICsxNjAsNiBAQCB2b2lkIEltYWdlQnVmZmVyQ0dCYWNrZW5kOjpjbGlw
VG9NYXNrKEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UgogICAgIENH
Q29udGV4dFRyYW5zbGF0ZUNUTShjZ0NvbnRleHQsIC1kZXN0UmVjdC54KCksIC1kZXN0UmVjdC5t
YXhZKCkpOwogfQogCi1BZmZpbmVUcmFuc2Zvcm0gSW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OmJhc2VU
cmFuc2Zvcm0oKSBjb25zdAotewotICAgIHJldHVybiBBZmZpbmVUcmFuc2Zvcm0oMSwgMCwgMCwg
LTEsIDAsIG1fbG9naWNhbFNpemUuaGVpZ2h0KCkpOwotfQotCiBSZXRhaW5QdHI8Q0ZEYXRhUmVm
PiBJbWFnZUJ1ZmZlckNHQmFja2VuZDo6dG9DRkRhdGEoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwg
T3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5LCBQcmVzZXJ2ZVJlc29sdXRpb24gcHJlc2VydmVSZXNv
bHV0aW9uKSBjb25zdAogewogICAgIEFTU0VSVChNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRl
ZEltYWdlTUlNRVR5cGVGb3JFbmNvZGluZyhtaW1lVHlwZSkpOwpAQCAtMTkwLDcgKzE4Niw3IEBA
IFJldGFpblB0cjxDRkRhdGFSZWY+IEltYWdlQnVmZmVyQ0dCYWNrZW5kOjp0b0NGRGF0YShjb25z
dCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAog
ICAgICAgICBpbWFnZSA9IGFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZShwaXhlbEFycmF5RGltZW5zaW9u
cy53aWR0aCgpLCBwaXhlbEFycmF5RGltZW5zaW9ucy5oZWlnaHQoKSwgOCwgMzIsIDQgKiBwaXhl
bEFycmF5RGltZW5zaW9ucy53aWR0aCgpLCBzUkdCQ29sb3JTcGFjZVJlZigpLCBrQ0dCaXRtYXBC
eXRlT3JkZXJEZWZhdWx0IHwga0NHSW1hZ2VBbHBoYU5vbmVTa2lwTGFzdCwgZGF0YVByb3ZpZGVy
LmdldCgpLCAwLCBmYWxzZSwga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVsdCkpOwotICAgIH0gZWxz
ZSBpZiAobV9yZXNvbHV0aW9uU2NhbGUgPT0gMSB8fCBwcmVzZXJ2ZVJlc29sdXRpb24gPT0gUHJl
c2VydmVSZXNvbHV0aW9uOjpZZXMpIHsKKyAgICB9IGVsc2UgaWYgKHJlc29sdXRpb25TY2FsZSgp
ID09IDEgfHwgcHJlc2VydmVSZXNvbHV0aW9uID09IFByZXNlcnZlUmVzb2x1dGlvbjo6WWVzKSB7
CiAgICAgICAgIGltYWdlID0gY29weU5hdGl2ZUltYWdlKENvcHlCYWNraW5nU3RvcmUpLT5wbGF0
Zm9ybUltYWdlKCk7CiAgICAgICAgIGltYWdlID0gY3JlYXRlQ3JvcHBlZEltYWdlSWZOZWNlc3Nh
cnkoaW1hZ2UuZ2V0KCksIGJhY2tlbmRTaXplKCkpOwogICAgIH0gZWxzZSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFja2Vu
ZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0Jh
Y2tlbmQuaAppbmRleCAxZTA3ZmRjNjQ0M2ZkYzA4ZjZhZjYzZTA4ODNlYjMyMDUzZTRkNTk3Li5i
MjZhZTA4NDM0N2I5ZTIzMzQwNDYwMGMyZWE0YTRhMjhiMWUxYmE3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCYWNr
ZW5kLmgKQEAgLTQxLDggKzQxLDYgQEAgcHVibGljOgogICAgIAogICAgIHZvaWQgY2xpcFRvTWFz
ayhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0KSBvdmVycmlkZTsK
IAotICAgIEFmZmluZVRyYW5zZm9ybSBiYXNlVHJhbnNmb3JtKCkgY29uc3Qgb3ZlcnJpZGU7Ci0K
ICAgICBTdHJpbmcgdG9EYXRhVVJMKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRv
dWJsZT4gcXVhbGl0eSwgUHJlc2VydmVSZXNvbHV0aW9uKSBjb25zdCBvdmVycmlkZTsKICAgICBW
ZWN0b3I8dWludDhfdD4gdG9EYXRhKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRv
dWJsZT4gcXVhbGl0eSkgY29uc3Qgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBC
YWNrZW5kLmNwcAppbmRleCBmMjE4ZjI3ZjJmNTNjNWE0YWRiYjZhNWFlZGMzYzQ5ZTQ4Y2Q2M2E0
Li41YmVhMzAwNjY3ZTRiNTQxNzA1NTAyZDFlM2E3NTUyN2U1ODg4MzI0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFj
a2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VC
dWZmZXJDR0JpdG1hcEJhY2tlbmQuY3BwCkBAIC0zOSwxMSArMzksMTEgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoSW1hZ2VCdWZmZXJDR0JpdG1h
cEJhY2tlbmQpOwogCi1zdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ+
IEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpjcmVhdGUoY29uc3QgRmxvYXRTaXplJiBzaXpl
LCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgQ0dDb2xvclNw
YWNlUmVmIGNnQ29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIGNvbnN0IEhvc3RX
aW5kb3cqKQorc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kPiBJbWFn
ZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRl
cnMsIENHQ29sb3JTcGFjZVJlZiBjZ0NvbG9yU3BhY2UsIGNvbnN0IEhvc3RXaW5kb3cqKQogewot
ICAgIEFTU0VSVChwaXhlbEZvcm1hdCA9PSBQaXhlbEZvcm1hdDo6QkdSQTgpOworICAgIEFTU0VS
VChwYXJhbWV0ZXJzLnBpeGVsRm9ybWF0ID09IFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAKLSAgICBJ
bnRTaXplIGJhY2tlbmRTaXplID0gY2FsY3VsYXRlQmFja2VuZFNpemUoc2l6ZSwgcmVzb2x1dGlv
blNjYWxlKTsKKyAgICBJbnRTaXplIGJhY2tlbmRTaXplID0gY2FsY3VsYXRlQmFja2VuZFNpemUo
cGFyYW1ldGVycy5sb2dpY2FsU2l6ZSwgcGFyYW1ldGVycy5yZXNvbHV0aW9uU2NhbGUpOwogICAg
IGlmIChiYWNrZW5kU2l6ZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBA
IC03MCwyNCArNzAsMjUgQEAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNr
ZW5kPiBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y3JlYXRlKGMKIAogICAgIGF1dG8gZGF0
YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZVdpdGhEYXRhKDAsIGRhdGEs
IG51bUJ5dGVzLCByZWxlYXNlSW1hZ2VEYXRhKSk7CiAKLSAgICByZXR1cm4gc3RkOjp1bmlxdWVf
cHRyPEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kPihuZXcgSW1hZ2VCdWZmZXJDR0JpdG1hcEJh
Y2tlbmQoc2l6ZSwgYmFja2VuZFNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4
ZWxGb3JtYXQsIGRhdGEsIFdURk1vdmUoZGF0YVByb3ZpZGVyKSwgV1RGTW92ZShjb250ZXh0KSkp
OworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ+
KG5ldyBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZChwYXJhbWV0ZXJzLCBiYWNrZW5kU2l6ZSwg
ZGF0YSwgV1RGTW92ZShkYXRhUHJvdmlkZXIpLCBXVEZNb3ZlKGNvbnRleHQpKSk7CiB9CiAKLXN0
ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZD4gSW1hZ2VCdWZmZXJDR0Jp
dG1hcEJhY2tlbmQ6OmNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIGNvbnN0IEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCkKK3N0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNHQml0bWFwQmFj
a2VuZD4gSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNyZWF0ZShjb25zdCBQYXJhbWV0ZXJz
JiBwYXJhbWV0ZXJzLCBjb25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiB7CiAgICAgaWYg
KGF1dG8gY2dDb2xvclNwYWNlID0gY29udGV4dENvbG9yU3BhY2UoY29udGV4dCkpCi0gICAgICAg
IHJldHVybiBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y3JlYXRlKHNpemUsIDEsIENvbG9y
U3BhY2U6OlNSR0IsIGNnQ29sb3JTcGFjZS5nZXQoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4LCBudWxs
cHRyKTsKLSAgICAKLSAgICByZXR1cm4gSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNyZWF0
ZShzaXplLCAxLCBDb2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdSQTgsIG51bGxwdHIp
OworICAgICAgICByZXR1cm4gSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNyZWF0ZShwYXJh
bWV0ZXJzLCBjZ0NvbG9yU3BhY2UuZ2V0KCksIG51bGxwdHIpOworCisgICAgcmV0dXJuIEltYWdl
QnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpjcmVhdGUocGFyYW1ldGVycywgbnVsbHB0cik7CiB9CiAK
LXN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZD4gSW1hZ2VCdWZmZXJD
R0JpdG1hcEJhY2tlbmQ6OmNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29s
dXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1h
dCwgY29uc3QgSG9zdFdpbmRvdyogaG9zdFdpbmRvdykKK3N0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1
ZmZlckNHQml0bWFwQmFja2VuZD4gSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNyZWF0ZShj
b25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBjb25zdCBIb3N0V2luZG93KiBob3N0V2luZG93
KQogewotICAgIHJldHVybiBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y3JlYXRlKHNpemUs
IHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgY2FjaGVkQ0dDb2xvclNwYWNlKGNvbG9yU3Bh
Y2UpLCBwaXhlbEZvcm1hdCwgaG9zdFdpbmRvdyk7CisgICAgcmV0dXJuIEltYWdlQnVmZmVyQ0dC
aXRtYXBCYWNrZW5kOjpjcmVhdGUocGFyYW1ldGVycywgY2FjaGVkQ0dDb2xvclNwYWNlKHBhcmFt
ZXRlcnMuY29sb3JTcGFjZSksIGhvc3RXaW5kb3cpOwogfQogCi1JbWFnZUJ1ZmZlckNHQml0bWFw
QmFja2VuZDo6SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQoY29uc3QgRmxvYXRTaXplJiBsb2dp
Y2FsU2l6ZSwgY29uc3QgSW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2Fs
ZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgdm9pZCog
ZGF0YSwgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiYmIGRhdGFQcm92aWRlciwgc3RkOjp1
bmlxdWVfcHRyPEdyYXBoaWNzQ29udGV4dD4mJiBjb250ZXh0KQotICAgIDogSW1hZ2VCdWZmZXJD
R0JhY2tlbmQobG9naWNhbFNpemUsIGJhY2tlbmRTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9y
U3BhY2UsIHBpeGVsRm9ybWF0KQorSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OkltYWdlQnVm
ZmVyQ0dCaXRtYXBCYWNrZW5kKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIGNvbnN0IElu
dFNpemUmIGJhY2tlbmRTaXplLCB2b2lkKiBkYXRhLCBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJS
ZWY+JiYgZGF0YVByb3ZpZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NDb250ZXh0PiYmIGNv
bnRleHQpCisgICAgOiBJbWFnZUJ1ZmZlckNHQmFja2VuZChwYXJhbWV0ZXJzKQorICAgICwgbV9i
YWNrZW5kU2l6ZShiYWNrZW5kU2l6ZSkKICAgICAsIG1fZGF0YShkYXRhKQogICAgICwgbV9kYXRh
UHJvdmlkZXIoV1RGTW92ZShkYXRhUHJvdmlkZXIpKQogICAgICwgbV9jb250ZXh0KFdURk1vdmUo
Y29udGV4dCkpCkBAIC0xMTIsNyArMTEzLDcgQEAgUmVmUHRyPE5hdGl2ZUltYWdlPiBJbWFnZUJ1
ZmZlckNHQml0bWFwQmFja2VuZDo6Y29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkKICAg
ICBjYXNlIERvbnRDb3B5QmFja2luZ1N0b3JlOgogICAgICAgICByZXR1cm4gTmF0aXZlSW1hZ2U6
OmNyZWF0ZShhZG9wdENGKENHSW1hZ2VDcmVhdGUoCiAgICAgICAgICAgICBtX2JhY2tlbmRTaXpl
LndpZHRoKCksIG1fYmFja2VuZFNpemUuaGVpZ2h0KCksIDgsIDMyLCBieXRlc1BlclJvdygpLAot
ICAgICAgICAgICAgY2FjaGVkQ0dDb2xvclNwYWNlKG1fY29sb3JTcGFjZSksIGtDR0ltYWdlQWxw
aGFQcmVtdWx0aXBsaWVkRmlyc3QgfCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkhvc3QsIG1fZGF0YVBy
b3ZpZGVyLmdldCgpLAorICAgICAgICAgICAgY2FjaGVkQ0dDb2xvclNwYWNlKGNvbG9yU3BhY2Uo
KSksIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkRmlyc3QgfCBrQ0dCaXRtYXBCeXRlT3JkZXIz
Mkhvc3QsIG1fZGF0YVByb3ZpZGVyLmdldCgpLAogICAgICAgICAgICAgMCwgdHJ1ZSwga0NHUmVu
ZGVyaW5nSW50ZW50RGVmYXVsdCkpKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFj
a2VuZC5oCmluZGV4IGU5MmM5MmY1ZDUwZmRlNTdhYWEzY2E1YzJmZjI5ZGYwOGI4NjRkMjkuLjZi
Nzg2MTEwODU1OTdiNWUyYWEzN2Q5ZDU1YzRlY2NhZDczZTg2NTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5k
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJD
R0JpdG1hcEJhY2tlbmQuaApAQCAtMzYsMTIgKzM2LDE0IEBAIGNsYXNzIEltYWdlQnVmZmVyQ0dC
aXRtYXBCYWNrZW5kIDogcHVibGljIEltYWdlQnVmZmVyQ0dCYWNrZW5kIHsKICAgICBXVEZfTUFL
RV9JU09fQUxMT0NBVEVEKEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kKTsKICAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZCk7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZD4gY3JlYXRl
KGNvbnN0IEZsb2F0U2l6ZSYsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSwgQ0dD
b2xvclNwYWNlUmVmLCBQaXhlbEZvcm1hdCwgY29uc3QgSG9zdFdpbmRvdyopOwotICAgIHN0YXRp
YyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ+IGNyZWF0ZShjb25z
dCBGbG9hdFNpemUmLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UsIFBpeGVsRm9y
bWF0LCBjb25zdCBIb3N0V2luZG93Kik7Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFn
ZUJ1ZmZlckNHQml0bWFwQmFja2VuZD4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEdy
YXBoaWNzQ29udGV4dCYpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJD
R0JpdG1hcEJhY2tlbmQ+IGNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiwgQ0dDb2xvclNwYWNlUmVm
LCBjb25zdCBIb3N0V2luZG93Kik7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1
ZmZlckNHQml0bWFwQmFja2VuZD4gY3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmLCBjb25zdCBIb3N0
V2luZG93Kik7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNHQml0bWFw
QmFja2VuZD4gY3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmLCBjb25zdCBHcmFwaGljc0NvbnRleHQm
KTsKIAogICAgIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCgpIGNvbnN0IG92ZXJyaWRlOwogCisg
ICAgSW50U2l6ZSBiYWNrZW5kU2l6ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fYmFja2Vu
ZFNpemU7IH0KKwogICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gY29weU5hdGl2ZUltYWdlKEJhY2tp
bmdTdG9yZUNvcHkgPSBDb3B5QmFja2luZ1N0b3JlKSBjb25zdCBvdmVycmlkZTsKIAogICAgIFZl
Y3Rvcjx1aW50OF90PiB0b0JHUkFEYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CkBAIC01Miw4ICs1NCw5
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNPcmlnaW5BdFVwcGVyTGVm
dENvcm5lciA9IHRydWU7CiAKIHByaXZhdGU6Ci0gICAgSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tl
bmQoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50U2l6ZSYgcGh5c2ljYWxT
aXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UsIFBpeGVsRm9ybWF0LCB2b2lk
KiBkYXRhLCBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+JiYsIHN0ZDo6dW5pcXVlX3B0cjxH
cmFwaGljc0NvbnRleHQ+JiYpOworICAgIEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kKGNvbnN0
IFBhcmFtZXRlcnMmLCBjb25zdCBJbnRTaXplJiBiYWNrZW5kU2l6ZSwgdm9pZCogZGF0YSwgUmV0
YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiYmLCBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NDb250
ZXh0PiYmKTsKIAorICAgIEludFNpemUgbV9iYWNrZW5kU2l6ZTsKICAgICB2b2lkKiBtX2RhdGE7
CiAgICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiBtX2RhdGFQcm92aWRlcjsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NDb250ZXh0PiBtX2NvbnRleHQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJh
Y2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZm
ZXJJT1N1cmZhY2VCYWNrZW5kLmNwcAppbmRleCBhZDNmZjFkNzk3NzIwMzc2NDBlMmQ2OTk1NDEy
ODg2MGI3NzQ4YzM2Li43YTY5YzU1M2MwMDEzNmQ5NzhmNDRjOTMyZTRhZTVmMWU2NGZkNThhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZl
cklPU3VyZmFjZUJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5jcHAKQEAgLTY0LDEzICs2NCwxMyBA
QCBSZXRhaW5QdHI8Q0dDb2xvclNwYWNlUmVmPiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6
OmNvbnRleHRDb2xvclNwYWNlKGNvbnN0CiAgICAgcmV0dXJuIEltYWdlQnVmZmVyQ0dCYWNrZW5k
Ojpjb250ZXh0Q29sb3JTcGFjZShjb250ZXh0KTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEltYWdl
QnVmZmVySU9TdXJmYWNlQmFja2VuZD4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpjcmVh
dGUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3Bh
Y2UgY29sb3JTcGFjZSwgQ0dDb2xvclNwYWNlUmVmIGNnQ29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQg
cGl4ZWxGb3JtYXQsIGNvbnN0IEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cpCitzdGQ6OnVuaXF1ZV9w
dHI8SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kPiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tl
bmQ6OmNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBDR0NvbG9yU3BhY2VSZWYg
Y2dDb2xvclNwYWNlLCBjb25zdCBIb3N0V2luZG93KiBob3N0V2luZG93KQogewotICAgIEludFNp
emUgYmFja2VuZFNpemUgPSBjYWxjdWxhdGVCYWNrZW5kU2l6ZShzaXplLCByZXNvbHV0aW9uU2Nh
bGUpOworICAgIEludFNpemUgYmFja2VuZFNpemUgPSBjYWxjdWxhdGVCYWNrZW5kU2l6ZShwYXJh
bWV0ZXJzLmxvZ2ljYWxTaXplLCBwYXJhbWV0ZXJzLnJlc29sdXRpb25TY2FsZSk7CiAgICAgaWYg
KGJhY2tlbmRTaXplLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBh
dXRvIHN1cmZhY2UgPSBJT1N1cmZhY2U6OmNyZWF0ZShiYWNrZW5kU2l6ZSwgYmFja2VuZFNpemUs
IGNnQ29sb3JTcGFjZSwgSU9TdXJmYWNlOjpmb3JtYXRGb3JQaXhlbEZvcm1hdChwaXhlbEZvcm1h
dCkpOworICAgIGF1dG8gc3VyZmFjZSA9IElPU3VyZmFjZTo6Y3JlYXRlKGJhY2tlbmRTaXplLCBi
YWNrZW5kU2l6ZSwgY2dDb2xvclNwYWNlLCBJT1N1cmZhY2U6OmZvcm1hdEZvclBpeGVsRm9ybWF0
KHBhcmFtZXRlcnMucGl4ZWxGb3JtYXQpKTsKICAgICBpZiAoIXN1cmZhY2UpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCkBAIC04MCwyNCArODAsMjQgQEAgc3RkOjp1bmlxdWVfcHRyPEltYWdl
QnVmZmVySU9TdXJmYWNlQmFja2VuZD4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpjcmVh
dGUKIAogICAgIENHQ29udGV4dENsZWFyUmVjdChjZ0NvbnRleHQuZ2V0KCksIEZsb2F0UmVjdChG
bG9hdFBvaW50Ojp6ZXJvKCksIGJhY2tlbmRTaXplKSk7CiAKLSAgICByZXR1cm4gbWFrZVVuaXF1
ZTxJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ+KHNpemUsIGJhY2tlbmRTaXplLCByZXNvbHV0
aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0LCBXVEZNb3ZlKHN1cmZhY2UpKTsKKyAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ+KHBhcmFtZXRl
cnMsIFdURk1vdmUoc3VyZmFjZSkpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJJ
T1N1cmZhY2VCYWNrZW5kPiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZShjb25z
dCBGbG9hdFNpemUmIHNpemUsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKK3N0ZDo6
dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ+IEltYWdlQnVmZmVySU9TdXJm
YWNlQmFja2VuZDo6Y3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIGNvbnN0IEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCkKIHsKICAgICBpZiAoYXV0byBjZ0NvbG9yU3BhY2UgPSBj
b250ZXh0Q29sb3JTcGFjZShjb250ZXh0KSkKLSAgICAgICAgcmV0dXJuIEltYWdlQnVmZmVySU9T
dXJmYWNlQmFja2VuZDo6Y3JlYXRlKHNpemUsIDEsIENvbG9yU3BhY2U6OlNSR0IsIGNnQ29sb3JT
cGFjZS5nZXQoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4LCBudWxscHRyKTsKLSAgICAKLSAgICByZXR1
cm4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGUoc2l6ZSwgMSwgQ29sb3JTcGFj
ZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4LCBudWxscHRyKTsKKyAgICAgICAgcmV0dXJuIElt
YWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlKHBhcmFtZXRlcnMsIGNnQ29sb3JTcGFj
ZS5nZXQoKSwgbnVsbHB0cik7CisKKyAgICByZXR1cm4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNr
ZW5kOjpjcmVhdGUocGFyYW1ldGVycywgbnVsbHB0cik7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxJ
bWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ+IEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6
Y3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xv
clNwYWNlIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBjb25zdCBIb3N0V2lu
ZG93KiBob3N0V2luZG93KQorc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVySU9TdXJmYWNlQmFj
a2VuZD4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGUoY29uc3QgUGFyYW1ldGVy
cyYgcGFyYW1ldGVycywgY29uc3QgSG9zdFdpbmRvdyogaG9zdFdpbmRvdykKIHsKLSAgICByZXR1
cm4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGUoc2l6ZSwgcmVzb2x1dGlvblNj
YWxlLCBjb2xvclNwYWNlLCBjYWNoZWRDR0NvbG9yU3BhY2UoY29sb3JTcGFjZSksIHBpeGVsRm9y
bWF0LCBob3N0V2luZG93KTsKKyAgICByZXR1cm4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5k
OjpjcmVhdGUocGFyYW1ldGVycywgY2FjaGVkQ0dDb2xvclNwYWNlKHBhcmFtZXRlcnMuY29sb3JT
cGFjZSksIGhvc3RXaW5kb3cpOwogfQogCi1JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6Oklt
YWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZChjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBj
b25zdCBJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNw
YWNlIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBzdGQ6OnVuaXF1ZV9wdHI8
SU9TdXJmYWNlPiYmIHN1cmZhY2UpCi0gICAgOiBJbWFnZUJ1ZmZlckNHQmFja2VuZChsb2dpY2Fs
U2l6ZSwgYmFja2VuZFNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3Jt
YXQpCitJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OkltYWdlQnVmZmVySU9TdXJmYWNlQmFj
a2VuZChjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJm
YWNlPiYmIHN1cmZhY2UpCisgICAgOiBJbWFnZUJ1ZmZlckNHQmFja2VuZChwYXJhbWV0ZXJzKQog
ICAgICwgbV9zdXJmYWNlKFdURk1vdmUoc3VyZmFjZSkpCiB7CiAgICAgQVNTRVJUKG1fc3VyZmFj
ZSk7CkBAIC0xMjAsNiArMTIwLDExIEBAIHZvaWQgSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5k
OjpmbHVzaENvbnRleHQoKQogICAgIENHQ29udGV4dEZsdXNoKGNvbnRleHQoKS5wbGF0Zm9ybUNv
bnRleHQoKSk7CiB9CiAKK0ludFNpemUgSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpiYWNr
ZW5kU2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc3VyZmFjZS0+c2l6ZSgpOworfQorCiBz
aXplX3QgSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjptZW1vcnlDb3N0KCkgY29uc3QKIHsK
ICAgICByZXR1cm4gbV9zdXJmYWNlLT50b3RhbEJ5dGVzKCk7CkBAIC0xNDgsMTAgKzE1MywxMCBA
QCBSZWZQdHI8TmF0aXZlSW1hZ2U+IEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6c2lua0lu
dG9OYXRpdmVJbWFnZSgpCiB2b2lkIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6ZHJhd0Nv
bnN1bWluZyhHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJiBvcHRpb25zKQogewogICAgIEZsb2F0UmVjdCBhZGp1c3RlZFNyY1JlY3QgPSBzcmNSZWN0
OwotICAgIGFkanVzdGVkU3JjUmVjdC5zY2FsZShtX3Jlc29sdXRpb25TY2FsZSk7CisgICAgYWRq
dXN0ZWRTcmNSZWN0LnNjYWxlKHJlc29sdXRpb25TY2FsZSgpKTsKIAogICAgIGlmIChhdXRvIGlt
YWdlID0gc2lua0ludG9OYXRpdmVJbWFnZSgpKQotICAgICAgICBkZXN0Q29udGV4dC5kcmF3TmF0
aXZlSW1hZ2UoKmltYWdlLCBtX2JhY2tlbmRTaXplLCBkZXN0UmVjdCwgYWRqdXN0ZWRTcmNSZWN0
LCBvcHRpb25zKTsKKyAgICAgICAgZGVzdENvbnRleHQuZHJhd05hdGl2ZUltYWdlKCppbWFnZSwg
YmFja2VuZFNpemUoKSwgZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVjdCwgb3B0aW9ucyk7CiB9CiAK
IFJldGFpblB0cjxDRkRhdGFSZWY+IEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6dG9DRkRh
dGEoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5LCBQcmVz
ZXJ2ZVJlc29sdXRpb24gcHJlc2VydmVSZXNvbHV0aW9uKSBjb25zdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNr
ZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklP
U3VyZmFjZUJhY2tlbmQuaAppbmRleCBkZTk4MjExMWU1MmMxMmVkYjA4ZGM3ODhiNTBlY2VmYjM2
NTA3NjUwLi40ODU5ZGY2ZmM1MjVkODVjMzI4YzE0NWYwNzkxNzgzNTY5MDllMjVkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3Vy
ZmFjZUJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9J
bWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuaApAQCAtMzksMTUgKzM5LDE3IEBAIGNsYXNzIFdF
QkNPUkVfRVhQT1JUIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZCA6IHB1YmxpYyBJbWFnZUJ1
ZmZlckNHQmFja2VuZCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIEludFNpemUgY2FsY3VsYXRlQmFj
a2VuZFNpemUoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNj
YWxlKTsKIAotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJJT1N1cmZhY2VC
YWNrZW5kPiBjcmVhdGUoY29uc3QgRmxvYXRTaXplJiwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBD
b2xvclNwYWNlLCBDR0NvbG9yU3BhY2VSZWYsIFBpeGVsRm9ybWF0LCBjb25zdCBIb3N0V2luZG93
Kik7Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tl
bmQ+IGNyZWF0ZShjb25zdCBGbG9hdFNpemUmLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9y
U3BhY2UsIFBpeGVsRm9ybWF0LCBjb25zdCBIb3N0V2luZG93Kik7Ci0gICAgc3RhdGljIHN0ZDo6
dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ+IGNyZWF0ZShjb25zdCBGbG9h
dFNpemUmLCBjb25zdCBHcmFwaGljc0NvbnRleHQmKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVf
cHRyPEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZD4gY3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMm
LCBDR0NvbG9yU3BhY2VSZWYsIGNvbnN0IEhvc3RXaW5kb3cqKTsKKyAgICBzdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZD4gY3JlYXRlKGNvbnN0IFBhcmFt
ZXRlcnMmLCBjb25zdCBIb3N0V2luZG93Kik7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJ
bWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ+IGNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiwgY29u
c3QgR3JhcGhpY3NDb250ZXh0Jik7CiAKLSAgICBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQo
Y29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50U2l6ZSYgcGh5c2ljYWxTaXpl
LCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UsIFBpeGVsRm9ybWF0LCBzdGQ6OnVu
aXF1ZV9wdHI8SU9TdXJmYWNlPiYmKTsKKyAgICBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQo
Y29uc3QgUGFyYW1ldGVycyYsIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+JiYpOwogCiAgICAg
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBmbHVz
aENvbnRleHQoKSBvdmVycmlkZTsKIAorICAgIEludFNpemUgYmFja2VuZFNpemUoKSBjb25zdCBv
dmVycmlkZTsKKyAgICAKICAgICBzaXplX3QgbWVtb3J5Q29zdCgpIGNvbnN0IG92ZXJyaWRlOwog
ICAgIHNpemVfdCBleHRlcm5hbE1lbW9yeUNvc3QoKSBjb25zdCBvdmVycmlkZTsKIApAQCAtNjks
NyArNzEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWxlYXNlQnVmZmVyVG9Qb29sKCkgb3ZlcnJp
ZGU7CiAKICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNPcmlnaW5BdFVwcGVyTGVmdENvcm5l
ciA9IHRydWU7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzQWNjZWxlcmF0ZWQgPSB0cnVl
OworICAgIHN0YXRpYyBjb25zdGV4cHIgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlID0gUmVu
ZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQ7CiAKIHByb3RlY3RlZDoKICAgICBzdGF0aWMgUmV0YWlu
UHRyPENHQ29sb3JTcGFjZVJlZj4gY29udGV4dENvbG9yU3BhY2UoY29uc3QgR3JhcGhpY3NDb250
ZXh0Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oCmluZGV4IDI2ZmM5NzMwNzIxMTI3MzAzOTNlMmRj
YmM4N2QwYzZiOWNhNTQyNTguLjE2YjE5N2Y5ZWUyZDI4ZGJlOTIxZDkzMDk0M2Q0MzA0NjFkZmNk
ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oCkBAIC0zMyw3ICszMyw2IEBACiAjaW5jbHVkZSA8
d3RmL0Zhc3RNYWxsb2MuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0
Zi9Ob25jb3B5YWJsZS5oPgotI2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+CiAjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBA
IC00NSw5ICs0NCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogbmFtZXNwYWNlIERpc3BsYXlM
aXN0IHsKIAotZW51bSBGbHVzaElkZW50aWZpZXJUeXBlIHsgfTsKLXVzaW5nIEZsdXNoSWRlbnRp
ZmllciA9IE9iamVjdElkZW50aWZpZXI8Rmx1c2hJZGVudGlmaWVyVHlwZT47Ci0KIGVudW0gQXNU
ZXh0RmxhZyB7CiAgICAgTm9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDAsCiAgICAg
SW5jbHVkZXNQbGF0Zm9ybU9wZXJhdGlvbnMgICAgICA9IDEgPDwgMCwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEZs
dXNoSWRlbnRpZmllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0Rmx1c2hJZGVudGlmaWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWNmNzgxNjhl
YmI3ZmM3MzdiOWI0YTZjZjhkNTM3MjlmNWEwNjBlYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEZsdXNo
SWRlbnRpZmllci5oCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKKworZW51bSBGbHVzaElkZW50aWZpZXJUeXBl
IHsgfTsKK3VzaW5nIEZsdXNoSWRlbnRpZmllciA9IE9iamVjdElkZW50aWZpZXI8Rmx1c2hJZGVu
dGlmaWVyVHlwZT47CisKK30gLy8gRGlzcGxheUxpc3QKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEltYWdlQnVmZmVyLmgKaW5kZXggZjViMjIz
NDAyYWViMzc3MjhiNzMwMWZiNjY3MTE4YTNiMmU4YjA0MC4uNmEwYTI1Mjg0M2EwZjBkMWViYmFj
MmU0MWJiNDI3OWM0YWZkMWVhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJbWFn
ZUJ1ZmZlci5oCkBAIC0zNCwyNiArMzQsMjkgQEAgbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKIHRl
bXBsYXRlPHR5cGVuYW1lIEJhY2tlbmRUeXBlPgogY2xhc3MgSW1hZ2VCdWZmZXIgOiBwdWJsaWMg
Q29uY3JldGVJbWFnZUJ1ZmZlcjxCYWNrZW5kVHlwZT4gewogICAgIHVzaW5nIEJhc2VDb25jcmV0
ZUltYWdlQnVmZmVyID0gQ29uY3JldGVJbWFnZUJ1ZmZlcjxCYWNrZW5kVHlwZT47CisgICAgdXNp
bmcgQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXI6OmxvZ2ljYWxTaXplOworICAgIHVzaW5nIEJhc2VD
b25jcmV0ZUltYWdlQnVmZmVyOjpiYXNlVHJhbnNmb3JtOwogCiBwdWJsaWM6CiAgICAgc3RhdGlj
IGF1dG8gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxl
LCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBjb25zdCBI
b3N0V2luZG93KiBob3N0V2luZG93KQogICAgIHsKLSAgICAgICAgcmV0dXJuIEJhc2VDb25jcmV0
ZUltYWdlQnVmZmVyOjp0ZW1wbGF0ZSBjcmVhdGU8SW1hZ2VCdWZmZXI+KHNpemUsIHJlc29sdXRp
b25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQsIGhvc3RXaW5kb3csIHNpemUpOworICAg
ICAgICByZXR1cm4gQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXI6OnRlbXBsYXRlIGNyZWF0ZTxJbWFn
ZUJ1ZmZlcj4oc2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCwg
aG9zdFdpbmRvdyk7CiAgICAgfQogCiAgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IEZsb2F0
U2l6ZSYgc2l6ZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyOjp0ZW1wbGF0ZSBjcmVhdGU8SW1hZ2VC
dWZmZXI+KHNpemUsIGNvbnRleHQsIHNpemUpOworICAgICAgICByZXR1cm4gQmFzZUNvbmNyZXRl
SW1hZ2VCdWZmZXI6OnRlbXBsYXRlIGNyZWF0ZTxJbWFnZUJ1ZmZlcj4oc2l6ZSwgY29udGV4dCk7
CiAgICAgfQogCi0gICAgSW1hZ2VCdWZmZXIoc3RkOjp1bmlxdWVfcHRyPEJhY2tlbmRUeXBlPiYm
IGRhdGFCYWNrZW5kLCBjb25zdCBGbG9hdFNpemUmIHNpemUpCi0gICAgICAgIDogQmFzZUNvbmNy
ZXRlSW1hZ2VCdWZmZXIoV1RGTW92ZShkYXRhQmFja2VuZCkpCi0gICAgICAgICwgbV9kcmF3aW5n
Q29udGV4dChzaXplLCBpbml0aWFsRHJhd2luZ0NvbnRleHRDVE0oc2l6ZSkpCisgICAgSW1hZ2VC
dWZmZXIoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQmFja2VuZDo6UGFyYW1ldGVycz4mJiBw
YXJhbWV0ZXJzLCBzdGQ6OnVuaXF1ZV9wdHI8QmFja2VuZFR5cGU+JiYgYmFja2VuZCkKKyAgICAg
ICAgOiBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZlcihXVEZNb3ZlKHBhcmFtZXRlcnMpLCBXVEZNb3Zl
KGJhY2tlbmQpKQorICAgICAgICAsIG1fZHJhd2luZ0NvbnRleHQobG9naWNhbFNpemUoKSwgYmFz
ZVRyYW5zZm9ybSgpKQogICAgIHsKICAgICB9CiAKLSAgICBJbWFnZUJ1ZmZlcihjb25zdCBGbG9h
dFNpemUmIHNpemUsIFJlY29yZGVyOjpEZWxlZ2F0ZSogZGVsZWdhdGUgPSBudWxscHRyKQotICAg
ICAgICA6IG1fZHJhd2luZ0NvbnRleHQoc2l6ZSwgaW5pdGlhbERyYXdpbmdDb250ZXh0Q1RNKHNp
emUpLCBkZWxlZ2F0ZSkKKyAgICBJbWFnZUJ1ZmZlcihzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZm
ZXJCYWNrZW5kOjpQYXJhbWV0ZXJzPiYmIHBhcmFtZXRlcnMsIFJlY29yZGVyOjpEZWxlZ2F0ZSog
ZGVsZWdhdGUgPSBudWxscHRyKQorICAgICAgICA6IEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyKFdU
Rk1vdmUocGFyYW1ldGVycykpCisgICAgICAgICwgbV9kcmF3aW5nQ29udGV4dChsb2dpY2FsU2l6
ZSgpLCBiYXNlVHJhbnNmb3JtKCksIGRlbGVnYXRlKQogICAgIHsKICAgICB9CiAKQEAgLTc3LDE1
ICs4MCw2IEBAIHB1YmxpYzoKIAogcHJvdGVjdGVkOgogICAgIERyYXdpbmdDb250ZXh0IG1fZHJh
d2luZ0NvbnRleHQ7Ci0KLXByaXZhdGU6Ci0gICAgc3RhdGljIEFmZmluZVRyYW5zZm9ybSBpbml0
aWFsRHJhd2luZ0NvbnRleHRDVE0oY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSkKLSAgICB7
Ci0gICAgICAgIEFmZmluZVRyYW5zZm9ybSBpbml0aWFsQ1RNOwotICAgICAgICBpZiAoQmFja2Vu
ZFR5cGU6OmlzT3JpZ2luQXRVcHBlckxlZnRDb3JuZXIpCi0gICAgICAgICAgICBpbml0aWFsQ1RN
ID0gaW5pdGlhbENUTS5zY2FsZSgxLCAtMSkudHJhbnNsYXRlKDAsIC1sb2dpY2FsU2l6ZS5oZWln
aHQoKSk7Ci0gICAgICAgIHJldHVybiBpbml0aWFsQ1RNOwotICAgIH0KIH07CiAKIH0gLy8gRGlz
cGxheUxpc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9JbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQuY3BwCmluZGV4IDM3OGFh
ZjRjNDBjNGUxMjJhY2JlMDY5NDMyYzdhZDdlYzIwOWVkNzMuLjAxZDJlNzgwMjg1YjExZmVjMzli
NGNkMjZiZjRjZmZmMDgwNzMzNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5k
LmNwcApAQCAtMTcxLDcgKzE3MSw3IEBAIHN0YXRpYyBSZWZQdHI8SW1hZ2U+IGNyZWF0ZUJpdG1h
cEltYWdlQWZ0ZXJTY2FsaW5nSWZOZWVkZWQoSUQyRDFCaXRtYXBSZW5kZXJUYXJnCiBSZWZQdHI8
SW1hZ2U+IEltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpjb3B5SW1hZ2UoQmFja2luZ1N0b3Jl
Q29weSBjb3B5QmVoYXZpb3IsIFByZXNlcnZlUmVzb2x1dGlvbiBwcmVzZXJ2ZVJlc29sdXRpb24p
IGNvbnN0CiB7CiAgICAgUGxhdGZvcm1JbWFnZVB0ciBpbWFnZTsKLSAgICBpZiAobV9yZXNvbHV0
aW9uU2NhbGUgPT0gMSB8fCBwcmVzZXJ2ZVJlc29sdXRpb24gPT0gUHJlc2VydmVSZXNvbHV0aW9u
OjpZZXMpCisgICAgaWYgKHJlc29sdXRpb25TY2FsZSgpID09IDEgfHwgcHJlc2VydmVSZXNvbHV0
aW9uID09IFByZXNlcnZlUmVzb2x1dGlvbjo6WWVzKQogICAgICAgICBpbWFnZSA9IGNvcHlOYXRp
dmVJbWFnZShjb3B5QmVoYXZpb3IpLT5wbGF0Zm9ybUltYWdlKCk7CiAgICAgZWxzZQogICAgICAg
ICBpbWFnZSA9IGNvcHlOYXRpdmVJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSktPnBsYXRmb3Jt
SW1hZ2UoKTsKQEAgLTI2OSw3ICsyNjksNyBAQCBQbGF0Zm9ybUltYWdlUHRyIEltYWdlQnVmZmVy
RGlyZWN0MkRCYWNrZW5kOjpjb21wYXRpYmxlQml0bWFwKElEMkQxUmVuZGVyVGFyZ2V0Kgogdm9p
ZCBJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGRlc3RD
b250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIEZsb2F0UmVj
dCBhZGp1c3RlZFNyY1JlY3QgPSBzcmNSZWN0OwotICAgIGFkanVzdGVkU3JjUmVjdC5zY2FsZSht
X3Jlc29sdXRpb25TY2FsZSwgbV9yZXNvbHV0aW9uU2NhbGUpOworICAgIGFkanVzdGVkU3JjUmVj
dC5zY2FsZShyZXNvbHV0aW9uU2NhbGUoKSk7CiAKICAgICBhdXRvIGNvbXBhdGlibGVCaXRtYXAg
PSBjb21wYXRpYmxlQml0bWFwKGRlc3RDb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLT5yZW5kZXJU
YXJnZXQoKSk7CiAKQEAgLTI4Myw3ICsyODMsNyBAQCB2b2lkIEltYWdlQnVmZmVyRGlyZWN0MkRC
YWNrZW5kOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0Ugog
dm9pZCBJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250
ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNv
bnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIEZsb2F0UmVjdCBhZGp1c3RlZFNy
Y1JlY3QgPSBzcmNSZWN0OwotICAgIGFkanVzdGVkU3JjUmVjdC5zY2FsZShtX3Jlc29sdXRpb25T
Y2FsZSk7CisgICAgYWRqdXN0ZWRTcmNSZWN0LnNjYWxlKHJlc29sdXRpb25TY2FsZSgpKTsKIAog
ICAgIGlmIChhdXRvIGltYWdlID0gY29weUltYWdlKCZkZXN0Q29udGV4dCA9PSAmY29udGV4dCgp
ID8gQ29weUJhY2tpbmdTdG9yZSA6IERvbnRDb3B5QmFja2luZ1N0b3JlKSkKICAgICAgICAgaW1h
Z2UtPmRyYXdQYXR0ZXJuKGRlc3RDb250ZXh0LCBkZXN0UmVjdCwgYWRqdXN0ZWRTcmNSZWN0LCBw
YXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgb3B0aW9ucyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaCBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oCmluZGV4
IDVjNzU0NWJmZTY2OTI2MjBkMDEzZmRjODg2ZDc1ZWYzOWM4MWFmZGQuLjgyZmZjNjBmOTFkZDIw
ZmE5NmMwZGI0Y2EwNzlkNzhkZjhkYjQ4ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oCkBAIC00OSwxMiArNDksMTIg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXI6OnRlbXBs
YXRlIGNyZWF0ZTxSZW1vdGVJbWFnZUJ1ZmZlcj4oc2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xv
clNwYWNlLCBwaXhlbEZvcm1hdCwgbnVsbHB0ciwgcmVtb3RlUmVuZGVyaW5nQmFja2VuZCwgcmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB9CiAKLSAgICBSZW1vdGVJbWFnZUJ1ZmZl
cihzdGQ6OnVuaXF1ZV9wdHI8QmFja2VuZFR5cGU+JiYgYmFja2VuZCwgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZCYgcmVtb3RlUmVuZGVyaW5nQmFja2VuZCwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKLSAgICAgICAgOiBCYXNl
Q29uY3JldGVJbWFnZUJ1ZmZlcihXVEZNb3ZlKGJhY2tlbmQpLCByZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIpCisgICAgUmVtb3RlSW1hZ2VCdWZmZXIoc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6
OkltYWdlQnVmZmVyQmFja2VuZDo6UGFyYW1ldGVycz4mJiBwYXJhbWV0ZXJzLCBzdGQ6OnVuaXF1
ZV9wdHI8QmFja2VuZFR5cGU+JiYgYmFja2VuZCwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZCYgcmVt
b3RlUmVuZGVyaW5nQmFja2VuZCwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
IHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKKyAgICAgICAgOiBCYXNlQ29uY3JldGVJbWFn
ZUJ1ZmZlcihXVEZNb3ZlKHBhcmFtZXRlcnMpLCBXVEZNb3ZlKGJhY2tlbmQpLCByZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIpCiAgICAgICAgICwgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kKHJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQpCiAgICAgICAgICwgbV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogICAgIHsKLSAgICAgICAgbV9yZW1v
dGVSZW5kZXJpbmdCYWNrZW5kLmltYWdlQnVmZmVyQmFja2VuZFdhc0NyZWF0ZWQobV9iYWNrZW5k
LT5sb2dpY2FsU2l6ZSgpLCBtX2JhY2tlbmQtPmJhY2tlbmRTaXplKCksIG1fYmFja2VuZC0+cmVz
b2x1dGlvblNjYWxlKCksIG1fYmFja2VuZC0+Y29sb3JTcGFjZSgpLCBtX2JhY2tlbmQtPnBpeGVs
Rm9ybWF0KCksIG1fYmFja2VuZC0+Y3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKCksIHJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CisgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFj
a2VuZC5kaWRDcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQobV9iYWNrZW5kLT5jcmVhdGVJbWFnZUJ1
ZmZlckJhY2tlbmRIYW5kbGUoKSwgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB9
CiAKICAgICB+UmVtb3RlSW1hZ2VCdWZmZXIoKQpAQCAtNjUsMTcgKzY1LDYgQEAgcHVibGljOgog
ICAgICAgICAgICAgY29udGV4dCgpLnJlc3RvcmUoKTsKICAgICB9CiAKLSAgICBXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6UmVwbGF5UmVzdWx0IHN1Ym1pdERpc3BsYXlMaXN0KGNvbnN0IFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QpCi0gICAgewotICAgICAgICBp
ZiAoZGlzcGxheUxpc3QuaXNFbXB0eSgpKQotICAgICAgICAgICAgcmV0dXJuIHsgfTsKLQotICAg
ICAgICBjb25zdCBhdXRvJiBpbWFnZUJ1ZmZlcnMgPSBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQu
cmVtb3RlUmVzb3VyY2VDYWNoZSgpLmltYWdlQnVmZmVycygpOwotICAgICAgICBjb25zdCBhdXRv
JiBuYXRpdmVJbWFnZXMgPSBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQucmVtb3RlUmVzb3VyY2VD
YWNoZSgpLm5hdGl2ZUltYWdlcygpOwotICAgICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVw
bGF5ZXIgcmVwbGF5ZXIgeyBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZlcjo6Y29udGV4dCgpLCBkaXNw
bGF5TGlzdCwgJmltYWdlQnVmZmVycywgJm5hdGl2ZUltYWdlcywgdGhpcyB9OwotICAgICAgICBy
ZXR1cm4gcmVwbGF5ZXIucmVwbGF5KCk7Ci0gICAgfQotCiBwcml2YXRlOgogICAgIGJvb2wgYXBw
bHkoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1IYW5kbGUgaXRlbSwgV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0KSBvdmVycmlkZQogICAgIHsKQEAgLTEwMSw2ICs5MCwxNyBAQCBw
cml2YXRlOgogICAgICAgICByZXR1cm4gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmFwcGx5TWVk
aWFJdGVtKGl0ZW0sIGNvbnRleHQpOwogICAgIH0KIAorICAgIHZvaWQgc3VibWl0RGlzcGxheUxp
c3QoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCkg
b3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGlmIChkaXNwbGF5TGlzdC5pc0VtcHR5KCkpCisgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgY29uc3QgYXV0byYgaW1hZ2VCdWZmZXJzID0gbV9y
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kLnJlbW90ZVJlc291cmNlQ2FjaGUoKS5pbWFnZUJ1ZmZlcnMo
KTsKKyAgICAgICAgY29uc3QgYXV0byYgbmF0aXZlSW1hZ2VzID0gbV9yZW1vdGVSZW5kZXJpbmdC
YWNrZW5kLnJlbW90ZVJlc291cmNlQ2FjaGUoKS5uYXRpdmVJbWFnZXMoKTsKKyAgICAgICAgV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OlJlcGxheWVyIHJlcGxheWVyIHsgQmFzZUNvbmNyZXRlSW1hZ2VC
dWZmZXI6OmNvbnRleHQoKSwgZGlzcGxheUxpc3QsICZpbWFnZUJ1ZmZlcnMsICZuYXRpdmVJbWFn
ZXMsIHRoaXMgfTsKKyAgICAgICAgcmVwbGF5ZXIucmVwbGF5KCk7CisgICAgfQorCiAgICAgUmVt
b3RlUmVuZGVyaW5nQmFja2VuZCYgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kOwogICAgIFdlYkNv
cmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllcjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKaW5kZXggZjU5YzM4NzI0ZjhmNjJlZTc4
MDJiOTIwMjM3ZjY4ODQ3M2Q3ZmJmOS4uZDI3Njk4NjkxODVjNjMzYmJlMGFlYTA5ZDc2OTUwNzQ0
YTIxNTQ0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcApAQCAtOTksOSArOTksOSBAQCBib29s
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmFwcGx5TWVkaWFJdGVtKERpc3BsYXlMaXN0OjpJdGVt
SGFuZGxlIGl0ZW0sIEdyYXBoaQogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmQ6OmltYWdlQnVmZmVyQmFja2VuZFdhc0NyZWF0ZWQoY29uc3QgRmxvYXRT
aXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29s
dXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1h
dCwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGhhbmRsZSwgUmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKK3ZvaWQgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZDo6ZGlkQ3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kKEltYWdlQnVmZmVyQmFja2VuZEhh
bmRsZSBoYW5kbGUsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5OjpJbWFnZUJ1ZmZlckJhY2tlbmRXYXNDcmVhdGVkKGxvZ2ljYWxTaXplLCBiYWNrZW5k
U2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCwgV1RGTW92ZSho
YW5kbGUpLCByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpLCBtX3JlbmRlcmluZ0JhY2tlbmRJ
ZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHk6OkRpZENyZWF0ZUltYWdlQnVmZmVyQmFja2VuZChXVEZNb3ZlKGhhbmRsZSksIHJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllciksIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOwogfQog
CiB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmRpZEZsdXNoKERpc3BsYXlMaXN0OjpGbHVz
aElkZW50aWZpZXIgZmx1c2hJZGVudGlmaWVyLCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIg
cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQpAQCAtMTQ4LDEwICsxNDgsNyBAQCB2b2lkIFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmFwcGx5RGlzcGxheUxpc3RzRnJvbUhhbmRsZShJbWFnZUJ1
ZmZlciYgZGVzdGluYXRpbwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAg
ICAgaWYgKGRlc3RpbmF0aW9uLmlzQWNjZWxlcmF0ZWQoKSkKLSAgICAgICAgICAgIHN0YXRpY19j
YXN0PEFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXImPihkZXN0aW5hdGlvbikuc3VibWl0RGlz
cGxheUxpc3QoKmRpc3BsYXlMaXN0KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgc3RhdGlj
X2Nhc3Q8VW5hY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyJj4oZGVzdGluYXRpb24pLnN1Ym1p
dERpc3BsYXlMaXN0KCpkaXNwbGF5TGlzdCk7CisgICAgICAgIGRlc3RpbmF0aW9uLnN1Ym1pdERp
c3BsYXlMaXN0KCpkaXNwbGF5TGlzdCk7CiAKICAgICAgICAgQ2hlY2tlZFNpemUgY2hlY2tlZE9m
ZnNldCA9IG9mZnNldDsKICAgICAgICAgY2hlY2tlZE9mZnNldCArPSBzaXplVG9SZWFkOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kLmgKaW5kZXggNjQwNjY2OGZhZTA1MDU3ZTlkZjMyNjRmNTc1MjQ5NDg5ZDcw
NWM3OC4uNTkxOWU5NTY0ZjY2M2RmMzlmZmIzYzE1YjE1YTNiOGMzMjMwZjVmZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tl
bmQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVy
aW5nQmFja2VuZC5oCkBAIC03MCw3ICs3MCw3IEBAIHB1YmxpYzoKICAgICBib29sIGFwcGx5TWVk
aWFJdGVtKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtSGFuZGxlLCBXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQmKTsKIAogICAgIC8vIE1lc3NhZ2VzIHRvIGJlIHNlbnQuCi0gICAgdm9pZCBpbWFn
ZUJ1ZmZlckJhY2tlbmRXYXNDcmVhdGVkKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbG9naWNh
bFNpemUsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGJhY2tlbmRTaXplLCBmbG9hdCByZXNvbHV0
aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UsIFdlYkNvcmU6OlBpeGVsRm9ybWF0LCBJbWFn
ZUJ1ZmZlckJhY2tlbmRIYW5kbGUsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cik7CisgICAgdm9pZCBkaWRDcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQoSW1hZ2VCdWZmZXJCYWNr
ZW5kSGFuZGxlLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIHZv
aWQgZGlkRmx1c2goV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZsdXNoSWRlbnRpZmllciwgV2ViQ29y
ZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKIAogICAgIHZvaWQgc2V0TmV4dEl0ZW1C
dWZmZXJUb1JlYWQoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVM
YXllckJhY2tpbmdTdG9yZS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJl
ZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbQppbmRleCBlZjk0YzZiMDIwNTA0M2QzNzFiZjBm
OTY5NmM4ZDhjYTYzNmMwMTI1Li41ZjQ0YTM5YmMwYzE3NDI1NmQ2NzQ5OWFiYTVmMzQwYmJmM2U3
ZTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVt
b3RlTGF5ZXJCYWNraW5nU3RvcmUubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3Rl
TGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tCkBAIC0zMTUsOCArMzE1LDcgQEAg
Ym9vbCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZGlzcGxheSgpCiAKICAgICBtX2xheWVyLT5v
d25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJMYXllckRpZERpc3BsYXkobV9sYXllcik7CiAKLSAgICAv
LyBGSVhNRTogVGhpcyBtZXRob2QgaGFzIGEgd2VpcmQgbmFtZS4gVGhpcyBpcyAic3VibWl0IHdv
cmsiLgotICAgIG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXItPmZsdXNoRHJhd2luZ0NvbnRleHRB
bmRDb21taXQoKTsKKyAgICBtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVyLT5zdWJtaXREcmF3aW5n
Q29udGV4dCgpOwogCiAgICAgbV9mcm9udEJ1ZmZlckZsdXNoZXIgPSBtX2Zyb250QnVmZmVyLmlt
YWdlQnVmZmVyLT5jcmVhdGVGbHVzaGVyKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5k
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJT
aGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcAppbmRleCA4NTVjODk0OTY2YzU4N2JiMGU2YWVjNTEx
OWRlNGI5NDQ1MDg3ZDRiLi40Yzk2NDJjMzFkNzM5NzFiZDdhZjQ1YmY1NTUyZWJmMWZlM2M0NzEx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdl
QnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3Bw
CkBAIC00MywxNyArNDMsMTcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIFdURl9NQUtF
X0lTT19BTExPQ0FURURfSU1QTChJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQpOwog
Ci1zdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kPiBJbWFn
ZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHNp
emUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBQaXhlbEZv
cm1hdCBwaXhlbEZvcm1hdCwgY29uc3QgSG9zdFdpbmRvdyopCitzdGQ6OnVuaXF1ZV9wdHI8SW1h
Z2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kPiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1h
cEJhY2tlbmQ6OmNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBjb25zdCBIb3N0
V2luZG93KikKIHsKLSAgICBBU1NFUlQocGl4ZWxGb3JtYXQgPT0gUGl4ZWxGb3JtYXQ6OkJHUkE4
KTsKKyAgICBBU1NFUlQocGFyYW1ldGVycy5waXhlbEZvcm1hdCA9PSBQaXhlbEZvcm1hdDo6QkdS
QTgpOwogCi0gICAgSW50U2l6ZSBiYWNrZW5kU2l6ZSA9IGNhbGN1bGF0ZUJhY2tlbmRTaXplKHNp
emUsIHJlc29sdXRpb25TY2FsZSk7CisgICAgSW50U2l6ZSBiYWNrZW5kU2l6ZSA9IGNhbGN1bGF0
ZUJhY2tlbmRTaXplKHBhcmFtZXRlcnMubG9naWNhbFNpemUsIHBhcmFtZXRlcnMucmVzb2x1dGlv
blNjYWxlKTsKICAgICBpZiAoYmFja2VuZFNpemUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAogICAgIFNoYXJlYWJsZUJpdG1hcDo6Q29uZmlndXJhdGlvbiBjb25maWd1cmF0
aW9uOwogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIGNvbmZpZ3VyYXRpb24uY29sb3JTcGFjZSA9
IHsgY2FjaGVkQ0dDb2xvclNwYWNlKGNvbG9yU3BhY2UpIH07CisgICAgY29uZmlndXJhdGlvbi5j
b2xvclNwYWNlID0geyBjYWNoZWRDR0NvbG9yU3BhY2UocGFyYW1ldGVycy5jb2xvclNwYWNlKSB9
OwogI2VuZGlmCiAgICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJl
YWJsZShiYWNrZW5kU2l6ZSwgY29uZmlndXJhdGlvbik7CiAgICAgaWYgKCFiaXRtYXApCkBAIC02
MywxMCArNjMsMTAgQEAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFw
QmFja2VuZD4gSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWMKICAgICBpZiAoIWNvbnRleHQp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIG1ha2VVbmlxdWU8SW1hZ2VC
dWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kPihzaXplLCBiYWNrZW5kU2l6ZSwgcmVzb2x1dGlv
blNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCwgV1RGTW92ZShiaXRtYXApLCBXVEZNb3Zl
KGNvbnRleHQpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxJbWFnZUJ1ZmZlclNoYXJlYWJsZUJp
dG1hcEJhY2tlbmQ+KHBhcmFtZXRlcnMsIFdURk1vdmUoYml0bWFwKSwgV1RGTW92ZShjb250ZXh0
KSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tl
bmQ+IEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6Y3JlYXRlKGNvbnN0IEZsb2F0
U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEludFNpemUmIGJhY2tlbmRTaXplLCBmbG9hdCByZXNv
bHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3Jt
YXQsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBoYW5kbGUpCitzdGQ6OnVuaXF1ZV9wdHI8SW1h
Z2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kPiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1h
cEJhY2tlbmQ6OmNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBJbWFnZUJ1ZmZl
ckJhY2tlbmRIYW5kbGUgaGFuZGxlKQogewogICAgIGlmICghV1RGOjpob2xkc19hbHRlcm5hdGl2
ZTxTaGFyZWFibGVCaXRtYXA6OkhhbmRsZT4oaGFuZGxlKSkgewogICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKQEAgLTgxLDExICs4MSwxMSBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZm
ZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kPiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhYwog
ICAgIGlmICghY29udGV4dCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4g
bWFrZVVuaXF1ZTxJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ+KGxvZ2ljYWxTaXpl
LCBiYWNrZW5kU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCwg
V1RGTW92ZShiaXRtYXApLCBXVEZNb3ZlKGNvbnRleHQpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1
ZTxJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ+KHBhcmFtZXRlcnMsIFdURk1vdmUo
Yml0bWFwKSwgV1RGTW92ZShjb250ZXh0KSk7CiB9CiAKLUltYWdlQnVmZmVyU2hhcmVhYmxlQml0
bWFwQmFja2VuZDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kKGNvbnN0IEZsb2F0
U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEludFNpemUmIHBoeXNpY2FsU2l6ZSwgZmxvYXQgcmVz
b2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9y
bWF0LCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiYmIGJpdG1hcCwgc3RkOjp1bmlxdWVfcHRyPEdy
YXBoaWNzQ29udGV4dD4mJiBjb250ZXh0KQotICAgIDogUGxhdGZvcm1JbWFnZUJ1ZmZlckJhY2tl
bmQobG9naWNhbFNpemUsIHBoeXNpY2FsU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNl
LCBwaXhlbEZvcm1hdCkKK0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6SW1hZ2VC
dWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMs
IFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+JiYgYml0bWFwLCBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhp
Y3NDb250ZXh0PiYmIGNvbnRleHQpCisgICAgOiBQbGF0Zm9ybUltYWdlQnVmZmVyQmFja2VuZChw
YXJhbWV0ZXJzKQogICAgICwgbV9iaXRtYXAoV1RGTW92ZShiaXRtYXApKQogICAgICwgbV9jb250
ZXh0KFdURk1vdmUoY29udGV4dCkpCiB7CkBAIC05OCw2ICs5OCwxMSBAQCBJbWFnZUJ1ZmZlckJh
Y2tlbmRIYW5kbGUgSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpjcmVhdGVJbWFn
ZUJ1ZmZlckJhYwogICAgIHJldHVybiBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUoV1RGTW92ZSho
YW5kbGUpKTsKIH0KIAorSW50U2l6ZSBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6
OmJhY2tlbmRTaXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9iaXRtYXAtPnNpemUoKTsKK30K
KwogUmVmUHRyPE5hdGl2ZUltYWdlPiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6
OmNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5KSBjb25zdAogewogI2lmIFVTRShDRykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VC
dWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5oCmluZGV4IDBj
N2YwNDdmODgzNWU0YjhkNjNjMTVmNDFlYzkyMTAyZTQ1ODUzOTkuLjU1NTA2YTQ5ZDAzZTM5ZTg4
ZTAzNjFlNDkxNTVmMTMxZDc5OTAxMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJl
YWJsZUJpdG1hcEJhY2tlbmQuaApAQCAtNDMsMTQgKzQzLDE2IEBAIGNsYXNzIEltYWdlQnVmZmVy
U2hhcmVhYmxlQml0bWFwQmFja2VuZCA6IHB1YmxpYyBXZWJDb3JlOjpQbGF0Zm9ybUltYWdlQnVm
ZmVyQmFjCiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChJbWFnZUJ1ZmZlclNoYXJlYWJsZUJp
dG1hcEJhY2tlbmQpOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEltYWdlQnVmZmVyU2hhcmVh
YmxlQml0bWFwQmFja2VuZCk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJ
bWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpG
bG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNv
cmU6OkNvbG9yU3BhY2UsIFdlYkNvcmU6OlBpeGVsRm9ybWF0LCBjb25zdCBXZWJDb3JlOjpIb3N0
V2luZG93Kik7Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlclNoYXJlYWJs
ZUJpdG1hcEJhY2tlbmQ+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxT
aXplLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBpbnRlcm5hbFNpemUsIGZsb2F0IHJlc29sdXRp
b25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSwgV2ViQ29yZTo6UGl4ZWxGb3JtYXQsIEltYWdl
QnVmZmVyQmFja2VuZEhhbmRsZSk7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1
ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ+IGNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiwgY29u
c3QgV2ViQ29yZTo6SG9zdFdpbmRvdyopOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1h
Z2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kPiBjcmVhdGUoY29uc3QgUGFyYW1ldGVycyYs
IEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSk7CiAKLSAgICBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJp
dG1hcEJhY2tlbmQoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3Qg
V2ViQ29yZTo6SW50U2l6ZSYgcGh5c2ljYWxTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdl
YkNvcmU6OkNvbG9yU3BhY2UsIFdlYkNvcmU6OlBpeGVsRm9ybWF0LCBSZWZQdHI8U2hhcmVhYmxl
Qml0bWFwPiYmLCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0PiYmKTsK
KyAgICBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQoY29uc3QgUGFyYW1ldGVycyYs
IFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+JiYsIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQ+JiYpOwogCiAgICAgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGNyZWF0ZUlt
YWdlQnVmZmVyQmFja2VuZEhhbmRsZSgpIGNvbnN0OwogCiAgICAgV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gKm1fY29udGV4dDsgfQor
ICAgIAorICAgIFdlYkNvcmU6OkludFNpemUgYmFja2VuZFNpemUoKSBjb25zdCBvdmVycmlkZTsK
IAogICAgIFJlZlB0cjxXZWJDb3JlOjpOYXRpdmVJbWFnZT4gY29weU5hdGl2ZUltYWdlKFdlYkNv
cmU6OkJhY2tpbmdTdG9yZUNvcHkgPSBXZWJDb3JlOjpDb3B5QmFja2luZ1N0b3JlKSBjb25zdCBv
dmVycmlkZTsKICAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2U+IGNvcHlJbWFnZShXZWJDb3JlOjpC
YWNraW5nU3RvcmVDb3B5ID0gV2ViQ29yZTo6Q29weUJhY2tpbmdTdG9yZSwgV2ViQ29yZTo6UHJl
c2VydmVSZXNvbHV0aW9uID0gV2ViQ29yZTo6UHJlc2VydmVSZXNvbHV0aW9uOjpObykgY29uc3Qg
b3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1BsYXRmb3JtUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9QbGF0Zm9ybVJlbW90ZUltYWdlQnVmZmVyUHJveHkuaAppbmRl
eCAwNTE3Njc4M2Q1NTMxYmZlNzBmODUwYmYyYzE0OWY3ODgyMmQwZTM5Li45YWZmMDg4ZTM3Y2E3
NmE3Zjg2NGFlN2U0MmJiYjcwMDRmMWYxNTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1BsYXRmb3JtUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUGxhdGZvcm1SZW1vdGVJ
bWFnZUJ1ZmZlclByb3h5LmgKQEAgLTM3LDE0ICszNyw0IEBAIHVzaW5nIEFjY2VsZXJhdGVkUmVt
b3RlSW1hZ2VCdWZmZXJQcm94eSA9IFJlbW90ZUltYWdlQnVmZmVyUHJveHk8QWNjZWxlcmF0ZWRJ
bWFnCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JF
R0lOKFdlYktpdDo6VW5hY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyUHJveHkpCi0gICAgc3Rh
dGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OkltYWdlQnVmZmVyJiBpbWFnZUJ1ZmZlcikg
eyByZXR1cm4gaW1hZ2VCdWZmZXIucmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCkgJiYgIWlt
YWdlQnVmZmVyLmlzQWNjZWxlcmF0ZWQoKTsgfQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQo
KQotCi0jaWYgSEFWRShJT1NVUkZBQ0UpCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdl
YktpdDo6QWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlclByb3h5KQotICAgIHN0YXRpYyBib29s
IGlzVHlwZShjb25zdCBXZWJDb3JlOjpJbWFnZUJ1ZmZlciYgaW1hZ2VCdWZmZXIpIHsgcmV0dXJu
IGltYWdlQnVmZmVyLnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpICYmIGltYWdlQnVmZmVy
LmlzQWNjZWxlcmF0ZWQoKTsgfQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQotI2VuZGlm
Ci0KICNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94
eS5oCmluZGV4IDMxY2QwMmQxYjBmMjFlZGU1ODIyYmY5NDViYWQ0NmVkZWYxZWIzN2EuLmUxZjRj
ZDRjYTc4NTY0ODY3NmQwMDM5ZDk5MjQ2MTU0ZThjZWFmNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZm
ZXJQcm94eS5oCkBAIC01MCwxNCArNTAsMTYgQEAgY2xhc3MgUmVtb3RlSW1hZ2VCdWZmZXJQcm94
eSA6IHB1YmxpYyBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SW1hZ2VCdWZmZXI8QmFja2VuZFQKICAg
ICB1c2luZyBCYXNlRGlzcGxheUxpc3RJbWFnZUJ1ZmZlcjo6bV9iYWNrZW5kOwogICAgIHVzaW5n
IEJhc2VEaXNwbGF5TGlzdEltYWdlQnVmZmVyOjptX2RyYXdpbmdDb250ZXh0OwogICAgIHVzaW5n
IEJhc2VEaXNwbGF5TGlzdEltYWdlQnVmZmVyOjptX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cjsKKyAgICB1c2luZyBCYXNlRGlzcGxheUxpc3RJbWFnZUJ1ZmZlcjo6cmVzb2x1dGlvblNjYWxl
OwogCiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxSZW1vdGVJbWFnZUJ1ZmZlclByb3h5PiBj
cmVhdGUoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBzaXplLCBXZWJDb3JlOjpSZW5kZXJpbmdN
b2RlIHJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JT
cGFjZSBjb2xvclNwYWNlLCBXZWJDb3JlOjpQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5JiByZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpCisgICAg
c3RhdGljIFJlZlB0cjxSZW1vdGVJbWFnZUJ1ZmZlclByb3h5PiBjcmVhdGUoY29uc3QgV2ViQ29y
ZTo6RmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9y
U3BhY2UgY29sb3JTcGFjZSwgV2ViQ29yZTo6UGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIFJlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSYgcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KQogICAg
IHsKICAgICAgICAgaWYgKEJhY2tlbmRUeXBlOjpjYWxjdWxhdGVCYWNrZW5kU2l6ZShzaXplLCBy
ZXNvbHV0aW9uU2NhbGUpLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwog
Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgUmVtb3RlSW1hZ2VCdWZmZXJQcm94eShzaXpl
LCByZW5kZXJpbmdNb2RlLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0
LCByZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpKTsKKyAgICAgICAgYXV0byBwYXJhbWV0ZXJz
ID0gc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyQmFja2VuZDo6UGFyYW1ldGVy
cz4obmV3IFdlYkNvcmU6OkltYWdlQnVmZmVyQmFja2VuZDo6UGFyYW1ldGVycyh7IHNpemUsIHJl
c29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQgfSkpOworICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IFJlbW90ZUltYWdlQnVmZmVyUHJveHkoV1RGTW92ZShwYXJhbWV0ZXJz
KSwgcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KSk7CiAgICAgfQogCiAgICAgflJlbW90ZUlt
YWdlQnVmZmVyUHJveHkoKQpAQCAtNjksMjcgKzcxLDYgQEAgcHVibGljOgogICAgICAgICBtX3Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+cmVsZWFzZVJlbW90ZVJlc291cmNlKG1fcmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB9CiAKLSAgICB2b2lkIGNsZWFyQmFja2VuZCgp
IHsgbV9iYWNrZW5kID0gbnVsbHB0cjsgfQotCi0gICAgdm9pZCBjcmVhdGVCYWNrZW5kKGNvbnN0
IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IFdlYkNvcmU6OkludFNpemUm
IGJhY2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2Ug
Y29sb3JTcGFjZSwgV2ViQ29yZTo6UGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIEltYWdlQnVmZmVy
QmFja2VuZEhhbmRsZSBoYW5kbGUpCi0gICAgewotICAgICAgICBBU1NFUlQoIW1fYmFja2VuZCk7
Ci0gICAgICAgIG1fYmFja2VuZCA9IEJhY2tlbmRUeXBlOjpjcmVhdGUobG9naWNhbFNpemUsIGJh
Y2tlbmRTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0LCBXVEZN
b3ZlKGhhbmRsZSkpOwotICAgIH0KLQotICAgIHZvaWQgZGlkRmx1c2goV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OkZsdXNoSWRlbnRpZmllciBmbHVzaElkZW50aWZpZXIpCi0gICAgewotICAgICAgICBh
dXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fcmVjZWl2ZWRGbHVzaElkZW50aWZpZXJMb2NrKTsKLSAg
ICAgICAgbV9yZWNlaXZlZEZsdXNoSWRlbnRpZmllciA9IGZsdXNoSWRlbnRpZmllcjsKLSAgICAg
ICAgbV9yZWNlaXZlZEZsdXNoSWRlbnRpZmllckNoYW5nZWRDb25kaXRpb24ubm90aWZ5QWxsKCk7
Ci0gICAgfQotCi0gICAgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBzaXplKCkgY29uc3QgeyBy
ZXR1cm4gbV9zaXplOyB9Ci0gICAgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2Rl
KCkgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJpbmdNb2RlOyB9Ci0gICAgZmxvYXQgcmVzb2x1dGlv
blNjYWxlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9yZXNvbHV0aW9uU2NhbGU7IH0KLSAgICBX
ZWJDb3JlOjpDb2xvclNwYWNlIGNvbG9yU3BhY2UoKSBjb25zdCB7IHJldHVybiBtX2NvbG9yU3Bh
Y2U7IH0KLSAgICBXZWJDb3JlOjpQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCgpIGNvbnN0IHsgcmV0
dXJuIG1fcGl4ZWxGb3JtYXQ7IH0KLQogICAgIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBjcmVh
dGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUoKQogICAgIHsKICAgICAgICAgZW5zdXJlQmFja2Vu
ZENyZWF0ZWQoKTsKQEAgLTExMiwxNSArOTMsOSBAQCBwdWJsaWM6CiAgICAgfQogCiBwcm90ZWN0
ZWQ6Ci0gICAgZnJpZW5kIGNsYXNzIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ7Ci0gICAgUmVtb3Rl
SW1hZ2VCdWZmZXJQcm94eShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHNpemUsIFdlYkNvcmU6
OlJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJD
b3JlOjpDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFdlYkNvcmU6OlBpeGVsRm9ybWF0IHBpeGVsRm9y
bWF0LCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkmIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eSkKLSAgICAgICAgOiBCYXNlRGlzcGxheUxpc3RJbWFnZUJ1ZmZlcihzaXplLCB0aGlzKQor
ICAgIFJlbW90ZUltYWdlQnVmZmVyUHJveHkoc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkltYWdl
QnVmZmVyQmFja2VuZDo6UGFyYW1ldGVycz4mJiBwYXJhbWV0ZXJzLCBSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHkmIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKKyAgICAgICAgOiBCYXNl
RGlzcGxheUxpc3RJbWFnZUJ1ZmZlcihXVEZNb3ZlKHBhcmFtZXRlcnMpLCB0aGlzKQogICAgICAg
ICAsIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KG1ha2VXZWFrUHRyKHJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eSkpCi0gICAgICAgICwgbV9zaXplKHNpemUpCi0gICAgICAgICwgbV9y
ZW5kZXJpbmdNb2RlKHJlbmRlcmluZ01vZGUpCi0gICAgICAgICwgbV9yZXNvbHV0aW9uU2NhbGUo
cmVzb2x1dGlvblNjYWxlKQotICAgICAgICAsIG1fY29sb3JTcGFjZShjb2xvclNwYWNlKQotICAg
ICAgICAsIG1fcGl4ZWxGb3JtYXQocGl4ZWxGb3JtYXQpCiAgICAgewogICAgICAgICBBU1NFUlQo
bV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpOwogICAgICAgICBtX3JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eS0+cmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5KCkuY2FjaGVJbWFnZUJ1ZmZl
cigqdGhpcyk7CkBAIC0xMzEsNiArMTA2LDEzIEBAIHByb3RlY3RlZDoKIAogICAgIGJvb2wgaGFz
UGVuZGluZ0ZsdXNoKCkgY29uc3QgeyByZXR1cm4gbV9zZW50Rmx1c2hJZGVudGlmaWVyICE9IG1f
cmVjZWl2ZWRGbHVzaElkZW50aWZpZXI7IH0KIAorICAgIHZvaWQgZGlkRmx1c2goV2ViQ29yZTo6
RGlzcGxheUxpc3Q6OkZsdXNoSWRlbnRpZmllciBmbHVzaElkZW50aWZpZXIpIG92ZXJyaWRlCisg
ICAgeworICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fcmVjZWl2ZWRGbHVzaElkZW50
aWZpZXJMb2NrKTsKKyAgICAgICAgbV9yZWNlaXZlZEZsdXNoSWRlbnRpZmllciA9IGZsdXNoSWRl
bnRpZmllcjsKKyAgICAgICAgbV9yZWNlaXZlZEZsdXNoSWRlbnRpZmllckNoYW5nZWRDb25kaXRp
b24ubm90aWZ5QWxsKCk7CisgICAgfQorCiAgICAgdm9pZCB3YWl0Rm9yRGlkRmx1c2hXaXRoVGlt
ZW91dCgpCiAgICAgewogICAgICAgICBpZiAoIW1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
KQpAQCAtMTQ1LDcgKzEyNyw3IEBAIHByb3RlY3RlZDoKICAgICBCYWNrZW5kVHlwZSogZW5zdXJl
QmFja2VuZENyZWF0ZWQoKSBjb25zdCBvdmVycmlkZQogICAgIHsKICAgICAgICAgaWYgKCFtX2Jh
Y2tlbmQgJiYgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpCi0gICAgICAgICAgICBtX3Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+d2FpdEZvckltYWdlQnVmZmVyQmFja2VuZFdhc0Ny
ZWF0ZWQoKTsKKyAgICAgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT53YWl0
Rm9yRGlkQ3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kKCk7CiAgICAgICAgIHJldHVybiBtX2JhY2tl
bmQuZ2V0KCk7CiAgICAgfQogCkBAIC0xNjksOCArMTUxLDggQEAgcHJvdGVjdGVkOgogICAgIHZv
aWQgcHV0SW1hZ2VEYXRhKFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb24gaW5wdXRGb3Jt
YXQsIGNvbnN0IFdlYkNvcmU6OkltYWdlRGF0YSYgaW1hZ2VEYXRhLCBjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0JiBzcmNSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZGVzdFBvaW50ID0geyB9
LCBXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIGRlc3RGb3JtYXQgPSBXZWJDb3JlOjpB
bHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkKSBvdmVycmlkZQogICAgIHsKICAg
ICAgICAgLy8gVGhlIG1hdGggaW5zaWRlIEltYWdlRGF0YTo6Y3JlYXRlKCkgZG9lc24ndCBhZ3Jl
ZSB3aXRoIHRoZSBtYXRoIGluc2lkZSBJbWFnZUJ1ZmZlckJhY2tlbmQ6OnB1dEltYWdlRGF0YSgp
IGFib3V0IGhvdyBtX3Jlc29sdXRpb25TY2FsZSBpbnRlcmFjdHMgd2l0aCB0aGUgZGF0YSBpbiB0
aGUgSW1hZ2VCdWZmZXIuCi0gICAgICAgIC8vIFRoaXMgbWVhbnMgdGhhdCBwdXRJbWFnZURhdGEo
KSBpcyBvbmx5IGNhbGxlZCB3aGVuIG1fcmVzb2x1dGlvblNjYWxlID09IDEuCi0gICAgICAgIEFT
U0VSVF9JTVBMSUVTKG1fYmFja2VuZCwgbV9iYWNrZW5kLT5yZXNvbHV0aW9uU2NhbGUoKSA9PSAx
KTsKKyAgICAgICAgLy8gVGhpcyBtZWFucyB0aGF0IHB1dEltYWdlRGF0YSgpIGlzIG9ubHkgY2Fs
bGVkIHdoZW4gcmVzb2x1dGlvblNjYWxlKCkgPT0gMS4KKyAgICAgICAgQVNTRVJUKHJlc29sdXRp
b25TY2FsZSgpID09IDEpOwogICAgICAgICBtX2RyYXdpbmdDb250ZXh0LnJlY29yZGVyKCkucHV0
SW1hZ2VEYXRhKGlucHV0Rm9ybWF0LCBpbWFnZURhdGEsIHNyY1JlY3QsIGRlc3RQb2ludCwgZGVz
dEZvcm1hdCk7CiAgICAgfQogCkBAIC0xODUsMTEgKzE2NywxMSBAQCBwcm90ZWN0ZWQ6CiAgICAg
dm9pZCBmbHVzaERyYXdpbmdDb250ZXh0KCkgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIFRyYWNl
U2NvcGUgdHJhY2luZ1Njb3BlKEZsdXNoUmVtb3RlSW1hZ2VCdWZmZXJTdGFydCwgRmx1c2hSZW1v
dGVJbWFnZUJ1ZmZlckVuZCk7Ci0gICAgICAgIGZsdXNoRHJhd2luZ0NvbnRleHRBbmRDb21taXQo
KTsKKyAgICAgICAgc3VibWl0RHJhd2luZ0NvbnRleHQoKTsKICAgICAgICAgd2FpdEZvckRpZEZs
dXNoV2l0aFRpbWVvdXQoKTsKICAgICB9CiAKLSAgICB2b2lkIGZsdXNoRHJhd2luZ0NvbnRleHRB
bmRDb21taXQoKSBvdmVycmlkZQorICAgIHZvaWQgc3VibWl0RHJhd2luZ0NvbnRleHQoKSBvdmVy
cmlkZQogICAgIHsKICAgICAgICAgaWYgKCFtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkK
ICAgICAgICAgICAgIHJldHVybjsKQEAgLTIwMCwxMiArMTgyLDEyIEBAIHByb3RlY3RlZDoKIAog
ICAgICAgICBtX3NlbnRGbHVzaElkZW50aWZpZXIgPSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Rmx1
c2hJZGVudGlmaWVyOjpnZW5lcmF0ZSgpOwogICAgICAgICBkaXNwbGF5TGlzdC50ZW1wbGF0ZSBh
cHBlbmQ8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZsdXNoQ29udGV4dD4obV9zZW50Rmx1c2hJZGVu
dGlmaWVyKTsKLSAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHktPnN1Ym1pdERp
c3BsYXlMaXN0KGRpc3BsYXlMaXN0LCBtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7Ci0g
ICAgICAgIG1faXRlbUNvdW50SW5DdXJyZW50RGlzcGxheUxpc3QgPSAwOworICAgICAgICBzdWJt
aXREaXNwbGF5TGlzdChkaXNwbGF5TGlzdCk7CiAgICAgICAgIGRpc3BsYXlMaXN0LmNsZWFyKCk7
CisgICAgICAgIG1faXRlbUNvdW50SW5DdXJyZW50RGlzcGxheUxpc3QgPSAwOwogICAgIH0KIAot
ICAgIHZvaWQgc3VibWl0RGlzcGxheUxpc3QoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRp
c3BsYXlMaXN0JiBkaXNwbGF5TGlzdCkKKyAgICB2b2lkIHN1Ym1pdERpc3BsYXlMaXN0KGNvbnN0
IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QpIG92ZXJyaWRl
CiAgICAgewogICAgICAgICBpZiAoIW1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5IHx8IGRp
c3BsYXlMaXN0LmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTM1MSwxMSArMzMz
LDYgQEAgcHJvdGVjdGVkOgogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpGbHVzaElkZW50aWZp
ZXIgbV9yZWNlaXZlZEZsdXNoSWRlbnRpZmllcjsKICAgICBXZWFrUHRyPFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eT4gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk7CiAgICAgc2l6ZV90
IG1faXRlbUNvdW50SW5DdXJyZW50RGlzcGxheUxpc3QgeyAwIH07Ci0gICAgV2ViQ29yZTo6Rmxv
YXRTaXplIG1fc2l6ZTsKLSAgICBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlIG1fcmVuZGVyaW5nTW9k
ZTsKLSAgICBmbG9hdCBtX3Jlc29sdXRpb25TY2FsZTsKLSAgICBXZWJDb3JlOjpDb2xvclNwYWNl
IG1fY29sb3JTcGFjZTsKLSAgICBXZWJDb3JlOjpQaXhlbEZvcm1hdCBtX3BpeGVsRm9ybWF0Owog
fTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgQmFja2VuZFR5cGU+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eS5jcHAKaW5kZXggZTUyY2E0MDczNWU5NzllMzg3ZDgzZDE0ZDI3YzQ5
NjYxNzhlY2ZjNy4uYzY0MzU2MWQ0OTIwOTE3NGFiZmU5MTMyN2QwYjQ4MGRkZWYwMDczMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcApAQCAtNzAsMjQgKzcwLDE1
IEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Ojpjb25uZWN0VG9HUFVQcm9jZXNz
KCkKICAgICBzZW5kKE1lc3NhZ2VzOjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDcmVhdGVS
ZW5kZXJpbmdCYWNrZW5kKG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpLCAwKTsKIH0KIAot
dGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0YXRpYyB2b2lkIHJlY3JlYXRlSW1hZ2VCdWZmZXIoUmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5JiBwcm94eSwgVCYgaW1hZ2VCdWZmZXIsIFJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllciByZXNvdXJjZUlkZW50aWZpZXIsIFJlbmRlcmluZ0JhY2tlbmRJ
ZGVudGlmaWVyIHJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKQotewotICAgIGltYWdlQnVmZmVy
LmNsZWFyQmFja2VuZCgpOwotICAgIHByb3h5LnNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQ6OkNyZWF0ZUltYWdlQnVmZmVyKGltYWdlQnVmZmVyLnNpemUoKSwgaW1hZ2VCdWZm
ZXIucmVuZGVyaW5nTW9kZSgpLCBpbWFnZUJ1ZmZlci5yZXNvbHV0aW9uU2NhbGUoKSwgaW1hZ2VC
dWZmZXIuY29sb3JTcGFjZSgpLCBpbWFnZUJ1ZmZlci5waXhlbEZvcm1hdCgpLCByZXNvdXJjZUlk
ZW50aWZpZXIpLCByZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7Ci19Ci0KIHZvaWQgUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5OjpyZWVzdGFibGlzaEdQVVByb2Nlc3NDb25uZWN0aW9uKCkK
IHsKICAgICBjb25uZWN0VG9HUFVQcm9jZXNzKCk7CiAKLSAgICBmb3IgKGF1dG8mIHBhaXIgOiBt
X3JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5pbWFnZUJ1ZmZlcnMoKSkgewotICAgICAgICBpZiAo
YXV0byYgYmFzZUltYWdlQnVmZmVyID0gcGFpci52YWx1ZSkgewotICAgICAgICAgICAgaWYgKGlz
PEFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXJQcm94eT4oKmJhc2VJbWFnZUJ1ZmZlcikpCi0g
ICAgICAgICAgICAgICAgcmVjcmVhdGVJbWFnZUJ1ZmZlcigqdGhpcywgZG93bmNhc3Q8QWNjZWxl
cmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlclByb3h5PigqYmFzZUltYWdlQnVmZmVyKSwgcGFpci5rZXks
IG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOwotICAgICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgICAgIHJlY3JlYXRlSW1hZ2VCdWZmZXIoKnRoaXMsIGRvd25jYXN0PFVuYWNjZWxlcmF0
ZWRSZW1vdGVJbWFnZUJ1ZmZlclByb3h5PigqYmFzZUltYWdlQnVmZmVyKSwgcGFpci5rZXksIG1f
cmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOwotICAgICAgICB9CisgICAgZm9yIChhdXRvJiBp
bWFnZUJ1ZmZlciA6IG1fcmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmltYWdlQnVmZmVycygpLnZh
bHVlcygpKSB7CisgICAgICAgIGlmICghaW1hZ2VCdWZmZXIpCisgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Q3JlYXRl
SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXItPmxvZ2ljYWxTaXplKCksIGltYWdlQnVmZmVyLT5yZW5k
ZXJpbmdNb2RlKCksIGltYWdlQnVmZmVyLT5yZXNvbHV0aW9uU2NhbGUoKSwgaW1hZ2VCdWZmZXIt
PmNvbG9yU3BhY2UoKSwgaW1hZ2VCdWZmZXItPnBpeGVsRm9ybWF0KCksIGltYWdlQnVmZmVyLT5y
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSksIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZp
ZXIpOworICAgICAgICBpbWFnZUJ1ZmZlci0+Y2xlYXJCYWNrZW5kKCk7CiAgICAgfQogfQogCkBA
IC0xMTIsMTAgKzEwMywxMCBAQCB1aW50NjRfdCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6
Om1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QKICAgICByZXR1cm4gbV9yZW5kZXJp
bmdCYWNrZW5kSWRlbnRpZmllci50b1VJbnQ2NCgpOwogfQogCi1ib29sIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eTo6d2FpdEZvckltYWdlQnVmZmVyQmFja2VuZFdhc0NyZWF0ZWQoKQorYm9v
bCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OndhaXRGb3JEaWRDcmVhdGVJbWFnZUJ1ZmZl
ckJhY2tlbmQoKQogewogICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IGNvbm5lY3Rpb24gPSBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rp
b24oKTsKLSAgICByZXR1cm4gY29ubmVjdGlvbi0+d2FpdEZvckFuZERpc3BhdGNoSW1tZWRpYXRl
bHk8TWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6SW1hZ2VCdWZmZXJCYWNr
ZW5kV2FzQ3JlYXRlZD4obV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciwgMV9zLCBJUEM6Oldh
aXRGb3JPcHRpb246OkludGVycnVwdFdhaXRpbmdJZlN5bmNNZXNzYWdlQXJyaXZlcyk7CisgICAg
cmV0dXJuIGNvbm5lY3Rpb24tPndhaXRGb3JBbmREaXNwYXRjaEltbWVkaWF0ZWx5PE1lc3NhZ2Vz
OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OkRpZENyZWF0ZUltYWdlQnVmZmVyQmFja2Vu
ZD4obV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciwgMV9zLCBJUEM6OldhaXRGb3JPcHRpb246
OkludGVycnVwdFdhaXRpbmdJZlN5bmNNZXNzYWdlQXJyaXZlcyk7CiB9CiAKIGJvb2wgUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5Ojp3YWl0Rm9yRGlkRmx1c2goKQpAQCAtMTI5LDEwICsxMjAs
MTAgQEAgUmVmUHRyPEltYWdlQnVmZmVyPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmNy
ZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2kKICAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+IGlt
YWdlQnVmZmVyOwogCiAgICAgaWYgKHJlbmRlcmluZ01vZGUgPT0gUmVuZGVyaW5nTW9kZTo6QWNj
ZWxlcmF0ZWQpCi0gICAgICAgIGltYWdlQnVmZmVyID0gQWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1
ZmZlclByb3h5OjpjcmVhdGUoc2l6ZSwgcmVuZGVyaW5nTW9kZSwgcmVzb2x1dGlvblNjYWxlLCBj
b2xvclNwYWNlLCBwaXhlbEZvcm1hdCwgKnRoaXMpOworICAgICAgICBpbWFnZUJ1ZmZlciA9IEFj
Y2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6Y3JlYXRlKHNpemUsIHJlc29sdXRpb25T
Y2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQsICp0aGlzKTsKIAogICAgIGlmICghaW1hZ2VC
dWZmZXIpCi0gICAgICAgIGltYWdlQnVmZmVyID0gVW5hY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVm
ZmVyUHJveHk6OmNyZWF0ZShzaXplLCByZW5kZXJpbmdNb2RlLCByZXNvbHV0aW9uU2NhbGUsIGNv
bG9yU3BhY2UsIHBpeGVsRm9ybWF0LCAqdGhpcyk7CisgICAgICAgIGltYWdlQnVmZmVyID0gVW5h
Y2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyUHJveHk6OmNyZWF0ZShzaXplLCByZXNvbHV0aW9u
U2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0LCAqdGhpcyk7CiAKICAgICBpZiAoaW1hZ2VC
dWZmZXIpIHsKICAgICAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6
Q3JlYXRlSW1hZ2VCdWZmZXIoc2l6ZSwgcmVuZGVyaW5nTW9kZSwgcmVzb2x1dGlvblNjYWxlLCBj
b2xvclNwYWNlLCBwaXhlbEZvcm1hdCwgaW1hZ2VCdWZmZXItPnJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcigpKSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7CkBAIC0xODMsMjggKzE3
NCwyMiBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6cmVsZWFzZVJlbW90ZVJl
c291cmNlKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZgogICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZVJlbmRlcmluZ0JhY2tlbmQ6OlJlbGVhc2VSZW1vdGVSZXNvdXJjZShyZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIpLCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKIH0KIAotdm9pZCBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmltYWdlQnVmZmVyQmFja2VuZFdhc0NyZWF0ZWQo
Y29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50U2l6ZSYgYmFja2VuZFNpemUs
IGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBQaXhlbEZvcm1h
dCBwaXhlbEZvcm1hdCwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGhhbmRsZSwgUmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKK3ZvaWQgUmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpkaWRDcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQoSW1h
Z2VCdWZmZXJCYWNrZW5kSGFuZGxlIGhhbmRsZSwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
IHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKIHsKICAgICBhdXRvIGltYWdlQnVmZmVyID0g
bV9yZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY2FjaGVkSW1hZ2VCdWZmZXIocmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyKTsKICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAgICAgICByZXR1cm47
Ci0gICAgCi0gICAgaWYgKGltYWdlQnVmZmVyLT5pc0FjY2VsZXJhdGVkKCkpCi0gICAgICAgIGRv
d25jYXN0PEFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXJQcm94eT4oKmltYWdlQnVmZmVyKS5j
cmVhdGVCYWNrZW5kKGxvZ2ljYWxTaXplLCBiYWNrZW5kU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBj
b2xvclNwYWNlLCBwaXhlbEZvcm1hdCwgV1RGTW92ZShoYW5kbGUpKTsKKworICAgIGlmIChpbWFn
ZUJ1ZmZlci0+cmVuZGVyaW5nTW9kZSgpID09IFJlbmRlcmluZ01vZGU6OkFjY2VsZXJhdGVkKQor
ICAgICAgICBpbWFnZUJ1ZmZlci0+c2V0QmFja2VuZChBY2NlbGVyYXRlZEltYWdlQnVmZmVyU2hh
cmVhYmxlQmFja2VuZDo6Y3JlYXRlKGltYWdlQnVmZmVyLT5wYXJhbWV0ZXJzKCksIFdURk1vdmUo
aGFuZGxlKSkpOwogICAgIGVsc2UKLSAgICAgICAgZG93bmNhc3Q8VW5hY2NlbGVyYXRlZFJlbW90
ZUltYWdlQnVmZmVyUHJveHk+KCppbWFnZUJ1ZmZlcikuY3JlYXRlQmFja2VuZChsb2dpY2FsU2l6
ZSwgYmFja2VuZFNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQs
IFdURk1vdmUoaGFuZGxlKSk7CisgICAgICAgIGltYWdlQnVmZmVyLT5zZXRCYWNrZW5kKFVuYWNj
ZWxlcmF0ZWRJbWFnZUJ1ZmZlclNoYXJlYWJsZUJhY2tlbmQ6OmNyZWF0ZShpbWFnZUJ1ZmZlci0+
cGFyYW1ldGVycygpLCBXVEZNb3ZlKGhhbmRsZSkpKTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHk6OmRpZEZsdXNoKERpc3BsYXlMaXN0OjpGbHVzaElkZW50aWZpZXIgZmx1
c2hJZGVudGlmaWVyLCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyKQogewotICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBtX3JlbW90ZVJlc291cmNl
Q2FjaGVQcm94eS5jYWNoZWRJbWFnZUJ1ZmZlcihyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIp
OwotICAgIGlmICghaW1hZ2VCdWZmZXIpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChpbWFn
ZUJ1ZmZlci0+aXNBY2NlbGVyYXRlZCgpKQotICAgICAgICBkb3duY2FzdDxBY2NlbGVyYXRlZFJl
bW90ZUltYWdlQnVmZmVyUHJveHk+KCppbWFnZUJ1ZmZlcikuZGlkRmx1c2goZmx1c2hJZGVudGlm
aWVyKTsKLSAgICBlbHNlCi0gICAgICAgIGRvd25jYXN0PFVuYWNjZWxlcmF0ZWRSZW1vdGVJbWFn
ZUJ1ZmZlclByb3h5PigqaW1hZ2VCdWZmZXIpLmRpZEZsdXNoKGZsdXNoSWRlbnRpZmllcik7Cisg
ICAgaWYgKGF1dG8gaW1hZ2VCdWZmZXIgPSBtX3JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jYWNo
ZWRJbWFnZUJ1ZmZlcihyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpKQorICAgICAgICBpbWFn
ZUJ1ZmZlci0+ZGlkRmx1c2goZmx1c2hJZGVudGlmaWVyKTsKIH0KIAogdm9pZCBSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHk6OnVwZGF0ZVJldXNhYmxlSGFuZGxlcygpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHkuaAppbmRleCA5NWY4ZDJiNDEyZmI5MWRmNzdjNjhmMTM2YjAw
Nzg2ZjAyNGQ3ZTI2Li5mODA1ZmMxZWZmOWNhNTE0NTM1OWNhMjkyYjUyZGRmZWVmOGRhODFlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmgKQEAgLTgxLDcgKzgxLDcgQEAg
cHVibGljOgogICAgIHZvaWQgY2FjaGVOYXRpdmVJbWFnZShXZWJDb3JlOjpOYXRpdmVJbWFnZSYp
OwogICAgIHZvaWQgcmVsZWFzZVJlbW90ZVJlc291cmNlKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcik7CiAKLSAgICBib29sIHdhaXRGb3JJbWFnZUJ1ZmZlckJhY2tlbmRXYXND
cmVhdGVkKCk7CisgICAgYm9vbCB3YWl0Rm9yRGlkQ3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kKCk7
CiAgICAgYm9vbCB3YWl0Rm9yRGlkRmx1c2goKTsKIAogcHJpdmF0ZToKQEAgLTk1LDcgKzk1LDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZVJldXNhYmxlSGFuZGxlcygpOwogCiAgICAgLy8g
TWVzc2FnZXMgdG8gYmUgcmVjZWl2ZWQuCi0gICAgdm9pZCBpbWFnZUJ1ZmZlckJhY2tlbmRXYXND
cmVhdGVkKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IFdlYkNv
cmU6OkludFNpemUmIGJhY2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6
OkNvbG9yU3BhY2UsIFdlYkNvcmU6OlBpeGVsRm9ybWF0LCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5k
bGUsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CisgICAgdm9pZCBkaWRD
cmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQoSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLCBXZWJDb3Jl
OjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIHZvaWQgZGlkRmx1c2goV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OkZsdXNoSWRlbnRpZmllciwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyKTsKIAogICAgIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eSBtX3JlbW90ZVJl
c291cmNlQ2FjaGVQcm94eSB7ICp0aGlzIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5tZXNzYWdl
cy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDkyMGRlM2Y3Nzc1NDAxNjQwNTFmZjUx
Y2QyMWI1MDU1OTg1NGY4NDQuLjNhNTMyZDVlNGZmNjE2YmRiMDdlZGU3YTlhODNlOTMxMzdlNzNi
ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lm1lc3Nh
Z2VzLmluCkBAIC0yMyw3ICsyMyw3IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiBtZXNz
YWdlcyAtPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkgTm90UmVmQ291bnRlZCB7Ci0gICAg
SW1hZ2VCdWZmZXJCYWNrZW5kV2FzQ3JlYXRlZChXZWJDb3JlOjpGbG9hdFNpemUgbG9naWNhbFNp
emUsIFdlYkNvcmU6OkludFNpemUgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwg
V2ViQ29yZTo6Q29sb3JTcGFjZSBjb2xvclNwYWNlLCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6UGl4
ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIFdlYktpdDo6SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGhh
bmRsZSwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcikKKyAgICBEaWRDcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQoV2ViS2l0OjpJ
bWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgaGFuZGxlLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogICAgIERpZEZsdXNoKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpGbHVzaElkZW50aWZpZXIgZmx1c2hJZGVudGlmaWVyLCBXZWJD
b3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyKQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVh
YmxlSU9TdXJmYWNlQmFja2VuZC5jcHAKaW5kZXggNTE2MjdjNWVkZDg5MWI5NGYzNjM5MWMwYWI0
YzI4MDhjNjgwYmVmZi4uZTQxMmU3ZjYzZjQwODdmMjE3NzI0NjgyZTkzNThmYjg1ODhmYzVjMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9J
bWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1
cmZhY2VCYWNrZW5kLmNwcApAQCAtMzcsMTMgKzM3LDEzIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoSW1hZ2VCdWZmZXJTaGFyZWFibGVJ
T1N1cmZhY2VCYWNrZW5kKTsKIAotc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyU2hhcmVhYmxl
SU9TdXJmYWNlQmFja2VuZD4gSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kOjpj
cmVhdGUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9y
U3BhY2UgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIGNvbnN0IEhvc3RXaW5k
b3cqKQorc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2Vu
ZD4gSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGUoY29uc3QgUGFy
YW1ldGVycyYgcGFyYW1ldGVycywgY29uc3QgSG9zdFdpbmRvdyopCiB7Ci0gICAgSW50U2l6ZSBi
YWNrZW5kU2l6ZSA9IGNhbGN1bGF0ZUJhY2tlbmRTaXplKHNpemUsIHJlc29sdXRpb25TY2FsZSk7
CisgICAgSW50U2l6ZSBiYWNrZW5kU2l6ZSA9IGNhbGN1bGF0ZUJhY2tlbmRTaXplKHBhcmFtZXRl
cnMubG9naWNhbFNpemUsIHBhcmFtZXRlcnMucmVzb2x1dGlvblNjYWxlKTsKICAgICBpZiAoYmFj
a2VuZFNpemUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGF1dG8g
c3VyZmFjZSA9IElPU3VyZmFjZTo6Y3JlYXRlKGJhY2tlbmRTaXplLCBiYWNrZW5kU2l6ZSwgY2Fj
aGVkQ0dDb2xvclNwYWNlKGNvbG9yU3BhY2UpLCBJT1N1cmZhY2U6OmZvcm1hdEZvclBpeGVsRm9y
bWF0KHBpeGVsRm9ybWF0KSk7CisgICAgYXV0byBzdXJmYWNlID0gSU9TdXJmYWNlOjpjcmVhdGUo
YmFja2VuZFNpemUsIGJhY2tlbmRTaXplLCBjYWNoZWRDR0NvbG9yU3BhY2UocGFyYW1ldGVycy5j
b2xvclNwYWNlKSwgSU9TdXJmYWNlOjpmb3JtYXRGb3JQaXhlbEZvcm1hdChwYXJhbWV0ZXJzLnBp
eGVsRm9ybWF0KSk7CiAgICAgaWYgKCFzdXJmYWNlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IApAQCAtNTMsMjEgKzUzLDIxIEBAIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlclNoYXJlYWJs
ZUlPU3VyZmFjZUJhY2tlbmQ+IEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmCiAKICAgICBDR0Nv
bnRleHRDbGVhclJlY3QoY2dDb250ZXh0LmdldCgpLCBGbG9hdFJlY3QoRmxvYXRQb2ludDo6emVy
bygpLCBiYWNrZW5kU2l6ZSkpOwogCi0gICAgcmV0dXJuIG1ha2VVbmlxdWU8SW1hZ2VCdWZmZXJT
aGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kPihzaXplLCBiYWNrZW5kU2l6ZSwgcmVzb2x1dGlvblNj
YWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCwgV1RGTW92ZShzdXJmYWNlKSk7CisgICAgcmV0
dXJuIG1ha2VVbmlxdWU8SW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kPihwYXJh
bWV0ZXJzLCBXVEZNb3ZlKHN1cmZhY2UpKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVm
ZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZD4gSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZh
Y2VCYWNrZW5kOjpjcmVhdGUoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50
U2l6ZSYgaW50ZXJuYWxTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29s
b3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRs
ZSBoYW5kbGUpCitzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VC
YWNrZW5kPiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZShjb25z
dCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgaGFuZGxl
KQogewogICAgIGlmICghV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxNYWNoU2VuZFJpZ2h0PihoYW5k
bGUpKSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICB9CiAKLSAgICBhdXRvIHN1cmZhY2UgPSBJT1N1cmZhY2U6OmNyZWF0ZUZyb21T
ZW5kUmlnaHQoV1RGTW92ZShXVEY6OmdldDxNYWNoU2VuZFJpZ2h0PihoYW5kbGUpKSwgY2FjaGVk
Q0dDb2xvclNwYWNlKGNvbG9yU3BhY2UpKTsKKyAgICBhdXRvIHN1cmZhY2UgPSBJT1N1cmZhY2U6
OmNyZWF0ZUZyb21TZW5kUmlnaHQoV1RGTW92ZShXVEY6OmdldDxNYWNoU2VuZFJpZ2h0PihoYW5k
bGUpKSwgY2FjaGVkQ0dDb2xvclNwYWNlKHBhcmFtZXRlcnMuY29sb3JTcGFjZSkpOwogICAgIGlm
ICghc3VyZmFjZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gbWFrZVVu
aXF1ZTxJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQ+KGxvZ2ljYWxTaXplLCBp
bnRlcm5hbFNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQsIFdU
Rk1vdmUoc3VyZmFjZSkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEltYWdlQnVmZmVyU2hhcmVh
YmxlSU9TdXJmYWNlQmFja2VuZD4ocGFyYW1ldGVycywgV1RGTW92ZShzdXJmYWNlKSk7CiB9CiAK
IEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJh
Y2tlbmQ6OmNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSgpIGNvbnN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVy
U2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQuaApp
bmRleCBlZDUxNjI0ZWIwYWExMDUwZTEzYmZhMTdlYTM0ZjBmZTNjMWZmZjZkLi4zMTg5MjE1ZjMz
YWNhYjc5MDFmYWNiNTA1ZjJhNWMxMzk5YTBkZTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJm
YWNlQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
Y29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kLmgKQEAgLTM5LDggKzM5
LDggQEAgY2xhc3MgSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kIDogcHVibGlj
IFdlYkNvcmU6OkltYWdlQnVmZmVySU9TdXJmYWMKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVE
KEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZCk7CiAgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kKTsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNl
QmFja2VuZD4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNv
bnN0IGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSwgV2ViQ29yZTo6
UGl4ZWxGb3JtYXQsIGNvbnN0IFdlYkNvcmU6Okhvc3RXaW5kb3cqKTsKLSAgICBzdGF0aWMgc3Rk
Ojp1bmlxdWVfcHRyPEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZD4gY3JlYXRl
KGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IFdlYkNvcmU6Oklu
dFNpemUmIGludGVybmFsU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xv
clNwYWNlLCBXZWJDb3JlOjpQaXhlbEZvcm1hdCwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKTsK
KyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNl
QmFja2VuZD4gY3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmLCBjb25zdCBXZWJDb3JlOjpIb3N0V2lu
ZG93Kik7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlclNoYXJlYWJsZUlP
U3VyZmFjZUJhY2tlbmQ+IGNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiwgSW1hZ2VCdWZmZXJCYWNr
ZW5kSGFuZGxlKTsKIAogICAgIHVzaW5nIFdlYkNvcmU6OkltYWdlQnVmZmVySU9TdXJmYWNlQmFj
a2VuZDo6SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414935</attachid>
            <date>2020-11-27 03:08:05 -0800</date>
            <delta_ts>2020-11-30 12:34:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219007-20201127030804.patch</filename>
            <type>text/plain</type>
            <size>105525</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwMTg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjMwMDU3Y2JhOTg3NGZm
YTUxOWU3NTMxOTYwZWY2ODM1MDM1NmNlNi4uNzkzOGQ2MjZhMWE0ZjQyZjI4Njg4YWI2YzY2NDJi
MjAwYWU0ZjFmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyOCBAQAorMjAyMC0xMS0yNyAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3Nd
IENsZWFuIHVwIHJlY3JlYXRpbmcgdGhlIEltYWdlQnVmZmVyQmFja2VuZCBiZWNhdXNlIG9mIEdQ
VSBjcmFzaGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjE5MDA3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVG8gYXZvaWQgcmVwZWF0aW5nIHRoZSBJbWFnZUJ1ZmZlciBjcmVhdGlvbiBwYXJhbWV0ZXJz
IGluIFJlbW90ZUltYWdlQnVmZmVyUHJveHkKKyAgICAgICAgYW5kIGluIEltYWdlQnVmZmVyQmFj
a2VuZCwgSW1hZ2VCdWZmZXJCYWNrZW5kOjpQYXJhbWV0ZXJzIHdpbGwgYmUgaW50cm9kdWNlZC4K
KyAgICAgICAgVGhpcyBzdHJ1Y3R1cmUgY29udGFpbnMgdGhlIHBhcmFtZXRlcnMgd2hpY2ggd2Vy
ZSBwYXNzZWQgYnkgdGhlIGNhbGxlciBpbgorICAgICAgICB0aGUgV2ViUHJvY2VzcyBhbmQgd2hp
Y2ggYXJlIHN1ZmZpY2llbnQgdG8gcmVjcmVhdGUgUmVtb3RlSW1hZ2VCdWZmZXIgaWYKKyAgICAg
ICAgdGhlIEdQVSBQcm9jZXNzIGNyYXNoZXMuIENvbmNyZXRlSW1hZ2VCdWZmZXIgd2lsbCBob2xk
IGEgc3RkOjp1bmlxdWVfcHRyCisgICAgICAgIHRvIHRoZSBQYXJhbWV0ZXJzIHN0cnVjdHVyZSB3
aGlsZSBJbWFnZUJ1ZmZlckJhY2tlbmQgd2lsbCBob2xkIGEgcmVmZXJlbmNlCisgICAgICAgIHRo
ZSBzYW1lIHN0cnVjdHVyZS4KKworICAgICAgICBJbiB0aGlzIHBhdGNoIGFsc28sIHRoZSBuYW1l
cyBmb3IgcmVwbGF5aW5nIGJhY2sgdGhlIERpc3BsYXlMaXN0IGludG8gYW4KKyAgICAgICAgSW1h
Z2VCdWZmZXJCYWNrZW5kIHdpbGwgdG8gYmUgY29uc2lzdGVudCBhbmQgbW9yZSBjbGVhci4gV2Ug
d2lsbCBhZG9wdCB0aGUKKyAgICAgICAgZm9sbG93aW5nIG5hbWluZyBzY2hlbWU6CisgICAgICAg
IC0tIHN1Ym1pdDogUmVwbGF5IGJhY2sgYSBEaXNwbGF5TGlzdCBvciBhIERyYXdpbmdDb250ZXh0
IGVpdGhlciBpbiB0aGUgV2ViCisgICAgICAgICAgIFByb2Nlc3Mgb3IgdGhyb3VnaCB0aGUgR1BV
IFByb2Nlc3MuIE5vIHJlcGx5IGZyb20gdGhlIEdQVSBQcm9jZXNzIGlzCisgICAgICAgICAgIG5l
ZWRlZCBpbiB0aGlzIGNhc2UuIE5vIHdhaXRpbmcgaW4gdGhlIFdlYiBQcm9jZXNzIHdpbGwgYmUg
aW5jdXJyZWQuCisgICAgICAgIC0tIGZsdXNoOiBTdWJtaXQgdGhlIERyYXdpbmdDb250ZXh0IGFu
ZCB3YWl0IHRpbGwgYWxsIHN1Ym1pdHRlZCB3b3JrIGhhcworICAgICAgICAgICBhY3R1YWxseSBi
ZWVuIGNvbXBsZXRlZC4gR1BVIFByb2Nlc3MgaGFzIHRvIHNlbmQgIkRpZEZsdXNoIiBtZXNzYWdl
IAorICAgICAgICAgICB3aGVuIGl0IGlzIGRvbmUgYW5kIHRoZSBXZWIgUHJvY2VzcyBoYXMgdG8g
d2FpdCB1bnRpbCBpdCBpcyByZWNlaXZlZC4KKworICAgICAgICBBbHNvIHJlcGxhY2UgYWxsIHRo
ZSBpbnN0YW5jZXMgb2YgJ2lzQWNjZWxlcmF0ZWQnIGJ5ICdyZW5kZXJpbmdNb2RlJy4gU28KKyAg
ICAgICAgbm8gbmVlZCB0byBjb252ZXJ0IG9uZSB0eXBlIHRvIHRoZSBvdGhlci4KKworICAgICAg
ICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJh
c2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6
cHJlcGFyZUZvckRpc3BsYXkpOgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3Jl
dGVJbWFnZUJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6Q29uY3JldGVJbWFnZUJ1ZmZlcjo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbmNyZXRlSW1hZ2VCdWZmZXI6OkNvbmNyZXRl
SW1hZ2VCdWZmZXIpOgorICAgICAgICAtLSBNYWtlIENvbmNyZXRlSW1hZ2VCdWZmZXIgb3duIGFu
IHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnM+LgorICAgICAg
ICAtLSBBZGQgbWV0aG9kcyB0byBzZXQgYW5kIGNsZWFyIHRoZSBiYWNrZW5kIG9mIGFuIEltYWdl
QnVmZmVyLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpzdWJtaXREcmF3aW5nQ29udGV4dCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6c3VibWl0RGlzcGxheUxpc3QpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmRpZEZsdXNoKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
QnVmZmVyOjpmbHVzaERyYXdpbmdDb250ZXh0QW5kQ29tbWl0KTogRGVsZXRlZC4KKyAgICAgICAg
LS0gRXhwb3NlIHRoZSBJbWFnZUJ1ZmZlckJhY2tlbmQgY3JlYXRpb24gcGFyYW1ldGVycyB0aHJv
dWdoIG1ldGhvZHMuCisgICAgICAgIC0tIEFkb3B0IHRoZSBuZXcgbmFtaW5nIHNjaGVtZSBmb3Ig
dGhlIHJlcGxheSBiYWNrIG1ldGhvZHMuCisgICAgICAgIC0tIEV4cG9zZSBzdWJtaXREcmF3aW5n
Q29udGV4dCgpIGFuZCBkaWRGbHVzaCgpIHNvIG5vIGNhc3RpbmcgaXMgbmVlZGVkCisgICAgICAg
ICAgIHdoZW4gY2FsbGluZyB0aGVzZSBmdW5jdGlvbnMgdGhyb3VnaCBSZW1vdGVJbWFnZUJ1ZmVy
UHJveHkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjpJbWFnZUJ1ZmZlckJh
Y2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjp0b0JHUkFEYXRh
IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQmFja2VuZDo6bWVtb3J5Q29zdCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OmJ5dGVzUGVyUm93IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQmFja2VuZDo6dG9CYWNrZW5kQ29v
cmRpbmF0ZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjps
b2dpY2FsU2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6
OnJlc29sdXRpb25TY2FsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckJh
Y2tlbmQ6OmNvbG9yU3BhY2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJC
YWNrZW5kOjpwaXhlbEZvcm1hdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZl
ckJhY2tlbmQ6OmxvZ2ljYWxSZWN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVm
ZmVyQmFja2VuZDo6YmFja2VuZFJlY3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VC
dWZmZXJCYWNrZW5kOjpiYWNrZW5kU2l6ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OmJhc2VUcmFuc2Zvcm0gY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAtLSBBZGQgdGhlIHN0cnVjdHVyZSBJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRl
cnMuIAorICAgICAgICAtLSBNYWtlIEltYWdlQnVmZmVyQmFja2VuZCBvd24gYSBjb25zdCByZWZl
cmVuY2UgdG8gdGhpcyBzdHJ1Y3R1cmUuCisgICAgICAgIC0tIE1ha2UgYmFja2VuZFNpemUoKSBh
IHB1cmUgdmlydHVhbCBtZXRob2QuCisgICAgICAgIC0tIERlbGV0ZSBiYXNlVHJhbnNmb3JtKCkg
c2luY2UgaXQgaXMgaW1wbGVtZW50ZWQgaW4gQ29uY3JldGVJbWFnZUJ1ZmZlci4KKworICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtSW1hZ2VCdWZmZXIuaDoKKyAgICAgICAgKGlz
VHlwZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWly
b0JhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQ6
OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1
ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kOjpJbWFnZUJ1ZmZlckNhaXJv
SW1hZ2VTdXJmYWNlQmFja2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNhaXJv
SW1hZ2VTdXJmYWNlQmFja2VuZDo6cGxhdGZvcm1UcmFuc2Zvcm1Db2xvclNwYWNlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNl
QmFja2VuZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVy
Q2Fpcm9TdXJmYWNlQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNh
aXJvU3VyZmFjZUJhY2tlbmQ6OkltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQ6OmJhY2tlbmRTaXpl
IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNh
aXJvU3VyZmFjZUJhY2tlbmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFn
ZUJ1ZmZlckNHQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNHQmFj
a2VuZDo6c2V0dXBDb250ZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVy
Q0dCYWNrZW5kOjpjb3B5SW1hZ2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZm
ZXJDR0JhY2tlbmQ6OnNpbmtJbnRvSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZm
ZXJDR0JhY2tlbmQ6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDR0JhY2tl
bmQ6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ0dCYWNrZW5k
Ojp0b0NGRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNHQmFja2Vu
ZDo6YmFzZVRyYW5zZm9ybSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JhY2tlbmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZCk6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y29weU5hdGl2
ZUltYWdlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZl
ckNHQml0bWFwQmFja2VuZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
QnVmZmVySU9TdXJmYWNlQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZl
cklPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZl
cklPU3VyZmFjZUJhY2tlbmQ6OkltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZCk6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmJhY2tlbmRTaXplIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6ZHJhd0Nv
bnN1bWluZyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1
cmZhY2VCYWNrZW5kLmg6CisgICAgICAgIC0tIENoYW5nZSB0aGUgY3JlYXRlKCkgbWV0aG9kcyB0
byB0YWtlIGEgIlBhcmFtZXRlcnMiIGFyZ3VtZW50LgorICAgICAgICAtLSBVc2UgdGhlIGJhY2tl
bmQgbWV0aG9kIHRvIGFjY2VzcyB0aGUgIlBhcmFtZXRlcnMiIHN0cnVjdHVyZS4KKworICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEZsdXNoSWRlbnRp
Zmllci5oOiBBZGRlZC4KKyAgICAgICAgTW92ZSBEaXNwbGF5TGlzdEZsdXNoSWRlbnRpZmllciB0
byBhIHNlcGFyYXRlIGZpbGUgc28gaXQgY2FuIGJlIGluY2x1ZGVkCisgICAgICAgIGluIEltYWdl
QnVmZmVyLmggd2l0aG91dCBoYXZpbmcgdG8gaW5jbHVkZSBEaXNwbGF5TGlzdC5oLgorCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SW1hZ2VCdWZm
ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJbWFnZUJ1ZmZlcjo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZm
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkltYWdlQnVmZmVyOjppbml0aWFs
RHJhd2luZ0NvbnRleHRDVE0pOiBEZWxldGVkLgorICAgICAgICAtLSBObyBuZWVkIHRvIHBhc3Mg
dGhlICdzaXplJyBhcmd1bWVudCB0d2ljZSBpbiB0aGUgJ2NyZWF0ZScgbWV0aG9kcyBzaW5jZQor
ICAgICAgICAgICB0aGUgc3RydWN0dXJlIFBhcmFtZXRlcnMgaGFzIHRvIGJlIHBhc3NlZCB0byB0
aGUgY29uc3RydWN0b3IgYW55d2F5LgorICAgICAgICAtLSBObyBuZWVkIHRvIGluaXRpYWxEcmF3
aW5nQ29udGV4dENUTSgpIHNpbmNlIGl0IGlzIGVxdWl2YWxlbnQgdG8gCisgICAgICAgICAgIGJh
c2VUcmFuc2Zvcm0oKS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1
ZmZlckRpcmVjdDJEQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckRp
cmVjdDJEQmFja2VuZDo6Y29weUltYWdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
QnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpkcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVm
ZmVyRGlyZWN0MkRCYWNrZW5kOjpkcmF3UGF0dGVybik6CisgICAgICAgIC0tIFVzZSB0aGUgYmFj
a2VuZCBtZXRob2QgdG8gYWNjZXNzIHRoZSAiUGFyYW1ldGVycyIgc3RydWN0dXJlLgorCiAyMDIw
LTExLTI3ICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CiAKICAgICAgICAg
R3JhcGhpY3NDb250ZXh0R0wgc2hvdWxkIGhhdmUgcm9idXN0IG11bHRpdmFsdWUgc2V0dGVycwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwppbmRleCBkNTE0M2NjN2U1MGY4MTc3MDNjYTZhY2ZkOGYwM2YyMDU5MzY2YmM4Li40OGFk
NDg4ZDg0YThkZDRmODM0OWU0ZWExNzdiZjE3ZDc5ZmM2MzljIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDk4IEBACisyMDIwLTExLTI3ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgor
CisgICAgICAgIFtHUFUgUHJvY2Vzc10gQ2xlYW4gdXAgcmVjcmVhdGluZyB0aGUgSW1hZ2VCdWZm
ZXJCYWNrZW5kIGJlY2F1c2Ugb2YgR1BVIGNyYXNoaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTkwMDcKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGVyZSBpcyBubyBuZWVkIHRvIHN0b3JlIHRoZSBi
YWNrZW5kIHBhcmFtZXRlcnMgaW4gUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS4KKyAgICAgICAgVGhl
c2UgcGFyYW1ldGVycyBjYW4gYmUgYWNjZXNzZWQgZnJvbSB0aGUgY3VycmVudCBJbWFnZUJ1ZmZl
ckJhY2tlbmQgdmlhCisgICAgICAgIHRoZSBJbWFnZUJ1ZmZlciBiZWZvcmUgdGhlIGJhY2tlbmQg
aXMgY2xlYXJlZC4KKworICAgICAgICBSZW1vdmUgdGhlIHRyYWl0cyBkZWZpbml0aW9uIGZvciBS
ZW1vdGVJbWFnZUJ1ZmZlclByb3h5IHR5cGVzIGJlY2F1c2UKKyAgICAgICAgdGhleSBhcmUgd3Jv
bmcuIEFsbCBJbWFnZUJ1ZmZlcnMgaGF2ZSB2YWxpZCByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIoKQorICAgICAgICByZWdhcmRsZXNzIHdoZXRoZXIgdGhleSBhcmUgcmVtb3RlIG9yIG5vdC4g
SW1hZ2VCdWZmZXI6OnNldEJhY2tlbmQgYW5kCisgICAgICAgIEltYWdlQnVmZmVyOjpjb21taXRG
bHVzaERpc3BsYXlMaXN0KCkgYXJlIG5vdyBpbXBsZW1lbnRlZCBpbiBXZWJDb3JlLgorCisgICAg
ICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlcjo6UmVtb3RlSW1hZ2VCdWZmZXIpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlcjo6c3VibWl0RGlzcGxheUxpc3QpOiBEZWxldGVkLgor
ICAgICAgICBzdWJtaXREaXNwbGF5TGlzdCgpIGlzIG5vdyBhIHZpcnR1YWwgbWV0aG9kIG9mIElt
YWdlQnVmZmVyLiBTbyBtYWtlIGl0CisgICAgICAgIHByaXZhdGUgYW5kIGlnbm9yZSB0aGUgcmV0
dXJuIG9mIERpc3BsYXlMaXN0OjpSZXBsYXllcjo6cmVwbGF5KCkgc2luY2UgCisgICAgICAgIG5v
IGNhbGxlciBpcyB1c2luZyBpdC4KKworICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlUmVuZGVyaW5nQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQ6OmRpZENyZWF0ZUltYWdlQnVmZmVyQmFja2VuZCk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmFwcGx5RGlzcGxheUxpc3RzRnJvbUhhbmRsZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmltYWdlQnVmZmVyQmFja2Vu
ZFdhc0NyZWF0ZWQpOiBEZWxldGVkLgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlUmVuZGVyaW5nQmFja2VuZC5oOgorICAgICAgICBSZW5hbWUgJ2ltYWdlQnVmZmVyQmFja2Vu
ZFdhc0NyZWF0ZWQoKScgdG8gJ2RpZENyZWF0ZUltYWdlQnVmZmVyQmFja2VuZCgpJworICAgICAg
ICB0byBiZSBjb25zaXN0ZW50IHdpdGggJ2RpZEZsdXNoKCknLgorCisgICAgICAgICogU2hhcmVk
L1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmRpc3BsYXkpOgorICAgICAgICBDYWxsIHRo
ZSBmdW5jdGlvbiB3aXRoIHRoZSBuZXcgbmFtZSBhbmQgZGVsZXRlIHRoZSBGSVhNRSBjb21tZW50
LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFi
bGVCaXRtYXBCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW1hZ2VCdWZmZXJTaGFyZWFi
bGVCaXRtYXBCYWNrZW5kOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpJbWFnZUJ1ZmZlclNo
YXJlYWJsZUJpdG1hcEJhY2tlbmQ6OkltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZCk6
CisgICAgICAgIChXZWJLaXQ6OkltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6YmFj
a2VuZFNpemUgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdl
QnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5oOgorICAgICAgICBVc2UgdGhlIG5ldyBzdHJ1
Y3R1cmUgJ0ltYWdlQnVmZmVyQmFja2VuZDo6UGFyYW1ldGVycycgYW5kIGltcGxlbWVudCB0aGUK
KyAgICAgICAgdmlydHVhbCBtZXRob2QgJ2JhY2tlbmRTaXplKCknLgorCisgICAgICAgICogV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUGxhdGZvcm1SZW1vdGVJbWFnZUJ1ZmZlclByb3h5Lmg6Cisg
ICAgICAgIChpc1R5cGUpOiBEZWxldGVkLgorICAgICAgICBEZWxldGUgdGhlIHdyb25nIHRyYWl0
cy4KKworICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVy
UHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6UmVtb3RlSW1hZ2VC
dWZmZXJQcm94eSk6CisgICAgICAgIFVzZSB0aGUgbmV3IHN0cnVjdHVyZSAnSW1hZ2VCdWZmZXJC
YWNrZW5kOjpQYXJhbWV0ZXJzJy4KKworICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZl
clByb3h5OjpjbGVhckJhY2tlbmQpOiBEZWxldGVkLgorICAgICAgICBUaGlzIGlzIG5vdyBpbXBs
ZW1lbnRlZCBpbiBDb25jcmV0ZUltYWdlQnVmZmVyOjpjbGVhckJhY2tlbmQoKS4KKworICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlclByb3h5OjpjcmVhdGVCYWNrZW5kKTogRGVsZXRl
ZC4KKyAgICAgICAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpkaWRDcmVhdGVJbWFnZUJ1
ZmZlckJhY2tlbmQoKSBjcmVhdGVzIHRoZQorICAgICAgICBiYWNrZW5kIGFuZCBDb25jcmV0ZUlt
YWdlQnVmZmVyOjpzZXRCYWNrZW5kKCkgc2V0cyBpdC4KKworICAgICAgICAoV2ViS2l0OjpSZW1v
dGVJbWFnZUJ1ZmZlclByb3h5OjpkaWRGbHVzaCk6IERlbGV0ZWQuCisgICAgICAgIGRpZEZsdXNo
KCkgaXMgbm93IHZpcnR1YWwgc28gaXQgY2FuIGJlIHByaXZhdGUuCisKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6c2l6ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyUHJveHk6OnJlbmRlcmluZ01vZGUgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlclByb3h5Ojpjb2xvclNw
YWNlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJQ
cm94eTo6cGl4ZWxGb3JtYXQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICBUaGVzZSBhcmUgaW1w
bGVtZW50ZWQgaW4gQ29uY3JldGVJbWFnZUJ1ZmZlci4KKworICAgICAgICAoV2ViS2l0OjpSZW1v
dGVJbWFnZUJ1ZmZlclByb3h5OjpzdWJtaXREaXNwbGF5TGlzdCk6IERlbGV0ZWQuCisgICAgICAg
IHN1Ym1pdERpc3BsYXlMaXN0KCkgaXMgbm93IHZpcnR1YWwuCisKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OnJlZXN0YWJsaXNoR1BVUHJv
Y2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHk6OndhaXRGb3JEaWRDcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmNyZWF0ZUltYWdlQnVmZmVyKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpkaWRDcmVhdGVJbWFn
ZUJ1ZmZlckJhY2tlbmQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHk6OmRpZEZsdXNoKToKKyAgICAgICAgKFdlYktpdDo6cmVjcmVhdGVJbWFnZUJ1ZmZlcik6
IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6
d2FpdEZvckltYWdlQnVmZmVyQmFja2VuZFdhc0NyZWF0ZWQpOiBEZWxldGVkLgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmltYWdlQnVmZmVyQmFja2VuZFdh
c0NyZWF0ZWQpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oOgorICAgICAgICBObyBuZWVkIHRvIGNhc3QgdGhl
IEltYWdlQnVmZmVyIHRvIFJlbW90ZUltYWdlQnVmZmVyUHJveHkgc2luY2UgYWxsIAorICAgICAg
ICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkgbmVlZHMgY2FuIGJlIGFjY2Vzc2VkIHRocm91
Z2ggdGhlIGJhc2UgY2xhc3MuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9S
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgIFJlbmFtZSAn
SW1hZ2VCdWZmZXJCYWNrZW5kV2FzQ3JlYXRlZCcgdG8gJ0RpZENyZWF0ZUltYWdlQnVmZmVyQmFj
a2VuZCcKKyAgICAgICAgdG8gYmUgY29uc2lzdGVudCB3aXRoICdEaWRGbHVzaCcuIE5vIG5lZWQg
dG8gcGFzcyB0aGUgY3JlYXRpb24gcGFyYW1ldGVycworICAgICAgICBzaW5jZSB0aGV5IHNldCBp
biB0aGUgQ29uY3JldGVJbWFnZUJ1ZmZlci4gTm8gbmVlZCB0byBwYXNzIHRoZSBiYWNrZW5kU2l6
ZQorICAgICAgICBzaW5jZSBpdCBjYW4gYmUgcmV0cmlldmVkIHRocm91Z2ggdGhlIGJhY2tlbmQg
aXRzZWxmLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VC
dWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW1h
Z2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGUpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNl
QmFja2VuZC5oOgorICAgICAgICBVc2UgdGhlIG5ldyBzdHJ1Y3R1cmUgJ0ltYWdlQnVmZmVyQmFj
a2VuZDo6UGFyYW1ldGVycycuCisKIDIwMjAtMTEtMjcgIFlvc2hpYWtpIEppdHN1a2F3YSAgPHlv
c2hpYWtpLmppdHN1a2F3YUBzb255LmNvbT4KIAogICAgICAgICBbUGxheVN0YXRpb25dIERlZmlu
ZSBwbGF0Zm9ybSBhcmd1bWVudCBjb2RlcnMgZm9yIEZvbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmluZGV4
IDM3ODlhYTM4Mzk0MGQyNTc0MTI0YmMyZmY0M2U3ZWVjNGFlOTUwZDUuLmRmYTI0NGZkY2Q5ZDcz
M2Q3Yzk1ODkyNzNlMDY5YzdjMDA0ZmU3YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hl
YWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtMTI3MCw2
ICsxMjcwLDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd0dseXBoc1JlY29yZGVyLmgKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3aW5nQ29udGV4
dC5oCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0Rmx1c2hJ
ZGVudGlmaWVyLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RJbWFnZUJ1ZmZlci5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0SXRlbUJ1ZmZlci5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0SXRlbVR5cGUuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDkxZDc0Yzc0NTIyNTk3OTA2NzkxYWQxZThhMjEyODNk
NTRjNjExNjguLmRkNWFhMWMxNTA2ZGUxOTc5MzI2NTY3M2I3MTg3YjJhZTRlZDQ0MzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTIxODcsNiArMjE4Nyw3IEBACiAJCTcyN0E3RjNBMjQwNzhCODQwMDREMjkzMSAvKiBJbWFnZUJ1
ZmZlcklPU3VyZmFjZUJhY2tlbmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDcyQkFDM0FCMjNFMUU1NDQwMDhENzQxQyAvKiBJbWFnZUJ1ZmZlcklPU3Vy
ZmFjZUJhY2tlbmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk3Mjk5QkM2NzIzRDZBNTMyMDBDQzY4ODMgLyogQWxwaGFQcmVtdWx0aXBsaWNhdGlv
bi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI5OUJD
NjQyM0Q2ODZBNjAwQ0M2ODgzIC8qIEFscGhhUHJlbXVsdGlwbGljYXRpb24uaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3Mjk5QkM2ODIzRDZBNTNF
MDBDQzY4ODMgLyogUmVuZGVyaW5nTW9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNzI5OUJDNjYyM0Q2ODZDNjAwQ0M2ODgzIC8qIFJlbmRlcmluZ01v
ZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3
MjlDNDVFODI1NkUwOTE5MDAwNDA3Q0YgLyogRGlzcGxheUxpc3RGbHVzaElkZW50aWZpZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyOUM0NUU2MjU2
RTA1RjkwMDA0MDdDRiAvKiBEaXNwbGF5TGlzdEZsdXNoSWRlbnRpZmllci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcyOUQwNTMwMjUzMTQyNDMw
MDQyMjA5OCAvKiBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyOUQwNTJFMjUzMTNFMjYwMDQyMjA5OCAv
KiBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MkE3M0JFRjI0NUEzRjkwMDAxQzlEMDMgLyogQW5p
bWF0aW9uRnJhbWVSYXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3MjJBODE1QzIzOEZENTA1MDBDMDA1ODMgLyogQW5pbWF0aW9uRnJhbWVSYXRlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzJBQjlB
MjEyNTVBOUZERTAwRTZFQkYxIC8qIE5hdGl2ZUltYWdlUmVmZXJlbmNlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MkFCOUExRjI1NUE5RUE2MDBFNkVC
RjEgLyogTmF0aXZlSW1hZ2VSZWZlcmVuY2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTAwNzIsNiArMTAwNzMsNyBAQAogCQk3MjdBRkVEMzFB
MkVBNkEwMDAwNDQyRTggLyogRVhUc1JHQi5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRVhU
c1JHQi5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyOTlCQzY0MjNENjg2QTYw
MENDNjg4MyAvKiBBbHBoYVByZW11bHRpcGxpY2F0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFscGhh
UHJlbXVsdGlwbGljYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI5OUJD
NjYyM0Q2ODZDNjAwQ0M2ODgzIC8qIFJlbmRlcmluZ01vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVu
ZGVyaW5nTW9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MjlDNDVFNjI1NkUw
NUY5MDAwNDA3Q0YgLyogRGlzcGxheUxpc3RGbHVzaElkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gRGlzcGxheUxpc3RGbHVzaElkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNzI5RDA1MkUyNTMxM0UyNjAwNDIyMDk4IC8qIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
Zmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzJBQjlBMUYyNTVBOUVBNjAwRTZFQkYxIC8qIE5h
dGl2ZUltYWdlUmVmZXJlbmNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5hdGl2ZUltYWdlUmVmZXJlbmNl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyQkFDM0E0MjNFMTczMjcwMDhENzQx
QyAvKiBJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSW1hZ2VCdWZmZXJCYWNrZW5kLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTE3NzkwLDYgKzE3NzkyLDcgQEAKIAkJCQkxQ0FGNTZERTI1MzAyNDVBMDAxN0I0NzIg
LyogRGlzcGxheUxpc3REcmF3R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5jcHAgKi8sCiAJCQkJNTVD
MEEyOTUyM0ZFMkNFMDAwRjJDQjkzIC8qIERpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuY3BwICov
LAogCQkJCTcyRUEwOUY5MjNGQ0NDNkEwMDg1MDRBNSAvKiBEaXNwbGF5TGlzdERyYXdpbmdDb250
ZXh0LmggKi8sCisJCQkJNzI5QzQ1RTYyNTZFMDVGOTAwMDQwN0NGIC8qIERpc3BsYXlMaXN0Rmx1
c2hJZGVudGlmaWVyLmggKi8sCiAJCQkJNzJFQTA5RjcyM0ZDQ0IzRDAwODUwNEE1IC8qIERpc3Bs
YXlMaXN0SW1hZ2VCdWZmZXIuaCAqLywKIAkJCQlGNDIyQjhCNjI1M0Y3MDY1MDA0RTc3RTggLyog
RGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcCAqLywKIAkJCQlGNDIyQjhCNTI1M0Y3MDY1MDA0RTc3
RTggLyogRGlzcGxheUxpc3RJdGVtQnVmZmVyLmggKi8sCkBAIC0xODAyMiw3ICsxODAyNSw2IEBA
CiAJCQkJQTFDQzU2NEExRjQ2MTNCQjAwQTQ1NTVCIC8qIFBheW1lbnRSZXF1ZXN0ICovLAogCQkJ
CTFEMDAyNjlBMjM3NEI5RjgwMENBNkNERiAvKiBQaWN0dXJlSW5QaWN0dXJlICovLAogCQkJCUE5
RDI0N0Y5MEQ3NTdFNDEwMEZERjk1OSAvKiBQbHVnaW5zICovLAotCQkJCTg5RjYwQjE3MTU3RjZB
MDIwMDc1RTE1NyAvKiBRdW90YSAqLywKIAkJCQlCQzk4NTQ0NjBDRDNEQTVGMDAwNjlCQzEgLyog
UmFuZ2VzICovLAogCQkJCUNEOEM2QzI0MjJGRERBNjQwMEE3MjBBQiAvKiBSZW1vdGVQbGF5YmFj
ayAqLywKIAkJCQk1MTgyQzI0QzFGMzE0MjA5MDA1OUJBN0MgLyogU2VydmljZVdvcmtlcnMgKi8s
CkBAIC0zMTY3NCw2ICszMTY3Niw3IEBACiAJCQkJMEZFNUZCRDMxQzNERDUxRTAwMDdBMkNBIC8q
IERpc3BsYXlMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQ0FGNTZEQjI1MzAxQUM4MDAxN0I0
NzIgLyogRGlzcGxheUxpc3REcmF3R2x5cGhzUmVjb3JkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTU1QUQwOTQwMjQwODk2NDAwMERFNEQyRiAvKiBEaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0Lmgg
aW4gSGVhZGVycyAqLywKKwkJCQk3MjlDNDVFODI1NkUwOTE5MDAwNDA3Q0YgLyogRGlzcGxheUxp
c3RGbHVzaElkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTU1QUQwOTNFMjQwODk2MzUw
MERFNEQyRiAvKiBEaXNwbGF5TGlzdEltYWdlQnVmZmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlG
NEQ0MEJDOTI1NTQ2M0JGMDA3MjEzNDkgLyogRGlzcGxheUxpc3RJdGVtQnVmZmVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRkU1RkJENTFDM0RENTFFMDAwN0EyQ0EgLyogRGlzcGxheUxpc3RJdGVt
cy5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCmluZGV4IGEzOTU0YzdmNWU0
MmM3MmY0MWEzODg4OTQ2NWIzMTI0MjJhMDQ2ZjIuLmVkMWFiMDVmZDBhNjU0MzUzZWJmZDEwODgy
NzY2Y2E5NTAxODllYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCkBAIC0yMDQyLDcgKzIwNDIs
NyBAQCBHcmFwaGljc0NvbnRleHQqIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmRyYXdp
bmdDb250ZXh0KCkgY29uc3QKIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6cHJl
cGFyZUZvckRpc3BsYXkoKQogewogICAgIGlmIChhdXRvIGJ1ZmZlciA9IGNhbnZhc0Jhc2UoKS5i
dWZmZXIoKSkKLSAgICAgICAgYnVmZmVyLT5mbHVzaERyYXdpbmdDb250ZXh0QW5kQ29tbWl0KCk7
CisgICAgICAgIGJ1ZmZlci0+c3VibWl0RHJhd2luZ0NvbnRleHQoKTsKIH0KIAogYm9vbCBDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpuZWVkc1ByZXBhcmF0aW9uRm9yRGlzcGxheSgpIGNv
bnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0
ZUltYWdlQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0
ZUltYWdlQnVmZmVyLmgKaW5kZXggODI0Mjk5MDAyZWU2NjBmMGJhZTNmMTYzYWQxYzg5YjAzZDRk
ZGE3OS4uMWU2MmI1OTAwY2ZlYzQ4MTExOTZiNGM2YWFmNWJkMjU0ZWMxNWYyNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZm
ZXIuaApAQCAtMzYsMzAgKzM2LDQxIEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJ
bWFnZUJ1ZmZlclR5cGUgPSBDb25jcmV0ZUltYWdlQnVmZmVyLCB0eXBlbmFtZS4uLiBBcmd1bWVu
dHM+CiAgICAgc3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZlclR5cGU+IGNyZWF0ZShjb25zdCBGbG9h
dFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNl
LCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgY29uc3QgSG9zdFdpbmRvdyogaG9zdFdpbmRvdywg
QXJndW1lbnRzJiYuLi4gYXJndW1lbnRzKQogICAgIHsKLSAgICAgICAgYXV0byBiYWNrZW5kID0g
QmFja2VuZFR5cGU6OmNyZWF0ZShzaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBp
eGVsRm9ybWF0LCBob3N0V2luZG93KTsKKyAgICAgICAgYXV0byBwYXJhbWV0ZXJzID0gc3RkOjp1
bmlxdWVfcHRyPEltYWdlQnVmZmVyQmFja2VuZDo6UGFyYW1ldGVycz4obmV3IEltYWdlQnVmZmVy
QmFja2VuZDo6UGFyYW1ldGVycyh7IHNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwg
cGl4ZWxGb3JtYXQgfSkpOworICAgICAgICBhdXRvIGJhY2tlbmQgPSBCYWNrZW5kVHlwZTo6Y3Jl
YXRlKCpwYXJhbWV0ZXJzLCBob3N0V2luZG93KTsKICAgICAgICAgaWYgKCFiYWNrZW5kKQogICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW1h
Z2VCdWZmZXJUeXBlKFdURk1vdmUoYmFja2VuZCksIHN0ZDo6Zm9yd2FyZDxBcmd1bWVudHM+KGFy
Z3VtZW50cykuLi4pKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbWFnZUJ1ZmZlclR5
cGUoV1RGTW92ZShwYXJhbWV0ZXJzKSwgV1RGTW92ZShiYWNrZW5kKSwgc3RkOjpmb3J3YXJkPEFy
Z3VtZW50cz4oYXJndW1lbnRzKS4uLikpOwogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IEltYWdlQnVmZmVyVHlwZSA9IENvbmNyZXRlSW1hZ2VCdWZmZXIsIHR5cGVuYW1lLi4uIEFyZ3Vt
ZW50cz4KICAgICBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyVHlwZT4gY3JlYXRlKGNvbnN0IEZs
b2F0U2l6ZSYgc2l6ZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBBcmd1bWVudHMm
Ji4uLiBhcmd1bWVudHMpCiAgICAgewotICAgICAgICBhdXRvIGJhY2tlbmQgPSBCYWNrZW5kVHlw
ZTo6Y3JlYXRlKHNpemUsIGNvbnRleHQpOworICAgICAgICBhdXRvIHBhcmFtZXRlcnMgPSBzdGQ6
OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJCYWNrZW5kOjpQYXJhbWV0ZXJzPihuZXcgSW1hZ2VCdWZm
ZXJCYWNrZW5kOjpQYXJhbWV0ZXJzKHsgc2l6ZSwgMSwgQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxG
b3JtYXQ6OkJHUkE4IH0pKTsKKyAgICAgICAgYXV0byBiYWNrZW5kID0gQmFja2VuZFR5cGU6OmNy
ZWF0ZSgqcGFyYW1ldGVycywgY29udGV4dCk7CiAgICAgICAgIGlmICghYmFja2VuZCkKICAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEltYWdl
QnVmZmVyVHlwZShXVEZNb3ZlKGJhY2tlbmQpLCBzdGQ6OmZvcndhcmQ8QXJndW1lbnRzPihhcmd1
bWVudHMpLi4uKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW1hZ2VCdWZmZXJUeXBl
KFdURk1vdmUocGFyYW1ldGVycyksIFdURk1vdmUoYmFja2VuZCksIHN0ZDo6Zm9yd2FyZDxBcmd1
bWVudHM+KGFyZ3VtZW50cykuLi4pKTsKICAgICB9CiAKLSAgICBib29sIGlzQWNjZWxlcmF0ZWQo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBCYWNrZW5kVHlwZTo6aXNBY2NlbGVyYXRlZDsgfQor
ICAgIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IEJhY2tlbmRUeXBlOjpyZW5kZXJpbmdNb2RlOyB9CiAKIHByb3RlY3RlZDoKLSAgICBDb25jcmV0
ZUltYWdlQnVmZmVyKHN0ZDo6dW5pcXVlX3B0cjxCYWNrZW5kVHlwZT4mJiBiYWNrZW5kID0gbnVs
bHB0ciwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllciA9IFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSkKLSAgICAgICAg
OiBtX2JhY2tlbmQoV1RGTW92ZShiYWNrZW5kKSkKKyAgICBDb25jcmV0ZUltYWdlQnVmZmVyKHN0
ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnM+JiYgcGFyYW1ldGVy
cywgc3RkOjp1bmlxdWVfcHRyPEJhY2tlbmRUeXBlPiYmIGJhY2tlbmQgPSBudWxscHRyLCBSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyID0gUmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyOjpnZW5lcmF0ZSgpKQorICAgICAgICA6IG1fcGFyYW1l
dGVycyhXVEZNb3ZlKHBhcmFtZXRlcnMpKQorICAgICAgICAsIG1fYmFja2VuZChXVEZNb3ZlKGJh
Y2tlbmQpKQogICAgICAgICAsIG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKHJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllcikKICAgICB7CiAgICAgfQogCisgICAgdm9pZCBzZXRCYWNrZW5k
KHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckJhY2tlbmQ+JiYgYmFja2VuZCkgb3ZlcnJpZGUK
KyAgICB7CisgICAgICAgIEFTU0VSVCghbV9iYWNrZW5kKTsKKyAgICAgICAgbV9iYWNrZW5kID0g
c3RkOjp1bmlxdWVfcHRyPEJhY2tlbmRUeXBlPiB7IHN0YXRpY19jYXN0PEJhY2tlbmRUeXBlKj4o
YmFja2VuZC5yZWxlYXNlKCkpIH07CisgICAgfQorCisgICAgdm9pZCBjbGVhckJhY2tlbmQoKSBv
dmVycmlkZSB7IG1fYmFja2VuZCA9IG51bGxwdHI7IH0KKwogICAgIHZpcnR1YWwgQmFja2VuZFR5
cGUqIGVuc3VyZUJhY2tlbmRDcmVhdGVkKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZW5kLmdldCgp
OyB9CiAKICAgICBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9yZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXI7IH0KQEAgLTc4LDE5ICs4OSwxMSBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIH0KICAg
ICB9CiAKLSAgICBBZmZpbmVUcmFuc2Zvcm0gYmFzZVRyYW5zZm9ybSgpIGNvbnN0IG92ZXJyaWRl
Ci0gICAgewotICAgICAgICBpZiAoYXV0byogYmFja2VuZCA9IGVuc3VyZUJhY2tlbmRDcmVhdGVk
KCkpCi0gICAgICAgICAgICByZXR1cm4gYmFja2VuZC0+YmFzZVRyYW5zZm9ybSgpOwotICAgICAg
ICByZXR1cm4geyB9OwotICAgIH0KLQotICAgIEludFNpemUgbG9naWNhbFNpemUoKSBjb25zdCBv
dmVycmlkZQotICAgIHsKLSAgICAgICAgaWYgKGF1dG8qIGJhY2tlbmQgPSBlbnN1cmVCYWNrZW5k
Q3JlYXRlZCgpKQotICAgICAgICAgICAgcmV0dXJuIGJhY2tlbmQtPmxvZ2ljYWxTaXplKCk7Ci0g
ICAgICAgIHJldHVybiB7IH07Ci0gICAgfQorICAgIEludFNpemUgbG9naWNhbFNpemUoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBJbnRTaXplKG1fcGFyYW1ldGVycy0+bG9naWNhbFNpemUpOyB9
CisgICAgZmxvYXQgcmVzb2x1dGlvblNjYWxlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9w
YXJhbWV0ZXJzLT5yZXNvbHV0aW9uU2NhbGU7IH0KKyAgICBDb2xvclNwYWNlIGNvbG9yU3BhY2Uo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3BhcmFtZXRlcnMtPmNvbG9yU3BhY2U7IH0KKyAg
ICBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcGFy
YW1ldGVycy0+cGl4ZWxGb3JtYXQ7IH0KKyAgICBjb25zdCBJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBh
cmFtZXRlcnMmIHBhcmFtZXRlcnMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAqbV9wYXJhbWV0
ZXJzOyB9CiAKICAgICBJbnRTaXplIGJhY2tlbmRTaXplKCkgY29uc3Qgb3ZlcnJpZGUKICAgICB7
CkBAIC05OSwxMSArMTAyLDExIEBAIHByb3RlY3RlZDoKICAgICAgICAgcmV0dXJuIHsgfTsKICAg
ICB9CiAKLSAgICBmbG9hdCByZXNvbHV0aW9uU2NhbGUoKSBjb25zdCBvdmVycmlkZQorICAgIEFm
ZmluZVRyYW5zZm9ybSBiYXNlVHJhbnNmb3JtKCkgY29uc3Qgb3ZlcnJpZGUKICAgICB7Ci0gICAg
ICAgIGlmIChhdXRvKiBiYWNrZW5kID0gZW5zdXJlQmFja2VuZENyZWF0ZWQoKSkKLSAgICAgICAg
ICAgIHJldHVybiBiYWNrZW5kLT5yZXNvbHV0aW9uU2NhbGUoKTsKLSAgICAgICAgcmV0dXJuIDE7
CisgICAgICAgIGlmIChCYWNrZW5kVHlwZTo6aXNPcmlnaW5BdFVwcGVyTGVmdENvcm5lcikKKyAg
ICAgICAgICAgIHJldHVybiBBZmZpbmVUcmFuc2Zvcm0oMSwgMCwgMCwgLTEsIDAsIGxvZ2ljYWxT
aXplKCkuaGVpZ2h0KCkpOworICAgICAgICByZXR1cm4geyB9OwogICAgIH0KIAogICAgIHNpemVf
dCBtZW1vcnlDb3N0KCkgY29uc3Qgb3ZlcnJpZGUKQEAgLTI5MSw2ICsyOTQsNyBAQCBwcm90ZWN0
ZWQ6CiAgICAgICAgICAgICBiYWNrZW5kLT5yZWxlYXNlQnVmZmVyVG9Qb29sKCk7CiAgICAgfQog
CisgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQmFja2VuZDo6UGFyYW1ldGVycz4gbV9w
YXJhbWV0ZXJzOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxCYWNrZW5kVHlwZT4gbV9iYWNrZW5kOwog
ICAgIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllcjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZm
ZXIuaAppbmRleCA2MmEzZjdmZmEzNzc4YThjMDEzOTAxNjI1NDM3NTNhYTdiZDJjMjFkLi43N2Q5
MjYxNjNkOTY0NmUyOTVmZDA0YjdjMTJkNDlmNzU0YzliOTZlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAog
I3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJEaXNwbGF5TGlzdEZsdXNoSWRlbnRpZmllci5oIgog
I2luY2x1ZGUgIkltYWdlQnVmZmVyQmFja2VuZC5oIgogI2luY2x1ZGUgIlJlbmRlcmluZ01vZGUu
aCIKICNpbmNsdWRlICJSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIuaCIKQEAgLTYwLDEwICs2
MSwxMyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEZsb2F0UmVjdCBjbGFtcGVkUmVjdChjb25zdCBG
bG9hdFJlY3QmKTsKIAogICAgIHN0YXRpYyBJbnRTaXplIGNvbXBhdGlibGVCdWZmZXJTaXplKGNv
bnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpOwotICAgIAorCiAgICAgV0VC
Q09SRV9FWFBPUlQgdmlydHVhbCB+SW1hZ2VCdWZmZXIoKSA9IGRlZmF1bHQ7CiAKLSAgICB2aXJ0
dWFsIGJvb2wgaXNBY2NlbGVyYXRlZCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0
QmFja2VuZChzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJCYWNrZW5kPiYmKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIGNsZWFyQmFja2VuZCgpID0gMDsKKworICAgIHZpcnR1YWwgUmVuZGVyaW5n
TW9kZSByZW5kZXJpbmdNb2RlKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgUmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0
dXJuIHsgfTsgfQogICAgIAogICAgIHZpcnR1YWwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KCkg
Y29uc3QgPSAwOwpAQCAtNzIsMTIgKzc2LDE4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIERpc3Bs
YXlMaXN0OjpEcmF3aW5nQ29udGV4dCogZHJhd2luZ0NvbnRleHQoKSB7IHJldHVybiBudWxscHRy
OyB9CiAgICAgdmlydHVhbCBib29sIHByZWZlcnNQcmVwYXJhdGlvbkZvckRpc3BsYXkoKSB7IHJl
dHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgdm9pZCBmbHVzaERyYXdpbmdDb250ZXh0KCkgeyB9
Ci0gICAgdmlydHVhbCB2b2lkIGZsdXNoRHJhd2luZ0NvbnRleHRBbmRDb21taXQoKSB7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgc3VibWl0RHJhd2luZ0NvbnRleHQoKSB7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgc3VibWl0RGlzcGxheUxpc3QoY29uc3QgRGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JikgeyB9
CisgICAgdmlydHVhbCB2b2lkIGRpZEZsdXNoKERpc3BsYXlMaXN0OjpGbHVzaElkZW50aWZpZXIp
IHsgfQogCi0gICAgdmlydHVhbCBBZmZpbmVUcmFuc2Zvcm0gYmFzZVRyYW5zZm9ybSgpIGNvbnN0
ID0gMDsKICAgICB2aXJ0dWFsIEludFNpemUgbG9naWNhbFNpemUoKSBjb25zdCA9IDA7Ci0gICAg
dmlydHVhbCBJbnRTaXplIGJhY2tlbmRTaXplKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgZmxv
YXQgcmVzb2x1dGlvblNjYWxlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgQ29sb3JTcGFjZSBj
b2xvclNwYWNlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3Jt
YXQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBjb25zdCBJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBh
cmFtZXRlcnMmIHBhcmFtZXRlcnMoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIEludFNpemUg
YmFja2VuZFNpemUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBBZmZpbmVUcmFuc2Zvcm0gYmFz
ZVRyYW5zZm9ybSgpIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1YWwgc2l6ZV90IG1lbW9yeUNvc3Qo
KSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBzaXplX3QgZXh0ZXJuYWxNZW1vcnlDb3N0KCkgY29u
c3QgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VCdWZmZXJCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlQnVmZmVyQmFja2VuZC5jcHAKaW5kZXggN2YwZmU5ZTZkOTY2ZTc0YjQ1Zjg1YWFkMGUzYjJm
Yjg0ZDk0NTBiOS4uOTM5NGU3YmZmNDI5YmMyMWVmY2RmM2IxNDAxMTFmMWFlMmNhOTQ0ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNr
ZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZl
ckJhY2tlbmQuY3BwCkBAIC0zMSwxMiArMzEsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LUltYWdlQnVmZmVyQmFja2VuZDo6SW1hZ2VCdWZmZXJCYWNrZW5kKGNvbnN0IEZsb2F0U2l6ZSYg
bG9naWNhbFNpemUsIGNvbnN0IEludFNpemUmIGJhY2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9u
U2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQpCi0g
ICAgOiBtX2xvZ2ljYWxTaXplKGxvZ2ljYWxTaXplKQotICAgICwgbV9iYWNrZW5kU2l6ZShiYWNr
ZW5kU2l6ZSkKLSAgICAsIG1fcmVzb2x1dGlvblNjYWxlKHJlc29sdXRpb25TY2FsZSkKLSAgICAs
IG1fY29sb3JTcGFjZShjb2xvclNwYWNlKQotICAgICwgbV9waXhlbEZvcm1hdChwaXhlbEZvcm1h
dCkKK0ltYWdlQnVmZmVyQmFja2VuZDo6SW1hZ2VCdWZmZXJCYWNrZW5kKGNvbnN0IFBhcmFtZXRl
cnMmIHBhcmFtZXRlcnMpCisgICAgOiBtX3BhcmFtZXRlcnMocGFyYW1ldGVycykKIHsKIH0KIApA
QCAtOTksMTUgKzk1LDE1IEBAIHZvaWQgSW1hZ2VCdWZmZXJCYWNrZW5kOjpjb252ZXJ0VG9MdW1p
bmFuY2VNYXNrKCkKIAogVmVjdG9yPHVpbnQ4X3Q+IEltYWdlQnVmZmVyQmFja2VuZDo6dG9CR1JB
RGF0YSh2b2lkKiBkYXRhKSBjb25zdAogewotICAgIFZlY3Rvcjx1aW50OF90PiByZXN1bHQoNCAq
IG1fbG9naWNhbFNpemUuYXJlYSgpLnVuc2FmZUdldCgpKTsKLSAgICBzaXplX3QgZGVzdEJ5dGVz
UGVyUm93ID0gbV9sb2dpY2FsU2l6ZS53aWR0aCgpICogNDsKKyAgICBWZWN0b3I8dWludDhfdD4g
cmVzdWx0KDQgKiBsb2dpY2FsU2l6ZSgpLmFyZWEoKS51bnNhZmVHZXQoKSk7CisgICAgc2l6ZV90
IGRlc3RCeXRlc1BlclJvdyA9IGxvZ2ljYWxTaXplKCkud2lkdGgoKSAqIDQ7CiAgICAgc2l6ZV90
IHNyY0J5dGVzUGVyUm93ID0gYnl0ZXNQZXJSb3coKTsKIAogICAgIHVpbnQ4X3QqIHNyY1Jvd3Mg
PSByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihkYXRhKTsKIAogICAgIGNvcHlJbWFnZVBpeGVs
cygKICAgICAgICAgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGllZCwgcGl4ZWxG
b3JtYXQoKSwgc3JjQnl0ZXNQZXJSb3csIHNyY1Jvd3MsCi0gICAgICAgIEFscGhhUHJlbXVsdGlw
bGljYXRpb246OlVucHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OkJHUkE4LCBkZXN0Qnl0ZXNQ
ZXJSb3csIHJlc3VsdC5kYXRhKCksIG1fbG9naWNhbFNpemUpOworICAgICAgICBBbHBoYVByZW11
bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpCR1JBOCwgZGVzdEJ5
dGVzUGVyUm93LCByZXN1bHQuZGF0YSgpLCBsb2dpY2FsU2l6ZSgpKTsKIAogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZUJ1ZmZlckJhY2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlQnVmZmVyQmFja2VuZC5oCmluZGV4IDU4MDY3MTVhN2IyYzg3NTc2OTAyYTc3MzU4NGRmMTgw
NTgyNTEwMGYuLjRhNjU0NzhmOGI2NDBjNmVkMTFmMzVmMTc2OTkwMjg4MWIzODg1MTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2Vu
ZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFj
a2VuZC5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiSW1hZ2VQYWludGluZ09wdGlvbnMu
aCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1MYXllci5oIgorI2lu
Y2x1ZGUgIlJlbmRlcmluZ01vZGUuaCIKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgogCkBAIC03Nyw2ICs3OCwxMyBAQCBwdWJsaWM6CiAKIGNsYXNzIElt
YWdlQnVmZmVyQmFja2VuZCB7CiBwdWJsaWM6CisgICAgc3RydWN0IFBhcmFtZXRlcnMgeworICAg
ICAgICBGbG9hdFNpemUgbG9naWNhbFNpemU7CisgICAgICAgIGZsb2F0IHJlc29sdXRpb25TY2Fs
ZTsKKyAgICAgICAgQ29sb3JTcGFjZSBjb2xvclNwYWNlOworICAgICAgICBQaXhlbEZvcm1hdCBw
aXhlbEZvcm1hdDsKKyAgICB9OworCiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+SW1hZ2VC
dWZmZXJCYWNrZW5kKCkgPSBkZWZhdWx0OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIElu
dFNpemUgY2FsY3VsYXRlQmFja2VuZFNpemUoY29uc3QgRmxvYXRTaXplJiwgZmxvYXQgcmVzb2x1
dGlvblNjYWxlKTsKQEAgLTg0LDE0ICs5Miw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZmx1c2hD
b250ZXh0KCkgeyB9CiAKLSAgICBJbnRTaXplIGxvZ2ljYWxTaXplKCkgY29uc3QgeyByZXR1cm4g
bV9sb2dpY2FsU2l6ZTsgfQotICAgIEludFNpemUgYmFja2VuZFNpemUoKSBjb25zdCB7IHJldHVy
biBtX2JhY2tlbmRTaXplOyB9Ci0gICAgZmxvYXQgcmVzb2x1dGlvblNjYWxlKCkgY29uc3QgeyBy
ZXR1cm4gbV9yZXNvbHV0aW9uU2NhbGU7IH0KLSAgICBDb2xvclNwYWNlIGNvbG9yU3BhY2UoKSBj
b25zdCB7IHJldHVybiBtX2NvbG9yU3BhY2U7IH0KLSAgICBQaXhlbEZvcm1hdCBwaXhlbEZvcm1h
dCgpIGNvbnN0IHsgcmV0dXJuIG1fcGl4ZWxGb3JtYXQ7IH0KKyAgICB2aXJ0dWFsIEludFNpemUg
YmFja2VuZFNpemUoKSBjb25zdCA9IDA7CiAKLSAgICB2aXJ0dWFsIEFmZmluZVRyYW5zZm9ybSBi
YXNlVHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gQWZmaW5lVHJhbnNmb3JtKCk7IH0KLSAgICB2
aXJ0dWFsIHNpemVfdCBtZW1vcnlDb3N0KCkgY29uc3QgeyByZXR1cm4gNCAqIG1fYmFja2VuZFNp
emUuYXJlYSgpLnVuc2FmZUdldCgpOyB9CisgICAgdmlydHVhbCBzaXplX3QgbWVtb3J5Q29zdCgp
IGNvbnN0IHsgcmV0dXJuIDQgKiBiYWNrZW5kU2l6ZSgpLmFyZWEoKS51bnNhZmVHZXQoKTsgfQog
ICAgIHZpcnR1YWwgc2l6ZV90IGV4dGVybmFsTWVtb3J5Q29zdCgpIGNvbnN0IHsgcmV0dXJuIDA7
IH0KIAogICAgIHZpcnR1YWwgUmVmUHRyPE5hdGl2ZUltYWdlPiBjb3B5TmF0aXZlSW1hZ2UoQmFj
a2luZ1N0b3JlQ29weSkgY29uc3QgPSAwOwpAQCAtMTI3LDI0ICsxMzAsMjkgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPFRocmVhZFNhZmVJbWFnZUJ1ZmZlckZsdXNoZXI+
IGNyZWF0ZUZsdXNoZXIoKSB7IHJldHVybiBudWxscHRyOyB9CiAgICAgCiAgICAgc3RhdGljIGNv
bnN0ZXhwciBib29sIGlzT3JpZ2luQXRVcHBlckxlZnRDb3JuZXIgPSBmYWxzZTsKLSAgICBzdGF0
aWMgY29uc3RleHByIGJvb2wgaXNBY2NlbGVyYXRlZCA9IGZhbHNlOworICAgIHN0YXRpYyBjb25z
dGV4cHIgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlID0gUmVuZGVyaW5nTW9kZTo6VW5hY2Nl
bGVyYXRlZDsKIAogcHJvdGVjdGVkOgotICAgIFdFQkNPUkVfRVhQT1JUIEltYWdlQnVmZmVyQmFj
a2VuZChjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBJbnRTaXplJiBiYWNrZW5k
U2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlLCBQaXhlbEZvcm1hdCk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgSW1hZ2VCdWZmZXJCYWNrZW5kKGNvbnN0IFBhcmFtZXRlcnMmKTsK
IAotICAgIHZpcnR1YWwgdW5zaWduZWQgYnl0ZXNQZXJSb3coKSBjb25zdCB7IHJldHVybiA0ICog
bV9iYWNrZW5kU2l6ZS53aWR0aCgpOyB9CisgICAgdmlydHVhbCB1bnNpZ25lZCBieXRlc1BlclJv
dygpIGNvbnN0IHsgcmV0dXJuIDQgKiBiYWNrZW5kU2l6ZSgpLndpZHRoKCk7IH0KIAogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgVCB0b0JhY2tlbmRDb29yZGluYXRlcyhUIHQpIGNvbnN0
CiAgICAgewogICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxULCBJbnRQb2ludD46
OnZhbHVlIHx8IHN0ZDo6aXNfc2FtZTxULCBJbnRTaXplPjo6dmFsdWUgfHwgc3RkOjppc19zYW1l
PFQsIEludFJlY3Q+Ojp2YWx1ZSk7Ci0gICAgICAgIGlmIChtX3Jlc29sdXRpb25TY2FsZSAhPSAx
KQotICAgICAgICAgICAgdC5zY2FsZShtX3Jlc29sdXRpb25TY2FsZSk7CisgICAgICAgIGlmIChy
ZXNvbHV0aW9uU2NhbGUoKSAhPSAxKQorICAgICAgICAgICAgdC5zY2FsZShyZXNvbHV0aW9uU2Nh
bGUoKSk7CiAgICAgICAgIHJldHVybiB0OwogICAgIH0KIAotICAgIEludFJlY3QgbG9naWNhbFJl
Y3QoKSBjb25zdCB7IHJldHVybiBJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIG1fbG9naWNhbFNp
emUpOyB9OwotICAgIEludFJlY3QgYmFja2VuZFJlY3QoKSBjb25zdCB7IHJldHVybiBJbnRSZWN0
KEludFBvaW50Ojp6ZXJvKCksIG1fYmFja2VuZFNpemUpOyB9OworICAgIEludFNpemUgbG9naWNh
bFNpemUoKSBjb25zdCB7IHJldHVybiBJbnRTaXplKG1fcGFyYW1ldGVycy5sb2dpY2FsU2l6ZSk7
IH0KKyAgICBmbG9hdCByZXNvbHV0aW9uU2NhbGUoKSBjb25zdCB7IHJldHVybiBtX3BhcmFtZXRl
cnMucmVzb2x1dGlvblNjYWxlOyB9CisgICAgQ29sb3JTcGFjZSBjb2xvclNwYWNlKCkgY29uc3Qg
eyByZXR1cm4gbV9wYXJhbWV0ZXJzLmNvbG9yU3BhY2U7IH0KKyAgICBQaXhlbEZvcm1hdCBwaXhl
bEZvcm1hdCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVycy5waXhlbEZvcm1hdDsgfQorCisg
ICAgSW50UmVjdCBsb2dpY2FsUmVjdCgpIGNvbnN0IHsgcmV0dXJuIEludFJlY3QoSW50UG9pbnQ6
Onplcm8oKSwgbG9naWNhbFNpemUoKSk7IH07CisgICAgSW50UmVjdCBiYWNrZW5kUmVjdCgpIGNv
bnN0IHsgcmV0dXJuIEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgYmFja2VuZFNpemUoKSk7IH07
CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgY29weUltYWdlUGl4ZWxzKAogICAg
ICAgICBBbHBoYVByZW11bHRpcGxpY2F0aW9uIHNyY0FscGhhRm9ybWF0LCBQaXhlbEZvcm1hdCBz
cmNQaXhlbEZvcm1hdCwgdW5zaWduZWQgc3JjQnl0ZXNQZXJSb3csIHVpbnQ4X3QqIHNyY1Jvd3Ms
CkBAIC0xNTUsMTEgKzE2Myw3IEBAIHByb3RlY3RlZDoKICAgICBXRUJDT1JFX0VYUE9SVCBSZWZQ
dHI8SW1hZ2VEYXRhPiBnZXRJbWFnZURhdGEoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRG
b3JtYXQsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QsIHZvaWQqIGRhdGEpIGNvbnN0OwogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgcHV0SW1hZ2VEYXRhKEFscGhhUHJlbXVsdGlwbGljYXRpb24gaW5w
dXRGb3JtYXQsIGNvbnN0IEltYWdlRGF0YSYsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QsIGNvbnN0
IEludFBvaW50JiBkZXN0UG9pbnQsIEFscGhhUHJlbXVsdGlwbGljYXRpb24gZGVzdEZvcm1hdCwg
dm9pZCogZGF0YSk7CiAKLSAgICBJbnRTaXplIG1fbG9naWNhbFNpemU7Ci0gICAgSW50U2l6ZSBt
X2JhY2tlbmRTaXplOwotICAgIGZsb2F0IG1fcmVzb2x1dGlvblNjYWxlOwotICAgIENvbG9yU3Bh
Y2UgbV9jb2xvclNwYWNlOwotICAgIFBpeGVsRm9ybWF0IG1fcGl4ZWxGb3JtYXQ7CisgICAgY29u
c3QgUGFyYW1ldGVycyYgbV9wYXJhbWV0ZXJzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1J
bWFnZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1J
bWFnZUJ1ZmZlci5oCmluZGV4IGIwNWZhNjUxNjk3MWQxNzY3MTMxZDU2YTQ2MzkzNTNlZjk0ZTQ5
MjUuLjUyZGQ4M2NjOTNkNTU1M2IzNzllNTg3ZDQzODVkNGY3ODA1OTQ0YmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtSW1hZ2VCdWZmZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybUltYWdlQnVmZmVy
LmgKQEAgLTc1LDUgKzc1LDUgQEAgdXNpbmcgRGlzcGxheUxpc3RBY2NlbGVyYXRlZEltYWdlQnVm
ZmVyID0gRGlzcGxheUxpc3Q6OkltYWdlQnVmZmVyPEFjY2VsZXJhdGVkSW0KIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIAogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpBY2Nl
bGVyYXRlZEltYWdlQnVmZmVyKQotICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3Jl
OjpJbWFnZUJ1ZmZlciYgYnVmZmVyKSB7IHJldHVybiBidWZmZXIuaXNBY2NlbGVyYXRlZCgpOyB9
CisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OkltYWdlQnVmZmVyJiBidWZm
ZXIpIHsgcmV0dXJuIGJ1ZmZlci5yZW5kZXJpbmdNb2RlKCkgPT0gV2ViQ29yZTo6UmVuZGVyaW5n
TW9kZTo6QWNjZWxlcmF0ZWQ7IH0KIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVy
Q2Fpcm9CYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmNwcAppbmRleCAxMmE1YjYwYTJlOTA0NmExOTU4OTJi
YWY1ZGQ3ZWQ0OTYzM2IzZTc0Li5iM2JmZDgxMjdiODdkMTY4OGVhYmI1Y2Y0YjJhNzFjMzM1OWNk
MmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9J
bWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQuY3BwCkBAIC04MCw3ICs4MCw3
IEBAIHZvaWQgSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQ6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29u
dGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsCiAgICAgfQogCiAgICAgaWYgKGF1dG8gaW1hZ2Ug
PSBjb3B5TmF0aXZlSW1hZ2UoJmRlc3RDb250ZXh0ID09ICZjb250ZXh0KCkgPyBDb3B5QmFja2lu
Z1N0b3JlIDogRG9udENvcHlCYWNraW5nU3RvcmUpKQotICAgICAgICBDYWlybzo6ZHJhd1BhdHRl
cm4oKmRlc3RDb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLCBpbWFnZS0+cGxhdGZvcm1JbWFnZSgp
LmdldCgpLCBtX2xvZ2ljYWxTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgcGF0dGVyblRyYW5zZm9y
bSwgcGhhc2UsIG9wdGlvbnMpOworICAgICAgICBDYWlybzo6ZHJhd1BhdHRlcm4oKmRlc3RDb250
ZXh0LnBsYXRmb3JtQ29udGV4dCgpLCBpbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpLCBsb2dp
Y2FsU2l6ZSgpLCBkZXN0UmVjdCwgc3JjUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIG9w
dGlvbnMpOwogfQogCiB2b2lkIEltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kOjpjbGlwVG9NYXNrKEdy
YXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1
ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZC5jcHAK
aW5kZXggMWNkMDc1NGIzOTE0M2FmNDI5YjQ2ZDVkNzhlNDUxZjBkMWUwNzRjMy4uM2RhMTQ1NWVi
YTA2ZDY3OTRlMzMyNzAxN2RhYWZkNzliYzU0NzJkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJh
Y2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0lt
YWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kLmNwcApAQCAtNDEsMTMgKzQxLDEzIEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKEltYWdl
QnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kKTsKIAotc3RkOjp1bmlxdWVfcHRyPEltYWdl
QnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kPiBJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJm
YWNlQmFja2VuZDo6Y3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlv
blNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBj
b25zdCBIb3N0V2luZG93KikKK3N0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VT
dXJmYWNlQmFja2VuZD4gSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQ6OmNyZWF0
ZShjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBjb25zdCBIb3N0V2luZG93KikKIHsKLSAg
ICBBU1NFUlQocGl4ZWxGb3JtYXQgPT0gUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBBU1NFUlQo
cGFyYW1ldGVycy5waXhlbEZvcm1hdCA9PSBQaXhlbEZvcm1hdDo6QkdSQTgpOwogCiAgICAgc3Rh
dGljIGNhaXJvX3VzZXJfZGF0YV9rZXlfdCBzX3N1cmZhY2VEYXRhS2V5OwogCi0gICAgSW50U2l6
ZSBiYWNrZW5kU2l6ZSA9IGNhbGN1bGF0ZUJhY2tlbmRTaXplKHNpemUsIHJlc29sdXRpb25TY2Fs
ZSk7CisgICAgSW50U2l6ZSBiYWNrZW5kU2l6ZSA9IGNhbGN1bGF0ZUJhY2tlbmRTaXplKHBhcmFt
ZXRlcnMubG9naWNhbFNpemUsIHBhcmFtZXRlcnMucmVzb2x1dGlvblNjYWxlKTsKICAgICBpZiAo
YmFja2VuZFNpemUuaXNFbXB0eSgpIHx8IGJhY2tlbmRTaXplLndpZHRoKCkgPiBjYWlyb01heElt
YWdlU2l6ZSB8fCBiYWNrZW5kU2l6ZS5oZWlnaHQoKSA+IGNhaXJvTWF4SW1hZ2VTaXplKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtNjEsMTYgKzYxLDE2IEBAIHN0ZDo6dW5pcXVlX3B0
cjxJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZD4gSW1hZ2VCdWZmZXJDYWlyb0lt
YWdlU3VyZmFjCiAgICAgICAgIGZhc3RGcmVlKGRhdGEpOwogICAgIH0pOwogCi0gICAgcmV0dXJu
IHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZD4obmV3
IEltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kKHNpemUsIGJhY2tlbmRTaXplLCBy
ZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0LCBXVEZNb3ZlKHN1cmZhY2Up
KSk7CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJm
YWNlQmFja2VuZD4obmV3IEltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kKHBhcmFt
ZXRlcnMsIFdURk1vdmUoc3VyZmFjZSkpKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVm
ZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kPiBJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNl
QmFja2VuZDo6Y3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgY29uc3QgR3JhcGhpY3NDb250
ZXh0JikKK3N0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2Vu
ZD4gSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZShjb25zdCBQYXJh
bWV0ZXJzJiBwYXJhbWV0ZXJzLCBjb25zdCBHcmFwaGljc0NvbnRleHQmKQogewotICAgIHJldHVy
biBJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZDo6Y3JlYXRlKHNpemUsIDEsIENv
bG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCwgbnVsbHB0cik7CisgICAgcmV0dXJu
IEltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kOjpjcmVhdGUocGFyYW1ldGVycywg
bnVsbHB0cik7CiB9CiAKLUltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kOjpJbWFn
ZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZChjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxT
aXplLCBjb25zdCBJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBD
b2xvclNwYWNlIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBSZWZQdHI8Y2Fp
cm9fc3VyZmFjZV90PiYmIHN1cmZhY2UpCi0gICAgOiBJbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJh
Y2tlbmQobG9naWNhbFNpemUsIGJhY2tlbmRTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3Bh
Y2UsIHBpeGVsRm9ybWF0LCBXVEZNb3ZlKHN1cmZhY2UpKQorSW1hZ2VCdWZmZXJDYWlyb0ltYWdl
U3VyZmFjZUJhY2tlbmQ6OkltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kKGNvbnN0
IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+JiYgc3VyZmFj
ZSkKKyAgICA6IEltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZChwYXJhbWV0ZXJzLCBXVEZN
b3ZlKHN1cmZhY2UpKQogewogICAgIEFTU0VSVChjYWlyb19zdXJmYWNlX2dldF90eXBlKG1fc3Vy
ZmFjZS5nZXQoKSkgPT0gQ0FJUk9fU1VSRkFDRV9UWVBFX0lNQUdFKTsKIH0KQEAgLTc5LDE2ICs3
OSwxNiBAQCB2b2lkIEltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kOjpwbGF0Zm9y
bVRyYW5zZm9ybUNvbG9yU3BhY2UoY29uc3Qgc3RkOgogewogICAgIHVuc2lnbmVkIGNoYXIqIGRh
dGFTcmMgPSBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9kYXRhKG1fc3VyZmFjZS5nZXQoKSk7CiAg
ICAgaW50IHN0cmlkZSA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3N0cmlkZShtX3N1cmZhY2Uu
Z2V0KCkpOwotICAgIGZvciAoaW50IHkgPSAwOyB5IDwgbV9sb2dpY2FsU2l6ZS5oZWlnaHQoKTsg
Kyt5KSB7CisgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBsb2dpY2FsU2l6ZSgpLmhlaWdodCgpOyAr
K3kpIHsKICAgICAgICAgdW5zaWduZWQqIHJvdyA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRyPHVuc2ln
bmVkKj4oZGF0YVNyYyArIHN0cmlkZSAqIHkpOwotICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8
IG1fbG9naWNhbFNpemUud2lkdGgoKTsgeCsrKSB7CisgICAgICAgIGZvciAoaW50IHggPSAwOyB4
IDwgbG9naWNhbFNpemUoKS53aWR0aCgpOyB4KyspIHsKICAgICAgICAgICAgIHVuc2lnbmVkKiBw
aXhlbCA9IHJvdyArIHg7CiAgICAgICAgICAgICBhdXRvIHBpeGVsQ29tcG9uZW50cyA9IHVucHJl
bXVsdGlwbGllZChhc1NSR0JBKFBhY2tlZENvbG9yOjpBUkdCIHsgKnBpeGVsIH0pKTsKICAgICAg
ICAgICAgIHBpeGVsQ29tcG9uZW50cyA9IHsgbG9va1VwVGFibGVbcGl4ZWxDb21wb25lbnRzLnJl
ZF0sIGxvb2tVcFRhYmxlW3BpeGVsQ29tcG9uZW50cy5ncmVlbl0sIGxvb2tVcFRhYmxlW3BpeGVs
Q29tcG9uZW50cy5ibHVlXSwgcGl4ZWxDb21wb25lbnRzLmFscGhhIH07CiAgICAgICAgICAgICAq
cGl4ZWwgPSBQYWNrZWRDb2xvcjo6QVJHQiB7IHByZW11bHRpcGxpZWRDZWlsaW5nKHBpeGVsQ29t
cG9uZW50cykgfS52YWx1ZTsKICAgICAgICAgfQogICAgIH0KLSAgICBjYWlyb19zdXJmYWNlX21h
cmtfZGlydHlfcmVjdGFuZ2xlKG1fc3VyZmFjZS5nZXQoKSwgMCwgMCwgbV9sb2dpY2FsU2l6ZS53
aWR0aCgpLCBtX2xvZ2ljYWxTaXplLmhlaWdodCgpKTsKKyAgICBjYWlyb19zdXJmYWNlX21hcmtf
ZGlydHlfcmVjdGFuZ2xlKG1fc3VyZmFjZS5nZXQoKSwgMCwgMCwgbG9naWNhbFNpemUoKS53aWR0
aCgpLCBsb2dpY2FsU2l6ZSgpLmhlaWdodCgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1h
Z2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kLmgK
aW5kZXggZDE2ZDMzZWFjNDZjNWRmNjZmYjhmYTJkOTU0OTEwZTJmOTExNWEwMy4uODY1Y2M2OWIy
ZDUzMzg1NDVmMzdlNDE5M2NiOTRmMTk4MGJlNzNhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJh
Y2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFn
ZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZC5oCkBAIC00MCwxMSArNDAsMTEgQEAgY2xh
c3MgSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQgOiBwdWJsaWMgSW1hZ2VCdWZm
ZXJDYWlyb1N1cmZhY2VCYWNrZW4KICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEltYWdlQnVm
ZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kKTsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJ
bWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZCk7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZD4gY3Jl
YXRlKGNvbnN0IEZsb2F0U2l6ZSYsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSwg
UGl4ZWxGb3JtYXQsIGNvbnN0IEhvc3RXaW5kb3cqKTsKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVf
cHRyPEltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kPiBjcmVhdGUoY29uc3QgRmxv
YXRTaXplJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0Jik7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVl
X3B0cjxJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZD4gY3JlYXRlKGNvbnN0IFBh
cmFtZXRlcnMmLCBjb25zdCBIb3N0V2luZG93Kik7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZD4gY3JlYXRlKGNvbnN0IFBhcmFt
ZXRlcnMmLCBjb25zdCBHcmFwaGljc0NvbnRleHQmKTsKIAogcHJpdmF0ZToKLSAgICBJbWFnZUJ1
ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZChjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXpl
LCBjb25zdCBJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xv
clNwYWNlLCBQaXhlbEZvcm1hdCwgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4mJik7CisgICAgSW1h
Z2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQoY29uc3QgUGFyYW1ldGVycyYsIFJlZlB0
cjxjYWlyb19zdXJmYWNlX3Q+JiYpOwogCiAgICAgdm9pZCBwbGF0Zm9ybVRyYW5zZm9ybUNvbG9y
U3BhY2UoY29uc3Qgc3RkOjphcnJheTx1aW50OF90LCAyNTY+JiBsb29rVXBUYWJsZSkgb3ZlcnJp
ZGU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZC5jcHAK
aW5kZXggOWI4MjE2NGFlYTMzMDcxZTUzNjFjNmZlMzliMWI4MjdjOWI2YjE1MC4uMGI3M2YxNGJh
NzAwNWU1MjA1MGVkNTgyMTY0YTExNjM4MDU0OTcxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5k
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1
ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQuY3BwCkBAIC00Myw4ICs0Myw4IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kOjpJbWFnZUJ1ZmZl
ckNhaXJvU3VyZmFjZUJhY2tlbmQoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3Qg
SW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBj
b2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgUmVmUHRyPGNhaXJvX3N1cmZhY2Vf
dD4mJiBzdXJmYWNlKQotICAgIDogSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQobG9naWNhbFNpemUs
IGJhY2tlbmRTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0KQor
SW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kOjpJbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJh
Y2tlbmQoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycywgUmVmUHRyPGNhaXJvX3N1cmZhY2Vf
dD4mJiBzdXJmYWNlKQorICAgIDogSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQocGFyYW1ldGVycykK
ICAgICAsIG1fc3VyZmFjZShXVEZNb3ZlKHN1cmZhY2UpKQogewogICAgIEFTU0VSVChjYWlyb19z
dXJmYWNlX3N0YXR1cyhtX3N1cmZhY2UuZ2V0KCkpID09IENBSVJPX1NUQVRVU19TVUNDRVNTKTsK
QEAgLTU5LDYgKzU5LDExIEBAIEdyYXBoaWNzQ29udGV4dCYgSW1hZ2VCdWZmZXJDYWlyb1N1cmZh
Y2VCYWNrZW5kOjpjb250ZXh0KCkgY29uc3QKICAgICByZXR1cm4gKm1fY29udGV4dDsKIH0KIAor
SW50U2l6ZSBJbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQ6OmJhY2tlbmRTaXplKCkgY29u
c3QKK3sKKyAgICByZXR1cm4geyBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF93aWR0aChtX3N1cmZh
Y2UuZ2V0KCkpLCBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9oZWlnaHQobV9zdXJmYWNlLmdldCgp
KSB9OworfQorCiB1bnNpZ25lZCBJbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQ6OmJ5dGVz
UGVyUm93KCkgY29uc3QKIHsKICAgICByZXR1cm4gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfc3Ry
aWRlKG1fc3VyZmFjZS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNl
QmFja2VuZC5oCmluZGV4IDEyYWEyYjFjZTg4ZWU0MjY0NWZhNzcyZTY3OWY1ZDQxOTVhMjY3NDcu
LjllOTNkZGU4NThlZjQzYjI4MmQ0MzhjYTVhNzY3ZmViY2JiZGRiY2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9TdXJm
YWNlQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0ltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZC5oCkBAIC00MCw2ICs0MCw4IEBAIGNsYXNz
IEltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZCA6IHB1YmxpYyBJbWFnZUJ1ZmZlckNhaXJv
QmFja2VuZCB7CiBwdWJsaWM6CiAgICAgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KCkgY29uc3Qg
b3ZlcnJpZGU7CiAKKyAgICBJbnRTaXplIGJhY2tlbmRTaXplKCkgY29uc3Qgb3ZlcnJpZGU7CisK
ICAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IGNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5
KSBjb25zdCBvdmVycmlkZTsKIAogICAgIFZlY3Rvcjx1aW50OF90PiB0b0JHUkFEYXRhKCkgY29u
c3Qgb3ZlcnJpZGU7CkBAIC00Nyw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHB1dEltYWdl
RGF0YShBbHBoYVByZW11bHRpcGxpY2F0aW9uIGlucHV0Rm9ybWF0LCBjb25zdCBJbWFnZURhdGEm
LCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50LCBBbHBo
YVByZW11bHRpcGxpY2F0aW9uIGRlc3RGb3JtYXQpIG92ZXJyaWRlOwogCiBwcm90ZWN0ZWQ6Ci0g
ICAgSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNh
bFNpemUsIGNvbnN0IEludFNpemUmIGJhY2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUs
IENvbG9yU3BhY2UsIFBpeGVsRm9ybWF0LCBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiYmKTsKKyAg
ICBJbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQoY29uc3QgUGFyYW1ldGVycyYsIFJlZlB0
cjxjYWlyb19zdXJmYWNlX3Q+JiYpOwogCiAgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBjYWlyb1N1
cmZhY2VDb2VyY2VUb0ltYWdlKCkgY29uc3Q7CiAgICAgdW5zaWduZWQgYnl0ZXNQZXJSb3coKSBj
b25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0ltYWdlQnVmZmVyQ0dCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCYWNrZW5kLmNwcAppbmRleCA1MDE3YmExMmM4YjQ4
N2IwY2EwNmU1NDNiMTI5NjM2NWQ2ZGQyYjJiLi5hYmJkMzY4ODc4MjY3ZDhjZjc3OGM2NjA2ZmRi
MjgwM2RkNGExZDc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JhY2tlbmQuY3BwCkBAIC03OSw4ICs3OSw4IEBA
IHZvaWQgSW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OnNldHVwQ29udGV4dCgpIGNvbnN0CiB7CiAgICAg
Ly8gVGhlIGluaXRpYWwgQ1RNIG1hdGNoZXMgRGlzcGxheUxpc3Q6OlJlY29yZGVyOjpjbGlwVG9E
cmF3aW5nQ29tbWFuZHMoKSdzIGluaXRpYWwgQ1RNLgogICAgIGNvbnRleHQoKS5zY2FsZShGbG9h
dFNpemUoMSwgLTEpKTsKLSAgICBjb250ZXh0KCkudHJhbnNsYXRlKDAsIC1tX2JhY2tlbmRTaXpl
LmhlaWdodCgpKTsKLSAgICBjb250ZXh0KCkuYXBwbHlEZXZpY2VTY2FsZUZhY3RvcihtX3Jlc29s
dXRpb25TY2FsZSk7CisgICAgY29udGV4dCgpLnRyYW5zbGF0ZSgwLCAtYmFja2VuZFNpemUoKS5o
ZWlnaHQoKSk7CisgICAgY29udGV4dCgpLmFwcGx5RGV2aWNlU2NhbGVGYWN0b3IocmVzb2x1dGlv
blNjYWxlKCkpOwogfQogCiBzdGF0aWMgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGNyZWF0ZUNyb3Bw
ZWRJbWFnZUlmTmVjZXNzYXJ5KENHSW1hZ2VSZWYgaW1hZ2UsIGNvbnN0IEludFNpemUmIGJhY2tl
bmRTaXplKQpAQCAtMTEyLDMxICsxMTIsMzIgQEAgc3RhdGljIFJlZlB0cjxJbWFnZT4gY3JlYXRl
Qml0bWFwSW1hZ2VBZnRlclNjYWxpbmdJZk5lZWRlZChSZWZQdHI8TmF0aXZlSW1hZ2U+JiYKIFJl
ZlB0cjxJbWFnZT4gSW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OmNvcHlJbWFnZShCYWNraW5nU3RvcmVD
b3B5IGNvcHlCZWhhdmlvciwgUHJlc2VydmVSZXNvbHV0aW9uIHByZXNlcnZlUmVzb2x1dGlvbikg
Y29uc3QKIHsKICAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IGltYWdlOwotICAgIGlmIChtX3Jlc29s
dXRpb25TY2FsZSA9PSAxIHx8IHByZXNlcnZlUmVzb2x1dGlvbiA9PSBQcmVzZXJ2ZVJlc29sdXRp
b246OlllcykKKyAgICBpZiAocmVzb2x1dGlvblNjYWxlKCkgPT0gMSB8fCBwcmVzZXJ2ZVJlc29s
dXRpb24gPT0gUHJlc2VydmVSZXNvbHV0aW9uOjpZZXMpCiAgICAgICAgIGltYWdlID0gY29weU5h
dGl2ZUltYWdlKGNvcHlCZWhhdmlvcik7CiAgICAgZWxzZQogICAgICAgICBpbWFnZSA9IGNvcHlO
YXRpdmVJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSk7Ci0gICAgcmV0dXJuIGNyZWF0ZUJpdG1h
cEltYWdlQWZ0ZXJTY2FsaW5nSWZOZWVkZWQoV1RGTW92ZShpbWFnZSksIG1fbG9naWNhbFNpemUs
IG1fYmFja2VuZFNpemUsIG1fcmVzb2x1dGlvblNjYWxlLCBwcmVzZXJ2ZVJlc29sdXRpb24pOwor
ICAgIHJldHVybiBjcmVhdGVCaXRtYXBJbWFnZUFmdGVyU2NhbGluZ0lmTmVlZGVkKFdURk1vdmUo
aW1hZ2UpLCBsb2dpY2FsU2l6ZSgpLCBiYWNrZW5kU2l6ZSgpLCByZXNvbHV0aW9uU2NhbGUoKSwg
cHJlc2VydmVSZXNvbHV0aW9uKTsKIH0KIAogUmVmUHRyPEltYWdlPiBJbWFnZUJ1ZmZlckNHQmFj
a2VuZDo6c2lua0ludG9JbWFnZShQcmVzZXJ2ZVJlc29sdXRpb24gcHJlc2VydmVSZXNvbHV0aW9u
KQogewotICAgIHJldHVybiBjcmVhdGVCaXRtYXBJbWFnZUFmdGVyU2NhbGluZ0lmTmVlZGVkKHNp
bmtJbnRvTmF0aXZlSW1hZ2UoKSwgbV9sb2dpY2FsU2l6ZSwgbV9iYWNrZW5kU2l6ZSwgbV9yZXNv
bHV0aW9uU2NhbGUsIHByZXNlcnZlUmVzb2x1dGlvbik7CisgICAgYXV0byBiYWNrZW5kU2l6ZSA9
IHRoaXMtPmJhY2tlbmRTaXplKCk7CisgICAgcmV0dXJuIGNyZWF0ZUJpdG1hcEltYWdlQWZ0ZXJT
Y2FsaW5nSWZOZWVkZWQoc2lua0ludG9OYXRpdmVJbWFnZSgpLCBsb2dpY2FsU2l6ZSgpLCBiYWNr
ZW5kU2l6ZSwgcmVzb2x1dGlvblNjYWxlKCksIHByZXNlcnZlUmVzb2x1dGlvbik7CiB9CiAKIHZv
aWQgSW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4
dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBGbG9hdFJlY3Qgc3Jj
UmVjdFNjYWxlZCA9IHNyY1JlY3Q7Ci0gICAgc3JjUmVjdFNjYWxlZC5zY2FsZShtX3Jlc29sdXRp
b25TY2FsZSk7CisgICAgc3JjUmVjdFNjYWxlZC5zY2FsZShyZXNvbHV0aW9uU2NhbGUoKSk7CiAK
ICAgICBpZiAoYXV0byBpbWFnZSA9IGNvcHlOYXRpdmVJbWFnZSgmZGVzdENvbnRleHQgPT0gJmNv
bnRleHQoKSA/IENvcHlCYWNraW5nU3RvcmUgOiBEb250Q29weUJhY2tpbmdTdG9yZSkpCi0gICAg
ICAgIGRlc3RDb250ZXh0LmRyYXdOYXRpdmVJbWFnZSgqaW1hZ2UsIG1fYmFja2VuZFNpemUsIGRl
c3RSZWN0LCBzcmNSZWN0U2NhbGVkLCBvcHRpb25zKTsKKyAgICAgICAgZGVzdENvbnRleHQuZHJh
d05hdGl2ZUltYWdlKCppbWFnZSwgYmFja2VuZFNpemUoKSwgZGVzdFJlY3QsIHNyY1JlY3RTY2Fs
ZWQsIG9wdGlvbnMpOwogfQogCiB2b2lkIEltYWdlQnVmZmVyQ0dCYWNrZW5kOjpkcmF3UGF0dGVy
bihHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0
LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVy
blRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3Bh
Y2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgRmxvYXRS
ZWN0IGFkanVzdGVkU3JjUmVjdCA9IHNyY1JlY3Q7Ci0gICAgYWRqdXN0ZWRTcmNSZWN0LnNjYWxl
KG1fcmVzb2x1dGlvblNjYWxlKTsKKyAgICBhZGp1c3RlZFNyY1JlY3Quc2NhbGUocmVzb2x1dGlv
blNjYWxlKCkpOwogCiAgICAgaWYgKGF1dG8gaW1hZ2UgPSBjb3B5SW1hZ2UoJmRlc3RDb250ZXh0
ID09ICZjb250ZXh0KCkgPyBDb3B5QmFja2luZ1N0b3JlIDogRG9udENvcHlCYWNraW5nU3RvcmUp
KQogICAgICAgICBpbWFnZS0+ZHJhd1BhdHRlcm4oZGVzdENvbnRleHQsIGRlc3RSZWN0LCBhZGp1
c3RlZFNyY1JlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBvcHRpb25zKTsK
QEAgLTE1OSwxMSArMTYwLDYgQEAgdm9pZCBJbWFnZUJ1ZmZlckNHQmFja2VuZDo6Y2xpcFRvTWFz
ayhHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFIKICAgICBDR0NvbnRl
eHRUcmFuc2xhdGVDVE0oY2dDb250ZXh0LCAtZGVzdFJlY3QueCgpLCAtZGVzdFJlY3QubWF4WSgp
KTsKIH0KIAotQWZmaW5lVHJhbnNmb3JtIEltYWdlQnVmZmVyQ0dCYWNrZW5kOjpiYXNlVHJhbnNm
b3JtKCkgY29uc3QKLXsKLSAgICByZXR1cm4gQWZmaW5lVHJhbnNmb3JtKDEsIDAsIDAsIC0xLCAw
LCBtX2xvZ2ljYWxTaXplLmhlaWdodCgpKTsKLX0KLQogUmV0YWluUHRyPENGRGF0YVJlZj4gSW1h
Z2VCdWZmZXJDR0JhY2tlbmQ6OnRvQ0ZEYXRhKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlv
bmFsPGRvdWJsZT4gcXVhbGl0eSwgUHJlc2VydmVSZXNvbHV0aW9uIHByZXNlcnZlUmVzb2x1dGlv
bikgY29uc3QKIHsKICAgICBBU1NFUlQoTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRJbWFn
ZU1JTUVUeXBlRm9yRW5jb2RpbmcobWltZVR5cGUpKTsKQEAgLTE5MCw3ICsxODYsNyBAQCBSZXRh
aW5QdHI8Q0ZEYXRhUmVmPiBJbWFnZUJ1ZmZlckNHQmFja2VuZDo6dG9DRkRhdGEoY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSwgT3B0aQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAg
ICAgaW1hZ2UgPSBhZG9wdENGKENHSW1hZ2VDcmVhdGUocGl4ZWxBcnJheURpbWVuc2lvbnMud2lk
dGgoKSwgcGl4ZWxBcnJheURpbWVuc2lvbnMuaGVpZ2h0KCksIDgsIDMyLCA0ICogcGl4ZWxBcnJh
eURpbWVuc2lvbnMud2lkdGgoKSwgc1JHQkNvbG9yU3BhY2VSZWYoKSwga0NHQml0bWFwQnl0ZU9y
ZGVyRGVmYXVsdCB8IGtDR0ltYWdlQWxwaGFOb25lU2tpcExhc3QsIGRhdGFQcm92aWRlci5nZXQo
KSwgMCwgZmFsc2UsIGtDR1JlbmRlcmluZ0ludGVudERlZmF1bHQpKTsKLSAgICB9IGVsc2UgaWYg
KG1fcmVzb2x1dGlvblNjYWxlID09IDEgfHwgcHJlc2VydmVSZXNvbHV0aW9uID09IFByZXNlcnZl
UmVzb2x1dGlvbjo6WWVzKSB7CisgICAgfSBlbHNlIGlmIChyZXNvbHV0aW9uU2NhbGUoKSA9PSAx
IHx8IHByZXNlcnZlUmVzb2x1dGlvbiA9PSBQcmVzZXJ2ZVJlc29sdXRpb246OlllcykgewogICAg
ICAgICBpbWFnZSA9IGNvcHlOYXRpdmVJbWFnZShDb3B5QmFja2luZ1N0b3JlKS0+cGxhdGZvcm1J
bWFnZSgpOwogICAgICAgICBpbWFnZSA9IGNyZWF0ZUNyb3BwZWRJbWFnZUlmTmVjZXNzYXJ5KGlt
YWdlLmdldCgpLCBiYWNrZW5kU2l6ZSgpKTsKICAgICB9IGVsc2UgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JhY2tlbmQuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCYWNrZW5k
LmgKaW5kZXggMWUwN2ZkYzY0NDNmZGMwOGY2YWY2M2UwODgzZWIzMjA1M2U0ZDU5Ny4uYjI2YWUw
ODQzNDdiOWUyMzM0MDQ2MDBjMmVhNGE0YTI4YjFlMWJhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JhY2tlbmQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5o
CkBAIC00MSw4ICs0MSw2IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIGNsaXBUb01hc2soR3Jh
cGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCkgb3ZlcnJpZGU7CiAKLSAg
ICBBZmZpbmVUcmFuc2Zvcm0gYmFzZVRyYW5zZm9ybSgpIGNvbnN0IG92ZXJyaWRlOwotCiAgICAg
U3RyaW5nIHRvRGF0YVVSTChjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpb25hbDxkb3VibGU+
IHF1YWxpdHksIFByZXNlcnZlUmVzb2x1dGlvbikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgVmVjdG9y
PHVpbnQ4X3Q+IHRvRGF0YShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpb25hbDxkb3VibGU+
IHF1YWxpdHkpIGNvbnN0IG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2Vu
ZC5jcHAKaW5kZXggZjIxOGYyN2YyZjUzYzVhNGFkYmI2YTVhZWRjM2M0OWU0OGNkNjNhNC4uYmE0
MTRmM2NiYTVkNGUxMjNjNGJiM2Y0NDgwMGZhOThkYWJiNmZhOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVy
Q0dCaXRtYXBCYWNrZW5kLmNwcApAQCAtMzksMTEgKzM5LDExIEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNr
ZW5kKTsKIAotc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kPiBJbWFn
ZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxv
YXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIENHQ29sb3JTcGFjZVJl
ZiBjZ0NvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBjb25zdCBIb3N0V2luZG93
KikKK3N0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZD4gSW1hZ2VCdWZm
ZXJDR0JpdG1hcEJhY2tlbmQ6OmNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBD
R0NvbG9yU3BhY2VSZWYgY2dDb2xvclNwYWNlLCBjb25zdCBIb3N0V2luZG93KikKIHsKLSAgICBB
U1NFUlQocGl4ZWxGb3JtYXQgPT0gUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBBU1NFUlQocGFy
YW1ldGVycy5waXhlbEZvcm1hdCA9PSBQaXhlbEZvcm1hdDo6QkdSQTgpOwogCi0gICAgSW50U2l6
ZSBiYWNrZW5kU2l6ZSA9IGNhbGN1bGF0ZUJhY2tlbmRTaXplKHNpemUsIHJlc29sdXRpb25TY2Fs
ZSk7CisgICAgSW50U2l6ZSBiYWNrZW5kU2l6ZSA9IGNhbGN1bGF0ZUJhY2tlbmRTaXplKHBhcmFt
ZXRlcnMubG9naWNhbFNpemUsIHBhcmFtZXRlcnMucmVzb2x1dGlvblNjYWxlKTsKICAgICBpZiAo
YmFja2VuZFNpemUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtNzAs
MjQgKzcwLDI0IEBAIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZD4g
SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNyZWF0ZShjCiAKICAgICBhdXRvIGRhdGFQcm92
aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRoRGF0YSgwLCBkYXRhLCBudW1C
eXRlcywgcmVsZWFzZUltYWdlRGF0YSkpOwogCi0gICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxJ
bWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZD4obmV3IEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5k
KHNpemUsIGJhY2tlbmRTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9y
bWF0LCBkYXRhLCBXVEZNb3ZlKGRhdGFQcm92aWRlciksIFdURk1vdmUoY29udGV4dCkpKTsKKyAg
ICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kPihuZXcg
SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQocGFyYW1ldGVycywgZGF0YSwgV1RGTW92ZShkYXRh
UHJvdmlkZXIpLCBXVEZNb3ZlKGNvbnRleHQpKSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxJbWFn
ZUJ1ZmZlckNHQml0bWFwQmFja2VuZD4gSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNyZWF0
ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkK
K3N0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZD4gSW1hZ2VCdWZmZXJD
R0JpdG1hcEJhY2tlbmQ6OmNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBjb25z
dCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiB7CiAgICAgaWYgKGF1dG8gY2dDb2xvclNwYWNl
ID0gY29udGV4dENvbG9yU3BhY2UoY29udGV4dCkpCi0gICAgICAgIHJldHVybiBJbWFnZUJ1ZmZl
ckNHQml0bWFwQmFja2VuZDo6Y3JlYXRlKHNpemUsIDEsIENvbG9yU3BhY2U6OlNSR0IsIGNnQ29s
b3JTcGFjZS5nZXQoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4LCBudWxscHRyKTsKLSAgICAKLSAgICBy
ZXR1cm4gSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNyZWF0ZShzaXplLCAxLCBDb2xvclNw
YWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdSQTgsIG51bGxwdHIpOworICAgICAgICByZXR1cm4g
SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNyZWF0ZShwYXJhbWV0ZXJzLCBjZ0NvbG9yU3Bh
Y2UuZ2V0KCksIG51bGxwdHIpOworCisgICAgcmV0dXJuIEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNr
ZW5kOjpjcmVhdGUocGFyYW1ldGVycywgbnVsbHB0cik7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxJ
bWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZD4gSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNy
ZWF0ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JT
cGFjZSBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgY29uc3QgSG9zdFdpbmRv
dyogaG9zdFdpbmRvdykKK3N0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2Vu
ZD4gSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiBw
YXJhbWV0ZXJzLCBjb25zdCBIb3N0V2luZG93KiBob3N0V2luZG93KQogewotICAgIHJldHVybiBJ
bWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y3JlYXRlKHNpemUsIHJlc29sdXRpb25TY2FsZSwg
Y29sb3JTcGFjZSwgY2FjaGVkQ0dDb2xvclNwYWNlKGNvbG9yU3BhY2UpLCBwaXhlbEZvcm1hdCwg
aG9zdFdpbmRvdyk7CisgICAgcmV0dXJuIEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpjcmVh
dGUocGFyYW1ldGVycywgY2FjaGVkQ0dDb2xvclNwYWNlKHBhcmFtZXRlcnMuY29sb3JTcGFjZSks
IGhvc3RXaW5kb3cpOwogfQogCi1JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6SW1hZ2VCdWZm
ZXJDR0JpdG1hcEJhY2tlbmQoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50
U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xv
clNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgdm9pZCogZGF0YSwgUmV0YWluUHRyPENH
RGF0YVByb3ZpZGVyUmVmPiYmIGRhdGFQcm92aWRlciwgc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNz
Q29udGV4dD4mJiBjb250ZXh0KQotICAgIDogSW1hZ2VCdWZmZXJDR0JhY2tlbmQobG9naWNhbFNp
emUsIGJhY2tlbmRTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0
KQorSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OkltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5k
KGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIHZvaWQqIGRhdGEsIFJldGFpblB0cjxDR0Rh
dGFQcm92aWRlclJlZj4mJiBkYXRhUHJvdmlkZXIsIHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0Nv
bnRleHQ+JiYgY29udGV4dCkKKyAgICA6IEltYWdlQnVmZmVyQ0dCYWNrZW5kKHBhcmFtZXRlcnMp
CiAgICAgLCBtX2RhdGEoZGF0YSkKICAgICAsIG1fZGF0YVByb3ZpZGVyKFdURk1vdmUoZGF0YVBy
b3ZpZGVyKSkKICAgICAsIG1fY29udGV4dChXVEZNb3ZlKGNvbnRleHQpKQpAQCAtMTAzLDYgKzEw
MywxMSBAQCBHcmFwaGljc0NvbnRleHQmIEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpjb250
ZXh0KCkgY29uc3QKICAgICByZXR1cm4gKm1fY29udGV4dDsKIH0KIAorSW50U2l6ZSBJbWFnZUJ1
ZmZlckNHQml0bWFwQmFja2VuZDo6YmFja2VuZFNpemUoKSBjb25zdAoreworICAgIHJldHVybiB7
IHN0YXRpY19jYXN0PGludD4oQ0dCaXRtYXBDb250ZXh0R2V0V2lkdGgoY29udGV4dCgpLnBsYXRm
b3JtQ29udGV4dCgpKSksIHN0YXRpY19jYXN0PGludD4oQ0dCaXRtYXBDb250ZXh0R2V0SGVpZ2h0
KGNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKSkpIH07Cit9CisKIFJlZlB0cjxOYXRpdmVJbWFn
ZT4gSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3Rv
cmVDb3B5IGNvcHlCZWhhdmlvcikgY29uc3QKIHsKICAgICBzd2l0Y2ggKGNvcHlCZWhhdmlvcikg
ewpAQCAtMTEwLDkgKzExNSwxMCBAQCBSZWZQdHI8TmF0aXZlSW1hZ2U+IEltYWdlQnVmZmVyQ0dC
aXRtYXBCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weQogICAgICAgICBy
ZXR1cm4gTmF0aXZlSW1hZ2U6OmNyZWF0ZShhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZUlt
YWdlKGNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKSkpKTsKIAogICAgIGNhc2UgRG9udENvcHlC
YWNraW5nU3RvcmU6CisgICAgICAgIGF1dG8gYmFja2VuZFNpemUgPSB0aGlzLT5iYWNrZW5kU2l6
ZSgpOwogICAgICAgICByZXR1cm4gTmF0aXZlSW1hZ2U6OmNyZWF0ZShhZG9wdENGKENHSW1hZ2VD
cmVhdGUoCi0gICAgICAgICAgICBtX2JhY2tlbmRTaXplLndpZHRoKCksIG1fYmFja2VuZFNpemUu
aGVpZ2h0KCksIDgsIDMyLCBieXRlc1BlclJvdygpLAotICAgICAgICAgICAgY2FjaGVkQ0dDb2xv
clNwYWNlKG1fY29sb3JTcGFjZSksIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkRmlyc3QgfCBr
Q0dCaXRtYXBCeXRlT3JkZXIzMkhvc3QsIG1fZGF0YVByb3ZpZGVyLmdldCgpLAorICAgICAgICAg
ICAgYmFja2VuZFNpemUud2lkdGgoKSwgYmFja2VuZFNpemUuaGVpZ2h0KCksIDgsIDMyLCBieXRl
c1BlclJvdygpLAorICAgICAgICAgICAgY2FjaGVkQ0dDb2xvclNwYWNlKGNvbG9yU3BhY2UoKSks
IGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkRmlyc3QgfCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkhv
c3QsIG1fZGF0YVByb3ZpZGVyLmdldCgpLAogICAgICAgICAgICAgMCwgdHJ1ZSwga0NHUmVuZGVy
aW5nSW50ZW50RGVmYXVsdCkpKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2Vu
ZC5oCmluZGV4IGU5MmM5MmY1ZDUwZmRlNTdhYWEzY2E1YzJmZjI5ZGYwOGI4NjRkMjkuLjhmMzMy
M2U3ZGNlYzYzNTVhY2I3ZDViOTljMjA3ODc3MTVjODZiYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0Jp
dG1hcEJhY2tlbmQuaApAQCAtMzYsMTIgKzM2LDE0IEBAIGNsYXNzIEltYWdlQnVmZmVyQ0dCaXRt
YXBCYWNrZW5kIDogcHVibGljIEltYWdlQnVmZmVyQ0dCYWNrZW5kIHsKICAgICBXVEZfTUFLRV9J
U09fQUxMT0NBVEVEKEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kKTsKICAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZCk7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZD4gY3JlYXRlKGNv
bnN0IEZsb2F0U2l6ZSYsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSwgQ0dDb2xv
clNwYWNlUmVmLCBQaXhlbEZvcm1hdCwgY29uc3QgSG9zdFdpbmRvdyopOwotICAgIHN0YXRpYyBz
dGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ+IGNyZWF0ZShjb25zdCBG
bG9hdFNpemUmLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UsIFBpeGVsRm9ybWF0
LCBjb25zdCBIb3N0V2luZG93Kik7Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1
ZmZlckNHQml0bWFwQmFja2VuZD4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEdyYXBo
aWNzQ29udGV4dCYpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJDR0Jp
dG1hcEJhY2tlbmQ+IGNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiwgQ0dDb2xvclNwYWNlUmVmLCBj
b25zdCBIb3N0V2luZG93Kik7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZl
ckNHQml0bWFwQmFja2VuZD4gY3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmLCBjb25zdCBIb3N0V2lu
ZG93Kik7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNHQml0bWFwQmFj
a2VuZD4gY3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmLCBjb25zdCBHcmFwaGljc0NvbnRleHQmKTsK
IAogICAgIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCgpIGNvbnN0IG92ZXJyaWRlOwogCisgICAg
SW50U2l6ZSBiYWNrZW5kU2l6ZSgpIGNvbnN0IG92ZXJyaWRlOworCiAgICAgUmVmUHRyPE5hdGl2
ZUltYWdlPiBjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSA9IENvcHlCYWNraW5nU3Rv
cmUpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHRvQkdSQURhdGEoKSBj
b25zdCBvdmVycmlkZTsKQEAgLTUyLDcgKzU0LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25z
dGV4cHIgYm9vbCBpc09yaWdpbkF0VXBwZXJMZWZ0Q29ybmVyID0gdHJ1ZTsKIAogcHJpdmF0ZToK
LSAgICBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZChjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxT
aXplLCBjb25zdCBJbnRTaXplJiBwaHlzaWNhbFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwg
Q29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQsIHZvaWQqIGRhdGEsIFJldGFpblB0cjxDR0RhdGFQcm92
aWRlclJlZj4mJiwgc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzQ29udGV4dD4mJik7CisgICAgSW1h
Z2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQoY29uc3QgUGFyYW1ldGVycyYsIHZvaWQqIGRhdGEsIFJl
dGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4mJiwgc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzQ29u
dGV4dD4mJik7CiAKICAgICB2b2lkKiBtX2RhdGE7CiAgICAgUmV0YWluUHRyPENHRGF0YVByb3Zp
ZGVyUmVmPiBtX2RhdGFQcm92aWRlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQu
Y3BwCmluZGV4IGFkM2ZmMWQ3OTc3MjAzNzY0MGUyZDY5OTU0MTI4ODYwYjc3NDhjMzYuLjdhNjlj
NTUzYzAwMTM2ZDk3OGY0NGM5MzJlNGFlNWYxZTY0ZmQ1OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJ
T1N1cmZhY2VCYWNrZW5kLmNwcApAQCAtNjQsMTMgKzY0LDEzIEBAIFJldGFpblB0cjxDR0NvbG9y
U3BhY2VSZWY+IEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y29udGV4dENvbG9yU3BhY2Uo
Y29uc3QKICAgICByZXR1cm4gSW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OmNvbnRleHRDb2xvclNwYWNl
KGNvbnRleHQpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNr
ZW5kPiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZShjb25zdCBGbG9hdFNpemUm
IHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBDR0Nv
bG9yU3BhY2VSZWYgY2dDb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgY29uc3Qg
SG9zdFdpbmRvdyogaG9zdFdpbmRvdykKK3N0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcklPU3Vy
ZmFjZUJhY2tlbmQ+IEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlKGNvbnN0IFBh
cmFtZXRlcnMmIHBhcmFtZXRlcnMsIENHQ29sb3JTcGFjZVJlZiBjZ0NvbG9yU3BhY2UsIGNvbnN0
IEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cpCiB7Ci0gICAgSW50U2l6ZSBiYWNrZW5kU2l6ZSA9IGNh
bGN1bGF0ZUJhY2tlbmRTaXplKHNpemUsIHJlc29sdXRpb25TY2FsZSk7CisgICAgSW50U2l6ZSBi
YWNrZW5kU2l6ZSA9IGNhbGN1bGF0ZUJhY2tlbmRTaXplKHBhcmFtZXRlcnMubG9naWNhbFNpemUs
IHBhcmFtZXRlcnMucmVzb2x1dGlvblNjYWxlKTsKICAgICBpZiAoYmFja2VuZFNpemUuaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGF1dG8gc3VyZmFjZSA9IElPU3Vy
ZmFjZTo6Y3JlYXRlKGJhY2tlbmRTaXplLCBiYWNrZW5kU2l6ZSwgY2dDb2xvclNwYWNlLCBJT1N1
cmZhY2U6OmZvcm1hdEZvclBpeGVsRm9ybWF0KHBpeGVsRm9ybWF0KSk7CisgICAgYXV0byBzdXJm
YWNlID0gSU9TdXJmYWNlOjpjcmVhdGUoYmFja2VuZFNpemUsIGJhY2tlbmRTaXplLCBjZ0NvbG9y
U3BhY2UsIElPU3VyZmFjZTo6Zm9ybWF0Rm9yUGl4ZWxGb3JtYXQocGFyYW1ldGVycy5waXhlbEZv
cm1hdCkpOwogICAgIGlmICghc3VyZmFjZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAg
LTgwLDI0ICs4MCwyNCBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNr
ZW5kPiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZQogCiAgICAgQ0dDb250ZXh0
Q2xlYXJSZWN0KGNnQ29udGV4dC5nZXQoKSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQ6Onplcm8oKSwg
YmFja2VuZFNpemUpKTsKIAotICAgIHJldHVybiBtYWtlVW5pcXVlPEltYWdlQnVmZmVySU9TdXJm
YWNlQmFja2VuZD4oc2l6ZSwgYmFja2VuZFNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFj
ZSwgcGl4ZWxGb3JtYXQsIFdURk1vdmUoc3VyZmFjZSkpOworICAgIHJldHVybiBtYWtlVW5pcXVl
PEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZD4ocGFyYW1ldGVycywgV1RGTW92ZShzdXJmYWNl
KSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ+IElt
YWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwg
Y29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQorc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVm
ZmVySU9TdXJmYWNlQmFja2VuZD4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGUo
Y29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycywgY29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0KQogewogICAgIGlmIChhdXRvIGNnQ29sb3JTcGFjZSA9IGNvbnRleHRDb2xvclNwYWNlKGNv
bnRleHQpKQotICAgICAgICByZXR1cm4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpjcmVh
dGUoc2l6ZSwgMSwgQ29sb3JTcGFjZTo6U1JHQiwgY2dDb2xvclNwYWNlLmdldCgpLCBQaXhlbEZv
cm1hdDo6QkdSQTgsIG51bGxwdHIpOwotICAgIAotICAgIHJldHVybiBJbWFnZUJ1ZmZlcklPU3Vy
ZmFjZUJhY2tlbmQ6OmNyZWF0ZShzaXplLCAxLCBDb2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1h
dDo6QkdSQTgsIG51bGxwdHIpOworICAgICAgICByZXR1cm4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VC
YWNrZW5kOjpjcmVhdGUocGFyYW1ldGVycywgY2dDb2xvclNwYWNlLmdldCgpLCBudWxscHRyKTsK
KworICAgIHJldHVybiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZShwYXJhbWV0
ZXJzLCBudWxscHRyKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVySU9TdXJmYWNl
QmFja2VuZD4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGUoY29uc3QgRmxvYXRT
aXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwg
UGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIGNvbnN0IEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cpCitz
dGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kPiBJbWFnZUJ1ZmZlcklP
U3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBjb25z
dCBIb3N0V2luZG93KiBob3N0V2luZG93KQogewotICAgIHJldHVybiBJbWFnZUJ1ZmZlcklPU3Vy
ZmFjZUJhY2tlbmQ6OmNyZWF0ZShzaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIGNh
Y2hlZENHQ29sb3JTcGFjZShjb2xvclNwYWNlKSwgcGl4ZWxGb3JtYXQsIGhvc3RXaW5kb3cpOwor
ICAgIHJldHVybiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZShwYXJhbWV0ZXJz
LCBjYWNoZWRDR0NvbG9yU3BhY2UocGFyYW1ldGVycy5jb2xvclNwYWNlKSwgaG9zdFdpbmRvdyk7
CiB9CiAKLUltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6SW1hZ2VCdWZmZXJJT1N1cmZhY2VC
YWNrZW5kKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEludFNpemUmIGJhY2tl
bmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgUGl4
ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+JiYgc3VyZmFj
ZSkKLSAgICA6IEltYWdlQnVmZmVyQ0dCYWNrZW5kKGxvZ2ljYWxTaXplLCBiYWNrZW5kU2l6ZSwg
cmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCkKK0ltYWdlQnVmZmVySU9T
dXJmYWNlQmFja2VuZDo6SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kKGNvbnN0IFBhcmFtZXRl
cnMmIHBhcmFtZXRlcnMsIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+JiYgc3VyZmFjZSkKKyAg
ICA6IEltYWdlQnVmZmVyQ0dCYWNrZW5kKHBhcmFtZXRlcnMpCiAgICAgLCBtX3N1cmZhY2UoV1RG
TW92ZShzdXJmYWNlKSkKIHsKICAgICBBU1NFUlQobV9zdXJmYWNlKTsKQEAgLTEyMCw2ICsxMjAs
MTEgQEAgdm9pZCBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmZsdXNoQ29udGV4dCgpCiAg
ICAgQ0dDb250ZXh0Rmx1c2goY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpKTsKIH0KIAorSW50
U2l6ZSBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmJhY2tlbmRTaXplKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbV9zdXJmYWNlLT5zaXplKCk7Cit9CisKIHNpemVfdCBJbWFnZUJ1ZmZlcklP
U3VyZmFjZUJhY2tlbmQ6Om1lbW9yeUNvc3QoKSBjb25zdAogewogICAgIHJldHVybiBtX3N1cmZh
Y2UtPnRvdGFsQnl0ZXMoKTsKQEAgLTE0OCwxMCArMTUzLDEwIEBAIFJlZlB0cjxOYXRpdmVJbWFn
ZT4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpzaW5rSW50b05hdGl2ZUltYWdlKCkKIHZv
aWQgSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpkcmF3Q29uc3VtaW5nKEdyYXBoaWNzQ29u
dGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAg
ICAgRmxvYXRSZWN0IGFkanVzdGVkU3JjUmVjdCA9IHNyY1JlY3Q7Ci0gICAgYWRqdXN0ZWRTcmNS
ZWN0LnNjYWxlKG1fcmVzb2x1dGlvblNjYWxlKTsKKyAgICBhZGp1c3RlZFNyY1JlY3Quc2NhbGUo
cmVzb2x1dGlvblNjYWxlKCkpOwogCiAgICAgaWYgKGF1dG8gaW1hZ2UgPSBzaW5rSW50b05hdGl2
ZUltYWdlKCkpCi0gICAgICAgIGRlc3RDb250ZXh0LmRyYXdOYXRpdmVJbWFnZSgqaW1hZ2UsIG1f
YmFja2VuZFNpemUsIGRlc3RSZWN0LCBhZGp1c3RlZFNyY1JlY3QsIG9wdGlvbnMpOworICAgICAg
ICBkZXN0Q29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoKmltYWdlLCBiYWNrZW5kU2l6ZSgpLCBkZXN0
UmVjdCwgYWRqdXN0ZWRTcmNSZWN0LCBvcHRpb25zKTsKIH0KIAogUmV0YWluUHRyPENGRGF0YVJl
Zj4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjp0b0NGRGF0YShjb25zdCBTdHJpbmcmIG1p
bWVUeXBlLCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHksIFByZXNlcnZlUmVzb2x1dGlvbiBwcmVz
ZXJ2ZVJlc29sdXRpb24pIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5oCmlu
ZGV4IGRlOTgyMTExZTUyYzEyZWRiMDhkYzc4OGI1MGVjZWZiMzY1MDc2NTAuLjQ4NTlkZjZmYzUy
NWQ4NWMzMjhjMTQ1ZjA3OTE3ODM1NjkwOWUyNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNl
QmFja2VuZC5oCkBAIC0zOSwxNSArMzksMTcgQEAgY2xhc3MgV0VCQ09SRV9FWFBPUlQgSW1hZ2VC
dWZmZXJJT1N1cmZhY2VCYWNrZW5kIDogcHVibGljIEltYWdlQnVmZmVyQ0dCYWNrZW5kIHsKIHB1
YmxpYzoKICAgICBzdGF0aWMgSW50U2l6ZSBjYWxjdWxhdGVCYWNrZW5kU2l6ZShjb25zdCBGbG9h
dFNpemUmIGxvZ2ljYWxTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUpOwogCi0gICAgc3RhdGlj
IHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ+IGNyZWF0ZShjb25z
dCBGbG9hdFNpemUmLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UsIENHQ29sb3JT
cGFjZVJlZiwgUGl4ZWxGb3JtYXQsIGNvbnN0IEhvc3RXaW5kb3cqKTsKLSAgICBzdGF0aWMgc3Rk
Ojp1bmlxdWVfcHRyPEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZD4gY3JlYXRlKGNvbnN0IEZs
b2F0U2l6ZSYsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQs
IGNvbnN0IEhvc3RXaW5kb3cqKTsKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVm
ZmVySU9TdXJmYWNlQmFja2VuZD4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEdyYXBo
aWNzQ29udGV4dCYpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJJT1N1
cmZhY2VCYWNrZW5kPiBjcmVhdGUoY29uc3QgUGFyYW1ldGVycyYsIENHQ29sb3JTcGFjZVJlZiwg
Y29uc3QgSG9zdFdpbmRvdyopOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZm
ZXJJT1N1cmZhY2VCYWNrZW5kPiBjcmVhdGUoY29uc3QgUGFyYW1ldGVycyYsIGNvbnN0IEhvc3RX
aW5kb3cqKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVySU9TdXJmYWNl
QmFja2VuZD4gY3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmLCBjb25zdCBHcmFwaGljc0NvbnRleHQm
KTsKIAotICAgIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZChjb25zdCBGbG9hdFNpemUmIGxv
Z2ljYWxTaXplLCBjb25zdCBJbnRTaXplJiBwaHlzaWNhbFNpemUsIGZsb2F0IHJlc29sdXRpb25T
Y2FsZSwgQ29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQsIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+
JiYpOworICAgIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZChjb25zdCBQYXJhbWV0ZXJzJiwg
c3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4mJik7CiAKICAgICBHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQoKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIGZsdXNoQ29udGV4dCgpIG92ZXJyaWRl
OwogCisgICAgSW50U2l6ZSBiYWNrZW5kU2l6ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIAogICAg
IHNpemVfdCBtZW1vcnlDb3N0KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgc2l6ZV90IGV4dGVybmFs
TWVtb3J5Q29zdCgpIGNvbnN0IG92ZXJyaWRlOwogCkBAIC02OSw3ICs3MSw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHJlbGVhc2VCdWZmZXJUb1Bvb2woKSBvdmVycmlkZTsKIAogICAgIHN0YXRpYyBj
b25zdGV4cHIgYm9vbCBpc09yaWdpbkF0VXBwZXJMZWZ0Q29ybmVyID0gdHJ1ZTsKLSAgICBzdGF0
aWMgY29uc3RleHByIGJvb2wgaXNBY2NlbGVyYXRlZCA9IHRydWU7CisgICAgc3RhdGljIGNvbnN0
ZXhwciBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUgPSBSZW5kZXJpbmdNb2RlOjpBY2NlbGVy
YXRlZDsKIAogcHJvdGVjdGVkOgogICAgIHN0YXRpYyBSZXRhaW5QdHI8Q0dDb2xvclNwYWNlUmVm
PiBjb250ZXh0Q29sb3JTcGFjZShjb25zdCBHcmFwaGljc0NvbnRleHQmKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0LmgKaW5kZXggMjZmYzk3MzA3MjExMjczMDM5M2UyZGNiYzg3ZDBjNmI5Y2E1NDI1OC4u
MTZiMTk3ZjllZTJkMjhkYmU5MjFkOTMwOTQzZDQzMDQ2MWRmY2Q4NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0LmgKQEAgLTMzLDcgKzMzLDYgQEAKICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgog
I2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0j
aW5jbHVkZSA8d3RmL09iamVjdElkZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTQ1LDkgKzQ0LDYgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBuYW1lc3BhY2UgRGlzcGxheUxpc3QgewogCi1lbnVtIEZsdXNo
SWRlbnRpZmllclR5cGUgeyB9OwotdXNpbmcgRmx1c2hJZGVudGlmaWVyID0gT2JqZWN0SWRlbnRp
ZmllcjxGbHVzaElkZW50aWZpZXJUeXBlPjsKLQogZW51bSBBc1RleHRGbGFnIHsKICAgICBOb25l
ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMCwKICAgICBJbmNsdWRlc1BsYXRmb3JtT3Bl
cmF0aW9ucyAgICAgID0gMSA8PCAwLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0Rmx1c2hJZGVudGlmaWVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RG
bHVzaElkZW50aWZpZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45Y2Y3ODE2OGViYjdmYzczN2I5YjRhNmNmOGQ1
MzcyOWY1YTA2MGVjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0Rmx1c2hJZGVudGlmaWVyLmgKQEAgLTAs
MCArMSwzOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL09i
amVjdElkZW50aWZpZXIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgRGlz
cGxheUxpc3QgeworCitlbnVtIEZsdXNoSWRlbnRpZmllclR5cGUgeyB9OwordXNpbmcgRmx1c2hJ
ZGVudGlmaWVyID0gT2JqZWN0SWRlbnRpZmllcjxGbHVzaElkZW50aWZpZXJUeXBlPjsKKworfSAv
LyBEaXNwbGF5TGlzdAorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJbWFn
ZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXIuaAppbmRleCBmNWIyMjM0MDJhZWIzNzcyOGI3MzAxZmI2
NjcxMThhM2IyZThiMDQwLi42YTBhMjUyODQzYTBmMGQxZWJiYWMyZTQxYmI0Mjc5YzRhZmQxZWFj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEltYWdlQnVmZmVyLmgKQEAgLTM0LDI2
ICszNCwyOSBAQCBuYW1lc3BhY2UgRGlzcGxheUxpc3QgewogdGVtcGxhdGU8dHlwZW5hbWUgQmFj
a2VuZFR5cGU+CiBjbGFzcyBJbWFnZUJ1ZmZlciA6IHB1YmxpYyBDb25jcmV0ZUltYWdlQnVmZmVy
PEJhY2tlbmRUeXBlPiB7CiAgICAgdXNpbmcgQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXIgPSBDb25j
cmV0ZUltYWdlQnVmZmVyPEJhY2tlbmRUeXBlPjsKKyAgICB1c2luZyBCYXNlQ29uY3JldGVJbWFn
ZUJ1ZmZlcjo6bG9naWNhbFNpemU7CisgICAgdXNpbmcgQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXI6
OmJhc2VUcmFuc2Zvcm07CiAKIHB1YmxpYzoKICAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3Qg
RmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JT
cGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIGNvbnN0IEhvc3RXaW5kb3cqIGhvc3RXaW5k
b3cpCiAgICAgewotICAgICAgICByZXR1cm4gQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXI6OnRlbXBs
YXRlIGNyZWF0ZTxJbWFnZUJ1ZmZlcj4oc2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNl
LCBwaXhlbEZvcm1hdCwgaG9zdFdpbmRvdywgc2l6ZSk7CisgICAgICAgIHJldHVybiBCYXNlQ29u
Y3JldGVJbWFnZUJ1ZmZlcjo6dGVtcGxhdGUgY3JlYXRlPEltYWdlQnVmZmVyPihzaXplLCByZXNv
bHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0LCBob3N0V2luZG93KTsKICAgICB9
CiAKICAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBjb25zdCBH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiAgICAgewotICAgICAgICByZXR1cm4gQmFzZUNvbmNy
ZXRlSW1hZ2VCdWZmZXI6OnRlbXBsYXRlIGNyZWF0ZTxJbWFnZUJ1ZmZlcj4oc2l6ZSwgY29udGV4
dCwgc2l6ZSk7CisgICAgICAgIHJldHVybiBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZlcjo6dGVtcGxh
dGUgY3JlYXRlPEltYWdlQnVmZmVyPihzaXplLCBjb250ZXh0KTsKICAgICB9CiAKLSAgICBJbWFn
ZUJ1ZmZlcihzdGQ6OnVuaXF1ZV9wdHI8QmFja2VuZFR5cGU+JiYgZGF0YUJhY2tlbmQsIGNvbnN0
IEZsb2F0U2l6ZSYgc2l6ZSkKLSAgICAgICAgOiBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZlcihXVEZN
b3ZlKGRhdGFCYWNrZW5kKSkKLSAgICAgICAgLCBtX2RyYXdpbmdDb250ZXh0KHNpemUsIGluaXRp
YWxEcmF3aW5nQ29udGV4dENUTShzaXplKSkKKyAgICBJbWFnZUJ1ZmZlcihzdGQ6OnVuaXF1ZV9w
dHI8SW1hZ2VCdWZmZXJCYWNrZW5kOjpQYXJhbWV0ZXJzPiYmIHBhcmFtZXRlcnMsIHN0ZDo6dW5p
cXVlX3B0cjxCYWNrZW5kVHlwZT4mJiBiYWNrZW5kKQorICAgICAgICA6IEJhc2VDb25jcmV0ZUlt
YWdlQnVmZmVyKFdURk1vdmUocGFyYW1ldGVycyksIFdURk1vdmUoYmFja2VuZCkpCisgICAgICAg
ICwgbV9kcmF3aW5nQ29udGV4dChsb2dpY2FsU2l6ZSgpLCBiYXNlVHJhbnNmb3JtKCkpCiAgICAg
ewogICAgIH0KIAotICAgIEltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgUmVjb3Jk
ZXI6OkRlbGVnYXRlKiBkZWxlZ2F0ZSA9IG51bGxwdHIpCi0gICAgICAgIDogbV9kcmF3aW5nQ29u
dGV4dChzaXplLCBpbml0aWFsRHJhd2luZ0NvbnRleHRDVE0oc2l6ZSksIGRlbGVnYXRlKQorICAg
IEltYWdlQnVmZmVyKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRl
cnM+JiYgcGFyYW1ldGVycywgUmVjb3JkZXI6OkRlbGVnYXRlKiBkZWxlZ2F0ZSA9IG51bGxwdHIp
CisgICAgICAgIDogQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXIoV1RGTW92ZShwYXJhbWV0ZXJzKSkK
KyAgICAgICAgLCBtX2RyYXdpbmdDb250ZXh0KGxvZ2ljYWxTaXplKCksIGJhc2VUcmFuc2Zvcm0o
KSwgZGVsZWdhdGUpCiAgICAgewogICAgIH0KIApAQCAtNzcsMTUgKzgwLDYgQEAgcHVibGljOgog
CiBwcm90ZWN0ZWQ6CiAgICAgRHJhd2luZ0NvbnRleHQgbV9kcmF3aW5nQ29udGV4dDsKLQotcHJp
dmF0ZToKLSAgICBzdGF0aWMgQWZmaW5lVHJhbnNmb3JtIGluaXRpYWxEcmF3aW5nQ29udGV4dENU
TShjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplKQotICAgIHsKLSAgICAgICAgQWZmaW5lVHJh
bnNmb3JtIGluaXRpYWxDVE07Ci0gICAgICAgIGlmIChCYWNrZW5kVHlwZTo6aXNPcmlnaW5BdFVw
cGVyTGVmdENvcm5lcikKLSAgICAgICAgICAgIGluaXRpYWxDVE0gPSBpbml0aWFsQ1RNLnNjYWxl
KDEsIC0xKS50cmFuc2xhdGUoMCwgLWxvZ2ljYWxTaXplLmhlaWdodCgpKTsKLSAgICAgICAgcmV0
dXJuIGluaXRpYWxDVE07Ci0gICAgfQogfTsKIAogfSAvLyBEaXNwbGF5TGlzdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0
MkRCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFn
ZUJ1ZmZlckRpcmVjdDJEQmFja2VuZC5jcHAKaW5kZXggMzc4YWFmNGM0MGM0ZTEyMmFjYmUwNjk0
MzJjN2FkN2VjMjA5ZWQ3My4uMDFkMmU3ODAyODViMTFmZWMzOWI0Y2QyNmJmNGNmZmYwODA3MzM3
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdl
QnVmZmVyRGlyZWN0MkRCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQuY3BwCkBAIC0xNzEsNyArMTcx
LDcgQEAgc3RhdGljIFJlZlB0cjxJbWFnZT4gY3JlYXRlQml0bWFwSW1hZ2VBZnRlclNjYWxpbmdJ
Zk5lZWRlZChJRDJEMUJpdG1hcFJlbmRlclRhcmcKIFJlZlB0cjxJbWFnZT4gSW1hZ2VCdWZmZXJE
aXJlY3QyREJhY2tlbmQ6OmNvcHlJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvciwg
UHJlc2VydmVSZXNvbHV0aW9uIHByZXNlcnZlUmVzb2x1dGlvbikgY29uc3QKIHsKICAgICBQbGF0
Zm9ybUltYWdlUHRyIGltYWdlOwotICAgIGlmIChtX3Jlc29sdXRpb25TY2FsZSA9PSAxIHx8IHBy
ZXNlcnZlUmVzb2x1dGlvbiA9PSBQcmVzZXJ2ZVJlc29sdXRpb246OlllcykKKyAgICBpZiAocmVz
b2x1dGlvblNjYWxlKCkgPT0gMSB8fCBwcmVzZXJ2ZVJlc29sdXRpb24gPT0gUHJlc2VydmVSZXNv
bHV0aW9uOjpZZXMpCiAgICAgICAgIGltYWdlID0gY29weU5hdGl2ZUltYWdlKGNvcHlCZWhhdmlv
ciktPnBsYXRmb3JtSW1hZ2UoKTsKICAgICBlbHNlCiAgICAgICAgIGltYWdlID0gY29weU5hdGl2
ZUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKS0+cGxhdGZvcm1JbWFnZSgpOwpAQCAtMjY5LDcg
KzI2OSw3IEBAIFBsYXRmb3JtSW1hZ2VQdHIgSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OmNv
bXBhdGlibGVCaXRtYXAoSUQyRDFSZW5kZXJUYXJnZXQqCiB2b2lkIEltYWdlQnVmZmVyRGlyZWN0
MkRCYWNrZW5kOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWlu
dGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgRmxvYXRSZWN0IGFkanVzdGVkU3JjUmVjdCA9
IHNyY1JlY3Q7Ci0gICAgYWRqdXN0ZWRTcmNSZWN0LnNjYWxlKG1fcmVzb2x1dGlvblNjYWxlLCBt
X3Jlc29sdXRpb25TY2FsZSk7CisgICAgYWRqdXN0ZWRTcmNSZWN0LnNjYWxlKHJlc29sdXRpb25T
Y2FsZSgpKTsKIAogICAgIGF1dG8gY29tcGF0aWJsZUJpdG1hcCA9IGNvbXBhdGlibGVCaXRtYXAo
ZGVzdENvbnRleHQucGxhdGZvcm1Db250ZXh0KCktPnJlbmRlclRhcmdldCgpKTsKIApAQCAtMjgz
LDcgKzI4Myw3IEBAIHZvaWQgSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OmRyYXcoR3JhcGhp
Y3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSCiB2b2lkIEltYWdlQnVmZmVyRGly
ZWN0MkRCYWNrZW5kOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0
IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhh
c2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMm
IG9wdGlvbnMpCiB7CiAgICAgRmxvYXRSZWN0IGFkanVzdGVkU3JjUmVjdCA9IHNyY1JlY3Q7Ci0g
ICAgYWRqdXN0ZWRTcmNSZWN0LnNjYWxlKG1fcmVzb2x1dGlvblNjYWxlKTsKKyAgICBhZGp1c3Rl
ZFNyY1JlY3Quc2NhbGUocmVzb2x1dGlvblNjYWxlKCkpOwogCiAgICAgaWYgKGF1dG8gaW1hZ2Ug
PSBjb3B5SW1hZ2UoJmRlc3RDb250ZXh0ID09ICZjb250ZXh0KCkgPyBDb3B5QmFja2luZ1N0b3Jl
IDogRG9udENvcHlCYWNraW5nU3RvcmUpKQogICAgICAgICBpbWFnZS0+ZHJhd1BhdHRlcm4oZGVz
dENvbnRleHQsIGRlc3RSZWN0LCBhZGp1c3RlZFNyY1JlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBo
YXNlLCBzcGFjaW5nLCBvcHRpb25zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmgKaW5kZXggNWM3NTQ1YmZlNjY5MjYyMGQw
MTNmZGM4ODZkNzVlZjM5YzgxYWZkZC4uODJmZmM2MGY5MWRkMjBmYTk2YzBkYjRjYTA3OWQ3OGRm
OGRiNDhlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZUltYWdlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZUltYWdlQnVmZmVyLmgKQEAgLTQ5LDEyICs0OSwxMiBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZlcjo6dGVtcGxhdGUgY3JlYXRlPFJlbW90ZUlt
YWdlQnVmZmVyPihzaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0
LCBudWxscHRyLCByZW1vdGVSZW5kZXJpbmdCYWNrZW5kLCByZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIpOwogICAgIH0KIAotICAgIFJlbW90ZUltYWdlQnVmZmVyKHN0ZDo6dW5pcXVlX3B0cjxC
YWNrZW5kVHlwZT4mJiBiYWNrZW5kLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kJiByZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyKQotICAgICAgICA6IEJhc2VDb25jcmV0ZUltYWdlQnVmZmVy
KFdURk1vdmUoYmFja2VuZCksIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKKyAgICBSZW1v
dGVJbWFnZUJ1ZmZlcihzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5k
OjpQYXJhbWV0ZXJzPiYmIHBhcmFtZXRlcnMsIHN0ZDo6dW5pcXVlX3B0cjxCYWNrZW5kVHlwZT4m
JiBiYWNrZW5kLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kJiByZW1vdGVSZW5kZXJpbmdCYWNrZW5k
LCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyKQorICAgICAgICA6IEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyKFdURk1vdmUocGFy
YW1ldGVycyksIFdURk1vdmUoYmFja2VuZCksIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikK
ICAgICAgICAgLCBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQocmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZCkKICAgICAgICAgLCBtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcihyZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIpCiAgICAgewotICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQu
aW1hZ2VCdWZmZXJCYWNrZW5kV2FzQ3JlYXRlZChtX2JhY2tlbmQtPmxvZ2ljYWxTaXplKCksIG1f
YmFja2VuZC0+YmFja2VuZFNpemUoKSwgbV9iYWNrZW5kLT5yZXNvbHV0aW9uU2NhbGUoKSwgbV9i
YWNrZW5kLT5jb2xvclNwYWNlKCksIG1fYmFja2VuZC0+cGl4ZWxGb3JtYXQoKSwgbV9iYWNrZW5k
LT5jcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUoKSwgcmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyKTsKKyAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmRpZENyZWF0ZUltYWdl
QnVmZmVyQmFja2VuZChtX2JhY2tlbmQtPmNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSgp
LCByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIH0KIAogICAgIH5SZW1vdGVJbWFn
ZUJ1ZmZlcigpCkBAIC02NSwxNyArNjUsNiBAQCBwdWJsaWM6CiAgICAgICAgICAgICBjb250ZXh0
KCkucmVzdG9yZSgpOwogICAgIH0KIAotICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXBsYXlS
ZXN1bHQgc3VibWl0RGlzcGxheUxpc3QoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3Bs
YXlMaXN0JiBkaXNwbGF5TGlzdCkKLSAgICB7Ci0gICAgICAgIGlmIChkaXNwbGF5TGlzdC5pc0Vt
cHR5KCkpCi0gICAgICAgICAgICByZXR1cm4geyB9OwotCi0gICAgICAgIGNvbnN0IGF1dG8mIGlt
YWdlQnVmZmVycyA9IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC5yZW1vdGVSZXNvdXJjZUNhY2hl
KCkuaW1hZ2VCdWZmZXJzKCk7Ci0gICAgICAgIGNvbnN0IGF1dG8mIG5hdGl2ZUltYWdlcyA9IG1f
cmVtb3RlUmVuZGVyaW5nQmFja2VuZC5yZW1vdGVSZXNvdXJjZUNhY2hlKCkubmF0aXZlSW1hZ2Vz
KCk7Ci0gICAgICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXBsYXllciByZXBsYXllciB7IEJh
c2VDb25jcmV0ZUltYWdlQnVmZmVyOjpjb250ZXh0KCksIGRpc3BsYXlMaXN0LCAmaW1hZ2VCdWZm
ZXJzLCAmbmF0aXZlSW1hZ2VzLCB0aGlzIH07Ci0gICAgICAgIHJldHVybiByZXBsYXllci5yZXBs
YXkoKTsKLSAgICB9Ci0KIHByaXZhdGU6CiAgICAgYm9vbCBhcHBseShXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6SXRlbUhhbmRsZSBpdGVtLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmIGNvbnRleHQp
IG92ZXJyaWRlCiAgICAgewpAQCAtMTAxLDYgKzkwLDE3IEBAIHByaXZhdGU6CiAgICAgICAgIHJl
dHVybiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuYXBwbHlNZWRpYUl0ZW0oaXRlbSwgY29udGV4
dCk7CiAgICAgfQogCisgICAgdm9pZCBzdWJtaXREaXNwbGF5TGlzdChjb25zdCBXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0KSBvdmVycmlkZQorICAgIHsKKyAg
ICAgICAgaWYgKGRpc3BsYXlMaXN0LmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybjsKKwor
ICAgICAgICBjb25zdCBhdXRvJiBpbWFnZUJ1ZmZlcnMgPSBtX3JlbW90ZVJlbmRlcmluZ0JhY2tl
bmQucmVtb3RlUmVzb3VyY2VDYWNoZSgpLmltYWdlQnVmZmVycygpOworICAgICAgICBjb25zdCBh
dXRvJiBuYXRpdmVJbWFnZXMgPSBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQucmVtb3RlUmVzb3Vy
Y2VDYWNoZSgpLm5hdGl2ZUltYWdlcygpOworICAgICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
UmVwbGF5ZXIgcmVwbGF5ZXIgeyBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZlcjo6Y29udGV4dCgpLCBk
aXNwbGF5TGlzdCwgJmltYWdlQnVmZmVycywgJm5hdGl2ZUltYWdlcywgdGhpcyB9OworICAgICAg
ICByZXBsYXllci5yZXBsYXkoKTsKKyAgICB9CisKICAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
JiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQ7CiAgICAgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyIG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyOwogfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJp
bmdCYWNrZW5kLmNwcAppbmRleCBmNTljMzg3MjRmOGY2MmVlNzgwMmI5MjAyMzdmNjg4NDczZDdm
YmY5Li5kMjc2OTg2OTE4NWM2MzNiYmUwYWVhMDlkNzY5NTA3NDRhMjE1NDRjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRl
cmluZ0JhY2tlbmQuY3BwCkBAIC05OSw5ICs5OSw5IEBAIGJvb2wgUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZDo6YXBwbHlNZWRpYUl0ZW0oRGlzcGxheUxpc3Q6Okl0ZW1IYW5kbGUgaXRlbSwgR3JhcGhp
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6aW1h
Z2VCdWZmZXJCYWNrZW5kV2FzQ3JlYXRlZChjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBj
b25zdCBJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNw
YWNlIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBJbWFnZUJ1ZmZlckJhY2tl
bmRIYW5kbGUgaGFuZGxlLCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyKQordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpkaWRDcmVhdGVJ
bWFnZUJ1ZmZlckJhY2tlbmQoSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGhhbmRsZSwgUmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKIHsKLSAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OkltYWdlQnVmZmVy
QmFja2VuZFdhc0NyZWF0ZWQobG9naWNhbFNpemUsIGJhY2tlbmRTaXplLCByZXNvbHV0aW9uU2Nh
bGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0LCBXVEZNb3ZlKGhhbmRsZSksIHJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllciksIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOworICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6RGlkQ3JlYXRlSW1hZ2VC
dWZmZXJCYWNrZW5kKFdURk1vdmUoaGFuZGxlKSwgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
KSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7CiB9CiAKIHZvaWQgUmVtb3RlUmVuZGVy
aW5nQmFja2VuZDo6ZGlkRmx1c2goRGlzcGxheUxpc3Q6OkZsdXNoSWRlbnRpZmllciBmbHVzaElk
ZW50aWZpZXIsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIpCkBAIC0xNDgsMTAgKzE0OCw3IEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZDo6YXBwbHlEaXNwbGF5TGlzdHNGcm9tSGFuZGxlKEltYWdlQnVmZmVyJiBkZXN0aW5hdGlvCiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoZGVzdGluYXRpb24u
aXNBY2NlbGVyYXRlZCgpKQotICAgICAgICAgICAgc3RhdGljX2Nhc3Q8QWNjZWxlcmF0ZWRSZW1v
dGVJbWFnZUJ1ZmZlciY+KGRlc3RpbmF0aW9uKS5zdWJtaXREaXNwbGF5TGlzdCgqZGlzcGxheUxp
c3QpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBzdGF0aWNfY2FzdDxVbmFjY2VsZXJhdGVk
UmVtb3RlSW1hZ2VCdWZmZXImPihkZXN0aW5hdGlvbikuc3VibWl0RGlzcGxheUxpc3QoKmRpc3Bs
YXlMaXN0KTsKKyAgICAgICAgZGVzdGluYXRpb24uc3VibWl0RGlzcGxheUxpc3QoKmRpc3BsYXlM
aXN0KTsKIAogICAgICAgICBDaGVja2VkU2l6ZSBjaGVja2VkT2Zmc2V0ID0gb2Zmc2V0OwogICAg
ICAgICBjaGVja2VkT2Zmc2V0ICs9IHNpemVUb1JlYWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaAppbmRl
eCA2NDA2NjY4ZmFlMDUwNTdlOWRmMzI2NGY1NzUyNDk0ODlkNzA1Yzc4Li41OTE5ZTk1NjRmNjYz
ZGYzOWZmYjNjMTViMTVhM2I4YzMyMzBmNWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKQEAgLTcw
LDcgKzcwLDcgQEAgcHVibGljOgogICAgIGJvb2wgYXBwbHlNZWRpYUl0ZW0oV2ViQ29yZTo6RGlz
cGxheUxpc3Q6Okl0ZW1IYW5kbGUsIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYpOwogCiAgICAg
Ly8gTWVzc2FnZXMgdG8gYmUgc2VudC4KLSAgICB2b2lkIGltYWdlQnVmZmVyQmFja2VuZFdhc0Ny
ZWF0ZWQoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgV2ViQ29y
ZTo6SW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6
Q29sb3JTcGFjZSwgV2ViQ29yZTo6UGl4ZWxGb3JtYXQsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRs
ZSwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICB2b2lkIGRpZENy
ZWF0ZUltYWdlQnVmZmVyQmFja2VuZChJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUsIFdlYkNvcmU6
OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAgdm9pZCBkaWRGbHVzaChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6Rmx1c2hJZGVudGlmaWVyLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIpOwogCiAgICAgdm9pZCBzZXROZXh0SXRlbUJ1ZmZlclRvUmVhZChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1t
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2lu
Z1N0b3JlLm1tCmluZGV4IGVmOTRjNmIwMjA1MDQzZDM3MWJmMGY5Njk2YzhkOGNhNjM2YzAxMjUu
LjVmNDRhMzliYzBjMTc0MjU2ZDY3NDk5YWJhNWYzNDBiYmYzZTdlNzEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9y
ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5
ZXJCYWNraW5nU3RvcmUubW0KQEAgLTMxNSw4ICszMTUsNyBAQCBib29sIFJlbW90ZUxheWVyQmFj
a2luZ1N0b3JlOjpkaXNwbGF5KCkKIAogICAgIG1fbGF5ZXItPm93bmVyKCktPnBsYXRmb3JtQ0FM
YXllckxheWVyRGlkRGlzcGxheShtX2xheWVyKTsKIAotICAgIC8vIEZJWE1FOiBUaGlzIG1ldGhv
ZCBoYXMgYSB3ZWlyZCBuYW1lLiBUaGlzIGlzICJzdWJtaXQgd29yayIuCi0gICAgbV9mcm9udEJ1
ZmZlci5pbWFnZUJ1ZmZlci0+Zmx1c2hEcmF3aW5nQ29udGV4dEFuZENvbW1pdCgpOworICAgIG1f
ZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXItPnN1Ym1pdERyYXdpbmdDb250ZXh0KCk7CiAKICAgICBt
X2Zyb250QnVmZmVyRmx1c2hlciA9IG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXItPmNyZWF0ZUZs
dXNoZXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tl
bmQuY3BwCmluZGV4IDg1NWM4OTQ5NjZjNTg3YmIwZTZhZWM1MTE5ZGU0Yjk0NDUwODdkNGIuLjRj
OTY0MmMzMWQ3Mzk3MWJkN2FmNDViZjU1NTJlYmYxZmUzYzQ3MTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRt
YXBCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHAKQEAgLTQzLDE3ICs0MywxNyBA
QCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBM
KEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZCk7CiAKLXN0ZDo6dW5pcXVlX3B0cjxJ
bWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ+IEltYWdlQnVmZmVyU2hhcmVhYmxlQml0
bWFwQmFja2VuZDo6Y3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlv
blNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBj
b25zdCBIb3N0V2luZG93KikKK3N0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlclNoYXJlYWJsZUJp
dG1hcEJhY2tlbmQ+IEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6Y3JlYXRlKGNv
bnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIGNvbnN0IEhvc3RXaW5kb3cqKQogewotICAgIEFT
U0VSVChwaXhlbEZvcm1hdCA9PSBQaXhlbEZvcm1hdDo6QkdSQTgpOworICAgIEFTU0VSVChwYXJh
bWV0ZXJzLnBpeGVsRm9ybWF0ID09IFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAKLSAgICBJbnRTaXpl
IGJhY2tlbmRTaXplID0gY2FsY3VsYXRlQmFja2VuZFNpemUoc2l6ZSwgcmVzb2x1dGlvblNjYWxl
KTsKKyAgICBJbnRTaXplIGJhY2tlbmRTaXplID0gY2FsY3VsYXRlQmFja2VuZFNpemUocGFyYW1l
dGVycy5sb2dpY2FsU2l6ZSwgcGFyYW1ldGVycy5yZXNvbHV0aW9uU2NhbGUpOwogICAgIGlmIChi
YWNrZW5kU2l6ZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgU2hh
cmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb247CiAjaWYgUExBVEZPUk0o
Q09DT0EpCi0gICAgY29uZmlndXJhdGlvbi5jb2xvclNwYWNlID0geyBjYWNoZWRDR0NvbG9yU3Bh
Y2UoY29sb3JTcGFjZSkgfTsKKyAgICBjb25maWd1cmF0aW9uLmNvbG9yU3BhY2UgPSB7IGNhY2hl
ZENHQ29sb3JTcGFjZShwYXJhbWV0ZXJzLmNvbG9yU3BhY2UpIH07CiAjZW5kaWYKICAgICBhdXRv
IGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKGJhY2tlbmRTaXplLCBj
b25maWd1cmF0aW9uKTsKICAgICBpZiAoIWJpdG1hcCkKQEAgLTYzLDEwICs2MywxMCBAQCBzdGQ6
OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kPiBJbWFnZUJ1ZmZl
clNoYXJlYWJsZUJpdG1hcEJhYwogICAgIGlmICghY29udGV4dCkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKLSAgICByZXR1cm4gbWFrZVVuaXF1ZTxJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1h
cEJhY2tlbmQ+KHNpemUsIGJhY2tlbmRTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2Us
IHBpeGVsRm9ybWF0LCBXVEZNb3ZlKGJpdG1hcCksIFdURk1vdmUoY29udGV4dCkpOworICAgIHJl
dHVybiBtYWtlVW5pcXVlPEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZD4ocGFyYW1l
dGVycywgV1RGTW92ZShiaXRtYXApLCBXVEZNb3ZlKGNvbnRleHQpKTsKIH0KIAotc3RkOjp1bmlx
dWVfcHRyPEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZD4gSW1hZ2VCdWZmZXJTaGFy
ZWFibGVCaXRtYXBCYWNrZW5kOjpjcmVhdGUoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwg
Y29uc3QgSW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JT
cGFjZSBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgSW1hZ2VCdWZmZXJCYWNr
ZW5kSGFuZGxlIGhhbmRsZSkKK3N0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlclNoYXJlYWJsZUJp
dG1hcEJhY2tlbmQ+IEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6Y3JlYXRlKGNv
bnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBoYW5k
bGUpCiB7CiAgICAgaWYgKCFXVEY6OmhvbGRzX2FsdGVybmF0aXZlPFNoYXJlYWJsZUJpdG1hcDo6
SGFuZGxlPihoYW5kbGUpKSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtODEs
MTEgKzgxLDExIEBAIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJh
Y2tlbmQ+IEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFjCiAgICAgaWYgKCFjb250ZXh0KQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBtYWtlVW5pcXVlPEltYWdlQnVm
ZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZD4obG9naWNhbFNpemUsIGJhY2tlbmRTaXplLCByZXNv
bHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0LCBXVEZNb3ZlKGJpdG1hcCksIFdU
Rk1vdmUoY29udGV4dCkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEltYWdlQnVmZmVyU2hhcmVh
YmxlQml0bWFwQmFja2VuZD4ocGFyYW1ldGVycywgV1RGTW92ZShiaXRtYXApLCBXVEZNb3ZlKGNv
bnRleHQpKTsKIH0KIAotSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpJbWFnZUJ1
ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwg
Y29uc3QgSW50U2l6ZSYgcGh5c2ljYWxTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9y
U3BhY2UgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIFJlZlB0cjxTaGFyZWFi
bGVCaXRtYXA+JiYgYml0bWFwLCBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NDb250ZXh0PiYmIGNv
bnRleHQpCi0gICAgOiBQbGF0Zm9ybUltYWdlQnVmZmVyQmFja2VuZChsb2dpY2FsU2l6ZSwgcGh5
c2ljYWxTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0KQorSW1h
Z2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1h
cEJhY2tlbmQoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycywgUmVmUHRyPFNoYXJlYWJsZUJp
dG1hcD4mJiBiaXRtYXAsIHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0NvbnRleHQ+JiYgY29udGV4
dCkKKyAgICA6IFBsYXRmb3JtSW1hZ2VCdWZmZXJCYWNrZW5kKHBhcmFtZXRlcnMpCiAgICAgLCBt
X2JpdG1hcChXVEZNb3ZlKGJpdG1hcCkpCiAgICAgLCBtX2NvbnRleHQoV1RGTW92ZShjb250ZXh0
KSkKIHsKQEAgLTk4LDYgKzk4LDExIEBAIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBJbWFnZUJ1
ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmNyZWF0ZUltYWdlQnVmZmVyQmFjCiAgICAgcmV0
dXJuIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZShXVEZNb3ZlKGhhbmRsZSkpOwogfQogCitJbnRT
aXplIEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6YmFja2VuZFNpemUoKSBjb25z
dAoreworICAgIHJldHVybiBtX2JpdG1hcC0+c2l6ZSgpOworfQorCiBSZWZQdHI8TmF0aXZlSW1h
Z2U+IEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6Y29weU5hdGl2ZUltYWdlKEJh
Y2tpbmdTdG9yZUNvcHkpIGNvbnN0CiB7CiAjaWYgVVNFKENHKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1h
cEJhY2tlbmQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VC
dWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmgKaW5kZXggMGM3ZjA0N2Y4ODM1ZTRiOGQ2M2Mx
NWY0MWVjOTIxMDJlNDU4NTM5OS4uNTU1MDZhNDlkMDNlMzllODhlMDM2MWU0OTE1NWYxMzFkNzk5
MDEwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9J
bWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5o
CkBAIC00MywxNCArNDMsMTYgQEAgY2xhc3MgSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNr
ZW5kIDogcHVibGljIFdlYkNvcmU6OlBsYXRmb3JtSW1hZ2VCdWZmZXJCYWMKICAgICBXVEZfTUFL
RV9JU09fQUxMT0NBVEVEKEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZCk7CiAgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kKTsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyU2hhcmVhYmxl
Qml0bWFwQmFja2VuZD4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbG9naWNhbFNp
emUsIGNvbnN0IGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSwgV2Vi
Q29yZTo6UGl4ZWxGb3JtYXQsIGNvbnN0IFdlYkNvcmU6Okhvc3RXaW5kb3cqKTsKLSAgICBzdGF0
aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZD4gY3Jl
YXRlKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IFdlYkNvcmU6
OkludFNpemUmIGludGVybmFsU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpD
b2xvclNwYWNlLCBXZWJDb3JlOjpQaXhlbEZvcm1hdCwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxl
KTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFw
QmFja2VuZD4gY3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmLCBjb25zdCBXZWJDb3JlOjpIb3N0V2lu
ZG93Kik7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlclNoYXJlYWJsZUJp
dG1hcEJhY2tlbmQ+IGNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiwgSW1hZ2VCdWZmZXJCYWNrZW5k
SGFuZGxlKTsKIAotICAgIEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZChjb25zdCBX
ZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBw
aHlzaWNhbFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSwg
V2ViQ29yZTo6UGl4ZWxGb3JtYXQsIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+JiYsIHN0ZDo6dW5p
cXVlX3B0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ+JiYpOworICAgIEltYWdlQnVmZmVyU2hh
cmVhYmxlQml0bWFwQmFja2VuZChjb25zdCBQYXJhbWV0ZXJzJiwgUmVmUHRyPFNoYXJlYWJsZUJp
dG1hcD4mJiwgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dD4mJik7CiAK
ICAgICBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgY3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFu
ZGxlKCkgY29uc3Q7CiAKICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmIGNvbnRleHQoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiAqbV9jb250ZXh0OyB9CisgICAgCisgICAgV2ViQ29yZTo6
SW50U2l6ZSBiYWNrZW5kU2l6ZSgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgUmVmUHRyPFdlYkNv
cmU6Ok5hdGl2ZUltYWdlPiBjb3B5TmF0aXZlSW1hZ2UoV2ViQ29yZTo6QmFja2luZ1N0b3JlQ29w
eSA9IFdlYkNvcmU6OkNvcHlCYWNraW5nU3RvcmUpIGNvbnN0IG92ZXJyaWRlOwogICAgIFJlZlB0
cjxXZWJDb3JlOjpJbWFnZT4gY29weUltYWdlKFdlYkNvcmU6OkJhY2tpbmdTdG9yZUNvcHkgPSBX
ZWJDb3JlOjpDb3B5QmFja2luZ1N0b3JlLCBXZWJDb3JlOjpQcmVzZXJ2ZVJlc29sdXRpb24gPSBX
ZWJDb3JlOjpQcmVzZXJ2ZVJlc29sdXRpb246Ok5vKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUGxhdGZvcm1SZW1vdGVJ
bWFnZUJ1ZmZlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1BsYXRmb3JtUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCmluZGV4IDA1MTc2NzgzZDU1MzFiZmU3
MGY4NTBiZjJjMTQ5Zjc4ODIyZDBlMzkuLjlhZmYwODhlMzdjYTc2YTdmODY0YWU3ZTQyYmJiNzAw
NGYxZjE1MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUGxhdGZvcm1SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9QbGF0Zm9ybVJlbW90ZUltYWdlQnVmZmVyUHJveHkuaApA
QCAtMzcsMTQgKzM3LDQgQEAgdXNpbmcgQWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlclByb3h5
ID0gUmVtb3RlSW1hZ2VCdWZmZXJQcm94eTxBY2NlbGVyYXRlZEltYWcKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CiAKLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViS2l0OjpVbmFjY2Vs
ZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXJQcm94eSkKLSAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29u
c3QgV2ViQ29yZTo6SW1hZ2VCdWZmZXImIGltYWdlQnVmZmVyKSB7IHJldHVybiBpbWFnZUJ1ZmZl
ci5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSAmJiAhaW1hZ2VCdWZmZXIuaXNBY2NlbGVy
YXRlZCgpOyB9Ci1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCi0KLSNpZiBIQVZFKElPU1VS
RkFDRSkKLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViS2l0OjpBY2NlbGVyYXRlZFJl
bW90ZUltYWdlQnVmZmVyUHJveHkpCi0gICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNv
cmU6OkltYWdlQnVmZmVyJiBpbWFnZUJ1ZmZlcikgeyByZXR1cm4gaW1hZ2VCdWZmZXIucmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyKCkgJiYgaW1hZ2VCdWZmZXIuaXNBY2NlbGVyYXRlZCgpOyB9
Ci1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCi0jZW5kaWYKLQogI2VuZGlmIC8vIEVOQUJM
RShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgKaW5kZXggMzFjZDAyZDFi
MGYyMWVkZTU4MjJiZjk0NWJhZDQ2ZWRlZjFlYjM3YS4uZTFmNGNkNGNhNzg1NjQ4Njc2ZDAwMzlk
OTkyNDYxNTRlOGNlYWY0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgKQEAgLTUwLDE0
ICs1MCwxNiBAQCBjbGFzcyBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5IDogcHVibGljIFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpJbWFnZUJ1ZmZlcjxCYWNrZW5kVAogICAgIHVzaW5nIEJhc2VEaXNwbGF5
TGlzdEltYWdlQnVmZmVyOjptX2JhY2tlbmQ7CiAgICAgdXNpbmcgQmFzZURpc3BsYXlMaXN0SW1h
Z2VCdWZmZXI6Om1fZHJhd2luZ0NvbnRleHQ7CiAgICAgdXNpbmcgQmFzZURpc3BsYXlMaXN0SW1h
Z2VCdWZmZXI6Om1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyOworICAgIHVzaW5nIEJhc2VE
aXNwbGF5TGlzdEltYWdlQnVmZmVyOjpyZXNvbHV0aW9uU2NhbGU7CiAKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUmVmUHRyPFJlbW90ZUltYWdlQnVmZmVyUHJveHk+IGNyZWF0ZShjb25zdCBXZWJDb3Jl
OjpGbG9hdFNpemUmIHNpemUsIFdlYkNvcmU6OlJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwg
ZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFdl
YkNvcmU6OlBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHkmIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKKyAgICBzdGF0aWMgUmVmUHRyPFJlbW90
ZUltYWdlQnVmZmVyUHJveHk+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHNpemUs
IGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSBjb2xvclNwYWNlLCBX
ZWJDb3JlOjpQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5JiByZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpCiAgICAgewogICAgICAgICBpZiAoQmFj
a2VuZFR5cGU6OmNhbGN1bGF0ZUJhY2tlbmRTaXplKHNpemUsIHJlc29sdXRpb25TY2FsZSkuaXNF
bXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5KHNpemUsIHJlbmRlcmluZ01vZGUsIHJl
c29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQsIHJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eSkpOworICAgICAgICBhdXRvIHBhcmFtZXRlcnMgPSBzdGQ6OnVuaXF1ZV9wdHI8
V2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjpQYXJhbWV0ZXJzPihuZXcgV2ViQ29yZTo6SW1h
Z2VCdWZmZXJCYWNrZW5kOjpQYXJhbWV0ZXJzKHsgc2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xv
clNwYWNlLCBwaXhlbEZvcm1hdCB9KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgUmVt
b3RlSW1hZ2VCdWZmZXJQcm94eShXVEZNb3ZlKHBhcmFtZXRlcnMpLCByZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHkpKTsKICAgICB9CiAKICAgICB+UmVtb3RlSW1hZ2VCdWZmZXJQcm94eSgpCkBA
IC02OSwyNyArNzEsNiBAQCBwdWJsaWM6CiAgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5LT5yZWxlYXNlUmVtb3RlUmVzb3VyY2UobV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIpOwogICAgIH0KIAotICAgIHZvaWQgY2xlYXJCYWNrZW5kKCkgeyBtX2JhY2tlbmQgPSBudWxs
cHRyOyB9Ci0KLSAgICB2b2lkIGNyZWF0ZUJhY2tlbmQoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXpl
JiBsb2dpY2FsU2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0
IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSBjb2xvclNwYWNlLCBXZWJDb3Jl
OjpQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGhhbmRs
ZSkKLSAgICB7Ci0gICAgICAgIEFTU0VSVCghbV9iYWNrZW5kKTsKLSAgICAgICAgbV9iYWNrZW5k
ID0gQmFja2VuZFR5cGU6OmNyZWF0ZShsb2dpY2FsU2l6ZSwgYmFja2VuZFNpemUsIHJlc29sdXRp
b25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQsIFdURk1vdmUoaGFuZGxlKSk7Ci0gICAg
fQotCi0gICAgdm9pZCBkaWRGbHVzaChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Rmx1c2hJZGVudGlm
aWVyIGZsdXNoSWRlbnRpZmllcikKLSAgICB7Ci0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExv
Y2sobV9yZWNlaXZlZEZsdXNoSWRlbnRpZmllckxvY2spOwotICAgICAgICBtX3JlY2VpdmVkRmx1
c2hJZGVudGlmaWVyID0gZmx1c2hJZGVudGlmaWVyOwotICAgICAgICBtX3JlY2VpdmVkRmx1c2hJ
ZGVudGlmaWVyQ2hhbmdlZENvbmRpdGlvbi5ub3RpZnlBbGwoKTsKLSAgICB9Ci0KLSAgICBjb25z
dCBXZWJDb3JlOjpGbG9hdFNpemUmIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KLSAg
ICBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUoKSBjb25zdCB7IHJldHVybiBt
X3JlbmRlcmluZ01vZGU7IH0KLSAgICBmbG9hdCByZXNvbHV0aW9uU2NhbGUoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBtX3Jlc29sdXRpb25TY2FsZTsgfQotICAgIFdlYkNvcmU6OkNvbG9yU3BhY2Ug
Y29sb3JTcGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29sb3JTcGFjZTsgfQotICAgIFdlYkNvcmU6
OlBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0KCkgY29uc3QgeyByZXR1cm4gbV9waXhlbEZvcm1hdDsg
fQotCiAgICAgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGNyZWF0ZUltYWdlQnVmZmVyQmFja2Vu
ZEhhbmRsZSgpCiAgICAgewogICAgICAgICBlbnN1cmVCYWNrZW5kQ3JlYXRlZCgpOwpAQCAtMTEy
LDE1ICs5Myw5IEBAIHB1YmxpYzoKICAgICB9CiAKIHByb3RlY3RlZDoKLSAgICBmcmllbmQgY2xh
c3MgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDsKLSAgICBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5KGNv
bnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgc2l6ZSwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSByZW5k
ZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UgY29s
b3JTcGFjZSwgV2ViQ29yZTo6UGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eSYgcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KQotICAgICAgICA6IEJh
c2VEaXNwbGF5TGlzdEltYWdlQnVmZmVyKHNpemUsIHRoaXMpCisgICAgUmVtb3RlSW1hZ2VCdWZm
ZXJQcm94eShzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjpQYXJh
bWV0ZXJzPiYmIHBhcmFtZXRlcnMsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSYgcmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5KQorICAgICAgICA6IEJhc2VEaXNwbGF5TGlzdEltYWdlQnVm
ZmVyKFdURk1vdmUocGFyYW1ldGVycyksIHRoaXMpCiAgICAgICAgICwgbV9yZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHkobWFrZVdlYWtQdHIocmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KSkK
LSAgICAgICAgLCBtX3NpemUoc2l6ZSkKLSAgICAgICAgLCBtX3JlbmRlcmluZ01vZGUocmVuZGVy
aW5nTW9kZSkKLSAgICAgICAgLCBtX3Jlc29sdXRpb25TY2FsZShyZXNvbHV0aW9uU2NhbGUpCi0g
ICAgICAgICwgbV9jb2xvclNwYWNlKGNvbG9yU3BhY2UpCi0gICAgICAgICwgbV9waXhlbEZvcm1h
dChwaXhlbEZvcm1hdCkKICAgICB7CiAgICAgICAgIEFTU0VSVChtX3JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eSk7CiAgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT5yZW1v
dGVSZXNvdXJjZUNhY2hlUHJveHkoKS5jYWNoZUltYWdlQnVmZmVyKCp0aGlzKTsKQEAgLTEzMSw2
ICsxMDYsMTMgQEAgcHJvdGVjdGVkOgogCiAgICAgYm9vbCBoYXNQZW5kaW5nRmx1c2goKSBjb25z
dCB7IHJldHVybiBtX3NlbnRGbHVzaElkZW50aWZpZXIgIT0gbV9yZWNlaXZlZEZsdXNoSWRlbnRp
ZmllcjsgfQogCisgICAgdm9pZCBkaWRGbHVzaChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Rmx1c2hJ
ZGVudGlmaWVyIGZsdXNoSWRlbnRpZmllcikgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGF1dG8g
bG9ja2VyID0gaG9sZExvY2sobV9yZWNlaXZlZEZsdXNoSWRlbnRpZmllckxvY2spOworICAgICAg
ICBtX3JlY2VpdmVkRmx1c2hJZGVudGlmaWVyID0gZmx1c2hJZGVudGlmaWVyOworICAgICAgICBt
X3JlY2VpdmVkRmx1c2hJZGVudGlmaWVyQ2hhbmdlZENvbmRpdGlvbi5ub3RpZnlBbGwoKTsKKyAg
ICB9CisKICAgICB2b2lkIHdhaXRGb3JEaWRGbHVzaFdpdGhUaW1lb3V0KCkKICAgICB7CiAgICAg
ICAgIGlmICghbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpCkBAIC0xNDUsNyArMTI3LDcg
QEAgcHJvdGVjdGVkOgogICAgIEJhY2tlbmRUeXBlKiBlbnN1cmVCYWNrZW5kQ3JlYXRlZCgpIGNv
bnN0IG92ZXJyaWRlCiAgICAgewogICAgICAgICBpZiAoIW1fYmFja2VuZCAmJiBtX3JlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eSkKLSAgICAgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5LT53YWl0Rm9ySW1hZ2VCdWZmZXJCYWNrZW5kV2FzQ3JlYXRlZCgpOworICAgICAgICAg
ICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHktPndhaXRGb3JEaWRDcmVhdGVJbWFnZUJ1
ZmZlckJhY2tlbmQoKTsKICAgICAgICAgcmV0dXJuIG1fYmFja2VuZC5nZXQoKTsKICAgICB9CiAK
QEAgLTE2OSw4ICsxNTEsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBwdXRJbWFnZURhdGEoV2Vi
Q29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBpbnB1dEZvcm1hdCwgY29uc3QgV2ViQ29yZTo6
SW1hZ2VEYXRhJiBpbWFnZURhdGEsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHNyY1JlY3QsIGNv
bnN0IFdlYkNvcmU6OkludFBvaW50JiBkZXN0UG9pbnQgPSB7IH0sIFdlYkNvcmU6OkFscGhhUHJl
bXVsdGlwbGljYXRpb24gZGVzdEZvcm1hdCA9IFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRp
b246OlByZW11bHRpcGxpZWQpIG92ZXJyaWRlCiAgICAgewogICAgICAgICAvLyBUaGUgbWF0aCBp
bnNpZGUgSW1hZ2VEYXRhOjpjcmVhdGUoKSBkb2Vzbid0IGFncmVlIHdpdGggdGhlIG1hdGggaW5z
aWRlIEltYWdlQnVmZmVyQmFja2VuZDo6cHV0SW1hZ2VEYXRhKCkgYWJvdXQgaG93IG1fcmVzb2x1
dGlvblNjYWxlIGludGVyYWN0cyB3aXRoIHRoZSBkYXRhIGluIHRoZSBJbWFnZUJ1ZmZlci4KLSAg
ICAgICAgLy8gVGhpcyBtZWFucyB0aGF0IHB1dEltYWdlRGF0YSgpIGlzIG9ubHkgY2FsbGVkIHdo
ZW4gbV9yZXNvbHV0aW9uU2NhbGUgPT0gMS4KLSAgICAgICAgQVNTRVJUX0lNUExJRVMobV9iYWNr
ZW5kLCBtX2JhY2tlbmQtPnJlc29sdXRpb25TY2FsZSgpID09IDEpOworICAgICAgICAvLyBUaGlz
IG1lYW5zIHRoYXQgcHV0SW1hZ2VEYXRhKCkgaXMgb25seSBjYWxsZWQgd2hlbiByZXNvbHV0aW9u
U2NhbGUoKSA9PSAxLgorICAgICAgICBBU1NFUlQocmVzb2x1dGlvblNjYWxlKCkgPT0gMSk7CiAg
ICAgICAgIG1fZHJhd2luZ0NvbnRleHQucmVjb3JkZXIoKS5wdXRJbWFnZURhdGEoaW5wdXRGb3Jt
YXQsIGltYWdlRGF0YSwgc3JjUmVjdCwgZGVzdFBvaW50LCBkZXN0Rm9ybWF0KTsKICAgICB9CiAK
QEAgLTE4NSwxMSArMTY3LDExIEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGZsdXNoRHJhd2luZ0Nv
bnRleHQoKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgVHJhY2VTY29wZSB0cmFjaW5nU2NvcGUo
Rmx1c2hSZW1vdGVJbWFnZUJ1ZmZlclN0YXJ0LCBGbHVzaFJlbW90ZUltYWdlQnVmZmVyRW5kKTsK
LSAgICAgICAgZmx1c2hEcmF3aW5nQ29udGV4dEFuZENvbW1pdCgpOworICAgICAgICBzdWJtaXRE
cmF3aW5nQ29udGV4dCgpOwogICAgICAgICB3YWl0Rm9yRGlkRmx1c2hXaXRoVGltZW91dCgpOwog
ICAgIH0KIAotICAgIHZvaWQgZmx1c2hEcmF3aW5nQ29udGV4dEFuZENvbW1pdCgpIG92ZXJyaWRl
CisgICAgdm9pZCBzdWJtaXREcmF3aW5nQ29udGV4dCgpIG92ZXJyaWRlCiAgICAgewogICAgICAg
ICBpZiAoIW1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KQogICAgICAgICAgICAgcmV0dXJu
OwpAQCAtMjAwLDEyICsxODIsMTIgQEAgcHJvdGVjdGVkOgogCiAgICAgICAgIG1fc2VudEZsdXNo
SWRlbnRpZmllciA9IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpGbHVzaElkZW50aWZpZXI6OmdlbmVy
YXRlKCk7CiAgICAgICAgIGRpc3BsYXlMaXN0LnRlbXBsYXRlIGFwcGVuZDxXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6Rmx1c2hDb250ZXh0PihtX3NlbnRGbHVzaElkZW50aWZpZXIpOwotICAgICAgICBt
X3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+c3VibWl0RGlzcGxheUxpc3QoZGlzcGxheUxp
c3QsIG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKLSAgICAgICAgbV9pdGVtQ291bnRJ
bkN1cnJlbnREaXNwbGF5TGlzdCA9IDA7CisgICAgICAgIHN1Ym1pdERpc3BsYXlMaXN0KGRpc3Bs
YXlMaXN0KTsKICAgICAgICAgZGlzcGxheUxpc3QuY2xlYXIoKTsKKyAgICAgICAgbV9pdGVtQ291
bnRJbkN1cnJlbnREaXNwbGF5TGlzdCA9IDA7CiAgICAgfQogCi0gICAgdm9pZCBzdWJtaXREaXNw
bGF5TGlzdChjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmIGRpc3BsYXlM
aXN0KQorICAgIHZvaWQgc3VibWl0RGlzcGxheUxpc3QoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OkRpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCkgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIGlm
ICghbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkgfHwgZGlzcGxheUxpc3QuaXNFbXB0eSgp
KQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzUxLDExICszMzMsNiBAQCBwcm90ZWN0ZWQ6CiAg
ICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZsdXNoSWRlbnRpZmllciBtX3JlY2VpdmVkRmx1c2hJ
ZGVudGlmaWVyOwogICAgIFdlYWtQdHI8UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5PiBtX3Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTsKICAgICBzaXplX3QgbV9pdGVtQ291bnRJbkN1cnJl
bnREaXNwbGF5TGlzdCB7IDAgfTsKLSAgICBXZWJDb3JlOjpGbG9hdFNpemUgbV9zaXplOwotICAg
IFdlYkNvcmU6OlJlbmRlcmluZ01vZGUgbV9yZW5kZXJpbmdNb2RlOwotICAgIGZsb2F0IG1fcmVz
b2x1dGlvblNjYWxlOwotICAgIFdlYkNvcmU6OkNvbG9yU3BhY2UgbV9jb2xvclNwYWNlOwotICAg
IFdlYkNvcmU6OlBpeGVsRm9ybWF0IG1fcGl4ZWxGb3JtYXQ7CiB9OwogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBCYWNrZW5kVHlwZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNw
cAppbmRleCBjMDdiMjNmYjJiMGU1OGUwZTFkZmY1YTE0ZWUwYTg1ZDlhNWI2NDVkLi4zZDZmZmM0
ODAxMmYzMmM5NzZmN2Y5OTIxNDgwMDUwMzVjMDA2OGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHkuY3BwCkBAIC03MCwyNCArNzAsMTUgQEAgdm9pZCBSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHk6OmNvbm5lY3RUb0dQVVByb2Nlc3MoKQogICAgIHNlbmQoTWVzc2Fn
ZXM6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNyZWF0ZVJlbmRlcmluZ0JhY2tlbmQobV9y
ZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciksIDApOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBU
Pgotc3RhdGljIHZvaWQgcmVjcmVhdGVJbWFnZUJ1ZmZlcihSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHkmIHByb3h5LCBUJiBpbWFnZUJ1ZmZlciwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
IHJlc291cmNlSWRlbnRpZmllciwgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgcmVuZGVyaW5n
QmFja2VuZElkZW50aWZpZXIpCi17Ci0gICAgaW1hZ2VCdWZmZXIuY2xlYXJCYWNrZW5kKCk7Ci0g
ICAgcHJveHkuc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Q3JlYXRlSW1h
Z2VCdWZmZXIoaW1hZ2VCdWZmZXIuc2l6ZSgpLCBpbWFnZUJ1ZmZlci5yZW5kZXJpbmdNb2RlKCks
IGltYWdlQnVmZmVyLnJlc29sdXRpb25TY2FsZSgpLCBpbWFnZUJ1ZmZlci5jb2xvclNwYWNlKCks
IGltYWdlQnVmZmVyLnBpeGVsRm9ybWF0KCksIHJlc291cmNlSWRlbnRpZmllciksIHJlbmRlcmlu
Z0JhY2tlbmRJZGVudGlmaWVyKTsKLX0KLQogdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHk6OnJlZXN0YWJsaXNoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKQogewogICAgIGNvbm5lY3RUb0dQ
VVByb2Nlc3MoKTsKIAotICAgIGZvciAoYXV0byYgcGFpciA6IG1fcmVtb3RlUmVzb3VyY2VDYWNo
ZVByb3h5LmltYWdlQnVmZmVycygpKSB7Ci0gICAgICAgIGlmIChhdXRvJiBiYXNlSW1hZ2VCdWZm
ZXIgPSBwYWlyLnZhbHVlKSB7Ci0gICAgICAgICAgICBpZiAoaXM8QWNjZWxlcmF0ZWRSZW1vdGVJ
bWFnZUJ1ZmZlclByb3h5PigqYmFzZUltYWdlQnVmZmVyKSkKLSAgICAgICAgICAgICAgICByZWNy
ZWF0ZUltYWdlQnVmZmVyKCp0aGlzLCBkb3duY2FzdDxBY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVm
ZmVyUHJveHk+KCpiYXNlSW1hZ2VCdWZmZXIpLCBwYWlyLmtleSwgbV9yZW5kZXJpbmdCYWNrZW5k
SWRlbnRpZmllcik7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcmVjcmVhdGVJ
bWFnZUJ1ZmZlcigqdGhpcywgZG93bmNhc3Q8VW5hY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVy
UHJveHk+KCpiYXNlSW1hZ2VCdWZmZXIpLCBwYWlyLmtleSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRl
bnRpZmllcik7Ci0gICAgICAgIH0KKyAgICBmb3IgKGF1dG8mIGltYWdlQnVmZmVyIDogbV9yZW1v
dGVSZXNvdXJjZUNhY2hlUHJveHkuaW1hZ2VCdWZmZXJzKCkudmFsdWVzKCkpIHsKKyAgICAgICAg
aWYgKCFpbWFnZUJ1ZmZlcikKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpDcmVhdGVJbWFnZUJ1ZmZlcihpbWFnZUJ1
ZmZlci0+bG9naWNhbFNpemUoKSwgaW1hZ2VCdWZmZXItPnJlbmRlcmluZ01vZGUoKSwgaW1hZ2VC
dWZmZXItPnJlc29sdXRpb25TY2FsZSgpLCBpbWFnZUJ1ZmZlci0+Y29sb3JTcGFjZSgpLCBpbWFn
ZUJ1ZmZlci0+cGl4ZWxGb3JtYXQoKSwgaW1hZ2VCdWZmZXItPnJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcigpKSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7CisgICAgICAgIGltYWdl
QnVmZmVyLT5jbGVhckJhY2tlbmQoKTsKICAgICB9CiB9CiAKQEAgLTExMiwxMCArMTAzLDEwIEBA
IHVpbnQ2NF90IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6bWVzc2FnZVNlbmRlckRlc3Rp
bmF0aW9uSUQoKSBjb25zdAogICAgIHJldHVybiBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVy
LnRvVUludDY0KCk7CiB9CiAKLWJvb2wgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Ojp3YWl0
Rm9ySW1hZ2VCdWZmZXJCYWNrZW5kV2FzQ3JlYXRlZCgpCitib29sIFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eTo6d2FpdEZvckRpZENyZWF0ZUltYWdlQnVmZmVyQmFja2VuZCgpCiB7CiAgICAg
UmVmPElQQzo6Q29ubmVjdGlvbj4gY29ubmVjdGlvbiA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpOwotICAgIHJldHVybiBj
b25uZWN0aW9uLT53YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseTxNZXNzYWdlczo6UmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5OjpJbWFnZUJ1ZmZlckJhY2tlbmRXYXNDcmVhdGVkPihtX3Jl
bmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLCAxX3MsIElQQzo6V2FpdEZvck9wdGlvbjo6SW50ZXJy
dXB0V2FpdGluZ0lmU3luY01lc3NhZ2VBcnJpdmVzKTsKKyAgICByZXR1cm4gY29ubmVjdGlvbi0+
d2FpdEZvckFuZERpc3BhdGNoSW1tZWRpYXRlbHk8TWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eTo6RGlkQ3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kPihtX3JlbmRlcmluZ0JhY2tl
bmRJZGVudGlmaWVyLCAxX3MsIElQQzo6V2FpdEZvck9wdGlvbjo6SW50ZXJydXB0V2FpdGluZ0lm
U3luY01lc3NhZ2VBcnJpdmVzKTsKIH0KIAogYm9vbCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHk6OndhaXRGb3JEaWRGbHVzaCgpCkBAIC0xMjksMTAgKzEyMCwxMCBAQCBSZWZQdHI8SW1hZ2VC
dWZmZXI+IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29u
c3QgRmxvYXRTaQogICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXI7CiAKICAgICBp
ZiAocmVuZGVyaW5nTW9kZSA9PSBSZW5kZXJpbmdNb2RlOjpBY2NlbGVyYXRlZCkKLSAgICAgICAg
aW1hZ2VCdWZmZXIgPSBBY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyUHJveHk6OmNyZWF0ZShz
aXplLCByZW5kZXJpbmdNb2RlLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9y
bWF0LCAqdGhpcyk7CisgICAgICAgIGltYWdlQnVmZmVyID0gQWNjZWxlcmF0ZWRSZW1vdGVJbWFn
ZUJ1ZmZlclByb3h5OjpjcmVhdGUoc2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBw
aXhlbEZvcm1hdCwgKnRoaXMpOwogCiAgICAgaWYgKCFpbWFnZUJ1ZmZlcikKLSAgICAgICAgaW1h
Z2VCdWZmZXIgPSBVbmFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6Y3JlYXRlKHNp
emUsIHJlbmRlcmluZ01vZGUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3Jt
YXQsICp0aGlzKTsKKyAgICAgICAgaW1hZ2VCdWZmZXIgPSBVbmFjY2VsZXJhdGVkUmVtb3RlSW1h
Z2VCdWZmZXJQcm94eTo6Y3JlYXRlKHNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwg
cGl4ZWxGb3JtYXQsICp0aGlzKTsKIAogICAgIGlmIChpbWFnZUJ1ZmZlcikgewogICAgICAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpDcmVhdGVJbWFnZUJ1ZmZlcihz
aXplLCByZW5kZXJpbmdNb2RlLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9y
bWF0LCBpbWFnZUJ1ZmZlci0+cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCkpLCBtX3JlbmRl
cmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKQEAgLTE4MywyOCArMTc0LDIyIEBAIHZvaWQgUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5OjpyZWxlYXNlUmVtb3RlUmVzb3VyY2UoUmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmCiAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6
UmVsZWFzZVJlbW90ZVJlc291cmNlKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciksIG1fcmVu
ZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOwogfQogCi12b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eTo6aW1hZ2VCdWZmZXJCYWNrZW5kV2FzQ3JlYXRlZChjb25zdCBGbG9hdFNpemUmIGxv
Z2ljYWxTaXplLCBjb25zdCBJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNj
YWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBJbWFn
ZUJ1ZmZlckJhY2tlbmRIYW5kbGUgaGFuZGxlLCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIg
cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHk6OmRpZENyZWF0ZUltYWdlQnVmZmVyQmFja2VuZChJbWFnZUJ1ZmZlckJhY2tlbmRIYW5k
bGUgaGFuZGxlLCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyKQogewogICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBtX3JlbW90ZVJlc291cmNlQ2Fj
aGVQcm94eS5jYWNoZWRJbWFnZUJ1ZmZlcihyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwog
ICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAgICAgIHJldHVybjsKLSAgICAKLSAgICBpZiAoaW1h
Z2VCdWZmZXItPmlzQWNjZWxlcmF0ZWQoKSkKLSAgICAgICAgZG93bmNhc3Q8QWNjZWxlcmF0ZWRS
ZW1vdGVJbWFnZUJ1ZmZlclByb3h5PigqaW1hZ2VCdWZmZXIpLmNyZWF0ZUJhY2tlbmQobG9naWNh
bFNpemUsIGJhY2tlbmRTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9y
bWF0LCBXVEZNb3ZlKGhhbmRsZSkpOworCisgICAgaWYgKGltYWdlQnVmZmVyLT5yZW5kZXJpbmdN
b2RlKCkgPT0gUmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQpCisgICAgICAgIGltYWdlQnVmZmVy
LT5zZXRCYWNrZW5kKEFjY2VsZXJhdGVkSW1hZ2VCdWZmZXJTaGFyZWFibGVCYWNrZW5kOjpjcmVh
dGUoaW1hZ2VCdWZmZXItPnBhcmFtZXRlcnMoKSwgV1RGTW92ZShoYW5kbGUpKSk7CiAgICAgZWxz
ZQotICAgICAgICBkb3duY2FzdDxVbmFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXJQcm94eT4o
KmltYWdlQnVmZmVyKS5jcmVhdGVCYWNrZW5kKGxvZ2ljYWxTaXplLCBiYWNrZW5kU2l6ZSwgcmVz
b2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCwgV1RGTW92ZShoYW5kbGUpKTsK
KyAgICAgICAgaW1hZ2VCdWZmZXItPnNldEJhY2tlbmQoVW5hY2NlbGVyYXRlZEltYWdlQnVmZmVy
U2hhcmVhYmxlQmFja2VuZDo6Y3JlYXRlKGltYWdlQnVmZmVyLT5wYXJhbWV0ZXJzKCksIFdURk1v
dmUoaGFuZGxlKSkpOwogfQogCiB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6ZGlk
Rmx1c2goRGlzcGxheUxpc3Q6OkZsdXNoSWRlbnRpZmllciBmbHVzaElkZW50aWZpZXIsIFJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCiB7Ci0g
ICAgYXV0byBpbWFnZUJ1ZmZlciA9IG1fcmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNhY2hlZElt
YWdlQnVmZmVyKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7Ci0gICAgaWYgKCFpbWFnZUJ1
ZmZlcikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKGltYWdlQnVmZmVyLT5pc0FjY2VsZXJh
dGVkKCkpCi0gICAgICAgIGRvd25jYXN0PEFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXJQcm94
eT4oKmltYWdlQnVmZmVyKS5kaWRGbHVzaChmbHVzaElkZW50aWZpZXIpOwotICAgIGVsc2UKLSAg
ICAgICAgZG93bmNhc3Q8VW5hY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyUHJveHk+KCppbWFn
ZUJ1ZmZlcikuZGlkRmx1c2goZmx1c2hJZGVudGlmaWVyKTsKKyAgICBpZiAoYXV0byBpbWFnZUJ1
ZmZlciA9IG1fcmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNhY2hlZEltYWdlQnVmZmVyKHJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcikpCisgICAgICAgIGltYWdlQnVmZmVyLT5kaWRGbHVzaChm
bHVzaElkZW50aWZpZXIpOwogfQogCiB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6
dXBkYXRlUmV1c2FibGVIYW5kbGVzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eS5oCmluZGV4IDk1ZjhkMmI0MTJmYjkxZGY3N2M2OGYxMzZiMDA3ODZmMDI0ZDdlMjYuLmY4MDVm
YzFlZmY5Y2E1MTQ1MzU5Y2EyOTJiNTJkZGZlZWY4ZGE4MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHkuaApAQCAtODEsNyArODEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBj
YWNoZU5hdGl2ZUltYWdlKFdlYkNvcmU6Ok5hdGl2ZUltYWdlJik7CiAgICAgdm9pZCByZWxlYXNl
UmVtb3RlUmVzb3VyY2UoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKIAot
ICAgIGJvb2wgd2FpdEZvckltYWdlQnVmZmVyQmFja2VuZFdhc0NyZWF0ZWQoKTsKKyAgICBib29s
IHdhaXRGb3JEaWRDcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQoKTsKICAgICBib29sIHdhaXRGb3JE
aWRGbHVzaCgpOwogCiBwcml2YXRlOgpAQCAtOTUsNyArOTUsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgdXBkYXRlUmV1c2FibGVIYW5kbGVzKCk7CiAKICAgICAvLyBNZXNzYWdlcyB0byBiZSByZWNl
aXZlZC4KLSAgICB2b2lkIGltYWdlQnVmZmVyQmFja2VuZFdhc0NyZWF0ZWQoY29uc3QgV2ViQ29y
ZTo6RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgYmFja2Vu
ZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSwgV2ViQ29y
ZTo6UGl4ZWxGb3JtYXQsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSwgV2ViQ29yZTo6UmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICB2b2lkIGRpZENyZWF0ZUltYWdlQnVmZmVyQmFj
a2VuZChJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcik7CiAgICAgdm9pZCBkaWRGbHVzaChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Rmx1
c2hJZGVudGlmaWVyLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogCiAg
ICAgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5IG1fcmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5IHsg
KnRoaXMgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkubWVz
c2FnZXMuaW4KaW5kZXggOTIwZGUzZjc3NzU0MDE2NDA1MWZmNTFjZDIxYjUwNTU5ODU0Zjg0NC4u
M2E1MzJkNWU0ZmY2MTZiZGIwN2VkZTdhOWE4M2U5MzEzN2U3M2JmMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkubWVzc2FnZXMuaW4KQEAgLTIzLDcgKzIz
LDcgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKIG1lc3NhZ2VzIC0+IFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eSBOb3RSZWZDb3VudGVkIHsKLSAgICBJbWFnZUJ1ZmZlckJhY2tlbmRX
YXNDcmVhdGVkKFdlYkNvcmU6OkZsb2F0U2l6ZSBsb2dpY2FsU2l6ZSwgV2ViQ29yZTo6SW50U2l6
ZSBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNl
IGNvbG9yU3BhY2UsIGVudW06dWludDhfdCBXZWJDb3JlOjpQaXhlbEZvcm1hdCBwaXhlbEZvcm1h
dCwgV2ViS2l0OjpJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgaGFuZGxlLCBXZWJDb3JlOjpSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQorICAg
IERpZENyZWF0ZUltYWdlQnVmZmVyQmFja2VuZChXZWJLaXQ6OkltYWdlQnVmZmVyQmFja2VuZEhh
bmRsZSBoYW5kbGUsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIpCiAgICAgRGlkRmx1c2goV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OkZsdXNoSWRlbnRpZmllciBmbHVzaElkZW50aWZpZXIsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZm
ZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5k
LmNwcAppbmRleCA1MTYyN2M1ZWRkODkxYjk0ZjM2MzkxYzBhYjRjMjgwOGM2ODBiZWZmLi5lNDEy
ZTdmNjNmNDA4N2YyMTc3MjQ2ODJlOTM1OGZiODU4OGZjNWMzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxl
SU9TdXJmYWNlQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQuY3BwCkBA
IC0zNywxMyArMzcsMTMgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIFdURl9NQUtFX0lT
T19BTExPQ0FURURfSU1QTChJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQpOwog
Ci1zdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kPiBJ
bWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZShjb25zdCBGbG9hdFNp
emUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBQ
aXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgY29uc3QgSG9zdFdpbmRvdyopCitzdGQ6OnVuaXF1ZV9w
dHI8SW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kPiBJbWFnZUJ1ZmZlclNoYXJl
YWJsZUlPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJz
LCBjb25zdCBIb3N0V2luZG93KikKIHsKLSAgICBJbnRTaXplIGJhY2tlbmRTaXplID0gY2FsY3Vs
YXRlQmFja2VuZFNpemUoc2l6ZSwgcmVzb2x1dGlvblNjYWxlKTsKKyAgICBJbnRTaXplIGJhY2tl
bmRTaXplID0gY2FsY3VsYXRlQmFja2VuZFNpemUocGFyYW1ldGVycy5sb2dpY2FsU2l6ZSwgcGFy
YW1ldGVycy5yZXNvbHV0aW9uU2NhbGUpOwogICAgIGlmIChiYWNrZW5kU2l6ZS5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgYXV0byBzdXJmYWNlID0gSU9TdXJmYWNl
OjpjcmVhdGUoYmFja2VuZFNpemUsIGJhY2tlbmRTaXplLCBjYWNoZWRDR0NvbG9yU3BhY2UoY29s
b3JTcGFjZSksIElPU3VyZmFjZTo6Zm9ybWF0Rm9yUGl4ZWxGb3JtYXQocGl4ZWxGb3JtYXQpKTsK
KyAgICBhdXRvIHN1cmZhY2UgPSBJT1N1cmZhY2U6OmNyZWF0ZShiYWNrZW5kU2l6ZSwgYmFja2Vu
ZFNpemUsIGNhY2hlZENHQ29sb3JTcGFjZShwYXJhbWV0ZXJzLmNvbG9yU3BhY2UpLCBJT1N1cmZh
Y2U6OmZvcm1hdEZvclBpeGVsRm9ybWF0KHBhcmFtZXRlcnMucGl4ZWxGb3JtYXQpKTsKICAgICBp
ZiAoIXN1cmZhY2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC01MywyMSArNTMsMjEg
QEAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZD4g
SW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmYKIAogICAgIENHQ29udGV4dENsZWFyUmVjdChjZ0Nv
bnRleHQuZ2V0KCksIEZsb2F0UmVjdChGbG9hdFBvaW50Ojp6ZXJvKCksIGJhY2tlbmRTaXplKSk7
CiAKLSAgICByZXR1cm4gbWFrZVVuaXF1ZTxJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJh
Y2tlbmQ+KHNpemUsIGJhY2tlbmRTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBp
eGVsRm9ybWF0LCBXVEZNb3ZlKHN1cmZhY2UpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxJbWFn
ZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQ+KHBhcmFtZXRlcnMsIFdURk1vdmUoc3Vy
ZmFjZSkpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZh
Y2VCYWNrZW5kPiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZShj
b25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBJbnRTaXplJiBpbnRlcm5hbFNpemUs
IGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBQaXhlbEZvcm1h
dCBwaXhlbEZvcm1hdCwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGhhbmRsZSkKK3N0ZDo6dW5p
cXVlX3B0cjxJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQ+IEltYWdlQnVmZmVy
U2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFt
ZXRlcnMsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBoYW5kbGUpCiB7CiAgICAgaWYgKCFXVEY6
OmhvbGRzX2FsdGVybmF0aXZlPE1hY2hTZW5kUmlnaHQ+KGhhbmRsZSkpIHsKICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAg
IGF1dG8gc3VyZmFjZSA9IElPU3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdodChXVEZNb3ZlKFdU
Rjo6Z2V0PE1hY2hTZW5kUmlnaHQ+KGhhbmRsZSkpLCBjYWNoZWRDR0NvbG9yU3BhY2UoY29sb3JT
cGFjZSkpOworICAgIGF1dG8gc3VyZmFjZSA9IElPU3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdo
dChXVEZNb3ZlKFdURjo6Z2V0PE1hY2hTZW5kUmlnaHQ+KGhhbmRsZSkpLCBjYWNoZWRDR0NvbG9y
U3BhY2UocGFyYW1ldGVycy5jb2xvclNwYWNlKSk7CiAgICAgaWYgKCFzdXJmYWNlKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBtYWtlVW5pcXVlPEltYWdlQnVmZmVyU2hh
cmVhYmxlSU9TdXJmYWNlQmFja2VuZD4obG9naWNhbFNpemUsIGludGVybmFsU2l6ZSwgcmVzb2x1
dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCwgV1RGTW92ZShzdXJmYWNlKSk7Cisg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8SW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5k
PihwYXJhbWV0ZXJzLCBXVEZNb3ZlKHN1cmZhY2UpKTsKIH0KIAogSW1hZ2VCdWZmZXJCYWNrZW5k
SGFuZGxlIEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlSW1hZ2VC
dWZmZXJCYWNrZW5kSGFuZGxlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VC
YWNrZW5kLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0lt
YWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZC5oCmluZGV4IGVkNTE2MjRlYjBhYTEw
NTBlMTNiZmExN2VhMzRmMGZlM2MxZmZmNmQuLjMxODkyMTVmMzNhY2FiNzkwMWZhY2I1MDVmMmE1
YzEzOTlhMGRlNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kLmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNo
YXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQuaApAQCAtMzksOCArMzksOCBAQCBjbGFzcyBJbWFnZUJ1
ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQgOiBwdWJsaWMgV2ViQ29yZTo6SW1hZ2VCdWZm
ZXJJT1N1cmZhYwogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoSW1hZ2VCdWZmZXJTaGFyZWFi
bGVJT1N1cmZhY2VCYWNrZW5kKTsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbWFnZUJ1ZmZl
clNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQpOwogcHVibGljOgotICAgIHN0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8SW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kPiBjcmVhdGUoY29u
c3QgV2ViQ29yZTo6RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgZmxvYXQgcmVzb2x1dGlv
blNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlLCBXZWJDb3JlOjpQaXhlbEZvcm1hdCwgY29uc3Qg
V2ViQ29yZTo6SG9zdFdpbmRvdyopOwotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VC
dWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kPiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6Rmxv
YXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgaW50ZXJuYWxTaXpl
LCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UsIFdlYkNvcmU6OlBp
eGVsRm9ybWF0LCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUpOworICAgIHN0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8SW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kPiBjcmVhdGUoY29u
c3QgUGFyYW1ldGVycyYsIGNvbnN0IFdlYkNvcmU6Okhvc3RXaW5kb3cqKTsKKyAgICBzdGF0aWMg
c3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZD4gY3Jl
YXRlKGNvbnN0IFBhcmFtZXRlcnMmLCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUpOwogCiAgICAg
dXNpbmcgV2ViQ29yZTo6SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpJbWFnZUJ1ZmZlcklP
U3VyZmFjZUJhY2tlbmQ7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415043</attachid>
            <date>2020-11-30 12:34:53 -0800</date>
            <delta_ts>2020-11-30 12:43:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219007-20201130123452.patch</filename>
            <type>text/plain</type>
            <size>105972</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwMjU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzQxODBjN2E3MjIyNGEz
M2RjMTgxODNkNjBkYTQ1OWU3NzFkNzhkMC4uNjE1YTgzMjVlOTI1YzAzM2RmY2Q3NDJiNjQyNDA0
MDc3ODQ1YTE4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzOCBAQAorMjAyMC0xMS0zMCAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3Nd
IENsZWFuIHVwIHJlY3JlYXRpbmcgdGhlIEltYWdlQnVmZmVyQmFja2VuZCBiZWNhdXNlIG9mIEdQ
VSBjcmFzaGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjE5MDA3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVG8gYWxsb3cgYW5zd2VyaW5nIHF1ZXN0aW9ucyBhYm91dCB0aGUgYmFja2VuZCBjcmVhdGlv
biBwYXJhbWV0ZXJzIHdpdGhvdXQKKyAgICAgICAgaGF2aW5nIHRoZSBiYWNrZW5kIGNyZWF0ZWQs
IHRoZSBuZXcgc3RydWN0dXJlIEltYWdlQnVmZmVyQmFja2VuZDo6UGFyYW1ldGVycworICAgICAg
ICBpcyBpbnRyb2R1Y2VkLgorCisgICAgICAgIFRoaXMgc3RydWN0dXJlIGNvbnRhaW5zIHRoZSBw
YXJhbWV0ZXJzIHdoaWNoIHdlcmUgcGFzc2VkIGJ5IHRoZSBjYWxsZXIgaW4KKyAgICAgICAgdGhl
IFdlYlByb2Nlc3MgYW5kIHdoaWNoIGFyZSBzdWZmaWNpZW50IHRvIHJlY3JlYXRlIFJlbW90ZUlt
YWdlQnVmZmVyIGlmCisgICAgICAgIHRoZSBHUFUgUHJvY2VzcyBjcmFzaGVzIGV2ZW4gYmVmb3Jl
IHRoZSBiYWNrZW5kIG9mIFJlbW90ZUltYWdlQnVmZmVyUHJveHkKKyAgICAgICAgaXMgY3JlYXRl
ZC4KKworICAgICAgICBDb25jcmV0ZUltYWdlQnVmZmVyIGFuZCBJbWFnZUJ1ZmZlckJhY2tlbmQg
d2lsbCBob2xkIGFuIGluc3RhbmNlIG9mIHRoZQorICAgICAgICBuZXcgc3RydWN0dXJlIEltYWdl
QnVmZmVyQmFja2VuZDo6UGFyYW1ldGVycy4KKworICAgICAgICBJbiB0aGlzIHBhdGNoIGFsc28s
IHRoZSBuYW1lcyBmb3IgcmVwbGF5aW5nIGJhY2sgdGhlIERpc3BsYXlMaXN0IGludG8gYW4KKyAg
ICAgICAgSW1hZ2VCdWZmZXJCYWNrZW5kIHdpbGwgdG8gYmUgY29uc2lzdGVudCBhbmQgbW9yZSBj
bGVhci4gV2Ugd2lsbCBhZG9wdCB0aGUKKyAgICAgICAgZm9sbG93aW5nIG5hbWluZyBzY2hlbWU6
CisKKyAgICAgICAgLS0gc3VibWl0RGlzcGxheUxpc3QoKTogUmVwbGF5cyBiYWNrIGEgRGlzcGxh
eUxpc3QuIElmIHRoZSByZXBsYXkgYmFjaworICAgICAgICAgICBoYXBwZW5zIGluIEdQVVAsIG5v
IG1lc3NhZ2UgY29uZmlybWluZyB0aGUgcmVwbGF5IGJhY2sgd2lsbCBiZSBzZW50CisgICAgICAg
ICAgIHRvIFdlYlAuCisKKyAgICAgICAgLS0gY29tbWl0RHJhd2luZ0NvbnRleHQoKTogUmVwbGF5
cyBiYWNrIHRoZSBEaXNwbGF5TGlzdCBvZiBEcmF3aW5nQ29udGV4dC4KKyAgICAgICAgICAgSWYg
dGhlIHJlcGxheSBiYWNrIGhhcHBlbnMgaW4gR1BVUCwgYSBtZXNzYWdlIGNvbmZpcm1pbmcgdGhl
IHJlcGxheQorICAgICAgICAgICBiYWNrIHdpbGwgYmUgc2VudCB0byBXZWJQLiBXZWJQIHdpbGwg
bm90IGJlIGJsb2NrZWQgdGlsbCB0aGlzIG1lc3NhZ2UKKyAgICAgICAgICAgaXMgc2VudC4KKwor
ICAgICAgICAtLSBmbHVzaERyYXdpbmdDb250ZXh0KCk6IFRoaXMgd2lsbCBjYWxscyBjb21taXRE
cmF3aW5nQ29udGV4dCgpIGFuZCB3YWl0cworICAgICAgICAgICBmb3IgdGhlIGNvbmZpcm1pbmcg
bWVzc2FnZSB0byBiZSBzZW50LgorCisgICAgICAgIEFsc28gcmVwbGFjZSBhbGwgdGhlIGluc3Rh
bmNlcyBvZiAnaXNBY2NlbGVyYXRlZCcgYnkgJ3JlbmRlcmluZ01vZGUnLiBTbworICAgICAgICBu
byBuZWVkIHRvIGNvbnZlcnQgb25lIHR5cGUgdG8gdGhlIG90aGVyLgorCisgICAgICAgICogSGVh
ZGVycy5jbWFrZToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpwcmVwYXJl
Rm9yRGlzcGxheSk6CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdl
QnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpDb25jcmV0ZUltYWdlQnVmZmVyOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6Q29uY3JldGVJbWFnZUJ1ZmZlcjo6Q29uY3JldGVJbWFnZUJ1
ZmZlcik6CisgICAgICAgIC0tIE1ha2UgQ29uY3JldGVJbWFnZUJ1ZmZlciBvd24gYW4gaW5zdGFu
Y2Ugb2YgSW1hZ2VCdWZmZXJCYWNrZW5kOjpQYXJhbWV0ZXJzLgorICAgICAgICAtLSBBZGQgbWV0
aG9kcyB0byBzZXQgYW5kIGNsZWFyIHRoZSBiYWNrZW5kIG9mIGFuIEltYWdlQnVmZmVyLgorCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlQnVmZmVyOjpjb21taXREcmF3aW5nQ29udGV4dCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZUJ1ZmZlcjo6c3VibWl0RGlzcGxheUxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VCdWZmZXI6OmRpZEZsdXNoKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpmbHVz
aERyYXdpbmdDb250ZXh0QW5kQ29tbWl0KTogRGVsZXRlZC4KKyAgICAgICAgLS0gRXhwb3NlIHRo
ZSBJbWFnZUJ1ZmZlckJhY2tlbmQgY3JlYXRpb24gcGFyYW1ldGVycyB0aHJvdWdoIG1ldGhvZHMu
CisgICAgICAgIC0tIEFkb3B0IHRoZSBuZXcgbmFtaW5nIHNjaGVtZSBmb3IgdGhlIHJlcGxheSBi
YWNrIG1ldGhvZHMuCisgICAgICAgIC0tIEV4cG9zZSBjb21taXREcmF3aW5nQ29udGV4dCgpIGFu
ZCBkaWRGbHVzaCgpIHNvIG5vIGNhc3RpbmcgaXMgbmVlZGVkCisgICAgICAgICAgIHdoZW4gY2Fs
bGluZyB0aGVzZSBmdW5jdGlvbnMgdGhyb3VnaCBSZW1vdGVJbWFnZUJ1ZmVyUHJveHkuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjpJbWFnZUJ1ZmZlckJhY2tlbmQpOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjp0b0JHUkFEYXRhIGNvbnN0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlQnVmZmVyQmFja2VuZDo6bWVtb3J5Q29zdCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OmJ5dGVzUGVyUm93IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQmFja2VuZDo6dG9CYWNrZW5kQ29vcmRpbmF0ZXMgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjpsb2dpY2FsU2l6ZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OnJlc29sdXRpb25T
Y2FsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OmNvbG9y
U3BhY2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjpwaXhl
bEZvcm1hdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6Omxv
Z2ljYWxSZWN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQmFja2VuZDo6
YmFja2VuZFJlY3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5k
OjpiYWNrZW5kU2l6ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1
ZmZlckJhY2tlbmQ6OmJhc2VUcmFuc2Zvcm0gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAtLSBB
ZGQgdGhlIHN0cnVjdHVyZSBJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnMuIAorICAgICAg
ICAtLSBNYWtlIEltYWdlQnVmZmVyQmFja2VuZCBvd24gYW4gaW5zdGFuY2Ugb2YgdGhpcyBzdHJ1
Y3R1cmUuCisgICAgICAgIC0tIE1ha2UgYmFja2VuZFNpemUoKSBhIHB1cmUgdmlydHVhbCBtZXRo
b2QuCisgICAgICAgIC0tIERlbGV0ZSBiYXNlVHJhbnNmb3JtKCkgc2luY2UgaXQgaXMgaW1wbGVt
ZW50ZWQgaW4gQ29uY3JldGVJbWFnZUJ1ZmZlci4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL1BsYXRmb3JtSW1hZ2VCdWZmZXIuaDoKKyAgICAgICAgKGlzVHlwZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQ6OmRyYXdQYXR0ZXJuKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJm
YWNlQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VT
dXJmYWNlQmFja2VuZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ2Fp
cm9JbWFnZVN1cmZhY2VCYWNrZW5kOjpJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2Vu
ZCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2Vu
ZDo6cGxhdGZvcm1UcmFuc2Zvcm1Db2xvclNwYWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZC5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2Vu
ZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQ6
OkltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQ6OmJhY2tlbmRTaXplIGNvbnN0KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNHQmFja2VuZDo6c2V0dXBDb250ZXh0
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ0dCYWNrZW5kOjpjb3B5SW1h
Z2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OnNpbmtJ
bnRvSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OmRyYXcp
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OmRyYXdQYXR0ZXJuKToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ0dCYWNrZW5kOjp0b0NGRGF0YSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNHQmFja2VuZDo6YmFzZVRyYW5zZm9ybSBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZm
ZXJDR0JhY2tlbmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZl
ckNHQml0bWFwQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNHQml0
bWFwQmFja2VuZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ0dCaXRt
YXBCYWNrZW5kOjpJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y29weU5hdGl2ZUltYWdlIGNvbnN0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFj
a2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6
OkltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1
ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmJhY2tlbmRTaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6ZHJhd0NvbnN1bWluZyk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmg6Cisg
ICAgICAgIC0tIENoYW5nZSB0aGUgY3JlYXRlKCkgbWV0aG9kcyB0byB0YWtlIGEgIlBhcmFtZXRl
cnMiIGFyZ3VtZW50LgorICAgICAgICAtLSBVc2UgdGhlIGJhY2tlbmQgbWV0aG9kIHRvIGFjY2Vz
cyB0aGUgIlBhcmFtZXRlcnMiIHN0cnVjdHVyZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEZsdXNoSWRlbnRpZmllci5oOiBBZGRlZC4KKyAg
ICAgICAgTW92ZSBEaXNwbGF5TGlzdEZsdXNoSWRlbnRpZmllciB0byBhIHNlcGFyYXRlIGZpbGUg
c28gaXQgY2FuIGJlIGluY2x1ZGVkCisgICAgICAgIGluIEltYWdlQnVmZmVyLmggd2l0aG91dCBo
YXZpbmcgdG8gaW5jbHVkZSBEaXNwbGF5TGlzdC5oLgorCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXIuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpJbWFnZUJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpJbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OkltYWdlQnVmZmVyOjppbml0aWFsRHJhd2luZ0NvbnRleHRDVE0p
OiBEZWxldGVkLgorICAgICAgICAtLSBObyBuZWVkIHRvIHBhc3MgdGhlICdzaXplJyBhcmd1bWVu
dCB0d2ljZSBpbiB0aGUgJ2NyZWF0ZScgbWV0aG9kcy4gVGhlCisgICAgICAgICAgIHN0cnVjdHVy
ZSBQYXJhbWV0ZXJzIGhhcyB0byBiZSBwYXNzZWQgdG8gdGhlIGNvbnN0cnVjdG9yIGFueXdheS4K
KyAgICAgICAgLS0gTm8gbmVlZCBmb3IgaW5pdGlhbERyYXdpbmdDb250ZXh0Q1RNKCkgc2luY2Ug
aXQgaXMgZXF1aXZhbGVudCB0byAKKyAgICAgICAgICAgYmFzZVRyYW5zZm9ybSgpLgorCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpjb3B5SW1h
Z2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6
OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OmRy
YXdQYXR0ZXJuKToKKyAgICAgICAgLS0gVXNlIHRoZSBiYWNrZW5kIG1ldGhvZCB0byBhY2Nlc3Mg
dGhlICJQYXJhbWV0ZXJzIiBzdHJ1Y3R1cmUuCisKIDIwMjAtMTEtMzAgIFlvdWVubiBGYWJsZXQg
IDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEludHJvZHVjZSBhbiBleHBlcmltZW50YWwg
ZmxhZyBzcGVjaWZpYyB0byBWUDkgcHJvZmlsZSAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGFkNzhjMDA1ODVjMmIx
Zjg4NzJmYWM5NWY1OWNjYWVjNDk2NGQ3MjMuLjgxZjdjODU2YmZkNzIzNjRiODNiMTZlNDgxYThl
NThhMTA5NGUxNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTkgQEAKKzIwMjAtMTEtMzAgIFNhaWQg
QWJvdS1IYWxsYXdhICA8c2FpZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9jZXNzXSBD
bGVhbiB1cCByZWNyZWF0aW5nIHRoZSBJbWFnZUJ1ZmZlckJhY2tlbmQgYmVjYXVzZSBvZiBHUFUg
Y3Jhc2hpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIxOTAwNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRoZXJlIGlzIG5vIG5lZWQgdG8gc3RvcmUgdGhlIGJhY2tlbmQgcGFyYW1ldGVycyBpbiBSZW1v
dGVJbWFnZUJ1ZmZlclByb3h5LgorICAgICAgICBUaGVzZSBwYXJhbWV0ZXJzIGFyZSBub3cgc3Rv
cmVkIGluIHRoZSBiYXNlIGNsYXNzIEltYWdlQnVmZmVyIGJlZm9yZSB0aGUKKyAgICAgICAgYmFj
a2VuZCBpcyBjcmVhdGVkLgorCisgICAgICAgIFJlbW92ZSB0aGUgdHJhaXRzIGRlZmluaXRpb24g
Zm9yIFJlbW90ZUltYWdlQnVmZmVyUHJveHkgdHlwZXMgYmVjYXVzZQorICAgICAgICB0aGV5IGFy
ZSB3cm9uZy4gQWxsIEltYWdlQnVmZmVycyBoYXZlIHZhbGlkIHJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcigpCisgICAgICAgIHJlZ2FyZGxlc3Mgd2hldGhlciB0aGV5IGFyZSByZW1vdGUgb3Ig
bm90LiBJbWFnZUJ1ZmZlcjo6c2V0QmFja2VuZCBhbmQKKyAgICAgICAgSW1hZ2VCdWZmZXI6OmNv
bW1pdEZsdXNoRGlzcGxheUxpc3QoKSBhcmUgbm93IGltcGxlbWVudGVkIGluIFdlYkNvcmUuIFNv
CisgICAgICAgIG5vIGNhc3RpbmcgaXMgbmVlZGVkLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFn
ZUJ1ZmZlcjo6UmVtb3RlSW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFn
ZUJ1ZmZlcjo6c3VibWl0RGlzcGxheUxpc3QpOiBEZWxldGVkLgorICAgICAgICBzdWJtaXREaXNw
bGF5TGlzdCgpIGlzIG5vdyBhIHZpcnR1YWwgbWV0aG9kIG9mIEltYWdlQnVmZmVyLiBTbyBtYWtl
IGl0CisgICAgICAgIHByaXZhdGUgYW5kIGlnbm9yZSB0aGUgcmV0dXJuIG9mIERpc3BsYXlMaXN0
OjpSZXBsYXllcjo6cmVwbGF5KCkgc2luY2UgCisgICAgICAgIHRoZSBjYWxsZXIgZG9lcyBub3Qg
dXNlIGl0LgorCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdC
YWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6ZGlk
Q3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVy
aW5nQmFja2VuZDo6YXBwbHlEaXNwbGF5TGlzdHNGcm9tSGFuZGxlKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6aW1hZ2VCdWZmZXJCYWNrZW5kV2FzQ3JlYXRlZCk6
IERlbGV0ZWQuCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdC
YWNrZW5kLmg6CisgICAgICAgIFJlbmFtZSAnaW1hZ2VCdWZmZXJCYWNrZW5kV2FzQ3JlYXRlZCgp
JyB0byAnZGlkQ3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kKCknCisgICAgICAgIHRvIGJlIGNvbnNp
c3RlbnQgd2l0aCAnZGlkRmx1c2goKScuCisKKyAgICAgICAgKiBTaGFyZWQvUmVtb3RlTGF5ZXJU
cmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVM
YXllckJhY2tpbmdTdG9yZTo6ZGlzcGxheSk6CisgICAgICAgIENhbGwgdGhlIGZ1bmN0aW9uIHdp
dGggdGhlIG5ldyBuYW1lIGFuZCBkZWxldGUgdGhlIEZJWE1FIGNvbW1lbnQuCisKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tl
bmQuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tl
bmQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFw
QmFja2VuZDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kKToKKyAgICAgICAgKFdl
YktpdDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpiYWNrZW5kU2l6ZSBjb25z
dCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFi
bGVCaXRtYXBCYWNrZW5kLmg6CisgICAgICAgIFVzZSB0aGUgbmV3IHN0cnVjdHVyZSAnSW1hZ2VC
dWZmZXJCYWNrZW5kOjpQYXJhbWV0ZXJzJy4gSW1wbGVtZW50IHRoZQorICAgICAgICB2aXJ0dWFs
IG1ldGhvZCAnYmFja2VuZFNpemUoKScuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9QbGF0Zm9ybVJlbW90ZUltYWdlQnVmZmVyUHJveHkuaDoKKyAgICAgICAgKGlzVHlwZSk6
IERlbGV0ZWQuCisgICAgICAgIERlbGV0ZSB0aGUgd3JvbmcgdHJhaXRzLgorCisgICAgICAgICog
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlclByb3h5OjpjcmVhdGUpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVJbWFnZUJ1ZmZlclByb3h5OjpSZW1vdGVJbWFnZUJ1ZmZlclByb3h5KToKKyAg
ICAgICAgVXNlIHRoZSBuZXcgc3RydWN0dXJlICdJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRl
cnMnLgorCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyUHJveHk6OmNsZWFyQmFj
a2VuZCk6IERlbGV0ZWQuCisgICAgICAgIFRoaXMgaXMgbm93IGltcGxlbWVudGVkIGluIENvbmNy
ZXRlSW1hZ2VCdWZmZXI6OmNsZWFyQmFja2VuZCgpLgorCisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUltYWdlQnVmZmVyUHJveHk6OmNyZWF0ZUJhY2tlbmQpOiBEZWxldGVkLgorICAgICAgICBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmRpZENyZWF0ZUltYWdlQnVmZmVyQmFja2VuZCgpIGNy
ZWF0ZXMgdGhlCisgICAgICAgIGJhY2tlbmQgYW5kIENvbmNyZXRlSW1hZ2VCdWZmZXI6OnNldEJh
Y2tlbmQoKSBzZXRzIGl0LgorCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyUHJv
eHk6OmRpZEZsdXNoKTogRGVsZXRlZC4KKyAgICAgICAgZGlkRmx1c2goKSBpcyBub3cgdmlydHVh
bCBzbyBpdCBjYW4gYmUgcHJpdmF0ZS4KKworICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1
ZmZlclByb3h5OjpzaXplIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
SW1hZ2VCdWZmZXJQcm94eTo6cmVuZGVyaW5nTW9kZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyUHJveHk6OmNvbG9yU3BhY2UgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlclByb3h5OjpwaXhlbEZvcm1h
dCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIFRoZXNlIGZ1bmN0aW9ucyBhcmUgbm93IGltcGxl
bWVudGVkIGluIENvbmNyZXRlSW1hZ2VCdWZmZXIuCisKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
SW1hZ2VCdWZmZXJQcm94eTo6c3VibWl0RGlzcGxheUxpc3QpOiBEZWxldGVkLgorICAgICAgICBz
dWJtaXREaXNwbGF5TGlzdCgpIGlzIG5vdyB2aXJ0dWFsLgorCisgICAgICAgICogV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpyZWVzdGFibGlzaEdQVVByb2Nl
c3NDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5Ojp3YWl0Rm9yRGlkQ3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpjcmVhdGVJbWFnZUJ1ZmZlcik6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6ZGlkQ3JlYXRlSW1hZ2VC
dWZmZXJCYWNrZW5kKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5OjpkaWRGbHVzaCk6CisgICAgICAgIChXZWJLaXQ6OnJlY3JlYXRlSW1hZ2VCdWZmZXIpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6Ondh
aXRGb3JJbWFnZUJ1ZmZlckJhY2tlbmRXYXNDcmVhdGVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjppbWFnZUJ1ZmZlckJhY2tlbmRXYXND
cmVhdGVkKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaDoKKyAgICAgICAgTm8gbmVlZCB0byBjYXN0IHRoZSBJ
bWFnZUJ1ZmZlciB0byBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5IHNpbmNlIGFsbCB3aGF0CisgICAg
ICAgIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSBuZWVkcyBjYW4gYmUgYWNjZXNzZWQgdGhy
b3VnaCB0aGUgYmFzZSBjbGFzcy4KKworICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgUmVuYW1l
ICdJbWFnZUJ1ZmZlckJhY2tlbmRXYXNDcmVhdGVkJyB0byAnRGlkQ3JlYXRlSW1hZ2VCdWZmZXJC
YWNrZW5kJworICAgICAgICB0byBiZSBjb25zaXN0ZW50IHdpdGggJ0RpZEZsdXNoJy4gTm8gbmVl
ZCB0byBwYXNzIHRoZSBjcmVhdGlvbiBwYXJhbWV0ZXJzCisgICAgICAgIHNpbmNlIHRoZXkgc2V0
IGluIHRoZSBDb25jcmV0ZUltYWdlQnVmZmVyLiBObyBuZWVkIHRvIHBhc3MgdGhlIGJhY2tlbmRT
aXplCisgICAgICAgIHNpbmNlIGl0IGNhbiBiZSByZXRyaWV2ZWQgdGhyb3VnaCB0aGUgYmFja2Vu
ZCBpdHNlbGYuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFn
ZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViS2l0OjpJ
bWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZSk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZh
Y2VCYWNrZW5kLmg6CisgICAgICAgIFVzZSB0aGUgbmV3IHN0cnVjdHVyZSAnSW1hZ2VCdWZmZXJC
YWNrZW5kOjpQYXJhbWV0ZXJzJy4KKwogMjAyMC0xMS0zMCAgWW91ZW5uIEZhYmxldCAgPHlvdWVu
bkBhcHBsZS5jb20+CiAKICAgICAgICAgSW50cm9kdWNlIGFuIGV4cGVyaW1lbnRhbCBmbGFnIHNw
ZWNpZmljIHRvIFZQOSBwcm9maWxlIDIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRl
cnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IDM3ODlhYTM4Mzk0
MGQyNTc0MTI0YmMyZmY0M2U3ZWVjNGFlOTUwZDUuLmRmYTI0NGZkY2Q5ZDczM2Q3Yzk1ODkyNzNl
MDY5YzdjMDA0ZmU3YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UK
KysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtMTI3MCw2ICsxMjcwLDcgQEAg
c2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd0dseXBoc1JlY29yZGVyLmgKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3aW5nQ29udGV4dC5oCisgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0Rmx1c2hJZGVudGlmaWVyLmgK
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJbWFnZUJ1ZmZl
ci5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1
ZmZlci5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRl
bVR5cGUuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IDM4NDUzOWM0ZDQ4MTNlNWU2ODg3MjQxODExYmI1NDk3MDA0MWI4MTUuLjU1
ZjRjMTM2OWZkNjc5MjZjNmZkOTY1ODJmMDc3MzBjNjRmYjZkNGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIxODcsNiArMjE4
Nyw3IEBACiAJCTcyN0E3RjNBMjQwNzhCODQwMDREMjkzMSAvKiBJbWFnZUJ1ZmZlcklPU3VyZmFj
ZUJhY2tlbmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDcyQkFDM0FCMjNFMUU1NDQwMDhENzQxQyAvKiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3Mjk5
QkM2NzIzRDZBNTMyMDBDQzY4ODMgLyogQWxwaGFQcmVtdWx0aXBsaWNhdGlvbi5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI5OUJDNjQyM0Q2ODZBNjAw
Q0M2ODgzIC8qIEFscGhhUHJlbXVsdGlwbGljYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3Mjk5QkM2ODIzRDZBNTNFMDBDQzY4ODMgLyog
UmVuZGVyaW5nTW9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNzI5OUJDNjYyM0Q2ODZDNjAwQ0M2ODgzIC8qIFJlbmRlcmluZ01vZGUuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3MjlDNDVFODI1NkUw
OTE5MDAwNDA3Q0YgLyogRGlzcGxheUxpc3RGbHVzaElkZW50aWZpZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyOUM0NUU2MjU2RTA1RjkwMDA0MDdD
RiAvKiBEaXNwbGF5TGlzdEZsdXNoSWRlbnRpZmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcyOUQwNTMwMjUzMTQyNDMwMDQyMjA5OCAvKiBS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDcyOUQwNTJFMjUzMTNFMjYwMDQyMjA5OCAvKiBSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk3MkE3M0JFRjI0NUEzRjkwMDAxQzlEMDMgLyogQW5pbWF0aW9uRnJhbWVS
YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjJB
ODE1QzIzOEZENTA1MDBDMDA1ODMgLyogQW5pbWF0aW9uRnJhbWVSYXRlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzJBQjlBMjEyNTVBOUZERTAw
RTZFQkYxIC8qIE5hdGl2ZUltYWdlUmVmZXJlbmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MkFCOUExRjI1NUE5RUE2MDBFNkVCRjEgLyogTmF0aXZl
SW1hZ2VSZWZlcmVuY2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwpAQCAtMTAwNzcsNiArMTAwNzgsNyBAQAogCQk3MjdBRkVEMzFBMkVBNkEwMDAwNDQy
RTggLyogRVhUc1JHQi5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRVhUc1JHQi5pZGw7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyOTlCQzY0MjNENjg2QTYwMENDNjg4MyAvKiBB
bHBoYVByZW11bHRpcGxpY2F0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFscGhhUHJlbXVsdGlwbGlj
YXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI5OUJDNjYyM0Q2ODZDNjAw
Q0M2ODgzIC8qIFJlbmRlcmluZ01vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyaW5nTW9kZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MjlDNDVFNjI1NkUwNUY5MDAwNDA3Q0Yg
LyogRGlzcGxheUxpc3RGbHVzaElkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGlzcGxheUxp
c3RGbHVzaElkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI5RDA1
MkUyNTMxM0UyNjAwNDIyMDk4IC8qIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNzJBQjlBMUYyNTVBOUVBNjAwRTZFQkYxIC8qIE5hdGl2ZUltYWdlUmVm
ZXJlbmNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5hdGl2ZUltYWdlUmVmZXJlbmNlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyQkFDM0E0MjNFMTczMjcwMDhENzQxQyAvKiBJbWFnZUJ1
ZmZlckJhY2tlbmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW1h
Z2VCdWZmZXJCYWNrZW5kLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE3Nzk3
LDYgKzE3Nzk5LDcgQEAKIAkJCQkxQ0FGNTZERTI1MzAyNDVBMDAxN0I0NzIgLyogRGlzcGxheUxp
c3REcmF3R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5jcHAgKi8sCiAJCQkJNTVDMEEyOTUyM0ZFMkNF
MDAwRjJDQjkzIC8qIERpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuY3BwICovLAogCQkJCTcyRUEw
OUY5MjNGQ0NDNkEwMDg1MDRBNSAvKiBEaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0LmggKi8sCisJ
CQkJNzI5QzQ1RTYyNTZFMDVGOTAwMDQwN0NGIC8qIERpc3BsYXlMaXN0Rmx1c2hJZGVudGlmaWVy
LmggKi8sCiAJCQkJNzJFQTA5RjcyM0ZDQ0IzRDAwODUwNEE1IC8qIERpc3BsYXlMaXN0SW1hZ2VC
dWZmZXIuaCAqLywKIAkJCQlGNDIyQjhCNjI1M0Y3MDY1MDA0RTc3RTggLyogRGlzcGxheUxpc3RJ
dGVtQnVmZmVyLmNwcCAqLywKIAkJCQlGNDIyQjhCNTI1M0Y3MDY1MDA0RTc3RTggLyogRGlzcGxh
eUxpc3RJdGVtQnVmZmVyLmggKi8sCkBAIC0zMTIyNCw2ICszMTIyNyw3IEBACiAJCQkJMDc5RDA4
NkIxNjJGMjFGOTAwREI4NjU4IC8qIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwN0I3MTE2RDFEODk5RTYzMDA5RjBGRkIgLyogQ2FwdHVyZURldmlj
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDdCNzExNkYxRDg5OUU2MzAwOUYwRkZCIC8qIENhcHR1
cmVEZXZpY2VNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKKwkJCQlFNEYwQkUzMTI1NzEyRjZFMDA5
RTc0MzEgLyogQ2FyZXRSZWN0Q29tcHV0YXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUNEQzcz
NDE1MTk3Nzg5NkQwMDQ2QkZDNSAvKiBDQVJpbmdCdWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUU0QUJBQkY1MjM2OEM2RUYwMEZBNDM0NSAvKiBDYXNjYWRlTGV2ZWwuaCBpbiBIZWFkZXJzICov
LAogCQkJCTU3MzAzQkJCMjAwNkM2RUUwMDM1NTk2NSAvKiBDQk9SQmluYXJ5LmggaW4gSGVhZGVy
cyAqLywKQEAgLTMxNjg2LDYgKzMxNjkwLDcgQEAKIAkJCQkwRkU1RkJEMzFDM0RENTFFMDAwN0Ey
Q0EgLyogRGlzcGxheUxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTFDQUY1NkRCMjUzMDFBQzgw
MDE3QjQ3MiAvKiBEaXNwbGF5TGlzdERyYXdHbHlwaHNSZWNvcmRlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNTVBRDA5NDAyNDA4OTY0MDAwREU0RDJGIC8qIERpc3BsYXlMaXN0RHJhd2luZ0NvbnRl
eHQuaCBpbiBIZWFkZXJzICovLAorCQkJCTcyOUM0NUU4MjU2RTA5MTkwMDA0MDdDRiAvKiBEaXNw
bGF5TGlzdEZsdXNoSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTVBRDA5M0UyNDA4
OTYzNTAwREU0RDJGIC8qIERpc3BsYXlMaXN0SW1hZ2VCdWZmZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCUY0RDQwQkM5MjU1NDYzQkYwMDcyMTM0OSAvKiBEaXNwbGF5TGlzdEl0ZW1CdWZmZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGRTVGQkQ1MUMzREQ1MUUwMDA3QTJDQSAvKiBEaXNwbGF5TGlz
dEl0ZW1zLmggaW4gSGVhZGVycyAqLywKQEAgLTM1MTIxLDcgKzM1MTI2LDYgQEAKIAkJCQlBMEVF
MERGODE0NEY4MjU1MDBGODBCMEQgLyogV2ViR0xEZWJ1Z1NoYWRlcnMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTZFM0ZBRThGMTQ3MzNGREIwMEU0MjMwNyAvKiBXZWJHTERlcHRoVGV4dHVyZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNUIzMDY5NUUxOEIzRDM0NTAwOTlENUU4IC8qIFdlYkdMRHJhd0J1
ZmZlcnMuaCBpbiBIZWFkZXJzICovLAotCQkJCUU0RjBCRTMxMjU3MTJGNkUwMDlFNzQzMSAvKiBD
YXJldFJlY3RDb21wdXRhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkVCRjBFNTUxMkE4OTI5
ODAwREIxNzA5IC8qIFdlYkdMRXh0ZW5zaW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUM3QjlD
RjEwNDJEMzJGMDAwOUQ0NDcgLyogV2ViR0xGcmFtZWJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNDlGRkJGM0YxMUM5M0VFMzAwNkE3MTE4IC8qIFdlYkdMTGF5ZXIuaCBpbiBIZWFkZXJzICov
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkRCYXNlLmNwcAppbmRleCBjZmY3ZTQ3OGZlMzY5M2ZkYTJlNTBiNWE2YTI3
YjYzMmNmMjVhZmJhLi5hZDk4M2VhODlmZjY5MmIzZmU3ZWVjNGIzYjg2YjUzNjJiZDlmNjEzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250
ZXh0MkRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkRCYXNlLmNwcApAQCAtMjA0Miw3ICsyMDQyLDcgQEAgR3JhcGhpY3NDb250
ZXh0KiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpkcmF3aW5nQ29udGV4dCgpIGNvbnN0
CiB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OnByZXBhcmVGb3JEaXNwbGF5KCkK
IHsKICAgICBpZiAoYXV0byBidWZmZXIgPSBjYW52YXNCYXNlKCkuYnVmZmVyKCkpCi0gICAgICAg
IGJ1ZmZlci0+Zmx1c2hEcmF3aW5nQ29udGV4dEFuZENvbW1pdCgpOworICAgICAgICBidWZmZXIt
PmNvbW1pdERyYXdpbmdDb250ZXh0KCk7CiB9CiAKIGJvb2wgQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEQmFzZTo6bmVlZHNQcmVwYXJhdGlvbkZvckRpc3BsYXkoKSBjb25zdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZlci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZlci5oCmlu
ZGV4IDgyNDI5OTAwMmVlNjYwZjBiYWUzZjE2M2FkMWM4OWIwM2Q0ZGRhNzkuLmYzMTBhNjJiNDYz
YzBiNThjOWRlZGIzMDY1ZmIyNzFjMGFjODJlZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmgKQEAgLTM2LDMwICsz
Niw0MSBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSW1hZ2VCdWZmZXJUeXBlID0g
Q29uY3JldGVJbWFnZUJ1ZmZlciwgdHlwZW5hbWUuLi4gQXJndW1lbnRzPgogICAgIHN0YXRpYyBS
ZWZQdHI8SW1hZ2VCdWZmZXJUeXBlPiBjcmVhdGUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9h
dCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4
ZWxGb3JtYXQsIGNvbnN0IEhvc3RXaW5kb3cqIGhvc3RXaW5kb3csIEFyZ3VtZW50cyYmLi4uIGFy
Z3VtZW50cykKICAgICB7Ci0gICAgICAgIGF1dG8gYmFja2VuZCA9IEJhY2tlbmRUeXBlOjpjcmVh
dGUoc2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCwgaG9zdFdp
bmRvdyk7CisgICAgICAgIGF1dG8gcGFyYW1ldGVycyA9IEltYWdlQnVmZmVyQmFja2VuZDo6UGFy
YW1ldGVycyB7IHNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQg
fTsKKyAgICAgICAgYXV0byBiYWNrZW5kID0gQmFja2VuZFR5cGU6OmNyZWF0ZShwYXJhbWV0ZXJz
LCBob3N0V2luZG93KTsKICAgICAgICAgaWYgKCFiYWNrZW5kKQogICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW1hZ2VCdWZmZXJUeXBlKFdU
Rk1vdmUoYmFja2VuZCksIHN0ZDo6Zm9yd2FyZDxBcmd1bWVudHM+KGFyZ3VtZW50cykuLi4pKTsK
KyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbWFnZUJ1ZmZlclR5cGUocGFyYW1ldGVycywg
V1RGTW92ZShiYWNrZW5kKSwgc3RkOjpmb3J3YXJkPEFyZ3VtZW50cz4oYXJndW1lbnRzKS4uLikp
OwogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEltYWdlQnVmZmVyVHlwZSA9IENvbmNy
ZXRlSW1hZ2VCdWZmZXIsIHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KICAgICBzdGF0aWMgUmVmUHRy
PEltYWdlQnVmZmVyVHlwZT4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgY29uc3QgR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBBcmd1bWVudHMmJi4uLiBhcmd1bWVudHMpCiAgICAgewot
ICAgICAgICBhdXRvIGJhY2tlbmQgPSBCYWNrZW5kVHlwZTo6Y3JlYXRlKHNpemUsIGNvbnRleHQp
OworICAgICAgICBhdXRvIHBhcmFtZXRlcnMgPSBJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRl
cnMgeyBzaXplLCAxLCBDb2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdSQTggfTsKKyAg
ICAgICAgYXV0byBiYWNrZW5kID0gQmFja2VuZFR5cGU6OmNyZWF0ZShwYXJhbWV0ZXJzLCBjb250
ZXh0KTsKICAgICAgICAgaWYgKCFiYWNrZW5kKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW1hZ2VCdWZmZXJUeXBlKFdURk1vdmUoYmFj
a2VuZCksIHN0ZDo6Zm9yd2FyZDxBcmd1bWVudHM+KGFyZ3VtZW50cykuLi4pKTsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBJbWFnZUJ1ZmZlclR5cGUocGFyYW1ldGVycywgV1RGTW92ZShi
YWNrZW5kKSwgc3RkOjpmb3J3YXJkPEFyZ3VtZW50cz4oYXJndW1lbnRzKS4uLikpOwogICAgIH0K
IAotICAgIGJvb2wgaXNBY2NlbGVyYXRlZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEJhY2tl
bmRUeXBlOjppc0FjY2VsZXJhdGVkOyB9CisgICAgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2Rl
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gQmFja2VuZFR5cGU6OnJlbmRlcmluZ01vZGU7IH0K
IAogcHJvdGVjdGVkOgotICAgIENvbmNyZXRlSW1hZ2VCdWZmZXIoc3RkOjp1bmlxdWVfcHRyPEJh
Y2tlbmRUeXBlPiYmIGJhY2tlbmQgPSBudWxscHRyLCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyID0gUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyOjpnZW5lcmF0ZSgpKQotICAgICAgICA6IG1fYmFja2VuZChXVEZNb3ZlKGJhY2tlbmQpKQor
ICAgIENvbmNyZXRlSW1hZ2VCdWZmZXIoY29uc3QgSW1hZ2VCdWZmZXJCYWNrZW5kOjpQYXJhbWV0
ZXJzJiBwYXJhbWV0ZXJzLCBzdGQ6OnVuaXF1ZV9wdHI8QmFja2VuZFR5cGU+JiYgYmFja2VuZCA9
IG51bGxwdHIsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIgPSBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI6OmdlbmVyYXRlKCkpCisgICAg
ICAgIDogbV9wYXJhbWV0ZXJzKHBhcmFtZXRlcnMpCisgICAgICAgICwgbV9iYWNrZW5kKFdURk1v
dmUoYmFja2VuZCkpCiAgICAgICAgICwgbV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIocmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogICAgIHsKICAgICB9CiAKKyAgICB2b2lkIHNldEJh
Y2tlbmQoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQmFja2VuZD4mJiBiYWNrZW5kKSBvdmVy
cmlkZQorICAgIHsKKyAgICAgICAgQVNTRVJUKCFtX2JhY2tlbmQpOworICAgICAgICBtX2JhY2tl
bmQgPSBzdGQ6OnVuaXF1ZV9wdHI8QmFja2VuZFR5cGU+IHsgc3RhdGljX2Nhc3Q8QmFja2VuZFR5
cGUqPihiYWNrZW5kLnJlbGVhc2UoKSkgfTsKKyAgICB9CisKKyAgICB2b2lkIGNsZWFyQmFja2Vu
ZCgpIG92ZXJyaWRlIHsgbV9iYWNrZW5kID0gbnVsbHB0cjsgfQorCiAgICAgdmlydHVhbCBCYWNr
ZW5kVHlwZSogZW5zdXJlQmFja2VuZENyZWF0ZWQoKSBjb25zdCB7IHJldHVybiBtX2JhY2tlbmQu
Z2V0KCk7IH0KIAogICAgIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3JlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcjsgfQpAQCAtNzgsMTkgKzg5LDExIEBAIHByb3RlY3RlZDoKICAgICAgICAg
fQogICAgIH0KIAotICAgIEFmZmluZVRyYW5zZm9ybSBiYXNlVHJhbnNmb3JtKCkgY29uc3Qgb3Zl
cnJpZGUKLSAgICB7Ci0gICAgICAgIGlmIChhdXRvKiBiYWNrZW5kID0gZW5zdXJlQmFja2VuZENy
ZWF0ZWQoKSkKLSAgICAgICAgICAgIHJldHVybiBiYWNrZW5kLT5iYXNlVHJhbnNmb3JtKCk7Ci0g
ICAgICAgIHJldHVybiB7IH07Ci0gICAgfQotCi0gICAgSW50U2l6ZSBsb2dpY2FsU2l6ZSgpIGNv
bnN0IG92ZXJyaWRlCi0gICAgewotICAgICAgICBpZiAoYXV0byogYmFja2VuZCA9IGVuc3VyZUJh
Y2tlbmRDcmVhdGVkKCkpCi0gICAgICAgICAgICByZXR1cm4gYmFja2VuZC0+bG9naWNhbFNpemUo
KTsKLSAgICAgICAgcmV0dXJuIHsgfTsKLSAgICB9CisgICAgSW50U2l6ZSBsb2dpY2FsU2l6ZSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEludFNpemUobV9wYXJhbWV0ZXJzLmxvZ2ljYWxTaXpl
KTsgfQorICAgIGZsb2F0IHJlc29sdXRpb25TY2FsZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IG1fcGFyYW1ldGVycy5yZXNvbHV0aW9uU2NhbGU7IH0KKyAgICBDb2xvclNwYWNlIGNvbG9yU3Bh
Y2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3BhcmFtZXRlcnMuY29sb3JTcGFjZTsgfQor
ICAgIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9w
YXJhbWV0ZXJzLnBpeGVsRm9ybWF0OyB9CisgICAgY29uc3QgSW1hZ2VCdWZmZXJCYWNrZW5kOjpQ
YXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9wYXJhbWV0
ZXJzOyB9CiAKICAgICBJbnRTaXplIGJhY2tlbmRTaXplKCkgY29uc3Qgb3ZlcnJpZGUKICAgICB7
CkBAIC05OSwxMSArMTAyLDExIEBAIHByb3RlY3RlZDoKICAgICAgICAgcmV0dXJuIHsgfTsKICAg
ICB9CiAKLSAgICBmbG9hdCByZXNvbHV0aW9uU2NhbGUoKSBjb25zdCBvdmVycmlkZQorICAgIEFm
ZmluZVRyYW5zZm9ybSBiYXNlVHJhbnNmb3JtKCkgY29uc3Qgb3ZlcnJpZGUKICAgICB7Ci0gICAg
ICAgIGlmIChhdXRvKiBiYWNrZW5kID0gZW5zdXJlQmFja2VuZENyZWF0ZWQoKSkKLSAgICAgICAg
ICAgIHJldHVybiBiYWNrZW5kLT5yZXNvbHV0aW9uU2NhbGUoKTsKLSAgICAgICAgcmV0dXJuIDE7
CisgICAgICAgIGlmIChCYWNrZW5kVHlwZTo6aXNPcmlnaW5BdFVwcGVyTGVmdENvcm5lcikKKyAg
ICAgICAgICAgIHJldHVybiBBZmZpbmVUcmFuc2Zvcm0oMSwgMCwgMCwgLTEsIDAsIGxvZ2ljYWxT
aXplKCkuaGVpZ2h0KCkpOworICAgICAgICByZXR1cm4geyB9OwogICAgIH0KIAogICAgIHNpemVf
dCBtZW1vcnlDb3N0KCkgY29uc3Qgb3ZlcnJpZGUKQEAgLTI5MSw2ICsyOTQsNyBAQCBwcm90ZWN0
ZWQ6CiAgICAgICAgICAgICBiYWNrZW5kLT5yZWxlYXNlQnVmZmVyVG9Qb29sKCk7CiAgICAgfQog
CisgICAgSW1hZ2VCdWZmZXJCYWNrZW5kOjpQYXJhbWV0ZXJzIG1fcGFyYW1ldGVyczsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8QmFja2VuZFR5cGU+IG1fYmFja2VuZDsKICAgICBSZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIgbV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI7CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKaW5kZXggNjJhM2Y3
ZmZhMzc3OGE4YzAxMzkwMTYyNTQzNzUzYWE3YmQyYzIxZC4uN2RmNDdiODFmYWI2YWU5OTI1YTcz
OGU0ZjdiMWY0ZjczODYwYmViMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZUJ1ZmZlci5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNwcmFnbWEgb25jZQogCisj
aW5jbHVkZSAiRGlzcGxheUxpc3RGbHVzaElkZW50aWZpZXIuaCIKICNpbmNsdWRlICJJbWFnZUJ1
ZmZlckJhY2tlbmQuaCIKICNpbmNsdWRlICJSZW5kZXJpbmdNb2RlLmgiCiAjaW5jbHVkZSAiUmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLmgiCkBAIC02MCwxMCArNjEsMTMgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBGbG9hdFJlY3QgY2xhbXBlZFJlY3QoY29uc3QgRmxvYXRSZWN0Jik7CiAKICAg
ICBzdGF0aWMgSW50U2l6ZSBjb21wYXRpYmxlQnVmZmVyU2l6ZShjb25zdCBGbG9hdFNpemUmLCBj
b25zdCBHcmFwaGljc0NvbnRleHQmKTsKLSAgICAKKwogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1
YWwgfkltYWdlQnVmZmVyKCkgPSBkZWZhdWx0OwogCi0gICAgdmlydHVhbCBib29sIGlzQWNjZWxl
cmF0ZWQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldEJhY2tlbmQoc3RkOjp1bmlx
dWVfcHRyPEltYWdlQnVmZmVyQmFja2VuZD4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjbGVh
ckJhY2tlbmQoKSA9IDA7CisKKyAgICB2aXJ0dWFsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9k
ZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBy
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiB7IH07IH0KICAgICAK
ICAgICB2aXJ0dWFsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCgpIGNvbnN0ID0gMDsKQEAgLTcy
LDEyICs3NiwxOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBEaXNwbGF5TGlzdDo6RHJhd2luZ0Nv
bnRleHQqIGRyYXdpbmdDb250ZXh0KCkgeyByZXR1cm4gbnVsbHB0cjsgfQogICAgIHZpcnR1YWwg
Ym9vbCBwcmVmZXJzUHJlcGFyYXRpb25Gb3JEaXNwbGF5KCkgeyByZXR1cm4gZmFsc2U7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgZmx1c2hEcmF3aW5nQ29udGV4dCgpIHsgfQotICAgIHZpcnR1YWwgdm9p
ZCBmbHVzaERyYXdpbmdDb250ZXh0QW5kQ29tbWl0KCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGNv
bW1pdERyYXdpbmdDb250ZXh0KCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHN1Ym1pdERpc3BsYXlM
aXN0KGNvbnN0IERpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYpIHsgfQorICAgIHZpcnR1YWwgdm9p
ZCBkaWRGbHVzaChEaXNwbGF5TGlzdDo6Rmx1c2hJZGVudGlmaWVyKSB7IH0KIAotICAgIHZpcnR1
YWwgQWZmaW5lVHJhbnNmb3JtIGJhc2VUcmFuc2Zvcm0oKSBjb25zdCA9IDA7CiAgICAgdmlydHVh
bCBJbnRTaXplIGxvZ2ljYWxTaXplKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgSW50U2l6ZSBi
YWNrZW5kU2l6ZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGZsb2F0IHJlc29sdXRpb25TY2Fs
ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIENvbG9yU3BhY2UgY29sb3JTcGFjZSgpIGNvbnN0
ID0gMDsKKyAgICB2aXJ0dWFsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0KCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgY29uc3QgSW1hZ2VCdWZmZXJCYWNrZW5kOjpQYXJhbWV0ZXJzJiBwYXJhbWV0
ZXJzKCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBJbnRTaXplIGJhY2tlbmRTaXplKCkgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgQWZmaW5lVHJhbnNmb3JtIGJhc2VUcmFuc2Zvcm0oKSBjb25z
dCA9IDA7CiAKICAgICB2aXJ0dWFsIHNpemVfdCBtZW1vcnlDb3N0KCkgY29uc3QgPSAwOwogICAg
IHZpcnR1YWwgc2l6ZV90IGV4dGVybmFsTWVtb3J5Q29zdCgpIGNvbnN0ID0gMDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQu
Y3BwCmluZGV4IDdmMGZlOWU2ZDk2NmU3NGI0NWY4NWFhZDBlM2IyZmI4NGQ5NDUwYjkuLjkzOTRl
N2JmZjQyOWJjMjFlZmNkZjNiMTQwMTExZjFhZTJjYTk0NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmNwcApAQCAt
MzEsMTIgKzMxLDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1JbWFnZUJ1ZmZlckJhY2tl
bmQ6OkltYWdlQnVmZmVyQmFja2VuZChjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25z
dCBJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNl
IGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0KQotICAgIDogbV9sb2dpY2FsU2l6
ZShsb2dpY2FsU2l6ZSkKLSAgICAsIG1fYmFja2VuZFNpemUoYmFja2VuZFNpemUpCi0gICAgLCBt
X3Jlc29sdXRpb25TY2FsZShyZXNvbHV0aW9uU2NhbGUpCi0gICAgLCBtX2NvbG9yU3BhY2UoY29s
b3JTcGFjZSkKLSAgICAsIG1fcGl4ZWxGb3JtYXQocGl4ZWxGb3JtYXQpCitJbWFnZUJ1ZmZlckJh
Y2tlbmQ6OkltYWdlQnVmZmVyQmFja2VuZChjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQor
ICAgIDogbV9wYXJhbWV0ZXJzKHBhcmFtZXRlcnMpCiB7CiB9CiAKQEAgLTk5LDE1ICs5NSwxNSBA
QCB2b2lkIEltYWdlQnVmZmVyQmFja2VuZDo6Y29udmVydFRvTHVtaW5hbmNlTWFzaygpCiAKIFZl
Y3Rvcjx1aW50OF90PiBJbWFnZUJ1ZmZlckJhY2tlbmQ6OnRvQkdSQURhdGEodm9pZCogZGF0YSkg
Y29uc3QKIHsKLSAgICBWZWN0b3I8dWludDhfdD4gcmVzdWx0KDQgKiBtX2xvZ2ljYWxTaXplLmFy
ZWEoKS51bnNhZmVHZXQoKSk7Ci0gICAgc2l6ZV90IGRlc3RCeXRlc1BlclJvdyA9IG1fbG9naWNh
bFNpemUud2lkdGgoKSAqIDQ7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3VsdCg0ICogbG9naWNh
bFNpemUoKS5hcmVhKCkudW5zYWZlR2V0KCkpOworICAgIHNpemVfdCBkZXN0Qnl0ZXNQZXJSb3cg
PSBsb2dpY2FsU2l6ZSgpLndpZHRoKCkgKiA0OwogICAgIHNpemVfdCBzcmNCeXRlc1BlclJvdyA9
IGJ5dGVzUGVyUm93KCk7CiAKICAgICB1aW50OF90KiBzcmNSb3dzID0gcmVpbnRlcnByZXRfY2Fz
dDx1aW50OF90Kj4oZGF0YSk7CiAKICAgICBjb3B5SW1hZ2VQaXhlbHMoCiAgICAgICAgIEFscGhh
UHJlbXVsdGlwbGljYXRpb246OlByZW11bHRpcGxpZWQsIHBpeGVsRm9ybWF0KCksIHNyY0J5dGVz
UGVyUm93LCBzcmNSb3dzLAotICAgICAgICBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11
bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpCR1JBOCwgZGVzdEJ5dGVzUGVyUm93LCByZXN1bHQuZGF0
YSgpLCBtX2xvZ2ljYWxTaXplKTsKKyAgICAgICAgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5w
cmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6QkdSQTgsIGRlc3RCeXRlc1BlclJvdywgcmVzdWx0
LmRhdGEoKSwgbG9naWNhbFNpemUoKSk7CiAKICAgICByZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5k
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQu
aAppbmRleCA1ODA2NzE1YTdiMmM4NzU3NjkwMmE3NzM1ODRkZjE4MDU4MjUxMDBmLi5lMjgwYjE3
YTY0MTlhNmJiYjBmMjk3YjMyZWI2NzQ1YWU0MWVkMmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaApAQCAtMzIsNiAr
MzIsNyBAQAogI2luY2x1ZGUgIkltYWdlUGFpbnRpbmdPcHRpb25zLmgiCiAjaW5jbHVkZSAiSW50
UmVjdC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtTGF5ZXIuaCIKKyNpbmNsdWRlICJSZW5kZXJpbmdN
b2RlLmgiCiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
IApAQCAtNzcsNiArNzgsMTMgQEAgcHVibGljOgogCiBjbGFzcyBJbWFnZUJ1ZmZlckJhY2tlbmQg
ewogcHVibGljOgorICAgIHN0cnVjdCBQYXJhbWV0ZXJzIHsKKyAgICAgICAgRmxvYXRTaXplIGxv
Z2ljYWxTaXplOworICAgICAgICBmbG9hdCByZXNvbHV0aW9uU2NhbGU7CisgICAgICAgIENvbG9y
U3BhY2UgY29sb3JTcGFjZTsKKyAgICAgICAgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQ7CisgICAg
fTsKKwogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgfkltYWdlQnVmZmVyQmFja2VuZCgpID0g
ZGVmYXVsdDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBJbnRTaXplIGNhbGN1bGF0ZUJh
Y2tlbmRTaXplKGNvbnN0IEZsb2F0U2l6ZSYsIGZsb2F0IHJlc29sdXRpb25TY2FsZSk7CkBAIC04
NCwxNCArOTIsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGZsdXNoQ29udGV4dCgpIHsgfQogCi0g
ICAgSW50U2l6ZSBsb2dpY2FsU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbG9naWNhbFNpemU7IH0K
LSAgICBJbnRTaXplIGJhY2tlbmRTaXplKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZW5kU2l6ZTsg
fQotICAgIGZsb2F0IHJlc29sdXRpb25TY2FsZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb2x1dGlv
blNjYWxlOyB9Ci0gICAgQ29sb3JTcGFjZSBjb2xvclNwYWNlKCkgY29uc3QgeyByZXR1cm4gbV9j
b2xvclNwYWNlOyB9Ci0gICAgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQoKSBjb25zdCB7IHJldHVy
biBtX3BpeGVsRm9ybWF0OyB9CisgICAgdmlydHVhbCBJbnRTaXplIGJhY2tlbmRTaXplKCkgY29u
c3QgPSAwOwogCi0gICAgdmlydHVhbCBBZmZpbmVUcmFuc2Zvcm0gYmFzZVRyYW5zZm9ybSgpIGNv
bnN0IHsgcmV0dXJuIEFmZmluZVRyYW5zZm9ybSgpOyB9Ci0gICAgdmlydHVhbCBzaXplX3QgbWVt
b3J5Q29zdCgpIGNvbnN0IHsgcmV0dXJuIDQgKiBtX2JhY2tlbmRTaXplLmFyZWEoKS51bnNhZmVH
ZXQoKTsgfQorICAgIHZpcnR1YWwgc2l6ZV90IG1lbW9yeUNvc3QoKSBjb25zdCB7IHJldHVybiA0
ICogYmFja2VuZFNpemUoKS5hcmVhKCkudW5zYWZlR2V0KCk7IH0KICAgICB2aXJ0dWFsIHNpemVf
dCBleHRlcm5hbE1lbW9yeUNvc3QoKSBjb25zdCB7IHJldHVybiAwOyB9CiAKICAgICB2aXJ0dWFs
IFJlZlB0cjxOYXRpdmVJbWFnZT4gY29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkpIGNv
bnN0ID0gMDsKQEAgLTEyNywyNCArMTMwLDI5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHN0ZDo6
dW5pcXVlX3B0cjxUaHJlYWRTYWZlSW1hZ2VCdWZmZXJGbHVzaGVyPiBjcmVhdGVGbHVzaGVyKCkg
eyByZXR1cm4gbnVsbHB0cjsgfQogICAgIAogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc09y
aWdpbkF0VXBwZXJMZWZ0Q29ybmVyID0gZmFsc2U7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBib29s
IGlzQWNjZWxlcmF0ZWQgPSBmYWxzZTsKKyAgICBzdGF0aWMgY29uc3RleHByIFJlbmRlcmluZ01v
ZGUgcmVuZGVyaW5nTW9kZSA9IFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQ7CiAKIHByb3Rl
Y3RlZDoKLSAgICBXRUJDT1JFX0VYUE9SVCBJbWFnZUJ1ZmZlckJhY2tlbmQoY29uc3QgRmxvYXRT
aXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29s
dXRpb25TY2FsZSwgQ29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQpOworICAgIFdFQkNPUkVfRVhQT1JU
IEltYWdlQnVmZmVyQmFja2VuZChjb25zdCBQYXJhbWV0ZXJzJik7CiAKLSAgICB2aXJ0dWFsIHVu
c2lnbmVkIGJ5dGVzUGVyUm93KCkgY29uc3QgeyByZXR1cm4gNCAqIG1fYmFja2VuZFNpemUud2lk
dGgoKTsgfQorICAgIHZpcnR1YWwgdW5zaWduZWQgYnl0ZXNQZXJSb3coKSBjb25zdCB7IHJldHVy
biA0ICogYmFja2VuZFNpemUoKS53aWR0aCgpOyB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PgogICAgIFQgdG9CYWNrZW5kQ29vcmRpbmF0ZXMoVCB0KSBjb25zdAogICAgIHsKICAgICAgICAg
c3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8VCwgSW50UG9pbnQ+Ojp2YWx1ZSB8fCBzdGQ6Omlz
X3NhbWU8VCwgSW50U2l6ZT46OnZhbHVlIHx8IHN0ZDo6aXNfc2FtZTxULCBJbnRSZWN0Pjo6dmFs
dWUpOwotICAgICAgICBpZiAobV9yZXNvbHV0aW9uU2NhbGUgIT0gMSkKLSAgICAgICAgICAgIHQu
c2NhbGUobV9yZXNvbHV0aW9uU2NhbGUpOworICAgICAgICBpZiAocmVzb2x1dGlvblNjYWxlKCkg
IT0gMSkKKyAgICAgICAgICAgIHQuc2NhbGUocmVzb2x1dGlvblNjYWxlKCkpOwogICAgICAgICBy
ZXR1cm4gdDsKICAgICB9CiAKLSAgICBJbnRSZWN0IGxvZ2ljYWxSZWN0KCkgY29uc3QgeyByZXR1
cm4gSW50UmVjdChJbnRQb2ludDo6emVybygpLCBtX2xvZ2ljYWxTaXplKTsgfTsKLSAgICBJbnRS
ZWN0IGJhY2tlbmRSZWN0KCkgY29uc3QgeyByZXR1cm4gSW50UmVjdChJbnRQb2ludDo6emVybygp
LCBtX2JhY2tlbmRTaXplKTsgfTsKKyAgICBJbnRTaXplIGxvZ2ljYWxTaXplKCkgY29uc3QgeyBy
ZXR1cm4gSW50U2l6ZShtX3BhcmFtZXRlcnMubG9naWNhbFNpemUpOyB9CisgICAgZmxvYXQgcmVz
b2x1dGlvblNjYWxlKCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0ZXJzLnJlc29sdXRpb25TY2Fs
ZTsgfQorICAgIENvbG9yU3BhY2UgY29sb3JTcGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1l
dGVycy5jb2xvclNwYWNlOyB9CisgICAgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQoKSBjb25zdCB7
IHJldHVybiBtX3BhcmFtZXRlcnMucGl4ZWxGb3JtYXQ7IH0KKworICAgIEludFJlY3QgbG9naWNh
bFJlY3QoKSBjb25zdCB7IHJldHVybiBJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIGxvZ2ljYWxT
aXplKCkpOyB9OworICAgIEludFJlY3QgYmFja2VuZFJlY3QoKSBjb25zdCB7IHJldHVybiBJbnRS
ZWN0KEludFBvaW50Ojp6ZXJvKCksIGJhY2tlbmRTaXplKCkpOyB9OwogCiAgICAgV0VCQ09SRV9F
WFBPUlQgdmlydHVhbCB2b2lkIGNvcHlJbWFnZVBpeGVscygKICAgICAgICAgQWxwaGFQcmVtdWx0
aXBsaWNhdGlvbiBzcmNBbHBoYUZvcm1hdCwgUGl4ZWxGb3JtYXQgc3JjUGl4ZWxGb3JtYXQsIHVu
c2lnbmVkIHNyY0J5dGVzUGVyUm93LCB1aW50OF90KiBzcmNSb3dzLApAQCAtMTU1LDExICsxNjMs
NyBAQCBwcm90ZWN0ZWQ6CiAgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPEltYWdlRGF0YT4gZ2V0
SW1hZ2VEYXRhKEFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBjb25zdCBJbnRS
ZWN0JiBzcmNSZWN0LCB2b2lkKiBkYXRhKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHB1dEltYWdlRGF0YShBbHBoYVByZW11bHRpcGxpY2F0aW9uIGlucHV0Rm9ybWF0LCBjb25zdCBJ
bWFnZURhdGEmLCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBv
aW50LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uIGRlc3RGb3JtYXQsIHZvaWQqIGRhdGEpOwogCi0g
ICAgSW50U2l6ZSBtX2xvZ2ljYWxTaXplOwotICAgIEludFNpemUgbV9iYWNrZW5kU2l6ZTsKLSAg
ICBmbG9hdCBtX3Jlc29sdXRpb25TY2FsZTsKLSAgICBDb2xvclNwYWNlIG1fY29sb3JTcGFjZTsK
LSAgICBQaXhlbEZvcm1hdCBtX3BpeGVsRm9ybWF0OworICAgIFBhcmFtZXRlcnMgbV9wYXJhbWV0
ZXJzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1JbWFnZUJ1ZmZlci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1JbWFnZUJ1ZmZlci5oCmluZGV4IGIwNWZh
NjUxNjk3MWQxNzY3MTMxZDU2YTQ2MzkzNTNlZjk0ZTQ5MjUuLjUyZGQ4M2NjOTNkNTU1M2IzNzll
NTg3ZDQzODVkNGY3ODA1OTQ0YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1BsYXRmb3JtSW1hZ2VCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybUltYWdlQnVmZmVyLmgKQEAgLTc1LDUgKzc1LDUgQEAgdXNp
bmcgRGlzcGxheUxpc3RBY2NlbGVyYXRlZEltYWdlQnVmZmVyID0gRGlzcGxheUxpc3Q6OkltYWdl
QnVmZmVyPEFjY2VsZXJhdGVkSW0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogU1BFQ0lBTEla
RV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpBY2NlbGVyYXRlZEltYWdlQnVmZmVyKQotICAg
IHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpJbWFnZUJ1ZmZlciYgYnVmZmVyKSB7
IHJldHVybiBidWZmZXIuaXNBY2NlbGVyYXRlZCgpOyB9CisgICAgc3RhdGljIGJvb2wgaXNUeXBl
KGNvbnN0IFdlYkNvcmU6OkltYWdlQnVmZmVyJiBidWZmZXIpIHsgcmV0dXJuIGJ1ZmZlci5yZW5k
ZXJpbmdNb2RlKCkgPT0gV2ViQ29yZTo6UmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQ7IH0KIFNQ
RUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5k
LmNwcAppbmRleCAxMmE1YjYwYTJlOTA0NmExOTU4OTJiYWY1ZGQ3ZWQ0OTYzM2IzZTc0Li5iM2Jm
ZDgxMjdiODdkMTY4OGVhYmI1Y2Y0YjJhNzFjMzM1OWNkMmQwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZm
ZXJDYWlyb0JhY2tlbmQuY3BwCkBAIC04MCw3ICs4MCw3IEBAIHZvaWQgSW1hZ2VCdWZmZXJDYWly
b0JhY2tlbmQ6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0
IEZsCiAgICAgfQogCiAgICAgaWYgKGF1dG8gaW1hZ2UgPSBjb3B5TmF0aXZlSW1hZ2UoJmRlc3RD
b250ZXh0ID09ICZjb250ZXh0KCkgPyBDb3B5QmFja2luZ1N0b3JlIDogRG9udENvcHlCYWNraW5n
U3RvcmUpKQotICAgICAgICBDYWlybzo6ZHJhd1BhdHRlcm4oKmRlc3RDb250ZXh0LnBsYXRmb3Jt
Q29udGV4dCgpLCBpbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpLCBtX2xvZ2ljYWxTaXplLCBk
ZXN0UmVjdCwgc3JjUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIG9wdGlvbnMpOworICAg
ICAgICBDYWlybzo6ZHJhd1BhdHRlcm4oKmRlc3RDb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLCBp
bWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpLCBsb2dpY2FsU2l6ZSgpLCBkZXN0UmVjdCwgc3Jj
UmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIG9wdGlvbnMpOwogfQogCiB2b2lkIEltYWdl
QnVmZmVyQ2Fpcm9CYWNrZW5kOjpjbGlwVG9NYXNrKEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRl
eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFj
a2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1
ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZC5jcHAKaW5kZXggMWNkMDc1NGIzOTE0M2FmNDI5
YjQ2ZDVkNzhlNDUxZjBkMWUwNzRjMy4uM2RhMTQ1NWViYTA2ZDY3OTRlMzMyNzAxN2RhYWZkNzli
YzU0NzJkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZh
Y2VCYWNrZW5kLmNwcApAQCAtNDEsMTMgKzQxLDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
V1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKEltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VC
YWNrZW5kKTsKIAotc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VC
YWNrZW5kPiBJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZDo6Y3JlYXRlKGNvbnN0
IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9y
U3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBjb25zdCBIb3N0V2luZG93KikKK3N0ZDo6
dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZD4gSW1hZ2VCdWZm
ZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiBwYXJh
bWV0ZXJzLCBjb25zdCBIb3N0V2luZG93KikKIHsKLSAgICBBU1NFUlQocGl4ZWxGb3JtYXQgPT0g
UGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBBU1NFUlQocGFyYW1ldGVycy5waXhlbEZvcm1hdCA9
PSBQaXhlbEZvcm1hdDo6QkdSQTgpOwogCiAgICAgc3RhdGljIGNhaXJvX3VzZXJfZGF0YV9rZXlf
dCBzX3N1cmZhY2VEYXRhS2V5OwogCi0gICAgSW50U2l6ZSBiYWNrZW5kU2l6ZSA9IGNhbGN1bGF0
ZUJhY2tlbmRTaXplKHNpemUsIHJlc29sdXRpb25TY2FsZSk7CisgICAgSW50U2l6ZSBiYWNrZW5k
U2l6ZSA9IGNhbGN1bGF0ZUJhY2tlbmRTaXplKHBhcmFtZXRlcnMubG9naWNhbFNpemUsIHBhcmFt
ZXRlcnMucmVzb2x1dGlvblNjYWxlKTsKICAgICBpZiAoYmFja2VuZFNpemUuaXNFbXB0eSgpIHx8
IGJhY2tlbmRTaXplLndpZHRoKCkgPiBjYWlyb01heEltYWdlU2l6ZSB8fCBiYWNrZW5kU2l6ZS5o
ZWlnaHQoKSA+IGNhaXJvTWF4SW1hZ2VTaXplKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApA
QCAtNjEsMTYgKzYxLDE2IEBAIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VT
dXJmYWNlQmFja2VuZD4gSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjCiAgICAgICAgIGZhc3RG
cmVlKGRhdGEpOwogICAgIH0pOwogCi0gICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1
ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZD4obmV3IEltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1
cmZhY2VCYWNrZW5kKHNpemUsIGJhY2tlbmRTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3Bh
Y2UsIHBpeGVsRm9ybWF0LCBXVEZNb3ZlKHN1cmZhY2UpKSk7CisgICAgcmV0dXJuIHN0ZDo6dW5p
cXVlX3B0cjxJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZD4obmV3IEltYWdlQnVm
ZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kKHBhcmFtZXRlcnMsIFdURk1vdmUoc3VyZmFjZSkp
KTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNr
ZW5kPiBJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZDo6Y3JlYXRlKGNvbnN0IEZs
b2F0U2l6ZSYgc2l6ZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0JikKK3N0ZDo6dW5pcXVlX3B0cjxJ
bWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZD4gSW1hZ2VCdWZmZXJDYWlyb0ltYWdl
U3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBjb25z
dCBHcmFwaGljc0NvbnRleHQmKQogewotICAgIHJldHVybiBJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VT
dXJmYWNlQmFja2VuZDo6Y3JlYXRlKHNpemUsIDEsIENvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9y
bWF0OjpCR1JBOCwgbnVsbHB0cik7CisgICAgcmV0dXJuIEltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1
cmZhY2VCYWNrZW5kOjpjcmVhdGUocGFyYW1ldGVycywgbnVsbHB0cik7CiB9CiAKLUltYWdlQnVm
ZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kOjpJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNl
QmFja2VuZChjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBJbnRTaXplJiBiYWNr
ZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFBp
eGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiYmIHN1cmZhY2Up
Ci0gICAgOiBJbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQobG9naWNhbFNpemUsIGJhY2tl
bmRTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0LCBXVEZNb3Zl
KHN1cmZhY2UpKQorSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQ6OkltYWdlQnVm
ZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMs
IFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+JiYgc3VyZmFjZSkKKyAgICA6IEltYWdlQnVmZmVyQ2Fp
cm9TdXJmYWNlQmFja2VuZChwYXJhbWV0ZXJzLCBXVEZNb3ZlKHN1cmZhY2UpKQogewogICAgIEFT
U0VSVChjYWlyb19zdXJmYWNlX2dldF90eXBlKG1fc3VyZmFjZS5nZXQoKSkgPT0gQ0FJUk9fU1VS
RkFDRV9UWVBFX0lNQUdFKTsKIH0KQEAgLTc5LDE2ICs3OSwxNiBAQCB2b2lkIEltYWdlQnVmZmVy
Q2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kOjpwbGF0Zm9ybVRyYW5zZm9ybUNvbG9yU3BhY2UoY29u
c3Qgc3RkOgogewogICAgIHVuc2lnbmVkIGNoYXIqIGRhdGFTcmMgPSBjYWlyb19pbWFnZV9zdXJm
YWNlX2dldF9kYXRhKG1fc3VyZmFjZS5nZXQoKSk7CiAgICAgaW50IHN0cmlkZSA9IGNhaXJvX2lt
YWdlX3N1cmZhY2VfZ2V0X3N0cmlkZShtX3N1cmZhY2UuZ2V0KCkpOwotICAgIGZvciAoaW50IHkg
PSAwOyB5IDwgbV9sb2dpY2FsU2l6ZS5oZWlnaHQoKTsgKyt5KSB7CisgICAgZm9yIChpbnQgeSA9
IDA7IHkgPCBsb2dpY2FsU2l6ZSgpLmhlaWdodCgpOyArK3kpIHsKICAgICAgICAgdW5zaWduZWQq
IHJvdyA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRyPHVuc2lnbmVkKj4oZGF0YVNyYyArIHN0cmlkZSAq
IHkpOwotICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8IG1fbG9naWNhbFNpemUud2lkdGgoKTsg
eCsrKSB7CisgICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgbG9naWNhbFNpemUoKS53aWR0aCgp
OyB4KyspIHsKICAgICAgICAgICAgIHVuc2lnbmVkKiBwaXhlbCA9IHJvdyArIHg7CiAgICAgICAg
ICAgICBhdXRvIHBpeGVsQ29tcG9uZW50cyA9IHVucHJlbXVsdGlwbGllZChhc1NSR0JBKFBhY2tl
ZENvbG9yOjpBUkdCIHsgKnBpeGVsIH0pKTsKICAgICAgICAgICAgIHBpeGVsQ29tcG9uZW50cyA9
IHsgbG9va1VwVGFibGVbcGl4ZWxDb21wb25lbnRzLnJlZF0sIGxvb2tVcFRhYmxlW3BpeGVsQ29t
cG9uZW50cy5ncmVlbl0sIGxvb2tVcFRhYmxlW3BpeGVsQ29tcG9uZW50cy5ibHVlXSwgcGl4ZWxD
b21wb25lbnRzLmFscGhhIH07CiAgICAgICAgICAgICAqcGl4ZWwgPSBQYWNrZWRDb2xvcjo6QVJH
QiB7IHByZW11bHRpcGxpZWRDZWlsaW5nKHBpeGVsQ29tcG9uZW50cykgfS52YWx1ZTsKICAgICAg
ICAgfQogICAgIH0KLSAgICBjYWlyb19zdXJmYWNlX21hcmtfZGlydHlfcmVjdGFuZ2xlKG1fc3Vy
ZmFjZS5nZXQoKSwgMCwgMCwgbV9sb2dpY2FsU2l6ZS53aWR0aCgpLCBtX2xvZ2ljYWxTaXplLmhl
aWdodCgpKTsKKyAgICBjYWlyb19zdXJmYWNlX21hcmtfZGlydHlfcmVjdGFuZ2xlKG1fc3VyZmFj
ZS5nZXQoKSwgMCwgMCwgbG9naWNhbFNpemUoKS53aWR0aCgpLCBsb2dpY2FsU2l6ZSgpLmhlaWdo
dCgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFj
ZUJhY2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdl
QnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kLmgKaW5kZXggZDE2ZDMzZWFjNDZjNWRmNjZm
YjhmYTJkOTU0OTEwZTJmOTExNWEwMy4uODY1Y2M2OWIyZDUzMzg1NDVmMzdlNDE5M2NiOTRmMTk4
MGJlNzNhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNl
QmFja2VuZC5oCkBAIC00MCwxMSArNDAsMTEgQEAgY2xhc3MgSW1hZ2VCdWZmZXJDYWlyb0ltYWdl
U3VyZmFjZUJhY2tlbmQgOiBwdWJsaWMgSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW4KICAg
ICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNr
ZW5kKTsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJm
YWNlQmFja2VuZCk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1
ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZD4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYsIGZs
b2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQsIGNvbnN0IEhvc3RX
aW5kb3cqKTsKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQ2Fpcm9JbWFn
ZVN1cmZhY2VCYWNrZW5kPiBjcmVhdGUoY29uc3QgRmxvYXRTaXplJiwgY29uc3QgR3JhcGhpY3ND
b250ZXh0Jik7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNhaXJvSW1h
Z2VTdXJmYWNlQmFja2VuZD4gY3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmLCBjb25zdCBIb3N0V2lu
ZG93Kik7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VT
dXJmYWNlQmFja2VuZD4gY3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmLCBjb25zdCBHcmFwaGljc0Nv
bnRleHQmKTsKIAogcHJpdmF0ZToKLSAgICBJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFj
a2VuZChjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBJbnRTaXplJiBiYWNrZW5k
U2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlLCBQaXhlbEZvcm1hdCwgUmVm
UHRyPGNhaXJvX3N1cmZhY2VfdD4mJik7CisgICAgSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFj
ZUJhY2tlbmQoY29uc3QgUGFyYW1ldGVycyYsIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+JiYpOwog
CiAgICAgdm9pZCBwbGF0Zm9ybVRyYW5zZm9ybUNvbG9yU3BhY2UoY29uc3Qgc3RkOjphcnJheTx1
aW50OF90LCAyNTY+JiBsb29rVXBUYWJsZSkgb3ZlcnJpZGU7CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZh
Y2VCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0lt
YWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZC5jcHAKaW5kZXggOWI4MjE2NGFlYTMzMDcxZTUz
NjFjNmZlMzliMWI4MjdjOWI2YjE1MC4uMGI3M2YxNGJhNzAwNWU1MjA1MGVkNTgyMTY0YTExNjM4
MDU0OTcxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQu
Y3BwCkBAIC00Myw4ICs0Myw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotSW1hZ2VCdWZm
ZXJDYWlyb1N1cmZhY2VCYWNrZW5kOjpJbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQoY29u
c3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50U2l6ZSYgYmFja2VuZFNpemUsIGZs
b2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBw
aXhlbEZvcm1hdCwgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4mJiBzdXJmYWNlKQotICAgIDogSW1h
Z2VCdWZmZXJDYWlyb0JhY2tlbmQobG9naWNhbFNpemUsIGJhY2tlbmRTaXplLCByZXNvbHV0aW9u
U2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0KQorSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VC
YWNrZW5kOjpJbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQoY29uc3QgUGFyYW1ldGVycyYg
cGFyYW1ldGVycywgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4mJiBzdXJmYWNlKQorICAgIDogSW1h
Z2VCdWZmZXJDYWlyb0JhY2tlbmQocGFyYW1ldGVycykKICAgICAsIG1fc3VyZmFjZShXVEZNb3Zl
KHN1cmZhY2UpKQogewogICAgIEFTU0VSVChjYWlyb19zdXJmYWNlX3N0YXR1cyhtX3N1cmZhY2Uu
Z2V0KCkpID09IENBSVJPX1NUQVRVU19TVUNDRVNTKTsKQEAgLTU5LDYgKzU5LDExIEBAIEdyYXBo
aWNzQ29udGV4dCYgSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kOjpjb250ZXh0KCkgY29u
c3QKICAgICByZXR1cm4gKm1fY29udGV4dDsKIH0KIAorSW50U2l6ZSBJbWFnZUJ1ZmZlckNhaXJv
U3VyZmFjZUJhY2tlbmQ6OmJhY2tlbmRTaXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4geyBjYWly
b19pbWFnZV9zdXJmYWNlX2dldF93aWR0aChtX3N1cmZhY2UuZ2V0KCkpLCBjYWlyb19pbWFnZV9z
dXJmYWNlX2dldF9oZWlnaHQobV9zdXJmYWNlLmdldCgpKSB9OworfQorCiB1bnNpZ25lZCBJbWFn
ZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQ6OmJ5dGVzUGVyUm93KCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfc3RyaWRlKG1fc3VyZmFjZS5nZXQoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1
ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZC5oCmluZGV4IDEyYWEyYjFj
ZTg4ZWU0MjY0NWZhNzcyZTY3OWY1ZDQxOTVhMjY3NDcuLjllOTNkZGU4NThlZjQzYjI4MmQ0Mzhj
YTVhNzY3ZmViY2JiZGRiY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNl
QmFja2VuZC5oCkBAIC00MCw2ICs0MCw4IEBAIGNsYXNzIEltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNl
QmFja2VuZCA6IHB1YmxpYyBJbWFnZUJ1ZmZlckNhaXJvQmFja2VuZCB7CiBwdWJsaWM6CiAgICAg
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KCkgY29uc3Qgb3ZlcnJpZGU7CiAKKyAgICBJbnRTaXpl
IGJhY2tlbmRTaXplKCkgY29uc3Qgb3ZlcnJpZGU7CisKICAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+
IGNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5KSBjb25zdCBvdmVycmlkZTsKIAogICAg
IFZlY3Rvcjx1aW50OF90PiB0b0JHUkFEYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CkBAIC00Nyw3ICs0
OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHB1dEltYWdlRGF0YShBbHBoYVByZW11bHRpcGxpY2F0
aW9uIGlucHV0Rm9ybWF0LCBjb25zdCBJbWFnZURhdGEmLCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0
LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uIGRlc3RG
b3JtYXQpIG92ZXJyaWRlOwogCiBwcm90ZWN0ZWQ6Ci0gICAgSW1hZ2VCdWZmZXJDYWlyb1N1cmZh
Y2VCYWNrZW5kKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEludFNpemUmIGJh
Y2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UsIFBpeGVsRm9ybWF0
LCBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiYmKTsKKyAgICBJbWFnZUJ1ZmZlckNhaXJvU3VyZmFj
ZUJhY2tlbmQoY29uc3QgUGFyYW1ldGVycyYsIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+JiYpOwog
CiAgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBjYWlyb1N1cmZhY2VDb2VyY2VUb0ltYWdlKCkgY29u
c3Q7CiAgICAgdW5zaWduZWQgYnl0ZXNQZXJSb3coKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCYWNr
ZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVy
Q0dCYWNrZW5kLmNwcAppbmRleCA1MDE3YmExMmM4YjQ4N2IwY2EwNmU1NDNiMTI5NjM2NWQ2ZGQy
YjJiLi5hYmJkMzY4ODc4MjY3ZDhjZjc3OGM2NjA2ZmRiMjgwM2RkNGExZDc5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFja2Vu
ZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZm
ZXJDR0JhY2tlbmQuY3BwCkBAIC03OSw4ICs3OSw4IEBAIHZvaWQgSW1hZ2VCdWZmZXJDR0JhY2tl
bmQ6OnNldHVwQ29udGV4dCgpIGNvbnN0CiB7CiAgICAgLy8gVGhlIGluaXRpYWwgQ1RNIG1hdGNo
ZXMgRGlzcGxheUxpc3Q6OlJlY29yZGVyOjpjbGlwVG9EcmF3aW5nQ29tbWFuZHMoKSdzIGluaXRp
YWwgQ1RNLgogICAgIGNvbnRleHQoKS5zY2FsZShGbG9hdFNpemUoMSwgLTEpKTsKLSAgICBjb250
ZXh0KCkudHJhbnNsYXRlKDAsIC1tX2JhY2tlbmRTaXplLmhlaWdodCgpKTsKLSAgICBjb250ZXh0
KCkuYXBwbHlEZXZpY2VTY2FsZUZhY3RvcihtX3Jlc29sdXRpb25TY2FsZSk7CisgICAgY29udGV4
dCgpLnRyYW5zbGF0ZSgwLCAtYmFja2VuZFNpemUoKS5oZWlnaHQoKSk7CisgICAgY29udGV4dCgp
LmFwcGx5RGV2aWNlU2NhbGVGYWN0b3IocmVzb2x1dGlvblNjYWxlKCkpOwogfQogCiBzdGF0aWMg
UmV0YWluUHRyPENHSW1hZ2VSZWY+IGNyZWF0ZUNyb3BwZWRJbWFnZUlmTmVjZXNzYXJ5KENHSW1h
Z2VSZWYgaW1hZ2UsIGNvbnN0IEludFNpemUmIGJhY2tlbmRTaXplKQpAQCAtMTEyLDMxICsxMTIs
MzIgQEAgc3RhdGljIFJlZlB0cjxJbWFnZT4gY3JlYXRlQml0bWFwSW1hZ2VBZnRlclNjYWxpbmdJ
Zk5lZWRlZChSZWZQdHI8TmF0aXZlSW1hZ2U+JiYKIFJlZlB0cjxJbWFnZT4gSW1hZ2VCdWZmZXJD
R0JhY2tlbmQ6OmNvcHlJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvciwgUHJlc2Vy
dmVSZXNvbHV0aW9uIHByZXNlcnZlUmVzb2x1dGlvbikgY29uc3QKIHsKICAgICBSZWZQdHI8TmF0
aXZlSW1hZ2U+IGltYWdlOwotICAgIGlmIChtX3Jlc29sdXRpb25TY2FsZSA9PSAxIHx8IHByZXNl
cnZlUmVzb2x1dGlvbiA9PSBQcmVzZXJ2ZVJlc29sdXRpb246OlllcykKKyAgICBpZiAocmVzb2x1
dGlvblNjYWxlKCkgPT0gMSB8fCBwcmVzZXJ2ZVJlc29sdXRpb24gPT0gUHJlc2VydmVSZXNvbHV0
aW9uOjpZZXMpCiAgICAgICAgIGltYWdlID0gY29weU5hdGl2ZUltYWdlKGNvcHlCZWhhdmlvcik7
CiAgICAgZWxzZQogICAgICAgICBpbWFnZSA9IGNvcHlOYXRpdmVJbWFnZShEb250Q29weUJhY2tp
bmdTdG9yZSk7Ci0gICAgcmV0dXJuIGNyZWF0ZUJpdG1hcEltYWdlQWZ0ZXJTY2FsaW5nSWZOZWVk
ZWQoV1RGTW92ZShpbWFnZSksIG1fbG9naWNhbFNpemUsIG1fYmFja2VuZFNpemUsIG1fcmVzb2x1
dGlvblNjYWxlLCBwcmVzZXJ2ZVJlc29sdXRpb24pOworICAgIHJldHVybiBjcmVhdGVCaXRtYXBJ
bWFnZUFmdGVyU2NhbGluZ0lmTmVlZGVkKFdURk1vdmUoaW1hZ2UpLCBsb2dpY2FsU2l6ZSgpLCBi
YWNrZW5kU2l6ZSgpLCByZXNvbHV0aW9uU2NhbGUoKSwgcHJlc2VydmVSZXNvbHV0aW9uKTsKIH0K
IAogUmVmUHRyPEltYWdlPiBJbWFnZUJ1ZmZlckNHQmFja2VuZDo6c2lua0ludG9JbWFnZShQcmVz
ZXJ2ZVJlc29sdXRpb24gcHJlc2VydmVSZXNvbHV0aW9uKQogewotICAgIHJldHVybiBjcmVhdGVC
aXRtYXBJbWFnZUFmdGVyU2NhbGluZ0lmTmVlZGVkKHNpbmtJbnRvTmF0aXZlSW1hZ2UoKSwgbV9s
b2dpY2FsU2l6ZSwgbV9iYWNrZW5kU2l6ZSwgbV9yZXNvbHV0aW9uU2NhbGUsIHByZXNlcnZlUmVz
b2x1dGlvbik7CisgICAgYXV0byBiYWNrZW5kU2l6ZSA9IHRoaXMtPmJhY2tlbmRTaXplKCk7Cisg
ICAgcmV0dXJuIGNyZWF0ZUJpdG1hcEltYWdlQWZ0ZXJTY2FsaW5nSWZOZWVkZWQoc2lua0ludG9O
YXRpdmVJbWFnZSgpLCBsb2dpY2FsU2l6ZSgpLCBiYWNrZW5kU2l6ZSwgcmVzb2x1dGlvblNjYWxl
KCksIHByZXNlcnZlUmVzb2x1dGlvbik7CiB9CiAKIHZvaWQgSW1hZ2VCdWZmZXJDR0JhY2tlbmQ6
OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYgb3B0aW9ucykKIHsKICAgICBGbG9hdFJlY3Qgc3JjUmVjdFNjYWxlZCA9IHNyY1JlY3Q7Ci0g
ICAgc3JjUmVjdFNjYWxlZC5zY2FsZShtX3Jlc29sdXRpb25TY2FsZSk7CisgICAgc3JjUmVjdFNj
YWxlZC5zY2FsZShyZXNvbHV0aW9uU2NhbGUoKSk7CiAKICAgICBpZiAoYXV0byBpbWFnZSA9IGNv
cHlOYXRpdmVJbWFnZSgmZGVzdENvbnRleHQgPT0gJmNvbnRleHQoKSA/IENvcHlCYWNraW5nU3Rv
cmUgOiBEb250Q29weUJhY2tpbmdTdG9yZSkpCi0gICAgICAgIGRlc3RDb250ZXh0LmRyYXdOYXRp
dmVJbWFnZSgqaW1hZ2UsIG1fYmFja2VuZFNpemUsIGRlc3RSZWN0LCBzcmNSZWN0U2NhbGVkLCBv
cHRpb25zKTsKKyAgICAgICAgZGVzdENvbnRleHQuZHJhd05hdGl2ZUltYWdlKCppbWFnZSwgYmFj
a2VuZFNpemUoKSwgZGVzdFJlY3QsIHNyY1JlY3RTY2FsZWQsIG9wdGlvbnMpOwogfQogCiB2b2lk
IEltYWdlQnVmZmVyQ0dCYWNrZW5kOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGRlc3RD
b250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQ
b2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGlu
Z09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgRmxvYXRSZWN0IGFkanVzdGVkU3JjUmVjdCA9IHNy
Y1JlY3Q7Ci0gICAgYWRqdXN0ZWRTcmNSZWN0LnNjYWxlKG1fcmVzb2x1dGlvblNjYWxlKTsKKyAg
ICBhZGp1c3RlZFNyY1JlY3Quc2NhbGUocmVzb2x1dGlvblNjYWxlKCkpOwogCiAgICAgaWYgKGF1
dG8gaW1hZ2UgPSBjb3B5SW1hZ2UoJmRlc3RDb250ZXh0ID09ICZjb250ZXh0KCkgPyBDb3B5QmFj
a2luZ1N0b3JlIDogRG9udENvcHlCYWNraW5nU3RvcmUpKQogICAgICAgICBpbWFnZS0+ZHJhd1Bh
dHRlcm4oZGVzdENvbnRleHQsIGRlc3RSZWN0LCBhZGp1c3RlZFNyY1JlY3QsIHBhdHRlcm5UcmFu
c2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBvcHRpb25zKTsKQEAgLTE1OSwxMSArMTYwLDYgQEAgdm9p
ZCBJbWFnZUJ1ZmZlckNHQmFja2VuZDo6Y2xpcFRvTWFzayhHcmFwaGljc0NvbnRleHQmIGRlc3RD
b250ZXh0LCBjb25zdCBGbG9hdFIKICAgICBDR0NvbnRleHRUcmFuc2xhdGVDVE0oY2dDb250ZXh0
LCAtZGVzdFJlY3QueCgpLCAtZGVzdFJlY3QubWF4WSgpKTsKIH0KIAotQWZmaW5lVHJhbnNmb3Jt
IEltYWdlQnVmZmVyQ0dCYWNrZW5kOjpiYXNlVHJhbnNmb3JtKCkgY29uc3QKLXsKLSAgICByZXR1
cm4gQWZmaW5lVHJhbnNmb3JtKDEsIDAsIDAsIC0xLCAwLCBtX2xvZ2ljYWxTaXplLmhlaWdodCgp
KTsKLX0KLQogUmV0YWluUHRyPENGRGF0YVJlZj4gSW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OnRvQ0ZE
YXRhKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSwgUHJl
c2VydmVSZXNvbHV0aW9uIHByZXNlcnZlUmVzb2x1dGlvbikgY29uc3QKIHsKICAgICBBU1NFUlQo
TUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlRm9yRW5jb2RpbmcobWlt
ZVR5cGUpKTsKQEAgLTE5MCw3ICsxODYsNyBAQCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBJbWFnZUJ1
ZmZlckNHQmFja2VuZDo6dG9DRkRhdGEoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aQogICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAgICAgaW1hZ2UgPSBhZG9wdENGKENHSW1h
Z2VDcmVhdGUocGl4ZWxBcnJheURpbWVuc2lvbnMud2lkdGgoKSwgcGl4ZWxBcnJheURpbWVuc2lv
bnMuaGVpZ2h0KCksIDgsIDMyLCA0ICogcGl4ZWxBcnJheURpbWVuc2lvbnMud2lkdGgoKSwgc1JH
QkNvbG9yU3BhY2VSZWYoKSwga0NHQml0bWFwQnl0ZU9yZGVyRGVmYXVsdCB8IGtDR0ltYWdlQWxw
aGFOb25lU2tpcExhc3QsIGRhdGFQcm92aWRlci5nZXQoKSwgMCwgZmFsc2UsIGtDR1JlbmRlcmlu
Z0ludGVudERlZmF1bHQpKTsKLSAgICB9IGVsc2UgaWYgKG1fcmVzb2x1dGlvblNjYWxlID09IDEg
fHwgcHJlc2VydmVSZXNvbHV0aW9uID09IFByZXNlcnZlUmVzb2x1dGlvbjo6WWVzKSB7CisgICAg
fSBlbHNlIGlmIChyZXNvbHV0aW9uU2NhbGUoKSA9PSAxIHx8IHByZXNlcnZlUmVzb2x1dGlvbiA9
PSBQcmVzZXJ2ZVJlc29sdXRpb246OlllcykgewogICAgICAgICBpbWFnZSA9IGNvcHlOYXRpdmVJ
bWFnZShDb3B5QmFja2luZ1N0b3JlKS0+cGxhdGZvcm1JbWFnZSgpOwogICAgICAgICBpbWFnZSA9
IGNyZWF0ZUNyb3BwZWRJbWFnZUlmTmVjZXNzYXJ5KGltYWdlLmdldCgpLCBiYWNrZW5kU2l6ZSgp
KTsKICAgICB9IGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JhY2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCYWNrZW5kLmgKaW5kZXggMWUwN2ZkYzY0NDNmZGMw
OGY2YWY2M2UwODgzZWIzMjA1M2U0ZDU5Ny4uYjI2YWUwODQzNDdiOWUyMzM0MDQ2MDBjMmVhNGE0
YTI4YjFlMWJhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VCdWZmZXJDR0JhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5oCkBAIC00MSw4ICs0MSw2IEBAIHB1Ymxp
YzoKICAgICAKICAgICB2b2lkIGNsaXBUb01hc2soR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0UmVjdCkgb3ZlcnJpZGU7CiAKLSAgICBBZmZpbmVUcmFuc2Zvcm0gYmFzZVRy
YW5zZm9ybSgpIGNvbnN0IG92ZXJyaWRlOwotCiAgICAgU3RyaW5nIHRvRGF0YVVSTChjb25zdCBT
dHJpbmcmIG1pbWVUeXBlLCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHksIFByZXNlcnZlUmVzb2x1
dGlvbikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHRvRGF0YShjb25zdCBT
dHJpbmcmIG1pbWVUeXBlLCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHkpIGNvbnN0IG92ZXJyaWRl
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFn
ZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5jcHAKaW5kZXggZjIxOGYyN2YyZjUz
YzVhNGFkYmI2YTVhZWRjM2M0OWU0OGNkNjNhNC4uYmE0MTRmM2NiYTVkNGUxMjNjNGJiM2Y0NDgw
MGZhOThkYWJiNmZhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmNwcApAQCAt
MzksMTEgKzM5LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9D
QVRFRF9JTVBMKEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kKTsKIAotc3RkOjp1bmlxdWVfcHRy
PEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kPiBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6
Y3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xv
clNwYWNlIGNvbG9yU3BhY2UsIENHQ29sb3JTcGFjZVJlZiBjZ0NvbG9yU3BhY2UsIFBpeGVsRm9y
bWF0IHBpeGVsRm9ybWF0LCBjb25zdCBIb3N0V2luZG93KikKK3N0ZDo6dW5pcXVlX3B0cjxJbWFn
ZUJ1ZmZlckNHQml0bWFwQmFja2VuZD4gSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNyZWF0
ZShjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBDR0NvbG9yU3BhY2VSZWYgY2dDb2xvclNw
YWNlLCBjb25zdCBIb3N0V2luZG93KikKIHsKLSAgICBBU1NFUlQocGl4ZWxGb3JtYXQgPT0gUGl4
ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBBU1NFUlQocGFyYW1ldGVycy5waXhlbEZvcm1hdCA9PSBQ
aXhlbEZvcm1hdDo6QkdSQTgpOwogCi0gICAgSW50U2l6ZSBiYWNrZW5kU2l6ZSA9IGNhbGN1bGF0
ZUJhY2tlbmRTaXplKHNpemUsIHJlc29sdXRpb25TY2FsZSk7CisgICAgSW50U2l6ZSBiYWNrZW5k
U2l6ZSA9IGNhbGN1bGF0ZUJhY2tlbmRTaXplKHBhcmFtZXRlcnMubG9naWNhbFNpemUsIHBhcmFt
ZXRlcnMucmVzb2x1dGlvblNjYWxlKTsKICAgICBpZiAoYmFja2VuZFNpemUuaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtNzAsMjQgKzcwLDI0IEBAIHN0ZDo6dW5pcXVl
X3B0cjxJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZD4gSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tl
bmQ6OmNyZWF0ZShjCiAKICAgICBhdXRvIGRhdGFQcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJv
dmlkZXJDcmVhdGVXaXRoRGF0YSgwLCBkYXRhLCBudW1CeXRlcywgcmVsZWFzZUltYWdlRGF0YSkp
OwogCi0gICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2Vu
ZD4obmV3IEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kKHNpemUsIGJhY2tlbmRTaXplLCByZXNv
bHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0LCBkYXRhLCBXVEZNb3ZlKGRhdGFQ
cm92aWRlciksIFdURk1vdmUoY29udGV4dCkpKTsKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRy
PEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kPihuZXcgSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tl
bmQocGFyYW1ldGVycywgZGF0YSwgV1RGTW92ZShkYXRhUHJvdmlkZXIpLCBXVEZNb3ZlKGNvbnRl
eHQpKSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZD4g
SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHNpemUs
IGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKK3N0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1
ZmZlckNHQml0bWFwQmFja2VuZD4gSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNyZWF0ZShj
b25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBjb25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQpCiB7CiAgICAgaWYgKGF1dG8gY2dDb2xvclNwYWNlID0gY29udGV4dENvbG9yU3BhY2UoY29u
dGV4dCkpCi0gICAgICAgIHJldHVybiBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y3JlYXRl
KHNpemUsIDEsIENvbG9yU3BhY2U6OlNSR0IsIGNnQ29sb3JTcGFjZS5nZXQoKSwgUGl4ZWxGb3Jt
YXQ6OkJHUkE4LCBudWxscHRyKTsKLSAgICAKLSAgICByZXR1cm4gSW1hZ2VCdWZmZXJDR0JpdG1h
cEJhY2tlbmQ6OmNyZWF0ZShzaXplLCAxLCBDb2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6
QkdSQTgsIG51bGxwdHIpOworICAgICAgICByZXR1cm4gSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tl
bmQ6OmNyZWF0ZShwYXJhbWV0ZXJzLCBjZ0NvbG9yU3BhY2UuZ2V0KCksIG51bGxwdHIpOworCisg
ICAgcmV0dXJuIEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpjcmVhdGUocGFyYW1ldGVycywg
bnVsbHB0cik7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2Vu
ZD4gSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHNp
emUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBQaXhlbEZv
cm1hdCBwaXhlbEZvcm1hdCwgY29uc3QgSG9zdFdpbmRvdyogaG9zdFdpbmRvdykKK3N0ZDo6dW5p
cXVlX3B0cjxJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZD4gSW1hZ2VCdWZmZXJDR0JpdG1hcEJh
Y2tlbmQ6OmNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBjb25zdCBIb3N0V2lu
ZG93KiBob3N0V2luZG93KQogewotICAgIHJldHVybiBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2Vu
ZDo6Y3JlYXRlKHNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgY2FjaGVkQ0dDb2xv
clNwYWNlKGNvbG9yU3BhY2UpLCBwaXhlbEZvcm1hdCwgaG9zdFdpbmRvdyk7CisgICAgcmV0dXJu
IEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpjcmVhdGUocGFyYW1ldGVycywgY2FjaGVkQ0dD
b2xvclNwYWNlKHBhcmFtZXRlcnMuY29sb3JTcGFjZSksIGhvc3RXaW5kb3cpOwogfQogCi1JbWFn
ZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQoY29uc3Qg
RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0
IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhl
bEZvcm1hdCwgdm9pZCogZGF0YSwgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiYmIGRhdGFQ
cm92aWRlciwgc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzQ29udGV4dD4mJiBjb250ZXh0KQotICAg
IDogSW1hZ2VCdWZmZXJDR0JhY2tlbmQobG9naWNhbFNpemUsIGJhY2tlbmRTaXplLCByZXNvbHV0
aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0KQorSW1hZ2VCdWZmZXJDR0JpdG1hcEJh
Y2tlbmQ6OkltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFt
ZXRlcnMsIHZvaWQqIGRhdGEsIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4mJiBkYXRhUHJv
dmlkZXIsIHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0NvbnRleHQ+JiYgY29udGV4dCkKKyAgICA6
IEltYWdlQnVmZmVyQ0dCYWNrZW5kKHBhcmFtZXRlcnMpCiAgICAgLCBtX2RhdGEoZGF0YSkKICAg
ICAsIG1fZGF0YVByb3ZpZGVyKFdURk1vdmUoZGF0YVByb3ZpZGVyKSkKICAgICAsIG1fY29udGV4
dChXVEZNb3ZlKGNvbnRleHQpKQpAQCAtMTAzLDYgKzEwMywxMSBAQCBHcmFwaGljc0NvbnRleHQm
IEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpjb250ZXh0KCkgY29uc3QKICAgICByZXR1cm4g
Km1fY29udGV4dDsKIH0KIAorSW50U2l6ZSBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6YmFj
a2VuZFNpemUoKSBjb25zdAoreworICAgIHJldHVybiB7IHN0YXRpY19jYXN0PGludD4oQ0dCaXRt
YXBDb250ZXh0R2V0V2lkdGgoY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpKSksIHN0YXRpY19j
YXN0PGludD4oQ0dCaXRtYXBDb250ZXh0R2V0SGVpZ2h0KGNvbnRleHQoKS5wbGF0Zm9ybUNvbnRl
eHQoKSkpIH07Cit9CisKIFJlZlB0cjxOYXRpdmVJbWFnZT4gSW1hZ2VCdWZmZXJDR0JpdG1hcEJh
Y2tlbmQ6OmNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvcikgY29u
c3QKIHsKICAgICBzd2l0Y2ggKGNvcHlCZWhhdmlvcikgewpAQCAtMTEwLDkgKzExNSwxMCBAQCBS
ZWZQdHI8TmF0aXZlSW1hZ2U+IEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpjb3B5TmF0aXZl
SW1hZ2UoQmFja2luZ1N0b3JlQ29weQogICAgICAgICByZXR1cm4gTmF0aXZlSW1hZ2U6OmNyZWF0
ZShhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZUltYWdlKGNvbnRleHQoKS5wbGF0Zm9ybUNv
bnRleHQoKSkpKTsKIAogICAgIGNhc2UgRG9udENvcHlCYWNraW5nU3RvcmU6CisgICAgICAgIGF1
dG8gYmFja2VuZFNpemUgPSB0aGlzLT5iYWNrZW5kU2l6ZSgpOwogICAgICAgICByZXR1cm4gTmF0
aXZlSW1hZ2U6OmNyZWF0ZShhZG9wdENGKENHSW1hZ2VDcmVhdGUoCi0gICAgICAgICAgICBtX2Jh
Y2tlbmRTaXplLndpZHRoKCksIG1fYmFja2VuZFNpemUuaGVpZ2h0KCksIDgsIDMyLCBieXRlc1Bl
clJvdygpLAotICAgICAgICAgICAgY2FjaGVkQ0dDb2xvclNwYWNlKG1fY29sb3JTcGFjZSksIGtD
R0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkRmlyc3QgfCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkhvc3Qs
IG1fZGF0YVByb3ZpZGVyLmdldCgpLAorICAgICAgICAgICAgYmFja2VuZFNpemUud2lkdGgoKSwg
YmFja2VuZFNpemUuaGVpZ2h0KCksIDgsIDMyLCBieXRlc1BlclJvdygpLAorICAgICAgICAgICAg
Y2FjaGVkQ0dDb2xvclNwYWNlKGNvbG9yU3BhY2UoKSksIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBs
aWVkRmlyc3QgfCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkhvc3QsIG1fZGF0YVByb3ZpZGVyLmdldCgp
LAogICAgICAgICAgICAgMCwgdHJ1ZSwga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVsdCkpKTsKICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5oCmluZGV4IGU5MmM5MmY1ZDUwZmRl
NTdhYWEzY2E1YzJmZjI5ZGYwOGI4NjRkMjkuLjhmMzMyM2U3ZGNlYzYzNTVhY2I3ZDViOTljMjA3
ODc3MTVjODZiYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQuaApAQCAtMzYsMTIg
KzM2LDE0IEBAIGNsYXNzIEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kIDogcHVibGljIEltYWdl
QnVmZmVyQ0dCYWNrZW5kIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEltYWdlQnVmZmVy
Q0dCaXRtYXBCYWNrZW5kKTsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbWFnZUJ1ZmZlckNH
Qml0bWFwQmFja2VuZCk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFn
ZUJ1ZmZlckNHQml0bWFwQmFja2VuZD4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYsIGZsb2F0IHJl
c29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSwgQ0dDb2xvclNwYWNlUmVmLCBQaXhlbEZvcm1hdCwg
Y29uc3QgSG9zdFdpbmRvdyopOwotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZm
ZXJDR0JpdG1hcEJhY2tlbmQ+IGNyZWF0ZShjb25zdCBGbG9hdFNpemUmLCBmbG9hdCByZXNvbHV0
aW9uU2NhbGUsIENvbG9yU3BhY2UsIFBpeGVsRm9ybWF0LCBjb25zdCBIb3N0V2luZG93Kik7Ci0g
ICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZD4gY3Jl
YXRlKGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpOworICAgIHN0YXRp
YyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ+IGNyZWF0ZShjb25z
dCBQYXJhbWV0ZXJzJiwgQ0dDb2xvclNwYWNlUmVmLCBjb25zdCBIb3N0V2luZG93Kik7CisgICAg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZD4gY3JlYXRl
KGNvbnN0IFBhcmFtZXRlcnMmLCBjb25zdCBIb3N0V2luZG93Kik7CisgICAgc3RhdGljIHN0ZDo6
dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZD4gY3JlYXRlKGNvbnN0IFBhcmFt
ZXRlcnMmLCBjb25zdCBHcmFwaGljc0NvbnRleHQmKTsKIAogICAgIEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCgpIGNvbnN0IG92ZXJyaWRlOwogCisgICAgSW50U2l6ZSBiYWNrZW5kU2l6ZSgpIGNv
bnN0IG92ZXJyaWRlOworCiAgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBjb3B5TmF0aXZlSW1hZ2Uo
QmFja2luZ1N0b3JlQ29weSA9IENvcHlCYWNraW5nU3RvcmUpIGNvbnN0IG92ZXJyaWRlOwogCiAg
ICAgVmVjdG9yPHVpbnQ4X3Q+IHRvQkdSQURhdGEoKSBjb25zdCBvdmVycmlkZTsKQEAgLTUyLDcg
KzU0LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc09yaWdpbkF0VXBw
ZXJMZWZ0Q29ybmVyID0gdHJ1ZTsKIAogcHJpdmF0ZToKLSAgICBJbWFnZUJ1ZmZlckNHQml0bWFw
QmFja2VuZChjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBJbnRTaXplJiBwaHlz
aWNhbFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQs
IHZvaWQqIGRhdGEsIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4mJiwgc3RkOjp1bmlxdWVf
cHRyPEdyYXBoaWNzQ29udGV4dD4mJik7CisgICAgSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQo
Y29uc3QgUGFyYW1ldGVycyYsIHZvaWQqIGRhdGEsIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJl
Zj4mJiwgc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzQ29udGV4dD4mJik7CiAKICAgICB2b2lkKiBt
X2RhdGE7CiAgICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiBtX2RhdGFQcm92aWRlcjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVm
ZmVySU9TdXJmYWNlQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuY3BwCmluZGV4IGFkM2ZmMWQ3OTc3MjAz
NzY0MGUyZDY5OTU0MTI4ODYwYjc3NDhjMzYuLjdhNjljNTUzYzAwMTM2ZDk3OGY0NGM5MzJlNGFl
NWYxZTY0ZmQ1OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmNwcApAQCAt
NjQsMTMgKzY0LDEzIEBAIFJldGFpblB0cjxDR0NvbG9yU3BhY2VSZWY+IEltYWdlQnVmZmVySU9T
dXJmYWNlQmFja2VuZDo6Y29udGV4dENvbG9yU3BhY2UoY29uc3QKICAgICByZXR1cm4gSW1hZ2VC
dWZmZXJDR0JhY2tlbmQ6OmNvbnRleHRDb2xvclNwYWNlKGNvbnRleHQpOwogfQogCi1zdGQ6OnVu
aXF1ZV9wdHI8SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kPiBJbWFnZUJ1ZmZlcklPU3VyZmFj
ZUJhY2tlbmQ6OmNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25T
Y2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBDR0NvbG9yU3BhY2VSZWYgY2dDb2xvclNwYWNl
LCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgY29uc3QgSG9zdFdpbmRvdyogaG9zdFdpbmRvdykK
K3N0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ+IEltYWdlQnVmZmVy
SU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIENH
Q29sb3JTcGFjZVJlZiBjZ0NvbG9yU3BhY2UsIGNvbnN0IEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cp
CiB7Ci0gICAgSW50U2l6ZSBiYWNrZW5kU2l6ZSA9IGNhbGN1bGF0ZUJhY2tlbmRTaXplKHNpemUs
IHJlc29sdXRpb25TY2FsZSk7CisgICAgSW50U2l6ZSBiYWNrZW5kU2l6ZSA9IGNhbGN1bGF0ZUJh
Y2tlbmRTaXplKHBhcmFtZXRlcnMubG9naWNhbFNpemUsIHBhcmFtZXRlcnMucmVzb2x1dGlvblNj
YWxlKTsKICAgICBpZiAoYmFja2VuZFNpemUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAotICAgIGF1dG8gc3VyZmFjZSA9IElPU3VyZmFjZTo6Y3JlYXRlKGJhY2tlbmRTaXpl
LCBiYWNrZW5kU2l6ZSwgY2dDb2xvclNwYWNlLCBJT1N1cmZhY2U6OmZvcm1hdEZvclBpeGVsRm9y
bWF0KHBpeGVsRm9ybWF0KSk7CisgICAgYXV0byBzdXJmYWNlID0gSU9TdXJmYWNlOjpjcmVhdGUo
YmFja2VuZFNpemUsIGJhY2tlbmRTaXplLCBjZ0NvbG9yU3BhY2UsIElPU3VyZmFjZTo6Zm9ybWF0
Rm9yUGl4ZWxGb3JtYXQocGFyYW1ldGVycy5waXhlbEZvcm1hdCkpOwogICAgIGlmICghc3VyZmFj
ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTgwLDI0ICs4MCwyNCBAQCBzdGQ6OnVu
aXF1ZV9wdHI8SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kPiBJbWFnZUJ1ZmZlcklPU3VyZmFj
ZUJhY2tlbmQ6OmNyZWF0ZQogCiAgICAgQ0dDb250ZXh0Q2xlYXJSZWN0KGNnQ29udGV4dC5nZXQo
KSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQ6Onplcm8oKSwgYmFja2VuZFNpemUpKTsKIAotICAgIHJl
dHVybiBtYWtlVW5pcXVlPEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZD4oc2l6ZSwgYmFja2Vu
ZFNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQsIFdURk1vdmUo
c3VyZmFjZSkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEltYWdlQnVmZmVySU9TdXJmYWNlQmFj
a2VuZD4ocGFyYW1ldGVycywgV1RGTW92ZShzdXJmYWNlKSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0
cjxJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ+IEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2Vu
ZDo6Y3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0KQorc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZD4gSW1h
Z2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGUoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1l
dGVycywgY29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogewogICAgIGlmIChhdXRvIGNn
Q29sb3JTcGFjZSA9IGNvbnRleHRDb2xvclNwYWNlKGNvbnRleHQpKQotICAgICAgICByZXR1cm4g
SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGUoc2l6ZSwgMSwgQ29sb3JTcGFjZTo6
U1JHQiwgY2dDb2xvclNwYWNlLmdldCgpLCBQaXhlbEZvcm1hdDo6QkdSQTgsIG51bGxwdHIpOwot
ICAgIAotICAgIHJldHVybiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZShzaXpl
LCAxLCBDb2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdSQTgsIG51bGxwdHIpOworICAg
ICAgICByZXR1cm4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGUocGFyYW1ldGVy
cywgY2dDb2xvclNwYWNlLmdldCgpLCBudWxscHRyKTsKKworICAgIHJldHVybiBJbWFnZUJ1ZmZl
cklPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZShwYXJhbWV0ZXJzLCBudWxscHRyKTsKIH0KIAotc3Rk
Ojp1bmlxdWVfcHRyPEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZD4gSW1hZ2VCdWZmZXJJT1N1
cmZhY2VCYWNrZW5kOjpjcmVhdGUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0
aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQs
IGNvbnN0IEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cpCitzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZm
ZXJJT1N1cmZhY2VCYWNrZW5kPiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZShj
b25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBjb25zdCBIb3N0V2luZG93KiBob3N0V2luZG93
KQogewotICAgIHJldHVybiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZShzaXpl
LCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIGNhY2hlZENHQ29sb3JTcGFjZShjb2xvclNw
YWNlKSwgcGl4ZWxGb3JtYXQsIGhvc3RXaW5kb3cpOworICAgIHJldHVybiBJbWFnZUJ1ZmZlcklP
U3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZShwYXJhbWV0ZXJzLCBjYWNoZWRDR0NvbG9yU3BhY2UocGFy
YW1ldGVycy5jb2xvclNwYWNlKSwgaG9zdFdpbmRvdyk7CiB9CiAKLUltYWdlQnVmZmVySU9TdXJm
YWNlQmFja2VuZDo6SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kKGNvbnN0IEZsb2F0U2l6ZSYg
bG9naWNhbFNpemUsIGNvbnN0IEludFNpemUmIGJhY2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9u
U2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIHN0
ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+JiYgc3VyZmFjZSkKLSAgICA6IEltYWdlQnVmZmVyQ0dC
YWNrZW5kKGxvZ2ljYWxTaXplLCBiYWNrZW5kU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNw
YWNlLCBwaXhlbEZvcm1hdCkKK0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6SW1hZ2VCdWZm
ZXJJT1N1cmZhY2VCYWNrZW5kKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIHN0ZDo6dW5p
cXVlX3B0cjxJT1N1cmZhY2U+JiYgc3VyZmFjZSkKKyAgICA6IEltYWdlQnVmZmVyQ0dCYWNrZW5k
KHBhcmFtZXRlcnMpCiAgICAgLCBtX3N1cmZhY2UoV1RGTW92ZShzdXJmYWNlKSkKIHsKICAgICBB
U1NFUlQobV9zdXJmYWNlKTsKQEAgLTEyMCw2ICsxMjAsMTEgQEAgdm9pZCBJbWFnZUJ1ZmZlcklP
U3VyZmFjZUJhY2tlbmQ6OmZsdXNoQ29udGV4dCgpCiAgICAgQ0dDb250ZXh0Rmx1c2goY29udGV4
dCgpLnBsYXRmb3JtQ29udGV4dCgpKTsKIH0KIAorSW50U2l6ZSBJbWFnZUJ1ZmZlcklPU3VyZmFj
ZUJhY2tlbmQ6OmJhY2tlbmRTaXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zdXJmYWNlLT5z
aXplKCk7Cit9CisKIHNpemVfdCBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6Om1lbW9yeUNv
c3QoKSBjb25zdAogewogICAgIHJldHVybiBtX3N1cmZhY2UtPnRvdGFsQnl0ZXMoKTsKQEAgLTE0
OCwxMCArMTUzLDEwIEBAIFJlZlB0cjxOYXRpdmVJbWFnZT4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VC
YWNrZW5kOjpzaW5rSW50b05hdGl2ZUltYWdlKCkKIHZvaWQgSW1hZ2VCdWZmZXJJT1N1cmZhY2VC
YWNrZW5kOjpkcmF3Q29uc3VtaW5nKEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1h
Z2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgRmxvYXRSZWN0IGFkanVzdGVkU3Jj
UmVjdCA9IHNyY1JlY3Q7Ci0gICAgYWRqdXN0ZWRTcmNSZWN0LnNjYWxlKG1fcmVzb2x1dGlvblNj
YWxlKTsKKyAgICBhZGp1c3RlZFNyY1JlY3Quc2NhbGUocmVzb2x1dGlvblNjYWxlKCkpOwogCiAg
ICAgaWYgKGF1dG8gaW1hZ2UgPSBzaW5rSW50b05hdGl2ZUltYWdlKCkpCi0gICAgICAgIGRlc3RD
b250ZXh0LmRyYXdOYXRpdmVJbWFnZSgqaW1hZ2UsIG1fYmFja2VuZFNpemUsIGRlc3RSZWN0LCBh
ZGp1c3RlZFNyY1JlY3QsIG9wdGlvbnMpOworICAgICAgICBkZXN0Q29udGV4dC5kcmF3TmF0aXZl
SW1hZ2UoKmltYWdlLCBiYWNrZW5kU2l6ZSgpLCBkZXN0UmVjdCwgYWRqdXN0ZWRTcmNSZWN0LCBv
cHRpb25zKTsKIH0KIAogUmV0YWluUHRyPENGRGF0YVJlZj4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VC
YWNrZW5kOjp0b0NGRGF0YShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpb25hbDxkb3VibGU+
IHF1YWxpdHksIFByZXNlcnZlUmVzb2x1dGlvbiBwcmVzZXJ2ZVJlc29sdXRpb24pIGNvbnN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZl
cklPU3VyZmFjZUJhY2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5oCmluZGV4IGRlOTgyMTExZTUyYzEyZWRiMDhk
Yzc4OGI1MGVjZWZiMzY1MDc2NTAuLjQ4NTlkZjZmYzUyNWQ4NWMzMjhjMTQ1ZjA3OTE3ODM1Njkw
OWUyNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5oCkBAIC0zOSwxNSArMzks
MTcgQEAgY2xhc3MgV0VCQ09SRV9FWFBPUlQgSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kIDog
cHVibGljIEltYWdlQnVmZmVyQ0dCYWNrZW5kIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgSW50U2l6
ZSBjYWxjdWxhdGVCYWNrZW5kU2l6ZShjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBmbG9h
dCByZXNvbHV0aW9uU2NhbGUpOwogCi0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1
ZmZlcklPU3VyZmFjZUJhY2tlbmQ+IGNyZWF0ZShjb25zdCBGbG9hdFNpemUmLCBmbG9hdCByZXNv
bHV0aW9uU2NhbGUsIENvbG9yU3BhY2UsIENHQ29sb3JTcGFjZVJlZiwgUGl4ZWxGb3JtYXQsIGNv
bnN0IEhvc3RXaW5kb3cqKTsKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVy
SU9TdXJmYWNlQmFja2VuZD4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYsIGZsb2F0IHJlc29sdXRp
b25TY2FsZSwgQ29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQsIGNvbnN0IEhvc3RXaW5kb3cqKTsKLSAg
ICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZD4gY3Jl
YXRlKGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpOworICAgIHN0YXRp
YyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kPiBjcmVhdGUoY29u
c3QgUGFyYW1ldGVycyYsIENHQ29sb3JTcGFjZVJlZiwgY29uc3QgSG9zdFdpbmRvdyopOworICAg
IHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kPiBjcmVh
dGUoY29uc3QgUGFyYW1ldGVycyYsIGNvbnN0IEhvc3RXaW5kb3cqKTsKKyAgICBzdGF0aWMgc3Rk
Ojp1bmlxdWVfcHRyPEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZD4gY3JlYXRlKGNvbnN0IFBh
cmFtZXRlcnMmLCBjb25zdCBHcmFwaGljc0NvbnRleHQmKTsKIAotICAgIEltYWdlQnVmZmVySU9T
dXJmYWNlQmFja2VuZChjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBJbnRTaXpl
JiBwaHlzaWNhbFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSwgUGl4ZWxG
b3JtYXQsIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+JiYpOworICAgIEltYWdlQnVmZmVySU9T
dXJmYWNlQmFja2VuZChjb25zdCBQYXJhbWV0ZXJzJiwgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFj
ZT4mJik7CiAKICAgICBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQoKSBjb25zdCBvdmVycmlkZTsK
ICAgICB2b2lkIGZsdXNoQ29udGV4dCgpIG92ZXJyaWRlOwogCisgICAgSW50U2l6ZSBiYWNrZW5k
U2l6ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIAogICAgIHNpemVfdCBtZW1vcnlDb3N0KCkgY29u
c3Qgb3ZlcnJpZGU7CiAgICAgc2l6ZV90IGV4dGVybmFsTWVtb3J5Q29zdCgpIGNvbnN0IG92ZXJy
aWRlOwogCkBAIC02OSw3ICs3MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbGVhc2VCdWZmZXJU
b1Bvb2woKSBvdmVycmlkZTsKIAogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc09yaWdpbkF0
VXBwZXJMZWZ0Q29ybmVyID0gdHJ1ZTsKLSAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNBY2Nl
bGVyYXRlZCA9IHRydWU7CisgICAgc3RhdGljIGNvbnN0ZXhwciBSZW5kZXJpbmdNb2RlIHJlbmRl
cmluZ01vZGUgPSBSZW5kZXJpbmdNb2RlOjpBY2NlbGVyYXRlZDsKIAogcHJvdGVjdGVkOgogICAg
IHN0YXRpYyBSZXRhaW5QdHI8Q0dDb2xvclNwYWNlUmVmPiBjb250ZXh0Q29sb3JTcGFjZShjb25z
dCBHcmFwaGljc0NvbnRleHQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmgKaW5kZXggMjZmYzk3MzA3
MjExMjczMDM5M2UyZGNiYzg3ZDBjNmI5Y2E1NDI1OC4uMTZiMTk3ZjllZTJkMjhkYmU5MjFkOTMw
OTQzZDQzMDQ2MWRmY2Q4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmgKQEAgLTMzLDcgKzMzLDYg
QEAKICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+
CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0jaW5jbHVkZSA8d3RmL09iamVjdElkZW50
aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CiAKQEAgLTQ1LDkgKzQ0LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBuYW1l
c3BhY2UgRGlzcGxheUxpc3QgewogCi1lbnVtIEZsdXNoSWRlbnRpZmllclR5cGUgeyB9OwotdXNp
bmcgRmx1c2hJZGVudGlmaWVyID0gT2JqZWN0SWRlbnRpZmllcjxGbHVzaElkZW50aWZpZXJUeXBl
PjsKLQogZW51bSBBc1RleHRGbGFnIHsKICAgICBOb25lICAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gMCwKICAgICBJbmNsdWRlc1BsYXRmb3JtT3BlcmF0aW9ucyAgICAgID0gMSA8PCAwLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0Rmx1c2hJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RGbHVzaElkZW50aWZpZXIuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi45Y2Y3ODE2OGViYjdmYzczN2I5YjRhNmNmOGQ1MzcyOWY1YTA2MGVjCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0Rmx1c2hJZGVudGlmaWVyLmgKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL09iamVjdElkZW50aWZpZXIuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgRGlzcGxheUxpc3QgeworCitlbnVtIEZsdXNo
SWRlbnRpZmllclR5cGUgeyB9OwordXNpbmcgRmx1c2hJZGVudGlmaWVyID0gT2JqZWN0SWRlbnRp
ZmllcjxGbHVzaElkZW50aWZpZXJUeXBlPjsKKworfSAvLyBEaXNwbGF5TGlzdAorCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXIu
aAppbmRleCBmNWIyMjM0MDJhZWIzNzcyOGI3MzAxZmI2NjcxMThhM2IyZThiMDQwLi5hNjVmY2E1
NTlhMTY1ZmM2YjJkODYyM2YzNTNlMTE2NDcyOTM3NzZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJbWFnZUJ1ZmZl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEltYWdlQnVmZmVyLmgKQEAgLTM0LDI2ICszNCwyOSBAQCBuYW1lc3BhY2UgRGlz
cGxheUxpc3QgewogdGVtcGxhdGU8dHlwZW5hbWUgQmFja2VuZFR5cGU+CiBjbGFzcyBJbWFnZUJ1
ZmZlciA6IHB1YmxpYyBDb25jcmV0ZUltYWdlQnVmZmVyPEJhY2tlbmRUeXBlPiB7CiAgICAgdXNp
bmcgQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXIgPSBDb25jcmV0ZUltYWdlQnVmZmVyPEJhY2tlbmRU
eXBlPjsKKyAgICB1c2luZyBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZlcjo6bG9naWNhbFNpemU7Cisg
ICAgdXNpbmcgQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXI6OmJhc2VUcmFuc2Zvcm07CiAKIHB1Ymxp
YzoKICAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCBy
ZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxG
b3JtYXQsIGNvbnN0IEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cpCiAgICAgewotICAgICAgICByZXR1
cm4gQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXI6OnRlbXBsYXRlIGNyZWF0ZTxJbWFnZUJ1ZmZlcj4o
c2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCwgaG9zdFdpbmRv
dywgc2l6ZSk7CisgICAgICAgIHJldHVybiBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZlcjo6dGVtcGxh
dGUgY3JlYXRlPEltYWdlQnVmZmVyPihzaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2Us
IHBpeGVsRm9ybWF0LCBob3N0V2luZG93KTsKICAgICB9CiAKICAgICBzdGF0aWMgYXV0byBjcmVh
dGUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBjb25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQp
CiAgICAgewotICAgICAgICByZXR1cm4gQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXI6OnRlbXBsYXRl
IGNyZWF0ZTxJbWFnZUJ1ZmZlcj4oc2l6ZSwgY29udGV4dCwgc2l6ZSk7CisgICAgICAgIHJldHVy
biBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZlcjo6dGVtcGxhdGUgY3JlYXRlPEltYWdlQnVmZmVyPihz
aXplLCBjb250ZXh0KTsKICAgICB9CiAKLSAgICBJbWFnZUJ1ZmZlcihzdGQ6OnVuaXF1ZV9wdHI8
QmFja2VuZFR5cGU+JiYgZGF0YUJhY2tlbmQsIGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKLSAgICAg
ICAgOiBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZlcihXVEZNb3ZlKGRhdGFCYWNrZW5kKSkKLSAgICAg
ICAgLCBtX2RyYXdpbmdDb250ZXh0KHNpemUsIGluaXRpYWxEcmF3aW5nQ29udGV4dENUTShzaXpl
KSkKKyAgICBJbWFnZUJ1ZmZlcihjb25zdCBJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnMm
IHBhcmFtZXRlcnMsIHN0ZDo6dW5pcXVlX3B0cjxCYWNrZW5kVHlwZT4mJiBiYWNrZW5kKQorICAg
ICAgICA6IEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyKHBhcmFtZXRlcnMsIFdURk1vdmUoYmFja2Vu
ZCkpCisgICAgICAgICwgbV9kcmF3aW5nQ29udGV4dChsb2dpY2FsU2l6ZSgpLCBiYXNlVHJhbnNm
b3JtKCkpCiAgICAgewogICAgIH0KIAotICAgIEltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYg
c2l6ZSwgUmVjb3JkZXI6OkRlbGVnYXRlKiBkZWxlZ2F0ZSA9IG51bGxwdHIpCi0gICAgICAgIDog
bV9kcmF3aW5nQ29udGV4dChzaXplLCBpbml0aWFsRHJhd2luZ0NvbnRleHRDVE0oc2l6ZSksIGRl
bGVnYXRlKQorICAgIEltYWdlQnVmZmVyKGNvbnN0IEltYWdlQnVmZmVyQmFja2VuZDo6UGFyYW1l
dGVycyYgcGFyYW1ldGVycywgUmVjb3JkZXI6OkRlbGVnYXRlKiBkZWxlZ2F0ZSA9IG51bGxwdHIp
CisgICAgICAgIDogQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXIocGFyYW1ldGVycykKKyAgICAgICAg
LCBtX2RyYXdpbmdDb250ZXh0KGxvZ2ljYWxTaXplKCksIGJhc2VUcmFuc2Zvcm0oKSwgZGVsZWdh
dGUpCiAgICAgewogICAgIH0KIApAQCAtNzcsMTUgKzgwLDYgQEAgcHVibGljOgogCiBwcm90ZWN0
ZWQ6CiAgICAgRHJhd2luZ0NvbnRleHQgbV9kcmF3aW5nQ29udGV4dDsKLQotcHJpdmF0ZToKLSAg
ICBzdGF0aWMgQWZmaW5lVHJhbnNmb3JtIGluaXRpYWxEcmF3aW5nQ29udGV4dENUTShjb25zdCBG
bG9hdFNpemUmIGxvZ2ljYWxTaXplKQotICAgIHsKLSAgICAgICAgQWZmaW5lVHJhbnNmb3JtIGlu
aXRpYWxDVE07Ci0gICAgICAgIGlmIChCYWNrZW5kVHlwZTo6aXNPcmlnaW5BdFVwcGVyTGVmdENv
cm5lcikKLSAgICAgICAgICAgIGluaXRpYWxDVE0gPSBpbml0aWFsQ1RNLnNjYWxlKDEsIC0xKS50
cmFuc2xhdGUoMCwgLWxvZ2ljYWxTaXplLmhlaWdodCgpKTsKLSAgICAgICAgcmV0dXJuIGluaXRp
YWxDVE07Ci0gICAgfQogfTsKIAogfSAvLyBEaXNwbGF5TGlzdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5k
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRp
cmVjdDJEQmFja2VuZC5jcHAKaW5kZXggMzc4YWFmNGM0MGM0ZTEyMmFjYmUwNjk0MzJjN2FkN2Vj
MjA5ZWQ3My4uMDFkMmU3ODAyODViMTFmZWMzOWI0Y2QyNmJmNGNmZmYwODA3MzM3NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGly
ZWN0MkRCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQuY3BwCkBAIC0xNzEsNyArMTcxLDcgQEAgc3Rh
dGljIFJlZlB0cjxJbWFnZT4gY3JlYXRlQml0bWFwSW1hZ2VBZnRlclNjYWxpbmdJZk5lZWRlZChJ
RDJEMUJpdG1hcFJlbmRlclRhcmcKIFJlZlB0cjxJbWFnZT4gSW1hZ2VCdWZmZXJEaXJlY3QyREJh
Y2tlbmQ6OmNvcHlJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvciwgUHJlc2VydmVS
ZXNvbHV0aW9uIHByZXNlcnZlUmVzb2x1dGlvbikgY29uc3QKIHsKICAgICBQbGF0Zm9ybUltYWdl
UHRyIGltYWdlOwotICAgIGlmIChtX3Jlc29sdXRpb25TY2FsZSA9PSAxIHx8IHByZXNlcnZlUmVz
b2x1dGlvbiA9PSBQcmVzZXJ2ZVJlc29sdXRpb246OlllcykKKyAgICBpZiAocmVzb2x1dGlvblNj
YWxlKCkgPT0gMSB8fCBwcmVzZXJ2ZVJlc29sdXRpb24gPT0gUHJlc2VydmVSZXNvbHV0aW9uOjpZ
ZXMpCiAgICAgICAgIGltYWdlID0gY29weU5hdGl2ZUltYWdlKGNvcHlCZWhhdmlvciktPnBsYXRm
b3JtSW1hZ2UoKTsKICAgICBlbHNlCiAgICAgICAgIGltYWdlID0gY29weU5hdGl2ZUltYWdlKERv
bnRDb3B5QmFja2luZ1N0b3JlKS0+cGxhdGZvcm1JbWFnZSgpOwpAQCAtMjY5LDcgKzI2OSw3IEBA
IFBsYXRmb3JtSW1hZ2VQdHIgSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OmNvbXBhdGlibGVC
aXRtYXAoSUQyRDFSZW5kZXJUYXJnZXQqCiB2b2lkIEltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5k
OjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmIG9wdGlvbnMpCiB7CiAgICAgRmxvYXRSZWN0IGFkanVzdGVkU3JjUmVjdCA9IHNyY1JlY3Q7
Ci0gICAgYWRqdXN0ZWRTcmNSZWN0LnNjYWxlKG1fcmVzb2x1dGlvblNjYWxlLCBtX3Jlc29sdXRp
b25TY2FsZSk7CisgICAgYWRqdXN0ZWRTcmNSZWN0LnNjYWxlKHJlc29sdXRpb25TY2FsZSgpKTsK
IAogICAgIGF1dG8gY29tcGF0aWJsZUJpdG1hcCA9IGNvbXBhdGlibGVCaXRtYXAoZGVzdENvbnRl
eHQucGxhdGZvcm1Db250ZXh0KCktPnJlbmRlclRhcmdldCgpKTsKIApAQCAtMjgzLDcgKzI4Myw3
IEBAIHZvaWQgSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OmRyYXcoR3JhcGhpY3NDb250ZXh0
JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSCiB2b2lkIEltYWdlQnVmZmVyRGlyZWN0MkRCYWNr
ZW5kOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0
IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMp
CiB7CiAgICAgRmxvYXRSZWN0IGFkanVzdGVkU3JjUmVjdCA9IHNyY1JlY3Q7Ci0gICAgYWRqdXN0
ZWRTcmNSZWN0LnNjYWxlKG1fcmVzb2x1dGlvblNjYWxlKTsKKyAgICBhZGp1c3RlZFNyY1JlY3Qu
c2NhbGUocmVzb2x1dGlvblNjYWxlKCkpOwogCiAgICAgaWYgKGF1dG8gaW1hZ2UgPSBjb3B5SW1h
Z2UoJmRlc3RDb250ZXh0ID09ICZjb250ZXh0KCkgPyBDb3B5QmFja2luZ1N0b3JlIDogRG9udENv
cHlCYWNraW5nU3RvcmUpKQogICAgICAgICBpbWFnZS0+ZHJhd1BhdHRlcm4oZGVzdENvbnRleHQs
IGRlc3RSZWN0LCBhZGp1c3RlZFNyY1JlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFj
aW5nLCBvcHRpb25zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZUltYWdlQnVmZmVyLmgKaW5kZXggNGQ1ZDAyNTNiYWEzNmU1NDU3ZTQ4MTY0NTM4
MjQzN2UzMTlhODU3OC4uZTYxM2FkMDA0YzQ2M2FlMzNjMzg5NWQwNDgzMTJkM2U0MmU1NzdlOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdl
QnVmZmVyLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUlt
YWdlQnVmZmVyLmgKQEAgLTQ5LDEyICs0OSwxMiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBC
YXNlQ29uY3JldGVJbWFnZUJ1ZmZlcjo6dGVtcGxhdGUgY3JlYXRlPFJlbW90ZUltYWdlQnVmZmVy
PihzaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0LCBudWxscHRy
LCByZW1vdGVSZW5kZXJpbmdCYWNrZW5kLCByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwog
ICAgIH0KIAotICAgIFJlbW90ZUltYWdlQnVmZmVyKHN0ZDo6dW5pcXVlX3B0cjxCYWNrZW5kVHlw
ZT4mJiBiYWNrZW5kLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kJiByZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyKQotICAgICAgICA6IEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyKFdURk1vdmUo
YmFja2VuZCksIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKKyAgICBSZW1vdGVJbWFnZUJ1
ZmZlcihjb25zdCBXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnMmIHBhcmFt
ZXRlcnMsIHN0ZDo6dW5pcXVlX3B0cjxCYWNrZW5kVHlwZT4mJiBiYWNrZW5kLCBSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kJiByZW1vdGVSZW5kZXJpbmdCYWNrZW5kLCBXZWJDb3JlOjpSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQorICAgICAgICA6
IEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyKHBhcmFtZXRlcnMsIFdURk1vdmUoYmFja2VuZCksIHJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKICAgICAgICAgLCBtX3JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQocmVtb3RlUmVuZGVyaW5nQmFja2VuZCkKICAgICAgICAgLCBtX3JlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcihyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCiAgICAgewotICAgICAg
ICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaW1hZ2VCdWZmZXJCYWNrZW5kV2FzQ3JlYXRlZCht
X2JhY2tlbmQtPmxvZ2ljYWxTaXplKCksIG1fYmFja2VuZC0+YmFja2VuZFNpemUoKSwgbV9iYWNr
ZW5kLT5yZXNvbHV0aW9uU2NhbGUoKSwgbV9iYWNrZW5kLT5jb2xvclNwYWNlKCksIG1fYmFja2Vu
ZC0+cGl4ZWxGb3JtYXQoKSwgbV9iYWNrZW5kLT5jcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5k
bGUoKSwgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICAgICAgbV9yZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kLmRpZENyZWF0ZUltYWdlQnVmZmVyQmFja2VuZChtX2JhY2tlbmQtPmNyZWF0
ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSgpLCByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIp
OwogICAgIH0KIAogICAgIH5SZW1vdGVJbWFnZUJ1ZmZlcigpCkBAIC02NSwxNyArNjUsNiBAQCBw
dWJsaWM6CiAgICAgICAgICAgICBjb250ZXh0KCkucmVzdG9yZSgpOwogICAgIH0KIAotICAgIFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpSZXBsYXlSZXN1bHQgc3VibWl0RGlzcGxheUxpc3QoY29uc3Qg
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCkKLSAgICB7Ci0g
ICAgICAgIGlmIChkaXNwbGF5TGlzdC5pc0VtcHR5KCkpCi0gICAgICAgICAgICByZXR1cm4geyB9
OwotCi0gICAgICAgIGNvbnN0IGF1dG8mIGltYWdlQnVmZmVycyA9IG1fcmVtb3RlUmVuZGVyaW5n
QmFja2VuZC5yZW1vdGVSZXNvdXJjZUNhY2hlKCkuaW1hZ2VCdWZmZXJzKCk7Ci0gICAgICAgIGNv
bnN0IGF1dG8mIG5hdGl2ZUltYWdlcyA9IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC5yZW1vdGVS
ZXNvdXJjZUNhY2hlKCkubmF0aXZlSW1hZ2VzKCk7Ci0gICAgICAgIFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpSZXBsYXllciByZXBsYXllciB7IEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyOjpjb250ZXh0
KCksIGRpc3BsYXlMaXN0LCAmaW1hZ2VCdWZmZXJzLCAmbmF0aXZlSW1hZ2VzLCB0aGlzIH07Ci0g
ICAgICAgIHJldHVybiByZXBsYXllci5yZXBsYXkoKTsKLSAgICB9Ci0KIHByaXZhdGU6CiAgICAg
Ym9vbCBhcHBseShXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZSBpdGVtLCBXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIG92ZXJyaWRlCiAgICAgewpAQCAtMTAxLDYgKzkw
LDE3IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQu
YXBwbHlNZWRpYUl0ZW0oaXRlbSwgY29udGV4dCk7CiAgICAgfQogCisgICAgdm9pZCBzdWJtaXRE
aXNwbGF5TGlzdChjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmIGRpc3Bs
YXlMaXN0KSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKGRpc3BsYXlMaXN0LmlzRW1wdHko
KSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBjb25zdCBhdXRvJiBpbWFnZUJ1ZmZl
cnMgPSBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQucmVtb3RlUmVzb3VyY2VDYWNoZSgpLmltYWdl
QnVmZmVycygpOworICAgICAgICBjb25zdCBhdXRvJiBuYXRpdmVJbWFnZXMgPSBtX3JlbW90ZVJl
bmRlcmluZ0JhY2tlbmQucmVtb3RlUmVzb3VyY2VDYWNoZSgpLm5hdGl2ZUltYWdlcygpOworICAg
ICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVwbGF5ZXIgcmVwbGF5ZXIgeyBCYXNlQ29uY3Jl
dGVJbWFnZUJ1ZmZlcjo6Y29udGV4dCgpLCBkaXNwbGF5TGlzdCwgJmltYWdlQnVmZmVycywgJm5h
dGl2ZUltYWdlcywgdGhpcyB9OworICAgICAgICByZXBsYXllci5yZXBsYXkoKTsKKyAgICB9CisK
ICAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kJiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQ7CiAg
ICAgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIG1fcmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcAppbmRleCA2ZGRlYjAyNzky
OWU1MDRmODNiMGExODZjN2VlYWI4ZTViOWQ2ODcyLi4yMmRhOTk4YmY5OTAyMmI2YzUxY2UyMzgx
OWU5ZWNmZGVlZDJhMzdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCkBAIC05OSw5ICs5OSw5
IEBAIGJvb2wgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6YXBwbHlNZWRpYUl0ZW0oRGlzcGxheUxp
c3Q6Okl0ZW1IYW5kbGUgaXRlbSwgR3JhcGhpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQg
UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6aW1hZ2VCdWZmZXJCYWNrZW5kV2FzQ3JlYXRlZChjb25z
dCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxv
YXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBp
eGVsRm9ybWF0LCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgaGFuZGxlLCBSZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQordm9pZCBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kOjpkaWRDcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQoSW1hZ2VCdWZmZXJC
YWNrZW5kSGFuZGxlIGhhbmRsZSwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllcikKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHk6OkltYWdlQnVmZmVyQmFja2VuZFdhc0NyZWF0ZWQobG9naWNhbFNpemUs
IGJhY2tlbmRTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0LCBX
VEZNb3ZlKGhhbmRsZSksIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciksIG1fcmVuZGVyaW5n
QmFja2VuZElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eTo6RGlkQ3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kKFdURk1vdmUoaGFuZGxlKSwg
cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmll
cik7CiB9CiAKIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6ZGlkRmx1c2goRGlzcGxheUxp
c3Q6OkZsdXNoSWRlbnRpZmllciBmbHVzaElkZW50aWZpZXIsIFJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCkBAIC0xNDgsMTAgKzE0OCw3IEBA
IHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6YXBwbHlEaXNwbGF5TGlzdHNGcm9tSGFuZGxl
KEltYWdlQnVmZmVyJiBkZXN0aW5hdGlvCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
IAotICAgICAgICBpZiAoZGVzdGluYXRpb24uaXNBY2NlbGVyYXRlZCgpKQotICAgICAgICAgICAg
c3RhdGljX2Nhc3Q8QWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlciY+KGRlc3RpbmF0aW9uKS5z
dWJtaXREaXNwbGF5TGlzdCgqZGlzcGxheUxpc3QpOwotICAgICAgICBlbHNlCi0gICAgICAgICAg
ICBzdGF0aWNfY2FzdDxVbmFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXImPihkZXN0aW5hdGlv
bikuc3VibWl0RGlzcGxheUxpc3QoKmRpc3BsYXlMaXN0KTsKKyAgICAgICAgZGVzdGluYXRpb24u
c3VibWl0RGlzcGxheUxpc3QoKmRpc3BsYXlMaXN0KTsKIAogICAgICAgICBDaGVja2VkU2l6ZSBj
aGVja2VkT2Zmc2V0ID0gb2Zmc2V0OwogICAgICAgICBjaGVja2VkT2Zmc2V0ICs9IHNpemVUb1Jl
YWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZC5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmQuaAppbmRleCA2NDA2NjY4ZmFlMDUwNTdlOWRmMzI2NGY1NzUy
NDk0ODlkNzA1Yzc4Li41OTE5ZTk1NjRmNjYzZGYzOWZmYjNjMTViMTVhM2I4YzMyMzBmNWZmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVy
aW5nQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVSZW5kZXJpbmdCYWNrZW5kLmgKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgogICAgIGJvb2wg
YXBwbHlNZWRpYUl0ZW0oV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1IYW5kbGUsIFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dCYpOwogCiAgICAgLy8gTWVzc2FnZXMgdG8gYmUgc2VudC4KLSAgICB2
b2lkIGltYWdlQnVmZmVyQmFja2VuZFdhc0NyZWF0ZWQoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXpl
JiBsb2dpY2FsU2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0
IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSwgV2ViQ29yZTo6UGl4ZWxGb3Jt
YXQsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyKTsKKyAgICB2b2lkIGRpZENyZWF0ZUltYWdlQnVmZmVyQmFja2VuZChJbWFnZUJ1
ZmZlckJhY2tlbmRIYW5kbGUsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7
CiAgICAgdm9pZCBkaWRGbHVzaChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Rmx1c2hJZGVudGlmaWVy
LCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogCiAgICAgdm9pZCBzZXRO
ZXh0SXRlbUJ1ZmZlclRvUmVhZChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50
aWZpZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVl
L1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3Rl
TGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tCmluZGV4IGVmOTRjNmIwMjA1MDQz
ZDM3MWJmMGY5Njk2YzhkOGNhNjM2YzAxMjUuLmM1ZTYxMmMwN2YxZDI0ZWFiNDQ3YWRkOWRhMWE2
NzQ0ZDgzOGQ0YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVy
VHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW0KQEAgLTMxNSw4ICsz
MTUsNyBAQCBib29sIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpkaXNwbGF5KCkKIAogICAgIG1f
bGF5ZXItPm93bmVyKCktPnBsYXRmb3JtQ0FMYXllckxheWVyRGlkRGlzcGxheShtX2xheWVyKTsK
IAotICAgIC8vIEZJWE1FOiBUaGlzIG1ldGhvZCBoYXMgYSB3ZWlyZCBuYW1lLiBUaGlzIGlzICJz
dWJtaXQgd29yayIuCi0gICAgbV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlci0+Zmx1c2hEcmF3aW5n
Q29udGV4dEFuZENvbW1pdCgpOworICAgIG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXItPmNvbW1p
dERyYXdpbmdDb250ZXh0KCk7CiAKICAgICBtX2Zyb250QnVmZmVyRmx1c2hlciA9IG1fZnJvbnRC
dWZmZXIuaW1hZ2VCdWZmZXItPmNyZWF0ZUZsdXNoZXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1h
cEJhY2tlbmQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFn
ZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwCmluZGV4IDg1NWM4OTQ5NjZjNTg3YmIw
ZTZhZWM1MTE5ZGU0Yjk0NDUwODdkNGIuLjRjOTY0MmMzMWQ3Mzk3MWJkN2FmNDViZjU1NTJlYmYx
ZmUzYzQ3MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFj
a2VuZC5jcHAKQEAgLTQzLDE3ICs0MywxNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAog
V1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFj
a2VuZCk7CiAKLXN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tl
bmQ+IEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6Y3JlYXRlKGNvbnN0IEZsb2F0
U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2Us
IFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBjb25zdCBIb3N0V2luZG93KikKK3N0ZDo6dW5pcXVl
X3B0cjxJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ+IEltYWdlQnVmZmVyU2hhcmVh
YmxlQml0bWFwQmFja2VuZDo6Y3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIGNv
bnN0IEhvc3RXaW5kb3cqKQogewotICAgIEFTU0VSVChwaXhlbEZvcm1hdCA9PSBQaXhlbEZvcm1h
dDo6QkdSQTgpOworICAgIEFTU0VSVChwYXJhbWV0ZXJzLnBpeGVsRm9ybWF0ID09IFBpeGVsRm9y
bWF0OjpCR1JBOCk7CiAKLSAgICBJbnRTaXplIGJhY2tlbmRTaXplID0gY2FsY3VsYXRlQmFja2Vu
ZFNpemUoc2l6ZSwgcmVzb2x1dGlvblNjYWxlKTsKKyAgICBJbnRTaXplIGJhY2tlbmRTaXplID0g
Y2FsY3VsYXRlQmFja2VuZFNpemUocGFyYW1ldGVycy5sb2dpY2FsU2l6ZSwgcGFyYW1ldGVycy5y
ZXNvbHV0aW9uU2NhbGUpOwogICAgIGlmIChiYWNrZW5kU2l6ZS5pc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCiAgICAgU2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9uIGNv
bmZpZ3VyYXRpb247CiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgY29uZmlndXJhdGlvbi5jb2xv
clNwYWNlID0geyBjYWNoZWRDR0NvbG9yU3BhY2UoY29sb3JTcGFjZSkgfTsKKyAgICBjb25maWd1
cmF0aW9uLmNvbG9yU3BhY2UgPSB7IGNhY2hlZENHQ29sb3JTcGFjZShwYXJhbWV0ZXJzLmNvbG9y
U3BhY2UpIH07CiAjZW5kaWYKICAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3Jl
YXRlU2hhcmVhYmxlKGJhY2tlbmRTaXplLCBjb25maWd1cmF0aW9uKTsKICAgICBpZiAoIWJpdG1h
cCkKQEAgLTYzLDEwICs2MywxMCBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJTaGFyZWFi
bGVCaXRtYXBCYWNrZW5kPiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhYwogICAgIGlmICgh
Y29udGV4dCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gbWFrZVVuaXF1
ZTxJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ+KHNpemUsIGJhY2tlbmRTaXplLCBy
ZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0LCBXVEZNb3ZlKGJpdG1hcCks
IFdURk1vdmUoY29udGV4dCkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEltYWdlQnVmZmVyU2hh
cmVhYmxlQml0bWFwQmFja2VuZD4ocGFyYW1ldGVycywgV1RGTW92ZShiaXRtYXApLCBXVEZNb3Zl
KGNvbnRleHQpKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyU2hhcmVhYmxlQml0
bWFwQmFja2VuZD4gSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpjcmVhdGUoY29u
c3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50U2l6ZSYgYmFja2VuZFNpemUsIGZs
b2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBw
aXhlbEZvcm1hdCwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGhhbmRsZSkKK3N0ZDo6dW5pcXVl
X3B0cjxJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ+IEltYWdlQnVmZmVyU2hhcmVh
YmxlQml0bWFwQmFja2VuZDo6Y3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIElt
YWdlQnVmZmVyQmFja2VuZEhhbmRsZSBoYW5kbGUpCiB7CiAgICAgaWYgKCFXVEY6OmhvbGRzX2Fs
dGVybmF0aXZlPFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlPihoYW5kbGUpKSB7CiAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtODEsMTEgKzgxLDExIEBAIHN0ZDo6dW5pcXVlX3B0cjxJ
bWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ+IEltYWdlQnVmZmVyU2hhcmVhYmxlQml0
bWFwQmFjCiAgICAgaWYgKCFjb250ZXh0KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAg
IHJldHVybiBtYWtlVW5pcXVlPEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZD4obG9n
aWNhbFNpemUsIGJhY2tlbmRTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVs
Rm9ybWF0LCBXVEZNb3ZlKGJpdG1hcCksIFdURk1vdmUoY29udGV4dCkpOworICAgIHJldHVybiBt
YWtlVW5pcXVlPEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZD4ocGFyYW1ldGVycywg
V1RGTW92ZShiaXRtYXApLCBXVEZNb3ZlKGNvbnRleHQpKTsKIH0KIAotSW1hZ2VCdWZmZXJTaGFy
ZWFibGVCaXRtYXBCYWNrZW5kOjpJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQoY29u
c3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50U2l6ZSYgcGh5c2ljYWxTaXplLCBm
bG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQg
cGl4ZWxGb3JtYXQsIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+JiYgYml0bWFwLCBzdGQ6OnVuaXF1
ZV9wdHI8R3JhcGhpY3NDb250ZXh0PiYmIGNvbnRleHQpCi0gICAgOiBQbGF0Zm9ybUltYWdlQnVm
ZmVyQmFja2VuZChsb2dpY2FsU2l6ZSwgcGh5c2ljYWxTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNv
bG9yU3BhY2UsIHBpeGVsRm9ybWF0KQorSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5k
OjpJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQoY29uc3QgUGFyYW1ldGVycyYgcGFy
YW1ldGVycywgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4mJiBiaXRtYXAsIHN0ZDo6dW5pcXVlX3B0
cjxHcmFwaGljc0NvbnRleHQ+JiYgY29udGV4dCkKKyAgICA6IFBsYXRmb3JtSW1hZ2VCdWZmZXJC
YWNrZW5kKHBhcmFtZXRlcnMpCiAgICAgLCBtX2JpdG1hcChXVEZNb3ZlKGJpdG1hcCkpCiAgICAg
LCBtX2NvbnRleHQoV1RGTW92ZShjb250ZXh0KSkKIHsKQEAgLTk4LDYgKzk4LDExIEBAIEltYWdl
QnVmZmVyQmFja2VuZEhhbmRsZSBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmNy
ZWF0ZUltYWdlQnVmZmVyQmFjCiAgICAgcmV0dXJuIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZShX
VEZNb3ZlKGhhbmRsZSkpOwogfQogCitJbnRTaXplIEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFw
QmFja2VuZDo6YmFja2VuZFNpemUoKSBjb25zdAoreworICAgIHJldHVybiBtX2JpdG1hcC0+c2l6
ZSgpOworfQorCiBSZWZQdHI8TmF0aXZlSW1hZ2U+IEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFw
QmFja2VuZDo6Y29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkpIGNvbnN0CiB7CiAjaWYg
VVNFKENHKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmgK
aW5kZXggMGM3ZjA0N2Y4ODM1ZTRiOGQ2M2MxNWY0MWVjOTIxMDJlNDU4NTM5OS4uNTU1MDZhNDlk
MDNlMzllODhlMDM2MWU0OTE1NWYxMzFkNzk5MDEwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tl
bmQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVm
ZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5oCkBAIC00MywxNCArNDMsMTYgQEAgY2xhc3MgSW1h
Z2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kIDogcHVibGljIFdlYkNvcmU6OlBsYXRmb3Jt
SW1hZ2VCdWZmZXJCYWMKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEltYWdlQnVmZmVyU2hh
cmVhYmxlQml0bWFwQmFja2VuZCk7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW1hZ2VCdWZm
ZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgc3RkOjp1bmlx
dWVfcHRyPEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZD4gY3JlYXRlKGNvbnN0IFdl
YkNvcmU6OkZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IGZsb2F0IHJlc29sdXRpb25TY2Fs
ZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSwgV2ViQ29yZTo6UGl4ZWxGb3JtYXQsIGNvbnN0IFdlYkNv
cmU6Okhvc3RXaW5kb3cqKTsKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVy
U2hhcmVhYmxlQml0bWFwQmFja2VuZD4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYg
bG9naWNhbFNpemUsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGludGVybmFsU2l6ZSwgZmxvYXQg
cmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlLCBXZWJDb3JlOjpQaXhlbEZvcm1h
dCwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRy
PEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZD4gY3JlYXRlKGNvbnN0IFBhcmFtZXRl
cnMmLCBjb25zdCBXZWJDb3JlOjpIb3N0V2luZG93Kik7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVl
X3B0cjxJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ+IGNyZWF0ZShjb25zdCBQYXJh
bWV0ZXJzJiwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKTsKIAotICAgIEltYWdlQnVmZmVyU2hh
cmVhYmxlQml0bWFwQmFja2VuZChjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxTaXpl
LCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBwaHlzaWNhbFNpemUsIGZsb2F0IHJlc29sdXRpb25T
Y2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSwgV2ViQ29yZTo6UGl4ZWxGb3JtYXQsIFJlZlB0cjxT
aGFyZWFibGVCaXRtYXA+JiYsIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQ+JiYpOworICAgIEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZChjb25zdCBQYXJh
bWV0ZXJzJiwgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4mJiwgc3RkOjp1bmlxdWVfcHRyPFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dD4mJik7CiAKICAgICBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUg
Y3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKCkgY29uc3Q7CiAKICAgICBXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAqbV9jb250
ZXh0OyB9CisgICAgCisgICAgV2ViQ29yZTo6SW50U2l6ZSBiYWNrZW5kU2l6ZSgpIGNvbnN0IG92
ZXJyaWRlOwogCiAgICAgUmVmUHRyPFdlYkNvcmU6Ok5hdGl2ZUltYWdlPiBjb3B5TmF0aXZlSW1h
Z2UoV2ViQ29yZTo6QmFja2luZ1N0b3JlQ29weSA9IFdlYkNvcmU6OkNvcHlCYWNraW5nU3RvcmUp
IGNvbnN0IG92ZXJyaWRlOwogICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZT4gY29weUltYWdlKFdl
YkNvcmU6OkJhY2tpbmdTdG9yZUNvcHkgPSBXZWJDb3JlOjpDb3B5QmFja2luZ1N0b3JlLCBXZWJD
b3JlOjpQcmVzZXJ2ZVJlc29sdXRpb24gPSBXZWJDb3JlOjpQcmVzZXJ2ZVJlc29sdXRpb246Ok5v
KSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUGxhdGZvcm1SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1BsYXRmb3JtUmVtb3RlSW1hZ2VCdWZmZXJQcm94
eS5oCmluZGV4IDA1MTc2NzgzZDU1MzFiZmU3MGY4NTBiZjJjMTQ5Zjc4ODIyZDBlMzkuLjlhZmYw
ODhlMzdjYTc2YTdmODY0YWU3ZTQyYmJiNzAwNGYxZjE1MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUGxhdGZvcm1SZW1vdGVJbWFnZUJ1ZmZlclBy
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9QbGF0Zm9y
bVJlbW90ZUltYWdlQnVmZmVyUHJveHkuaApAQCAtMzcsMTQgKzM3LDQgQEAgdXNpbmcgQWNjZWxl
cmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlclByb3h5ID0gUmVtb3RlSW1hZ2VCdWZmZXJQcm94eTxBY2Nl
bGVyYXRlZEltYWcKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKLVNQRUNJQUxJWkVfVFlQRV9U
UkFJVFNfQkVHSU4oV2ViS2l0OjpVbmFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXJQcm94eSkK
LSAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6SW1hZ2VCdWZmZXImIGltYWdl
QnVmZmVyKSB7IHJldHVybiBpbWFnZUJ1ZmZlci5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIo
KSAmJiAhaW1hZ2VCdWZmZXIuaXNBY2NlbGVyYXRlZCgpOyB9Ci1TUEVDSUFMSVpFX1RZUEVfVFJB
SVRTX0VORCgpCi0KLSNpZiBIQVZFKElPU1VSRkFDRSkKLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNf
QkVHSU4oV2ViS2l0OjpBY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyUHJveHkpCi0gICAgc3Rh
dGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OkltYWdlQnVmZmVyJiBpbWFnZUJ1ZmZlcikg
eyByZXR1cm4gaW1hZ2VCdWZmZXIucmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCkgJiYgaW1h
Z2VCdWZmZXIuaXNBY2NlbGVyYXRlZCgpOyB9Ci1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgp
Ci0jZW5kaWYKLQogI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94
eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1
ZmZlclByb3h5LmgKaW5kZXggNTFiZDU3MTI5NThhZjEyYTIzMTVkNDFiYTNkMmQ2YjllZDU3ZjJi
YS4uYWFlZjAxMDExMjA1M2YxMTFlMjdjMGQ3MzRiNDE3NzVkODVmYWIzYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclBy
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJ
bWFnZUJ1ZmZlclByb3h5LmgKQEAgLTUwLDE0ICs1MCwxNiBAQCBjbGFzcyBSZW1vdGVJbWFnZUJ1
ZmZlclByb3h5IDogcHVibGljIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJbWFnZUJ1ZmZlcjxCYWNr
ZW5kVAogICAgIHVzaW5nIEJhc2VEaXNwbGF5TGlzdEltYWdlQnVmZmVyOjptX2JhY2tlbmQ7CiAg
ICAgdXNpbmcgQmFzZURpc3BsYXlMaXN0SW1hZ2VCdWZmZXI6Om1fZHJhd2luZ0NvbnRleHQ7CiAg
ICAgdXNpbmcgQmFzZURpc3BsYXlMaXN0SW1hZ2VCdWZmZXI6Om1fcmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyOworICAgIHVzaW5nIEJhc2VEaXNwbGF5TGlzdEltYWdlQnVmZmVyOjpyZXNvbHV0
aW9uU2NhbGU7CiAKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPFJlbW90ZUltYWdlQnVmZmVy
UHJveHk+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHNpemUsIFdlYkNvcmU6OlJl
bmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3Jl
OjpDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFdlYkNvcmU6OlBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0
LCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkmIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eSkKKyAgICBzdGF0aWMgUmVmUHRyPFJlbW90ZUltYWdlQnVmZmVyUHJveHk+IGNyZWF0ZShjb25z
dCBXZWJDb3JlOjpGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29y
ZTo6Q29sb3JTcGFjZSBjb2xvclNwYWNlLCBXZWJDb3JlOjpQaXhlbEZvcm1hdCBwaXhlbEZvcm1h
dCwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5JiByZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHkpCiAgICAgewogICAgICAgICBpZiAoQmFja2VuZFR5cGU6OmNhbGN1bGF0ZUJhY2tlbmRTaXpl
KHNpemUsIHJlc29sdXRpb25TY2FsZSkuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBSZW1vdGVJbWFnZUJ1ZmZlclBy
b3h5KHNpemUsIHJlbmRlcmluZ01vZGUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4
ZWxGb3JtYXQsIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkpOworICAgICAgICBhdXRvIHBh
cmFtZXRlcnMgPSBXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnMgeyBzaXpl
LCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0IH07CisgICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgUmVtb3RlSW1hZ2VCdWZmZXJQcm94eShwYXJhbWV0ZXJzLCByZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpKTsKICAgICB9CiAKICAgICB+UmVtb3RlSW1hZ2VCdWZm
ZXJQcm94eSgpCkBAIC02OSwyNyArNzEsNiBAQCBwdWJsaWM6CiAgICAgICAgIG1fcmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5LT5yZWxlYXNlUmVtb3RlUmVzb3VyY2UobV9yZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIpOwogICAgIH0KIAotICAgIHZvaWQgY2xlYXJCYWNrZW5kKCkgeyBtX2Jh
Y2tlbmQgPSBudWxscHRyOyB9Ci0KLSAgICB2b2lkIGNyZWF0ZUJhY2tlbmQoY29uc3QgV2ViQ29y
ZTo6RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgYmFja2Vu
ZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSBjb2xvclNw
YWNlLCBXZWJDb3JlOjpQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgSW1hZ2VCdWZmZXJCYWNrZW5k
SGFuZGxlIGhhbmRsZSkKLSAgICB7Ci0gICAgICAgIEFTU0VSVCghbV9iYWNrZW5kKTsKLSAgICAg
ICAgbV9iYWNrZW5kID0gQmFja2VuZFR5cGU6OmNyZWF0ZShsb2dpY2FsU2l6ZSwgYmFja2VuZFNp
emUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQsIFdURk1vdmUoaGFu
ZGxlKSk7Ci0gICAgfQotCi0gICAgdm9pZCBkaWRGbHVzaChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
Rmx1c2hJZGVudGlmaWVyIGZsdXNoSWRlbnRpZmllcikKLSAgICB7Ci0gICAgICAgIGF1dG8gbG9j
a2VyID0gaG9sZExvY2sobV9yZWNlaXZlZEZsdXNoSWRlbnRpZmllckxvY2spOwotICAgICAgICBt
X3JlY2VpdmVkRmx1c2hJZGVudGlmaWVyID0gZmx1c2hJZGVudGlmaWVyOwotICAgICAgICBtX3Jl
Y2VpdmVkRmx1c2hJZGVudGlmaWVyQ2hhbmdlZENvbmRpdGlvbi5ub3RpZnlBbGwoKTsKLSAgICB9
Ci0KLSAgICBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHNpemUoKSBjb25zdCB7IHJldHVybiBt
X3NpemU7IH0KLSAgICBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUoKSBjb25z
dCB7IHJldHVybiBtX3JlbmRlcmluZ01vZGU7IH0KLSAgICBmbG9hdCByZXNvbHV0aW9uU2NhbGUo
KSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Jlc29sdXRpb25TY2FsZTsgfQotICAgIFdlYkNvcmU6
OkNvbG9yU3BhY2UgY29sb3JTcGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29sb3JTcGFjZTsgfQot
ICAgIFdlYkNvcmU6OlBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0KCkgY29uc3QgeyByZXR1cm4gbV9w
aXhlbEZvcm1hdDsgfQotCiAgICAgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGNyZWF0ZUltYWdl
QnVmZmVyQmFja2VuZEhhbmRsZSgpCiAgICAgewogICAgICAgICBlbnN1cmVCYWNrZW5kQ3JlYXRl
ZCgpOwpAQCAtMTEyLDE1ICs5Myw5IEBAIHB1YmxpYzoKICAgICB9CiAKIHByb3RlY3RlZDoKLSAg
ICBmcmllbmQgY2xhc3MgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDsKLSAgICBSZW1vdGVJbWFnZUJ1
ZmZlclByb3h5KGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgc2l6ZSwgV2ViQ29yZTo6UmVuZGVy
aW5nTW9kZSByZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNv
bG9yU3BhY2UgY29sb3JTcGFjZSwgV2ViQ29yZTo6UGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSYgcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KQot
ICAgICAgICA6IEJhc2VEaXNwbGF5TGlzdEltYWdlQnVmZmVyKHNpemUsIHRoaXMpCisgICAgUmVt
b3RlSW1hZ2VCdWZmZXJQcm94eShjb25zdCBXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBh
cmFtZXRlcnMmIHBhcmFtZXRlcnMsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSYgcmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5KQorICAgICAgICA6IEJhc2VEaXNwbGF5TGlzdEltYWdlQnVm
ZmVyKHBhcmFtZXRlcnMsIHRoaXMpCiAgICAgICAgICwgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHkobWFrZVdlYWtQdHIocmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KSkKLSAgICAgICAg
LCBtX3NpemUoc2l6ZSkKLSAgICAgICAgLCBtX3JlbmRlcmluZ01vZGUocmVuZGVyaW5nTW9kZSkK
LSAgICAgICAgLCBtX3Jlc29sdXRpb25TY2FsZShyZXNvbHV0aW9uU2NhbGUpCi0gICAgICAgICwg
bV9jb2xvclNwYWNlKGNvbG9yU3BhY2UpCi0gICAgICAgICwgbV9waXhlbEZvcm1hdChwaXhlbEZv
cm1hdCkKICAgICB7CiAgICAgICAgIEFTU0VSVChtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eSk7CiAgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT5yZW1vdGVSZXNvdXJj
ZUNhY2hlUHJveHkoKS5jYWNoZUltYWdlQnVmZmVyKCp0aGlzKTsKQEAgLTEzMSw2ICsxMDYsMTMg
QEAgcHJvdGVjdGVkOgogCiAgICAgYm9vbCBoYXNQZW5kaW5nRmx1c2goKSBjb25zdCB7IHJldHVy
biBtX3NlbnRGbHVzaElkZW50aWZpZXIgIT0gbV9yZWNlaXZlZEZsdXNoSWRlbnRpZmllcjsgfQog
CisgICAgdm9pZCBkaWRGbHVzaChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Rmx1c2hJZGVudGlmaWVy
IGZsdXNoSWRlbnRpZmllcikgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGF1dG8gbG9ja2VyID0g
aG9sZExvY2sobV9yZWNlaXZlZEZsdXNoSWRlbnRpZmllckxvY2spOworICAgICAgICBtX3JlY2Vp
dmVkRmx1c2hJZGVudGlmaWVyID0gZmx1c2hJZGVudGlmaWVyOworICAgICAgICBtX3JlY2VpdmVk
Rmx1c2hJZGVudGlmaWVyQ2hhbmdlZENvbmRpdGlvbi5ub3RpZnlBbGwoKTsKKyAgICB9CisKICAg
ICB2b2lkIHdhaXRGb3JEaWRGbHVzaFdpdGhUaW1lb3V0KCkKICAgICB7CiAgICAgICAgIGlmICgh
bV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpCkBAIC0xNDUsNyArMTI3LDcgQEAgcHJvdGVj
dGVkOgogICAgIEJhY2tlbmRUeXBlKiBlbnN1cmVCYWNrZW5kQ3JlYXRlZCgpIGNvbnN0IG92ZXJy
aWRlCiAgICAgewogICAgICAgICBpZiAoIW1fYmFja2VuZCAmJiBtX3JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eSkKLSAgICAgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT53
YWl0Rm9ySW1hZ2VCdWZmZXJCYWNrZW5kV2FzQ3JlYXRlZCgpOworICAgICAgICAgICAgbV9yZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHktPndhaXRGb3JEaWRDcmVhdGVJbWFnZUJ1ZmZlckJhY2tl
bmQoKTsKICAgICAgICAgcmV0dXJuIG1fYmFja2VuZC5nZXQoKTsKICAgICB9CiAKQEAgLTE2OSw4
ICsxNTEsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBwdXRJbWFnZURhdGEoV2ViQ29yZTo6QWxw
aGFQcmVtdWx0aXBsaWNhdGlvbiBpbnB1dEZvcm1hdCwgY29uc3QgV2ViQ29yZTo6SW1hZ2VEYXRh
JiBpbWFnZURhdGEsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHNyY1JlY3QsIGNvbnN0IFdlYkNv
cmU6OkludFBvaW50JiBkZXN0UG9pbnQgPSB7IH0sIFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGlj
YXRpb24gZGVzdEZvcm1hdCA9IFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb246OlByZW11
bHRpcGxpZWQpIG92ZXJyaWRlCiAgICAgewogICAgICAgICAvLyBUaGUgbWF0aCBpbnNpZGUgSW1h
Z2VEYXRhOjpjcmVhdGUoKSBkb2Vzbid0IGFncmVlIHdpdGggdGhlIG1hdGggaW5zaWRlIEltYWdl
QnVmZmVyQmFja2VuZDo6cHV0SW1hZ2VEYXRhKCkgYWJvdXQgaG93IG1fcmVzb2x1dGlvblNjYWxl
IGludGVyYWN0cyB3aXRoIHRoZSBkYXRhIGluIHRoZSBJbWFnZUJ1ZmZlci4KLSAgICAgICAgLy8g
VGhpcyBtZWFucyB0aGF0IHB1dEltYWdlRGF0YSgpIGlzIG9ubHkgY2FsbGVkIHdoZW4gbV9yZXNv
bHV0aW9uU2NhbGUgPT0gMS4KLSAgICAgICAgQVNTRVJUX0lNUExJRVMobV9iYWNrZW5kLCBtX2Jh
Y2tlbmQtPnJlc29sdXRpb25TY2FsZSgpID09IDEpOworICAgICAgICAvLyBUaGlzIG1lYW5zIHRo
YXQgcHV0SW1hZ2VEYXRhKCkgaXMgb25seSBjYWxsZWQgd2hlbiByZXNvbHV0aW9uU2NhbGUoKSA9
PSAxLgorICAgICAgICBBU1NFUlQocmVzb2x1dGlvblNjYWxlKCkgPT0gMSk7CiAgICAgICAgIG1f
ZHJhd2luZ0NvbnRleHQucmVjb3JkZXIoKS5wdXRJbWFnZURhdGEoaW5wdXRGb3JtYXQsIGltYWdl
RGF0YSwgc3JjUmVjdCwgZGVzdFBvaW50LCBkZXN0Rm9ybWF0KTsKICAgICB9CiAKQEAgLTE4NSwx
MSArMTY3LDExIEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGZsdXNoRHJhd2luZ0NvbnRleHQoKSBv
dmVycmlkZQogICAgIHsKICAgICAgICAgVHJhY2VTY29wZSB0cmFjaW5nU2NvcGUoRmx1c2hSZW1v
dGVJbWFnZUJ1ZmZlclN0YXJ0LCBGbHVzaFJlbW90ZUltYWdlQnVmZmVyRW5kKTsKLSAgICAgICAg
Zmx1c2hEcmF3aW5nQ29udGV4dEFuZENvbW1pdCgpOworICAgICAgICBjb21taXREcmF3aW5nQ29u
dGV4dCgpOwogICAgICAgICB3YWl0Rm9yRGlkRmx1c2hXaXRoVGltZW91dCgpOwogICAgIH0KIAot
ICAgIHZvaWQgZmx1c2hEcmF3aW5nQ29udGV4dEFuZENvbW1pdCgpIG92ZXJyaWRlCisgICAgdm9p
ZCBjb21taXREcmF3aW5nQ29udGV4dCgpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBpZiAoIW1f
cmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjAw
LDEyICsxODIsMTIgQEAgcHJvdGVjdGVkOgogCiAgICAgICAgIG1fc2VudEZsdXNoSWRlbnRpZmll
ciA9IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpGbHVzaElkZW50aWZpZXI6OmdlbmVyYXRlKCk7CiAg
ICAgICAgIGRpc3BsYXlMaXN0LnRlbXBsYXRlIGFwcGVuZDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
Rmx1c2hDb250ZXh0PihtX3NlbnRGbHVzaElkZW50aWZpZXIpOwotICAgICAgICBtX3JlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eS0+c3VibWl0RGlzcGxheUxpc3QoZGlzcGxheUxpc3QsIG1fcmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKLSAgICAgICAgbV9pdGVtQ291bnRJbkN1cnJlbnRE
aXNwbGF5TGlzdCA9IDA7CisgICAgICAgIHN1Ym1pdERpc3BsYXlMaXN0KGRpc3BsYXlMaXN0KTsK
ICAgICAgICAgZGlzcGxheUxpc3QuY2xlYXIoKTsKKyAgICAgICAgbV9pdGVtQ291bnRJbkN1cnJl
bnREaXNwbGF5TGlzdCA9IDA7CiAgICAgfQogCi0gICAgdm9pZCBzdWJtaXREaXNwbGF5TGlzdChj
b25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0KQorICAg
IHZvaWQgc3VibWl0RGlzcGxheUxpc3QoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3Bs
YXlMaXN0JiBkaXNwbGF5TGlzdCkgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIGlmICghbV9yZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHkgfHwgZGlzcGxheUxpc3QuaXNFbXB0eSgpKQogICAgICAg
ICAgICAgcmV0dXJuOwpAQCAtMzUzLDExICszMzUsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OkZsdXNoSWRlbnRpZmllciBtX3JlY2VpdmVkRmx1c2hJZGVudGlmaWVy
OwogICAgIFdlYWtQdHI8UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5PiBtX3JlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eTsKICAgICBzaXplX3QgbV9pdGVtQ291bnRJbkN1cnJlbnREaXNwbGF5
TGlzdCB7IDAgfTsKLSAgICBXZWJDb3JlOjpGbG9hdFNpemUgbV9zaXplOwotICAgIFdlYkNvcmU6
OlJlbmRlcmluZ01vZGUgbV9yZW5kZXJpbmdNb2RlOwotICAgIGZsb2F0IG1fcmVzb2x1dGlvblNj
YWxlOwotICAgIFdlYkNvcmU6OkNvbG9yU3BhY2UgbV9jb2xvclNwYWNlOwotICAgIFdlYkNvcmU6
OlBpeGVsRm9ybWF0IG1fcGl4ZWxGb3JtYXQ7CiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBCYWNr
ZW5kVHlwZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcAppbmRleCBj
MDdiMjNmYjJiMGU1OGUwZTFkZmY1YTE0ZWUwYTg1ZDlhNWI2NDVkLi4zZDZmZmM0ODAxMmYzMmM5
NzZmN2Y5OTIxNDgwMDUwMzVjMDA2OGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHkuY3BwCkBAIC03MCwyNCArNzAsMTUgQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHk6OmNvbm5lY3RUb0dQVVByb2Nlc3MoKQogICAgIHNlbmQoTWVzc2FnZXM6OkdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNyZWF0ZVJlbmRlcmluZ0JhY2tlbmQobV9yZW5kZXJpbmdC
YWNrZW5kSWRlbnRpZmllciksIDApOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RhdGlj
IHZvaWQgcmVjcmVhdGVJbWFnZUJ1ZmZlcihSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkmIHBy
b3h5LCBUJiBpbWFnZUJ1ZmZlciwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlc291cmNl
SWRlbnRpZmllciwgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgcmVuZGVyaW5nQmFja2VuZElk
ZW50aWZpZXIpCi17Ci0gICAgaW1hZ2VCdWZmZXIuY2xlYXJCYWNrZW5kKCk7Ci0gICAgcHJveHku
c2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Q3JlYXRlSW1hZ2VCdWZmZXIo
aW1hZ2VCdWZmZXIuc2l6ZSgpLCBpbWFnZUJ1ZmZlci5yZW5kZXJpbmdNb2RlKCksIGltYWdlQnVm
ZmVyLnJlc29sdXRpb25TY2FsZSgpLCBpbWFnZUJ1ZmZlci5jb2xvclNwYWNlKCksIGltYWdlQnVm
ZmVyLnBpeGVsRm9ybWF0KCksIHJlc291cmNlSWRlbnRpZmllciksIHJlbmRlcmluZ0JhY2tlbmRJ
ZGVudGlmaWVyKTsKLX0KLQogdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OnJlZXN0
YWJsaXNoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKQogewogICAgIGNvbm5lY3RUb0dQVVByb2Nlc3Mo
KTsKIAotICAgIGZvciAoYXV0byYgcGFpciA6IG1fcmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5Lmlt
YWdlQnVmZmVycygpKSB7Ci0gICAgICAgIGlmIChhdXRvJiBiYXNlSW1hZ2VCdWZmZXIgPSBwYWly
LnZhbHVlKSB7Ci0gICAgICAgICAgICBpZiAoaXM8QWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZl
clByb3h5PigqYmFzZUltYWdlQnVmZmVyKSkKLSAgICAgICAgICAgICAgICByZWNyZWF0ZUltYWdl
QnVmZmVyKCp0aGlzLCBkb3duY2FzdDxBY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyUHJveHk+
KCpiYXNlSW1hZ2VCdWZmZXIpLCBwYWlyLmtleSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmll
cik7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcmVjcmVhdGVJbWFnZUJ1ZmZl
cigqdGhpcywgZG93bmNhc3Q8VW5hY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyUHJveHk+KCpi
YXNlSW1hZ2VCdWZmZXIpLCBwYWlyLmtleSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7
Ci0gICAgICAgIH0KKyAgICBmb3IgKGF1dG8mIGltYWdlQnVmZmVyIDogbV9yZW1vdGVSZXNvdXJj
ZUNhY2hlUHJveHkuaW1hZ2VCdWZmZXJzKCkudmFsdWVzKCkpIHsKKyAgICAgICAgaWYgKCFpbWFn
ZUJ1ZmZlcikKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpDcmVhdGVJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlci0+bG9n
aWNhbFNpemUoKSwgaW1hZ2VCdWZmZXItPnJlbmRlcmluZ01vZGUoKSwgaW1hZ2VCdWZmZXItPnJl
c29sdXRpb25TY2FsZSgpLCBpbWFnZUJ1ZmZlci0+Y29sb3JTcGFjZSgpLCBpbWFnZUJ1ZmZlci0+
cGl4ZWxGb3JtYXQoKSwgaW1hZ2VCdWZmZXItPnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigp
KSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7CisgICAgICAgIGltYWdlQnVmZmVyLT5j
bGVhckJhY2tlbmQoKTsKICAgICB9CiB9CiAKQEAgLTExMiwxMCArMTAzLDEwIEBAIHVpbnQ2NF90
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6bWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQo
KSBjb25zdAogICAgIHJldHVybiBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLnRvVUludDY0
KCk7CiB9CiAKLWJvb2wgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Ojp3YWl0Rm9ySW1hZ2VC
dWZmZXJCYWNrZW5kV2FzQ3JlYXRlZCgpCitib29sIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eTo6d2FpdEZvckRpZENyZWF0ZUltYWdlQnVmZmVyQmFja2VuZCgpCiB7CiAgICAgUmVmPElQQzo6
Q29ubmVjdGlvbj4gY29ubmVjdGlvbiA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQ
VVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpOwotICAgIHJldHVybiBjb25uZWN0aW9u
LT53YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseTxNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5OjpJbWFnZUJ1ZmZlckJhY2tlbmRXYXNDcmVhdGVkPihtX3JlbmRlcmluZ0Jh
Y2tlbmRJZGVudGlmaWVyLCAxX3MsIElQQzo6V2FpdEZvck9wdGlvbjo6SW50ZXJydXB0V2FpdGlu
Z0lmU3luY01lc3NhZ2VBcnJpdmVzKTsKKyAgICByZXR1cm4gY29ubmVjdGlvbi0+d2FpdEZvckFu
ZERpc3BhdGNoSW1tZWRpYXRlbHk8TWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eTo6RGlkQ3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kPihtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlm
aWVyLCAxX3MsIElQQzo6V2FpdEZvck9wdGlvbjo6SW50ZXJydXB0V2FpdGluZ0lmU3luY01lc3Nh
Z2VBcnJpdmVzKTsKIH0KIAogYm9vbCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OndhaXRG
b3JEaWRGbHVzaCgpCkBAIC0xMjksMTAgKzEyMCwxMCBAQCBSZWZQdHI8SW1hZ2VCdWZmZXI+IFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRT
aQogICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXI7CiAKICAgICBpZiAocmVuZGVy
aW5nTW9kZSA9PSBSZW5kZXJpbmdNb2RlOjpBY2NlbGVyYXRlZCkKLSAgICAgICAgaW1hZ2VCdWZm
ZXIgPSBBY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyUHJveHk6OmNyZWF0ZShzaXplLCByZW5k
ZXJpbmdNb2RlLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0LCAqdGhp
cyk7CisgICAgICAgIGltYWdlQnVmZmVyID0gQWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlclBy
b3h5OjpjcmVhdGUoc2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1h
dCwgKnRoaXMpOwogCiAgICAgaWYgKCFpbWFnZUJ1ZmZlcikKLSAgICAgICAgaW1hZ2VCdWZmZXIg
PSBVbmFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6Y3JlYXRlKHNpemUsIHJlbmRl
cmluZ01vZGUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQsICp0aGlz
KTsKKyAgICAgICAgaW1hZ2VCdWZmZXIgPSBVbmFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXJQ
cm94eTo6Y3JlYXRlKHNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3Jt
YXQsICp0aGlzKTsKIAogICAgIGlmIChpbWFnZUJ1ZmZlcikgewogICAgICAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpDcmVhdGVJbWFnZUJ1ZmZlcihzaXplLCByZW5k
ZXJpbmdNb2RlLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0LCBpbWFn
ZUJ1ZmZlci0+cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCkpLCBtX3JlbmRlcmluZ0JhY2tl
bmRJZGVudGlmaWVyKTsKQEAgLTE4MywyOCArMTc0LDIyIEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5OjpyZWxlYXNlUmVtb3RlUmVzb3VyY2UoUmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmCiAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6UmVsZWFzZVJl
bW90ZVJlc291cmNlKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciksIG1fcmVuZGVyaW5nQmFj
a2VuZElkZW50aWZpZXIpOwogfQogCi12b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6
aW1hZ2VCdWZmZXJCYWNrZW5kV2FzQ3JlYXRlZChjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXpl
LCBjb25zdCBJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xv
clNwYWNlIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBJbWFnZUJ1ZmZlckJh
Y2tlbmRIYW5kbGUgaGFuZGxlLCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyKQordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmRp
ZENyZWF0ZUltYWdlQnVmZmVyQmFja2VuZChJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgaGFuZGxl
LCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
KQogewogICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBtX3JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5j
YWNoZWRJbWFnZUJ1ZmZlcihyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIGlmICgh
aW1hZ2VCdWZmZXIpCiAgICAgICAgIHJldHVybjsKLSAgICAKLSAgICBpZiAoaW1hZ2VCdWZmZXIt
PmlzQWNjZWxlcmF0ZWQoKSkKLSAgICAgICAgZG93bmNhc3Q8QWNjZWxlcmF0ZWRSZW1vdGVJbWFn
ZUJ1ZmZlclByb3h5PigqaW1hZ2VCdWZmZXIpLmNyZWF0ZUJhY2tlbmQobG9naWNhbFNpemUsIGJh
Y2tlbmRTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0LCBXVEZN
b3ZlKGhhbmRsZSkpOworCisgICAgaWYgKGltYWdlQnVmZmVyLT5yZW5kZXJpbmdNb2RlKCkgPT0g
UmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQpCisgICAgICAgIGltYWdlQnVmZmVyLT5zZXRCYWNr
ZW5kKEFjY2VsZXJhdGVkSW1hZ2VCdWZmZXJTaGFyZWFibGVCYWNrZW5kOjpjcmVhdGUoaW1hZ2VC
dWZmZXItPnBhcmFtZXRlcnMoKSwgV1RGTW92ZShoYW5kbGUpKSk7CiAgICAgZWxzZQotICAgICAg
ICBkb3duY2FzdDxVbmFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXJQcm94eT4oKmltYWdlQnVm
ZmVyKS5jcmVhdGVCYWNrZW5kKGxvZ2ljYWxTaXplLCBiYWNrZW5kU2l6ZSwgcmVzb2x1dGlvblNj
YWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCwgV1RGTW92ZShoYW5kbGUpKTsKKyAgICAgICAg
aW1hZ2VCdWZmZXItPnNldEJhY2tlbmQoVW5hY2NlbGVyYXRlZEltYWdlQnVmZmVyU2hhcmVhYmxl
QmFja2VuZDo6Y3JlYXRlKGltYWdlQnVmZmVyLT5wYXJhbWV0ZXJzKCksIFdURk1vdmUoaGFuZGxl
KSkpOwogfQogCiB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6ZGlkRmx1c2goRGlz
cGxheUxpc3Q6OkZsdXNoSWRlbnRpZmllciBmbHVzaElkZW50aWZpZXIsIFJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCiB7Ci0gICAgYXV0byBp
bWFnZUJ1ZmZlciA9IG1fcmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNhY2hlZEltYWdlQnVmZmVy
KHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7Ci0gICAgaWYgKCFpbWFnZUJ1ZmZlcikKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgaWYgKGltYWdlQnVmZmVyLT5pc0FjY2VsZXJhdGVkKCkpCi0g
ICAgICAgIGRvd25jYXN0PEFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXJQcm94eT4oKmltYWdl
QnVmZmVyKS5kaWRGbHVzaChmbHVzaElkZW50aWZpZXIpOwotICAgIGVsc2UKLSAgICAgICAgZG93
bmNhc3Q8VW5hY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyUHJveHk+KCppbWFnZUJ1ZmZlciku
ZGlkRmx1c2goZmx1c2hJZGVudGlmaWVyKTsKKyAgICBpZiAoYXV0byBpbWFnZUJ1ZmZlciA9IG1f
cmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNhY2hlZEltYWdlQnVmZmVyKHJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcikpCisgICAgICAgIGltYWdlQnVmZmVyLT5kaWRGbHVzaChmbHVzaElkZW50
aWZpZXIpOwogfQogCiB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6dXBkYXRlUmV1
c2FibGVIYW5kbGVzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oCmluZGV4
IDk1ZjhkMmI0MTJmYjkxZGY3N2M2OGYxMzZiMDA3ODZmMDI0ZDdlMjYuLmY4MDVmYzFlZmY5Y2E1
MTQ1MzU5Y2EyOTJiNTJkZGZlZWY4ZGE4MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHkuaApAQCAtODEsNyArODEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjYWNoZU5hdGl2
ZUltYWdlKFdlYkNvcmU6Ok5hdGl2ZUltYWdlJik7CiAgICAgdm9pZCByZWxlYXNlUmVtb3RlUmVz
b3VyY2UoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKIAotICAgIGJvb2wg
d2FpdEZvckltYWdlQnVmZmVyQmFja2VuZFdhc0NyZWF0ZWQoKTsKKyAgICBib29sIHdhaXRGb3JE
aWRDcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQoKTsKICAgICBib29sIHdhaXRGb3JEaWRGbHVzaCgp
OwogCiBwcml2YXRlOgpAQCAtOTUsNyArOTUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRl
UmV1c2FibGVIYW5kbGVzKCk7CiAKICAgICAvLyBNZXNzYWdlcyB0byBiZSByZWNlaXZlZC4KLSAg
ICB2b2lkIGltYWdlQnVmZmVyQmFja2VuZFdhc0NyZWF0ZWQoY29uc3QgV2ViQ29yZTo6RmxvYXRT
aXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgYmFja2VuZFNpemUsIGZs
b2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSwgV2ViQ29yZTo6UGl4ZWxG
b3JtYXQsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyKTsKKyAgICB2b2lkIGRpZENyZWF0ZUltYWdlQnVmZmVyQmFja2VuZChJbWFn
ZUJ1ZmZlckJhY2tlbmRIYW5kbGUsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cik7CiAgICAgdm9pZCBkaWRGbHVzaChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Rmx1c2hJZGVudGlm
aWVyLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogCiAgICAgUmVtb3Rl
UmVzb3VyY2VDYWNoZVByb3h5IG1fcmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5IHsgKnRoaXMgfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkubWVzc2FnZXMuaW4K
aW5kZXggOTIwZGUzZjc3NzU0MDE2NDA1MWZmNTFjZDIxYjUwNTU5ODU0Zjg0NC4uM2E1MzJkNWU0
ZmY2MTZiZGIwN2VkZTdhOWE4M2U5MzEzN2U3M2JmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkubWVz
c2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHkubWVzc2FnZXMuaW4KQEAgLTIzLDcgKzIzLDcgQEAKICNp
ZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKIG1lc3NhZ2VzIC0+IFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eSBOb3RSZWZDb3VudGVkIHsKLSAgICBJbWFnZUJ1ZmZlckJhY2tlbmRXYXNDcmVhdGVk
KFdlYkNvcmU6OkZsb2F0U2l6ZSBsb2dpY2FsU2l6ZSwgV2ViQ29yZTo6SW50U2l6ZSBiYWNrZW5k
U2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlIGNvbG9yU3Bh
Y2UsIGVudW06dWludDhfdCBXZWJDb3JlOjpQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgV2ViS2l0
OjpJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgaGFuZGxlLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQorICAgIERpZENyZWF0
ZUltYWdlQnVmZmVyQmFja2VuZChXZWJLaXQ6OkltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBoYW5k
bGUsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIpCiAgICAgRGlkRmx1c2goV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZsdXNoSWRl
bnRpZmllciBmbHVzaElkZW50aWZpZXIsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFi
bGVJT1N1cmZhY2VCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kLmNwcAppbmRl
eCA1MTYyN2M1ZWRkODkxYjk0ZjM2MzkxYzBhYjRjMjgwOGM2ODBiZWZmLi5lNDEyZTdmNjNmNDA4
N2YyMTc3MjQ2ODJlOTM1OGZiODU4OGZjNWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNl
QmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9j
b2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQuY3BwCkBAIC0zNywxMyAr
MzcsMTMgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FU
RURfSU1QTChJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQpOwogCi1zdGQ6OnVu
aXF1ZV9wdHI8SW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kPiBJbWFnZUJ1ZmZl
clNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHNpemUs
IGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBQaXhlbEZvcm1h
dCBwaXhlbEZvcm1hdCwgY29uc3QgSG9zdFdpbmRvdyopCitzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VC
dWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kPiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3Vy
ZmFjZUJhY2tlbmQ6OmNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBjb25zdCBI
b3N0V2luZG93KikKIHsKLSAgICBJbnRTaXplIGJhY2tlbmRTaXplID0gY2FsY3VsYXRlQmFja2Vu
ZFNpemUoc2l6ZSwgcmVzb2x1dGlvblNjYWxlKTsKKyAgICBJbnRTaXplIGJhY2tlbmRTaXplID0g
Y2FsY3VsYXRlQmFja2VuZFNpemUocGFyYW1ldGVycy5sb2dpY2FsU2l6ZSwgcGFyYW1ldGVycy5y
ZXNvbHV0aW9uU2NhbGUpOwogICAgIGlmIChiYWNrZW5kU2l6ZS5pc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCi0gICAgYXV0byBzdXJmYWNlID0gSU9TdXJmYWNlOjpjcmVhdGUo
YmFja2VuZFNpemUsIGJhY2tlbmRTaXplLCBjYWNoZWRDR0NvbG9yU3BhY2UoY29sb3JTcGFjZSks
IElPU3VyZmFjZTo6Zm9ybWF0Rm9yUGl4ZWxGb3JtYXQocGl4ZWxGb3JtYXQpKTsKKyAgICBhdXRv
IHN1cmZhY2UgPSBJT1N1cmZhY2U6OmNyZWF0ZShiYWNrZW5kU2l6ZSwgYmFja2VuZFNpemUsIGNh
Y2hlZENHQ29sb3JTcGFjZShwYXJhbWV0ZXJzLmNvbG9yU3BhY2UpLCBJT1N1cmZhY2U6OmZvcm1h
dEZvclBpeGVsRm9ybWF0KHBhcmFtZXRlcnMucGl4ZWxGb3JtYXQpKTsKICAgICBpZiAoIXN1cmZh
Y2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC01MywyMSArNTMsMjEgQEAgc3RkOjp1
bmlxdWVfcHRyPEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZD4gSW1hZ2VCdWZm
ZXJTaGFyZWFibGVJT1N1cmYKIAogICAgIENHQ29udGV4dENsZWFyUmVjdChjZ0NvbnRleHQuZ2V0
KCksIEZsb2F0UmVjdChGbG9hdFBvaW50Ojp6ZXJvKCksIGJhY2tlbmRTaXplKSk7CiAKLSAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQ+KHNp
emUsIGJhY2tlbmRTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0
LCBXVEZNb3ZlKHN1cmZhY2UpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxJbWFnZUJ1ZmZlclNo
YXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQ+KHBhcmFtZXRlcnMsIFdURk1vdmUoc3VyZmFjZSkpOwog
fQogCi1zdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5k
PiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZShjb25zdCBGbG9h
dFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBJbnRTaXplJiBpbnRlcm5hbFNpemUsIGZsb2F0IHJl
c29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZv
cm1hdCwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGhhbmRsZSkKK3N0ZDo6dW5pcXVlX3B0cjxJ
bWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQ+IEltYWdlQnVmZmVyU2hhcmVhYmxl
SU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIElt
YWdlQnVmZmVyQmFja2VuZEhhbmRsZSBoYW5kbGUpCiB7CiAgICAgaWYgKCFXVEY6OmhvbGRzX2Fs
dGVybmF0aXZlPE1hY2hTZW5kUmlnaHQ+KGhhbmRsZSkpIHsKICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIGF1dG8gc3Vy
ZmFjZSA9IElPU3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdodChXVEZNb3ZlKFdURjo6Z2V0PE1h
Y2hTZW5kUmlnaHQ+KGhhbmRsZSkpLCBjYWNoZWRDR0NvbG9yU3BhY2UoY29sb3JTcGFjZSkpOwor
ICAgIGF1dG8gc3VyZmFjZSA9IElPU3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdodChXVEZNb3Zl
KFdURjo6Z2V0PE1hY2hTZW5kUmlnaHQ+KGhhbmRsZSkpLCBjYWNoZWRDR0NvbG9yU3BhY2UocGFy
YW1ldGVycy5jb2xvclNwYWNlKSk7CiAgICAgaWYgKCFzdXJmYWNlKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAotICAgIHJldHVybiBtYWtlVW5pcXVlPEltYWdlQnVmZmVyU2hhcmVhYmxlSU9T
dXJmYWNlQmFja2VuZD4obG9naWNhbFNpemUsIGludGVybmFsU2l6ZSwgcmVzb2x1dGlvblNjYWxl
LCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCwgV1RGTW92ZShzdXJmYWNlKSk7CisgICAgcmV0dXJu
IG1ha2VVbmlxdWU8SW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kPihwYXJhbWV0
ZXJzLCBXVEZNb3ZlKHN1cmZhY2UpKTsKIH0KIAogSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIElt
YWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXJCYWNr
ZW5kSGFuZGxlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kLmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVy
U2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZC5oCmluZGV4IGVkNTE2MjRlYjBhYTEwNTBlMTNiZmEx
N2VhMzRmMGZlM2MxZmZmNmQuLjMxODkyMTVmMzNhY2FiNzkwMWZhY2I1MDVmMmE1YzEzOTlhMGRl
NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29j
b2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kLmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZUlP
U3VyZmFjZUJhY2tlbmQuaApAQCAtMzksOCArMzksOCBAQCBjbGFzcyBJbWFnZUJ1ZmZlclNoYXJl
YWJsZUlPU3VyZmFjZUJhY2tlbmQgOiBwdWJsaWMgV2ViQ29yZTo6SW1hZ2VCdWZmZXJJT1N1cmZh
YwogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZh
Y2VCYWNrZW5kKTsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbWFnZUJ1ZmZlclNoYXJlYWJs
ZUlPU3VyZmFjZUJhY2tlbmQpOwogcHVibGljOgotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
SW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kPiBjcmVhdGUoY29uc3QgV2ViQ29y
ZTo6RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBX
ZWJDb3JlOjpDb2xvclNwYWNlLCBXZWJDb3JlOjpQaXhlbEZvcm1hdCwgY29uc3QgV2ViQ29yZTo6
SG9zdFdpbmRvdyopOwotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJTaGFy
ZWFibGVJT1N1cmZhY2VCYWNrZW5kPiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBs
b2dpY2FsU2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgaW50ZXJuYWxTaXplLCBmbG9hdCBy
ZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UsIFdlYkNvcmU6OlBpeGVsRm9ybWF0
LCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
SW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kPiBjcmVhdGUoY29uc3QgUGFyYW1l
dGVycyYsIGNvbnN0IFdlYkNvcmU6Okhvc3RXaW5kb3cqKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlx
dWVfcHRyPEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZD4gY3JlYXRlKGNvbnN0
IFBhcmFtZXRlcnMmLCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUpOwogCiAgICAgdXNpbmcgV2Vi
Q29yZTo6SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpJbWFnZUJ1ZmZlcklPU3VyZmFjZUJh
Y2tlbmQ7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415045</attachid>
            <date>2020-11-30 12:43:17 -0800</date>
            <delta_ts>2020-11-30 12:49:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219007-20201130124316.patch</filename>
            <type>text/plain</type>
            <size>105919</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwMjU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzQxODBjN2E3MjIyNGEz
M2RjMTgxODNkNjBkYTQ1OWU3NzFkNzhkMC4uNjE1YTgzMjVlOTI1YzAzM2RmY2Q3NDJiNjQyNDA0
MDc3ODQ1YTE4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzOCBAQAorMjAyMC0xMS0zMCAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3Nd
IENsZWFuIHVwIHJlY3JlYXRpbmcgdGhlIEltYWdlQnVmZmVyQmFja2VuZCBiZWNhdXNlIG9mIEdQ
VSBjcmFzaGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjE5MDA3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVG8gYWxsb3cgYW5zd2VyaW5nIHF1ZXN0aW9ucyBhYm91dCB0aGUgYmFja2VuZCBjcmVhdGlv
biBwYXJhbWV0ZXJzIHdpdGhvdXQKKyAgICAgICAgaGF2aW5nIHRoZSBiYWNrZW5kIGNyZWF0ZWQs
IHRoZSBuZXcgc3RydWN0dXJlIEltYWdlQnVmZmVyQmFja2VuZDo6UGFyYW1ldGVycworICAgICAg
ICBpcyBpbnRyb2R1Y2VkLgorCisgICAgICAgIFRoaXMgc3RydWN0dXJlIGNvbnRhaW5zIHRoZSBw
YXJhbWV0ZXJzIHdoaWNoIHdlcmUgcGFzc2VkIGJ5IHRoZSBjYWxsZXIgaW4KKyAgICAgICAgdGhl
IFdlYlByb2Nlc3MgYW5kIHdoaWNoIGFyZSBzdWZmaWNpZW50IHRvIHJlY3JlYXRlIFJlbW90ZUlt
YWdlQnVmZmVyIGlmCisgICAgICAgIHRoZSBHUFUgUHJvY2VzcyBjcmFzaGVzIGV2ZW4gYmVmb3Jl
IHRoZSBiYWNrZW5kIG9mIFJlbW90ZUltYWdlQnVmZmVyUHJveHkKKyAgICAgICAgaXMgY3JlYXRl
ZC4KKworICAgICAgICBDb25jcmV0ZUltYWdlQnVmZmVyIGFuZCBJbWFnZUJ1ZmZlckJhY2tlbmQg
d2lsbCBob2xkIGFuIGluc3RhbmNlIG9mIHRoZQorICAgICAgICBuZXcgc3RydWN0dXJlIEltYWdl
QnVmZmVyQmFja2VuZDo6UGFyYW1ldGVycy4KKworICAgICAgICBJbiB0aGlzIHBhdGNoIGFsc28s
IHRoZSBuYW1lcyBmb3IgcmVwbGF5aW5nIGJhY2sgdGhlIERpc3BsYXlMaXN0IGludG8gYW4KKyAg
ICAgICAgSW1hZ2VCdWZmZXJCYWNrZW5kIHdpbGwgdG8gYmUgY29uc2lzdGVudCBhbmQgbW9yZSBj
bGVhci4gV2Ugd2lsbCBhZG9wdCB0aGUKKyAgICAgICAgZm9sbG93aW5nIG5hbWluZyBzY2hlbWU6
CisKKyAgICAgICAgLS0gc3VibWl0RGlzcGxheUxpc3QoKTogUmVwbGF5cyBiYWNrIGEgRGlzcGxh
eUxpc3QuIElmIHRoZSByZXBsYXkgYmFjaworICAgICAgICAgICBoYXBwZW5zIGluIEdQVVAsIG5v
IG1lc3NhZ2UgY29uZmlybWluZyB0aGUgcmVwbGF5IGJhY2sgd2lsbCBiZSBzZW50CisgICAgICAg
ICAgIHRvIFdlYlAuCisKKyAgICAgICAgLS0gY29tbWl0RHJhd2luZ0NvbnRleHQoKTogUmVwbGF5
cyBiYWNrIHRoZSBEaXNwbGF5TGlzdCBvZiBEcmF3aW5nQ29udGV4dC4KKyAgICAgICAgICAgSWYg
dGhlIHJlcGxheSBiYWNrIGhhcHBlbnMgaW4gR1BVUCwgYSBtZXNzYWdlIGNvbmZpcm1pbmcgdGhl
IHJlcGxheQorICAgICAgICAgICBiYWNrIHdpbGwgYmUgc2VudCB0byBXZWJQLiBXZWJQIHdpbGwg
bm90IGJlIGJsb2NrZWQgdGlsbCB0aGlzIG1lc3NhZ2UKKyAgICAgICAgICAgaXMgc2VudC4KKwor
ICAgICAgICAtLSBmbHVzaERyYXdpbmdDb250ZXh0KCk6IFRoaXMgd2lsbCBjYWxscyBjb21taXRE
cmF3aW5nQ29udGV4dCgpIGFuZCB3YWl0cworICAgICAgICAgICBmb3IgdGhlIGNvbmZpcm1pbmcg
bWVzc2FnZSB0byBiZSBzZW50LgorCisgICAgICAgIEFsc28gcmVwbGFjZSBhbGwgdGhlIGluc3Rh
bmNlcyBvZiAnaXNBY2NlbGVyYXRlZCcgYnkgJ3JlbmRlcmluZ01vZGUnLiBTbworICAgICAgICBu
byBuZWVkIHRvIGNvbnZlcnQgb25lIHR5cGUgdG8gdGhlIG90aGVyLgorCisgICAgICAgICogSGVh
ZGVycy5jbWFrZToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpwcmVwYXJl
Rm9yRGlzcGxheSk6CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdl
QnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpDb25jcmV0ZUltYWdlQnVmZmVyOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6Q29uY3JldGVJbWFnZUJ1ZmZlcjo6Q29uY3JldGVJbWFnZUJ1
ZmZlcik6CisgICAgICAgIC0tIE1ha2UgQ29uY3JldGVJbWFnZUJ1ZmZlciBvd24gYW4gaW5zdGFu
Y2Ugb2YgSW1hZ2VCdWZmZXJCYWNrZW5kOjpQYXJhbWV0ZXJzLgorICAgICAgICAtLSBBZGQgbWV0
aG9kcyB0byBzZXQgYW5kIGNsZWFyIHRoZSBiYWNrZW5kIG9mIGFuIEltYWdlQnVmZmVyLgorCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlQnVmZmVyOjpjb21taXREcmF3aW5nQ29udGV4dCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZUJ1ZmZlcjo6c3VibWl0RGlzcGxheUxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VCdWZmZXI6OmRpZEZsdXNoKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpmbHVz
aERyYXdpbmdDb250ZXh0QW5kQ29tbWl0KTogRGVsZXRlZC4KKyAgICAgICAgLS0gRXhwb3NlIHRo
ZSBJbWFnZUJ1ZmZlckJhY2tlbmQgY3JlYXRpb24gcGFyYW1ldGVycyB0aHJvdWdoIG1ldGhvZHMu
CisgICAgICAgIC0tIEFkb3B0IHRoZSBuZXcgbmFtaW5nIHNjaGVtZSBmb3IgdGhlIHJlcGxheSBi
YWNrIG1ldGhvZHMuCisgICAgICAgIC0tIEV4cG9zZSBjb21taXREcmF3aW5nQ29udGV4dCgpIGFu
ZCBkaWRGbHVzaCgpIHNvIG5vIGNhc3RpbmcgaXMgbmVlZGVkCisgICAgICAgICAgIHdoZW4gY2Fs
bGluZyB0aGVzZSBmdW5jdGlvbnMgdGhyb3VnaCBSZW1vdGVJbWFnZUJ1ZmVyUHJveHkuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjpJbWFnZUJ1ZmZlckJhY2tlbmQpOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjp0b0JHUkFEYXRhIGNvbnN0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlQnVmZmVyQmFja2VuZDo6bWVtb3J5Q29zdCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OmJ5dGVzUGVyUm93IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQmFja2VuZDo6dG9CYWNrZW5kQ29vcmRpbmF0ZXMgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjpsb2dpY2FsU2l6ZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OnJlc29sdXRpb25T
Y2FsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OmNvbG9y
U3BhY2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjpwaXhl
bEZvcm1hdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6Omxv
Z2ljYWxSZWN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQmFja2VuZDo6
YmFja2VuZFJlY3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5k
OjpiYWNrZW5kU2l6ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1
ZmZlckJhY2tlbmQ6OmJhc2VUcmFuc2Zvcm0gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAtLSBB
ZGQgdGhlIHN0cnVjdHVyZSBJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnMuIAorICAgICAg
ICAtLSBNYWtlIEltYWdlQnVmZmVyQmFja2VuZCBvd24gYW4gaW5zdGFuY2Ugb2YgdGhpcyBzdHJ1
Y3R1cmUuCisgICAgICAgIC0tIE1ha2UgYmFja2VuZFNpemUoKSBhIHB1cmUgdmlydHVhbCBtZXRo
b2QuCisgICAgICAgIC0tIERlbGV0ZSBiYXNlVHJhbnNmb3JtKCkgc2luY2UgaXQgaXMgaW1wbGVt
ZW50ZWQgaW4gQ29uY3JldGVJbWFnZUJ1ZmZlci4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL1BsYXRmb3JtSW1hZ2VCdWZmZXIuaDoKKyAgICAgICAgKGlzVHlwZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQ6OmRyYXdQYXR0ZXJuKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJm
YWNlQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VT
dXJmYWNlQmFja2VuZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ2Fp
cm9JbWFnZVN1cmZhY2VCYWNrZW5kOjpJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2Vu
ZCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2Vu
ZDo6cGxhdGZvcm1UcmFuc2Zvcm1Db2xvclNwYWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZC5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2Vu
ZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQ6
OkltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQ6OmJhY2tlbmRTaXplIGNvbnN0KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNHQmFja2VuZDo6c2V0dXBDb250ZXh0
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ0dCYWNrZW5kOjpjb3B5SW1h
Z2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OnNpbmtJ
bnRvSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OmRyYXcp
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OmRyYXdQYXR0ZXJuKToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ0dCYWNrZW5kOjp0b0NGRGF0YSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNHQmFja2VuZDo6YmFzZVRyYW5zZm9ybSBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZm
ZXJDR0JhY2tlbmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZl
ckNHQml0bWFwQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNHQml0
bWFwQmFja2VuZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ0dCaXRt
YXBCYWNrZW5kOjpJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y29weU5hdGl2ZUltYWdlIGNvbnN0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFj
a2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6
OkltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1
ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmJhY2tlbmRTaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6ZHJhd0NvbnN1bWluZyk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmg6Cisg
ICAgICAgIC0tIENoYW5nZSB0aGUgY3JlYXRlKCkgbWV0aG9kcyB0byB0YWtlIGEgIlBhcmFtZXRl
cnMiIGFyZ3VtZW50LgorICAgICAgICAtLSBVc2UgdGhlIGJhY2tlbmQgbWV0aG9kIHRvIGFjY2Vz
cyB0aGUgIlBhcmFtZXRlcnMiIHN0cnVjdHVyZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEZsdXNoSWRlbnRpZmllci5oOiBBZGRlZC4KKyAg
ICAgICAgTW92ZSBEaXNwbGF5TGlzdEZsdXNoSWRlbnRpZmllciB0byBhIHNlcGFyYXRlIGZpbGUg
c28gaXQgY2FuIGJlIGluY2x1ZGVkCisgICAgICAgIGluIEltYWdlQnVmZmVyLmggd2l0aG91dCBo
YXZpbmcgdG8gaW5jbHVkZSBEaXNwbGF5TGlzdC5oLgorCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXIuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpJbWFnZUJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpJbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OkltYWdlQnVmZmVyOjppbml0aWFsRHJhd2luZ0NvbnRleHRDVE0p
OiBEZWxldGVkLgorICAgICAgICAtLSBObyBuZWVkIHRvIHBhc3MgdGhlICdzaXplJyBhcmd1bWVu
dCB0d2ljZSBpbiB0aGUgJ2NyZWF0ZScgbWV0aG9kcy4gVGhlCisgICAgICAgICAgIHN0cnVjdHVy
ZSBQYXJhbWV0ZXJzIGhhcyB0byBiZSBwYXNzZWQgdG8gdGhlIGNvbnN0cnVjdG9yIGFueXdheS4K
KyAgICAgICAgLS0gTm8gbmVlZCBmb3IgaW5pdGlhbERyYXdpbmdDb250ZXh0Q1RNKCkgc2luY2Ug
aXQgaXMgZXF1aXZhbGVudCB0byAKKyAgICAgICAgICAgYmFzZVRyYW5zZm9ybSgpLgorCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpjb3B5SW1h
Z2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6
OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OmRy
YXdQYXR0ZXJuKToKKyAgICAgICAgLS0gVXNlIHRoZSBiYWNrZW5kIG1ldGhvZCB0byBhY2Nlc3Mg
dGhlICJQYXJhbWV0ZXJzIiBzdHJ1Y3R1cmUuCisKIDIwMjAtMTEtMzAgIFlvdWVubiBGYWJsZXQg
IDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEludHJvZHVjZSBhbiBleHBlcmltZW50YWwg
ZmxhZyBzcGVjaWZpYyB0byBWUDkgcHJvZmlsZSAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGFkNzhjMDA1ODVjMmIx
Zjg4NzJmYWM5NWY1OWNjYWVjNDk2NGQ3MjMuLjgxZjdjODU2YmZkNzIzNjRiODNiMTZlNDgxYThl
NThhMTA5NGUxNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTkgQEAKKzIwMjAtMTEtMzAgIFNhaWQg
QWJvdS1IYWxsYXdhICA8c2FpZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9jZXNzXSBD
bGVhbiB1cCByZWNyZWF0aW5nIHRoZSBJbWFnZUJ1ZmZlckJhY2tlbmQgYmVjYXVzZSBvZiBHUFUg
Y3Jhc2hpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIxOTAwNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRoZXJlIGlzIG5vIG5lZWQgdG8gc3RvcmUgdGhlIGJhY2tlbmQgcGFyYW1ldGVycyBpbiBSZW1v
dGVJbWFnZUJ1ZmZlclByb3h5LgorICAgICAgICBUaGVzZSBwYXJhbWV0ZXJzIGFyZSBub3cgc3Rv
cmVkIGluIHRoZSBiYXNlIGNsYXNzIEltYWdlQnVmZmVyIGJlZm9yZSB0aGUKKyAgICAgICAgYmFj
a2VuZCBpcyBjcmVhdGVkLgorCisgICAgICAgIFJlbW92ZSB0aGUgdHJhaXRzIGRlZmluaXRpb24g
Zm9yIFJlbW90ZUltYWdlQnVmZmVyUHJveHkgdHlwZXMgYmVjYXVzZQorICAgICAgICB0aGV5IGFy
ZSB3cm9uZy4gQWxsIEltYWdlQnVmZmVycyBoYXZlIHZhbGlkIHJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcigpCisgICAgICAgIHJlZ2FyZGxlc3Mgd2hldGhlciB0aGV5IGFyZSByZW1vdGUgb3Ig
bm90LiBJbWFnZUJ1ZmZlcjo6c2V0QmFja2VuZCBhbmQKKyAgICAgICAgSW1hZ2VCdWZmZXI6OmNv
bW1pdEZsdXNoRGlzcGxheUxpc3QoKSBhcmUgbm93IGltcGxlbWVudGVkIGluIFdlYkNvcmUuIFNv
CisgICAgICAgIG5vIGNhc3RpbmcgaXMgbmVlZGVkLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFn
ZUJ1ZmZlcjo6UmVtb3RlSW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFn
ZUJ1ZmZlcjo6c3VibWl0RGlzcGxheUxpc3QpOiBEZWxldGVkLgorICAgICAgICBzdWJtaXREaXNw
bGF5TGlzdCgpIGlzIG5vdyBhIHZpcnR1YWwgbWV0aG9kIG9mIEltYWdlQnVmZmVyLiBTbyBtYWtl
IGl0CisgICAgICAgIHByaXZhdGUgYW5kIGlnbm9yZSB0aGUgcmV0dXJuIG9mIERpc3BsYXlMaXN0
OjpSZXBsYXllcjo6cmVwbGF5KCkgc2luY2UgCisgICAgICAgIHRoZSBjYWxsZXIgZG9lcyBub3Qg
dXNlIGl0LgorCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdC
YWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6ZGlk
Q3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVy
aW5nQmFja2VuZDo6YXBwbHlEaXNwbGF5TGlzdHNGcm9tSGFuZGxlKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6aW1hZ2VCdWZmZXJCYWNrZW5kV2FzQ3JlYXRlZCk6
IERlbGV0ZWQuCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdC
YWNrZW5kLmg6CisgICAgICAgIFJlbmFtZSAnaW1hZ2VCdWZmZXJCYWNrZW5kV2FzQ3JlYXRlZCgp
JyB0byAnZGlkQ3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kKCknCisgICAgICAgIHRvIGJlIGNvbnNp
c3RlbnQgd2l0aCAnZGlkRmx1c2goKScuCisKKyAgICAgICAgKiBTaGFyZWQvUmVtb3RlTGF5ZXJU
cmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVM
YXllckJhY2tpbmdTdG9yZTo6ZGlzcGxheSk6CisgICAgICAgIENhbGwgdGhlIGZ1bmN0aW9uIHdp
dGggdGhlIG5ldyBuYW1lIGFuZCBkZWxldGUgdGhlIEZJWE1FIGNvbW1lbnQuCisKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tl
bmQuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tl
bmQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFw
QmFja2VuZDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kKToKKyAgICAgICAgKFdl
YktpdDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpiYWNrZW5kU2l6ZSBjb25z
dCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFi
bGVCaXRtYXBCYWNrZW5kLmg6CisgICAgICAgIFVzZSB0aGUgbmV3IHN0cnVjdHVyZSAnSW1hZ2VC
dWZmZXJCYWNrZW5kOjpQYXJhbWV0ZXJzJy4gSW1wbGVtZW50IHRoZQorICAgICAgICB2aXJ0dWFs
IG1ldGhvZCAnYmFja2VuZFNpemUoKScuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9QbGF0Zm9ybVJlbW90ZUltYWdlQnVmZmVyUHJveHkuaDoKKyAgICAgICAgKGlzVHlwZSk6
IERlbGV0ZWQuCisgICAgICAgIERlbGV0ZSB0aGUgd3JvbmcgdHJhaXRzLgorCisgICAgICAgICog
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlclByb3h5OjpjcmVhdGUpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVJbWFnZUJ1ZmZlclByb3h5OjpSZW1vdGVJbWFnZUJ1ZmZlclByb3h5KToKKyAg
ICAgICAgVXNlIHRoZSBuZXcgc3RydWN0dXJlICdJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRl
cnMnLgorCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyUHJveHk6OmNsZWFyQmFj
a2VuZCk6IERlbGV0ZWQuCisgICAgICAgIFRoaXMgaXMgbm93IGltcGxlbWVudGVkIGluIENvbmNy
ZXRlSW1hZ2VCdWZmZXI6OmNsZWFyQmFja2VuZCgpLgorCisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUltYWdlQnVmZmVyUHJveHk6OmNyZWF0ZUJhY2tlbmQpOiBEZWxldGVkLgorICAgICAgICBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmRpZENyZWF0ZUltYWdlQnVmZmVyQmFja2VuZCgpIGNy
ZWF0ZXMgdGhlCisgICAgICAgIGJhY2tlbmQgYW5kIENvbmNyZXRlSW1hZ2VCdWZmZXI6OnNldEJh
Y2tlbmQoKSBzZXRzIGl0LgorCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyUHJv
eHk6OmRpZEZsdXNoKTogRGVsZXRlZC4KKyAgICAgICAgZGlkRmx1c2goKSBpcyBub3cgdmlydHVh
bCBzbyBpdCBjYW4gYmUgcHJpdmF0ZS4KKworICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1
ZmZlclByb3h5OjpzaXplIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
SW1hZ2VCdWZmZXJQcm94eTo6cmVuZGVyaW5nTW9kZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyUHJveHk6OmNvbG9yU3BhY2UgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlclByb3h5OjpwaXhlbEZvcm1h
dCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIFRoZXNlIGZ1bmN0aW9ucyBhcmUgbm93IGltcGxl
bWVudGVkIGluIENvbmNyZXRlSW1hZ2VCdWZmZXIuCisKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
SW1hZ2VCdWZmZXJQcm94eTo6c3VibWl0RGlzcGxheUxpc3QpOiBEZWxldGVkLgorICAgICAgICBz
dWJtaXREaXNwbGF5TGlzdCgpIGlzIG5vdyB2aXJ0dWFsLgorCisgICAgICAgICogV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpyZWVzdGFibGlzaEdQVVByb2Nl
c3NDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5Ojp3YWl0Rm9yRGlkQ3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpjcmVhdGVJbWFnZUJ1ZmZlcik6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6ZGlkQ3JlYXRlSW1hZ2VC
dWZmZXJCYWNrZW5kKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5OjpkaWRGbHVzaCk6CisgICAgICAgIChXZWJLaXQ6OnJlY3JlYXRlSW1hZ2VCdWZmZXIpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6Ondh
aXRGb3JJbWFnZUJ1ZmZlckJhY2tlbmRXYXNDcmVhdGVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjppbWFnZUJ1ZmZlckJhY2tlbmRXYXND
cmVhdGVkKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaDoKKyAgICAgICAgTm8gbmVlZCB0byBjYXN0IHRoZSBJ
bWFnZUJ1ZmZlciB0byBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5IHNpbmNlIGFsbCB3aGF0CisgICAg
ICAgIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSBuZWVkcyBjYW4gYmUgYWNjZXNzZWQgdGhy
b3VnaCB0aGUgYmFzZSBjbGFzcy4KKworICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgUmVuYW1l
ICdJbWFnZUJ1ZmZlckJhY2tlbmRXYXNDcmVhdGVkJyB0byAnRGlkQ3JlYXRlSW1hZ2VCdWZmZXJC
YWNrZW5kJworICAgICAgICB0byBiZSBjb25zaXN0ZW50IHdpdGggJ0RpZEZsdXNoJy4gTm8gbmVl
ZCB0byBwYXNzIHRoZSBjcmVhdGlvbiBwYXJhbWV0ZXJzCisgICAgICAgIHNpbmNlIHRoZXkgc2V0
IGluIHRoZSBDb25jcmV0ZUltYWdlQnVmZmVyLiBObyBuZWVkIHRvIHBhc3MgdGhlIGJhY2tlbmRT
aXplCisgICAgICAgIHNpbmNlIGl0IGNhbiBiZSByZXRyaWV2ZWQgdGhyb3VnaCB0aGUgYmFja2Vu
ZCBpdHNlbGYuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFn
ZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViS2l0OjpJ
bWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZSk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZh
Y2VCYWNrZW5kLmg6CisgICAgICAgIFVzZSB0aGUgbmV3IHN0cnVjdHVyZSAnSW1hZ2VCdWZmZXJC
YWNrZW5kOjpQYXJhbWV0ZXJzJy4KKwogMjAyMC0xMS0zMCAgWW91ZW5uIEZhYmxldCAgPHlvdWVu
bkBhcHBsZS5jb20+CiAKICAgICAgICAgSW50cm9kdWNlIGFuIGV4cGVyaW1lbnRhbCBmbGFnIHNw
ZWNpZmljIHRvIFZQOSBwcm9maWxlIDIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRl
cnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IDM3ODlhYTM4Mzk0
MGQyNTc0MTI0YmMyZmY0M2U3ZWVjNGFlOTUwZDUuLmRmYTI0NGZkY2Q5ZDczM2Q3Yzk1ODkyNzNl
MDY5YzdjMDA0ZmU3YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UK
KysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtMTI3MCw2ICsxMjcwLDcgQEAg
c2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd0dseXBoc1JlY29yZGVyLmgKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3aW5nQ29udGV4dC5oCisgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0Rmx1c2hJZGVudGlmaWVyLmgK
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJbWFnZUJ1ZmZl
ci5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1
ZmZlci5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRl
bVR5cGUuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IDM4NDUzOWM0ZDQ4MTNlNWU2ODg3MjQxODExYmI1NDk3MDA0MWI4MTUuLjc2
MGUyZmExY2UxMDYwNTdlMGUyZDUwYTBkYTRmZGQ5Mjg4YTM4N2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIxNzksNiArMjE3
OSw3IEBACiAJCTcyMTQ0MzM0MjIzRUM5MTYwMEYxMkZGNyAvKiBTVkdQcm9wZXJ0eU93bmVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NUVFNTM2MDIy
M0IyQTIxMDBGQkE5NDQgLyogU1ZHUHJvcGVydHlPd25lci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcyMUI0OTc0MjUxMkJBM0IwMEZFOUQzQiAv
KiBJbWFnZUJpdG1hcEJhY2tpbmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDcyMUI0OTcwMjUxMkFDMDQwMEZFOUQzQiAvKiBJbWFnZUJpdG1hcEJhY2tp
bmcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3
MjI4M0YwRTIzMEIyNjhDMDBGNUQ4MjggLyogSW1hZ2VQYWludGluZ09wdGlvbnMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyQzE4QTNGMjMwQjA0Qjcw
MDY4NDdDNyAvKiBJbWFnZVBhaW50aW5nT3B0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTcyNDJBQzk3MjU3NThGRTEwMDVBOUNGMSAvKiBE
aXNwbGF5TGlzdEZsdXNoSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNzI0MkFDOTUyNTc1OEZFMDAwNUE5Q0YxIC8qIERpc3BsYXlMaXN0
Rmx1c2hJZGVudGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNzI0RUQzMzIxQTNBOEIyMzAwRjVGMTNDIC8qIEpTRVhUQmxlbmRNaW5NYXgu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyNEVEMzMw
MUEzQThCMjMwMEY1RjEzQyAvKiBKU0VYVEJsZW5kTWluTWF4LmggKi87IH07CiAJCTcyNEVFNTUw
MURDODBEN0YwMEE5MUZGQiAvKiBBY3Rpdml0eVN0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjRFRTU0RTFEQzdGMjVCMDBBOTFGRkIgLyogQWN0
aXZpdHlTdGF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTcyNEVFNTUxMURDODBEODQwMEE5MUZGQiAvKiBBY3Rpdml0eVN0YXRlQ2hhbmdlT2Jz
ZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcy
NEVFNTRGMURDN0YyNUIwMEE5MUZGQiAvKiBBY3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTAwNTMs
NiArMTAwNTQsNyBAQAogCQk3MjFCNDk2RjI1MTJBQzA0MDBGRTlEM0IgLyogSW1hZ2VCaXRtYXBC
YWNraW5nLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEltYWdlQml0bWFwQmFja2luZy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyMUI0OTcwMjUxMkFDMDQwMEZFOUQzQiAvKiBJ
bWFnZUJpdG1hcEJhY2tpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VCaXRtYXBCYWNraW5nLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyMkE4MTVDMjM4RkQ1MDUwMEMwMDU4MyAv
KiBBbmltYXRpb25GcmFtZVJhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQW5pbWF0aW9uRnJhbWVSYXRl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyNDJBQzk1MjU3NThGRTAwMDVBOUNG
MSAvKiBEaXNwbGF5TGlzdEZsdXNoSWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBEaXNwbGF5TGlzdEZsdXNoSWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3MjRFRDMyOTFBM0E3RTU0MDBGNUYxM0MgLyogRVhUQmxlbmRNaW5NYXgu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRVhUQmxlbmRNaW5NYXgu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjRFRDMyQTFBM0E3RTU0MDBGNUYx
M0MgLyogRVhUQmxlbmRNaW5NYXguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RVhUQmxlbmRNaW5NYXguaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI0RUQzMkIx
QTNBN0U1NDAwRjVGMTNDIC8qIEVYVEJsZW5kTWluTWF4LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBFWFRCbGVuZE1pbk1heC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0x
Nzc5Nyw2ICsxNzc5OSw3IEBACiAJCQkJMUNBRjU2REUyNTMwMjQ1QTAwMTdCNDcyIC8qIERpc3Bs
YXlMaXN0RHJhd0dseXBoc1JlY29yZGVyQ29yZVRleHQuY3BwICovLAogCQkJCTU1QzBBMjk1MjNG
RTJDRTAwMEYyQ0I5MyAvKiBEaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0LmNwcCAqLywKIAkJCQk3
MkVBMDlGOTIzRkNDQzZBMDA4NTA0QTUgLyogRGlzcGxheUxpc3REcmF3aW5nQ29udGV4dC5oICov
LAorCQkJCTcyNDJBQzk1MjU3NThGRTAwMDVBOUNGMSAvKiBEaXNwbGF5TGlzdEZsdXNoSWRlbnRp
Zmllci5oICovLAogCQkJCTcyRUEwOUY3MjNGQ0NCM0QwMDg1MDRBNSAvKiBEaXNwbGF5TGlzdElt
YWdlQnVmZmVyLmggKi8sCiAJCQkJRjQyMkI4QjYyNTNGNzA2NTAwNEU3N0U4IC8qIERpc3BsYXlM
aXN0SXRlbUJ1ZmZlci5jcHAgKi8sCiAJCQkJRjQyMkI4QjUyNTNGNzA2NTAwNEU3N0U4IC8qIERp
c3BsYXlMaXN0SXRlbUJ1ZmZlci5oICovLApAQCAtMzEyMjQsNiArMzEyMjcsNyBAQAogCQkJCTA3
OUQwODZCMTYyRjIxRjkwMERCODY1OCAvKiBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMDdCNzExNkQxRDg5OUU2MzAwOUYwRkZCIC8qIENhcHR1cmVE
ZXZpY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3QjcxMTZGMUQ4OTlFNjMwMDlGMEZGQiAvKiBD
YXB0dXJlRGV2aWNlTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTRGMEJFMzEyNTcxMkY2
RTAwOUU3NDMxIC8qIENhcmV0UmVjdENvbXB1dGF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlD
REM3MzQxNTE5Nzc4OTZEMDA0NkJGQzUgLyogQ0FSaW5nQnVmZmVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQlFNEFCQUJGNTIzNjhDNkVGMDBGQTQzNDUgLyogQ2FzY2FkZUxldmVsLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1NzMwM0JCQjIwMDZDNkVFMDAzNTU5NjUgLyogQ0JPUkJpbmFyeS5oIGluIEhl
YWRlcnMgKi8sCkBAIC0zMTY4Niw2ICszMTY5MCw3IEBACiAJCQkJMEZFNUZCRDMxQzNERDUxRTAw
MDdBMkNBIC8qIERpc3BsYXlMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQ0FGNTZEQjI1MzAx
QUM4MDAxN0I0NzIgLyogRGlzcGxheUxpc3REcmF3R2x5cGhzUmVjb3JkZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTU1QUQwOTQwMjQwODk2NDAwMERFNEQyRiAvKiBEaXNwbGF5TGlzdERyYXdpbmdD
b250ZXh0LmggaW4gSGVhZGVycyAqLywKKwkJCQk3MjQyQUM5NzI1NzU4RkUxMDA1QTlDRjEgLyog
RGlzcGxheUxpc3RGbHVzaElkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTU1QUQwOTNF
MjQwODk2MzUwMERFNEQyRiAvKiBEaXNwbGF5TGlzdEltYWdlQnVmZmVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQlGNEQ0MEJDOTI1NTQ2M0JGMDA3MjEzNDkgLyogRGlzcGxheUxpc3RJdGVtQnVmZmVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkU1RkJENTFDM0RENTFFMDAwN0EyQ0EgLyogRGlzcGxh
eUxpc3RJdGVtcy5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNTEyMSw3ICszNTEyNiw2IEBACiAJCQkJ
QTBFRTBERjgxNDRGODI1NTAwRjgwQjBEIC8qIFdlYkdMRGVidWdTaGFkZXJzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk2RTNGQUU4RjE0NzMzRkRCMDBFNDIzMDcgLyogV2ViR0xEZXB0aFRleHR1cmUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTVCMzA2OTVFMThCM0QzNDUwMDk5RDVFOCAvKiBXZWJHTERy
YXdCdWZmZXJzLmggaW4gSGVhZGVycyAqLywKLQkJCQlFNEYwQkUzMTI1NzEyRjZFMDA5RTc0MzEg
LyogQ2FyZXRSZWN0Q29tcHV0YXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTZFQkYwRTU1MTJB
ODkyOTgwMERCMTcwOSAvKiBXZWJHTEV4dGVuc2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlD
N0I5Q0YxMDQyRDMyRjAwMDlENDQ3IC8qIFdlYkdMRnJhbWVidWZmZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTQ5RkZCRjNGMTFDOTNFRTMwMDZBNzExOCAvKiBXZWJHTExheWVyLmggaW4gSGVhZGVy
cyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRl
cmluZ0NvbnRleHQyREJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKaW5kZXggY2ZmN2U0NzhmZTM2OTNmZGEyZTUwYjVh
NmEyN2I2MzJjZjI1YWZiYS4uYWQ5ODNlYTg5ZmY2OTJiM2ZlN2VlYzRiM2I4NmI1MzYyYmQ5ZjYx
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKQEAgLTIwNDIsNyArMjA0Miw3IEBAIEdyYXBoaWNz
Q29udGV4dCogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6ZHJhd2luZ0NvbnRleHQoKSBj
b25zdAogdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpwcmVwYXJlRm9yRGlzcGxh
eSgpCiB7CiAgICAgaWYgKGF1dG8gYnVmZmVyID0gY2FudmFzQmFzZSgpLmJ1ZmZlcigpKQotICAg
ICAgICBidWZmZXItPmZsdXNoRHJhd2luZ0NvbnRleHRBbmRDb21taXQoKTsKKyAgICAgICAgYnVm
ZmVyLT5jb21taXREcmF3aW5nQ29udGV4dCgpOwogfQogCiBib29sIENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyREJhc2U6Om5lZWRzUHJlcGFyYXRpb25Gb3JEaXNwbGF5KCkgY29uc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIu
aAppbmRleCA4MjQyOTkwMDJlZTY2MGYwYmFlM2YxNjNhZDFjODliMDNkNGRkYTc5Li5mMzEwYTYy
YjQ2M2MwYjU4YzlkZWRiMzA2NWZiMjcxYzBhYzgyZWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZlci5oCkBAIC0zNiwz
MCArMzYsNDEgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEltYWdlQnVmZmVyVHlw
ZSA9IENvbmNyZXRlSW1hZ2VCdWZmZXIsIHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KICAgICBzdGF0
aWMgUmVmUHRyPEltYWdlQnVmZmVyVHlwZT4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwg
ZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0
IHBpeGVsRm9ybWF0LCBjb25zdCBIb3N0V2luZG93KiBob3N0V2luZG93LCBBcmd1bWVudHMmJi4u
LiBhcmd1bWVudHMpCiAgICAgewotICAgICAgICBhdXRvIGJhY2tlbmQgPSBCYWNrZW5kVHlwZTo6
Y3JlYXRlKHNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQsIGhv
c3RXaW5kb3cpOworICAgICAgICBhdXRvIHBhcmFtZXRlcnMgPSBJbWFnZUJ1ZmZlckJhY2tlbmQ6
OlBhcmFtZXRlcnMgeyBzaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9y
bWF0IH07CisgICAgICAgIGF1dG8gYmFja2VuZCA9IEJhY2tlbmRUeXBlOjpjcmVhdGUocGFyYW1l
dGVycywgaG9zdFdpbmRvdyk7CiAgICAgICAgIGlmICghYmFja2VuZCkKICAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOwotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEltYWdlQnVmZmVyVHlw
ZShXVEZNb3ZlKGJhY2tlbmQpLCBzdGQ6OmZvcndhcmQ8QXJndW1lbnRzPihhcmd1bWVudHMpLi4u
KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW1hZ2VCdWZmZXJUeXBlKHBhcmFtZXRl
cnMsIFdURk1vdmUoYmFja2VuZCksIHN0ZDo6Zm9yd2FyZDxBcmd1bWVudHM+KGFyZ3VtZW50cyku
Li4pKTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJbWFnZUJ1ZmZlclR5cGUgPSBD
b25jcmV0ZUltYWdlQnVmZmVyLCB0eXBlbmFtZS4uLiBBcmd1bWVudHM+CiAgICAgc3RhdGljIFJl
ZlB0cjxJbWFnZUJ1ZmZlclR5cGU+IGNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIGNvbnN0
IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgQXJndW1lbnRzJiYuLi4gYXJndW1lbnRzKQogICAg
IHsKLSAgICAgICAgYXV0byBiYWNrZW5kID0gQmFja2VuZFR5cGU6OmNyZWF0ZShzaXplLCBjb250
ZXh0KTsKKyAgICAgICAgYXV0byBwYXJhbWV0ZXJzID0gSW1hZ2VCdWZmZXJCYWNrZW5kOjpQYXJh
bWV0ZXJzIHsgc2l6ZSwgMSwgQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4IH07
CisgICAgICAgIGF1dG8gYmFja2VuZCA9IEJhY2tlbmRUeXBlOjpjcmVhdGUocGFyYW1ldGVycywg
Y29udGV4dCk7CiAgICAgICAgIGlmICghYmFja2VuZCkKICAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOwotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEltYWdlQnVmZmVyVHlwZShXVEZNb3Zl
KGJhY2tlbmQpLCBzdGQ6OmZvcndhcmQ8QXJndW1lbnRzPihhcmd1bWVudHMpLi4uKSk7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW1hZ2VCdWZmZXJUeXBlKHBhcmFtZXRlcnMsIFdURk1v
dmUoYmFja2VuZCksIHN0ZDo6Zm9yd2FyZDxBcmd1bWVudHM+KGFyZ3VtZW50cykuLi4pKTsKICAg
ICB9CiAKLSAgICBib29sIGlzQWNjZWxlcmF0ZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBC
YWNrZW5kVHlwZTo6aXNBY2NlbGVyYXRlZDsgfQorICAgIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5n
TW9kZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEJhY2tlbmRUeXBlOjpyZW5kZXJpbmdNb2Rl
OyB9CiAKIHByb3RlY3RlZDoKLSAgICBDb25jcmV0ZUltYWdlQnVmZmVyKHN0ZDo6dW5pcXVlX3B0
cjxCYWNrZW5kVHlwZT4mJiBiYWNrZW5kID0gbnVsbHB0ciwgUmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciA9IFJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcjo6Z2VuZXJhdGUoKSkKLSAgICAgICAgOiBtX2JhY2tlbmQoV1RGTW92ZShiYWNrZW5k
KSkKKyAgICBDb25jcmV0ZUltYWdlQnVmZmVyKGNvbnN0IEltYWdlQnVmZmVyQmFja2VuZDo6UGFy
YW1ldGVycyYgcGFyYW1ldGVycywgc3RkOjp1bmlxdWVfcHRyPEJhY2tlbmRUeXBlPiYmIGJhY2tl
bmQgPSBudWxscHRyLCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyID0gUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyOjpnZW5lcmF0ZSgpKQor
ICAgICAgICA6IG1fcGFyYW1ldGVycyhwYXJhbWV0ZXJzKQorICAgICAgICAsIG1fYmFja2VuZChX
VEZNb3ZlKGJhY2tlbmQpKQogICAgICAgICAsIG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
KHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKICAgICB7CiAgICAgfQogCisgICAgdm9pZCBz
ZXRCYWNrZW5kKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckJhY2tlbmQ+JiYgYmFja2VuZCkg
b3ZlcnJpZGUKKyAgICB7CisgICAgICAgIEFTU0VSVCghbV9iYWNrZW5kKTsKKyAgICAgICAgbV9i
YWNrZW5kID0gc3RkOjp1bmlxdWVfcHRyPEJhY2tlbmRUeXBlPiB7IHN0YXRpY19jYXN0PEJhY2tl
bmRUeXBlKj4oYmFja2VuZC5yZWxlYXNlKCkpIH07CisgICAgfQorCisgICAgdm9pZCBjbGVhckJh
Y2tlbmQoKSBvdmVycmlkZSB7IG1fYmFja2VuZCA9IG51bGxwdHI7IH0KKwogICAgIHZpcnR1YWwg
QmFja2VuZFR5cGUqIGVuc3VyZUJhY2tlbmRDcmVhdGVkKCkgY29uc3QgeyByZXR1cm4gbV9iYWNr
ZW5kLmdldCgpOyB9CiAKICAgICBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9yZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXI7IH0KQEAgLTc4LDE5ICs4OSwxMSBAQCBwcm90ZWN0ZWQ6CiAgICAg
ICAgIH0KICAgICB9CiAKLSAgICBBZmZpbmVUcmFuc2Zvcm0gYmFzZVRyYW5zZm9ybSgpIGNvbnN0
IG92ZXJyaWRlCi0gICAgewotICAgICAgICBpZiAoYXV0byogYmFja2VuZCA9IGVuc3VyZUJhY2tl
bmRDcmVhdGVkKCkpCi0gICAgICAgICAgICByZXR1cm4gYmFja2VuZC0+YmFzZVRyYW5zZm9ybSgp
OwotICAgICAgICByZXR1cm4geyB9OwotICAgIH0KLQotICAgIEludFNpemUgbG9naWNhbFNpemUo
KSBjb25zdCBvdmVycmlkZQotICAgIHsKLSAgICAgICAgaWYgKGF1dG8qIGJhY2tlbmQgPSBlbnN1
cmVCYWNrZW5kQ3JlYXRlZCgpKQotICAgICAgICAgICAgcmV0dXJuIGJhY2tlbmQtPmxvZ2ljYWxT
aXplKCk7Ci0gICAgICAgIHJldHVybiB7IH07Ci0gICAgfQorICAgIEludFNpemUgbG9naWNhbFNp
emUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBJbnRTaXplKG1fcGFyYW1ldGVycy5sb2dpY2Fs
U2l6ZSk7IH0KKyAgICBmbG9hdCByZXNvbHV0aW9uU2NhbGUoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBtX3BhcmFtZXRlcnMucmVzb2x1dGlvblNjYWxlOyB9CisgICAgQ29sb3JTcGFjZSBjb2xv
clNwYWNlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9wYXJhbWV0ZXJzLmNvbG9yU3BhY2U7
IH0KKyAgICBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IG1fcGFyYW1ldGVycy5waXhlbEZvcm1hdDsgfQorICAgIGNvbnN0IEltYWdlQnVmZmVyQmFja2Vu
ZDo6UGFyYW1ldGVycyYgcGFyYW1ldGVycygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcGFy
YW1ldGVyczsgfQogCiAgICAgSW50U2l6ZSBiYWNrZW5kU2l6ZSgpIGNvbnN0IG92ZXJyaWRlCiAg
ICAgewpAQCAtOTksMTEgKzEwMiwxMSBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIHJldHVybiB7IH07
CiAgICAgfQogCi0gICAgZmxvYXQgcmVzb2x1dGlvblNjYWxlKCkgY29uc3Qgb3ZlcnJpZGUKKyAg
ICBBZmZpbmVUcmFuc2Zvcm0gYmFzZVRyYW5zZm9ybSgpIGNvbnN0IG92ZXJyaWRlCiAgICAgewot
ICAgICAgICBpZiAoYXV0byogYmFja2VuZCA9IGVuc3VyZUJhY2tlbmRDcmVhdGVkKCkpCi0gICAg
ICAgICAgICByZXR1cm4gYmFja2VuZC0+cmVzb2x1dGlvblNjYWxlKCk7Ci0gICAgICAgIHJldHVy
biAxOworICAgICAgICBpZiAoQmFja2VuZFR5cGU6OmlzT3JpZ2luQXRVcHBlckxlZnRDb3JuZXIp
CisgICAgICAgICAgICByZXR1cm4gQWZmaW5lVHJhbnNmb3JtKDEsIDAsIDAsIC0xLCAwLCBsb2dp
Y2FsU2l6ZSgpLmhlaWdodCgpKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAKICAgICBz
aXplX3QgbWVtb3J5Q29zdCgpIGNvbnN0IG92ZXJyaWRlCkBAIC0yOTEsNiArMjk0LDcgQEAgcHJv
dGVjdGVkOgogICAgICAgICAgICAgYmFja2VuZC0+cmVsZWFzZUJ1ZmZlclRvUG9vbCgpOwogICAg
IH0KIAorICAgIEltYWdlQnVmZmVyQmFja2VuZDo6UGFyYW1ldGVycyBtX3BhcmFtZXRlcnM7CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPEJhY2tlbmRUeXBlPiBtX2JhY2tlbmQ7CiAgICAgUmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyIG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyOwogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCmluZGV4IDYy
YTNmN2ZmYTM3NzhhOGMwMTM5MDE2MjU0Mzc1M2FhN2JkMmMyMWQuLjdkZjQ3YjgxZmFiNmFlOTky
NWE3MzhlNGY3YjFmNGY3Mzg2MGJlYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VCdWZmZXIuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjcHJhZ21hIG9uY2UK
IAorI2luY2x1ZGUgIkRpc3BsYXlMaXN0Rmx1c2hJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiSW1h
Z2VCdWZmZXJCYWNrZW5kLmgiCiAjaW5jbHVkZSAiUmVuZGVyaW5nTW9kZS5oIgogI2luY2x1ZGUg
IlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5oIgpAQCAtNjAsMTAgKzYxLDEzIEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgRmxvYXRSZWN0IGNsYW1wZWRSZWN0KGNvbnN0IEZsb2F0UmVjdCYpOwog
CiAgICAgc3RhdGljIEludFNpemUgY29tcGF0aWJsZUJ1ZmZlclNpemUoY29uc3QgRmxvYXRTaXpl
JiwgY29uc3QgR3JhcGhpY3NDb250ZXh0Jik7Ci0gICAgCisKICAgICBXRUJDT1JFX0VYUE9SVCB2
aXJ0dWFsIH5JbWFnZUJ1ZmZlcigpID0gZGVmYXVsdDsKIAotICAgIHZpcnR1YWwgYm9vbCBpc0Fj
Y2VsZXJhdGVkKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRCYWNrZW5kKHN0ZDo6
dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckJhY2tlbmQ+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
Y2xlYXJCYWNrZW5kKCkgPSAwOworCisgICAgdmlydHVhbCBSZW5kZXJpbmdNb2RlIHJlbmRlcmlu
Z01vZGUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4geyB9OyB9CiAg
ICAgCiAgICAgdmlydHVhbCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQoKSBjb25zdCA9IDA7CkBA
IC03MiwxMiArNzYsMTggQEAgcHVibGljOgogICAgIHZpcnR1YWwgRGlzcGxheUxpc3Q6OkRyYXdp
bmdDb250ZXh0KiBkcmF3aW5nQ29udGV4dCgpIHsgcmV0dXJuIG51bGxwdHI7IH0KICAgICB2aXJ0
dWFsIGJvb2wgcHJlZmVyc1ByZXBhcmF0aW9uRm9yRGlzcGxheSgpIHsgcmV0dXJuIGZhbHNlOyB9
CiAgICAgdmlydHVhbCB2b2lkIGZsdXNoRHJhd2luZ0NvbnRleHQoKSB7IH0KLSAgICB2aXJ0dWFs
IHZvaWQgZmx1c2hEcmF3aW5nQ29udGV4dEFuZENvbW1pdCgpIHsgfQorICAgIHZpcnR1YWwgdm9p
ZCBjb21taXREcmF3aW5nQ29udGV4dCgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBzdWJtaXREaXNw
bGF5TGlzdChjb25zdCBEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmKSB7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgZGlkRmx1c2goRGlzcGxheUxpc3Q6OkZsdXNoSWRlbnRpZmllcikgeyB9CiAKLSAgICB2
aXJ0dWFsIEFmZmluZVRyYW5zZm9ybSBiYXNlVHJhbnNmb3JtKCkgY29uc3QgPSAwOwogICAgIHZp
cnR1YWwgSW50U2l6ZSBsb2dpY2FsU2l6ZSgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIEludFNp
emUgYmFja2VuZFNpemUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBmbG9hdCByZXNvbHV0aW9u
U2NhbGUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBDb2xvclNwYWNlIGNvbG9yU3BhY2UoKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCgpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIGNvbnN0IEltYWdlQnVmZmVyQmFja2VuZDo6UGFyYW1ldGVycyYgcGFy
YW1ldGVycygpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgSW50U2l6ZSBiYWNrZW5kU2l6ZSgp
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEFmZmluZVRyYW5zZm9ybSBiYXNlVHJhbnNmb3JtKCkg
Y29uc3QgPSAwOwogCiAgICAgdmlydHVhbCBzaXplX3QgbWVtb3J5Q29zdCgpIGNvbnN0ID0gMDsK
ICAgICB2aXJ0dWFsIHNpemVfdCBleHRlcm5hbE1lbW9yeUNvc3QoKSBjb25zdCA9IDA7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tl
bmQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNr
ZW5kLmNwcAppbmRleCA3ZjBmZTllNmQ5NjZlNzRiNDVmODVhYWQwZTNiMmZiODRkOTQ1MGI5Li45
Mzk0ZTdiZmY0MjliYzIxZWZjZGYzYjE0MDExMWYxYWUyY2E5NDRkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5jcHAK
QEAgLTMxLDEyICszMSw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotSW1hZ2VCdWZmZXJC
YWNrZW5kOjpJbWFnZUJ1ZmZlckJhY2tlbmQoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwg
Y29uc3QgSW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JT
cGFjZSBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCkKLSAgICA6IG1fbG9naWNh
bFNpemUobG9naWNhbFNpemUpCi0gICAgLCBtX2JhY2tlbmRTaXplKGJhY2tlbmRTaXplKQotICAg
ICwgbV9yZXNvbHV0aW9uU2NhbGUocmVzb2x1dGlvblNjYWxlKQotICAgICwgbV9jb2xvclNwYWNl
KGNvbG9yU3BhY2UpCi0gICAgLCBtX3BpeGVsRm9ybWF0KHBpeGVsRm9ybWF0KQorSW1hZ2VCdWZm
ZXJCYWNrZW5kOjpJbWFnZUJ1ZmZlckJhY2tlbmQoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVy
cykKKyAgICA6IG1fcGFyYW1ldGVycyhwYXJhbWV0ZXJzKQogewogfQogCkBAIC05OSwxNSArOTUs
MTUgQEAgdm9pZCBJbWFnZUJ1ZmZlckJhY2tlbmQ6OmNvbnZlcnRUb0x1bWluYW5jZU1hc2soKQog
CiBWZWN0b3I8dWludDhfdD4gSW1hZ2VCdWZmZXJCYWNrZW5kOjp0b0JHUkFEYXRhKHZvaWQqIGRh
dGEpIGNvbnN0CiB7Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3VsdCg0ICogbV9sb2dpY2FsU2l6
ZS5hcmVhKCkudW5zYWZlR2V0KCkpOwotICAgIHNpemVfdCBkZXN0Qnl0ZXNQZXJSb3cgPSBtX2xv
Z2ljYWxTaXplLndpZHRoKCkgKiA0OworICAgIFZlY3Rvcjx1aW50OF90PiByZXN1bHQoNCAqIGxv
Z2ljYWxTaXplKCkuYXJlYSgpLnVuc2FmZUdldCgpKTsKKyAgICBzaXplX3QgZGVzdEJ5dGVzUGVy
Um93ID0gbG9naWNhbFNpemUoKS53aWR0aCgpICogNDsKICAgICBzaXplX3Qgc3JjQnl0ZXNQZXJS
b3cgPSBieXRlc1BlclJvdygpOwogCiAgICAgdWludDhfdCogc3JjUm93cyA9IHJlaW50ZXJwcmV0
X2Nhc3Q8dWludDhfdCo+KGRhdGEpOwogCiAgICAgY29weUltYWdlUGl4ZWxzKAogICAgICAgICBB
bHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkLCBwaXhlbEZvcm1hdCgpLCBzcmNC
eXRlc1BlclJvdywgc3JjUm93cywKLSAgICAgICAgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5w
cmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6QkdSQTgsIGRlc3RCeXRlc1BlclJvdywgcmVzdWx0
LmRhdGEoKSwgbV9sb2dpY2FsU2l6ZSk7CisgICAgICAgIEFscGhhUHJlbXVsdGlwbGljYXRpb246
OlVucHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OkJHUkE4LCBkZXN0Qnl0ZXNQZXJSb3csIHJl
c3VsdC5kYXRhKCksIGxvZ2ljYWxTaXplKCkpOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFj
a2VuZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNr
ZW5kLmgKaW5kZXggNTgwNjcxNWE3YjJjODc1NzY5MDJhNzczNTg0ZGYxODA1ODI1MTAwZi4uZTI4
MGIxN2E2NDE5YTZiYmIwZjI5N2IzMmViNjc0NWFlNDFlZDJiZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmgKQEAgLTMy
LDYgKzMyLDcgQEAKICNpbmNsdWRlICJJbWFnZVBhaW50aW5nT3B0aW9ucy5oIgogI2luY2x1ZGUg
IkludFJlY3QuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUxheWVyLmgiCisjaW5jbHVkZSAiUmVuZGVy
aW5nTW9kZS5oIgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CiAKQEAgLTc3LDYgKzc4LDEzIEBAIHB1YmxpYzoKIAogY2xhc3MgSW1hZ2VCdWZmZXJCYWNr
ZW5kIHsKIHB1YmxpYzoKKyAgICBzdHJ1Y3QgUGFyYW1ldGVycyB7CisgICAgICAgIEZsb2F0U2l6
ZSBsb2dpY2FsU2l6ZTsKKyAgICAgICAgZmxvYXQgcmVzb2x1dGlvblNjYWxlOworICAgICAgICBD
b2xvclNwYWNlIGNvbG9yU3BhY2U7CisgICAgICAgIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0Owor
ICAgIH07CisKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5JbWFnZUJ1ZmZlckJhY2tlbmQo
KSA9IGRlZmF1bHQ7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgSW50U2l6ZSBjYWxjdWxh
dGVCYWNrZW5kU2l6ZShjb25zdCBGbG9hdFNpemUmLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUpOwpA
QCAtODQsMTQgKzkyLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBmbHVzaENvbnRleHQoKSB7IH0K
IAotICAgIEludFNpemUgbG9naWNhbFNpemUoKSBjb25zdCB7IHJldHVybiBtX2xvZ2ljYWxTaXpl
OyB9Ci0gICAgSW50U2l6ZSBiYWNrZW5kU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2VuZFNp
emU7IH0KLSAgICBmbG9hdCByZXNvbHV0aW9uU2NhbGUoKSBjb25zdCB7IHJldHVybiBtX3Jlc29s
dXRpb25TY2FsZTsgfQotICAgIENvbG9yU3BhY2UgY29sb3JTcGFjZSgpIGNvbnN0IHsgcmV0dXJu
IG1fY29sb3JTcGFjZTsgfQotICAgIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0KCkgY29uc3QgeyBy
ZXR1cm4gbV9waXhlbEZvcm1hdDsgfQorICAgIHZpcnR1YWwgSW50U2l6ZSBiYWNrZW5kU2l6ZSgp
IGNvbnN0ID0gMDsKIAotICAgIHZpcnR1YWwgQWZmaW5lVHJhbnNmb3JtIGJhc2VUcmFuc2Zvcm0o
KSBjb25zdCB7IHJldHVybiBBZmZpbmVUcmFuc2Zvcm0oKTsgfQotICAgIHZpcnR1YWwgc2l6ZV90
IG1lbW9yeUNvc3QoKSBjb25zdCB7IHJldHVybiA0ICogbV9iYWNrZW5kU2l6ZS5hcmVhKCkudW5z
YWZlR2V0KCk7IH0KKyAgICB2aXJ0dWFsIHNpemVfdCBtZW1vcnlDb3N0KCkgY29uc3QgeyByZXR1
cm4gNCAqIGJhY2tlbmRTaXplKCkuYXJlYSgpLnVuc2FmZUdldCgpOyB9CiAgICAgdmlydHVhbCBz
aXplX3QgZXh0ZXJuYWxNZW1vcnlDb3N0KCkgY29uc3QgeyByZXR1cm4gMDsgfQogCiAgICAgdmly
dHVhbCBSZWZQdHI8TmF0aXZlSW1hZ2U+IGNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5
KSBjb25zdCA9IDA7CkBAIC0xMjcsMjQgKzEzMCwyOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBz
dGQ6OnVuaXF1ZV9wdHI8VGhyZWFkU2FmZUltYWdlQnVmZmVyRmx1c2hlcj4gY3JlYXRlRmx1c2hl
cigpIHsgcmV0dXJuIG51bGxwdHI7IH0KICAgICAKICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wg
aXNPcmlnaW5BdFVwcGVyTGVmdENvcm5lciA9IGZhbHNlOwotICAgIHN0YXRpYyBjb25zdGV4cHIg
Ym9vbCBpc0FjY2VsZXJhdGVkID0gZmFsc2U7CisgICAgc3RhdGljIGNvbnN0ZXhwciBSZW5kZXJp
bmdNb2RlIHJlbmRlcmluZ01vZGUgPSBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkOwogCiBw
cm90ZWN0ZWQ6Ci0gICAgV0VCQ09SRV9FWFBPUlQgSW1hZ2VCdWZmZXJCYWNrZW5kKGNvbnN0IEZs
b2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEludFNpemUmIGJhY2tlbmRTaXplLCBmbG9hdCBy
ZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UsIFBpeGVsRm9ybWF0KTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBJbWFnZUJ1ZmZlckJhY2tlbmQoY29uc3QgUGFyYW1ldGVycyYpOwogCi0gICAgdmlydHVh
bCB1bnNpZ25lZCBieXRlc1BlclJvdygpIGNvbnN0IHsgcmV0dXJuIDQgKiBtX2JhY2tlbmRTaXpl
LndpZHRoKCk7IH0KKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGJ5dGVzUGVyUm93KCkgY29uc3QgeyBy
ZXR1cm4gNCAqIGJhY2tlbmRTaXplKCkud2lkdGgoKTsgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVD4KICAgICBUIHRvQmFja2VuZENvb3JkaW5hdGVzKFQgdCkgY29uc3QKICAgICB7CiAgICAg
ICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPFQsIEludFBvaW50Pjo6dmFsdWUgfHwgc3Rk
Ojppc19zYW1lPFQsIEludFNpemU+Ojp2YWx1ZSB8fCBzdGQ6OmlzX3NhbWU8VCwgSW50UmVjdD46
OnZhbHVlKTsKLSAgICAgICAgaWYgKG1fcmVzb2x1dGlvblNjYWxlICE9IDEpCi0gICAgICAgICAg
ICB0LnNjYWxlKG1fcmVzb2x1dGlvblNjYWxlKTsKKyAgICAgICAgaWYgKHJlc29sdXRpb25TY2Fs
ZSgpICE9IDEpCisgICAgICAgICAgICB0LnNjYWxlKHJlc29sdXRpb25TY2FsZSgpKTsKICAgICAg
ICAgcmV0dXJuIHQ7CiAgICAgfQogCi0gICAgSW50UmVjdCBsb2dpY2FsUmVjdCgpIGNvbnN0IHsg
cmV0dXJuIEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgbV9sb2dpY2FsU2l6ZSk7IH07Ci0gICAg
SW50UmVjdCBiYWNrZW5kUmVjdCgpIGNvbnN0IHsgcmV0dXJuIEludFJlY3QoSW50UG9pbnQ6Onpl
cm8oKSwgbV9iYWNrZW5kU2l6ZSk7IH07CisgICAgSW50U2l6ZSBsb2dpY2FsU2l6ZSgpIGNvbnN0
IHsgcmV0dXJuIEludFNpemUobV9wYXJhbWV0ZXJzLmxvZ2ljYWxTaXplKTsgfQorICAgIGZsb2F0
IHJlc29sdXRpb25TY2FsZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVycy5yZXNvbHV0aW9u
U2NhbGU7IH0KKyAgICBDb2xvclNwYWNlIGNvbG9yU3BhY2UoKSBjb25zdCB7IHJldHVybiBtX3Bh
cmFtZXRlcnMuY29sb3JTcGFjZTsgfQorICAgIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0KCkgY29u
c3QgeyByZXR1cm4gbV9wYXJhbWV0ZXJzLnBpeGVsRm9ybWF0OyB9CisKKyAgICBJbnRSZWN0IGxv
Z2ljYWxSZWN0KCkgY29uc3QgeyByZXR1cm4gSW50UmVjdChJbnRQb2ludDo6emVybygpLCBsb2dp
Y2FsU2l6ZSgpKTsgfTsKKyAgICBJbnRSZWN0IGJhY2tlbmRSZWN0KCkgY29uc3QgeyByZXR1cm4g
SW50UmVjdChJbnRQb2ludDo6emVybygpLCBiYWNrZW5kU2l6ZSgpKTsgfTsKIAogICAgIFdFQkNP
UkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBjb3B5SW1hZ2VQaXhlbHMoCiAgICAgICAgIEFscGhhUHJl
bXVsdGlwbGljYXRpb24gc3JjQWxwaGFGb3JtYXQsIFBpeGVsRm9ybWF0IHNyY1BpeGVsRm9ybWF0
LCB1bnNpZ25lZCBzcmNCeXRlc1BlclJvdywgdWludDhfdCogc3JjUm93cywKQEAgLTE1NSwxMSAr
MTYzLDcgQEAgcHJvdGVjdGVkOgogICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxJbWFnZURhdGE+
IGdldEltYWdlRGF0YShBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgY29uc3Qg
SW50UmVjdCYgc3JjUmVjdCwgdm9pZCogZGF0YSkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBwdXRJbWFnZURhdGEoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBpbnB1dEZvcm1hdCwgY29u
c3QgSW1hZ2VEYXRhJiwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50UG9pbnQmIGRl
c3RQb2ludCwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBkZXN0Rm9ybWF0LCB2b2lkKiBkYXRhKTsK
IAotICAgIEludFNpemUgbV9sb2dpY2FsU2l6ZTsKLSAgICBJbnRTaXplIG1fYmFja2VuZFNpemU7
Ci0gICAgZmxvYXQgbV9yZXNvbHV0aW9uU2NhbGU7Ci0gICAgQ29sb3JTcGFjZSBtX2NvbG9yU3Bh
Y2U7Ci0gICAgUGl4ZWxGb3JtYXQgbV9waXhlbEZvcm1hdDsKKyAgICBQYXJhbWV0ZXJzIG1fcGFy
YW1ldGVyczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtSW1hZ2VCdWZmZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtSW1hZ2VCdWZmZXIuaAppbmRleCBi
MDVmYTY1MTY5NzFkMTc2NzEzMWQ1NmE0NjM5MzUzZWY5NGU0OTI1Li41MmRkODNjYzkzZDU1NTNi
Mzc5ZTU4N2Q0Mzg1ZDRmNzgwNTk0NGJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybUltYWdlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1JbWFnZUJ1ZmZlci5oCkBAIC03NSw1ICs3NSw1IEBA
IHVzaW5nIERpc3BsYXlMaXN0QWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlciA9IERpc3BsYXlMaXN0OjpJ
bWFnZUJ1ZmZlcjxBY2NlbGVyYXRlZEltCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKIFNQRUNJ
QUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6QWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlcikK
LSAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6SW1hZ2VCdWZmZXImIGJ1ZmZl
cikgeyByZXR1cm4gYnVmZmVyLmlzQWNjZWxlcmF0ZWQoKTsgfQorICAgIHN0YXRpYyBib29sIGlz
VHlwZShjb25zdCBXZWJDb3JlOjpJbWFnZUJ1ZmZlciYgYnVmZmVyKSB7IHJldHVybiBidWZmZXIu
cmVuZGVyaW5nTW9kZSgpID09IFdlYkNvcmU6OlJlbmRlcmluZ01vZGU6OkFjY2VsZXJhdGVkOyB9
CiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFj
a2VuZC5jcHAKaW5kZXggMTJhNWI2MGEyZTkwNDZhMTk1ODkyYmFmNWRkN2VkNDk2MzNiM2U3NC4u
YjNiZmQ4MTI3Yjg3ZDE2ODhlYWJiNWNmNGIyYTcxYzMzNTljZDJkMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tl
bmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdl
QnVmZmVyQ2Fpcm9CYWNrZW5kLmNwcApAQCAtODAsNyArODAsNyBAQCB2b2lkIEltYWdlQnVmZmVy
Q2Fpcm9CYWNrZW5kOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBj
b25zdCBGbAogICAgIH0KIAogICAgIGlmIChhdXRvIGltYWdlID0gY29weU5hdGl2ZUltYWdlKCZk
ZXN0Q29udGV4dCA9PSAmY29udGV4dCgpID8gQ29weUJhY2tpbmdTdG9yZSA6IERvbnRDb3B5QmFj
a2luZ1N0b3JlKSkKLSAgICAgICAgQ2Fpcm86OmRyYXdQYXR0ZXJuKCpkZXN0Q29udGV4dC5wbGF0
Zm9ybUNvbnRleHQoKSwgaW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSwgbV9sb2dpY2FsU2l6
ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBvcHRpb25zKTsK
KyAgICAgICAgQ2Fpcm86OmRyYXdQYXR0ZXJuKCpkZXN0Q29udGV4dC5wbGF0Zm9ybUNvbnRleHQo
KSwgaW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSwgbG9naWNhbFNpemUoKSwgZGVzdFJlY3Qs
IHNyY1JlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBvcHRpb25zKTsKIH0KIAogdm9pZCBJ
bWFnZUJ1ZmZlckNhaXJvQmFja2VuZDo6Y2xpcFRvTWFzayhHcmFwaGljc0NvbnRleHQmIGRlc3RD
b250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFj
ZUJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1h
Z2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQuY3BwCmluZGV4IDFjZDA3NTRiMzkxNDNh
ZjQyOWI0NmQ1ZDc4ZTQ1MWYwZDFlMDc0YzMuLjNkYTE0NTVlYmEwNmQ2Nzk0ZTMzMjcwMTdkYWFm
ZDc5YmM1NDcyZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvSW1hZ2VT
dXJmYWNlQmFja2VuZC5jcHAKQEAgLTQxLDEzICs0MSwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJm
YWNlQmFja2VuZCk7CiAKLXN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJm
YWNlQmFja2VuZD4gSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZShj
b25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBj
b2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgY29uc3QgSG9zdFdpbmRvdyopCitz
dGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQ+IEltYWdl
QnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kOjpjcmVhdGUoY29uc3QgUGFyYW1ldGVycyYg
cGFyYW1ldGVycywgY29uc3QgSG9zdFdpbmRvdyopCiB7Ci0gICAgQVNTRVJUKHBpeGVsRm9ybWF0
ID09IFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgQVNTRVJUKHBhcmFtZXRlcnMucGl4ZWxGb3Jt
YXQgPT0gUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKIAogICAgIHN0YXRpYyBjYWlyb191c2VyX2RhdGFf
a2V5X3Qgc19zdXJmYWNlRGF0YUtleTsKIAotICAgIEludFNpemUgYmFja2VuZFNpemUgPSBjYWxj
dWxhdGVCYWNrZW5kU2l6ZShzaXplLCByZXNvbHV0aW9uU2NhbGUpOworICAgIEludFNpemUgYmFj
a2VuZFNpemUgPSBjYWxjdWxhdGVCYWNrZW5kU2l6ZShwYXJhbWV0ZXJzLmxvZ2ljYWxTaXplLCBw
YXJhbWV0ZXJzLnJlc29sdXRpb25TY2FsZSk7CiAgICAgaWYgKGJhY2tlbmRTaXplLmlzRW1wdHko
KSB8fCBiYWNrZW5kU2l6ZS53aWR0aCgpID4gY2Fpcm9NYXhJbWFnZVNpemUgfHwgYmFja2VuZFNp
emUuaGVpZ2h0KCkgPiBjYWlyb01heEltYWdlU2l6ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKQEAgLTYxLDE2ICs2MSwxNiBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJDYWlyb0lt
YWdlU3VyZmFjZUJhY2tlbmQ+IEltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhYwogICAgICAgICBm
YXN0RnJlZShkYXRhKTsKICAgICB9KTsKIAotICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8SW1h
Z2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQ+KG5ldyBJbWFnZUJ1ZmZlckNhaXJvSW1h
Z2VTdXJmYWNlQmFja2VuZChzaXplLCBiYWNrZW5kU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xv
clNwYWNlLCBwaXhlbEZvcm1hdCwgV1RGTW92ZShzdXJmYWNlKSkpOworICAgIHJldHVybiBzdGQ6
OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQ+KG5ldyBJbWFn
ZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZChwYXJhbWV0ZXJzLCBXVEZNb3ZlKHN1cmZh
Y2UpKSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNl
QmFja2VuZD4gSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZShjb25z
dCBGbG9hdFNpemUmIHNpemUsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpCitzdGQ6OnVuaXF1ZV9w
dHI8SW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQ+IEltYWdlQnVmZmVyQ2Fpcm9J
bWFnZVN1cmZhY2VCYWNrZW5kOjpjcmVhdGUoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycywg
Y29uc3QgR3JhcGhpY3NDb250ZXh0JikKIHsKLSAgICByZXR1cm4gSW1hZ2VCdWZmZXJDYWlyb0lt
YWdlU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZShzaXplLCAxLCBDb2xvclNwYWNlOjpTUkdCLCBQaXhl
bEZvcm1hdDo6QkdSQTgsIG51bGxwdHIpOworICAgIHJldHVybiBJbWFnZUJ1ZmZlckNhaXJvSW1h
Z2VTdXJmYWNlQmFja2VuZDo6Y3JlYXRlKHBhcmFtZXRlcnMsIG51bGxwdHIpOwogfQogCi1JbWFn
ZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZDo6SW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3Vy
ZmFjZUJhY2tlbmQoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50U2l6ZSYg
YmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNl
LCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4mJiBzdXJm
YWNlKQotICAgIDogSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kKGxvZ2ljYWxTaXplLCBi
YWNrZW5kU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCwgV1RG
TW92ZShzdXJmYWNlKSkKK0ltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kOjpJbWFn
ZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZChjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0
ZXJzLCBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiYmIHN1cmZhY2UpCisgICAgOiBJbWFnZUJ1ZmZl
ckNhaXJvU3VyZmFjZUJhY2tlbmQocGFyYW1ldGVycywgV1RGTW92ZShzdXJmYWNlKSkKIHsKICAg
ICBBU1NFUlQoY2Fpcm9fc3VyZmFjZV9nZXRfdHlwZShtX3N1cmZhY2UuZ2V0KCkpID09IENBSVJP
X1NVUkZBQ0VfVFlQRV9JTUFHRSk7CiB9CkBAIC03OSwxNiArNzksMTYgQEAgdm9pZCBJbWFnZUJ1
ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZDo6cGxhdGZvcm1UcmFuc2Zvcm1Db2xvclNwYWNl
KGNvbnN0IHN0ZDoKIHsKICAgICB1bnNpZ25lZCBjaGFyKiBkYXRhU3JjID0gY2Fpcm9faW1hZ2Vf
c3VyZmFjZV9nZXRfZGF0YShtX3N1cmZhY2UuZ2V0KCkpOwogICAgIGludCBzdHJpZGUgPSBjYWly
b19pbWFnZV9zdXJmYWNlX2dldF9zdHJpZGUobV9zdXJmYWNlLmdldCgpKTsKLSAgICBmb3IgKGlu
dCB5ID0gMDsgeSA8IG1fbG9naWNhbFNpemUuaGVpZ2h0KCk7ICsreSkgeworICAgIGZvciAoaW50
IHkgPSAwOyB5IDwgbG9naWNhbFNpemUoKS5oZWlnaHQoKTsgKyt5KSB7CiAgICAgICAgIHVuc2ln
bmVkKiByb3cgPSByZWludGVycHJldF9jYXN0X3B0cjx1bnNpZ25lZCo+KGRhdGFTcmMgKyBzdHJp
ZGUgKiB5KTsKLSAgICAgICAgZm9yIChpbnQgeCA9IDA7IHggPCBtX2xvZ2ljYWxTaXplLndpZHRo
KCk7IHgrKykgeworICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8IGxvZ2ljYWxTaXplKCkud2lk
dGgoKTsgeCsrKSB7CiAgICAgICAgICAgICB1bnNpZ25lZCogcGl4ZWwgPSByb3cgKyB4OwogICAg
ICAgICAgICAgYXV0byBwaXhlbENvbXBvbmVudHMgPSB1bnByZW11bHRpcGxpZWQoYXNTUkdCQShQ
YWNrZWRDb2xvcjo6QVJHQiB7ICpwaXhlbCB9KSk7CiAgICAgICAgICAgICBwaXhlbENvbXBvbmVu
dHMgPSB7IGxvb2tVcFRhYmxlW3BpeGVsQ29tcG9uZW50cy5yZWRdLCBsb29rVXBUYWJsZVtwaXhl
bENvbXBvbmVudHMuZ3JlZW5dLCBsb29rVXBUYWJsZVtwaXhlbENvbXBvbmVudHMuYmx1ZV0sIHBp
eGVsQ29tcG9uZW50cy5hbHBoYSB9OwogICAgICAgICAgICAgKnBpeGVsID0gUGFja2VkQ29sb3I6
OkFSR0IgeyBwcmVtdWx0aXBsaWVkQ2VpbGluZyhwaXhlbENvbXBvbmVudHMpIH0udmFsdWU7CiAg
ICAgICAgIH0KICAgICB9Ci0gICAgY2Fpcm9fc3VyZmFjZV9tYXJrX2RpcnR5X3JlY3RhbmdsZSht
X3N1cmZhY2UuZ2V0KCksIDAsIDAsIG1fbG9naWNhbFNpemUud2lkdGgoKSwgbV9sb2dpY2FsU2l6
ZS5oZWlnaHQoKSk7CisgICAgY2Fpcm9fc3VyZmFjZV9tYXJrX2RpcnR5X3JlY3RhbmdsZShtX3N1
cmZhY2UuZ2V0KCksIDAsIDAsIGxvZ2ljYWxTaXplKCkud2lkdGgoKSwgbG9naWNhbFNpemUoKS5o
ZWlnaHQoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1
cmZhY2VCYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9J
bWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZC5oCmluZGV4IGQxNmQzM2VhYzQ2YzVk
ZjY2ZmI4ZmEyZDk1NDkxMGUyZjkxMTVhMDMuLjg2NWNjNjliMmQ1MzM4NTQ1ZjM3ZTQxOTNjYjk0
ZjE5ODBiZTczYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3Vy
ZmFjZUJhY2tlbmQuaApAQCAtNDAsMTEgKzQwLDExIEBAIGNsYXNzIEltYWdlQnVmZmVyQ2Fpcm9J
bWFnZVN1cmZhY2VCYWNrZW5kIDogcHVibGljIEltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2Vu
CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNl
QmFja2VuZCk7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW1hZ2VCdWZmZXJDYWlyb0ltYWdl
U3VyZmFjZUJhY2tlbmQpOwogcHVibGljOgotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1h
Z2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQ+IGNyZWF0ZShjb25zdCBGbG9hdFNpemUm
LCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UsIFBpeGVsRm9ybWF0LCBjb25zdCBI
b3N0V2luZG93Kik7Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNhaXJv
SW1hZ2VTdXJmYWNlQmFja2VuZD4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEdyYXBo
aWNzQ29udGV4dCYpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJDYWly
b0ltYWdlU3VyZmFjZUJhY2tlbmQ+IGNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiwgY29uc3QgSG9z
dFdpbmRvdyopOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJDYWlyb0lt
YWdlU3VyZmFjZUJhY2tlbmQ+IGNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiwgY29uc3QgR3JhcGhp
Y3NDb250ZXh0Jik7CiAKIHByaXZhdGU6Ci0gICAgSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFj
ZUJhY2tlbmQoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50U2l6ZSYgYmFj
a2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQs
IFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+JiYpOworICAgIEltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1
cmZhY2VCYWNrZW5kKGNvbnN0IFBhcmFtZXRlcnMmLCBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiYm
KTsKIAogICAgIHZvaWQgcGxhdGZvcm1UcmFuc2Zvcm1Db2xvclNwYWNlKGNvbnN0IHN0ZDo6YXJy
YXk8dWludDhfdCwgMjU2PiYgbG9va1VwVGFibGUpIG92ZXJyaWRlOwogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9T
dXJmYWNlQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9JbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQuY3BwCmluZGV4IDliODIxNjRhZWEzMzA3
MWU1MzYxYzZmZTM5YjFiODI3YzliNmIxNTAuLjBiNzNmMTRiYTcwMDVlNTIwNTBlZDU4MjE2NGEx
MTYzODA1NDk3MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNr
ZW5kLmNwcApAQCAtNDMsOCArNDMsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUltYWdl
QnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZDo6SW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5k
KGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEludFNpemUmIGJhY2tlbmRTaXpl
LCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgUGl4ZWxGb3Jt
YXQgcGl4ZWxGb3JtYXQsIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+JiYgc3VyZmFjZSkKLSAgICA6
IEltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kKGxvZ2ljYWxTaXplLCBiYWNrZW5kU2l6ZSwgcmVzb2x1
dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCkKK0ltYWdlQnVmZmVyQ2Fpcm9TdXJm
YWNlQmFja2VuZDo6SW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kKGNvbnN0IFBhcmFtZXRl
cnMmIHBhcmFtZXRlcnMsIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+JiYgc3VyZmFjZSkKKyAgICA6
IEltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kKHBhcmFtZXRlcnMpCiAgICAgLCBtX3N1cmZhY2UoV1RG
TW92ZShzdXJmYWNlKSkKIHsKICAgICBBU1NFUlQoY2Fpcm9fc3VyZmFjZV9zdGF0dXMobV9zdXJm
YWNlLmdldCgpKSA9PSBDQUlST19TVEFUVVNfU1VDQ0VTUyk7CkBAIC01OSw2ICs1OSwxMSBAQCBH
cmFwaGljc0NvbnRleHQmIEltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZDo6Y29udGV4dCgp
IGNvbnN0CiAgICAgcmV0dXJuICptX2NvbnRleHQ7CiB9CiAKK0ludFNpemUgSW1hZ2VCdWZmZXJD
YWlyb1N1cmZhY2VCYWNrZW5kOjpiYWNrZW5kU2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHsg
Y2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfd2lkdGgobV9zdXJmYWNlLmdldCgpKSwgY2Fpcm9faW1h
Z2Vfc3VyZmFjZV9nZXRfaGVpZ2h0KG1fc3VyZmFjZS5nZXQoKSkgfTsKK30KKwogdW5zaWduZWQg
SW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kOjpieXRlc1BlclJvdygpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3N0cmlkZShtX3N1cmZhY2UuZ2V0KCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1h
Z2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQuaAppbmRleCAxMmFh
MmIxY2U4OGVlNDI2NDVmYTc3MmU2NzlmNWQ0MTk1YTI2NzQ3Li45ZTkzZGRlODU4ZWY0M2IyODJk
NDM4Y2E1YTc2N2ZlYmNiYmRkYmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvU3Vy
ZmFjZUJhY2tlbmQuaApAQCAtNDAsNiArNDAsOCBAQCBjbGFzcyBJbWFnZUJ1ZmZlckNhaXJvU3Vy
ZmFjZUJhY2tlbmQgOiBwdWJsaWMgSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQgewogcHVibGljOgog
ICAgIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCgpIGNvbnN0IG92ZXJyaWRlOwogCisgICAgSW50
U2l6ZSBiYWNrZW5kU2l6ZSgpIGNvbnN0IG92ZXJyaWRlOworCiAgICAgUmVmUHRyPE5hdGl2ZUlt
YWdlPiBjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSkgY29uc3Qgb3ZlcnJpZGU7CiAK
ICAgICBWZWN0b3I8dWludDhfdD4gdG9CR1JBRGF0YSgpIGNvbnN0IG92ZXJyaWRlOwpAQCAtNDcs
NyArNDksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBwdXRJbWFnZURhdGEoQWxwaGFQcmVtdWx0aXBs
aWNhdGlvbiBpbnB1dEZvcm1hdCwgY29uc3QgSW1hZ2VEYXRhJiwgY29uc3QgSW50UmVjdCYgc3Jj
UmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBk
ZXN0Rm9ybWF0KSBvdmVycmlkZTsKIAogcHJvdGVjdGVkOgotICAgIEltYWdlQnVmZmVyQ2Fpcm9T
dXJmYWNlQmFja2VuZChjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBJbnRTaXpl
JiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlLCBQaXhlbEZv
cm1hdCwgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4mJik7CisgICAgSW1hZ2VCdWZmZXJDYWlyb1N1
cmZhY2VCYWNrZW5kKGNvbnN0IFBhcmFtZXRlcnMmLCBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiYm
KTsKIAogICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gY2Fpcm9TdXJmYWNlQ29lcmNlVG9JbWFnZSgp
IGNvbnN0OwogICAgIHVuc2lnbmVkIGJ5dGVzUGVyUm93KCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNH
QmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1
ZmZlckNHQmFja2VuZC5jcHAKaW5kZXggNTAxN2JhMTJjOGI0ODdiMGNhMDZlNTQzYjEyOTYzNjVk
NmRkMmIyYi4uYWJiZDM2ODg3ODI2N2Q4Y2Y3NzhjNjYwNmZkYjI4MDNkZDRhMWQ3OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0Jh
Y2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
QnVmZmVyQ0dCYWNrZW5kLmNwcApAQCAtNzksOCArNzksOCBAQCB2b2lkIEltYWdlQnVmZmVyQ0dC
YWNrZW5kOjpzZXR1cENvbnRleHQoKSBjb25zdAogewogICAgIC8vIFRoZSBpbml0aWFsIENUTSBt
YXRjaGVzIERpc3BsYXlMaXN0OjpSZWNvcmRlcjo6Y2xpcFRvRHJhd2luZ0NvbW1hbmRzKCkncyBp
bml0aWFsIENUTS4KICAgICBjb250ZXh0KCkuc2NhbGUoRmxvYXRTaXplKDEsIC0xKSk7Ci0gICAg
Y29udGV4dCgpLnRyYW5zbGF0ZSgwLCAtbV9iYWNrZW5kU2l6ZS5oZWlnaHQoKSk7Ci0gICAgY29u
dGV4dCgpLmFwcGx5RGV2aWNlU2NhbGVGYWN0b3IobV9yZXNvbHV0aW9uU2NhbGUpOworICAgIGNv
bnRleHQoKS50cmFuc2xhdGUoMCwgLWJhY2tlbmRTaXplKCkuaGVpZ2h0KCkpOworICAgIGNvbnRl
eHQoKS5hcHBseURldmljZVNjYWxlRmFjdG9yKHJlc29sdXRpb25TY2FsZSgpKTsKIH0KIAogc3Rh
dGljIFJldGFpblB0cjxDR0ltYWdlUmVmPiBjcmVhdGVDcm9wcGVkSW1hZ2VJZk5lY2Vzc2FyeShD
R0ltYWdlUmVmIGltYWdlLCBjb25zdCBJbnRTaXplJiBiYWNrZW5kU2l6ZSkKQEAgLTExMiwzMSAr
MTEyLDMyIEBAIHN0YXRpYyBSZWZQdHI8SW1hZ2U+IGNyZWF0ZUJpdG1hcEltYWdlQWZ0ZXJTY2Fs
aW5nSWZOZWVkZWQoUmVmUHRyPE5hdGl2ZUltYWdlPiYmCiBSZWZQdHI8SW1hZ2U+IEltYWdlQnVm
ZmVyQ0dCYWNrZW5kOjpjb3B5SW1hZ2UoQmFja2luZ1N0b3JlQ29weSBjb3B5QmVoYXZpb3IsIFBy
ZXNlcnZlUmVzb2x1dGlvbiBwcmVzZXJ2ZVJlc29sdXRpb24pIGNvbnN0CiB7CiAgICAgUmVmUHRy
PE5hdGl2ZUltYWdlPiBpbWFnZTsKLSAgICBpZiAobV9yZXNvbHV0aW9uU2NhbGUgPT0gMSB8fCBw
cmVzZXJ2ZVJlc29sdXRpb24gPT0gUHJlc2VydmVSZXNvbHV0aW9uOjpZZXMpCisgICAgaWYgKHJl
c29sdXRpb25TY2FsZSgpID09IDEgfHwgcHJlc2VydmVSZXNvbHV0aW9uID09IFByZXNlcnZlUmVz
b2x1dGlvbjo6WWVzKQogICAgICAgICBpbWFnZSA9IGNvcHlOYXRpdmVJbWFnZShjb3B5QmVoYXZp
b3IpOwogICAgIGVsc2UKICAgICAgICAgaW1hZ2UgPSBjb3B5TmF0aXZlSW1hZ2UoRG9udENvcHlC
YWNraW5nU3RvcmUpOwotICAgIHJldHVybiBjcmVhdGVCaXRtYXBJbWFnZUFmdGVyU2NhbGluZ0lm
TmVlZGVkKFdURk1vdmUoaW1hZ2UpLCBtX2xvZ2ljYWxTaXplLCBtX2JhY2tlbmRTaXplLCBtX3Jl
c29sdXRpb25TY2FsZSwgcHJlc2VydmVSZXNvbHV0aW9uKTsKKyAgICByZXR1cm4gY3JlYXRlQml0
bWFwSW1hZ2VBZnRlclNjYWxpbmdJZk5lZWRlZChXVEZNb3ZlKGltYWdlKSwgbG9naWNhbFNpemUo
KSwgYmFja2VuZFNpemUoKSwgcmVzb2x1dGlvblNjYWxlKCksIHByZXNlcnZlUmVzb2x1dGlvbik7
CiB9CiAKIFJlZlB0cjxJbWFnZT4gSW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OnNpbmtJbnRvSW1hZ2Uo
UHJlc2VydmVSZXNvbHV0aW9uIHByZXNlcnZlUmVzb2x1dGlvbikKIHsKLSAgICByZXR1cm4gY3Jl
YXRlQml0bWFwSW1hZ2VBZnRlclNjYWxpbmdJZk5lZWRlZChzaW5rSW50b05hdGl2ZUltYWdlKCks
IG1fbG9naWNhbFNpemUsIG1fYmFja2VuZFNpemUsIG1fcmVzb2x1dGlvblNjYWxlLCBwcmVzZXJ2
ZVJlc29sdXRpb24pOworICAgIGF1dG8gYmFja2VuZFNpemUgPSB0aGlzLT5iYWNrZW5kU2l6ZSgp
OworICAgIHJldHVybiBjcmVhdGVCaXRtYXBJbWFnZUFmdGVyU2NhbGluZ0lmTmVlZGVkKHNpbmtJ
bnRvTmF0aXZlSW1hZ2UoKSwgbG9naWNhbFNpemUoKSwgYmFja2VuZFNpemUsIHJlc29sdXRpb25T
Y2FsZSgpLCBwcmVzZXJ2ZVJlc29sdXRpb24pOwogfQogCiB2b2lkIEltYWdlQnVmZmVyQ0dCYWNr
ZW5kOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgRmxvYXRSZWN0IHNyY1JlY3RTY2FsZWQgPSBzcmNSZWN0
OwotICAgIHNyY1JlY3RTY2FsZWQuc2NhbGUobV9yZXNvbHV0aW9uU2NhbGUpOworICAgIHNyY1Jl
Y3RTY2FsZWQuc2NhbGUocmVzb2x1dGlvblNjYWxlKCkpOwogCiAgICAgaWYgKGF1dG8gaW1hZ2Ug
PSBjb3B5TmF0aXZlSW1hZ2UoJmRlc3RDb250ZXh0ID09ICZjb250ZXh0KCkgPyBDb3B5QmFja2lu
Z1N0b3JlIDogRG9udENvcHlCYWNraW5nU3RvcmUpKQotICAgICAgICBkZXN0Q29udGV4dC5kcmF3
TmF0aXZlSW1hZ2UoKmltYWdlLCBtX2JhY2tlbmRTaXplLCBkZXN0UmVjdCwgc3JjUmVjdFNjYWxl
ZCwgb3B0aW9ucyk7CisgICAgICAgIGRlc3RDb250ZXh0LmRyYXdOYXRpdmVJbWFnZSgqaW1hZ2Us
IGJhY2tlbmRTaXplKCksIGRlc3RSZWN0LCBzcmNSZWN0U2NhbGVkLCBvcHRpb25zKTsKIH0KIAog
dm9pZCBJbWFnZUJ1ZmZlckNHQmFja2VuZDo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBk
ZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZs
b2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFp
bnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIEZsb2F0UmVjdCBhZGp1c3RlZFNyY1JlY3Qg
PSBzcmNSZWN0OwotICAgIGFkanVzdGVkU3JjUmVjdC5zY2FsZShtX3Jlc29sdXRpb25TY2FsZSk7
CisgICAgYWRqdXN0ZWRTcmNSZWN0LnNjYWxlKHJlc29sdXRpb25TY2FsZSgpKTsKIAogICAgIGlm
IChhdXRvIGltYWdlID0gY29weUltYWdlKCZkZXN0Q29udGV4dCA9PSAmY29udGV4dCgpID8gQ29w
eUJhY2tpbmdTdG9yZSA6IERvbnRDb3B5QmFja2luZ1N0b3JlKSkKICAgICAgICAgaW1hZ2UtPmRy
YXdQYXR0ZXJuKGRlc3RDb250ZXh0LCBkZXN0UmVjdCwgYWRqdXN0ZWRTcmNSZWN0LCBwYXR0ZXJu
VHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgb3B0aW9ucyk7CkBAIC0xNTksMTEgKzE2MCw2IEBA
IHZvaWQgSW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OmNsaXBUb01hc2soR3JhcGhpY3NDb250ZXh0JiBk
ZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSCiAgICAgQ0dDb250ZXh0VHJhbnNsYXRlQ1RNKGNnQ29u
dGV4dCwgLWRlc3RSZWN0LngoKSwgLWRlc3RSZWN0Lm1heFkoKSk7CiB9CiAKLUFmZmluZVRyYW5z
Zm9ybSBJbWFnZUJ1ZmZlckNHQmFja2VuZDo6YmFzZVRyYW5zZm9ybSgpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIEFmZmluZVRyYW5zZm9ybSgxLCAwLCAwLCAtMSwgMCwgbV9sb2dpY2FsU2l6ZS5oZWln
aHQoKSk7Ci19Ci0KIFJldGFpblB0cjxDRkRhdGFSZWY+IEltYWdlQnVmZmVyQ0dCYWNrZW5kOjp0
b0NGRGF0YShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHks
IFByZXNlcnZlUmVzb2x1dGlvbiBwcmVzZXJ2ZVJlc29sdXRpb24pIGNvbnN0CiB7CiAgICAgQVNT
RVJUKE1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZUZvckVuY29kaW5n
KG1pbWVUeXBlKSk7CkBAIC0xOTAsNyArMTg2LDcgQEAgUmV0YWluUHRyPENGRGF0YVJlZj4gSW1h
Z2VCdWZmZXJDR0JhY2tlbmQ6OnRvQ0ZEYXRhKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGkK
ICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgICAgIGltYWdlID0gYWRvcHRDRihD
R0ltYWdlQ3JlYXRlKHBpeGVsQXJyYXlEaW1lbnNpb25zLndpZHRoKCksIHBpeGVsQXJyYXlEaW1l
bnNpb25zLmhlaWdodCgpLCA4LCAzMiwgNCAqIHBpeGVsQXJyYXlEaW1lbnNpb25zLndpZHRoKCks
IHNSR0JDb2xvclNwYWNlUmVmKCksIGtDR0JpdG1hcEJ5dGVPcmRlckRlZmF1bHQgfCBrQ0dJbWFn
ZUFscGhhTm9uZVNraXBMYXN0LCBkYXRhUHJvdmlkZXIuZ2V0KCksIDAsIGZhbHNlLCBrQ0dSZW5k
ZXJpbmdJbnRlbnREZWZhdWx0KSk7Ci0gICAgfSBlbHNlIGlmIChtX3Jlc29sdXRpb25TY2FsZSA9
PSAxIHx8IHByZXNlcnZlUmVzb2x1dGlvbiA9PSBQcmVzZXJ2ZVJlc29sdXRpb246Olllcykgewor
ICAgIH0gZWxzZSBpZiAocmVzb2x1dGlvblNjYWxlKCkgPT0gMSB8fCBwcmVzZXJ2ZVJlc29sdXRp
b24gPT0gUHJlc2VydmVSZXNvbHV0aW9uOjpZZXMpIHsKICAgICAgICAgaW1hZ2UgPSBjb3B5TmF0
aXZlSW1hZ2UoQ29weUJhY2tpbmdTdG9yZSktPnBsYXRmb3JtSW1hZ2UoKTsKICAgICAgICAgaW1h
Z2UgPSBjcmVhdGVDcm9wcGVkSW1hZ2VJZk5lY2Vzc2FyeShpbWFnZS5nZXQoKSwgYmFja2VuZFNp
emUoKSk7CiAgICAgfSBlbHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5oCmluZGV4IDFlMDdmZGM2NDQz
ZmRjMDhmNmFmNjNlMDg4M2ViMzIwNTNlNGQ1OTcuLmIyNmFlMDg0MzQ3YjllMjMzNDA0NjAwYzJl
YTRhNGEyOGIxZTFiYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0ltYWdlQnVmZmVyQ0dCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JhY2tlbmQuaApAQCAtNDEsOCArNDEsNiBAQCBw
dWJsaWM6CiAgICAgCiAgICAgdm9pZCBjbGlwVG9NYXNrKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QpIG92ZXJyaWRlOwogCi0gICAgQWZmaW5lVHJhbnNmb3JtIGJh
c2VUcmFuc2Zvcm0oKSBjb25zdCBvdmVycmlkZTsKLQogICAgIFN0cmluZyB0b0RhdGFVUkwoY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5LCBQcmVzZXJ2ZVJl
c29sdXRpb24pIGNvbnN0IG92ZXJyaWRlOwogICAgIFZlY3Rvcjx1aW50OF90PiB0b0RhdGEoY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5KSBjb25zdCBvdmVy
cmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQuY3BwCmluZGV4IGYyMThmMjdm
MmY1M2M1YTRhZGJiNmE1YWVkYzNjNDllNDhjZDYzYTQuLmJhNDE0ZjNjYmE1ZDRlMTIzYzRiYjNm
NDQ4MDBmYTk4ZGFiYjZmYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5jcHAK
QEAgLTM5LDExICszOSwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19B
TExPQ0FURURfSU1QTChJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZCk7CiAKLXN0ZDo6dW5pcXVl
X3B0cjxJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZD4gSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tl
bmQ6OmNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwg
Q29sb3JTcGFjZSBjb2xvclNwYWNlLCBDR0NvbG9yU3BhY2VSZWYgY2dDb2xvclNwYWNlLCBQaXhl
bEZvcm1hdCBwaXhlbEZvcm1hdCwgY29uc3QgSG9zdFdpbmRvdyopCitzdGQ6OnVuaXF1ZV9wdHI8
SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ+IEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpj
cmVhdGUoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycywgQ0dDb2xvclNwYWNlUmVmIGNnQ29s
b3JTcGFjZSwgY29uc3QgSG9zdFdpbmRvdyopCiB7Ci0gICAgQVNTRVJUKHBpeGVsRm9ybWF0ID09
IFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgQVNTRVJUKHBhcmFtZXRlcnMucGl4ZWxGb3JtYXQg
PT0gUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKIAotICAgIEludFNpemUgYmFja2VuZFNpemUgPSBjYWxj
dWxhdGVCYWNrZW5kU2l6ZShzaXplLCByZXNvbHV0aW9uU2NhbGUpOworICAgIEludFNpemUgYmFj
a2VuZFNpemUgPSBjYWxjdWxhdGVCYWNrZW5kU2l6ZShwYXJhbWV0ZXJzLmxvZ2ljYWxTaXplLCBw
YXJhbWV0ZXJzLnJlc29sdXRpb25TY2FsZSk7CiAgICAgaWYgKGJhY2tlbmRTaXplLmlzRW1wdHko
KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTcwLDI0ICs3MCwyNCBAQCBzdGQ6OnVu
aXF1ZV9wdHI8SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ+IEltYWdlQnVmZmVyQ0dCaXRtYXBC
YWNrZW5kOjpjcmVhdGUoYwogCiAgICAgYXV0byBkYXRhUHJvdmlkZXIgPSBhZG9wdENGKENHRGF0
YVByb3ZpZGVyQ3JlYXRlV2l0aERhdGEoMCwgZGF0YSwgbnVtQnl0ZXMsIHJlbGVhc2VJbWFnZURh
dGEpKTsKIAotICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJDR0JpdG1hcEJh
Y2tlbmQ+KG5ldyBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZChzaXplLCBiYWNrZW5kU2l6ZSwg
cmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCwgZGF0YSwgV1RGTW92ZShk
YXRhUHJvdmlkZXIpLCBXVEZNb3ZlKGNvbnRleHQpKSk7CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVl
X3B0cjxJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZD4obmV3IEltYWdlQnVmZmVyQ0dCaXRtYXBC
YWNrZW5kKHBhcmFtZXRlcnMsIGRhdGEsIFdURk1vdmUoZGF0YVByb3ZpZGVyKSwgV1RGTW92ZShj
b250ZXh0KSkpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tl
bmQ+IEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpjcmVhdGUoY29uc3QgRmxvYXRTaXplJiBz
aXplLCBjb25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCitzdGQ6OnVuaXF1ZV9wdHI8SW1h
Z2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ+IEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpjcmVh
dGUoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycywgY29uc3QgR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0KQogewogICAgIGlmIChhdXRvIGNnQ29sb3JTcGFjZSA9IGNvbnRleHRDb2xvclNwYWNl
KGNvbnRleHQpKQotICAgICAgICByZXR1cm4gSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNy
ZWF0ZShzaXplLCAxLCBDb2xvclNwYWNlOjpTUkdCLCBjZ0NvbG9yU3BhY2UuZ2V0KCksIFBpeGVs
Rm9ybWF0OjpCR1JBOCwgbnVsbHB0cik7Ci0gICAgCi0gICAgcmV0dXJuIEltYWdlQnVmZmVyQ0dC
aXRtYXBCYWNrZW5kOjpjcmVhdGUoc2l6ZSwgMSwgQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3Jt
YXQ6OkJHUkE4LCBudWxscHRyKTsKKyAgICAgICAgcmV0dXJuIEltYWdlQnVmZmVyQ0dCaXRtYXBC
YWNrZW5kOjpjcmVhdGUocGFyYW1ldGVycywgY2dDb2xvclNwYWNlLmdldCgpLCBudWxscHRyKTsK
KworICAgIHJldHVybiBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y3JlYXRlKHBhcmFtZXRl
cnMsIG51bGxwdHIpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJDR0JpdG1hcEJh
Y2tlbmQ+IEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpjcmVhdGUoY29uc3QgRmxvYXRTaXpl
JiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgUGl4
ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIGNvbnN0IEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cpCitzdGQ6
OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ+IEltYWdlQnVmZmVyQ0dCaXRt
YXBCYWNrZW5kOjpjcmVhdGUoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycywgY29uc3QgSG9z
dFdpbmRvdyogaG9zdFdpbmRvdykKIHsKLSAgICByZXR1cm4gSW1hZ2VCdWZmZXJDR0JpdG1hcEJh
Y2tlbmQ6OmNyZWF0ZShzaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIGNhY2hlZENH
Q29sb3JTcGFjZShjb2xvclNwYWNlKSwgcGl4ZWxGb3JtYXQsIGhvc3RXaW5kb3cpOworICAgIHJl
dHVybiBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y3JlYXRlKHBhcmFtZXRlcnMsIGNhY2hl
ZENHQ29sb3JTcGFjZShwYXJhbWV0ZXJzLmNvbG9yU3BhY2UpLCBob3N0V2luZG93KTsKIH0KIAot
SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OkltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kKGNv
bnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEludFNpemUmIGJhY2tlbmRTaXplLCBm
bG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQg
cGl4ZWxGb3JtYXQsIHZvaWQqIGRhdGEsIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4mJiBk
YXRhUHJvdmlkZXIsIHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0NvbnRleHQ+JiYgY29udGV4dCkK
LSAgICA6IEltYWdlQnVmZmVyQ0dCYWNrZW5kKGxvZ2ljYWxTaXplLCBiYWNrZW5kU2l6ZSwgcmVz
b2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCkKK0ltYWdlQnVmZmVyQ0dCaXRt
YXBCYWNrZW5kOjpJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZChjb25zdCBQYXJhbWV0ZXJzJiBw
YXJhbWV0ZXJzLCB2b2lkKiBkYXRhLCBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+JiYgZGF0
YVByb3ZpZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NDb250ZXh0PiYmIGNvbnRleHQpCisg
ICAgOiBJbWFnZUJ1ZmZlckNHQmFja2VuZChwYXJhbWV0ZXJzKQogICAgICwgbV9kYXRhKGRhdGEp
CiAgICAgLCBtX2RhdGFQcm92aWRlcihXVEZNb3ZlKGRhdGFQcm92aWRlcikpCiAgICAgLCBtX2Nv
bnRleHQoV1RGTW92ZShjb250ZXh0KSkKQEAgLTEwMyw2ICsxMDMsMTEgQEAgR3JhcGhpY3NDb250
ZXh0JiBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y29udGV4dCgpIGNvbnN0CiAgICAgcmV0
dXJuICptX2NvbnRleHQ7CiB9CiAKK0ludFNpemUgSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6
OmJhY2tlbmRTaXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4geyBzdGF0aWNfY2FzdDxpbnQ+KENH
Qml0bWFwQ29udGV4dEdldFdpZHRoKGNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKSkpLCBzdGF0
aWNfY2FzdDxpbnQ+KENHQml0bWFwQ29udGV4dEdldEhlaWdodChjb250ZXh0KCkucGxhdGZvcm1D
b250ZXh0KCkpKSB9OworfQorCiBSZWZQdHI8TmF0aXZlSW1hZ2U+IEltYWdlQnVmZmVyQ0dCaXRt
YXBCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSBjb3B5QmVoYXZpb3Ip
IGNvbnN0CiB7CiAgICAgc3dpdGNoIChjb3B5QmVoYXZpb3IpIHsKQEAgLTExMCw5ICsxMTUsMTAg
QEAgUmVmUHRyPE5hdGl2ZUltYWdlPiBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y29weU5h
dGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkKICAgICAgICAgcmV0dXJuIE5hdGl2ZUltYWdlOjpj
cmVhdGUoYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGVJbWFnZShjb250ZXh0KCkucGxhdGZv
cm1Db250ZXh0KCkpKSk7CiAKICAgICBjYXNlIERvbnRDb3B5QmFja2luZ1N0b3JlOgorICAgICAg
ICBhdXRvIGJhY2tlbmRTaXplID0gdGhpcy0+YmFja2VuZFNpemUoKTsKICAgICAgICAgcmV0dXJu
IE5hdGl2ZUltYWdlOjpjcmVhdGUoYWRvcHRDRihDR0ltYWdlQ3JlYXRlKAotICAgICAgICAgICAg
bV9iYWNrZW5kU2l6ZS53aWR0aCgpLCBtX2JhY2tlbmRTaXplLmhlaWdodCgpLCA4LCAzMiwgYnl0
ZXNQZXJSb3coKSwKLSAgICAgICAgICAgIGNhY2hlZENHQ29sb3JTcGFjZShtX2NvbG9yU3BhY2Up
LCBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZEZpcnN0IHwga0NHQml0bWFwQnl0ZU9yZGVyMzJI
b3N0LCBtX2RhdGFQcm92aWRlci5nZXQoKSwKKyAgICAgICAgICAgIGJhY2tlbmRTaXplLndpZHRo
KCksIGJhY2tlbmRTaXplLmhlaWdodCgpLCA4LCAzMiwgYnl0ZXNQZXJSb3coKSwKKyAgICAgICAg
ICAgIGNhY2hlZENHQ29sb3JTcGFjZShjb2xvclNwYWNlKCkpLCBrQ0dJbWFnZUFscGhhUHJlbXVs
dGlwbGllZEZpcnN0IHwga0NHQml0bWFwQnl0ZU9yZGVyMzJIb3N0LCBtX2RhdGFQcm92aWRlci5n
ZXQoKSwKICAgICAgICAgICAgIDAsIHRydWUsIGtDR1JlbmRlcmluZ0ludGVudERlZmF1bHQpKSk7
CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQuaAppbmRleCBlOTJjOTJmNWQ1
MGZkZTU3YWFhM2NhNWMyZmYyOWRmMDhiODY0ZDI5Li44ZjMzMjNlN2RjZWM2MzU1YWNiN2Q1Yjk5
YzIwNzg3NzE1Yzg2YmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmgKQEAgLTM2
LDEyICszNiwxNCBAQCBjbGFzcyBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZCA6IHB1YmxpYyBJ
bWFnZUJ1ZmZlckNHQmFja2VuZCB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChJbWFnZUJ1
ZmZlckNHQml0bWFwQmFja2VuZCk7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW1hZ2VCdWZm
ZXJDR0JpdG1hcEJhY2tlbmQpOwogcHVibGljOgotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ+IGNyZWF0ZShjb25zdCBGbG9hdFNpemUmLCBmbG9h
dCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UsIENHQ29sb3JTcGFjZVJlZiwgUGl4ZWxGb3Jt
YXQsIGNvbnN0IEhvc3RXaW5kb3cqKTsKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdl
QnVmZmVyQ0dCaXRtYXBCYWNrZW5kPiBjcmVhdGUoY29uc3QgRmxvYXRTaXplJiwgZmxvYXQgcmVz
b2x1dGlvblNjYWxlLCBDb2xvclNwYWNlLCBQaXhlbEZvcm1hdCwgY29uc3QgSG9zdFdpbmRvdyop
OwotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ+
IGNyZWF0ZShjb25zdCBGbG9hdFNpemUmLCBjb25zdCBHcmFwaGljc0NvbnRleHQmKTsKKyAgICBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kPiBjcmVhdGUo
Y29uc3QgUGFyYW1ldGVycyYsIENHQ29sb3JTcGFjZVJlZiwgY29uc3QgSG9zdFdpbmRvdyopOwor
ICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ+IGNy
ZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiwgY29uc3QgSG9zdFdpbmRvdyopOworICAgIHN0YXRpYyBz
dGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ+IGNyZWF0ZShjb25zdCBQ
YXJhbWV0ZXJzJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0Jik7CiAKICAgICBHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQoKSBjb25zdCBvdmVycmlkZTsKIAorICAgIEludFNpemUgYmFja2VuZFNpemUo
KSBjb25zdCBvdmVycmlkZTsKKwogICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gY29weU5hdGl2ZUlt
YWdlKEJhY2tpbmdTdG9yZUNvcHkgPSBDb3B5QmFja2luZ1N0b3JlKSBjb25zdCBvdmVycmlkZTsK
IAogICAgIFZlY3Rvcjx1aW50OF90PiB0b0JHUkFEYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CkBAIC01
Miw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNPcmlnaW5B
dFVwcGVyTGVmdENvcm5lciA9IHRydWU7CiAKIHByaXZhdGU6Ci0gICAgSW1hZ2VCdWZmZXJDR0Jp
dG1hcEJhY2tlbmQoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50U2l6ZSYg
cGh5c2ljYWxTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UsIFBpeGVsRm9y
bWF0LCB2b2lkKiBkYXRhLCBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+JiYsIHN0ZDo6dW5p
cXVlX3B0cjxHcmFwaGljc0NvbnRleHQ+JiYpOworICAgIEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNr
ZW5kKGNvbnN0IFBhcmFtZXRlcnMmLCB2b2lkKiBkYXRhLCBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlk
ZXJSZWY+JiYsIHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0NvbnRleHQ+JiYpOwogCiAgICAgdm9p
ZCogbV9kYXRhOwogICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4gbV9kYXRhUHJvdmlk
ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFn
ZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmNwcAppbmRleCBhZDNmZjFkNzk3
NzIwMzc2NDBlMmQ2OTk1NDEyODg2MGI3NzQ4YzM2Li43YTY5YzU1M2MwMDEzNmQ5NzhmNDRjOTMy
ZTRhZTVmMWU2NGZkNThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5jcHAK
QEAgLTY0LDEzICs2NCwxMyBAQCBSZXRhaW5QdHI8Q0dDb2xvclNwYWNlUmVmPiBJbWFnZUJ1ZmZl
cklPU3VyZmFjZUJhY2tlbmQ6OmNvbnRleHRDb2xvclNwYWNlKGNvbnN0CiAgICAgcmV0dXJuIElt
YWdlQnVmZmVyQ0dCYWNrZW5kOjpjb250ZXh0Q29sb3JTcGFjZShjb250ZXh0KTsKIH0KIAotc3Rk
Ojp1bmlxdWVfcHRyPEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZD4gSW1hZ2VCdWZmZXJJT1N1
cmZhY2VCYWNrZW5kOjpjcmVhdGUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0
aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgQ0dDb2xvclNwYWNlUmVmIGNnQ29sb3JT
cGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIGNvbnN0IEhvc3RXaW5kb3cqIGhvc3RXaW5k
b3cpCitzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kPiBJbWFnZUJ1
ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJz
LCBDR0NvbG9yU3BhY2VSZWYgY2dDb2xvclNwYWNlLCBjb25zdCBIb3N0V2luZG93KiBob3N0V2lu
ZG93KQogewotICAgIEludFNpemUgYmFja2VuZFNpemUgPSBjYWxjdWxhdGVCYWNrZW5kU2l6ZShz
aXplLCByZXNvbHV0aW9uU2NhbGUpOworICAgIEludFNpemUgYmFja2VuZFNpemUgPSBjYWxjdWxh
dGVCYWNrZW5kU2l6ZShwYXJhbWV0ZXJzLmxvZ2ljYWxTaXplLCBwYXJhbWV0ZXJzLnJlc29sdXRp
b25TY2FsZSk7CiAgICAgaWYgKGJhY2tlbmRTaXplLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKLSAgICBhdXRvIHN1cmZhY2UgPSBJT1N1cmZhY2U6OmNyZWF0ZShiYWNrZW5k
U2l6ZSwgYmFja2VuZFNpemUsIGNnQ29sb3JTcGFjZSwgSU9TdXJmYWNlOjpmb3JtYXRGb3JQaXhl
bEZvcm1hdChwaXhlbEZvcm1hdCkpOworICAgIGF1dG8gc3VyZmFjZSA9IElPU3VyZmFjZTo6Y3Jl
YXRlKGJhY2tlbmRTaXplLCBiYWNrZW5kU2l6ZSwgY2dDb2xvclNwYWNlLCBJT1N1cmZhY2U6OmZv
cm1hdEZvclBpeGVsRm9ybWF0KHBhcmFtZXRlcnMucGl4ZWxGb3JtYXQpKTsKICAgICBpZiAoIXN1
cmZhY2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC04MCwyNCArODAsMjQgQEAgc3Rk
Ojp1bmlxdWVfcHRyPEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZD4gSW1hZ2VCdWZmZXJJT1N1
cmZhY2VCYWNrZW5kOjpjcmVhdGUKIAogICAgIENHQ29udGV4dENsZWFyUmVjdChjZ0NvbnRleHQu
Z2V0KCksIEZsb2F0UmVjdChGbG9hdFBvaW50Ojp6ZXJvKCksIGJhY2tlbmRTaXplKSk7CiAKLSAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ+KHNpemUsIGJh
Y2tlbmRTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0LCBXVEZN
b3ZlKHN1cmZhY2UpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxJbWFnZUJ1ZmZlcklPU3VyZmFj
ZUJhY2tlbmQ+KHBhcmFtZXRlcnMsIFdURk1vdmUoc3VyZmFjZSkpOwogfQogCi1zdGQ6OnVuaXF1
ZV9wdHI8SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kPiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJh
Y2tlbmQ6OmNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIGNvbnN0IEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCkKK3N0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ+
IEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmIHBh
cmFtZXRlcnMsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKIHsKICAgICBpZiAoYXV0
byBjZ0NvbG9yU3BhY2UgPSBjb250ZXh0Q29sb3JTcGFjZShjb250ZXh0KSkKLSAgICAgICAgcmV0
dXJuIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlKHNpemUsIDEsIENvbG9yU3Bh
Y2U6OlNSR0IsIGNnQ29sb3JTcGFjZS5nZXQoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4LCBudWxscHRy
KTsKLSAgICAKLSAgICByZXR1cm4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGUo
c2l6ZSwgMSwgQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4LCBudWxscHRyKTsK
KyAgICAgICAgcmV0dXJuIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlKHBhcmFt
ZXRlcnMsIGNnQ29sb3JTcGFjZS5nZXQoKSwgbnVsbHB0cik7CisKKyAgICByZXR1cm4gSW1hZ2VC
dWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGUocGFyYW1ldGVycywgbnVsbHB0cik7CiB9CiAK
LXN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ+IEltYWdlQnVmZmVy
SU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVz
b2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9y
bWF0LCBjb25zdCBIb3N0V2luZG93KiBob3N0V2luZG93KQorc3RkOjp1bmlxdWVfcHRyPEltYWdl
QnVmZmVySU9TdXJmYWNlQmFja2VuZD4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpjcmVh
dGUoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycywgY29uc3QgSG9zdFdpbmRvdyogaG9zdFdp
bmRvdykKIHsKLSAgICByZXR1cm4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGUo
c2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBjYWNoZWRDR0NvbG9yU3BhY2UoY29s
b3JTcGFjZSksIHBpeGVsRm9ybWF0LCBob3N0V2luZG93KTsKKyAgICByZXR1cm4gSW1hZ2VCdWZm
ZXJJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGUocGFyYW1ldGVycywgY2FjaGVkQ0dDb2xvclNwYWNl
KHBhcmFtZXRlcnMuY29sb3JTcGFjZSksIGhvc3RXaW5kb3cpOwogfQogCi1JbWFnZUJ1ZmZlcklP
U3VyZmFjZUJhY2tlbmQ6OkltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZChjb25zdCBGbG9hdFNp
emUmIGxvZ2ljYWxTaXplLCBjb25zdCBJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1
dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0
LCBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiYmIHN1cmZhY2UpCi0gICAgOiBJbWFnZUJ1ZmZl
ckNHQmFja2VuZChsb2dpY2FsU2l6ZSwgYmFja2VuZFNpemUsIHJlc29sdXRpb25TY2FsZSwgY29s
b3JTcGFjZSwgcGl4ZWxGb3JtYXQpCitJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OkltYWdl
QnVmZmVySU9TdXJmYWNlQmFja2VuZChjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBzdGQ6
OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiYmIHN1cmZhY2UpCisgICAgOiBJbWFnZUJ1ZmZlckNHQmFj
a2VuZChwYXJhbWV0ZXJzKQogICAgICwgbV9zdXJmYWNlKFdURk1vdmUoc3VyZmFjZSkpCiB7CiAg
ICAgQVNTRVJUKG1fc3VyZmFjZSk7CkBAIC0xMjAsNiArMTIwLDExIEBAIHZvaWQgSW1hZ2VCdWZm
ZXJJT1N1cmZhY2VCYWNrZW5kOjpmbHVzaENvbnRleHQoKQogICAgIENHQ29udGV4dEZsdXNoKGNv
bnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKSk7CiB9CiAKK0ludFNpemUgSW1hZ2VCdWZmZXJJT1N1
cmZhY2VCYWNrZW5kOjpiYWNrZW5kU2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc3VyZmFj
ZS0+c2l6ZSgpOworfQorCiBzaXplX3QgSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjptZW1v
cnlDb3N0KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9zdXJmYWNlLT50b3RhbEJ5dGVzKCk7CkBA
IC0xNDgsMTAgKzE1MywxMCBAQCBSZWZQdHI8TmF0aXZlSW1hZ2U+IEltYWdlQnVmZmVySU9TdXJm
YWNlQmFja2VuZDo6c2lua0ludG9OYXRpdmVJbWFnZSgpCiB2b2lkIEltYWdlQnVmZmVySU9TdXJm
YWNlQmFja2VuZDo6ZHJhd0NvbnN1bWluZyhHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0
IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIEZsb2F0UmVjdCBhZGp1c3Rl
ZFNyY1JlY3QgPSBzcmNSZWN0OwotICAgIGFkanVzdGVkU3JjUmVjdC5zY2FsZShtX3Jlc29sdXRp
b25TY2FsZSk7CisgICAgYWRqdXN0ZWRTcmNSZWN0LnNjYWxlKHJlc29sdXRpb25TY2FsZSgpKTsK
IAogICAgIGlmIChhdXRvIGltYWdlID0gc2lua0ludG9OYXRpdmVJbWFnZSgpKQotICAgICAgICBk
ZXN0Q29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoKmltYWdlLCBtX2JhY2tlbmRTaXplLCBkZXN0UmVj
dCwgYWRqdXN0ZWRTcmNSZWN0LCBvcHRpb25zKTsKKyAgICAgICAgZGVzdENvbnRleHQuZHJhd05h
dGl2ZUltYWdlKCppbWFnZSwgYmFja2VuZFNpemUoKSwgZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVj
dCwgb3B0aW9ucyk7CiB9CiAKIFJldGFpblB0cjxDRkRhdGFSZWY+IEltYWdlQnVmZmVySU9TdXJm
YWNlQmFja2VuZDo6dG9DRkRhdGEoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91
YmxlPiBxdWFsaXR5LCBQcmVzZXJ2ZVJlc29sdXRpb24gcHJlc2VydmVSZXNvbHV0aW9uKSBjb25z
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VC
dWZmZXJJT1N1cmZhY2VCYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuaAppbmRleCBkZTk4MjExMWU1MmMxMmVk
YjA4ZGM3ODhiNTBlY2VmYjM2NTA3NjUwLi40ODU5ZGY2ZmM1MjVkODVjMzI4YzE0NWYwNzkxNzgz
NTY5MDllMjVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuaApAQCAtMzksMTUg
KzM5LDE3IEBAIGNsYXNzIFdFQkNPUkVfRVhQT1JUIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2Vu
ZCA6IHB1YmxpYyBJbWFnZUJ1ZmZlckNHQmFja2VuZCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIElu
dFNpemUgY2FsY3VsYXRlQmFja2VuZFNpemUoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwg
ZmxvYXQgcmVzb2x1dGlvblNjYWxlKTsKIAotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1h
Z2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kPiBjcmVhdGUoY29uc3QgRmxvYXRTaXplJiwgZmxvYXQg
cmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlLCBDR0NvbG9yU3BhY2VSZWYsIFBpeGVsRm9ybWF0
LCBjb25zdCBIb3N0V2luZG93Kik7Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1
ZmZlcklPU3VyZmFjZUJhY2tlbmQ+IGNyZWF0ZShjb25zdCBGbG9hdFNpemUmLCBmbG9hdCByZXNv
bHV0aW9uU2NhbGUsIENvbG9yU3BhY2UsIFBpeGVsRm9ybWF0LCBjb25zdCBIb3N0V2luZG93Kik7
Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ+
IGNyZWF0ZShjb25zdCBGbG9hdFNpemUmLCBjb25zdCBHcmFwaGljc0NvbnRleHQmKTsKKyAgICBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZD4gY3JlYXRl
KGNvbnN0IFBhcmFtZXRlcnMmLCBDR0NvbG9yU3BhY2VSZWYsIGNvbnN0IEhvc3RXaW5kb3cqKTsK
KyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZD4g
Y3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmLCBjb25zdCBIb3N0V2luZG93Kik7CisgICAgc3RhdGlj
IHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ+IGNyZWF0ZShjb25z
dCBQYXJhbWV0ZXJzJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0Jik7CiAKLSAgICBJbWFnZUJ1ZmZl
cklPU3VyZmFjZUJhY2tlbmQoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50
U2l6ZSYgcGh5c2ljYWxTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UsIFBp
eGVsRm9ybWF0LCBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiYmKTsKKyAgICBJbWFnZUJ1ZmZl
cklPU3VyZmFjZUJhY2tlbmQoY29uc3QgUGFyYW1ldGVycyYsIHN0ZDo6dW5pcXVlX3B0cjxJT1N1
cmZhY2U+JiYpOwogCiAgICAgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KCkgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBmbHVzaENvbnRleHQoKSBvdmVycmlkZTsKIAorICAgIEludFNpemUgYmFj
a2VuZFNpemUoKSBjb25zdCBvdmVycmlkZTsKKyAgICAKICAgICBzaXplX3QgbWVtb3J5Q29zdCgp
IGNvbnN0IG92ZXJyaWRlOwogICAgIHNpemVfdCBleHRlcm5hbE1lbW9yeUNvc3QoKSBjb25zdCBv
dmVycmlkZTsKIApAQCAtNjksNyArNzEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWxlYXNlQnVm
ZmVyVG9Qb29sKCkgb3ZlcnJpZGU7CiAKICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNPcmln
aW5BdFVwcGVyTGVmdENvcm5lciA9IHRydWU7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlz
QWNjZWxlcmF0ZWQgPSB0cnVlOworICAgIHN0YXRpYyBjb25zdGV4cHIgUmVuZGVyaW5nTW9kZSBy
ZW5kZXJpbmdNb2RlID0gUmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQ7CiAKIHByb3RlY3RlZDoK
ICAgICBzdGF0aWMgUmV0YWluUHRyPENHQ29sb3JTcGFjZVJlZj4gY29udGV4dENvbG9yU3BhY2Uo
Y29uc3QgR3JhcGhpY3NDb250ZXh0Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oCmluZGV4IDI2ZmM5
NzMwNzIxMTI3MzAzOTNlMmRjYmM4N2QwYzZiOWNhNTQyNTguLjE2YjE5N2Y5ZWUyZDI4ZGJlOTIx
ZDkzMDk0M2Q0MzA0NjFkZmNkODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oCkBAIC0zMyw3ICsz
Myw2IEBACiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNl
dC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgotI2luY2x1ZGUgPHd0Zi9PYmplY3RJ
ZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgogCkBAIC00NSw5ICs0NCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
bmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKIAotZW51bSBGbHVzaElkZW50aWZpZXJUeXBlIHsgfTsK
LXVzaW5nIEZsdXNoSWRlbnRpZmllciA9IE9iamVjdElkZW50aWZpZXI8Rmx1c2hJZGVudGlmaWVy
VHlwZT47Ci0KIGVudW0gQXNUZXh0RmxhZyB7CiAgICAgTm9uZSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA9IDAsCiAgICAgSW5jbHVkZXNQbGF0Zm9ybU9wZXJhdGlvbnMgICAgICA9IDEgPDwg
MCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdEZsdXNoSWRlbnRpZmllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0Rmx1c2hJZGVudGlmaWVyLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uOWNmNzgxNjhlYmI3ZmM3MzdiOWI0YTZjZjhkNTM3MjlmNWEwNjBlYwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdEZsdXNoSWRlbnRpZmllci5oCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKKworZW51bSBG
bHVzaElkZW50aWZpZXJUeXBlIHsgfTsKK3VzaW5nIEZsdXNoSWRlbnRpZmllciA9IE9iamVjdElk
ZW50aWZpZXI8Rmx1c2hJZGVudGlmaWVyVHlwZT47CisKK30gLy8gRGlzcGxheUxpc3QKKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEltYWdlQnVm
ZmVyLmgKaW5kZXggZjViMjIzNDAyYWViMzc3MjhiNzMwMWZiNjY3MTE4YTNiMmU4YjA0MC4uYTY1
ZmNhNTU5YTE2NWZjNmIyZDg2MjNmMzUzZTExNjQ3MjkzNzc2YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SW1hZ2VC
dWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oCkBAIC0zNCwyNiArMzQsMjkgQEAgbmFtZXNwYWNl
IERpc3BsYXlMaXN0IHsKIHRlbXBsYXRlPHR5cGVuYW1lIEJhY2tlbmRUeXBlPgogY2xhc3MgSW1h
Z2VCdWZmZXIgOiBwdWJsaWMgQ29uY3JldGVJbWFnZUJ1ZmZlcjxCYWNrZW5kVHlwZT4gewogICAg
IHVzaW5nIEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyID0gQ29uY3JldGVJbWFnZUJ1ZmZlcjxCYWNr
ZW5kVHlwZT47CisgICAgdXNpbmcgQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXI6OmxvZ2ljYWxTaXpl
OworICAgIHVzaW5nIEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyOjpiYXNlVHJhbnNmb3JtOwogCiBw
dWJsaWM6CiAgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxv
YXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBp
eGVsRm9ybWF0LCBjb25zdCBIb3N0V2luZG93KiBob3N0V2luZG93KQogICAgIHsKLSAgICAgICAg
cmV0dXJuIEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyOjp0ZW1wbGF0ZSBjcmVhdGU8SW1hZ2VCdWZm
ZXI+KHNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQsIGhvc3RX
aW5kb3csIHNpemUpOworICAgICAgICByZXR1cm4gQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXI6OnRl
bXBsYXRlIGNyZWF0ZTxJbWFnZUJ1ZmZlcj4oc2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNw
YWNlLCBwaXhlbEZvcm1hdCwgaG9zdFdpbmRvdyk7CiAgICAgfQogCiAgICAgc3RhdGljIGF1dG8g
Y3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0KQogICAgIHsKLSAgICAgICAgcmV0dXJuIEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyOjp0ZW1w
bGF0ZSBjcmVhdGU8SW1hZ2VCdWZmZXI+KHNpemUsIGNvbnRleHQsIHNpemUpOworICAgICAgICBy
ZXR1cm4gQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXI6OnRlbXBsYXRlIGNyZWF0ZTxJbWFnZUJ1ZmZl
cj4oc2l6ZSwgY29udGV4dCk7CiAgICAgfQogCi0gICAgSW1hZ2VCdWZmZXIoc3RkOjp1bmlxdWVf
cHRyPEJhY2tlbmRUeXBlPiYmIGRhdGFCYWNrZW5kLCBjb25zdCBGbG9hdFNpemUmIHNpemUpCi0g
ICAgICAgIDogQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXIoV1RGTW92ZShkYXRhQmFja2VuZCkpCi0g
ICAgICAgICwgbV9kcmF3aW5nQ29udGV4dChzaXplLCBpbml0aWFsRHJhd2luZ0NvbnRleHRDVE0o
c2l6ZSkpCisgICAgSW1hZ2VCdWZmZXIoY29uc3QgSW1hZ2VCdWZmZXJCYWNrZW5kOjpQYXJhbWV0
ZXJzJiBwYXJhbWV0ZXJzLCBzdGQ6OnVuaXF1ZV9wdHI8QmFja2VuZFR5cGU+JiYgYmFja2VuZCkK
KyAgICAgICAgOiBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZlcihwYXJhbWV0ZXJzLCBXVEZNb3ZlKGJh
Y2tlbmQpKQorICAgICAgICAsIG1fZHJhd2luZ0NvbnRleHQobG9naWNhbFNpemUoKSwgYmFzZVRy
YW5zZm9ybSgpKQogICAgIHsKICAgICB9CiAKLSAgICBJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNp
emUmIHNpemUsIFJlY29yZGVyOjpEZWxlZ2F0ZSogZGVsZWdhdGUgPSBudWxscHRyKQotICAgICAg
ICA6IG1fZHJhd2luZ0NvbnRleHQoc2l6ZSwgaW5pdGlhbERyYXdpbmdDb250ZXh0Q1RNKHNpemUp
LCBkZWxlZ2F0ZSkKKyAgICBJbWFnZUJ1ZmZlcihjb25zdCBJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBh
cmFtZXRlcnMmIHBhcmFtZXRlcnMsIFJlY29yZGVyOjpEZWxlZ2F0ZSogZGVsZWdhdGUgPSBudWxs
cHRyKQorICAgICAgICA6IEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyKHBhcmFtZXRlcnMpCisgICAg
ICAgICwgbV9kcmF3aW5nQ29udGV4dChsb2dpY2FsU2l6ZSgpLCBiYXNlVHJhbnNmb3JtKCksIGRl
bGVnYXRlKQogICAgIHsKICAgICB9CiAKQEAgLTc3LDE1ICs4MCw2IEBAIHB1YmxpYzoKIAogcHJv
dGVjdGVkOgogICAgIERyYXdpbmdDb250ZXh0IG1fZHJhd2luZ0NvbnRleHQ7Ci0KLXByaXZhdGU6
Ci0gICAgc3RhdGljIEFmZmluZVRyYW5zZm9ybSBpbml0aWFsRHJhd2luZ0NvbnRleHRDVE0oY29u
c3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSkKLSAgICB7Ci0gICAgICAgIEFmZmluZVRyYW5zZm9y
bSBpbml0aWFsQ1RNOwotICAgICAgICBpZiAoQmFja2VuZFR5cGU6OmlzT3JpZ2luQXRVcHBlckxl
ZnRDb3JuZXIpCi0gICAgICAgICAgICBpbml0aWFsQ1RNID0gaW5pdGlhbENUTS5zY2FsZSgxLCAt
MSkudHJhbnNsYXRlKDAsIC1sb2dpY2FsU2l6ZS5oZWlnaHQoKSk7Ci0gICAgICAgIHJldHVybiBp
bml0aWFsQ1RNOwotICAgIH0KIH07CiAKIH0gLy8gRGlzcGxheUxpc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRpcmVjdDJEQmFj
a2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZm
ZXJEaXJlY3QyREJhY2tlbmQuY3BwCmluZGV4IDM3OGFhZjRjNDBjNGUxMjJhY2JlMDY5NDMyYzdh
ZDdlYzIwOWVkNzMuLjAxZDJlNzgwMjg1YjExZmVjMzliNGNkMjZiZjRjZmZmMDgwNzMzNzcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZl
ckRpcmVjdDJEQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kLmNwcApAQCAtMTcxLDcgKzE3MSw3IEBA
IHN0YXRpYyBSZWZQdHI8SW1hZ2U+IGNyZWF0ZUJpdG1hcEltYWdlQWZ0ZXJTY2FsaW5nSWZOZWVk
ZWQoSUQyRDFCaXRtYXBSZW5kZXJUYXJnCiBSZWZQdHI8SW1hZ2U+IEltYWdlQnVmZmVyRGlyZWN0
MkRCYWNrZW5kOjpjb3B5SW1hZ2UoQmFja2luZ1N0b3JlQ29weSBjb3B5QmVoYXZpb3IsIFByZXNl
cnZlUmVzb2x1dGlvbiBwcmVzZXJ2ZVJlc29sdXRpb24pIGNvbnN0CiB7CiAgICAgUGxhdGZvcm1J
bWFnZVB0ciBpbWFnZTsKLSAgICBpZiAobV9yZXNvbHV0aW9uU2NhbGUgPT0gMSB8fCBwcmVzZXJ2
ZVJlc29sdXRpb24gPT0gUHJlc2VydmVSZXNvbHV0aW9uOjpZZXMpCisgICAgaWYgKHJlc29sdXRp
b25TY2FsZSgpID09IDEgfHwgcHJlc2VydmVSZXNvbHV0aW9uID09IFByZXNlcnZlUmVzb2x1dGlv
bjo6WWVzKQogICAgICAgICBpbWFnZSA9IGNvcHlOYXRpdmVJbWFnZShjb3B5QmVoYXZpb3IpLT5w
bGF0Zm9ybUltYWdlKCk7CiAgICAgZWxzZQogICAgICAgICBpbWFnZSA9IGNvcHlOYXRpdmVJbWFn
ZShEb250Q29weUJhY2tpbmdTdG9yZSktPnBsYXRmb3JtSW1hZ2UoKTsKQEAgLTI2OSw3ICsyNjks
NyBAQCBQbGF0Zm9ybUltYWdlUHRyIEltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpjb21wYXRp
YmxlQml0bWFwKElEMkQxUmVuZGVyVGFyZ2V0Kgogdm9pZCBJbWFnZUJ1ZmZlckRpcmVjdDJEQmFj
a2VuZDo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJiBvcHRpb25zKQogewogICAgIEZsb2F0UmVjdCBhZGp1c3RlZFNyY1JlY3QgPSBzcmNS
ZWN0OwotICAgIGFkanVzdGVkU3JjUmVjdC5zY2FsZShtX3Jlc29sdXRpb25TY2FsZSwgbV9yZXNv
bHV0aW9uU2NhbGUpOworICAgIGFkanVzdGVkU3JjUmVjdC5zY2FsZShyZXNvbHV0aW9uU2NhbGUo
KSk7CiAKICAgICBhdXRvIGNvbXBhdGlibGVCaXRtYXAgPSBjb21wYXRpYmxlQml0bWFwKGRlc3RD
b250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLT5yZW5kZXJUYXJnZXQoKSk7CiAKQEAgLTI4Myw3ICsy
ODMsNyBAQCB2b2lkIEltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpkcmF3KEdyYXBoaWNzQ29u
dGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0Ugogdm9pZCBJbWFnZUJ1ZmZlckRpcmVjdDJE
QmFja2VuZDo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBj
b25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRp
b25zKQogewogICAgIEZsb2F0UmVjdCBhZGp1c3RlZFNyY1JlY3QgPSBzcmNSZWN0OwotICAgIGFk
anVzdGVkU3JjUmVjdC5zY2FsZShtX3Jlc29sdXRpb25TY2FsZSk7CisgICAgYWRqdXN0ZWRTcmNS
ZWN0LnNjYWxlKHJlc29sdXRpb25TY2FsZSgpKTsKIAogICAgIGlmIChhdXRvIGltYWdlID0gY29w
eUltYWdlKCZkZXN0Q29udGV4dCA9PSAmY29udGV4dCgpID8gQ29weUJhY2tpbmdTdG9yZSA6IERv
bnRDb3B5QmFja2luZ1N0b3JlKSkKICAgICAgICAgaW1hZ2UtPmRyYXdQYXR0ZXJuKGRlc3RDb250
ZXh0LCBkZXN0UmVjdCwgYWRqdXN0ZWRTcmNSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwg
c3BhY2luZywgb3B0aW9ucyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oCmluZGV4IDRkNWQwMjUzYmFhMzZlNTQ1N2U0ODE2
NDUzODI0MzdlMzE5YTg1NzguLmU2MTNhZDAwNGM0NjNhZTMzYzM4OTVkMDQ4MzEyZDNlNDJlNTc3
ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJ
bWFnZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVJbWFnZUJ1ZmZlci5oCkBAIC00OSwxMiArNDksMTIgQEAgcHVibGljOgogICAgICAgICByZXR1
cm4gQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXI6OnRlbXBsYXRlIGNyZWF0ZTxSZW1vdGVJbWFnZUJ1
ZmZlcj4oc2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCwgbnVs
bHB0ciwgcmVtb3RlUmVuZGVyaW5nQmFja2VuZCwgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
KTsKICAgICB9CiAKLSAgICBSZW1vdGVJbWFnZUJ1ZmZlcihzdGQ6OnVuaXF1ZV9wdHI8QmFja2Vu
ZFR5cGU+JiYgYmFja2VuZCwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZCYgcmVtb3RlUmVuZGVyaW5n
QmFja2VuZCwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcikKLSAgICAgICAgOiBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZlcihXVEZN
b3ZlKGJhY2tlbmQpLCByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCisgICAgUmVtb3RlSW1h
Z2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjpQYXJhbWV0ZXJzJiBw
YXJhbWV0ZXJzLCBzdGQ6OnVuaXF1ZV9wdHI8QmFja2VuZFR5cGU+JiYgYmFja2VuZCwgUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZCYgcmVtb3RlUmVuZGVyaW5nQmFja2VuZCwgV2ViQ29yZTo6UmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKKyAgICAg
ICAgOiBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZlcihwYXJhbWV0ZXJzLCBXVEZNb3ZlKGJhY2tlbmQp
LCByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCiAgICAgICAgICwgbV9yZW1vdGVSZW5kZXJp
bmdCYWNrZW5kKHJlbW90ZVJlbmRlcmluZ0JhY2tlbmQpCiAgICAgICAgICwgbV9yZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogICAgIHsKLSAg
ICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmltYWdlQnVmZmVyQmFja2VuZFdhc0NyZWF0
ZWQobV9iYWNrZW5kLT5sb2dpY2FsU2l6ZSgpLCBtX2JhY2tlbmQtPmJhY2tlbmRTaXplKCksIG1f
YmFja2VuZC0+cmVzb2x1dGlvblNjYWxlKCksIG1fYmFja2VuZC0+Y29sb3JTcGFjZSgpLCBtX2Jh
Y2tlbmQtPnBpeGVsRm9ybWF0KCksIG1fYmFja2VuZC0+Y3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5k
SGFuZGxlKCksIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CisgICAgICAgIG1fcmVtb3Rl
UmVuZGVyaW5nQmFja2VuZC5kaWRDcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQobV9iYWNrZW5kLT5j
cmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUoKSwgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyKTsKICAgICB9CiAKICAgICB+UmVtb3RlSW1hZ2VCdWZmZXIoKQpAQCAtNjUsMTcgKzY1LDYg
QEAgcHVibGljOgogICAgICAgICAgICAgY29udGV4dCgpLnJlc3RvcmUoKTsKICAgICB9CiAKLSAg
ICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVwbGF5UmVzdWx0IHN1Ym1pdERpc3BsYXlMaXN0KGNv
bnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QpCi0gICAg
ewotICAgICAgICBpZiAoZGlzcGxheUxpc3QuaXNFbXB0eSgpKQotICAgICAgICAgICAgcmV0dXJu
IHsgfTsKLQotICAgICAgICBjb25zdCBhdXRvJiBpbWFnZUJ1ZmZlcnMgPSBtX3JlbW90ZVJlbmRl
cmluZ0JhY2tlbmQucmVtb3RlUmVzb3VyY2VDYWNoZSgpLmltYWdlQnVmZmVycygpOwotICAgICAg
ICBjb25zdCBhdXRvJiBuYXRpdmVJbWFnZXMgPSBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQucmVt
b3RlUmVzb3VyY2VDYWNoZSgpLm5hdGl2ZUltYWdlcygpOwotICAgICAgICBXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6UmVwbGF5ZXIgcmVwbGF5ZXIgeyBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZlcjo6Y29u
dGV4dCgpLCBkaXNwbGF5TGlzdCwgJmltYWdlQnVmZmVycywgJm5hdGl2ZUltYWdlcywgdGhpcyB9
OwotICAgICAgICByZXR1cm4gcmVwbGF5ZXIucmVwbGF5KCk7Ci0gICAgfQotCiBwcml2YXRlOgog
ICAgIGJvb2wgYXBwbHkoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1IYW5kbGUgaXRlbSwgV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBvdmVycmlkZQogICAgIHsKQEAgLTEwMSw2
ICs5MCwxNyBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gbV9yZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kLmFwcGx5TWVkaWFJdGVtKGl0ZW0sIGNvbnRleHQpOwogICAgIH0KIAorICAgIHZvaWQgc3Vi
bWl0RGlzcGxheUxpc3QoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiBk
aXNwbGF5TGlzdCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGlmIChkaXNwbGF5TGlzdC5pc0Vt
cHR5KCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgY29uc3QgYXV0byYgaW1hZ2VC
dWZmZXJzID0gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLnJlbW90ZVJlc291cmNlQ2FjaGUoKS5p
bWFnZUJ1ZmZlcnMoKTsKKyAgICAgICAgY29uc3QgYXV0byYgbmF0aXZlSW1hZ2VzID0gbV9yZW1v
dGVSZW5kZXJpbmdCYWNrZW5kLnJlbW90ZVJlc291cmNlQ2FjaGUoKS5uYXRpdmVJbWFnZXMoKTsK
KyAgICAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlcGxheWVyIHJlcGxheWVyIHsgQmFzZUNv
bmNyZXRlSW1hZ2VCdWZmZXI6OmNvbnRleHQoKSwgZGlzcGxheUxpc3QsICZpbWFnZUJ1ZmZlcnMs
ICZuYXRpdmVJbWFnZXMsIHRoaXMgfTsKKyAgICAgICAgcmVwbGF5ZXIucmVwbGF5KCk7CisgICAg
fQorCiAgICAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZCYgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5k
OwogICAgIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBtX3JlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKaW5kZXggNmRkZWIw
Mjc5MjllNTA0ZjgzYjBhMTg2YzdlZWFiOGU1YjlkNjg3Mi4uMjJkYTk5OGJmOTkwMjJiNmM1MWNl
MjM4MTllOWVjZmRlZWQyYTM3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcApAQCAtOTksOSAr
OTksOSBAQCBib29sIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmFwcGx5TWVkaWFJdGVtKERpc3Bs
YXlMaXN0OjpJdGVtSGFuZGxlIGl0ZW0sIEdyYXBoaQogICAgIHJldHVybiB0cnVlOwogfQogCi12
b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmltYWdlQnVmZmVyQmFja2VuZFdhc0NyZWF0ZWQo
Y29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50U2l6ZSYgYmFja2VuZFNpemUs
IGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBQaXhlbEZvcm1h
dCBwaXhlbEZvcm1hdCwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGhhbmRsZSwgUmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKK3ZvaWQgUmVt
b3RlUmVuZGVyaW5nQmFja2VuZDo6ZGlkQ3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kKEltYWdlQnVm
ZmVyQmFja2VuZEhhbmRsZSBoYW5kbGUsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5OjpJbWFnZUJ1ZmZlckJhY2tlbmRXYXNDcmVhdGVkKGxvZ2ljYWxT
aXplLCBiYWNrZW5kU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1h
dCwgV1RGTW92ZShoYW5kbGUpLCByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpLCBtX3JlbmRl
cmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHk6OkRpZENyZWF0ZUltYWdlQnVmZmVyQmFja2VuZChXVEZNb3ZlKGhhbmRs
ZSksIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciksIG1fcmVuZGVyaW5nQmFja2VuZElkZW50
aWZpZXIpOwogfQogCiB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmRpZEZsdXNoKERpc3Bs
YXlMaXN0OjpGbHVzaElkZW50aWZpZXIgZmx1c2hJZGVudGlmaWVyLCBSZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQpAQCAtMTQ4LDEwICsxNDgs
NyBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmFwcGx5RGlzcGxheUxpc3RzRnJvbUhh
bmRsZShJbWFnZUJ1ZmZlciYgZGVzdGluYXRpbwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAKLSAgICAgICAgaWYgKGRlc3RpbmF0aW9uLmlzQWNjZWxlcmF0ZWQoKSkKLSAgICAgICAg
ICAgIHN0YXRpY19jYXN0PEFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXImPihkZXN0aW5hdGlv
bikuc3VibWl0RGlzcGxheUxpc3QoKmRpc3BsYXlMaXN0KTsKLSAgICAgICAgZWxzZQotICAgICAg
ICAgICAgc3RhdGljX2Nhc3Q8VW5hY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyJj4oZGVzdGlu
YXRpb24pLnN1Ym1pdERpc3BsYXlMaXN0KCpkaXNwbGF5TGlzdCk7CisgICAgICAgIGRlc3RpbmF0
aW9uLnN1Ym1pdERpc3BsYXlMaXN0KCpkaXNwbGF5TGlzdCk7CiAKICAgICAgICAgQ2hlY2tlZFNp
emUgY2hlY2tlZE9mZnNldCA9IG9mZnNldDsKICAgICAgICAgY2hlY2tlZE9mZnNldCArPSBzaXpl
VG9SZWFkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmQuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKaW5kZXggNjQwNjY2OGZhZTA1MDU3ZTlkZjMyNjRm
NTc1MjQ5NDg5ZDcwNWM3OC4uNTkxOWU5NTY0ZjY2M2RmMzlmZmIzYzE1YjE1YTNiOGMzMjMwZjVm
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJl
bmRlcmluZ0JhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCkBAIC03MCw3ICs3MCw3IEBAIHB1YmxpYzoKICAgICBi
b29sIGFwcGx5TWVkaWFJdGVtKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtSGFuZGxlLCBXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQmKTsKIAogICAgIC8vIE1lc3NhZ2VzIHRvIGJlIHNlbnQuCi0g
ICAgdm9pZCBpbWFnZUJ1ZmZlckJhY2tlbmRXYXNDcmVhdGVkKGNvbnN0IFdlYkNvcmU6OkZsb2F0
U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGJhY2tlbmRTaXplLCBm
bG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UsIFdlYkNvcmU6OlBpeGVs
Rm9ybWF0LCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcik7CisgICAgdm9pZCBkaWRDcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQoSW1h
Z2VCdWZmZXJCYWNrZW5kSGFuZGxlLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIpOwogICAgIHZvaWQgZGlkRmx1c2goV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZsdXNoSWRlbnRp
ZmllciwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKIAogICAgIHZvaWQg
c2V0TmV4dEl0ZW1CdWZmZXJUb1JlYWQoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJ
ZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVy
VHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Jl
bW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbQppbmRleCBlZjk0YzZiMDIw
NTA0M2QzNzFiZjBmOTY5NmM4ZDhjYTYzNmMwMTI1Li5jNWU2MTJjMDdmMWQyNGVhYjQ0N2FkZDlk
YTFhNjc0NGQ4MzhkNGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVM
YXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW0KKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tCkBAIC0zMTUs
OCArMzE1LDcgQEAgYm9vbCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZGlzcGxheSgpCiAKICAg
ICBtX2xheWVyLT5vd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJMYXllckRpZERpc3BsYXkobV9sYXll
cik7CiAKLSAgICAvLyBGSVhNRTogVGhpcyBtZXRob2QgaGFzIGEgd2VpcmQgbmFtZS4gVGhpcyBp
cyAic3VibWl0IHdvcmsiLgotICAgIG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXItPmZsdXNoRHJh
d2luZ0NvbnRleHRBbmRDb21taXQoKTsKKyAgICBtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVyLT5j
b21taXREcmF3aW5nQ29udGV4dCgpOwogCiAgICAgbV9mcm9udEJ1ZmZlckZsdXNoZXIgPSBtX2Zy
b250QnVmZmVyLmltYWdlQnVmZmVyLT5jcmVhdGVGbHVzaGVyKCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVC
aXRtYXBCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcAppbmRleCA4NTVjODk0OTY2YzU4
N2JiMGU2YWVjNTExOWRlNGI5NDQ1MDg3ZDRiLi40Yzk2NDJjMzFkNzM5NzFiZDdhZjQ1YmY1NTUy
ZWJmMWZlM2M0NzExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1h
cEJhY2tlbmQuY3BwCkBAIC00MywxNyArNDMsMTcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1h
cEJhY2tlbmQpOwogCi1zdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBC
YWNrZW5kPiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmNyZWF0ZShjb25zdCBG
bG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNw
YWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgY29uc3QgSG9zdFdpbmRvdyopCitzdGQ6OnVu
aXF1ZV9wdHI8SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kPiBJbWFnZUJ1ZmZlclNo
YXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJz
LCBjb25zdCBIb3N0V2luZG93KikKIHsKLSAgICBBU1NFUlQocGl4ZWxGb3JtYXQgPT0gUGl4ZWxG
b3JtYXQ6OkJHUkE4KTsKKyAgICBBU1NFUlQocGFyYW1ldGVycy5waXhlbEZvcm1hdCA9PSBQaXhl
bEZvcm1hdDo6QkdSQTgpOwogCi0gICAgSW50U2l6ZSBiYWNrZW5kU2l6ZSA9IGNhbGN1bGF0ZUJh
Y2tlbmRTaXplKHNpemUsIHJlc29sdXRpb25TY2FsZSk7CisgICAgSW50U2l6ZSBiYWNrZW5kU2l6
ZSA9IGNhbGN1bGF0ZUJhY2tlbmRTaXplKHBhcmFtZXRlcnMubG9naWNhbFNpemUsIHBhcmFtZXRl
cnMucmVzb2x1dGlvblNjYWxlKTsKICAgICBpZiAoYmFja2VuZFNpemUuaXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIFNoYXJlYWJsZUJpdG1hcDo6Q29uZmlndXJhdGlv
biBjb25maWd1cmF0aW9uOwogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIGNvbmZpZ3VyYXRpb24u
Y29sb3JTcGFjZSA9IHsgY2FjaGVkQ0dDb2xvclNwYWNlKGNvbG9yU3BhY2UpIH07CisgICAgY29u
ZmlndXJhdGlvbi5jb2xvclNwYWNlID0geyBjYWNoZWRDR0NvbG9yU3BhY2UocGFyYW1ldGVycy5j
b2xvclNwYWNlKSB9OwogI2VuZGlmCiAgICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6
OmNyZWF0ZVNoYXJlYWJsZShiYWNrZW5kU2l6ZSwgY29uZmlndXJhdGlvbik7CiAgICAgaWYgKCFi
aXRtYXApCkBAIC02MywxMCArNjMsMTAgQEAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyU2hh
cmVhYmxlQml0bWFwQmFja2VuZD4gSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWMKICAgICBp
ZiAoIWNvbnRleHQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIG1ha2VV
bmlxdWU8SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kPihzaXplLCBiYWNrZW5kU2l6
ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCwgV1RGTW92ZShiaXRt
YXApLCBXVEZNb3ZlKGNvbnRleHQpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxJbWFnZUJ1ZmZl
clNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ+KHBhcmFtZXRlcnMsIFdURk1vdmUoYml0bWFwKSwgV1RG
TW92ZShjb250ZXh0KSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlclNoYXJlYWJs
ZUJpdG1hcEJhY2tlbmQ+IEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6Y3JlYXRl
KGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEludFNpemUmIGJhY2tlbmRTaXpl
LCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgUGl4ZWxGb3Jt
YXQgcGl4ZWxGb3JtYXQsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBoYW5kbGUpCitzdGQ6OnVu
aXF1ZV9wdHI8SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kPiBJbWFnZUJ1ZmZlclNo
YXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJz
LCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgaGFuZGxlKQogewogICAgIGlmICghV1RGOjpob2xk
c19hbHRlcm5hdGl2ZTxTaGFyZWFibGVCaXRtYXA6OkhhbmRsZT4oaGFuZGxlKSkgewogICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTgxLDExICs4MSwxMSBAQCBzdGQ6OnVuaXF1ZV9w
dHI8SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kPiBJbWFnZUJ1ZmZlclNoYXJlYWJs
ZUJpdG1hcEJhYwogICAgIGlmICghY29udGV4dCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
LSAgICByZXR1cm4gbWFrZVVuaXF1ZTxJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ+
KGxvZ2ljYWxTaXplLCBiYWNrZW5kU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBw
aXhlbEZvcm1hdCwgV1RGTW92ZShiaXRtYXApLCBXVEZNb3ZlKGNvbnRleHQpKTsKKyAgICByZXR1
cm4gbWFrZVVuaXF1ZTxJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ+KHBhcmFtZXRl
cnMsIFdURk1vdmUoYml0bWFwKSwgV1RGTW92ZShjb250ZXh0KSk7CiB9CiAKLUltYWdlQnVmZmVy
U2hhcmVhYmxlQml0bWFwQmFja2VuZDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5k
KGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEludFNpemUmIHBoeXNpY2FsU2l6
ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFBpeGVsRm9y
bWF0IHBpeGVsRm9ybWF0LCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiYmIGJpdG1hcCwgc3RkOjp1
bmlxdWVfcHRyPEdyYXBoaWNzQ29udGV4dD4mJiBjb250ZXh0KQotICAgIDogUGxhdGZvcm1JbWFn
ZUJ1ZmZlckJhY2tlbmQobG9naWNhbFNpemUsIHBoeXNpY2FsU2l6ZSwgcmVzb2x1dGlvblNjYWxl
LCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCkKK0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFj
a2VuZDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kKGNvbnN0IFBhcmFtZXRlcnMm
IHBhcmFtZXRlcnMsIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+JiYgYml0bWFwLCBzdGQ6OnVuaXF1
ZV9wdHI8R3JhcGhpY3NDb250ZXh0PiYmIGNvbnRleHQpCisgICAgOiBQbGF0Zm9ybUltYWdlQnVm
ZmVyQmFja2VuZChwYXJhbWV0ZXJzKQogICAgICwgbV9iaXRtYXAoV1RGTW92ZShiaXRtYXApKQog
ICAgICwgbV9jb250ZXh0KFdURk1vdmUoY29udGV4dCkpCiB7CkBAIC05OCw2ICs5OCwxMSBAQCBJ
bWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5k
OjpjcmVhdGVJbWFnZUJ1ZmZlckJhYwogICAgIHJldHVybiBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5k
bGUoV1RGTW92ZShoYW5kbGUpKTsKIH0KIAorSW50U2l6ZSBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJp
dG1hcEJhY2tlbmQ6OmJhY2tlbmRTaXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9iaXRtYXAt
PnNpemUoKTsKK30KKwogUmVmUHRyPE5hdGl2ZUltYWdlPiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJp
dG1hcEJhY2tlbmQ6OmNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5KSBjb25zdAogewog
I2lmIFVTRShDRykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2Vu
ZC5oCmluZGV4IDBjN2YwNDdmODgzNWU0YjhkNjNjMTVmNDFlYzkyMTAyZTQ1ODUzOTkuLjU1NTA2
YTQ5ZDAzZTM5ZTg4ZTAzNjFlNDkxNTVmMTMxZDc5OTAxMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBC
YWNrZW5kLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFn
ZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuaApAQCAtNDMsMTQgKzQzLDE2IEBAIGNsYXNz
IEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZCA6IHB1YmxpYyBXZWJDb3JlOjpQbGF0
Zm9ybUltYWdlQnVmZmVyQmFjCiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChJbWFnZUJ1ZmZl
clNoYXJlYWJsZUJpdG1hcEJhY2tlbmQpOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEltYWdl
QnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZCk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHN0ZDo6
dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ+IGNyZWF0ZShjb25z
dCBXZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBmbG9hdCByZXNvbHV0aW9u
U2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UsIFdlYkNvcmU6OlBpeGVsRm9ybWF0LCBjb25zdCBX
ZWJDb3JlOjpIb3N0V2luZG93Kik7Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1
ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpGbG9hdFNp
emUmIGxvZ2ljYWxTaXplLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBpbnRlcm5hbFNpemUsIGZs
b2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSwgV2ViQ29yZTo6UGl4ZWxG
b3JtYXQsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSk7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVl
X3B0cjxJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ+IGNyZWF0ZShjb25zdCBQYXJh
bWV0ZXJzJiwgY29uc3QgV2ViQ29yZTo6SG9zdFdpbmRvdyopOworICAgIHN0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kPiBjcmVhdGUoY29uc3Qg
UGFyYW1ldGVycyYsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSk7CiAKLSAgICBJbWFnZUJ1ZmZl
clNoYXJlYWJsZUJpdG1hcEJhY2tlbmQoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBsb2dpY2Fs
U2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgcGh5c2ljYWxTaXplLCBmbG9hdCByZXNvbHV0
aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UsIFdlYkNvcmU6OlBpeGVsRm9ybWF0LCBSZWZQ
dHI8U2hhcmVhYmxlQml0bWFwPiYmLCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0PiYmKTsKKyAgICBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQoY29uc3Qg
UGFyYW1ldGVycyYsIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+JiYsIHN0ZDo6dW5pcXVlX3B0cjxX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ+JiYpOwogCiAgICAgSW1hZ2VCdWZmZXJCYWNrZW5kSGFu
ZGxlIGNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSgpIGNvbnN0OwogCiAgICAgV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gKm1f
Y29udGV4dDsgfQorICAgIAorICAgIFdlYkNvcmU6OkludFNpemUgYmFja2VuZFNpemUoKSBjb25z
dCBvdmVycmlkZTsKIAogICAgIFJlZlB0cjxXZWJDb3JlOjpOYXRpdmVJbWFnZT4gY29weU5hdGl2
ZUltYWdlKFdlYkNvcmU6OkJhY2tpbmdTdG9yZUNvcHkgPSBXZWJDb3JlOjpDb3B5QmFja2luZ1N0
b3JlKSBjb25zdCBvdmVycmlkZTsKICAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2U+IGNvcHlJbWFn
ZShXZWJDb3JlOjpCYWNraW5nU3RvcmVDb3B5ID0gV2ViQ29yZTo6Q29weUJhY2tpbmdTdG9yZSwg
V2ViQ29yZTo6UHJlc2VydmVSZXNvbHV0aW9uID0gV2ViQ29yZTo6UHJlc2VydmVSZXNvbHV0aW9u
OjpObykgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1BsYXRmb3JtUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9QbGF0Zm9ybVJlbW90ZUltYWdlQnVmZmVy
UHJveHkuaAppbmRleCAwNTE3Njc4M2Q1NTMxYmZlNzBmODUwYmYyYzE0OWY3ODgyMmQwZTM5Li45
YWZmMDg4ZTM3Y2E3NmE3Zjg2NGFlN2U0MmJiYjcwMDRmMWYxNTIzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1BsYXRmb3JtUmVtb3RlSW1hZ2VCdWZm
ZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUGxh
dGZvcm1SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgKQEAgLTM3LDE0ICszNyw0IEBAIHVzaW5nIEFj
Y2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXJQcm94eSA9IFJlbW90ZUltYWdlQnVmZmVyUHJveHk8
QWNjZWxlcmF0ZWRJbWFnCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCi1TUEVDSUFMSVpFX1RZ
UEVfVFJBSVRTX0JFR0lOKFdlYktpdDo6VW5hY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyUHJv
eHkpCi0gICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OkltYWdlQnVmZmVyJiBp
bWFnZUJ1ZmZlcikgeyByZXR1cm4gaW1hZ2VCdWZmZXIucmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyKCkgJiYgIWltYWdlQnVmZmVyLmlzQWNjZWxlcmF0ZWQoKTsgfQotU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19FTkQoKQotCi0jaWYgSEFWRShJT1NVUkZBQ0UpCi1TUEVDSUFMSVpFX1RZUEVfVFJB
SVRTX0JFR0lOKFdlYktpdDo6QWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlclByb3h5KQotICAg
IHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpJbWFnZUJ1ZmZlciYgaW1hZ2VCdWZm
ZXIpIHsgcmV0dXJuIGltYWdlQnVmZmVyLnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpICYm
IGltYWdlQnVmZmVyLmlzQWNjZWxlcmF0ZWQoKTsgfQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19F
TkQoKQotI2VuZGlmCi0KICNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVy
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1h
Z2VCdWZmZXJQcm94eS5oCmluZGV4IDUxYmQ1NzEyOTU4YWYxMmEyMzE1ZDQxYmEzZDJkNmI5ZWQ1
N2YyYmEuLmFhZWYwMTAxMTIwNTNmMTExZTI3YzBkNzM0YjQxNzc1ZDg1ZmFiM2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZm
ZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlSW1hZ2VCdWZmZXJQcm94eS5oCkBAIC01MCwxNCArNTAsMTYgQEAgY2xhc3MgUmVtb3RlSW1h
Z2VCdWZmZXJQcm94eSA6IHB1YmxpYyBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SW1hZ2VCdWZmZXI8
QmFja2VuZFQKICAgICB1c2luZyBCYXNlRGlzcGxheUxpc3RJbWFnZUJ1ZmZlcjo6bV9iYWNrZW5k
OwogICAgIHVzaW5nIEJhc2VEaXNwbGF5TGlzdEltYWdlQnVmZmVyOjptX2RyYXdpbmdDb250ZXh0
OwogICAgIHVzaW5nIEJhc2VEaXNwbGF5TGlzdEltYWdlQnVmZmVyOjptX3JlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcjsKKyAgICB1c2luZyBCYXNlRGlzcGxheUxpc3RJbWFnZUJ1ZmZlcjo6cmVz
b2x1dGlvblNjYWxlOwogCiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxSZW1vdGVJbWFnZUJ1
ZmZlclByb3h5PiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBzaXplLCBXZWJDb3Jl
OjpSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2Vi
Q29yZTo6Q29sb3JTcGFjZSBjb2xvclNwYWNlLCBXZWJDb3JlOjpQaXhlbEZvcm1hdCBwaXhlbEZv
cm1hdCwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5JiByZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHkpCisgICAgc3RhdGljIFJlZlB0cjxSZW1vdGVJbWFnZUJ1ZmZlclByb3h5PiBjcmVhdGUo
Y29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdl
YkNvcmU6OkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgV2ViQ29yZTo6UGl4ZWxGb3JtYXQgcGl4ZWxG
b3JtYXQsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSYgcmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5KQogICAgIHsKICAgICAgICAgaWYgKEJhY2tlbmRUeXBlOjpjYWxjdWxhdGVCYWNrZW5k
U2l6ZShzaXplLCByZXNvbHV0aW9uU2NhbGUpLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVy
biBudWxscHRyOwogCi0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgUmVtb3RlSW1hZ2VCdWZm
ZXJQcm94eShzaXplLCByZW5kZXJpbmdNb2RlLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2Us
IHBpeGVsRm9ybWF0LCByZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpKTsKKyAgICAgICAgYXV0
byBwYXJhbWV0ZXJzID0gV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjpQYXJhbWV0ZXJzIHsg
c2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCB9OworICAgICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IFJlbW90ZUltYWdlQnVmZmVyUHJveHkocGFyYW1ldGVycywg
cmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KSk7CiAgICAgfQogCiAgICAgflJlbW90ZUltYWdl
QnVmZmVyUHJveHkoKQpAQCAtNjksMjcgKzcxLDYgQEAgcHVibGljOgogICAgICAgICBtX3JlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+cmVsZWFzZVJlbW90ZVJlc291cmNlKG1fcmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB9CiAKLSAgICB2b2lkIGNsZWFyQmFja2VuZCgpIHsg
bV9iYWNrZW5kID0gbnVsbHB0cjsgfQotCi0gICAgdm9pZCBjcmVhdGVCYWNrZW5kKGNvbnN0IFdl
YkNvcmU6OkZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGJh
Y2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UgY29s
b3JTcGFjZSwgV2ViQ29yZTo6UGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIEltYWdlQnVmZmVyQmFj
a2VuZEhhbmRsZSBoYW5kbGUpCi0gICAgewotICAgICAgICBBU1NFUlQoIW1fYmFja2VuZCk7Ci0g
ICAgICAgIG1fYmFja2VuZCA9IEJhY2tlbmRUeXBlOjpjcmVhdGUobG9naWNhbFNpemUsIGJhY2tl
bmRTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0LCBXVEZNb3Zl
KGhhbmRsZSkpOwotICAgIH0KLQotICAgIHZvaWQgZGlkRmx1c2goV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OkZsdXNoSWRlbnRpZmllciBmbHVzaElkZW50aWZpZXIpCi0gICAgewotICAgICAgICBhdXRv
IGxvY2tlciA9IGhvbGRMb2NrKG1fcmVjZWl2ZWRGbHVzaElkZW50aWZpZXJMb2NrKTsKLSAgICAg
ICAgbV9yZWNlaXZlZEZsdXNoSWRlbnRpZmllciA9IGZsdXNoSWRlbnRpZmllcjsKLSAgICAgICAg
bV9yZWNlaXZlZEZsdXNoSWRlbnRpZmllckNoYW5nZWRDb25kaXRpb24ubm90aWZ5QWxsKCk7Ci0g
ICAgfQotCi0gICAgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBzaXplKCkgY29uc3QgeyByZXR1
cm4gbV9zaXplOyB9Ci0gICAgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlKCkg
Y29uc3QgeyByZXR1cm4gbV9yZW5kZXJpbmdNb2RlOyB9Ci0gICAgZmxvYXQgcmVzb2x1dGlvblNj
YWxlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9yZXNvbHV0aW9uU2NhbGU7IH0KLSAgICBXZWJD
b3JlOjpDb2xvclNwYWNlIGNvbG9yU3BhY2UoKSBjb25zdCB7IHJldHVybiBtX2NvbG9yU3BhY2U7
IH0KLSAgICBXZWJDb3JlOjpQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCgpIGNvbnN0IHsgcmV0dXJu
IG1fcGl4ZWxGb3JtYXQ7IH0KLQogICAgIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBjcmVhdGVJ
bWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUoKQogICAgIHsKICAgICAgICAgZW5zdXJlQmFja2VuZENy
ZWF0ZWQoKTsKQEAgLTExMiwxNSArOTMsOSBAQCBwdWJsaWM6CiAgICAgfQogCiBwcm90ZWN0ZWQ6
Ci0gICAgZnJpZW5kIGNsYXNzIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ7Ci0gICAgUmVtb3RlSW1h
Z2VCdWZmZXJQcm94eShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHNpemUsIFdlYkNvcmU6OlJl
bmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3Jl
OjpDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFdlYkNvcmU6OlBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0
LCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkmIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eSkKLSAgICAgICAgOiBCYXNlRGlzcGxheUxpc3RJbWFnZUJ1ZmZlcihzaXplLCB0aGlzKQorICAg
IFJlbW90ZUltYWdlQnVmZmVyUHJveHkoY29uc3QgV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5k
OjpQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkmIHJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKKyAgICAgICAgOiBCYXNlRGlzcGxheUxpc3RJbWFn
ZUJ1ZmZlcihwYXJhbWV0ZXJzLCB0aGlzKQogICAgICAgICAsIG1fcmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5KG1ha2VXZWFrUHRyKHJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkpCi0gICAg
ICAgICwgbV9zaXplKHNpemUpCi0gICAgICAgICwgbV9yZW5kZXJpbmdNb2RlKHJlbmRlcmluZ01v
ZGUpCi0gICAgICAgICwgbV9yZXNvbHV0aW9uU2NhbGUocmVzb2x1dGlvblNjYWxlKQotICAgICAg
ICAsIG1fY29sb3JTcGFjZShjb2xvclNwYWNlKQotICAgICAgICAsIG1fcGl4ZWxGb3JtYXQocGl4
ZWxGb3JtYXQpCiAgICAgewogICAgICAgICBBU1NFUlQobV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHkpOwogICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+cmVtb3RlUmVz
b3VyY2VDYWNoZVByb3h5KCkuY2FjaGVJbWFnZUJ1ZmZlcigqdGhpcyk7CkBAIC0xMzEsNiArMTA2
LDEzIEBAIHByb3RlY3RlZDoKIAogICAgIGJvb2wgaGFzUGVuZGluZ0ZsdXNoKCkgY29uc3QgeyBy
ZXR1cm4gbV9zZW50Rmx1c2hJZGVudGlmaWVyICE9IG1fcmVjZWl2ZWRGbHVzaElkZW50aWZpZXI7
IH0KIAorICAgIHZvaWQgZGlkRmx1c2goV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZsdXNoSWRlbnRp
ZmllciBmbHVzaElkZW50aWZpZXIpIG92ZXJyaWRlCisgICAgeworICAgICAgICBhdXRvIGxvY2tl
ciA9IGhvbGRMb2NrKG1fcmVjZWl2ZWRGbHVzaElkZW50aWZpZXJMb2NrKTsKKyAgICAgICAgbV9y
ZWNlaXZlZEZsdXNoSWRlbnRpZmllciA9IGZsdXNoSWRlbnRpZmllcjsKKyAgICAgICAgbV9yZWNl
aXZlZEZsdXNoSWRlbnRpZmllckNoYW5nZWRDb25kaXRpb24ubm90aWZ5QWxsKCk7CisgICAgfQor
CiAgICAgdm9pZCB3YWl0Rm9yRGlkRmx1c2hXaXRoVGltZW91dCgpCiAgICAgewogICAgICAgICBp
ZiAoIW1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KQpAQCAtMTQ1LDcgKzEyNyw3IEBAIHBy
b3RlY3RlZDoKICAgICBCYWNrZW5kVHlwZSogZW5zdXJlQmFja2VuZENyZWF0ZWQoKSBjb25zdCBv
dmVycmlkZQogICAgIHsKICAgICAgICAgaWYgKCFtX2JhY2tlbmQgJiYgbV9yZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHkpCi0gICAgICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eS0+d2FpdEZvckltYWdlQnVmZmVyQmFja2VuZFdhc0NyZWF0ZWQoKTsKKyAgICAgICAgICAgIG1f
cmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT53YWl0Rm9yRGlkQ3JlYXRlSW1hZ2VCdWZmZXJC
YWNrZW5kKCk7CiAgICAgICAgIHJldHVybiBtX2JhY2tlbmQuZ2V0KCk7CiAgICAgfQogCkBAIC0x
NjksOCArMTUxLDggQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgcHV0SW1hZ2VEYXRhKFdlYkNvcmU6
OkFscGhhUHJlbXVsdGlwbGljYXRpb24gaW5wdXRGb3JtYXQsIGNvbnN0IFdlYkNvcmU6OkltYWdl
RGF0YSYgaW1hZ2VEYXRhLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzcmNSZWN0LCBjb25zdCBX
ZWJDb3JlOjpJbnRQb2ludCYgZGVzdFBvaW50ID0geyB9LCBXZWJDb3JlOjpBbHBoYVByZW11bHRp
cGxpY2F0aW9uIGRlc3RGb3JtYXQgPSBXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpQ
cmVtdWx0aXBsaWVkKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgLy8gVGhlIG1hdGggaW5zaWRl
IEltYWdlRGF0YTo6Y3JlYXRlKCkgZG9lc24ndCBhZ3JlZSB3aXRoIHRoZSBtYXRoIGluc2lkZSBJ
bWFnZUJ1ZmZlckJhY2tlbmQ6OnB1dEltYWdlRGF0YSgpIGFib3V0IGhvdyBtX3Jlc29sdXRpb25T
Y2FsZSBpbnRlcmFjdHMgd2l0aCB0aGUgZGF0YSBpbiB0aGUgSW1hZ2VCdWZmZXIuCi0gICAgICAg
IC8vIFRoaXMgbWVhbnMgdGhhdCBwdXRJbWFnZURhdGEoKSBpcyBvbmx5IGNhbGxlZCB3aGVuIG1f
cmVzb2x1dGlvblNjYWxlID09IDEuCi0gICAgICAgIEFTU0VSVF9JTVBMSUVTKG1fYmFja2VuZCwg
bV9iYWNrZW5kLT5yZXNvbHV0aW9uU2NhbGUoKSA9PSAxKTsKKyAgICAgICAgLy8gVGhpcyBtZWFu
cyB0aGF0IHB1dEltYWdlRGF0YSgpIGlzIG9ubHkgY2FsbGVkIHdoZW4gcmVzb2x1dGlvblNjYWxl
KCkgPT0gMS4KKyAgICAgICAgQVNTRVJUKHJlc29sdXRpb25TY2FsZSgpID09IDEpOwogICAgICAg
ICBtX2RyYXdpbmdDb250ZXh0LnJlY29yZGVyKCkucHV0SW1hZ2VEYXRhKGlucHV0Rm9ybWF0LCBp
bWFnZURhdGEsIHNyY1JlY3QsIGRlc3RQb2ludCwgZGVzdEZvcm1hdCk7CiAgICAgfQogCkBAIC0x
ODUsMTEgKzE2NywxMSBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBmbHVzaERyYXdpbmdDb250ZXh0
KCkgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIFRyYWNlU2NvcGUgdHJhY2luZ1Njb3BlKEZsdXNo
UmVtb3RlSW1hZ2VCdWZmZXJTdGFydCwgRmx1c2hSZW1vdGVJbWFnZUJ1ZmZlckVuZCk7Ci0gICAg
ICAgIGZsdXNoRHJhd2luZ0NvbnRleHRBbmRDb21taXQoKTsKKyAgICAgICAgY29tbWl0RHJhd2lu
Z0NvbnRleHQoKTsKICAgICAgICAgd2FpdEZvckRpZEZsdXNoV2l0aFRpbWVvdXQoKTsKICAgICB9
CiAKLSAgICB2b2lkIGZsdXNoRHJhd2luZ0NvbnRleHRBbmRDb21taXQoKSBvdmVycmlkZQorICAg
IHZvaWQgY29tbWl0RHJhd2luZ0NvbnRleHQoKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgaWYg
KCFtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKICAgICAgICAgICAgIHJldHVybjsKQEAg
LTIwMCwxMiArMTgyLDEyIEBAIHByb3RlY3RlZDoKIAogICAgICAgICBtX3NlbnRGbHVzaElkZW50
aWZpZXIgPSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Rmx1c2hJZGVudGlmaWVyOjpnZW5lcmF0ZSgp
OwogICAgICAgICBkaXNwbGF5TGlzdC50ZW1wbGF0ZSBhcHBlbmQ8V2ViQ29yZTo6RGlzcGxheUxp
c3Q6OkZsdXNoQ29udGV4dD4obV9zZW50Rmx1c2hJZGVudGlmaWVyKTsKLSAgICAgICAgbV9yZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHktPnN1Ym1pdERpc3BsYXlMaXN0KGRpc3BsYXlMaXN0LCBt
X3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7Ci0gICAgICAgIG1faXRlbUNvdW50SW5DdXJy
ZW50RGlzcGxheUxpc3QgPSAwOworICAgICAgICBzdWJtaXREaXNwbGF5TGlzdChkaXNwbGF5TGlz
dCk7CiAgICAgICAgIGRpc3BsYXlMaXN0LmNsZWFyKCk7CisgICAgICAgIG1faXRlbUNvdW50SW5D
dXJyZW50RGlzcGxheUxpc3QgPSAwOwogICAgIH0KIAotICAgIHZvaWQgc3VibWl0RGlzcGxheUxp
c3QoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCkK
KyAgICB2b2lkIHN1Ym1pdERpc3BsYXlMaXN0KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpE
aXNwbGF5TGlzdCYgZGlzcGxheUxpc3QpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBpZiAoIW1f
cmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5IHx8IGRpc3BsYXlMaXN0LmlzRW1wdHkoKSkKICAg
ICAgICAgICAgIHJldHVybjsKQEAgLTM1MywxMSArMzM1LDYgQEAgcHJvdGVjdGVkOgogICAgIFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpGbHVzaElkZW50aWZpZXIgbV9yZWNlaXZlZEZsdXNoSWRlbnRp
ZmllcjsKICAgICBXZWFrUHRyPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eT4gbV9yZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHk7CiAgICAgc2l6ZV90IG1faXRlbUNvdW50SW5DdXJyZW50RGlz
cGxheUxpc3QgeyAwIH07Ci0gICAgV2ViQ29yZTo6RmxvYXRTaXplIG1fc2l6ZTsKLSAgICBXZWJD
b3JlOjpSZW5kZXJpbmdNb2RlIG1fcmVuZGVyaW5nTW9kZTsKLSAgICBmbG9hdCBtX3Jlc29sdXRp
b25TY2FsZTsKLSAgICBXZWJDb3JlOjpDb2xvclNwYWNlIG1fY29sb3JTcGFjZTsKLSAgICBXZWJD
b3JlOjpQaXhlbEZvcm1hdCBtX3BpeGVsRm9ybWF0OwogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUg
QmFja2VuZFR5cGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKaW5k
ZXggYzA3YjIzZmIyYjBlNThlMGUxZGZmNWExNGVlMGE4NWQ5YTViNjQ1ZC4uM2Q2ZmZjNDgwMTJm
MzJjOTc2ZjdmOTkyMTQ4MDA1MDM1YzAwNjhkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5LmNwcApAQCAtNzAsMjQgKzcwLDE1IEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5Ojpjb25uZWN0VG9HUFVQcm9jZXNzKCkKICAgICBzZW5kKE1lc3NhZ2VzOjpH
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDcmVhdGVSZW5kZXJpbmdCYWNrZW5kKG1fcmVuZGVy
aW5nQmFja2VuZElkZW50aWZpZXIpLCAwKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0
YXRpYyB2b2lkIHJlY3JlYXRlSW1hZ2VCdWZmZXIoUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
JiBwcm94eSwgVCYgaW1hZ2VCdWZmZXIsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZXNv
dXJjZUlkZW50aWZpZXIsIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIHJlbmRlcmluZ0JhY2tl
bmRJZGVudGlmaWVyKQotewotICAgIGltYWdlQnVmZmVyLmNsZWFyQmFja2VuZCgpOwotICAgIHBy
b3h5LnNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OkNyZWF0ZUltYWdlQnVm
ZmVyKGltYWdlQnVmZmVyLnNpemUoKSwgaW1hZ2VCdWZmZXIucmVuZGVyaW5nTW9kZSgpLCBpbWFn
ZUJ1ZmZlci5yZXNvbHV0aW9uU2NhbGUoKSwgaW1hZ2VCdWZmZXIuY29sb3JTcGFjZSgpLCBpbWFn
ZUJ1ZmZlci5waXhlbEZvcm1hdCgpLCByZXNvdXJjZUlkZW50aWZpZXIpLCByZW5kZXJpbmdCYWNr
ZW5kSWRlbnRpZmllcik7Ci19Ci0KIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Ojpy
ZWVzdGFibGlzaEdQVVByb2Nlc3NDb25uZWN0aW9uKCkKIHsKICAgICBjb25uZWN0VG9HUFVQcm9j
ZXNzKCk7CiAKLSAgICBmb3IgKGF1dG8mIHBhaXIgOiBtX3JlbW90ZVJlc291cmNlQ2FjaGVQcm94
eS5pbWFnZUJ1ZmZlcnMoKSkgewotICAgICAgICBpZiAoYXV0byYgYmFzZUltYWdlQnVmZmVyID0g
cGFpci52YWx1ZSkgewotICAgICAgICAgICAgaWYgKGlzPEFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VC
dWZmZXJQcm94eT4oKmJhc2VJbWFnZUJ1ZmZlcikpCi0gICAgICAgICAgICAgICAgcmVjcmVhdGVJ
bWFnZUJ1ZmZlcigqdGhpcywgZG93bmNhc3Q8QWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlclBy
b3h5PigqYmFzZUltYWdlQnVmZmVyKSwgcGFpci5rZXksIG1fcmVuZGVyaW5nQmFja2VuZElkZW50
aWZpZXIpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJlY3JlYXRlSW1hZ2VC
dWZmZXIoKnRoaXMsIGRvd25jYXN0PFVuYWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlclByb3h5
PigqYmFzZUltYWdlQnVmZmVyKSwgcGFpci5rZXksIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZp
ZXIpOwotICAgICAgICB9CisgICAgZm9yIChhdXRvJiBpbWFnZUJ1ZmZlciA6IG1fcmVtb3RlUmVz
b3VyY2VDYWNoZVByb3h5LmltYWdlQnVmZmVycygpLnZhbHVlcygpKSB7CisgICAgICAgIGlmICgh
aW1hZ2VCdWZmZXIpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Q3JlYXRlSW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIt
PmxvZ2ljYWxTaXplKCksIGltYWdlQnVmZmVyLT5yZW5kZXJpbmdNb2RlKCksIGltYWdlQnVmZmVy
LT5yZXNvbHV0aW9uU2NhbGUoKSwgaW1hZ2VCdWZmZXItPmNvbG9yU3BhY2UoKSwgaW1hZ2VCdWZm
ZXItPnBpeGVsRm9ybWF0KCksIGltYWdlQnVmZmVyLT5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIoKSksIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOworICAgICAgICBpbWFnZUJ1ZmZl
ci0+Y2xlYXJCYWNrZW5kKCk7CiAgICAgfQogfQogCkBAIC0xMTIsMTAgKzEwMywxMCBAQCB1aW50
NjRfdCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6Om1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlv
bklEKCkgY29uc3QKICAgICByZXR1cm4gbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllci50b1VJ
bnQ2NCgpOwogfQogCi1ib29sIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6d2FpdEZvcklt
YWdlQnVmZmVyQmFja2VuZFdhc0NyZWF0ZWQoKQorYm9vbCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHk6OndhaXRGb3JEaWRDcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQoKQogewogICAgIFJlZjxJ
UEM6OkNvbm5lY3Rpb24+IGNvbm5lY3Rpb24gPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1
cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKTsKLSAgICByZXR1cm4gY29ubmVj
dGlvbi0+d2FpdEZvckFuZERpc3BhdGNoSW1tZWRpYXRlbHk8TWVzc2FnZXM6OlJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eTo6SW1hZ2VCdWZmZXJCYWNrZW5kV2FzQ3JlYXRlZD4obV9yZW5kZXJp
bmdCYWNrZW5kSWRlbnRpZmllciwgMV9zLCBJUEM6OldhaXRGb3JPcHRpb246OkludGVycnVwdFdh
aXRpbmdJZlN5bmNNZXNzYWdlQXJyaXZlcyk7CisgICAgcmV0dXJuIGNvbm5lY3Rpb24tPndhaXRG
b3JBbmREaXNwYXRjaEltbWVkaWF0ZWx5PE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHk6OkRpZENyZWF0ZUltYWdlQnVmZmVyQmFja2VuZD4obV9yZW5kZXJpbmdCYWNrZW5kSWRl
bnRpZmllciwgMV9zLCBJUEM6OldhaXRGb3JPcHRpb246OkludGVycnVwdFdhaXRpbmdJZlN5bmNN
ZXNzYWdlQXJyaXZlcyk7CiB9CiAKIGJvb2wgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Ojp3
YWl0Rm9yRGlkRmx1c2goKQpAQCAtMTI5LDEwICsxMjAsMTAgQEAgUmVmUHRyPEltYWdlQnVmZmVy
PiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZs
b2F0U2kKICAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyOwogCiAgICAgaWYgKHJl
bmRlcmluZ01vZGUgPT0gUmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQpCi0gICAgICAgIGltYWdl
QnVmZmVyID0gQWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlclByb3h5OjpjcmVhdGUoc2l6ZSwg
cmVuZGVyaW5nTW9kZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCwg
KnRoaXMpOworICAgICAgICBpbWFnZUJ1ZmZlciA9IEFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZm
ZXJQcm94eTo6Y3JlYXRlKHNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxG
b3JtYXQsICp0aGlzKTsKIAogICAgIGlmICghaW1hZ2VCdWZmZXIpCi0gICAgICAgIGltYWdlQnVm
ZmVyID0gVW5hY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyUHJveHk6OmNyZWF0ZShzaXplLCBy
ZW5kZXJpbmdNb2RlLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0LCAq
dGhpcyk7CisgICAgICAgIGltYWdlQnVmZmVyID0gVW5hY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVm
ZmVyUHJveHk6OmNyZWF0ZShzaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVs
Rm9ybWF0LCAqdGhpcyk7CiAKICAgICBpZiAoaW1hZ2VCdWZmZXIpIHsKICAgICAgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Q3JlYXRlSW1hZ2VCdWZmZXIoc2l6ZSwg
cmVuZGVyaW5nTW9kZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCwg
aW1hZ2VCdWZmZXItPnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpKSwgbV9yZW5kZXJpbmdC
YWNrZW5kSWRlbnRpZmllcik7CkBAIC0xODMsMjggKzE3NCwyMiBAQCB2b2lkIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eTo6cmVsZWFzZVJlbW90ZVJlc291cmNlKFJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZgogICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OlJlbGVh
c2VSZW1vdGVSZXNvdXJjZShyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpLCBtX3JlbmRlcmlu
Z0JhY2tlbmRJZGVudGlmaWVyKTsKIH0KIAotdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHk6OmltYWdlQnVmZmVyQmFja2VuZFdhc0NyZWF0ZWQoY29uc3QgRmxvYXRTaXplJiBsb2dpY2Fs
U2l6ZSwgY29uc3QgSW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwg
Q29sb3JTcGFjZSBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgSW1hZ2VCdWZm
ZXJCYWNrZW5kSGFuZGxlIGhhbmRsZSwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcikKK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
OjpkaWRDcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQoSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGhh
bmRsZSwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllcikKIHsKICAgICBhdXRvIGltYWdlQnVmZmVyID0gbV9yZW1vdGVSZXNvdXJjZUNhY2hlUHJv
eHkuY2FjaGVkSW1hZ2VCdWZmZXIocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICBp
ZiAoIWltYWdlQnVmZmVyKQogICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgaWYgKGltYWdlQnVm
ZmVyLT5pc0FjY2VsZXJhdGVkKCkpCi0gICAgICAgIGRvd25jYXN0PEFjY2VsZXJhdGVkUmVtb3Rl
SW1hZ2VCdWZmZXJQcm94eT4oKmltYWdlQnVmZmVyKS5jcmVhdGVCYWNrZW5kKGxvZ2ljYWxTaXpl
LCBiYWNrZW5kU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCwg
V1RGTW92ZShoYW5kbGUpKTsKKworICAgIGlmIChpbWFnZUJ1ZmZlci0+cmVuZGVyaW5nTW9kZSgp
ID09IFJlbmRlcmluZ01vZGU6OkFjY2VsZXJhdGVkKQorICAgICAgICBpbWFnZUJ1ZmZlci0+c2V0
QmFja2VuZChBY2NlbGVyYXRlZEltYWdlQnVmZmVyU2hhcmVhYmxlQmFja2VuZDo6Y3JlYXRlKGlt
YWdlQnVmZmVyLT5wYXJhbWV0ZXJzKCksIFdURk1vdmUoaGFuZGxlKSkpOwogICAgIGVsc2UKLSAg
ICAgICAgZG93bmNhc3Q8VW5hY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyUHJveHk+KCppbWFn
ZUJ1ZmZlcikuY3JlYXRlQmFja2VuZChsb2dpY2FsU2l6ZSwgYmFja2VuZFNpemUsIHJlc29sdXRp
b25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQsIFdURk1vdmUoaGFuZGxlKSk7CisgICAg
ICAgIGltYWdlQnVmZmVyLT5zZXRCYWNrZW5kKFVuYWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlclNoYXJl
YWJsZUJhY2tlbmQ6OmNyZWF0ZShpbWFnZUJ1ZmZlci0+cGFyYW1ldGVycygpLCBXVEZNb3ZlKGhh
bmRsZSkpKTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmRpZEZsdXNo
KERpc3BsYXlMaXN0OjpGbHVzaElkZW50aWZpZXIgZmx1c2hJZGVudGlmaWVyLCBSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogewotICAgIGF1
dG8gaW1hZ2VCdWZmZXIgPSBtX3JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jYWNoZWRJbWFnZUJ1
ZmZlcihyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwotICAgIGlmICghaW1hZ2VCdWZmZXIp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChpbWFnZUJ1ZmZlci0+aXNBY2NlbGVyYXRlZCgp
KQotICAgICAgICBkb3duY2FzdDxBY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyUHJveHk+KCpp
bWFnZUJ1ZmZlcikuZGlkRmx1c2goZmx1c2hJZGVudGlmaWVyKTsKLSAgICBlbHNlCi0gICAgICAg
IGRvd25jYXN0PFVuYWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlclByb3h5PigqaW1hZ2VCdWZm
ZXIpLmRpZEZsdXNoKGZsdXNoSWRlbnRpZmllcik7CisgICAgaWYgKGF1dG8gaW1hZ2VCdWZmZXIg
PSBtX3JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jYWNoZWRJbWFnZUJ1ZmZlcihyZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIpKQorICAgICAgICBpbWFnZUJ1ZmZlci0+ZGlkRmx1c2goZmx1c2hJ
ZGVudGlmaWVyKTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OnVwZGF0
ZVJldXNhYmxlSGFuZGxlcygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaApp
bmRleCA5NWY4ZDJiNDEyZmI5MWRmNzdjNjhmMTM2YjAwNzg2ZjAyNGQ3ZTI2Li5mODA1ZmMxZWZm
OWNhNTE0NTM1OWNhMjkyYjUyZGRmZWVmOGRhODFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5LmgKQEAgLTgxLDcgKzgxLDcgQEAgcHVibGljOgogICAgIHZvaWQgY2FjaGVO
YXRpdmVJbWFnZShXZWJDb3JlOjpOYXRpdmVJbWFnZSYpOwogICAgIHZvaWQgcmVsZWFzZVJlbW90
ZVJlc291cmNlKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAKLSAgICBi
b29sIHdhaXRGb3JJbWFnZUJ1ZmZlckJhY2tlbmRXYXNDcmVhdGVkKCk7CisgICAgYm9vbCB3YWl0
Rm9yRGlkQ3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kKCk7CiAgICAgYm9vbCB3YWl0Rm9yRGlkRmx1
c2goKTsKIAogcHJpdmF0ZToKQEAgLTk1LDcgKzk1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVw
ZGF0ZVJldXNhYmxlSGFuZGxlcygpOwogCiAgICAgLy8gTWVzc2FnZXMgdG8gYmUgcmVjZWl2ZWQu
Ci0gICAgdm9pZCBpbWFnZUJ1ZmZlckJhY2tlbmRXYXNDcmVhdGVkKGNvbnN0IFdlYkNvcmU6OkZs
b2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGJhY2tlbmRTaXpl
LCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UsIFdlYkNvcmU6OlBp
eGVsRm9ybWF0LCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUsIFdlYkNvcmU6OlJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcik7CisgICAgdm9pZCBkaWRDcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQo
SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIpOwogICAgIHZvaWQgZGlkRmx1c2goV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZsdXNoSWRl
bnRpZmllciwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKIAogICAgIFJl
bW90ZVJlc291cmNlQ2FjaGVQcm94eSBtX3JlbW90ZVJlc291cmNlQ2FjaGVQcm94eSB7ICp0aGlz
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lm1lc3NhZ2Vz
LmluCmluZGV4IDkyMGRlM2Y3Nzc1NDAxNjQwNTFmZjUxY2QyMWI1MDU1OTg1NGY4NDQuLjNhNTMy
ZDVlNGZmNjE2YmRiMDdlZGU3YTlhODNlOTMxMzdlNzNiZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lm1lc3NhZ2VzLmluCkBAIC0yMyw3ICsyMyw3IEBA
CiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiBtZXNzYWdlcyAtPiBSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHkgTm90UmVmQ291bnRlZCB7Ci0gICAgSW1hZ2VCdWZmZXJCYWNrZW5kV2FzQ3Jl
YXRlZChXZWJDb3JlOjpGbG9hdFNpemUgbG9naWNhbFNpemUsIFdlYkNvcmU6OkludFNpemUgYmFj
a2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSBjb2xv
clNwYWNlLCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6UGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIFdl
YktpdDo6SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGhhbmRsZSwgV2ViQ29yZTo6UmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKKyAgICBEaWRD
cmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQoV2ViS2l0OjpJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUg
aGFuZGxlLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyKQogICAgIERpZEZsdXNoKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpGbHVz
aElkZW50aWZpZXIgZmx1c2hJZGVudGlmaWVyLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hh
cmVhYmxlSU9TdXJmYWNlQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZC5jcHAK
aW5kZXggNTE2MjdjNWVkZDg5MWI5NGYzNjM5MWMwYWI0YzI4MDhjNjgwYmVmZi4uZTQxMmU3ZjYz
ZjQwODdmMjE3NzI0NjgyZTkzNThmYjg1ODhmYzVjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3Vy
ZmFjZUJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kLmNwcApAQCAtMzcs
MTMgKzM3LDEzIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBXVEZfTUFLRV9JU09fQUxM
T0NBVEVEX0lNUEwoSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kKTsKIAotc3Rk
Ojp1bmlxdWVfcHRyPEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZD4gSW1hZ2VC
dWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGUoY29uc3QgRmxvYXRTaXplJiBz
aXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgUGl4ZWxG
b3JtYXQgcGl4ZWxGb3JtYXQsIGNvbnN0IEhvc3RXaW5kb3cqKQorc3RkOjp1bmlxdWVfcHRyPElt
YWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZD4gSW1hZ2VCdWZmZXJTaGFyZWFibGVJ
T1N1cmZhY2VCYWNrZW5kOjpjcmVhdGUoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycywgY29u
c3QgSG9zdFdpbmRvdyopCiB7Ci0gICAgSW50U2l6ZSBiYWNrZW5kU2l6ZSA9IGNhbGN1bGF0ZUJh
Y2tlbmRTaXplKHNpemUsIHJlc29sdXRpb25TY2FsZSk7CisgICAgSW50U2l6ZSBiYWNrZW5kU2l6
ZSA9IGNhbGN1bGF0ZUJhY2tlbmRTaXplKHBhcmFtZXRlcnMubG9naWNhbFNpemUsIHBhcmFtZXRl
cnMucmVzb2x1dGlvblNjYWxlKTsKICAgICBpZiAoYmFja2VuZFNpemUuaXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGF1dG8gc3VyZmFjZSA9IElPU3VyZmFjZTo6Y3Jl
YXRlKGJhY2tlbmRTaXplLCBiYWNrZW5kU2l6ZSwgY2FjaGVkQ0dDb2xvclNwYWNlKGNvbG9yU3Bh
Y2UpLCBJT1N1cmZhY2U6OmZvcm1hdEZvclBpeGVsRm9ybWF0KHBpeGVsRm9ybWF0KSk7CisgICAg
YXV0byBzdXJmYWNlID0gSU9TdXJmYWNlOjpjcmVhdGUoYmFja2VuZFNpemUsIGJhY2tlbmRTaXpl
LCBjYWNoZWRDR0NvbG9yU3BhY2UocGFyYW1ldGVycy5jb2xvclNwYWNlKSwgSU9TdXJmYWNlOjpm
b3JtYXRGb3JQaXhlbEZvcm1hdChwYXJhbWV0ZXJzLnBpeGVsRm9ybWF0KSk7CiAgICAgaWYgKCFz
dXJmYWNlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtNTMsMjEgKzUzLDIxIEBAIHN0
ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQ+IEltYWdl
QnVmZmVyU2hhcmVhYmxlSU9TdXJmCiAKICAgICBDR0NvbnRleHRDbGVhclJlY3QoY2dDb250ZXh0
LmdldCgpLCBGbG9hdFJlY3QoRmxvYXRQb2ludDo6emVybygpLCBiYWNrZW5kU2l6ZSkpOwogCi0g
ICAgcmV0dXJuIG1ha2VVbmlxdWU8SW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5k
PihzaXplLCBiYWNrZW5kU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZv
cm1hdCwgV1RGTW92ZShzdXJmYWNlKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8SW1hZ2VCdWZm
ZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kPihwYXJhbWV0ZXJzLCBXVEZNb3ZlKHN1cmZhY2Up
KTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFj
a2VuZD4gSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGUoY29uc3Qg
RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50U2l6ZSYgaW50ZXJuYWxTaXplLCBmbG9h
dCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4
ZWxGb3JtYXQsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBoYW5kbGUpCitzdGQ6OnVuaXF1ZV9w
dHI8SW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kPiBJbWFnZUJ1ZmZlclNoYXJl
YWJsZUlPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJz
LCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgaGFuZGxlKQogewogICAgIGlmICghV1RGOjpob2xk
c19hbHRlcm5hdGl2ZTxNYWNoU2VuZFJpZ2h0PihoYW5kbGUpKSB7CiAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBhdXRv
IHN1cmZhY2UgPSBJT1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQoV1RGTW92ZShXVEY6Omdl
dDxNYWNoU2VuZFJpZ2h0PihoYW5kbGUpKSwgY2FjaGVkQ0dDb2xvclNwYWNlKGNvbG9yU3BhY2Up
KTsKKyAgICBhdXRvIHN1cmZhY2UgPSBJT1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQoV1RG
TW92ZShXVEY6OmdldDxNYWNoU2VuZFJpZ2h0PihoYW5kbGUpKSwgY2FjaGVkQ0dDb2xvclNwYWNl
KHBhcmFtZXRlcnMuY29sb3JTcGFjZSkpOwogICAgIGlmICghc3VyZmFjZSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gbWFrZVVuaXF1ZTxJbWFnZUJ1ZmZlclNoYXJlYWJs
ZUlPU3VyZmFjZUJhY2tlbmQ+KGxvZ2ljYWxTaXplLCBpbnRlcm5hbFNpemUsIHJlc29sdXRpb25T
Y2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQsIFdURk1vdmUoc3VyZmFjZSkpOworICAgIHJl
dHVybiBtYWtlVW5pcXVlPEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZD4ocGFy
YW1ldGVycywgV1RGTW92ZShzdXJmYWNlKSk7CiB9CiAKIEltYWdlQnVmZmVyQmFja2VuZEhhbmRs
ZSBJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZUltYWdlQnVmZmVy
QmFja2VuZEhhbmRsZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2Vu
ZC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1
ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQuaAppbmRleCBlZDUxNjI0ZWIwYWExMDUwZTEz
YmZhMTdlYTM0ZjBmZTNjMWZmZjZkLi4zMTg5MjE1ZjMzYWNhYjc5MDFmYWNiNTA1ZjJhNWMxMzk5
YTBkZTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFi
bGVJT1N1cmZhY2VCYWNrZW5kLmgKQEAgLTM5LDggKzM5LDggQEAgY2xhc3MgSW1hZ2VCdWZmZXJT
aGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kIDogcHVibGljIFdlYkNvcmU6OkltYWdlQnVmZmVySU9T
dXJmYWMKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEltYWdlQnVmZmVyU2hhcmVhYmxlSU9T
dXJmYWNlQmFja2VuZCk7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW1hZ2VCdWZmZXJTaGFy
ZWFibGVJT1N1cmZhY2VCYWNrZW5kKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVf
cHRyPEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZD4gY3JlYXRlKGNvbnN0IFdl
YkNvcmU6OkZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IGZsb2F0IHJlc29sdXRpb25TY2Fs
ZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSwgV2ViQ29yZTo6UGl4ZWxGb3JtYXQsIGNvbnN0IFdlYkNv
cmU6Okhvc3RXaW5kb3cqKTsKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVy
U2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZD4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6
ZSYgbG9naWNhbFNpemUsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGludGVybmFsU2l6ZSwgZmxv
YXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlLCBXZWJDb3JlOjpQaXhlbEZv
cm1hdCwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVf
cHRyPEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZD4gY3JlYXRlKGNvbnN0IFBh
cmFtZXRlcnMmLCBjb25zdCBXZWJDb3JlOjpIb3N0V2luZG93Kik7CisgICAgc3RhdGljIHN0ZDo6
dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQ+IGNyZWF0ZShj
b25zdCBQYXJhbWV0ZXJzJiwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKTsKIAogICAgIHVzaW5n
IFdlYkNvcmU6OkltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6SW1hZ2VCdWZmZXJJT1N1cmZh
Y2VCYWNrZW5kOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415046</attachid>
            <date>2020-11-30 12:49:24 -0800</date>
            <delta_ts>2020-11-30 13:30:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219007-20201130124924.patch</filename>
            <type>text/plain</type>
            <size>104919</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwMjU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjRjMGNmMWFiYWIzMjRh
NDI5MGM5NTNmMWU0ODE4ODQwMzBhOTRhNS4uMTNkZTdmZjdiYmQyOWRhOTFlYzlhMzUwNDVkYTNi
OGE3ZWJjOTI4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzOCBAQAorMjAyMC0xMS0zMCAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3Nd
IENsZWFuIHVwIHJlY3JlYXRpbmcgdGhlIEltYWdlQnVmZmVyQmFja2VuZCBiZWNhdXNlIG9mIEdQ
VSBjcmFzaGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjE5MDA3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVG8gYWxsb3cgYW5zd2VyaW5nIHF1ZXN0aW9ucyBhYm91dCB0aGUgYmFja2VuZCBjcmVhdGlv
biBwYXJhbWV0ZXJzIHdpdGhvdXQKKyAgICAgICAgaGF2aW5nIHRoZSBiYWNrZW5kIGNyZWF0ZWQs
IHRoZSBuZXcgc3RydWN0dXJlIEltYWdlQnVmZmVyQmFja2VuZDo6UGFyYW1ldGVycworICAgICAg
ICBpcyBpbnRyb2R1Y2VkLgorCisgICAgICAgIFRoaXMgc3RydWN0dXJlIGNvbnRhaW5zIHRoZSBw
YXJhbWV0ZXJzIHdoaWNoIHdlcmUgcGFzc2VkIGJ5IHRoZSBjYWxsZXIgaW4KKyAgICAgICAgdGhl
IFdlYlByb2Nlc3MgYW5kIHdoaWNoIGFyZSBzdWZmaWNpZW50IHRvIHJlY3JlYXRlIFJlbW90ZUlt
YWdlQnVmZmVyIGlmCisgICAgICAgIHRoZSBHUFUgUHJvY2VzcyBjcmFzaGVzIGV2ZW4gYmVmb3Jl
IHRoZSBiYWNrZW5kIG9mIFJlbW90ZUltYWdlQnVmZmVyUHJveHkKKyAgICAgICAgaXMgY3JlYXRl
ZC4KKworICAgICAgICBDb25jcmV0ZUltYWdlQnVmZmVyIGFuZCBJbWFnZUJ1ZmZlckJhY2tlbmQg
d2lsbCBob2xkIGFuIGluc3RhbmNlIG9mIHRoZQorICAgICAgICBuZXcgc3RydWN0dXJlIEltYWdl
QnVmZmVyQmFja2VuZDo6UGFyYW1ldGVycy4KKworICAgICAgICBJbiB0aGlzIHBhdGNoIGFsc28s
IHRoZSBuYW1lcyBmb3IgcmVwbGF5aW5nIGJhY2sgdGhlIERpc3BsYXlMaXN0IGludG8gYW4KKyAg
ICAgICAgSW1hZ2VCdWZmZXJCYWNrZW5kIHdpbGwgdG8gYmUgY29uc2lzdGVudCBhbmQgbW9yZSBj
bGVhci4gV2Ugd2lsbCBhZG9wdCB0aGUKKyAgICAgICAgZm9sbG93aW5nIG5hbWluZyBzY2hlbWU6
CisKKyAgICAgICAgLS0gc3VibWl0RGlzcGxheUxpc3QoKTogUmVwbGF5cyBiYWNrIGEgRGlzcGxh
eUxpc3QuIElmIHRoZSByZXBsYXkgYmFjaworICAgICAgICAgICBoYXBwZW5zIGluIEdQVVAsIG5v
IG1lc3NhZ2UgY29uZmlybWluZyB0aGUgcmVwbGF5IGJhY2sgd2lsbCBiZSBzZW50CisgICAgICAg
ICAgIHRvIFdlYlAuCisKKyAgICAgICAgLS0gY29tbWl0RHJhd2luZ0NvbnRleHQoKTogUmVwbGF5
cyBiYWNrIHRoZSBEaXNwbGF5TGlzdCBvZiBEcmF3aW5nQ29udGV4dC4KKyAgICAgICAgICAgSWYg
dGhlIHJlcGxheSBiYWNrIGhhcHBlbnMgaW4gR1BVUCwgYSBtZXNzYWdlIGNvbmZpcm1pbmcgdGhl
IHJlcGxheQorICAgICAgICAgICBiYWNrIHdpbGwgYmUgc2VudCB0byBXZWJQLiBXZWJQIHdpbGwg
bm90IGJlIGJsb2NrZWQgdGlsbCB0aGlzIG1lc3NhZ2UKKyAgICAgICAgICAgaXMgc2VudC4KKwor
ICAgICAgICAtLSBmbHVzaERyYXdpbmdDb250ZXh0KCk6IFRoaXMgd2lsbCBjYWxscyBjb21taXRE
cmF3aW5nQ29udGV4dCgpIGFuZCB3YWl0cworICAgICAgICAgICBmb3IgdGhlIGNvbmZpcm1pbmcg
bWVzc2FnZSB0byBiZSBzZW50LgorCisgICAgICAgIEFsc28gcmVwbGFjZSBhbGwgdGhlIGluc3Rh
bmNlcyBvZiAnaXNBY2NlbGVyYXRlZCcgYnkgJ3JlbmRlcmluZ01vZGUnLiBTbworICAgICAgICBu
byBuZWVkIHRvIGNvbnZlcnQgb25lIHR5cGUgdG8gdGhlIG90aGVyLgorCisgICAgICAgICogSGVh
ZGVycy5jbWFrZToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpwcmVwYXJl
Rm9yRGlzcGxheSk6CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdl
QnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpDb25jcmV0ZUltYWdlQnVmZmVyOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6Q29uY3JldGVJbWFnZUJ1ZmZlcjo6Q29uY3JldGVJbWFnZUJ1
ZmZlcik6CisgICAgICAgIC0tIE1ha2UgQ29uY3JldGVJbWFnZUJ1ZmZlciBvd24gYW4gaW5zdGFu
Y2Ugb2YgSW1hZ2VCdWZmZXJCYWNrZW5kOjpQYXJhbWV0ZXJzLgorICAgICAgICAtLSBBZGQgbWV0
aG9kcyB0byBzZXQgYW5kIGNsZWFyIHRoZSBiYWNrZW5kIG9mIGFuIEltYWdlQnVmZmVyLgorCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlQnVmZmVyOjpjb21taXREcmF3aW5nQ29udGV4dCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZUJ1ZmZlcjo6c3VibWl0RGlzcGxheUxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VCdWZmZXI6OmRpZEZsdXNoKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpmbHVz
aERyYXdpbmdDb250ZXh0QW5kQ29tbWl0KTogRGVsZXRlZC4KKyAgICAgICAgLS0gRXhwb3NlIHRo
ZSBJbWFnZUJ1ZmZlckJhY2tlbmQgY3JlYXRpb24gcGFyYW1ldGVycyB0aHJvdWdoIG1ldGhvZHMu
CisgICAgICAgIC0tIEFkb3B0IHRoZSBuZXcgbmFtaW5nIHNjaGVtZSBmb3IgdGhlIHJlcGxheSBi
YWNrIG1ldGhvZHMuCisgICAgICAgIC0tIEV4cG9zZSBjb21taXREcmF3aW5nQ29udGV4dCgpIGFu
ZCBkaWRGbHVzaCgpIHNvIG5vIGNhc3RpbmcgaXMgbmVlZGVkCisgICAgICAgICAgIHdoZW4gY2Fs
bGluZyB0aGVzZSBmdW5jdGlvbnMgdGhyb3VnaCBSZW1vdGVJbWFnZUJ1ZmVyUHJveHkuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjpJbWFnZUJ1ZmZlckJhY2tlbmQpOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjp0b0JHUkFEYXRhIGNvbnN0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlQnVmZmVyQmFja2VuZDo6bWVtb3J5Q29zdCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OmJ5dGVzUGVyUm93IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQmFja2VuZDo6dG9CYWNrZW5kQ29vcmRpbmF0ZXMgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjpsb2dpY2FsU2l6ZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OnJlc29sdXRpb25T
Y2FsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OmNvbG9y
U3BhY2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjpwaXhl
bEZvcm1hdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6Omxv
Z2ljYWxSZWN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQmFja2VuZDo6
YmFja2VuZFJlY3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5k
OjpiYWNrZW5kU2l6ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1
ZmZlckJhY2tlbmQ6OmJhc2VUcmFuc2Zvcm0gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAtLSBB
ZGQgdGhlIHN0cnVjdHVyZSBJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnMuIAorICAgICAg
ICAtLSBNYWtlIEltYWdlQnVmZmVyQmFja2VuZCBvd24gYW4gaW5zdGFuY2Ugb2YgdGhpcyBzdHJ1
Y3R1cmUuCisgICAgICAgIC0tIE1ha2UgYmFja2VuZFNpemUoKSBhIHB1cmUgdmlydHVhbCBtZXRo
b2QuCisgICAgICAgIC0tIERlbGV0ZSBiYXNlVHJhbnNmb3JtKCkgc2luY2UgaXQgaXMgaW1wbGVt
ZW50ZWQgaW4gQ29uY3JldGVJbWFnZUJ1ZmZlci4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL1BsYXRmb3JtSW1hZ2VCdWZmZXIuaDoKKyAgICAgICAgKGlzVHlwZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQ6OmRyYXdQYXR0ZXJuKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJm
YWNlQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VT
dXJmYWNlQmFja2VuZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ2Fp
cm9JbWFnZVN1cmZhY2VCYWNrZW5kOjpJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2Vu
ZCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2Vu
ZDo6cGxhdGZvcm1UcmFuc2Zvcm1Db2xvclNwYWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZC5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2Vu
ZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQ6
OkltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQ6OmJhY2tlbmRTaXplIGNvbnN0KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNHQmFja2VuZDo6c2V0dXBDb250ZXh0
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ0dCYWNrZW5kOjpjb3B5SW1h
Z2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OnNpbmtJ
bnRvSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OmRyYXcp
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OmRyYXdQYXR0ZXJuKToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ0dCYWNrZW5kOjp0b0NGRGF0YSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNHQmFja2VuZDo6YmFzZVRyYW5zZm9ybSBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZm
ZXJDR0JhY2tlbmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZl
ckNHQml0bWFwQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNHQml0
bWFwQmFja2VuZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ0dCaXRt
YXBCYWNrZW5kOjpJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y29weU5hdGl2ZUltYWdlIGNvbnN0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFj
a2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6
OkltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1
ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmJhY2tlbmRTaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6ZHJhd0NvbnN1bWluZyk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmg6Cisg
ICAgICAgIC0tIENoYW5nZSB0aGUgY3JlYXRlKCkgbWV0aG9kcyB0byB0YWtlIGEgIlBhcmFtZXRl
cnMiIGFyZ3VtZW50LgorICAgICAgICAtLSBVc2UgdGhlIGJhY2tlbmQgbWV0aG9kIHRvIGFjY2Vz
cyB0aGUgIlBhcmFtZXRlcnMiIHN0cnVjdHVyZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEZsdXNoSWRlbnRpZmllci5oOiBBZGRlZC4KKyAg
ICAgICAgTW92ZSBEaXNwbGF5TGlzdEZsdXNoSWRlbnRpZmllciB0byBhIHNlcGFyYXRlIGZpbGUg
c28gaXQgY2FuIGJlIGluY2x1ZGVkCisgICAgICAgIGluIEltYWdlQnVmZmVyLmggd2l0aG91dCBo
YXZpbmcgdG8gaW5jbHVkZSBEaXNwbGF5TGlzdC5oLgorCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXIuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpJbWFnZUJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpJbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OkltYWdlQnVmZmVyOjppbml0aWFsRHJhd2luZ0NvbnRleHRDVE0p
OiBEZWxldGVkLgorICAgICAgICAtLSBObyBuZWVkIHRvIHBhc3MgdGhlICdzaXplJyBhcmd1bWVu
dCB0d2ljZSBpbiB0aGUgJ2NyZWF0ZScgbWV0aG9kcy4gVGhlCisgICAgICAgICAgIHN0cnVjdHVy
ZSBQYXJhbWV0ZXJzIGhhcyB0byBiZSBwYXNzZWQgdG8gdGhlIGNvbnN0cnVjdG9yIGFueXdheS4K
KyAgICAgICAgLS0gTm8gbmVlZCBmb3IgaW5pdGlhbERyYXdpbmdDb250ZXh0Q1RNKCkgc2luY2Ug
aXQgaXMgZXF1aXZhbGVudCB0byAKKyAgICAgICAgICAgYmFzZVRyYW5zZm9ybSgpLgorCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpjb3B5SW1h
Z2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6
OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OmRy
YXdQYXR0ZXJuKToKKyAgICAgICAgLS0gVXNlIHRoZSBiYWNrZW5kIG1ldGhvZCB0byBhY2Nlc3Mg
dGhlICJQYXJhbWV0ZXJzIiBzdHJ1Y3R1cmUuCisKIDIwMjAtMTEtMzAgIEphbWVzIERhcnBpbmlh
biAgPGpkYXJwaW5pYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFN1cHBvcnQgS0hSX3BhcmFs
bGVsX3NoYWRlcl9jb21waWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGFkNzhjMDA1ODVjMmIxZjg4NzJmYWM5NWY1
OWNjYWVjNDk2NGQ3MjMuLjgxZjdjODU2YmZkNzIzNjRiODNiMTZlNDgxYThlNThhMTA5NGUxNGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsOTkgQEAKKzIwMjAtMTEtMzAgIFNhaWQgQWJvdS1IYWxsYXdh
ICA8c2FpZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9jZXNzXSBDbGVhbiB1cCByZWNy
ZWF0aW5nIHRoZSBJbWFnZUJ1ZmZlckJhY2tlbmQgYmVjYXVzZSBvZiBHUFUgY3Jhc2hpbmcKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTAwNworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZXJlIGlzIG5v
IG5lZWQgdG8gc3RvcmUgdGhlIGJhY2tlbmQgcGFyYW1ldGVycyBpbiBSZW1vdGVJbWFnZUJ1ZmZl
clByb3h5LgorICAgICAgICBUaGVzZSBwYXJhbWV0ZXJzIGFyZSBub3cgc3RvcmVkIGluIHRoZSBi
YXNlIGNsYXNzIEltYWdlQnVmZmVyIGJlZm9yZSB0aGUKKyAgICAgICAgYmFja2VuZCBpcyBjcmVh
dGVkLgorCisgICAgICAgIFJlbW92ZSB0aGUgdHJhaXRzIGRlZmluaXRpb24gZm9yIFJlbW90ZUlt
YWdlQnVmZmVyUHJveHkgdHlwZXMgYmVjYXVzZQorICAgICAgICB0aGV5IGFyZSB3cm9uZy4gQWxs
IEltYWdlQnVmZmVycyBoYXZlIHZhbGlkIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpCisg
ICAgICAgIHJlZ2FyZGxlc3Mgd2hldGhlciB0aGV5IGFyZSByZW1vdGUgb3Igbm90LiBJbWFnZUJ1
ZmZlcjo6c2V0QmFja2VuZCBhbmQKKyAgICAgICAgSW1hZ2VCdWZmZXI6OmNvbW1pdEZsdXNoRGlz
cGxheUxpc3QoKSBhcmUgbm93IGltcGxlbWVudGVkIGluIFdlYkNvcmUuIFNvCisgICAgICAgIG5v
IGNhc3RpbmcgaXMgbmVlZGVkLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVJbWFnZUJ1ZmZlci5oOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlcjo6UmVt
b3RlSW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlcjo6c3Vi
bWl0RGlzcGxheUxpc3QpOiBEZWxldGVkLgorICAgICAgICBzdWJtaXREaXNwbGF5TGlzdCgpIGlz
IG5vdyBhIHZpcnR1YWwgbWV0aG9kIG9mIEltYWdlQnVmZmVyLiBTbyBtYWtlIGl0CisgICAgICAg
IHByaXZhdGUgYW5kIGlnbm9yZSB0aGUgcmV0dXJuIG9mIERpc3BsYXlMaXN0OjpSZXBsYXllcjo6
cmVwbGF5KCkgc2luY2UgCisgICAgICAgIHRoZSBjYWxsZXIgZG9lcyBub3QgdXNlIGl0LgorCisg
ICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6ZGlkQ3JlYXRlSW1hZ2VC
dWZmZXJCYWNrZW5kKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6
YXBwbHlEaXNwbGF5TGlzdHNGcm9tSGFuZGxlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVu
ZGVyaW5nQmFja2VuZDo6aW1hZ2VCdWZmZXJCYWNrZW5kV2FzQ3JlYXRlZCk6IERlbGV0ZWQuCisg
ICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmg6Cisg
ICAgICAgIFJlbmFtZSAnaW1hZ2VCdWZmZXJCYWNrZW5kV2FzQ3JlYXRlZCgpJyB0byAnZGlkQ3Jl
YXRlSW1hZ2VCdWZmZXJCYWNrZW5kKCknCisgICAgICAgIHRvIGJlIGNvbnNpc3RlbnQgd2l0aCAn
ZGlkRmx1c2goKScuCisKKyAgICAgICAgKiBTaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxh
eWVyQmFja2luZ1N0b3JlLm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllckJhY2tpbmdT
dG9yZTo6ZGlzcGxheSk6CisgICAgICAgIENhbGwgdGhlIGZ1bmN0aW9uIHdpdGggdGhlIG5ldyBu
YW1lIGFuZCBkZWxldGUgdGhlIEZJWE1FIGNvbW1lbnQuCisKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJLaXQ6OkltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6SW1h
Z2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kKToKKyAgICAgICAgKFdlYktpdDo6SW1hZ2VC
dWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpiYWNrZW5kU2l6ZSBjb25zdCk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNr
ZW5kLmg6CisgICAgICAgIFVzZSB0aGUgbmV3IHN0cnVjdHVyZSAnSW1hZ2VCdWZmZXJCYWNrZW5k
OjpQYXJhbWV0ZXJzJy4gSW1wbGVtZW50IHRoZQorICAgICAgICB2aXJ0dWFsIG1ldGhvZCAnYmFj
a2VuZFNpemUoKScuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9QbGF0Zm9y
bVJlbW90ZUltYWdlQnVmZmVyUHJveHkuaDoKKyAgICAgICAgKGlzVHlwZSk6IERlbGV0ZWQuCisg
ICAgICAgIERlbGV0ZSB0aGUgd3JvbmcgdHJhaXRzLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVJbWFnZUJ1ZmZlclByb3h5OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJ
bWFnZUJ1ZmZlclByb3h5OjpSZW1vdGVJbWFnZUJ1ZmZlclByb3h5KToKKyAgICAgICAgVXNlIHRo
ZSBuZXcgc3RydWN0dXJlICdJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnMnLgorCisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyUHJveHk6OmNsZWFyQmFja2VuZCk6IERlbGV0
ZWQuCisgICAgICAgIFRoaXMgaXMgbm93IGltcGxlbWVudGVkIGluIENvbmNyZXRlSW1hZ2VCdWZm
ZXI6OmNsZWFyQmFja2VuZCgpLgorCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVy
UHJveHk6OmNyZWF0ZUJhY2tlbmQpOiBEZWxldGVkLgorICAgICAgICBSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHk6OmRpZENyZWF0ZUltYWdlQnVmZmVyQmFja2VuZCgpIGNyZWF0ZXMgdGhlCisg
ICAgICAgIGJhY2tlbmQgYW5kIENvbmNyZXRlSW1hZ2VCdWZmZXI6OnNldEJhY2tlbmQoKSBzZXRz
IGl0LgorCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyUHJveHk6OmRpZEZsdXNo
KTogRGVsZXRlZC4KKyAgICAgICAgZGlkRmx1c2goKSBpcyBub3cgdmlydHVhbCBzbyBpdCBjYW4g
YmUgcHJpdmF0ZS4KKworICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlclByb3h5Ojpz
aXplIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJQ
cm94eTo6cmVuZGVyaW5nTW9kZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUltYWdlQnVmZmVyUHJveHk6OmNvbG9yU3BhY2UgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlclByb3h5OjpwaXhlbEZvcm1hdCBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIFRoZXNlIGZ1bmN0aW9ucyBhcmUgbm93IGltcGxlbWVudGVkIGluIENv
bmNyZXRlSW1hZ2VCdWZmZXIuCisKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJQ
cm94eTo6c3VibWl0RGlzcGxheUxpc3QpOiBEZWxldGVkLgorICAgICAgICBzdWJtaXREaXNwbGF5
TGlzdCgpIGlzIG5vdyB2aXJ0dWFsLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpyZWVzdGFibGlzaEdQVVByb2Nlc3NDb25uZWN0aW9u
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Ojp3YWl0Rm9y
RGlkQ3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5OjpjcmVhdGVJbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6ZGlkQ3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5k
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpkaWRGbHVz
aCk6CisgICAgICAgIChXZWJLaXQ6OnJlY3JlYXRlSW1hZ2VCdWZmZXIpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OndhaXRGb3JJbWFnZUJ1
ZmZlckJhY2tlbmRXYXNDcmVhdGVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5OjppbWFnZUJ1ZmZlckJhY2tlbmRXYXNDcmVhdGVkKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHkuaDoKKyAgICAgICAgTm8gbmVlZCB0byBjYXN0IHRoZSBJbWFnZUJ1ZmZlciB0
byBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5IHNpbmNlIGFsbCB3aGF0CisgICAgICAgIFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eSBuZWVkcyBjYW4gYmUgYWNjZXNzZWQgdGhyb3VnaCB0aGUgYmFz
ZSBjbGFzcy4KKworICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgUmVuYW1lICdJbWFnZUJ1ZmZl
ckJhY2tlbmRXYXNDcmVhdGVkJyB0byAnRGlkQ3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kJworICAg
ICAgICB0byBiZSBjb25zaXN0ZW50IHdpdGggJ0RpZEZsdXNoJy4gTm8gbmVlZCB0byBwYXNzIHRo
ZSBjcmVhdGlvbiBwYXJhbWV0ZXJzCisgICAgICAgIHNpbmNlIHRoZXkgc2V0IGluIHRoZSBDb25j
cmV0ZUltYWdlQnVmZmVyLiBObyBuZWVkIHRvIHBhc3MgdGhlIGJhY2tlbmRTaXplCisgICAgICAg
IHNpbmNlIGl0IGNhbiBiZSByZXRyaWV2ZWQgdGhyb3VnaCB0aGUgYmFja2VuZCBpdHNlbGYuCisK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJl
YWJsZUlPU3VyZmFjZUJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbWFnZUJ1ZmZlclNo
YXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kLmg6
CisgICAgICAgIFVzZSB0aGUgbmV3IHN0cnVjdHVyZSAnSW1hZ2VCdWZmZXJCYWNrZW5kOjpQYXJh
bWV0ZXJzJy4KKwogMjAyMC0xMS0zMCAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+
CiAKICAgICAgICAgSW50cm9kdWNlIGFuIGV4cGVyaW1lbnRhbCBmbGFnIHNwZWNpZmljIHRvIFZQ
OSBwcm9maWxlIDIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9T
b3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IDM3ODlhYTM4Mzk0MGQyNTc0MTI0YmMy
ZmY0M2U3ZWVjNGFlOTUwZDUuLmRmYTI0NGZkY2Q5ZDczM2Q3Yzk1ODkyNzNlMDY5YzdjMDA0ZmU3
YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNl
L1dlYkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtMTI3MCw2ICsxMjcwLDcgQEAgc2V0KFdlYkNvcmVf
UFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdC5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0RHJhd0dseXBoc1JlY29yZGVyLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3REcmF3aW5nQ29udGV4dC5oCisgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0Rmx1c2hJZGVudGlmaWVyLmgKICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5oCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUuaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IDhhMjM5NTA3ZWJiZDg1OTkwMjI1ZmJlYjE4NTA1MDEwNDg4NjExMmQuLmJlNzBhYjAzNzBmMzVj
MjgwNjlhNWI0OGY0YTEwNTM5YjkwNGQ2Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIxNzksNiArMjE3OSw3IEBACiAJCTcy
MTQ0MzM0MjIzRUM5MTYwMEYxMkZGNyAvKiBTVkdQcm9wZXJ0eU93bmVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NUVFNTM2MDIyM0IyQTIxMDBGQkE5
NDQgLyogU1ZHUHJvcGVydHlPd25lci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTcyMUI0OTc0MjUxMkJBM0IwMEZFOUQzQiAvKiBJbWFnZUJpdG1h
cEJhY2tpbmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDcyMUI0OTcwMjUxMkFDMDQwMEZFOUQzQiAvKiBJbWFnZUJpdG1hcEJhY2tpbmcuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MjI4M0YwRTIzMEIy
NjhDMDBGNUQ4MjggLyogSW1hZ2VQYWludGluZ09wdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyQzE4QTNGMjMwQjA0QjcwMDY4NDdDNyAvKiBJ
bWFnZVBhaW50aW5nT3B0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCTcyNDJBQzk3MjU3NThGRTEwMDVBOUNGMSAvKiBEaXNwbGF5TGlzdEZs
dXNoSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNzI0MkFDOTUyNTc1OEZFMDAwNUE5Q0YxIC8qIERpc3BsYXlMaXN0Rmx1c2hJZGVudGlm
aWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
NzI0RUQzMzIxQTNBOEIyMzAwRjVGMTNDIC8qIEpTRVhUQmxlbmRNaW5NYXguaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyNEVEMzMwMUEzQThCMjMwMEY1
RjEzQyAvKiBKU0VYVEJsZW5kTWluTWF4LmggKi87IH07CiAJCTcyNEVFNTUwMURDODBEN0YwMEE5
MUZGQiAvKiBBY3Rpdml0eVN0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3MjRFRTU0RTFEQzdGMjVCMDBBOTFGRkIgLyogQWN0aXZpdHlTdGF0ZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcyNEVF
NTUxMURDODBEODQwMEE5MUZGQiAvKiBBY3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyNEVFNTRGMURDN0Yy
NUIwMEE5MUZGQiAvKiBBY3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTAwNTMsNiArMTAwNTQsNyBA
QAogCQk3MjFCNDk2RjI1MTJBQzA0MDBGRTlEM0IgLyogSW1hZ2VCaXRtYXBCYWNraW5nLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEltYWdlQml0bWFwQmFja2luZy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTcyMUI0OTcwMjUxMkFDMDQwMEZFOUQzQiAvKiBJbWFnZUJpdG1hcEJh
Y2tpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VCaXRtYXBCYWNraW5nLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTcyMkE4MTVDMjM4RkQ1MDUwMEMwMDU4MyAvKiBBbmltYXRpb25G
cmFtZVJhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQW5pbWF0aW9uRnJhbWVSYXRlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyNDJBQzk1MjU3NThGRTAwMDVBOUNGMSAvKiBEaXNwbGF5
TGlzdEZsdXNoSWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBE
aXNwbGF5TGlzdEZsdXNoSWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3MjRFRDMyOTFBM0E3RTU0MDBGNUYxM0MgLyogRVhUQmxlbmRNaW5NYXguY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRVhUQmxlbmRNaW5NYXguY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3MjRFRDMyQTFBM0E3RTU0MDBGNUYxM0MgLyogRVhUQmxl
bmRNaW5NYXguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRVhUQmxlbmRNaW5N
YXguaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI0RUQzMkIxQTNBN0U1NDAwRjVG
MTNDIC8qIEVYVEJsZW5kTWluTWF4LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBFWFRCbGVu
ZE1pbk1heC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzgwMCw2ICsxNzgw
Miw3IEBACiAJCQkJMUNBRjU2REUyNTMwMjQ1QTAwMTdCNDcyIC8qIERpc3BsYXlMaXN0RHJhd0ds
eXBoc1JlY29yZGVyQ29yZVRleHQuY3BwICovLAogCQkJCTU1QzBBMjk1MjNGRTJDRTAwMEYyQ0I5
MyAvKiBEaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0LmNwcCAqLywKIAkJCQk3MkVBMDlGOTIzRkND
QzZBMDA4NTA0QTUgLyogRGlzcGxheUxpc3REcmF3aW5nQ29udGV4dC5oICovLAorCQkJCTcyNDJB
Qzk1MjU3NThGRTAwMDVBOUNGMSAvKiBEaXNwbGF5TGlzdEZsdXNoSWRlbnRpZmllci5oICovLAog
CQkJCTcyRUEwOUY3MjNGQ0NCM0QwMDg1MDRBNSAvKiBEaXNwbGF5TGlzdEltYWdlQnVmZmVyLmgg
Ki8sCiAJCQkJRjQyMkI4QjYyNTNGNzA2NTAwNEU3N0U4IC8qIERpc3BsYXlMaXN0SXRlbUJ1ZmZl
ci5jcHAgKi8sCiAJCQkJRjQyMkI4QjUyNTNGNzA2NTAwNEU3N0U4IC8qIERpc3BsYXlMaXN0SXRl
bUJ1ZmZlci5oICovLApAQCAtMzE2OTMsNiArMzE2OTYsNyBAQAogCQkJCTBGRTVGQkQzMUMzREQ1
MUUwMDA3QTJDQSAvKiBEaXNwbGF5TGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUNBRjU2REIy
NTMwMUFDODAwMTdCNDcyIC8qIERpc3BsYXlMaXN0RHJhd0dseXBoc1JlY29yZGVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1NUFEMDk0MDI0MDg5NjQwMDBERTREMkYgLyogRGlzcGxheUxpc3REcmF3
aW5nQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzI0MkFDOTcyNTc1OEZFMTAwNUE5Q0Yx
IC8qIERpc3BsYXlMaXN0Rmx1c2hJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1NUFE
MDkzRTI0MDg5NjM1MDBERTREMkYgLyogRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRjRENDBCQzkyNTU0NjNCRjAwNzIxMzQ5IC8qIERpc3BsYXlMaXN0SXRlbUJ1
ZmZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFNUZCRDUxQzNERDUxRTAwMDdBMkNBIC8qIERp
c3BsYXlMaXN0SXRlbXMuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcAppbmRl
eCBjZmY3ZTQ3OGZlMzY5M2ZkYTJlNTBiNWE2YTI3YjYzMmNmMjVhZmJhLi5hZDk4M2VhODlmZjY5
MmIzZmU3ZWVjNGIzYjg2YjUzNjJiZDlmNjEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcApAQCAt
MjA0Miw3ICsyMDQyLDcgQEAgR3JhcGhpY3NDb250ZXh0KiBDYW52YXNSZW5kZXJpbmdDb250ZXh0
MkRCYXNlOjpkcmF3aW5nQ29udGV4dCgpIGNvbnN0CiB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyREJhc2U6OnByZXBhcmVGb3JEaXNwbGF5KCkKIHsKICAgICBpZiAoYXV0byBidWZmZXIgPSBj
YW52YXNCYXNlKCkuYnVmZmVyKCkpCi0gICAgICAgIGJ1ZmZlci0+Zmx1c2hEcmF3aW5nQ29udGV4
dEFuZENvbW1pdCgpOworICAgICAgICBidWZmZXItPmNvbW1pdERyYXdpbmdDb250ZXh0KCk7CiB9
CiAKIGJvb2wgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6bmVlZHNQcmVwYXJhdGlvbkZv
ckRpc3BsYXkoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZlci5oCmluZGV4IDgyNDI5OTAwMmVlNjYwZjBiYWUzZjE2
M2FkMWM4OWIwM2Q0ZGRhNzkuLmYzMTBhNjJiNDYzYzBiNThjOWRlZGIzMDY1ZmIyNzFjMGFjODJl
ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRl
SW1hZ2VCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db25j
cmV0ZUltYWdlQnVmZmVyLmgKQEAgLTM2LDMwICszNiw0MSBAQCBwdWJsaWM6CiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgSW1hZ2VCdWZmZXJUeXBlID0gQ29uY3JldGVJbWFnZUJ1ZmZlciwgdHlwZW5h
bWUuLi4gQXJndW1lbnRzPgogICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VCdWZmZXJUeXBlPiBjcmVh
dGUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3Bh
Y2UgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIGNvbnN0IEhvc3RXaW5kb3cq
IGhvc3RXaW5kb3csIEFyZ3VtZW50cyYmLi4uIGFyZ3VtZW50cykKICAgICB7Ci0gICAgICAgIGF1
dG8gYmFja2VuZCA9IEJhY2tlbmRUeXBlOjpjcmVhdGUoc2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBj
b2xvclNwYWNlLCBwaXhlbEZvcm1hdCwgaG9zdFdpbmRvdyk7CisgICAgICAgIGF1dG8gcGFyYW1l
dGVycyA9IEltYWdlQnVmZmVyQmFja2VuZDo6UGFyYW1ldGVycyB7IHNpemUsIHJlc29sdXRpb25T
Y2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQgfTsKKyAgICAgICAgYXV0byBiYWNrZW5kID0g
QmFja2VuZFR5cGU6OmNyZWF0ZShwYXJhbWV0ZXJzLCBob3N0V2luZG93KTsKICAgICAgICAgaWYg
KCFiYWNrZW5kKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgSW1hZ2VCdWZmZXJUeXBlKFdURk1vdmUoYmFja2VuZCksIHN0ZDo6Zm9yd2Fy
ZDxBcmd1bWVudHM+KGFyZ3VtZW50cykuLi4pKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBJbWFnZUJ1ZmZlclR5cGUocGFyYW1ldGVycywgV1RGTW92ZShiYWNrZW5kKSwgc3RkOjpmb3J3
YXJkPEFyZ3VtZW50cz4oYXJndW1lbnRzKS4uLikpOwogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIEltYWdlQnVmZmVyVHlwZSA9IENvbmNyZXRlSW1hZ2VCdWZmZXIsIHR5cGVuYW1lLi4u
IEFyZ3VtZW50cz4KICAgICBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyVHlwZT4gY3JlYXRlKGNv
bnN0IEZsb2F0U2l6ZSYgc2l6ZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBBcmd1
bWVudHMmJi4uLiBhcmd1bWVudHMpCiAgICAgewotICAgICAgICBhdXRvIGJhY2tlbmQgPSBCYWNr
ZW5kVHlwZTo6Y3JlYXRlKHNpemUsIGNvbnRleHQpOworICAgICAgICBhdXRvIHBhcmFtZXRlcnMg
PSBJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnMgeyBzaXplLCAxLCBDb2xvclNwYWNlOjpT
UkdCLCBQaXhlbEZvcm1hdDo6QkdSQTggfTsKKyAgICAgICAgYXV0byBiYWNrZW5kID0gQmFja2Vu
ZFR5cGU6OmNyZWF0ZShwYXJhbWV0ZXJzLCBjb250ZXh0KTsKICAgICAgICAgaWYgKCFiYWNrZW5k
KQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgSW1hZ2VCdWZmZXJUeXBlKFdURk1vdmUoYmFja2VuZCksIHN0ZDo6Zm9yd2FyZDxBcmd1bWVu
dHM+KGFyZ3VtZW50cykuLi4pKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbWFnZUJ1
ZmZlclR5cGUocGFyYW1ldGVycywgV1RGTW92ZShiYWNrZW5kKSwgc3RkOjpmb3J3YXJkPEFyZ3Vt
ZW50cz4oYXJndW1lbnRzKS4uLikpOwogICAgIH0KIAotICAgIGJvb2wgaXNBY2NlbGVyYXRlZCgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEJhY2tlbmRUeXBlOjppc0FjY2VsZXJhdGVkOyB9Cisg
ICAgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
QmFja2VuZFR5cGU6OnJlbmRlcmluZ01vZGU7IH0KIAogcHJvdGVjdGVkOgotICAgIENvbmNyZXRl
SW1hZ2VCdWZmZXIoc3RkOjp1bmlxdWVfcHRyPEJhY2tlbmRUeXBlPiYmIGJhY2tlbmQgPSBudWxs
cHRyLCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyID0gUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyOjpnZW5lcmF0ZSgpKQotICAgICAgICA6
IG1fYmFja2VuZChXVEZNb3ZlKGJhY2tlbmQpKQorICAgIENvbmNyZXRlSW1hZ2VCdWZmZXIoY29u
c3QgSW1hZ2VCdWZmZXJCYWNrZW5kOjpQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBzdGQ6OnVuaXF1
ZV9wdHI8QmFja2VuZFR5cGU+JiYgYmFja2VuZCA9IG51bGxwdHIsIFJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgPSBSZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXI6OmdlbmVyYXRlKCkpCisgICAgICAgIDogbV9wYXJhbWV0ZXJzKHBhcmFtZXRl
cnMpCisgICAgICAgICwgbV9iYWNrZW5kKFdURk1vdmUoYmFja2VuZCkpCiAgICAgICAgICwgbV9y
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQog
ICAgIHsKICAgICB9CiAKKyAgICB2b2lkIHNldEJhY2tlbmQoc3RkOjp1bmlxdWVfcHRyPEltYWdl
QnVmZmVyQmFja2VuZD4mJiBiYWNrZW5kKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgQVNTRVJU
KCFtX2JhY2tlbmQpOworICAgICAgICBtX2JhY2tlbmQgPSBzdGQ6OnVuaXF1ZV9wdHI8QmFja2Vu
ZFR5cGU+IHsgc3RhdGljX2Nhc3Q8QmFja2VuZFR5cGUqPihiYWNrZW5kLnJlbGVhc2UoKSkgfTsK
KyAgICB9CisKKyAgICB2b2lkIGNsZWFyQmFja2VuZCgpIG92ZXJyaWRlIHsgbV9iYWNrZW5kID0g
bnVsbHB0cjsgfQorCiAgICAgdmlydHVhbCBCYWNrZW5kVHlwZSogZW5zdXJlQmFja2VuZENyZWF0
ZWQoKSBjb25zdCB7IHJldHVybiBtX2JhY2tlbmQuZ2V0KCk7IH0KIAogICAgIFJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcjsgfQpAQCAtNzgsMTkg
Kzg5LDExIEBAIHByb3RlY3RlZDoKICAgICAgICAgfQogICAgIH0KIAotICAgIEFmZmluZVRyYW5z
Zm9ybSBiYXNlVHJhbnNmb3JtKCkgY29uc3Qgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIGlmIChh
dXRvKiBiYWNrZW5kID0gZW5zdXJlQmFja2VuZENyZWF0ZWQoKSkKLSAgICAgICAgICAgIHJldHVy
biBiYWNrZW5kLT5iYXNlVHJhbnNmb3JtKCk7Ci0gICAgICAgIHJldHVybiB7IH07Ci0gICAgfQot
Ci0gICAgSW50U2l6ZSBsb2dpY2FsU2l6ZSgpIGNvbnN0IG92ZXJyaWRlCi0gICAgewotICAgICAg
ICBpZiAoYXV0byogYmFja2VuZCA9IGVuc3VyZUJhY2tlbmRDcmVhdGVkKCkpCi0gICAgICAgICAg
ICByZXR1cm4gYmFja2VuZC0+bG9naWNhbFNpemUoKTsKLSAgICAgICAgcmV0dXJuIHsgfTsKLSAg
ICB9CisgICAgSW50U2l6ZSBsb2dpY2FsU2l6ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIElu
dFNpemUobV9wYXJhbWV0ZXJzLmxvZ2ljYWxTaXplKTsgfQorICAgIGZsb2F0IHJlc29sdXRpb25T
Y2FsZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcGFyYW1ldGVycy5yZXNvbHV0aW9uU2Nh
bGU7IH0KKyAgICBDb2xvclNwYWNlIGNvbG9yU3BhY2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBtX3BhcmFtZXRlcnMuY29sb3JTcGFjZTsgfQorICAgIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9wYXJhbWV0ZXJzLnBpeGVsRm9ybWF0OyB9Cisg
ICAgY29uc3QgSW1hZ2VCdWZmZXJCYWNrZW5kOjpQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9wYXJhbWV0ZXJzOyB9CiAKICAgICBJbnRTaXplIGJhY2tl
bmRTaXplKCkgY29uc3Qgb3ZlcnJpZGUKICAgICB7CkBAIC05OSwxMSArMTAyLDExIEBAIHByb3Rl
Y3RlZDoKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAKLSAgICBmbG9hdCByZXNvbHV0aW9u
U2NhbGUoKSBjb25zdCBvdmVycmlkZQorICAgIEFmZmluZVRyYW5zZm9ybSBiYXNlVHJhbnNmb3Jt
KCkgY29uc3Qgb3ZlcnJpZGUKICAgICB7Ci0gICAgICAgIGlmIChhdXRvKiBiYWNrZW5kID0gZW5z
dXJlQmFja2VuZENyZWF0ZWQoKSkKLSAgICAgICAgICAgIHJldHVybiBiYWNrZW5kLT5yZXNvbHV0
aW9uU2NhbGUoKTsKLSAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIGlmIChCYWNrZW5kVHlwZTo6
aXNPcmlnaW5BdFVwcGVyTGVmdENvcm5lcikKKyAgICAgICAgICAgIHJldHVybiBBZmZpbmVUcmFu
c2Zvcm0oMSwgMCwgMCwgLTEsIDAsIGxvZ2ljYWxTaXplKCkuaGVpZ2h0KCkpOworICAgICAgICBy
ZXR1cm4geyB9OwogICAgIH0KIAogICAgIHNpemVfdCBtZW1vcnlDb3N0KCkgY29uc3Qgb3ZlcnJp
ZGUKQEAgLTI5MSw2ICsyOTQsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgICAgICBiYWNrZW5kLT5y
ZWxlYXNlQnVmZmVyVG9Qb29sKCk7CiAgICAgfQogCisgICAgSW1hZ2VCdWZmZXJCYWNrZW5kOjpQ
YXJhbWV0ZXJzIG1fcGFyYW1ldGVyczsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QmFja2VuZFR5cGU+
IG1fYmFja2VuZDsKICAgICBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgbV9yZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXI7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlQnVmZmVyLmgKaW5kZXggNjJhM2Y3ZmZhMzc3OGE4YzAxMzkwMTYyNTQzNzUzYWE3
YmQyYzIxZC4uN2RmNDdiODFmYWI2YWU5OTI1YTczOGU0ZjdiMWY0ZjczODYwYmViMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCkBAIC0yNyw2
ICsyNyw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiRGlzcGxheUxpc3RGbHVzaElk
ZW50aWZpZXIuaCIKICNpbmNsdWRlICJJbWFnZUJ1ZmZlckJhY2tlbmQuaCIKICNpbmNsdWRlICJS
ZW5kZXJpbmdNb2RlLmgiCiAjaW5jbHVkZSAiUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLmgi
CkBAIC02MCwxMCArNjEsMTMgQEAgcHVibGljOgogICAgIHN0YXRpYyBGbG9hdFJlY3QgY2xhbXBl
ZFJlY3QoY29uc3QgRmxvYXRSZWN0Jik7CiAKICAgICBzdGF0aWMgSW50U2l6ZSBjb21wYXRpYmxl
QnVmZmVyU2l6ZShjb25zdCBGbG9hdFNpemUmLCBjb25zdCBHcmFwaGljc0NvbnRleHQmKTsKLSAg
ICAKKwogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgfkltYWdlQnVmZmVyKCkgPSBkZWZhdWx0
OwogCi0gICAgdmlydHVhbCBib29sIGlzQWNjZWxlcmF0ZWQoKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCB2b2lkIHNldEJhY2tlbmQoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQmFja2VuZD4m
JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjbGVhckJhY2tlbmQoKSA9IDA7CisKKyAgICB2aXJ0
dWFsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFs
IFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIo
KSBjb25zdCB7IHJldHVybiB7IH07IH0KICAgICAKICAgICB2aXJ0dWFsIEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCgpIGNvbnN0ID0gMDsKQEAgLTcyLDEyICs3NiwxOCBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBEaXNwbGF5TGlzdDo6RHJhd2luZ0NvbnRleHQqIGRyYXdpbmdDb250ZXh0KCkgeyBy
ZXR1cm4gbnVsbHB0cjsgfQogICAgIHZpcnR1YWwgYm9vbCBwcmVmZXJzUHJlcGFyYXRpb25Gb3JE
aXNwbGF5KCkgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIHZvaWQgZmx1c2hEcmF3aW5n
Q29udGV4dCgpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBmbHVzaERyYXdpbmdDb250ZXh0QW5kQ29t
bWl0KCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGNvbW1pdERyYXdpbmdDb250ZXh0KCkgeyB9Cisg
ICAgdmlydHVhbCB2b2lkIHN1Ym1pdERpc3BsYXlMaXN0KGNvbnN0IERpc3BsYXlMaXN0OjpEaXNw
bGF5TGlzdCYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRGbHVzaChEaXNwbGF5TGlzdDo6Rmx1
c2hJZGVudGlmaWVyKSB7IH0KIAotICAgIHZpcnR1YWwgQWZmaW5lVHJhbnNmb3JtIGJhc2VUcmFu
c2Zvcm0oKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBJbnRTaXplIGxvZ2ljYWxTaXplKCkgY29u
c3QgPSAwOwotICAgIHZpcnR1YWwgSW50U2l6ZSBiYWNrZW5kU2l6ZSgpIGNvbnN0ID0gMDsKICAg
ICB2aXJ0dWFsIGZsb2F0IHJlc29sdXRpb25TY2FsZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IENvbG9yU3BhY2UgY29sb3JTcGFjZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFBpeGVsRm9y
bWF0IHBpeGVsRm9ybWF0KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgY29uc3QgSW1hZ2VCdWZm
ZXJCYWNrZW5kOjpQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKCkgY29uc3QgPSAwOworCisgICAgdmly
dHVhbCBJbnRTaXplIGJhY2tlbmRTaXplKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgQWZmaW5l
VHJhbnNmb3JtIGJhc2VUcmFuc2Zvcm0oKSBjb25zdCA9IDA7CiAKICAgICB2aXJ0dWFsIHNpemVf
dCBtZW1vcnlDb3N0KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgc2l6ZV90IGV4dGVybmFsTWVt
b3J5Q29zdCgpIGNvbnN0ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCmluZGV4IDdmMGZlOWU2ZDk2NmU3NGI0
NWY4NWFhZDBlM2IyZmI4NGQ5NDUwYjkuLjkzOTRlN2JmZjQyOWJjMjFlZmNkZjNiMTQwMTExZjFh
ZTJjYTk0NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlQnVmZmVyQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmNwcApAQCAtMzEsMTIgKzMxLDggQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1JbWFnZUJ1ZmZlckJhY2tlbmQ6OkltYWdlQnVmZmVyQmFja2VuZChjb25z
dCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxv
YXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBp
eGVsRm9ybWF0KQotICAgIDogbV9sb2dpY2FsU2l6ZShsb2dpY2FsU2l6ZSkKLSAgICAsIG1fYmFj
a2VuZFNpemUoYmFja2VuZFNpemUpCi0gICAgLCBtX3Jlc29sdXRpb25TY2FsZShyZXNvbHV0aW9u
U2NhbGUpCi0gICAgLCBtX2NvbG9yU3BhY2UoY29sb3JTcGFjZSkKLSAgICAsIG1fcGl4ZWxGb3Jt
YXQocGl4ZWxGb3JtYXQpCitJbWFnZUJ1ZmZlckJhY2tlbmQ6OkltYWdlQnVmZmVyQmFja2VuZChj
b25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQorICAgIDogbV9wYXJhbWV0ZXJzKHBhcmFtZXRl
cnMpCiB7CiB9CiAKQEAgLTk5LDE1ICs5NSwxNSBAQCB2b2lkIEltYWdlQnVmZmVyQmFja2VuZDo6
Y29udmVydFRvTHVtaW5hbmNlTWFzaygpCiAKIFZlY3Rvcjx1aW50OF90PiBJbWFnZUJ1ZmZlckJh
Y2tlbmQ6OnRvQkdSQURhdGEodm9pZCogZGF0YSkgY29uc3QKIHsKLSAgICBWZWN0b3I8dWludDhf
dD4gcmVzdWx0KDQgKiBtX2xvZ2ljYWxTaXplLmFyZWEoKS51bnNhZmVHZXQoKSk7Ci0gICAgc2l6
ZV90IGRlc3RCeXRlc1BlclJvdyA9IG1fbG9naWNhbFNpemUud2lkdGgoKSAqIDQ7CisgICAgVmVj
dG9yPHVpbnQ4X3Q+IHJlc3VsdCg0ICogbG9naWNhbFNpemUoKS5hcmVhKCkudW5zYWZlR2V0KCkp
OworICAgIHNpemVfdCBkZXN0Qnl0ZXNQZXJSb3cgPSBsb2dpY2FsU2l6ZSgpLndpZHRoKCkgKiA0
OwogICAgIHNpemVfdCBzcmNCeXRlc1BlclJvdyA9IGJ5dGVzUGVyUm93KCk7CiAKICAgICB1aW50
OF90KiBzcmNSb3dzID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oZGF0YSk7CiAKICAgICBj
b3B5SW1hZ2VQaXhlbHMoCiAgICAgICAgIEFscGhhUHJlbXVsdGlwbGljYXRpb246OlByZW11bHRp
cGxpZWQsIHBpeGVsRm9ybWF0KCksIHNyY0J5dGVzUGVyUm93LCBzcmNSb3dzLAotICAgICAgICBB
bHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpCR1JB
OCwgZGVzdEJ5dGVzUGVyUm93LCByZXN1bHQuZGF0YSgpLCBtX2xvZ2ljYWxTaXplKTsKKyAgICAg
ICAgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6
QkdSQTgsIGRlc3RCeXRlc1BlclJvdywgcmVzdWx0LmRhdGEoKSwgbG9naWNhbFNpemUoKSk7CiAK
ICAgICByZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaAppbmRleCA1ODA2NzE1YTdiMmM4NzU3Njkw
MmE3NzM1ODRkZjE4MDU4MjUxMDBmLi5lMjgwYjE3YTY0MTlhNmJiYjBmMjk3YjMyZWI2NzQ1YWU0
MWVkMmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZUJ1ZmZlckJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZUJ1ZmZlckJhY2tlbmQuaApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkltYWdlUGFp
bnRpbmdPcHRpb25zLmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIlBsYXRmb3Jt
TGF5ZXIuaCIKKyNpbmNsdWRlICJSZW5kZXJpbmdNb2RlLmgiCiAjaW5jbHVkZSA8d3RmL1JlZlB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIApAQCAtNzcsNiArNzgsMTMgQEAgcHVibGlj
OgogCiBjbGFzcyBJbWFnZUJ1ZmZlckJhY2tlbmQgewogcHVibGljOgorICAgIHN0cnVjdCBQYXJh
bWV0ZXJzIHsKKyAgICAgICAgRmxvYXRTaXplIGxvZ2ljYWxTaXplOworICAgICAgICBmbG9hdCBy
ZXNvbHV0aW9uU2NhbGU7CisgICAgICAgIENvbG9yU3BhY2UgY29sb3JTcGFjZTsKKyAgICAgICAg
UGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQ7CisgICAgfTsKKwogICAgIFdFQkNPUkVfRVhQT1JUIHZp
cnR1YWwgfkltYWdlQnVmZmVyQmFja2VuZCgpID0gZGVmYXVsdDsKIAogICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBJbnRTaXplIGNhbGN1bGF0ZUJhY2tlbmRTaXplKGNvbnN0IEZsb2F0U2l6ZSYs
IGZsb2F0IHJlc29sdXRpb25TY2FsZSk7CkBAIC04NCwxNCArOTIsOSBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQoKSBjb25zdCA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGZsdXNoQ29udGV4dCgpIHsgfQogCi0gICAgSW50U2l6ZSBsb2dpY2FsU2l6ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fbG9naWNhbFNpemU7IH0KLSAgICBJbnRTaXplIGJhY2tlbmRTaXplKCkg
Y29uc3QgeyByZXR1cm4gbV9iYWNrZW5kU2l6ZTsgfQotICAgIGZsb2F0IHJlc29sdXRpb25TY2Fs
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb2x1dGlvblNjYWxlOyB9Ci0gICAgQ29sb3JTcGFjZSBj
b2xvclNwYWNlKCkgY29uc3QgeyByZXR1cm4gbV9jb2xvclNwYWNlOyB9Ci0gICAgUGl4ZWxGb3Jt
YXQgcGl4ZWxGb3JtYXQoKSBjb25zdCB7IHJldHVybiBtX3BpeGVsRm9ybWF0OyB9CisgICAgdmly
dHVhbCBJbnRTaXplIGJhY2tlbmRTaXplKCkgY29uc3QgPSAwOwogCi0gICAgdmlydHVhbCBBZmZp
bmVUcmFuc2Zvcm0gYmFzZVRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIEFmZmluZVRyYW5zZm9y
bSgpOyB9Ci0gICAgdmlydHVhbCBzaXplX3QgbWVtb3J5Q29zdCgpIGNvbnN0IHsgcmV0dXJuIDQg
KiBtX2JhY2tlbmRTaXplLmFyZWEoKS51bnNhZmVHZXQoKTsgfQorICAgIHZpcnR1YWwgc2l6ZV90
IG1lbW9yeUNvc3QoKSBjb25zdCB7IHJldHVybiA0ICogYmFja2VuZFNpemUoKS5hcmVhKCkudW5z
YWZlR2V0KCk7IH0KICAgICB2aXJ0dWFsIHNpemVfdCBleHRlcm5hbE1lbW9yeUNvc3QoKSBjb25z
dCB7IHJldHVybiAwOyB9CiAKICAgICB2aXJ0dWFsIFJlZlB0cjxOYXRpdmVJbWFnZT4gY29weU5h
dGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkpIGNvbnN0ID0gMDsKQEAgLTEyNywyNCArMTMwLDI5
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxUaHJlYWRTYWZlSW1hZ2VC
dWZmZXJGbHVzaGVyPiBjcmVhdGVGbHVzaGVyKCkgeyByZXR1cm4gbnVsbHB0cjsgfQogICAgIAog
ICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc09yaWdpbkF0VXBwZXJMZWZ0Q29ybmVyID0gZmFs
c2U7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzQWNjZWxlcmF0ZWQgPSBmYWxzZTsKKyAg
ICBzdGF0aWMgY29uc3RleHByIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSA9IFJlbmRlcmlu
Z01vZGU6OlVuYWNjZWxlcmF0ZWQ7CiAKIHByb3RlY3RlZDoKLSAgICBXRUJDT1JFX0VYUE9SVCBJ
bWFnZUJ1ZmZlckJhY2tlbmQoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50
U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSwgUGl4
ZWxGb3JtYXQpOworICAgIFdFQkNPUkVfRVhQT1JUIEltYWdlQnVmZmVyQmFja2VuZChjb25zdCBQ
YXJhbWV0ZXJzJik7CiAKLSAgICB2aXJ0dWFsIHVuc2lnbmVkIGJ5dGVzUGVyUm93KCkgY29uc3Qg
eyByZXR1cm4gNCAqIG1fYmFja2VuZFNpemUud2lkdGgoKTsgfQorICAgIHZpcnR1YWwgdW5zaWdu
ZWQgYnl0ZXNQZXJSb3coKSBjb25zdCB7IHJldHVybiA0ICogYmFja2VuZFNpemUoKS53aWR0aCgp
OyB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgIFQgdG9CYWNrZW5kQ29vcmRpbmF0
ZXMoVCB0KSBjb25zdAogICAgIHsKICAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8
VCwgSW50UG9pbnQ+Ojp2YWx1ZSB8fCBzdGQ6OmlzX3NhbWU8VCwgSW50U2l6ZT46OnZhbHVlIHx8
IHN0ZDo6aXNfc2FtZTxULCBJbnRSZWN0Pjo6dmFsdWUpOwotICAgICAgICBpZiAobV9yZXNvbHV0
aW9uU2NhbGUgIT0gMSkKLSAgICAgICAgICAgIHQuc2NhbGUobV9yZXNvbHV0aW9uU2NhbGUpOwor
ICAgICAgICBpZiAocmVzb2x1dGlvblNjYWxlKCkgIT0gMSkKKyAgICAgICAgICAgIHQuc2NhbGUo
cmVzb2x1dGlvblNjYWxlKCkpOwogICAgICAgICByZXR1cm4gdDsKICAgICB9CiAKLSAgICBJbnRS
ZWN0IGxvZ2ljYWxSZWN0KCkgY29uc3QgeyByZXR1cm4gSW50UmVjdChJbnRQb2ludDo6emVybygp
LCBtX2xvZ2ljYWxTaXplKTsgfTsKLSAgICBJbnRSZWN0IGJhY2tlbmRSZWN0KCkgY29uc3QgeyBy
ZXR1cm4gSW50UmVjdChJbnRQb2ludDo6emVybygpLCBtX2JhY2tlbmRTaXplKTsgfTsKKyAgICBJ
bnRTaXplIGxvZ2ljYWxTaXplKCkgY29uc3QgeyByZXR1cm4gSW50U2l6ZShtX3BhcmFtZXRlcnMu
bG9naWNhbFNpemUpOyB9CisgICAgZmxvYXQgcmVzb2x1dGlvblNjYWxlKCkgY29uc3QgeyByZXR1
cm4gbV9wYXJhbWV0ZXJzLnJlc29sdXRpb25TY2FsZTsgfQorICAgIENvbG9yU3BhY2UgY29sb3JT
cGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVycy5jb2xvclNwYWNlOyB9CisgICAgUGl4
ZWxGb3JtYXQgcGl4ZWxGb3JtYXQoKSBjb25zdCB7IHJldHVybiBtX3BhcmFtZXRlcnMucGl4ZWxG
b3JtYXQ7IH0KKworICAgIEludFJlY3QgbG9naWNhbFJlY3QoKSBjb25zdCB7IHJldHVybiBJbnRS
ZWN0KEludFBvaW50Ojp6ZXJvKCksIGxvZ2ljYWxTaXplKCkpOyB9OworICAgIEludFJlY3QgYmFj
a2VuZFJlY3QoKSBjb25zdCB7IHJldHVybiBJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIGJhY2tl
bmRTaXplKCkpOyB9OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGNvcHlJbWFn
ZVBpeGVscygKICAgICAgICAgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBzcmNBbHBoYUZvcm1hdCwg
UGl4ZWxGb3JtYXQgc3JjUGl4ZWxGb3JtYXQsIHVuc2lnbmVkIHNyY0J5dGVzUGVyUm93LCB1aW50
OF90KiBzcmNSb3dzLApAQCAtMTU1LDExICsxNjMsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgV0VCQ09S
RV9FWFBPUlQgUmVmUHRyPEltYWdlRGF0YT4gZ2V0SW1hZ2VEYXRhKEFscGhhUHJlbXVsdGlwbGlj
YXRpb24gb3V0cHV0Rm9ybWF0LCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0LCB2b2lkKiBkYXRhKSBj
b25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHB1dEltYWdlRGF0YShBbHBoYVByZW11bHRp
cGxpY2F0aW9uIGlucHV0Rm9ybWF0LCBjb25zdCBJbWFnZURhdGEmLCBjb25zdCBJbnRSZWN0JiBz
cmNSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50LCBBbHBoYVByZW11bHRpcGxpY2F0aW9u
IGRlc3RGb3JtYXQsIHZvaWQqIGRhdGEpOwogCi0gICAgSW50U2l6ZSBtX2xvZ2ljYWxTaXplOwot
ICAgIEludFNpemUgbV9iYWNrZW5kU2l6ZTsKLSAgICBmbG9hdCBtX3Jlc29sdXRpb25TY2FsZTsK
LSAgICBDb2xvclNwYWNlIG1fY29sb3JTcGFjZTsKLSAgICBQaXhlbEZvcm1hdCBtX3BpeGVsRm9y
bWF0OworICAgIFBhcmFtZXRlcnMgbV9wYXJhbWV0ZXJzOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxh
dGZvcm1JbWFnZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxh
dGZvcm1JbWFnZUJ1ZmZlci5oCmluZGV4IGIwNWZhNjUxNjk3MWQxNzY3MTMxZDU2YTQ2MzkzNTNl
Zjk0ZTQ5MjUuLjUyZGQ4M2NjOTNkNTU1M2IzNzllNTg3ZDQzODVkNGY3ODA1OTQ0YmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtSW1hZ2VCdWZm
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybUltYWdl
QnVmZmVyLmgKQEAgLTc1LDUgKzc1LDUgQEAgdXNpbmcgRGlzcGxheUxpc3RBY2NlbGVyYXRlZElt
YWdlQnVmZmVyID0gRGlzcGxheUxpc3Q6OkltYWdlQnVmZmVyPEFjY2VsZXJhdGVkSW0KIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKIAogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3Jl
OjpBY2NlbGVyYXRlZEltYWdlQnVmZmVyKQotICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBX
ZWJDb3JlOjpJbWFnZUJ1ZmZlciYgYnVmZmVyKSB7IHJldHVybiBidWZmZXIuaXNBY2NlbGVyYXRl
ZCgpOyB9CisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OkltYWdlQnVmZmVy
JiBidWZmZXIpIHsgcmV0dXJuIGJ1ZmZlci5yZW5kZXJpbmdNb2RlKCkgPT0gV2ViQ29yZTo6UmVu
ZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQ7IH0KIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdl
QnVmZmVyQ2Fpcm9CYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmNwcAppbmRleCAxMmE1YjYwYTJlOTA0NmEx
OTU4OTJiYWY1ZGQ3ZWQ0OTYzM2IzZTc0Li5iM2JmZDgxMjdiODdkMTY4OGVhYmI1Y2Y0YjJhNzFj
MzM1OWNkMmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQuY3BwCkBAIC04MCw3
ICs4MCw3IEBAIHZvaWQgSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQ6OmRyYXdQYXR0ZXJuKEdyYXBo
aWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsCiAgICAgfQogCiAgICAgaWYgKGF1dG8g
aW1hZ2UgPSBjb3B5TmF0aXZlSW1hZ2UoJmRlc3RDb250ZXh0ID09ICZjb250ZXh0KCkgPyBDb3B5
QmFja2luZ1N0b3JlIDogRG9udENvcHlCYWNraW5nU3RvcmUpKQotICAgICAgICBDYWlybzo6ZHJh
d1BhdHRlcm4oKmRlc3RDb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLCBpbWFnZS0+cGxhdGZvcm1J
bWFnZSgpLmdldCgpLCBtX2xvZ2ljYWxTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgcGF0dGVyblRy
YW5zZm9ybSwgcGhhc2UsIG9wdGlvbnMpOworICAgICAgICBDYWlybzo6ZHJhd1BhdHRlcm4oKmRl
c3RDb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLCBpbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgp
LCBsb2dpY2FsU2l6ZSgpLCBkZXN0UmVjdCwgc3JjUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhh
c2UsIG9wdGlvbnMpOwogfQogCiB2b2lkIEltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kOjpjbGlwVG9N
YXNrKEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9J
bWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2Vu
ZC5jcHAKaW5kZXggMWNkMDc1NGIzOTE0M2FmNDI5YjQ2ZDVkNzhlNDUxZjBkMWUwNzRjMy4uM2Rh
MTQ1NWViYTA2ZDY3OTRlMzMyNzAxN2RhYWZkNzliYzU0NzJkYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3Vy
ZmFjZUJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0ltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kLmNwcApAQCAtNDEsMTMgKzQx
LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBM
KEltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kKTsKIAotc3RkOjp1bmlxdWVfcHRy
PEltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kPiBJbWFnZUJ1ZmZlckNhaXJvSW1h
Z2VTdXJmYWNlQmFja2VuZDo6Y3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVz
b2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9y
bWF0LCBjb25zdCBIb3N0V2luZG93KikKK3N0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNhaXJv
SW1hZ2VTdXJmYWNlQmFja2VuZD4gSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQ6
OmNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBjb25zdCBIb3N0V2luZG93KikK
IHsKLSAgICBBU1NFUlQocGl4ZWxGb3JtYXQgPT0gUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBB
U1NFUlQocGFyYW1ldGVycy5waXhlbEZvcm1hdCA9PSBQaXhlbEZvcm1hdDo6QkdSQTgpOwogCiAg
ICAgc3RhdGljIGNhaXJvX3VzZXJfZGF0YV9rZXlfdCBzX3N1cmZhY2VEYXRhS2V5OwogCi0gICAg
SW50U2l6ZSBiYWNrZW5kU2l6ZSA9IGNhbGN1bGF0ZUJhY2tlbmRTaXplKHNpemUsIHJlc29sdXRp
b25TY2FsZSk7CisgICAgSW50U2l6ZSBiYWNrZW5kU2l6ZSA9IGNhbGN1bGF0ZUJhY2tlbmRTaXpl
KHBhcmFtZXRlcnMubG9naWNhbFNpemUsIHBhcmFtZXRlcnMucmVzb2x1dGlvblNjYWxlKTsKICAg
ICBpZiAoYmFja2VuZFNpemUuaXNFbXB0eSgpIHx8IGJhY2tlbmRTaXplLndpZHRoKCkgPiBjYWly
b01heEltYWdlU2l6ZSB8fCBiYWNrZW5kU2l6ZS5oZWlnaHQoKSA+IGNhaXJvTWF4SW1hZ2VTaXpl
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtNjEsMTYgKzYxLDE2IEBAIHN0ZDo6dW5p
cXVlX3B0cjxJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZD4gSW1hZ2VCdWZmZXJD
YWlyb0ltYWdlU3VyZmFjCiAgICAgICAgIGZhc3RGcmVlKGRhdGEpOwogICAgIH0pOwogCi0gICAg
cmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2Vu
ZD4obmV3IEltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kKHNpemUsIGJhY2tlbmRT
aXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0LCBXVEZNb3ZlKHN1
cmZhY2UpKSk7CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNhaXJvSW1h
Z2VTdXJmYWNlQmFja2VuZD4obmV3IEltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5k
KHBhcmFtZXRlcnMsIFdURk1vdmUoc3VyZmFjZSkpKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPElt
YWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kPiBJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VT
dXJmYWNlQmFja2VuZDo6Y3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgY29uc3QgR3JhcGhp
Y3NDb250ZXh0JikKK3N0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNl
QmFja2VuZD4gSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZShjb25z
dCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBjb25zdCBHcmFwaGljc0NvbnRleHQmKQogewotICAg
IHJldHVybiBJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZDo6Y3JlYXRlKHNpemUs
IDEsIENvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCwgbnVsbHB0cik7CisgICAg
cmV0dXJuIEltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kOjpjcmVhdGUocGFyYW1l
dGVycywgbnVsbHB0cik7CiB9CiAKLUltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5k
OjpJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZChjb25zdCBGbG9hdFNpemUmIGxv
Z2ljYWxTaXplLCBjb25zdCBJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNj
YWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBSZWZQ
dHI8Y2Fpcm9fc3VyZmFjZV90PiYmIHN1cmZhY2UpCi0gICAgOiBJbWFnZUJ1ZmZlckNhaXJvU3Vy
ZmFjZUJhY2tlbmQobG9naWNhbFNpemUsIGJhY2tlbmRTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNv
bG9yU3BhY2UsIHBpeGVsRm9ybWF0LCBXVEZNb3ZlKHN1cmZhY2UpKQorSW1hZ2VCdWZmZXJDYWly
b0ltYWdlU3VyZmFjZUJhY2tlbmQ6OkltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5k
KGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+JiYg
c3VyZmFjZSkKKyAgICA6IEltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZChwYXJhbWV0ZXJz
LCBXVEZNb3ZlKHN1cmZhY2UpKQogewogICAgIEFTU0VSVChjYWlyb19zdXJmYWNlX2dldF90eXBl
KG1fc3VyZmFjZS5nZXQoKSkgPT0gQ0FJUk9fU1VSRkFDRV9UWVBFX0lNQUdFKTsKIH0KQEAgLTc5
LDE2ICs3OSwxNiBAQCB2b2lkIEltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kOjpw
bGF0Zm9ybVRyYW5zZm9ybUNvbG9yU3BhY2UoY29uc3Qgc3RkOgogewogICAgIHVuc2lnbmVkIGNo
YXIqIGRhdGFTcmMgPSBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9kYXRhKG1fc3VyZmFjZS5nZXQo
KSk7CiAgICAgaW50IHN0cmlkZSA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3N0cmlkZShtX3N1
cmZhY2UuZ2V0KCkpOwotICAgIGZvciAoaW50IHkgPSAwOyB5IDwgbV9sb2dpY2FsU2l6ZS5oZWln
aHQoKTsgKyt5KSB7CisgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBsb2dpY2FsU2l6ZSgpLmhlaWdo
dCgpOyArK3kpIHsKICAgICAgICAgdW5zaWduZWQqIHJvdyA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRy
PHVuc2lnbmVkKj4oZGF0YVNyYyArIHN0cmlkZSAqIHkpOwotICAgICAgICBmb3IgKGludCB4ID0g
MDsgeCA8IG1fbG9naWNhbFNpemUud2lkdGgoKTsgeCsrKSB7CisgICAgICAgIGZvciAoaW50IHgg
PSAwOyB4IDwgbG9naWNhbFNpemUoKS53aWR0aCgpOyB4KyspIHsKICAgICAgICAgICAgIHVuc2ln
bmVkKiBwaXhlbCA9IHJvdyArIHg7CiAgICAgICAgICAgICBhdXRvIHBpeGVsQ29tcG9uZW50cyA9
IHVucHJlbXVsdGlwbGllZChhc1NSR0JBKFBhY2tlZENvbG9yOjpBUkdCIHsgKnBpeGVsIH0pKTsK
ICAgICAgICAgICAgIHBpeGVsQ29tcG9uZW50cyA9IHsgbG9va1VwVGFibGVbcGl4ZWxDb21wb25l
bnRzLnJlZF0sIGxvb2tVcFRhYmxlW3BpeGVsQ29tcG9uZW50cy5ncmVlbl0sIGxvb2tVcFRhYmxl
W3BpeGVsQ29tcG9uZW50cy5ibHVlXSwgcGl4ZWxDb21wb25lbnRzLmFscGhhIH07CiAgICAgICAg
ICAgICAqcGl4ZWwgPSBQYWNrZWRDb2xvcjo6QVJHQiB7IHByZW11bHRpcGxpZWRDZWlsaW5nKHBp
eGVsQ29tcG9uZW50cykgfS52YWx1ZTsKICAgICAgICAgfQogICAgIH0KLSAgICBjYWlyb19zdXJm
YWNlX21hcmtfZGlydHlfcmVjdGFuZ2xlKG1fc3VyZmFjZS5nZXQoKSwgMCwgMCwgbV9sb2dpY2Fs
U2l6ZS53aWR0aCgpLCBtX2xvZ2ljYWxTaXplLmhlaWdodCgpKTsKKyAgICBjYWlyb19zdXJmYWNl
X21hcmtfZGlydHlfcmVjdGFuZ2xlKG1fc3VyZmFjZS5nZXQoKSwgMCwgMCwgbG9naWNhbFNpemUo
KS53aWR0aCgpLCBsb2dpY2FsU2l6ZSgpLmhlaWdodCgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNr
ZW5kLmgKaW5kZXggZDE2ZDMzZWFjNDZjNWRmNjZmYjhmYTJkOTU0OTEwZTJmOTExNWEwMy4uODY1
Y2M2OWIyZDUzMzg1NDVmMzdlNDE5M2NiOTRmMTk4MGJlNzNhNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3Vy
ZmFjZUJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9JbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZC5oCkBAIC00MCwxMSArNDAsMTEg
QEAgY2xhc3MgSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQgOiBwdWJsaWMgSW1h
Z2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW4KICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKElt
YWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kKTsKICAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZCk7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2Vu
ZD4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JT
cGFjZSwgUGl4ZWxGb3JtYXQsIGNvbnN0IEhvc3RXaW5kb3cqKTsKLSAgICBzdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPEltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kPiBjcmVhdGUoY29u
c3QgRmxvYXRTaXplJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0Jik7CisgICAgc3RhdGljIHN0ZDo6
dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZD4gY3JlYXRlKGNv
bnN0IFBhcmFtZXRlcnMmLCBjb25zdCBIb3N0V2luZG93Kik7CisgICAgc3RhdGljIHN0ZDo6dW5p
cXVlX3B0cjxJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZD4gY3JlYXRlKGNvbnN0
IFBhcmFtZXRlcnMmLCBjb25zdCBHcmFwaGljc0NvbnRleHQmKTsKIAogcHJpdmF0ZToKLSAgICBJ
bWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZChjb25zdCBGbG9hdFNpemUmIGxvZ2lj
YWxTaXplLCBjb25zdCBJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxl
LCBDb2xvclNwYWNlLCBQaXhlbEZvcm1hdCwgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4mJik7Cisg
ICAgSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQoY29uc3QgUGFyYW1ldGVycyYs
IFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+JiYpOwogCiAgICAgdm9pZCBwbGF0Zm9ybVRyYW5zZm9y
bUNvbG9yU3BhY2UoY29uc3Qgc3RkOjphcnJheTx1aW50OF90LCAyNTY+JiBsb29rVXBUYWJsZSkg
b3ZlcnJpZGU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2Vu
ZC5jcHAKaW5kZXggOWI4MjE2NGFlYTMzMDcxZTUzNjFjNmZlMzliMWI4MjdjOWI2YjE1MC4uMGI3
M2YxNGJhNzAwNWU1MjA1MGVkNTgyMTY0YTExNjM4MDU0OTcxZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VC
YWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9J
bWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQuY3BwCkBAIC00Myw4ICs0Myw4IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kOjpJbWFn
ZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwg
Y29uc3QgSW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JT
cGFjZSBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgUmVmUHRyPGNhaXJvX3N1
cmZhY2VfdD4mJiBzdXJmYWNlKQotICAgIDogSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQobG9naWNh
bFNpemUsIGJhY2tlbmRTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9y
bWF0KQorSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kOjpJbWFnZUJ1ZmZlckNhaXJvU3Vy
ZmFjZUJhY2tlbmQoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycywgUmVmUHRyPGNhaXJvX3N1
cmZhY2VfdD4mJiBzdXJmYWNlKQorICAgIDogSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQocGFyYW1l
dGVycykKICAgICAsIG1fc3VyZmFjZShXVEZNb3ZlKHN1cmZhY2UpKQogewogICAgIEFTU0VSVChj
YWlyb19zdXJmYWNlX3N0YXR1cyhtX3N1cmZhY2UuZ2V0KCkpID09IENBSVJPX1NUQVRVU19TVUND
RVNTKTsKQEAgLTU5LDYgKzU5LDExIEBAIEdyYXBoaWNzQ29udGV4dCYgSW1hZ2VCdWZmZXJDYWly
b1N1cmZhY2VCYWNrZW5kOjpjb250ZXh0KCkgY29uc3QKICAgICByZXR1cm4gKm1fY29udGV4dDsK
IH0KIAorSW50U2l6ZSBJbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQ6OmJhY2tlbmRTaXpl
KCkgY29uc3QKK3sKKyAgICByZXR1cm4geyBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF93aWR0aCht
X3N1cmZhY2UuZ2V0KCkpLCBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9oZWlnaHQobV9zdXJmYWNl
LmdldCgpKSB9OworfQorCiB1bnNpZ25lZCBJbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQ6
OmJ5dGVzUGVyUm93KCkgY29uc3QKIHsKICAgICByZXR1cm4gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9n
ZXRfc3RyaWRlKG1fc3VyZmFjZS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9T
dXJmYWNlQmFja2VuZC5oCmluZGV4IDEyYWEyYjFjZTg4ZWU0MjY0NWZhNzcyZTY3OWY1ZDQxOTVh
MjY3NDcuLjllOTNkZGU4NThlZjQzYjI4MmQ0MzhjYTVhNzY3ZmViY2JiZGRiY2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fp
cm9TdXJmYWNlQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZC5oCkBAIC00MCw2ICs0MCw4IEBA
IGNsYXNzIEltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZCA6IHB1YmxpYyBJbWFnZUJ1ZmZl
ckNhaXJvQmFja2VuZCB7CiBwdWJsaWM6CiAgICAgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KCkg
Y29uc3Qgb3ZlcnJpZGU7CiAKKyAgICBJbnRTaXplIGJhY2tlbmRTaXplKCkgY29uc3Qgb3ZlcnJp
ZGU7CisKICAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IGNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3Rv
cmVDb3B5KSBjb25zdCBvdmVycmlkZTsKIAogICAgIFZlY3Rvcjx1aW50OF90PiB0b0JHUkFEYXRh
KCkgY29uc3Qgb3ZlcnJpZGU7CkBAIC00Nyw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHB1
dEltYWdlRGF0YShBbHBoYVByZW11bHRpcGxpY2F0aW9uIGlucHV0Rm9ybWF0LCBjb25zdCBJbWFn
ZURhdGEmLCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50
LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uIGRlc3RGb3JtYXQpIG92ZXJyaWRlOwogCiBwcm90ZWN0
ZWQ6Ci0gICAgSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kKGNvbnN0IEZsb2F0U2l6ZSYg
bG9naWNhbFNpemUsIGNvbnN0IEludFNpemUmIGJhY2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9u
U2NhbGUsIENvbG9yU3BhY2UsIFBpeGVsRm9ybWF0LCBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiYm
KTsKKyAgICBJbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQoY29uc3QgUGFyYW1ldGVycyYs
IFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+JiYpOwogCiAgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBj
YWlyb1N1cmZhY2VDb2VyY2VUb0ltYWdlKCkgY29uc3Q7CiAgICAgdW5zaWduZWQgYnl0ZXNQZXJS
b3coKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCYWNrZW5kLmNwcAppbmRleCA1MDE3YmEx
MmM4YjQ4N2IwY2EwNmU1NDNiMTI5NjM2NWQ2ZGQyYjJiLi5hYmJkMzY4ODc4MjY3ZDhjZjc3OGM2
NjA2ZmRiMjgwM2RkNGExZDc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JhY2tlbmQuY3BwCkBAIC03OSw4ICs3
OSw4IEBAIHZvaWQgSW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OnNldHVwQ29udGV4dCgpIGNvbnN0CiB7
CiAgICAgLy8gVGhlIGluaXRpYWwgQ1RNIG1hdGNoZXMgRGlzcGxheUxpc3Q6OlJlY29yZGVyOjpj
bGlwVG9EcmF3aW5nQ29tbWFuZHMoKSdzIGluaXRpYWwgQ1RNLgogICAgIGNvbnRleHQoKS5zY2Fs
ZShGbG9hdFNpemUoMSwgLTEpKTsKLSAgICBjb250ZXh0KCkudHJhbnNsYXRlKDAsIC1tX2JhY2tl
bmRTaXplLmhlaWdodCgpKTsKLSAgICBjb250ZXh0KCkuYXBwbHlEZXZpY2VTY2FsZUZhY3Rvciht
X3Jlc29sdXRpb25TY2FsZSk7CisgICAgY29udGV4dCgpLnRyYW5zbGF0ZSgwLCAtYmFja2VuZFNp
emUoKS5oZWlnaHQoKSk7CisgICAgY29udGV4dCgpLmFwcGx5RGV2aWNlU2NhbGVGYWN0b3IocmVz
b2x1dGlvblNjYWxlKCkpOwogfQogCiBzdGF0aWMgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGNyZWF0
ZUNyb3BwZWRJbWFnZUlmTmVjZXNzYXJ5KENHSW1hZ2VSZWYgaW1hZ2UsIGNvbnN0IEludFNpemUm
IGJhY2tlbmRTaXplKQpAQCAtMTEyLDMxICsxMTIsMzIgQEAgc3RhdGljIFJlZlB0cjxJbWFnZT4g
Y3JlYXRlQml0bWFwSW1hZ2VBZnRlclNjYWxpbmdJZk5lZWRlZChSZWZQdHI8TmF0aXZlSW1hZ2U+
JiYKIFJlZlB0cjxJbWFnZT4gSW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OmNvcHlJbWFnZShCYWNraW5n
U3RvcmVDb3B5IGNvcHlCZWhhdmlvciwgUHJlc2VydmVSZXNvbHV0aW9uIHByZXNlcnZlUmVzb2x1
dGlvbikgY29uc3QKIHsKICAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IGltYWdlOwotICAgIGlmICht
X3Jlc29sdXRpb25TY2FsZSA9PSAxIHx8IHByZXNlcnZlUmVzb2x1dGlvbiA9PSBQcmVzZXJ2ZVJl
c29sdXRpb246OlllcykKKyAgICBpZiAocmVzb2x1dGlvblNjYWxlKCkgPT0gMSB8fCBwcmVzZXJ2
ZVJlc29sdXRpb24gPT0gUHJlc2VydmVSZXNvbHV0aW9uOjpZZXMpCiAgICAgICAgIGltYWdlID0g
Y29weU5hdGl2ZUltYWdlKGNvcHlCZWhhdmlvcik7CiAgICAgZWxzZQogICAgICAgICBpbWFnZSA9
IGNvcHlOYXRpdmVJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSk7Ci0gICAgcmV0dXJuIGNyZWF0
ZUJpdG1hcEltYWdlQWZ0ZXJTY2FsaW5nSWZOZWVkZWQoV1RGTW92ZShpbWFnZSksIG1fbG9naWNh
bFNpemUsIG1fYmFja2VuZFNpemUsIG1fcmVzb2x1dGlvblNjYWxlLCBwcmVzZXJ2ZVJlc29sdXRp
b24pOworICAgIHJldHVybiBjcmVhdGVCaXRtYXBJbWFnZUFmdGVyU2NhbGluZ0lmTmVlZGVkKFdU
Rk1vdmUoaW1hZ2UpLCBsb2dpY2FsU2l6ZSgpLCBiYWNrZW5kU2l6ZSgpLCByZXNvbHV0aW9uU2Nh
bGUoKSwgcHJlc2VydmVSZXNvbHV0aW9uKTsKIH0KIAogUmVmUHRyPEltYWdlPiBJbWFnZUJ1ZmZl
ckNHQmFja2VuZDo6c2lua0ludG9JbWFnZShQcmVzZXJ2ZVJlc29sdXRpb24gcHJlc2VydmVSZXNv
bHV0aW9uKQogewotICAgIHJldHVybiBjcmVhdGVCaXRtYXBJbWFnZUFmdGVyU2NhbGluZ0lmTmVl
ZGVkKHNpbmtJbnRvTmF0aXZlSW1hZ2UoKSwgbV9sb2dpY2FsU2l6ZSwgbV9iYWNrZW5kU2l6ZSwg
bV9yZXNvbHV0aW9uU2NhbGUsIHByZXNlcnZlUmVzb2x1dGlvbik7CisgICAgYXV0byBiYWNrZW5k
U2l6ZSA9IHRoaXMtPmJhY2tlbmRTaXplKCk7CisgICAgcmV0dXJuIGNyZWF0ZUJpdG1hcEltYWdl
QWZ0ZXJTY2FsaW5nSWZOZWVkZWQoc2lua0ludG9OYXRpdmVJbWFnZSgpLCBsb2dpY2FsU2l6ZSgp
LCBiYWNrZW5kU2l6ZSwgcmVzb2x1dGlvblNjYWxlKCksIHByZXNlcnZlUmVzb2x1dGlvbik7CiB9
CiAKIHZvaWQgSW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBkZXN0
Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBGbG9hdFJl
Y3Qgc3JjUmVjdFNjYWxlZCA9IHNyY1JlY3Q7Ci0gICAgc3JjUmVjdFNjYWxlZC5zY2FsZShtX3Jl
c29sdXRpb25TY2FsZSk7CisgICAgc3JjUmVjdFNjYWxlZC5zY2FsZShyZXNvbHV0aW9uU2NhbGUo
KSk7CiAKICAgICBpZiAoYXV0byBpbWFnZSA9IGNvcHlOYXRpdmVJbWFnZSgmZGVzdENvbnRleHQg
PT0gJmNvbnRleHQoKSA/IENvcHlCYWNraW5nU3RvcmUgOiBEb250Q29weUJhY2tpbmdTdG9yZSkp
Ci0gICAgICAgIGRlc3RDb250ZXh0LmRyYXdOYXRpdmVJbWFnZSgqaW1hZ2UsIG1fYmFja2VuZFNp
emUsIGRlc3RSZWN0LCBzcmNSZWN0U2NhbGVkLCBvcHRpb25zKTsKKyAgICAgICAgZGVzdENvbnRl
eHQuZHJhd05hdGl2ZUltYWdlKCppbWFnZSwgYmFja2VuZFNpemUoKSwgZGVzdFJlY3QsIHNyY1Jl
Y3RTY2FsZWQsIG9wdGlvbnMpOwogfQogCiB2b2lkIEltYWdlQnVmZmVyQ0dCYWNrZW5kOjpkcmF3
UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYg
cGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6
ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAg
RmxvYXRSZWN0IGFkanVzdGVkU3JjUmVjdCA9IHNyY1JlY3Q7Ci0gICAgYWRqdXN0ZWRTcmNSZWN0
LnNjYWxlKG1fcmVzb2x1dGlvblNjYWxlKTsKKyAgICBhZGp1c3RlZFNyY1JlY3Quc2NhbGUocmVz
b2x1dGlvblNjYWxlKCkpOwogCiAgICAgaWYgKGF1dG8gaW1hZ2UgPSBjb3B5SW1hZ2UoJmRlc3RD
b250ZXh0ID09ICZjb250ZXh0KCkgPyBDb3B5QmFja2luZ1N0b3JlIDogRG9udENvcHlCYWNraW5n
U3RvcmUpKQogICAgICAgICBpbWFnZS0+ZHJhd1BhdHRlcm4oZGVzdENvbnRleHQsIGRlc3RSZWN0
LCBhZGp1c3RlZFNyY1JlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBvcHRp
b25zKTsKQEAgLTE1OSwxMSArMTYwLDYgQEAgdm9pZCBJbWFnZUJ1ZmZlckNHQmFja2VuZDo6Y2xp
cFRvTWFzayhHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFIKICAgICBD
R0NvbnRleHRUcmFuc2xhdGVDVE0oY2dDb250ZXh0LCAtZGVzdFJlY3QueCgpLCAtZGVzdFJlY3Qu
bWF4WSgpKTsKIH0KIAotQWZmaW5lVHJhbnNmb3JtIEltYWdlQnVmZmVyQ0dCYWNrZW5kOjpiYXNl
VHJhbnNmb3JtKCkgY29uc3QKLXsKLSAgICByZXR1cm4gQWZmaW5lVHJhbnNmb3JtKDEsIDAsIDAs
IC0xLCAwLCBtX2xvZ2ljYWxTaXplLmhlaWdodCgpKTsKLX0KLQogUmV0YWluUHRyPENGRGF0YVJl
Zj4gSW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OnRvQ0ZEYXRhKGNvbnN0IFN0cmluZyYgbWltZVR5cGUs
IE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSwgUHJlc2VydmVSZXNvbHV0aW9uIHByZXNlcnZlUmVz
b2x1dGlvbikgY29uc3QKIHsKICAgICBBU1NFUlQoTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0
ZWRJbWFnZU1JTUVUeXBlRm9yRW5jb2RpbmcobWltZVR5cGUpKTsKQEAgLTE5MCw3ICsxODYsNyBA
QCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBJbWFnZUJ1ZmZlckNHQmFja2VuZDo6dG9DRkRhdGEoY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
ICAgICAgICAgaW1hZ2UgPSBhZG9wdENGKENHSW1hZ2VDcmVhdGUocGl4ZWxBcnJheURpbWVuc2lv
bnMud2lkdGgoKSwgcGl4ZWxBcnJheURpbWVuc2lvbnMuaGVpZ2h0KCksIDgsIDMyLCA0ICogcGl4
ZWxBcnJheURpbWVuc2lvbnMud2lkdGgoKSwgc1JHQkNvbG9yU3BhY2VSZWYoKSwga0NHQml0bWFw
Qnl0ZU9yZGVyRGVmYXVsdCB8IGtDR0ltYWdlQWxwaGFOb25lU2tpcExhc3QsIGRhdGFQcm92aWRl
ci5nZXQoKSwgMCwgZmFsc2UsIGtDR1JlbmRlcmluZ0ludGVudERlZmF1bHQpKTsKLSAgICB9IGVs
c2UgaWYgKG1fcmVzb2x1dGlvblNjYWxlID09IDEgfHwgcHJlc2VydmVSZXNvbHV0aW9uID09IFBy
ZXNlcnZlUmVzb2x1dGlvbjo6WWVzKSB7CisgICAgfSBlbHNlIGlmIChyZXNvbHV0aW9uU2NhbGUo
KSA9PSAxIHx8IHByZXNlcnZlUmVzb2x1dGlvbiA9PSBQcmVzZXJ2ZVJlc29sdXRpb246Olllcykg
ewogICAgICAgICBpbWFnZSA9IGNvcHlOYXRpdmVJbWFnZShDb3B5QmFja2luZ1N0b3JlKS0+cGxh
dGZvcm1JbWFnZSgpOwogICAgICAgICBpbWFnZSA9IGNyZWF0ZUNyb3BwZWRJbWFnZUlmTmVjZXNz
YXJ5KGltYWdlLmdldCgpLCBiYWNrZW5kU2l6ZSgpKTsKICAgICB9IGVsc2UgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JhY2tl
bmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dC
YWNrZW5kLmgKaW5kZXggMWUwN2ZkYzY0NDNmZGMwOGY2YWY2M2UwODgzZWIzMjA1M2U0ZDU5Ny4u
YjI2YWUwODQzNDdiOWUyMzM0MDQ2MDBjMmVhNGE0YTI4YjFlMWJhNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JhY2tlbmQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFj
a2VuZC5oCkBAIC00MSw4ICs0MSw2IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIGNsaXBUb01h
c2soR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCkgb3ZlcnJpZGU7
CiAKLSAgICBBZmZpbmVUcmFuc2Zvcm0gYmFzZVRyYW5zZm9ybSgpIGNvbnN0IG92ZXJyaWRlOwot
CiAgICAgU3RyaW5nIHRvRGF0YVVSTChjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpb25hbDxk
b3VibGU+IHF1YWxpdHksIFByZXNlcnZlUmVzb2x1dGlvbikgY29uc3Qgb3ZlcnJpZGU7CiAgICAg
VmVjdG9yPHVpbnQ4X3Q+IHRvRGF0YShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpb25hbDxk
b3VibGU+IHF1YWxpdHkpIGNvbnN0IG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFw
QmFja2VuZC5jcHAKaW5kZXggZjIxOGYyN2YyZjUzYzVhNGFkYmI2YTVhZWRjM2M0OWU0OGNkNjNh
NC4uYmE0MTRmM2NiYTVkNGUxMjNjNGJiM2Y0NDgwMGZhOThkYWJiNmZhOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJh
Y2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
QnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmNwcApAQCAtMzksMTEgKzM5LDExIEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKEltYWdlQnVmZmVyQ0dCaXRt
YXBCYWNrZW5kKTsKIAotc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5k
PiBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6
ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIENHQ29sb3JT
cGFjZVJlZiBjZ0NvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBjb25zdCBIb3N0
V2luZG93KikKK3N0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZD4gSW1h
Z2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0
ZXJzLCBDR0NvbG9yU3BhY2VSZWYgY2dDb2xvclNwYWNlLCBjb25zdCBIb3N0V2luZG93KikKIHsK
LSAgICBBU1NFUlQocGl4ZWxGb3JtYXQgPT0gUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBBU1NF
UlQocGFyYW1ldGVycy5waXhlbEZvcm1hdCA9PSBQaXhlbEZvcm1hdDo6QkdSQTgpOwogCi0gICAg
SW50U2l6ZSBiYWNrZW5kU2l6ZSA9IGNhbGN1bGF0ZUJhY2tlbmRTaXplKHNpemUsIHJlc29sdXRp
b25TY2FsZSk7CisgICAgSW50U2l6ZSBiYWNrZW5kU2l6ZSA9IGNhbGN1bGF0ZUJhY2tlbmRTaXpl
KHBhcmFtZXRlcnMubG9naWNhbFNpemUsIHBhcmFtZXRlcnMucmVzb2x1dGlvblNjYWxlKTsKICAg
ICBpZiAoYmFja2VuZFNpemUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApA
QCAtNzAsMjQgKzcwLDI0IEBAIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNHQml0bWFwQmFj
a2VuZD4gSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNyZWF0ZShjCiAKICAgICBhdXRvIGRh
dGFQcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRoRGF0YSgwLCBkYXRh
LCBudW1CeXRlcywgcmVsZWFzZUltYWdlRGF0YSkpOwogCi0gICAgcmV0dXJuIHN0ZDo6dW5pcXVl
X3B0cjxJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZD4obmV3IEltYWdlQnVmZmVyQ0dCaXRtYXBC
YWNrZW5kKHNpemUsIGJhY2tlbmRTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBp
eGVsRm9ybWF0LCBkYXRhLCBXVEZNb3ZlKGRhdGFQcm92aWRlciksIFdURk1vdmUoY29udGV4dCkp
KTsKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5k
PihuZXcgSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQocGFyYW1ldGVycywgZGF0YSwgV1RGTW92
ZShkYXRhUHJvdmlkZXIpLCBXVEZNb3ZlKGNvbnRleHQpKSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0
cjxJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZD4gSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6
OmNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCkKK3N0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZD4gSW1hZ2VC
dWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJz
LCBjb25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiB7CiAgICAgaWYgKGF1dG8gY2dDb2xv
clNwYWNlID0gY29udGV4dENvbG9yU3BhY2UoY29udGV4dCkpCi0gICAgICAgIHJldHVybiBJbWFn
ZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y3JlYXRlKHNpemUsIDEsIENvbG9yU3BhY2U6OlNSR0Is
IGNnQ29sb3JTcGFjZS5nZXQoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4LCBudWxscHRyKTsKLSAgICAK
LSAgICByZXR1cm4gSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNyZWF0ZShzaXplLCAxLCBD
b2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdSQTgsIG51bGxwdHIpOworICAgICAgICBy
ZXR1cm4gSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNyZWF0ZShwYXJhbWV0ZXJzLCBjZ0Nv
bG9yU3BhY2UuZ2V0KCksIG51bGxwdHIpOworCisgICAgcmV0dXJuIEltYWdlQnVmZmVyQ0dCaXRt
YXBCYWNrZW5kOjpjcmVhdGUocGFyYW1ldGVycywgbnVsbHB0cik7CiB9CiAKLXN0ZDo6dW5pcXVl
X3B0cjxJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZD4gSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tl
bmQ6OmNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwg
Q29sb3JTcGFjZSBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgY29uc3QgSG9z
dFdpbmRvdyogaG9zdFdpbmRvdykKK3N0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNHQml0bWFw
QmFja2VuZD4gSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNyZWF0ZShjb25zdCBQYXJhbWV0
ZXJzJiBwYXJhbWV0ZXJzLCBjb25zdCBIb3N0V2luZG93KiBob3N0V2luZG93KQogewotICAgIHJl
dHVybiBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y3JlYXRlKHNpemUsIHJlc29sdXRpb25T
Y2FsZSwgY29sb3JTcGFjZSwgY2FjaGVkQ0dDb2xvclNwYWNlKGNvbG9yU3BhY2UpLCBwaXhlbEZv
cm1hdCwgaG9zdFdpbmRvdyk7CisgICAgcmV0dXJuIEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5k
OjpjcmVhdGUocGFyYW1ldGVycywgY2FjaGVkQ0dDb2xvclNwYWNlKHBhcmFtZXRlcnMuY29sb3JT
cGFjZSksIGhvc3RXaW5kb3cpOwogfQogCi1JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6SW1h
Z2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29u
c3QgSW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFj
ZSBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgdm9pZCogZGF0YSwgUmV0YWlu
UHRyPENHRGF0YVByb3ZpZGVyUmVmPiYmIGRhdGFQcm92aWRlciwgc3RkOjp1bmlxdWVfcHRyPEdy
YXBoaWNzQ29udGV4dD4mJiBjb250ZXh0KQotICAgIDogSW1hZ2VCdWZmZXJDR0JhY2tlbmQobG9n
aWNhbFNpemUsIGJhY2tlbmRTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVs
Rm9ybWF0KQorSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OkltYWdlQnVmZmVyQ0dCaXRtYXBC
YWNrZW5kKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIHZvaWQqIGRhdGEsIFJldGFpblB0
cjxDR0RhdGFQcm92aWRlclJlZj4mJiBkYXRhUHJvdmlkZXIsIHN0ZDo6dW5pcXVlX3B0cjxHcmFw
aGljc0NvbnRleHQ+JiYgY29udGV4dCkKKyAgICA6IEltYWdlQnVmZmVyQ0dCYWNrZW5kKHBhcmFt
ZXRlcnMpCiAgICAgLCBtX2RhdGEoZGF0YSkKICAgICAsIG1fZGF0YVByb3ZpZGVyKFdURk1vdmUo
ZGF0YVByb3ZpZGVyKSkKICAgICAsIG1fY29udGV4dChXVEZNb3ZlKGNvbnRleHQpKQpAQCAtMTAz
LDYgKzEwMywxMSBAQCBHcmFwaGljc0NvbnRleHQmIEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5k
Ojpjb250ZXh0KCkgY29uc3QKICAgICByZXR1cm4gKm1fY29udGV4dDsKIH0KIAorSW50U2l6ZSBJ
bWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6YmFja2VuZFNpemUoKSBjb25zdAoreworICAgIHJl
dHVybiB7IHN0YXRpY19jYXN0PGludD4oQ0dCaXRtYXBDb250ZXh0R2V0V2lkdGgoY29udGV4dCgp
LnBsYXRmb3JtQ29udGV4dCgpKSksIHN0YXRpY19jYXN0PGludD4oQ0dCaXRtYXBDb250ZXh0R2V0
SGVpZ2h0KGNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKSkpIH07Cit9CisKIFJlZlB0cjxOYXRp
dmVJbWFnZT4gSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNvcHlOYXRpdmVJbWFnZShCYWNr
aW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvcikgY29uc3QKIHsKICAgICBzd2l0Y2ggKGNvcHlCZWhh
dmlvcikgewpAQCAtMTEwLDkgKzExNSwxMCBAQCBSZWZQdHI8TmF0aXZlSW1hZ2U+IEltYWdlQnVm
ZmVyQ0dCaXRtYXBCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weQogICAg
ICAgICByZXR1cm4gTmF0aXZlSW1hZ2U6OmNyZWF0ZShhZG9wdENGKENHQml0bWFwQ29udGV4dENy
ZWF0ZUltYWdlKGNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKSkpKTsKIAogICAgIGNhc2UgRG9u
dENvcHlCYWNraW5nU3RvcmU6CisgICAgICAgIGF1dG8gYmFja2VuZFNpemUgPSB0aGlzLT5iYWNr
ZW5kU2l6ZSgpOwogICAgICAgICByZXR1cm4gTmF0aXZlSW1hZ2U6OmNyZWF0ZShhZG9wdENGKENH
SW1hZ2VDcmVhdGUoCi0gICAgICAgICAgICBtX2JhY2tlbmRTaXplLndpZHRoKCksIG1fYmFja2Vu
ZFNpemUuaGVpZ2h0KCksIDgsIDMyLCBieXRlc1BlclJvdygpLAotICAgICAgICAgICAgY2FjaGVk
Q0dDb2xvclNwYWNlKG1fY29sb3JTcGFjZSksIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkRmly
c3QgfCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkhvc3QsIG1fZGF0YVByb3ZpZGVyLmdldCgpLAorICAg
ICAgICAgICAgYmFja2VuZFNpemUud2lkdGgoKSwgYmFja2VuZFNpemUuaGVpZ2h0KCksIDgsIDMy
LCBieXRlc1BlclJvdygpLAorICAgICAgICAgICAgY2FjaGVkQ0dDb2xvclNwYWNlKGNvbG9yU3Bh
Y2UoKSksIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkRmlyc3QgfCBrQ0dCaXRtYXBCeXRlT3Jk
ZXIzMkhvc3QsIG1fZGF0YVByb3ZpZGVyLmdldCgpLAogICAgICAgICAgICAgMCwgdHJ1ZSwga0NH
UmVuZGVyaW5nSW50ZW50RGVmYXVsdCkpKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFw
QmFja2VuZC5oCmluZGV4IGU5MmM5MmY1ZDUwZmRlNTdhYWEzY2E1YzJmZjI5ZGYwOGI4NjRkMjku
LjhmMzMyM2U3ZGNlYzYzNTVhY2I3ZDViOTljMjA3ODc3MTVjODZiYTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNr
ZW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZm
ZXJDR0JpdG1hcEJhY2tlbmQuaApAQCAtMzYsMTIgKzM2LDE0IEBAIGNsYXNzIEltYWdlQnVmZmVy
Q0dCaXRtYXBCYWNrZW5kIDogcHVibGljIEltYWdlQnVmZmVyQ0dCYWNrZW5kIHsKICAgICBXVEZf
TUFLRV9JU09fQUxMT0NBVEVEKEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kKTsKICAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZCk7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZD4gY3Jl
YXRlKGNvbnN0IEZsb2F0U2l6ZSYsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSwg
Q0dDb2xvclNwYWNlUmVmLCBQaXhlbEZvcm1hdCwgY29uc3QgSG9zdFdpbmRvdyopOwotICAgIHN0
YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ+IGNyZWF0ZShj
b25zdCBGbG9hdFNpemUmLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UsIFBpeGVs
Rm9ybWF0LCBjb25zdCBIb3N0V2luZG93Kik7Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJ
bWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZD4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0
IEdyYXBoaWNzQ29udGV4dCYpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZm
ZXJDR0JpdG1hcEJhY2tlbmQ+IGNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiwgQ0dDb2xvclNwYWNl
UmVmLCBjb25zdCBIb3N0V2luZG93Kik7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFn
ZUJ1ZmZlckNHQml0bWFwQmFja2VuZD4gY3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmLCBjb25zdCBI
b3N0V2luZG93Kik7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNHQml0
bWFwQmFja2VuZD4gY3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmLCBjb25zdCBHcmFwaGljc0NvbnRl
eHQmKTsKIAogICAgIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCgpIGNvbnN0IG92ZXJyaWRlOwog
CisgICAgSW50U2l6ZSBiYWNrZW5kU2l6ZSgpIGNvbnN0IG92ZXJyaWRlOworCiAgICAgUmVmUHRy
PE5hdGl2ZUltYWdlPiBjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSA9IENvcHlCYWNr
aW5nU3RvcmUpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHRvQkdSQURh
dGEoKSBjb25zdCBvdmVycmlkZTsKQEAgLTUyLDcgKzU0LDcgQEAgcHVibGljOgogICAgIHN0YXRp
YyBjb25zdGV4cHIgYm9vbCBpc09yaWdpbkF0VXBwZXJMZWZ0Q29ybmVyID0gdHJ1ZTsKIAogcHJp
dmF0ZToKLSAgICBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZChjb25zdCBGbG9hdFNpemUmIGxv
Z2ljYWxTaXplLCBjb25zdCBJbnRTaXplJiBwaHlzaWNhbFNpemUsIGZsb2F0IHJlc29sdXRpb25T
Y2FsZSwgQ29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQsIHZvaWQqIGRhdGEsIFJldGFpblB0cjxDR0Rh
dGFQcm92aWRlclJlZj4mJiwgc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzQ29udGV4dD4mJik7Cisg
ICAgSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQoY29uc3QgUGFyYW1ldGVycyYsIHZvaWQqIGRh
dGEsIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4mJiwgc3RkOjp1bmlxdWVfcHRyPEdyYXBo
aWNzQ29udGV4dD4mJik7CiAKICAgICB2b2lkKiBtX2RhdGE7CiAgICAgUmV0YWluUHRyPENHRGF0
YVByb3ZpZGVyUmVmPiBtX2RhdGFQcm92aWRlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJh
Y2tlbmQuY3BwCmluZGV4IGFkM2ZmMWQ3OTc3MjAzNzY0MGUyZDY5OTU0MTI4ODYwYjc3NDhjMzYu
LjdhNjljNTUzYzAwMTM2ZDk3OGY0NGM5MzJlNGFlNWYxZTY0ZmQ1OGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFj
a2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VC
dWZmZXJJT1N1cmZhY2VCYWNrZW5kLmNwcApAQCAtNjQsMTMgKzY0LDEzIEBAIFJldGFpblB0cjxD
R0NvbG9yU3BhY2VSZWY+IEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y29udGV4dENvbG9y
U3BhY2UoY29uc3QKICAgICByZXR1cm4gSW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OmNvbnRleHRDb2xv
clNwYWNlKGNvbnRleHQpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJJT1N1cmZh
Y2VCYWNrZW5kPiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZShjb25zdCBGbG9h
dFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNl
LCBDR0NvbG9yU3BhY2VSZWYgY2dDb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwg
Y29uc3QgSG9zdFdpbmRvdyogaG9zdFdpbmRvdykKK3N0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZl
cklPU3VyZmFjZUJhY2tlbmQ+IEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlKGNv
bnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIENHQ29sb3JTcGFjZVJlZiBjZ0NvbG9yU3BhY2Us
IGNvbnN0IEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cpCiB7Ci0gICAgSW50U2l6ZSBiYWNrZW5kU2l6
ZSA9IGNhbGN1bGF0ZUJhY2tlbmRTaXplKHNpemUsIHJlc29sdXRpb25TY2FsZSk7CisgICAgSW50
U2l6ZSBiYWNrZW5kU2l6ZSA9IGNhbGN1bGF0ZUJhY2tlbmRTaXplKHBhcmFtZXRlcnMubG9naWNh
bFNpemUsIHBhcmFtZXRlcnMucmVzb2x1dGlvblNjYWxlKTsKICAgICBpZiAoYmFja2VuZFNpemUu
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGF1dG8gc3VyZmFjZSA9
IElPU3VyZmFjZTo6Y3JlYXRlKGJhY2tlbmRTaXplLCBiYWNrZW5kU2l6ZSwgY2dDb2xvclNwYWNl
LCBJT1N1cmZhY2U6OmZvcm1hdEZvclBpeGVsRm9ybWF0KHBpeGVsRm9ybWF0KSk7CisgICAgYXV0
byBzdXJmYWNlID0gSU9TdXJmYWNlOjpjcmVhdGUoYmFja2VuZFNpemUsIGJhY2tlbmRTaXplLCBj
Z0NvbG9yU3BhY2UsIElPU3VyZmFjZTo6Zm9ybWF0Rm9yUGl4ZWxGb3JtYXQocGFyYW1ldGVycy5w
aXhlbEZvcm1hdCkpOwogICAgIGlmICghc3VyZmFjZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKQEAgLTgwLDI0ICs4MCwyNCBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJJT1N1cmZh
Y2VCYWNrZW5kPiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZQogCiAgICAgQ0dD
b250ZXh0Q2xlYXJSZWN0KGNnQ29udGV4dC5nZXQoKSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQ6Onpl
cm8oKSwgYmFja2VuZFNpemUpKTsKIAotICAgIHJldHVybiBtYWtlVW5pcXVlPEltYWdlQnVmZmVy
SU9TdXJmYWNlQmFja2VuZD4oc2l6ZSwgYmFja2VuZFNpemUsIHJlc29sdXRpb25TY2FsZSwgY29s
b3JTcGFjZSwgcGl4ZWxGb3JtYXQsIFdURk1vdmUoc3VyZmFjZSkpOworICAgIHJldHVybiBtYWtl
VW5pcXVlPEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZD4ocGFyYW1ldGVycywgV1RGTW92ZShz
dXJmYWNlKSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tl
bmQ+IEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYg
c2l6ZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQorc3RkOjp1bmlxdWVfcHRyPElt
YWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZD4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpj
cmVhdGUoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycywgY29uc3QgR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0KQogewogICAgIGlmIChhdXRvIGNnQ29sb3JTcGFjZSA9IGNvbnRleHRDb2xvclNw
YWNlKGNvbnRleHQpKQotICAgICAgICByZXR1cm4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5k
OjpjcmVhdGUoc2l6ZSwgMSwgQ29sb3JTcGFjZTo6U1JHQiwgY2dDb2xvclNwYWNlLmdldCgpLCBQ
aXhlbEZvcm1hdDo6QkdSQTgsIG51bGxwdHIpOwotICAgIAotICAgIHJldHVybiBJbWFnZUJ1ZmZl
cklPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZShzaXplLCAxLCBDb2xvclNwYWNlOjpTUkdCLCBQaXhl
bEZvcm1hdDo6QkdSQTgsIG51bGxwdHIpOworICAgICAgICByZXR1cm4gSW1hZ2VCdWZmZXJJT1N1
cmZhY2VCYWNrZW5kOjpjcmVhdGUocGFyYW1ldGVycywgY2dDb2xvclNwYWNlLmdldCgpLCBudWxs
cHRyKTsKKworICAgIHJldHVybiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZShw
YXJhbWV0ZXJzLCBudWxscHRyKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVySU9T
dXJmYWNlQmFja2VuZD4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGUoY29uc3Qg
RmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JT
cGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIGNvbnN0IEhvc3RXaW5kb3cqIGhvc3RXaW5k
b3cpCitzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kPiBJbWFnZUJ1
ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJz
LCBjb25zdCBIb3N0V2luZG93KiBob3N0V2luZG93KQogewotICAgIHJldHVybiBJbWFnZUJ1ZmZl
cklPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZShzaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3Bh
Y2UsIGNhY2hlZENHQ29sb3JTcGFjZShjb2xvclNwYWNlKSwgcGl4ZWxGb3JtYXQsIGhvc3RXaW5k
b3cpOworICAgIHJldHVybiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZShwYXJh
bWV0ZXJzLCBjYWNoZWRDR0NvbG9yU3BhY2UocGFyYW1ldGVycy5jb2xvclNwYWNlKSwgaG9zdFdp
bmRvdyk7CiB9CiAKLUltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6SW1hZ2VCdWZmZXJJT1N1
cmZhY2VCYWNrZW5kKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEludFNpemUm
IGJhY2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFj
ZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+JiYg
c3VyZmFjZSkKLSAgICA6IEltYWdlQnVmZmVyQ0dCYWNrZW5kKGxvZ2ljYWxTaXplLCBiYWNrZW5k
U2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCkKK0ltYWdlQnVm
ZmVySU9TdXJmYWNlQmFja2VuZDo6SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kKGNvbnN0IFBh
cmFtZXRlcnMmIHBhcmFtZXRlcnMsIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+JiYgc3VyZmFj
ZSkKKyAgICA6IEltYWdlQnVmZmVyQ0dCYWNrZW5kKHBhcmFtZXRlcnMpCiAgICAgLCBtX3N1cmZh
Y2UoV1RGTW92ZShzdXJmYWNlKSkKIHsKICAgICBBU1NFUlQobV9zdXJmYWNlKTsKQEAgLTEyMCw2
ICsxMjAsMTEgQEAgdm9pZCBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmZsdXNoQ29udGV4
dCgpCiAgICAgQ0dDb250ZXh0Rmx1c2goY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpKTsKIH0K
IAorSW50U2l6ZSBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmJhY2tlbmRTaXplKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gbV9zdXJmYWNlLT5zaXplKCk7Cit9CisKIHNpemVfdCBJbWFnZUJ1
ZmZlcklPU3VyZmFjZUJhY2tlbmQ6Om1lbW9yeUNvc3QoKSBjb25zdAogewogICAgIHJldHVybiBt
X3N1cmZhY2UtPnRvdGFsQnl0ZXMoKTsKQEAgLTE0OCwxMCArMTUzLDEwIEBAIFJlZlB0cjxOYXRp
dmVJbWFnZT4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpzaW5rSW50b05hdGl2ZUltYWdl
KCkKIHZvaWQgSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpkcmF3Q29uc3VtaW5nKEdyYXBo
aWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMp
CiB7CiAgICAgRmxvYXRSZWN0IGFkanVzdGVkU3JjUmVjdCA9IHNyY1JlY3Q7Ci0gICAgYWRqdXN0
ZWRTcmNSZWN0LnNjYWxlKG1fcmVzb2x1dGlvblNjYWxlKTsKKyAgICBhZGp1c3RlZFNyY1JlY3Qu
c2NhbGUocmVzb2x1dGlvblNjYWxlKCkpOwogCiAgICAgaWYgKGF1dG8gaW1hZ2UgPSBzaW5rSW50
b05hdGl2ZUltYWdlKCkpCi0gICAgICAgIGRlc3RDb250ZXh0LmRyYXdOYXRpdmVJbWFnZSgqaW1h
Z2UsIG1fYmFja2VuZFNpemUsIGRlc3RSZWN0LCBhZGp1c3RlZFNyY1JlY3QsIG9wdGlvbnMpOwor
ICAgICAgICBkZXN0Q29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoKmltYWdlLCBiYWNrZW5kU2l6ZSgp
LCBkZXN0UmVjdCwgYWRqdXN0ZWRTcmNSZWN0LCBvcHRpb25zKTsKIH0KIAogUmV0YWluUHRyPENG
RGF0YVJlZj4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjp0b0NGRGF0YShjb25zdCBTdHJp
bmcmIG1pbWVUeXBlLCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHksIFByZXNlcnZlUmVzb2x1dGlv
biBwcmVzZXJ2ZVJlc29sdXRpb24pIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2Vu
ZC5oCmluZGV4IGRlOTgyMTExZTUyYzEyZWRiMDhkYzc4OGI1MGVjZWZiMzY1MDc2NTAuLjQ4NTlk
ZjZmYzUyNWQ4NWMzMjhjMTQ1ZjA3OTE3ODM1NjkwOWUyNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9T
dXJmYWNlQmFja2VuZC5oCkBAIC0zOSwxNSArMzksMTcgQEAgY2xhc3MgV0VCQ09SRV9FWFBPUlQg
SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kIDogcHVibGljIEltYWdlQnVmZmVyQ0dCYWNrZW5k
IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgSW50U2l6ZSBjYWxjdWxhdGVCYWNrZW5kU2l6ZShjb25z
dCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUpOwogCi0gICAg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ+IGNyZWF0
ZShjb25zdCBGbG9hdFNpemUmLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UsIENH
Q29sb3JTcGFjZVJlZiwgUGl4ZWxGb3JtYXQsIGNvbnN0IEhvc3RXaW5kb3cqKTsKLSAgICBzdGF0
aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZD4gY3JlYXRlKGNv
bnN0IEZsb2F0U2l6ZSYsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSwgUGl4ZWxG
b3JtYXQsIGNvbnN0IEhvc3RXaW5kb3cqKTsKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPElt
YWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZD4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0
IEdyYXBoaWNzQ29udGV4dCYpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZm
ZXJJT1N1cmZhY2VCYWNrZW5kPiBjcmVhdGUoY29uc3QgUGFyYW1ldGVycyYsIENHQ29sb3JTcGFj
ZVJlZiwgY29uc3QgSG9zdFdpbmRvdyopOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1h
Z2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kPiBjcmVhdGUoY29uc3QgUGFyYW1ldGVycyYsIGNvbnN0
IEhvc3RXaW5kb3cqKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVySU9T
dXJmYWNlQmFja2VuZD4gY3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmLCBjb25zdCBHcmFwaGljc0Nv
bnRleHQmKTsKIAotICAgIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZChjb25zdCBGbG9hdFNp
emUmIGxvZ2ljYWxTaXplLCBjb25zdCBJbnRTaXplJiBwaHlzaWNhbFNpemUsIGZsb2F0IHJlc29s
dXRpb25TY2FsZSwgQ29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQsIHN0ZDo6dW5pcXVlX3B0cjxJT1N1
cmZhY2U+JiYpOworICAgIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZChjb25zdCBQYXJhbWV0
ZXJzJiwgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4mJik7CiAKICAgICBHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQoKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIGZsdXNoQ29udGV4dCgpIG92
ZXJyaWRlOwogCisgICAgSW50U2l6ZSBiYWNrZW5kU2l6ZSgpIGNvbnN0IG92ZXJyaWRlOworICAg
IAogICAgIHNpemVfdCBtZW1vcnlDb3N0KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgc2l6ZV90IGV4
dGVybmFsTWVtb3J5Q29zdCgpIGNvbnN0IG92ZXJyaWRlOwogCkBAIC02OSw3ICs3MSw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHJlbGVhc2VCdWZmZXJUb1Bvb2woKSBvdmVycmlkZTsKIAogICAgIHN0
YXRpYyBjb25zdGV4cHIgYm9vbCBpc09yaWdpbkF0VXBwZXJMZWZ0Q29ybmVyID0gdHJ1ZTsKLSAg
ICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNBY2NlbGVyYXRlZCA9IHRydWU7CisgICAgc3RhdGlj
IGNvbnN0ZXhwciBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUgPSBSZW5kZXJpbmdNb2RlOjpB
Y2NlbGVyYXRlZDsKIAogcHJvdGVjdGVkOgogICAgIHN0YXRpYyBSZXRhaW5QdHI8Q0dDb2xvclNw
YWNlUmVmPiBjb250ZXh0Q29sb3JTcGFjZShjb25zdCBHcmFwaGljc0NvbnRleHQmKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0LmgKaW5kZXggMjZmYzk3MzA3MjExMjczMDM5M2UyZGNiYzg3ZDBjNmI5Y2E1
NDI1OC4uMTZiMTk3ZjllZTJkMjhkYmU5MjFkOTMwOTQzZDQzMDQ2MWRmY2Q4NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0LmgKQEAgLTMzLDcgKzMzLDYgQEAKICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxv
Yy5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxl
Lmg+Ci0jaW5jbHVkZSA8d3RmL09iamVjdElkZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTQ1LDkgKzQ0LDYg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBuYW1lc3BhY2UgRGlzcGxheUxpc3QgewogCi1lbnVt
IEZsdXNoSWRlbnRpZmllclR5cGUgeyB9OwotdXNpbmcgRmx1c2hJZGVudGlmaWVyID0gT2JqZWN0
SWRlbnRpZmllcjxGbHVzaElkZW50aWZpZXJUeXBlPjsKLQogZW51bSBBc1RleHRGbGFnIHsKICAg
ICBOb25lICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMCwKICAgICBJbmNsdWRlc1BsYXRm
b3JtT3BlcmF0aW9ucyAgICAgID0gMSA8PCAwLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0Rmx1c2hJZGVudGlmaWVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RGbHVzaElkZW50aWZpZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45Y2Y3ODE2OGViYjdmYzczN2I5YjRh
NmNmOGQ1MzcyOWY1YTA2MGVjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0Rmx1c2hJZGVudGlmaWVyLmgK
QEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8
d3RmL09iamVjdElkZW50aWZpZXIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3Bh
Y2UgRGlzcGxheUxpc3QgeworCitlbnVtIEZsdXNoSWRlbnRpZmllclR5cGUgeyB9OwordXNpbmcg
Rmx1c2hJZGVudGlmaWVyID0gT2JqZWN0SWRlbnRpZmllcjxGbHVzaElkZW50aWZpZXJUeXBlPjsK
KworfSAvLyBEaXNwbGF5TGlzdAorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RJbWFnZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXIuaAppbmRleCBmNWIyMjM0MDJhZWIzNzcyOGI3
MzAxZmI2NjcxMThhM2IyZThiMDQwLi5hNjVmY2E1NTlhMTY1ZmM2YjJkODYyM2YzNTNlMTE2NDcy
OTM3NzZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEltYWdlQnVmZmVyLmgKQEAg
LTM0LDI2ICszNCwyOSBAQCBuYW1lc3BhY2UgRGlzcGxheUxpc3QgewogdGVtcGxhdGU8dHlwZW5h
bWUgQmFja2VuZFR5cGU+CiBjbGFzcyBJbWFnZUJ1ZmZlciA6IHB1YmxpYyBDb25jcmV0ZUltYWdl
QnVmZmVyPEJhY2tlbmRUeXBlPiB7CiAgICAgdXNpbmcgQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXIg
PSBDb25jcmV0ZUltYWdlQnVmZmVyPEJhY2tlbmRUeXBlPjsKKyAgICB1c2luZyBCYXNlQ29uY3Jl
dGVJbWFnZUJ1ZmZlcjo6bG9naWNhbFNpemU7CisgICAgdXNpbmcgQmFzZUNvbmNyZXRlSW1hZ2VC
dWZmZXI6OmJhc2VUcmFuc2Zvcm07CiAKIHB1YmxpYzoKICAgICBzdGF0aWMgYXV0byBjcmVhdGUo
Y29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2Ug
Y29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIGNvbnN0IEhvc3RXaW5kb3cqIGhv
c3RXaW5kb3cpCiAgICAgewotICAgICAgICByZXR1cm4gQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXI6
OnRlbXBsYXRlIGNyZWF0ZTxJbWFnZUJ1ZmZlcj4oc2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xv
clNwYWNlLCBwaXhlbEZvcm1hdCwgaG9zdFdpbmRvdywgc2l6ZSk7CisgICAgICAgIHJldHVybiBC
YXNlQ29uY3JldGVJbWFnZUJ1ZmZlcjo6dGVtcGxhdGUgY3JlYXRlPEltYWdlQnVmZmVyPihzaXpl
LCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0LCBob3N0V2luZG93KTsK
ICAgICB9CiAKICAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBj
b25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiAgICAgewotICAgICAgICByZXR1cm4gQmFz
ZUNvbmNyZXRlSW1hZ2VCdWZmZXI6OnRlbXBsYXRlIGNyZWF0ZTxJbWFnZUJ1ZmZlcj4oc2l6ZSwg
Y29udGV4dCwgc2l6ZSk7CisgICAgICAgIHJldHVybiBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZlcjo6
dGVtcGxhdGUgY3JlYXRlPEltYWdlQnVmZmVyPihzaXplLCBjb250ZXh0KTsKICAgICB9CiAKLSAg
ICBJbWFnZUJ1ZmZlcihzdGQ6OnVuaXF1ZV9wdHI8QmFja2VuZFR5cGU+JiYgZGF0YUJhY2tlbmQs
IGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKLSAgICAgICAgOiBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZl
cihXVEZNb3ZlKGRhdGFCYWNrZW5kKSkKLSAgICAgICAgLCBtX2RyYXdpbmdDb250ZXh0KHNpemUs
IGluaXRpYWxEcmF3aW5nQ29udGV4dENUTShzaXplKSkKKyAgICBJbWFnZUJ1ZmZlcihjb25zdCBJ
bWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIHN0ZDo6dW5pcXVlX3B0
cjxCYWNrZW5kVHlwZT4mJiBiYWNrZW5kKQorICAgICAgICA6IEJhc2VDb25jcmV0ZUltYWdlQnVm
ZmVyKHBhcmFtZXRlcnMsIFdURk1vdmUoYmFja2VuZCkpCisgICAgICAgICwgbV9kcmF3aW5nQ29u
dGV4dChsb2dpY2FsU2l6ZSgpLCBiYXNlVHJhbnNmb3JtKCkpCiAgICAgewogICAgIH0KIAotICAg
IEltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgUmVjb3JkZXI6OkRlbGVnYXRlKiBk
ZWxlZ2F0ZSA9IG51bGxwdHIpCi0gICAgICAgIDogbV9kcmF3aW5nQ29udGV4dChzaXplLCBpbml0
aWFsRHJhd2luZ0NvbnRleHRDVE0oc2l6ZSksIGRlbGVnYXRlKQorICAgIEltYWdlQnVmZmVyKGNv
bnN0IEltYWdlQnVmZmVyQmFja2VuZDo6UGFyYW1ldGVycyYgcGFyYW1ldGVycywgUmVjb3JkZXI6
OkRlbGVnYXRlKiBkZWxlZ2F0ZSA9IG51bGxwdHIpCisgICAgICAgIDogQmFzZUNvbmNyZXRlSW1h
Z2VCdWZmZXIocGFyYW1ldGVycykKKyAgICAgICAgLCBtX2RyYXdpbmdDb250ZXh0KGxvZ2ljYWxT
aXplKCksIGJhc2VUcmFuc2Zvcm0oKSwgZGVsZWdhdGUpCiAgICAgewogICAgIH0KIApAQCAtNzcs
MTUgKzgwLDYgQEAgcHVibGljOgogCiBwcm90ZWN0ZWQ6CiAgICAgRHJhd2luZ0NvbnRleHQgbV9k
cmF3aW5nQ29udGV4dDsKLQotcHJpdmF0ZToKLSAgICBzdGF0aWMgQWZmaW5lVHJhbnNmb3JtIGlu
aXRpYWxEcmF3aW5nQ29udGV4dENUTShjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplKQotICAg
IHsKLSAgICAgICAgQWZmaW5lVHJhbnNmb3JtIGluaXRpYWxDVE07Ci0gICAgICAgIGlmIChCYWNr
ZW5kVHlwZTo6aXNPcmlnaW5BdFVwcGVyTGVmdENvcm5lcikKLSAgICAgICAgICAgIGluaXRpYWxD
VE0gPSBpbml0aWFsQ1RNLnNjYWxlKDEsIC0xKS50cmFuc2xhdGUoMCwgLWxvZ2ljYWxTaXplLmhl
aWdodCgpKTsKLSAgICAgICAgcmV0dXJuIGluaXRpYWxDVE07Ci0gICAgfQogfTsKIAogfSAvLyBE
aXNwbGF5TGlzdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZC5jcHAKaW5kZXggMzc4
YWFmNGM0MGM0ZTEyMmFjYmUwNjk0MzJjN2FkN2VjMjA5ZWQ3My4uMDFkMmU3ODAyODViMTFmZWMz
OWI0Y2QyNmJmNGNmZmYwODA3MzM3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tl
bmQuY3BwCkBAIC0xNzEsNyArMTcxLDcgQEAgc3RhdGljIFJlZlB0cjxJbWFnZT4gY3JlYXRlQml0
bWFwSW1hZ2VBZnRlclNjYWxpbmdJZk5lZWRlZChJRDJEMUJpdG1hcFJlbmRlclRhcmcKIFJlZlB0
cjxJbWFnZT4gSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OmNvcHlJbWFnZShCYWNraW5nU3Rv
cmVDb3B5IGNvcHlCZWhhdmlvciwgUHJlc2VydmVSZXNvbHV0aW9uIHByZXNlcnZlUmVzb2x1dGlv
bikgY29uc3QKIHsKICAgICBQbGF0Zm9ybUltYWdlUHRyIGltYWdlOwotICAgIGlmIChtX3Jlc29s
dXRpb25TY2FsZSA9PSAxIHx8IHByZXNlcnZlUmVzb2x1dGlvbiA9PSBQcmVzZXJ2ZVJlc29sdXRp
b246OlllcykKKyAgICBpZiAocmVzb2x1dGlvblNjYWxlKCkgPT0gMSB8fCBwcmVzZXJ2ZVJlc29s
dXRpb24gPT0gUHJlc2VydmVSZXNvbHV0aW9uOjpZZXMpCiAgICAgICAgIGltYWdlID0gY29weU5h
dGl2ZUltYWdlKGNvcHlCZWhhdmlvciktPnBsYXRmb3JtSW1hZ2UoKTsKICAgICBlbHNlCiAgICAg
ICAgIGltYWdlID0gY29weU5hdGl2ZUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKS0+cGxhdGZv
cm1JbWFnZSgpOwpAQCAtMjY5LDcgKzI2OSw3IEBAIFBsYXRmb3JtSW1hZ2VQdHIgSW1hZ2VCdWZm
ZXJEaXJlY3QyREJhY2tlbmQ6OmNvbXBhdGlibGVCaXRtYXAoSUQyRDFSZW5kZXJUYXJnZXQqCiB2
b2lkIEltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgZGVz
dENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgRmxvYXRS
ZWN0IGFkanVzdGVkU3JjUmVjdCA9IHNyY1JlY3Q7Ci0gICAgYWRqdXN0ZWRTcmNSZWN0LnNjYWxl
KG1fcmVzb2x1dGlvblNjYWxlLCBtX3Jlc29sdXRpb25TY2FsZSk7CisgICAgYWRqdXN0ZWRTcmNS
ZWN0LnNjYWxlKHJlc29sdXRpb25TY2FsZSgpKTsKIAogICAgIGF1dG8gY29tcGF0aWJsZUJpdG1h
cCA9IGNvbXBhdGlibGVCaXRtYXAoZGVzdENvbnRleHQucGxhdGZvcm1Db250ZXh0KCktPnJlbmRl
clRhcmdldCgpKTsKIApAQCAtMjgzLDcgKzI4Myw3IEBAIHZvaWQgSW1hZ2VCdWZmZXJEaXJlY3Qy
REJhY2tlbmQ6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRS
CiB2b2lkIEltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpkcmF3UGF0dGVybihHcmFwaGljc0Nv
bnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwg
Y29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgRmxvYXRSZWN0IGFkanVzdGVk
U3JjUmVjdCA9IHNyY1JlY3Q7Ci0gICAgYWRqdXN0ZWRTcmNSZWN0LnNjYWxlKG1fcmVzb2x1dGlv
blNjYWxlKTsKKyAgICBhZGp1c3RlZFNyY1JlY3Quc2NhbGUocmVzb2x1dGlvblNjYWxlKCkpOwog
CiAgICAgaWYgKGF1dG8gaW1hZ2UgPSBjb3B5SW1hZ2UoJmRlc3RDb250ZXh0ID09ICZjb250ZXh0
KCkgPyBDb3B5QmFja2luZ1N0b3JlIDogRG9udENvcHlCYWNraW5nU3RvcmUpKQogICAgICAgICBp
bWFnZS0+ZHJhd1BhdHRlcm4oZGVzdENvbnRleHQsIGRlc3RSZWN0LCBhZGp1c3RlZFNyY1JlY3Qs
IHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBvcHRpb25zKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmgKaW5k
ZXggNGQ1ZDAyNTNiYWEzNmU1NDU3ZTQ4MTY0NTM4MjQzN2UzMTlhODU3OC4uZTYxM2FkMDA0YzQ2
M2FlMzNjMzg5NWQwNDgzMTJkM2U0MmU1NzdlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmgKQEAgLTQ5LDEyICs0OSwx
MiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZlcjo6dGVt
cGxhdGUgY3JlYXRlPFJlbW90ZUltYWdlQnVmZmVyPihzaXplLCByZXNvbHV0aW9uU2NhbGUsIGNv
bG9yU3BhY2UsIHBpeGVsRm9ybWF0LCBudWxscHRyLCByZW1vdGVSZW5kZXJpbmdCYWNrZW5kLCBy
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIH0KIAotICAgIFJlbW90ZUltYWdlQnVm
ZmVyKHN0ZDo6dW5pcXVlX3B0cjxCYWNrZW5kVHlwZT4mJiBiYWNrZW5kLCBSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kJiByZW1vdGVSZW5kZXJpbmdCYWNrZW5kLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQotICAgICAgICA6IEJh
c2VDb25jcmV0ZUltYWdlQnVmZmVyKFdURk1vdmUoYmFja2VuZCksIHJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcikKKyAgICBSZW1vdGVJbWFnZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpJbWFnZUJ1
ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIHN0ZDo6dW5pcXVlX3B0cjxCYWNr
ZW5kVHlwZT4mJiBiYWNrZW5kLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kJiByZW1vdGVSZW5kZXJp
bmdCYWNrZW5kLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyKQorICAgICAgICA6IEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyKHBh
cmFtZXRlcnMsIFdURk1vdmUoYmFja2VuZCksIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikK
ICAgICAgICAgLCBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQocmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZCkKICAgICAgICAgLCBtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcihyZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIpCiAgICAgewotICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQu
aW1hZ2VCdWZmZXJCYWNrZW5kV2FzQ3JlYXRlZChtX2JhY2tlbmQtPmxvZ2ljYWxTaXplKCksIG1f
YmFja2VuZC0+YmFja2VuZFNpemUoKSwgbV9iYWNrZW5kLT5yZXNvbHV0aW9uU2NhbGUoKSwgbV9i
YWNrZW5kLT5jb2xvclNwYWNlKCksIG1fYmFja2VuZC0+cGl4ZWxGb3JtYXQoKSwgbV9iYWNrZW5k
LT5jcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUoKSwgcmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyKTsKKyAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmRpZENyZWF0ZUltYWdl
QnVmZmVyQmFja2VuZChtX2JhY2tlbmQtPmNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSgp
LCByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIH0KIAogICAgIH5SZW1vdGVJbWFn
ZUJ1ZmZlcigpCkBAIC02NSwxNyArNjUsNiBAQCBwdWJsaWM6CiAgICAgICAgICAgICBjb250ZXh0
KCkucmVzdG9yZSgpOwogICAgIH0KIAotICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXBsYXlS
ZXN1bHQgc3VibWl0RGlzcGxheUxpc3QoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3Bs
YXlMaXN0JiBkaXNwbGF5TGlzdCkKLSAgICB7Ci0gICAgICAgIGlmIChkaXNwbGF5TGlzdC5pc0Vt
cHR5KCkpCi0gICAgICAgICAgICByZXR1cm4geyB9OwotCi0gICAgICAgIGNvbnN0IGF1dG8mIGlt
YWdlQnVmZmVycyA9IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC5yZW1vdGVSZXNvdXJjZUNhY2hl
KCkuaW1hZ2VCdWZmZXJzKCk7Ci0gICAgICAgIGNvbnN0IGF1dG8mIG5hdGl2ZUltYWdlcyA9IG1f
cmVtb3RlUmVuZGVyaW5nQmFja2VuZC5yZW1vdGVSZXNvdXJjZUNhY2hlKCkubmF0aXZlSW1hZ2Vz
KCk7Ci0gICAgICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXBsYXllciByZXBsYXllciB7IEJh
c2VDb25jcmV0ZUltYWdlQnVmZmVyOjpjb250ZXh0KCksIGRpc3BsYXlMaXN0LCAmaW1hZ2VCdWZm
ZXJzLCAmbmF0aXZlSW1hZ2VzLCB0aGlzIH07Ci0gICAgICAgIHJldHVybiByZXBsYXllci5yZXBs
YXkoKTsKLSAgICB9Ci0KIHByaXZhdGU6CiAgICAgYm9vbCBhcHBseShXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6SXRlbUhhbmRsZSBpdGVtLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmIGNvbnRleHQp
IG92ZXJyaWRlCiAgICAgewpAQCAtMTAxLDYgKzkwLDE3IEBAIHByaXZhdGU6CiAgICAgICAgIHJl
dHVybiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuYXBwbHlNZWRpYUl0ZW0oaXRlbSwgY29udGV4
dCk7CiAgICAgfQogCisgICAgdm9pZCBzdWJtaXREaXNwbGF5TGlzdChjb25zdCBXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0KSBvdmVycmlkZQorICAgIHsKKyAg
ICAgICAgaWYgKGRpc3BsYXlMaXN0LmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybjsKKwor
ICAgICAgICBjb25zdCBhdXRvJiBpbWFnZUJ1ZmZlcnMgPSBtX3JlbW90ZVJlbmRlcmluZ0JhY2tl
bmQucmVtb3RlUmVzb3VyY2VDYWNoZSgpLmltYWdlQnVmZmVycygpOworICAgICAgICBjb25zdCBh
dXRvJiBuYXRpdmVJbWFnZXMgPSBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQucmVtb3RlUmVzb3Vy
Y2VDYWNoZSgpLm5hdGl2ZUltYWdlcygpOworICAgICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
UmVwbGF5ZXIgcmVwbGF5ZXIgeyBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZlcjo6Y29udGV4dCgpLCBk
aXNwbGF5TGlzdCwgJmltYWdlQnVmZmVycywgJm5hdGl2ZUltYWdlcywgdGhpcyB9OworICAgICAg
ICByZXBsYXllci5yZXBsYXkoKTsKKyAgICB9CisKICAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
JiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQ7CiAgICAgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyIG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyOwogfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJp
bmdCYWNrZW5kLmNwcAppbmRleCA2ZGRlYjAyNzkyOWU1MDRmODNiMGExODZjN2VlYWI4ZTViOWQ2
ODcyLi4yMmRhOTk4YmY5OTAyMmI2YzUxY2UyMzgxOWU5ZWNmZGVlZDJhMzdkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRl
cmluZ0JhY2tlbmQuY3BwCkBAIC05OSw5ICs5OSw5IEBAIGJvb2wgUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZDo6YXBwbHlNZWRpYUl0ZW0oRGlzcGxheUxpc3Q6Okl0ZW1IYW5kbGUgaXRlbSwgR3JhcGhp
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6aW1h
Z2VCdWZmZXJCYWNrZW5kV2FzQ3JlYXRlZChjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBj
b25zdCBJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNw
YWNlIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBJbWFnZUJ1ZmZlckJhY2tl
bmRIYW5kbGUgaGFuZGxlLCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyKQordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpkaWRDcmVhdGVJ
bWFnZUJ1ZmZlckJhY2tlbmQoSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGhhbmRsZSwgUmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKIHsKLSAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OkltYWdlQnVmZmVy
QmFja2VuZFdhc0NyZWF0ZWQobG9naWNhbFNpemUsIGJhY2tlbmRTaXplLCByZXNvbHV0aW9uU2Nh
bGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0LCBXVEZNb3ZlKGhhbmRsZSksIHJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllciksIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOworICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6RGlkQ3JlYXRlSW1hZ2VC
dWZmZXJCYWNrZW5kKFdURk1vdmUoaGFuZGxlKSwgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
KSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7CiB9CiAKIHZvaWQgUmVtb3RlUmVuZGVy
aW5nQmFja2VuZDo6ZGlkRmx1c2goRGlzcGxheUxpc3Q6OkZsdXNoSWRlbnRpZmllciBmbHVzaElk
ZW50aWZpZXIsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIpCkBAIC0xNDgsMTAgKzE0OCw3IEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZDo6YXBwbHlEaXNwbGF5TGlzdHNGcm9tSGFuZGxlKEltYWdlQnVmZmVyJiBkZXN0aW5hdGlvCiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoZGVzdGluYXRpb24u
aXNBY2NlbGVyYXRlZCgpKQotICAgICAgICAgICAgc3RhdGljX2Nhc3Q8QWNjZWxlcmF0ZWRSZW1v
dGVJbWFnZUJ1ZmZlciY+KGRlc3RpbmF0aW9uKS5zdWJtaXREaXNwbGF5TGlzdCgqZGlzcGxheUxp
c3QpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBzdGF0aWNfY2FzdDxVbmFjY2VsZXJhdGVk
UmVtb3RlSW1hZ2VCdWZmZXImPihkZXN0aW5hdGlvbikuc3VibWl0RGlzcGxheUxpc3QoKmRpc3Bs
YXlMaXN0KTsKKyAgICAgICAgZGVzdGluYXRpb24uc3VibWl0RGlzcGxheUxpc3QoKmRpc3BsYXlM
aXN0KTsKIAogICAgICAgICBDaGVja2VkU2l6ZSBjaGVja2VkT2Zmc2V0ID0gb2Zmc2V0OwogICAg
ICAgICBjaGVja2VkT2Zmc2V0ICs9IHNpemVUb1JlYWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaAppbmRl
eCA2NDA2NjY4ZmFlMDUwNTdlOWRmMzI2NGY1NzUyNDk0ODlkNzA1Yzc4Li41OTE5ZTk1NjRmNjYz
ZGYzOWZmYjNjMTViMTVhM2I4YzMyMzBmNWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKQEAgLTcw
LDcgKzcwLDcgQEAgcHVibGljOgogICAgIGJvb2wgYXBwbHlNZWRpYUl0ZW0oV2ViQ29yZTo6RGlz
cGxheUxpc3Q6Okl0ZW1IYW5kbGUsIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYpOwogCiAgICAg
Ly8gTWVzc2FnZXMgdG8gYmUgc2VudC4KLSAgICB2b2lkIGltYWdlQnVmZmVyQmFja2VuZFdhc0Ny
ZWF0ZWQoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgV2ViQ29y
ZTo6SW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6
Q29sb3JTcGFjZSwgV2ViQ29yZTo6UGl4ZWxGb3JtYXQsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRs
ZSwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICB2b2lkIGRpZENy
ZWF0ZUltYWdlQnVmZmVyQmFja2VuZChJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUsIFdlYkNvcmU6
OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAgdm9pZCBkaWRGbHVzaChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6Rmx1c2hJZGVudGlmaWVyLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIpOwogCiAgICAgdm9pZCBzZXROZXh0SXRlbUJ1ZmZlclRvUmVhZChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1t
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2lu
Z1N0b3JlLm1tCmluZGV4IGVmOTRjNmIwMjA1MDQzZDM3MWJmMGY5Njk2YzhkOGNhNjM2YzAxMjUu
LmM1ZTYxMmMwN2YxZDI0ZWFiNDQ3YWRkOWRhMWE2NzQ0ZDgzOGQ0YjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9y
ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5
ZXJCYWNraW5nU3RvcmUubW0KQEAgLTMxNSw4ICszMTUsNyBAQCBib29sIFJlbW90ZUxheWVyQmFj
a2luZ1N0b3JlOjpkaXNwbGF5KCkKIAogICAgIG1fbGF5ZXItPm93bmVyKCktPnBsYXRmb3JtQ0FM
YXllckxheWVyRGlkRGlzcGxheShtX2xheWVyKTsKIAotICAgIC8vIEZJWE1FOiBUaGlzIG1ldGhv
ZCBoYXMgYSB3ZWlyZCBuYW1lLiBUaGlzIGlzICJzdWJtaXQgd29yayIuCi0gICAgbV9mcm9udEJ1
ZmZlci5pbWFnZUJ1ZmZlci0+Zmx1c2hEcmF3aW5nQ29udGV4dEFuZENvbW1pdCgpOworICAgIG1f
ZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXItPmNvbW1pdERyYXdpbmdDb250ZXh0KCk7CiAKICAgICBt
X2Zyb250QnVmZmVyRmx1c2hlciA9IG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXItPmNyZWF0ZUZs
dXNoZXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tl
bmQuY3BwCmluZGV4IDg1NWM4OTQ5NjZjNTg3YmIwZTZhZWM1MTE5ZGU0Yjk0NDUwODdkNGIuLjRj
OTY0MmMzMWQ3Mzk3MWJkN2FmNDViZjU1NTJlYmYxZmUzYzQ3MTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRt
YXBCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHAKQEAgLTQzLDE3ICs0MywxNyBA
QCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBM
KEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZCk7CiAKLXN0ZDo6dW5pcXVlX3B0cjxJ
bWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ+IEltYWdlQnVmZmVyU2hhcmVhYmxlQml0
bWFwQmFja2VuZDo6Y3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlv
blNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBj
b25zdCBIb3N0V2luZG93KikKK3N0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlclNoYXJlYWJsZUJp
dG1hcEJhY2tlbmQ+IEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6Y3JlYXRlKGNv
bnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIGNvbnN0IEhvc3RXaW5kb3cqKQogewotICAgIEFT
U0VSVChwaXhlbEZvcm1hdCA9PSBQaXhlbEZvcm1hdDo6QkdSQTgpOworICAgIEFTU0VSVChwYXJh
bWV0ZXJzLnBpeGVsRm9ybWF0ID09IFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAKLSAgICBJbnRTaXpl
IGJhY2tlbmRTaXplID0gY2FsY3VsYXRlQmFja2VuZFNpemUoc2l6ZSwgcmVzb2x1dGlvblNjYWxl
KTsKKyAgICBJbnRTaXplIGJhY2tlbmRTaXplID0gY2FsY3VsYXRlQmFja2VuZFNpemUocGFyYW1l
dGVycy5sb2dpY2FsU2l6ZSwgcGFyYW1ldGVycy5yZXNvbHV0aW9uU2NhbGUpOwogICAgIGlmIChi
YWNrZW5kU2l6ZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgU2hh
cmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb247CiAjaWYgUExBVEZPUk0o
Q09DT0EpCi0gICAgY29uZmlndXJhdGlvbi5jb2xvclNwYWNlID0geyBjYWNoZWRDR0NvbG9yU3Bh
Y2UoY29sb3JTcGFjZSkgfTsKKyAgICBjb25maWd1cmF0aW9uLmNvbG9yU3BhY2UgPSB7IGNhY2hl
ZENHQ29sb3JTcGFjZShwYXJhbWV0ZXJzLmNvbG9yU3BhY2UpIH07CiAjZW5kaWYKICAgICBhdXRv
IGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKGJhY2tlbmRTaXplLCBj
b25maWd1cmF0aW9uKTsKICAgICBpZiAoIWJpdG1hcCkKQEAgLTYzLDEwICs2MywxMCBAQCBzdGQ6
OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kPiBJbWFnZUJ1ZmZl
clNoYXJlYWJsZUJpdG1hcEJhYwogICAgIGlmICghY29udGV4dCkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKLSAgICByZXR1cm4gbWFrZVVuaXF1ZTxJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1h
cEJhY2tlbmQ+KHNpemUsIGJhY2tlbmRTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2Us
IHBpeGVsRm9ybWF0LCBXVEZNb3ZlKGJpdG1hcCksIFdURk1vdmUoY29udGV4dCkpOworICAgIHJl
dHVybiBtYWtlVW5pcXVlPEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZD4ocGFyYW1l
dGVycywgV1RGTW92ZShiaXRtYXApLCBXVEZNb3ZlKGNvbnRleHQpKTsKIH0KIAotc3RkOjp1bmlx
dWVfcHRyPEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZD4gSW1hZ2VCdWZmZXJTaGFy
ZWFibGVCaXRtYXBCYWNrZW5kOjpjcmVhdGUoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwg
Y29uc3QgSW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JT
cGFjZSBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgSW1hZ2VCdWZmZXJCYWNr
ZW5kSGFuZGxlIGhhbmRsZSkKK3N0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlclNoYXJlYWJsZUJp
dG1hcEJhY2tlbmQ+IEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6Y3JlYXRlKGNv
bnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBoYW5k
bGUpCiB7CiAgICAgaWYgKCFXVEY6OmhvbGRzX2FsdGVybmF0aXZlPFNoYXJlYWJsZUJpdG1hcDo6
SGFuZGxlPihoYW5kbGUpKSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtODEs
MTEgKzgxLDExIEBAIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJh
Y2tlbmQ+IEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFjCiAgICAgaWYgKCFjb250ZXh0KQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBtYWtlVW5pcXVlPEltYWdlQnVm
ZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZD4obG9naWNhbFNpemUsIGJhY2tlbmRTaXplLCByZXNv
bHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0LCBXVEZNb3ZlKGJpdG1hcCksIFdU
Rk1vdmUoY29udGV4dCkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEltYWdlQnVmZmVyU2hhcmVh
YmxlQml0bWFwQmFja2VuZD4ocGFyYW1ldGVycywgV1RGTW92ZShiaXRtYXApLCBXVEZNb3ZlKGNv
bnRleHQpKTsKIH0KIAotSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpJbWFnZUJ1
ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwg
Y29uc3QgSW50U2l6ZSYgcGh5c2ljYWxTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9y
U3BhY2UgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIFJlZlB0cjxTaGFyZWFi
bGVCaXRtYXA+JiYgYml0bWFwLCBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NDb250ZXh0PiYmIGNv
bnRleHQpCi0gICAgOiBQbGF0Zm9ybUltYWdlQnVmZmVyQmFja2VuZChsb2dpY2FsU2l6ZSwgcGh5
c2ljYWxTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0KQorSW1h
Z2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1h
cEJhY2tlbmQoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycywgUmVmUHRyPFNoYXJlYWJsZUJp
dG1hcD4mJiBiaXRtYXAsIHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0NvbnRleHQ+JiYgY29udGV4
dCkKKyAgICA6IFBsYXRmb3JtSW1hZ2VCdWZmZXJCYWNrZW5kKHBhcmFtZXRlcnMpCiAgICAgLCBt
X2JpdG1hcChXVEZNb3ZlKGJpdG1hcCkpCiAgICAgLCBtX2NvbnRleHQoV1RGTW92ZShjb250ZXh0
KSkKIHsKQEAgLTk4LDYgKzk4LDExIEBAIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBJbWFnZUJ1
ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmNyZWF0ZUltYWdlQnVmZmVyQmFjCiAgICAgcmV0
dXJuIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZShXVEZNb3ZlKGhhbmRsZSkpOwogfQogCitJbnRT
aXplIEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6YmFja2VuZFNpemUoKSBjb25z
dAoreworICAgIHJldHVybiBtX2JpdG1hcC0+c2l6ZSgpOworfQorCiBSZWZQdHI8TmF0aXZlSW1h
Z2U+IEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6Y29weU5hdGl2ZUltYWdlKEJh
Y2tpbmdTdG9yZUNvcHkpIGNvbnN0CiB7CiAjaWYgVVNFKENHKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1h
cEJhY2tlbmQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VC
dWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmgKaW5kZXggMGM3ZjA0N2Y4ODM1ZTRiOGQ2M2Mx
NWY0MWVjOTIxMDJlNDU4NTM5OS4uNTU1MDZhNDlkMDNlMzllODhlMDM2MWU0OTE1NWYxMzFkNzk5
MDEwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9J
bWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5o
CkBAIC00MywxNCArNDMsMTYgQEAgY2xhc3MgSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNr
ZW5kIDogcHVibGljIFdlYkNvcmU6OlBsYXRmb3JtSW1hZ2VCdWZmZXJCYWMKICAgICBXVEZfTUFL
RV9JU09fQUxMT0NBVEVEKEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZCk7CiAgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kKTsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyU2hhcmVhYmxl
Qml0bWFwQmFja2VuZD4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbG9naWNhbFNp
emUsIGNvbnN0IGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSwgV2Vi
Q29yZTo6UGl4ZWxGb3JtYXQsIGNvbnN0IFdlYkNvcmU6Okhvc3RXaW5kb3cqKTsKLSAgICBzdGF0
aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZD4gY3Jl
YXRlKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IFdlYkNvcmU6
OkludFNpemUmIGludGVybmFsU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpD
b2xvclNwYWNlLCBXZWJDb3JlOjpQaXhlbEZvcm1hdCwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxl
KTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFw
QmFja2VuZD4gY3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmLCBjb25zdCBXZWJDb3JlOjpIb3N0V2lu
ZG93Kik7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlclNoYXJlYWJsZUJp
dG1hcEJhY2tlbmQ+IGNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiwgSW1hZ2VCdWZmZXJCYWNrZW5k
SGFuZGxlKTsKIAotICAgIEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZChjb25zdCBX
ZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBw
aHlzaWNhbFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSwg
V2ViQ29yZTo6UGl4ZWxGb3JtYXQsIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+JiYsIHN0ZDo6dW5p
cXVlX3B0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ+JiYpOworICAgIEltYWdlQnVmZmVyU2hh
cmVhYmxlQml0bWFwQmFja2VuZChjb25zdCBQYXJhbWV0ZXJzJiwgUmVmUHRyPFNoYXJlYWJsZUJp
dG1hcD4mJiwgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dD4mJik7CiAK
ICAgICBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgY3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFu
ZGxlKCkgY29uc3Q7CiAKICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmIGNvbnRleHQoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiAqbV9jb250ZXh0OyB9CisgICAgCisgICAgV2ViQ29yZTo6
SW50U2l6ZSBiYWNrZW5kU2l6ZSgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgUmVmUHRyPFdlYkNv
cmU6Ok5hdGl2ZUltYWdlPiBjb3B5TmF0aXZlSW1hZ2UoV2ViQ29yZTo6QmFja2luZ1N0b3JlQ29w
eSA9IFdlYkNvcmU6OkNvcHlCYWNraW5nU3RvcmUpIGNvbnN0IG92ZXJyaWRlOwogICAgIFJlZlB0
cjxXZWJDb3JlOjpJbWFnZT4gY29weUltYWdlKFdlYkNvcmU6OkJhY2tpbmdTdG9yZUNvcHkgPSBX
ZWJDb3JlOjpDb3B5QmFja2luZ1N0b3JlLCBXZWJDb3JlOjpQcmVzZXJ2ZVJlc29sdXRpb24gPSBX
ZWJDb3JlOjpQcmVzZXJ2ZVJlc29sdXRpb246Ok5vKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUGxhdGZvcm1SZW1vdGVJ
bWFnZUJ1ZmZlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1BsYXRmb3JtUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCmluZGV4IDA1MTc2NzgzZDU1MzFiZmU3
MGY4NTBiZjJjMTQ5Zjc4ODIyZDBlMzkuLjlhZmYwODhlMzdjYTc2YTdmODY0YWU3ZTQyYmJiNzAw
NGYxZjE1MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUGxhdGZvcm1SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9QbGF0Zm9ybVJlbW90ZUltYWdlQnVmZmVyUHJveHkuaApA
QCAtMzcsMTQgKzM3LDQgQEAgdXNpbmcgQWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlclByb3h5
ID0gUmVtb3RlSW1hZ2VCdWZmZXJQcm94eTxBY2NlbGVyYXRlZEltYWcKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CiAKLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViS2l0OjpVbmFjY2Vs
ZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXJQcm94eSkKLSAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29u
c3QgV2ViQ29yZTo6SW1hZ2VCdWZmZXImIGltYWdlQnVmZmVyKSB7IHJldHVybiBpbWFnZUJ1ZmZl
ci5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSAmJiAhaW1hZ2VCdWZmZXIuaXNBY2NlbGVy
YXRlZCgpOyB9Ci1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCi0KLSNpZiBIQVZFKElPU1VS
RkFDRSkKLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViS2l0OjpBY2NlbGVyYXRlZFJl
bW90ZUltYWdlQnVmZmVyUHJveHkpCi0gICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNv
cmU6OkltYWdlQnVmZmVyJiBpbWFnZUJ1ZmZlcikgeyByZXR1cm4gaW1hZ2VCdWZmZXIucmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyKCkgJiYgaW1hZ2VCdWZmZXIuaXNBY2NlbGVyYXRlZCgpOyB9
Ci1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCi0jZW5kaWYKLQogI2VuZGlmIC8vIEVOQUJM
RShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgKaW5kZXggNTFiZDU3MTI5
NThhZjEyYTIzMTVkNDFiYTNkMmQ2YjllZDU3ZjJiYS4uYWFlZjAxMDExMjA1M2YxMTFlMjdjMGQ3
MzRiNDE3NzVkODVmYWIzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgKQEAgLTUwLDE0
ICs1MCwxNiBAQCBjbGFzcyBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5IDogcHVibGljIFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpJbWFnZUJ1ZmZlcjxCYWNrZW5kVAogICAgIHVzaW5nIEJhc2VEaXNwbGF5
TGlzdEltYWdlQnVmZmVyOjptX2JhY2tlbmQ7CiAgICAgdXNpbmcgQmFzZURpc3BsYXlMaXN0SW1h
Z2VCdWZmZXI6Om1fZHJhd2luZ0NvbnRleHQ7CiAgICAgdXNpbmcgQmFzZURpc3BsYXlMaXN0SW1h
Z2VCdWZmZXI6Om1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyOworICAgIHVzaW5nIEJhc2VE
aXNwbGF5TGlzdEltYWdlQnVmZmVyOjpyZXNvbHV0aW9uU2NhbGU7CiAKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUmVmUHRyPFJlbW90ZUltYWdlQnVmZmVyUHJveHk+IGNyZWF0ZShjb25zdCBXZWJDb3Jl
OjpGbG9hdFNpemUmIHNpemUsIFdlYkNvcmU6OlJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwg
ZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFdl
YkNvcmU6OlBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHkmIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKKyAgICBzdGF0aWMgUmVmUHRyPFJlbW90
ZUltYWdlQnVmZmVyUHJveHk+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHNpemUs
IGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSBjb2xvclNwYWNlLCBX
ZWJDb3JlOjpQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5JiByZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpCiAgICAgewogICAgICAgICBpZiAoQmFj
a2VuZFR5cGU6OmNhbGN1bGF0ZUJhY2tlbmRTaXplKHNpemUsIHJlc29sdXRpb25TY2FsZSkuaXNF
bXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5KHNpemUsIHJlbmRlcmluZ01vZGUsIHJl
c29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQsIHJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eSkpOworICAgICAgICBhdXRvIHBhcmFtZXRlcnMgPSBXZWJDb3JlOjpJbWFnZUJ1
ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnMgeyBzaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3Bh
Y2UsIHBpeGVsRm9ybWF0IH07CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgUmVtb3RlSW1h
Z2VCdWZmZXJQcm94eShwYXJhbWV0ZXJzLCByZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpKTsK
ICAgICB9CiAKICAgICB+UmVtb3RlSW1hZ2VCdWZmZXJQcm94eSgpCkBAIC02OSwyNyArNzEsNiBA
QCBwdWJsaWM6CiAgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT5yZWxlYXNl
UmVtb3RlUmVzb3VyY2UobV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIH0KIAot
ICAgIHZvaWQgY2xlYXJCYWNrZW5kKCkgeyBtX2JhY2tlbmQgPSBudWxscHRyOyB9Ci0KLSAgICB2
b2lkIGNyZWF0ZUJhY2tlbmQoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwg
Y29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2Fs
ZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSBjb2xvclNwYWNlLCBXZWJDb3JlOjpQaXhlbEZvcm1hdCBw
aXhlbEZvcm1hdCwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGhhbmRsZSkKLSAgICB7Ci0gICAg
ICAgIEFTU0VSVCghbV9iYWNrZW5kKTsKLSAgICAgICAgbV9iYWNrZW5kID0gQmFja2VuZFR5cGU6
OmNyZWF0ZShsb2dpY2FsU2l6ZSwgYmFja2VuZFNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JT
cGFjZSwgcGl4ZWxGb3JtYXQsIFdURk1vdmUoaGFuZGxlKSk7Ci0gICAgfQotCi0gICAgdm9pZCBk
aWRGbHVzaChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Rmx1c2hJZGVudGlmaWVyIGZsdXNoSWRlbnRp
ZmllcikKLSAgICB7Ci0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9yZWNlaXZlZEZs
dXNoSWRlbnRpZmllckxvY2spOwotICAgICAgICBtX3JlY2VpdmVkRmx1c2hJZGVudGlmaWVyID0g
Zmx1c2hJZGVudGlmaWVyOwotICAgICAgICBtX3JlY2VpdmVkRmx1c2hJZGVudGlmaWVyQ2hhbmdl
ZENvbmRpdGlvbi5ub3RpZnlBbGwoKTsKLSAgICB9Ci0KLSAgICBjb25zdCBXZWJDb3JlOjpGbG9h
dFNpemUmIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KLSAgICBXZWJDb3JlOjpSZW5k
ZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlcmluZ01vZGU7
IH0KLSAgICBmbG9hdCByZXNvbHV0aW9uU2NhbGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Jl
c29sdXRpb25TY2FsZTsgfQotICAgIFdlYkNvcmU6OkNvbG9yU3BhY2UgY29sb3JTcGFjZSgpIGNv
bnN0IHsgcmV0dXJuIG1fY29sb3JTcGFjZTsgfQotICAgIFdlYkNvcmU6OlBpeGVsRm9ybWF0IHBp
eGVsRm9ybWF0KCkgY29uc3QgeyByZXR1cm4gbV9waXhlbEZvcm1hdDsgfQotCiAgICAgSW1hZ2VC
dWZmZXJCYWNrZW5kSGFuZGxlIGNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSgpCiAgICAg
ewogICAgICAgICBlbnN1cmVCYWNrZW5kQ3JlYXRlZCgpOwpAQCAtMTEyLDE1ICs5Myw5IEBAIHB1
YmxpYzoKICAgICB9CiAKIHByb3RlY3RlZDoKLSAgICBmcmllbmQgY2xhc3MgUmVtb3RlUmVuZGVy
aW5nQmFja2VuZDsKLSAgICBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5KGNvbnN0IFdlYkNvcmU6OkZs
b2F0U2l6ZSYgc2l6ZSwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBmbG9h
dCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgV2ViQ29y
ZTo6UGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSYg
cmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KQotICAgICAgICA6IEJhc2VEaXNwbGF5TGlzdElt
YWdlQnVmZmVyKHNpemUsIHRoaXMpCisgICAgUmVtb3RlSW1hZ2VCdWZmZXJQcm94eShjb25zdCBX
ZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIFJlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSYgcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KQorICAg
ICAgICA6IEJhc2VEaXNwbGF5TGlzdEltYWdlQnVmZmVyKHBhcmFtZXRlcnMsIHRoaXMpCiAgICAg
ICAgICwgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkobWFrZVdlYWtQdHIocmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5KSkKLSAgICAgICAgLCBtX3NpemUoc2l6ZSkKLSAgICAgICAgLCBt
X3JlbmRlcmluZ01vZGUocmVuZGVyaW5nTW9kZSkKLSAgICAgICAgLCBtX3Jlc29sdXRpb25TY2Fs
ZShyZXNvbHV0aW9uU2NhbGUpCi0gICAgICAgICwgbV9jb2xvclNwYWNlKGNvbG9yU3BhY2UpCi0g
ICAgICAgICwgbV9waXhlbEZvcm1hdChwaXhlbEZvcm1hdCkKICAgICB7CiAgICAgICAgIEFTU0VS
VChtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSk7CiAgICAgICAgIG1fcmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5LT5yZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkoKS5jYWNoZUltYWdlQnVm
ZmVyKCp0aGlzKTsKQEAgLTEzMSw2ICsxMDYsMTMgQEAgcHJvdGVjdGVkOgogCiAgICAgYm9vbCBo
YXNQZW5kaW5nRmx1c2goKSBjb25zdCB7IHJldHVybiBtX3NlbnRGbHVzaElkZW50aWZpZXIgIT0g
bV9yZWNlaXZlZEZsdXNoSWRlbnRpZmllcjsgfQogCisgICAgdm9pZCBkaWRGbHVzaChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6Rmx1c2hJZGVudGlmaWVyIGZsdXNoSWRlbnRpZmllcikgb3ZlcnJpZGUK
KyAgICB7CisgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9yZWNlaXZlZEZsdXNoSWRl
bnRpZmllckxvY2spOworICAgICAgICBtX3JlY2VpdmVkRmx1c2hJZGVudGlmaWVyID0gZmx1c2hJ
ZGVudGlmaWVyOworICAgICAgICBtX3JlY2VpdmVkRmx1c2hJZGVudGlmaWVyQ2hhbmdlZENvbmRp
dGlvbi5ub3RpZnlBbGwoKTsKKyAgICB9CisKICAgICB2b2lkIHdhaXRGb3JEaWRGbHVzaFdpdGhU
aW1lb3V0KCkKICAgICB7CiAgICAgICAgIGlmICghbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHkpCkBAIC0xNDUsNyArMTI3LDcgQEAgcHJvdGVjdGVkOgogICAgIEJhY2tlbmRUeXBlKiBlbnN1
cmVCYWNrZW5kQ3JlYXRlZCgpIGNvbnN0IG92ZXJyaWRlCiAgICAgewogICAgICAgICBpZiAoIW1f
YmFja2VuZCAmJiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKLSAgICAgICAgICAgIG1f
cmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT53YWl0Rm9ySW1hZ2VCdWZmZXJCYWNrZW5kV2Fz
Q3JlYXRlZCgpOworICAgICAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHktPndh
aXRGb3JEaWRDcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQoKTsKICAgICAgICAgcmV0dXJuIG1fYmFj
a2VuZC5nZXQoKTsKICAgICB9CiAKQEAgLTE2OSw4ICsxNTEsOCBAQCBwcm90ZWN0ZWQ6CiAgICAg
dm9pZCBwdXRJbWFnZURhdGEoV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBpbnB1dEZv
cm1hdCwgY29uc3QgV2ViQ29yZTo6SW1hZ2VEYXRhJiBpbWFnZURhdGEsIGNvbnN0IFdlYkNvcmU6
OkludFJlY3QmIHNyY1JlY3QsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBkZXN0UG9pbnQgPSB7
IH0sIFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb24gZGVzdEZvcm1hdCA9IFdlYkNvcmU6
OkFscGhhUHJlbXVsdGlwbGljYXRpb246OlByZW11bHRpcGxpZWQpIG92ZXJyaWRlCiAgICAgewog
ICAgICAgICAvLyBUaGUgbWF0aCBpbnNpZGUgSW1hZ2VEYXRhOjpjcmVhdGUoKSBkb2Vzbid0IGFn
cmVlIHdpdGggdGhlIG1hdGggaW5zaWRlIEltYWdlQnVmZmVyQmFja2VuZDo6cHV0SW1hZ2VEYXRh
KCkgYWJvdXQgaG93IG1fcmVzb2x1dGlvblNjYWxlIGludGVyYWN0cyB3aXRoIHRoZSBkYXRhIGlu
IHRoZSBJbWFnZUJ1ZmZlci4KLSAgICAgICAgLy8gVGhpcyBtZWFucyB0aGF0IHB1dEltYWdlRGF0
YSgpIGlzIG9ubHkgY2FsbGVkIHdoZW4gbV9yZXNvbHV0aW9uU2NhbGUgPT0gMS4KLSAgICAgICAg
QVNTRVJUX0lNUExJRVMobV9iYWNrZW5kLCBtX2JhY2tlbmQtPnJlc29sdXRpb25TY2FsZSgpID09
IDEpOworICAgICAgICAvLyBUaGlzIG1lYW5zIHRoYXQgcHV0SW1hZ2VEYXRhKCkgaXMgb25seSBj
YWxsZWQgd2hlbiByZXNvbHV0aW9uU2NhbGUoKSA9PSAxLgorICAgICAgICBBU1NFUlQocmVzb2x1
dGlvblNjYWxlKCkgPT0gMSk7CiAgICAgICAgIG1fZHJhd2luZ0NvbnRleHQucmVjb3JkZXIoKS5w
dXRJbWFnZURhdGEoaW5wdXRGb3JtYXQsIGltYWdlRGF0YSwgc3JjUmVjdCwgZGVzdFBvaW50LCBk
ZXN0Rm9ybWF0KTsKICAgICB9CiAKQEAgLTE4NSwxMSArMTY3LDExIEBAIHByb3RlY3RlZDoKICAg
ICB2b2lkIGZsdXNoRHJhd2luZ0NvbnRleHQoKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgVHJh
Y2VTY29wZSB0cmFjaW5nU2NvcGUoRmx1c2hSZW1vdGVJbWFnZUJ1ZmZlclN0YXJ0LCBGbHVzaFJl
bW90ZUltYWdlQnVmZmVyRW5kKTsKLSAgICAgICAgZmx1c2hEcmF3aW5nQ29udGV4dEFuZENvbW1p
dCgpOworICAgICAgICBjb21taXREcmF3aW5nQ29udGV4dCgpOwogICAgICAgICB3YWl0Rm9yRGlk
Rmx1c2hXaXRoVGltZW91dCgpOwogICAgIH0KIAotICAgIHZvaWQgZmx1c2hEcmF3aW5nQ29udGV4
dEFuZENvbW1pdCgpIG92ZXJyaWRlCisgICAgdm9pZCBjb21taXREcmF3aW5nQ29udGV4dCgpIG92
ZXJyaWRlCiAgICAgewogICAgICAgICBpZiAoIW1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
KQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjAwLDEyICsxODIsMTIgQEAgcHJvdGVjdGVkOgog
CiAgICAgICAgIG1fc2VudEZsdXNoSWRlbnRpZmllciA9IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpG
bHVzaElkZW50aWZpZXI6OmdlbmVyYXRlKCk7CiAgICAgICAgIGRpc3BsYXlMaXN0LnRlbXBsYXRl
IGFwcGVuZDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Rmx1c2hDb250ZXh0PihtX3NlbnRGbHVzaElk
ZW50aWZpZXIpOwotICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+c3VibWl0
RGlzcGxheUxpc3QoZGlzcGxheUxpc3QsIG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsK
LSAgICAgICAgbV9pdGVtQ291bnRJbkN1cnJlbnREaXNwbGF5TGlzdCA9IDA7CisgICAgICAgIHN1
Ym1pdERpc3BsYXlMaXN0KGRpc3BsYXlMaXN0KTsKICAgICAgICAgZGlzcGxheUxpc3QuY2xlYXIo
KTsKKyAgICAgICAgbV9pdGVtQ291bnRJbkN1cnJlbnREaXNwbGF5TGlzdCA9IDA7CiAgICAgfQog
Ci0gICAgdm9pZCBzdWJtaXREaXNwbGF5TGlzdChjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
RGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0KQorICAgIHZvaWQgc3VibWl0RGlzcGxheUxpc3QoY29u
c3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCkgb3ZlcnJp
ZGUKICAgICB7CiAgICAgICAgIGlmICghbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkgfHwg
ZGlzcGxheUxpc3QuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzUzLDExICsz
MzUsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZsdXNoSWRlbnRp
ZmllciBtX3JlY2VpdmVkRmx1c2hJZGVudGlmaWVyOwogICAgIFdlYWtQdHI8UmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5PiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTsKICAgICBzaXpl
X3QgbV9pdGVtQ291bnRJbkN1cnJlbnREaXNwbGF5TGlzdCB7IDAgfTsKLSAgICBXZWJDb3JlOjpG
bG9hdFNpemUgbV9zaXplOwotICAgIFdlYkNvcmU6OlJlbmRlcmluZ01vZGUgbV9yZW5kZXJpbmdN
b2RlOwotICAgIGZsb2F0IG1fcmVzb2x1dGlvblNjYWxlOwotICAgIFdlYkNvcmU6OkNvbG9yU3Bh
Y2UgbV9jb2xvclNwYWNlOwotICAgIFdlYkNvcmU6OlBpeGVsRm9ybWF0IG1fcGl4ZWxGb3JtYXQ7
CiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBCYWNrZW5kVHlwZT4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5LmNwcAppbmRleCBjMDdiMjNmYjJiMGU1OGUwZTFkZmY1YTE0ZWUw
YTg1ZDlhNWI2NDVkLi4zZDZmZmM0ODAxMmYzMmM5NzZmN2Y5OTIxNDgwMDUwMzVjMDA2OGQ5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwCkBAIC03MCwyNCArNzAs
MTUgQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmNvbm5lY3RUb0dQVVByb2Nl
c3MoKQogICAgIHNlbmQoTWVzc2FnZXM6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNyZWF0
ZVJlbmRlcmluZ0JhY2tlbmQobV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciksIDApOwogfQog
Ci10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RhdGljIHZvaWQgcmVjcmVhdGVJbWFnZUJ1ZmZlcihS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkmIHByb3h5LCBUJiBpbWFnZUJ1ZmZlciwgUmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlc291cmNlSWRlbnRpZmllciwgUmVuZGVyaW5nQmFja2Vu
ZElkZW50aWZpZXIgcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpCi17Ci0gICAgaW1hZ2VCdWZm
ZXIuY2xlYXJCYWNrZW5kKCk7Ci0gICAgcHJveHkuc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVy
aW5nQmFja2VuZDo6Q3JlYXRlSW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIuc2l6ZSgpLCBpbWFnZUJ1
ZmZlci5yZW5kZXJpbmdNb2RlKCksIGltYWdlQnVmZmVyLnJlc29sdXRpb25TY2FsZSgpLCBpbWFn
ZUJ1ZmZlci5jb2xvclNwYWNlKCksIGltYWdlQnVmZmVyLnBpeGVsRm9ybWF0KCksIHJlc291cmNl
SWRlbnRpZmllciksIHJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKLX0KLQogdm9pZCBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OnJlZXN0YWJsaXNoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24o
KQogewogICAgIGNvbm5lY3RUb0dQVVByb2Nlc3MoKTsKIAotICAgIGZvciAoYXV0byYgcGFpciA6
IG1fcmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmltYWdlQnVmZmVycygpKSB7Ci0gICAgICAgIGlm
IChhdXRvJiBiYXNlSW1hZ2VCdWZmZXIgPSBwYWlyLnZhbHVlKSB7Ci0gICAgICAgICAgICBpZiAo
aXM8QWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlclByb3h5PigqYmFzZUltYWdlQnVmZmVyKSkK
LSAgICAgICAgICAgICAgICByZWNyZWF0ZUltYWdlQnVmZmVyKCp0aGlzLCBkb3duY2FzdDxBY2Nl
bGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyUHJveHk+KCpiYXNlSW1hZ2VCdWZmZXIpLCBwYWlyLmtl
eSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7Ci0gICAgICAgICAgICBlbHNlCi0gICAg
ICAgICAgICAgICAgcmVjcmVhdGVJbWFnZUJ1ZmZlcigqdGhpcywgZG93bmNhc3Q8VW5hY2NlbGVy
YXRlZFJlbW90ZUltYWdlQnVmZmVyUHJveHk+KCpiYXNlSW1hZ2VCdWZmZXIpLCBwYWlyLmtleSwg
bV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7Ci0gICAgICAgIH0KKyAgICBmb3IgKGF1dG8m
IGltYWdlQnVmZmVyIDogbV9yZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuaW1hZ2VCdWZmZXJzKCku
dmFsdWVzKCkpIHsKKyAgICAgICAgaWYgKCFpbWFnZUJ1ZmZlcikKKyAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpDcmVh
dGVJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlci0+bG9naWNhbFNpemUoKSwgaW1hZ2VCdWZmZXItPnJl
bmRlcmluZ01vZGUoKSwgaW1hZ2VCdWZmZXItPnJlc29sdXRpb25TY2FsZSgpLCBpbWFnZUJ1ZmZl
ci0+Y29sb3JTcGFjZSgpLCBpbWFnZUJ1ZmZlci0+cGl4ZWxGb3JtYXQoKSwgaW1hZ2VCdWZmZXIt
PnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpKSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRp
Zmllcik7CisgICAgICAgIGltYWdlQnVmZmVyLT5jbGVhckJhY2tlbmQoKTsKICAgICB9CiB9CiAK
QEAgLTExMiwxMCArMTAzLDEwIEBAIHVpbnQ2NF90IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eTo6bWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdAogICAgIHJldHVybiBtX3JlbmRl
cmluZ0JhY2tlbmRJZGVudGlmaWVyLnRvVUludDY0KCk7CiB9CiAKLWJvb2wgUmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5Ojp3YWl0Rm9ySW1hZ2VCdWZmZXJCYWNrZW5kV2FzQ3JlYXRlZCgpCiti
b29sIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6d2FpdEZvckRpZENyZWF0ZUltYWdlQnVm
ZmVyQmFja2VuZCgpCiB7CiAgICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gY29ubmVjdGlvbiA9IFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVj
dGlvbigpOwotICAgIHJldHVybiBjb25uZWN0aW9uLT53YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlh
dGVseTxNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpJbWFnZUJ1ZmZlckJh
Y2tlbmRXYXNDcmVhdGVkPihtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLCAxX3MsIElQQzo6
V2FpdEZvck9wdGlvbjo6SW50ZXJydXB0V2FpdGluZ0lmU3luY01lc3NhZ2VBcnJpdmVzKTsKKyAg
ICByZXR1cm4gY29ubmVjdGlvbi0+d2FpdEZvckFuZERpc3BhdGNoSW1tZWRpYXRlbHk8TWVzc2Fn
ZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6RGlkQ3JlYXRlSW1hZ2VCdWZmZXJCYWNr
ZW5kPihtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLCAxX3MsIElQQzo6V2FpdEZvck9wdGlv
bjo6SW50ZXJydXB0V2FpdGluZ0lmU3luY01lc3NhZ2VBcnJpdmVzKTsKIH0KIAogYm9vbCBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OndhaXRGb3JEaWRGbHVzaCgpCkBAIC0xMjksMTAgKzEy
MCwxMCBAQCBSZWZQdHI8SW1hZ2VCdWZmZXI+IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6
Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaQogICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4g
aW1hZ2VCdWZmZXI7CiAKICAgICBpZiAocmVuZGVyaW5nTW9kZSA9PSBSZW5kZXJpbmdNb2RlOjpB
Y2NlbGVyYXRlZCkKLSAgICAgICAgaW1hZ2VCdWZmZXIgPSBBY2NlbGVyYXRlZFJlbW90ZUltYWdl
QnVmZmVyUHJveHk6OmNyZWF0ZShzaXplLCByZW5kZXJpbmdNb2RlLCByZXNvbHV0aW9uU2NhbGUs
IGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0LCAqdGhpcyk7CisgICAgICAgIGltYWdlQnVmZmVyID0g
QWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlclByb3h5OjpjcmVhdGUoc2l6ZSwgcmVzb2x1dGlv
blNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCwgKnRoaXMpOwogCiAgICAgaWYgKCFpbWFn
ZUJ1ZmZlcikKLSAgICAgICAgaW1hZ2VCdWZmZXIgPSBVbmFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VC
dWZmZXJQcm94eTo6Y3JlYXRlKHNpemUsIHJlbmRlcmluZ01vZGUsIHJlc29sdXRpb25TY2FsZSwg
Y29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQsICp0aGlzKTsKKyAgICAgICAgaW1hZ2VCdWZmZXIgPSBV
bmFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6Y3JlYXRlKHNpemUsIHJlc29sdXRp
b25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQsICp0aGlzKTsKIAogICAgIGlmIChpbWFn
ZUJ1ZmZlcikgewogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
OjpDcmVhdGVJbWFnZUJ1ZmZlcihzaXplLCByZW5kZXJpbmdNb2RlLCByZXNvbHV0aW9uU2NhbGUs
IGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0LCBpbWFnZUJ1ZmZlci0+cmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyKCkpLCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKQEAgLTE4MywyOCAr
MTc0LDIyIEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpyZWxlYXNlUmVtb3Rl
UmVzb3VyY2UoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmCiAgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlUmVuZGVyaW5nQmFja2VuZDo6UmVsZWFzZVJlbW90ZVJlc291cmNlKHJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllciksIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOwogfQogCi12b2lk
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6aW1hZ2VCdWZmZXJCYWNrZW5kV2FzQ3JlYXRl
ZChjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBJbnRTaXplJiBiYWNrZW5kU2l6
ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFBpeGVsRm9y
bWF0IHBpeGVsRm9ybWF0LCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgaGFuZGxlLCBSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQordm9pZCBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmRpZENyZWF0ZUltYWdlQnVmZmVyQmFja2VuZChJ
bWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgaGFuZGxlLCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogewogICAgIGF1dG8gaW1hZ2VCdWZmZXIg
PSBtX3JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jYWNoZWRJbWFnZUJ1ZmZlcihyZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAgICAgIHJldHVy
bjsKLSAgICAKLSAgICBpZiAoaW1hZ2VCdWZmZXItPmlzQWNjZWxlcmF0ZWQoKSkKLSAgICAgICAg
ZG93bmNhc3Q8QWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlclByb3h5PigqaW1hZ2VCdWZmZXIp
LmNyZWF0ZUJhY2tlbmQobG9naWNhbFNpemUsIGJhY2tlbmRTaXplLCByZXNvbHV0aW9uU2NhbGUs
IGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0LCBXVEZNb3ZlKGhhbmRsZSkpOworCisgICAgaWYgKGlt
YWdlQnVmZmVyLT5yZW5kZXJpbmdNb2RlKCkgPT0gUmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQp
CisgICAgICAgIGltYWdlQnVmZmVyLT5zZXRCYWNrZW5kKEFjY2VsZXJhdGVkSW1hZ2VCdWZmZXJT
aGFyZWFibGVCYWNrZW5kOjpjcmVhdGUoaW1hZ2VCdWZmZXItPnBhcmFtZXRlcnMoKSwgV1RGTW92
ZShoYW5kbGUpKSk7CiAgICAgZWxzZQotICAgICAgICBkb3duY2FzdDxVbmFjY2VsZXJhdGVkUmVt
b3RlSW1hZ2VCdWZmZXJQcm94eT4oKmltYWdlQnVmZmVyKS5jcmVhdGVCYWNrZW5kKGxvZ2ljYWxT
aXplLCBiYWNrZW5kU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1h
dCwgV1RGTW92ZShoYW5kbGUpKTsKKyAgICAgICAgaW1hZ2VCdWZmZXItPnNldEJhY2tlbmQoVW5h
Y2NlbGVyYXRlZEltYWdlQnVmZmVyU2hhcmVhYmxlQmFja2VuZDo6Y3JlYXRlKGltYWdlQnVmZmVy
LT5wYXJhbWV0ZXJzKCksIFdURk1vdmUoaGFuZGxlKSkpOwogfQogCiB2b2lkIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eTo6ZGlkRmx1c2goRGlzcGxheUxpc3Q6OkZsdXNoSWRlbnRpZmllciBm
bHVzaElkZW50aWZpZXIsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIpCiB7Ci0gICAgYXV0byBpbWFnZUJ1ZmZlciA9IG1fcmVtb3RlUmVzb3Vy
Y2VDYWNoZVByb3h5LmNhY2hlZEltYWdlQnVmZmVyKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cik7Ci0gICAgaWYgKCFpbWFnZUJ1ZmZlcikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKGlt
YWdlQnVmZmVyLT5pc0FjY2VsZXJhdGVkKCkpCi0gICAgICAgIGRvd25jYXN0PEFjY2VsZXJhdGVk
UmVtb3RlSW1hZ2VCdWZmZXJQcm94eT4oKmltYWdlQnVmZmVyKS5kaWRGbHVzaChmbHVzaElkZW50
aWZpZXIpOwotICAgIGVsc2UKLSAgICAgICAgZG93bmNhc3Q8VW5hY2NlbGVyYXRlZFJlbW90ZUlt
YWdlQnVmZmVyUHJveHk+KCppbWFnZUJ1ZmZlcikuZGlkRmx1c2goZmx1c2hJZGVudGlmaWVyKTsK
KyAgICBpZiAoYXV0byBpbWFnZUJ1ZmZlciA9IG1fcmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNh
Y2hlZEltYWdlQnVmZmVyKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikpCisgICAgICAgIGlt
YWdlQnVmZmVyLT5kaWRGbHVzaChmbHVzaElkZW50aWZpZXIpOwogfQogCiB2b2lkIFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eTo6dXBkYXRlUmV1c2FibGVIYW5kbGVzKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oCmluZGV4IDk1ZjhkMmI0MTJmYjkxZGY3N2M2OGYxMzZi
MDA3ODZmMDI0ZDdlMjYuLmY4MDVmYzFlZmY5Y2E1MTQ1MzU5Y2EyOTJiNTJkZGZlZWY4ZGE4MWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaApAQCAtODEsNyArODEsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBjYWNoZU5hdGl2ZUltYWdlKFdlYkNvcmU6Ok5hdGl2ZUltYWdl
Jik7CiAgICAgdm9pZCByZWxlYXNlUmVtb3RlUmVzb3VyY2UoV2ViQ29yZTo6UmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyKTsKIAotICAgIGJvb2wgd2FpdEZvckltYWdlQnVmZmVyQmFja2VuZFdh
c0NyZWF0ZWQoKTsKKyAgICBib29sIHdhaXRGb3JEaWRDcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQo
KTsKICAgICBib29sIHdhaXRGb3JEaWRGbHVzaCgpOwogCiBwcml2YXRlOgpAQCAtOTUsNyArOTUs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRlUmV1c2FibGVIYW5kbGVzKCk7CiAKICAgICAv
LyBNZXNzYWdlcyB0byBiZSByZWNlaXZlZC4KLSAgICB2b2lkIGltYWdlQnVmZmVyQmFja2VuZFdh
c0NyZWF0ZWQoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgV2Vi
Q29yZTo6SW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29y
ZTo6Q29sb3JTcGFjZSwgV2ViQ29yZTo6UGl4ZWxGb3JtYXQsIEltYWdlQnVmZmVyQmFja2VuZEhh
bmRsZSwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICB2b2lkIGRp
ZENyZWF0ZUltYWdlQnVmZmVyQmFja2VuZChJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUsIFdlYkNv
cmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAgdm9pZCBkaWRGbHVzaChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6Rmx1c2hJZGVudGlmaWVyLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIpOwogCiAgICAgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5IG1fcmVtb3Rl
UmVzb3VyY2VDYWNoZVByb3h5IHsgKnRoaXMgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lm1lc3Nh
Z2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHkubWVzc2FnZXMuaW4KaW5kZXggOTIwZGUzZjc3NzU0MDE2NDA1MWZm
NTFjZDIxYjUwNTU5ODU0Zjg0NC4uM2E1MzJkNWU0ZmY2MTZiZGIwN2VkZTdhOWE4M2U5MzEzN2U3
M2JmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9S
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkubWVz
c2FnZXMuaW4KQEAgLTIzLDcgKzIzLDcgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKIG1l
c3NhZ2VzIC0+IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSBOb3RSZWZDb3VudGVkIHsKLSAg
ICBJbWFnZUJ1ZmZlckJhY2tlbmRXYXNDcmVhdGVkKFdlYkNvcmU6OkZsb2F0U2l6ZSBsb2dpY2Fs
U2l6ZSwgV2ViQ29yZTo6SW50U2l6ZSBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxl
LCBXZWJDb3JlOjpDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGVudW06dWludDhfdCBXZWJDb3JlOjpQ
aXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgV2ViS2l0OjpJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUg
aGFuZGxlLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyKQorICAgIERpZENyZWF0ZUltYWdlQnVmZmVyQmFja2VuZChXZWJLaXQ6
OkltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBoYW5kbGUsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCiAgICAgRGlkRmx1c2go
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZsdXNoSWRlbnRpZmllciBmbHVzaElkZW50aWZpZXIsIFdl
YkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIpCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFy
ZWFibGVJT1N1cmZhY2VCYWNrZW5kLmNwcAppbmRleCA1MTYyN2M1ZWRkODkxYjk0ZjM2MzkxYzBh
YjRjMjgwOGM2ODBiZWZmLi5lNDEyZTdmNjNmNDA4N2YyMTc3MjQ2ODJlOTM1OGZiODU4OGZjNWMz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29h
L0ltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZUlP
U3VyZmFjZUJhY2tlbmQuY3BwCkBAIC0zNywxMyArMzcsMTMgQEAgdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChJbWFnZUJ1ZmZlclNoYXJlYWJs
ZUlPU3VyZmFjZUJhY2tlbmQpOwogCi1zdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJTaGFyZWFi
bGVJT1N1cmZhY2VCYWNrZW5kPiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQ6
OmNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29s
b3JTcGFjZSBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgY29uc3QgSG9zdFdp
bmRvdyopCitzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNr
ZW5kPiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZShjb25zdCBQ
YXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBjb25zdCBIb3N0V2luZG93KikKIHsKLSAgICBJbnRTaXpl
IGJhY2tlbmRTaXplID0gY2FsY3VsYXRlQmFja2VuZFNpemUoc2l6ZSwgcmVzb2x1dGlvblNjYWxl
KTsKKyAgICBJbnRTaXplIGJhY2tlbmRTaXplID0gY2FsY3VsYXRlQmFja2VuZFNpemUocGFyYW1l
dGVycy5sb2dpY2FsU2l6ZSwgcGFyYW1ldGVycy5yZXNvbHV0aW9uU2NhbGUpOwogICAgIGlmIChi
YWNrZW5kU2l6ZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgYXV0
byBzdXJmYWNlID0gSU9TdXJmYWNlOjpjcmVhdGUoYmFja2VuZFNpemUsIGJhY2tlbmRTaXplLCBj
YWNoZWRDR0NvbG9yU3BhY2UoY29sb3JTcGFjZSksIElPU3VyZmFjZTo6Zm9ybWF0Rm9yUGl4ZWxG
b3JtYXQocGl4ZWxGb3JtYXQpKTsKKyAgICBhdXRvIHN1cmZhY2UgPSBJT1N1cmZhY2U6OmNyZWF0
ZShiYWNrZW5kU2l6ZSwgYmFja2VuZFNpemUsIGNhY2hlZENHQ29sb3JTcGFjZShwYXJhbWV0ZXJz
LmNvbG9yU3BhY2UpLCBJT1N1cmZhY2U6OmZvcm1hdEZvclBpeGVsRm9ybWF0KHBhcmFtZXRlcnMu
cGl4ZWxGb3JtYXQpKTsKICAgICBpZiAoIXN1cmZhY2UpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCkBAIC01MywyMSArNTMsMjEgQEAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyU2hhcmVh
YmxlSU9TdXJmYWNlQmFja2VuZD4gSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmYKIAogICAgIENH
Q29udGV4dENsZWFyUmVjdChjZ0NvbnRleHQuZ2V0KCksIEZsb2F0UmVjdChGbG9hdFBvaW50Ojp6
ZXJvKCksIGJhY2tlbmRTaXplKSk7CiAKLSAgICByZXR1cm4gbWFrZVVuaXF1ZTxJbWFnZUJ1ZmZl
clNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQ+KHNpemUsIGJhY2tlbmRTaXplLCByZXNvbHV0aW9u
U2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0LCBXVEZNb3ZlKHN1cmZhY2UpKTsKKyAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQ+KHBh
cmFtZXRlcnMsIFdURk1vdmUoc3VyZmFjZSkpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VC
dWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kPiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3Vy
ZmFjZUJhY2tlbmQ6OmNyZWF0ZShjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBJ
bnRTaXplJiBpbnRlcm5hbFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBj
b2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFu
ZGxlIGhhbmRsZSkKK3N0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFj
ZUJhY2tlbmQ+IEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlKGNv
bnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBoYW5k
bGUpCiB7CiAgICAgaWYgKCFXVEY6OmhvbGRzX2FsdGVybmF0aXZlPE1hY2hTZW5kUmlnaHQ+KGhh
bmRsZSkpIHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIH0KIAotICAgIGF1dG8gc3VyZmFjZSA9IElPU3VyZmFjZTo6Y3JlYXRlRnJv
bVNlbmRSaWdodChXVEZNb3ZlKFdURjo6Z2V0PE1hY2hTZW5kUmlnaHQ+KGhhbmRsZSkpLCBjYWNo
ZWRDR0NvbG9yU3BhY2UoY29sb3JTcGFjZSkpOworICAgIGF1dG8gc3VyZmFjZSA9IElPU3VyZmFj
ZTo6Y3JlYXRlRnJvbVNlbmRSaWdodChXVEZNb3ZlKFdURjo6Z2V0PE1hY2hTZW5kUmlnaHQ+KGhh
bmRsZSkpLCBjYWNoZWRDR0NvbG9yU3BhY2UocGFyYW1ldGVycy5jb2xvclNwYWNlKSk7CiAgICAg
aWYgKCFzdXJmYWNlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBtYWtl
VW5pcXVlPEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZD4obG9naWNhbFNpemUs
IGludGVybmFsU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCwg
V1RGTW92ZShzdXJmYWNlKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8SW1hZ2VCdWZmZXJTaGFy
ZWFibGVJT1N1cmZhY2VCYWNrZW5kPihwYXJhbWV0ZXJzLCBXVEZNb3ZlKHN1cmZhY2UpKTsKIH0K
IAogSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNl
QmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKCkgY29uc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZm
ZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZC5o
CmluZGV4IGVkNTE2MjRlYjBhYTEwNTBlMTNiZmExN2VhMzRmMGZlM2MxZmZmNmQuLjMxODkyMTVm
MzNhY2FiNzkwMWZhY2I1MDVmMmE1YzEzOTlhMGRlNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1
cmZhY2VCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQuaApAQCAtMzksOCAr
MzksOCBAQCBjbGFzcyBJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQgOiBwdWJs
aWMgV2ViQ29yZTo6SW1hZ2VCdWZmZXJJT1N1cmZhYwogICAgIFdURl9NQUtFX0lTT19BTExPQ0FU
RUQoSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kKTsKICAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQpOwogcHVibGlj
OgotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZh
Y2VCYWNrZW5kPiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwg
Y29uc3QgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlLCBXZWJDb3Jl
OjpQaXhlbEZvcm1hdCwgY29uc3QgV2ViQ29yZTo6SG9zdFdpbmRvdyopOwotICAgIHN0YXRpYyBz
dGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kPiBjcmVh
dGUoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgV2ViQ29yZTo6
SW50U2l6ZSYgaW50ZXJuYWxTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNv
bG9yU3BhY2UsIFdlYkNvcmU6OlBpeGVsRm9ybWF0LCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUp
OworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZh
Y2VCYWNrZW5kPiBjcmVhdGUoY29uc3QgUGFyYW1ldGVycyYsIGNvbnN0IFdlYkNvcmU6Okhvc3RX
aW5kb3cqKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyU2hhcmVhYmxl
SU9TdXJmYWNlQmFja2VuZD4gY3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmLCBJbWFnZUJ1ZmZlckJh
Y2tlbmRIYW5kbGUpOwogCiAgICAgdXNpbmcgV2ViQ29yZTo6SW1hZ2VCdWZmZXJJT1N1cmZhY2VC
YWNrZW5kOjpJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415050</attachid>
            <date>2020-11-30 13:30:29 -0800</date>
            <delta_ts>2020-12-04 01:48:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219007-20201130133028.patch</filename>
            <type>text/plain</type>
            <size>102041</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwMjU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjRjMGNmMWFiYWIzMjRh
NDI5MGM5NTNmMWU0ODE4ODQwMzBhOTRhNS4uOTM2MDhkNTg0ZDQxNzA3ZGE2M2M3ZmQ3YWNlYjVm
MmJiYWJiMzc0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExOSBAQAorMjAyMC0xMS0zMCAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3Nd
IENsZWFuIHVwIHJlY3JlYXRpbmcgdGhlIEltYWdlQnVmZmVyQmFja2VuZCBiZWNhdXNlIG9mIEdQ
VSBjcmFzaGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjE5MDA3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVG8gYWxsb3cgYW5zd2VyaW5nIHF1ZXN0aW9ucyBhYm91dCB0aGUgYmFja2VuZCBjcmVhdGlv
biBwYXJhbWV0ZXJzIHdpdGhvdXQKKyAgICAgICAgaGF2aW5nIHRoZSBiYWNrZW5kIGNyZWF0ZWQs
IHRoZSBuZXcgc3RydWN0dXJlIEltYWdlQnVmZmVyQmFja2VuZDo6UGFyYW1ldGVycworICAgICAg
ICBpcyBpbnRyb2R1Y2VkLgorCisgICAgICAgIFRoaXMgc3RydWN0dXJlIGNvbnRhaW5zIHRoZSBw
YXJhbWV0ZXJzIHdoaWNoIHdlcmUgcGFzc2VkIGJ5IHRoZSBjYWxsZXIgaW4KKyAgICAgICAgdGhl
IFdlYlByb2Nlc3MgYW5kIHdoaWNoIGFyZSBzdWZmaWNpZW50IHRvIHJlY3JlYXRlIFJlbW90ZUlt
YWdlQnVmZmVyIGlmCisgICAgICAgIHRoZSBHUFUgUHJvY2VzcyBjcmFzaGVzIGV2ZW4gYmVmb3Jl
IHRoZSBiYWNrZW5kIG9mIFJlbW90ZUltYWdlQnVmZmVyUHJveHkKKyAgICAgICAgaXMgY3JlYXRl
ZC4KKworICAgICAgICBDb25jcmV0ZUltYWdlQnVmZmVyIGFuZCBJbWFnZUJ1ZmZlckJhY2tlbmQg
d2lsbCBob2xkIGFuIGluc3RhbmNlIG9mIHRoZQorICAgICAgICBuZXcgc3RydWN0dXJlIEltYWdl
QnVmZmVyQmFja2VuZDo6UGFyYW1ldGVycy4KKworICAgICAgICBBbHNvIHJlcGxhY2UgYWxsIHRo
ZSBpbnN0YW5jZXMgb2YgJ2lzQWNjZWxlcmF0ZWQnIGJ5ICdyZW5kZXJpbmdNb2RlJy4gU28KKyAg
ICAgICAgbm8gbmVlZCB0byBjb252ZXJ0IG9uZSB0eXBlIHRvIHRoZSBvdGhlci4KKworICAgICAg
ICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJh
c2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6
cHJlcGFyZUZvckRpc3BsYXkpOgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3Jl
dGVJbWFnZUJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6Q29uY3JldGVJbWFnZUJ1ZmZlcjo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbmNyZXRlSW1hZ2VCdWZmZXI6OkNvbmNyZXRl
SW1hZ2VCdWZmZXIpOgorICAgICAgICAtLSBNYWtlIENvbmNyZXRlSW1hZ2VCdWZmZXIgb3duIGFu
IGluc3RhbmNlIG9mIEltYWdlQnVmZmVyQmFja2VuZDo6UGFyYW1ldGVycy4KKyAgICAgICAgLS0g
QWRkIG1ldGhvZHMgdG8gc2V0IGFuZCBjbGVhciB0aGUgYmFja2VuZCBvZiBhbiBJbWFnZUJ1ZmZl
ci4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmg6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6c3VibWl0RGlzcGxheUxpc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VCdWZmZXI6OmRpZEZsdXNoKToKKyAgICAgICAgLS0gRXhwb3NlIHRoZSBJbWFn
ZUJ1ZmZlckJhY2tlbmQgY3JlYXRpb24gcGFyYW1ldGVycyB0aHJvdWdoIG1ldGhvZHMuCisgICAg
ICAgIC0tIEV4cG9zZSBzdWJtaXREaXNwbGF5TGlzdCgpIGFuZCBkaWRGbHVzaCgpIHNvIG5vIGNh
c3RpbmcgaXMgbmVlZGVkIHdoZW4KKyAgICAgICAgICAgY2FsbGluZyB0aGVzZSBmdW5jdGlvbnMg
dGhyb3VnaCBSZW1vdGVJbWFnZUJ1ZmVyUHJveHkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZm
ZXJCYWNrZW5kOjpJbWFnZUJ1ZmZlckJhY2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VC
dWZmZXJCYWNrZW5kOjp0b0JHUkFEYXRhIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVy
QmFja2VuZDo6bWVtb3J5Q29zdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZl
ckJhY2tlbmQ6OmJ5dGVzUGVyUm93IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVm
ZmVyQmFja2VuZDo6dG9CYWNrZW5kQ29vcmRpbmF0ZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjpsb2dpY2FsU2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OnJlc29sdXRpb25TY2FsZSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OmNvbG9yU3BhY2UgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjpwaXhlbEZvcm1hdCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OmxvZ2ljYWxSZWN0IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQmFja2VuZDo6YmFja2VuZFJlY3QgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjpiYWNrZW5kU2l6ZSBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OmJhc2VUcmFu
c2Zvcm0gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAtLSBBZGQgdGhlIHN0cnVjdHVyZSBJbWFn
ZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnMuIAorICAgICAgICAtLSBNYWtlIEltYWdlQnVmZmVy
QmFja2VuZCBvd24gYW4gaW5zdGFuY2Ugb2YgdGhpcyBzdHJ1Y3R1cmUuCisgICAgICAgIC0tIE1h
a2UgYmFja2VuZFNpemUoKSBhIHB1cmUgdmlydHVhbCBtZXRob2QuCisgICAgICAgIC0tIERlbGV0
ZSBiYXNlVHJhbnNmb3JtKCkgc2luY2UgaXQgaXMgaW1wbGVtZW50ZWQgaW4gQ29uY3JldGVJbWFn
ZUJ1ZmZlci4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtSW1hZ2VCdWZm
ZXIuaDoKKyAgICAgICAgKGlzVHlwZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VC
dWZmZXJDYWlyb0JhY2tlbmQ6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZDo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5k
OjpJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZDo6cGxhdGZvcm1UcmFuc2Zvcm1D
b2xvclNwYWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZl
ckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQ6OkltYWdlQnVmZmVyQ2Fpcm9TdXJm
YWNlQmFja2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJh
Y2tlbmQ6OmJhY2tlbmRTaXplIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9JbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZUJ1ZmZlckNHQmFja2VuZDo6c2V0dXBDb250ZXh0IGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlQnVmZmVyQ0dCYWNrZW5kOjpjb3B5SW1hZ2UgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OnNpbmtJbnRvSW1hZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlQnVmZmVyQ0dCYWNrZW5kOjp0b0NGRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZUJ1ZmZlckNHQmFja2VuZDo6YmFzZVRyYW5zZm9ybSBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JhY2tlbmQuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpJbWFnZUJ1ZmZl
ckNHQml0bWFwQmFja2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNHQml0bWFw
QmFja2VuZDo6Y29weU5hdGl2ZUltYWdlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OkltYWdlQnVmZmVySU9TdXJmYWNl
QmFja2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6
OmJhY2tlbmRTaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVySU9TdXJm
YWNlQmFja2VuZDo6ZHJhd0NvbnN1bWluZyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmg6CisgICAgICAgIC0tIENoYW5nZSB0aGUg
Y3JlYXRlKCkgbWV0aG9kcyB0byB0YWtlIGEgIlBhcmFtZXRlcnMiIGFyZ3VtZW50LgorICAgICAg
ICAtLSBVc2UgdGhlIGJhY2tlbmQgbWV0aG9kIHRvIGFjY2VzcyB0aGUgIlBhcmFtZXRlcnMiIHN0
cnVjdHVyZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdEZsdXNoSWRlbnRpZmllci5oOiBBZGRlZC4KKyAgICAgICAgTW92ZSBEaXNwbGF5TGlz
dEZsdXNoSWRlbnRpZmllciB0byBhIHNlcGFyYXRlIGZpbGUgc28gaXQgY2FuIGJlIGluY2x1ZGVk
CisgICAgICAgIGluIEltYWdlQnVmZmVyLmggd2l0aG91dCBoYXZpbmcgdG8gaW5jbHVkZSBEaXNw
bGF5TGlzdC5oLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0SW1hZ2VCdWZmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJbWFn
ZUJ1ZmZlcjo6SW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Oklt
YWdlQnVmZmVyOjppbml0aWFsRHJhd2luZ0NvbnRleHRDVE0pOiBEZWxldGVkLgorICAgICAgICAt
LSBObyBuZWVkIHRvIHBhc3MgdGhlICdzaXplJyBhcmd1bWVudCB0d2ljZSBpbiB0aGUgJ2NyZWF0
ZScgbWV0aG9kcy4gVGhlCisgICAgICAgICAgIHN0cnVjdHVyZSBQYXJhbWV0ZXJzIGhhcyB0byBi
ZSBwYXNzZWQgdG8gdGhlIGNvbnN0cnVjdG9yIGFueXdheS4KKyAgICAgICAgLS0gTm8gbmVlZCBm
b3IgaW5pdGlhbERyYXdpbmdDb250ZXh0Q1RNKCkgc2luY2UgaXQgaXMgZXF1aXZhbGVudCB0byAK
KyAgICAgICAgICAgYmFzZVRyYW5zZm9ybSgpLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpjb3B5SW1hZ2UgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OmRyYXcpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAg
LS0gVXNlIHRoZSBiYWNrZW5kIG1ldGhvZCB0byBhY2Nlc3MgdGhlICJQYXJhbWV0ZXJzIiBzdHJ1
Y3R1cmUuCisKIDIwMjAtMTEtMzAgIEphbWVzIERhcnBpbmlhbiAgPGpkYXJwaW5pYW5AY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFN1cHBvcnQgS0hSX3BhcmFsbGVsX3NoYWRlcl9jb21waWxlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCmluZGV4IGFkNzhjMDA1ODVjMmIxZjg4NzJmYWM5NWY1OWNjYWVjNDk2NGQ3MjMuLmMyYWRh
MGNhZWQ5ZmYwZWM1MDNjZGVkZGNjZWRlZDkyZjA5YTBlZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
OTkgQEAKKzIwMjAtMTEtMzAgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2FpZEBhcHBsZS5jb20+CisK
KyAgICAgICAgW0dQVSBQcm9jZXNzXSBDbGVhbiB1cCByZWNyZWF0aW5nIHRoZSBJbWFnZUJ1ZmZl
ckJhY2tlbmQgYmVjYXVzZSBvZiBHUFUgY3Jhc2hpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTAwNworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZXJlIGlzIG5vIG5lZWQgdG8gc3RvcmUgdGhlIGJh
Y2tlbmQgcGFyYW1ldGVycyBpbiBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5LgorICAgICAgICBUaGVz
ZSBwYXJhbWV0ZXJzIGFyZSBub3cgc3RvcmVkIGluIHRoZSBiYXNlIGNsYXNzIEltYWdlQnVmZmVy
IGJlZm9yZSB0aGUKKyAgICAgICAgYmFja2VuZCBpcyBjcmVhdGVkLgorCisgICAgICAgIFJlbW92
ZSB0aGUgdHJhaXRzIGRlZmluaXRpb24gZm9yIFJlbW90ZUltYWdlQnVmZmVyUHJveHkgdHlwZXMg
YmVjYXVzZQorICAgICAgICB0aGV5IGFyZSB3cm9uZy4gQWxsIEltYWdlQnVmZmVycyBoYXZlIHZh
bGlkIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpCisgICAgICAgIHJlZ2FyZGxlc3Mgd2hl
dGhlciB0aGV5IGFyZSByZW1vdGUgb3Igbm90LiBJbWFnZUJ1ZmZlcjo6c2V0QmFja2VuZCBhbmQK
KyAgICAgICAgSW1hZ2VCdWZmZXI6OnN1Ym1pdERpc3BsYXlMaXN0KCkgYXJlIG5vdyBpbXBsZW1l
bnRlZCBpbiBXZWJDb3JlLiBTbyBubworICAgICAgICBjYXN0aW5nIGlzIG5lZWRlZC4KKworICAg
ICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaDoKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXI6OlJlbW90ZUltYWdlQnVmZmVyKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXI6OnN1Ym1pdERpc3BsYXlMaXN0KTogRGVsZXRlZC4K
KyAgICAgICAgc3VibWl0RGlzcGxheUxpc3QoKSBpcyBub3cgYSB2aXJ0dWFsIG1ldGhvZCBvZiBJ
bWFnZUJ1ZmZlci4gU28gbWFrZSBpdAorICAgICAgICBwcml2YXRlIGFuZCBpZ25vcmUgdGhlIHJl
dHVybiBvZiBEaXNwbGF5TGlzdDo6UmVwbGF5ZXI6OnJlcGxheSgpIHNpbmNlIAorICAgICAgICB0
aGUgY2FsbGVyIGRvZXMgbm90IHVzZSBpdC4KKworICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJl
bmRlcmluZ0JhY2tlbmQ6OmRpZENyZWF0ZUltYWdlQnVmZmVyQmFja2VuZCk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmFwcGx5RGlzcGxheUxpc3RzRnJvbUhhbmRs
ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmltYWdlQnVmZmVy
QmFja2VuZFdhc0NyZWF0ZWQpOiBEZWxldGVkLgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oOgorICAgICAgICBSZW5hbWUgJ2ltYWdlQnVmZmVy
QmFja2VuZFdhc0NyZWF0ZWQoKScgdG8gJ2RpZENyZWF0ZUltYWdlQnVmZmVyQmFja2VuZCgpJwor
ICAgICAgICB0byBiZSBjb25zaXN0ZW50IHdpdGggJ2RpZEZsdXNoKCknLgorCisgICAgICAgICog
U2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmRpc3BsYXkpOgorICAgICAgICBD
YWxsIHRoZSBmdW5jdGlvbiB3aXRoIHRoZSBuZXcgbmFtZSBhbmQgZGVsZXRlIHRoZSBGSVhNRSBj
b21tZW50LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJT
aGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW1hZ2VCdWZmZXJT
aGFyZWFibGVCaXRtYXBCYWNrZW5kOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpJbWFnZUJ1
ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OkltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFj
a2VuZCk6CisgICAgICAgIChXZWJLaXQ6OkltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2Vu
ZDo6YmFja2VuZFNpemUgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5oOgorICAgICAgICBVc2UgdGhlIG5l
dyBzdHJ1Y3R1cmUgJ0ltYWdlQnVmZmVyQmFja2VuZDo6UGFyYW1ldGVycycuIEltcGxlbWVudCB0
aGUKKyAgICAgICAgdmlydHVhbCBtZXRob2QgJ2JhY2tlbmRTaXplKCknLgorCisgICAgICAgICog
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUGxhdGZvcm1SZW1vdGVJbWFnZUJ1ZmZlclByb3h5Lmg6
CisgICAgICAgIChpc1R5cGUpOiBEZWxldGVkLgorICAgICAgICBEZWxldGUgdGhlIHdyb25nIHRy
YWl0cy4KKworICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVm
ZmVyUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6UmVtb3RlSW1h
Z2VCdWZmZXJQcm94eSk6CisgICAgICAgIFVzZSB0aGUgbmV3IHN0cnVjdHVyZSAnSW1hZ2VCdWZm
ZXJCYWNrZW5kOjpQYXJhbWV0ZXJzJy4KKworICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1
ZmZlclByb3h5OjpjbGVhckJhY2tlbmQpOiBEZWxldGVkLgorICAgICAgICBUaGlzIGlzIG5vdyBp
bXBsZW1lbnRlZCBpbiBDb25jcmV0ZUltYWdlQnVmZmVyOjpjbGVhckJhY2tlbmQoKS4KKworICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlclByb3h5OjpjcmVhdGVCYWNrZW5kKTogRGVs
ZXRlZC4KKyAgICAgICAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpkaWRDcmVhdGVJbWFn
ZUJ1ZmZlckJhY2tlbmQoKSBjcmVhdGVzIHRoZQorICAgICAgICBiYWNrZW5kIGFuZCBDb25jcmV0
ZUltYWdlQnVmZmVyOjpzZXRCYWNrZW5kKCkgc2V0cyBpdC4KKworICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVJbWFnZUJ1ZmZlclByb3h5OjpkaWRGbHVzaCk6IERlbGV0ZWQuCisgICAgICAgIGRpZEZs
dXNoKCkgaXMgbm93IHZpcnR1YWwgc28gaXQgY2FuIGJlIHByaXZhdGUuCisKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6c2l6ZSBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyUHJveHk6OnJlbmRlcmluZ01vZGUgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlclByb3h5Ojpjb2xv
clNwYWNlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZm
ZXJQcm94eTo6cGl4ZWxGb3JtYXQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICBUaGVzZSBmdW5j
dGlvbnMgYXJlIG5vdyBpbXBsZW1lbnRlZCBpbiBDb25jcmV0ZUltYWdlQnVmZmVyLgorCisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyUHJveHk6OnN1Ym1pdERpc3BsYXlMaXN0KTog
RGVsZXRlZC4KKyAgICAgICAgc3VibWl0RGlzcGxheUxpc3QoKSBpcyBub3cgdmlydHVhbC4KKwor
ICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6
cmVlc3RhYmxpc2hHUFVQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6d2FpdEZvckRpZENyZWF0ZUltYWdlQnVmZmVyQmFja2Vu
ZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Y3JlYXRl
SW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHk6OmRpZENyZWF0ZUltYWdlQnVmZmVyQmFja2VuZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6ZGlkRmx1c2gpOgorICAgICAgICAoV2ViS2l0OjpyZWNy
ZWF0ZUltYWdlQnVmZmVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5Ojp3YWl0Rm9ySW1hZ2VCdWZmZXJCYWNrZW5kV2FzQ3JlYXRlZCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6aW1h
Z2VCdWZmZXJCYWNrZW5kV2FzQ3JlYXRlZCk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lmg6CisgICAgICAgIE5v
IG5lZWQgdG8gY2FzdCB0aGUgSW1hZ2VCdWZmZXIgdG8gUmVtb3RlSW1hZ2VCdWZmZXJQcm94eSBz
aW5jZSBhbGwgd2hhdAorICAgICAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkgbmVlZHMg
Y2FuIGJlIGFjY2Vzc2VkIHRocm91Z2ggdGhlIGJhc2UgY2xhc3MuCisKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkubWVzc2FnZXMu
aW46CisgICAgICAgIFJlbmFtZSAnSW1hZ2VCdWZmZXJCYWNrZW5kV2FzQ3JlYXRlZCcgdG8gJ0Rp
ZENyZWF0ZUltYWdlQnVmZmVyQmFja2VuZCcKKyAgICAgICAgdG8gYmUgY29uc2lzdGVudCB3aXRo
ICdEaWRGbHVzaCcuIE5vIG5lZWQgdG8gcGFzcyB0aGUgY3JlYXRpb24gcGFyYW1ldGVycworICAg
ICAgICBzaW5jZSB0aGV5IHNldCBpbiB0aGUgQ29uY3JldGVJbWFnZUJ1ZmZlci4gTm8gbmVlZCB0
byBwYXNzIHRoZSBiYWNrZW5kU2l6ZQorICAgICAgICBzaW5jZSBpdCBjYW4gYmUgcmV0cmlldmVk
IHRocm91Z2ggdGhlIGJhY2tlbmQgaXRzZWxmLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kOjpj
cmVhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVm
ZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZC5oOgorICAgICAgICBVc2UgdGhlIG5ldyBzdHJ1
Y3R1cmUgJ0ltYWdlQnVmZmVyQmFja2VuZDo6UGFyYW1ldGVycycuCisKIDIwMjAtMTEtMzAgIFlv
dWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEludHJvZHVjZSBhbiBl
eHBlcmltZW50YWwgZmxhZyBzcGVjaWZpYyB0byBWUDkgcHJvZmlsZSAyCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFr
ZQppbmRleCAzNzg5YWEzODM5NDBkMjU3NDEyNGJjMmZmNDNlN2VlYzRhZTk1MGQ1Li5kZmEyNDRm
ZGNkOWQ3MzNkN2M5NTg5MjczZTA2OWM3YzAwNGZlN2E0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAg
LTEyNzAsNiArMTI3MCw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMK
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaAogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdHbHlwaHNSZWNvcmRl
ci5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd2lu
Z0NvbnRleHQuaAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dEZsdXNoSWRlbnRpZmllci5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0SW1hZ2VCdWZmZXIuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdEl0ZW1UeXBlLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA4YTIzOTUwN2ViYmQ4NTk5MDIyNWZiZWIx
ODUwNTAxMDQ4ODYxMTJkLi5iZTcwYWIwMzcwZjM1YzI4MDY5YTViNDhmNGExMDUzOWI5MDRkNmNk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC0yMTc5LDYgKzIxNzksNyBAQAogCQk3MjE0NDMzNDIyM0VDOTE2MDBGMTJGRjcgLyog
U1ZHUHJvcGVydHlPd25lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTVFRTUzNjAyMjNCMkEyMTAwRkJBOTQ0IC8qIFNWR1Byb3BlcnR5T3duZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MjFCNDk3
NDI1MTJCQTNCMDBGRTlEM0IgLyogSW1hZ2VCaXRtYXBCYWNraW5nLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjFCNDk3MDI1MTJBQzA0MDBGRTlEM0Ig
LyogSW1hZ2VCaXRtYXBCYWNraW5nLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJNzIyODNGMEUyMzBCMjY4QzAwRjVEODI4IC8qIEltYWdlUGFpbnRp
bmdPcHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3MkMxOEEzRjIzMEIwNEI3MDA2ODQ3QzcgLyogSW1hZ2VQYWludGluZ09wdGlvbnMuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3MjQyQUM5NzI1
NzU4RkUxMDA1QTlDRjEgLyogRGlzcGxheUxpc3RGbHVzaElkZW50aWZpZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyNDJBQzk1MjU3NThGRTAwMDVB
OUNGMSAvKiBEaXNwbGF5TGlzdEZsdXNoSWRlbnRpZmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcyNEVEMzMyMUEzQThCMjMwMEY1RjEzQyAv
KiBKU0VYVEJsZW5kTWluTWF4LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3MjRFRDMzMDFBM0E4QjIzMDBGNUYxM0MgLyogSlNFWFRCbGVuZE1pbk1heC5o
ICovOyB9OwogCQk3MjRFRTU1MDFEQzgwRDdGMDBBOTFGRkIgLyogQWN0aXZpdHlTdGF0ZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI0RUU1NEUxREM3
RjI1QjAwQTkxRkZCIC8qIEFjdGl2aXR5U3RhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MjRFRTU1MTFEQzgwRDg0MDBBOTFGRkIgLyogQWN0
aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3MjRFRTU0RjFEQzdGMjVCMDBBOTFGRkIgLyogQWN0aXZpdHlTdGF0
ZUNoYW5nZU9ic2VydmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKQEAgLTEwMDUzLDYgKzEwMDU0LDcgQEAKIAkJNzIxQjQ5NkYyNTEyQUMwNDAwRkU5
RDNCIC8qIEltYWdlQml0bWFwQmFja2luZy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbWFnZUJp
dG1hcEJhY2tpbmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjFCNDk3MDI1
MTJBQzA0MDBGRTlEM0IgLyogSW1hZ2VCaXRtYXBCYWNraW5nLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElt
YWdlQml0bWFwQmFja2luZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjJBODE1
QzIzOEZENTA1MDBDMDA1ODMgLyogQW5pbWF0aW9uRnJhbWVSYXRlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEFuaW1hdGlvbkZyYW1lUmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MjQy
QUM5NTI1NzU4RkUwMDA1QTlDRjEgLyogRGlzcGxheUxpc3RGbHVzaElkZW50aWZpZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGlzcGxheUxpc3RGbHVzaElkZW50aWZpZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI0RUQzMjkxQTNBN0U1NDAwRjVGMTND
IC8qIEVYVEJsZW5kTWluTWF4LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEVYVEJsZW5kTWluTWF4LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI0
RUQzMkExQTNBN0U1NDAwRjVGMTNDIC8qIEVYVEJsZW5kTWluTWF4LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEVYVEJsZW5kTWluTWF4Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTcyNEVEMzJCMUEzQTdFNTQwMEY1RjEzQyAvKiBFWFRCbGVuZE1pbk1heC5pZGwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRVhUQmxlbmRNaW5NYXguaWRsOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMTc4MDAsNiArMTc4MDIsNyBAQAogCQkJCTFDQUY1NkRFMjUzMDI0
NUEwMDE3QjQ3MiAvKiBEaXNwbGF5TGlzdERyYXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0LmNwcCAq
LywKIAkJCQk1NUMwQTI5NTIzRkUyQ0UwMDBGMkNCOTMgLyogRGlzcGxheUxpc3REcmF3aW5nQ29u
dGV4dC5jcHAgKi8sCiAJCQkJNzJFQTA5RjkyM0ZDQ0M2QTAwODUwNEE1IC8qIERpc3BsYXlMaXN0
RHJhd2luZ0NvbnRleHQuaCAqLywKKwkJCQk3MjQyQUM5NTI1NzU4RkUwMDA1QTlDRjEgLyogRGlz
cGxheUxpc3RGbHVzaElkZW50aWZpZXIuaCAqLywKIAkJCQk3MkVBMDlGNzIzRkNDQjNEMDA4NTA0
QTUgLyogRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oICovLAogCQkJCUY0MjJCOEI2MjUzRjcwNjUw
MDRFNzdFOCAvKiBEaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwICovLAogCQkJCUY0MjJCOEI1MjUz
RjcwNjUwMDRFNzdFOCAvKiBEaXNwbGF5TGlzdEl0ZW1CdWZmZXIuaCAqLywKQEAgLTMxNjkzLDYg
KzMxNjk2LDcgQEAKIAkJCQkwRkU1RkJEMzFDM0RENTFFMDAwN0EyQ0EgLyogRGlzcGxheUxpc3Qu
aCBpbiBIZWFkZXJzICovLAogCQkJCTFDQUY1NkRCMjUzMDFBQzgwMDE3QjQ3MiAvKiBEaXNwbGF5
TGlzdERyYXdHbHlwaHNSZWNvcmRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTVBRDA5NDAyNDA4
OTY0MDAwREU0RDJGIC8qIERpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuaCBpbiBIZWFkZXJzICov
LAorCQkJCTcyNDJBQzk3MjU3NThGRTEwMDVBOUNGMSAvKiBEaXNwbGF5TGlzdEZsdXNoSWRlbnRp
Zmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTVBRDA5M0UyNDA4OTYzNTAwREU0RDJGIC8qIERp
c3BsYXlMaXN0SW1hZ2VCdWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUY0RDQwQkM5MjU1NDYz
QkYwMDcyMTM0OSAvKiBEaXNwbGF5TGlzdEl0ZW1CdWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGRTVGQkQ1MUMzREQ1MUUwMDA3QTJDQSAvKiBEaXNwbGF5TGlzdEl0ZW1zLmggaW4gSGVhZGVy
cyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbmNy
ZXRlSW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbmNy
ZXRlSW1hZ2VCdWZmZXIuaAppbmRleCA4MjQyOTkwMDJlZTY2MGYwYmFlM2YxNjNhZDFjODliMDNk
NGRkYTc5Li5mMzEwYTYyYjQ2M2MwYjU4YzlkZWRiMzA2NWZiMjcxYzBhYzgyZWRlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1
ZmZlci5oCkBAIC0zNiwzMCArMzYsNDEgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IEltYWdlQnVmZmVyVHlwZSA9IENvbmNyZXRlSW1hZ2VCdWZmZXIsIHR5cGVuYW1lLi4uIEFyZ3Vt
ZW50cz4KICAgICBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyVHlwZT4gY3JlYXRlKGNvbnN0IEZs
b2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3Bh
Y2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBjb25zdCBIb3N0V2luZG93KiBob3N0V2luZG93
LCBBcmd1bWVudHMmJi4uLiBhcmd1bWVudHMpCiAgICAgewotICAgICAgICBhdXRvIGJhY2tlbmQg
PSBCYWNrZW5kVHlwZTo6Y3JlYXRlKHNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwg
cGl4ZWxGb3JtYXQsIGhvc3RXaW5kb3cpOworICAgICAgICBhdXRvIHBhcmFtZXRlcnMgPSBJbWFn
ZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnMgeyBzaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9y
U3BhY2UsIHBpeGVsRm9ybWF0IH07CisgICAgICAgIGF1dG8gYmFja2VuZCA9IEJhY2tlbmRUeXBl
OjpjcmVhdGUocGFyYW1ldGVycywgaG9zdFdpbmRvdyk7CiAgICAgICAgIGlmICghYmFja2VuZCkK
ICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IEltYWdlQnVmZmVyVHlwZShXVEZNb3ZlKGJhY2tlbmQpLCBzdGQ6OmZvcndhcmQ8QXJndW1lbnRz
Pihhcmd1bWVudHMpLi4uKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW1hZ2VCdWZm
ZXJUeXBlKHBhcmFtZXRlcnMsIFdURk1vdmUoYmFja2VuZCksIHN0ZDo6Zm9yd2FyZDxBcmd1bWVu
dHM+KGFyZ3VtZW50cykuLi4pKTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJbWFn
ZUJ1ZmZlclR5cGUgPSBDb25jcmV0ZUltYWdlQnVmZmVyLCB0eXBlbmFtZS4uLiBBcmd1bWVudHM+
CiAgICAgc3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZlclR5cGU+IGNyZWF0ZShjb25zdCBGbG9hdFNp
emUmIHNpemUsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgQXJndW1lbnRzJiYuLi4g
YXJndW1lbnRzKQogICAgIHsKLSAgICAgICAgYXV0byBiYWNrZW5kID0gQmFja2VuZFR5cGU6OmNy
ZWF0ZShzaXplLCBjb250ZXh0KTsKKyAgICAgICAgYXV0byBwYXJhbWV0ZXJzID0gSW1hZ2VCdWZm
ZXJCYWNrZW5kOjpQYXJhbWV0ZXJzIHsgc2l6ZSwgMSwgQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxG
b3JtYXQ6OkJHUkE4IH07CisgICAgICAgIGF1dG8gYmFja2VuZCA9IEJhY2tlbmRUeXBlOjpjcmVh
dGUocGFyYW1ldGVycywgY29udGV4dCk7CiAgICAgICAgIGlmICghYmFja2VuZCkKICAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOwotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEltYWdlQnVm
ZmVyVHlwZShXVEZNb3ZlKGJhY2tlbmQpLCBzdGQ6OmZvcndhcmQ8QXJndW1lbnRzPihhcmd1bWVu
dHMpLi4uKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW1hZ2VCdWZmZXJUeXBlKHBh
cmFtZXRlcnMsIFdURk1vdmUoYmFja2VuZCksIHN0ZDo6Zm9yd2FyZDxBcmd1bWVudHM+KGFyZ3Vt
ZW50cykuLi4pKTsKICAgICB9CiAKLSAgICBib29sIGlzQWNjZWxlcmF0ZWQoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBCYWNrZW5kVHlwZTo6aXNBY2NlbGVyYXRlZDsgfQorICAgIFJlbmRlcmlu
Z01vZGUgcmVuZGVyaW5nTW9kZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEJhY2tlbmRUeXBl
OjpyZW5kZXJpbmdNb2RlOyB9CiAKIHByb3RlY3RlZDoKLSAgICBDb25jcmV0ZUltYWdlQnVmZmVy
KHN0ZDo6dW5pcXVlX3B0cjxCYWNrZW5kVHlwZT4mJiBiYWNrZW5kID0gbnVsbHB0ciwgUmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciA9IFJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSkKLSAgICAgICAgOiBtX2JhY2tlbmQo
V1RGTW92ZShiYWNrZW5kKSkKKyAgICBDb25jcmV0ZUltYWdlQnVmZmVyKGNvbnN0IEltYWdlQnVm
ZmVyQmFja2VuZDo6UGFyYW1ldGVycyYgcGFyYW1ldGVycywgc3RkOjp1bmlxdWVfcHRyPEJhY2tl
bmRUeXBlPiYmIGJhY2tlbmQgPSBudWxscHRyLCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIg
cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyID0gUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
OjpnZW5lcmF0ZSgpKQorICAgICAgICA6IG1fcGFyYW1ldGVycyhwYXJhbWV0ZXJzKQorICAgICAg
ICAsIG1fYmFja2VuZChXVEZNb3ZlKGJhY2tlbmQpKQogICAgICAgICAsIG1fcmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKICAgICB7CiAgICAg
fQogCisgICAgdm9pZCBzZXRCYWNrZW5kKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckJhY2tl
bmQ+JiYgYmFja2VuZCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIEFTU0VSVCghbV9iYWNrZW5k
KTsKKyAgICAgICAgbV9iYWNrZW5kID0gc3RkOjp1bmlxdWVfcHRyPEJhY2tlbmRUeXBlPiB7IHN0
YXRpY19jYXN0PEJhY2tlbmRUeXBlKj4oYmFja2VuZC5yZWxlYXNlKCkpIH07CisgICAgfQorCisg
ICAgdm9pZCBjbGVhckJhY2tlbmQoKSBvdmVycmlkZSB7IG1fYmFja2VuZCA9IG51bGxwdHI7IH0K
KwogICAgIHZpcnR1YWwgQmFja2VuZFR5cGUqIGVuc3VyZUJhY2tlbmRDcmVhdGVkKCkgY29uc3Qg
eyByZXR1cm4gbV9iYWNrZW5kLmdldCgpOyB9CiAKICAgICBSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gbV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI7IH0KQEAgLTc4LDE5ICs4OSwxMSBAQCBw
cm90ZWN0ZWQ6CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBBZmZpbmVUcmFuc2Zvcm0gYmFzZVRy
YW5zZm9ybSgpIGNvbnN0IG92ZXJyaWRlCi0gICAgewotICAgICAgICBpZiAoYXV0byogYmFja2Vu
ZCA9IGVuc3VyZUJhY2tlbmRDcmVhdGVkKCkpCi0gICAgICAgICAgICByZXR1cm4gYmFja2VuZC0+
YmFzZVRyYW5zZm9ybSgpOwotICAgICAgICByZXR1cm4geyB9OwotICAgIH0KLQotICAgIEludFNp
emUgbG9naWNhbFNpemUoKSBjb25zdCBvdmVycmlkZQotICAgIHsKLSAgICAgICAgaWYgKGF1dG8q
IGJhY2tlbmQgPSBlbnN1cmVCYWNrZW5kQ3JlYXRlZCgpKQotICAgICAgICAgICAgcmV0dXJuIGJh
Y2tlbmQtPmxvZ2ljYWxTaXplKCk7Ci0gICAgICAgIHJldHVybiB7IH07Ci0gICAgfQorICAgIElu
dFNpemUgbG9naWNhbFNpemUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBJbnRTaXplKG1fcGFy
YW1ldGVycy5sb2dpY2FsU2l6ZSk7IH0KKyAgICBmbG9hdCByZXNvbHV0aW9uU2NhbGUoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBtX3BhcmFtZXRlcnMucmVzb2x1dGlvblNjYWxlOyB9CisgICAg
Q29sb3JTcGFjZSBjb2xvclNwYWNlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9wYXJhbWV0
ZXJzLmNvbG9yU3BhY2U7IH0KKyAgICBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIG1fcGFyYW1ldGVycy5waXhlbEZvcm1hdDsgfQorICAgIGNvbnN0IElt
YWdlQnVmZmVyQmFja2VuZDo6UGFyYW1ldGVycyYgcGFyYW1ldGVycygpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIG1fcGFyYW1ldGVyczsgfQogCiAgICAgSW50U2l6ZSBiYWNrZW5kU2l6ZSgpIGNv
bnN0IG92ZXJyaWRlCiAgICAgewpAQCAtOTksMTEgKzEwMiwxMSBAQCBwcm90ZWN0ZWQ6CiAgICAg
ICAgIHJldHVybiB7IH07CiAgICAgfQogCi0gICAgZmxvYXQgcmVzb2x1dGlvblNjYWxlKCkgY29u
c3Qgb3ZlcnJpZGUKKyAgICBBZmZpbmVUcmFuc2Zvcm0gYmFzZVRyYW5zZm9ybSgpIGNvbnN0IG92
ZXJyaWRlCiAgICAgewotICAgICAgICBpZiAoYXV0byogYmFja2VuZCA9IGVuc3VyZUJhY2tlbmRD
cmVhdGVkKCkpCi0gICAgICAgICAgICByZXR1cm4gYmFja2VuZC0+cmVzb2x1dGlvblNjYWxlKCk7
Ci0gICAgICAgIHJldHVybiAxOworICAgICAgICBpZiAoQmFja2VuZFR5cGU6OmlzT3JpZ2luQXRV
cHBlckxlZnRDb3JuZXIpCisgICAgICAgICAgICByZXR1cm4gQWZmaW5lVHJhbnNmb3JtKDEsIDAs
IDAsIC0xLCAwLCBsb2dpY2FsU2l6ZSgpLmhlaWdodCgpKTsKKyAgICAgICAgcmV0dXJuIHsgfTsK
ICAgICB9CiAKICAgICBzaXplX3QgbWVtb3J5Q29zdCgpIGNvbnN0IG92ZXJyaWRlCkBAIC0yOTEs
NiArMjk0LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICAgICAgYmFja2VuZC0+cmVsZWFzZUJ1ZmZl
clRvUG9vbCgpOwogICAgIH0KIAorICAgIEltYWdlQnVmZmVyQmFja2VuZDo6UGFyYW1ldGVycyBt
X3BhcmFtZXRlcnM7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEJhY2tlbmRUeXBlPiBtX2JhY2tlbmQ7
CiAgICAgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1
ZmZlci5oCmluZGV4IDYyYTNmN2ZmYTM3NzhhOGMwMTM5MDE2MjU0Mzc1M2FhN2JkMmMyMWQuLmU3
ZDJlODJjMTY2MWIzZmIwY2Q5MDZkNDc2NzQyZGZlNzljNGE1YzIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaApAQCAtMjcsNiArMjcsNyBAQAog
CiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkRpc3BsYXlMaXN0Rmx1c2hJZGVudGlmaWVyLmgi
CiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXJCYWNrZW5kLmgiCiAjaW5jbHVkZSAiUmVuZGVyaW5nTW9k
ZS5oIgogI2luY2x1ZGUgIlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5oIgpAQCAtNjAsMTAg
KzYxLDEzIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgRmxvYXRSZWN0IGNsYW1wZWRSZWN0KGNvbnN0
IEZsb2F0UmVjdCYpOwogCiAgICAgc3RhdGljIEludFNpemUgY29tcGF0aWJsZUJ1ZmZlclNpemUo
Y29uc3QgRmxvYXRTaXplJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0Jik7Ci0gICAgCisKICAgICBX
RUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5JbWFnZUJ1ZmZlcigpID0gZGVmYXVsdDsKIAotICAgIHZp
cnR1YWwgYm9vbCBpc0FjY2VsZXJhdGVkKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBz
ZXRCYWNrZW5kKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckJhY2tlbmQ+JiYpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgY2xlYXJCYWNrZW5kKCkgPSAwOworCisgICAgdmlydHVhbCBSZW5kZXJp
bmdNb2RlIHJlbmRlcmluZ01vZGUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCkgY29uc3QgeyBy
ZXR1cm4geyB9OyB9CiAgICAgCiAgICAgdmlydHVhbCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQo
KSBjb25zdCA9IDA7CkBAIC03MywxMSArNzcsMTcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9v
bCBwcmVmZXJzUHJlcGFyYXRpb25Gb3JEaXNwbGF5KCkgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2
aXJ0dWFsIHZvaWQgZmx1c2hEcmF3aW5nQ29udGV4dCgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBm
bHVzaERyYXdpbmdDb250ZXh0QW5kQ29tbWl0KCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHN1Ym1p
dERpc3BsYXlMaXN0KGNvbnN0IERpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYpIHsgfQorICAgIHZp
cnR1YWwgdm9pZCBkaWRGbHVzaChEaXNwbGF5TGlzdDo6Rmx1c2hJZGVudGlmaWVyKSB7IH0KIAot
ICAgIHZpcnR1YWwgQWZmaW5lVHJhbnNmb3JtIGJhc2VUcmFuc2Zvcm0oKSBjb25zdCA9IDA7CiAg
ICAgdmlydHVhbCBJbnRTaXplIGxvZ2ljYWxTaXplKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwg
SW50U2l6ZSBiYWNrZW5kU2l6ZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGZsb2F0IHJlc29s
dXRpb25TY2FsZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIENvbG9yU3BhY2UgY29sb3JTcGFj
ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0KCkgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgY29uc3QgSW1hZ2VCdWZmZXJCYWNrZW5kOjpQYXJhbWV0ZXJz
JiBwYXJhbWV0ZXJzKCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBJbnRTaXplIGJhY2tlbmRT
aXplKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgQWZmaW5lVHJhbnNmb3JtIGJhc2VUcmFuc2Zv
cm0oKSBjb25zdCA9IDA7CiAKICAgICB2aXJ0dWFsIHNpemVfdCBtZW1vcnlDb3N0KCkgY29uc3Qg
PSAwOwogICAgIHZpcnR1YWwgc2l6ZV90IGV4dGVybmFsTWVtb3J5Q29zdCgpIGNvbnN0ID0gMDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVy
QmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZl
ckJhY2tlbmQuY3BwCmluZGV4IDdmMGZlOWU2ZDk2NmU3NGI0NWY4NWFhZDBlM2IyZmI4NGQ5NDUw
YjkuLjkzOTRlN2JmZjQyOWJjMjFlZmNkZjNiMTQwMTExZjFhZTJjYTk0NGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5k
LmNwcApAQCAtMzEsMTIgKzMxLDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1JbWFnZUJ1
ZmZlckJhY2tlbmQ6OkltYWdlQnVmZmVyQmFja2VuZChjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxT
aXplLCBjb25zdCBJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBD
b2xvclNwYWNlIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0KQotICAgIDogbV9s
b2dpY2FsU2l6ZShsb2dpY2FsU2l6ZSkKLSAgICAsIG1fYmFja2VuZFNpemUoYmFja2VuZFNpemUp
Ci0gICAgLCBtX3Jlc29sdXRpb25TY2FsZShyZXNvbHV0aW9uU2NhbGUpCi0gICAgLCBtX2NvbG9y
U3BhY2UoY29sb3JTcGFjZSkKLSAgICAsIG1fcGl4ZWxGb3JtYXQocGl4ZWxGb3JtYXQpCitJbWFn
ZUJ1ZmZlckJhY2tlbmQ6OkltYWdlQnVmZmVyQmFja2VuZChjb25zdCBQYXJhbWV0ZXJzJiBwYXJh
bWV0ZXJzKQorICAgIDogbV9wYXJhbWV0ZXJzKHBhcmFtZXRlcnMpCiB7CiB9CiAKQEAgLTk5LDE1
ICs5NSwxNSBAQCB2b2lkIEltYWdlQnVmZmVyQmFja2VuZDo6Y29udmVydFRvTHVtaW5hbmNlTWFz
aygpCiAKIFZlY3Rvcjx1aW50OF90PiBJbWFnZUJ1ZmZlckJhY2tlbmQ6OnRvQkdSQURhdGEodm9p
ZCogZGF0YSkgY29uc3QKIHsKLSAgICBWZWN0b3I8dWludDhfdD4gcmVzdWx0KDQgKiBtX2xvZ2lj
YWxTaXplLmFyZWEoKS51bnNhZmVHZXQoKSk7Ci0gICAgc2l6ZV90IGRlc3RCeXRlc1BlclJvdyA9
IG1fbG9naWNhbFNpemUud2lkdGgoKSAqIDQ7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3VsdCg0
ICogbG9naWNhbFNpemUoKS5hcmVhKCkudW5zYWZlR2V0KCkpOworICAgIHNpemVfdCBkZXN0Qnl0
ZXNQZXJSb3cgPSBsb2dpY2FsU2l6ZSgpLndpZHRoKCkgKiA0OwogICAgIHNpemVfdCBzcmNCeXRl
c1BlclJvdyA9IGJ5dGVzUGVyUm93KCk7CiAKICAgICB1aW50OF90KiBzcmNSb3dzID0gcmVpbnRl
cnByZXRfY2FzdDx1aW50OF90Kj4oZGF0YSk7CiAKICAgICBjb3B5SW1hZ2VQaXhlbHMoCiAgICAg
ICAgIEFscGhhUHJlbXVsdGlwbGljYXRpb246OlByZW11bHRpcGxpZWQsIHBpeGVsRm9ybWF0KCks
IHNyY0J5dGVzUGVyUm93LCBzcmNSb3dzLAotICAgICAgICBBbHBoYVByZW11bHRpcGxpY2F0aW9u
OjpVbnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpCR1JBOCwgZGVzdEJ5dGVzUGVyUm93LCBy
ZXN1bHQuZGF0YSgpLCBtX2xvZ2ljYWxTaXplKTsKKyAgICAgICAgQWxwaGFQcmVtdWx0aXBsaWNh
dGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6QkdSQTgsIGRlc3RCeXRlc1BlclJv
dywgcmVzdWx0LmRhdGEoKSwgbG9naWNhbFNpemUoKSk7CiAKICAgICByZXR1cm4gcmVzdWx0Owog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZm
ZXJCYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZl
ckJhY2tlbmQuaAppbmRleCA1ODA2NzE1YTdiMmM4NzU3NjkwMmE3NzM1ODRkZjE4MDU4MjUxMDBm
Li5lMjgwYjE3YTY0MTlhNmJiYjBmMjk3YjMyZWI2NzQ1YWU0MWVkMmJlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaApA
QCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkltYWdlUGFpbnRpbmdPcHRpb25zLmgiCiAjaW5j
bHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtTGF5ZXIuaCIKKyNpbmNsdWRlICJS
ZW5kZXJpbmdNb2RlLmgiCiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KIApAQCAtNzcsNiArNzgsMTMgQEAgcHVibGljOgogCiBjbGFzcyBJbWFnZUJ1ZmZl
ckJhY2tlbmQgewogcHVibGljOgorICAgIHN0cnVjdCBQYXJhbWV0ZXJzIHsKKyAgICAgICAgRmxv
YXRTaXplIGxvZ2ljYWxTaXplOworICAgICAgICBmbG9hdCByZXNvbHV0aW9uU2NhbGU7CisgICAg
ICAgIENvbG9yU3BhY2UgY29sb3JTcGFjZTsKKyAgICAgICAgUGl4ZWxGb3JtYXQgcGl4ZWxGb3Jt
YXQ7CisgICAgfTsKKwogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgfkltYWdlQnVmZmVyQmFj
a2VuZCgpID0gZGVmYXVsdDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBJbnRTaXplIGNh
bGN1bGF0ZUJhY2tlbmRTaXplKGNvbnN0IEZsb2F0U2l6ZSYsIGZsb2F0IHJlc29sdXRpb25TY2Fs
ZSk7CkBAIC04NCwxNCArOTIsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGZsdXNoQ29udGV4dCgp
IHsgfQogCi0gICAgSW50U2l6ZSBsb2dpY2FsU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbG9naWNh
bFNpemU7IH0KLSAgICBJbnRTaXplIGJhY2tlbmRTaXplKCkgY29uc3QgeyByZXR1cm4gbV9iYWNr
ZW5kU2l6ZTsgfQotICAgIGZsb2F0IHJlc29sdXRpb25TY2FsZSgpIGNvbnN0IHsgcmV0dXJuIG1f
cmVzb2x1dGlvblNjYWxlOyB9Ci0gICAgQ29sb3JTcGFjZSBjb2xvclNwYWNlKCkgY29uc3QgeyBy
ZXR1cm4gbV9jb2xvclNwYWNlOyB9Ci0gICAgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQoKSBjb25z
dCB7IHJldHVybiBtX3BpeGVsRm9ybWF0OyB9CisgICAgdmlydHVhbCBJbnRTaXplIGJhY2tlbmRT
aXplKCkgY29uc3QgPSAwOwogCi0gICAgdmlydHVhbCBBZmZpbmVUcmFuc2Zvcm0gYmFzZVRyYW5z
Zm9ybSgpIGNvbnN0IHsgcmV0dXJuIEFmZmluZVRyYW5zZm9ybSgpOyB9Ci0gICAgdmlydHVhbCBz
aXplX3QgbWVtb3J5Q29zdCgpIGNvbnN0IHsgcmV0dXJuIDQgKiBtX2JhY2tlbmRTaXplLmFyZWEo
KS51bnNhZmVHZXQoKTsgfQorICAgIHZpcnR1YWwgc2l6ZV90IG1lbW9yeUNvc3QoKSBjb25zdCB7
IHJldHVybiA0ICogYmFja2VuZFNpemUoKS5hcmVhKCkudW5zYWZlR2V0KCk7IH0KICAgICB2aXJ0
dWFsIHNpemVfdCBleHRlcm5hbE1lbW9yeUNvc3QoKSBjb25zdCB7IHJldHVybiAwOyB9CiAKICAg
ICB2aXJ0dWFsIFJlZlB0cjxOYXRpdmVJbWFnZT4gY29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9y
ZUNvcHkpIGNvbnN0ID0gMDsKQEAgLTEyNywyNCArMTMwLDI5IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHN0ZDo6dW5pcXVlX3B0cjxUaHJlYWRTYWZlSW1hZ2VCdWZmZXJGbHVzaGVyPiBjcmVhdGVG
bHVzaGVyKCkgeyByZXR1cm4gbnVsbHB0cjsgfQogICAgIAogICAgIHN0YXRpYyBjb25zdGV4cHIg
Ym9vbCBpc09yaWdpbkF0VXBwZXJMZWZ0Q29ybmVyID0gZmFsc2U7Ci0gICAgc3RhdGljIGNvbnN0
ZXhwciBib29sIGlzQWNjZWxlcmF0ZWQgPSBmYWxzZTsKKyAgICBzdGF0aWMgY29uc3RleHByIFJl
bmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSA9IFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQ7
CiAKIHByb3RlY3RlZDoKLSAgICBXRUJDT1JFX0VYUE9SVCBJbWFnZUJ1ZmZlckJhY2tlbmQoY29u
c3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50U2l6ZSYgYmFja2VuZFNpemUsIGZs
b2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQpOworICAgIFdFQkNP
UkVfRVhQT1JUIEltYWdlQnVmZmVyQmFja2VuZChjb25zdCBQYXJhbWV0ZXJzJik7CiAKLSAgICB2
aXJ0dWFsIHVuc2lnbmVkIGJ5dGVzUGVyUm93KCkgY29uc3QgeyByZXR1cm4gNCAqIG1fYmFja2Vu
ZFNpemUud2lkdGgoKTsgfQorICAgIHZpcnR1YWwgdW5zaWduZWQgYnl0ZXNQZXJSb3coKSBjb25z
dCB7IHJldHVybiA0ICogYmFja2VuZFNpemUoKS53aWR0aCgpOyB9CiAKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPgogICAgIFQgdG9CYWNrZW5kQ29vcmRpbmF0ZXMoVCB0KSBjb25zdAogICAgIHsK
ICAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8VCwgSW50UG9pbnQ+Ojp2YWx1ZSB8
fCBzdGQ6OmlzX3NhbWU8VCwgSW50U2l6ZT46OnZhbHVlIHx8IHN0ZDo6aXNfc2FtZTxULCBJbnRS
ZWN0Pjo6dmFsdWUpOwotICAgICAgICBpZiAobV9yZXNvbHV0aW9uU2NhbGUgIT0gMSkKLSAgICAg
ICAgICAgIHQuc2NhbGUobV9yZXNvbHV0aW9uU2NhbGUpOworICAgICAgICBpZiAocmVzb2x1dGlv
blNjYWxlKCkgIT0gMSkKKyAgICAgICAgICAgIHQuc2NhbGUocmVzb2x1dGlvblNjYWxlKCkpOwog
ICAgICAgICByZXR1cm4gdDsKICAgICB9CiAKLSAgICBJbnRSZWN0IGxvZ2ljYWxSZWN0KCkgY29u
c3QgeyByZXR1cm4gSW50UmVjdChJbnRQb2ludDo6emVybygpLCBtX2xvZ2ljYWxTaXplKTsgfTsK
LSAgICBJbnRSZWN0IGJhY2tlbmRSZWN0KCkgY29uc3QgeyByZXR1cm4gSW50UmVjdChJbnRQb2lu
dDo6emVybygpLCBtX2JhY2tlbmRTaXplKTsgfTsKKyAgICBJbnRTaXplIGxvZ2ljYWxTaXplKCkg
Y29uc3QgeyByZXR1cm4gSW50U2l6ZShtX3BhcmFtZXRlcnMubG9naWNhbFNpemUpOyB9CisgICAg
ZmxvYXQgcmVzb2x1dGlvblNjYWxlKCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0ZXJzLnJlc29s
dXRpb25TY2FsZTsgfQorICAgIENvbG9yU3BhY2UgY29sb3JTcGFjZSgpIGNvbnN0IHsgcmV0dXJu
IG1fcGFyYW1ldGVycy5jb2xvclNwYWNlOyB9CisgICAgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQo
KSBjb25zdCB7IHJldHVybiBtX3BhcmFtZXRlcnMucGl4ZWxGb3JtYXQ7IH0KKworICAgIEludFJl
Y3QgbG9naWNhbFJlY3QoKSBjb25zdCB7IHJldHVybiBJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCks
IGxvZ2ljYWxTaXplKCkpOyB9OworICAgIEludFJlY3QgYmFja2VuZFJlY3QoKSBjb25zdCB7IHJl
dHVybiBJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIGJhY2tlbmRTaXplKCkpOyB9OwogCiAgICAg
V0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGNvcHlJbWFnZVBpeGVscygKICAgICAgICAgQWxw
aGFQcmVtdWx0aXBsaWNhdGlvbiBzcmNBbHBoYUZvcm1hdCwgUGl4ZWxGb3JtYXQgc3JjUGl4ZWxG
b3JtYXQsIHVuc2lnbmVkIHNyY0J5dGVzUGVyUm93LCB1aW50OF90KiBzcmNSb3dzLApAQCAtMTU1
LDExICsxNjMsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPEltYWdl
RGF0YT4gZ2V0SW1hZ2VEYXRhKEFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBj
b25zdCBJbnRSZWN0JiBzcmNSZWN0LCB2b2lkKiBkYXRhKSBjb25zdDsKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHB1dEltYWdlRGF0YShBbHBoYVByZW11bHRpcGxpY2F0aW9uIGlucHV0Rm9ybWF0
LCBjb25zdCBJbWFnZURhdGEmLCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRQb2lu
dCYgZGVzdFBvaW50LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uIGRlc3RGb3JtYXQsIHZvaWQqIGRh
dGEpOwogCi0gICAgSW50U2l6ZSBtX2xvZ2ljYWxTaXplOwotICAgIEludFNpemUgbV9iYWNrZW5k
U2l6ZTsKLSAgICBmbG9hdCBtX3Jlc29sdXRpb25TY2FsZTsKLSAgICBDb2xvclNwYWNlIG1fY29s
b3JTcGFjZTsKLSAgICBQaXhlbEZvcm1hdCBtX3BpeGVsRm9ybWF0OworICAgIFBhcmFtZXRlcnMg
bV9wYXJhbWV0ZXJzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1JbWFnZUJ1ZmZlci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1JbWFnZUJ1ZmZlci5oCmlu
ZGV4IGIwNWZhNjUxNjk3MWQxNzY3MTMxZDU2YTQ2MzkzNTNlZjk0ZTQ5MjUuLjUyZGQ4M2NjOTNk
NTU1M2IzNzllNTg3ZDQzODVkNGY3ODA1OTQ0YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtSW1hZ2VCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybUltYWdlQnVmZmVyLmgKQEAgLTc1LDUgKzc1
LDUgQEAgdXNpbmcgRGlzcGxheUxpc3RBY2NlbGVyYXRlZEltYWdlQnVmZmVyID0gRGlzcGxheUxp
c3Q6OkltYWdlQnVmZmVyPEFjY2VsZXJhdGVkSW0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAog
U1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpBY2NlbGVyYXRlZEltYWdlQnVm
ZmVyKQotICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpJbWFnZUJ1ZmZlciYg
YnVmZmVyKSB7IHJldHVybiBidWZmZXIuaXNBY2NlbGVyYXRlZCgpOyB9CisgICAgc3RhdGljIGJv
b2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OkltYWdlQnVmZmVyJiBidWZmZXIpIHsgcmV0dXJuIGJ1
ZmZlci5yZW5kZXJpbmdNb2RlKCkgPT0gV2ViQ29yZTo6UmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0
ZWQ7IH0KIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fp
cm9CYWNrZW5kLmNwcAppbmRleCAxMmE1YjYwYTJlOTA0NmExOTU4OTJiYWY1ZGQ3ZWQ0OTYzM2Iz
ZTc0Li5iM2JmZDgxMjdiODdkMTY4OGVhYmI1Y2Y0YjJhNzFjMzM1OWNkMmQwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJv
QmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
SW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQuY3BwCkBAIC04MCw3ICs4MCw3IEBAIHZvaWQgSW1hZ2VC
dWZmZXJDYWlyb0JhY2tlbmQ6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRl
eHQsIGNvbnN0IEZsCiAgICAgfQogCiAgICAgaWYgKGF1dG8gaW1hZ2UgPSBjb3B5TmF0aXZlSW1h
Z2UoJmRlc3RDb250ZXh0ID09ICZjb250ZXh0KCkgPyBDb3B5QmFja2luZ1N0b3JlIDogRG9udENv
cHlCYWNraW5nU3RvcmUpKQotICAgICAgICBDYWlybzo6ZHJhd1BhdHRlcm4oKmRlc3RDb250ZXh0
LnBsYXRmb3JtQ29udGV4dCgpLCBpbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpLCBtX2xvZ2lj
YWxTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIG9wdGlv
bnMpOworICAgICAgICBDYWlybzo6ZHJhd1BhdHRlcm4oKmRlc3RDb250ZXh0LnBsYXRmb3JtQ29u
dGV4dCgpLCBpbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpLCBsb2dpY2FsU2l6ZSgpLCBkZXN0
UmVjdCwgc3JjUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIG9wdGlvbnMpOwogfQogCiB2
b2lkIEltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kOjpjbGlwVG9NYXNrKEdyYXBoaWNzQ29udGV4dCYg
ZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvSW1hZ2VT
dXJmYWNlQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9JbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZC5jcHAKaW5kZXggMWNkMDc1NGIz
OTE0M2FmNDI5YjQ2ZDVkNzhlNDUxZjBkMWUwNzRjMy4uM2RhMTQ1NWViYTA2ZDY3OTRlMzMyNzAx
N2RhYWZkNzliYzU0NzJkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9J
bWFnZVN1cmZhY2VCYWNrZW5kLmNwcApAQCAtNDEsMTMgKzQxLDEzIEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKEltYWdlQnVmZmVyQ2Fpcm9JbWFn
ZVN1cmZhY2VCYWNrZW5kKTsKIAotc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQ2Fpcm9JbWFn
ZVN1cmZhY2VCYWNrZW5kPiBJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZDo6Y3Jl
YXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNw
YWNlIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBjb25zdCBIb3N0V2luZG93
KikKK3N0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZD4g
SW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZShjb25zdCBQYXJhbWV0
ZXJzJiBwYXJhbWV0ZXJzLCBjb25zdCBIb3N0V2luZG93KikKIHsKLSAgICBBU1NFUlQocGl4ZWxG
b3JtYXQgPT0gUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBBU1NFUlQocGFyYW1ldGVycy5waXhl
bEZvcm1hdCA9PSBQaXhlbEZvcm1hdDo6QkdSQTgpOwogCiAgICAgc3RhdGljIGNhaXJvX3VzZXJf
ZGF0YV9rZXlfdCBzX3N1cmZhY2VEYXRhS2V5OwogCi0gICAgSW50U2l6ZSBiYWNrZW5kU2l6ZSA9
IGNhbGN1bGF0ZUJhY2tlbmRTaXplKHNpemUsIHJlc29sdXRpb25TY2FsZSk7CisgICAgSW50U2l6
ZSBiYWNrZW5kU2l6ZSA9IGNhbGN1bGF0ZUJhY2tlbmRTaXplKHBhcmFtZXRlcnMubG9naWNhbFNp
emUsIHBhcmFtZXRlcnMucmVzb2x1dGlvblNjYWxlKTsKICAgICBpZiAoYmFja2VuZFNpemUuaXNF
bXB0eSgpIHx8IGJhY2tlbmRTaXplLndpZHRoKCkgPiBjYWlyb01heEltYWdlU2l6ZSB8fCBiYWNr
ZW5kU2l6ZS5oZWlnaHQoKSA+IGNhaXJvTWF4SW1hZ2VTaXplKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIApAQCAtNjEsMTYgKzYxLDE2IEBAIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNh
aXJvSW1hZ2VTdXJmYWNlQmFja2VuZD4gSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjCiAgICAg
ICAgIGZhc3RGcmVlKGRhdGEpOwogICAgIH0pOwogCi0gICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0
cjxJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZD4obmV3IEltYWdlQnVmZmVyQ2Fp
cm9JbWFnZVN1cmZhY2VCYWNrZW5kKHNpemUsIGJhY2tlbmRTaXplLCByZXNvbHV0aW9uU2NhbGUs
IGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0LCBXVEZNb3ZlKHN1cmZhY2UpKSk7CisgICAgcmV0dXJu
IHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZD4obmV3
IEltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kKHBhcmFtZXRlcnMsIFdURk1vdmUo
c3VyZmFjZSkpKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1
cmZhY2VCYWNrZW5kPiBJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZDo6Y3JlYXRl
KGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0JikKK3N0ZDo6dW5p
cXVlX3B0cjxJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZD4gSW1hZ2VCdWZmZXJD
YWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0
ZXJzLCBjb25zdCBHcmFwaGljc0NvbnRleHQmKQogewotICAgIHJldHVybiBJbWFnZUJ1ZmZlckNh
aXJvSW1hZ2VTdXJmYWNlQmFja2VuZDo6Y3JlYXRlKHNpemUsIDEsIENvbG9yU3BhY2U6OlNSR0Is
IFBpeGVsRm9ybWF0OjpCR1JBOCwgbnVsbHB0cik7CisgICAgcmV0dXJuIEltYWdlQnVmZmVyQ2Fp
cm9JbWFnZVN1cmZhY2VCYWNrZW5kOjpjcmVhdGUocGFyYW1ldGVycywgbnVsbHB0cik7CiB9CiAK
LUltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kOjpJbWFnZUJ1ZmZlckNhaXJvSW1h
Z2VTdXJmYWNlQmFja2VuZChjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBJbnRT
aXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9y
U3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiYm
IHN1cmZhY2UpCi0gICAgOiBJbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQobG9naWNhbFNp
emUsIGJhY2tlbmRTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0
LCBXVEZNb3ZlKHN1cmZhY2UpKQorSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQ6
OkltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kKGNvbnN0IFBhcmFtZXRlcnMmIHBh
cmFtZXRlcnMsIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+JiYgc3VyZmFjZSkKKyAgICA6IEltYWdl
QnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZChwYXJhbWV0ZXJzLCBXVEZNb3ZlKHN1cmZhY2UpKQog
ewogICAgIEFTU0VSVChjYWlyb19zdXJmYWNlX2dldF90eXBlKG1fc3VyZmFjZS5nZXQoKSkgPT0g
Q0FJUk9fU1VSRkFDRV9UWVBFX0lNQUdFKTsKIH0KQEAgLTc5LDE2ICs3OSwxNiBAQCB2b2lkIElt
YWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kOjpwbGF0Zm9ybVRyYW5zZm9ybUNvbG9y
U3BhY2UoY29uc3Qgc3RkOgogewogICAgIHVuc2lnbmVkIGNoYXIqIGRhdGFTcmMgPSBjYWlyb19p
bWFnZV9zdXJmYWNlX2dldF9kYXRhKG1fc3VyZmFjZS5nZXQoKSk7CiAgICAgaW50IHN0cmlkZSA9
IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3N0cmlkZShtX3N1cmZhY2UuZ2V0KCkpOwotICAgIGZv
ciAoaW50IHkgPSAwOyB5IDwgbV9sb2dpY2FsU2l6ZS5oZWlnaHQoKTsgKyt5KSB7CisgICAgZm9y
IChpbnQgeSA9IDA7IHkgPCBsb2dpY2FsU2l6ZSgpLmhlaWdodCgpOyArK3kpIHsKICAgICAgICAg
dW5zaWduZWQqIHJvdyA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRyPHVuc2lnbmVkKj4oZGF0YVNyYyAr
IHN0cmlkZSAqIHkpOwotICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8IG1fbG9naWNhbFNpemUu
d2lkdGgoKTsgeCsrKSB7CisgICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgbG9naWNhbFNpemUo
KS53aWR0aCgpOyB4KyspIHsKICAgICAgICAgICAgIHVuc2lnbmVkKiBwaXhlbCA9IHJvdyArIHg7
CiAgICAgICAgICAgICBhdXRvIHBpeGVsQ29tcG9uZW50cyA9IHVucHJlbXVsdGlwbGllZChhc1NS
R0JBKFBhY2tlZENvbG9yOjpBUkdCIHsgKnBpeGVsIH0pKTsKICAgICAgICAgICAgIHBpeGVsQ29t
cG9uZW50cyA9IHsgbG9va1VwVGFibGVbcGl4ZWxDb21wb25lbnRzLnJlZF0sIGxvb2tVcFRhYmxl
W3BpeGVsQ29tcG9uZW50cy5ncmVlbl0sIGxvb2tVcFRhYmxlW3BpeGVsQ29tcG9uZW50cy5ibHVl
XSwgcGl4ZWxDb21wb25lbnRzLmFscGhhIH07CiAgICAgICAgICAgICAqcGl4ZWwgPSBQYWNrZWRD
b2xvcjo6QVJHQiB7IHByZW11bHRpcGxpZWRDZWlsaW5nKHBpeGVsQ29tcG9uZW50cykgfS52YWx1
ZTsKICAgICAgICAgfQogICAgIH0KLSAgICBjYWlyb19zdXJmYWNlX21hcmtfZGlydHlfcmVjdGFu
Z2xlKG1fc3VyZmFjZS5nZXQoKSwgMCwgMCwgbV9sb2dpY2FsU2l6ZS53aWR0aCgpLCBtX2xvZ2lj
YWxTaXplLmhlaWdodCgpKTsKKyAgICBjYWlyb19zdXJmYWNlX21hcmtfZGlydHlfcmVjdGFuZ2xl
KG1fc3VyZmFjZS5nZXQoKSwgMCwgMCwgbG9naWNhbFNpemUoKS53aWR0aCgpLCBsb2dpY2FsU2l6
ZSgpLmhlaWdodCgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0lt
YWdlU3VyZmFjZUJhY2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0ltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kLmgKaW5kZXggZDE2ZDMzZWFj
NDZjNWRmNjZmYjhmYTJkOTU0OTEwZTJmOTExNWEwMy4uODY1Y2M2OWIyZDUzMzg1NDVmMzdlNDE5
M2NiOTRmMTk4MGJlNzNhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvSW1h
Z2VTdXJmYWNlQmFja2VuZC5oCkBAIC00MCwxMSArNDAsMTEgQEAgY2xhc3MgSW1hZ2VCdWZmZXJD
YWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQgOiBwdWJsaWMgSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VC
YWNrZW4KICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1
cmZhY2VCYWNrZW5kKTsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbWFnZUJ1ZmZlckNhaXJv
SW1hZ2VTdXJmYWNlQmFja2VuZCk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZD4gY3JlYXRlKGNvbnN0IEZsb2F0
U2l6ZSYsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQsIGNv
bnN0IEhvc3RXaW5kb3cqKTsKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVy
Q2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kPiBjcmVhdGUoY29uc3QgRmxvYXRTaXplJiwgY29uc3Qg
R3JhcGhpY3NDb250ZXh0Jik7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZl
ckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZD4gY3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmLCBjb25z
dCBIb3N0V2luZG93Kik7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNh
aXJvSW1hZ2VTdXJmYWNlQmFja2VuZD4gY3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmLCBjb25zdCBH
cmFwaGljc0NvbnRleHQmKTsKIAogcHJpdmF0ZToKLSAgICBJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VT
dXJmYWNlQmFja2VuZChjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBJbnRTaXpl
JiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlLCBQaXhlbEZv
cm1hdCwgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4mJik7CisgICAgSW1hZ2VCdWZmZXJDYWlyb0lt
YWdlU3VyZmFjZUJhY2tlbmQoY29uc3QgUGFyYW1ldGVycyYsIFJlZlB0cjxjYWlyb19zdXJmYWNl
X3Q+JiYpOwogCiAgICAgdm9pZCBwbGF0Zm9ybVRyYW5zZm9ybUNvbG9yU3BhY2UoY29uc3Qgc3Rk
OjphcnJheTx1aW50OF90LCAyNTY+JiBsb29rVXBUYWJsZSkgb3ZlcnJpZGU7CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJD
YWlyb1N1cmZhY2VCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZC5jcHAKaW5kZXggOWI4MjE2NGFl
YTMzMDcxZTUzNjFjNmZlMzliMWI4MjdjOWI2YjE1MC4uMGI3M2YxNGJhNzAwNWU1MjA1MGVkNTgy
MTY0YTExNjM4MDU0OTcxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvU3VyZmFj
ZUJhY2tlbmQuY3BwCkBAIC00Myw4ICs0Myw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
SW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kOjpJbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJh
Y2tlbmQoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50U2l6ZSYgYmFja2Vu
ZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBQaXhl
bEZvcm1hdCBwaXhlbEZvcm1hdCwgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4mJiBzdXJmYWNlKQot
ICAgIDogSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQobG9naWNhbFNpemUsIGJhY2tlbmRTaXplLCBy
ZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0KQorSW1hZ2VCdWZmZXJDYWly
b1N1cmZhY2VCYWNrZW5kOjpJbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQoY29uc3QgUGFy
YW1ldGVycyYgcGFyYW1ldGVycywgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4mJiBzdXJmYWNlKQor
ICAgIDogSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQocGFyYW1ldGVycykKICAgICAsIG1fc3VyZmFj
ZShXVEZNb3ZlKHN1cmZhY2UpKQogewogICAgIEFTU0VSVChjYWlyb19zdXJmYWNlX3N0YXR1cyht
X3N1cmZhY2UuZ2V0KCkpID09IENBSVJPX1NUQVRVU19TVUNDRVNTKTsKQEAgLTU5LDYgKzU5LDEx
IEBAIEdyYXBoaWNzQ29udGV4dCYgSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kOjpjb250
ZXh0KCkgY29uc3QKICAgICByZXR1cm4gKm1fY29udGV4dDsKIH0KIAorSW50U2l6ZSBJbWFnZUJ1
ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQ6OmJhY2tlbmRTaXplKCkgY29uc3QKK3sKKyAgICByZXR1
cm4geyBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF93aWR0aChtX3N1cmZhY2UuZ2V0KCkpLCBjYWly
b19pbWFnZV9zdXJmYWNlX2dldF9oZWlnaHQobV9zdXJmYWNlLmdldCgpKSB9OworfQorCiB1bnNp
Z25lZCBJbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQ6OmJ5dGVzUGVyUm93KCkgY29uc3QK
IHsKICAgICByZXR1cm4gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfc3RyaWRlKG1fc3VyZmFjZS5n
ZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9JbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZC5oCmluZGV4
IDEyYWEyYjFjZTg4ZWU0MjY0NWZhNzcyZTY3OWY1ZDQxOTVhMjY3NDcuLjllOTNkZGU4NThlZjQz
YjI4MmQ0MzhjYTVhNzY3ZmViY2JiZGRiY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fp
cm9TdXJmYWNlQmFja2VuZC5oCkBAIC00MCw2ICs0MCw4IEBAIGNsYXNzIEltYWdlQnVmZmVyQ2Fp
cm9TdXJmYWNlQmFja2VuZCA6IHB1YmxpYyBJbWFnZUJ1ZmZlckNhaXJvQmFja2VuZCB7CiBwdWJs
aWM6CiAgICAgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KCkgY29uc3Qgb3ZlcnJpZGU7CiAKKyAg
ICBJbnRTaXplIGJhY2tlbmRTaXplKCkgY29uc3Qgb3ZlcnJpZGU7CisKICAgICBSZWZQdHI8TmF0
aXZlSW1hZ2U+IGNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5KSBjb25zdCBvdmVycmlk
ZTsKIAogICAgIFZlY3Rvcjx1aW50OF90PiB0b0JHUkFEYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CkBA
IC00Nyw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHB1dEltYWdlRGF0YShBbHBoYVByZW11
bHRpcGxpY2F0aW9uIGlucHV0Rm9ybWF0LCBjb25zdCBJbWFnZURhdGEmLCBjb25zdCBJbnRSZWN0
JiBzcmNSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50LCBBbHBoYVByZW11bHRpcGxpY2F0
aW9uIGRlc3RGb3JtYXQpIG92ZXJyaWRlOwogCiBwcm90ZWN0ZWQ6Ci0gICAgSW1hZ2VCdWZmZXJD
YWlyb1N1cmZhY2VCYWNrZW5kKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IElu
dFNpemUmIGJhY2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UsIFBp
eGVsRm9ybWF0LCBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiYmKTsKKyAgICBJbWFnZUJ1ZmZlckNh
aXJvU3VyZmFjZUJhY2tlbmQoY29uc3QgUGFyYW1ldGVycyYsIFJlZlB0cjxjYWlyb19zdXJmYWNl
X3Q+JiYpOwogCiAgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBjYWlyb1N1cmZhY2VDb2VyY2VUb0lt
YWdlKCkgY29uc3Q7CiAgICAgdW5zaWduZWQgYnl0ZXNQZXJSb3coKSBjb25zdCBvdmVycmlkZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVm
ZmVyQ0dCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlQnVmZmVyQ0dCYWNrZW5kLmNwcAppbmRleCA1MDE3YmExMmM4YjQ4N2IwY2EwNmU1NDNiMTI5
NjM2NWQ2ZGQyYjJiLi5hYmJkMzY4ODc4MjY3ZDhjZjc3OGM2NjA2ZmRiMjgwM2RkNGExZDc5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZl
ckNHQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VCdWZmZXJDR0JhY2tlbmQuY3BwCkBAIC03OSw4ICs3OSw4IEBAIHZvaWQgSW1hZ2VCdWZm
ZXJDR0JhY2tlbmQ6OnNldHVwQ29udGV4dCgpIGNvbnN0CiB7CiAgICAgLy8gVGhlIGluaXRpYWwg
Q1RNIG1hdGNoZXMgRGlzcGxheUxpc3Q6OlJlY29yZGVyOjpjbGlwVG9EcmF3aW5nQ29tbWFuZHMo
KSdzIGluaXRpYWwgQ1RNLgogICAgIGNvbnRleHQoKS5zY2FsZShGbG9hdFNpemUoMSwgLTEpKTsK
LSAgICBjb250ZXh0KCkudHJhbnNsYXRlKDAsIC1tX2JhY2tlbmRTaXplLmhlaWdodCgpKTsKLSAg
ICBjb250ZXh0KCkuYXBwbHlEZXZpY2VTY2FsZUZhY3RvcihtX3Jlc29sdXRpb25TY2FsZSk7Cisg
ICAgY29udGV4dCgpLnRyYW5zbGF0ZSgwLCAtYmFja2VuZFNpemUoKS5oZWlnaHQoKSk7CisgICAg
Y29udGV4dCgpLmFwcGx5RGV2aWNlU2NhbGVGYWN0b3IocmVzb2x1dGlvblNjYWxlKCkpOwogfQog
CiBzdGF0aWMgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGNyZWF0ZUNyb3BwZWRJbWFnZUlmTmVjZXNz
YXJ5KENHSW1hZ2VSZWYgaW1hZ2UsIGNvbnN0IEludFNpemUmIGJhY2tlbmRTaXplKQpAQCAtMTEy
LDMxICsxMTIsMzIgQEAgc3RhdGljIFJlZlB0cjxJbWFnZT4gY3JlYXRlQml0bWFwSW1hZ2VBZnRl
clNjYWxpbmdJZk5lZWRlZChSZWZQdHI8TmF0aXZlSW1hZ2U+JiYKIFJlZlB0cjxJbWFnZT4gSW1h
Z2VCdWZmZXJDR0JhY2tlbmQ6OmNvcHlJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlv
ciwgUHJlc2VydmVSZXNvbHV0aW9uIHByZXNlcnZlUmVzb2x1dGlvbikgY29uc3QKIHsKICAgICBS
ZWZQdHI8TmF0aXZlSW1hZ2U+IGltYWdlOwotICAgIGlmIChtX3Jlc29sdXRpb25TY2FsZSA9PSAx
IHx8IHByZXNlcnZlUmVzb2x1dGlvbiA9PSBQcmVzZXJ2ZVJlc29sdXRpb246OlllcykKKyAgICBp
ZiAocmVzb2x1dGlvblNjYWxlKCkgPT0gMSB8fCBwcmVzZXJ2ZVJlc29sdXRpb24gPT0gUHJlc2Vy
dmVSZXNvbHV0aW9uOjpZZXMpCiAgICAgICAgIGltYWdlID0gY29weU5hdGl2ZUltYWdlKGNvcHlC
ZWhhdmlvcik7CiAgICAgZWxzZQogICAgICAgICBpbWFnZSA9IGNvcHlOYXRpdmVJbWFnZShEb250
Q29weUJhY2tpbmdTdG9yZSk7Ci0gICAgcmV0dXJuIGNyZWF0ZUJpdG1hcEltYWdlQWZ0ZXJTY2Fs
aW5nSWZOZWVkZWQoV1RGTW92ZShpbWFnZSksIG1fbG9naWNhbFNpemUsIG1fYmFja2VuZFNpemUs
IG1fcmVzb2x1dGlvblNjYWxlLCBwcmVzZXJ2ZVJlc29sdXRpb24pOworICAgIHJldHVybiBjcmVh
dGVCaXRtYXBJbWFnZUFmdGVyU2NhbGluZ0lmTmVlZGVkKFdURk1vdmUoaW1hZ2UpLCBsb2dpY2Fs
U2l6ZSgpLCBiYWNrZW5kU2l6ZSgpLCByZXNvbHV0aW9uU2NhbGUoKSwgcHJlc2VydmVSZXNvbHV0
aW9uKTsKIH0KIAogUmVmUHRyPEltYWdlPiBJbWFnZUJ1ZmZlckNHQmFja2VuZDo6c2lua0ludG9J
bWFnZShQcmVzZXJ2ZVJlc29sdXRpb24gcHJlc2VydmVSZXNvbHV0aW9uKQogewotICAgIHJldHVy
biBjcmVhdGVCaXRtYXBJbWFnZUFmdGVyU2NhbGluZ0lmTmVlZGVkKHNpbmtJbnRvTmF0aXZlSW1h
Z2UoKSwgbV9sb2dpY2FsU2l6ZSwgbV9iYWNrZW5kU2l6ZSwgbV9yZXNvbHV0aW9uU2NhbGUsIHBy
ZXNlcnZlUmVzb2x1dGlvbik7CisgICAgYXV0byBiYWNrZW5kU2l6ZSA9IHRoaXMtPmJhY2tlbmRT
aXplKCk7CisgICAgcmV0dXJuIGNyZWF0ZUJpdG1hcEltYWdlQWZ0ZXJTY2FsaW5nSWZOZWVkZWQo
c2lua0ludG9OYXRpdmVJbWFnZSgpLCBsb2dpY2FsU2l6ZSgpLCBiYWNrZW5kU2l6ZSwgcmVzb2x1
dGlvblNjYWxlKCksIHByZXNlcnZlUmVzb2x1dGlvbik7CiB9CiAKIHZvaWQgSW1hZ2VCdWZmZXJD
R0JhY2tlbmQ6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50
aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBGbG9hdFJlY3Qgc3JjUmVjdFNjYWxlZCA9IHNy
Y1JlY3Q7Ci0gICAgc3JjUmVjdFNjYWxlZC5zY2FsZShtX3Jlc29sdXRpb25TY2FsZSk7CisgICAg
c3JjUmVjdFNjYWxlZC5zY2FsZShyZXNvbHV0aW9uU2NhbGUoKSk7CiAKICAgICBpZiAoYXV0byBp
bWFnZSA9IGNvcHlOYXRpdmVJbWFnZSgmZGVzdENvbnRleHQgPT0gJmNvbnRleHQoKSA/IENvcHlC
YWNraW5nU3RvcmUgOiBEb250Q29weUJhY2tpbmdTdG9yZSkpCi0gICAgICAgIGRlc3RDb250ZXh0
LmRyYXdOYXRpdmVJbWFnZSgqaW1hZ2UsIG1fYmFja2VuZFNpemUsIGRlc3RSZWN0LCBzcmNSZWN0
U2NhbGVkLCBvcHRpb25zKTsKKyAgICAgICAgZGVzdENvbnRleHQuZHJhd05hdGl2ZUltYWdlKCpp
bWFnZSwgYmFja2VuZFNpemUoKSwgZGVzdFJlY3QsIHNyY1JlY3RTY2FsZWQsIG9wdGlvbnMpOwog
fQogCiB2b2lkIEltYWdlQnVmZmVyQ0dCYWNrZW5kOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRl
eHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29u
c3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1h
Z2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgRmxvYXRSZWN0IGFkanVzdGVkU3Jj
UmVjdCA9IHNyY1JlY3Q7Ci0gICAgYWRqdXN0ZWRTcmNSZWN0LnNjYWxlKG1fcmVzb2x1dGlvblNj
YWxlKTsKKyAgICBhZGp1c3RlZFNyY1JlY3Quc2NhbGUocmVzb2x1dGlvblNjYWxlKCkpOwogCiAg
ICAgaWYgKGF1dG8gaW1hZ2UgPSBjb3B5SW1hZ2UoJmRlc3RDb250ZXh0ID09ICZjb250ZXh0KCkg
PyBDb3B5QmFja2luZ1N0b3JlIDogRG9udENvcHlCYWNraW5nU3RvcmUpKQogICAgICAgICBpbWFn
ZS0+ZHJhd1BhdHRlcm4oZGVzdENvbnRleHQsIGRlc3RSZWN0LCBhZGp1c3RlZFNyY1JlY3QsIHBh
dHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBvcHRpb25zKTsKQEAgLTE1OSwxMSArMTYw
LDYgQEAgdm9pZCBJbWFnZUJ1ZmZlckNHQmFja2VuZDo6Y2xpcFRvTWFzayhHcmFwaGljc0NvbnRl
eHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFIKICAgICBDR0NvbnRleHRUcmFuc2xhdGVDVE0o
Y2dDb250ZXh0LCAtZGVzdFJlY3QueCgpLCAtZGVzdFJlY3QubWF4WSgpKTsKIH0KIAotQWZmaW5l
VHJhbnNmb3JtIEltYWdlQnVmZmVyQ0dCYWNrZW5kOjpiYXNlVHJhbnNmb3JtKCkgY29uc3QKLXsK
LSAgICByZXR1cm4gQWZmaW5lVHJhbnNmb3JtKDEsIDAsIDAsIC0xLCAwLCBtX2xvZ2ljYWxTaXpl
LmhlaWdodCgpKTsKLX0KLQogUmV0YWluUHRyPENGRGF0YVJlZj4gSW1hZ2VCdWZmZXJDR0JhY2tl
bmQ6OnRvQ0ZEYXRhKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVh
bGl0eSwgUHJlc2VydmVSZXNvbHV0aW9uIHByZXNlcnZlUmVzb2x1dGlvbikgY29uc3QKIHsKICAg
ICBBU1NFUlQoTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlRm9yRW5j
b2RpbmcobWltZVR5cGUpKTsKQEAgLTE5MCw3ICsxODYsNyBAQCBSZXRhaW5QdHI8Q0ZEYXRhUmVm
PiBJbWFnZUJ1ZmZlckNHQmFja2VuZDo6dG9DRkRhdGEoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwg
T3B0aQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAgICAgaW1hZ2UgPSBhZG9w
dENGKENHSW1hZ2VDcmVhdGUocGl4ZWxBcnJheURpbWVuc2lvbnMud2lkdGgoKSwgcGl4ZWxBcnJh
eURpbWVuc2lvbnMuaGVpZ2h0KCksIDgsIDMyLCA0ICogcGl4ZWxBcnJheURpbWVuc2lvbnMud2lk
dGgoKSwgc1JHQkNvbG9yU3BhY2VSZWYoKSwga0NHQml0bWFwQnl0ZU9yZGVyRGVmYXVsdCB8IGtD
R0ltYWdlQWxwaGFOb25lU2tpcExhc3QsIGRhdGFQcm92aWRlci5nZXQoKSwgMCwgZmFsc2UsIGtD
R1JlbmRlcmluZ0ludGVudERlZmF1bHQpKTsKLSAgICB9IGVsc2UgaWYgKG1fcmVzb2x1dGlvblNj
YWxlID09IDEgfHwgcHJlc2VydmVSZXNvbHV0aW9uID09IFByZXNlcnZlUmVzb2x1dGlvbjo6WWVz
KSB7CisgICAgfSBlbHNlIGlmIChyZXNvbHV0aW9uU2NhbGUoKSA9PSAxIHx8IHByZXNlcnZlUmVz
b2x1dGlvbiA9PSBQcmVzZXJ2ZVJlc29sdXRpb246OlllcykgewogICAgICAgICBpbWFnZSA9IGNv
cHlOYXRpdmVJbWFnZShDb3B5QmFja2luZ1N0b3JlKS0+cGxhdGZvcm1JbWFnZSgpOwogICAgICAg
ICBpbWFnZSA9IGNyZWF0ZUNyb3BwZWRJbWFnZUlmTmVjZXNzYXJ5KGltYWdlLmdldCgpLCBiYWNr
ZW5kU2l6ZSgpKTsKICAgICB9IGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JhY2tlbmQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCYWNrZW5kLmgKaW5kZXggMWUwN2Zk
YzY0NDNmZGMwOGY2YWY2M2UwODgzZWIzMjA1M2U0ZDU5Ny4uYjI2YWUwODQzNDdiOWUyMzM0MDQ2
MDBjMmVhNGE0YTI4YjFlMWJhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5oCkBAIC00MSw4ICs0MSw2
IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIGNsaXBUb01hc2soR3JhcGhpY3NDb250ZXh0Jiwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCkgb3ZlcnJpZGU7CiAKLSAgICBBZmZpbmVUcmFuc2Zv
cm0gYmFzZVRyYW5zZm9ybSgpIGNvbnN0IG92ZXJyaWRlOwotCiAgICAgU3RyaW5nIHRvRGF0YVVS
TChjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHksIFByZXNl
cnZlUmVzb2x1dGlvbikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHRvRGF0
YShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHkpIGNvbnN0
IG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5jcHAKaW5kZXggZjIx
OGYyN2YyZjUzYzVhNGFkYmI2YTVhZWRjM2M0OWU0OGNkNjNhNC4uZTM2NTk1NWQ3M2ZiOTQwNzc3
N2Y5OGRkNWExNTg0YWMyNTZkZGUzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5k
LmNwcApAQCAtMzksMTEgKzM5LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0Vf
SVNPX0FMTE9DQVRFRF9JTVBMKEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kKTsKIAotc3RkOjp1
bmlxdWVfcHRyPEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kPiBJbWFnZUJ1ZmZlckNHQml0bWFw
QmFja2VuZDo6Y3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNj
YWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIENHQ29sb3JTcGFjZVJlZiBjZ0NvbG9yU3BhY2Us
IFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBjb25zdCBIb3N0V2luZG93KikKK3N0ZDo6dW5pcXVl
X3B0cjxJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZD4gSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tl
bmQ6OmNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBDR0NvbG9yU3BhY2VSZWYg
Y2dDb2xvclNwYWNlLCBjb25zdCBIb3N0V2luZG93KikKIHsKLSAgICBBU1NFUlQocGl4ZWxGb3Jt
YXQgPT0gUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBBU1NFUlQocGFyYW1ldGVycy5waXhlbEZv
cm1hdCA9PSBQaXhlbEZvcm1hdDo6QkdSQTgpOwogCi0gICAgSW50U2l6ZSBiYWNrZW5kU2l6ZSA9
IGNhbGN1bGF0ZUJhY2tlbmRTaXplKHNpemUsIHJlc29sdXRpb25TY2FsZSk7CisgICAgSW50U2l6
ZSBiYWNrZW5kU2l6ZSA9IGNhbGN1bGF0ZUJhY2tlbmRTaXplKHBhcmFtZXRlcnMubG9naWNhbFNp
emUsIHBhcmFtZXRlcnMucmVzb2x1dGlvblNjYWxlKTsKICAgICBpZiAoYmFja2VuZFNpemUuaXNF
bXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtNzAsMjQgKzcwLDI0IEBAIHN0
ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZD4gSW1hZ2VCdWZmZXJDR0Jp
dG1hcEJhY2tlbmQ6OmNyZWF0ZShjCiAKICAgICBhdXRvIGRhdGFQcm92aWRlciA9IGFkb3B0Q0Yo
Q0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRoRGF0YSgwLCBkYXRhLCBudW1CeXRlcywgcmVsZWFzZUlt
YWdlRGF0YSkpOwogCi0gICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNHQml0
bWFwQmFja2VuZD4obmV3IEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kKHNpemUsIGJhY2tlbmRT
aXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0LCBkYXRhLCBXVEZN
b3ZlKGRhdGFQcm92aWRlciksIFdURk1vdmUoY29udGV4dCkpKTsKKyAgICByZXR1cm4gc3RkOjp1
bmlxdWVfcHRyPEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kPihuZXcgSW1hZ2VCdWZmZXJDR0Jp
dG1hcEJhY2tlbmQocGFyYW1ldGVycywgZGF0YSwgV1RGTW92ZShkYXRhUHJvdmlkZXIpLCBXVEZN
b3ZlKGNvbnRleHQpKSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNHQml0bWFw
QmFja2VuZD4gSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNyZWF0ZShjb25zdCBGbG9hdFNp
emUmIHNpemUsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKK3N0ZDo6dW5pcXVlX3B0
cjxJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZD4gSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6
OmNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBjb25zdCBHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQpCiB7Ci0gICAgaWYgKGF1dG8gY2dDb2xvclNwYWNlID0gY29udGV4dENvbG9y
U3BhY2UoY29udGV4dCkpCi0gICAgICAgIHJldHVybiBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2Vu
ZDo6Y3JlYXRlKHNpemUsIDEsIENvbG9yU3BhY2U6OlNSR0IsIGNnQ29sb3JTcGFjZS5nZXQoKSwg
UGl4ZWxGb3JtYXQ6OkJHUkE4LCBudWxscHRyKTsKLSAgICAKLSAgICByZXR1cm4gSW1hZ2VCdWZm
ZXJDR0JpdG1hcEJhY2tlbmQ6OmNyZWF0ZShzaXplLCAxLCBDb2xvclNwYWNlOjpTUkdCLCBQaXhl
bEZvcm1hdDo6QkdSQTgsIG51bGxwdHIpOworICAgIGlmIChhdXRvIGNnQ29sb3JTcGFjZSA9IGNv
bnRleHQuaGFzUGxhdGZvcm1Db250ZXh0KCkgPyBjb250ZXh0Q29sb3JTcGFjZShjb250ZXh0KSA6
IG51bGxwdHIpCisgICAgICAgIHJldHVybiBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y3Jl
YXRlKHBhcmFtZXRlcnMsIGNnQ29sb3JTcGFjZS5nZXQoKSwgbnVsbHB0cik7CisKKyAgICByZXR1
cm4gSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNyZWF0ZShwYXJhbWV0ZXJzLCBudWxscHRy
KTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kPiBJbWFn
ZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxv
YXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBp
eGVsRm9ybWF0LCBjb25zdCBIb3N0V2luZG93KiBob3N0V2luZG93KQorc3RkOjp1bmlxdWVfcHRy
PEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kPiBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6
Y3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIGNvbnN0IEhvc3RXaW5kb3cqIGhv
c3RXaW5kb3cpCiB7Ci0gICAgcmV0dXJuIEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpjcmVh
dGUoc2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBjYWNoZWRDR0NvbG9yU3BhY2Uo
Y29sb3JTcGFjZSksIHBpeGVsRm9ybWF0LCBob3N0V2luZG93KTsKKyAgICByZXR1cm4gSW1hZ2VC
dWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNyZWF0ZShwYXJhbWV0ZXJzLCBjYWNoZWRDR0NvbG9yU3Bh
Y2UocGFyYW1ldGVycy5jb2xvclNwYWNlKSwgaG9zdFdpbmRvdyk7CiB9CiAKLUltYWdlQnVmZmVy
Q0dCaXRtYXBCYWNrZW5kOjpJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZChjb25zdCBGbG9hdFNp
emUmIGxvZ2ljYWxTaXplLCBjb25zdCBJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1
dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0
LCB2b2lkKiBkYXRhLCBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+JiYgZGF0YVByb3ZpZGVy
LCBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NDb250ZXh0PiYmIGNvbnRleHQpCi0gICAgOiBJbWFn
ZUJ1ZmZlckNHQmFja2VuZChsb2dpY2FsU2l6ZSwgYmFja2VuZFNpemUsIHJlc29sdXRpb25TY2Fs
ZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQpCitJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6
SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycywg
dm9pZCogZGF0YSwgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiYmIGRhdGFQcm92aWRlciwg
c3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzQ29udGV4dD4mJiBjb250ZXh0KQorICAgIDogSW1hZ2VC
dWZmZXJDR0JhY2tlbmQocGFyYW1ldGVycykKICAgICAsIG1fZGF0YShkYXRhKQogICAgICwgbV9k
YXRhUHJvdmlkZXIoV1RGTW92ZShkYXRhUHJvdmlkZXIpKQogICAgICwgbV9jb250ZXh0KFdURk1v
dmUoY29udGV4dCkpCkBAIC0xMDMsNiArMTAzLDExIEBAIEdyYXBoaWNzQ29udGV4dCYgSW1hZ2VC
dWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNvbnRleHQoKSBjb25zdAogICAgIHJldHVybiAqbV9jb250
ZXh0OwogfQogCitJbnRTaXplIEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpiYWNrZW5kU2l6
ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHsgc3RhdGljX2Nhc3Q8aW50PihDR0JpdG1hcENvbnRl
eHRHZXRXaWR0aChjb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCkpKSwgc3RhdGljX2Nhc3Q8aW50
PihDR0JpdG1hcENvbnRleHRHZXRIZWlnaHQoY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpKSkg
fTsKK30KKwogUmVmUHRyPE5hdGl2ZUltYWdlPiBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6
Y29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgY29weUJlaGF2aW9yKSBjb25zdAogewog
ICAgIHN3aXRjaCAoY29weUJlaGF2aW9yKSB7CkBAIC0xMTAsOSArMTE1LDEwIEBAIFJlZlB0cjxO
YXRpdmVJbWFnZT4gSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNvcHlOYXRpdmVJbWFnZShC
YWNraW5nU3RvcmVDb3B5CiAgICAgICAgIHJldHVybiBOYXRpdmVJbWFnZTo6Y3JlYXRlKGFkb3B0
Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlSW1hZ2UoY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgp
KSkpOwogCiAgICAgY2FzZSBEb250Q29weUJhY2tpbmdTdG9yZToKKyAgICAgICAgYXV0byBiYWNr
ZW5kU2l6ZSA9IHRoaXMtPmJhY2tlbmRTaXplKCk7CiAgICAgICAgIHJldHVybiBOYXRpdmVJbWFn
ZTo6Y3JlYXRlKGFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZSgKLSAgICAgICAgICAgIG1fYmFja2VuZFNp
emUud2lkdGgoKSwgbV9iYWNrZW5kU2l6ZS5oZWlnaHQoKSwgOCwgMzIsIGJ5dGVzUGVyUm93KCks
Ci0gICAgICAgICAgICBjYWNoZWRDR0NvbG9yU3BhY2UobV9jb2xvclNwYWNlKSwga0NHSW1hZ2VB
bHBoYVByZW11bHRpcGxpZWRGaXJzdCB8IGtDR0JpdG1hcEJ5dGVPcmRlcjMySG9zdCwgbV9kYXRh
UHJvdmlkZXIuZ2V0KCksCisgICAgICAgICAgICBiYWNrZW5kU2l6ZS53aWR0aCgpLCBiYWNrZW5k
U2l6ZS5oZWlnaHQoKSwgOCwgMzIsIGJ5dGVzUGVyUm93KCksCisgICAgICAgICAgICBjYWNoZWRD
R0NvbG9yU3BhY2UoY29sb3JTcGFjZSgpKSwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRGaXJz
dCB8IGtDR0JpdG1hcEJ5dGVPcmRlcjMySG9zdCwgbV9kYXRhUHJvdmlkZXIuZ2V0KCksCiAgICAg
ICAgICAgICAwLCB0cnVlLCBrQ0dSZW5kZXJpbmdJbnRlbnREZWZhdWx0KSkpOwogICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZm
ZXJDR0JpdG1hcEJhY2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmgKaW5kZXggZTkyYzkyZjVkNTBmZGU1N2FhYTNj
YTVjMmZmMjlkZjA4Yjg2NGQyOS4uOGYzMzIzZTdkY2VjNjM1NWFjYjdkNWI5OWMyMDc4NzcxNWM4
NmJhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1h
Z2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5oCkBAIC0zNiwxMiArMzYsMTQg
QEAgY2xhc3MgSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQgOiBwdWJsaWMgSW1hZ2VCdWZmZXJD
R0JhY2tlbmQgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoSW1hZ2VCdWZmZXJDR0JpdG1h
cEJhY2tlbmQpOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEltYWdlQnVmZmVyQ0dCaXRtYXBC
YWNrZW5kKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVy
Q0dCaXRtYXBCYWNrZW5kPiBjcmVhdGUoY29uc3QgRmxvYXRTaXplJiwgZmxvYXQgcmVzb2x1dGlv
blNjYWxlLCBDb2xvclNwYWNlLCBDR0NvbG9yU3BhY2VSZWYsIFBpeGVsRm9ybWF0LCBjb25zdCBI
b3N0V2luZG93Kik7Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNHQml0
bWFwQmFja2VuZD4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYsIGZsb2F0IHJlc29sdXRpb25TY2Fs
ZSwgQ29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQsIGNvbnN0IEhvc3RXaW5kb3cqKTsKLSAgICBzdGF0
aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kPiBjcmVhdGUoY29u
c3QgRmxvYXRTaXplJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0Jik7CisgICAgc3RhdGljIHN0ZDo6
dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZD4gY3JlYXRlKGNvbnN0IFBhcmFt
ZXRlcnMmLCBDR0NvbG9yU3BhY2VSZWYsIGNvbnN0IEhvc3RXaW5kb3cqKTsKKyAgICBzdGF0aWMg
c3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kPiBjcmVhdGUoY29uc3Qg
UGFyYW1ldGVycyYsIGNvbnN0IEhvc3RXaW5kb3cqKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVf
cHRyPEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kPiBjcmVhdGUoY29uc3QgUGFyYW1ldGVycyYs
IGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpOwogCiAgICAgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
KCkgY29uc3Qgb3ZlcnJpZGU7CiAKKyAgICBJbnRTaXplIGJhY2tlbmRTaXplKCkgY29uc3Qgb3Zl
cnJpZGU7CisKICAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IGNvcHlOYXRpdmVJbWFnZShCYWNraW5n
U3RvcmVDb3B5ID0gQ29weUJhY2tpbmdTdG9yZSkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBWZWN0
b3I8dWludDhfdD4gdG9CR1JBRGF0YSgpIGNvbnN0IG92ZXJyaWRlOwpAQCAtNTIsNyArNTQsNyBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzT3JpZ2luQXRVcHBlckxlZnRD
b3JuZXIgPSB0cnVlOwogCiBwcml2YXRlOgotICAgIEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5k
KGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEludFNpemUmIHBoeXNpY2FsU2l6
ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlLCBQaXhlbEZvcm1hdCwgdm9pZCog
ZGF0YSwgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiYmLCBzdGQ6OnVuaXF1ZV9wdHI8R3Jh
cGhpY3NDb250ZXh0PiYmKTsKKyAgICBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZChjb25zdCBQ
YXJhbWV0ZXJzJiwgdm9pZCogZGF0YSwgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiYmLCBz
dGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NDb250ZXh0PiYmKTsKIAogICAgIHZvaWQqIG1fZGF0YTsK
ICAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+IG1fZGF0YVByb3ZpZGVyOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1
cmZhY2VCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5jcHAKaW5kZXggYWQzZmYxZDc5NzcyMDM3NjQwZTJk
Njk5NTQxMjg4NjBiNzc0OGMzNi4uZDNmNDMxMDc2YjhlZjJiYjcxZDEyODlkMWNiNzZkODczMzdi
NmQ4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1h
Z2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuY3BwCkBAIC02NCwxMyAr
NjQsMTMgQEAgUmV0YWluUHRyPENHQ29sb3JTcGFjZVJlZj4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VC
YWNrZW5kOjpjb250ZXh0Q29sb3JTcGFjZShjb25zdAogICAgIHJldHVybiBJbWFnZUJ1ZmZlckNH
QmFja2VuZDo6Y29udGV4dENvbG9yU3BhY2UoY29udGV4dCk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0
cjxJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ+IEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2Vu
ZDo6Y3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBD
b2xvclNwYWNlIGNvbG9yU3BhY2UsIENHQ29sb3JTcGFjZVJlZiBjZ0NvbG9yU3BhY2UsIFBpeGVs
Rm9ybWF0IHBpeGVsRm9ybWF0LCBjb25zdCBIb3N0V2luZG93KiBob3N0V2luZG93KQorc3RkOjp1
bmlxdWVfcHRyPEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZD4gSW1hZ2VCdWZmZXJJT1N1cmZh
Y2VCYWNrZW5kOjpjcmVhdGUoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycywgQ0dDb2xvclNw
YWNlUmVmIGNnQ29sb3JTcGFjZSwgY29uc3QgSG9zdFdpbmRvdyogaG9zdFdpbmRvdykKIHsKLSAg
ICBJbnRTaXplIGJhY2tlbmRTaXplID0gY2FsY3VsYXRlQmFja2VuZFNpemUoc2l6ZSwgcmVzb2x1
dGlvblNjYWxlKTsKKyAgICBJbnRTaXplIGJhY2tlbmRTaXplID0gY2FsY3VsYXRlQmFja2VuZFNp
emUocGFyYW1ldGVycy5sb2dpY2FsU2l6ZSwgcGFyYW1ldGVycy5yZXNvbHV0aW9uU2NhbGUpOwog
ICAgIGlmIChiYWNrZW5kU2l6ZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
Ci0gICAgYXV0byBzdXJmYWNlID0gSU9TdXJmYWNlOjpjcmVhdGUoYmFja2VuZFNpemUsIGJhY2tl
bmRTaXplLCBjZ0NvbG9yU3BhY2UsIElPU3VyZmFjZTo6Zm9ybWF0Rm9yUGl4ZWxGb3JtYXQocGl4
ZWxGb3JtYXQpKTsKKyAgICBhdXRvIHN1cmZhY2UgPSBJT1N1cmZhY2U6OmNyZWF0ZShiYWNrZW5k
U2l6ZSwgYmFja2VuZFNpemUsIGNnQ29sb3JTcGFjZSwgSU9TdXJmYWNlOjpmb3JtYXRGb3JQaXhl
bEZvcm1hdChwYXJhbWV0ZXJzLnBpeGVsRm9ybWF0KSk7CiAgICAgaWYgKCFzdXJmYWNlKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtODAsMjQgKzgwLDI0IEBAIHN0ZDo6dW5pcXVlX3B0
cjxJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ+IEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2Vu
ZDo6Y3JlYXRlCiAKICAgICBDR0NvbnRleHRDbGVhclJlY3QoY2dDb250ZXh0LmdldCgpLCBGbG9h
dFJlY3QoRmxvYXRQb2ludDo6emVybygpLCBiYWNrZW5kU2l6ZSkpOwogCi0gICAgcmV0dXJuIG1h
a2VVbmlxdWU8SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kPihzaXplLCBiYWNrZW5kU2l6ZSwg
cmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCwgV1RGTW92ZShzdXJmYWNl
KSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kPihw
YXJhbWV0ZXJzLCBXVEZNb3ZlKHN1cmZhY2UpKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEltYWdl
QnVmZmVySU9TdXJmYWNlQmFja2VuZD4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpjcmVh
dGUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBjb25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQp
CitzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kPiBJbWFnZUJ1ZmZl
cklPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBj
b25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiB7Ci0gICAgaWYgKGF1dG8gY2dDb2xvclNw
YWNlID0gY29udGV4dENvbG9yU3BhY2UoY29udGV4dCkpCi0gICAgICAgIHJldHVybiBJbWFnZUJ1
ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZShzaXplLCAxLCBDb2xvclNwYWNlOjpTUkdCLCBj
Z0NvbG9yU3BhY2UuZ2V0KCksIFBpeGVsRm9ybWF0OjpCR1JBOCwgbnVsbHB0cik7Ci0gICAgCi0g
ICAgcmV0dXJuIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlKHNpemUsIDEsIENv
bG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCwgbnVsbHB0cik7CisgICAgaWYgKGF1
dG8gY2dDb2xvclNwYWNlID0gY29udGV4dC5oYXNQbGF0Zm9ybUNvbnRleHQoKSA/IGNvbnRleHRD
b2xvclNwYWNlKGNvbnRleHQpIDogbnVsbHB0cikKKyAgICAgICAgcmV0dXJuIEltYWdlQnVmZmVy
SU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlKHBhcmFtZXRlcnMsIGNnQ29sb3JTcGFjZS5nZXQoKSwg
bnVsbHB0cik7CisKKyAgICByZXR1cm4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpjcmVh
dGUocGFyYW1ldGVycywgbnVsbHB0cik7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZl
cklPU3VyZmFjZUJhY2tlbmQ+IEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlKGNv
bnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNv
bG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBjb25zdCBIb3N0V2luZG93KiBob3N0
V2luZG93KQorc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZD4gSW1h
Z2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGUoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1l
dGVycywgY29uc3QgSG9zdFdpbmRvdyogaG9zdFdpbmRvdykKIHsKLSAgICByZXR1cm4gSW1hZ2VC
dWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGUoc2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xv
clNwYWNlLCBjYWNoZWRDR0NvbG9yU3BhY2UoY29sb3JTcGFjZSksIHBpeGVsRm9ybWF0LCBob3N0
V2luZG93KTsKKyAgICByZXR1cm4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGUo
cGFyYW1ldGVycywgY2FjaGVkQ0dDb2xvclNwYWNlKHBhcmFtZXRlcnMuY29sb3JTcGFjZSksIGhv
c3RXaW5kb3cpOwogfQogCi1JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OkltYWdlQnVmZmVy
SU9TdXJmYWNlQmFja2VuZChjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBJbnRT
aXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9y
U3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNl
PiYmIHN1cmZhY2UpCi0gICAgOiBJbWFnZUJ1ZmZlckNHQmFja2VuZChsb2dpY2FsU2l6ZSwgYmFj
a2VuZFNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQpCitJbWFn
ZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OkltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZChjb25z
dCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiYmIHN1
cmZhY2UpCisgICAgOiBJbWFnZUJ1ZmZlckNHQmFja2VuZChwYXJhbWV0ZXJzKQogICAgICwgbV9z
dXJmYWNlKFdURk1vdmUoc3VyZmFjZSkpCiB7CiAgICAgQVNTRVJUKG1fc3VyZmFjZSk7CkBAIC0x
MjAsNiArMTIwLDExIEBAIHZvaWQgSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpmbHVzaENv
bnRleHQoKQogICAgIENHQ29udGV4dEZsdXNoKGNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKSk7
CiB9CiAKK0ludFNpemUgSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpiYWNrZW5kU2l6ZSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc3VyZmFjZS0+c2l6ZSgpOworfQorCiBzaXplX3QgSW1h
Z2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjptZW1vcnlDb3N0KCkgY29uc3QKIHsKICAgICByZXR1
cm4gbV9zdXJmYWNlLT50b3RhbEJ5dGVzKCk7CkBAIC0xNDgsMTAgKzE1MywxMCBAQCBSZWZQdHI8
TmF0aXZlSW1hZ2U+IEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6c2lua0ludG9OYXRpdmVJ
bWFnZSgpCiB2b2lkIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6ZHJhd0NvbnN1bWluZyhH
cmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRp
b25zKQogewogICAgIEZsb2F0UmVjdCBhZGp1c3RlZFNyY1JlY3QgPSBzcmNSZWN0OwotICAgIGFk
anVzdGVkU3JjUmVjdC5zY2FsZShtX3Jlc29sdXRpb25TY2FsZSk7CisgICAgYWRqdXN0ZWRTcmNS
ZWN0LnNjYWxlKHJlc29sdXRpb25TY2FsZSgpKTsKIAogICAgIGlmIChhdXRvIGltYWdlID0gc2lu
a0ludG9OYXRpdmVJbWFnZSgpKQotICAgICAgICBkZXN0Q29udGV4dC5kcmF3TmF0aXZlSW1hZ2Uo
KmltYWdlLCBtX2JhY2tlbmRTaXplLCBkZXN0UmVjdCwgYWRqdXN0ZWRTcmNSZWN0LCBvcHRpb25z
KTsKKyAgICAgICAgZGVzdENvbnRleHQuZHJhd05hdGl2ZUltYWdlKCppbWFnZSwgYmFja2VuZFNp
emUoKSwgZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVjdCwgb3B0aW9ucyk7CiB9CiAKIFJldGFpblB0
cjxDRkRhdGFSZWY+IEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6dG9DRkRhdGEoY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5LCBQcmVzZXJ2ZVJlc29s
dXRpb24gcHJlc2VydmVSZXNvbHV0aW9uKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJh
Y2tlbmQuaAppbmRleCBkZTk4MjExMWU1MmMxMmVkYjA4ZGM3ODhiNTBlY2VmYjM2NTA3NjUwLi40
ODU5ZGY2ZmM1MjVkODVjMzI4YzE0NWYwNzkxNzgzNTY5MDllMjVkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tl
bmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZl
cklPU3VyZmFjZUJhY2tlbmQuaApAQCAtMzksMTUgKzM5LDE3IEBAIGNsYXNzIFdFQkNPUkVfRVhQ
T1JUIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZCA6IHB1YmxpYyBJbWFnZUJ1ZmZlckNHQmFj
a2VuZCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIEludFNpemUgY2FsY3VsYXRlQmFja2VuZFNpemUo
Y29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlKTsKIAot
ICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kPiBj
cmVhdGUoY29uc3QgRmxvYXRTaXplJiwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNl
LCBDR0NvbG9yU3BhY2VSZWYsIFBpeGVsRm9ybWF0LCBjb25zdCBIb3N0V2luZG93Kik7Ci0gICAg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ+IGNyZWF0
ZShjb25zdCBGbG9hdFNpemUmLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UsIFBp
eGVsRm9ybWF0LCBjb25zdCBIb3N0V2luZG93Kik7Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ+IGNyZWF0ZShjb25zdCBGbG9hdFNpemUmLCBj
b25zdCBHcmFwaGljc0NvbnRleHQmKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdl
QnVmZmVySU9TdXJmYWNlQmFja2VuZD4gY3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmLCBDR0NvbG9y
U3BhY2VSZWYsIGNvbnN0IEhvc3RXaW5kb3cqKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRy
PEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZD4gY3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmLCBj
b25zdCBIb3N0V2luZG93Kik7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZl
cklPU3VyZmFjZUJhY2tlbmQ+IGNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiwgY29uc3QgR3JhcGhp
Y3NDb250ZXh0Jik7CiAKLSAgICBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQoY29uc3QgRmxv
YXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50U2l6ZSYgcGh5c2ljYWxTaXplLCBmbG9hdCBy
ZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UsIFBpeGVsRm9ybWF0LCBzdGQ6OnVuaXF1ZV9wdHI8
SU9TdXJmYWNlPiYmKTsKKyAgICBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQoY29uc3QgUGFy
YW1ldGVycyYsIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+JiYpOwogCiAgICAgR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBmbHVzaENvbnRleHQo
KSBvdmVycmlkZTsKIAorICAgIEludFNpemUgYmFja2VuZFNpemUoKSBjb25zdCBvdmVycmlkZTsK
KyAgICAKICAgICBzaXplX3QgbWVtb3J5Q29zdCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHNpemVf
dCBleHRlcm5hbE1lbW9yeUNvc3QoKSBjb25zdCBvdmVycmlkZTsKIApAQCAtNjksNyArNzEsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCByZWxlYXNlQnVmZmVyVG9Qb29sKCkgb3ZlcnJpZGU7CiAKICAg
ICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNPcmlnaW5BdFVwcGVyTGVmdENvcm5lciA9IHRydWU7
Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzQWNjZWxlcmF0ZWQgPSB0cnVlOworICAgIHN0
YXRpYyBjb25zdGV4cHIgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlID0gUmVuZGVyaW5nTW9k
ZTo6QWNjZWxlcmF0ZWQ7CiAKIHByb3RlY3RlZDoKICAgICBzdGF0aWMgUmV0YWluUHRyPENHQ29s
b3JTcGFjZVJlZj4gY29udGV4dENvbG9yU3BhY2UoY29uc3QgR3JhcGhpY3NDb250ZXh0Jik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdC5oCmluZGV4IDI2ZmM5NzMwNzIxMTI3MzAzOTNlMmRjYmM4N2QwYzZi
OWNhNTQyNTguLjE2YjE5N2Y5ZWUyZDI4ZGJlOTIxZDkzMDk0M2Q0MzA0NjFkZmNkODYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdC5oCkBAIC0zMyw3ICszMyw2IEBACiAjaW5jbHVkZSA8d3RmL0Zhc3RN
YWxsb2MuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5
YWJsZS5oPgotI2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC00NSw5ICs0
NCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKIAot
ZW51bSBGbHVzaElkZW50aWZpZXJUeXBlIHsgfTsKLXVzaW5nIEZsdXNoSWRlbnRpZmllciA9IE9i
amVjdElkZW50aWZpZXI8Rmx1c2hJZGVudGlmaWVyVHlwZT47Ci0KIGVudW0gQXNUZXh0RmxhZyB7
CiAgICAgTm9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDAsCiAgICAgSW5jbHVkZXNQ
bGF0Zm9ybU9wZXJhdGlvbnMgICAgICA9IDEgPDwgMCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEZsdXNoSWRlbnRp
Zmllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0Rmx1c2hJZGVudGlmaWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWNmNzgxNjhlYmI3ZmM3Mzdi
OWI0YTZjZjhkNTM3MjlmNWEwNjBlYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEZsdXNoSWRlbnRpZmll
ci5oCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1
ZGUgPHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFt
ZXNwYWNlIERpc3BsYXlMaXN0IHsKKworZW51bSBGbHVzaElkZW50aWZpZXJUeXBlIHsgfTsKK3Vz
aW5nIEZsdXNoSWRlbnRpZmllciA9IE9iamVjdElkZW50aWZpZXI8Rmx1c2hJZGVudGlmaWVyVHlw
ZT47CisKK30gLy8gRGlzcGxheUxpc3QKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0SW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdEltYWdlQnVmZmVyLmgKaW5kZXggZjViMjIzNDAyYWViMzc3
MjhiNzMwMWZiNjY3MTE4YTNiMmU4YjA0MC4uYTY1ZmNhNTU5YTE2NWZjNmIyZDg2MjNmMzUzZTEx
NjQ3MjkzNzc2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5o
CkBAIC0zNCwyNiArMzQsMjkgQEAgbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKIHRlbXBsYXRlPHR5
cGVuYW1lIEJhY2tlbmRUeXBlPgogY2xhc3MgSW1hZ2VCdWZmZXIgOiBwdWJsaWMgQ29uY3JldGVJ
bWFnZUJ1ZmZlcjxCYWNrZW5kVHlwZT4gewogICAgIHVzaW5nIEJhc2VDb25jcmV0ZUltYWdlQnVm
ZmVyID0gQ29uY3JldGVJbWFnZUJ1ZmZlcjxCYWNrZW5kVHlwZT47CisgICAgdXNpbmcgQmFzZUNv
bmNyZXRlSW1hZ2VCdWZmZXI6OmxvZ2ljYWxTaXplOworICAgIHVzaW5nIEJhc2VDb25jcmV0ZUlt
YWdlQnVmZmVyOjpiYXNlVHJhbnNmb3JtOwogCiBwdWJsaWM6CiAgICAgc3RhdGljIGF1dG8gY3Jl
YXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNw
YWNlIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBjb25zdCBIb3N0V2luZG93
KiBob3N0V2luZG93KQogICAgIHsKLSAgICAgICAgcmV0dXJuIEJhc2VDb25jcmV0ZUltYWdlQnVm
ZmVyOjp0ZW1wbGF0ZSBjcmVhdGU8SW1hZ2VCdWZmZXI+KHNpemUsIHJlc29sdXRpb25TY2FsZSwg
Y29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQsIGhvc3RXaW5kb3csIHNpemUpOworICAgICAgICByZXR1
cm4gQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXI6OnRlbXBsYXRlIGNyZWF0ZTxJbWFnZUJ1ZmZlcj4o
c2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCwgaG9zdFdpbmRv
dyk7CiAgICAgfQogCiAgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6
ZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogICAgIHsKLSAgICAgICAgcmV0dXJu
IEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyOjp0ZW1wbGF0ZSBjcmVhdGU8SW1hZ2VCdWZmZXI+KHNp
emUsIGNvbnRleHQsIHNpemUpOworICAgICAgICByZXR1cm4gQmFzZUNvbmNyZXRlSW1hZ2VCdWZm
ZXI6OnRlbXBsYXRlIGNyZWF0ZTxJbWFnZUJ1ZmZlcj4oc2l6ZSwgY29udGV4dCk7CiAgICAgfQog
Ci0gICAgSW1hZ2VCdWZmZXIoc3RkOjp1bmlxdWVfcHRyPEJhY2tlbmRUeXBlPiYmIGRhdGFCYWNr
ZW5kLCBjb25zdCBGbG9hdFNpemUmIHNpemUpCi0gICAgICAgIDogQmFzZUNvbmNyZXRlSW1hZ2VC
dWZmZXIoV1RGTW92ZShkYXRhQmFja2VuZCkpCi0gICAgICAgICwgbV9kcmF3aW5nQ29udGV4dChz
aXplLCBpbml0aWFsRHJhd2luZ0NvbnRleHRDVE0oc2l6ZSkpCisgICAgSW1hZ2VCdWZmZXIoY29u
c3QgSW1hZ2VCdWZmZXJCYWNrZW5kOjpQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBzdGQ6OnVuaXF1
ZV9wdHI8QmFja2VuZFR5cGU+JiYgYmFja2VuZCkKKyAgICAgICAgOiBCYXNlQ29uY3JldGVJbWFn
ZUJ1ZmZlcihwYXJhbWV0ZXJzLCBXVEZNb3ZlKGJhY2tlbmQpKQorICAgICAgICAsIG1fZHJhd2lu
Z0NvbnRleHQobG9naWNhbFNpemUoKSwgYmFzZVRyYW5zZm9ybSgpKQogICAgIHsKICAgICB9CiAK
LSAgICBJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIFJlY29yZGVyOjpEZWxlZ2F0
ZSogZGVsZWdhdGUgPSBudWxscHRyKQotICAgICAgICA6IG1fZHJhd2luZ0NvbnRleHQoc2l6ZSwg
aW5pdGlhbERyYXdpbmdDb250ZXh0Q1RNKHNpemUpLCBkZWxlZ2F0ZSkKKyAgICBJbWFnZUJ1ZmZl
cihjb25zdCBJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIFJlY29y
ZGVyOjpEZWxlZ2F0ZSogZGVsZWdhdGUgPSBudWxscHRyKQorICAgICAgICA6IEJhc2VDb25jcmV0
ZUltYWdlQnVmZmVyKHBhcmFtZXRlcnMpCisgICAgICAgICwgbV9kcmF3aW5nQ29udGV4dChsb2dp
Y2FsU2l6ZSgpLCBiYXNlVHJhbnNmb3JtKCksIGRlbGVnYXRlKQogICAgIHsKICAgICB9CiAKQEAg
LTc3LDE1ICs4MCw2IEBAIHB1YmxpYzoKIAogcHJvdGVjdGVkOgogICAgIERyYXdpbmdDb250ZXh0
IG1fZHJhd2luZ0NvbnRleHQ7Ci0KLXByaXZhdGU6Ci0gICAgc3RhdGljIEFmZmluZVRyYW5zZm9y
bSBpbml0aWFsRHJhd2luZ0NvbnRleHRDVE0oY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSkK
LSAgICB7Ci0gICAgICAgIEFmZmluZVRyYW5zZm9ybSBpbml0aWFsQ1RNOwotICAgICAgICBpZiAo
QmFja2VuZFR5cGU6OmlzT3JpZ2luQXRVcHBlckxlZnRDb3JuZXIpCi0gICAgICAgICAgICBpbml0
aWFsQ1RNID0gaW5pdGlhbENUTS5zY2FsZSgxLCAtMSkudHJhbnNsYXRlKDAsIC1sb2dpY2FsU2l6
ZS5oZWlnaHQoKSk7Ci0gICAgICAgIHJldHVybiBpbml0aWFsQ1RNOwotICAgIH0KIH07CiAKIH0g
Ly8gRGlzcGxheUxpc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9JbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQuY3BwCmluZGV4
IDM3OGFhZjRjNDBjNGUxMjJhY2JlMDY5NDMyYzdhZDdlYzIwOWVkNzMuLjAxZDJlNzgwMjg1YjEx
ZmVjMzliNGNkMjZiZjRjZmZmMDgwNzMzNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0MkRC
YWNrZW5kLmNwcApAQCAtMTcxLDcgKzE3MSw3IEBAIHN0YXRpYyBSZWZQdHI8SW1hZ2U+IGNyZWF0
ZUJpdG1hcEltYWdlQWZ0ZXJTY2FsaW5nSWZOZWVkZWQoSUQyRDFCaXRtYXBSZW5kZXJUYXJnCiBS
ZWZQdHI8SW1hZ2U+IEltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpjb3B5SW1hZ2UoQmFja2lu
Z1N0b3JlQ29weSBjb3B5QmVoYXZpb3IsIFByZXNlcnZlUmVzb2x1dGlvbiBwcmVzZXJ2ZVJlc29s
dXRpb24pIGNvbnN0CiB7CiAgICAgUGxhdGZvcm1JbWFnZVB0ciBpbWFnZTsKLSAgICBpZiAobV9y
ZXNvbHV0aW9uU2NhbGUgPT0gMSB8fCBwcmVzZXJ2ZVJlc29sdXRpb24gPT0gUHJlc2VydmVSZXNv
bHV0aW9uOjpZZXMpCisgICAgaWYgKHJlc29sdXRpb25TY2FsZSgpID09IDEgfHwgcHJlc2VydmVS
ZXNvbHV0aW9uID09IFByZXNlcnZlUmVzb2x1dGlvbjo6WWVzKQogICAgICAgICBpbWFnZSA9IGNv
cHlOYXRpdmVJbWFnZShjb3B5QmVoYXZpb3IpLT5wbGF0Zm9ybUltYWdlKCk7CiAgICAgZWxzZQog
ICAgICAgICBpbWFnZSA9IGNvcHlOYXRpdmVJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSktPnBs
YXRmb3JtSW1hZ2UoKTsKQEAgLTI2OSw3ICsyNjksNyBAQCBQbGF0Zm9ybUltYWdlUHRyIEltYWdl
QnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpjb21wYXRpYmxlQml0bWFwKElEMkQxUmVuZGVyVGFyZ2V0
Kgogdm9pZCBJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6ZHJhdyhHcmFwaGljc0NvbnRleHQm
IGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIEZs
b2F0UmVjdCBhZGp1c3RlZFNyY1JlY3QgPSBzcmNSZWN0OwotICAgIGFkanVzdGVkU3JjUmVjdC5z
Y2FsZShtX3Jlc29sdXRpb25TY2FsZSwgbV9yZXNvbHV0aW9uU2NhbGUpOworICAgIGFkanVzdGVk
U3JjUmVjdC5zY2FsZShyZXNvbHV0aW9uU2NhbGUoKSk7CiAKICAgICBhdXRvIGNvbXBhdGlibGVC
aXRtYXAgPSBjb21wYXRpYmxlQml0bWFwKGRlc3RDb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLT5y
ZW5kZXJUYXJnZXQoKSk7CiAKQEAgLTI4Myw3ICsyODMsNyBAQCB2b2lkIEltYWdlQnVmZmVyRGly
ZWN0MkRCYWNrZW5kOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZs
b2F0Ugogdm9pZCBJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6ZHJhd1BhdHRlcm4oR3JhcGhp
Y3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zv
cm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIEZsb2F0UmVjdCBhZGp1
c3RlZFNyY1JlY3QgPSBzcmNSZWN0OwotICAgIGFkanVzdGVkU3JjUmVjdC5zY2FsZShtX3Jlc29s
dXRpb25TY2FsZSk7CisgICAgYWRqdXN0ZWRTcmNSZWN0LnNjYWxlKHJlc29sdXRpb25TY2FsZSgp
KTsKIAogICAgIGlmIChhdXRvIGltYWdlID0gY29weUltYWdlKCZkZXN0Q29udGV4dCA9PSAmY29u
dGV4dCgpID8gQ29weUJhY2tpbmdTdG9yZSA6IERvbnRDb3B5QmFja2luZ1N0b3JlKSkKICAgICAg
ICAgaW1hZ2UtPmRyYXdQYXR0ZXJuKGRlc3RDb250ZXh0LCBkZXN0UmVjdCwgYWRqdXN0ZWRTcmNS
ZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgb3B0aW9ucyk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIu
aCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5o
CmluZGV4IDRkNWQwMjUzYmFhMzZlNTQ1N2U0ODE2NDUzODI0MzdlMzE5YTg1NzguLmU2MTNhZDAw
NGM0NjNhZTMzYzM4OTVkMDQ4MzEyZDNlNDJlNTc3ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oCkBAIC00OSwxMiAr
NDksMTIgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXI6
OnRlbXBsYXRlIGNyZWF0ZTxSZW1vdGVJbWFnZUJ1ZmZlcj4oc2l6ZSwgcmVzb2x1dGlvblNjYWxl
LCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCwgbnVsbHB0ciwgcmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZCwgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB9CiAKLSAgICBSZW1vdGVJbWFn
ZUJ1ZmZlcihzdGQ6OnVuaXF1ZV9wdHI8QmFja2VuZFR5cGU+JiYgYmFja2VuZCwgUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZCYgcmVtb3RlUmVuZGVyaW5nQmFja2VuZCwgV2ViQ29yZTo6UmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKLSAgICAgICAg
OiBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZlcihXVEZNb3ZlKGJhY2tlbmQpLCByZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIpCisgICAgUmVtb3RlSW1hZ2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6SW1h
Z2VCdWZmZXJCYWNrZW5kOjpQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBzdGQ6OnVuaXF1ZV9wdHI8
QmFja2VuZFR5cGU+JiYgYmFja2VuZCwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZCYgcmVtb3RlUmVu
ZGVyaW5nQmFja2VuZCwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcikKKyAgICAgICAgOiBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZl
cihwYXJhbWV0ZXJzLCBXVEZNb3ZlKGJhY2tlbmQpLCByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIpCiAgICAgICAgICwgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kKHJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQpCiAgICAgICAgICwgbV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIocmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyKQogICAgIHsKLSAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kLmltYWdlQnVmZmVyQmFja2VuZFdhc0NyZWF0ZWQobV9iYWNrZW5kLT5sb2dpY2FsU2l6ZSgp
LCBtX2JhY2tlbmQtPmJhY2tlbmRTaXplKCksIG1fYmFja2VuZC0+cmVzb2x1dGlvblNjYWxlKCks
IG1fYmFja2VuZC0+Y29sb3JTcGFjZSgpLCBtX2JhY2tlbmQtPnBpeGVsRm9ybWF0KCksIG1fYmFj
a2VuZC0+Y3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKCksIHJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcik7CisgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC5kaWRDcmVhdGVJ
bWFnZUJ1ZmZlckJhY2tlbmQobV9iYWNrZW5kLT5jcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5k
bGUoKSwgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB9CiAKICAgICB+UmVtb3Rl
SW1hZ2VCdWZmZXIoKQpAQCAtNjUsMTcgKzY1LDYgQEAgcHVibGljOgogICAgICAgICAgICAgY29u
dGV4dCgpLnJlc3RvcmUoKTsKICAgICB9CiAKLSAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVw
bGF5UmVzdWx0IHN1Ym1pdERpc3BsYXlMaXN0KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpE
aXNwbGF5TGlzdCYgZGlzcGxheUxpc3QpCi0gICAgewotICAgICAgICBpZiAoZGlzcGxheUxpc3Qu
aXNFbXB0eSgpKQotICAgICAgICAgICAgcmV0dXJuIHsgfTsKLQotICAgICAgICBjb25zdCBhdXRv
JiBpbWFnZUJ1ZmZlcnMgPSBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQucmVtb3RlUmVzb3VyY2VD
YWNoZSgpLmltYWdlQnVmZmVycygpOwotICAgICAgICBjb25zdCBhdXRvJiBuYXRpdmVJbWFnZXMg
PSBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQucmVtb3RlUmVzb3VyY2VDYWNoZSgpLm5hdGl2ZUlt
YWdlcygpOwotICAgICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVwbGF5ZXIgcmVwbGF5ZXIg
eyBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZlcjo6Y29udGV4dCgpLCBkaXNwbGF5TGlzdCwgJmltYWdl
QnVmZmVycywgJm5hdGl2ZUltYWdlcywgdGhpcyB9OwotICAgICAgICByZXR1cm4gcmVwbGF5ZXIu
cmVwbGF5KCk7Ci0gICAgfQotCiBwcml2YXRlOgogICAgIGJvb2wgYXBwbHkoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6Okl0ZW1IYW5kbGUgaXRlbSwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0KSBvdmVycmlkZQogICAgIHsKQEAgLTEwMSw2ICs5MCwxNyBAQCBwcml2YXRlOgogICAgICAg
ICByZXR1cm4gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmFwcGx5TWVkaWFJdGVtKGl0ZW0sIGNv
bnRleHQpOwogICAgIH0KIAorICAgIHZvaWQgc3VibWl0RGlzcGxheUxpc3QoY29uc3QgV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCkgb3ZlcnJpZGUKKyAgICB7
CisgICAgICAgIGlmIChkaXNwbGF5TGlzdC5pc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgY29uc3QgYXV0byYgaW1hZ2VCdWZmZXJzID0gbV9yZW1vdGVSZW5kZXJpbmdC
YWNrZW5kLnJlbW90ZVJlc291cmNlQ2FjaGUoKS5pbWFnZUJ1ZmZlcnMoKTsKKyAgICAgICAgY29u
c3QgYXV0byYgbmF0aXZlSW1hZ2VzID0gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLnJlbW90ZVJl
c291cmNlQ2FjaGUoKS5uYXRpdmVJbWFnZXMoKTsKKyAgICAgICAgV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OlJlcGxheWVyIHJlcGxheWVyIHsgQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXI6OmNvbnRleHQo
KSwgZGlzcGxheUxpc3QsICZpbWFnZUJ1ZmZlcnMsICZuYXRpdmVJbWFnZXMsIHRoaXMgfTsKKyAg
ICAgICAgcmVwbGF5ZXIucmVwbGF5KCk7CisgICAgfQorCiAgICAgUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZCYgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kOwogICAgIFdlYkNvcmU6OlJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllciBtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcjsKIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5n
QmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZC5jcHAKaW5kZXggNmRkZWIwMjc5MjllNTA0ZjgzYjBhMTg2YzdlZWFiOGU1
YjlkNjg3Mi4uMjJkYTk5OGJmOTkwMjJiNmM1MWNlMjM4MTllOWVjZmRlZWQyYTM3ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kLmNwcApAQCAtOTksOSArOTksOSBAQCBib29sIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQ6OmFwcGx5TWVkaWFJdGVtKERpc3BsYXlMaXN0OjpJdGVtSGFuZGxlIGl0ZW0sIEdy
YXBoaQogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6
OmltYWdlQnVmZmVyQmFja2VuZFdhc0NyZWF0ZWQoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6
ZSwgY29uc3QgSW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29s
b3JTcGFjZSBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgSW1hZ2VCdWZmZXJC
YWNrZW5kSGFuZGxlIGhhbmRsZSwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllcikKK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6ZGlkQ3Jl
YXRlSW1hZ2VCdWZmZXJCYWNrZW5kKEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBoYW5kbGUsIFJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCiB7
Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpJbWFnZUJ1
ZmZlckJhY2tlbmRXYXNDcmVhdGVkKGxvZ2ljYWxTaXplLCBiYWNrZW5kU2l6ZSwgcmVzb2x1dGlv
blNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCwgV1RGTW92ZShoYW5kbGUpLCByZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIpLCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OkRpZENyZWF0ZUlt
YWdlQnVmZmVyQmFja2VuZChXVEZNb3ZlKGhhbmRsZSksIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllciksIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOwogfQogCiB2b2lkIFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmQ6OmRpZEZsdXNoKERpc3BsYXlMaXN0OjpGbHVzaElkZW50aWZpZXIgZmx1
c2hJZGVudGlmaWVyLCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyKQpAQCAtMTQ4LDEwICsxNDgsNyBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQ6OmFwcGx5RGlzcGxheUxpc3RzRnJvbUhhbmRsZShJbWFnZUJ1ZmZlciYgZGVzdGluYXRp
bwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKGRlc3RpbmF0
aW9uLmlzQWNjZWxlcmF0ZWQoKSkKLSAgICAgICAgICAgIHN0YXRpY19jYXN0PEFjY2VsZXJhdGVk
UmVtb3RlSW1hZ2VCdWZmZXImPihkZXN0aW5hdGlvbikuc3VibWl0RGlzcGxheUxpc3QoKmRpc3Bs
YXlMaXN0KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgc3RhdGljX2Nhc3Q8VW5hY2NlbGVy
YXRlZFJlbW90ZUltYWdlQnVmZmVyJj4oZGVzdGluYXRpb24pLnN1Ym1pdERpc3BsYXlMaXN0KCpk
aXNwbGF5TGlzdCk7CisgICAgICAgIGRlc3RpbmF0aW9uLnN1Ym1pdERpc3BsYXlMaXN0KCpkaXNw
bGF5TGlzdCk7CiAKICAgICAgICAgQ2hlY2tlZFNpemUgY2hlY2tlZE9mZnNldCA9IG9mZnNldDsK
ICAgICAgICAgY2hlY2tlZE9mZnNldCArPSBzaXplVG9SZWFkOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaCBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgK
aW5kZXggNjQwNjY2OGZhZTA1MDU3ZTlkZjMyNjRmNTc1MjQ5NDg5ZDcwNWM3OC4uNTkxOWU5NTY0
ZjY2M2RmMzlmZmIzYzE1YjE1YTNiOGMzMjMwZjVmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCkBA
IC03MCw3ICs3MCw3IEBAIHB1YmxpYzoKICAgICBib29sIGFwcGx5TWVkaWFJdGVtKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpJdGVtSGFuZGxlLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmKTsKIAog
ICAgIC8vIE1lc3NhZ2VzIHRvIGJlIHNlbnQuCi0gICAgdm9pZCBpbWFnZUJ1ZmZlckJhY2tlbmRX
YXNDcmVhdGVkKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IFdl
YkNvcmU6OkludFNpemUmIGJhY2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNv
cmU6OkNvbG9yU3BhY2UsIFdlYkNvcmU6OlBpeGVsRm9ybWF0LCBJbWFnZUJ1ZmZlckJhY2tlbmRI
YW5kbGUsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CisgICAgdm9pZCBk
aWRDcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQoSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLCBXZWJD
b3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIHZvaWQgZGlkRmx1c2goV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OkZsdXNoSWRlbnRpZmllciwgV2ViQ29yZTo6UmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyKTsKIAogICAgIHZvaWQgc2V0TmV4dEl0ZW1CdWZmZXJUb1JlYWQoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVC
aXRtYXBCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcAppbmRleCA4NTVjODk0OTY2YzU4
N2JiMGU2YWVjNTExOWRlNGI5NDQ1MDg3ZDRiLi40Yzk2NDJjMzFkNzM5NzFiZDdhZjQ1YmY1NTUy
ZWJmMWZlM2M0NzExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1h
cEJhY2tlbmQuY3BwCkBAIC00MywxNyArNDMsMTcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1h
cEJhY2tlbmQpOwogCi1zdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBC
YWNrZW5kPiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmNyZWF0ZShjb25zdCBG
bG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNw
YWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgY29uc3QgSG9zdFdpbmRvdyopCitzdGQ6OnVu
aXF1ZV9wdHI8SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kPiBJbWFnZUJ1ZmZlclNo
YXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJz
LCBjb25zdCBIb3N0V2luZG93KikKIHsKLSAgICBBU1NFUlQocGl4ZWxGb3JtYXQgPT0gUGl4ZWxG
b3JtYXQ6OkJHUkE4KTsKKyAgICBBU1NFUlQocGFyYW1ldGVycy5waXhlbEZvcm1hdCA9PSBQaXhl
bEZvcm1hdDo6QkdSQTgpOwogCi0gICAgSW50U2l6ZSBiYWNrZW5kU2l6ZSA9IGNhbGN1bGF0ZUJh
Y2tlbmRTaXplKHNpemUsIHJlc29sdXRpb25TY2FsZSk7CisgICAgSW50U2l6ZSBiYWNrZW5kU2l6
ZSA9IGNhbGN1bGF0ZUJhY2tlbmRTaXplKHBhcmFtZXRlcnMubG9naWNhbFNpemUsIHBhcmFtZXRl
cnMucmVzb2x1dGlvblNjYWxlKTsKICAgICBpZiAoYmFja2VuZFNpemUuaXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIFNoYXJlYWJsZUJpdG1hcDo6Q29uZmlndXJhdGlv
biBjb25maWd1cmF0aW9uOwogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIGNvbmZpZ3VyYXRpb24u
Y29sb3JTcGFjZSA9IHsgY2FjaGVkQ0dDb2xvclNwYWNlKGNvbG9yU3BhY2UpIH07CisgICAgY29u
ZmlndXJhdGlvbi5jb2xvclNwYWNlID0geyBjYWNoZWRDR0NvbG9yU3BhY2UocGFyYW1ldGVycy5j
b2xvclNwYWNlKSB9OwogI2VuZGlmCiAgICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6
OmNyZWF0ZVNoYXJlYWJsZShiYWNrZW5kU2l6ZSwgY29uZmlndXJhdGlvbik7CiAgICAgaWYgKCFi
aXRtYXApCkBAIC02MywxMCArNjMsMTAgQEAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyU2hh
cmVhYmxlQml0bWFwQmFja2VuZD4gSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWMKICAgICBp
ZiAoIWNvbnRleHQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIG1ha2VV
bmlxdWU8SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kPihzaXplLCBiYWNrZW5kU2l6
ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCwgV1RGTW92ZShiaXRt
YXApLCBXVEZNb3ZlKGNvbnRleHQpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxJbWFnZUJ1ZmZl
clNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ+KHBhcmFtZXRlcnMsIFdURk1vdmUoYml0bWFwKSwgV1RG
TW92ZShjb250ZXh0KSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlclNoYXJlYWJs
ZUJpdG1hcEJhY2tlbmQ+IEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6Y3JlYXRl
KGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEludFNpemUmIGJhY2tlbmRTaXpl
LCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgUGl4ZWxGb3Jt
YXQgcGl4ZWxGb3JtYXQsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBoYW5kbGUpCitzdGQ6OnVu
aXF1ZV9wdHI8SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kPiBJbWFnZUJ1ZmZlclNo
YXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJz
LCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgaGFuZGxlKQogewogICAgIGlmICghV1RGOjpob2xk
c19hbHRlcm5hdGl2ZTxTaGFyZWFibGVCaXRtYXA6OkhhbmRsZT4oaGFuZGxlKSkgewogICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTgxLDExICs4MSwxMSBAQCBzdGQ6OnVuaXF1ZV9w
dHI8SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kPiBJbWFnZUJ1ZmZlclNoYXJlYWJs
ZUJpdG1hcEJhYwogICAgIGlmICghY29udGV4dCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
LSAgICByZXR1cm4gbWFrZVVuaXF1ZTxJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ+
KGxvZ2ljYWxTaXplLCBiYWNrZW5kU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBw
aXhlbEZvcm1hdCwgV1RGTW92ZShiaXRtYXApLCBXVEZNb3ZlKGNvbnRleHQpKTsKKyAgICByZXR1
cm4gbWFrZVVuaXF1ZTxJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ+KHBhcmFtZXRl
cnMsIFdURk1vdmUoYml0bWFwKSwgV1RGTW92ZShjb250ZXh0KSk7CiB9CiAKLUltYWdlQnVmZmVy
U2hhcmVhYmxlQml0bWFwQmFja2VuZDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5k
KGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEludFNpemUmIHBoeXNpY2FsU2l6
ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFBpeGVsRm9y
bWF0IHBpeGVsRm9ybWF0LCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiYmIGJpdG1hcCwgc3RkOjp1
bmlxdWVfcHRyPEdyYXBoaWNzQ29udGV4dD4mJiBjb250ZXh0KQotICAgIDogUGxhdGZvcm1JbWFn
ZUJ1ZmZlckJhY2tlbmQobG9naWNhbFNpemUsIHBoeXNpY2FsU2l6ZSwgcmVzb2x1dGlvblNjYWxl
LCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCkKK0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFj
a2VuZDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kKGNvbnN0IFBhcmFtZXRlcnMm
IHBhcmFtZXRlcnMsIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+JiYgYml0bWFwLCBzdGQ6OnVuaXF1
ZV9wdHI8R3JhcGhpY3NDb250ZXh0PiYmIGNvbnRleHQpCisgICAgOiBQbGF0Zm9ybUltYWdlQnVm
ZmVyQmFja2VuZChwYXJhbWV0ZXJzKQogICAgICwgbV9iaXRtYXAoV1RGTW92ZShiaXRtYXApKQog
ICAgICwgbV9jb250ZXh0KFdURk1vdmUoY29udGV4dCkpCiB7CkBAIC05OCw2ICs5OCwxMSBAQCBJ
bWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5k
OjpjcmVhdGVJbWFnZUJ1ZmZlckJhYwogICAgIHJldHVybiBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5k
bGUoV1RGTW92ZShoYW5kbGUpKTsKIH0KIAorSW50U2l6ZSBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJp
dG1hcEJhY2tlbmQ6OmJhY2tlbmRTaXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9iaXRtYXAt
PnNpemUoKTsKK30KKwogUmVmUHRyPE5hdGl2ZUltYWdlPiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJp
dG1hcEJhY2tlbmQ6OmNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5KSBjb25zdAogewog
I2lmIFVTRShDRykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2Vu
ZC5oCmluZGV4IDBjN2YwNDdmODgzNWU0YjhkNjNjMTVmNDFlYzkyMTAyZTQ1ODUzOTkuLjU1NTA2
YTQ5ZDAzZTM5ZTg4ZTAzNjFlNDkxNTVmMTMxZDc5OTAxMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBC
YWNrZW5kLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFn
ZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuaApAQCAtNDMsMTQgKzQzLDE2IEBAIGNsYXNz
IEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZCA6IHB1YmxpYyBXZWJDb3JlOjpQbGF0
Zm9ybUltYWdlQnVmZmVyQmFjCiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChJbWFnZUJ1ZmZl
clNoYXJlYWJsZUJpdG1hcEJhY2tlbmQpOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEltYWdl
QnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZCk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHN0ZDo6
dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ+IGNyZWF0ZShjb25z
dCBXZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBmbG9hdCByZXNvbHV0aW9u
U2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UsIFdlYkNvcmU6OlBpeGVsRm9ybWF0LCBjb25zdCBX
ZWJDb3JlOjpIb3N0V2luZG93Kik7Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1
ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpGbG9hdFNp
emUmIGxvZ2ljYWxTaXplLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBpbnRlcm5hbFNpemUsIGZs
b2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSwgV2ViQ29yZTo6UGl4ZWxG
b3JtYXQsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSk7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVl
X3B0cjxJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ+IGNyZWF0ZShjb25zdCBQYXJh
bWV0ZXJzJiwgY29uc3QgV2ViQ29yZTo6SG9zdFdpbmRvdyopOworICAgIHN0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kPiBjcmVhdGUoY29uc3Qg
UGFyYW1ldGVycyYsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSk7CiAKLSAgICBJbWFnZUJ1ZmZl
clNoYXJlYWJsZUJpdG1hcEJhY2tlbmQoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBsb2dpY2Fs
U2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgcGh5c2ljYWxTaXplLCBmbG9hdCByZXNvbHV0
aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UsIFdlYkNvcmU6OlBpeGVsRm9ybWF0LCBSZWZQ
dHI8U2hhcmVhYmxlQml0bWFwPiYmLCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0PiYmKTsKKyAgICBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQoY29uc3Qg
UGFyYW1ldGVycyYsIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+JiYsIHN0ZDo6dW5pcXVlX3B0cjxX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ+JiYpOwogCiAgICAgSW1hZ2VCdWZmZXJCYWNrZW5kSGFu
ZGxlIGNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSgpIGNvbnN0OwogCiAgICAgV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gKm1f
Y29udGV4dDsgfQorICAgIAorICAgIFdlYkNvcmU6OkludFNpemUgYmFja2VuZFNpemUoKSBjb25z
dCBvdmVycmlkZTsKIAogICAgIFJlZlB0cjxXZWJDb3JlOjpOYXRpdmVJbWFnZT4gY29weU5hdGl2
ZUltYWdlKFdlYkNvcmU6OkJhY2tpbmdTdG9yZUNvcHkgPSBXZWJDb3JlOjpDb3B5QmFja2luZ1N0
b3JlKSBjb25zdCBvdmVycmlkZTsKICAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2U+IGNvcHlJbWFn
ZShXZWJDb3JlOjpCYWNraW5nU3RvcmVDb3B5ID0gV2ViQ29yZTo6Q29weUJhY2tpbmdTdG9yZSwg
V2ViQ29yZTo6UHJlc2VydmVSZXNvbHV0aW9uID0gV2ViQ29yZTo6UHJlc2VydmVSZXNvbHV0aW9u
OjpObykgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1BsYXRmb3JtUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9QbGF0Zm9ybVJlbW90ZUltYWdlQnVmZmVy
UHJveHkuaAppbmRleCAwNTE3Njc4M2Q1NTMxYmZlNzBmODUwYmYyYzE0OWY3ODgyMmQwZTM5Li45
YWZmMDg4ZTM3Y2E3NmE3Zjg2NGFlN2U0MmJiYjcwMDRmMWYxNTIzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1BsYXRmb3JtUmVtb3RlSW1hZ2VCdWZm
ZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUGxh
dGZvcm1SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgKQEAgLTM3LDE0ICszNyw0IEBAIHVzaW5nIEFj
Y2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXJQcm94eSA9IFJlbW90ZUltYWdlQnVmZmVyUHJveHk8
QWNjZWxlcmF0ZWRJbWFnCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCi1TUEVDSUFMSVpFX1RZ
UEVfVFJBSVRTX0JFR0lOKFdlYktpdDo6VW5hY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyUHJv
eHkpCi0gICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OkltYWdlQnVmZmVyJiBp
bWFnZUJ1ZmZlcikgeyByZXR1cm4gaW1hZ2VCdWZmZXIucmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyKCkgJiYgIWltYWdlQnVmZmVyLmlzQWNjZWxlcmF0ZWQoKTsgfQotU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19FTkQoKQotCi0jaWYgSEFWRShJT1NVUkZBQ0UpCi1TUEVDSUFMSVpFX1RZUEVfVFJB
SVRTX0JFR0lOKFdlYktpdDo6QWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlclByb3h5KQotICAg
IHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpJbWFnZUJ1ZmZlciYgaW1hZ2VCdWZm
ZXIpIHsgcmV0dXJuIGltYWdlQnVmZmVyLnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpICYm
IGltYWdlQnVmZmVyLmlzQWNjZWxlcmF0ZWQoKTsgfQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19F
TkQoKQotI2VuZGlmCi0KICNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVy
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1h
Z2VCdWZmZXJQcm94eS5oCmluZGV4IDUxYmQ1NzEyOTU4YWYxMmEyMzE1ZDQxYmEzZDJkNmI5ZWQ1
N2YyYmEuLjIyODJlMTNhYWJmNTNkNjQyZTg0NGQ0MjcwMWUwNjY1YzFkNTQzODMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZm
ZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlSW1hZ2VCdWZmZXJQcm94eS5oCkBAIC01MCwxNCArNTAsMTYgQEAgY2xhc3MgUmVtb3RlSW1h
Z2VCdWZmZXJQcm94eSA6IHB1YmxpYyBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SW1hZ2VCdWZmZXI8
QmFja2VuZFQKICAgICB1c2luZyBCYXNlRGlzcGxheUxpc3RJbWFnZUJ1ZmZlcjo6bV9iYWNrZW5k
OwogICAgIHVzaW5nIEJhc2VEaXNwbGF5TGlzdEltYWdlQnVmZmVyOjptX2RyYXdpbmdDb250ZXh0
OwogICAgIHVzaW5nIEJhc2VEaXNwbGF5TGlzdEltYWdlQnVmZmVyOjptX3JlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcjsKKyAgICB1c2luZyBCYXNlRGlzcGxheUxpc3RJbWFnZUJ1ZmZlcjo6cmVz
b2x1dGlvblNjYWxlOwogCiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxSZW1vdGVJbWFnZUJ1
ZmZlclByb3h5PiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBzaXplLCBXZWJDb3Jl
OjpSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2Vi
Q29yZTo6Q29sb3JTcGFjZSBjb2xvclNwYWNlLCBXZWJDb3JlOjpQaXhlbEZvcm1hdCBwaXhlbEZv
cm1hdCwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5JiByZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHkpCisgICAgc3RhdGljIFJlZlB0cjxSZW1vdGVJbWFnZUJ1ZmZlclByb3h5PiBjcmVhdGUo
Y29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdl
YkNvcmU6OkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgV2ViQ29yZTo6UGl4ZWxGb3JtYXQgcGl4ZWxG
b3JtYXQsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSYgcmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5KQogICAgIHsKICAgICAgICAgaWYgKEJhY2tlbmRUeXBlOjpjYWxjdWxhdGVCYWNrZW5k
U2l6ZShzaXplLCByZXNvbHV0aW9uU2NhbGUpLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVy
biBudWxscHRyOwogCi0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgUmVtb3RlSW1hZ2VCdWZm
ZXJQcm94eShzaXplLCByZW5kZXJpbmdNb2RlLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2Us
IHBpeGVsRm9ybWF0LCByZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpKTsKKyAgICAgICAgYXV0
byBwYXJhbWV0ZXJzID0gV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjpQYXJhbWV0ZXJzIHsg
c2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCB9OworICAgICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IFJlbW90ZUltYWdlQnVmZmVyUHJveHkocGFyYW1ldGVycywg
cmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KSk7CiAgICAgfQogCiAgICAgflJlbW90ZUltYWdl
QnVmZmVyUHJveHkoKQpAQCAtNjksMjcgKzcxLDYgQEAgcHVibGljOgogICAgICAgICBtX3JlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+cmVsZWFzZVJlbW90ZVJlc291cmNlKG1fcmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB9CiAKLSAgICB2b2lkIGNsZWFyQmFja2VuZCgpIHsg
bV9iYWNrZW5kID0gbnVsbHB0cjsgfQotCi0gICAgdm9pZCBjcmVhdGVCYWNrZW5kKGNvbnN0IFdl
YkNvcmU6OkZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGJh
Y2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UgY29s
b3JTcGFjZSwgV2ViQ29yZTo6UGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIEltYWdlQnVmZmVyQmFj
a2VuZEhhbmRsZSBoYW5kbGUpCi0gICAgewotICAgICAgICBBU1NFUlQoIW1fYmFja2VuZCk7Ci0g
ICAgICAgIG1fYmFja2VuZCA9IEJhY2tlbmRUeXBlOjpjcmVhdGUobG9naWNhbFNpemUsIGJhY2tl
bmRTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0LCBXVEZNb3Zl
KGhhbmRsZSkpOwotICAgIH0KLQotICAgIHZvaWQgZGlkRmx1c2goV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OkZsdXNoSWRlbnRpZmllciBmbHVzaElkZW50aWZpZXIpCi0gICAgewotICAgICAgICBhdXRv
IGxvY2tlciA9IGhvbGRMb2NrKG1fcmVjZWl2ZWRGbHVzaElkZW50aWZpZXJMb2NrKTsKLSAgICAg
ICAgbV9yZWNlaXZlZEZsdXNoSWRlbnRpZmllciA9IGZsdXNoSWRlbnRpZmllcjsKLSAgICAgICAg
bV9yZWNlaXZlZEZsdXNoSWRlbnRpZmllckNoYW5nZWRDb25kaXRpb24ubm90aWZ5QWxsKCk7Ci0g
ICAgfQotCi0gICAgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBzaXplKCkgY29uc3QgeyByZXR1
cm4gbV9zaXplOyB9Ci0gICAgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlKCkg
Y29uc3QgeyByZXR1cm4gbV9yZW5kZXJpbmdNb2RlOyB9Ci0gICAgZmxvYXQgcmVzb2x1dGlvblNj
YWxlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9yZXNvbHV0aW9uU2NhbGU7IH0KLSAgICBXZWJD
b3JlOjpDb2xvclNwYWNlIGNvbG9yU3BhY2UoKSBjb25zdCB7IHJldHVybiBtX2NvbG9yU3BhY2U7
IH0KLSAgICBXZWJDb3JlOjpQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCgpIGNvbnN0IHsgcmV0dXJu
IG1fcGl4ZWxGb3JtYXQ7IH0KLQogICAgIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBjcmVhdGVJ
bWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUoKQogICAgIHsKICAgICAgICAgZW5zdXJlQmFja2VuZENy
ZWF0ZWQoKTsKQEAgLTExMiwxNSArOTMsOSBAQCBwdWJsaWM6CiAgICAgfQogCiBwcm90ZWN0ZWQ6
Ci0gICAgZnJpZW5kIGNsYXNzIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ7Ci0gICAgUmVtb3RlSW1h
Z2VCdWZmZXJQcm94eShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHNpemUsIFdlYkNvcmU6OlJl
bmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3Jl
OjpDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFdlYkNvcmU6OlBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0
LCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkmIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eSkKLSAgICAgICAgOiBCYXNlRGlzcGxheUxpc3RJbWFnZUJ1ZmZlcihzaXplLCB0aGlzKQorICAg
IFJlbW90ZUltYWdlQnVmZmVyUHJveHkoY29uc3QgV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5k
OjpQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkmIHJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKKyAgICAgICAgOiBCYXNlRGlzcGxheUxpc3RJbWFn
ZUJ1ZmZlcihwYXJhbWV0ZXJzLCB0aGlzKQogICAgICAgICAsIG1fcmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5KG1ha2VXZWFrUHRyKHJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkpCi0gICAg
ICAgICwgbV9zaXplKHNpemUpCi0gICAgICAgICwgbV9yZW5kZXJpbmdNb2RlKHJlbmRlcmluZ01v
ZGUpCi0gICAgICAgICwgbV9yZXNvbHV0aW9uU2NhbGUocmVzb2x1dGlvblNjYWxlKQotICAgICAg
ICAsIG1fY29sb3JTcGFjZShjb2xvclNwYWNlKQotICAgICAgICAsIG1fcGl4ZWxGb3JtYXQocGl4
ZWxGb3JtYXQpCiAgICAgewogICAgICAgICBBU1NFUlQobV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHkpOwogICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+cmVtb3RlUmVz
b3VyY2VDYWNoZVByb3h5KCkuY2FjaGVJbWFnZUJ1ZmZlcigqdGhpcyk7CkBAIC0xMzEsNiArMTA2
LDEzIEBAIHByb3RlY3RlZDoKIAogICAgIGJvb2wgaGFzUGVuZGluZ0ZsdXNoKCkgY29uc3QgeyBy
ZXR1cm4gbV9zZW50Rmx1c2hJZGVudGlmaWVyICE9IG1fcmVjZWl2ZWRGbHVzaElkZW50aWZpZXI7
IH0KIAorICAgIHZvaWQgZGlkRmx1c2goV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZsdXNoSWRlbnRp
ZmllciBmbHVzaElkZW50aWZpZXIpIG92ZXJyaWRlCisgICAgeworICAgICAgICBhdXRvIGxvY2tl
ciA9IGhvbGRMb2NrKG1fcmVjZWl2ZWRGbHVzaElkZW50aWZpZXJMb2NrKTsKKyAgICAgICAgbV9y
ZWNlaXZlZEZsdXNoSWRlbnRpZmllciA9IGZsdXNoSWRlbnRpZmllcjsKKyAgICAgICAgbV9yZWNl
aXZlZEZsdXNoSWRlbnRpZmllckNoYW5nZWRDb25kaXRpb24ubm90aWZ5QWxsKCk7CisgICAgfQor
CiAgICAgdm9pZCB3YWl0Rm9yRGlkRmx1c2hXaXRoVGltZW91dCgpCiAgICAgewogICAgICAgICBp
ZiAoIW1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KQpAQCAtMTQ1LDcgKzEyNyw3IEBAIHBy
b3RlY3RlZDoKICAgICBCYWNrZW5kVHlwZSogZW5zdXJlQmFja2VuZENyZWF0ZWQoKSBjb25zdCBv
dmVycmlkZQogICAgIHsKICAgICAgICAgaWYgKCFtX2JhY2tlbmQgJiYgbV9yZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHkpCi0gICAgICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eS0+d2FpdEZvckltYWdlQnVmZmVyQmFja2VuZFdhc0NyZWF0ZWQoKTsKKyAgICAgICAgICAgIG1f
cmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT53YWl0Rm9yRGlkQ3JlYXRlSW1hZ2VCdWZmZXJC
YWNrZW5kKCk7CiAgICAgICAgIHJldHVybiBtX2JhY2tlbmQuZ2V0KCk7CiAgICAgfQogCkBAIC0x
NjksOCArMTUxLDggQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgcHV0SW1hZ2VEYXRhKFdlYkNvcmU6
OkFscGhhUHJlbXVsdGlwbGljYXRpb24gaW5wdXRGb3JtYXQsIGNvbnN0IFdlYkNvcmU6OkltYWdl
RGF0YSYgaW1hZ2VEYXRhLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzcmNSZWN0LCBjb25zdCBX
ZWJDb3JlOjpJbnRQb2ludCYgZGVzdFBvaW50ID0geyB9LCBXZWJDb3JlOjpBbHBoYVByZW11bHRp
cGxpY2F0aW9uIGRlc3RGb3JtYXQgPSBXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpQ
cmVtdWx0aXBsaWVkKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgLy8gVGhlIG1hdGggaW5zaWRl
IEltYWdlRGF0YTo6Y3JlYXRlKCkgZG9lc24ndCBhZ3JlZSB3aXRoIHRoZSBtYXRoIGluc2lkZSBJ
bWFnZUJ1ZmZlckJhY2tlbmQ6OnB1dEltYWdlRGF0YSgpIGFib3V0IGhvdyBtX3Jlc29sdXRpb25T
Y2FsZSBpbnRlcmFjdHMgd2l0aCB0aGUgZGF0YSBpbiB0aGUgSW1hZ2VCdWZmZXIuCi0gICAgICAg
IC8vIFRoaXMgbWVhbnMgdGhhdCBwdXRJbWFnZURhdGEoKSBpcyBvbmx5IGNhbGxlZCB3aGVuIG1f
cmVzb2x1dGlvblNjYWxlID09IDEuCi0gICAgICAgIEFTU0VSVF9JTVBMSUVTKG1fYmFja2VuZCwg
bV9iYWNrZW5kLT5yZXNvbHV0aW9uU2NhbGUoKSA9PSAxKTsKKyAgICAgICAgLy8gVGhpcyBtZWFu
cyB0aGF0IHB1dEltYWdlRGF0YSgpIGlzIG9ubHkgY2FsbGVkIHdoZW4gcmVzb2x1dGlvblNjYWxl
KCkgPT0gMS4KKyAgICAgICAgQVNTRVJUKHJlc29sdXRpb25TY2FsZSgpID09IDEpOwogICAgICAg
ICBtX2RyYXdpbmdDb250ZXh0LnJlY29yZGVyKCkucHV0SW1hZ2VEYXRhKGlucHV0Rm9ybWF0LCBp
bWFnZURhdGEsIHNyY1JlY3QsIGRlc3RQb2ludCwgZGVzdEZvcm1hdCk7CiAgICAgfQogCkBAIC0y
MDAsMTIgKzE4MiwxMiBAQCBwcm90ZWN0ZWQ6CiAKICAgICAgICAgbV9zZW50Rmx1c2hJZGVudGlm
aWVyID0gV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZsdXNoSWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsK
ICAgICAgICAgZGlzcGxheUxpc3QudGVtcGxhdGUgYXBwZW5kPFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpGbHVzaENvbnRleHQ+KG1fc2VudEZsdXNoSWRlbnRpZmllcik7Ci0gICAgICAgIG1fcmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5LT5zdWJtaXREaXNwbGF5TGlzdChkaXNwbGF5TGlzdCwgbV9y
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwotICAgICAgICBtX2l0ZW1Db3VudEluQ3VycmVu
dERpc3BsYXlMaXN0ID0gMDsKKyAgICAgICAgc3VibWl0RGlzcGxheUxpc3QoZGlzcGxheUxpc3Qp
OwogICAgICAgICBkaXNwbGF5TGlzdC5jbGVhcigpOworICAgICAgICBtX2l0ZW1Db3VudEluQ3Vy
cmVudERpc3BsYXlMaXN0ID0gMDsKICAgICB9CiAKLSAgICB2b2lkIHN1Ym1pdERpc3BsYXlMaXN0
KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QpCisg
ICAgdm9pZCBzdWJtaXREaXNwbGF5TGlzdChjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlz
cGxheUxpc3QmIGRpc3BsYXlMaXN0KSBvdmVycmlkZQogICAgIHsKICAgICAgICAgaWYgKCFtX3Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSB8fCBkaXNwbGF5TGlzdC5pc0VtcHR5KCkpCiAgICAg
ICAgICAgICByZXR1cm47CkBAIC0zNTMsMTEgKzMzNSw2IEBAIHByb3RlY3RlZDoKICAgICBXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6Rmx1c2hJZGVudGlmaWVyIG1fcmVjZWl2ZWRGbHVzaElkZW50aWZp
ZXI7CiAgICAgV2Vha1B0cjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk+IG1fcmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5OwogICAgIHNpemVfdCBtX2l0ZW1Db3VudEluQ3VycmVudERpc3Bs
YXlMaXN0IHsgMCB9OwotICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBtX3NpemU7Ci0gICAgV2ViQ29y
ZTo6UmVuZGVyaW5nTW9kZSBtX3JlbmRlcmluZ01vZGU7Ci0gICAgZmxvYXQgbV9yZXNvbHV0aW9u
U2NhbGU7Ci0gICAgV2ViQ29yZTo6Q29sb3JTcGFjZSBtX2NvbG9yU3BhY2U7Ci0gICAgV2ViQ29y
ZTo6UGl4ZWxGb3JtYXQgbV9waXhlbEZvcm1hdDsKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEJh
Y2tlbmRUeXBlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwCmluZGV4
IGMwN2IyM2ZiMmIwZTU4ZTBlMWRmZjVhMTRlZTBhODVkOWE1YjY0NWQuLjNkNmZmYzQ4MDEyZjMy
Yzk3NmY3Zjk5MjE0ODAwNTAzNWMwMDY4ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eS5jcHAKQEAgLTcwLDI0ICs3MCwxNSBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eTo6Y29ubmVjdFRvR1BVUHJvY2VzcygpCiAgICAgc2VuZChNZXNzYWdlczo6R1BV
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q3JlYXRlUmVuZGVyaW5nQmFja2VuZChtX3JlbmRlcmlu
Z0JhY2tlbmRJZGVudGlmaWVyKSwgMCk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdGF0
aWMgdm9pZCByZWNyZWF0ZUltYWdlQnVmZmVyKFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSYg
cHJveHksIFQmIGltYWdlQnVmZmVyLCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVzb3Vy
Y2VJZGVudGlmaWVyLCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciByZW5kZXJpbmdCYWNrZW5k
SWRlbnRpZmllcikKLXsKLSAgICBpbWFnZUJ1ZmZlci5jbGVhckJhY2tlbmQoKTsKLSAgICBwcm94
eS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpDcmVhdGVJbWFnZUJ1ZmZl
cihpbWFnZUJ1ZmZlci5zaXplKCksIGltYWdlQnVmZmVyLnJlbmRlcmluZ01vZGUoKSwgaW1hZ2VC
dWZmZXIucmVzb2x1dGlvblNjYWxlKCksIGltYWdlQnVmZmVyLmNvbG9yU3BhY2UoKSwgaW1hZ2VC
dWZmZXIucGl4ZWxGb3JtYXQoKSwgcmVzb3VyY2VJZGVudGlmaWVyKSwgcmVuZGVyaW5nQmFja2Vu
ZElkZW50aWZpZXIpOwotfQotCiB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6cmVl
c3RhYmxpc2hHUFVQcm9jZXNzQ29ubmVjdGlvbigpCiB7CiAgICAgY29ubmVjdFRvR1BVUHJvY2Vz
cygpOwogCi0gICAgZm9yIChhdXRvJiBwYWlyIDogbV9yZW1vdGVSZXNvdXJjZUNhY2hlUHJveHku
aW1hZ2VCdWZmZXJzKCkpIHsKLSAgICAgICAgaWYgKGF1dG8mIGJhc2VJbWFnZUJ1ZmZlciA9IHBh
aXIudmFsdWUpIHsKLSAgICAgICAgICAgIGlmIChpczxBY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVm
ZmVyUHJveHk+KCpiYXNlSW1hZ2VCdWZmZXIpKQotICAgICAgICAgICAgICAgIHJlY3JlYXRlSW1h
Z2VCdWZmZXIoKnRoaXMsIGRvd25jYXN0PEFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXJQcm94
eT4oKmJhc2VJbWFnZUJ1ZmZlciksIHBhaXIua2V5LCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlm
aWVyKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICByZWNyZWF0ZUltYWdlQnVm
ZmVyKCp0aGlzLCBkb3duY2FzdDxVbmFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXJQcm94eT4o
KmJhc2VJbWFnZUJ1ZmZlciksIHBhaXIua2V5LCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVy
KTsKLSAgICAgICAgfQorICAgIGZvciAoYXV0byYgaW1hZ2VCdWZmZXIgOiBtX3JlbW90ZVJlc291
cmNlQ2FjaGVQcm94eS5pbWFnZUJ1ZmZlcnMoKS52YWx1ZXMoKSkgeworICAgICAgICBpZiAoIWlt
YWdlQnVmZmVyKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OkNyZWF0ZUltYWdlQnVmZmVyKGltYWdlQnVmZmVyLT5s
b2dpY2FsU2l6ZSgpLCBpbWFnZUJ1ZmZlci0+cmVuZGVyaW5nTW9kZSgpLCBpbWFnZUJ1ZmZlci0+
cmVzb2x1dGlvblNjYWxlKCksIGltYWdlQnVmZmVyLT5jb2xvclNwYWNlKCksIGltYWdlQnVmZmVy
LT5waXhlbEZvcm1hdCgpLCBpbWFnZUJ1ZmZlci0+cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
KCkpLCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKKyAgICAgICAgaW1hZ2VCdWZmZXIt
PmNsZWFyQmFja2VuZCgpOwogICAgIH0KIH0KIApAQCAtMTEyLDEwICsxMDMsMTAgQEAgdWludDY0
X3QgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjptZXNzYWdlU2VuZGVyRGVzdGluYXRpb25J
RCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIudG9VSW50
NjQoKTsKIH0KIAotYm9vbCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OndhaXRGb3JJbWFn
ZUJ1ZmZlckJhY2tlbmRXYXNDcmVhdGVkKCkKK2Jvb2wgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5Ojp3YWl0Rm9yRGlkQ3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kKCkKIHsKICAgICBSZWY8SVBD
OjpDb25uZWN0aW9uPiBjb25uZWN0aW9uID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJl
R1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCk7Ci0gICAgcmV0dXJuIGNvbm5lY3Rp
b24tPndhaXRGb3JBbmREaXNwYXRjaEltbWVkaWF0ZWx5PE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHk6OkltYWdlQnVmZmVyQmFja2VuZFdhc0NyZWF0ZWQ+KG1fcmVuZGVyaW5n
QmFja2VuZElkZW50aWZpZXIsIDFfcywgSVBDOjpXYWl0Rm9yT3B0aW9uOjpJbnRlcnJ1cHRXYWl0
aW5nSWZTeW5jTWVzc2FnZUFycml2ZXMpOworICAgIHJldHVybiBjb25uZWN0aW9uLT53YWl0Rm9y
QW5kRGlzcGF0Y2hJbW1lZGlhdGVseTxNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5OjpEaWRDcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQ+KG1fcmVuZGVyaW5nQmFja2VuZElkZW50
aWZpZXIsIDFfcywgSVBDOjpXYWl0Rm9yT3B0aW9uOjpJbnRlcnJ1cHRXYWl0aW5nSWZTeW5jTWVz
c2FnZUFycml2ZXMpOwogfQogCiBib29sIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6d2Fp
dEZvckRpZEZsdXNoKCkKQEAgLTEyOSwxMCArMTIwLDEwIEBAIFJlZlB0cjxJbWFnZUJ1ZmZlcj4g
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9h
dFNpCiAgICAgUmVmUHRyPEltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlcjsKIAogICAgIGlmIChyZW5k
ZXJpbmdNb2RlID09IFJlbmRlcmluZ01vZGU6OkFjY2VsZXJhdGVkKQotICAgICAgICBpbWFnZUJ1
ZmZlciA9IEFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6Y3JlYXRlKHNpemUsIHJl
bmRlcmluZ01vZGUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQsICp0
aGlzKTsKKyAgICAgICAgaW1hZ2VCdWZmZXIgPSBBY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVy
UHJveHk6OmNyZWF0ZShzaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9y
bWF0LCAqdGhpcyk7CiAKICAgICBpZiAoIWltYWdlQnVmZmVyKQotICAgICAgICBpbWFnZUJ1ZmZl
ciA9IFVuYWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlclByb3h5OjpjcmVhdGUoc2l6ZSwgcmVu
ZGVyaW5nTW9kZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCwgKnRo
aXMpOworICAgICAgICBpbWFnZUJ1ZmZlciA9IFVuYWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZl
clByb3h5OjpjcmVhdGUoc2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZv
cm1hdCwgKnRoaXMpOwogCiAgICAgaWYgKGltYWdlQnVmZmVyKSB7CiAgICAgICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OkNyZWF0ZUltYWdlQnVmZmVyKHNpemUsIHJl
bmRlcmluZ01vZGUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQsIGlt
YWdlQnVmZmVyLT5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSksIG1fcmVuZGVyaW5nQmFj
a2VuZElkZW50aWZpZXIpOwpAQCAtMTgzLDI4ICsxNzQsMjIgQEAgdm9pZCBSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHk6OnJlbGVhc2VSZW1vdGVSZXNvdXJjZShSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWYKICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpSZWxlYXNl
UmVtb3RlUmVzb3VyY2UocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSwgbV9yZW5kZXJpbmdC
YWNrZW5kSWRlbnRpZmllcik7CiB9CiAKLXZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
OjppbWFnZUJ1ZmZlckJhY2tlbmRXYXNDcmVhdGVkKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNp
emUsIGNvbnN0IEludFNpemUmIGJhY2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENv
bG9yU3BhY2UgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIEltYWdlQnVmZmVy
QmFja2VuZEhhbmRsZSBoYW5kbGUsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIpCit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6
ZGlkQ3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kKEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBoYW5k
bGUsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIpCiB7CiAgICAgYXV0byBpbWFnZUJ1ZmZlciA9IG1fcmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5
LmNhY2hlZEltYWdlQnVmZmVyKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAgaWYg
KCFpbWFnZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwotICAgIAotICAgIGlmIChpbWFnZUJ1ZmZl
ci0+aXNBY2NlbGVyYXRlZCgpKQotICAgICAgICBkb3duY2FzdDxBY2NlbGVyYXRlZFJlbW90ZUlt
YWdlQnVmZmVyUHJveHk+KCppbWFnZUJ1ZmZlcikuY3JlYXRlQmFja2VuZChsb2dpY2FsU2l6ZSwg
YmFja2VuZFNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQsIFdU
Rk1vdmUoaGFuZGxlKSk7CisKKyAgICBpZiAoaW1hZ2VCdWZmZXItPnJlbmRlcmluZ01vZGUoKSA9
PSBSZW5kZXJpbmdNb2RlOjpBY2NlbGVyYXRlZCkKKyAgICAgICAgaW1hZ2VCdWZmZXItPnNldEJh
Y2tlbmQoQWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlclNoYXJlYWJsZUJhY2tlbmQ6OmNyZWF0ZShpbWFn
ZUJ1ZmZlci0+cGFyYW1ldGVycygpLCBXVEZNb3ZlKGhhbmRsZSkpKTsKICAgICBlbHNlCi0gICAg
ICAgIGRvd25jYXN0PFVuYWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlclByb3h5PigqaW1hZ2VC
dWZmZXIpLmNyZWF0ZUJhY2tlbmQobG9naWNhbFNpemUsIGJhY2tlbmRTaXplLCByZXNvbHV0aW9u
U2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0LCBXVEZNb3ZlKGhhbmRsZSkpOworICAgICAg
ICBpbWFnZUJ1ZmZlci0+c2V0QmFja2VuZChVbmFjY2VsZXJhdGVkSW1hZ2VCdWZmZXJTaGFyZWFi
bGVCYWNrZW5kOjpjcmVhdGUoaW1hZ2VCdWZmZXItPnBhcmFtZXRlcnMoKSwgV1RGTW92ZShoYW5k
bGUpKSk7CiB9CiAKIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpkaWRGbHVzaChE
aXNwbGF5TGlzdDo6Rmx1c2hJZGVudGlmaWVyIGZsdXNoSWRlbnRpZmllciwgUmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKIHsKLSAgICBhdXRv
IGltYWdlQnVmZmVyID0gbV9yZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY2FjaGVkSW1hZ2VCdWZm
ZXIocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKLSAgICBpZiAoIWltYWdlQnVmZmVyKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoaW1hZ2VCdWZmZXItPmlzQWNjZWxlcmF0ZWQoKSkK
LSAgICAgICAgZG93bmNhc3Q8QWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlclByb3h5PigqaW1h
Z2VCdWZmZXIpLmRpZEZsdXNoKGZsdXNoSWRlbnRpZmllcik7Ci0gICAgZWxzZQotICAgICAgICBk
b3duY2FzdDxVbmFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXJQcm94eT4oKmltYWdlQnVmZmVy
KS5kaWRGbHVzaChmbHVzaElkZW50aWZpZXIpOworICAgIGlmIChhdXRvIGltYWdlQnVmZmVyID0g
bV9yZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY2FjaGVkSW1hZ2VCdWZmZXIocmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyKSkKKyAgICAgICAgaW1hZ2VCdWZmZXItPmRpZEZsdXNoKGZsdXNoSWRl
bnRpZmllcik7CiB9CiAKIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Ojp1cGRhdGVS
ZXVzYWJsZUhhbmRsZXMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmgKaW5k
ZXggOTVmOGQyYjQxMmZiOTFkZjc3YzY4ZjEzNmIwMDc4NmYwMjRkN2UyNi4uZjgwNWZjMWVmZjlj
YTUxNDUzNTljYTI5MmI1MmRkZmVlZjhkYTgxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eS5oCkBAIC04MSw3ICs4MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNhY2hlTmF0
aXZlSW1hZ2UoV2ViQ29yZTo6TmF0aXZlSW1hZ2UmKTsKICAgICB2b2lkIHJlbGVhc2VSZW1vdGVS
ZXNvdXJjZShXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogCi0gICAgYm9v
bCB3YWl0Rm9ySW1hZ2VCdWZmZXJCYWNrZW5kV2FzQ3JlYXRlZCgpOworICAgIGJvb2wgd2FpdEZv
ckRpZENyZWF0ZUltYWdlQnVmZmVyQmFja2VuZCgpOwogICAgIGJvb2wgd2FpdEZvckRpZEZsdXNo
KCk7CiAKIHByaXZhdGU6CkBAIC05NSw3ICs5NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1cGRh
dGVSZXVzYWJsZUhhbmRsZXMoKTsKIAogICAgIC8vIE1lc3NhZ2VzIHRvIGJlIHJlY2VpdmVkLgot
ICAgIHZvaWQgaW1hZ2VCdWZmZXJCYWNrZW5kV2FzQ3JlYXRlZChjb25zdCBXZWJDb3JlOjpGbG9h
dFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBiYWNrZW5kU2l6ZSwg
ZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlLCBXZWJDb3JlOjpQaXhl
bEZvcm1hdCwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIpOworICAgIHZvaWQgZGlkQ3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kKElt
YWdlQnVmZmVyQmFja2VuZEhhbmRsZSwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyKTsKICAgICB2b2lkIGRpZEZsdXNoKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpGbHVzaElkZW50
aWZpZXIsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAKICAgICBSZW1v
dGVSZXNvdXJjZUNhY2hlUHJveHkgbV9yZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkgeyAqdGhpcyB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5tZXNzYWdlcy5p
bgppbmRleCA5MjBkZTNmNzc3NTQwMTY0MDUxZmY1MWNkMjFiNTA1NTk4NTRmODQ0Li4zYTUzMmQ1
ZTRmZjYxNmJkYjA3ZWRlN2E5YTgzZTkzMTM3ZTczYmYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5t
ZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjMsNyArMjMsNyBAQAog
I2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogbWVzc2FnZXMgLT4gUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5IE5vdFJlZkNvdW50ZWQgewotICAgIEltYWdlQnVmZmVyQmFja2VuZFdhc0NyZWF0
ZWQoV2ViQ29yZTo6RmxvYXRTaXplIGxvZ2ljYWxTaXplLCBXZWJDb3JlOjpJbnRTaXplIGJhY2tl
bmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UgY29sb3JT
cGFjZSwgZW51bTp1aW50OF90IFdlYkNvcmU6OlBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBXZWJL
aXQ6OkltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBoYW5kbGUsIFdlYkNvcmU6OlJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCisgICAgRGlkQ3Jl
YXRlSW1hZ2VCdWZmZXJCYWNrZW5kKFdlYktpdDo6SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGhh
bmRsZSwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcikKICAgICBEaWRGbHVzaChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Rmx1c2hJ
ZGVudGlmaWVyIGZsdXNoSWRlbnRpZmllciwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJl
YWJsZUlPU3VyZmFjZUJhY2tlbmQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQuY3BwCmlu
ZGV4IDUxNjI3YzVlZGQ4OTFiOTRmMzYzOTFjMGFiNGMyODA4YzY4MGJlZmYuLmU0MTJlN2Y2M2Y0
MDg3ZjIxNzcyNDY4MmU5MzU4ZmI4NTg4ZmM1YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZh
Y2VCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZC5jcHAKQEAgLTM3LDEz
ICszNywxMyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogV1RGX01BS0VfSVNPX0FMTE9D
QVRFRF9JTVBMKEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZCk7CiAKLXN0ZDo6
dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQ+IEltYWdlQnVm
ZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6
ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFBpeGVsRm9y
bWF0IHBpeGVsRm9ybWF0LCBjb25zdCBIb3N0V2luZG93KikKK3N0ZDo6dW5pcXVlX3B0cjxJbWFn
ZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQ+IEltYWdlQnVmZmVyU2hhcmVhYmxlSU9T
dXJmYWNlQmFja2VuZDo6Y3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIGNvbnN0
IEhvc3RXaW5kb3cqKQogewotICAgIEludFNpemUgYmFja2VuZFNpemUgPSBjYWxjdWxhdGVCYWNr
ZW5kU2l6ZShzaXplLCByZXNvbHV0aW9uU2NhbGUpOworICAgIEludFNpemUgYmFja2VuZFNpemUg
PSBjYWxjdWxhdGVCYWNrZW5kU2l6ZShwYXJhbWV0ZXJzLmxvZ2ljYWxTaXplLCBwYXJhbWV0ZXJz
LnJlc29sdXRpb25TY2FsZSk7CiAgICAgaWYgKGJhY2tlbmRTaXplLmlzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvIHN1cmZhY2UgPSBJT1N1cmZhY2U6OmNyZWF0
ZShiYWNrZW5kU2l6ZSwgYmFja2VuZFNpemUsIGNhY2hlZENHQ29sb3JTcGFjZShjb2xvclNwYWNl
KSwgSU9TdXJmYWNlOjpmb3JtYXRGb3JQaXhlbEZvcm1hdChwaXhlbEZvcm1hdCkpOworICAgIGF1
dG8gc3VyZmFjZSA9IElPU3VyZmFjZTo6Y3JlYXRlKGJhY2tlbmRTaXplLCBiYWNrZW5kU2l6ZSwg
Y2FjaGVkQ0dDb2xvclNwYWNlKHBhcmFtZXRlcnMuY29sb3JTcGFjZSksIElPU3VyZmFjZTo6Zm9y
bWF0Rm9yUGl4ZWxGb3JtYXQocGFyYW1ldGVycy5waXhlbEZvcm1hdCkpOwogICAgIGlmICghc3Vy
ZmFjZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTUzLDIxICs1MywyMSBAQCBzdGQ6
OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kPiBJbWFnZUJ1
ZmZlclNoYXJlYWJsZUlPU3VyZgogCiAgICAgQ0dDb250ZXh0Q2xlYXJSZWN0KGNnQ29udGV4dC5n
ZXQoKSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQ6Onplcm8oKSwgYmFja2VuZFNpemUpKTsKIAotICAg
IHJldHVybiBtYWtlVW5pcXVlPEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZD4o
c2l6ZSwgYmFja2VuZFNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3Jt
YXQsIFdURk1vdmUoc3VyZmFjZSkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEltYWdlQnVmZmVy
U2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZD4ocGFyYW1ldGVycywgV1RGTW92ZShzdXJmYWNlKSk7
CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tl
bmQ+IEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlKGNvbnN0IEZs
b2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEludFNpemUmIGludGVybmFsU2l6ZSwgZmxvYXQg
cmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVs
Rm9ybWF0LCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgaGFuZGxlKQorc3RkOjp1bmlxdWVfcHRy
PEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZD4gSW1hZ2VCdWZmZXJTaGFyZWFi
bGVJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGUoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycywg
SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGhhbmRsZSkKIHsKICAgICBpZiAoIVdURjo6aG9sZHNf
YWx0ZXJuYXRpdmU8TWFjaFNlbmRSaWdodD4oaGFuZGxlKSkgewogICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgYXV0byBz
dXJmYWNlID0gSU9TdXJmYWNlOjpjcmVhdGVGcm9tU2VuZFJpZ2h0KFdURk1vdmUoV1RGOjpnZXQ8
TWFjaFNlbmRSaWdodD4oaGFuZGxlKSksIGNhY2hlZENHQ29sb3JTcGFjZShjb2xvclNwYWNlKSk7
CisgICAgYXV0byBzdXJmYWNlID0gSU9TdXJmYWNlOjpjcmVhdGVGcm9tU2VuZFJpZ2h0KFdURk1v
dmUoV1RGOjpnZXQ8TWFjaFNlbmRSaWdodD4oaGFuZGxlKSksIGNhY2hlZENHQ29sb3JTcGFjZShw
YXJhbWV0ZXJzLmNvbG9yU3BhY2UpKTsKICAgICBpZiAoIXN1cmZhY2UpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCi0gICAgcmV0dXJuIG1ha2VVbmlxdWU8SW1hZ2VCdWZmZXJTaGFyZWFibGVJ
T1N1cmZhY2VCYWNrZW5kPihsb2dpY2FsU2l6ZSwgaW50ZXJuYWxTaXplLCByZXNvbHV0aW9uU2Nh
bGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0LCBXVEZNb3ZlKHN1cmZhY2UpKTsKKyAgICByZXR1
cm4gbWFrZVVuaXF1ZTxJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQ+KHBhcmFt
ZXRlcnMsIFdURk1vdmUoc3VyZmFjZSkpOwogfQogCiBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUg
SW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlckJh
Y2tlbmRIYW5kbGUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQu
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZm
ZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kLmgKaW5kZXggZWQ1MTYyNGViMGFhMTA1MGUxM2Jm
YTE3ZWEzNGYwZmUzYzFmZmY2ZC4uMzE4OTIxNWYzM2FjYWI3OTAxZmFjYjUwNWYyYTVjMTM5OWEw
ZGU3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9j
b2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxl
SU9TdXJmYWNlQmFja2VuZC5oCkBAIC0zOSw4ICszOSw4IEBAIGNsYXNzIEltYWdlQnVmZmVyU2hh
cmVhYmxlSU9TdXJmYWNlQmFja2VuZCA6IHB1YmxpYyBXZWJDb3JlOjpJbWFnZUJ1ZmZlcklPU3Vy
ZmFjCiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3Vy
ZmFjZUJhY2tlbmQpOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEltYWdlQnVmZmVyU2hhcmVh
YmxlSU9TdXJmYWNlQmFja2VuZCk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQ+IGNyZWF0ZShjb25zdCBXZWJD
b3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBmbG9hdCByZXNvbHV0aW9uU2NhbGUs
IFdlYkNvcmU6OkNvbG9yU3BhY2UsIFdlYkNvcmU6OlBpeGVsRm9ybWF0LCBjb25zdCBXZWJDb3Jl
OjpIb3N0V2luZG93Kik7Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlclNo
YXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQ+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUm
IGxvZ2ljYWxTaXplLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBpbnRlcm5hbFNpemUsIGZsb2F0
IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSwgV2ViQ29yZTo6UGl4ZWxGb3Jt
YXQsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSk7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQ+IGNyZWF0ZShjb25zdCBQYXJh
bWV0ZXJzJiwgY29uc3QgV2ViQ29yZTo6SG9zdFdpbmRvdyopOworICAgIHN0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8SW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kPiBjcmVhdGUoY29u
c3QgUGFyYW1ldGVycyYsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSk7CiAKICAgICB1c2luZyBX
ZWJDb3JlOjpJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OkltYWdlQnVmZmVySU9TdXJmYWNl
QmFja2VuZDsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415395</attachid>
            <date>2020-12-04 01:48:59 -0800</date>
            <delta_ts>2020-12-04 10:54:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219007-20201204014858.patch</filename>
            <type>text/plain</type>
            <size>112621</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNDIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTQ3M2MxMzExMjYxOWFi
OTdlYTBjYmY0MjFhMzg1ZTkzZTM1ODA4My4uNTdjMjM1YTE3MDE1ZjI4YzhmYzc3YzMzNmI5NjA4
MzNiNWVkMTA4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExOCBAQAorMjAyMC0xMi0wNCAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3Nd
IENsZWFuIHVwIHJlY3JlYXRpbmcgdGhlIEltYWdlQnVmZmVyQmFja2VuZCBiZWNhdXNlIG9mIEdQ
VSBjcmFzaGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjE5MDA3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVG8gYWxsb3cgYW5zd2VyaW5nIHF1ZXN0aW9ucyBhYm91dCB0aGUgYmFja2VuZCBjcmVhdGlv
biBwYXJhbWV0ZXJzIHdpdGhvdXQKKyAgICAgICAgaGF2aW5nIHRoZSBiYWNrZW5kIGNyZWF0ZWQs
IHRoZSBuZXcgc3RydWN0dXJlIEltYWdlQnVmZmVyQmFja2VuZDo6UGFyYW1ldGVycworICAgICAg
ICBpcyBpbnRyb2R1Y2VkLgorCisgICAgICAgIFRoaXMgc3RydWN0dXJlIGNvbnRhaW5zIHRoZSBw
YXJhbWV0ZXJzIHdoaWNoIHdlcmUgcGFzc2VkIGJ5IHRoZSBjYWxsZXIgaW4KKyAgICAgICAgdGhl
IFdlYlByb2Nlc3MgYW5kIHdoaWNoIGFyZSBzdWZmaWNpZW50IHRvIHJlY3JlYXRlIFJlbW90ZUlt
YWdlQnVmZmVyIGlmCisgICAgICAgIHRoZSBHUFUgUHJvY2VzcyBjcmFzaGVzIGV2ZW4gYmVmb3Jl
IHRoZSBiYWNrZW5kIG9mIFJlbW90ZUltYWdlQnVmZmVyUHJveHkKKyAgICAgICAgaXMgY3JlYXRl
ZC4KKworICAgICAgICBDb25jcmV0ZUltYWdlQnVmZmVyIGFuZCBJbWFnZUJ1ZmZlckJhY2tlbmQg
d2lsbCBob2xkIGFuIGluc3RhbmNlIG9mIHRoZQorICAgICAgICBuZXcgc3RydWN0dXJlIEltYWdl
QnVmZmVyQmFja2VuZDo6UGFyYW1ldGVycy4KKworICAgICAgICBBbHNvIHJlcGxhY2UgYWxsIHRo
ZSBpbnN0YW5jZXMgb2YgJ2lzQWNjZWxlcmF0ZWQnIGJ5ICdyZW5kZXJpbmdNb2RlJy4gU28KKyAg
ICAgICAgbm8gbmVlZCB0byBjb252ZXJ0IG9uZSB0eXBlIHRvIHRoZSBvdGhlci4KKworICAgICAg
ICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbmNyZXRlSW1hZ2VCdWZmZXI6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDb25jcmV0ZUltYWdlQnVmZmVyOjpDb25jcmV0ZUltYWdlQnVmZmVyKToK
KyAgICAgICAgLS0gTWFrZSBDb25jcmV0ZUltYWdlQnVmZmVyIG93biBhbiBpbnN0YW5jZSBvZiBJ
bWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnMuCisgICAgICAgIC0tIEFkZCBtZXRob2RzIHRv
IHNldCBhbmQgY2xlYXIgdGhlIGJhY2tlbmQgb2YgYW4gSW1hZ2VCdWZmZXIuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VCdWZmZXI6OmJhY2tlbmQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6
OnN1Ym1pdERpc3BsYXlMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpkaWRG
bHVzaCk6CisgICAgICAgIC0tIEV4cG9zZSB0aGUgSW1hZ2VCdWZmZXJCYWNrZW5kIGNyZWF0aW9u
IHBhcmFtZXRlcnMgdGhyb3VnaCBtZXRob2RzLgorICAgICAgICAtLSBFeHBvc2Ugc3VibWl0RGlz
cGxheUxpc3QoKSBhbmQgZGlkRmx1c2goKSBzbyBubyBjYXN0aW5nIGlzIG5lZWRlZCB3aGVuCisg
ICAgICAgICAgIGNhbGxpbmcgdGhlc2UgZnVuY3Rpb25zIHRocm91Z2ggUmVtb3RlSW1hZ2VCdWZl
clByb3h5LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5k
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQmFja2VuZDo6SW1hZ2VCdWZmZXJC
YWNrZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQmFja2VuZDo6dG9CR1JBRGF0
YSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5k
Lmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OmJhY2tlbmRTaXplIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQmFja2VuZDo6bWVtb3J5Q29zdCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OmJ5dGVzUGVyUm93
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQmFja2VuZDo6dG9CYWNrZW5k
Q29vcmRpbmF0ZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5k
Ojpsb2dpY2FsU2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tl
bmQ6OnJlc29sdXRpb25TY2FsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZl
ckJhY2tlbmQ6OmNvbG9yU3BhY2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZm
ZXJCYWNrZW5kOjpwaXhlbEZvcm1hdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1
ZmZlckJhY2tlbmQ6OmxvZ2ljYWxSZWN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
QnVmZmVyQmFja2VuZDo6YmFja2VuZFJlY3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VCdWZmZXJCYWNrZW5kOjpiYXNlVHJhbnNmb3JtIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
LS0gQWRkIHRoZSBzdHJ1Y3R1cmUgSW1hZ2VCdWZmZXJCYWNrZW5kOjpQYXJhbWV0ZXJzLiAKKyAg
ICAgICAgLS0gTWFrZSBJbWFnZUJ1ZmZlckJhY2tlbmQgb3duIGFuIGluc3RhbmNlIG9mIHRoaXMg
c3RydWN0dXJlLgorICAgICAgICAtLSBNYWtlIGJhY2tlbmRTaXplKCkgYSBwdXJlIHZpcnR1YWwg
bWV0aG9kLgorICAgICAgICAtLSBEZWxldGUgYmFzZVRyYW5zZm9ybSgpIHNpbmNlIGl0IGlzIGlt
cGxlbWVudGVkIGluIENvbmNyZXRlSW1hZ2VCdWZmZXIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9QbGF0Zm9ybUltYWdlQnVmZmVyLmg6CisgICAgICAgIChpc1R5cGUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kOjpkcmF3UGF0dGVybik6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0ltYWdl
U3VyZmFjZUJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDYWlyb0lt
YWdlU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZl
ckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZDo6SW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJh
Y2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJh
Y2tlbmQ6OnBsYXRmb3JtVHJhbnNmb3JtQ29sb3JTcGFjZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJh
Y2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNr
ZW5kOjpJbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kOjpiYWNrZW5kU2l6ZSBjb25zdCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNr
ZW5kLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JhY2tl
bmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OnNldHVwQ29u
dGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNHQmFja2VuZDo6Y29w
eUltYWdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ0dCYWNrZW5kOjpz
aW5rSW50b0ltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ0dCYWNrZW5kOjpk
cmF3KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ0dCYWNrZW5kOjpkcmF3UGF0dGVy
bik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNHQmFja2VuZDo6dG9DRkRhdGEgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OmJhc2VUcmFuc2Zv
cm0gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
QnVmZmVyQ0dCYWNrZW5kLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VC
dWZmZXJDR0JpdG1hcEJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJD
R0JpdG1hcEJhY2tlbmQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNH
Qml0bWFwQmFja2VuZDo6SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmJhY2tlbmRTaXplIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpjb3B5TmF0aXZlSW1h
Z2UgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dC
aXRtYXBCYWNrZW5kLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZm
ZXJJT1N1cmZhY2VCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVySU9T
dXJmYWNlQmFja2VuZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVySU9T
dXJmYWNlQmFja2VuZDo6SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kKToKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6YmFja2VuZFNpemUgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpkcmF3Q29uc3Vt
aW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFj
ZUJhY2tlbmQuaDoKKyAgICAgICAgLS0gQ2hhbmdlIHRoZSBjcmVhdGUoKSBtZXRob2RzIHRvIHRh
a2UgYSAiUGFyYW1ldGVycyIgYXJndW1lbnQuCisgICAgICAgIC0tIFVzZSB0aGUgYmFja2VuZCBt
ZXRob2QgdG8gYWNjZXNzIHRoZSAiUGFyYW1ldGVycyIgc3RydWN0dXJlLgorCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0Lmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0Rmx1c2hJZGVudGlmaWVy
Lmg6IEFkZGVkLgorICAgICAgICBNb3ZlIERpc3BsYXlMaXN0Rmx1c2hJZGVudGlmaWVyIHRvIGEg
c2VwYXJhdGUgZmlsZSBzbyBpdCBjYW4gYmUgaW5jbHVkZWQKKyAgICAgICAgaW4gSW1hZ2VCdWZm
ZXIuaCB3aXRob3V0IGhhdmluZyB0byBpbmNsdWRlIERpc3BsYXlMaXN0LmguCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5o
OgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkltYWdlQnVmZmVyOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZlcik6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SW1hZ2VCdWZmZXI6OmluaXRpYWxEcmF3
aW5nQ29udGV4dENUTSk6IERlbGV0ZWQuCisgICAgICAgIC0tIE5vIG5lZWQgdG8gcGFzcyB0aGUg
J3NpemUnIGFyZ3VtZW50IHR3aWNlIGluIHRoZSAnY3JlYXRlJyBtZXRob2RzLiBUaGUKKyAgICAg
ICAgICAgc3RydWN0dXJlIFBhcmFtZXRlcnMgaGFzIHRvIGJlIHBhc3NlZCB0byB0aGUgY29uc3Ry
dWN0b3IgYW55d2F5LgorICAgICAgICAtLSBObyBuZWVkIGZvciBpbml0aWFsRHJhd2luZ0NvbnRl
eHRDVE0oKSBzaW5jZSBpdCBpcyBlcXVpdmFsZW50IHRvIAorICAgICAgICAgICBiYXNlVHJhbnNm
b3JtKCkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJl
Y3QyREJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJEaXJlY3QyREJh
Y2tlbmQ6OmNvcHlJbWFnZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckRp
cmVjdDJEQmFja2VuZDo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckRpcmVj
dDJEQmFja2VuZDo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAtLSBVc2UgdGhlIGJhY2tlbmQgbWV0
aG9kIHRvIGFjY2VzcyB0aGUgIlBhcmFtZXRlcnMiIHN0cnVjdHVyZS4KKwogMjAyMC0xMi0wMyAg
S2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4KIAogICAgICAgICBJc3N1
ZSBsb2dnaW5nIGluIHRvIE1pY3Jvc29mdCBUZWFtcyBpZiBsb2dnZWQgaW50byBvdGhlciBNaWNy
b3NvZnQgYWNjb3VudHMgYW5kIG5hdmlnYXRpbmcgZGlyZWN0bHkgdG8gdGVhbXMubWljcm9zb2Z0
LmNvbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwppbmRleCA3YzQwOTAwNTE0YWQ1NjRlZWJiYTQxMjMxMGJlZjJkYTVkOTNjZmQ1
Li4yODNiMDQ0OThkNzA4MzY4ODAzMTEyZWNjNmRhMWRlZDk5MGEzNDhiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAt
MSwzICsxLDk5IEBACisyMDIwLTEyLTA0ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUu
Y29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10gQ2xlYW4gdXAgcmVjcmVhdGluZyB0aGUgSW1h
Z2VCdWZmZXJCYWNrZW5kIGJlY2F1c2Ugb2YgR1BVIGNyYXNoaW5nCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTkwMDcKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGVyZSBpcyBubyBuZWVkIHRvIHN0b3Jl
IHRoZSBiYWNrZW5kIHBhcmFtZXRlcnMgaW4gUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS4KKyAgICAg
ICAgVGhlc2UgcGFyYW1ldGVycyBhcmUgbm93IHN0b3JlZCBpbiB0aGUgYmFzZSBjbGFzcyBJbWFn
ZUJ1ZmZlciBiZWZvcmUgdGhlCisgICAgICAgIGJhY2tlbmQgaXMgY3JlYXRlZC4KKworICAgICAg
ICBSZW1vdmUgdGhlIHRyYWl0cyBkZWZpbml0aW9uIGZvciBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5
IHR5cGVzIGJlY2F1c2UKKyAgICAgICAgdGhleSBhcmUgd3JvbmcuIEFsbCBJbWFnZUJ1ZmZlcnMg
aGF2ZSB2YWxpZCByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKQorICAgICAgICByZWdhcmRs
ZXNzIHdoZXRoZXIgdGhleSBhcmUgcmVtb3RlIG9yIG5vdC4gSW1hZ2VCdWZmZXI6OnNldEJhY2tl
bmQgYW5kCisgICAgICAgIEltYWdlQnVmZmVyOjpzdWJtaXREaXNwbGF5TGlzdCgpIGFyZSBub3cg
aW1wbGVtZW50ZWQgaW4gV2ViQ29yZS4gU28gbm8KKyAgICAgICAgY2FzdGluZyBpcyBuZWVkZWQu
CisKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmg6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyOjpSZW1vdGVJbWFnZUJ1ZmZlcik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyOjpzdWJtaXREaXNwbGF5TGlzdCk6IERl
bGV0ZWQuCisgICAgICAgIHN1Ym1pdERpc3BsYXlMaXN0KCkgaXMgbm93IGEgdmlydHVhbCBtZXRo
b2Qgb2YgSW1hZ2VCdWZmZXIuIFNvIG1ha2UgaXQKKyAgICAgICAgcHJpdmF0ZSBhbmQgaWdub3Jl
IHRoZSByZXR1cm4gb2YgRGlzcGxheUxpc3Q6OlJlcGxheWVyOjpyZXBsYXkoKSBzaW5jZSAKKyAg
ICAgICAgdGhlIGNhbGxlciBkb2VzIG5vdCB1c2UgaXQuCisKKyAgICAgICAgKiBHUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpkaWRDcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjphcHBseURpc3BsYXlMaXN0c0Zy
b21IYW5kbGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjppbWFn
ZUJ1ZmZlckJhY2tlbmRXYXNDcmVhdGVkKTogRGVsZXRlZC4KKyAgICAgICAgKiBHUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaDoKKyAgICAgICAgUmVuYW1lICdpbWFn
ZUJ1ZmZlckJhY2tlbmRXYXNDcmVhdGVkKCknIHRvICdkaWRDcmVhdGVJbWFnZUJ1ZmZlckJhY2tl
bmQoKScKKyAgICAgICAgdG8gYmUgY29uc2lzdGVudCB3aXRoICdkaWRGbHVzaCgpJy4KKworICAg
ICAgICAqIFNoYXJlZC9Db25jcmV0ZVNoYXJlYWJsZUltYWdlQnVmZmVyLmg6CisgICAgICAgIChX
ZWJLaXQ6OkNvbmNyZXRlU2hhcmVhYmxlSW1hZ2VCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJLaXQ6OkNvbmNyZXRlU2hhcmVhYmxlSW1hZ2VCdWZmZXI6OkNvbmNyZXRlU2hhcmVhYmxlSW1h
Z2VCdWZmZXIpOiBEZWxldGVkLgorICAgICAgICAqIFNoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVt
b3RlTGF5ZXJCYWNraW5nU3RvcmUubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFj
a2luZ1N0b3JlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllckJh
Y2tpbmdTdG9yZTo6c3dhcFRvVmFsaWRGcm9udEJ1ZmZlcik6CisgICAgICAgIENhbGwgdGhlIGZ1
bmN0aW9uIHdpdGggdGhlIG5ldyBuYW1lIGFuZCBkZWxldGUgdGhlIEZJWE1FIGNvbW1lbnQuCisK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJp
dG1hcEJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbWFnZUJ1ZmZlclNoYXJlYWJsZUJp
dG1hcEJhY2tlbmQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkltYWdlQnVmZmVyU2hhcmVh
YmxlQml0bWFwQmFja2VuZDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kKToKKyAg
ICAgICAgKFdlYktpdDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpiYWNrZW5k
U2l6ZSBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZm
ZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmg6CisgICAgICAgIFVzZSB0aGUgbmV3IHN0cnVjdHVy
ZSAnSW1hZ2VCdWZmZXJCYWNrZW5kOjpQYXJhbWV0ZXJzJy4gSW1wbGVtZW50IHRoZQorICAgICAg
ICB2aXJ0dWFsIG1ldGhvZCAnYmFja2VuZFNpemUoKScuCisKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9QbGF0Zm9ybVJlbW90ZUltYWdlQnVmZmVyUHJveHkuaDoKKyAgICAgICAg
KGlzVHlwZSk6IERlbGV0ZWQuCisgICAgICAgIERlbGV0ZSB0aGUgd3JvbmcgdHJhaXRzLgorCisg
ICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5o
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlclByb3h5OjpjcmVhdGUpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlclByb3h5OjpSZW1vdGVJbWFnZUJ1ZmZlclBy
b3h5KToKKyAgICAgICAgVXNlIHRoZSBuZXcgc3RydWN0dXJlICdJbWFnZUJ1ZmZlckJhY2tlbmQ6
OlBhcmFtZXRlcnMnLgorCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyUHJveHk6
OmNsZWFyQmFja2VuZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVm
ZmVyUHJveHk6OmNyZWF0ZUJhY2tlbmQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVJbWFnZUJ1ZmZlclByb3h5OjpkaWRGbHVzaCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUltYWdlQnVmZmVyUHJveHk6OnNpemUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlclByb3h5OjpyZW5kZXJpbmdNb2RlIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6Y29sb3JTcGFj
ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyUHJv
eHk6OnBpeGVsRm9ybWF0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgVGhlc2UgZnVuY3Rpb25z
IGFyZSBub3cgaW1wbGVtZW50ZWQgaW4gQ29uY3JldGVJbWFnZUJ1ZmZlci4KKworICAgICAgICAo
V2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlclByb3h5OjpzdWJtaXREaXNwbGF5TGlzdCk6IERlbGV0
ZWQuCisgICAgICAgIHN1Ym1pdERpc3BsYXlMaXN0KCkgaXMgbm93IHZpcnR1YWwuCisKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OnJlZXN0
YWJsaXNoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHk6OndhaXRGb3JEaWRDcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmNyZWF0ZUltYWdl
QnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Ojpk
aWRDcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHk6OmRpZEZsdXNoKToKKyAgICAgICAgKFdlYktpdDo6cmVjcmVhdGVJ
bWFnZUJ1ZmZlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eTo6d2FpdEZvckltYWdlQnVmZmVyQmFja2VuZFdhc0NyZWF0ZWQpOiBEZWxldGVk
LgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmltYWdlQnVm
ZmVyQmFja2VuZFdhc0NyZWF0ZWQpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oOgorICAgICAgICBObyBuZWVk
IHRvIGNhc3QgdGhlIEltYWdlQnVmZmVyIHRvIFJlbW90ZUltYWdlQnVmZmVyUHJveHkgc2luY2Ug
YWxsIHdoYXQKKyAgICAgICAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5IG5lZWRzIGNhbiBi
ZSBhY2Nlc3NlZCB0aHJvdWdoIHRoZSBiYXNlIGNsYXNzLgorCisgICAgICAgICogV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lm1lc3NhZ2VzLmluOgor
ICAgICAgICBSZW5hbWUgJ0ltYWdlQnVmZmVyQmFja2VuZFdhc0NyZWF0ZWQnIHRvICdEaWRDcmVh
dGVJbWFnZUJ1ZmZlckJhY2tlbmQnCisgICAgICAgIHRvIGJlIGNvbnNpc3RlbnQgd2l0aCAnRGlk
Rmx1c2gnLiBObyBuZWVkIHRvIHBhc3MgdGhlIGNyZWF0aW9uIHBhcmFtZXRlcnMKKyAgICAgICAg
c2luY2UgdGhleSBzZXQgaW4gdGhlIENvbmNyZXRlSW1hZ2VCdWZmZXIuIE5vIG5lZWQgdG8gcGFz
cyB0aGUgYmFja2VuZFNpemUKKyAgICAgICAgc2luY2UgaXQgY2FuIGJlIHJldHJpZXZlZCB0aHJv
dWdoIHRoZSBiYWNrZW5kIGl0c2VsZi4KKworICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OkltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRl
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNo
YXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpJbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElPU3VyZmFjZUJh
Y2tlbmQ6OmNyZWF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2Ev
SW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNrZW5kLmg6CisgICAgICAgIFVz
ZSB0aGUgbmV3IHN0cnVjdHVyZSAnSW1hZ2VCdWZmZXJCYWNrZW5kOjpQYXJhbWV0ZXJzJy4KKwog
MjAyMC0xMi0wMyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgog
CiAgICAgICAgIEludHJvZHVjZSBuZXcgZG93bmxvYWQgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRl
eCBkNTQ0ODM3OGI5OTQxYzQ3MTk4OTA2NjUwYTM1OTU2NWUwNjFhYjc1Li5mNTg3ZGE2Yzg5MzY4
OTNhZjFmZTgxOTBkOTIxMzQ1MzIyMDA5ZDI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9I
ZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTEyNzUs
NiArMTI3NSw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdHbHlwaHNSZWNvcmRlci5oCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd2luZ0NvbnRl
eHQuaAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEZsdXNo
SWRlbnRpZmllci5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0SW1hZ2VCdWZmZXIuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdEl0ZW1CdWZmZXIuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1UeXBlLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2NzJhMTY2MGE1ZDlmZjgwMTNiNjlhYmJiNmEzYWFh
NzhiOWJlMWYxLi5kY2QwOGMzZmM0MjA5M2ZhMjI1MmVlOWRhMDAwOTc1ZWQ1OWM4NmYzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC0yMTgyLDYgKzIxODIsNyBAQAogCQk3MjE0NDMzNDIyM0VDOTE2MDBGMTJGRjcgLyogU1ZHUHJv
cGVydHlPd25lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTVFRTUzNjAyMjNCMkEyMTAwRkJBOTQ0IC8qIFNWR1Byb3BlcnR5T3duZXIuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MjFCNDk3NDI1MTJC
QTNCMDBGRTlEM0IgLyogSW1hZ2VCaXRtYXBCYWNraW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjFCNDk3MDI1MTJBQzA0MDBGRTlEM0IgLyogSW1h
Z2VCaXRtYXBCYWNraW5nLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNzIyODNGMEUyMzBCMjY4QzAwRjVEODI4IC8qIEltYWdlUGFpbnRpbmdPcHRp
b25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MkMx
OEEzRjIzMEIwNEI3MDA2ODQ3QzcgLyogSW1hZ2VQYWludGluZ09wdGlvbnMuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3MjQyQUM5NzI1NzU4RkUx
MDA1QTlDRjEgLyogRGlzcGxheUxpc3RGbHVzaElkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyNDJBQzk1MjU3NThGRTAwMDVBOUNGMSAv
KiBEaXNwbGF5TGlzdEZsdXNoSWRlbnRpZmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcyNEVEMzMyMUEzQThCMjMwMEY1RjEzQyAvKiBKU0VY
VEJsZW5kTWluTWF4LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3MjRFRDMzMDFBM0E4QjIzMDBGNUYxM0MgLyogSlNFWFRCbGVuZE1pbk1heC5oICovOyB9
OwogCQk3MjRFRTU1MDFEQzgwRDdGMDBBOTFGRkIgLyogQWN0aXZpdHlTdGF0ZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI0RUU1NEUxREM3RjI1QjAw
QTkxRkZCIC8qIEFjdGl2aXR5U3RhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk3MjRFRTU1MTFEQzgwRDg0MDBBOTFGRkIgLyogQWN0aXZpdHlT
dGF0ZUNoYW5nZU9ic2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3MjRFRTU0RjFEQzdGMjVCMDBBOTFGRkIgLyogQWN0aXZpdHlTdGF0ZUNoYW5n
ZU9ic2VydmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKQEAgLTEwMDYzLDYgKzEwMDY0LDcgQEAKIAkJNzIxQjQ5NkYyNTEyQUMwNDAwRkU5RDNCIC8q
IEltYWdlQml0bWFwQmFja2luZy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbWFnZUJpdG1hcEJh
Y2tpbmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjFCNDk3MDI1MTJBQzA0
MDBGRTlEM0IgLyogSW1hZ2VCaXRtYXBCYWNraW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdlQml0
bWFwQmFja2luZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjJBODE1QzIzOEZE
NTA1MDBDMDA1ODMgLyogQW5pbWF0aW9uRnJhbWVSYXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFuaW1h
dGlvbkZyYW1lUmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MjQyQUM5NTI1
NzU4RkUwMDA1QTlDRjEgLyogRGlzcGxheUxpc3RGbHVzaElkZW50aWZpZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGlzcGxheUxpc3RGbHVzaElkZW50aWZpZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI0RUQzMjkxQTNBN0U1NDAwRjVGMTNDIC8qIEVY
VEJsZW5kTWluTWF4LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEVY
VEJsZW5kTWluTWF4LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI0RUQzMkEx
QTNBN0U1NDAwRjVGMTNDIC8qIEVYVEJsZW5kTWluTWF4LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEVYVEJsZW5kTWluTWF4Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTcyNEVEMzJCMUEzQTdFNTQwMEY1RjEzQyAvKiBFWFRCbGVuZE1pbk1heC5pZGwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gRVhUQmxlbmRNaW5NYXguaWRsOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMTc4MTAsNiArMTc4MTIsNyBAQAogCQkJCTFDQUY1NkRFMjUzMDI0NUEwMDE3
QjQ3MiAvKiBEaXNwbGF5TGlzdERyYXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0LmNwcCAqLywKIAkJ
CQk1NUMwQTI5NTIzRkUyQ0UwMDBGMkNCOTMgLyogRGlzcGxheUxpc3REcmF3aW5nQ29udGV4dC5j
cHAgKi8sCiAJCQkJNzJFQTA5RjkyM0ZDQ0M2QTAwODUwNEE1IC8qIERpc3BsYXlMaXN0RHJhd2lu
Z0NvbnRleHQuaCAqLywKKwkJCQk3MjQyQUM5NTI1NzU4RkUwMDA1QTlDRjEgLyogRGlzcGxheUxp
c3RGbHVzaElkZW50aWZpZXIuaCAqLywKIAkJCQk3MkVBMDlGNzIzRkNDQjNEMDA4NTA0QTUgLyog
RGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oICovLAogCQkJCUY0MjJCOEI2MjUzRjcwNjUwMDRFNzdF
OCAvKiBEaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwICovLAogCQkJCUY0MjJCOEI1MjUzRjcwNjUw
MDRFNzdFOCAvKiBEaXNwbGF5TGlzdEl0ZW1CdWZmZXIuaCAqLywKQEAgLTMxNzA2LDYgKzMxNzA5
LDcgQEAKIAkJCQkwRkU1RkJEMzFDM0RENTFFMDAwN0EyQ0EgLyogRGlzcGxheUxpc3QuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTFDQUY1NkRCMjUzMDFBQzgwMDE3QjQ3MiAvKiBEaXNwbGF5TGlzdERy
YXdHbHlwaHNSZWNvcmRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTVBRDA5NDAyNDA4OTY0MDAw
REU0RDJGIC8qIERpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTcyNDJBQzk3MjU3NThGRTEwMDVBOUNGMSAvKiBEaXNwbGF5TGlzdEZsdXNoSWRlbnRpZmllci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNTVBRDA5M0UyNDA4OTYzNTAwREU0RDJGIC8qIERpc3BsYXlM
aXN0SW1hZ2VCdWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUY0RDQwQkM5MjU1NDYzQkYwMDcy
MTM0OSAvKiBEaXNwbGF5TGlzdEl0ZW1CdWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRTVG
QkQ1MUMzREQ1MUUwMDA3QTJDQSAvKiBEaXNwbGF5TGlzdEl0ZW1zLmggaW4gSGVhZGVycyAqLywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1h
Z2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1h
Z2VCdWZmZXIuaAppbmRleCA3ZTZkOTNlNzYwYTdmYTA4MGFhZWI0ZjM2ZTNjM2E5NDczYjEwNDBk
Li5kN2IwYjFhN2Y5M2Q5MTM0YzlkY2ViM2QyNzhkOTYyZWQ5NmM4Mjg1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZlci5o
CkBAIC0zNiwzMSArMzYsNDMgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEltYWdl
QnVmZmVyVHlwZSA9IENvbmNyZXRlSW1hZ2VCdWZmZXIsIHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4K
ICAgICBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyVHlwZT4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6
ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFBp
eGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBjb25zdCBIb3N0V2luZG93KiBob3N0V2luZG93LCBBcmd1
bWVudHMmJi4uLiBhcmd1bWVudHMpCiAgICAgewotICAgICAgICBhdXRvIGJhY2tlbmQgPSBCYWNr
ZW5kVHlwZTo6Y3JlYXRlKHNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxG
b3JtYXQsIGhvc3RXaW5kb3cpOworICAgICAgICBhdXRvIHBhcmFtZXRlcnMgPSBJbWFnZUJ1ZmZl
ckJhY2tlbmQ6OlBhcmFtZXRlcnMgeyBzaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2Us
IHBpeGVsRm9ybWF0IH07CisgICAgICAgIGF1dG8gYmFja2VuZCA9IEJhY2tlbmRUeXBlOjpjcmVh
dGUocGFyYW1ldGVycywgaG9zdFdpbmRvdyk7CiAgICAgICAgIGlmICghYmFja2VuZCkKICAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEltYWdl
QnVmZmVyVHlwZShXVEZNb3ZlKGJhY2tlbmQpLCBzdGQ6OmZvcndhcmQ8QXJndW1lbnRzPihhcmd1
bWVudHMpLi4uKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW1hZ2VCdWZmZXJUeXBl
KHBhcmFtZXRlcnMsIFdURk1vdmUoYmFja2VuZCksIHN0ZDo6Zm9yd2FyZDxBcmd1bWVudHM+KGFy
Z3VtZW50cykuLi4pKTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJbWFnZUJ1ZmZl
clR5cGUgPSBDb25jcmV0ZUltYWdlQnVmZmVyLCB0eXBlbmFtZS4uLiBBcmd1bWVudHM+CiAgICAg
c3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZlclR5cGU+IGNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHNp
emUsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgQXJndW1lbnRzJiYuLi4gYXJndW1l
bnRzKQogICAgIHsKLSAgICAgICAgYXV0byBiYWNrZW5kID0gQmFja2VuZFR5cGU6OmNyZWF0ZShz
aXplLCBjb250ZXh0KTsKKyAgICAgICAgYXV0byBwYXJhbWV0ZXJzID0gSW1hZ2VCdWZmZXJCYWNr
ZW5kOjpQYXJhbWV0ZXJzIHsgc2l6ZSwgMSwgQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6
OkJHUkE4IH07CisgICAgICAgIGF1dG8gYmFja2VuZCA9IEJhY2tlbmRUeXBlOjpjcmVhdGUocGFy
YW1ldGVycywgY29udGV4dCk7CiAgICAgICAgIGlmICghYmFja2VuZCkKICAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOwotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEltYWdlQnVmZmVyVHlw
ZShXVEZNb3ZlKGJhY2tlbmQpLCBzdGQ6OmZvcndhcmQ8QXJndW1lbnRzPihhcmd1bWVudHMpLi4u
KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW1hZ2VCdWZmZXJUeXBlKHBhcmFtZXRl
cnMsIFdURk1vdmUoYmFja2VuZCksIHN0ZDo6Zm9yd2FyZDxBcmd1bWVudHM+KGFyZ3VtZW50cyku
Li4pKTsKICAgICB9CiAKLSAgICBib29sIGlzQWNjZWxlcmF0ZWQoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBCYWNrZW5kVHlwZTo6aXNBY2NlbGVyYXRlZDsgfQorICAgIFJlbmRlcmluZ01vZGUg
cmVuZGVyaW5nTW9kZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEJhY2tlbmRUeXBlOjpyZW5k
ZXJpbmdNb2RlOyB9CiAgICAgYm9vbCBjYW5NYXBCYWNraW5nU3RvcmUoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBCYWNrZW5kVHlwZTo6Y2FuTWFwQmFja2luZ1N0b3JlOyB9CiAKIHByb3RlY3Rl
ZDoKLSAgICBDb25jcmV0ZUltYWdlQnVmZmVyKHN0ZDo6dW5pcXVlX3B0cjxCYWNrZW5kVHlwZT4m
JiBiYWNrZW5kID0gbnVsbHB0ciwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllciA9IFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcjo6Z2VuZXJh
dGUoKSkKLSAgICAgICAgOiBtX2JhY2tlbmQoV1RGTW92ZShiYWNrZW5kKSkKKyAgICBDb25jcmV0
ZUltYWdlQnVmZmVyKGNvbnN0IEltYWdlQnVmZmVyQmFja2VuZDo6UGFyYW1ldGVycyYgcGFyYW1l
dGVycywgc3RkOjp1bmlxdWVfcHRyPEJhY2tlbmRUeXBlPiYmIGJhY2tlbmQgPSBudWxscHRyLCBS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyID0g
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyOjpnZW5lcmF0ZSgpKQorICAgICAgICA6IG1fcGFy
YW1ldGVycyhwYXJhbWV0ZXJzKQorICAgICAgICAsIG1fYmFja2VuZChXVEZNb3ZlKGJhY2tlbmQp
KQogICAgICAgICAsIG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKHJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcikKICAgICB7CiAgICAgfQogCisgICAgdm9pZCBzZXRCYWNrZW5kKHN0ZDo6
dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckJhY2tlbmQ+JiYgYmFja2VuZCkgb3ZlcnJpZGUKKyAgICB7
CisgICAgICAgIEFTU0VSVCghbV9iYWNrZW5kKTsKKyAgICAgICAgbV9iYWNrZW5kID0gc3RkOjp1
bmlxdWVfcHRyPEJhY2tlbmRUeXBlPiB7IHN0YXRpY19jYXN0PEJhY2tlbmRUeXBlKj4oYmFja2Vu
ZC5yZWxlYXNlKCkpIH07CisgICAgfQorCisgICAgdm9pZCBjbGVhckJhY2tlbmQoKSBvdmVycmlk
ZSB7IG1fYmFja2VuZCA9IG51bGxwdHI7IH0KKworICAgIEltYWdlQnVmZmVyQmFja2VuZCogYmFj
a2VuZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fYmFja2VuZC5nZXQoKTsgfQogICAgIHZp
cnR1YWwgQmFja2VuZFR5cGUqIGVuc3VyZUJhY2tlbmRDcmVhdGVkKCkgY29uc3QgeyByZXR1cm4g
bV9iYWNrZW5kLmdldCgpOyB9CiAKICAgICBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9yZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI7IH0KQEAgLTc5LDE5ICs5MSwxMSBAQCBwcm90ZWN0ZWQ6
CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBBZmZpbmVUcmFuc2Zvcm0gYmFzZVRyYW5zZm9ybSgp
IGNvbnN0IG92ZXJyaWRlCi0gICAgewotICAgICAgICBpZiAoYXV0byogYmFja2VuZCA9IGVuc3Vy
ZUJhY2tlbmRDcmVhdGVkKCkpCi0gICAgICAgICAgICByZXR1cm4gYmFja2VuZC0+YmFzZVRyYW5z
Zm9ybSgpOwotICAgICAgICByZXR1cm4geyB9OwotICAgIH0KLQotICAgIEludFNpemUgbG9naWNh
bFNpemUoKSBjb25zdCBvdmVycmlkZQotICAgIHsKLSAgICAgICAgaWYgKGF1dG8qIGJhY2tlbmQg
PSBlbnN1cmVCYWNrZW5kQ3JlYXRlZCgpKQotICAgICAgICAgICAgcmV0dXJuIGJhY2tlbmQtPmxv
Z2ljYWxTaXplKCk7Ci0gICAgICAgIHJldHVybiB7IH07Ci0gICAgfQorICAgIEludFNpemUgbG9n
aWNhbFNpemUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBJbnRTaXplKG1fcGFyYW1ldGVycy5s
b2dpY2FsU2l6ZSk7IH0KKyAgICBmbG9hdCByZXNvbHV0aW9uU2NhbGUoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBtX3BhcmFtZXRlcnMucmVzb2x1dGlvblNjYWxlOyB9CisgICAgQ29sb3JTcGFj
ZSBjb2xvclNwYWNlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9wYXJhbWV0ZXJzLmNvbG9y
U3BhY2U7IH0KKyAgICBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIG1fcGFyYW1ldGVycy5waXhlbEZvcm1hdDsgfQorICAgIGNvbnN0IEltYWdlQnVmZmVy
QmFja2VuZDo6UGFyYW1ldGVycyYgcGFyYW1ldGVycygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IG1fcGFyYW1ldGVyczsgfQogCiAgICAgSW50U2l6ZSBiYWNrZW5kU2l6ZSgpIGNvbnN0IG92ZXJy
aWRlCiAgICAgewpAQCAtMTAwLDExICsxMDQsMTEgQEAgcHJvdGVjdGVkOgogICAgICAgICByZXR1
cm4geyB9OwogICAgIH0KIAotICAgIGZsb2F0IHJlc29sdXRpb25TY2FsZSgpIGNvbnN0IG92ZXJy
aWRlCisgICAgQWZmaW5lVHJhbnNmb3JtIGJhc2VUcmFuc2Zvcm0oKSBjb25zdCBvdmVycmlkZQog
ICAgIHsKLSAgICAgICAgaWYgKGF1dG8qIGJhY2tlbmQgPSBlbnN1cmVCYWNrZW5kQ3JlYXRlZCgp
KQotICAgICAgICAgICAgcmV0dXJuIGJhY2tlbmQtPnJlc29sdXRpb25TY2FsZSgpOwotICAgICAg
ICByZXR1cm4gMTsKKyAgICAgICAgaWYgKEJhY2tlbmRUeXBlOjppc09yaWdpbkF0VXBwZXJMZWZ0
Q29ybmVyKQorICAgICAgICAgICAgcmV0dXJuIEFmZmluZVRyYW5zZm9ybSgxLCAwLCAwLCAtMSwg
MCwgbG9naWNhbFNpemUoKS5oZWlnaHQoKSk7CisgICAgICAgIHJldHVybiB7IH07CiAgICAgfQog
CiAgICAgc2l6ZV90IG1lbW9yeUNvc3QoKSBjb25zdCBvdmVycmlkZQpAQCAtMjkyLDYgKzI5Niw3
IEBAIHByb3RlY3RlZDoKICAgICAgICAgICAgIGJhY2tlbmQtPnJlbGVhc2VCdWZmZXJUb1Bvb2wo
KTsKICAgICB9CiAKKyAgICBJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnMgbV9wYXJhbWV0
ZXJzOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxCYWNrZW5kVHlwZT4gbV9iYWNrZW5kOwogICAgIFJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcjsK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1
ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaApp
bmRleCBiNjY2MDNkNDliYzM0MGU4YTg5OGEyMjM3MzIyMWM1M2QwMGRhYjA4Li45OGIyMmVlOGFl
MDc4NDI1OWE0NmNiYjFmYjJmNGJlMDJmMTIwOGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI3ByYWdt
YSBvbmNlCiAKKyNpbmNsdWRlICJEaXNwbGF5TGlzdEZsdXNoSWRlbnRpZmllci5oIgogI2luY2x1
ZGUgIkltYWdlQnVmZmVyQmFja2VuZC5oIgogI2luY2x1ZGUgIlJlbmRlcmluZ01vZGUuaCIKICNp
bmNsdWRlICJSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIuaCIKQEAgLTYzLDEwICs2NCwxNCBA
QCBwdWJsaWM6CiAgICAgCiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+SW1hZ2VCdWZmZXIo
KSA9IGRlZmF1bHQ7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNBY2NlbGVyYXRlZCgpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0QmFja2VuZChzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZm
ZXJCYWNrZW5kPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNsZWFyQmFja2VuZCgpID0gMDsK
KyAgICB2aXJ0dWFsIEltYWdlQnVmZmVyQmFja2VuZCogYmFja2VuZCgpIGNvbnN0IHsgcmV0dXJu
IG51bGxwdHI7IH0KKworICAgIHZpcnR1YWwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlKCkg
Y29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBjYW5NYXBCYWNraW5nU3RvcmUoKSBjb25zdCA9
IDA7CiAgICAgdmlydHVhbCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4geyB9OyB9Ci0gICAgCisKICAgICB2aXJ0
dWFsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgZmx1c2hDb250ZXh0KCkgPSAwOwogCkBAIC03NCwxMSArNzksMTcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgYm9vbCBwcmVmZXJzUHJlcGFyYXRpb25Gb3JEaXNwbGF5KCkgeyByZXR1cm4gZmFs
c2U7IH0KICAgICB2aXJ0dWFsIHZvaWQgZmx1c2hEcmF3aW5nQ29udGV4dCgpIHsgfQogICAgIHZp
cnR1YWwgdm9pZCBmbHVzaERyYXdpbmdDb250ZXh0QW5kQ29tbWl0KCkgeyB9CisgICAgdmlydHVh
bCB2b2lkIHN1Ym1pdERpc3BsYXlMaXN0KGNvbnN0IERpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYp
IHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRGbHVzaChEaXNwbGF5TGlzdDo6Rmx1c2hJZGVudGlm
aWVyKSB7IH0KIAotICAgIHZpcnR1YWwgQWZmaW5lVHJhbnNmb3JtIGJhc2VUcmFuc2Zvcm0oKSBj
b25zdCA9IDA7CiAgICAgdmlydHVhbCBJbnRTaXplIGxvZ2ljYWxTaXplKCkgY29uc3QgPSAwOwot
ICAgIHZpcnR1YWwgSW50U2l6ZSBiYWNrZW5kU2l6ZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFs
IGZsb2F0IHJlc29sdXRpb25TY2FsZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIENvbG9yU3Bh
Y2UgY29sb3JTcGFjZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFBpeGVsRm9ybWF0IHBpeGVs
Rm9ybWF0KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgY29uc3QgSW1hZ2VCdWZmZXJCYWNrZW5k
OjpQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBJbnRT
aXplIGJhY2tlbmRTaXplKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgQWZmaW5lVHJhbnNmb3Jt
IGJhc2VUcmFuc2Zvcm0oKSBjb25zdCA9IDA7CiAKICAgICB2aXJ0dWFsIHNpemVfdCBtZW1vcnlD
b3N0KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgc2l6ZV90IGV4dGVybmFsTWVtb3J5Q29zdCgp
IGNvbnN0ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlQnVmZmVyQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCmluZGV4IDdmMGZlOWU2ZDk2NmU3NGI0NWY4NWFhZDBl
M2IyZmI4NGQ5NDUwYjkuLjkzOTRlN2JmZjQyOWJjMjFlZmNkZjNiMTQwMTExZjFhZTJjYTk0NGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVy
QmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VC
dWZmZXJCYWNrZW5kLmNwcApAQCAtMzEsMTIgKzMxLDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1JbWFnZUJ1ZmZlckJhY2tlbmQ6OkltYWdlQnVmZmVyQmFja2VuZChjb25zdCBGbG9hdFNp
emUmIGxvZ2ljYWxTaXplLCBjb25zdCBJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1
dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0
KQotICAgIDogbV9sb2dpY2FsU2l6ZShsb2dpY2FsU2l6ZSkKLSAgICAsIG1fYmFja2VuZFNpemUo
YmFja2VuZFNpemUpCi0gICAgLCBtX3Jlc29sdXRpb25TY2FsZShyZXNvbHV0aW9uU2NhbGUpCi0g
ICAgLCBtX2NvbG9yU3BhY2UoY29sb3JTcGFjZSkKLSAgICAsIG1fcGl4ZWxGb3JtYXQocGl4ZWxG
b3JtYXQpCitJbWFnZUJ1ZmZlckJhY2tlbmQ6OkltYWdlQnVmZmVyQmFja2VuZChjb25zdCBQYXJh
bWV0ZXJzJiBwYXJhbWV0ZXJzKQorICAgIDogbV9wYXJhbWV0ZXJzKHBhcmFtZXRlcnMpCiB7CiB9
CiAKQEAgLTk5LDE1ICs5NSwxNSBAQCB2b2lkIEltYWdlQnVmZmVyQmFja2VuZDo6Y29udmVydFRv
THVtaW5hbmNlTWFzaygpCiAKIFZlY3Rvcjx1aW50OF90PiBJbWFnZUJ1ZmZlckJhY2tlbmQ6OnRv
QkdSQURhdGEodm9pZCogZGF0YSkgY29uc3QKIHsKLSAgICBWZWN0b3I8dWludDhfdD4gcmVzdWx0
KDQgKiBtX2xvZ2ljYWxTaXplLmFyZWEoKS51bnNhZmVHZXQoKSk7Ci0gICAgc2l6ZV90IGRlc3RC
eXRlc1BlclJvdyA9IG1fbG9naWNhbFNpemUud2lkdGgoKSAqIDQ7CisgICAgVmVjdG9yPHVpbnQ4
X3Q+IHJlc3VsdCg0ICogbG9naWNhbFNpemUoKS5hcmVhKCkudW5zYWZlR2V0KCkpOworICAgIHNp
emVfdCBkZXN0Qnl0ZXNQZXJSb3cgPSBsb2dpY2FsU2l6ZSgpLndpZHRoKCkgKiA0OwogICAgIHNp
emVfdCBzcmNCeXRlc1BlclJvdyA9IGJ5dGVzUGVyUm93KCk7CiAKICAgICB1aW50OF90KiBzcmNS
b3dzID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oZGF0YSk7CiAKICAgICBjb3B5SW1hZ2VQ
aXhlbHMoCiAgICAgICAgIEFscGhhUHJlbXVsdGlwbGljYXRpb246OlByZW11bHRpcGxpZWQsIHBp
eGVsRm9ybWF0KCksIHNyY0J5dGVzUGVyUm93LCBzcmNSb3dzLAotICAgICAgICBBbHBoYVByZW11
bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpCR1JBOCwgZGVzdEJ5
dGVzUGVyUm93LCByZXN1bHQuZGF0YSgpLCBtX2xvZ2ljYWxTaXplKTsKKyAgICAgICAgQWxwaGFQ
cmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6QkdSQTgsIGRl
c3RCeXRlc1BlclJvdywgcmVzdWx0LmRhdGEoKSwgbG9naWNhbFNpemUoKSk7CiAKICAgICByZXR1
cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZUJ1ZmZlckJhY2tlbmQuaAppbmRleCA2ODA4NDA1MmExNWExNDI3ZjU2ZjczMDE1MjEy
YzhkNjRkMTliZGFhLi5iMGYyNDAwNTNhZjM1MWRkODhiYTczYTI1NzlkNDZjZGU4ZGFlMjljIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJh
Y2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZl
ckJhY2tlbmQuaApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkltYWdlUGFpbnRpbmdPcHRp
b25zLmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtTGF5ZXIuaCIK
KyNpbmNsdWRlICJSZW5kZXJpbmdNb2RlLmgiCiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIApAQCAtNzcsNiArNzgsMTMgQEAgcHVibGljOgogCiBjbGFz
cyBJbWFnZUJ1ZmZlckJhY2tlbmQgewogcHVibGljOgorICAgIHN0cnVjdCBQYXJhbWV0ZXJzIHsK
KyAgICAgICAgRmxvYXRTaXplIGxvZ2ljYWxTaXplOworICAgICAgICBmbG9hdCByZXNvbHV0aW9u
U2NhbGU7CisgICAgICAgIENvbG9yU3BhY2UgY29sb3JTcGFjZTsKKyAgICAgICAgUGl4ZWxGb3Jt
YXQgcGl4ZWxGb3JtYXQ7CisgICAgfTsKKwogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgfklt
YWdlQnVmZmVyQmFja2VuZCgpID0gZGVmYXVsdDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBJbnRTaXplIGNhbGN1bGF0ZUJhY2tlbmRTaXplKGNvbnN0IEZsb2F0U2l6ZSYsIGZsb2F0IHJl
c29sdXRpb25TY2FsZSk7CkBAIC04NCwxNCArOTIsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGZs
dXNoQ29udGV4dCgpIHsgfQogCi0gICAgSW50U2l6ZSBsb2dpY2FsU2l6ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fbG9naWNhbFNpemU7IH0KLSAgICBJbnRTaXplIGJhY2tlbmRTaXplKCkgY29uc3QgeyBy
ZXR1cm4gbV9iYWNrZW5kU2l6ZTsgfQotICAgIGZsb2F0IHJlc29sdXRpb25TY2FsZSgpIGNvbnN0
IHsgcmV0dXJuIG1fcmVzb2x1dGlvblNjYWxlOyB9Ci0gICAgQ29sb3JTcGFjZSBjb2xvclNwYWNl
KCkgY29uc3QgeyByZXR1cm4gbV9jb2xvclNwYWNlOyB9Ci0gICAgUGl4ZWxGb3JtYXQgcGl4ZWxG
b3JtYXQoKSBjb25zdCB7IHJldHVybiBtX3BpeGVsRm9ybWF0OyB9CisgICAgdmlydHVhbCBJbnRT
aXplIGJhY2tlbmRTaXplKCkgY29uc3QgeyByZXR1cm4geyB9OyB9CiAKLSAgICB2aXJ0dWFsIEFm
ZmluZVRyYW5zZm9ybSBiYXNlVHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gQWZmaW5lVHJhbnNm
b3JtKCk7IH0KLSAgICB2aXJ0dWFsIHNpemVfdCBtZW1vcnlDb3N0KCkgY29uc3QgeyByZXR1cm4g
NCAqIG1fYmFja2VuZFNpemUuYXJlYSgpLnVuc2FmZUdldCgpOyB9CisgICAgdmlydHVhbCBzaXpl
X3QgbWVtb3J5Q29zdCgpIGNvbnN0IHsgcmV0dXJuIDQgKiBiYWNrZW5kU2l6ZSgpLmFyZWEoKS51
bnNhZmVHZXQoKTsgfQogICAgIHZpcnR1YWwgc2l6ZV90IGV4dGVybmFsTWVtb3J5Q29zdCgpIGNv
bnN0IHsgcmV0dXJuIDA7IH0KIAogICAgIHZpcnR1YWwgUmVmUHRyPE5hdGl2ZUltYWdlPiBjb3B5
TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSkgY29uc3QgPSAwOwpAQCAtMTI1LDI3ICsxMjgs
MzIgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZWxlYXNlQnVmZmVyVG9Qb29sKCkgeyB9
CiAKICAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxUaHJlYWRTYWZlSW1hZ2VCdWZmZXJGbHVz
aGVyPiBjcmVhdGVGbHVzaGVyKCkgeyByZXR1cm4gbnVsbHB0cjsgfQotICAgIAorCiAgICAgc3Rh
dGljIGNvbnN0ZXhwciBib29sIGlzT3JpZ2luQXRVcHBlckxlZnRDb3JuZXIgPSBmYWxzZTsKLSAg
ICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNBY2NlbGVyYXRlZCA9IGZhbHNlOwogICAgIHN0YXRp
YyBjb25zdGV4cHIgYm9vbCBjYW5NYXBCYWNraW5nU3RvcmUgPSB0cnVlOworICAgIHN0YXRpYyBj
b25zdGV4cHIgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlID0gUmVuZGVyaW5nTW9kZTo6VW5h
Y2NlbGVyYXRlZDsKIAogcHJvdGVjdGVkOgotICAgIFdFQkNPUkVfRVhQT1JUIEltYWdlQnVmZmVy
QmFja2VuZChjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBJbnRTaXplJiBiYWNr
ZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlLCBQaXhlbEZvcm1hdCk7
CisgICAgV0VCQ09SRV9FWFBPUlQgSW1hZ2VCdWZmZXJCYWNrZW5kKGNvbnN0IFBhcmFtZXRlcnMm
KTsKIAotICAgIHZpcnR1YWwgdW5zaWduZWQgYnl0ZXNQZXJSb3coKSBjb25zdCB7IHJldHVybiA0
ICogbV9iYWNrZW5kU2l6ZS53aWR0aCgpOyB9CisgICAgdmlydHVhbCB1bnNpZ25lZCBieXRlc1Bl
clJvdygpIGNvbnN0IHsgcmV0dXJuIDQgKiBiYWNrZW5kU2l6ZSgpLndpZHRoKCk7IH0KIAogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgVCB0b0JhY2tlbmRDb29yZGluYXRlcyhUIHQpIGNv
bnN0CiAgICAgewogICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxULCBJbnRQb2lu
dD46OnZhbHVlIHx8IHN0ZDo6aXNfc2FtZTxULCBJbnRTaXplPjo6dmFsdWUgfHwgc3RkOjppc19z
YW1lPFQsIEludFJlY3Q+Ojp2YWx1ZSk7Ci0gICAgICAgIGlmIChtX3Jlc29sdXRpb25TY2FsZSAh
PSAxKQotICAgICAgICAgICAgdC5zY2FsZShtX3Jlc29sdXRpb25TY2FsZSk7CisgICAgICAgIGlm
IChyZXNvbHV0aW9uU2NhbGUoKSAhPSAxKQorICAgICAgICAgICAgdC5zY2FsZShyZXNvbHV0aW9u
U2NhbGUoKSk7CiAgICAgICAgIHJldHVybiB0OwogICAgIH0KIAotICAgIEludFJlY3QgbG9naWNh
bFJlY3QoKSBjb25zdCB7IHJldHVybiBJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIG1fbG9naWNh
bFNpemUpOyB9OwotICAgIEludFJlY3QgYmFja2VuZFJlY3QoKSBjb25zdCB7IHJldHVybiBJbnRS
ZWN0KEludFBvaW50Ojp6ZXJvKCksIG1fYmFja2VuZFNpemUpOyB9OworICAgIEludFNpemUgbG9n
aWNhbFNpemUoKSBjb25zdCB7IHJldHVybiBJbnRTaXplKG1fcGFyYW1ldGVycy5sb2dpY2FsU2l6
ZSk7IH0KKyAgICBmbG9hdCByZXNvbHV0aW9uU2NhbGUoKSBjb25zdCB7IHJldHVybiBtX3BhcmFt
ZXRlcnMucmVzb2x1dGlvblNjYWxlOyB9CisgICAgQ29sb3JTcGFjZSBjb2xvclNwYWNlKCkgY29u
c3QgeyByZXR1cm4gbV9wYXJhbWV0ZXJzLmNvbG9yU3BhY2U7IH0KKyAgICBQaXhlbEZvcm1hdCBw
aXhlbEZvcm1hdCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVycy5waXhlbEZvcm1hdDsgfQor
CisgICAgSW50UmVjdCBsb2dpY2FsUmVjdCgpIGNvbnN0IHsgcmV0dXJuIEludFJlY3QoSW50UG9p
bnQ6Onplcm8oKSwgbG9naWNhbFNpemUoKSk7IH07CisgICAgSW50UmVjdCBiYWNrZW5kUmVjdCgp
IGNvbnN0IHsgcmV0dXJuIEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgYmFja2VuZFNpemUoKSk7
IH07CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgY29weUltYWdlUGl4ZWxzKAog
ICAgICAgICBBbHBoYVByZW11bHRpcGxpY2F0aW9uIHNyY0FscGhhRm9ybWF0LCBQaXhlbEZvcm1h
dCBzcmNQaXhlbEZvcm1hdCwgdW5zaWduZWQgc3JjQnl0ZXNQZXJSb3csIHVpbnQ4X3QqIHNyY1Jv
d3MsCkBAIC0xNTYsMTEgKzE2NCw3IEBAIHByb3RlY3RlZDoKICAgICBXRUJDT1JFX0VYUE9SVCBS
ZWZQdHI8SW1hZ2VEYXRhPiBnZXRJbWFnZURhdGEoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRw
dXRGb3JtYXQsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QsIHZvaWQqIGRhdGEpIGNvbnN0OwogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgcHV0SW1hZ2VEYXRhKEFscGhhUHJlbXVsdGlwbGljYXRpb24g
aW5wdXRGb3JtYXQsIGNvbnN0IEltYWdlRGF0YSYsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QsIGNv
bnN0IEludFBvaW50JiBkZXN0UG9pbnQsIEFscGhhUHJlbXVsdGlwbGljYXRpb24gZGVzdEZvcm1h
dCwgdm9pZCogZGF0YSk7CiAKLSAgICBJbnRTaXplIG1fbG9naWNhbFNpemU7Ci0gICAgSW50U2l6
ZSBtX2JhY2tlbmRTaXplOwotICAgIGZsb2F0IG1fcmVzb2x1dGlvblNjYWxlOwotICAgIENvbG9y
U3BhY2UgbV9jb2xvclNwYWNlOwotICAgIFBpeGVsRm9ybWF0IG1fcGl4ZWxGb3JtYXQ7CisgICAg
UGFyYW1ldGVycyBtX3BhcmFtZXRlcnM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybUltYWdl
QnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybUltYWdl
QnVmZmVyLmgKaW5kZXggYjA1ZmE2NTE2OTcxZDE3NjcxMzFkNTZhNDYzOTM1M2VmOTRlNDkyNS4u
NTJkZDgzY2M5M2Q1NTUzYjM3OWU1ODdkNDM4NWQ0Zjc4MDU5NDRiYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1JbWFnZUJ1ZmZlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtSW1hZ2VCdWZmZXIuaApA
QCAtNzUsNSArNzUsNSBAQCB1c2luZyBEaXNwbGF5TGlzdEFjY2VsZXJhdGVkSW1hZ2VCdWZmZXIg
PSBEaXNwbGF5TGlzdDo6SW1hZ2VCdWZmZXI8QWNjZWxlcmF0ZWRJbQogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OkFjY2VsZXJh
dGVkSW1hZ2VCdWZmZXIpCi0gICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6Oklt
YWdlQnVmZmVyJiBidWZmZXIpIHsgcmV0dXJuIGJ1ZmZlci5pc0FjY2VsZXJhdGVkKCk7IH0KKyAg
ICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6SW1hZ2VCdWZmZXImIGJ1ZmZlcikg
eyByZXR1cm4gYnVmZmVyLnJlbmRlcmluZ01vZGUoKSA9PSBXZWJDb3JlOjpSZW5kZXJpbmdNb2Rl
OjpBY2NlbGVyYXRlZDsgfQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWly
b0JhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1h
Z2VCdWZmZXJDYWlyb0JhY2tlbmQuY3BwCmluZGV4IDEyYTViNjBhMmU5MDQ2YTE5NTg5MmJhZjVk
ZDdlZDQ5NjMzYjNlNzQuLmIzYmZkODEyN2I4N2QxNjg4ZWFiYjVjZjRiMmE3MWMzMzU5Y2QyZDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdl
QnVmZmVyQ2Fpcm9CYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5jcHAKQEAgLTgwLDcgKzgwLDcgQEAg
dm9pZCBJbWFnZUJ1ZmZlckNhaXJvQmFja2VuZDo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0
JiBkZXN0Q29udGV4dCwgY29uc3QgRmwKICAgICB9CiAKICAgICBpZiAoYXV0byBpbWFnZSA9IGNv
cHlOYXRpdmVJbWFnZSgmZGVzdENvbnRleHQgPT0gJmNvbnRleHQoKSA/IENvcHlCYWNraW5nU3Rv
cmUgOiBEb250Q29weUJhY2tpbmdTdG9yZSkpCi0gICAgICAgIENhaXJvOjpkcmF3UGF0dGVybigq
ZGVzdENvbnRleHQucGxhdGZvcm1Db250ZXh0KCksIGltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0
KCksIG1fbG9naWNhbFNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBw
aGFzZSwgb3B0aW9ucyk7CisgICAgICAgIENhaXJvOjpkcmF3UGF0dGVybigqZGVzdENvbnRleHQu
cGxhdGZvcm1Db250ZXh0KCksIGltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCksIGxvZ2ljYWxT
aXplKCksIGRlc3RSZWN0LCBzcmNSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgb3B0aW9u
cyk7CiB9CiAKIHZvaWQgSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQ6OmNsaXBUb01hc2soR3JhcGhp
Y3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVy
Q2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kLmNwcAppbmRl
eCAxY2QwNzU0YjM5MTQzYWY0MjliNDZkNWQ3OGU0NTFmMGQxZTA3NGMzLi4zZGExNDU1ZWJhMDZk
Njc5NGUzMzI3MDE3ZGFhZmQ3OWJjNTQ3MmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2Vu
ZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VC
dWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQuY3BwCkBAIC00MSwxMyArNDEsMTMgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoSW1hZ2VCdWZm
ZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQpOwogCi1zdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZm
ZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQ+IEltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VC
YWNrZW5kOjpjcmVhdGUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2Nh
bGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIGNvbnN0
IEhvc3RXaW5kb3cqKQorc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZh
Y2VCYWNrZW5kPiBJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZDo6Y3JlYXRlKGNv
bnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIGNvbnN0IEhvc3RXaW5kb3cqKQogewotICAgIEFT
U0VSVChwaXhlbEZvcm1hdCA9PSBQaXhlbEZvcm1hdDo6QkdSQTgpOworICAgIEFTU0VSVChwYXJh
bWV0ZXJzLnBpeGVsRm9ybWF0ID09IFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAKICAgICBzdGF0aWMg
Y2Fpcm9fdXNlcl9kYXRhX2tleV90IHNfc3VyZmFjZURhdGFLZXk7CiAKLSAgICBJbnRTaXplIGJh
Y2tlbmRTaXplID0gY2FsY3VsYXRlQmFja2VuZFNpemUoc2l6ZSwgcmVzb2x1dGlvblNjYWxlKTsK
KyAgICBJbnRTaXplIGJhY2tlbmRTaXplID0gY2FsY3VsYXRlQmFja2VuZFNpemUocGFyYW1ldGVy
cy5sb2dpY2FsU2l6ZSwgcGFyYW1ldGVycy5yZXNvbHV0aW9uU2NhbGUpOwogICAgIGlmIChiYWNr
ZW5kU2l6ZS5pc0VtcHR5KCkgfHwgYmFja2VuZFNpemUud2lkdGgoKSA+IGNhaXJvTWF4SW1hZ2VT
aXplIHx8IGJhY2tlbmRTaXplLmhlaWdodCgpID4gY2Fpcm9NYXhJbWFnZVNpemUpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCkBAIC02MSwxNiArNjEsMTYgQEAgc3RkOjp1bmlxdWVfcHRyPElt
YWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kPiBJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VT
dXJmYWMKICAgICAgICAgZmFzdEZyZWUoZGF0YSk7CiAgICAgfSk7CiAKLSAgICByZXR1cm4gc3Rk
Ojp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kPihuZXcgSW1h
Z2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQoc2l6ZSwgYmFja2VuZFNpemUsIHJlc29s
dXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQsIFdURk1vdmUoc3VyZmFjZSkpKTsK
KyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VC
YWNrZW5kPihuZXcgSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQocGFyYW1ldGVy
cywgV1RGTW92ZShzdXJmYWNlKSkpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJD
YWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQ+IEltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNr
ZW5kOjpjcmVhdGUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBjb25zdCBHcmFwaGljc0NvbnRleHQm
KQorc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kPiBJ
bWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZDo6Y3JlYXRlKGNvbnN0IFBhcmFtZXRl
cnMmIHBhcmFtZXRlcnMsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpCiB7Ci0gICAgcmV0dXJuIElt
YWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kOjpjcmVhdGUoc2l6ZSwgMSwgQ29sb3JT
cGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4LCBudWxscHRyKTsKKyAgICByZXR1cm4gSW1h
Z2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZShwYXJhbWV0ZXJzLCBudWxs
cHRyKTsKIH0KIAotSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQ6OkltYWdlQnVm
ZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUs
IGNvbnN0IEludFNpemUmIGJhY2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9y
U3BhY2UgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIFJlZlB0cjxjYWlyb19z
dXJmYWNlX3Q+JiYgc3VyZmFjZSkKLSAgICA6IEltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2Vu
ZChsb2dpY2FsU2l6ZSwgYmFja2VuZFNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwg
cGl4ZWxGb3JtYXQsIFdURk1vdmUoc3VyZmFjZSkpCitJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJm
YWNlQmFja2VuZDo6SW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQoY29uc3QgUGFy
YW1ldGVycyYgcGFyYW1ldGVycywgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4mJiBzdXJmYWNlKQor
ICAgIDogSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kKHBhcmFtZXRlcnMsIFdURk1vdmUo
c3VyZmFjZSkpCiB7CiAgICAgQVNTRVJUKGNhaXJvX3N1cmZhY2VfZ2V0X3R5cGUobV9zdXJmYWNl
LmdldCgpKSA9PSBDQUlST19TVVJGQUNFX1RZUEVfSU1BR0UpOwogfQpAQCAtNzksMTYgKzc5LDE2
IEBAIHZvaWQgSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQ6OnBsYXRmb3JtVHJh
bnNmb3JtQ29sb3JTcGFjZShjb25zdCBzdGQ6CiB7CiAgICAgdW5zaWduZWQgY2hhciogZGF0YVNy
YyA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEobV9zdXJmYWNlLmdldCgpKTsKICAgICBp
bnQgc3RyaWRlID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfc3RyaWRlKG1fc3VyZmFjZS5nZXQo
KSk7Ci0gICAgZm9yIChpbnQgeSA9IDA7IHkgPCBtX2xvZ2ljYWxTaXplLmhlaWdodCgpOyArK3kp
IHsKKyAgICBmb3IgKGludCB5ID0gMDsgeSA8IGxvZ2ljYWxTaXplKCkuaGVpZ2h0KCk7ICsreSkg
ewogICAgICAgICB1bnNpZ25lZCogcm93ID0gcmVpbnRlcnByZXRfY2FzdF9wdHI8dW5zaWduZWQq
PihkYXRhU3JjICsgc3RyaWRlICogeSk7Ci0gICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgbV9s
b2dpY2FsU2l6ZS53aWR0aCgpOyB4KyspIHsKKyAgICAgICAgZm9yIChpbnQgeCA9IDA7IHggPCBs
b2dpY2FsU2l6ZSgpLndpZHRoKCk7IHgrKykgewogICAgICAgICAgICAgdW5zaWduZWQqIHBpeGVs
ID0gcm93ICsgeDsKICAgICAgICAgICAgIGF1dG8gcGl4ZWxDb21wb25lbnRzID0gdW5wcmVtdWx0
aXBsaWVkKGFzU1JHQkEoUGFja2VkQ29sb3I6OkFSR0IgeyAqcGl4ZWwgfSkpOwogICAgICAgICAg
ICAgcGl4ZWxDb21wb25lbnRzID0geyBsb29rVXBUYWJsZVtwaXhlbENvbXBvbmVudHMucmVkXSwg
bG9va1VwVGFibGVbcGl4ZWxDb21wb25lbnRzLmdyZWVuXSwgbG9va1VwVGFibGVbcGl4ZWxDb21w
b25lbnRzLmJsdWVdLCBwaXhlbENvbXBvbmVudHMuYWxwaGEgfTsKICAgICAgICAgICAgICpwaXhl
bCA9IFBhY2tlZENvbG9yOjpBUkdCIHsgcHJlbXVsdGlwbGllZENlaWxpbmcocGl4ZWxDb21wb25l
bnRzKSB9LnZhbHVlOwogICAgICAgICB9CiAgICAgfQotICAgIGNhaXJvX3N1cmZhY2VfbWFya19k
aXJ0eV9yZWN0YW5nbGUobV9zdXJmYWNlLmdldCgpLCAwLCAwLCBtX2xvZ2ljYWxTaXplLndpZHRo
KCksIG1fbG9naWNhbFNpemUuaGVpZ2h0KCkpOworICAgIGNhaXJvX3N1cmZhY2VfbWFya19kaXJ0
eV9yZWN0YW5nbGUobV9zdXJmYWNlLmdldCgpLCAwLCAwLCBsb2dpY2FsU2l6ZSgpLndpZHRoKCks
IGxvZ2ljYWxTaXplKCkuaGVpZ2h0KCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1
ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQuaAppbmRl
eCBkMTZkMzNlYWM0NmM1ZGY2NmZiOGZhMmQ5NTQ5MTBlMmY5MTE1YTAzLi44NjVjYzY5YjJkNTMz
ODU0NWYzN2U0MTkzY2I5NGYxOTgwYmU3M2E0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2Vu
ZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVm
ZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kLmgKQEAgLTQwLDExICs0MCwxMSBAQCBjbGFzcyBJ
bWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZCA6IHB1YmxpYyBJbWFnZUJ1ZmZlckNh
aXJvU3VyZmFjZUJhY2tlbgogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoSW1hZ2VCdWZmZXJD
YWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQpOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEltYWdl
QnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgc3Rk
Ojp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kPiBjcmVhdGUo
Y29uc3QgRmxvYXRTaXplJiwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlLCBQaXhl
bEZvcm1hdCwgY29uc3QgSG9zdFdpbmRvdyopOwotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
SW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQ+IGNyZWF0ZShjb25zdCBGbG9hdFNp
emUmLCBjb25zdCBHcmFwaGljc0NvbnRleHQmKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRy
PEltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kPiBjcmVhdGUoY29uc3QgUGFyYW1l
dGVycyYsIGNvbnN0IEhvc3RXaW5kb3cqKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPElt
YWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kPiBjcmVhdGUoY29uc3QgUGFyYW1ldGVy
cyYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpOwogCiBwcml2YXRlOgotICAgIEltYWdlQnVmZmVy
Q2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNv
bnN0IEludFNpemUmIGJhY2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3Bh
Y2UsIFBpeGVsRm9ybWF0LCBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiYmKTsKKyAgICBJbWFnZUJ1
ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZChjb25zdCBQYXJhbWV0ZXJzJiwgUmVmUHRyPGNh
aXJvX3N1cmZhY2VfdD4mJik7CiAKICAgICB2b2lkIHBsYXRmb3JtVHJhbnNmb3JtQ29sb3JTcGFj
ZShjb25zdCBzdGQ6OmFycmF5PHVpbnQ4X3QsIDI1Nj4mIGxvb2tVcFRhYmxlKSBvdmVycmlkZTsK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9J
bWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kLmNwcAppbmRl
eCA5YjgyMTY0YWVhMzMwNzFlNTM2MWM2ZmUzOWIxYjgyN2M5YjZiMTUwLi4wYjczZjE0YmE3MDA1
ZTUyMDUwZWQ1ODIxNjRhMTE2MzgwNTQ5NzFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVy
Q2Fpcm9TdXJmYWNlQmFja2VuZC5jcHAKQEAgLTQzLDggKzQzLDggQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1JbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQ6OkltYWdlQnVmZmVyQ2Fp
cm9TdXJmYWNlQmFja2VuZChjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBJbnRT
aXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9y
U3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiYm
IHN1cmZhY2UpCi0gICAgOiBJbWFnZUJ1ZmZlckNhaXJvQmFja2VuZChsb2dpY2FsU2l6ZSwgYmFj
a2VuZFNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQpCitJbWFn
ZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQ6OkltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2Vu
ZChjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiYm
IHN1cmZhY2UpCisgICAgOiBJbWFnZUJ1ZmZlckNhaXJvQmFja2VuZChwYXJhbWV0ZXJzKQogICAg
ICwgbV9zdXJmYWNlKFdURk1vdmUoc3VyZmFjZSkpCiB7CiAgICAgQVNTRVJUKGNhaXJvX3N1cmZh
Y2Vfc3RhdHVzKG1fc3VyZmFjZS5nZXQoKSkgPT0gQ0FJUk9fU1RBVFVTX1NVQ0NFU1MpOwpAQCAt
NTksNiArNTksMTEgQEAgR3JhcGhpY3NDb250ZXh0JiBJbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJh
Y2tlbmQ6OmNvbnRleHQoKSBjb25zdAogICAgIHJldHVybiAqbV9jb250ZXh0OwogfQogCitJbnRT
aXplIEltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZDo6YmFja2VuZFNpemUoKSBjb25zdAor
eworICAgIHJldHVybiB7IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3dpZHRoKG1fc3VyZmFjZS5n
ZXQoKSksIGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2hlaWdodChtX3N1cmZhY2UuZ2V0KCkpIH07
Cit9CisKIHVuc2lnbmVkIEltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZDo6Ynl0ZXNQZXJS
b3coKSBjb25zdAogewogICAgIHJldHVybiBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9zdHJpZGUo
bV9zdXJmYWNlLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNr
ZW5kLmgKaW5kZXggMTJhYTJiMWNlODhlZTQyNjQ1ZmE3NzJlNjc5ZjVkNDE5NWEyNjc0Ny4uOWU5
M2RkZTg1OGVmNDNiMjgyZDQzOGNhNWE3NjdmZWJjYmJkZGJjZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VC
YWNrZW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1h
Z2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kLmgKQEAgLTQwLDYgKzQwLDggQEAgY2xhc3MgSW1h
Z2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kIDogcHVibGljIEltYWdlQnVmZmVyQ2Fpcm9CYWNr
ZW5kIHsKIHB1YmxpYzoKICAgICBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQoKSBjb25zdCBvdmVy
cmlkZTsKIAorICAgIEludFNpemUgYmFja2VuZFNpemUoKSBjb25zdCBvdmVycmlkZTsKKwogICAg
IFJlZlB0cjxOYXRpdmVJbWFnZT4gY29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkpIGNv
bnN0IG92ZXJyaWRlOwogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHRvQkdSQURhdGEoKSBjb25zdCBv
dmVycmlkZTsKQEAgLTQ3LDcgKzQ5LDcgQEAgcHVibGljOgogICAgIHZvaWQgcHV0SW1hZ2VEYXRh
KEFscGhhUHJlbXVsdGlwbGljYXRpb24gaW5wdXRGb3JtYXQsIGNvbnN0IEltYWdlRGF0YSYsIGNv
bnN0IEludFJlY3QmIHNyY1JlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0UG9pbnQsIEFscGhhUHJl
bXVsdGlwbGljYXRpb24gZGVzdEZvcm1hdCkgb3ZlcnJpZGU7CiAKIHByb3RlY3RlZDoKLSAgICBJ
bWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6
ZSwgY29uc3QgSW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29s
b3JTcGFjZSwgUGl4ZWxGb3JtYXQsIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+JiYpOworICAgIElt
YWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZChjb25zdCBQYXJhbWV0ZXJzJiwgUmVmUHRyPGNh
aXJvX3N1cmZhY2VfdD4mJik7CiAKICAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IGNhaXJvU3VyZmFj
ZUNvZXJjZVRvSW1hZ2UoKSBjb25zdDsKICAgICB1bnNpZ25lZCBieXRlc1BlclJvdygpIGNvbnN0
IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VCdWZmZXJDR0JhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JhY2tlbmQuY3BwCmluZGV4IDUwMTdiYTEyYzhiNDg3YjBj
YTA2ZTU0M2IxMjk2MzY1ZDZkZDJiMmIuLmFiYmQzNjg4NzgyNjdkOGNmNzc4YzY2MDZmZGIyODAz
ZGQ0YTFkNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlQnVmZmVyQ0dCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5jcHAKQEAgLTc5LDggKzc5LDggQEAgdm9p
ZCBJbWFnZUJ1ZmZlckNHQmFja2VuZDo6c2V0dXBDb250ZXh0KCkgY29uc3QKIHsKICAgICAvLyBU
aGUgaW5pdGlhbCBDVE0gbWF0Y2hlcyBEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmNsaXBUb0RyYXdp
bmdDb21tYW5kcygpJ3MgaW5pdGlhbCBDVE0uCiAgICAgY29udGV4dCgpLnNjYWxlKEZsb2F0U2l6
ZSgxLCAtMSkpOwotICAgIGNvbnRleHQoKS50cmFuc2xhdGUoMCwgLW1fYmFja2VuZFNpemUuaGVp
Z2h0KCkpOwotICAgIGNvbnRleHQoKS5hcHBseURldmljZVNjYWxlRmFjdG9yKG1fcmVzb2x1dGlv
blNjYWxlKTsKKyAgICBjb250ZXh0KCkudHJhbnNsYXRlKDAsIC1iYWNrZW5kU2l6ZSgpLmhlaWdo
dCgpKTsKKyAgICBjb250ZXh0KCkuYXBwbHlEZXZpY2VTY2FsZUZhY3RvcihyZXNvbHV0aW9uU2Nh
bGUoKSk7CiB9CiAKIHN0YXRpYyBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gY3JlYXRlQ3JvcHBlZElt
YWdlSWZOZWNlc3NhcnkoQ0dJbWFnZVJlZiBpbWFnZSwgY29uc3QgSW50U2l6ZSYgYmFja2VuZFNp
emUpCkBAIC0xMTIsMzEgKzExMiwzMiBAQCBzdGF0aWMgUmVmUHRyPEltYWdlPiBjcmVhdGVCaXRt
YXBJbWFnZUFmdGVyU2NhbGluZ0lmTmVlZGVkKFJlZlB0cjxOYXRpdmVJbWFnZT4mJgogUmVmUHRy
PEltYWdlPiBJbWFnZUJ1ZmZlckNHQmFja2VuZDo6Y29weUltYWdlKEJhY2tpbmdTdG9yZUNvcHkg
Y29weUJlaGF2aW9yLCBQcmVzZXJ2ZVJlc29sdXRpb24gcHJlc2VydmVSZXNvbHV0aW9uKSBjb25z
dAogewogICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gaW1hZ2U7Ci0gICAgaWYgKG1fcmVzb2x1dGlv
blNjYWxlID09IDEgfHwgcHJlc2VydmVSZXNvbHV0aW9uID09IFByZXNlcnZlUmVzb2x1dGlvbjo6
WWVzKQorICAgIGlmIChyZXNvbHV0aW9uU2NhbGUoKSA9PSAxIHx8IHByZXNlcnZlUmVzb2x1dGlv
biA9PSBQcmVzZXJ2ZVJlc29sdXRpb246OlllcykKICAgICAgICAgaW1hZ2UgPSBjb3B5TmF0aXZl
SW1hZ2UoY29weUJlaGF2aW9yKTsKICAgICBlbHNlCiAgICAgICAgIGltYWdlID0gY29weU5hdGl2
ZUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKTsKLSAgICByZXR1cm4gY3JlYXRlQml0bWFwSW1h
Z2VBZnRlclNjYWxpbmdJZk5lZWRlZChXVEZNb3ZlKGltYWdlKSwgbV9sb2dpY2FsU2l6ZSwgbV9i
YWNrZW5kU2l6ZSwgbV9yZXNvbHV0aW9uU2NhbGUsIHByZXNlcnZlUmVzb2x1dGlvbik7CisgICAg
cmV0dXJuIGNyZWF0ZUJpdG1hcEltYWdlQWZ0ZXJTY2FsaW5nSWZOZWVkZWQoV1RGTW92ZShpbWFn
ZSksIGxvZ2ljYWxTaXplKCksIGJhY2tlbmRTaXplKCksIHJlc29sdXRpb25TY2FsZSgpLCBwcmVz
ZXJ2ZVJlc29sdXRpb24pOwogfQogCiBSZWZQdHI8SW1hZ2U+IEltYWdlQnVmZmVyQ0dCYWNrZW5k
OjpzaW5rSW50b0ltYWdlKFByZXNlcnZlUmVzb2x1dGlvbiBwcmVzZXJ2ZVJlc29sdXRpb24pCiB7
Ci0gICAgcmV0dXJuIGNyZWF0ZUJpdG1hcEltYWdlQWZ0ZXJTY2FsaW5nSWZOZWVkZWQoc2lua0lu
dG9OYXRpdmVJbWFnZSgpLCBtX2xvZ2ljYWxTaXplLCBtX2JhY2tlbmRTaXplLCBtX3Jlc29sdXRp
b25TY2FsZSwgcHJlc2VydmVSZXNvbHV0aW9uKTsKKyAgICBhdXRvIGJhY2tlbmRTaXplID0gdGhp
cy0+YmFja2VuZFNpemUoKTsKKyAgICByZXR1cm4gY3JlYXRlQml0bWFwSW1hZ2VBZnRlclNjYWxp
bmdJZk5lZWRlZChzaW5rSW50b05hdGl2ZUltYWdlKCksIGxvZ2ljYWxTaXplKCksIGJhY2tlbmRT
aXplLCByZXNvbHV0aW9uU2NhbGUoKSwgcHJlc2VydmVSZXNvbHV0aW9uKTsKIH0KIAogdm9pZCBJ
bWFnZUJ1ZmZlckNHQmFja2VuZDo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0
IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIEZsb2F0UmVjdCBzcmNSZWN0
U2NhbGVkID0gc3JjUmVjdDsKLSAgICBzcmNSZWN0U2NhbGVkLnNjYWxlKG1fcmVzb2x1dGlvblNj
YWxlKTsKKyAgICBzcmNSZWN0U2NhbGVkLnNjYWxlKHJlc29sdXRpb25TY2FsZSgpKTsKIAogICAg
IGlmIChhdXRvIGltYWdlID0gY29weU5hdGl2ZUltYWdlKCZkZXN0Q29udGV4dCA9PSAmY29udGV4
dCgpID8gQ29weUJhY2tpbmdTdG9yZSA6IERvbnRDb3B5QmFja2luZ1N0b3JlKSkKLSAgICAgICAg
ZGVzdENvbnRleHQuZHJhd05hdGl2ZUltYWdlKCppbWFnZSwgbV9iYWNrZW5kU2l6ZSwgZGVzdFJl
Y3QsIHNyY1JlY3RTY2FsZWQsIG9wdGlvbnMpOworICAgICAgICBkZXN0Q29udGV4dC5kcmF3TmF0
aXZlSW1hZ2UoKmltYWdlLCBiYWNrZW5kU2l6ZSgpLCBkZXN0UmVjdCwgc3JjUmVjdFNjYWxlZCwg
b3B0aW9ucyk7CiB9CiAKIHZvaWQgSW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OmRyYXdQYXR0ZXJuKEdy
YXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJh
bnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5n
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBGbG9hdFJlY3Qg
YWRqdXN0ZWRTcmNSZWN0ID0gc3JjUmVjdDsKLSAgICBhZGp1c3RlZFNyY1JlY3Quc2NhbGUobV9y
ZXNvbHV0aW9uU2NhbGUpOworICAgIGFkanVzdGVkU3JjUmVjdC5zY2FsZShyZXNvbHV0aW9uU2Nh
bGUoKSk7CiAKICAgICBpZiAoYXV0byBpbWFnZSA9IGNvcHlJbWFnZSgmZGVzdENvbnRleHQgPT0g
JmNvbnRleHQoKSA/IENvcHlCYWNraW5nU3RvcmUgOiBEb250Q29weUJhY2tpbmdTdG9yZSkpCiAg
ICAgICAgIGltYWdlLT5kcmF3UGF0dGVybihkZXN0Q29udGV4dCwgZGVzdFJlY3QsIGFkanVzdGVk
U3JjUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIG9wdGlvbnMpOwpAQCAt
MTU5LDExICsxNjAsNiBAQCB2b2lkIEltYWdlQnVmZmVyQ0dCYWNrZW5kOjpjbGlwVG9NYXNrKEdy
YXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UgogICAgIENHQ29udGV4dFRy
YW5zbGF0ZUNUTShjZ0NvbnRleHQsIC1kZXN0UmVjdC54KCksIC1kZXN0UmVjdC5tYXhZKCkpOwog
fQogCi1BZmZpbmVUcmFuc2Zvcm0gSW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OmJhc2VUcmFuc2Zvcm0o
KSBjb25zdAotewotICAgIHJldHVybiBBZmZpbmVUcmFuc2Zvcm0oMSwgMCwgMCwgLTEsIDAsIG1f
bG9naWNhbFNpemUuaGVpZ2h0KCkpOwotfQotCiBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBJbWFnZUJ1
ZmZlckNHQmFja2VuZDo6dG9DRkRhdGEoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8
ZG91YmxlPiBxdWFsaXR5LCBQcmVzZXJ2ZVJlc29sdXRpb24gcHJlc2VydmVSZXNvbHV0aW9uKSBj
b25zdAogewogICAgIEFTU0VSVChNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEltYWdlTUlN
RVR5cGVGb3JFbmNvZGluZyhtaW1lVHlwZSkpOwpAQCAtMTkwLDcgKzE4Niw3IEBAIFJldGFpblB0
cjxDRkRhdGFSZWY+IEltYWdlQnVmZmVyQ0dCYWNrZW5kOjp0b0NGRGF0YShjb25zdCBTdHJpbmcm
IG1pbWVUeXBlLCBPcHRpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgICAgICBp
bWFnZSA9IGFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZShwaXhlbEFycmF5RGltZW5zaW9ucy53aWR0aCgp
LCBwaXhlbEFycmF5RGltZW5zaW9ucy5oZWlnaHQoKSwgOCwgMzIsIDQgKiBwaXhlbEFycmF5RGlt
ZW5zaW9ucy53aWR0aCgpLCBzUkdCQ29sb3JTcGFjZVJlZigpLCBrQ0dCaXRtYXBCeXRlT3JkZXJE
ZWZhdWx0IHwga0NHSW1hZ2VBbHBoYU5vbmVTa2lwTGFzdCwgZGF0YVByb3ZpZGVyLmdldCgpLCAw
LCBmYWxzZSwga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVsdCkpOwotICAgIH0gZWxzZSBpZiAobV9y
ZXNvbHV0aW9uU2NhbGUgPT0gMSB8fCBwcmVzZXJ2ZVJlc29sdXRpb24gPT0gUHJlc2VydmVSZXNv
bHV0aW9uOjpZZXMpIHsKKyAgICB9IGVsc2UgaWYgKHJlc29sdXRpb25TY2FsZSgpID09IDEgfHwg
cHJlc2VydmVSZXNvbHV0aW9uID09IFByZXNlcnZlUmVzb2x1dGlvbjo6WWVzKSB7CiAgICAgICAg
IGltYWdlID0gY29weU5hdGl2ZUltYWdlKENvcHlCYWNraW5nU3RvcmUpLT5wbGF0Zm9ybUltYWdl
KCk7CiAgICAgICAgIGltYWdlID0gY3JlYXRlQ3JvcHBlZEltYWdlSWZOZWNlc3NhcnkoaW1hZ2Uu
Z2V0KCksIGJhY2tlbmRTaXplKCkpOwogICAgIH0gZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JhY2tlbmQuaApp
bmRleCAxZTA3ZmRjNjQ0M2ZkYzA4ZjZhZjYzZTA4ODNlYjMyMDUzZTRkNTk3Li5iMjZhZTA4NDM0
N2I5ZTIzMzQwNDYwMGMyZWE0YTRhMjhiMWUxYmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCYWNrZW5kLmgKQEAg
LTQxLDggKzQxLDYgQEAgcHVibGljOgogICAgIAogICAgIHZvaWQgY2xpcFRvTWFzayhHcmFwaGlj
c0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0KSBvdmVycmlkZTsKIAotICAgIEFm
ZmluZVRyYW5zZm9ybSBiYXNlVHJhbnNmb3JtKCkgY29uc3Qgb3ZlcnJpZGU7Ci0KICAgICBTdHJp
bmcgdG9EYXRhVVJMKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVh
bGl0eSwgUHJlc2VydmVSZXNvbHV0aW9uKSBjb25zdCBvdmVycmlkZTsKICAgICBWZWN0b3I8dWlu
dDhfdD4gdG9EYXRhKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVh
bGl0eSkgY29uc3Qgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmNw
cAppbmRleCBmMjE4ZjI3ZjJmNTNjNWE0YWRiYjZhNWFlZGMzYzQ5ZTQ4Y2Q2M2E0Li5lMzY1OTU1
ZDczZmI5NDA3Nzc3Zjk4ZGQ1YTE1ODRhYzI1NmRkZTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0Jp
dG1hcEJhY2tlbmQuY3BwCkBAIC0zOSwxMSArMzksMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQp
OwogCi1zdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ+IEltYWdlQnVm
ZmVyQ0dCaXRtYXBCYWNrZW5kOjpjcmVhdGUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCBy
ZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgQ0dDb2xvclNwYWNlUmVmIGNn
Q29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIGNvbnN0IEhvc3RXaW5kb3cqKQor
c3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kPiBJbWFnZUJ1ZmZlckNH
Qml0bWFwQmFja2VuZDo6Y3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIENHQ29s
b3JTcGFjZVJlZiBjZ0NvbG9yU3BhY2UsIGNvbnN0IEhvc3RXaW5kb3cqKQogewotICAgIEFTU0VS
VChwaXhlbEZvcm1hdCA9PSBQaXhlbEZvcm1hdDo6QkdSQTgpOworICAgIEFTU0VSVChwYXJhbWV0
ZXJzLnBpeGVsRm9ybWF0ID09IFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAKLSAgICBJbnRTaXplIGJh
Y2tlbmRTaXplID0gY2FsY3VsYXRlQmFja2VuZFNpemUoc2l6ZSwgcmVzb2x1dGlvblNjYWxlKTsK
KyAgICBJbnRTaXplIGJhY2tlbmRTaXplID0gY2FsY3VsYXRlQmFja2VuZFNpemUocGFyYW1ldGVy
cy5sb2dpY2FsU2l6ZSwgcGFyYW1ldGVycy5yZXNvbHV0aW9uU2NhbGUpOwogICAgIGlmIChiYWNr
ZW5kU2l6ZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC03MCwyNCAr
NzAsMjQgQEAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kPiBJbWFn
ZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y3JlYXRlKGMKIAogICAgIGF1dG8gZGF0YVByb3ZpZGVy
ID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZVdpdGhEYXRhKDAsIGRhdGEsIG51bUJ5dGVz
LCByZWxlYXNlSW1hZ2VEYXRhKSk7CiAKLSAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEltYWdl
QnVmZmVyQ0dCaXRtYXBCYWNrZW5kPihuZXcgSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQoc2l6
ZSwgYmFja2VuZFNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQs
IGRhdGEsIFdURk1vdmUoZGF0YVByb3ZpZGVyKSwgV1RGTW92ZShjb250ZXh0KSkpOworICAgIHJl
dHVybiBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ+KG5ldyBJbWFn
ZUJ1ZmZlckNHQml0bWFwQmFja2VuZChwYXJhbWV0ZXJzLCBkYXRhLCBXVEZNb3ZlKGRhdGFQcm92
aWRlciksIFdURk1vdmUoY29udGV4dCkpKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVm
ZmVyQ0dCaXRtYXBCYWNrZW5kPiBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y3JlYXRlKGNv
bnN0IEZsb2F0U2l6ZSYgc2l6ZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQorc3Rk
Ojp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kPiBJbWFnZUJ1ZmZlckNHQml0
bWFwQmFja2VuZDo6Y3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIGNvbnN0IEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCkKIHsKLSAgICBpZiAoYXV0byBjZ0NvbG9yU3BhY2UgPSBj
b250ZXh0Q29sb3JTcGFjZShjb250ZXh0KSkKLSAgICAgICAgcmV0dXJuIEltYWdlQnVmZmVyQ0dC
aXRtYXBCYWNrZW5kOjpjcmVhdGUoc2l6ZSwgMSwgQ29sb3JTcGFjZTo6U1JHQiwgY2dDb2xvclNw
YWNlLmdldCgpLCBQaXhlbEZvcm1hdDo6QkdSQTgsIG51bGxwdHIpOwotICAgIAotICAgIHJldHVy
biBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y3JlYXRlKHNpemUsIDEsIENvbG9yU3BhY2U6
OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCwgbnVsbHB0cik7CisgICAgaWYgKGF1dG8gY2dDb2xv
clNwYWNlID0gY29udGV4dC5oYXNQbGF0Zm9ybUNvbnRleHQoKSA/IGNvbnRleHRDb2xvclNwYWNl
KGNvbnRleHQpIDogbnVsbHB0cikKKyAgICAgICAgcmV0dXJuIEltYWdlQnVmZmVyQ0dCaXRtYXBC
YWNrZW5kOjpjcmVhdGUocGFyYW1ldGVycywgY2dDb2xvclNwYWNlLmdldCgpLCBudWxscHRyKTsK
KworICAgIHJldHVybiBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y3JlYXRlKHBhcmFtZXRl
cnMsIG51bGxwdHIpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJDR0JpdG1hcEJh
Y2tlbmQ+IEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpjcmVhdGUoY29uc3QgRmxvYXRTaXpl
JiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgUGl4
ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIGNvbnN0IEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cpCitzdGQ6
OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ+IEltYWdlQnVmZmVyQ0dCaXRt
YXBCYWNrZW5kOjpjcmVhdGUoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycywgY29uc3QgSG9z
dFdpbmRvdyogaG9zdFdpbmRvdykKIHsKLSAgICByZXR1cm4gSW1hZ2VCdWZmZXJDR0JpdG1hcEJh
Y2tlbmQ6OmNyZWF0ZShzaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIGNhY2hlZENH
Q29sb3JTcGFjZShjb2xvclNwYWNlKSwgcGl4ZWxGb3JtYXQsIGhvc3RXaW5kb3cpOworICAgIHJl
dHVybiBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y3JlYXRlKHBhcmFtZXRlcnMsIGNhY2hl
ZENHQ29sb3JTcGFjZShwYXJhbWV0ZXJzLmNvbG9yU3BhY2UpLCBob3N0V2luZG93KTsKIH0KIAot
SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OkltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kKGNv
bnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEludFNpemUmIGJhY2tlbmRTaXplLCBm
bG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQg
cGl4ZWxGb3JtYXQsIHZvaWQqIGRhdGEsIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4mJiBk
YXRhUHJvdmlkZXIsIHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0NvbnRleHQ+JiYgY29udGV4dCkK
LSAgICA6IEltYWdlQnVmZmVyQ0dCYWNrZW5kKGxvZ2ljYWxTaXplLCBiYWNrZW5kU2l6ZSwgcmVz
b2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCkKK0ltYWdlQnVmZmVyQ0dCaXRt
YXBCYWNrZW5kOjpJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZChjb25zdCBQYXJhbWV0ZXJzJiBw
YXJhbWV0ZXJzLCB2b2lkKiBkYXRhLCBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+JiYgZGF0
YVByb3ZpZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NDb250ZXh0PiYmIGNvbnRleHQpCisg
ICAgOiBJbWFnZUJ1ZmZlckNHQmFja2VuZChwYXJhbWV0ZXJzKQogICAgICwgbV9kYXRhKGRhdGEp
CiAgICAgLCBtX2RhdGFQcm92aWRlcihXVEZNb3ZlKGRhdGFQcm92aWRlcikpCiAgICAgLCBtX2Nv
bnRleHQoV1RGTW92ZShjb250ZXh0KSkKQEAgLTEwMyw2ICsxMDMsMTEgQEAgR3JhcGhpY3NDb250
ZXh0JiBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y29udGV4dCgpIGNvbnN0CiAgICAgcmV0
dXJuICptX2NvbnRleHQ7CiB9CiAKK0ludFNpemUgSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6
OmJhY2tlbmRTaXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4geyBzdGF0aWNfY2FzdDxpbnQ+KENH
Qml0bWFwQ29udGV4dEdldFdpZHRoKGNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKSkpLCBzdGF0
aWNfY2FzdDxpbnQ+KENHQml0bWFwQ29udGV4dEdldEhlaWdodChjb250ZXh0KCkucGxhdGZvcm1D
b250ZXh0KCkpKSB9OworfQorCiBSZWZQdHI8TmF0aXZlSW1hZ2U+IEltYWdlQnVmZmVyQ0dCaXRt
YXBCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSBjb3B5QmVoYXZpb3Ip
IGNvbnN0CiB7CiAgICAgc3dpdGNoIChjb3B5QmVoYXZpb3IpIHsKQEAgLTExMCw5ICsxMTUsMTAg
QEAgUmVmUHRyPE5hdGl2ZUltYWdlPiBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y29weU5h
dGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkKICAgICAgICAgcmV0dXJuIE5hdGl2ZUltYWdlOjpj
cmVhdGUoYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGVJbWFnZShjb250ZXh0KCkucGxhdGZv
cm1Db250ZXh0KCkpKSk7CiAKICAgICBjYXNlIERvbnRDb3B5QmFja2luZ1N0b3JlOgorICAgICAg
ICBhdXRvIGJhY2tlbmRTaXplID0gdGhpcy0+YmFja2VuZFNpemUoKTsKICAgICAgICAgcmV0dXJu
IE5hdGl2ZUltYWdlOjpjcmVhdGUoYWRvcHRDRihDR0ltYWdlQ3JlYXRlKAotICAgICAgICAgICAg
bV9iYWNrZW5kU2l6ZS53aWR0aCgpLCBtX2JhY2tlbmRTaXplLmhlaWdodCgpLCA4LCAzMiwgYnl0
ZXNQZXJSb3coKSwKLSAgICAgICAgICAgIGNhY2hlZENHQ29sb3JTcGFjZShtX2NvbG9yU3BhY2Up
LCBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZEZpcnN0IHwga0NHQml0bWFwQnl0ZU9yZGVyMzJI
b3N0LCBtX2RhdGFQcm92aWRlci5nZXQoKSwKKyAgICAgICAgICAgIGJhY2tlbmRTaXplLndpZHRo
KCksIGJhY2tlbmRTaXplLmhlaWdodCgpLCA4LCAzMiwgYnl0ZXNQZXJSb3coKSwKKyAgICAgICAg
ICAgIGNhY2hlZENHQ29sb3JTcGFjZShjb2xvclNwYWNlKCkpLCBrQ0dJbWFnZUFscGhhUHJlbXVs
dGlwbGllZEZpcnN0IHwga0NHQml0bWFwQnl0ZU9yZGVyMzJIb3N0LCBtX2RhdGFQcm92aWRlci5n
ZXQoKSwKICAgICAgICAgICAgIDAsIHRydWUsIGtDR1JlbmRlcmluZ0ludGVudERlZmF1bHQpKSk7
CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQuaAppbmRleCBlOTJjOTJmNWQ1
MGZkZTU3YWFhM2NhNWMyZmYyOWRmMDhiODY0ZDI5Li44ZjMzMjNlN2RjZWM2MzU1YWNiN2Q1Yjk5
YzIwNzg3NzE1Yzg2YmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmgKQEAgLTM2
LDEyICszNiwxNCBAQCBjbGFzcyBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZCA6IHB1YmxpYyBJ
bWFnZUJ1ZmZlckNHQmFja2VuZCB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChJbWFnZUJ1
ZmZlckNHQml0bWFwQmFja2VuZCk7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW1hZ2VCdWZm
ZXJDR0JpdG1hcEJhY2tlbmQpOwogcHVibGljOgotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ+IGNyZWF0ZShjb25zdCBGbG9hdFNpemUmLCBmbG9h
dCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UsIENHQ29sb3JTcGFjZVJlZiwgUGl4ZWxGb3Jt
YXQsIGNvbnN0IEhvc3RXaW5kb3cqKTsKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdl
QnVmZmVyQ0dCaXRtYXBCYWNrZW5kPiBjcmVhdGUoY29uc3QgRmxvYXRTaXplJiwgZmxvYXQgcmVz
b2x1dGlvblNjYWxlLCBDb2xvclNwYWNlLCBQaXhlbEZvcm1hdCwgY29uc3QgSG9zdFdpbmRvdyop
OwotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ+
IGNyZWF0ZShjb25zdCBGbG9hdFNpemUmLCBjb25zdCBHcmFwaGljc0NvbnRleHQmKTsKKyAgICBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kPiBjcmVhdGUo
Y29uc3QgUGFyYW1ldGVycyYsIENHQ29sb3JTcGFjZVJlZiwgY29uc3QgSG9zdFdpbmRvdyopOwor
ICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ+IGNy
ZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiwgY29uc3QgSG9zdFdpbmRvdyopOworICAgIHN0YXRpYyBz
dGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ+IGNyZWF0ZShjb25zdCBQ
YXJhbWV0ZXJzJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0Jik7CiAKICAgICBHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQoKSBjb25zdCBvdmVycmlkZTsKIAorICAgIEludFNpemUgYmFja2VuZFNpemUo
KSBjb25zdCBvdmVycmlkZTsKKwogICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gY29weU5hdGl2ZUlt
YWdlKEJhY2tpbmdTdG9yZUNvcHkgPSBDb3B5QmFja2luZ1N0b3JlKSBjb25zdCBvdmVycmlkZTsK
IAogICAgIFZlY3Rvcjx1aW50OF90PiB0b0JHUkFEYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CkBAIC01
Miw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNPcmlnaW5B
dFVwcGVyTGVmdENvcm5lciA9IHRydWU7CiAKIHByaXZhdGU6Ci0gICAgSW1hZ2VCdWZmZXJDR0Jp
dG1hcEJhY2tlbmQoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50U2l6ZSYg
cGh5c2ljYWxTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UsIFBpeGVsRm9y
bWF0LCB2b2lkKiBkYXRhLCBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+JiYsIHN0ZDo6dW5p
cXVlX3B0cjxHcmFwaGljc0NvbnRleHQ+JiYpOworICAgIEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNr
ZW5kKGNvbnN0IFBhcmFtZXRlcnMmLCB2b2lkKiBkYXRhLCBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlk
ZXJSZWY+JiYsIHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0NvbnRleHQ+JiYpOwogCiAgICAgdm9p
ZCogbV9kYXRhOwogICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4gbV9kYXRhUHJvdmlk
ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFn
ZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmNwcAppbmRleCBhZDNmZjFkNzk3
NzIwMzc2NDBlMmQ2OTk1NDEyODg2MGI3NzQ4YzM2Li5kM2Y0MzEwNzZiOGVmMmJiNzFkMTI4OWQx
Y2I3NmQ4NzMzN2I2ZDgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5jcHAK
QEAgLTY0LDEzICs2NCwxMyBAQCBSZXRhaW5QdHI8Q0dDb2xvclNwYWNlUmVmPiBJbWFnZUJ1ZmZl
cklPU3VyZmFjZUJhY2tlbmQ6OmNvbnRleHRDb2xvclNwYWNlKGNvbnN0CiAgICAgcmV0dXJuIElt
YWdlQnVmZmVyQ0dCYWNrZW5kOjpjb250ZXh0Q29sb3JTcGFjZShjb250ZXh0KTsKIH0KIAotc3Rk
Ojp1bmlxdWVfcHRyPEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZD4gSW1hZ2VCdWZmZXJJT1N1
cmZhY2VCYWNrZW5kOjpjcmVhdGUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0
aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgQ0dDb2xvclNwYWNlUmVmIGNnQ29sb3JT
cGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIGNvbnN0IEhvc3RXaW5kb3cqIGhvc3RXaW5k
b3cpCitzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kPiBJbWFnZUJ1
ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJz
LCBDR0NvbG9yU3BhY2VSZWYgY2dDb2xvclNwYWNlLCBjb25zdCBIb3N0V2luZG93KiBob3N0V2lu
ZG93KQogewotICAgIEludFNpemUgYmFja2VuZFNpemUgPSBjYWxjdWxhdGVCYWNrZW5kU2l6ZShz
aXplLCByZXNvbHV0aW9uU2NhbGUpOworICAgIEludFNpemUgYmFja2VuZFNpemUgPSBjYWxjdWxh
dGVCYWNrZW5kU2l6ZShwYXJhbWV0ZXJzLmxvZ2ljYWxTaXplLCBwYXJhbWV0ZXJzLnJlc29sdXRp
b25TY2FsZSk7CiAgICAgaWYgKGJhY2tlbmRTaXplLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKLSAgICBhdXRvIHN1cmZhY2UgPSBJT1N1cmZhY2U6OmNyZWF0ZShiYWNrZW5k
U2l6ZSwgYmFja2VuZFNpemUsIGNnQ29sb3JTcGFjZSwgSU9TdXJmYWNlOjpmb3JtYXRGb3JQaXhl
bEZvcm1hdChwaXhlbEZvcm1hdCkpOworICAgIGF1dG8gc3VyZmFjZSA9IElPU3VyZmFjZTo6Y3Jl
YXRlKGJhY2tlbmRTaXplLCBiYWNrZW5kU2l6ZSwgY2dDb2xvclNwYWNlLCBJT1N1cmZhY2U6OmZv
cm1hdEZvclBpeGVsRm9ybWF0KHBhcmFtZXRlcnMucGl4ZWxGb3JtYXQpKTsKICAgICBpZiAoIXN1
cmZhY2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC04MCwyNCArODAsMjQgQEAgc3Rk
Ojp1bmlxdWVfcHRyPEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZD4gSW1hZ2VCdWZmZXJJT1N1
cmZhY2VCYWNrZW5kOjpjcmVhdGUKIAogICAgIENHQ29udGV4dENsZWFyUmVjdChjZ0NvbnRleHQu
Z2V0KCksIEZsb2F0UmVjdChGbG9hdFBvaW50Ojp6ZXJvKCksIGJhY2tlbmRTaXplKSk7CiAKLSAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ+KHNpemUsIGJh
Y2tlbmRTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0LCBXVEZN
b3ZlKHN1cmZhY2UpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxJbWFnZUJ1ZmZlcklPU3VyZmFj
ZUJhY2tlbmQ+KHBhcmFtZXRlcnMsIFdURk1vdmUoc3VyZmFjZSkpOwogfQogCi1zdGQ6OnVuaXF1
ZV9wdHI8SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kPiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJh
Y2tlbmQ6OmNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIGNvbnN0IEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCkKK3N0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ+
IEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmIHBh
cmFtZXRlcnMsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKIHsKLSAgICBpZiAoYXV0
byBjZ0NvbG9yU3BhY2UgPSBjb250ZXh0Q29sb3JTcGFjZShjb250ZXh0KSkKLSAgICAgICAgcmV0
dXJuIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlKHNpemUsIDEsIENvbG9yU3Bh
Y2U6OlNSR0IsIGNnQ29sb3JTcGFjZS5nZXQoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4LCBudWxscHRy
KTsKLSAgICAKLSAgICByZXR1cm4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGUo
c2l6ZSwgMSwgQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4LCBudWxscHRyKTsK
KyAgICBpZiAoYXV0byBjZ0NvbG9yU3BhY2UgPSBjb250ZXh0Lmhhc1BsYXRmb3JtQ29udGV4dCgp
ID8gY29udGV4dENvbG9yU3BhY2UoY29udGV4dCkgOiBudWxscHRyKQorICAgICAgICByZXR1cm4g
SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGUocGFyYW1ldGVycywgY2dDb2xvclNw
YWNlLmdldCgpLCBudWxscHRyKTsKKworICAgIHJldHVybiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJh
Y2tlbmQ6OmNyZWF0ZShwYXJhbWV0ZXJzLCBudWxscHRyKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRy
PEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZD4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5k
OjpjcmVhdGUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENv
bG9yU3BhY2UgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIGNvbnN0IEhvc3RX
aW5kb3cqIGhvc3RXaW5kb3cpCitzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJJT1N1cmZhY2VC
YWNrZW5kPiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZShjb25zdCBQYXJhbWV0
ZXJzJiBwYXJhbWV0ZXJzLCBjb25zdCBIb3N0V2luZG93KiBob3N0V2luZG93KQogewotICAgIHJl
dHVybiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZShzaXplLCByZXNvbHV0aW9u
U2NhbGUsIGNvbG9yU3BhY2UsIGNhY2hlZENHQ29sb3JTcGFjZShjb2xvclNwYWNlKSwgcGl4ZWxG
b3JtYXQsIGhvc3RXaW5kb3cpOworICAgIHJldHVybiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tl
bmQ6OmNyZWF0ZShwYXJhbWV0ZXJzLCBjYWNoZWRDR0NvbG9yU3BhY2UocGFyYW1ldGVycy5jb2xv
clNwYWNlKSwgaG9zdFdpbmRvdyk7CiB9CiAKLUltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6
SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUs
IGNvbnN0IEludFNpemUmIGJhY2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9y
U3BhY2UgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIHN0ZDo6dW5pcXVlX3B0
cjxJT1N1cmZhY2U+JiYgc3VyZmFjZSkKLSAgICA6IEltYWdlQnVmZmVyQ0dCYWNrZW5kKGxvZ2lj
YWxTaXplLCBiYWNrZW5kU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZv
cm1hdCkKK0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6SW1hZ2VCdWZmZXJJT1N1cmZhY2VC
YWNrZW5kKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIHN0ZDo6dW5pcXVlX3B0cjxJT1N1
cmZhY2U+JiYgc3VyZmFjZSkKKyAgICA6IEltYWdlQnVmZmVyQ0dCYWNrZW5kKHBhcmFtZXRlcnMp
CiAgICAgLCBtX3N1cmZhY2UoV1RGTW92ZShzdXJmYWNlKSkKIHsKICAgICBBU1NFUlQobV9zdXJm
YWNlKTsKQEAgLTEyMCw2ICsxMjAsMTEgQEAgdm9pZCBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tl
bmQ6OmZsdXNoQ29udGV4dCgpCiAgICAgQ0dDb250ZXh0Rmx1c2goY29udGV4dCgpLnBsYXRmb3Jt
Q29udGV4dCgpKTsKIH0KIAorSW50U2l6ZSBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmJh
Y2tlbmRTaXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zdXJmYWNlLT5zaXplKCk7Cit9CisK
IHNpemVfdCBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6Om1lbW9yeUNvc3QoKSBjb25zdAog
ewogICAgIHJldHVybiBtX3N1cmZhY2UtPnRvdGFsQnl0ZXMoKTsKQEAgLTE0OCwxMCArMTUzLDEw
IEBAIFJlZlB0cjxOYXRpdmVJbWFnZT4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpzaW5r
SW50b05hdGl2ZUltYWdlKCkKIHZvaWQgSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpkcmF3
Q29uc3VtaW5nKEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgRmxvYXRSZWN0IGFkanVzdGVkU3JjUmVjdCA9IHNyY1Jl
Y3Q7Ci0gICAgYWRqdXN0ZWRTcmNSZWN0LnNjYWxlKG1fcmVzb2x1dGlvblNjYWxlKTsKKyAgICBh
ZGp1c3RlZFNyY1JlY3Quc2NhbGUocmVzb2x1dGlvblNjYWxlKCkpOwogCiAgICAgaWYgKGF1dG8g
aW1hZ2UgPSBzaW5rSW50b05hdGl2ZUltYWdlKCkpCi0gICAgICAgIGRlc3RDb250ZXh0LmRyYXdO
YXRpdmVJbWFnZSgqaW1hZ2UsIG1fYmFja2VuZFNpemUsIGRlc3RSZWN0LCBhZGp1c3RlZFNyY1Jl
Y3QsIG9wdGlvbnMpOworICAgICAgICBkZXN0Q29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoKmltYWdl
LCBiYWNrZW5kU2l6ZSgpLCBkZXN0UmVjdCwgYWRqdXN0ZWRTcmNSZWN0LCBvcHRpb25zKTsKIH0K
IAogUmV0YWluUHRyPENGRGF0YVJlZj4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjp0b0NG
RGF0YShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHksIFBy
ZXNlcnZlUmVzb2x1dGlvbiBwcmVzZXJ2ZVJlc29sdXRpb24pIGNvbnN0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJh
Y2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVy
SU9TdXJmYWNlQmFja2VuZC5oCmluZGV4IGRlOTgyMTExZTUyYzEyZWRiMDhkYzc4OGI1MGVjZWZi
MzY1MDc2NTAuLjQ4NTlkZjZmYzUyNWQ4NWMzMjhjMTQ1ZjA3OTE3ODM1NjkwOWUyNWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9T
dXJmYWNlQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5oCkBAIC0zOSwxNSArMzksMTcgQEAgY2xhc3Mg
V0VCQ09SRV9FWFBPUlQgSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kIDogcHVibGljIEltYWdl
QnVmZmVyQ0dCYWNrZW5kIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgSW50U2l6ZSBjYWxjdWxhdGVC
YWNrZW5kU2l6ZShjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBmbG9hdCByZXNvbHV0aW9u
U2NhbGUpOwogCi0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcklPU3VyZmFj
ZUJhY2tlbmQ+IGNyZWF0ZShjb25zdCBGbG9hdFNpemUmLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUs
IENvbG9yU3BhY2UsIENHQ29sb3JTcGFjZVJlZiwgUGl4ZWxGb3JtYXQsIGNvbnN0IEhvc3RXaW5k
b3cqKTsKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVySU9TdXJmYWNlQmFj
a2VuZD4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29s
b3JTcGFjZSwgUGl4ZWxGb3JtYXQsIGNvbnN0IEhvc3RXaW5kb3cqKTsKLSAgICBzdGF0aWMgc3Rk
Ojp1bmlxdWVfcHRyPEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZD4gY3JlYXRlKGNvbnN0IEZs
b2F0U2l6ZSYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1
ZV9wdHI8SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kPiBjcmVhdGUoY29uc3QgUGFyYW1ldGVy
cyYsIENHQ29sb3JTcGFjZVJlZiwgY29uc3QgSG9zdFdpbmRvdyopOworICAgIHN0YXRpYyBzdGQ6
OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kPiBjcmVhdGUoY29uc3QgUGFy
YW1ldGVycyYsIGNvbnN0IEhvc3RXaW5kb3cqKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRy
PEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZD4gY3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmLCBj
b25zdCBHcmFwaGljc0NvbnRleHQmKTsKIAotICAgIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2Vu
ZChjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBJbnRTaXplJiBwaHlzaWNhbFNp
emUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQsIHN0ZDo6
dW5pcXVlX3B0cjxJT1N1cmZhY2U+JiYpOworICAgIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2Vu
ZChjb25zdCBQYXJhbWV0ZXJzJiwgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4mJik7CiAKICAg
ICBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQoKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIGZs
dXNoQ29udGV4dCgpIG92ZXJyaWRlOwogCisgICAgSW50U2l6ZSBiYWNrZW5kU2l6ZSgpIGNvbnN0
IG92ZXJyaWRlOworICAgIAogICAgIHNpemVfdCBtZW1vcnlDb3N0KCkgY29uc3Qgb3ZlcnJpZGU7
CiAgICAgc2l6ZV90IGV4dGVybmFsTWVtb3J5Q29zdCgpIGNvbnN0IG92ZXJyaWRlOwogCkBAIC02
OSw3ICs3MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbGVhc2VCdWZmZXJUb1Bvb2woKSBvdmVy
cmlkZTsKIAogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc09yaWdpbkF0VXBwZXJMZWZ0Q29y
bmVyID0gdHJ1ZTsKLSAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNBY2NlbGVyYXRlZCA9IHRy
dWU7CisgICAgc3RhdGljIGNvbnN0ZXhwciBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUgPSBS
ZW5kZXJpbmdNb2RlOjpBY2NlbGVyYXRlZDsKIAogcHJvdGVjdGVkOgogICAgIHN0YXRpYyBSZXRh
aW5QdHI8Q0dDb2xvclNwYWNlUmVmPiBjb250ZXh0Q29sb3JTcGFjZShjb25zdCBHcmFwaGljc0Nv
bnRleHQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmgKaW5kZXggMjZmYzk3MzA3MjExMjczMDM5M2Uy
ZGNiYzg3ZDBjNmI5Y2E1NDI1OC4uMTZiMTk3ZjllZTJkMjhkYmU5MjFkOTMwOTQzZDQzMDQ2MWRm
Y2Q4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmgKQEAgLTMzLDcgKzMzLDYgQEAKICNpbmNsdWRl
IDx3dGYvRmFzdE1hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8
d3RmL05vbmNvcHlhYmxlLmg+Ci0jaW5jbHVkZSA8d3RmL09iamVjdElkZW50aWZpZXIuaD4KICNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAK
QEAgLTQ1LDkgKzQ0LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBuYW1lc3BhY2UgRGlzcGxh
eUxpc3QgewogCi1lbnVtIEZsdXNoSWRlbnRpZmllclR5cGUgeyB9OwotdXNpbmcgRmx1c2hJZGVu
dGlmaWVyID0gT2JqZWN0SWRlbnRpZmllcjxGbHVzaElkZW50aWZpZXJUeXBlPjsKLQogZW51bSBB
c1RleHRGbGFnIHsKICAgICBOb25lICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMCwKICAg
ICBJbmNsdWRlc1BsYXRmb3JtT3BlcmF0aW9ucyAgICAgID0gMSA8PCAwLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
Rmx1c2hJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RGbHVzaElkZW50aWZpZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45Y2Y3ODE2
OGViYjdmYzczN2I5YjRhNmNmOGQ1MzcyOWY1YTA2MGVjCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0Rmx1
c2hJZGVudGlmaWVyLmgKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSA8d3RmL09iamVjdElkZW50aWZpZXIuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCituYW1lc3BhY2UgRGlzcGxheUxpc3QgeworCitlbnVtIEZsdXNoSWRlbnRpZmllclR5
cGUgeyB9OwordXNpbmcgRmx1c2hJZGVudGlmaWVyID0gT2JqZWN0SWRlbnRpZmllcjxGbHVzaElk
ZW50aWZpZXJUeXBlPjsKKworfSAvLyBEaXNwbGF5TGlzdAorCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXIuaAppbmRleCBmNWIy
MjM0MDJhZWIzNzcyOGI3MzAxZmI2NjcxMThhM2IyZThiMDQwLi5hNjVmY2E1NTlhMTY1ZmM2YjJk
ODYyM2YzNTNlMTE2NDcyOTM3NzZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdElt
YWdlQnVmZmVyLmgKQEAgLTM0LDI2ICszNCwyOSBAQCBuYW1lc3BhY2UgRGlzcGxheUxpc3Qgewog
dGVtcGxhdGU8dHlwZW5hbWUgQmFja2VuZFR5cGU+CiBjbGFzcyBJbWFnZUJ1ZmZlciA6IHB1Ymxp
YyBDb25jcmV0ZUltYWdlQnVmZmVyPEJhY2tlbmRUeXBlPiB7CiAgICAgdXNpbmcgQmFzZUNvbmNy
ZXRlSW1hZ2VCdWZmZXIgPSBDb25jcmV0ZUltYWdlQnVmZmVyPEJhY2tlbmRUeXBlPjsKKyAgICB1
c2luZyBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZlcjo6bG9naWNhbFNpemU7CisgICAgdXNpbmcgQmFz
ZUNvbmNyZXRlSW1hZ2VCdWZmZXI6OmJhc2VUcmFuc2Zvcm07CiAKIHB1YmxpYzoKICAgICBzdGF0
aWMgYXV0byBjcmVhdGUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2Nh
bGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIGNvbnN0
IEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cpCiAgICAgewotICAgICAgICByZXR1cm4gQmFzZUNvbmNy
ZXRlSW1hZ2VCdWZmZXI6OnRlbXBsYXRlIGNyZWF0ZTxJbWFnZUJ1ZmZlcj4oc2l6ZSwgcmVzb2x1
dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCwgaG9zdFdpbmRvdywgc2l6ZSk7Cisg
ICAgICAgIHJldHVybiBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZlcjo6dGVtcGxhdGUgY3JlYXRlPElt
YWdlQnVmZmVyPihzaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0
LCBob3N0V2luZG93KTsKICAgICB9CiAKICAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3QgRmxv
YXRTaXplJiBzaXplLCBjb25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiAgICAgewotICAg
ICAgICByZXR1cm4gQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXI6OnRlbXBsYXRlIGNyZWF0ZTxJbWFn
ZUJ1ZmZlcj4oc2l6ZSwgY29udGV4dCwgc2l6ZSk7CisgICAgICAgIHJldHVybiBCYXNlQ29uY3Jl
dGVJbWFnZUJ1ZmZlcjo6dGVtcGxhdGUgY3JlYXRlPEltYWdlQnVmZmVyPihzaXplLCBjb250ZXh0
KTsKICAgICB9CiAKLSAgICBJbWFnZUJ1ZmZlcihzdGQ6OnVuaXF1ZV9wdHI8QmFja2VuZFR5cGU+
JiYgZGF0YUJhY2tlbmQsIGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKLSAgICAgICAgOiBCYXNlQ29u
Y3JldGVJbWFnZUJ1ZmZlcihXVEZNb3ZlKGRhdGFCYWNrZW5kKSkKLSAgICAgICAgLCBtX2RyYXdp
bmdDb250ZXh0KHNpemUsIGluaXRpYWxEcmF3aW5nQ29udGV4dENUTShzaXplKSkKKyAgICBJbWFn
ZUJ1ZmZlcihjb25zdCBJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnMmIHBhcmFtZXRlcnMs
IHN0ZDo6dW5pcXVlX3B0cjxCYWNrZW5kVHlwZT4mJiBiYWNrZW5kKQorICAgICAgICA6IEJhc2VD
b25jcmV0ZUltYWdlQnVmZmVyKHBhcmFtZXRlcnMsIFdURk1vdmUoYmFja2VuZCkpCisgICAgICAg
ICwgbV9kcmF3aW5nQ29udGV4dChsb2dpY2FsU2l6ZSgpLCBiYXNlVHJhbnNmb3JtKCkpCiAgICAg
ewogICAgIH0KIAotICAgIEltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgUmVjb3Jk
ZXI6OkRlbGVnYXRlKiBkZWxlZ2F0ZSA9IG51bGxwdHIpCi0gICAgICAgIDogbV9kcmF3aW5nQ29u
dGV4dChzaXplLCBpbml0aWFsRHJhd2luZ0NvbnRleHRDVE0oc2l6ZSksIGRlbGVnYXRlKQorICAg
IEltYWdlQnVmZmVyKGNvbnN0IEltYWdlQnVmZmVyQmFja2VuZDo6UGFyYW1ldGVycyYgcGFyYW1l
dGVycywgUmVjb3JkZXI6OkRlbGVnYXRlKiBkZWxlZ2F0ZSA9IG51bGxwdHIpCisgICAgICAgIDog
QmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXIocGFyYW1ldGVycykKKyAgICAgICAgLCBtX2RyYXdpbmdD
b250ZXh0KGxvZ2ljYWxTaXplKCksIGJhc2VUcmFuc2Zvcm0oKSwgZGVsZWdhdGUpCiAgICAgewog
ICAgIH0KIApAQCAtNzcsMTUgKzgwLDYgQEAgcHVibGljOgogCiBwcm90ZWN0ZWQ6CiAgICAgRHJh
d2luZ0NvbnRleHQgbV9kcmF3aW5nQ29udGV4dDsKLQotcHJpdmF0ZToKLSAgICBzdGF0aWMgQWZm
aW5lVHJhbnNmb3JtIGluaXRpYWxEcmF3aW5nQ29udGV4dENUTShjb25zdCBGbG9hdFNpemUmIGxv
Z2ljYWxTaXplKQotICAgIHsKLSAgICAgICAgQWZmaW5lVHJhbnNmb3JtIGluaXRpYWxDVE07Ci0g
ICAgICAgIGlmIChCYWNrZW5kVHlwZTo6aXNPcmlnaW5BdFVwcGVyTGVmdENvcm5lcikKLSAgICAg
ICAgICAgIGluaXRpYWxDVE0gPSBpbml0aWFsQ1RNLnNjYWxlKDEsIC0xKS50cmFuc2xhdGUoMCwg
LWxvZ2ljYWxTaXplLmhlaWdodCgpKTsKLSAgICAgICAgcmV0dXJuIGluaXRpYWxDVE07Ci0gICAg
fQogfTsKIAogfSAvLyBEaXNwbGF5TGlzdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2Vu
ZC5jcHAKaW5kZXggMzc4YWFmNGM0MGM0ZTEyMmFjYmUwNjk0MzJjN2FkN2VjMjA5ZWQ3My4uMDFk
MmU3ODAyODViMTFmZWMzOWI0Y2QyNmJmNGNmZmYwODA3MzM3NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5k
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZm
ZXJEaXJlY3QyREJhY2tlbmQuY3BwCkBAIC0xNzEsNyArMTcxLDcgQEAgc3RhdGljIFJlZlB0cjxJ
bWFnZT4gY3JlYXRlQml0bWFwSW1hZ2VBZnRlclNjYWxpbmdJZk5lZWRlZChJRDJEMUJpdG1hcFJl
bmRlclRhcmcKIFJlZlB0cjxJbWFnZT4gSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OmNvcHlJ
bWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvciwgUHJlc2VydmVSZXNvbHV0aW9uIHBy
ZXNlcnZlUmVzb2x1dGlvbikgY29uc3QKIHsKICAgICBQbGF0Zm9ybUltYWdlUHRyIGltYWdlOwot
ICAgIGlmIChtX3Jlc29sdXRpb25TY2FsZSA9PSAxIHx8IHByZXNlcnZlUmVzb2x1dGlvbiA9PSBQ
cmVzZXJ2ZVJlc29sdXRpb246OlllcykKKyAgICBpZiAocmVzb2x1dGlvblNjYWxlKCkgPT0gMSB8
fCBwcmVzZXJ2ZVJlc29sdXRpb24gPT0gUHJlc2VydmVSZXNvbHV0aW9uOjpZZXMpCiAgICAgICAg
IGltYWdlID0gY29weU5hdGl2ZUltYWdlKGNvcHlCZWhhdmlvciktPnBsYXRmb3JtSW1hZ2UoKTsK
ICAgICBlbHNlCiAgICAgICAgIGltYWdlID0gY29weU5hdGl2ZUltYWdlKERvbnRDb3B5QmFja2lu
Z1N0b3JlKS0+cGxhdGZvcm1JbWFnZSgpOwpAQCAtMjY5LDcgKzI2OSw3IEBAIFBsYXRmb3JtSW1h
Z2VQdHIgSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OmNvbXBhdGlibGVCaXRtYXAoSUQyRDFS
ZW5kZXJUYXJnZXQqCiB2b2lkIEltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpkcmF3KEdyYXBo
aWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMp
CiB7CiAgICAgRmxvYXRSZWN0IGFkanVzdGVkU3JjUmVjdCA9IHNyY1JlY3Q7Ci0gICAgYWRqdXN0
ZWRTcmNSZWN0LnNjYWxlKG1fcmVzb2x1dGlvblNjYWxlLCBtX3Jlc29sdXRpb25TY2FsZSk7Cisg
ICAgYWRqdXN0ZWRTcmNSZWN0LnNjYWxlKHJlc29sdXRpb25TY2FsZSgpKTsKIAogICAgIGF1dG8g
Y29tcGF0aWJsZUJpdG1hcCA9IGNvbXBhdGlibGVCaXRtYXAoZGVzdENvbnRleHQucGxhdGZvcm1D
b250ZXh0KCktPnJlbmRlclRhcmdldCgpKTsKIApAQCAtMjgzLDcgKzI4Myw3IEBAIHZvaWQgSW1h
Z2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4
dCwgY29uc3QgRmxvYXRSCiB2b2lkIEltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpkcmF3UGF0
dGVybihHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0
dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYg
c3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgRmxv
YXRSZWN0IGFkanVzdGVkU3JjUmVjdCA9IHNyY1JlY3Q7Ci0gICAgYWRqdXN0ZWRTcmNSZWN0LnNj
YWxlKG1fcmVzb2x1dGlvblNjYWxlKTsKKyAgICBhZGp1c3RlZFNyY1JlY3Quc2NhbGUocmVzb2x1
dGlvblNjYWxlKCkpOwogCiAgICAgaWYgKGF1dG8gaW1hZ2UgPSBjb3B5SW1hZ2UoJmRlc3RDb250
ZXh0ID09ICZjb250ZXh0KCkgPyBDb3B5QmFja2luZ1N0b3JlIDogRG9udENvcHlCYWNraW5nU3Rv
cmUpKQogICAgICAgICBpbWFnZS0+ZHJhd1BhdHRlcm4oZGVzdENvbnRleHQsIGRlc3RSZWN0LCBh
ZGp1c3RlZFNyY1JlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBvcHRpb25z
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJ
bWFnZUJ1ZmZlci5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUlt
YWdlQnVmZmVyLmgKaW5kZXggNGQ1ZDAyNTNiYWEzNmU1NDU3ZTQ4MTY0NTM4MjQzN2UzMTlhODU3
OC4uZTYxM2FkMDA0YzQ2M2FlMzNjMzg5NWQwNDgzMTJkM2U0MmU1NzdlOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmgKKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmgK
QEAgLTQ5LDEyICs0OSwxMiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBCYXNlQ29uY3JldGVJ
bWFnZUJ1ZmZlcjo6dGVtcGxhdGUgY3JlYXRlPFJlbW90ZUltYWdlQnVmZmVyPihzaXplLCByZXNv
bHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0LCBudWxscHRyLCByZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kLCByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIH0KIAotICAg
IFJlbW90ZUltYWdlQnVmZmVyKHN0ZDo6dW5pcXVlX3B0cjxCYWNrZW5kVHlwZT4mJiBiYWNrZW5k
LCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kJiByZW1vdGVSZW5kZXJpbmdCYWNrZW5kLCBXZWJDb3Jl
OjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
KQotICAgICAgICA6IEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyKFdURk1vdmUoYmFja2VuZCksIHJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKKyAgICBSZW1vdGVJbWFnZUJ1ZmZlcihjb25zdCBX
ZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIHN0ZDo6
dW5pcXVlX3B0cjxCYWNrZW5kVHlwZT4mJiBiYWNrZW5kLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
JiByZW1vdGVSZW5kZXJpbmdCYWNrZW5kLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQorICAgICAgICA6IEJhc2VDb25jcmV0
ZUltYWdlQnVmZmVyKHBhcmFtZXRlcnMsIFdURk1vdmUoYmFja2VuZCksIHJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcikKICAgICAgICAgLCBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQocmVtb3Rl
UmVuZGVyaW5nQmFja2VuZCkKICAgICAgICAgLCBtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cihyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCiAgICAgewotICAgICAgICBtX3JlbW90ZVJl
bmRlcmluZ0JhY2tlbmQuaW1hZ2VCdWZmZXJCYWNrZW5kV2FzQ3JlYXRlZChtX2JhY2tlbmQtPmxv
Z2ljYWxTaXplKCksIG1fYmFja2VuZC0+YmFja2VuZFNpemUoKSwgbV9iYWNrZW5kLT5yZXNvbHV0
aW9uU2NhbGUoKSwgbV9iYWNrZW5kLT5jb2xvclNwYWNlKCksIG1fYmFja2VuZC0+cGl4ZWxGb3Jt
YXQoKSwgbV9iYWNrZW5kLT5jcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUoKSwgcmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5k
LmRpZENyZWF0ZUltYWdlQnVmZmVyQmFja2VuZChtX2JhY2tlbmQtPmNyZWF0ZUltYWdlQnVmZmVy
QmFja2VuZEhhbmRsZSgpLCByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIH0KIAog
ICAgIH5SZW1vdGVJbWFnZUJ1ZmZlcigpCkBAIC02NSwxNyArNjUsNiBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICBjb250ZXh0KCkucmVzdG9yZSgpOwogICAgIH0KIAotICAgIFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpSZXBsYXlSZXN1bHQgc3VibWl0RGlzcGxheUxpc3QoY29uc3QgV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OkRpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCkKLSAgICB7Ci0gICAgICAgIGlmIChk
aXNwbGF5TGlzdC5pc0VtcHR5KCkpCi0gICAgICAgICAgICByZXR1cm4geyB9OwotCi0gICAgICAg
IGNvbnN0IGF1dG8mIGltYWdlQnVmZmVycyA9IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC5yZW1v
dGVSZXNvdXJjZUNhY2hlKCkuaW1hZ2VCdWZmZXJzKCk7Ci0gICAgICAgIGNvbnN0IGF1dG8mIG5h
dGl2ZUltYWdlcyA9IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC5yZW1vdGVSZXNvdXJjZUNhY2hl
KCkubmF0aXZlSW1hZ2VzKCk7Ci0gICAgICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXBsYXll
ciByZXBsYXllciB7IEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyOjpjb250ZXh0KCksIGRpc3BsYXlM
aXN0LCAmaW1hZ2VCdWZmZXJzLCAmbmF0aXZlSW1hZ2VzLCB0aGlzIH07Ci0gICAgICAgIHJldHVy
biByZXBsYXllci5yZXBsYXkoKTsKLSAgICB9Ci0KIHByaXZhdGU6CiAgICAgYm9vbCBhcHBseShX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZSBpdGVtLCBXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQpIG92ZXJyaWRlCiAgICAgewpAQCAtMTAxLDYgKzkwLDE3IEBAIHByaXZh
dGU6CiAgICAgICAgIHJldHVybiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuYXBwbHlNZWRpYUl0
ZW0oaXRlbSwgY29udGV4dCk7CiAgICAgfQogCisgICAgdm9pZCBzdWJtaXREaXNwbGF5TGlzdChj
b25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0KSBvdmVy
cmlkZQorICAgIHsKKyAgICAgICAgaWYgKGRpc3BsYXlMaXN0LmlzRW1wdHkoKSkKKyAgICAgICAg
ICAgIHJldHVybjsKKworICAgICAgICBjb25zdCBhdXRvJiBpbWFnZUJ1ZmZlcnMgPSBtX3JlbW90
ZVJlbmRlcmluZ0JhY2tlbmQucmVtb3RlUmVzb3VyY2VDYWNoZSgpLmltYWdlQnVmZmVycygpOwor
ICAgICAgICBjb25zdCBhdXRvJiBuYXRpdmVJbWFnZXMgPSBtX3JlbW90ZVJlbmRlcmluZ0JhY2tl
bmQucmVtb3RlUmVzb3VyY2VDYWNoZSgpLm5hdGl2ZUltYWdlcygpOworICAgICAgICBXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6UmVwbGF5ZXIgcmVwbGF5ZXIgeyBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZl
cjo6Y29udGV4dCgpLCBkaXNwbGF5TGlzdCwgJmltYWdlQnVmZmVycywgJm5hdGl2ZUltYWdlcywg
dGhpcyB9OworICAgICAgICByZXBsYXllci5yZXBsYXkoKTsKKyAgICB9CisKICAgICBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kJiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQ7CiAgICAgV2ViQ29yZTo6
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVSZW5kZXJpbmdCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcAppbmRleCA2ZGRlYjAyNzkyOWU1MDRmODNiMGEx
ODZjN2VlYWI4ZTViOWQ2ODcyLi4yMmRhOTk4YmY5OTAyMmI2YzUxY2UyMzgxOWU5ZWNmZGVlZDJh
MzdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCkBAIC05OSw5ICs5OSw5IEBAIGJvb2wgUmVt
b3RlUmVuZGVyaW5nQmFja2VuZDo6YXBwbHlNZWRpYUl0ZW0oRGlzcGxheUxpc3Q6Okl0ZW1IYW5k
bGUgaXRlbSwgR3JhcGhpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgUmVtb3RlUmVuZGVy
aW5nQmFja2VuZDo6aW1hZ2VCdWZmZXJCYWNrZW5kV2FzQ3JlYXRlZChjb25zdCBGbG9hdFNpemUm
IGxvZ2ljYWxTaXplLCBjb25zdCBJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlv
blNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBJ
bWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgaGFuZGxlLCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kOjpkaWRDcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQoSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxl
IGhhbmRsZSwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcikKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHk6OkltYWdlQnVmZmVyQmFja2VuZFdhc0NyZWF0ZWQobG9naWNhbFNpemUsIGJhY2tlbmRTaXpl
LCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0LCBXVEZNb3ZlKGhhbmRs
ZSksIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciksIG1fcmVuZGVyaW5nQmFja2VuZElkZW50
aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6
RGlkQ3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kKFdURk1vdmUoaGFuZGxlKSwgcmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyKSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7CiB9CiAKIHZv
aWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6ZGlkRmx1c2goRGlzcGxheUxpc3Q6OkZsdXNoSWRl
bnRpZmllciBmbHVzaElkZW50aWZpZXIsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCkBAIC0xNDgsMTAgKzE0OCw3IEBAIHZvaWQgUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZDo6YXBwbHlEaXNwbGF5TGlzdHNGcm9tSGFuZGxlKEltYWdlQnVmZmVy
JiBkZXN0aW5hdGlvCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBp
ZiAoZGVzdGluYXRpb24uaXNBY2NlbGVyYXRlZCgpKQotICAgICAgICAgICAgc3RhdGljX2Nhc3Q8
QWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlciY+KGRlc3RpbmF0aW9uKS5zdWJtaXREaXNwbGF5
TGlzdCgqZGlzcGxheUxpc3QpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBzdGF0aWNfY2Fz
dDxVbmFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXImPihkZXN0aW5hdGlvbikuc3VibWl0RGlz
cGxheUxpc3QoKmRpc3BsYXlMaXN0KTsKKyAgICAgICAgZGVzdGluYXRpb24uc3VibWl0RGlzcGxh
eUxpc3QoKmRpc3BsYXlMaXN0KTsKIAogICAgICAgICBDaGVja2VkU2l6ZSBjaGVja2VkT2Zmc2V0
ID0gb2Zmc2V0OwogICAgICAgICBjaGVja2VkT2Zmc2V0ICs9IHNpemVUb1JlYWQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZC5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQuaAppbmRleCA2NDA2NjY4ZmFlMDUwNTdlOWRmMzI2NGY1NzUyNDk0ODlkNzA1Yzc4
Li41OTE5ZTk1NjRmNjYzZGYzOWZmYjNjMTViMTVhM2I4YzMyMzBmNWZmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdC
YWNrZW5kLmgKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgogICAgIGJvb2wgYXBwbHlNZWRpYUl0
ZW0oV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1IYW5kbGUsIFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dCYpOwogCiAgICAgLy8gTWVzc2FnZXMgdG8gYmUgc2VudC4KLSAgICB2b2lkIGltYWdlQnVm
ZmVyQmFja2VuZFdhc0NyZWF0ZWQoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBsb2dpY2FsU2l6
ZSwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25T
Y2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSwgV2ViQ29yZTo6UGl4ZWxGb3JtYXQsIEltYWdlQnVm
ZmVyQmFja2VuZEhhbmRsZSwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsK
KyAgICB2b2lkIGRpZENyZWF0ZUltYWdlQnVmZmVyQmFja2VuZChJbWFnZUJ1ZmZlckJhY2tlbmRI
YW5kbGUsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAgdm9pZCBk
aWRGbHVzaChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Rmx1c2hJZGVudGlmaWVyLCBXZWJDb3JlOjpS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogCiAgICAgdm9pZCBzZXROZXh0SXRlbUJ1ZmZl
clRvUmVhZChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29uY3JldGVTaGFyZWFibGVJbWFnZUJ1ZmZl
ci5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29uY3JldGVTaGFyZWFibGVJbWFnZUJ1ZmZlci5o
CmluZGV4IDM4Y2YwZDI0MGExNjIxZWRiM2RkMjY5MjFmY2UwYWMzYjgwMzNkOTMuLmY4ODZiYjEx
MmRhZDM3ZGY1MDBjM2RhM2M2MjFkNDA3NGM4ZDJhODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0NvbmNyZXRlU2hhcmVhYmxlSW1hZ2VCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9Db25jcmV0ZVNoYXJlYWJsZUltYWdlQnVmZmVyLmgKQEAgLTM2LDE1ICszNiwx
MiBAQCBjbGFzcyBDb25jcmV0ZVNoYXJlYWJsZUltYWdlQnVmZmVyIDogcHVibGljIFdlYkNvcmU6
OkNvbmNyZXRlSW1hZ2VCdWZmZXI8QmFja2VuZAogICAgIHVzaW5nIEJhc2VDb25jcmV0ZUltYWdl
QnVmZmVyOjptX2JhY2tlbmQ7CiAKIHB1YmxpYzoKLSAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29u
c3QgV2ViQ29yZTo6RmxvYXRTaXplJiBzaXplLCBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlIHJlbmRl
cmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSBjb2xv
clNwYWNlLCBXZWJDb3JlOjpQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCkKKyAgICBzdGF0aWMgYXV0
byBjcmVhdGUoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9u
U2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgV2ViQ29yZTo6UGl4ZWxGb3Jt
YXQgcGl4ZWxGb3JtYXQpCiAgICAgewogICAgICAgICByZXR1cm4gQmFzZUNvbmNyZXRlSW1hZ2VC
dWZmZXI6OnRlbXBsYXRlIGNyZWF0ZTxDb25jcmV0ZVNoYXJlYWJsZUltYWdlQnVmZmVyPihzaXpl
LCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0LCBudWxscHRyKTsKICAg
ICB9CiAKLSAgICBDb25jcmV0ZVNoYXJlYWJsZUltYWdlQnVmZmVyKHN0ZDo6dW5pcXVlX3B0cjxC
YWNrZW5kVHlwZT4mJiBiYWNrZW5kKQotICAgICAgICA6IEJhc2VDb25jcmV0ZUltYWdlQnVmZmVy
KFdURk1vdmUoYmFja2VuZCkpCi0gICAgewotICAgIH0KKyAgICB1c2luZyBCYXNlQ29uY3JldGVJ
bWFnZUJ1ZmZlcjo6QmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXI7CiAKICAgICBJbWFnZUJ1ZmZlckJh
Y2tlbmRIYW5kbGUgY3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKCkKICAgICB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJC
YWNraW5nU3RvcmUubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVt
b3RlTGF5ZXJCYWNraW5nU3RvcmUubW0KaW5kZXggZTg0YzM1MGUxNjZhMzgyNGQ2ZmQ1YWQ0NDYw
ZWVkMmZjOGJiNDdjMS4uZjJhZWJjZjJhOTg5M2U4MDZmMWM3MGQxZGQ1YTE3NDBmMzBlZTdmZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxh
eWVyQmFja2luZ1N0b3JlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVy
VHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbQpAQCAtMTA1LDE4ICsxMDUsMTIgQEAgdm9p
ZCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2Rlcikg
Y29uc3QKIAogICAgIE9wdGlvbmFsPEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZT4gaGFuZGxlOwog
ICAgIGlmIChtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVyKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBX
ZSBuZWVkIHRvIGZsYXR0ZW4gdGhlIGNsYXNzIGhpZXJhcmNoeSBzbyB3ZSBjYW4gYXZvaWQgdGhp
cyBiaWZ1cmNhdGlvbi4KLSAgICAgICAgaWYgKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnNob3Vs
ZFVzZVJlbW90ZVJlbmRlcmluZ0ZvcihXZWJDb3JlOjpSZW5kZXJpbmdQdXJwb3NlOjpET00pKSB7
Ci0gICAgICAgICAgICBpZiAobV9hY2NlbGVyYXRlc0RyYXdpbmcpCi0gICAgICAgICAgICAgICAg
aGFuZGxlID0gc3RhdGljX2Nhc3Q8QWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlclByb3h5ICo+
KG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXIuZ2V0KCkpLT5jcmVhdGVJbWFnZUJ1ZmZlckJhY2tl
bmRIYW5kbGUoKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBoYW5kbGUgPSBz
dGF0aWNfY2FzdDxVbmFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXJQcm94eSAqPihtX2Zyb250
QnVmZmVyLmltYWdlQnVmZmVyLmdldCgpKS0+Y3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxl
KCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpZiAobV9hY2NlbGVyYXRlc0RyYXdp
bmcpCi0gICAgICAgICAgICAgICAgaGFuZGxlID0gc3RhdGljX2Nhc3Q8Q29uY3JldGVTaGFyZWFi
bGVJbWFnZUJ1ZmZlcjxBY2NlbGVyYXRlZEltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkQmFja2Vu
ZD4gKj4obV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlci5nZXQoKSktPmNyZWF0ZUltYWdlQnVmZmVy
QmFja2VuZEhhbmRsZSgpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGhhbmRs
ZSA9IHN0YXRpY19jYXN0PENvbmNyZXRlU2hhcmVhYmxlSW1hZ2VCdWZmZXI8VW5hY2NlbGVyYXRl
ZEltYWdlQnVmZmVyU2hhcmVhYmxlQmFja2VuZD4gKj4obV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZl
ci5nZXQoKSktPmNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSgpOwotICAgICAgICB9Cisg
ICAgICAgIGlmIChtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVyLT5yZW5kZXJpbmdNb2RlKCkgPT0g
V2ViQ29yZTo6UmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCkKKyAgICAgICAgICAgIGhhbmRs
ZSA9IHN0YXRpY19jYXN0PFVuYWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlclNoYXJlYWJsZUJhY2tlbmQm
PigqbV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlci0+YmFja2VuZCgpKS5jcmVhdGVJbWFnZUJ1ZmZl
ckJhY2tlbmRIYW5kbGUoKTsKKyAgICAgICAgZWxzZSBpZiAobV9mcm9udEJ1ZmZlci5pbWFnZUJ1
ZmZlci0+Y2FuTWFwQmFja2luZ1N0b3JlKCkpCisgICAgICAgICAgICBoYW5kbGUgPSBzdGF0aWNf
Y2FzdDxBY2NlbGVyYXRlZEltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkQmFja2VuZCY+KCptX2Zy
b250QnVmZmVyLmltYWdlQnVmZmVyLT5iYWNrZW5kKCkpLmNyZWF0ZUltYWdlQnVmZmVyQmFja2Vu
ZEhhbmRsZSgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBoYW5kbGUgPSBzdGF0aWNfY2Fz
dDxBY2NlbGVyYXRlZEltYWdlQnVmZmVyU2hhcmVhYmxlQmFja2VuZCY+KCptX2Zyb250QnVmZmVy
LmltYWdlQnVmZmVyLT5iYWNrZW5kKCkpLmNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSgp
OwogICAgIH0KIAogICAgIGVuY29kZXIgPDwgaGFuZGxlOwpAQCAtMTkzLDkgKzE4Nyw5IEBAIHZv
aWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OnN3YXBUb1ZhbGlkRnJvbnRCdWZmZXIoKQogICAg
IH0KIAogICAgIGlmIChtX2FjY2VsZXJhdGVzRHJhd2luZykKLSAgICAgICAgbV9mcm9udEJ1ZmZl
ci5pbWFnZUJ1ZmZlciA9IENvbmNyZXRlU2hhcmVhYmxlSW1hZ2VCdWZmZXI8QWNjZWxlcmF0ZWRJ
bWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZEJhY2tlbmQ+OjpjcmVhdGUoYmFja2luZ1N0b3JlU2l6
ZSgpLCBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlOjpBY2NlbGVyYXRlZCwgMSwgV2ViQ29yZTo6Q29s
b3JTcGFjZTo6U1JHQiwgcGl4ZWxGb3JtYXQoKSk7CisgICAgICAgIG1fZnJvbnRCdWZmZXIuaW1h
Z2VCdWZmZXIgPSBDb25jcmV0ZVNoYXJlYWJsZUltYWdlQnVmZmVyPEFjY2VsZXJhdGVkSW1hZ2VC
dWZmZXJTaGFyZWFibGVNYXBwZWRCYWNrZW5kPjo6Y3JlYXRlKGJhY2tpbmdTdG9yZVNpemUoKSwg
MSwgV2ViQ29yZTo6Q29sb3JTcGFjZTo6U1JHQiwgcGl4ZWxGb3JtYXQoKSk7CiAgICAgZWxzZQot
ICAgICAgICBtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVyID0gQ29uY3JldGVTaGFyZWFibGVJbWFn
ZUJ1ZmZlcjxVbmFjY2VsZXJhdGVkSW1hZ2VCdWZmZXJTaGFyZWFibGVCYWNrZW5kPjo6Y3JlYXRl
KGJhY2tpbmdTdG9yZVNpemUoKSwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRl
ZCwgMSwgV2ViQ29yZTo6Q29sb3JTcGFjZTo6U1JHQiwgcGl4ZWxGb3JtYXQoKSk7CisgICAgICAg
IG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXIgPSBDb25jcmV0ZVNoYXJlYWJsZUltYWdlQnVmZmVy
PFVuYWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlclNoYXJlYWJsZUJhY2tlbmQ+OjpjcmVhdGUoYmFja2lu
Z1N0b3JlU2l6ZSgpLCAxLCBXZWJDb3JlOjpDb2xvclNwYWNlOjpTUkdCLCBwaXhlbEZvcm1hdCgp
KTsKIH0KIAogYm9vbCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZGlzcGxheSgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hh
cmVhYmxlQml0bWFwQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHAKaW5kZXggODU1Yzg5
NDk2NmM1ODdiYjBlNmFlYzUxMTlkZTRiOTQ0NTA4N2Q0Yi4uNGM5NjQyYzMxZDczOTcxYmQ3YWY0
NWJmNTU1MmViZjFmZTNjNDcxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFi
bGVCaXRtYXBCYWNrZW5kLmNwcApAQCAtNDMsMTcgKzQzLDE3IEBAIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoSW1hZ2VCdWZmZXJTaGFyZWFi
bGVCaXRtYXBCYWNrZW5kKTsKIAotc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyU2hhcmVhYmxl
Qml0bWFwQmFja2VuZD4gSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpjcmVhdGUo
Y29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2Ug
Y29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIGNvbnN0IEhvc3RXaW5kb3cqKQor
c3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZD4gSW1hZ2VC
dWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpjcmVhdGUoY29uc3QgUGFyYW1ldGVycyYgcGFy
YW1ldGVycywgY29uc3QgSG9zdFdpbmRvdyopCiB7Ci0gICAgQVNTRVJUKHBpeGVsRm9ybWF0ID09
IFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgQVNTRVJUKHBhcmFtZXRlcnMucGl4ZWxGb3JtYXQg
PT0gUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKIAotICAgIEludFNpemUgYmFja2VuZFNpemUgPSBjYWxj
dWxhdGVCYWNrZW5kU2l6ZShzaXplLCByZXNvbHV0aW9uU2NhbGUpOworICAgIEludFNpemUgYmFj
a2VuZFNpemUgPSBjYWxjdWxhdGVCYWNrZW5kU2l6ZShwYXJhbWV0ZXJzLmxvZ2ljYWxTaXplLCBw
YXJhbWV0ZXJzLnJlc29sdXRpb25TY2FsZSk7CiAgICAgaWYgKGJhY2tlbmRTaXplLmlzRW1wdHko
KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBTaGFyZWFibGVCaXRtYXA6OkNvbmZp
Z3VyYXRpb24gY29uZmlndXJhdGlvbjsKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBjb25maWd1
cmF0aW9uLmNvbG9yU3BhY2UgPSB7IGNhY2hlZENHQ29sb3JTcGFjZShjb2xvclNwYWNlKSB9Owor
ICAgIGNvbmZpZ3VyYXRpb24uY29sb3JTcGFjZSA9IHsgY2FjaGVkQ0dDb2xvclNwYWNlKHBhcmFt
ZXRlcnMuY29sb3JTcGFjZSkgfTsKICNlbmRpZgogICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxl
Qml0bWFwOjpjcmVhdGVTaGFyZWFibGUoYmFja2VuZFNpemUsIGNvbmZpZ3VyYXRpb24pOwogICAg
IGlmICghYml0bWFwKQpAQCAtNjMsMTAgKzYzLDEwIEBAIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1
ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ+IEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFj
CiAgICAgaWYgKCFjb250ZXh0KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVy
biBtYWtlVW5pcXVlPEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZD4oc2l6ZSwgYmFj
a2VuZFNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQsIFdURk1v
dmUoYml0bWFwKSwgV1RGTW92ZShjb250ZXh0KSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8SW1h
Z2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kPihwYXJhbWV0ZXJzLCBXVEZNb3ZlKGJpdG1h
cCksIFdURk1vdmUoY29udGV4dCkpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJT
aGFyZWFibGVCaXRtYXBCYWNrZW5kPiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6
OmNyZWF0ZShjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBJbnRTaXplJiBiYWNr
ZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFBp
eGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgaGFuZGxlKQor
c3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZD4gSW1hZ2VC
dWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpjcmVhdGUoY29uc3QgUGFyYW1ldGVycyYgcGFy
YW1ldGVycywgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGhhbmRsZSkKIHsKICAgICBpZiAoIVdU
Rjo6aG9sZHNfYWx0ZXJuYXRpdmU8U2hhcmVhYmxlQml0bWFwOjpIYW5kbGU+KGhhbmRsZSkpIHsK
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC04MSwxMSArODEsMTEgQEAgc3RkOjp1
bmlxdWVfcHRyPEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZD4gSW1hZ2VCdWZmZXJT
aGFyZWFibGVCaXRtYXBCYWMKICAgICBpZiAoIWNvbnRleHQpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCi0gICAgcmV0dXJuIG1ha2VVbmlxdWU8SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBC
YWNrZW5kPihsb2dpY2FsU2l6ZSwgYmFja2VuZFNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JT
cGFjZSwgcGl4ZWxGb3JtYXQsIFdURk1vdmUoYml0bWFwKSwgV1RGTW92ZShjb250ZXh0KSk7Cisg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kPihw
YXJhbWV0ZXJzLCBXVEZNb3ZlKGJpdG1hcCksIFdURk1vdmUoY29udGV4dCkpOwogfQogCi1JbWFn
ZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OkltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFw
QmFja2VuZChjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBJbnRTaXplJiBwaHlz
aWNhbFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBQ
aXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4mJiBiaXRtYXAs
IHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0NvbnRleHQ+JiYgY29udGV4dCkKLSAgICA6IFBsYXRm
b3JtSW1hZ2VCdWZmZXJCYWNrZW5kKGxvZ2ljYWxTaXplLCBwaHlzaWNhbFNpemUsIHJlc29sdXRp
b25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQpCitJbWFnZUJ1ZmZlclNoYXJlYWJsZUJp
dG1hcEJhY2tlbmQ6OkltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZChjb25zdCBQYXJh
bWV0ZXJzJiBwYXJhbWV0ZXJzLCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiYmIGJpdG1hcCwgc3Rk
Ojp1bmlxdWVfcHRyPEdyYXBoaWNzQ29udGV4dD4mJiBjb250ZXh0KQorICAgIDogUGxhdGZvcm1J
bWFnZUJ1ZmZlckJhY2tlbmQocGFyYW1ldGVycykKICAgICAsIG1fYml0bWFwKFdURk1vdmUoYml0
bWFwKSkKICAgICAsIG1fY29udGV4dChXVEZNb3ZlKGNvbnRleHQpKQogewpAQCAtOTgsNiArOTgs
MTEgQEAgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFw
QmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXJCYWMKICAgICByZXR1cm4gSW1hZ2VCdWZmZXJCYWNr
ZW5kSGFuZGxlKFdURk1vdmUoaGFuZGxlKSk7CiB9CiAKK0ludFNpemUgSW1hZ2VCdWZmZXJTaGFy
ZWFibGVCaXRtYXBCYWNrZW5kOjpiYWNrZW5kU2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1f
Yml0bWFwLT5zaXplKCk7Cit9CisKIFJlZlB0cjxOYXRpdmVJbWFnZT4gSW1hZ2VCdWZmZXJTaGFy
ZWFibGVCaXRtYXBCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSkgY29u
c3QKIHsKICNpZiBVU0UoQ0cpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1h
cEJhY2tlbmQuaAppbmRleCAwYzdmMDQ3Zjg4MzVlNGI4ZDYzYzE1ZjQxZWM5MjEwMmU0NTg1Mzk5
Li41NTUwNmE0OWQwM2UzOWU4OGUwMzYxZTQ5MTU1ZjEzMWQ3OTkwMTBmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxl
Qml0bWFwQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmgKQEAgLTQzLDE0ICs0MywxNiBA
QCBjbGFzcyBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQgOiBwdWJsaWMgV2ViQ29y
ZTo6UGxhdGZvcm1JbWFnZUJ1ZmZlckJhYwogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoSW1h
Z2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kKTsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQpOwogcHVibGljOgotICAgIHN0YXRp
YyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kPiBjcmVh
dGUoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgZmxvYXQgcmVz
b2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlLCBXZWJDb3JlOjpQaXhlbEZvcm1hdCwg
Y29uc3QgV2ViQ29yZTo6SG9zdFdpbmRvdyopOwotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kPiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6
RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgaW50ZXJuYWxT
aXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UsIFdlYkNvcmU6
OlBpeGVsRm9ybWF0LCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUpOworICAgIHN0YXRpYyBzdGQ6
OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kPiBjcmVhdGUoY29u
c3QgUGFyYW1ldGVycyYsIGNvbnN0IFdlYkNvcmU6Okhvc3RXaW5kb3cqKTsKKyAgICBzdGF0aWMg
c3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZD4gY3JlYXRl
KGNvbnN0IFBhcmFtZXRlcnMmLCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUpOwogCi0gICAgSW1h
Z2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYg
bG9naWNhbFNpemUsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHBoeXNpY2FsU2l6ZSwgZmxvYXQg
cmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlLCBXZWJDb3JlOjpQaXhlbEZvcm1h
dCwgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4mJiwgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dD4mJik7CisgICAgSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5k
KGNvbnN0IFBhcmFtZXRlcnMmLCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiYmLCBzdGQ6OnVuaXF1
ZV9wdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0PiYmKTsKIAogICAgIEltYWdlQnVmZmVyQmFj
a2VuZEhhbmRsZSBjcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUoKSBjb25zdDsKIAogICAg
IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYgY29udGV4dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuICptX2NvbnRleHQ7IH0KKyAgICAKKyAgICBXZWJDb3JlOjpJbnRTaXplIGJhY2tlbmRTaXpl
KCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBSZWZQdHI8V2ViQ29yZTo6TmF0aXZlSW1hZ2U+IGNv
cHlOYXRpdmVJbWFnZShXZWJDb3JlOjpCYWNraW5nU3RvcmVDb3B5ID0gV2ViQ29yZTo6Q29weUJh
Y2tpbmdTdG9yZSkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlPiBj
b3B5SW1hZ2UoV2ViQ29yZTo6QmFja2luZ1N0b3JlQ29weSA9IFdlYkNvcmU6OkNvcHlCYWNraW5n
U3RvcmUsIFdlYkNvcmU6OlByZXNlcnZlUmVzb2x1dGlvbiA9IFdlYkNvcmU6OlByZXNlcnZlUmVz
b2x1dGlvbjo6Tm8pIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9QbGF0Zm9ybVJlbW90ZUltYWdlQnVmZmVyUHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUGxhdGZvcm1SZW1vdGVJbWFn
ZUJ1ZmZlclByb3h5LmgKaW5kZXggYTAwODIwNjJhNDBiNTI3ZDEzYWUxMzlhYjA4NmJlMzAwOTlk
NmU3Ni4uZTAyZGU2ZGFkNjQ3ZmY2NTM2MmI0Y2JmODU5NzYxZDhmNzhmOGNhMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9QbGF0Zm9ybVJlbW90ZUlt
YWdlQnVmZmVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1BsYXRmb3JtUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCkBAIC0zOCwxOCArMzgsNCBAQCB1
c2luZyBBY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyTWFwcGVkUHJveHkgPSBSZW1vdGVJbWFn
ZUJ1ZmZlclByb3h5PEFjY2VsZXJhdAogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAotU1BFQ0lB
TElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJLaXQ6OlVuYWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1
ZmZlclByb3h5KQotICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpJbWFnZUJ1
ZmZlciYgaW1hZ2VCdWZmZXIpIHsgcmV0dXJuIGltYWdlQnVmZmVyLnJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcigpICYmICFpbWFnZUJ1ZmZlci5pc0FjY2VsZXJhdGVkKCk7IH0KLVNQRUNJQUxJ
WkVfVFlQRV9UUkFJVFNfRU5EKCkKLQotI2lmIEhBVkUoSU9TVVJGQUNFKQotU1BFQ0lBTElaRV9U
WVBFX1RSQUlUU19CRUdJTihXZWJLaXQ6OkFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXJQcm94
eSkKLSAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6SW1hZ2VCdWZmZXImIGlt
YWdlQnVmZmVyKSB7IHJldHVybiBpbWFnZUJ1ZmZlci5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIoKSAmJiBpbWFnZUJ1ZmZlci5pc0FjY2VsZXJhdGVkKCkgJiYgIWltYWdlQnVmZmVyLmNhbk1h
cEJhY2tpbmdTdG9yZSgpOyB9Ci1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCi0KLVNQRUNJ
QUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViS2l0OjpBY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVm
ZmVyTWFwcGVkUHJveHkpCi0gICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6Oklt
YWdlQnVmZmVyJiBpbWFnZUJ1ZmZlcikgeyByZXR1cm4gaW1hZ2VCdWZmZXIucmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyKCkgJiYgaW1hZ2VCdWZmZXIuaXNBY2NlbGVyYXRlZCgpICYmIGltYWdl
QnVmZmVyLmNhbk1hcEJhY2tpbmdTdG9yZSgpOyB9Ci1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VO
RCgpCi0jZW5kaWYKLQogI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQ
cm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFn
ZUJ1ZmZlclByb3h5LmgKaW5kZXggNTFiZDU3MTI5NThhZjEyYTIzMTVkNDFiYTNkMmQ2YjllZDU3
ZjJiYS4uMjI4MmUxM2FhYmY1M2Q2NDJlODQ0ZDQyNzAxZTA2NjVjMWQ1NDM4MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZl
clByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVJbWFnZUJ1ZmZlclByb3h5LmgKQEAgLTUwLDE0ICs1MCwxNiBAQCBjbGFzcyBSZW1vdGVJbWFn
ZUJ1ZmZlclByb3h5IDogcHVibGljIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJbWFnZUJ1ZmZlcjxC
YWNrZW5kVAogICAgIHVzaW5nIEJhc2VEaXNwbGF5TGlzdEltYWdlQnVmZmVyOjptX2JhY2tlbmQ7
CiAgICAgdXNpbmcgQmFzZURpc3BsYXlMaXN0SW1hZ2VCdWZmZXI6Om1fZHJhd2luZ0NvbnRleHQ7
CiAgICAgdXNpbmcgQmFzZURpc3BsYXlMaXN0SW1hZ2VCdWZmZXI6Om1fcmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyOworICAgIHVzaW5nIEJhc2VEaXNwbGF5TGlzdEltYWdlQnVmZmVyOjpyZXNv
bHV0aW9uU2NhbGU7CiAKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPFJlbW90ZUltYWdlQnVm
ZmVyUHJveHk+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHNpemUsIFdlYkNvcmU6
OlJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJD
b3JlOjpDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFdlYkNvcmU6OlBpeGVsRm9ybWF0IHBpeGVsRm9y
bWF0LCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkmIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eSkKKyAgICBzdGF0aWMgUmVmUHRyPFJlbW90ZUltYWdlQnVmZmVyUHJveHk+IGNyZWF0ZShj
b25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2Vi
Q29yZTo6Q29sb3JTcGFjZSBjb2xvclNwYWNlLCBXZWJDb3JlOjpQaXhlbEZvcm1hdCBwaXhlbEZv
cm1hdCwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5JiByZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHkpCiAgICAgewogICAgICAgICBpZiAoQmFja2VuZFR5cGU6OmNhbGN1bGF0ZUJhY2tlbmRT
aXplKHNpemUsIHJlc29sdXRpb25TY2FsZSkuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBSZW1vdGVJbWFnZUJ1ZmZl
clByb3h5KHNpemUsIHJlbmRlcmluZ01vZGUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwg
cGl4ZWxGb3JtYXQsIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkpOworICAgICAgICBhdXRv
IHBhcmFtZXRlcnMgPSBXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnMgeyBz
aXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0IH07CisgICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgUmVtb3RlSW1hZ2VCdWZmZXJQcm94eShwYXJhbWV0ZXJzLCBy
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpKTsKICAgICB9CiAKICAgICB+UmVtb3RlSW1hZ2VC
dWZmZXJQcm94eSgpCkBAIC02OSwyNyArNzEsNiBAQCBwdWJsaWM6CiAgICAgICAgIG1fcmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5LT5yZWxlYXNlUmVtb3RlUmVzb3VyY2UobV9yZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIH0KIAotICAgIHZvaWQgY2xlYXJCYWNrZW5kKCkgeyBt
X2JhY2tlbmQgPSBudWxscHRyOyB9Ci0KLSAgICB2b2lkIGNyZWF0ZUJhY2tlbmQoY29uc3QgV2Vi
Q29yZTo6RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgYmFj
a2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSBjb2xv
clNwYWNlLCBXZWJDb3JlOjpQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgSW1hZ2VCdWZmZXJCYWNr
ZW5kSGFuZGxlIGhhbmRsZSkKLSAgICB7Ci0gICAgICAgIEFTU0VSVCghbV9iYWNrZW5kKTsKLSAg
ICAgICAgbV9iYWNrZW5kID0gQmFja2VuZFR5cGU6OmNyZWF0ZShsb2dpY2FsU2l6ZSwgYmFja2Vu
ZFNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQsIFdURk1vdmUo
aGFuZGxlKSk7Ci0gICAgfQotCi0gICAgdm9pZCBkaWRGbHVzaChXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6Rmx1c2hJZGVudGlmaWVyIGZsdXNoSWRlbnRpZmllcikKLSAgICB7Ci0gICAgICAgIGF1dG8g
bG9ja2VyID0gaG9sZExvY2sobV9yZWNlaXZlZEZsdXNoSWRlbnRpZmllckxvY2spOwotICAgICAg
ICBtX3JlY2VpdmVkRmx1c2hJZGVudGlmaWVyID0gZmx1c2hJZGVudGlmaWVyOwotICAgICAgICBt
X3JlY2VpdmVkRmx1c2hJZGVudGlmaWVyQ2hhbmdlZENvbmRpdGlvbi5ub3RpZnlBbGwoKTsKLSAg
ICB9Ci0KLSAgICBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHNpemUoKSBjb25zdCB7IHJldHVy
biBtX3NpemU7IH0KLSAgICBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUoKSBj
b25zdCB7IHJldHVybiBtX3JlbmRlcmluZ01vZGU7IH0KLSAgICBmbG9hdCByZXNvbHV0aW9uU2Nh
bGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Jlc29sdXRpb25TY2FsZTsgfQotICAgIFdlYkNv
cmU6OkNvbG9yU3BhY2UgY29sb3JTcGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29sb3JTcGFjZTsg
fQotICAgIFdlYkNvcmU6OlBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0KCkgY29uc3QgeyByZXR1cm4g
bV9waXhlbEZvcm1hdDsgfQotCiAgICAgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGNyZWF0ZUlt
YWdlQnVmZmVyQmFja2VuZEhhbmRsZSgpCiAgICAgewogICAgICAgICBlbnN1cmVCYWNrZW5kQ3Jl
YXRlZCgpOwpAQCAtMTEyLDE1ICs5Myw5IEBAIHB1YmxpYzoKICAgICB9CiAKIHByb3RlY3RlZDoK
LSAgICBmcmllbmQgY2xhc3MgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDsKLSAgICBSZW1vdGVJbWFn
ZUJ1ZmZlclByb3h5KGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgc2l6ZSwgV2ViQ29yZTo6UmVu
ZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6
OkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgV2ViQ29yZTo6UGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQs
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSYgcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
KQotICAgICAgICA6IEJhc2VEaXNwbGF5TGlzdEltYWdlQnVmZmVyKHNpemUsIHRoaXMpCisgICAg
UmVtb3RlSW1hZ2VCdWZmZXJQcm94eShjb25zdCBXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6
OlBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSYgcmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KQorICAgICAgICA6IEJhc2VEaXNwbGF5TGlzdEltYWdl
QnVmZmVyKHBhcmFtZXRlcnMsIHRoaXMpCiAgICAgICAgICwgbV9yZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHkobWFrZVdlYWtQdHIocmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KSkKLSAgICAg
ICAgLCBtX3NpemUoc2l6ZSkKLSAgICAgICAgLCBtX3JlbmRlcmluZ01vZGUocmVuZGVyaW5nTW9k
ZSkKLSAgICAgICAgLCBtX3Jlc29sdXRpb25TY2FsZShyZXNvbHV0aW9uU2NhbGUpCi0gICAgICAg
ICwgbV9jb2xvclNwYWNlKGNvbG9yU3BhY2UpCi0gICAgICAgICwgbV9waXhlbEZvcm1hdChwaXhl
bEZvcm1hdCkKICAgICB7CiAgICAgICAgIEFTU0VSVChtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eSk7CiAgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT5yZW1vdGVSZXNv
dXJjZUNhY2hlUHJveHkoKS5jYWNoZUltYWdlQnVmZmVyKCp0aGlzKTsKQEAgLTEzMSw2ICsxMDYs
MTMgQEAgcHJvdGVjdGVkOgogCiAgICAgYm9vbCBoYXNQZW5kaW5nRmx1c2goKSBjb25zdCB7IHJl
dHVybiBtX3NlbnRGbHVzaElkZW50aWZpZXIgIT0gbV9yZWNlaXZlZEZsdXNoSWRlbnRpZmllcjsg
fQogCisgICAgdm9pZCBkaWRGbHVzaChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Rmx1c2hJZGVudGlm
aWVyIGZsdXNoSWRlbnRpZmllcikgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGF1dG8gbG9ja2Vy
ID0gaG9sZExvY2sobV9yZWNlaXZlZEZsdXNoSWRlbnRpZmllckxvY2spOworICAgICAgICBtX3Jl
Y2VpdmVkRmx1c2hJZGVudGlmaWVyID0gZmx1c2hJZGVudGlmaWVyOworICAgICAgICBtX3JlY2Vp
dmVkRmx1c2hJZGVudGlmaWVyQ2hhbmdlZENvbmRpdGlvbi5ub3RpZnlBbGwoKTsKKyAgICB9CisK
ICAgICB2b2lkIHdhaXRGb3JEaWRGbHVzaFdpdGhUaW1lb3V0KCkKICAgICB7CiAgICAgICAgIGlm
ICghbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpCkBAIC0xNDUsNyArMTI3LDcgQEAgcHJv
dGVjdGVkOgogICAgIEJhY2tlbmRUeXBlKiBlbnN1cmVCYWNrZW5kQ3JlYXRlZCgpIGNvbnN0IG92
ZXJyaWRlCiAgICAgewogICAgICAgICBpZiAoIW1fYmFja2VuZCAmJiBtX3JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eSkKLSAgICAgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
LT53YWl0Rm9ySW1hZ2VCdWZmZXJCYWNrZW5kV2FzQ3JlYXRlZCgpOworICAgICAgICAgICAgbV9y
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHktPndhaXRGb3JEaWRDcmVhdGVJbWFnZUJ1ZmZlckJh
Y2tlbmQoKTsKICAgICAgICAgcmV0dXJuIG1fYmFja2VuZC5nZXQoKTsKICAgICB9CiAKQEAgLTE2
OSw4ICsxNTEsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBwdXRJbWFnZURhdGEoV2ViQ29yZTo6
QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBpbnB1dEZvcm1hdCwgY29uc3QgV2ViQ29yZTo6SW1hZ2VE
YXRhJiBpbWFnZURhdGEsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHNyY1JlY3QsIGNvbnN0IFdl
YkNvcmU6OkludFBvaW50JiBkZXN0UG9pbnQgPSB7IH0sIFdlYkNvcmU6OkFscGhhUHJlbXVsdGlw
bGljYXRpb24gZGVzdEZvcm1hdCA9IFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb246OlBy
ZW11bHRpcGxpZWQpIG92ZXJyaWRlCiAgICAgewogICAgICAgICAvLyBUaGUgbWF0aCBpbnNpZGUg
SW1hZ2VEYXRhOjpjcmVhdGUoKSBkb2Vzbid0IGFncmVlIHdpdGggdGhlIG1hdGggaW5zaWRlIElt
YWdlQnVmZmVyQmFja2VuZDo6cHV0SW1hZ2VEYXRhKCkgYWJvdXQgaG93IG1fcmVzb2x1dGlvblNj
YWxlIGludGVyYWN0cyB3aXRoIHRoZSBkYXRhIGluIHRoZSBJbWFnZUJ1ZmZlci4KLSAgICAgICAg
Ly8gVGhpcyBtZWFucyB0aGF0IHB1dEltYWdlRGF0YSgpIGlzIG9ubHkgY2FsbGVkIHdoZW4gbV9y
ZXNvbHV0aW9uU2NhbGUgPT0gMS4KLSAgICAgICAgQVNTRVJUX0lNUExJRVMobV9iYWNrZW5kLCBt
X2JhY2tlbmQtPnJlc29sdXRpb25TY2FsZSgpID09IDEpOworICAgICAgICAvLyBUaGlzIG1lYW5z
IHRoYXQgcHV0SW1hZ2VEYXRhKCkgaXMgb25seSBjYWxsZWQgd2hlbiByZXNvbHV0aW9uU2NhbGUo
KSA9PSAxLgorICAgICAgICBBU1NFUlQocmVzb2x1dGlvblNjYWxlKCkgPT0gMSk7CiAgICAgICAg
IG1fZHJhd2luZ0NvbnRleHQucmVjb3JkZXIoKS5wdXRJbWFnZURhdGEoaW5wdXRGb3JtYXQsIGlt
YWdlRGF0YSwgc3JjUmVjdCwgZGVzdFBvaW50LCBkZXN0Rm9ybWF0KTsKICAgICB9CiAKQEAgLTIw
MCwxMiArMTgyLDEyIEBAIHByb3RlY3RlZDoKIAogICAgICAgICBtX3NlbnRGbHVzaElkZW50aWZp
ZXIgPSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Rmx1c2hJZGVudGlmaWVyOjpnZW5lcmF0ZSgpOwog
ICAgICAgICBkaXNwbGF5TGlzdC50ZW1wbGF0ZSBhcHBlbmQ8V2ViQ29yZTo6RGlzcGxheUxpc3Q6
OkZsdXNoQ29udGV4dD4obV9zZW50Rmx1c2hJZGVudGlmaWVyKTsKLSAgICAgICAgbV9yZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHktPnN1Ym1pdERpc3BsYXlMaXN0KGRpc3BsYXlMaXN0LCBtX3Jl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7Ci0gICAgICAgIG1faXRlbUNvdW50SW5DdXJyZW50
RGlzcGxheUxpc3QgPSAwOworICAgICAgICBzdWJtaXREaXNwbGF5TGlzdChkaXNwbGF5TGlzdCk7
CiAgICAgICAgIGRpc3BsYXlMaXN0LmNsZWFyKCk7CisgICAgICAgIG1faXRlbUNvdW50SW5DdXJy
ZW50RGlzcGxheUxpc3QgPSAwOwogICAgIH0KIAotICAgIHZvaWQgc3VibWl0RGlzcGxheUxpc3Qo
Y29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCkKKyAg
ICB2b2lkIHN1Ym1pdERpc3BsYXlMaXN0KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNw
bGF5TGlzdCYgZGlzcGxheUxpc3QpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBpZiAoIW1fcmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5IHx8IGRpc3BsYXlMaXN0LmlzRW1wdHkoKSkKICAgICAg
ICAgICAgIHJldHVybjsKQEAgLTM1MywxMSArMzM1LDYgQEAgcHJvdGVjdGVkOgogICAgIFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpGbHVzaElkZW50aWZpZXIgbV9yZWNlaXZlZEZsdXNoSWRlbnRpZmll
cjsKICAgICBXZWFrUHRyPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eT4gbV9yZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHk7CiAgICAgc2l6ZV90IG1faXRlbUNvdW50SW5DdXJyZW50RGlzcGxh
eUxpc3QgeyAwIH07Ci0gICAgV2ViQ29yZTo6RmxvYXRTaXplIG1fc2l6ZTsKLSAgICBXZWJDb3Jl
OjpSZW5kZXJpbmdNb2RlIG1fcmVuZGVyaW5nTW9kZTsKLSAgICBmbG9hdCBtX3Jlc29sdXRpb25T
Y2FsZTsKLSAgICBXZWJDb3JlOjpDb2xvclNwYWNlIG1fY29sb3JTcGFjZTsKLSAgICBXZWJDb3Jl
OjpQaXhlbEZvcm1hdCBtX3BpeGVsRm9ybWF0OwogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgQmFj
a2VuZFR5cGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKaW5kZXgg
YzhhMzIzMGY5Nzk4MTlmOWU5ZGYwMzM2ZTk0NGIwYTI5NzdmOGQxMS4uNzUyYzc4ZDIxYmQxMGQ2
OWQwOTEwY2FhMDg1MjcyY2FlYzE1NDI1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5LmNwcApAQCAtNzAsMjYgKzcwLDE1IEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5Ojpjb25uZWN0VG9HUFVQcm9jZXNzKCkKICAgICBzZW5kKE1lc3NhZ2VzOjpHUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDcmVhdGVSZW5kZXJpbmdCYWNrZW5kKG1fcmVuZGVyaW5n
QmFja2VuZElkZW50aWZpZXIpLCAwKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0YXRp
YyB2b2lkIHJlY3JlYXRlSW1hZ2VCdWZmZXIoUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5JiBw
cm94eSwgVCYgaW1hZ2VCdWZmZXIsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZXNvdXJj
ZUlkZW50aWZpZXIsIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIHJlbmRlcmluZ0JhY2tlbmRJ
ZGVudGlmaWVyKQotewotICAgIGltYWdlQnVmZmVyLmNsZWFyQmFja2VuZCgpOwotICAgIHByb3h5
LnNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OkNyZWF0ZUltYWdlQnVmZmVy
KGltYWdlQnVmZmVyLnNpemUoKSwgaW1hZ2VCdWZmZXIucmVuZGVyaW5nTW9kZSgpLCBpbWFnZUJ1
ZmZlci5yZXNvbHV0aW9uU2NhbGUoKSwgaW1hZ2VCdWZmZXIuY29sb3JTcGFjZSgpLCBpbWFnZUJ1
ZmZlci5waXhlbEZvcm1hdCgpLCByZXNvdXJjZUlkZW50aWZpZXIpLCByZW5kZXJpbmdCYWNrZW5k
SWRlbnRpZmllcik7Ci19Ci0KIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpyZWVz
dGFibGlzaEdQVVByb2Nlc3NDb25uZWN0aW9uKCkKIHsKICAgICBjb25uZWN0VG9HUFVQcm9jZXNz
KCk7CiAKLSAgICBmb3IgKGF1dG8mIHBhaXIgOiBtX3JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5p
bWFnZUJ1ZmZlcnMoKSkgewotICAgICAgICBpZiAoYXV0byYgYmFzZUltYWdlQnVmZmVyID0gcGFp
ci52YWx1ZSkgewotICAgICAgICAgICAgaWYgKGlzPEFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZm
ZXJNYXBwZWRQcm94eT4oKmJhc2VJbWFnZUJ1ZmZlcikpCi0gICAgICAgICAgICAgICAgcmVjcmVh
dGVJbWFnZUJ1ZmZlcigqdGhpcywgZG93bmNhc3Q8QWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZl
ck1hcHBlZFByb3h5PigqYmFzZUltYWdlQnVmZmVyKSwgcGFpci5rZXksIG1fcmVuZGVyaW5nQmFj
a2VuZElkZW50aWZpZXIpOwotICAgICAgICAgICAgZWxzZSBpZiAoaXM8QWNjZWxlcmF0ZWRSZW1v
dGVJbWFnZUJ1ZmZlclByb3h5PigqYmFzZUltYWdlQnVmZmVyKSkKLSAgICAgICAgICAgICAgICBy
ZWNyZWF0ZUltYWdlQnVmZmVyKCp0aGlzLCBkb3duY2FzdDxBY2NlbGVyYXRlZFJlbW90ZUltYWdl
QnVmZmVyUHJveHk+KCpiYXNlSW1hZ2VCdWZmZXIpLCBwYWlyLmtleSwgbV9yZW5kZXJpbmdCYWNr
ZW5kSWRlbnRpZmllcik7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcmVjcmVh
dGVJbWFnZUJ1ZmZlcigqdGhpcywgZG93bmNhc3Q8VW5hY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVm
ZmVyUHJveHk+KCpiYXNlSW1hZ2VCdWZmZXIpLCBwYWlyLmtleSwgbV9yZW5kZXJpbmdCYWNrZW5k
SWRlbnRpZmllcik7Ci0gICAgICAgIH0KKyAgICBmb3IgKGF1dG8mIGltYWdlQnVmZmVyIDogbV9y
ZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuaW1hZ2VCdWZmZXJzKCkudmFsdWVzKCkpIHsKKyAgICAg
ICAgaWYgKCFpbWFnZUJ1ZmZlcikKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpDcmVhdGVJbWFnZUJ1ZmZlcihpbWFn
ZUJ1ZmZlci0+bG9naWNhbFNpemUoKSwgaW1hZ2VCdWZmZXItPnJlbmRlcmluZ01vZGUoKSwgaW1h
Z2VCdWZmZXItPnJlc29sdXRpb25TY2FsZSgpLCBpbWFnZUJ1ZmZlci0+Y29sb3JTcGFjZSgpLCBp
bWFnZUJ1ZmZlci0+cGl4ZWxGb3JtYXQoKSwgaW1hZ2VCdWZmZXItPnJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcigpKSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7CisgICAgICAgIGlt
YWdlQnVmZmVyLT5jbGVhckJhY2tlbmQoKTsKICAgICB9CiB9CiAKQEAgLTExNCwxMCArMTAzLDEw
IEBAIHVpbnQ2NF90IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6bWVzc2FnZVNlbmRlckRl
c3RpbmF0aW9uSUQoKSBjb25zdAogICAgIHJldHVybiBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlm
aWVyLnRvVUludDY0KCk7CiB9CiAKLWJvb2wgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Ojp3
YWl0Rm9ySW1hZ2VCdWZmZXJCYWNrZW5kV2FzQ3JlYXRlZCgpCitib29sIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eTo6d2FpdEZvckRpZENyZWF0ZUltYWdlQnVmZmVyQmFja2VuZCgpCiB7CiAg
ICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gY29ubmVjdGlvbiA9IFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpOwotICAgIHJldHVy
biBjb25uZWN0aW9uLT53YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseTxNZXNzYWdlczo6UmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpJbWFnZUJ1ZmZlckJhY2tlbmRXYXNDcmVhdGVkPiht
X3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLCAxX3MsIElQQzo6V2FpdEZvck9wdGlvbjo6SW50
ZXJydXB0V2FpdGluZ0lmU3luY01lc3NhZ2VBcnJpdmVzKTsKKyAgICByZXR1cm4gY29ubmVjdGlv
bi0+d2FpdEZvckFuZERpc3BhdGNoSW1tZWRpYXRlbHk8TWVzc2FnZXM6OlJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eTo6RGlkQ3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kPihtX3JlbmRlcmluZ0Jh
Y2tlbmRJZGVudGlmaWVyLCAxX3MsIElQQzo6V2FpdEZvck9wdGlvbjo6SW50ZXJydXB0V2FpdGlu
Z0lmU3luY01lc3NhZ2VBcnJpdmVzKTsKIH0KIAogYm9vbCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHk6OndhaXRGb3JEaWRGbHVzaCgpCkBAIC0xMzUsMTMgKzEyNCwxMyBAQCBSZWZQdHI8SW1h
Z2VCdWZmZXI+IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Y3JlYXRlSW1hZ2VCdWZmZXIo
Y29uc3QgRmxvYXRTaQogICAgICAgICAvLyB3ZSBuZWVkIHRvIGNyZWF0ZSBJbWFnZUJ1ZmZlcnMg
Zm9yIGUuZy4gQ2FudmFzIHRoYXQgYXJlIGFjdHVhbGx5IG1hcHBlZCBpbnRvIHRoZQogICAgICAg
ICAvLyBXZWIgQ29udGVudCBwcm9jZXNzLCBzbyB0aGV5IGNhbiBiZSBwYWludGVkIGludG8gdGhl
IHRpbGVzLgogICAgICAgICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnNob3VsZFVzZVJl
bW90ZVJlbmRlcmluZ0ZvcihSZW5kZXJpbmdQdXJwb3NlOjpET00pKQotICAgICAgICAgICAgaW1h
Z2VCdWZmZXIgPSBBY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyTWFwcGVkUHJveHk6OmNyZWF0
ZShzaXplLCByZW5kZXJpbmdNb2RlLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVs
Rm9ybWF0LCAqdGhpcyk7CisgICAgICAgICAgICBpbWFnZUJ1ZmZlciA9IEFjY2VsZXJhdGVkUmVt
b3RlSW1hZ2VCdWZmZXJNYXBwZWRQcm94eTo6Y3JlYXRlKHNpemUsIHJlc29sdXRpb25TY2FsZSwg
Y29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQsICp0aGlzKTsKICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgaW1hZ2VCdWZmZXIgPSBBY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyUHJveHk6OmNyZWF0
ZShzaXplLCByZW5kZXJpbmdNb2RlLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVs
Rm9ybWF0LCAqdGhpcyk7CisgICAgICAgICAgICBpbWFnZUJ1ZmZlciA9IEFjY2VsZXJhdGVkUmVt
b3RlSW1hZ2VCdWZmZXJQcm94eTo6Y3JlYXRlKHNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JT
cGFjZSwgcGl4ZWxGb3JtYXQsICp0aGlzKTsKICAgICB9CiAKICAgICBpZiAoIWltYWdlQnVmZmVy
KQotICAgICAgICBpbWFnZUJ1ZmZlciA9IFVuYWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlclBy
b3h5OjpjcmVhdGUoc2l6ZSwgcmVuZGVyaW5nTW9kZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNw
YWNlLCBwaXhlbEZvcm1hdCwgKnRoaXMpOworICAgICAgICBpbWFnZUJ1ZmZlciA9IFVuYWNjZWxl
cmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlclByb3h5OjpjcmVhdGUoc2l6ZSwgcmVzb2x1dGlvblNjYWxl
LCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCwgKnRoaXMpOwogCiAgICAgaWYgKGltYWdlQnVmZmVy
KSB7CiAgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OkNyZWF0
ZUltYWdlQnVmZmVyKHNpemUsIHJlbmRlcmluZ01vZGUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JT
cGFjZSwgcGl4ZWxGb3JtYXQsIGltYWdlQnVmZmVyLT5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIoKSksIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOwpAQCAtMTkyLDMyICsxODEsMjQg
QEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OnJlbGVhc2VSZW1vdGVSZXNvdXJj
ZShSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWYKICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kOjpSZWxlYXNlUmVtb3RlUmVzb3VyY2UocmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyKSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7CiB9CiAKLXZvaWQgUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5OjppbWFnZUJ1ZmZlckJhY2tlbmRXYXNDcmVhdGVkKGNvbnN0
IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEludFNpemUmIGJhY2tlbmRTaXplLCBmbG9h
dCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4
ZWxGb3JtYXQsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBoYW5kbGUsIFJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCit2b2lkIFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eTo6ZGlkQ3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kKEltYWdlQnVm
ZmVyQmFja2VuZEhhbmRsZSBoYW5kbGUsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCiB7CiAgICAgYXV0byBpbWFnZUJ1ZmZlciA9IG1fcmVt
b3RlUmVzb3VyY2VDYWNoZVByb3h5LmNhY2hlZEltYWdlQnVmZmVyKHJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcik7CiAgICAgaWYgKCFpbWFnZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgaWYgKGlzPEFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXJNYXBwZWRQcm94eT4oKmltYWdl
QnVmZmVyKSkKLSAgICAgICAgZG93bmNhc3Q8QWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlck1h
cHBlZFByb3h5PigqaW1hZ2VCdWZmZXIpLmNyZWF0ZUJhY2tlbmQobG9naWNhbFNpemUsIGJhY2tl
bmRTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0LCBXVEZNb3Zl
KGhhbmRsZSkpOwotICAgIGVsc2UgaWYgKGlzPEFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXJQ
cm94eT4oKmltYWdlQnVmZmVyKSkKLSAgICAgICAgZG93bmNhc3Q8QWNjZWxlcmF0ZWRSZW1vdGVJ
bWFnZUJ1ZmZlclByb3h5PigqaW1hZ2VCdWZmZXIpLmNyZWF0ZUJhY2tlbmQobG9naWNhbFNpemUs
IGJhY2tlbmRTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0LCBX
VEZNb3ZlKGhhbmRsZSkpOworICAgIGlmIChpbWFnZUJ1ZmZlci0+cmVuZGVyaW5nTW9kZSgpID09
IFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQpCisgICAgICAgIGltYWdlQnVmZmVyLT5zZXRC
YWNrZW5kKFVuYWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlclNoYXJlYWJsZUJhY2tlbmQ6OmNyZWF0ZShp
bWFnZUJ1ZmZlci0+cGFyYW1ldGVycygpLCBXVEZNb3ZlKGhhbmRsZSkpKTsKKyAgICBlbHNlIGlm
IChpbWFnZUJ1ZmZlci0+Y2FuTWFwQmFja2luZ1N0b3JlKCkpCisgICAgICAgIGltYWdlQnVmZmVy
LT5zZXRCYWNrZW5kKEFjY2VsZXJhdGVkSW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRCYWNrZW5k
OjpjcmVhdGUoaW1hZ2VCdWZmZXItPnBhcmFtZXRlcnMoKSwgV1RGTW92ZShoYW5kbGUpKSk7CiAg
ICAgZWxzZQotICAgICAgICBkb3duY2FzdDxVbmFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXJQ
cm94eT4oKmltYWdlQnVmZmVyKS5jcmVhdGVCYWNrZW5kKGxvZ2ljYWxTaXplLCBiYWNrZW5kU2l6
ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCwgV1RGTW92ZShoYW5k
bGUpKTsKKyAgICAgICAgaW1hZ2VCdWZmZXItPnNldEJhY2tlbmQoQWNjZWxlcmF0ZWRJbWFnZUJ1
ZmZlclNoYXJlYWJsZUJhY2tlbmQ6OmNyZWF0ZShpbWFnZUJ1ZmZlci0+cGFyYW1ldGVycygpLCBX
VEZNb3ZlKGhhbmRsZSkpKTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6
OmRpZEZsdXNoKERpc3BsYXlMaXN0OjpGbHVzaElkZW50aWZpZXIgZmx1c2hJZGVudGlmaWVyLCBS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQog
ewotICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBtX3JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jYWNo
ZWRJbWFnZUJ1ZmZlcihyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwotICAgIGlmICghaW1h
Z2VCdWZmZXIpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChpczxBY2NlbGVyYXRlZFJlbW90
ZUltYWdlQnVmZmVyTWFwcGVkUHJveHk+KCppbWFnZUJ1ZmZlcikpCi0gICAgICAgIGRvd25jYXN0
PEFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXJNYXBwZWRQcm94eT4oKmltYWdlQnVmZmVyKS5k
aWRGbHVzaChmbHVzaElkZW50aWZpZXIpOwotICAgIGVsc2UgaWYgKGlzPEFjY2VsZXJhdGVkUmVt
b3RlSW1hZ2VCdWZmZXJQcm94eT4oKmltYWdlQnVmZmVyKSkKLSAgICAgICAgZG93bmNhc3Q8QWNj
ZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlclByb3h5PigqaW1hZ2VCdWZmZXIpLmRpZEZsdXNoKGZs
dXNoSWRlbnRpZmllcik7Ci0gICAgZWxzZQotICAgICAgICBkb3duY2FzdDxVbmFjY2VsZXJhdGVk
UmVtb3RlSW1hZ2VCdWZmZXJQcm94eT4oKmltYWdlQnVmZmVyKS5kaWRGbHVzaChmbHVzaElkZW50
aWZpZXIpOworICAgIGlmIChhdXRvIGltYWdlQnVmZmVyID0gbV9yZW1vdGVSZXNvdXJjZUNhY2hl
UHJveHkuY2FjaGVkSW1hZ2VCdWZmZXIocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSkKKyAg
ICAgICAgaW1hZ2VCdWZmZXItPmRpZEZsdXNoKGZsdXNoSWRlbnRpZmllcik7CiB9CiAKIHZvaWQg
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Ojp1cGRhdGVSZXVzYWJsZUhhbmRsZXMoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmgKaW5kZXggOTVmOGQyYjQxMmZiOTFkZjc3
YzY4ZjEzNmIwMDc4NmYwMjRkN2UyNi4uZjgwNWZjMWVmZjljYTUxNDUzNTljYTI5MmI1MmRkZmVl
ZjhkYTgxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oCkBAIC04MSw3
ICs4MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNhY2hlTmF0aXZlSW1hZ2UoV2ViQ29yZTo6TmF0
aXZlSW1hZ2UmKTsKICAgICB2b2lkIHJlbGVhc2VSZW1vdGVSZXNvdXJjZShXZWJDb3JlOjpSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogCi0gICAgYm9vbCB3YWl0Rm9ySW1hZ2VCdWZmZXJC
YWNrZW5kV2FzQ3JlYXRlZCgpOworICAgIGJvb2wgd2FpdEZvckRpZENyZWF0ZUltYWdlQnVmZmVy
QmFja2VuZCgpOwogICAgIGJvb2wgd2FpdEZvckRpZEZsdXNoKCk7CiAKIHByaXZhdGU6CkBAIC05
NSw3ICs5NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVSZXVzYWJsZUhhbmRsZXMoKTsK
IAogICAgIC8vIE1lc3NhZ2VzIHRvIGJlIHJlY2VpdmVkLgotICAgIHZvaWQgaW1hZ2VCdWZmZXJC
YWNrZW5kV2FzQ3JlYXRlZChjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBj
b25zdCBXZWJDb3JlOjpJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxl
LCBXZWJDb3JlOjpDb2xvclNwYWNlLCBXZWJDb3JlOjpQaXhlbEZvcm1hdCwgSW1hZ2VCdWZmZXJC
YWNrZW5kSGFuZGxlLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOworICAg
IHZvaWQgZGlkQ3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kKEltYWdlQnVmZmVyQmFja2VuZEhhbmRs
ZSwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB2b2lkIGRpZEZs
dXNoKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpGbHVzaElkZW50aWZpZXIsIFdlYkNvcmU6OlJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAKICAgICBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkg
bV9yZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkgeyAqdGhpcyB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5tZXNzYWdlcy5pbgppbmRleCA5MjBkZTNmNzc3NTQw
MTY0MDUxZmY1MWNkMjFiNTA1NTk4NTRmODQ0Li4zYTUzMmQ1ZTRmZjYxNmJkYjA3ZWRlN2E5YTgz
ZTkzMTM3ZTczYmYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eS5tZXNzYWdlcy5pbgpAQCAtMjMsNyArMjMsNyBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VT
UykKIAogbWVzc2FnZXMgLT4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5IE5vdFJlZkNvdW50
ZWQgewotICAgIEltYWdlQnVmZmVyQmFja2VuZFdhc0NyZWF0ZWQoV2ViQ29yZTo6RmxvYXRTaXpl
IGxvZ2ljYWxTaXplLCBXZWJDb3JlOjpJbnRTaXplIGJhY2tlbmRTaXplLCBmbG9hdCByZXNvbHV0
aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgZW51bTp1aW50OF90IFdl
YkNvcmU6OlBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBXZWJLaXQ6OkltYWdlQnVmZmVyQmFja2Vu
ZEhhbmRsZSBoYW5kbGUsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCisgICAgRGlkQ3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5k
KFdlYktpdDo6SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGhhbmRsZSwgV2ViQ29yZTo6UmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKICAgICBE
aWRGbHVzaChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Rmx1c2hJZGVudGlmaWVyIGZsdXNoSWRlbnRp
ZmllciwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcikKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1
ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQuY3BwCmluZGV4IGNlZGE3MTJkYjVhNDY4OTFh
MDMyM2VjZTk3Mzc1ODMzNWY0NDQ0NmIuLjU3YzdmN2Q1YTI0NTk3ZDJiNmIyZmYzZWI1MGQ3ZjU2
OTc0OTUwYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hh
cmVhYmxlSU9TdXJmYWNlQmFja2VuZC5jcHAKQEAgLTM3LDE0ICszNywxNCBAQCB1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKEltYWdlQnVmZmVy
U2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZCk7CiAKLXN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZl
clNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQ+IEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNl
QmFja2VuZDo6Y3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEludFNp
emUmIGJhY2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JT
cGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBo
YW5kbGUpCitzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNr
ZW5kPiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZShjb25zdCBQ
YXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgaGFuZGxlKQog
ewogICAgIGlmICghV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxNYWNoU2VuZFJpZ2h0PihoYW5kbGUp
KSB7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIH0KIAotICAgIHJldHVybiBtYWtlVW5pcXVlPEltYWdlQnVmZmVyU2hh
cmVhYmxlSU9TdXJmYWNlQmFja2VuZD4obG9naWNhbFNpemUsIGJhY2tlbmRTaXplLCByZXNvbHV0
aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0LCBXVEZNb3ZlKGhhbmRsZSkpOworICAg
IHJldHVybiBtYWtlVW5pcXVlPEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZD4o
cGFyYW1ldGVycywgV1RGTW92ZShoYW5kbGUpKTsKIH0KIAogSW1hZ2VCdWZmZXJCYWNrZW5kSGFu
ZGxlIEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZm
ZXJCYWNrZW5kSGFuZGxlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNr
ZW5kLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdl
QnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZC5oCmluZGV4IDdjMWVlZDYwMmU1MTcyMzc2
OWY0YjY5NTRiMzE3OTRhMzAzYmZmNmUuLmQ1ZTAwZTQyMDk4YTRiMzcwNjgyYTQ5N2JlMzg5YzBk
Mzg5NTNjYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kLmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJl
YWJsZUlPU3VyZmFjZUJhY2tlbmQuaApAQCAtMzQsMTYgKzM0LDE0IEBACiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCi1jbGFzcyBTaGFyZWFibGVCaXRtYXA7Ci0KIGNsYXNzIEltYWdlQnVmZmVyU2hh
cmVhYmxlSU9TdXJmYWNlQmFja2VuZCBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpJbWFnZUJ1ZmZl
ckJhY2tlbmQgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoSW1hZ2VCdWZmZXJTaGFyZWFi
bGVJT1N1cmZhY2VCYWNrZW5kKTsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbWFnZUJ1ZmZl
clNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQpOwogcHVibGljOgotICAgIHN0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8SW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kPiBjcmVhdGUoY29u
c3QgV2ViQ29yZTo6RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50U2l6
ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFj
ZSwgV2ViQ29yZTo6UGl4ZWxGb3JtYXQsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSk7CisgICAg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tl
bmQ+IGNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKTsK
IAotICAgIEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZChjb25zdCBXZWJDb3Jl
OjpGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBwaHlzaWNh
bFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSBjb2xvclNw
YWNlLCBXZWJDb3JlOjpQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgSW1hZ2VCdWZmZXJCYWNrZW5k
SGFuZGxlJiYgaGFuZGxlKQotICAgICAgICA6IEltYWdlQnVmZmVyQmFja2VuZChsb2dpY2FsU2l6
ZSwgcGh5c2ljYWxTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0
KQorICAgIEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZChjb25zdCBQYXJhbWV0
ZXJzJiBwYXJhbWV0ZXJzLCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUmJiBoYW5kbGUpCisgICAg
ICAgIDogSW1hZ2VCdWZmZXJCYWNrZW5kKHBhcmFtZXRlcnMpCiAgICAgICAgICwgbV9oYW5kbGUo
V1RGTW92ZShoYW5kbGUpKQogICAgIHsKICAgICB9CkBAIC02Miw4ICs2MCw4IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHB1dEltYWdlRGF0YShXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIGlu
cHV0Rm9ybWF0LCBjb25zdCBXZWJDb3JlOjpJbWFnZURhdGEmLCBjb25zdCBXZWJDb3JlOjpJbnRS
ZWN0JiBzcmNSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZGVzdFBvaW50LCBXZWJDb3Jl
OjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIGRlc3RGb3JtYXQpIG92ZXJyaWRlOwogCiAgICAgc3Rh
dGljIGNvbnN0ZXhwciBib29sIGlzT3JpZ2luQXRVcHBlckxlZnRDb3JuZXIgPSB0cnVlOwotICAg
IHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0FjY2VsZXJhdGVkID0gdHJ1ZTsKICAgICBzdGF0aWMg
Y29uc3RleHByIGJvb2wgY2FuTWFwQmFja2luZ1N0b3JlID0gZmFsc2U7CisgICAgc3RhdGljIGNv
bnN0ZXhwciBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUgPSBXZWJDb3JlOjpS
ZW5kZXJpbmdNb2RlOjpBY2NlbGVyYXRlZDsKIAogcHJpdmF0ZToKICAgICBJbWFnZUJ1ZmZlckJh
Y2tlbmRIYW5kbGUgbV9oYW5kbGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNl
QmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29h
L0ltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFja2VuZC5jcHAKaW5kZXggNDUw
ZGU0NDU1ODBjOTlhY2NkNmIyOGYzODEzYzRjY2YzNzY0ZTk1NS4uMWViYWQ0MzJhMjE1M2ZhMDQz
ZmU4OGRlOGJiMTNiYzZjZGI2MWY0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElPU3VyZmFj
ZUJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
Y29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNrZW5kLmNwcApAQCAt
MzcsMTMgKzM3LDEzIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBXVEZfTUFLRV9JU09f
QUxMT0NBVEVEX0lNUEwoSW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNrZW5k
KTsKIAotc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNl
QmFja2VuZD4gSW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNrZW5kOjpjcmVh
dGUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3Bh
Y2UgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIGNvbnN0IEhvc3RXaW5kb3cq
KQorc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFj
a2VuZD4gSW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGUo
Y29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycywgY29uc3QgSG9zdFdpbmRvdyopCiB7Ci0gICAg
SW50U2l6ZSBiYWNrZW5kU2l6ZSA9IGNhbGN1bGF0ZUJhY2tlbmRTaXplKHNpemUsIHJlc29sdXRp
b25TY2FsZSk7CisgICAgSW50U2l6ZSBiYWNrZW5kU2l6ZSA9IGNhbGN1bGF0ZUJhY2tlbmRTaXpl
KHBhcmFtZXRlcnMubG9naWNhbFNpemUsIHBhcmFtZXRlcnMucmVzb2x1dGlvblNjYWxlKTsKICAg
ICBpZiAoYmFja2VuZFNpemUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAot
ICAgIGF1dG8gc3VyZmFjZSA9IElPU3VyZmFjZTo6Y3JlYXRlKGJhY2tlbmRTaXplLCBiYWNrZW5k
U2l6ZSwgY2FjaGVkQ0dDb2xvclNwYWNlKGNvbG9yU3BhY2UpLCBJT1N1cmZhY2U6OmZvcm1hdEZv
clBpeGVsRm9ybWF0KHBpeGVsRm9ybWF0KSk7CisgICAgYXV0byBzdXJmYWNlID0gSU9TdXJmYWNl
OjpjcmVhdGUoYmFja2VuZFNpemUsIGJhY2tlbmRTaXplLCBjYWNoZWRDR0NvbG9yU3BhY2UocGFy
YW1ldGVycy5jb2xvclNwYWNlKSwgSU9TdXJmYWNlOjpmb3JtYXRGb3JQaXhlbEZvcm1hdChwYXJh
bWV0ZXJzLnBpeGVsRm9ybWF0KSk7CiAgICAgaWYgKCFzdXJmYWNlKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIApAQCAtNTMsMjEgKzUzLDIxIEBAIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZl
clNoYXJlYWJsZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQ+IEltYWdlQnVmZmVyU2hhcmVhYmxlCiAK
ICAgICBDR0NvbnRleHRDbGVhclJlY3QoY2dDb250ZXh0LmdldCgpLCBGbG9hdFJlY3QoRmxvYXRQ
b2ludDo6emVybygpLCBiYWNrZW5kU2l6ZSkpOwogCi0gICAgcmV0dXJuIG1ha2VVbmlxdWU8SW1h
Z2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNrZW5kPihzaXplLCBiYWNrZW5kU2l6
ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCwgV1RGTW92ZShzdXJm
YWNlKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8SW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJ
T1N1cmZhY2VCYWNrZW5kPihwYXJhbWV0ZXJzLCBXVEZNb3ZlKHN1cmZhY2UpKTsKIH0KIAotc3Rk
Ojp1bmlxdWVfcHRyPEltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFja2VuZD4g
SW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGUoY29uc3Qg
RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50U2l6ZSYgaW50ZXJuYWxTaXplLCBmbG9h
dCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4
ZWxGb3JtYXQsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBoYW5kbGUpCitzdGQ6OnVuaXF1ZV9w
dHI8SW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNrZW5kPiBJbWFnZUJ1ZmZl
clNoYXJlYWJsZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZShjb25zdCBQYXJhbWV0ZXJz
JiBwYXJhbWV0ZXJzLCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgaGFuZGxlKQogewogICAgIGlm
ICghV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxNYWNoU2VuZFJpZ2h0PihoYW5kbGUpKSB7CiAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9
CiAKLSAgICBhdXRvIHN1cmZhY2UgPSBJT1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQoV1RG
TW92ZShXVEY6OmdldDxNYWNoU2VuZFJpZ2h0PihoYW5kbGUpKSwgY2FjaGVkQ0dDb2xvclNwYWNl
KGNvbG9yU3BhY2UpKTsKKyAgICBhdXRvIHN1cmZhY2UgPSBJT1N1cmZhY2U6OmNyZWF0ZUZyb21T
ZW5kUmlnaHQoV1RGTW92ZShXVEY6OmdldDxNYWNoU2VuZFJpZ2h0PihoYW5kbGUpKSwgY2FjaGVk
Q0dDb2xvclNwYWNlKHBhcmFtZXRlcnMuY29sb3JTcGFjZSkpOwogICAgIGlmICghc3VyZmFjZSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gbWFrZVVuaXF1ZTxJbWFnZUJ1
ZmZlclNoYXJlYWJsZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQ+KGxvZ2ljYWxTaXplLCBpbnRlcm5h
bFNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQsIFdURk1vdmUo
c3VyZmFjZSkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEltYWdlQnVmZmVyU2hhcmVhYmxlTWFw
cGVkSU9TdXJmYWNlQmFja2VuZD4ocGFyYW1ldGVycywgV1RGTW92ZShzdXJmYWNlKSk7CiB9CiAK
IEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBJbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElPU3Vy
ZmFjZUJhY2tlbmQ6OmNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSgpIGNvbnN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdl
QnVmZmVyU2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFja2VuZC5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElP
U3VyZmFjZUJhY2tlbmQuaAppbmRleCAyYTY2YmIzODRmYTFhMWFlYTFhZjMxYzFjN2UzM2JjYTlh
MDU3ZjM1Li5jNWQwNDgwYzM2MGRjYjk1YTgyNTdlZDI1YTQ4YzQzNjcxYzRiY2ZkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVm
ZmVyU2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJ
T1N1cmZhY2VCYWNrZW5kLmgKQEAgLTM5LDggKzM5LDggQEAgY2xhc3MgSW1hZ2VCdWZmZXJTaGFy
ZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNrZW5kIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OkltYWdl
QnUKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVk
SU9TdXJmYWNlQmFja2VuZCk7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW1hZ2VCdWZmZXJT
aGFyZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNrZW5kKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgc3Rk
Ojp1bmlxdWVfcHRyPEltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFja2VuZD4g
Y3JlYXRlKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IGZsb2F0
IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSwgV2ViQ29yZTo6UGl4ZWxGb3Jt
YXQsIGNvbnN0IFdlYkNvcmU6Okhvc3RXaW5kb3cqKTsKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVf
cHRyPEltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFja2VuZD4gY3JlYXRlKGNv
bnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IFdlYkNvcmU6OkludFNp
emUmIGludGVybmFsU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNw
YWNlLCBXZWJDb3JlOjpQaXhlbEZvcm1hdCwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKTsKKyAg
ICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkSU9TdXJm
YWNlQmFja2VuZD4gY3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmLCBjb25zdCBXZWJDb3JlOjpIb3N0
V2luZG93Kik7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlclNoYXJlYWJs
ZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQ+IGNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiwgSW1hZ2VC
dWZmZXJCYWNrZW5kSGFuZGxlKTsKIAogICAgIHVzaW5nIFdlYkNvcmU6OkltYWdlQnVmZmVySU9T
dXJmYWNlQmFja2VuZDo6SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOwogCg==
</data>
<flag name="review"
          id="432642"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415434</attachid>
            <date>2020-12-04 11:21:40 -0800</date>
            <delta_ts>2020-12-04 12:26:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219007-20201204112139.patch</filename>
            <type>text/plain</type>
            <size>112581</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNDM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2FlMjg5MzBiNzRmYmZk
NzMwMWQ2OGY5YjFiMGJjZjc4YTg2YzlmNy4uODdmNmZlNjE0MDJhNjVjNmY0ZGJkNzkxMTQ5YWNk
MzJmMWVkNzZhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExOCBAQAorMjAyMC0xMi0wNCAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3Nd
IENsZWFuIHVwIHJlY3JlYXRpbmcgdGhlIEltYWdlQnVmZmVyQmFja2VuZCBiZWNhdXNlIG9mIEdQ
VSBjcmFzaGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjE5MDA3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgorCisgICAgICAg
IFRvIGFsbG93IGFuc3dlcmluZyBxdWVzdGlvbnMgYWJvdXQgdGhlIGJhY2tlbmQgY3JlYXRpb24g
cGFyYW1ldGVycyB3aXRob3V0CisgICAgICAgIGhhdmluZyB0aGUgYmFja2VuZCBjcmVhdGVkLCB0
aGUgbmV3IHN0cnVjdHVyZSBJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnMKKyAgICAgICAg
aXMgaW50cm9kdWNlZC4KKworICAgICAgICBUaGlzIHN0cnVjdHVyZSBjb250YWlucyB0aGUgcGFy
YW1ldGVycyB3aGljaCB3ZXJlIHBhc3NlZCBieSB0aGUgY2FsbGVyIGluCisgICAgICAgIHRoZSBX
ZWJQcm9jZXNzIGFuZCB3aGljaCBhcmUgc3VmZmljaWVudCB0byByZWNyZWF0ZSBSZW1vdGVJbWFn
ZUJ1ZmZlciBpZgorICAgICAgICB0aGUgR1BVIFByb2Nlc3MgY3Jhc2hlcyBldmVuIGJlZm9yZSB0
aGUgYmFja2VuZCBvZiBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5CisgICAgICAgIGlzIGNyZWF0ZWQu
CisKKyAgICAgICAgQ29uY3JldGVJbWFnZUJ1ZmZlciBhbmQgSW1hZ2VCdWZmZXJCYWNrZW5kIHdp
bGwgaG9sZCBhbiBpbnN0YW5jZSBvZiB0aGUKKyAgICAgICAgbmV3IHN0cnVjdHVyZSBJbWFnZUJ1
ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnMuCisKKyAgICAgICAgQWxzbyByZXBsYWNlIGFsbCB0aGUg
aW5zdGFuY2VzIG9mICdpc0FjY2VsZXJhdGVkJyBieSAncmVuZGVyaW5nTW9kZScuIFNvCisgICAg
ICAgIG5vIG5lZWQgdG8gY29udmVydCBvbmUgdHlwZSB0byB0aGUgb3RoZXIuCisKKyAgICAgICAg
KiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmg6
CisgICAgICAgIChXZWJDb3JlOjpDb25jcmV0ZUltYWdlQnVmZmVyOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q29uY3JldGVJbWFnZUJ1ZmZlcjo6Q29uY3JldGVJbWFnZUJ1ZmZlcik6Cisg
ICAgICAgIC0tIE1ha2UgQ29uY3JldGVJbWFnZUJ1ZmZlciBvd24gYW4gaW5zdGFuY2Ugb2YgSW1h
Z2VCdWZmZXJCYWNrZW5kOjpQYXJhbWV0ZXJzLgorICAgICAgICAtLSBBZGQgbWV0aG9kcyB0byBz
ZXQgYW5kIGNsZWFyIHRoZSBiYWNrZW5kIG9mIGFuIEltYWdlQnVmZmVyLgorCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
QnVmZmVyOjpiYWNrZW5kIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpz
dWJtaXREaXNwbGF5TGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6ZGlkRmx1
c2gpOgorICAgICAgICAtLSBFeHBvc2UgdGhlIEltYWdlQnVmZmVyQmFja2VuZCBjcmVhdGlvbiBw
YXJhbWV0ZXJzIHRocm91Z2ggbWV0aG9kcy4KKyAgICAgICAgLS0gRXhwb3NlIHN1Ym1pdERpc3Bs
YXlMaXN0KCkgYW5kIGRpZEZsdXNoKCkgc28gbm8gY2FzdGluZyBpcyBuZWVkZWQgd2hlbgorICAg
ICAgICAgICBjYWxsaW5nIHRoZXNlIGZ1bmN0aW9ucyB0aHJvdWdoIFJlbW90ZUltYWdlQnVmZXJQ
cm94eS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OkltYWdlQnVmZmVyQmFj
a2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OnRvQkdSQURhdGEg
Y29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5o
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjpiYWNrZW5kU2l6ZSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6Om1lbW9yeUNvc3QgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjpieXRlc1BlclJvdyBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OnRvQmFja2VuZENv
b3JkaW5hdGVzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQmFja2VuZDo6
bG9naWNhbFNpemUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5k
OjpyZXNvbHV0aW9uU2NhbGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJC
YWNrZW5kOjpjb2xvclNwYWNlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVy
QmFja2VuZDo6cGl4ZWxGb3JtYXQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZm
ZXJCYWNrZW5kOjpsb2dpY2FsUmVjdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1
ZmZlckJhY2tlbmQ6OmJhY2tlbmRSZWN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
QnVmZmVyQmFja2VuZDo6YmFzZVRyYW5zZm9ybSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIC0t
IEFkZCB0aGUgc3RydWN0dXJlIEltYWdlQnVmZmVyQmFja2VuZDo6UGFyYW1ldGVycy4gCisgICAg
ICAgIC0tIE1ha2UgSW1hZ2VCdWZmZXJCYWNrZW5kIG93biBhbiBpbnN0YW5jZSBvZiB0aGlzIHN0
cnVjdHVyZS4KKyAgICAgICAgLS0gTWFrZSBiYWNrZW5kU2l6ZSgpIGEgcHVyZSB2aXJ0dWFsIG1l
dGhvZC4KKyAgICAgICAgLS0gRGVsZXRlIGJhc2VUcmFuc2Zvcm0oKSBzaW5jZSBpdCBpcyBpbXBs
ZW1lbnRlZCBpbiBDb25jcmV0ZUltYWdlQnVmZmVyLgorCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvUGxhdGZvcm1JbWFnZUJ1ZmZlci5oOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNhaXJvQmFja2VuZDo6ZHJhd1BhdHRlcm4pOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1
cmZhY2VCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ2Fpcm9JbWFn
ZVN1cmZhY2VCYWNrZW5kOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJD
YWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQ6OkltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNr
ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNr
ZW5kOjpwbGF0Zm9ybVRyYW5zZm9ybUNvbG9yU3BhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNr
ZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2Vu
ZDo6SW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZDo6YmFja2VuZFNpemUgY29uc3QpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2Vu
ZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCYWNrZW5k
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ0dCYWNrZW5kOjpzZXR1cENvbnRl
eHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OmNvcHlJ
bWFnZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNHQmFja2VuZDo6c2lu
a0ludG9JbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNHQmFja2VuZDo6ZHJh
dyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNHQmFja2VuZDo6ZHJhd1BhdHRlcm4p
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OnRvQ0ZEYXRhIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ0dCYWNrZW5kOjpiYXNlVHJhbnNmb3Jt
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1
ZmZlckNHQmFja2VuZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVm
ZmVyQ0dCaXRtYXBCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ0dC
aXRtYXBCYWNrZW5kOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDR0Jp
dG1hcEJhY2tlbmQ6OkltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kKToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpiYWNrZW5kU2l6ZSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y29weU5hdGl2ZUltYWdl
IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0
bWFwQmFja2VuZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVy
SU9TdXJmYWNlQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcklPU3Vy
ZmFjZUJhY2tlbmQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcklPU3Vy
ZmFjZUJhY2tlbmQ6OkltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZCk6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmJhY2tlbmRTaXplIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6ZHJhd0NvbnN1bWlu
Zyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VC
YWNrZW5kLmg6CisgICAgICAgIC0tIENoYW5nZSB0aGUgY3JlYXRlKCkgbWV0aG9kcyB0byB0YWtl
IGEgIlBhcmFtZXRlcnMiIGFyZ3VtZW50LgorICAgICAgICAtLSBVc2UgdGhlIGJhY2tlbmQgbWV0
aG9kIHRvIGFjY2VzcyB0aGUgIlBhcmFtZXRlcnMiIHN0cnVjdHVyZS4KKworICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEZsdXNoSWRlbnRpZmllci5o
OiBBZGRlZC4KKyAgICAgICAgTW92ZSBEaXNwbGF5TGlzdEZsdXNoSWRlbnRpZmllciB0byBhIHNl
cGFyYXRlIGZpbGUgc28gaXQgY2FuIGJlIGluY2x1ZGVkCisgICAgICAgIGluIEltYWdlQnVmZmVy
Lmggd2l0aG91dCBoYXZpbmcgdG8gaW5jbHVkZSBEaXNwbGF5TGlzdC5oLgorCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXIuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJbWFnZUJ1ZmZlcjo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZmZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkltYWdlQnVmZmVyOjppbml0aWFsRHJhd2lu
Z0NvbnRleHRDVE0pOiBEZWxldGVkLgorICAgICAgICAtLSBObyBuZWVkIHRvIHBhc3MgdGhlICdz
aXplJyBhcmd1bWVudCB0d2ljZSBpbiB0aGUgJ2NyZWF0ZScgbWV0aG9kcy4gVGhlCisgICAgICAg
ICAgIHN0cnVjdHVyZSBQYXJhbWV0ZXJzIGhhcyB0byBiZSBwYXNzZWQgdG8gdGhlIGNvbnN0cnVj
dG9yIGFueXdheS4KKyAgICAgICAgLS0gTm8gbmVlZCBmb3IgaW5pdGlhbERyYXdpbmdDb250ZXh0
Q1RNKCkgc2luY2UgaXQgaXMgZXF1aXZhbGVudCB0byAKKyAgICAgICAgICAgYmFzZVRyYW5zZm9y
bSgpLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0
MkRCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyRGlyZWN0MkRCYWNr
ZW5kOjpjb3B5SW1hZ2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJEaXJl
Y3QyREJhY2tlbmQ6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJEaXJlY3Qy
REJhY2tlbmQ6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgLS0gVXNlIHRoZSBiYWNrZW5kIG1ldGhv
ZCB0byBhY2Nlc3MgdGhlICJQYXJhbWV0ZXJzIiBzdHJ1Y3R1cmUuCisKIDIwMjAtMTItMDQgIFBl
bmcgTGl1ICA8cGVuZy5saXU2QGFwcGxlLmNvbT4KIAogICAgICAgICBbTVNFXSBNb3ZlIHRyYWNr
IGJ1ZmZlciBtYW5hZ2VtZW50IGZyb20gU291cmNlQnVmZmVyIHRvIFNvdXJjZUJ1ZmZlclByaXZh
dGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKaW5kZXggYTdjZmU2ODQxMDlhZTFlYTA2NTYyZTA0NWJjYTlmMjNlOTAwZWU2MC4u
ZjY5NzI0OTQ3ZWY3OTdjOTE2ZGQzYWMzOThiOWM3M2RkZGMyNWU5ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5OSBAQAorMjAyMC0xMi0wNCAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNv
bT4KKworICAgICAgICBbR1BVIFByb2Nlc3NdIENsZWFuIHVwIHJlY3JlYXRpbmcgdGhlIEltYWdl
QnVmZmVyQmFja2VuZCBiZWNhdXNlIG9mIEdQVSBjcmFzaGluZworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE5MDA3CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgU2ltb24gRnJhc2VyLgorCisgICAgICAgIFRoZXJlIGlzIG5vIG5lZWQgdG8gc3RvcmUgdGhl
IGJhY2tlbmQgcGFyYW1ldGVycyBpbiBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5LgorICAgICAgICBU
aGVzZSBwYXJhbWV0ZXJzIGFyZSBub3cgc3RvcmVkIGluIHRoZSBiYXNlIGNsYXNzIEltYWdlQnVm
ZmVyIGJlZm9yZSB0aGUKKyAgICAgICAgYmFja2VuZCBpcyBjcmVhdGVkLgorCisgICAgICAgIFJl
bW92ZSB0aGUgdHJhaXRzIGRlZmluaXRpb24gZm9yIFJlbW90ZUltYWdlQnVmZmVyUHJveHkgdHlw
ZXMgYmVjYXVzZQorICAgICAgICB0aGV5IGFyZSB3cm9uZy4gQWxsIEltYWdlQnVmZmVycyBoYXZl
IHZhbGlkIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpCisgICAgICAgIHJlZ2FyZGxlc3Mg
d2hldGhlciB0aGV5IGFyZSByZW1vdGUgb3Igbm90LiBJbWFnZUJ1ZmZlcjo6c2V0QmFja2VuZCBh
bmQKKyAgICAgICAgSW1hZ2VCdWZmZXI6OnN1Ym1pdERpc3BsYXlMaXN0KCkgYXJlIG5vdyBpbXBs
ZW1lbnRlZCBpbiBXZWJDb3JlLiBTbyBubworICAgICAgICBjYXN0aW5nIGlzIG5lZWRlZC4KKwor
ICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaDoKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXI6OlJlbW90ZUltYWdlQnVmZmVyKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXI6OnN1Ym1pdERpc3BsYXlMaXN0KTogRGVsZXRl
ZC4KKyAgICAgICAgc3VibWl0RGlzcGxheUxpc3QoKSBpcyBub3cgYSB2aXJ0dWFsIG1ldGhvZCBv
ZiBJbWFnZUJ1ZmZlci4gU28gbWFrZSBpdAorICAgICAgICBwcml2YXRlIGFuZCBpZ25vcmUgdGhl
IHJldHVybiBvZiBEaXNwbGF5TGlzdDo6UmVwbGF5ZXI6OnJlcGxheSgpIHNpbmNlIAorICAgICAg
ICB0aGUgY2FsbGVyIGRvZXMgbm90IHVzZSBpdC4KKworICAgICAgICAqIEdQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZVJlbmRlcmluZ0JhY2tlbmQ6OmRpZENyZWF0ZUltYWdlQnVmZmVyQmFja2VuZCk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmFwcGx5RGlzcGxheUxpc3RzRnJvbUhh
bmRsZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmltYWdlQnVm
ZmVyQmFja2VuZFdhc0NyZWF0ZWQpOiBEZWxldGVkLgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oOgorICAgICAgICBSZW5hbWUgJ2ltYWdlQnVm
ZmVyQmFja2VuZFdhc0NyZWF0ZWQoKScgdG8gJ2RpZENyZWF0ZUltYWdlQnVmZmVyQmFja2VuZCgp
JworICAgICAgICB0byBiZSBjb25zaXN0ZW50IHdpdGggJ2RpZEZsdXNoKCknLgorCisgICAgICAg
ICogU2hhcmVkL0NvbmNyZXRlU2hhcmVhYmxlSW1hZ2VCdWZmZXIuaDoKKyAgICAgICAgKFdlYktp
dDo6Q29uY3JldGVTaGFyZWFibGVJbWFnZUJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktp
dDo6Q29uY3JldGVTaGFyZWFibGVJbWFnZUJ1ZmZlcjo6Q29uY3JldGVTaGFyZWFibGVJbWFnZUJ1
ZmZlcik6IERlbGV0ZWQuCisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVM
YXllckJhY2tpbmdTdG9yZS5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJCYWNraW5n
U3RvcmU6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2lu
Z1N0b3JlOjpzd2FwVG9WYWxpZEZyb250QnVmZmVyKToKKyAgICAgICAgQ2FsbCB0aGUgZnVuY3Rp
b24gd2l0aCB0aGUgbmV3IG5hbWUgYW5kIGRlbGV0ZSB0aGUgRklYTUUgY29tbWVudC4KKworICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFw
QmFja2VuZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFw
QmFja2VuZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVC
aXRtYXBCYWNrZW5kOjpJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQpOgorICAgICAg
ICAoV2ViS2l0OjpJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmJhY2tlbmRTaXpl
IGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNo
YXJlYWJsZUJpdG1hcEJhY2tlbmQuaDoKKyAgICAgICAgVXNlIHRoZSBuZXcgc3RydWN0dXJlICdJ
bWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnMnLiBJbXBsZW1lbnQgdGhlCisgICAgICAgIHZp
cnR1YWwgbWV0aG9kICdiYWNrZW5kU2l6ZSgpJy4KKworICAgICAgICAqIFdlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1BsYXRmb3JtUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oOgorICAgICAgICAoaXNU
eXBlKTogRGVsZXRlZC4KKyAgICAgICAgRGVsZXRlIHRoZSB3cm9uZyB0cmFpdHMuCisKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5Lmg6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyUHJveHk6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyUHJveHk6OlJlbW90ZUltYWdlQnVmZmVyUHJveHkp
OgorICAgICAgICBVc2UgdGhlIG5ldyBzdHJ1Y3R1cmUgJ0ltYWdlQnVmZmVyQmFja2VuZDo6UGFy
YW1ldGVycycuCisKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6Y2xl
YXJCYWNrZW5kKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJQ
cm94eTo6Y3JlYXRlQmFja2VuZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUlt
YWdlQnVmZmVyUHJveHk6OmRpZEZsdXNoKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlSW1hZ2VCdWZmZXJQcm94eTo6c2l6ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUltYWdlQnVmZmVyUHJveHk6OnJlbmRlcmluZ01vZGUgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlclByb3h5Ojpjb2xvclNwYWNlIGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6
cGl4ZWxGb3JtYXQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICBUaGVzZSBmdW5jdGlvbnMgYXJl
IG5vdyBpbXBsZW1lbnRlZCBpbiBDb25jcmV0ZUltYWdlQnVmZmVyLgorCisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUltYWdlQnVmZmVyUHJveHk6OnN1Ym1pdERpc3BsYXlMaXN0KTogRGVsZXRlZC4K
KyAgICAgICAgc3VibWl0RGlzcGxheUxpc3QoKSBpcyBub3cgdmlydHVhbC4KKworICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6cmVlc3RhYmxp
c2hHUFVQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eTo6d2FpdEZvckRpZENyZWF0ZUltYWdlQnVmZmVyQmFja2VuZCk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Y3JlYXRlSW1hZ2VCdWZm
ZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmRpZENy
ZWF0ZUltYWdlQnVmZmVyQmFja2VuZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eTo6ZGlkRmx1c2gpOgorICAgICAgICAoV2ViS2l0OjpyZWNyZWF0ZUltYWdl
QnVmZmVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5Ojp3YWl0Rm9ySW1hZ2VCdWZmZXJCYWNrZW5kV2FzQ3JlYXRlZCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6aW1hZ2VCdWZmZXJC
YWNrZW5kV2FzQ3JlYXRlZCk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lmg6CisgICAgICAgIE5vIG5lZWQgdG8g
Y2FzdCB0aGUgSW1hZ2VCdWZmZXIgdG8gUmVtb3RlSW1hZ2VCdWZmZXJQcm94eSBzaW5jZSBhbGwg
d2hhdAorICAgICAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkgbmVlZHMgY2FuIGJlIGFj
Y2Vzc2VkIHRocm91Z2ggdGhlIGJhc2UgY2xhc3MuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkubWVzc2FnZXMuaW46CisgICAg
ICAgIFJlbmFtZSAnSW1hZ2VCdWZmZXJCYWNrZW5kV2FzQ3JlYXRlZCcgdG8gJ0RpZENyZWF0ZUlt
YWdlQnVmZmVyQmFja2VuZCcKKyAgICAgICAgdG8gYmUgY29uc2lzdGVudCB3aXRoICdEaWRGbHVz
aCcuIE5vIG5lZWQgdG8gcGFzcyB0aGUgY3JlYXRpb24gcGFyYW1ldGVycworICAgICAgICBzaW5j
ZSB0aGV5IHNldCBpbiB0aGUgQ29uY3JldGVJbWFnZUJ1ZmZlci4gTm8gbmVlZCB0byBwYXNzIHRo
ZSBiYWNrZW5kU2l6ZQorICAgICAgICBzaW5jZSBpdCBjYW4gYmUgcmV0cmlldmVkIHRocm91Z2gg
dGhlIGJhY2tlbmQgaXRzZWxmLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
Y29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGUpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVh
YmxlSU9TdXJmYWNlQmFja2VuZC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFja2VuZC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OkltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFja2Vu
ZDo6Y3JlYXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFn
ZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQuaDoKKyAgICAgICAgVXNlIHRo
ZSBuZXcgc3RydWN0dXJlICdJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnMnLgorCiAyMDIw
LTEyLTA0ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9T
XSBQcm92aWRlIGEgY29udGV4dCBtZW51IGFjdGlvbiB0byBwZXJmb3JtIGFjY2Vzc2liaWxpdHkg
aW1hZ2UgZXh0cmFjdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFr
ZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggZDU0NDgzNzhiOTk0MWM0NzE5
ODkwNjY1MGEzNTk1NjVlMDYxYWI3NS4uZjU4N2RhNmM4OTM2ODkzYWYxZmU4MTkwZDkyMTM0NTMy
MjAwOWQyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9T
b3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC0xMjc1LDYgKzEyNzUsNyBAQCBzZXQoV2Vi
Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0LmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3REcmF3R2x5cGhzUmVjb3JkZXIuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0LmgKKyAgICBwbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RGbHVzaElkZW50aWZpZXIuaAogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEltYWdlQnVmZmVyLmgKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmgK
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlwZS5o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggODU5YmY1NmQyMjM0YWM1ZTkxOWI4NDRkMTI0MmU2YzJiMjQyZDBkNy4uMWZiMjg3YWMx
ZGY2MTgyZmE1N2QzMGI0NTdlYTcxMGJjNzYyMTY2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjE4Miw2ICsyMTgyLDcgQEAK
IAkJNzIxNDQzMzQyMjNFQzkxNjAwRjEyRkY3IC8qIFNWR1Byb3BlcnR5T3duZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1RUU1MzYwMjIzQjJBMjEw
MEZCQTk0NCAvKiBTVkdQcm9wZXJ0eU93bmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzIxQjQ5NzQyNTEyQkEzQjAwRkU5RDNCIC8qIEltYWdl
Qml0bWFwQmFja2luZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNzIxQjQ5NzAyNTEyQUMwNDAwRkU5RDNCIC8qIEltYWdlQml0bWFwQmFja2luZy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcyMjgzRjBF
MjMwQjI2OEMwMEY1RDgyOCAvKiBJbWFnZVBhaW50aW5nT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzJDMThBM0YyMzBCMDRCNzAwNjg0N0M3
IC8qIEltYWdlUGFpbnRpbmdPcHRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzI0MkFDOTcyNTc1OEZFMTAwNUE5Q0YxIC8qIERpc3BsYXlM
aXN0Rmx1c2hJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3MjQyQUM5NTI1NzU4RkUwMDA1QTlDRjEgLyogRGlzcGxheUxpc3RGbHVzaElk
ZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk3MjRFRDMzMjFBM0E4QjIzMDBGNUYxM0MgLyogSlNFWFRCbGVuZE1pbk1heC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI0RUQzMzAxQTNBOEIy
MzAwRjVGMTNDIC8qIEpTRVhUQmxlbmRNaW5NYXguaCAqLzsgfTsKIAkJNzI0RUU1NTAxREM4MEQ3
RjAwQTkxRkZCIC8qIEFjdGl2aXR5U3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDcyNEVFNTRFMURDN0YyNUIwMEE5MUZGQiAvKiBBY3Rpdml0eVN0
YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
NzI0RUU1NTExREM4MEQ4NDAwQTkxRkZCIC8qIEFjdGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI0RUU1NEYx
REM3RjI1QjAwQTkxRkZCIC8qIEFjdGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZlci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMDA2NCw2ICsxMDA2
NSw3IEBACiAJCTcyMUI0OTZGMjUxMkFDMDQwMEZFOUQzQiAvKiBJbWFnZUJpdG1hcEJhY2tpbmcu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW1hZ2VCaXRtYXBCYWNraW5nLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzIxQjQ5NzAyNTEyQUMwNDAwRkU5RDNCIC8qIEltYWdlQml0
bWFwQmFja2luZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbWFnZUJpdG1hcEJhY2tpbmcuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzIyQTgxNUMyMzhGRDUwNTAwQzAwNTgzIC8qIEFuaW1h
dGlvbkZyYW1lUmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBbmltYXRpb25GcmFtZVJhdGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzI0MkFDOTUyNTc1OEZFMDAwNUE5Q0YxIC8qIERp
c3BsYXlMaXN0Rmx1c2hJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IERpc3BsYXlMaXN0Rmx1c2hJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTcyNEVEMzI5MUEzQTdFNTQwMEY1RjEzQyAvKiBFWFRCbGVuZE1pbk1heC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFWFRCbGVuZE1pbk1heC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyNEVEMzJBMUEzQTdFNTQwMEY1RjEzQyAvKiBF
WFRCbGVuZE1pbk1heC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFWFRCbGVu
ZE1pbk1heC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjRFRDMyQjFBM0E3RTU0
MDBGNUYxM0MgLyogRVhUQmxlbmRNaW5NYXguaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEVY
VEJsZW5kTWluTWF4LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE3ODExLDYg
KzE3ODEzLDcgQEAKIAkJCQkxQ0FGNTZERTI1MzAyNDVBMDAxN0I0NzIgLyogRGlzcGxheUxpc3RE
cmF3R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5jcHAgKi8sCiAJCQkJNTVDMEEyOTUyM0ZFMkNFMDAw
RjJDQjkzIC8qIERpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuY3BwICovLAogCQkJCTcyRUEwOUY5
MjNGQ0NDNkEwMDg1MDRBNSAvKiBEaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0LmggKi8sCisJCQkJ
NzI0MkFDOTUyNTc1OEZFMDAwNUE5Q0YxIC8qIERpc3BsYXlMaXN0Rmx1c2hJZGVudGlmaWVyLmgg
Ki8sCiAJCQkJNzJFQTA5RjcyM0ZDQ0IzRDAwODUwNEE1IC8qIERpc3BsYXlMaXN0SW1hZ2VCdWZm
ZXIuaCAqLywKIAkJCQlGNDIyQjhCNjI1M0Y3MDY1MDA0RTc3RTggLyogRGlzcGxheUxpc3RJdGVt
QnVmZmVyLmNwcCAqLywKIAkJCQlGNDIyQjhCNTI1M0Y3MDY1MDA0RTc3RTggLyogRGlzcGxheUxp
c3RJdGVtQnVmZmVyLmggKi8sCkBAIC0zMTcwOCw2ICszMTcxMSw3IEBACiAJCQkJMEZFNUZCRDMx
QzNERDUxRTAwMDdBMkNBIC8qIERpc3BsYXlMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQ0FG
NTZEQjI1MzAxQUM4MDAxN0I0NzIgLyogRGlzcGxheUxpc3REcmF3R2x5cGhzUmVjb3JkZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCTU1QUQwOTQwMjQwODk2NDAwMERFNEQyRiAvKiBEaXNwbGF5TGlz
dERyYXdpbmdDb250ZXh0LmggaW4gSGVhZGVycyAqLywKKwkJCQk3MjQyQUM5NzI1NzU4RkUxMDA1
QTlDRjEgLyogRGlzcGxheUxpc3RGbHVzaElkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTU1QUQwOTNFMjQwODk2MzUwMERFNEQyRiAvKiBEaXNwbGF5TGlzdEltYWdlQnVmZmVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQlGNEQ0MEJDOTI1NTQ2M0JGMDA3MjEzNDkgLyogRGlzcGxheUxpc3RJ
dGVtQnVmZmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkU1RkJENTFDM0RENTFFMDAwN0EyQ0Eg
LyogRGlzcGxheUxpc3RJdGVtcy5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmgKaW5kZXggN2U2
ZDkzZTc2MGE3ZmEwODBhYWViNGYzNmUzYzNhOTQ3M2IxMDQwZC4uZDdiMGIxYTdmOTNkOTEzNGM5
ZGNlYjNkMjc4ZDk2MmVkOTZjODI4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaApAQCAtMzYsMzEgKzM2LDQzIEBA
IHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJbWFnZUJ1ZmZlclR5cGUgPSBDb25jcmV0
ZUltYWdlQnVmZmVyLCB0eXBlbmFtZS4uLiBBcmd1bWVudHM+CiAgICAgc3RhdGljIFJlZlB0cjxJ
bWFnZUJ1ZmZlclR5cGU+IGNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29s
dXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1h
dCwgY29uc3QgSG9zdFdpbmRvdyogaG9zdFdpbmRvdywgQXJndW1lbnRzJiYuLi4gYXJndW1lbnRz
KQogICAgIHsKLSAgICAgICAgYXV0byBiYWNrZW5kID0gQmFja2VuZFR5cGU6OmNyZWF0ZShzaXpl
LCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0LCBob3N0V2luZG93KTsK
KyAgICAgICAgYXV0byBwYXJhbWV0ZXJzID0gSW1hZ2VCdWZmZXJCYWNrZW5kOjpQYXJhbWV0ZXJz
IHsgc2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCB9OworICAg
ICAgICBhdXRvIGJhY2tlbmQgPSBCYWNrZW5kVHlwZTo6Y3JlYXRlKHBhcmFtZXRlcnMsIGhvc3RX
aW5kb3cpOwogICAgICAgICBpZiAoIWJhY2tlbmQpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbWFnZUJ1ZmZlclR5cGUoV1RGTW92ZShi
YWNrZW5kKSwgc3RkOjpmb3J3YXJkPEFyZ3VtZW50cz4oYXJndW1lbnRzKS4uLikpOworICAgICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IEltYWdlQnVmZmVyVHlwZShwYXJhbWV0ZXJzLCBXVEZNb3Zl
KGJhY2tlbmQpLCBzdGQ6OmZvcndhcmQ8QXJndW1lbnRzPihhcmd1bWVudHMpLi4uKSk7CiAgICAg
fQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSW1hZ2VCdWZmZXJUeXBlID0gQ29uY3JldGVJbWFn
ZUJ1ZmZlciwgdHlwZW5hbWUuLi4gQXJndW1lbnRzPgogICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VC
dWZmZXJUeXBlPiBjcmVhdGUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBjb25zdCBHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIEFyZ3VtZW50cyYmLi4uIGFyZ3VtZW50cykKICAgICB7Ci0gICAgICAg
IGF1dG8gYmFja2VuZCA9IEJhY2tlbmRUeXBlOjpjcmVhdGUoc2l6ZSwgY29udGV4dCk7CisgICAg
ICAgIGF1dG8gcGFyYW1ldGVycyA9IEltYWdlQnVmZmVyQmFja2VuZDo6UGFyYW1ldGVycyB7IHNp
emUsIDEsIENvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCB9OworICAgICAgICBh
dXRvIGJhY2tlbmQgPSBCYWNrZW5kVHlwZTo6Y3JlYXRlKHBhcmFtZXRlcnMsIGNvbnRleHQpOwog
ICAgICAgICBpZiAoIWJhY2tlbmQpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbWFnZUJ1ZmZlclR5cGUoV1RGTW92ZShiYWNrZW5kKSwg
c3RkOjpmb3J3YXJkPEFyZ3VtZW50cz4oYXJndW1lbnRzKS4uLikpOworICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IEltYWdlQnVmZmVyVHlwZShwYXJhbWV0ZXJzLCBXVEZNb3ZlKGJhY2tlbmQp
LCBzdGQ6OmZvcndhcmQ8QXJndW1lbnRzPihhcmd1bWVudHMpLi4uKSk7CiAgICAgfQogCi0gICAg
Ym9vbCBpc0FjY2VsZXJhdGVkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gQmFja2VuZFR5cGU6
OmlzQWNjZWxlcmF0ZWQ7IH0KKyAgICBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBCYWNrZW5kVHlwZTo6cmVuZGVyaW5nTW9kZTsgfQogICAgIGJv
b2wgY2FuTWFwQmFja2luZ1N0b3JlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gQmFja2VuZFR5
cGU6OmNhbk1hcEJhY2tpbmdTdG9yZTsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgQ29uY3JldGVJbWFn
ZUJ1ZmZlcihzdGQ6OnVuaXF1ZV9wdHI8QmFja2VuZFR5cGU+JiYgYmFja2VuZCA9IG51bGxwdHIs
IFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIg
PSBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI6OmdlbmVyYXRlKCkpCi0gICAgICAgIDogbV9i
YWNrZW5kKFdURk1vdmUoYmFja2VuZCkpCisgICAgQ29uY3JldGVJbWFnZUJ1ZmZlcihjb25zdCBJ
bWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIHN0ZDo6dW5pcXVlX3B0
cjxCYWNrZW5kVHlwZT4mJiBiYWNrZW5kID0gbnVsbHB0ciwgUmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciA9IFJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcjo6Z2VuZXJhdGUoKSkKKyAgICAgICAgOiBtX3BhcmFtZXRlcnMocGFyYW1ldGVycykK
KyAgICAgICAgLCBtX2JhY2tlbmQoV1RGTW92ZShiYWNrZW5kKSkKICAgICAgICAgLCBtX3JlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcihyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCiAgICAg
ewogICAgIH0KIAorICAgIHZvaWQgc2V0QmFja2VuZChzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZm
ZXJCYWNrZW5kPiYmIGJhY2tlbmQpIG92ZXJyaWRlCisgICAgeworICAgICAgICBBU1NFUlQoIW1f
YmFja2VuZCk7CisgICAgICAgIG1fYmFja2VuZCA9IHN0ZDo6dW5pcXVlX3B0cjxCYWNrZW5kVHlw
ZT4geyBzdGF0aWNfY2FzdDxCYWNrZW5kVHlwZSo+KGJhY2tlbmQucmVsZWFzZSgpKSB9OworICAg
IH0KKworICAgIHZvaWQgY2xlYXJCYWNrZW5kKCkgb3ZlcnJpZGUgeyBtX2JhY2tlbmQgPSBudWxs
cHRyOyB9CisKKyAgICBJbWFnZUJ1ZmZlckJhY2tlbmQqIGJhY2tlbmQoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBtX2JhY2tlbmQuZ2V0KCk7IH0KICAgICB2aXJ0dWFsIEJhY2tlbmRUeXBlKiBl
bnN1cmVCYWNrZW5kQ3JlYXRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2VuZC5nZXQoKTsgfQog
CiAgICAgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyOyB9CkBAIC03OSwxOSArOTEsMTEgQEAgcHJvdGVjdGVkOgogICAgICAgICB9CiAgICAgfQog
Ci0gICAgQWZmaW5lVHJhbnNmb3JtIGJhc2VUcmFuc2Zvcm0oKSBjb25zdCBvdmVycmlkZQotICAg
IHsKLSAgICAgICAgaWYgKGF1dG8qIGJhY2tlbmQgPSBlbnN1cmVCYWNrZW5kQ3JlYXRlZCgpKQot
ICAgICAgICAgICAgcmV0dXJuIGJhY2tlbmQtPmJhc2VUcmFuc2Zvcm0oKTsKLSAgICAgICAgcmV0
dXJuIHsgfTsKLSAgICB9Ci0KLSAgICBJbnRTaXplIGxvZ2ljYWxTaXplKCkgY29uc3Qgb3ZlcnJp
ZGUKLSAgICB7Ci0gICAgICAgIGlmIChhdXRvKiBiYWNrZW5kID0gZW5zdXJlQmFja2VuZENyZWF0
ZWQoKSkKLSAgICAgICAgICAgIHJldHVybiBiYWNrZW5kLT5sb2dpY2FsU2l6ZSgpOwotICAgICAg
ICByZXR1cm4geyB9OwotICAgIH0KKyAgICBJbnRTaXplIGxvZ2ljYWxTaXplKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gSW50U2l6ZShtX3BhcmFtZXRlcnMubG9naWNhbFNpemUpOyB9CisgICAg
ZmxvYXQgcmVzb2x1dGlvblNjYWxlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9wYXJhbWV0
ZXJzLnJlc29sdXRpb25TY2FsZTsgfQorICAgIENvbG9yU3BhY2UgY29sb3JTcGFjZSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIG1fcGFyYW1ldGVycy5jb2xvclNwYWNlOyB9CisgICAgUGl4ZWxG
b3JtYXQgcGl4ZWxGb3JtYXQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3BhcmFtZXRlcnMu
cGl4ZWxGb3JtYXQ7IH0KKyAgICBjb25zdCBJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnMm
IHBhcmFtZXRlcnMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3BhcmFtZXRlcnM7IH0KIAog
ICAgIEludFNpemUgYmFja2VuZFNpemUoKSBjb25zdCBvdmVycmlkZQogICAgIHsKQEAgLTEwMCwx
MSArMTA0LDExIEBAIHByb3RlY3RlZDoKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAKLSAg
ICBmbG9hdCByZXNvbHV0aW9uU2NhbGUoKSBjb25zdCBvdmVycmlkZQorICAgIEFmZmluZVRyYW5z
Zm9ybSBiYXNlVHJhbnNmb3JtKCkgY29uc3Qgb3ZlcnJpZGUKICAgICB7Ci0gICAgICAgIGlmIChh
dXRvKiBiYWNrZW5kID0gZW5zdXJlQmFja2VuZENyZWF0ZWQoKSkKLSAgICAgICAgICAgIHJldHVy
biBiYWNrZW5kLT5yZXNvbHV0aW9uU2NhbGUoKTsKLSAgICAgICAgcmV0dXJuIDE7CisgICAgICAg
IGlmIChCYWNrZW5kVHlwZTo6aXNPcmlnaW5BdFVwcGVyTGVmdENvcm5lcikKKyAgICAgICAgICAg
IHJldHVybiBBZmZpbmVUcmFuc2Zvcm0oMSwgMCwgMCwgLTEsIDAsIGxvZ2ljYWxTaXplKCkuaGVp
Z2h0KCkpOworICAgICAgICByZXR1cm4geyB9OwogICAgIH0KIAogICAgIHNpemVfdCBtZW1vcnlD
b3N0KCkgY29uc3Qgb3ZlcnJpZGUKQEAgLTI5Miw2ICsyOTYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAg
ICAgICAgICBiYWNrZW5kLT5yZWxlYXNlQnVmZmVyVG9Qb29sKCk7CiAgICAgfQogCisgICAgSW1h
Z2VCdWZmZXJCYWNrZW5kOjpQYXJhbWV0ZXJzIG1fcGFyYW1ldGVyczsKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8QmFja2VuZFR5cGU+IG1fYmFja2VuZDsKICAgICBSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIgbV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI7CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKaW5kZXggYjY2NjAzZDQ5YmMzNDBl
OGE4OThhMjIzNzMyMjFjNTNkMDBkYWIwOC4uOThiMjJlZThhZTA3ODQyNTlhNDZjYmIxZmIyZjRi
ZTAyZjEyMDhiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZUJ1ZmZlci5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAi
RGlzcGxheUxpc3RGbHVzaElkZW50aWZpZXIuaCIKICNpbmNsdWRlICJJbWFnZUJ1ZmZlckJhY2tl
bmQuaCIKICNpbmNsdWRlICJSZW5kZXJpbmdNb2RlLmgiCiAjaW5jbHVkZSAiUmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyLmgiCkBAIC02MywxMCArNjQsMTQgQEAgcHVibGljOgogICAgIAogICAg
IFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgfkltYWdlQnVmZmVyKCkgPSBkZWZhdWx0OwogCi0gICAg
dmlydHVhbCBib29sIGlzQWNjZWxlcmF0ZWQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lk
IHNldEJhY2tlbmQoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQmFja2VuZD4mJikgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBjbGVhckJhY2tlbmQoKSA9IDA7CisgICAgdmlydHVhbCBJbWFnZUJ1
ZmZlckJhY2tlbmQqIGJhY2tlbmQoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9CisKKyAgICB2
aXJ0dWFsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0
dWFsIGJvb2wgY2FuTWFwQmFja2luZ1N0b3JlKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgUmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpIGNv
bnN0IHsgcmV0dXJuIHsgfTsgfQotICAgIAorCiAgICAgdmlydHVhbCBHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGZsdXNoQ29udGV4dCgpID0g
MDsKIApAQCAtNzQsMTEgKzc5LDE3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgcHJlZmVy
c1ByZXBhcmF0aW9uRm9yRGlzcGxheSgpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCB2
b2lkIGZsdXNoRHJhd2luZ0NvbnRleHQoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZmx1c2hEcmF3
aW5nQ29udGV4dEFuZENvbW1pdCgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBzdWJtaXREaXNwbGF5
TGlzdChjb25zdCBEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmKSB7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgZGlkRmx1c2goRGlzcGxheUxpc3Q6OkZsdXNoSWRlbnRpZmllcikgeyB9CiAKLSAgICB2aXJ0
dWFsIEFmZmluZVRyYW5zZm9ybSBiYXNlVHJhbnNmb3JtKCkgY29uc3QgPSAwOwogICAgIHZpcnR1
YWwgSW50U2l6ZSBsb2dpY2FsU2l6ZSgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIEludFNpemUg
YmFja2VuZFNpemUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBmbG9hdCByZXNvbHV0aW9uU2Nh
bGUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBDb2xvclNwYWNlIGNvbG9yU3BhY2UoKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCgpIGNvbnN0ID0gMDsK
KyAgICB2aXJ0dWFsIGNvbnN0IEltYWdlQnVmZmVyQmFja2VuZDo6UGFyYW1ldGVycyYgcGFyYW1l
dGVycygpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgSW50U2l6ZSBiYWNrZW5kU2l6ZSgpIGNv
bnN0ID0gMDsKKyAgICB2aXJ0dWFsIEFmZmluZVRyYW5zZm9ybSBiYXNlVHJhbnNmb3JtKCkgY29u
c3QgPSAwOwogCiAgICAgdmlydHVhbCBzaXplX3QgbWVtb3J5Q29zdCgpIGNvbnN0ID0gMDsKICAg
ICB2aXJ0dWFsIHNpemVfdCBleHRlcm5hbE1lbW9yeUNvc3QoKSBjb25zdCA9IDA7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5k
LmNwcAppbmRleCA3ZjBmZTllNmQ5NjZlNzRiNDVmODVhYWQwZTNiMmZiODRkOTQ1MGI5Li45Mzk0
ZTdiZmY0MjliYzIxZWZjZGYzYjE0MDExMWYxYWUyY2E5NDRkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5jcHAKQEAg
LTMxLDEyICszMSw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotSW1hZ2VCdWZmZXJCYWNr
ZW5kOjpJbWFnZUJ1ZmZlckJhY2tlbmQoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29u
c3QgSW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFj
ZSBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCkKLSAgICA6IG1fbG9naWNhbFNp
emUobG9naWNhbFNpemUpCi0gICAgLCBtX2JhY2tlbmRTaXplKGJhY2tlbmRTaXplKQotICAgICwg
bV9yZXNvbHV0aW9uU2NhbGUocmVzb2x1dGlvblNjYWxlKQotICAgICwgbV9jb2xvclNwYWNlKGNv
bG9yU3BhY2UpCi0gICAgLCBtX3BpeGVsRm9ybWF0KHBpeGVsRm9ybWF0KQorSW1hZ2VCdWZmZXJC
YWNrZW5kOjpJbWFnZUJ1ZmZlckJhY2tlbmQoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycykK
KyAgICA6IG1fcGFyYW1ldGVycyhwYXJhbWV0ZXJzKQogewogfQogCkBAIC05OSwxNSArOTUsMTUg
QEAgdm9pZCBJbWFnZUJ1ZmZlckJhY2tlbmQ6OmNvbnZlcnRUb0x1bWluYW5jZU1hc2soKQogCiBW
ZWN0b3I8dWludDhfdD4gSW1hZ2VCdWZmZXJCYWNrZW5kOjp0b0JHUkFEYXRhKHZvaWQqIGRhdGEp
IGNvbnN0CiB7Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3VsdCg0ICogbV9sb2dpY2FsU2l6ZS5h
cmVhKCkudW5zYWZlR2V0KCkpOwotICAgIHNpemVfdCBkZXN0Qnl0ZXNQZXJSb3cgPSBtX2xvZ2lj
YWxTaXplLndpZHRoKCkgKiA0OworICAgIFZlY3Rvcjx1aW50OF90PiByZXN1bHQoNCAqIGxvZ2lj
YWxTaXplKCkuYXJlYSgpLnVuc2FmZUdldCgpKTsKKyAgICBzaXplX3QgZGVzdEJ5dGVzUGVyUm93
ID0gbG9naWNhbFNpemUoKS53aWR0aCgpICogNDsKICAgICBzaXplX3Qgc3JjQnl0ZXNQZXJSb3cg
PSBieXRlc1BlclJvdygpOwogCiAgICAgdWludDhfdCogc3JjUm93cyA9IHJlaW50ZXJwcmV0X2Nh
c3Q8dWludDhfdCo+KGRhdGEpOwogCiAgICAgY29weUltYWdlUGl4ZWxzKAogICAgICAgICBBbHBo
YVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkLCBwaXhlbEZvcm1hdCgpLCBzcmNCeXRl
c1BlclJvdywgc3JjUm93cywKLSAgICAgICAgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVt
dWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6QkdSQTgsIGRlc3RCeXRlc1BlclJvdywgcmVzdWx0LmRh
dGEoKSwgbV9sb2dpY2FsU2l6ZSk7CisgICAgICAgIEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVu
cHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OkJHUkE4LCBkZXN0Qnl0ZXNQZXJSb3csIHJlc3Vs
dC5kYXRhKCksIGxvZ2ljYWxTaXplKCkpOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2Vu
ZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5k
LmgKaW5kZXggNjgwODQwNTJhMTVhMTQyN2Y1NmY3MzAxNTIxMmM4ZDY0ZDE5YmRhYS4uYjBmMjQw
MDUzYWYzNTFkZDg4YmE3M2EyNTc5ZDQ2Y2RlOGRhZTI5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmgKQEAgLTMyLDYg
KzMyLDcgQEAKICNpbmNsdWRlICJJbWFnZVBhaW50aW5nT3B0aW9ucy5oIgogI2luY2x1ZGUgIklu
dFJlY3QuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUxheWVyLmgiCisjaW5jbHVkZSAiUmVuZGVyaW5n
TW9kZS5oIgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CiAKQEAgLTc3LDYgKzc4LDEzIEBAIHB1YmxpYzoKIAogY2xhc3MgSW1hZ2VCdWZmZXJCYWNrZW5k
IHsKIHB1YmxpYzoKKyAgICBzdHJ1Y3QgUGFyYW1ldGVycyB7CisgICAgICAgIEZsb2F0U2l6ZSBs
b2dpY2FsU2l6ZTsKKyAgICAgICAgZmxvYXQgcmVzb2x1dGlvblNjYWxlOworICAgICAgICBDb2xv
clNwYWNlIGNvbG9yU3BhY2U7CisgICAgICAgIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0OworICAg
IH07CisKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5JbWFnZUJ1ZmZlckJhY2tlbmQoKSA9
IGRlZmF1bHQ7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgSW50U2l6ZSBjYWxjdWxhdGVC
YWNrZW5kU2l6ZShjb25zdCBGbG9hdFNpemUmLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUpOwpAQCAt
ODQsMTQgKzkyLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBmbHVzaENvbnRleHQoKSB7IH0KIAot
ICAgIEludFNpemUgbG9naWNhbFNpemUoKSBjb25zdCB7IHJldHVybiBtX2xvZ2ljYWxTaXplOyB9
Ci0gICAgSW50U2l6ZSBiYWNrZW5kU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2VuZFNpemU7
IH0KLSAgICBmbG9hdCByZXNvbHV0aW9uU2NhbGUoKSBjb25zdCB7IHJldHVybiBtX3Jlc29sdXRp
b25TY2FsZTsgfQotICAgIENvbG9yU3BhY2UgY29sb3JTcGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1f
Y29sb3JTcGFjZTsgfQotICAgIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0KCkgY29uc3QgeyByZXR1
cm4gbV9waXhlbEZvcm1hdDsgfQorICAgIHZpcnR1YWwgSW50U2l6ZSBiYWNrZW5kU2l6ZSgpIGNv
bnN0IHsgcmV0dXJuIHsgfTsgfQogCi0gICAgdmlydHVhbCBBZmZpbmVUcmFuc2Zvcm0gYmFzZVRy
YW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIEFmZmluZVRyYW5zZm9ybSgpOyB9Ci0gICAgdmlydHVh
bCBzaXplX3QgbWVtb3J5Q29zdCgpIGNvbnN0IHsgcmV0dXJuIDQgKiBtX2JhY2tlbmRTaXplLmFy
ZWEoKS51bnNhZmVHZXQoKTsgfQorICAgIHZpcnR1YWwgc2l6ZV90IG1lbW9yeUNvc3QoKSBjb25z
dCB7IHJldHVybiA0ICogYmFja2VuZFNpemUoKS5hcmVhKCkudW5zYWZlR2V0KCk7IH0KICAgICB2
aXJ0dWFsIHNpemVfdCBleHRlcm5hbE1lbW9yeUNvc3QoKSBjb25zdCB7IHJldHVybiAwOyB9CiAK
ICAgICB2aXJ0dWFsIFJlZlB0cjxOYXRpdmVJbWFnZT4gY29weU5hdGl2ZUltYWdlKEJhY2tpbmdT
dG9yZUNvcHkpIGNvbnN0ID0gMDsKQEAgLTEyNSwyNyArMTI4LDMyIEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgcmVsZWFzZUJ1ZmZlclRvUG9vbCgpIHsgfQogCiAgICAgdmlydHVhbCBzdGQ6
OnVuaXF1ZV9wdHI8VGhyZWFkU2FmZUltYWdlQnVmZmVyRmx1c2hlcj4gY3JlYXRlRmx1c2hlcigp
IHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICAKKwogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBp
c09yaWdpbkF0VXBwZXJMZWZ0Q29ybmVyID0gZmFsc2U7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBi
b29sIGlzQWNjZWxlcmF0ZWQgPSBmYWxzZTsKICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgY2Fu
TWFwQmFja2luZ1N0b3JlID0gdHJ1ZTsKKyAgICBzdGF0aWMgY29uc3RleHByIFJlbmRlcmluZ01v
ZGUgcmVuZGVyaW5nTW9kZSA9IFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQ7CiAKIHByb3Rl
Y3RlZDoKLSAgICBXRUJDT1JFX0VYUE9SVCBJbWFnZUJ1ZmZlckJhY2tlbmQoY29uc3QgRmxvYXRT
aXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29s
dXRpb25TY2FsZSwgQ29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQpOworICAgIFdFQkNPUkVfRVhQT1JU
IEltYWdlQnVmZmVyQmFja2VuZChjb25zdCBQYXJhbWV0ZXJzJik7CiAKLSAgICB2aXJ0dWFsIHVu
c2lnbmVkIGJ5dGVzUGVyUm93KCkgY29uc3QgeyByZXR1cm4gNCAqIG1fYmFja2VuZFNpemUud2lk
dGgoKTsgfQorICAgIHZpcnR1YWwgdW5zaWduZWQgYnl0ZXNQZXJSb3coKSBjb25zdCB7IHJldHVy
biA0ICogYmFja2VuZFNpemUoKS53aWR0aCgpOyB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PgogICAgIFQgdG9CYWNrZW5kQ29vcmRpbmF0ZXMoVCB0KSBjb25zdAogICAgIHsKICAgICAgICAg
c3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8VCwgSW50UG9pbnQ+Ojp2YWx1ZSB8fCBzdGQ6Omlz
X3NhbWU8VCwgSW50U2l6ZT46OnZhbHVlIHx8IHN0ZDo6aXNfc2FtZTxULCBJbnRSZWN0Pjo6dmFs
dWUpOwotICAgICAgICBpZiAobV9yZXNvbHV0aW9uU2NhbGUgIT0gMSkKLSAgICAgICAgICAgIHQu
c2NhbGUobV9yZXNvbHV0aW9uU2NhbGUpOworICAgICAgICBpZiAocmVzb2x1dGlvblNjYWxlKCkg
IT0gMSkKKyAgICAgICAgICAgIHQuc2NhbGUocmVzb2x1dGlvblNjYWxlKCkpOwogICAgICAgICBy
ZXR1cm4gdDsKICAgICB9CiAKLSAgICBJbnRSZWN0IGxvZ2ljYWxSZWN0KCkgY29uc3QgeyByZXR1
cm4gSW50UmVjdChJbnRQb2ludDo6emVybygpLCBtX2xvZ2ljYWxTaXplKTsgfTsKLSAgICBJbnRS
ZWN0IGJhY2tlbmRSZWN0KCkgY29uc3QgeyByZXR1cm4gSW50UmVjdChJbnRQb2ludDo6emVybygp
LCBtX2JhY2tlbmRTaXplKTsgfTsKKyAgICBJbnRTaXplIGxvZ2ljYWxTaXplKCkgY29uc3QgeyBy
ZXR1cm4gSW50U2l6ZShtX3BhcmFtZXRlcnMubG9naWNhbFNpemUpOyB9CisgICAgZmxvYXQgcmVz
b2x1dGlvblNjYWxlKCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0ZXJzLnJlc29sdXRpb25TY2Fs
ZTsgfQorICAgIENvbG9yU3BhY2UgY29sb3JTcGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1l
dGVycy5jb2xvclNwYWNlOyB9CisgICAgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQoKSBjb25zdCB7
IHJldHVybiBtX3BhcmFtZXRlcnMucGl4ZWxGb3JtYXQ7IH0KKworICAgIEludFJlY3QgbG9naWNh
bFJlY3QoKSBjb25zdCB7IHJldHVybiBJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIGxvZ2ljYWxT
aXplKCkpOyB9OworICAgIEludFJlY3QgYmFja2VuZFJlY3QoKSBjb25zdCB7IHJldHVybiBJbnRS
ZWN0KEludFBvaW50Ojp6ZXJvKCksIGJhY2tlbmRTaXplKCkpOyB9OwogCiAgICAgV0VCQ09SRV9F
WFBPUlQgdmlydHVhbCB2b2lkIGNvcHlJbWFnZVBpeGVscygKICAgICAgICAgQWxwaGFQcmVtdWx0
aXBsaWNhdGlvbiBzcmNBbHBoYUZvcm1hdCwgUGl4ZWxGb3JtYXQgc3JjUGl4ZWxGb3JtYXQsIHVu
c2lnbmVkIHNyY0J5dGVzUGVyUm93LCB1aW50OF90KiBzcmNSb3dzLApAQCAtMTU2LDExICsxNjQs
NyBAQCBwcm90ZWN0ZWQ6CiAgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPEltYWdlRGF0YT4gZ2V0
SW1hZ2VEYXRhKEFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBjb25zdCBJbnRS
ZWN0JiBzcmNSZWN0LCB2b2lkKiBkYXRhKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHB1dEltYWdlRGF0YShBbHBoYVByZW11bHRpcGxpY2F0aW9uIGlucHV0Rm9ybWF0LCBjb25zdCBJ
bWFnZURhdGEmLCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBv
aW50LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uIGRlc3RGb3JtYXQsIHZvaWQqIGRhdGEpOwogCi0g
ICAgSW50U2l6ZSBtX2xvZ2ljYWxTaXplOwotICAgIEludFNpemUgbV9iYWNrZW5kU2l6ZTsKLSAg
ICBmbG9hdCBtX3Jlc29sdXRpb25TY2FsZTsKLSAgICBDb2xvclNwYWNlIG1fY29sb3JTcGFjZTsK
LSAgICBQaXhlbEZvcm1hdCBtX3BpeGVsRm9ybWF0OworICAgIFBhcmFtZXRlcnMgbV9wYXJhbWV0
ZXJzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1JbWFnZUJ1ZmZlci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1JbWFnZUJ1ZmZlci5oCmluZGV4IGIwNWZh
NjUxNjk3MWQxNzY3MTMxZDU2YTQ2MzkzNTNlZjk0ZTQ5MjUuLjUyZGQ4M2NjOTNkNTU1M2IzNzll
NTg3ZDQzODVkNGY3ODA1OTQ0YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1BsYXRmb3JtSW1hZ2VCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybUltYWdlQnVmZmVyLmgKQEAgLTc1LDUgKzc1LDUgQEAgdXNp
bmcgRGlzcGxheUxpc3RBY2NlbGVyYXRlZEltYWdlQnVmZmVyID0gRGlzcGxheUxpc3Q6OkltYWdl
QnVmZmVyPEFjY2VsZXJhdGVkSW0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogU1BFQ0lBTEla
RV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpBY2NlbGVyYXRlZEltYWdlQnVmZmVyKQotICAg
IHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpJbWFnZUJ1ZmZlciYgYnVmZmVyKSB7
IHJldHVybiBidWZmZXIuaXNBY2NlbGVyYXRlZCgpOyB9CisgICAgc3RhdGljIGJvb2wgaXNUeXBl
KGNvbnN0IFdlYkNvcmU6OkltYWdlQnVmZmVyJiBidWZmZXIpIHsgcmV0dXJuIGJ1ZmZlci5yZW5k
ZXJpbmdNb2RlKCkgPT0gV2ViQ29yZTo6UmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQ7IH0KIFNQ
RUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5k
LmNwcAppbmRleCAxMmE1YjYwYTJlOTA0NmExOTU4OTJiYWY1ZGQ3ZWQ0OTYzM2IzZTc0Li5iM2Jm
ZDgxMjdiODdkMTY4OGVhYmI1Y2Y0YjJhNzFjMzM1OWNkMmQwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZm
ZXJDYWlyb0JhY2tlbmQuY3BwCkBAIC04MCw3ICs4MCw3IEBAIHZvaWQgSW1hZ2VCdWZmZXJDYWly
b0JhY2tlbmQ6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0
IEZsCiAgICAgfQogCiAgICAgaWYgKGF1dG8gaW1hZ2UgPSBjb3B5TmF0aXZlSW1hZ2UoJmRlc3RD
b250ZXh0ID09ICZjb250ZXh0KCkgPyBDb3B5QmFja2luZ1N0b3JlIDogRG9udENvcHlCYWNraW5n
U3RvcmUpKQotICAgICAgICBDYWlybzo6ZHJhd1BhdHRlcm4oKmRlc3RDb250ZXh0LnBsYXRmb3Jt
Q29udGV4dCgpLCBpbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpLCBtX2xvZ2ljYWxTaXplLCBk
ZXN0UmVjdCwgc3JjUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIG9wdGlvbnMpOworICAg
ICAgICBDYWlybzo6ZHJhd1BhdHRlcm4oKmRlc3RDb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLCBp
bWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpLCBsb2dpY2FsU2l6ZSgpLCBkZXN0UmVjdCwgc3Jj
UmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIG9wdGlvbnMpOwogfQogCiB2b2lkIEltYWdl
QnVmZmVyQ2Fpcm9CYWNrZW5kOjpjbGlwVG9NYXNrKEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRl
eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFj
a2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1
ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZC5jcHAKaW5kZXggMWNkMDc1NGIzOTE0M2FmNDI5
YjQ2ZDVkNzhlNDUxZjBkMWUwNzRjMy4uM2RhMTQ1NWViYTA2ZDY3OTRlMzMyNzAxN2RhYWZkNzli
YzU0NzJkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZh
Y2VCYWNrZW5kLmNwcApAQCAtNDEsMTMgKzQxLDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
V1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKEltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VC
YWNrZW5kKTsKIAotc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VC
YWNrZW5kPiBJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZDo6Y3JlYXRlKGNvbnN0
IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9y
U3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBjb25zdCBIb3N0V2luZG93KikKK3N0ZDo6
dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZD4gSW1hZ2VCdWZm
ZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiBwYXJh
bWV0ZXJzLCBjb25zdCBIb3N0V2luZG93KikKIHsKLSAgICBBU1NFUlQocGl4ZWxGb3JtYXQgPT0g
UGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBBU1NFUlQocGFyYW1ldGVycy5waXhlbEZvcm1hdCA9
PSBQaXhlbEZvcm1hdDo6QkdSQTgpOwogCiAgICAgc3RhdGljIGNhaXJvX3VzZXJfZGF0YV9rZXlf
dCBzX3N1cmZhY2VEYXRhS2V5OwogCi0gICAgSW50U2l6ZSBiYWNrZW5kU2l6ZSA9IGNhbGN1bGF0
ZUJhY2tlbmRTaXplKHNpemUsIHJlc29sdXRpb25TY2FsZSk7CisgICAgSW50U2l6ZSBiYWNrZW5k
U2l6ZSA9IGNhbGN1bGF0ZUJhY2tlbmRTaXplKHBhcmFtZXRlcnMubG9naWNhbFNpemUsIHBhcmFt
ZXRlcnMucmVzb2x1dGlvblNjYWxlKTsKICAgICBpZiAoYmFja2VuZFNpemUuaXNFbXB0eSgpIHx8
IGJhY2tlbmRTaXplLndpZHRoKCkgPiBjYWlyb01heEltYWdlU2l6ZSB8fCBiYWNrZW5kU2l6ZS5o
ZWlnaHQoKSA+IGNhaXJvTWF4SW1hZ2VTaXplKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApA
QCAtNjEsMTYgKzYxLDE2IEBAIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VT
dXJmYWNlQmFja2VuZD4gSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjCiAgICAgICAgIGZhc3RG
cmVlKGRhdGEpOwogICAgIH0pOwogCi0gICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1
ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZD4obmV3IEltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1
cmZhY2VCYWNrZW5kKHNpemUsIGJhY2tlbmRTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3Bh
Y2UsIHBpeGVsRm9ybWF0LCBXVEZNb3ZlKHN1cmZhY2UpKSk7CisgICAgcmV0dXJuIHN0ZDo6dW5p
cXVlX3B0cjxJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZD4obmV3IEltYWdlQnVm
ZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kKHBhcmFtZXRlcnMsIFdURk1vdmUoc3VyZmFjZSkp
KTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNr
ZW5kPiBJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZDo6Y3JlYXRlKGNvbnN0IEZs
b2F0U2l6ZSYgc2l6ZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0JikKK3N0ZDo6dW5pcXVlX3B0cjxJ
bWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZD4gSW1hZ2VCdWZmZXJDYWlyb0ltYWdl
U3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBjb25z
dCBHcmFwaGljc0NvbnRleHQmKQogewotICAgIHJldHVybiBJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VT
dXJmYWNlQmFja2VuZDo6Y3JlYXRlKHNpemUsIDEsIENvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9y
bWF0OjpCR1JBOCwgbnVsbHB0cik7CisgICAgcmV0dXJuIEltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1
cmZhY2VCYWNrZW5kOjpjcmVhdGUocGFyYW1ldGVycywgbnVsbHB0cik7CiB9CiAKLUltYWdlQnVm
ZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kOjpJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNl
QmFja2VuZChjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBJbnRTaXplJiBiYWNr
ZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFBp
eGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiYmIHN1cmZhY2Up
Ci0gICAgOiBJbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQobG9naWNhbFNpemUsIGJhY2tl
bmRTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0LCBXVEZNb3Zl
KHN1cmZhY2UpKQorSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQ6OkltYWdlQnVm
ZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMs
IFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+JiYgc3VyZmFjZSkKKyAgICA6IEltYWdlQnVmZmVyQ2Fp
cm9TdXJmYWNlQmFja2VuZChwYXJhbWV0ZXJzLCBXVEZNb3ZlKHN1cmZhY2UpKQogewogICAgIEFT
U0VSVChjYWlyb19zdXJmYWNlX2dldF90eXBlKG1fc3VyZmFjZS5nZXQoKSkgPT0gQ0FJUk9fU1VS
RkFDRV9UWVBFX0lNQUdFKTsKIH0KQEAgLTc5LDE2ICs3OSwxNiBAQCB2b2lkIEltYWdlQnVmZmVy
Q2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kOjpwbGF0Zm9ybVRyYW5zZm9ybUNvbG9yU3BhY2UoY29u
c3Qgc3RkOgogewogICAgIHVuc2lnbmVkIGNoYXIqIGRhdGFTcmMgPSBjYWlyb19pbWFnZV9zdXJm
YWNlX2dldF9kYXRhKG1fc3VyZmFjZS5nZXQoKSk7CiAgICAgaW50IHN0cmlkZSA9IGNhaXJvX2lt
YWdlX3N1cmZhY2VfZ2V0X3N0cmlkZShtX3N1cmZhY2UuZ2V0KCkpOwotICAgIGZvciAoaW50IHkg
PSAwOyB5IDwgbV9sb2dpY2FsU2l6ZS5oZWlnaHQoKTsgKyt5KSB7CisgICAgZm9yIChpbnQgeSA9
IDA7IHkgPCBsb2dpY2FsU2l6ZSgpLmhlaWdodCgpOyArK3kpIHsKICAgICAgICAgdW5zaWduZWQq
IHJvdyA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRyPHVuc2lnbmVkKj4oZGF0YVNyYyArIHN0cmlkZSAq
IHkpOwotICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8IG1fbG9naWNhbFNpemUud2lkdGgoKTsg
eCsrKSB7CisgICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgbG9naWNhbFNpemUoKS53aWR0aCgp
OyB4KyspIHsKICAgICAgICAgICAgIHVuc2lnbmVkKiBwaXhlbCA9IHJvdyArIHg7CiAgICAgICAg
ICAgICBhdXRvIHBpeGVsQ29tcG9uZW50cyA9IHVucHJlbXVsdGlwbGllZChhc1NSR0JBKFBhY2tl
ZENvbG9yOjpBUkdCIHsgKnBpeGVsIH0pKTsKICAgICAgICAgICAgIHBpeGVsQ29tcG9uZW50cyA9
IHsgbG9va1VwVGFibGVbcGl4ZWxDb21wb25lbnRzLnJlZF0sIGxvb2tVcFRhYmxlW3BpeGVsQ29t
cG9uZW50cy5ncmVlbl0sIGxvb2tVcFRhYmxlW3BpeGVsQ29tcG9uZW50cy5ibHVlXSwgcGl4ZWxD
b21wb25lbnRzLmFscGhhIH07CiAgICAgICAgICAgICAqcGl4ZWwgPSBQYWNrZWRDb2xvcjo6QVJH
QiB7IHByZW11bHRpcGxpZWRDZWlsaW5nKHBpeGVsQ29tcG9uZW50cykgfS52YWx1ZTsKICAgICAg
ICAgfQogICAgIH0KLSAgICBjYWlyb19zdXJmYWNlX21hcmtfZGlydHlfcmVjdGFuZ2xlKG1fc3Vy
ZmFjZS5nZXQoKSwgMCwgMCwgbV9sb2dpY2FsU2l6ZS53aWR0aCgpLCBtX2xvZ2ljYWxTaXplLmhl
aWdodCgpKTsKKyAgICBjYWlyb19zdXJmYWNlX21hcmtfZGlydHlfcmVjdGFuZ2xlKG1fc3VyZmFj
ZS5nZXQoKSwgMCwgMCwgbG9naWNhbFNpemUoKS53aWR0aCgpLCBsb2dpY2FsU2l6ZSgpLmhlaWdo
dCgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFj
ZUJhY2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdl
QnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kLmgKaW5kZXggZDE2ZDMzZWFjNDZjNWRmNjZm
YjhmYTJkOTU0OTEwZTJmOTExNWEwMy4uODY1Y2M2OWIyZDUzMzg1NDVmMzdlNDE5M2NiOTRmMTk4
MGJlNzNhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNl
QmFja2VuZC5oCkBAIC00MCwxMSArNDAsMTEgQEAgY2xhc3MgSW1hZ2VCdWZmZXJDYWlyb0ltYWdl
U3VyZmFjZUJhY2tlbmQgOiBwdWJsaWMgSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW4KICAg
ICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNr
ZW5kKTsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJm
YWNlQmFja2VuZCk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1
ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZD4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYsIGZs
b2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQsIGNvbnN0IEhvc3RX
aW5kb3cqKTsKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQ2Fpcm9JbWFn
ZVN1cmZhY2VCYWNrZW5kPiBjcmVhdGUoY29uc3QgRmxvYXRTaXplJiwgY29uc3QgR3JhcGhpY3ND
b250ZXh0Jik7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNhaXJvSW1h
Z2VTdXJmYWNlQmFja2VuZD4gY3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmLCBjb25zdCBIb3N0V2lu
ZG93Kik7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VT
dXJmYWNlQmFja2VuZD4gY3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmLCBjb25zdCBHcmFwaGljc0Nv
bnRleHQmKTsKIAogcHJpdmF0ZToKLSAgICBJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFj
a2VuZChjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBJbnRTaXplJiBiYWNrZW5k
U2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlLCBQaXhlbEZvcm1hdCwgUmVm
UHRyPGNhaXJvX3N1cmZhY2VfdD4mJik7CisgICAgSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFj
ZUJhY2tlbmQoY29uc3QgUGFyYW1ldGVycyYsIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+JiYpOwog
CiAgICAgdm9pZCBwbGF0Zm9ybVRyYW5zZm9ybUNvbG9yU3BhY2UoY29uc3Qgc3RkOjphcnJheTx1
aW50OF90LCAyNTY+JiBsb29rVXBUYWJsZSkgb3ZlcnJpZGU7CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZh
Y2VCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0lt
YWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZC5jcHAKaW5kZXggOWI4MjE2NGFlYTMzMDcxZTUz
NjFjNmZlMzliMWI4MjdjOWI2YjE1MC4uMGI3M2YxNGJhNzAwNWU1MjA1MGVkNTgyMTY0YTExNjM4
MDU0OTcxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQu
Y3BwCkBAIC00Myw4ICs0Myw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotSW1hZ2VCdWZm
ZXJDYWlyb1N1cmZhY2VCYWNrZW5kOjpJbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQoY29u
c3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50U2l6ZSYgYmFja2VuZFNpemUsIGZs
b2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBw
aXhlbEZvcm1hdCwgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4mJiBzdXJmYWNlKQotICAgIDogSW1h
Z2VCdWZmZXJDYWlyb0JhY2tlbmQobG9naWNhbFNpemUsIGJhY2tlbmRTaXplLCByZXNvbHV0aW9u
U2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0KQorSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VC
YWNrZW5kOjpJbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQoY29uc3QgUGFyYW1ldGVycyYg
cGFyYW1ldGVycywgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4mJiBzdXJmYWNlKQorICAgIDogSW1h
Z2VCdWZmZXJDYWlyb0JhY2tlbmQocGFyYW1ldGVycykKICAgICAsIG1fc3VyZmFjZShXVEZNb3Zl
KHN1cmZhY2UpKQogewogICAgIEFTU0VSVChjYWlyb19zdXJmYWNlX3N0YXR1cyhtX3N1cmZhY2Uu
Z2V0KCkpID09IENBSVJPX1NUQVRVU19TVUNDRVNTKTsKQEAgLTU5LDYgKzU5LDExIEBAIEdyYXBo
aWNzQ29udGV4dCYgSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kOjpjb250ZXh0KCkgY29u
c3QKICAgICByZXR1cm4gKm1fY29udGV4dDsKIH0KIAorSW50U2l6ZSBJbWFnZUJ1ZmZlckNhaXJv
U3VyZmFjZUJhY2tlbmQ6OmJhY2tlbmRTaXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4geyBjYWly
b19pbWFnZV9zdXJmYWNlX2dldF93aWR0aChtX3N1cmZhY2UuZ2V0KCkpLCBjYWlyb19pbWFnZV9z
dXJmYWNlX2dldF9oZWlnaHQobV9zdXJmYWNlLmdldCgpKSB9OworfQorCiB1bnNpZ25lZCBJbWFn
ZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQ6OmJ5dGVzUGVyUm93KCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfc3RyaWRlKG1fc3VyZmFjZS5nZXQoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1
ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZC5oCmluZGV4IDEyYWEyYjFj
ZTg4ZWU0MjY0NWZhNzcyZTY3OWY1ZDQxOTVhMjY3NDcuLjllOTNkZGU4NThlZjQzYjI4MmQ0Mzhj
YTVhNzY3ZmViY2JiZGRiY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNl
QmFja2VuZC5oCkBAIC00MCw2ICs0MCw4IEBAIGNsYXNzIEltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNl
QmFja2VuZCA6IHB1YmxpYyBJbWFnZUJ1ZmZlckNhaXJvQmFja2VuZCB7CiBwdWJsaWM6CiAgICAg
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KCkgY29uc3Qgb3ZlcnJpZGU7CiAKKyAgICBJbnRTaXpl
IGJhY2tlbmRTaXplKCkgY29uc3Qgb3ZlcnJpZGU7CisKICAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+
IGNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5KSBjb25zdCBvdmVycmlkZTsKIAogICAg
IFZlY3Rvcjx1aW50OF90PiB0b0JHUkFEYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CkBAIC00Nyw3ICs0
OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHB1dEltYWdlRGF0YShBbHBoYVByZW11bHRpcGxpY2F0
aW9uIGlucHV0Rm9ybWF0LCBjb25zdCBJbWFnZURhdGEmLCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0
LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uIGRlc3RG
b3JtYXQpIG92ZXJyaWRlOwogCiBwcm90ZWN0ZWQ6Ci0gICAgSW1hZ2VCdWZmZXJDYWlyb1N1cmZh
Y2VCYWNrZW5kKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEludFNpemUmIGJh
Y2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UsIFBpeGVsRm9ybWF0
LCBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiYmKTsKKyAgICBJbWFnZUJ1ZmZlckNhaXJvU3VyZmFj
ZUJhY2tlbmQoY29uc3QgUGFyYW1ldGVycyYsIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+JiYpOwog
CiAgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBjYWlyb1N1cmZhY2VDb2VyY2VUb0ltYWdlKCkgY29u
c3Q7CiAgICAgdW5zaWduZWQgYnl0ZXNQZXJSb3coKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCYWNr
ZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVy
Q0dCYWNrZW5kLmNwcAppbmRleCA1MDE3YmExMmM4YjQ4N2IwY2EwNmU1NDNiMTI5NjM2NWQ2ZGQy
YjJiLi41MzE4ZDBjM2UxOThhNmEwZTM5YWY0NjQ0MjMxMDNjMzU5NzBkNDA3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFja2Vu
ZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZm
ZXJDR0JhY2tlbmQuY3BwCkBAIC03OSw4ICs3OSw4IEBAIHZvaWQgSW1hZ2VCdWZmZXJDR0JhY2tl
bmQ6OnNldHVwQ29udGV4dCgpIGNvbnN0CiB7CiAgICAgLy8gVGhlIGluaXRpYWwgQ1RNIG1hdGNo
ZXMgRGlzcGxheUxpc3Q6OlJlY29yZGVyOjpjbGlwVG9EcmF3aW5nQ29tbWFuZHMoKSdzIGluaXRp
YWwgQ1RNLgogICAgIGNvbnRleHQoKS5zY2FsZShGbG9hdFNpemUoMSwgLTEpKTsKLSAgICBjb250
ZXh0KCkudHJhbnNsYXRlKDAsIC1tX2JhY2tlbmRTaXplLmhlaWdodCgpKTsKLSAgICBjb250ZXh0
KCkuYXBwbHlEZXZpY2VTY2FsZUZhY3RvcihtX3Jlc29sdXRpb25TY2FsZSk7CisgICAgY29udGV4
dCgpLnRyYW5zbGF0ZSgwLCAtYmFja2VuZFNpemUoKS5oZWlnaHQoKSk7CisgICAgY29udGV4dCgp
LmFwcGx5RGV2aWNlU2NhbGVGYWN0b3IocmVzb2x1dGlvblNjYWxlKCkpOwogfQogCiBzdGF0aWMg
UmV0YWluUHRyPENHSW1hZ2VSZWY+IGNyZWF0ZUNyb3BwZWRJbWFnZUlmTmVjZXNzYXJ5KENHSW1h
Z2VSZWYgaW1hZ2UsIGNvbnN0IEludFNpemUmIGJhY2tlbmRTaXplKQpAQCAtMTEyLDMxICsxMTIs
MzEgQEAgc3RhdGljIFJlZlB0cjxJbWFnZT4gY3JlYXRlQml0bWFwSW1hZ2VBZnRlclNjYWxpbmdJ
Zk5lZWRlZChSZWZQdHI8TmF0aXZlSW1hZ2U+JiYKIFJlZlB0cjxJbWFnZT4gSW1hZ2VCdWZmZXJD
R0JhY2tlbmQ6OmNvcHlJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvciwgUHJlc2Vy
dmVSZXNvbHV0aW9uIHByZXNlcnZlUmVzb2x1dGlvbikgY29uc3QKIHsKICAgICBSZWZQdHI8TmF0
aXZlSW1hZ2U+IGltYWdlOwotICAgIGlmIChtX3Jlc29sdXRpb25TY2FsZSA9PSAxIHx8IHByZXNl
cnZlUmVzb2x1dGlvbiA9PSBQcmVzZXJ2ZVJlc29sdXRpb246OlllcykKKyAgICBpZiAocmVzb2x1
dGlvblNjYWxlKCkgPT0gMSB8fCBwcmVzZXJ2ZVJlc29sdXRpb24gPT0gUHJlc2VydmVSZXNvbHV0
aW9uOjpZZXMpCiAgICAgICAgIGltYWdlID0gY29weU5hdGl2ZUltYWdlKGNvcHlCZWhhdmlvcik7
CiAgICAgZWxzZQogICAgICAgICBpbWFnZSA9IGNvcHlOYXRpdmVJbWFnZShEb250Q29weUJhY2tp
bmdTdG9yZSk7Ci0gICAgcmV0dXJuIGNyZWF0ZUJpdG1hcEltYWdlQWZ0ZXJTY2FsaW5nSWZOZWVk
ZWQoV1RGTW92ZShpbWFnZSksIG1fbG9naWNhbFNpemUsIG1fYmFja2VuZFNpemUsIG1fcmVzb2x1
dGlvblNjYWxlLCBwcmVzZXJ2ZVJlc29sdXRpb24pOworICAgIHJldHVybiBjcmVhdGVCaXRtYXBJ
bWFnZUFmdGVyU2NhbGluZ0lmTmVlZGVkKFdURk1vdmUoaW1hZ2UpLCBsb2dpY2FsU2l6ZSgpLCBi
YWNrZW5kU2l6ZSgpLCByZXNvbHV0aW9uU2NhbGUoKSwgcHJlc2VydmVSZXNvbHV0aW9uKTsKIH0K
IAogUmVmUHRyPEltYWdlPiBJbWFnZUJ1ZmZlckNHQmFja2VuZDo6c2lua0ludG9JbWFnZShQcmVz
ZXJ2ZVJlc29sdXRpb24gcHJlc2VydmVSZXNvbHV0aW9uKQogewotICAgIHJldHVybiBjcmVhdGVC
aXRtYXBJbWFnZUFmdGVyU2NhbGluZ0lmTmVlZGVkKHNpbmtJbnRvTmF0aXZlSW1hZ2UoKSwgbV9s
b2dpY2FsU2l6ZSwgbV9iYWNrZW5kU2l6ZSwgbV9yZXNvbHV0aW9uU2NhbGUsIHByZXNlcnZlUmVz
b2x1dGlvbik7CisgICAgcmV0dXJuIGNyZWF0ZUJpdG1hcEltYWdlQWZ0ZXJTY2FsaW5nSWZOZWVk
ZWQoc2lua0ludG9OYXRpdmVJbWFnZSgpLCBsb2dpY2FsU2l6ZSgpLCBiYWNrZW5kU2l6ZSgpLCBy
ZXNvbHV0aW9uU2NhbGUoKSwgcHJlc2VydmVSZXNvbHV0aW9uKTsKIH0KIAogdm9pZCBJbWFnZUJ1
ZmZlckNHQmFja2VuZDo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIEZsb2F0UmVjdCBzcmNSZWN0U2NhbGVk
ID0gc3JjUmVjdDsKLSAgICBzcmNSZWN0U2NhbGVkLnNjYWxlKG1fcmVzb2x1dGlvblNjYWxlKTsK
KyAgICBzcmNSZWN0U2NhbGVkLnNjYWxlKHJlc29sdXRpb25TY2FsZSgpKTsKIAogICAgIGlmIChh
dXRvIGltYWdlID0gY29weU5hdGl2ZUltYWdlKCZkZXN0Q29udGV4dCA9PSAmY29udGV4dCgpID8g
Q29weUJhY2tpbmdTdG9yZSA6IERvbnRDb3B5QmFja2luZ1N0b3JlKSkKLSAgICAgICAgZGVzdENv
bnRleHQuZHJhd05hdGl2ZUltYWdlKCppbWFnZSwgbV9iYWNrZW5kU2l6ZSwgZGVzdFJlY3QsIHNy
Y1JlY3RTY2FsZWQsIG9wdGlvbnMpOworICAgICAgICBkZXN0Q29udGV4dC5kcmF3TmF0aXZlSW1h
Z2UoKmltYWdlLCBiYWNrZW5kU2l6ZSgpLCBkZXN0UmVjdCwgc3JjUmVjdFNjYWxlZCwgb3B0aW9u
cyk7CiB9CiAKIHZvaWQgSW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OmRyYXdQYXR0ZXJuKEdyYXBoaWNz
Q29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3Jt
LCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25z
dCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBGbG9hdFJlY3QgYWRqdXN0
ZWRTcmNSZWN0ID0gc3JjUmVjdDsKLSAgICBhZGp1c3RlZFNyY1JlY3Quc2NhbGUobV9yZXNvbHV0
aW9uU2NhbGUpOworICAgIGFkanVzdGVkU3JjUmVjdC5zY2FsZShyZXNvbHV0aW9uU2NhbGUoKSk7
CiAKICAgICBpZiAoYXV0byBpbWFnZSA9IGNvcHlJbWFnZSgmZGVzdENvbnRleHQgPT0gJmNvbnRl
eHQoKSA/IENvcHlCYWNraW5nU3RvcmUgOiBEb250Q29weUJhY2tpbmdTdG9yZSkpCiAgICAgICAg
IGltYWdlLT5kcmF3UGF0dGVybihkZXN0Q29udGV4dCwgZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVj
dCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIG9wdGlvbnMpOwpAQCAtMTU5LDEx
ICsxNTksNiBAQCB2b2lkIEltYWdlQnVmZmVyQ0dCYWNrZW5kOjpjbGlwVG9NYXNrKEdyYXBoaWNz
Q29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UgogICAgIENHQ29udGV4dFRyYW5zbGF0
ZUNUTShjZ0NvbnRleHQsIC1kZXN0UmVjdC54KCksIC1kZXN0UmVjdC5tYXhZKCkpOwogfQogCi1B
ZmZpbmVUcmFuc2Zvcm0gSW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OmJhc2VUcmFuc2Zvcm0oKSBjb25z
dAotewotICAgIHJldHVybiBBZmZpbmVUcmFuc2Zvcm0oMSwgMCwgMCwgLTEsIDAsIG1fbG9naWNh
bFNpemUuaGVpZ2h0KCkpOwotfQotCiBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBJbWFnZUJ1ZmZlckNH
QmFja2VuZDo6dG9DRkRhdGEoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91Ymxl
PiBxdWFsaXR5LCBQcmVzZXJ2ZVJlc29sdXRpb24gcHJlc2VydmVSZXNvbHV0aW9uKSBjb25zdAog
ewogICAgIEFTU0VSVChNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEltYWdlTUlNRVR5cGVG
b3JFbmNvZGluZyhtaW1lVHlwZSkpOwpAQCAtMTkwLDcgKzE4NSw3IEBAIFJldGFpblB0cjxDRkRh
dGFSZWY+IEltYWdlQnVmZmVyQ0dCYWNrZW5kOjp0b0NGRGF0YShjb25zdCBTdHJpbmcmIG1pbWVU
eXBlLCBPcHRpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgICAgICBpbWFnZSA9
IGFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZShwaXhlbEFycmF5RGltZW5zaW9ucy53aWR0aCgpLCBwaXhl
bEFycmF5RGltZW5zaW9ucy5oZWlnaHQoKSwgOCwgMzIsIDQgKiBwaXhlbEFycmF5RGltZW5zaW9u
cy53aWR0aCgpLCBzUkdCQ29sb3JTcGFjZVJlZigpLCBrQ0dCaXRtYXBCeXRlT3JkZXJEZWZhdWx0
IHwga0NHSW1hZ2VBbHBoYU5vbmVTa2lwTGFzdCwgZGF0YVByb3ZpZGVyLmdldCgpLCAwLCBmYWxz
ZSwga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVsdCkpOwotICAgIH0gZWxzZSBpZiAobV9yZXNvbHV0
aW9uU2NhbGUgPT0gMSB8fCBwcmVzZXJ2ZVJlc29sdXRpb24gPT0gUHJlc2VydmVSZXNvbHV0aW9u
OjpZZXMpIHsKKyAgICB9IGVsc2UgaWYgKHJlc29sdXRpb25TY2FsZSgpID09IDEgfHwgcHJlc2Vy
dmVSZXNvbHV0aW9uID09IFByZXNlcnZlUmVzb2x1dGlvbjo6WWVzKSB7CiAgICAgICAgIGltYWdl
ID0gY29weU5hdGl2ZUltYWdlKENvcHlCYWNraW5nU3RvcmUpLT5wbGF0Zm9ybUltYWdlKCk7CiAg
ICAgICAgIGltYWdlID0gY3JlYXRlQ3JvcHBlZEltYWdlSWZOZWNlc3NhcnkoaW1hZ2UuZ2V0KCks
IGJhY2tlbmRTaXplKCkpOwogICAgIH0gZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JhY2tlbmQuaAppbmRleCAx
ZTA3ZmRjNjQ0M2ZkYzA4ZjZhZjYzZTA4ODNlYjMyMDUzZTRkNTk3Li5iMjZhZTA4NDM0N2I5ZTIz
MzQwNDYwMGMyZWE0YTRhMjhiMWUxYmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCYWNrZW5kLmgKQEAgLTQxLDgg
KzQxLDYgQEAgcHVibGljOgogICAgIAogICAgIHZvaWQgY2xpcFRvTWFzayhHcmFwaGljc0NvbnRl
eHQmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0KSBvdmVycmlkZTsKIAotICAgIEFmZmluZVRy
YW5zZm9ybSBiYXNlVHJhbnNmb3JtKCkgY29uc3Qgb3ZlcnJpZGU7Ci0KICAgICBTdHJpbmcgdG9E
YXRhVVJMKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSwg
UHJlc2VydmVSZXNvbHV0aW9uKSBjb25zdCBvdmVycmlkZTsKICAgICBWZWN0b3I8dWludDhfdD4g
dG9EYXRhKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSkg
Y29uc3Qgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmNwcAppbmRl
eCBmMjE4ZjI3ZjJmNTNjNWE0YWRiYjZhNWFlZGMzYzQ5ZTQ4Y2Q2M2E0Li45ZDUzOGJlZmNkOGUw
MzhmMWExYTk3YTJhNzc4NDEzMGYzMjhjYTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJh
Y2tlbmQuY3BwCkBAIC0zOSwxMSArMzksMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZf
TUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQpOwogCi1z
dGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ+IEltYWdlQnVmZmVyQ0dC
aXRtYXBCYWNrZW5kOjpjcmVhdGUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0
aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgQ0dDb2xvclNwYWNlUmVmIGNnQ29sb3JT
cGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIGNvbnN0IEhvc3RXaW5kb3cqKQorc3RkOjp1
bmlxdWVfcHRyPEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kPiBJbWFnZUJ1ZmZlckNHQml0bWFw
QmFja2VuZDo6Y3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIENHQ29sb3JTcGFj
ZVJlZiBjZ0NvbG9yU3BhY2UsIGNvbnN0IEhvc3RXaW5kb3cqKQogewotICAgIEFTU0VSVChwaXhl
bEZvcm1hdCA9PSBQaXhlbEZvcm1hdDo6QkdSQTgpOworICAgIEFTU0VSVChwYXJhbWV0ZXJzLnBp
eGVsRm9ybWF0ID09IFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAKLSAgICBJbnRTaXplIGJhY2tlbmRT
aXplID0gY2FsY3VsYXRlQmFja2VuZFNpemUoc2l6ZSwgcmVzb2x1dGlvblNjYWxlKTsKKyAgICBJ
bnRTaXplIGJhY2tlbmRTaXplID0gY2FsY3VsYXRlQmFja2VuZFNpemUocGFyYW1ldGVycy5sb2dp
Y2FsU2l6ZSwgcGFyYW1ldGVycy5yZXNvbHV0aW9uU2NhbGUpOwogICAgIGlmIChiYWNrZW5kU2l6
ZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC03MCwyNCArNzAsMjQg
QEAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kPiBJbWFnZUJ1ZmZl
ckNHQml0bWFwQmFja2VuZDo6Y3JlYXRlKGMKIAogICAgIGF1dG8gZGF0YVByb3ZpZGVyID0gYWRv
cHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZVdpdGhEYXRhKDAsIGRhdGEsIG51bUJ5dGVzLCByZWxl
YXNlSW1hZ2VEYXRhKSk7CiAKLSAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVy
Q0dCaXRtYXBCYWNrZW5kPihuZXcgSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQoc2l6ZSwgYmFj
a2VuZFNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQsIGRhdGEs
IFdURk1vdmUoZGF0YVByb3ZpZGVyKSwgV1RGTW92ZShjb250ZXh0KSkpOworICAgIHJldHVybiBz
dGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ+KG5ldyBJbWFnZUJ1ZmZl
ckNHQml0bWFwQmFja2VuZChwYXJhbWV0ZXJzLCBkYXRhLCBXVEZNb3ZlKGRhdGFQcm92aWRlciks
IFdURk1vdmUoY29udGV4dCkpKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQ0dC
aXRtYXBCYWNrZW5kPiBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y3JlYXRlKGNvbnN0IEZs
b2F0U2l6ZSYgc2l6ZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQorc3RkOjp1bmlx
dWVfcHRyPEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kPiBJbWFnZUJ1ZmZlckNHQml0bWFwQmFj
a2VuZDo6Y3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIGNvbnN0IEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCkKIHsKLSAgICBpZiAoYXV0byBjZ0NvbG9yU3BhY2UgPSBjb250ZXh0
Q29sb3JTcGFjZShjb250ZXh0KSkKLSAgICAgICAgcmV0dXJuIEltYWdlQnVmZmVyQ0dCaXRtYXBC
YWNrZW5kOjpjcmVhdGUoc2l6ZSwgMSwgQ29sb3JTcGFjZTo6U1JHQiwgY2dDb2xvclNwYWNlLmdl
dCgpLCBQaXhlbEZvcm1hdDo6QkdSQTgsIG51bGxwdHIpOwotICAgIAotICAgIHJldHVybiBJbWFn
ZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y3JlYXRlKHNpemUsIDEsIENvbG9yU3BhY2U6OlNSR0Is
IFBpeGVsRm9ybWF0OjpCR1JBOCwgbnVsbHB0cik7CisgICAgaWYgKGF1dG8gY2dDb2xvclNwYWNl
ID0gY29udGV4dC5oYXNQbGF0Zm9ybUNvbnRleHQoKSA/IGNvbnRleHRDb2xvclNwYWNlKGNvbnRl
eHQpIDogbnVsbHB0cikKKyAgICAgICAgcmV0dXJuIEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5k
OjpjcmVhdGUocGFyYW1ldGVycywgY2dDb2xvclNwYWNlLmdldCgpLCBudWxscHRyKTsKKworICAg
IHJldHVybiBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y3JlYXRlKHBhcmFtZXRlcnMsIG51
bGxwdHIpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ+
IEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpjcmVhdGUoY29uc3QgRmxvYXRTaXplJiBzaXpl
LCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgUGl4ZWxGb3Jt
YXQgcGl4ZWxGb3JtYXQsIGNvbnN0IEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cpCitzdGQ6OnVuaXF1
ZV9wdHI8SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ+IEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNr
ZW5kOjpjcmVhdGUoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycywgY29uc3QgSG9zdFdpbmRv
dyogaG9zdFdpbmRvdykKIHsKLSAgICByZXR1cm4gSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6
OmNyZWF0ZShzaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIGNhY2hlZENHQ29sb3JT
cGFjZShjb2xvclNwYWNlKSwgcGl4ZWxGb3JtYXQsIGhvc3RXaW5kb3cpOworICAgIHJldHVybiBJ
bWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y3JlYXRlKHBhcmFtZXRlcnMsIGNhY2hlZENHQ29s
b3JTcGFjZShwYXJhbWV0ZXJzLmNvbG9yU3BhY2UpLCBob3N0V2luZG93KTsKIH0KIAotSW1hZ2VC
dWZmZXJDR0JpdG1hcEJhY2tlbmQ6OkltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kKGNvbnN0IEZs
b2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEludFNpemUmIGJhY2tlbmRTaXplLCBmbG9hdCBy
ZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxG
b3JtYXQsIHZvaWQqIGRhdGEsIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4mJiBkYXRhUHJv
dmlkZXIsIHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0NvbnRleHQ+JiYgY29udGV4dCkKLSAgICA6
IEltYWdlQnVmZmVyQ0dCYWNrZW5kKGxvZ2ljYWxTaXplLCBiYWNrZW5kU2l6ZSwgcmVzb2x1dGlv
blNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCkKK0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNr
ZW5kOjpJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZChjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0
ZXJzLCB2b2lkKiBkYXRhLCBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+JiYgZGF0YVByb3Zp
ZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NDb250ZXh0PiYmIGNvbnRleHQpCisgICAgOiBJ
bWFnZUJ1ZmZlckNHQmFja2VuZChwYXJhbWV0ZXJzKQogICAgICwgbV9kYXRhKGRhdGEpCiAgICAg
LCBtX2RhdGFQcm92aWRlcihXVEZNb3ZlKGRhdGFQcm92aWRlcikpCiAgICAgLCBtX2NvbnRleHQo
V1RGTW92ZShjb250ZXh0KSkKQEAgLTEwMyw2ICsxMDMsMTIgQEAgR3JhcGhpY3NDb250ZXh0JiBJ
bWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y29udGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuICpt
X2NvbnRleHQ7CiB9CiAKK0ludFNpemUgSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmJhY2tl
bmRTaXplKCkgY29uc3QKK3sKKyAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0ID0gY29udGV4dCgp
LnBsYXRmb3JtQ29udGV4dCgpOworICAgIHJldHVybiB7IHN0YXRpY19jYXN0PGludD4oQ0dCaXRt
YXBDb250ZXh0R2V0V2lkdGgoY2dDb250ZXh0KSksIHN0YXRpY19jYXN0PGludD4oQ0dCaXRtYXBD
b250ZXh0R2V0SGVpZ2h0KGNnQ29udGV4dCkpIH07Cit9CisKIFJlZlB0cjxOYXRpdmVJbWFnZT4g
SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVD
b3B5IGNvcHlCZWhhdmlvcikgY29uc3QKIHsKICAgICBzd2l0Y2ggKGNvcHlCZWhhdmlvcikgewpA
QCAtMTEwLDkgKzExNiwxMCBAQCBSZWZQdHI8TmF0aXZlSW1hZ2U+IEltYWdlQnVmZmVyQ0dCaXRt
YXBCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weQogICAgICAgICByZXR1
cm4gTmF0aXZlSW1hZ2U6OmNyZWF0ZShhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZUltYWdl
KGNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKSkpKTsKIAogICAgIGNhc2UgRG9udENvcHlCYWNr
aW5nU3RvcmU6CisgICAgICAgIGF1dG8gYmFja2VuZFNpemUgPSB0aGlzLT5iYWNrZW5kU2l6ZSgp
OwogICAgICAgICByZXR1cm4gTmF0aXZlSW1hZ2U6OmNyZWF0ZShhZG9wdENGKENHSW1hZ2VDcmVh
dGUoCi0gICAgICAgICAgICBtX2JhY2tlbmRTaXplLndpZHRoKCksIG1fYmFja2VuZFNpemUuaGVp
Z2h0KCksIDgsIDMyLCBieXRlc1BlclJvdygpLAotICAgICAgICAgICAgY2FjaGVkQ0dDb2xvclNw
YWNlKG1fY29sb3JTcGFjZSksIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkRmlyc3QgfCBrQ0dC
aXRtYXBCeXRlT3JkZXIzMkhvc3QsIG1fZGF0YVByb3ZpZGVyLmdldCgpLAorICAgICAgICAgICAg
YmFja2VuZFNpemUud2lkdGgoKSwgYmFja2VuZFNpemUuaGVpZ2h0KCksIDgsIDMyLCBieXRlc1Bl
clJvdygpLAorICAgICAgICAgICAgY2FjaGVkQ0dDb2xvclNwYWNlKGNvbG9yU3BhY2UoKSksIGtD
R0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkRmlyc3QgfCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkhvc3Qs
IG1fZGF0YVByb3ZpZGVyLmdldCgpLAogICAgICAgICAgICAgMCwgdHJ1ZSwga0NHUmVuZGVyaW5n
SW50ZW50RGVmYXVsdCkpKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5o
CmluZGV4IGU5MmM5MmY1ZDUwZmRlNTdhYWEzY2E1YzJmZjI5ZGYwOGI4NjRkMjkuLjhmMzMyM2U3
ZGNlYzYzNTVhY2I3ZDViOTljMjA3ODc3MTVjODZiYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1h
cEJhY2tlbmQuaApAQCAtMzYsMTIgKzM2LDE0IEBAIGNsYXNzIEltYWdlQnVmZmVyQ0dCaXRtYXBC
YWNrZW5kIDogcHVibGljIEltYWdlQnVmZmVyQ0dCYWNrZW5kIHsKICAgICBXVEZfTUFLRV9JU09f
QUxMT0NBVEVEKEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kKTsKICAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZCk7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZD4gY3JlYXRlKGNvbnN0
IEZsb2F0U2l6ZSYsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSwgQ0dDb2xvclNw
YWNlUmVmLCBQaXhlbEZvcm1hdCwgY29uc3QgSG9zdFdpbmRvdyopOwotICAgIHN0YXRpYyBzdGQ6
OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ+IGNyZWF0ZShjb25zdCBGbG9h
dFNpemUmLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UsIFBpeGVsRm9ybWF0LCBj
b25zdCBIb3N0V2luZG93Kik7Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZl
ckNHQml0bWFwQmFja2VuZD4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEdyYXBoaWNz
Q29udGV4dCYpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJDR0JpdG1h
cEJhY2tlbmQ+IGNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiwgQ0dDb2xvclNwYWNlUmVmLCBjb25z
dCBIb3N0V2luZG93Kik7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNH
Qml0bWFwQmFja2VuZD4gY3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmLCBjb25zdCBIb3N0V2luZG93
Kik7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2Vu
ZD4gY3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmLCBjb25zdCBHcmFwaGljc0NvbnRleHQmKTsKIAog
ICAgIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCgpIGNvbnN0IG92ZXJyaWRlOwogCisgICAgSW50
U2l6ZSBiYWNrZW5kU2l6ZSgpIGNvbnN0IG92ZXJyaWRlOworCiAgICAgUmVmUHRyPE5hdGl2ZUlt
YWdlPiBjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSA9IENvcHlCYWNraW5nU3RvcmUp
IGNvbnN0IG92ZXJyaWRlOwogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHRvQkdSQURhdGEoKSBjb25z
dCBvdmVycmlkZTsKQEAgLTUyLDcgKzU0LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdGV4
cHIgYm9vbCBpc09yaWdpbkF0VXBwZXJMZWZ0Q29ybmVyID0gdHJ1ZTsKIAogcHJpdmF0ZToKLSAg
ICBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZChjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXpl
LCBjb25zdCBJbnRTaXplJiBwaHlzaWNhbFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29s
b3JTcGFjZSwgUGl4ZWxGb3JtYXQsIHZvaWQqIGRhdGEsIFJldGFpblB0cjxDR0RhdGFQcm92aWRl
clJlZj4mJiwgc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzQ29udGV4dD4mJik7CisgICAgSW1hZ2VC
dWZmZXJDR0JpdG1hcEJhY2tlbmQoY29uc3QgUGFyYW1ldGVycyYsIHZvaWQqIGRhdGEsIFJldGFp
blB0cjxDR0RhdGFQcm92aWRlclJlZj4mJiwgc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzQ29udGV4
dD4mJik7CiAKICAgICB2b2lkKiBtX2RhdGE7CiAgICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVy
UmVmPiBtX2RhdGFQcm92aWRlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuY3Bw
CmluZGV4IGFkM2ZmMWQ3OTc3MjAzNzY0MGUyZDY5OTU0MTI4ODYwYjc3NDhjMzYuLmQzZjQzMTA3
NmI4ZWYyYmI3MWQxMjg5ZDFjYjc2ZDg3MzM3YjZkODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1
cmZhY2VCYWNrZW5kLmNwcApAQCAtNjQsMTMgKzY0LDEzIEBAIFJldGFpblB0cjxDR0NvbG9yU3Bh
Y2VSZWY+IEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y29udGV4dENvbG9yU3BhY2UoY29u
c3QKICAgICByZXR1cm4gSW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OmNvbnRleHRDb2xvclNwYWNlKGNv
bnRleHQpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5k
PiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHNp
emUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBDR0NvbG9y
U3BhY2VSZWYgY2dDb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgY29uc3QgSG9z
dFdpbmRvdyogaG9zdFdpbmRvdykKK3N0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcklPU3VyZmFj
ZUJhY2tlbmQ+IEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlKGNvbnN0IFBhcmFt
ZXRlcnMmIHBhcmFtZXRlcnMsIENHQ29sb3JTcGFjZVJlZiBjZ0NvbG9yU3BhY2UsIGNvbnN0IEhv
c3RXaW5kb3cqIGhvc3RXaW5kb3cpCiB7Ci0gICAgSW50U2l6ZSBiYWNrZW5kU2l6ZSA9IGNhbGN1
bGF0ZUJhY2tlbmRTaXplKHNpemUsIHJlc29sdXRpb25TY2FsZSk7CisgICAgSW50U2l6ZSBiYWNr
ZW5kU2l6ZSA9IGNhbGN1bGF0ZUJhY2tlbmRTaXplKHBhcmFtZXRlcnMubG9naWNhbFNpemUsIHBh
cmFtZXRlcnMucmVzb2x1dGlvblNjYWxlKTsKICAgICBpZiAoYmFja2VuZFNpemUuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGF1dG8gc3VyZmFjZSA9IElPU3VyZmFj
ZTo6Y3JlYXRlKGJhY2tlbmRTaXplLCBiYWNrZW5kU2l6ZSwgY2dDb2xvclNwYWNlLCBJT1N1cmZh
Y2U6OmZvcm1hdEZvclBpeGVsRm9ybWF0KHBpeGVsRm9ybWF0KSk7CisgICAgYXV0byBzdXJmYWNl
ID0gSU9TdXJmYWNlOjpjcmVhdGUoYmFja2VuZFNpemUsIGJhY2tlbmRTaXplLCBjZ0NvbG9yU3Bh
Y2UsIElPU3VyZmFjZTo6Zm9ybWF0Rm9yUGl4ZWxGb3JtYXQocGFyYW1ldGVycy5waXhlbEZvcm1h
dCkpOwogICAgIGlmICghc3VyZmFjZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTgw
LDI0ICs4MCwyNCBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5k
PiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZQogCiAgICAgQ0dDb250ZXh0Q2xl
YXJSZWN0KGNnQ29udGV4dC5nZXQoKSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQ6Onplcm8oKSwgYmFj
a2VuZFNpemUpKTsKIAotICAgIHJldHVybiBtYWtlVW5pcXVlPEltYWdlQnVmZmVySU9TdXJmYWNl
QmFja2VuZD4oc2l6ZSwgYmFja2VuZFNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwg
cGl4ZWxGb3JtYXQsIFdURk1vdmUoc3VyZmFjZSkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPElt
YWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZD4ocGFyYW1ldGVycywgV1RGTW92ZShzdXJmYWNlKSk7
CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ+IEltYWdl
QnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgY29u
c3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQorc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVy
SU9TdXJmYWNlQmFja2VuZD4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGUoY29u
c3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycywgY29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
KQogewotICAgIGlmIChhdXRvIGNnQ29sb3JTcGFjZSA9IGNvbnRleHRDb2xvclNwYWNlKGNvbnRl
eHQpKQotICAgICAgICByZXR1cm4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGUo
c2l6ZSwgMSwgQ29sb3JTcGFjZTo6U1JHQiwgY2dDb2xvclNwYWNlLmdldCgpLCBQaXhlbEZvcm1h
dDo6QkdSQTgsIG51bGxwdHIpOwotICAgIAotICAgIHJldHVybiBJbWFnZUJ1ZmZlcklPU3VyZmFj
ZUJhY2tlbmQ6OmNyZWF0ZShzaXplLCAxLCBDb2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6
QkdSQTgsIG51bGxwdHIpOworICAgIGlmIChhdXRvIGNnQ29sb3JTcGFjZSA9IGNvbnRleHQuaGFz
UGxhdGZvcm1Db250ZXh0KCkgPyBjb250ZXh0Q29sb3JTcGFjZShjb250ZXh0KSA6IG51bGxwdHIp
CisgICAgICAgIHJldHVybiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZShwYXJh
bWV0ZXJzLCBjZ0NvbG9yU3BhY2UuZ2V0KCksIG51bGxwdHIpOworCisgICAgcmV0dXJuIEltYWdl
QnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlKHBhcmFtZXRlcnMsIG51bGxwdHIpOwogfQog
Ci1zdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kPiBJbWFnZUJ1ZmZl
cklPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJl
c29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZv
cm1hdCwgY29uc3QgSG9zdFdpbmRvdyogaG9zdFdpbmRvdykKK3N0ZDo6dW5pcXVlX3B0cjxJbWFn
ZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ+IEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y3Jl
YXRlKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIGNvbnN0IEhvc3RXaW5kb3cqIGhvc3RX
aW5kb3cpCiB7Ci0gICAgcmV0dXJuIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRl
KHNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgY2FjaGVkQ0dDb2xvclNwYWNlKGNv
bG9yU3BhY2UpLCBwaXhlbEZvcm1hdCwgaG9zdFdpbmRvdyk7CisgICAgcmV0dXJuIEltYWdlQnVm
ZmVySU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlKHBhcmFtZXRlcnMsIGNhY2hlZENHQ29sb3JTcGFj
ZShwYXJhbWV0ZXJzLmNvbG9yU3BhY2UpLCBob3N0V2luZG93KTsKIH0KIAotSW1hZ2VCdWZmZXJJ
T1N1cmZhY2VCYWNrZW5kOjpJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQoY29uc3QgRmxvYXRT
aXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29s
dXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1h
dCwgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4mJiBzdXJmYWNlKQotICAgIDogSW1hZ2VCdWZm
ZXJDR0JhY2tlbmQobG9naWNhbFNpemUsIGJhY2tlbmRTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNv
bG9yU3BhY2UsIHBpeGVsRm9ybWF0KQorSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpJbWFn
ZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycywgc3Rk
Ojp1bmlxdWVfcHRyPElPU3VyZmFjZT4mJiBzdXJmYWNlKQorICAgIDogSW1hZ2VCdWZmZXJDR0Jh
Y2tlbmQocGFyYW1ldGVycykKICAgICAsIG1fc3VyZmFjZShXVEZNb3ZlKHN1cmZhY2UpKQogewog
ICAgIEFTU0VSVChtX3N1cmZhY2UpOwpAQCAtMTIwLDYgKzEyMCwxMSBAQCB2b2lkIEltYWdlQnVm
ZmVySU9TdXJmYWNlQmFja2VuZDo6Zmx1c2hDb250ZXh0KCkKICAgICBDR0NvbnRleHRGbHVzaChj
b250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCkpOwogfQogCitJbnRTaXplIEltYWdlQnVmZmVySU9T
dXJmYWNlQmFja2VuZDo6YmFja2VuZFNpemUoKSBjb25zdAoreworICAgIHJldHVybiBtX3N1cmZh
Y2UtPnNpemUoKTsKK30KKwogc2l6ZV90IEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6bWVt
b3J5Q29zdCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fc3VyZmFjZS0+dG90YWxCeXRlcygpOwpA
QCAtMTQ4LDEwICsxNTMsMTAgQEAgUmVmUHRyPE5hdGl2ZUltYWdlPiBJbWFnZUJ1ZmZlcklPU3Vy
ZmFjZUJhY2tlbmQ6OnNpbmtJbnRvTmF0aXZlSW1hZ2UoKQogdm9pZCBJbWFnZUJ1ZmZlcklPU3Vy
ZmFjZUJhY2tlbmQ6OmRyYXdDb25zdW1pbmcoR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25z
dCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBGbG9hdFJlY3QgYWRqdXN0
ZWRTcmNSZWN0ID0gc3JjUmVjdDsKLSAgICBhZGp1c3RlZFNyY1JlY3Quc2NhbGUobV9yZXNvbHV0
aW9uU2NhbGUpOworICAgIGFkanVzdGVkU3JjUmVjdC5zY2FsZShyZXNvbHV0aW9uU2NhbGUoKSk7
CiAKICAgICBpZiAoYXV0byBpbWFnZSA9IHNpbmtJbnRvTmF0aXZlSW1hZ2UoKSkKLSAgICAgICAg
ZGVzdENvbnRleHQuZHJhd05hdGl2ZUltYWdlKCppbWFnZSwgbV9iYWNrZW5kU2l6ZSwgZGVzdFJl
Y3QsIGFkanVzdGVkU3JjUmVjdCwgb3B0aW9ucyk7CisgICAgICAgIGRlc3RDb250ZXh0LmRyYXdO
YXRpdmVJbWFnZSgqaW1hZ2UsIGJhY2tlbmRTaXplKCksIGRlc3RSZWN0LCBhZGp1c3RlZFNyY1Jl
Y3QsIG9wdGlvbnMpOwogfQogCiBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBJbWFnZUJ1ZmZlcklPU3Vy
ZmFjZUJhY2tlbmQ6OnRvQ0ZEYXRhKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRv
dWJsZT4gcXVhbGl0eSwgUHJlc2VydmVSZXNvbHV0aW9uIHByZXNlcnZlUmVzb2x1dGlvbikgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
QnVmZmVySU9TdXJmYWNlQmFja2VuZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmgKaW5kZXggZGU5ODIxMTFlNTJjMTJl
ZGIwOGRjNzg4YjUwZWNlZmIzNjUwNzY1MC4uNDg1OWRmNmZjNTI1ZDg1YzMyOGMxNDVmMDc5MTc4
MzU2OTA5ZTI1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmgKQEAgLTM5LDE1
ICszOSwxNyBAQCBjbGFzcyBXRUJDT1JFX0VYUE9SVCBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tl
bmQgOiBwdWJsaWMgSW1hZ2VCdWZmZXJDR0JhY2tlbmQgewogcHVibGljOgogICAgIHN0YXRpYyBJ
bnRTaXplIGNhbGN1bGF0ZUJhY2tlbmRTaXplKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUs
IGZsb2F0IHJlc29sdXRpb25TY2FsZSk7CiAKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPElt
YWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZD4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYsIGZsb2F0
IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSwgQ0dDb2xvclNwYWNlUmVmLCBQaXhlbEZvcm1h
dCwgY29uc3QgSG9zdFdpbmRvdyopOwotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VC
dWZmZXJJT1N1cmZhY2VCYWNrZW5kPiBjcmVhdGUoY29uc3QgRmxvYXRTaXplJiwgZmxvYXQgcmVz
b2x1dGlvblNjYWxlLCBDb2xvclNwYWNlLCBQaXhlbEZvcm1hdCwgY29uc3QgSG9zdFdpbmRvdyop
OwotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5k
PiBjcmVhdGUoY29uc3QgRmxvYXRTaXplJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0Jik7CisgICAg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ+IGNyZWF0
ZShjb25zdCBQYXJhbWV0ZXJzJiwgQ0dDb2xvclNwYWNlUmVmLCBjb25zdCBIb3N0V2luZG93Kik7
CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ+
IGNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiwgY29uc3QgSG9zdFdpbmRvdyopOworICAgIHN0YXRp
YyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kPiBjcmVhdGUoY29u
c3QgUGFyYW1ldGVycyYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpOwogCi0gICAgSW1hZ2VCdWZm
ZXJJT1N1cmZhY2VCYWNrZW5kKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IElu
dFNpemUmIHBoeXNpY2FsU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlLCBQ
aXhlbEZvcm1hdCwgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4mJik7CisgICAgSW1hZ2VCdWZm
ZXJJT1N1cmZhY2VCYWNrZW5kKGNvbnN0IFBhcmFtZXRlcnMmLCBzdGQ6OnVuaXF1ZV9wdHI8SU9T
dXJmYWNlPiYmKTsKIAogICAgIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCgpIGNvbnN0IG92ZXJy
aWRlOwogICAgIHZvaWQgZmx1c2hDb250ZXh0KCkgb3ZlcnJpZGU7CiAKKyAgICBJbnRTaXplIGJh
Y2tlbmRTaXplKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgCiAgICAgc2l6ZV90IG1lbW9yeUNvc3Qo
KSBjb25zdCBvdmVycmlkZTsKICAgICBzaXplX3QgZXh0ZXJuYWxNZW1vcnlDb3N0KCkgY29uc3Qg
b3ZlcnJpZGU7CiAKQEAgLTY5LDcgKzcxLDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVsZWFzZUJ1
ZmZlclRvUG9vbCgpIG92ZXJyaWRlOwogCiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzT3Jp
Z2luQXRVcHBlckxlZnRDb3JuZXIgPSB0cnVlOwotICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBp
c0FjY2VsZXJhdGVkID0gdHJ1ZTsKKyAgICBzdGF0aWMgY29uc3RleHByIFJlbmRlcmluZ01vZGUg
cmVuZGVyaW5nTW9kZSA9IFJlbmRlcmluZ01vZGU6OkFjY2VsZXJhdGVkOwogCiBwcm90ZWN0ZWQ6
CiAgICAgc3RhdGljIFJldGFpblB0cjxDR0NvbG9yU3BhY2VSZWY+IGNvbnRleHRDb2xvclNwYWNl
KGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaAppbmRleCAyNmZj
OTczMDcyMTEyNzMwMzkzZTJkY2JjODdkMGM2YjljYTU0MjU4Li4xNmIxOTdmOWVlMmQyOGRiZTky
MWQ5MzA5NDNkNDMwNDYxZGZjZDg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaApAQCAtMzMsNyAr
MzMsNiBAQAogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hT
ZXQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KLSNpbmNsdWRlIDx3dGYvT2JqZWN0
SWRlbnRpZmllci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KIApAQCAtNDUsOSArNDQsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IG5hbWVzcGFjZSBEaXNwbGF5TGlzdCB7CiAKLWVudW0gRmx1c2hJZGVudGlmaWVyVHlwZSB7IH07
Ci11c2luZyBGbHVzaElkZW50aWZpZXIgPSBPYmplY3RJZGVudGlmaWVyPEZsdXNoSWRlbnRpZmll
clR5cGU+OwotCiBlbnVtIEFzVGV4dEZsYWcgewogICAgIE5vbmUgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPSAwLAogICAgIEluY2x1ZGVzUGxhdGZvcm1PcGVyYXRpb25zICAgICAgPSAxIDw8
IDAsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RGbHVzaElkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEZsdXNoSWRlbnRpZmllci5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjljZjc4MTY4ZWJiN2ZjNzM3YjliNGE2Y2Y4ZDUzNzI5ZjVhMDYwZWMKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RGbHVzaElkZW50aWZpZXIuaApAQCAtMCwwICsxLDM5IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvT2JqZWN0SWRlbnRpZmllci5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBEaXNwbGF5TGlzdCB7CisKK2VudW0g
Rmx1c2hJZGVudGlmaWVyVHlwZSB7IH07Cit1c2luZyBGbHVzaElkZW50aWZpZXIgPSBPYmplY3RJ
ZGVudGlmaWVyPEZsdXNoSWRlbnRpZmllclR5cGU+OworCit9IC8vIERpc3BsYXlMaXN0CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEltYWdlQnVmZmVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJbWFnZUJ1
ZmZlci5oCmluZGV4IGY1YjIyMzQwMmFlYjM3NzI4YjczMDFmYjY2NzExOGEzYjJlOGIwNDAuLmE2
NWZjYTU1OWExNjVmYzZiMmQ4NjIzZjM1M2UxMTY0NzI5Mzc3NmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEltYWdl
QnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXIuaApAQCAtMzQsMjYgKzM0LDI5IEBAIG5hbWVzcGFj
ZSBEaXNwbGF5TGlzdCB7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBCYWNrZW5kVHlwZT4KIGNsYXNzIElt
YWdlQnVmZmVyIDogcHVibGljIENvbmNyZXRlSW1hZ2VCdWZmZXI8QmFja2VuZFR5cGU+IHsKICAg
ICB1c2luZyBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZlciA9IENvbmNyZXRlSW1hZ2VCdWZmZXI8QmFj
a2VuZFR5cGU+OworICAgIHVzaW5nIEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyOjpsb2dpY2FsU2l6
ZTsKKyAgICB1c2luZyBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZlcjo6YmFzZVRyYW5zZm9ybTsKIAog
cHVibGljOgogICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIGZs
b2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBw
aXhlbEZvcm1hdCwgY29uc3QgSG9zdFdpbmRvdyogaG9zdFdpbmRvdykKICAgICB7Ci0gICAgICAg
IHJldHVybiBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZlcjo6dGVtcGxhdGUgY3JlYXRlPEltYWdlQnVm
ZmVyPihzaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0LCBob3N0
V2luZG93LCBzaXplKTsKKyAgICAgICAgcmV0dXJuIEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyOjp0
ZW1wbGF0ZSBjcmVhdGU8SW1hZ2VCdWZmZXI+KHNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JT
cGFjZSwgcGl4ZWxGb3JtYXQsIGhvc3RXaW5kb3cpOwogICAgIH0KIAogICAgIHN0YXRpYyBhdXRv
IGNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCkKICAgICB7Ci0gICAgICAgIHJldHVybiBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZlcjo6dGVt
cGxhdGUgY3JlYXRlPEltYWdlQnVmZmVyPihzaXplLCBjb250ZXh0LCBzaXplKTsKKyAgICAgICAg
cmV0dXJuIEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyOjp0ZW1wbGF0ZSBjcmVhdGU8SW1hZ2VCdWZm
ZXI+KHNpemUsIGNvbnRleHQpOwogICAgIH0KIAotICAgIEltYWdlQnVmZmVyKHN0ZDo6dW5pcXVl
X3B0cjxCYWNrZW5kVHlwZT4mJiBkYXRhQmFja2VuZCwgY29uc3QgRmxvYXRTaXplJiBzaXplKQot
ICAgICAgICA6IEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyKFdURk1vdmUoZGF0YUJhY2tlbmQpKQot
ICAgICAgICAsIG1fZHJhd2luZ0NvbnRleHQoc2l6ZSwgaW5pdGlhbERyYXdpbmdDb250ZXh0Q1RN
KHNpemUpKQorICAgIEltYWdlQnVmZmVyKGNvbnN0IEltYWdlQnVmZmVyQmFja2VuZDo6UGFyYW1l
dGVycyYgcGFyYW1ldGVycywgc3RkOjp1bmlxdWVfcHRyPEJhY2tlbmRUeXBlPiYmIGJhY2tlbmQp
CisgICAgICAgIDogQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXIocGFyYW1ldGVycywgV1RGTW92ZShi
YWNrZW5kKSkKKyAgICAgICAgLCBtX2RyYXdpbmdDb250ZXh0KGxvZ2ljYWxTaXplKCksIGJhc2VU
cmFuc2Zvcm0oKSkKICAgICB7CiAgICAgfQogCi0gICAgSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRT
aXplJiBzaXplLCBSZWNvcmRlcjo6RGVsZWdhdGUqIGRlbGVnYXRlID0gbnVsbHB0cikKLSAgICAg
ICAgOiBtX2RyYXdpbmdDb250ZXh0KHNpemUsIGluaXRpYWxEcmF3aW5nQ29udGV4dENUTShzaXpl
KSwgZGVsZWdhdGUpCisgICAgSW1hZ2VCdWZmZXIoY29uc3QgSW1hZ2VCdWZmZXJCYWNrZW5kOjpQ
YXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBSZWNvcmRlcjo6RGVsZWdhdGUqIGRlbGVnYXRlID0gbnVs
bHB0cikKKyAgICAgICAgOiBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZlcihwYXJhbWV0ZXJzKQorICAg
ICAgICAsIG1fZHJhd2luZ0NvbnRleHQobG9naWNhbFNpemUoKSwgYmFzZVRyYW5zZm9ybSgpLCBk
ZWxlZ2F0ZSkKICAgICB7CiAgICAgfQogCkBAIC03NywxNSArODAsNiBAQCBwdWJsaWM6CiAKIHBy
b3RlY3RlZDoKICAgICBEcmF3aW5nQ29udGV4dCBtX2RyYXdpbmdDb250ZXh0OwotCi1wcml2YXRl
OgotICAgIHN0YXRpYyBBZmZpbmVUcmFuc2Zvcm0gaW5pdGlhbERyYXdpbmdDb250ZXh0Q1RNKGNv
bnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUpCi0gICAgewotICAgICAgICBBZmZpbmVUcmFuc2Zv
cm0gaW5pdGlhbENUTTsKLSAgICAgICAgaWYgKEJhY2tlbmRUeXBlOjppc09yaWdpbkF0VXBwZXJM
ZWZ0Q29ybmVyKQotICAgICAgICAgICAgaW5pdGlhbENUTSA9IGluaXRpYWxDVE0uc2NhbGUoMSwg
LTEpLnRyYW5zbGF0ZSgwLCAtbG9naWNhbFNpemUuaGVpZ2h0KCkpOwotICAgICAgICByZXR1cm4g
aW5pdGlhbENUTTsKLSAgICB9CiB9OwogCiB9IC8vIERpc3BsYXlMaXN0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJlY3QyREJh
Y2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVm
ZmVyRGlyZWN0MkRCYWNrZW5kLmNwcAppbmRleCAzNzhhYWY0YzQwYzRlMTIyYWNiZTA2OTQzMmM3
YWQ3ZWMyMDllZDczLi4wMWQyZTc4MDI4NWIxMWZlYzM5YjRjZDI2YmY0Y2ZmZjA4MDczMzc3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZm
ZXJEaXJlY3QyREJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9JbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZC5jcHAKQEAgLTE3MSw3ICsxNzEsNyBA
QCBzdGF0aWMgUmVmUHRyPEltYWdlPiBjcmVhdGVCaXRtYXBJbWFnZUFmdGVyU2NhbGluZ0lmTmVl
ZGVkKElEMkQxQml0bWFwUmVuZGVyVGFyZwogUmVmUHRyPEltYWdlPiBJbWFnZUJ1ZmZlckRpcmVj
dDJEQmFja2VuZDo6Y29weUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgY29weUJlaGF2aW9yLCBQcmVz
ZXJ2ZVJlc29sdXRpb24gcHJlc2VydmVSZXNvbHV0aW9uKSBjb25zdAogewogICAgIFBsYXRmb3Jt
SW1hZ2VQdHIgaW1hZ2U7Ci0gICAgaWYgKG1fcmVzb2x1dGlvblNjYWxlID09IDEgfHwgcHJlc2Vy
dmVSZXNvbHV0aW9uID09IFByZXNlcnZlUmVzb2x1dGlvbjo6WWVzKQorICAgIGlmIChyZXNvbHV0
aW9uU2NhbGUoKSA9PSAxIHx8IHByZXNlcnZlUmVzb2x1dGlvbiA9PSBQcmVzZXJ2ZVJlc29sdXRp
b246OlllcykKICAgICAgICAgaW1hZ2UgPSBjb3B5TmF0aXZlSW1hZ2UoY29weUJlaGF2aW9yKS0+
cGxhdGZvcm1JbWFnZSgpOwogICAgIGVsc2UKICAgICAgICAgaW1hZ2UgPSBjb3B5TmF0aXZlSW1h
Z2UoRG9udENvcHlCYWNraW5nU3RvcmUpLT5wbGF0Zm9ybUltYWdlKCk7CkBAIC0yNjksNyArMjY5
LDcgQEAgUGxhdGZvcm1JbWFnZVB0ciBJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6Y29tcGF0
aWJsZUJpdG1hcChJRDJEMVJlbmRlclRhcmdldCoKIHZvaWQgSW1hZ2VCdWZmZXJEaXJlY3QyREJh
Y2tlbmQ6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5n
T3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBGbG9hdFJlY3QgYWRqdXN0ZWRTcmNSZWN0ID0gc3Jj
UmVjdDsKLSAgICBhZGp1c3RlZFNyY1JlY3Quc2NhbGUobV9yZXNvbHV0aW9uU2NhbGUsIG1fcmVz
b2x1dGlvblNjYWxlKTsKKyAgICBhZGp1c3RlZFNyY1JlY3Quc2NhbGUocmVzb2x1dGlvblNjYWxl
KCkpOwogCiAgICAgYXV0byBjb21wYXRpYmxlQml0bWFwID0gY29tcGF0aWJsZUJpdG1hcChkZXN0
Q29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKS0+cmVuZGVyVGFyZ2V0KCkpOwogCkBAIC0yODMsNyAr
MjgzLDcgQEAgdm9pZCBJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6ZHJhdyhHcmFwaGljc0Nv
bnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFIKIHZvaWQgSW1hZ2VCdWZmZXJEaXJlY3Qy
REJhY2tlbmQ6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZm
aW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwg
Y29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0
aW9ucykKIHsKICAgICBGbG9hdFJlY3QgYWRqdXN0ZWRTcmNSZWN0ID0gc3JjUmVjdDsKLSAgICBh
ZGp1c3RlZFNyY1JlY3Quc2NhbGUobV9yZXNvbHV0aW9uU2NhbGUpOworICAgIGFkanVzdGVkU3Jj
UmVjdC5zY2FsZShyZXNvbHV0aW9uU2NhbGUoKSk7CiAKICAgICBpZiAoYXV0byBpbWFnZSA9IGNv
cHlJbWFnZSgmZGVzdENvbnRleHQgPT0gJmNvbnRleHQoKSA/IENvcHlCYWNraW5nU3RvcmUgOiBE
b250Q29weUJhY2tpbmdTdG9yZSkpCiAgICAgICAgIGltYWdlLT5kcmF3UGF0dGVybihkZXN0Q29u
dGV4dCwgZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2Us
IHNwYWNpbmcsIG9wdGlvbnMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaAppbmRleCA0ZDVkMDI1M2JhYTM2ZTU0NTdlNDgx
NjQ1MzgyNDM3ZTMxOWE4NTc4Li5lNjEzYWQwMDRjNDYzYWUzM2MzODk1ZDA0ODMxMmQzZTQyZTU3
N2U4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
SW1hZ2VCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlSW1hZ2VCdWZmZXIuaApAQCAtNDksMTIgKzQ5LDEyIEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuIEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyOjp0ZW1wbGF0ZSBjcmVhdGU8UmVtb3RlSW1hZ2VC
dWZmZXI+KHNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQsIG51
bGxwdHIsIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmQsIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cik7CiAgICAgfQogCi0gICAgUmVtb3RlSW1hZ2VCdWZmZXIoc3RkOjp1bmlxdWVfcHRyPEJhY2tl
bmRUeXBlPiYmIGJhY2tlbmQsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQmIHJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIpCi0gICAgICAgIDogQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXIoV1RG
TW92ZShiYWNrZW5kKSwgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQorICAgIFJlbW90ZUlt
YWdlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkltYWdlQnVmZmVyQmFja2VuZDo6UGFyYW1ldGVycyYg
cGFyYW1ldGVycywgc3RkOjp1bmlxdWVfcHRyPEJhY2tlbmRUeXBlPiYmIGJhY2tlbmQsIFJlbW90
ZVJlbmRlcmluZ0JhY2tlbmQmIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmQsIFdlYkNvcmU6OlJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCisgICAg
ICAgIDogQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXIocGFyYW1ldGVycywgV1RGTW92ZShiYWNrZW5k
KSwgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogICAgICAgICAsIG1fcmVtb3RlUmVuZGVy
aW5nQmFja2VuZChyZW1vdGVSZW5kZXJpbmdCYWNrZW5kKQogICAgICAgICAsIG1fcmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKICAgICB7Ci0g
ICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC5pbWFnZUJ1ZmZlckJhY2tlbmRXYXNDcmVh
dGVkKG1fYmFja2VuZC0+bG9naWNhbFNpemUoKSwgbV9iYWNrZW5kLT5iYWNrZW5kU2l6ZSgpLCBt
X2JhY2tlbmQtPnJlc29sdXRpb25TY2FsZSgpLCBtX2JhY2tlbmQtPmNvbG9yU3BhY2UoKSwgbV9i
YWNrZW5kLT5waXhlbEZvcm1hdCgpLCBtX2JhY2tlbmQtPmNyZWF0ZUltYWdlQnVmZmVyQmFja2Vu
ZEhhbmRsZSgpLCByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOworICAgICAgICBtX3JlbW90
ZVJlbmRlcmluZ0JhY2tlbmQuZGlkQ3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kKG1fYmFja2VuZC0+
Y3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKCksIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
Zmllcik7CiAgICAgfQogCiAgICAgflJlbW90ZUltYWdlQnVmZmVyKCkKQEAgLTY1LDE3ICs2NSw2
IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGNvbnRleHQoKS5yZXN0b3JlKCk7CiAgICAgfQogCi0g
ICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlcGxheVJlc3VsdCBzdWJtaXREaXNwbGF5TGlzdChj
b25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0KQotICAg
IHsKLSAgICAgICAgaWYgKGRpc3BsYXlMaXN0LmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHJldHVy
biB7IH07Ci0KLSAgICAgICAgY29uc3QgYXV0byYgaW1hZ2VCdWZmZXJzID0gbV9yZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kLnJlbW90ZVJlc291cmNlQ2FjaGUoKS5pbWFnZUJ1ZmZlcnMoKTsKLSAgICAg
ICAgY29uc3QgYXV0byYgbmF0aXZlSW1hZ2VzID0gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLnJl
bW90ZVJlc291cmNlQ2FjaGUoKS5uYXRpdmVJbWFnZXMoKTsKLSAgICAgICAgV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OlJlcGxheWVyIHJlcGxheWVyIHsgQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXI6OmNv
bnRleHQoKSwgZGlzcGxheUxpc3QsICZpbWFnZUJ1ZmZlcnMsICZuYXRpdmVJbWFnZXMsIHRoaXMg
fTsKLSAgICAgICAgcmV0dXJuIHJlcGxheWVyLnJlcGxheSgpOwotICAgIH0KLQogcHJpdmF0ZToK
ICAgICBib29sIGFwcGx5KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtSGFuZGxlIGl0ZW0sIFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgb3ZlcnJpZGUKICAgICB7CkBAIC0xMDEs
NiArOTAsMTcgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIG1fcmVtb3RlUmVuZGVyaW5nQmFj
a2VuZC5hcHBseU1lZGlhSXRlbShpdGVtLCBjb250ZXh0KTsKICAgICB9CiAKKyAgICB2b2lkIHN1
Ym1pdERpc3BsYXlMaXN0KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYg
ZGlzcGxheUxpc3QpIG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAoZGlzcGxheUxpc3QuaXNF
bXB0eSgpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGNvbnN0IGF1dG8mIGltYWdl
QnVmZmVycyA9IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC5yZW1vdGVSZXNvdXJjZUNhY2hlKCku
aW1hZ2VCdWZmZXJzKCk7CisgICAgICAgIGNvbnN0IGF1dG8mIG5hdGl2ZUltYWdlcyA9IG1fcmVt
b3RlUmVuZGVyaW5nQmFja2VuZC5yZW1vdGVSZXNvdXJjZUNhY2hlKCkubmF0aXZlSW1hZ2VzKCk7
CisgICAgICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXBsYXllciByZXBsYXllciB7IEJhc2VD
b25jcmV0ZUltYWdlQnVmZmVyOjpjb250ZXh0KCksIGRpc3BsYXlMaXN0LCAmaW1hZ2VCdWZmZXJz
LCAmbmF0aXZlSW1hZ2VzLCB0aGlzIH07CisgICAgICAgIHJlcGxheWVyLnJlcGxheSgpOworICAg
IH0KKwogICAgIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQmIG1fcmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZDsKICAgICBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgbV9yZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXI7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCmluZGV4IDZkZGVi
MDI3OTI5ZTUwNGY4M2IwYTE4NmM3ZWVhYjhlNWI5ZDY4NzIuLjIyZGE5OThiZjk5MDIyYjZjNTFj
ZTIzODE5ZTllY2ZkZWVkMmEzN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKQEAgLTk5LDkg
Kzk5LDkgQEAgYm9vbCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjphcHBseU1lZGlhSXRlbShEaXNw
bGF5TGlzdDo6SXRlbUhhbmRsZSBpdGVtLCBHcmFwaGkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
dm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjppbWFnZUJ1ZmZlckJhY2tlbmRXYXNDcmVhdGVk
KGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEludFNpemUmIGJhY2tlbmRTaXpl
LCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgUGl4ZWxGb3Jt
YXQgcGl4ZWxGb3JtYXQsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBoYW5kbGUsIFJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCit2b2lkIFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmRpZENyZWF0ZUltYWdlQnVmZmVyQmFja2VuZChJbWFnZUJ1
ZmZlckJhY2tlbmRIYW5kbGUgaGFuZGxlLCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eTo6SW1hZ2VCdWZmZXJCYWNrZW5kV2FzQ3JlYXRlZChsb2dpY2Fs
U2l6ZSwgYmFja2VuZFNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3Jt
YXQsIFdURk1vdmUoaGFuZGxlKSwgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSwgbV9yZW5k
ZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5OjpEaWRDcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQoV1RGTW92ZShoYW5k
bGUpLCByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpLCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVu
dGlmaWVyKTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpkaWRGbHVzaChEaXNw
bGF5TGlzdDo6Rmx1c2hJZGVudGlmaWVyIGZsdXNoSWRlbnRpZmllciwgUmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKQEAgLTE0OCwxMCArMTQ4
LDcgQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjphcHBseURpc3BsYXlMaXN0c0Zyb21I
YW5kbGUoSW1hZ2VCdWZmZXImIGRlc3RpbmF0aW8KICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogCi0gICAgICAgIGlmIChkZXN0aW5hdGlvbi5pc0FjY2VsZXJhdGVkKCkpCi0gICAgICAg
ICAgICBzdGF0aWNfY2FzdDxBY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyJj4oZGVzdGluYXRp
b24pLnN1Ym1pdERpc3BsYXlMaXN0KCpkaXNwbGF5TGlzdCk7Ci0gICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIHN0YXRpY19jYXN0PFVuYWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlciY+KGRlc3Rp
bmF0aW9uKS5zdWJtaXREaXNwbGF5TGlzdCgqZGlzcGxheUxpc3QpOworICAgICAgICBkZXN0aW5h
dGlvbi5zdWJtaXREaXNwbGF5TGlzdCgqZGlzcGxheUxpc3QpOwogCiAgICAgICAgIENoZWNrZWRT
aXplIGNoZWNrZWRPZmZzZXQgPSBvZmZzZXQ7CiAgICAgICAgIGNoZWNrZWRPZmZzZXQgKz0gc2l6
ZVRvUmVhZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9S
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCmluZGV4IDY0MDY2NjhmYWUwNTA1N2U5ZGYzMjY0
ZjU3NTI0OTQ4OWQ3MDVjNzguLjU5MTllOTU2NGY2NjNkZjM5ZmZiM2MxNWIxNWEzYjhjMzIzMGY1
ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaApAQCAtNzAsNyArNzAsNyBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBhcHBseU1lZGlhSXRlbShXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZSwgV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0Jik7CiAKICAgICAvLyBNZXNzYWdlcyB0byBiZSBzZW50Lgot
ICAgIHZvaWQgaW1hZ2VCdWZmZXJCYWNrZW5kV2FzQ3JlYXRlZChjb25zdCBXZWJDb3JlOjpGbG9h
dFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBiYWNrZW5kU2l6ZSwg
ZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlLCBXZWJDb3JlOjpQaXhl
bEZvcm1hdCwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIpOworICAgIHZvaWQgZGlkQ3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kKElt
YWdlQnVmZmVyQmFja2VuZEhhbmRsZSwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyKTsKICAgICB2b2lkIGRpZEZsdXNoKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpGbHVzaElkZW50
aWZpZXIsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAKICAgICB2b2lk
IHNldE5leHRJdGVtQnVmZmVyVG9SZWFkKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVy
SWRlbnRpZmllcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db25jcmV0ZVNo
YXJlYWJsZUltYWdlQnVmZmVyLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db25jcmV0ZVNoYXJl
YWJsZUltYWdlQnVmZmVyLmgKaW5kZXggMzhjZjBkMjQwYTE2MjFlZGIzZGQyNjkyMWZjZTBhYzNi
ODAzM2Q5My4uZjg4NmJiMTEyZGFkMzdkZjUwMGMzZGEzYzYyMWQ0MDc0YzhkMmE4MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29uY3JldGVTaGFyZWFibGVJbWFnZUJ1ZmZlci5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvbmNyZXRlU2hhcmVhYmxlSW1hZ2VCdWZmZXIu
aApAQCAtMzYsMTUgKzM2LDEyIEBAIGNsYXNzIENvbmNyZXRlU2hhcmVhYmxlSW1hZ2VCdWZmZXIg
OiBwdWJsaWMgV2ViQ29yZTo6Q29uY3JldGVJbWFnZUJ1ZmZlcjxCYWNrZW5kCiAgICAgdXNpbmcg
QmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXI6Om1fYmFja2VuZDsKIAogcHVibGljOgotICAgIHN0YXRp
YyBhdXRvIGNyZWF0ZShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHNpemUsIFdlYkNvcmU6OlJl
bmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3Jl
OjpDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFdlYkNvcmU6OlBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0
KQorICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHNpemUs
IGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSBjb2xvclNwYWNlLCBX
ZWJDb3JlOjpQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCkKICAgICB7CiAgICAgICAgIHJldHVybiBC
YXNlQ29uY3JldGVJbWFnZUJ1ZmZlcjo6dGVtcGxhdGUgY3JlYXRlPENvbmNyZXRlU2hhcmVhYmxl
SW1hZ2VCdWZmZXI+KHNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3Jt
YXQsIG51bGxwdHIpOwogICAgIH0KIAotICAgIENvbmNyZXRlU2hhcmVhYmxlSW1hZ2VCdWZmZXIo
c3RkOjp1bmlxdWVfcHRyPEJhY2tlbmRUeXBlPiYmIGJhY2tlbmQpCi0gICAgICAgIDogQmFzZUNv
bmNyZXRlSW1hZ2VCdWZmZXIoV1RGTW92ZShiYWNrZW5kKSkKLSAgICB7Ci0gICAgfQorICAgIHVz
aW5nIEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyOjpCYXNlQ29uY3JldGVJbWFnZUJ1ZmZlcjsKIAog
ICAgIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBjcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5k
bGUoKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVy
VHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Jl
bW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbQppbmRleCBlODRjMzUwZTE2
NmEzODI0ZDZmZDVhZDQ0NjBlZWQyZmM4YmI0N2MxLi5mMmFlYmNmMmE5ODkzZTgwNmYxYzcwZDFk
ZDVhMTc0MGYzMGVlN2ZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVM
YXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW0KKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tCkBAIC0xMDUs
MTggKzEwNSwxMiBAQCB2b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjplbmNvZGUoSVBDOjpF
bmNvZGVyJiBlbmNvZGVyKSBjb25zdAogCiAgICAgT3B0aW9uYWw8SW1hZ2VCdWZmZXJCYWNrZW5k
SGFuZGxlPiBoYW5kbGU7CiAgICAgaWYgKG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXIpIHsKLSAg
ICAgICAgLy8gRklYTUU6IFdlIG5lZWQgdG8gZmxhdHRlbiB0aGUgY2xhc3MgaGllcmFyY2h5IHNv
IHdlIGNhbiBhdm9pZCB0aGlzIGJpZnVyY2F0aW9uLgotICAgICAgICBpZiAoV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkuc2hvdWxkVXNlUmVtb3RlUmVuZGVyaW5nRm9yKFdlYkNvcmU6OlJlbmRlcmlu
Z1B1cnBvc2U6OkRPTSkpIHsKLSAgICAgICAgICAgIGlmIChtX2FjY2VsZXJhdGVzRHJhd2luZykK
LSAgICAgICAgICAgICAgICBoYW5kbGUgPSBzdGF0aWNfY2FzdDxBY2NlbGVyYXRlZFJlbW90ZUlt
YWdlQnVmZmVyUHJveHkgKj4obV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlci5nZXQoKSktPmNyZWF0
ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSgpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgICAgIGhhbmRsZSA9IHN0YXRpY19jYXN0PFVuYWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZl
clByb3h5ICo+KG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXIuZ2V0KCkpLT5jcmVhdGVJbWFnZUJ1
ZmZlckJhY2tlbmRIYW5kbGUoKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmICht
X2FjY2VsZXJhdGVzRHJhd2luZykKLSAgICAgICAgICAgICAgICBoYW5kbGUgPSBzdGF0aWNfY2Fz
dDxDb25jcmV0ZVNoYXJlYWJsZUltYWdlQnVmZmVyPEFjY2VsZXJhdGVkSW1hZ2VCdWZmZXJTaGFy
ZWFibGVNYXBwZWRCYWNrZW5kPiAqPihtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVyLmdldCgpKS0+
Y3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAg
ICAgICAgICAgICAgaGFuZGxlID0gc3RhdGljX2Nhc3Q8Q29uY3JldGVTaGFyZWFibGVJbWFnZUJ1
ZmZlcjxVbmFjY2VsZXJhdGVkSW1hZ2VCdWZmZXJTaGFyZWFibGVCYWNrZW5kPiAqPihtX2Zyb250
QnVmZmVyLmltYWdlQnVmZmVyLmdldCgpKS0+Y3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxl
KCk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXItPnJl
bmRlcmluZ01vZGUoKSA9PSBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkKQor
ICAgICAgICAgICAgaGFuZGxlID0gc3RhdGljX2Nhc3Q8VW5hY2NlbGVyYXRlZEltYWdlQnVmZmVy
U2hhcmVhYmxlQmFja2VuZCY+KCptX2Zyb250QnVmZmVyLmltYWdlQnVmZmVyLT5iYWNrZW5kKCkp
LmNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSgpOworICAgICAgICBlbHNlIGlmIChtX2Zy
b250QnVmZmVyLmltYWdlQnVmZmVyLT5jYW5NYXBCYWNraW5nU3RvcmUoKSkKKyAgICAgICAgICAg
IGhhbmRsZSA9IHN0YXRpY19jYXN0PEFjY2VsZXJhdGVkSW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBw
ZWRCYWNrZW5kJj4oKm1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXItPmJhY2tlbmQoKSkuY3JlYXRl
SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGhh
bmRsZSA9IHN0YXRpY19jYXN0PEFjY2VsZXJhdGVkSW1hZ2VCdWZmZXJTaGFyZWFibGVCYWNrZW5k
Jj4oKm1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXItPmJhY2tlbmQoKSkuY3JlYXRlSW1hZ2VCdWZm
ZXJCYWNrZW5kSGFuZGxlKCk7CiAgICAgfQogCiAgICAgZW5jb2RlciA8PCBoYW5kbGU7CkBAIC0x
OTMsOSArMTg3LDkgQEAgdm9pZCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6c3dhcFRvVmFsaWRG
cm9udEJ1ZmZlcigpCiAgICAgfQogCiAgICAgaWYgKG1fYWNjZWxlcmF0ZXNEcmF3aW5nKQotICAg
ICAgICBtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVyID0gQ29uY3JldGVTaGFyZWFibGVJbWFnZUJ1
ZmZlcjxBY2NlbGVyYXRlZEltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkQmFja2VuZD46OmNyZWF0
ZShiYWNraW5nU3RvcmVTaXplKCksIFdlYkNvcmU6OlJlbmRlcmluZ01vZGU6OkFjY2VsZXJhdGVk
LCAxLCBXZWJDb3JlOjpDb2xvclNwYWNlOjpTUkdCLCBwaXhlbEZvcm1hdCgpKTsKKyAgICAgICAg
bV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlciA9IENvbmNyZXRlU2hhcmVhYmxlSW1hZ2VCdWZmZXI8
QWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZEJhY2tlbmQ+OjpjcmVhdGUoYmFj
a2luZ1N0b3JlU2l6ZSgpLCAxLCBXZWJDb3JlOjpDb2xvclNwYWNlOjpTUkdCLCBwaXhlbEZvcm1h
dCgpKTsKICAgICBlbHNlCi0gICAgICAgIG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXIgPSBDb25j
cmV0ZVNoYXJlYWJsZUltYWdlQnVmZmVyPFVuYWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlclNoYXJlYWJs
ZUJhY2tlbmQ+OjpjcmVhdGUoYmFja2luZ1N0b3JlU2l6ZSgpLCBXZWJDb3JlOjpSZW5kZXJpbmdN
b2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBXZWJDb3JlOjpDb2xvclNwYWNlOjpTUkdCLCBwaXhlbEZv
cm1hdCgpKTsKKyAgICAgICAgbV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlciA9IENvbmNyZXRlU2hh
cmVhYmxlSW1hZ2VCdWZmZXI8VW5hY2NlbGVyYXRlZEltYWdlQnVmZmVyU2hhcmVhYmxlQmFja2Vu
ZD46OmNyZWF0ZShiYWNraW5nU3RvcmVTaXplKCksIDEsIFdlYkNvcmU6OkNvbG9yU3BhY2U6OlNS
R0IsIHBpeGVsRm9ybWF0KCkpOwogfQogCiBib29sIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpk
aXNwbGF5KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5k
LmNwcAppbmRleCA4NTVjODk0OTY2YzU4N2JiMGU2YWVjNTExOWRlNGI5NDQ1MDg3ZDRiLi40Yzk2
NDJjMzFkNzM5NzFiZDdhZjQ1YmY1NTUyZWJmMWZlM2M0NzExIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFw
QmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9J
bWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwCkBAIC00MywxNyArNDMsMTcgQEAg
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChJ
bWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQpOwogCi1zdGQ6OnVuaXF1ZV9wdHI8SW1h
Z2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kPiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1h
cEJhY2tlbmQ6OmNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25T
Y2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgY29u
c3QgSG9zdFdpbmRvdyopCitzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRt
YXBCYWNrZW5kPiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmNyZWF0ZShjb25z
dCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBjb25zdCBIb3N0V2luZG93KikKIHsKLSAgICBBU1NF
UlQocGl4ZWxGb3JtYXQgPT0gUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBBU1NFUlQocGFyYW1l
dGVycy5waXhlbEZvcm1hdCA9PSBQaXhlbEZvcm1hdDo6QkdSQTgpOwogCi0gICAgSW50U2l6ZSBi
YWNrZW5kU2l6ZSA9IGNhbGN1bGF0ZUJhY2tlbmRTaXplKHNpemUsIHJlc29sdXRpb25TY2FsZSk7
CisgICAgSW50U2l6ZSBiYWNrZW5kU2l6ZSA9IGNhbGN1bGF0ZUJhY2tlbmRTaXplKHBhcmFtZXRl
cnMubG9naWNhbFNpemUsIHBhcmFtZXRlcnMucmVzb2x1dGlvblNjYWxlKTsKICAgICBpZiAoYmFj
a2VuZFNpemUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIFNoYXJl
YWJsZUJpdG1hcDo6Q29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uOwogI2lmIFBMQVRGT1JNKENP
Q09BKQotICAgIGNvbmZpZ3VyYXRpb24uY29sb3JTcGFjZSA9IHsgY2FjaGVkQ0dDb2xvclNwYWNl
KGNvbG9yU3BhY2UpIH07CisgICAgY29uZmlndXJhdGlvbi5jb2xvclNwYWNlID0geyBjYWNoZWRD
R0NvbG9yU3BhY2UocGFyYW1ldGVycy5jb2xvclNwYWNlKSB9OwogI2VuZGlmCiAgICAgYXV0byBi
aXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShiYWNrZW5kU2l6ZSwgY29u
ZmlndXJhdGlvbik7CiAgICAgaWYgKCFiaXRtYXApCkBAIC02MywxMCArNjMsMTAgQEAgc3RkOjp1
bmlxdWVfcHRyPEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZD4gSW1hZ2VCdWZmZXJT
aGFyZWFibGVCaXRtYXBCYWMKICAgICBpZiAoIWNvbnRleHQpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCi0gICAgcmV0dXJuIG1ha2VVbmlxdWU8SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBC
YWNrZW5kPihzaXplLCBiYWNrZW5kU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBw
aXhlbEZvcm1hdCwgV1RGTW92ZShiaXRtYXApLCBXVEZNb3ZlKGNvbnRleHQpKTsKKyAgICByZXR1
cm4gbWFrZVVuaXF1ZTxJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ+KHBhcmFtZXRl
cnMsIFdURk1vdmUoYml0bWFwKSwgV1RGTW92ZShjb250ZXh0KSk7CiB9CiAKLXN0ZDo6dW5pcXVl
X3B0cjxJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ+IEltYWdlQnVmZmVyU2hhcmVh
YmxlQml0bWFwQmFja2VuZDo6Y3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNv
bnN0IEludFNpemUmIGJhY2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3Bh
Y2UgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIEltYWdlQnVmZmVyQmFja2Vu
ZEhhbmRsZSBoYW5kbGUpCitzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRt
YXBCYWNrZW5kPiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmNyZWF0ZShjb25z
dCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgaGFuZGxl
KQogewogICAgIGlmICghV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxTaGFyZWFibGVCaXRtYXA6Okhh
bmRsZT4oaGFuZGxlKSkgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTgxLDEx
ICs4MSwxMSBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNr
ZW5kPiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhYwogICAgIGlmICghY29udGV4dCkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gbWFrZVVuaXF1ZTxJbWFnZUJ1ZmZl
clNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ+KGxvZ2ljYWxTaXplLCBiYWNrZW5kU2l6ZSwgcmVzb2x1
dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCwgV1RGTW92ZShiaXRtYXApLCBXVEZN
b3ZlKGNvbnRleHQpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxJbWFnZUJ1ZmZlclNoYXJlYWJs
ZUJpdG1hcEJhY2tlbmQ+KHBhcmFtZXRlcnMsIFdURk1vdmUoYml0bWFwKSwgV1RGTW92ZShjb250
ZXh0KSk7CiB9CiAKLUltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6SW1hZ2VCdWZm
ZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNv
bnN0IEludFNpemUmIHBoeXNpY2FsU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNw
YWNlIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBSZWZQdHI8U2hhcmVhYmxl
Qml0bWFwPiYmIGJpdG1hcCwgc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzQ29udGV4dD4mJiBjb250
ZXh0KQotICAgIDogUGxhdGZvcm1JbWFnZUJ1ZmZlckJhY2tlbmQobG9naWNhbFNpemUsIHBoeXNp
Y2FsU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCkKK0ltYWdl
QnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBC
YWNrZW5kKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIFJlZlB0cjxTaGFyZWFibGVCaXRt
YXA+JiYgYml0bWFwLCBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NDb250ZXh0PiYmIGNvbnRleHQp
CisgICAgOiBQbGF0Zm9ybUltYWdlQnVmZmVyQmFja2VuZChwYXJhbWV0ZXJzKQogICAgICwgbV9i
aXRtYXAoV1RGTW92ZShiaXRtYXApKQogICAgICwgbV9jb250ZXh0KFdURk1vdmUoY29udGV4dCkp
CiB7CkBAIC05OCw2ICs5OCwxMSBAQCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgSW1hZ2VCdWZm
ZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlckJhYwogICAgIHJldHVy
biBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUoV1RGTW92ZShoYW5kbGUpKTsKIH0KIAorSW50U2l6
ZSBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmJhY2tlbmRTaXplKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9iaXRtYXAtPnNpemUoKTsKK30KKwogUmVmUHRyPE5hdGl2ZUltYWdl
PiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmNvcHlOYXRpdmVJbWFnZShCYWNr
aW5nU3RvcmVDb3B5KSBjb25zdAogewogI2lmIFVTRShDRykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBC
YWNrZW5kLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVm
ZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5oCmluZGV4IDBjN2YwNDdmODgzNWU0YjhkNjNjMTVm
NDFlYzkyMTAyZTQ1ODUzOTkuLjU1NTA2YTQ5ZDAzZTM5ZTg4ZTAzNjFlNDkxNTVmMTMxZDc5OTAx
MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1h
Z2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuaApA
QCAtNDMsMTQgKzQzLDE2IEBAIGNsYXNzIEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2Vu
ZCA6IHB1YmxpYyBXZWJDb3JlOjpQbGF0Zm9ybUltYWdlQnVmZmVyQmFjCiAgICAgV1RGX01BS0Vf
SVNPX0FMTE9DQVRFRChJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQpOwogICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZCk7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlclNoYXJlYWJsZUJp
dG1hcEJhY2tlbmQ+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxTaXpl
LCBjb25zdCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UsIFdlYkNv
cmU6OlBpeGVsRm9ybWF0LCBjb25zdCBXZWJDb3JlOjpIb3N0V2luZG93Kik7Ci0gICAgc3RhdGlj
IHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ+IGNyZWF0
ZShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBXZWJDb3JlOjpJ
bnRTaXplJiBpbnRlcm5hbFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29s
b3JTcGFjZSwgV2ViQ29yZTo6UGl4ZWxGb3JtYXQsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSk7
CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJh
Y2tlbmQ+IGNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiwgY29uc3QgV2ViQ29yZTo6SG9zdFdpbmRv
dyopOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRt
YXBCYWNrZW5kPiBjcmVhdGUoY29uc3QgUGFyYW1ldGVycyYsIEltYWdlQnVmZmVyQmFja2VuZEhh
bmRsZSk7CiAKLSAgICBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQoY29uc3QgV2Vi
Q29yZTo6RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgcGh5
c2ljYWxTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UsIFdl
YkNvcmU6OlBpeGVsRm9ybWF0LCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiYmLCBzdGQ6OnVuaXF1
ZV9wdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0PiYmKTsKKyAgICBJbWFnZUJ1ZmZlclNoYXJl
YWJsZUJpdG1hcEJhY2tlbmQoY29uc3QgUGFyYW1ldGVycyYsIFJlZlB0cjxTaGFyZWFibGVCaXRt
YXA+JiYsIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ+JiYpOwogCiAg
ICAgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRs
ZSgpIGNvbnN0OwogCiAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gKm1fY29udGV4dDsgfQorICAgIAorICAgIFdlYkNvcmU6Oklu
dFNpemUgYmFja2VuZFNpemUoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIFJlZlB0cjxXZWJDb3Jl
OjpOYXRpdmVJbWFnZT4gY29weU5hdGl2ZUltYWdlKFdlYkNvcmU6OkJhY2tpbmdTdG9yZUNvcHkg
PSBXZWJDb3JlOjpDb3B5QmFja2luZ1N0b3JlKSBjb25zdCBvdmVycmlkZTsKICAgICBSZWZQdHI8
V2ViQ29yZTo6SW1hZ2U+IGNvcHlJbWFnZShXZWJDb3JlOjpCYWNraW5nU3RvcmVDb3B5ID0gV2Vi
Q29yZTo6Q29weUJhY2tpbmdTdG9yZSwgV2ViQ29yZTo6UHJlc2VydmVSZXNvbHV0aW9uID0gV2Vi
Q29yZTo6UHJlc2VydmVSZXNvbHV0aW9uOjpObykgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1BsYXRmb3JtUmVtb3RlSW1h
Z2VCdWZmZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9Q
bGF0Zm9ybVJlbW90ZUltYWdlQnVmZmVyUHJveHkuaAppbmRleCBhMDA4MjA2MmE0MGI1MjdkMTNh
ZTEzOWFiMDg2YmUzMDA5OWQ2ZTc2Li5lMDJkZTZkYWQ2NDdmZjY1MzYyYjRjYmY4NTk3NjFkOGY3
OGY4Y2ExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1BsYXRmb3JtUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUGxhdGZvcm1SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgKQEAg
LTM4LDE4ICszOCw0IEBAIHVzaW5nIEFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXJNYXBwZWRQ
cm94eSA9IFJlbW90ZUltYWdlQnVmZmVyUHJveHk8QWNjZWxlcmF0CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdAogCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYktpdDo6VW5hY2NlbGVy
YXRlZFJlbW90ZUltYWdlQnVmZmVyUHJveHkpCi0gICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0
IFdlYkNvcmU6OkltYWdlQnVmZmVyJiBpbWFnZUJ1ZmZlcikgeyByZXR1cm4gaW1hZ2VCdWZmZXIu
cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCkgJiYgIWltYWdlQnVmZmVyLmlzQWNjZWxlcmF0
ZWQoKTsgfQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQotCi0jaWYgSEFWRShJT1NVUkZB
Q0UpCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYktpdDo6QWNjZWxlcmF0ZWRSZW1v
dGVJbWFnZUJ1ZmZlclByb3h5KQotICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3Jl
OjpJbWFnZUJ1ZmZlciYgaW1hZ2VCdWZmZXIpIHsgcmV0dXJuIGltYWdlQnVmZmVyLnJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllcigpICYmIGltYWdlQnVmZmVyLmlzQWNjZWxlcmF0ZWQoKSAmJiAh
aW1hZ2VCdWZmZXIuY2FuTWFwQmFja2luZ1N0b3JlKCk7IH0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJ
VFNfRU5EKCkKLQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJLaXQ6OkFjY2VsZXJh
dGVkUmVtb3RlSW1hZ2VCdWZmZXJNYXBwZWRQcm94eSkKLSAgICBzdGF0aWMgYm9vbCBpc1R5cGUo
Y29uc3QgV2ViQ29yZTo6SW1hZ2VCdWZmZXImIGltYWdlQnVmZmVyKSB7IHJldHVybiBpbWFnZUJ1
ZmZlci5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSAmJiBpbWFnZUJ1ZmZlci5pc0FjY2Vs
ZXJhdGVkKCkgJiYgaW1hZ2VCdWZmZXIuY2FuTWFwQmFja2luZ1N0b3JlKCk7IH0KLVNQRUNJQUxJ
WkVfVFlQRV9UUkFJVFNfRU5EKCkKLSNlbmRpZgotCiAjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9D
RVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9S
ZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaAppbmRleCA1MWJkNTcxMjk1OGFmMTJhMjMx
NWQ0MWJhM2QyZDZiOWVkNTdmMmJhLi4yMjgyZTEzYWFiZjUzZDY0MmU4NDRkNDI3MDFlMDY2NWMx
ZDU0MzgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaApAQCAtNTAsMTQgKzUwLDE2IEBA
IGNsYXNzIFJlbW90ZUltYWdlQnVmZmVyUHJveHkgOiBwdWJsaWMgV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OkltYWdlQnVmZmVyPEJhY2tlbmRUCiAgICAgdXNpbmcgQmFzZURpc3BsYXlMaXN0SW1hZ2VC
dWZmZXI6Om1fYmFja2VuZDsKICAgICB1c2luZyBCYXNlRGlzcGxheUxpc3RJbWFnZUJ1ZmZlcjo6
bV9kcmF3aW5nQ29udGV4dDsKICAgICB1c2luZyBCYXNlRGlzcGxheUxpc3RJbWFnZUJ1ZmZlcjo6
bV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI7CisgICAgdXNpbmcgQmFzZURpc3BsYXlMaXN0
SW1hZ2VCdWZmZXI6OnJlc29sdXRpb25TY2FsZTsKIAogcHVibGljOgotICAgIHN0YXRpYyBSZWZQ
dHI8UmVtb3RlSW1hZ2VCdWZmZXJQcm94eT4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6
ZSYgc2l6ZSwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNv
bHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgV2ViQ29yZTo6UGl4
ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSYgcmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5KQorICAgIHN0YXRpYyBSZWZQdHI8UmVtb3RlSW1hZ2VCdWZm
ZXJQcm94eT4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVz
b2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFdlYkNvcmU6OlBp
eGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkmIHJlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKICAgICB7CiAgICAgICAgIGlmIChCYWNrZW5kVHlwZTo6
Y2FsY3VsYXRlQmFja2VuZFNpemUoc2l6ZSwgcmVzb2x1dGlvblNjYWxlKS5pc0VtcHR5KCkpCiAg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IFJlbW90ZUltYWdlQnVmZmVyUHJveHkoc2l6ZSwgcmVuZGVyaW5nTW9kZSwgcmVzb2x1dGlvblNj
YWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCwgcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
KSk7CisgICAgICAgIGF1dG8gcGFyYW1ldGVycyA9IFdlYkNvcmU6OkltYWdlQnVmZmVyQmFja2Vu
ZDo6UGFyYW1ldGVycyB7IHNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxG
b3JtYXQgfTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBSZW1vdGVJbWFnZUJ1ZmZlclBy
b3h5KHBhcmFtZXRlcnMsIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkpOwogICAgIH0KIAog
ICAgIH5SZW1vdGVJbWFnZUJ1ZmZlclByb3h5KCkKQEAgLTY5LDI3ICs3MSw2IEBAIHB1YmxpYzoK
ICAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHktPnJlbGVhc2VSZW1vdGVSZXNv
dXJjZShtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAgfQogCi0gICAgdm9pZCBj
bGVhckJhY2tlbmQoKSB7IG1fYmFja2VuZCA9IG51bGxwdHI7IH0KLQotICAgIHZvaWQgY3JlYXRl
QmFja2VuZChjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBXZWJD
b3JlOjpJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3Jl
OjpDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFdlYkNvcmU6OlBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0
LCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgaGFuZGxlKQotICAgIHsKLSAgICAgICAgQVNTRVJU
KCFtX2JhY2tlbmQpOwotICAgICAgICBtX2JhY2tlbmQgPSBCYWNrZW5kVHlwZTo6Y3JlYXRlKGxv
Z2ljYWxTaXplLCBiYWNrZW5kU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhl
bEZvcm1hdCwgV1RGTW92ZShoYW5kbGUpKTsKLSAgICB9Ci0KLSAgICB2b2lkIGRpZEZsdXNoKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpGbHVzaElkZW50aWZpZXIgZmx1c2hJZGVudGlmaWVyKQotICAg
IHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3JlY2VpdmVkRmx1c2hJZGVudGlm
aWVyTG9jayk7Ci0gICAgICAgIG1fcmVjZWl2ZWRGbHVzaElkZW50aWZpZXIgPSBmbHVzaElkZW50
aWZpZXI7Ci0gICAgICAgIG1fcmVjZWl2ZWRGbHVzaElkZW50aWZpZXJDaGFuZ2VkQ29uZGl0aW9u
Lm5vdGlmeUFsbCgpOwotICAgIH0KLQotICAgIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgc2l6
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQotICAgIFdlYkNvcmU6OlJlbmRlcmluZ01vZGUg
cmVuZGVyaW5nTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyaW5nTW9kZTsgfQotICAgIGZs
b2F0IHJlc29sdXRpb25TY2FsZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcmVzb2x1dGlvblNj
YWxlOyB9Ci0gICAgV2ViQ29yZTo6Q29sb3JTcGFjZSBjb2xvclNwYWNlKCkgY29uc3QgeyByZXR1
cm4gbV9jb2xvclNwYWNlOyB9Ci0gICAgV2ViQ29yZTo6UGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQo
KSBjb25zdCB7IHJldHVybiBtX3BpeGVsRm9ybWF0OyB9Ci0KICAgICBJbWFnZUJ1ZmZlckJhY2tl
bmRIYW5kbGUgY3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKCkKICAgICB7CiAgICAgICAg
IGVuc3VyZUJhY2tlbmRDcmVhdGVkKCk7CkBAIC0xMTIsMTUgKzkzLDkgQEAgcHVibGljOgogICAg
IH0KIAogcHJvdGVjdGVkOgotICAgIGZyaWVuZCBjbGFzcyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
OwotICAgIFJlbW90ZUltYWdlQnVmZmVyUHJveHkoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBz
aXplLCBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRp
b25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSBjb2xvclNwYWNlLCBXZWJDb3JlOjpQaXhlbEZv
cm1hdCBwaXhlbEZvcm1hdCwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5JiByZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHkpCi0gICAgICAgIDogQmFzZURpc3BsYXlMaXN0SW1hZ2VCdWZmZXIo
c2l6ZSwgdGhpcykKKyAgICBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5KGNvbnN0IFdlYkNvcmU6Oklt
YWdlQnVmZmVyQmFja2VuZDo6UGFyYW1ldGVycyYgcGFyYW1ldGVycywgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5JiByZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpCisgICAgICAgIDogQmFz
ZURpc3BsYXlMaXN0SW1hZ2VCdWZmZXIocGFyYW1ldGVycywgdGhpcykKICAgICAgICAgLCBtX3Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eShtYWtlV2Vha1B0cihyZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHkpKQotICAgICAgICAsIG1fc2l6ZShzaXplKQotICAgICAgICAsIG1fcmVuZGVyaW5n
TW9kZShyZW5kZXJpbmdNb2RlKQotICAgICAgICAsIG1fcmVzb2x1dGlvblNjYWxlKHJlc29sdXRp
b25TY2FsZSkKLSAgICAgICAgLCBtX2NvbG9yU3BhY2UoY29sb3JTcGFjZSkKLSAgICAgICAgLCBt
X3BpeGVsRm9ybWF0KHBpeGVsRm9ybWF0KQogICAgIHsKICAgICAgICAgQVNTRVJUKG1fcmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5KTsKICAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHktPnJlbW90ZVJlc291cmNlQ2FjaGVQcm94eSgpLmNhY2hlSW1hZ2VCdWZmZXIoKnRoaXMp
OwpAQCAtMTMxLDYgKzEwNiwxMyBAQCBwcm90ZWN0ZWQ6CiAKICAgICBib29sIGhhc1BlbmRpbmdG
bHVzaCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VudEZsdXNoSWRlbnRpZmllciAhPSBtX3JlY2VpdmVk
Rmx1c2hJZGVudGlmaWVyOyB9CiAKKyAgICB2b2lkIGRpZEZsdXNoKFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpGbHVzaElkZW50aWZpZXIgZmx1c2hJZGVudGlmaWVyKSBvdmVycmlkZQorICAgIHsKKyAg
ICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3JlY2VpdmVkRmx1c2hJZGVudGlmaWVyTG9j
ayk7CisgICAgICAgIG1fcmVjZWl2ZWRGbHVzaElkZW50aWZpZXIgPSBmbHVzaElkZW50aWZpZXI7
CisgICAgICAgIG1fcmVjZWl2ZWRGbHVzaElkZW50aWZpZXJDaGFuZ2VkQ29uZGl0aW9uLm5vdGlm
eUFsbCgpOworICAgIH0KKwogICAgIHZvaWQgd2FpdEZvckRpZEZsdXNoV2l0aFRpbWVvdXQoKQog
ICAgIHsKICAgICAgICAgaWYgKCFtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKQEAgLTE0
NSw3ICsxMjcsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgQmFja2VuZFR5cGUqIGVuc3VyZUJhY2tlbmRD
cmVhdGVkKCkgY29uc3Qgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIGlmICghbV9iYWNrZW5kICYm
IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KQotICAgICAgICAgICAgbV9yZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHktPndhaXRGb3JJbWFnZUJ1ZmZlckJhY2tlbmRXYXNDcmVhdGVkKCk7
CisgICAgICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+d2FpdEZvckRpZENy
ZWF0ZUltYWdlQnVmZmVyQmFja2VuZCgpOwogICAgICAgICByZXR1cm4gbV9iYWNrZW5kLmdldCgp
OwogICAgIH0KIApAQCAtMTY5LDggKzE1MSw4IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIHB1dElt
YWdlRGF0YShXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIGlucHV0Rm9ybWF0LCBjb25z
dCBXZWJDb3JlOjpJbWFnZURhdGEmIGltYWdlRGF0YSwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYg
c3JjUmVjdCwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGRlc3RQb2ludCA9IHsgfSwgV2ViQ29y
ZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBkZXN0Rm9ybWF0ID0gV2ViQ29yZTo6QWxwaGFQcmVt
dWx0aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGllZCkgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIC8v
IFRoZSBtYXRoIGluc2lkZSBJbWFnZURhdGE6OmNyZWF0ZSgpIGRvZXNuJ3QgYWdyZWUgd2l0aCB0
aGUgbWF0aCBpbnNpZGUgSW1hZ2VCdWZmZXJCYWNrZW5kOjpwdXRJbWFnZURhdGEoKSBhYm91dCBo
b3cgbV9yZXNvbHV0aW9uU2NhbGUgaW50ZXJhY3RzIHdpdGggdGhlIGRhdGEgaW4gdGhlIEltYWdl
QnVmZmVyLgotICAgICAgICAvLyBUaGlzIG1lYW5zIHRoYXQgcHV0SW1hZ2VEYXRhKCkgaXMgb25s
eSBjYWxsZWQgd2hlbiBtX3Jlc29sdXRpb25TY2FsZSA9PSAxLgotICAgICAgICBBU1NFUlRfSU1Q
TElFUyhtX2JhY2tlbmQsIG1fYmFja2VuZC0+cmVzb2x1dGlvblNjYWxlKCkgPT0gMSk7CisgICAg
ICAgIC8vIFRoaXMgbWVhbnMgdGhhdCBwdXRJbWFnZURhdGEoKSBpcyBvbmx5IGNhbGxlZCB3aGVu
IHJlc29sdXRpb25TY2FsZSgpID09IDEuCisgICAgICAgIEFTU0VSVChyZXNvbHV0aW9uU2NhbGUo
KSA9PSAxKTsKICAgICAgICAgbV9kcmF3aW5nQ29udGV4dC5yZWNvcmRlcigpLnB1dEltYWdlRGF0
YShpbnB1dEZvcm1hdCwgaW1hZ2VEYXRhLCBzcmNSZWN0LCBkZXN0UG9pbnQsIGRlc3RGb3JtYXQp
OwogICAgIH0KIApAQCAtMjAwLDEyICsxODIsMTIgQEAgcHJvdGVjdGVkOgogCiAgICAgICAgIG1f
c2VudEZsdXNoSWRlbnRpZmllciA9IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpGbHVzaElkZW50aWZp
ZXI6OmdlbmVyYXRlKCk7CiAgICAgICAgIGRpc3BsYXlMaXN0LnRlbXBsYXRlIGFwcGVuZDxXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6Rmx1c2hDb250ZXh0PihtX3NlbnRGbHVzaElkZW50aWZpZXIpOwot
ICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+c3VibWl0RGlzcGxheUxpc3Qo
ZGlzcGxheUxpc3QsIG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKLSAgICAgICAgbV9p
dGVtQ291bnRJbkN1cnJlbnREaXNwbGF5TGlzdCA9IDA7CisgICAgICAgIHN1Ym1pdERpc3BsYXlM
aXN0KGRpc3BsYXlMaXN0KTsKICAgICAgICAgZGlzcGxheUxpc3QuY2xlYXIoKTsKKyAgICAgICAg
bV9pdGVtQ291bnRJbkN1cnJlbnREaXNwbGF5TGlzdCA9IDA7CiAgICAgfQogCi0gICAgdm9pZCBz
dWJtaXREaXNwbGF5TGlzdChjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Qm
IGRpc3BsYXlMaXN0KQorICAgIHZvaWQgc3VibWl0RGlzcGxheUxpc3QoY29uc3QgV2ViQ29yZTo6
RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCkgb3ZlcnJpZGUKICAgICB7CiAg
ICAgICAgIGlmICghbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkgfHwgZGlzcGxheUxpc3Qu
aXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzUzLDExICszMzUsNiBAQCBwcm90
ZWN0ZWQ6CiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZsdXNoSWRlbnRpZmllciBtX3JlY2Vp
dmVkRmx1c2hJZGVudGlmaWVyOwogICAgIFdlYWtQdHI8UmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5PiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTsKICAgICBzaXplX3QgbV9pdGVtQ291
bnRJbkN1cnJlbnREaXNwbGF5TGlzdCB7IDAgfTsKLSAgICBXZWJDb3JlOjpGbG9hdFNpemUgbV9z
aXplOwotICAgIFdlYkNvcmU6OlJlbmRlcmluZ01vZGUgbV9yZW5kZXJpbmdNb2RlOwotICAgIGZs
b2F0IG1fcmVzb2x1dGlvblNjYWxlOwotICAgIFdlYkNvcmU6OkNvbG9yU3BhY2UgbV9jb2xvclNw
YWNlOwotICAgIFdlYkNvcmU6OlBpeGVsRm9ybWF0IG1fcGl4ZWxGb3JtYXQ7CiB9OwogCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBCYWNrZW5kVHlwZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5LmNwcAppbmRleCBjOGEzMjMwZjk3OTgxOWY5ZTlkZjAzMzZlOTQ0YjBhMjk3N2Y4ZDEx
Li43NTJjNzhkMjFiZDEwZDY5ZDA5MTBjYWEwODUyNzJjYWVjMTU0MjU5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9S
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwCkBAIC03MCwyNiArNzAsMTUgQEAgdm9pZCBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmNvbm5lY3RUb0dQVVByb2Nlc3MoKQogICAgIHNl
bmQoTWVzc2FnZXM6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNyZWF0ZVJlbmRlcmluZ0Jh
Y2tlbmQobV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciksIDApOwogfQogCi10ZW1wbGF0ZTx0
eXBlbmFtZSBUPgotc3RhdGljIHZvaWQgcmVjcmVhdGVJbWFnZUJ1ZmZlcihSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHkmIHByb3h5LCBUJiBpbWFnZUJ1ZmZlciwgUmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyIHJlc291cmNlSWRlbnRpZmllciwgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIg
cmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpCi17Ci0gICAgaW1hZ2VCdWZmZXIuY2xlYXJCYWNr
ZW5kKCk7Ci0gICAgcHJveHkuc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6
Q3JlYXRlSW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIuc2l6ZSgpLCBpbWFnZUJ1ZmZlci5yZW5kZXJp
bmdNb2RlKCksIGltYWdlQnVmZmVyLnJlc29sdXRpb25TY2FsZSgpLCBpbWFnZUJ1ZmZlci5jb2xv
clNwYWNlKCksIGltYWdlQnVmZmVyLnBpeGVsRm9ybWF0KCksIHJlc291cmNlSWRlbnRpZmllciks
IHJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKLX0KLQogdm9pZCBSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHk6OnJlZXN0YWJsaXNoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKQogewogICAgIGNv
bm5lY3RUb0dQVVByb2Nlc3MoKTsKIAotICAgIGZvciAoYXV0byYgcGFpciA6IG1fcmVtb3RlUmVz
b3VyY2VDYWNoZVByb3h5LmltYWdlQnVmZmVycygpKSB7Ci0gICAgICAgIGlmIChhdXRvJiBiYXNl
SW1hZ2VCdWZmZXIgPSBwYWlyLnZhbHVlKSB7Ci0gICAgICAgICAgICBpZiAoaXM8QWNjZWxlcmF0
ZWRSZW1vdGVJbWFnZUJ1ZmZlck1hcHBlZFByb3h5PigqYmFzZUltYWdlQnVmZmVyKSkKLSAgICAg
ICAgICAgICAgICByZWNyZWF0ZUltYWdlQnVmZmVyKCp0aGlzLCBkb3duY2FzdDxBY2NlbGVyYXRl
ZFJlbW90ZUltYWdlQnVmZmVyTWFwcGVkUHJveHk+KCpiYXNlSW1hZ2VCdWZmZXIpLCBwYWlyLmtl
eSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7Ci0gICAgICAgICAgICBlbHNlIGlmIChp
czxBY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyUHJveHk+KCpiYXNlSW1hZ2VCdWZmZXIpKQot
ICAgICAgICAgICAgICAgIHJlY3JlYXRlSW1hZ2VCdWZmZXIoKnRoaXMsIGRvd25jYXN0PEFjY2Vs
ZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXJQcm94eT4oKmJhc2VJbWFnZUJ1ZmZlciksIHBhaXIua2V5
LCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgICAgICByZWNyZWF0ZUltYWdlQnVmZmVyKCp0aGlzLCBkb3duY2FzdDxVbmFjY2VsZXJh
dGVkUmVtb3RlSW1hZ2VCdWZmZXJQcm94eT4oKmJhc2VJbWFnZUJ1ZmZlciksIHBhaXIua2V5LCBt
X3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKLSAgICAgICAgfQorICAgIGZvciAoYXV0byYg
aW1hZ2VCdWZmZXIgOiBtX3JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5pbWFnZUJ1ZmZlcnMoKS52
YWx1ZXMoKSkgeworICAgICAgICBpZiAoIWltYWdlQnVmZmVyKQorICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OkNyZWF0
ZUltYWdlQnVmZmVyKGltYWdlQnVmZmVyLT5sb2dpY2FsU2l6ZSgpLCBpbWFnZUJ1ZmZlci0+cmVu
ZGVyaW5nTW9kZSgpLCBpbWFnZUJ1ZmZlci0+cmVzb2x1dGlvblNjYWxlKCksIGltYWdlQnVmZmVy
LT5jb2xvclNwYWNlKCksIGltYWdlQnVmZmVyLT5waXhlbEZvcm1hdCgpLCBpbWFnZUJ1ZmZlci0+
cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCkpLCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlm
aWVyKTsKKyAgICAgICAgaW1hZ2VCdWZmZXItPmNsZWFyQmFja2VuZCgpOwogICAgIH0KIH0KIApA
QCAtMTE0LDEwICsxMDMsMTAgQEAgdWludDY0X3QgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
OjptZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fcmVuZGVy
aW5nQmFja2VuZElkZW50aWZpZXIudG9VSW50NjQoKTsKIH0KIAotYm9vbCBSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHk6OndhaXRGb3JJbWFnZUJ1ZmZlckJhY2tlbmRXYXNDcmVhdGVkKCkKK2Jv
b2wgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Ojp3YWl0Rm9yRGlkQ3JlYXRlSW1hZ2VCdWZm
ZXJCYWNrZW5kKCkKIHsKICAgICBSZWY8SVBDOjpDb25uZWN0aW9uPiBjb25uZWN0aW9uID0gV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0
aW9uKCk7Ci0gICAgcmV0dXJuIGNvbm5lY3Rpb24tPndhaXRGb3JBbmREaXNwYXRjaEltbWVkaWF0
ZWx5PE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OkltYWdlQnVmZmVyQmFj
a2VuZFdhc0NyZWF0ZWQ+KG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIsIDFfcywgSVBDOjpX
YWl0Rm9yT3B0aW9uOjpJbnRlcnJ1cHRXYWl0aW5nSWZTeW5jTWVzc2FnZUFycml2ZXMpOworICAg
IHJldHVybiBjb25uZWN0aW9uLT53YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseTxNZXNzYWdl
czo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpEaWRDcmVhdGVJbWFnZUJ1ZmZlckJhY2tl
bmQ+KG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIsIDFfcywgSVBDOjpXYWl0Rm9yT3B0aW9u
OjpJbnRlcnJ1cHRXYWl0aW5nSWZTeW5jTWVzc2FnZUFycml2ZXMpOwogfQogCiBib29sIFJlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6d2FpdEZvckRpZEZsdXNoKCkKQEAgLTEzNSwxMyArMTI0
LDEzIEBAIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Ojpj
cmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpCiAgICAgICAgIC8vIHdlIG5lZWQgdG8gY3Jl
YXRlIEltYWdlQnVmZmVycyBmb3IgZS5nLiBDYW52YXMgdGhhdCBhcmUgYWN0dWFsbHkgbWFwcGVk
IGludG8gdGhlCiAgICAgICAgIC8vIFdlYiBDb250ZW50IHByb2Nlc3MsIHNvIHRoZXkgY2FuIGJl
IHBhaW50ZWQgaW50byB0aGUgdGlsZXMuCiAgICAgICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkuc2hvdWxkVXNlUmVtb3RlUmVuZGVyaW5nRm9yKFJlbmRlcmluZ1B1cnBvc2U6OkRPTSkp
Ci0gICAgICAgICAgICBpbWFnZUJ1ZmZlciA9IEFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXJN
YXBwZWRQcm94eTo6Y3JlYXRlKHNpemUsIHJlbmRlcmluZ01vZGUsIHJlc29sdXRpb25TY2FsZSwg
Y29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQsICp0aGlzKTsKKyAgICAgICAgICAgIGltYWdlQnVmZmVy
ID0gQWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlck1hcHBlZFByb3h5OjpjcmVhdGUoc2l6ZSwg
cmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCwgKnRoaXMpOwogICAgICAg
ICBlbHNlCi0gICAgICAgICAgICBpbWFnZUJ1ZmZlciA9IEFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VC
dWZmZXJQcm94eTo6Y3JlYXRlKHNpemUsIHJlbmRlcmluZ01vZGUsIHJlc29sdXRpb25TY2FsZSwg
Y29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQsICp0aGlzKTsKKyAgICAgICAgICAgIGltYWdlQnVmZmVy
ID0gQWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlclByb3h5OjpjcmVhdGUoc2l6ZSwgcmVzb2x1
dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCwgKnRoaXMpOwogICAgIH0KIAogICAg
IGlmICghaW1hZ2VCdWZmZXIpCi0gICAgICAgIGltYWdlQnVmZmVyID0gVW5hY2NlbGVyYXRlZFJl
bW90ZUltYWdlQnVmZmVyUHJveHk6OmNyZWF0ZShzaXplLCByZW5kZXJpbmdNb2RlLCByZXNvbHV0
aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0LCAqdGhpcyk7CisgICAgICAgIGltYWdl
QnVmZmVyID0gVW5hY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyUHJveHk6OmNyZWF0ZShzaXpl
LCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0LCAqdGhpcyk7CiAKICAg
ICBpZiAoaW1hZ2VCdWZmZXIpIHsKICAgICAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVy
aW5nQmFja2VuZDo6Q3JlYXRlSW1hZ2VCdWZmZXIoc2l6ZSwgcmVuZGVyaW5nTW9kZSwgcmVzb2x1
dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCwgaW1hZ2VCdWZmZXItPnJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllcigpKSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7CkBA
IC0xOTIsMzIgKzE4MSwyNCBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6cmVs
ZWFzZVJlbW90ZVJlc291cmNlKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZgogICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OlJlbGVhc2VSZW1vdGVSZXNvdXJjZShyZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpLCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsK
IH0KIAotdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmltYWdlQnVmZmVyQmFja2Vu
ZFdhc0NyZWF0ZWQoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50U2l6ZSYg
YmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNl
LCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGhhbmRs
ZSwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cikKK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpkaWRDcmVhdGVJbWFnZUJ1ZmZl
ckJhY2tlbmQoSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGhhbmRsZSwgUmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKIHsKICAgICBhdXRvIGlt
YWdlQnVmZmVyID0gbV9yZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY2FjaGVkSW1hZ2VCdWZmZXIo
cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBpZiAoaXM8QWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlck1h
cHBlZFByb3h5PigqaW1hZ2VCdWZmZXIpKQotICAgICAgICBkb3duY2FzdDxBY2NlbGVyYXRlZFJl
bW90ZUltYWdlQnVmZmVyTWFwcGVkUHJveHk+KCppbWFnZUJ1ZmZlcikuY3JlYXRlQmFja2VuZChs
b2dpY2FsU2l6ZSwgYmFja2VuZFNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4
ZWxGb3JtYXQsIFdURk1vdmUoaGFuZGxlKSk7Ci0gICAgZWxzZSBpZiAoaXM8QWNjZWxlcmF0ZWRS
ZW1vdGVJbWFnZUJ1ZmZlclByb3h5PigqaW1hZ2VCdWZmZXIpKQotICAgICAgICBkb3duY2FzdDxB
Y2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyUHJveHk+KCppbWFnZUJ1ZmZlcikuY3JlYXRlQmFj
a2VuZChsb2dpY2FsU2l6ZSwgYmFja2VuZFNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFj
ZSwgcGl4ZWxGb3JtYXQsIFdURk1vdmUoaGFuZGxlKSk7CisgICAgaWYgKGltYWdlQnVmZmVyLT5y
ZW5kZXJpbmdNb2RlKCkgPT0gUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCkKKyAgICAgICAg
aW1hZ2VCdWZmZXItPnNldEJhY2tlbmQoVW5hY2NlbGVyYXRlZEltYWdlQnVmZmVyU2hhcmVhYmxl
QmFja2VuZDo6Y3JlYXRlKGltYWdlQnVmZmVyLT5wYXJhbWV0ZXJzKCksIFdURk1vdmUoaGFuZGxl
KSkpOworICAgIGVsc2UgaWYgKGltYWdlQnVmZmVyLT5jYW5NYXBCYWNraW5nU3RvcmUoKSkKKyAg
ICAgICAgaW1hZ2VCdWZmZXItPnNldEJhY2tlbmQoQWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlclNoYXJl
YWJsZU1hcHBlZEJhY2tlbmQ6OmNyZWF0ZShpbWFnZUJ1ZmZlci0+cGFyYW1ldGVycygpLCBXVEZN
b3ZlKGhhbmRsZSkpKTsKICAgICBlbHNlCi0gICAgICAgIGRvd25jYXN0PFVuYWNjZWxlcmF0ZWRS
ZW1vdGVJbWFnZUJ1ZmZlclByb3h5PigqaW1hZ2VCdWZmZXIpLmNyZWF0ZUJhY2tlbmQobG9naWNh
bFNpemUsIGJhY2tlbmRTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9y
bWF0LCBXVEZNb3ZlKGhhbmRsZSkpOworICAgICAgICBpbWFnZUJ1ZmZlci0+c2V0QmFja2VuZChB
Y2NlbGVyYXRlZEltYWdlQnVmZmVyU2hhcmVhYmxlQmFja2VuZDo6Y3JlYXRlKGltYWdlQnVmZmVy
LT5wYXJhbWV0ZXJzKCksIFdURk1vdmUoaGFuZGxlKSkpOwogfQogCiB2b2lkIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eTo6ZGlkRmx1c2goRGlzcGxheUxpc3Q6OkZsdXNoSWRlbnRpZmllciBm
bHVzaElkZW50aWZpZXIsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIpCiB7Ci0gICAgYXV0byBpbWFnZUJ1ZmZlciA9IG1fcmVtb3RlUmVzb3Vy
Y2VDYWNoZVByb3h5LmNhY2hlZEltYWdlQnVmZmVyKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cik7Ci0gICAgaWYgKCFpbWFnZUJ1ZmZlcikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKGlz
PEFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXJNYXBwZWRQcm94eT4oKmltYWdlQnVmZmVyKSkK
LSAgICAgICAgZG93bmNhc3Q8QWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlck1hcHBlZFByb3h5
PigqaW1hZ2VCdWZmZXIpLmRpZEZsdXNoKGZsdXNoSWRlbnRpZmllcik7Ci0gICAgZWxzZSBpZiAo
aXM8QWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlclByb3h5PigqaW1hZ2VCdWZmZXIpKQotICAg
ICAgICBkb3duY2FzdDxBY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyUHJveHk+KCppbWFnZUJ1
ZmZlcikuZGlkRmx1c2goZmx1c2hJZGVudGlmaWVyKTsKLSAgICBlbHNlCi0gICAgICAgIGRvd25j
YXN0PFVuYWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlclByb3h5PigqaW1hZ2VCdWZmZXIpLmRp
ZEZsdXNoKGZsdXNoSWRlbnRpZmllcik7CisgICAgaWYgKGF1dG8gaW1hZ2VCdWZmZXIgPSBtX3Jl
bW90ZVJlc291cmNlQ2FjaGVQcm94eS5jYWNoZWRJbWFnZUJ1ZmZlcihyZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIpKQorICAgICAgICBpbWFnZUJ1ZmZlci0+ZGlkRmx1c2goZmx1c2hJZGVudGlm
aWVyKTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OnVwZGF0ZVJldXNh
YmxlSGFuZGxlcygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaAppbmRleCA5
NWY4ZDJiNDEyZmI5MWRmNzdjNjhmMTM2YjAwNzg2ZjAyNGQ3ZTI2Li5mODA1ZmMxZWZmOWNhNTE0
NTM1OWNhMjkyYjUyZGRmZWVmOGRhODFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5LmgKQEAgLTgxLDcgKzgxLDcgQEAgcHVibGljOgogICAgIHZvaWQgY2FjaGVOYXRpdmVJ
bWFnZShXZWJDb3JlOjpOYXRpdmVJbWFnZSYpOwogICAgIHZvaWQgcmVsZWFzZVJlbW90ZVJlc291
cmNlKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAKLSAgICBib29sIHdh
aXRGb3JJbWFnZUJ1ZmZlckJhY2tlbmRXYXNDcmVhdGVkKCk7CisgICAgYm9vbCB3YWl0Rm9yRGlk
Q3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kKCk7CiAgICAgYm9vbCB3YWl0Rm9yRGlkRmx1c2goKTsK
IAogcHJpdmF0ZToKQEAgLTk1LDcgKzk1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZVJl
dXNhYmxlSGFuZGxlcygpOwogCiAgICAgLy8gTWVzc2FnZXMgdG8gYmUgcmVjZWl2ZWQuCi0gICAg
dm9pZCBpbWFnZUJ1ZmZlckJhY2tlbmRXYXNDcmVhdGVkKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6
ZSYgbG9naWNhbFNpemUsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGJhY2tlbmRTaXplLCBmbG9h
dCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UsIFdlYkNvcmU6OlBpeGVsRm9y
bWF0LCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcik7CisgICAgdm9pZCBkaWRDcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQoSW1hZ2VC
dWZmZXJCYWNrZW5kSGFuZGxlLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIp
OwogICAgIHZvaWQgZGlkRmx1c2goV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZsdXNoSWRlbnRpZmll
ciwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKIAogICAgIFJlbW90ZVJl
c291cmNlQ2FjaGVQcm94eSBtX3JlbW90ZVJlc291cmNlQ2FjaGVQcm94eSB7ICp0aGlzIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lm1lc3NhZ2VzLmluCmlu
ZGV4IDkyMGRlM2Y3Nzc1NDAxNjQwNTFmZjUxY2QyMWI1MDU1OTg1NGY4NDQuLjNhNTMyZDVlNGZm
NjE2YmRiMDdlZGU3YTlhODNlOTMxMzdlNzNiZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5Lm1lc3NhZ2VzLmluCkBAIC0yMyw3ICsyMyw3IEBACiAjaWYg
RU5BQkxFKEdQVV9QUk9DRVNTKQogCiBtZXNzYWdlcyAtPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHkgTm90UmVmQ291bnRlZCB7Ci0gICAgSW1hZ2VCdWZmZXJCYWNrZW5kV2FzQ3JlYXRlZChX
ZWJDb3JlOjpGbG9hdFNpemUgbG9naWNhbFNpemUsIFdlYkNvcmU6OkludFNpemUgYmFja2VuZFNp
emUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSBjb2xvclNwYWNl
LCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6UGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIFdlYktpdDo6
SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGhhbmRsZSwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKKyAgICBEaWRDcmVhdGVJ
bWFnZUJ1ZmZlckJhY2tlbmQoV2ViS2l0OjpJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgaGFuZGxl
LCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyKQogICAgIERpZEZsdXNoKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpGbHVzaElkZW50
aWZpZXIgZmx1c2hJZGVudGlmaWVyLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxl
SU9TdXJmYWNlQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZC5jcHAKaW5kZXgg
Y2VkYTcxMmRiNWE0Njg5MWEwMzIzZWNlOTczNzU4MzM1ZjQ0NDQ2Yi4uNTdjN2Y3ZDVhMjQ1OTdk
MmI2YjJmZjNlYjUwZDdmNTY5NzQ5NTBhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJh
Y2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29j
b2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kLmNwcApAQCAtMzcsMTQgKzM3
LDE0IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVE
X0lNUEwoSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kKTsKIAotc3RkOjp1bmlx
dWVfcHRyPEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZD4gSW1hZ2VCdWZmZXJT
aGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGUoY29uc3QgRmxvYXRTaXplJiBsb2dpY2Fs
U2l6ZSwgY29uc3QgSW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwg
Q29sb3JTcGFjZSBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgSW1hZ2VCdWZm
ZXJCYWNrZW5kSGFuZGxlIGhhbmRsZSkKK3N0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlclNoYXJl
YWJsZUlPU3VyZmFjZUJhY2tlbmQ+IEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2Vu
ZDo6Y3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIEltYWdlQnVmZmVyQmFja2Vu
ZEhhbmRsZSBoYW5kbGUpCiB7CiAgICAgaWYgKCFXVEY6OmhvbGRzX2FsdGVybmF0aXZlPE1hY2hT
ZW5kUmlnaHQ+KGhhbmRsZSkpIHsKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgcmV0dXJuIG1ha2VVbmlx
dWU8SW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kPihsb2dpY2FsU2l6ZSwgYmFj
a2VuZFNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQsIFdURk1v
dmUoaGFuZGxlKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8SW1hZ2VCdWZmZXJTaGFyZWFibGVJ
T1N1cmZhY2VCYWNrZW5kPihwYXJhbWV0ZXJzLCBXVEZNb3ZlKGhhbmRsZSkpOwogfQogCiBJbWFn
ZUJ1ZmZlckJhY2tlbmRIYW5kbGUgSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5k
OjpjcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJl
YWJsZUlPU3VyZmFjZUJhY2tlbmQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kLmgKaW5kZXgg
N2MxZWVkNjAyZTUxNzIzNzY5ZjRiNjk1NGIzMTc5NGEzMDNiZmY2ZS4uZDVlMDBlNDIwOThhNGIz
NzA2ODJhNDk3YmUzODljMGQzODk1M2NhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJh
Y2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29h
L0ltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZC5oCkBAIC0zNCwxNiArMzQsMTQg
QEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIFNoYXJlYWJsZUJpdG1hcDsKLQogY2xh
c3MgSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kIGZpbmFsIDogcHVibGljIFdl
YkNvcmU6OkltYWdlQnVmZmVyQmFja2VuZCB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChJ
bWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQpOwogICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZCk7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJh
Y2tlbmQ+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25z
dCBXZWJDb3JlOjpJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBX
ZWJDb3JlOjpDb2xvclNwYWNlLCBXZWJDb3JlOjpQaXhlbEZvcm1hdCwgSW1hZ2VCdWZmZXJCYWNr
ZW5kSGFuZGxlKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyU2hhcmVh
YmxlSU9TdXJmYWNlQmFja2VuZD4gY3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmLCBJbWFnZUJ1ZmZl
ckJhY2tlbmRIYW5kbGUpOwogCi0gICAgSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNr
ZW5kKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IFdlYkNvcmU6
OkludFNpemUmIHBoeXNpY2FsU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpD
b2xvclNwYWNlIGNvbG9yU3BhY2UsIFdlYkNvcmU6OlBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBJ
bWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUmJiBoYW5kbGUpCi0gICAgICAgIDogSW1hZ2VCdWZmZXJC
YWNrZW5kKGxvZ2ljYWxTaXplLCBwaHlzaWNhbFNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JT
cGFjZSwgcGl4ZWxGb3JtYXQpCisgICAgSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNr
ZW5kKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRs
ZSYmIGhhbmRsZSkKKyAgICAgICAgOiBJbWFnZUJ1ZmZlckJhY2tlbmQocGFyYW1ldGVycykKICAg
ICAgICAgLCBtX2hhbmRsZShXVEZNb3ZlKGhhbmRsZSkpCiAgICAgewogICAgIH0KQEAgLTYyLDgg
KzYwLDggQEAgcHVibGljOgogICAgIHZvaWQgcHV0SW1hZ2VEYXRhKFdlYkNvcmU6OkFscGhhUHJl
bXVsdGlwbGljYXRpb24gaW5wdXRGb3JtYXQsIGNvbnN0IFdlYkNvcmU6OkltYWdlRGF0YSYsIGNv
bnN0IFdlYkNvcmU6OkludFJlY3QmIHNyY1JlY3QsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBk
ZXN0UG9pbnQsIFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb24gZGVzdEZvcm1hdCkgb3Zl
cnJpZGU7CiAKICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNPcmlnaW5BdFVwcGVyTGVmdENv
cm5lciA9IHRydWU7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzQWNjZWxlcmF0ZWQgPSB0
cnVlOwogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBjYW5NYXBCYWNraW5nU3RvcmUgPSBmYWxz
ZTsKKyAgICBzdGF0aWMgY29uc3RleHByIFdlYkNvcmU6OlJlbmRlcmluZ01vZGUgcmVuZGVyaW5n
TW9kZSA9IFdlYkNvcmU6OlJlbmRlcmluZ01vZGU6OkFjY2VsZXJhdGVkOwogCiBwcml2YXRlOgog
ICAgIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBtX2hhbmRsZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFi
bGVNYXBwZWRJT1N1cmZhY2VCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNr
ZW5kLmNwcAppbmRleCA0NTBkZTQ0NTU4MGM5OWFjY2Q2YjI4ZjM4MTNjNGNjZjM3NjRlOTU1Li4x
ZWJhZDQzMmEyMTUzZmEwNDNmZTg4ZGU4YmIxM2JjNmNkYjYxZjQwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVh
YmxlTWFwcGVkSU9TdXJmYWNlQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElPU3VyZmFj
ZUJhY2tlbmQuY3BwCkBAIC0zNywxMyArMzcsMTMgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChJbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBl
ZElPU3VyZmFjZUJhY2tlbmQpOwogCi1zdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJTaGFyZWFi
bGVNYXBwZWRJT1N1cmZhY2VCYWNrZW5kPiBJbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElPU3Vy
ZmFjZUJhY2tlbmQ6OmNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRp
b25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwg
Y29uc3QgSG9zdFdpbmRvdyopCitzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJTaGFyZWFibGVN
YXBwZWRJT1N1cmZhY2VCYWNrZW5kPiBJbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElPU3VyZmFj
ZUJhY2tlbmQ6OmNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBjb25zdCBIb3N0
V2luZG93KikKIHsKLSAgICBJbnRTaXplIGJhY2tlbmRTaXplID0gY2FsY3VsYXRlQmFja2VuZFNp
emUoc2l6ZSwgcmVzb2x1dGlvblNjYWxlKTsKKyAgICBJbnRTaXplIGJhY2tlbmRTaXplID0gY2Fs
Y3VsYXRlQmFja2VuZFNpemUocGFyYW1ldGVycy5sb2dpY2FsU2l6ZSwgcGFyYW1ldGVycy5yZXNv
bHV0aW9uU2NhbGUpOwogICAgIGlmIChiYWNrZW5kU2l6ZS5pc0VtcHR5KCkpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCi0gICAgYXV0byBzdXJmYWNlID0gSU9TdXJmYWNlOjpjcmVhdGUoYmFj
a2VuZFNpemUsIGJhY2tlbmRTaXplLCBjYWNoZWRDR0NvbG9yU3BhY2UoY29sb3JTcGFjZSksIElP
U3VyZmFjZTo6Zm9ybWF0Rm9yUGl4ZWxGb3JtYXQocGl4ZWxGb3JtYXQpKTsKKyAgICBhdXRvIHN1
cmZhY2UgPSBJT1N1cmZhY2U6OmNyZWF0ZShiYWNrZW5kU2l6ZSwgYmFja2VuZFNpemUsIGNhY2hl
ZENHQ29sb3JTcGFjZShwYXJhbWV0ZXJzLmNvbG9yU3BhY2UpLCBJT1N1cmZhY2U6OmZvcm1hdEZv
clBpeGVsRm9ybWF0KHBhcmFtZXRlcnMucGl4ZWxGb3JtYXQpKTsKICAgICBpZiAoIXN1cmZhY2Up
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC01MywyMSArNTMsMjEgQEAgc3RkOjp1bmlx
dWVfcHRyPEltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFja2VuZD4gSW1hZ2VC
dWZmZXJTaGFyZWFibGUKIAogICAgIENHQ29udGV4dENsZWFyUmVjdChjZ0NvbnRleHQuZ2V0KCks
IEZsb2F0UmVjdChGbG9hdFBvaW50Ojp6ZXJvKCksIGJhY2tlbmRTaXplKSk7CiAKLSAgICByZXR1
cm4gbWFrZVVuaXF1ZTxJbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQ+
KHNpemUsIGJhY2tlbmRTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9y
bWF0LCBXVEZNb3ZlKHN1cmZhY2UpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxJbWFnZUJ1ZmZl
clNoYXJlYWJsZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQ+KHBhcmFtZXRlcnMsIFdURk1vdmUoc3Vy
ZmFjZSkpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJ
T1N1cmZhY2VCYWNrZW5kPiBJbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElPU3VyZmFjZUJhY2tl
bmQ6OmNyZWF0ZShjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBJbnRTaXplJiBp
bnRlcm5hbFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNl
LCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGhhbmRs
ZSkKK3N0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElPU3VyZmFjZUJh
Y2tlbmQ+IEltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRl
KGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBo
YW5kbGUpCiB7CiAgICAgaWYgKCFXVEY6OmhvbGRzX2FsdGVybmF0aXZlPE1hY2hTZW5kUmlnaHQ+
KGhhbmRsZSkpIHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIH0KIAotICAgIGF1dG8gc3VyZmFjZSA9IElPU3VyZmFjZTo6Y3JlYXRl
RnJvbVNlbmRSaWdodChXVEZNb3ZlKFdURjo6Z2V0PE1hY2hTZW5kUmlnaHQ+KGhhbmRsZSkpLCBj
YWNoZWRDR0NvbG9yU3BhY2UoY29sb3JTcGFjZSkpOworICAgIGF1dG8gc3VyZmFjZSA9IElPU3Vy
ZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdodChXVEZNb3ZlKFdURjo6Z2V0PE1hY2hTZW5kUmlnaHQ+
KGhhbmRsZSkpLCBjYWNoZWRDR0NvbG9yU3BhY2UocGFyYW1ldGVycy5jb2xvclNwYWNlKSk7CiAg
ICAgaWYgKCFzdXJmYWNlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBt
YWtlVW5pcXVlPEltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFja2VuZD4obG9n
aWNhbFNpemUsIGludGVybmFsU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhl
bEZvcm1hdCwgV1RGTW92ZShzdXJmYWNlKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8SW1hZ2VC
dWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNrZW5kPihwYXJhbWV0ZXJzLCBXVEZNb3Zl
KHN1cmZhY2UpKTsKIH0KIAogSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIEltYWdlQnVmZmVyU2hh
cmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFu
ZGxlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNrZW5kLmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVy
U2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFja2VuZC5oCmluZGV4IDJhNjZiYjM4NGZhMWExYWVh
MWFmMzFjMWM3ZTMzYmNhOWEwNTdmMzUuLmM1ZDA0ODBjMzYwZGNiOTVhODI1N2VkMjVhNDhjNDM2
NzFjNGJjZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNrZW5kLmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZl
clNoYXJlYWJsZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQuaApAQCAtMzksOCArMzksOCBAQCBjbGFz
cyBJbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQgZmluYWwgOiBwdWJs
aWMgV2ViQ29yZTo6SW1hZ2VCdQogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoSW1hZ2VCdWZm
ZXJTaGFyZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNrZW5kKTsKICAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShJbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQpOwogcHVibGlj
OgotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJ
T1N1cmZhY2VCYWNrZW5kPiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBsb2dpY2Fs
U2l6ZSwgY29uc3QgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlLCBX
ZWJDb3JlOjpQaXhlbEZvcm1hdCwgY29uc3QgV2ViQ29yZTo6SG9zdFdpbmRvdyopOwotICAgIHN0
YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1cmZhY2VC
YWNrZW5kPiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29u
c3QgV2ViQ29yZTo6SW50U2l6ZSYgaW50ZXJuYWxTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUs
IFdlYkNvcmU6OkNvbG9yU3BhY2UsIFdlYkNvcmU6OlBpeGVsRm9ybWF0LCBJbWFnZUJ1ZmZlckJh
Y2tlbmRIYW5kbGUpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJTaGFy
ZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNrZW5kPiBjcmVhdGUoY29uc3QgUGFyYW1ldGVycyYsIGNv
bnN0IFdlYkNvcmU6Okhvc3RXaW5kb3cqKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPElt
YWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFja2VuZD4gY3JlYXRlKGNvbnN0IFBh
cmFtZXRlcnMmLCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUpOwogCiAgICAgdXNpbmcgV2ViQ29y
ZTo6SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tl
bmQ7CiAK
</data>
<flag name="commit-queue"
          id="432662"
          type_id="3"
          status="-"
          setter="sabouhallawa"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415445</attachid>
            <date>2020-12-04 12:31:04 -0800</date>
            <delta_ts>2020-12-04 14:30:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219007-20201204123103.patch</filename>
            <type>text/plain</type>
            <size>112776</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNDM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2FlMjg5MzBiNzRmYmZk
NzMwMWQ2OGY5YjFiMGJjZjc4YTg2YzlmNy4uODdmNmZlNjE0MDJhNjVjNmY0ZGJkNzkxMTQ5YWNk
MzJmMWVkNzZhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExOCBAQAorMjAyMC0xMi0wNCAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3Nd
IENsZWFuIHVwIHJlY3JlYXRpbmcgdGhlIEltYWdlQnVmZmVyQmFja2VuZCBiZWNhdXNlIG9mIEdQ
VSBjcmFzaGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjE5MDA3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgorCisgICAgICAg
IFRvIGFsbG93IGFuc3dlcmluZyBxdWVzdGlvbnMgYWJvdXQgdGhlIGJhY2tlbmQgY3JlYXRpb24g
cGFyYW1ldGVycyB3aXRob3V0CisgICAgICAgIGhhdmluZyB0aGUgYmFja2VuZCBjcmVhdGVkLCB0
aGUgbmV3IHN0cnVjdHVyZSBJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnMKKyAgICAgICAg
aXMgaW50cm9kdWNlZC4KKworICAgICAgICBUaGlzIHN0cnVjdHVyZSBjb250YWlucyB0aGUgcGFy
YW1ldGVycyB3aGljaCB3ZXJlIHBhc3NlZCBieSB0aGUgY2FsbGVyIGluCisgICAgICAgIHRoZSBX
ZWJQcm9jZXNzIGFuZCB3aGljaCBhcmUgc3VmZmljaWVudCB0byByZWNyZWF0ZSBSZW1vdGVJbWFn
ZUJ1ZmZlciBpZgorICAgICAgICB0aGUgR1BVIFByb2Nlc3MgY3Jhc2hlcyBldmVuIGJlZm9yZSB0
aGUgYmFja2VuZCBvZiBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5CisgICAgICAgIGlzIGNyZWF0ZWQu
CisKKyAgICAgICAgQ29uY3JldGVJbWFnZUJ1ZmZlciBhbmQgSW1hZ2VCdWZmZXJCYWNrZW5kIHdp
bGwgaG9sZCBhbiBpbnN0YW5jZSBvZiB0aGUKKyAgICAgICAgbmV3IHN0cnVjdHVyZSBJbWFnZUJ1
ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnMuCisKKyAgICAgICAgQWxzbyByZXBsYWNlIGFsbCB0aGUg
aW5zdGFuY2VzIG9mICdpc0FjY2VsZXJhdGVkJyBieSAncmVuZGVyaW5nTW9kZScuIFNvCisgICAg
ICAgIG5vIG5lZWQgdG8gY29udmVydCBvbmUgdHlwZSB0byB0aGUgb3RoZXIuCisKKyAgICAgICAg
KiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmg6
CisgICAgICAgIChXZWJDb3JlOjpDb25jcmV0ZUltYWdlQnVmZmVyOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q29uY3JldGVJbWFnZUJ1ZmZlcjo6Q29uY3JldGVJbWFnZUJ1ZmZlcik6Cisg
ICAgICAgIC0tIE1ha2UgQ29uY3JldGVJbWFnZUJ1ZmZlciBvd24gYW4gaW5zdGFuY2Ugb2YgSW1h
Z2VCdWZmZXJCYWNrZW5kOjpQYXJhbWV0ZXJzLgorICAgICAgICAtLSBBZGQgbWV0aG9kcyB0byBz
ZXQgYW5kIGNsZWFyIHRoZSBiYWNrZW5kIG9mIGFuIEltYWdlQnVmZmVyLgorCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
QnVmZmVyOjpiYWNrZW5kIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpz
dWJtaXREaXNwbGF5TGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6ZGlkRmx1
c2gpOgorICAgICAgICAtLSBFeHBvc2UgdGhlIEltYWdlQnVmZmVyQmFja2VuZCBjcmVhdGlvbiBw
YXJhbWV0ZXJzIHRocm91Z2ggbWV0aG9kcy4KKyAgICAgICAgLS0gRXhwb3NlIHN1Ym1pdERpc3Bs
YXlMaXN0KCkgYW5kIGRpZEZsdXNoKCkgc28gbm8gY2FzdGluZyBpcyBuZWVkZWQgd2hlbgorICAg
ICAgICAgICBjYWxsaW5nIHRoZXNlIGZ1bmN0aW9ucyB0aHJvdWdoIFJlbW90ZUltYWdlQnVmZXJQ
cm94eS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OkltYWdlQnVmZmVyQmFj
a2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OnRvQkdSQURhdGEg
Y29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5o
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjpiYWNrZW5kU2l6ZSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6Om1lbW9yeUNvc3QgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjpieXRlc1BlclJvdyBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OnRvQmFja2VuZENv
b3JkaW5hdGVzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQmFja2VuZDo6
bG9naWNhbFNpemUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5k
OjpyZXNvbHV0aW9uU2NhbGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJC
YWNrZW5kOjpjb2xvclNwYWNlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVy
QmFja2VuZDo6cGl4ZWxGb3JtYXQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZm
ZXJCYWNrZW5kOjpsb2dpY2FsUmVjdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1
ZmZlckJhY2tlbmQ6OmJhY2tlbmRSZWN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
QnVmZmVyQmFja2VuZDo6YmFzZVRyYW5zZm9ybSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIC0t
IEFkZCB0aGUgc3RydWN0dXJlIEltYWdlQnVmZmVyQmFja2VuZDo6UGFyYW1ldGVycy4gCisgICAg
ICAgIC0tIE1ha2UgSW1hZ2VCdWZmZXJCYWNrZW5kIG93biBhbiBpbnN0YW5jZSBvZiB0aGlzIHN0
cnVjdHVyZS4KKyAgICAgICAgLS0gTWFrZSBiYWNrZW5kU2l6ZSgpIGEgcHVyZSB2aXJ0dWFsIG1l
dGhvZC4KKyAgICAgICAgLS0gRGVsZXRlIGJhc2VUcmFuc2Zvcm0oKSBzaW5jZSBpdCBpcyBpbXBs
ZW1lbnRlZCBpbiBDb25jcmV0ZUltYWdlQnVmZmVyLgorCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvUGxhdGZvcm1JbWFnZUJ1ZmZlci5oOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNhaXJvQmFja2VuZDo6ZHJhd1BhdHRlcm4pOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1
cmZhY2VCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ2Fpcm9JbWFn
ZVN1cmZhY2VCYWNrZW5kOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJD
YWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQ6OkltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNr
ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNr
ZW5kOjpwbGF0Zm9ybVRyYW5zZm9ybUNvbG9yU3BhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNr
ZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2Vu
ZDo6SW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZDo6YmFja2VuZFNpemUgY29uc3QpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2Vu
ZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCYWNrZW5k
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ0dCYWNrZW5kOjpzZXR1cENvbnRl
eHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OmNvcHlJ
bWFnZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNHQmFja2VuZDo6c2lu
a0ludG9JbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNHQmFja2VuZDo6ZHJh
dyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNHQmFja2VuZDo6ZHJhd1BhdHRlcm4p
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OnRvQ0ZEYXRhIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ0dCYWNrZW5kOjpiYXNlVHJhbnNmb3Jt
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1
ZmZlckNHQmFja2VuZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVm
ZmVyQ0dCaXRtYXBCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ0dC
aXRtYXBCYWNrZW5kOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDR0Jp
dG1hcEJhY2tlbmQ6OkltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kKToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpiYWNrZW5kU2l6ZSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y29weU5hdGl2ZUltYWdl
IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0
bWFwQmFja2VuZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVy
SU9TdXJmYWNlQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcklPU3Vy
ZmFjZUJhY2tlbmQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcklPU3Vy
ZmFjZUJhY2tlbmQ6OkltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZCk6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmJhY2tlbmRTaXplIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6ZHJhd0NvbnN1bWlu
Zyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VC
YWNrZW5kLmg6CisgICAgICAgIC0tIENoYW5nZSB0aGUgY3JlYXRlKCkgbWV0aG9kcyB0byB0YWtl
IGEgIlBhcmFtZXRlcnMiIGFyZ3VtZW50LgorICAgICAgICAtLSBVc2UgdGhlIGJhY2tlbmQgbWV0
aG9kIHRvIGFjY2VzcyB0aGUgIlBhcmFtZXRlcnMiIHN0cnVjdHVyZS4KKworICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEZsdXNoSWRlbnRpZmllci5o
OiBBZGRlZC4KKyAgICAgICAgTW92ZSBEaXNwbGF5TGlzdEZsdXNoSWRlbnRpZmllciB0byBhIHNl
cGFyYXRlIGZpbGUgc28gaXQgY2FuIGJlIGluY2x1ZGVkCisgICAgICAgIGluIEltYWdlQnVmZmVy
Lmggd2l0aG91dCBoYXZpbmcgdG8gaW5jbHVkZSBEaXNwbGF5TGlzdC5oLgorCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXIuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJbWFnZUJ1ZmZlcjo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZmZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkltYWdlQnVmZmVyOjppbml0aWFsRHJhd2lu
Z0NvbnRleHRDVE0pOiBEZWxldGVkLgorICAgICAgICAtLSBObyBuZWVkIHRvIHBhc3MgdGhlICdz
aXplJyBhcmd1bWVudCB0d2ljZSBpbiB0aGUgJ2NyZWF0ZScgbWV0aG9kcy4gVGhlCisgICAgICAg
ICAgIHN0cnVjdHVyZSBQYXJhbWV0ZXJzIGhhcyB0byBiZSBwYXNzZWQgdG8gdGhlIGNvbnN0cnVj
dG9yIGFueXdheS4KKyAgICAgICAgLS0gTm8gbmVlZCBmb3IgaW5pdGlhbERyYXdpbmdDb250ZXh0
Q1RNKCkgc2luY2UgaXQgaXMgZXF1aXZhbGVudCB0byAKKyAgICAgICAgICAgYmFzZVRyYW5zZm9y
bSgpLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0
MkRCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyRGlyZWN0MkRCYWNr
ZW5kOjpjb3B5SW1hZ2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJEaXJl
Y3QyREJhY2tlbmQ6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJEaXJlY3Qy
REJhY2tlbmQ6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgLS0gVXNlIHRoZSBiYWNrZW5kIG1ldGhv
ZCB0byBhY2Nlc3MgdGhlICJQYXJhbWV0ZXJzIiBzdHJ1Y3R1cmUuCisKIDIwMjAtMTItMDQgIFBl
bmcgTGl1ICA8cGVuZy5saXU2QGFwcGxlLmNvbT4KIAogICAgICAgICBbTVNFXSBNb3ZlIHRyYWNr
IGJ1ZmZlciBtYW5hZ2VtZW50IGZyb20gU291cmNlQnVmZmVyIHRvIFNvdXJjZUJ1ZmZlclByaXZh
dGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKaW5kZXggYTdjZmU2ODQxMDlhZTFlYTA2NTYyZTA0NWJjYTlmMjNlOTAwZWU2MC4u
ZjY5NzI0OTQ3ZWY3OTdjOTE2ZGQzYWMzOThiOWM3M2RkZGMyNWU5ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5OSBAQAorMjAyMC0xMi0wNCAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNv
bT4KKworICAgICAgICBbR1BVIFByb2Nlc3NdIENsZWFuIHVwIHJlY3JlYXRpbmcgdGhlIEltYWdl
QnVmZmVyQmFja2VuZCBiZWNhdXNlIG9mIEdQVSBjcmFzaGluZworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE5MDA3CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgU2ltb24gRnJhc2VyLgorCisgICAgICAgIFRoZXJlIGlzIG5vIG5lZWQgdG8gc3RvcmUgdGhl
IGJhY2tlbmQgcGFyYW1ldGVycyBpbiBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5LgorICAgICAgICBU
aGVzZSBwYXJhbWV0ZXJzIGFyZSBub3cgc3RvcmVkIGluIHRoZSBiYXNlIGNsYXNzIEltYWdlQnVm
ZmVyIGJlZm9yZSB0aGUKKyAgICAgICAgYmFja2VuZCBpcyBjcmVhdGVkLgorCisgICAgICAgIFJl
bW92ZSB0aGUgdHJhaXRzIGRlZmluaXRpb24gZm9yIFJlbW90ZUltYWdlQnVmZmVyUHJveHkgdHlw
ZXMgYmVjYXVzZQorICAgICAgICB0aGV5IGFyZSB3cm9uZy4gQWxsIEltYWdlQnVmZmVycyBoYXZl
IHZhbGlkIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpCisgICAgICAgIHJlZ2FyZGxlc3Mg
d2hldGhlciB0aGV5IGFyZSByZW1vdGUgb3Igbm90LiBJbWFnZUJ1ZmZlcjo6c2V0QmFja2VuZCBh
bmQKKyAgICAgICAgSW1hZ2VCdWZmZXI6OnN1Ym1pdERpc3BsYXlMaXN0KCkgYXJlIG5vdyBpbXBs
ZW1lbnRlZCBpbiBXZWJDb3JlLiBTbyBubworICAgICAgICBjYXN0aW5nIGlzIG5lZWRlZC4KKwor
ICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaDoKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXI6OlJlbW90ZUltYWdlQnVmZmVyKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXI6OnN1Ym1pdERpc3BsYXlMaXN0KTogRGVsZXRl
ZC4KKyAgICAgICAgc3VibWl0RGlzcGxheUxpc3QoKSBpcyBub3cgYSB2aXJ0dWFsIG1ldGhvZCBv
ZiBJbWFnZUJ1ZmZlci4gU28gbWFrZSBpdAorICAgICAgICBwcml2YXRlIGFuZCBpZ25vcmUgdGhl
IHJldHVybiBvZiBEaXNwbGF5TGlzdDo6UmVwbGF5ZXI6OnJlcGxheSgpIHNpbmNlIAorICAgICAg
ICB0aGUgY2FsbGVyIGRvZXMgbm90IHVzZSBpdC4KKworICAgICAgICAqIEdQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZVJlbmRlcmluZ0JhY2tlbmQ6OmRpZENyZWF0ZUltYWdlQnVmZmVyQmFja2VuZCk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmFwcGx5RGlzcGxheUxpc3RzRnJvbUhh
bmRsZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmltYWdlQnVm
ZmVyQmFja2VuZFdhc0NyZWF0ZWQpOiBEZWxldGVkLgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oOgorICAgICAgICBSZW5hbWUgJ2ltYWdlQnVm
ZmVyQmFja2VuZFdhc0NyZWF0ZWQoKScgdG8gJ2RpZENyZWF0ZUltYWdlQnVmZmVyQmFja2VuZCgp
JworICAgICAgICB0byBiZSBjb25zaXN0ZW50IHdpdGggJ2RpZEZsdXNoKCknLgorCisgICAgICAg
ICogU2hhcmVkL0NvbmNyZXRlU2hhcmVhYmxlSW1hZ2VCdWZmZXIuaDoKKyAgICAgICAgKFdlYktp
dDo6Q29uY3JldGVTaGFyZWFibGVJbWFnZUJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktp
dDo6Q29uY3JldGVTaGFyZWFibGVJbWFnZUJ1ZmZlcjo6Q29uY3JldGVTaGFyZWFibGVJbWFnZUJ1
ZmZlcik6IERlbGV0ZWQuCisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVM
YXllckJhY2tpbmdTdG9yZS5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJCYWNraW5n
U3RvcmU6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2lu
Z1N0b3JlOjpzd2FwVG9WYWxpZEZyb250QnVmZmVyKToKKyAgICAgICAgQ2FsbCB0aGUgZnVuY3Rp
b24gd2l0aCB0aGUgbmV3IG5hbWUgYW5kIGRlbGV0ZSB0aGUgRklYTUUgY29tbWVudC4KKworICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFw
QmFja2VuZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFw
QmFja2VuZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVC
aXRtYXBCYWNrZW5kOjpJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQpOgorICAgICAg
ICAoV2ViS2l0OjpJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmJhY2tlbmRTaXpl
IGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNo
YXJlYWJsZUJpdG1hcEJhY2tlbmQuaDoKKyAgICAgICAgVXNlIHRoZSBuZXcgc3RydWN0dXJlICdJ
bWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnMnLiBJbXBsZW1lbnQgdGhlCisgICAgICAgIHZp
cnR1YWwgbWV0aG9kICdiYWNrZW5kU2l6ZSgpJy4KKworICAgICAgICAqIFdlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1BsYXRmb3JtUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oOgorICAgICAgICAoaXNU
eXBlKTogRGVsZXRlZC4KKyAgICAgICAgRGVsZXRlIHRoZSB3cm9uZyB0cmFpdHMuCisKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5Lmg6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyUHJveHk6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyUHJveHk6OlJlbW90ZUltYWdlQnVmZmVyUHJveHkp
OgorICAgICAgICBVc2UgdGhlIG5ldyBzdHJ1Y3R1cmUgJ0ltYWdlQnVmZmVyQmFja2VuZDo6UGFy
YW1ldGVycycuCisKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6Y2xl
YXJCYWNrZW5kKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJQ
cm94eTo6Y3JlYXRlQmFja2VuZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUlt
YWdlQnVmZmVyUHJveHk6OmRpZEZsdXNoKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlSW1hZ2VCdWZmZXJQcm94eTo6c2l6ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUltYWdlQnVmZmVyUHJveHk6OnJlbmRlcmluZ01vZGUgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlclByb3h5Ojpjb2xvclNwYWNlIGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6
cGl4ZWxGb3JtYXQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICBUaGVzZSBmdW5jdGlvbnMgYXJl
IG5vdyBpbXBsZW1lbnRlZCBpbiBDb25jcmV0ZUltYWdlQnVmZmVyLgorCisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUltYWdlQnVmZmVyUHJveHk6OnN1Ym1pdERpc3BsYXlMaXN0KTogRGVsZXRlZC4K
KyAgICAgICAgc3VibWl0RGlzcGxheUxpc3QoKSBpcyBub3cgdmlydHVhbC4KKworICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6cmVlc3RhYmxp
c2hHUFVQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eTo6d2FpdEZvckRpZENyZWF0ZUltYWdlQnVmZmVyQmFja2VuZCk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Y3JlYXRlSW1hZ2VCdWZm
ZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmRpZENy
ZWF0ZUltYWdlQnVmZmVyQmFja2VuZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eTo6ZGlkRmx1c2gpOgorICAgICAgICAoV2ViS2l0OjpyZWNyZWF0ZUltYWdl
QnVmZmVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5Ojp3YWl0Rm9ySW1hZ2VCdWZmZXJCYWNrZW5kV2FzQ3JlYXRlZCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6aW1hZ2VCdWZmZXJC
YWNrZW5kV2FzQ3JlYXRlZCk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lmg6CisgICAgICAgIE5vIG5lZWQgdG8g
Y2FzdCB0aGUgSW1hZ2VCdWZmZXIgdG8gUmVtb3RlSW1hZ2VCdWZmZXJQcm94eSBzaW5jZSBhbGwg
d2hhdAorICAgICAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkgbmVlZHMgY2FuIGJlIGFj
Y2Vzc2VkIHRocm91Z2ggdGhlIGJhc2UgY2xhc3MuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkubWVzc2FnZXMuaW46CisgICAg
ICAgIFJlbmFtZSAnSW1hZ2VCdWZmZXJCYWNrZW5kV2FzQ3JlYXRlZCcgdG8gJ0RpZENyZWF0ZUlt
YWdlQnVmZmVyQmFja2VuZCcKKyAgICAgICAgdG8gYmUgY29uc2lzdGVudCB3aXRoICdEaWRGbHVz
aCcuIE5vIG5lZWQgdG8gcGFzcyB0aGUgY3JlYXRpb24gcGFyYW1ldGVycworICAgICAgICBzaW5j
ZSB0aGV5IHNldCBpbiB0aGUgQ29uY3JldGVJbWFnZUJ1ZmZlci4gTm8gbmVlZCB0byBwYXNzIHRo
ZSBiYWNrZW5kU2l6ZQorICAgICAgICBzaW5jZSBpdCBjYW4gYmUgcmV0cmlldmVkIHRocm91Z2gg
dGhlIGJhY2tlbmQgaXRzZWxmLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
Y29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGUpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVh
YmxlSU9TdXJmYWNlQmFja2VuZC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFja2VuZC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OkltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFja2Vu
ZDo6Y3JlYXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFn
ZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQuaDoKKyAgICAgICAgVXNlIHRo
ZSBuZXcgc3RydWN0dXJlICdJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnMnLgorCiAyMDIw
LTEyLTA0ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9T
XSBQcm92aWRlIGEgY29udGV4dCBtZW51IGFjdGlvbiB0byBwZXJmb3JtIGFjY2Vzc2liaWxpdHkg
aW1hZ2UgZXh0cmFjdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFr
ZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggZDU0NDgzNzhiOTk0MWM0NzE5
ODkwNjY1MGEzNTk1NjVlMDYxYWI3NS4uZjU4N2RhNmM4OTM2ODkzYWYxZmU4MTkwZDkyMTM0NTMy
MjAwOWQyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9T
b3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC0xMjc1LDYgKzEyNzUsNyBAQCBzZXQoV2Vi
Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0LmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3REcmF3R2x5cGhzUmVjb3JkZXIuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0LmgKKyAgICBwbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RGbHVzaElkZW50aWZpZXIuaAogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEltYWdlQnVmZmVyLmgKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmgK
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlwZS5o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggODU5YmY1NmQyMjM0YWM1ZTkxOWI4NDRkMTI0MmU2YzJiMjQyZDBkNy4uMWZiMjg3YWMx
ZGY2MTgyZmE1N2QzMGI0NTdlYTcxMGJjNzYyMTY2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjE4Miw2ICsyMTgyLDcgQEAK
IAkJNzIxNDQzMzQyMjNFQzkxNjAwRjEyRkY3IC8qIFNWR1Byb3BlcnR5T3duZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1RUU1MzYwMjIzQjJBMjEw
MEZCQTk0NCAvKiBTVkdQcm9wZXJ0eU93bmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzIxQjQ5NzQyNTEyQkEzQjAwRkU5RDNCIC8qIEltYWdl
Qml0bWFwQmFja2luZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNzIxQjQ5NzAyNTEyQUMwNDAwRkU5RDNCIC8qIEltYWdlQml0bWFwQmFja2luZy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcyMjgzRjBF
MjMwQjI2OEMwMEY1RDgyOCAvKiBJbWFnZVBhaW50aW5nT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzJDMThBM0YyMzBCMDRCNzAwNjg0N0M3
IC8qIEltYWdlUGFpbnRpbmdPcHRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzI0MkFDOTcyNTc1OEZFMTAwNUE5Q0YxIC8qIERpc3BsYXlM
aXN0Rmx1c2hJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3MjQyQUM5NTI1NzU4RkUwMDA1QTlDRjEgLyogRGlzcGxheUxpc3RGbHVzaElk
ZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk3MjRFRDMzMjFBM0E4QjIzMDBGNUYxM0MgLyogSlNFWFRCbGVuZE1pbk1heC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI0RUQzMzAxQTNBOEIy
MzAwRjVGMTNDIC8qIEpTRVhUQmxlbmRNaW5NYXguaCAqLzsgfTsKIAkJNzI0RUU1NTAxREM4MEQ3
RjAwQTkxRkZCIC8qIEFjdGl2aXR5U3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDcyNEVFNTRFMURDN0YyNUIwMEE5MUZGQiAvKiBBY3Rpdml0eVN0
YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
NzI0RUU1NTExREM4MEQ4NDAwQTkxRkZCIC8qIEFjdGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI0RUU1NEYx
REM3RjI1QjAwQTkxRkZCIC8qIEFjdGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZlci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMDA2NCw2ICsxMDA2
NSw3IEBACiAJCTcyMUI0OTZGMjUxMkFDMDQwMEZFOUQzQiAvKiBJbWFnZUJpdG1hcEJhY2tpbmcu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW1hZ2VCaXRtYXBCYWNraW5nLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzIxQjQ5NzAyNTEyQUMwNDAwRkU5RDNCIC8qIEltYWdlQml0
bWFwQmFja2luZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbWFnZUJpdG1hcEJhY2tpbmcuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzIyQTgxNUMyMzhGRDUwNTAwQzAwNTgzIC8qIEFuaW1h
dGlvbkZyYW1lUmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBbmltYXRpb25GcmFtZVJhdGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzI0MkFDOTUyNTc1OEZFMDAwNUE5Q0YxIC8qIERp
c3BsYXlMaXN0Rmx1c2hJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IERpc3BsYXlMaXN0Rmx1c2hJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTcyNEVEMzI5MUEzQTdFNTQwMEY1RjEzQyAvKiBFWFRCbGVuZE1pbk1heC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFWFRCbGVuZE1pbk1heC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyNEVEMzJBMUEzQTdFNTQwMEY1RjEzQyAvKiBF
WFRCbGVuZE1pbk1heC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFWFRCbGVu
ZE1pbk1heC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjRFRDMyQjFBM0E3RTU0
MDBGNUYxM0MgLyogRVhUQmxlbmRNaW5NYXguaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEVY
VEJsZW5kTWluTWF4LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE3ODExLDYg
KzE3ODEzLDcgQEAKIAkJCQkxQ0FGNTZERTI1MzAyNDVBMDAxN0I0NzIgLyogRGlzcGxheUxpc3RE
cmF3R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5jcHAgKi8sCiAJCQkJNTVDMEEyOTUyM0ZFMkNFMDAw
RjJDQjkzIC8qIERpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuY3BwICovLAogCQkJCTcyRUEwOUY5
MjNGQ0NDNkEwMDg1MDRBNSAvKiBEaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0LmggKi8sCisJCQkJ
NzI0MkFDOTUyNTc1OEZFMDAwNUE5Q0YxIC8qIERpc3BsYXlMaXN0Rmx1c2hJZGVudGlmaWVyLmgg
Ki8sCiAJCQkJNzJFQTA5RjcyM0ZDQ0IzRDAwODUwNEE1IC8qIERpc3BsYXlMaXN0SW1hZ2VCdWZm
ZXIuaCAqLywKIAkJCQlGNDIyQjhCNjI1M0Y3MDY1MDA0RTc3RTggLyogRGlzcGxheUxpc3RJdGVt
QnVmZmVyLmNwcCAqLywKIAkJCQlGNDIyQjhCNTI1M0Y3MDY1MDA0RTc3RTggLyogRGlzcGxheUxp
c3RJdGVtQnVmZmVyLmggKi8sCkBAIC0zMTcwOCw2ICszMTcxMSw3IEBACiAJCQkJMEZFNUZCRDMx
QzNERDUxRTAwMDdBMkNBIC8qIERpc3BsYXlMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQ0FG
NTZEQjI1MzAxQUM4MDAxN0I0NzIgLyogRGlzcGxheUxpc3REcmF3R2x5cGhzUmVjb3JkZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCTU1QUQwOTQwMjQwODk2NDAwMERFNEQyRiAvKiBEaXNwbGF5TGlz
dERyYXdpbmdDb250ZXh0LmggaW4gSGVhZGVycyAqLywKKwkJCQk3MjQyQUM5NzI1NzU4RkUxMDA1
QTlDRjEgLyogRGlzcGxheUxpc3RGbHVzaElkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTU1QUQwOTNFMjQwODk2MzUwMERFNEQyRiAvKiBEaXNwbGF5TGlzdEltYWdlQnVmZmVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQlGNEQ0MEJDOTI1NTQ2M0JGMDA3MjEzNDkgLyogRGlzcGxheUxpc3RJ
dGVtQnVmZmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkU1RkJENTFDM0RENTFFMDAwN0EyQ0Eg
LyogRGlzcGxheUxpc3RJdGVtcy5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmgKaW5kZXggN2U2
ZDkzZTc2MGE3ZmEwODBhYWViNGYzNmUzYzNhOTQ3M2IxMDQwZC4uZDdiMGIxYTdmOTNkOTEzNGM5
ZGNlYjNkMjc4ZDk2MmVkOTZjODI4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaApAQCAtMzYsMzEgKzM2LDQzIEBA
IHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJbWFnZUJ1ZmZlclR5cGUgPSBDb25jcmV0
ZUltYWdlQnVmZmVyLCB0eXBlbmFtZS4uLiBBcmd1bWVudHM+CiAgICAgc3RhdGljIFJlZlB0cjxJ
bWFnZUJ1ZmZlclR5cGU+IGNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29s
dXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1h
dCwgY29uc3QgSG9zdFdpbmRvdyogaG9zdFdpbmRvdywgQXJndW1lbnRzJiYuLi4gYXJndW1lbnRz
KQogICAgIHsKLSAgICAgICAgYXV0byBiYWNrZW5kID0gQmFja2VuZFR5cGU6OmNyZWF0ZShzaXpl
LCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0LCBob3N0V2luZG93KTsK
KyAgICAgICAgYXV0byBwYXJhbWV0ZXJzID0gSW1hZ2VCdWZmZXJCYWNrZW5kOjpQYXJhbWV0ZXJz
IHsgc2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCB9OworICAg
ICAgICBhdXRvIGJhY2tlbmQgPSBCYWNrZW5kVHlwZTo6Y3JlYXRlKHBhcmFtZXRlcnMsIGhvc3RX
aW5kb3cpOwogICAgICAgICBpZiAoIWJhY2tlbmQpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbWFnZUJ1ZmZlclR5cGUoV1RGTW92ZShi
YWNrZW5kKSwgc3RkOjpmb3J3YXJkPEFyZ3VtZW50cz4oYXJndW1lbnRzKS4uLikpOworICAgICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IEltYWdlQnVmZmVyVHlwZShwYXJhbWV0ZXJzLCBXVEZNb3Zl
KGJhY2tlbmQpLCBzdGQ6OmZvcndhcmQ8QXJndW1lbnRzPihhcmd1bWVudHMpLi4uKSk7CiAgICAg
fQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSW1hZ2VCdWZmZXJUeXBlID0gQ29uY3JldGVJbWFn
ZUJ1ZmZlciwgdHlwZW5hbWUuLi4gQXJndW1lbnRzPgogICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VC
dWZmZXJUeXBlPiBjcmVhdGUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBjb25zdCBHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIEFyZ3VtZW50cyYmLi4uIGFyZ3VtZW50cykKICAgICB7Ci0gICAgICAg
IGF1dG8gYmFja2VuZCA9IEJhY2tlbmRUeXBlOjpjcmVhdGUoc2l6ZSwgY29udGV4dCk7CisgICAg
ICAgIGF1dG8gcGFyYW1ldGVycyA9IEltYWdlQnVmZmVyQmFja2VuZDo6UGFyYW1ldGVycyB7IHNp
emUsIDEsIENvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCB9OworICAgICAgICBh
dXRvIGJhY2tlbmQgPSBCYWNrZW5kVHlwZTo6Y3JlYXRlKHBhcmFtZXRlcnMsIGNvbnRleHQpOwog
ICAgICAgICBpZiAoIWJhY2tlbmQpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbWFnZUJ1ZmZlclR5cGUoV1RGTW92ZShiYWNrZW5kKSwg
c3RkOjpmb3J3YXJkPEFyZ3VtZW50cz4oYXJndW1lbnRzKS4uLikpOworICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IEltYWdlQnVmZmVyVHlwZShwYXJhbWV0ZXJzLCBXVEZNb3ZlKGJhY2tlbmQp
LCBzdGQ6OmZvcndhcmQ8QXJndW1lbnRzPihhcmd1bWVudHMpLi4uKSk7CiAgICAgfQogCi0gICAg
Ym9vbCBpc0FjY2VsZXJhdGVkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gQmFja2VuZFR5cGU6
OmlzQWNjZWxlcmF0ZWQ7IH0KKyAgICBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBCYWNrZW5kVHlwZTo6cmVuZGVyaW5nTW9kZTsgfQogICAgIGJv
b2wgY2FuTWFwQmFja2luZ1N0b3JlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gQmFja2VuZFR5
cGU6OmNhbk1hcEJhY2tpbmdTdG9yZTsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgQ29uY3JldGVJbWFn
ZUJ1ZmZlcihzdGQ6OnVuaXF1ZV9wdHI8QmFja2VuZFR5cGU+JiYgYmFja2VuZCA9IG51bGxwdHIs
IFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIg
PSBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI6OmdlbmVyYXRlKCkpCi0gICAgICAgIDogbV9i
YWNrZW5kKFdURk1vdmUoYmFja2VuZCkpCisgICAgQ29uY3JldGVJbWFnZUJ1ZmZlcihjb25zdCBJ
bWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIHN0ZDo6dW5pcXVlX3B0
cjxCYWNrZW5kVHlwZT4mJiBiYWNrZW5kID0gbnVsbHB0ciwgUmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciA9IFJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcjo6Z2VuZXJhdGUoKSkKKyAgICAgICAgOiBtX3BhcmFtZXRlcnMocGFyYW1ldGVycykK
KyAgICAgICAgLCBtX2JhY2tlbmQoV1RGTW92ZShiYWNrZW5kKSkKICAgICAgICAgLCBtX3JlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcihyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCiAgICAg
ewogICAgIH0KIAorICAgIHZvaWQgc2V0QmFja2VuZChzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZm
ZXJCYWNrZW5kPiYmIGJhY2tlbmQpIG92ZXJyaWRlCisgICAgeworICAgICAgICBBU1NFUlQoIW1f
YmFja2VuZCk7CisgICAgICAgIG1fYmFja2VuZCA9IHN0ZDo6dW5pcXVlX3B0cjxCYWNrZW5kVHlw
ZT4geyBzdGF0aWNfY2FzdDxCYWNrZW5kVHlwZSo+KGJhY2tlbmQucmVsZWFzZSgpKSB9OworICAg
IH0KKworICAgIHZvaWQgY2xlYXJCYWNrZW5kKCkgb3ZlcnJpZGUgeyBtX2JhY2tlbmQgPSBudWxs
cHRyOyB9CisKKyAgICBJbWFnZUJ1ZmZlckJhY2tlbmQqIGJhY2tlbmQoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBtX2JhY2tlbmQuZ2V0KCk7IH0KICAgICB2aXJ0dWFsIEJhY2tlbmRUeXBlKiBl
bnN1cmVCYWNrZW5kQ3JlYXRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2VuZC5nZXQoKTsgfQog
CiAgICAgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyOyB9CkBAIC03OSwxOSArOTEsMTEgQEAgcHJvdGVjdGVkOgogICAgICAgICB9CiAgICAgfQog
Ci0gICAgQWZmaW5lVHJhbnNmb3JtIGJhc2VUcmFuc2Zvcm0oKSBjb25zdCBvdmVycmlkZQotICAg
IHsKLSAgICAgICAgaWYgKGF1dG8qIGJhY2tlbmQgPSBlbnN1cmVCYWNrZW5kQ3JlYXRlZCgpKQot
ICAgICAgICAgICAgcmV0dXJuIGJhY2tlbmQtPmJhc2VUcmFuc2Zvcm0oKTsKLSAgICAgICAgcmV0
dXJuIHsgfTsKLSAgICB9Ci0KLSAgICBJbnRTaXplIGxvZ2ljYWxTaXplKCkgY29uc3Qgb3ZlcnJp
ZGUKLSAgICB7Ci0gICAgICAgIGlmIChhdXRvKiBiYWNrZW5kID0gZW5zdXJlQmFja2VuZENyZWF0
ZWQoKSkKLSAgICAgICAgICAgIHJldHVybiBiYWNrZW5kLT5sb2dpY2FsU2l6ZSgpOwotICAgICAg
ICByZXR1cm4geyB9OwotICAgIH0KKyAgICBJbnRTaXplIGxvZ2ljYWxTaXplKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gSW50U2l6ZShtX3BhcmFtZXRlcnMubG9naWNhbFNpemUpOyB9CisgICAg
ZmxvYXQgcmVzb2x1dGlvblNjYWxlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9wYXJhbWV0
ZXJzLnJlc29sdXRpb25TY2FsZTsgfQorICAgIENvbG9yU3BhY2UgY29sb3JTcGFjZSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIG1fcGFyYW1ldGVycy5jb2xvclNwYWNlOyB9CisgICAgUGl4ZWxG
b3JtYXQgcGl4ZWxGb3JtYXQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3BhcmFtZXRlcnMu
cGl4ZWxGb3JtYXQ7IH0KKyAgICBjb25zdCBJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnMm
IHBhcmFtZXRlcnMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3BhcmFtZXRlcnM7IH0KIAog
ICAgIEludFNpemUgYmFja2VuZFNpemUoKSBjb25zdCBvdmVycmlkZQogICAgIHsKQEAgLTEwMCwx
MSArMTA0LDExIEBAIHByb3RlY3RlZDoKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAKLSAg
ICBmbG9hdCByZXNvbHV0aW9uU2NhbGUoKSBjb25zdCBvdmVycmlkZQorICAgIEFmZmluZVRyYW5z
Zm9ybSBiYXNlVHJhbnNmb3JtKCkgY29uc3Qgb3ZlcnJpZGUKICAgICB7Ci0gICAgICAgIGlmIChh
dXRvKiBiYWNrZW5kID0gZW5zdXJlQmFja2VuZENyZWF0ZWQoKSkKLSAgICAgICAgICAgIHJldHVy
biBiYWNrZW5kLT5yZXNvbHV0aW9uU2NhbGUoKTsKLSAgICAgICAgcmV0dXJuIDE7CisgICAgICAg
IGlmIChCYWNrZW5kVHlwZTo6aXNPcmlnaW5BdFVwcGVyTGVmdENvcm5lcikKKyAgICAgICAgICAg
IHJldHVybiBBZmZpbmVUcmFuc2Zvcm0oMSwgMCwgMCwgLTEsIDAsIGxvZ2ljYWxTaXplKCkuaGVp
Z2h0KCkpOworICAgICAgICByZXR1cm4geyB9OwogICAgIH0KIAogICAgIHNpemVfdCBtZW1vcnlD
b3N0KCkgY29uc3Qgb3ZlcnJpZGUKQEAgLTI5Miw2ICsyOTYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAg
ICAgICAgICBiYWNrZW5kLT5yZWxlYXNlQnVmZmVyVG9Qb29sKCk7CiAgICAgfQogCisgICAgSW1h
Z2VCdWZmZXJCYWNrZW5kOjpQYXJhbWV0ZXJzIG1fcGFyYW1ldGVyczsKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8QmFja2VuZFR5cGU+IG1fYmFja2VuZDsKICAgICBSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIgbV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI7CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKaW5kZXggYjY2NjAzZDQ5YmMzNDBl
OGE4OThhMjIzNzMyMjFjNTNkMDBkYWIwOC4uOThiMjJlZThhZTA3ODQyNTlhNDZjYmIxZmIyZjRi
ZTAyZjEyMDhiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZUJ1ZmZlci5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAi
RGlzcGxheUxpc3RGbHVzaElkZW50aWZpZXIuaCIKICNpbmNsdWRlICJJbWFnZUJ1ZmZlckJhY2tl
bmQuaCIKICNpbmNsdWRlICJSZW5kZXJpbmdNb2RlLmgiCiAjaW5jbHVkZSAiUmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyLmgiCkBAIC02MywxMCArNjQsMTQgQEAgcHVibGljOgogICAgIAogICAg
IFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgfkltYWdlQnVmZmVyKCkgPSBkZWZhdWx0OwogCi0gICAg
dmlydHVhbCBib29sIGlzQWNjZWxlcmF0ZWQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lk
IHNldEJhY2tlbmQoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQmFja2VuZD4mJikgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBjbGVhckJhY2tlbmQoKSA9IDA7CisgICAgdmlydHVhbCBJbWFnZUJ1
ZmZlckJhY2tlbmQqIGJhY2tlbmQoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9CisKKyAgICB2
aXJ0dWFsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0
dWFsIGJvb2wgY2FuTWFwQmFja2luZ1N0b3JlKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgUmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpIGNv
bnN0IHsgcmV0dXJuIHsgfTsgfQotICAgIAorCiAgICAgdmlydHVhbCBHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGZsdXNoQ29udGV4dCgpID0g
MDsKIApAQCAtNzQsMTEgKzc5LDE3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgcHJlZmVy
c1ByZXBhcmF0aW9uRm9yRGlzcGxheSgpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCB2
b2lkIGZsdXNoRHJhd2luZ0NvbnRleHQoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZmx1c2hEcmF3
aW5nQ29udGV4dEFuZENvbW1pdCgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBzdWJtaXREaXNwbGF5
TGlzdChjb25zdCBEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmKSB7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgZGlkRmx1c2goRGlzcGxheUxpc3Q6OkZsdXNoSWRlbnRpZmllcikgeyB9CiAKLSAgICB2aXJ0
dWFsIEFmZmluZVRyYW5zZm9ybSBiYXNlVHJhbnNmb3JtKCkgY29uc3QgPSAwOwogICAgIHZpcnR1
YWwgSW50U2l6ZSBsb2dpY2FsU2l6ZSgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIEludFNpemUg
YmFja2VuZFNpemUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBmbG9hdCByZXNvbHV0aW9uU2Nh
bGUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBDb2xvclNwYWNlIGNvbG9yU3BhY2UoKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCgpIGNvbnN0ID0gMDsK
KyAgICB2aXJ0dWFsIGNvbnN0IEltYWdlQnVmZmVyQmFja2VuZDo6UGFyYW1ldGVycyYgcGFyYW1l
dGVycygpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgSW50U2l6ZSBiYWNrZW5kU2l6ZSgpIGNv
bnN0ID0gMDsKKyAgICB2aXJ0dWFsIEFmZmluZVRyYW5zZm9ybSBiYXNlVHJhbnNmb3JtKCkgY29u
c3QgPSAwOwogCiAgICAgdmlydHVhbCBzaXplX3QgbWVtb3J5Q29zdCgpIGNvbnN0ID0gMDsKICAg
ICB2aXJ0dWFsIHNpemVfdCBleHRlcm5hbE1lbW9yeUNvc3QoKSBjb25zdCA9IDA7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5k
LmNwcAppbmRleCA3ZjBmZTllNmQ5NjZlNzRiNDVmODVhYWQwZTNiMmZiODRkOTQ1MGI5Li45Mzk0
ZTdiZmY0MjliYzIxZWZjZGYzYjE0MDExMWYxYWUyY2E5NDRkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5jcHAKQEAg
LTMxLDEyICszMSw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotSW1hZ2VCdWZmZXJCYWNr
ZW5kOjpJbWFnZUJ1ZmZlckJhY2tlbmQoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29u
c3QgSW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFj
ZSBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCkKLSAgICA6IG1fbG9naWNhbFNp
emUobG9naWNhbFNpemUpCi0gICAgLCBtX2JhY2tlbmRTaXplKGJhY2tlbmRTaXplKQotICAgICwg
bV9yZXNvbHV0aW9uU2NhbGUocmVzb2x1dGlvblNjYWxlKQotICAgICwgbV9jb2xvclNwYWNlKGNv
bG9yU3BhY2UpCi0gICAgLCBtX3BpeGVsRm9ybWF0KHBpeGVsRm9ybWF0KQorSW1hZ2VCdWZmZXJC
YWNrZW5kOjpJbWFnZUJ1ZmZlckJhY2tlbmQoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycykK
KyAgICA6IG1fcGFyYW1ldGVycyhwYXJhbWV0ZXJzKQogewogfQogCkBAIC05OSwxNSArOTUsMTUg
QEAgdm9pZCBJbWFnZUJ1ZmZlckJhY2tlbmQ6OmNvbnZlcnRUb0x1bWluYW5jZU1hc2soKQogCiBW
ZWN0b3I8dWludDhfdD4gSW1hZ2VCdWZmZXJCYWNrZW5kOjp0b0JHUkFEYXRhKHZvaWQqIGRhdGEp
IGNvbnN0CiB7Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3VsdCg0ICogbV9sb2dpY2FsU2l6ZS5h
cmVhKCkudW5zYWZlR2V0KCkpOwotICAgIHNpemVfdCBkZXN0Qnl0ZXNQZXJSb3cgPSBtX2xvZ2lj
YWxTaXplLndpZHRoKCkgKiA0OworICAgIFZlY3Rvcjx1aW50OF90PiByZXN1bHQoNCAqIGxvZ2lj
YWxTaXplKCkuYXJlYSgpLnVuc2FmZUdldCgpKTsKKyAgICBzaXplX3QgZGVzdEJ5dGVzUGVyUm93
ID0gbG9naWNhbFNpemUoKS53aWR0aCgpICogNDsKICAgICBzaXplX3Qgc3JjQnl0ZXNQZXJSb3cg
PSBieXRlc1BlclJvdygpOwogCiAgICAgdWludDhfdCogc3JjUm93cyA9IHJlaW50ZXJwcmV0X2Nh
c3Q8dWludDhfdCo+KGRhdGEpOwogCiAgICAgY29weUltYWdlUGl4ZWxzKAogICAgICAgICBBbHBo
YVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkLCBwaXhlbEZvcm1hdCgpLCBzcmNCeXRl
c1BlclJvdywgc3JjUm93cywKLSAgICAgICAgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVt
dWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6QkdSQTgsIGRlc3RCeXRlc1BlclJvdywgcmVzdWx0LmRh
dGEoKSwgbV9sb2dpY2FsU2l6ZSk7CisgICAgICAgIEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVu
cHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OkJHUkE4LCBkZXN0Qnl0ZXNQZXJSb3csIHJlc3Vs
dC5kYXRhKCksIGxvZ2ljYWxTaXplKCkpOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2Vu
ZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5k
LmgKaW5kZXggNjgwODQwNTJhMTVhMTQyN2Y1NmY3MzAxNTIxMmM4ZDY0ZDE5YmRhYS4uYjBmMjQw
MDUzYWYzNTFkZDg4YmE3M2EyNTc5ZDQ2Y2RlOGRhZTI5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmgKQEAgLTMyLDYg
KzMyLDcgQEAKICNpbmNsdWRlICJJbWFnZVBhaW50aW5nT3B0aW9ucy5oIgogI2luY2x1ZGUgIklu
dFJlY3QuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUxheWVyLmgiCisjaW5jbHVkZSAiUmVuZGVyaW5n
TW9kZS5oIgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CiAKQEAgLTc3LDYgKzc4LDEzIEBAIHB1YmxpYzoKIAogY2xhc3MgSW1hZ2VCdWZmZXJCYWNrZW5k
IHsKIHB1YmxpYzoKKyAgICBzdHJ1Y3QgUGFyYW1ldGVycyB7CisgICAgICAgIEZsb2F0U2l6ZSBs
b2dpY2FsU2l6ZTsKKyAgICAgICAgZmxvYXQgcmVzb2x1dGlvblNjYWxlOworICAgICAgICBDb2xv
clNwYWNlIGNvbG9yU3BhY2U7CisgICAgICAgIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0OworICAg
IH07CisKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5JbWFnZUJ1ZmZlckJhY2tlbmQoKSA9
IGRlZmF1bHQ7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgSW50U2l6ZSBjYWxjdWxhdGVC
YWNrZW5kU2l6ZShjb25zdCBGbG9hdFNpemUmLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUpOwpAQCAt
ODQsMTQgKzkyLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBmbHVzaENvbnRleHQoKSB7IH0KIAot
ICAgIEludFNpemUgbG9naWNhbFNpemUoKSBjb25zdCB7IHJldHVybiBtX2xvZ2ljYWxTaXplOyB9
Ci0gICAgSW50U2l6ZSBiYWNrZW5kU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2VuZFNpemU7
IH0KLSAgICBmbG9hdCByZXNvbHV0aW9uU2NhbGUoKSBjb25zdCB7IHJldHVybiBtX3Jlc29sdXRp
b25TY2FsZTsgfQotICAgIENvbG9yU3BhY2UgY29sb3JTcGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1f
Y29sb3JTcGFjZTsgfQotICAgIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0KCkgY29uc3QgeyByZXR1
cm4gbV9waXhlbEZvcm1hdDsgfQorICAgIHZpcnR1YWwgSW50U2l6ZSBiYWNrZW5kU2l6ZSgpIGNv
bnN0IHsgcmV0dXJuIHsgfTsgfQogCi0gICAgdmlydHVhbCBBZmZpbmVUcmFuc2Zvcm0gYmFzZVRy
YW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIEFmZmluZVRyYW5zZm9ybSgpOyB9Ci0gICAgdmlydHVh
bCBzaXplX3QgbWVtb3J5Q29zdCgpIGNvbnN0IHsgcmV0dXJuIDQgKiBtX2JhY2tlbmRTaXplLmFy
ZWEoKS51bnNhZmVHZXQoKTsgfQorICAgIHZpcnR1YWwgc2l6ZV90IG1lbW9yeUNvc3QoKSBjb25z
dCB7IHJldHVybiA0ICogYmFja2VuZFNpemUoKS5hcmVhKCkudW5zYWZlR2V0KCk7IH0KICAgICB2
aXJ0dWFsIHNpemVfdCBleHRlcm5hbE1lbW9yeUNvc3QoKSBjb25zdCB7IHJldHVybiAwOyB9CiAK
ICAgICB2aXJ0dWFsIFJlZlB0cjxOYXRpdmVJbWFnZT4gY29weU5hdGl2ZUltYWdlKEJhY2tpbmdT
dG9yZUNvcHkpIGNvbnN0ID0gMDsKQEAgLTEyNSwyNyArMTI4LDMyIEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgcmVsZWFzZUJ1ZmZlclRvUG9vbCgpIHsgfQogCiAgICAgdmlydHVhbCBzdGQ6
OnVuaXF1ZV9wdHI8VGhyZWFkU2FmZUltYWdlQnVmZmVyRmx1c2hlcj4gY3JlYXRlRmx1c2hlcigp
IHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICAKKwogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBp
c09yaWdpbkF0VXBwZXJMZWZ0Q29ybmVyID0gZmFsc2U7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBi
b29sIGlzQWNjZWxlcmF0ZWQgPSBmYWxzZTsKICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgY2Fu
TWFwQmFja2luZ1N0b3JlID0gdHJ1ZTsKKyAgICBzdGF0aWMgY29uc3RleHByIFJlbmRlcmluZ01v
ZGUgcmVuZGVyaW5nTW9kZSA9IFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQ7CiAKIHByb3Rl
Y3RlZDoKLSAgICBXRUJDT1JFX0VYUE9SVCBJbWFnZUJ1ZmZlckJhY2tlbmQoY29uc3QgRmxvYXRT
aXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29s
dXRpb25TY2FsZSwgQ29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQpOworICAgIFdFQkNPUkVfRVhQT1JU
IEltYWdlQnVmZmVyQmFja2VuZChjb25zdCBQYXJhbWV0ZXJzJik7CiAKLSAgICB2aXJ0dWFsIHVu
c2lnbmVkIGJ5dGVzUGVyUm93KCkgY29uc3QgeyByZXR1cm4gNCAqIG1fYmFja2VuZFNpemUud2lk
dGgoKTsgfQorICAgIHZpcnR1YWwgdW5zaWduZWQgYnl0ZXNQZXJSb3coKSBjb25zdCB7IHJldHVy
biA0ICogYmFja2VuZFNpemUoKS53aWR0aCgpOyB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PgogICAgIFQgdG9CYWNrZW5kQ29vcmRpbmF0ZXMoVCB0KSBjb25zdAogICAgIHsKICAgICAgICAg
c3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8VCwgSW50UG9pbnQ+Ojp2YWx1ZSB8fCBzdGQ6Omlz
X3NhbWU8VCwgSW50U2l6ZT46OnZhbHVlIHx8IHN0ZDo6aXNfc2FtZTxULCBJbnRSZWN0Pjo6dmFs
dWUpOwotICAgICAgICBpZiAobV9yZXNvbHV0aW9uU2NhbGUgIT0gMSkKLSAgICAgICAgICAgIHQu
c2NhbGUobV9yZXNvbHV0aW9uU2NhbGUpOworICAgICAgICBpZiAocmVzb2x1dGlvblNjYWxlKCkg
IT0gMSkKKyAgICAgICAgICAgIHQuc2NhbGUocmVzb2x1dGlvblNjYWxlKCkpOwogICAgICAgICBy
ZXR1cm4gdDsKICAgICB9CiAKLSAgICBJbnRSZWN0IGxvZ2ljYWxSZWN0KCkgY29uc3QgeyByZXR1
cm4gSW50UmVjdChJbnRQb2ludDo6emVybygpLCBtX2xvZ2ljYWxTaXplKTsgfTsKLSAgICBJbnRS
ZWN0IGJhY2tlbmRSZWN0KCkgY29uc3QgeyByZXR1cm4gSW50UmVjdChJbnRQb2ludDo6emVybygp
LCBtX2JhY2tlbmRTaXplKTsgfTsKKyAgICBJbnRTaXplIGxvZ2ljYWxTaXplKCkgY29uc3QgeyBy
ZXR1cm4gSW50U2l6ZShtX3BhcmFtZXRlcnMubG9naWNhbFNpemUpOyB9CisgICAgZmxvYXQgcmVz
b2x1dGlvblNjYWxlKCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0ZXJzLnJlc29sdXRpb25TY2Fs
ZTsgfQorICAgIENvbG9yU3BhY2UgY29sb3JTcGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1l
dGVycy5jb2xvclNwYWNlOyB9CisgICAgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQoKSBjb25zdCB7
IHJldHVybiBtX3BhcmFtZXRlcnMucGl4ZWxGb3JtYXQ7IH0KKworICAgIEludFJlY3QgbG9naWNh
bFJlY3QoKSBjb25zdCB7IHJldHVybiBJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIGxvZ2ljYWxT
aXplKCkpOyB9OworICAgIEludFJlY3QgYmFja2VuZFJlY3QoKSBjb25zdCB7IHJldHVybiBJbnRS
ZWN0KEludFBvaW50Ojp6ZXJvKCksIGJhY2tlbmRTaXplKCkpOyB9OwogCiAgICAgV0VCQ09SRV9F
WFBPUlQgdmlydHVhbCB2b2lkIGNvcHlJbWFnZVBpeGVscygKICAgICAgICAgQWxwaGFQcmVtdWx0
aXBsaWNhdGlvbiBzcmNBbHBoYUZvcm1hdCwgUGl4ZWxGb3JtYXQgc3JjUGl4ZWxGb3JtYXQsIHVu
c2lnbmVkIHNyY0J5dGVzUGVyUm93LCB1aW50OF90KiBzcmNSb3dzLApAQCAtMTU2LDExICsxNjQs
NyBAQCBwcm90ZWN0ZWQ6CiAgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPEltYWdlRGF0YT4gZ2V0
SW1hZ2VEYXRhKEFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBjb25zdCBJbnRS
ZWN0JiBzcmNSZWN0LCB2b2lkKiBkYXRhKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHB1dEltYWdlRGF0YShBbHBoYVByZW11bHRpcGxpY2F0aW9uIGlucHV0Rm9ybWF0LCBjb25zdCBJ
bWFnZURhdGEmLCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBv
aW50LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uIGRlc3RGb3JtYXQsIHZvaWQqIGRhdGEpOwogCi0g
ICAgSW50U2l6ZSBtX2xvZ2ljYWxTaXplOwotICAgIEludFNpemUgbV9iYWNrZW5kU2l6ZTsKLSAg
ICBmbG9hdCBtX3Jlc29sdXRpb25TY2FsZTsKLSAgICBDb2xvclNwYWNlIG1fY29sb3JTcGFjZTsK
LSAgICBQaXhlbEZvcm1hdCBtX3BpeGVsRm9ybWF0OworICAgIFBhcmFtZXRlcnMgbV9wYXJhbWV0
ZXJzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1JbWFnZUJ1ZmZlci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1JbWFnZUJ1ZmZlci5oCmluZGV4IGIwNWZh
NjUxNjk3MWQxNzY3MTMxZDU2YTQ2MzkzNTNlZjk0ZTQ5MjUuLjUyZGQ4M2NjOTNkNTU1M2IzNzll
NTg3ZDQzODVkNGY3ODA1OTQ0YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1BsYXRmb3JtSW1hZ2VCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybUltYWdlQnVmZmVyLmgKQEAgLTc1LDUgKzc1LDUgQEAgdXNp
bmcgRGlzcGxheUxpc3RBY2NlbGVyYXRlZEltYWdlQnVmZmVyID0gRGlzcGxheUxpc3Q6OkltYWdl
QnVmZmVyPEFjY2VsZXJhdGVkSW0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogU1BFQ0lBTEla
RV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpBY2NlbGVyYXRlZEltYWdlQnVmZmVyKQotICAg
IHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpJbWFnZUJ1ZmZlciYgYnVmZmVyKSB7
IHJldHVybiBidWZmZXIuaXNBY2NlbGVyYXRlZCgpOyB9CisgICAgc3RhdGljIGJvb2wgaXNUeXBl
KGNvbnN0IFdlYkNvcmU6OkltYWdlQnVmZmVyJiBidWZmZXIpIHsgcmV0dXJuIGJ1ZmZlci5yZW5k
ZXJpbmdNb2RlKCkgPT0gV2ViQ29yZTo6UmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQ7IH0KIFNQ
RUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5k
LmNwcAppbmRleCAxMmE1YjYwYTJlOTA0NmExOTU4OTJiYWY1ZGQ3ZWQ0OTYzM2IzZTc0Li5iM2Jm
ZDgxMjdiODdkMTY4OGVhYmI1Y2Y0YjJhNzFjMzM1OWNkMmQwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZm
ZXJDYWlyb0JhY2tlbmQuY3BwCkBAIC04MCw3ICs4MCw3IEBAIHZvaWQgSW1hZ2VCdWZmZXJDYWly
b0JhY2tlbmQ6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0
IEZsCiAgICAgfQogCiAgICAgaWYgKGF1dG8gaW1hZ2UgPSBjb3B5TmF0aXZlSW1hZ2UoJmRlc3RD
b250ZXh0ID09ICZjb250ZXh0KCkgPyBDb3B5QmFja2luZ1N0b3JlIDogRG9udENvcHlCYWNraW5n
U3RvcmUpKQotICAgICAgICBDYWlybzo6ZHJhd1BhdHRlcm4oKmRlc3RDb250ZXh0LnBsYXRmb3Jt
Q29udGV4dCgpLCBpbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpLCBtX2xvZ2ljYWxTaXplLCBk
ZXN0UmVjdCwgc3JjUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIG9wdGlvbnMpOworICAg
ICAgICBDYWlybzo6ZHJhd1BhdHRlcm4oKmRlc3RDb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLCBp
bWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpLCBsb2dpY2FsU2l6ZSgpLCBkZXN0UmVjdCwgc3Jj
UmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIG9wdGlvbnMpOwogfQogCiB2b2lkIEltYWdl
QnVmZmVyQ2Fpcm9CYWNrZW5kOjpjbGlwVG9NYXNrKEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRl
eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFj
a2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1
ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZC5jcHAKaW5kZXggMWNkMDc1NGIzOTE0M2FmNDI5
YjQ2ZDVkNzhlNDUxZjBkMWUwNzRjMy4uM2RhMTQ1NWViYTA2ZDY3OTRlMzMyNzAxN2RhYWZkNzli
YzU0NzJkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZh
Y2VCYWNrZW5kLmNwcApAQCAtNDEsMTMgKzQxLDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
V1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKEltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VC
YWNrZW5kKTsKIAotc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VC
YWNrZW5kPiBJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZDo6Y3JlYXRlKGNvbnN0
IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9y
U3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBjb25zdCBIb3N0V2luZG93KikKK3N0ZDo6
dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZD4gSW1hZ2VCdWZm
ZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiBwYXJh
bWV0ZXJzLCBjb25zdCBIb3N0V2luZG93KikKIHsKLSAgICBBU1NFUlQocGl4ZWxGb3JtYXQgPT0g
UGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBBU1NFUlQocGFyYW1ldGVycy5waXhlbEZvcm1hdCA9
PSBQaXhlbEZvcm1hdDo6QkdSQTgpOwogCiAgICAgc3RhdGljIGNhaXJvX3VzZXJfZGF0YV9rZXlf
dCBzX3N1cmZhY2VEYXRhS2V5OwogCi0gICAgSW50U2l6ZSBiYWNrZW5kU2l6ZSA9IGNhbGN1bGF0
ZUJhY2tlbmRTaXplKHNpemUsIHJlc29sdXRpb25TY2FsZSk7CisgICAgSW50U2l6ZSBiYWNrZW5k
U2l6ZSA9IGNhbGN1bGF0ZUJhY2tlbmRTaXplKHBhcmFtZXRlcnMubG9naWNhbFNpemUsIHBhcmFt
ZXRlcnMucmVzb2x1dGlvblNjYWxlKTsKICAgICBpZiAoYmFja2VuZFNpemUuaXNFbXB0eSgpIHx8
IGJhY2tlbmRTaXplLndpZHRoKCkgPiBjYWlyb01heEltYWdlU2l6ZSB8fCBiYWNrZW5kU2l6ZS5o
ZWlnaHQoKSA+IGNhaXJvTWF4SW1hZ2VTaXplKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApA
QCAtNjEsMTYgKzYxLDE2IEBAIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VT
dXJmYWNlQmFja2VuZD4gSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjCiAgICAgICAgIGZhc3RG
cmVlKGRhdGEpOwogICAgIH0pOwogCi0gICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1
ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZD4obmV3IEltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1
cmZhY2VCYWNrZW5kKHNpemUsIGJhY2tlbmRTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3Bh
Y2UsIHBpeGVsRm9ybWF0LCBXVEZNb3ZlKHN1cmZhY2UpKSk7CisgICAgcmV0dXJuIHN0ZDo6dW5p
cXVlX3B0cjxJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZD4obmV3IEltYWdlQnVm
ZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kKHBhcmFtZXRlcnMsIFdURk1vdmUoc3VyZmFjZSkp
KTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNr
ZW5kPiBJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZDo6Y3JlYXRlKGNvbnN0IEZs
b2F0U2l6ZSYgc2l6ZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0JikKK3N0ZDo6dW5pcXVlX3B0cjxJ
bWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZD4gSW1hZ2VCdWZmZXJDYWlyb0ltYWdl
U3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBjb25z
dCBHcmFwaGljc0NvbnRleHQmKQogewotICAgIHJldHVybiBJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VT
dXJmYWNlQmFja2VuZDo6Y3JlYXRlKHNpemUsIDEsIENvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9y
bWF0OjpCR1JBOCwgbnVsbHB0cik7CisgICAgcmV0dXJuIEltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1
cmZhY2VCYWNrZW5kOjpjcmVhdGUocGFyYW1ldGVycywgbnVsbHB0cik7CiB9CiAKLUltYWdlQnVm
ZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kOjpJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNl
QmFja2VuZChjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBJbnRTaXplJiBiYWNr
ZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFBp
eGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiYmIHN1cmZhY2Up
Ci0gICAgOiBJbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQobG9naWNhbFNpemUsIGJhY2tl
bmRTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0LCBXVEZNb3Zl
KHN1cmZhY2UpKQorSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQ6OkltYWdlQnVm
ZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMs
IFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+JiYgc3VyZmFjZSkKKyAgICA6IEltYWdlQnVmZmVyQ2Fp
cm9TdXJmYWNlQmFja2VuZChwYXJhbWV0ZXJzLCBXVEZNb3ZlKHN1cmZhY2UpKQogewogICAgIEFT
U0VSVChjYWlyb19zdXJmYWNlX2dldF90eXBlKG1fc3VyZmFjZS5nZXQoKSkgPT0gQ0FJUk9fU1VS
RkFDRV9UWVBFX0lNQUdFKTsKIH0KQEAgLTc5LDE2ICs3OSwxNiBAQCB2b2lkIEltYWdlQnVmZmVy
Q2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kOjpwbGF0Zm9ybVRyYW5zZm9ybUNvbG9yU3BhY2UoY29u
c3Qgc3RkOgogewogICAgIHVuc2lnbmVkIGNoYXIqIGRhdGFTcmMgPSBjYWlyb19pbWFnZV9zdXJm
YWNlX2dldF9kYXRhKG1fc3VyZmFjZS5nZXQoKSk7CiAgICAgaW50IHN0cmlkZSA9IGNhaXJvX2lt
YWdlX3N1cmZhY2VfZ2V0X3N0cmlkZShtX3N1cmZhY2UuZ2V0KCkpOwotICAgIGZvciAoaW50IHkg
PSAwOyB5IDwgbV9sb2dpY2FsU2l6ZS5oZWlnaHQoKTsgKyt5KSB7CisgICAgZm9yIChpbnQgeSA9
IDA7IHkgPCBsb2dpY2FsU2l6ZSgpLmhlaWdodCgpOyArK3kpIHsKICAgICAgICAgdW5zaWduZWQq
IHJvdyA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRyPHVuc2lnbmVkKj4oZGF0YVNyYyArIHN0cmlkZSAq
IHkpOwotICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8IG1fbG9naWNhbFNpemUud2lkdGgoKTsg
eCsrKSB7CisgICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgbG9naWNhbFNpemUoKS53aWR0aCgp
OyB4KyspIHsKICAgICAgICAgICAgIHVuc2lnbmVkKiBwaXhlbCA9IHJvdyArIHg7CiAgICAgICAg
ICAgICBhdXRvIHBpeGVsQ29tcG9uZW50cyA9IHVucHJlbXVsdGlwbGllZChhc1NSR0JBKFBhY2tl
ZENvbG9yOjpBUkdCIHsgKnBpeGVsIH0pKTsKICAgICAgICAgICAgIHBpeGVsQ29tcG9uZW50cyA9
IHsgbG9va1VwVGFibGVbcGl4ZWxDb21wb25lbnRzLnJlZF0sIGxvb2tVcFRhYmxlW3BpeGVsQ29t
cG9uZW50cy5ncmVlbl0sIGxvb2tVcFRhYmxlW3BpeGVsQ29tcG9uZW50cy5ibHVlXSwgcGl4ZWxD
b21wb25lbnRzLmFscGhhIH07CiAgICAgICAgICAgICAqcGl4ZWwgPSBQYWNrZWRDb2xvcjo6QVJH
QiB7IHByZW11bHRpcGxpZWRDZWlsaW5nKHBpeGVsQ29tcG9uZW50cykgfS52YWx1ZTsKICAgICAg
ICAgfQogICAgIH0KLSAgICBjYWlyb19zdXJmYWNlX21hcmtfZGlydHlfcmVjdGFuZ2xlKG1fc3Vy
ZmFjZS5nZXQoKSwgMCwgMCwgbV9sb2dpY2FsU2l6ZS53aWR0aCgpLCBtX2xvZ2ljYWxTaXplLmhl
aWdodCgpKTsKKyAgICBjYWlyb19zdXJmYWNlX21hcmtfZGlydHlfcmVjdGFuZ2xlKG1fc3VyZmFj
ZS5nZXQoKSwgMCwgMCwgbG9naWNhbFNpemUoKS53aWR0aCgpLCBsb2dpY2FsU2l6ZSgpLmhlaWdo
dCgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFj
ZUJhY2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdl
QnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kLmgKaW5kZXggZDE2ZDMzZWFjNDZjNWRmNjZm
YjhmYTJkOTU0OTEwZTJmOTExNWEwMy4uODY1Y2M2OWIyZDUzMzg1NDVmMzdlNDE5M2NiOTRmMTk4
MGJlNzNhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNl
QmFja2VuZC5oCkBAIC00MCwxMSArNDAsMTEgQEAgY2xhc3MgSW1hZ2VCdWZmZXJDYWlyb0ltYWdl
U3VyZmFjZUJhY2tlbmQgOiBwdWJsaWMgSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW4KICAg
ICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNr
ZW5kKTsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJm
YWNlQmFja2VuZCk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1
ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZD4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYsIGZs
b2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQsIGNvbnN0IEhvc3RX
aW5kb3cqKTsKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQ2Fpcm9JbWFn
ZVN1cmZhY2VCYWNrZW5kPiBjcmVhdGUoY29uc3QgRmxvYXRTaXplJiwgY29uc3QgR3JhcGhpY3ND
b250ZXh0Jik7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNhaXJvSW1h
Z2VTdXJmYWNlQmFja2VuZD4gY3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmLCBjb25zdCBIb3N0V2lu
ZG93Kik7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VT
dXJmYWNlQmFja2VuZD4gY3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmLCBjb25zdCBHcmFwaGljc0Nv
bnRleHQmKTsKIAogcHJpdmF0ZToKLSAgICBJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFj
a2VuZChjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBJbnRTaXplJiBiYWNrZW5k
U2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlLCBQaXhlbEZvcm1hdCwgUmVm
UHRyPGNhaXJvX3N1cmZhY2VfdD4mJik7CisgICAgSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFj
ZUJhY2tlbmQoY29uc3QgUGFyYW1ldGVycyYsIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+JiYpOwog
CiAgICAgdm9pZCBwbGF0Zm9ybVRyYW5zZm9ybUNvbG9yU3BhY2UoY29uc3Qgc3RkOjphcnJheTx1
aW50OF90LCAyNTY+JiBsb29rVXBUYWJsZSkgb3ZlcnJpZGU7CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZh
Y2VCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0lt
YWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZC5jcHAKaW5kZXggOWI4MjE2NGFlYTMzMDcxZTUz
NjFjNmZlMzliMWI4MjdjOWI2YjE1MC4uMGI3M2YxNGJhNzAwNWU1MjA1MGVkNTgyMTY0YTExNjM4
MDU0OTcxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQu
Y3BwCkBAIC00Myw4ICs0Myw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotSW1hZ2VCdWZm
ZXJDYWlyb1N1cmZhY2VCYWNrZW5kOjpJbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQoY29u
c3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50U2l6ZSYgYmFja2VuZFNpemUsIGZs
b2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBw
aXhlbEZvcm1hdCwgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4mJiBzdXJmYWNlKQotICAgIDogSW1h
Z2VCdWZmZXJDYWlyb0JhY2tlbmQobG9naWNhbFNpemUsIGJhY2tlbmRTaXplLCByZXNvbHV0aW9u
U2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0KQorSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VC
YWNrZW5kOjpJbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQoY29uc3QgUGFyYW1ldGVycyYg
cGFyYW1ldGVycywgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4mJiBzdXJmYWNlKQorICAgIDogSW1h
Z2VCdWZmZXJDYWlyb0JhY2tlbmQocGFyYW1ldGVycykKICAgICAsIG1fc3VyZmFjZShXVEZNb3Zl
KHN1cmZhY2UpKQogewogICAgIEFTU0VSVChjYWlyb19zdXJmYWNlX3N0YXR1cyhtX3N1cmZhY2Uu
Z2V0KCkpID09IENBSVJPX1NUQVRVU19TVUNDRVNTKTsKQEAgLTU5LDYgKzU5LDExIEBAIEdyYXBo
aWNzQ29udGV4dCYgSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kOjpjb250ZXh0KCkgY29u
c3QKICAgICByZXR1cm4gKm1fY29udGV4dDsKIH0KIAorSW50U2l6ZSBJbWFnZUJ1ZmZlckNhaXJv
U3VyZmFjZUJhY2tlbmQ6OmJhY2tlbmRTaXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4geyBjYWly
b19pbWFnZV9zdXJmYWNlX2dldF93aWR0aChtX3N1cmZhY2UuZ2V0KCkpLCBjYWlyb19pbWFnZV9z
dXJmYWNlX2dldF9oZWlnaHQobV9zdXJmYWNlLmdldCgpKSB9OworfQorCiB1bnNpZ25lZCBJbWFn
ZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQ6OmJ5dGVzUGVyUm93KCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfc3RyaWRlKG1fc3VyZmFjZS5nZXQoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1
ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZC5oCmluZGV4IDEyYWEyYjFj
ZTg4ZWU0MjY0NWZhNzcyZTY3OWY1ZDQxOTVhMjY3NDcuLjllOTNkZGU4NThlZjQzYjI4MmQ0Mzhj
YTVhNzY3ZmViY2JiZGRiY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNl
QmFja2VuZC5oCkBAIC00MCw2ICs0MCw4IEBAIGNsYXNzIEltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNl
QmFja2VuZCA6IHB1YmxpYyBJbWFnZUJ1ZmZlckNhaXJvQmFja2VuZCB7CiBwdWJsaWM6CiAgICAg
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KCkgY29uc3Qgb3ZlcnJpZGU7CiAKKyAgICBJbnRTaXpl
IGJhY2tlbmRTaXplKCkgY29uc3Qgb3ZlcnJpZGU7CisKICAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+
IGNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5KSBjb25zdCBvdmVycmlkZTsKIAogICAg
IFZlY3Rvcjx1aW50OF90PiB0b0JHUkFEYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CkBAIC00Nyw3ICs0
OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHB1dEltYWdlRGF0YShBbHBoYVByZW11bHRpcGxpY2F0
aW9uIGlucHV0Rm9ybWF0LCBjb25zdCBJbWFnZURhdGEmLCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0
LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uIGRlc3RG
b3JtYXQpIG92ZXJyaWRlOwogCiBwcm90ZWN0ZWQ6Ci0gICAgSW1hZ2VCdWZmZXJDYWlyb1N1cmZh
Y2VCYWNrZW5kKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEludFNpemUmIGJh
Y2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UsIFBpeGVsRm9ybWF0
LCBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiYmKTsKKyAgICBJbWFnZUJ1ZmZlckNhaXJvU3VyZmFj
ZUJhY2tlbmQoY29uc3QgUGFyYW1ldGVycyYsIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+JiYpOwog
CiAgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBjYWlyb1N1cmZhY2VDb2VyY2VUb0ltYWdlKCkgY29u
c3Q7CiAgICAgdW5zaWduZWQgYnl0ZXNQZXJSb3coKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCYWNr
ZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVy
Q0dCYWNrZW5kLmNwcAppbmRleCA1MDE3YmExMmM4YjQ4N2IwY2EwNmU1NDNiMTI5NjM2NWQ2ZGQy
YjJiLi4wMDczOWVhMzQyMGZlMzA4YTAxZmI2ZGFjOTQ5NGU5ZTUwZDhjZGNhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFja2Vu
ZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZm
ZXJDR0JhY2tlbmQuY3BwCkBAIC03OSw4ICs3OSw4IEBAIHZvaWQgSW1hZ2VCdWZmZXJDR0JhY2tl
bmQ6OnNldHVwQ29udGV4dCgpIGNvbnN0CiB7CiAgICAgLy8gVGhlIGluaXRpYWwgQ1RNIG1hdGNo
ZXMgRGlzcGxheUxpc3Q6OlJlY29yZGVyOjpjbGlwVG9EcmF3aW5nQ29tbWFuZHMoKSdzIGluaXRp
YWwgQ1RNLgogICAgIGNvbnRleHQoKS5zY2FsZShGbG9hdFNpemUoMSwgLTEpKTsKLSAgICBjb250
ZXh0KCkudHJhbnNsYXRlKDAsIC1tX2JhY2tlbmRTaXplLmhlaWdodCgpKTsKLSAgICBjb250ZXh0
KCkuYXBwbHlEZXZpY2VTY2FsZUZhY3RvcihtX3Jlc29sdXRpb25TY2FsZSk7CisgICAgY29udGV4
dCgpLnRyYW5zbGF0ZSgwLCAtYmFja2VuZFNpemUoKS5oZWlnaHQoKSk7CisgICAgY29udGV4dCgp
LmFwcGx5RGV2aWNlU2NhbGVGYWN0b3IocmVzb2x1dGlvblNjYWxlKCkpOwogfQogCiBzdGF0aWMg
UmV0YWluUHRyPENHSW1hZ2VSZWY+IGNyZWF0ZUNyb3BwZWRJbWFnZUlmTmVjZXNzYXJ5KENHSW1h
Z2VSZWYgaW1hZ2UsIGNvbnN0IEludFNpemUmIGJhY2tlbmRTaXplKQpAQCAtMTEyLDMxICsxMTIs
MzMgQEAgc3RhdGljIFJlZlB0cjxJbWFnZT4gY3JlYXRlQml0bWFwSW1hZ2VBZnRlclNjYWxpbmdJ
Zk5lZWRlZChSZWZQdHI8TmF0aXZlSW1hZ2U+JiYKIFJlZlB0cjxJbWFnZT4gSW1hZ2VCdWZmZXJD
R0JhY2tlbmQ6OmNvcHlJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvciwgUHJlc2Vy
dmVSZXNvbHV0aW9uIHByZXNlcnZlUmVzb2x1dGlvbikgY29uc3QKIHsKICAgICBSZWZQdHI8TmF0
aXZlSW1hZ2U+IGltYWdlOwotICAgIGlmIChtX3Jlc29sdXRpb25TY2FsZSA9PSAxIHx8IHByZXNl
cnZlUmVzb2x1dGlvbiA9PSBQcmVzZXJ2ZVJlc29sdXRpb246OlllcykKKyAgICBpZiAocmVzb2x1
dGlvblNjYWxlKCkgPT0gMSB8fCBwcmVzZXJ2ZVJlc29sdXRpb24gPT0gUHJlc2VydmVSZXNvbHV0
aW9uOjpZZXMpCiAgICAgICAgIGltYWdlID0gY29weU5hdGl2ZUltYWdlKGNvcHlCZWhhdmlvcik7
CiAgICAgZWxzZQogICAgICAgICBpbWFnZSA9IGNvcHlOYXRpdmVJbWFnZShEb250Q29weUJhY2tp
bmdTdG9yZSk7Ci0gICAgcmV0dXJuIGNyZWF0ZUJpdG1hcEltYWdlQWZ0ZXJTY2FsaW5nSWZOZWVk
ZWQoV1RGTW92ZShpbWFnZSksIG1fbG9naWNhbFNpemUsIG1fYmFja2VuZFNpemUsIG1fcmVzb2x1
dGlvblNjYWxlLCBwcmVzZXJ2ZVJlc29sdXRpb24pOworICAgIHJldHVybiBjcmVhdGVCaXRtYXBJ
bWFnZUFmdGVyU2NhbGluZ0lmTmVlZGVkKFdURk1vdmUoaW1hZ2UpLCBsb2dpY2FsU2l6ZSgpLCBi
YWNrZW5kU2l6ZSgpLCByZXNvbHV0aW9uU2NhbGUoKSwgcHJlc2VydmVSZXNvbHV0aW9uKTsKIH0K
IAogUmVmUHRyPEltYWdlPiBJbWFnZUJ1ZmZlckNHQmFja2VuZDo6c2lua0ludG9JbWFnZShQcmVz
ZXJ2ZVJlc29sdXRpb24gcHJlc2VydmVSZXNvbHV0aW9uKQogewotICAgIHJldHVybiBjcmVhdGVC
aXRtYXBJbWFnZUFmdGVyU2NhbGluZ0lmTmVlZGVkKHNpbmtJbnRvTmF0aXZlSW1hZ2UoKSwgbV9s
b2dpY2FsU2l6ZSwgbV9iYWNrZW5kU2l6ZSwgbV9yZXNvbHV0aW9uU2NhbGUsIHByZXNlcnZlUmVz
b2x1dGlvbik7CisgICAgLy8gR2V0IHRoZSBiYWNrZW5kIHNpemUgYmVmb3JlIHNpbmtpbmcgdGhl
IGl0IGludG8gYSBOYXRpdmVJbWFnZS4gc2lua0ludG9OYXRpdmVJbWFnZSgpIHNldHMgdGhlIElP
U3VyZmFjZSB0byBudWxsIGlmIGl0J3MgYW4gYWNjZWxlcmF0ZWQgYmFja2VuZC4KKyAgICBhdXRv
IGJhY2tlbmRTaXplID0gdGhpcy0+YmFja2VuZFNpemUoKTsKKyAgICByZXR1cm4gY3JlYXRlQml0
bWFwSW1hZ2VBZnRlclNjYWxpbmdJZk5lZWRlZChzaW5rSW50b05hdGl2ZUltYWdlKCksIGxvZ2lj
YWxTaXplKCksIGJhY2tlbmRTaXplLCByZXNvbHV0aW9uU2NhbGUoKSwgcHJlc2VydmVSZXNvbHV0
aW9uKTsKIH0KIAogdm9pZCBJbWFnZUJ1ZmZlckNHQmFja2VuZDo6ZHJhdyhHcmFwaGljc0NvbnRl
eHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAg
IEZsb2F0UmVjdCBzcmNSZWN0U2NhbGVkID0gc3JjUmVjdDsKLSAgICBzcmNSZWN0U2NhbGVkLnNj
YWxlKG1fcmVzb2x1dGlvblNjYWxlKTsKKyAgICBzcmNSZWN0U2NhbGVkLnNjYWxlKHJlc29sdXRp
b25TY2FsZSgpKTsKIAogICAgIGlmIChhdXRvIGltYWdlID0gY29weU5hdGl2ZUltYWdlKCZkZXN0
Q29udGV4dCA9PSAmY29udGV4dCgpID8gQ29weUJhY2tpbmdTdG9yZSA6IERvbnRDb3B5QmFja2lu
Z1N0b3JlKSkKLSAgICAgICAgZGVzdENvbnRleHQuZHJhd05hdGl2ZUltYWdlKCppbWFnZSwgbV9i
YWNrZW5kU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3RTY2FsZWQsIG9wdGlvbnMpOworICAgICAgICBk
ZXN0Q29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoKmltYWdlLCBiYWNrZW5kU2l6ZSgpLCBkZXN0UmVj
dCwgc3JjUmVjdFNjYWxlZCwgb3B0aW9ucyk7CiB9CiAKIHZvaWQgSW1hZ2VCdWZmZXJDR0JhY2tl
bmQ6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3Qg
RmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykK
IHsKICAgICBGbG9hdFJlY3QgYWRqdXN0ZWRTcmNSZWN0ID0gc3JjUmVjdDsKLSAgICBhZGp1c3Rl
ZFNyY1JlY3Quc2NhbGUobV9yZXNvbHV0aW9uU2NhbGUpOworICAgIGFkanVzdGVkU3JjUmVjdC5z
Y2FsZShyZXNvbHV0aW9uU2NhbGUoKSk7CiAKICAgICBpZiAoYXV0byBpbWFnZSA9IGNvcHlJbWFn
ZSgmZGVzdENvbnRleHQgPT0gJmNvbnRleHQoKSA/IENvcHlCYWNraW5nU3RvcmUgOiBEb250Q29w
eUJhY2tpbmdTdG9yZSkpCiAgICAgICAgIGltYWdlLT5kcmF3UGF0dGVybihkZXN0Q29udGV4dCwg
ZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNp
bmcsIG9wdGlvbnMpOwpAQCAtMTU5LDExICsxNjEsNiBAQCB2b2lkIEltYWdlQnVmZmVyQ0dCYWNr
ZW5kOjpjbGlwVG9NYXNrKEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0
UgogICAgIENHQ29udGV4dFRyYW5zbGF0ZUNUTShjZ0NvbnRleHQsIC1kZXN0UmVjdC54KCksIC1k
ZXN0UmVjdC5tYXhZKCkpOwogfQogCi1BZmZpbmVUcmFuc2Zvcm0gSW1hZ2VCdWZmZXJDR0JhY2tl
bmQ6OmJhc2VUcmFuc2Zvcm0oKSBjb25zdAotewotICAgIHJldHVybiBBZmZpbmVUcmFuc2Zvcm0o
MSwgMCwgMCwgLTEsIDAsIG1fbG9naWNhbFNpemUuaGVpZ2h0KCkpOwotfQotCiBSZXRhaW5QdHI8
Q0ZEYXRhUmVmPiBJbWFnZUJ1ZmZlckNHQmFja2VuZDo6dG9DRkRhdGEoY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5LCBQcmVzZXJ2ZVJlc29sdXRpb24gcHJl
c2VydmVSZXNvbHV0aW9uKSBjb25zdAogewogICAgIEFTU0VSVChNSU1FVHlwZVJlZ2lzdHJ5Ojpp
c1N1cHBvcnRlZEltYWdlTUlNRVR5cGVGb3JFbmNvZGluZyhtaW1lVHlwZSkpOwpAQCAtMTkwLDcg
KzE4Nyw3IEBAIFJldGFpblB0cjxDRkRhdGFSZWY+IEltYWdlQnVmZmVyQ0dCYWNrZW5kOjp0b0NG
RGF0YShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpCiAgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAogICAgICAgICBpbWFnZSA9IGFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZShwaXhlbEFycmF5
RGltZW5zaW9ucy53aWR0aCgpLCBwaXhlbEFycmF5RGltZW5zaW9ucy5oZWlnaHQoKSwgOCwgMzIs
IDQgKiBwaXhlbEFycmF5RGltZW5zaW9ucy53aWR0aCgpLCBzUkdCQ29sb3JTcGFjZVJlZigpLCBr
Q0dCaXRtYXBCeXRlT3JkZXJEZWZhdWx0IHwga0NHSW1hZ2VBbHBoYU5vbmVTa2lwTGFzdCwgZGF0
YVByb3ZpZGVyLmdldCgpLCAwLCBmYWxzZSwga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVsdCkpOwot
ICAgIH0gZWxzZSBpZiAobV9yZXNvbHV0aW9uU2NhbGUgPT0gMSB8fCBwcmVzZXJ2ZVJlc29sdXRp
b24gPT0gUHJlc2VydmVSZXNvbHV0aW9uOjpZZXMpIHsKKyAgICB9IGVsc2UgaWYgKHJlc29sdXRp
b25TY2FsZSgpID09IDEgfHwgcHJlc2VydmVSZXNvbHV0aW9uID09IFByZXNlcnZlUmVzb2x1dGlv
bjo6WWVzKSB7CiAgICAgICAgIGltYWdlID0gY29weU5hdGl2ZUltYWdlKENvcHlCYWNraW5nU3Rv
cmUpLT5wbGF0Zm9ybUltYWdlKCk7CiAgICAgICAgIGltYWdlID0gY3JlYXRlQ3JvcHBlZEltYWdl
SWZOZWNlc3NhcnkoaW1hZ2UuZ2V0KCksIGJhY2tlbmRTaXplKCkpOwogICAgIH0gZWxzZSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZl
ckNHQmFja2VuZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VC
dWZmZXJDR0JhY2tlbmQuaAppbmRleCAxZTA3ZmRjNjQ0M2ZkYzA4ZjZhZjYzZTA4ODNlYjMyMDUz
ZTRkNTk3Li5iMjZhZTA4NDM0N2I5ZTIzMzQwNDYwMGMyZWE0YTRhMjhiMWUxYmE3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFj
a2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVm
ZmVyQ0dCYWNrZW5kLmgKQEAgLTQxLDggKzQxLDYgQEAgcHVibGljOgogICAgIAogICAgIHZvaWQg
Y2xpcFRvTWFzayhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0KSBv
dmVycmlkZTsKIAotICAgIEFmZmluZVRyYW5zZm9ybSBiYXNlVHJhbnNmb3JtKCkgY29uc3Qgb3Zl
cnJpZGU7Ci0KICAgICBTdHJpbmcgdG9EYXRhVVJMKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9w
dGlvbmFsPGRvdWJsZT4gcXVhbGl0eSwgUHJlc2VydmVSZXNvbHV0aW9uKSBjb25zdCBvdmVycmlk
ZTsKICAgICBWZWN0b3I8dWludDhfdD4gdG9EYXRhKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9w
dGlvbmFsPGRvdWJsZT4gcXVhbGl0eSkgY29uc3Qgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNr
ZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVy
Q0dCaXRtYXBCYWNrZW5kLmNwcAppbmRleCBmMjE4ZjI3ZjJmNTNjNWE0YWRiYjZhNWFlZGMzYzQ5
ZTQ4Y2Q2M2E0Li45ZDUzOGJlZmNkOGUwMzhmMWExYTk3YTJhNzc4NDEzMGYzMjhjYTQ1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNH
Qml0bWFwQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQuY3BwCkBAIC0zOSwxMSArMzksMTEgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoSW1hZ2VCdWZm
ZXJDR0JpdG1hcEJhY2tlbmQpOwogCi1zdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJDR0JpdG1h
cEJhY2tlbmQ+IEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpjcmVhdGUoY29uc3QgRmxvYXRT
aXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwg
Q0dDb2xvclNwYWNlUmVmIGNnQ29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIGNv
bnN0IEhvc3RXaW5kb3cqKQorc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNr
ZW5kPiBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMm
IHBhcmFtZXRlcnMsIENHQ29sb3JTcGFjZVJlZiBjZ0NvbG9yU3BhY2UsIGNvbnN0IEhvc3RXaW5k
b3cqKQogewotICAgIEFTU0VSVChwaXhlbEZvcm1hdCA9PSBQaXhlbEZvcm1hdDo6QkdSQTgpOwor
ICAgIEFTU0VSVChwYXJhbWV0ZXJzLnBpeGVsRm9ybWF0ID09IFBpeGVsRm9ybWF0OjpCR1JBOCk7
CiAKLSAgICBJbnRTaXplIGJhY2tlbmRTaXplID0gY2FsY3VsYXRlQmFja2VuZFNpemUoc2l6ZSwg
cmVzb2x1dGlvblNjYWxlKTsKKyAgICBJbnRTaXplIGJhY2tlbmRTaXplID0gY2FsY3VsYXRlQmFj
a2VuZFNpemUocGFyYW1ldGVycy5sb2dpY2FsU2l6ZSwgcGFyYW1ldGVycy5yZXNvbHV0aW9uU2Nh
bGUpOwogICAgIGlmIChiYWNrZW5kU2l6ZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCkBAIC03MCwyNCArNzAsMjQgQEAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQ0dC
aXRtYXBCYWNrZW5kPiBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y3JlYXRlKGMKIAogICAg
IGF1dG8gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZVdpdGhEYXRh
KDAsIGRhdGEsIG51bUJ5dGVzLCByZWxlYXNlSW1hZ2VEYXRhKSk7CiAKLSAgICByZXR1cm4gc3Rk
Ojp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kPihuZXcgSW1hZ2VCdWZmZXJD
R0JpdG1hcEJhY2tlbmQoc2l6ZSwgYmFja2VuZFNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JT
cGFjZSwgcGl4ZWxGb3JtYXQsIGRhdGEsIFdURk1vdmUoZGF0YVByb3ZpZGVyKSwgV1RGTW92ZShj
b250ZXh0KSkpOworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJDR0JpdG1h
cEJhY2tlbmQ+KG5ldyBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZChwYXJhbWV0ZXJzLCBkYXRh
LCBXVEZNb3ZlKGRhdGFQcm92aWRlciksIFdURk1vdmUoY29udGV4dCkpKTsKIH0KIAotc3RkOjp1
bmlxdWVfcHRyPEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kPiBJbWFnZUJ1ZmZlckNHQml0bWFw
QmFja2VuZDo6Y3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgY29uc3QgR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0KQorc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5k
PiBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmIHBh
cmFtZXRlcnMsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKIHsKLSAgICBpZiAoYXV0
byBjZ0NvbG9yU3BhY2UgPSBjb250ZXh0Q29sb3JTcGFjZShjb250ZXh0KSkKLSAgICAgICAgcmV0
dXJuIEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpjcmVhdGUoc2l6ZSwgMSwgQ29sb3JTcGFj
ZTo6U1JHQiwgY2dDb2xvclNwYWNlLmdldCgpLCBQaXhlbEZvcm1hdDo6QkdSQTgsIG51bGxwdHIp
OwotICAgIAotICAgIHJldHVybiBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y3JlYXRlKHNp
emUsIDEsIENvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCwgbnVsbHB0cik7Cisg
ICAgaWYgKGF1dG8gY2dDb2xvclNwYWNlID0gY29udGV4dC5oYXNQbGF0Zm9ybUNvbnRleHQoKSA/
IGNvbnRleHRDb2xvclNwYWNlKGNvbnRleHQpIDogbnVsbHB0cikKKyAgICAgICAgcmV0dXJuIElt
YWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpjcmVhdGUocGFyYW1ldGVycywgY2dDb2xvclNwYWNl
LmdldCgpLCBudWxscHRyKTsKKworICAgIHJldHVybiBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2Vu
ZDo6Y3JlYXRlKHBhcmFtZXRlcnMsIG51bGxwdHIpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8SW1h
Z2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ+IEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpjcmVh
dGUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3Bh
Y2UgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIGNvbnN0IEhvc3RXaW5kb3cq
IGhvc3RXaW5kb3cpCitzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ+
IEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpjcmVhdGUoY29uc3QgUGFyYW1ldGVycyYgcGFy
YW1ldGVycywgY29uc3QgSG9zdFdpbmRvdyogaG9zdFdpbmRvdykKIHsKLSAgICByZXR1cm4gSW1h
Z2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNyZWF0ZShzaXplLCByZXNvbHV0aW9uU2NhbGUsIGNv
bG9yU3BhY2UsIGNhY2hlZENHQ29sb3JTcGFjZShjb2xvclNwYWNlKSwgcGl4ZWxGb3JtYXQsIGhv
c3RXaW5kb3cpOworICAgIHJldHVybiBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y3JlYXRl
KHBhcmFtZXRlcnMsIGNhY2hlZENHQ29sb3JTcGFjZShwYXJhbWV0ZXJzLmNvbG9yU3BhY2UpLCBo
b3N0V2luZG93KTsKIH0KIAotSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OkltYWdlQnVmZmVy
Q0dCaXRtYXBCYWNrZW5kKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEludFNp
emUmIGJhY2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JT
cGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIHZvaWQqIGRhdGEsIFJldGFpblB0cjxDR0Rh
dGFQcm92aWRlclJlZj4mJiBkYXRhUHJvdmlkZXIsIHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0Nv
bnRleHQ+JiYgY29udGV4dCkKLSAgICA6IEltYWdlQnVmZmVyQ0dCYWNrZW5kKGxvZ2ljYWxTaXpl
LCBiYWNrZW5kU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCkK
K0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZChj
b25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCB2b2lkKiBkYXRhLCBSZXRhaW5QdHI8Q0dEYXRh
UHJvdmlkZXJSZWY+JiYgZGF0YVByb3ZpZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NDb250
ZXh0PiYmIGNvbnRleHQpCisgICAgOiBJbWFnZUJ1ZmZlckNHQmFja2VuZChwYXJhbWV0ZXJzKQog
ICAgICwgbV9kYXRhKGRhdGEpCiAgICAgLCBtX2RhdGFQcm92aWRlcihXVEZNb3ZlKGRhdGFQcm92
aWRlcikpCiAgICAgLCBtX2NvbnRleHQoV1RGTW92ZShjb250ZXh0KSkKQEAgLTEwMyw2ICsxMDMs
MTIgQEAgR3JhcGhpY3NDb250ZXh0JiBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y29udGV4
dCgpIGNvbnN0CiAgICAgcmV0dXJuICptX2NvbnRleHQ7CiB9CiAKK0ludFNpemUgSW1hZ2VCdWZm
ZXJDR0JpdG1hcEJhY2tlbmQ6OmJhY2tlbmRTaXplKCkgY29uc3QKK3sKKyAgICBDR0NvbnRleHRS
ZWYgY2dDb250ZXh0ID0gY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpOworICAgIHJldHVybiB7
IHN0YXRpY19jYXN0PGludD4oQ0dCaXRtYXBDb250ZXh0R2V0V2lkdGgoY2dDb250ZXh0KSksIHN0
YXRpY19jYXN0PGludD4oQ0dCaXRtYXBDb250ZXh0R2V0SGVpZ2h0KGNnQ29udGV4dCkpIH07Cit9
CisKIFJlZlB0cjxOYXRpdmVJbWFnZT4gSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNvcHlO
YXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvcikgY29uc3QKIHsKICAgICBz
d2l0Y2ggKGNvcHlCZWhhdmlvcikgewpAQCAtMTEwLDkgKzExNiwxMCBAQCBSZWZQdHI8TmF0aXZl
SW1hZ2U+IEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UoQmFja2lu
Z1N0b3JlQ29weQogICAgICAgICByZXR1cm4gTmF0aXZlSW1hZ2U6OmNyZWF0ZShhZG9wdENGKENH
Qml0bWFwQ29udGV4dENyZWF0ZUltYWdlKGNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKSkpKTsK
IAogICAgIGNhc2UgRG9udENvcHlCYWNraW5nU3RvcmU6CisgICAgICAgIGF1dG8gYmFja2VuZFNp
emUgPSB0aGlzLT5iYWNrZW5kU2l6ZSgpOwogICAgICAgICByZXR1cm4gTmF0aXZlSW1hZ2U6OmNy
ZWF0ZShhZG9wdENGKENHSW1hZ2VDcmVhdGUoCi0gICAgICAgICAgICBtX2JhY2tlbmRTaXplLndp
ZHRoKCksIG1fYmFja2VuZFNpemUuaGVpZ2h0KCksIDgsIDMyLCBieXRlc1BlclJvdygpLAotICAg
ICAgICAgICAgY2FjaGVkQ0dDb2xvclNwYWNlKG1fY29sb3JTcGFjZSksIGtDR0ltYWdlQWxwaGFQ
cmVtdWx0aXBsaWVkRmlyc3QgfCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkhvc3QsIG1fZGF0YVByb3Zp
ZGVyLmdldCgpLAorICAgICAgICAgICAgYmFja2VuZFNpemUud2lkdGgoKSwgYmFja2VuZFNpemUu
aGVpZ2h0KCksIDgsIDMyLCBieXRlc1BlclJvdygpLAorICAgICAgICAgICAgY2FjaGVkQ0dDb2xv
clNwYWNlKGNvbG9yU3BhY2UoKSksIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkRmlyc3QgfCBr
Q0dCaXRtYXBCeXRlT3JkZXIzMkhvc3QsIG1fZGF0YVByb3ZpZGVyLmdldCgpLAogICAgICAgICAg
ICAgMCwgdHJ1ZSwga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVsdCkpKTsKICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dC
aXRtYXBCYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFn
ZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5oCmluZGV4IGU5MmM5MmY1ZDUwZmRlNTdhYWEzY2E1YzJm
ZjI5ZGYwOGI4NjRkMjkuLjhmMzMyM2U3ZGNlYzYzNTVhY2I3ZDViOTljMjA3ODc3MTVjODZiYTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVm
ZmVyQ0dCaXRtYXBCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQuaApAQCAtMzYsMTIgKzM2LDE0IEBAIGNs
YXNzIEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kIDogcHVibGljIEltYWdlQnVmZmVyQ0dCYWNr
ZW5kIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNr
ZW5kKTsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2Vu
ZCk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNHQml0
bWFwQmFja2VuZD4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYsIGZsb2F0IHJlc29sdXRpb25TY2Fs
ZSwgQ29sb3JTcGFjZSwgQ0dDb2xvclNwYWNlUmVmLCBQaXhlbEZvcm1hdCwgY29uc3QgSG9zdFdp
bmRvdyopOwotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJDR0JpdG1hcEJh
Y2tlbmQ+IGNyZWF0ZShjb25zdCBGbG9hdFNpemUmLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENv
bG9yU3BhY2UsIFBpeGVsRm9ybWF0LCBjb25zdCBIb3N0V2luZG93Kik7Ci0gICAgc3RhdGljIHN0
ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZD4gY3JlYXRlKGNvbnN0IEZs
b2F0U2l6ZSYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1
ZV9wdHI8SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ+IGNyZWF0ZShjb25zdCBQYXJhbWV0ZXJz
JiwgQ0dDb2xvclNwYWNlUmVmLCBjb25zdCBIb3N0V2luZG93Kik7CisgICAgc3RhdGljIHN0ZDo6
dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZD4gY3JlYXRlKGNvbnN0IFBhcmFt
ZXRlcnMmLCBjb25zdCBIb3N0V2luZG93Kik7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJ
bWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZD4gY3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmLCBjb25z
dCBHcmFwaGljc0NvbnRleHQmKTsKIAogICAgIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCgpIGNv
bnN0IG92ZXJyaWRlOwogCisgICAgSW50U2l6ZSBiYWNrZW5kU2l6ZSgpIGNvbnN0IG92ZXJyaWRl
OworCiAgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3Jl
Q29weSA9IENvcHlCYWNraW5nU3RvcmUpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgVmVjdG9yPHVp
bnQ4X3Q+IHRvQkdSQURhdGEoKSBjb25zdCBvdmVycmlkZTsKQEAgLTUyLDcgKzU0LDcgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc09yaWdpbkF0VXBwZXJMZWZ0Q29ybmVy
ID0gdHJ1ZTsKIAogcHJpdmF0ZToKLSAgICBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZChjb25z
dCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBJbnRTaXplJiBwaHlzaWNhbFNpemUsIGZs
b2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQsIHZvaWQqIGRhdGEs
IFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4mJiwgc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNz
Q29udGV4dD4mJik7CisgICAgSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQoY29uc3QgUGFyYW1l
dGVycyYsIHZvaWQqIGRhdGEsIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4mJiwgc3RkOjp1
bmlxdWVfcHRyPEdyYXBoaWNzQ29udGV4dD4mJik7CiAKICAgICB2b2lkKiBtX2RhdGE7CiAgICAg
UmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiBtX2RhdGFQcm92aWRlcjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNl
QmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1
ZmZlcklPU3VyZmFjZUJhY2tlbmQuY3BwCmluZGV4IGFkM2ZmMWQ3OTc3MjAzNzY0MGUyZDY5OTU0
MTI4ODYwYjc3NDhjMzYuLmQzZjQzMTA3NmI4ZWYyYmI3MWQxMjg5ZDFjYjc2ZDg3MzM3YjZkODIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVm
ZmVySU9TdXJmYWNlQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmNwcApAQCAtNjQsMTMgKzY0LDEz
IEBAIFJldGFpblB0cjxDR0NvbG9yU3BhY2VSZWY+IEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2Vu
ZDo6Y29udGV4dENvbG9yU3BhY2UoY29uc3QKICAgICByZXR1cm4gSW1hZ2VCdWZmZXJDR0JhY2tl
bmQ6OmNvbnRleHRDb2xvclNwYWNlKGNvbnRleHQpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8SW1h
Z2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kPiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNy
ZWF0ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JT
cGFjZSBjb2xvclNwYWNlLCBDR0NvbG9yU3BhY2VSZWYgY2dDb2xvclNwYWNlLCBQaXhlbEZvcm1h
dCBwaXhlbEZvcm1hdCwgY29uc3QgSG9zdFdpbmRvdyogaG9zdFdpbmRvdykKK3N0ZDo6dW5pcXVl
X3B0cjxJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ+IEltYWdlQnVmZmVySU9TdXJmYWNlQmFj
a2VuZDo6Y3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIENHQ29sb3JTcGFjZVJl
ZiBjZ0NvbG9yU3BhY2UsIGNvbnN0IEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cpCiB7Ci0gICAgSW50
U2l6ZSBiYWNrZW5kU2l6ZSA9IGNhbGN1bGF0ZUJhY2tlbmRTaXplKHNpemUsIHJlc29sdXRpb25T
Y2FsZSk7CisgICAgSW50U2l6ZSBiYWNrZW5kU2l6ZSA9IGNhbGN1bGF0ZUJhY2tlbmRTaXplKHBh
cmFtZXRlcnMubG9naWNhbFNpemUsIHBhcmFtZXRlcnMucmVzb2x1dGlvblNjYWxlKTsKICAgICBp
ZiAoYmFja2VuZFNpemUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAg
IGF1dG8gc3VyZmFjZSA9IElPU3VyZmFjZTo6Y3JlYXRlKGJhY2tlbmRTaXplLCBiYWNrZW5kU2l6
ZSwgY2dDb2xvclNwYWNlLCBJT1N1cmZhY2U6OmZvcm1hdEZvclBpeGVsRm9ybWF0KHBpeGVsRm9y
bWF0KSk7CisgICAgYXV0byBzdXJmYWNlID0gSU9TdXJmYWNlOjpjcmVhdGUoYmFja2VuZFNpemUs
IGJhY2tlbmRTaXplLCBjZ0NvbG9yU3BhY2UsIElPU3VyZmFjZTo6Zm9ybWF0Rm9yUGl4ZWxGb3Jt
YXQocGFyYW1ldGVycy5waXhlbEZvcm1hdCkpOwogICAgIGlmICghc3VyZmFjZSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKQEAgLTgwLDI0ICs4MCwyNCBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW1h
Z2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kPiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNy
ZWF0ZQogCiAgICAgQ0dDb250ZXh0Q2xlYXJSZWN0KGNnQ29udGV4dC5nZXQoKSwgRmxvYXRSZWN0
KEZsb2F0UG9pbnQ6Onplcm8oKSwgYmFja2VuZFNpemUpKTsKIAotICAgIHJldHVybiBtYWtlVW5p
cXVlPEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZD4oc2l6ZSwgYmFja2VuZFNpemUsIHJlc29s
dXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQsIFdURk1vdmUoc3VyZmFjZSkpOwor
ICAgIHJldHVybiBtYWtlVW5pcXVlPEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZD4ocGFyYW1l
dGVycywgV1RGTW92ZShzdXJmYWNlKSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZl
cklPU3VyZmFjZUJhY2tlbmQ+IEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlKGNv
bnN0IEZsb2F0U2l6ZSYgc2l6ZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQorc3Rk
Ojp1bmlxdWVfcHRyPEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZD4gSW1hZ2VCdWZmZXJJT1N1
cmZhY2VCYWNrZW5kOjpjcmVhdGUoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycywgY29uc3Qg
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogewotICAgIGlmIChhdXRvIGNnQ29sb3JTcGFjZSA9
IGNvbnRleHRDb2xvclNwYWNlKGNvbnRleHQpKQotICAgICAgICByZXR1cm4gSW1hZ2VCdWZmZXJJ
T1N1cmZhY2VCYWNrZW5kOjpjcmVhdGUoc2l6ZSwgMSwgQ29sb3JTcGFjZTo6U1JHQiwgY2dDb2xv
clNwYWNlLmdldCgpLCBQaXhlbEZvcm1hdDo6QkdSQTgsIG51bGxwdHIpOwotICAgIAotICAgIHJl
dHVybiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZShzaXplLCAxLCBDb2xvclNw
YWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdSQTgsIG51bGxwdHIpOworICAgIGlmIChhdXRvIGNn
Q29sb3JTcGFjZSA9IGNvbnRleHQuaGFzUGxhdGZvcm1Db250ZXh0KCkgPyBjb250ZXh0Q29sb3JT
cGFjZShjb250ZXh0KSA6IG51bGxwdHIpCisgICAgICAgIHJldHVybiBJbWFnZUJ1ZmZlcklPU3Vy
ZmFjZUJhY2tlbmQ6OmNyZWF0ZShwYXJhbWV0ZXJzLCBjZ0NvbG9yU3BhY2UuZ2V0KCksIG51bGxw
dHIpOworCisgICAgcmV0dXJuIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlKHBh
cmFtZXRlcnMsIG51bGxwdHIpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJJT1N1
cmZhY2VCYWNrZW5kPiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZShjb25zdCBG
bG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNw
YWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgY29uc3QgSG9zdFdpbmRvdyogaG9zdFdpbmRv
dykKK3N0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ+IEltYWdlQnVm
ZmVySU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMs
IGNvbnN0IEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cpCiB7Ci0gICAgcmV0dXJuIEltYWdlQnVmZmVy
SU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlKHNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFj
ZSwgY2FjaGVkQ0dDb2xvclNwYWNlKGNvbG9yU3BhY2UpLCBwaXhlbEZvcm1hdCwgaG9zdFdpbmRv
dyk7CisgICAgcmV0dXJuIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlKHBhcmFt
ZXRlcnMsIGNhY2hlZENHQ29sb3JTcGFjZShwYXJhbWV0ZXJzLmNvbG9yU3BhY2UpLCBob3N0V2lu
ZG93KTsKIH0KIAotSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpJbWFnZUJ1ZmZlcklPU3Vy
ZmFjZUJhY2tlbmQoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50U2l6ZSYg
YmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNl
LCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4mJiBz
dXJmYWNlKQotICAgIDogSW1hZ2VCdWZmZXJDR0JhY2tlbmQobG9naWNhbFNpemUsIGJhY2tlbmRT
aXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0KQorSW1hZ2VCdWZm
ZXJJT1N1cmZhY2VCYWNrZW5kOjpJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQoY29uc3QgUGFy
YW1ldGVycyYgcGFyYW1ldGVycywgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4mJiBzdXJmYWNl
KQorICAgIDogSW1hZ2VCdWZmZXJDR0JhY2tlbmQocGFyYW1ldGVycykKICAgICAsIG1fc3VyZmFj
ZShXVEZNb3ZlKHN1cmZhY2UpKQogewogICAgIEFTU0VSVChtX3N1cmZhY2UpOwpAQCAtMTIwLDYg
KzEyMCwxMSBAQCB2b2lkIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Zmx1c2hDb250ZXh0
KCkKICAgICBDR0NvbnRleHRGbHVzaChjb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCkpOwogfQog
CitJbnRTaXplIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6YmFja2VuZFNpemUoKSBjb25z
dAoreworICAgIHJldHVybiBtX3N1cmZhY2UtPnNpemUoKTsKK30KKwogc2l6ZV90IEltYWdlQnVm
ZmVySU9TdXJmYWNlQmFja2VuZDo6bWVtb3J5Q29zdCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1f
c3VyZmFjZS0+dG90YWxCeXRlcygpOwpAQCAtMTQ4LDEwICsxNTMsMTAgQEAgUmVmUHRyPE5hdGl2
ZUltYWdlPiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OnNpbmtJbnRvTmF0aXZlSW1hZ2Uo
KQogdm9pZCBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmRyYXdDb25zdW1pbmcoR3JhcGhp
Y3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykK
IHsKICAgICBGbG9hdFJlY3QgYWRqdXN0ZWRTcmNSZWN0ID0gc3JjUmVjdDsKLSAgICBhZGp1c3Rl
ZFNyY1JlY3Quc2NhbGUobV9yZXNvbHV0aW9uU2NhbGUpOworICAgIGFkanVzdGVkU3JjUmVjdC5z
Y2FsZShyZXNvbHV0aW9uU2NhbGUoKSk7CiAKICAgICBpZiAoYXV0byBpbWFnZSA9IHNpbmtJbnRv
TmF0aXZlSW1hZ2UoKSkKLSAgICAgICAgZGVzdENvbnRleHQuZHJhd05hdGl2ZUltYWdlKCppbWFn
ZSwgbV9iYWNrZW5kU2l6ZSwgZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVjdCwgb3B0aW9ucyk7Cisg
ICAgICAgIGRlc3RDb250ZXh0LmRyYXdOYXRpdmVJbWFnZSgqaW1hZ2UsIGJhY2tlbmRTaXplKCks
IGRlc3RSZWN0LCBhZGp1c3RlZFNyY1JlY3QsIG9wdGlvbnMpOwogfQogCiBSZXRhaW5QdHI8Q0ZE
YXRhUmVmPiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OnRvQ0ZEYXRhKGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSwgUHJlc2VydmVSZXNvbHV0aW9u
IHByZXNlcnZlUmVzb2x1dGlvbikgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5k
LmgKaW5kZXggZGU5ODIxMTFlNTJjMTJlZGIwOGRjNzg4YjUwZWNlZmIzNjUwNzY1MC4uNDg1OWRm
NmZjNTI1ZDg1YzMyOGMxNDVmMDc5MTc4MzU2OTA5ZTI1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1
cmZhY2VCYWNrZW5kLmgKQEAgLTM5LDE1ICszOSwxNyBAQCBjbGFzcyBXRUJDT1JFX0VYUE9SVCBJ
bWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQgOiBwdWJsaWMgSW1hZ2VCdWZmZXJDR0JhY2tlbmQg
ewogcHVibGljOgogICAgIHN0YXRpYyBJbnRTaXplIGNhbGN1bGF0ZUJhY2tlbmRTaXplKGNvbnN0
IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSk7CiAKLSAgICBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZD4gY3JlYXRl
KGNvbnN0IEZsb2F0U2l6ZSYsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSwgQ0dD
b2xvclNwYWNlUmVmLCBQaXhlbEZvcm1hdCwgY29uc3QgSG9zdFdpbmRvdyopOwotICAgIHN0YXRp
YyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kPiBjcmVhdGUoY29u
c3QgRmxvYXRTaXplJiwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlLCBQaXhlbEZv
cm1hdCwgY29uc3QgSG9zdFdpbmRvdyopOwotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1h
Z2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kPiBjcmVhdGUoY29uc3QgRmxvYXRTaXplJiwgY29uc3Qg
R3JhcGhpY3NDb250ZXh0Jik7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZl
cklPU3VyZmFjZUJhY2tlbmQ+IGNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiwgQ0dDb2xvclNwYWNl
UmVmLCBjb25zdCBIb3N0V2luZG93Kik7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFn
ZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ+IGNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiwgY29uc3Qg
SG9zdFdpbmRvdyopOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJJT1N1
cmZhY2VCYWNrZW5kPiBjcmVhdGUoY29uc3QgUGFyYW1ldGVycyYsIGNvbnN0IEdyYXBoaWNzQ29u
dGV4dCYpOwogCi0gICAgSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kKGNvbnN0IEZsb2F0U2l6
ZSYgbG9naWNhbFNpemUsIGNvbnN0IEludFNpemUmIHBoeXNpY2FsU2l6ZSwgZmxvYXQgcmVzb2x1
dGlvblNjYWxlLCBDb2xvclNwYWNlLCBQaXhlbEZvcm1hdCwgc3RkOjp1bmlxdWVfcHRyPElPU3Vy
ZmFjZT4mJik7CisgICAgSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kKGNvbnN0IFBhcmFtZXRl
cnMmLCBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiYmKTsKIAogICAgIEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgZmx1c2hDb250ZXh0KCkgb3Zl
cnJpZGU7CiAKKyAgICBJbnRTaXplIGJhY2tlbmRTaXplKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAg
CiAgICAgc2l6ZV90IG1lbW9yeUNvc3QoKSBjb25zdCBvdmVycmlkZTsKICAgICBzaXplX3QgZXh0
ZXJuYWxNZW1vcnlDb3N0KCkgY29uc3Qgb3ZlcnJpZGU7CiAKQEAgLTY5LDcgKzcxLDcgQEAgcHVi
bGljOgogICAgIHZvaWQgcmVsZWFzZUJ1ZmZlclRvUG9vbCgpIG92ZXJyaWRlOwogCiAgICAgc3Rh
dGljIGNvbnN0ZXhwciBib29sIGlzT3JpZ2luQXRVcHBlckxlZnRDb3JuZXIgPSB0cnVlOwotICAg
IHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0FjY2VsZXJhdGVkID0gdHJ1ZTsKKyAgICBzdGF0aWMg
Y29uc3RleHByIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSA9IFJlbmRlcmluZ01vZGU6OkFj
Y2VsZXJhdGVkOwogCiBwcm90ZWN0ZWQ6CiAgICAgc3RhdGljIFJldGFpblB0cjxDR0NvbG9yU3Bh
Y2VSZWY+IGNvbnRleHRDb2xvclNwYWNlKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3QuaAppbmRleCAyNmZjOTczMDcyMTEyNzMwMzkzZTJkY2JjODdkMGM2YjljYTU0
MjU4Li4xNmIxOTdmOWVlMmQyOGRiZTkyMWQ5MzA5NDNkNDMwNDYxZGZjZDg2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3QuaApAQCAtMzMsNyArMzMsNiBAQAogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9j
Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUu
aD4KLSNpbmNsdWRlIDx3dGYvT2JqZWN0SWRlbnRpZmllci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtNDUsOSArNDQsNiBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIG5hbWVzcGFjZSBEaXNwbGF5TGlzdCB7CiAKLWVudW0g
Rmx1c2hJZGVudGlmaWVyVHlwZSB7IH07Ci11c2luZyBGbHVzaElkZW50aWZpZXIgPSBPYmplY3RJ
ZGVudGlmaWVyPEZsdXNoSWRlbnRpZmllclR5cGU+OwotCiBlbnVtIEFzVGV4dEZsYWcgewogICAg
IE5vbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAwLAogICAgIEluY2x1ZGVzUGxhdGZv
cm1PcGVyYXRpb25zICAgICAgPSAxIDw8IDAsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RGbHVzaElkZW50aWZpZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdEZsdXNoSWRlbnRpZmllci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjljZjc4MTY4ZWJiN2ZjNzM3YjliNGE2
Y2Y4ZDUzNzI5ZjVhMDYwZWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RGbHVzaElkZW50aWZpZXIuaApA
QCAtMCwwICsxLDM5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3
dGYvT2JqZWN0SWRlbnRpZmllci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFj
ZSBEaXNwbGF5TGlzdCB7CisKK2VudW0gRmx1c2hJZGVudGlmaWVyVHlwZSB7IH07Cit1c2luZyBG
bHVzaElkZW50aWZpZXIgPSBPYmplY3RJZGVudGlmaWVyPEZsdXNoSWRlbnRpZmllclR5cGU+Owor
Cit9IC8vIERpc3BsYXlMaXN0CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dEltYWdlQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oCmluZGV4IGY1YjIyMzQwMmFlYjM3NzI4Yjcz
MDFmYjY2NzExOGEzYjJlOGIwNDAuLmE2NWZjYTU1OWExNjVmYzZiMmQ4NjIzZjM1M2UxMTY0NzI5
Mzc3NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdEltYWdlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXIuaApAQCAt
MzQsMjYgKzM0LDI5IEBAIG5hbWVzcGFjZSBEaXNwbGF5TGlzdCB7CiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBCYWNrZW5kVHlwZT4KIGNsYXNzIEltYWdlQnVmZmVyIDogcHVibGljIENvbmNyZXRlSW1hZ2VC
dWZmZXI8QmFja2VuZFR5cGU+IHsKICAgICB1c2luZyBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZlciA9
IENvbmNyZXRlSW1hZ2VCdWZmZXI8QmFja2VuZFR5cGU+OworICAgIHVzaW5nIEJhc2VDb25jcmV0
ZUltYWdlQnVmZmVyOjpsb2dpY2FsU2l6ZTsKKyAgICB1c2luZyBCYXNlQ29uY3JldGVJbWFnZUJ1
ZmZlcjo6YmFzZVRyYW5zZm9ybTsKIAogcHVibGljOgogICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShj
b25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBj
b2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgY29uc3QgSG9zdFdpbmRvdyogaG9z
dFdpbmRvdykKICAgICB7Ci0gICAgICAgIHJldHVybiBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZlcjo6
dGVtcGxhdGUgY3JlYXRlPEltYWdlQnVmZmVyPihzaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9y
U3BhY2UsIHBpeGVsRm9ybWF0LCBob3N0V2luZG93LCBzaXplKTsKKyAgICAgICAgcmV0dXJuIEJh
c2VDb25jcmV0ZUltYWdlQnVmZmVyOjp0ZW1wbGF0ZSBjcmVhdGU8SW1hZ2VCdWZmZXI+KHNpemUs
IHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQsIGhvc3RXaW5kb3cpOwog
ICAgIH0KIAogICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIGNv
bnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKICAgICB7Ci0gICAgICAgIHJldHVybiBCYXNl
Q29uY3JldGVJbWFnZUJ1ZmZlcjo6dGVtcGxhdGUgY3JlYXRlPEltYWdlQnVmZmVyPihzaXplLCBj
b250ZXh0LCBzaXplKTsKKyAgICAgICAgcmV0dXJuIEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyOjp0
ZW1wbGF0ZSBjcmVhdGU8SW1hZ2VCdWZmZXI+KHNpemUsIGNvbnRleHQpOwogICAgIH0KIAotICAg
IEltYWdlQnVmZmVyKHN0ZDo6dW5pcXVlX3B0cjxCYWNrZW5kVHlwZT4mJiBkYXRhQmFja2VuZCwg
Y29uc3QgRmxvYXRTaXplJiBzaXplKQotICAgICAgICA6IEJhc2VDb25jcmV0ZUltYWdlQnVmZmVy
KFdURk1vdmUoZGF0YUJhY2tlbmQpKQotICAgICAgICAsIG1fZHJhd2luZ0NvbnRleHQoc2l6ZSwg
aW5pdGlhbERyYXdpbmdDb250ZXh0Q1RNKHNpemUpKQorICAgIEltYWdlQnVmZmVyKGNvbnN0IElt
YWdlQnVmZmVyQmFja2VuZDo6UGFyYW1ldGVycyYgcGFyYW1ldGVycywgc3RkOjp1bmlxdWVfcHRy
PEJhY2tlbmRUeXBlPiYmIGJhY2tlbmQpCisgICAgICAgIDogQmFzZUNvbmNyZXRlSW1hZ2VCdWZm
ZXIocGFyYW1ldGVycywgV1RGTW92ZShiYWNrZW5kKSkKKyAgICAgICAgLCBtX2RyYXdpbmdDb250
ZXh0KGxvZ2ljYWxTaXplKCksIGJhc2VUcmFuc2Zvcm0oKSkKICAgICB7CiAgICAgfQogCi0gICAg
SW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBSZWNvcmRlcjo6RGVsZWdhdGUqIGRl
bGVnYXRlID0gbnVsbHB0cikKLSAgICAgICAgOiBtX2RyYXdpbmdDb250ZXh0KHNpemUsIGluaXRp
YWxEcmF3aW5nQ29udGV4dENUTShzaXplKSwgZGVsZWdhdGUpCisgICAgSW1hZ2VCdWZmZXIoY29u
c3QgSW1hZ2VCdWZmZXJCYWNrZW5kOjpQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBSZWNvcmRlcjo6
RGVsZWdhdGUqIGRlbGVnYXRlID0gbnVsbHB0cikKKyAgICAgICAgOiBCYXNlQ29uY3JldGVJbWFn
ZUJ1ZmZlcihwYXJhbWV0ZXJzKQorICAgICAgICAsIG1fZHJhd2luZ0NvbnRleHQobG9naWNhbFNp
emUoKSwgYmFzZVRyYW5zZm9ybSgpLCBkZWxlZ2F0ZSkKICAgICB7CiAgICAgfQogCkBAIC03Nywx
NSArODAsNiBAQCBwdWJsaWM6CiAKIHByb3RlY3RlZDoKICAgICBEcmF3aW5nQ29udGV4dCBtX2Ry
YXdpbmdDb250ZXh0OwotCi1wcml2YXRlOgotICAgIHN0YXRpYyBBZmZpbmVUcmFuc2Zvcm0gaW5p
dGlhbERyYXdpbmdDb250ZXh0Q1RNKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUpCi0gICAg
ewotICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gaW5pdGlhbENUTTsKLSAgICAgICAgaWYgKEJhY2tl
bmRUeXBlOjppc09yaWdpbkF0VXBwZXJMZWZ0Q29ybmVyKQotICAgICAgICAgICAgaW5pdGlhbENU
TSA9IGluaXRpYWxDVE0uc2NhbGUoMSwgLTEpLnRyYW5zbGF0ZSgwLCAtbG9naWNhbFNpemUuaGVp
Z2h0KCkpOwotICAgICAgICByZXR1cm4gaW5pdGlhbENUTTsKLSAgICB9CiB9OwogCiB9IC8vIERp
c3BsYXlMaXN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kLmNwcAppbmRleCAzNzhh
YWY0YzQwYzRlMTIyYWNiZTA2OTQzMmM3YWQ3ZWMyMDllZDczLi4wMWQyZTc4MDI4NWIxMWZlYzM5
YjRjZDI2YmY0Y2ZmZjA4MDczMzc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2Vu
ZC5jcHAKQEAgLTE3MSw3ICsxNzEsNyBAQCBzdGF0aWMgUmVmUHRyPEltYWdlPiBjcmVhdGVCaXRt
YXBJbWFnZUFmdGVyU2NhbGluZ0lmTmVlZGVkKElEMkQxQml0bWFwUmVuZGVyVGFyZwogUmVmUHRy
PEltYWdlPiBJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6Y29weUltYWdlKEJhY2tpbmdTdG9y
ZUNvcHkgY29weUJlaGF2aW9yLCBQcmVzZXJ2ZVJlc29sdXRpb24gcHJlc2VydmVSZXNvbHV0aW9u
KSBjb25zdAogewogICAgIFBsYXRmb3JtSW1hZ2VQdHIgaW1hZ2U7Ci0gICAgaWYgKG1fcmVzb2x1
dGlvblNjYWxlID09IDEgfHwgcHJlc2VydmVSZXNvbHV0aW9uID09IFByZXNlcnZlUmVzb2x1dGlv
bjo6WWVzKQorICAgIGlmIChyZXNvbHV0aW9uU2NhbGUoKSA9PSAxIHx8IHByZXNlcnZlUmVzb2x1
dGlvbiA9PSBQcmVzZXJ2ZVJlc29sdXRpb246OlllcykKICAgICAgICAgaW1hZ2UgPSBjb3B5TmF0
aXZlSW1hZ2UoY29weUJlaGF2aW9yKS0+cGxhdGZvcm1JbWFnZSgpOwogICAgIGVsc2UKICAgICAg
ICAgaW1hZ2UgPSBjb3B5TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpLT5wbGF0Zm9y
bUltYWdlKCk7CkBAIC0yNjksNyArMjY5LDcgQEAgUGxhdGZvcm1JbWFnZVB0ciBJbWFnZUJ1ZmZl
ckRpcmVjdDJEQmFja2VuZDo6Y29tcGF0aWJsZUJpdG1hcChJRDJEMVJlbmRlclRhcmdldCoKIHZv
aWQgSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBkZXN0
Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBGbG9hdFJl
Y3QgYWRqdXN0ZWRTcmNSZWN0ID0gc3JjUmVjdDsKLSAgICBhZGp1c3RlZFNyY1JlY3Quc2NhbGUo
bV9yZXNvbHV0aW9uU2NhbGUsIG1fcmVzb2x1dGlvblNjYWxlKTsKKyAgICBhZGp1c3RlZFNyY1Jl
Y3Quc2NhbGUocmVzb2x1dGlvblNjYWxlKCkpOwogCiAgICAgYXV0byBjb21wYXRpYmxlQml0bWFw
ID0gY29tcGF0aWJsZUJpdG1hcChkZXN0Q29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKS0+cmVuZGVy
VGFyZ2V0KCkpOwogCkBAIC0yODMsNyArMjgzLDcgQEAgdm9pZCBJbWFnZUJ1ZmZlckRpcmVjdDJE
QmFja2VuZDo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFIK
IHZvaWQgSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29u
dGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBj
b25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBGbG9hdFJlY3QgYWRqdXN0ZWRT
cmNSZWN0ID0gc3JjUmVjdDsKLSAgICBhZGp1c3RlZFNyY1JlY3Quc2NhbGUobV9yZXNvbHV0aW9u
U2NhbGUpOworICAgIGFkanVzdGVkU3JjUmVjdC5zY2FsZShyZXNvbHV0aW9uU2NhbGUoKSk7CiAK
ICAgICBpZiAoYXV0byBpbWFnZSA9IGNvcHlJbWFnZSgmZGVzdENvbnRleHQgPT0gJmNvbnRleHQo
KSA/IENvcHlCYWNraW5nU3RvcmUgOiBEb250Q29weUJhY2tpbmdTdG9yZSkpCiAgICAgICAgIGlt
YWdlLT5kcmF3UGF0dGVybihkZXN0Q29udGV4dCwgZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVjdCwg
cGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIG9wdGlvbnMpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmggYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaAppbmRl
eCA0ZDVkMDI1M2JhYTM2ZTU0NTdlNDgxNjQ1MzgyNDM3ZTMxOWE4NTc4Li5lNjEzYWQwMDRjNDYz
YWUzM2MzODk1ZDA0ODMxMmQzZTQyZTU3N2U4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaApAQCAtNDksMTIgKzQ5LDEy
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyOjp0ZW1w
bGF0ZSBjcmVhdGU8UmVtb3RlSW1hZ2VCdWZmZXI+KHNpemUsIHJlc29sdXRpb25TY2FsZSwgY29s
b3JTcGFjZSwgcGl4ZWxGb3JtYXQsIG51bGxwdHIsIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmQsIHJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAgfQogCi0gICAgUmVtb3RlSW1hZ2VCdWZm
ZXIoc3RkOjp1bmlxdWVfcHRyPEJhY2tlbmRUeXBlPiYmIGJhY2tlbmQsIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQmIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmQsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCi0gICAgICAgIDogQmFz
ZUNvbmNyZXRlSW1hZ2VCdWZmZXIoV1RGTW92ZShiYWNrZW5kKSwgcmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyKQorICAgIFJlbW90ZUltYWdlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkltYWdlQnVm
ZmVyQmFja2VuZDo6UGFyYW1ldGVycyYgcGFyYW1ldGVycywgc3RkOjp1bmlxdWVfcHRyPEJhY2tl
bmRUeXBlPiYmIGJhY2tlbmQsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQmIHJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIpCisgICAgICAgIDogQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXIocGFy
YW1ldGVycywgV1RGTW92ZShiYWNrZW5kKSwgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQog
ICAgICAgICAsIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZChyZW1vdGVSZW5kZXJpbmdCYWNrZW5k
KQogICAgICAgICAsIG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKHJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcikKICAgICB7Ci0gICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC5p
bWFnZUJ1ZmZlckJhY2tlbmRXYXNDcmVhdGVkKG1fYmFja2VuZC0+bG9naWNhbFNpemUoKSwgbV9i
YWNrZW5kLT5iYWNrZW5kU2l6ZSgpLCBtX2JhY2tlbmQtPnJlc29sdXRpb25TY2FsZSgpLCBtX2Jh
Y2tlbmQtPmNvbG9yU3BhY2UoKSwgbV9iYWNrZW5kLT5waXhlbEZvcm1hdCgpLCBtX2JhY2tlbmQt
PmNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSgpLCByZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIpOworICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuZGlkQ3JlYXRlSW1hZ2VC
dWZmZXJCYWNrZW5kKG1fYmFja2VuZC0+Y3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKCks
IHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAgfQogCiAgICAgflJlbW90ZUltYWdl
QnVmZmVyKCkKQEAgLTY1LDE3ICs2NSw2IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGNvbnRleHQo
KS5yZXN0b3JlKCk7CiAgICAgfQogCi0gICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlcGxheVJl
c3VsdCBzdWJtaXREaXNwbGF5TGlzdChjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxh
eUxpc3QmIGRpc3BsYXlMaXN0KQotICAgIHsKLSAgICAgICAgaWYgKGRpc3BsYXlMaXN0LmlzRW1w
dHkoKSkKLSAgICAgICAgICAgIHJldHVybiB7IH07Ci0KLSAgICAgICAgY29uc3QgYXV0byYgaW1h
Z2VCdWZmZXJzID0gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLnJlbW90ZVJlc291cmNlQ2FjaGUo
KS5pbWFnZUJ1ZmZlcnMoKTsKLSAgICAgICAgY29uc3QgYXV0byYgbmF0aXZlSW1hZ2VzID0gbV9y
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kLnJlbW90ZVJlc291cmNlQ2FjaGUoKS5uYXRpdmVJbWFnZXMo
KTsKLSAgICAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlcGxheWVyIHJlcGxheWVyIHsgQmFz
ZUNvbmNyZXRlSW1hZ2VCdWZmZXI6OmNvbnRleHQoKSwgZGlzcGxheUxpc3QsICZpbWFnZUJ1ZmZl
cnMsICZuYXRpdmVJbWFnZXMsIHRoaXMgfTsKLSAgICAgICAgcmV0dXJuIHJlcGxheWVyLnJlcGxh
eSgpOwotICAgIH0KLQogcHJpdmF0ZToKICAgICBib29sIGFwcGx5KFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpJdGVtSGFuZGxlIGl0ZW0sIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkg
b3ZlcnJpZGUKICAgICB7CkBAIC0xMDEsNiArOTAsMTcgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0
dXJuIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC5hcHBseU1lZGlhSXRlbShpdGVtLCBjb250ZXh0
KTsKICAgICB9CiAKKyAgICB2b2lkIHN1Ym1pdERpc3BsYXlMaXN0KGNvbnN0IFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QpIG92ZXJyaWRlCisgICAgeworICAg
ICAgICBpZiAoZGlzcGxheUxpc3QuaXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0dXJuOworCisg
ICAgICAgIGNvbnN0IGF1dG8mIGltYWdlQnVmZmVycyA9IG1fcmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZC5yZW1vdGVSZXNvdXJjZUNhY2hlKCkuaW1hZ2VCdWZmZXJzKCk7CisgICAgICAgIGNvbnN0IGF1
dG8mIG5hdGl2ZUltYWdlcyA9IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC5yZW1vdGVSZXNvdXJj
ZUNhY2hlKCkubmF0aXZlSW1hZ2VzKCk7CisgICAgICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpS
ZXBsYXllciByZXBsYXllciB7IEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyOjpjb250ZXh0KCksIGRp
c3BsYXlMaXN0LCAmaW1hZ2VCdWZmZXJzLCAmbmF0aXZlSW1hZ2VzLCB0aGlzIH07CisgICAgICAg
IHJlcGxheWVyLnJlcGxheSgpOworICAgIH0KKwogICAgIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQm
IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZDsKICAgICBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIgbV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI7CiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tl
bmQuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQuY3BwCmluZGV4IDZkZGViMDI3OTI5ZTUwNGY4M2IwYTE4NmM3ZWVhYjhlNWI5ZDY4
NzIuLjIyZGE5OThiZjk5MDIyYjZjNTFjZTIzODE5ZTllY2ZkZWVkMmEzN2QgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5k
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVy
aW5nQmFja2VuZC5jcHAKQEAgLTk5LDkgKzk5LDkgQEAgYm9vbCBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kOjphcHBseU1lZGlhSXRlbShEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZSBpdGVtLCBHcmFwaGkK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjppbWFn
ZUJ1ZmZlckJhY2tlbmRXYXNDcmVhdGVkKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNv
bnN0IEludFNpemUmIGJhY2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3Bh
Y2UgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIEltYWdlQnVmZmVyQmFja2Vu
ZEhhbmRsZSBoYW5kbGUsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIpCit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmRpZENyZWF0ZUlt
YWdlQnVmZmVyQmFja2VuZChJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgaGFuZGxlLCBSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogewotICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6SW1hZ2VCdWZmZXJC
YWNrZW5kV2FzQ3JlYXRlZChsb2dpY2FsU2l6ZSwgYmFja2VuZFNpemUsIHJlc29sdXRpb25TY2Fs
ZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQsIFdURk1vdmUoaGFuZGxlKSwgcmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyKSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpEaWRDcmVhdGVJbWFnZUJ1
ZmZlckJhY2tlbmQoV1RGTW92ZShoYW5kbGUpLCByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIp
LCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kOjpkaWRGbHVzaChEaXNwbGF5TGlzdDo6Rmx1c2hJZGVudGlmaWVyIGZsdXNoSWRl
bnRpZmllciwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcikKQEAgLTE0OCwxMCArMTQ4LDcgQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
OjphcHBseURpc3BsYXlMaXN0c0Zyb21IYW5kbGUoSW1hZ2VCdWZmZXImIGRlc3RpbmF0aW8KICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChkZXN0aW5hdGlvbi5p
c0FjY2VsZXJhdGVkKCkpCi0gICAgICAgICAgICBzdGF0aWNfY2FzdDxBY2NlbGVyYXRlZFJlbW90
ZUltYWdlQnVmZmVyJj4oZGVzdGluYXRpb24pLnN1Ym1pdERpc3BsYXlMaXN0KCpkaXNwbGF5TGlz
dCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHN0YXRpY19jYXN0PFVuYWNjZWxlcmF0ZWRS
ZW1vdGVJbWFnZUJ1ZmZlciY+KGRlc3RpbmF0aW9uKS5zdWJtaXREaXNwbGF5TGlzdCgqZGlzcGxh
eUxpc3QpOworICAgICAgICBkZXN0aW5hdGlvbi5zdWJtaXREaXNwbGF5TGlzdCgqZGlzcGxheUxp
c3QpOwogCiAgICAgICAgIENoZWNrZWRTaXplIGNoZWNrZWRPZmZzZXQgPSBvZmZzZXQ7CiAgICAg
ICAgIGNoZWNrZWRPZmZzZXQgKz0gc2l6ZVRvUmVhZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmggYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCmluZGV4
IDY0MDY2NjhmYWUwNTA1N2U5ZGYzMjY0ZjU3NTI0OTQ4OWQ3MDVjNzguLjU5MTllOTU2NGY2NjNk
ZjM5ZmZiM2MxNWIxNWEzYjhjMzIzMGY1ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKKysrIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaApAQCAtNzAs
NyArNzAsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBhcHBseU1lZGlhSXRlbShXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6SXRlbUhhbmRsZSwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Jik7CiAKICAgICAv
LyBNZXNzYWdlcyB0byBiZSBzZW50LgotICAgIHZvaWQgaW1hZ2VCdWZmZXJCYWNrZW5kV2FzQ3Jl
YXRlZChjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBXZWJDb3Jl
OjpJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpD
b2xvclNwYWNlLCBXZWJDb3JlOjpQaXhlbEZvcm1hdCwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxl
LCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIHZvaWQgZGlkQ3Jl
YXRlSW1hZ2VCdWZmZXJCYWNrZW5kKEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSwgV2ViQ29yZTo6
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB2b2lkIGRpZEZsdXNoKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpGbHVzaElkZW50aWZpZXIsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcik7CiAKICAgICB2b2lkIHNldE5leHRJdGVtQnVmZmVyVG9SZWFkKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllcik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Db25jcmV0ZVNoYXJlYWJsZUltYWdlQnVmZmVyLmggYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9Db25jcmV0ZVNoYXJlYWJsZUltYWdlQnVmZmVyLmgKaW5kZXggMzhjZjBkMjQw
YTE2MjFlZGIzZGQyNjkyMWZjZTBhYzNiODAzM2Q5My4uZjg4NmJiMTEyZGFkMzdkZjUwMGMzZGEz
YzYyMWQ0MDc0YzhkMmE4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29uY3Jl
dGVTaGFyZWFibGVJbWFnZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvbmNy
ZXRlU2hhcmVhYmxlSW1hZ2VCdWZmZXIuaApAQCAtMzYsMTUgKzM2LDEyIEBAIGNsYXNzIENvbmNy
ZXRlU2hhcmVhYmxlSW1hZ2VCdWZmZXIgOiBwdWJsaWMgV2ViQ29yZTo6Q29uY3JldGVJbWFnZUJ1
ZmZlcjxCYWNrZW5kCiAgICAgdXNpbmcgQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXI6Om1fYmFja2Vu
ZDsKIAogcHVibGljOgotICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBXZWJDb3JlOjpGbG9h
dFNpemUmIHNpemUsIFdlYkNvcmU6OlJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgZmxvYXQg
cmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFdlYkNvcmU6
OlBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0KQorICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBX
ZWJDb3JlOjpGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6
Q29sb3JTcGFjZSBjb2xvclNwYWNlLCBXZWJDb3JlOjpQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCkK
ICAgICB7CiAgICAgICAgIHJldHVybiBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZlcjo6dGVtcGxhdGUg
Y3JlYXRlPENvbmNyZXRlU2hhcmVhYmxlSW1hZ2VCdWZmZXI+KHNpemUsIHJlc29sdXRpb25TY2Fs
ZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQsIG51bGxwdHIpOwogICAgIH0KIAotICAgIENvbmNy
ZXRlU2hhcmVhYmxlSW1hZ2VCdWZmZXIoc3RkOjp1bmlxdWVfcHRyPEJhY2tlbmRUeXBlPiYmIGJh
Y2tlbmQpCi0gICAgICAgIDogQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXIoV1RGTW92ZShiYWNrZW5k
KSkKLSAgICB7Ci0gICAgfQorICAgIHVzaW5nIEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyOjpCYXNl
Q29uY3JldGVJbWFnZUJ1ZmZlcjsKIAogICAgIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBjcmVh
dGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUoKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbSBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdT
dG9yZS5tbQppbmRleCBlODRjMzUwZTE2NmEzODI0ZDZmZDVhZDQ0NjBlZWQyZmM4YmI0N2MxLi5m
MmFlYmNmMmE5ODkzZTgwNmYxYzcwZDFkZDVhMTc0MGYzMGVlN2ZlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUu
bW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVy
QmFja2luZ1N0b3JlLm1tCkBAIC0xMDUsMTggKzEwNSwxMiBAQCB2b2lkIFJlbW90ZUxheWVyQmFj
a2luZ1N0b3JlOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogCiAgICAgT3B0
aW9uYWw8SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlPiBoYW5kbGU7CiAgICAgaWYgKG1fZnJvbnRC
dWZmZXIuaW1hZ2VCdWZmZXIpIHsKLSAgICAgICAgLy8gRklYTUU6IFdlIG5lZWQgdG8gZmxhdHRl
biB0aGUgY2xhc3MgaGllcmFyY2h5IHNvIHdlIGNhbiBhdm9pZCB0aGlzIGJpZnVyY2F0aW9uLgot
ICAgICAgICBpZiAoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc2hvdWxkVXNlUmVtb3RlUmVuZGVy
aW5nRm9yKFdlYkNvcmU6OlJlbmRlcmluZ1B1cnBvc2U6OkRPTSkpIHsKLSAgICAgICAgICAgIGlm
IChtX2FjY2VsZXJhdGVzRHJhd2luZykKLSAgICAgICAgICAgICAgICBoYW5kbGUgPSBzdGF0aWNf
Y2FzdDxBY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyUHJveHkgKj4obV9mcm9udEJ1ZmZlci5p
bWFnZUJ1ZmZlci5nZXQoKSktPmNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSgpOwotICAg
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGhhbmRsZSA9IHN0YXRpY19jYXN0PFVuYWNj
ZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlclByb3h5ICo+KG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZm
ZXIuZ2V0KCkpLT5jcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUoKTsKLSAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgIGlmIChtX2FjY2VsZXJhdGVzRHJhd2luZykKLSAgICAgICAgICAg
ICAgICBoYW5kbGUgPSBzdGF0aWNfY2FzdDxDb25jcmV0ZVNoYXJlYWJsZUltYWdlQnVmZmVyPEFj
Y2VsZXJhdGVkSW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRCYWNrZW5kPiAqPihtX2Zyb250QnVm
ZmVyLmltYWdlQnVmZmVyLmdldCgpKS0+Y3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKCk7
Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgaGFuZGxlID0gc3RhdGljX2Nhc3Q8
Q29uY3JldGVTaGFyZWFibGVJbWFnZUJ1ZmZlcjxVbmFjY2VsZXJhdGVkSW1hZ2VCdWZmZXJTaGFy
ZWFibGVCYWNrZW5kPiAqPihtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVyLmdldCgpKS0+Y3JlYXRl
SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKCk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKG1fZnJv
bnRCdWZmZXIuaW1hZ2VCdWZmZXItPnJlbmRlcmluZ01vZGUoKSA9PSBXZWJDb3JlOjpSZW5kZXJp
bmdNb2RlOjpVbmFjY2VsZXJhdGVkKQorICAgICAgICAgICAgaGFuZGxlID0gc3RhdGljX2Nhc3Q8
VW5hY2NlbGVyYXRlZEltYWdlQnVmZmVyU2hhcmVhYmxlQmFja2VuZCY+KCptX2Zyb250QnVmZmVy
LmltYWdlQnVmZmVyLT5iYWNrZW5kKCkpLmNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSgp
OworICAgICAgICBlbHNlIGlmIChtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVyLT5jYW5NYXBCYWNr
aW5nU3RvcmUoKSkKKyAgICAgICAgICAgIGhhbmRsZSA9IHN0YXRpY19jYXN0PEFjY2VsZXJhdGVk
SW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRCYWNrZW5kJj4oKm1fZnJvbnRCdWZmZXIuaW1hZ2VC
dWZmZXItPmJhY2tlbmQoKSkuY3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKCk7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIGhhbmRsZSA9IHN0YXRpY19jYXN0PEFjY2VsZXJhdGVkSW1h
Z2VCdWZmZXJTaGFyZWFibGVCYWNrZW5kJj4oKm1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXItPmJh
Y2tlbmQoKSkuY3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKCk7CiAgICAgfQogCiAgICAg
ZW5jb2RlciA8PCBoYW5kbGU7CkBAIC0xOTMsOSArMTg3LDkgQEAgdm9pZCBSZW1vdGVMYXllckJh
Y2tpbmdTdG9yZTo6c3dhcFRvVmFsaWRGcm9udEJ1ZmZlcigpCiAgICAgfQogCiAgICAgaWYgKG1f
YWNjZWxlcmF0ZXNEcmF3aW5nKQotICAgICAgICBtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVyID0g
Q29uY3JldGVTaGFyZWFibGVJbWFnZUJ1ZmZlcjxBY2NlbGVyYXRlZEltYWdlQnVmZmVyU2hhcmVh
YmxlTWFwcGVkQmFja2VuZD46OmNyZWF0ZShiYWNraW5nU3RvcmVTaXplKCksIFdlYkNvcmU6OlJl
bmRlcmluZ01vZGU6OkFjY2VsZXJhdGVkLCAxLCBXZWJDb3JlOjpDb2xvclNwYWNlOjpTUkdCLCBw
aXhlbEZvcm1hdCgpKTsKKyAgICAgICAgbV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlciA9IENvbmNy
ZXRlU2hhcmVhYmxlSW1hZ2VCdWZmZXI8QWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlclNoYXJlYWJsZU1h
cHBlZEJhY2tlbmQ+OjpjcmVhdGUoYmFja2luZ1N0b3JlU2l6ZSgpLCAxLCBXZWJDb3JlOjpDb2xv
clNwYWNlOjpTUkdCLCBwaXhlbEZvcm1hdCgpKTsKICAgICBlbHNlCi0gICAgICAgIG1fZnJvbnRC
dWZmZXIuaW1hZ2VCdWZmZXIgPSBDb25jcmV0ZVNoYXJlYWJsZUltYWdlQnVmZmVyPFVuYWNjZWxl
cmF0ZWRJbWFnZUJ1ZmZlclNoYXJlYWJsZUJhY2tlbmQ+OjpjcmVhdGUoYmFja2luZ1N0b3JlU2l6
ZSgpLCBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBXZWJDb3JlOjpD
b2xvclNwYWNlOjpTUkdCLCBwaXhlbEZvcm1hdCgpKTsKKyAgICAgICAgbV9mcm9udEJ1ZmZlci5p
bWFnZUJ1ZmZlciA9IENvbmNyZXRlU2hhcmVhYmxlSW1hZ2VCdWZmZXI8VW5hY2NlbGVyYXRlZElt
YWdlQnVmZmVyU2hhcmVhYmxlQmFja2VuZD46OmNyZWF0ZShiYWNraW5nU3RvcmVTaXplKCksIDEs
IFdlYkNvcmU6OkNvbG9yU3BhY2U6OlNSR0IsIHBpeGVsRm9ybWF0KCkpOwogfQogCiBib29sIFJl
bW90ZUxheWVyQmFja2luZ1N0b3JlOjpkaXNwbGF5KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNr
ZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZm
ZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcAppbmRleCA4NTVjODk0OTY2YzU4N2JiMGU2YWVj
NTExOWRlNGI5NDQ1MDg3ZDRiLi40Yzk2NDJjMzFkNzM5NzFiZDdhZjQ1YmY1NTUyZWJmMWZlM2M0
NzExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0lt
YWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQu
Y3BwCkBAIC00MywxNyArNDMsMTcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIFdURl9N
QUtFX0lTT19BTExPQ0FURURfSU1QTChJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQp
OwogCi1zdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kPiBJ
bWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmNyZWF0ZShjb25zdCBGbG9hdFNpemUm
IHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBQaXhl
bEZvcm1hdCBwaXhlbEZvcm1hdCwgY29uc3QgSG9zdFdpbmRvdyopCitzdGQ6OnVuaXF1ZV9wdHI8
SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kPiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJp
dG1hcEJhY2tlbmQ6OmNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBjb25zdCBI
b3N0V2luZG93KikKIHsKLSAgICBBU1NFUlQocGl4ZWxGb3JtYXQgPT0gUGl4ZWxGb3JtYXQ6OkJH
UkE4KTsKKyAgICBBU1NFUlQocGFyYW1ldGVycy5waXhlbEZvcm1hdCA9PSBQaXhlbEZvcm1hdDo6
QkdSQTgpOwogCi0gICAgSW50U2l6ZSBiYWNrZW5kU2l6ZSA9IGNhbGN1bGF0ZUJhY2tlbmRTaXpl
KHNpemUsIHJlc29sdXRpb25TY2FsZSk7CisgICAgSW50U2l6ZSBiYWNrZW5kU2l6ZSA9IGNhbGN1
bGF0ZUJhY2tlbmRTaXplKHBhcmFtZXRlcnMubG9naWNhbFNpemUsIHBhcmFtZXRlcnMucmVzb2x1
dGlvblNjYWxlKTsKICAgICBpZiAoYmFja2VuZFNpemUuaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAogICAgIFNoYXJlYWJsZUJpdG1hcDo6Q29uZmlndXJhdGlvbiBjb25maWd1
cmF0aW9uOwogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIGNvbmZpZ3VyYXRpb24uY29sb3JTcGFj
ZSA9IHsgY2FjaGVkQ0dDb2xvclNwYWNlKGNvbG9yU3BhY2UpIH07CisgICAgY29uZmlndXJhdGlv
bi5jb2xvclNwYWNlID0geyBjYWNoZWRDR0NvbG9yU3BhY2UocGFyYW1ldGVycy5jb2xvclNwYWNl
KSB9OwogI2VuZGlmCiAgICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNo
YXJlYWJsZShiYWNrZW5kU2l6ZSwgY29uZmlndXJhdGlvbik7CiAgICAgaWYgKCFiaXRtYXApCkBA
IC02MywxMCArNjMsMTAgQEAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyU2hhcmVhYmxlQml0
bWFwQmFja2VuZD4gSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWMKICAgICBpZiAoIWNvbnRl
eHQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIG1ha2VVbmlxdWU8SW1h
Z2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kPihzaXplLCBiYWNrZW5kU2l6ZSwgcmVzb2x1
dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCwgV1RGTW92ZShiaXRtYXApLCBXVEZN
b3ZlKGNvbnRleHQpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxJbWFnZUJ1ZmZlclNoYXJlYWJs
ZUJpdG1hcEJhY2tlbmQ+KHBhcmFtZXRlcnMsIFdURk1vdmUoYml0bWFwKSwgV1RGTW92ZShjb250
ZXh0KSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJh
Y2tlbmQ+IEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6Y3JlYXRlKGNvbnN0IEZs
b2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEludFNpemUmIGJhY2tlbmRTaXplLCBmbG9hdCBy
ZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxG
b3JtYXQsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBoYW5kbGUpCitzdGQ6OnVuaXF1ZV9wdHI8
SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kPiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJp
dG1hcEJhY2tlbmQ6OmNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBJbWFnZUJ1
ZmZlckJhY2tlbmRIYW5kbGUgaGFuZGxlKQogewogICAgIGlmICghV1RGOjpob2xkc19hbHRlcm5h
dGl2ZTxTaGFyZWFibGVCaXRtYXA6OkhhbmRsZT4oaGFuZGxlKSkgewogICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKQEAgLTgxLDExICs4MSwxMSBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VC
dWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kPiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJh
YwogICAgIGlmICghY29udGV4dCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1
cm4gbWFrZVVuaXF1ZTxJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ+KGxvZ2ljYWxT
aXplLCBiYWNrZW5kU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1h
dCwgV1RGTW92ZShiaXRtYXApLCBXVEZNb3ZlKGNvbnRleHQpKTsKKyAgICByZXR1cm4gbWFrZVVu
aXF1ZTxJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ+KHBhcmFtZXRlcnMsIFdURk1v
dmUoYml0bWFwKSwgV1RGTW92ZShjb250ZXh0KSk7CiB9CiAKLUltYWdlQnVmZmVyU2hhcmVhYmxl
Qml0bWFwQmFja2VuZDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kKGNvbnN0IEZs
b2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEludFNpemUmIHBoeXNpY2FsU2l6ZSwgZmxvYXQg
cmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVs
Rm9ybWF0LCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiYmIGJpdG1hcCwgc3RkOjp1bmlxdWVfcHRy
PEdyYXBoaWNzQ29udGV4dD4mJiBjb250ZXh0KQotICAgIDogUGxhdGZvcm1JbWFnZUJ1ZmZlckJh
Y2tlbmQobG9naWNhbFNpemUsIHBoeXNpY2FsU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNw
YWNlLCBwaXhlbEZvcm1hdCkKK0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6SW1h
Z2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRl
cnMsIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+JiYgYml0bWFwLCBzdGQ6OnVuaXF1ZV9wdHI8R3Jh
cGhpY3NDb250ZXh0PiYmIGNvbnRleHQpCisgICAgOiBQbGF0Zm9ybUltYWdlQnVmZmVyQmFja2Vu
ZChwYXJhbWV0ZXJzKQogICAgICwgbV9iaXRtYXAoV1RGTW92ZShiaXRtYXApKQogICAgICwgbV9j
b250ZXh0KFdURk1vdmUoY29udGV4dCkpCiB7CkBAIC05OCw2ICs5OCwxMSBAQCBJbWFnZUJ1ZmZl
ckJhY2tlbmRIYW5kbGUgSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpjcmVhdGVJ
bWFnZUJ1ZmZlckJhYwogICAgIHJldHVybiBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUoV1RGTW92
ZShoYW5kbGUpKTsKIH0KIAorSW50U2l6ZSBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tl
bmQ6OmJhY2tlbmRTaXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9iaXRtYXAtPnNpemUoKTsK
K30KKwogUmVmUHRyPE5hdGl2ZUltYWdlPiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tl
bmQ6OmNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5KSBjb25zdAogewogI2lmIFVTRShD
RykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1h
Z2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5oCmluZGV4
IDBjN2YwNDdmODgzNWU0YjhkNjNjMTVmNDFlYzkyMTAyZTQ1ODUzOTkuLjU1NTA2YTQ5ZDAzZTM5
ZTg4ZTAzNjFlNDkxNTVmMTMxZDc5OTAxMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNo
YXJlYWJsZUJpdG1hcEJhY2tlbmQuaApAQCAtNDMsMTQgKzQzLDE2IEBAIGNsYXNzIEltYWdlQnVm
ZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZCA6IHB1YmxpYyBXZWJDb3JlOjpQbGF0Zm9ybUltYWdl
QnVmZmVyQmFjCiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChJbWFnZUJ1ZmZlclNoYXJlYWJs
ZUJpdG1hcEJhY2tlbmQpOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEltYWdlQnVmZmVyU2hh
cmVhYmxlQml0bWFwQmFja2VuZCk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ+IGNyZWF0ZShjb25zdCBXZWJDb3Jl
OjpGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdl
YkNvcmU6OkNvbG9yU3BhY2UsIFdlYkNvcmU6OlBpeGVsRm9ybWF0LCBjb25zdCBXZWJDb3JlOjpI
b3N0V2luZG93Kik7Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlclNoYXJl
YWJsZUJpdG1hcEJhY2tlbmQ+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2lj
YWxTaXplLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBpbnRlcm5hbFNpemUsIGZsb2F0IHJlc29s
dXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSwgV2ViQ29yZTo6UGl4ZWxGb3JtYXQsIElt
YWdlQnVmZmVyQmFja2VuZEhhbmRsZSk7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFn
ZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ+IGNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiwg
Y29uc3QgV2ViQ29yZTo6SG9zdFdpbmRvdyopOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kPiBjcmVhdGUoY29uc3QgUGFyYW1ldGVy
cyYsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSk7CiAKLSAgICBJbWFnZUJ1ZmZlclNoYXJlYWJs
ZUJpdG1hcEJhY2tlbmQoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29u
c3QgV2ViQ29yZTo6SW50U2l6ZSYgcGh5c2ljYWxTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUs
IFdlYkNvcmU6OkNvbG9yU3BhY2UsIFdlYkNvcmU6OlBpeGVsRm9ybWF0LCBSZWZQdHI8U2hhcmVh
YmxlQml0bWFwPiYmLCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0PiYm
KTsKKyAgICBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQoY29uc3QgUGFyYW1ldGVy
cyYsIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+JiYsIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQ+JiYpOwogCiAgICAgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGNyZWF0
ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSgpIGNvbnN0OwogCiAgICAgV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gKm1fY29udGV4dDsg
fQorICAgIAorICAgIFdlYkNvcmU6OkludFNpemUgYmFja2VuZFNpemUoKSBjb25zdCBvdmVycmlk
ZTsKIAogICAgIFJlZlB0cjxXZWJDb3JlOjpOYXRpdmVJbWFnZT4gY29weU5hdGl2ZUltYWdlKFdl
YkNvcmU6OkJhY2tpbmdTdG9yZUNvcHkgPSBXZWJDb3JlOjpDb3B5QmFja2luZ1N0b3JlKSBjb25z
dCBvdmVycmlkZTsKICAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2U+IGNvcHlJbWFnZShXZWJDb3Jl
OjpCYWNraW5nU3RvcmVDb3B5ID0gV2ViQ29yZTo6Q29weUJhY2tpbmdTdG9yZSwgV2ViQ29yZTo6
UHJlc2VydmVSZXNvbHV0aW9uID0gV2ViQ29yZTo6UHJlc2VydmVSZXNvbHV0aW9uOjpObykgY29u
c3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1BsYXRmb3JtUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9QbGF0Zm9ybVJlbW90ZUltYWdlQnVmZmVyUHJveHkuaApp
bmRleCBhMDA4MjA2MmE0MGI1MjdkMTNhZTEzOWFiMDg2YmUzMDA5OWQ2ZTc2Li5lMDJkZTZkYWQ2
NDdmZjY1MzYyYjRjYmY4NTk3NjFkOGY3OGY4Y2ExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1BsYXRmb3JtUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUGxhdGZvcm1SZW1v
dGVJbWFnZUJ1ZmZlclByb3h5LmgKQEAgLTM4LDE4ICszOCw0IEBAIHVzaW5nIEFjY2VsZXJhdGVk
UmVtb3RlSW1hZ2VCdWZmZXJNYXBwZWRQcm94eSA9IFJlbW90ZUltYWdlQnVmZmVyUHJveHk8QWNj
ZWxlcmF0CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRT
X0JFR0lOKFdlYktpdDo6VW5hY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyUHJveHkpCi0gICAg
c3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OkltYWdlQnVmZmVyJiBpbWFnZUJ1ZmZl
cikgeyByZXR1cm4gaW1hZ2VCdWZmZXIucmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCkgJiYg
IWltYWdlQnVmZmVyLmlzQWNjZWxlcmF0ZWQoKTsgfQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19F
TkQoKQotCi0jaWYgSEFWRShJT1NVUkZBQ0UpCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lO
KFdlYktpdDo6QWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlclByb3h5KQotICAgIHN0YXRpYyBi
b29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpJbWFnZUJ1ZmZlciYgaW1hZ2VCdWZmZXIpIHsgcmV0
dXJuIGltYWdlQnVmZmVyLnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpICYmIGltYWdlQnVm
ZmVyLmlzQWNjZWxlcmF0ZWQoKSAmJiAhaW1hZ2VCdWZmZXIuY2FuTWFwQmFja2luZ1N0b3JlKCk7
IH0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKLQotU1BFQ0lBTElaRV9UWVBFX1RSQUlU
U19CRUdJTihXZWJLaXQ6OkFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXJNYXBwZWRQcm94eSkK
LSAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6SW1hZ2VCdWZmZXImIGltYWdl
QnVmZmVyKSB7IHJldHVybiBpbWFnZUJ1ZmZlci5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIo
KSAmJiBpbWFnZUJ1ZmZlci5pc0FjY2VsZXJhdGVkKCkgJiYgaW1hZ2VCdWZmZXIuY2FuTWFwQmFj
a2luZ1N0b3JlKCk7IH0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKLSNlbmRpZgotCiAj
ZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaApp
bmRleCA1MWJkNTcxMjk1OGFmMTJhMjMxNWQ0MWJhM2QyZDZiOWVkNTdmMmJhLi4yMjgyZTEzYWFi
ZjUzZDY0MmU4NDRkNDI3MDFlMDY2NWMxZDU0MzgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJv
eHkuaApAQCAtNTAsMTQgKzUwLDE2IEBAIGNsYXNzIFJlbW90ZUltYWdlQnVmZmVyUHJveHkgOiBw
dWJsaWMgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkltYWdlQnVmZmVyPEJhY2tlbmRUCiAgICAgdXNp
bmcgQmFzZURpc3BsYXlMaXN0SW1hZ2VCdWZmZXI6Om1fYmFja2VuZDsKICAgICB1c2luZyBCYXNl
RGlzcGxheUxpc3RJbWFnZUJ1ZmZlcjo6bV9kcmF3aW5nQ29udGV4dDsKICAgICB1c2luZyBCYXNl
RGlzcGxheUxpc3RJbWFnZUJ1ZmZlcjo6bV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI7Cisg
ICAgdXNpbmcgQmFzZURpc3BsYXlMaXN0SW1hZ2VCdWZmZXI6OnJlc29sdXRpb25TY2FsZTsKIAog
cHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8UmVtb3RlSW1hZ2VCdWZmZXJQcm94eT4gY3JlYXRl
KGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgc2l6ZSwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSBy
ZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2Ug
Y29sb3JTcGFjZSwgV2ViQ29yZTo6UGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eSYgcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KQorICAgIHN0YXRp
YyBSZWZQdHI8UmVtb3RlSW1hZ2VCdWZmZXJQcm94eT4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkZs
b2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNl
IGNvbG9yU3BhY2UsIFdlYkNvcmU6OlBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHkmIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKICAgICB7CiAg
ICAgICAgIGlmIChCYWNrZW5kVHlwZTo6Y2FsY3VsYXRlQmFja2VuZFNpemUoc2l6ZSwgcmVzb2x1
dGlvblNjYWxlKS5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFJlbW90ZUltYWdlQnVmZmVyUHJveHkoc2l6ZSwgcmVu
ZGVyaW5nTW9kZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCwgcmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KSk7CisgICAgICAgIGF1dG8gcGFyYW1ldGVycyA9IFdl
YkNvcmU6OkltYWdlQnVmZmVyQmFja2VuZDo6UGFyYW1ldGVycyB7IHNpemUsIHJlc29sdXRpb25T
Y2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQgfTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5KHBhcmFtZXRlcnMsIHJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eSkpOwogICAgIH0KIAogICAgIH5SZW1vdGVJbWFnZUJ1ZmZlclByb3h5KCkKQEAg
LTY5LDI3ICs3MSw2IEBAIHB1YmxpYzoKICAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHktPnJlbGVhc2VSZW1vdGVSZXNvdXJjZShtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cik7CiAgICAgfQogCi0gICAgdm9pZCBjbGVhckJhY2tlbmQoKSB7IG1fYmFja2VuZCA9IG51bGxw
dHI7IH0KLQotICAgIHZvaWQgY3JlYXRlQmFja2VuZChjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUm
IGxvZ2ljYWxTaXplLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQg
cmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFdlYkNvcmU6
OlBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgaGFuZGxl
KQotICAgIHsKLSAgICAgICAgQVNTRVJUKCFtX2JhY2tlbmQpOwotICAgICAgICBtX2JhY2tlbmQg
PSBCYWNrZW5kVHlwZTo6Y3JlYXRlKGxvZ2ljYWxTaXplLCBiYWNrZW5kU2l6ZSwgcmVzb2x1dGlv
blNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCwgV1RGTW92ZShoYW5kbGUpKTsKLSAgICB9
Ci0KLSAgICB2b2lkIGRpZEZsdXNoKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpGbHVzaElkZW50aWZp
ZXIgZmx1c2hJZGVudGlmaWVyKQotICAgIHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9j
ayhtX3JlY2VpdmVkRmx1c2hJZGVudGlmaWVyTG9jayk7Ci0gICAgICAgIG1fcmVjZWl2ZWRGbHVz
aElkZW50aWZpZXIgPSBmbHVzaElkZW50aWZpZXI7Ci0gICAgICAgIG1fcmVjZWl2ZWRGbHVzaElk
ZW50aWZpZXJDaGFuZ2VkQ29uZGl0aW9uLm5vdGlmeUFsbCgpOwotICAgIH0KLQotICAgIGNvbnN0
IFdlYkNvcmU6OkZsb2F0U2l6ZSYgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQotICAg
IFdlYkNvcmU6OlJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1f
cmVuZGVyaW5nTW9kZTsgfQotICAgIGZsb2F0IHJlc29sdXRpb25TY2FsZSgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIG1fcmVzb2x1dGlvblNjYWxlOyB9Ci0gICAgV2ViQ29yZTo6Q29sb3JTcGFjZSBj
b2xvclNwYWNlKCkgY29uc3QgeyByZXR1cm4gbV9jb2xvclNwYWNlOyB9Ci0gICAgV2ViQ29yZTo6
UGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQoKSBjb25zdCB7IHJldHVybiBtX3BpeGVsRm9ybWF0OyB9
Ci0KICAgICBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgY3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5k
SGFuZGxlKCkKICAgICB7CiAgICAgICAgIGVuc3VyZUJhY2tlbmRDcmVhdGVkKCk7CkBAIC0xMTIs
MTUgKzkzLDkgQEAgcHVibGljOgogICAgIH0KIAogcHJvdGVjdGVkOgotICAgIGZyaWVuZCBjbGFz
cyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOwotICAgIFJlbW90ZUltYWdlQnVmZmVyUHJveHkoY29u
c3QgV2ViQ29yZTo6RmxvYXRTaXplJiBzaXplLCBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlIHJlbmRl
cmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSBjb2xv
clNwYWNlLCBXZWJDb3JlOjpQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5JiByZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpCi0gICAgICAgIDogQmFz
ZURpc3BsYXlMaXN0SW1hZ2VCdWZmZXIoc2l6ZSwgdGhpcykKKyAgICBSZW1vdGVJbWFnZUJ1ZmZl
clByb3h5KGNvbnN0IFdlYkNvcmU6OkltYWdlQnVmZmVyQmFja2VuZDo6UGFyYW1ldGVycyYgcGFy
YW1ldGVycywgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5JiByZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHkpCisgICAgICAgIDogQmFzZURpc3BsYXlMaXN0SW1hZ2VCdWZmZXIocGFyYW1ldGVy
cywgdGhpcykKICAgICAgICAgLCBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eShtYWtlV2Vh
a1B0cihyZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpKQotICAgICAgICAsIG1fc2l6ZShzaXpl
KQotICAgICAgICAsIG1fcmVuZGVyaW5nTW9kZShyZW5kZXJpbmdNb2RlKQotICAgICAgICAsIG1f
cmVzb2x1dGlvblNjYWxlKHJlc29sdXRpb25TY2FsZSkKLSAgICAgICAgLCBtX2NvbG9yU3BhY2Uo
Y29sb3JTcGFjZSkKLSAgICAgICAgLCBtX3BpeGVsRm9ybWF0KHBpeGVsRm9ybWF0KQogICAgIHsK
ICAgICAgICAgQVNTRVJUKG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KTsKICAgICAgICAg
bV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHktPnJlbW90ZVJlc291cmNlQ2FjaGVQcm94eSgp
LmNhY2hlSW1hZ2VCdWZmZXIoKnRoaXMpOwpAQCAtMTMxLDYgKzEwNiwxMyBAQCBwcm90ZWN0ZWQ6
CiAKICAgICBib29sIGhhc1BlbmRpbmdGbHVzaCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VudEZsdXNo
SWRlbnRpZmllciAhPSBtX3JlY2VpdmVkRmx1c2hJZGVudGlmaWVyOyB9CiAKKyAgICB2b2lkIGRp
ZEZsdXNoKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpGbHVzaElkZW50aWZpZXIgZmx1c2hJZGVudGlm
aWVyKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3Jl
Y2VpdmVkRmx1c2hJZGVudGlmaWVyTG9jayk7CisgICAgICAgIG1fcmVjZWl2ZWRGbHVzaElkZW50
aWZpZXIgPSBmbHVzaElkZW50aWZpZXI7CisgICAgICAgIG1fcmVjZWl2ZWRGbHVzaElkZW50aWZp
ZXJDaGFuZ2VkQ29uZGl0aW9uLm5vdGlmeUFsbCgpOworICAgIH0KKwogICAgIHZvaWQgd2FpdEZv
ckRpZEZsdXNoV2l0aFRpbWVvdXQoKQogICAgIHsKICAgICAgICAgaWYgKCFtX3JlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eSkKQEAgLTE0NSw3ICsxMjcsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgQmFj
a2VuZFR5cGUqIGVuc3VyZUJhY2tlbmRDcmVhdGVkKCkgY29uc3Qgb3ZlcnJpZGUKICAgICB7CiAg
ICAgICAgIGlmICghbV9iYWNrZW5kICYmIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KQot
ICAgICAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHktPndhaXRGb3JJbWFnZUJ1
ZmZlckJhY2tlbmRXYXNDcmVhdGVkKCk7CisgICAgICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eS0+d2FpdEZvckRpZENyZWF0ZUltYWdlQnVmZmVyQmFja2VuZCgpOwogICAgICAg
ICByZXR1cm4gbV9iYWNrZW5kLmdldCgpOwogICAgIH0KIApAQCAtMTY5LDggKzE1MSw4IEBAIHBy
b3RlY3RlZDoKICAgICB2b2lkIHB1dEltYWdlRGF0YShXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxp
Y2F0aW9uIGlucHV0Rm9ybWF0LCBjb25zdCBXZWJDb3JlOjpJbWFnZURhdGEmIGltYWdlRGF0YSwg
Y29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc3JjUmVjdCwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQm
IGRlc3RQb2ludCA9IHsgfSwgV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBkZXN0Rm9y
bWF0ID0gV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGllZCkgb3Zl
cnJpZGUKICAgICB7CiAgICAgICAgIC8vIFRoZSBtYXRoIGluc2lkZSBJbWFnZURhdGE6OmNyZWF0
ZSgpIGRvZXNuJ3QgYWdyZWUgd2l0aCB0aGUgbWF0aCBpbnNpZGUgSW1hZ2VCdWZmZXJCYWNrZW5k
OjpwdXRJbWFnZURhdGEoKSBhYm91dCBob3cgbV9yZXNvbHV0aW9uU2NhbGUgaW50ZXJhY3RzIHdp
dGggdGhlIGRhdGEgaW4gdGhlIEltYWdlQnVmZmVyLgotICAgICAgICAvLyBUaGlzIG1lYW5zIHRo
YXQgcHV0SW1hZ2VEYXRhKCkgaXMgb25seSBjYWxsZWQgd2hlbiBtX3Jlc29sdXRpb25TY2FsZSA9
PSAxLgotICAgICAgICBBU1NFUlRfSU1QTElFUyhtX2JhY2tlbmQsIG1fYmFja2VuZC0+cmVzb2x1
dGlvblNjYWxlKCkgPT0gMSk7CisgICAgICAgIC8vIFRoaXMgbWVhbnMgdGhhdCBwdXRJbWFnZURh
dGEoKSBpcyBvbmx5IGNhbGxlZCB3aGVuIHJlc29sdXRpb25TY2FsZSgpID09IDEuCisgICAgICAg
IEFTU0VSVChyZXNvbHV0aW9uU2NhbGUoKSA9PSAxKTsKICAgICAgICAgbV9kcmF3aW5nQ29udGV4
dC5yZWNvcmRlcigpLnB1dEltYWdlRGF0YShpbnB1dEZvcm1hdCwgaW1hZ2VEYXRhLCBzcmNSZWN0
LCBkZXN0UG9pbnQsIGRlc3RGb3JtYXQpOwogICAgIH0KIApAQCAtMjAwLDEyICsxODIsMTIgQEAg
cHJvdGVjdGVkOgogCiAgICAgICAgIG1fc2VudEZsdXNoSWRlbnRpZmllciA9IFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpGbHVzaElkZW50aWZpZXI6OmdlbmVyYXRlKCk7CiAgICAgICAgIGRpc3BsYXlM
aXN0LnRlbXBsYXRlIGFwcGVuZDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Rmx1c2hDb250ZXh0Piht
X3NlbnRGbHVzaElkZW50aWZpZXIpOwotICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eS0+c3VibWl0RGlzcGxheUxpc3QoZGlzcGxheUxpc3QsIG1fcmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyKTsKLSAgICAgICAgbV9pdGVtQ291bnRJbkN1cnJlbnREaXNwbGF5TGlzdCA9IDA7
CisgICAgICAgIHN1Ym1pdERpc3BsYXlMaXN0KGRpc3BsYXlMaXN0KTsKICAgICAgICAgZGlzcGxh
eUxpc3QuY2xlYXIoKTsKKyAgICAgICAgbV9pdGVtQ291bnRJbkN1cnJlbnREaXNwbGF5TGlzdCA9
IDA7CiAgICAgfQogCi0gICAgdm9pZCBzdWJtaXREaXNwbGF5TGlzdChjb25zdCBXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0KQorICAgIHZvaWQgc3VibWl0RGlz
cGxheUxpc3QoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiBkaXNwbGF5
TGlzdCkgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIGlmICghbV9yZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHkgfHwgZGlzcGxheUxpc3QuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuOwpA
QCAtMzUzLDExICszMzUsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OkZsdXNoSWRlbnRpZmllciBtX3JlY2VpdmVkRmx1c2hJZGVudGlmaWVyOwogICAgIFdlYWtQdHI8
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5PiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eTsKICAgICBzaXplX3QgbV9pdGVtQ291bnRJbkN1cnJlbnREaXNwbGF5TGlzdCB7IDAgfTsKLSAg
ICBXZWJDb3JlOjpGbG9hdFNpemUgbV9zaXplOwotICAgIFdlYkNvcmU6OlJlbmRlcmluZ01vZGUg
bV9yZW5kZXJpbmdNb2RlOwotICAgIGZsb2F0IG1fcmVzb2x1dGlvblNjYWxlOwotICAgIFdlYkNv
cmU6OkNvbG9yU3BhY2UgbV9jb2xvclNwYWNlOwotICAgIFdlYkNvcmU6OlBpeGVsRm9ybWF0IG1f
cGl4ZWxGb3JtYXQ7CiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBCYWNrZW5kVHlwZT4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcAppbmRleCBjOGEzMjMwZjk3OTgxOWY5
ZTlkZjAzMzZlOTQ0YjBhMjk3N2Y4ZDExLi43NTJjNzhkMjFiZDEwZDY5ZDA5MTBjYWEwODUyNzJj
YWVjMTU0MjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwCkBA
IC03MCwyNiArNzAsMTUgQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmNvbm5l
Y3RUb0dQVVByb2Nlc3MoKQogICAgIHNlbmQoTWVzc2FnZXM6OkdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OkNyZWF0ZVJlbmRlcmluZ0JhY2tlbmQobV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmll
ciksIDApOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RhdGljIHZvaWQgcmVjcmVhdGVJ
bWFnZUJ1ZmZlcihSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkmIHByb3h5LCBUJiBpbWFnZUJ1
ZmZlciwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlc291cmNlSWRlbnRpZmllciwgUmVu
ZGVyaW5nQmFja2VuZElkZW50aWZpZXIgcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpCi17Ci0g
ICAgaW1hZ2VCdWZmZXIuY2xlYXJCYWNrZW5kKCk7Ci0gICAgcHJveHkuc2VuZChNZXNzYWdlczo6
UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Q3JlYXRlSW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIuc2l6
ZSgpLCBpbWFnZUJ1ZmZlci5yZW5kZXJpbmdNb2RlKCksIGltYWdlQnVmZmVyLnJlc29sdXRpb25T
Y2FsZSgpLCBpbWFnZUJ1ZmZlci5jb2xvclNwYWNlKCksIGltYWdlQnVmZmVyLnBpeGVsRm9ybWF0
KCksIHJlc291cmNlSWRlbnRpZmllciksIHJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKLX0K
LQogdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OnJlZXN0YWJsaXNoR1BVUHJvY2Vz
c0Nvbm5lY3Rpb24oKQogewogICAgIGNvbm5lY3RUb0dQVVByb2Nlc3MoKTsKIAotICAgIGZvciAo
YXV0byYgcGFpciA6IG1fcmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmltYWdlQnVmZmVycygpKSB7
Ci0gICAgICAgIGlmIChhdXRvJiBiYXNlSW1hZ2VCdWZmZXIgPSBwYWlyLnZhbHVlKSB7Ci0gICAg
ICAgICAgICBpZiAoaXM8QWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlck1hcHBlZFByb3h5Pigq
YmFzZUltYWdlQnVmZmVyKSkKLSAgICAgICAgICAgICAgICByZWNyZWF0ZUltYWdlQnVmZmVyKCp0
aGlzLCBkb3duY2FzdDxBY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyTWFwcGVkUHJveHk+KCpi
YXNlSW1hZ2VCdWZmZXIpLCBwYWlyLmtleSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7
Ci0gICAgICAgICAgICBlbHNlIGlmIChpczxBY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyUHJv
eHk+KCpiYXNlSW1hZ2VCdWZmZXIpKQotICAgICAgICAgICAgICAgIHJlY3JlYXRlSW1hZ2VCdWZm
ZXIoKnRoaXMsIGRvd25jYXN0PEFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXJQcm94eT4oKmJh
c2VJbWFnZUJ1ZmZlciksIHBhaXIua2V5LCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsK
LSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICByZWNyZWF0ZUltYWdlQnVmZmVyKCp0
aGlzLCBkb3duY2FzdDxVbmFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXJQcm94eT4oKmJhc2VJ
bWFnZUJ1ZmZlciksIHBhaXIua2V5LCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKLSAg
ICAgICAgfQorICAgIGZvciAoYXV0byYgaW1hZ2VCdWZmZXIgOiBtX3JlbW90ZVJlc291cmNlQ2Fj
aGVQcm94eS5pbWFnZUJ1ZmZlcnMoKS52YWx1ZXMoKSkgeworICAgICAgICBpZiAoIWltYWdlQnVm
ZmVyKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZVJlbmRlcmluZ0JhY2tlbmQ6OkNyZWF0ZUltYWdlQnVmZmVyKGltYWdlQnVmZmVyLT5sb2dpY2Fs
U2l6ZSgpLCBpbWFnZUJ1ZmZlci0+cmVuZGVyaW5nTW9kZSgpLCBpbWFnZUJ1ZmZlci0+cmVzb2x1
dGlvblNjYWxlKCksIGltYWdlQnVmZmVyLT5jb2xvclNwYWNlKCksIGltYWdlQnVmZmVyLT5waXhl
bEZvcm1hdCgpLCBpbWFnZUJ1ZmZlci0+cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCkpLCBt
X3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKKyAgICAgICAgaW1hZ2VCdWZmZXItPmNsZWFy
QmFja2VuZCgpOwogICAgIH0KIH0KIApAQCAtMTE0LDEwICsxMDMsMTAgQEAgdWludDY0X3QgUmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjptZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNv
bnN0CiAgICAgcmV0dXJuIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIudG9VSW50NjQoKTsK
IH0KIAotYm9vbCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OndhaXRGb3JJbWFnZUJ1ZmZl
ckJhY2tlbmRXYXNDcmVhdGVkKCkKK2Jvb2wgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Ojp3
YWl0Rm9yRGlkQ3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kKCkKIHsKICAgICBSZWY8SVBDOjpDb25u
ZWN0aW9uPiBjb25uZWN0aW9uID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJv
Y2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCk7Ci0gICAgcmV0dXJuIGNvbm5lY3Rpb24tPndh
aXRGb3JBbmREaXNwYXRjaEltbWVkaWF0ZWx5PE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHk6OkltYWdlQnVmZmVyQmFja2VuZFdhc0NyZWF0ZWQ+KG1fcmVuZGVyaW5nQmFja2Vu
ZElkZW50aWZpZXIsIDFfcywgSVBDOjpXYWl0Rm9yT3B0aW9uOjpJbnRlcnJ1cHRXYWl0aW5nSWZT
eW5jTWVzc2FnZUFycml2ZXMpOworICAgIHJldHVybiBjb25uZWN0aW9uLT53YWl0Rm9yQW5kRGlz
cGF0Y2hJbW1lZGlhdGVseTxNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpE
aWRDcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQ+KG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIs
IDFfcywgSVBDOjpXYWl0Rm9yT3B0aW9uOjpJbnRlcnJ1cHRXYWl0aW5nSWZTeW5jTWVzc2FnZUFy
cml2ZXMpOwogfQogCiBib29sIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6d2FpdEZvckRp
ZEZsdXNoKCkKQEAgLTEzNSwxMyArMTI0LDEzIEBAIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5OjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpCiAg
ICAgICAgIC8vIHdlIG5lZWQgdG8gY3JlYXRlIEltYWdlQnVmZmVycyBmb3IgZS5nLiBDYW52YXMg
dGhhdCBhcmUgYWN0dWFsbHkgbWFwcGVkIGludG8gdGhlCiAgICAgICAgIC8vIFdlYiBDb250ZW50
IHByb2Nlc3MsIHNvIHRoZXkgY2FuIGJlIHBhaW50ZWQgaW50byB0aGUgdGlsZXMuCiAgICAgICAg
IGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc2hvdWxkVXNlUmVtb3RlUmVuZGVyaW5nRm9y
KFJlbmRlcmluZ1B1cnBvc2U6OkRPTSkpCi0gICAgICAgICAgICBpbWFnZUJ1ZmZlciA9IEFjY2Vs
ZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXJNYXBwZWRQcm94eTo6Y3JlYXRlKHNpemUsIHJlbmRlcmlu
Z01vZGUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQsICp0aGlzKTsK
KyAgICAgICAgICAgIGltYWdlQnVmZmVyID0gQWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlck1h
cHBlZFByb3h5OjpjcmVhdGUoc2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhl
bEZvcm1hdCwgKnRoaXMpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBpbWFnZUJ1ZmZlciA9
IEFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6Y3JlYXRlKHNpemUsIHJlbmRlcmlu
Z01vZGUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQsICp0aGlzKTsK
KyAgICAgICAgICAgIGltYWdlQnVmZmVyID0gQWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlclBy
b3h5OjpjcmVhdGUoc2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1h
dCwgKnRoaXMpOwogICAgIH0KIAogICAgIGlmICghaW1hZ2VCdWZmZXIpCi0gICAgICAgIGltYWdl
QnVmZmVyID0gVW5hY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyUHJveHk6OmNyZWF0ZShzaXpl
LCByZW5kZXJpbmdNb2RlLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0
LCAqdGhpcyk7CisgICAgICAgIGltYWdlQnVmZmVyID0gVW5hY2NlbGVyYXRlZFJlbW90ZUltYWdl
QnVmZmVyUHJveHk6OmNyZWF0ZShzaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBp
eGVsRm9ybWF0LCAqdGhpcyk7CiAKICAgICBpZiAoaW1hZ2VCdWZmZXIpIHsKICAgICAgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Q3JlYXRlSW1hZ2VCdWZmZXIoc2l6
ZSwgcmVuZGVyaW5nTW9kZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1h
dCwgaW1hZ2VCdWZmZXItPnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpKSwgbV9yZW5kZXJp
bmdCYWNrZW5kSWRlbnRpZmllcik7CkBAIC0xOTIsMzIgKzE4MSwyNCBAQCB2b2lkIFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eTo6cmVsZWFzZVJlbW90ZVJlc291cmNlKFJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZgogICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OlJl
bGVhc2VSZW1vdGVSZXNvdXJjZShyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpLCBtX3JlbmRl
cmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKIH0KIAotdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHk6OmltYWdlQnVmZmVyQmFja2VuZFdhc0NyZWF0ZWQoY29uc3QgRmxvYXRTaXplJiBsb2dp
Y2FsU2l6ZSwgY29uc3QgSW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2Fs
ZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgSW1hZ2VC
dWZmZXJCYWNrZW5kSGFuZGxlIGhhbmRsZSwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5OjpkaWRDcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQoSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxl
IGhhbmRsZSwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcikKIHsKICAgICBhdXRvIGltYWdlQnVmZmVyID0gbV9yZW1vdGVSZXNvdXJjZUNhY2hl
UHJveHkuY2FjaGVkSW1hZ2VCdWZmZXIocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAg
ICBpZiAoIWltYWdlQnVmZmVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoaXM8QWNjZWxl
cmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlck1hcHBlZFByb3h5PigqaW1hZ2VCdWZmZXIpKQotICAgICAg
ICBkb3duY2FzdDxBY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyTWFwcGVkUHJveHk+KCppbWFn
ZUJ1ZmZlcikuY3JlYXRlQmFja2VuZChsb2dpY2FsU2l6ZSwgYmFja2VuZFNpemUsIHJlc29sdXRp
b25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQsIFdURk1vdmUoaGFuZGxlKSk7Ci0gICAg
ZWxzZSBpZiAoaXM8QWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlclByb3h5PigqaW1hZ2VCdWZm
ZXIpKQotICAgICAgICBkb3duY2FzdDxBY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyUHJveHk+
KCppbWFnZUJ1ZmZlcikuY3JlYXRlQmFja2VuZChsb2dpY2FsU2l6ZSwgYmFja2VuZFNpemUsIHJl
c29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQsIFdURk1vdmUoaGFuZGxlKSk7
CisgICAgaWYgKGltYWdlQnVmZmVyLT5yZW5kZXJpbmdNb2RlKCkgPT0gUmVuZGVyaW5nTW9kZTo6
VW5hY2NlbGVyYXRlZCkKKyAgICAgICAgaW1hZ2VCdWZmZXItPnNldEJhY2tlbmQoVW5hY2NlbGVy
YXRlZEltYWdlQnVmZmVyU2hhcmVhYmxlQmFja2VuZDo6Y3JlYXRlKGltYWdlQnVmZmVyLT5wYXJh
bWV0ZXJzKCksIFdURk1vdmUoaGFuZGxlKSkpOworICAgIGVsc2UgaWYgKGltYWdlQnVmZmVyLT5j
YW5NYXBCYWNraW5nU3RvcmUoKSkKKyAgICAgICAgaW1hZ2VCdWZmZXItPnNldEJhY2tlbmQoQWNj
ZWxlcmF0ZWRJbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZEJhY2tlbmQ6OmNyZWF0ZShpbWFnZUJ1
ZmZlci0+cGFyYW1ldGVycygpLCBXVEZNb3ZlKGhhbmRsZSkpKTsKICAgICBlbHNlCi0gICAgICAg
IGRvd25jYXN0PFVuYWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlclByb3h5PigqaW1hZ2VCdWZm
ZXIpLmNyZWF0ZUJhY2tlbmQobG9naWNhbFNpemUsIGJhY2tlbmRTaXplLCByZXNvbHV0aW9uU2Nh
bGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0LCBXVEZNb3ZlKGhhbmRsZSkpOworICAgICAgICBp
bWFnZUJ1ZmZlci0+c2V0QmFja2VuZChBY2NlbGVyYXRlZEltYWdlQnVmZmVyU2hhcmVhYmxlQmFj
a2VuZDo6Y3JlYXRlKGltYWdlQnVmZmVyLT5wYXJhbWV0ZXJzKCksIFdURk1vdmUoaGFuZGxlKSkp
OwogfQogCiB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6ZGlkRmx1c2goRGlzcGxh
eUxpc3Q6OkZsdXNoSWRlbnRpZmllciBmbHVzaElkZW50aWZpZXIsIFJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCiB7Ci0gICAgYXV0byBpbWFn
ZUJ1ZmZlciA9IG1fcmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNhY2hlZEltYWdlQnVmZmVyKHJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7Ci0gICAgaWYgKCFpbWFnZUJ1ZmZlcikKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgaWYgKGlzPEFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXJNYXBw
ZWRQcm94eT4oKmltYWdlQnVmZmVyKSkKLSAgICAgICAgZG93bmNhc3Q8QWNjZWxlcmF0ZWRSZW1v
dGVJbWFnZUJ1ZmZlck1hcHBlZFByb3h5PigqaW1hZ2VCdWZmZXIpLmRpZEZsdXNoKGZsdXNoSWRl
bnRpZmllcik7Ci0gICAgZWxzZSBpZiAoaXM8QWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlclBy
b3h5PigqaW1hZ2VCdWZmZXIpKQotICAgICAgICBkb3duY2FzdDxBY2NlbGVyYXRlZFJlbW90ZUlt
YWdlQnVmZmVyUHJveHk+KCppbWFnZUJ1ZmZlcikuZGlkRmx1c2goZmx1c2hJZGVudGlmaWVyKTsK
LSAgICBlbHNlCi0gICAgICAgIGRvd25jYXN0PFVuYWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZl
clByb3h5PigqaW1hZ2VCdWZmZXIpLmRpZEZsdXNoKGZsdXNoSWRlbnRpZmllcik7CisgICAgaWYg
KGF1dG8gaW1hZ2VCdWZmZXIgPSBtX3JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jYWNoZWRJbWFn
ZUJ1ZmZlcihyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpKQorICAgICAgICBpbWFnZUJ1ZmZl
ci0+ZGlkRmx1c2goZmx1c2hJZGVudGlmaWVyKTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHk6OnVwZGF0ZVJldXNhYmxlSGFuZGxlcygpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHkuaAppbmRleCA5NWY4ZDJiNDEyZmI5MWRmNzdjNjhmMTM2YjAwNzg2ZjAy
NGQ3ZTI2Li5mODA1ZmMxZWZmOWNhNTE0NTM1OWNhMjkyYjUyZGRmZWVmOGRhODFlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmgKQEAgLTgxLDcgKzgxLDcgQEAgcHVibGlj
OgogICAgIHZvaWQgY2FjaGVOYXRpdmVJbWFnZShXZWJDb3JlOjpOYXRpdmVJbWFnZSYpOwogICAg
IHZvaWQgcmVsZWFzZVJlbW90ZVJlc291cmNlKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcik7CiAKLSAgICBib29sIHdhaXRGb3JJbWFnZUJ1ZmZlckJhY2tlbmRXYXNDcmVhdGVk
KCk7CisgICAgYm9vbCB3YWl0Rm9yRGlkQ3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kKCk7CiAgICAg
Ym9vbCB3YWl0Rm9yRGlkRmx1c2goKTsKIAogcHJpdmF0ZToKQEAgLTk1LDcgKzk1LDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIHVwZGF0ZVJldXNhYmxlSGFuZGxlcygpOwogCiAgICAgLy8gTWVzc2Fn
ZXMgdG8gYmUgcmVjZWl2ZWQuCi0gICAgdm9pZCBpbWFnZUJ1ZmZlckJhY2tlbmRXYXNDcmVhdGVk
KGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IFdlYkNvcmU6Oklu
dFNpemUmIGJhY2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9y
U3BhY2UsIFdlYkNvcmU6OlBpeGVsRm9ybWF0LCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUsIFdl
YkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CisgICAgdm9pZCBkaWRDcmVhdGVJ
bWFnZUJ1ZmZlckJhY2tlbmQoSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLCBXZWJDb3JlOjpSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIHZvaWQgZGlkRmx1c2goV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OkZsdXNoSWRlbnRpZmllciwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyKTsKIAogICAgIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eSBtX3JlbW90ZVJlc291cmNl
Q2FjaGVQcm94eSB7ICp0aGlzIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5tZXNzYWdlcy5pbiBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDkyMGRlM2Y3Nzc1NDAxNjQwNTFmZjUxY2QyMWI1
MDU1OTg1NGY4NDQuLjNhNTMyZDVlNGZmNjE2YmRiMDdlZGU3YTlhODNlOTMxMzdlNzNiZjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lm1lc3NhZ2VzLmlu
CkBAIC0yMyw3ICsyMyw3IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiBtZXNzYWdlcyAt
PiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkgTm90UmVmQ291bnRlZCB7Ci0gICAgSW1hZ2VC
dWZmZXJCYWNrZW5kV2FzQ3JlYXRlZChXZWJDb3JlOjpGbG9hdFNpemUgbG9naWNhbFNpemUsIFdl
YkNvcmU6OkludFNpemUgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29y
ZTo6Q29sb3JTcGFjZSBjb2xvclNwYWNlLCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6UGl4ZWxGb3Jt
YXQgcGl4ZWxGb3JtYXQsIFdlYktpdDo6SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGhhbmRsZSwg
V2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcikKKyAgICBEaWRDcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQoV2ViS2l0OjpJbWFnZUJ1
ZmZlckJhY2tlbmRIYW5kbGUgaGFuZGxlLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogICAgIERpZEZsdXNoKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpGbHVzaElkZW50aWZpZXIgZmx1c2hJZGVudGlmaWVyLCBXZWJDb3JlOjpS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2Nv
Y29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlSU9T
dXJmYWNlQmFja2VuZC5jcHAKaW5kZXggY2VkYTcxMmRiNWE0Njg5MWEwMzIzZWNlOTczNzU4MzM1
ZjQ0NDQ2Yi4uNTdjN2Y3ZDVhMjQ1OTdkMmI2YjJmZjNlYjUwZDdmNTY5NzQ5NTBhOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1
ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VC
YWNrZW5kLmNwcApAQCAtMzcsMTQgKzM3LDE0IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
CiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZh
Y2VCYWNrZW5kKTsKIAotc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJm
YWNlQmFja2VuZD4gSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGUo
Y29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50U2l6ZSYgYmFja2VuZFNpemUs
IGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBQaXhlbEZvcm1h
dCBwaXhlbEZvcm1hdCwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGhhbmRsZSkKK3N0ZDo6dW5p
cXVlX3B0cjxJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQ+IEltYWdlQnVmZmVy
U2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFt
ZXRlcnMsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBoYW5kbGUpCiB7CiAgICAgaWYgKCFXVEY6
OmhvbGRzX2FsdGVybmF0aXZlPE1hY2hTZW5kUmlnaHQ+KGhhbmRsZSkpIHsKICAgICAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
fQogCi0gICAgcmV0dXJuIG1ha2VVbmlxdWU8SW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VC
YWNrZW5kPihsb2dpY2FsU2l6ZSwgYmFja2VuZFNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JT
cGFjZSwgcGl4ZWxGb3JtYXQsIFdURk1vdmUoaGFuZGxlKSk7CisgICAgcmV0dXJuIG1ha2VVbmlx
dWU8SW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kPihwYXJhbWV0ZXJzLCBXVEZN
b3ZlKGhhbmRsZSkpOwogfQogCiBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgSW1hZ2VCdWZmZXJT
aGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUo
KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVJ
T1N1cmZhY2VCYWNrZW5kLmgKaW5kZXggN2MxZWVkNjAyZTUxNzIzNzY5ZjRiNjk1NGIzMTc5NGEz
MDNiZmY2ZS4uZDVlMDBlNDIwOThhNGIzNzA2ODJhNDk3YmUzODljMGQzODk1M2NhOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1
ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFj
a2VuZC5oCkBAIC0zNCwxNiArMzQsMTQgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNz
IFNoYXJlYWJsZUJpdG1hcDsKLQogY2xhc3MgSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VC
YWNrZW5kIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OkltYWdlQnVmZmVyQmFja2VuZCB7CiAgICAg
V1RGX01BS0VfSVNPX0FMTE9DQVRFRChJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tl
bmQpOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJm
YWNlQmFja2VuZCk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1
ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQ+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpGbG9h
dFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBiYWNrZW5kU2l6ZSwg
ZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlLCBXZWJDb3JlOjpQaXhl
bEZvcm1hdCwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlx
dWVfcHRyPEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZD4gY3JlYXRlKGNvbnN0
IFBhcmFtZXRlcnMmLCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUpOwogCi0gICAgSW1hZ2VCdWZm
ZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbG9n
aWNhbFNpemUsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHBoeXNpY2FsU2l6ZSwgZmxvYXQgcmVz
b2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFdlYkNvcmU6OlBp
eGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUmJiBoYW5kbGUp
Ci0gICAgICAgIDogSW1hZ2VCdWZmZXJCYWNrZW5kKGxvZ2ljYWxTaXplLCBwaHlzaWNhbFNpemUs
IHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQpCisgICAgSW1hZ2VCdWZm
ZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMs
IEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSYmIGhhbmRsZSkKKyAgICAgICAgOiBJbWFnZUJ1ZmZl
ckJhY2tlbmQocGFyYW1ldGVycykKICAgICAgICAgLCBtX2hhbmRsZShXVEZNb3ZlKGhhbmRsZSkp
CiAgICAgewogICAgIH0KQEAgLTYyLDggKzYwLDggQEAgcHVibGljOgogICAgIHZvaWQgcHV0SW1h
Z2VEYXRhKFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb24gaW5wdXRGb3JtYXQsIGNvbnN0
IFdlYkNvcmU6OkltYWdlRGF0YSYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHNyY1JlY3QsIGNv
bnN0IFdlYkNvcmU6OkludFBvaW50JiBkZXN0UG9pbnQsIFdlYkNvcmU6OkFscGhhUHJlbXVsdGlw
bGljYXRpb24gZGVzdEZvcm1hdCkgb3ZlcnJpZGU7CiAKICAgICBzdGF0aWMgY29uc3RleHByIGJv
b2wgaXNPcmlnaW5BdFVwcGVyTGVmdENvcm5lciA9IHRydWU7Ci0gICAgc3RhdGljIGNvbnN0ZXhw
ciBib29sIGlzQWNjZWxlcmF0ZWQgPSB0cnVlOwogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBj
YW5NYXBCYWNraW5nU3RvcmUgPSBmYWxzZTsKKyAgICBzdGF0aWMgY29uc3RleHByIFdlYkNvcmU6
OlJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSA9IFdlYkNvcmU6OlJlbmRlcmluZ01vZGU6OkFj
Y2VsZXJhdGVkOwogCiBwcml2YXRlOgogICAgIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBtX2hh
bmRsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
Y29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNrZW5kLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFy
ZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNrZW5kLmNwcAppbmRleCA0NTBkZTQ0NTU4MGM5OWFjY2Q2
YjI4ZjM4MTNjNGNjZjM3NjRlOTU1Li4xZWJhZDQzMmEyMTUzZmEwNDNmZTg4ZGU4YmIxM2JjNmNk
YjYxZjQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFja2VuZC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZl
clNoYXJlYWJsZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQuY3BwCkBAIC0zNywxMyArMzcsMTMgQEAg
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChJ
bWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQpOwogCi1zdGQ6OnVuaXF1
ZV9wdHI8SW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNrZW5kPiBJbWFnZUJ1
ZmZlclNoYXJlYWJsZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZShjb25zdCBGbG9hdFNp
emUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBQ
aXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgY29uc3QgSG9zdFdpbmRvdyopCitzdGQ6OnVuaXF1ZV9w
dHI8SW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNrZW5kPiBJbWFnZUJ1ZmZl
clNoYXJlYWJsZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZShjb25zdCBQYXJhbWV0ZXJz
JiBwYXJhbWV0ZXJzLCBjb25zdCBIb3N0V2luZG93KikKIHsKLSAgICBJbnRTaXplIGJhY2tlbmRT
aXplID0gY2FsY3VsYXRlQmFja2VuZFNpemUoc2l6ZSwgcmVzb2x1dGlvblNjYWxlKTsKKyAgICBJ
bnRTaXplIGJhY2tlbmRTaXplID0gY2FsY3VsYXRlQmFja2VuZFNpemUocGFyYW1ldGVycy5sb2dp
Y2FsU2l6ZSwgcGFyYW1ldGVycy5yZXNvbHV0aW9uU2NhbGUpOwogICAgIGlmIChiYWNrZW5kU2l6
ZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgYXV0byBzdXJmYWNl
ID0gSU9TdXJmYWNlOjpjcmVhdGUoYmFja2VuZFNpemUsIGJhY2tlbmRTaXplLCBjYWNoZWRDR0Nv
bG9yU3BhY2UoY29sb3JTcGFjZSksIElPU3VyZmFjZTo6Zm9ybWF0Rm9yUGl4ZWxGb3JtYXQocGl4
ZWxGb3JtYXQpKTsKKyAgICBhdXRvIHN1cmZhY2UgPSBJT1N1cmZhY2U6OmNyZWF0ZShiYWNrZW5k
U2l6ZSwgYmFja2VuZFNpemUsIGNhY2hlZENHQ29sb3JTcGFjZShwYXJhbWV0ZXJzLmNvbG9yU3Bh
Y2UpLCBJT1N1cmZhY2U6OmZvcm1hdEZvclBpeGVsRm9ybWF0KHBhcmFtZXRlcnMucGl4ZWxGb3Jt
YXQpKTsKICAgICBpZiAoIXN1cmZhY2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC01
MywyMSArNTMsMjEgQEAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVk
SU9TdXJmYWNlQmFja2VuZD4gSW1hZ2VCdWZmZXJTaGFyZWFibGUKIAogICAgIENHQ29udGV4dENs
ZWFyUmVjdChjZ0NvbnRleHQuZ2V0KCksIEZsb2F0UmVjdChGbG9hdFBvaW50Ojp6ZXJvKCksIGJh
Y2tlbmRTaXplKSk7CiAKLSAgICByZXR1cm4gbWFrZVVuaXF1ZTxJbWFnZUJ1ZmZlclNoYXJlYWJs
ZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQ+KHNpemUsIGJhY2tlbmRTaXplLCByZXNvbHV0aW9uU2Nh
bGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0LCBXVEZNb3ZlKHN1cmZhY2UpKTsKKyAgICByZXR1
cm4gbWFrZVVuaXF1ZTxJbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQ+
KHBhcmFtZXRlcnMsIFdURk1vdmUoc3VyZmFjZSkpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8SW1h
Z2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNrZW5kPiBJbWFnZUJ1ZmZlclNoYXJl
YWJsZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZShjb25zdCBGbG9hdFNpemUmIGxvZ2lj
YWxTaXplLCBjb25zdCBJbnRTaXplJiBpbnRlcm5hbFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2Fs
ZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgSW1hZ2VC
dWZmZXJCYWNrZW5kSGFuZGxlIGhhbmRsZSkKK3N0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlclNo
YXJlYWJsZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQ+IEltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVk
SU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIElt
YWdlQnVmZmVyQmFja2VuZEhhbmRsZSBoYW5kbGUpCiB7CiAgICAgaWYgKCFXVEY6OmhvbGRzX2Fs
dGVybmF0aXZlPE1hY2hTZW5kUmlnaHQ+KGhhbmRsZSkpIHsKICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIGF1dG8gc3Vy
ZmFjZSA9IElPU3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdodChXVEZNb3ZlKFdURjo6Z2V0PE1h
Y2hTZW5kUmlnaHQ+KGhhbmRsZSkpLCBjYWNoZWRDR0NvbG9yU3BhY2UoY29sb3JTcGFjZSkpOwor
ICAgIGF1dG8gc3VyZmFjZSA9IElPU3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdodChXVEZNb3Zl
KFdURjo6Z2V0PE1hY2hTZW5kUmlnaHQ+KGhhbmRsZSkpLCBjYWNoZWRDR0NvbG9yU3BhY2UocGFy
YW1ldGVycy5jb2xvclNwYWNlKSk7CiAgICAgaWYgKCFzdXJmYWNlKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAotICAgIHJldHVybiBtYWtlVW5pcXVlPEltYWdlQnVmZmVyU2hhcmVhYmxlTWFw
cGVkSU9TdXJmYWNlQmFja2VuZD4obG9naWNhbFNpemUsIGludGVybmFsU2l6ZSwgcmVzb2x1dGlv
blNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCwgV1RGTW92ZShzdXJmYWNlKSk7CisgICAg
cmV0dXJuIG1ha2VVbmlxdWU8SW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNr
ZW5kPihwYXJhbWV0ZXJzLCBXVEZNb3ZlKHN1cmZhY2UpKTsKIH0KIAogSW1hZ2VCdWZmZXJCYWNr
ZW5kSGFuZGxlIEltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFja2VuZDo6Y3Jl
YXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVN
YXBwZWRJT1N1cmZhY2VCYWNrZW5kLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFja2VuZC5o
CmluZGV4IDJhNjZiYjM4NGZhMWExYWVhMWFmMzFjMWM3ZTMzYmNhOWEwNTdmMzUuLmM1ZDA0ODBj
MzYwZGNiOTVhODI1N2VkMjVhNDhjNDM2NzFjNGJjZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBw
ZWRJT1N1cmZhY2VCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQu
aApAQCAtMzksOCArMzksOCBAQCBjbGFzcyBJbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElPU3Vy
ZmFjZUJhY2tlbmQgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6SW1hZ2VCdQogICAgIFdURl9NQUtF
X0lTT19BTExPQ0FURUQoSW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNrZW5k
KTsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElP
U3VyZmFjZUJhY2tlbmQpOwogcHVibGljOgotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1h
Z2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNrZW5kPiBjcmVhdGUoY29uc3QgV2Vi
Q29yZTo6RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgZmxvYXQgcmVzb2x1dGlvblNjYWxl
LCBXZWJDb3JlOjpDb2xvclNwYWNlLCBXZWJDb3JlOjpQaXhlbEZvcm1hdCwgY29uc3QgV2ViQ29y
ZTo6SG9zdFdpbmRvdyopOwotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJT
aGFyZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNrZW5kPiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6Rmxv
YXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgaW50ZXJuYWxTaXpl
LCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UsIFdlYkNvcmU6OlBp
eGVsRm9ybWF0LCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUpOworICAgIHN0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8SW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNrZW5kPiBjcmVh
dGUoY29uc3QgUGFyYW1ldGVycyYsIGNvbnN0IFdlYkNvcmU6Okhvc3RXaW5kb3cqKTsKKyAgICBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNl
QmFja2VuZD4gY3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmLCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5k
bGUpOwogCiAgICAgdXNpbmcgV2ViQ29yZTo6SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpJ
bWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ7CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>