<?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>169486</bug_id>
          
          <creation_ts>2017-03-10 15:17:00 -0800</creation_ts>
          <short_desc>Cleanup &quot;addCookie&quot; and its sole user</short_desc>
          <delta_ts>2017-03-13 10:29:38 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>169546</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>achristensen</cc>
    
    <cc>bburg</cc>
    
    <cc>berto</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>danw</cc>
    
    <cc>dbates</cc>
    
    <cc>galpeter</cc>
    
    <cc>gustavo</cc>
    
    <cc>japhet</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>mrobinson</cc>
    
    <cc>ossy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1285939</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-03-10 15:17:00 -0800</bug_when>
    <thetext>Cleanup &quot;addCookie&quot; and its sole user

addCookie doesn&apos;t cleanly fit in with the native cookie storage API, and a lot of dead code was added to support it as well.

Refactoring this to be &quot;setCookies&quot; like NSHTTPCookieStorage supports will be better going forward.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1285970</commentid>
    <comment_count>1</comment_count>
      <attachid>304098</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-03-10 16:25:11 -0800</bug_when>
    <thetext>Created attachment 304098
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1285971</commentid>
    <comment_count>2</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-03-10 16:26:00 -0800</bug_when>
    <thetext>Already reviewed. Waiting for EWS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1286042</commentid>
    <comment_count>3</comment_count>
      <attachid>304117</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-03-10 19:19:38 -0800</bug_when>
    <thetext>Created attachment 304117
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1286043</commentid>
    <comment_count>4</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-03-10 19:20:32 -0800</bug_when>
    <thetext>Attempt to fix GTK, and hopefully the rest of the EWS bots will actually be responsive this time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1286053</commentid>
    <comment_count>5</comment_count>
      <attachid>304120</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-03-10 19:55:29 -0800</bug_when>
    <thetext>Created attachment 304120
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1286095</commentid>
    <comment_count>6</comment_count>
      <attachid>304120</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2017-03-10 22:56:37 -0800</bug_when>
    <thetext>Comment on attachment 304120
Patch

r=me

GTK is still sad.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1286129</commentid>
    <comment_count>7</comment_count>
      <attachid>304160</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-03-11 03:09:47 -0800</bug_when>
    <thetext>Created attachment 304160
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1286130</commentid>
    <comment_count>8</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-03-11 03:15:32 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; Comment on attachment 304120 [details]
&gt; Patch
&gt; 
&gt; r=me
&gt; 
&gt; GTK is still sad.

This is a known issue with our forwarding headers generator. It doesn&apos;t scan generated sources, so in this case #include &lt;WebCoreCookie.h&gt; is only added to the generated header DerivedSources/WebKit2/WebCookieManagerMessages.h. WebCookieManager.cpp needs that include, but it doesn&apos;t include it explicitly becase it already includes WebCookieManagerMessages.h. Our forwarding header generator doesn&apos;t generate the forwarding header in this case. To fix it we only need to make sure the header is included in a non-generated source file, in this case WebCookieManager.cpp. We could probably change the generator to also scan generated sources, ensuring the script is always run after all generated sources during the build. I&apos;m not sure how easy that would be, though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1286139</commentid>
    <comment_count>9</comment_count>
      <attachid>304160</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-11 08:44:04 -0800</bug_when>
    <thetext>Comment on attachment 304160
Patch for landing

Clearing flags on attachment: 304160

Committed r213759: &lt;http://trac.webkit.org/changeset/213759&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1286140</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-11 08:44:10 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1286145</commentid>
    <comment_count>11</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-03-11 10:17:52 -0800</bug_when>
    <thetext>(In reply to comment #8) 
&gt; This is a known issue with our forwarding headers generator. It doesn&apos;t scan
&gt; generated sources, so in this case #include &lt;WebCoreCookie.h&gt; is only added
&gt; to the generated header DerivedSources/WebKit2/WebCookieManagerMessages.h.
&gt; WebCookieManager.cpp needs that include, but it doesn&apos;t include it
&gt; explicitly becase it already includes WebCookieManagerMessages.h. Our
&gt; forwarding header generator doesn&apos;t generate the forwarding header in this
&gt; case. To fix it we only need to make sure the header is included in a
&gt; non-generated source file, in this case WebCookieManager.cpp. We could
&gt; probably change the generator to also scan generated sources, ensuring the
&gt; script is always run after all generated sources during the build. I&apos;m not
&gt; sure how easy that would be, though.

Is there a bug report for this...?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1286904</commentid>
    <comment_count>12</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2017-03-12 00:20:17 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; Comment on attachment 304160 [details]
&gt; Patch for landing
&gt; 
&gt; Clearing flags on attachment: 304160
&gt; 
&gt; Committed r213759: &lt;http://trac.webkit.org/changeset/213759&gt;

It broke the Apple Mac cmake build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287234</commentid>
    <comment_count>13</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2017-03-13 10:29:20 -0700</bug_when>
    <thetext>Just to document, the Windows build was fixed in bug169546</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304098</attachid>
            <date>2017-03-10 16:25:11 -0800</date>
            <delta_ts>2017-03-10 19:19:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-169486-20170310162511.patch</filename>
            <type>text/plain</type>
            <size>48187</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEzNzI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjJmZDJiN2VmNzEyNTBl
MzI0NGY1ZDBkMDk1ZWE0YzkzMzFiZWJhYy4uNWQzMjZiN2RhY2Y0MTgwMTBmNzM4ZDE4YzEyNzM2
NTc1MmIzYjg2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDE3LTAzLTEwICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBDbGVhbnVwICJhZGRDb29r
aWUiIGFuZCBpdHMgc29sZSB1c2VyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTY5NDg2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQnJpYW4gQnVyZy4K
KworICAgICAgICBObyBuZXcgdGVzdHMgKFJlZmFjdG9yLCBubyBiZWhhdmlvciBjaGFuZ2UpCisK
KyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKKyAgICAgICAg
KiBsb2FkZXIvQ29va2llSmFyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFkZENvb2tpZSk6IERl
bGV0ZWQuCisgICAgICAgICogbG9hZGVyL0Nvb2tpZUphci5oOgorCisgICAgICAgICogcGxhdGZv
cm0vQ29va2llLmg6CisgICAgICAgIChXZWJDb3JlOjpDb29raWU6OkNvb2tpZSk6CisgICAgICAg
IChXZWJDb3JlOjpDb29raWVIYXNoOjpoYXNoKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb2tpZUhh
c2g6OmVxdWFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb2tpZTo6ZW5jb2RlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNvb2tpZTo6ZGVjb2RlKToKKworICAgICAgICAqIHBsYXRmb3JtL0Nvb2tpZXNT
dHJhdGVneS5oOgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNl
c3Npb24uaDoKKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUGxhdGZvcm1Db29raWVKYXIu
aDoKKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvQ29va2llSmFyQ0ZOZXQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6YWRkQ29va2llKTogRGVsZXRlZC4KKworICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvY29jb2EvQ29va2llQ29jb2EubW06IENvcGllZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9Db29raWVKYXIuaC4KKyAgICAgICAgKFdlYkNvcmU6OkNvb2tpZTo6b3BlcmF0
b3IgTlNIVFRQQ29va2llICopOgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9O
ZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbTogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUv
bG9hZGVyL0Nvb2tpZUphci5oLgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpzZXRDb29raWVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lv
bjo6bnNDb29raWVTdG9yYWdlKToKKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9D
b29raWVKYXJDdXJsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFkZENvb2tpZSk6IERlbGV0ZWQu
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9Db29raWVKYXJNYWMubW06CisgICAg
ICAgIChXZWJDb3JlOjpkZWxldGVDb29raWVzRm9ySG9zdG5hbWVzKToKKyAgICAgICAgKFdlYkNv
cmU6OmRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OmFk
ZENvb2tpZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpjb29raWVTdG9yYWdlKTogRGVs
ZXRlZC4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9Db29raWVKYXJTb3VwLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnRvU291cENvb2tpZSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjphZGRDb29raWUpOiBEZWxldGVkLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
dG9Tb3VwQ29va2llKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
c2V0Q29va2llcyk6CisKIDIwMTctMDMtMTAgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNv
bT4KIAogICAgICAgICBTaW1wbGUgbGluZSBsYXlvdXQ6IE9wcmhhbiBsaW5lcyB3aXRoIHZpc3Vh
bCBvdmVyZmxvdyBkb2VzIG5vdCB3b3JrIHByb3Blcmx5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IGUw
MzE0NjZlODc3OTQ1MDc5OGRlYTQ4OTExNGJmNjYzOTc1ZDVjOTEuLmI4MGIyZjg3NzY3MDY1MDMz
Yjk3ZmZkYjkwMzI4Zjk5Y2MxODI4NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBA
QAorMjAxNy0wMy0xMCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgQ2xlYW51cCAiYWRkQ29va2llIiBhbmQgaXRzIHNvbGUgdXNlci4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTQ4NgorCisgICAgICAgIFJldmll
d2VkIGJ5IEJyaWFuIEJ1cmcuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9y
bVN0cmF0ZWdpZXMuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMubW06CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmFkZENvb2tpZSk6IERl
bGV0ZWQuCisKIDIwMTctMDMtMTAgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Vi
a2l0Lm9yZz4KIAogICAgICAgICBGaXggQ01ha2UgYnVpbGQuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMjA2NWI1
NmE4NTBlZTg1NzY3ZjMyYTQwZDMzODA3OTNiNjhmM2FhYy4uZWUzNzk2MTIwM2YwNTY0NmMyODg0
NjM3MjNhMDE0ZmVmOTBiNDAwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDE3LTAz
LTEwICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBDbGVhbnVw
ICJhZGRDb29raWUiIGFuZCBpdHMgc29sZSB1c2VyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5NDg2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQnJp
YW4gQnVyZy4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OmFkZENvb2tpZSk6IERlbGV0ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKworICAgICAgICAqIFNo
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVudENv
ZGVyPENvb2tpZT46OmVuY29kZSk6IERlbGV0ZWQuCisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29k
ZXI8Q29va2llPjo6ZGVjb2RlKTogRGVsZXRlZC4KKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmg6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRv
bWF0aW9uU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9u
OjphZGRTaW5nbGVDb29raWUpOgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFn
ZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6c2V0
Q29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6YWRkQ29v
a2llKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5
Lmg6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXI6OnNldENvb2tpZXMpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyOjphZGRDb29raWUpOiBEZWxldGVkLgorICAgICAg
ICAqIFdlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmg6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIubWVzc2FnZXMuaW46CisKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6YWRkQ29va2llKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRl
Z2llcy5oOgorCiAyMDE3LTAzLTA5ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUu
Y29tPgogCiAgICAgICAgIFtpT1MgV0syXSBMYXllciBjb250ZW50IGJsdXJyeSB3aXRoIG5lc3Rl
ZCBwZXJzcGVjdGl2ZSBhbmQgdHJhbnNmb3JtcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGEzYmI2ZjZkYTFjOTY3NDMyOTc1MWNi
OGQwNzQ5NjlhY2ViOGQxZGMuLmJjZDhmMzNlOGVmOTdmMzc0MWU2YWM4YmVjZjcxMDI5OWQ0N2Yy
NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTIyNzIsNiArMjI3Miw4IEBACiAJCTUxQzgxQjhBMEM0NDIyRjcwMDE5RUNFMyAv
KiBGVFBEaXJlY3RvcnlQYXJzZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxQzgxQjg4MEM0NDIyRjcwMDE5RUNFMyAvKiBGVFBEaXJlY3RvcnlQYXJz
ZXIuaCAqLzsgfTsKIAkJNTFDQkZDOTkwRDEwRTQ4MzAwMkRCRjUxIC8qIENhY2hlZEZyYW1lUGxh
dGZvcm1EYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MUNCRkM5ODBEMTBFNDgzMDAyREJGNTEgLyogQ2FjaGVkRnJhbWVQbGF0Zm9ybURhdGEuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MUQwQzUx
NjBEQUE5MEI3MDAzQjM4MzEgLyogSlNTdG9yYWdlQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRDBDNTE1MERBQTkwQjcwMDNCMzgzMSAv
KiBKU1N0b3JhZ2VDdXN0b20uY3BwICovOyB9OworCQk1MUQxMjQ4QjFFNzM2MjdGMDAyQjI4MjAg
LyogTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUQxMjQ4QTFFNzM2MjVDMDAyQjI4MjAgLyogTmV0d29y
a1N0b3JhZ2VTZXNzaW9uQ29jb2EubW0gKi87IH07CisJCTUxRDEyNDhEMUU3MzY0QUEwMDJCMjgy
MCAvKiBDb29raWVDb2NvYS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxRDEyNDhDMUU3MzY0NTYwMDJCMjgyMCAvKiBDb29raWVDb2NvYS5tbSAqLzsg
fTsKIAkJNTFENzIzNkMxQkI2MTc0OTAwNDc4Q0EzIC8qIElEQlJlc3VsdERhdGEuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFENzIzNkExQkI2MEJG
RTAwNDc4Q0EzIC8qIElEQlJlc3VsdERhdGEuY3BwICovOyB9OwogCQk1MUQ3MjM2RDFCQjYxNzQ5
MDA0NzhDQTMgLyogSURCUmVzdWx0RGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTFENzIzNkIxQkI2MEJGRTAwNDc4Q0EzIC8qIElEQlJlc3VsdERh
dGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1
MUQ3RUZFQTFCREU4RjhDMDBFOTNFMTAgLyogVGhyZWFkU2FmZURhdGFCdWZmZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMUZBRUE5MUJEQzk4OUEw
MEI0QUZFNCAvKiBUaHJlYWRTYWZlRGF0YUJ1ZmZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC05NzAzLDYgKzk3MDUsOCBAQAogCQk1MUM4MUI4
ODBDNDQyMkY3MDAxOUVDRTMgLyogRlRQRGlyZWN0b3J5UGFyc2VyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBGVFBEaXJlY3RvcnlQYXJzZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTFDQkZDOTgwRDEwRTQ4MzAwMkRCRjUxIC8qIENhY2hlZEZyYW1lUGxh
dGZvcm1EYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhY2hlZEZyYW1l
UGxhdGZvcm1EYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRDBDNTE1MERB
QTkwQjcwMDNCMzgzMSAvKiBKU1N0b3JhZ2VDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNTdG9yYWdlQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNTFEMTI0OEExRTczNjI1QzAwMkIyODIwIC8qIE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbkNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTmV0
d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTUxRDEyNDhDMUU3MzY0NTYwMDJCMjgyMCAvKiBDb29raWVDb2NvYS5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IENvb2tpZUNvY29hLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1MUQ3MTk2QzE4MTEwNkRGMDAxNkRDNTEgLyogRE9NV2luZG93SW5k
ZXhlZERhdGFiYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERP
TVdpbmRvd0luZGV4ZWREYXRhYmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTUxRDcxOTZEMTgxMTA2REYwMDE2REM1MSAvKiBET01XaW5kb3dJbmRleGVkRGF0YWJhc2UuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NV2luZG93SW5kZXhlZERhdGFiYXNl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRDcxOTZFMTgxMTA2REYwMDE2REM1
MSAvKiBET01XaW5kb3dJbmRleGVkRGF0YWJhc2UuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9
IERPTVdpbmRvd0luZGV4ZWREYXRhYmFzZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0xOTA3OSw5ICsxOTA4MywxMSBAQAogCQk3RTdERTFGRTE5NUNFRjJEMDAzNTM2M0IgLyog
Y29jb2EgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTUx
RDEyNDhDMUU3MzY0NTYwMDJCMjgyMCAvKiBDb29raWVDb2NvYS5tbSAqLywKIAkJCQkzNzkyOTE3
QzE5ODc2NzhGMDBGNEI2NjEgLyogQ3JlZGVudGlhbENvY29hLmggKi8sCiAJCQkJMzc5MjkxN0Ix
OTg3Njc4RjAwRjRCNjYxIC8qIENyZWRlbnRpYWxDb2NvYS5tbSAqLywKIAkJCQk1QzlCODYwQjFD
MjFFM0M2MDAxMTBGMzYgLyogTmV0d29ya0xvYWRNZXRyaWNzLm1tICovLAorCQkJCTUxRDEyNDhB
MUU3MzYyNUMwMDJCMjgyMCAvKiBOZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbSAqLywKIAkJ
CQkzNzJBREEzNzE5N0Y0N0I5MDBGQzUwMUUgLyogUHJvdGVjdGlvblNwYWNlQ29jb2EuaCAqLywK
IAkJCQkzNzJBREEzOTE5N0Y2ODc2MDBGQzUwMUUgLyogUHJvdGVjdGlvblNwYWNlQ29jb2EubW0g
Ki8sCiAJCQkJN0U3REUxRkMxOTVDRUYyNjAwMzUzNjNCIC8qIFJlc291cmNlUmVxdWVzdENvY29h
Lm1tICovLApAQCAtMzAxNTYsNiArMzAxNjIsNyBAQAogCQkJCUNENTI0ODFBMThFMjAwRUQwMDA4
QTA3RCAvKiBEaXNwbGF5U2xlZXBEaXNhYmxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1RDhD
NERCRjE0MjgyMjJDMDAyNkNFNzIgLyogRGlzcGxheVNsZWVwRGlzYWJsZXJDb2NvYS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlGRDMxNjA5MDEyQjAyNkY3MDBDMUEzNTkgLyogRGlzdGFuY2UuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJNTFEMTI0OEIxRTczNjI3RjAwMkIyODIwIC8qIE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbkNvY29hLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQTFFMTE1NDQxMzAxNUMz
RDAwNTRBQzhDIC8qIERpc3RhbnRMaWdodFNvdXJjZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlC
MkYzNEZFOTBFODJGODI3MDBGNjI3Q0QgLyogRE5TQ0ZOZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJRjI5M0IyN0U1NkMxMTJGMzczRkZGMjdFIC8qIEROU1Jlc29sdmVRdWV1ZS5jcHAgaW4gU291
cmNlcyAqLywKQEAgLTMyMTE3LDYgKzMyMTI0LDcgQEAKIAkJCQlCQ0FBOTBDMzBBN0VCQTYwMDA4
QjEyMjkgLyogU2Nyb2xsYmFyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMDkwODdGMTQ0NEZE
QjIwMDAyODkxNyAvKiBTY3JvbGxiYXJUaGVtZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzE0
MDI4QTBFODM2ODA4MDAzMTk3MTcgLyogU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJNTFEMTI0OEQxRTczNjRBQTAwMkIyODIwIC8qIENvb2tpZUNvY29hLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJNDRDOTkxODIwRjNEMUUwRDAwNTg2NjcwIC8qIFNjcm9sbGJh
clRoZW1lSU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNFRjg2OUYwRTg0NEU5RDAwQTg1Q0Q1
IC8qIFNjcm9sbGJhclRoZW1lTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFNzE0MDUxNDIx
NzBCODAwREIzM0JBIC8qIFNjcm9sbGJhclRoZW1lTW9jay5jcHAgaW4gU291cmNlcyAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db29raWVKYXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0Nvb2tpZUphci5jcHAKaW5kZXggZWY5M2RmZjVlMTRlOGYzMTY4ZWJmMWUw
YmE3NmJiYTE5MDIwYTk0OS4uM2U4YTc4NWE3OTAwOGZlMGIwODQ5MDdlYTYyYWZjZDU1YzM0ZTM1
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUphci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUphci5jcHAKQEAgLTgzLDkgKzgzLDQgQEAgdm9p
ZCBkZWxldGVDb29raWUoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBVUkwmIHVybCwg
Y29uc3QgU3RyaW5nJiBjb29raWUKICAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+Y29va2llc1N0
cmF0ZWd5KCktPmRlbGV0ZUNvb2tpZShzdG9yYWdlU2Vzc2lvbihkb2N1bWVudCksIHVybCwgY29v
a2llTmFtZSk7CiB9CiAKLXZvaWQgYWRkQ29va2llKGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCwg
Y29uc3QgVVJMJiB1cmwsIGNvbnN0IENvb2tpZSYgY29va2llKQotewotICAgIHBsYXRmb3JtU3Ry
YXRlZ2llcygpLT5jb29raWVzU3RyYXRlZ3koKS0+YWRkQ29va2llKHN0b3JhZ2VTZXNzaW9uKGRv
Y3VtZW50KSwgdXJsLCBjb29raWUpOwotfQotCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvQ29va2llSmFyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29va2llSmFyLmgK
aW5kZXggMGE1M2Q5NjQ0NTczOGJmNDFkOGQ1ODY3Njg1NWE5NzhjZmQ1MTI3OC4uMjIwYTliOTI2
MDRiMGRhNGNiODA0NzcwMjJjNmQ3MjBjNmVkMDVlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0Nvb2tpZUphci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db29raWVK
YXIuaApAQCAtNDUsNiArNDUsNSBAQCBXRUJDT1JFX0VYUE9SVCBib29sIGNvb2tpZXNFbmFibGVk
KGNvbnN0IERvY3VtZW50Jik7CiBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgY29va2llUmVxdWVzdEhl
YWRlckZpZWxkVmFsdWUoY29uc3QgRG9jdW1lbnQmLCBjb25zdCBVUkwmKTsKIFdFQkNPUkVfRVhQ
T1JUIGJvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBEb2N1bWVudCYsIGNvbnN0IFVSTCYsIFZlY3Rv
cjxDb29raWU+Jik7CiBXRUJDT1JFX0VYUE9SVCB2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBEb2N1
bWVudCYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSk7Ci1XRUJDT1JFX0VY
UE9SVCB2b2lkIGFkZENvb2tpZShjb25zdCBEb2N1bWVudCYsIGNvbnN0IFVSTCYsIGNvbnN0IENv
b2tpZSYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9Db29raWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nvb2tpZS5o
CmluZGV4IDk2MWRmZTUyYTE2NmUyMDAxNjA5ZGU1OGZjN2MzMDczYzdlMjBmNTkuLjcyNGFiYWI0
ZTA2YTAzMzdkZDYzYjJiMDcwZTUwOTk3ZjJkZGYwZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0Nvb2tpZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nvb2tp
ZS5oCkBAIC0yOSw0NyArMjksOTMgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKKyNpZmRlZiBfX09CSkNfXworI2lu
Y2x1ZGUgPG9iamMvb2JqYy5oPgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotICAg
IHN0cnVjdCBDb29raWUgewotICAgICAgICBDb29raWUoKSB7IH0KLQotICAgICAgICBDb29raWUo
Y29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlLCBjb25zdCBTdHJpbmcmIGRv
bWFpbiwKLSAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIHBhdGgsIGRvdWJsZSBleHBpcmVz
LCBib29sIGh0dHBPbmx5LCBib29sIHNlY3VyZSwKLSAgICAgICAgICAgICAgICBib29sIHNlc3Np
b24pCi0gICAgICAgICAgICA6IG5hbWUobmFtZSkKLSAgICAgICAgICAgICwgdmFsdWUodmFsdWUp
Ci0gICAgICAgICAgICAsIGRvbWFpbihkb21haW4pCi0gICAgICAgICAgICAsIHBhdGgocGF0aCkK
LSAgICAgICAgICAgICwgZXhwaXJlcyhleHBpcmVzKQotICAgICAgICAgICAgLCBodHRwT25seSho
dHRwT25seSkKLSAgICAgICAgICAgICwgc2VjdXJlKHNlY3VyZSkKLSAgICAgICAgICAgICwgc2Vz
c2lvbihzZXNzaW9uKQotICAgICAgICB7Ci0gICAgICAgIH0KLQotICAgICAgICBTdHJpbmcgbmFt
ZTsKLSAgICAgICAgU3RyaW5nIHZhbHVlOwotICAgICAgICBTdHJpbmcgZG9tYWluOwotICAgICAg
ICBTdHJpbmcgcGF0aDsKLSAgICAgICAgLy8gRXhwaXJhdGlvbiBkYXRlLCBleHByZXNzZWQgYXMg
bWlsbGlzZWNvbmRzIHNpbmNlIHRoZSBVTklYIGVwb2NoLgotICAgICAgICBkb3VibGUgZXhwaXJl
czsKLSAgICAgICAgYm9vbCBodHRwT25seTsKLSAgICAgICAgYm9vbCBzZWN1cmU7Ci0gICAgICAg
IGJvb2wgc2Vzc2lvbjsKLSAgICB9Oworc3RydWN0IENvb2tpZSB7CisgICAgQ29va2llKCkgeyB9
CiAKLSAgICBzdHJ1Y3QgQ29va2llSGFzaCB7Ci0gICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNo
KGNvbnN0IENvb2tpZSYga2V5KQotICAgICAgICB7IAotICAgICAgICAgICAgcmV0dXJuIFN0cmlu
Z0hhc2g6Omhhc2goa2V5Lm5hbWUpICsgU3RyaW5nSGFzaDo6aGFzaChrZXkuZG9tYWluKSArIFN0
cmluZ0hhc2g6Omhhc2goa2V5LnBhdGgpICsga2V5LnNlY3VyZTsKLSAgICAgICAgfQorICAgIENv
b2tpZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUsIGNvbnN0IFN0cmlu
ZyYgZG9tYWluLCBjb25zdCBTdHJpbmcmIHBhdGgsIGRvdWJsZSBleHBpcmVzLCBib29sIGh0dHBP
bmx5LCBib29sIHNlY3VyZSwgYm9vbCBzZXNzaW9uKQorICAgICAgICA6IG5hbWUobmFtZSkKKyAg
ICAgICAgLCB2YWx1ZSh2YWx1ZSkKKyAgICAgICAgLCBkb21haW4oZG9tYWluKQorICAgICAgICAs
IHBhdGgocGF0aCkKKyAgICAgICAgLCBleHBpcmVzKGV4cGlyZXMpCisgICAgICAgICwgaHR0cE9u
bHkoaHR0cE9ubHkpCisgICAgICAgICwgc2VjdXJlKHNlY3VyZSkKKyAgICAgICAgLCBzZXNzaW9u
KHNlc3Npb24pCisgICAgeworICAgIH0KKworICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZv
aWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBz
dGF0aWMgYm9vbCBkZWNvZGUoRGVjb2RlciYsIENvb2tpZSYpOworCisjaWZkZWYgX19PQkpDX18K
KyAgICBvcGVyYXRvciBOU0hUVFBDb29raWUgKigpIGNvbnN0OworI2VuZGlmCisKKyAgICBTdHJp
bmcgbmFtZTsKKyAgICBTdHJpbmcgdmFsdWU7CisgICAgU3RyaW5nIGRvbWFpbjsKKyAgICBTdHJp
bmcgcGF0aDsKKyAgICAvLyBFeHBpcmF0aW9uIGRhdGUsIGV4cHJlc3NlZCBhcyBtaWxsaXNlY29u
ZHMgc2luY2UgdGhlIFVOSVggZXBvY2guCisgICAgZG91YmxlIGV4cGlyZXM7CisgICAgYm9vbCBo
dHRwT25seTsKKyAgICBib29sIHNlY3VyZTsKKyAgICBib29sIHNlc3Npb247Cit9OworCitzdHJ1
Y3QgQ29va2llSGFzaCB7CisgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgQ29va2llJiBr
ZXkpCisgICAgeyAKKyAgICAgICAgcmV0dXJuIFN0cmluZ0hhc2g6Omhhc2goa2V5Lm5hbWUpICsg
U3RyaW5nSGFzaDo6aGFzaChrZXkuZG9tYWluKSArIFN0cmluZ0hhc2g6Omhhc2goa2V5LnBhdGgp
ICsga2V5LnNlY3VyZTsKKyAgICB9CisKKyAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBDb29r
aWUmIGEsIGNvbnN0IENvb2tpZSYgYikKKyAgICB7CisgICAgICAgIHJldHVybiBhLm5hbWUgPT0g
Yi5uYW1lICYmIGEuZG9tYWluID09IGIuZG9tYWluICYmIGEucGF0aCA9PSBiLnBhdGggJiYgYS5z
ZWN1cmUgPT0gYi5zZWN1cmU7CisgICAgfQorfTsKKwordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4K
K3ZvaWQgQ29va2llOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNv
ZGVyIDw8IG5hbWU7CisgICAgZW5jb2RlciA8PCB2YWx1ZTsKKyAgICBlbmNvZGVyIDw8IGRvbWFp
bjsKKyAgICBlbmNvZGVyIDw8IHBhdGg7CisgICAgZW5jb2RlciA8PCBleHBpcmVzOworICAgIGVu
Y29kZXIgPDwgaHR0cE9ubHk7CisgICAgZW5jb2RlciA8PCBzZWN1cmU7CisgICAgZW5jb2RlciA8
PCBzZXNzaW9uOworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorYm9vbCBDb29raWU6OmRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyLCBDb29raWUmIGNvb2tpZSkKK3sKKyAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKGNvb2tpZS5uYW1lKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUoY29va2llLnZhbHVlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoY29va2llLmRvbWFpbikpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNvb2tpZS5wYXRoKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoY29va2llLmV4cGlyZXMpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShjb29raWUuaHR0cE9ubHkp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShjb29raWUu
c2VjdXJlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
Y29va2llLnNlc3Npb24pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1
ZTsKK30KIAotICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBDb29raWUmIGEsIGNvbnN0
IENvb2tpZSYgYikKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGEubmFtZSA9PSBiLm5h
bWUgJiYgYS5kb21haW4gPT0gYi5kb21haW4gJiYgYS5wYXRoID09IGIucGF0aCAmJiBhLnNlY3Vy
ZSA9PSBiLnNlY3VyZTsKLSAgICAgICAgfQotICAgIH07CiB9CiAKIG5hbWVzcGFjZSBXVEYgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29va2llc1N0cmF0ZWd5LmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db29raWVzU3RyYXRlZ3kuaAppbmRleCA2MDVkYzFmNDQy
ODJhYmQ4NDhhZThmODQ3NzQ1NWU3ZDdiZGM0YjIwLi5lMDQ5YmUzNTA1NGRhMjRlMDIzZjljYmVl
MDUyMGEzMThlNzMxZjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db29r
aWVzU3RyYXRlZ3kuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db29raWVzU3RyYXRl
Z3kuaApAQCAtNDUsNyArNDUsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcgY29va2ll
UmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoU2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFydHks
IGNvbnN0IFVSTCYpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYs
IFZlY3RvcjxDb29raWU+JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVDb29raWUoY29u
c3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBjb29r
aWVOYW1lKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGFkZENvb2tpZShjb25zdCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mLCBjb25zdCBVUkwmLCBjb25zdCBDb29raWUmKSA9IDA7CiAKIHByb3RlY3Rl
ZDoKICAgICB2aXJ0dWFsIH5Db29raWVzU3RyYXRlZ3koKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCmluZGV4
IDYyY2YyYWRmNWM0MjZhYTVjMWFlNjY0YTY2ZGZmZWRjODQzM2UwMmEuLmYxNDg5YzZiNDJhMWQ0
NWFmOWNhYTYyY2EyNmQxNzA1YjQ2YjM3NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaApAQCAtNDEsMTIgKzQx
LDE4IEBACiB0eXBlZGVmIHN0cnVjdCBfU291cENvb2tpZUphciBTb3VwQ29va2llSmFyOwogI2Vu
ZGlmCiAKKyNpZmRlZiBfX09CSkNfXworI2luY2x1ZGUgPG9iamMvb2JqYy5oPgorI2VuZGlmCisK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTmV0d29ya2luZ0NvbnRleHQ7CiBjbGFzcyBS
ZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBTb3VwTmV0d29ya1Nlc3Npb247CiAKK3N0cnVjdCBDb29r
aWU7CisKIGNsYXNzIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiB7CiAgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoTmV0d29ya1N0b3JhZ2VTZXNzaW9uKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CkBAIC02MSw2ICs2NywxMCBAQCBwdWJsaWM6CiAgICAgU2Vzc2lvbklEIHNlc3Npb25J
RCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Vzc2lvbklEOyB9CiAgICAgQ3JlZGVudGlhbFN0b3JhZ2Um
IGNyZWRlbnRpYWxTdG9yYWdlKCkgeyByZXR1cm4gbV9jcmVkZW50aWFsU3RvcmFnZTsgfQogCisj
aWZkZWYgX19PQkpDX18KKyAgICBOU0hUVFBDb29raWVTdG9yYWdlICpuc0Nvb2tpZVN0b3JhZ2Uo
KSBjb25zdDsKKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRlVSTENPTk5F
Q1RJT04pCiAgICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uKFNlc3Npb25JRCwgUmV0YWluUHRyPENG
VVJMU3RvcmFnZVNlc3Npb25SZWY+KTsKIApAQCAtOTAsNiArMTAwLDggQEAgcHVibGljOgogICAg
IE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0KCkgY29uc3Q7CiAjZW5kaWYKIAorICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc2V0Q29va2llcyhjb25zdCBWZWN0b3I8Q29va2llPiYsIGNvbnN0IFVS
TCYsIGNvbnN0IFVSTCYgbWFpbkRvY3VtZW50VVJMKTsKKwogcHJpdmF0ZToKICAgICBzdGF0aWMg
SGFzaE1hcDxTZXNzaW9uSUQsIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+
PiYgZ2xvYmFsU2Vzc2lvbk1hcCgpOwogICAgIFNlc3Npb25JRCBtX3Nlc3Npb25JRDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUGxhdGZvcm1Db29raWVKYXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUGxhdGZvcm1Db29raWVKYXIuaApp
bmRleCBkNzI3MGM3Y2E2OWQ0YmI4MzNlZDIxODY0YTdhNzA3MWZkZDBmOGNhLi5kMDgyYzhiNmNk
YjNlOGIzMWJmZjczMDRjMWNmZDFlMzUwN2EyNDg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1BsYXRmb3JtQ29va2llSmFyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9QbGF0Zm9ybUNvb2tpZUphci5oCkBAIC00Niw3ICs0Niw2IEBA
IFdFQkNPUkVfRVhQT1JUIGJvb2wgY29va2llc0VuYWJsZWQoY29uc3QgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uJiwgY29uc3QgVVJMJiBmaXJzCiBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgY29va2llUmVx
dWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3Qg
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmKTsKIFdFQkNPUkVfRVhQT1JUIGJvb2wgZ2V0UmF3
Q29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmIGZpcnN0UGFy
dHksIGNvbnN0IFVSTCYsIFZlY3RvcjxDb29raWU+Jik7CiBXRUJDT1JFX0VYUE9SVCB2b2lkIGRl
bGV0ZUNvb2tpZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmLCBjb25z
dCBTdHJpbmcmKTsKLVdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkQ29va2llKGNvbnN0IE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFVSTCYsIGNvbnN0IENvb2tpZSYpOwogV0VCQ09SRV9FWFBP
UlQgdm9pZCBnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Np
b24mLCBIYXNoU2V0PFN0cmluZz4mIGhvc3RuYW1lcyk7CiBXRUJDT1JFX0VYUE9SVCB2b2lkIGRl
bGV0ZUNvb2tpZXNGb3JIb3N0bmFtZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29u
c3QgVmVjdG9yPFN0cmluZz4mIGNvb2tpZUhvc3ROYW1lcyk7CiBXRUJDT1JFX0VYUE9SVCB2b2lk
IGRlbGV0ZUFsbENvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZUphckNGTmV0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ29va2llSmFyQ0ZOZXQuY3Bw
CmluZGV4IDU2MzA1NWQ2NjY2YTk5MmRmNjk0NWYzMjI4YzZlZWNmZjI0MGYxYzEuLmNmOTJmZWFj
MWJiNTRiOWZlMDkzODAyYzMwMWUxNzU5MmVlZGFkYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ29va2llSmFyQ0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ29va2llSmFyQ0ZOZXQuY3BwCkBAIC0yMTgsMTIg
KzIxOCw2IEBAIHZvaWQgZGVsZXRlQ29va2llKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYg
c2Vzc2lvbiwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0CiAgICAgfQogfQogCi12b2lkIGFkZENv
b2tpZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmLCBjb25zdCBDb29r
aWUmKQotewotICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgdGhpcyBjb21tYW5kLiA8aHR0cHM6Ly93
ZWJraXQub3JnL2IvMTU2Mjk4PgotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KIHZvaWQgZ2V0
SG9zdG5hbWVzV2l0aENvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9u
LCBIYXNoU2V0PFN0cmluZz4mIGhvc3RuYW1lcykKIHsKICAgICBSZXRhaW5QdHI8Q0ZBcnJheVJl
Zj4gY29va2llc0NGID0gYWRvcHRDRihDRkhUVFBDb29raWVTdG9yYWdlQ29weUNvb2tpZXMoc2Vz
c2lvbi5jb29raWVTdG9yYWdlKCkuZ2V0KCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5l
dC5jcHAKaW5kZXggYmEwNmE1YjQxNGRjYjk0YzcyOTU5YzM1Yzk5N2QzZDdiMjM2OTJiNC4uMzRl
ZWVhMTZlMDdmNjlmNDRkNDNmNzIwMWM2M2ViNzNiMDY2ZTc3ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFn
ZVNlc3Npb25DRk5ldC5jcHAKQEAgLTE2Niw0ICsxNjYsMTEgQEAgdm9pZCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OnNldFNob3VsZFBhcnRpdGlvbkNvb2tpZXNGb3JIb3N0cyhjb25zdCBWZWN0b3I8
U3RyaW4KIAogI2VuZGlmIC8vIEhBVkUoQ0ZORVRXT1JLX1NUT1JBR0VfUEFSVElUSU9OSU5HKQog
CisjaWYgIVBMQVRGT1JNKENPQ09BKQordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldENv
b2tpZXMoY29uc3QgVmVjdG9yPENvb2tpZT4mLCBjb25zdCBVUkwmLCBjb25zdCBVUkwmKQorewor
ICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcy4gPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE1NjI5
OD4KK30KKyNlbmRpZgorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NvY29hL0Nvb2tpZUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jb2NvYS9Db29raWVDb2NvYS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMTEyMmIxYjI4NTdjMzlmMGZi
NjEyYWNmMjZkNTEzNjc4MDgxOTVjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jb2NvYS9Db29raWVDb2NvYS5tbQpAQCAtMCwwICsxLDUzIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJj
b25maWcuaCIKKyNpbXBvcnQgIkNvb2tpZS5oIgorCisjaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhj
ZXB0aW9ucy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0Nvb2tpZTo6b3BlcmF0b3IgTlNI
VFRQQ29va2llICooKSBjb25zdAoreworICAgIC8vIEZJWE1FOiBleGlzdGluZyBBUElzIGRvIG5v
dCBwcm92aWRlIGEgd2F5IHRvIHNldCBodHRwT25seSB3aXRob3V0IHBhcnNpbmcgaGVhZGVycyBm
cm9tIHNjcmF0Y2guCisKKyAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKworICAgIHJl
dHVybiBbTlNIVFRQQ29va2llIGNvb2tpZVdpdGhQcm9wZXJ0aWVzOkB7CisgICAgICAgIE5TSFRU
UENvb2tpZU5hbWU6IG5hbWUsCisgICAgICAgIE5TSFRUUENvb2tpZVZhbHVlOiB2YWx1ZSwKKyAg
ICAgICAgTlNIVFRQQ29va2llRG9tYWluOiBkb21haW4sCisgICAgICAgIE5TSFRUUENvb2tpZVBh
dGg6IHBhdGgsCisgICAgICAgIE5TSFRUUENvb2tpZURvbWFpbjogZG9tYWluLAorICAgICAgICBO
U0hUVFBDb29raWVTZWN1cmU6IEAoc2VjdXJlKSwKKyAgICAgICAgTlNIVFRQQ29va2llRGlzY2Fy
ZDogQChzZXNzaW9uKSwKKyAgICAgICAgTlNIVFRQQ29va2llRXhwaXJlczogW05TRGF0ZSBkYXRl
V2l0aFRpbWVJbnRlcnZhbFNpbmNlMTk3MDpleHBpcmVzIC8gMTAwMC4wXSwKKyAgICAgICAgfV07
CisKKyAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2Ev
TmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ0
YWVhYjcwZTk5YjVmYTBhODRlY2ZkMzU3ZTM0NTgzZGVmYzAxZTAKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdlU2Vz
c2lvbkNvY29hLm1tCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUg
QXBwbGUsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiTmV0d29y
a1N0b3JhZ2VTZXNzaW9uLmgiCisKKyNpbXBvcnQgIkNvb2tpZS5oIgorI2ltcG9ydCAiVVJMLmgi
CisjaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRDb29raWVzKGNvbnN0IFZlY3Rv
cjxDb29raWU+JiBjb29raWVzLCBjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBtYWluRG9jdW1l
bnRVUkwpCit7CisgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBuc0Nvb2tpZXMgPSBhZG9w
dE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6Y29va2llcy5zaXpl
KCldKTsKKyAgICBmb3IgKGF1dG8gY29va2llIDogY29va2llcykKKyAgICAgICAgW25zQ29va2ll
cyBhZGRPYmplY3Q6KE5TSFRUUENvb2tpZSAqKWNvb2tpZV07CisKKyAgICBCRUdJTl9CTE9DS19P
QkpDX0VYQ0VQVElPTlM7CisgICAgW25zQ29va2llU3RvcmFnZSgpIHNldENvb2tpZXM6bnNDb29r
aWVzLmdldCgpIGZvclVSTDooTlNVUkwgKil1cmwgbWFpbkRvY3VtZW50VVJMOihOU1VSTCAqKW1h
aW5Eb2N1bWVudFVSTF07CisgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKK30KKworTlNI
VFRQQ29va2llU3RvcmFnZSAqTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpuc0Nvb2tpZVN0b3JhZ2Uo
KSBjb25zdAoreworICAgIGF1dG8gY2ZDb29raWVTdG9yYWdlID0gY29va2llU3RvcmFnZSgpOwor
ICAgIGlmICghY2ZDb29raWVTdG9yYWdlIHx8IFtOU0hUVFBDb29raWVTdG9yYWdlIHNoYXJlZEhU
VFBDb29raWVTdG9yYWdlXS5fY29va2llU3RvcmFnZSA9PSBjZkNvb2tpZVN0b3JhZ2UpCisgICAg
ICAgIHJldHVybiBbTlNIVFRQQ29va2llU3RvcmFnZSBzaGFyZWRIVFRQQ29va2llU3RvcmFnZV07
CisKKyAgICByZXR1cm4gW1tbTlNIVFRQQ29va2llU3RvcmFnZSBhbGxvY10gX2luaXRXaXRoQ0ZI
VFRQQ29va2llU3RvcmFnZTpjZkNvb2tpZVN0b3JhZ2UuZ2V0KCldIGF1dG9yZWxlYXNlXTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckN1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckN1cmwuY3BwCmluZGV4IDI0YTJjNzRlZTAwN2M0
Mzc1N2MxYTQ4ZjkyNmQyNTIzMjA2OWY2MGQuLjliMWJiNDc3MDMwYTA3NmU1NTVmOWNlNmJlM2I5
MWI4ODAwNjk2NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9Db29raWVKYXJDdXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ29va2llSmFyQ3VybC5jcHAKQEAgLTMzMiwxMiArMzMyLDYgQEAgdm9pZCBkZWxl
dGVDb29raWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiwgY29uc3Qg
U3RyaW5nJikKICAgICAvLyBGSVhNRTogTm90IHlldCBpbXBsZW1lbnRlZAogfQogCi12b2lkIGFk
ZENvb2tpZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmLCBjb25zdCBD
b29raWUmKQotewotICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgdGhpcyBjb21tYW5kLiA8aHR0cHM6
Ly93ZWJraXQub3JnL2IvMTU2Mjk2PgotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KIHZvaWQg
Z2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgSGFz
aFNldDxTdHJpbmc+JiBob3N0bmFtZXMpCiB7CiAgICAgLy8gRklYTUU6IE5vdCB5ZXQgaW1wbGVt
ZW50ZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Nv
b2tpZUphck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Nvb2tp
ZUphck1hYy5tbQppbmRleCBjN2NjMGYwOWJiMjU0NTg1ZGQ5YTdmNTlkMzU0MjJkNjFiMGVmMjZi
Li4yM2Y3MDE1ZTViOTQ5ODM4MjgxZTE5MmUzMjJlM2RmOTVlZjBmMjUzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9Db29raWVKYXJNYWMubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQ29va2llSmFyTWFjLm1tCkBAIC0z
MSwxMCArMzEsNiBAQAogI2ltcG9ydCAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgogI2ltcG9y
dCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KIAotbmFtZXNwYWNlIFdlYkNvcmUgewotc3Rh
dGljIE5TSFRUUENvb2tpZVN0b3JhZ2UgKmNvb2tpZVN0b3JhZ2UoY29uc3QgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uJik7Ci19Ci0KICNpZiAhVVNFKENGVVJMQ09OTkVDVElPTikKIAogI2ltcG9ydCAi
Q29va2llLmgiCkBAIC0yNjAsMzggKzI1Niw2IEBAIHZvaWQgZGVsZXRlQ29va2llKGNvbnN0IE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0CiAg
ICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIH0KIAotdm9pZCBhZGRDb29raWUoY29uc3Qg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIHVybCwgY29uc3QgQ29v
a2llJiBjb29raWUpCi17Ci0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwotCi0gICAg
UmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3JhZ2UgPSBzZXNzaW9u
LmNvb2tpZVN0b3JhZ2UoKTsKLQotICAgIC8vIEZJWE1FOiBleGlzdGluZyBBUElzIGRvIG5vdCBw
cm92aWRlIGEgd2F5IHRvIHNldCBodHRwT25seSB3aXRob3V0IHBhcnNpbmcgaGVhZGVycyBmcm9t
IHNjcmF0Y2guCi0KLSAgICBOU1VSTCAqb3JpZ2luVVJMID0gdXJsOwotICAgIE5TSFRUUENvb2tp
ZSAqaHR0cENvb2tpZSA9IFtOU0hUVFBDb29raWUgY29va2llV2l0aFByb3BlcnRpZXM6QHsKLSAg
ICAgICAgTlNIVFRQQ29va2llTmFtZTogY29va2llLm5hbWUsCi0gICAgICAgIE5TSFRUUENvb2tp
ZVZhbHVlOiBjb29raWUudmFsdWUsCi0gICAgICAgIE5TSFRUUENvb2tpZURvbWFpbjogY29va2ll
LmRvbWFpbiwKLSAgICAgICAgTlNIVFRQQ29va2llUGF0aDogY29va2llLnBhdGgsCi0gICAgICAg
IE5TSFRUUENvb2tpZU9yaWdpblVSTDogb3JpZ2luVVJMLAotICAgICAgICBOU0hUVFBDb29raWVT
ZWN1cmU6IEAoY29va2llLnNlY3VyZSksCi0gICAgICAgIE5TSFRUUENvb2tpZURpc2NhcmQ6IEAo
Y29va2llLnNlc3Npb24pLAotICAgICAgICBOU0hUVFBDb29raWVFeHBpcmVzOiBbTlNEYXRlIGRh
dGVXaXRoVGltZUludGVydmFsU2luY2UxOTcwOmNvb2tpZS5leHBpcmVzIC8gMTAwMC4wXSwKLSAg
ICB9XTsKLQotI2lmICFVU0UoQ0ZVUkxDT05ORUNUSU9OKQotICAgIGlmICghY29va2llU3RvcmFn
ZSkgewotICAgICAgICBbV2ViQ29yZTo6Y29va2llU3RvcmFnZShzZXNzaW9uKSBzZXRDb29raWU6
aHR0cENvb2tpZV07Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5kaWYgLy8gIVVTRShDRlVS
TENPTk5FQ1RJT04pCi0KLSAgICBDRkhUVFBDb29raWVTdG9yYWdlU2V0Q29va2llKGNvb2tpZVN0
b3JhZ2UuZ2V0KCksIFtodHRwQ29va2llIF9DRkhUVFBDb29raWVdKTsKLQotICAgIEVORF9CTE9D
S19PQkpDX0VYQ0VQVElPTlM7Ci19Ci0KIHZvaWQgZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoY29u
c3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBIYXNoU2V0PFN0cmluZz4mIGhvc3Ru
YW1lcykKIHsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CkBAIC0zMTUsMTUgKzI3
OSw2IEBAIHZvaWQgZGVsZXRlQWxsQ29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24m
IHNlc3Npb24pCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIE5TSFRUUENvb2tpZVN0
b3JhZ2UgKmNvb2tpZVN0b3JhZ2UoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9u
KQotewotICAgIGF1dG8gY29va2llU3RvcmFnZSA9IHNlc3Npb24uY29va2llU3RvcmFnZSgpOwot
ICAgIGlmICghY29va2llU3RvcmFnZSB8fCBbTlNIVFRQQ29va2llU3RvcmFnZSBzaGFyZWRIVFRQ
Q29va2llU3RvcmFnZV0uX2Nvb2tpZVN0b3JhZ2UgPT0gY29va2llU3RvcmFnZSkKLSAgICAgICAg
cmV0dXJuIFtOU0hUVFBDb29raWVTdG9yYWdlIHNoYXJlZEhUVFBDb29raWVTdG9yYWdlXTsKLQot
ICAgIHJldHVybiBbW1tOU0hUVFBDb29raWVTdG9yYWdlIGFsbG9jXSBfaW5pdFdpdGhDRkhUVFBD
b29raWVTdG9yYWdlOmNvb2tpZVN0b3JhZ2UuZ2V0KCldIGF1dG9yZWxlYXNlXTsKLX0KLQogdm9p
ZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYg
c2Vzc2lvbiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGhvc3RuYW1lcykKIHsKICAgICBCRUdJTl9C
TE9DS19PQkpDX0VYQ0VQVElPTlM7CkBAIC0zNDgsNyArMzAzLDcgQEAgdm9pZCBkZWxldGVDb29r
aWVzRm9ySG9zdG5hbWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29u
c3QgVmVjdG8KICAgICAgICAgICAgIHdrRGVsZXRlSFRUUENvb2tpZShjb29raWVTdG9yYWdlLmdl
dCgpLCBjb29raWUuZ2V0KCkpOwogICAgIH0KIAotICAgIFtXZWJDb3JlOjpjb29raWVTdG9yYWdl
KHNlc3Npb24pIF9zYXZlQ29va2llc107CisgICAgW3Nlc3Npb24ubnNDb29raWVTdG9yYWdlKCkg
X3NhdmVDb29raWVzXTsKIAogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiB9CkBAIC0z
NjEsNyArMzE2LDcgQEAgdm9pZCBkZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZShjb25zdCBO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIHN0ZDo6Y2gKICAgICBOU1RpbWVJbnRlcnZh
bCB0aW1lSW50ZXJ2YWwgPSBzdGQ6OmNocm9ubzo6ZHVyYXRpb25fY2FzdDxzdGQ6OmNocm9ubzo6
ZHVyYXRpb248ZG91YmxlPj4odGltZVBvaW50LnRpbWVfc2luY2VfZXBvY2goKSkuY291bnQoKTsK
ICAgICBOU0RhdGUgKmRhdGUgPSBbTlNEYXRlIGRhdGVXaXRoVGltZUludGVydmFsU2luY2UxOTcw
OnRpbWVJbnRlcnZhbF07CiAKLSAgICBOU0hUVFBDb29raWVTdG9yYWdlICpzdG9yYWdlID0gY29v
a2llU3RvcmFnZShzZXNzaW9uKTsKKyAgICBhdXRvICpzdG9yYWdlID0gc2Vzc2lvbi5uc0Nvb2tp
ZVN0b3JhZ2UoKTsKIAogICAgIFtzdG9yYWdlIHJlbW92ZUNvb2tpZXNTaW5jZURhdGU6ZGF0ZV07
CiAgICAgW3N0b3JhZ2UgX3NhdmVDb29raWVzXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvc291cC9Db29raWVKYXJTb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvc291cC9Db29raWVKYXJTb3VwLmNwcAppbmRleCAzMWYwMDlkMTdj
NGRmYzQ1ZjI0ZTQ3YjRjMGI4ZmQyMGQ1NjEwMDY0Li5mMjQzOGM3YjdhZjRhMjBlZDg5ZGYxZjBl
OWNmZGQ2MGFjM2MyMDI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL3NvdXAvQ29va2llSmFyU291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9zb3VwL0Nvb2tpZUphclNvdXAuY3BwCkBAIC0xNTIsMjUgKzE1Miw2IEBAIHN0YXRp
YyBTb3VwRGF0ZSogbXNUb1NvdXBEYXRlKGRvdWJsZSBtcykKICAgICByZXR1cm4gc291cF9kYXRl
X25ldyh5ZWFyLCBtb250aEZyb21EYXlJblllYXIoZGF5T2ZZZWFyLCBsZWFwWWVhciksIGRheUlu
TW9udGhGcm9tRGF5SW5ZZWFyKGRheU9mWWVhciwgbGVhcFllYXIpLCBtc1RvSG91cnMobXMpLCBt
c1RvTWludXRlcyhtcyksIHN0YXRpY19jYXN0PGludD4obXMgLyAxMDAwKSAlIDYwKTsKIH0KIAot
c3RhdGljIFNvdXBDb29raWUqIHRvU291cENvb2tpZShjb25zdCBDb29raWUmIGNvb2tpZSkKLXsK
LSAgICBTb3VwQ29va2llKiBzb3VwQ29va2llID0gc291cF9jb29raWVfbmV3KGNvb2tpZS5uYW1l
LnV0ZjgoKS5kYXRhKCksIGNvb2tpZS52YWx1ZS51dGY4KCkuZGF0YSgpLAotICAgICAgICBjb29r
aWUuZG9tYWluLnV0ZjgoKS5kYXRhKCksIGNvb2tpZS5wYXRoLnV0ZjgoKS5kYXRhKCksIC0xKTsK
LSAgICBzb3VwX2Nvb2tpZV9zZXRfaHR0cF9vbmx5KHNvdXBDb29raWUsIGNvb2tpZS5odHRwT25s
eSk7Ci0gICAgc291cF9jb29raWVfc2V0X3NlY3VyZShzb3VwQ29va2llLCBjb29raWUuc2VjdXJl
KTsKLSAgICBpZiAoIWNvb2tpZS5zZXNzaW9uKSB7Ci0gICAgICAgIFNvdXBEYXRlKiBkYXRlID0g
bXNUb1NvdXBEYXRlKGNvb2tpZS5leHBpcmVzKTsKLSAgICAgICAgc291cF9jb29raWVfc2V0X2V4
cGlyZXMoc291cENvb2tpZSwgZGF0ZSk7Ci0gICAgICAgIHNvdXBfZGF0ZV9mcmVlKGRhdGUpOwot
ICAgIH0KLSAgICByZXR1cm4gc291cENvb2tpZTsKLX0KLQotdm9pZCBhZGRDb29raWUoY29uc3Qg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmLCBjb25zdCBDb29raWUm
IGNvb2tpZSkKLXsKLSAgICBzb3VwX2Nvb2tpZV9qYXJfYWRkX2Nvb2tpZShzZXNzaW9uLmNvb2tp
ZVN0b3JhZ2UoKSwgdG9Tb3VwQ29va2llKGNvb2tpZSkpOwotfQotCiB2b2lkIGdldEhvc3RuYW1l
c1dpdGhDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgSGFzaFNl
dDxTdHJpbmc+JiBob3N0bmFtZXMpCiB7CiAgICAgR1VuaXF1ZVB0cjxHU0xpc3Q+IGNvb2tpZXMo
c291cF9jb29raWVfamFyX2FsbF9jb29raWVzKHNlc3Npb24uY29va2llU3RvcmFnZSgpKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0
b3JhZ2VTZXNzaW9uU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3Nv
dXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHAKaW5kZXggODQxNzY5MWU4NWU3NTJhYzdl
ZTViZTU3NWY0MWM5OGE0ZmNiMGE1OS4uYzljNzA0MTAzNWJlM2FjZGRmNDg5NDU4YWZiNjU4MTZj
YTUxMDljMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3Vw
L05ldHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcApAQCAtMjc0LDYg
KzI3NCwyNyBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2F2ZUNyZWRlbnRpYWxUb1Bl
cnNpc3RlbnRTdG9yYWdlKGNvbnN0IFByb3RlY3Rpb25TcAogI2VuZGlmCiB9CiAKK3N0YXRpYyBT
b3VwQ29va2llKiB0b1NvdXBDb29raWUoY29uc3QgQ29va2llJiBjb29raWUpCit7CisgICAgU291
cENvb2tpZSogc291cENvb2tpZSA9IHNvdXBfY29va2llX25ldyhjb29raWUubmFtZS51dGY4KCku
ZGF0YSgpLCBjb29raWUudmFsdWUudXRmOCgpLmRhdGEoKSwKKyAgICAgICAgY29va2llLmRvbWFp
bi51dGY4KCkuZGF0YSgpLCBjb29raWUucGF0aC51dGY4KCkuZGF0YSgpLCAtMSk7CisgICAgc291
cF9jb29raWVfc2V0X2h0dHBfb25seShzb3VwQ29va2llLCBjb29raWUuaHR0cE9ubHkpOworICAg
IHNvdXBfY29va2llX3NldF9zZWN1cmUoc291cENvb2tpZSwgY29va2llLnNlY3VyZSk7CisgICAg
aWYgKCFjb29raWUuc2Vzc2lvbikgeworICAgICAgICBTb3VwRGF0ZSogZGF0ZSA9IG1zVG9Tb3Vw
RGF0ZShjb29raWUuZXhwaXJlcyk7CisgICAgICAgIHNvdXBfY29va2llX3NldF9leHBpcmVzKHNv
dXBDb29raWUsIGRhdGUpOworICAgICAgICBzb3VwX2RhdGVfZnJlZShkYXRlKTsKKyAgICB9Cisg
ICAgcmV0dXJuIHNvdXBDb29raWU7Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpz
ZXRDb29raWVzKGNvbnN0IFZlY3RvcjxDb29raWU+JiBjb29raWVzLCBjb25zdCBVUkwmLCBjb25z
dCBVUkwmKQoreworICAgIGZvciAoYXV0byBjb29raWUgOiBjb29raWVzKQorICAgICAgICBzb3Vw
X2Nvb2tpZV9qYXJfYWRkX2Nvb2tpZShjb29raWVTdG9yYWdlKCksIHRvU291cENvb2tpZShjb29r
aWUpKTsKK30KKworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBVU0UoU09V
UCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRm
b3JtU3RyYXRlZ2llcy5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxh
dGZvcm1TdHJhdGVnaWVzLmgKaW5kZXggYTYwMjcxYjI2NTFmNGQyNWViMzc0MmEyNjI5OWVlMGEw
N2FjZGI3OC4uY2E5MzhiZWQ3OGYyN2NjMGE4YTc0MmYwNDQ1N2U4NTYwMDEyNTc0MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVn
aWVzLmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1T
dHJhdGVnaWVzLmgKQEAgLTU1LDcgKzU1LDYgQEAgcHJpdmF0ZToKICAgICBTdHJpbmcgY29va2ll
UmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoV2ViQ29yZTo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3Jl
OjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlVSTCYpIG92ZXJyaWRlOwogICAgIGJv
b2wgZ2V0UmF3Q29va2llcyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBj
b25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlVSTCYsIFZlY3Rv
cjxXZWJDb3JlOjpDb29raWU+Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkZWxldGVDb29raWUoY29u
c3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiwg
Y29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBhZGRDb29raWUoY29uc3QgV2ViQ29y
ZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgV2Vi
Q29yZTo6Q29va2llJikgb3ZlcnJpZGU7CiAKICAgICAvLyBXZWJDb3JlOjpQYXN0ZWJvYXJkU3Ry
YXRlZ3kKICNpZiBQTEFURk9STShJT1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0gYi9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KaW5kZXggMTlmZjVlMGJl
ZDA0MjYwNGNlY2RhZTE2ZTcxMzMxMGRhMjQ3NTM2Yi4uYWMyZmI0NDNkYWNhN2Y3NzY3NTY2Y2Zi
MjJhZmY3OWQ5NTEwNTNiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQpAQCAtMTEwLDExICsxMTAsNiBA
QCB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6ZGVsZXRlQ29va2llKGNvbnN0IE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgYwogICAgIFdlYkNvcmU6OmRlbGV0ZUNvb2tpZShzZXNz
aW9uLCB1cmwsIGNvb2tpZU5hbWUpOwogfQogCi12b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
YWRkQ29va2llKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJM
JiB1cmwsIGNvbnN0IENvb2tpZSYgY29va2llKQotewotICAgIFdlYkNvcmU6OmFkZENvb2tpZShz
ZXNzaW9uLCB1cmwsIGNvb2tpZSk7Ci19Ci0KIHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpn
ZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUpCiB7CiAgICAgUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5nZXRUeXBlcyh0
eXBlcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggMTQxNjI0MmYxMmUxYTFi
ZjBjYTY0MTliZjAzNTczNmE0MDIxZTgzNC4uMWY5MmNlOGY4OTQwNGY3OTZjOWRlZmI5ZTc5YzNm
ZTNmYTJmYzRhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtMjc5LDExICsy
NzksNiBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkZWxldGVDb29raWUo
U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJgogICAgIFdlYkNvcmU6OmRlbGV0ZUNvb2tp
ZShzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpLCB1cmwsIGNvb2tpZU5hbWUpOwogfQogCi12b2lk
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjphZGRDb29raWUoU2Vzc2lvbklEIHNlc3Np
b25JRCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IENvb2tpZSYgY29va2llKQotewotICAgIFdlYkNv
cmU6OmFkZENvb2tpZShzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpLCB1cmwsIGNvb2tpZSk7Ci19
Ci0KIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlZ2lzdGVyRmlsZUJsb2JV
UkwoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU2FuZGJveEV4dGVu
c2lvbjo6SGFuZGxlJiBleHRlbnNpb25IYW5kbGUsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUp
CiB7CiAgICAgUmVmUHRyPFNhbmRib3hFeHRlbnNpb24+IGV4dGVuc2lvbiA9IFNhbmRib3hFeHRl
bnNpb246OmNyZWF0ZShleHRlbnNpb25IYW5kbGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgK
aW5kZXggOTcyOTMxNGQ2NzdmOTEzYmYzNTFkZmIwNTYwOGY5YjljYTgwOTUwZi4uMjRjZjBiMGY2
NDIyYmQ2MmIyYzgxNzgwYjgzMGRkNDQ2YTBhZjNlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5oCkBAIC05MSw3ICs5MSw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb29raWVSZXF1ZXN0SGVh
ZGVyRmllbGRWYWx1ZShXZWJDb3JlOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmly
c3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6VVJMJiwgU3RyaW5nJiByZXN1bHQpOwogICAgIHZvaWQg
Z2V0UmF3Q29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmly
c3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6VVJMJiwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKTsK
ICAgICB2b2lkIGRlbGV0ZUNvb2tpZShXZWJDb3JlOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6
OlVSTCYsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSk7Ci0gICAgdm9pZCBhZGRDb29raWUoV2Vi
Q29yZTo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXZWJDb3JlOjpDb29r
aWUmKTsKIAogICAgIHZvaWQgcmVnaXN0ZXJGaWxlQmxvYlVSTChjb25zdCBXZWJDb3JlOjpVUkwm
LCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYsIGNv
bnN0IFN0cmluZyYgY29udGVudFR5cGUpOwogICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKGNvbnN0
IFdlYkNvcmU6OlVSTCYsIFZlY3RvcjxXZWJDb3JlOjpCbG9iUGFydD4mJiwgY29uc3QgU3RyaW5n
JiBjb250ZW50VHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2Vz
LmluCmluZGV4IGEyNjNhNGVkZTM4OGViZTI1ZjdhNjY3OTE2Y2UwYmUwZDlkOTllM2QuLjBiMzlk
N2VkMDFhNDUxYzBjM2E3ZmNiZTA2ODAzOTcyZmNiZjI0MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0zOCw3ICszOCw2IEBAIG1lc3NhZ2VzIC0+
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBDb29r
aWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBX
ZWJDb3JlOjpVUkwgZmlyc3RQYXJ0eSwgV2ViQ29yZTo6VVJMIHVybCkgLT4gKFN0cmluZyByZXN1
bHQpCiAgICAgR2V0UmF3Q29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJD
b3JlOjpVUkwgZmlyc3RQYXJ0eSwgV2ViQ29yZTo6VVJMIHVybCkgLT4gKFZlY3RvcjxXZWJDb3Jl
OjpDb29raWU+IGNvb2tpZXMpCiAgICAgRGVsZXRlQ29va2llKFdlYkNvcmU6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIFdlYkNvcmU6OlVSTCB1cmwsIFN0cmluZyBjb29raWVOYW1lKQotICAgIEFkZENv
b2tpZShXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpVUkwgdXJsLCBzdHJ1
Y3QgV2ViQ29yZTo6Q29va2llIGNvb2tpZSkKIAogICAgIFJlZ2lzdGVyRmlsZUJsb2JVUkwoV2Vi
Q29yZTo6VVJMIHVybCwgU3RyaW5nIHBhdGgsIFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlIGV4dGVuc2lvbkhhbmRsZSwgU3RyaW5nIGNvbnRlbnRUeXBlKQogICAgIFJlZ2lzdGVyQmxv
YlVSTChXZWJDb3JlOjpVUkwgdXJsLCBWZWN0b3I8V2ViQ29yZTo6QmxvYlBhcnQ+IGJsb2JQYXJ0
cywgU3RyaW5nIGNvbnRlbnRUeXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCA4NGNjZjhmNDliNDQ0YzM0MzlmYjY1YWFkZTBiNzhm
NjllYTgxZmZiLi45MGY2ZWJiNDg3YWFmYjM4NTgzZTI2ZjJiYjE5ZDU0ZDcyMGExN2Y2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAt
MzEsNyArMzEsNiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0Jsb2JQYXJ0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9DZXJ0
aWZpY2F0ZUluZm8uaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZS5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvQ3JlZGVudGlhbC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ3Vyc29yLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9EYXRhYmFzZURldGFpbHMuaD4KQEAgLTEyODQsNDEgKzEyODMsNiBAQCBib29s
IEFyZ3VtZW50Q29kZXI8Q29tcG9zaXRpb25VbmRlcmxpbmU+OjpkZWNvZGUoRGVjb2RlciYgZGVj
b2RlciwgQ29tcG9zaXRpb25VbgogICAgIHJldHVybiB0cnVlOwogfQogCi0KLXZvaWQgQXJndW1l
bnRDb2RlcjxDb29raWU+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgQ29va2llJiBj
b29raWUpCi17Ci0gICAgZW5jb2RlciA8PCBjb29raWUubmFtZTsKLSAgICBlbmNvZGVyIDw8IGNv
b2tpZS52YWx1ZTsKLSAgICBlbmNvZGVyIDw8IGNvb2tpZS5kb21haW47Ci0gICAgZW5jb2RlciA8
PCBjb29raWUucGF0aDsKLSAgICBlbmNvZGVyIDw8IGNvb2tpZS5leHBpcmVzOwotICAgIGVuY29k
ZXIgPDwgY29va2llLmh0dHBPbmx5OwotICAgIGVuY29kZXIgPDwgY29va2llLnNlY3VyZTsKLSAg
ICBlbmNvZGVyIDw8IGNvb2tpZS5zZXNzaW9uOwotfQotCi1ib29sIEFyZ3VtZW50Q29kZXI8Q29v
a2llPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIENvb2tpZSYgY29va2llKQotewotICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoY29va2llLm5hbWUpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShjb29raWUudmFsdWUpKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShjb29raWUuZG9tYWluKSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoY29va2llLnBhdGgpKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShjb29raWUuZXhwaXJlcykp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNvb2tpZS5o
dHRwT25seSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KGNvb2tpZS5zZWN1cmUpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFkZWNvZGVy
LmRlY29kZShjb29raWUuc2Vzc2lvbikpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJl
dHVybiB0cnVlOwotfQotCiB2b2lkIEFyZ3VtZW50Q29kZXI8RGF0YWJhc2VEZXRhaWxzPjo6ZW5j
b2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IERhdGFiYXNlRGV0YWlscyYgZGV0YWlscykKIHsK
ICAgICBlbmNvZGVyIDw8IGRldGFpbHMubmFtZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5oCmluZGV4IDc0MjI3N2ViODRjNGZjYzNjZWI3YjhhNzUy
ZWI0NDVhOTJmMjYwODQuLmVmYjdiMTczODk1YmFiYTEyNjM1MjZlNmZlNDM4MWU0NjY4MjdhOTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKQEAg
LTgzLDcgKzgzLDYgQEAgY2xhc3MgVXNlclN0eWxlU2hlZXQ7CiBjbGFzcyBVc2VyU2NyaXB0Owog
Y2xhc3MgVVJMOwogc3RydWN0IENvbXBvc2l0aW9uVW5kZXJsaW5lOwotc3RydWN0IENvb2tpZTsK
IHN0cnVjdCBEaWN0YXRpb25BbHRlcm5hdGl2ZTsKIHN0cnVjdCBEaWN0aW9uYXJ5UG9wdXBJbmZv
Owogc3RydWN0IEV2ZW50VHJhY2tpbmdSZWdpb25zOwpAQCAtNDA1LDExICs0MDQsNiBAQCB0ZW1w
bGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkNvbXBvc2l0aW9uVW5kZXJsaW5l
PiB7CiAgICAgc3RhdGljIGJvb2wgZGVjb2RlKERlY29kZXImLCBXZWJDb3JlOjpDb21wb3NpdGlv
blVuZGVybGluZSYpOwogfTsKIAotdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJD
b3JlOjpDb29raWU+IHsKLSAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdl
YkNvcmU6OkNvb2tpZSYpOwotICAgIHN0YXRpYyBib29sIGRlY29kZShEZWNvZGVyJiwgV2ViQ29y
ZTo6Q29va2llJik7Ci19OwotCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNv
cmU6OkRhdGFiYXNlRGV0YWlscz4gewogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwg
Y29uc3QgV2ViQ29yZTo6RGF0YWJhc2VEZXRhaWxzJik7CiAgICAgc3RhdGljIGJvb2wgZGVjb2Rl
KERlY29kZXImLCBXZWJDb3JlOjpEYXRhYmFzZURldGFpbHMmKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9u
LmNwcAppbmRleCBkZTViZTllMmQ5MDNhMGEyMDQ5ZjQ2ZTJiNzBkYzQwMjJiNGI0OWJmLi40OGNh
ZGM3MTI0ZjlkYmU2ODViYmRlNDhjYjNmZWUzZDE4MzkxNmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Np
b24uY3BwCkBAIC03MjcsNyArNzI3LDEwIEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OmFk
ZFNpbmdsZUNvb2tpZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluCiAgICAg
ICAgIEZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SX0FORF9ERVRBSUxTKE1pc3NpbmdQYXJhbWV0
ZXIsICJUaGUgcGFyYW1ldGVyICdodHRwT25seScgd2FzIG5vdCBmb3VuZC4iKTsKIAogICAgIFdl
YkNvb2tpZU1hbmFnZXJQcm94eSogY29va2llTWFuYWdlciA9IG1fcHJvY2Vzc1Bvb2wtPnN1cHBs
ZW1lbnQ8V2ViQ29va2llTWFuYWdlclByb3h5PigpOwotICAgIGNvb2tpZU1hbmFnZXItPmFkZENv
b2tpZShXZWJDb3JlOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSwgY29va2llLCBhY3Rp
dmVVUkwuaG9zdCgpKTsKKworICAgIC8vIEZJWE1FOiBVc2luZyBhY3RpdmVVUkwgaGVyZSB0d2lj
ZSBpcyBiYXNpY2FsbHkgc2F5aW5nICJ0aGlzIGlzIGFsd2F5cyBpbiB0aGUgY29udGV4dCBvZiB0
aGUgbWFpbiBkb2N1bWVudCIKKyAgICAvLyB3aGljaCBwcm9iYWJseSBpc24ndCBhY2N1cmF0ZS4K
KyAgICBjb29raWVNYW5hZ2VyLT5zZXRDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRDo6ZGVmYXVs
dFNlc3Npb25JRCgpLCB7IGNvb2tpZSB9LCBhY3RpdmVVUkwsIGFjdGl2ZVVSTCk7CiAKICAgICBj
YWxsYmFjay0+c2VuZFN1Y2Nlc3MoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5jcHAKaW5kZXggMDhhNzk3OTJlYTA2MjM5ZWQ1MWM4
YjBkOGIxYTM0MTVjYTVhMjc2Ni4uNWQ4MWZhZDAwMTVkYjFkNzk5OGZjMjI3OTM5NDI5YmNmZjRl
YzM2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFn
ZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFn
ZXJQcm94eS5jcHAKQEAgLTEyOSw5ICsxMjksOSBAQCB2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94
eTo6ZGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UoV2ViQ29yZTo6U2Vzc2lvbklEIHNlcwog
ICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzUmVsYXVuY2hpbmdJZk5l
Y2Vzc2FyeShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6RGVsZXRlQWxsQ29va2llc01vZGlm
aWVkU2luY2Uoc2Vzc2lvbklELCB0aW1lKSk7CiB9CiAKLXZvaWQgV2ViQ29va2llTWFuYWdlclBy
b3h5OjphZGRDb29raWUoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgV2ViQ29y
ZTo6Q29va2llJiBjb29raWUsIGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCit2b2lkIFdlYkNvb2tp
ZU1hbmFnZXJQcm94eTo6c2V0Q29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBj
b25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYgY29va2llcywgY29uc3QgV2ViQ29yZTo6VVJM
JiB1cmwsIGNvbnN0IFdlYkNvcmU6OlVSTCYgbWFpbkRvY3VtZW50VVJMKQogewotICAgIHByb2Nl
c3NQb29sKCktPnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzUmVsYXVuY2hpbmdJZk5lY2Vzc2FyeShN
ZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6QWRkQ29va2llKHNlc3Npb25JRCwgY29va2llLCBo
b3N0bmFtZSkpOworICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzUmVs
YXVuY2hpbmdJZk5lY2Vzc2FyeShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6U2V0Q29va2ll
cyhzZXNzaW9uSUQsIGNvb2tpZXMsIHVybCwgbWFpbkRvY3VtZW50VVJMKSk7CiB9CiAKIHZvaWQg
V2ViQ29va2llTWFuYWdlclByb3h5OjpzdGFydE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoV2ViQ29y
ZTo6U2Vzc2lvbklEIHNlc3Npb25JRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJDb29raWVNYW5hZ2VyUHJveHkuaAppbmRleCA2NWQwNDdjMWUzOGU1OTkwZGUwNWIwNmUyOGFh
M2U4MjRmZDZlMjdiLi40YWQ2NzZjNGJkZTc4YmEzZmQxODRhNmQ3OTBjYzA3ZmJhN2ZlN2JiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5o
CkBAIC02OSw3ICs2OSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGRlbGV0ZUNvb2tpZXNGb3JIb3N0
bmFtZShXZWJDb3JlOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpOwogICAgIHZv
aWQgZGVsZXRlQWxsQ29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQpOwogICAgIHZvaWQgZGVsZXRl
QWxsQ29va2llc01vZGlmaWVkU2luY2UoV2ViQ29yZTo6U2Vzc2lvbklELCBzdGQ6OmNocm9ubzo6
c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50KTsKLSAgICB2b2lkIGFkZENvb2tpZShXZWJDb3JlOjpT
ZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OkNvb2tpZSYsIGNvbnN0IFN0cmluZyYgaG9zdG5hbWUp
OworCisgICAgdm9pZCBzZXRDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCwgY29uc3QgVmVjdG9y
PFdlYkNvcmU6OkNvb2tpZT4mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXZWJDb3JlOjpV
UkwmIG1haW5Eb2N1bWVudFVSTCk7CiAKICAgICB2b2lkIHNldEhUVFBDb29raWVBY2NlcHRQb2xp
Y3koSFRUUENvb2tpZUFjY2VwdFBvbGljeSk7CiAgICAgdm9pZCBnZXRIVFRQQ29va2llQWNjZXB0
UG9saWN5KHN0ZDo6ZnVuY3Rpb248dm9pZCAoSFRUUENvb2tpZUFjY2VwdFBvbGljeSwgQ2FsbGJh
Y2tCYXNlOjpFcnJvcik+KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
Q29va2llcy9XZWJDb29raWVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
Q29va2llcy9XZWJDb29raWVNYW5hZ2VyLmNwcAppbmRleCA0YmY2NzczZGMwMGFiNmMzYzU2NDk2
YWM0OTU3NGNiODQ4MDU3MThkLi5jYTNhOGExZjkxNGY4YjRlM2VjYjhiZjgxYzZiNzExN2FkYzc5
NWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29v
a2llTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29raWVzL1dl
YkNvb2tpZU1hbmFnZXIuY3BwCkBAIC04MywxMCArODMsMTAgQEAgdm9pZCBXZWJDb29raWVNYW5h
Z2VyOjpkZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZShTZXNzaW9uSUQgc2Vzc2lvbklELCBz
dGQ6OmMKICAgICAgICAgV2ViQ29yZTo6ZGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UoKnN0
b3JhZ2VTZXNzaW9uLCB0aW1lKTsKIH0KIAotdm9pZCBXZWJDb29raWVNYW5hZ2VyOjphZGRDb29r
aWUoU2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgQ29va2llJiBjb29raWUsIGNvbnN0IFN0cmlu
ZyYgaG9zdG5hbWUpCit2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OnNldENvb2tpZXMoV2ViQ29yZTo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVmVjdG9yPENvb2tpZT4mIGNvb2tpZXMsIGNvbnN0
IFVSTCYgdXJsLCBjb25zdCBVUkwmIG1haW5Eb2N1bWVudFVSTCkKIHsKICAgICBpZiAoYXV0byog
c3RvcmFnZVNlc3Npb24gPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNl
c3Npb25JRCkpCi0gICAgICAgIFdlYkNvcmU6OmFkZENvb2tpZSgqc3RvcmFnZVNlc3Npb24sIFVS
TChVUkwoKSwgaG9zdG5hbWUpLCBjb29raWUpOworICAgICAgICBzdG9yYWdlU2Vzc2lvbi0+c2V0
Q29va2llcyhjb29raWVzLCB1cmwsIG1haW5Eb2N1bWVudFVSTCk7CiB9CiAKIHZvaWQgV2ViQ29v
a2llTWFuYWdlcjo6bm90aWZ5Q29va2llc0RpZENoYW5nZShTZXNzaW9uSUQgc2Vzc2lvbklEKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1h
bmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5h
Z2VyLmgKaW5kZXggN2VkNjU4ZjRmYTYxMzhmZjIyZTYyMGJlNzUwNmRkM2VjZDA4NjY2OC4uZGIy
N2QyMGFhZGQ4N2Q4ODUzNmRhNTA3MWU1OWYzMjg5MTE1MTgwMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5oCkBAIC0zNCwx
MiArMzQsMTQgQEAKICNpbmNsdWRlIDxzdGRpbnQuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5o
PgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
IAogI2lmIFVTRShTT1VQKQogI2luY2x1ZGUgIlNvdXBDb29raWVQZXJzaXN0ZW50U3RvcmFnZVR5
cGUuaCIKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBVUkw7CiBzdHJ1Y3Qg
Q29va2llOwogfQogCkBAIC02OSw3ICs3MSw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkZWxldGVD
b29raWVzRm9ySG9zdG5hbWUoV2ViQ29yZTo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmKTsKICAg
ICB2b2lkIGRlbGV0ZUFsbENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklEKTsKICAgICB2b2lkIGRl
bGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKFdlYkNvcmU6OlNlc3Npb25JRCwgc3RkOjpjaHJv
bm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCk7Ci0gICAgdm9pZCBhZGRDb29raWUoV2ViQ29y
ZTo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpDb29raWUmLCBjb25zdCBTdHJpbmcmIGhvc3Ru
YW1lKTsKKworICAgIHZvaWQgc2V0Q29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQsIGNvbnN0IFZl
Y3RvcjxXZWJDb3JlOjpDb29raWU+JiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgV2ViQ29y
ZTo6VVJMJiBtYWluRG9jdW1lbnRVUkwpOwogCiAgICAgdm9pZCBwbGF0Zm9ybVNldEhUVFBDb29r
aWVBY2NlcHRQb2xpY3koSFRUUENvb2tpZUFjY2VwdFBvbGljeSk7CiAgICAgdm9pZCBnZXRIVFRQ
Q29va2llQWNjZXB0UG9saWN5KHVpbnQ2NF90IGNhbGxiYWNrSUQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIubWVzc2FnZXMu
aW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5t
ZXNzYWdlcy5pbgppbmRleCA1ZDUxNTM2NjQ1MjE2MDMwZTMxNTg4NjJmZDYyZDcyNTM1ZTJlZGM0
Li4wMGU3YjY1Yjc0OTA4MjZjNWJiMzliZDcyNmU5YzJkM2JhNTNmMDU2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5tZXNzYWdl
cy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFu
YWdlci5tZXNzYWdlcy5pbgpAQCAtMjgsNyArMjgsOCBAQAogICAgIHZvaWQgRGVsZXRlQ29va2ll
c0Zvckhvc3RuYW1lKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0cmluZyBob3N0bmFt
ZSkKICAgICB2b2lkIERlbGV0ZUFsbENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25J
RCkKICAgICB2b2lkIERlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKFdlYkNvcmU6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgdGlt
ZSkKLSAgICB2b2lkIEFkZENvb2tpZShXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBzdHJ1
Y3QgV2ViQ29yZTo6Q29va2llIGNvb2tpZSwgU3RyaW5nIGhvc3RuYW1lKQorCisgICAgdm9pZCBT
ZXRDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFZlY3RvcjxXZWJDb3JlOjpD
b29raWU+IGNvb2tpZXMsIFdlYkNvcmU6OlVSTCB1cmwsIFdlYkNvcmU6OlVSTCBtYWluRG9jdW1l
bnRVUkwpOwogCiAgICAgdm9pZCBTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHVpbnQzMl90IHBv
bGljeSkKICAgICB2b2lkIEdldEhUVFBDb29raWVBY2NlcHRQb2xpY3kodWludDY0X3QgY2FsbGJh
Y2tJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAppbmRleCBjMDM5NzBhZDU1
YmVmNmExMDUxZmQwMjViMDExYzRkOTAwMDA0ZTE0Li5iZjRiZGFlMDE1YzYxZTUyNTI5OWE1NGFl
MWZhYTJiNjgwZWQ4OGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCkBA
IC0xNTUsMTEgKzE1NSw2IEBAIHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpkZWxldGVDb29r
aWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjCiAgICAgV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkubmV0d29ya0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNz
YWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkRlbGV0ZUNvb2tpZShzZXNzaW9u
LnNlc3Npb25JRCgpLCB1cmwsIGNvb2tpZU5hbWUpLCAwKTsKIH0KIAotdm9pZCBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OmFkZENvb2tpZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Np
b24sIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBDb29raWUmIGNvb2tpZSkKLXsKLSAgICBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5uZXR3b3JrQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1l
c3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6QWRkQ29va2llKHNlc3Npb24u
c2Vzc2lvbklEKCksIHVybCwgY29va2llKSwgMCk7Ci19Ci0KICNpZiBQTEFURk9STShDT0NPQSkK
IC8vIFBhc3RlYm9hcmRTdHJhdGVneQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaApp
bmRleCBjNjllYTUxOWViOTZkMDVhYmI3MTQ2ZjgxYmMyZDViZTM0MGZkMDBlLi4zNTVkOGE2ZjI2
ZDJjZDQxMzQ3NDczMTQ0M2VmNDUwMGYwMmYwNTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJh
dGVnaWVzLmgKQEAgLTU2LDcgKzU2LDYgQEAgcHJpdmF0ZToKICAgICBTdHJpbmcgY29va2llUmVx
dWVzdEhlYWRlckZpZWxkVmFsdWUoV2ViQ29yZTo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpV
UkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlVSTCYpIG92ZXJyaWRlOwogICAgIGJvb2wg
Z2V0UmF3Q29va2llcyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25z
dCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlVSTCYsIFZlY3RvcjxX
ZWJDb3JlOjpDb29raWU+Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkZWxldGVDb29raWUoY29uc3Qg
V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29u
c3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBhZGRDb29raWUoY29uc3QgV2ViQ29yZTo6
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgV2ViQ29y
ZTo6Q29va2llJikgb3ZlcnJpZGU7CiAKICAgICAvLyBXZWJDb3JlOjpQYXN0ZWJvYXJkU3RyYXRl
Z3kKICNpZiBQTEFURk9STShJT1MpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304117</attachid>
            <date>2017-03-10 19:19:38 -0800</date>
            <delta_ts>2017-03-10 19:55:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-169486-20170310191938.patch</filename>
            <type>text/plain</type>
            <size>48851</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEzNzQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTg3NjRmM2FhMWI5ZDEx
OTE5MGZjNjQwYTMzZDcxZjYxZWU3NTg1MC4uNjViNDcyMzY1YWQ2ZDFmN2Q4ODg5N2M0YTdjOGM3
MmJmM2IxY2RhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDE3LTAzLTEwICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBDbGVhbnVwICJhZGRDb29r
aWUiIGFuZCBpdHMgc29sZSB1c2VyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTY5NDg2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQnJpYW4gQnVyZy4K
KworICAgICAgICBObyBuZXcgdGVzdHMgKFJlZmFjdG9yLCBubyBiZWhhdmlvciBjaGFuZ2UpCisK
KyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKKyAgICAgICAg
KiBsb2FkZXIvQ29va2llSmFyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFkZENvb2tpZSk6IERl
bGV0ZWQuCisgICAgICAgICogbG9hZGVyL0Nvb2tpZUphci5oOgorCisgICAgICAgICogcGxhdGZv
cm0vQ29va2llLmg6CisgICAgICAgIChXZWJDb3JlOjpDb29raWU6OkNvb2tpZSk6CisgICAgICAg
IChXZWJDb3JlOjpDb29raWVIYXNoOjpoYXNoKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb2tpZUhh
c2g6OmVxdWFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb2tpZTo6ZW5jb2RlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNvb2tpZTo6ZGVjb2RlKToKKworICAgICAgICAqIHBsYXRmb3JtL0Nvb2tpZXNT
dHJhdGVneS5oOgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNl
c3Npb24uaDoKKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUGxhdGZvcm1Db29raWVKYXIu
aDoKKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvQ29va2llSmFyQ0ZOZXQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6YWRkQ29va2llKTogRGVsZXRlZC4KKworICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvY29jb2EvQ29va2llQ29jb2EubW06IENvcGllZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9Db29raWVKYXIuaC4KKyAgICAgICAgKFdlYkNvcmU6OkNvb2tpZTo6b3BlcmF0
b3IgTlNIVFRQQ29va2llICopOgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9O
ZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbTogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUv
bG9hZGVyL0Nvb2tpZUphci5oLgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpzZXRDb29raWVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lv
bjo6bnNDb29raWVTdG9yYWdlKToKKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9D
b29raWVKYXJDdXJsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFkZENvb2tpZSk6IERlbGV0ZWQu
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9Db29raWVKYXJNYWMubW06CisgICAg
ICAgIChXZWJDb3JlOjpkZWxldGVDb29raWVzRm9ySG9zdG5hbWVzKToKKyAgICAgICAgKFdlYkNv
cmU6OmRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OmFk
ZENvb2tpZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpjb29raWVTdG9yYWdlKTogRGVs
ZXRlZC4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9Db29raWVKYXJTb3VwLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnRvU291cENvb2tpZSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjphZGRDb29raWUpOiBEZWxldGVkLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
dG9Tb3VwQ29va2llKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
c2V0Q29va2llcyk6CisKIDIwMTctMDMtMTAgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUu
Y29tPgogCiAgICAgICAgIE1vdmUgbGlid2VicnRjIGJhY2tlbmQgdG8gdXNpbmcgdHJhY2tzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21h
Yy9DaGFuZ2VMb2cKaW5kZXggZTAzMTQ2NmU4Nzc5NDUwNzk4ZGVhNDg5MTE0YmY2NjM5NzVkNWM5
MS4uYjgwYjJmODc3NjcwNjUwMzNiOTdmZmRiOTAzMjhmOTljYzE4Mjg3NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE3LTAzLTEwICBCcmFkeSBFaWRzb24gIDxiZWlkc29u
QGFwcGxlLmNvbT4KKworICAgICAgICBDbGVhbnVwICJhZGRDb29raWUiIGFuZCBpdHMgc29sZSB1
c2VyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5
NDg2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQnJpYW4gQnVyZy4KKworICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oOgorICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6YWRkQ29va2llKTogRGVsZXRlZC4KKwogMjAxNy0wMy0xMCAgQWxleCBDaHJpc3RlbnNl
biAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEZpeCBDTWFrZSBidWlsZC4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBlOGZmNDYxNmYwNjc4ZjBjNzZiYTRiZThmYTU0Mjg0NGNjY2FmZmZkLi5j
ZTdiMzIwMzgzYWEzZGIxNmZjNWRhOGQwMGIzNDI3NzNmZjE4OTc0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMzggQEAKKzIwMTctMDMtMTAgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29t
PgorCisgICAgICAgIENsZWFudXAgImFkZENvb2tpZSIgYW5kIGl0cyBzb2xlIHVzZXIuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk0ODYKKworICAg
ICAgICBSZXZpZXdlZCBieSBCcmlhbiBCdXJnLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6YWRkQ29va2llKTogRGVsZXRlZC4KKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2Vz
LmluOgorCisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAg
ICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8Q29va2llPjo6ZW5jb2RlKTogRGVsZXRlZC4KKyAgICAg
ICAgKElQQzo6QXJndW1lbnRDb2RlcjxDb29raWU+OjpkZWNvZGUpOiBEZWxldGVkLgorICAgICAg
ICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoKKworICAgICAgICAqIFVJUHJvY2Vz
cy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViQXV0b21hdGlvblNlc3Npb246OmFkZFNpbmdsZUNvb2tpZSk6CisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29v
a2llTWFuYWdlclByb3h5OjpzZXRDb29raWVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2ll
TWFuYWdlclByb3h5OjphZGRDb29raWUpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJDb29raWVNYW5hZ2VyUHJveHkuaDoKKworICAgICAgICAqIFdlYlByb2Nlc3MvQ29va2llcy9X
ZWJDb29raWVNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlcjo6
c2V0Q29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXI6OmFkZENvb2tp
ZSk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFn
ZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5tZXNz
YWdlcy5pbjoKKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZv
cm1TdHJhdGVnaWVzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVz
OjphZGRDb29raWUpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmg6CisKIDIwMTctMDMtMTAgIEFsZXggQ2hyaXN0ZW5z
ZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBEb24ndCBjb21waWxlIFJl
bW90ZU5ldHdvcmtpbmdDb250ZXh0IHdoZW4gdXNpbmcgTmV0d29ya1Nlc3Npb24KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBiODE0
ZDMxNWE2MDZjNWJjNTJjZmZhN2FlZjNhMjk4MTM2M2ExZmYwLi5mYjQ1MTk3NjEzZDhkODNiY2I0
NmZjOTcwOTZlYmZjNDYzZjI5MDhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMjc4LDYgKzIyNzgsOCBAQAogCQk1MUM4MUI4
QTBDNDQyMkY3MDAxOUVDRTMgLyogRlRQRGlyZWN0b3J5UGFyc2VyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUM4MUI4ODBDNDQyMkY3MDAxOUVDRTMg
LyogRlRQRGlyZWN0b3J5UGFyc2VyLmggKi87IH07CiAJCTUxQ0JGQzk5MEQxMEU0ODMwMDJEQkY1
MSAvKiBDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTFDQkZDOTgwRDEwRTQ4MzAwMkRCRjUxIC8qIENhY2hlZEZy
YW1lUGxhdGZvcm1EYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNTFEMEM1MTYwREFBOTBCNzAwM0IzODMxIC8qIEpTU3RvcmFnZUN1c3RvbS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUQwQzUx
NTBEQUE5MEI3MDAzQjM4MzEgLyogSlNTdG9yYWdlQ3VzdG9tLmNwcCAqLzsgfTsKKwkJNTFEMTI0
OEIxRTczNjI3RjAwMkIyODIwIC8qIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFEMTI0OEExRTczNjI1
QzAwMkIyODIwIC8qIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tICovOyB9OworCQk1MUQx
MjQ4RDFFNzM2NEFBMDAyQjI4MjAgLyogQ29va2llQ29jb2EubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUQxMjQ4QzFFNzM2NDU2MDAyQjI4MjAgLyog
Q29va2llQ29jb2EubW0gKi87IH07CiAJCTUxRDcyMzZDMUJCNjE3NDkwMDQ3OENBMyAvKiBJREJS
ZXN1bHREYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxRDcyMzZBMUJCNjBCRkUwMDQ3OENBMyAvKiBJREJSZXN1bHREYXRhLmNwcCAqLzsgfTsK
IAkJNTFENzIzNkQxQkI2MTc0OTAwNDc4Q0EzIC8qIElEQlJlc3VsdERhdGEuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRDcyMzZCMUJCNjBCRkUwMDQ3
OENBMyAvKiBJREJSZXN1bHREYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJNTFEN0VGRUExQkRFOEY4QzAwRTkzRTEwIC8qIFRocmVhZFNhZmVE
YXRhQnVmZmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MTFGQUVBOTFCREM5ODlBMDBCNEFGRTQgLyogVGhyZWFkU2FmZURhdGFCdWZmZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtOTcxNSw2ICs5
NzE3LDggQEAKIAkJNTFDODFCODgwQzQ0MjJGNzAwMTlFQ0UzIC8qIEZUUERpcmVjdG9yeVBhcnNl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRlRQRGlyZWN0b3J5UGFyc2Vy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQ0JGQzk4MEQxMEU0ODMwMDJEQkY1
MSAvKiBDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1MUQwQzUxNTBEQUE5MEI3MDAzQjM4MzEgLyogSlNTdG9yYWdlQ3VzdG9tLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU3RvcmFnZUN1c3RvbS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxRDEyNDhBMUU3MzYyNUMwMDJCMjgyMCAv
KiBOZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk1MUQxMjQ4QzFFNzM2NDU2MDAyQjI4MjAgLyogQ29va2llQ29j
b2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDb29raWVDb2Nv
YS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFENzE5NkMxODExMDZERjAwMTZE
QzUxIC8qIERPTVdpbmRvd0luZGV4ZWREYXRhYmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBET01XaW5kb3dJbmRleGVkRGF0YWJhc2UuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1MUQ3MTk2RDE4MTEwNkRGMDAxNkRDNTEgLyogRE9NV2luZG93
SW5kZXhlZERhdGFiYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTVdp
bmRvd0luZGV4ZWREYXRhYmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUQ3
MTk2RTE4MTEwNkRGMDAxNkRDNTEgLyogRE9NV2luZG93SW5kZXhlZERhdGFiYXNlLmlkbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBET01XaW5kb3dJbmRleGVkRGF0YWJhc2UuaWRsOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTkwOTUsOSArMTkwOTksMTEgQEAKIAkJN0U3REUxRkUx
OTVDRUYyRDAwMzUzNjNCIC8qIGNvY29hICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQlj
aGlsZHJlbiA9ICgKKwkJCQk1MUQxMjQ4QzFFNzM2NDU2MDAyQjI4MjAgLyogQ29va2llQ29jb2Eu
bW0gKi8sCiAJCQkJMzc5MjkxN0MxOTg3Njc4RjAwRjRCNjYxIC8qIENyZWRlbnRpYWxDb2NvYS5o
ICovLAogCQkJCTM3OTI5MTdCMTk4NzY3OEYwMEY0QjY2MSAvKiBDcmVkZW50aWFsQ29jb2EubW0g
Ki8sCiAJCQkJNUM5Qjg2MEIxQzIxRTNDNjAwMTEwRjM2IC8qIE5ldHdvcmtMb2FkTWV0cmljcy5t
bSAqLywKKwkJCQk1MUQxMjQ4QTFFNzM2MjVDMDAyQjI4MjAgLyogTmV0d29ya1N0b3JhZ2VTZXNz
aW9uQ29jb2EubW0gKi8sCiAJCQkJMzcyQURBMzcxOTdGNDdCOTAwRkM1MDFFIC8qIFByb3RlY3Rp
b25TcGFjZUNvY29hLmggKi8sCiAJCQkJMzcyQURBMzkxOTdGNjg3NjAwRkM1MDFFIC8qIFByb3Rl
Y3Rpb25TcGFjZUNvY29hLm1tICovLAogCQkJCTdFN0RFMUZDMTk1Q0VGMjYwMDM1MzYzQiAvKiBS
ZXNvdXJjZVJlcXVlc3RDb2NvYS5tbSAqLywKQEAgLTMwMTc3LDYgKzMwMTgzLDcgQEAKIAkJCQlD
RDUyNDgxQTE4RTIwMEVEMDAwOEEwN0QgLyogRGlzcGxheVNsZWVwRGlzYWJsZXIuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNUQ4QzREQkYxNDI4MjIyQzAwMjZDRTcyIC8qIERpc3BsYXlTbGVlcERp
c2FibGVyQ29jb2EuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkQzMTYwOTAxMkIwMjZGNzAwQzFB
MzU5IC8qIERpc3RhbmNlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUxRDEyNDhCMUU3MzYyN0Yw
MDJCMjgyMCAvKiBOZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbSBpbiBTb3VyY2VzICovLAog
CQkJCUExRTExNTQ0MTMwMTVDM0QwMDU0QUM4QyAvKiBEaXN0YW50TGlnaHRTb3VyY2UuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQjJGMzRGRTkwRTgyRjgyNzAwRjYyN0NEIC8qIEROU0NGTmV0LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUYyOTNCMjdFNTZDMTEyRjM3M0ZGRjI3RSAvKiBETlNSZXNv
bHZlUXVldWUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMjE0MCw2ICszMjE0Nyw3IEBACiAJCQkJ
QkNBQTkwQzMwQTdFQkE2MDAwOEIxMjI5IC8qIFNjcm9sbGJhci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkwRjA5MDg3RjE0NDRGREIyMDAwMjg5MTcgLyogU2Nyb2xsYmFyVGhlbWUuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQkMxNDAyOEEwRTgzNjgwODAwMzE5NzE3IC8qIFNjcm9sbGJhclRoZW1l
Q29tcG9zaXRlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUxRDEyNDhEMUU3MzY0QUEwMDJCMjgy
MCAvKiBDb29raWVDb2NvYS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTQ0Qzk5MTgyMEYzRDFFMEQw
MDU4NjY3MCAvKiBTY3JvbGxiYXJUaGVtZUlPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUJDRUY4
NjlGMEU4NDRFOUQwMEE4NUNENSAvKiBTY3JvbGxiYXJUaGVtZU1hYy5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTBGRTcxNDA1MTQyMTcwQjgwMERCMzNCQSAvKiBTY3JvbGxiYXJUaGVtZU1vY2suY3Bw
IGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29va2ll
SmFyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db29raWVKYXIuY3BwCmluZGV4IGVmOTNk
ZmY1ZTE0ZThmMzE2OGViZjFlMGJhNzZiYmExOTAyMGE5NDkuLjNlOGE3ODVhNzkwMDhmZTBiMDg0
OTA3ZWE2MmFmY2Q1NWMzNGUzNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9D
b29raWVKYXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db29raWVKYXIuY3BwCkBA
IC04Myw5ICs4Myw0IEBAIHZvaWQgZGVsZXRlQ29va2llKGNvbnN0IERvY3VtZW50JiBkb2N1bWVu
dCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llCiAgICAgcGxhdGZvcm1TdHJh
dGVnaWVzKCktPmNvb2tpZXNTdHJhdGVneSgpLT5kZWxldGVDb29raWUoc3RvcmFnZVNlc3Npb24o
ZG9jdW1lbnQpLCB1cmwsIGNvb2tpZU5hbWUpOwogfQogCi12b2lkIGFkZENvb2tpZShjb25zdCBE
b2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBDb29raWUmIGNvb2tpZSkK
LXsKLSAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+Y29va2llc1N0cmF0ZWd5KCktPmFkZENvb2tp
ZShzdG9yYWdlU2Vzc2lvbihkb2N1bWVudCksIHVybCwgY29va2llKTsKLX0KLQogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUphci5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0Nvb2tpZUphci5oCmluZGV4IDBhNTNkOTY0NDU3MzhiZjQxZDhkNTg2NzY4NTVhOTc4
Y2ZkNTEyNzguLjIyMGE5YjkyNjA0YjBkYTRjYjgwNDc3MDIyYzZkNzIwYzZlZDA1ZTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db29raWVKYXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvQ29va2llSmFyLmgKQEAgLTQ1LDYgKzQ1LDUgQEAgV0VCQ09SRV9FWFBPUlQg
Ym9vbCBjb29raWVzRW5hYmxlZChjb25zdCBEb2N1bWVudCYpOwogV0VCQ09SRV9FWFBPUlQgU3Ry
aW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IERvY3VtZW50JiwgY29uc3Qg
VVJMJik7CiBXRUJDT1JFX0VYUE9SVCBib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgRG9jdW1lbnQm
LCBjb25zdCBVUkwmLCBWZWN0b3I8Q29va2llPiYpOwogV0VCQ09SRV9FWFBPUlQgdm9pZCBkZWxl
dGVDb29raWUoY29uc3QgRG9jdW1lbnQmLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIGNvb2tp
ZU5hbWUpOwotV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRDb29raWUoY29uc3QgRG9jdW1lbnQmLCBj
b25zdCBVUkwmLCBjb25zdCBDb29raWUmKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29va2llLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9Db29raWUuaAppbmRleCA5NjFkZmU1MmExNjZlMjAwMTYwOWRlNThmYzdjMzA3
M2M3ZTIwZjU5Li43MjRhYmFiNGUwNmEwMzM3ZGQ2M2IyYjA3MGU1MDk5N2YyZGRmMGRiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db29raWUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9Db29raWUuaApAQCAtMjksNDcgKzI5LDkzIEBACiAjaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nSGFzaC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCisj
aWZkZWYgX19PQkpDX18KKyNpbmNsdWRlIDxvYmpjL29iamMuaD4KKyNlbmRpZgorCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLSAgICBzdHJ1Y3QgQ29va2llIHsKLSAgICAgICAgQ29va2llKCkgeyB9
Ci0KLSAgICAgICAgQ29va2llKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1
ZSwgY29uc3QgU3RyaW5nJiBkb21haW4sCi0gICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBw
YXRoLCBkb3VibGUgZXhwaXJlcywgYm9vbCBodHRwT25seSwgYm9vbCBzZWN1cmUsCi0gICAgICAg
ICAgICAgICAgYm9vbCBzZXNzaW9uKQotICAgICAgICAgICAgOiBuYW1lKG5hbWUpCi0gICAgICAg
ICAgICAsIHZhbHVlKHZhbHVlKQotICAgICAgICAgICAgLCBkb21haW4oZG9tYWluKQotICAgICAg
ICAgICAgLCBwYXRoKHBhdGgpCi0gICAgICAgICAgICAsIGV4cGlyZXMoZXhwaXJlcykKLSAgICAg
ICAgICAgICwgaHR0cE9ubHkoaHR0cE9ubHkpCi0gICAgICAgICAgICAsIHNlY3VyZShzZWN1cmUp
Ci0gICAgICAgICAgICAsIHNlc3Npb24oc2Vzc2lvbikKLSAgICAgICAgewotICAgICAgICB9Ci0K
LSAgICAgICAgU3RyaW5nIG5hbWU7Ci0gICAgICAgIFN0cmluZyB2YWx1ZTsKLSAgICAgICAgU3Ry
aW5nIGRvbWFpbjsKLSAgICAgICAgU3RyaW5nIHBhdGg7Ci0gICAgICAgIC8vIEV4cGlyYXRpb24g
ZGF0ZSwgZXhwcmVzc2VkIGFzIG1pbGxpc2Vjb25kcyBzaW5jZSB0aGUgVU5JWCBlcG9jaC4KLSAg
ICAgICAgZG91YmxlIGV4cGlyZXM7Ci0gICAgICAgIGJvb2wgaHR0cE9ubHk7Ci0gICAgICAgIGJv
b2wgc2VjdXJlOwotICAgICAgICBib29sIHNlc3Npb247Ci0gICAgfTsKK3N0cnVjdCBDb29raWUg
eworICAgIENvb2tpZSgpIHsgfQogCi0gICAgc3RydWN0IENvb2tpZUhhc2ggewotICAgICAgICBz
dGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBDb29raWUmIGtleSkKLSAgICAgICAgeyAKLSAgICAg
ICAgICAgIHJldHVybiBTdHJpbmdIYXNoOjpoYXNoKGtleS5uYW1lKSArIFN0cmluZ0hhc2g6Omhh
c2goa2V5LmRvbWFpbikgKyBTdHJpbmdIYXNoOjpoYXNoKGtleS5wYXRoKSArIGtleS5zZWN1cmU7
Ci0gICAgICAgIH0KKyAgICBDb29raWUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcm
IHZhbHVlLCBjb25zdCBTdHJpbmcmIGRvbWFpbiwgY29uc3QgU3RyaW5nJiBwYXRoLCBkb3VibGUg
ZXhwaXJlcywgYm9vbCBodHRwT25seSwgYm9vbCBzZWN1cmUsIGJvb2wgc2Vzc2lvbikKKyAgICAg
ICAgOiBuYW1lKG5hbWUpCisgICAgICAgICwgdmFsdWUodmFsdWUpCisgICAgICAgICwgZG9tYWlu
KGRvbWFpbikKKyAgICAgICAgLCBwYXRoKHBhdGgpCisgICAgICAgICwgZXhwaXJlcyhleHBpcmVz
KQorICAgICAgICAsIGh0dHBPbmx5KGh0dHBPbmx5KQorICAgICAgICAsIHNlY3VyZShzZWN1cmUp
CisgICAgICAgICwgc2Vzc2lvbihzZXNzaW9uKQorICAgIHsKKyAgICB9CisKKyAgICB0ZW1wbGF0
ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxh
dGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIGJvb2wgZGVjb2RlKERlY29kZXImLCBDb29raWUmKTsK
KworI2lmZGVmIF9fT0JKQ19fCisgICAgb3BlcmF0b3IgTlNIVFRQQ29va2llICooKSBjb25zdDsK
KyNlbmRpZgorCisgICAgU3RyaW5nIG5hbWU7CisgICAgU3RyaW5nIHZhbHVlOworICAgIFN0cmlu
ZyBkb21haW47CisgICAgU3RyaW5nIHBhdGg7CisgICAgLy8gRXhwaXJhdGlvbiBkYXRlLCBleHBy
ZXNzZWQgYXMgbWlsbGlzZWNvbmRzIHNpbmNlIHRoZSBVTklYIGVwb2NoLgorICAgIGRvdWJsZSBl
eHBpcmVzOworICAgIGJvb2wgaHR0cE9ubHk7CisgICAgYm9vbCBzZWN1cmU7CisgICAgYm9vbCBz
ZXNzaW9uOworfTsKKworc3RydWN0IENvb2tpZUhhc2ggeworICAgIHN0YXRpYyB1bnNpZ25lZCBo
YXNoKGNvbnN0IENvb2tpZSYga2V5KQorICAgIHsgCisgICAgICAgIHJldHVybiBTdHJpbmdIYXNo
OjpoYXNoKGtleS5uYW1lKSArIFN0cmluZ0hhc2g6Omhhc2goa2V5LmRvbWFpbikgKyBTdHJpbmdI
YXNoOjpoYXNoKGtleS5wYXRoKSArIGtleS5zZWN1cmU7CisgICAgfQorCisgICAgc3RhdGljIGJv
b2wgZXF1YWwoY29uc3QgQ29va2llJiBhLCBjb25zdCBDb29raWUmIGIpCisgICAgeworICAgICAg
ICByZXR1cm4gYS5uYW1lID09IGIubmFtZSAmJiBhLmRvbWFpbiA9PSBiLmRvbWFpbiAmJiBhLnBh
dGggPT0gYi5wYXRoICYmIGEuc2VjdXJlID09IGIuc2VjdXJlOworICAgIH0KK307CisKK3RlbXBs
YXRlPGNsYXNzIEVuY29kZXI+Cit2b2lkIENvb2tpZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIp
IGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBuYW1lOworICAgIGVuY29kZXIgPDwgdmFsdWU7Cisg
ICAgZW5jb2RlciA8PCBkb21haW47CisgICAgZW5jb2RlciA8PCBwYXRoOworICAgIGVuY29kZXIg
PDwgZXhwaXJlczsKKyAgICBlbmNvZGVyIDw8IGh0dHBPbmx5OworICAgIGVuY29kZXIgPDwgc2Vj
dXJlOworICAgIGVuY29kZXIgPDwgc2Vzc2lvbjsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rl
cj4KK2Jvb2wgQ29va2llOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgQ29va2llJiBjb29raWUp
Cit7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShjb29raWUubmFtZSkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNvb2tpZS52YWx1ZSkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNvb2tpZS5kb21haW4pKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShjb29raWUucGF0
aCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNvb2tp
ZS5leHBpcmVzKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoY29va2llLmh0dHBPbmx5KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoY29va2llLnNlY3VyZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKGNvb2tpZS5zZXNzaW9uKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgcmV0dXJuIHRydWU7Cit9CiAKLSAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29u
c3QgQ29va2llJiBhLCBjb25zdCBDb29raWUmIGIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJl
dHVybiBhLm5hbWUgPT0gYi5uYW1lICYmIGEuZG9tYWluID09IGIuZG9tYWluICYmIGEucGF0aCA9
PSBiLnBhdGggJiYgYS5zZWN1cmUgPT0gYi5zZWN1cmU7Ci0gICAgICAgIH0KLSAgICB9OwogfQog
CiBuYW1lc3BhY2UgV1RGIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nv
b2tpZXNTdHJhdGVneS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29va2llc1N0cmF0ZWd5
LmgKaW5kZXggNjA1ZGMxZjQ0MjgyYWJkODQ4YWU4Zjg0Nzc0NTVlN2Q3YmRjNGIyMC4uZTA0OWJl
MzUwNTRkYTI0ZTAyM2Y5Y2JlZTA1MjBhMzE4ZTczMWY5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vQ29va2llc1N0cmF0ZWd5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vQ29va2llc1N0cmF0ZWd5LmgKQEAgLTQ1LDcgKzQ1LDYgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKFNlc3Npb25JRCwgY29u
c3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGdl
dFJhd0Nvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBVUkwmLCBWZWN0b3I8Q29va2llPiYpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgZGVsZXRlQ29va2llKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFVSTCYs
IGNvbnN0IFN0cmluZyYgY29va2llTmFtZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBhZGRDb29r
aWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiwgY29uc3QgQ29va2ll
JikgPSAwOwogCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB+Q29va2llc1N0cmF0ZWd5KCkgeyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9y
YWdlU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3Rv
cmFnZVNlc3Npb24uaAppbmRleCA2MmNmMmFkZjVjNDI2YWE1YzFhZTY2NGE2NmRmZmVkYzg0MzNl
MDJhLi5mMTQ4OWM2YjQyYTFkNDVhZjljYWE2MmNhMjZkMTcwNWI0NmIzNzQ4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNz
aW9uLmgKQEAgLTQxLDEyICs0MSwxOCBAQAogdHlwZWRlZiBzdHJ1Y3QgX1NvdXBDb29raWVKYXIg
U291cENvb2tpZUphcjsKICNlbmRpZgogCisjaWZkZWYgX19PQkpDX18KKyNpbmNsdWRlIDxvYmpj
L29iamMuaD4KKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE5ldHdvcmtp
bmdDb250ZXh0OwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgU291cE5ldHdvcmtTZXNz
aW9uOwogCitzdHJ1Y3QgQ29va2llOworCiBjbGFzcyBOZXR3b3JrU3RvcmFnZVNlc3Npb24gewog
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbik7IFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgpAQCAtNjEsNiArNjcsMTAgQEAgcHVibGljOgogICAg
IFNlc3Npb25JRCBzZXNzaW9uSUQoKSBjb25zdCB7IHJldHVybiBtX3Nlc3Npb25JRDsgfQogICAg
IENyZWRlbnRpYWxTdG9yYWdlJiBjcmVkZW50aWFsU3RvcmFnZSgpIHsgcmV0dXJuIG1fY3JlZGVu
dGlhbFN0b3JhZ2U7IH0KIAorI2lmZGVmIF9fT0JKQ19fCisgICAgTlNIVFRQQ29va2llU3RvcmFn
ZSAqbnNDb29raWVTdG9yYWdlKCkgY29uc3Q7CisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKENPQ09B
KSB8fCBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbihTZXNz
aW9uSUQsIFJldGFpblB0cjxDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmPik7CiAKQEAgLTkwLDYgKzEw
MCw4IEBAIHB1YmxpYzoKICAgICBOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCgpIGNvbnN0Owog
I2VuZGlmCiAKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENvb2tpZXMoY29uc3QgVmVjdG9y
PENvb2tpZT4mLCBjb25zdCBVUkwmLCBjb25zdCBVUkwmIG1haW5Eb2N1bWVudFVSTCk7CisKIHBy
aXZhdGU6CiAgICAgc3RhdGljIEhhc2hNYXA8U2Vzc2lvbklELCBzdGQ6OnVuaXF1ZV9wdHI8TmV0
d29ya1N0b3JhZ2VTZXNzaW9uPj4mIGdsb2JhbFNlc3Npb25NYXAoKTsKICAgICBTZXNzaW9uSUQg
bV9zZXNzaW9uSUQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1BsYXRmb3JtQ29va2llSmFyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Bs
YXRmb3JtQ29va2llSmFyLmgKaW5kZXggZDcyNzBjN2NhNjlkNGJiODMzZWQyMTg2NGE3YTcwNzFm
ZGQwZjhjYS4uZDA4MmM4YjZjZGIzZThiMzFiZmY3MzA0YzFjZmQxZTM1MDdhMjQ4OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9QbGF0Zm9ybUNvb2tpZUphci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUGxhdGZvcm1Db29raWVKYXIu
aApAQCAtNDYsNyArNDYsNiBAQCBXRUJDT1JFX0VYUE9SVCBib29sIGNvb2tpZXNFbmFibGVkKGNv
bnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFVSTCYgZmlycwogV0VCQ09SRV9FWFBP
UlQgU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJik7CiBXRUJDT1JF
X0VYUE9SVCBib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwg
Y29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmLCBWZWN0b3I8Q29va2llPiYpOwogV0VC
Q09SRV9FWFBPUlQgdm9pZCBkZWxldGVDb29raWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJik7Ci1XRUJDT1JFX0VYUE9SVCB2b2lkIGFkZENv
b2tpZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmLCBjb25zdCBDb29r
aWUmKTsKIFdFQkNPUkVfRVhQT1JUIHZvaWQgZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoY29uc3Qg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgSGFzaFNldDxTdHJpbmc+JiBob3N0bmFtZXMpOwogV0VC
Q09SRV9FWFBPUlQgdm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWVzKGNvbnN0IE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBjb29raWVIb3N0TmFtZXMpOwog
V0VCQ09SRV9FWFBPUlQgdm9pZCBkZWxldGVBbGxDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9Db29raWVKYXJDRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L0Nvb2tpZUphckNGTmV0LmNwcAppbmRleCA1NjMwNTVkNjY2NmE5OTJkZjY5NDVmMzIyOGM2ZWVj
ZmYyNDBmMWMxLi5jZjkyZmVhYzFiYjU0YjlmZTA5MzgwMmMzMDFlMTc1OTJlZWRhZGJlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZUphckNGTmV0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZUphckNG
TmV0LmNwcApAQCAtMjE4LDEyICsyMTgsNiBAQCB2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBOZXR3
b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdAogICAg
IH0KIH0KIAotdm9pZCBhZGRDb29raWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29u
c3QgVVJMJiwgY29uc3QgQ29va2llJikKLXsKLSAgICAvLyBGSVhNRTogaW1wbGVtZW50IHRoaXMg
Y29tbWFuZC4gPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE1NjI5OD4KLSAgICBub3RJbXBsZW1lbnRl
ZCgpOwotfQotCiB2b2lkIGdldEhvc3RuYW1lc1dpdGhDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiYgc2Vzc2lvbiwgSGFzaFNldDxTdHJpbmc+JiBob3N0bmFtZXMpCiB7CiAgICAg
UmV0YWluUHRyPENGQXJyYXlSZWY+IGNvb2tpZXNDRiA9IGFkb3B0Q0YoQ0ZIVFRQQ29va2llU3Rv
cmFnZUNvcHlDb29raWVzKHNlc3Npb24uY29va2llU3RvcmFnZSgpLmdldCgpKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vz
c2lvbkNGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29y
a1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwCmluZGV4IGJhMDZhNWI0MTRkY2I5NGM3Mjk1OWMzNWM5
OTdkM2Q3YjIzNjkyYjQuLjM0ZWVlYTE2ZTA3ZjY5ZjQ0ZDQzZjcyMDFjNjNlYjczYjA2NmU3N2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0
b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwCkBAIC0xNjYsNCArMTY2LDExIEBA
IHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRTaG91bGRQYXJ0aXRpb25Db29raWVzRm9y
SG9zdHMoY29uc3QgVmVjdG9yPFN0cmluCiAKICNlbmRpZiAvLyBIQVZFKENGTkVUV09SS19TVE9S
QUdFX1BBUlRJVElPTklORykKIAorI2lmICFQTEFURk9STShDT0NPQSkKK3ZvaWQgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpzZXRDb29raWVzKGNvbnN0IFZlY3RvcjxDb29raWU+JiwgY29uc3QgVVJM
JiwgY29uc3QgVVJMJikKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMuIDxodHRwczov
L3dlYmtpdC5vcmcvYi8xNTYyOTg+Cit9CisjZW5kaWYKKwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9Db29raWVDb2NvYS5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvQ29va2llQ29jb2EubW0KbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YzExMjJiMWIyODU3YzM5ZjBmYjYxMmFjZjI2ZDUxMzY3ODA4MTk1YwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvQ29va2llQ29jb2EubW0K
QEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSwgSW5jLiAg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJDb29raWUuaCIKKworI2ltcG9y
dCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitD
b29raWU6Om9wZXJhdG9yIE5TSFRUUENvb2tpZSAqKCkgY29uc3QKK3sKKyAgICAvLyBGSVhNRTog
ZXhpc3RpbmcgQVBJcyBkbyBub3QgcHJvdmlkZSBhIHdheSB0byBzZXQgaHR0cE9ubHkgd2l0aG91
dCBwYXJzaW5nIGhlYWRlcnMgZnJvbSBzY3JhdGNoLgorCisgICAgQkVHSU5fQkxPQ0tfT0JKQ19F
WENFUFRJT05TCisKKyAgICByZXR1cm4gW05TSFRUUENvb2tpZSBjb29raWVXaXRoUHJvcGVydGll
czpAeworICAgICAgICBOU0hUVFBDb29raWVOYW1lOiBuYW1lLAorICAgICAgICBOU0hUVFBDb29r
aWVWYWx1ZTogdmFsdWUsCisgICAgICAgIE5TSFRUUENvb2tpZURvbWFpbjogZG9tYWluLAorICAg
ICAgICBOU0hUVFBDb29raWVQYXRoOiBwYXRoLAorICAgICAgICBOU0hUVFBDb29raWVEb21haW46
IGRvbWFpbiwKKyAgICAgICAgTlNIVFRQQ29va2llU2VjdXJlOiBAKHNlY3VyZSksCisgICAgICAg
IE5TSFRUUENvb2tpZURpc2NhcmQ6IEAoc2Vzc2lvbiksCisgICAgICAgIE5TSFRUUENvb2tpZUV4
cGlyZXM6IFtOU0RhdGUgZGF0ZVdpdGhUaW1lSW50ZXJ2YWxTaW5jZTE5NzA6ZXhwaXJlcyAvIDEw
MDAuMF0sCisgICAgICAgIH1dOworCisgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2Nv
YS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40NGFlYWI3MGU5OWI1ZmEwYTg0ZWNmZDM1N2UzNDU4M2RlZmMwMWUw
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2Nv
YS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbQpAQCAtMCwwICsxLDU1IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE1IEFwcGxlLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcu
aCIKKyNpbXBvcnQgIk5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oIgorCisjaW1wb3J0ICJDb29raWUu
aCIKKyNpbXBvcnQgIlVSTC5oIgorI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0
Q29va2llcyhjb25zdCBWZWN0b3I8Q29va2llPiYgY29va2llcywgY29uc3QgVVJMJiB1cmwsIGNv
bnN0IFVSTCYgbWFpbkRvY3VtZW50VVJMKQoreworICAgIFJldGFpblB0cjxOU011dGFibGVBcnJh
eT4gbnNDb29raWVzID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aENh
cGFjaXR5OmNvb2tpZXMuc2l6ZSgpXSk7CisgICAgZm9yIChhdXRvIGNvb2tpZSA6IGNvb2tpZXMp
CisgICAgICAgIFtuc0Nvb2tpZXMgYWRkT2JqZWN0OihOU0hUVFBDb29raWUgKiljb29raWVdOwor
CisgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOworICAgIFtuc0Nvb2tpZVN0b3JhZ2Uo
KSBzZXRDb29raWVzOm5zQ29va2llcy5nZXQoKSBmb3JVUkw6KE5TVVJMICopdXJsIG1haW5Eb2N1
bWVudFVSTDooTlNVUkwgKiltYWluRG9jdW1lbnRVUkxdOworICAgIEVORF9CTE9DS19PQkpDX0VY
Q0VQVElPTlM7Cit9CisKK05TSFRUUENvb2tpZVN0b3JhZ2UgKk5ldHdvcmtTdG9yYWdlU2Vzc2lv
bjo6bnNDb29raWVTdG9yYWdlKCkgY29uc3QKK3sKKyAgICBhdXRvIGNmQ29va2llU3RvcmFnZSA9
IGNvb2tpZVN0b3JhZ2UoKTsKKyAgICBpZiAoIWNmQ29va2llU3RvcmFnZSB8fCBbTlNIVFRQQ29v
a2llU3RvcmFnZSBzaGFyZWRIVFRQQ29va2llU3RvcmFnZV0uX2Nvb2tpZVN0b3JhZ2UgPT0gY2ZD
b29raWVTdG9yYWdlKQorICAgICAgICByZXR1cm4gW05TSFRUUENvb2tpZVN0b3JhZ2Ugc2hhcmVk
SFRUUENvb2tpZVN0b3JhZ2VdOworCisgICAgcmV0dXJuIFtbW05TSFRUUENvb2tpZVN0b3JhZ2Ug
YWxsb2NdIF9pbml0V2l0aENGSFRUUENvb2tpZVN0b3JhZ2U6Y2ZDb29raWVTdG9yYWdlLmdldCgp
XSBhdXRvcmVsZWFzZV07Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJDdXJsLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJDdXJsLmNwcApp
bmRleCAyNGEyYzc0ZWUwMDdjNDM3NTdjMWE0OGY5MjZkMjUyMzIwNjlmNjBkLi45YjFiYjQ3NzAz
MGEwNzZlNTU1ZjljZTZiZTNiOTFiODgwMDY5NjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyQ3VybC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckN1cmwuY3BwCkBAIC0zMzIsMTIg
KzMzMiw2IEBAIHZvaWQgZGVsZXRlQ29va2llKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYs
IGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYpCiAgICAgLy8gRklYTUU6IE5vdCB5ZXQgaW1wbGVt
ZW50ZWQKIH0KIAotdm9pZCBhZGRDb29raWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwg
Y29uc3QgVVJMJiwgY29uc3QgQ29va2llJikKLXsKLSAgICAvLyBGSVhNRTogaW1wbGVtZW50IHRo
aXMgY29tbWFuZC4gPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE1NjI5Nj4KLSAgICBub3RJbXBsZW1l
bnRlZCgpOwotfQotCiB2b2lkIGdldEhvc3RuYW1lc1dpdGhDb29raWVzKGNvbnN0IE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYsIEhhc2hTZXQ8U3RyaW5nPiYgaG9zdG5hbWVzKQogewogICAgIC8vIEZJ
WE1FOiBOb3QgeWV0IGltcGxlbWVudGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL21hYy9Db29raWVKYXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL21hYy9Db29raWVKYXJNYWMubW0KaW5kZXggYzdjYzBmMDliYjI1NDU4NWRkOWE3
ZjU5ZDM1NDIyZDYxYjBlZjI2Yi4uMjNmNzAxNWU1Yjk0OTgzODI4MWUxOTJlMzIyZTNkZjk1ZWYw
ZjI1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQ29v
a2llSmFyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Nv
b2tpZUphck1hYy5tbQpAQCAtMzEsMTAgKzMxLDYgQEAKICNpbXBvcnQgIldlYkNvcmVTeXN0ZW1J
bnRlcmZhY2UuaCIKICNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+CiAKLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLXN0YXRpYyBOU0hUVFBDb29raWVTdG9yYWdlICpjb29raWVTdG9yYWdl
KGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYpOwotfQotCiAjaWYgIVVTRShDRlVSTENPTk5F
Q1RJT04pCiAKICNpbXBvcnQgIkNvb2tpZS5oIgpAQCAtMjYwLDM4ICsyNTYsNiBAQCB2b2lkIGRl
bGV0ZUNvb2tpZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVS
TCYgdXJsLCBjb25zdCBTdAogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiB9CiAKLXZv
aWQgYWRkQ29va2llKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3Qg
VVJMJiB1cmwsIGNvbnN0IENvb2tpZSYgY29va2llKQotewotICAgIEJFR0lOX0JMT0NLX09CSkNf
RVhDRVBUSU9OUzsKLQotICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29r
aWVTdG9yYWdlID0gc2Vzc2lvbi5jb29raWVTdG9yYWdlKCk7Ci0KLSAgICAvLyBGSVhNRTogZXhp
c3RpbmcgQVBJcyBkbyBub3QgcHJvdmlkZSBhIHdheSB0byBzZXQgaHR0cE9ubHkgd2l0aG91dCBw
YXJzaW5nIGhlYWRlcnMgZnJvbSBzY3JhdGNoLgotCi0gICAgTlNVUkwgKm9yaWdpblVSTCA9IHVy
bDsKLSAgICBOU0hUVFBDb29raWUgKmh0dHBDb29raWUgPSBbTlNIVFRQQ29va2llIGNvb2tpZVdp
dGhQcm9wZXJ0aWVzOkB7Ci0gICAgICAgIE5TSFRUUENvb2tpZU5hbWU6IGNvb2tpZS5uYW1lLAot
ICAgICAgICBOU0hUVFBDb29raWVWYWx1ZTogY29va2llLnZhbHVlLAotICAgICAgICBOU0hUVFBD
b29raWVEb21haW46IGNvb2tpZS5kb21haW4sCi0gICAgICAgIE5TSFRUUENvb2tpZVBhdGg6IGNv
b2tpZS5wYXRoLAotICAgICAgICBOU0hUVFBDb29raWVPcmlnaW5VUkw6IG9yaWdpblVSTCwKLSAg
ICAgICAgTlNIVFRQQ29va2llU2VjdXJlOiBAKGNvb2tpZS5zZWN1cmUpLAotICAgICAgICBOU0hU
VFBDb29raWVEaXNjYXJkOiBAKGNvb2tpZS5zZXNzaW9uKSwKLSAgICAgICAgTlNIVFRQQ29va2ll
RXhwaXJlczogW05TRGF0ZSBkYXRlV2l0aFRpbWVJbnRlcnZhbFNpbmNlMTk3MDpjb29raWUuZXhw
aXJlcyAvIDEwMDAuMF0sCi0gICAgfV07Ci0KLSNpZiAhVVNFKENGVVJMQ09OTkVDVElPTikKLSAg
ICBpZiAoIWNvb2tpZVN0b3JhZ2UpIHsKLSAgICAgICAgW1dlYkNvcmU6OmNvb2tpZVN0b3JhZ2Uo
c2Vzc2lvbikgc2V0Q29va2llOmh0dHBDb29raWVdOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
I2VuZGlmIC8vICFVU0UoQ0ZVUkxDT05ORUNUSU9OKQotCi0gICAgQ0ZIVFRQQ29va2llU3RvcmFn
ZVNldENvb2tpZShjb29raWVTdG9yYWdlLmdldCgpLCBbaHR0cENvb2tpZSBfQ0ZIVFRQQ29va2ll
XSk7Ci0KLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwotfQotCiB2b2lkIGdldEhvc3Ru
YW1lc1dpdGhDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgSGFz
aFNldDxTdHJpbmc+JiBob3N0bmFtZXMpCiB7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJ
T05TOwpAQCAtMzE1LDE1ICsyNzksNiBAQCB2b2lkIGRlbGV0ZUFsbENvb2tpZXMoY29uc3QgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uKQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0
YXRpYyBOU0hUVFBDb29raWVTdG9yYWdlICpjb29raWVTdG9yYWdlKGNvbnN0IE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiYgc2Vzc2lvbikKLXsKLSAgICBhdXRvIGNvb2tpZVN0b3JhZ2UgPSBzZXNzaW9u
LmNvb2tpZVN0b3JhZ2UoKTsKLSAgICBpZiAoIWNvb2tpZVN0b3JhZ2UgfHwgW05TSFRUUENvb2tp
ZVN0b3JhZ2Ugc2hhcmVkSFRUUENvb2tpZVN0b3JhZ2VdLl9jb29raWVTdG9yYWdlID09IGNvb2tp
ZVN0b3JhZ2UpCi0gICAgICAgIHJldHVybiBbTlNIVFRQQ29va2llU3RvcmFnZSBzaGFyZWRIVFRQ
Q29va2llU3RvcmFnZV07Ci0KLSAgICByZXR1cm4gW1tbTlNIVFRQQ29va2llU3RvcmFnZSBhbGxv
Y10gX2luaXRXaXRoQ0ZIVFRQQ29va2llU3RvcmFnZTpjb29raWVTdG9yYWdlLmdldCgpXSBhdXRv
cmVsZWFzZV07Ci19Ci0KIHZvaWQgZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lcyhjb25zdCBOZXR3
b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBob3N0bmFt
ZXMpCiB7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwpAQCAtMzQ4LDcgKzMwMyw3
IEBAIHZvaWQgZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNl
c3Npb24mIHNlc3Npb24sIGNvbnN0IFZlY3RvCiAgICAgICAgICAgICB3a0RlbGV0ZUhUVFBDb29r
aWUoY29va2llU3RvcmFnZS5nZXQoKSwgY29va2llLmdldCgpKTsKICAgICB9CiAKLSAgICBbV2Vi
Q29yZTo6Y29va2llU3RvcmFnZShzZXNzaW9uKSBfc2F2ZUNvb2tpZXNdOworICAgIFtzZXNzaW9u
Lm5zQ29va2llU3RvcmFnZSgpIF9zYXZlQ29va2llc107CiAKICAgICBFTkRfQkxPQ0tfT0JKQ19F
WENFUFRJT05TOwogfQpAQCAtMzYxLDcgKzMxNiw3IEBAIHZvaWQgZGVsZXRlQWxsQ29va2llc01v
ZGlmaWVkU2luY2UoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBzdGQ6OmNo
CiAgICAgTlNUaW1lSW50ZXJ2YWwgdGltZUludGVydmFsID0gc3RkOjpjaHJvbm86OmR1cmF0aW9u
X2Nhc3Q8c3RkOjpjaHJvbm86OmR1cmF0aW9uPGRvdWJsZT4+KHRpbWVQb2ludC50aW1lX3NpbmNl
X2Vwb2NoKCkpLmNvdW50KCk7CiAgICAgTlNEYXRlICpkYXRlID0gW05TRGF0ZSBkYXRlV2l0aFRp
bWVJbnRlcnZhbFNpbmNlMTk3MDp0aW1lSW50ZXJ2YWxdOwogCi0gICAgTlNIVFRQQ29va2llU3Rv
cmFnZSAqc3RvcmFnZSA9IGNvb2tpZVN0b3JhZ2Uoc2Vzc2lvbik7CisgICAgYXV0byAqc3RvcmFn
ZSA9IHNlc3Npb24ubnNDb29raWVTdG9yYWdlKCk7CiAKICAgICBbc3RvcmFnZSByZW1vdmVDb29r
aWVzU2luY2VEYXRlOmRhdGVdOwogICAgIFtzdG9yYWdlIF9zYXZlQ29va2llc107CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ29va2llSmFyU291cC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ29va2llSmFyU291cC5j
cHAKaW5kZXggMzFmMDA5ZDE3YzRkZmM0NWYyNGU0N2I0YzBiOGZkMjBkNTYxMDA2NC4uOGUwNTM2
NDhkNTdlNzYxNmU5M2YxOWI0ZTBhN2JiNDBjNjdlMjYxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0Nvb2tpZUphclNvdXAuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Db29raWVKYXJTb3VwLmNwcApAQCAtMTQ0
LDMzICsxNDQsNiBAQCB2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Np
b24mIHNlc3Npb24sIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdAogICAgIH0KIH0KIAotc3RhdGlj
IFNvdXBEYXRlKiBtc1RvU291cERhdGUoZG91YmxlIG1zKQotewotICAgIGludCB5ZWFyID0gbXNU
b1llYXIobXMpOwotICAgIGludCBkYXlPZlllYXIgPSBkYXlJblllYXIobXMsIHllYXIpOwotICAg
IGJvb2wgbGVhcFllYXIgPSBpc0xlYXBZZWFyKHllYXIpOwotICAgIHJldHVybiBzb3VwX2RhdGVf
bmV3KHllYXIsIG1vbnRoRnJvbURheUluWWVhcihkYXlPZlllYXIsIGxlYXBZZWFyKSwgZGF5SW5N
b250aEZyb21EYXlJblllYXIoZGF5T2ZZZWFyLCBsZWFwWWVhciksIG1zVG9Ib3VycyhtcyksIG1z
VG9NaW51dGVzKG1zKSwgc3RhdGljX2Nhc3Q8aW50PihtcyAvIDEwMDApICUgNjApOwotfQotCi1z
dGF0aWMgU291cENvb2tpZSogdG9Tb3VwQ29va2llKGNvbnN0IENvb2tpZSYgY29va2llKQotewot
ICAgIFNvdXBDb29raWUqIHNvdXBDb29raWUgPSBzb3VwX2Nvb2tpZV9uZXcoY29va2llLm5hbWUu
dXRmOCgpLmRhdGEoKSwgY29va2llLnZhbHVlLnV0ZjgoKS5kYXRhKCksCi0gICAgICAgIGNvb2tp
ZS5kb21haW4udXRmOCgpLmRhdGEoKSwgY29va2llLnBhdGgudXRmOCgpLmRhdGEoKSwgLTEpOwot
ICAgIHNvdXBfY29va2llX3NldF9odHRwX29ubHkoc291cENvb2tpZSwgY29va2llLmh0dHBPbmx5
KTsKLSAgICBzb3VwX2Nvb2tpZV9zZXRfc2VjdXJlKHNvdXBDb29raWUsIGNvb2tpZS5zZWN1cmUp
OwotICAgIGlmICghY29va2llLnNlc3Npb24pIHsKLSAgICAgICAgU291cERhdGUqIGRhdGUgPSBt
c1RvU291cERhdGUoY29va2llLmV4cGlyZXMpOwotICAgICAgICBzb3VwX2Nvb2tpZV9zZXRfZXhw
aXJlcyhzb3VwQ29va2llLCBkYXRlKTsKLSAgICAgICAgc291cF9kYXRlX2ZyZWUoZGF0ZSk7Ci0g
ICAgfQotICAgIHJldHVybiBzb3VwQ29va2llOwotfQotCi12b2lkIGFkZENvb2tpZShjb25zdCBO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYsIGNvbnN0IENvb2tpZSYg
Y29va2llKQotewotICAgIHNvdXBfY29va2llX2phcl9hZGRfY29va2llKHNlc3Npb24uY29va2ll
U3RvcmFnZSgpLCB0b1NvdXBDb29raWUoY29va2llKSk7Ci19Ci0KIHZvaWQgZ2V0SG9zdG5hbWVz
V2l0aENvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBIYXNoU2V0
PFN0cmluZz4mIGhvc3RuYW1lcykKIHsKICAgICBHVW5pcXVlUHRyPEdTTGlzdD4gY29va2llcyhz
b3VwX2Nvb2tpZV9qYXJfYWxsX2Nvb2tpZXMoc2Vzc2lvbi5jb29raWVTdG9yYWdlKCkpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3Rv
cmFnZVNlc3Npb25Tb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291
cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcAppbmRleCA4NDE3NjkxZTg1ZTc1MmFjN2Vl
NWJlNTc1ZjQxYzk4YTRmY2IwYTU5Li44NWFhNGVmMTgxOGQxYTY0ZTIzZGFiY2E5NTFhN2ZjM2U4
OTg2MzE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAv
TmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAuY3BwCkBAIC0zMCw2ICsz
MCw3IEBACiAKICNpZiBVU0UoU09VUCkKIAorI2luY2x1ZGUgIkNvb2tpZS5oIgogI2luY2x1ZGUg
IlJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSAiU291cE5ldHdvcmtTZXNzaW9uLmgiCiAjaW5j
bHVkZSA8bGlic291cC9zb3VwLmg+CkBAIC0yNzQsNiArMjc1LDM1IEBAIHZvaWQgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpzYXZlQ3JlZGVudGlhbFRvUGVyc2lzdGVudFN0b3JhZ2UoY29uc3QgUHJv
dGVjdGlvblNwCiAjZW5kaWYKIH0KIAorc3RhdGljIFNvdXBEYXRlKiBtc1RvU291cERhdGUoZG91
YmxlIG1zKQoreworICAgIGludCB5ZWFyID0gbXNUb1llYXIobXMpOworICAgIGludCBkYXlPZlll
YXIgPSBkYXlJblllYXIobXMsIHllYXIpOworICAgIGJvb2wgbGVhcFllYXIgPSBpc0xlYXBZZWFy
KHllYXIpOworICAgIHJldHVybiBzb3VwX2RhdGVfbmV3KHllYXIsIG1vbnRoRnJvbURheUluWWVh
cihkYXlPZlllYXIsIGxlYXBZZWFyKSwgZGF5SW5Nb250aEZyb21EYXlJblllYXIoZGF5T2ZZZWFy
LCBsZWFwWWVhciksIG1zVG9Ib3VycyhtcyksIG1zVG9NaW51dGVzKG1zKSwgc3RhdGljX2Nhc3Q8
aW50PihtcyAvIDEwMDApICUgNjApOworfQorCitzdGF0aWMgU291cENvb2tpZSogdG9Tb3VwQ29v
a2llKGNvbnN0IENvb2tpZSYgY29va2llKQoreworICAgIFNvdXBDb29raWUqIHNvdXBDb29raWUg
PSBzb3VwX2Nvb2tpZV9uZXcoY29va2llLm5hbWUudXRmOCgpLmRhdGEoKSwgY29va2llLnZhbHVl
LnV0ZjgoKS5kYXRhKCksCisgICAgICAgIGNvb2tpZS5kb21haW4udXRmOCgpLmRhdGEoKSwgY29v
a2llLnBhdGgudXRmOCgpLmRhdGEoKSwgLTEpOworICAgIHNvdXBfY29va2llX3NldF9odHRwX29u
bHkoc291cENvb2tpZSwgY29va2llLmh0dHBPbmx5KTsKKyAgICBzb3VwX2Nvb2tpZV9zZXRfc2Vj
dXJlKHNvdXBDb29raWUsIGNvb2tpZS5zZWN1cmUpOworICAgIGlmICghY29va2llLnNlc3Npb24p
IHsKKyAgICAgICAgU291cERhdGUqIGRhdGUgPSBtc1RvU291cERhdGUoY29va2llLmV4cGlyZXMp
OworICAgICAgICBzb3VwX2Nvb2tpZV9zZXRfZXhwaXJlcyhzb3VwQ29va2llLCBkYXRlKTsKKyAg
ICAgICAgc291cF9kYXRlX2ZyZWUoZGF0ZSk7CisgICAgfQorICAgIHJldHVybiBzb3VwQ29va2ll
OworfQorCit2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q29va2llcyhjb25zdCBWZWN0
b3I8Q29va2llPiYgY29va2llcywgY29uc3QgVVJMJiwgY29uc3QgVVJMJikKK3sKKyAgICBmb3Ig
KGF1dG8gY29va2llIDogY29va2llcykKKyAgICAgICAgc291cF9jb29raWVfamFyX2FkZF9jb29r
aWUoY29va2llU3RvcmFnZSgpLCB0b1NvdXBDb29raWUoY29va2llKSk7Cit9CisKKwogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gVVNFKFNPVVApCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCBiL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCmlu
ZGV4IGE2MDI3MWIyNjUxZjRkMjVlYjM3NDJhMjYyOTllZTBhMDdhY2RiNzguLmNhOTM4YmVkNzhm
MjdjYzBhOGE3NDJmMDQ0NTdlODU2MDAxMjU3NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCkBAIC01NSw3
ICs1NSw2IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZh
bHVlKFdlYkNvcmU6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBXZWJDb3JlOjpVUkwmKSBvdmVycmlkZTsKICAgICBib29sIGdldFJhd0Nvb2tpZXMoY29u
c3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpVUkwmLCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYp
IG92ZXJyaWRlOwogICAgIHZvaWQgZGVsZXRlQ29va2llKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFN0cmluZyYpIG92ZXJy
aWRlOwotICAgIHZvaWQgYWRkQ29va2llKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFdlYkNvcmU6OkNvb2tpZSYpIG92ZXJy
aWRlOwogCiAgICAgLy8gV2ViQ29yZTo6UGFzdGVib2FyZFN0cmF0ZWd5CiAjaWYgUExBVEZPUk0o
SU9TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxh
dGZvcm1TdHJhdGVnaWVzLm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzLm1tCmluZGV4IDE5ZmY1ZTBiZWQwNDI2MDRjZWNkYWUxNmU3MTMz
MTBkYTI0NzUzNmIuLmFjMmZiNDQzZGFjYTdmNzc2NzU2NmNmYjIyYWZmNzlkOTUxMDUzYjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3Ry
YXRlZ2llcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0
Zm9ybVN0cmF0ZWdpZXMubW0KQEAgLTExMCwxMSArMTEwLDYgQEAgdm9pZCBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OmRlbGV0ZUNvb2tpZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Np
b24sIGMKICAgICBXZWJDb3JlOjpkZWxldGVDb29raWUoc2Vzc2lvbiwgdXJsLCBjb29raWVOYW1l
KTsKIH0KIAotdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmFkZENvb2tpZShjb25zdCBOZXR3
b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBDb29raWUm
IGNvb2tpZSkKLXsKLSAgICBXZWJDb3JlOjphZGRDb29raWUoc2Vzc2lvbiwgdXJsLCBjb29raWUp
OwotfQotCiB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0VHlwZXMoVmVjdG9yPFN0cmlu
Zz4mIHR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQogewogICAgIFBsYXRmb3Jt
UGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuZ2V0VHlwZXModHlwZXMpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuY3BwIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuY3BwCmluZGV4IDE0MTYyNDJmMTJlMWExYmYwY2E2NDE5YmYwMzU3MzZhNDAy
MWU4MzQuLjFmOTJjZThmODk0MDRmNzk2YzlkZWZiOWU3OWMzZmUzZmEyZmM0YWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKQEAgLTI3OSwxMSArMjc5LDYgQEAgdm9pZCBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGVsZXRlQ29va2llKFNlc3Npb25JRCBzZXNzaW9uSUQs
IGNvbnN0IFVSTCYKICAgICBXZWJDb3JlOjpkZWxldGVDb29raWUoc3RvcmFnZVNlc3Npb24oc2Vz
c2lvbklEKSwgdXJsLCBjb29raWVOYW1lKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6YWRkQ29va2llKFNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJs
LCBjb25zdCBDb29raWUmIGNvb2tpZSkKLXsKLSAgICBXZWJDb3JlOjphZGRDb29raWUoc3RvcmFn
ZVNlc3Npb24oc2Vzc2lvbklEKSwgdXJsLCBjb29raWUpOwotfQotCiB2b2lkIE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdpc3RlckZpbGVCbG9iVVJMKGNvbnN0IFVSTCYgdXJsLCBj
b25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgZXh0ZW5z
aW9uSGFuZGxlLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQogewogICAgIFJlZlB0cjxTYW5k
Ym94RXh0ZW5zaW9uPiBleHRlbnNpb24gPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUoZXh0ZW5z
aW9uSGFuZGxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4IDk3MjkzMTRkNjc3Zjkx
M2JmMzUxZGZiMDU2MDhmOWI5Y2E4MDk1MGYuLjI0Y2YwYjBmNjQyMmJkNjJiMmM4MTc4MGI4MzBk
ZDQ0NmEwYWYzZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtOTEsNyArOTEsNiBA
QCBwcml2YXRlOgogICAgIHZvaWQgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoV2ViQ29y
ZTo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNv
cmU6OlVSTCYsIFN0cmluZyYgcmVzdWx0KTsKICAgICB2b2lkIGdldFJhd0Nvb2tpZXMoV2ViQ29y
ZTo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNv
cmU6OlVSTCYsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jik7CiAgICAgdm9pZCBkZWxldGVDb29r
aWUoV2ViQ29yZTo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBTdHJpbmcm
IGNvb2tpZU5hbWUpOwotICAgIHZvaWQgYWRkQ29va2llKFdlYkNvcmU6OlNlc3Npb25JRCwgY29u
c3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgV2ViQ29yZTo6Q29va2llJik7CiAKICAgICB2b2lkIHJl
Z2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgU3RyaW5nJiBwYXRo
LCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRU
eXBlKTsKICAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTChjb25zdCBXZWJDb3JlOjpVUkwmLCBWZWN0
b3I8V2ViQ29yZTo6QmxvYlBhcnQ+JiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCBhMjYzYTRlZGUz
ODhlYmUyNWY3YTY2NzkxNmNlMGJlMGQ5ZDk5ZTNkLi4wYjM5ZDdlZDAxYTQ1MWMwYzNhN2ZjYmUw
NjgwMzk3MmZjYmYyNDFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNz
YWdlcy5pbgpAQCAtMzgsNyArMzgsNiBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgQ29va2llUmVxdWVzdEhlYWRlckZpZWxk
VmFsdWUoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6VVJMIGZpcnN0UGFy
dHksIFdlYkNvcmU6OlVSTCB1cmwpIC0+IChTdHJpbmcgcmVzdWx0KQogICAgIEdldFJhd0Nvb2tp
ZXMoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6VVJMIGZpcnN0UGFydHks
IFdlYkNvcmU6OlVSTCB1cmwpIC0+IChWZWN0b3I8V2ViQ29yZTo6Q29va2llPiBjb29raWVzKQog
ICAgIERlbGV0ZUNvb2tpZShXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpV
UkwgdXJsLCBTdHJpbmcgY29va2llTmFtZSkKLSAgICBBZGRDb29raWUoV2ViQ29yZTo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgV2ViQ29yZTo6VVJMIHVybCwgc3RydWN0IFdlYkNvcmU6OkNvb2tpZSBj
b29raWUpCiAKICAgICBSZWdpc3RlckZpbGVCbG9iVVJMKFdlYkNvcmU6OlVSTCB1cmwsIFN0cmlu
ZyBwYXRoLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBleHRlbnNpb25IYW5kbGUs
IFN0cmluZyBjb250ZW50VHlwZSkKICAgICBSZWdpc3RlckJsb2JVUkwoV2ViQ29yZTo6VVJMIHVy
bCwgVmVjdG9yPFdlYkNvcmU6OkJsb2JQYXJ0PiBibG9iUGFydHMsIFN0cmluZyBjb250ZW50VHlw
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAK
aW5kZXggODRjY2Y4ZjQ5YjQ0NGMzNDM5ZmI2NWFhZGUwYjc4ZjY5ZWE4MWZmYi4uOTBmNmViYjQ4
N2FhZmIzODU4M2UyNmYyYmIxOWQ1NGQ3MjBhMTdmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
U2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTMxLDcgKzMxLDYgQEAKICNpbmNs
dWRlIDxXZWJDb3JlL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9CbG9iUGFydC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ2VydGlmaWNhdGVJbmZvLmg+Ci0jaW5j
bHVkZSA8V2ViQ29yZS9Db29raWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NyZWRlbnRpYWwuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0N1cnNvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGF0YWJhc2VE
ZXRhaWxzLmg+CkBAIC0xMjg0LDQxICsxMjgzLDYgQEAgYm9vbCBBcmd1bWVudENvZGVyPENvbXBv
c2l0aW9uVW5kZXJsaW5lPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIENvbXBvc2l0aW9uVW4K
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotCi12b2lkIEFyZ3VtZW50Q29kZXI8Q29va2llPjo6ZW5j
b2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IENvb2tpZSYgY29va2llKQotewotICAgIGVuY29k
ZXIgPDwgY29va2llLm5hbWU7Ci0gICAgZW5jb2RlciA8PCBjb29raWUudmFsdWU7Ci0gICAgZW5j
b2RlciA8PCBjb29raWUuZG9tYWluOwotICAgIGVuY29kZXIgPDwgY29va2llLnBhdGg7Ci0gICAg
ZW5jb2RlciA8PCBjb29raWUuZXhwaXJlczsKLSAgICBlbmNvZGVyIDw8IGNvb2tpZS5odHRwT25s
eTsKLSAgICBlbmNvZGVyIDw8IGNvb2tpZS5zZWN1cmU7Ci0gICAgZW5jb2RlciA8PCBjb29raWUu
c2Vzc2lvbjsKLX0KLQotYm9vbCBBcmd1bWVudENvZGVyPENvb2tpZT46OmRlY29kZShEZWNvZGVy
JiBkZWNvZGVyLCBDb29raWUmIGNvb2tpZSkKLXsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNv
b2tpZS5uYW1lKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoY29va2llLnZhbHVlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUoY29va2llLmRvbWFpbikpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKGNvb2tpZS5wYXRoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoY29va2llLmV4cGlyZXMpKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShjb29raWUuaHR0cE9ubHkpKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShjb29raWUuc2VjdXJlKSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoY29va2llLnNlc3Np
b24pKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQogdm9p
ZCBBcmd1bWVudENvZGVyPERhdGFiYXNlRGV0YWlscz46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVy
LCBjb25zdCBEYXRhYmFzZURldGFpbHMmIGRldGFpbHMpCiB7CiAgICAgZW5jb2RlciA8PCBkZXRh
aWxzLm5hbWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJn
dW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuaAppbmRleCA3NDIyNzdlYjg0YzRmY2MzY2ViN2I4YTc1MmViNDQ1YTkyZjI2MDg0Li5lZmI3
YjE3Mzg5NWJhYmExMjYzNTI2ZTZmZTQzODFlNDY2ODI3YTkwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCkBAIC04Myw3ICs4Myw2IEBAIGNsYXNz
IFVzZXJTdHlsZVNoZWV0OwogY2xhc3MgVXNlclNjcmlwdDsKIGNsYXNzIFVSTDsKIHN0cnVjdCBD
b21wb3NpdGlvblVuZGVybGluZTsKLXN0cnVjdCBDb29raWU7CiBzdHJ1Y3QgRGljdGF0aW9uQWx0
ZXJuYXRpdmU7CiBzdHJ1Y3QgRGljdGlvbmFyeVBvcHVwSW5mbzsKIHN0cnVjdCBFdmVudFRyYWNr
aW5nUmVnaW9uczsKQEAgLTQwNSwxMSArNDA0LDYgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1l
bnRDb2RlcjxXZWJDb3JlOjpDb21wb3NpdGlvblVuZGVybGluZT4gewogICAgIHN0YXRpYyBib29s
IGRlY29kZShEZWNvZGVyJiwgV2ViQ29yZTo6Q29tcG9zaXRpb25VbmRlcmxpbmUmKTsKIH07CiAK
LXRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Q29va2llPiB7Ci0gICAg
c3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpDb29raWUmKTsKLSAg
ICBzdGF0aWMgYm9vbCBkZWNvZGUoRGVjb2RlciYsIFdlYkNvcmU6OkNvb2tpZSYpOwotfTsKLQog
dGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpEYXRhYmFzZURldGFpbHM+
IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OkRhdGFi
YXNlRGV0YWlscyYpOwogICAgIHN0YXRpYyBib29sIGRlY29kZShEZWNvZGVyJiwgV2ViQ29yZTo6
RGF0YWJhc2VEZXRhaWxzJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKaW5kZXggZGU1YmU5ZTJk
OTAzYTBhMjA0OWY0NmUyYjcwZGM0MDIyYjRiNDliZi4uNDhjYWRjNzEyNGY5ZGJlNjg1YmJkZTQ4
Y2IzZmVlM2QxODM5MTZkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1
dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcApAQCAtNzI3LDcgKzcy
NywxMCBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjphZGRTaW5nbGVDb29raWUoRXJyb3JT
dHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbgogICAgICAgICBGQUlMX1dJVEhfUFJFREVG
SU5FRF9FUlJPUl9BTkRfREVUQUlMUyhNaXNzaW5nUGFyYW1ldGVyLCAiVGhlIHBhcmFtZXRlciAn
aHR0cE9ubHknIHdhcyBub3QgZm91bmQuIik7CiAKICAgICBXZWJDb29raWVNYW5hZ2VyUHJveHkq
IGNvb2tpZU1hbmFnZXIgPSBtX3Byb2Nlc3NQb29sLT5zdXBwbGVtZW50PFdlYkNvb2tpZU1hbmFn
ZXJQcm94eT4oKTsKLSAgICBjb29raWVNYW5hZ2VyLT5hZGRDb29raWUoV2ViQ29yZTo6U2Vzc2lv
bklEOjpkZWZhdWx0U2Vzc2lvbklEKCksIGNvb2tpZSwgYWN0aXZlVVJMLmhvc3QoKSk7CisKKyAg
ICAvLyBGSVhNRTogVXNpbmcgYWN0aXZlVVJMIGhlcmUgdHdpY2UgaXMgYmFzaWNhbGx5IHNheWlu
ZyAidGhpcyBpcyBhbHdheXMgaW4gdGhlIGNvbnRleHQgb2YgdGhlIG1haW4gZG9jdW1lbnQiCisg
ICAgLy8gd2hpY2ggcHJvYmFibHkgaXNuJ3QgYWNjdXJhdGUuCisgICAgY29va2llTWFuYWdlci0+
c2V0Q29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSwgeyBjb29r
aWUgfSwgYWN0aXZlVVJMLCBhY3RpdmVVUkwpOwogCiAgICAgY2FsbGJhY2stPnNlbmRTdWNjZXNz
KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFu
YWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2Vy
UHJveHkuY3BwCmluZGV4IDA4YTc5NzkyZWEwNjIzOWVkNTFjOGIwZDhiMWEzNDE1Y2E1YTI3NjYu
LjVkODFmYWQwMDE1ZGIxZDc5OThmYzIyNzkzOTQyOWJjZmY0ZWMzNmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkuY3BwCkBAIC0xMjks
OSArMTI5LDkgQEAgdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRlbGV0ZUFsbENvb2tpZXNN
b2RpZmllZFNpbmNlKFdlYkNvcmU6OlNlc3Npb25JRCBzZXMKICAgICBwcm9jZXNzUG9vbCgpLT5z
ZW5kVG9OZXR3b3JraW5nUHJvY2Vzc1JlbGF1bmNoaW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6Oldl
YkNvb2tpZU1hbmFnZXI6OkRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKHNlc3Npb25JRCwg
dGltZSkpOwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6YWRkQ29va2llKFdlYkNv
cmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OkNvb2tpZSYgY29va2llLCBj
b25zdCBTdHJpbmcmIGhvc3RuYW1lKQordm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OnNldENv
b2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6
OkNvb2tpZT4mIGNvb2tpZXMsIGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsLCBjb25zdCBXZWJDb3Jl
OjpVUkwmIG1haW5Eb2N1bWVudFVSTCkKIHsKLSAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9OZXR3
b3JraW5nUHJvY2Vzc1JlbGF1bmNoaW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6OldlYkNvb2tpZU1h
bmFnZXI6OkFkZENvb2tpZShzZXNzaW9uSUQsIGNvb2tpZSwgaG9zdG5hbWUpKTsKKyAgICBwcm9j
ZXNzUG9vbCgpLT5zZW5kVG9OZXR3b3JraW5nUHJvY2Vzc1JlbGF1bmNoaW5nSWZOZWNlc3Nhcnko
TWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OlNldENvb2tpZXMoc2Vzc2lvbklELCBjb29raWVz
LCB1cmwsIG1haW5Eb2N1bWVudFVSTCkpOwogfQogCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94
eTo6c3RhcnRPYnNlcnZpbmdDb29raWVDaGFuZ2VzKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9u
SUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdl
clByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5
LmgKaW5kZXggNjVkMDQ3YzFlMzhlNTk5MGRlMDViMDZlMjhhYTNlODI0ZmQ2ZTI3Yi4uNGFkNjc2
YzRiZGU3OGJhM2ZkMTg0YTZkNzkwY2MwN2ZiYTdmZTdiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkuaApAQCAtNjksNyArNjksOCBAQCBw
dWJsaWM6CiAgICAgdm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWUoV2ViQ29yZTo6U2Vzc2lv
bklELCBjb25zdCBTdHJpbmcmIGhvc3RuYW1lKTsKICAgICB2b2lkIGRlbGV0ZUFsbENvb2tpZXMo
V2ViQ29yZTo6U2Vzc2lvbklEKTsKICAgICB2b2lkIGRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNp
bmNlKFdlYkNvcmU6OlNlc3Npb25JRCwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9w
b2ludCk7Ci0gICAgdm9pZCBhZGRDb29raWUoV2ViQ29yZTo6U2Vzc2lvbklELCBjb25zdCBXZWJD
b3JlOjpDb29raWUmLCBjb25zdCBTdHJpbmcmIGhvc3RuYW1lKTsKKworICAgIHZvaWQgc2V0Q29v
a2llcyhXZWJDb3JlOjpTZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jiwg
Y29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBtYWluRG9jdW1lbnRVUkwp
OwogCiAgICAgdm9pZCBzZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KEhUVFBDb29raWVBY2NlcHRQ
b2xpY3kpOwogICAgIHZvaWQgZ2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShzdGQ6OmZ1bmN0aW9u
PHZvaWQgKEhUVFBDb29raWVBY2NlcHRQb2xpY3ksIENhbGxiYWNrQmFzZTo6RXJyb3IpPik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFu
YWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFu
YWdlci5jcHAKaW5kZXggNGJmNjc3M2RjMDBhYjZjM2M1NjQ5NmFjNDk1NzRjYjg0ODA1NzE4ZC4u
Y2EzYThhMWY5MTRmOGI0ZTNlY2I4YmY4MWM2YjcxMTdhZGM3OTVlYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmNwcApA
QCAtODMsMTAgKzgzLDEwIEBAIHZvaWQgV2ViQ29va2llTWFuYWdlcjo6ZGVsZXRlQWxsQ29va2ll
c01vZGlmaWVkU2luY2UoU2Vzc2lvbklEIHNlc3Npb25JRCwgc3RkOjpjCiAgICAgICAgIFdlYkNv
cmU6OmRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKCpzdG9yYWdlU2Vzc2lvbiwgdGltZSk7
CiB9CiAKLXZvaWQgV2ViQ29va2llTWFuYWdlcjo6YWRkQ29va2llKFNlc3Npb25JRCBzZXNzaW9u
SUQsIGNvbnN0IENvb2tpZSYgY29va2llLCBjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQordm9pZCBX
ZWJDb29raWVNYW5hZ2VyOjpzZXRDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IGNvbnN0IFZlY3RvcjxDb29raWU+JiBjb29raWVzLCBjb25zdCBVUkwmIHVybCwgY29uc3QgVVJM
JiBtYWluRG9jdW1lbnRVUkwpCiB7CiAgICAgaWYgKGF1dG8qIHN0b3JhZ2VTZXNzaW9uID0gTmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQotICAgICAgICBX
ZWJDb3JlOjphZGRDb29raWUoKnN0b3JhZ2VTZXNzaW9uLCBVUkwoVVJMKCksIGhvc3RuYW1lKSwg
Y29va2llKTsKKyAgICAgICAgc3RvcmFnZVNlc3Npb24tPnNldENvb2tpZXMoY29va2llcywgdXJs
LCBtYWluRG9jdW1lbnRVUkwpOwogfQogCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXI6Om5vdGlmeUNv
b2tpZXNEaWRDaGFuZ2UoU2Vzc2lvbklEIHNlc3Npb25JRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5oCmluZGV4IDdlZDY1OGY0
ZmE2MTM4ZmYyMmU2MjBiZTc1MDZkZDNlY2QwODY2NjguLmRiMjdkMjBhYWRkODdkODg1MzZkYTUw
NzFlNTlmMzI4OTExNTE4MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
Q29va2llcy9XZWJDb29raWVNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIuaApAQCAtMzQsMTIgKzM0LDE0IEBACiAjaW5jbHVk
ZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTm9u
Y29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKICNpZiBVU0UoU09VUCkKICNp
bmNsdWRlICJTb3VwQ29va2llUGVyc2lzdGVudFN0b3JhZ2VUeXBlLmgiCiAjZW5kaWYKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgVVJMOwogc3RydWN0IENvb2tpZTsKIH0KIApAQCAtNjks
NyArNzEsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKFdl
YkNvcmU6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBkZWxldGVBbGxDb29r
aWVzKFdlYkNvcmU6OlNlc3Npb25JRCk7CiAgICAgdm9pZCBkZWxldGVBbGxDb29raWVzTW9kaWZp
ZWRTaW5jZShXZWJDb3JlOjpTZXNzaW9uSUQsIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRp
bWVfcG9pbnQpOwotICAgIHZvaWQgYWRkQ29va2llKFdlYkNvcmU6OlNlc3Npb25JRCwgY29uc3Qg
V2ViQ29yZTo6Q29va2llJiwgY29uc3QgU3RyaW5nJiBob3N0bmFtZSk7CisKKyAgICB2b2lkIHNl
dENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2ll
PiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgbWFpbkRvY3VtZW50
VVJMKTsKIAogICAgIHZvaWQgcGxhdGZvcm1TZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KEhUVFBD
b29raWVBY2NlcHRQb2xpY3kpOwogICAgIHZvaWQgZ2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSh1
aW50NjRfdCBjYWxsYmFja0lEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIubWVzc2FnZXMuaW4KaW5kZXggNWQ1
MTUzNjY0NTIxNjAzMGUzMTU4ODYyZmQ2MmQ3MjUzNWUyZWRjNC4uMDBlN2I2NWI3NDkwODI2YzVi
YjM5YmQ3MjZlOWMyZDNiYTUzZjA1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIubWVzc2FnZXMuaW4KQEAg
LTI4LDcgKzI4LDggQEAKICAgICB2b2lkIERlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShXZWJDb3Jl
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTdHJpbmcgaG9zdG5hbWUpCiAgICAgdm9pZCBEZWxldGVB
bGxDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiAgICAgdm9pZCBEZWxldGVB
bGxDb29raWVzTW9kaWZpZWRTaW5jZShXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBzdGQ6
OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IHRpbWUpCi0gICAgdm9pZCBBZGRDb29r
aWUoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgc3RydWN0IFdlYkNvcmU6OkNvb2tpZSBj
b29raWUsIFN0cmluZyBob3N0bmFtZSkKKworICAgIHZvaWQgU2V0Q29va2llcyhXZWJDb3JlOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiBjb29raWVzLCBXZWJD
b3JlOjpVUkwgdXJsLCBXZWJDb3JlOjpVUkwgbWFpbkRvY3VtZW50VVJMKTsKIAogICAgIHZvaWQg
U2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSh1aW50MzJfdCBwb2xpY3kpCiAgICAgdm9pZCBHZXRI
VFRQQ29va2llQWNjZXB0UG9saWN5KHVpbnQ2NF90IGNhbGxiYWNrSUQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRl
Z2llcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5jcHAKaW5kZXggYzAzOTcwYWQ1NWJlZjZhMTA1MWZkMDI1YjAxMWM0
ZDkwMDAwNGUxNC4uYmY0YmRhZTAxNWM2MWU1MjUyOTlhNTRhZTFmYWEyYjY4MGVkODhmMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0
Zm9ybVN0cmF0ZWdpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcApAQCAtMTU1LDExICsxNTUsNiBAQCB2
b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6ZGVsZXRlQ29va2llKGNvbnN0IE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiYgc2Vzc2lvbiwgYwogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLm5ldHdv
cmtDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpEZWxldGVDb29raWUoc2Vzc2lvbi5zZXNzaW9uSUQoKSwgdXJsLCBj
b29raWVOYW1lKSwgMCk7CiB9CiAKLXZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjphZGRDb29r
aWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIHVybCwg
Y29uc3QgQ29va2llJiBjb29raWUpCi17Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkubmV0
d29ya0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OkFkZENvb2tpZShzZXNzaW9uLnNlc3Npb25JRCgpLCB1cmwsIGNv
b2tpZSksIDApOwotfQotCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAvLyBQYXN0ZWJvYXJkU3RyYXRl
Z3kKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKaW5kZXggYzY5ZWE1MTllYjk2ZDA1
YWJiNzE0NmY4MWJjMmQ1YmUzNDBmZDAwZS4uMzU1ZDhhNmYyNmQyY2Q0MTM0NzQ3MzE0NDNlZjQ1
MDBmMDJmMDUwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCkBAIC01Niw3ICs1
Niw2IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVl
KFdlYkNvcmU6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBXZWJDb3JlOjpVUkwmKSBvdmVycmlkZTsKICAgICBib29sIGdldFJhd0Nvb2tpZXMoY29uc3Qg
V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBXZWJDb3JlOjpVUkwmLCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYpIG92
ZXJyaWRlOwogICAgIHZvaWQgZGVsZXRlQ29va2llKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFN0cmluZyYpIG92ZXJyaWRl
OwotICAgIHZvaWQgYWRkQ29va2llKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lv
biYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFdlYkNvcmU6OkNvb2tpZSYpIG92ZXJyaWRl
OwogCiAgICAgLy8gV2ViQ29yZTo6UGFzdGVib2FyZFN0cmF0ZWd5CiAjaWYgUExBVEZPUk0oSU9T
KQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304120</attachid>
            <date>2017-03-10 19:55:29 -0800</date>
            <delta_ts>2017-03-11 03:09:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-169486-20170310195529.patch</filename>
            <type>text/plain</type>
            <size>48975</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEzNzQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTg3NjRmM2FhMWI5ZDEx
OTE5MGZjNjQwYTMzZDcxZjYxZWU3NTg1MC4uNjViNDcyMzY1YWQ2ZDFmN2Q4ODg5N2M0YTdjOGM3
MmJmM2IxY2RhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDE3LTAzLTEwICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBDbGVhbnVwICJhZGRDb29r
aWUiIGFuZCBpdHMgc29sZSB1c2VyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTY5NDg2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQnJpYW4gQnVyZy4K
KworICAgICAgICBObyBuZXcgdGVzdHMgKFJlZmFjdG9yLCBubyBiZWhhdmlvciBjaGFuZ2UpCisK
KyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKKyAgICAgICAg
KiBsb2FkZXIvQ29va2llSmFyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFkZENvb2tpZSk6IERl
bGV0ZWQuCisgICAgICAgICogbG9hZGVyL0Nvb2tpZUphci5oOgorCisgICAgICAgICogcGxhdGZv
cm0vQ29va2llLmg6CisgICAgICAgIChXZWJDb3JlOjpDb29raWU6OkNvb2tpZSk6CisgICAgICAg
IChXZWJDb3JlOjpDb29raWVIYXNoOjpoYXNoKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb2tpZUhh
c2g6OmVxdWFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb2tpZTo6ZW5jb2RlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNvb2tpZTo6ZGVjb2RlKToKKworICAgICAgICAqIHBsYXRmb3JtL0Nvb2tpZXNT
dHJhdGVneS5oOgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNl
c3Npb24uaDoKKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUGxhdGZvcm1Db29raWVKYXIu
aDoKKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvQ29va2llSmFyQ0ZOZXQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6YWRkQ29va2llKTogRGVsZXRlZC4KKworICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvY29jb2EvQ29va2llQ29jb2EubW06IENvcGllZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9Db29raWVKYXIuaC4KKyAgICAgICAgKFdlYkNvcmU6OkNvb2tpZTo6b3BlcmF0
b3IgTlNIVFRQQ29va2llICopOgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9O
ZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbTogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUv
bG9hZGVyL0Nvb2tpZUphci5oLgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpzZXRDb29raWVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lv
bjo6bnNDb29raWVTdG9yYWdlKToKKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9D
b29raWVKYXJDdXJsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFkZENvb2tpZSk6IERlbGV0ZWQu
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9Db29raWVKYXJNYWMubW06CisgICAg
ICAgIChXZWJDb3JlOjpkZWxldGVDb29raWVzRm9ySG9zdG5hbWVzKToKKyAgICAgICAgKFdlYkNv
cmU6OmRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OmFk
ZENvb2tpZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpjb29raWVTdG9yYWdlKTogRGVs
ZXRlZC4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9Db29raWVKYXJTb3VwLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnRvU291cENvb2tpZSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjphZGRDb29raWUpOiBEZWxldGVkLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
dG9Tb3VwQ29va2llKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
c2V0Q29va2llcyk6CisKIDIwMTctMDMtMTAgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUu
Y29tPgogCiAgICAgICAgIE1vdmUgbGlid2VicnRjIGJhY2tlbmQgdG8gdXNpbmcgdHJhY2tzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21h
Yy9DaGFuZ2VMb2cKaW5kZXggZTAzMTQ2NmU4Nzc5NDUwNzk4ZGVhNDg5MTE0YmY2NjM5NzVkNWM5
MS4uYjgwYjJmODc3NjcwNjUwMzNiOTdmZmRiOTAzMjhmOTljYzE4Mjg3NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE3LTAzLTEwICBCcmFkeSBFaWRzb24gIDxiZWlkc29u
QGFwcGxlLmNvbT4KKworICAgICAgICBDbGVhbnVwICJhZGRDb29raWUiIGFuZCBpdHMgc29sZSB1
c2VyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5
NDg2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQnJpYW4gQnVyZy4KKworICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oOgorICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6YWRkQ29va2llKTogRGVsZXRlZC4KKwogMjAxNy0wMy0xMCAgQWxleCBDaHJpc3RlbnNl
biAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEZpeCBDTWFrZSBidWlsZC4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBlOGZmNDYxNmYwNjc4ZjBjNzZiYTRiZThmYTU0Mjg0NGNjY2FmZmZkLi5j
ZTdiMzIwMzgzYWEzZGIxNmZjNWRhOGQwMGIzNDI3NzNmZjE4OTc0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMzggQEAKKzIwMTctMDMtMTAgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29t
PgorCisgICAgICAgIENsZWFudXAgImFkZENvb2tpZSIgYW5kIGl0cyBzb2xlIHVzZXIuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk0ODYKKworICAg
ICAgICBSZXZpZXdlZCBieSBCcmlhbiBCdXJnLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6YWRkQ29va2llKTogRGVsZXRlZC4KKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2Vz
LmluOgorCisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAg
ICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8Q29va2llPjo6ZW5jb2RlKTogRGVsZXRlZC4KKyAgICAg
ICAgKElQQzo6QXJndW1lbnRDb2RlcjxDb29raWU+OjpkZWNvZGUpOiBEZWxldGVkLgorICAgICAg
ICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoKKworICAgICAgICAqIFVJUHJvY2Vz
cy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViQXV0b21hdGlvblNlc3Npb246OmFkZFNpbmdsZUNvb2tpZSk6CisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29v
a2llTWFuYWdlclByb3h5OjpzZXRDb29raWVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2ll
TWFuYWdlclByb3h5OjphZGRDb29raWUpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJDb29raWVNYW5hZ2VyUHJveHkuaDoKKworICAgICAgICAqIFdlYlByb2Nlc3MvQ29va2llcy9X
ZWJDb29raWVNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlcjo6
c2V0Q29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXI6OmFkZENvb2tp
ZSk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFn
ZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5tZXNz
YWdlcy5pbjoKKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZv
cm1TdHJhdGVnaWVzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVz
OjphZGRDb29raWUpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmg6CisKIDIwMTctMDMtMTAgIEFsZXggQ2hyaXN0ZW5z
ZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBEb24ndCBjb21waWxlIFJl
bW90ZU5ldHdvcmtpbmdDb250ZXh0IHdoZW4gdXNpbmcgTmV0d29ya1Nlc3Npb24KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBiODE0
ZDMxNWE2MDZjNWJjNTJjZmZhN2FlZjNhMjk4MTM2M2ExZmYwLi5mYjQ1MTk3NjEzZDhkODNiY2I0
NmZjOTcwOTZlYmZjNDYzZjI5MDhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMjc4LDYgKzIyNzgsOCBAQAogCQk1MUM4MUI4
QTBDNDQyMkY3MDAxOUVDRTMgLyogRlRQRGlyZWN0b3J5UGFyc2VyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUM4MUI4ODBDNDQyMkY3MDAxOUVDRTMg
LyogRlRQRGlyZWN0b3J5UGFyc2VyLmggKi87IH07CiAJCTUxQ0JGQzk5MEQxMEU0ODMwMDJEQkY1
MSAvKiBDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTFDQkZDOTgwRDEwRTQ4MzAwMkRCRjUxIC8qIENhY2hlZEZy
YW1lUGxhdGZvcm1EYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNTFEMEM1MTYwREFBOTBCNzAwM0IzODMxIC8qIEpTU3RvcmFnZUN1c3RvbS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUQwQzUx
NTBEQUE5MEI3MDAzQjM4MzEgLyogSlNTdG9yYWdlQ3VzdG9tLmNwcCAqLzsgfTsKKwkJNTFEMTI0
OEIxRTczNjI3RjAwMkIyODIwIC8qIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFEMTI0OEExRTczNjI1
QzAwMkIyODIwIC8qIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tICovOyB9OworCQk1MUQx
MjQ4RDFFNzM2NEFBMDAyQjI4MjAgLyogQ29va2llQ29jb2EubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUQxMjQ4QzFFNzM2NDU2MDAyQjI4MjAgLyog
Q29va2llQ29jb2EubW0gKi87IH07CiAJCTUxRDcyMzZDMUJCNjE3NDkwMDQ3OENBMyAvKiBJREJS
ZXN1bHREYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxRDcyMzZBMUJCNjBCRkUwMDQ3OENBMyAvKiBJREJSZXN1bHREYXRhLmNwcCAqLzsgfTsK
IAkJNTFENzIzNkQxQkI2MTc0OTAwNDc4Q0EzIC8qIElEQlJlc3VsdERhdGEuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRDcyMzZCMUJCNjBCRkUwMDQ3
OENBMyAvKiBJREJSZXN1bHREYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJNTFEN0VGRUExQkRFOEY4QzAwRTkzRTEwIC8qIFRocmVhZFNhZmVE
YXRhQnVmZmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MTFGQUVBOTFCREM5ODlBMDBCNEFGRTQgLyogVGhyZWFkU2FmZURhdGFCdWZmZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtOTcxNSw2ICs5
NzE3LDggQEAKIAkJNTFDODFCODgwQzQ0MjJGNzAwMTlFQ0UzIC8qIEZUUERpcmVjdG9yeVBhcnNl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRlRQRGlyZWN0b3J5UGFyc2Vy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQ0JGQzk4MEQxMEU0ODMwMDJEQkY1
MSAvKiBDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1MUQwQzUxNTBEQUE5MEI3MDAzQjM4MzEgLyogSlNTdG9yYWdlQ3VzdG9tLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU3RvcmFnZUN1c3RvbS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxRDEyNDhBMUU3MzYyNUMwMDJCMjgyMCAv
KiBOZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk1MUQxMjQ4QzFFNzM2NDU2MDAyQjI4MjAgLyogQ29va2llQ29j
b2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDb29raWVDb2Nv
YS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFENzE5NkMxODExMDZERjAwMTZE
QzUxIC8qIERPTVdpbmRvd0luZGV4ZWREYXRhYmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBET01XaW5kb3dJbmRleGVkRGF0YWJhc2UuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1MUQ3MTk2RDE4MTEwNkRGMDAxNkRDNTEgLyogRE9NV2luZG93
SW5kZXhlZERhdGFiYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTVdp
bmRvd0luZGV4ZWREYXRhYmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUQ3
MTk2RTE4MTEwNkRGMDAxNkRDNTEgLyogRE9NV2luZG93SW5kZXhlZERhdGFiYXNlLmlkbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBET01XaW5kb3dJbmRleGVkRGF0YWJhc2UuaWRsOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTkwOTUsOSArMTkwOTksMTEgQEAKIAkJN0U3REUxRkUx
OTVDRUYyRDAwMzUzNjNCIC8qIGNvY29hICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQlj
aGlsZHJlbiA9ICgKKwkJCQk1MUQxMjQ4QzFFNzM2NDU2MDAyQjI4MjAgLyogQ29va2llQ29jb2Eu
bW0gKi8sCiAJCQkJMzc5MjkxN0MxOTg3Njc4RjAwRjRCNjYxIC8qIENyZWRlbnRpYWxDb2NvYS5o
ICovLAogCQkJCTM3OTI5MTdCMTk4NzY3OEYwMEY0QjY2MSAvKiBDcmVkZW50aWFsQ29jb2EubW0g
Ki8sCiAJCQkJNUM5Qjg2MEIxQzIxRTNDNjAwMTEwRjM2IC8qIE5ldHdvcmtMb2FkTWV0cmljcy5t
bSAqLywKKwkJCQk1MUQxMjQ4QTFFNzM2MjVDMDAyQjI4MjAgLyogTmV0d29ya1N0b3JhZ2VTZXNz
aW9uQ29jb2EubW0gKi8sCiAJCQkJMzcyQURBMzcxOTdGNDdCOTAwRkM1MDFFIC8qIFByb3RlY3Rp
b25TcGFjZUNvY29hLmggKi8sCiAJCQkJMzcyQURBMzkxOTdGNjg3NjAwRkM1MDFFIC8qIFByb3Rl
Y3Rpb25TcGFjZUNvY29hLm1tICovLAogCQkJCTdFN0RFMUZDMTk1Q0VGMjYwMDM1MzYzQiAvKiBS
ZXNvdXJjZVJlcXVlc3RDb2NvYS5tbSAqLywKQEAgLTMwMTc3LDYgKzMwMTgzLDcgQEAKIAkJCQlD
RDUyNDgxQTE4RTIwMEVEMDAwOEEwN0QgLyogRGlzcGxheVNsZWVwRGlzYWJsZXIuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNUQ4QzREQkYxNDI4MjIyQzAwMjZDRTcyIC8qIERpc3BsYXlTbGVlcERp
c2FibGVyQ29jb2EuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkQzMTYwOTAxMkIwMjZGNzAwQzFB
MzU5IC8qIERpc3RhbmNlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUxRDEyNDhCMUU3MzYyN0Yw
MDJCMjgyMCAvKiBOZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbSBpbiBTb3VyY2VzICovLAog
CQkJCUExRTExNTQ0MTMwMTVDM0QwMDU0QUM4QyAvKiBEaXN0YW50TGlnaHRTb3VyY2UuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQjJGMzRGRTkwRTgyRjgyNzAwRjYyN0NEIC8qIEROU0NGTmV0LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUYyOTNCMjdFNTZDMTEyRjM3M0ZGRjI3RSAvKiBETlNSZXNv
bHZlUXVldWUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMjE0MCw2ICszMjE0Nyw3IEBACiAJCQkJ
QkNBQTkwQzMwQTdFQkE2MDAwOEIxMjI5IC8qIFNjcm9sbGJhci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkwRjA5MDg3RjE0NDRGREIyMDAwMjg5MTcgLyogU2Nyb2xsYmFyVGhlbWUuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQkMxNDAyOEEwRTgzNjgwODAwMzE5NzE3IC8qIFNjcm9sbGJhclRoZW1l
Q29tcG9zaXRlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUxRDEyNDhEMUU3MzY0QUEwMDJCMjgy
MCAvKiBDb29raWVDb2NvYS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTQ0Qzk5MTgyMEYzRDFFMEQw
MDU4NjY3MCAvKiBTY3JvbGxiYXJUaGVtZUlPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUJDRUY4
NjlGMEU4NDRFOUQwMEE4NUNENSAvKiBTY3JvbGxiYXJUaGVtZU1hYy5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTBGRTcxNDA1MTQyMTcwQjgwMERCMzNCQSAvKiBTY3JvbGxiYXJUaGVtZU1vY2suY3Bw
IGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29va2ll
SmFyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db29raWVKYXIuY3BwCmluZGV4IGVmOTNk
ZmY1ZTE0ZThmMzE2OGViZjFlMGJhNzZiYmExOTAyMGE5NDkuLjNlOGE3ODVhNzkwMDhmZTBiMDg0
OTA3ZWE2MmFmY2Q1NWMzNGUzNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9D
b29raWVKYXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db29raWVKYXIuY3BwCkBA
IC04Myw5ICs4Myw0IEBAIHZvaWQgZGVsZXRlQ29va2llKGNvbnN0IERvY3VtZW50JiBkb2N1bWVu
dCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llCiAgICAgcGxhdGZvcm1TdHJh
dGVnaWVzKCktPmNvb2tpZXNTdHJhdGVneSgpLT5kZWxldGVDb29raWUoc3RvcmFnZVNlc3Npb24o
ZG9jdW1lbnQpLCB1cmwsIGNvb2tpZU5hbWUpOwogfQogCi12b2lkIGFkZENvb2tpZShjb25zdCBE
b2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBDb29raWUmIGNvb2tpZSkK
LXsKLSAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+Y29va2llc1N0cmF0ZWd5KCktPmFkZENvb2tp
ZShzdG9yYWdlU2Vzc2lvbihkb2N1bWVudCksIHVybCwgY29va2llKTsKLX0KLQogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUphci5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0Nvb2tpZUphci5oCmluZGV4IDBhNTNkOTY0NDU3MzhiZjQxZDhkNTg2NzY4NTVhOTc4
Y2ZkNTEyNzguLjIyMGE5YjkyNjA0YjBkYTRjYjgwNDc3MDIyYzZkNzIwYzZlZDA1ZTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db29raWVKYXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvQ29va2llSmFyLmgKQEAgLTQ1LDYgKzQ1LDUgQEAgV0VCQ09SRV9FWFBPUlQg
Ym9vbCBjb29raWVzRW5hYmxlZChjb25zdCBEb2N1bWVudCYpOwogV0VCQ09SRV9FWFBPUlQgU3Ry
aW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IERvY3VtZW50JiwgY29uc3Qg
VVJMJik7CiBXRUJDT1JFX0VYUE9SVCBib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgRG9jdW1lbnQm
LCBjb25zdCBVUkwmLCBWZWN0b3I8Q29va2llPiYpOwogV0VCQ09SRV9FWFBPUlQgdm9pZCBkZWxl
dGVDb29raWUoY29uc3QgRG9jdW1lbnQmLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIGNvb2tp
ZU5hbWUpOwotV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRDb29raWUoY29uc3QgRG9jdW1lbnQmLCBj
b25zdCBVUkwmLCBjb25zdCBDb29raWUmKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29va2llLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9Db29raWUuaAppbmRleCA5NjFkZmU1MmExNjZlMjAwMTYwOWRlNThmYzdjMzA3
M2M3ZTIwZjU5Li43MjRhYmFiNGUwNmEwMzM3ZGQ2M2IyYjA3MGU1MDk5N2YyZGRmMGRiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db29raWUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9Db29raWUuaApAQCAtMjksNDcgKzI5LDkzIEBACiAjaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nSGFzaC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCisj
aWZkZWYgX19PQkpDX18KKyNpbmNsdWRlIDxvYmpjL29iamMuaD4KKyNlbmRpZgorCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLSAgICBzdHJ1Y3QgQ29va2llIHsKLSAgICAgICAgQ29va2llKCkgeyB9
Ci0KLSAgICAgICAgQ29va2llKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1
ZSwgY29uc3QgU3RyaW5nJiBkb21haW4sCi0gICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBw
YXRoLCBkb3VibGUgZXhwaXJlcywgYm9vbCBodHRwT25seSwgYm9vbCBzZWN1cmUsCi0gICAgICAg
ICAgICAgICAgYm9vbCBzZXNzaW9uKQotICAgICAgICAgICAgOiBuYW1lKG5hbWUpCi0gICAgICAg
ICAgICAsIHZhbHVlKHZhbHVlKQotICAgICAgICAgICAgLCBkb21haW4oZG9tYWluKQotICAgICAg
ICAgICAgLCBwYXRoKHBhdGgpCi0gICAgICAgICAgICAsIGV4cGlyZXMoZXhwaXJlcykKLSAgICAg
ICAgICAgICwgaHR0cE9ubHkoaHR0cE9ubHkpCi0gICAgICAgICAgICAsIHNlY3VyZShzZWN1cmUp
Ci0gICAgICAgICAgICAsIHNlc3Npb24oc2Vzc2lvbikKLSAgICAgICAgewotICAgICAgICB9Ci0K
LSAgICAgICAgU3RyaW5nIG5hbWU7Ci0gICAgICAgIFN0cmluZyB2YWx1ZTsKLSAgICAgICAgU3Ry
aW5nIGRvbWFpbjsKLSAgICAgICAgU3RyaW5nIHBhdGg7Ci0gICAgICAgIC8vIEV4cGlyYXRpb24g
ZGF0ZSwgZXhwcmVzc2VkIGFzIG1pbGxpc2Vjb25kcyBzaW5jZSB0aGUgVU5JWCBlcG9jaC4KLSAg
ICAgICAgZG91YmxlIGV4cGlyZXM7Ci0gICAgICAgIGJvb2wgaHR0cE9ubHk7Ci0gICAgICAgIGJv
b2wgc2VjdXJlOwotICAgICAgICBib29sIHNlc3Npb247Ci0gICAgfTsKK3N0cnVjdCBDb29raWUg
eworICAgIENvb2tpZSgpIHsgfQogCi0gICAgc3RydWN0IENvb2tpZUhhc2ggewotICAgICAgICBz
dGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBDb29raWUmIGtleSkKLSAgICAgICAgeyAKLSAgICAg
ICAgICAgIHJldHVybiBTdHJpbmdIYXNoOjpoYXNoKGtleS5uYW1lKSArIFN0cmluZ0hhc2g6Omhh
c2goa2V5LmRvbWFpbikgKyBTdHJpbmdIYXNoOjpoYXNoKGtleS5wYXRoKSArIGtleS5zZWN1cmU7
Ci0gICAgICAgIH0KKyAgICBDb29raWUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcm
IHZhbHVlLCBjb25zdCBTdHJpbmcmIGRvbWFpbiwgY29uc3QgU3RyaW5nJiBwYXRoLCBkb3VibGUg
ZXhwaXJlcywgYm9vbCBodHRwT25seSwgYm9vbCBzZWN1cmUsIGJvb2wgc2Vzc2lvbikKKyAgICAg
ICAgOiBuYW1lKG5hbWUpCisgICAgICAgICwgdmFsdWUodmFsdWUpCisgICAgICAgICwgZG9tYWlu
KGRvbWFpbikKKyAgICAgICAgLCBwYXRoKHBhdGgpCisgICAgICAgICwgZXhwaXJlcyhleHBpcmVz
KQorICAgICAgICAsIGh0dHBPbmx5KGh0dHBPbmx5KQorICAgICAgICAsIHNlY3VyZShzZWN1cmUp
CisgICAgICAgICwgc2Vzc2lvbihzZXNzaW9uKQorICAgIHsKKyAgICB9CisKKyAgICB0ZW1wbGF0
ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxh
dGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIGJvb2wgZGVjb2RlKERlY29kZXImLCBDb29raWUmKTsK
KworI2lmZGVmIF9fT0JKQ19fCisgICAgb3BlcmF0b3IgTlNIVFRQQ29va2llICooKSBjb25zdDsK
KyNlbmRpZgorCisgICAgU3RyaW5nIG5hbWU7CisgICAgU3RyaW5nIHZhbHVlOworICAgIFN0cmlu
ZyBkb21haW47CisgICAgU3RyaW5nIHBhdGg7CisgICAgLy8gRXhwaXJhdGlvbiBkYXRlLCBleHBy
ZXNzZWQgYXMgbWlsbGlzZWNvbmRzIHNpbmNlIHRoZSBVTklYIGVwb2NoLgorICAgIGRvdWJsZSBl
eHBpcmVzOworICAgIGJvb2wgaHR0cE9ubHk7CisgICAgYm9vbCBzZWN1cmU7CisgICAgYm9vbCBz
ZXNzaW9uOworfTsKKworc3RydWN0IENvb2tpZUhhc2ggeworICAgIHN0YXRpYyB1bnNpZ25lZCBo
YXNoKGNvbnN0IENvb2tpZSYga2V5KQorICAgIHsgCisgICAgICAgIHJldHVybiBTdHJpbmdIYXNo
OjpoYXNoKGtleS5uYW1lKSArIFN0cmluZ0hhc2g6Omhhc2goa2V5LmRvbWFpbikgKyBTdHJpbmdI
YXNoOjpoYXNoKGtleS5wYXRoKSArIGtleS5zZWN1cmU7CisgICAgfQorCisgICAgc3RhdGljIGJv
b2wgZXF1YWwoY29uc3QgQ29va2llJiBhLCBjb25zdCBDb29raWUmIGIpCisgICAgeworICAgICAg
ICByZXR1cm4gYS5uYW1lID09IGIubmFtZSAmJiBhLmRvbWFpbiA9PSBiLmRvbWFpbiAmJiBhLnBh
dGggPT0gYi5wYXRoICYmIGEuc2VjdXJlID09IGIuc2VjdXJlOworICAgIH0KK307CisKK3RlbXBs
YXRlPGNsYXNzIEVuY29kZXI+Cit2b2lkIENvb2tpZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIp
IGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBuYW1lOworICAgIGVuY29kZXIgPDwgdmFsdWU7Cisg
ICAgZW5jb2RlciA8PCBkb21haW47CisgICAgZW5jb2RlciA8PCBwYXRoOworICAgIGVuY29kZXIg
PDwgZXhwaXJlczsKKyAgICBlbmNvZGVyIDw8IGh0dHBPbmx5OworICAgIGVuY29kZXIgPDwgc2Vj
dXJlOworICAgIGVuY29kZXIgPDwgc2Vzc2lvbjsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rl
cj4KK2Jvb2wgQ29va2llOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgQ29va2llJiBjb29raWUp
Cit7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShjb29raWUubmFtZSkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNvb2tpZS52YWx1ZSkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNvb2tpZS5kb21haW4pKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShjb29raWUucGF0
aCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNvb2tp
ZS5leHBpcmVzKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoY29va2llLmh0dHBPbmx5KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoY29va2llLnNlY3VyZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKGNvb2tpZS5zZXNzaW9uKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgcmV0dXJuIHRydWU7Cit9CiAKLSAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29u
c3QgQ29va2llJiBhLCBjb25zdCBDb29raWUmIGIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJl
dHVybiBhLm5hbWUgPT0gYi5uYW1lICYmIGEuZG9tYWluID09IGIuZG9tYWluICYmIGEucGF0aCA9
PSBiLnBhdGggJiYgYS5zZWN1cmUgPT0gYi5zZWN1cmU7Ci0gICAgICAgIH0KLSAgICB9OwogfQog
CiBuYW1lc3BhY2UgV1RGIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nv
b2tpZXNTdHJhdGVneS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29va2llc1N0cmF0ZWd5
LmgKaW5kZXggNjA1ZGMxZjQ0MjgyYWJkODQ4YWU4Zjg0Nzc0NTVlN2Q3YmRjNGIyMC4uZTA0OWJl
MzUwNTRkYTI0ZTAyM2Y5Y2JlZTA1MjBhMzE4ZTczMWY5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vQ29va2llc1N0cmF0ZWd5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vQ29va2llc1N0cmF0ZWd5LmgKQEAgLTQ1LDcgKzQ1LDYgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKFNlc3Npb25JRCwgY29u
c3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGdl
dFJhd0Nvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBVUkwmLCBWZWN0b3I8Q29va2llPiYpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgZGVsZXRlQ29va2llKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFVSTCYs
IGNvbnN0IFN0cmluZyYgY29va2llTmFtZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBhZGRDb29r
aWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiwgY29uc3QgQ29va2ll
JikgPSAwOwogCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB+Q29va2llc1N0cmF0ZWd5KCkgeyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9y
YWdlU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3Rv
cmFnZVNlc3Npb24uaAppbmRleCA2MmNmMmFkZjVjNDI2YWE1YzFhZTY2NGE2NmRmZmVkYzg0MzNl
MDJhLi5mMTQ4OWM2YjQyYTFkNDVhZjljYWE2MmNhMjZkMTcwNWI0NmIzNzQ4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNz
aW9uLmgKQEAgLTQxLDEyICs0MSwxOCBAQAogdHlwZWRlZiBzdHJ1Y3QgX1NvdXBDb29raWVKYXIg
U291cENvb2tpZUphcjsKICNlbmRpZgogCisjaWZkZWYgX19PQkpDX18KKyNpbmNsdWRlIDxvYmpj
L29iamMuaD4KKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE5ldHdvcmtp
bmdDb250ZXh0OwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgU291cE5ldHdvcmtTZXNz
aW9uOwogCitzdHJ1Y3QgQ29va2llOworCiBjbGFzcyBOZXR3b3JrU3RvcmFnZVNlc3Npb24gewog
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbik7IFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgpAQCAtNjEsNiArNjcsMTAgQEAgcHVibGljOgogICAg
IFNlc3Npb25JRCBzZXNzaW9uSUQoKSBjb25zdCB7IHJldHVybiBtX3Nlc3Npb25JRDsgfQogICAg
IENyZWRlbnRpYWxTdG9yYWdlJiBjcmVkZW50aWFsU3RvcmFnZSgpIHsgcmV0dXJuIG1fY3JlZGVu
dGlhbFN0b3JhZ2U7IH0KIAorI2lmZGVmIF9fT0JKQ19fCisgICAgTlNIVFRQQ29va2llU3RvcmFn
ZSAqbnNDb29raWVTdG9yYWdlKCkgY29uc3Q7CisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKENPQ09B
KSB8fCBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbihTZXNz
aW9uSUQsIFJldGFpblB0cjxDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmPik7CiAKQEAgLTkwLDYgKzEw
MCw4IEBAIHB1YmxpYzoKICAgICBOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCgpIGNvbnN0Owog
I2VuZGlmCiAKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENvb2tpZXMoY29uc3QgVmVjdG9y
PENvb2tpZT4mLCBjb25zdCBVUkwmLCBjb25zdCBVUkwmIG1haW5Eb2N1bWVudFVSTCk7CisKIHBy
aXZhdGU6CiAgICAgc3RhdGljIEhhc2hNYXA8U2Vzc2lvbklELCBzdGQ6OnVuaXF1ZV9wdHI8TmV0
d29ya1N0b3JhZ2VTZXNzaW9uPj4mIGdsb2JhbFNlc3Npb25NYXAoKTsKICAgICBTZXNzaW9uSUQg
bV9zZXNzaW9uSUQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1BsYXRmb3JtQ29va2llSmFyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Bs
YXRmb3JtQ29va2llSmFyLmgKaW5kZXggZDcyNzBjN2NhNjlkNGJiODMzZWQyMTg2NGE3YTcwNzFm
ZGQwZjhjYS4uZDA4MmM4YjZjZGIzZThiMzFiZmY3MzA0YzFjZmQxZTM1MDdhMjQ4OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9QbGF0Zm9ybUNvb2tpZUphci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUGxhdGZvcm1Db29raWVKYXIu
aApAQCAtNDYsNyArNDYsNiBAQCBXRUJDT1JFX0VYUE9SVCBib29sIGNvb2tpZXNFbmFibGVkKGNv
bnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFVSTCYgZmlycwogV0VCQ09SRV9FWFBP
UlQgU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJik7CiBXRUJDT1JF
X0VYUE9SVCBib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwg
Y29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmLCBWZWN0b3I8Q29va2llPiYpOwogV0VC
Q09SRV9FWFBPUlQgdm9pZCBkZWxldGVDb29raWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJik7Ci1XRUJDT1JFX0VYUE9SVCB2b2lkIGFkZENv
b2tpZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmLCBjb25zdCBDb29r
aWUmKTsKIFdFQkNPUkVfRVhQT1JUIHZvaWQgZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoY29uc3Qg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgSGFzaFNldDxTdHJpbmc+JiBob3N0bmFtZXMpOwogV0VC
Q09SRV9FWFBPUlQgdm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWVzKGNvbnN0IE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBjb29raWVIb3N0TmFtZXMpOwog
V0VCQ09SRV9FWFBPUlQgdm9pZCBkZWxldGVBbGxDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9Db29raWVKYXJDRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L0Nvb2tpZUphckNGTmV0LmNwcAppbmRleCA1NjMwNTVkNjY2NmE5OTJkZjY5NDVmMzIyOGM2ZWVj
ZmYyNDBmMWMxLi5jZjkyZmVhYzFiYjU0YjlmZTA5MzgwMmMzMDFlMTc1OTJlZWRhZGJlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZUphckNGTmV0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZUphckNG
TmV0LmNwcApAQCAtMjE4LDEyICsyMTgsNiBAQCB2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBOZXR3
b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdAogICAg
IH0KIH0KIAotdm9pZCBhZGRDb29raWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29u
c3QgVVJMJiwgY29uc3QgQ29va2llJikKLXsKLSAgICAvLyBGSVhNRTogaW1wbGVtZW50IHRoaXMg
Y29tbWFuZC4gPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE1NjI5OD4KLSAgICBub3RJbXBsZW1lbnRl
ZCgpOwotfQotCiB2b2lkIGdldEhvc3RuYW1lc1dpdGhDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiYgc2Vzc2lvbiwgSGFzaFNldDxTdHJpbmc+JiBob3N0bmFtZXMpCiB7CiAgICAg
UmV0YWluUHRyPENGQXJyYXlSZWY+IGNvb2tpZXNDRiA9IGFkb3B0Q0YoQ0ZIVFRQQ29va2llU3Rv
cmFnZUNvcHlDb29raWVzKHNlc3Npb24uY29va2llU3RvcmFnZSgpLmdldCgpKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vz
c2lvbkNGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29y
a1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwCmluZGV4IGJhMDZhNWI0MTRkY2I5NGM3Mjk1OWMzNWM5
OTdkM2Q3YjIzNjkyYjQuLjM0ZWVlYTE2ZTA3ZjY5ZjQ0ZDQzZjcyMDFjNjNlYjczYjA2NmU3N2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0
b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwCkBAIC0xNjYsNCArMTY2LDExIEBA
IHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRTaG91bGRQYXJ0aXRpb25Db29raWVzRm9y
SG9zdHMoY29uc3QgVmVjdG9yPFN0cmluCiAKICNlbmRpZiAvLyBIQVZFKENGTkVUV09SS19TVE9S
QUdFX1BBUlRJVElPTklORykKIAorI2lmICFQTEFURk9STShDT0NPQSkKK3ZvaWQgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpzZXRDb29raWVzKGNvbnN0IFZlY3RvcjxDb29raWU+JiwgY29uc3QgVVJM
JiwgY29uc3QgVVJMJikKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMuIDxodHRwczov
L3dlYmtpdC5vcmcvYi8xNTYyOTg+Cit9CisjZW5kaWYKKwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9Db29raWVDb2NvYS5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvQ29va2llQ29jb2EubW0KbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YzExMjJiMWIyODU3YzM5ZjBmYjYxMmFjZjI2ZDUxMzY3ODA4MTk1YwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvQ29va2llQ29jb2EubW0K
QEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSwgSW5jLiAg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJDb29raWUuaCIKKworI2ltcG9y
dCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitD
b29raWU6Om9wZXJhdG9yIE5TSFRUUENvb2tpZSAqKCkgY29uc3QKK3sKKyAgICAvLyBGSVhNRTog
ZXhpc3RpbmcgQVBJcyBkbyBub3QgcHJvdmlkZSBhIHdheSB0byBzZXQgaHR0cE9ubHkgd2l0aG91
dCBwYXJzaW5nIGhlYWRlcnMgZnJvbSBzY3JhdGNoLgorCisgICAgQkVHSU5fQkxPQ0tfT0JKQ19F
WENFUFRJT05TCisKKyAgICByZXR1cm4gW05TSFRUUENvb2tpZSBjb29raWVXaXRoUHJvcGVydGll
czpAeworICAgICAgICBOU0hUVFBDb29raWVOYW1lOiBuYW1lLAorICAgICAgICBOU0hUVFBDb29r
aWVWYWx1ZTogdmFsdWUsCisgICAgICAgIE5TSFRUUENvb2tpZURvbWFpbjogZG9tYWluLAorICAg
ICAgICBOU0hUVFBDb29raWVQYXRoOiBwYXRoLAorICAgICAgICBOU0hUVFBDb29raWVEb21haW46
IGRvbWFpbiwKKyAgICAgICAgTlNIVFRQQ29va2llU2VjdXJlOiBAKHNlY3VyZSksCisgICAgICAg
IE5TSFRUUENvb2tpZURpc2NhcmQ6IEAoc2Vzc2lvbiksCisgICAgICAgIE5TSFRUUENvb2tpZUV4
cGlyZXM6IFtOU0RhdGUgZGF0ZVdpdGhUaW1lSW50ZXJ2YWxTaW5jZTE5NzA6ZXhwaXJlcyAvIDEw
MDAuMF0sCisgICAgICAgIH1dOworCisgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2Nv
YS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40NGFlYWI3MGU5OWI1ZmEwYTg0ZWNmZDM1N2UzNDU4M2RlZmMwMWUw
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2Nv
YS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbQpAQCAtMCwwICsxLDU1IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE1IEFwcGxlLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcu
aCIKKyNpbXBvcnQgIk5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oIgorCisjaW1wb3J0ICJDb29raWUu
aCIKKyNpbXBvcnQgIlVSTC5oIgorI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0
Q29va2llcyhjb25zdCBWZWN0b3I8Q29va2llPiYgY29va2llcywgY29uc3QgVVJMJiB1cmwsIGNv
bnN0IFVSTCYgbWFpbkRvY3VtZW50VVJMKQoreworICAgIFJldGFpblB0cjxOU011dGFibGVBcnJh
eT4gbnNDb29raWVzID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aENh
cGFjaXR5OmNvb2tpZXMuc2l6ZSgpXSk7CisgICAgZm9yIChhdXRvIGNvb2tpZSA6IGNvb2tpZXMp
CisgICAgICAgIFtuc0Nvb2tpZXMgYWRkT2JqZWN0OihOU0hUVFBDb29raWUgKiljb29raWVdOwor
CisgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOworICAgIFtuc0Nvb2tpZVN0b3JhZ2Uo
KSBzZXRDb29raWVzOm5zQ29va2llcy5nZXQoKSBmb3JVUkw6KE5TVVJMICopdXJsIG1haW5Eb2N1
bWVudFVSTDooTlNVUkwgKiltYWluRG9jdW1lbnRVUkxdOworICAgIEVORF9CTE9DS19PQkpDX0VY
Q0VQVElPTlM7Cit9CisKK05TSFRUUENvb2tpZVN0b3JhZ2UgKk5ldHdvcmtTdG9yYWdlU2Vzc2lv
bjo6bnNDb29raWVTdG9yYWdlKCkgY29uc3QKK3sKKyAgICBhdXRvIGNmQ29va2llU3RvcmFnZSA9
IGNvb2tpZVN0b3JhZ2UoKTsKKyAgICBpZiAoIWNmQ29va2llU3RvcmFnZSB8fCBbTlNIVFRQQ29v
a2llU3RvcmFnZSBzaGFyZWRIVFRQQ29va2llU3RvcmFnZV0uX2Nvb2tpZVN0b3JhZ2UgPT0gY2ZD
b29raWVTdG9yYWdlKQorICAgICAgICByZXR1cm4gW05TSFRUUENvb2tpZVN0b3JhZ2Ugc2hhcmVk
SFRUUENvb2tpZVN0b3JhZ2VdOworCisgICAgcmV0dXJuIFtbW05TSFRUUENvb2tpZVN0b3JhZ2Ug
YWxsb2NdIF9pbml0V2l0aENGSFRUUENvb2tpZVN0b3JhZ2U6Y2ZDb29raWVTdG9yYWdlLmdldCgp
XSBhdXRvcmVsZWFzZV07Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJDdXJsLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJDdXJsLmNwcApp
bmRleCAyNGEyYzc0ZWUwMDdjNDM3NTdjMWE0OGY5MjZkMjUyMzIwNjlmNjBkLi45YjFiYjQ3NzAz
MGEwNzZlNTU1ZjljZTZiZTNiOTFiODgwMDY5NjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyQ3VybC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckN1cmwuY3BwCkBAIC0zMzIsMTIg
KzMzMiw2IEBAIHZvaWQgZGVsZXRlQ29va2llKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYs
IGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYpCiAgICAgLy8gRklYTUU6IE5vdCB5ZXQgaW1wbGVt
ZW50ZWQKIH0KIAotdm9pZCBhZGRDb29raWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwg
Y29uc3QgVVJMJiwgY29uc3QgQ29va2llJikKLXsKLSAgICAvLyBGSVhNRTogaW1wbGVtZW50IHRo
aXMgY29tbWFuZC4gPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE1NjI5Nj4KLSAgICBub3RJbXBsZW1l
bnRlZCgpOwotfQotCiB2b2lkIGdldEhvc3RuYW1lc1dpdGhDb29raWVzKGNvbnN0IE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYsIEhhc2hTZXQ8U3RyaW5nPiYgaG9zdG5hbWVzKQogewogICAgIC8vIEZJ
WE1FOiBOb3QgeWV0IGltcGxlbWVudGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL21hYy9Db29raWVKYXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL21hYy9Db29raWVKYXJNYWMubW0KaW5kZXggYzdjYzBmMDliYjI1NDU4NWRkOWE3
ZjU5ZDM1NDIyZDYxYjBlZjI2Yi4uMjNmNzAxNWU1Yjk0OTgzODI4MWUxOTJlMzIyZTNkZjk1ZWYw
ZjI1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQ29v
a2llSmFyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Nv
b2tpZUphck1hYy5tbQpAQCAtMzEsMTAgKzMxLDYgQEAKICNpbXBvcnQgIldlYkNvcmVTeXN0ZW1J
bnRlcmZhY2UuaCIKICNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+CiAKLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLXN0YXRpYyBOU0hUVFBDb29raWVTdG9yYWdlICpjb29raWVTdG9yYWdl
KGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYpOwotfQotCiAjaWYgIVVTRShDRlVSTENPTk5F
Q1RJT04pCiAKICNpbXBvcnQgIkNvb2tpZS5oIgpAQCAtMjYwLDM4ICsyNTYsNiBAQCB2b2lkIGRl
bGV0ZUNvb2tpZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVS
TCYgdXJsLCBjb25zdCBTdAogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiB9CiAKLXZv
aWQgYWRkQ29va2llKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3Qg
VVJMJiB1cmwsIGNvbnN0IENvb2tpZSYgY29va2llKQotewotICAgIEJFR0lOX0JMT0NLX09CSkNf
RVhDRVBUSU9OUzsKLQotICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29r
aWVTdG9yYWdlID0gc2Vzc2lvbi5jb29raWVTdG9yYWdlKCk7Ci0KLSAgICAvLyBGSVhNRTogZXhp
c3RpbmcgQVBJcyBkbyBub3QgcHJvdmlkZSBhIHdheSB0byBzZXQgaHR0cE9ubHkgd2l0aG91dCBw
YXJzaW5nIGhlYWRlcnMgZnJvbSBzY3JhdGNoLgotCi0gICAgTlNVUkwgKm9yaWdpblVSTCA9IHVy
bDsKLSAgICBOU0hUVFBDb29raWUgKmh0dHBDb29raWUgPSBbTlNIVFRQQ29va2llIGNvb2tpZVdp
dGhQcm9wZXJ0aWVzOkB7Ci0gICAgICAgIE5TSFRUUENvb2tpZU5hbWU6IGNvb2tpZS5uYW1lLAot
ICAgICAgICBOU0hUVFBDb29raWVWYWx1ZTogY29va2llLnZhbHVlLAotICAgICAgICBOU0hUVFBD
b29raWVEb21haW46IGNvb2tpZS5kb21haW4sCi0gICAgICAgIE5TSFRUUENvb2tpZVBhdGg6IGNv
b2tpZS5wYXRoLAotICAgICAgICBOU0hUVFBDb29raWVPcmlnaW5VUkw6IG9yaWdpblVSTCwKLSAg
ICAgICAgTlNIVFRQQ29va2llU2VjdXJlOiBAKGNvb2tpZS5zZWN1cmUpLAotICAgICAgICBOU0hU
VFBDb29raWVEaXNjYXJkOiBAKGNvb2tpZS5zZXNzaW9uKSwKLSAgICAgICAgTlNIVFRQQ29va2ll
RXhwaXJlczogW05TRGF0ZSBkYXRlV2l0aFRpbWVJbnRlcnZhbFNpbmNlMTk3MDpjb29raWUuZXhw
aXJlcyAvIDEwMDAuMF0sCi0gICAgfV07Ci0KLSNpZiAhVVNFKENGVVJMQ09OTkVDVElPTikKLSAg
ICBpZiAoIWNvb2tpZVN0b3JhZ2UpIHsKLSAgICAgICAgW1dlYkNvcmU6OmNvb2tpZVN0b3JhZ2Uo
c2Vzc2lvbikgc2V0Q29va2llOmh0dHBDb29raWVdOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
I2VuZGlmIC8vICFVU0UoQ0ZVUkxDT05ORUNUSU9OKQotCi0gICAgQ0ZIVFRQQ29va2llU3RvcmFn
ZVNldENvb2tpZShjb29raWVTdG9yYWdlLmdldCgpLCBbaHR0cENvb2tpZSBfQ0ZIVFRQQ29va2ll
XSk7Ci0KLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwotfQotCiB2b2lkIGdldEhvc3Ru
YW1lc1dpdGhDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgSGFz
aFNldDxTdHJpbmc+JiBob3N0bmFtZXMpCiB7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJ
T05TOwpAQCAtMzE1LDE1ICsyNzksNiBAQCB2b2lkIGRlbGV0ZUFsbENvb2tpZXMoY29uc3QgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uKQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0
YXRpYyBOU0hUVFBDb29raWVTdG9yYWdlICpjb29raWVTdG9yYWdlKGNvbnN0IE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiYgc2Vzc2lvbikKLXsKLSAgICBhdXRvIGNvb2tpZVN0b3JhZ2UgPSBzZXNzaW9u
LmNvb2tpZVN0b3JhZ2UoKTsKLSAgICBpZiAoIWNvb2tpZVN0b3JhZ2UgfHwgW05TSFRUUENvb2tp
ZVN0b3JhZ2Ugc2hhcmVkSFRUUENvb2tpZVN0b3JhZ2VdLl9jb29raWVTdG9yYWdlID09IGNvb2tp
ZVN0b3JhZ2UpCi0gICAgICAgIHJldHVybiBbTlNIVFRQQ29va2llU3RvcmFnZSBzaGFyZWRIVFRQ
Q29va2llU3RvcmFnZV07Ci0KLSAgICByZXR1cm4gW1tbTlNIVFRQQ29va2llU3RvcmFnZSBhbGxv
Y10gX2luaXRXaXRoQ0ZIVFRQQ29va2llU3RvcmFnZTpjb29raWVTdG9yYWdlLmdldCgpXSBhdXRv
cmVsZWFzZV07Ci19Ci0KIHZvaWQgZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lcyhjb25zdCBOZXR3
b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBob3N0bmFt
ZXMpCiB7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwpAQCAtMzQ4LDcgKzMwMyw3
IEBAIHZvaWQgZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNl
c3Npb24mIHNlc3Npb24sIGNvbnN0IFZlY3RvCiAgICAgICAgICAgICB3a0RlbGV0ZUhUVFBDb29r
aWUoY29va2llU3RvcmFnZS5nZXQoKSwgY29va2llLmdldCgpKTsKICAgICB9CiAKLSAgICBbV2Vi
Q29yZTo6Y29va2llU3RvcmFnZShzZXNzaW9uKSBfc2F2ZUNvb2tpZXNdOworICAgIFtzZXNzaW9u
Lm5zQ29va2llU3RvcmFnZSgpIF9zYXZlQ29va2llc107CiAKICAgICBFTkRfQkxPQ0tfT0JKQ19F
WENFUFRJT05TOwogfQpAQCAtMzYxLDcgKzMxNiw3IEBAIHZvaWQgZGVsZXRlQWxsQ29va2llc01v
ZGlmaWVkU2luY2UoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBzdGQ6OmNo
CiAgICAgTlNUaW1lSW50ZXJ2YWwgdGltZUludGVydmFsID0gc3RkOjpjaHJvbm86OmR1cmF0aW9u
X2Nhc3Q8c3RkOjpjaHJvbm86OmR1cmF0aW9uPGRvdWJsZT4+KHRpbWVQb2ludC50aW1lX3NpbmNl
X2Vwb2NoKCkpLmNvdW50KCk7CiAgICAgTlNEYXRlICpkYXRlID0gW05TRGF0ZSBkYXRlV2l0aFRp
bWVJbnRlcnZhbFNpbmNlMTk3MDp0aW1lSW50ZXJ2YWxdOwogCi0gICAgTlNIVFRQQ29va2llU3Rv
cmFnZSAqc3RvcmFnZSA9IGNvb2tpZVN0b3JhZ2Uoc2Vzc2lvbik7CisgICAgYXV0byAqc3RvcmFn
ZSA9IHNlc3Npb24ubnNDb29raWVTdG9yYWdlKCk7CiAKICAgICBbc3RvcmFnZSByZW1vdmVDb29r
aWVzU2luY2VEYXRlOmRhdGVdOwogICAgIFtzdG9yYWdlIF9zYXZlQ29va2llc107CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ29va2llSmFyU291cC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ29va2llSmFyU291cC5j
cHAKaW5kZXggMzFmMDA5ZDE3YzRkZmM0NWYyNGU0N2I0YzBiOGZkMjBkNTYxMDA2NC4uOGUwNTM2
NDhkNTdlNzYxNmU5M2YxOWI0ZTBhN2JiNDBjNjdlMjYxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0Nvb2tpZUphclNvdXAuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Db29raWVKYXJTb3VwLmNwcApAQCAtMTQ0
LDMzICsxNDQsNiBAQCB2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Np
b24mIHNlc3Npb24sIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdAogICAgIH0KIH0KIAotc3RhdGlj
IFNvdXBEYXRlKiBtc1RvU291cERhdGUoZG91YmxlIG1zKQotewotICAgIGludCB5ZWFyID0gbXNU
b1llYXIobXMpOwotICAgIGludCBkYXlPZlllYXIgPSBkYXlJblllYXIobXMsIHllYXIpOwotICAg
IGJvb2wgbGVhcFllYXIgPSBpc0xlYXBZZWFyKHllYXIpOwotICAgIHJldHVybiBzb3VwX2RhdGVf
bmV3KHllYXIsIG1vbnRoRnJvbURheUluWWVhcihkYXlPZlllYXIsIGxlYXBZZWFyKSwgZGF5SW5N
b250aEZyb21EYXlJblllYXIoZGF5T2ZZZWFyLCBsZWFwWWVhciksIG1zVG9Ib3VycyhtcyksIG1z
VG9NaW51dGVzKG1zKSwgc3RhdGljX2Nhc3Q8aW50PihtcyAvIDEwMDApICUgNjApOwotfQotCi1z
dGF0aWMgU291cENvb2tpZSogdG9Tb3VwQ29va2llKGNvbnN0IENvb2tpZSYgY29va2llKQotewot
ICAgIFNvdXBDb29raWUqIHNvdXBDb29raWUgPSBzb3VwX2Nvb2tpZV9uZXcoY29va2llLm5hbWUu
dXRmOCgpLmRhdGEoKSwgY29va2llLnZhbHVlLnV0ZjgoKS5kYXRhKCksCi0gICAgICAgIGNvb2tp
ZS5kb21haW4udXRmOCgpLmRhdGEoKSwgY29va2llLnBhdGgudXRmOCgpLmRhdGEoKSwgLTEpOwot
ICAgIHNvdXBfY29va2llX3NldF9odHRwX29ubHkoc291cENvb2tpZSwgY29va2llLmh0dHBPbmx5
KTsKLSAgICBzb3VwX2Nvb2tpZV9zZXRfc2VjdXJlKHNvdXBDb29raWUsIGNvb2tpZS5zZWN1cmUp
OwotICAgIGlmICghY29va2llLnNlc3Npb24pIHsKLSAgICAgICAgU291cERhdGUqIGRhdGUgPSBt
c1RvU291cERhdGUoY29va2llLmV4cGlyZXMpOwotICAgICAgICBzb3VwX2Nvb2tpZV9zZXRfZXhw
aXJlcyhzb3VwQ29va2llLCBkYXRlKTsKLSAgICAgICAgc291cF9kYXRlX2ZyZWUoZGF0ZSk7Ci0g
ICAgfQotICAgIHJldHVybiBzb3VwQ29va2llOwotfQotCi12b2lkIGFkZENvb2tpZShjb25zdCBO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYsIGNvbnN0IENvb2tpZSYg
Y29va2llKQotewotICAgIHNvdXBfY29va2llX2phcl9hZGRfY29va2llKHNlc3Npb24uY29va2ll
U3RvcmFnZSgpLCB0b1NvdXBDb29raWUoY29va2llKSk7Ci19Ci0KIHZvaWQgZ2V0SG9zdG5hbWVz
V2l0aENvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBIYXNoU2V0
PFN0cmluZz4mIGhvc3RuYW1lcykKIHsKICAgICBHVW5pcXVlUHRyPEdTTGlzdD4gY29va2llcyhz
b3VwX2Nvb2tpZV9qYXJfYWxsX2Nvb2tpZXMoc2Vzc2lvbi5jb29raWVTdG9yYWdlKCkpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3Rv
cmFnZVNlc3Npb25Tb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291
cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcAppbmRleCA4NDE3NjkxZTg1ZTc1MmFjN2Vl
NWJlNTc1ZjQxYzk4YTRmY2IwYTU5Li4yNDliZDgyYmQ3NGU4YzYyYTljMzU3MDM3Zjk4Mzg1MDRm
YTU3YWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAv
TmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAuY3BwCkBAIC0zMCw5ICsz
MCwxMSBAQAogCiAjaWYgVVNFKFNPVVApCiAKKyNpbmNsdWRlICJDb29raWUuaCIKICNpbmNsdWRl
ICJSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIlNvdXBOZXR3b3JrU2Vzc2lvbi5oIgogI2lu
Y2x1ZGUgPGxpYnNvdXAvc291cC5oPgorI2luY2x1ZGUgPHd0Zi9EYXRlTWF0aC5oPgogI2luY2x1
ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAj
aW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgpAQCAtMjc0LDYgKzI3NiwzNSBAQCB2b2lk
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2F2ZUNyZWRlbnRpYWxUb1BlcnNpc3RlbnRTdG9yYWdl
KGNvbnN0IFByb3RlY3Rpb25TcAogI2VuZGlmCiB9CiAKK3N0YXRpYyBTb3VwRGF0ZSogbXNUb1Nv
dXBEYXRlKGRvdWJsZSBtcykKK3sKKyAgICBpbnQgeWVhciA9IG1zVG9ZZWFyKG1zKTsKKyAgICBp
bnQgZGF5T2ZZZWFyID0gZGF5SW5ZZWFyKG1zLCB5ZWFyKTsKKyAgICBib29sIGxlYXBZZWFyID0g
aXNMZWFwWWVhcih5ZWFyKTsKKyAgICByZXR1cm4gc291cF9kYXRlX25ldyh5ZWFyLCBtb250aEZy
b21EYXlJblllYXIoZGF5T2ZZZWFyLCBsZWFwWWVhciksIGRheUluTW9udGhGcm9tRGF5SW5ZZWFy
KGRheU9mWWVhciwgbGVhcFllYXIpLCBtc1RvSG91cnMobXMpLCBtc1RvTWludXRlcyhtcyksIHN0
YXRpY19jYXN0PGludD4obXMgLyAxMDAwKSAlIDYwKTsKK30KKworc3RhdGljIFNvdXBDb29raWUq
IHRvU291cENvb2tpZShjb25zdCBDb29raWUmIGNvb2tpZSkKK3sKKyAgICBTb3VwQ29va2llKiBz
b3VwQ29va2llID0gc291cF9jb29raWVfbmV3KGNvb2tpZS5uYW1lLnV0ZjgoKS5kYXRhKCksIGNv
b2tpZS52YWx1ZS51dGY4KCkuZGF0YSgpLAorICAgICAgICBjb29raWUuZG9tYWluLnV0ZjgoKS5k
YXRhKCksIGNvb2tpZS5wYXRoLnV0ZjgoKS5kYXRhKCksIC0xKTsKKyAgICBzb3VwX2Nvb2tpZV9z
ZXRfaHR0cF9vbmx5KHNvdXBDb29raWUsIGNvb2tpZS5odHRwT25seSk7CisgICAgc291cF9jb29r
aWVfc2V0X3NlY3VyZShzb3VwQ29va2llLCBjb29raWUuc2VjdXJlKTsKKyAgICBpZiAoIWNvb2tp
ZS5zZXNzaW9uKSB7CisgICAgICAgIFNvdXBEYXRlKiBkYXRlID0gbXNUb1NvdXBEYXRlKGNvb2tp
ZS5leHBpcmVzKTsKKyAgICAgICAgc291cF9jb29raWVfc2V0X2V4cGlyZXMoc291cENvb2tpZSwg
ZGF0ZSk7CisgICAgICAgIHNvdXBfZGF0ZV9mcmVlKGRhdGUpOworICAgIH0KKyAgICByZXR1cm4g
c291cENvb2tpZTsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldENvb2tpZXMo
Y29uc3QgVmVjdG9yPENvb2tpZT4mIGNvb2tpZXMsIGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYpCit7
CisgICAgZm9yIChhdXRvIGNvb2tpZSA6IGNvb2tpZXMpCisgICAgICAgIHNvdXBfY29va2llX2ph
cl9hZGRfY29va2llKGNvb2tpZVN0b3JhZ2UoKSwgdG9Tb3VwQ29va2llKGNvb2tpZSkpOworfQor
CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFVTRShTT1VQKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVn
aWVzLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMuaAppbmRleCBhNjAyNzFiMjY1MWY0ZDI1ZWIzNzQyYTI2Mjk5ZWUwYTA3YWNkYjc4Li5j
YTkzOGJlZDc4ZjI3Y2MwYThhNzQyZjA0NDU3ZTg1NjAwMTI1NzQxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMu
aApAQCAtNTUsNyArNTUsNiBAQCBwcml2YXRlOgogICAgIFN0cmluZyBjb29raWVSZXF1ZXN0SGVh
ZGVyRmllbGRWYWx1ZShXZWJDb3JlOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmly
c3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6VVJMJikgb3ZlcnJpZGU7CiAgICAgYm9vbCBnZXRSYXdD
b29raWVzKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNv
cmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6VVJMJiwgVmVjdG9yPFdlYkNvcmU6
OkNvb2tpZT4mKSBvdmVycmlkZTsKICAgICB2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBXZWJDb3Jl
OjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBTdHJp
bmcmKSBvdmVycmlkZTsKLSAgICB2b2lkIGFkZENvb2tpZShjb25zdCBXZWJDb3JlOjpOZXR3b3Jr
U3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXZWJDb3JlOjpDb29r
aWUmKSBvdmVycmlkZTsKIAogICAgIC8vIFdlYkNvcmU6OlBhc3RlYm9hcmRTdHJhdGVneQogI2lm
IFBMQVRGT1JNKElPUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQppbmRleCAxOWZmNWUwYmVkMDQyNjA0Y2Vj
ZGFlMTZlNzEzMzEwZGEyNDc1MzZiLi5hYzJmYjQ0M2RhY2E3Zjc3Njc1NjZjZmIyMmFmZjc5ZDk1
MTA1M2I0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXMubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCkBAIC0xMTAsMTEgKzExMCw2IEBAIHZvaWQgV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjpkZWxldGVDb29raWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiBzZXNzaW9uLCBjCiAgICAgV2ViQ29yZTo6ZGVsZXRlQ29va2llKHNlc3Npb24sIHVybCwg
Y29va2llTmFtZSk7CiB9CiAKLXZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjphZGRDb29raWUo
Y29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIHVybCwgY29u
c3QgQ29va2llJiBjb29raWUpCi17Ci0gICAgV2ViQ29yZTo6YWRkQ29va2llKHNlc3Npb24sIHVy
bCwgY29va2llKTsKLX0KLQogdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFR5cGVzKFZl
Y3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKIHsKICAg
ICBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmdldFR5cGVzKHR5cGVzKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCAxNDE2MjQyZjEyZTFhMWJmMGNhNjQxOWJm
MDM1NzM2YTQwMjFlODM0Li4xZjkyY2U4Zjg5NDA0Zjc5NmM5ZGVmYjllNzljM2ZlM2ZhMmZjNGFk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC0yNzksMTEgKzI3OSw2IEBAIHZv
aWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRlbGV0ZUNvb2tpZShTZXNzaW9uSUQg
c2Vzc2lvbklELCBjb25zdCBVUkwmCiAgICAgV2ViQ29yZTo6ZGVsZXRlQ29va2llKHN0b3JhZ2VT
ZXNzaW9uKHNlc3Npb25JRCksIHVybCwgY29va2llTmFtZSk7CiB9CiAKLXZvaWQgTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmFkZENvb2tpZShTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25z
dCBVUkwmIHVybCwgY29uc3QgQ29va2llJiBjb29raWUpCi17Ci0gICAgV2ViQ29yZTo6YWRkQ29v
a2llKHN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCksIHVybCwgY29va2llKTsKLX0KLQogdm9pZCBO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVnaXN0ZXJGaWxlQmxvYlVSTChjb25zdCBV
UkwmIHVybCwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGUmIGV4dGVuc2lvbkhhbmRsZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKIHsKICAgICBS
ZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4gZXh0ZW5zaW9uID0gU2FuZGJveEV4dGVuc2lvbjo6Y3Jl
YXRlKGV4dGVuc2lvbkhhbmRsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRleCA5NzI5
MzE0ZDY3N2Y5MTNiZjM1MWRmYjA1NjA4ZjliOWNhODA5NTBmLi4yNGNmMGIwZjY0MjJiZDYyYjJj
ODE3ODBiODMwZGQ0NDZhMGFmM2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTkx
LDcgKzkxLDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZh
bHVlKFdlYkNvcmU6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBXZWJDb3JlOjpVUkwmLCBTdHJpbmcmIHJlc3VsdCk7CiAgICAgdm9pZCBnZXRSYXdDb29r
aWVzKFdlYkNvcmU6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBXZWJDb3JlOjpVUkwmLCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYpOwogICAgIHZvaWQg
ZGVsZXRlQ29va2llKFdlYkNvcmU6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29u
c3QgU3RyaW5nJiBjb29raWVOYW1lKTsKLSAgICB2b2lkIGFkZENvb2tpZShXZWJDb3JlOjpTZXNz
aW9uSUQsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFdlYkNvcmU6OkNvb2tpZSYpOwogCiAg
ICAgdm9pZCByZWdpc3RlckZpbGVCbG9iVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFN0
cmluZyYgcGF0aCwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiwgY29uc3QgU3RyaW5n
JiBjb250ZW50VHlwZSk7CiAgICAgdm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3QgV2ViQ29yZTo6
VVJMJiwgVmVjdG9yPFdlYkNvcmU6OkJsb2JQYXJ0PiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRU
eXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXgg
YTI2M2E0ZWRlMzg4ZWJlMjVmN2E2Njc5MTZjZTBiZTBkOWQ5OWUzZC4uMGIzOWQ3ZWQwMWE0NTFj
MGMzYTdmY2JlMDY4MDM5NzJmY2JmMjQxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysr
IGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MubWVzc2FnZXMuaW4KQEAgLTM4LDcgKzM4LDYgQEAgbWVzc2FnZXMgLT4gTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIENvb2tpZVJlcXVlc3RI
ZWFkZXJGaWVsZFZhbHVlKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlVS
TCBmaXJzdFBhcnR5LCBXZWJDb3JlOjpVUkwgdXJsKSAtPiAoU3RyaW5nIHJlc3VsdCkKICAgICBH
ZXRSYXdDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlVSTCBm
aXJzdFBhcnR5LCBXZWJDb3JlOjpVUkwgdXJsKSAtPiAoVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4g
Y29va2llcykKICAgICBEZWxldGVDb29raWUoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
V2ViQ29yZTo6VVJMIHVybCwgU3RyaW5nIGNvb2tpZU5hbWUpCi0gICAgQWRkQ29va2llKFdlYkNv
cmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlVSTCB1cmwsIHN0cnVjdCBXZWJDb3Jl
OjpDb29raWUgY29va2llKQogCiAgICAgUmVnaXN0ZXJGaWxlQmxvYlVSTChXZWJDb3JlOjpVUkwg
dXJsLCBTdHJpbmcgcGF0aCwgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgZXh0ZW5z
aW9uSGFuZGxlLCBTdHJpbmcgY29udGVudFR5cGUpCiAgICAgUmVnaXN0ZXJCbG9iVVJMKFdlYkNv
cmU6OlVSTCB1cmwsIFZlY3RvcjxXZWJDb3JlOjpCbG9iUGFydD4gYmxvYlBhcnRzLCBTdHJpbmcg
Y29udGVudFR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRD
b2RlcnMuY3BwCmluZGV4IDg0Y2NmOGY0OWI0NDRjMzQzOWZiNjVhYWRlMGI3OGY2OWVhODFmZmIu
LjkwZjZlYmI0ODdhYWZiMzg1ODNlMjZmMmJiMTlkNTRkNzIwYTE3ZjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC0zMSw3ICszMSw2
IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvQmxvYlBhcnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NlcnRpZmljYXRlSW5m
by5oPgotI2luY2x1ZGUgPFdlYkNvcmUvQ29va2llLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9DcmVk
ZW50aWFsLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9DdXJzb3IuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0RhdGFiYXNlRGV0YWlscy5oPgpAQCAtMTI4NCw0MSArMTI4Myw2IEBAIGJvb2wgQXJndW1lbnRD
b2RlcjxDb21wb3NpdGlvblVuZGVybGluZT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBDb21w
b3NpdGlvblVuCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLQotdm9pZCBBcmd1bWVudENvZGVyPENv
b2tpZT46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBDb29raWUmIGNvb2tpZSkKLXsK
LSAgICBlbmNvZGVyIDw8IGNvb2tpZS5uYW1lOwotICAgIGVuY29kZXIgPDwgY29va2llLnZhbHVl
OwotICAgIGVuY29kZXIgPDwgY29va2llLmRvbWFpbjsKLSAgICBlbmNvZGVyIDw8IGNvb2tpZS5w
YXRoOwotICAgIGVuY29kZXIgPDwgY29va2llLmV4cGlyZXM7Ci0gICAgZW5jb2RlciA8PCBjb29r
aWUuaHR0cE9ubHk7Ci0gICAgZW5jb2RlciA8PCBjb29raWUuc2VjdXJlOwotICAgIGVuY29kZXIg
PDwgY29va2llLnNlc3Npb247Ci19Ci0KLWJvb2wgQXJndW1lbnRDb2RlcjxDb29raWU+OjpkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlciwgQ29va2llJiBjb29raWUpCi17Ci0gICAgaWYgKCFkZWNvZGVy
LmRlY29kZShjb29raWUubmFtZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKGNvb2tpZS52YWx1ZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKGNvb2tpZS5kb21haW4pKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShjb29raWUucGF0aCkpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNvb2tpZS5leHBpcmVzKSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoY29va2llLmh0dHBPbmx5KSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoY29va2llLnNl
Y3VyZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNv
b2tpZS5zZXNzaW9uKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIHRydWU7
Ci19Ci0KIHZvaWQgQXJndW1lbnRDb2RlcjxEYXRhYmFzZURldGFpbHM+OjplbmNvZGUoRW5jb2Rl
ciYgZW5jb2RlciwgY29uc3QgRGF0YWJhc2VEZXRhaWxzJiBkZXRhaWxzKQogewogICAgIGVuY29k
ZXIgPDwgZGV0YWlscy5uYW1lKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmgKaW5kZXggNzQyMjc3ZWI4NGM0ZmNjM2NlYjdiOGE3NTJlYjQ0NWE5MmYy
NjA4NC4uZWZiN2IxNzM4OTViYWJhMTI2MzUyNmU2ZmU0MzgxZTQ2NjgyN2E5MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaApAQCAtODMsNyArODMs
NiBAQCBjbGFzcyBVc2VyU3R5bGVTaGVldDsKIGNsYXNzIFVzZXJTY3JpcHQ7CiBjbGFzcyBVUkw7
CiBzdHJ1Y3QgQ29tcG9zaXRpb25VbmRlcmxpbmU7Ci1zdHJ1Y3QgQ29va2llOwogc3RydWN0IERp
Y3RhdGlvbkFsdGVybmF0aXZlOwogc3RydWN0IERpY3Rpb25hcnlQb3B1cEluZm87CiBzdHJ1Y3Qg
RXZlbnRUcmFja2luZ1JlZ2lvbnM7CkBAIC00MDUsMTEgKzQwNCw2IEBAIHRlbXBsYXRlPD4gc3Ry
dWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Q29tcG9zaXRpb25VbmRlcmxpbmU+IHsKICAgICBz
dGF0aWMgYm9vbCBkZWNvZGUoRGVjb2RlciYsIFdlYkNvcmU6OkNvbXBvc2l0aW9uVW5kZXJsaW5l
Jik7CiB9OwogCi10ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkNvb2tp
ZT4gewotICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6Q29v
a2llJik7Ci0gICAgc3RhdGljIGJvb2wgZGVjb2RlKERlY29kZXImLCBXZWJDb3JlOjpDb29raWUm
KTsKLX07Ci0KIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6RGF0YWJh
c2VEZXRhaWxzPiB7CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJD
b3JlOjpEYXRhYmFzZURldGFpbHMmKTsKICAgICBzdGF0aWMgYm9vbCBkZWNvZGUoRGVjb2RlciYs
IFdlYkNvcmU6OkRhdGFiYXNlRGV0YWlscyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCmluZGV4
IGRlNWJlOWUyZDkwM2EwYTIwNDlmNDZlMmI3MGRjNDAyMmI0YjQ5YmYuLjQ4Y2FkYzcxMjRmOWRi
ZTY4NWJiZGU0OGNiM2ZlZTNkMTgzOTE2ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKQEAg
LTcyNyw3ICs3MjcsMTAgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6YWRkU2luZ2xlQ29v
a2llKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW4KICAgICAgICAgRkFJTF9X
SVRIX1BSRURFRklORURfRVJST1JfQU5EX0RFVEFJTFMoTWlzc2luZ1BhcmFtZXRlciwgIlRoZSBw
YXJhbWV0ZXIgJ2h0dHBPbmx5JyB3YXMgbm90IGZvdW5kLiIpOwogCiAgICAgV2ViQ29va2llTWFu
YWdlclByb3h5KiBjb29raWVNYW5hZ2VyID0gbV9wcm9jZXNzUG9vbC0+c3VwcGxlbWVudDxXZWJD
b29raWVNYW5hZ2VyUHJveHk+KCk7Ci0gICAgY29va2llTWFuYWdlci0+YWRkQ29va2llKFdlYkNv
cmU6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpLCBjb29raWUsIGFjdGl2ZVVSTC5ob3N0
KCkpOworCisgICAgLy8gRklYTUU6IFVzaW5nIGFjdGl2ZVVSTCBoZXJlIHR3aWNlIGlzIGJhc2lj
YWxseSBzYXlpbmcgInRoaXMgaXMgYWx3YXlzIGluIHRoZSBjb250ZXh0IG9mIHRoZSBtYWluIGRv
Y3VtZW50IgorICAgIC8vIHdoaWNoIHByb2JhYmx5IGlzbid0IGFjY3VyYXRlLgorICAgIGNvb2tp
ZU1hbmFnZXItPnNldENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklE
KCksIHsgY29va2llIH0sIGFjdGl2ZVVSTCwgYWN0aXZlVVJMKTsKIAogICAgIGNhbGxiYWNrLT5z
ZW5kU3VjY2VzcygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YkNvb2tpZU1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29v
a2llTWFuYWdlclByb3h5LmNwcAppbmRleCAwOGE3OTc5MmVhMDYyMzllZDUxYzhiMGQ4YjFhMzQx
NWNhNWEyNzY2Li41ZDgxZmFkMDAxNWRiMWQ3OTk4ZmMyMjc5Mzk0MjliY2ZmNGVjMzZhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmNw
cApAQCAtMTI5LDkgKzEyOSw5IEBAIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpkZWxldGVB
bGxDb29raWVzTW9kaWZpZWRTaW5jZShXZWJDb3JlOjpTZXNzaW9uSUQgc2VzCiAgICAgcHJvY2Vz
c1Bvb2woKS0+c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3NSZWxhdW5jaGluZ0lmTmVjZXNzYXJ5KE1l
c3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpEZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZShz
ZXNzaW9uSUQsIHRpbWUpKTsKIH0KIAotdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmFkZENv
b2tpZShXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpDb29raWUm
IGNvb2tpZSwgY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKK3ZvaWQgV2ViQ29va2llTWFuYWdlclBy
b3h5OjpzZXRDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFZlY3Rv
cjxXZWJDb3JlOjpDb29raWU+JiBjb29raWVzLCBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCwgY29u
c3QgV2ViQ29yZTo6VVJMJiBtYWluRG9jdW1lbnRVUkwpCiB7Ci0gICAgcHJvY2Vzc1Bvb2woKS0+
c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3NSZWxhdW5jaGluZ0lmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpX
ZWJDb29raWVNYW5hZ2VyOjpBZGRDb29raWUoc2Vzc2lvbklELCBjb29raWUsIGhvc3RuYW1lKSk7
CisgICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3NSZWxhdW5jaGluZ0lm
TmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpTZXRDb29raWVzKHNlc3Npb25J
RCwgY29va2llcywgdXJsLCBtYWluRG9jdW1lbnRVUkwpKTsKIH0KIAogdm9pZCBXZWJDb29raWVN
YW5hZ2VyUHJveHk6OnN0YXJ0T2JzZXJ2aW5nQ29va2llQ2hhbmdlcyhXZWJDb3JlOjpTZXNzaW9u
SUQgc2Vzc2lvbklEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNv
b2tpZU1hbmFnZXJQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1h
bmFnZXJQcm94eS5oCmluZGV4IDY1ZDA0N2MxZTM4ZTU5OTBkZTA1YjA2ZTI4YWEzZTgyNGZkNmUy
N2IuLjRhZDY3NmM0YmRlNzhiYTNmZDE4NGE2ZDc5MGNjMDdmYmE3ZmU3YmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmgKQEAgLTY5LDcg
KzY5LDggQEAgcHVibGljOgogICAgIHZvaWQgZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKFdlYkNv
cmU6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBob3N0bmFtZSk7CiAgICAgdm9pZCBkZWxldGVB
bGxDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCk7CiAgICAgdm9pZCBkZWxldGVBbGxDb29raWVz
TW9kaWZpZWRTaW5jZShXZWJDb3JlOjpTZXNzaW9uSUQsIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xv
Y2s6OnRpbWVfcG9pbnQpOwotICAgIHZvaWQgYWRkQ29va2llKFdlYkNvcmU6OlNlc3Npb25JRCwg
Y29uc3QgV2ViQ29yZTo6Q29va2llJiwgY29uc3QgU3RyaW5nJiBob3N0bmFtZSk7CisKKyAgICB2
b2lkIHNldENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6
Q29va2llPiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgbWFpbkRv
Y3VtZW50VVJMKTsKIAogICAgIHZvaWQgc2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShIVFRQQ29v
a2llQWNjZXB0UG9saWN5KTsKICAgICB2b2lkIGdldEhUVFBDb29raWVBY2NlcHRQb2xpY3koc3Rk
OjpmdW5jdGlvbjx2b2lkIChIVFRQQ29va2llQWNjZXB0UG9saWN5LCBDYWxsYmFja0Jhc2U6OkVy
cm9yKT4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29raWVzL1dl
YkNvb2tpZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29raWVzL1dl
YkNvb2tpZU1hbmFnZXIuY3BwCmluZGV4IDRiZjY3NzNkYzAwYWI2YzNjNTY0OTZhYzQ5NTc0Y2I4
NDgwNTcxOGQuLmNhM2E4YTFmOTE0ZjhiNGUzZWNiOGJmODFjNmI3MTE3YWRjNzk1ZWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFu
YWdlci5jcHAKQEAgLTgzLDEwICs4MywxMCBAQCB2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmRlbGV0
ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKFNlc3Npb25JRCBzZXNzaW9uSUQsIHN0ZDo6YwogICAg
ICAgICBXZWJDb3JlOjpkZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZSgqc3RvcmFnZVNlc3Np
b24sIHRpbWUpOwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmFkZENvb2tpZShTZXNzaW9u
SUQgc2Vzc2lvbklELCBjb25zdCBDb29raWUmIGNvb2tpZSwgY29uc3QgU3RyaW5nJiBob3N0bmFt
ZSkKK3ZvaWQgV2ViQ29va2llTWFuYWdlcjo6c2V0Q29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBjb25zdCBWZWN0b3I8Q29va2llPiYgY29va2llcywgY29uc3QgVVJMJiB1cmws
IGNvbnN0IFVSTCYgbWFpbkRvY3VtZW50VVJMKQogewogICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vz
c2lvbiA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkK
LSAgICAgICAgV2ViQ29yZTo6YWRkQ29va2llKCpzdG9yYWdlU2Vzc2lvbiwgVVJMKFVSTCgpLCBo
b3N0bmFtZSksIGNvb2tpZSk7CisgICAgICAgIHN0b3JhZ2VTZXNzaW9uLT5zZXRDb29raWVzKGNv
b2tpZXMsIHVybCwgbWFpbkRvY3VtZW50VVJMKTsKIH0KIAogdm9pZCBXZWJDb29raWVNYW5hZ2Vy
Ojpub3RpZnlDb29raWVzRGlkQ2hhbmdlKFNlc3Npb25JRCBzZXNzaW9uSUQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5oIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIuaAppbmRl
eCA3ZWQ2NThmNGZhNjEzOGZmMjJlNjIwYmU3NTA2ZGQzZWNkMDg2NjY4Li5kYjI3ZDIwYWFkZDg3
ZDg4NTM2ZGE1MDcxZTU5ZjMyODkxMTUxODAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmgKQEAgLTM0LDEyICszNCwxNCBA
QAogI2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVk
ZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiAjaWYgVVNF
KFNPVVApCiAjaW5jbHVkZSAiU291cENvb2tpZVBlcnNpc3RlbnRTdG9yYWdlVHlwZS5oIgogI2Vu
ZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFVSTDsKIHN0cnVjdCBDb29raWU7CiB9
CiAKQEAgLTY5LDcgKzcxLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGRlbGV0ZUNvb2tpZXNGb3JI
b3N0bmFtZShXZWJDb3JlOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgZGVs
ZXRlQWxsQ29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQpOwogICAgIHZvaWQgZGVsZXRlQWxsQ29v
a2llc01vZGlmaWVkU2luY2UoV2ViQ29yZTo6U2Vzc2lvbklELCBzdGQ6OmNocm9ubzo6c3lzdGVt
X2Nsb2NrOjp0aW1lX3BvaW50KTsKLSAgICB2b2lkIGFkZENvb2tpZShXZWJDb3JlOjpTZXNzaW9u
SUQsIGNvbnN0IFdlYkNvcmU6OkNvb2tpZSYsIGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpOworCisg
ICAgdm9pZCBzZXRDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFdlYkNv
cmU6OkNvb2tpZT4mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXZWJDb3JlOjpVUkwmIG1h
aW5Eb2N1bWVudFVSTCk7CiAKICAgICB2b2lkIHBsYXRmb3JtU2V0SFRUUENvb2tpZUFjY2VwdFBv
bGljeShIVFRQQ29va2llQWNjZXB0UG9saWN5KTsKICAgICB2b2lkIGdldEhUVFBDb29raWVBY2Nl
cHRQb2xpY3kodWludDY0X3QgY2FsbGJhY2tJRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLm1lc3NhZ2VzLmlu
CmluZGV4IDVkNTE1MzY2NDUyMTYwMzBlMzE1ODg2MmZkNjJkNzI1MzVlMmVkYzQuLjAwZTdiNjVi
NzQ5MDgyNmM1YmIzOWJkNzI2ZTljMmQzYmE1M2YwNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLm1lc3NhZ2VzLmluCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLm1lc3Nh
Z2VzLmluCkBAIC0yOCw3ICsyOCw4IEBACiAgICAgdm9pZCBEZWxldGVDb29raWVzRm9ySG9zdG5h
bWUoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU3RyaW5nIGhvc3RuYW1lKQogICAgIHZv
aWQgRGVsZXRlQWxsQ29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogICAgIHZv
aWQgRGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCB0aW1lKQotICAgIHZv
aWQgQWRkQ29va2llKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHN0cnVjdCBXZWJDb3Jl
OjpDb29raWUgY29va2llLCBTdHJpbmcgaG9zdG5hbWUpCisKKyAgICB2b2lkIFNldENvb2tpZXMo
V2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4gY29v
a2llcywgV2ViQ29yZTo6VVJMIHVybCwgV2ViQ29yZTo6VVJMIG1haW5Eb2N1bWVudFVSTCk7CiAK
ICAgICB2b2lkIFNldEhUVFBDb29raWVBY2NlcHRQb2xpY3kodWludDMyX3QgcG9saWN5KQogICAg
IHZvaWQgR2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSh1aW50NjRfdCBjYWxsYmFja0lEKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0
Zm9ybVN0cmF0ZWdpZXMuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCmluZGV4IGMwMzk3MGFkNTViZWY2YTEwNTFm
ZDAyNWIwMTFjNGQ5MDAwMDRlMTQuLmJmNGJkYWUwMTVjNjFlNTI1Mjk5YTU0YWUxZmFhMmI2ODBl
ZDg4ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKQEAgLTE1NSwxMSAr
MTU1LDYgQEAgdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmRlbGV0ZUNvb2tpZShjb25zdCBO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGMKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5uZXR3b3JrQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6RGVsZXRlQ29va2llKHNlc3Npb24uc2Vzc2lvbklE
KCksIHVybCwgY29va2llTmFtZSksIDApOwogfQogCi12b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6YWRkQ29va2llKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3Qg
VVJMJiB1cmwsIGNvbnN0IENvb2tpZSYgY29va2llKQotewotICAgIFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLm5ldHdvcmtDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpBZGRDb29raWUoc2Vzc2lvbi5zZXNzaW9uSUQo
KSwgdXJsLCBjb29raWUpLCAwKTsKLX0KLQogI2lmIFBMQVRGT1JNKENPQ09BKQogLy8gUGFzdGVi
b2FyZFN0cmF0ZWd5CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCmluZGV4IGM2OWVh
NTE5ZWI5NmQwNWFiYjcxNDZmODFiYzJkNWJlMzQwZmQwMGUuLjM1NWQ4YTZmMjZkMmNkNDEzNDc0
NzMxNDQzZWY0NTAwZjAyZjA1MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaApA
QCAtNTYsNyArNTYsNiBAQCBwcml2YXRlOgogICAgIFN0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVy
RmllbGRWYWx1ZShXZWJDb3JlOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgV2ViQ29yZTo6VVJMJikgb3ZlcnJpZGU7CiAgICAgYm9vbCBnZXRSYXdDb29r
aWVzKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6
OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6VVJMJiwgVmVjdG9yPFdlYkNvcmU6OkNv
b2tpZT4mKSBvdmVycmlkZTsKICAgICB2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBXZWJDb3JlOjpO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBTdHJpbmcm
KSBvdmVycmlkZTsKLSAgICB2b2lkIGFkZENvb2tpZShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXZWJDb3JlOjpDb29raWUm
KSBvdmVycmlkZTsKIAogICAgIC8vIFdlYkNvcmU6OlBhc3RlYm9hcmRTdHJhdGVneQogI2lmIFBM
QVRGT1JNKElPUykK
</data>
<flag name="review"
          id="325717"
          type_id="1"
          status="+"
          setter="bburg"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304160</attachid>
            <date>2017-03-11 03:09:47 -0800</date>
            <delta_ts>2017-03-11 08:44:04 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>wk2-add-cookie.diff</filename>
            <type>text/plain</type>
            <size>47323</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA4MDBhYzczNjhhMi4uMzM5OWI1YzEzODUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1OCBAQAorMjAxNy0wMy0xMSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+
CisKKyAgICAgICAgQ2xlYW51cCAiYWRkQ29va2llIiBhbmQgaXRzIHNvbGUgdXNlci4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTQ4NgorCisgICAg
ICAgIFJldmlld2VkIGJ5IEJyaWFuIEJ1cmcuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChSZWZh
Y3Rvciwgbm8gYmVoYXZpb3IgY2hhbmdlKQorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorCisgICAgICAgICogbG9hZGVyL0Nvb2tpZUphci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjphZGRDb29raWUpOiBEZWxldGVkLgorICAgICAgICAqIGxvYWRlci9Db29r
aWVKYXIuaDoKKworICAgICAgICAqIHBsYXRmb3JtL0Nvb2tpZS5oOgorICAgICAgICAoV2ViQ29y
ZTo6Q29va2llOjpDb29raWUpOgorICAgICAgICAoV2ViQ29yZTo6Q29va2llSGFzaDo6aGFzaCk6
CisgICAgICAgIChXZWJDb3JlOjpDb29raWVIYXNoOjplcXVhbCk6CisgICAgICAgIChXZWJDb3Jl
OjpDb29raWU6OmVuY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpDb29raWU6OmRlY29kZSk6CisK
KyAgICAgICAgKiBwbGF0Zm9ybS9Db29raWVzU3RyYXRlZ3kuaDoKKworICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg6CisKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL1BsYXRmb3JtQ29va2llSmFyLmg6CisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL2NmL0Nvb2tpZUphckNGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFkZENvb2tpZSk6
IERlbGV0ZWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0Nvb2tpZUNvY29h
Lm1tOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29va2llSmFyLmguCisgICAg
ICAgIChXZWJDb3JlOjpDb29raWU6Om9wZXJhdG9yIE5TSFRUUENvb2tpZSAqKToKKworICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW06
IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Db29raWVKYXIuaC4KKyAgICAgICAg
KFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q29va2llcyk6CisgICAgICAgIChX
ZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246Om5zQ29va2llU3RvcmFnZSk6CisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyQ3VybC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjphZGRDb29raWUpOiBEZWxldGVkLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9tYWMvQ29va2llSmFyTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6ZGVsZXRlQ29va2llc0Zv
ckhvc3RuYW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpkZWxldGVBbGxDb29raWVzTW9kaWZpZWRT
aW5jZSk6CisgICAgICAgIChXZWJDb3JlOjphZGRDb29raWUpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6Y29va2llU3RvcmFnZSk6IERlbGV0ZWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL3NvdXAvQ29va2llSmFyU291cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b1NvdXBD
b29raWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6YWRkQ29va2llKTogRGVsZXRlZC4K
KworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25T
b3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvU291cENvb2tpZSk6CisgICAgICAgIChXZWJD
b3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldENvb2tpZXMpOgorCiAyMDE3LTAzLTEwICBB
bGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgRml4
IHdhdGNoIGFuZCB0diBidWlsZHMgYWZ0ZXIgcjIxMzI5NApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGI4MTRkMzE1YTYwLi5mYjQ1
MTk3NjEzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtMjI3OCw2ICsyMjc4LDggQEAKIAkJNTFDODFCOEEwQzQ0MjJGNzAwMTlF
Q0UzIC8qIEZUUERpcmVjdG9yeVBhcnNlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTFDODFCODgwQzQ0MjJGNzAwMTlFQ0UzIC8qIEZUUERpcmVjdG9y
eVBhcnNlci5oICovOyB9OwogCQk1MUNCRkM5OTBEMTBFNDgzMDAyREJGNTEgLyogQ2FjaGVkRnJh
bWVQbGF0Zm9ybURhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxQ0JGQzk4MEQxMEU0ODMwMDJEQkY1MSAvKiBDYWNoZWRGcmFtZVBsYXRmb3JtRGF0
YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUx
RDBDNTE2MERBQTkwQjcwMDNCMzgzMSAvKiBKU1N0b3JhZ2VDdXN0b20uY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFEMEM1MTUwREFBOTBCNzAwM0Iz
ODMxIC8qIEpTU3RvcmFnZUN1c3RvbS5jcHAgKi87IH07CisJCTUxRDEyNDhCMUU3MzYyN0YwMDJC
MjgyMCAvKiBOZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRDEyNDhBMUU3MzYyNUMwMDJCMjgyMCAvKiBO
ZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbSAqLzsgfTsKKwkJNTFEMTI0OEQxRTczNjRBQTAw
MkIyODIwIC8qIENvb2tpZUNvY29hLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTFEMTI0OEMxRTczNjQ1NjAwMkIyODIwIC8qIENvb2tpZUNvY29hLm1t
ICovOyB9OwogCQk1MUQ3MjM2QzFCQjYxNzQ5MDA0NzhDQTMgLyogSURCUmVzdWx0RGF0YS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUQ3MjM2QTFC
QjYwQkZFMDA0NzhDQTMgLyogSURCUmVzdWx0RGF0YS5jcHAgKi87IH07CiAJCTUxRDcyMzZEMUJC
NjE3NDkwMDQ3OENBMyAvKiBJREJSZXN1bHREYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUQ3MjM2QjFCQjYwQkZFMDA0NzhDQTMgLyogSURCUmVz
dWx0RGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTUxRDdFRkVBMUJERThGOEMwMEU5M0UxMCAvKiBUaHJlYWRTYWZlRGF0YUJ1ZmZlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTExRkFFQTkxQkRD
OTg5QTAwQjRBRkU0IC8qIFRocmVhZFNhZmVEYXRhQnVmZmVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTk3MTUsNiArOTcxNyw4IEBACiAJCTUx
QzgxQjg4MEM0NDIyRjcwMDE5RUNFMyAvKiBGVFBEaXJlY3RvcnlQYXJzZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZUUERpcmVjdG9yeVBhcnNlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1MUNCRkM5ODBEMTBFNDgzMDAyREJGNTEgLyogQ2FjaGVkRnJh
bWVQbGF0Zm9ybURhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FjaGVk
RnJhbWVQbGF0Zm9ybURhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFEMEM1
MTUwREFBOTBCNzAwM0IzODMxIC8qIEpTU3RvcmFnZUN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1N0b3JhZ2VDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk1MUQxMjQ4QTFFNzM2MjVDMDAyQjI4MjAgLyogTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBOZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNTFEMTI0OEMxRTczNjQ1NjAwMkIyODIwIC8qIENvb2tpZUNvY29hLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQ29va2llQ29jb2EubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRDcxOTZDMTgxMTA2REYwMDE2REM1MSAvKiBET01XaW5k
b3dJbmRleGVkRGF0YWJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gRE9NV2luZG93SW5kZXhlZERhdGFiYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTFENzE5NkQxODExMDZERjAwMTZEQzUxIC8qIERPTVdpbmRvd0luZGV4ZWREYXRhYmFz
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01XaW5kb3dJbmRleGVkRGF0
YWJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFENzE5NkUxODExMDZERjAw
MTZEQzUxIC8qIERPTVdpbmRvd0luZGV4ZWREYXRhYmFzZS5pZGwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gRE9NV2luZG93SW5kZXhlZERhdGFiYXNlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTE5MDk1LDkgKzE5MDk5LDExIEBACiAJCTdFN0RFMUZFMTk1Q0VGMkQwMDM1MzYz
QiAvKiBjb2NvYSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJ
CQkJNTFEMTI0OEMxRTczNjQ1NjAwMkIyODIwIC8qIENvb2tpZUNvY29hLm1tICovLAogCQkJCTM3
OTI5MTdDMTk4NzY3OEYwMEY0QjY2MSAvKiBDcmVkZW50aWFsQ29jb2EuaCAqLywKIAkJCQkzNzky
OTE3QjE5ODc2NzhGMDBGNEI2NjEgLyogQ3JlZGVudGlhbENvY29hLm1tICovLAogCQkJCTVDOUI4
NjBCMUMyMUUzQzYwMDExMEYzNiAvKiBOZXR3b3JrTG9hZE1ldHJpY3MubW0gKi8sCisJCQkJNTFE
MTI0OEExRTczNjI1QzAwMkIyODIwIC8qIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tICov
LAogCQkJCTM3MkFEQTM3MTk3RjQ3QjkwMEZDNTAxRSAvKiBQcm90ZWN0aW9uU3BhY2VDb2NvYS5o
ICovLAogCQkJCTM3MkFEQTM5MTk3RjY4NzYwMEZDNTAxRSAvKiBQcm90ZWN0aW9uU3BhY2VDb2Nv
YS5tbSAqLywKIAkJCQk3RTdERTFGQzE5NUNFRjI2MDAzNTM2M0IgLyogUmVzb3VyY2VSZXF1ZXN0
Q29jb2EubW0gKi8sCkBAIC0zMDE3Nyw2ICszMDE4Myw3IEBACiAJCQkJQ0Q1MjQ4MUExOEUyMDBF
RDAwMDhBMDdEIC8qIERpc3BsYXlTbGVlcERpc2FibGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTVEOEM0REJGMTQyODIyMkMwMDI2Q0U3MiAvKiBEaXNwbGF5U2xlZXBEaXNhYmxlckNvY29hLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUZEMzE2MDkwMTJCMDI2RjcwMEMxQTM1OSAvKiBEaXN0YW5j
ZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MUQxMjQ4QjFFNzM2MjdGMDAyQjI4MjAgLyogTmV0
d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW0gaW4gU291cmNlcyAqLywKIAkJCQlBMUUxMTU0NDEz
MDE1QzNEMDA1NEFDOEMgLyogRGlzdGFudExpZ2h0U291cmNlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUIyRjM0RkU5MEU4MkY4MjcwMEY2MjdDRCAvKiBETlNDRk5ldC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlGMjkzQjI3RTU2QzExMkYzNzNGRkYyN0UgLyogRE5TUmVzb2x2ZVF1ZXVlLmNwcCBp
biBTb3VyY2VzICovLApAQCAtMzIxNDAsNiArMzIxNDcsNyBAQAogCQkJCUJDQUE5MEMzMEE3RUJB
NjAwMDhCMTIyOSAvKiBTY3JvbGxiYXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYwOTA4N0Yx
NDQ0RkRCMjAwMDI4OTE3IC8qIFNjcm9sbGJhclRoZW1lLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUJDMTQwMjhBMEU4MzY4MDgwMDMxOTcxNyAvKiBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZS5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQk1MUQxMjQ4RDFFNzM2NEFBMDAyQjI4MjAgLyogQ29va2llQ29j
b2EubW0gaW4gU291cmNlcyAqLywKIAkJCQk0NEM5OTE4MjBGM0QxRTBEMDA1ODY2NzAgLyogU2Ny
b2xsYmFyVGhlbWVJT1MubW0gaW4gU291cmNlcyAqLywKIAkJCQlCQ0VGODY5RjBFODQ0RTlEMDBB
ODVDRDUgLyogU2Nyb2xsYmFyVGhlbWVNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQkwRkU3MTQw
NTE0MjE3MEI4MDBEQjMzQkEgLyogU2Nyb2xsYmFyVGhlbWVNb2NrLmNwcCBpbiBTb3VyY2VzICov
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUphci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvQ29va2llSmFyLmNwcAppbmRleCBlZjkzZGZmNWUxNC4uM2U4YTc4
NWE3OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db29raWVKYXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db29raWVKYXIuY3BwCkBAIC04Myw5ICs4Myw0IEBA
IHZvaWQgZGVsZXRlQ29va2llKGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgVVJMJiB1
cmwsIGNvbnN0IFN0cmluZyYgY29va2llCiAgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPmNvb2tp
ZXNTdHJhdGVneSgpLT5kZWxldGVDb29raWUoc3RvcmFnZVNlc3Npb24oZG9jdW1lbnQpLCB1cmws
IGNvb2tpZU5hbWUpOwogfQogCi12b2lkIGFkZENvb2tpZShjb25zdCBEb2N1bWVudCYgZG9jdW1l
bnQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBDb29raWUmIGNvb2tpZSkKLXsKLSAgICBwbGF0Zm9y
bVN0cmF0ZWdpZXMoKS0+Y29va2llc1N0cmF0ZWd5KCktPmFkZENvb2tpZShzdG9yYWdlU2Vzc2lv
bihkb2N1bWVudCksIHVybCwgY29va2llKTsKLX0KLQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0Nvb2tpZUphci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUph
ci5oCmluZGV4IDBhNTNkOTY0NDU3Li4yMjBhOWI5MjYwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0Nvb2tpZUphci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db29r
aWVKYXIuaApAQCAtNDUsNiArNDUsNSBAQCBXRUJDT1JFX0VYUE9SVCBib29sIGNvb2tpZXNFbmFi
bGVkKGNvbnN0IERvY3VtZW50Jik7CiBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgY29va2llUmVxdWVz
dEhlYWRlckZpZWxkVmFsdWUoY29uc3QgRG9jdW1lbnQmLCBjb25zdCBVUkwmKTsKIFdFQkNPUkVf
RVhQT1JUIGJvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBEb2N1bWVudCYsIGNvbnN0IFVSTCYsIFZl
Y3RvcjxDb29raWU+Jik7CiBXRUJDT1JFX0VYUE9SVCB2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBE
b2N1bWVudCYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSk7Ci1XRUJDT1JF
X0VYUE9SVCB2b2lkIGFkZENvb2tpZShjb25zdCBEb2N1bWVudCYsIGNvbnN0IFVSTCYsIGNvbnN0
IENvb2tpZSYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9Db29raWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nvb2tp
ZS5oCmluZGV4IDk2MWRmZTUyYTE2Li43MjRhYmFiNGUwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vQ29va2llLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29v
a2llLmgKQEAgLTI5LDQ3ICsyOSw5MyBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2gu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAorI2lmZGVmIF9fT0JKQ19fCisj
aW5jbHVkZSA8b2JqYy9vYmpjLmg+CisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0g
ICAgc3RydWN0IENvb2tpZSB7Ci0gICAgICAgIENvb2tpZSgpIHsgfQotCi0gICAgICAgIENvb2tp
ZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUsIGNvbnN0IFN0cmluZyYg
ZG9tYWluLAotICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgcGF0aCwgZG91YmxlIGV4cGly
ZXMsIGJvb2wgaHR0cE9ubHksIGJvb2wgc2VjdXJlLAotICAgICAgICAgICAgICAgIGJvb2wgc2Vz
c2lvbikKLSAgICAgICAgICAgIDogbmFtZShuYW1lKQotICAgICAgICAgICAgLCB2YWx1ZSh2YWx1
ZSkKLSAgICAgICAgICAgICwgZG9tYWluKGRvbWFpbikKLSAgICAgICAgICAgICwgcGF0aChwYXRo
KQotICAgICAgICAgICAgLCBleHBpcmVzKGV4cGlyZXMpCi0gICAgICAgICAgICAsIGh0dHBPbmx5
KGh0dHBPbmx5KQotICAgICAgICAgICAgLCBzZWN1cmUoc2VjdXJlKQotICAgICAgICAgICAgLCBz
ZXNzaW9uKHNlc3Npb24pCi0gICAgICAgIHsKLSAgICAgICAgfQotCi0gICAgICAgIFN0cmluZyBu
YW1lOwotICAgICAgICBTdHJpbmcgdmFsdWU7Ci0gICAgICAgIFN0cmluZyBkb21haW47Ci0gICAg
ICAgIFN0cmluZyBwYXRoOwotICAgICAgICAvLyBFeHBpcmF0aW9uIGRhdGUsIGV4cHJlc3NlZCBh
cyBtaWxsaXNlY29uZHMgc2luY2UgdGhlIFVOSVggZXBvY2guCi0gICAgICAgIGRvdWJsZSBleHBp
cmVzOwotICAgICAgICBib29sIGh0dHBPbmx5OwotICAgICAgICBib29sIHNlY3VyZTsKLSAgICAg
ICAgYm9vbCBzZXNzaW9uOwotICAgIH07CitzdHJ1Y3QgQ29va2llIHsKKyAgICBDb29raWUoKSB7
IH0KIAotICAgIHN0cnVjdCBDb29raWVIYXNoIHsKLSAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhh
c2goY29uc3QgQ29va2llJiBrZXkpCi0gICAgICAgIHsgCi0gICAgICAgICAgICByZXR1cm4gU3Ry
aW5nSGFzaDo6aGFzaChrZXkubmFtZSkgKyBTdHJpbmdIYXNoOjpoYXNoKGtleS5kb21haW4pICsg
U3RyaW5nSGFzaDo6aGFzaChrZXkucGF0aCkgKyBrZXkuc2VjdXJlOwotICAgICAgICB9CisgICAg
Q29va2llKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgY29uc3QgU3Ry
aW5nJiBkb21haW4sIGNvbnN0IFN0cmluZyYgcGF0aCwgZG91YmxlIGV4cGlyZXMsIGJvb2wgaHR0
cE9ubHksIGJvb2wgc2VjdXJlLCBib29sIHNlc3Npb24pCisgICAgICAgIDogbmFtZShuYW1lKQor
ICAgICAgICAsIHZhbHVlKHZhbHVlKQorICAgICAgICAsIGRvbWFpbihkb21haW4pCisgICAgICAg
ICwgcGF0aChwYXRoKQorICAgICAgICAsIGV4cGlyZXMoZXhwaXJlcykKKyAgICAgICAgLCBodHRw
T25seShodHRwT25seSkKKyAgICAgICAgLCBzZWN1cmUoc2VjdXJlKQorICAgICAgICAsIHNlc3Np
b24oc2Vzc2lvbikKKyAgICB7CisgICAgfQorCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4g
dm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+
IHN0YXRpYyBib29sIGRlY29kZShEZWNvZGVyJiwgQ29va2llJik7CisKKyNpZmRlZiBfX09CSkNf
XworICAgIG9wZXJhdG9yIE5TSFRUUENvb2tpZSAqKCkgY29uc3Q7CisjZW5kaWYKKworICAgIFN0
cmluZyBuYW1lOworICAgIFN0cmluZyB2YWx1ZTsKKyAgICBTdHJpbmcgZG9tYWluOworICAgIFN0
cmluZyBwYXRoOworICAgIC8vIEV4cGlyYXRpb24gZGF0ZSwgZXhwcmVzc2VkIGFzIG1pbGxpc2Vj
b25kcyBzaW5jZSB0aGUgVU5JWCBlcG9jaC4KKyAgICBkb3VibGUgZXhwaXJlczsKKyAgICBib29s
IGh0dHBPbmx5OworICAgIGJvb2wgc2VjdXJlOworICAgIGJvb2wgc2Vzc2lvbjsKK307CisKK3N0
cnVjdCBDb29raWVIYXNoIHsKKyAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBDb29raWUm
IGtleSkKKyAgICB7IAorICAgICAgICByZXR1cm4gU3RyaW5nSGFzaDo6aGFzaChrZXkubmFtZSkg
KyBTdHJpbmdIYXNoOjpoYXNoKGtleS5kb21haW4pICsgU3RyaW5nSGFzaDo6aGFzaChrZXkucGF0
aCkgKyBrZXkuc2VjdXJlOworICAgIH0KKworICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IENv
b2tpZSYgYSwgY29uc3QgQ29va2llJiBiKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGEubmFtZSA9
PSBiLm5hbWUgJiYgYS5kb21haW4gPT0gYi5kb21haW4gJiYgYS5wYXRoID09IGIucGF0aCAmJiBh
LnNlY3VyZSA9PSBiLnNlY3VyZTsKKyAgICB9Cit9OworCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVy
Pgordm9pZCBDb29raWU6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVu
Y29kZXIgPDwgbmFtZTsKKyAgICBlbmNvZGVyIDw8IHZhbHVlOworICAgIGVuY29kZXIgPDwgZG9t
YWluOworICAgIGVuY29kZXIgPDwgcGF0aDsKKyAgICBlbmNvZGVyIDw8IGV4cGlyZXM7CisgICAg
ZW5jb2RlciA8PCBodHRwT25seTsKKyAgICBlbmNvZGVyIDw8IHNlY3VyZTsKKyAgICBlbmNvZGVy
IDw8IHNlc3Npb247Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+Citib29sIENvb2tpZTo6
ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIENvb2tpZSYgY29va2llKQoreworICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoY29va2llLm5hbWUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShjb29raWUudmFsdWUpKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShjb29raWUuZG9tYWluKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoY29va2llLnBhdGgpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShjb29raWUuZXhwaXJlcykpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNvb2tpZS5odHRwT25s
eSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNvb2tp
ZS5zZWN1cmUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShjb29raWUuc2Vzc2lvbikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiB0
cnVlOworfQogCi0gICAgICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IENvb2tpZSYgYSwgY29u
c3QgQ29va2llJiBiKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gYS5uYW1lID09IGIu
bmFtZSAmJiBhLmRvbWFpbiA9PSBiLmRvbWFpbiAmJiBhLnBhdGggPT0gYi5wYXRoICYmIGEuc2Vj
dXJlID09IGIuc2VjdXJlOwotICAgICAgICB9Ci0gICAgfTsKIH0KIAogbmFtZXNwYWNlIFdURiB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db29raWVzU3RyYXRlZ3kuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nvb2tpZXNTdHJhdGVneS5oCmluZGV4IDYwNWRjMWY0
NDI4Li5lMDQ5YmUzNTA1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29v
a2llc1N0cmF0ZWd5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29va2llc1N0cmF0
ZWd5LmgKQEAgLTQ1LDcgKzQ1LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tp
ZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKFNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBVUkwmKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGdldFJhd0Nvb2tpZXMoY29uc3Qg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwm
LCBWZWN0b3I8Q29va2llPiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQ29va2llKGNv
bnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgY29v
a2llTmFtZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBhZGRDb29raWUoY29uc3QgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiwgY29uc3QgQ29va2llJikgPSAwOwogCiBwcm90ZWN0
ZWQ6CiAgICAgdmlydHVhbCB+Q29va2llc1N0cmF0ZWd5KCkgeyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaAppbmRl
eCA2MmNmMmFkZjVjNC4uZjE0ODljNmI0MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaApAQCAtNDEsMTIgKzQx
LDE4IEBACiB0eXBlZGVmIHN0cnVjdCBfU291cENvb2tpZUphciBTb3VwQ29va2llSmFyOwogI2Vu
ZGlmCiAKKyNpZmRlZiBfX09CSkNfXworI2luY2x1ZGUgPG9iamMvb2JqYy5oPgorI2VuZGlmCisK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTmV0d29ya2luZ0NvbnRleHQ7CiBjbGFzcyBS
ZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBTb3VwTmV0d29ya1Nlc3Npb247CiAKK3N0cnVjdCBDb29r
aWU7CisKIGNsYXNzIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiB7CiAgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoTmV0d29ya1N0b3JhZ2VTZXNzaW9uKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CkBAIC02MSw2ICs2NywxMCBAQCBwdWJsaWM6CiAgICAgU2Vzc2lvbklEIHNlc3Npb25J
RCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Vzc2lvbklEOyB9CiAgICAgQ3JlZGVudGlhbFN0b3JhZ2Um
IGNyZWRlbnRpYWxTdG9yYWdlKCkgeyByZXR1cm4gbV9jcmVkZW50aWFsU3RvcmFnZTsgfQogCisj
aWZkZWYgX19PQkpDX18KKyAgICBOU0hUVFBDb29raWVTdG9yYWdlICpuc0Nvb2tpZVN0b3JhZ2Uo
KSBjb25zdDsKKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRlVSTENPTk5F
Q1RJT04pCiAgICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uKFNlc3Npb25JRCwgUmV0YWluUHRyPENG
VVJMU3RvcmFnZVNlc3Npb25SZWY+KTsKIApAQCAtOTAsNiArMTAwLDggQEAgcHVibGljOgogICAg
IE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0KCkgY29uc3Q7CiAjZW5kaWYKIAorICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc2V0Q29va2llcyhjb25zdCBWZWN0b3I8Q29va2llPiYsIGNvbnN0IFVS
TCYsIGNvbnN0IFVSTCYgbWFpbkRvY3VtZW50VVJMKTsKKwogcHJpdmF0ZToKICAgICBzdGF0aWMg
SGFzaE1hcDxTZXNzaW9uSUQsIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+
PiYgZ2xvYmFsU2Vzc2lvbk1hcCgpOwogICAgIFNlc3Npb25JRCBtX3Nlc3Npb25JRDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUGxhdGZvcm1Db29raWVKYXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUGxhdGZvcm1Db29raWVKYXIuaApp
bmRleCBkNzI3MGM3Y2E2OS4uZDA4MmM4YjZjZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUGxhdGZvcm1Db29raWVKYXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1BsYXRmb3JtQ29va2llSmFyLmgKQEAgLTQ2LDcgKzQ2LDYgQEAg
V0VCQ09SRV9FWFBPUlQgYm9vbCBjb29raWVzRW5hYmxlZChjb25zdCBOZXR3b3JrU3RvcmFnZVNl
c3Npb24mLCBjb25zdCBVUkwmIGZpcnMKIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBjb29raWVSZXF1
ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBV
UkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYpOwogV0VCQ09SRV9FWFBPUlQgYm9vbCBnZXRSYXdD
b29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgVVJMJiwgVmVjdG9yPENvb2tpZT4mKTsKIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGVs
ZXRlQ29va2llKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFVSTCYsIGNvbnN0
IFN0cmluZyYpOwotV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRDb29raWUoY29uc3QgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiwgY29uc3QgQ29va2llJik7CiBXRUJDT1JFX0VYUE9S
VCB2b2lkIGdldEhvc3RuYW1lc1dpdGhDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lv
biYsIEhhc2hTZXQ8U3RyaW5nPiYgaG9zdG5hbWVzKTsKIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGVs
ZXRlQ29va2llc0Zvckhvc3RuYW1lcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYgY29va2llSG9zdE5hbWVzKTsKIFdFQkNPUkVfRVhQT1JUIHZvaWQg
ZGVsZXRlQWxsQ29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ29va2llSmFyQ0ZOZXQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Db29raWVKYXJDRk5ldC5jcHAK
aW5kZXggNTYzMDU1ZDY2NjYuLmNmOTJmZWFjMWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZUphckNGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZUphckNGTmV0LmNwcApAQCAtMjE4LDEyICsy
MTgsNiBAQCB2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNl
c3Npb24sIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdAogICAgIH0KIH0KIAotdm9pZCBhZGRDb29r
aWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiwgY29uc3QgQ29va2ll
JikKLXsKLSAgICAvLyBGSVhNRTogaW1wbGVtZW50IHRoaXMgY29tbWFuZC4gPGh0dHBzOi8vd2Vi
a2l0Lm9yZy9iLzE1NjI5OD4KLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCiB2b2lkIGdldEhv
c3RuYW1lc1dpdGhDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwg
SGFzaFNldDxTdHJpbmc+JiBob3N0bmFtZXMpCiB7CiAgICAgUmV0YWluUHRyPENGQXJyYXlSZWY+
IGNvb2tpZXNDRiA9IGFkb3B0Q0YoQ0ZIVFRQQ29va2llU3RvcmFnZUNvcHlDb29raWVzKHNlc3Np
b24uY29va2llU3RvcmFnZSgpLmdldCgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQu
Y3BwCmluZGV4IGJhMDZhNWI0MTRkLi4zNGVlZWExNmUwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNl
c3Npb25DRk5ldC5jcHAKQEAgLTE2Niw0ICsxNjYsMTEgQEAgdm9pZCBOZXR3b3JrU3RvcmFnZVNl
c3Npb246OnNldFNob3VsZFBhcnRpdGlvbkNvb2tpZXNGb3JIb3N0cyhjb25zdCBWZWN0b3I8U3Ry
aW4KIAogI2VuZGlmIC8vIEhBVkUoQ0ZORVRXT1JLX1NUT1JBR0VfUEFSVElUSU9OSU5HKQogCisj
aWYgIVBMQVRGT1JNKENPQ09BKQordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldENvb2tp
ZXMoY29uc3QgVmVjdG9yPENvb2tpZT4mLCBjb25zdCBVUkwmLCBjb25zdCBVUkwmKQoreworICAg
IC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcy4gPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE1NjI5OD4K
K30KKyNlbmRpZgorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NvY29hL0Nvb2tpZUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jb2NvYS9Db29raWVDb2NvYS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMC4uYzExMjJiMWIyODUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NvY29hL0Nvb2tpZUNvY29hLm1tCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZp
Zy5oIgorI2ltcG9ydCAiQ29va2llLmgiCisKKyNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRp
b25zLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworQ29va2llOjpvcGVyYXRvciBOU0hUVFBD
b29raWUgKigpIGNvbnN0Cit7CisgICAgLy8gRklYTUU6IGV4aXN0aW5nIEFQSXMgZG8gbm90IHBy
b3ZpZGUgYSB3YXkgdG8gc2V0IGh0dHBPbmx5IHdpdGhvdXQgcGFyc2luZyBoZWFkZXJzIGZyb20g
c2NyYXRjaC4KKworICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUworCisgICAgcmV0dXJu
IFtOU0hUVFBDb29raWUgY29va2llV2l0aFByb3BlcnRpZXM6QHsKKyAgICAgICAgTlNIVFRQQ29v
a2llTmFtZTogbmFtZSwKKyAgICAgICAgTlNIVFRQQ29va2llVmFsdWU6IHZhbHVlLAorICAgICAg
ICBOU0hUVFBDb29raWVEb21haW46IGRvbWFpbiwKKyAgICAgICAgTlNIVFRQQ29va2llUGF0aDog
cGF0aCwKKyAgICAgICAgTlNIVFRQQ29va2llRG9tYWluOiBkb21haW4sCisgICAgICAgIE5TSFRU
UENvb2tpZVNlY3VyZTogQChzZWN1cmUpLAorICAgICAgICBOU0hUVFBDb29raWVEaXNjYXJkOiBA
KHNlc3Npb24pLAorICAgICAgICBOU0hUVFBDb29raWVFeHBpcmVzOiBbTlNEYXRlIGRhdGVXaXRo
VGltZUludGVydmFsU2luY2UxOTcwOmV4cGlyZXMgLyAxMDAwLjBdLAorICAgICAgICB9XTsKKwor
ICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3
b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW0KbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAuLjQ0YWVhYjcwZTk5Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25D
b2NvYS5tbQpAQCAtMCwwICsxLDU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxl
LCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIk5ldHdvcmtTdG9y
YWdlU2Vzc2lvbi5oIgorCisjaW1wb3J0ICJDb29raWUuaCIKKyNpbXBvcnQgIlVSTC5oIgorI2lt
cG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
Cit2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q29va2llcyhjb25zdCBWZWN0b3I8Q29v
a2llPiYgY29va2llcywgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgbWFpbkRvY3VtZW50VVJM
KQoreworICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gbnNDb29raWVzID0gYWRvcHROUyhb
W05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5OmNvb2tpZXMuc2l6ZSgpXSk7
CisgICAgZm9yIChhdXRvIGNvb2tpZSA6IGNvb2tpZXMpCisgICAgICAgIFtuc0Nvb2tpZXMgYWRk
T2JqZWN0OihOU0hUVFBDb29raWUgKiljb29raWVdOworCisgICAgQkVHSU5fQkxPQ0tfT0JKQ19F
WENFUFRJT05TOworICAgIFtuc0Nvb2tpZVN0b3JhZ2UoKSBzZXRDb29raWVzOm5zQ29va2llcy5n
ZXQoKSBmb3JVUkw6KE5TVVJMICopdXJsIG1haW5Eb2N1bWVudFVSTDooTlNVUkwgKiltYWluRG9j
dW1lbnRVUkxdOworICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7Cit9CisKK05TSFRUUENv
b2tpZVN0b3JhZ2UgKk5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6bnNDb29raWVTdG9yYWdlKCkgY29u
c3QKK3sKKyAgICBhdXRvIGNmQ29va2llU3RvcmFnZSA9IGNvb2tpZVN0b3JhZ2UoKTsKKyAgICBp
ZiAoIWNmQ29va2llU3RvcmFnZSB8fCBbTlNIVFRQQ29va2llU3RvcmFnZSBzaGFyZWRIVFRQQ29v
a2llU3RvcmFnZV0uX2Nvb2tpZVN0b3JhZ2UgPT0gY2ZDb29raWVTdG9yYWdlKQorICAgICAgICBy
ZXR1cm4gW05TSFRUUENvb2tpZVN0b3JhZ2Ugc2hhcmVkSFRUUENvb2tpZVN0b3JhZ2VdOworCisg
ICAgcmV0dXJuIFtbW05TSFRUUENvb2tpZVN0b3JhZ2UgYWxsb2NdIF9pbml0V2l0aENGSFRUUENv
b2tpZVN0b3JhZ2U6Y2ZDb29raWVTdG9yYWdlLmdldCgpXSBhdXRvcmVsZWFzZV07Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9Db29raWVKYXJDdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9Db29raWVKYXJDdXJsLmNwcAppbmRleCAyNGEyYzc0ZWUwMC4uOWIxYmI0
NzcwMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
b29raWVKYXJDdXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ29va2llSmFyQ3VybC5jcHAKQEAgLTMzMiwxMiArMzMyLDYgQEAgdm9pZCBkZWxldGVDb29r
aWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5n
JikKICAgICAvLyBGSVhNRTogTm90IHlldCBpbXBsZW1lbnRlZAogfQogCi12b2lkIGFkZENvb2tp
ZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmLCBjb25zdCBDb29raWUm
KQotewotICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgdGhpcyBjb21tYW5kLiA8aHR0cHM6Ly93ZWJr
aXQub3JnL2IvMTU2Mjk2PgotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KIHZvaWQgZ2V0SG9z
dG5hbWVzV2l0aENvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgSGFzaFNldDxT
dHJpbmc+JiBob3N0bmFtZXMpCiB7CiAgICAgLy8gRklYTUU6IE5vdCB5ZXQgaW1wbGVtZW50ZWQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Nvb2tpZUph
ck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Nvb2tpZUphck1h
Yy5tbQppbmRleCBjN2NjMGYwOWJiMi4uMjNmNzAxNWU1YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Nvb2tpZUphck1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9Db29raWVKYXJNYWMubW0KQEAgLTMxLDEwICsz
MSw2IEBACiAjaW1wb3J0ICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCiAjaW1wb3J0IDx3dGYv
QmxvY2tPYmpDRXhjZXB0aW9ucy5oPgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1zdGF0aWMgTlNI
VFRQQ29va2llU3RvcmFnZSAqY29va2llU3RvcmFnZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Np
b24mKTsKLX0KLQogI2lmICFVU0UoQ0ZVUkxDT05ORUNUSU9OKQogCiAjaW1wb3J0ICJDb29raWUu
aCIKQEAgLTI2MCwzOCArMjU2LDYgQEAgdm9pZCBkZWxldGVDb29raWUoY29uc3QgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3QKICAgICBFTkRf
QkxPQ0tfT0JKQ19FWENFUFRJT05TOwogfQogCi12b2lkIGFkZENvb2tpZShjb25zdCBOZXR3b3Jr
U3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBDb29raWUmIGNv
b2tpZSkKLXsKLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7Ci0KLSAgICBSZXRhaW5Q
dHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFnZSA9IHNlc3Npb24uY29va2ll
U3RvcmFnZSgpOwotCi0gICAgLy8gRklYTUU6IGV4aXN0aW5nIEFQSXMgZG8gbm90IHByb3ZpZGUg
YSB3YXkgdG8gc2V0IGh0dHBPbmx5IHdpdGhvdXQgcGFyc2luZyBoZWFkZXJzIGZyb20gc2NyYXRj
aC4KLQotICAgIE5TVVJMICpvcmlnaW5VUkwgPSB1cmw7Ci0gICAgTlNIVFRQQ29va2llICpodHRw
Q29va2llID0gW05TSFRUUENvb2tpZSBjb29raWVXaXRoUHJvcGVydGllczpAewotICAgICAgICBO
U0hUVFBDb29raWVOYW1lOiBjb29raWUubmFtZSwKLSAgICAgICAgTlNIVFRQQ29va2llVmFsdWU6
IGNvb2tpZS52YWx1ZSwKLSAgICAgICAgTlNIVFRQQ29va2llRG9tYWluOiBjb29raWUuZG9tYWlu
LAotICAgICAgICBOU0hUVFBDb29raWVQYXRoOiBjb29raWUucGF0aCwKLSAgICAgICAgTlNIVFRQ
Q29va2llT3JpZ2luVVJMOiBvcmlnaW5VUkwsCi0gICAgICAgIE5TSFRUUENvb2tpZVNlY3VyZTog
QChjb29raWUuc2VjdXJlKSwKLSAgICAgICAgTlNIVFRQQ29va2llRGlzY2FyZDogQChjb29raWUu
c2Vzc2lvbiksCi0gICAgICAgIE5TSFRUUENvb2tpZUV4cGlyZXM6IFtOU0RhdGUgZGF0ZVdpdGhU
aW1lSW50ZXJ2YWxTaW5jZTE5NzA6Y29va2llLmV4cGlyZXMgLyAxMDAwLjBdLAotICAgIH1dOwot
Ci0jaWYgIVVTRShDRlVSTENPTk5FQ1RJT04pCi0gICAgaWYgKCFjb29raWVTdG9yYWdlKSB7Ci0g
ICAgICAgIFtXZWJDb3JlOjpjb29raWVTdG9yYWdlKHNlc3Npb24pIHNldENvb2tpZTpodHRwQ29v
a2llXTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSNlbmRpZiAvLyAhVVNFKENGVVJMQ09OTkVD
VElPTikKLQotICAgIENGSFRUUENvb2tpZVN0b3JhZ2VTZXRDb29raWUoY29va2llU3RvcmFnZS5n
ZXQoKSwgW2h0dHBDb29raWUgX0NGSFRUUENvb2tpZV0pOwotCi0gICAgRU5EX0JMT0NLX09CSkNf
RVhDRVBUSU9OUzsKLX0KLQogdm9pZCBnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhjb25zdCBOZXR3
b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIEhhc2hTZXQ8U3RyaW5nPiYgaG9zdG5hbWVzKQog
ewogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKQEAgLTMxNSwxNSArMjc5LDYgQEAg
dm9pZCBkZWxldGVBbGxDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lv
bikKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgTlNIVFRQQ29va2llU3RvcmFnZSAq
Y29va2llU3RvcmFnZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24pCi17Ci0g
ICAgYXV0byBjb29raWVTdG9yYWdlID0gc2Vzc2lvbi5jb29raWVTdG9yYWdlKCk7Ci0gICAgaWYg
KCFjb29raWVTdG9yYWdlIHx8IFtOU0hUVFBDb29raWVTdG9yYWdlIHNoYXJlZEhUVFBDb29raWVT
dG9yYWdlXS5fY29va2llU3RvcmFnZSA9PSBjb29raWVTdG9yYWdlKQotICAgICAgICByZXR1cm4g
W05TSFRUUENvb2tpZVN0b3JhZ2Ugc2hhcmVkSFRUUENvb2tpZVN0b3JhZ2VdOwotCi0gICAgcmV0
dXJuIFtbW05TSFRUUENvb2tpZVN0b3JhZ2UgYWxsb2NdIF9pbml0V2l0aENGSFRUUENvb2tpZVN0
b3JhZ2U6Y29va2llU3RvcmFnZS5nZXQoKV0gYXV0b3JlbGVhc2VdOwotfQotCiB2b2lkIGRlbGV0
ZUNvb2tpZXNGb3JIb3N0bmFtZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9u
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgaG9zdG5hbWVzKQogewogICAgIEJFR0lOX0JMT0NLX09C
SkNfRVhDRVBUSU9OUzsKQEAgLTM0OCw3ICszMDMsNyBAQCB2b2lkIGRlbGV0ZUNvb2tpZXNGb3JI
b3N0bmFtZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBWZWN0
bwogICAgICAgICAgICAgd2tEZWxldGVIVFRQQ29va2llKGNvb2tpZVN0b3JhZ2UuZ2V0KCksIGNv
b2tpZS5nZXQoKSk7CiAgICAgfQogCi0gICAgW1dlYkNvcmU6OmNvb2tpZVN0b3JhZ2Uoc2Vzc2lv
bikgX3NhdmVDb29raWVzXTsKKyAgICBbc2Vzc2lvbi5uc0Nvb2tpZVN0b3JhZ2UoKSBfc2F2ZUNv
b2tpZXNdOwogCiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIH0KQEAgLTM2MSw3ICsz
MTYsNyBAQCB2b2lkIGRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKGNvbnN0IE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgc3RkOjpjaAogICAgIE5TVGltZUludGVydmFsIHRpbWVJ
bnRlcnZhbCA9IHN0ZDo6Y2hyb25vOjpkdXJhdGlvbl9jYXN0PHN0ZDo6Y2hyb25vOjpkdXJhdGlv
bjxkb3VibGU+Pih0aW1lUG9pbnQudGltZV9zaW5jZV9lcG9jaCgpKS5jb3VudCgpOwogICAgIE5T
RGF0ZSAqZGF0ZSA9IFtOU0RhdGUgZGF0ZVdpdGhUaW1lSW50ZXJ2YWxTaW5jZTE5NzA6dGltZUlu
dGVydmFsXTsKIAotICAgIE5TSFRUUENvb2tpZVN0b3JhZ2UgKnN0b3JhZ2UgPSBjb29raWVTdG9y
YWdlKHNlc3Npb24pOworICAgIGF1dG8gKnN0b3JhZ2UgPSBzZXNzaW9uLm5zQ29va2llU3RvcmFn
ZSgpOwogCiAgICAgW3N0b3JhZ2UgcmVtb3ZlQ29va2llc1NpbmNlRGF0ZTpkYXRlXTsKICAgICBb
c3RvcmFnZSBfc2F2ZUNvb2tpZXNdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9zb3VwL0Nvb2tpZUphclNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9zb3VwL0Nvb2tpZUphclNvdXAuY3BwCmluZGV4IDMxZjAwOWQxN2M0Li44ZTA1
MzY0OGQ1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3Vw
L0Nvb2tpZUphclNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
c291cC9Db29raWVKYXJTb3VwLmNwcApAQCAtMTQ0LDMzICsxNDQsNiBAQCB2b2lkIGRlbGV0ZUNv
b2tpZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgdXJs
LCBjb25zdCBTdAogICAgIH0KIH0KIAotc3RhdGljIFNvdXBEYXRlKiBtc1RvU291cERhdGUoZG91
YmxlIG1zKQotewotICAgIGludCB5ZWFyID0gbXNUb1llYXIobXMpOwotICAgIGludCBkYXlPZlll
YXIgPSBkYXlJblllYXIobXMsIHllYXIpOwotICAgIGJvb2wgbGVhcFllYXIgPSBpc0xlYXBZZWFy
KHllYXIpOwotICAgIHJldHVybiBzb3VwX2RhdGVfbmV3KHllYXIsIG1vbnRoRnJvbURheUluWWVh
cihkYXlPZlllYXIsIGxlYXBZZWFyKSwgZGF5SW5Nb250aEZyb21EYXlJblllYXIoZGF5T2ZZZWFy
LCBsZWFwWWVhciksIG1zVG9Ib3VycyhtcyksIG1zVG9NaW51dGVzKG1zKSwgc3RhdGljX2Nhc3Q8
aW50PihtcyAvIDEwMDApICUgNjApOwotfQotCi1zdGF0aWMgU291cENvb2tpZSogdG9Tb3VwQ29v
a2llKGNvbnN0IENvb2tpZSYgY29va2llKQotewotICAgIFNvdXBDb29raWUqIHNvdXBDb29raWUg
PSBzb3VwX2Nvb2tpZV9uZXcoY29va2llLm5hbWUudXRmOCgpLmRhdGEoKSwgY29va2llLnZhbHVl
LnV0ZjgoKS5kYXRhKCksCi0gICAgICAgIGNvb2tpZS5kb21haW4udXRmOCgpLmRhdGEoKSwgY29v
a2llLnBhdGgudXRmOCgpLmRhdGEoKSwgLTEpOwotICAgIHNvdXBfY29va2llX3NldF9odHRwX29u
bHkoc291cENvb2tpZSwgY29va2llLmh0dHBPbmx5KTsKLSAgICBzb3VwX2Nvb2tpZV9zZXRfc2Vj
dXJlKHNvdXBDb29raWUsIGNvb2tpZS5zZWN1cmUpOwotICAgIGlmICghY29va2llLnNlc3Npb24p
IHsKLSAgICAgICAgU291cERhdGUqIGRhdGUgPSBtc1RvU291cERhdGUoY29va2llLmV4cGlyZXMp
OwotICAgICAgICBzb3VwX2Nvb2tpZV9zZXRfZXhwaXJlcyhzb3VwQ29va2llLCBkYXRlKTsKLSAg
ICAgICAgc291cF9kYXRlX2ZyZWUoZGF0ZSk7Ci0gICAgfQotICAgIHJldHVybiBzb3VwQ29va2ll
OwotfQotCi12b2lkIGFkZENvb2tpZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Np
b24sIGNvbnN0IFVSTCYsIGNvbnN0IENvb2tpZSYgY29va2llKQotewotICAgIHNvdXBfY29va2ll
X2phcl9hZGRfY29va2llKHNlc3Npb24uY29va2llU3RvcmFnZSgpLCB0b1NvdXBDb29raWUoY29v
a2llKSk7Ci19Ci0KIHZvaWQgZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoY29uc3QgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBIYXNoU2V0PFN0cmluZz4mIGhvc3RuYW1lcykKIHsKICAg
ICBHVW5pcXVlUHRyPEdTTGlzdD4gY29va2llcyhzb3VwX2Nvb2tpZV9qYXJfYWxsX2Nvb2tpZXMo
c2Vzc2lvbi5jb29raWVTdG9yYWdlKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3Vw
LmNwcAppbmRleCA4NDE3NjkxZTg1ZS4uMjQ5YmQ4MmJkNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uU291cC5jcHAKQEAgLTMwLDkgKzMwLDExIEBACiAKICNpZiBVU0UoU09VUCkKIAor
I2luY2x1ZGUgIkNvb2tpZS5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVk
ZSAiU291cE5ldHdvcmtTZXNzaW9uLmgiCiAjaW5jbHVkZSA8bGlic291cC9zb3VwLmg+CisjaW5j
bHVkZSA8d3RmL0RhdGVNYXRoLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNs
dWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRy
Lmg+CkBAIC0yNzQsNiArMjc2LDM1IEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzYXZl
Q3JlZGVudGlhbFRvUGVyc2lzdGVudFN0b3JhZ2UoY29uc3QgUHJvdGVjdGlvblNwCiAjZW5kaWYK
IH0KIAorc3RhdGljIFNvdXBEYXRlKiBtc1RvU291cERhdGUoZG91YmxlIG1zKQoreworICAgIGlu
dCB5ZWFyID0gbXNUb1llYXIobXMpOworICAgIGludCBkYXlPZlllYXIgPSBkYXlJblllYXIobXMs
IHllYXIpOworICAgIGJvb2wgbGVhcFllYXIgPSBpc0xlYXBZZWFyKHllYXIpOworICAgIHJldHVy
biBzb3VwX2RhdGVfbmV3KHllYXIsIG1vbnRoRnJvbURheUluWWVhcihkYXlPZlllYXIsIGxlYXBZ
ZWFyKSwgZGF5SW5Nb250aEZyb21EYXlJblllYXIoZGF5T2ZZZWFyLCBsZWFwWWVhciksIG1zVG9I
b3VycyhtcyksIG1zVG9NaW51dGVzKG1zKSwgc3RhdGljX2Nhc3Q8aW50PihtcyAvIDEwMDApICUg
NjApOworfQorCitzdGF0aWMgU291cENvb2tpZSogdG9Tb3VwQ29va2llKGNvbnN0IENvb2tpZSYg
Y29va2llKQoreworICAgIFNvdXBDb29raWUqIHNvdXBDb29raWUgPSBzb3VwX2Nvb2tpZV9uZXco
Y29va2llLm5hbWUudXRmOCgpLmRhdGEoKSwgY29va2llLnZhbHVlLnV0ZjgoKS5kYXRhKCksCisg
ICAgICAgIGNvb2tpZS5kb21haW4udXRmOCgpLmRhdGEoKSwgY29va2llLnBhdGgudXRmOCgpLmRh
dGEoKSwgLTEpOworICAgIHNvdXBfY29va2llX3NldF9odHRwX29ubHkoc291cENvb2tpZSwgY29v
a2llLmh0dHBPbmx5KTsKKyAgICBzb3VwX2Nvb2tpZV9zZXRfc2VjdXJlKHNvdXBDb29raWUsIGNv
b2tpZS5zZWN1cmUpOworICAgIGlmICghY29va2llLnNlc3Npb24pIHsKKyAgICAgICAgU291cERh
dGUqIGRhdGUgPSBtc1RvU291cERhdGUoY29va2llLmV4cGlyZXMpOworICAgICAgICBzb3VwX2Nv
b2tpZV9zZXRfZXhwaXJlcyhzb3VwQ29va2llLCBkYXRlKTsKKyAgICAgICAgc291cF9kYXRlX2Zy
ZWUoZGF0ZSk7CisgICAgfQorICAgIHJldHVybiBzb3VwQ29va2llOworfQorCit2b2lkIE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q29va2llcyhjb25zdCBWZWN0b3I8Q29va2llPiYgY29va2ll
cywgY29uc3QgVVJMJiwgY29uc3QgVVJMJikKK3sKKyAgICBmb3IgKGF1dG8gY29va2llIDogY29v
a2llcykKKyAgICAgICAgc291cF9jb29raWVfamFyX2FkZF9jb29raWUoY29va2llU3RvcmFnZSgp
LCB0b1NvdXBDb29raWUoY29va2llKSk7Cit9CisKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CiAjZW5kaWYgLy8gVVNFKFNPVVApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggOWUyMmY3NjZmZDguLjdk
NGFiYWZhMzVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTctMDMtMTEg
IEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIENsZWFudXAgImFk
ZENvb2tpZSIgYW5kIGl0cyBzb2xlIHVzZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk0ODYKKworICAgICAgICBSZXZpZXdlZCBieSBCcmlhbiBC
dXJnLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmg6
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tOgorICAg
ICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjphZGRDb29raWUpOiBEZWxldGVkLgorCiAyMDE3
LTAzLTEwICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgRml4IHdhdGNoIGFuZCB0diBidWlsZHMgYWZ0ZXIgcjIxMzI5NApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgg
Yi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMu
aAppbmRleCBhNjAyNzFiMjY1MS4uY2E5MzhiZWQ3OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCkBAIC01
NSw3ICs1NSw2IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVs
ZFZhbHVlKFdlYkNvcmU6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBXZWJDb3JlOjpVUkwmKSBvdmVycmlkZTsKICAgICBib29sIGdldFJhd0Nvb2tpZXMo
Y29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpVUkwmLCBWZWN0b3I8V2ViQ29yZTo6Q29va2ll
PiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGVsZXRlQ29va2llKGNvbnN0IFdlYkNvcmU6Ok5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFN0cmluZyYpIG92
ZXJyaWRlOwotICAgIHZvaWQgYWRkQ29va2llKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFdlYkNvcmU6OkNvb2tpZSYpIG92
ZXJyaWRlOwogCiAgICAgLy8gV2ViQ29yZTo6UGFzdGVib2FyZFN0cmF0ZWd5CiAjaWYgUExBVEZP
Uk0oSU9TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzLm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCmluZGV4IDE5ZmY1ZTBiZWQwLi5hYzJmYjQ0M2RhYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1T
dHJhdGVnaWVzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5tbQpAQCAtMTEwLDExICsxMTAsNiBAQCB2b2lkIFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6ZGVsZXRlQ29va2llKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vz
c2lvbiwgYwogICAgIFdlYkNvcmU6OmRlbGV0ZUNvb2tpZShzZXNzaW9uLCB1cmwsIGNvb2tpZU5h
bWUpOwogfQogCi12b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YWRkQ29va2llKGNvbnN0IE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IENvb2tp
ZSYgY29va2llKQotewotICAgIFdlYkNvcmU6OmFkZENvb2tpZShzZXNzaW9uLCB1cmwsIGNvb2tp
ZSk7Ci19Ci0KIHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRUeXBlcyhWZWN0b3I8U3Ry
aW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCiB7CiAgICAgUGxhdGZv
cm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5nZXRUeXBlcyh0eXBlcyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5k
ZXggNGY4NDUwNzU4MWUuLjU2MGFkNWJlY2M2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzggQEAK
KzIwMTctMDMtMTEgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAg
IENsZWFudXAgImFkZENvb2tpZSIgYW5kIGl0cyBzb2xlIHVzZXIuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk0ODYKKworICAgICAgICBSZXZpZXdl
ZCBieSBCcmlhbiBCdXJnLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6YWRkQ29va2llKTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorCisgICAg
ICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6OkFy
Z3VtZW50Q29kZXI8Q29va2llPjo6ZW5jb2RlKTogRGVsZXRlZC4KKyAgICAgICAgKElQQzo6QXJn
dW1lbnRDb2RlcjxDb29raWU+OjpkZWNvZGUpOiBEZWxldGVkLgorICAgICAgICAqIFNoYXJlZC9X
ZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoKKworICAgICAgICAqIFVJUHJvY2Vzcy9BdXRvbWF0aW9u
L1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlv
blNlc3Npb246OmFkZFNpbmdsZUNvb2tpZSk6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29v
a2llTWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlclBy
b3h5OjpzZXRDb29raWVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5
OjphZGRDb29raWUpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb29raWVNYW5h
Z2VyUHJveHkuaDoKKworICAgICAgICAqIFdlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5h
Z2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlcjo6c2V0Q29va2llcyk6
CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXI6OmFkZENvb2tpZSk6IERlbGV0ZWQu
CisgICAgICAgICogV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5tZXNzYWdlcy5pbjoKKwor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVz
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjphZGRDb29raWUp
OiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZv
cm1TdHJhdGVnaWVzLmg6CisKIDIwMTctMDMtMTAgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0
ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBGaXggd2F0Y2ggYW5kIHR2IGJ1aWxkcyBhZnRl
ciByMjEzMjk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggMTQxNjI0MmYxMmUu
LjFmOTJjZThmODk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC0yNzksMTEg
KzI3OSw2IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRlbGV0ZUNvb2tp
ZShTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmCiAgICAgV2ViQ29yZTo6ZGVsZXRlQ29v
a2llKHN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCksIHVybCwgY29va2llTmFtZSk7CiB9CiAKLXZv
aWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmFkZENvb2tpZShTZXNzaW9uSUQgc2Vz
c2lvbklELCBjb25zdCBVUkwmIHVybCwgY29uc3QgQ29va2llJiBjb29raWUpCi17Ci0gICAgV2Vi
Q29yZTo6YWRkQ29va2llKHN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCksIHVybCwgY29va2llKTsK
LX0KLQogdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVnaXN0ZXJGaWxlQmxv
YlVSTChjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTYW5kYm94RXh0
ZW5zaW9uOjpIYW5kbGUmIGV4dGVuc2lvbkhhbmRsZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlw
ZSkKIHsKICAgICBSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4gZXh0ZW5zaW9uID0gU2FuZGJveEV4
dGVuc2lvbjo6Y3JlYXRlKGV4dGVuc2lvbkhhbmRsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
aAppbmRleCA5NzI5MzE0ZDY3Ny4uMjRjZjBiMGY2NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIv
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuaApAQCAtOTEsNyArOTEsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgY29va2llUmVxdWVzdEhl
YWRlckZpZWxkVmFsdWUoV2ViQ29yZTo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlVSTCYsIFN0cmluZyYgcmVzdWx0KTsKICAgICB2b2lk
IGdldFJhd0Nvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlVSTCYsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jik7
CiAgICAgdm9pZCBkZWxldGVDb29raWUoV2ViQ29yZTo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3Jl
OjpVUkwmLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpOwotICAgIHZvaWQgYWRkQ29va2llKFdl
YkNvcmU6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgV2ViQ29yZTo6Q29v
a2llJik7CiAKICAgICB2b2lkIHJlZ2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgV2ViQ29yZTo6VVJM
JiwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmLCBj
b25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKICAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTChjb25z
dCBXZWJDb3JlOjpVUkwmLCBWZWN0b3I8V2ViQ29yZTo6QmxvYlBhcnQ+JiYsIGNvbnN0IFN0cmlu
ZyYgY29udGVudFR5cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdl
cy5pbgppbmRleCBhMjYzYTRlZGUzOC4uMGIzOWQ3ZWQwMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0zOCw3ICszOCw2IEBAIG1lc3NhZ2VzIC0+
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBDb29r
aWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBX
ZWJDb3JlOjpVUkwgZmlyc3RQYXJ0eSwgV2ViQ29yZTo6VVJMIHVybCkgLT4gKFN0cmluZyByZXN1
bHQpCiAgICAgR2V0UmF3Q29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJD
b3JlOjpVUkwgZmlyc3RQYXJ0eSwgV2ViQ29yZTo6VVJMIHVybCkgLT4gKFZlY3RvcjxXZWJDb3Jl
OjpDb29raWU+IGNvb2tpZXMpCiAgICAgRGVsZXRlQ29va2llKFdlYkNvcmU6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIFdlYkNvcmU6OlVSTCB1cmwsIFN0cmluZyBjb29raWVOYW1lKQotICAgIEFkZENv
b2tpZShXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpVUkwgdXJsLCBzdHJ1
Y3QgV2ViQ29yZTo6Q29va2llIGNvb2tpZSkKIAogICAgIFJlZ2lzdGVyRmlsZUJsb2JVUkwoV2Vi
Q29yZTo6VVJMIHVybCwgU3RyaW5nIHBhdGgsIFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlIGV4dGVuc2lvbkhhbmRsZSwgU3RyaW5nIGNvbnRlbnRUeXBlKQogICAgIFJlZ2lzdGVyQmxv
YlVSTChXZWJDb3JlOjpVUkwgdXJsLCBWZWN0b3I8V2ViQ29yZTo6QmxvYlBhcnQ+IGJsb2JQYXJ0
cywgU3RyaW5nIGNvbnRlbnRUeXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCA4NGNjZjhmNDliNC4uOTBmNmViYjQ4N2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC0z
MSw3ICszMSw2IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvQmxvYlBhcnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NlcnRp
ZmljYXRlSW5mby5oPgotI2luY2x1ZGUgPFdlYkNvcmUvQ29va2llLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9DcmVkZW50aWFsLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9DdXJzb3IuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0RhdGFiYXNlRGV0YWlscy5oPgpAQCAtMTI4NCw0MSArMTI4Myw2IEBAIGJvb2wg
QXJndW1lbnRDb2RlcjxDb21wb3NpdGlvblVuZGVybGluZT46OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyLCBDb21wb3NpdGlvblVuCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLQotdm9pZCBBcmd1bWVu
dENvZGVyPENvb2tpZT46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBDb29raWUmIGNv
b2tpZSkKLXsKLSAgICBlbmNvZGVyIDw8IGNvb2tpZS5uYW1lOwotICAgIGVuY29kZXIgPDwgY29v
a2llLnZhbHVlOwotICAgIGVuY29kZXIgPDwgY29va2llLmRvbWFpbjsKLSAgICBlbmNvZGVyIDw8
IGNvb2tpZS5wYXRoOwotICAgIGVuY29kZXIgPDwgY29va2llLmV4cGlyZXM7Ci0gICAgZW5jb2Rl
ciA8PCBjb29raWUuaHR0cE9ubHk7Ci0gICAgZW5jb2RlciA8PCBjb29raWUuc2VjdXJlOwotICAg
IGVuY29kZXIgPDwgY29va2llLnNlc3Npb247Ci19Ci0KLWJvb2wgQXJndW1lbnRDb2RlcjxDb29r
aWU+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgQ29va2llJiBjb29raWUpCi17Ci0gICAgaWYg
KCFkZWNvZGVyLmRlY29kZShjb29raWUubmFtZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKGNvb2tpZS52YWx1ZSkpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNvb2tpZS5kb21haW4pKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShjb29raWUucGF0aCkpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNvb2tpZS5leHBpcmVzKSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoY29va2llLmh0
dHBPbmx5KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
Y29va2llLnNlY3VyZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKGNvb2tpZS5zZXNzaW9uKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0
dXJuIHRydWU7Ci19Ci0KIHZvaWQgQXJndW1lbnRDb2RlcjxEYXRhYmFzZURldGFpbHM+OjplbmNv
ZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgRGF0YWJhc2VEZXRhaWxzJiBkZXRhaWxzKQogewog
ICAgIGVuY29kZXIgPDwgZGV0YWlscy5uYW1lKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKaW5kZXggNzQyMjc3ZWI4NGMuLmVmYjdiMTczODk1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgK
KysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCkBAIC04
Myw3ICs4Myw2IEBAIGNsYXNzIFVzZXJTdHlsZVNoZWV0OwogY2xhc3MgVXNlclNjcmlwdDsKIGNs
YXNzIFVSTDsKIHN0cnVjdCBDb21wb3NpdGlvblVuZGVybGluZTsKLXN0cnVjdCBDb29raWU7CiBz
dHJ1Y3QgRGljdGF0aW9uQWx0ZXJuYXRpdmU7CiBzdHJ1Y3QgRGljdGlvbmFyeVBvcHVwSW5mbzsK
IHN0cnVjdCBFdmVudFRyYWNraW5nUmVnaW9uczsKQEAgLTQwNSwxMSArNDA0LDYgQEAgdGVtcGxh
dGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDb21wb3NpdGlvblVuZGVybGluZT4g
ewogICAgIHN0YXRpYyBib29sIGRlY29kZShEZWNvZGVyJiwgV2ViQ29yZTo6Q29tcG9zaXRpb25V
bmRlcmxpbmUmKTsKIH07CiAKLXRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29y
ZTo6Q29va2llPiB7Ci0gICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJD
b3JlOjpDb29raWUmKTsKLSAgICBzdGF0aWMgYm9vbCBkZWNvZGUoRGVjb2RlciYsIFdlYkNvcmU6
OkNvb2tpZSYpOwotfTsKLQogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3Jl
OjpEYXRhYmFzZURldGFpbHM+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNv
bnN0IFdlYkNvcmU6OkRhdGFiYXNlRGV0YWlscyYpOwogICAgIHN0YXRpYyBib29sIGRlY29kZShE
ZWNvZGVyJiwgV2ViQ29yZTo6RGF0YWJhc2VEZXRhaWxzJik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5j
cHAKaW5kZXggZGU1YmU5ZTJkOTAuLjQ4Y2FkYzcxMjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24u
Y3BwCkBAIC03MjcsNyArNzI3LDEwIEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OmFkZFNp
bmdsZUNvb2tpZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluCiAgICAgICAg
IEZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SX0FORF9ERVRBSUxTKE1pc3NpbmdQYXJhbWV0ZXIs
ICJUaGUgcGFyYW1ldGVyICdodHRwT25seScgd2FzIG5vdCBmb3VuZC4iKTsKIAogICAgIFdlYkNv
b2tpZU1hbmFnZXJQcm94eSogY29va2llTWFuYWdlciA9IG1fcHJvY2Vzc1Bvb2wtPnN1cHBsZW1l
bnQ8V2ViQ29va2llTWFuYWdlclByb3h5PigpOwotICAgIGNvb2tpZU1hbmFnZXItPmFkZENvb2tp
ZShXZWJDb3JlOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSwgY29va2llLCBhY3RpdmVV
UkwuaG9zdCgpKTsKKworICAgIC8vIEZJWE1FOiBVc2luZyBhY3RpdmVVUkwgaGVyZSB0d2ljZSBp
cyBiYXNpY2FsbHkgc2F5aW5nICJ0aGlzIGlzIGFsd2F5cyBpbiB0aGUgY29udGV4dCBvZiB0aGUg
bWFpbiBkb2N1bWVudCIKKyAgICAvLyB3aGljaCBwcm9iYWJseSBpc24ndCBhY2N1cmF0ZS4KKyAg
ICBjb29raWVNYW5hZ2VyLT5zZXRDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRDo6ZGVmYXVsdFNl
c3Npb25JRCgpLCB7IGNvb2tpZSB9LCBhY3RpdmVVUkwsIGFjdGl2ZVVSTCk7CiAKICAgICBjYWxs
YmFjay0+c2VuZFN1Y2Nlc3MoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYkNvb2tpZU1hbmFnZXJQcm94eS5jcHAKaW5kZXggMDhhNzk3OTJlYTAuLjVkODFmYWQwMDE1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclBy
b3h5LmNwcApAQCAtMTI5LDkgKzEyOSw5IEBAIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5Ojpk
ZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZShXZWJDb3JlOjpTZXNzaW9uSUQgc2VzCiAgICAg
cHJvY2Vzc1Bvb2woKS0+c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3NSZWxhdW5jaGluZ0lmTmVjZXNz
YXJ5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpEZWxldGVBbGxDb29raWVzTW9kaWZpZWRT
aW5jZShzZXNzaW9uSUQsIHRpbWUpKTsKIH0KIAotdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6
OmFkZENvb2tpZShXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpD
b29raWUmIGNvb2tpZSwgY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKK3ZvaWQgV2ViQ29va2llTWFu
YWdlclByb3h5OjpzZXRDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0
IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiBjb29raWVzLCBjb25zdCBXZWJDb3JlOjpVUkwmIHVy
bCwgY29uc3QgV2ViQ29yZTo6VVJMJiBtYWluRG9jdW1lbnRVUkwpCiB7Ci0gICAgcHJvY2Vzc1Bv
b2woKS0+c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3NSZWxhdW5jaGluZ0lmTmVjZXNzYXJ5KE1lc3Nh
Z2VzOjpXZWJDb29raWVNYW5hZ2VyOjpBZGRDb29raWUoc2Vzc2lvbklELCBjb29raWUsIGhvc3Ru
YW1lKSk7CisgICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3NSZWxhdW5j
aGluZ0lmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpTZXRDb29raWVzKHNl
c3Npb25JRCwgY29va2llcywgdXJsLCBtYWluRG9jdW1lbnRVUkwpKTsKIH0KIAogdm9pZCBXZWJD
b29raWVNYW5hZ2VyUHJveHk6OnN0YXJ0T2JzZXJ2aW5nQ29va2llQ2hhbmdlcyhXZWJDb3JlOjpT
ZXNzaW9uSUQgc2Vzc2lvbklEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYkNvb2tpZU1hbmFnZXJQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNv
b2tpZU1hbmFnZXJQcm94eS5oCmluZGV4IDY1ZDA0N2MxZTM4Li40YWQ2NzZjNGJkZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkuaApAQCAt
NjksNyArNjksOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWUo
V2ViQ29yZTo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGhvc3RuYW1lKTsKICAgICB2b2lkIGRl
bGV0ZUFsbENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklEKTsKICAgICB2b2lkIGRlbGV0ZUFsbENv
b2tpZXNNb2RpZmllZFNpbmNlKFdlYkNvcmU6OlNlc3Npb25JRCwgc3RkOjpjaHJvbm86OnN5c3Rl
bV9jbG9jazo6dGltZV9wb2ludCk7Ci0gICAgdm9pZCBhZGRDb29raWUoV2ViQ29yZTo6U2Vzc2lv
bklELCBjb25zdCBXZWJDb3JlOjpDb29raWUmLCBjb25zdCBTdHJpbmcmIGhvc3RuYW1lKTsKKwor
ICAgIHZvaWQgc2V0Q29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxXZWJD
b3JlOjpDb29raWU+JiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBt
YWluRG9jdW1lbnRVUkwpOwogCiAgICAgdm9pZCBzZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KEhU
VFBDb29raWVBY2NlcHRQb2xpY3kpOwogICAgIHZvaWQgZ2V0SFRUUENvb2tpZUFjY2VwdFBvbGlj
eShzdGQ6OmZ1bmN0aW9uPHZvaWQgKEhUVFBDb29raWVBY2NlcHRQb2xpY3ksIENhbGxiYWNrQmFz
ZTo6RXJyb3IpPik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tp
ZXMvV2ViQ29va2llTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tp
ZXMvV2ViQ29va2llTWFuYWdlci5jcHAKaW5kZXggNGJmNjc3M2RjMDAuLjllMjFmNzhjY2RiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFu
YWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tp
ZU1hbmFnZXIuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiV2ViQ29va2llTWFuYWdl
ck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViQ29va2llTWFuYWdlclByb3h5TWVzc2FnZXMuaCIK
ICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0Nv
b2tpZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ29va2llU3RvcmFnZS5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9y
bUNvb2tpZUphci5oPgpAQCAtODMsMTAgKzg0LDEwIEBAIHZvaWQgV2ViQ29va2llTWFuYWdlcjo6
ZGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UoU2Vzc2lvbklEIHNlc3Npb25JRCwgc3RkOjpj
CiAgICAgICAgIFdlYkNvcmU6OmRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKCpzdG9yYWdl
U2Vzc2lvbiwgdGltZSk7CiB9CiAKLXZvaWQgV2ViQ29va2llTWFuYWdlcjo6YWRkQ29va2llKFNl
c3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IENvb2tpZSYgY29va2llLCBjb25zdCBTdHJpbmcmIGhv
c3RuYW1lKQordm9pZCBXZWJDb29raWVNYW5hZ2VyOjpzZXRDb29raWVzKFdlYkNvcmU6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxDb29raWU+JiBjb29raWVzLCBjb25zdCBVUkwm
IHVybCwgY29uc3QgVVJMJiBtYWluRG9jdW1lbnRVUkwpCiB7CiAgICAgaWYgKGF1dG8qIHN0b3Jh
Z2VTZXNzaW9uID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9u
SUQpKQotICAgICAgICBXZWJDb3JlOjphZGRDb29raWUoKnN0b3JhZ2VTZXNzaW9uLCBVUkwoVVJM
KCksIGhvc3RuYW1lKSwgY29va2llKTsKKyAgICAgICAgc3RvcmFnZVNlc3Npb24tPnNldENvb2tp
ZXMoY29va2llcywgdXJsLCBtYWluRG9jdW1lbnRVUkwpOwogfQogCiB2b2lkIFdlYkNvb2tpZU1h
bmFnZXI6Om5vdGlmeUNvb2tpZXNEaWRDaGFuZ2UoU2Vzc2lvbklEIHNlc3Npb25JRCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2Vy
LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5o
CmluZGV4IDdlZDY1OGY0ZmE2Li5kYjI3ZDIwYWFkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5oCkBAIC0zNCwxMiArMzQs
MTQgQEAKICNpbmNsdWRlIDxzdGRpbnQuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2lu
Y2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogI2lm
IFVTRShTT1VQKQogI2luY2x1ZGUgIlNvdXBDb29raWVQZXJzaXN0ZW50U3RvcmFnZVR5cGUuaCIK
ICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBVUkw7CiBzdHJ1Y3QgQ29va2ll
OwogfQogCkBAIC02OSw3ICs3MSw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkZWxldGVDb29raWVz
Rm9ySG9zdG5hbWUoV2ViQ29yZTo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmKTsKICAgICB2b2lk
IGRlbGV0ZUFsbENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklEKTsKICAgICB2b2lkIGRlbGV0ZUFs
bENvb2tpZXNNb2RpZmllZFNpbmNlKFdlYkNvcmU6OlNlc3Npb25JRCwgc3RkOjpjaHJvbm86OnN5
c3RlbV9jbG9jazo6dGltZV9wb2ludCk7Ci0gICAgdm9pZCBhZGRDb29raWUoV2ViQ29yZTo6U2Vz
c2lvbklELCBjb25zdCBXZWJDb3JlOjpDb29raWUmLCBjb25zdCBTdHJpbmcmIGhvc3RuYW1lKTsK
KworICAgIHZvaWQgc2V0Q29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxX
ZWJDb3JlOjpDb29raWU+JiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgV2ViQ29yZTo6VVJM
JiBtYWluRG9jdW1lbnRVUkwpOwogCiAgICAgdm9pZCBwbGF0Zm9ybVNldEhUVFBDb29raWVBY2Nl
cHRQb2xpY3koSFRUUENvb2tpZUFjY2VwdFBvbGljeSk7CiAgICAgdm9pZCBnZXRIVFRQQ29va2ll
QWNjZXB0UG9saWN5KHVpbnQ2NF90IGNhbGxiYWNrSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIubWVzc2FnZXMuaW4gYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5tZXNzYWdl
cy5pbgppbmRleCA1ZDUxNTM2NjQ1Mi4uMDBlN2I2NWI3NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLm1lc3NhZ2VzLmluCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLm1l
c3NhZ2VzLmluCkBAIC0yOCw3ICsyOCw4IEBACiAgICAgdm9pZCBEZWxldGVDb29raWVzRm9ySG9z
dG5hbWUoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU3RyaW5nIGhvc3RuYW1lKQogICAg
IHZvaWQgRGVsZXRlQWxsQ29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogICAg
IHZvaWQgRGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UoV2ViQ29yZTo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCB0aW1lKQotICAg
IHZvaWQgQWRkQ29va2llKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHN0cnVjdCBXZWJD
b3JlOjpDb29raWUgY29va2llLCBTdHJpbmcgaG9zdG5hbWUpCisKKyAgICB2b2lkIFNldENvb2tp
ZXMoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4g
Y29va2llcywgV2ViQ29yZTo6VVJMIHVybCwgV2ViQ29yZTo6VVJMIG1haW5Eb2N1bWVudFVSTCk7
CiAKICAgICB2b2lkIFNldEhUVFBDb29raWVBY2NlcHRQb2xpY3kodWludDMyX3QgcG9saWN5KQog
ICAgIHZvaWQgR2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSh1aW50NjRfdCBjYWxsYmFja0lEKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXMuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCmluZGV4IGMwMzk3MGFkNTViLi5iZjRi
ZGFlMDE1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcApAQCAtMTU1LDEx
ICsxNTUsNiBAQCB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6ZGVsZXRlQ29va2llKGNvbnN0
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgYwogICAgIFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLm5ldHdvcmtDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpEZWxldGVDb29raWUoc2Vzc2lvbi5zZXNzaW9u
SUQoKSwgdXJsLCBjb29raWVOYW1lKSwgMCk7CiB9CiAKLXZvaWQgV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjphZGRDb29raWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25z
dCBVUkwmIHVybCwgY29uc3QgQ29va2llJiBjb29raWUpCi17Ci0gICAgV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkubmV0d29ya0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkFkZENvb2tpZShzZXNzaW9uLnNlc3Npb25J
RCgpLCB1cmwsIGNvb2tpZSksIDApOwotfQotCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAvLyBQYXN0
ZWJvYXJkU3RyYXRlZ3kKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKaW5kZXggYzY5
ZWE1MTllYjkuLjM1NWQ4YTZmMjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgK
QEAgLTU2LDcgKzU2LDYgQEAgcHJpdmF0ZToKICAgICBTdHJpbmcgY29va2llUmVxdWVzdEhlYWRl
ckZpZWxkVmFsdWUoV2ViQ29yZTo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0
UGFydHksIGNvbnN0IFdlYkNvcmU6OlVSTCYpIG92ZXJyaWRlOwogICAgIGJvb2wgZ2V0UmF3Q29v
a2llcyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3Jl
OjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlVSTCYsIFZlY3RvcjxXZWJDb3JlOjpD
b29raWU+Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkZWxldGVDb29raWUoY29uc3QgV2ViQ29yZTo6
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgU3RyaW5n
Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBhZGRDb29raWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgV2ViQ29yZTo6Q29va2ll
Jikgb3ZlcnJpZGU7CiAKICAgICAvLyBXZWJDb3JlOjpQYXN0ZWJvYXJkU3RyYXRlZ3kKICNpZiBQ
TEFURk9STShJT1MpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>