<?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>193659</bug_id>
          
          <creation_ts>2019-01-21 14:55:45 -0800</creation_ts>
          <short_desc>Switch NetworkStorageSession portions of ResourceLoadStatistics to Async message passing style</short_desc>
          <delta_ts>2019-01-25 13:56:08 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>193556</dependson>
          <blocked>193199</blocked>
    
    <blocked>193303</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Brent Fulgham">bfulgham</reporter>
          <assigned_to name="Brent Fulgham">bfulgham</assigned_to>
          <cc>achristensen</cc>
    
    <cc>bfulgham</cc>
    
    <cc>tsavell</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wilander</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1496661</commentid>
    <comment_count>0</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2019-01-21 14:55:45 -0800</bug_when>
    <thetext>Change the implementations of ResourceLoadStatistics code in NetworkStorageSession to use Async message passing, so that more of the code is autogenerated. This should make test runs more consistent, and should reduce the possibility of bookkeeping errors in the message handling implementations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1496662</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-01-21 14:56:27 -0800</bug_when>
    <thetext>&lt;rdar://problem/47433290&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1497078</commentid>
    <comment_count>2</comment_count>
      <attachid>359803</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2019-01-22 16:21:31 -0800</bug_when>
    <thetext>Created attachment 359803
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1497083</commentid>
    <comment_count>3</comment_count>
      <attachid>359805</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2019-01-22 16:30:13 -0800</bug_when>
    <thetext>Created attachment 359805
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1497106</commentid>
    <comment_count>4</comment_count>
      <attachid>359805</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-01-22 17:04:24 -0800</bug_when>
    <thetext>Comment on attachment 359805
Patch

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

&gt; Source/WebKit/NetworkProcess/Classifier/ShouldGrandfatherStatistics.h:40
&gt; +template&lt;&gt; struct EnumTraits&lt;WebKit::ShouldGrandfatherStatistics&gt; {

Fun fact: enum classes with bool as the underlying type don&apos;t need an EnumTraits because the decoder knows it can only have two values.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1497111</commentid>
    <comment_count>5</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2019-01-22 17:06:32 -0800</bug_when>
    <thetext>Looks like the patch is still out-of-sync with ToT. Uploading a newly-rebased version.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1497112</commentid>
    <comment_count>6</comment_count>
      <attachid>359816</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2019-01-22 17:06:48 -0800</bug_when>
    <thetext>Created attachment 359816
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1497190</commentid>
    <comment_count>7</comment_count>
      <attachid>359844</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2019-01-22 20:25:49 -0800</bug_when>
    <thetext>Created attachment 359844
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1497425</commentid>
    <comment_count>8</comment_count>
      <attachid>359844</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-01-23 10:53:32 -0800</bug_when>
    <thetext>Comment on attachment 359844
Patch

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

&gt; Source/WebKit/NetworkProcess/Classifier/ShouldGrandfatherStatistics.h:40
&gt; +template&lt;&gt; struct EnumTraits&lt;WebKit::ShouldGrandfatherStatistics&gt; {

Still not needed.

&gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:604
&gt; +            resourceLoadStatistics-&gt;dumpResourceLoadStatistics(WTFMove(completionHandler));

It seems like we should call the completion handler in the other cases, too.

&gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:723
&gt;          ASSERT_NOT_REACHED();

ditto

&gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:869
&gt;          ASSERT_NOT_REACHED();

ditto

&gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:887
&gt;          ASSERT_NOT_REACHED();

ditto

&gt; Source/WebKit/UIProcess/API/C/WKWebsiteDataStoreRef.cpp:409
&gt; +#if ENABLE(RESOURCE_LOAD_STATISTICS)

Should we just call the callback with the context if the feature is not enabled?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1497437</commentid>
    <comment_count>9</comment_count>
      <attachid>359906</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2019-01-23 11:13:58 -0800</bug_when>
    <thetext>Created attachment 359906
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1497438</commentid>
    <comment_count>10</comment_count>
      <attachid>359906</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-01-23 11:14:52 -0800</bug_when>
    <thetext>Comment on attachment 359906
Patch

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

&gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:931
&gt;          ASSERT_NOT_REACHED();

more completion handler calling</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1497456</commentid>
    <comment_count>11</comment_count>
      <attachid>359906</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2019-01-23 11:31:22 -0800</bug_when>
    <thetext>Comment on attachment 359906
Patch

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

&gt;&gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:931
&gt;&gt;          ASSERT_NOT_REACHED();
&gt; 
&gt; more completion handler calling

Even with ASSERT_NOT_REACHED? I guess that&apos;s debug-only.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1497461</commentid>
    <comment_count>12</comment_count>
      <attachid>359915</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2019-01-23 11:40:28 -0800</bug_when>
    <thetext>Created attachment 359915
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1497463</commentid>
    <comment_count>13</comment_count>
      <attachid>359916</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2019-01-23 11:47:38 -0800</bug_when>
    <thetext>Created attachment 359916
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1497545</commentid>
    <comment_count>14</comment_count>
      <attachid>359916</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-01-23 13:52:45 -0800</bug_when>
    <thetext>Comment on attachment 359916
Patch

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

&gt; Source/WebKit/NetworkProcess/Classifier/ShouldGrandfatherStatistics.h:34
&gt; +    

extra space</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1497546</commentid>
    <comment_count>15</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2019-01-23 13:54:16 -0800</bug_when>
    <thetext>(In reply to Alex Christensen from comment #14)
&gt; Comment on attachment 359916 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=359916&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/Classifier/ShouldGrandfatherStatistics.h:34
&gt; &gt; +    
&gt; 
&gt; extra space

Doh! Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1497549</commentid>
    <comment_count>16</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2019-01-23 13:55:55 -0800</bug_when>
    <thetext>Committed r240360: &lt;https://trac.webkit.org/changeset/240360&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1498409</commentid>
    <comment_count>17</comment_count>
    <who name="Truitt Savell">tsavell</who>
    <bug_when>2019-01-25 13:14:46 -0800</bug_when>
    <thetext>I found that https://trac.webkit.org/changeset/240360/webkit

caused this test 
http://webkit-test-results.webkit.org/dashboards/flakiness_dashboard.html#showAllRuns=true&amp;tests=http%2Ftests%2FresourceLoadStatistics%2Fcapped-lifetime-for-cookie-set-in-js.html

to become a flakey failure on wk2.

History:
http://webkit-test-results.webkit.org/dashboards/flakiness_dashboard.html#showAllRuns=true&amp;tests=http%2Ftests%2FresourceLoadStatistics%2Fcapped-lifetime-for-cookie-set-in-js.html

reproduced with:
run-webkit-tests --root testbuild-240360 http/tests/resourceLoadStatistics/capped-lifetime-for-cookie-set-in-js.html --iterations 500 -f 

r240360 reproduces the failures while r240359 has no failures occur.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1498445</commentid>
    <comment_count>18</comment_count>
    <who name="Truitt Savell">tsavell</who>
    <bug_when>2019-01-25 13:56:08 -0800</bug_when>
    <thetext>I am also very certain that http/tests/resourceLoadStatistics/cap-cache-max-age-for-prevalent-resource.html has become a flaky failure due to https://trac.webkit.org/changeset/240360/webkit

Tracking my investigation in https://bugs.webkit.org/show_bug.cgi?id=193752</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>359803</attachid>
            <date>2019-01-22 16:21:31 -0800</date>
            <delta_ts>2019-01-22 16:30:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-193659-20190122162130.patch</filename>
            <type>text/plain</type>
            <size>86811</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQwMjQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGI0OTMyZDMzYzliMWFmYWU4
YjFkZGNmZmVjYzYxZjMxODkzYjMzNzAuLmE3NDhjM2NiMTFmNjlkZGVkODZjODA1YWRkZDlmYzlj
YWEwOWU4MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTUgQEAKKzIwMTktMDEtMjIgIEJyZW50IEZ1
bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CisKKyAgICAgICAgU3dpdGNoIE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiBwb3J0aW9ucyBvZiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIHRvIEFzeW5jIG1l
c3NhZ2UgcGFzc2luZyBzdHlsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTkzNjU5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80NzQzMzI5MD4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDaGFuZ2UgdGhl
IGltcGxlbWVudGF0aW9ucyBvZiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIGNvZGUgaW4gTmV0d29y
a1N0b3JhZ2VTZXNzaW9uIHRvIHVzZSB0aGUKKyAgICAgICAgJ3NlbmRXaXRoQXN5bmNSZXBseScg
c28gdGhhdCBtb3JlIG9mIHRoZSBjb2RlIGlzIGF1dG9nZW5lcmF0ZWQuIFRoaXMgc2hvdWxkIG1h
a2UgdGVzdCBydW5zIG1vcmUKKyAgICAgICAgY29uc2lzdGVudCwgYW5kIHNob3VsZCByZWR1Y2Ug
dGhlIHBvc3NpYmlsaXR5IG9mIGJvb2trZWVwaW5nIGVycm9ycyBpbiB0aGUgbWVzc2FnZSBoYW5k
bGluZworICAgICAgICBpbXBsZW1lbnRhdGlvbnMuCisKKyAgICAgICAgRml4IHRoZSBpbXBsZW1l
bnRhdGlvbiBvZiBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRDbG9zZSB0byBjbGVhbiB1cCB0d28g
bWFudWFsbHkgY29uc3RydWN0ZWQKKyAgICAgICAgbWVzc2FnZSBjYWxsYmFja3MgdGhhdCB3ZXJl
IGltcHJvcGVybHkgd3JpdHRlbiAoYSBiaWcgcGFydCBvZiB0aGUgcmVhc29uIHRvIG1vdmUgdG8g
dXNpbmcKKyAgICAgICAgJ3NlbmRXaXRoQXN5bmNSZXBseScpLgorCisgICAgICAgIFRoaXMgcGF0
Y2ggYWxzbyBtb3ZlcyBhbiBpbml0aWFsaXphdG9uIGNhbGwgKFdlYnNpdGVEYXRhU3RvcmU6OmRp
ZENyZWF0ZU5ldHdvcmtQcm9jZXNzKSBmcm9tCisgICAgICAgICdlbnN1cmVOZXR3b3JrUHJvY2Vz
cycgdG8gJ3Byb2Nlc3NEaWRGaW5pc2hMYXVuY2hpbmcnLiBJbiBjdXJyZW50IGNvZGUsIHRoZSBj
YWxsIGhhcHBlbnMgYmVmb3JlCisgICAgICAgIGEgY29ubmVjdGlvbiBpcyBlc3RhYmxpc2hlZCB0
byB0aGUgbmV0d29yayBwcm9jZXNzLCBjYXVzaW5nIGluaXRpYWxpemF0aW9uIG1lc3NhZ2VzIHRv
IGdldCBkcm9wcGVkCisgICAgICAgIGxlYWRpbmcgdG8gdGVzdCBzeXN0ZW0gZmxha2luZXNzLgor
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0
aWNzTWVtb3J5U3RvcmUuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIv
U2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzLmg6IEFkZGVkLgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL0NsYXNzaWZpZXIvU3RvcmFnZUFjY2Vzc1N0YXR1cy5oOiBBZGRlZC4KKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6
c2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudCk6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaDoKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtQcm9jZXNzOjp1cGRhdGVQcmV2YWxlbnREb21haW5zVG9CbG9ja0Nvb2tpZXNGb3Ip
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2V0QWdlQ2FwRm9yQ2xpZW50U2lk
ZUNvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2NoZWR1bGVDbGVh
ckluTWVtb3J5QW5kUGVyc2lzdGVudCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNz
OjpoYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzczo6Z3JhbnRTdG9yYWdlQWNjZXNzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3M6OnJlbW92ZUFsbFN0b3JhZ2VBY2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzczo6c2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cmVzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJl
c291cmNlcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRl
RGF0YSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcDoKKyAgICAgICAgKFdL
V2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudFN0b3Jl
KToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NDbGVhckluTWVtb3J5QW5k
UGVyc2lzdGVudFN0b3JlTW9kaWZpZWRTaW5jZUhvdXJzKToKKyAgICAgICAgKFdLV2Vic2l0ZURh
dGFTdG9yZVN0YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVudFN0YXRlKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Byb2Nlc3NQcm94eTo6Y2xlYXJDYWxsYmFja1N0YXRlcyk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZENsb3NlKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Byb2Nlc3NQcm94eTo6dXBkYXRlUHJldmFsZW50RG9tYWluc1RvQmxvY2tDb29raWVzRm9y
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6c2NoZWR1bGVDbGVhcklu
TWVtb3J5QW5kUGVyc2lzdGVudCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJv
eHk6OnNldEFnZUNhcEZvckNsaWVudFNpZGVDb29raWVzKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Byb2Nlc3NQcm94eTo6aGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpncmFudFN0b3JhZ2VBY2Nlc3MpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZW1vdmVBbGxTdG9yYWdlQWNjZXNz
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0Q2FjaGVNYXhBZ2VD
YXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vz
c1Byb3h5OjpzZXRDYWNoZU1heEFnZUNhcCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzUHJveHk6OnJlc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRVcGRhdGVCbG9ja0Nvb2tpZXMp
OiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRTZXRB
Z2VDYXBGb3JDbGllbnRTaWRlQ29va2llcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtQcm9jZXNzUHJveHk6OmRpZFVwZGF0ZVJ1bnRpbWVTZXR0aW5ncyk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OnN0b3JhZ2VBY2Nlc3NSZXF1ZXN0
UmVzdWx0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6
c3RvcmFnZUFjY2Vzc09wZXJhdGlvblJlc3VsdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZFJlbW92ZUFsbFN0b3JhZ2VBY2Nlc3MpOiBEZWxldGVk
LgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRTZXRDYWNoZU1heEFn
ZUNhcEZvclByZXZhbGVudFJlc291cmNlcyk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmVuc3VyZU5ldHdvcmtQcm9jZXNz
KTogTW92ZSBXZWJzaXRlRGF0YVN0b3JlICdkaWRDcmVhdGVOZXR3b3JrUHJvY2VzcycKKyAgICAg
ICAgdG8gJ3Byb2Nlc3NEaWRGaW5pc2hMYXVuY2hpbmcnLiBDdXJyZW50bHkgdGhlIGNhbGwgaGFw
cGVucyBiZWZvcmUgYSBjb25uZWN0aW9uIGlzIGVzdGFibGlzaGVkLAorICAgICAgICBjYXVzaW5n
IGluaXRpYWxpemF0aW9uIG1lc3NhZ2VzIHRvIGdldCBkcm9wcGVkLgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzUG9vbDo6cHJvY2Vzc0RpZEZpbmlzaExhdW5jaGluZyk6IERpdHRvLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6cmVtb3ZlRGF0YSk6CisgICAgICAgIChXZWJL
aXQ6OldlYnNpdGVEYXRhU3RvcmU6OnNldE1heFN0YXRpc3RpY3NFbnRyaWVzKToKKyAgICAgICAg
KFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6c2V0UHJ1bmVFbnRyaWVzRG93blRvKToKKyAgICAg
ICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6c2V0R3JhbmRmYXRoZXJpbmdUaW1lKToKKyAg
ICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6c2V0Q2FjaGVNYXhBZ2VDYXApOgorICAg
ICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpzZXRNaW5pbXVtVGltZUJldHdlZW5EYXRh
UmVjb3Jkc1JlbW92YWwpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpzZXRQ
cmV2YWxlbnRSZXNvdXJjZSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnNl
dFNob3VsZENsYXNzaWZ5UmVzb3VyY2VzQmVmb3JlRGF0YVJlY29yZHNSZW1vdmFsKToKKyAgICAg
ICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6c2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVy
c2lzdGVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnNldEFnZUNhcEZv
ckNsaWVudFNpZGVDb29raWVzKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6
c2V0Tm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5lZCk6CisgICAgICAgIChXZWJL
aXQ6OldlYnNpdGVEYXRhU3RvcmU6OnNldE5vdGlmeVBhZ2VzV2hlblRlbGVtZXRyeVdhc0NhcHR1
cmVkKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6c2V0VGltZVRvTGl2ZVVz
ZXJJbnRlcmFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnNldENh
Y2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
c2l0ZURhdGFTdG9yZTo6c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZSk6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaDoKKyAgICAgICAg
KiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxOS0wMS0yMSAgQnJlbnQg
RnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIHRlc3Qg
Zml4IGFmdGVyIHIyNDAyNDMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NNZW1vcnlTdG9yZS5jcHAKaW5kZXggNzY4NWI2ZTMzYzYyZjFiOGU5NGQzODY1NzE5YmYxNWNi
YmE3ZjBkNi4uOTc0NGQ0ODM0NWMxODUzZjhhYzYwNTM3MTgxNGM3YWJlMzUyZWE0NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHAKQEAg
LTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzTWFuYWdlci5oIgogI2luY2x1
ZGUgIlBsdWdpblByb2Nlc3NQcm94eS5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NQZXJzaXN0ZW50U3RvcmFnZS5oIgorI2luY2x1ZGUgIlN0b3JhZ2VBY2Nlc3NTdGF0dXMuaCIK
ICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIKICNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzVGVsZW1ldHJ5LmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZS5oIgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Nob3VsZEdy
YW5kZmF0aGVyU3RhdGlzdGljcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFz
c2lmaWVyL1Nob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEwNWMyN2Rl
MDQ0ODBmNDEyYWJmYmNmZjgzYTcwOTg3MGFiNGQ0ZTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvU2hvdWxkR3JhbmRmYXRoZXJTdGF0
aXN0aWNzLmgKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworZW51bSBjbGFzcyBTaG91bGRHcmFuZGZhdGhlclN0YXRpc3Rp
Y3MgOiBib29sIHsKKyAgICBObywKKyAgICBZZXMsCit9OworICAgIAorCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKKworbmFtZXNwYWNlIFdURiB7CisgICAgCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVt
VHJhaXRzPFdlYktpdDo6U2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzPiB7CisgICAgdXNpbmcg
dmFsdWVzID0gRW51bVZhbHVlczwKKyAgICBXZWJLaXQ6OlNob3VsZEdyYW5kZmF0aGVyU3RhdGlz
dGljcywKKyAgICBXZWJLaXQ6OlNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljczo6Tm8sCisgICAg
V2ViS2l0OjpTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3M6OlllcworICAgID47Cit9OworICAg
IAorfSAvLyBuYW1lc3BhY2UgV1RGCisKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1N0b3JhZ2VBY2Nlc3NTdGF0dXMuaCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9TdG9yYWdlQWNjZXNzU3RhdHVzLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNzBiNmEyOTMzNjJiZmU0M2QxM2E0NTNhYzMxNjBjZmI3M2VjOGEzNQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9TdG9yYWdl
QWNjZXNzU3RhdHVzLmgKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworZW51bSBjbGFzcyBTdG9yYWdlQWNjZXNzU3RhdHVz
IDogdWludDhfdCB7CisgICAgQ2Fubm90UmVxdWVzdEFjY2VzcywKKyAgICBSZXF1aXJlc1VzZXJQ
cm9tcHQsCisgICAgSGFzQWNjZXNzCit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworbmFt
ZXNwYWNlIFdURiB7CisgICAgCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYktpdDo6
U3RvcmFnZUFjY2Vzc1N0YXR1cz4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8Cisg
ICAgV2ViS2l0OjpTdG9yYWdlQWNjZXNzU3RhdHVzLAorICAgIFdlYktpdDo6U3RvcmFnZUFjY2Vz
c1N0YXR1czo6Q2Fubm90UmVxdWVzdEFjY2VzcywKKyAgICBXZWJLaXQ6OlN0b3JhZ2VBY2Nlc3NT
dGF0dXM6OlJlcXVpcmVzVXNlclByb21wdCwKKyAgICBXZWJLaXQ6OlN0b3JhZ2VBY2Nlc3NTdGF0
dXM6Okhhc0FjY2VzcworICAgID47Cit9OworICAgIAorfSAvLyBuYW1lc3BhY2UgV1RGCisKKwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAppbmRleCA4
ZTc3MzVhYmY3NzlmZmRkZThlYTc1MDJlYmEzZDVlMGMwMTY5MGE4Li5hNTc5OWFkMDZmNTNiZmEx
NmEzNzA0ZTZmMmFlNWQ0N2Y4ZTFmOGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlLmNwcApAQCAtMzMsNiArMzMsOCBAQAogI2luY2x1ZGUgIk5ldHdv
cmtTZXNzaW9uLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3Jl
LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlLmgi
CisjaW5jbHVkZSAiU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzLmgiCisjaW5jbHVkZSAiU3Rv
cmFnZUFjY2Vzc1N0YXR1cy5oIgogI2luY2x1ZGUgIldlYkZyYW1lUHJveHkuaCIKICNpbmNsdWRl
ICJXZWJQYWdlUHJveHkuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIKQEAgLTEw
MTAsNyArMTAxMiw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzY2hl
ZHVsZUNsZWFyQmxvY2tpbmdTdGF0ZUZvckRvbWFpbnMoY29uc3QKICAgICB9KTsKIH0KIAotdm9p
ZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFu
ZFBlcnNpc3RlbnQoU2hvdWxkR3JhbmRmYXRoZXIgc2hvdWxkR3JhbmRmYXRoZXIsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlOjpzY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFNo
b3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljcyBzaG91bGRHcmFuZGZhdGhlciwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChSdW5Mb29w
Ojppc01haW4oKSk7CiAgICAgcG9zdFRhc2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKSwgc2hvdWxkR3JhbmRmYXRoZXIsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CkBAIC0xMDIzLDcgKzEwMjUsNyBAQCB2b2lk
IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2NoZWR1bGVDbGVhckluTWVtb3J5QW5k
UGVyc2lzdGVudChTaG91bGRHcgogCiAgICAgICAgIGlmIChtX21lbW9yeVN0b3JlKSB7CiAgICAg
ICAgICAgICBtX21lbW9yeVN0b3JlLT5jbGVhcihbdGhpcywgcHJvdGVjdGVkVGhpcyA9IHByb3Rl
Y3RlZFRoaXMuY29weVJlZigpLCBzaG91bGRHcmFuZGZhdGhlciwgY29tcGxldGlvbkhhbmRsZXJD
YWxsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyQ2FsbGVyKV0gKCkgbXV0YWJsZSB7Ci0g
ICAgICAgICAgICAgICAgaWYgKHNob3VsZEdyYW5kZmF0aGVyID09IFNob3VsZEdyYW5kZmF0aGVy
OjpZZXMpIHsKKyAgICAgICAgICAgICAgICBpZiAoc2hvdWxkR3JhbmRmYXRoZXIgPT0gU2hvdWxk
R3JhbmRmYXRoZXJTdGF0aXN0aWNzOjpZZXMpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKG1f
bWVtb3J5U3RvcmUpCiAgICAgICAgICAgICAgICAgICAgICAgICBtX21lbW9yeVN0b3JlLT5ncmFu
ZGZhdGhlckV4aXN0aW5nV2Vic2l0ZURhdGEoY29tcGxldGlvbkhhbmRsZXJDYWxsZXIucmVsZWFz
ZSgpKTsKICAgICAgICAgICAgICAgICAgICAgZWxzZQpAQCAtMTAzMSwxMyArMTAzMywxMyBAQCB2
b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2NoZWR1bGVDbGVhckluTWVtb3J5
QW5kUGVyc2lzdGVudChTaG91bGRHcgogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0p
OwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgaWYgKHNob3VsZEdyYW5kZmF0aGVyID09
IFNob3VsZEdyYW5kZmF0aGVyOjpZZXMpCisgICAgICAgICAgICBpZiAoc2hvdWxkR3JhbmRmYXRo
ZXIgPT0gU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzOjpZZXMpCiAgICAgICAgICAgICAgICAg
UkVMRUFTRV9MT0coUmVzb3VyY2VMb2FkU3RhdGlzdGljcywgIldlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZTo6c2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudCBCZWZvcmUgYmVp
bmcgY2xlYXJlZCwgbV9tZW1vcnlTdG9yZSBpcyBudWxsIHdoZW4gdHJ5aW5nIHRvIGdyYW5kZmF0
aGVyIGRhdGEuIik7CiAgICAgICAgIH0KICAgICB9KTsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmU6OnNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoV2Fs
bFRpbWUgbW9kaWZpZWRTaW5jZSwgU2hvdWxkR3JhbmRmYXRoZXIgc2hvdWxkR3JhbmRmYXRoZXIs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjYWxsYmFjaykKK3ZvaWQgV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlOjpzY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFdh
bGxUaW1lIG1vZGlmaWVkU2luY2UsIFNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljcyBzaG91bGRH
cmFuZGZhdGhlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNhbGxiYWNrKQogewogICAg
IEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUu
aCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUuaAppbmRleCAyNTFiMzkyNWJhYjVhYzQwMmE4Y2U0ZDdmOTQyZTEw
MjZiNDZmNzZjLi4zYzhhNDVjYmUwYzFkN2MwNWQ5NWQ4Mzg1MzJiZjAwZTIxNDg3Zjg3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCkBAIC0yOCw2ICsy
OCw4IEBACiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKIAogI2luY2x1ZGUg
IkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3MuaCIK
KyNpbmNsdWRlICJTdG9yYWdlQWNjZXNzU3RhdHVzLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFU
eXBlLmgiCiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3Rm
L1J1bkxvb3AuaD4KQEAgLTU2LDE3ICs1OCw2IEBAIGNsYXNzIFdlYkZyYW1lUHJveHk7CiBjbGFz
cyBXZWJQcm9jZXNzUHJveHk7CiBjbGFzcyBXZWJzaXRlRGF0YVN0b3JlOwogCi1lbnVtIGNsYXNz
IFN0b3JhZ2VBY2Nlc3NTdGF0dXMgOiB1bnNpZ25lZCB7Ci0gICAgQ2Fubm90UmVxdWVzdEFjY2Vz
cywKLSAgICBSZXF1aXJlc1VzZXJQcm9tcHQsCi0gICAgSGFzQWNjZXNzCi19OwotCi1lbnVtIGNs
YXNzIFNob3VsZEdyYW5kZmF0aGVyIHsKLSAgICBObywKLSAgICBZZXMsCi19OwotCiBjbGFzcyBX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUgZmluYWwgOiBwdWJsaWMgVGhyZWFkU2FmZVJl
ZkNvdW50ZWQ8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLCBXVEY6OkRlc3RydWN0aW9u
VGhyZWFkOjpNYWluPiwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgUmVmPFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZT4gY3JlYXRlKFdlYnNp
dGVEYXRhU3RvcmUmIHdlYnNpdGVEYXRhU3RvcmUpCkBAIC0xNTUsOCArMTQ2LDggQEAgcHVibGlj
OgogICAgIHZvaWQgc2NoZWR1bGVTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHNQcm9jZXNzaW5nKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzdWJtaXRUZWxlbWV0cnkoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHVwZGF0ZVByZXZhbGVudERvbWFp
bnNUb0Jsb2NrQ29va2llc0Zvcihjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvQmxvY2sp
OwotICAgIHZvaWQgc2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChTaG91bGRHcmFu
ZGZhdGhlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lkIHNjaGVkdWxl
Q2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSwgU2hvdWxk
R3JhbmRmYXRoZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBzY2hl
ZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGlj
cywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIHNjaGVkdWxlQ2xlYXJJ
bk1lbW9yeUFuZFBlcnNpc3RlbnQoV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSwgU2hvdWxkR3JhbmRm
YXRoZXJTdGF0aXN0aWNzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCiAgICAgdm9p
ZCBzZXRUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uKFNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRNaW5pbXVtVGltZUJldHdlZW5EYXRhUmVjb3Jkc1Jl
bW92YWwoU2Vjb25kcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggMmE5OGIzMDRh
MTNjNmM2OWM0YTQwNzVmY2UwNTgxMWUxMTc2ZmExZS4uMzQ2NzE4ZTA2YTUwNTg3MDkzN2FlNGFj
YTgxYzU0ZjMzMmE2MDAxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTQ5LDcgKzQ5LDkgQEAKICNpbmNsdWRlICJOZXR3b3JrU2Vz
c2lvbkNyZWF0aW9uUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIlByZWNvbm5lY3RUYXNrLmgiCiAj
aW5jbHVkZSAiUmVtb3RlTmV0d29ya2luZ0NvbnRleHQuaCIKKyNpbmNsdWRlICJTaG91bGRHcmFu
ZGZhdGhlclN0YXRpc3RpY3MuaCIKICNpbmNsdWRlICJTdGF0aXN0aWNzRGF0YS5oIgorI2luY2x1
ZGUgIlN0b3JhZ2VBY2Nlc3NTdGF0dXMuaCIKICNpbmNsdWRlICJXZWJDb29raWVNYW5hZ2VyLmgi
CiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNz
UG9vbE1lc3NhZ2VzLmgiCkBAIC01MDksMTEgKzUxMSwxMSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNz
OjpkdW1wUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVp
bnQ2NAogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJv
Y2Vzczo6dXBkYXRlUHJldmFsZW50RG9tYWluc1RvQmxvY2tDb29raWVzRm9yKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb0Jsb2NrLCB1aW50
NjRfdCBjb250ZXh0SWQpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjp1cGRhdGVQcmV2YWxlbnREb21h
aW5zVG9CbG9ja0Nvb2tpZXNGb3IoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBWZWN0
b3I8U3RyaW5nPiYgZG9tYWluc1RvQmxvY2ssIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoYXV0byogbmV0d29ya1N0b3JhZ2VTZXNzaW9u
ID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQogICAg
ICAgICBuZXR3b3JrU3RvcmFnZVNlc3Npb24tPnNldFByZXZhbGVudERvbWFpbnNUb0Jsb2NrQ29v
a2llc0Zvcihkb21haW5zVG9CbG9jayk7Ci0gICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+
c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6RGlkVXBkYXRlQmxvY2tDb29raWVz
KGNvbnRleHRJZCksIDApOworICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKIHZvaWQgTmV0
d29ya1Byb2Nlc3M6OmlzR3JhbmRmYXRoZXJlZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNv
bnN0IFN0cmluZyYgdGFyZ2V0UHJpbWFyeURvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTU0MywxMSArNTQ1LDExIEBAIHZvaWQgTmV0
d29ya1Byb2Nlc3M6OmlzVmVyeVByZXZhbGVudFJlc291cmNlKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgY29uc3QgU3RyCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lk
IE5ldHdvcmtQcm9jZXNzOjpzZXRBZ2VDYXBGb3JDbGllbnRTaWRlQ29va2llcyhQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIE9wdGlvbmFsPFNlY29uZHM+IHNlY29uZHMsIHVpbnQ2NF90IGNvbnRl
eHRJZCkKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldEFnZUNhcEZvckNsaWVudFNpZGVDb29raWVz
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uYWw8U2Vjb25kcz4gc2Vjb25kcywgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmIChh
dXRvKiBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3Jh
Z2VTZXNzaW9uKHNlc3Npb25JRCkpCiAgICAgICAgIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+c2V0
QWdlQ2FwRm9yQ2xpZW50U2lkZUNvb2tpZXMoc2Vjb25kcyk7Ci0gICAgcGFyZW50UHJvY2Vzc0Nv
bm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6RGlkU2V0QWdl
Q2FwRm9yQ2xpZW50U2lkZUNvb2tpZXMoY29udGV4dElkKSwgMCk7CisgICAgY29tcGxldGlvbkhh
bmRsZXIoKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0R3JhbmRmYXRoZXJlZChQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIGJvb2wg
aXNHcmFuZGZhdGhlcmVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCkBAIC02MTMsMTUgKzYxNSwxNCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzY2hlZHVs
ZUNvb2tpZUJsb2NraW5nVXBkYXRlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcAogICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2No
ZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IE9wdGlvbmFsPFdhbGxUaW1lPiBtb2RpZmllZFNpbmNlLCBib29sIHNob3VsZEdyYW5kZmF0aGVy
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5l
dHdvcmtQcm9jZXNzOjpzY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgT3B0aW9uYWw8V2FsbFRpbWU+IG1vZGlmaWVkU2luY2UsIFNob3Vs
ZEdyYW5kZmF0aGVyU3RhdGlzdGljcyBzaG91bGRHcmFuZGZhdGhlciwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmIChhdXRvKiBuZXR3b3Jr
U2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKICAgICAgICAgaWYg
KGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VM
b2FkU3RhdGlzdGljcygpKSB7Ci0gICAgICAgICAgICBhdXRvIGdyYW5kZmF0aGVyID0gc2hvdWxk
R3JhbmRmYXRoZXIgPyBTaG91bGRHcmFuZGZhdGhlcjo6WWVzIDogU2hvdWxkR3JhbmRmYXRoZXI6
Ok5vOwogICAgICAgICAgICAgaWYgKG1vZGlmaWVkU2luY2UpCi0gICAgICAgICAgICAgICAgcmVz
b3VyY2VMb2FkU3RhdGlzdGljcy0+c2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudCht
b2RpZmllZFNpbmNlLnZhbHVlKCksIGdyYW5kZmF0aGVyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CisgICAgICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+c2NoZWR1bGVD
bGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChtb2RpZmllZFNpbmNlLnZhbHVlKCksIHNob3VsZEdy
YW5kZmF0aGVyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgICAgICBlbHNl
Ci0gICAgICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+c2NoZWR1bGVDbGVhcklu
TWVtb3J5QW5kUGVyc2lzdGVudChncmFuZGZhdGhlciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpOworICAgICAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnNjaGVkdWxlQ2xl
YXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoc2hvdWxkR3JhbmRmYXRoZXIsIFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKICAgICAgICAgfQogICAgIH0gZWxzZQogICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKQEAgLTc1NCwxMiArNzU1LDE1IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNl
dExhc3RTZWVuKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiByZXNvdXJj
CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNz
OjpoYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25z
dCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBjb25zdCBTdHJpbmcmIGZpcnN0UGFydHlEb21haW4s
IHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgY29udGV4dElkKQor
dm9pZCBOZXR3b3JrUHJvY2Vzczo6aGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwgY29uc3QgU3RyaW5n
JiBmaXJzdFBhcnR5RG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CisgICAg
Ym9vbCBoYXNTdG9yYWdlQWNjZXNzID0gZmFsc2U7CiAgICAgaWYgKGF1dG8qIG5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lv
bklEKSkKLSAgICAgICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6
TmV0d29ya1Byb2Nlc3NQcm94eTo6U3RvcmFnZUFjY2Vzc09wZXJhdGlvblJlc3VsdChuZXR3b3Jr
U3RvcmFnZVNlc3Npb24tPmhhc1N0b3JhZ2VBY2Nlc3MocmVzb3VyY2VEb21haW4sIGZpcnN0UGFy
dHlEb21haW4sIGZyYW1lSUQsIHBhZ2VJRCksIGNvbnRleHRJZCksIDApOworICAgICAgICBoYXNT
dG9yYWdlQWNjZXNzID0gbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5oYXNTdG9yYWdlQWNjZXNzKHJl
c291cmNlRG9tYWluLCBmaXJzdFBhcnR5RG9tYWluLCBmcmFtZUlELCBwYWdlSUQpOwogICAgIGVs
c2UKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisKKyAgICBjb21wbGV0aW9uSGFuZGxl
cihoYXNTdG9yYWdlQWNjZXNzKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6Z2V0QWxsU3Rv
cmFnZUFjY2Vzc0VudHJpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBjb250
ZXh0SWQpCkBAIC03NzksMTkgKzc4MywxNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpoYXNTdG9y
YWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiByZQogICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVx
dWVzdFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcm
IHJlc291cmNlRG9tYWluLCBjb25zdCBTdHJpbmcmIGZpcnN0UGFydHlEb21haW4sIE9wdGlvbmFs
PHVpbnQ2NF90PiBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIGJvb2wgcHJvbXB0RW5hYmxlZCwg
dWludDY0X3QgY29udGV4dElkKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVxdWVzdFN0b3JhZ2VB
Y2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHJlc291cmNlRG9t
YWluLCBjb25zdCBTdHJpbmcmIGZpcnN0UGFydHlEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBm
cmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIGJvb2wgcHJvbXB0RW5hYmxlZCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzU3RhdHVzKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsK
ICAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNz
aW9uSUQpKSB7Ci0gICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0
d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkgewotICAgICAgICAgICAgcmVz
b3VyY2VMb2FkU3RhdGlzdGljcy0+cmVxdWVzdFN0b3JhZ2VBY2Nlc3MocmVzb3VyY2VEb21haW4s
IGZpcnN0UGFydHlEb21haW4sIGZyYW1lSUQsIHBhZ2VJRCwgcHJvbXB0RW5hYmxlZCwgW3RoaXMs
IGNvbnRleHRJZF0oU3RvcmFnZUFjY2Vzc1N0YXR1cyBwcm9tcHRBY2NlcHRlZCkgewotICAgICAg
ICAgICAgICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdv
cmtQcm9jZXNzUHJveHk6OlN0b3JhZ2VBY2Nlc3NSZXF1ZXN0UmVzdWx0KHN0YXRpY19jYXN0PHVu
c2lnbmVkPihwcm9tcHRBY2NlcHRlZCksIGNvbnRleHRJZCksIDApOwotICAgICAgICAgICAgfSk7
Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBu
ZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQorICAgICAgICAgICAgcmVz
b3VyY2VMb2FkU3RhdGlzdGljcy0+cmVxdWVzdFN0b3JhZ2VBY2Nlc3MocmVzb3VyY2VEb21haW4s
IGZpcnN0UGFydHlEb21haW4sIGZyYW1lSUQsIHBhZ2VJRCwgcHJvbXB0RW5hYmxlZCwgV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgIH0gZWxzZQogICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6Z3JhbnRTdG9yYWdlQWNjZXNzKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwgY29u
c3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9tYWluLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwg
dWludDY0X3QgcGFnZUlELCBib29sIHVzZXJXYXNQcm9tcHRlZCwgdWludDY0X3QgY29udGV4dElk
KQordm9pZCBOZXR3b3JrUHJvY2Vzczo6Z3JhbnRTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwgY29uc3QgU3RyaW5nJiBm
aXJzdFBhcnR5RG9tYWluLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgdWludDY0X3QgcGFn
ZUlELCBib29sIHVzZXJXYXNQcm9tcHRlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBib29sIGlzU3RvcmFnZUdyYW50ZWQgPSBmYWxz
ZTsKICAgICBpZiAoYXV0byogbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKSB7CkBAIC04MDEsNyArODAyLDcgQEAg
dm9pZCBOZXR3b3JrUHJvY2Vzczo6Z3JhbnRTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgY29uc3QgU3RyaW5nJgogICAgIH0gZWxzZQogICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKIAotICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6
Ok5ldHdvcmtQcm9jZXNzUHJveHk6OlN0b3JhZ2VBY2Nlc3NPcGVyYXRpb25SZXN1bHQoaXNTdG9y
YWdlR3JhbnRlZCwgY29udGV4dElkKSwgMCk7CisgICAgY29tcGxldGlvbkhhbmRsZXIoaXNTdG9y
YWdlR3JhbnRlZCk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmxvZ0ZyYW1lTmF2aWdhdGlv
bihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgdGFyZ2V0UHJpbWFyeURv
bWFpbiwgY29uc3QgU3RyaW5nJiBtYWluRnJhbWVQcmltYXJ5RG9tYWluLCBjb25zdCBTdHJpbmcm
IHNvdXJjZVByaW1hcnlEb21haW4sIGNvbnN0IFN0cmluZyYgdGFyZ2V0SG9zdCwgY29uc3QgU3Ry
aW5nJiBtYWluRnJhbWVIb3N0LCBib29sIGlzUmVkaXJlY3QsIGJvb2wgaXNNYWluRnJhbWUpCkBA
IC04NDEsMTMgKzg0MiwxMyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjbGVhclVzZXJJbnRlcmFj
dGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZwogICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVtb3ZlQWxsU3Rv
cmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IGNvbnRleHRJZCkK
K3ZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlbW92ZUFsbFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7CiAgICAgaWYgKGF1dG8qIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKICAgICAgICAgbmV0d29ya1N0
b3JhZ2VTZXNzaW9uLT5yZW1vdmVBbGxTdG9yYWdlQWNjZXNzKCk7CiAgICAgZWxzZQogICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5z
ZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpEaWRSZW1vdmVBbGxTdG9yYWdlQWNj
ZXNzKGNvbnRleHRJZCksIDApOworICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKIHZvaWQg
TmV0d29ya1Byb2Nlc3M6OnJlbW92ZVByZXZhbGVudERvbWFpbnMoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWlucykKQEAgLTg1NiwxMyArODU3LDEz
IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlbW92ZVByZXZhbGVudERvbWFpbnMoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBjb25zdCBWZWN0CiAgICAgICAgIG5ldHdvcmtTdG9yYWdlU2Vzc2lv
bi0+cmVtb3ZlUHJldmFsZW50RG9tYWlucyhkb21haW5zKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJv
Y2Vzczo6c2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBTZWNvbmRzIHNlY29uZHMsIHVpbnQ2NF90IGNvbnRleHRJZCkKK3ZvaWQg
TmV0d29ya1Byb2Nlc3M6OnNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU2Vjb25kcyBzZWNvbmRzLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKGF1dG8qIG5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vz
c2lvbklEKSkKICAgICAgICAgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5zZXRDYWNoZU1heEFnZUNh
cEZvclByZXZhbGVudFJlc291cmNlcyhTZWNvbmRzIHsgc2Vjb25kcyB9KTsKICAgICBlbHNlCiAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9u
KCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkRpZFNldENhY2hlTWF4QWdl
Q2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKGNvbnRleHRJZCksIDApOworICAgIGNvbXBsZXRpb25I
YW5kbGVyKCk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldEdyYW5kZmF0aGVyaW5nVGlt
ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFNlY29uZHMgc2Vjb25kcywgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtOTM0LDEzICs5MzUsMTMgQEAg
dm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZShQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9
CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRS
ZXNvdXJjZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBjb250ZXh0SWQpCit2
b2lkIE5ldHdvcmtQcm9jZXNzOjpyZXNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3Vy
Y2VzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmIChhdXRvKiBuZXR3b3JrU3RvcmFnZVNlc3Np
b24gPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCiAg
ICAgICAgIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+cmVzZXRDYWNoZU1heEFnZUNhcEZvclByZXZh
bGVudFJlc291cmNlcygpOwogICAgIGVsc2UKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci0gICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1By
b2Nlc3NQcm94eTo6RGlkVXBkYXRlUnVudGltZVNldHRpbmdzKGNvbnRleHRJZCksIDApOworICAg
IGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAjZW5kaWYgLy8gRU5BQkxFKFJFU09VUkNFX0xPQURf
U1RBVElTVElDUykKIApAQCAtMTExMyw3ICsxMTE0LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6
ZGVsZXRlV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vi
c2kKIAogICAgICAgICAgICAgICAgIC8vIElmIHdlIGFyZSBkZWxldGluZyBhbGwgb2YgdGhlIGRh
dGEgdHlwZXMgdGhhdCB0aGUgcmVzb3VyY2UgbG9hZCBzdGF0aXN0aWNzIHN0b3JlIG1vbml0b3Jz
CiAgICAgICAgICAgICAgICAgLy8gd2UgZG8gbm90IG5lZWQgdG8gcmUtZ3JhbmRmYXRoZXIgb2xk
IGRhdGEuCi0gICAgICAgICAgICAgICAgYXV0byBzaG91bGRHcmFuZGZhdGhlciA9ICgobW9uaXRv
cmVkVHlwZXNSYXcgJiBkZWxldGVkVHlwZXNSYXcpID09IG1vbml0b3JlZFR5cGVzUmF3KSA/IFNo
b3VsZEdyYW5kZmF0aGVyOjpObyA6IFNob3VsZEdyYW5kZmF0aGVyOjpZZXM7CisgICAgICAgICAg
ICAgICAgYXV0byBzaG91bGRHcmFuZGZhdGhlciA9ICgobW9uaXRvcmVkVHlwZXNSYXcgJiBkZWxl
dGVkVHlwZXNSYXcpID09IG1vbml0b3JlZFR5cGVzUmF3KSA/IFNob3VsZEdyYW5kZmF0aGVyU3Rh
dGlzdGljczo6Tm8gOiBTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3M6OlllczsKIAogICAgICAg
ICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFu
ZFBlcnNpc3RlbnQobW9kaWZpZWRTaW5jZSwgc2hvdWxkR3JhbmRmYXRoZXIsIFtjbGVhclRhc2tz
SGFuZGxlciA9IGNsZWFyVGFza3NIYW5kbGVyLmNvcHlSZWYoKV0geyB9KTsKICAgICAgICAgICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAppbmRl
eCA1OTc5NGEyZTNiNDY1ZWRiOGQ2MjdmYzcwZTRiNGE0NmE3NmQxOTA5Li5iYzBjZTQzZDY1ZTAz
ZTBlNmFlNzljYWYxYzI3MGMyNDU1YjBhM2NhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMi0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMi0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNzcsNiArNzcsOCBAQCBjbGFzcyBOZXR3b3Jr
UHJvY2Vzc1N1cHBsZW1lbnQ7CiBjbGFzcyBOZXR3b3JrUHJveGltaXR5TWFuYWdlcjsKIGNsYXNz
IFdlYlNXU2VydmVyQ29ubmVjdGlvbjsKIGNsYXNzIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbjsKK2VudW0gY2xhc3MgU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzIDogYm9vbDsKK2Vu
dW0gY2xhc3MgU3RvcmFnZUFjY2Vzc1N0YXR1cyA6IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIFdlYnNp
dGVEYXRhRmV0Y2hPcHRpb247CiBlbnVtIGNsYXNzIFdlYnNpdGVEYXRhVHlwZTsKIHN0cnVjdCBO
ZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczsKQEAgLTE2MywxMSArMTY1LDExIEBAIHB1
YmxpYzoKICAgICB2b2lkIGNsZWFyVXNlckludGVyYWN0aW9uKFBBTDo6U2Vzc2lvbklELCBjb25z
dCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwog
ICAgIHZvaWQgZGVsZXRlV2Vic2l0ZURhdGFGb3JUb3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWlu
c0luQWxsUGVyc2lzdGVudERhdGFTdG9yZXMoUEFMOjpTZXNzaW9uSUQsIE9wdGlvblNldDxXZWJz
aXRlRGF0YVR5cGU+LCBWZWN0b3I8U3RyaW5nPiYmIHRvcFByaXZhdGVseUNvbnRyb2xsZWREb21h
aW5zLCBib29sIHNob3VsZE5vdGlmeVBhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qg
SGFzaFNldDxTdHJpbmc+Jik+JiYpOwogICAgIHZvaWQgZHVtcFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MoUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IGNvbnRleHRJZCk7Ci0gICAgdm9pZCB1cGRhdGVQ
cmV2YWxlbnREb21haW5zVG9CbG9ja0Nvb2tpZXNGb3IoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBkb21haW5zVG9CbG9jaywgdWludDY0X3QgY29udGV4dElkKTsKKyAgICB2
b2lkIHVwZGF0ZVByZXZhbGVudERvbWFpbnNUb0Jsb2NrQ29va2llc0ZvcihQQUw6OlNlc3Npb25J
RCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb0Jsb2NrLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpOwogICAgIHZvaWQgaXNHcmFuZGZhdGhlcmVkKFBBTDo6U2Vzc2lvbklELCBj
b25zdCBTdHJpbmcmIHRhcmdldFByaW1hcnlEb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYpOwogICAgIHZvaWQgaXNQcmV2YWxlbnRSZXNvdXJjZShQQUw6OlNlc3Npb25JRCwg
Y29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4mJik7CiAgICAgdm9pZCBpc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZShQQUw6OlNlc3Npb25JRCwg
Y29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4mJik7Ci0gICAgdm9pZCBzZXRBZ2VDYXBGb3JDbGllbnRTaWRlQ29va2llcyhQQUw6OlNlc3Np
b25JRCwgT3B0aW9uYWw8U2Vjb25kcz4sIHVpbnQ2NF90IGNvbnRleHRJZCk7CisgICAgdm9pZCBz
ZXRBZ2VDYXBGb3JDbGllbnRTaWRlQ29va2llcyhQQUw6OlNlc3Npb25JRCwgT3B0aW9uYWw8U2Vj
b25kcz4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBpc1JlZ2lzdGVy
ZWRBc1JlZGlyZWN0aW5nVG8oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcmVkaXJlY3Rl
ZEZyb20sIGNvbnN0IFN0cmluZyYgcmVkaXJlY3RlZFRvLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGJvb2wpPiYmKTsKICAgICB2b2lkIGlzUmVnaXN0ZXJlZEFzU3ViRnJhbWVVbmRlcihQQUw6OlNl
c3Npb25JRCwgY29uc3QgU3RyaW5nJiBzdWJmcmFtZSwgY29uc3QgU3RyaW5nJiB0b3BGcmFtZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBpc1JlZ2lzdGVyZWRB
c1N1YnJlc291cmNlVW5kZXIoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgc3VicmVzb3Vy
Y2UsIGNvbnN0IFN0cmluZyYgdG9wRnJhbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+
JiYpOwpAQCAtMTc4LDIyICsxODAsMjIgQEAgcHVibGljOgogICAgIHZvaWQgc2V0VmVyeVByZXZh
bGVudFJlc291cmNlKFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWlu
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0UHJ1bmVFbnRyaWVz
RG93blRvKFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCBwcnVuZVRhcmdldENvdW50LCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgaGFkVXNlckludGVyYWN0aW9uKFBBTDo6
U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wpPiYmKTsKLSAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZShQQUw6
OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwgY29uc3QgU3RyaW5nJiBm
aXJzdFBhcnR5RG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIHVpbnQ2
NF90IGNvbnRleHRJZCk7CisgICAgdm9pZCBoYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWUoUEFMOjpT
ZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFN0cmluZyYgZmly
c3RQYXJ0eURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAgICB2b2lkIGdldEFsbFN0b3JhZ2VBY2Nlc3NF
bnRyaWVzKFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCBjb250ZXh0SWQpOwotICAgIHZvaWQgZ3Jh
bnRTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHJlc291cmNlRG9t
YWluLCBjb25zdCBTdHJpbmcmIGZpcnN0UGFydHlEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBm
cmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIGJvb2wgdXNlcldhc1Byb21wdGVkLCB1aW50NjRfdCBj
b250ZXh0SWQpOworICAgIHZvaWQgZ3JhbnRTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklELCBj
b25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBjb25zdCBTdHJpbmcmIGZpcnN0UGFydHlEb21h
aW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIGJvb2wgdXNl
cldhc1Byb21wdGVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAgICB2b2lk
IGhhc1N0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VE
b21haW4sIGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwgT3B0aW9uYWw8dWludDY0X3Q+
IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
Jik7CiAgICAgdm9pZCBsb2dGcmFtZU5hdmlnYXRpb24oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0
cmluZyYgdGFyZ2V0UHJpbWFyeURvbWFpbiwgY29uc3QgU3RyaW5nJiBtYWluRnJhbWVQcmltYXJ5
RG9tYWluLCBjb25zdCBTdHJpbmcmIHNvdXJjZVByaW1hcnlEb21haW4sIGNvbnN0IFN0cmluZyYg
dGFyZ2V0SG9zdCwgY29uc3QgU3RyaW5nJiBtYWluRnJhbWVIb3N0LCBib29sIGlzUmVkaXJlY3Qs
IGJvb2wgaXNNYWluRnJhbWUpOwogICAgIHZvaWQgbG9nVXNlckludGVyYWN0aW9uKFBBTDo6U2Vz
c2lvbklELCBjb25zdCBTdHJpbmcmIHRhcmdldFByaW1hcnlEb21haW4sIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCByZW1vdmVBbGxTdG9yYWdlQWNjZXNzKFBBTDo6U2Vz
c2lvbklELCB1aW50NjRfdCBjb250ZXh0SWQpOworICAgIHZvaWQgcmVtb3ZlQWxsU3RvcmFnZUFj
Y2VzcyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2
b2lkIHJlbW92ZVByZXZhbGVudERvbWFpbnMoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBkb21haW5zKTsKLSAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzKFBBTDo6U2Vz
c2lvbklELCBjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBjb25zdCBTdHJpbmcmIGZpcnN0
UGFydHlEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQs
IGJvb2wgcHJvbXB0RW5hYmxlZCwgdWludDY0X3QgY29udGV4dElkKTsKLSAgICB2b2lkIHJlc2V0
Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoUEFMOjpTZXNzaW9uSUQsIHVpbnQ2
NF90IGNvbnRleHRJZCk7CisgICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Np
b25JRCwgY29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwgY29uc3QgU3RyaW5nJiBmaXJzdFBh
cnR5RG9tYWluLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBi
b29sIHByb21wdEVuYWJsZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1N0
YXR1cyk+JiYpOworICAgIHZvaWQgcmVzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291
cmNlcyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2
b2lkIHJlc2V0UGFyYW1ldGVyc1RvRGVmYXVsdFZhbHVlcyhQQUw6OlNlc3Npb25JRCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lkIHNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFu
ZFBlcnNpc3RlbnQoUEFMOjpTZXNzaW9uSUQsIE9wdGlvbmFsPFdhbGxUaW1lPiBtb2RpZmllZFNp
bmNlLCBib29sIHNob3VsZEdyYW5kZmF0aGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OworICAgIHZvaWQgc2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChQQUw6OlNlc3Np
b25JRCwgT3B0aW9uYWw8V2FsbFRpbWU+IG1vZGlmaWVkU2luY2UsIFNob3VsZEdyYW5kZmF0aGVy
U3RhdGlzdGljcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNjaGVk
dWxlQ29va2llQmxvY2tpbmdVcGRhdGUoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJik7CiAgICAgdm9pZCBzY2hlZHVsZVN0YXRpc3RpY3NBbmREYXRhUmVjb3Jkc1By
b2Nlc3NpbmcoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAg
ICAgdm9pZCBzdWJtaXRUZWxlbWV0cnkoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJik7Ci0gICAgdm9pZCBzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291
cmNlcyhQQUw6OlNlc3Npb25JRCwgU2Vjb25kcywgdWludDY0X3QgY29udGV4dElkKTsKKyAgICB2
b2lkIHNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKFBBTDo6U2Vzc2lvbklE
LCBTZWNvbmRzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0R3Jh
bmRmYXRoZXJpbmdUaW1lKFBBTDo6U2Vzc2lvbklELCBTZWNvbmRzLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0TGFzdFNlZW4oUEFMOjpTZXNzaW9uSUQsIGNvbnN0
IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIFNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7CiAgICAgdm9pZCBzZXRNaW5pbXVtVGltZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwo
UEFMOjpTZXNzaW9uSUQsIFNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1l
c3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5t
ZXNzYWdlcy5pbgppbmRleCA2MjU2NTgxMmFhZTY1MGEyYTBlNTU0NGQ3YTRkY2E2YzA0ZGI5NjQz
Li5hYTRmOGQ3ZWQ2NmJhNDc0YzRhMWY5MjA0NzI3NWM0MGRiM2NkZTM0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMu
aW4KQEAgLTEsNCArMSw0IEBACi0jIENvcHlyaWdodCAoQykgMjAxMi0yMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDEyLTIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC04
OSwzMyArODksMzMgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3MgTGVnYWN5UmVjZWl2ZXIg
ewogICAgIENsZWFyVXNlckludGVyYWN0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU3Ry
aW5nIHJlc291cmNlRG9tYWluKSAtPiAoKSBBc3luYwogICAgIER1bXBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgY29udGV4dElkKQogICAg
IFNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKGJvb2wgZW5hYmxlZCkKLSAgICBVcGRh
dGVQcmV2YWxlbnREb21haW5zVG9CbG9ja0Nvb2tpZXNGb3IoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBWZWN0b3I8U3RyaW5nPiBkb21haW5zVG9CbG9jaywgdWludDY0X3QgY29udGV4dElkKQor
ICAgIFVwZGF0ZVByZXZhbGVudERvbWFpbnNUb0Jsb2NrQ29va2llc0ZvcihQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIFZlY3RvcjxTdHJpbmc+IGRvbWFpbnNUb0Jsb2NrKSAtPiAoKSBBc3luYwog
ICAgIElzR3JhbmRmYXRoZXJlZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0cmluZyB0YXJn
ZXRQcmltYXJ5RG9tYWluKSAtPiAoYm9vbCBpc0dyYW5kZmF0aGVyZWQpIEFzeW5jCiAgICAgSXNQ
cmV2YWxlbnRSZXNvdXJjZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0cmluZyB0YXJnZXRQ
cmltYXJ5RG9tYWluKSAtPiAoYm9vbCBpc1ByZXZhbGVudCkgQXN5bmMKICAgICBJc1ZlcnlQcmV2
YWxlbnRSZXNvdXJjZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0cmluZyB0YXJnZXRQcmlt
YXJ5RG9tYWluKSAtPiAoYm9vbCBpc1ZlcnlQcmV2YWxlbnQpIEFzeW5jCi0gICAgU2V0QWdlQ2Fw
Rm9yQ2xpZW50U2lkZUNvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25hbDxT
ZWNvbmRzPiBzZWNvbmRzLCB1aW50NjRfdCBjb250ZXh0SWQpCisgICAgU2V0QWdlQ2FwRm9yQ2xp
ZW50U2lkZUNvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25hbDxTZWNvbmRz
PiBzZWNvbmRzKSAtPiAoKSBBc3luYwogICAgIFNldExhc3RTZWVuKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgU3RyaW5nIHJlc291cmNlRG9tYWluLCBTZWNvbmRzIHNlY29uZHMpIC0+ICgpIEFz
eW5jCiAgICAgU2V0UHJldmFsZW50UmVzb3VyY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBT
dHJpbmcgcmVzb3VyY2VEb21haW4pIC0+ICgpIEFzeW5jCiAgICAgU2V0UHJldmFsZW50UmVzb3Vy
Y2VGb3JEZWJ1Z01vZGUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTdHJpbmcgcmVzb3VyY2VE
b21haW4pIC0+ICgpIEFzeW5jCiAgICAgSGFkVXNlckludGVyYWN0aW9uKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgU3RyaW5nIHJlc291cmNlRG9tYWluKSAtPiAoYm9vbCBoYWRVc2VySW50ZXJh
Y3Rpb24pIEFzeW5jCi0gICAgSGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgU3RyaW5nIHJlc291cmNlRG9tYWluLCBTdHJpbmcgZmlyc3RQYXJ0eURvbWFp
biwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBjb250ZXh0SWQp
Ci0gICAgSGFzU3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0cmluZyBy
ZXNvdXJjZURvbWFpbiwgU3RyaW5nIGZpcnN0UGFydHlEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90
PiBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQpIC0+IChib29sIGhhZFVzZXJJbnRlcmFjdGlvbikg
QXN5bmMKKyAgICBIYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBTdHJpbmcgcmVzb3VyY2VEb21haW4sIFN0cmluZyBmaXJzdFBhcnR5RG9tYWluLCB1aW50
NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQpIC0+IChib29sIGhhc1N0b3JhZ2VBY2Nlc3Mp
IEFzeW5jCisgICAgSGFzU3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0
cmluZyByZXNvdXJjZURvbWFpbiwgU3RyaW5nIGZpcnN0UGFydHlEb21haW4sIE9wdGlvbmFsPHVp
bnQ2NF90PiBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQpIC0+IChib29sIGhhc1N0b3JhZ2VBY2Nl
c3MpIEFzeW5jCiAgICAgR2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCB1aW50NjRfdCBjb250ZXh0SWQpCi0gICAgR3JhbnRTdG9yYWdlQWNjZXNzKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU3RyaW5nIHJlc291cmNlRG9tYWluLCBTdHJpbmcgZmly
c3RQYXJ0eURvbWFpbiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJ
RCwgYm9vbCB1c2VyV2FzUHJvbXB0ZWQsIHVpbnQ2NF90IGNvbnRleHRJZCkKKyAgICBHcmFudFN0
b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTdHJpbmcgcmVzb3VyY2VEb21h
aW4sIFN0cmluZyBmaXJzdFBhcnR5RG9tYWluLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwg
dWludDY0X3QgcGFnZUlELCBib29sIHVzZXJXYXNQcm9tcHRlZCkgLT4gKGJvb2wgYWNjZXNzR3Jh
bnRlZCkgQXN5bmMKICAgICBJc1JlZ2lzdGVyZWRBc1JlZGlyZWN0aW5nVG8oUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBTdHJpbmcgcmVkaXJlY3RlZEZyb20sIFN0cmluZyByZWRpcmVjdGVkVG8p
IC0+IChib29sIGlzUmVkaXJlY3RpbmdUbykgQXN5bmMKICAgICBJc1JlZ2lzdGVyZWRBc1N1YkZy
YW1lVW5kZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTdHJpbmcgc3ViZnJhbWUsIFN0cmlu
ZyB0b3BGcmFtZSkgLT4gKGJvb2wgaXNTdWJmcmFtZVVuZGVyKSBBc3luYwogICAgIElzUmVnaXN0
ZXJlZEFzU3VicmVzb3VyY2VVbmRlcihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0cmluZyBz
dWJyZXNvdXJjZSwgU3RyaW5nIHRvcEZyYW1lKSAtPiAoYm9vbCBpc1N1YnJlc291cmNlVW5kZXIp
IEFzeW5jCiAgICAgTG9nRnJhbWVOYXZpZ2F0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
U3RyaW5nIHRhcmdldFByaW1hcnlEb21haW4sIFN0cmluZyBtYWluRnJhbWVQcmltYXJ5RG9tYWlu
LCBTdHJpbmcgc291cmNlUHJpbWFyeURvbWFpbiwgU3RyaW5nIHRhcmdldEhvc3QsIFN0cmluZyBt
YWluRnJhbWVIb3N0LCBib29sIGlzUmVkaXJlY3QsIGJvb2wgaXNNYWluRnJhbWUpCiAgICAgTG9n
VXNlckludGVyYWN0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU3RyaW5nIHRhcmdldFBy
aW1hcnlEb21haW4pIC0+ICgpIEFzeW5jCi0gICAgUmVtb3ZlQWxsU3RvcmFnZUFjY2VzcyhQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IGNvbnRleHRJZCkKKyAgICBSZW1vdmVBbGxT
dG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKCkgQXN5bmMKICAgICBS
ZW1vdmVQcmV2YWxlbnREb21haW5zKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVmVjdG9yPFN0
cmluZz4gZG9tYWluc1dpdGhJbnRlcmFjdGlvbikKLSAgICBSZXF1ZXN0U3RvcmFnZUFjY2VzcyhQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0cmluZyByZXNvdXJjZURvbWFpbiwgU3RyaW5nIGZp
cnN0UGFydHlEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1aW50NjRfdCBwYWdl
SUQsIGJvb2wgcHJvbXB0RW5hYmxlZCwgdWludDY0X3QgY29udGV4dElkKQorICAgIFJlcXVlc3RT
dG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU3RyaW5nIHJlc291cmNlRG9t
YWluLCBTdHJpbmcgZmlyc3RQYXJ0eURvbWFpbiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQs
IHVpbnQ2NF90IHBhZ2VJRCwgYm9vbCBwcm9tcHRFbmFibGVkKSAtPiAoZW51bTp1aW50OF90IFdl
YktpdDo6U3RvcmFnZUFjY2Vzc1N0YXR1cyBzdG9yYWdlQWNjZXNzU3RhdHVzKSBBc3luYwogICAg
IFJlc2V0UGFyYW1ldGVyc1RvRGVmYXVsdFZhbHVlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQp
IC0+ICgpIEFzeW5jCi0gICAgU2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvbmFsPFdhbGxUaW1lPiBtb2RpZmllZFNpbmNlLCBi
b29sIHNob3VsZEdyYW5kZmF0aGVyKSAtPiAoKSBBc3luYworICAgIFNjaGVkdWxlQ2xlYXJJbk1l
bW9yeUFuZFBlcnNpc3RlbnQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25hbDxXYWxs
VGltZT4gbW9kaWZpZWRTaW5jZSwgZW51bTpib29sIFdlYktpdDo6U2hvdWxkR3JhbmRmYXRoZXJT
dGF0aXN0aWNzIHNob3VsZEdyYW5kZmF0aGVyKSAtPiAoKSBBc3luYwogICAgIFNjaGVkdWxlQ29v
a2llQmxvY2tpbmdVcGRhdGUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoKSBBc3luYwog
ICAgIFNjaGVkdWxlU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzUHJvY2Vzc2luZyhQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQpIC0+ICgpIEFzeW5jCiAgICAgU3VibWl0VGVsZW1ldHJ5KFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCkgLT4gKCkgQXN5bmMKLSAgICBTZXRDYWNoZU1heEFnZUNhcEZvclBy
ZXZhbGVudFJlc291cmNlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFNlY29uZHMgc2Vjb25k
cywgdWludDY0X3QgY29udGV4dElkKQorICAgIFNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50
UmVzb3VyY2VzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU2Vjb25kcyBzZWNvbmRzKSAtPiAo
KSBBc3luYwogICAgIFNldEdyYW5kZmF0aGVyZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBT
dHJpbmcgcmVzb3VyY2VEb21haW4sIGJvb2wgaXNHcmFuZGZhdGhlcmVkKSAtPiAoKSBBc3luYwog
ICAgIFNldEdyYW5kZmF0aGVyaW5nVGltZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFNlY29u
ZHMgc2Vjb25kcykgLT4gKCkgQXN5bmMKICAgICBTZXRNYXhTdGF0aXN0aWNzRW50cmllcyhQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IG1heGltdW1FbnRyeUNvdW50KSAtPiAoKSBB
c3luYwpAQCAtMTMzLDcgKzEzMyw3IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzIExlZ2Fj
eVJlY2VpdmVyIHsKICAgICBTZXRUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgU2Vjb25kcyBzZWNvbmRzKSAtPiAoKSBBc3luYwogICAgIFNldFRvcEZy
YW1lVW5pcXVlUmVkaXJlY3RUbyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0cmluZyB0b3BG
cmFtZUhvc3ROYW1lLCBTdHJpbmcgaG9zdE5hbWVSZWRpcmVjdGVkVG8pIC0+ICgpIEFzeW5jCiAg
ICAgU2V0VG9wRnJhbWVVbmlxdWVSZWRpcmVjdEZyb20oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBTdHJpbmcgdG9wRnJhbWVIb3N0TmFtZSwgU3RyaW5nIGhvc3ROYW1lUmVkaXJlY3RlZEZyb20p
IC0+ICgpIEFzeW5jCi0gICAgUmVzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNl
cyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IGNvbnRleHRJZCkKKyAgICBSZXNl
dENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCkgLT4gKCkgQXN5bmMKICNlbmRpZgogCiAgICAgU2V0U2Vzc2lvbklzQ29udHJvbGxlZEJ5
QXV0b21hdGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGJvb2wgY29udHJvbGxlZCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3Rv
cmVSZWYuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0
b3JlUmVmLmNwcAppbmRleCBiYTMzM2M5ZjVmZDM1ZmQ4MjBlYjg1NWUwZjUyNTM3NmJlMmY0YzMx
Li4wNTM0OTNlOTg5ZWExY2IyN2RlMWFmNWFkN2Q3MjkzMGZmZGQxN2RkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5j
cHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJBUElBcnJheS5oIgogI2luY2x1ZGUgIkFQ
SVdlYnNpdGVEYXRhU3RvcmUuaCIKICNpbmNsdWRlICJNb2NrV2ViQXV0aGVudGljYXRpb25Db25m
aWd1cmF0aW9uLmgiCisjaW5jbHVkZSAiU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzLmgiCiAj
aW5jbHVkZSAiV0tBUElDYXN0LmgiCiAjaW5jbHVkZSAiV0tEaWN0aW9uYXJ5LmgiCiAjaW5jbHVk
ZSAiV0tOdW1iZXIuaCIKQEAgLTM3OCw3ICszNzksNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9y
ZVNldFN0YXRpc3RpY3NQcnVuZUVudHJpZXNEb3duVG8oV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRh
dAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFuZFBlcnNp
c3RlbnRTdG9yZShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCB2b2lkKiBjb250
ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3Rl
bnRTdG9yZUZ1bmN0aW9uIGNhbGxiYWNrKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NU
QVRJU1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFT
dG9yZSgpLnNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoU2hvdWxkR3JhbmRmYXRo
ZXI6OlllcywgW2NvbnRleHQsIGNhbGxiYWNrXSgpIHsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRh
U3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVy
c2lzdGVudChTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3M6OlllcywgW2NvbnRleHQsIGNhbGxi
YWNrXSgpIHsKICAgICAgICAgY2FsbGJhY2soY29udGV4dCk7CiAgICAgfSk7CiAjZWxzZQpAQCAt
Mzg5LDcgKzM5MCw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0NsZWFySW5N
ZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmUoV0tXZWJzaXRlRGF0YVN0CiB2b2lkIFdLV2Vic2l0ZURh
dGFTdG9yZVN0YXRpc3RpY3NDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudFN0b3JlTW9kaWZpZWRT
aW5jZUhvdXJzKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIHVuc2lnbmVkIGhv
dXJzLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzQ2xlYXJJbk1l
bW9yeUFuZFBlcnNpc3RlbnRTdG9yZU1vZGlmaWVkU2luY2VIb3Vyc0Z1bmN0aW9uIGNhbGxiYWNr
KQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0Ojp0
b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNjaGVkdWxlQ2xlYXJJbk1l
bW9yeUFuZFBlcnNpc3RlbnQoV2FsbFRpbWU6Om5vdygpIC0gU2Vjb25kczo6ZnJvbUhvdXJzKGhv
dXJzKSwgU2hvdWxkR3JhbmRmYXRoZXI6OlllcywgW2NvbnRleHQsIGNhbGxiYWNrXSgpIHsKKyAg
ICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2NoZWR1
bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChXYWxsVGltZTo6bm93KCkgLSBTZWNvbmRzOjpm
cm9tSG91cnMoaG91cnMpLCBTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3M6OlllcywgW2NvbnRl
eHQsIGNhbGxiYWNrXSgpIHsKICAgICAgICAgY2FsbGJhY2soY29udGV4dCk7CiAgICAgfSk7CiAj
ZW5kaWYKQEAgLTQyMSw3ICs0MjIsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3Rp
Y3NSZXNldFRvQ29uc2lzdGVudFN0YXRlKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYQogICAgIHN0
b3JlLmNsZWFyUmVzb3VyY2VMb2FkU3RhdGlzdGljc0luV2ViUHJvY2Vzc2VzKFtjYWxsYmFja0Fn
Z3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOwogICAgIHN0b3Jl
LnJlc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoW2NhbGxiYWNrQWdncmVn
YXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CiAgICAgc3RvcmUucmVz
ZXRQYXJhbWV0ZXJzVG9EZWZhdWx0VmFsdWVzKFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFj
a0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOwotICAgIHN0b3JlLnNjaGVkdWxlQ2xlYXJJbk1l
bW9yeUFuZFBlcnNpc3RlbnQoU2hvdWxkR3JhbmRmYXRoZXI6Ok5vLCBbY2FsbGJhY2tBZ2dyZWdh
dG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKKyAgICBzdG9yZS5zY2hl
ZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGlj
czo6Tm8sIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigp
XSB7IH0pOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZGF0YVN0b3JlUmVmKTsKICAgICBjb21w
bGV0aW9uSGFuZGxlcihjb250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IGNiMDYyZjVjODFjMzk2
ZWY3NWIxZGQ2MTBkNDQ5NDZhMDEwYTE0YjYuLjNiZWM5NThmYzZhY2VkNzcyOGYxN2E4NWMxMmE0
NjY1YjZlMGI1NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtMzcsNiArMzcsOCBAQAogI2luY2x1ZGUg
Ik5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiTmV0d29ya1By
b2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKKyNpbmNsdWRl
ICJTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3MuaCIKKyNpbmNsdWRlICJTdG9yYWdlQWNjZXNz
U3RhdHVzLmgiCiAjaW5jbHVkZSAiV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3QuaCIKICNpbmNs
dWRlICJXZWJQYWdlUHJveHkuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIKQEAg
LTIzNiwxOCArMjM4LDYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpjbGVhckNhbGxiYWNr
U3RhdGVzKCkKICAgICAgICAgbV9wZW5kaW5nRGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zQ2Fs
bGJhY2tzLnRha2UobV9wZW5kaW5nRGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zQ2FsbGJhY2tz
LmJlZ2luKCktPmtleSkoKTsKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1Mp
Ci0gICAgd2hpbGUgKCFtX3NjaGVkdWxlU3RhdGlzdGljc1Byb2Nlc3NpbmdDYWxsYmFja01hcC5p
c0VtcHR5KCkpCi0gICAgICAgIG1fc2NoZWR1bGVTdGF0aXN0aWNzUHJvY2Vzc2luZ0NhbGxiYWNr
TWFwLnRha2UobV9zY2hlZHVsZVN0YXRpc3RpY3NQcm9jZXNzaW5nQ2FsbGJhY2tNYXAuYmVnaW4o
KS0+a2V5KSgpOwotCi0gICAgd2hpbGUgKCFtX3N0b3JhZ2VBY2Nlc3NSZXNwb25zZUNhbGxiYWNr
TWFwLmlzRW1wdHkoKSkKLSAgICAgICAgbV9zdG9yYWdlQWNjZXNzUmVzcG9uc2VDYWxsYmFja01h
cC50YWtlKG1fc3RvcmFnZUFjY2Vzc1Jlc3BvbnNlQ2FsbGJhY2tNYXAuYmVnaW4oKS0+a2V5KShm
YWxzZSk7Ci0gICAgCi0gICAgd2hpbGUgKCFtX3N0b3JhZ2VBY2Nlc3NSZXF1ZXN0UmVzcG9uc2VD
YWxsYmFja01hcC5pc0VtcHR5KCkpCi0gICAgICAgIG1fc3RvcmFnZUFjY2Vzc1JlcXVlc3RSZXNw
b25zZUNhbGxiYWNrTWFwLnRha2UobV9zdG9yYWdlQWNjZXNzUmVxdWVzdFJlc3BvbnNlQ2FsbGJh
Y2tNYXAuYmVnaW4oKS0+a2V5KShTdG9yYWdlQWNjZXNzU3RhdHVzOjpDYW5ub3RSZXF1ZXN0QWNj
ZXNzKTsKLQotICAgIHdoaWxlICghbV9yZW1vdmVBbGxTdG9yYWdlQWNjZXNzQ2FsbGJhY2tNYXAu
aXNFbXB0eSgpKQotICAgICAgICBtX3JlbW92ZUFsbFN0b3JhZ2VBY2Nlc3NDYWxsYmFja01hcC50
YWtlKG1fcmVtb3ZlQWxsU3RvcmFnZUFjY2Vzc0NhbGxiYWNrTWFwLmJlZ2luKCktPmtleSkoKTsK
LQogICAgIHdoaWxlICghbV9hbGxTdG9yYWdlQWNjZXNzRW50cmllc0NhbGxiYWNrTWFwLmlzRW1w
dHkoKSkKICAgICAgICAgbV9hbGxTdG9yYWdlQWNjZXNzRW50cmllc0NhbGxiYWNrTWFwLnRha2Uo
bV9hbGxTdG9yYWdlQWNjZXNzRW50cmllc0NhbGxiYWNrTWFwLmJlZ2luKCktPmtleSkoeyB9KTsK
IApAQCAtMjkxLDEzICsyODEsMTMgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRDbG9z
ZShJUEM6OkNvbm5lY3Rpb24mKQogICAgIG1fc3luY0FsbENvb2tpZXNDb3VudGVyID0gMDsKIAog
I2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgZm9yIChhdXRvJiBjYWxs
YmFjayA6IG1fcmVtb3ZlQWxsU3RvcmFnZUFjY2Vzc0NhbGxiYWNrTWFwLnZhbHVlcygpKQotICAg
ICAgICBjYWxsYmFjaygpOwotICAgIG1fcmVtb3ZlQWxsU3RvcmFnZUFjY2Vzc0NhbGxiYWNrTWFw
LmNsZWFyKCk7CisgICAgZm9yIChhdXRvJiBjYWxsYmFjayA6IG1fYWxsU3RvcmFnZUFjY2Vzc0Vu
dHJpZXNDYWxsYmFja01hcC52YWx1ZXMoKSkKKyAgICAgICAgY2FsbGJhY2soeyB9KTsKKyAgICBt
X2FsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzQ2FsbGJhY2tNYXAuY2xlYXIoKTsKIAotICAgIGZvciAo
YXV0byYgY2FsbGJhY2sgOiBtX3NjaGVkdWxlU3RhdGlzdGljc1Byb2Nlc3NpbmdDYWxsYmFja01h
cC52YWx1ZXMoKSkKLSAgICAgICAgY2FsbGJhY2soKTsKLSAgICBtX3NjaGVkdWxlU3RhdGlzdGlj
c1Byb2Nlc3NpbmdDYWxsYmFja01hcC5jbGVhcigpOworICAgIGZvciAoYXV0byYgY2FsbGJhY2sg
OiBtX2R1bXBTdGF0aXN0aWNzQ2FsbGJhY2tNYXAudmFsdWVzKCkpCisgICAgICAgIGNhbGxiYWNr
KHsgfSk7CisgICAgbV9kdW1wU3RhdGlzdGljc0NhbGxiYWNrTWFwLmNsZWFyKCk7CiAjZW5kaWYK
IAogICAgIC8vIFRoaXMgd2lsbCBjYXVzZSB1cyB0byBiZSBkZWxldGVkLgpAQCAtNDUxLDE4ICs0
NDEsOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnVwZGF0ZVByZXZhbGVudERvbWFpbnNU
b0Jsb2NrQ29va2llc0ZvcihQQUw6OlNlc3Npb25JRAogICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cigpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIAotICAgIGF1dG8gY2FsbGJhY2tJZCA9
IGdlbmVyYXRlQ2FsbGJhY2tJRCgpOwotICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9zY2hlZHVsZVN0
YXRpc3RpY3NQcm9jZXNzaW5nQ2FsbGJhY2tNYXAuYWRkKGNhbGxiYWNrSWQsIFtwcm90ZWN0ZWRQ
cm9jZXNzUG9vbCA9IG1ha2VSZWYobV9wcm9jZXNzUG9vbCksIHRva2VuID0gdGhyb3R0bGVyKCku
YmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
KTsKLSAgICB9KTsKLSAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3
RW50cnkpOwotICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpVcGRhdGVQcmV2YWxl
bnREb21haW5zVG9CbG9ja0Nvb2tpZXNGb3Ioc2Vzc2lvbklELCBkb21haW5zVG9CbG9jaywgY2Fs
bGJhY2tJZCksIDApOwotfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZFVwZGF0ZUJs
b2NrQ29va2llcyh1aW50NjRfdCBjYWxsYmFja0lkKQotewotICAgIG1fc2NoZWR1bGVTdGF0aXN0
aWNzUHJvY2Vzc2luZ0NhbGxiYWNrTWFwLnRha2UoY2FsbGJhY2tJZCkoKTsKKyAgICBzZW5kV2l0
aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpVcGRhdGVQcmV2YWxlbnREb21h
aW5zVG9CbG9ja0Nvb2tpZXNGb3Ioc2Vzc2lvbklELCBkb21haW5zVG9CbG9jayksIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojppc1By
ZXZhbGVudFJlc291cmNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBy
ZXNvdXJjZURvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKQEAgLTU0NSwxNSArNTI1LDE0IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6
c2NoZWR1bGVDb29raWVCbG9ja2luZ1VwZGF0ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsCiAg
ICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6U2NoZWR1bGVD
b29raWVCbG9ja2luZ1VwZGF0ZShzZXNzaW9uSUQpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2NoZWR1bGVDbGVhckluTWVtb3J5
QW5kUGVyc2lzdGVudChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvbmFsPFdhbGxUaW1l
PiBtb2RpZmllZFNpbmNlLCBTaG91bGRHcmFuZGZhdGhlciBzaG91bGRHcmFuZGZhdGhlciwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3Jr
UHJvY2Vzc1Byb3h5OjpzY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgT3B0aW9uYWw8V2FsbFRpbWU+IG1vZGlmaWVkU2luY2UsIFNob3Vs
ZEdyYW5kZmF0aGVyU3RhdGlzdGljcyBzaG91bGRHcmFuZGZhdGhlciwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICghY2FuU2VuZE1lc3Nh
Z2UoKSkgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgYm9vbCBzaG91bGRHcmFuZGZhdGhlckJvb2wgPSBzaG91bGRHcmFuZGZhdGhl
ciA9PSBTaG91bGRHcmFuZGZhdGhlcjo6WWVzOwotICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNz
YWdlczo6TmV0d29ya1Byb2Nlc3M6OlNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQo
c2Vzc2lvbklELCBtb2RpZmllZFNpbmNlLCBzaG91bGRHcmFuZGZhdGhlckJvb2wpLCBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpO
ZXR3b3JrUHJvY2Vzczo6U2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChzZXNzaW9u
SUQsIG1vZGlmaWVkU2luY2UsIHNob3VsZEdyYW5kZmF0aGVyKSwgV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnNjaGVkdWxlU3RhdGlz
dGljc0FuZERhdGFSZWNvcmRzUHJvY2Vzc2luZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTYwMywxNyAr
NTgyLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRBZ2VDYXBGb3JDbGllbnRTaWRl
Q29va2llcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQKICAgICAgICAgcmV0dXJuOwogICAgIH0K
ICAgICAKLSAgICBhdXRvIGNhbGxiYWNrSWQgPSBnZW5lcmF0ZUNhbGxiYWNrSUQoKTsKLSAgICBh
dXRvIGFkZFJlc3VsdCA9IG1fc2NoZWR1bGVTdGF0aXN0aWNzUHJvY2Vzc2luZ0NhbGxiYWNrTWFw
LmFkZChjYWxsYmFja0lkLCBbcHJvdGVjdGVkUHJvY2Vzc1Bvb2wgPSBtYWtlUmVmKG1fcHJvY2Vz
c1Bvb2wpLCB0b2tlbiA9IHRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCksIGNv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7
Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7Ci0gICAgfSk7Ci0gICAgQVNTRVJUX1VOVVNF
RChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpO
ZXR3b3JrUHJvY2Vzczo6U2V0QWdlQ2FwRm9yQ2xpZW50U2lkZUNvb2tpZXMoc2Vzc2lvbklELCBz
ZWNvbmRzLCBjYWxsYmFja0lkKSwgMCk7Ci19Ci0KLXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6
ZGlkU2V0QWdlQ2FwRm9yQ2xpZW50U2lkZUNvb2tpZXModWludDY0X3QgY2FsbGJhY2tJZCkKLXsK
LSAgICBtX3NjaGVkdWxlU3RhdGlzdGljc1Byb2Nlc3NpbmdDYWxsYmFja01hcC50YWtlKGNhbGxi
YWNrSWQpKCk7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vz
czo6U2V0QWdlQ2FwRm9yQ2xpZW50U2lkZUNvb2tpZXMoc2Vzc2lvbklELCBzZWNvbmRzKSwgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6
OnNldFRpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBT
ZWNvbmRzIHNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKQEAgLTYyNiwxMSArNTk1LDYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRU
aW1lVG9MaXZlVXNlckludGVyYWN0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwKICAgICBz
ZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpTZXRUaW1lVG9MaXZl
VXNlckludGVyYWN0aW9uKHNlc3Npb25JRCwgc2Vjb25kcyksIFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRVcGRhdGVSdW50aW1l
U2V0dGluZ3ModWludDY0X3QgY2FsbGJhY2tJZCkKLXsKLSAgICBtX3VwZGF0ZVJ1bnRpbWVTZXR0
aW5nc0NhbGxiYWNrTWFwLnRha2UoY2FsbGJhY2tJZCkoKTsKLX0KLQogdm9pZCBOZXR3b3JrUHJv
Y2Vzc1Byb3h5OjpzZXROb3RpZnlQYWdlc1doZW5UZWxlbWV0cnlXYXNDYXB0dXJlZChQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIGJvb2wgdmFsdWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIWNhblNlbmRNZXNzYWdlKCkpIHsKQEAg
LTc2MSwxNyArNzI1LDE0IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0R3JhbmRmYXRo
ZXJlZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluCiAgICAgc2VuZFdpdGhB
c3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6U2V0R3JhbmRmYXRoZXJlZChzZXNz
aW9uSUQsIHJlc291cmNlRG9tYWluLCBpc0dyYW5kZmF0aGVyZWQpLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6aGFzU3RvcmFnZUFj
Y2Vzc0ZvckZyYW1lKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiByZXNv
dXJjZURvbWFpbiwgY29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9tYWluLCB1aW50NjRfdCBmcmFt
ZUlELCB1aW50NjRfdCBwYWdlSUQsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
JiBjYWxsYmFjaykKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6aGFzU3RvcmFnZUFjY2Vzc0Zv
ckZyYW1lKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiByZXNvdXJjZURv
bWFpbiwgY29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1
aW50NjRfdCBwYWdlSUQsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIWNhblNlbmRNZXNzYWdlKCkpIHsKLSAgICAgICAg
Y2FsbGJhY2soZmFsc2UpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIGNvbnRleHRJZCA9IGdlbmVyYXRlQ2FsbGJh
Y2tJRCgpOwotICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9zdG9yYWdlQWNjZXNzUmVzcG9uc2VDYWxs
YmFja01hcC5hZGQoY29udGV4dElkLCBXVEZNb3ZlKGNhbGxiYWNrKSk7Ci0gICAgQVNTRVJUX1VO
VVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKLSAgICBzZW5kKE1lc3NhZ2Vz
OjpOZXR3b3JrUHJvY2Vzczo6SGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKHNlc3Npb25JRCwgcmVz
b3VyY2VEb21haW4sIGZpcnN0UGFydHlEb21haW4sIGZyYW1lSUQsIHBhZ2VJRCwgY29udGV4dElk
KSwgMCk7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6
SGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKHNlc3Npb25JRCwgcmVzb3VyY2VEb21haW4sIGZpcnN0
UGFydHlEb21haW4sIGZyYW1lSUQsIHBhZ2VJRCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpoYXNTdG9yYWdlQWNjZXNzKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwgY29uc3Qg
U3RyaW5nJiBmaXJzdFBhcnR5RG9tYWluLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgdWlu
dDY0X3QgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQpAQCAtNzkxLDEwICs3NTIsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnJl
cXVlc3RTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBjb250ZXh0SWQgPSBnZW5lcmF0ZUNhbGxi
YWNrSUQoKTsKLSAgICBhdXRvIGFkZFJlc3VsdCA9IG1fc3RvcmFnZUFjY2Vzc1JlcXVlc3RSZXNw
b25zZUNhbGxiYWNrTWFwLmFkZChjb250ZXh0SWQsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KTsKLSAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOwot
ICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpSZXF1ZXN0U3RvcmFnZUFjY2Vzcyhz
ZXNzaW9uSUQsIHJlc291cmNlRG9tYWluLCBmaXJzdFBhcnR5RG9tYWluLCBmcmFtZUlELCBwYWdl
SUQsIHByb21wdEVuYWJsZWQsIGNvbnRleHRJZCksIDApOworICAgIHNlbmRXaXRoQXN5bmNSZXBs
eShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlJlcXVlc3RTdG9yYWdlQWNjZXNzKHNlc3Npb25J
RCwgcmVzb3VyY2VEb21haW4sIGZpcnN0UGFydHlEb21haW4sIGZyYW1lSUQsIHBhZ2VJRCwgcHJv
bXB0RW5hYmxlZCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAogdm9pZCBOZXR3
b3JrUHJvY2Vzc1Byb3h5OjpncmFudFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBjb25zdCBTdHJpbmcmIGZpcnN0UGFy
dHlEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIGJv
b2wgdXNlcldhc1Byb21wdGVkLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCkBAIC04MDQsMjAgKzc2Miw3IEBAIHZvaWQgTmV0d29ya1Byb2Nl
c3NQcm94eTo6Z3JhbnRTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29u
c3QgU3RyCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIGNvbnRleHRJZCA9IGdl
bmVyYXRlQ2FsbGJhY2tJRCgpOwotICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9zdG9yYWdlQWNjZXNz
UmVzcG9uc2VDYWxsYmFja01hcC5hZGQoY29udGV4dElkLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7Ci0gICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5
KTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6R3JhbnRTdG9yYWdlQWNjZXNz
KHNlc3Npb25JRCwgcmVzb3VyY2VEb21haW4sIGZpcnN0UGFydHlEb21haW4sIGZyYW1lSUQudmFs
dWUoKSwgcGFnZUlELCB1c2VyV2FzUHJvbXB0ZWQsIGNvbnRleHRJZCksIDApOwotfQotCi12b2lk
IE5ldHdvcmtQcm9jZXNzUHJveHk6OnN0b3JhZ2VBY2Nlc3NSZXF1ZXN0UmVzdWx0KHVuc2lnbmVk
IHN0YXR1cywgdWludDY0X3QgY29udGV4dElkKQotewotICAgIG1fc3RvcmFnZUFjY2Vzc1JlcXVl
c3RSZXNwb25zZUNhbGxiYWNrTWFwLnRha2UoY29udGV4dElkKShzdGF0aWNfY2FzdDxTdG9yYWdl
QWNjZXNzU3RhdHVzPihzdGF0dXMpKTsKLX0KLQotdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpz
dG9yYWdlQWNjZXNzT3BlcmF0aW9uUmVzdWx0KGJvb2wgd2FzR3JhbnRlZCwgdWludDY0X3QgY29u
dGV4dElkKQotewotICAgIG1fc3RvcmFnZUFjY2Vzc1Jlc3BvbnNlQ2FsbGJhY2tNYXAudGFrZShj
b250ZXh0SWQpKHdhc0dyYW50ZWQpOworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6
TmV0d29ya1Byb2Nlc3M6OkdyYW50U3RvcmFnZUFjY2VzcyhzZXNzaW9uSUQsIHJlc291cmNlRG9t
YWluLCBmaXJzdFBhcnR5RG9tYWluLCBmcmFtZUlELnZhbHVlKCksIHBhZ2VJRCwgdXNlcldhc1By
b21wdGVkKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCiB2b2lkIE5ldHdvcmtQ
cm9jZXNzUHJveHk6OnJlbW92ZUFsbFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC04
MjcsMTUgKzc3Miw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6cmVtb3ZlQWxsU3RvcmFn
ZUFjY2VzcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBhdXRvIGNvbnRleHRJZCA9IGdlbmVyYXRlQ2FsbGJhY2tJRCgpOwotICAg
IGF1dG8gYWRkUmVzdWx0ID0gbV9yZW1vdmVBbGxTdG9yYWdlQWNjZXNzQ2FsbGJhY2tNYXAuYWRk
KGNvbnRleHRJZCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotICAgIEFTU0VSVF9VTlVT
RUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7Ci0gICAgc2VuZChNZXNzYWdlczo6
TmV0d29ya1Byb2Nlc3M6OlJlbW92ZUFsbFN0b3JhZ2VBY2Nlc3Moc2Vzc2lvbklELCBjb250ZXh0
SWQpLCAwKTsKLX0KLQotdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRSZW1vdmVBbGxTdG9y
YWdlQWNjZXNzKHVpbnQ2NF90IGNvbnRleHRJZCkKLXsKLSAgICBtX3JlbW92ZUFsbFN0b3JhZ2VB
Y2Nlc3NDYWxsYmFja01hcC50YWtlKGNvbnRleHRJZCkoKTsKKyAgICBzZW5kV2l0aEFzeW5jUmVw
bHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpSZW1vdmVBbGxTdG9yYWdlQWNjZXNzKHNlc3Np
b25JRCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJv
Y2Vzc1Byb3h5OjpnZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcyhQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJiBkb21haW5zKT4m
JiBjYWxsYmFjaykKQEAgLTg2MywxNiArODAwLDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5
OjpzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhQQUw6OlNlc3Npb25JRAog
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAg
IAotICAgIGF1dG8gY29udGV4dElkID0gZ2VuZXJhdGVDYWxsYmFja0lEKCk7Ci0gICAgYXV0byBh
ZGRSZXN1bHQgPSBtX3VwZGF0ZVJ1bnRpbWVTZXR0aW5nc0NhbGxiYWNrTWFwLmFkZChjb250ZXh0
SWQsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLSAgICBBU1NFUlRfVU5VU0VEKGFkZFJl
c3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOwotICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQ
cm9jZXNzOjpTZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhzZXNzaW9uSUQs
IHNlY29uZHMsIGNvbnRleHRJZCksIDApOwotfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6
OmRpZFNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKHVpbnQ2NF90IGNvbnRl
eHRJZCkKLXsKLSAgICBtX3VwZGF0ZVJ1bnRpbWVTZXR0aW5nc0NhbGxiYWNrTWFwLnRha2UoY29u
dGV4dElkKSgpOworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nl
c3M6OlNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKHNlc3Npb25JRCwgc2Vj
b25kcyksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJv
Y2Vzc1Byb3h5OjpzZXRDYWNoZU1heEFnZUNhcChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFNl
Y29uZHMgc2Vjb25kcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQpAQCAtODgyLDEwICs4MTEsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnNldENh
Y2hlTWF4QWdlQ2FwKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU2Vjb25kcyBzZQogICAgICAg
ICByZXR1cm47CiAgICAgfQogICAgIAotICAgIGF1dG8gY29udGV4dElkID0gZ2VuZXJhdGVDYWxs
YmFja0lEKCk7Ci0gICAgYXV0byBhZGRSZXN1bHQgPSBtX3VwZGF0ZVJ1bnRpbWVTZXR0aW5nc0Nh
bGxiYWNrTWFwLmFkZChjb250ZXh0SWQsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLSAg
ICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOwotICAgIHNl
bmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpTZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVu
dFJlc291cmNlcyhzZXNzaW9uSUQsIHNlY29uZHMsIGNvbnRleHRJZCksIDApOworICAgIHNlbmRX
aXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlNldENhY2hlTWF4QWdlQ2Fw
Rm9yUHJldmFsZW50UmVzb3VyY2VzKHNlc3Npb25JRCwgc2Vjb25kcyksIFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRHcmFuZGZh
dGhlcmluZ1RpbWUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTZWNvbmRzIHNlY29uZHMsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTk1NSwxMCAr
ODgxLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZXNldENhY2hlTWF4QWdlQ2FwRm9y
UHJldmFsZW50UmVzb3VyY2VzKFBBTDo6U2Vzc2lvbkkKICAgICAgICAgcmV0dXJuOwogICAgIH0K
ICAgICAKLSAgICBhdXRvIGNvbnRleHRJZCA9IGdlbmVyYXRlQ2FsbGJhY2tJRCgpOwotICAgIGF1
dG8gYWRkUmVzdWx0ID0gbV91cGRhdGVSdW50aW1lU2V0dGluZ3NDYWxsYmFja01hcC5hZGQoY29u
dGV4dElkLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci0gICAgQVNTRVJUX1VOVVNFRChh
ZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3
b3JrUHJvY2Vzczo6UmVzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhzZXNz
aW9uSUQsIGNvbnRleHRJZCksIDApOworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6
TmV0d29ya1Byb2Nlc3M6OlJlc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMo
c2Vzc2lvbklEKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCiB2b2lkIE5ldHdv
cmtQcm9jZXNzUHJveHk6OnJlc2V0UGFyYW1ldGVyc1RvRGVmYXVsdFZhbHVlcyhQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKQEAgLTk4MSwxMyArOTA0LDEyIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c3Vi
bWl0VGVsZW1ldHJ5KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhCiAgICAg
c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6U3VibWl0VGVsZW1l
dHJ5KHNlc3Npb25JRCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBO
ZXR3b3JrUHJvY2Vzc1Byb3h5OjpzY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgYm9vbCBzaG91bGRHcmFuZGZhdGhlciwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3JrUHJvY2Vz
c1Byb3h5OjpzY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzIHNob3VsZEdyYW5kZmF0aGVy
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAg
aWYgKCFjYW5TZW5kTWVzc2FnZSgpKSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCiAKICAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVz
c2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpTY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50
KHNlc3Npb25JRCwgeyB9LCBzaG91bGRHcmFuZGZhdGhlciksIFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5LmgKaW5kZXggZTM1MWEwNmI3NWFkNzhlNTA5OTVmYTFmOGZkOGJi
YTM4ZWJiMGE5ZS4uZjA5OGQ4Y2RlNjZlNjk3ZTkwMjJjZGEwZDBhYTk5ODBmNzhlMGIxOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtNTcsNyArNTcsOCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIERvd25sb2Fk
UHJveHk7CiBjbGFzcyBEb3dubG9hZFByb3h5TWFwOwogY2xhc3MgV2ViUHJvY2Vzc1Bvb2w7Ci1l
bnVtIGNsYXNzIFN0b3JhZ2VBY2Nlc3NTdGF0dXMgOiB1bnNpZ25lZDsKK2VudW0gY2xhc3MgU2hv
dWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzIDogYm9vbDsKK2VudW0gY2xhc3MgU3RvcmFnZUFjY2Vz
c1N0YXR1cyA6IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIFdlYnNpdGVEYXRhRmV0Y2hPcHRpb247CiBl
bnVtIGNsYXNzIFdlYnNpdGVEYXRhVHlwZTsKIHN0cnVjdCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVyczsKQEAgLTEwNywxNSArMTA4LDE1IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFBy
ZXZhbGVudFJlc291cmNlKFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHJlc291cmNlRG9t
YWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0UHJldmFsZW50
UmVzb3VyY2VGb3JEZWJ1Z01vZGUoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcmVzb3Vy
Y2VEb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRWZXJ5
UHJldmFsZW50UmVzb3VyY2UoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VE
b21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBoYXNTdG9yYWdl
QWNjZXNzRm9yRnJhbWUoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21h
aW4sIGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWlu
dDY0X3QgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNrKTsK
KyAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZShQQUw6OlNlc3Npb25JRCwgY29uc3Qg
U3RyaW5nJiByZXNvdXJjZURvbWFpbiwgY29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9tYWluLCB1
aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYpOwogICAgIHZvaWQgZ2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMoUEFMOjpTZXNz
aW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJiBkb21haW5zKT4m
Jik7Ci0gICAgdm9pZCBncmFudFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0
cmluZyYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwgT3B0
aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgYm9vbCB1c2VyV2FzUHJv
bXB0ZWQsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBn
cmFudFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VE
b21haW4sIGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwgT3B0aW9uYWw8dWludDY0X3Q+
IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgYm9vbCB1c2VyV2FzUHJvbXB0ZWQsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIHZvaWQgaGFzU3RvcmFnZUFjY2VzcyhQQUw6
OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBzdWJGcmFtZUhvc3QsIGNvbnN0IFN0cmluZyYgdG9w
RnJhbWVIb3N0LCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAgICB2b2lkIHJlcXVlc3RTdG9yYWdl
QWNjZXNzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBjb25z
dCBTdHJpbmcmIGZpcnN0UGFydHlEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1
aW50NjRfdCBwYWdlSUQsIGJvb2wgcHJvbXB0RW5hYmxlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChTdG9yYWdlQWNjZXNzU3RhdHVzKT4mJik7CiAgICAgdm9pZCByZXNldFBhcmFtZXRlcnNUb0Rl
ZmF1bHRWYWx1ZXMoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7
CiAgICAgdm9pZCByZW1vdmVBbGxTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgc2NoZWR1bGVDbGVhckluTWVtb3J5QW5k
UGVyc2lzdGVudChQQUw6OlNlc3Npb25JRCwgYm9vbCBzaG91bGRHcmFuZGZhdGhlciwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lkIHNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFu
ZFBlcnNpc3RlbnQoUEFMOjpTZXNzaW9uSUQsIE9wdGlvbmFsPFdhbGxUaW1lPiBtb2RpZmllZFNp
bmNlLCBTaG91bGRHcmFuZGZhdGhlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAg
ICB2b2lkIHNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoUEFMOjpTZXNzaW9uSUQs
IFNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKKyAgICB2b2lkIHNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoUEFMOjpTZXNz
aW9uSUQsIE9wdGlvbmFsPFdhbGxUaW1lPiBtb2RpZmllZFNpbmNlLCBTaG91bGRHcmFuZGZhdGhl
clN0YXRpc3RpY3MsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzY2hl
ZHVsZUNvb2tpZUJsb2NraW5nVXBkYXRlKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc3VibWl0VGVsZW1ldHJ5KFBBTDo6U2Vzc2lvbklELCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0Q2FjaGVNYXhBZ2VDYXBG
b3JQcmV2YWxlbnRSZXNvdXJjZXMoUEFMOjpTZXNzaW9uSUQsIFNlY29uZHMsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJik7CkBAIC0xODUsMTQgKzE4Niw4IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBsb2dHbG9iYWxEaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1ZShjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIGRvdWJsZSB2YWx1ZSwgdW5zaWduZWQgc2ln
bmlmaWNhbnRGaWd1cmVzLCBXZWJDb3JlOjpTaG91bGRTYW1wbGUpOwogI2lmIEVOQUJMRShSRVNP
VVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgdm9pZCBkaWREdW1wUmVzb3VyY2VMb2FkU3RhdGlz
dGljcyhTdHJpbmcgZHVtcGVkU3RhdGlzdGljcywgdWludDY0X3QgY2FsbGJhY2tJZCk7Ci0gICAg
dm9pZCBkaWRVcGRhdGVCbG9ja0Nvb2tpZXModWludDY0X3QgY29udGV4dElkKTsKLSAgICB2b2lk
IGRpZFNldEFnZUNhcEZvckNsaWVudFNpZGVDb29raWVzKHVpbnQ2NF90IGNvbnRleHRJZCk7Ci0g
ICAgdm9pZCBzdG9yYWdlQWNjZXNzT3BlcmF0aW9uUmVzdWx0KGJvb2wgd2FzR3JhbnRlZCwgdWlu
dDY0X3QgY29udGV4dElkKTsKLSAgICB2b2lkIHN0b3JhZ2VBY2Nlc3NSZXF1ZXN0UmVzdWx0KHVu
c2lnbmVkIHdhc0dyYW50ZWQsIHVpbnQ2NF90IGNvbnRleHRJZCk7CiAgICAgdm9pZCBhbGxTdG9y
YWdlQWNjZXNzRW50cmllc1Jlc3VsdChWZWN0b3I8U3RyaW5nPiYmIGRvbWFpbnMsIHVpbnQ2NF90
IGNvbnRleHRJZCk7Ci0gICAgdm9pZCBkaWRSZW1vdmVBbGxTdG9yYWdlQWNjZXNzKHVpbnQ2NF90
IGNvbnRleHRJZCk7CiAgICAgdm9pZCBkaWRTZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJl
c291cmNlcyh1aW50NjRfdCBjb250ZXh0SWQpOwotICAgIHZvaWQgZGlkVXBkYXRlUnVudGltZVNl
dHRpbmdzKHVpbnQ2NF90IGNvbnRleHRJZCk7CiAgICAgdm9pZCBub3RpZnlSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzUHJvY2Vzc2VkKCk7CiAgICAgdm9pZCBub3RpZnlXZWJzaXRlRGF0YURlbGV0aW9u
Rm9yVG9wUHJpdmF0ZWx5T3duZWREb21haW5zRmluaXNoZWQoKTsKICAgICB2b2lkIG5vdGlmeVdl
YnNpdGVEYXRhU2NhbkZvclRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW5zRmluaXNoZWQoKTsK
QEAgLTI0MCwxNiArMjM1LDEwIEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9zeW5jQWxsQ29v
a2llc0NvdW50ZXIgeyAwIH07CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNT
KQotICAgIEhhc2hNYXA8dWludDY0X3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4+IG1fc2No
ZWR1bGVTdGF0aXN0aWNzUHJvY2Vzc2luZ0NhbGxiYWNrTWFwOwotICAgIEhhc2hNYXA8dWludDY0
X3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCB3YXNHcmFudGVkKT4+IG1fc3RvcmFnZUFj
Y2Vzc1Jlc3BvbnNlQ2FsbGJhY2tNYXA7Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzU3RhdHVzIHdhc0dyYW50ZWQpPj4gbV9zdG9yYWdl
QWNjZXNzUmVxdWVzdFJlc3BvbnNlQ2FsbGJhY2tNYXA7Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPj4gbV9yZW1vdmVBbGxTdG9yYWdlQWNjZXNzQ2FsbGJh
Y2tNYXA7CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0
b3I8U3RyaW5nPiYmIGRvbWFpbnMpPj4gbV9hbGxTdG9yYWdlQWNjZXNzRW50cmllc0NhbGxiYWNr
TWFwOwogICAgIEhhc2hNYXA8dWludDY0X3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qg
U3RyaW5nJik+PiBtX2R1bXBTdGF0aXN0aWNzQ2FsbGJhY2tNYXA7CiAjZW5kaWYKIAotICAgIEhh
c2hNYXA8dWludDY0X3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4+IG1fdXBkYXRlUnVudGlt
ZVNldHRpbmdzQ2FsbGJhY2tNYXA7Ci0KICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQog
ICAgIEhhc2hTZXQ8V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkqPiBtX3dlYlVzZXJDb250
ZW50Q29udHJvbGxlclByb3hpZXM7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5p
bgppbmRleCA4NGUwZThmNjQ0MTE4ZWM0NzM3NGUyZGNiMzhlNDNlYTEzYzg4ZTM1Li43Y2FhZTk1
ZjM1MzVkZDk2MzZkMmE5ODlhMjQzYTgwZjQyODRhMTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1l
c3NhZ2VzLmluCkBAIC00MiwxNCArNDIsNyBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2Vzc1By
b3h5IExlZ2FjeVJlY2VpdmVyIHsKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJ
Q1MpCiAgICAgRGlkRHVtcFJlc291cmNlTG9hZFN0YXRpc3RpY3MoU3RyaW5nIGR1bXBlZFN0YXRp
c3RpY3MsIHVpbnQ2NF90IGNhbGxiYWNrSWQpCi0gICAgRGlkVXBkYXRlQmxvY2tDb29raWVzKHVp
bnQ2NF90IGNhbGxiYWNrSWQpCi0gICAgRGlkU2V0QWdlQ2FwRm9yQ2xpZW50U2lkZUNvb2tpZXMo
dWludDY0X3QgY2FsbGJhY2tJZCkKLSAgICBTdG9yYWdlQWNjZXNzT3BlcmF0aW9uUmVzdWx0KGJv
b2wgd2FzR3JhbnRlZCwgdWludDY0X3QgY29udGV4dElkKQotICAgIFN0b3JhZ2VBY2Nlc3NSZXF1
ZXN0UmVzdWx0KHVuc2lnbmVkIHdhc0dyYW50ZWQsIHVpbnQ2NF90IGNvbnRleHRJZCkKICAgICBB
bGxTdG9yYWdlQWNjZXNzRW50cmllc1Jlc3VsdChWZWN0b3I8U3RyaW5nPiBkb21haW5zLCB1aW50
NjRfdCBjb250ZXh0SWQpCi0gICAgRGlkUmVtb3ZlQWxsU3RvcmFnZUFjY2Vzcyh1aW50NjRfdCBj
b250ZXh0SWQpCi0gICAgRGlkU2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMo
dWludDY0X3QgY29udGV4dElkKQotICAgIERpZFVwZGF0ZVJ1bnRpbWVTZXR0aW5ncyh1aW50NjRf
dCBjb250ZXh0SWQpCiAgICAgTm90aWZ5UmVzb3VyY2VMb2FkU3RhdGlzdGljc1Byb2Nlc3NlZCgp
CiAgICAgTm90aWZ5V2Vic2l0ZURhdGFEZWxldGlvbkZvclRvcFByaXZhdGVseU93bmVkRG9tYWlu
c0ZpbmlzaGVkKCkKICAgICBOb3RpZnlXZWJzaXRlRGF0YVNjYW5Gb3JUb3BQcml2YXRlbHlDb250
cm9sbGVkRG9tYWluc0ZpbmlzaGVkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCmluZGV4IGU3NGYzOGRjNTliNDAwZDQwMjZlMmNhZDNjNjU5ZTA1MjViNDNjOWEuLmEw
MGRiYmI4ZTcxMGM3YjI1Mzc2Y2I4OGFlYmJkMjc0ZjE2MTY1MjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtODEsNiArODEsNyBAQAogI2luY2x1ZGUgIlNh
ZmVCcm93c2luZ1dhcm5pbmcuaCIKICNpbmNsdWRlICJTaGFyZVNoZWV0Q2FsbGJhY2tJRC5oIgog
I2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJTdG9yYWdl
QWNjZXNzU3RhdHVzLmgiCiAjaW5jbHVkZSAiVGV4dENoZWNrZXIuaCIKICNpbmNsdWRlICJUZXh0
Q2hlY2tlclN0YXRlLmgiCiAjaW5jbHVkZSAiVUlNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5o
IgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IDIzYzU4
ZmE5ZDEwNThkYzBlMGM1YWYzYjMxYzY3OGZlNGNmYjI3ZmQuLmY5NTRiMzgwZjM1ZWQ3Y2U4NzVl
ZmFiNzczYmUwMWEzY2NlMTJmY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUG9vbC5jcHAKQEAgLTU5MSw5ICs1OTEsNiBAQCBOZXR3b3JrUHJvY2Vzc1Byb3h5JiBXZWJQ
cm9jZXNzUG9vbDo6ZW5zdXJlTmV0d29ya1Byb2Nlc3MoV2Vic2l0ZURhdGFTdG9yZSogd2l0aAog
ICAgICAgICAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+YWRkU2Vzc2lvbigqd2Vic2l0ZURhdGFTdG9y
ZSk7CiAgICAgfQogCi0gICAgaWYgKG1fd2Vic2l0ZURhdGFTdG9yZSkKLSAgICAgICAgbV93ZWJz
aXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuZGlkQ3JlYXRlTmV0d29ya1Byb2Nlc3Mo
KTsKLQogICAgIHJldHVybiAqbV9uZXR3b3JrUHJvY2VzczsKIH0KIApAQCAtMTAzNCw2ICsxMDMx
LDkgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cHJvY2Vzc0RpZEZpbmlzaExhdW5jaGluZyhXZWJQ
cm9jZXNzUHJveHkqIHByb2Nlc3MpCiAgICAgICAgIHByb2Nlc3MtPmNvbm5lY3Rpb24oKS0+aWdu
b3JlVGltZW91dHNGb3JUZXN0aW5nKCk7CiAKICAgICBtX2Nvbm5lY3Rpb25DbGllbnQuZGlkQ3Jl
YXRlQ29ubmVjdGlvbih0aGlzLCBwcm9jZXNzLT53ZWJDb25uZWN0aW9uKCkpOworCisgICAgaWYg
KG1fd2Vic2l0ZURhdGFTdG9yZSkKKyAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRl
RGF0YVN0b3JlKCkuZGlkQ3JlYXRlTmV0d29ya1Byb2Nlc3MoKTsKIH0KIAogdm9pZCBXZWJQcm9j
ZXNzUG9vbDo6ZGlzY29ubmVjdFByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFT
dG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0
YVN0b3JlLmNwcAppbmRleCAyYTE0YTVjMzI3OWY0ODI5OTVkNjdiOTgwOWVkNTNiZTVmZjAzODIy
Li5lN2VmNTc1NGUwYjM2MWY4ZjYxODhkNmRjZDBhMjg5OGMzZjU1YTQ2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3Jl
LmNwcApAQCAtMzMsNiArMzMsOCBAQAogI2luY2x1ZGUgIkRldmljZUlkSGFzaFNhbHRTdG9yYWdl
LmgiCiAjaW5jbHVkZSAiTW9ja0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiTmV0
d29ya1Byb2Nlc3NNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlNob3VsZEdyYW5kZmF0aGVyU3RhdGlz
dGljcy5oIgorI2luY2x1ZGUgIlN0b3JhZ2VBY2Nlc3NTdGF0dXMuaCIKICNpbmNsdWRlICJTdG9y
YWdlTWFuYWdlci5oIgogI2luY2x1ZGUgIldlYkNvb2tpZU1hbmFnZXJQcm94eS5oIgogI2luY2x1
ZGUgIldlYlByb2Nlc3NNZXNzYWdlcy5oIgpAQCAtOTM4LDcgKzk0MCw3IEBAIHZvaWQgV2Vic2l0
ZURhdGFTdG9yZTo6cmVtb3ZlRGF0YShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiBkYXRhVHlw
ZXMsIFdhbGxUaW1lCiAgICAgICAgIAogICAgICAgICAvLyBJZiB3ZSBhcmUgZGVsZXRpbmcgYWxs
IG9mIHRoZSBkYXRhIHR5cGVzIHRoYXQgdGhlIHJlc291cmNlIGxvYWQgc3RhdGlzdGljcyBzdG9y
ZSBtb25pdG9ycwogICAgICAgICAvLyB3ZSBkbyBub3QgbmVlZCB0byByZS1ncmFuZGZhdGhlciBv
bGQgZGF0YS4KLSAgICAgICAgYXV0byBzaG91bGRHcmFuZGZhdGhlciA9ICgobW9uaXRvcmVkVHlw
ZXNSYXcgJiBkZWxldGVkVHlwZXNSYXcpID09IG1vbml0b3JlZFR5cGVzUmF3KSA/IFNob3VsZEdy
YW5kZmF0aGVyOjpObyA6IFNob3VsZEdyYW5kZmF0aGVyOjpZZXM7CisgICAgICAgIGF1dG8gc2hv
dWxkR3JhbmRmYXRoZXIgPSAoKG1vbml0b3JlZFR5cGVzUmF3ICYgZGVsZXRlZFR5cGVzUmF3KSA9
PSBtb25pdG9yZWRUeXBlc1JhdykgPyBTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3M6Ok5vIDog
U2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzOjpZZXM7CiAgICAgICAgIAogICAgICAgICBpZiAo
bV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKSB7CiAgICAgICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0
b3ItPmFkZFBlbmRpbmdDYWxsYmFjaygpOwpAQCAtMTI0OCwxMSArMTI1MCwxMSBAQCB2b2lkIFdl
YnNpdGVEYXRhU3RvcmU6OnJlbW92ZURhdGEoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gZGF0
YVR5cGVzLCBjb25zdCBWZQogICAgICAgICAvLyB3ZSBkbyBub3QgbmVlZCB0byByZS1ncmFuZGZh
dGhlciBvbGQgZGF0YS4KICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5hZGRQZW5kaW5nQ2Fs
bGJhY2soKTsKICAgICAgICAgaWYgKChtb25pdG9yZWRUeXBlc1JhdyAmIGRlbGV0ZWRUeXBlc1Jh
dykgPT0gbW9uaXRvcmVkVHlwZXNSYXcpCi0gICAgICAgICAgICBtX3Jlc291cmNlTG9hZFN0YXRp
c3RpY3MtPnNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoU2hvdWxkR3JhbmRmYXRo
ZXI6Ok5vLCBbY2FsbGJhY2tBZ2dyZWdhdG9yXSB7CisgICAgICAgICAgICBtX3Jlc291cmNlTG9h
ZFN0YXRpc3RpY3MtPnNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoU2hvdWxkR3Jh
bmRmYXRoZXJTdGF0aXN0aWNzOjpObywgW2NhbGxiYWNrQWdncmVnYXRvcl0gewogICAgICAgICAg
ICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+cmVtb3ZlUGVuZGluZ0NhbGxiYWNrKCk7CiAgICAg
ICAgICAgICB9KTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzLT5zY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFNob3VsZEdyYW5kZmF0
aGVyOjpZZXMsIFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsKKyAgICAgICAgICAgIG1fcmVzb3VyY2VM
b2FkU3RhdGlzdGljcy0+c2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChTaG91bGRH
cmFuZGZhdGhlclN0YXRpc3RpY3M6OlllcywgW2NhbGxiYWNrQWdncmVnYXRvcl0gewogICAgICAg
ICAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+cmVtb3ZlUGVuZGluZ0NhbGxiYWNrKCk7CiAg
ICAgICAgICAgICB9KTsKIApAQCAtMTI4OCwxMCArMTI5MCw4IEBAIHZvaWQgV2Vic2l0ZURhdGFT
dG9yZTo6c2V0TWF4U3RhdGlzdGljc0VudHJpZXMoc2l6ZV90IG1heGltdW1FbnRyeUNvdW50LCBD
b21wbGV0CiAgICAgCiAgICAgYXV0byBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBDYWxsYmFja0FnZ3Jl
Z2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAKLSAgICBmb3IgKGF1
dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xzKCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHBy
b2Nlc3MgPSBwcm9jZXNzUG9vbC0+bmV0d29ya1Byb2Nlc3MoKSkKLSAgICAgICAgICAgIHByb2Nl
c3MtPnNldE1heFN0YXRpc3RpY3NFbnRyaWVzKG1fc2Vzc2lvbklELCBtYXhpbXVtRW50cnlDb3Vu
dCwgW3Byb2Nlc3NQb29sLCBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3Iu
Y29weVJlZigpXSB7IH0pOwotICAgIH0KKyAgICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDogcHJv
Y2Vzc1Bvb2xzKCkpCisgICAgICAgIHByb2Nlc3NQb29sLT5lbnN1cmVOZXR3b3JrUHJvY2Vzcygp
LnNldE1heFN0YXRpc3RpY3NFbnRyaWVzKG1fc2Vzc2lvbklELCBtYXhpbXVtRW50cnlDb3VudCwg
W3Byb2Nlc3NQb29sLCBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29w
eVJlZigpXSB7IH0pOwogfQogCiB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNldFBydW5lRW50cmll
c0Rvd25UbyhzaXplX3QgcHJ1bmVUYXJnZXRDb3VudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtMTMwNiw4ICsxMzA2LDcgQEAgdm9pZCBXZWJzaXRl
RGF0YVN0b3JlOjpzZXRQcnVuZUVudHJpZXNEb3duVG8oc2l6ZV90IHBydW5lVGFyZ2V0Q291bnQs
IENvbXBsZXRpb24KICAgICBhdXRvIGNhbGxiYWNrQWdncmVnYXRvciA9IENhbGxiYWNrQWdncmVn
YXRvcjo6Y3JlYXRlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIAogICAgIGZvciAoYXV0
byYgcHJvY2Vzc1Bvb2wgOiBwcm9jZXNzUG9vbHMoKSkgewotICAgICAgICBpZiAoYXV0byogcHJv
Y2VzcyA9IHByb2Nlc3NQb29sLT5uZXR3b3JrUHJvY2VzcygpKQotICAgICAgICAgICAgcHJvY2Vz
cy0+c2V0UHJ1bmVFbnRyaWVzRG93blRvKG1fc2Vzc2lvbklELCBwcnVuZVRhcmdldENvdW50LCBb
cHJvY2Vzc1Bvb2wsIGNhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5
UmVmKCldIHsgfSk7CisgICAgICAgIHByb2Nlc3NQb29sLT5lbnN1cmVOZXR3b3JrUHJvY2Vzcygp
LnNldFBydW5lRW50cmllc0Rvd25UbyhtX3Nlc3Npb25JRCwgcHJ1bmVUYXJnZXRDb3VudCwgW3By
b2Nlc3NQb29sLCBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJl
ZigpXSB7IH0pOwogICAgIH0KIH0KIApAQCAtMTMyMiwxMCArMTMyMSw4IEBAIHZvaWQgV2Vic2l0
ZURhdGFTdG9yZTo6c2V0R3JhbmRmYXRoZXJpbmdUaW1lKFNlY29uZHMgc2Vjb25kcywgQ29tcGxl
dGlvbkhhbmRsZXI8CiAgICAgCiAgICAgYXV0byBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBDYWxsYmFj
a0FnZ3JlZ2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAKLSAgICBm
b3IgKGF1dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xzKCkpIHsKLSAgICAgICAgaWYgKGF1
dG8qIHByb2Nlc3MgPSBwcm9jZXNzUG9vbC0+bmV0d29ya1Byb2Nlc3MoKSkKLSAgICAgICAgICAg
IHByb2Nlc3MtPnNldEdyYW5kZmF0aGVyaW5nVGltZShtX3Nlc3Npb25JRCwgc2Vjb25kcywgW3By
b2Nlc3NQb29sLCBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJl
ZigpXSB7IH0pOwotICAgIH0KKyAgICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vzc1Bv
b2xzKCkpCisgICAgICAgIHByb2Nlc3NQb29sLT5lbnN1cmVOZXR3b3JrUHJvY2VzcygpLnNldEdy
YW5kZmF0aGVyaW5nVGltZShtX3Nlc3Npb25JRCwgc2Vjb25kcywgW3Byb2Nlc3NQb29sLCBjYWxs
YmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOwogfQog
CiB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNldENhY2hlTWF4QWdlQ2FwKFNlY29uZHMgc2Vjb25k
cywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtMTM0
MCwxMCArMTMzNyw4IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6c2V0Q2FjaGVNYXhBZ2VDYXAo
U2Vjb25kcyBzZWNvbmRzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkCiAKICAgICBhdXRvIGNhbGxi
YWNrQWdncmVnYXRvciA9IENhbGxiYWNrQWdncmVnYXRvcjo6Y3JlYXRlKFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKIAotICAgIGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBwcm9jZXNzUG9v
bHMoKSkgewotICAgICAgICBpZiAoYXV0byogcHJvY2VzcyA9IHByb2Nlc3NQb29sLT5uZXR3b3Jr
UHJvY2VzcygpKQotICAgICAgICAgICAgcHJvY2Vzcy0+c2V0Q2FjaGVNYXhBZ2VDYXAobV9zZXNz
aW9uSUQsIHNlY29uZHMsIFtwcm9jZXNzUG9vbCwgY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJh
Y2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKLSAgICB9CisgICAgZm9yIChhdXRvJiBwcm9j
ZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKQorICAgICAgICBwcm9jZXNzUG9vbC0+ZW5zdXJlTmV0
d29ya1Byb2Nlc3MoKS5zZXRDYWNoZU1heEFnZUNhcChtX3Nlc3Npb25JRCwgc2Vjb25kcywgW3By
b2Nlc3NQb29sLCBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJl
ZigpXSB7IH0pOwogfQogCiB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNldE1pbmltdW1UaW1lQmV0
d2VlbkRhdGFSZWNvcmRzUmVtb3ZhbChTZWNvbmRzIHNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTEzNTcsMTAgKzEzNTIsOCBAQCB2b2lk
IFdlYnNpdGVEYXRhU3RvcmU6OnNldE1pbmltdW1UaW1lQmV0d2VlbkRhdGFSZWNvcmRzUmVtb3Zh
bChTZWNvbmRzIHNlY29uZHMsCiAgICAgCiAgICAgYXV0byBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBD
YWxsYmFja0FnZ3JlZ2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAK
LSAgICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xzKCkpIHsKLSAgICAgICAg
aWYgKGF1dG8qIHByb2Nlc3MgPSBwcm9jZXNzUG9vbC0+bmV0d29ya1Byb2Nlc3MoKSkKLSAgICAg
ICAgICAgIHByb2Nlc3MtPnNldE1pbmltdW1UaW1lQmV0d2VlbkRhdGFSZWNvcmRzUmVtb3ZhbCht
X3Nlc3Npb25JRCwgc2Vjb25kcywgW3Byb2Nlc3NQb29sLCBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBj
YWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOwotICAgIH0KKyAgICBmb3IgKGF1dG8m
IHByb2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xzKCkpCisgICAgICAgIHByb2Nlc3NQb29sLT5lbnN1
cmVOZXR3b3JrUHJvY2VzcygpLnNldE1pbmltdW1UaW1lQmV0d2VlbkRhdGFSZWNvcmRzUmVtb3Zh
bChtX3Nlc3Npb25JRCwgc2Vjb25kcywgW3Byb2Nlc3NQb29sLCBjYWxsYmFja0FnZ3JlZ2F0b3Ig
PSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOwogfQogICAgIAogdm9pZCBXZWJz
aXRlRGF0YVN0b3JlOjpkdW1wUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtMTQyMSw4ICsx
NDE0LDcgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzZXRQcmV2YWxlbnRSZXNvdXJjZShjb25z
dCBVUkwmIHVybCwgQ29tcGxldGlvbkhhbmRsZXI8dm8KICAgICBhdXRvIGNhbGxiYWNrQWdncmVn
YXRvciA9IENhbGxiYWNrQWdncmVnYXRvcjo6Y3JlYXRlKFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKIAogICAgIGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBwcm9jZXNzUG9vbHMoKSkgewot
ICAgICAgICBpZiAoYXV0byogcHJvY2VzcyA9IHByb2Nlc3NQb29sLT5uZXR3b3JrUHJvY2Vzcygp
KQotICAgICAgICAgICAgcHJvY2Vzcy0+c2V0UHJldmFsZW50UmVzb3VyY2UobV9zZXNzaW9uSUQs
IFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M6OnByaW1hcnlEb21haW4odXJsKSwgW3By
b2Nlc3NQb29sLCBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJl
ZigpXSB7IH0pOworICAgICAgICBwcm9jZXNzUG9vbC0+ZW5zdXJlTmV0d29ya1Byb2Nlc3MoKS5z
ZXRQcmV2YWxlbnRSZXNvdXJjZShtX3Nlc3Npb25JRCwgV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3Rh
dGlzdGljczo6cHJpbWFyeURvbWFpbih1cmwpLCBbcHJvY2Vzc1Bvb2wsIGNhbGxiYWNrQWdncmVn
YXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CiAgICAgfQogfQogCkBA
IC0xNTA0LDEwICsxNDk2LDggQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzZXRTaG91bGRDbGFz
c2lmeVJlc291cmNlc0JlZm9yZURhdGFSZWNvcmRzUmVtb3ZhbChib29sIHYKICAgICAKICAgICBh
dXRvIGNhbGxiYWNrQWdncmVnYXRvciA9IENhbGxiYWNrQWdncmVnYXRvcjo6Y3JlYXRlKFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIAotICAgIGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBw
cm9jZXNzUG9vbHMoKSkgewotICAgICAgICBpZiAoYXV0byogcHJvY2VzcyA9IHByb2Nlc3NQb29s
LT5uZXR3b3JrUHJvY2VzcygpKQotICAgICAgICAgICAgcHJvY2Vzcy0+c2V0U2hvdWxkQ2xhc3Np
ZnlSZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3Jkc1JlbW92YWwobV9zZXNzaW9uSUQsIHZhbHVlLCBb
cHJvY2Vzc1Bvb2wsIGNhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5
UmVmKCldIHsgfSk7Ci0gICAgfQorICAgIGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBwcm9jZXNz
UG9vbHMoKSkKKyAgICAgICAgcHJvY2Vzc1Bvb2wtPmVuc3VyZU5ldHdvcmtQcm9jZXNzKCkuc2V0
U2hvdWxkQ2xhc3NpZnlSZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3Jkc1JlbW92YWwobV9zZXNzaW9u
SUQsIHZhbHVlLCBbcHJvY2Vzc1Bvb2wsIGNhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdn
cmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CiB9CiAKIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6c2V0
U3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2luKGNvbnN0IFVSTCYgc3ViZnJhbWUsIGNvbnN0IFVS
TCYgdG9wRnJhbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKQEAgLTE3NTEsNyArMTc0MSw3IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6c3VibWl0VGVs
ZW1ldHJ5KCkKICAgICB9CiB9CiAKLXZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6c2NoZWR1bGVDbGVh
ckluTWVtb3J5QW5kUGVyc2lzdGVudChXYWxsVGltZSBtb2RpZmllZFNpbmNlLCBTaG91bGRHcmFu
ZGZhdGhlciBzaG91bGRHcmFuZGZhdGhlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzY2hlZHVsZUNsZWFySW5N
ZW1vcnlBbmRQZXJzaXN0ZW50KFdhbGxUaW1lIG1vZGlmaWVkU2luY2UsIFNob3VsZEdyYW5kZmF0
aGVyU3RhdGlzdGljcyBzaG91bGRHcmFuZGZhdGhlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7
CiAgICAgCkBAIC0xNzY4LDcgKzE3NTgsNyBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNjaGVk
dWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoV2FsbFRpbWUgbW9kaWZpZWRTaW5jZQogICAg
IH0KIH0KIAotdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQ
ZXJzaXN0ZW50KFNob3VsZEdyYW5kZmF0aGVyIHNob3VsZEdyYW5kZmF0aGVyLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYnNpdGVEYXRhU3Rv
cmU6OnNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoU2hvdWxkR3JhbmRmYXRoZXJT
dGF0aXN0aWNzIHNob3VsZEdyYW5kZmF0aGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKICAg
ICAKQEAgLTE4MzMsMTAgKzE4MjMsOCBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNldEFnZUNh
cEZvckNsaWVudFNpZGVDb29raWVzKE9wdGlvbmFsPFNlY29uZHM+IHNlY29uZHMsCiB7CiAgICAg
YXV0byBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBDYWxsYmFja0FnZ3JlZ2F0b3I6OmNyZWF0ZShXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgCi0gICAgZm9yIChhdXRvJiBwcm9jZXNzUG9v
bCA6IHByb2Nlc3NQb29scygpKSB7Ci0gICAgICAgIGlmIChhdXRvKiBwcm9jZXNzID0gcHJvY2Vz
c1Bvb2wtPm5ldHdvcmtQcm9jZXNzKCkpCi0gICAgICAgICAgICBwcm9jZXNzLT5zZXRBZ2VDYXBG
b3JDbGllbnRTaWRlQ29va2llcyhtX3Nlc3Npb25JRCwgc2Vjb25kcywgW3Byb2Nlc3NQb29sLCBj
YWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOwot
ICAgIH0KKyAgICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xzKCkpCisgICAg
ICAgIHByb2Nlc3NQb29sLT5lbnN1cmVOZXR3b3JrUHJvY2VzcygpLnNldEFnZUNhcEZvckNsaWVu
dFNpZGVDb29raWVzKG1fc2Vzc2lvbklELCBzZWNvbmRzLCBbcHJvY2Vzc1Bvb2wsIGNhbGxiYWNr
QWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CiB9CiAKIHZv
aWQgV2Vic2l0ZURhdGFTdG9yZTo6c2V0TGFzdFNlZW4oY29uc3QgVVJMJiB1cmwsIFNlY29uZHMg
c2Vjb25kcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpA
QCAtMTg2OSwxMCArMTg1Nyw4IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6c2V0Tm90aWZ5UGFn
ZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5lZChib29sIHZhbHVlLCBDb21wCiAKICAgICBhdXRv
IGNhbGxiYWNrQWdncmVnYXRvciA9IENhbGxiYWNrQWdncmVnYXRvcjo6Y3JlYXRlKFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKIAotICAgIGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBwcm9j
ZXNzUG9vbHMoKSkgewotICAgICAgICBpZiAoYXV0byogcHJvY2VzcyA9IHByb2Nlc3NQb29sLT5u
ZXR3b3JrUHJvY2VzcygpKQotICAgICAgICAgICAgcHJvY2Vzcy0+c2V0Tm90aWZ5UGFnZXNXaGVu
RGF0YVJlY29yZHNXZXJlU2Nhbm5lZChtX3Nlc3Npb25JRCwgdmFsdWUsIFtwcm9jZXNzUG9vbCwg
Y2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsK
LSAgICB9CisgICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKQorICAg
ICAgICBwcm9jZXNzUG9vbC0+ZW5zdXJlTmV0d29ya1Byb2Nlc3MoKS5zZXROb3RpZnlQYWdlc1do
ZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVkKG1fc2Vzc2lvbklELCB2YWx1ZSwgW3Byb2Nlc3NQb29s
LCBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0p
OwogfQogCiB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNldE5vdGlmeVBhZ2VzV2hlblRlbGVtZXRy
eVdhc0NhcHR1cmVkKGJvb2wgdmFsdWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKQEAgLTE4ODQsMTAgKzE4NzAsOCBAQCB2b2lkIFdlYnNpdGVEYXRhU3Rv
cmU6OnNldE5vdGlmeVBhZ2VzV2hlblRlbGVtZXRyeVdhc0NhcHR1cmVkKGJvb2wgdmFsdWUsIENv
bXBsZQogICAgIAogICAgIGF1dG8gY2FsbGJhY2tBZ2dyZWdhdG9yID0gQ2FsbGJhY2tBZ2dyZWdh
dG9yOjpjcmVhdGUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgIAotICAgIGZvciAo
YXV0byYgcHJvY2Vzc1Bvb2wgOiBwcm9jZXNzUG9vbHMoKSkgewotICAgICAgICBpZiAoYXV0byog
cHJvY2VzcyA9IHByb2Nlc3NQb29sLT5uZXR3b3JrUHJvY2VzcygpKQotICAgICAgICAgICAgcHJv
Y2Vzcy0+c2V0Tm90aWZ5UGFnZXNXaGVuVGVsZW1ldHJ5V2FzQ2FwdHVyZWQobV9zZXNzaW9uSUQs
IHZhbHVlLCBbcHJvY2Vzc1Bvb2wsIGNhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVn
YXRvci5jb3B5UmVmKCldIHsgfSk7Ci0gICAgfQorICAgIGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wg
OiBwcm9jZXNzUG9vbHMoKSkKKyAgICAgICAgcHJvY2Vzc1Bvb2wtPmVuc3VyZU5ldHdvcmtQcm9j
ZXNzKCkuc2V0Tm90aWZ5UGFnZXNXaGVuVGVsZW1ldHJ5V2FzQ2FwdHVyZWQobV9zZXNzaW9uSUQs
IHZhbHVlLCBbcHJvY2Vzc1Bvb2wsIGNhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVn
YXRvci5jb3B5UmVmKCldIHsgfSk7CiB9CiAKIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6aGFzU3Rv
cmFnZUFjY2Vzc0ZvckZyYW1lSGFuZGxlcihjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBj
b25zdCBTdHJpbmcmIGZpcnN0UGFydHlEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90
IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIGhhc0FjY2Vzcyk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCkBAIC0yMDE3LDEwICsyMDAxLDggQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3Jl
OjpzZXRUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uKFNlY29uZHMgc2Vjb25kcywgQ29tcGxldGlv
bkgKIAogICAgIGF1dG8gY2FsbGJhY2tBZ2dyZWdhdG9yID0gQ2FsbGJhY2tBZ2dyZWdhdG9yOjpj
cmVhdGUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgIAotICAgIGZvciAoYXV0byYg
cHJvY2Vzc1Bvb2wgOiBwcm9jZXNzUG9vbHMoKSkgewotICAgICAgICBpZiAoYXV0byogbmV0d29y
a1Byb2Nlc3MgPSBwcm9jZXNzUG9vbC0+bmV0d29ya1Byb2Nlc3MoKSkKLSAgICAgICAgICAgIG5l
dHdvcmtQcm9jZXNzLT5zZXRUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uKG1fc2Vzc2lvbklELCBz
ZWNvbmRzLCBbY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYo
KV0geyB9KTsKLSAgICB9CisgICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29s
cygpKQorICAgICAgICBwcm9jZXNzUG9vbC0+ZW5zdXJlTmV0d29ya1Byb2Nlc3MoKS5zZXRUaW1l
VG9MaXZlVXNlckludGVyYWN0aW9uKG1fc2Vzc2lvbklELCBzZWNvbmRzLCBbY2FsbGJhY2tBZ2dy
ZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKIH0KIAogdm9pZCBX
ZWJzaXRlRGF0YVN0b3JlOjpsb2dVc2VySW50ZXJhY3Rpb24oY29uc3QgVVJMJiB1cmwsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTIxNDEsMTAgKzIx
MjMsOCBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFs
ZW50UmVzb3VyY2VzKFNlY29uZHMgc2Vjb25kcywgQwogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FE
X1NUQVRJU1RJQ1MpCiAgICAgYXV0byBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBDYWxsYmFja0FnZ3Jl
Z2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgCi0gICAgZm9y
IChhdXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKSB7Ci0gICAgICAgIGlmIChhdXRv
KiBuZXR3b3JrUHJvY2VzcyA9IHByb2Nlc3NQb29sLT5uZXR3b3JrUHJvY2VzcygpKQotICAgICAg
ICAgICAgbmV0d29ya1Byb2Nlc3MtPnNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3Vy
Y2VzKG1fc2Vzc2lvbklELCBzZWNvbmRzLCBbY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tB
Z2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKLSAgICB9CisgICAgZm9yIChhdXRvJiBwcm9jZXNz
UG9vbCA6IHByb2Nlc3NQb29scygpKQorICAgICAgICBwcm9jZXNzUG9vbC0+ZW5zdXJlTmV0d29y
a1Byb2Nlc3MoKS5zZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhtX3Nlc3Np
b25JRCwgc2Vjb25kcywgW2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5j
b3B5UmVmKCldIHsgfSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShzZWNvbmRzKTsKICAgICBj
b21wbGV0aW9uSGFuZGxlcigpOwpAQCAtMjM3NiwxMCArMjM1Niw4IEBAIHZvaWQgV2Vic2l0ZURh
dGFTdG9yZTo6c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZShib29sIGVuYWJsZWQs
IENvbXBsZXRpCiAgICAgCiAgICAgYXV0byBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBDYWxsYmFja0Fn
Z3JlZ2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgCi0gICAg
Zm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKSB7Ci0gICAgICAgIGlmIChh
dXRvKiBwcm9jZXNzID0gcHJvY2Vzc1Bvb2wtPm5ldHdvcmtQcm9jZXNzKCkpCi0gICAgICAgICAg
ICBwcm9jZXNzLT5zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlKG1fc2Vzc2lvbklE
LCBlbmFibGVkLCBbY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlS
ZWYoKV0geyB9KTsKLSAgICB9CisgICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQ
b29scygpKQorICAgICAgICBwcm9jZXNzUG9vbC0+ZW5zdXJlTmV0d29ya1Byb2Nlc3MoKS5zZXRS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlKG1fc2Vzc2lvbklELCBlbmFibGVkLCBbY2Fs
bGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKICNl
bHNlCiAgICAgVU5VU0VEX1BBUkFNKGVuYWJsZWQpOwogICAgIFVOVVNFRF9QQVJBTShjb21wbGV0
aW9uSGFuZGxlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKaW5kZXggYzY1MDUyOGExYWJmMGZjZGI5NmQ1YjkxNjEw
YjJmYWI1MTE2MTRjYy4uZTUyOGY2ZGQzNmM4NzE2NDNkN2YyYWIwMWYzZjIzMTA1ZTJjZjE3MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURh
dGFTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNp
dGVEYXRhU3RvcmUuaApAQCAtNzIsOCArNzIsOCBAQCBzdHJ1Y3QgV2Vic2l0ZURhdGFSZWNvcmQ7
CiBzdHJ1Y3QgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnM7CiAKICNpZiBFTkFCTEUoUkVTT1VS
Q0VfTE9BRF9TVEFUSVNUSUNTKQotZW51bSBjbGFzcyBTaG91bGRHcmFuZGZhdGhlcjsKLWVudW0g
Y2xhc3MgU3RvcmFnZUFjY2Vzc1N0YXR1cyA6IHVuc2lnbmVkOworZW51bSBjbGFzcyBTaG91bGRH
cmFuZGZhdGhlclN0YXRpc3RpY3MgOiBib29sOworZW51bSBjbGFzcyBTdG9yYWdlQWNjZXNzU3Rh
dHVzIDogdWludDhfdDsKIGVudW0gY2xhc3MgU3RvcmFnZUFjY2Vzc1Byb21wdFN0YXR1czsKICNl
bmRpZgogCkBAIC0xNDMsOCArMTQzLDggQEAgcHVibGljOgogICAgIHZvaWQgcmVtb3ZlUHJldmFs
ZW50RG9tYWlucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWlucyk7CiAgICAgdm9pZCByZXNl
dFBhcmFtZXRlcnNUb0RlZmF1bHRWYWx1ZXMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
ICAgICB2b2lkIHNjaGVkdWxlQ29va2llQmxvY2tpbmdVcGRhdGUoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKTsKLSAgICB2b2lkIHNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQo
V2FsbFRpbWUgbW9kaWZpZWRTaW5jZSwgU2hvdWxkR3JhbmRmYXRoZXIsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBzY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0
ZW50KFNob3VsZEdyYW5kZmF0aGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAg
IHZvaWQgc2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChXYWxsVGltZSBtb2RpZmll
ZFNpbmNlLCBTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3MsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJik7CisgICAgdm9pZCBzY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFNo
b3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
ICAgICB2b2lkIHNjaGVkdWxlU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzUHJvY2Vzc2luZyhDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc3VibWl0VGVsZW1ldHJ5KCk7CiAg
ICAgdm9pZCBzZXRDYWNoZU1heEFnZUNhcChTZWNvbmRzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggYmU1MzMyNWEzNWQ0N2IxMDFlOTJkODJhMzY4NmJiYWNhN2IyNDQ2OC4uYTMzMjQ4
YmZmYTYxNjZlM2EyZWE4MmNmNDBjYzlkYzk3YTY3NjBmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMDkwLDggKzEwOTAsMTAgQEAK
IAkJNzVBOEQyQzgxODdDQ0ZBQjAwQzM5QzlFIC8qIFdLV2Vic2l0ZURhdGFTdG9yZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzVBOEQyQzQxODdDQ0Y5
RjAwQzM5QzlFIC8qIFdLV2Vic2l0ZURhdGFTdG9yZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFB1YmxpYywgKTsgfTsgfTsKIAkJNzVBOEQyRDYxODdEMUMwRTAwQzM5QzlFIC8qIFdL
V2Vic2l0ZURhdGFTdG9yZUludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3NUE4RDJENDE4N0QxQzAxMDBDMzlDOUUgLyogV0tXZWJzaXRlRGF0
YVN0b3JlSW50ZXJuYWwuaCAqLzsgfTsKIAkJNzYyQjc0OEQxMjBCQzc1QzAwODE5MzM5IC8qIFdL
UHJlZmVyZW5jZXNSZWZQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3NjJCNzQ4NDEyMEJCQTJEMDA4MTkzMzkgLyogV0tQcmVmZXJlbmNlc1Jl
ZlByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQk3QTExNjlEQjIxRjdENjhCMDBDMjRBNkUgLyogU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0
aWNzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTEx
NjlEQTIxRjdENjhBMDBDMjRBNkUgLyogU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzLmggKi87
IH07CiAJCTdBMUUyQTg1MUVFRkU4OTIwMDM3QTBFMCAvKiBBUElOb3RpZmljYXRpb25Qcm92aWRl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0ExRTJB
ODQxRUVGRTg4QTAwMzdBMEUwIC8qIEFQSU5vdGlmaWNhdGlvblByb3ZpZGVyLmggKi87IH07CiAJ
CTdBM0FDRTFCMUVFRUY3OUIwMEE4NjRBNCAvKiBBUElJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJD
bGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdB
M0FDRTFBMUVFRUY3OEMwMEE4NjRBNCAvKiBBUElJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGll
bnQuaCAqLzsgfTsKKwkJN0EzRkVDQTIyMUY3QzA5NzAwRjI2N0NEIC8qIFN0b3JhZ2VBY2Nlc3NT
dGF0dXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdB
M0ZFQ0ExMjFGN0MwOTcwMEYyNjdDRCAvKiBTdG9yYWdlQWNjZXNzU3RhdHVzLmggKi87IH07CiAJ
CTdBNzcyQzhEMURERDRBMjUwMDBGMzRGMSAvKiBjb20uYXBwbGUuV2ViS2l0LnBsdWdpbi1jb21t
b24uc2IgaW4gQ29weSBQbHVnLWluIFNhbmRib3ggUHJvZmlsZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gN0ExNTA2NzIxREQ1NjI5ODAwMUY0QjU4IC8qIGNvbS5hcHBsZS5X
ZWJLaXQucGx1Z2luLWNvbW1vbi5zYiAqLzsgfTsKIAkJN0E3OTFFRkExQzdDRkNGMTAwQzRDNTJC
IC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTc5MUVGOTFDN0NG
QjM3MDBDNEM1MkIgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlTWVzc2FnZVJlY2Vp
dmVyLmNwcCAqLzsgfTsKIAkJN0E3OTFFRkIxQzdDRkQwMTAwQzRDNTJCIC8qIFdlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3QTc5MUVGODFDN0NGQjEwMDBDNEM1MkIgLyogV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlTWVzc2FnZXMuaCAqLzsgfTsKQEAgLTM1MDUsOSArMzUwNywx
MSBAQAogCQk3NUE4RDJDNTE4N0NDRjlGMDBDMzlDOUUgLyogV0tXZWJzaXRlRGF0YVN0b3JlLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tXZWJzaXRlRGF0YVN0
b3JlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3NUE4RDJENDE4N0QxQzAxMDBD
MzlDOUUgLyogV0tXZWJzaXRlRGF0YVN0b3JlSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV0tXZWJzaXRlRGF0YVN0b3JlSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNzYyQjc0ODQxMjBCQkEyRDAwODE5MzM5IC8qIFdLUHJlZmVyZW5j
ZXNSZWZQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLUHJlZmVy
ZW5jZXNSZWZQcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdBMTE2OURB
MjFGN0Q2OEEwMEMyNEE2RSAvKiBTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3MuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzLmg7
IHBhdGggPSBDbGFzc2lmaWVyL1Nob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljcy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3QTE1MDY3MjFERDU2Mjk4MDAxRjRCNTggLyogY29tLmFw
cGxlLldlYktpdC5wbHVnaW4tY29tbW9uLnNiICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9ICJjb20u
YXBwbGUuV2ViS2l0LnBsdWdpbi1jb21tb24uc2IiOyBwYXRoID0gIkRlcml2ZWRTb3VyY2VzL1dl
YktpdDIvY29tLmFwcGxlLldlYktpdC5wbHVnaW4tY29tbW9uLnNiIjsgc291cmNlVHJlZSA9IEJV
SUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJN0ExRTJBODQxRUVGRTg4QTAwMzdBMEUwIC8qIEFQSU5v
dGlmaWNhdGlvblByb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQ
SU5vdGlmaWNhdGlvblByb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdB
M0FDRTFBMUVFRUY3OEMwMEE4NjRBNCAvKiBBUElJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGll
bnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJSW5qZWN0ZWRCdW5kbGVQ
YWdlTG9hZGVyQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdBM0ZFQ0Ex
MjFGN0MwOTcwMEYyNjdDRCAvKiBTdG9yYWdlQWNjZXNzU3RhdHVzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IFN0b3JhZ2VBY2Nlc3NTdGF0dXMuaDsgcGF0aCA9IENsYXNzaWZp
ZXIvU3RvcmFnZUFjY2Vzc1N0YXR1cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
QTVFMzk0OTFENUJEOEE3MDBCNEI3Q0UgLyogY29tLm1hY3JvbWVkaWEuRmxhc2ggUGxheWVyIEVT
Ui5wbHVnaW4uc2IgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gImNvbS5tYWNyb21lZGlhLkZsYXNo
IFBsYXllciBFU1IucGx1Z2luLnNiIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0E3
OTFFRjgxQzdDRkIxMDAwQzRDNTJCIC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZU1l
c3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZU1lc3NhZ2VzLmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQy
L1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZU1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSBC
VUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTdBNzkxRUY5MUM3Q0ZCMzcwMEM0QzUyQiAvKiBXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmVNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
TWVzc2FnZVJlY2VpdmVyLmNwcDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9
IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKQEAgLTY4ODYsNiArNjg5MCw4IEBACiAJCQkJN0FGQkQz
NjUyMUU1MUJBQjAwNURCQUNCIC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5o
ICovLAogCQkJCTdBRkJEMzY5MjFFNTQyRTgwMDVEQkFDQiAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzUGVyc2lzdGVudFN0b3JhZ2UuY3BwICovLAogCQkJCTdBRkJEMzY4MjFFNTQyRTgwMDVEQkFD
QiAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UuaCAqLywKKwkJCQk3
QTExNjlEQTIxRjdENjhBMDBDMjRBNkUgLyogU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzLmgg
Ki8sCisJCQkJN0EzRkVDQTEyMUY3QzA5NzAwRjI2N0NEIC8qIFN0b3JhZ2VBY2Nlc3NTdGF0dXMu
aCAqLywKIAkJCQk3QTg0M0ExQTIxRTQxRkIyMDBERUY2NjMgLyogV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlLmNwcCAqLywKIAkJCQk3QUZCRDM2MjIxRTUwRjM5MDA1REJBQ0IgLyogV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmggKi8sCiAJCQkJN0FGQkQzNkMyMUU1NDU0NDAw
NURCQUNCIC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0cnkuY3BwICovLApAQCAt
OTI5MCwxMSArOTI5NiwxMyBAQAogCQkJCTgzMTNGN0VFMUY3REFFMDgwMEI5NDRFQiAvKiBTaGFy
ZWRTdHJpbmdIYXNoVGFibGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzRjk2NDRFMUZBMEY3NkUw
MEM0Nzc1MCAvKiBTaGFyZWRTdHJpbmdIYXNoVGFibGVSZWFkT25seS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMUQ2N0IzMzkyMTJFMUY2MTAwRkFBNzg2IC8qIFNoYXJlU2hlZXRDYWxsYmFja0lELmgg
aW4gSGVhZGVycyAqLywKKwkJCQk3QTExNjlEQjIxRjdENjhCMDBDMjRBNkUgLyogU2hvdWxkR3Jh
bmRmYXRoZXJTdGF0aXN0aWNzLmggaW4gSGVhZGVycyAqLywKIAkJCQk5OTUyMjZENjIwN0QxODQ2
MDBGNzg0MjAgLyogU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkyREFGMDZENjE4QkQxQTQ3MDA4MUNFQjEgLyogU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkRFNjk0M0UxOEJEMkE2ODAwNUMxNUU1IC8qIFNtYXJ0
TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTI3
MkIyOEIxNDA2OTg1RDAwOTZBNUQwIC8qIFN0YXRpc3RpY3NEYXRhLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1MTRCREVEMzE2Qzk4RUREMDBFNEUyNUUgLyogU3RhdGlzdGljc1JlcXVlc3QuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTdBM0ZFQ0EyMjFGN0MwOTcwMEYyNjdDRCAvKiBTdG9yYWdlQWNjZXNz
U3RhdHVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUQzMzA2RjE2QjFEOTkxMDA0RjYwRTcgLyog
U3RvcmFnZUFyZWFJbXBsLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUNFQ0QyNTE3MTYyREIxMDAx
RkM5RUYgLyogU3RvcmFnZUFyZWFNYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMzM0REVFMTZE
RThGODgwMDZBOEUzOCAvKiBTdG9yYWdlQXJlYU1hcE1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>359805</attachid>
            <date>2019-01-22 16:30:13 -0800</date>
            <delta_ts>2019-01-22 17:06:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-193659-20190122163012.patch</filename>
            <type>text/plain</type>
            <size>87651</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQwMzA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDY3Y2IzYTFmMGJmYTc2ZmIx
YTA5YjkwMTk1YmI1YmFiYTBmYjlmY2MuLjI3OGNlOTEwYTczNWE2NjNhODVkYmU5OTk1NTZiZGE2
Y2Q5NDkyNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTUgQEAKKzIwMTktMDEtMjIgIEJyZW50IEZ1
bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CisKKyAgICAgICAgU3dpdGNoIE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiBwb3J0aW9ucyBvZiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIHRvIEFzeW5jIG1l
c3NhZ2UgcGFzc2luZyBzdHlsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTkzNjU5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80NzQzMzI5MD4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDaGFuZ2UgdGhl
IGltcGxlbWVudGF0aW9ucyBvZiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIGNvZGUgaW4gTmV0d29y
a1N0b3JhZ2VTZXNzaW9uIHRvIHVzZSB0aGUKKyAgICAgICAgJ3NlbmRXaXRoQXN5bmNSZXBseScg
c28gdGhhdCBtb3JlIG9mIHRoZSBjb2RlIGlzIGF1dG9nZW5lcmF0ZWQuIFRoaXMgc2hvdWxkIG1h
a2UgdGVzdCBydW5zIG1vcmUKKyAgICAgICAgY29uc2lzdGVudCwgYW5kIHNob3VsZCByZWR1Y2Ug
dGhlIHBvc3NpYmlsaXR5IG9mIGJvb2trZWVwaW5nIGVycm9ycyBpbiB0aGUgbWVzc2FnZSBoYW5k
bGluZworICAgICAgICBpbXBsZW1lbnRhdGlvbnMuCisKKyAgICAgICAgRml4IHRoZSBpbXBsZW1l
bnRhdGlvbiBvZiBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRDbG9zZSB0byBjbGVhbiB1cCB0d28g
bWFudWFsbHkgY29uc3RydWN0ZWQKKyAgICAgICAgbWVzc2FnZSBjYWxsYmFja3MgdGhhdCB3ZXJl
IGltcHJvcGVybHkgd3JpdHRlbiAoYSBiaWcgcGFydCBvZiB0aGUgcmVhc29uIHRvIG1vdmUgdG8g
dXNpbmcKKyAgICAgICAgJ3NlbmRXaXRoQXN5bmNSZXBseScpLgorCisgICAgICAgIFRoaXMgcGF0
Y2ggYWxzbyBtb3ZlcyBhbiBpbml0aWFsaXphdG9uIGNhbGwgKFdlYnNpdGVEYXRhU3RvcmU6OmRp
ZENyZWF0ZU5ldHdvcmtQcm9jZXNzKSBmcm9tCisgICAgICAgICdlbnN1cmVOZXR3b3JrUHJvY2Vz
cycgdG8gJ3Byb2Nlc3NEaWRGaW5pc2hMYXVuY2hpbmcnLiBJbiBjdXJyZW50IGNvZGUsIHRoZSBj
YWxsIGhhcHBlbnMgYmVmb3JlCisgICAgICAgIGEgY29ubmVjdGlvbiBpcyBlc3RhYmxpc2hlZCB0
byB0aGUgbmV0d29yayBwcm9jZXNzLCBjYXVzaW5nIGluaXRpYWxpemF0aW9uIG1lc3NhZ2VzIHRv
IGdldCBkcm9wcGVkCisgICAgICAgIGxlYWRpbmcgdG8gdGVzdCBzeXN0ZW0gZmxha2luZXNzLgor
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0
aWNzTWVtb3J5U3RvcmUuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIv
U2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzLmg6IEFkZGVkLgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL0NsYXNzaWZpZXIvU3RvcmFnZUFjY2Vzc1N0YXR1cy5oOiBBZGRlZC4KKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6
c2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudCk6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaDoKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtQcm9jZXNzOjp1cGRhdGVQcmV2YWxlbnREb21haW5zVG9CbG9ja0Nvb2tpZXNGb3Ip
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2V0QWdlQ2FwRm9yQ2xpZW50U2lk
ZUNvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2NoZWR1bGVDbGVh
ckluTWVtb3J5QW5kUGVyc2lzdGVudCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNz
OjpoYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzczo6Z3JhbnRTdG9yYWdlQWNjZXNzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3M6OnJlbW92ZUFsbFN0b3JhZ2VBY2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzczo6c2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cmVzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJl
c291cmNlcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRl
RGF0YSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcDoKKyAgICAgICAgKFdL
V2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudFN0b3Jl
KToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NDbGVhckluTWVtb3J5QW5k
UGVyc2lzdGVudFN0b3JlTW9kaWZpZWRTaW5jZUhvdXJzKToKKyAgICAgICAgKFdLV2Vic2l0ZURh
dGFTdG9yZVN0YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVudFN0YXRlKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Byb2Nlc3NQcm94eTo6Y2xlYXJDYWxsYmFja1N0YXRlcyk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZENsb3NlKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Byb2Nlc3NQcm94eTo6dXBkYXRlUHJldmFsZW50RG9tYWluc1RvQmxvY2tDb29raWVzRm9y
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6c2NoZWR1bGVDbGVhcklu
TWVtb3J5QW5kUGVyc2lzdGVudCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJv
eHk6OnNldEFnZUNhcEZvckNsaWVudFNpZGVDb29raWVzKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Byb2Nlc3NQcm94eTo6aGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpncmFudFN0b3JhZ2VBY2Nlc3MpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZW1vdmVBbGxTdG9yYWdlQWNjZXNz
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0Q2FjaGVNYXhBZ2VD
YXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vz
c1Byb3h5OjpzZXRDYWNoZU1heEFnZUNhcCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzUHJveHk6OnJlc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRVcGRhdGVCbG9ja0Nvb2tpZXMp
OiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRTZXRB
Z2VDYXBGb3JDbGllbnRTaWRlQ29va2llcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtQcm9jZXNzUHJveHk6OmRpZFVwZGF0ZVJ1bnRpbWVTZXR0aW5ncyk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OnN0b3JhZ2VBY2Nlc3NSZXF1ZXN0
UmVzdWx0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6
c3RvcmFnZUFjY2Vzc09wZXJhdGlvblJlc3VsdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZFJlbW92ZUFsbFN0b3JhZ2VBY2Nlc3MpOiBEZWxldGVk
LgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRTZXRDYWNoZU1heEFn
ZUNhcEZvclByZXZhbGVudFJlc291cmNlcyk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmVuc3VyZU5ldHdvcmtQcm9jZXNz
KTogTW92ZSBXZWJzaXRlRGF0YVN0b3JlICdkaWRDcmVhdGVOZXR3b3JrUHJvY2VzcycKKyAgICAg
ICAgdG8gJ3Byb2Nlc3NEaWRGaW5pc2hMYXVuY2hpbmcnLiBDdXJyZW50bHkgdGhlIGNhbGwgaGFw
cGVucyBiZWZvcmUgYSBjb25uZWN0aW9uIGlzIGVzdGFibGlzaGVkLAorICAgICAgICBjYXVzaW5n
IGluaXRpYWxpemF0aW9uIG1lc3NhZ2VzIHRvIGdldCBkcm9wcGVkLgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzUG9vbDo6cHJvY2Vzc0RpZEZpbmlzaExhdW5jaGluZyk6IERpdHRvLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6cmVtb3ZlRGF0YSk6CisgICAgICAgIChXZWJL
aXQ6OldlYnNpdGVEYXRhU3RvcmU6OnNldE1heFN0YXRpc3RpY3NFbnRyaWVzKToKKyAgICAgICAg
KFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6c2V0UHJ1bmVFbnRyaWVzRG93blRvKToKKyAgICAg
ICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6c2V0R3JhbmRmYXRoZXJpbmdUaW1lKToKKyAg
ICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6c2V0Q2FjaGVNYXhBZ2VDYXApOgorICAg
ICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpzZXRNaW5pbXVtVGltZUJldHdlZW5EYXRh
UmVjb3Jkc1JlbW92YWwpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpzZXRQ
cmV2YWxlbnRSZXNvdXJjZSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnNl
dFNob3VsZENsYXNzaWZ5UmVzb3VyY2VzQmVmb3JlRGF0YVJlY29yZHNSZW1vdmFsKToKKyAgICAg
ICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6c2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVy
c2lzdGVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnNldEFnZUNhcEZv
ckNsaWVudFNpZGVDb29raWVzKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6
c2V0Tm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5lZCk6CisgICAgICAgIChXZWJL
aXQ6OldlYnNpdGVEYXRhU3RvcmU6OnNldE5vdGlmeVBhZ2VzV2hlblRlbGVtZXRyeVdhc0NhcHR1
cmVkKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6c2V0VGltZVRvTGl2ZVVz
ZXJJbnRlcmFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnNldENh
Y2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
c2l0ZURhdGFTdG9yZTo6c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZSk6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaDoKKyAgICAgICAg
KiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxOS0wMS0yMiAgTWljaGFl
bCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGlnYWxpYS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdl
ZCwgZnVydGhlciBidWlsZCBmaXhlcyBhZnRlciByMjQwMjkyCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01l
bW9yeVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9S
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuY3BwCmluZGV4IDc2ODViNmUzM2M2MmYx
YjhlOTRkMzg2NTcxOWJmMTVjYmJhN2YwZDYuLjk3NDRkNDgzNDVjMTg1M2Y4YWM2MDUzNzE4MTRj
N2FiZTM1MmVhNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xh
c3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNz
TWVtb3J5U3RvcmUuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiUGx1Z2luUHJvY2Vz
c01hbmFnZXIuaCIKICNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzUHJveHkuaCIKICNpbmNsdWRlICJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UuaCIKKyNpbmNsdWRlICJTdG9y
YWdlQWNjZXNzU3RhdHVzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAjaW5jbHVk
ZSAiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeS5oIgogI2luY2x1ZGUgIldlYnNp
dGVEYXRhU3RvcmUuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Q2xhc3NpZmllci9TaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3MuaCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9TaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3MuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4xMDVjMjdkZTA0NDgwZjQxMmFiZmJjZmY4M2E3MDk4NzBhYjRkNGU2Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1No
b3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljcy5oCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2VudW0gY2xhc3MgU2hvdWxk
R3JhbmRmYXRoZXJTdGF0aXN0aWNzIDogYm9vbCB7CisgICAgTm8sCisgICAgWWVzLAorfTsKKyAg
ICAKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKK25hbWVzcGFjZSBXVEYgeworICAgIAordGVt
cGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJLaXQ6OlNob3VsZEdyYW5kZmF0aGVyU3RhdGlz
dGljcz4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgV2ViS2l0OjpTaG91
bGRHcmFuZGZhdGhlclN0YXRpc3RpY3MsCisgICAgV2ViS2l0OjpTaG91bGRHcmFuZGZhdGhlclN0
YXRpc3RpY3M6Ok5vLAorICAgIFdlYktpdDo6U2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzOjpZ
ZXMKKyAgICA+OworfTsKKyAgICAKK30gLy8gbmFtZXNwYWNlIFdURgorCisKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9TdG9yYWdlQWNjZXNzU3Rh
dHVzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvU3RvcmFnZUFj
Y2Vzc1N0YXR1cy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcwYjZhMjkzMzYyYmZlNDNkMTNhNDUzYWMzMTYwY2Zi
NzNlYzhhMzUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0NsYXNzaWZpZXIvU3RvcmFnZUFjY2Vzc1N0YXR1cy5oCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2VudW0gY2xhc3Mg
U3RvcmFnZUFjY2Vzc1N0YXR1cyA6IHVpbnQ4X3QgeworICAgIENhbm5vdFJlcXVlc3RBY2Nlc3Ms
CisgICAgUmVxdWlyZXNVc2VyUHJvbXB0LAorICAgIEhhc0FjY2VzcworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CisKK25hbWVzcGFjZSBXVEYgeworICAgIAordGVtcGxhdGU8PiBzdHJ1Y3Qg
RW51bVRyYWl0czxXZWJLaXQ6OlN0b3JhZ2VBY2Nlc3NTdGF0dXM+IHsKKyAgICB1c2luZyB2YWx1
ZXMgPSBFbnVtVmFsdWVzPAorICAgIFdlYktpdDo6U3RvcmFnZUFjY2Vzc1N0YXR1cywKKyAgICBX
ZWJLaXQ6OlN0b3JhZ2VBY2Nlc3NTdGF0dXM6OkNhbm5vdFJlcXVlc3RBY2Nlc3MsCisgICAgV2Vi
S2l0OjpTdG9yYWdlQWNjZXNzU3RhdHVzOjpSZXF1aXJlc1VzZXJQcm9tcHQsCisgICAgV2ViS2l0
OjpTdG9yYWdlQWNjZXNzU3RhdHVzOjpIYXNBY2Nlc3MKKyAgICA+OworfTsKKyAgICAKK30gLy8g
bmFtZXNwYWNlIFdURgorCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZS5jcHAKaW5kZXggOGU3NzM1YWJmNzc5ZmZkZGU4ZWE3NTAyZWJhM2Q1ZTBjMDE2OTBh
OC4uYTU3OTlhZDA2ZjUzYmZhMTZhMzcwNGU2ZjJhZTVkNDdmOGUxZjhlOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFz
c2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKQEAgLTMzLDYgKzMzLDgg
QEAKICNpbmNsdWRlICJOZXR3b3JrU2Vzc2lvbi5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZFN0
YXRpc3RpY3NNZW1vcnlTdG9yZS5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZFN0YXRpc3RpY3NQ
ZXJzaXN0ZW50U3RvcmFnZS5oIgorI2luY2x1ZGUgIlNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGlj
cy5oIgorI2luY2x1ZGUgIlN0b3JhZ2VBY2Nlc3NTdGF0dXMuaCIKICNpbmNsdWRlICJXZWJGcmFt
ZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vz
c01lc3NhZ2VzLmgiCkBAIC0xMDEwLDcgKzEwMTIsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZTo6c2NoZWR1bGVDbGVhckJsb2NraW5nU3RhdGVGb3JEb21haW5zKGNvbnN0
CiAgICAgfSk7CiB9CiAKLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzY2hl
ZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFNob3VsZEdyYW5kZmF0aGVyIHNob3VsZEdy
YW5kZmF0aGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2NoZWR1bGVDbGVhckluTWVt
b3J5QW5kUGVyc2lzdGVudChTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3Mgc2hvdWxkR3JhbmRm
YXRoZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsK
ICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogICAgIHBvc3RUYXNrKFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHNob3VsZEdyYW5kZmF0aGVyLCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewpAQCAtMTAy
Myw3ICsxMDI1LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNjaGVk
dWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoU2hvdWxkR3IKIAogICAgICAgICBpZiAobV9t
ZW1vcnlTdG9yZSkgewogICAgICAgICAgICAgbV9tZW1vcnlTdG9yZS0+Y2xlYXIoW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBwcm90ZWN0ZWRUaGlzLmNvcHlSZWYoKSwgc2hvdWxkR3JhbmRmYXRoZXIs
IGNvbXBsZXRpb25IYW5kbGVyQ2FsbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlckNhbGxl
cildICgpIG11dGFibGUgewotICAgICAgICAgICAgICAgIGlmIChzaG91bGRHcmFuZGZhdGhlciA9
PSBTaG91bGRHcmFuZGZhdGhlcjo6WWVzKSB7CisgICAgICAgICAgICAgICAgaWYgKHNob3VsZEdy
YW5kZmF0aGVyID09IFNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljczo6WWVzKSB7CiAgICAgICAg
ICAgICAgICAgICAgIGlmIChtX21lbW9yeVN0b3JlKQogICAgICAgICAgICAgICAgICAgICAgICAg
bV9tZW1vcnlTdG9yZS0+Z3JhbmRmYXRoZXJFeGlzdGluZ1dlYnNpdGVEYXRhKGNvbXBsZXRpb25I
YW5kbGVyQ2FsbGVyLnJlbGVhc2UoKSk7CiAgICAgICAgICAgICAgICAgICAgIGVsc2UKQEAgLTEw
MzEsMTMgKzEwMzMsMTMgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNj
aGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoU2hvdWxkR3IKICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmIChz
aG91bGRHcmFuZGZhdGhlciA9PSBTaG91bGRHcmFuZGZhdGhlcjo6WWVzKQorICAgICAgICAgICAg
aWYgKHNob3VsZEdyYW5kZmF0aGVyID09IFNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljczo6WWVz
KQogICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HKFJlc291cmNlTG9hZFN0YXRpc3RpY3MsICJX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBl
cnNpc3RlbnQgQmVmb3JlIGJlaW5nIGNsZWFyZWQsIG1fbWVtb3J5U3RvcmUgaXMgbnVsbCB3aGVu
IHRyeWluZyB0byBncmFuZGZhdGhlciBkYXRhLiIpOwogICAgICAgICB9CiAgICAgfSk7CiB9CiAK
LXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzY2hlZHVsZUNsZWFySW5NZW1v
cnlBbmRQZXJzaXN0ZW50KFdhbGxUaW1lIG1vZGlmaWVkU2luY2UsIFNob3VsZEdyYW5kZmF0aGVy
IHNob3VsZEdyYW5kZmF0aGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY2FsbGJhY2sp
Cit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2NoZWR1bGVDbGVhckluTWVt
b3J5QW5kUGVyc2lzdGVudChXYWxsVGltZSBtb2RpZmllZFNpbmNlLCBTaG91bGRHcmFuZGZhdGhl
clN0YXRpc3RpY3Mgc2hvdWxkR3JhbmRmYXRoZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
JiBjYWxsYmFjaykKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNz
aWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKaW5kZXggMjUxYjM5MjViYWI1
YWM0MDJhOGNlNGQ3Zjk0MmUxMDI2YjQ2Zjc2Yy4uM2M4YTQ1Y2JlMGMxZDdjMDVkOTVkODM4NTMy
YmYwMGUyMTQ4N2Y4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9D
bGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUuaApAQCAtMjgsNiArMjgsOCBAQAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJ
U1RJQ1MpCiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiU2hvdWxkR3JhbmRm
YXRoZXJTdGF0aXN0aWNzLmgiCisjaW5jbHVkZSAiU3RvcmFnZUFjY2Vzc1N0YXR1cy5oIgogI2lu
Y2x1ZGUgIldlYnNpdGVEYXRhVHlwZS5oIgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxl
ci5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CkBAIC01NiwxNyArNTgsNiBAQCBjbGFzcyBX
ZWJGcmFtZVByb3h5OwogY2xhc3MgV2ViUHJvY2Vzc1Byb3h5OwogY2xhc3MgV2Vic2l0ZURhdGFT
dG9yZTsKIAotZW51bSBjbGFzcyBTdG9yYWdlQWNjZXNzU3RhdHVzIDogdW5zaWduZWQgewotICAg
IENhbm5vdFJlcXVlc3RBY2Nlc3MsCi0gICAgUmVxdWlyZXNVc2VyUHJvbXB0LAotICAgIEhhc0Fj
Y2VzcwotfTsKLQotZW51bSBjbGFzcyBTaG91bGRHcmFuZGZhdGhlciB7Ci0gICAgTm8sCi0gICAg
WWVzLAotfTsKLQogY2xhc3MgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlIGZpbmFsIDog
cHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZSwgV1RGOjpEZXN0cnVjdGlvblRocmVhZDo6TWFpbj4sIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNl
aXZlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmU+IGNyZWF0ZShXZWJzaXRlRGF0YVN0b3JlJiB3ZWJzaXRlRGF0YVN0b3JlKQpAQCAtMTU1
LDggKzE0Niw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNjaGVkdWxlU3RhdGlzdGljc0FuZERhdGFS
ZWNvcmRzUHJvY2Vzc2luZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQg
c3VibWl0VGVsZW1ldHJ5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCB1
cGRhdGVQcmV2YWxlbnREb21haW5zVG9CbG9ja0Nvb2tpZXNGb3IoY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGRvbWFpbnNUb0Jsb2NrKTsKLSAgICB2b2lkIHNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBl
cnNpc3RlbnQoU2hvdWxkR3JhbmRmYXRoZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7
Ci0gICAgdm9pZCBzY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFdhbGxUaW1lIG1v
ZGlmaWVkU2luY2UsIFNob3VsZEdyYW5kZmF0aGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOworICAgIHZvaWQgc2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChTaG91bGRH
cmFuZGZhdGhlclN0YXRpc3RpY3MsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAg
dm9pZCBzY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFdhbGxUaW1lIG1vZGlmaWVk
U2luY2UsIFNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljcywgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKIAogICAgIHZvaWQgc2V0VGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbihTZWNvbmRz
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0TWluaW11bVRpbWVC
ZXR3ZWVuRGF0YVJlY29yZHNSZW1vdmFsKFNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
Y3BwCmluZGV4IDU5ZjZhMDcwMmQwMjg4ZWI0ODFiMzk1NDMxN2JlMzQwYmJjYTY0YmUuLmRjNmNj
ZGUxYzc2NzA2Y2EwMTAyMzkyYTA2ZWM0NDlhOWJlMzU3ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC00OSw3ICs0OSw5IEBACiAj
aW5jbHVkZSAiTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJQ
cmVjb25uZWN0VGFzay5oIgogI2luY2x1ZGUgIlJlbW90ZU5ldHdvcmtpbmdDb250ZXh0LmgiCisj
aW5jbHVkZSAiU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzLmgiCiAjaW5jbHVkZSAiU3RhdGlz
dGljc0RhdGEuaCIKKyNpbmNsdWRlICJTdG9yYWdlQWNjZXNzU3RhdHVzLmgiCiAjaW5jbHVkZSAi
V2ViQ29va2llTWFuYWdlci5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCiAj
aW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2xNZXNzYWdlcy5oIgpAQCAtNjA4LDExICs2MTAsMTEgQEAg
dm9pZCBOZXR3b3JrUHJvY2Vzczo6ZHVtcFJlc291cmNlTG9hZFN0YXRpc3RpY3MoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCB1aW50NjQKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9
CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OnVwZGF0ZVByZXZhbGVudERvbWFpbnNUb0Jsb2NrQ29v
a2llc0ZvcihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBk
b21haW5zVG9CbG9jaywgdWludDY0X3QgY29udGV4dElkKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6
dXBkYXRlUHJldmFsZW50RG9tYWluc1RvQmxvY2tDb29raWVzRm9yKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb0Jsb2NrLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKGF1dG8qIG5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiA9IHN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCiAgICAgICAg
IG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+c2V0UHJldmFsZW50RG9tYWluc1RvQmxvY2tDb29raWVz
Rm9yKGRvbWFpbnNUb0Jsb2NrKTsKLSAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpEaWRVcGRhdGVCbG9ja0Nvb2tpZXMoY29u
dGV4dElkKSwgMCk7CisgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKIH0KIAogdm9pZCBOZXR3b3Jr
UHJvY2Vzczo6aXNHcmFuZGZhdGhlcmVkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3Qg
U3RyaW5nJiB0YXJnZXRQcmltYXJ5RG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtNjQyLDExICs2NDQsMTEgQEAgdm9pZCBOZXR3b3Jr
UHJvY2Vzczo6aXNWZXJ5UHJldmFsZW50UmVzb3VyY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBjb25zdCBTdHIKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgTmV0
d29ya1Byb2Nlc3M6OnNldEFnZUNhcEZvckNsaWVudFNpZGVDb29raWVzKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgT3B0aW9uYWw8U2Vjb25kcz4gc2Vjb25kcywgdWludDY0X3QgY29udGV4dElk
KQordm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0QWdlQ2FwRm9yQ2xpZW50U2lkZUNvb2tpZXMoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25hbDxTZWNvbmRzPiBzZWNvbmRzLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKGF1dG8q
IG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IHN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCiAgICAg
ICAgIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+c2V0QWdlQ2FwRm9yQ2xpZW50U2lkZUNvb2tpZXMo
c2Vjb25kcyk7Ci0gICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6
TmV0d29ya1Byb2Nlc3NQcm94eTo6RGlkU2V0QWdlQ2FwRm9yQ2xpZW50U2lkZUNvb2tpZXMoY29u
dGV4dElkKSwgMCk7CisgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKIH0KIAogdm9pZCBOZXR3b3Jr
UHJvY2Vzczo6c2V0R3JhbmRmYXRoZXJlZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0
IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIGJvb2wgaXNHcmFuZGZhdGhlcmVkLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC03MTIsMTUgKzcxNCwxNCBA
QCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzY2hlZHVsZUNvb2tpZUJsb2NraW5nVXBkYXRlKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcAogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
IH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lz
dGVudChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvbmFsPFdhbGxUaW1lPiBtb2RpZmll
ZFNpbmNlLCBib29sIHNob3VsZEdyYW5kZmF0aGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpzY2hlZHVsZUNsZWFy
SW5NZW1vcnlBbmRQZXJzaXN0ZW50KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uYWw8
V2FsbFRpbWU+IG1vZGlmaWVkU2luY2UsIFNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljcyBzaG91
bGRHcmFuZGZhdGhlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewogICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNz
aW9uKHNlc3Npb25JRCkpIHsKICAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MgPSBuZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKSB7Ci0gICAgICAg
ICAgICBhdXRvIGdyYW5kZmF0aGVyID0gc2hvdWxkR3JhbmRmYXRoZXIgPyBTaG91bGRHcmFuZGZh
dGhlcjo6WWVzIDogU2hvdWxkR3JhbmRmYXRoZXI6Ok5vOwogICAgICAgICAgICAgaWYgKG1vZGlm
aWVkU2luY2UpCi0gICAgICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+c2NoZWR1
bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChtb2RpZmllZFNpbmNlLnZhbHVlKCksIGdyYW5k
ZmF0aGVyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgICAgICAgICAgICAgcmVz
b3VyY2VMb2FkU3RhdGlzdGljcy0+c2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudCht
b2RpZmllZFNpbmNlLnZhbHVlKCksIHNob3VsZEdyYW5kZmF0aGVyLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcmVzb3VyY2VM
b2FkU3RhdGlzdGljcy0+c2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChncmFuZGZh
dGhlciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICAgICAgICAgIHJlc291
cmNlTG9hZFN0YXRpc3RpY3MtPnNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoc2hv
dWxkR3JhbmRmYXRoZXIsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgfQog
ICAgIH0gZWxzZQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTg1MywxMiArODU0
LDE1IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldExhc3RTZWVuKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgY29uc3QgU3RyaW5nJiByZXNvdXJjCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpoYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWUo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBj
b25zdCBTdHJpbmcmIGZpcnN0UGFydHlEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90
IHBhZ2VJRCwgdWludDY0X3QgY29udGV4dElkKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6aGFzU3Rv
cmFnZUFjY2Vzc0ZvckZyYW1lKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5n
JiByZXNvdXJjZURvbWFpbiwgY29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9tYWluLCB1aW50NjRf
dCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CisgICAgYm9vbCBoYXNTdG9yYWdlQWNjZXNzID0gZmFs
c2U7CiAgICAgaWYgKGF1dG8qIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IHN0b3JhZ2VTZXNzaW9u
KHNlc3Npb25JRCkpCi0gICAgICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVz
c2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OlN0b3JhZ2VBY2Nlc3NPcGVyYXRpb25SZXN1bHQo
bmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5oYXNTdG9yYWdlQWNjZXNzKHJlc291cmNlRG9tYWluLCBm
aXJzdFBhcnR5RG9tYWluLCBmcmFtZUlELCBwYWdlSUQpLCBjb250ZXh0SWQpLCAwKTsKKyAgICAg
ICAgaGFzU3RvcmFnZUFjY2VzcyA9IG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+aGFzU3RvcmFnZUFj
Y2VzcyhyZXNvdXJjZURvbWFpbiwgZmlyc3RQYXJ0eURvbWFpbiwgZnJhbWVJRCwgcGFnZUlEKTsK
ICAgICBlbHNlCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworCisgICAgY29tcGxldGlv
bkhhbmRsZXIoaGFzU3RvcmFnZUFjY2Vzcyk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6Omdl
dEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0
X3QgY29udGV4dElkKQpAQCAtODc4LDE5ICs4ODIsMTYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6
aGFzU3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYg
cmUKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nl
c3M6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3Qg
U3RyaW5nJiByZXNvdXJjZURvbWFpbiwgY29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9tYWluLCBP
cHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBib29sIHByb21wdEVu
YWJsZWQsIHVpbnQ2NF90IGNvbnRleHRJZCkKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlcXVlc3RT
dG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiByZXNv
dXJjZURvbWFpbiwgY29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9tYWluLCBPcHRpb25hbDx1aW50
NjRfdD4gZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBib29sIHByb21wdEVuYWJsZWQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1N0YXR1cyk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7CiAgICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Np
b24oc2Vzc2lvbklEKSkgewotICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGlj
cyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpIHsKLSAgICAgICAg
ICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnJlcXVlc3RTdG9yYWdlQWNjZXNzKHJlc291cmNl
RG9tYWluLCBmaXJzdFBhcnR5RG9tYWluLCBmcmFtZUlELCBwYWdlSUQsIHByb21wdEVuYWJsZWQs
IFt0aGlzLCBjb250ZXh0SWRdKFN0b3JhZ2VBY2Nlc3NTdGF0dXMgcHJvbXB0QWNjZXB0ZWQpIHsK
LSAgICAgICAgICAgICAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2Vz
OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpTdG9yYWdlQWNjZXNzUmVxdWVzdFJlc3VsdChzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4ocHJvbXB0QWNjZXB0ZWQpLCBjb250ZXh0SWQpLCAwKTsKLSAgICAgICAg
ICAgIH0pOwotICAgICAgICB9CisgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0
aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKKyAgICAgICAg
ICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnJlcXVlc3RTdG9yYWdlQWNjZXNzKHJlc291cmNl
RG9tYWluLCBmaXJzdFBhcnR5RG9tYWluLCBmcmFtZUlELCBwYWdlSUQsIHByb21wdEVuYWJsZWQs
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICB9IGVsc2UKICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OmdyYW50U3RvcmFnZUFj
Y2VzcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21h
aW4sIGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwgT3B0aW9uYWw8dWludDY0X3Q+IGZy
YW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgYm9vbCB1c2VyV2FzUHJvbXB0ZWQsIHVpbnQ2NF90IGNv
bnRleHRJZCkKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmdyYW50U3RvcmFnZUFjY2VzcyhQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFN0
cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHVpbnQ2
NF90IHBhZ2VJRCwgYm9vbCB1c2VyV2FzUHJvbXB0ZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYm9vbCBpc1N0b3JhZ2VHcmFudGVk
ID0gZmFsc2U7CiAgICAgaWYgKGF1dG8qIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IHN0b3JhZ2VT
ZXNzaW9uKHNlc3Npb25JRCkpIHsKQEAgLTkwMCw3ICs5MDEsNyBAQCB2b2lkIE5ldHdvcmtQcm9j
ZXNzOjpncmFudFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBT
dHJpbmcmCiAgICAgfSBlbHNlCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogCi0gICAg
cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQ
cm94eTo6U3RvcmFnZUFjY2Vzc09wZXJhdGlvblJlc3VsdChpc1N0b3JhZ2VHcmFudGVkLCBjb250
ZXh0SWQpLCAwKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihpc1N0b3JhZ2VHcmFudGVkKTsKIH0K
IAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6bG9nRnJhbWVOYXZpZ2F0aW9uKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiB0YXJnZXRQcmltYXJ5RG9tYWluLCBjb25zdCBTdHJp
bmcmIG1haW5GcmFtZVByaW1hcnlEb21haW4sIGNvbnN0IFN0cmluZyYgc291cmNlUHJpbWFyeURv
bWFpbiwgY29uc3QgU3RyaW5nJiB0YXJnZXRIb3N0LCBjb25zdCBTdHJpbmcmIG1haW5GcmFtZUhv
c3QsIGJvb2wgaXNSZWRpcmVjdCwgYm9vbCBpc01haW5GcmFtZSkKQEAgLTk0MCwxMyArOTQxLDEz
IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNsZWFyVXNlckludGVyYWN0aW9uKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpyZW1vdmVBbGxTdG9yYWdlQWNjZXNzKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgY29udGV4dElkKQordm9pZCBOZXR3b3JrUHJv
Y2Vzczo6cmVtb3ZlQWxsU3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAo
YXV0byogbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gc3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkK
ICAgICAgICAgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5yZW1vdmVBbGxTdG9yYWdlQWNjZXNzKCk7
CiAgICAgZWxzZQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICBwYXJlbnRQcm9j
ZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpEaWRS
ZW1vdmVBbGxTdG9yYWdlQWNjZXNzKGNvbnRleHRJZCksIDApOworICAgIGNvbXBsZXRpb25IYW5k
bGVyKCk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlbW92ZVByZXZhbGVudERvbWFpbnMo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWlucykK
QEAgLTk1NSwxMyArOTU2LDEzIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlbW92ZVByZXZhbGVu
dERvbWFpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBWZWN0CiAgICAgICAgIG5l
dHdvcmtTdG9yYWdlU2Vzc2lvbi0+cmVtb3ZlUHJldmFsZW50RG9tYWlucyhkb21haW5zKTsKIH0K
IAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNv
dXJjZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTZWNvbmRzIHNlY29uZHMsIHVpbnQ2NF90
IGNvbnRleHRJZCkKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldENhY2hlTWF4QWdlQ2FwRm9yUHJl
dmFsZW50UmVzb3VyY2VzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU2Vjb25kcyBzZWNvbmRz
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAg
aWYgKGF1dG8qIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IHN0b3JhZ2VTZXNzaW9uKHNlc3Npb25J
RCkpCiAgICAgICAgIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+c2V0Q2FjaGVNYXhBZ2VDYXBGb3JQ
cmV2YWxlbnRSZXNvdXJjZXMoU2Vjb25kcyB7IHNlY29uZHMgfSk7CiAgICAgZWxzZQogICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5z
ZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpEaWRTZXRDYWNoZU1heEFnZUNhcEZv
clByZXZhbGVudFJlc291cmNlcyhjb250ZXh0SWQpLCAwKTsKKyAgICBjb21wbGV0aW9uSGFuZGxl
cigpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRHcmFuZGZhdGhlcmluZ1RpbWUoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTZWNvbmRzIHNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTEwMzMsMTMgKzEwMzQsMTMgQEAgdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZShQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAK
LXZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNv
dXJjZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBjb250ZXh0SWQpCit2b2lk
IE5ldHdvcmtQcm9jZXNzOjpyZXNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2Vz
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmIChhdXRvKiBuZXR3b3JrU3RvcmFnZVNlc3Npb24g
PSBzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQogICAgICAgICBuZXR3b3JrU3RvcmFnZVNlc3Np
b24tPnJlc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoKTsKICAgICBlbHNl
CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHBhcmVudFByb2Nlc3NDb25uZWN0
aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkRpZFVwZGF0ZVJ1bnRp
bWVTZXR0aW5ncyhjb250ZXh0SWQpLCAwKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQog
I2VuZGlmIC8vIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAKQEAgLTEyMTIsNyAr
MTIxMyw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpCiAKICAgICAgICAgICAgICAgICAvLyBJ
ZiB3ZSBhcmUgZGVsZXRpbmcgYWxsIG9mIHRoZSBkYXRhIHR5cGVzIHRoYXQgdGhlIHJlc291cmNl
IGxvYWQgc3RhdGlzdGljcyBzdG9yZSBtb25pdG9ycwogICAgICAgICAgICAgICAgIC8vIHdlIGRv
IG5vdCBuZWVkIHRvIHJlLWdyYW5kZmF0aGVyIG9sZCBkYXRhLgotICAgICAgICAgICAgICAgIGF1
dG8gc2hvdWxkR3JhbmRmYXRoZXIgPSAoKG1vbml0b3JlZFR5cGVzUmF3ICYgZGVsZXRlZFR5cGVz
UmF3KSA9PSBtb25pdG9yZWRUeXBlc1JhdykgPyBTaG91bGRHcmFuZGZhdGhlcjo6Tm8gOiBTaG91
bGRHcmFuZGZhdGhlcjo6WWVzOworICAgICAgICAgICAgICAgIGF1dG8gc2hvdWxkR3JhbmRmYXRo
ZXIgPSAoKG1vbml0b3JlZFR5cGVzUmF3ICYgZGVsZXRlZFR5cGVzUmF3KSA9PSBtb25pdG9yZWRU
eXBlc1JhdykgPyBTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3M6Ok5vIDogU2hvdWxkR3JhbmRm
YXRoZXJTdGF0aXN0aWNzOjpZZXM7CiAKICAgICAgICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0
aXN0aWNzLT5zY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KG1vZGlmaWVkU2luY2Us
IHNob3VsZEdyYW5kZmF0aGVyLCBbY2xlYXJUYXNrc0hhbmRsZXIgPSBjbGVhclRhc2tzSGFuZGxl
ci5jb3B5UmVmKCldIHsgfSk7CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5kZXggYWZiZWJiZGUxNzllOWMzMmUwOGY5YmJk
MDA0YTdkZTY5MWY5YTU4NS4uNDgzZWRjZjU3MmRhNGZlNzM5OGM0ZTZmODk1ZmIyOTcwZjM3YjE5
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaApA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxOCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTgxLDYgKzgxLDggQEAgY2xhc3MgTmV0d29ya1Byb2Nlc3NTdXBwbGVtZW50OwogY2xhc3Mg
TmV0d29ya1Byb3hpbWl0eU1hbmFnZXI7CiBjbGFzcyBXZWJTV1NlcnZlckNvbm5lY3Rpb247CiBj
bGFzcyBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb247CitlbnVtIGNsYXNzIFNob3VsZEdy
YW5kZmF0aGVyU3RhdGlzdGljcyA6IGJvb2w7CitlbnVtIGNsYXNzIFN0b3JhZ2VBY2Nlc3NTdGF0
dXMgOiB1aW50OF90OwogZW51bSBjbGFzcyBXZWJzaXRlRGF0YUZldGNoT3B0aW9uOwogZW51bSBj
bGFzcyBXZWJzaXRlRGF0YVR5cGU7CiBzdHJ1Y3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnM7CkBAIC0xNzcsMTEgKzE3OSwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhclVzZXJJ
bnRlcmFjdGlvbihQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGRlbGV0ZVdlYnNpdGVEYXRh
Rm9yVG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbnNJbkFsbFBlcnNpc3RlbnREYXRhU3RvcmVz
KFBBTDo6U2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgVmVjdG9yPFN0cmlu
Zz4mJiB0b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWlucywgYm9vbCBzaG91bGROb3RpZnlQYWdl
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYpPiYmKTsKICAg
ICB2b2lkIGR1bXBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKFBBTDo6U2Vzc2lvbklELCB1aW50NjRf
dCBjb250ZXh0SWQpOwotICAgIHZvaWQgdXBkYXRlUHJldmFsZW50RG9tYWluc1RvQmxvY2tDb29r
aWVzRm9yKFBBTDo6U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvQmxv
Y2ssIHVpbnQ2NF90IGNvbnRleHRJZCk7CisgICAgdm9pZCB1cGRhdGVQcmV2YWxlbnREb21haW5z
VG9CbG9ja0Nvb2tpZXNGb3IoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBk
b21haW5zVG9CbG9jaywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGlz
R3JhbmRmYXRoZXJlZChQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiB0YXJnZXRQcmltYXJ5
RG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAgICB2b2lkIGlzUHJl
dmFsZW50UmVzb3VyY2UoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21h
aW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIHZvaWQgaXNWZXJ5UHJl
dmFsZW50UmVzb3VyY2UoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21h
aW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwotICAgIHZvaWQgc2V0QWdlQ2Fw
Rm9yQ2xpZW50U2lkZUNvb2tpZXMoUEFMOjpTZXNzaW9uSUQsIE9wdGlvbmFsPFNlY29uZHM+LCB1
aW50NjRfdCBjb250ZXh0SWQpOworICAgIHZvaWQgc2V0QWdlQ2FwRm9yQ2xpZW50U2lkZUNvb2tp
ZXMoUEFMOjpTZXNzaW9uSUQsIE9wdGlvbmFsPFNlY29uZHM+LCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOwogICAgIHZvaWQgaXNSZWdpc3RlcmVkQXNSZWRpcmVjdGluZ1RvKFBBTDo6U2Vz
c2lvbklELCBjb25zdCBTdHJpbmcmIHJlZGlyZWN0ZWRGcm9tLCBjb25zdCBTdHJpbmcmIHJlZGly
ZWN0ZWRUbywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBpc1Jl
Z2lzdGVyZWRBc1N1YkZyYW1lVW5kZXIoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgc3Vi
ZnJhbWUsIGNvbnN0IFN0cmluZyYgdG9wRnJhbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYpOwogICAgIHZvaWQgaXNSZWdpc3RlcmVkQXNTdWJyZXNvdXJjZVVuZGVyKFBBTDo6U2Vz
c2lvbklELCBjb25zdCBTdHJpbmcmIHN1YnJlc291cmNlLCBjb25zdCBTdHJpbmcmIHRvcEZyYW1l
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKQEAgLTE5MiwyMiArMTk0LDIyIEBA
IHB1YmxpYzoKICAgICB2b2lkIHNldFZlcnlQcmV2YWxlbnRSZXNvdXJjZShQQUw6OlNlc3Npb25J
RCwgY29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmKTsKICAgICB2b2lkIHNldFBydW5lRW50cmllc0Rvd25UbyhQQUw6OlNlc3Npb25JRCwgdWlu
dDY0X3QgcHJ1bmVUYXJnZXRDb3VudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAg
ICB2b2lkIGhhZFVzZXJJbnRlcmFjdGlvbihQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBy
ZXNvdXJjZURvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7Ci0gICAgdm9p
ZCBoYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWUoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYg
cmVzb3VyY2VEb21haW4sIGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwgdWludDY0X3Qg
ZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBjb250ZXh0SWQpOworICAgIHZvaWQg
aGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHJl
c291cmNlRG9tYWluLCBjb25zdCBTdHJpbmcmIGZpcnN0UGFydHlEb21haW4sIHVpbnQ2NF90IGZy
YW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7
CiAgICAgdm9pZCBnZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcyhQQUw6OlNlc3Npb25JRCwgdWlu
dDY0X3QgY29udGV4dElkKTsKLSAgICB2b2lkIGdyYW50U3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Np
b25JRCwgY29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwgY29uc3QgU3RyaW5nJiBmaXJzdFBh
cnR5RG9tYWluLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBi
b29sIHVzZXJXYXNQcm9tcHRlZCwgdWludDY0X3QgY29udGV4dElkKTsKKyAgICB2b2lkIGdyYW50
U3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFp
biwgY29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9tYWluLCBPcHRpb25hbDx1aW50NjRfdD4gZnJh
bWVJRCwgdWludDY0X3QgcGFnZUlELCBib29sIHVzZXJXYXNQcm9tcHRlZCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBoYXNTdG9yYWdlQWNjZXNzKFBBTDo6U2Vz
c2lvbklELCBjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBjb25zdCBTdHJpbmcmIGZpcnN0
UGFydHlEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIHZvaWQgbG9nRnJhbWVOYXZp
Z2F0aW9uKFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHRhcmdldFByaW1hcnlEb21haW4s
IGNvbnN0IFN0cmluZyYgbWFpbkZyYW1lUHJpbWFyeURvbWFpbiwgY29uc3QgU3RyaW5nJiBzb3Vy
Y2VQcmltYXJ5RG9tYWluLCBjb25zdCBTdHJpbmcmIHRhcmdldEhvc3QsIGNvbnN0IFN0cmluZyYg
bWFpbkZyYW1lSG9zdCwgYm9vbCBpc1JlZGlyZWN0LCBib29sIGlzTWFpbkZyYW1lKTsKICAgICB2
b2lkIGxvZ1VzZXJJbnRlcmFjdGlvbihQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiB0YXJn
ZXRQcmltYXJ5RG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQg
cmVtb3ZlQWxsU3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgY29udGV4dElk
KTsKKyAgICB2b2lkIHJlbW92ZUFsbFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCByZW1vdmVQcmV2YWxlbnREb21haW5z
KFBBTDo6U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWlucyk7Ci0gICAgdm9p
ZCByZXF1ZXN0U3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiByZXNv
dXJjZURvbWFpbiwgY29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9tYWluLCBPcHRpb25hbDx1aW50
NjRfdD4gZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBib29sIHByb21wdEVuYWJsZWQsIHVpbnQ2
NF90IGNvbnRleHRJZCk7Ci0gICAgdm9pZCByZXNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50
UmVzb3VyY2VzKFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCBjb250ZXh0SWQpOworICAgIHZvaWQg
cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcmVzb3Vy
Y2VEb21haW4sIGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwgT3B0aW9uYWw8dWludDY0
X3Q+IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgYm9vbCBwcm9tcHRFbmFibGVkLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NTdGF0dXMpPiYmKTsKKyAgICB2b2lkIHJlc2V0
Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoUEFMOjpTZXNzaW9uSUQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCByZXNldFBhcmFtZXRlcnNUb0RlZmF1
bHRWYWx1ZXMoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0g
ICAgdm9pZCBzY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFBBTDo6U2Vzc2lvbklE
LCBPcHRpb25hbDxXYWxsVGltZT4gbW9kaWZpZWRTaW5jZSwgYm9vbCBzaG91bGRHcmFuZGZhdGhl
ciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIHNjaGVkdWxlQ2xlYXJJ
bk1lbW9yeUFuZFBlcnNpc3RlbnQoUEFMOjpTZXNzaW9uSUQsIE9wdGlvbmFsPFdhbGxUaW1lPiBt
b2RpZmllZFNpbmNlLCBTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3MsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzY2hlZHVsZUNvb2tpZUJsb2NraW5nVXBkYXRlKFBB
TDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2No
ZWR1bGVTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHNQcm9jZXNzaW5nKFBBTDo6U2Vzc2lvbklELCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc3VibWl0VGVsZW1ldHJ5KFBB
TDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgc2V0
Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoUEFMOjpTZXNzaW9uSUQsIFNlY29u
ZHMsIHVpbnQ2NF90IGNvbnRleHRJZCk7CisgICAgdm9pZCBzZXRDYWNoZU1heEFnZUNhcEZvclBy
ZXZhbGVudFJlc291cmNlcyhQQUw6OlNlc3Npb25JRCwgU2Vjb25kcywgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldEdyYW5kZmF0aGVyaW5nVGltZShQQUw6OlNlc3Np
b25JRCwgU2Vjb25kcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNl
dExhc3RTZWVuKFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBT
ZWNvbmRzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0TWluaW11
bVRpbWVCZXR3ZWVuRGF0YVJlY29yZHNSZW1vdmFsKFBBTDo6U2Vzc2lvbklELCBTZWNvbmRzLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggNjI1NjU4MTJh
YWU2NTBhMmEwZTU1NDRkN2E0ZGNhNmMwNGRiOTY0My4uYWE0ZjhkN2VkNjZiYTQ3NGM0YTFmOTIw
NDcyNzVjNDBkYjNjZGUzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0xLDQgKzEsNCBAQAotIyBDb3B5
cmlnaHQgKEMpIDIwMTItMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENv
cHlyaWdodCAoQykgMjAxMi0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMK
ICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtODksMzMgKzg5LDMzIEBAIG1lc3NhZ2VzIC0+
IE5ldHdvcmtQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBDbGVhclVzZXJJbnRlcmFjdGlv
bihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0cmluZyByZXNvdXJjZURvbWFpbikgLT4gKCkg
QXN5bmMKICAgICBEdW1wUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIHVpbnQ2NF90IGNvbnRleHRJZCkKICAgICBTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RW5hYmxlZChib29sIGVuYWJsZWQpCi0gICAgVXBkYXRlUHJldmFsZW50RG9tYWluc1RvQmxvY2tD
b29raWVzRm9yKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVmVjdG9yPFN0cmluZz4gZG9tYWlu
c1RvQmxvY2ssIHVpbnQ2NF90IGNvbnRleHRJZCkKKyAgICBVcGRhdGVQcmV2YWxlbnREb21haW5z
VG9CbG9ja0Nvb2tpZXNGb3IoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBWZWN0b3I8U3RyaW5n
PiBkb21haW5zVG9CbG9jaykgLT4gKCkgQXN5bmMKICAgICBJc0dyYW5kZmF0aGVyZWQoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBTdHJpbmcgdGFyZ2V0UHJpbWFyeURvbWFpbikgLT4gKGJvb2wg
aXNHcmFuZGZhdGhlcmVkKSBBc3luYwogICAgIElzUHJldmFsZW50UmVzb3VyY2UoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBTdHJpbmcgdGFyZ2V0UHJpbWFyeURvbWFpbikgLT4gKGJvb2wgaXNQ
cmV2YWxlbnQpIEFzeW5jCiAgICAgSXNWZXJ5UHJldmFsZW50UmVzb3VyY2UoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBTdHJpbmcgdGFyZ2V0UHJpbWFyeURvbWFpbikgLT4gKGJvb2wgaXNWZXJ5
UHJldmFsZW50KSBBc3luYwotICAgIFNldEFnZUNhcEZvckNsaWVudFNpZGVDb29raWVzKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uYWw8U2Vjb25kcz4gc2Vjb25kcywgdWludDY0X3Qg
Y29udGV4dElkKQorICAgIFNldEFnZUNhcEZvckNsaWVudFNpZGVDb29raWVzKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgT3B0aW9uYWw8U2Vjb25kcz4gc2Vjb25kcykgLT4gKCkgQXN5bmMKICAg
ICBTZXRMYXN0U2VlbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0cmluZyByZXNvdXJjZURv
bWFpbiwgU2Vjb25kcyBzZWNvbmRzKSAtPiAoKSBBc3luYwogICAgIFNldFByZXZhbGVudFJlc291
cmNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU3RyaW5nIHJlc291cmNlRG9tYWluKSAtPiAo
KSBBc3luYwogICAgIFNldFByZXZhbGVudFJlc291cmNlRm9yRGVidWdNb2RlKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgU3RyaW5nIHJlc291cmNlRG9tYWluKSAtPiAoKSBBc3luYwogICAgIEhh
ZFVzZXJJbnRlcmFjdGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0cmluZyByZXNvdXJj
ZURvbWFpbikgLT4gKGJvb2wgaGFkVXNlckludGVyYWN0aW9uKSBBc3luYwotICAgIEhhc1N0b3Jh
Z2VBY2Nlc3NGb3JGcmFtZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0cmluZyByZXNvdXJj
ZURvbWFpbiwgU3RyaW5nIGZpcnN0UGFydHlEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2
NF90IHBhZ2VJRCwgdWludDY0X3QgY29udGV4dElkKQotICAgIEhhc1N0b3JhZ2VBY2Nlc3MoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTdHJpbmcgcmVzb3VyY2VEb21haW4sIFN0cmluZyBmaXJz
dFBhcnR5RG9tYWluLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgdWludDY0X3QgcGFnZUlE
KSAtPiAoYm9vbCBoYWRVc2VySW50ZXJhY3Rpb24pIEFzeW5jCisgICAgSGFzU3RvcmFnZUFjY2Vz
c0ZvckZyYW1lKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU3RyaW5nIHJlc291cmNlRG9tYWlu
LCBTdHJpbmcgZmlyc3RQYXJ0eURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFn
ZUlEKSAtPiAoYm9vbCBoYXNTdG9yYWdlQWNjZXNzKSBBc3luYworICAgIEhhc1N0b3JhZ2VBY2Nl
c3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTdHJpbmcgcmVzb3VyY2VEb21haW4sIFN0cmlu
ZyBmaXJzdFBhcnR5RG9tYWluLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgdWludDY0X3Qg
cGFnZUlEKSAtPiAoYm9vbCBoYXNTdG9yYWdlQWNjZXNzKSBBc3luYwogICAgIEdldEFsbFN0b3Jh
Z2VBY2Nlc3NFbnRyaWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgY29udGV4
dElkKQotICAgIEdyYW50U3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0
cmluZyByZXNvdXJjZURvbWFpbiwgU3RyaW5nIGZpcnN0UGFydHlEb21haW4sIE9wdGlvbmFsPHVp
bnQ2NF90PiBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIGJvb2wgdXNlcldhc1Byb21wdGVkLCB1
aW50NjRfdCBjb250ZXh0SWQpCisgICAgR3JhbnRTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgU3RyaW5nIHJlc291cmNlRG9tYWluLCBTdHJpbmcgZmlyc3RQYXJ0eURvbWFp
biwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgYm9vbCB1c2Vy
V2FzUHJvbXB0ZWQpIC0+IChib29sIGFjY2Vzc0dyYW50ZWQpIEFzeW5jCiAgICAgSXNSZWdpc3Rl
cmVkQXNSZWRpcmVjdGluZ1RvKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU3RyaW5nIHJlZGly
ZWN0ZWRGcm9tLCBTdHJpbmcgcmVkaXJlY3RlZFRvKSAtPiAoYm9vbCBpc1JlZGlyZWN0aW5nVG8p
IEFzeW5jCiAgICAgSXNSZWdpc3RlcmVkQXNTdWJGcmFtZVVuZGVyKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgU3RyaW5nIHN1YmZyYW1lLCBTdHJpbmcgdG9wRnJhbWUpIC0+IChib29sIGlzU3Vi
ZnJhbWVVbmRlcikgQXN5bmMKICAgICBJc1JlZ2lzdGVyZWRBc1N1YnJlc291cmNlVW5kZXIoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTdHJpbmcgc3VicmVzb3VyY2UsIFN0cmluZyB0b3BGcmFt
ZSkgLT4gKGJvb2wgaXNTdWJyZXNvdXJjZVVuZGVyKSBBc3luYwogICAgIExvZ0ZyYW1lTmF2aWdh
dGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0cmluZyB0YXJnZXRQcmltYXJ5RG9tYWlu
LCBTdHJpbmcgbWFpbkZyYW1lUHJpbWFyeURvbWFpbiwgU3RyaW5nIHNvdXJjZVByaW1hcnlEb21h
aW4sIFN0cmluZyB0YXJnZXRIb3N0LCBTdHJpbmcgbWFpbkZyYW1lSG9zdCwgYm9vbCBpc1JlZGly
ZWN0LCBib29sIGlzTWFpbkZyYW1lKQogICAgIExvZ1VzZXJJbnRlcmFjdGlvbihQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIFN0cmluZyB0YXJnZXRQcmltYXJ5RG9tYWluKSAtPiAoKSBBc3luYwot
ICAgIFJlbW92ZUFsbFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50
NjRfdCBjb250ZXh0SWQpCisgICAgUmVtb3ZlQWxsU3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQpIC0+ICgpIEFzeW5jCiAgICAgUmVtb3ZlUHJldmFsZW50RG9tYWlucyhQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIFZlY3RvcjxTdHJpbmc+IGRvbWFpbnNXaXRoSW50ZXJhY3Rp
b24pCi0gICAgUmVxdWVzdFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBT
dHJpbmcgcmVzb3VyY2VEb21haW4sIFN0cmluZyBmaXJzdFBhcnR5RG9tYWluLCBPcHRpb25hbDx1
aW50NjRfdD4gZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBib29sIHByb21wdEVuYWJsZWQsIHVp
bnQ2NF90IGNvbnRleHRJZCkKKyAgICBSZXF1ZXN0U3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIFN0cmluZyByZXNvdXJjZURvbWFpbiwgU3RyaW5nIGZpcnN0UGFydHlEb21h
aW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIGJvb2wgcHJv
bXB0RW5hYmxlZCkgLT4gKGVudW06dWludDhfdCBXZWJLaXQ6OlN0b3JhZ2VBY2Nlc3NTdGF0dXMg
c3RvcmFnZUFjY2Vzc1N0YXR1cykgQXN5bmMKICAgICBSZXNldFBhcmFtZXRlcnNUb0RlZmF1bHRW
YWx1ZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoKSBBc3luYwotICAgIFNjaGVkdWxl
Q2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRp
b25hbDxXYWxsVGltZT4gbW9kaWZpZWRTaW5jZSwgYm9vbCBzaG91bGRHcmFuZGZhdGhlcikgLT4g
KCkgQXN5bmMKKyAgICBTY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgT3B0aW9uYWw8V2FsbFRpbWU+IG1vZGlmaWVkU2luY2UsIGVudW06
Ym9vbCBXZWJLaXQ6OlNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljcyBzaG91bGRHcmFuZGZhdGhl
cikgLT4gKCkgQXN5bmMKICAgICBTY2hlZHVsZUNvb2tpZUJsb2NraW5nVXBkYXRlKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCkgLT4gKCkgQXN5bmMKICAgICBTY2hlZHVsZVN0YXRpc3RpY3NBbmRE
YXRhUmVjb3Jkc1Byb2Nlc3NpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoKSBBc3lu
YwogICAgIFN1Ym1pdFRlbGVtZXRyeShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+ICgpIEFz
eW5jCi0gICAgU2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBTZWNvbmRzIHNlY29uZHMsIHVpbnQ2NF90IGNvbnRleHRJZCkKKyAg
ICBTZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIFNlY29uZHMgc2Vjb25kcykgLT4gKCkgQXN5bmMKICAgICBTZXRHcmFuZGZhdGhl
cmVkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU3RyaW5nIHJlc291cmNlRG9tYWluLCBib29s
IGlzR3JhbmRmYXRoZXJlZCkgLT4gKCkgQXN5bmMKICAgICBTZXRHcmFuZGZhdGhlcmluZ1RpbWUo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTZWNvbmRzIHNlY29uZHMpIC0+ICgpIEFzeW5jCiAg
ICAgU2V0TWF4U3RhdGlzdGljc0VudHJpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50
NjRfdCBtYXhpbXVtRW50cnlDb3VudCkgLT4gKCkgQXN5bmMKQEAgLTEzMyw3ICsxMzMsNyBAQCBt
ZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgU2V0VGltZVRv
TGl2ZVVzZXJJbnRlcmFjdGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFNlY29uZHMgc2Vj
b25kcykgLT4gKCkgQXN5bmMKICAgICBTZXRUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0VG8oUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBTdHJpbmcgdG9wRnJhbWVIb3N0TmFtZSwgU3RyaW5nIGhvc3RO
YW1lUmVkaXJlY3RlZFRvKSAtPiAoKSBBc3luYwogICAgIFNldFRvcEZyYW1lVW5pcXVlUmVkaXJl
Y3RGcm9tKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU3RyaW5nIHRvcEZyYW1lSG9zdE5hbWUs
IFN0cmluZyBob3N0TmFtZVJlZGlyZWN0ZWRGcm9tKSAtPiAoKSBBc3luYwotICAgIFJlc2V0Q2Fj
aGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCB1aW50NjRfdCBjb250ZXh0SWQpCisgICAgUmVzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVu
dFJlc291cmNlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+ICgpIEFzeW5jCiAjZW5kaWYK
IAogICAgIFNldFNlc3Npb25Jc0NvbnRyb2xsZWRCeUF1dG9tYXRpb24oUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBib29sIGNvbnRyb2xsZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKaW5kZXggYmEzMzNjOWY1
ZmQzNWZkODIwZWI4NTVlMGY1MjUzNzZiZTJmNGMzMS4uMDUzNDkzZTk4OWVhMWNiMjdkZTFhZjVh
ZDdkNzI5MzBmZmRkMTdkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5j
bHVkZSAiQVBJQXJyYXkuaCIKICNpbmNsdWRlICJBUElXZWJzaXRlRGF0YVN0b3JlLmgiCiAjaW5j
bHVkZSAiTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5oIgorI2luY2x1ZGUgIlNo
b3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljcy5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogI2lu
Y2x1ZGUgIldLRGljdGlvbmFyeS5oIgogI2luY2x1ZGUgIldLTnVtYmVyLmgiCkBAIC0zNzgsNyAr
Mzc5LDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzUHJ1bmVFbnRyaWVz
RG93blRvKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXQKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3Jl
U3RhdGlzdGljc0NsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmUoV0tXZWJzaXRlRGF0YVN0
b3JlUmVmIGRhdGFTdG9yZVJlZiwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU3Rh
dGlzdGljc0NsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmVGdW5jdGlvbiBjYWxsYmFjaykK
IHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9J
bXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5zY2hlZHVsZUNsZWFySW5NZW1v
cnlBbmRQZXJzaXN0ZW50KFNob3VsZEdyYW5kZmF0aGVyOjpZZXMsIFtjb250ZXh0LCBjYWxsYmFj
a10oKSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9y
ZSgpLnNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoU2hvdWxkR3JhbmRmYXRoZXJT
dGF0aXN0aWNzOjpZZXMsIFtjb250ZXh0LCBjYWxsYmFja10oKSB7CiAgICAgICAgIGNhbGxiYWNr
KGNvbnRleHQpOwogICAgIH0pOwogI2Vsc2UKQEAgLTM4OSw3ICszOTAsNyBAQCB2b2lkIFdLV2Vi
c2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudFN0b3JlKFdL
V2Vic2l0ZURhdGFTdAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzQ2xlYXJJbk1l
bW9yeUFuZFBlcnNpc3RlbnRTdG9yZU1vZGlmaWVkU2luY2VIb3VycyhXS1dlYnNpdGVEYXRhU3Rv
cmVSZWYgZGF0YVN0b3JlUmVmLCB1bnNpZ25lZCBob3Vycywgdm9pZCogY29udGV4dCwgV0tXZWJz
aXRlRGF0YVN0b3JlU3RhdGlzdGljc0NsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmVNb2Rp
ZmllZFNpbmNlSG91cnNGdW5jdGlvbiBjYWxsYmFjaykKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0Vf
TE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNp
dGVEYXRhU3RvcmUoKS5zY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFdhbGxUaW1l
Ojpub3coKSAtIFNlY29uZHM6OmZyb21Ib3Vycyhob3VycyksIFNob3VsZEdyYW5kZmF0aGVyOjpZ
ZXMsIFtjb250ZXh0LCBjYWxsYmFja10oKSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3Jl
UmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3Rl
bnQoV2FsbFRpbWU6Om5vdygpIC0gU2Vjb25kczo6ZnJvbUhvdXJzKGhvdXJzKSwgU2hvdWxkR3Jh
bmRmYXRoZXJTdGF0aXN0aWNzOjpZZXMsIFtjb250ZXh0LCBjYWxsYmFja10oKSB7CiAgICAgICAg
IGNhbGxiYWNrKGNvbnRleHQpOwogICAgIH0pOwogI2VuZGlmCkBAIC00MjEsNyArNDIyLDcgQEAg
dm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZShX
S1dlYnNpdGVEYXRhU3RvcmVSZWYgZGEKICAgICBzdG9yZS5jbGVhclJlc291cmNlTG9hZFN0YXRp
c3RpY3NJbldlYlByb2Nlc3NlcyhbY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdh
dG9yLmNvcHlSZWYoKV0geyB9KTsKICAgICBzdG9yZS5yZXNldENhY2hlTWF4QWdlQ2FwRm9yUHJl
dmFsZW50UmVzb3VyY2VzKFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3Iu
Y29weVJlZigpXSB7IH0pOwogICAgIHN0b3JlLnJlc2V0UGFyYW1ldGVyc1RvRGVmYXVsdFZhbHVl
cyhbY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9
KTsKLSAgICBzdG9yZS5zY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFNob3VsZEdy
YW5kZmF0aGVyOjpObywgW2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5j
b3B5UmVmKCldIHsgfSk7CisgICAgc3RvcmUuc2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lz
dGVudChTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3M6Ok5vLCBbY2FsbGJhY2tBZ2dyZWdhdG9y
ID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKICNlbHNlCiAgICAgVU5VU0VE
X1BBUkFNKGRhdGFTdG9yZVJlZik7CiAgICAgY29tcGxldGlvbkhhbmRsZXIoY29udGV4dCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmNwcAppbmRleCBjYjA2MmY1YzgxYzM5NmVmNzViMWRkNjEwZDQ0OTQ2YTAxMGExNGI2
Li4zYmVjOTU4ZmM2YWNlZDc3MjhmMTdhODVjMTJhNDY2NWI2ZTBiNTQ0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5j
cHAKQEAgLTM3LDYgKzM3LDggQEAKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVycy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRl
ICJTYW5kYm94RXh0ZW5zaW9uLmgiCisjaW5jbHVkZSAiU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0
aWNzLmgiCisjaW5jbHVkZSAiU3RvcmFnZUFjY2Vzc1N0YXR1cy5oIgogI2luY2x1ZGUgIldlYkNv
bXBpbGVkQ29udGVudFJ1bGVMaXN0LmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCiAjaW5j
bHVkZSAiV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCkBAIC0yMzYsMTggKzIzOCw2IEBAIHZvaWQgTmV0
d29ya1Byb2Nlc3NQcm94eTo6Y2xlYXJDYWxsYmFja1N0YXRlcygpCiAgICAgICAgIG1fcGVuZGlu
Z0RlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2luc0NhbGxiYWNrcy50YWtlKG1fcGVuZGluZ0RlbGV0
ZVdlYnNpdGVEYXRhRm9yT3JpZ2luc0NhbGxiYWNrcy5iZWdpbigpLT5rZXkpKCk7CiAKICNpZiBF
TkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIHdoaWxlICghbV9zY2hlZHVsZVN0
YXRpc3RpY3NQcm9jZXNzaW5nQ2FsbGJhY2tNYXAuaXNFbXB0eSgpKQotICAgICAgICBtX3NjaGVk
dWxlU3RhdGlzdGljc1Byb2Nlc3NpbmdDYWxsYmFja01hcC50YWtlKG1fc2NoZWR1bGVTdGF0aXN0
aWNzUHJvY2Vzc2luZ0NhbGxiYWNrTWFwLmJlZ2luKCktPmtleSkoKTsKLQotICAgIHdoaWxlICgh
bV9zdG9yYWdlQWNjZXNzUmVzcG9uc2VDYWxsYmFja01hcC5pc0VtcHR5KCkpCi0gICAgICAgIG1f
c3RvcmFnZUFjY2Vzc1Jlc3BvbnNlQ2FsbGJhY2tNYXAudGFrZShtX3N0b3JhZ2VBY2Nlc3NSZXNw
b25zZUNhbGxiYWNrTWFwLmJlZ2luKCktPmtleSkoZmFsc2UpOwotICAgIAotICAgIHdoaWxlICgh
bV9zdG9yYWdlQWNjZXNzUmVxdWVzdFJlc3BvbnNlQ2FsbGJhY2tNYXAuaXNFbXB0eSgpKQotICAg
ICAgICBtX3N0b3JhZ2VBY2Nlc3NSZXF1ZXN0UmVzcG9uc2VDYWxsYmFja01hcC50YWtlKG1fc3Rv
cmFnZUFjY2Vzc1JlcXVlc3RSZXNwb25zZUNhbGxiYWNrTWFwLmJlZ2luKCktPmtleSkoU3RvcmFn
ZUFjY2Vzc1N0YXR1czo6Q2Fubm90UmVxdWVzdEFjY2Vzcyk7Ci0KLSAgICB3aGlsZSAoIW1fcmVt
b3ZlQWxsU3RvcmFnZUFjY2Vzc0NhbGxiYWNrTWFwLmlzRW1wdHkoKSkKLSAgICAgICAgbV9yZW1v
dmVBbGxTdG9yYWdlQWNjZXNzQ2FsbGJhY2tNYXAudGFrZShtX3JlbW92ZUFsbFN0b3JhZ2VBY2Nl
c3NDYWxsYmFja01hcC5iZWdpbigpLT5rZXkpKCk7Ci0KICAgICB3aGlsZSAoIW1fYWxsU3RvcmFn
ZUFjY2Vzc0VudHJpZXNDYWxsYmFja01hcC5pc0VtcHR5KCkpCiAgICAgICAgIG1fYWxsU3RvcmFn
ZUFjY2Vzc0VudHJpZXNDYWxsYmFja01hcC50YWtlKG1fYWxsU3RvcmFnZUFjY2Vzc0VudHJpZXND
YWxsYmFja01hcC5iZWdpbigpLT5rZXkpKHsgfSk7CiAKQEAgLTI5MSwxMyArMjgxLDEzIEBAIHZv
aWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJikKICAgICBt
X3N5bmNBbGxDb29raWVzQ291bnRlciA9IDA7CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9T
VEFUSVNUSUNTKQotICAgIGZvciAoYXV0byYgY2FsbGJhY2sgOiBtX3JlbW92ZUFsbFN0b3JhZ2VB
Y2Nlc3NDYWxsYmFja01hcC52YWx1ZXMoKSkKLSAgICAgICAgY2FsbGJhY2soKTsKLSAgICBtX3Jl
bW92ZUFsbFN0b3JhZ2VBY2Nlc3NDYWxsYmFja01hcC5jbGVhcigpOworICAgIGZvciAoYXV0byYg
Y2FsbGJhY2sgOiBtX2FsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzQ2FsbGJhY2tNYXAudmFsdWVzKCkp
CisgICAgICAgIGNhbGxiYWNrKHsgfSk7CisgICAgbV9hbGxTdG9yYWdlQWNjZXNzRW50cmllc0Nh
bGxiYWNrTWFwLmNsZWFyKCk7CiAKLSAgICBmb3IgKGF1dG8mIGNhbGxiYWNrIDogbV9zY2hlZHVs
ZVN0YXRpc3RpY3NQcm9jZXNzaW5nQ2FsbGJhY2tNYXAudmFsdWVzKCkpCi0gICAgICAgIGNhbGxi
YWNrKCk7Ci0gICAgbV9zY2hlZHVsZVN0YXRpc3RpY3NQcm9jZXNzaW5nQ2FsbGJhY2tNYXAuY2xl
YXIoKTsKKyAgICBmb3IgKGF1dG8mIGNhbGxiYWNrIDogbV9kdW1wU3RhdGlzdGljc0NhbGxiYWNr
TWFwLnZhbHVlcygpKQorICAgICAgICBjYWxsYmFjayh7IH0pOworICAgIG1fZHVtcFN0YXRpc3Rp
Y3NDYWxsYmFja01hcC5jbGVhcigpOwogI2VuZGlmCiAKICAgICAvLyBUaGlzIHdpbGwgY2F1c2Ug
dXMgdG8gYmUgZGVsZXRlZC4KQEAgLTQ1MSwxOCArNDQxLDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vz
c1Byb3h5Ojp1cGRhdGVQcmV2YWxlbnREb21haW5zVG9CbG9ja0Nvb2tpZXNGb3IoUEFMOjpTZXNz
aW9uSUQKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KLSAgICAKLSAgICBhdXRvIGNhbGxiYWNrSWQgPSBnZW5lcmF0ZUNhbGxiYWNrSUQoKTsKLSAg
ICBhdXRvIGFkZFJlc3VsdCA9IG1fc2NoZWR1bGVTdGF0aXN0aWNzUHJvY2Vzc2luZ0NhbGxiYWNr
TWFwLmFkZChjYWxsYmFja0lkLCBbcHJvdGVjdGVkUHJvY2Vzc1Bvb2wgPSBtYWtlUmVmKG1fcHJv
Y2Vzc1Bvb2wpLCB0b2tlbiA9IHRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCks
IGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJs
ZSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7Ci0gICAgfSk7Ci0gICAgQVNTRVJUX1VO
VVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKLSAgICBzZW5kKE1lc3NhZ2Vz
OjpOZXR3b3JrUHJvY2Vzczo6VXBkYXRlUHJldmFsZW50RG9tYWluc1RvQmxvY2tDb29raWVzRm9y
KHNlc3Npb25JRCwgZG9tYWluc1RvQmxvY2ssIGNhbGxiYWNrSWQpLCAwKTsKLX0KIAotdm9pZCBO
ZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRVcGRhdGVCbG9ja0Nvb2tpZXModWludDY0X3QgY2FsbGJh
Y2tJZCkKLXsKLSAgICBtX3NjaGVkdWxlU3RhdGlzdGljc1Byb2Nlc3NpbmdDYWxsYmFja01hcC50
YWtlKGNhbGxiYWNrSWQpKCk7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3
b3JrUHJvY2Vzczo6VXBkYXRlUHJldmFsZW50RG9tYWluc1RvQmxvY2tDb29raWVzRm9yKHNlc3Np
b25JRCwgZG9tYWluc1RvQmxvY2spLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAK
IHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6aXNQcmV2YWxlbnRSZXNvdXJjZShQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC01NDUsMTUgKzUyNSwx
NCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnNjaGVkdWxlQ29va2llQmxvY2tpbmdVcGRh
dGUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELAogICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNz
YWdlczo6TmV0d29ya1Byb2Nlc3M6OlNjaGVkdWxlQ29va2llQmxvY2tpbmdVcGRhdGUoc2Vzc2lv
bklEKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIE5ldHdvcmtQcm9j
ZXNzUHJveHk6OnNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBPcHRpb25hbDxXYWxsVGltZT4gbW9kaWZpZWRTaW5jZSwgU2hvdWxkR3Jh
bmRmYXRoZXIgc2hvdWxkR3JhbmRmYXRoZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2NoZWR1bGVDbGVh
ckluTWVtb3J5QW5kUGVyc2lzdGVudChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvbmFs
PFdhbGxUaW1lPiBtb2RpZmllZFNpbmNlLCBTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3Mgc2hv
dWxkR3JhbmRmYXRoZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKIHsKICAgICBpZiAoIWNhblNlbmRNZXNzYWdlKCkpIHsKICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGJvb2wgc2hvdWxkR3Jh
bmRmYXRoZXJCb29sID0gc2hvdWxkR3JhbmRmYXRoZXIgPT0gU2hvdWxkR3JhbmRmYXRoZXI6Olll
czsKLSAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpTY2hl
ZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KHNlc3Npb25JRCwgbW9kaWZpZWRTaW5jZSwg
c2hvdWxkR3JhbmRmYXRoZXJCb29sKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAg
IHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlNjaGVkdWxlQ2xl
YXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoc2Vzc2lvbklELCBtb2RpZmllZFNpbmNlLCBzaG91bGRH
cmFuZGZhdGhlciksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAogdm9pZCBOZXR3
b3JrUHJvY2Vzc1Byb3h5OjpzY2hlZHVsZVN0YXRpc3RpY3NBbmREYXRhUmVjb3Jkc1Byb2Nlc3Np
bmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCkBAIC02MDMsMTcgKzU4Miw3IEBAIHZvaWQgTmV0d29ya1Byb2Nl
c3NQcm94eTo6c2V0QWdlQ2FwRm9yQ2xpZW50U2lkZUNvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklECiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgYXV0byBjYWxsYmFja0lk
ID0gZ2VuZXJhdGVDYWxsYmFja0lEKCk7Ci0gICAgYXV0byBhZGRSZXN1bHQgPSBtX3NjaGVkdWxl
U3RhdGlzdGljc1Byb2Nlc3NpbmdDYWxsYmFja01hcC5hZGQoY2FsbGJhY2tJZCwgW3Byb3RlY3Rl
ZFByb2Nlc3NQb29sID0gbWFrZVJlZihtX3Byb2Nlc3NQb29sKSwgdG9rZW4gPSB0aHJvdHRsZXIo
KS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cigpOwotICAgIH0pOwotICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNO
ZXdFbnRyeSk7Ci0gICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlNldEFnZUNhcEZv
ckNsaWVudFNpZGVDb29raWVzKHNlc3Npb25JRCwgc2Vjb25kcywgY2FsbGJhY2tJZCksIDApOwot
fQotCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZFNldEFnZUNhcEZvckNsaWVudFNpZGVD
b29raWVzKHVpbnQ2NF90IGNhbGxiYWNrSWQpCi17Ci0gICAgbV9zY2hlZHVsZVN0YXRpc3RpY3NQ
cm9jZXNzaW5nQ2FsbGJhY2tNYXAudGFrZShjYWxsYmFja0lkKSgpOworICAgIHNlbmRXaXRoQXN5
bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlNldEFnZUNhcEZvckNsaWVudFNpZGVD
b29raWVzKHNlc3Npb25JRCwgc2Vjb25kcyksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsK
IH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRUaW1lVG9MaXZlVXNlckludGVyYWN0
aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU2Vjb25kcyBzZWNvbmRzLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC02MjYsMTEgKzU5NSw2IEBA
IHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0VGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbihQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsCiAgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2Vz
OjpOZXR3b3JrUHJvY2Vzczo6U2V0VGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbihzZXNzaW9uSUQs
IHNlY29uZHMpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgTmV0d29y
a1Byb2Nlc3NQcm94eTo6ZGlkVXBkYXRlUnVudGltZVNldHRpbmdzKHVpbnQ2NF90IGNhbGxiYWNr
SWQpCi17Ci0gICAgbV91cGRhdGVSdW50aW1lU2V0dGluZ3NDYWxsYmFja01hcC50YWtlKGNhbGxi
YWNrSWQpKCk7Ci19Ci0KIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0Tm90aWZ5UGFnZXNX
aGVuVGVsZW1ldHJ5V2FzQ2FwdHVyZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBib29sIHZh
bHVlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAg
ICAgaWYgKCFjYW5TZW5kTWVzc2FnZSgpKSB7CkBAIC03NjEsMTcgKzcyNSwxNCBAQCB2b2lkIE5l
dHdvcmtQcm9jZXNzUHJveHk6OnNldEdyYW5kZmF0aGVyZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBjb25zdCBTdHJpbgogICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29y
a1Byb2Nlc3M6OlNldEdyYW5kZmF0aGVyZWQoc2Vzc2lvbklELCByZXNvdXJjZURvbWFpbiwgaXNH
cmFuZGZhdGhlcmVkKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIE5l
dHdvcmtQcm9jZXNzUHJveHk6Omhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZShQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFN0cmluZyYg
Zmlyc3RQYXJ0eURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBXVEY6
OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY2FsbGJhY2spCit2b2lkIE5ldHdvcmtQ
cm9jZXNzUHJveHk6Omhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZShQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFN0cmluZyYgZmlyc3RQ
YXJ0eURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBXVEY6OkNvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYg
KCFjYW5TZW5kTWVzc2FnZSgpKSB7Ci0gICAgICAgIGNhbGxiYWNrKGZhbHNlKTsKKyAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
YXV0byBjb250ZXh0SWQgPSBnZW5lcmF0ZUNhbGxiYWNrSUQoKTsKLSAgICBhdXRvIGFkZFJlc3Vs
dCA9IG1fc3RvcmFnZUFjY2Vzc1Jlc3BvbnNlQ2FsbGJhY2tNYXAuYWRkKGNvbnRleHRJZCwgV1RG
TW92ZShjYWxsYmFjaykpOwotICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQu
aXNOZXdFbnRyeSk7Ci0gICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6Okhhc1N0b3Jh
Z2VBY2Nlc3NGb3JGcmFtZShzZXNzaW9uSUQsIHJlc291cmNlRG9tYWluLCBmaXJzdFBhcnR5RG9t
YWluLCBmcmFtZUlELCBwYWdlSUQsIGNvbnRleHRJZCksIDApOworICAgIHNlbmRXaXRoQXN5bmNS
ZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6Okhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZShz
ZXNzaW9uSUQsIHJlc291cmNlRG9tYWluLCBmaXJzdFBhcnR5RG9tYWluLCBmcmFtZUlELCBwYWdl
SUQpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nl
c3NQcm94eTo6aGFzU3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0
IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwg
T3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTc5MSwxMCArNzUyLDcg
QEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyhQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFMKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IGF1dG8gY29udGV4dElkID0gZ2VuZXJhdGVDYWxsYmFja0lEKCk7Ci0gICAgYXV0byBhZGRSZXN1
bHQgPSBtX3N0b3JhZ2VBY2Nlc3NSZXF1ZXN0UmVzcG9uc2VDYWxsYmFja01hcC5hZGQoY29udGV4
dElkLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci0gICAgQVNTRVJUX1VOVVNFRChhZGRS
ZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3Jr
UHJvY2Vzczo6UmVxdWVzdFN0b3JhZ2VBY2Nlc3Moc2Vzc2lvbklELCByZXNvdXJjZURvbWFpbiwg
Zmlyc3RQYXJ0eURvbWFpbiwgZnJhbWVJRCwgcGFnZUlELCBwcm9tcHRFbmFibGVkLCBjb250ZXh0
SWQpLCAwKTsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNz
OjpSZXF1ZXN0U3RvcmFnZUFjY2VzcyhzZXNzaW9uSUQsIHJlc291cmNlRG9tYWluLCBmaXJzdFBh
cnR5RG9tYWluLCBmcmFtZUlELCBwYWdlSUQsIHByb21wdEVuYWJsZWQpLCBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6Z3JhbnRTdG9y
YWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiByZXNvdXJj
ZURvbWFpbiwgY29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9tYWluLCBPcHRpb25hbDx1aW50NjRf
dD4gZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBib29sIHVzZXJXYXNQcm9tcHRlZCwgV1RGOjpD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtODA0
LDIwICs3NjIsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmdyYW50U3RvcmFnZUFjY2Vz
cyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cgogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgYXV0byBjb250ZXh0SWQgPSBnZW5lcmF0ZUNhbGxiYWNrSUQoKTsKLSAgICBh
dXRvIGFkZFJlc3VsdCA9IG1fc3RvcmFnZUFjY2Vzc1Jlc3BvbnNlQ2FsbGJhY2tNYXAuYWRkKGNv
bnRleHRJZCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotICAgIEFTU0VSVF9VTlVTRUQo
YWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7Ci0gICAgc2VuZChNZXNzYWdlczo6TmV0
d29ya1Byb2Nlc3M6OkdyYW50U3RvcmFnZUFjY2VzcyhzZXNzaW9uSUQsIHJlc291cmNlRG9tYWlu
LCBmaXJzdFBhcnR5RG9tYWluLCBmcmFtZUlELnZhbHVlKCksIHBhZ2VJRCwgdXNlcldhc1Byb21w
dGVkLCBjb250ZXh0SWQpLCAwKTsKLX0KLQotdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzdG9y
YWdlQWNjZXNzUmVxdWVzdFJlc3VsdCh1bnNpZ25lZCBzdGF0dXMsIHVpbnQ2NF90IGNvbnRleHRJ
ZCkKLXsKLSAgICBtX3N0b3JhZ2VBY2Nlc3NSZXF1ZXN0UmVzcG9uc2VDYWxsYmFja01hcC50YWtl
KGNvbnRleHRJZCkoc3RhdGljX2Nhc3Q8U3RvcmFnZUFjY2Vzc1N0YXR1cz4oc3RhdHVzKSk7Ci19
Ci0KLXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c3RvcmFnZUFjY2Vzc09wZXJhdGlvblJlc3Vs
dChib29sIHdhc0dyYW50ZWQsIHVpbnQ2NF90IGNvbnRleHRJZCkKLXsKLSAgICBtX3N0b3JhZ2VB
Y2Nlc3NSZXNwb25zZUNhbGxiYWNrTWFwLnRha2UoY29udGV4dElkKSh3YXNHcmFudGVkKTsKKyAg
ICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpHcmFudFN0b3Jh
Z2VBY2Nlc3Moc2Vzc2lvbklELCByZXNvdXJjZURvbWFpbiwgZmlyc3RQYXJ0eURvbWFpbiwgZnJh
bWVJRC52YWx1ZSgpLCBwYWdlSUQsIHVzZXJXYXNQcm9tcHRlZCksIFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZW1vdmVBbGxTdG9y
YWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtODI3LDE1ICs3NzIsNyBAQCB2b2lkIE5ldHdv
cmtQcm9jZXNzUHJveHk6OnJlbW92ZUFsbFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBDb21wbAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBjb250ZXh0
SWQgPSBnZW5lcmF0ZUNhbGxiYWNrSUQoKTsKLSAgICBhdXRvIGFkZFJlc3VsdCA9IG1fcmVtb3Zl
QWxsU3RvcmFnZUFjY2Vzc0NhbGxiYWNrTWFwLmFkZChjb250ZXh0SWQsIFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKLSAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0Lmlz
TmV3RW50cnkpOwotICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpSZW1vdmVBbGxT
dG9yYWdlQWNjZXNzKHNlc3Npb25JRCwgY29udGV4dElkKSwgMCk7Ci19Ci0KLXZvaWQgTmV0d29y
a1Byb2Nlc3NQcm94eTo6ZGlkUmVtb3ZlQWxsU3RvcmFnZUFjY2Vzcyh1aW50NjRfdCBjb250ZXh0
SWQpCi17Ci0gICAgbV9yZW1vdmVBbGxTdG9yYWdlQWNjZXNzQ2FsbGJhY2tNYXAudGFrZShjb250
ZXh0SWQpKCk7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vz
czo6UmVtb3ZlQWxsU3RvcmFnZUFjY2VzcyhzZXNzaW9uSUQpLCBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6Z2V0QWxsU3RvcmFnZUFj
Y2Vzc0VudHJpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFZlY3RvcjxTdHJpbmc+JiYgZG9tYWlucyk+JiYgY2FsbGJhY2spCkBAIC04NjMsMTYgKzgw
MCw4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2
YWxlbnRSZXNvdXJjZXMoUEFMOjpTZXNzaW9uSUQKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKLSAgICBhdXRvIGNvbnRleHRJZCA9IGdl
bmVyYXRlQ2FsbGJhY2tJRCgpOwotICAgIGF1dG8gYWRkUmVzdWx0ID0gbV91cGRhdGVSdW50aW1l
U2V0dGluZ3NDYWxsYmFja01hcC5hZGQoY29udGV4dElkLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7Ci0gICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5
KTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6U2V0Q2FjaGVNYXhBZ2VDYXBG
b3JQcmV2YWxlbnRSZXNvdXJjZXMoc2Vzc2lvbklELCBzZWNvbmRzLCBjb250ZXh0SWQpLCAwKTsK
LX0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRTZXRDYWNoZU1heEFnZUNhcEZvclBy
ZXZhbGVudFJlc291cmNlcyh1aW50NjRfdCBjb250ZXh0SWQpCi17Ci0gICAgbV91cGRhdGVSdW50
aW1lU2V0dGluZ3NDYWxsYmFja01hcC50YWtlKGNvbnRleHRJZCkoKTsKKyAgICBzZW5kV2l0aEFz
eW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpTZXRDYWNoZU1heEFnZUNhcEZvclBy
ZXZhbGVudFJlc291cmNlcyhzZXNzaW9uSUQsIHNlY29uZHMpLCBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0Q2FjaGVNYXhBZ2VD
YXAoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTZWNvbmRzIHNlY29uZHMsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTg4MiwxMCArODExLDcgQEAg
dm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRDYWNoZU1heEFnZUNhcChQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIFNlY29uZHMgc2UKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAg
ICBhdXRvIGNvbnRleHRJZCA9IGdlbmVyYXRlQ2FsbGJhY2tJRCgpOwotICAgIGF1dG8gYWRkUmVz
dWx0ID0gbV91cGRhdGVSdW50aW1lU2V0dGluZ3NDYWxsYmFja01hcC5hZGQoY29udGV4dElkLCBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci0gICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQs
IGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vz
czo6U2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoc2Vzc2lvbklELCBzZWNv
bmRzLCBjb250ZXh0SWQpLCAwKTsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5l
dHdvcmtQcm9jZXNzOjpTZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhzZXNz
aW9uSUQsIHNlY29uZHMpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQg
TmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0R3JhbmRmYXRoZXJpbmdUaW1lKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgU2Vjb25kcyBzZWNvbmRzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCkBAIC05NTUsMTAgKzg4MSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nl
c3NQcm94eTo6cmVzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhQQUw6OlNl
c3Npb25JCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgYXV0byBjb250ZXh0SWQg
PSBnZW5lcmF0ZUNhbGxiYWNrSUQoKTsKLSAgICBhdXRvIGFkZFJlc3VsdCA9IG1fdXBkYXRlUnVu
dGltZVNldHRpbmdzQ2FsbGJhY2tNYXAuYWRkKGNvbnRleHRJZCwgV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOwotICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdF
bnRyeSk7Ci0gICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlJlc2V0Q2FjaGVNYXhB
Z2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoc2Vzc2lvbklELCBjb250ZXh0SWQpLCAwKTsKKyAg
ICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpSZXNldENhY2hl
TWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKHNlc3Npb25JRCksIFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZXNldFBhcmFt
ZXRlcnNUb0RlZmF1bHRWYWx1ZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC05ODEsMTMgKzkwNCwxMiBA
QCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnN1Ym1pdFRlbGVtZXRyeShQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYQogICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdl
czo6TmV0d29ya1Byb2Nlc3M6OlN1Ym1pdFRlbGVtZXRyeShzZXNzaW9uSUQpLCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2NoZWR1
bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGJv
b2wgc2hvdWxkR3JhbmRmYXRoZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2NoZWR1bGVDbGVhckluTWVt
b3J5QW5kUGVyc2lzdGVudChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFNob3VsZEdyYW5kZmF0
aGVyU3RhdGlzdGljcyBzaG91bGRHcmFuZGZhdGhlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICghY2FuU2VuZE1lc3NhZ2UoKSkgewog
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAg
IAogCiAgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6U2No
ZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChzZXNzaW9uSUQsIHsgfSwgc2hvdWxkR3Jh
bmRmYXRoZXIpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCmluZGV4
IGUzNTFhMDZiNzVhZDc4ZTUwOTk1ZmExZjhmZDhiYmEzOGViYjBhOWUuLmYwOThkOGNkZTY2ZTY5
N2U5MDIyY2RhMGQwYWE5OTgwZjc4ZTBiMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTU3LDcgKzU3LDggQEAgbmFt
ZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBEb3dubG9hZFByb3h5OwogY2xhc3MgRG93bmxvYWRQcm94
eU1hcDsKIGNsYXNzIFdlYlByb2Nlc3NQb29sOwotZW51bSBjbGFzcyBTdG9yYWdlQWNjZXNzU3Rh
dHVzIDogdW5zaWduZWQ7CitlbnVtIGNsYXNzIFNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljcyA6
IGJvb2w7CitlbnVtIGNsYXNzIFN0b3JhZ2VBY2Nlc3NTdGF0dXMgOiB1aW50OF90OwogZW51bSBj
bGFzcyBXZWJzaXRlRGF0YUZldGNoT3B0aW9uOwogZW51bSBjbGFzcyBXZWJzaXRlRGF0YVR5cGU7
CiBzdHJ1Y3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM7CkBAIC0xMDcsMTUgKzEw
OCwxNSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRQcmV2YWxlbnRSZXNvdXJjZShQQUw6OlNlc3Np
b25JRCwgY29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKICAgICB2b2lkIHNldFByZXZhbGVudFJlc291cmNlRm9yRGVidWdNb2RlKFBBTDo6
U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0VmVyeVByZXZhbGVudFJlc291cmNlKFBBTDo6U2Vz
c2lvbklELCBjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOwotICAgIHZvaWQgaGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKFBBTDo6U2Vzc2lv
bklELCBjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBjb25zdCBTdHJpbmcmIGZpcnN0UGFy
dHlEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJiBjYWxsYmFjayk7CisgICAgdm9pZCBoYXNTdG9yYWdlQWNjZXNz
Rm9yRnJhbWUoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIGNv
bnN0IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3Qg
cGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAgICB2b2lkIGdldEFs
bFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFZlY3RvcjxTdHJpbmc+JiYgZG9tYWlucyk+JiYpOwotICAgIHZvaWQgZ3JhbnRTdG9yYWdl
QWNjZXNzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBjb25z
dCBTdHJpbmcmIGZpcnN0UGFydHlEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1
aW50NjRfdCBwYWdlSUQsIGJvb2wgdXNlcldhc1Byb21wdGVkLCBXVEY6OkNvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQgZ3JhbnRTdG9yYWdlQWNjZXNzKFBBTDo6U2Vz
c2lvbklELCBjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBjb25zdCBTdHJpbmcmIGZpcnN0
UGFydHlEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQs
IGJvb2wgdXNlcldhc1Byb21wdGVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsK
ICAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYg
c3ViRnJhbWVIb3N0LCBjb25zdCBTdHJpbmcmIHRvcEZyYW1lSG9zdCwgT3B0aW9uYWw8dWludDY0
X3Q+IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4mJik7CiAgICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCwgY29u
c3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwgY29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9tYWlu
LCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBib29sIHByb21w
dEVuYWJsZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1N0YXR1cyk+JiYp
OwogICAgIHZvaWQgcmVzZXRQYXJhbWV0ZXJzVG9EZWZhdWx0VmFsdWVzKFBBTDo6U2Vzc2lvbklE
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgcmVtb3ZlQWxsU3RvcmFn
ZUFjY2VzcyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAg
ICB2b2lkIHNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoUEFMOjpTZXNzaW9uSUQs
IGJvb2wgc2hvdWxkR3JhbmRmYXRoZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0g
ICAgdm9pZCBzY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFBBTDo6U2Vzc2lvbklE
LCBPcHRpb25hbDxXYWxsVGltZT4gbW9kaWZpZWRTaW5jZSwgU2hvdWxkR3JhbmRmYXRoZXIsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBzY2hlZHVsZUNsZWFySW5NZW1v
cnlBbmRQZXJzaXN0ZW50KFBBTDo6U2Vzc2lvbklELCBTaG91bGRHcmFuZGZhdGhlclN0YXRpc3Rp
Y3MsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBzY2hlZHVsZUNsZWFy
SW5NZW1vcnlBbmRQZXJzaXN0ZW50KFBBTDo6U2Vzc2lvbklELCBPcHRpb25hbDxXYWxsVGltZT4g
bW9kaWZpZWRTaW5jZSwgU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2NoZWR1bGVDb29raWVCbG9ja2luZ1VwZGF0ZShQ
QUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHN1
Ym1pdFRlbGVtZXRyeShQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKICAgICB2b2lkIHNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKFBBTDo6
U2Vzc2lvbklELCBTZWNvbmRzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpAQCAtMTg1
LDE0ICsxODYsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgbG9nR2xvYmFsRGlhZ25vc3RpY01lc3Nh
Z2VXaXRoVmFsdWUoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0
aW9uLCBkb3VibGUgdmFsdWUsIHVuc2lnbmVkIHNpZ25pZmljYW50RmlndXJlcywgV2ViQ29yZTo6
U2hvdWxkU2FtcGxlKTsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAg
IHZvaWQgZGlkRHVtcFJlc291cmNlTG9hZFN0YXRpc3RpY3MoU3RyaW5nIGR1bXBlZFN0YXRpc3Rp
Y3MsIHVpbnQ2NF90IGNhbGxiYWNrSWQpOwotICAgIHZvaWQgZGlkVXBkYXRlQmxvY2tDb29raWVz
KHVpbnQ2NF90IGNvbnRleHRJZCk7Ci0gICAgdm9pZCBkaWRTZXRBZ2VDYXBGb3JDbGllbnRTaWRl
Q29va2llcyh1aW50NjRfdCBjb250ZXh0SWQpOwotICAgIHZvaWQgc3RvcmFnZUFjY2Vzc09wZXJh
dGlvblJlc3VsdChib29sIHdhc0dyYW50ZWQsIHVpbnQ2NF90IGNvbnRleHRJZCk7Ci0gICAgdm9p
ZCBzdG9yYWdlQWNjZXNzUmVxdWVzdFJlc3VsdCh1bnNpZ25lZCB3YXNHcmFudGVkLCB1aW50NjRf
dCBjb250ZXh0SWQpOwogICAgIHZvaWQgYWxsU3RvcmFnZUFjY2Vzc0VudHJpZXNSZXN1bHQoVmVj
dG9yPFN0cmluZz4mJiBkb21haW5zLCB1aW50NjRfdCBjb250ZXh0SWQpOwotICAgIHZvaWQgZGlk
UmVtb3ZlQWxsU3RvcmFnZUFjY2Vzcyh1aW50NjRfdCBjb250ZXh0SWQpOwogICAgIHZvaWQgZGlk
U2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXModWludDY0X3QgY29udGV4dElk
KTsKLSAgICB2b2lkIGRpZFVwZGF0ZVJ1bnRpbWVTZXR0aW5ncyh1aW50NjRfdCBjb250ZXh0SWQp
OwogICAgIHZvaWQgbm90aWZ5UmVzb3VyY2VMb2FkU3RhdGlzdGljc1Byb2Nlc3NlZCgpOwogICAg
IHZvaWQgbm90aWZ5V2Vic2l0ZURhdGFEZWxldGlvbkZvclRvcFByaXZhdGVseU93bmVkRG9tYWlu
c0ZpbmlzaGVkKCk7CiAgICAgdm9pZCBub3RpZnlXZWJzaXRlRGF0YVNjYW5Gb3JUb3BQcml2YXRl
bHlDb250cm9sbGVkRG9tYWluc0ZpbmlzaGVkKCk7CkBAIC0yNDAsMTYgKzIzNSwxMCBAQCBwcml2
YXRlOgogICAgIHVuc2lnbmVkIG1fc3luY0FsbENvb2tpZXNDb3VudGVyIHsgMCB9OwogCiAjaWYg
RU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+PiBtX3NjaGVkdWxlU3RhdGlzdGljc1Byb2Nlc3NpbmdD
YWxsYmFja01hcDsKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGJvb2wgd2FzR3JhbnRlZCk+PiBtX3N0b3JhZ2VBY2Nlc3NSZXNwb25zZUNhbGxiYWNrTWFwOwot
ICAgIEhhc2hNYXA8dWludDY0X3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vz
c1N0YXR1cyB3YXNHcmFudGVkKT4+IG1fc3RvcmFnZUFjY2Vzc1JlcXVlc3RSZXNwb25zZUNhbGxi
YWNrTWFwOwotICAgIEhhc2hNYXA8dWludDY0X3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4+
IG1fcmVtb3ZlQWxsU3RvcmFnZUFjY2Vzc0NhbGxiYWNrTWFwOwogICAgIEhhc2hNYXA8dWludDY0
X3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJiBkb21haW5zKT4+IG1f
YWxsU3RvcmFnZUFjY2Vzc0VudHJpZXNDYWxsYmFja01hcDsKICAgICBIYXNoTWFwPHVpbnQ2NF90
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPj4gbV9kdW1wU3RhdGlzdGlj
c0NhbGxiYWNrTWFwOwogI2VuZGlmCiAKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+PiBtX3VwZGF0ZVJ1bnRpbWVTZXR0aW5nc0NhbGxiYWNrTWFwOwotCiAj
aWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKICAgICBIYXNoU2V0PFdlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5Kj4gbV93ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94aWVzOwogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KaW5kZXggODRlMGU4ZjY0NDExOGVjNDcz
NzRlMmRjYjM4ZTQzZWExM2M4OGUzNS4uN2NhYWU5NWYzNTM1ZGQ5NjM2ZDJhOTg5YTI0M2E4MGY0
Mjg0YTEzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgpAQCAtNDIsMTQgKzQyLDcg
QEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3NQcm94eSBMZWdhY3lSZWNlaXZlciB7CiAKICNp
ZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIERpZER1bXBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzKFN0cmluZyBkdW1wZWRTdGF0aXN0aWNzLCB1aW50NjRfdCBjYWxsYmFja0lk
KQotICAgIERpZFVwZGF0ZUJsb2NrQ29va2llcyh1aW50NjRfdCBjYWxsYmFja0lkKQotICAgIERp
ZFNldEFnZUNhcEZvckNsaWVudFNpZGVDb29raWVzKHVpbnQ2NF90IGNhbGxiYWNrSWQpCi0gICAg
U3RvcmFnZUFjY2Vzc09wZXJhdGlvblJlc3VsdChib29sIHdhc0dyYW50ZWQsIHVpbnQ2NF90IGNv
bnRleHRJZCkKLSAgICBTdG9yYWdlQWNjZXNzUmVxdWVzdFJlc3VsdCh1bnNpZ25lZCB3YXNHcmFu
dGVkLCB1aW50NjRfdCBjb250ZXh0SWQpCiAgICAgQWxsU3RvcmFnZUFjY2Vzc0VudHJpZXNSZXN1
bHQoVmVjdG9yPFN0cmluZz4gZG9tYWlucywgdWludDY0X3QgY29udGV4dElkKQotICAgIERpZFJl
bW92ZUFsbFN0b3JhZ2VBY2Nlc3ModWludDY0X3QgY29udGV4dElkKQotICAgIERpZFNldENhY2hl
TWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKHVpbnQ2NF90IGNvbnRleHRJZCkKLSAgICBE
aWRVcGRhdGVSdW50aW1lU2V0dGluZ3ModWludDY0X3QgY29udGV4dElkKQogICAgIE5vdGlmeVJl
c291cmNlTG9hZFN0YXRpc3RpY3NQcm9jZXNzZWQoKQogICAgIE5vdGlmeVdlYnNpdGVEYXRhRGVs
ZXRpb25Gb3JUb3BQcml2YXRlbHlPd25lZERvbWFpbnNGaW5pc2hlZCgpCiAgICAgTm90aWZ5V2Vi
c2l0ZURhdGFTY2FuRm9yVG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbnNGaW5pc2hlZCgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBlNzRmMzhkYzU5YjQw
MGQ0MDI2ZTJjYWQzYzY1OWUwNTI1YjQzYzlhLi5hMDBkYmJiOGU3MTBjN2IyNTM3NmNiODhhZWJi
ZDI3NGYxNjE2NTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAK
QEAgLTgxLDYgKzgxLDcgQEAKICNpbmNsdWRlICJTYWZlQnJvd3NpbmdXYXJuaW5nLmgiCiAjaW5j
bHVkZSAiU2hhcmVTaGVldENhbGxiYWNrSUQuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXJEYXRh
UmVmZXJlbmNlLmgiCisjaW5jbHVkZSAiU3RvcmFnZUFjY2Vzc1N0YXR1cy5oIgogI2luY2x1ZGUg
IlRleHRDaGVja2VyLmgiCiAjaW5jbHVkZSAiVGV4dENoZWNrZXJTdGF0ZS5oIgogI2luY2x1ZGUg
IlVJTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmNwcAppbmRleCAyY2E3NjM4MWJmZjRiMjVlY2VjMDAxZjQ0ZDEyYTJh
YzBhZWEyMDE1Li40OTZjNjFmMTFhN2E1NTBmZmY5MmNmZWRjYjliZGY4OTUwOTAxYWQyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC01OTEsOSArNTkx
LDYgQEAgTmV0d29ya1Byb2Nlc3NQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OmVuc3VyZU5ldHdvcmtQ
cm9jZXNzKFdlYnNpdGVEYXRhU3RvcmUqIHdpdGgKICAgICAgICAgICAgIG1fbmV0d29ya1Byb2Nl
c3MtPmFkZFNlc3Npb24oKndlYnNpdGVEYXRhU3RvcmUpOwogICAgIH0KIAotICAgIGlmIChtX3dl
YnNpdGVEYXRhU3RvcmUpCi0gICAgICAgIG1fd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFT
dG9yZSgpLmRpZENyZWF0ZU5ldHdvcmtQcm9jZXNzKCk7Ci0KICAgICByZXR1cm4gKm1fbmV0d29y
a1Byb2Nlc3M7CiB9CiAKQEAgLTEwMzQsNiArMTAzMSw5IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6
OnByb2Nlc3NEaWRGaW5pc2hMYXVuY2hpbmcoV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzKQogICAg
ICAgICBwcm9jZXNzLT5jb25uZWN0aW9uKCktPmlnbm9yZVRpbWVvdXRzRm9yVGVzdGluZygpOwog
CiAgICAgbV9jb25uZWN0aW9uQ2xpZW50LmRpZENyZWF0ZUNvbm5lY3Rpb24odGhpcywgcHJvY2Vz
cy0+d2ViQ29ubmVjdGlvbigpKTsKKworICAgIGlmIChtX3dlYnNpdGVEYXRhU3RvcmUpCisgICAg
ICAgIG1fd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLmRpZENyZWF0ZU5ldHdv
cmtQcm9jZXNzKCk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmRpc2Nvbm5lY3RQcm9jZXNz
KFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKaW5kZXggMmExNGE1YzMy
NzlmNDgyOTk1ZDY3Yjk4MDllZDUzYmU1ZmYwMzgyMi4uZTdlZjU3NTRlMGIzNjFmOGY2MTg4ZDZk
Y2QwYTI4OThjM2Y1NWE0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKQEAgLTMzLDYgKzMzLDggQEAKICNp
bmNsdWRlICJEZXZpY2VJZEhhc2hTYWx0U3RvcmFnZS5oIgogI2luY2x1ZGUgIk1vY2tBdXRoZW50
aWNhdG9yTWFuYWdlci5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzTWVzc2FnZXMuaCIKKyNp
bmNsdWRlICJTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3MuaCIKKyNpbmNsdWRlICJTdG9yYWdl
QWNjZXNzU3RhdHVzLmgiCiAjaW5jbHVkZSAiU3RvcmFnZU1hbmFnZXIuaCIKICNpbmNsdWRlICJX
ZWJDb29raWVNYW5hZ2VyUHJveHkuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIK
QEAgLTkzOCw3ICs5NDAsNyBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnJlbW92ZURhdGEoT3B0
aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzLCBXYWxsVGltZQogICAgICAgICAKICAg
ICAgICAgLy8gSWYgd2UgYXJlIGRlbGV0aW5nIGFsbCBvZiB0aGUgZGF0YSB0eXBlcyB0aGF0IHRo
ZSByZXNvdXJjZSBsb2FkIHN0YXRpc3RpY3Mgc3RvcmUgbW9uaXRvcnMKICAgICAgICAgLy8gd2Ug
ZG8gbm90IG5lZWQgdG8gcmUtZ3JhbmRmYXRoZXIgb2xkIGRhdGEuCi0gICAgICAgIGF1dG8gc2hv
dWxkR3JhbmRmYXRoZXIgPSAoKG1vbml0b3JlZFR5cGVzUmF3ICYgZGVsZXRlZFR5cGVzUmF3KSA9
PSBtb25pdG9yZWRUeXBlc1JhdykgPyBTaG91bGRHcmFuZGZhdGhlcjo6Tm8gOiBTaG91bGRHcmFu
ZGZhdGhlcjo6WWVzOworICAgICAgICBhdXRvIHNob3VsZEdyYW5kZmF0aGVyID0gKChtb25pdG9y
ZWRUeXBlc1JhdyAmIGRlbGV0ZWRUeXBlc1JhdykgPT0gbW9uaXRvcmVkVHlwZXNSYXcpID8gU2hv
dWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzOjpObyA6IFNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGlj
czo6WWVzOwogICAgICAgICAKICAgICAgICAgaWYgKG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljcykg
ewogICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5hZGRQZW5kaW5nQ2FsbGJhY2soKTsK
QEAgLTEyNDgsMTEgKzEyNTAsMTEgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpyZW1vdmVEYXRh
KE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcywgY29uc3QgVmUKICAgICAgICAg
Ly8gd2UgZG8gbm90IG5lZWQgdG8gcmUtZ3JhbmRmYXRoZXIgb2xkIGRhdGEuCiAgICAgICAgIGNh
bGxiYWNrQWdncmVnYXRvci0+YWRkUGVuZGluZ0NhbGxiYWNrKCk7CiAgICAgICAgIGlmICgobW9u
aXRvcmVkVHlwZXNSYXcgJiBkZWxldGVkVHlwZXNSYXcpID09IG1vbml0b3JlZFR5cGVzUmF3KQot
ICAgICAgICAgICAgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5zY2hlZHVsZUNsZWFySW5NZW1v
cnlBbmRQZXJzaXN0ZW50KFNob3VsZEdyYW5kZmF0aGVyOjpObywgW2NhbGxiYWNrQWdncmVnYXRv
cl0geworICAgICAgICAgICAgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5zY2hlZHVsZUNsZWFy
SW5NZW1vcnlBbmRQZXJzaXN0ZW50KFNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljczo6Tm8sIFtj
YWxsYmFja0FnZ3JlZ2F0b3JdIHsKICAgICAgICAgICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3It
PnJlbW92ZVBlbmRpbmdDYWxsYmFjaygpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+c2NoZWR1bGVDbGVhckluTWVt
b3J5QW5kUGVyc2lzdGVudChTaG91bGRHcmFuZGZhdGhlcjo6WWVzLCBbY2FsbGJhY2tBZ2dyZWdh
dG9yXSB7CisgICAgICAgICAgICBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MtPnNjaGVkdWxlQ2xl
YXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzOjpZZXMs
IFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsKICAgICAgICAgICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0
b3ItPnJlbW92ZVBlbmRpbmdDYWxsYmFjaygpOwogICAgICAgICAgICAgfSk7CiAKQEAgLTEyODgs
MTAgKzEyOTAsOCBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNldE1heFN0YXRpc3RpY3NFbnRy
aWVzKHNpemVfdCBtYXhpbXVtRW50cnlDb3VudCwgQ29tcGxldAogICAgIAogICAgIGF1dG8gY2Fs
bGJhY2tBZ2dyZWdhdG9yID0gQ2FsbGJhY2tBZ2dyZWdhdG9yOjpjcmVhdGUoV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOwogCi0gICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQ
b29scygpKSB7Ci0gICAgICAgIGlmIChhdXRvKiBwcm9jZXNzID0gcHJvY2Vzc1Bvb2wtPm5ldHdv
cmtQcm9jZXNzKCkpCi0gICAgICAgICAgICBwcm9jZXNzLT5zZXRNYXhTdGF0aXN0aWNzRW50cmll
cyhtX3Nlc3Npb25JRCwgbWF4aW11bUVudHJ5Q291bnQsIFtwcm9jZXNzUG9vbCwgY2FsbGJhY2tB
Z2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKLSAgICB9Cisg
ICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKQorICAgICAgICBwcm9j
ZXNzUG9vbC0+ZW5zdXJlTmV0d29ya1Byb2Nlc3MoKS5zZXRNYXhTdGF0aXN0aWNzRW50cmllcyht
X3Nlc3Npb25JRCwgbWF4aW11bUVudHJ5Q291bnQsIFtwcm9jZXNzUG9vbCwgY2FsbGJhY2tBZ2dy
ZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKIH0KIAogdm9pZCBX
ZWJzaXRlRGF0YVN0b3JlOjpzZXRQcnVuZUVudHJpZXNEb3duVG8oc2l6ZV90IHBydW5lVGFyZ2V0
Q291bnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAg
LTEzMDYsOCArMTMwNiw3IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6c2V0UHJ1bmVFbnRyaWVz
RG93blRvKHNpemVfdCBwcnVuZVRhcmdldENvdW50LCBDb21wbGV0aW9uCiAgICAgYXV0byBjYWxs
YmFja0FnZ3JlZ2F0b3IgPSBDYWxsYmFja0FnZ3JlZ2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSk7CiAKICAgICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vzc1Bv
b2xzKCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHByb2Nlc3MgPSBwcm9jZXNzUG9vbC0+bmV0d29y
a1Byb2Nlc3MoKSkKLSAgICAgICAgICAgIHByb2Nlc3MtPnNldFBydW5lRW50cmllc0Rvd25Ubyht
X3Nlc3Npb25JRCwgcHJ1bmVUYXJnZXRDb3VudCwgW3Byb2Nlc3NQb29sLCBjYWxsYmFja0FnZ3Jl
Z2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOworICAgICAgICBwcm9j
ZXNzUG9vbC0+ZW5zdXJlTmV0d29ya1Byb2Nlc3MoKS5zZXRQcnVuZUVudHJpZXNEb3duVG8obV9z
ZXNzaW9uSUQsIHBydW5lVGFyZ2V0Q291bnQsIFtwcm9jZXNzUG9vbCwgY2FsbGJhY2tBZ2dyZWdh
dG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKICAgICB9CiB9CiAKQEAg
LTEzMjIsMTAgKzEzMjEsOCBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNldEdyYW5kZmF0aGVy
aW5nVGltZShTZWNvbmRzIHNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVyPAogICAgIAogICAgIGF1
dG8gY2FsbGJhY2tBZ2dyZWdhdG9yID0gQ2FsbGJhY2tBZ2dyZWdhdG9yOjpjcmVhdGUoV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOwogCi0gICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IHBy
b2Nlc3NQb29scygpKSB7Ci0gICAgICAgIGlmIChhdXRvKiBwcm9jZXNzID0gcHJvY2Vzc1Bvb2wt
Pm5ldHdvcmtQcm9jZXNzKCkpCi0gICAgICAgICAgICBwcm9jZXNzLT5zZXRHcmFuZGZhdGhlcmlu
Z1RpbWUobV9zZXNzaW9uSUQsIHNlY29uZHMsIFtwcm9jZXNzUG9vbCwgY2FsbGJhY2tBZ2dyZWdh
dG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKLSAgICB9CisgICAgZm9y
IChhdXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKQorICAgICAgICBwcm9jZXNzUG9v
bC0+ZW5zdXJlTmV0d29ya1Byb2Nlc3MoKS5zZXRHcmFuZGZhdGhlcmluZ1RpbWUobV9zZXNzaW9u
SUQsIHNlY29uZHMsIFtwcm9jZXNzUG9vbCwgY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tB
Z2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKIH0KIAogdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpz
ZXRDYWNoZU1heEFnZUNhcChTZWNvbmRzIHNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTEzNDAsMTAgKzEzMzcsOCBAQCB2b2lkIFdlYnNp
dGVEYXRhU3RvcmU6OnNldENhY2hlTWF4QWdlQ2FwKFNlY29uZHMgc2Vjb25kcywgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZAogCiAgICAgYXV0byBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBDYWxsYmFja0Fn
Z3JlZ2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAKLSAgICBmb3Ig
KGF1dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xzKCkpIHsKLSAgICAgICAgaWYgKGF1dG8q
IHByb2Nlc3MgPSBwcm9jZXNzUG9vbC0+bmV0d29ya1Byb2Nlc3MoKSkKLSAgICAgICAgICAgIHBy
b2Nlc3MtPnNldENhY2hlTWF4QWdlQ2FwKG1fc2Vzc2lvbklELCBzZWNvbmRzLCBbcHJvY2Vzc1Bv
b2wsIGNhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsg
fSk7Ci0gICAgfQorICAgIGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBwcm9jZXNzUG9vbHMoKSkK
KyAgICAgICAgcHJvY2Vzc1Bvb2wtPmVuc3VyZU5ldHdvcmtQcm9jZXNzKCkuc2V0Q2FjaGVNYXhB
Z2VDYXAobV9zZXNzaW9uSUQsIHNlY29uZHMsIFtwcm9jZXNzUG9vbCwgY2FsbGJhY2tBZ2dyZWdh
dG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKIH0KIAogdm9pZCBXZWJz
aXRlRGF0YVN0b3JlOjpzZXRNaW5pbXVtVGltZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwoU2Vj
b25kcyBzZWNvbmRzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCkBAIC0xMzU3LDEwICsxMzUyLDggQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzZXRNaW5p
bXVtVGltZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwoU2Vjb25kcyBzZWNvbmRzLAogICAgIAog
ICAgIGF1dG8gY2FsbGJhY2tBZ2dyZWdhdG9yID0gQ2FsbGJhY2tBZ2dyZWdhdG9yOjpjcmVhdGUo
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogCi0gICAgZm9yIChhdXRvJiBwcm9jZXNzUG9v
bCA6IHByb2Nlc3NQb29scygpKSB7Ci0gICAgICAgIGlmIChhdXRvKiBwcm9jZXNzID0gcHJvY2Vz
c1Bvb2wtPm5ldHdvcmtQcm9jZXNzKCkpCi0gICAgICAgICAgICBwcm9jZXNzLT5zZXRNaW5pbXVt
VGltZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwobV9zZXNzaW9uSUQsIHNlY29uZHMsIFtwcm9j
ZXNzUG9vbCwgY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYo
KV0geyB9KTsKLSAgICB9CisgICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29s
cygpKQorICAgICAgICBwcm9jZXNzUG9vbC0+ZW5zdXJlTmV0d29ya1Byb2Nlc3MoKS5zZXRNaW5p
bXVtVGltZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwobV9zZXNzaW9uSUQsIHNlY29uZHMsIFtw
cm9jZXNzUG9vbCwgY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlS
ZWYoKV0geyB9KTsKIH0KICAgICAKIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6ZHVtcFJlc291cmNl
TG9hZFN0YXRpc3RpY3MoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKQEAgLTE0MjEsOCArMTQxNCw3IEBAIHZvaWQgV2Vic2l0ZURhdGFT
dG9yZTo6c2V0UHJldmFsZW50UmVzb3VyY2UoY29uc3QgVVJMJiB1cmwsIENvbXBsZXRpb25IYW5k
bGVyPHZvCiAgICAgYXV0byBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBDYWxsYmFja0FnZ3JlZ2F0b3I6
OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAKICAgICBmb3IgKGF1dG8mIHBy
b2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xzKCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHByb2Nlc3Mg
PSBwcm9jZXNzUG9vbC0+bmV0d29ya1Byb2Nlc3MoKSkKLSAgICAgICAgICAgIHByb2Nlc3MtPnNl
dFByZXZhbGVudFJlc291cmNlKG1fc2Vzc2lvbklELCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzOjpwcmltYXJ5RG9tYWluKHVybCksIFtwcm9jZXNzUG9vbCwgY2FsbGJhY2tBZ2dyZWdh
dG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKKyAgICAgICAgcHJvY2Vz
c1Bvb2wtPmVuc3VyZU5ldHdvcmtQcm9jZXNzKCkuc2V0UHJldmFsZW50UmVzb3VyY2UobV9zZXNz
aW9uSUQsIFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M6OnByaW1hcnlEb21haW4odXJs
KSwgW3Byb2Nlc3NQb29sLCBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3Iu
Y29weVJlZigpXSB7IH0pOwogICAgIH0KIH0KIApAQCAtMTUwNCwxMCArMTQ5Niw4IEBAIHZvaWQg
V2Vic2l0ZURhdGFTdG9yZTo6c2V0U2hvdWxkQ2xhc3NpZnlSZXNvdXJjZXNCZWZvcmVEYXRhUmVj
b3Jkc1JlbW92YWwoYm9vbCB2CiAgICAgCiAgICAgYXV0byBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBD
YWxsYmFja0FnZ3JlZ2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAK
LSAgICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xzKCkpIHsKLSAgICAgICAg
aWYgKGF1dG8qIHByb2Nlc3MgPSBwcm9jZXNzUG9vbC0+bmV0d29ya1Byb2Nlc3MoKSkKLSAgICAg
ICAgICAgIHByb2Nlc3MtPnNldFNob3VsZENsYXNzaWZ5UmVzb3VyY2VzQmVmb3JlRGF0YVJlY29y
ZHNSZW1vdmFsKG1fc2Vzc2lvbklELCB2YWx1ZSwgW3Byb2Nlc3NQb29sLCBjYWxsYmFja0FnZ3Jl
Z2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOwotICAgIH0KKyAgICBm
b3IgKGF1dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xzKCkpCisgICAgICAgIHByb2Nlc3NQ
b29sLT5lbnN1cmVOZXR3b3JrUHJvY2VzcygpLnNldFNob3VsZENsYXNzaWZ5UmVzb3VyY2VzQmVm
b3JlRGF0YVJlY29yZHNSZW1vdmFsKG1fc2Vzc2lvbklELCB2YWx1ZSwgW3Byb2Nlc3NQb29sLCBj
YWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOwog
fQogCiB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNldFN1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdp
bihjb25zdCBVUkwmIHN1YmZyYW1lLCBjb25zdCBVUkwmIHRvcEZyYW1lLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC0xNzUxLDcgKzE3NDEsNyBAQCB2
b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnN1Ym1pdFRlbGVtZXRyeSgpCiAgICAgfQogfQogCi12b2lk
IFdlYnNpdGVEYXRhU3RvcmU6OnNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoV2Fs
bFRpbWUgbW9kaWZpZWRTaW5jZSwgU2hvdWxkR3JhbmRmYXRoZXIgc2hvdWxkR3JhbmRmYXRoZXIs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2Vi
c2l0ZURhdGFTdG9yZTo6c2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChXYWxsVGlt
ZSBtb2RpZmllZFNpbmNlLCBTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3Mgc2hvdWxkR3JhbmRm
YXRoZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsK
ICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogICAgIApAQCAtMTc2OCw3ICsxNzU4LDcg
QEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0
ZW50KFdhbGxUaW1lIG1vZGlmaWVkU2luY2UKICAgICB9CiB9CiAKLXZvaWQgV2Vic2l0ZURhdGFT
dG9yZTo6c2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChTaG91bGRHcmFuZGZhdGhl
ciBzaG91bGRHcmFuZGZhdGhlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQordm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzY2hlZHVsZUNsZWFySW5NZW1vcnlB
bmRQZXJzaXN0ZW50KFNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljcyBzaG91bGRHcmFuZGZhdGhl
ciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAg
IEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAgICAgCkBAIC0xODMzLDEwICsxODIzLDggQEAg
dm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzZXRBZ2VDYXBGb3JDbGllbnRTaWRlQ29va2llcyhPcHRp
b25hbDxTZWNvbmRzPiBzZWNvbmRzLAogewogICAgIGF1dG8gY2FsbGJhY2tBZ2dyZWdhdG9yID0g
Q2FsbGJhY2tBZ2dyZWdhdG9yOjpjcmVhdGUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwog
ICAgIAotICAgIGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBwcm9jZXNzUG9vbHMoKSkgewotICAg
ICAgICBpZiAoYXV0byogcHJvY2VzcyA9IHByb2Nlc3NQb29sLT5uZXR3b3JrUHJvY2VzcygpKQot
ICAgICAgICAgICAgcHJvY2Vzcy0+c2V0QWdlQ2FwRm9yQ2xpZW50U2lkZUNvb2tpZXMobV9zZXNz
aW9uSUQsIHNlY29uZHMsIFtwcm9jZXNzUG9vbCwgY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJh
Y2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKLSAgICB9CisgICAgZm9yIChhdXRvJiBwcm9j
ZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKQorICAgICAgICBwcm9jZXNzUG9vbC0+ZW5zdXJlTmV0
d29ya1Byb2Nlc3MoKS5zZXRBZ2VDYXBGb3JDbGllbnRTaWRlQ29va2llcyhtX3Nlc3Npb25JRCwg
c2Vjb25kcywgW3Byb2Nlc3NQb29sLCBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3Jl
Z2F0b3IuY29weVJlZigpXSB7IH0pOwogfQogCiB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNldExh
c3RTZWVuKGNvbnN0IFVSTCYgdXJsLCBTZWNvbmRzIHNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTE4NjksMTAgKzE4NTcsOCBAQCB2b2lk
IFdlYnNpdGVEYXRhU3RvcmU6OnNldE5vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5u
ZWQoYm9vbCB2YWx1ZSwgQ29tcAogCiAgICAgYXV0byBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBDYWxs
YmFja0FnZ3JlZ2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAKLSAg
ICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xzKCkpIHsKLSAgICAgICAgaWYg
KGF1dG8qIHByb2Nlc3MgPSBwcm9jZXNzUG9vbC0+bmV0d29ya1Byb2Nlc3MoKSkKLSAgICAgICAg
ICAgIHByb2Nlc3MtPnNldE5vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQobV9z
ZXNzaW9uSUQsIHZhbHVlLCBbcHJvY2Vzc1Bvb2wsIGNhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxi
YWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7Ci0gICAgfQorICAgIGZvciAoYXV0byYgcHJv
Y2Vzc1Bvb2wgOiBwcm9jZXNzUG9vbHMoKSkKKyAgICAgICAgcHJvY2Vzc1Bvb2wtPmVuc3VyZU5l
dHdvcmtQcm9jZXNzKCkuc2V0Tm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5lZCht
X3Nlc3Npb25JRCwgdmFsdWUsIFtwcm9jZXNzUG9vbCwgY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2Fs
bGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKIH0KIAogdm9pZCBXZWJzaXRlRGF0YVN0
b3JlOjpzZXROb3RpZnlQYWdlc1doZW5UZWxlbWV0cnlXYXNDYXB0dXJlZChib29sIHZhbHVlLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC0xODg0LDEw
ICsxODcwLDggQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzZXROb3RpZnlQYWdlc1doZW5UZWxl
bWV0cnlXYXNDYXB0dXJlZChib29sIHZhbHVlLCBDb21wbGUKICAgICAKICAgICBhdXRvIGNhbGxi
YWNrQWdncmVnYXRvciA9IENhbGxiYWNrQWdncmVnYXRvcjo6Y3JlYXRlKFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKICAgICAKLSAgICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vz
c1Bvb2xzKCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHByb2Nlc3MgPSBwcm9jZXNzUG9vbC0+bmV0
d29ya1Byb2Nlc3MoKSkKLSAgICAgICAgICAgIHByb2Nlc3MtPnNldE5vdGlmeVBhZ2VzV2hlblRl
bGVtZXRyeVdhc0NhcHR1cmVkKG1fc2Vzc2lvbklELCB2YWx1ZSwgW3Byb2Nlc3NQb29sLCBjYWxs
YmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOwotICAg
IH0KKyAgICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xzKCkpCisgICAgICAg
IHByb2Nlc3NQb29sLT5lbnN1cmVOZXR3b3JrUHJvY2VzcygpLnNldE5vdGlmeVBhZ2VzV2hlblRl
bGVtZXRyeVdhc0NhcHR1cmVkKG1fc2Vzc2lvbklELCB2YWx1ZSwgW3Byb2Nlc3NQb29sLCBjYWxs
YmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOwogfQog
CiB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6Omhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIo
Y29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwgY29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9t
YWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCBoYXNBY2Nlc3MpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtMjAxNywxMCAr
MjAwMSw4IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6c2V0VGltZVRvTGl2ZVVzZXJJbnRlcmFj
dGlvbihTZWNvbmRzIHNlY29uZHMsIENvbXBsZXRpb25ICiAKICAgICBhdXRvIGNhbGxiYWNrQWdn
cmVnYXRvciA9IENhbGxiYWNrQWdncmVnYXRvcjo6Y3JlYXRlKFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKTsKICAgICAKLSAgICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xz
KCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIG5ldHdvcmtQcm9jZXNzID0gcHJvY2Vzc1Bvb2wtPm5l
dHdvcmtQcm9jZXNzKCkpCi0gICAgICAgICAgICBuZXR3b3JrUHJvY2Vzcy0+c2V0VGltZVRvTGl2
ZVVzZXJJbnRlcmFjdGlvbihtX3Nlc3Npb25JRCwgc2Vjb25kcywgW2NhbGxiYWNrQWdncmVnYXRv
ciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7Ci0gICAgfQorICAgIGZvciAo
YXV0byYgcHJvY2Vzc1Bvb2wgOiBwcm9jZXNzUG9vbHMoKSkKKyAgICAgICAgcHJvY2Vzc1Bvb2wt
PmVuc3VyZU5ldHdvcmtQcm9jZXNzKCkuc2V0VGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbihtX3Nl
c3Npb25JRCwgc2Vjb25kcywgW2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRv
ci5jb3B5UmVmKCldIHsgfSk7CiB9CiAKIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6bG9nVXNlcklu
dGVyYWN0aW9uKGNvbnN0IFVSTCYgdXJsLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCkBAIC0yMTQxLDEwICsyMTIzLDggQEAgdm9pZCBXZWJzaXRlRGF0YVN0
b3JlOjpzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhTZWNvbmRzIHNlY29u
ZHMsIEMKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIGF1dG8gY2Fs
bGJhY2tBZ2dyZWdhdG9yID0gQ2FsbGJhY2tBZ2dyZWdhdG9yOjpjcmVhdGUoV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOwogICAgIAotICAgIGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBwcm9j
ZXNzUG9vbHMoKSkgewotICAgICAgICBpZiAoYXV0byogbmV0d29ya1Byb2Nlc3MgPSBwcm9jZXNz
UG9vbC0+bmV0d29ya1Byb2Nlc3MoKSkKLSAgICAgICAgICAgIG5ldHdvcmtQcm9jZXNzLT5zZXRD
YWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhtX3Nlc3Npb25JRCwgc2Vjb25kcywg
W2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7
Ci0gICAgfQorICAgIGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBwcm9jZXNzUG9vbHMoKSkKKyAg
ICAgICAgcHJvY2Vzc1Bvb2wtPmVuc3VyZU5ldHdvcmtQcm9jZXNzKCkuc2V0Q2FjaGVNYXhBZ2VD
YXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMobV9zZXNzaW9uSUQsIHNlY29uZHMsIFtjYWxsYmFja0Fn
Z3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOwogI2Vsc2UKICAg
ICBVTlVTRURfUEFSQU0oc2Vjb25kcyk7CiAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKQEAgLTIz
NzYsMTAgKzIzNTYsOCBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNldFJlc291cmNlTG9hZFN0
YXRpc3RpY3NEZWJ1Z01vZGUoYm9vbCBlbmFibGVkLCBDb21wbGV0aQogICAgIAogICAgIGF1dG8g
Y2FsbGJhY2tBZ2dyZWdhdG9yID0gQ2FsbGJhY2tBZ2dyZWdhdG9yOjpjcmVhdGUoV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOwogICAgIAotICAgIGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBw
cm9jZXNzUG9vbHMoKSkgewotICAgICAgICBpZiAoYXV0byogcHJvY2VzcyA9IHByb2Nlc3NQb29s
LT5uZXR3b3JrUHJvY2VzcygpKQotICAgICAgICAgICAgcHJvY2Vzcy0+c2V0UmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RlYnVnTW9kZShtX3Nlc3Npb25JRCwgZW5hYmxlZCwgW2NhbGxiYWNrQWdncmVn
YXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7Ci0gICAgfQorICAgIGZv
ciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBwcm9jZXNzUG9vbHMoKSkKKyAgICAgICAgcHJvY2Vzc1Bv
b2wtPmVuc3VyZU5ldHdvcmtQcm9jZXNzKCkuc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVn
TW9kZShtX3Nlc3Npb25JRCwgZW5hYmxlZCwgW2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNr
QWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShlbmFi
bGVkKTsKICAgICBVTlVTRURfUEFSQU0oY29tcGxldGlvbkhhbmRsZXIpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCmlu
ZGV4IGM2NTA1MjhhMWFiZjBmY2RiOTZkNWI5MTYxMGIyZmFiNTExNjE0Y2MuLmU1MjhmNmRkMzZj
ODcxNjQzZDdmMmFiMDFmM2YyMzEwNWUyY2YxNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKQEAgLTcyLDggKzcy
LDggQEAgc3RydWN0IFdlYnNpdGVEYXRhUmVjb3JkOwogc3RydWN0IFdlYnNpdGVEYXRhU3RvcmVQ
YXJhbWV0ZXJzOwogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLWVudW0g
Y2xhc3MgU2hvdWxkR3JhbmRmYXRoZXI7Ci1lbnVtIGNsYXNzIFN0b3JhZ2VBY2Nlc3NTdGF0dXMg
OiB1bnNpZ25lZDsKK2VudW0gY2xhc3MgU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzIDogYm9v
bDsKK2VudW0gY2xhc3MgU3RvcmFnZUFjY2Vzc1N0YXR1cyA6IHVpbnQ4X3Q7CiBlbnVtIGNsYXNz
IFN0b3JhZ2VBY2Nlc3NQcm9tcHRTdGF0dXM7CiAjZW5kaWYKIApAQCAtMTQzLDggKzE0Myw4IEBA
IHB1YmxpYzoKICAgICB2b2lkIHJlbW92ZVByZXZhbGVudERvbWFpbnMoY29uc3QgVmVjdG9yPFN0
cmluZz4mIGRvbWFpbnMpOwogICAgIHZvaWQgcmVzZXRQYXJhbWV0ZXJzVG9EZWZhdWx0VmFsdWVz
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzY2hlZHVsZUNvb2tpZUJs
b2NraW5nVXBkYXRlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBzY2hl
ZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFdhbGxUaW1lIG1vZGlmaWVkU2luY2UsIFNo
b3VsZEdyYW5kZmF0aGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQg
c2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChTaG91bGRHcmFuZGZhdGhlciwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIHNjaGVkdWxlQ2xlYXJJbk1lbW9y
eUFuZFBlcnNpc3RlbnQoV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSwgU2hvdWxkR3JhbmRmYXRoZXJT
dGF0aXN0aWNzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgc2NoZWR1
bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3Ms
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzY2hlZHVsZVN0YXRpc3Rp
Y3NBbmREYXRhUmVjb3Jkc1Byb2Nlc3NpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
ICAgICB2b2lkIHN1Ym1pdFRlbGVtZXRyeSgpOwogICAgIHZvaWQgc2V0Q2FjaGVNYXhBZ2VDYXAo
U2Vjb25kcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGJkOTEzMmQ0N2Q5YzIzMjU3
NWZhNmI4NzViNGU4MTc4MjJhMDBmMDIuLjc5YjUwNjczNGRjMjI0ZTM2NGFmMDY4YjgwMTUwYzIw
MDExNWI5MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtMTA5MSw4ICsxMDkxLDEwIEBACiAJCTc1QThEMkM4MTg3Q0NGQUIwMEMzOUM5
RSAvKiBXS1dlYnNpdGVEYXRhU3RvcmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDc1QThEMkM0MTg3Q0NGOUYwMEMzOUM5RSAvKiBXS1dlYnNpdGVEYXRh
U3RvcmUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CiAJ
CTc1QThEMkQ2MTg3RDFDMEUwMEMzOUM5RSAvKiBXS1dlYnNpdGVEYXRhU3RvcmVJbnRlcm5hbC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzVBOEQyRDQx
ODdEMUMwMTAwQzM5QzlFIC8qIFdLV2Vic2l0ZURhdGFTdG9yZUludGVybmFsLmggKi87IH07CiAJ
CTc2MkI3NDhEMTIwQkM3NUMwMDgxOTMzOSAvKiBXS1ByZWZlcmVuY2VzUmVmUHJpdmF0ZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzYyQjc0ODQxMjBC
QkEyRDAwODE5MzM5IC8qIFdLUHJlZmVyZW5jZXNSZWZQcml2YXRlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJN0ExMTY5REIyMUY3RDY4QjAwQzI0
QTZFIC8qIFNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0ExMTY5REEyMUY3RDY4QTAwQzI0QTZFIC8qIFNo
b3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljcy5oICovOyB9OwogCQk3QTFFMkE4NTFFRUZFODkyMDAz
N0EwRTAgLyogQVBJTm90aWZpY2F0aW9uUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBMUUyQTg0MUVFRkU4OEEwMDM3QTBFMCAvKiBBUElO
b3RpZmljYXRpb25Qcm92aWRlci5oICovOyB9OwogCQk3QTNBQ0UxQjFFRUVGNzlCMDBBODY0QTQg
LyogQVBJSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTNBQ0UxQTFFRUVGNzhDMDBBODY0QTQgLyog
QVBJSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmggKi87IH07CisJCTdBM0ZFQ0EyMjFG
N0MwOTcwMEYyNjdDRCAvKiBTdG9yYWdlQWNjZXNzU3RhdHVzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTNGRUNBMTIxRjdDMDk3MDBGMjY3Q0QgLyog
U3RvcmFnZUFjY2Vzc1N0YXR1cy5oICovOyB9OwogCQk3QTc3MkM4RDFEREQ0QTI1MDAwRjM0RjEg
LyogY29tLmFwcGxlLldlYktpdC5wbHVnaW4tY29tbW9uLnNiIGluIENvcHkgUGx1Zy1pbiBTYW5k
Ym94IFByb2ZpbGVzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBMTUwNjcy
MURENTYyOTgwMDFGNEI1OCAvKiBjb20uYXBwbGUuV2ViS2l0LnBsdWdpbi1jb21tb24uc2IgKi87
IH07CiAJCTdBNzkxRUZBMUM3Q0ZDRjEwMEM0QzUyQiAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmVNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gN0E3OTFFRjkxQzdDRkIzNzAwQzRDNTJCIC8qIFdlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZU1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCTdBNzkxRUZC
MUM3Q0ZEMDEwMEM0QzUyQiAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmVNZXNzYWdl
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0E3OTFF
RjgxQzdDRkIxMDAwQzRDNTJCIC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZU1lc3Nh
Z2VzLmggKi87IH07CkBAIC0zNTA5LDkgKzM1MTEsMTEgQEAKIAkJNzVBOEQyQzUxODdDQ0Y5RjAw
QzM5QzlFIC8qIFdLV2Vic2l0ZURhdGFTdG9yZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IFdLV2Vic2l0ZURhdGFTdG9yZS5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNzVBOEQyRDQxODdEMUMwMTAwQzM5QzlFIC8qIFdLV2Vic2l0ZURhdGFTdG9y
ZUludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLV2Vic2l0ZURh
dGFTdG9yZUludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc2MkI3NDg0
MTIwQkJBMkQwMDgxOTMzOSAvKiBXS1ByZWZlcmVuY2VzUmVmUHJpdmF0ZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXS1ByZWZlcmVuY2VzUmVmUHJpdmF0ZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk3QTExNjlEQTIxRjdENjhBMDBDMjRBNkUgLyogU2hvdWxk
R3JhbmRmYXRoZXJTdGF0aXN0aWNzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IFNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljcy5oOyBwYXRoID0gQ2xhc3NpZmllci9TaG91bGRH
cmFuZGZhdGhlclN0YXRpc3RpY3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0Ex
NTA2NzIxREQ1NjI5ODAwMUY0QjU4IC8qIGNvbS5hcHBsZS5XZWJLaXQucGx1Z2luLWNvbW1vbi5z
YiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSAiY29tLmFwcGxlLldlYktpdC5wbHVnaW4tY29tbW9u
LnNiIjsgcGF0aCA9ICJEZXJpdmVkU291cmNlcy9XZWJLaXQyL2NvbS5hcHBsZS5XZWJLaXQucGx1
Z2luLWNvbW1vbi5zYiI7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTdB
MUUyQTg0MUVFRkU4OEEwMDM3QTBFMCAvKiBBUElOb3RpZmljYXRpb25Qcm92aWRlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBUElOb3RpZmljYXRpb25Qcm92aWRlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QTNBQ0UxQTFFRUVGNzhDMDBBODY0QTQgLyog
QVBJSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEFQSUluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk3QTNGRUNBMTIxRjdDMDk3MDBGMjY3Q0QgLyogU3RvcmFn
ZUFjY2Vzc1N0YXR1cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBTdG9yYWdl
QWNjZXNzU3RhdHVzLmg7IHBhdGggPSBDbGFzc2lmaWVyL1N0b3JhZ2VBY2Nlc3NTdGF0dXMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0E1RTM5NDkxRDVCRDhBNzAwQjRCN0NFIC8q
IGNvbS5tYWNyb21lZGlhLkZsYXNoIFBsYXllciBFU1IucGx1Z2luLnNiICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9ICJjb20ubWFjcm9tZWRpYS5GbGFzaCBQbGF5ZXIgRVNSLnBsdWdpbi5zYiI7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBNzkxRUY4MUM3Q0ZCMTAwMEM0QzUyQiAvKiBX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmVNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmVNZXNzYWdlcy5o
OyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmVNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQk3
QTc5MUVGOTFDN0NGQjM3MDBDNEM1MkIgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
TWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZU1lc3NhZ2VSZWNlaXZlci5jcHA7IHBhdGgg
PSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZU1l
c3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CkBA
IC02ODk2LDYgKzY5MDAsOCBAQAogCQkJCTdBRkJEMzY1MjFFNTFCQUIwMDVEQkFDQiAvKiBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuaCAqLywKIAkJCQk3QUZCRDM2OTIxRTU0MkU4
MDA1REJBQ0IgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlLmNwcCAq
LywKIAkJCQk3QUZCRDM2ODIxRTU0MkU4MDA1REJBQ0IgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1BlcnNpc3RlbnRTdG9yYWdlLmggKi8sCisJCQkJN0ExMTY5REEyMUY3RDY4QTAwQzI0QTZFIC8q
IFNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljcy5oICovLAorCQkJCTdBM0ZFQ0ExMjFGN0MwOTcw
MEYyNjdDRCAvKiBTdG9yYWdlQWNjZXNzU3RhdHVzLmggKi8sCiAJCQkJN0E4NDNBMUEyMUU0MUZC
MjAwREVGNjYzIC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAgKi8sCiAJCQkJ
N0FGQkQzNjIyMUU1MEYzOTAwNURCQUNCIC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZS5oICovLAogCQkJCTdBRkJEMzZDMjFFNTQ1NDQwMDVEQkFDQiAvKiBXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzVGVsZW1ldHJ5LmNwcCAqLywKQEAgLTkzMDAsMTEgKzkzMDYsMTMgQEAKIAkJCQk4
MzEzRjdFRTFGN0RBRTA4MDBCOTQ0RUIgLyogU2hhcmVkU3RyaW5nSGFzaFRhYmxlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk4M0Y5NjQ0RTFGQTBGNzZFMDBDNDc3NTAgLyogU2hhcmVkU3RyaW5nSGFz
aFRhYmxlUmVhZE9ubHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTFENjdCMzM5MjEyRTFGNjEwMEZB
QTc4NiAvKiBTaGFyZVNoZWV0Q2FsbGJhY2tJRC5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0ExMTY5
REIyMUY3RDY4QjAwQzI0QTZFIC8qIFNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljcy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJOTk1MjI2RDYyMDdEMTg0NjAwRjc4NDIwIC8qIFNpbXVsYXRlZElucHV0
RGlzcGF0Y2hlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkRBRjA2RDYxOEJEMUE0NzAwODFDRUIx
IC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTJE
RTY5NDNFMThCRDJBNjgwMDVDMTVFNSAvKiBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyTWVz
c2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTUyNzJCMjhCMTQwNjk4NUQwMDk2QTVEMCAvKiBT
dGF0aXN0aWNzRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE0QkRFRDMxNkM5OEVERDAwRTRF
MjVFIC8qIFN0YXRpc3RpY3NSZXF1ZXN0LmggaW4gSGVhZGVycyAqLywKKwkJCQk3QTNGRUNBMjIx
RjdDMDk3MDBGMjY3Q0QgLyogU3RvcmFnZUFjY2Vzc1N0YXR1cy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMUFEMzMwNkYxNkIxRDk5MTAwNEY2MEU3IC8qIFN0b3JhZ2VBcmVhSW1wbC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMUFDRUNEMjUxNzE2MkRCMTAwMUZDOUVGIC8qIFN0b3JhZ2VBcmVhTWFwLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxQTMzNERFRTE2REU4Rjg4MDA2QThFMzggLyogU3RvcmFnZUFy
ZWFNYXBNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDcwMCw2ICsxMDcwOCw3IEBACiAJ
CQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCiAJCQkJMkQ5MkE3
ODQyMTJCNkFCMTAwRjQ5M0ZEIC8qIEFjdGl2aXR5QXNzZXJ0aW9uLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCTVDRTQzQjcyMjFGN0NDMDIwMDkzQkNDNSAvKiBBUElIVFRQQ29va2llU3RvcmVDb2Nv
YS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTJEOTJBNzdCMjEyQjZBNzEwMEY0OTNGRCAvKiBBcmd1
bWVudENvZGVycy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyREVCMUQyRTIxMjc0NzM2MDA5MzM5
MDYgLyogQXJndW1lbnRDb2RlcnNDRi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDkyQTc3QzIx
MkI2QTcxMDBGNDkzRkQgLyogQXR0YWNobWVudC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTEwNzg3
LDcgKzEwNzk2LDYgQEAKIAkJCQkyRDkyQTc4NzIxMkI2QUIxMDBGNDkzRkQgLyogU2hhcmVhYmxl
Qml0bWFwLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJERTY5NDNEMThCRDJBNjgwMDVDMTVFNSAv
KiBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTFBMzM0REVEMTZERThGODgwMDZBOEUzOCAvKiBTdG9yYWdlQXJlYU1hcE1l
c3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1Q0U0M0I3MjIxRjdDQzAyMDA5
M0JDQzUgLyogQVBJSFRUUENvb2tpZVN0b3JlQ29jb2EubW0gaW4gU291cmNlcyAqLywKIAkJCQkx
QUIzMUE5NjE2QkM2ODgxMDBGNkRCQzkgLyogU3RvcmFnZU1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQ5MkE3ODMyMTJCNkE3MTAwRjQ5M0ZEIC8qIFN0cmlu
Z1JlZmVyZW5jZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDExQjc1MTIxMjZBMjgyMDA2Rjg4
NzggLyogVW5pZmllZFNvdXJjZTEtbW0ubW0gaW4gU291cmNlcyAqLywK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>359816</attachid>
            <date>2019-01-22 17:06:48 -0800</date>
            <delta_ts>2019-01-22 19:46:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-193659-20190122170647.patch</filename>
            <type>text/plain</type>
            <size>87651</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQwMzA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDY3Y2IzYTFmMGJmYTc2ZmIx
YTA5YjkwMTk1YmI1YmFiYTBmYjlmY2MuLjI3OGNlOTEwYTczNWE2NjNhODVkYmU5OTk1NTZiZGE2
Y2Q5NDkyNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTUgQEAKKzIwMTktMDEtMjIgIEJyZW50IEZ1
bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CisKKyAgICAgICAgU3dpdGNoIE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiBwb3J0aW9ucyBvZiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIHRvIEFzeW5jIG1l
c3NhZ2UgcGFzc2luZyBzdHlsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTkzNjU5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80NzQzMzI5MD4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDaGFuZ2UgdGhl
IGltcGxlbWVudGF0aW9ucyBvZiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIGNvZGUgaW4gTmV0d29y
a1N0b3JhZ2VTZXNzaW9uIHRvIHVzZSB0aGUKKyAgICAgICAgJ3NlbmRXaXRoQXN5bmNSZXBseScg
c28gdGhhdCBtb3JlIG9mIHRoZSBjb2RlIGlzIGF1dG9nZW5lcmF0ZWQuIFRoaXMgc2hvdWxkIG1h
a2UgdGVzdCBydW5zIG1vcmUKKyAgICAgICAgY29uc2lzdGVudCwgYW5kIHNob3VsZCByZWR1Y2Ug
dGhlIHBvc3NpYmlsaXR5IG9mIGJvb2trZWVwaW5nIGVycm9ycyBpbiB0aGUgbWVzc2FnZSBoYW5k
bGluZworICAgICAgICBpbXBsZW1lbnRhdGlvbnMuCisKKyAgICAgICAgRml4IHRoZSBpbXBsZW1l
bnRhdGlvbiBvZiBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRDbG9zZSB0byBjbGVhbiB1cCB0d28g
bWFudWFsbHkgY29uc3RydWN0ZWQKKyAgICAgICAgbWVzc2FnZSBjYWxsYmFja3MgdGhhdCB3ZXJl
IGltcHJvcGVybHkgd3JpdHRlbiAoYSBiaWcgcGFydCBvZiB0aGUgcmVhc29uIHRvIG1vdmUgdG8g
dXNpbmcKKyAgICAgICAgJ3NlbmRXaXRoQXN5bmNSZXBseScpLgorCisgICAgICAgIFRoaXMgcGF0
Y2ggYWxzbyBtb3ZlcyBhbiBpbml0aWFsaXphdG9uIGNhbGwgKFdlYnNpdGVEYXRhU3RvcmU6OmRp
ZENyZWF0ZU5ldHdvcmtQcm9jZXNzKSBmcm9tCisgICAgICAgICdlbnN1cmVOZXR3b3JrUHJvY2Vz
cycgdG8gJ3Byb2Nlc3NEaWRGaW5pc2hMYXVuY2hpbmcnLiBJbiBjdXJyZW50IGNvZGUsIHRoZSBj
YWxsIGhhcHBlbnMgYmVmb3JlCisgICAgICAgIGEgY29ubmVjdGlvbiBpcyBlc3RhYmxpc2hlZCB0
byB0aGUgbmV0d29yayBwcm9jZXNzLCBjYXVzaW5nIGluaXRpYWxpemF0aW9uIG1lc3NhZ2VzIHRv
IGdldCBkcm9wcGVkCisgICAgICAgIGxlYWRpbmcgdG8gdGVzdCBzeXN0ZW0gZmxha2luZXNzLgor
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0
aWNzTWVtb3J5U3RvcmUuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIv
U2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzLmg6IEFkZGVkLgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL0NsYXNzaWZpZXIvU3RvcmFnZUFjY2Vzc1N0YXR1cy5oOiBBZGRlZC4KKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6
c2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudCk6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaDoKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtQcm9jZXNzOjp1cGRhdGVQcmV2YWxlbnREb21haW5zVG9CbG9ja0Nvb2tpZXNGb3Ip
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2V0QWdlQ2FwRm9yQ2xpZW50U2lk
ZUNvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2NoZWR1bGVDbGVh
ckluTWVtb3J5QW5kUGVyc2lzdGVudCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNz
OjpoYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzczo6Z3JhbnRTdG9yYWdlQWNjZXNzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3M6OnJlbW92ZUFsbFN0b3JhZ2VBY2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzczo6c2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cmVzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJl
c291cmNlcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRl
RGF0YSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcDoKKyAgICAgICAgKFdL
V2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudFN0b3Jl
KToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NDbGVhckluTWVtb3J5QW5k
UGVyc2lzdGVudFN0b3JlTW9kaWZpZWRTaW5jZUhvdXJzKToKKyAgICAgICAgKFdLV2Vic2l0ZURh
dGFTdG9yZVN0YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVudFN0YXRlKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Byb2Nlc3NQcm94eTo6Y2xlYXJDYWxsYmFja1N0YXRlcyk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZENsb3NlKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Byb2Nlc3NQcm94eTo6dXBkYXRlUHJldmFsZW50RG9tYWluc1RvQmxvY2tDb29raWVzRm9y
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6c2NoZWR1bGVDbGVhcklu
TWVtb3J5QW5kUGVyc2lzdGVudCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJv
eHk6OnNldEFnZUNhcEZvckNsaWVudFNpZGVDb29raWVzKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Byb2Nlc3NQcm94eTo6aGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpncmFudFN0b3JhZ2VBY2Nlc3MpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZW1vdmVBbGxTdG9yYWdlQWNjZXNz
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0Q2FjaGVNYXhBZ2VD
YXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vz
c1Byb3h5OjpzZXRDYWNoZU1heEFnZUNhcCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzUHJveHk6OnJlc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRVcGRhdGVCbG9ja0Nvb2tpZXMp
OiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRTZXRB
Z2VDYXBGb3JDbGllbnRTaWRlQ29va2llcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtQcm9jZXNzUHJveHk6OmRpZFVwZGF0ZVJ1bnRpbWVTZXR0aW5ncyk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OnN0b3JhZ2VBY2Nlc3NSZXF1ZXN0
UmVzdWx0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6
c3RvcmFnZUFjY2Vzc09wZXJhdGlvblJlc3VsdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZFJlbW92ZUFsbFN0b3JhZ2VBY2Nlc3MpOiBEZWxldGVk
LgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRTZXRDYWNoZU1heEFn
ZUNhcEZvclByZXZhbGVudFJlc291cmNlcyk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmVuc3VyZU5ldHdvcmtQcm9jZXNz
KTogTW92ZSBXZWJzaXRlRGF0YVN0b3JlICdkaWRDcmVhdGVOZXR3b3JrUHJvY2VzcycKKyAgICAg
ICAgdG8gJ3Byb2Nlc3NEaWRGaW5pc2hMYXVuY2hpbmcnLiBDdXJyZW50bHkgdGhlIGNhbGwgaGFw
cGVucyBiZWZvcmUgYSBjb25uZWN0aW9uIGlzIGVzdGFibGlzaGVkLAorICAgICAgICBjYXVzaW5n
IGluaXRpYWxpemF0aW9uIG1lc3NhZ2VzIHRvIGdldCBkcm9wcGVkLgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzUG9vbDo6cHJvY2Vzc0RpZEZpbmlzaExhdW5jaGluZyk6IERpdHRvLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6cmVtb3ZlRGF0YSk6CisgICAgICAgIChXZWJL
aXQ6OldlYnNpdGVEYXRhU3RvcmU6OnNldE1heFN0YXRpc3RpY3NFbnRyaWVzKToKKyAgICAgICAg
KFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6c2V0UHJ1bmVFbnRyaWVzRG93blRvKToKKyAgICAg
ICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6c2V0R3JhbmRmYXRoZXJpbmdUaW1lKToKKyAg
ICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6c2V0Q2FjaGVNYXhBZ2VDYXApOgorICAg
ICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpzZXRNaW5pbXVtVGltZUJldHdlZW5EYXRh
UmVjb3Jkc1JlbW92YWwpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpzZXRQ
cmV2YWxlbnRSZXNvdXJjZSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnNl
dFNob3VsZENsYXNzaWZ5UmVzb3VyY2VzQmVmb3JlRGF0YVJlY29yZHNSZW1vdmFsKToKKyAgICAg
ICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6c2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVy
c2lzdGVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnNldEFnZUNhcEZv
ckNsaWVudFNpZGVDb29raWVzKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6
c2V0Tm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5lZCk6CisgICAgICAgIChXZWJL
aXQ6OldlYnNpdGVEYXRhU3RvcmU6OnNldE5vdGlmeVBhZ2VzV2hlblRlbGVtZXRyeVdhc0NhcHR1
cmVkKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6c2V0VGltZVRvTGl2ZVVz
ZXJJbnRlcmFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnNldENh
Y2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
c2l0ZURhdGFTdG9yZTo6c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZSk6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaDoKKyAgICAgICAg
KiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxOS0wMS0yMiAgTWljaGFl
bCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGlnYWxpYS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdl
ZCwgZnVydGhlciBidWlsZCBmaXhlcyBhZnRlciByMjQwMjkyCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01l
bW9yeVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9S
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuY3BwCmluZGV4IDc2ODViNmUzM2M2MmYx
YjhlOTRkMzg2NTcxOWJmMTVjYmJhN2YwZDYuLjk3NDRkNDgzNDVjMTg1M2Y4YWM2MDUzNzE4MTRj
N2FiZTM1MmVhNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xh
c3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNz
TWVtb3J5U3RvcmUuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiUGx1Z2luUHJvY2Vz
c01hbmFnZXIuaCIKICNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzUHJveHkuaCIKICNpbmNsdWRlICJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UuaCIKKyNpbmNsdWRlICJTdG9y
YWdlQWNjZXNzU3RhdHVzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAjaW5jbHVk
ZSAiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeS5oIgogI2luY2x1ZGUgIldlYnNp
dGVEYXRhU3RvcmUuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Q2xhc3NpZmllci9TaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3MuaCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9TaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3MuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4xMDVjMjdkZTA0NDgwZjQxMmFiZmJjZmY4M2E3MDk4NzBhYjRkNGU2Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1No
b3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljcy5oCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2VudW0gY2xhc3MgU2hvdWxk
R3JhbmRmYXRoZXJTdGF0aXN0aWNzIDogYm9vbCB7CisgICAgTm8sCisgICAgWWVzLAorfTsKKyAg
ICAKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKK25hbWVzcGFjZSBXVEYgeworICAgIAordGVt
cGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJLaXQ6OlNob3VsZEdyYW5kZmF0aGVyU3RhdGlz
dGljcz4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgV2ViS2l0OjpTaG91
bGRHcmFuZGZhdGhlclN0YXRpc3RpY3MsCisgICAgV2ViS2l0OjpTaG91bGRHcmFuZGZhdGhlclN0
YXRpc3RpY3M6Ok5vLAorICAgIFdlYktpdDo6U2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzOjpZ
ZXMKKyAgICA+OworfTsKKyAgICAKK30gLy8gbmFtZXNwYWNlIFdURgorCisKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9TdG9yYWdlQWNjZXNzU3Rh
dHVzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvU3RvcmFnZUFj
Y2Vzc1N0YXR1cy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcwYjZhMjkzMzYyYmZlNDNkMTNhNDUzYWMzMTYwY2Zi
NzNlYzhhMzUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0NsYXNzaWZpZXIvU3RvcmFnZUFjY2Vzc1N0YXR1cy5oCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2VudW0gY2xhc3Mg
U3RvcmFnZUFjY2Vzc1N0YXR1cyA6IHVpbnQ4X3QgeworICAgIENhbm5vdFJlcXVlc3RBY2Nlc3Ms
CisgICAgUmVxdWlyZXNVc2VyUHJvbXB0LAorICAgIEhhc0FjY2VzcworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CisKK25hbWVzcGFjZSBXVEYgeworICAgIAordGVtcGxhdGU8PiBzdHJ1Y3Qg
RW51bVRyYWl0czxXZWJLaXQ6OlN0b3JhZ2VBY2Nlc3NTdGF0dXM+IHsKKyAgICB1c2luZyB2YWx1
ZXMgPSBFbnVtVmFsdWVzPAorICAgIFdlYktpdDo6U3RvcmFnZUFjY2Vzc1N0YXR1cywKKyAgICBX
ZWJLaXQ6OlN0b3JhZ2VBY2Nlc3NTdGF0dXM6OkNhbm5vdFJlcXVlc3RBY2Nlc3MsCisgICAgV2Vi
S2l0OjpTdG9yYWdlQWNjZXNzU3RhdHVzOjpSZXF1aXJlc1VzZXJQcm9tcHQsCisgICAgV2ViS2l0
OjpTdG9yYWdlQWNjZXNzU3RhdHVzOjpIYXNBY2Nlc3MKKyAgICA+OworfTsKKyAgICAKK30gLy8g
bmFtZXNwYWNlIFdURgorCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZS5jcHAKaW5kZXggOGU3NzM1YWJmNzc5ZmZkZGU4ZWE3NTAyZWJhM2Q1ZTBjMDE2OTBh
OC4uYTU3OTlhZDA2ZjUzYmZhMTZhMzcwNGU2ZjJhZTVkNDdmOGUxZjhlOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFz
c2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKQEAgLTMzLDYgKzMzLDgg
QEAKICNpbmNsdWRlICJOZXR3b3JrU2Vzc2lvbi5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZFN0
YXRpc3RpY3NNZW1vcnlTdG9yZS5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZFN0YXRpc3RpY3NQ
ZXJzaXN0ZW50U3RvcmFnZS5oIgorI2luY2x1ZGUgIlNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGlj
cy5oIgorI2luY2x1ZGUgIlN0b3JhZ2VBY2Nlc3NTdGF0dXMuaCIKICNpbmNsdWRlICJXZWJGcmFt
ZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vz
c01lc3NhZ2VzLmgiCkBAIC0xMDEwLDcgKzEwMTIsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZTo6c2NoZWR1bGVDbGVhckJsb2NraW5nU3RhdGVGb3JEb21haW5zKGNvbnN0
CiAgICAgfSk7CiB9CiAKLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzY2hl
ZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFNob3VsZEdyYW5kZmF0aGVyIHNob3VsZEdy
YW5kZmF0aGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2NoZWR1bGVDbGVhckluTWVt
b3J5QW5kUGVyc2lzdGVudChTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3Mgc2hvdWxkR3JhbmRm
YXRoZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsK
ICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogICAgIHBvc3RUYXNrKFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHNob3VsZEdyYW5kZmF0aGVyLCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewpAQCAtMTAy
Myw3ICsxMDI1LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNjaGVk
dWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoU2hvdWxkR3IKIAogICAgICAgICBpZiAobV9t
ZW1vcnlTdG9yZSkgewogICAgICAgICAgICAgbV9tZW1vcnlTdG9yZS0+Y2xlYXIoW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBwcm90ZWN0ZWRUaGlzLmNvcHlSZWYoKSwgc2hvdWxkR3JhbmRmYXRoZXIs
IGNvbXBsZXRpb25IYW5kbGVyQ2FsbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlckNhbGxl
cildICgpIG11dGFibGUgewotICAgICAgICAgICAgICAgIGlmIChzaG91bGRHcmFuZGZhdGhlciA9
PSBTaG91bGRHcmFuZGZhdGhlcjo6WWVzKSB7CisgICAgICAgICAgICAgICAgaWYgKHNob3VsZEdy
YW5kZmF0aGVyID09IFNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljczo6WWVzKSB7CiAgICAgICAg
ICAgICAgICAgICAgIGlmIChtX21lbW9yeVN0b3JlKQogICAgICAgICAgICAgICAgICAgICAgICAg
bV9tZW1vcnlTdG9yZS0+Z3JhbmRmYXRoZXJFeGlzdGluZ1dlYnNpdGVEYXRhKGNvbXBsZXRpb25I
YW5kbGVyQ2FsbGVyLnJlbGVhc2UoKSk7CiAgICAgICAgICAgICAgICAgICAgIGVsc2UKQEAgLTEw
MzEsMTMgKzEwMzMsMTMgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNj
aGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoU2hvdWxkR3IKICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmIChz
aG91bGRHcmFuZGZhdGhlciA9PSBTaG91bGRHcmFuZGZhdGhlcjo6WWVzKQorICAgICAgICAgICAg
aWYgKHNob3VsZEdyYW5kZmF0aGVyID09IFNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljczo6WWVz
KQogICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HKFJlc291cmNlTG9hZFN0YXRpc3RpY3MsICJX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBl
cnNpc3RlbnQgQmVmb3JlIGJlaW5nIGNsZWFyZWQsIG1fbWVtb3J5U3RvcmUgaXMgbnVsbCB3aGVu
IHRyeWluZyB0byBncmFuZGZhdGhlciBkYXRhLiIpOwogICAgICAgICB9CiAgICAgfSk7CiB9CiAK
LXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzY2hlZHVsZUNsZWFySW5NZW1v
cnlBbmRQZXJzaXN0ZW50KFdhbGxUaW1lIG1vZGlmaWVkU2luY2UsIFNob3VsZEdyYW5kZmF0aGVy
IHNob3VsZEdyYW5kZmF0aGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY2FsbGJhY2sp
Cit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2NoZWR1bGVDbGVhckluTWVt
b3J5QW5kUGVyc2lzdGVudChXYWxsVGltZSBtb2RpZmllZFNpbmNlLCBTaG91bGRHcmFuZGZhdGhl
clN0YXRpc3RpY3Mgc2hvdWxkR3JhbmRmYXRoZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
JiBjYWxsYmFjaykKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNz
aWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKaW5kZXggMjUxYjM5MjViYWI1
YWM0MDJhOGNlNGQ3Zjk0MmUxMDI2YjQ2Zjc2Yy4uM2M4YTQ1Y2JlMGMxZDdjMDVkOTVkODM4NTMy
YmYwMGUyMTQ4N2Y4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9D
bGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUuaApAQCAtMjgsNiArMjgsOCBAQAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJ
U1RJQ1MpCiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiU2hvdWxkR3JhbmRm
YXRoZXJTdGF0aXN0aWNzLmgiCisjaW5jbHVkZSAiU3RvcmFnZUFjY2Vzc1N0YXR1cy5oIgogI2lu
Y2x1ZGUgIldlYnNpdGVEYXRhVHlwZS5oIgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxl
ci5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CkBAIC01NiwxNyArNTgsNiBAQCBjbGFzcyBX
ZWJGcmFtZVByb3h5OwogY2xhc3MgV2ViUHJvY2Vzc1Byb3h5OwogY2xhc3MgV2Vic2l0ZURhdGFT
dG9yZTsKIAotZW51bSBjbGFzcyBTdG9yYWdlQWNjZXNzU3RhdHVzIDogdW5zaWduZWQgewotICAg
IENhbm5vdFJlcXVlc3RBY2Nlc3MsCi0gICAgUmVxdWlyZXNVc2VyUHJvbXB0LAotICAgIEhhc0Fj
Y2VzcwotfTsKLQotZW51bSBjbGFzcyBTaG91bGRHcmFuZGZhdGhlciB7Ci0gICAgTm8sCi0gICAg
WWVzLAotfTsKLQogY2xhc3MgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlIGZpbmFsIDog
cHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZSwgV1RGOjpEZXN0cnVjdGlvblRocmVhZDo6TWFpbj4sIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNl
aXZlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmU+IGNyZWF0ZShXZWJzaXRlRGF0YVN0b3JlJiB3ZWJzaXRlRGF0YVN0b3JlKQpAQCAtMTU1
LDggKzE0Niw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNjaGVkdWxlU3RhdGlzdGljc0FuZERhdGFS
ZWNvcmRzUHJvY2Vzc2luZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQg
c3VibWl0VGVsZW1ldHJ5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCB1
cGRhdGVQcmV2YWxlbnREb21haW5zVG9CbG9ja0Nvb2tpZXNGb3IoY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGRvbWFpbnNUb0Jsb2NrKTsKLSAgICB2b2lkIHNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBl
cnNpc3RlbnQoU2hvdWxkR3JhbmRmYXRoZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7
Ci0gICAgdm9pZCBzY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFdhbGxUaW1lIG1v
ZGlmaWVkU2luY2UsIFNob3VsZEdyYW5kZmF0aGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOworICAgIHZvaWQgc2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChTaG91bGRH
cmFuZGZhdGhlclN0YXRpc3RpY3MsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAg
dm9pZCBzY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFdhbGxUaW1lIG1vZGlmaWVk
U2luY2UsIFNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljcywgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKIAogICAgIHZvaWQgc2V0VGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbihTZWNvbmRz
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0TWluaW11bVRpbWVC
ZXR3ZWVuRGF0YVJlY29yZHNSZW1vdmFsKFNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
Y3BwCmluZGV4IDU5ZjZhMDcwMmQwMjg4ZWI0ODFiMzk1NDMxN2JlMzQwYmJjYTY0YmUuLmRjNmNj
ZGUxYzc2NzA2Y2EwMTAyMzkyYTA2ZWM0NDlhOWJlMzU3ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC00OSw3ICs0OSw5IEBACiAj
aW5jbHVkZSAiTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJQ
cmVjb25uZWN0VGFzay5oIgogI2luY2x1ZGUgIlJlbW90ZU5ldHdvcmtpbmdDb250ZXh0LmgiCisj
aW5jbHVkZSAiU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzLmgiCiAjaW5jbHVkZSAiU3RhdGlz
dGljc0RhdGEuaCIKKyNpbmNsdWRlICJTdG9yYWdlQWNjZXNzU3RhdHVzLmgiCiAjaW5jbHVkZSAi
V2ViQ29va2llTWFuYWdlci5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCiAj
aW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2xNZXNzYWdlcy5oIgpAQCAtNjA4LDExICs2MTAsMTEgQEAg
dm9pZCBOZXR3b3JrUHJvY2Vzczo6ZHVtcFJlc291cmNlTG9hZFN0YXRpc3RpY3MoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCB1aW50NjQKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9
CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OnVwZGF0ZVByZXZhbGVudERvbWFpbnNUb0Jsb2NrQ29v
a2llc0ZvcihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBk
b21haW5zVG9CbG9jaywgdWludDY0X3QgY29udGV4dElkKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6
dXBkYXRlUHJldmFsZW50RG9tYWluc1RvQmxvY2tDb29raWVzRm9yKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb0Jsb2NrLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKGF1dG8qIG5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiA9IHN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCiAgICAgICAg
IG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+c2V0UHJldmFsZW50RG9tYWluc1RvQmxvY2tDb29raWVz
Rm9yKGRvbWFpbnNUb0Jsb2NrKTsKLSAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpEaWRVcGRhdGVCbG9ja0Nvb2tpZXMoY29u
dGV4dElkKSwgMCk7CisgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKIH0KIAogdm9pZCBOZXR3b3Jr
UHJvY2Vzczo6aXNHcmFuZGZhdGhlcmVkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3Qg
U3RyaW5nJiB0YXJnZXRQcmltYXJ5RG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtNjQyLDExICs2NDQsMTEgQEAgdm9pZCBOZXR3b3Jr
UHJvY2Vzczo6aXNWZXJ5UHJldmFsZW50UmVzb3VyY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBjb25zdCBTdHIKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgTmV0
d29ya1Byb2Nlc3M6OnNldEFnZUNhcEZvckNsaWVudFNpZGVDb29raWVzKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgT3B0aW9uYWw8U2Vjb25kcz4gc2Vjb25kcywgdWludDY0X3QgY29udGV4dElk
KQordm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0QWdlQ2FwRm9yQ2xpZW50U2lkZUNvb2tpZXMoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25hbDxTZWNvbmRzPiBzZWNvbmRzLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKGF1dG8q
IG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IHN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCiAgICAg
ICAgIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+c2V0QWdlQ2FwRm9yQ2xpZW50U2lkZUNvb2tpZXMo
c2Vjb25kcyk7Ci0gICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6
TmV0d29ya1Byb2Nlc3NQcm94eTo6RGlkU2V0QWdlQ2FwRm9yQ2xpZW50U2lkZUNvb2tpZXMoY29u
dGV4dElkKSwgMCk7CisgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKIH0KIAogdm9pZCBOZXR3b3Jr
UHJvY2Vzczo6c2V0R3JhbmRmYXRoZXJlZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0
IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIGJvb2wgaXNHcmFuZGZhdGhlcmVkLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC03MTIsMTUgKzcxNCwxNCBA
QCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzY2hlZHVsZUNvb2tpZUJsb2NraW5nVXBkYXRlKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcAogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
IH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lz
dGVudChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvbmFsPFdhbGxUaW1lPiBtb2RpZmll
ZFNpbmNlLCBib29sIHNob3VsZEdyYW5kZmF0aGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpzY2hlZHVsZUNsZWFy
SW5NZW1vcnlBbmRQZXJzaXN0ZW50KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uYWw8
V2FsbFRpbWU+IG1vZGlmaWVkU2luY2UsIFNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljcyBzaG91
bGRHcmFuZGZhdGhlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewogICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNz
aW9uKHNlc3Npb25JRCkpIHsKICAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MgPSBuZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKSB7Ci0gICAgICAg
ICAgICBhdXRvIGdyYW5kZmF0aGVyID0gc2hvdWxkR3JhbmRmYXRoZXIgPyBTaG91bGRHcmFuZGZh
dGhlcjo6WWVzIDogU2hvdWxkR3JhbmRmYXRoZXI6Ok5vOwogICAgICAgICAgICAgaWYgKG1vZGlm
aWVkU2luY2UpCi0gICAgICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+c2NoZWR1
bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChtb2RpZmllZFNpbmNlLnZhbHVlKCksIGdyYW5k
ZmF0aGVyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgICAgICAgICAgICAgcmVz
b3VyY2VMb2FkU3RhdGlzdGljcy0+c2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudCht
b2RpZmllZFNpbmNlLnZhbHVlKCksIHNob3VsZEdyYW5kZmF0aGVyLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcmVzb3VyY2VM
b2FkU3RhdGlzdGljcy0+c2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChncmFuZGZh
dGhlciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICAgICAgICAgIHJlc291
cmNlTG9hZFN0YXRpc3RpY3MtPnNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoc2hv
dWxkR3JhbmRmYXRoZXIsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgfQog
ICAgIH0gZWxzZQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTg1MywxMiArODU0
LDE1IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldExhc3RTZWVuKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgY29uc3QgU3RyaW5nJiByZXNvdXJjCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpoYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWUo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBj
b25zdCBTdHJpbmcmIGZpcnN0UGFydHlEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90
IHBhZ2VJRCwgdWludDY0X3QgY29udGV4dElkKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6aGFzU3Rv
cmFnZUFjY2Vzc0ZvckZyYW1lKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5n
JiByZXNvdXJjZURvbWFpbiwgY29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9tYWluLCB1aW50NjRf
dCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CisgICAgYm9vbCBoYXNTdG9yYWdlQWNjZXNzID0gZmFs
c2U7CiAgICAgaWYgKGF1dG8qIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IHN0b3JhZ2VTZXNzaW9u
KHNlc3Npb25JRCkpCi0gICAgICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVz
c2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OlN0b3JhZ2VBY2Nlc3NPcGVyYXRpb25SZXN1bHQo
bmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5oYXNTdG9yYWdlQWNjZXNzKHJlc291cmNlRG9tYWluLCBm
aXJzdFBhcnR5RG9tYWluLCBmcmFtZUlELCBwYWdlSUQpLCBjb250ZXh0SWQpLCAwKTsKKyAgICAg
ICAgaGFzU3RvcmFnZUFjY2VzcyA9IG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+aGFzU3RvcmFnZUFj
Y2VzcyhyZXNvdXJjZURvbWFpbiwgZmlyc3RQYXJ0eURvbWFpbiwgZnJhbWVJRCwgcGFnZUlEKTsK
ICAgICBlbHNlCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworCisgICAgY29tcGxldGlv
bkhhbmRsZXIoaGFzU3RvcmFnZUFjY2Vzcyk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6Omdl
dEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0
X3QgY29udGV4dElkKQpAQCAtODc4LDE5ICs4ODIsMTYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6
aGFzU3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYg
cmUKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nl
c3M6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3Qg
U3RyaW5nJiByZXNvdXJjZURvbWFpbiwgY29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9tYWluLCBP
cHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBib29sIHByb21wdEVu
YWJsZWQsIHVpbnQ2NF90IGNvbnRleHRJZCkKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlcXVlc3RT
dG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiByZXNv
dXJjZURvbWFpbiwgY29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9tYWluLCBPcHRpb25hbDx1aW50
NjRfdD4gZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBib29sIHByb21wdEVuYWJsZWQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1N0YXR1cyk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7CiAgICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Np
b24oc2Vzc2lvbklEKSkgewotICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGlj
cyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpIHsKLSAgICAgICAg
ICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnJlcXVlc3RTdG9yYWdlQWNjZXNzKHJlc291cmNl
RG9tYWluLCBmaXJzdFBhcnR5RG9tYWluLCBmcmFtZUlELCBwYWdlSUQsIHByb21wdEVuYWJsZWQs
IFt0aGlzLCBjb250ZXh0SWRdKFN0b3JhZ2VBY2Nlc3NTdGF0dXMgcHJvbXB0QWNjZXB0ZWQpIHsK
LSAgICAgICAgICAgICAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2Vz
OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpTdG9yYWdlQWNjZXNzUmVxdWVzdFJlc3VsdChzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4ocHJvbXB0QWNjZXB0ZWQpLCBjb250ZXh0SWQpLCAwKTsKLSAgICAgICAg
ICAgIH0pOwotICAgICAgICB9CisgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0
aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKKyAgICAgICAg
ICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnJlcXVlc3RTdG9yYWdlQWNjZXNzKHJlc291cmNl
RG9tYWluLCBmaXJzdFBhcnR5RG9tYWluLCBmcmFtZUlELCBwYWdlSUQsIHByb21wdEVuYWJsZWQs
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICB9IGVsc2UKICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OmdyYW50U3RvcmFnZUFj
Y2VzcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21h
aW4sIGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwgT3B0aW9uYWw8dWludDY0X3Q+IGZy
YW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgYm9vbCB1c2VyV2FzUHJvbXB0ZWQsIHVpbnQ2NF90IGNv
bnRleHRJZCkKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmdyYW50U3RvcmFnZUFjY2VzcyhQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFN0
cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHVpbnQ2
NF90IHBhZ2VJRCwgYm9vbCB1c2VyV2FzUHJvbXB0ZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYm9vbCBpc1N0b3JhZ2VHcmFudGVk
ID0gZmFsc2U7CiAgICAgaWYgKGF1dG8qIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IHN0b3JhZ2VT
ZXNzaW9uKHNlc3Npb25JRCkpIHsKQEAgLTkwMCw3ICs5MDEsNyBAQCB2b2lkIE5ldHdvcmtQcm9j
ZXNzOjpncmFudFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBT
dHJpbmcmCiAgICAgfSBlbHNlCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogCi0gICAg
cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQ
cm94eTo6U3RvcmFnZUFjY2Vzc09wZXJhdGlvblJlc3VsdChpc1N0b3JhZ2VHcmFudGVkLCBjb250
ZXh0SWQpLCAwKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihpc1N0b3JhZ2VHcmFudGVkKTsKIH0K
IAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6bG9nRnJhbWVOYXZpZ2F0aW9uKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiB0YXJnZXRQcmltYXJ5RG9tYWluLCBjb25zdCBTdHJp
bmcmIG1haW5GcmFtZVByaW1hcnlEb21haW4sIGNvbnN0IFN0cmluZyYgc291cmNlUHJpbWFyeURv
bWFpbiwgY29uc3QgU3RyaW5nJiB0YXJnZXRIb3N0LCBjb25zdCBTdHJpbmcmIG1haW5GcmFtZUhv
c3QsIGJvb2wgaXNSZWRpcmVjdCwgYm9vbCBpc01haW5GcmFtZSkKQEAgLTk0MCwxMyArOTQxLDEz
IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNsZWFyVXNlckludGVyYWN0aW9uKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpyZW1vdmVBbGxTdG9yYWdlQWNjZXNzKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgY29udGV4dElkKQordm9pZCBOZXR3b3JrUHJv
Y2Vzczo6cmVtb3ZlQWxsU3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAo
YXV0byogbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gc3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkK
ICAgICAgICAgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5yZW1vdmVBbGxTdG9yYWdlQWNjZXNzKCk7
CiAgICAgZWxzZQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICBwYXJlbnRQcm9j
ZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpEaWRS
ZW1vdmVBbGxTdG9yYWdlQWNjZXNzKGNvbnRleHRJZCksIDApOworICAgIGNvbXBsZXRpb25IYW5k
bGVyKCk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlbW92ZVByZXZhbGVudERvbWFpbnMo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWlucykK
QEAgLTk1NSwxMyArOTU2LDEzIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlbW92ZVByZXZhbGVu
dERvbWFpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBWZWN0CiAgICAgICAgIG5l
dHdvcmtTdG9yYWdlU2Vzc2lvbi0+cmVtb3ZlUHJldmFsZW50RG9tYWlucyhkb21haW5zKTsKIH0K
IAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNv
dXJjZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTZWNvbmRzIHNlY29uZHMsIHVpbnQ2NF90
IGNvbnRleHRJZCkKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldENhY2hlTWF4QWdlQ2FwRm9yUHJl
dmFsZW50UmVzb3VyY2VzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU2Vjb25kcyBzZWNvbmRz
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAg
aWYgKGF1dG8qIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IHN0b3JhZ2VTZXNzaW9uKHNlc3Npb25J
RCkpCiAgICAgICAgIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+c2V0Q2FjaGVNYXhBZ2VDYXBGb3JQ
cmV2YWxlbnRSZXNvdXJjZXMoU2Vjb25kcyB7IHNlY29uZHMgfSk7CiAgICAgZWxzZQogICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5z
ZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpEaWRTZXRDYWNoZU1heEFnZUNhcEZv
clByZXZhbGVudFJlc291cmNlcyhjb250ZXh0SWQpLCAwKTsKKyAgICBjb21wbGV0aW9uSGFuZGxl
cigpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRHcmFuZGZhdGhlcmluZ1RpbWUoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTZWNvbmRzIHNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTEwMzMsMTMgKzEwMzQsMTMgQEAgdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZShQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAK
LXZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNv
dXJjZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBjb250ZXh0SWQpCit2b2lk
IE5ldHdvcmtQcm9jZXNzOjpyZXNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2Vz
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmIChhdXRvKiBuZXR3b3JrU3RvcmFnZVNlc3Npb24g
PSBzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQogICAgICAgICBuZXR3b3JrU3RvcmFnZVNlc3Np
b24tPnJlc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoKTsKICAgICBlbHNl
CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHBhcmVudFByb2Nlc3NDb25uZWN0
aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkRpZFVwZGF0ZVJ1bnRp
bWVTZXR0aW5ncyhjb250ZXh0SWQpLCAwKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQog
I2VuZGlmIC8vIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAKQEAgLTEyMTIsNyAr
MTIxMyw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpCiAKICAgICAgICAgICAgICAgICAvLyBJ
ZiB3ZSBhcmUgZGVsZXRpbmcgYWxsIG9mIHRoZSBkYXRhIHR5cGVzIHRoYXQgdGhlIHJlc291cmNl
IGxvYWQgc3RhdGlzdGljcyBzdG9yZSBtb25pdG9ycwogICAgICAgICAgICAgICAgIC8vIHdlIGRv
IG5vdCBuZWVkIHRvIHJlLWdyYW5kZmF0aGVyIG9sZCBkYXRhLgotICAgICAgICAgICAgICAgIGF1
dG8gc2hvdWxkR3JhbmRmYXRoZXIgPSAoKG1vbml0b3JlZFR5cGVzUmF3ICYgZGVsZXRlZFR5cGVz
UmF3KSA9PSBtb25pdG9yZWRUeXBlc1JhdykgPyBTaG91bGRHcmFuZGZhdGhlcjo6Tm8gOiBTaG91
bGRHcmFuZGZhdGhlcjo6WWVzOworICAgICAgICAgICAgICAgIGF1dG8gc2hvdWxkR3JhbmRmYXRo
ZXIgPSAoKG1vbml0b3JlZFR5cGVzUmF3ICYgZGVsZXRlZFR5cGVzUmF3KSA9PSBtb25pdG9yZWRU
eXBlc1JhdykgPyBTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3M6Ok5vIDogU2hvdWxkR3JhbmRm
YXRoZXJTdGF0aXN0aWNzOjpZZXM7CiAKICAgICAgICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0
aXN0aWNzLT5zY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KG1vZGlmaWVkU2luY2Us
IHNob3VsZEdyYW5kZmF0aGVyLCBbY2xlYXJUYXNrc0hhbmRsZXIgPSBjbGVhclRhc2tzSGFuZGxl
ci5jb3B5UmVmKCldIHsgfSk7CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5kZXggYWZiZWJiZGUxNzllOWMzMmUwOGY5YmJk
MDA0YTdkZTY5MWY5YTU4NS4uNDgzZWRjZjU3MmRhNGZlNzM5OGM0ZTZmODk1ZmIyOTcwZjM3YjE5
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaApA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxOCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTgxLDYgKzgxLDggQEAgY2xhc3MgTmV0d29ya1Byb2Nlc3NTdXBwbGVtZW50OwogY2xhc3Mg
TmV0d29ya1Byb3hpbWl0eU1hbmFnZXI7CiBjbGFzcyBXZWJTV1NlcnZlckNvbm5lY3Rpb247CiBj
bGFzcyBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb247CitlbnVtIGNsYXNzIFNob3VsZEdy
YW5kZmF0aGVyU3RhdGlzdGljcyA6IGJvb2w7CitlbnVtIGNsYXNzIFN0b3JhZ2VBY2Nlc3NTdGF0
dXMgOiB1aW50OF90OwogZW51bSBjbGFzcyBXZWJzaXRlRGF0YUZldGNoT3B0aW9uOwogZW51bSBj
bGFzcyBXZWJzaXRlRGF0YVR5cGU7CiBzdHJ1Y3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnM7CkBAIC0xNzcsMTEgKzE3OSwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhclVzZXJJ
bnRlcmFjdGlvbihQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGRlbGV0ZVdlYnNpdGVEYXRh
Rm9yVG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbnNJbkFsbFBlcnNpc3RlbnREYXRhU3RvcmVz
KFBBTDo6U2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgVmVjdG9yPFN0cmlu
Zz4mJiB0b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWlucywgYm9vbCBzaG91bGROb3RpZnlQYWdl
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYpPiYmKTsKICAg
ICB2b2lkIGR1bXBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKFBBTDo6U2Vzc2lvbklELCB1aW50NjRf
dCBjb250ZXh0SWQpOwotICAgIHZvaWQgdXBkYXRlUHJldmFsZW50RG9tYWluc1RvQmxvY2tDb29r
aWVzRm9yKFBBTDo6U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvQmxv
Y2ssIHVpbnQ2NF90IGNvbnRleHRJZCk7CisgICAgdm9pZCB1cGRhdGVQcmV2YWxlbnREb21haW5z
VG9CbG9ja0Nvb2tpZXNGb3IoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBk
b21haW5zVG9CbG9jaywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGlz
R3JhbmRmYXRoZXJlZChQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiB0YXJnZXRQcmltYXJ5
RG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAgICB2b2lkIGlzUHJl
dmFsZW50UmVzb3VyY2UoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21h
aW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIHZvaWQgaXNWZXJ5UHJl
dmFsZW50UmVzb3VyY2UoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21h
aW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwotICAgIHZvaWQgc2V0QWdlQ2Fw
Rm9yQ2xpZW50U2lkZUNvb2tpZXMoUEFMOjpTZXNzaW9uSUQsIE9wdGlvbmFsPFNlY29uZHM+LCB1
aW50NjRfdCBjb250ZXh0SWQpOworICAgIHZvaWQgc2V0QWdlQ2FwRm9yQ2xpZW50U2lkZUNvb2tp
ZXMoUEFMOjpTZXNzaW9uSUQsIE9wdGlvbmFsPFNlY29uZHM+LCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOwogICAgIHZvaWQgaXNSZWdpc3RlcmVkQXNSZWRpcmVjdGluZ1RvKFBBTDo6U2Vz
c2lvbklELCBjb25zdCBTdHJpbmcmIHJlZGlyZWN0ZWRGcm9tLCBjb25zdCBTdHJpbmcmIHJlZGly
ZWN0ZWRUbywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBpc1Jl
Z2lzdGVyZWRBc1N1YkZyYW1lVW5kZXIoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgc3Vi
ZnJhbWUsIGNvbnN0IFN0cmluZyYgdG9wRnJhbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYpOwogICAgIHZvaWQgaXNSZWdpc3RlcmVkQXNTdWJyZXNvdXJjZVVuZGVyKFBBTDo6U2Vz
c2lvbklELCBjb25zdCBTdHJpbmcmIHN1YnJlc291cmNlLCBjb25zdCBTdHJpbmcmIHRvcEZyYW1l
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKQEAgLTE5MiwyMiArMTk0LDIyIEBA
IHB1YmxpYzoKICAgICB2b2lkIHNldFZlcnlQcmV2YWxlbnRSZXNvdXJjZShQQUw6OlNlc3Npb25J
RCwgY29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmKTsKICAgICB2b2lkIHNldFBydW5lRW50cmllc0Rvd25UbyhQQUw6OlNlc3Npb25JRCwgdWlu
dDY0X3QgcHJ1bmVUYXJnZXRDb3VudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAg
ICB2b2lkIGhhZFVzZXJJbnRlcmFjdGlvbihQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBy
ZXNvdXJjZURvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7Ci0gICAgdm9p
ZCBoYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWUoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYg
cmVzb3VyY2VEb21haW4sIGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwgdWludDY0X3Qg
ZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBjb250ZXh0SWQpOworICAgIHZvaWQg
aGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHJl
c291cmNlRG9tYWluLCBjb25zdCBTdHJpbmcmIGZpcnN0UGFydHlEb21haW4sIHVpbnQ2NF90IGZy
YW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7
CiAgICAgdm9pZCBnZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcyhQQUw6OlNlc3Npb25JRCwgdWlu
dDY0X3QgY29udGV4dElkKTsKLSAgICB2b2lkIGdyYW50U3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Np
b25JRCwgY29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwgY29uc3QgU3RyaW5nJiBmaXJzdFBh
cnR5RG9tYWluLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBi
b29sIHVzZXJXYXNQcm9tcHRlZCwgdWludDY0X3QgY29udGV4dElkKTsKKyAgICB2b2lkIGdyYW50
U3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFp
biwgY29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9tYWluLCBPcHRpb25hbDx1aW50NjRfdD4gZnJh
bWVJRCwgdWludDY0X3QgcGFnZUlELCBib29sIHVzZXJXYXNQcm9tcHRlZCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBoYXNTdG9yYWdlQWNjZXNzKFBBTDo6U2Vz
c2lvbklELCBjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBjb25zdCBTdHJpbmcmIGZpcnN0
UGFydHlEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIHZvaWQgbG9nRnJhbWVOYXZp
Z2F0aW9uKFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHRhcmdldFByaW1hcnlEb21haW4s
IGNvbnN0IFN0cmluZyYgbWFpbkZyYW1lUHJpbWFyeURvbWFpbiwgY29uc3QgU3RyaW5nJiBzb3Vy
Y2VQcmltYXJ5RG9tYWluLCBjb25zdCBTdHJpbmcmIHRhcmdldEhvc3QsIGNvbnN0IFN0cmluZyYg
bWFpbkZyYW1lSG9zdCwgYm9vbCBpc1JlZGlyZWN0LCBib29sIGlzTWFpbkZyYW1lKTsKICAgICB2
b2lkIGxvZ1VzZXJJbnRlcmFjdGlvbihQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiB0YXJn
ZXRQcmltYXJ5RG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQg
cmVtb3ZlQWxsU3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgY29udGV4dElk
KTsKKyAgICB2b2lkIHJlbW92ZUFsbFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCByZW1vdmVQcmV2YWxlbnREb21haW5z
KFBBTDo6U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWlucyk7Ci0gICAgdm9p
ZCByZXF1ZXN0U3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiByZXNv
dXJjZURvbWFpbiwgY29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9tYWluLCBPcHRpb25hbDx1aW50
NjRfdD4gZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBib29sIHByb21wdEVuYWJsZWQsIHVpbnQ2
NF90IGNvbnRleHRJZCk7Ci0gICAgdm9pZCByZXNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50
UmVzb3VyY2VzKFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCBjb250ZXh0SWQpOworICAgIHZvaWQg
cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcmVzb3Vy
Y2VEb21haW4sIGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwgT3B0aW9uYWw8dWludDY0
X3Q+IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgYm9vbCBwcm9tcHRFbmFibGVkLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NTdGF0dXMpPiYmKTsKKyAgICB2b2lkIHJlc2V0
Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoUEFMOjpTZXNzaW9uSUQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCByZXNldFBhcmFtZXRlcnNUb0RlZmF1
bHRWYWx1ZXMoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0g
ICAgdm9pZCBzY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFBBTDo6U2Vzc2lvbklE
LCBPcHRpb25hbDxXYWxsVGltZT4gbW9kaWZpZWRTaW5jZSwgYm9vbCBzaG91bGRHcmFuZGZhdGhl
ciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIHNjaGVkdWxlQ2xlYXJJ
bk1lbW9yeUFuZFBlcnNpc3RlbnQoUEFMOjpTZXNzaW9uSUQsIE9wdGlvbmFsPFdhbGxUaW1lPiBt
b2RpZmllZFNpbmNlLCBTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3MsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzY2hlZHVsZUNvb2tpZUJsb2NraW5nVXBkYXRlKFBB
TDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2No
ZWR1bGVTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHNQcm9jZXNzaW5nKFBBTDo6U2Vzc2lvbklELCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc3VibWl0VGVsZW1ldHJ5KFBB
TDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgc2V0
Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoUEFMOjpTZXNzaW9uSUQsIFNlY29u
ZHMsIHVpbnQ2NF90IGNvbnRleHRJZCk7CisgICAgdm9pZCBzZXRDYWNoZU1heEFnZUNhcEZvclBy
ZXZhbGVudFJlc291cmNlcyhQQUw6OlNlc3Npb25JRCwgU2Vjb25kcywgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldEdyYW5kZmF0aGVyaW5nVGltZShQQUw6OlNlc3Np
b25JRCwgU2Vjb25kcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNl
dExhc3RTZWVuKFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBT
ZWNvbmRzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0TWluaW11
bVRpbWVCZXR3ZWVuRGF0YVJlY29yZHNSZW1vdmFsKFBBTDo6U2Vzc2lvbklELCBTZWNvbmRzLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggNjI1NjU4MTJh
YWU2NTBhMmEwZTU1NDRkN2E0ZGNhNmMwNGRiOTY0My4uYWE0ZjhkN2VkNjZiYTQ3NGM0YTFmOTIw
NDcyNzVjNDBkYjNjZGUzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0xLDQgKzEsNCBAQAotIyBDb3B5
cmlnaHQgKEMpIDIwMTItMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENv
cHlyaWdodCAoQykgMjAxMi0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMK
ICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtODksMzMgKzg5LDMzIEBAIG1lc3NhZ2VzIC0+
IE5ldHdvcmtQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBDbGVhclVzZXJJbnRlcmFjdGlv
bihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0cmluZyByZXNvdXJjZURvbWFpbikgLT4gKCkg
QXN5bmMKICAgICBEdW1wUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIHVpbnQ2NF90IGNvbnRleHRJZCkKICAgICBTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RW5hYmxlZChib29sIGVuYWJsZWQpCi0gICAgVXBkYXRlUHJldmFsZW50RG9tYWluc1RvQmxvY2tD
b29raWVzRm9yKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVmVjdG9yPFN0cmluZz4gZG9tYWlu
c1RvQmxvY2ssIHVpbnQ2NF90IGNvbnRleHRJZCkKKyAgICBVcGRhdGVQcmV2YWxlbnREb21haW5z
VG9CbG9ja0Nvb2tpZXNGb3IoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBWZWN0b3I8U3RyaW5n
PiBkb21haW5zVG9CbG9jaykgLT4gKCkgQXN5bmMKICAgICBJc0dyYW5kZmF0aGVyZWQoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBTdHJpbmcgdGFyZ2V0UHJpbWFyeURvbWFpbikgLT4gKGJvb2wg
aXNHcmFuZGZhdGhlcmVkKSBBc3luYwogICAgIElzUHJldmFsZW50UmVzb3VyY2UoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBTdHJpbmcgdGFyZ2V0UHJpbWFyeURvbWFpbikgLT4gKGJvb2wgaXNQ
cmV2YWxlbnQpIEFzeW5jCiAgICAgSXNWZXJ5UHJldmFsZW50UmVzb3VyY2UoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBTdHJpbmcgdGFyZ2V0UHJpbWFyeURvbWFpbikgLT4gKGJvb2wgaXNWZXJ5
UHJldmFsZW50KSBBc3luYwotICAgIFNldEFnZUNhcEZvckNsaWVudFNpZGVDb29raWVzKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uYWw8U2Vjb25kcz4gc2Vjb25kcywgdWludDY0X3Qg
Y29udGV4dElkKQorICAgIFNldEFnZUNhcEZvckNsaWVudFNpZGVDb29raWVzKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgT3B0aW9uYWw8U2Vjb25kcz4gc2Vjb25kcykgLT4gKCkgQXN5bmMKICAg
ICBTZXRMYXN0U2VlbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0cmluZyByZXNvdXJjZURv
bWFpbiwgU2Vjb25kcyBzZWNvbmRzKSAtPiAoKSBBc3luYwogICAgIFNldFByZXZhbGVudFJlc291
cmNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU3RyaW5nIHJlc291cmNlRG9tYWluKSAtPiAo
KSBBc3luYwogICAgIFNldFByZXZhbGVudFJlc291cmNlRm9yRGVidWdNb2RlKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgU3RyaW5nIHJlc291cmNlRG9tYWluKSAtPiAoKSBBc3luYwogICAgIEhh
ZFVzZXJJbnRlcmFjdGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0cmluZyByZXNvdXJj
ZURvbWFpbikgLT4gKGJvb2wgaGFkVXNlckludGVyYWN0aW9uKSBBc3luYwotICAgIEhhc1N0b3Jh
Z2VBY2Nlc3NGb3JGcmFtZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0cmluZyByZXNvdXJj
ZURvbWFpbiwgU3RyaW5nIGZpcnN0UGFydHlEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2
NF90IHBhZ2VJRCwgdWludDY0X3QgY29udGV4dElkKQotICAgIEhhc1N0b3JhZ2VBY2Nlc3MoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTdHJpbmcgcmVzb3VyY2VEb21haW4sIFN0cmluZyBmaXJz
dFBhcnR5RG9tYWluLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgdWludDY0X3QgcGFnZUlE
KSAtPiAoYm9vbCBoYWRVc2VySW50ZXJhY3Rpb24pIEFzeW5jCisgICAgSGFzU3RvcmFnZUFjY2Vz
c0ZvckZyYW1lKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU3RyaW5nIHJlc291cmNlRG9tYWlu
LCBTdHJpbmcgZmlyc3RQYXJ0eURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFn
ZUlEKSAtPiAoYm9vbCBoYXNTdG9yYWdlQWNjZXNzKSBBc3luYworICAgIEhhc1N0b3JhZ2VBY2Nl
c3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTdHJpbmcgcmVzb3VyY2VEb21haW4sIFN0cmlu
ZyBmaXJzdFBhcnR5RG9tYWluLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgdWludDY0X3Qg
cGFnZUlEKSAtPiAoYm9vbCBoYXNTdG9yYWdlQWNjZXNzKSBBc3luYwogICAgIEdldEFsbFN0b3Jh
Z2VBY2Nlc3NFbnRyaWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgY29udGV4
dElkKQotICAgIEdyYW50U3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0
cmluZyByZXNvdXJjZURvbWFpbiwgU3RyaW5nIGZpcnN0UGFydHlEb21haW4sIE9wdGlvbmFsPHVp
bnQ2NF90PiBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIGJvb2wgdXNlcldhc1Byb21wdGVkLCB1
aW50NjRfdCBjb250ZXh0SWQpCisgICAgR3JhbnRTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgU3RyaW5nIHJlc291cmNlRG9tYWluLCBTdHJpbmcgZmlyc3RQYXJ0eURvbWFp
biwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgYm9vbCB1c2Vy
V2FzUHJvbXB0ZWQpIC0+IChib29sIGFjY2Vzc0dyYW50ZWQpIEFzeW5jCiAgICAgSXNSZWdpc3Rl
cmVkQXNSZWRpcmVjdGluZ1RvKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU3RyaW5nIHJlZGly
ZWN0ZWRGcm9tLCBTdHJpbmcgcmVkaXJlY3RlZFRvKSAtPiAoYm9vbCBpc1JlZGlyZWN0aW5nVG8p
IEFzeW5jCiAgICAgSXNSZWdpc3RlcmVkQXNTdWJGcmFtZVVuZGVyKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgU3RyaW5nIHN1YmZyYW1lLCBTdHJpbmcgdG9wRnJhbWUpIC0+IChib29sIGlzU3Vi
ZnJhbWVVbmRlcikgQXN5bmMKICAgICBJc1JlZ2lzdGVyZWRBc1N1YnJlc291cmNlVW5kZXIoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTdHJpbmcgc3VicmVzb3VyY2UsIFN0cmluZyB0b3BGcmFt
ZSkgLT4gKGJvb2wgaXNTdWJyZXNvdXJjZVVuZGVyKSBBc3luYwogICAgIExvZ0ZyYW1lTmF2aWdh
dGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0cmluZyB0YXJnZXRQcmltYXJ5RG9tYWlu
LCBTdHJpbmcgbWFpbkZyYW1lUHJpbWFyeURvbWFpbiwgU3RyaW5nIHNvdXJjZVByaW1hcnlEb21h
aW4sIFN0cmluZyB0YXJnZXRIb3N0LCBTdHJpbmcgbWFpbkZyYW1lSG9zdCwgYm9vbCBpc1JlZGly
ZWN0LCBib29sIGlzTWFpbkZyYW1lKQogICAgIExvZ1VzZXJJbnRlcmFjdGlvbihQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIFN0cmluZyB0YXJnZXRQcmltYXJ5RG9tYWluKSAtPiAoKSBBc3luYwot
ICAgIFJlbW92ZUFsbFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50
NjRfdCBjb250ZXh0SWQpCisgICAgUmVtb3ZlQWxsU3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQpIC0+ICgpIEFzeW5jCiAgICAgUmVtb3ZlUHJldmFsZW50RG9tYWlucyhQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIFZlY3RvcjxTdHJpbmc+IGRvbWFpbnNXaXRoSW50ZXJhY3Rp
b24pCi0gICAgUmVxdWVzdFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBT
dHJpbmcgcmVzb3VyY2VEb21haW4sIFN0cmluZyBmaXJzdFBhcnR5RG9tYWluLCBPcHRpb25hbDx1
aW50NjRfdD4gZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBib29sIHByb21wdEVuYWJsZWQsIHVp
bnQ2NF90IGNvbnRleHRJZCkKKyAgICBSZXF1ZXN0U3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIFN0cmluZyByZXNvdXJjZURvbWFpbiwgU3RyaW5nIGZpcnN0UGFydHlEb21h
aW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIGJvb2wgcHJv
bXB0RW5hYmxlZCkgLT4gKGVudW06dWludDhfdCBXZWJLaXQ6OlN0b3JhZ2VBY2Nlc3NTdGF0dXMg
c3RvcmFnZUFjY2Vzc1N0YXR1cykgQXN5bmMKICAgICBSZXNldFBhcmFtZXRlcnNUb0RlZmF1bHRW
YWx1ZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoKSBBc3luYwotICAgIFNjaGVkdWxl
Q2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRp
b25hbDxXYWxsVGltZT4gbW9kaWZpZWRTaW5jZSwgYm9vbCBzaG91bGRHcmFuZGZhdGhlcikgLT4g
KCkgQXN5bmMKKyAgICBTY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgT3B0aW9uYWw8V2FsbFRpbWU+IG1vZGlmaWVkU2luY2UsIGVudW06
Ym9vbCBXZWJLaXQ6OlNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljcyBzaG91bGRHcmFuZGZhdGhl
cikgLT4gKCkgQXN5bmMKICAgICBTY2hlZHVsZUNvb2tpZUJsb2NraW5nVXBkYXRlKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCkgLT4gKCkgQXN5bmMKICAgICBTY2hlZHVsZVN0YXRpc3RpY3NBbmRE
YXRhUmVjb3Jkc1Byb2Nlc3NpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoKSBBc3lu
YwogICAgIFN1Ym1pdFRlbGVtZXRyeShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+ICgpIEFz
eW5jCi0gICAgU2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBTZWNvbmRzIHNlY29uZHMsIHVpbnQ2NF90IGNvbnRleHRJZCkKKyAg
ICBTZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIFNlY29uZHMgc2Vjb25kcykgLT4gKCkgQXN5bmMKICAgICBTZXRHcmFuZGZhdGhl
cmVkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU3RyaW5nIHJlc291cmNlRG9tYWluLCBib29s
IGlzR3JhbmRmYXRoZXJlZCkgLT4gKCkgQXN5bmMKICAgICBTZXRHcmFuZGZhdGhlcmluZ1RpbWUo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTZWNvbmRzIHNlY29uZHMpIC0+ICgpIEFzeW5jCiAg
ICAgU2V0TWF4U3RhdGlzdGljc0VudHJpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50
NjRfdCBtYXhpbXVtRW50cnlDb3VudCkgLT4gKCkgQXN5bmMKQEAgLTEzMyw3ICsxMzMsNyBAQCBt
ZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgU2V0VGltZVRv
TGl2ZVVzZXJJbnRlcmFjdGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFNlY29uZHMgc2Vj
b25kcykgLT4gKCkgQXN5bmMKICAgICBTZXRUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0VG8oUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBTdHJpbmcgdG9wRnJhbWVIb3N0TmFtZSwgU3RyaW5nIGhvc3RO
YW1lUmVkaXJlY3RlZFRvKSAtPiAoKSBBc3luYwogICAgIFNldFRvcEZyYW1lVW5pcXVlUmVkaXJl
Y3RGcm9tKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU3RyaW5nIHRvcEZyYW1lSG9zdE5hbWUs
IFN0cmluZyBob3N0TmFtZVJlZGlyZWN0ZWRGcm9tKSAtPiAoKSBBc3luYwotICAgIFJlc2V0Q2Fj
aGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCB1aW50NjRfdCBjb250ZXh0SWQpCisgICAgUmVzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVu
dFJlc291cmNlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+ICgpIEFzeW5jCiAjZW5kaWYK
IAogICAgIFNldFNlc3Npb25Jc0NvbnRyb2xsZWRCeUF1dG9tYXRpb24oUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBib29sIGNvbnRyb2xsZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKaW5kZXggYmEzMzNjOWY1
ZmQzNWZkODIwZWI4NTVlMGY1MjUzNzZiZTJmNGMzMS4uMDUzNDkzZTk4OWVhMWNiMjdkZTFhZjVh
ZDdkNzI5MzBmZmRkMTdkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5j
bHVkZSAiQVBJQXJyYXkuaCIKICNpbmNsdWRlICJBUElXZWJzaXRlRGF0YVN0b3JlLmgiCiAjaW5j
bHVkZSAiTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5oIgorI2luY2x1ZGUgIlNo
b3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljcy5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogI2lu
Y2x1ZGUgIldLRGljdGlvbmFyeS5oIgogI2luY2x1ZGUgIldLTnVtYmVyLmgiCkBAIC0zNzgsNyAr
Mzc5LDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzUHJ1bmVFbnRyaWVz
RG93blRvKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXQKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3Jl
U3RhdGlzdGljc0NsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmUoV0tXZWJzaXRlRGF0YVN0
b3JlUmVmIGRhdGFTdG9yZVJlZiwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU3Rh
dGlzdGljc0NsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmVGdW5jdGlvbiBjYWxsYmFjaykK
IHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9J
bXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5zY2hlZHVsZUNsZWFySW5NZW1v
cnlBbmRQZXJzaXN0ZW50KFNob3VsZEdyYW5kZmF0aGVyOjpZZXMsIFtjb250ZXh0LCBjYWxsYmFj
a10oKSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9y
ZSgpLnNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoU2hvdWxkR3JhbmRmYXRoZXJT
dGF0aXN0aWNzOjpZZXMsIFtjb250ZXh0LCBjYWxsYmFja10oKSB7CiAgICAgICAgIGNhbGxiYWNr
KGNvbnRleHQpOwogICAgIH0pOwogI2Vsc2UKQEAgLTM4OSw3ICszOTAsNyBAQCB2b2lkIFdLV2Vi
c2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudFN0b3JlKFdL
V2Vic2l0ZURhdGFTdAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzQ2xlYXJJbk1l
bW9yeUFuZFBlcnNpc3RlbnRTdG9yZU1vZGlmaWVkU2luY2VIb3VycyhXS1dlYnNpdGVEYXRhU3Rv
cmVSZWYgZGF0YVN0b3JlUmVmLCB1bnNpZ25lZCBob3Vycywgdm9pZCogY29udGV4dCwgV0tXZWJz
aXRlRGF0YVN0b3JlU3RhdGlzdGljc0NsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmVNb2Rp
ZmllZFNpbmNlSG91cnNGdW5jdGlvbiBjYWxsYmFjaykKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0Vf
TE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNp
dGVEYXRhU3RvcmUoKS5zY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFdhbGxUaW1l
Ojpub3coKSAtIFNlY29uZHM6OmZyb21Ib3Vycyhob3VycyksIFNob3VsZEdyYW5kZmF0aGVyOjpZ
ZXMsIFtjb250ZXh0LCBjYWxsYmFja10oKSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3Jl
UmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3Rl
bnQoV2FsbFRpbWU6Om5vdygpIC0gU2Vjb25kczo6ZnJvbUhvdXJzKGhvdXJzKSwgU2hvdWxkR3Jh
bmRmYXRoZXJTdGF0aXN0aWNzOjpZZXMsIFtjb250ZXh0LCBjYWxsYmFja10oKSB7CiAgICAgICAg
IGNhbGxiYWNrKGNvbnRleHQpOwogICAgIH0pOwogI2VuZGlmCkBAIC00MjEsNyArNDIyLDcgQEAg
dm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZShX
S1dlYnNpdGVEYXRhU3RvcmVSZWYgZGEKICAgICBzdG9yZS5jbGVhclJlc291cmNlTG9hZFN0YXRp
c3RpY3NJbldlYlByb2Nlc3NlcyhbY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdh
dG9yLmNvcHlSZWYoKV0geyB9KTsKICAgICBzdG9yZS5yZXNldENhY2hlTWF4QWdlQ2FwRm9yUHJl
dmFsZW50UmVzb3VyY2VzKFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3Iu
Y29weVJlZigpXSB7IH0pOwogICAgIHN0b3JlLnJlc2V0UGFyYW1ldGVyc1RvRGVmYXVsdFZhbHVl
cyhbY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9
KTsKLSAgICBzdG9yZS5zY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFNob3VsZEdy
YW5kZmF0aGVyOjpObywgW2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5j
b3B5UmVmKCldIHsgfSk7CisgICAgc3RvcmUuc2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lz
dGVudChTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3M6Ok5vLCBbY2FsbGJhY2tBZ2dyZWdhdG9y
ID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKICNlbHNlCiAgICAgVU5VU0VE
X1BBUkFNKGRhdGFTdG9yZVJlZik7CiAgICAgY29tcGxldGlvbkhhbmRsZXIoY29udGV4dCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmNwcAppbmRleCBjYjA2MmY1YzgxYzM5NmVmNzViMWRkNjEwZDQ0OTQ2YTAxMGExNGI2
Li4zYmVjOTU4ZmM2YWNlZDc3MjhmMTdhODVjMTJhNDY2NWI2ZTBiNTQ0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5j
cHAKQEAgLTM3LDYgKzM3LDggQEAKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVycy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRl
ICJTYW5kYm94RXh0ZW5zaW9uLmgiCisjaW5jbHVkZSAiU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0
aWNzLmgiCisjaW5jbHVkZSAiU3RvcmFnZUFjY2Vzc1N0YXR1cy5oIgogI2luY2x1ZGUgIldlYkNv
bXBpbGVkQ29udGVudFJ1bGVMaXN0LmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCiAjaW5j
bHVkZSAiV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCkBAIC0yMzYsMTggKzIzOCw2IEBAIHZvaWQgTmV0
d29ya1Byb2Nlc3NQcm94eTo6Y2xlYXJDYWxsYmFja1N0YXRlcygpCiAgICAgICAgIG1fcGVuZGlu
Z0RlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2luc0NhbGxiYWNrcy50YWtlKG1fcGVuZGluZ0RlbGV0
ZVdlYnNpdGVEYXRhRm9yT3JpZ2luc0NhbGxiYWNrcy5iZWdpbigpLT5rZXkpKCk7CiAKICNpZiBF
TkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIHdoaWxlICghbV9zY2hlZHVsZVN0
YXRpc3RpY3NQcm9jZXNzaW5nQ2FsbGJhY2tNYXAuaXNFbXB0eSgpKQotICAgICAgICBtX3NjaGVk
dWxlU3RhdGlzdGljc1Byb2Nlc3NpbmdDYWxsYmFja01hcC50YWtlKG1fc2NoZWR1bGVTdGF0aXN0
aWNzUHJvY2Vzc2luZ0NhbGxiYWNrTWFwLmJlZ2luKCktPmtleSkoKTsKLQotICAgIHdoaWxlICgh
bV9zdG9yYWdlQWNjZXNzUmVzcG9uc2VDYWxsYmFja01hcC5pc0VtcHR5KCkpCi0gICAgICAgIG1f
c3RvcmFnZUFjY2Vzc1Jlc3BvbnNlQ2FsbGJhY2tNYXAudGFrZShtX3N0b3JhZ2VBY2Nlc3NSZXNw
b25zZUNhbGxiYWNrTWFwLmJlZ2luKCktPmtleSkoZmFsc2UpOwotICAgIAotICAgIHdoaWxlICgh
bV9zdG9yYWdlQWNjZXNzUmVxdWVzdFJlc3BvbnNlQ2FsbGJhY2tNYXAuaXNFbXB0eSgpKQotICAg
ICAgICBtX3N0b3JhZ2VBY2Nlc3NSZXF1ZXN0UmVzcG9uc2VDYWxsYmFja01hcC50YWtlKG1fc3Rv
cmFnZUFjY2Vzc1JlcXVlc3RSZXNwb25zZUNhbGxiYWNrTWFwLmJlZ2luKCktPmtleSkoU3RvcmFn
ZUFjY2Vzc1N0YXR1czo6Q2Fubm90UmVxdWVzdEFjY2Vzcyk7Ci0KLSAgICB3aGlsZSAoIW1fcmVt
b3ZlQWxsU3RvcmFnZUFjY2Vzc0NhbGxiYWNrTWFwLmlzRW1wdHkoKSkKLSAgICAgICAgbV9yZW1v
dmVBbGxTdG9yYWdlQWNjZXNzQ2FsbGJhY2tNYXAudGFrZShtX3JlbW92ZUFsbFN0b3JhZ2VBY2Nl
c3NDYWxsYmFja01hcC5iZWdpbigpLT5rZXkpKCk7Ci0KICAgICB3aGlsZSAoIW1fYWxsU3RvcmFn
ZUFjY2Vzc0VudHJpZXNDYWxsYmFja01hcC5pc0VtcHR5KCkpCiAgICAgICAgIG1fYWxsU3RvcmFn
ZUFjY2Vzc0VudHJpZXNDYWxsYmFja01hcC50YWtlKG1fYWxsU3RvcmFnZUFjY2Vzc0VudHJpZXND
YWxsYmFja01hcC5iZWdpbigpLT5rZXkpKHsgfSk7CiAKQEAgLTI5MSwxMyArMjgxLDEzIEBAIHZv
aWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJikKICAgICBt
X3N5bmNBbGxDb29raWVzQ291bnRlciA9IDA7CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9T
VEFUSVNUSUNTKQotICAgIGZvciAoYXV0byYgY2FsbGJhY2sgOiBtX3JlbW92ZUFsbFN0b3JhZ2VB
Y2Nlc3NDYWxsYmFja01hcC52YWx1ZXMoKSkKLSAgICAgICAgY2FsbGJhY2soKTsKLSAgICBtX3Jl
bW92ZUFsbFN0b3JhZ2VBY2Nlc3NDYWxsYmFja01hcC5jbGVhcigpOworICAgIGZvciAoYXV0byYg
Y2FsbGJhY2sgOiBtX2FsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzQ2FsbGJhY2tNYXAudmFsdWVzKCkp
CisgICAgICAgIGNhbGxiYWNrKHsgfSk7CisgICAgbV9hbGxTdG9yYWdlQWNjZXNzRW50cmllc0Nh
bGxiYWNrTWFwLmNsZWFyKCk7CiAKLSAgICBmb3IgKGF1dG8mIGNhbGxiYWNrIDogbV9zY2hlZHVs
ZVN0YXRpc3RpY3NQcm9jZXNzaW5nQ2FsbGJhY2tNYXAudmFsdWVzKCkpCi0gICAgICAgIGNhbGxi
YWNrKCk7Ci0gICAgbV9zY2hlZHVsZVN0YXRpc3RpY3NQcm9jZXNzaW5nQ2FsbGJhY2tNYXAuY2xl
YXIoKTsKKyAgICBmb3IgKGF1dG8mIGNhbGxiYWNrIDogbV9kdW1wU3RhdGlzdGljc0NhbGxiYWNr
TWFwLnZhbHVlcygpKQorICAgICAgICBjYWxsYmFjayh7IH0pOworICAgIG1fZHVtcFN0YXRpc3Rp
Y3NDYWxsYmFja01hcC5jbGVhcigpOwogI2VuZGlmCiAKICAgICAvLyBUaGlzIHdpbGwgY2F1c2Ug
dXMgdG8gYmUgZGVsZXRlZC4KQEAgLTQ1MSwxOCArNDQxLDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vz
c1Byb3h5Ojp1cGRhdGVQcmV2YWxlbnREb21haW5zVG9CbG9ja0Nvb2tpZXNGb3IoUEFMOjpTZXNz
aW9uSUQKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KLSAgICAKLSAgICBhdXRvIGNhbGxiYWNrSWQgPSBnZW5lcmF0ZUNhbGxiYWNrSUQoKTsKLSAg
ICBhdXRvIGFkZFJlc3VsdCA9IG1fc2NoZWR1bGVTdGF0aXN0aWNzUHJvY2Vzc2luZ0NhbGxiYWNr
TWFwLmFkZChjYWxsYmFja0lkLCBbcHJvdGVjdGVkUHJvY2Vzc1Bvb2wgPSBtYWtlUmVmKG1fcHJv
Y2Vzc1Bvb2wpLCB0b2tlbiA9IHRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCks
IGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJs
ZSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7Ci0gICAgfSk7Ci0gICAgQVNTRVJUX1VO
VVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKLSAgICBzZW5kKE1lc3NhZ2Vz
OjpOZXR3b3JrUHJvY2Vzczo6VXBkYXRlUHJldmFsZW50RG9tYWluc1RvQmxvY2tDb29raWVzRm9y
KHNlc3Npb25JRCwgZG9tYWluc1RvQmxvY2ssIGNhbGxiYWNrSWQpLCAwKTsKLX0KIAotdm9pZCBO
ZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRVcGRhdGVCbG9ja0Nvb2tpZXModWludDY0X3QgY2FsbGJh
Y2tJZCkKLXsKLSAgICBtX3NjaGVkdWxlU3RhdGlzdGljc1Byb2Nlc3NpbmdDYWxsYmFja01hcC50
YWtlKGNhbGxiYWNrSWQpKCk7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3
b3JrUHJvY2Vzczo6VXBkYXRlUHJldmFsZW50RG9tYWluc1RvQmxvY2tDb29raWVzRm9yKHNlc3Np
b25JRCwgZG9tYWluc1RvQmxvY2spLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAK
IHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6aXNQcmV2YWxlbnRSZXNvdXJjZShQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC01NDUsMTUgKzUyNSwx
NCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnNjaGVkdWxlQ29va2llQmxvY2tpbmdVcGRh
dGUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELAogICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNz
YWdlczo6TmV0d29ya1Byb2Nlc3M6OlNjaGVkdWxlQ29va2llQmxvY2tpbmdVcGRhdGUoc2Vzc2lv
bklEKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIE5ldHdvcmtQcm9j
ZXNzUHJveHk6OnNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBPcHRpb25hbDxXYWxsVGltZT4gbW9kaWZpZWRTaW5jZSwgU2hvdWxkR3Jh
bmRmYXRoZXIgc2hvdWxkR3JhbmRmYXRoZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2NoZWR1bGVDbGVh
ckluTWVtb3J5QW5kUGVyc2lzdGVudChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvbmFs
PFdhbGxUaW1lPiBtb2RpZmllZFNpbmNlLCBTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3Mgc2hv
dWxkR3JhbmRmYXRoZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKIHsKICAgICBpZiAoIWNhblNlbmRNZXNzYWdlKCkpIHsKICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGJvb2wgc2hvdWxkR3Jh
bmRmYXRoZXJCb29sID0gc2hvdWxkR3JhbmRmYXRoZXIgPT0gU2hvdWxkR3JhbmRmYXRoZXI6Olll
czsKLSAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpTY2hl
ZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KHNlc3Npb25JRCwgbW9kaWZpZWRTaW5jZSwg
c2hvdWxkR3JhbmRmYXRoZXJCb29sKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAg
IHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlNjaGVkdWxlQ2xl
YXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoc2Vzc2lvbklELCBtb2RpZmllZFNpbmNlLCBzaG91bGRH
cmFuZGZhdGhlciksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAogdm9pZCBOZXR3
b3JrUHJvY2Vzc1Byb3h5OjpzY2hlZHVsZVN0YXRpc3RpY3NBbmREYXRhUmVjb3Jkc1Byb2Nlc3Np
bmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCkBAIC02MDMsMTcgKzU4Miw3IEBAIHZvaWQgTmV0d29ya1Byb2Nl
c3NQcm94eTo6c2V0QWdlQ2FwRm9yQ2xpZW50U2lkZUNvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklECiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgYXV0byBjYWxsYmFja0lk
ID0gZ2VuZXJhdGVDYWxsYmFja0lEKCk7Ci0gICAgYXV0byBhZGRSZXN1bHQgPSBtX3NjaGVkdWxl
U3RhdGlzdGljc1Byb2Nlc3NpbmdDYWxsYmFja01hcC5hZGQoY2FsbGJhY2tJZCwgW3Byb3RlY3Rl
ZFByb2Nlc3NQb29sID0gbWFrZVJlZihtX3Byb2Nlc3NQb29sKSwgdG9rZW4gPSB0aHJvdHRsZXIo
KS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cigpOwotICAgIH0pOwotICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNO
ZXdFbnRyeSk7Ci0gICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlNldEFnZUNhcEZv
ckNsaWVudFNpZGVDb29raWVzKHNlc3Npb25JRCwgc2Vjb25kcywgY2FsbGJhY2tJZCksIDApOwot
fQotCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZFNldEFnZUNhcEZvckNsaWVudFNpZGVD
b29raWVzKHVpbnQ2NF90IGNhbGxiYWNrSWQpCi17Ci0gICAgbV9zY2hlZHVsZVN0YXRpc3RpY3NQ
cm9jZXNzaW5nQ2FsbGJhY2tNYXAudGFrZShjYWxsYmFja0lkKSgpOworICAgIHNlbmRXaXRoQXN5
bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlNldEFnZUNhcEZvckNsaWVudFNpZGVD
b29raWVzKHNlc3Npb25JRCwgc2Vjb25kcyksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsK
IH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRUaW1lVG9MaXZlVXNlckludGVyYWN0
aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU2Vjb25kcyBzZWNvbmRzLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC02MjYsMTEgKzU5NSw2IEBA
IHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0VGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbihQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsCiAgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2Vz
OjpOZXR3b3JrUHJvY2Vzczo6U2V0VGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbihzZXNzaW9uSUQs
IHNlY29uZHMpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgTmV0d29y
a1Byb2Nlc3NQcm94eTo6ZGlkVXBkYXRlUnVudGltZVNldHRpbmdzKHVpbnQ2NF90IGNhbGxiYWNr
SWQpCi17Ci0gICAgbV91cGRhdGVSdW50aW1lU2V0dGluZ3NDYWxsYmFja01hcC50YWtlKGNhbGxi
YWNrSWQpKCk7Ci19Ci0KIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0Tm90aWZ5UGFnZXNX
aGVuVGVsZW1ldHJ5V2FzQ2FwdHVyZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBib29sIHZh
bHVlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAg
ICAgaWYgKCFjYW5TZW5kTWVzc2FnZSgpKSB7CkBAIC03NjEsMTcgKzcyNSwxNCBAQCB2b2lkIE5l
dHdvcmtQcm9jZXNzUHJveHk6OnNldEdyYW5kZmF0aGVyZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBjb25zdCBTdHJpbgogICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29y
a1Byb2Nlc3M6OlNldEdyYW5kZmF0aGVyZWQoc2Vzc2lvbklELCByZXNvdXJjZURvbWFpbiwgaXNH
cmFuZGZhdGhlcmVkKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIE5l
dHdvcmtQcm9jZXNzUHJveHk6Omhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZShQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFN0cmluZyYg
Zmlyc3RQYXJ0eURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBXVEY6
OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY2FsbGJhY2spCit2b2lkIE5ldHdvcmtQ
cm9jZXNzUHJveHk6Omhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZShQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFN0cmluZyYgZmlyc3RQ
YXJ0eURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBXVEY6OkNvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYg
KCFjYW5TZW5kTWVzc2FnZSgpKSB7Ci0gICAgICAgIGNhbGxiYWNrKGZhbHNlKTsKKyAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
YXV0byBjb250ZXh0SWQgPSBnZW5lcmF0ZUNhbGxiYWNrSUQoKTsKLSAgICBhdXRvIGFkZFJlc3Vs
dCA9IG1fc3RvcmFnZUFjY2Vzc1Jlc3BvbnNlQ2FsbGJhY2tNYXAuYWRkKGNvbnRleHRJZCwgV1RG
TW92ZShjYWxsYmFjaykpOwotICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQu
aXNOZXdFbnRyeSk7Ci0gICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6Okhhc1N0b3Jh
Z2VBY2Nlc3NGb3JGcmFtZShzZXNzaW9uSUQsIHJlc291cmNlRG9tYWluLCBmaXJzdFBhcnR5RG9t
YWluLCBmcmFtZUlELCBwYWdlSUQsIGNvbnRleHRJZCksIDApOworICAgIHNlbmRXaXRoQXN5bmNS
ZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6Okhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZShz
ZXNzaW9uSUQsIHJlc291cmNlRG9tYWluLCBmaXJzdFBhcnR5RG9tYWluLCBmcmFtZUlELCBwYWdl
SUQpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nl
c3NQcm94eTo6aGFzU3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0
IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwg
T3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTc5MSwxMCArNzUyLDcg
QEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyhQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFMKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IGF1dG8gY29udGV4dElkID0gZ2VuZXJhdGVDYWxsYmFja0lEKCk7Ci0gICAgYXV0byBhZGRSZXN1
bHQgPSBtX3N0b3JhZ2VBY2Nlc3NSZXF1ZXN0UmVzcG9uc2VDYWxsYmFja01hcC5hZGQoY29udGV4
dElkLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci0gICAgQVNTRVJUX1VOVVNFRChhZGRS
ZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3Jr
UHJvY2Vzczo6UmVxdWVzdFN0b3JhZ2VBY2Nlc3Moc2Vzc2lvbklELCByZXNvdXJjZURvbWFpbiwg
Zmlyc3RQYXJ0eURvbWFpbiwgZnJhbWVJRCwgcGFnZUlELCBwcm9tcHRFbmFibGVkLCBjb250ZXh0
SWQpLCAwKTsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNz
OjpSZXF1ZXN0U3RvcmFnZUFjY2VzcyhzZXNzaW9uSUQsIHJlc291cmNlRG9tYWluLCBmaXJzdFBh
cnR5RG9tYWluLCBmcmFtZUlELCBwYWdlSUQsIHByb21wdEVuYWJsZWQpLCBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6Z3JhbnRTdG9y
YWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiByZXNvdXJj
ZURvbWFpbiwgY29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9tYWluLCBPcHRpb25hbDx1aW50NjRf
dD4gZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBib29sIHVzZXJXYXNQcm9tcHRlZCwgV1RGOjpD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtODA0
LDIwICs3NjIsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmdyYW50U3RvcmFnZUFjY2Vz
cyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cgogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgYXV0byBjb250ZXh0SWQgPSBnZW5lcmF0ZUNhbGxiYWNrSUQoKTsKLSAgICBh
dXRvIGFkZFJlc3VsdCA9IG1fc3RvcmFnZUFjY2Vzc1Jlc3BvbnNlQ2FsbGJhY2tNYXAuYWRkKGNv
bnRleHRJZCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotICAgIEFTU0VSVF9VTlVTRUQo
YWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7Ci0gICAgc2VuZChNZXNzYWdlczo6TmV0
d29ya1Byb2Nlc3M6OkdyYW50U3RvcmFnZUFjY2VzcyhzZXNzaW9uSUQsIHJlc291cmNlRG9tYWlu
LCBmaXJzdFBhcnR5RG9tYWluLCBmcmFtZUlELnZhbHVlKCksIHBhZ2VJRCwgdXNlcldhc1Byb21w
dGVkLCBjb250ZXh0SWQpLCAwKTsKLX0KLQotdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzdG9y
YWdlQWNjZXNzUmVxdWVzdFJlc3VsdCh1bnNpZ25lZCBzdGF0dXMsIHVpbnQ2NF90IGNvbnRleHRJ
ZCkKLXsKLSAgICBtX3N0b3JhZ2VBY2Nlc3NSZXF1ZXN0UmVzcG9uc2VDYWxsYmFja01hcC50YWtl
KGNvbnRleHRJZCkoc3RhdGljX2Nhc3Q8U3RvcmFnZUFjY2Vzc1N0YXR1cz4oc3RhdHVzKSk7Ci19
Ci0KLXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c3RvcmFnZUFjY2Vzc09wZXJhdGlvblJlc3Vs
dChib29sIHdhc0dyYW50ZWQsIHVpbnQ2NF90IGNvbnRleHRJZCkKLXsKLSAgICBtX3N0b3JhZ2VB
Y2Nlc3NSZXNwb25zZUNhbGxiYWNrTWFwLnRha2UoY29udGV4dElkKSh3YXNHcmFudGVkKTsKKyAg
ICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpHcmFudFN0b3Jh
Z2VBY2Nlc3Moc2Vzc2lvbklELCByZXNvdXJjZURvbWFpbiwgZmlyc3RQYXJ0eURvbWFpbiwgZnJh
bWVJRC52YWx1ZSgpLCBwYWdlSUQsIHVzZXJXYXNQcm9tcHRlZCksIFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZW1vdmVBbGxTdG9y
YWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtODI3LDE1ICs3NzIsNyBAQCB2b2lkIE5ldHdv
cmtQcm9jZXNzUHJveHk6OnJlbW92ZUFsbFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBDb21wbAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBjb250ZXh0
SWQgPSBnZW5lcmF0ZUNhbGxiYWNrSUQoKTsKLSAgICBhdXRvIGFkZFJlc3VsdCA9IG1fcmVtb3Zl
QWxsU3RvcmFnZUFjY2Vzc0NhbGxiYWNrTWFwLmFkZChjb250ZXh0SWQsIFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKLSAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0Lmlz
TmV3RW50cnkpOwotICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpSZW1vdmVBbGxT
dG9yYWdlQWNjZXNzKHNlc3Npb25JRCwgY29udGV4dElkKSwgMCk7Ci19Ci0KLXZvaWQgTmV0d29y
a1Byb2Nlc3NQcm94eTo6ZGlkUmVtb3ZlQWxsU3RvcmFnZUFjY2Vzcyh1aW50NjRfdCBjb250ZXh0
SWQpCi17Ci0gICAgbV9yZW1vdmVBbGxTdG9yYWdlQWNjZXNzQ2FsbGJhY2tNYXAudGFrZShjb250
ZXh0SWQpKCk7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vz
czo6UmVtb3ZlQWxsU3RvcmFnZUFjY2VzcyhzZXNzaW9uSUQpLCBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6Z2V0QWxsU3RvcmFnZUFj
Y2Vzc0VudHJpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFZlY3RvcjxTdHJpbmc+JiYgZG9tYWlucyk+JiYgY2FsbGJhY2spCkBAIC04NjMsMTYgKzgw
MCw4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2
YWxlbnRSZXNvdXJjZXMoUEFMOjpTZXNzaW9uSUQKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKLSAgICBhdXRvIGNvbnRleHRJZCA9IGdl
bmVyYXRlQ2FsbGJhY2tJRCgpOwotICAgIGF1dG8gYWRkUmVzdWx0ID0gbV91cGRhdGVSdW50aW1l
U2V0dGluZ3NDYWxsYmFja01hcC5hZGQoY29udGV4dElkLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7Ci0gICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5
KTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6U2V0Q2FjaGVNYXhBZ2VDYXBG
b3JQcmV2YWxlbnRSZXNvdXJjZXMoc2Vzc2lvbklELCBzZWNvbmRzLCBjb250ZXh0SWQpLCAwKTsK
LX0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRTZXRDYWNoZU1heEFnZUNhcEZvclBy
ZXZhbGVudFJlc291cmNlcyh1aW50NjRfdCBjb250ZXh0SWQpCi17Ci0gICAgbV91cGRhdGVSdW50
aW1lU2V0dGluZ3NDYWxsYmFja01hcC50YWtlKGNvbnRleHRJZCkoKTsKKyAgICBzZW5kV2l0aEFz
eW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpTZXRDYWNoZU1heEFnZUNhcEZvclBy
ZXZhbGVudFJlc291cmNlcyhzZXNzaW9uSUQsIHNlY29uZHMpLCBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0Q2FjaGVNYXhBZ2VD
YXAoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTZWNvbmRzIHNlY29uZHMsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTg4MiwxMCArODExLDcgQEAg
dm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRDYWNoZU1heEFnZUNhcChQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIFNlY29uZHMgc2UKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAg
ICBhdXRvIGNvbnRleHRJZCA9IGdlbmVyYXRlQ2FsbGJhY2tJRCgpOwotICAgIGF1dG8gYWRkUmVz
dWx0ID0gbV91cGRhdGVSdW50aW1lU2V0dGluZ3NDYWxsYmFja01hcC5hZGQoY29udGV4dElkLCBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci0gICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQs
IGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vz
czo6U2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoc2Vzc2lvbklELCBzZWNv
bmRzLCBjb250ZXh0SWQpLCAwKTsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5l
dHdvcmtQcm9jZXNzOjpTZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhzZXNz
aW9uSUQsIHNlY29uZHMpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQg
TmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0R3JhbmRmYXRoZXJpbmdUaW1lKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgU2Vjb25kcyBzZWNvbmRzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCkBAIC05NTUsMTAgKzg4MSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nl
c3NQcm94eTo6cmVzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhQQUw6OlNl
c3Npb25JCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgYXV0byBjb250ZXh0SWQg
PSBnZW5lcmF0ZUNhbGxiYWNrSUQoKTsKLSAgICBhdXRvIGFkZFJlc3VsdCA9IG1fdXBkYXRlUnVu
dGltZVNldHRpbmdzQ2FsbGJhY2tNYXAuYWRkKGNvbnRleHRJZCwgV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOwotICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdF
bnRyeSk7Ci0gICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlJlc2V0Q2FjaGVNYXhB
Z2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoc2Vzc2lvbklELCBjb250ZXh0SWQpLCAwKTsKKyAg
ICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpSZXNldENhY2hl
TWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKHNlc3Npb25JRCksIFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZXNldFBhcmFt
ZXRlcnNUb0RlZmF1bHRWYWx1ZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC05ODEsMTMgKzkwNCwxMiBA
QCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnN1Ym1pdFRlbGVtZXRyeShQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYQogICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdl
czo6TmV0d29ya1Byb2Nlc3M6OlN1Ym1pdFRlbGVtZXRyeShzZXNzaW9uSUQpLCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2NoZWR1
bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGJv
b2wgc2hvdWxkR3JhbmRmYXRoZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2NoZWR1bGVDbGVhckluTWVt
b3J5QW5kUGVyc2lzdGVudChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFNob3VsZEdyYW5kZmF0
aGVyU3RhdGlzdGljcyBzaG91bGRHcmFuZGZhdGhlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICghY2FuU2VuZE1lc3NhZ2UoKSkgewog
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAg
IAogCiAgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6U2No
ZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChzZXNzaW9uSUQsIHsgfSwgc2hvdWxkR3Jh
bmRmYXRoZXIpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCmluZGV4
IGUzNTFhMDZiNzVhZDc4ZTUwOTk1ZmExZjhmZDhiYmEzOGViYjBhOWUuLmYwOThkOGNkZTY2ZTY5
N2U5MDIyY2RhMGQwYWE5OTgwZjc4ZTBiMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTU3LDcgKzU3LDggQEAgbmFt
ZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBEb3dubG9hZFByb3h5OwogY2xhc3MgRG93bmxvYWRQcm94
eU1hcDsKIGNsYXNzIFdlYlByb2Nlc3NQb29sOwotZW51bSBjbGFzcyBTdG9yYWdlQWNjZXNzU3Rh
dHVzIDogdW5zaWduZWQ7CitlbnVtIGNsYXNzIFNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljcyA6
IGJvb2w7CitlbnVtIGNsYXNzIFN0b3JhZ2VBY2Nlc3NTdGF0dXMgOiB1aW50OF90OwogZW51bSBj
bGFzcyBXZWJzaXRlRGF0YUZldGNoT3B0aW9uOwogZW51bSBjbGFzcyBXZWJzaXRlRGF0YVR5cGU7
CiBzdHJ1Y3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM7CkBAIC0xMDcsMTUgKzEw
OCwxNSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRQcmV2YWxlbnRSZXNvdXJjZShQQUw6OlNlc3Np
b25JRCwgY29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKICAgICB2b2lkIHNldFByZXZhbGVudFJlc291cmNlRm9yRGVidWdNb2RlKFBBTDo6
U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0VmVyeVByZXZhbGVudFJlc291cmNlKFBBTDo6U2Vz
c2lvbklELCBjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOwotICAgIHZvaWQgaGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKFBBTDo6U2Vzc2lv
bklELCBjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBjb25zdCBTdHJpbmcmIGZpcnN0UGFy
dHlEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJiBjYWxsYmFjayk7CisgICAgdm9pZCBoYXNTdG9yYWdlQWNjZXNz
Rm9yRnJhbWUoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIGNv
bnN0IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3Qg
cGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAgICB2b2lkIGdldEFs
bFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFZlY3RvcjxTdHJpbmc+JiYgZG9tYWlucyk+JiYpOwotICAgIHZvaWQgZ3JhbnRTdG9yYWdl
QWNjZXNzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBjb25z
dCBTdHJpbmcmIGZpcnN0UGFydHlEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1
aW50NjRfdCBwYWdlSUQsIGJvb2wgdXNlcldhc1Byb21wdGVkLCBXVEY6OkNvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQgZ3JhbnRTdG9yYWdlQWNjZXNzKFBBTDo6U2Vz
c2lvbklELCBjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBjb25zdCBTdHJpbmcmIGZpcnN0
UGFydHlEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQs
IGJvb2wgdXNlcldhc1Byb21wdGVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsK
ICAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYg
c3ViRnJhbWVIb3N0LCBjb25zdCBTdHJpbmcmIHRvcEZyYW1lSG9zdCwgT3B0aW9uYWw8dWludDY0
X3Q+IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4mJik7CiAgICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCwgY29u
c3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwgY29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9tYWlu
LCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBib29sIHByb21w
dEVuYWJsZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1N0YXR1cyk+JiYp
OwogICAgIHZvaWQgcmVzZXRQYXJhbWV0ZXJzVG9EZWZhdWx0VmFsdWVzKFBBTDo6U2Vzc2lvbklE
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgcmVtb3ZlQWxsU3RvcmFn
ZUFjY2VzcyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAg
ICB2b2lkIHNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoUEFMOjpTZXNzaW9uSUQs
IGJvb2wgc2hvdWxkR3JhbmRmYXRoZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0g
ICAgdm9pZCBzY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFBBTDo6U2Vzc2lvbklE
LCBPcHRpb25hbDxXYWxsVGltZT4gbW9kaWZpZWRTaW5jZSwgU2hvdWxkR3JhbmRmYXRoZXIsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBzY2hlZHVsZUNsZWFySW5NZW1v
cnlBbmRQZXJzaXN0ZW50KFBBTDo6U2Vzc2lvbklELCBTaG91bGRHcmFuZGZhdGhlclN0YXRpc3Rp
Y3MsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBzY2hlZHVsZUNsZWFy
SW5NZW1vcnlBbmRQZXJzaXN0ZW50KFBBTDo6U2Vzc2lvbklELCBPcHRpb25hbDxXYWxsVGltZT4g
bW9kaWZpZWRTaW5jZSwgU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2NoZWR1bGVDb29raWVCbG9ja2luZ1VwZGF0ZShQ
QUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHN1
Ym1pdFRlbGVtZXRyeShQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKICAgICB2b2lkIHNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKFBBTDo6
U2Vzc2lvbklELCBTZWNvbmRzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpAQCAtMTg1
LDE0ICsxODYsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgbG9nR2xvYmFsRGlhZ25vc3RpY01lc3Nh
Z2VXaXRoVmFsdWUoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0
aW9uLCBkb3VibGUgdmFsdWUsIHVuc2lnbmVkIHNpZ25pZmljYW50RmlndXJlcywgV2ViQ29yZTo6
U2hvdWxkU2FtcGxlKTsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAg
IHZvaWQgZGlkRHVtcFJlc291cmNlTG9hZFN0YXRpc3RpY3MoU3RyaW5nIGR1bXBlZFN0YXRpc3Rp
Y3MsIHVpbnQ2NF90IGNhbGxiYWNrSWQpOwotICAgIHZvaWQgZGlkVXBkYXRlQmxvY2tDb29raWVz
KHVpbnQ2NF90IGNvbnRleHRJZCk7Ci0gICAgdm9pZCBkaWRTZXRBZ2VDYXBGb3JDbGllbnRTaWRl
Q29va2llcyh1aW50NjRfdCBjb250ZXh0SWQpOwotICAgIHZvaWQgc3RvcmFnZUFjY2Vzc09wZXJh
dGlvblJlc3VsdChib29sIHdhc0dyYW50ZWQsIHVpbnQ2NF90IGNvbnRleHRJZCk7Ci0gICAgdm9p
ZCBzdG9yYWdlQWNjZXNzUmVxdWVzdFJlc3VsdCh1bnNpZ25lZCB3YXNHcmFudGVkLCB1aW50NjRf
dCBjb250ZXh0SWQpOwogICAgIHZvaWQgYWxsU3RvcmFnZUFjY2Vzc0VudHJpZXNSZXN1bHQoVmVj
dG9yPFN0cmluZz4mJiBkb21haW5zLCB1aW50NjRfdCBjb250ZXh0SWQpOwotICAgIHZvaWQgZGlk
UmVtb3ZlQWxsU3RvcmFnZUFjY2Vzcyh1aW50NjRfdCBjb250ZXh0SWQpOwogICAgIHZvaWQgZGlk
U2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXModWludDY0X3QgY29udGV4dElk
KTsKLSAgICB2b2lkIGRpZFVwZGF0ZVJ1bnRpbWVTZXR0aW5ncyh1aW50NjRfdCBjb250ZXh0SWQp
OwogICAgIHZvaWQgbm90aWZ5UmVzb3VyY2VMb2FkU3RhdGlzdGljc1Byb2Nlc3NlZCgpOwogICAg
IHZvaWQgbm90aWZ5V2Vic2l0ZURhdGFEZWxldGlvbkZvclRvcFByaXZhdGVseU93bmVkRG9tYWlu
c0ZpbmlzaGVkKCk7CiAgICAgdm9pZCBub3RpZnlXZWJzaXRlRGF0YVNjYW5Gb3JUb3BQcml2YXRl
bHlDb250cm9sbGVkRG9tYWluc0ZpbmlzaGVkKCk7CkBAIC0yNDAsMTYgKzIzNSwxMCBAQCBwcml2
YXRlOgogICAgIHVuc2lnbmVkIG1fc3luY0FsbENvb2tpZXNDb3VudGVyIHsgMCB9OwogCiAjaWYg
RU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+PiBtX3NjaGVkdWxlU3RhdGlzdGljc1Byb2Nlc3NpbmdD
YWxsYmFja01hcDsKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGJvb2wgd2FzR3JhbnRlZCk+PiBtX3N0b3JhZ2VBY2Nlc3NSZXNwb25zZUNhbGxiYWNrTWFwOwot
ICAgIEhhc2hNYXA8dWludDY0X3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vz
c1N0YXR1cyB3YXNHcmFudGVkKT4+IG1fc3RvcmFnZUFjY2Vzc1JlcXVlc3RSZXNwb25zZUNhbGxi
YWNrTWFwOwotICAgIEhhc2hNYXA8dWludDY0X3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4+
IG1fcmVtb3ZlQWxsU3RvcmFnZUFjY2Vzc0NhbGxiYWNrTWFwOwogICAgIEhhc2hNYXA8dWludDY0
X3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJiBkb21haW5zKT4+IG1f
YWxsU3RvcmFnZUFjY2Vzc0VudHJpZXNDYWxsYmFja01hcDsKICAgICBIYXNoTWFwPHVpbnQ2NF90
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPj4gbV9kdW1wU3RhdGlzdGlj
c0NhbGxiYWNrTWFwOwogI2VuZGlmCiAKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+PiBtX3VwZGF0ZVJ1bnRpbWVTZXR0aW5nc0NhbGxiYWNrTWFwOwotCiAj
aWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKICAgICBIYXNoU2V0PFdlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5Kj4gbV93ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94aWVzOwogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KaW5kZXggODRlMGU4ZjY0NDExOGVjNDcz
NzRlMmRjYjM4ZTQzZWExM2M4OGUzNS4uN2NhYWU5NWYzNTM1ZGQ5NjM2ZDJhOTg5YTI0M2E4MGY0
Mjg0YTEzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgpAQCAtNDIsMTQgKzQyLDcg
QEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3NQcm94eSBMZWdhY3lSZWNlaXZlciB7CiAKICNp
ZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIERpZER1bXBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzKFN0cmluZyBkdW1wZWRTdGF0aXN0aWNzLCB1aW50NjRfdCBjYWxsYmFja0lk
KQotICAgIERpZFVwZGF0ZUJsb2NrQ29va2llcyh1aW50NjRfdCBjYWxsYmFja0lkKQotICAgIERp
ZFNldEFnZUNhcEZvckNsaWVudFNpZGVDb29raWVzKHVpbnQ2NF90IGNhbGxiYWNrSWQpCi0gICAg
U3RvcmFnZUFjY2Vzc09wZXJhdGlvblJlc3VsdChib29sIHdhc0dyYW50ZWQsIHVpbnQ2NF90IGNv
bnRleHRJZCkKLSAgICBTdG9yYWdlQWNjZXNzUmVxdWVzdFJlc3VsdCh1bnNpZ25lZCB3YXNHcmFu
dGVkLCB1aW50NjRfdCBjb250ZXh0SWQpCiAgICAgQWxsU3RvcmFnZUFjY2Vzc0VudHJpZXNSZXN1
bHQoVmVjdG9yPFN0cmluZz4gZG9tYWlucywgdWludDY0X3QgY29udGV4dElkKQotICAgIERpZFJl
bW92ZUFsbFN0b3JhZ2VBY2Nlc3ModWludDY0X3QgY29udGV4dElkKQotICAgIERpZFNldENhY2hl
TWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKHVpbnQ2NF90IGNvbnRleHRJZCkKLSAgICBE
aWRVcGRhdGVSdW50aW1lU2V0dGluZ3ModWludDY0X3QgY29udGV4dElkKQogICAgIE5vdGlmeVJl
c291cmNlTG9hZFN0YXRpc3RpY3NQcm9jZXNzZWQoKQogICAgIE5vdGlmeVdlYnNpdGVEYXRhRGVs
ZXRpb25Gb3JUb3BQcml2YXRlbHlPd25lZERvbWFpbnNGaW5pc2hlZCgpCiAgICAgTm90aWZ5V2Vi
c2l0ZURhdGFTY2FuRm9yVG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbnNGaW5pc2hlZCgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBlNzRmMzhkYzU5YjQw
MGQ0MDI2ZTJjYWQzYzY1OWUwNTI1YjQzYzlhLi5hMDBkYmJiOGU3MTBjN2IyNTM3NmNiODhhZWJi
ZDI3NGYxNjE2NTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAK
QEAgLTgxLDYgKzgxLDcgQEAKICNpbmNsdWRlICJTYWZlQnJvd3NpbmdXYXJuaW5nLmgiCiAjaW5j
bHVkZSAiU2hhcmVTaGVldENhbGxiYWNrSUQuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXJEYXRh
UmVmZXJlbmNlLmgiCisjaW5jbHVkZSAiU3RvcmFnZUFjY2Vzc1N0YXR1cy5oIgogI2luY2x1ZGUg
IlRleHRDaGVja2VyLmgiCiAjaW5jbHVkZSAiVGV4dENoZWNrZXJTdGF0ZS5oIgogI2luY2x1ZGUg
IlVJTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmNwcAppbmRleCAyY2E3NjM4MWJmZjRiMjVlY2VjMDAxZjQ0ZDEyYTJh
YzBhZWEyMDE1Li40OTZjNjFmMTFhN2E1NTBmZmY5MmNmZWRjYjliZGY4OTUwOTAxYWQyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC01OTEsOSArNTkx
LDYgQEAgTmV0d29ya1Byb2Nlc3NQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OmVuc3VyZU5ldHdvcmtQ
cm9jZXNzKFdlYnNpdGVEYXRhU3RvcmUqIHdpdGgKICAgICAgICAgICAgIG1fbmV0d29ya1Byb2Nl
c3MtPmFkZFNlc3Npb24oKndlYnNpdGVEYXRhU3RvcmUpOwogICAgIH0KIAotICAgIGlmIChtX3dl
YnNpdGVEYXRhU3RvcmUpCi0gICAgICAgIG1fd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFT
dG9yZSgpLmRpZENyZWF0ZU5ldHdvcmtQcm9jZXNzKCk7Ci0KICAgICByZXR1cm4gKm1fbmV0d29y
a1Byb2Nlc3M7CiB9CiAKQEAgLTEwMzQsNiArMTAzMSw5IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6
OnByb2Nlc3NEaWRGaW5pc2hMYXVuY2hpbmcoV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzKQogICAg
ICAgICBwcm9jZXNzLT5jb25uZWN0aW9uKCktPmlnbm9yZVRpbWVvdXRzRm9yVGVzdGluZygpOwog
CiAgICAgbV9jb25uZWN0aW9uQ2xpZW50LmRpZENyZWF0ZUNvbm5lY3Rpb24odGhpcywgcHJvY2Vz
cy0+d2ViQ29ubmVjdGlvbigpKTsKKworICAgIGlmIChtX3dlYnNpdGVEYXRhU3RvcmUpCisgICAg
ICAgIG1fd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLmRpZENyZWF0ZU5ldHdv
cmtQcm9jZXNzKCk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmRpc2Nvbm5lY3RQcm9jZXNz
KFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKaW5kZXggMmExNGE1YzMy
NzlmNDgyOTk1ZDY3Yjk4MDllZDUzYmU1ZmYwMzgyMi4uZTdlZjU3NTRlMGIzNjFmOGY2MTg4ZDZk
Y2QwYTI4OThjM2Y1NWE0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKQEAgLTMzLDYgKzMzLDggQEAKICNp
bmNsdWRlICJEZXZpY2VJZEhhc2hTYWx0U3RvcmFnZS5oIgogI2luY2x1ZGUgIk1vY2tBdXRoZW50
aWNhdG9yTWFuYWdlci5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzTWVzc2FnZXMuaCIKKyNp
bmNsdWRlICJTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3MuaCIKKyNpbmNsdWRlICJTdG9yYWdl
QWNjZXNzU3RhdHVzLmgiCiAjaW5jbHVkZSAiU3RvcmFnZU1hbmFnZXIuaCIKICNpbmNsdWRlICJX
ZWJDb29raWVNYW5hZ2VyUHJveHkuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIK
QEAgLTkzOCw3ICs5NDAsNyBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnJlbW92ZURhdGEoT3B0
aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzLCBXYWxsVGltZQogICAgICAgICAKICAg
ICAgICAgLy8gSWYgd2UgYXJlIGRlbGV0aW5nIGFsbCBvZiB0aGUgZGF0YSB0eXBlcyB0aGF0IHRo
ZSByZXNvdXJjZSBsb2FkIHN0YXRpc3RpY3Mgc3RvcmUgbW9uaXRvcnMKICAgICAgICAgLy8gd2Ug
ZG8gbm90IG5lZWQgdG8gcmUtZ3JhbmRmYXRoZXIgb2xkIGRhdGEuCi0gICAgICAgIGF1dG8gc2hv
dWxkR3JhbmRmYXRoZXIgPSAoKG1vbml0b3JlZFR5cGVzUmF3ICYgZGVsZXRlZFR5cGVzUmF3KSA9
PSBtb25pdG9yZWRUeXBlc1JhdykgPyBTaG91bGRHcmFuZGZhdGhlcjo6Tm8gOiBTaG91bGRHcmFu
ZGZhdGhlcjo6WWVzOworICAgICAgICBhdXRvIHNob3VsZEdyYW5kZmF0aGVyID0gKChtb25pdG9y
ZWRUeXBlc1JhdyAmIGRlbGV0ZWRUeXBlc1JhdykgPT0gbW9uaXRvcmVkVHlwZXNSYXcpID8gU2hv
dWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzOjpObyA6IFNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGlj
czo6WWVzOwogICAgICAgICAKICAgICAgICAgaWYgKG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljcykg
ewogICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5hZGRQZW5kaW5nQ2FsbGJhY2soKTsK
QEAgLTEyNDgsMTEgKzEyNTAsMTEgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpyZW1vdmVEYXRh
KE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcywgY29uc3QgVmUKICAgICAgICAg
Ly8gd2UgZG8gbm90IG5lZWQgdG8gcmUtZ3JhbmRmYXRoZXIgb2xkIGRhdGEuCiAgICAgICAgIGNh
bGxiYWNrQWdncmVnYXRvci0+YWRkUGVuZGluZ0NhbGxiYWNrKCk7CiAgICAgICAgIGlmICgobW9u
aXRvcmVkVHlwZXNSYXcgJiBkZWxldGVkVHlwZXNSYXcpID09IG1vbml0b3JlZFR5cGVzUmF3KQot
ICAgICAgICAgICAgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5zY2hlZHVsZUNsZWFySW5NZW1v
cnlBbmRQZXJzaXN0ZW50KFNob3VsZEdyYW5kZmF0aGVyOjpObywgW2NhbGxiYWNrQWdncmVnYXRv
cl0geworICAgICAgICAgICAgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5zY2hlZHVsZUNsZWFy
SW5NZW1vcnlBbmRQZXJzaXN0ZW50KFNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljczo6Tm8sIFtj
YWxsYmFja0FnZ3JlZ2F0b3JdIHsKICAgICAgICAgICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3It
PnJlbW92ZVBlbmRpbmdDYWxsYmFjaygpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+c2NoZWR1bGVDbGVhckluTWVt
b3J5QW5kUGVyc2lzdGVudChTaG91bGRHcmFuZGZhdGhlcjo6WWVzLCBbY2FsbGJhY2tBZ2dyZWdh
dG9yXSB7CisgICAgICAgICAgICBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MtPnNjaGVkdWxlQ2xl
YXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzOjpZZXMs
IFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsKICAgICAgICAgICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0
b3ItPnJlbW92ZVBlbmRpbmdDYWxsYmFjaygpOwogICAgICAgICAgICAgfSk7CiAKQEAgLTEyODgs
MTAgKzEyOTAsOCBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNldE1heFN0YXRpc3RpY3NFbnRy
aWVzKHNpemVfdCBtYXhpbXVtRW50cnlDb3VudCwgQ29tcGxldAogICAgIAogICAgIGF1dG8gY2Fs
bGJhY2tBZ2dyZWdhdG9yID0gQ2FsbGJhY2tBZ2dyZWdhdG9yOjpjcmVhdGUoV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOwogCi0gICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQ
b29scygpKSB7Ci0gICAgICAgIGlmIChhdXRvKiBwcm9jZXNzID0gcHJvY2Vzc1Bvb2wtPm5ldHdv
cmtQcm9jZXNzKCkpCi0gICAgICAgICAgICBwcm9jZXNzLT5zZXRNYXhTdGF0aXN0aWNzRW50cmll
cyhtX3Nlc3Npb25JRCwgbWF4aW11bUVudHJ5Q291bnQsIFtwcm9jZXNzUG9vbCwgY2FsbGJhY2tB
Z2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKLSAgICB9Cisg
ICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKQorICAgICAgICBwcm9j
ZXNzUG9vbC0+ZW5zdXJlTmV0d29ya1Byb2Nlc3MoKS5zZXRNYXhTdGF0aXN0aWNzRW50cmllcyht
X3Nlc3Npb25JRCwgbWF4aW11bUVudHJ5Q291bnQsIFtwcm9jZXNzUG9vbCwgY2FsbGJhY2tBZ2dy
ZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKIH0KIAogdm9pZCBX
ZWJzaXRlRGF0YVN0b3JlOjpzZXRQcnVuZUVudHJpZXNEb3duVG8oc2l6ZV90IHBydW5lVGFyZ2V0
Q291bnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAg
LTEzMDYsOCArMTMwNiw3IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6c2V0UHJ1bmVFbnRyaWVz
RG93blRvKHNpemVfdCBwcnVuZVRhcmdldENvdW50LCBDb21wbGV0aW9uCiAgICAgYXV0byBjYWxs
YmFja0FnZ3JlZ2F0b3IgPSBDYWxsYmFja0FnZ3JlZ2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSk7CiAKICAgICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vzc1Bv
b2xzKCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHByb2Nlc3MgPSBwcm9jZXNzUG9vbC0+bmV0d29y
a1Byb2Nlc3MoKSkKLSAgICAgICAgICAgIHByb2Nlc3MtPnNldFBydW5lRW50cmllc0Rvd25Ubyht
X3Nlc3Npb25JRCwgcHJ1bmVUYXJnZXRDb3VudCwgW3Byb2Nlc3NQb29sLCBjYWxsYmFja0FnZ3Jl
Z2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOworICAgICAgICBwcm9j
ZXNzUG9vbC0+ZW5zdXJlTmV0d29ya1Byb2Nlc3MoKS5zZXRQcnVuZUVudHJpZXNEb3duVG8obV9z
ZXNzaW9uSUQsIHBydW5lVGFyZ2V0Q291bnQsIFtwcm9jZXNzUG9vbCwgY2FsbGJhY2tBZ2dyZWdh
dG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKICAgICB9CiB9CiAKQEAg
LTEzMjIsMTAgKzEzMjEsOCBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNldEdyYW5kZmF0aGVy
aW5nVGltZShTZWNvbmRzIHNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVyPAogICAgIAogICAgIGF1
dG8gY2FsbGJhY2tBZ2dyZWdhdG9yID0gQ2FsbGJhY2tBZ2dyZWdhdG9yOjpjcmVhdGUoV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOwogCi0gICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IHBy
b2Nlc3NQb29scygpKSB7Ci0gICAgICAgIGlmIChhdXRvKiBwcm9jZXNzID0gcHJvY2Vzc1Bvb2wt
Pm5ldHdvcmtQcm9jZXNzKCkpCi0gICAgICAgICAgICBwcm9jZXNzLT5zZXRHcmFuZGZhdGhlcmlu
Z1RpbWUobV9zZXNzaW9uSUQsIHNlY29uZHMsIFtwcm9jZXNzUG9vbCwgY2FsbGJhY2tBZ2dyZWdh
dG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKLSAgICB9CisgICAgZm9y
IChhdXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKQorICAgICAgICBwcm9jZXNzUG9v
bC0+ZW5zdXJlTmV0d29ya1Byb2Nlc3MoKS5zZXRHcmFuZGZhdGhlcmluZ1RpbWUobV9zZXNzaW9u
SUQsIHNlY29uZHMsIFtwcm9jZXNzUG9vbCwgY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tB
Z2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKIH0KIAogdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpz
ZXRDYWNoZU1heEFnZUNhcChTZWNvbmRzIHNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTEzNDAsMTAgKzEzMzcsOCBAQCB2b2lkIFdlYnNp
dGVEYXRhU3RvcmU6OnNldENhY2hlTWF4QWdlQ2FwKFNlY29uZHMgc2Vjb25kcywgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZAogCiAgICAgYXV0byBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBDYWxsYmFja0Fn
Z3JlZ2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAKLSAgICBmb3Ig
KGF1dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xzKCkpIHsKLSAgICAgICAgaWYgKGF1dG8q
IHByb2Nlc3MgPSBwcm9jZXNzUG9vbC0+bmV0d29ya1Byb2Nlc3MoKSkKLSAgICAgICAgICAgIHBy
b2Nlc3MtPnNldENhY2hlTWF4QWdlQ2FwKG1fc2Vzc2lvbklELCBzZWNvbmRzLCBbcHJvY2Vzc1Bv
b2wsIGNhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsg
fSk7Ci0gICAgfQorICAgIGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBwcm9jZXNzUG9vbHMoKSkK
KyAgICAgICAgcHJvY2Vzc1Bvb2wtPmVuc3VyZU5ldHdvcmtQcm9jZXNzKCkuc2V0Q2FjaGVNYXhB
Z2VDYXAobV9zZXNzaW9uSUQsIHNlY29uZHMsIFtwcm9jZXNzUG9vbCwgY2FsbGJhY2tBZ2dyZWdh
dG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKIH0KIAogdm9pZCBXZWJz
aXRlRGF0YVN0b3JlOjpzZXRNaW5pbXVtVGltZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwoU2Vj
b25kcyBzZWNvbmRzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCkBAIC0xMzU3LDEwICsxMzUyLDggQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzZXRNaW5p
bXVtVGltZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwoU2Vjb25kcyBzZWNvbmRzLAogICAgIAog
ICAgIGF1dG8gY2FsbGJhY2tBZ2dyZWdhdG9yID0gQ2FsbGJhY2tBZ2dyZWdhdG9yOjpjcmVhdGUo
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogCi0gICAgZm9yIChhdXRvJiBwcm9jZXNzUG9v
bCA6IHByb2Nlc3NQb29scygpKSB7Ci0gICAgICAgIGlmIChhdXRvKiBwcm9jZXNzID0gcHJvY2Vz
c1Bvb2wtPm5ldHdvcmtQcm9jZXNzKCkpCi0gICAgICAgICAgICBwcm9jZXNzLT5zZXRNaW5pbXVt
VGltZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwobV9zZXNzaW9uSUQsIHNlY29uZHMsIFtwcm9j
ZXNzUG9vbCwgY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYo
KV0geyB9KTsKLSAgICB9CisgICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29s
cygpKQorICAgICAgICBwcm9jZXNzUG9vbC0+ZW5zdXJlTmV0d29ya1Byb2Nlc3MoKS5zZXRNaW5p
bXVtVGltZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwobV9zZXNzaW9uSUQsIHNlY29uZHMsIFtw
cm9jZXNzUG9vbCwgY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlS
ZWYoKV0geyB9KTsKIH0KICAgICAKIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6ZHVtcFJlc291cmNl
TG9hZFN0YXRpc3RpY3MoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKQEAgLTE0MjEsOCArMTQxNCw3IEBAIHZvaWQgV2Vic2l0ZURhdGFT
dG9yZTo6c2V0UHJldmFsZW50UmVzb3VyY2UoY29uc3QgVVJMJiB1cmwsIENvbXBsZXRpb25IYW5k
bGVyPHZvCiAgICAgYXV0byBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBDYWxsYmFja0FnZ3JlZ2F0b3I6
OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAKICAgICBmb3IgKGF1dG8mIHBy
b2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xzKCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHByb2Nlc3Mg
PSBwcm9jZXNzUG9vbC0+bmV0d29ya1Byb2Nlc3MoKSkKLSAgICAgICAgICAgIHByb2Nlc3MtPnNl
dFByZXZhbGVudFJlc291cmNlKG1fc2Vzc2lvbklELCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzOjpwcmltYXJ5RG9tYWluKHVybCksIFtwcm9jZXNzUG9vbCwgY2FsbGJhY2tBZ2dyZWdh
dG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKKyAgICAgICAgcHJvY2Vz
c1Bvb2wtPmVuc3VyZU5ldHdvcmtQcm9jZXNzKCkuc2V0UHJldmFsZW50UmVzb3VyY2UobV9zZXNz
aW9uSUQsIFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M6OnByaW1hcnlEb21haW4odXJs
KSwgW3Byb2Nlc3NQb29sLCBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3Iu
Y29weVJlZigpXSB7IH0pOwogICAgIH0KIH0KIApAQCAtMTUwNCwxMCArMTQ5Niw4IEBAIHZvaWQg
V2Vic2l0ZURhdGFTdG9yZTo6c2V0U2hvdWxkQ2xhc3NpZnlSZXNvdXJjZXNCZWZvcmVEYXRhUmVj
b3Jkc1JlbW92YWwoYm9vbCB2CiAgICAgCiAgICAgYXV0byBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBD
YWxsYmFja0FnZ3JlZ2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAK
LSAgICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xzKCkpIHsKLSAgICAgICAg
aWYgKGF1dG8qIHByb2Nlc3MgPSBwcm9jZXNzUG9vbC0+bmV0d29ya1Byb2Nlc3MoKSkKLSAgICAg
ICAgICAgIHByb2Nlc3MtPnNldFNob3VsZENsYXNzaWZ5UmVzb3VyY2VzQmVmb3JlRGF0YVJlY29y
ZHNSZW1vdmFsKG1fc2Vzc2lvbklELCB2YWx1ZSwgW3Byb2Nlc3NQb29sLCBjYWxsYmFja0FnZ3Jl
Z2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOwotICAgIH0KKyAgICBm
b3IgKGF1dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xzKCkpCisgICAgICAgIHByb2Nlc3NQ
b29sLT5lbnN1cmVOZXR3b3JrUHJvY2VzcygpLnNldFNob3VsZENsYXNzaWZ5UmVzb3VyY2VzQmVm
b3JlRGF0YVJlY29yZHNSZW1vdmFsKG1fc2Vzc2lvbklELCB2YWx1ZSwgW3Byb2Nlc3NQb29sLCBj
YWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOwog
fQogCiB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNldFN1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdp
bihjb25zdCBVUkwmIHN1YmZyYW1lLCBjb25zdCBVUkwmIHRvcEZyYW1lLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC0xNzUxLDcgKzE3NDEsNyBAQCB2
b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnN1Ym1pdFRlbGVtZXRyeSgpCiAgICAgfQogfQogCi12b2lk
IFdlYnNpdGVEYXRhU3RvcmU6OnNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoV2Fs
bFRpbWUgbW9kaWZpZWRTaW5jZSwgU2hvdWxkR3JhbmRmYXRoZXIgc2hvdWxkR3JhbmRmYXRoZXIs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2Vi
c2l0ZURhdGFTdG9yZTo6c2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChXYWxsVGlt
ZSBtb2RpZmllZFNpbmNlLCBTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3Mgc2hvdWxkR3JhbmRm
YXRoZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsK
ICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogICAgIApAQCAtMTc2OCw3ICsxNzU4LDcg
QEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0
ZW50KFdhbGxUaW1lIG1vZGlmaWVkU2luY2UKICAgICB9CiB9CiAKLXZvaWQgV2Vic2l0ZURhdGFT
dG9yZTo6c2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChTaG91bGRHcmFuZGZhdGhl
ciBzaG91bGRHcmFuZGZhdGhlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQordm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzY2hlZHVsZUNsZWFySW5NZW1vcnlB
bmRQZXJzaXN0ZW50KFNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljcyBzaG91bGRHcmFuZGZhdGhl
ciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAg
IEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAgICAgCkBAIC0xODMzLDEwICsxODIzLDggQEAg
dm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzZXRBZ2VDYXBGb3JDbGllbnRTaWRlQ29va2llcyhPcHRp
b25hbDxTZWNvbmRzPiBzZWNvbmRzLAogewogICAgIGF1dG8gY2FsbGJhY2tBZ2dyZWdhdG9yID0g
Q2FsbGJhY2tBZ2dyZWdhdG9yOjpjcmVhdGUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwog
ICAgIAotICAgIGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBwcm9jZXNzUG9vbHMoKSkgewotICAg
ICAgICBpZiAoYXV0byogcHJvY2VzcyA9IHByb2Nlc3NQb29sLT5uZXR3b3JrUHJvY2VzcygpKQot
ICAgICAgICAgICAgcHJvY2Vzcy0+c2V0QWdlQ2FwRm9yQ2xpZW50U2lkZUNvb2tpZXMobV9zZXNz
aW9uSUQsIHNlY29uZHMsIFtwcm9jZXNzUG9vbCwgY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJh
Y2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKLSAgICB9CisgICAgZm9yIChhdXRvJiBwcm9j
ZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKQorICAgICAgICBwcm9jZXNzUG9vbC0+ZW5zdXJlTmV0
d29ya1Byb2Nlc3MoKS5zZXRBZ2VDYXBGb3JDbGllbnRTaWRlQ29va2llcyhtX3Nlc3Npb25JRCwg
c2Vjb25kcywgW3Byb2Nlc3NQb29sLCBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3Jl
Z2F0b3IuY29weVJlZigpXSB7IH0pOwogfQogCiB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNldExh
c3RTZWVuKGNvbnN0IFVSTCYgdXJsLCBTZWNvbmRzIHNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTE4NjksMTAgKzE4NTcsOCBAQCB2b2lk
IFdlYnNpdGVEYXRhU3RvcmU6OnNldE5vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5u
ZWQoYm9vbCB2YWx1ZSwgQ29tcAogCiAgICAgYXV0byBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBDYWxs
YmFja0FnZ3JlZ2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAKLSAg
ICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xzKCkpIHsKLSAgICAgICAgaWYg
KGF1dG8qIHByb2Nlc3MgPSBwcm9jZXNzUG9vbC0+bmV0d29ya1Byb2Nlc3MoKSkKLSAgICAgICAg
ICAgIHByb2Nlc3MtPnNldE5vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQobV9z
ZXNzaW9uSUQsIHZhbHVlLCBbcHJvY2Vzc1Bvb2wsIGNhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxi
YWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7Ci0gICAgfQorICAgIGZvciAoYXV0byYgcHJv
Y2Vzc1Bvb2wgOiBwcm9jZXNzUG9vbHMoKSkKKyAgICAgICAgcHJvY2Vzc1Bvb2wtPmVuc3VyZU5l
dHdvcmtQcm9jZXNzKCkuc2V0Tm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5lZCht
X3Nlc3Npb25JRCwgdmFsdWUsIFtwcm9jZXNzUG9vbCwgY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2Fs
bGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKIH0KIAogdm9pZCBXZWJzaXRlRGF0YVN0
b3JlOjpzZXROb3RpZnlQYWdlc1doZW5UZWxlbWV0cnlXYXNDYXB0dXJlZChib29sIHZhbHVlLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC0xODg0LDEw
ICsxODcwLDggQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzZXROb3RpZnlQYWdlc1doZW5UZWxl
bWV0cnlXYXNDYXB0dXJlZChib29sIHZhbHVlLCBDb21wbGUKICAgICAKICAgICBhdXRvIGNhbGxi
YWNrQWdncmVnYXRvciA9IENhbGxiYWNrQWdncmVnYXRvcjo6Y3JlYXRlKFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKICAgICAKLSAgICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vz
c1Bvb2xzKCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHByb2Nlc3MgPSBwcm9jZXNzUG9vbC0+bmV0
d29ya1Byb2Nlc3MoKSkKLSAgICAgICAgICAgIHByb2Nlc3MtPnNldE5vdGlmeVBhZ2VzV2hlblRl
bGVtZXRyeVdhc0NhcHR1cmVkKG1fc2Vzc2lvbklELCB2YWx1ZSwgW3Byb2Nlc3NQb29sLCBjYWxs
YmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOwotICAg
IH0KKyAgICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xzKCkpCisgICAgICAg
IHByb2Nlc3NQb29sLT5lbnN1cmVOZXR3b3JrUHJvY2VzcygpLnNldE5vdGlmeVBhZ2VzV2hlblRl
bGVtZXRyeVdhc0NhcHR1cmVkKG1fc2Vzc2lvbklELCB2YWx1ZSwgW3Byb2Nlc3NQb29sLCBjYWxs
YmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOwogfQog
CiB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6Omhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIo
Y29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwgY29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9t
YWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCBoYXNBY2Nlc3MpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtMjAxNywxMCAr
MjAwMSw4IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6c2V0VGltZVRvTGl2ZVVzZXJJbnRlcmFj
dGlvbihTZWNvbmRzIHNlY29uZHMsIENvbXBsZXRpb25ICiAKICAgICBhdXRvIGNhbGxiYWNrQWdn
cmVnYXRvciA9IENhbGxiYWNrQWdncmVnYXRvcjo6Y3JlYXRlKFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKTsKICAgICAKLSAgICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xz
KCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIG5ldHdvcmtQcm9jZXNzID0gcHJvY2Vzc1Bvb2wtPm5l
dHdvcmtQcm9jZXNzKCkpCi0gICAgICAgICAgICBuZXR3b3JrUHJvY2Vzcy0+c2V0VGltZVRvTGl2
ZVVzZXJJbnRlcmFjdGlvbihtX3Nlc3Npb25JRCwgc2Vjb25kcywgW2NhbGxiYWNrQWdncmVnYXRv
ciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7Ci0gICAgfQorICAgIGZvciAo
YXV0byYgcHJvY2Vzc1Bvb2wgOiBwcm9jZXNzUG9vbHMoKSkKKyAgICAgICAgcHJvY2Vzc1Bvb2wt
PmVuc3VyZU5ldHdvcmtQcm9jZXNzKCkuc2V0VGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbihtX3Nl
c3Npb25JRCwgc2Vjb25kcywgW2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRv
ci5jb3B5UmVmKCldIHsgfSk7CiB9CiAKIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6bG9nVXNlcklu
dGVyYWN0aW9uKGNvbnN0IFVSTCYgdXJsLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCkBAIC0yMTQxLDEwICsyMTIzLDggQEAgdm9pZCBXZWJzaXRlRGF0YVN0
b3JlOjpzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhTZWNvbmRzIHNlY29u
ZHMsIEMKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIGF1dG8gY2Fs
bGJhY2tBZ2dyZWdhdG9yID0gQ2FsbGJhY2tBZ2dyZWdhdG9yOjpjcmVhdGUoV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOwogICAgIAotICAgIGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBwcm9j
ZXNzUG9vbHMoKSkgewotICAgICAgICBpZiAoYXV0byogbmV0d29ya1Byb2Nlc3MgPSBwcm9jZXNz
UG9vbC0+bmV0d29ya1Byb2Nlc3MoKSkKLSAgICAgICAgICAgIG5ldHdvcmtQcm9jZXNzLT5zZXRD
YWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhtX3Nlc3Npb25JRCwgc2Vjb25kcywg
W2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7
Ci0gICAgfQorICAgIGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBwcm9jZXNzUG9vbHMoKSkKKyAg
ICAgICAgcHJvY2Vzc1Bvb2wtPmVuc3VyZU5ldHdvcmtQcm9jZXNzKCkuc2V0Q2FjaGVNYXhBZ2VD
YXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMobV9zZXNzaW9uSUQsIHNlY29uZHMsIFtjYWxsYmFja0Fn
Z3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOwogI2Vsc2UKICAg
ICBVTlVTRURfUEFSQU0oc2Vjb25kcyk7CiAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKQEAgLTIz
NzYsMTAgKzIzNTYsOCBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNldFJlc291cmNlTG9hZFN0
YXRpc3RpY3NEZWJ1Z01vZGUoYm9vbCBlbmFibGVkLCBDb21wbGV0aQogICAgIAogICAgIGF1dG8g
Y2FsbGJhY2tBZ2dyZWdhdG9yID0gQ2FsbGJhY2tBZ2dyZWdhdG9yOjpjcmVhdGUoV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOwogICAgIAotICAgIGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBw
cm9jZXNzUG9vbHMoKSkgewotICAgICAgICBpZiAoYXV0byogcHJvY2VzcyA9IHByb2Nlc3NQb29s
LT5uZXR3b3JrUHJvY2VzcygpKQotICAgICAgICAgICAgcHJvY2Vzcy0+c2V0UmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RlYnVnTW9kZShtX3Nlc3Npb25JRCwgZW5hYmxlZCwgW2NhbGxiYWNrQWdncmVn
YXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7Ci0gICAgfQorICAgIGZv
ciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBwcm9jZXNzUG9vbHMoKSkKKyAgICAgICAgcHJvY2Vzc1Bv
b2wtPmVuc3VyZU5ldHdvcmtQcm9jZXNzKCkuc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVn
TW9kZShtX3Nlc3Npb25JRCwgZW5hYmxlZCwgW2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNr
QWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShlbmFi
bGVkKTsKICAgICBVTlVTRURfUEFSQU0oY29tcGxldGlvbkhhbmRsZXIpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCmlu
ZGV4IGM2NTA1MjhhMWFiZjBmY2RiOTZkNWI5MTYxMGIyZmFiNTExNjE0Y2MuLmU1MjhmNmRkMzZj
ODcxNjQzZDdmMmFiMDFmM2YyMzEwNWUyY2YxNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKQEAgLTcyLDggKzcy
LDggQEAgc3RydWN0IFdlYnNpdGVEYXRhUmVjb3JkOwogc3RydWN0IFdlYnNpdGVEYXRhU3RvcmVQ
YXJhbWV0ZXJzOwogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLWVudW0g
Y2xhc3MgU2hvdWxkR3JhbmRmYXRoZXI7Ci1lbnVtIGNsYXNzIFN0b3JhZ2VBY2Nlc3NTdGF0dXMg
OiB1bnNpZ25lZDsKK2VudW0gY2xhc3MgU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzIDogYm9v
bDsKK2VudW0gY2xhc3MgU3RvcmFnZUFjY2Vzc1N0YXR1cyA6IHVpbnQ4X3Q7CiBlbnVtIGNsYXNz
IFN0b3JhZ2VBY2Nlc3NQcm9tcHRTdGF0dXM7CiAjZW5kaWYKIApAQCAtMTQzLDggKzE0Myw4IEBA
IHB1YmxpYzoKICAgICB2b2lkIHJlbW92ZVByZXZhbGVudERvbWFpbnMoY29uc3QgVmVjdG9yPFN0
cmluZz4mIGRvbWFpbnMpOwogICAgIHZvaWQgcmVzZXRQYXJhbWV0ZXJzVG9EZWZhdWx0VmFsdWVz
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzY2hlZHVsZUNvb2tpZUJs
b2NraW5nVXBkYXRlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBzY2hl
ZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFdhbGxUaW1lIG1vZGlmaWVkU2luY2UsIFNo
b3VsZEdyYW5kZmF0aGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQg
c2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChTaG91bGRHcmFuZGZhdGhlciwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIHNjaGVkdWxlQ2xlYXJJbk1lbW9y
eUFuZFBlcnNpc3RlbnQoV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSwgU2hvdWxkR3JhbmRmYXRoZXJT
dGF0aXN0aWNzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgc2NoZWR1
bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3Ms
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzY2hlZHVsZVN0YXRpc3Rp
Y3NBbmREYXRhUmVjb3Jkc1Byb2Nlc3NpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
ICAgICB2b2lkIHN1Ym1pdFRlbGVtZXRyeSgpOwogICAgIHZvaWQgc2V0Q2FjaGVNYXhBZ2VDYXAo
U2Vjb25kcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGJkOTEzMmQ0N2Q5YzIzMjU3
NWZhNmI4NzViNGU4MTc4MjJhMDBmMDIuLjc5YjUwNjczNGRjMjI0ZTM2NGFmMDY4YjgwMTUwYzIw
MDExNWI5MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtMTA5MSw4ICsxMDkxLDEwIEBACiAJCTc1QThEMkM4MTg3Q0NGQUIwMEMzOUM5
RSAvKiBXS1dlYnNpdGVEYXRhU3RvcmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDc1QThEMkM0MTg3Q0NGOUYwMEMzOUM5RSAvKiBXS1dlYnNpdGVEYXRh
U3RvcmUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CiAJ
CTc1QThEMkQ2MTg3RDFDMEUwMEMzOUM5RSAvKiBXS1dlYnNpdGVEYXRhU3RvcmVJbnRlcm5hbC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzVBOEQyRDQx
ODdEMUMwMTAwQzM5QzlFIC8qIFdLV2Vic2l0ZURhdGFTdG9yZUludGVybmFsLmggKi87IH07CiAJ
CTc2MkI3NDhEMTIwQkM3NUMwMDgxOTMzOSAvKiBXS1ByZWZlcmVuY2VzUmVmUHJpdmF0ZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzYyQjc0ODQxMjBC
QkEyRDAwODE5MzM5IC8qIFdLUHJlZmVyZW5jZXNSZWZQcml2YXRlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJN0ExMTY5REIyMUY3RDY4QjAwQzI0
QTZFIC8qIFNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0ExMTY5REEyMUY3RDY4QTAwQzI0QTZFIC8qIFNo
b3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljcy5oICovOyB9OwogCQk3QTFFMkE4NTFFRUZFODkyMDAz
N0EwRTAgLyogQVBJTm90aWZpY2F0aW9uUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBMUUyQTg0MUVFRkU4OEEwMDM3QTBFMCAvKiBBUElO
b3RpZmljYXRpb25Qcm92aWRlci5oICovOyB9OwogCQk3QTNBQ0UxQjFFRUVGNzlCMDBBODY0QTQg
LyogQVBJSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTNBQ0UxQTFFRUVGNzhDMDBBODY0QTQgLyog
QVBJSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmggKi87IH07CisJCTdBM0ZFQ0EyMjFG
N0MwOTcwMEYyNjdDRCAvKiBTdG9yYWdlQWNjZXNzU3RhdHVzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTNGRUNBMTIxRjdDMDk3MDBGMjY3Q0QgLyog
U3RvcmFnZUFjY2Vzc1N0YXR1cy5oICovOyB9OwogCQk3QTc3MkM4RDFEREQ0QTI1MDAwRjM0RjEg
LyogY29tLmFwcGxlLldlYktpdC5wbHVnaW4tY29tbW9uLnNiIGluIENvcHkgUGx1Zy1pbiBTYW5k
Ym94IFByb2ZpbGVzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBMTUwNjcy
MURENTYyOTgwMDFGNEI1OCAvKiBjb20uYXBwbGUuV2ViS2l0LnBsdWdpbi1jb21tb24uc2IgKi87
IH07CiAJCTdBNzkxRUZBMUM3Q0ZDRjEwMEM0QzUyQiAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmVNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gN0E3OTFFRjkxQzdDRkIzNzAwQzRDNTJCIC8qIFdlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZU1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCTdBNzkxRUZC
MUM3Q0ZEMDEwMEM0QzUyQiAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmVNZXNzYWdl
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0E3OTFF
RjgxQzdDRkIxMDAwQzRDNTJCIC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZU1lc3Nh
Z2VzLmggKi87IH07CkBAIC0zNTA5LDkgKzM1MTEsMTEgQEAKIAkJNzVBOEQyQzUxODdDQ0Y5RjAw
QzM5QzlFIC8qIFdLV2Vic2l0ZURhdGFTdG9yZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IFdLV2Vic2l0ZURhdGFTdG9yZS5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNzVBOEQyRDQxODdEMUMwMTAwQzM5QzlFIC8qIFdLV2Vic2l0ZURhdGFTdG9y
ZUludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLV2Vic2l0ZURh
dGFTdG9yZUludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc2MkI3NDg0
MTIwQkJBMkQwMDgxOTMzOSAvKiBXS1ByZWZlcmVuY2VzUmVmUHJpdmF0ZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXS1ByZWZlcmVuY2VzUmVmUHJpdmF0ZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk3QTExNjlEQTIxRjdENjhBMDBDMjRBNkUgLyogU2hvdWxk
R3JhbmRmYXRoZXJTdGF0aXN0aWNzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IFNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljcy5oOyBwYXRoID0gQ2xhc3NpZmllci9TaG91bGRH
cmFuZGZhdGhlclN0YXRpc3RpY3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0Ex
NTA2NzIxREQ1NjI5ODAwMUY0QjU4IC8qIGNvbS5hcHBsZS5XZWJLaXQucGx1Z2luLWNvbW1vbi5z
YiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSAiY29tLmFwcGxlLldlYktpdC5wbHVnaW4tY29tbW9u
LnNiIjsgcGF0aCA9ICJEZXJpdmVkU291cmNlcy9XZWJLaXQyL2NvbS5hcHBsZS5XZWJLaXQucGx1
Z2luLWNvbW1vbi5zYiI7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTdB
MUUyQTg0MUVFRkU4OEEwMDM3QTBFMCAvKiBBUElOb3RpZmljYXRpb25Qcm92aWRlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBUElOb3RpZmljYXRpb25Qcm92aWRlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QTNBQ0UxQTFFRUVGNzhDMDBBODY0QTQgLyog
QVBJSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEFQSUluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk3QTNGRUNBMTIxRjdDMDk3MDBGMjY3Q0QgLyogU3RvcmFn
ZUFjY2Vzc1N0YXR1cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBTdG9yYWdl
QWNjZXNzU3RhdHVzLmg7IHBhdGggPSBDbGFzc2lmaWVyL1N0b3JhZ2VBY2Nlc3NTdGF0dXMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0E1RTM5NDkxRDVCRDhBNzAwQjRCN0NFIC8q
IGNvbS5tYWNyb21lZGlhLkZsYXNoIFBsYXllciBFU1IucGx1Z2luLnNiICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9ICJjb20ubWFjcm9tZWRpYS5GbGFzaCBQbGF5ZXIgRVNSLnBsdWdpbi5zYiI7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBNzkxRUY4MUM3Q0ZCMTAwMEM0QzUyQiAvKiBX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmVNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmVNZXNzYWdlcy5o
OyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmVNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQk3
QTc5MUVGOTFDN0NGQjM3MDBDNEM1MkIgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
TWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZU1lc3NhZ2VSZWNlaXZlci5jcHA7IHBhdGgg
PSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZU1l
c3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CkBA
IC02ODk2LDYgKzY5MDAsOCBAQAogCQkJCTdBRkJEMzY1MjFFNTFCQUIwMDVEQkFDQiAvKiBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuaCAqLywKIAkJCQk3QUZCRDM2OTIxRTU0MkU4
MDA1REJBQ0IgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlLmNwcCAq
LywKIAkJCQk3QUZCRDM2ODIxRTU0MkU4MDA1REJBQ0IgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1BlcnNpc3RlbnRTdG9yYWdlLmggKi8sCisJCQkJN0ExMTY5REEyMUY3RDY4QTAwQzI0QTZFIC8q
IFNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljcy5oICovLAorCQkJCTdBM0ZFQ0ExMjFGN0MwOTcw
MEYyNjdDRCAvKiBTdG9yYWdlQWNjZXNzU3RhdHVzLmggKi8sCiAJCQkJN0E4NDNBMUEyMUU0MUZC
MjAwREVGNjYzIC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAgKi8sCiAJCQkJ
N0FGQkQzNjIyMUU1MEYzOTAwNURCQUNCIC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZS5oICovLAogCQkJCTdBRkJEMzZDMjFFNTQ1NDQwMDVEQkFDQiAvKiBXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzVGVsZW1ldHJ5LmNwcCAqLywKQEAgLTkzMDAsMTEgKzkzMDYsMTMgQEAKIAkJCQk4
MzEzRjdFRTFGN0RBRTA4MDBCOTQ0RUIgLyogU2hhcmVkU3RyaW5nSGFzaFRhYmxlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk4M0Y5NjQ0RTFGQTBGNzZFMDBDNDc3NTAgLyogU2hhcmVkU3RyaW5nSGFz
aFRhYmxlUmVhZE9ubHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTFENjdCMzM5MjEyRTFGNjEwMEZB
QTc4NiAvKiBTaGFyZVNoZWV0Q2FsbGJhY2tJRC5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0ExMTY5
REIyMUY3RDY4QjAwQzI0QTZFIC8qIFNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljcy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJOTk1MjI2RDYyMDdEMTg0NjAwRjc4NDIwIC8qIFNpbXVsYXRlZElucHV0
RGlzcGF0Y2hlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkRBRjA2RDYxOEJEMUE0NzAwODFDRUIx
IC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTJE
RTY5NDNFMThCRDJBNjgwMDVDMTVFNSAvKiBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyTWVz
c2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTUyNzJCMjhCMTQwNjk4NUQwMDk2QTVEMCAvKiBT
dGF0aXN0aWNzRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE0QkRFRDMxNkM5OEVERDAwRTRF
MjVFIC8qIFN0YXRpc3RpY3NSZXF1ZXN0LmggaW4gSGVhZGVycyAqLywKKwkJCQk3QTNGRUNBMjIx
RjdDMDk3MDBGMjY3Q0QgLyogU3RvcmFnZUFjY2Vzc1N0YXR1cy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMUFEMzMwNkYxNkIxRDk5MTAwNEY2MEU3IC8qIFN0b3JhZ2VBcmVhSW1wbC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMUFDRUNEMjUxNzE2MkRCMTAwMUZDOUVGIC8qIFN0b3JhZ2VBcmVhTWFwLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxQTMzNERFRTE2REU4Rjg4MDA2QThFMzggLyogU3RvcmFnZUFy
ZWFNYXBNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDcwMCw2ICsxMDcwOCw3IEBACiAJ
CQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCiAJCQkJMkQ5MkE3
ODQyMTJCNkFCMTAwRjQ5M0ZEIC8qIEFjdGl2aXR5QXNzZXJ0aW9uLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCTVDRTQzQjcyMjFGN0NDMDIwMDkzQkNDNSAvKiBBUElIVFRQQ29va2llU3RvcmVDb2Nv
YS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTJEOTJBNzdCMjEyQjZBNzEwMEY0OTNGRCAvKiBBcmd1
bWVudENvZGVycy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyREVCMUQyRTIxMjc0NzM2MDA5MzM5
MDYgLyogQXJndW1lbnRDb2RlcnNDRi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDkyQTc3QzIx
MkI2QTcxMDBGNDkzRkQgLyogQXR0YWNobWVudC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTEwNzg3
LDcgKzEwNzk2LDYgQEAKIAkJCQkyRDkyQTc4NzIxMkI2QUIxMDBGNDkzRkQgLyogU2hhcmVhYmxl
Qml0bWFwLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJERTY5NDNEMThCRDJBNjgwMDVDMTVFNSAv
KiBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTFBMzM0REVEMTZERThGODgwMDZBOEUzOCAvKiBTdG9yYWdlQXJlYU1hcE1l
c3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1Q0U0M0I3MjIxRjdDQzAyMDA5
M0JDQzUgLyogQVBJSFRUUENvb2tpZVN0b3JlQ29jb2EubW0gaW4gU291cmNlcyAqLywKIAkJCQkx
QUIzMUE5NjE2QkM2ODgxMDBGNkRCQzkgLyogU3RvcmFnZU1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQ5MkE3ODMyMTJCNkE3MTAwRjQ5M0ZEIC8qIFN0cmlu
Z1JlZmVyZW5jZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDExQjc1MTIxMjZBMjgyMDA2Rjg4
NzggLyogVW5pZmllZFNvdXJjZTEtbW0ubW0gaW4gU291cmNlcyAqLywK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>359844</attachid>
            <date>2019-01-22 20:25:49 -0800</date>
            <delta_ts>2019-01-23 11:13:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-193659-20190122202548.patch</filename>
            <type>text/plain</type>
            <size>93878</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQwMzE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGFkM2JkMTAyNDUzZGZkYTZi
NmM1OWIyZTRlMmFiNzZjMTZiNGFmZjIuLjFjZmI2MWUxOWY5ZjYyYmM3MzQyMmQxZmFiNjhkM2Ix
MDc1MGZiMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTYgQEAKKzIwMTktMDEtMjIgIEJyZW50IEZ1
bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CisKKyAgICAgICAgU3dpdGNoIE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiBwb3J0aW9ucyBvZiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIHRvIEFzeW5jIG1l
c3NhZ2UgcGFzc2luZyBzdHlsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTkzNjU5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80NzQzMzI5MD4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDaGFuZ2UgdGhl
IGltcGxlbWVudGF0aW9ucyBvZiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIGNvZGUgaW4gTmV0d29y
a1N0b3JhZ2VTZXNzaW9uIHRvIHVzZSB0aGUKKyAgICAgICAgJ3NlbmRXaXRoQXN5bmNSZXBseScg
c28gdGhhdCBtb3JlIG9mIHRoZSBjb2RlIGlzIGF1dG9nZW5lcmF0ZWQuIFRoaXMgc2hvdWxkIG1h
a2UgdGVzdCBydW5zIG1vcmUKKyAgICAgICAgY29uc2lzdGVudCwgYW5kIHNob3VsZCByZWR1Y2Ug
dGhlIHBvc3NpYmlsaXR5IG9mIGJvb2trZWVwaW5nIGVycm9ycyBpbiB0aGUgbWVzc2FnZSBoYW5k
bGluZworICAgICAgICBpbXBsZW1lbnRhdGlvbnMuCisKKyAgICAgICAgRml4IHRoZSBpbXBsZW1l
bnRhdGlvbiBvZiBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpjbGVhckNhbGxiYWNrU3RhdGVzIHRvIHJl
bW92ZSB0aGUgbWFudWFsbHkgY29uc3RydWN0ZWQKKyAgICAgICAgKGFuZCBpbmNvbXBsZXRlKSBt
ZXNzYWdlIGNhbGxiYWNrcy4gVGhlc2UgZXJyb3JzIGFyZSBhIGJpZyByZWFzb24gdG8gbW92ZSB0
byB0aGUgYXV0by1nZW5lcmF0ZWQKKyAgICAgICAgJ3NlbmRXaXRoQXN5bmNSZXBseScgaW1wbGVt
ZW50YXRvaW4uIERpdHRvIGZvciBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRDbG9zZS4KKworICAg
ICAgICBUaGlzIHBhdGNoIGFsc28gbW92ZXMgYW4gaW5pdGlhbGl6YXRvbiBjYWxsIChXZWJzaXRl
RGF0YVN0b3JlOjpkaWRDcmVhdGVOZXR3b3JrUHJvY2VzcykgZnJvbQorICAgICAgICAnZW5zdXJl
TmV0d29ya1Byb2Nlc3MnIHRvICdwcm9jZXNzRGlkRmluaXNoTGF1bmNoaW5nJy4gSW4gY3VycmVu
dCBjb2RlLCB0aGUgY2FsbCBoYXBwZW5zIGJlZm9yZQorICAgICAgICBhIGNvbm5lY3Rpb24gaXMg
ZXN0YWJsaXNoZWQgdG8gdGhlIG5ldHdvcmsgcHJvY2VzcywgY2F1c2luZyBpbml0aWFsaXphdGlv
biBtZXNzYWdlcyB0byBnZXQgZHJvcHBlZAorICAgICAgICBsZWFkaW5nIHRvIHRlc3Qgc3lzdGVt
IGZsYWtpbmVzcy4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9DbGFzc2lmaWVyL1Nob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljcy5oOiBBZGRlZC4KKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1N0b3JhZ2VBY2Nlc3NTdGF0dXMuaDogQWRk
ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6OnNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQpOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6dXBkYXRlUHJldmFsZW50RG9tYWluc1RvQmxv
Y2tDb29raWVzRm9yKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnNldEFnZUNh
cEZvckNsaWVudFNpZGVDb29raWVzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6
OnNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUHJvY2Vzczo6aGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Byb2Nlc3M6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Byb2Nlc3M6OmdyYW50U3RvcmFnZUFjY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtQcm9jZXNzOjpyZW1vdmVBbGxTdG9yYWdlQWNjZXNzKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Byb2Nlc3M6OnNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2Vz
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnJlc2V0Q2FjaGVNYXhBZ2VDYXBG
b3JQcmV2YWxlbnRSZXNvdXJjZXMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6
ZGVsZXRlV2Vic2l0ZURhdGEpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMu
aW46CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHA6
CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFuZFBl
cnNpc3RlbnRTdG9yZSk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzQ2xl
YXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZU1vZGlmaWVkU2luY2VIb3Vycyk6CisgICAgICAg
IChXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OmNsZWFyQ2FsbGJhY2tTdGF0ZXMpOiBS
ZW1vdmUgaW5jb21wbGV0ZSBjbGVhbi11cCBjb2RlIHRoYXQKKyAgICAgICAgaXMgbm93IGF1dG9n
ZW5lcmF0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZENsb3Nl
KTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OnVwZGF0ZVBy
ZXZhbGVudERvbWFpbnNUb0Jsb2NrQ29va2llc0Zvcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm9jZXNzUHJveHk6OnNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRBZ2VDYXBGb3JDbGllbnRTaWRl
Q29va2llcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6Omhhc1N0b3Jh
Z2VBY2Nlc3NGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6
OnJlcXVlc3RTdG9yYWdlQWNjZXNzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQ
cm94eTo6Z3JhbnRTdG9yYWdlQWNjZXNzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3NQcm94eTo6cmVtb3ZlQWxsU3RvcmFnZUFjY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm9jZXNzUHJveHk6OnNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0Q2FjaGVNYXhBZ2VDYXAp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZXNldENhY2hlTWF4QWdl
Q2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3NQcm94eTo6ZGlkVXBkYXRlQmxvY2tDb29raWVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkU2V0QWdlQ2FwRm9yQ2xpZW50U2lkZUNvb2tpZXMp
OiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRVcGRh
dGVSdW50aW1lU2V0dGluZ3MpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzc1Byb3h5OjpzdG9yYWdlQWNjZXNzUmVxdWVzdFJlc3VsdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OnN0b3JhZ2VBY2Nlc3NPcGVyYXRpb25SZXN1
bHQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRS
ZW1vdmVBbGxTdG9yYWdlQWNjZXNzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3NQcm94eTo6ZGlkU2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMp
OiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1l
c3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBy
b2Nlc3NQb29sOjplbnN1cmVOZXR3b3JrUHJvY2Vzcyk6IE1vdmUgV2Vic2l0ZURhdGFTdG9yZSAn
ZGlkQ3JlYXRlTmV0d29ya1Byb2Nlc3MnCisgICAgICAgIHRvICdwcm9jZXNzRGlkRmluaXNoTGF1
bmNoaW5nJy4gQ3VycmVudGx5IHRoZSBjYWxsIGhhcHBlbnMgYmVmb3JlIGEgY29ubmVjdGlvbiBp
cyBlc3RhYmxpc2hlZCwKKyAgICAgICAgY2F1c2luZyBpbml0aWFsaXphdGlvbiBtZXNzYWdlcyB0
byBnZXQgZHJvcHBlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnByb2Nlc3NE
aWRGaW5pc2hMYXVuY2hpbmcpOiBEaXR0by4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURh
dGEvV2Vic2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3Rv
cmU6OnJlbW92ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpzZXRN
YXhTdGF0aXN0aWNzRW50cmllcyk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6
OnNldFBydW5lRW50cmllc0Rvd25Ubyk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3Rv
cmU6OnNldEdyYW5kZmF0aGVyaW5nVGltZSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRh
U3RvcmU6OnNldENhY2hlTWF4QWdlQ2FwKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFT
dG9yZTo6c2V0TWluaW11bVRpbWVCZXR3ZWVuRGF0YVJlY29yZHNSZW1vdmFsKToKKyAgICAgICAg
KFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6c2V0UHJldmFsZW50UmVzb3VyY2UpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpzZXRTaG91bGRDbGFzc2lmeVJlc291cmNlc0Jl
Zm9yZURhdGFSZWNvcmRzUmVtb3ZhbCk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3Rv
cmU6OnNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJzaXRlRGF0YVN0b3JlOjpzZXRBZ2VDYXBGb3JDbGllbnRTaWRlQ29va2llcyk6CisgICAg
ICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnNldE5vdGlmeVBhZ2VzV2hlbkRhdGFSZWNv
cmRzV2VyZVNjYW5uZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpzZXRO
b3RpZnlQYWdlc1doZW5UZWxlbWV0cnlXYXNDYXB0dXJlZCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YnNpdGVEYXRhU3RvcmU6OnNldFRpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24pOgorICAgICAgICAo
V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJl
c291cmNlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnNldFJlc291cmNl
TG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9XZWJzaXRlRGF0YVN0b3JlLmg6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisKIDIwMTktMDEtMjIgIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0Bp
Z2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQgYXR0ZW1wdCB0byBmaXggR1RLL1dQRSBi
b3RzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIv
UmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUu
Y3BwCmluZGV4IDc2ODViNmUzM2M2MmYxYjhlOTRkMzg2NTcxOWJmMTVjYmJhN2YwZDYuLjk3NDRk
NDgzNDVjMTg1M2Y4YWM2MDUzNzE4MTRjN2FiZTM1MmVhNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVt
b3J5U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmll
ci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuY3BwCkBAIC0zMyw2ICszMyw3IEBA
CiAjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzc01hbmFnZXIuaCIKICNpbmNsdWRlICJQbHVnaW5Qcm9j
ZXNzUHJveHkuaCIKICNpbmNsdWRlICJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0
b3JhZ2UuaCIKKyNpbmNsdWRlICJTdG9yYWdlQWNjZXNzU3RhdHVzLmgiCiAjaW5jbHVkZSAiV2Vi
UHJvY2Vzc1Byb3h5LmgiCiAjaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVt
ZXRyeS5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9TaG91bGRHcmFuZGZhdGhlclN0YXRp
c3RpY3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9TaG91bGRH
cmFuZGZhdGhlclN0YXRpc3RpY3MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMDVjMjdkZTA0NDgwZjQxMmFiZmJj
ZmY4M2E3MDk4NzBhYjRkNGU2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Nob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljcy5oCkBAIC0w
LDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK2VudW0gY2xhc3MgU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzIDogYm9vbCB7Cisg
ICAgTm8sCisgICAgWWVzLAorfTsKKyAgICAKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKK25h
bWVzcGFjZSBXVEYgeworICAgIAordGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJLaXQ6
OlNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljcz4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1W
YWx1ZXM8CisgICAgV2ViS2l0OjpTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3MsCisgICAgV2Vi
S2l0OjpTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3M6Ok5vLAorICAgIFdlYktpdDo6U2hvdWxk
R3JhbmRmYXRoZXJTdGF0aXN0aWNzOjpZZXMKKyAgICA+OworfTsKKyAgICAKK30gLy8gbmFtZXNw
YWNlIFdURgorCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xh
c3NpZmllci9TdG9yYWdlQWNjZXNzU3RhdHVzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0NsYXNzaWZpZXIvU3RvcmFnZUFjY2Vzc1N0YXR1cy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcwYjZhMjkz
MzYyYmZlNDNkMTNhNDUzYWMzMTYwY2ZiNzNlYzhhMzUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvU3RvcmFnZUFjY2Vzc1N0YXR1cy5o
CkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK2VudW0gY2xhc3MgU3RvcmFnZUFjY2Vzc1N0YXR1cyA6IHVpbnQ4X3Qgewor
ICAgIENhbm5vdFJlcXVlc3RBY2Nlc3MsCisgICAgUmVxdWlyZXNVc2VyUHJvbXB0LAorICAgIEhh
c0FjY2VzcworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKK25hbWVzcGFjZSBXVEYgewor
ICAgIAordGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJLaXQ6OlN0b3JhZ2VBY2Nlc3NT
dGF0dXM+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAgIFdlYktpdDo6U3Rv
cmFnZUFjY2Vzc1N0YXR1cywKKyAgICBXZWJLaXQ6OlN0b3JhZ2VBY2Nlc3NTdGF0dXM6OkNhbm5v
dFJlcXVlc3RBY2Nlc3MsCisgICAgV2ViS2l0OjpTdG9yYWdlQWNjZXNzU3RhdHVzOjpSZXF1aXJl
c1VzZXJQcm9tcHQsCisgICAgV2ViS2l0OjpTdG9yYWdlQWNjZXNzU3RhdHVzOjpIYXNBY2Nlc3MK
KyAgICA+OworfTsKKyAgICAKK30gLy8gbmFtZXNwYWNlIFdURgorCisKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVy
L1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKaW5kZXggOGU3NzM1YWJmNzc5ZmZk
ZGU4ZWE3NTAyZWJhM2Q1ZTBjMDE2OTBhOC4uZTJjOTc1NDBjYzhkMjRkMzVkODQ0OTAyZjI4YWJi
YTI1MGE3ODA2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFz
c2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZS5jcHAKQEAgLTMzLDYgKzMzLDggQEAKICNpbmNsdWRlICJOZXR3b3JrU2Vzc2lvbi5oIgog
I2luY2x1ZGUgIlJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oIgogI2luY2x1ZGUg
IlJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5oIgorI2luY2x1ZGUgIlNo
b3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljcy5oIgorI2luY2x1ZGUgIlN0b3JhZ2VBY2Nlc3NTdGF0
dXMuaCIKICNpbmNsdWRlICJXZWJGcmFtZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5
LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCkBAIC02MzksNyArNjQxLDcgQEAg
dm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldFZlcnlQcmV2YWxlbnRSZXNv
dXJjZShjb25zdCBTdHJpbmcmIHByaW0KICAgICB9KTsKIH0KICAgICAKLXZvaWQgV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlOjpkdW1wUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9p
ZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmR1bXBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCkBAIC0xMDEwLDcgKzEwMTIsNyBA
QCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2NoZWR1bGVDbGVhckJsb2Nr
aW5nU3RhdGVGb3JEb21haW5zKGNvbnN0CiAgICAgfSk7CiB9CiAKLXZvaWQgV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlOjpzY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFNo
b3VsZEdyYW5kZmF0aGVyIHNob3VsZEdyYW5kZmF0aGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZTo6c2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChTaG91bGRHcmFuZGZhdGhl
clN0YXRpc3RpY3Mgc2hvdWxkR3JhbmRmYXRoZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwog
ICAgIHBvc3RUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHNob3Vs
ZEdyYW5kZmF0aGVyLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpXSgpIG11dGFibGUgewpAQCAtMTAyMyw3ICsxMDI1LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmU6OnNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoU2hv
dWxkR3IKIAogICAgICAgICBpZiAobV9tZW1vcnlTdG9yZSkgewogICAgICAgICAgICAgbV9tZW1v
cnlTdG9yZS0+Y2xlYXIoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBwcm90ZWN0ZWRUaGlzLmNvcHlS
ZWYoKSwgc2hvdWxkR3JhbmRmYXRoZXIsIGNvbXBsZXRpb25IYW5kbGVyQ2FsbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlckNhbGxlcildICgpIG11dGFibGUgewotICAgICAgICAgICAgICAg
IGlmIChzaG91bGRHcmFuZGZhdGhlciA9PSBTaG91bGRHcmFuZGZhdGhlcjo6WWVzKSB7CisgICAg
ICAgICAgICAgICAgaWYgKHNob3VsZEdyYW5kZmF0aGVyID09IFNob3VsZEdyYW5kZmF0aGVyU3Rh
dGlzdGljczo6WWVzKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChtX21lbW9yeVN0b3JlKQog
ICAgICAgICAgICAgICAgICAgICAgICAgbV9tZW1vcnlTdG9yZS0+Z3JhbmRmYXRoZXJFeGlzdGlu
Z1dlYnNpdGVEYXRhKGNvbXBsZXRpb25IYW5kbGVyQ2FsbGVyLnJlbGVhc2UoKSk7CiAgICAgICAg
ICAgICAgICAgICAgIGVsc2UKQEAgLTEwMzEsMTMgKzEwMzMsMTMgQEAgdm9pZCBXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQo
U2hvdWxkR3IKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgIGlmIChzaG91bGRHcmFuZGZhdGhlciA9PSBTaG91bGRHcmFuZGZh
dGhlcjo6WWVzKQorICAgICAgICAgICAgaWYgKHNob3VsZEdyYW5kZmF0aGVyID09IFNob3VsZEdy
YW5kZmF0aGVyU3RhdGlzdGljczo6WWVzKQogICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HKFJl
c291cmNlTG9hZFN0YXRpc3RpY3MsICJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNj
aGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQgQmVmb3JlIGJlaW5nIGNsZWFyZWQsIG1f
bWVtb3J5U3RvcmUgaXMgbnVsbCB3aGVuIHRyeWluZyB0byBncmFuZGZhdGhlciBkYXRhLiIpOwog
ICAgICAgICB9CiAgICAgfSk7CiB9CiAKLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlOjpzY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFdhbGxUaW1lIG1vZGlmaWVk
U2luY2UsIFNob3VsZEdyYW5kZmF0aGVyIHNob3VsZEdyYW5kZmF0aGVyLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYgY2FsbGJhY2spCit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZTo6c2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChXYWxsVGltZSBtb2RpZmll
ZFNpbmNlLCBTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3Mgc2hvdWxkR3JhbmRmYXRoZXIsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjYWxsYmFjaykKIHsKICAgICBBU1NFUlQoUnVuTG9v
cDo6aXNNYWluKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmggYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlLmgKaW5kZXggMjUxYjM5MjViYWI1YWM0MDJhOGNlNGQ3Zjk0MmUxMDI2YjQ2Zjc2Yy4uYjYw
YWFhYzg5MGVmMzAzN2UyZmFjN2YxNmI4N2ViZDgwNGRkODRlNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9X
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaApAQCAtMjgsNiArMjgsNyBAQAogI2lmIEVO
QUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgi
CisjaW5jbHVkZSAiU3RvcmFnZUFjY2Vzc1N0YXR1cy5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRh
VHlwZS5oIgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0
Zi9SdW5Mb29wLmg+CkBAIC01NSwxNyArNTYsNyBAQCBjbGFzcyBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzUGVyc2lzdGVudFN0b3JhZ2U7CiBjbGFzcyBXZWJGcmFtZVByb3h5OwogY2xhc3MgV2ViUHJv
Y2Vzc1Byb3h5OwogY2xhc3MgV2Vic2l0ZURhdGFTdG9yZTsKLQotZW51bSBjbGFzcyBTdG9yYWdl
QWNjZXNzU3RhdHVzIDogdW5zaWduZWQgewotICAgIENhbm5vdFJlcXVlc3RBY2Nlc3MsCi0gICAg
UmVxdWlyZXNVc2VyUHJvbXB0LAotICAgIEhhc0FjY2VzcwotfTsKLQotZW51bSBjbGFzcyBTaG91
bGRHcmFuZGZhdGhlciB7Ci0gICAgTm8sCi0gICAgWWVzLAotfTsKK2VudW0gY2xhc3MgU2hvdWxk
R3JhbmRmYXRoZXJTdGF0aXN0aWNzIDogYm9vbDsKIAogY2xhc3MgV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlIGZpbmFsIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSwgV1RGOjpEZXN0cnVjdGlvblRocmVhZDo6TWFpbj4sIHB1
YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6CkBAIC0xMTYsNyArMTA3LDcgQEAg
cHVibGljOgogICAgIHZvaWQgc2V0UHJldmFsZW50UmVzb3VyY2UoY29uc3QgU3RyaW5nJiByZXNv
dXJjZURvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldFZl
cnlQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOwogICAgIHZvaWQgc2V0VmVyeVByZXZhbGVudFJlc291cmNlKGNvbnN0IFN0cmluZyYgcmVz
b3VyY2VEb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBkdW1w
UmVzb3VyY2VMb2FkU3RhdGlzdGljcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmlu
ZyYpPiYmKTsKKyAgICB2b2lkIGR1bXBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoU3RyaW5nKT4mJik7CiAgICAgdm9pZCBpc1ByZXZhbGVudFJlc291cmNlKGNv
bnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIHZvaWQgaXNQ
cmV2YWxlbnRSZXNvdXJjZShjb25zdCBTdHJpbmcmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmKTsKICAgICB2b2lkIGlzVmVyeVByZXZhbGVudFJlc291cmNlKGNvbnN0IFVSTCYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwpAQCAtMTU1LDggKzE0Niw4IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNjaGVkdWxlU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzUHJvY2Vzc2luZyhD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc3VibWl0VGVsZW1ldHJ5KENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCB1cGRhdGVQcmV2YWxlbnREb21h
aW5zVG9CbG9ja0Nvb2tpZXNGb3IoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb0Jsb2Nr
KTsKLSAgICB2b2lkIHNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoU2hvdWxkR3Jh
bmRmYXRoZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBzY2hlZHVs
ZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFdhbGxUaW1lIG1vZGlmaWVkU2luY2UsIFNob3Vs
ZEdyYW5kZmF0aGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgc2No
ZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChTaG91bGRHcmFuZGZhdGhlclN0YXRpc3Rp
Y3MsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBzY2hlZHVsZUNsZWFy
SW5NZW1vcnlBbmRQZXJzaXN0ZW50KFdhbGxUaW1lIG1vZGlmaWVkU2luY2UsIFNob3VsZEdyYW5k
ZmF0aGVyU3RhdGlzdGljcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKIAogICAgIHZv
aWQgc2V0VGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbihTZWNvbmRzLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0TWluaW11bVRpbWVCZXR3ZWVuRGF0YVJlY29yZHNS
ZW1vdmFsKFNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IDYwNzIwMTEy
OWJmZjA3MjZkNWU0NWE1M2JjNmZjMTMxYWZiZmNkNDIuLmQ5MmYyNTMyNWNmNjBlZDk3NjJmMzNm
NmViMDY0Y2YwMjhjYTUzOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuY3BwCkBAIC00OSw3ICs0OSw5IEBACiAjaW5jbHVkZSAiTmV0d29ya1Nl
c3Npb25DcmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJQcmVjb25uZWN0VGFzay5oIgog
I2luY2x1ZGUgIlJlbW90ZU5ldHdvcmtpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAiU2hvdWxkR3Jh
bmRmYXRoZXJTdGF0aXN0aWNzLmgiCiAjaW5jbHVkZSAiU3RhdGlzdGljc0RhdGEuaCIKKyNpbmNs
dWRlICJTdG9yYWdlQWNjZXNzU3RhdHVzLmgiCiAjaW5jbHVkZSAiV2ViQ29va2llTWFuYWdlci5o
IgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vz
c1Bvb2xNZXNzYWdlcy5oIgpAQCAtNTk1LDIzICs1OTcsMjAgQEAgdm9pZCBOZXR3b3JrUHJvY2Vz
czo6d3JpdGVCbG9iVG9GaWxlUGF0aChjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwYXRo
LCBTYW4KIH0KIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi12b2lkIE5l
dHdvcmtQcm9jZXNzOjpkdW1wUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIHVpbnQ2NF90IGNvbnRleHRJZCkKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmR1bXBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChTdHJpbmcpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmIChh
dXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsK
LSAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lv
bi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKSB7Ci0gICAgICAgICAgICByZXNvdXJjZUxvYWRT
dGF0aXN0aWNzLT5kdW1wUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhbdGhpcywgY29udGV4dElkXShj
b25zdCBTdHJpbmcmIGR1bXBlZFN0YXRpc3RpY3MpIHsKLSAgICAgICAgICAgICAgICBwYXJlbnRQ
cm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpE
aWREdW1wUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhkdW1wZWRTdGF0aXN0aWNzLCBjb250ZXh0SWQp
LCAwKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9CisgICAgICAgIGlmIChhdXRvKiByZXNv
dXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MoKSkKKyAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPmR1bXBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICB9IGVsc2UKICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OnVw
ZGF0ZVByZXZhbGVudERvbWFpbnNUb0Jsb2NrQ29va2llc0ZvcihQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9CbG9jaywgdWludDY0X3QgY29u
dGV4dElkKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6dXBkYXRlUHJldmFsZW50RG9tYWluc1RvQmxv
Y2tDb29raWVzRm9yKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGRvbWFpbnNUb0Jsb2NrLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7CiAgICAgaWYgKGF1dG8qIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IHN0b3Jh
Z2VTZXNzaW9uKHNlc3Npb25JRCkpCiAgICAgICAgIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+c2V0
UHJldmFsZW50RG9tYWluc1RvQmxvY2tDb29raWVzRm9yKGRvbWFpbnNUb0Jsb2NrKTsKLSAgICBw
YXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1By
b3h5OjpEaWRVcGRhdGVCbG9ja0Nvb2tpZXMoY29udGV4dElkKSwgMCk7CisgICAgY29tcGxldGlv
bkhhbmRsZXIoKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6aXNHcmFuZGZhdGhlcmVkKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiB0YXJnZXRQcmltYXJ5RG9tYWlu
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAt
NjQxLDExICs2NDAsMTEgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6aXNWZXJ5UHJldmFsZW50UmVz
b3VyY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHIKICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldEFnZUNhcEZvckNs
aWVudFNpZGVDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uYWw8U2Vjb25k
cz4gc2Vjb25kcywgdWludDY0X3QgY29udGV4dElkKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0
QWdlQ2FwRm9yQ2xpZW50U2lkZUNvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRp
b25hbDxTZWNvbmRzPiBzZWNvbmRzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKGF1dG8qIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IHN0
b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCiAgICAgICAgIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+
c2V0QWdlQ2FwRm9yQ2xpZW50U2lkZUNvb2tpZXMoc2Vjb25kcyk7Ci0gICAgcGFyZW50UHJvY2Vz
c0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6RGlkU2V0
QWdlQ2FwRm9yQ2xpZW50U2lkZUNvb2tpZXMoY29udGV4dElkKSwgMCk7CisgICAgY29tcGxldGlv
bkhhbmRsZXIoKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0R3JhbmRmYXRoZXJlZChQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIGJv
b2wgaXNHcmFuZGZhdGhlcmVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCkBAIC03MTEsMTUgKzcxMCwxNCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzY2hl
ZHVsZUNvb2tpZUJsb2NraW5nVXBkYXRlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcAog
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6
c2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIE9wdGlvbmFsPFdhbGxUaW1lPiBtb2RpZmllZFNpbmNlLCBib29sIHNob3VsZEdyYW5kZmF0
aGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lk
IE5ldHdvcmtQcm9jZXNzOjpzY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uYWw8V2FsbFRpbWU+IG1vZGlmaWVkU2luY2UsIFNo
b3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljcyBzaG91bGRHcmFuZGZhdGhlciwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmIChhdXRvKiBuZXR3
b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKICAgICAgICAg
aWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lvbi0+cmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcygpKSB7Ci0gICAgICAgICAgICBhdXRvIGdyYW5kZmF0aGVyID0gc2hv
dWxkR3JhbmRmYXRoZXIgPyBTaG91bGRHcmFuZGZhdGhlcjo6WWVzIDogU2hvdWxkR3JhbmRmYXRo
ZXI6Ok5vOwogICAgICAgICAgICAgaWYgKG1vZGlmaWVkU2luY2UpCi0gICAgICAgICAgICAgICAg
cmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+c2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVu
dChtb2RpZmllZFNpbmNlLnZhbHVlKCksIGdyYW5kZmF0aGVyLCBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7CisgICAgICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+c2NoZWR1
bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChtb2RpZmllZFNpbmNlLnZhbHVlKCksIHNob3Vs
ZEdyYW5kZmF0aGVyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgICAgICBl
bHNlCi0gICAgICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+c2NoZWR1bGVDbGVh
ckluTWVtb3J5QW5kUGVyc2lzdGVudChncmFuZGZhdGhlciwgV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpOworICAgICAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnNjaGVkdWxl
Q2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoc2hvdWxkR3JhbmRmYXRoZXIsIFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgfQogICAgIH0gZWxzZQogICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKQEAgLTg1MiwxOCArODUwLDIxIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6
OnNldExhc3RTZWVuKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiByZXNv
dXJjCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIE5ldHdvcmtQcm9j
ZXNzOjpoYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBj
b25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBjb25zdCBTdHJpbmcmIGZpcnN0UGFydHlEb21h
aW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgY29udGV4dElk
KQordm9pZCBOZXR3b3JrUHJvY2Vzczo6aGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwgY29uc3QgU3Ry
aW5nJiBmaXJzdFBhcnR5RG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Cisg
ICAgYm9vbCBoYXNTdG9yYWdlQWNjZXNzID0gZmFsc2U7CiAgICAgaWYgKGF1dG8qIG5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiA9IHN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCi0gICAgICAgIHBhcmVu
dFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6
OlN0b3JhZ2VBY2Nlc3NPcGVyYXRpb25SZXN1bHQobmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5oYXNT
dG9yYWdlQWNjZXNzKHJlc291cmNlRG9tYWluLCBmaXJzdFBhcnR5RG9tYWluLCBmcmFtZUlELCBw
YWdlSUQpLCBjb250ZXh0SWQpLCAwKTsKKyAgICAgICAgaGFzU3RvcmFnZUFjY2VzcyA9IG5ldHdv
cmtTdG9yYWdlU2Vzc2lvbi0+aGFzU3RvcmFnZUFjY2VzcyhyZXNvdXJjZURvbWFpbiwgZmlyc3RQ
YXJ0eURvbWFpbiwgZnJhbWVJRCwgcGFnZUlEKTsKICAgICBlbHNlCiAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworCisgICAgY29tcGxldGlvbkhhbmRsZXIoaGFzU3RvcmFnZUFjY2Vzcyk7
CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OmdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgY29udGV4dElkKQordm9pZCBOZXR3b3Jr
UHJvY2Vzczo6Z2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+IGRvbWFpbnMpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmIChhdXRvKiBuZXR3b3JrU3RvcmFnZVNlc3Npb24g
PSBzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQotICAgICAgICBwYXJlbnRQcm9jZXNzQ29ubmVj
dGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpBbGxTdG9yYWdlQWNj
ZXNzRW50cmllc1Jlc3VsdChuZXR3b3JrU3RvcmFnZVNlc3Npb24tPmdldEFsbFN0b3JhZ2VBY2Nl
c3NFbnRyaWVzKCksIGNvbnRleHRJZCksIDApOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihu
ZXR3b3JrU3RvcmFnZVNlc3Npb24tPmdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKCkpOwogICAg
IGVsc2UKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CkBAIC04NzcsMTkgKzg3OCwx
NiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpoYXNTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiByZQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBjb25zdCBT
dHJpbmcmIGZpcnN0UGFydHlEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1aW50
NjRfdCBwYWdlSUQsIGJvb2wgcHJvbXB0RW5hYmxlZCwgdWludDY0X3QgY29udGV4dElkKQordm9p
ZCBOZXR3b3JrUHJvY2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBjb25zdCBTdHJpbmcmIGZpcnN0
UGFydHlEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQs
IGJvb2wgcHJvbXB0RW5hYmxlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNz
U3RhdHVzKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoYXV0byogbmV0d29ya1Nl
c3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7Ci0gICAgICAgIGlmIChh
dXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9h
ZFN0YXRpc3RpY3MoKSkgewotICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+cmVx
dWVzdFN0b3JhZ2VBY2Nlc3MocmVzb3VyY2VEb21haW4sIGZpcnN0UGFydHlEb21haW4sIGZyYW1l
SUQsIHBhZ2VJRCwgcHJvbXB0RW5hYmxlZCwgW3RoaXMsIGNvbnRleHRJZF0oU3RvcmFnZUFjY2Vz
c1N0YXR1cyBwcm9tcHRBY2NlcHRlZCkgewotICAgICAgICAgICAgICAgIHBhcmVudFByb2Nlc3ND
b25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OlN0b3JhZ2VB
Y2Nlc3NSZXF1ZXN0UmVzdWx0KHN0YXRpY19jYXN0PHVuc2lnbmVkPihwcm9tcHRBY2NlcHRlZCks
IGNvbnRleHRJZCksIDApOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYg
KGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VM
b2FkU3RhdGlzdGljcygpKQorICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+cmVx
dWVzdFN0b3JhZ2VBY2Nlc3MocmVzb3VyY2VEb21haW4sIGZpcnN0UGFydHlEb21haW4sIGZyYW1l
SUQsIHBhZ2VJRCwgcHJvbXB0RW5hYmxlZCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwog
ICAgIH0gZWxzZQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotdm9pZCBOZXR3
b3JrUHJvY2Vzczo6Z3JhbnRTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
Y29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwgY29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9t
YWluLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBib29sIHVz
ZXJXYXNQcm9tcHRlZCwgdWludDY0X3QgY29udGV4dElkKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6
Z3JhbnRTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5n
JiByZXNvdXJjZURvbWFpbiwgY29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9tYWluLCBPcHRpb25h
bDx1aW50NjRfdD4gZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBib29sIHVzZXJXYXNQcm9tcHRl
ZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsK
ICAgICBib29sIGlzU3RvcmFnZUdyYW50ZWQgPSBmYWxzZTsKICAgICBpZiAoYXV0byogbmV0d29y
a1N0b3JhZ2VTZXNzaW9uID0gc3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkgewpAQCAtODk5LDcg
Kzg5Nyw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmdyYW50U3RvcmFnZUFjY2VzcyhQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYKICAgICB9IGVsc2UKICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAKLSAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpTdG9yYWdlQWNjZXNzT3BlcmF0aW9uUmVz
dWx0KGlzU3RvcmFnZUdyYW50ZWQsIGNvbnRleHRJZCksIDApOworICAgIGNvbXBsZXRpb25IYW5k
bGVyKGlzU3RvcmFnZUdyYW50ZWQpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpsb2dGcmFt
ZU5hdmlnYXRpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHRhcmdl
dFByaW1hcnlEb21haW4sIGNvbnN0IFN0cmluZyYgbWFpbkZyYW1lUHJpbWFyeURvbWFpbiwgY29u
c3QgU3RyaW5nJiBzb3VyY2VQcmltYXJ5RG9tYWluLCBjb25zdCBTdHJpbmcmIHRhcmdldEhvc3Qs
IGNvbnN0IFN0cmluZyYgbWFpbkZyYW1lSG9zdCwgYm9vbCBpc1JlZGlyZWN0LCBib29sIGlzTWFp
bkZyYW1lKQpAQCAtOTM5LDEzICs5MzcsMTMgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y2xlYXJV
c2VySW50ZXJhY3Rpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcKICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OnJl
bW92ZUFsbFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBj
b250ZXh0SWQpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZW1vdmVBbGxTdG9yYWdlQWNjZXNzKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewogICAgIGlmIChhdXRvKiBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBz
dG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQogICAgICAgICBuZXR3b3JrU3RvcmFnZVNlc3Npb24t
PnJlbW92ZUFsbFN0b3JhZ2VBY2Nlc3MoKTsKICAgICBlbHNlCiAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6
Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkRpZFJlbW92ZUFsbFN0b3JhZ2VBY2Nlc3MoY29udGV4dElk
KSwgMCk7CisgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vz
czo6cmVtb3ZlUHJldmFsZW50RG9tYWlucyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zKQpAQCAtOTU0LDEzICs5NTIsMTMgQEAgdm9pZCBOZXR3
b3JrUHJvY2Vzczo6cmVtb3ZlUHJldmFsZW50RG9tYWlucyhQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIGNvbnN0IFZlY3QKICAgICAgICAgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5yZW1vdmVQcmV2
YWxlbnREb21haW5zKGRvbWFpbnMpOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRDYWNo
ZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IFNlY29uZHMgc2Vjb25kcywgdWludDY0X3QgY29udGV4dElkKQordm9pZCBOZXR3b3JrUHJvY2Vz
czo6c2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBTZWNvbmRzIHNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoYXV0byogbmV0d29ya1N0b3JhZ2VTZXNzaW9u
ID0gc3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKICAgICAgICAgbmV0d29ya1N0b3JhZ2VTZXNz
aW9uLT5zZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhTZWNvbmRzIHsgc2Vj
b25kcyB9KTsKICAgICBlbHNlCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHBh
cmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJv
eHk6OkRpZFNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKGNvbnRleHRJZCks
IDApOworICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6
OnNldEdyYW5kZmF0aGVyaW5nVGltZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFNlY29uZHMg
c2Vjb25kcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpA
QCAtMTAzMiwxMyArMTAzMCwxMyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGVidWdNb2RlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRAogICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVzZXRDYWNo
ZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IHVpbnQ2NF90IGNvbnRleHRJZCkKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlc2V0Q2FjaGVNYXhB
Z2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKGF1
dG8qIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IHN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCiAg
ICAgICAgIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+cmVzZXRDYWNoZU1heEFnZUNhcEZvclByZXZh
bGVudFJlc291cmNlcygpOwogICAgIGVsc2UKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci0gICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1By
b2Nlc3NQcm94eTo6RGlkVXBkYXRlUnVudGltZVNldHRpbmdzKGNvbnRleHRJZCksIDApOworICAg
IGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAjZW5kaWYgLy8gRU5BQkxFKFJFU09VUkNFX0xPQURf
U1RBVElTVElDUykKIApAQCAtMTIxMSw3ICsxMjA5LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6
ZGVsZXRlV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vi
c2kKIAogICAgICAgICAgICAgICAgIC8vIElmIHdlIGFyZSBkZWxldGluZyBhbGwgb2YgdGhlIGRh
dGEgdHlwZXMgdGhhdCB0aGUgcmVzb3VyY2UgbG9hZCBzdGF0aXN0aWNzIHN0b3JlIG1vbml0b3Jz
CiAgICAgICAgICAgICAgICAgLy8gd2UgZG8gbm90IG5lZWQgdG8gcmUtZ3JhbmRmYXRoZXIgb2xk
IGRhdGEuCi0gICAgICAgICAgICAgICAgYXV0byBzaG91bGRHcmFuZGZhdGhlciA9ICgobW9uaXRv
cmVkVHlwZXNSYXcgJiBkZWxldGVkVHlwZXNSYXcpID09IG1vbml0b3JlZFR5cGVzUmF3KSA/IFNo
b3VsZEdyYW5kZmF0aGVyOjpObyA6IFNob3VsZEdyYW5kZmF0aGVyOjpZZXM7CisgICAgICAgICAg
ICAgICAgYXV0byBzaG91bGRHcmFuZGZhdGhlciA9ICgobW9uaXRvcmVkVHlwZXNSYXcgJiBkZWxl
dGVkVHlwZXNSYXcpID09IG1vbml0b3JlZFR5cGVzUmF3KSA/IFNob3VsZEdyYW5kZmF0aGVyU3Rh
dGlzdGljczo6Tm8gOiBTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3M6OlllczsKIAogICAgICAg
ICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFu
ZFBlcnNpc3RlbnQobW9kaWZpZWRTaW5jZSwgc2hvdWxkR3JhbmRmYXRoZXIsIFtjbGVhclRhc2tz
SGFuZGxlciA9IGNsZWFyVGFza3NIYW5kbGVyLmNvcHlSZWYoKV0geyB9KTsKICAgICAgICAgICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAppbmRl
eCBhZmJlYmJkZTE3OWU5YzMyZTA4ZjliYmQwMDRhN2RlNjkxZjlhNTg1Li42ZWZhZDI4ZDExMWEx
ZmEyMWQ0ZjA2MTkwYWY4YTMyYWNmMGY4YjU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMi0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMi0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtODEsNiArODEsOCBAQCBjbGFzcyBOZXR3b3Jr
UHJvY2Vzc1N1cHBsZW1lbnQ7CiBjbGFzcyBOZXR3b3JrUHJveGltaXR5TWFuYWdlcjsKIGNsYXNz
IFdlYlNXU2VydmVyQ29ubmVjdGlvbjsKIGNsYXNzIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbjsKK2VudW0gY2xhc3MgU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzIDogYm9vbDsKK2Vu
dW0gY2xhc3MgU3RvcmFnZUFjY2Vzc1N0YXR1cyA6IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIFdlYnNp
dGVEYXRhRmV0Y2hPcHRpb247CiBlbnVtIGNsYXNzIFdlYnNpdGVEYXRhVHlwZTsKIHN0cnVjdCBO
ZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczsKQEAgLTE3NiwxMiArMTc4LDEyIEBAIHB1
YmxpYzoKICAgICB2b2lkIGNsZWFyUHJldmFsZW50UmVzb3VyY2UoUEFMOjpTZXNzaW9uSUQsIGNv
bnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7
CiAgICAgdm9pZCBjbGVhclVzZXJJbnRlcmFjdGlvbihQQUw6OlNlc3Npb25JRCwgY29uc3QgU3Ry
aW5nJiByZXNvdXJjZURvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2
b2lkIGRlbGV0ZVdlYnNpdGVEYXRhRm9yVG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbnNJbkFs
bFBlcnNpc3RlbnREYXRhU3RvcmVzKFBBTDo6U2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURh
dGFUeXBlPiwgVmVjdG9yPFN0cmluZz4mJiB0b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWlucywg
Ym9vbCBzaG91bGROb3RpZnlQYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEhhc2hT
ZXQ8U3RyaW5nPiYpPiYmKTsKLSAgICB2b2lkIGR1bXBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKFBB
TDo6U2Vzc2lvbklELCB1aW50NjRfdCBjb250ZXh0SWQpOwotICAgIHZvaWQgdXBkYXRlUHJldmFs
ZW50RG9tYWluc1RvQmxvY2tDb29raWVzRm9yKFBBTDo6U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgZG9tYWluc1RvQmxvY2ssIHVpbnQ2NF90IGNvbnRleHRJZCk7CisgICAgdm9pZCBk
dW1wUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChTdHJpbmcpPiYmKTsKKyAgICB2b2lkIHVwZGF0ZVByZXZhbGVudERvbWFpbnNUb0Js
b2NrQ29va2llc0ZvcihQQUw6OlNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFp
bnNUb0Jsb2NrLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgaXNHcmFu
ZGZhdGhlcmVkKFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHRhcmdldFByaW1hcnlEb21h
aW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIHZvaWQgaXNQcmV2YWxl
bnRSZXNvdXJjZShQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBpc1ZlcnlQcmV2YWxl
bnRSZXNvdXJjZShQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7Ci0gICAgdm9pZCBzZXRBZ2VDYXBGb3JD
bGllbnRTaWRlQ29va2llcyhQQUw6OlNlc3Npb25JRCwgT3B0aW9uYWw8U2Vjb25kcz4sIHVpbnQ2
NF90IGNvbnRleHRJZCk7CisgICAgdm9pZCBzZXRBZ2VDYXBGb3JDbGllbnRTaWRlQ29va2llcyhQ
QUw6OlNlc3Npb25JRCwgT3B0aW9uYWw8U2Vjb25kcz4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7CiAgICAgdm9pZCBpc1JlZ2lzdGVyZWRBc1JlZGlyZWN0aW5nVG8oUEFMOjpTZXNzaW9u
SUQsIGNvbnN0IFN0cmluZyYgcmVkaXJlY3RlZEZyb20sIGNvbnN0IFN0cmluZyYgcmVkaXJlY3Rl
ZFRvLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAgICB2b2lkIGlzUmVnaXN0
ZXJlZEFzU3ViRnJhbWVVbmRlcihQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBzdWJmcmFt
ZSwgY29uc3QgU3RyaW5nJiB0b3BGcmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
Jik7CiAgICAgdm9pZCBpc1JlZ2lzdGVyZWRBc1N1YnJlc291cmNlVW5kZXIoUEFMOjpTZXNzaW9u
SUQsIGNvbnN0IFN0cmluZyYgc3VicmVzb3VyY2UsIGNvbnN0IFN0cmluZyYgdG9wRnJhbWUsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwpAQCAtMTkyLDIyICsxOTQsMjIgQEAgcHVi
bGljOgogICAgIHZvaWQgc2V0VmVyeVByZXZhbGVudFJlc291cmNlKFBBTDo6U2Vzc2lvbklELCBj
b25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OwogICAgIHZvaWQgc2V0UHJ1bmVFbnRyaWVzRG93blRvKFBBTDo6U2Vzc2lvbklELCB1aW50NjRf
dCBwcnVuZVRhcmdldENvdW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZv
aWQgaGFkVXNlckludGVyYWN0aW9uKFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHJlc291
cmNlRG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKLSAgICB2b2lkIGhh
c1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZShQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiByZXNv
dXJjZURvbWFpbiwgY29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9tYWluLCB1aW50NjRfdCBmcmFt
ZUlELCB1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGNvbnRleHRJZCk7Ci0gICAgdm9pZCBnZXRB
bGxTdG9yYWdlQWNjZXNzRW50cmllcyhQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgY29udGV4dElk
KTsKLSAgICB2b2lkIGdyYW50U3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgU3Ry
aW5nJiByZXNvdXJjZURvbWFpbiwgY29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9tYWluLCBPcHRp
b25hbDx1aW50NjRfdD4gZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBib29sIHVzZXJXYXNQcm9t
cHRlZCwgdWludDY0X3QgY29udGV4dElkKTsKKyAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3NGb3JG
cmFtZShQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwgY29uc3Qg
U3RyaW5nJiBmaXJzdFBhcnR5RG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdl
SUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQgZ2V0QWxsU3Rv
cmFnZUFjY2Vzc0VudHJpZXMoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
VmVjdG9yPFN0cmluZz4gZG9tYWlucyk+JiYpOworICAgIHZvaWQgZ3JhbnRTdG9yYWdlQWNjZXNz
KFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBjb25zdCBTdHJp
bmcmIGZpcnN0UGFydHlEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1aW50NjRf
dCBwYWdlSUQsIGJvb2wgdXNlcldhc1Byb21wdGVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmKTsKICAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQsIGNvbnN0
IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwg
T3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBsb2dGcmFtZU5hdmlnYXRpb24oUEFMOjpT
ZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgdGFyZ2V0UHJpbWFyeURvbWFpbiwgY29uc3QgU3RyaW5n
JiBtYWluRnJhbWVQcmltYXJ5RG9tYWluLCBjb25zdCBTdHJpbmcmIHNvdXJjZVByaW1hcnlEb21h
aW4sIGNvbnN0IFN0cmluZyYgdGFyZ2V0SG9zdCwgY29uc3QgU3RyaW5nJiBtYWluRnJhbWVIb3N0
LCBib29sIGlzUmVkaXJlY3QsIGJvb2wgaXNNYWluRnJhbWUpOwogICAgIHZvaWQgbG9nVXNlcklu
dGVyYWN0aW9uKFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHRhcmdldFByaW1hcnlEb21h
aW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCByZW1vdmVBbGxTdG9y
YWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCBjb250ZXh0SWQpOworICAgIHZvaWQg
cmVtb3ZlQWxsU3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKTsKICAgICB2b2lkIHJlbW92ZVByZXZhbGVudERvbWFpbnMoUEFMOjpTZXNzaW9u
SUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zKTsKLSAgICB2b2lkIHJlcXVlc3RTdG9y
YWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBj
b25zdCBTdHJpbmcmIGZpcnN0UGFydHlEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlE
LCB1aW50NjRfdCBwYWdlSUQsIGJvb2wgcHJvbXB0RW5hYmxlZCwgdWludDY0X3QgY29udGV4dElk
KTsKLSAgICB2b2lkIHJlc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoUEFM
OjpTZXNzaW9uSUQsIHVpbnQ2NF90IGNvbnRleHRJZCk7CisgICAgdm9pZCByZXF1ZXN0U3RvcmFn
ZUFjY2VzcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwgY29u
c3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9tYWluLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwg
dWludDY0X3QgcGFnZUlELCBib29sIHByb21wdEVuYWJsZWQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoU3RvcmFnZUFjY2Vzc1N0YXR1cyk+JiYpOworICAgIHZvaWQgcmVzZXRDYWNoZU1heEFnZUNh
cEZvclByZXZhbGVudFJlc291cmNlcyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKTsKICAgICB2b2lkIHJlc2V0UGFyYW1ldGVyc1RvRGVmYXVsdFZhbHVlcyhQQUw6
OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lkIHNjaGVk
dWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoUEFMOjpTZXNzaW9uSUQsIE9wdGlvbmFsPFdh
bGxUaW1lPiBtb2RpZmllZFNpbmNlLCBib29sIHNob3VsZEdyYW5kZmF0aGVyLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgc2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVy
c2lzdGVudChQQUw6OlNlc3Npb25JRCwgT3B0aW9uYWw8V2FsbFRpbWU+IG1vZGlmaWVkU2luY2Us
IFNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKICAgICB2b2lkIHNjaGVkdWxlQ29va2llQmxvY2tpbmdVcGRhdGUoUEFMOjpTZXNzaW9uSUQs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzY2hlZHVsZVN0YXRpc3Rp
Y3NBbmREYXRhUmVjb3Jkc1Byb2Nlc3NpbmcoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzdWJtaXRUZWxlbWV0cnkoUEFMOjpTZXNzaW9uSUQs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBzZXRDYWNoZU1heEFnZUNh
cEZvclByZXZhbGVudFJlc291cmNlcyhQQUw6OlNlc3Npb25JRCwgU2Vjb25kcywgdWludDY0X3Qg
Y29udGV4dElkKTsKKyAgICB2b2lkIHNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3Vy
Y2VzKFBBTDo6U2Vzc2lvbklELCBTZWNvbmRzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OwogICAgIHZvaWQgc2V0R3JhbmRmYXRoZXJpbmdUaW1lKFBBTDo6U2Vzc2lvbklELCBTZWNvbmRz
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0TGFzdFNlZW4oUEFM
OjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIFNlY29uZHMsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRNaW5pbXVtVGltZUJldHdlZW5E
YXRhUmVjb3Jkc1JlbW92YWwoUEFMOjpTZXNzaW9uSUQsIFNlY29uZHMsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCA2MjU2NTgxMmFhZTY1MGEyYTBlNTU0
NGQ3YTRkY2E2YzA0ZGI5NjQzLi41ZDJhYTZkMmNjMDFmZmZkYWM3YWFhODkzNWQ2MTY0MTE3ZDRj
MDYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTEsNCArMSw0IEBACi0jIENvcHlyaWdodCAoQykgMjAx
Mi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAy
MDEyLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC04NywzNSArODcsMzUgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nl
c3MgTGVnYWN5UmVjZWl2ZXIgewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1Mp
CiAgICAgQ2xlYXJQcmV2YWxlbnRSZXNvdXJjZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0
cmluZyByZXNvdXJjZURvbWFpbikgLT4gKCkgQXN5bmMKICAgICBDbGVhclVzZXJJbnRlcmFjdGlv
bihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0cmluZyByZXNvdXJjZURvbWFpbikgLT4gKCkg
QXN5bmMKLSAgICBEdW1wUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIHVpbnQ2NF90IGNvbnRleHRJZCkKKyAgICBEdW1wUmVzb3VyY2VMb2FkU3RhdGlzdGlj
cyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+IChTdHJpbmcgZHVtcGVkU3RhdGlzdGljcykg
QXN5bmMKICAgICBTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChib29sIGVuYWJsZWQp
Ci0gICAgVXBkYXRlUHJldmFsZW50RG9tYWluc1RvQmxvY2tDb29raWVzRm9yKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgVmVjdG9yPFN0cmluZz4gZG9tYWluc1RvQmxvY2ssIHVpbnQ2NF90IGNv
bnRleHRJZCkKKyAgICBVcGRhdGVQcmV2YWxlbnREb21haW5zVG9CbG9ja0Nvb2tpZXNGb3IoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBWZWN0b3I8U3RyaW5nPiBkb21haW5zVG9CbG9jaykgLT4g
KCkgQXN5bmMKICAgICBJc0dyYW5kZmF0aGVyZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBT
dHJpbmcgdGFyZ2V0UHJpbWFyeURvbWFpbikgLT4gKGJvb2wgaXNHcmFuZGZhdGhlcmVkKSBBc3lu
YwogICAgIElzUHJldmFsZW50UmVzb3VyY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTdHJp
bmcgdGFyZ2V0UHJpbWFyeURvbWFpbikgLT4gKGJvb2wgaXNQcmV2YWxlbnQpIEFzeW5jCiAgICAg
SXNWZXJ5UHJldmFsZW50UmVzb3VyY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTdHJpbmcg
dGFyZ2V0UHJpbWFyeURvbWFpbikgLT4gKGJvb2wgaXNWZXJ5UHJldmFsZW50KSBBc3luYwotICAg
IFNldEFnZUNhcEZvckNsaWVudFNpZGVDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
T3B0aW9uYWw8U2Vjb25kcz4gc2Vjb25kcywgdWludDY0X3QgY29udGV4dElkKQorICAgIFNldEFn
ZUNhcEZvckNsaWVudFNpZGVDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9u
YWw8U2Vjb25kcz4gc2Vjb25kcykgLT4gKCkgQXN5bmMKICAgICBTZXRMYXN0U2VlbihQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIFN0cmluZyByZXNvdXJjZURvbWFpbiwgU2Vjb25kcyBzZWNvbmRz
KSAtPiAoKSBBc3luYwogICAgIFNldFByZXZhbGVudFJlc291cmNlKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgU3RyaW5nIHJlc291cmNlRG9tYWluKSAtPiAoKSBBc3luYwogICAgIFNldFByZXZh
bGVudFJlc291cmNlRm9yRGVidWdNb2RlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU3RyaW5n
IHJlc291cmNlRG9tYWluKSAtPiAoKSBBc3luYwogICAgIEhhZFVzZXJJbnRlcmFjdGlvbihQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0cmluZyByZXNvdXJjZURvbWFpbikgLT4gKGJvb2wgaGFk
VXNlckludGVyYWN0aW9uKSBBc3luYwotICAgIEhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZShQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0cmluZyByZXNvdXJjZURvbWFpbiwgU3RyaW5nIGZpcnN0
UGFydHlEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3Qg
Y29udGV4dElkKQotICAgIEhhc1N0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBTdHJpbmcgcmVzb3VyY2VEb21haW4sIFN0cmluZyBmaXJzdFBhcnR5RG9tYWluLCBPcHRpb25h
bDx1aW50NjRfdD4gZnJhbWVJRCwgdWludDY0X3QgcGFnZUlEKSAtPiAoYm9vbCBoYWRVc2VySW50
ZXJhY3Rpb24pIEFzeW5jCi0gICAgR2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBjb250ZXh0SWQpCi0gICAgR3JhbnRTdG9yYWdlQWNj
ZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU3RyaW5nIHJlc291cmNlRG9tYWluLCBTdHJp
bmcgZmlyc3RQYXJ0eURvbWFpbiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHVpbnQ2NF90
IHBhZ2VJRCwgYm9vbCB1c2VyV2FzUHJvbXB0ZWQsIHVpbnQ2NF90IGNvbnRleHRJZCkKKyAgICBI
YXNTdG9yYWdlQWNjZXNzRm9yRnJhbWUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTdHJpbmcg
cmVzb3VyY2VEb21haW4sIFN0cmluZyBmaXJzdFBhcnR5RG9tYWluLCB1aW50NjRfdCBmcmFtZUlE
LCB1aW50NjRfdCBwYWdlSUQpIC0+IChib29sIGhhc1N0b3JhZ2VBY2Nlc3MpIEFzeW5jCisgICAg
SGFzU3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0cmluZyByZXNvdXJj
ZURvbWFpbiwgU3RyaW5nIGZpcnN0UGFydHlEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFt
ZUlELCB1aW50NjRfdCBwYWdlSUQpIC0+IChib29sIGhhc1N0b3JhZ2VBY2Nlc3MpIEFzeW5jCisg
ICAgR2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAt
PiAoVmVjdG9yPFN0cmluZz4gZG9tYWlucykgQXN5bmMKKyAgICBHcmFudFN0b3JhZ2VBY2Nlc3Mo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTdHJpbmcgcmVzb3VyY2VEb21haW4sIFN0cmluZyBm
aXJzdFBhcnR5RG9tYWluLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgdWludDY0X3QgcGFn
ZUlELCBib29sIHVzZXJXYXNQcm9tcHRlZCkgLT4gKGJvb2wgYWNjZXNzR3JhbnRlZCkgQXN5bmMK
ICAgICBJc1JlZ2lzdGVyZWRBc1JlZGlyZWN0aW5nVG8oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBTdHJpbmcgcmVkaXJlY3RlZEZyb20sIFN0cmluZyByZWRpcmVjdGVkVG8pIC0+IChib29sIGlz
UmVkaXJlY3RpbmdUbykgQXN5bmMKICAgICBJc1JlZ2lzdGVyZWRBc1N1YkZyYW1lVW5kZXIoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTdHJpbmcgc3ViZnJhbWUsIFN0cmluZyB0b3BGcmFtZSkg
LT4gKGJvb2wgaXNTdWJmcmFtZVVuZGVyKSBBc3luYwogICAgIElzUmVnaXN0ZXJlZEFzU3VicmVz
b3VyY2VVbmRlcihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0cmluZyBzdWJyZXNvdXJjZSwg
U3RyaW5nIHRvcEZyYW1lKSAtPiAoYm9vbCBpc1N1YnJlc291cmNlVW5kZXIpIEFzeW5jCiAgICAg
TG9nRnJhbWVOYXZpZ2F0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU3RyaW5nIHRhcmdl
dFByaW1hcnlEb21haW4sIFN0cmluZyBtYWluRnJhbWVQcmltYXJ5RG9tYWluLCBTdHJpbmcgc291
cmNlUHJpbWFyeURvbWFpbiwgU3RyaW5nIHRhcmdldEhvc3QsIFN0cmluZyBtYWluRnJhbWVIb3N0
LCBib29sIGlzUmVkaXJlY3QsIGJvb2wgaXNNYWluRnJhbWUpCiAgICAgTG9nVXNlckludGVyYWN0
aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU3RyaW5nIHRhcmdldFByaW1hcnlEb21haW4p
IC0+ICgpIEFzeW5jCi0gICAgUmVtb3ZlQWxsU3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIHVpbnQ2NF90IGNvbnRleHRJZCkKKyAgICBSZW1vdmVBbGxTdG9yYWdlQWNjZXNz
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKCkgQXN5bmMKICAgICBSZW1vdmVQcmV2YWxl
bnREb21haW5zKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVmVjdG9yPFN0cmluZz4gZG9tYWlu
c1dpdGhJbnRlcmFjdGlvbikKLSAgICBSZXF1ZXN0U3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIFN0cmluZyByZXNvdXJjZURvbWFpbiwgU3RyaW5nIGZpcnN0UGFydHlEb21h
aW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIGJvb2wgcHJv
bXB0RW5hYmxlZCwgdWludDY0X3QgY29udGV4dElkKQorICAgIFJlcXVlc3RTdG9yYWdlQWNjZXNz
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU3RyaW5nIHJlc291cmNlRG9tYWluLCBTdHJpbmcg
Zmlyc3RQYXJ0eURvbWFpbiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHVpbnQ2NF90IHBh
Z2VJRCwgYm9vbCBwcm9tcHRFbmFibGVkKSAtPiAoZW51bTp1aW50OF90IFdlYktpdDo6U3RvcmFn
ZUFjY2Vzc1N0YXR1cyBzdG9yYWdlQWNjZXNzU3RhdHVzKSBBc3luYwogICAgIFJlc2V0UGFyYW1l
dGVyc1RvRGVmYXVsdFZhbHVlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+ICgpIEFzeW5j
Ci0gICAgU2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIE9wdGlvbmFsPFdhbGxUaW1lPiBtb2RpZmllZFNpbmNlLCBib29sIHNob3VsZEdy
YW5kZmF0aGVyKSAtPiAoKSBBc3luYworICAgIFNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNp
c3RlbnQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25hbDxXYWxsVGltZT4gbW9kaWZp
ZWRTaW5jZSwgZW51bTpib29sIFdlYktpdDo6U2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzIHNo
b3VsZEdyYW5kZmF0aGVyKSAtPiAoKSBBc3luYwogICAgIFNjaGVkdWxlQ29va2llQmxvY2tpbmdV
cGRhdGUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoKSBBc3luYwogICAgIFNjaGVkdWxl
U3RhdGlzdGljc0FuZERhdGFSZWNvcmRzUHJvY2Vzc2luZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQpIC0+ICgpIEFzeW5jCiAgICAgU3VibWl0VGVsZW1ldHJ5KFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCkgLT4gKCkgQXN5bmMKLSAgICBTZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291
cmNlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFNlY29uZHMgc2Vjb25kcywgdWludDY0X3Qg
Y29udGV4dElkKQorICAgIFNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU2Vjb25kcyBzZWNvbmRzKSAtPiAoKSBBc3luYwogICAg
IFNldEdyYW5kZmF0aGVyZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTdHJpbmcgcmVzb3Vy
Y2VEb21haW4sIGJvb2wgaXNHcmFuZGZhdGhlcmVkKSAtPiAoKSBBc3luYwogICAgIFNldEdyYW5k
ZmF0aGVyaW5nVGltZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFNlY29uZHMgc2Vjb25kcykg
LT4gKCkgQXN5bmMKICAgICBTZXRNYXhTdGF0aXN0aWNzRW50cmllcyhQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIHVpbnQ2NF90IG1heGltdW1FbnRyeUNvdW50KSAtPiAoKSBBc3luYwpAQCAtMTMz
LDcgKzEzMyw3IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsK
ICAgICBTZXRUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgU2Vjb25kcyBzZWNvbmRzKSAtPiAoKSBBc3luYwogICAgIFNldFRvcEZyYW1lVW5pcXVlUmVk
aXJlY3RUbyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0cmluZyB0b3BGcmFtZUhvc3ROYW1l
LCBTdHJpbmcgaG9zdE5hbWVSZWRpcmVjdGVkVG8pIC0+ICgpIEFzeW5jCiAgICAgU2V0VG9wRnJh
bWVVbmlxdWVSZWRpcmVjdEZyb20oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTdHJpbmcgdG9w
RnJhbWVIb3N0TmFtZSwgU3RyaW5nIGhvc3ROYW1lUmVkaXJlY3RlZEZyb20pIC0+ICgpIEFzeW5j
Ci0gICAgUmVzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IGNvbnRleHRJZCkKKyAgICBSZXNldENhY2hlTWF4QWdl
Q2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKCkg
QXN5bmMKICNlbmRpZgogCiAgICAgU2V0U2Vzc2lvbklzQ29udHJvbGxlZEJ5QXV0b21hdGlvbihQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGJvb2wgY29udHJvbGxlZCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcApp
bmRleCBiYTMzM2M5ZjVmZDM1ZmQ4MjBlYjg1NWUwZjUyNTM3NmJlMmY0YzMxLi43YTE0MTE1Mjhm
NWU4NTQzZjQ5NWFkOTAxZTQ3NGY4ZWM4ZDRmMWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjksNiArMjks
NyBAQAogI2luY2x1ZGUgIkFQSUFycmF5LmgiCiAjaW5jbHVkZSAiQVBJV2Vic2l0ZURhdGFTdG9y
ZS5oIgogI2luY2x1ZGUgIk1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaCIKKyNp
bmNsdWRlICJTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3MuaCIKICNpbmNsdWRlICJXS0FQSUNh
c3QuaCIKICNpbmNsdWRlICJXS0RpY3Rpb25hcnkuaCIKICNpbmNsdWRlICJXS051bWJlci5oIgpA
QCAtMzc4LDcgKzM3OSw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1By
dW5lRW50cmllc0Rvd25UbyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0CiB2b2lkIFdLV2Vic2l0
ZURhdGFTdG9yZVN0YXRpc3RpY3NDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudFN0b3JlKFdLV2Vi
c2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURh
dGFTdG9yZVN0YXRpc3RpY3NDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudFN0b3JlRnVuY3Rpb24g
Y2FsbGJhY2spCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBX
ZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2NoZWR1bGVD
bGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChTaG91bGRHcmFuZGZhdGhlcjo6WWVzLCBbY29udGV4
dCwgY2FsbGJhY2tdKCkgeworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNp
dGVEYXRhU3RvcmUoKS5zY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFNob3VsZEdy
YW5kZmF0aGVyU3RhdGlzdGljczo6WWVzLCBbY29udGV4dCwgY2FsbGJhY2tdKCkgewogICAgICAg
ICBjYWxsYmFjayhjb250ZXh0KTsKICAgICB9KTsKICNlbHNlCkBAIC0zODksNyArMzkwLDcgQEAg
dm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3Rl
bnRTdG9yZShXS1dlYnNpdGVEYXRhU3QKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGlj
c0NsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmVNb2RpZmllZFNpbmNlSG91cnMoV0tXZWJz
aXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgdW5zaWduZWQgaG91cnMsIHZvaWQqIGNvbnRl
eHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVu
dFN0b3JlTW9kaWZpZWRTaW5jZUhvdXJzRnVuY3Rpb24gY2FsbGJhY2spCiB7CiAjaWYgRU5BQkxF
KFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVS
ZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVu
dChXYWxsVGltZTo6bm93KCkgLSBTZWNvbmRzOjpmcm9tSG91cnMoaG91cnMpLCBTaG91bGRHcmFu
ZGZhdGhlcjo6WWVzLCBbY29udGV4dCwgY2FsbGJhY2tdKCkgeworICAgIFdlYktpdDo6dG9JbXBs
KGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5zY2hlZHVsZUNsZWFySW5NZW1vcnlB
bmRQZXJzaXN0ZW50KFdhbGxUaW1lOjpub3coKSAtIFNlY29uZHM6OmZyb21Ib3Vycyhob3Vycyks
IFNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljczo6WWVzLCBbY29udGV4dCwgY2FsbGJhY2tdKCkg
ewogICAgICAgICBjYWxsYmFjayhjb250ZXh0KTsKICAgICB9KTsKICNlbmRpZgpAQCAtNDA1LDkg
KzQwNiwxMSBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NDbGVhclRocm91Z2hX
ZWJzaXRlRGF0YVJlbW92YWwoV0tXZWJzaXRlRGF0YVN0bwogCiB2b2lkIFdLV2Vic2l0ZURhdGFT
dG9yZVNldFN0YXRpc3RpY3NDYWNoZU1heEFnZUNhcChXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0
YVN0b3JlUmVmLCBkb3VibGUgc2Vjb25kcywgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0
b3JlU2V0U3RhdGlzdGljc0NhY2hlTWF4QWdlQ2FwRnVuY3Rpb24gY2FsbGJhY2spCiB7CisjaWYg
RU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICBXZWJLaXQ6OnRvSW1wbChkYXRh
U3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxl
bnRSZXNvdXJjZXMoU2Vjb25kcyB7IHNlY29uZHMgfSwgW2NvbnRleHQsIGNhbGxiYWNrXSB7CiAg
ICAgICAgIGNhbGxiYWNrKGNvbnRleHQpOwogICAgIH0pOworI2VuZGlmCiB9CiAKIHZvaWQgV0tX
ZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50U3RhdGUoV0tXZWJzaXRl
RGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0
b3JlU3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50U3RhdGVGdW5jdGlvbiBjb21wbGV0aW9uSGFu
ZGxlcikKQEAgLTQyMSw3ICs0MjQsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3Rp
Y3NSZXNldFRvQ29uc2lzdGVudFN0YXRlKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYQogICAgIHN0
b3JlLmNsZWFyUmVzb3VyY2VMb2FkU3RhdGlzdGljc0luV2ViUHJvY2Vzc2VzKFtjYWxsYmFja0Fn
Z3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOwogICAgIHN0b3Jl
LnJlc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoW2NhbGxiYWNrQWdncmVn
YXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CiAgICAgc3RvcmUucmVz
ZXRQYXJhbWV0ZXJzVG9EZWZhdWx0VmFsdWVzKFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFj
a0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOwotICAgIHN0b3JlLnNjaGVkdWxlQ2xlYXJJbk1l
bW9yeUFuZFBlcnNpc3RlbnQoU2hvdWxkR3JhbmRmYXRoZXI6Ok5vLCBbY2FsbGJhY2tBZ2dyZWdh
dG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKKyAgICBzdG9yZS5zY2hl
ZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGlj
czo6Tm8sIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigp
XSB7IH0pOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZGF0YVN0b3JlUmVmKTsKICAgICBjb21w
bGV0aW9uSGFuZGxlcihjb250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IGNiMDYyZjVjODFjMzk2
ZWY3NWIxZGQ2MTBkNDQ5NDZhMDEwYTE0YjYuLmFjYWE4YjU2ODUwYWQ0ZGUzMDVjZDZlZGIyYzI2
YmQ0MjA5NGZiNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtMzcsNiArMzcsOCBAQAogI2luY2x1ZGUg
Ik5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiTmV0d29ya1By
b2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKKyNpbmNsdWRl
ICJTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3MuaCIKKyNpbmNsdWRlICJTdG9yYWdlQWNjZXNz
U3RhdHVzLmgiCiAjaW5jbHVkZSAiV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3QuaCIKICNpbmNs
dWRlICJXZWJQYWdlUHJveHkuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIKQEAg
LTIzNCwyNiArMjM2LDYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpjbGVhckNhbGxiYWNr
U3RhdGVzKCkKIAogICAgIHdoaWxlICghbV9wZW5kaW5nRGVsZXRlV2Vic2l0ZURhdGFGb3JPcmln
aW5zQ2FsbGJhY2tzLmlzRW1wdHkoKSkKICAgICAgICAgbV9wZW5kaW5nRGVsZXRlV2Vic2l0ZURh
dGFGb3JPcmlnaW5zQ2FsbGJhY2tzLnRha2UobV9wZW5kaW5nRGVsZXRlV2Vic2l0ZURhdGFGb3JP
cmlnaW5zQ2FsbGJhY2tzLmJlZ2luKCktPmtleSkoKTsKLQotI2lmIEVOQUJMRShSRVNPVVJDRV9M
T0FEX1NUQVRJU1RJQ1MpCi0gICAgd2hpbGUgKCFtX3NjaGVkdWxlU3RhdGlzdGljc1Byb2Nlc3Np
bmdDYWxsYmFja01hcC5pc0VtcHR5KCkpCi0gICAgICAgIG1fc2NoZWR1bGVTdGF0aXN0aWNzUHJv
Y2Vzc2luZ0NhbGxiYWNrTWFwLnRha2UobV9zY2hlZHVsZVN0YXRpc3RpY3NQcm9jZXNzaW5nQ2Fs
bGJhY2tNYXAuYmVnaW4oKS0+a2V5KSgpOwotCi0gICAgd2hpbGUgKCFtX3N0b3JhZ2VBY2Nlc3NS
ZXNwb25zZUNhbGxiYWNrTWFwLmlzRW1wdHkoKSkKLSAgICAgICAgbV9zdG9yYWdlQWNjZXNzUmVz
cG9uc2VDYWxsYmFja01hcC50YWtlKG1fc3RvcmFnZUFjY2Vzc1Jlc3BvbnNlQ2FsbGJhY2tNYXAu
YmVnaW4oKS0+a2V5KShmYWxzZSk7Ci0gICAgCi0gICAgd2hpbGUgKCFtX3N0b3JhZ2VBY2Nlc3NS
ZXF1ZXN0UmVzcG9uc2VDYWxsYmFja01hcC5pc0VtcHR5KCkpCi0gICAgICAgIG1fc3RvcmFnZUFj
Y2Vzc1JlcXVlc3RSZXNwb25zZUNhbGxiYWNrTWFwLnRha2UobV9zdG9yYWdlQWNjZXNzUmVxdWVz
dFJlc3BvbnNlQ2FsbGJhY2tNYXAuYmVnaW4oKS0+a2V5KShTdG9yYWdlQWNjZXNzU3RhdHVzOjpD
YW5ub3RSZXF1ZXN0QWNjZXNzKTsKLQotICAgIHdoaWxlICghbV9yZW1vdmVBbGxTdG9yYWdlQWNj
ZXNzQ2FsbGJhY2tNYXAuaXNFbXB0eSgpKQotICAgICAgICBtX3JlbW92ZUFsbFN0b3JhZ2VBY2Nl
c3NDYWxsYmFja01hcC50YWtlKG1fcmVtb3ZlQWxsU3RvcmFnZUFjY2Vzc0NhbGxiYWNrTWFwLmJl
Z2luKCktPmtleSkoKTsKLQotICAgIHdoaWxlICghbV9hbGxTdG9yYWdlQWNjZXNzRW50cmllc0Nh
bGxiYWNrTWFwLmlzRW1wdHkoKSkKLSAgICAgICAgbV9hbGxTdG9yYWdlQWNjZXNzRW50cmllc0Nh
bGxiYWNrTWFwLnRha2UobV9hbGxTdG9yYWdlQWNjZXNzRW50cmllc0NhbGxiYWNrTWFwLmJlZ2lu
KCktPmtleSkoeyB9KTsKLQotICAgIHdoaWxlICghbV9kdW1wU3RhdGlzdGljc0NhbGxiYWNrTWFw
LmlzRW1wdHkoKSkKLSAgICAgICAgbV9kdW1wU3RhdGlzdGljc0NhbGxiYWNrTWFwLnRha2UobV9k
dW1wU3RhdGlzdGljc0NhbGxiYWNrTWFwLmJlZ2luKCktPmtleSkoeyB9KTsKLSNlbmRpZgogfQog
CiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQpAQCAtMjkwLDE2ICsyNzIs
NiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYp
CiAgICAgbV9zeW5jQWxsQ29va2llc1Rva2VuID0gbnVsbHB0cjsKICAgICBtX3N5bmNBbGxDb29r
aWVzQ291bnRlciA9IDA7CiAKLSNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQot
ICAgIGZvciAoYXV0byYgY2FsbGJhY2sgOiBtX3JlbW92ZUFsbFN0b3JhZ2VBY2Nlc3NDYWxsYmFj
a01hcC52YWx1ZXMoKSkKLSAgICAgICAgY2FsbGJhY2soKTsKLSAgICBtX3JlbW92ZUFsbFN0b3Jh
Z2VBY2Nlc3NDYWxsYmFja01hcC5jbGVhcigpOwotCi0gICAgZm9yIChhdXRvJiBjYWxsYmFjayA6
IG1fc2NoZWR1bGVTdGF0aXN0aWNzUHJvY2Vzc2luZ0NhbGxiYWNrTWFwLnZhbHVlcygpKQotICAg
ICAgICBjYWxsYmFjaygpOwotICAgIG1fc2NoZWR1bGVTdGF0aXN0aWNzUHJvY2Vzc2luZ0NhbGxi
YWNrTWFwLmNsZWFyKCk7Ci0jZW5kaWYKLQogICAgIC8vIFRoaXMgd2lsbCBjYXVzZSB1cyB0byBi
ZSBkZWxldGVkLgogICAgIG5ldHdvcmtQcm9jZXNzQ3Jhc2hlZCgpOwogfQpAQCAtNDI1LDI0ICsz
OTcsMTQgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpsb2dHbG9iYWxEaWFnbm9zdGljTWVz
c2FnZVdpdGhWYWx1ZShjb25zdCBTdHJpbmcmIG1lc3MKIH0KIAogI2lmIEVOQUJMRShSRVNPVVJD
RV9MT0FEX1NUQVRJU1RJQ1MpCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmR1bXBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29y
a1Byb2Nlc3NQcm94eTo6ZHVtcFJlc291cmNlTG9hZFN0YXRpc3RpY3MoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCiB7CiAgICAgaWYgKCFjYW5TZW5kTWVzc2FnZSgpKSB7CiAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKHsgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgYXV0byBj
YWxsYmFja0lkID0gZ2VuZXJhdGVDYWxsYmFja0lEKCk7Ci0gICAgYXV0byBhZGRSZXN1bHQgPSBt
X2R1bXBTdGF0aXN0aWNzQ2FsbGJhY2tNYXAuYWRkKGNhbGxiYWNrSWQsIFtwcm90ZWN0ZWRQcm9j
ZXNzUG9vbCA9IG1ha2VSZWYobV9wcm9jZXNzUG9vbCksIHRva2VuID0gdGhyb3R0bGVyKCkuYmFj
a2dyb3VuZEFjdGl2aXR5VG9rZW4oKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0oY29uc3QgU3RyaW5nJiBkdW1wZWRTdGF0aXN0aWNzKSBtdXRhYmxlIHsK
LSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZHVtcGVkU3RhdGlzdGljcyk7Ci0gICAgfSk7Ci0g
ICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKLSAgICBz
ZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6RHVtcFJlc291cmNlTG9hZFN0YXRpc3RpY3Mo
c2Vzc2lvbklELCBjYWxsYmFja0lkKSwgMCk7Ci19Ci0KLXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94
eTo6ZGlkRHVtcFJlc291cmNlTG9hZFN0YXRpc3RpY3MoU3RyaW5nIGR1bXBlZFN0YXRpc3RpY3Ms
IHVpbnQ2NF90IGNhbGxiYWNrSWQpCi17Ci0gICAgbV9kdW1wU3RhdGlzdGljc0NhbGxiYWNrTWFw
LnRha2UoY2FsbGJhY2tJZCkoZHVtcGVkU3RhdGlzdGljcyk7CisgICAgc2VuZFdpdGhBc3luY1Jl
cGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6RHVtcFJlc291cmNlTG9hZFN0YXRpc3RpY3Mo
c2Vzc2lvbklEKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCiB2b2lkIE5ldHdv
cmtQcm9jZXNzUHJveHk6OnVwZGF0ZVByZXZhbGVudERvbWFpbnNUb0Jsb2NrQ29va2llc0ZvcihQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9C
bG9jaywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAt
NDUxLDE4ICs0MTMsOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnVwZGF0ZVByZXZhbGVu
dERvbWFpbnNUb0Jsb2NrQ29va2llc0ZvcihQQUw6OlNlc3Npb25JRAogICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcigpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIAotICAgIGF1dG8gY2Fs
bGJhY2tJZCA9IGdlbmVyYXRlQ2FsbGJhY2tJRCgpOwotICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9z
Y2hlZHVsZVN0YXRpc3RpY3NQcm9jZXNzaW5nQ2FsbGJhY2tNYXAuYWRkKGNhbGxiYWNrSWQsIFtw
cm90ZWN0ZWRQcm9jZXNzUG9vbCA9IG1ha2VSZWYobV9wcm9jZXNzUG9vbCksIHRva2VuID0gdGhy
b3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSwgY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoKTsKLSAgICB9KTsKLSAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVz
dWx0LmlzTmV3RW50cnkpOwotICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpVcGRh
dGVQcmV2YWxlbnREb21haW5zVG9CbG9ja0Nvb2tpZXNGb3Ioc2Vzc2lvbklELCBkb21haW5zVG9C
bG9jaywgY2FsbGJhY2tJZCksIDApOwotfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRp
ZFVwZGF0ZUJsb2NrQ29va2llcyh1aW50NjRfdCBjYWxsYmFja0lkKQotewotICAgIG1fc2NoZWR1
bGVTdGF0aXN0aWNzUHJvY2Vzc2luZ0NhbGxiYWNrTWFwLnRha2UoY2FsbGJhY2tJZCkoKTsKKyAg
ICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpVcGRhdGVQcmV2
YWxlbnREb21haW5zVG9CbG9ja0Nvb2tpZXNGb3Ioc2Vzc2lvbklELCBkb21haW5zVG9CbG9jayks
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzc1By
b3h5Ojppc1ByZXZhbGVudFJlc291cmNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3Qg
U3RyaW5nJiByZXNvdXJjZURvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKQEAgLTU0NSwxNSArNDk3LDE0IEBAIHZvaWQgTmV0d29ya1Byb2Nl
c3NQcm94eTo6c2NoZWR1bGVDb29raWVCbG9ja2luZ1VwZGF0ZShQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsCiAgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6
U2NoZWR1bGVDb29raWVCbG9ja2luZ1VwZGF0ZShzZXNzaW9uSUQpLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2NoZWR1bGVDbGVh
ckluTWVtb3J5QW5kUGVyc2lzdGVudChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvbmFs
PFdhbGxUaW1lPiBtb2RpZmllZFNpbmNlLCBTaG91bGRHcmFuZGZhdGhlciBzaG91bGRHcmFuZGZh
dGhlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9p
ZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uYWw8V2FsbFRpbWU+IG1vZGlmaWVkU2lu
Y2UsIFNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljcyBzaG91bGRHcmFuZGZhdGhlciwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICghY2Fu
U2VuZE1lc3NhZ2UoKSkgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgYm9vbCBzaG91bGRHcmFuZGZhdGhlckJvb2wgPSBzaG91bGRH
cmFuZGZhdGhlciA9PSBTaG91bGRHcmFuZGZhdGhlcjo6WWVzOwotICAgIHNlbmRXaXRoQXN5bmNS
ZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBl
cnNpc3RlbnQoc2Vzc2lvbklELCBtb2RpZmllZFNpbmNlLCBzaG91bGRHcmFuZGZhdGhlckJvb2wp
LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1l
c3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6U2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVu
dChzZXNzaW9uSUQsIG1vZGlmaWVkU2luY2UsIHNob3VsZEdyYW5kZmF0aGVyKSwgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnNjaGVk
dWxlU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzUHJvY2Vzc2luZyhQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAg
LTYwMywxNyArNTU0LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRBZ2VDYXBGb3JD
bGllbnRTaWRlQ29va2llcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICAKLSAgICBhdXRvIGNhbGxiYWNrSWQgPSBnZW5lcmF0ZUNhbGxiYWNrSUQo
KTsKLSAgICBhdXRvIGFkZFJlc3VsdCA9IG1fc2NoZWR1bGVTdGF0aXN0aWNzUHJvY2Vzc2luZ0Nh
bGxiYWNrTWFwLmFkZChjYWxsYmFja0lkLCBbcHJvdGVjdGVkUHJvY2Vzc1Bvb2wgPSBtYWtlUmVm
KG1fcHJvY2Vzc1Bvb2wpLCB0b2tlbiA9IHRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRv
a2VuKCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkg
bXV0YWJsZSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7Ci0gICAgfSk7Ci0gICAgQVNT
RVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKLSAgICBzZW5kKE1l
c3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6U2V0QWdlQ2FwRm9yQ2xpZW50U2lkZUNvb2tpZXMoc2Vz
c2lvbklELCBzZWNvbmRzLCBjYWxsYmFja0lkKSwgMCk7Ci19Ci0KLXZvaWQgTmV0d29ya1Byb2Nl
c3NQcm94eTo6ZGlkU2V0QWdlQ2FwRm9yQ2xpZW50U2lkZUNvb2tpZXModWludDY0X3QgY2FsbGJh
Y2tJZCkKLXsKLSAgICBtX3NjaGVkdWxlU3RhdGlzdGljc1Byb2Nlc3NpbmdDYWxsYmFja01hcC50
YWtlKGNhbGxiYWNrSWQpKCk7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3
b3JrUHJvY2Vzczo6U2V0QWdlQ2FwRm9yQ2xpZW50U2lkZUNvb2tpZXMoc2Vzc2lvbklELCBzZWNv
bmRzKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9j
ZXNzUHJveHk6OnNldFRpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24oUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBTZWNvbmRzIHNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKQEAgLTYyNiwxMSArNTY3LDYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1By
b3h5OjpzZXRUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwKICAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpTZXRU
aW1lVG9MaXZlVXNlckludGVyYWN0aW9uKHNlc3Npb25JRCwgc2Vjb25kcyksIFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRVcGRh
dGVSdW50aW1lU2V0dGluZ3ModWludDY0X3QgY2FsbGJhY2tJZCkKLXsKLSAgICBtX3VwZGF0ZVJ1
bnRpbWVTZXR0aW5nc0NhbGxiYWNrTWFwLnRha2UoY2FsbGJhY2tJZCkoKTsKLX0KLQogdm9pZCBO
ZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXROb3RpZnlQYWdlc1doZW5UZWxlbWV0cnlXYXNDYXB0dXJl
ZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGJvb2wgdmFsdWUsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIWNhblNlbmRNZXNzYWdl
KCkpIHsKQEAgLTc2MSwxNyArNjk3LDE0IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0
R3JhbmRmYXRoZXJlZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluCiAgICAg
c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6U2V0R3JhbmRmYXRo
ZXJlZChzZXNzaW9uSUQsIHJlc291cmNlRG9tYWluLCBpc0dyYW5kZmF0aGVyZWQpLCBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6aGFz
U3RvcmFnZUFjY2Vzc0ZvckZyYW1lKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3Ry
aW5nJiByZXNvdXJjZURvbWFpbiwgY29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9tYWluLCB1aW50
NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sKT4mJiBjYWxsYmFjaykKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6aGFzU3RvcmFn
ZUFjY2Vzc0ZvckZyYW1lKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBy
ZXNvdXJjZURvbWFpbiwgY29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9tYWluLCB1aW50NjRfdCBm
cmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFjYW5TZW5kTWVzc2FnZSgpKSB7Ci0gICAg
ICAgIGNhbGxiYWNrKGZhbHNlKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBjb250ZXh0SWQgPSBnZW5lcmF0ZUNh
bGxiYWNrSUQoKTsKLSAgICBhdXRvIGFkZFJlc3VsdCA9IG1fc3RvcmFnZUFjY2Vzc1Jlc3BvbnNl
Q2FsbGJhY2tNYXAuYWRkKGNvbnRleHRJZCwgV1RGTW92ZShjYWxsYmFjaykpOwotICAgIEFTU0VS
VF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7Ci0gICAgc2VuZChNZXNz
YWdlczo6TmV0d29ya1Byb2Nlc3M6Okhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZShzZXNzaW9uSUQs
IHJlc291cmNlRG9tYWluLCBmaXJzdFBhcnR5RG9tYWluLCBmcmFtZUlELCBwYWdlSUQsIGNvbnRl
eHRJZCksIDApOworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nl
c3M6Okhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZShzZXNzaW9uSUQsIHJlc291cmNlRG9tYWluLCBm
aXJzdFBhcnR5RG9tYWluLCBmcmFtZUlELCBwYWdlSUQpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6aGFzU3RvcmFnZUFjY2VzcyhQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIGNv
bnN0IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQs
IHVpbnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKQEAgLTc5MSwzMyArNzI0LDE3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94
eTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBT
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIGNvbnRleHRJZCA9IGdlbmVyYXRl
Q2FsbGJhY2tJRCgpOwotICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9zdG9yYWdlQWNjZXNzUmVxdWVz
dFJlc3BvbnNlQ2FsbGJhY2tNYXAuYWRkKGNvbnRleHRJZCwgV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpOwotICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRy
eSk7Ci0gICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlJlcXVlc3RTdG9yYWdlQWNj
ZXNzKHNlc3Npb25JRCwgcmVzb3VyY2VEb21haW4sIGZpcnN0UGFydHlEb21haW4sIGZyYW1lSUQs
IHBhZ2VJRCwgcHJvbXB0RW5hYmxlZCwgY29udGV4dElkKSwgMCk7CisgICAgc2VuZFdpdGhBc3lu
Y1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6UmVxdWVzdFN0b3JhZ2VBY2Nlc3Moc2Vz
c2lvbklELCByZXNvdXJjZURvbWFpbiwgZmlyc3RQYXJ0eURvbWFpbiwgZnJhbWVJRCwgcGFnZUlE
LCBwcm9tcHRFbmFibGVkKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lk
IE5ldHdvcmtQcm9jZXNzUHJveHk6OmdyYW50U3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFN0cmluZyYgZmly
c3RQYXJ0eURvbWFpbiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJ
RCwgYm9vbCB1c2VyV2FzUHJvbXB0ZWQsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6Z3JhbnRT
dG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiByZXNv
dXJjZURvbWFpbiwgY29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9tYWluLCBPcHRpb25hbDx1aW50
NjRfdD4gZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBib29sIHVzZXJXYXNQcm9tcHRlZCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBp
ZiAoIWNhblNlbmRNZXNzYWdlKCkpIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2Up
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBjb250ZXh0SWQgPSBnZW5lcmF0
ZUNhbGxiYWNrSUQoKTsKLSAgICBhdXRvIGFkZFJlc3VsdCA9IG1fc3RvcmFnZUFjY2Vzc1Jlc3Bv
bnNlQ2FsbGJhY2tNYXAuYWRkKGNvbnRleHRJZCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OwotICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7Ci0g
ICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkdyYW50U3RvcmFnZUFjY2VzcyhzZXNz
aW9uSUQsIHJlc291cmNlRG9tYWluLCBmaXJzdFBhcnR5RG9tYWluLCBmcmFtZUlELnZhbHVlKCks
IHBhZ2VJRCwgdXNlcldhc1Byb21wdGVkLCBjb250ZXh0SWQpLCAwKTsKLX0KLQotdm9pZCBOZXR3
b3JrUHJvY2Vzc1Byb3h5OjpzdG9yYWdlQWNjZXNzUmVxdWVzdFJlc3VsdCh1bnNpZ25lZCBzdGF0
dXMsIHVpbnQ2NF90IGNvbnRleHRJZCkKLXsKLSAgICBtX3N0b3JhZ2VBY2Nlc3NSZXF1ZXN0UmVz
cG9uc2VDYWxsYmFja01hcC50YWtlKGNvbnRleHRJZCkoc3RhdGljX2Nhc3Q8U3RvcmFnZUFjY2Vz
c1N0YXR1cz4oc3RhdHVzKSk7Ci19Ci0KLXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c3RvcmFn
ZUFjY2Vzc09wZXJhdGlvblJlc3VsdChib29sIHdhc0dyYW50ZWQsIHVpbnQ2NF90IGNvbnRleHRJ
ZCkKLXsKLSAgICBtX3N0b3JhZ2VBY2Nlc3NSZXNwb25zZUNhbGxiYWNrTWFwLnRha2UoY29udGV4
dElkKSh3YXNHcmFudGVkKTsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdv
cmtQcm9jZXNzOjpHcmFudFN0b3JhZ2VBY2Nlc3Moc2Vzc2lvbklELCByZXNvdXJjZURvbWFpbiwg
Zmlyc3RQYXJ0eURvbWFpbiwgZnJhbWVJRC52YWx1ZSgpLCBwYWdlSUQsIHVzZXJXYXNQcm9tcHRl
ZCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vz
c1Byb3h5OjpyZW1vdmVBbGxTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtODI3LDM0
ICs3NDQsMTcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZW1vdmVBbGxTdG9yYWdlQWNj
ZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGwKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIGF1dG8gY29udGV4dElkID0gZ2VuZXJhdGVDYWxsYmFja0lEKCk7Ci0gICAgYXV0
byBhZGRSZXN1bHQgPSBtX3JlbW92ZUFsbFN0b3JhZ2VBY2Nlc3NDYWxsYmFja01hcC5hZGQoY29u
dGV4dElkLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci0gICAgQVNTRVJUX1VOVVNFRChh
ZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3
b3JrUHJvY2Vzczo6UmVtb3ZlQWxsU3RvcmFnZUFjY2VzcyhzZXNzaW9uSUQsIGNvbnRleHRJZCks
IDApOworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlJl
bW92ZUFsbFN0b3JhZ2VBY2Nlc3Moc2Vzc2lvbklEKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZFJlbW92ZUFsbFN0b3JhZ2VB
Y2Nlc3ModWludDY0X3QgY29udGV4dElkKQotewotICAgIG1fcmVtb3ZlQWxsU3RvcmFnZUFjY2Vz
c0NhbGxiYWNrTWFwLnRha2UoY29udGV4dElkKSgpOwotfQotCi12b2lkIE5ldHdvcmtQcm9jZXNz
UHJveHk6OmdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmIGRvbWFpbnMpPiYmIGNh
bGxiYWNrKQordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpnZXRBbGxTdG9yYWdlQWNjZXNzRW50
cmllcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVj
dG9yPFN0cmluZz4gZG9tYWlucyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFj
YW5TZW5kTWVzc2FnZSgpKSB7Ci0gICAgICAgIGNhbGxiYWNrKHsgfSk7CisgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKHsgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIGNv
bnRleHRJZCA9IGdlbmVyYXRlQ2FsbGJhY2tJRCgpOwotICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9h
bGxTdG9yYWdlQWNjZXNzRW50cmllc0NhbGxiYWNrTWFwLmFkZChjb250ZXh0SWQsIFdURk1vdmUo
Y2FsbGJhY2spKTsKLSAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3
RW50cnkpOwotICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpHZXRBbGxTdG9yYWdl
QWNjZXNzRW50cmllcyhzZXNzaW9uSUQsIGNvbnRleHRJZCksIDApOwotfQotCi12b2lkIE5ldHdv
cmtQcm9jZXNzUHJveHk6OmFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzUmVzdWx0KFZlY3RvcjxTdHJp
bmc+JiYgZG9tYWlucywgdWludDY0X3QgY29udGV4dElkKQotewotICAgIGF1dG8gY2FsbGJhY2sg
PSBtX2FsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzQ2FsbGJhY2tNYXAudGFrZShjb250ZXh0SWQpOwot
ICAgIGNhbGxiYWNrKFdURk1vdmUoZG9tYWlucykpOworICAgIHNlbmRXaXRoQXN5bmNSZXBseShN
ZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKHNlc3Np
b25JRCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJv
Y2Vzc1Byb3h5OjpzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIFNlY29uZHMgc2Vjb25kcywgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtODYzLDE2ICs3NjMsOCBAQCB2b2lkIE5ldHdv
cmtQcm9jZXNzUHJveHk6OnNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKFBB
TDo6U2Vzc2lvbklECiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9Ci0gICAgCi0gICAgYXV0byBjb250ZXh0SWQgPSBnZW5lcmF0ZUNhbGxiYWNrSUQo
KTsKLSAgICBhdXRvIGFkZFJlc3VsdCA9IG1fdXBkYXRlUnVudGltZVNldHRpbmdzQ2FsbGJhY2tN
YXAuYWRkKGNvbnRleHRJZCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotICAgIEFTU0VS
VF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7Ci0gICAgc2VuZChNZXNz
YWdlczo6TmV0d29ya1Byb2Nlc3M6OlNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3Vy
Y2VzKHNlc3Npb25JRCwgc2Vjb25kcywgY29udGV4dElkKSwgMCk7Ci19CiAKLXZvaWQgTmV0d29y
a1Byb2Nlc3NQcm94eTo6ZGlkU2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMo
dWludDY0X3QgY29udGV4dElkKQotewotICAgIG1fdXBkYXRlUnVudGltZVNldHRpbmdzQ2FsbGJh
Y2tNYXAudGFrZShjb250ZXh0SWQpKCk7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2Vz
OjpOZXR3b3JrUHJvY2Vzczo6U2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMo
c2Vzc2lvbklELCBzZWNvbmRzKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCiB2
b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnNldENhY2hlTWF4QWdlQ2FwKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgU2Vjb25kcyBzZWNvbmRzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCkBAIC04ODIsMTAgKzc3NCw3IEBAIHZvaWQgTmV0d29ya1Byb2Nl
c3NQcm94eTo6c2V0Q2FjaGVNYXhBZ2VDYXAoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTZWNv
bmRzIHNlCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgYXV0byBjb250ZXh0SWQg
PSBnZW5lcmF0ZUNhbGxiYWNrSUQoKTsKLSAgICBhdXRvIGFkZFJlc3VsdCA9IG1fdXBkYXRlUnVu
dGltZVNldHRpbmdzQ2FsbGJhY2tNYXAuYWRkKGNvbnRleHRJZCwgV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOwotICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdF
bnRyeSk7Ci0gICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlNldENhY2hlTWF4QWdl
Q2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKHNlc3Npb25JRCwgc2Vjb25kcywgY29udGV4dElkKSwg
MCk7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6U2V0
Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoc2Vzc2lvbklELCBzZWNvbmRzKSwg
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJv
eHk6OnNldEdyYW5kZmF0aGVyaW5nVGltZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFNlY29u
ZHMgc2Vjb25kcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQpAQCAtOTU1LDEwICs4NDQsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnJlc2V0Q2Fj
aGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoUEFMOjpTZXNzaW9uSQogICAgICAgICBy
ZXR1cm47CiAgICAgfQogICAgIAotICAgIGF1dG8gY29udGV4dElkID0gZ2VuZXJhdGVDYWxsYmFj
a0lEKCk7Ci0gICAgYXV0byBhZGRSZXN1bHQgPSBtX3VwZGF0ZVJ1bnRpbWVTZXR0aW5nc0NhbGxi
YWNrTWFwLmFkZChjb250ZXh0SWQsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLSAgICBB
U1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOwotICAgIHNlbmQo
TWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpSZXNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50
UmVzb3VyY2VzKHNlc3Npb25JRCwgY29udGV4dElkKSwgMCk7CisgICAgc2VuZFdpdGhBc3luY1Jl
cGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6UmVzZXRDYWNoZU1heEFnZUNhcEZvclByZXZh
bGVudFJlc291cmNlcyhzZXNzaW9uSUQpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9
CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6cmVzZXRQYXJhbWV0ZXJzVG9EZWZhdWx0VmFs
dWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtOTgxLDEzICs4NjcsMTIgQEAgdm9pZCBOZXR3b3JrUHJv
Y2Vzc1Byb3h5OjpzdWJtaXRUZWxlbWV0cnkoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21w
bGV0aW9uSGEKICAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNz
OjpTdWJtaXRUZWxlbWV0cnkoc2Vzc2lvbklEKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFu
ZFBlcnNpc3RlbnQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBib29sIHNob3VsZEdyYW5kZmF0
aGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lk
IE5ldHdvcmtQcm9jZXNzUHJveHk6OnNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3Mgc2hv
dWxkR3JhbmRmYXRoZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKIHsKICAgICBpZiAoIWNhblNlbmRNZXNzYWdlKCkpIHsKICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKIAogICAgIHNlbmRXaXRo
QXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlNjaGVkdWxlQ2xlYXJJbk1lbW9y
eUFuZFBlcnNpc3RlbnQoc2Vzc2lvbklELCB7IH0sIHNob3VsZEdyYW5kZmF0aGVyKSwgV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAppbmRleCBlMzUxYTA2Yjc1YWQ3OGU1
MDk5NWZhMWY4ZmQ4YmJhMzhlYmIwYTllLi4zMzUzODBiMTBhNWM0ZWQyYTc3ZDE5M2EyOWUyOTFi
YzJhZTQ3NWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDEyLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC01Nyw3ICs1Nyw4IEBAIG5hbWVzcGFjZSBXZWJLaXQgewog
Y2xhc3MgRG93bmxvYWRQcm94eTsKIGNsYXNzIERvd25sb2FkUHJveHlNYXA7CiBjbGFzcyBXZWJQ
cm9jZXNzUG9vbDsKLWVudW0gY2xhc3MgU3RvcmFnZUFjY2Vzc1N0YXR1cyA6IHVuc2lnbmVkOwor
ZW51bSBjbGFzcyBTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3MgOiBib29sOworZW51bSBjbGFz
cyBTdG9yYWdlQWNjZXNzU3RhdHVzIDogdWludDhfdDsKIGVudW0gY2xhc3MgV2Vic2l0ZURhdGFG
ZXRjaE9wdGlvbjsKIGVudW0gY2xhc3MgV2Vic2l0ZURhdGFUeXBlOwogc3RydWN0IE5ldHdvcmtQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOwpAQCAtODAsNyArODEsNyBAQCBwdWJsaWM6CiAjaWYg
RU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICB2b2lkIGNsZWFyUHJldmFsZW50
UmVzb3VyY2UoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBjbGVhclVzZXJJbnRlcmFjdGlv
bihQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lkIGR1bXBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
KFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYm
KTsKKyAgICB2b2lkIGR1bXBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKFBBTDo6U2Vzc2lvbklELCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyk+JiYpOwogICAgIHZvaWQgdXBkYXRlUHJldmFs
ZW50RG9tYWluc1RvQmxvY2tDb29raWVzRm9yKFBBTDo6U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgZG9tYWluc1RvQmxvY2ssIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAg
ICAgdm9pZCBoYXNIYWRVc2VySW50ZXJhY3Rpb24oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmlu
ZyYgcmVzb3VyY2VEb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAg
IHZvaWQgaXNHcmFuZGZhdGhlcmVkKFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHJlc291
cmNlRG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKQEAgLTEwNywxNSAr
MTA4LDE1IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFByZXZhbGVudFJlc291cmNlKFBBTDo6U2Vz
c2lvbklELCBjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0UHJldmFsZW50UmVzb3VyY2VGb3JEZWJ1Z01vZGUoUEFM
OjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRWZXJ5UHJldmFsZW50UmVzb3VyY2UoUEFMOjpT
ZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJik7Ci0gICAgdm9pZCBoYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWUoUEFMOjpTZXNz
aW9uSUQsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFN0cmluZyYgZmlyc3RQ
YXJ0eURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNrKTsKLSAgICB2b2lkIGdldEFsbFN0b3JhZ2VB
Y2Nlc3NFbnRyaWVzKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3Rv
cjxTdHJpbmc+JiYgZG9tYWlucyk+JiYpOwotICAgIHZvaWQgZ3JhbnRTdG9yYWdlQWNjZXNzKFBB
TDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBjb25zdCBTdHJpbmcm
IGZpcnN0UGFydHlEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1aW50NjRfdCBw
YWdlSUQsIGJvb2wgdXNlcldhc1Byb21wdGVkLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYpOworICAgIHZvaWQgaGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKFBBTDo6U2Vzc2lv
bklELCBjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBjb25zdCBTdHJpbmcmIGZpcnN0UGFy
dHlEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBnZXRBbGxTdG9yYWdlQWNjZXNzRW50cmll
cyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiBk
b21haW5zKT4mJik7CisgICAgdm9pZCBncmFudFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQs
IGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eURv
bWFpbiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgYm9vbCB1
c2VyV2FzUHJvbXB0ZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIHZv
aWQgaGFzU3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBzdWJGcmFt
ZUhvc3QsIGNvbnN0IFN0cmluZyYgdG9wRnJhbWVIb3N0LCBPcHRpb25hbDx1aW50NjRfdD4gZnJh
bWVJRCwgdWludDY0X3QgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsK
ICAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJp
bmcmIHJlc291cmNlRG9tYWluLCBjb25zdCBTdHJpbmcmIGZpcnN0UGFydHlEb21haW4sIE9wdGlv
bmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIGJvb2wgcHJvbXB0RW5hYmxl
ZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzU3RhdHVzKT4mJik7CiAgICAg
dm9pZCByZXNldFBhcmFtZXRlcnNUb0RlZmF1bHRWYWx1ZXMoUEFMOjpTZXNzaW9uSUQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCByZW1vdmVBbGxTdG9yYWdlQWNjZXNz
KFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQg
c2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChQQUw6OlNlc3Npb25JRCwgYm9vbCBz
aG91bGRHcmFuZGZhdGhlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lk
IHNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoUEFMOjpTZXNzaW9uSUQsIE9wdGlv
bmFsPFdhbGxUaW1lPiBtb2RpZmllZFNpbmNlLCBTaG91bGRHcmFuZGZhdGhlciwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIHNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBl
cnNpc3RlbnQoUEFMOjpTZXNzaW9uSUQsIFNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljcywgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIHNjaGVkdWxlQ2xlYXJJbk1lbW9y
eUFuZFBlcnNpc3RlbnQoUEFMOjpTZXNzaW9uSUQsIE9wdGlvbmFsPFdhbGxUaW1lPiBtb2RpZmll
ZFNpbmNlLCBTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3MsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJik7CiAgICAgdm9pZCBzY2hlZHVsZUNvb2tpZUJsb2NraW5nVXBkYXRlKFBBTDo6U2Vz
c2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc3VibWl0VGVs
ZW1ldHJ5KFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAg
IHZvaWQgc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoUEFMOjpTZXNzaW9u
SUQsIFNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CkBAIC0xODQsMTUgKzE4
NSw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1ZSh1
aW50NjRfdCBwYWdlSUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNj
cmlwdGlvbiwgZG91YmxlIHZhbHVlLCB1bnNpZ25lZCBzaWduaWZpY2FudEZpZ3VyZXMsIFdlYkNv
cmU6OlNob3VsZFNhbXBsZSk7CiAgICAgdm9pZCBsb2dHbG9iYWxEaWFnbm9zdGljTWVzc2FnZVdp
dGhWYWx1ZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24s
IGRvdWJsZSB2YWx1ZSwgdW5zaWduZWQgc2lnbmlmaWNhbnRGaWd1cmVzLCBXZWJDb3JlOjpTaG91
bGRTYW1wbGUpOwogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgdm9p
ZCBkaWREdW1wUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhTdHJpbmcgZHVtcGVkU3RhdGlzdGljcywg
dWludDY0X3QgY2FsbGJhY2tJZCk7Ci0gICAgdm9pZCBkaWRVcGRhdGVCbG9ja0Nvb2tpZXModWlu
dDY0X3QgY29udGV4dElkKTsKLSAgICB2b2lkIGRpZFNldEFnZUNhcEZvckNsaWVudFNpZGVDb29r
aWVzKHVpbnQ2NF90IGNvbnRleHRJZCk7Ci0gICAgdm9pZCBzdG9yYWdlQWNjZXNzT3BlcmF0aW9u
UmVzdWx0KGJvb2wgd2FzR3JhbnRlZCwgdWludDY0X3QgY29udGV4dElkKTsKLSAgICB2b2lkIHN0
b3JhZ2VBY2Nlc3NSZXF1ZXN0UmVzdWx0KHVuc2lnbmVkIHdhc0dyYW50ZWQsIHVpbnQ2NF90IGNv
bnRleHRJZCk7Ci0gICAgdm9pZCBhbGxTdG9yYWdlQWNjZXNzRW50cmllc1Jlc3VsdChWZWN0b3I8
U3RyaW5nPiYmIGRvbWFpbnMsIHVpbnQ2NF90IGNvbnRleHRJZCk7Ci0gICAgdm9pZCBkaWRSZW1v
dmVBbGxTdG9yYWdlQWNjZXNzKHVpbnQ2NF90IGNvbnRleHRJZCk7Ci0gICAgdm9pZCBkaWRTZXRD
YWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyh1aW50NjRfdCBjb250ZXh0SWQpOwot
ICAgIHZvaWQgZGlkVXBkYXRlUnVudGltZVNldHRpbmdzKHVpbnQ2NF90IGNvbnRleHRJZCk7CiAg
ICAgdm9pZCBub3RpZnlSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUHJvY2Vzc2VkKCk7CiAgICAgdm9p
ZCBub3RpZnlXZWJzaXRlRGF0YURlbGV0aW9uRm9yVG9wUHJpdmF0ZWx5T3duZWREb21haW5zRmlu
aXNoZWQoKTsKICAgICB2b2lkIG5vdGlmeVdlYnNpdGVEYXRhU2NhbkZvclRvcFByaXZhdGVseUNv
bnRyb2xsZWREb21haW5zRmluaXNoZWQoKTsKQEAgLTIzOSwxNyArMjMxLDYgQEAgcHJpdmF0ZToK
ICAgICAKICAgICB1bnNpZ25lZCBtX3N5bmNBbGxDb29raWVzQ291bnRlciB7IDAgfTsKIAotI2lm
IEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgSGFzaE1hcDx1aW50NjRfdCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPj4gbV9zY2hlZHVsZVN0YXRpc3RpY3NQcm9jZXNzaW5n
Q2FsbGJhY2tNYXA7Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sIHdhc0dyYW50ZWQpPj4gbV9zdG9yYWdlQWNjZXNzUmVzcG9uc2VDYWxsYmFja01hcDsK
LSAgICBIYXNoTWFwPHVpbnQ2NF90LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nl
c3NTdGF0dXMgd2FzR3JhbnRlZCk+PiBtX3N0b3JhZ2VBY2Nlc3NSZXF1ZXN0UmVzcG9uc2VDYWxs
YmFja01hcDsKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
PiBtX3JlbW92ZUFsbFN0b3JhZ2VBY2Nlc3NDYWxsYmFja01hcDsKLSAgICBIYXNoTWFwPHVpbnQ2
NF90LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYgZG9tYWlucyk+PiBt
X2FsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzQ2FsbGJhY2tNYXA7Ci0gICAgSGFzaE1hcDx1aW50NjRf
dCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4+IG1fZHVtcFN0YXRpc3Rp
Y3NDYWxsYmFja01hcDsKLSNlbmRpZgotCi0gICAgSGFzaE1hcDx1aW50NjRfdCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPj4gbV91cGRhdGVSdW50aW1lU2V0dGluZ3NDYWxsYmFja01hcDsKLQog
I2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCiAgICAgSGFzaFNldDxXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eSo+IG1fd2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveGllczsKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDg0ZTBlOGY2NDQxMThlYzQ3
Mzc0ZTJkY2IzOGU0M2VhMTNjODhlMzUuLjFiYzMwZGJmZWYxMDA5ZTI2MDIyMWUwYzg2OGI1ZDMx
Nzc3MjU2MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KQEAgLTQxLDE1ICs0MSw2
IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzUHJveHkgTGVnYWN5UmVjZWl2ZXIgewogICAg
IExvZ0dsb2JhbERpYWdub3N0aWNNZXNzYWdlV2l0aFZhbHVlKFN0cmluZyBtZXNzYWdlLCBTdHJp
bmcgZGVzY3JpcHRpb24sIGRvdWJsZSB2YWx1ZSwgdW5zaWduZWQgc2lnbmlmaWNhbnRGaWd1cmVz
LCBlbnVtOmJvb2wgV2ViQ29yZTo6U2hvdWxkU2FtcGxlIHNob3VsZFNhbXBsZSkKIAogI2lmIEVO
QUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgRGlkRHVtcFJlc291cmNlTG9hZFN0
YXRpc3RpY3MoU3RyaW5nIGR1bXBlZFN0YXRpc3RpY3MsIHVpbnQ2NF90IGNhbGxiYWNrSWQpCi0g
ICAgRGlkVXBkYXRlQmxvY2tDb29raWVzKHVpbnQ2NF90IGNhbGxiYWNrSWQpCi0gICAgRGlkU2V0
QWdlQ2FwRm9yQ2xpZW50U2lkZUNvb2tpZXModWludDY0X3QgY2FsbGJhY2tJZCkKLSAgICBTdG9y
YWdlQWNjZXNzT3BlcmF0aW9uUmVzdWx0KGJvb2wgd2FzR3JhbnRlZCwgdWludDY0X3QgY29udGV4
dElkKQotICAgIFN0b3JhZ2VBY2Nlc3NSZXF1ZXN0UmVzdWx0KHVuc2lnbmVkIHdhc0dyYW50ZWQs
IHVpbnQ2NF90IGNvbnRleHRJZCkKLSAgICBBbGxTdG9yYWdlQWNjZXNzRW50cmllc1Jlc3VsdChW
ZWN0b3I8U3RyaW5nPiBkb21haW5zLCB1aW50NjRfdCBjb250ZXh0SWQpCi0gICAgRGlkUmVtb3Zl
QWxsU3RvcmFnZUFjY2Vzcyh1aW50NjRfdCBjb250ZXh0SWQpCi0gICAgRGlkU2V0Q2FjaGVNYXhB
Z2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXModWludDY0X3QgY29udGV4dElkKQotICAgIERpZFVw
ZGF0ZVJ1bnRpbWVTZXR0aW5ncyh1aW50NjRfdCBjb250ZXh0SWQpCiAgICAgTm90aWZ5UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1Byb2Nlc3NlZCgpCiAgICAgTm90aWZ5V2Vic2l0ZURhdGFEZWxldGlv
bkZvclRvcFByaXZhdGVseU93bmVkRG9tYWluc0ZpbmlzaGVkKCkKICAgICBOb3RpZnlXZWJzaXRl
RGF0YVNjYW5Gb3JUb3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluc0ZpbmlzaGVkKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAppbmRleCAyY2E3NjM4MWJmZjRi
MjVlY2VjMDAxZjQ0ZDEyYTJhYzBhZWEyMDE1Li40OTZjNjFmMTFhN2E1NTBmZmY5MmNmZWRjYjli
ZGY4OTUwOTAxYWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
Y3BwCkBAIC01OTEsOSArNTkxLDYgQEAgTmV0d29ya1Byb2Nlc3NQcm94eSYgV2ViUHJvY2Vzc1Bv
b2w6OmVuc3VyZU5ldHdvcmtQcm9jZXNzKFdlYnNpdGVEYXRhU3RvcmUqIHdpdGgKICAgICAgICAg
ICAgIG1fbmV0d29ya1Byb2Nlc3MtPmFkZFNlc3Npb24oKndlYnNpdGVEYXRhU3RvcmUpOwogICAg
IH0KIAotICAgIGlmIChtX3dlYnNpdGVEYXRhU3RvcmUpCi0gICAgICAgIG1fd2Vic2l0ZURhdGFT
dG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLmRpZENyZWF0ZU5ldHdvcmtQcm9jZXNzKCk7Ci0KICAg
ICByZXR1cm4gKm1fbmV0d29ya1Byb2Nlc3M7CiB9CiAKQEAgLTEwMzQsNiArMTAzMSw5IEBAIHZv
aWQgV2ViUHJvY2Vzc1Bvb2w6OnByb2Nlc3NEaWRGaW5pc2hMYXVuY2hpbmcoV2ViUHJvY2Vzc1By
b3h5KiBwcm9jZXNzKQogICAgICAgICBwcm9jZXNzLT5jb25uZWN0aW9uKCktPmlnbm9yZVRpbWVv
dXRzRm9yVGVzdGluZygpOwogCiAgICAgbV9jb25uZWN0aW9uQ2xpZW50LmRpZENyZWF0ZUNvbm5l
Y3Rpb24odGhpcywgcHJvY2Vzcy0+d2ViQ29ubmVjdGlvbigpKTsKKworICAgIGlmIChtX3dlYnNp
dGVEYXRhU3RvcmUpCisgICAgICAgIG1fd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9y
ZSgpLmRpZENyZWF0ZU5ldHdvcmtQcm9jZXNzKCk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6
OmRpc2Nvbm5lY3RQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5j
cHAKaW5kZXggYjE4ZmNlNzkwNmY4ZTJiYjhjNWJkMjQ2NDQ2MDYwOGU0Y2NmZWFkZC4uYjdjODE4
MjMzZWM0ODA0Yjg0Y2I5YWU4MDIyYWZmNGZjZTJmOGQyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKQEAg
LTMzLDYgKzMzLDggQEAKICNpbmNsdWRlICJEZXZpY2VJZEhhc2hTYWx0U3RvcmFnZS5oIgogI2lu
Y2x1ZGUgIk1vY2tBdXRoZW50aWNhdG9yTWFuYWdlci5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9j
ZXNzTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3MuaCIK
KyNpbmNsdWRlICJTdG9yYWdlQWNjZXNzU3RhdHVzLmgiCiAjaW5jbHVkZSAiU3RvcmFnZU1hbmFn
ZXIuaCIKICNpbmNsdWRlICJXZWJDb29raWVNYW5hZ2VyUHJveHkuaCIKICNpbmNsdWRlICJXZWJQ
cm9jZXNzTWVzc2FnZXMuaCIKQEAgLTk0Miw3ICs5NDQsNyBAQCB2b2lkIFdlYnNpdGVEYXRhU3Rv
cmU6OnJlbW92ZURhdGEoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzLCBXYWxs
VGltZQogICAgICAgICAKICAgICAgICAgLy8gSWYgd2UgYXJlIGRlbGV0aW5nIGFsbCBvZiB0aGUg
ZGF0YSB0eXBlcyB0aGF0IHRoZSByZXNvdXJjZSBsb2FkIHN0YXRpc3RpY3Mgc3RvcmUgbW9uaXRv
cnMKICAgICAgICAgLy8gd2UgZG8gbm90IG5lZWQgdG8gcmUtZ3JhbmRmYXRoZXIgb2xkIGRhdGEu
Ci0gICAgICAgIGF1dG8gc2hvdWxkR3JhbmRmYXRoZXIgPSAoKG1vbml0b3JlZFR5cGVzUmF3ICYg
ZGVsZXRlZFR5cGVzUmF3KSA9PSBtb25pdG9yZWRUeXBlc1JhdykgPyBTaG91bGRHcmFuZGZhdGhl
cjo6Tm8gOiBTaG91bGRHcmFuZGZhdGhlcjo6WWVzOworICAgICAgICBhdXRvIHNob3VsZEdyYW5k
ZmF0aGVyID0gKChtb25pdG9yZWRUeXBlc1JhdyAmIGRlbGV0ZWRUeXBlc1JhdykgPT0gbW9uaXRv
cmVkVHlwZXNSYXcpID8gU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzOjpObyA6IFNob3VsZEdy
YW5kZmF0aGVyU3RhdGlzdGljczo6WWVzOwogICAgICAgICAKICAgICAgICAgaWYgKG1fcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcykgewogICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5hZGRQ
ZW5kaW5nQ2FsbGJhY2soKTsKQEAgLTEyNTIsMTEgKzEyNTQsMTEgQEAgdm9pZCBXZWJzaXRlRGF0
YVN0b3JlOjpyZW1vdmVEYXRhKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcywg
Y29uc3QgVmUKICAgICAgICAgLy8gd2UgZG8gbm90IG5lZWQgdG8gcmUtZ3JhbmRmYXRoZXIgb2xk
IGRhdGEuCiAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+YWRkUGVuZGluZ0NhbGxiYWNrKCk7
CiAgICAgICAgIGlmICgobW9uaXRvcmVkVHlwZXNSYXcgJiBkZWxldGVkVHlwZXNSYXcpID09IG1v
bml0b3JlZFR5cGVzUmF3KQotICAgICAgICAgICAgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5z
Y2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFNob3VsZEdyYW5kZmF0aGVyOjpObywg
W2NhbGxiYWNrQWdncmVnYXRvcl0geworICAgICAgICAgICAgbV9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzLT5zY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFNob3VsZEdyYW5kZmF0aGVy
U3RhdGlzdGljczo6Tm8sIFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsKICAgICAgICAgICAgICAgICBj
YWxsYmFja0FnZ3JlZ2F0b3ItPnJlbW92ZVBlbmRpbmdDYWxsYmFjaygpOwogICAgICAgICAgICAg
fSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+
c2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChTaG91bGRHcmFuZGZhdGhlcjo6WWVz
LCBbY2FsbGJhY2tBZ2dyZWdhdG9yXSB7CisgICAgICAgICAgICBtX3Jlc291cmNlTG9hZFN0YXRp
c3RpY3MtPnNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoU2hvdWxkR3JhbmRmYXRo
ZXJTdGF0aXN0aWNzOjpZZXMsIFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsKICAgICAgICAgICAgICAg
ICBjYWxsYmFja0FnZ3JlZ2F0b3ItPnJlbW92ZVBlbmRpbmdDYWxsYmFjaygpOwogICAgICAgICAg
ICAgfSk7CiAKQEAgLTEyOTIsMTAgKzEyOTQsOCBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNl
dE1heFN0YXRpc3RpY3NFbnRyaWVzKHNpemVfdCBtYXhpbXVtRW50cnlDb3VudCwgQ29tcGxldAog
ICAgIAogICAgIGF1dG8gY2FsbGJhY2tBZ2dyZWdhdG9yID0gQ2FsbGJhY2tBZ2dyZWdhdG9yOjpj
cmVhdGUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogCi0gICAgZm9yIChhdXRvJiBwcm9j
ZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKSB7Ci0gICAgICAgIGlmIChhdXRvKiBwcm9jZXNzID0g
cHJvY2Vzc1Bvb2wtPm5ldHdvcmtQcm9jZXNzKCkpCi0gICAgICAgICAgICBwcm9jZXNzLT5zZXRN
YXhTdGF0aXN0aWNzRW50cmllcyhtX3Nlc3Npb25JRCwgbWF4aW11bUVudHJ5Q291bnQsIFtwcm9j
ZXNzUG9vbCwgY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYo
KV0geyB9KTsKLSAgICB9CisgICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29s
cygpKQorICAgICAgICBwcm9jZXNzUG9vbC0+ZW5zdXJlTmV0d29ya1Byb2Nlc3MoKS5zZXRNYXhT
dGF0aXN0aWNzRW50cmllcyhtX3Nlc3Npb25JRCwgbWF4aW11bUVudHJ5Q291bnQsIFtwcm9jZXNz
UG9vbCwgY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0g
eyB9KTsKIH0KIAogdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzZXRQcnVuZUVudHJpZXNEb3duVG8o
c2l6ZV90IHBydW5lVGFyZ2V0Q291bnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKQEAgLTEzMTAsOCArMTMxMCw3IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9y
ZTo6c2V0UHJ1bmVFbnRyaWVzRG93blRvKHNpemVfdCBwcnVuZVRhcmdldENvdW50LCBDb21wbGV0
aW9uCiAgICAgYXV0byBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBDYWxsYmFja0FnZ3JlZ2F0b3I6OmNy
ZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAKICAgICBmb3IgKGF1dG8mIHByb2Nl
c3NQb29sIDogcHJvY2Vzc1Bvb2xzKCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHByb2Nlc3MgPSBw
cm9jZXNzUG9vbC0+bmV0d29ya1Byb2Nlc3MoKSkKLSAgICAgICAgICAgIHByb2Nlc3MtPnNldFBy
dW5lRW50cmllc0Rvd25UbyhtX3Nlc3Npb25JRCwgcHJ1bmVUYXJnZXRDb3VudCwgW3Byb2Nlc3NQ
b29sLCBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7
IH0pOworICAgICAgICBwcm9jZXNzUG9vbC0+ZW5zdXJlTmV0d29ya1Byb2Nlc3MoKS5zZXRQcnVu
ZUVudHJpZXNEb3duVG8obV9zZXNzaW9uSUQsIHBydW5lVGFyZ2V0Q291bnQsIFtwcm9jZXNzUG9v
bCwgY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9
KTsKICAgICB9CiB9CiAKQEAgLTEzMjYsMTAgKzEzMjUsOCBAQCB2b2lkIFdlYnNpdGVEYXRhU3Rv
cmU6OnNldEdyYW5kZmF0aGVyaW5nVGltZShTZWNvbmRzIHNlY29uZHMsIENvbXBsZXRpb25IYW5k
bGVyPAogICAgIAogICAgIGF1dG8gY2FsbGJhY2tBZ2dyZWdhdG9yID0gQ2FsbGJhY2tBZ2dyZWdh
dG9yOjpjcmVhdGUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogCi0gICAgZm9yIChhdXRv
JiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKSB7Ci0gICAgICAgIGlmIChhdXRvKiBwcm9j
ZXNzID0gcHJvY2Vzc1Bvb2wtPm5ldHdvcmtQcm9jZXNzKCkpCi0gICAgICAgICAgICBwcm9jZXNz
LT5zZXRHcmFuZGZhdGhlcmluZ1RpbWUobV9zZXNzaW9uSUQsIHNlY29uZHMsIFtwcm9jZXNzUG9v
bCwgY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9
KTsKLSAgICB9CisgICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKQor
ICAgICAgICBwcm9jZXNzUG9vbC0+ZW5zdXJlTmV0d29ya1Byb2Nlc3MoKS5zZXRHcmFuZGZhdGhl
cmluZ1RpbWUobV9zZXNzaW9uSUQsIHNlY29uZHMsIFtwcm9jZXNzUG9vbCwgY2FsbGJhY2tBZ2dy
ZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKIH0KIAogdm9pZCBX
ZWJzaXRlRGF0YVN0b3JlOjpzZXRDYWNoZU1heEFnZUNhcChTZWNvbmRzIHNlY29uZHMsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTEzNDQsMTAgKzEz
NDEsOCBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNldENhY2hlTWF4QWdlQ2FwKFNlY29uZHMg
c2Vjb25kcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZAogCiAgICAgYXV0byBjYWxsYmFja0FnZ3Jl
Z2F0b3IgPSBDYWxsYmFja0FnZ3JlZ2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CiAKLSAgICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xzKCkpIHsK
LSAgICAgICAgaWYgKGF1dG8qIHByb2Nlc3MgPSBwcm9jZXNzUG9vbC0+bmV0d29ya1Byb2Nlc3Mo
KSkKLSAgICAgICAgICAgIHByb2Nlc3MtPnNldENhY2hlTWF4QWdlQ2FwKG1fc2Vzc2lvbklELCBz
ZWNvbmRzLCBbcHJvY2Vzc1Bvb2wsIGNhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVn
YXRvci5jb3B5UmVmKCldIHsgfSk7Ci0gICAgfQorICAgIGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wg
OiBwcm9jZXNzUG9vbHMoKSkKKyAgICAgICAgcHJvY2Vzc1Bvb2wtPmVuc3VyZU5ldHdvcmtQcm9j
ZXNzKCkuc2V0Q2FjaGVNYXhBZ2VDYXAobV9zZXNzaW9uSUQsIHNlY29uZHMsIFtwcm9jZXNzUG9v
bCwgY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9
KTsKIH0KIAogdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzZXRNaW5pbXVtVGltZUJldHdlZW5EYXRh
UmVjb3Jkc1JlbW92YWwoU2Vjb25kcyBzZWNvbmRzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC0xMzYxLDEwICsxMzU2LDggQEAgdm9pZCBXZWJzaXRl
RGF0YVN0b3JlOjpzZXRNaW5pbXVtVGltZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwoU2Vjb25k
cyBzZWNvbmRzLAogICAgIAogICAgIGF1dG8gY2FsbGJhY2tBZ2dyZWdhdG9yID0gQ2FsbGJhY2tB
Z2dyZWdhdG9yOjpjcmVhdGUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogCi0gICAgZm9y
IChhdXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKSB7Ci0gICAgICAgIGlmIChhdXRv
KiBwcm9jZXNzID0gcHJvY2Vzc1Bvb2wtPm5ldHdvcmtQcm9jZXNzKCkpCi0gICAgICAgICAgICBw
cm9jZXNzLT5zZXRNaW5pbXVtVGltZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwobV9zZXNzaW9u
SUQsIHNlY29uZHMsIFtwcm9jZXNzUG9vbCwgY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tB
Z2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKLSAgICB9CisgICAgZm9yIChhdXRvJiBwcm9jZXNz
UG9vbCA6IHByb2Nlc3NQb29scygpKQorICAgICAgICBwcm9jZXNzUG9vbC0+ZW5zdXJlTmV0d29y
a1Byb2Nlc3MoKS5zZXRNaW5pbXVtVGltZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwobV9zZXNz
aW9uSUQsIHNlY29uZHMsIFtwcm9jZXNzUG9vbCwgY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJh
Y2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKIH0KICAgICAKIHZvaWQgV2Vic2l0ZURhdGFT
dG9yZTo6ZHVtcFJlc291cmNlTG9hZFN0YXRpc3RpY3MoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChj
b25zdCBTdHJpbmcmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTE0MjUsOCArMTQxOCw3IEBA
IHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6c2V0UHJldmFsZW50UmVzb3VyY2UoY29uc3QgVVJMJiB1
cmwsIENvbXBsZXRpb25IYW5kbGVyPHZvCiAgICAgYXV0byBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBD
YWxsYmFja0FnZ3JlZ2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAK
ICAgICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xzKCkpIHsKLSAgICAgICAg
aWYgKGF1dG8qIHByb2Nlc3MgPSBwcm9jZXNzUG9vbC0+bmV0d29ya1Byb2Nlc3MoKSkKLSAgICAg
ICAgICAgIHByb2Nlc3MtPnNldFByZXZhbGVudFJlc291cmNlKG1fc2Vzc2lvbklELCBXZWJDb3Jl
OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpwcmltYXJ5RG9tYWluKHVybCksIFtwcm9jZXNzUG9v
bCwgY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9
KTsKKyAgICAgICAgcHJvY2Vzc1Bvb2wtPmVuc3VyZU5ldHdvcmtQcm9jZXNzKCkuc2V0UHJldmFs
ZW50UmVzb3VyY2UobV9zZXNzaW9uSUQsIFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M6
OnByaW1hcnlEb21haW4odXJsKSwgW3Byb2Nlc3NQb29sLCBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBj
YWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOwogICAgIH0KIH0KIApAQCAtMTUwOCwx
MCArMTUwMCw4IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6c2V0U2hvdWxkQ2xhc3NpZnlSZXNv
dXJjZXNCZWZvcmVEYXRhUmVjb3Jkc1JlbW92YWwoYm9vbCB2CiAgICAgCiAgICAgYXV0byBjYWxs
YmFja0FnZ3JlZ2F0b3IgPSBDYWxsYmFja0FnZ3JlZ2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSk7CiAKLSAgICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vzc1Bv
b2xzKCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHByb2Nlc3MgPSBwcm9jZXNzUG9vbC0+bmV0d29y
a1Byb2Nlc3MoKSkKLSAgICAgICAgICAgIHByb2Nlc3MtPnNldFNob3VsZENsYXNzaWZ5UmVzb3Vy
Y2VzQmVmb3JlRGF0YVJlY29yZHNSZW1vdmFsKG1fc2Vzc2lvbklELCB2YWx1ZSwgW3Byb2Nlc3NQ
b29sLCBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7
IH0pOwotICAgIH0KKyAgICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xzKCkp
CisgICAgICAgIHByb2Nlc3NQb29sLT5lbnN1cmVOZXR3b3JrUHJvY2VzcygpLnNldFNob3VsZENs
YXNzaWZ5UmVzb3VyY2VzQmVmb3JlRGF0YVJlY29yZHNSZW1vdmFsKG1fc2Vzc2lvbklELCB2YWx1
ZSwgW3Byb2Nlc3NQb29sLCBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3Iu
Y29weVJlZigpXSB7IH0pOwogfQogCiB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNldFN1YmZyYW1l
VW5kZXJUb3BGcmFtZU9yaWdpbihjb25zdCBVUkwmIHN1YmZyYW1lLCBjb25zdCBVUkwmIHRvcEZy
YW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC0x
NzU1LDcgKzE3NDUsNyBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnN1Ym1pdFRlbGVtZXRyeSgp
CiAgICAgfQogfQogCi12b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNjaGVkdWxlQ2xlYXJJbk1lbW9y
eUFuZFBlcnNpc3RlbnQoV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSwgU2hvdWxkR3JhbmRmYXRoZXIg
c2hvdWxkR3JhbmRmYXRoZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKK3ZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6c2NoZWR1bGVDbGVhckluTWVtb3J5QW5k
UGVyc2lzdGVudChXYWxsVGltZSBtb2RpZmllZFNpbmNlLCBTaG91bGRHcmFuZGZhdGhlclN0YXRp
c3RpY3Mgc2hvdWxkR3JhbmRmYXRoZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogICAgIApA
QCAtMTc3Miw3ICsxNzYyLDcgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzY2hlZHVsZUNsZWFy
SW5NZW1vcnlBbmRQZXJzaXN0ZW50KFdhbGxUaW1lIG1vZGlmaWVkU2luY2UKICAgICB9CiB9CiAK
LXZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6c2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVu
dChTaG91bGRHcmFuZGZhdGhlciBzaG91bGRHcmFuZGZhdGhlciwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzY2hl
ZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGlj
cyBzaG91bGRHcmFuZGZhdGhlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAgICAgCkBAIC0x
ODM3LDEwICsxODI3LDggQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzZXRBZ2VDYXBGb3JDbGll
bnRTaWRlQ29va2llcyhPcHRpb25hbDxTZWNvbmRzPiBzZWNvbmRzLAogewogICAgIGF1dG8gY2Fs
bGJhY2tBZ2dyZWdhdG9yID0gQ2FsbGJhY2tBZ2dyZWdhdG9yOjpjcmVhdGUoV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOwogICAgIAotICAgIGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBwcm9j
ZXNzUG9vbHMoKSkgewotICAgICAgICBpZiAoYXV0byogcHJvY2VzcyA9IHByb2Nlc3NQb29sLT5u
ZXR3b3JrUHJvY2VzcygpKQotICAgICAgICAgICAgcHJvY2Vzcy0+c2V0QWdlQ2FwRm9yQ2xpZW50
U2lkZUNvb2tpZXMobV9zZXNzaW9uSUQsIHNlY29uZHMsIFtwcm9jZXNzUG9vbCwgY2FsbGJhY2tB
Z2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKLSAgICB9Cisg
ICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKQorICAgICAgICBwcm9j
ZXNzUG9vbC0+ZW5zdXJlTmV0d29ya1Byb2Nlc3MoKS5zZXRBZ2VDYXBGb3JDbGllbnRTaWRlQ29v
a2llcyhtX3Nlc3Npb25JRCwgc2Vjb25kcywgW3Byb2Nlc3NQb29sLCBjYWxsYmFja0FnZ3JlZ2F0
b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOwogfQogCiB2b2lkIFdlYnNp
dGVEYXRhU3RvcmU6OnNldExhc3RTZWVuKGNvbnN0IFVSTCYgdXJsLCBTZWNvbmRzIHNlY29uZHMs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTE4NzMs
MTAgKzE4NjEsOCBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNldE5vdGlmeVBhZ2VzV2hlbkRh
dGFSZWNvcmRzV2VyZVNjYW5uZWQoYm9vbCB2YWx1ZSwgQ29tcAogCiAgICAgYXV0byBjYWxsYmFj
a0FnZ3JlZ2F0b3IgPSBDYWxsYmFja0FnZ3JlZ2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CiAKLSAgICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xz
KCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHByb2Nlc3MgPSBwcm9jZXNzUG9vbC0+bmV0d29ya1By
b2Nlc3MoKSkKLSAgICAgICAgICAgIHByb2Nlc3MtPnNldE5vdGlmeVBhZ2VzV2hlbkRhdGFSZWNv
cmRzV2VyZVNjYW5uZWQobV9zZXNzaW9uSUQsIHZhbHVlLCBbcHJvY2Vzc1Bvb2wsIGNhbGxiYWNr
QWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7Ci0gICAgfQor
ICAgIGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBwcm9jZXNzUG9vbHMoKSkKKyAgICAgICAgcHJv
Y2Vzc1Bvb2wtPmVuc3VyZU5ldHdvcmtQcm9jZXNzKCkuc2V0Tm90aWZ5UGFnZXNXaGVuRGF0YVJl
Y29yZHNXZXJlU2Nhbm5lZChtX3Nlc3Npb25JRCwgdmFsdWUsIFtwcm9jZXNzUG9vbCwgY2FsbGJh
Y2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKIH0KIAog
dm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzZXROb3RpZnlQYWdlc1doZW5UZWxlbWV0cnlXYXNDYXB0
dXJlZChib29sIHZhbHVlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCkBAIC0xODg4LDEwICsxODc0LDggQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzZXRO
b3RpZnlQYWdlc1doZW5UZWxlbWV0cnlXYXNDYXB0dXJlZChib29sIHZhbHVlLCBDb21wbGUKICAg
ICAKICAgICBhdXRvIGNhbGxiYWNrQWdncmVnYXRvciA9IENhbGxiYWNrQWdncmVnYXRvcjo6Y3Jl
YXRlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAKLSAgICBmb3IgKGF1dG8mIHBy
b2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xzKCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHByb2Nlc3Mg
PSBwcm9jZXNzUG9vbC0+bmV0d29ya1Byb2Nlc3MoKSkKLSAgICAgICAgICAgIHByb2Nlc3MtPnNl
dE5vdGlmeVBhZ2VzV2hlblRlbGVtZXRyeVdhc0NhcHR1cmVkKG1fc2Vzc2lvbklELCB2YWx1ZSwg
W3Byb2Nlc3NQb29sLCBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29w
eVJlZigpXSB7IH0pOwotICAgIH0KKyAgICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vz
c1Bvb2xzKCkpCisgICAgICAgIHByb2Nlc3NQb29sLT5lbnN1cmVOZXR3b3JrUHJvY2VzcygpLnNl
dE5vdGlmeVBhZ2VzV2hlblRlbGVtZXRyeVdhc0NhcHR1cmVkKG1fc2Vzc2lvbklELCB2YWx1ZSwg
W3Byb2Nlc3NQb29sLCBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29w
eVJlZigpXSB7IH0pOwogfQogCiB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6Omhhc1N0b3JhZ2VBY2Nl
c3NGb3JGcmFtZUhhbmRsZXIoY29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwgY29uc3QgU3Ry
aW5nJiBmaXJzdFBhcnR5RG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBoYXNBY2Nlc3MpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQpAQCAtMjAyMSwxMCArMjAwNSw4IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6c2V0VGlt
ZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbihTZWNvbmRzIHNlY29uZHMsIENvbXBsZXRpb25ICiAKICAg
ICBhdXRvIGNhbGxiYWNrQWdncmVnYXRvciA9IENhbGxiYWNrQWdncmVnYXRvcjo6Y3JlYXRlKFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAKLSAgICBmb3IgKGF1dG8mIHByb2Nlc3NQ
b29sIDogcHJvY2Vzc1Bvb2xzKCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIG5ldHdvcmtQcm9jZXNz
ID0gcHJvY2Vzc1Bvb2wtPm5ldHdvcmtQcm9jZXNzKCkpCi0gICAgICAgICAgICBuZXR3b3JrUHJv
Y2Vzcy0+c2V0VGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbihtX3Nlc3Npb25JRCwgc2Vjb25kcywg
W2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7
Ci0gICAgfQorICAgIGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBwcm9jZXNzUG9vbHMoKSkKKyAg
ICAgICAgcHJvY2Vzc1Bvb2wtPmVuc3VyZU5ldHdvcmtQcm9jZXNzKCkuc2V0VGltZVRvTGl2ZVVz
ZXJJbnRlcmFjdGlvbihtX3Nlc3Npb25JRCwgc2Vjb25kcywgW2NhbGxiYWNrQWdncmVnYXRvciA9
IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CiB9CiAKIHZvaWQgV2Vic2l0ZURh
dGFTdG9yZTo6bG9nVXNlckludGVyYWN0aW9uKGNvbnN0IFVSTCYgdXJsLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC0yMTQ1LDEwICsyMTI3LDggQEAg
dm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291
cmNlcyhTZWNvbmRzIHNlY29uZHMsIEMKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNU
SUNTKQogICAgIGF1dG8gY2FsbGJhY2tBZ2dyZWdhdG9yID0gQ2FsbGJhY2tBZ2dyZWdhdG9yOjpj
cmVhdGUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgIAotICAgIGZvciAoYXV0byYg
cHJvY2Vzc1Bvb2wgOiBwcm9jZXNzUG9vbHMoKSkgewotICAgICAgICBpZiAoYXV0byogbmV0d29y
a1Byb2Nlc3MgPSBwcm9jZXNzUG9vbC0+bmV0d29ya1Byb2Nlc3MoKSkKLSAgICAgICAgICAgIG5l
dHdvcmtQcm9jZXNzLT5zZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhtX3Nl
c3Npb25JRCwgc2Vjb25kcywgW2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRv
ci5jb3B5UmVmKCldIHsgfSk7Ci0gICAgfQorICAgIGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBw
cm9jZXNzUG9vbHMoKSkKKyAgICAgICAgcHJvY2Vzc1Bvb2wtPmVuc3VyZU5ldHdvcmtQcm9jZXNz
KCkuc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMobV9zZXNzaW9uSUQsIHNl
Y29uZHMsIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigp
XSB7IH0pOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oc2Vjb25kcyk7CiAgICAgY29tcGxldGlv
bkhhbmRsZXIoKTsKQEAgLTIzODAsMTAgKzIzNjAsOCBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6
OnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUoYm9vbCBlbmFibGVkLCBDb21wbGV0
aQogICAgIAogICAgIGF1dG8gY2FsbGJhY2tBZ2dyZWdhdG9yID0gQ2FsbGJhY2tBZ2dyZWdhdG9y
OjpjcmVhdGUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgIAotICAgIGZvciAoYXV0
byYgcHJvY2Vzc1Bvb2wgOiBwcm9jZXNzUG9vbHMoKSkgewotICAgICAgICBpZiAoYXV0byogcHJv
Y2VzcyA9IHByb2Nlc3NQb29sLT5uZXR3b3JrUHJvY2VzcygpKQotICAgICAgICAgICAgcHJvY2Vz
cy0+c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZShtX3Nlc3Npb25JRCwgZW5hYmxl
ZCwgW2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsg
fSk7Ci0gICAgfQorICAgIGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBwcm9jZXNzUG9vbHMoKSkK
KyAgICAgICAgcHJvY2Vzc1Bvb2wtPmVuc3VyZU5ldHdvcmtQcm9jZXNzKCkuc2V0UmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RlYnVnTW9kZShtX3Nlc3Npb25JRCwgZW5hYmxlZCwgW2NhbGxiYWNrQWdn
cmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CiAjZWxzZQogICAg
IFVOVVNFRF9QQVJBTShlbmFibGVkKTsKICAgICBVTlVTRURfUEFSQU0oY29tcGxldGlvbkhhbmRs
ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFTdG9yZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFTdG9yZS5oCmluZGV4IGM2NTA1MjhhMWFiZjBmY2RiOTZkNWI5MTYxMGIyZmFiNTEx
NjE0Y2MuLmU1MjhmNmRkMzZjODcxNjQzZDdmMmFiMDFmM2YyMzEwNWUyY2YxNzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0
b3JlLmgKQEAgLTcyLDggKzcyLDggQEAgc3RydWN0IFdlYnNpdGVEYXRhUmVjb3JkOwogc3RydWN0
IFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzOwogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURf
U1RBVElTVElDUykKLWVudW0gY2xhc3MgU2hvdWxkR3JhbmRmYXRoZXI7Ci1lbnVtIGNsYXNzIFN0
b3JhZ2VBY2Nlc3NTdGF0dXMgOiB1bnNpZ25lZDsKK2VudW0gY2xhc3MgU2hvdWxkR3JhbmRmYXRo
ZXJTdGF0aXN0aWNzIDogYm9vbDsKK2VudW0gY2xhc3MgU3RvcmFnZUFjY2Vzc1N0YXR1cyA6IHVp
bnQ4X3Q7CiBlbnVtIGNsYXNzIFN0b3JhZ2VBY2Nlc3NQcm9tcHRTdGF0dXM7CiAjZW5kaWYKIApA
QCAtMTQzLDggKzE0Myw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbW92ZVByZXZhbGVudERvbWFp
bnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnMpOwogICAgIHZvaWQgcmVzZXRQYXJhbWV0
ZXJzVG9EZWZhdWx0VmFsdWVzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9p
ZCBzY2hlZHVsZUNvb2tpZUJsb2NraW5nVXBkYXRlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik7Ci0gICAgdm9pZCBzY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFdhbGxUaW1l
IG1vZGlmaWVkU2luY2UsIFNob3VsZEdyYW5kZmF0aGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOwotICAgIHZvaWQgc2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChTaG91
bGRHcmFuZGZhdGhlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIHNj
aGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSwg
U2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OworICAgIHZvaWQgc2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChTaG91bGRHcmFu
ZGZhdGhlclN0YXRpc3RpY3MsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9p
ZCBzY2hlZHVsZVN0YXRpc3RpY3NBbmREYXRhUmVjb3Jkc1Byb2Nlc3NpbmcoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHN1Ym1pdFRlbGVtZXRyeSgpOwogICAgIHZvaWQg
c2V0Q2FjaGVNYXhBZ2VDYXAoU2Vjb25kcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IDk1OWUyODM2NGJlNjg5ZjE1N2QxNjYyZDUwMjg4ZmNiYzZlZGE5MDYuLmEwYjcwY2E0NzhkNWUz
MzQxYTM4MzU5Y2JmMjRkOThkZTQ0MDkxODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTA5Miw2ICsxMDkyLDggQEAKIAkJNzYyQjc0
OEQxMjBCQzc1QzAwODE5MzM5IC8qIFdLUHJlZmVyZW5jZXNSZWZQcml2YXRlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NjJCNzQ4NDEyMEJCQTJEMDA4
MTkzMzkgLyogV0tQcmVmZXJlbmNlc1JlZlByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QTFFMkE4NTFFRUZFODkyMDAzN0EwRTAgLyog
QVBJTm90aWZpY2F0aW9uUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdBMUUyQTg0MUVFRkU4OEEwMDM3QTBFMCAvKiBBUElOb3RpZmljYXRp
b25Qcm92aWRlci5oICovOyB9OwogCQk3QTNBQ0UxQjFFRUVGNzlCMDBBODY0QTQgLyogQVBJSW5q
ZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3QTNBQ0UxQTFFRUVGNzhDMDBBODY0QTQgLyogQVBJSW5qZWN0
ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmggKi87IH07CisJCTdBM0ZFQ0EyMjFGN0MwOTcwMEYy
NjdDRCAvKiBTdG9yYWdlQWNjZXNzU3RhdHVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3QTNGRUNBMTIxRjdDMDk3MDBGMjY3Q0QgLyogU3RvcmFnZUFj
Y2Vzc1N0YXR1cy5oICovOyB9OworCQk3QTQxRTlGQjIxRjgxREFEMDBCODhDREIgLyogU2hvdWxk
R3JhbmRmYXRoZXJTdGF0aXN0aWNzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3QTQxRTlGQTIxRjgxREFDMDBCODhDREIgLyogU2hvdWxkR3JhbmRmYXRo
ZXJTdGF0aXN0aWNzLmggKi87IH07CiAJCTdBNzcyQzhEMURERDRBMjUwMDBGMzRGMSAvKiBjb20u
YXBwbGUuV2ViS2l0LnBsdWdpbi1jb21tb24uc2IgaW4gQ29weSBQbHVnLWluIFNhbmRib3ggUHJv
ZmlsZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0ExNTA2NzIxREQ1NjI5
ODAwMUY0QjU4IC8qIGNvbS5hcHBsZS5XZWJLaXQucGx1Z2luLWNvbW1vbi5zYiAqLzsgfTsKIAkJ
N0E3OTFFRkExQzdDRkNGMTAwQzRDNTJCIC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3QTc5MUVGOTFDN0NGQjM3MDBDNEM1MkIgLyogV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJN0E3OTFFRkIxQzdDRkQw
MTAwQzRDNTJCIC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZU1lc3NhZ2VzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTc5MUVGODFDN0NG
QjEwMDBDNEM1MkIgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlTWVzc2FnZXMuaCAq
LzsgfTsKQEAgLTM1MTEsNiArMzUxMyw4IEBACiAJCTdBMTUwNjcyMURENTYyOTgwMDFGNEI1OCAv
KiBjb20uYXBwbGUuV2ViS2l0LnBsdWdpbi1jb21tb24uc2IgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1l
ID0gImNvbS5hcHBsZS5XZWJLaXQucGx1Z2luLWNvbW1vbi5zYiI7IHBhdGggPSAiRGVyaXZlZFNv
dXJjZXMvV2ViS2l0Mi9jb20uYXBwbGUuV2ViS2l0LnBsdWdpbi1jb21tb24uc2IiOyBzb3VyY2VU
cmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQk3QTFFMkE4NDFFRUZFODhBMDAzN0EwRTAg
LyogQVBJTm90aWZpY2F0aW9uUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQVBJTm90aWZpY2F0aW9uUHJvdmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJN0EzQUNFMUExRUVFRjc4QzAwQTg2NEE0IC8qIEFQSUluamVjdGVkQnVuZGxlUGFnZUxv
YWRlckNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBUElJbmplY3Rl
ZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
N0EzRkVDQTEyMUY3QzA5NzAwRjI2N0NEIC8qIFN0b3JhZ2VBY2Nlc3NTdGF0dXMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gU3RvcmFnZUFjY2Vzc1N0YXR1cy5oOyBwYXRoID0g
Q2xhc3NpZmllci9TdG9yYWdlQWNjZXNzU3RhdHVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTdBNDFFOUZBMjFGODFEQUMwMEI4OENEQiAvKiBTaG91bGRHcmFuZGZhdGhlclN0YXRp
c3RpY3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gU2hvdWxkR3JhbmRmYXRo
ZXJTdGF0aXN0aWNzLmg7IHBhdGggPSBDbGFzc2lmaWVyL1Nob3VsZEdyYW5kZmF0aGVyU3RhdGlz
dGljcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QTVFMzk0OTFENUJEOEE3MDBC
NEI3Q0UgLyogY29tLm1hY3JvbWVkaWEuRmxhc2ggUGxheWVyIEVTUi5wbHVnaW4uc2IgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gImNvbS5tYWNyb21lZGlhLkZsYXNoIFBsYXllciBFU1IucGx1Z2lu
LnNiIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0E3OTFFRjgxQzdDRkIxMDAwQzRD
NTJCIC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZU1lc3NhZ2VzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZU1l
c3NhZ2VzLmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZU1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7
IH07CiAJCTdBNzkxRUY5MUM3Q0ZCMzcwMEM0QzUyQiAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmVNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlTWVzc2FnZVJlY2VpdmVyLmNw
cDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJ
UjsgfTsKQEAgLTY4OTUsNiArNjg5OSw4IEBACiAJCQkJN0FGQkQzNjUyMUU1MUJBQjAwNURCQUNC
IC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oICovLAogCQkJCTdBRkJEMzY5
MjFFNTQyRTgwMDVEQkFDQiAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3Jh
Z2UuY3BwICovLAogCQkJCTdBRkJEMzY4MjFFNTQyRTgwMDVEQkFDQiAvKiBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UuaCAqLywKKwkJCQk3QTQxRTlGQTIxRjgxREFDMDBC
ODhDREIgLyogU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzLmggKi8sCisJCQkJN0EzRkVDQTEy
MUY3QzA5NzAwRjI2N0NEIC8qIFN0b3JhZ2VBY2Nlc3NTdGF0dXMuaCAqLywKIAkJCQk3QTg0M0Ex
QTIxRTQxRkIyMDBERUY2NjMgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcCAq
LywKIAkJCQk3QUZCRDM2MjIxRTUwRjM5MDA1REJBQ0IgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlLmggKi8sCiAJCQkJN0FGQkQzNkMyMUU1NDU0NDAwNURCQUNCIC8qIFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0cnkuY3BwICovLApAQCAtOTI5OSwxMSArOTMwNSwxMyBA
QAogCQkJCTgzMTNGN0VFMUY3REFFMDgwMEI5NDRFQiAvKiBTaGFyZWRTdHJpbmdIYXNoVGFibGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTgzRjk2NDRFMUZBMEY3NkUwMEM0Nzc1MCAvKiBTaGFyZWRT
dHJpbmdIYXNoVGFibGVSZWFkT25seS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUQ2N0IzMzkyMTJF
MUY2MTAwRkFBNzg2IC8qIFNoYXJlU2hlZXRDYWxsYmFja0lELmggaW4gSGVhZGVycyAqLywKKwkJ
CQk3QTQxRTlGQjIxRjgxREFEMDBCODhDREIgLyogU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNz
LmggaW4gSGVhZGVycyAqLywKIAkJCQk5OTUyMjZENjIwN0QxODQ2MDBGNzg0MjAgLyogU2ltdWxh
dGVkSW5wdXREaXNwYXRjaGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkyREFGMDZENjE4QkQxQTQ3
MDA4MUNFQjEgLyogU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMkRFNjk0M0UxOEJEMkE2ODAwNUMxNUU1IC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRy
b2xsZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTI3MkIyOEIxNDA2OTg1RDAwOTZB
NUQwIC8qIFN0YXRpc3RpY3NEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTRCREVEMzE2Qzk4
RUREMDBFNEUyNUUgLyogU3RhdGlzdGljc1JlcXVlc3QuaCBpbiBIZWFkZXJzICovLAorCQkJCTdB
M0ZFQ0EyMjFGN0MwOTcwMEYyNjdDRCAvKiBTdG9yYWdlQWNjZXNzU3RhdHVzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxQUQzMzA2RjE2QjFEOTkxMDA0RjYwRTcgLyogU3RvcmFnZUFyZWFJbXBsLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxQUNFQ0QyNTE3MTYyREIxMDAxRkM5RUYgLyogU3RvcmFnZUFy
ZWFNYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMzM0REVFMTZERThGODgwMDZBOEUzOCAvKiBT
dG9yYWdlQXJlYU1hcE1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKQEAgLTEwNjk5LDYgKzEwNzA3
LDcgQEAKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKIAkJ
CQkyRDkyQTc4NDIxMkI2QUIxMDBGNDkzRkQgLyogQWN0aXZpdHlBc3NlcnRpb24uY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJNUNFNDNCNzIyMUY3Q0MwMjAwOTNCQ0M1IC8qIEFQSUhUVFBDb29raWVT
dG9yZUNvY29hLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQ5MkE3N0IyMTJCNkE3MTAwRjQ5M0ZE
IC8qIEFyZ3VtZW50Q29kZXJzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJERUIxRDJFMjEyNzQ3
MzYwMDkzMzkwNiAvKiBBcmd1bWVudENvZGVyc0NGLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJE
OTJBNzdDMjEyQjZBNzEwMEY0OTNGRCAvKiBBdHRhY2htZW50LmNwcCBpbiBTb3VyY2VzICovLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>359906</attachid>
            <date>2019-01-23 11:13:58 -0800</date>
            <delta_ts>2019-01-23 11:40:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-193659-20190123111357.patch</filename>
            <type>text/plain</type>
            <size>109466</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQwMzQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDhiMWQ2YWZiNzJmYjFiNzVm
YjViYmY0MDE4ZDJlNWFiMzk4NTZjZWYuLjFmYTk1NmY4YWUxZDFkYzU0ZDI4YzE2OTRkMjgxMDNk
MWRhZTI4NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTYgQEAKKzIwMTktMDEtMjMgIEJyZW50IEZ1
bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CisKKyAgICAgICAgU3dpdGNoIE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiBwb3J0aW9ucyBvZiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIHRvIEFzeW5jIG1l
c3NhZ2UgcGFzc2luZyBzdHlsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTkzNjU5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80NzQzMzI5MD4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDaGFuZ2UgdGhl
IGltcGxlbWVudGF0aW9ucyBvZiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIGNvZGUgaW4gTmV0d29y
a1N0b3JhZ2VTZXNzaW9uIHRvIHVzZSB0aGUKKyAgICAgICAgJ3NlbmRXaXRoQXN5bmNSZXBseScg
c28gdGhhdCBtb3JlIG9mIHRoZSBjb2RlIGlzIGF1dG9nZW5lcmF0ZWQuIFRoaXMgc2hvdWxkIG1h
a2UgdGVzdCBydW5zIG1vcmUKKyAgICAgICAgY29uc2lzdGVudCwgYW5kIHNob3VsZCByZWR1Y2Ug
dGhlIHBvc3NpYmlsaXR5IG9mIGJvb2trZWVwaW5nIGVycm9ycyBpbiB0aGUgbWVzc2FnZSBoYW5k
bGluZworICAgICAgICBpbXBsZW1lbnRhdGlvbnMuCisKKyAgICAgICAgRml4IHRoZSBpbXBsZW1l
bnRhdGlvbiBvZiBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpjbGVhckNhbGxiYWNrU3RhdGVzIHRvIHJl
bW92ZSB0aGUgbWFudWFsbHkgY29uc3RydWN0ZWQKKyAgICAgICAgKGFuZCBpbmNvbXBsZXRlKSBt
ZXNzYWdlIGNhbGxiYWNrcy4gVGhlc2UgZXJyb3JzIGFyZSBhIGJpZyByZWFzb24gdG8gbW92ZSB0
byB0aGUgYXV0by1nZW5lcmF0ZWQKKyAgICAgICAgJ3NlbmRXaXRoQXN5bmNSZXBseScgaW1wbGVt
ZW50YXRvaW4uIERpdHRvIGZvciBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRDbG9zZS4KKworICAg
ICAgICBUaGlzIHBhdGNoIGFsc28gbW92ZXMgYW4gaW5pdGlhbGl6YXRvbiBjYWxsIChXZWJzaXRl
RGF0YVN0b3JlOjpkaWRDcmVhdGVOZXR3b3JrUHJvY2VzcykgZnJvbQorICAgICAgICAnZW5zdXJl
TmV0d29ya1Byb2Nlc3MnIHRvICdwcm9jZXNzRGlkRmluaXNoTGF1bmNoaW5nJy4gSW4gY3VycmVu
dCBjb2RlLCB0aGUgY2FsbCBoYXBwZW5zIGJlZm9yZQorICAgICAgICBhIGNvbm5lY3Rpb24gaXMg
ZXN0YWJsaXNoZWQgdG8gdGhlIG5ldHdvcmsgcHJvY2VzcywgY2F1c2luZyBpbml0aWFsaXphdGlv
biBtZXNzYWdlcyB0byBnZXQgZHJvcHBlZAorICAgICAgICBsZWFkaW5nIHRvIHRlc3Qgc3lzdGVt
IGZsYWtpbmVzcy4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9DbGFzc2lmaWVyL1Nob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljcy5oOiBBZGRlZC4KKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1N0b3JhZ2VBY2Nlc3NTdGF0dXMuaDogQWRk
ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6OnNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQpOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6dXBkYXRlUHJldmFsZW50RG9tYWluc1RvQmxv
Y2tDb29raWVzRm9yKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnNldEFnZUNh
cEZvckNsaWVudFNpZGVDb29raWVzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6
OnNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUHJvY2Vzczo6aGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Byb2Nlc3M6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Byb2Nlc3M6OmdyYW50U3RvcmFnZUFjY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtQcm9jZXNzOjpyZW1vdmVBbGxTdG9yYWdlQWNjZXNzKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Byb2Nlc3M6OnNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2Vz
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnJlc2V0Q2FjaGVNYXhBZ2VDYXBG
b3JQcmV2YWxlbnRSZXNvdXJjZXMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6
ZGVsZXRlV2Vic2l0ZURhdGEpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMu
aW46CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHA6
CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFuZFBl
cnNpc3RlbnRTdG9yZSk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzQ2xl
YXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZU1vZGlmaWVkU2luY2VIb3Vycyk6CisgICAgICAg
IChXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OmNsZWFyQ2FsbGJhY2tTdGF0ZXMpOiBS
ZW1vdmUgaW5jb21wbGV0ZSBjbGVhbi11cCBjb2RlIHRoYXQKKyAgICAgICAgaXMgbm93IGF1dG9n
ZW5lcmF0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZENsb3Nl
KTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OnVwZGF0ZVBy
ZXZhbGVudERvbWFpbnNUb0Jsb2NrQ29va2llc0Zvcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm9jZXNzUHJveHk6OnNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRBZ2VDYXBGb3JDbGllbnRTaWRl
Q29va2llcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6Omhhc1N0b3Jh
Z2VBY2Nlc3NGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6
OnJlcXVlc3RTdG9yYWdlQWNjZXNzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQ
cm94eTo6Z3JhbnRTdG9yYWdlQWNjZXNzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3NQcm94eTo6cmVtb3ZlQWxsU3RvcmFnZUFjY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm9jZXNzUHJveHk6OnNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0Q2FjaGVNYXhBZ2VDYXAp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZXNldENhY2hlTWF4QWdl
Q2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3NQcm94eTo6ZGlkVXBkYXRlQmxvY2tDb29raWVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkU2V0QWdlQ2FwRm9yQ2xpZW50U2lkZUNvb2tpZXMp
OiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRVcGRh
dGVSdW50aW1lU2V0dGluZ3MpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzc1Byb3h5OjpzdG9yYWdlQWNjZXNzUmVxdWVzdFJlc3VsdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OnN0b3JhZ2VBY2Nlc3NPcGVyYXRpb25SZXN1
bHQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRS
ZW1vdmVBbGxTdG9yYWdlQWNjZXNzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3NQcm94eTo6ZGlkU2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMp
OiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1l
c3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBy
b2Nlc3NQb29sOjplbnN1cmVOZXR3b3JrUHJvY2Vzcyk6IE1vdmUgV2Vic2l0ZURhdGFTdG9yZSAn
ZGlkQ3JlYXRlTmV0d29ya1Byb2Nlc3MnCisgICAgICAgIHRvICdwcm9jZXNzRGlkRmluaXNoTGF1
bmNoaW5nJy4gQ3VycmVudGx5IHRoZSBjYWxsIGhhcHBlbnMgYmVmb3JlIGEgY29ubmVjdGlvbiBp
cyBlc3RhYmxpc2hlZCwKKyAgICAgICAgY2F1c2luZyBpbml0aWFsaXphdGlvbiBtZXNzYWdlcyB0
byBnZXQgZHJvcHBlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnByb2Nlc3NE
aWRGaW5pc2hMYXVuY2hpbmcpOiBEaXR0by4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURh
dGEvV2Vic2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3Rv
cmU6OnJlbW92ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpzZXRN
YXhTdGF0aXN0aWNzRW50cmllcyk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6
OnNldFBydW5lRW50cmllc0Rvd25Ubyk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3Rv
cmU6OnNldEdyYW5kZmF0aGVyaW5nVGltZSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRh
U3RvcmU6OnNldENhY2hlTWF4QWdlQ2FwKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFT
dG9yZTo6c2V0TWluaW11bVRpbWVCZXR3ZWVuRGF0YVJlY29yZHNSZW1vdmFsKToKKyAgICAgICAg
KFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6c2V0UHJldmFsZW50UmVzb3VyY2UpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpzZXRTaG91bGRDbGFzc2lmeVJlc291cmNlc0Jl
Zm9yZURhdGFSZWNvcmRzUmVtb3ZhbCk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3Rv
cmU6OnNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJzaXRlRGF0YVN0b3JlOjpzZXRBZ2VDYXBGb3JDbGllbnRTaWRlQ29va2llcyk6CisgICAg
ICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnNldE5vdGlmeVBhZ2VzV2hlbkRhdGFSZWNv
cmRzV2VyZVNjYW5uZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpzZXRO
b3RpZnlQYWdlc1doZW5UZWxlbWV0cnlXYXNDYXB0dXJlZCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YnNpdGVEYXRhU3RvcmU6OnNldFRpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24pOgorICAgICAgICAo
V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJl
c291cmNlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnNldFJlc291cmNl
TG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9XZWJzaXRlRGF0YVN0b3JlLmg6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisKIDIwMTktMDEtMjMgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5j
b20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjI0MDI0Myk6IENyYXNoVHJhY2VyOiBXZWJLaXRU
ZXN0UnVubmVyQXBwIGF0IGNvbS5hcHBsZS5XZWJLaXQ6IFdlYktpdDo6V2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlOjpzZW5kRGlhZ25vc3RpY01lc3NhZ2VXaXRoVmFsdWUgY29uc3QgKyAz
MgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jl
c291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNw
cAppbmRleCA3Njg1YjZlMzNjNjJmMWI4ZTk0ZDM4NjU3MTliZjE1Y2JiYTdmMGQ2Li45NzQ0ZDQ4
MzQ1YzE4NTNmOGFjNjA1MzcxODE0YzdhYmUzNTJlYTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9y
eVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIv
UmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNwcApAQCAtMzMsNiArMzMsNyBAQAog
I2luY2x1ZGUgIlBsdWdpblByb2Nlc3NNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiUGx1Z2luUHJvY2Vz
c1Byb3h5LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9y
YWdlLmgiCisjaW5jbHVkZSAiU3RvcmFnZUFjY2Vzc1N0YXR1cy5oIgogI2luY2x1ZGUgIldlYlBy
b2Nlc3NQcm94eS5oIgogI2luY2x1ZGUgIldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0
cnkuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0
aWNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvU2hvdWxkR3Jh
bmRmYXRoZXJTdGF0aXN0aWNzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDJmODQ2M2Q0Zjg0ZTFmZWVjMmFkNWEx
MWFlYzAxNGIwNmUzZmFlMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9TaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3MuaApAQCAtMCww
ICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKK25hbWVzcGFjZSBXZWJLaXQg
eworCitlbnVtIGNsYXNzIFNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljcyA6IGJvb2wgeworICAg
IE5vLAorICAgIFllcywKK307CisgICAgCisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1N0b3JhZ2VBY2Nl
c3NTdGF0dXMuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9TdG9y
YWdlQWNjZXNzU3RhdHVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzBiNmEyOTMzNjJiZmU0M2QxM2E0NTNhYzMx
NjBjZmI3M2VjOGEzNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvQ2xhc3NpZmllci9TdG9yYWdlQWNjZXNzU3RhdHVzLmgKQEAgLTAsMCArMSw1MSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworZW51bSBj
bGFzcyBTdG9yYWdlQWNjZXNzU3RhdHVzIDogdWludDhfdCB7CisgICAgQ2Fubm90UmVxdWVzdEFj
Y2VzcywKKyAgICBSZXF1aXJlc1VzZXJQcm9tcHQsCisgICAgSGFzQWNjZXNzCit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKKworbmFtZXNwYWNlIFdURiB7CisgICAgCit0ZW1wbGF0ZTw+IHN0
cnVjdCBFbnVtVHJhaXRzPFdlYktpdDo6U3RvcmFnZUFjY2Vzc1N0YXR1cz4geworICAgIHVzaW5n
IHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgV2ViS2l0OjpTdG9yYWdlQWNjZXNzU3RhdHVzLAor
ICAgIFdlYktpdDo6U3RvcmFnZUFjY2Vzc1N0YXR1czo6Q2Fubm90UmVxdWVzdEFjY2VzcywKKyAg
ICBXZWJLaXQ6OlN0b3JhZ2VBY2Nlc3NTdGF0dXM6OlJlcXVpcmVzVXNlclByb21wdCwKKyAgICBX
ZWJLaXQ6OlN0b3JhZ2VBY2Nlc3NTdGF0dXM6Okhhc0FjY2VzcworICAgID47Cit9OworICAgIAor
fSAvLyBuYW1lc3BhY2UgV1RGCisKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlLmNwcAppbmRleCA4ZTc3MzVhYmY3NzlmZmRkZThlYTc1MDJlYmEzZDVlMGMw
MTY5MGE4Li5lMmM5NzU0MGNjOGQyNGQzNWQ4NDQ5MDJmMjhhYmJhMjUwYTc4MDY2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcApAQCAtMzMsNiAr
MzMsOCBAQAogI2luY2x1ZGUgIk5ldHdvcmtTZXNzaW9uLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VM
b2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1BlcnNpc3RlbnRTdG9yYWdlLmgiCisjaW5jbHVkZSAiU2hvdWxkR3JhbmRmYXRoZXJTdGF0
aXN0aWNzLmgiCisjaW5jbHVkZSAiU3RvcmFnZUFjY2Vzc1N0YXR1cy5oIgogI2luY2x1ZGUgIldl
YkZyYW1lUHJveHkuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKICNpbmNsdWRlICJXZWJQ
cm9jZXNzTWVzc2FnZXMuaCIKQEAgLTYzOSw3ICs2NDEsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZTo6c2V0VmVyeVByZXZhbGVudFJlc291cmNlKGNvbnN0IFN0cmluZyYg
cHJpbQogICAgIH0pOwogfQogICAgIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6OmR1bXBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29u
c3QgU3RyaW5nJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZTo6ZHVtcFJlc291cmNlTG9hZFN0YXRpc3RpY3MoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChTdHJpbmcpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChSdW5M
b29wOjppc01haW4oKSk7CiAKQEAgLTEwMTAsNyArMTAxMiw3IEBAIHZvaWQgV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlOjpzY2hlZHVsZUNsZWFyQmxvY2tpbmdTdGF0ZUZvckRvbWFpbnMo
Y29uc3QKICAgICB9KTsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6
OnNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoU2hvdWxkR3JhbmRmYXRoZXIgc2hv
dWxkR3JhbmRmYXRoZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzY2hlZHVsZUNsZWFy
SW5NZW1vcnlBbmRQZXJzaXN0ZW50KFNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljcyBzaG91bGRH
cmFuZGZhdGhlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAgICAgcG9zdFRhc2soW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgc2hvdWxkR3JhbmRmYXRoZXIsIGNvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CkBA
IC0xMDIzLDcgKzEwMjUsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6
c2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChTaG91bGRHcgogCiAgICAgICAgIGlm
IChtX21lbW9yeVN0b3JlKSB7CiAgICAgICAgICAgICBtX21lbW9yeVN0b3JlLT5jbGVhcihbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IHByb3RlY3RlZFRoaXMuY29weVJlZigpLCBzaG91bGRHcmFuZGZh
dGhlciwgY29tcGxldGlvbkhhbmRsZXJDYWxsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
Q2FsbGVyKV0gKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICAgICAgaWYgKHNob3VsZEdyYW5kZmF0
aGVyID09IFNob3VsZEdyYW5kZmF0aGVyOjpZZXMpIHsKKyAgICAgICAgICAgICAgICBpZiAoc2hv
dWxkR3JhbmRmYXRoZXIgPT0gU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzOjpZZXMpIHsKICAg
ICAgICAgICAgICAgICAgICAgaWYgKG1fbWVtb3J5U3RvcmUpCiAgICAgICAgICAgICAgICAgICAg
ICAgICBtX21lbW9yeVN0b3JlLT5ncmFuZGZhdGhlckV4aXN0aW5nV2Vic2l0ZURhdGEoY29tcGxl
dGlvbkhhbmRsZXJDYWxsZXIucmVsZWFzZSgpKTsKICAgICAgICAgICAgICAgICAgICAgZWxzZQpA
QCAtMTAzMSwxMyArMTAzMywxMyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZTo6c2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChTaG91bGRHcgogICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIH0pOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
aWYgKHNob3VsZEdyYW5kZmF0aGVyID09IFNob3VsZEdyYW5kZmF0aGVyOjpZZXMpCisgICAgICAg
ICAgICBpZiAoc2hvdWxkR3JhbmRmYXRoZXIgPT0gU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNz
OjpZZXMpCiAgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0coUmVzb3VyY2VMb2FkU3RhdGlzdGlj
cywgIldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2NoZWR1bGVDbGVhckluTWVtb3J5
QW5kUGVyc2lzdGVudCBCZWZvcmUgYmVpbmcgY2xlYXJlZCwgbV9tZW1vcnlTdG9yZSBpcyBudWxs
IHdoZW4gdHJ5aW5nIHRvIGdyYW5kZmF0aGVyIGRhdGEuIik7CiAgICAgICAgIH0KICAgICB9KTsK
IH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNjaGVkdWxlQ2xlYXJJ
bk1lbW9yeUFuZFBlcnNpc3RlbnQoV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSwgU2hvdWxkR3JhbmRm
YXRoZXIgc2hvdWxkR3JhbmRmYXRoZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjYWxs
YmFjaykKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzY2hlZHVsZUNsZWFy
SW5NZW1vcnlBbmRQZXJzaXN0ZW50KFdhbGxUaW1lIG1vZGlmaWVkU2luY2UsIFNob3VsZEdyYW5k
ZmF0aGVyU3RhdGlzdGljcyBzaG91bGRHcmFuZGZhdGhlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmIGNhbGxiYWNrKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Q2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAppbmRleCAyNTFiMzky
NWJhYjVhYzQwMmE4Y2U0ZDdmOTQyZTEwMjZiNDZmNzZjLi5iNjBhYWFjODkwZWYzMDM3ZTJmYWM3
ZjE2Yjg3ZWJkODA0ZGQ4NGU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZS5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURf
U1RBVElTVElDUykKIAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJTdG9yYWdl
QWNjZXNzU3RhdHVzLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFUeXBlLmgiCiAjaW5jbHVkZSA8
d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KQEAgLTU1
LDE3ICs1Niw3IEBAIGNsYXNzIFJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFn
ZTsKIGNsYXNzIFdlYkZyYW1lUHJveHk7CiBjbGFzcyBXZWJQcm9jZXNzUHJveHk7CiBjbGFzcyBX
ZWJzaXRlRGF0YVN0b3JlOwotCi1lbnVtIGNsYXNzIFN0b3JhZ2VBY2Nlc3NTdGF0dXMgOiB1bnNp
Z25lZCB7Ci0gICAgQ2Fubm90UmVxdWVzdEFjY2VzcywKLSAgICBSZXF1aXJlc1VzZXJQcm9tcHQs
Ci0gICAgSGFzQWNjZXNzCi19OwotCi1lbnVtIGNsYXNzIFNob3VsZEdyYW5kZmF0aGVyIHsKLSAg
ICBObywKLSAgICBZZXMsCi19OworZW51bSBjbGFzcyBTaG91bGRHcmFuZGZhdGhlclN0YXRpc3Rp
Y3MgOiBib29sOwogCiBjbGFzcyBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUgZmluYWwg
OiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlLCBXVEY6OkRlc3RydWN0aW9uVGhyZWFkOjpNYWluPiwgcHVibGljIElQQzo6TWVzc2FnZVJl
Y2VpdmVyIHsKIHB1YmxpYzoKQEAgLTExNiw3ICsxMDcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
ZXRQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0VmVyeVByZXZhbGVudFJlc291cmNl
KGNvbnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRW
ZXJ5UHJldmFsZW50UmVzb3VyY2UoY29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lkIGR1bXBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYpOworICAgIHZvaWQg
ZHVtcFJlc291cmNlTG9hZFN0YXRpc3RpY3MoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcp
PiYmKTsKICAgICB2b2lkIGlzUHJldmFsZW50UmVzb3VyY2UoY29uc3QgVVJMJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBpc1ByZXZhbGVudFJlc291cmNlKGNv
bnN0IFN0cmluZyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIHZvaWQg
aXNWZXJ5UHJldmFsZW50UmVzb3VyY2UoY29uc3QgVVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sKT4mJik7CkBAIC0xNTUsOCArMTQ2LDggQEAgcHVibGljOgogICAgIHZvaWQgc2NoZWR1
bGVTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHNQcm9jZXNzaW5nKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJik7CiAgICAgdm9pZCBzdWJtaXRUZWxlbWV0cnkoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKICAgICB2b2lkIHVwZGF0ZVByZXZhbGVudERvbWFpbnNUb0Jsb2NrQ29va2llc0Zv
cihjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvQmxvY2spOwotICAgIHZvaWQgc2NoZWR1
bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChTaG91bGRHcmFuZGZhdGhlciwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lkIHNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBl
cnNpc3RlbnQoV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSwgU2hvdWxkR3JhbmRmYXRoZXIsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBzY2hlZHVsZUNsZWFySW5NZW1vcnlB
bmRQZXJzaXN0ZW50KFNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljcywgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIHNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3Rl
bnQoV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSwgU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCiAgICAgdm9pZCBzZXRUaW1lVG9MaXZlVXNl
ckludGVyYWN0aW9uKFNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAg
dm9pZCBzZXRNaW5pbXVtVGltZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwoU2Vjb25kcywgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggNjA3MjAxMTI5YmZmMDcyNmQ1ZTQ1YTUzYmM2
ZmMxMzFhZmJmY2Q0Mi4uY2M4ODFjOWJmMTc2Mjc3Zjg1N2YyOTdjYmFkZWM4ZTBiNjM2NTI5NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAK
QEAgLTQ5LDcgKzQ5LDkgQEAKICNpbmNsdWRlICJOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1l
dGVycy5oIgogI2luY2x1ZGUgIlByZWNvbm5lY3RUYXNrLmgiCiAjaW5jbHVkZSAiUmVtb3RlTmV0
d29ya2luZ0NvbnRleHQuaCIKKyNpbmNsdWRlICJTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3Mu
aCIKICNpbmNsdWRlICJTdGF0aXN0aWNzRGF0YS5oIgorI2luY2x1ZGUgIlN0b3JhZ2VBY2Nlc3NT
dGF0dXMuaCIKICNpbmNsdWRlICJXZWJDb29raWVNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiV2ViUGFn
ZVByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbE1lc3NhZ2VzLmgiCkBA
IC01OTUsMjMgKzU5NywyMiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjp3cml0ZUJsb2JUb0ZpbGVQ
YXRoKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHBhdGgsIFNhbgogfQogCiAjaWYgRU5B
QkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OmR1bXBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3Qg
Y29udGV4dElkKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6ZHVtcFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmlu
Zyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9u
ID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewotICAgICAgICBpZiAoYXV0byog
cmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzKCkpIHsKLSAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPmR1bXBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzKFt0aGlzLCBjb250ZXh0SWRdKGNvbnN0IFN0cmluZyYgZHVtcGVk
U3RhdGlzdGljcykgewotICAgICAgICAgICAgICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkt
PnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkRpZER1bXBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzKGR1bXBlZFN0YXRpc3RpY3MsIGNvbnRleHRJZCksIDApOwotICAgICAgICAgICAg
fSk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3Mg
PSBuZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQorICAgICAgICAgICAg
cmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+ZHVtcFJlc291cmNlTG9hZFN0YXRpc3RpY3MoV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcih7IH0pOwogICAgIH0gZWxzZQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6dXBkYXRlUHJldmFsZW50RG9tYWluc1RvQmxv
Y2tDb29raWVzRm9yKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGRvbWFpbnNUb0Jsb2NrLCB1aW50NjRfdCBjb250ZXh0SWQpCit2b2lkIE5ldHdvcmtQcm9j
ZXNzOjp1cGRhdGVQcmV2YWxlbnREb21haW5zVG9CbG9ja0Nvb2tpZXNGb3IoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvQmxvY2ssIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoYXV0
byogbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gc3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKICAg
ICAgICAgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5zZXRQcmV2YWxlbnREb21haW5zVG9CbG9ja0Nv
b2tpZXNGb3IoZG9tYWluc1RvQmxvY2spOwotICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkt
PnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkRpZFVwZGF0ZUJsb2NrQ29va2ll
cyhjb250ZXh0SWQpLCAwKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQogCiB2b2lkIE5l
dHdvcmtQcm9jZXNzOjppc0dyYW5kZmF0aGVyZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBj
b25zdCBTdHJpbmcmIHRhcmdldFByaW1hcnlEb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC02MTksNiArNjIwLDggQEAgdm9pZCBOZXR3
b3JrUHJvY2Vzczo6aXNHcmFuZGZhdGhlcmVkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29u
c3QgU3RyaW5nJiB0YXIKICAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3
b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CiAgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRT
dGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKICAg
ICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPmlzR3JhbmRmYXRoZXJlZCh0YXJnZXRQ
cmltYXJ5RG9tYWluLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKICAgICB9IGVsc2UKICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CkBAIC02MjgsNiArNjMxLDggQEAgdm9pZCBOZXR3
b3JrUHJvY2Vzczo6aXNQcmV2YWxlbnRSZXNvdXJjZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IGNvbnN0IFN0cmluZyYKICAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3
b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CiAgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRT
dGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKICAg
ICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPmlzUHJldmFsZW50UmVzb3VyY2UocmVz
b3VyY2VEb21haW4sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwogICAgIH0gZWxzZQogICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KQEAgLTYzNywxNSArNjQyLDE3IEBAIHZvaWQgTmV0
d29ya1Byb2Nlc3M6OmlzVmVyeVByZXZhbGVudFJlc291cmNlKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgY29uc3QgU3RyCiAgICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0
d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewogICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCiAg
ICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5pc1ZlcnlQcmV2YWxlbnRSZXNvdXJj
ZShyZXNvdXJjZURvbWFpbiwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICBl
bHNlCisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CiAgICAgfSBlbHNlCiAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpz
ZXRBZ2VDYXBGb3JDbGllbnRTaWRlQ29va2llcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9w
dGlvbmFsPFNlY29uZHM+IHNlY29uZHMsIHVpbnQ2NF90IGNvbnRleHRJZCkKK3ZvaWQgTmV0d29y
a1Byb2Nlc3M6OnNldEFnZUNhcEZvckNsaWVudFNpZGVDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgT3B0aW9uYWw8U2Vjb25kcz4gc2Vjb25kcywgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmIChhdXRvKiBuZXR3b3JrU3RvcmFn
ZVNlc3Npb24gPSBzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQogICAgICAgICBuZXR3b3JrU3Rv
cmFnZVNlc3Npb24tPnNldEFnZUNhcEZvckNsaWVudFNpZGVDb29raWVzKHNlY29uZHMpOwotICAg
IHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNz
UHJveHk6OkRpZFNldEFnZUNhcEZvckNsaWVudFNpZGVDb29raWVzKGNvbnRleHRJZCksIDApOwor
ICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldEdy
YW5kZmF0aGVyZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHJlc291
cmNlRG9tYWluLCBib29sIGlzR3JhbmRmYXRoZXJlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtNjUzLDYgKzY2MCw4IEBAIHZvaWQgTmV0d29ya1By
b2Nlc3M6OnNldEdyYW5kZmF0aGVyZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBT
dHJpbmcmIHJlCiAgICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nl
c3Npb24oc2Vzc2lvbklEKSkgewogICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlz
dGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCiAgICAgICAg
ICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5zZXRHcmFuZGZhdGhlcmVkKHJlc291cmNlRG9t
YWluLCBpc0dyYW5kZmF0aGVyZWQsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICB9IGVsc2UKICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CkBAIC02NjIsNiArNjcxLDggQEAgdm9pZCBO
ZXR3b3JrUHJvY2Vzczo6c2V0UHJldmFsZW50UmVzb3VyY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBjb25zdCBTdHJpbmcKICAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5u
ZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CiAgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxv
YWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkK
ICAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnNldFByZXZhbGVudFJlc291cmNl
KHJlc291cmNlRG9tYWluLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgfSBlbHNlCiAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQpAQCAtNjcxLDYgKzY4Miw4IEBAIHZvaWQgTmV0d29y
a1Byb2Nlc3M6OnNldFByZXZhbGVudFJlc291cmNlRm9yRGVidWdNb2RlKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwKICAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3Jr
U2Vzc2lvbihzZXNzaW9uSUQpKSB7CiAgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0
aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKICAgICAg
ICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnNldFByZXZhbGVudFJlc291cmNlRm9yRGVi
dWdNb2RlKHJlc291cmNlRG9tYWluLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgfSBlbHNlCiAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQpAQCAtNjgwLDYgKzY5Myw4IEBAIHZvaWQg
TmV0d29ya1Byb2Nlc3M6OnNldFZlcnlQcmV2YWxlbnRSZXNvdXJjZShQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIGNvbnN0IFN0CiAgICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+
bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewogICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VM
b2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkp
CiAgICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5zZXRWZXJ5UHJldmFsZW50UmVz
b3VyY2UocmVzb3VyY2VEb21haW4sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICB9IGVsc2UKICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CkBAIC02ODksNiArNzA0LDggQEAgdm9pZCBO
ZXR3b3JrUHJvY2Vzczo6Y2xlYXJQcmV2YWxlbnRSZXNvdXJjZShQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIGNvbnN0IFN0cmkKICAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5u
ZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CiAgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxv
YWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkK
ICAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPmNsZWFyUHJldmFsZW50UmVzb3Vy
Y2UocmVzb3VyY2VEb21haW4sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICB9IGVsc2UKICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CkBAIC02OTgsNiArNzE1LDggQEAgdm9pZCBOZXR3
b3JrUHJvY2Vzczo6c3VibWl0VGVsZW1ldHJ5KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29t
cGxldGlvbkhhbmRsZXIKICAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3
b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CiAgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRT
dGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKICAg
ICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnN1Ym1pdFRlbGVtZXRyeShXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKCk7CiAgICAgfSBlbHNlCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
fQpAQCAtNzA3LDIwICs3MjYsMjIgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2NoZWR1bGVDb29r
aWVCbG9ja2luZ1VwZGF0ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXAKICAgICBpZiAo
YXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7
CiAgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Np
b24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKICAgICAgICAgICAgIHJlc291cmNlTG9hZFN0
YXRpc3RpY3MtPnNjaGVkdWxlQ29va2llQmxvY2tpbmdVcGRhdGUoV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigp
OwogICAgIH0gZWxzZQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotdm9pZCBO
ZXR3b3JrUHJvY2Vzczo6c2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvbmFsPFdhbGxUaW1lPiBtb2RpZmllZFNpbmNlLCBib29s
IHNob3VsZEdyYW5kZmF0aGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpzY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQ
ZXJzaXN0ZW50KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uYWw8V2FsbFRpbWU+IG1v
ZGlmaWVkU2luY2UsIFNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljcyBzaG91bGRHcmFuZGZhdGhl
ciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAg
IGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25J
RCkpIHsKICAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3Jr
U2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKSB7Ci0gICAgICAgICAgICBhdXRvIGdy
YW5kZmF0aGVyID0gc2hvdWxkR3JhbmRmYXRoZXIgPyBTaG91bGRHcmFuZGZhdGhlcjo6WWVzIDog
U2hvdWxkR3JhbmRmYXRoZXI6Ok5vOwogICAgICAgICAgICAgaWYgKG1vZGlmaWVkU2luY2UpCi0g
ICAgICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+c2NoZWR1bGVDbGVhckluTWVt
b3J5QW5kUGVyc2lzdGVudChtb2RpZmllZFNpbmNlLnZhbHVlKCksIGdyYW5kZmF0aGVyLCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcy0+c2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChtb2RpZmllZFNpbmNl
LnZhbHVlKCksIHNob3VsZEdyYW5kZmF0aGVyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGlj
cy0+c2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChncmFuZGZhdGhlciwgV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOwotICAgICAgICB9CisgICAgICAgICAgICAgICAgcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy0+c2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChzaG91
bGRHcmFuZGZhdGhlciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICB9IGVs
c2UKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgfSBlbHNlCiAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQpAQCAtNzMwLDYgKzc1MSw4IEBAIHZvaWQgTmV0d29y
a1Byb2Nlc3M6OnJlc2V0UGFyYW1ldGVyc1RvRGVmYXVsdFZhbHVlcyhQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIENvCiAgICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29y
a1Nlc3Npb24oc2Vzc2lvbklEKSkgewogICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCiAgICAg
ICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5yZXNldFBhcmFtZXRlcnNUb0RlZmF1bHRW
YWx1ZXMoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICBlbHNlCisgICAgICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgIH0gZWxzZQogICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKIH0KQEAgLTczOSw2ICs3NjIsOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpz
Y2hlZHVsZVN0YXRpc3RpY3NBbmREYXRhUmVjb3Jkc1Byb2Nlc3NpbmcoUEFMOjpTZXNzaW9uSUQg
cwogICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNl
c3Npb25JRCkpIHsKICAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBu
ZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQogICAgICAgICAgICAgcmVz
b3VyY2VMb2FkU3RhdGlzdGljcy0+c2NoZWR1bGVTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHNQcm9j
ZXNzaW5nKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICB9IGVsc2UKICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiB9CkBAIC03NDgsNiArNzczLDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6
c2V0Tm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5lZChQQUw6OlNlc3Npb25JRCBz
ZXMKICAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihz
ZXNzaW9uSUQpKSB7CiAgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0g
bmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKICAgICAgICAgICAgIHJl
c291cmNlTG9hZFN0YXRpc3RpY3MtPnNldE5vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNj
YW5uZWQodmFsdWUsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICB9IGVsc2UKICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiB9CkBAIC03NTcsNiArNzg0LDggQEAgdm9pZCBOZXR3b3JrUHJv
Y2Vzczo6c2V0Tm90aWZ5UGFnZXNXaGVuVGVsZW1ldHJ5V2FzQ2FwdHVyZWQoUEFMOjpTZXNzaW9u
SUQgc2Vzc2kKICAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vz
c2lvbihzZXNzaW9uSUQpKSB7CiAgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0
aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKICAgICAgICAg
ICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnNldE5vdGlmeVBhZ2VzV2hlblRlbGVtZXRyeVdh
c0NhcHR1cmVkKHZhbHVlLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgfSBlbHNlCiAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQpAQCAtNzY2LDYgKzc5NSw4IEBAIHZvaWQgTmV0d29y
a1Byb2Nlc3M6OnNldFN1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbihQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIFN0CiAgICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29y
a1Nlc3Npb24oc2Vzc2lvbklEKSkgewogICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCiAgICAg
ICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5zZXRTdWJmcmFtZVVuZGVyVG9wRnJhbWVP
cmlnaW4oc3ViZnJhbWUsIHRvcEZyYW1lLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgfSBlbHNl
CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQpAQCAtNzc1LDYgKzgwNiw4IEBAIHZv
aWQgTmV0d29ya1Byb2Nlc3M6OmlzUmVnaXN0ZXJlZEFzUmVkaXJlY3RpbmdUbyhQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIGNvbnN0CiAgICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhp
cy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewogICAgICAgICBpZiAoYXV0byogcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
KCkpCiAgICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5pc1JlZ2lzdGVyZWRBc1Jl
ZGlyZWN0aW5nVG8ocmVkaXJlY3RlZEZyb20sIHJlZGlyZWN0ZWRUbywgV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihmYWxzZSk7CiAgICAgfSBlbHNlCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQpA
QCAtNzg0LDYgKzgxNyw4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmlzUmVnaXN0ZXJlZEFzU3Vi
RnJhbWVVbmRlcihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0CiAgICAgaWYgKGF1dG8q
IG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewogICAg
ICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCiAgICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0
aWNzLT5pc1JlZ2lzdGVyZWRBc1N1YkZyYW1lVW5kZXIoc3ViZnJhbWUsIHRvcEZyYW1lLCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKGZhbHNlKTsKICAgICB9IGVsc2UKICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiB9CkBAIC03OTMsNiArODI4LDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0U3Vi
cmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2luKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwKICAg
ICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9u
SUQpKSB7CiAgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29y
a1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKICAgICAgICAgICAgIHJlc291cmNl
TG9hZFN0YXRpc3RpY3MtPnNldFN1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbihzdWJyZXNv
dXJjZSwgdG9wRnJhbWUsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICB9IGVsc2UKICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CkBAIC04MDIsNiArODM5LDggQEAgdm9pZCBOZXR3b3Jr
UHJvY2Vzczo6c2V0U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdFRvKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgU3QKICAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3Jr
U2Vzc2lvbihzZXNzaW9uSUQpKSB7CiAgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0
aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKICAgICAg
ICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnNldFN1YnJlc291cmNlVW5pcXVlUmVkaXJl
Y3RUbyhzdWJyZXNvdXJjZSwgaG9zdE5hbWVSZWRpcmVjdGVkVG8sIFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
KTsKICAgICB9IGVsc2UKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CkBAIC04MTEs
NiArODUwLDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0U3VicmVzb3VyY2VVbmlxdWVSZWRp
cmVjdEZyb20oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELAogICAgIGlmIChhdXRvKiBuZXR3b3Jr
U2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKICAgICAgICAgaWYg
KGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VM
b2FkU3RhdGlzdGljcygpKQogICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+c2V0
U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdEZyb20oc3VicmVzb3VyY2UsIGhvc3ROYW1lUmVkaXJl
Y3RlZEZyb20sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICB9IGVsc2UKICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiB9CkBAIC04MjAsNiArODYxLDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vz
czo6aXNSZWdpc3RlcmVkQXNTdWJyZXNvdXJjZVVuZGVyKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgY28KICAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lv
bihzZXNzaW9uSUQpKSB7CiAgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNz
ID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKICAgICAgICAgICAg
IHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPmlzUmVnaXN0ZXJlZEFzU3VicmVzb3VyY2VVbmRlcihz
dWJyZXNvdXJjZSwgdG9wRnJhbWUsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwogICAgIH0gZWxz
ZQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KQEAgLTgyOSw2ICs4NzIsOCBAQCB2
b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0VG8oUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBTdHJpbgogICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRo
aXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKICAgICAgICAgaWYgKGF1dG8qIHJlc291
cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGlj
cygpKQogICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+c2V0VG9wRnJhbWVVbmlx
dWVSZWRpcmVjdFRvKHRvcEZyYW1lSG9zdE5hbWUsIGhvc3ROYW1lUmVkaXJlY3RlZFRvLCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKCk7CiAgICAgfSBlbHNlCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogfQpAQCAtODM4LDYgKzg4Myw4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldFRvcEZyYW1l
VW5pcXVlUmVkaXJlY3RGcm9tKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU3RyCiAgICAgaWYg
KGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkg
ewogICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNz
aW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCiAgICAgICAgICAgICByZXNvdXJjZUxvYWRT
dGF0aXN0aWNzLT5zZXRUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0RnJvbSh0b3BGcmFtZUhvc3ROYW1l
LCBob3N0TmFtZVJlZGlyZWN0ZWRGcm9tLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgfSBlbHNl
CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQpAQCAtODQ4LDIyICs4OTUsMjcgQEAg
dm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0TGFzdFNlZW4oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBjb25zdCBTdHJpbmcmIHJlc291cmMKICAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0
aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CiAgICAgICAgIGlmIChhdXRvKiByZXNv
dXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MoKSkKICAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnNldExhc3RTZWVuKHJl
c291cmNlRG9tYWluLCBzZWNvbmRzLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgfSBlbHNlCiAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpo
YXNTdG9yYWdlQWNjZXNzRm9yRnJhbWUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBT
dHJpbmcmIHJlc291cmNlRG9tYWluLCBjb25zdCBTdHJpbmcmIGZpcnN0UGFydHlEb21haW4sIHVp
bnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgY29udGV4dElkKQordm9p
ZCBOZXR3b3JrUHJvY2Vzczo6aGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwgY29uc3QgU3RyaW5nJiBm
aXJzdFBhcnR5RG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CisgICAgYm9v
bCBoYXNTdG9yYWdlQWNjZXNzID0gZmFsc2U7CiAgICAgaWYgKGF1dG8qIG5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiA9IHN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCi0gICAgICAgIHBhcmVudFByb2Nl
c3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OlN0b3Jh
Z2VBY2Nlc3NPcGVyYXRpb25SZXN1bHQobmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5oYXNTdG9yYWdl
QWNjZXNzKHJlc291cmNlRG9tYWluLCBmaXJzdFBhcnR5RG9tYWluLCBmcmFtZUlELCBwYWdlSUQp
LCBjb250ZXh0SWQpLCAwKTsKKyAgICAgICAgaGFzU3RvcmFnZUFjY2VzcyA9IG5ldHdvcmtTdG9y
YWdlU2Vzc2lvbi0+aGFzU3RvcmFnZUFjY2VzcyhyZXNvdXJjZURvbWFpbiwgZmlyc3RQYXJ0eURv
bWFpbiwgZnJhbWVJRCwgcGFnZUlEKTsKICAgICBlbHNlCiAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworCisgICAgY29tcGxldGlvbkhhbmRsZXIoaGFzU3RvcmFnZUFjY2Vzcyk7CiB9CiAK
LXZvaWQgTmV0d29ya1Byb2Nlc3M6OmdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgY29udGV4dElkKQordm9pZCBOZXR3b3JrUHJvY2Vz
czo6Z2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+IGRvbWFpbnMpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQogewogICAgIGlmIChhdXRvKiBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBzdG9y
YWdlU2Vzc2lvbihzZXNzaW9uSUQpKQotICAgICAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigp
LT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpBbGxTdG9yYWdlQWNjZXNzRW50
cmllc1Jlc3VsdChuZXR3b3JrU3RvcmFnZVNlc3Npb24tPmdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRy
aWVzKCksIGNvbnRleHRJZCksIDApOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihuZXR3b3Jr
U3RvcmFnZVNlc3Npb24tPmdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKCkpOwogICAgIGVsc2UK
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CkBAIC04NzMsMjMgKzkyNSwyNCBAQCB2
b2lkIE5ldHdvcmtQcm9jZXNzOjpoYXNTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgY29uc3QgU3RyaW5nJiByZQogICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRo
aXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKICAgICAgICAgaWYgKGF1dG8qIHJlc291
cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGlj
cygpKQogICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+aGFzU3RvcmFnZUFjY2Vz
cyhyZXNvdXJjZURvbWFpbiwgZmlyc3RQYXJ0eURvbWFpbiwgZnJhbWVJRCwgcGFnZUlELCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKGZhbHNlKTsKICAgICB9IGVsc2UKICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwgY29u
c3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9tYWluLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwg
dWludDY0X3QgcGFnZUlELCBib29sIHByb21wdEVuYWJsZWQsIHVpbnQ2NF90IGNvbnRleHRJZCkK
K3ZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwgY29uc3QgU3RyaW5nJiBm
aXJzdFBhcnR5RG9tYWluLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgdWludDY0X3QgcGFn
ZUlELCBib29sIHByb21wdEVuYWJsZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFj
Y2Vzc1N0YXR1cyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKGF1dG8qIG5ldHdv
cmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewotICAgICAgICBp
ZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzKCkpIHsKLSAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3Mt
PnJlcXVlc3RTdG9yYWdlQWNjZXNzKHJlc291cmNlRG9tYWluLCBmaXJzdFBhcnR5RG9tYWluLCBm
cmFtZUlELCBwYWdlSUQsIHByb21wdEVuYWJsZWQsIFt0aGlzLCBjb250ZXh0SWRdKFN0b3JhZ2VB
Y2Nlc3NTdGF0dXMgcHJvbXB0QWNjZXB0ZWQpIHsKLSAgICAgICAgICAgICAgICBwYXJlbnRQcm9j
ZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpTdG9y
YWdlQWNjZXNzUmVxdWVzdFJlc3VsdChzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocHJvbXB0QWNjZXB0
ZWQpLCBjb250ZXh0SWQpLCAwKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9CisgICAgICAg
IGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291
cmNlTG9hZFN0YXRpc3RpY3MoKSkKKyAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3Mt
PnJlcXVlc3RTdG9yYWdlQWNjZXNzKHJlc291cmNlRG9tYWluLCBmaXJzdFBhcnR5RG9tYWluLCBm
cmFtZUlELCBwYWdlSUQsIHByb21wdEVuYWJsZWQsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoU3RvcmFnZUFj
Y2Vzc1N0YXR1czo6Q2Fubm90UmVxdWVzdEFjY2Vzcyk7CiAgICAgfSBlbHNlCiAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpncmFudFN0b3Jh
Z2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHJlc291cmNl
RG9tYWluLCBjb25zdCBTdHJpbmcmIGZpcnN0UGFydHlEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90
PiBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIGJvb2wgdXNlcldhc1Byb21wdGVkLCB1aW50NjRf
dCBjb250ZXh0SWQpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpncmFudFN0b3JhZ2VBY2Nlc3MoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBjb25z
dCBTdHJpbmcmIGZpcnN0UGFydHlEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1
aW50NjRfdCBwYWdlSUQsIGJvb2wgdXNlcldhc1Byb21wdGVkLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGJvb2wgaXNTdG9yYWdlR3Jh
bnRlZCA9IGZhbHNlOwogICAgIGlmIChhdXRvKiBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBzdG9y
YWdlU2Vzc2lvbihzZXNzaW9uSUQpKSB7CkBAIC04OTksNyArOTUyLDcgQEAgdm9pZCBOZXR3b3Jr
UHJvY2Vzczo6Z3JhbnRTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29u
c3QgU3RyaW5nJgogICAgIH0gZWxzZQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIAot
ICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9j
ZXNzUHJveHk6OlN0b3JhZ2VBY2Nlc3NPcGVyYXRpb25SZXN1bHQoaXNTdG9yYWdlR3JhbnRlZCwg
Y29udGV4dElkKSwgMCk7CisgICAgY29tcGxldGlvbkhhbmRsZXIoaXNTdG9yYWdlR3JhbnRlZCk7
CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmxvZ0ZyYW1lTmF2aWdhdGlvbihQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgdGFyZ2V0UHJpbWFyeURvbWFpbiwgY29uc3Qg
U3RyaW5nJiBtYWluRnJhbWVQcmltYXJ5RG9tYWluLCBjb25zdCBTdHJpbmcmIHNvdXJjZVByaW1h
cnlEb21haW4sIGNvbnN0IFN0cmluZyYgdGFyZ2V0SG9zdCwgY29uc3QgU3RyaW5nJiBtYWluRnJh
bWVIb3N0LCBib29sIGlzUmVkaXJlY3QsIGJvb2wgaXNNYWluRnJhbWUpCkBAIC05MTYsNiArOTY5
LDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6bG9nVXNlckludGVyYWN0aW9uKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJgogICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lv
biA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKICAgICAgICAgaWYgKGF1dG8q
IHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3Rh
dGlzdGljcygpKQogICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+bG9nVXNlcklu
dGVyYWN0aW9uKHRhcmdldFByaW1hcnlEb21haW4sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICB9
IGVsc2UKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CkBAIC05MjMsOSArOTc4LDEw
IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmxvZ1VzZXJJbnRlcmFjdGlvbihQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmhhZFVzZXJJ
bnRlcmFjdGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcmVzb3Vy
Y2VEb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7CiAgICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Np
b24oc2Vzc2lvbklEKSkgewotICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGlj
cyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpIHsKKyAgICAgICAg
aWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lvbi0+cmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcygpKQogICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+
aGFzSGFkVXNlckludGVyYWN0aW9uKHJlc291cmNlRG9tYWluLCBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7Ci0gICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoZmFsc2UpOwogICAgIH0gZWxzZQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKIH0KQEAgLTkzNSwxNyArOTkxLDE5IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNsZWFyVXNl
ckludGVyYWN0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nCiAgICAg
aWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklE
KSkgewogICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtT
ZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCiAgICAgICAgICAgICByZXNvdXJjZUxv
YWRTdGF0aXN0aWNzLT5jbGVhclVzZXJJbnRlcmFjdGlvbihyZXNvdXJjZURvbWFpbiwgV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcigpOwogICAgIH0gZWxzZQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
IH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVtb3ZlQWxsU3RvcmFnZUFjY2VzcyhQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IGNvbnRleHRJZCkKK3ZvaWQgTmV0d29ya1Byb2Nl
c3M6OnJlbW92ZUFsbFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKGF1
dG8qIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IHN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCiAg
ICAgICAgIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+cmVtb3ZlQWxsU3RvcmFnZUFjY2VzcygpOwog
ICAgIGVsc2UKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcGFyZW50UHJvY2Vz
c0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6RGlkUmVt
b3ZlQWxsU3RvcmFnZUFjY2Vzcyhjb250ZXh0SWQpLCAwKTsKKyAgICBjb21wbGV0aW9uSGFuZGxl
cigpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZW1vdmVQcmV2YWxlbnREb21haW5zKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnMpCkBA
IC05NTQsMTMgKzEwMTIsMTMgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVtb3ZlUHJldmFsZW50
RG9tYWlucyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFZlY3QKICAgICAgICAgbmV0
d29ya1N0b3JhZ2VTZXNzaW9uLT5yZW1vdmVQcmV2YWxlbnREb21haW5zKGRvbWFpbnMpOwogfQog
Ci12b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291
cmNlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFNlY29uZHMgc2Vjb25kcywgdWludDY0X3Qg
Y29udGV4dElkKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2
YWxlbnRSZXNvdXJjZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTZWNvbmRzIHNlY29uZHMs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBp
ZiAoYXV0byogbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gc3RvcmFnZVNlc3Npb24oc2Vzc2lvbklE
KSkKICAgICAgICAgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5zZXRDYWNoZU1heEFnZUNhcEZvclBy
ZXZhbGVudFJlc291cmNlcyhTZWNvbmRzIHsgc2Vjb25kcyB9KTsKICAgICBlbHNlCiAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNl
bmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkRpZFNldENhY2hlTWF4QWdlQ2FwRm9y
UHJldmFsZW50UmVzb3VyY2VzKGNvbnRleHRJZCksIDApOworICAgIGNvbXBsZXRpb25IYW5kbGVy
KCk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldEdyYW5kZmF0aGVyaW5nVGltZShQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIFNlY29uZHMgc2Vjb25kcywgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtOTY4LDYgKzEwMjYsOCBAQCB2b2lkIE5l
dHdvcmtQcm9jZXNzOjpzZXRHcmFuZGZhdGhlcmluZ1RpbWUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBTZWNvbmRzIHNlYwogICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5l
dHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKICAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9h
ZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQog
ICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+c2V0R3JhbmRmYXRoZXJpbmdUaW1l
KHNlY29uZHMsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICB9IGVsc2UKICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiB9CkBAIC05NzcsNiArMTAzNyw4IEBAIHZvaWQgTmV0d29ya1Byb2Nl
c3M6OnNldE1heFN0YXRpc3RpY3NFbnRyaWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWlu
dDY0X3QKICAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lv
bihzZXNzaW9uSUQpKSB7CiAgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNz
ID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKICAgICAgICAgICAg
IHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnNldE1heFN0YXRpc3RpY3NFbnRyaWVzKG1heGltdW1F
bnRyeUNvdW50LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgfSBlbHNlCiAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogfQpAQCAtOTg2LDYgKzEwNDgsOCBAQCB2b2lkIE5ldHdvcmtQcm9j
ZXNzOjpzZXRNaW5pbXVtVGltZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwoUEFMOjpTZXNzaW9u
SUQgc2VzcwogICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNz
aW9uKHNlc3Npb25JRCkpIHsKICAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MgPSBuZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQogICAgICAgICAg
ICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+c2V0TWluaW11bVRpbWVCZXR3ZWVuRGF0YVJlY29y
ZHNSZW1vdmFsKHNlY29uZHMsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICB9IGVsc2UKICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CkBAIC05OTUsNiArMTA1OSw4IEBAIHZvaWQgTmV0
d29ya1Byb2Nlc3M6OnNldFBydW5lRW50cmllc0Rvd25UbyhQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIHVpbnQ2NF90IHByCiAgICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0
d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewogICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCiAg
ICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5zZXRQcnVuZUVudHJpZXNEb3duVG8o
cHJ1bmVUYXJnZXRDb3VudCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICBl
bHNlCisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgIH0gZWxzZQogICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KQEAgLTEwMDQsNiArMTA3MCw4IEBAIHZvaWQgTmV0
d29ya1Byb2Nlc3M6OnNldFRpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24oUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBTZWNvCiAgICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0
d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewogICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCiAg
ICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5zZXRUaW1lVG9MaXZlVXNlckludGVy
YWN0aW9uKHNlY29uZHMsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICB9IGVsc2UKICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CkBAIC0xMDEzLDYgKzEwODEsOCBAQCB2b2lkIE5ldHdv
cmtQcm9jZXNzOjpzZXRTaG91bGRDbGFzc2lmeVJlc291cmNlc0JlZm9yZURhdGFSZWNvcmRzUmVt
b3ZhbChQQUw6OlNlcwogICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdv
cmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKICAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0
YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQogICAg
ICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+c2V0U2hvdWxkQ2xhc3NpZnlSZXNvdXJj
ZXNCZWZvcmVEYXRhUmVjb3Jkc1JlbW92YWwodmFsdWUsIFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAg
ICB9IGVsc2UKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CkBAIC0xMDI4LDE3ICsx
MDk4LDE5IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NE
ZWJ1Z01vZGUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklECiAgICAgaWYgKGF1dG8qIG5ldHdvcmtT
ZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewogICAgICAgICBpZiAo
YXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzKCkpCiAgICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5zZXRS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlKGRlYnVnTW9kZSwgV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cigpOwogICAgIH0gZWxzZQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6cmVzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNl
cyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IGNvbnRleHRJZCkKK3ZvaWQgTmV0
d29ya1Byb2Nlc3M6OnJlc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKGF1dG8qIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IHN0
b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCiAgICAgICAgIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+
cmVzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcygpOwogICAgIGVsc2UKICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24o
KS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6RGlkVXBkYXRlUnVudGltZVNl
dHRpbmdzKGNvbnRleHRJZCksIDApOworICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAjZW5k
aWYgLy8gRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKIApAQCAtMTIxMSw3ICsxMjgz
LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2kKIAogICAgICAgICAgICAgICAgIC8vIElmIHdl
IGFyZSBkZWxldGluZyBhbGwgb2YgdGhlIGRhdGEgdHlwZXMgdGhhdCB0aGUgcmVzb3VyY2UgbG9h
ZCBzdGF0aXN0aWNzIHN0b3JlIG1vbml0b3JzCiAgICAgICAgICAgICAgICAgLy8gd2UgZG8gbm90
IG5lZWQgdG8gcmUtZ3JhbmRmYXRoZXIgb2xkIGRhdGEuCi0gICAgICAgICAgICAgICAgYXV0byBz
aG91bGRHcmFuZGZhdGhlciA9ICgobW9uaXRvcmVkVHlwZXNSYXcgJiBkZWxldGVkVHlwZXNSYXcp
ID09IG1vbml0b3JlZFR5cGVzUmF3KSA/IFNob3VsZEdyYW5kZmF0aGVyOjpObyA6IFNob3VsZEdy
YW5kZmF0aGVyOjpZZXM7CisgICAgICAgICAgICAgICAgYXV0byBzaG91bGRHcmFuZGZhdGhlciA9
ICgobW9uaXRvcmVkVHlwZXNSYXcgJiBkZWxldGVkVHlwZXNSYXcpID09IG1vbml0b3JlZFR5cGVz
UmF3KSA/IFNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljczo6Tm8gOiBTaG91bGRHcmFuZGZhdGhl
clN0YXRpc3RpY3M6OlllczsKIAogICAgICAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MtPnNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQobW9kaWZpZWRTaW5jZSwgc2hv
dWxkR3JhbmRmYXRoZXIsIFtjbGVhclRhc2tzSGFuZGxlciA9IGNsZWFyVGFza3NIYW5kbGVyLmNv
cHlSZWYoKV0geyB9KTsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAppbmRleCBhZmJlYmJkZTE3OWU5YzMyZTA4ZjliYmQwMDRh
N2RlNjkxZjlhNTg1Li42ZWZhZDI4ZDExMWExZmEyMWQ0ZjA2MTkwYWY4YTMyYWNmMGY4YjU1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
ODEsNiArODEsOCBAQCBjbGFzcyBOZXR3b3JrUHJvY2Vzc1N1cHBsZW1lbnQ7CiBjbGFzcyBOZXR3
b3JrUHJveGltaXR5TWFuYWdlcjsKIGNsYXNzIFdlYlNXU2VydmVyQ29ubmVjdGlvbjsKIGNsYXNz
IFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjsKK2VudW0gY2xhc3MgU2hvdWxkR3JhbmRm
YXRoZXJTdGF0aXN0aWNzIDogYm9vbDsKK2VudW0gY2xhc3MgU3RvcmFnZUFjY2Vzc1N0YXR1cyA6
IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIFdlYnNpdGVEYXRhRmV0Y2hPcHRpb247CiBlbnVtIGNsYXNz
IFdlYnNpdGVEYXRhVHlwZTsKIHN0cnVjdCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
czsKQEAgLTE3NiwxMiArMTc4LDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFyUHJldmFsZW50
UmVzb3VyY2UoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBjbGVhclVzZXJJbnRlcmFjdGlv
bihQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGRlbGV0ZVdlYnNpdGVEYXRhRm9yVG9wUHJp
dmF0ZWx5Q29udHJvbGxlZERvbWFpbnNJbkFsbFBlcnNpc3RlbnREYXRhU3RvcmVzKFBBTDo6U2Vz
c2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgVmVjdG9yPFN0cmluZz4mJiB0b3BQ
cml2YXRlbHlDb250cm9sbGVkRG9tYWlucywgYm9vbCBzaG91bGROb3RpZnlQYWdlLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYpPiYmKTsKLSAgICB2b2lkIGR1
bXBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCBjb250ZXh0
SWQpOwotICAgIHZvaWQgdXBkYXRlUHJldmFsZW50RG9tYWluc1RvQmxvY2tDb29raWVzRm9yKFBB
TDo6U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvQmxvY2ssIHVpbnQ2
NF90IGNvbnRleHRJZCk7CisgICAgdm9pZCBkdW1wUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhQQUw6
OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcpPiYmKTsKKyAgICB2b2lk
IHVwZGF0ZVByZXZhbGVudERvbWFpbnNUb0Jsb2NrQ29va2llc0ZvcihQQUw6OlNlc3Npb25JRCwg
Y29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb0Jsb2NrLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOwogICAgIHZvaWQgaXNHcmFuZGZhdGhlcmVkKFBBTDo6U2Vzc2lvbklELCBjb25z
dCBTdHJpbmcmIHRhcmdldFByaW1hcnlEb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYpOwogICAgIHZvaWQgaXNQcmV2YWxlbnRSZXNvdXJjZShQQUw6OlNlc3Npb25JRCwgY29u
c3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
Jik7CiAgICAgdm9pZCBpc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZShQQUw6OlNlc3Npb25JRCwgY29u
c3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
Jik7Ci0gICAgdm9pZCBzZXRBZ2VDYXBGb3JDbGllbnRTaWRlQ29va2llcyhQQUw6OlNlc3Npb25J
RCwgT3B0aW9uYWw8U2Vjb25kcz4sIHVpbnQ2NF90IGNvbnRleHRJZCk7CisgICAgdm9pZCBzZXRB
Z2VDYXBGb3JDbGllbnRTaWRlQ29va2llcyhQQUw6OlNlc3Npb25JRCwgT3B0aW9uYWw8U2Vjb25k
cz4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBpc1JlZ2lzdGVyZWRB
c1JlZGlyZWN0aW5nVG8oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcmVkaXJlY3RlZEZy
b20sIGNvbnN0IFN0cmluZyYgcmVkaXJlY3RlZFRvLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmKTsKICAgICB2b2lkIGlzUmVnaXN0ZXJlZEFzU3ViRnJhbWVVbmRlcihQQUw6OlNlc3Np
b25JRCwgY29uc3QgU3RyaW5nJiBzdWJmcmFtZSwgY29uc3QgU3RyaW5nJiB0b3BGcmFtZSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBpc1JlZ2lzdGVyZWRBc1N1
YnJlc291cmNlVW5kZXIoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgc3VicmVzb3VyY2Us
IGNvbnN0IFN0cmluZyYgdG9wRnJhbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYp
OwpAQCAtMTkyLDIyICsxOTQsMjIgQEAgcHVibGljOgogICAgIHZvaWQgc2V0VmVyeVByZXZhbGVu
dFJlc291cmNlKFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0UHJ1bmVFbnRyaWVzRG93
blRvKFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCBwcnVuZVRhcmdldENvdW50LCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgaGFkVXNlckludGVyYWN0aW9uKFBBTDo6U2Vz
c2lvbklELCBjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPiYmKTsKLSAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZShQQUw6OlNl
c3Npb25JRCwgY29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwgY29uc3QgU3RyaW5nJiBmaXJz
dFBhcnR5RG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90
IGNvbnRleHRJZCk7Ci0gICAgdm9pZCBnZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcyhQQUw6OlNl
c3Npb25JRCwgdWludDY0X3QgY29udGV4dElkKTsKLSAgICB2b2lkIGdyYW50U3RvcmFnZUFjY2Vz
cyhQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwgY29uc3QgU3Ry
aW5nJiBmaXJzdFBhcnR5RG9tYWluLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgdWludDY0
X3QgcGFnZUlELCBib29sIHVzZXJXYXNQcm9tcHRlZCwgdWludDY0X3QgY29udGV4dElkKTsKKyAg
ICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZShQQUw6OlNlc3Npb25JRCwgY29uc3QgU3Ry
aW5nJiByZXNvdXJjZURvbWFpbiwgY29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9tYWluLCB1aW50
NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYpOworICAgIHZvaWQgZ2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMoUEFMOjpTZXNzaW9u
SUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4gZG9tYWlucyk+JiYpOwor
ICAgIHZvaWQgZ3JhbnRTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcm
IHJlc291cmNlRG9tYWluLCBjb25zdCBTdHJpbmcmIGZpcnN0UGFydHlEb21haW4sIE9wdGlvbmFs
PHVpbnQ2NF90PiBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIGJvb2wgdXNlcldhc1Byb21wdGVk
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAgICB2b2lkIGhhc1N0b3JhZ2VB
Y2Nlc3MoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIGNvbnN0
IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHVp
bnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9p
ZCBsb2dGcmFtZU5hdmlnYXRpb24oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgdGFyZ2V0
UHJpbWFyeURvbWFpbiwgY29uc3QgU3RyaW5nJiBtYWluRnJhbWVQcmltYXJ5RG9tYWluLCBjb25z
dCBTdHJpbmcmIHNvdXJjZVByaW1hcnlEb21haW4sIGNvbnN0IFN0cmluZyYgdGFyZ2V0SG9zdCwg
Y29uc3QgU3RyaW5nJiBtYWluRnJhbWVIb3N0LCBib29sIGlzUmVkaXJlY3QsIGJvb2wgaXNNYWlu
RnJhbWUpOwogICAgIHZvaWQgbG9nVXNlckludGVyYWN0aW9uKFBBTDo6U2Vzc2lvbklELCBjb25z
dCBTdHJpbmcmIHRhcmdldFByaW1hcnlEb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik7Ci0gICAgdm9pZCByZW1vdmVBbGxTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklELCB1aW50
NjRfdCBjb250ZXh0SWQpOworICAgIHZvaWQgcmVtb3ZlQWxsU3RvcmFnZUFjY2VzcyhQQUw6OlNl
c3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHJlbW92ZVBy
ZXZhbGVudERvbWFpbnMoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21h
aW5zKTsKLSAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklELCBjb25z
dCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBjb25zdCBTdHJpbmcmIGZpcnN0UGFydHlEb21haW4s
IE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIGJvb2wgcHJvbXB0
RW5hYmxlZCwgdWludDY0X3QgY29udGV4dElkKTsKLSAgICB2b2lkIHJlc2V0Q2FjaGVNYXhBZ2VD
YXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IGNvbnRleHRJ
ZCk7CisgICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCwgY29uc3Qg
U3RyaW5nJiByZXNvdXJjZURvbWFpbiwgY29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9tYWluLCBP
cHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBib29sIHByb21wdEVu
YWJsZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1N0YXR1cyk+JiYpOwor
ICAgIHZvaWQgcmVzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhQQUw6OlNl
c3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHJlc2V0UGFy
YW1ldGVyc1RvRGVmYXVsdFZhbHVlcyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKTsKLSAgICB2b2lkIHNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQo
UEFMOjpTZXNzaW9uSUQsIE9wdGlvbmFsPFdhbGxUaW1lPiBtb2RpZmllZFNpbmNlLCBib29sIHNo
b3VsZEdyYW5kZmF0aGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQg
c2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChQQUw6OlNlc3Npb25JRCwgT3B0aW9u
YWw8V2FsbFRpbWU+IG1vZGlmaWVkU2luY2UsIFNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljcywg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNjaGVkdWxlQ29va2llQmxv
Y2tpbmdVcGRhdGUoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7
CiAgICAgdm9pZCBzY2hlZHVsZVN0YXRpc3RpY3NBbmREYXRhUmVjb3Jkc1Byb2Nlc3NpbmcoUEFM
OjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzdWJt
aXRUZWxlbWV0cnkoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7
Ci0gICAgdm9pZCBzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhQQUw6OlNl
c3Npb25JRCwgU2Vjb25kcywgdWludDY0X3QgY29udGV4dElkKTsKKyAgICB2b2lkIHNldENhY2hl
TWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKFBBTDo6U2Vzc2lvbklELCBTZWNvbmRzLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0R3JhbmRmYXRoZXJpbmdU
aW1lKFBBTDo6U2Vzc2lvbklELCBTZWNvbmRzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OwogICAgIHZvaWQgc2V0TGFzdFNlZW4oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcmVz
b3VyY2VEb21haW4sIFNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAg
dm9pZCBzZXRNaW5pbXVtVGltZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwoUEFMOjpTZXNzaW9u
SUQsIFNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgpp
bmRleCA2MjU2NTgxMmFhZTY1MGEyYTBlNTU0NGQ3YTRkY2E2YzA0ZGI5NjQzLi41ZDJhYTZkMmNj
MDFmZmZkYWM3YWFhODkzNWQ2MTY0MTE3ZDRjMDYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTEsNCAr
MSw0IEBACi0jIENvcHlyaWdodCAoQykgMjAxMi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDEyLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC04NywzNSArODcsMzUg
QEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogI2lmIEVOQUJM
RShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgQ2xlYXJQcmV2YWxlbnRSZXNvdXJjZShQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0cmluZyByZXNvdXJjZURvbWFpbikgLT4gKCkgQXN5
bmMKICAgICBDbGVhclVzZXJJbnRlcmFjdGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0
cmluZyByZXNvdXJjZURvbWFpbikgLT4gKCkgQXN5bmMKLSAgICBEdW1wUmVzb3VyY2VMb2FkU3Rh
dGlzdGljcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IGNvbnRleHRJZCkKKyAg
ICBEdW1wUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+
IChTdHJpbmcgZHVtcGVkU3RhdGlzdGljcykgQXN5bmMKICAgICBTZXRSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRW5hYmxlZChib29sIGVuYWJsZWQpCi0gICAgVXBkYXRlUHJldmFsZW50RG9tYWluc1Rv
QmxvY2tDb29raWVzRm9yKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVmVjdG9yPFN0cmluZz4g
ZG9tYWluc1RvQmxvY2ssIHVpbnQ2NF90IGNvbnRleHRJZCkKKyAgICBVcGRhdGVQcmV2YWxlbnRE
b21haW5zVG9CbG9ja0Nvb2tpZXNGb3IoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBWZWN0b3I8
U3RyaW5nPiBkb21haW5zVG9CbG9jaykgLT4gKCkgQXN5bmMKICAgICBJc0dyYW5kZmF0aGVyZWQo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTdHJpbmcgdGFyZ2V0UHJpbWFyeURvbWFpbikgLT4g
KGJvb2wgaXNHcmFuZGZhdGhlcmVkKSBBc3luYwogICAgIElzUHJldmFsZW50UmVzb3VyY2UoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTdHJpbmcgdGFyZ2V0UHJpbWFyeURvbWFpbikgLT4gKGJv
b2wgaXNQcmV2YWxlbnQpIEFzeW5jCiAgICAgSXNWZXJ5UHJldmFsZW50UmVzb3VyY2UoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBTdHJpbmcgdGFyZ2V0UHJpbWFyeURvbWFpbikgLT4gKGJvb2wg
aXNWZXJ5UHJldmFsZW50KSBBc3luYwotICAgIFNldEFnZUNhcEZvckNsaWVudFNpZGVDb29raWVz
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uYWw8U2Vjb25kcz4gc2Vjb25kcywgdWlu
dDY0X3QgY29udGV4dElkKQorICAgIFNldEFnZUNhcEZvckNsaWVudFNpZGVDb29raWVzKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uYWw8U2Vjb25kcz4gc2Vjb25kcykgLT4gKCkgQXN5
bmMKICAgICBTZXRMYXN0U2VlbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0cmluZyByZXNv
dXJjZURvbWFpbiwgU2Vjb25kcyBzZWNvbmRzKSAtPiAoKSBBc3luYwogICAgIFNldFByZXZhbGVu
dFJlc291cmNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU3RyaW5nIHJlc291cmNlRG9tYWlu
KSAtPiAoKSBBc3luYwogICAgIFNldFByZXZhbGVudFJlc291cmNlRm9yRGVidWdNb2RlKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgU3RyaW5nIHJlc291cmNlRG9tYWluKSAtPiAoKSBBc3luYwog
ICAgIEhhZFVzZXJJbnRlcmFjdGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0cmluZyBy
ZXNvdXJjZURvbWFpbikgLT4gKGJvb2wgaGFkVXNlckludGVyYWN0aW9uKSBBc3luYwotICAgIEhh
c1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0cmluZyBy
ZXNvdXJjZURvbWFpbiwgU3RyaW5nIGZpcnN0UGFydHlEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQs
IHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgY29udGV4dElkKQotICAgIEhhc1N0b3JhZ2VBY2Nl
c3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTdHJpbmcgcmVzb3VyY2VEb21haW4sIFN0cmlu
ZyBmaXJzdFBhcnR5RG9tYWluLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgdWludDY0X3Qg
cGFnZUlEKSAtPiAoYm9vbCBoYWRVc2VySW50ZXJhY3Rpb24pIEFzeW5jCi0gICAgR2V0QWxsU3Rv
cmFnZUFjY2Vzc0VudHJpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBjb250
ZXh0SWQpCi0gICAgR3JhbnRTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
U3RyaW5nIHJlc291cmNlRG9tYWluLCBTdHJpbmcgZmlyc3RQYXJ0eURvbWFpbiwgT3B0aW9uYWw8
dWludDY0X3Q+IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgYm9vbCB1c2VyV2FzUHJvbXB0ZWQs
IHVpbnQ2NF90IGNvbnRleHRJZCkKKyAgICBIYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWUoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBTdHJpbmcgcmVzb3VyY2VEb21haW4sIFN0cmluZyBmaXJzdFBh
cnR5RG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQpIC0+IChib29sIGhh
c1N0b3JhZ2VBY2Nlc3MpIEFzeW5jCisgICAgSGFzU3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIFN0cmluZyByZXNvdXJjZURvbWFpbiwgU3RyaW5nIGZpcnN0UGFydHlEb21h
aW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQpIC0+IChib29s
IGhhc1N0b3JhZ2VBY2Nlc3MpIEFzeW5jCisgICAgR2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoVmVjdG9yPFN0cmluZz4gZG9tYWlucykgQXN5
bmMKKyAgICBHcmFudFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTdHJp
bmcgcmVzb3VyY2VEb21haW4sIFN0cmluZyBmaXJzdFBhcnR5RG9tYWluLCBPcHRpb25hbDx1aW50
NjRfdD4gZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBib29sIHVzZXJXYXNQcm9tcHRlZCkgLT4g
KGJvb2wgYWNjZXNzR3JhbnRlZCkgQXN5bmMKICAgICBJc1JlZ2lzdGVyZWRBc1JlZGlyZWN0aW5n
VG8oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTdHJpbmcgcmVkaXJlY3RlZEZyb20sIFN0cmlu
ZyByZWRpcmVjdGVkVG8pIC0+IChib29sIGlzUmVkaXJlY3RpbmdUbykgQXN5bmMKICAgICBJc1Jl
Z2lzdGVyZWRBc1N1YkZyYW1lVW5kZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTdHJpbmcg
c3ViZnJhbWUsIFN0cmluZyB0b3BGcmFtZSkgLT4gKGJvb2wgaXNTdWJmcmFtZVVuZGVyKSBBc3lu
YwogICAgIElzUmVnaXN0ZXJlZEFzU3VicmVzb3VyY2VVbmRlcihQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIFN0cmluZyBzdWJyZXNvdXJjZSwgU3RyaW5nIHRvcEZyYW1lKSAtPiAoYm9vbCBpc1N1
YnJlc291cmNlVW5kZXIpIEFzeW5jCiAgICAgTG9nRnJhbWVOYXZpZ2F0aW9uKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgU3RyaW5nIHRhcmdldFByaW1hcnlEb21haW4sIFN0cmluZyBtYWluRnJh
bWVQcmltYXJ5RG9tYWluLCBTdHJpbmcgc291cmNlUHJpbWFyeURvbWFpbiwgU3RyaW5nIHRhcmdl
dEhvc3QsIFN0cmluZyBtYWluRnJhbWVIb3N0LCBib29sIGlzUmVkaXJlY3QsIGJvb2wgaXNNYWlu
RnJhbWUpCiAgICAgTG9nVXNlckludGVyYWN0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
U3RyaW5nIHRhcmdldFByaW1hcnlEb21haW4pIC0+ICgpIEFzeW5jCi0gICAgUmVtb3ZlQWxsU3Rv
cmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IGNvbnRleHRJZCkK
KyAgICBSZW1vdmVBbGxTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4g
KCkgQXN5bmMKICAgICBSZW1vdmVQcmV2YWxlbnREb21haW5zKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgVmVjdG9yPFN0cmluZz4gZG9tYWluc1dpdGhJbnRlcmFjdGlvbikKLSAgICBSZXF1ZXN0
U3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0cmluZyByZXNvdXJjZURv
bWFpbiwgU3RyaW5nIGZpcnN0UGFydHlEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlE
LCB1aW50NjRfdCBwYWdlSUQsIGJvb2wgcHJvbXB0RW5hYmxlZCwgdWludDY0X3QgY29udGV4dElk
KQorICAgIFJlcXVlc3RTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU3Ry
aW5nIHJlc291cmNlRG9tYWluLCBTdHJpbmcgZmlyc3RQYXJ0eURvbWFpbiwgT3B0aW9uYWw8dWlu
dDY0X3Q+IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgYm9vbCBwcm9tcHRFbmFibGVkKSAtPiAo
ZW51bTp1aW50OF90IFdlYktpdDo6U3RvcmFnZUFjY2Vzc1N0YXR1cyBzdG9yYWdlQWNjZXNzU3Rh
dHVzKSBBc3luYwogICAgIFJlc2V0UGFyYW1ldGVyc1RvRGVmYXVsdFZhbHVlcyhQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQpIC0+ICgpIEFzeW5jCi0gICAgU2NoZWR1bGVDbGVhckluTWVtb3J5QW5k
UGVyc2lzdGVudChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvbmFsPFdhbGxUaW1lPiBt
b2RpZmllZFNpbmNlLCBib29sIHNob3VsZEdyYW5kZmF0aGVyKSAtPiAoKSBBc3luYworICAgIFNj
aGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBPcHRpb25hbDxXYWxsVGltZT4gbW9kaWZpZWRTaW5jZSwgZW51bTpib29sIFdlYktpdDo6U2hv
dWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzIHNob3VsZEdyYW5kZmF0aGVyKSAtPiAoKSBBc3luYwog
ICAgIFNjaGVkdWxlQ29va2llQmxvY2tpbmdVcGRhdGUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
KSAtPiAoKSBBc3luYwogICAgIFNjaGVkdWxlU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzUHJvY2Vz
c2luZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+ICgpIEFzeW5jCiAgICAgU3VibWl0VGVs
ZW1ldHJ5KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKCkgQXN5bmMKLSAgICBTZXRDYWNo
ZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IFNlY29uZHMgc2Vjb25kcywgdWludDY0X3QgY29udGV4dElkKQorICAgIFNldENhY2hlTWF4QWdl
Q2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU2Vjb25k
cyBzZWNvbmRzKSAtPiAoKSBBc3luYwogICAgIFNldEdyYW5kZmF0aGVyZWQoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBTdHJpbmcgcmVzb3VyY2VEb21haW4sIGJvb2wgaXNHcmFuZGZhdGhlcmVk
KSAtPiAoKSBBc3luYwogICAgIFNldEdyYW5kZmF0aGVyaW5nVGltZShQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIFNlY29uZHMgc2Vjb25kcykgLT4gKCkgQXN5bmMKICAgICBTZXRNYXhTdGF0aXN0
aWNzRW50cmllcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IG1heGltdW1FbnRy
eUNvdW50KSAtPiAoKSBBc3luYwpAQCAtMTMzLDcgKzEzMyw3IEBAIG1lc3NhZ2VzIC0+IE5ldHdv
cmtQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBTZXRUaW1lVG9MaXZlVXNlckludGVyYWN0
aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU2Vjb25kcyBzZWNvbmRzKSAtPiAoKSBBc3lu
YwogICAgIFNldFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RUbyhQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIFN0cmluZyB0b3BGcmFtZUhvc3ROYW1lLCBTdHJpbmcgaG9zdE5hbWVSZWRpcmVjdGVkVG8p
IC0+ICgpIEFzeW5jCiAgICAgU2V0VG9wRnJhbWVVbmlxdWVSZWRpcmVjdEZyb20oUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBTdHJpbmcgdG9wRnJhbWVIb3N0TmFtZSwgU3RyaW5nIGhvc3ROYW1l
UmVkaXJlY3RlZEZyb20pIC0+ICgpIEFzeW5jCi0gICAgUmVzZXRDYWNoZU1heEFnZUNhcEZvclBy
ZXZhbGVudFJlc291cmNlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IGNvbnRl
eHRJZCkKKyAgICBSZXNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKCkgQXN5bmMKICNlbmRpZgogCiAgICAgU2V0U2Vzc2lv
bklzQ29udHJvbGxlZEJ5QXV0b21hdGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGJvb2wg
Y29udHJvbGxlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mv
V0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcAppbmRleCBiYTMzM2M5ZjVmZDM1ZmQ4MjBlYjg1NWUw
ZjUyNTM3NmJlMmY0YzMxLi43YTE0MTE1MjhmNWU4NTQzZjQ5NWFkOTAxZTQ3NGY4ZWM4ZDRmMWMw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRh
U3RvcmVSZWYuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0
ZURhdGFTdG9yZVJlZi5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
NS0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkFQSUFycmF5LmgiCiAj
aW5jbHVkZSAiQVBJV2Vic2l0ZURhdGFTdG9yZS5oIgogI2luY2x1ZGUgIk1vY2tXZWJBdXRoZW50
aWNhdGlvbkNvbmZpZ3VyYXRpb24uaCIKKyNpbmNsdWRlICJTaG91bGRHcmFuZGZhdGhlclN0YXRp
c3RpY3MuaCIKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKICNpbmNsdWRlICJXS0RpY3Rpb25hcnku
aCIKICNpbmNsdWRlICJXS051bWJlci5oIgpAQCAtMzc4LDcgKzM3OSw3IEBAIHZvaWQgV0tXZWJz
aXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1BydW5lRW50cmllc0Rvd25UbyhXS1dlYnNpdGVEYXRh
U3RvcmVSZWYgZGF0CiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NDbGVhckluTWVt
b3J5QW5kUGVyc2lzdGVudFN0b3JlKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYs
IHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NDbGVhckluTWVtb3J5
QW5kUGVyc2lzdGVudFN0b3JlRnVuY3Rpb24gY2FsbGJhY2spCiB7CiAjaWYgRU5BQkxFKFJFU09V
UkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53
ZWJzaXRlRGF0YVN0b3JlKCkuc2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChTaG91
bGRHcmFuZGZhdGhlcjo6WWVzLCBbY29udGV4dCwgY2FsbGJhY2tdKCkgeworICAgIFdlYktpdDo6
dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5zY2hlZHVsZUNsZWFySW5N
ZW1vcnlBbmRQZXJzaXN0ZW50KFNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljczo6WWVzLCBbY29u
dGV4dCwgY2FsbGJhY2tdKCkgewogICAgICAgICBjYWxsYmFjayhjb250ZXh0KTsKICAgICB9KTsK
ICNlbHNlCkBAIC0zODksNyArMzkwLDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0
aWNzQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZShXS1dlYnNpdGVEYXRhU3QKIHZvaWQg
V0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0NsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3Rv
cmVNb2RpZmllZFNpbmNlSG91cnMoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwg
dW5zaWduZWQgaG91cnMsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3Rp
Y3NDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudFN0b3JlTW9kaWZpZWRTaW5jZUhvdXJzRnVuY3Rp
b24gY2FsbGJhY2spCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAg
ICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2NoZWR1
bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChXYWxsVGltZTo6bm93KCkgLSBTZWNvbmRzOjpm
cm9tSG91cnMoaG91cnMpLCBTaG91bGRHcmFuZGZhdGhlcjo6WWVzLCBbY29udGV4dCwgY2FsbGJh
Y2tdKCkgeworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3Rv
cmUoKS5zY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFdhbGxUaW1lOjpub3coKSAt
IFNlY29uZHM6OmZyb21Ib3Vycyhob3VycyksIFNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljczo6
WWVzLCBbY29udGV4dCwgY2FsbGJhY2tdKCkgewogICAgICAgICBjYWxsYmFjayhjb250ZXh0KTsK
ICAgICB9KTsKICNlbmRpZgpAQCAtNDA1LDkgKzQwNiwxMSBAQCB2b2lkIFdLV2Vic2l0ZURhdGFT
dG9yZVN0YXRpc3RpY3NDbGVhclRocm91Z2hXZWJzaXRlRGF0YVJlbW92YWwoV0tXZWJzaXRlRGF0
YVN0bwogCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NDYWNoZU1heEFnZUNh
cChXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBkb3VibGUgc2Vjb25kcywgdm9p
ZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc0NhY2hlTWF4QWdlQ2Fw
RnVuY3Rpb24gY2FsbGJhY2spCiB7CisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElD
UykKICAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCku
c2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoU2Vjb25kcyB7IHNlY29uZHMg
fSwgW2NvbnRleHQsIGNhbGxiYWNrXSB7CiAgICAgICAgIGNhbGxiYWNrKGNvbnRleHQpOwogICAg
IH0pOworI2VuZGlmCiB9CiAKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1Jlc2V0
VG9Db25zaXN0ZW50U3RhdGUoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgdm9p
ZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50
U3RhdGVGdW5jdGlvbiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTQyMSw3ICs0MjQsNyBAQCB2b2lk
IFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVudFN0YXRlKFdLV2Vi
c2l0ZURhdGFTdG9yZVJlZiBkYQogICAgIHN0b3JlLmNsZWFyUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0luV2ViUHJvY2Vzc2VzKFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3Iu
Y29weVJlZigpXSB7IH0pOwogICAgIHN0b3JlLnJlc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxl
bnRSZXNvdXJjZXMoW2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5
UmVmKCldIHsgfSk7CiAgICAgc3RvcmUucmVzZXRQYXJhbWV0ZXJzVG9EZWZhdWx0VmFsdWVzKFtj
YWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOwot
ICAgIHN0b3JlLnNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoU2hvdWxkR3JhbmRm
YXRoZXI6Ok5vLCBbY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlS
ZWYoKV0geyB9KTsKKyAgICBzdG9yZS5zY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50
KFNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljczo6Tm8sIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBj
YWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOwogI2Vsc2UKICAgICBVTlVTRURfUEFS
QU0oZGF0YVN0b3JlUmVmKTsKICAgICBjb21wbGV0aW9uSGFuZGxlcihjb250ZXh0KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuY3BwCmluZGV4IGNiMDYyZjVjODFjMzk2ZWY3NWIxZGQ2MTBkNDQ5NDZhMDEwYTE0YjYuLmFj
YWE4YjU2ODUwYWQ0ZGUzMDVjZDZlZGIyYzI2YmQ0MjA5NGZiNzAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApA
QCAtMzcsNiArMzcsOCBAQAogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlNh
bmRib3hFeHRlbnNpb24uaCIKKyNpbmNsdWRlICJTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3Mu
aCIKKyNpbmNsdWRlICJTdG9yYWdlQWNjZXNzU3RhdHVzLmgiCiAjaW5jbHVkZSAiV2ViQ29tcGls
ZWRDb250ZW50UnVsZUxpc3QuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKICNpbmNsdWRl
ICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIKQEAgLTIzNCwyNiArMjM2LDYgQEAgdm9pZCBOZXR3b3Jr
UHJvY2Vzc1Byb3h5OjpjbGVhckNhbGxiYWNrU3RhdGVzKCkKIAogICAgIHdoaWxlICghbV9wZW5k
aW5nRGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zQ2FsbGJhY2tzLmlzRW1wdHkoKSkKICAgICAg
ICAgbV9wZW5kaW5nRGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zQ2FsbGJhY2tzLnRha2UobV9w
ZW5kaW5nRGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zQ2FsbGJhY2tzLmJlZ2luKCktPmtleSko
KTsKLQotI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgd2hpbGUgKCFt
X3NjaGVkdWxlU3RhdGlzdGljc1Byb2Nlc3NpbmdDYWxsYmFja01hcC5pc0VtcHR5KCkpCi0gICAg
ICAgIG1fc2NoZWR1bGVTdGF0aXN0aWNzUHJvY2Vzc2luZ0NhbGxiYWNrTWFwLnRha2UobV9zY2hl
ZHVsZVN0YXRpc3RpY3NQcm9jZXNzaW5nQ2FsbGJhY2tNYXAuYmVnaW4oKS0+a2V5KSgpOwotCi0g
ICAgd2hpbGUgKCFtX3N0b3JhZ2VBY2Nlc3NSZXNwb25zZUNhbGxiYWNrTWFwLmlzRW1wdHkoKSkK
LSAgICAgICAgbV9zdG9yYWdlQWNjZXNzUmVzcG9uc2VDYWxsYmFja01hcC50YWtlKG1fc3RvcmFn
ZUFjY2Vzc1Jlc3BvbnNlQ2FsbGJhY2tNYXAuYmVnaW4oKS0+a2V5KShmYWxzZSk7Ci0gICAgCi0g
ICAgd2hpbGUgKCFtX3N0b3JhZ2VBY2Nlc3NSZXF1ZXN0UmVzcG9uc2VDYWxsYmFja01hcC5pc0Vt
cHR5KCkpCi0gICAgICAgIG1fc3RvcmFnZUFjY2Vzc1JlcXVlc3RSZXNwb25zZUNhbGxiYWNrTWFw
LnRha2UobV9zdG9yYWdlQWNjZXNzUmVxdWVzdFJlc3BvbnNlQ2FsbGJhY2tNYXAuYmVnaW4oKS0+
a2V5KShTdG9yYWdlQWNjZXNzU3RhdHVzOjpDYW5ub3RSZXF1ZXN0QWNjZXNzKTsKLQotICAgIHdo
aWxlICghbV9yZW1vdmVBbGxTdG9yYWdlQWNjZXNzQ2FsbGJhY2tNYXAuaXNFbXB0eSgpKQotICAg
ICAgICBtX3JlbW92ZUFsbFN0b3JhZ2VBY2Nlc3NDYWxsYmFja01hcC50YWtlKG1fcmVtb3ZlQWxs
U3RvcmFnZUFjY2Vzc0NhbGxiYWNrTWFwLmJlZ2luKCktPmtleSkoKTsKLQotICAgIHdoaWxlICgh
bV9hbGxTdG9yYWdlQWNjZXNzRW50cmllc0NhbGxiYWNrTWFwLmlzRW1wdHkoKSkKLSAgICAgICAg
bV9hbGxTdG9yYWdlQWNjZXNzRW50cmllc0NhbGxiYWNrTWFwLnRha2UobV9hbGxTdG9yYWdlQWNj
ZXNzRW50cmllc0NhbGxiYWNrTWFwLmJlZ2luKCktPmtleSkoeyB9KTsKLQotICAgIHdoaWxlICgh
bV9kdW1wU3RhdGlzdGljc0NhbGxiYWNrTWFwLmlzRW1wdHkoKSkKLSAgICAgICAgbV9kdW1wU3Rh
dGlzdGljc0NhbGxiYWNrTWFwLnRha2UobV9kdW1wU3RhdGlzdGljc0NhbGxiYWNrTWFwLmJlZ2lu
KCktPmtleSkoeyB9KTsKLSNlbmRpZgogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRp
ZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVy
JiBkZWNvZGVyKQpAQCAtMjkwLDE2ICsyNzIsNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6
OmRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYpCiAgICAgbV9zeW5jQWxsQ29va2llc1Rva2VuID0g
bnVsbHB0cjsKICAgICBtX3N5bmNBbGxDb29raWVzQ291bnRlciA9IDA7CiAKLSNpZiBFTkFCTEUo
UkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIGZvciAoYXV0byYgY2FsbGJhY2sgOiBtX3Jl
bW92ZUFsbFN0b3JhZ2VBY2Nlc3NDYWxsYmFja01hcC52YWx1ZXMoKSkKLSAgICAgICAgY2FsbGJh
Y2soKTsKLSAgICBtX3JlbW92ZUFsbFN0b3JhZ2VBY2Nlc3NDYWxsYmFja01hcC5jbGVhcigpOwot
Ci0gICAgZm9yIChhdXRvJiBjYWxsYmFjayA6IG1fc2NoZWR1bGVTdGF0aXN0aWNzUHJvY2Vzc2lu
Z0NhbGxiYWNrTWFwLnZhbHVlcygpKQotICAgICAgICBjYWxsYmFjaygpOwotICAgIG1fc2NoZWR1
bGVTdGF0aXN0aWNzUHJvY2Vzc2luZ0NhbGxiYWNrTWFwLmNsZWFyKCk7Ci0jZW5kaWYKLQogICAg
IC8vIFRoaXMgd2lsbCBjYXVzZSB1cyB0byBiZSBkZWxldGVkLgogICAgIG5ldHdvcmtQcm9jZXNz
Q3Jhc2hlZCgpOwogfQpAQCAtNDI1LDI0ICszOTcsMTQgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1By
b3h5Ojpsb2dHbG9iYWxEaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1ZShjb25zdCBTdHJpbmcmIG1l
c3MKIH0KIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi12b2lkIE5ldHdv
cmtQcm9jZXNzUHJveHk6OmR1bXBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZHVtcFJlc291cmNlTG9h
ZFN0YXRpc3RpY3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFN0cmluZyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFjYW5TZW5kTWVz
c2FnZSgpKSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAgICAgCi0gICAgYXV0byBjYWxsYmFja0lkID0gZ2VuZXJhdGVDYWxsYmFja0lE
KCk7Ci0gICAgYXV0byBhZGRSZXN1bHQgPSBtX2R1bXBTdGF0aXN0aWNzQ2FsbGJhY2tNYXAuYWRk
KGNhbGxiYWNrSWQsIFtwcm90ZWN0ZWRQcm9jZXNzUG9vbCA9IG1ha2VSZWYobV9wcm9jZXNzUG9v
bCksIHRva2VuID0gdGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSwgY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oY29uc3QgU3RyaW5nJiBk
dW1wZWRTdGF0aXN0aWNzKSBtdXRhYmxlIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZHVt
cGVkU3RhdGlzdGljcyk7Ci0gICAgfSk7Ci0gICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFk
ZFJlc3VsdC5pc05ld0VudHJ5KTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6
RHVtcFJlc291cmNlTG9hZFN0YXRpc3RpY3Moc2Vzc2lvbklELCBjYWxsYmFja0lkKSwgMCk7Ci19
Ci0KLXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkRHVtcFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MoU3RyaW5nIGR1bXBlZFN0YXRpc3RpY3MsIHVpbnQ2NF90IGNhbGxiYWNrSWQpCi17Ci0gICAg
bV9kdW1wU3RhdGlzdGljc0NhbGxiYWNrTWFwLnRha2UoY2FsbGJhY2tJZCkoZHVtcGVkU3RhdGlz
dGljcyk7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6
RHVtcFJlc291cmNlTG9hZFN0YXRpc3RpY3Moc2Vzc2lvbklEKSwgV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnVwZGF0ZVByZXZhbGVu
dERvbWFpbnNUb0Jsb2NrQ29va2llc0ZvcihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9CbG9jaywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtNDUxLDE4ICs0MTMsOCBAQCB2b2lkIE5ldHdvcmtQ
cm9jZXNzUHJveHk6OnVwZGF0ZVByZXZhbGVudERvbWFpbnNUb0Jsb2NrQ29va2llc0ZvcihQQUw6
OlNlc3Npb25JRAogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgICAgICByZXR1cm47
CiAgICAgfQotICAgIAotICAgIGF1dG8gY2FsbGJhY2tJZCA9IGdlbmVyYXRlQ2FsbGJhY2tJRCgp
OwotICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9zY2hlZHVsZVN0YXRpc3RpY3NQcm9jZXNzaW5nQ2Fs
bGJhY2tNYXAuYWRkKGNhbGxiYWNrSWQsIFtwcm90ZWN0ZWRQcm9jZXNzUG9vbCA9IG1ha2VSZWYo
bV9wcm9jZXNzUG9vbCksIHRva2VuID0gdGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9r
ZW4oKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBt
dXRhYmxlIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKLSAgICB9KTsKLSAgICBBU1NF
UlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOwotICAgIHNlbmQoTWVz
c2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpVcGRhdGVQcmV2YWxlbnREb21haW5zVG9CbG9ja0Nvb2tp
ZXNGb3Ioc2Vzc2lvbklELCBkb21haW5zVG9CbG9jaywgY2FsbGJhY2tJZCksIDApOwotfQogCi12
b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZFVwZGF0ZUJsb2NrQ29va2llcyh1aW50NjRfdCBj
YWxsYmFja0lkKQotewotICAgIG1fc2NoZWR1bGVTdGF0aXN0aWNzUHJvY2Vzc2luZ0NhbGxiYWNr
TWFwLnRha2UoY2FsbGJhY2tJZCkoKTsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6
Ok5ldHdvcmtQcm9jZXNzOjpVcGRhdGVQcmV2YWxlbnREb21haW5zVG9CbG9ja0Nvb2tpZXNGb3Io
c2Vzc2lvbklELCBkb21haW5zVG9CbG9jayksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsK
IH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojppc1ByZXZhbGVudFJlc291cmNlKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTU0NSwxNSAr
NDk3LDE0IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2NoZWR1bGVDb29raWVCbG9ja2lu
Z1VwZGF0ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsCiAgICAgc2VuZFdpdGhBc3luY1JlcGx5
KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6U2NoZWR1bGVDb29raWVCbG9ja2luZ1VwZGF0ZShz
ZXNzaW9uSUQpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgTmV0d29y
a1Byb2Nlc3NQcm94eTo6c2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvbmFsPFdhbGxUaW1lPiBtb2RpZmllZFNpbmNlLCBTaG91
bGRHcmFuZGZhdGhlciBzaG91bGRHcmFuZGZhdGhlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzY2hlZHVs
ZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0
aW9uYWw8V2FsbFRpbWU+IG1vZGlmaWVkU2luY2UsIFNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGlj
cyBzaG91bGRHcmFuZGZhdGhlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQogewogICAgIGlmICghY2FuU2VuZE1lc3NhZ2UoKSkgewogICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcigpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYm9vbCBzaG91
bGRHcmFuZGZhdGhlckJvb2wgPSBzaG91bGRHcmFuZGZhdGhlciA9PSBTaG91bGRHcmFuZGZhdGhl
cjo6WWVzOwotICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6
OlNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoc2Vzc2lvbklELCBtb2RpZmllZFNp
bmNlLCBzaG91bGRHcmFuZGZhdGhlckJvb2wpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6U2NoZWR1
bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChzZXNzaW9uSUQsIG1vZGlmaWVkU2luY2UsIHNo
b3VsZEdyYW5kZmF0aGVyKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCiB2b2lk
IE5ldHdvcmtQcm9jZXNzUHJveHk6OnNjaGVkdWxlU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzUHJv
Y2Vzc2luZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTYwMywxNyArNTU0LDcgQEAgdm9pZCBOZXR3b3Jr
UHJvY2Vzc1Byb3h5OjpzZXRBZ2VDYXBGb3JDbGllbnRTaWRlQ29va2llcyhQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICBhdXRvIGNhbGxi
YWNrSWQgPSBnZW5lcmF0ZUNhbGxiYWNrSUQoKTsKLSAgICBhdXRvIGFkZFJlc3VsdCA9IG1fc2No
ZWR1bGVTdGF0aXN0aWNzUHJvY2Vzc2luZ0NhbGxiYWNrTWFwLmFkZChjYWxsYmFja0lkLCBbcHJv
dGVjdGVkUHJvY2Vzc1Bvb2wgPSBtYWtlUmVmKG1fcHJvY2Vzc1Bvb2wpLCB0b2tlbiA9IHRocm90
dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7Ci0gICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKCk7Ci0gICAgfSk7Ci0gICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3Vs
dC5pc05ld0VudHJ5KTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6U2V0QWdl
Q2FwRm9yQ2xpZW50U2lkZUNvb2tpZXMoc2Vzc2lvbklELCBzZWNvbmRzLCBjYWxsYmFja0lkKSwg
MCk7Ci19Ci0KLXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkU2V0QWdlQ2FwRm9yQ2xpZW50
U2lkZUNvb2tpZXModWludDY0X3QgY2FsbGJhY2tJZCkKLXsKLSAgICBtX3NjaGVkdWxlU3RhdGlz
dGljc1Byb2Nlc3NpbmdDYWxsYmFja01hcC50YWtlKGNhbGxiYWNrSWQpKCk7CisgICAgc2VuZFdp
dGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6U2V0QWdlQ2FwRm9yQ2xpZW50
U2lkZUNvb2tpZXMoc2Vzc2lvbklELCBzZWNvbmRzKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnNldFRpbWVUb0xpdmVVc2VySW50
ZXJhY3Rpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTZWNvbmRzIHNlY29uZHMsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTYyNiwxMSArNTY3
LDYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRUaW1lVG9MaXZlVXNlckludGVyYWN0
aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwKICAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVz
c2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpTZXRUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uKHNlc3Np
b25JRCwgc2Vjb25kcyksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBO
ZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRVcGRhdGVSdW50aW1lU2V0dGluZ3ModWludDY0X3QgY2Fs
bGJhY2tJZCkKLXsKLSAgICBtX3VwZGF0ZVJ1bnRpbWVTZXR0aW5nc0NhbGxiYWNrTWFwLnRha2Uo
Y2FsbGJhY2tJZCkoKTsKLX0KLQogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXROb3RpZnlQ
YWdlc1doZW5UZWxlbWV0cnlXYXNDYXB0dXJlZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGJv
b2wgdmFsdWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKICAgICBpZiAoIWNhblNlbmRNZXNzYWdlKCkpIHsKQEAgLTc2MSwxNyArNjk3LDE0IEBAIHZv
aWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0R3JhbmRmYXRoZXJlZChQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIGNvbnN0IFN0cmluCiAgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpO
ZXR3b3JrUHJvY2Vzczo6U2V0R3JhbmRmYXRoZXJlZChzZXNzaW9uSUQsIHJlc291cmNlRG9tYWlu
LCBpc0dyYW5kZmF0aGVyZWQpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZv
aWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6aGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwgY29uc3QgU3Ry
aW5nJiBmaXJzdFBhcnR5RG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQs
IFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjYWxsYmFjaykKK3ZvaWQgTmV0
d29ya1Byb2Nlc3NQcm94eTo6aGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwgY29uc3QgU3RyaW5nJiBm
aXJzdFBhcnR5RG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYg
KCFjYW5TZW5kTWVzc2FnZSgpKSB7Ci0gICAgICAgIGNhbGxiYWNrKGZhbHNlKTsKKyAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
YXV0byBjb250ZXh0SWQgPSBnZW5lcmF0ZUNhbGxiYWNrSUQoKTsKLSAgICBhdXRvIGFkZFJlc3Vs
dCA9IG1fc3RvcmFnZUFjY2Vzc1Jlc3BvbnNlQ2FsbGJhY2tNYXAuYWRkKGNvbnRleHRJZCwgV1RG
TW92ZShjYWxsYmFjaykpOwotICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQu
aXNOZXdFbnRyeSk7Ci0gICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6Okhhc1N0b3Jh
Z2VBY2Nlc3NGb3JGcmFtZShzZXNzaW9uSUQsIHJlc291cmNlRG9tYWluLCBmaXJzdFBhcnR5RG9t
YWluLCBmcmFtZUlELCBwYWdlSUQsIGNvbnRleHRJZCksIDApOworICAgIHNlbmRXaXRoQXN5bmNS
ZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6Okhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZShz
ZXNzaW9uSUQsIHJlc291cmNlRG9tYWluLCBmaXJzdFBhcnR5RG9tYWluLCBmcmFtZUlELCBwYWdl
SUQpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nl
c3NQcm94eTo6aGFzU3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0
IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwg
T3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTc5MSwzMyArNzI0LDE3
IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBhdXRvIGNvbnRleHRJZCA9IGdlbmVyYXRlQ2FsbGJhY2tJRCgpOwotICAgIGF1dG8gYWRkUmVz
dWx0ID0gbV9zdG9yYWdlQWNjZXNzUmVxdWVzdFJlc3BvbnNlQ2FsbGJhY2tNYXAuYWRkKGNvbnRl
eHRJZCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotICAgIEFTU0VSVF9VTlVTRUQoYWRk
UmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7Ci0gICAgc2VuZChNZXNzYWdlczo6TmV0d29y
a1Byb2Nlc3M6OlJlcXVlc3RTdG9yYWdlQWNjZXNzKHNlc3Npb25JRCwgcmVzb3VyY2VEb21haW4s
IGZpcnN0UGFydHlEb21haW4sIGZyYW1lSUQsIHBhZ2VJRCwgcHJvbXB0RW5hYmxlZCwgY29udGV4
dElkKSwgMCk7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vz
czo6UmVxdWVzdFN0b3JhZ2VBY2Nlc3Moc2Vzc2lvbklELCByZXNvdXJjZURvbWFpbiwgZmlyc3RQ
YXJ0eURvbWFpbiwgZnJhbWVJRCwgcGFnZUlELCBwcm9tcHRFbmFibGVkKSwgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmdyYW50U3Rv
cmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcmVzb3Vy
Y2VEb21haW4sIGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwgT3B0aW9uYWw8dWludDY0
X3Q+IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgYm9vbCB1c2VyV2FzUHJvbXB0ZWQsIFdURjo6
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQg
TmV0d29ya1Byb2Nlc3NQcm94eTo6Z3JhbnRTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgY29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwgY29uc3QgU3RyaW5nJiBmaXJz
dFBhcnR5RG9tYWluLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgdWludDY0X3QgcGFnZUlE
LCBib29sIHVzZXJXYXNQcm9tcHRlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIWNhblNlbmRNZXNzYWdlKCkpIHsKICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgYXV0byBjb250ZXh0SWQgPSBnZW5lcmF0ZUNhbGxiYWNrSUQoKTsKLSAgICBhdXRvIGFkZFJl
c3VsdCA9IG1fc3RvcmFnZUFjY2Vzc1Jlc3BvbnNlQ2FsbGJhY2tNYXAuYWRkKGNvbnRleHRJZCwg
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0
LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7Ci0gICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nl
c3M6OkdyYW50U3RvcmFnZUFjY2VzcyhzZXNzaW9uSUQsIHJlc291cmNlRG9tYWluLCBmaXJzdFBh
cnR5RG9tYWluLCBmcmFtZUlELnZhbHVlKCksIHBhZ2VJRCwgdXNlcldhc1Byb21wdGVkLCBjb250
ZXh0SWQpLCAwKTsKLX0KLQotdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzdG9yYWdlQWNjZXNz
UmVxdWVzdFJlc3VsdCh1bnNpZ25lZCBzdGF0dXMsIHVpbnQ2NF90IGNvbnRleHRJZCkKLXsKLSAg
ICBtX3N0b3JhZ2VBY2Nlc3NSZXF1ZXN0UmVzcG9uc2VDYWxsYmFja01hcC50YWtlKGNvbnRleHRJ
ZCkoc3RhdGljX2Nhc3Q8U3RvcmFnZUFjY2Vzc1N0YXR1cz4oc3RhdHVzKSk7Ci19Ci0KLXZvaWQg
TmV0d29ya1Byb2Nlc3NQcm94eTo6c3RvcmFnZUFjY2Vzc09wZXJhdGlvblJlc3VsdChib29sIHdh
c0dyYW50ZWQsIHVpbnQ2NF90IGNvbnRleHRJZCkKLXsKLSAgICBtX3N0b3JhZ2VBY2Nlc3NSZXNw
b25zZUNhbGxiYWNrTWFwLnRha2UoY29udGV4dElkKSh3YXNHcmFudGVkKTsKKyAgICBzZW5kV2l0
aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpHcmFudFN0b3JhZ2VBY2Nlc3Mo
c2Vzc2lvbklELCByZXNvdXJjZURvbWFpbiwgZmlyc3RQYXJ0eURvbWFpbiwgZnJhbWVJRC52YWx1
ZSgpLCBwYWdlSUQsIHVzZXJXYXNQcm9tcHRlZCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZW1vdmVBbGxTdG9yYWdlQWNjZXNz
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQpAQCAtODI3LDM0ICs3NDQsMTcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vz
c1Byb3h5OjpyZW1vdmVBbGxTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
Q29tcGwKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gY29udGV4dElkID0gZ2Vu
ZXJhdGVDYWxsYmFja0lEKCk7Ci0gICAgYXV0byBhZGRSZXN1bHQgPSBtX3JlbW92ZUFsbFN0b3Jh
Z2VBY2Nlc3NDYWxsYmFja01hcC5hZGQoY29udGV4dElkLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7Ci0gICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5
KTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6UmVtb3ZlQWxsU3RvcmFnZUFj
Y2VzcyhzZXNzaW9uSUQsIGNvbnRleHRJZCksIDApOworICAgIHNlbmRXaXRoQXN5bmNSZXBseShN
ZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlJlbW92ZUFsbFN0b3JhZ2VBY2Nlc3Moc2Vzc2lvbklE
KSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNz
UHJveHk6OmRpZFJlbW92ZUFsbFN0b3JhZ2VBY2Nlc3ModWludDY0X3QgY29udGV4dElkKQotewot
ICAgIG1fcmVtb3ZlQWxsU3RvcmFnZUFjY2Vzc0NhbGxiYWNrTWFwLnRha2UoY29udGV4dElkKSgp
OwotfQotCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRy
aWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0
b3I8U3RyaW5nPiYmIGRvbWFpbnMpPiYmIGNhbGxiYWNrKQordm9pZCBOZXR3b3JrUHJvY2Vzc1By
b3h5OjpnZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4gZG9tYWlucyk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFjYW5TZW5kTWVzc2FnZSgpKSB7Ci0gICAgICAgIGNh
bGxiYWNrKHsgfSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBhdXRvIGNvbnRleHRJZCA9IGdlbmVyYXRlQ2FsbGJhY2tJRCgp
OwotICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9hbGxTdG9yYWdlQWNjZXNzRW50cmllc0NhbGxiYWNr
TWFwLmFkZChjb250ZXh0SWQsIFdURk1vdmUoY2FsbGJhY2spKTsKLSAgICBBU1NFUlRfVU5VU0VE
KGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOwotICAgIHNlbmQoTWVzc2FnZXM6Ok5l
dHdvcmtQcm9jZXNzOjpHZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcyhzZXNzaW9uSUQsIGNvbnRl
eHRJZCksIDApOwotfQotCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmFsbFN0b3JhZ2VBY2Nl
c3NFbnRyaWVzUmVzdWx0KFZlY3RvcjxTdHJpbmc+JiYgZG9tYWlucywgdWludDY0X3QgY29udGV4
dElkKQotewotICAgIGF1dG8gY2FsbGJhY2sgPSBtX2FsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzQ2Fs
bGJhY2tNYXAudGFrZShjb250ZXh0SWQpOwotICAgIGNhbGxiYWNrKFdURk1vdmUoZG9tYWlucykp
OworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkdldEFs
bFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKHNlc3Npb25JRCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRDYWNoZU1heEFnZUNhcEZv
clByZXZhbGVudFJlc291cmNlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFNlY29uZHMgc2Vj
b25kcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAt
ODYzLDE2ICs3NjMsOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnNldENhY2hlTWF4QWdl
Q2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKFBBTDo6U2Vzc2lvbklECiAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCi0gICAgYXV0byBjb250
ZXh0SWQgPSBnZW5lcmF0ZUNhbGxiYWNrSUQoKTsKLSAgICBhdXRvIGFkZFJlc3VsdCA9IG1fdXBk
YXRlUnVudGltZVNldHRpbmdzQ2FsbGJhY2tNYXAuYWRkKGNvbnRleHRJZCwgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOwotICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQu
aXNOZXdFbnRyeSk7Ci0gICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlNldENhY2hl
TWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKHNlc3Npb25JRCwgc2Vjb25kcywgY29udGV4
dElkKSwgMCk7Ci19CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkU2V0Q2FjaGVNYXhB
Z2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXModWludDY0X3QgY29udGV4dElkKQotewotICAgIG1f
dXBkYXRlUnVudGltZVNldHRpbmdzQ2FsbGJhY2tNYXAudGFrZShjb250ZXh0SWQpKCk7CisgICAg
c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6U2V0Q2FjaGVNYXhB
Z2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoc2Vzc2lvbklELCBzZWNvbmRzKSwgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnNldENh
Y2hlTWF4QWdlQ2FwKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU2Vjb25kcyBzZWNvbmRzLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC04ODIsMTAg
Kzc3NCw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0Q2FjaGVNYXhBZ2VDYXAoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTZWNvbmRzIHNlCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAgICAgCi0gICAgYXV0byBjb250ZXh0SWQgPSBnZW5lcmF0ZUNhbGxiYWNrSUQoKTsKLSAgICBh
dXRvIGFkZFJlc3VsdCA9IG1fdXBkYXRlUnVudGltZVNldHRpbmdzQ2FsbGJhY2tNYXAuYWRkKGNv
bnRleHRJZCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotICAgIEFTU0VSVF9VTlVTRUQo
YWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7Ci0gICAgc2VuZChNZXNzYWdlczo6TmV0
d29ya1Byb2Nlc3M6OlNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKHNlc3Np
b25JRCwgc2Vjb25kcywgY29udGV4dElkKSwgMCk7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1l
c3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6U2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNv
dXJjZXMoc2Vzc2lvbklELCBzZWNvbmRzKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwog
fQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnNldEdyYW5kZmF0aGVyaW5nVGltZShQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIFNlY29uZHMgc2Vjb25kcywgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtOTU1LDEwICs4NDQsNyBAQCB2b2lkIE5l
dHdvcmtQcm9jZXNzUHJveHk6OnJlc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJj
ZXMoUEFMOjpTZXNzaW9uSQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIGF1dG8g
Y29udGV4dElkID0gZ2VuZXJhdGVDYWxsYmFja0lEKCk7Ci0gICAgYXV0byBhZGRSZXN1bHQgPSBt
X3VwZGF0ZVJ1bnRpbWVTZXR0aW5nc0NhbGxiYWNrTWFwLmFkZChjb250ZXh0SWQsIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKLSAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVz
dWx0LmlzTmV3RW50cnkpOwotICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpSZXNl
dENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKHNlc3Npb25JRCwgY29udGV4dElk
KSwgMCk7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6
UmVzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhzZXNzaW9uSUQpLCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6
cmVzZXRQYXJhbWV0ZXJzVG9EZWZhdWx0VmFsdWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtOTgxLDEz
ICs4NjcsMTIgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzdWJtaXRUZWxlbWV0cnkoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGEKICAgICBzZW5kV2l0aEFzeW5jUmVw
bHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpTdWJtaXRUZWxlbWV0cnkoc2Vzc2lvbklEKSwg
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJv
eHk6OnNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBib29sIHNob3VsZEdyYW5kZmF0aGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnNjaGVkdWxl
Q2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTaG91
bGRHcmFuZGZhdGhlclN0YXRpc3RpY3Mgc2hvdWxkR3JhbmRmYXRoZXIsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIWNhblNlbmRNZXNz
YWdlKCkpIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KLSAgICAKIAogICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1By
b2Nlc3M6OlNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoc2Vzc2lvbklELCB7IH0s
IHNob3VsZEdyYW5kZmF0aGVyKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuaAppbmRleCBlMzUxYTA2Yjc1YWQ3OGU1MDk5NWZhMWY4ZmQ4YmJhMzhlYmIwYTllLi4zMzUz
ODBiMTBhNWM0ZWQyYTc3ZDE5M2EyOWUyOTFiYzJhZTQ3NWVkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01Nyw3ICs1
Nyw4IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgRG93bmxvYWRQcm94eTsKIGNsYXNzIERv
d25sb2FkUHJveHlNYXA7CiBjbGFzcyBXZWJQcm9jZXNzUG9vbDsKLWVudW0gY2xhc3MgU3RvcmFn
ZUFjY2Vzc1N0YXR1cyA6IHVuc2lnbmVkOworZW51bSBjbGFzcyBTaG91bGRHcmFuZGZhdGhlclN0
YXRpc3RpY3MgOiBib29sOworZW51bSBjbGFzcyBTdG9yYWdlQWNjZXNzU3RhdHVzIDogdWludDhf
dDsKIGVudW0gY2xhc3MgV2Vic2l0ZURhdGFGZXRjaE9wdGlvbjsKIGVudW0gY2xhc3MgV2Vic2l0
ZURhdGFUeXBlOwogc3RydWN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOwpAQCAt
ODAsNyArODEsNyBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElD
UykKICAgICB2b2lkIGNsZWFyUHJldmFsZW50UmVzb3VyY2UoUEFMOjpTZXNzaW9uSUQsIGNvbnN0
IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAg
ICAgdm9pZCBjbGVhclVzZXJJbnRlcmFjdGlvbihQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5n
JiByZXNvdXJjZURvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lk
IGR1bXBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmKTsKKyAgICB2b2lkIGR1bXBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyk+
JiYpOwogICAgIHZvaWQgdXBkYXRlUHJldmFsZW50RG9tYWluc1RvQmxvY2tDb29raWVzRm9yKFBB
TDo6U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvQmxvY2ssIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBoYXNIYWRVc2VySW50ZXJhY3Rpb24o
UEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIHZvaWQgaXNHcmFuZGZhdGhlcmVkKFBBTDo6U2Vz
c2lvbklELCBjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPiYmKTsKQEAgLTEwNywxNSArMTA4LDE1IEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dFByZXZhbGVudFJlc291cmNlKFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHJlc291cmNl
RG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0UHJldmFs
ZW50UmVzb3VyY2VGb3JEZWJ1Z01vZGUoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcmVz
b3VyY2VEb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRW
ZXJ5UHJldmFsZW50UmVzb3VyY2UoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcmVzb3Vy
Y2VEb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBoYXNTdG9y
YWdlQWNjZXNzRm9yRnJhbWUoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VE
b21haW4sIGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwg
dWludDY0X3QgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNr
KTsKLSAgICB2b2lkIGdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKFBBTDo6U2Vzc2lvbklELCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYgZG9tYWlucyk+JiYpOwotICAg
IHZvaWQgZ3JhbnRTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHJl
c291cmNlRG9tYWluLCBjb25zdCBTdHJpbmcmIGZpcnN0UGFydHlEb21haW4sIE9wdGlvbmFsPHVp
bnQ2NF90PiBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIGJvb2wgdXNlcldhc1Byb21wdGVkLCBX
VEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQgaGFzU3RvcmFn
ZUFjY2Vzc0ZvckZyYW1lKFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHJlc291cmNlRG9t
YWluLCBjb25zdCBTdHJpbmcmIGZpcnN0UGFydHlEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVp
bnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9p
ZCBnZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiBkb21haW5zKT4mJik7CisgICAgdm9pZCBncmFudFN0
b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4s
IGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1l
SUQsIHVpbnQ2NF90IHBhZ2VJRCwgYm9vbCB1c2VyV2FzUHJvbXB0ZWQsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIHZvaWQgaGFzU3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Np
b25JRCwgY29uc3QgU3RyaW5nJiBzdWJGcmFtZUhvc3QsIGNvbnN0IFN0cmluZyYgdG9wRnJhbWVI
b3N0LCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNz
KFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBjb25zdCBTdHJp
bmcmIGZpcnN0UGFydHlEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1aW50NjRf
dCBwYWdlSUQsIGJvb2wgcHJvbXB0RW5hYmxlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9y
YWdlQWNjZXNzU3RhdHVzKT4mJik7CiAgICAgdm9pZCByZXNldFBhcmFtZXRlcnNUb0RlZmF1bHRW
YWx1ZXMoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAg
dm9pZCByZW1vdmVBbGxTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgc2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lz
dGVudChQQUw6OlNlc3Npb25JRCwgYm9vbCBzaG91bGRHcmFuZGZhdGhlciwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lkIHNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNp
c3RlbnQoUEFMOjpTZXNzaW9uSUQsIE9wdGlvbmFsPFdhbGxUaW1lPiBtb2RpZmllZFNpbmNlLCBT
aG91bGRHcmFuZGZhdGhlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lk
IHNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoUEFMOjpTZXNzaW9uSUQsIFNob3Vs
ZEdyYW5kZmF0aGVyU3RhdGlzdGljcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAg
ICB2b2lkIHNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoUEFMOjpTZXNzaW9uSUQs
IE9wdGlvbmFsPFdhbGxUaW1lPiBtb2RpZmllZFNpbmNlLCBTaG91bGRHcmFuZGZhdGhlclN0YXRp
c3RpY3MsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzY2hlZHVsZUNv
b2tpZUJsb2NraW5nVXBkYXRlKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOwogICAgIHZvaWQgc3VibWl0VGVsZW1ldHJ5KFBBTDo6U2Vzc2lvbklELCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2
YWxlbnRSZXNvdXJjZXMoUEFMOjpTZXNzaW9uSUQsIFNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJik7CkBAIC0xODQsMTUgKzE4NSw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBsb2dE
aWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1ZSh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFN0cmluZyYg
bWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgZG91YmxlIHZhbHVlLCB1bnNpZ25l
ZCBzaWduaWZpY2FudEZpZ3VyZXMsIFdlYkNvcmU6OlNob3VsZFNhbXBsZSk7CiAgICAgdm9pZCBs
b2dHbG9iYWxEaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1ZShjb25zdCBTdHJpbmcmIG1lc3NhZ2Us
IGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIGRvdWJsZSB2YWx1ZSwgdW5zaWduZWQgc2lnbmlm
aWNhbnRGaWd1cmVzLCBXZWJDb3JlOjpTaG91bGRTYW1wbGUpOwogI2lmIEVOQUJMRShSRVNPVVJD
RV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgdm9pZCBkaWREdW1wUmVzb3VyY2VMb2FkU3RhdGlzdGlj
cyhTdHJpbmcgZHVtcGVkU3RhdGlzdGljcywgdWludDY0X3QgY2FsbGJhY2tJZCk7Ci0gICAgdm9p
ZCBkaWRVcGRhdGVCbG9ja0Nvb2tpZXModWludDY0X3QgY29udGV4dElkKTsKLSAgICB2b2lkIGRp
ZFNldEFnZUNhcEZvckNsaWVudFNpZGVDb29raWVzKHVpbnQ2NF90IGNvbnRleHRJZCk7Ci0gICAg
dm9pZCBzdG9yYWdlQWNjZXNzT3BlcmF0aW9uUmVzdWx0KGJvb2wgd2FzR3JhbnRlZCwgdWludDY0
X3QgY29udGV4dElkKTsKLSAgICB2b2lkIHN0b3JhZ2VBY2Nlc3NSZXF1ZXN0UmVzdWx0KHVuc2ln
bmVkIHdhc0dyYW50ZWQsIHVpbnQ2NF90IGNvbnRleHRJZCk7Ci0gICAgdm9pZCBhbGxTdG9yYWdl
QWNjZXNzRW50cmllc1Jlc3VsdChWZWN0b3I8U3RyaW5nPiYmIGRvbWFpbnMsIHVpbnQ2NF90IGNv
bnRleHRJZCk7Ci0gICAgdm9pZCBkaWRSZW1vdmVBbGxTdG9yYWdlQWNjZXNzKHVpbnQ2NF90IGNv
bnRleHRJZCk7Ci0gICAgdm9pZCBkaWRTZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291
cmNlcyh1aW50NjRfdCBjb250ZXh0SWQpOwotICAgIHZvaWQgZGlkVXBkYXRlUnVudGltZVNldHRp
bmdzKHVpbnQ2NF90IGNvbnRleHRJZCk7CiAgICAgdm9pZCBub3RpZnlSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzUHJvY2Vzc2VkKCk7CiAgICAgdm9pZCBub3RpZnlXZWJzaXRlRGF0YURlbGV0aW9uRm9y
VG9wUHJpdmF0ZWx5T3duZWREb21haW5zRmluaXNoZWQoKTsKICAgICB2b2lkIG5vdGlmeVdlYnNp
dGVEYXRhU2NhbkZvclRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW5zRmluaXNoZWQoKTsKQEAg
LTIzOSwxNyArMjMxLDYgQEAgcHJpdmF0ZToKICAgICAKICAgICB1bnNpZ25lZCBtX3N5bmNBbGxD
b29raWVzQ291bnRlciB7IDAgfTsKIAotI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJ
Q1MpCi0gICAgSGFzaE1hcDx1aW50NjRfdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPj4gbV9z
Y2hlZHVsZVN0YXRpc3RpY3NQcm9jZXNzaW5nQ2FsbGJhY2tNYXA7Ci0gICAgSGFzaE1hcDx1aW50
NjRfdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIHdhc0dyYW50ZWQpPj4gbV9zdG9yYWdl
QWNjZXNzUmVzcG9uc2VDYWxsYmFja01hcDsKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NTdGF0dXMgd2FzR3JhbnRlZCk+PiBtX3N0b3Jh
Z2VBY2Nlc3NSZXF1ZXN0UmVzcG9uc2VDYWxsYmFja01hcDsKLSAgICBIYXNoTWFwPHVpbnQ2NF90
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+PiBtX3JlbW92ZUFsbFN0b3JhZ2VBY2Nlc3NDYWxs
YmFja01hcDsKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZl
Y3RvcjxTdHJpbmc+JiYgZG9tYWlucyk+PiBtX2FsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzQ2FsbGJh
Y2tNYXA7Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25z
dCBTdHJpbmcmKT4+IG1fZHVtcFN0YXRpc3RpY3NDYWxsYmFja01hcDsKLSNlbmRpZgotCi0gICAg
SGFzaE1hcDx1aW50NjRfdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPj4gbV91cGRhdGVSdW50
aW1lU2V0dGluZ3NDYWxsYmFja01hcDsKLQogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMp
CiAgICAgSGFzaFNldDxXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSo+IG1fd2ViVXNlckNv
bnRlbnRDb250cm9sbGVyUHJveGllczsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2Vz
LmluCmluZGV4IDg0ZTBlOGY2NDQxMThlYzQ3Mzc0ZTJkY2IzOGU0M2VhMTNjODhlMzUuLjFiYzMw
ZGJmZWYxMDA5ZTI2MDIyMWUwYzg2OGI1ZDMxNzc3MjU2MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
bWVzc2FnZXMuaW4KQEAgLTQxLDE1ICs0MSw2IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNz
UHJveHkgTGVnYWN5UmVjZWl2ZXIgewogICAgIExvZ0dsb2JhbERpYWdub3N0aWNNZXNzYWdlV2l0
aFZhbHVlKFN0cmluZyBtZXNzYWdlLCBTdHJpbmcgZGVzY3JpcHRpb24sIGRvdWJsZSB2YWx1ZSwg
dW5zaWduZWQgc2lnbmlmaWNhbnRGaWd1cmVzLCBlbnVtOmJvb2wgV2ViQ29yZTo6U2hvdWxkU2Ft
cGxlIHNob3VsZFNhbXBsZSkKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1Mp
Ci0gICAgRGlkRHVtcFJlc291cmNlTG9hZFN0YXRpc3RpY3MoU3RyaW5nIGR1bXBlZFN0YXRpc3Rp
Y3MsIHVpbnQ2NF90IGNhbGxiYWNrSWQpCi0gICAgRGlkVXBkYXRlQmxvY2tDb29raWVzKHVpbnQ2
NF90IGNhbGxiYWNrSWQpCi0gICAgRGlkU2V0QWdlQ2FwRm9yQ2xpZW50U2lkZUNvb2tpZXModWlu
dDY0X3QgY2FsbGJhY2tJZCkKLSAgICBTdG9yYWdlQWNjZXNzT3BlcmF0aW9uUmVzdWx0KGJvb2wg
d2FzR3JhbnRlZCwgdWludDY0X3QgY29udGV4dElkKQotICAgIFN0b3JhZ2VBY2Nlc3NSZXF1ZXN0
UmVzdWx0KHVuc2lnbmVkIHdhc0dyYW50ZWQsIHVpbnQ2NF90IGNvbnRleHRJZCkKLSAgICBBbGxT
dG9yYWdlQWNjZXNzRW50cmllc1Jlc3VsdChWZWN0b3I8U3RyaW5nPiBkb21haW5zLCB1aW50NjRf
dCBjb250ZXh0SWQpCi0gICAgRGlkUmVtb3ZlQWxsU3RvcmFnZUFjY2Vzcyh1aW50NjRfdCBjb250
ZXh0SWQpCi0gICAgRGlkU2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXModWlu
dDY0X3QgY29udGV4dElkKQotICAgIERpZFVwZGF0ZVJ1bnRpbWVTZXR0aW5ncyh1aW50NjRfdCBj
b250ZXh0SWQpCiAgICAgTm90aWZ5UmVzb3VyY2VMb2FkU3RhdGlzdGljc1Byb2Nlc3NlZCgpCiAg
ICAgTm90aWZ5V2Vic2l0ZURhdGFEZWxldGlvbkZvclRvcFByaXZhdGVseU93bmVkRG9tYWluc0Zp
bmlzaGVkKCkKICAgICBOb3RpZnlXZWJzaXRlRGF0YVNjYW5Gb3JUb3BQcml2YXRlbHlDb250cm9s
bGVkRG9tYWluc0ZpbmlzaGVkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmNwcAppbmRleCBlMGQ1YmIxNGYyYzg0Y2E1OTJjNTFlM2ViNWYwYWY5OTgzODVmOTJmLi5h
NGNhN2Q5MjMyY2NlYWEzNzBjMzBmYTQ1ZWIyNGYwNTkzOGM1MzRmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC01OTEsOSArNTkxLDYgQEAgTmV0d29y
a1Byb2Nlc3NQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OmVuc3VyZU5ldHdvcmtQcm9jZXNzKFdlYnNp
dGVEYXRhU3RvcmUqIHdpdGgKICAgICAgICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPmFkZFNlc3Np
b24oKndlYnNpdGVEYXRhU3RvcmUpOwogICAgIH0KIAotICAgIGlmIChtX3dlYnNpdGVEYXRhU3Rv
cmUpCi0gICAgICAgIG1fd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLmRpZENy
ZWF0ZU5ldHdvcmtQcm9jZXNzKCk7Ci0KICAgICByZXR1cm4gKm1fbmV0d29ya1Byb2Nlc3M7CiB9
CiAKQEAgLTEwMzQsNiArMTAzMSw5IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnByb2Nlc3NEaWRG
aW5pc2hMYXVuY2hpbmcoV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzKQogICAgICAgICBwcm9jZXNz
LT5jb25uZWN0aW9uKCktPmlnbm9yZVRpbWVvdXRzRm9yVGVzdGluZygpOwogCiAgICAgbV9jb25u
ZWN0aW9uQ2xpZW50LmRpZENyZWF0ZUNvbm5lY3Rpb24odGhpcywgcHJvY2Vzcy0+d2ViQ29ubmVj
dGlvbigpKTsKKworICAgIGlmIChtX3dlYnNpdGVEYXRhU3RvcmUpCisgICAgICAgIG1fd2Vic2l0
ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLmRpZENyZWF0ZU5ldHdvcmtQcm9jZXNzKCk7
CiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmRpc2Nvbm5lY3RQcm9jZXNzKFdlYlByb2Nlc3NQ
cm94eSogcHJvY2VzcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNp
dGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKaW5kZXggYjE4ZmNlNzkwNmY4ZTJiYjhjNWJk
MjQ2NDQ2MDYwOGU0Y2NmZWFkZC4uYjdjODE4MjMzZWM0ODA0Yjg0Y2I5YWU4MDIyYWZmNGZjZTJm
OGQyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURh
dGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKQEAgLTMzLDYgKzMzLDggQEAKICNpbmNsdWRlICJEZXZp
Y2VJZEhhc2hTYWx0U3RvcmFnZS5oIgogI2luY2x1ZGUgIk1vY2tBdXRoZW50aWNhdG9yTWFuYWdl
ci5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJTaG91
bGRHcmFuZGZhdGhlclN0YXRpc3RpY3MuaCIKKyNpbmNsdWRlICJTdG9yYWdlQWNjZXNzU3RhdHVz
LmgiCiAjaW5jbHVkZSAiU3RvcmFnZU1hbmFnZXIuaCIKICNpbmNsdWRlICJXZWJDb29raWVNYW5h
Z2VyUHJveHkuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIKQEAgLTk0Miw3ICs5
NDQsNyBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnJlbW92ZURhdGEoT3B0aW9uU2V0PFdlYnNp
dGVEYXRhVHlwZT4gZGF0YVR5cGVzLCBXYWxsVGltZQogICAgICAgICAKICAgICAgICAgLy8gSWYg
d2UgYXJlIGRlbGV0aW5nIGFsbCBvZiB0aGUgZGF0YSB0eXBlcyB0aGF0IHRoZSByZXNvdXJjZSBs
b2FkIHN0YXRpc3RpY3Mgc3RvcmUgbW9uaXRvcnMKICAgICAgICAgLy8gd2UgZG8gbm90IG5lZWQg
dG8gcmUtZ3JhbmRmYXRoZXIgb2xkIGRhdGEuCi0gICAgICAgIGF1dG8gc2hvdWxkR3JhbmRmYXRo
ZXIgPSAoKG1vbml0b3JlZFR5cGVzUmF3ICYgZGVsZXRlZFR5cGVzUmF3KSA9PSBtb25pdG9yZWRU
eXBlc1JhdykgPyBTaG91bGRHcmFuZGZhdGhlcjo6Tm8gOiBTaG91bGRHcmFuZGZhdGhlcjo6WWVz
OworICAgICAgICBhdXRvIHNob3VsZEdyYW5kZmF0aGVyID0gKChtb25pdG9yZWRUeXBlc1JhdyAm
IGRlbGV0ZWRUeXBlc1JhdykgPT0gbW9uaXRvcmVkVHlwZXNSYXcpID8gU2hvdWxkR3JhbmRmYXRo
ZXJTdGF0aXN0aWNzOjpObyA6IFNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljczo6WWVzOwogICAg
ICAgICAKICAgICAgICAgaWYgKG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljcykgewogICAgICAgICAg
ICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5hZGRQZW5kaW5nQ2FsbGJhY2soKTsKQEAgLTEyNTIsMTEg
KzEyNTQsMTEgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpyZW1vdmVEYXRhKE9wdGlvblNldDxX
ZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcywgY29uc3QgVmUKICAgICAgICAgLy8gd2UgZG8gbm90
IG5lZWQgdG8gcmUtZ3JhbmRmYXRoZXIgb2xkIGRhdGEuCiAgICAgICAgIGNhbGxiYWNrQWdncmVn
YXRvci0+YWRkUGVuZGluZ0NhbGxiYWNrKCk7CiAgICAgICAgIGlmICgobW9uaXRvcmVkVHlwZXNS
YXcgJiBkZWxldGVkVHlwZXNSYXcpID09IG1vbml0b3JlZFR5cGVzUmF3KQotICAgICAgICAgICAg
bV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5zY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0
ZW50KFNob3VsZEdyYW5kZmF0aGVyOjpObywgW2NhbGxiYWNrQWdncmVnYXRvcl0geworICAgICAg
ICAgICAgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5zY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQ
ZXJzaXN0ZW50KFNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljczo6Tm8sIFtjYWxsYmFja0FnZ3Jl
Z2F0b3JdIHsKICAgICAgICAgICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPnJlbW92ZVBlbmRp
bmdDYWxsYmFjaygpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
IG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+c2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lz
dGVudChTaG91bGRHcmFuZGZhdGhlcjo6WWVzLCBbY2FsbGJhY2tBZ2dyZWdhdG9yXSB7CisgICAg
ICAgICAgICBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MtPnNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFu
ZFBlcnNpc3RlbnQoU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzOjpZZXMsIFtjYWxsYmFja0Fn
Z3JlZ2F0b3JdIHsKICAgICAgICAgICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPnJlbW92ZVBl
bmRpbmdDYWxsYmFjaygpOwogICAgICAgICAgICAgfSk7CiAKQEAgLTEyOTIsMTAgKzEyOTQsOCBA
QCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNldE1heFN0YXRpc3RpY3NFbnRyaWVzKHNpemVfdCBt
YXhpbXVtRW50cnlDb3VudCwgQ29tcGxldAogICAgIAogICAgIGF1dG8gY2FsbGJhY2tBZ2dyZWdh
dG9yID0gQ2FsbGJhY2tBZ2dyZWdhdG9yOjpjcmVhdGUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpOwogCi0gICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKSB7Ci0g
ICAgICAgIGlmIChhdXRvKiBwcm9jZXNzID0gcHJvY2Vzc1Bvb2wtPm5ldHdvcmtQcm9jZXNzKCkp
Ci0gICAgICAgICAgICBwcm9jZXNzLT5zZXRNYXhTdGF0aXN0aWNzRW50cmllcyhtX3Nlc3Npb25J
RCwgbWF4aW11bUVudHJ5Q291bnQsIFtwcm9jZXNzUG9vbCwgY2FsbGJhY2tBZ2dyZWdhdG9yID0g
Y2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKLSAgICB9CisgICAgZm9yIChhdXRv
JiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKQorICAgICAgICBwcm9jZXNzUG9vbC0+ZW5z
dXJlTmV0d29ya1Byb2Nlc3MoKS5zZXRNYXhTdGF0aXN0aWNzRW50cmllcyhtX3Nlc3Npb25JRCwg
bWF4aW11bUVudHJ5Q291bnQsIFtwcm9jZXNzUG9vbCwgY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2Fs
bGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKIH0KIAogdm9pZCBXZWJzaXRlRGF0YVN0
b3JlOjpzZXRQcnVuZUVudHJpZXNEb3duVG8oc2l6ZV90IHBydW5lVGFyZ2V0Q291bnQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTEzMTAsOCArMTMx
MCw3IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6c2V0UHJ1bmVFbnRyaWVzRG93blRvKHNpemVf
dCBwcnVuZVRhcmdldENvdW50LCBDb21wbGV0aW9uCiAgICAgYXV0byBjYWxsYmFja0FnZ3JlZ2F0
b3IgPSBDYWxsYmFja0FnZ3JlZ2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7CiAKICAgICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xzKCkpIHsKLSAg
ICAgICAgaWYgKGF1dG8qIHByb2Nlc3MgPSBwcm9jZXNzUG9vbC0+bmV0d29ya1Byb2Nlc3MoKSkK
LSAgICAgICAgICAgIHByb2Nlc3MtPnNldFBydW5lRW50cmllc0Rvd25UbyhtX3Nlc3Npb25JRCwg
cHJ1bmVUYXJnZXRDb3VudCwgW3Byb2Nlc3NQb29sLCBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxs
YmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOworICAgICAgICBwcm9jZXNzUG9vbC0+ZW5z
dXJlTmV0d29ya1Byb2Nlc3MoKS5zZXRQcnVuZUVudHJpZXNEb3duVG8obV9zZXNzaW9uSUQsIHBy
dW5lVGFyZ2V0Q291bnQsIFtwcm9jZXNzUG9vbCwgY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJh
Y2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKICAgICB9CiB9CiAKQEAgLTEzMjYsMTAgKzEz
MjUsOCBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNldEdyYW5kZmF0aGVyaW5nVGltZShTZWNv
bmRzIHNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVyPAogICAgIAogICAgIGF1dG8gY2FsbGJhY2tB
Z2dyZWdhdG9yID0gQ2FsbGJhY2tBZ2dyZWdhdG9yOjpjcmVhdGUoV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOwogCi0gICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scygp
KSB7Ci0gICAgICAgIGlmIChhdXRvKiBwcm9jZXNzID0gcHJvY2Vzc1Bvb2wtPm5ldHdvcmtQcm9j
ZXNzKCkpCi0gICAgICAgICAgICBwcm9jZXNzLT5zZXRHcmFuZGZhdGhlcmluZ1RpbWUobV9zZXNz
aW9uSUQsIHNlY29uZHMsIFtwcm9jZXNzUG9vbCwgY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJh
Y2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKLSAgICB9CisgICAgZm9yIChhdXRvJiBwcm9j
ZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKQorICAgICAgICBwcm9jZXNzUG9vbC0+ZW5zdXJlTmV0
d29ya1Byb2Nlc3MoKS5zZXRHcmFuZGZhdGhlcmluZ1RpbWUobV9zZXNzaW9uSUQsIHNlY29uZHMs
IFtwcm9jZXNzUG9vbCwgY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNv
cHlSZWYoKV0geyB9KTsKIH0KIAogdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzZXRDYWNoZU1heEFn
ZUNhcChTZWNvbmRzIHNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKQEAgLTEzNDQsMTAgKzEzNDEsOCBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6
OnNldENhY2hlTWF4QWdlQ2FwKFNlY29uZHMgc2Vjb25kcywgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZAogCiAgICAgYXV0byBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBDYWxsYmFja0FnZ3JlZ2F0b3I6OmNy
ZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAKLSAgICBmb3IgKGF1dG8mIHByb2Nl
c3NQb29sIDogcHJvY2Vzc1Bvb2xzKCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHByb2Nlc3MgPSBw
cm9jZXNzUG9vbC0+bmV0d29ya1Byb2Nlc3MoKSkKLSAgICAgICAgICAgIHByb2Nlc3MtPnNldENh
Y2hlTWF4QWdlQ2FwKG1fc2Vzc2lvbklELCBzZWNvbmRzLCBbcHJvY2Vzc1Bvb2wsIGNhbGxiYWNr
QWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7Ci0gICAgfQor
ICAgIGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBwcm9jZXNzUG9vbHMoKSkKKyAgICAgICAgcHJv
Y2Vzc1Bvb2wtPmVuc3VyZU5ldHdvcmtQcm9jZXNzKCkuc2V0Q2FjaGVNYXhBZ2VDYXAobV9zZXNz
aW9uSUQsIHNlY29uZHMsIFtwcm9jZXNzUG9vbCwgY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJh
Y2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKIH0KIAogdm9pZCBXZWJzaXRlRGF0YVN0b3Jl
OjpzZXRNaW5pbXVtVGltZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwoU2Vjb25kcyBzZWNvbmRz
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC0xMzYx
LDEwICsxMzU2LDggQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzZXRNaW5pbXVtVGltZUJldHdl
ZW5EYXRhUmVjb3Jkc1JlbW92YWwoU2Vjb25kcyBzZWNvbmRzLAogICAgIAogICAgIGF1dG8gY2Fs
bGJhY2tBZ2dyZWdhdG9yID0gQ2FsbGJhY2tBZ2dyZWdhdG9yOjpjcmVhdGUoV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOwogCi0gICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQ
b29scygpKSB7Ci0gICAgICAgIGlmIChhdXRvKiBwcm9jZXNzID0gcHJvY2Vzc1Bvb2wtPm5ldHdv
cmtQcm9jZXNzKCkpCi0gICAgICAgICAgICBwcm9jZXNzLT5zZXRNaW5pbXVtVGltZUJldHdlZW5E
YXRhUmVjb3Jkc1JlbW92YWwobV9zZXNzaW9uSUQsIHNlY29uZHMsIFtwcm9jZXNzUG9vbCwgY2Fs
bGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKLSAg
ICB9CisgICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKQorICAgICAg
ICBwcm9jZXNzUG9vbC0+ZW5zdXJlTmV0d29ya1Byb2Nlc3MoKS5zZXRNaW5pbXVtVGltZUJldHdl
ZW5EYXRhUmVjb3Jkc1JlbW92YWwobV9zZXNzaW9uSUQsIHNlY29uZHMsIFtwcm9jZXNzUG9vbCwg
Y2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsK
IH0KICAgICAKIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6ZHVtcFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKQEAgLTE0MjUsOCArMTQxOCw3IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6c2V0UHJl
dmFsZW50UmVzb3VyY2UoY29uc3QgVVJMJiB1cmwsIENvbXBsZXRpb25IYW5kbGVyPHZvCiAgICAg
YXV0byBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBDYWxsYmFja0FnZ3JlZ2F0b3I6OmNyZWF0ZShXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAKICAgICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDog
cHJvY2Vzc1Bvb2xzKCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHByb2Nlc3MgPSBwcm9jZXNzUG9v
bC0+bmV0d29ya1Byb2Nlc3MoKSkKLSAgICAgICAgICAgIHByb2Nlc3MtPnNldFByZXZhbGVudFJl
c291cmNlKG1fc2Vzc2lvbklELCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpwcmlt
YXJ5RG9tYWluKHVybCksIFtwcm9jZXNzUG9vbCwgY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJh
Y2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKKyAgICAgICAgcHJvY2Vzc1Bvb2wtPmVuc3Vy
ZU5ldHdvcmtQcm9jZXNzKCkuc2V0UHJldmFsZW50UmVzb3VyY2UobV9zZXNzaW9uSUQsIFdlYkNv
cmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M6OnByaW1hcnlEb21haW4odXJsKSwgW3Byb2Nlc3NQ
b29sLCBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7
IH0pOwogICAgIH0KIH0KIApAQCAtMTUwOCwxMCArMTUwMCw4IEBAIHZvaWQgV2Vic2l0ZURhdGFT
dG9yZTo6c2V0U2hvdWxkQ2xhc3NpZnlSZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3Jkc1JlbW92YWwo
Ym9vbCB2CiAgICAgCiAgICAgYXV0byBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBDYWxsYmFja0FnZ3Jl
Z2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAKLSAgICBmb3IgKGF1
dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xzKCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHBy
b2Nlc3MgPSBwcm9jZXNzUG9vbC0+bmV0d29ya1Byb2Nlc3MoKSkKLSAgICAgICAgICAgIHByb2Nl
c3MtPnNldFNob3VsZENsYXNzaWZ5UmVzb3VyY2VzQmVmb3JlRGF0YVJlY29yZHNSZW1vdmFsKG1f
c2Vzc2lvbklELCB2YWx1ZSwgW3Byb2Nlc3NQb29sLCBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxs
YmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOwotICAgIH0KKyAgICBmb3IgKGF1dG8mIHBy
b2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xzKCkpCisgICAgICAgIHByb2Nlc3NQb29sLT5lbnN1cmVO
ZXR3b3JrUHJvY2VzcygpLnNldFNob3VsZENsYXNzaWZ5UmVzb3VyY2VzQmVmb3JlRGF0YVJlY29y
ZHNSZW1vdmFsKG1fc2Vzc2lvbklELCB2YWx1ZSwgW3Byb2Nlc3NQb29sLCBjYWxsYmFja0FnZ3Jl
Z2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOwogfQogCiB2b2lkIFdl
YnNpdGVEYXRhU3RvcmU6OnNldFN1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbihjb25zdCBVUkwm
IHN1YmZyYW1lLCBjb25zdCBVUkwmIHRvcEZyYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC0xNzU1LDcgKzE3NDUsNyBAQCB2b2lkIFdlYnNpdGVE
YXRhU3RvcmU6OnN1Ym1pdFRlbGVtZXRyeSgpCiAgICAgfQogfQogCi12b2lkIFdlYnNpdGVEYXRh
U3RvcmU6OnNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoV2FsbFRpbWUgbW9kaWZp
ZWRTaW5jZSwgU2hvdWxkR3JhbmRmYXRoZXIgc2hvdWxkR3JhbmRmYXRoZXIsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2Vic2l0ZURhdGFTdG9y
ZTo6c2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChXYWxsVGltZSBtb2RpZmllZFNp
bmNlLCBTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3Mgc2hvdWxkR3JhbmRmYXRoZXIsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQo
UnVuTG9vcDo6aXNNYWluKCkpOwogICAgIApAQCAtMTc3Miw3ICsxNzYyLDcgQEAgdm9pZCBXZWJz
aXRlRGF0YVN0b3JlOjpzY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFdhbGxUaW1l
IG1vZGlmaWVkU2luY2UKICAgICB9CiB9CiAKLXZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6c2NoZWR1
bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChTaG91bGRHcmFuZGZhdGhlciBzaG91bGRHcmFu
ZGZhdGhlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
dm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50
KFNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljcyBzaG91bGRHcmFuZGZhdGhlciwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChSdW5M
b29wOjppc01haW4oKSk7CiAgICAgCkBAIC0xODM3LDEwICsxODI3LDggQEAgdm9pZCBXZWJzaXRl
RGF0YVN0b3JlOjpzZXRBZ2VDYXBGb3JDbGllbnRTaWRlQ29va2llcyhPcHRpb25hbDxTZWNvbmRz
PiBzZWNvbmRzLAogewogICAgIGF1dG8gY2FsbGJhY2tBZ2dyZWdhdG9yID0gQ2FsbGJhY2tBZ2dy
ZWdhdG9yOjpjcmVhdGUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgIAotICAgIGZv
ciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBwcm9jZXNzUG9vbHMoKSkgewotICAgICAgICBpZiAoYXV0
byogcHJvY2VzcyA9IHByb2Nlc3NQb29sLT5uZXR3b3JrUHJvY2VzcygpKQotICAgICAgICAgICAg
cHJvY2Vzcy0+c2V0QWdlQ2FwRm9yQ2xpZW50U2lkZUNvb2tpZXMobV9zZXNzaW9uSUQsIHNlY29u
ZHMsIFtwcm9jZXNzUG9vbCwgY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9y
LmNvcHlSZWYoKV0geyB9KTsKLSAgICB9CisgICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IHBy
b2Nlc3NQb29scygpKQorICAgICAgICBwcm9jZXNzUG9vbC0+ZW5zdXJlTmV0d29ya1Byb2Nlc3Mo
KS5zZXRBZ2VDYXBGb3JDbGllbnRTaWRlQ29va2llcyhtX3Nlc3Npb25JRCwgc2Vjb25kcywgW3By
b2Nlc3NQb29sLCBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJl
ZigpXSB7IH0pOwogfQogCiB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNldExhc3RTZWVuKGNvbnN0
IFVSTCYgdXJsLCBTZWNvbmRzIHNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKQEAgLTE4NzMsMTAgKzE4NjEsOCBAQCB2b2lkIFdlYnNpdGVEYXRh
U3RvcmU6OnNldE5vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQoYm9vbCB2YWx1
ZSwgQ29tcAogCiAgICAgYXV0byBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBDYWxsYmFja0FnZ3JlZ2F0
b3I6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAKLSAgICBmb3IgKGF1dG8m
IHByb2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xzKCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHByb2Nl
c3MgPSBwcm9jZXNzUG9vbC0+bmV0d29ya1Byb2Nlc3MoKSkKLSAgICAgICAgICAgIHByb2Nlc3Mt
PnNldE5vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQobV9zZXNzaW9uSUQsIHZh
bHVlLCBbcHJvY2Vzc1Bvb2wsIGNhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRv
ci5jb3B5UmVmKCldIHsgfSk7Ci0gICAgfQorICAgIGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBw
cm9jZXNzUG9vbHMoKSkKKyAgICAgICAgcHJvY2Vzc1Bvb2wtPmVuc3VyZU5ldHdvcmtQcm9jZXNz
KCkuc2V0Tm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5lZChtX3Nlc3Npb25JRCwg
dmFsdWUsIFtwcm9jZXNzUG9vbCwgY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdh
dG9yLmNvcHlSZWYoKV0geyB9KTsKIH0KIAogdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzZXROb3Rp
ZnlQYWdlc1doZW5UZWxlbWV0cnlXYXNDYXB0dXJlZChib29sIHZhbHVlLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC0xODg4LDEwICsxODc0LDggQEAg
dm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzZXROb3RpZnlQYWdlc1doZW5UZWxlbWV0cnlXYXNDYXB0
dXJlZChib29sIHZhbHVlLCBDb21wbGUKICAgICAKICAgICBhdXRvIGNhbGxiYWNrQWdncmVnYXRv
ciA9IENhbGxiYWNrQWdncmVnYXRvcjo6Y3JlYXRlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KTsKICAgICAKLSAgICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xzKCkpIHsK
LSAgICAgICAgaWYgKGF1dG8qIHByb2Nlc3MgPSBwcm9jZXNzUG9vbC0+bmV0d29ya1Byb2Nlc3Mo
KSkKLSAgICAgICAgICAgIHByb2Nlc3MtPnNldE5vdGlmeVBhZ2VzV2hlblRlbGVtZXRyeVdhc0Nh
cHR1cmVkKG1fc2Vzc2lvbklELCB2YWx1ZSwgW3Byb2Nlc3NQb29sLCBjYWxsYmFja0FnZ3JlZ2F0
b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOwotICAgIH0KKyAgICBmb3Ig
KGF1dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xzKCkpCisgICAgICAgIHByb2Nlc3NQb29s
LT5lbnN1cmVOZXR3b3JrUHJvY2VzcygpLnNldE5vdGlmeVBhZ2VzV2hlblRlbGVtZXRyeVdhc0Nh
cHR1cmVkKG1fc2Vzc2lvbklELCB2YWx1ZSwgW3Byb2Nlc3NQb29sLCBjYWxsYmFja0FnZ3JlZ2F0
b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOwogfQogCiB2b2lkIFdlYnNp
dGVEYXRhU3RvcmU6Omhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIoY29uc3QgU3RyaW5n
JiByZXNvdXJjZURvbWFpbiwgY29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9tYWluLCB1aW50NjRf
dCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBo
YXNBY2Nlc3MpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtMjAyMSwxMCArMjAwNSw4IEBAIHZv
aWQgV2Vic2l0ZURhdGFTdG9yZTo6c2V0VGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbihTZWNvbmRz
IHNlY29uZHMsIENvbXBsZXRpb25ICiAKICAgICBhdXRvIGNhbGxiYWNrQWdncmVnYXRvciA9IENh
bGxiYWNrQWdncmVnYXRvcjo6Y3JlYXRlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAg
ICAKLSAgICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xzKCkpIHsKLSAgICAg
ICAgaWYgKGF1dG8qIG5ldHdvcmtQcm9jZXNzID0gcHJvY2Vzc1Bvb2wtPm5ldHdvcmtQcm9jZXNz
KCkpCi0gICAgICAgICAgICBuZXR3b3JrUHJvY2Vzcy0+c2V0VGltZVRvTGl2ZVVzZXJJbnRlcmFj
dGlvbihtX3Nlc3Npb25JRCwgc2Vjb25kcywgW2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNr
QWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7Ci0gICAgfQorICAgIGZvciAoYXV0byYgcHJvY2Vz
c1Bvb2wgOiBwcm9jZXNzUG9vbHMoKSkKKyAgICAgICAgcHJvY2Vzc1Bvb2wtPmVuc3VyZU5ldHdv
cmtQcm9jZXNzKCkuc2V0VGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbihtX3Nlc3Npb25JRCwgc2Vj
b25kcywgW2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCld
IHsgfSk7CiB9CiAKIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6bG9nVXNlckludGVyYWN0aW9uKGNv
bnN0IFVSTCYgdXJsLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCkBAIC0yMTQ1LDEwICsyMTI3LDggQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzZXRDYWNo
ZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhTZWNvbmRzIHNlY29uZHMsIEMKICNpZiBF
TkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIGF1dG8gY2FsbGJhY2tBZ2dyZWdh
dG9yID0gQ2FsbGJhY2tBZ2dyZWdhdG9yOjpjcmVhdGUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpOwogICAgIAotICAgIGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBwcm9jZXNzUG9vbHMoKSkg
ewotICAgICAgICBpZiAoYXV0byogbmV0d29ya1Byb2Nlc3MgPSBwcm9jZXNzUG9vbC0+bmV0d29y
a1Byb2Nlc3MoKSkKLSAgICAgICAgICAgIG5ldHdvcmtQcm9jZXNzLT5zZXRDYWNoZU1heEFnZUNh
cEZvclByZXZhbGVudFJlc291cmNlcyhtX3Nlc3Npb25JRCwgc2Vjb25kcywgW2NhbGxiYWNrQWdn
cmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7Ci0gICAgfQorICAg
IGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBwcm9jZXNzUG9vbHMoKSkKKyAgICAgICAgcHJvY2Vz
c1Bvb2wtPmVuc3VyZU5ldHdvcmtQcm9jZXNzKCkuc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxl
bnRSZXNvdXJjZXMobV9zZXNzaW9uSUQsIHNlY29uZHMsIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBj
YWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOwogI2Vsc2UKICAgICBVTlVTRURfUEFS
QU0oc2Vjb25kcyk7CiAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKQEAgLTIzODAsMTAgKzIzNjAs
OCBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1
Z01vZGUoYm9vbCBlbmFibGVkLCBDb21wbGV0aQogICAgIAogICAgIGF1dG8gY2FsbGJhY2tBZ2dy
ZWdhdG9yID0gQ2FsbGJhY2tBZ2dyZWdhdG9yOjpjcmVhdGUoV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpOwogICAgIAotICAgIGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBwcm9jZXNzUG9vbHMo
KSkgewotICAgICAgICBpZiAoYXV0byogcHJvY2VzcyA9IHByb2Nlc3NQb29sLT5uZXR3b3JrUHJv
Y2VzcygpKQotICAgICAgICAgICAgcHJvY2Vzcy0+c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rl
YnVnTW9kZShtX3Nlc3Npb25JRCwgZW5hYmxlZCwgW2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxi
YWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7Ci0gICAgfQorICAgIGZvciAoYXV0byYgcHJv
Y2Vzc1Bvb2wgOiBwcm9jZXNzUG9vbHMoKSkKKyAgICAgICAgcHJvY2Vzc1Bvb2wtPmVuc3VyZU5l
dHdvcmtQcm9jZXNzKCkuc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZShtX3Nlc3Np
b25JRCwgZW5hYmxlZCwgW2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5j
b3B5UmVmKCldIHsgfSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShlbmFibGVkKTsKICAgICBV
TlVTRURfUEFSQU0oY29tcGxldGlvbkhhbmRsZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCmluZGV4IGM2NTA1Mjhh
MWFiZjBmY2RiOTZkNWI5MTYxMGIyZmFiNTExNjE0Y2MuLmU1MjhmNmRkMzZjODcxNjQzZDdmMmFi
MDFmM2YyMzEwNWUyY2YxNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKQEAgLTcyLDggKzcyLDggQEAgc3RydWN0
IFdlYnNpdGVEYXRhUmVjb3JkOwogc3RydWN0IFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzOwog
CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLWVudW0gY2xhc3MgU2hvdWxk
R3JhbmRmYXRoZXI7Ci1lbnVtIGNsYXNzIFN0b3JhZ2VBY2Nlc3NTdGF0dXMgOiB1bnNpZ25lZDsK
K2VudW0gY2xhc3MgU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzIDogYm9vbDsKK2VudW0gY2xh
c3MgU3RvcmFnZUFjY2Vzc1N0YXR1cyA6IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIFN0b3JhZ2VBY2Nl
c3NQcm9tcHRTdGF0dXM7CiAjZW5kaWYKIApAQCAtMTQzLDggKzE0Myw4IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHJlbW92ZVByZXZhbGVudERvbWFpbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFp
bnMpOwogICAgIHZvaWQgcmVzZXRQYXJhbWV0ZXJzVG9EZWZhdWx0VmFsdWVzKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzY2hlZHVsZUNvb2tpZUJsb2NraW5nVXBkYXRl
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBzY2hlZHVsZUNsZWFySW5N
ZW1vcnlBbmRQZXJzaXN0ZW50KFdhbGxUaW1lIG1vZGlmaWVkU2luY2UsIFNob3VsZEdyYW5kZmF0
aGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgc2NoZWR1bGVDbGVh
ckluTWVtb3J5QW5kUGVyc2lzdGVudChTaG91bGRHcmFuZGZhdGhlciwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIHNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3Rl
bnQoV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSwgU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgc2NoZWR1bGVDbGVhckluTWVt
b3J5QW5kUGVyc2lzdGVudChTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3MsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzY2hlZHVsZVN0YXRpc3RpY3NBbmREYXRhUmVj
b3Jkc1Byb2Nlc3NpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHN1
Ym1pdFRlbGVtZXRyeSgpOwogICAgIHZvaWQgc2V0Q2FjaGVNYXhBZ2VDYXAoU2Vjb25kcywgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDk1OWUyODM2NGJlNjg5ZjE1N2QxNjYyZDUwMjg4
ZmNiYzZlZGE5MDYuLmEwYjcwY2E0NzhkNWUzMzQxYTM4MzU5Y2JmMjRkOThkZTQ0MDkxODYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
MTA5Miw2ICsxMDkyLDggQEAKIAkJNzYyQjc0OEQxMjBCQzc1QzAwODE5MzM5IC8qIFdLUHJlZmVy
ZW5jZXNSZWZQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3NjJCNzQ4NDEyMEJCQTJEMDA4MTkzMzkgLyogV0tQcmVmZXJlbmNlc1JlZlByaXZh
dGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3
QTFFMkE4NTFFRUZFODkyMDAzN0EwRTAgLyogQVBJTm90aWZpY2F0aW9uUHJvdmlkZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBMUUyQTg0MUVFRkU4
OEEwMDM3QTBFMCAvKiBBUElOb3RpZmljYXRpb25Qcm92aWRlci5oICovOyB9OwogCQk3QTNBQ0Ux
QjFFRUVGNzlCMDBBODY0QTQgLyogQVBJSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTNBQ0UxQTFF
RUVGNzhDMDBBODY0QTQgLyogQVBJSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmggKi87
IH07CisJCTdBM0ZFQ0EyMjFGN0MwOTcwMEYyNjdDRCAvKiBTdG9yYWdlQWNjZXNzU3RhdHVzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTNGRUNBMTIx
RjdDMDk3MDBGMjY3Q0QgLyogU3RvcmFnZUFjY2Vzc1N0YXR1cy5oICovOyB9OworCQk3QTQxRTlG
QjIxRjgxREFEMDBCODhDREIgLyogU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTQxRTlGQTIxRjgxREFD
MDBCODhDREIgLyogU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzLmggKi87IH07CiAJCTdBNzcy
QzhEMURERDRBMjUwMDBGMzRGMSAvKiBjb20uYXBwbGUuV2ViS2l0LnBsdWdpbi1jb21tb24uc2Ig
aW4gQ29weSBQbHVnLWluIFNhbmRib3ggUHJvZmlsZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0ExNTA2NzIxREQ1NjI5ODAwMUY0QjU4IC8qIGNvbS5hcHBsZS5XZWJLaXQu
cGx1Z2luLWNvbW1vbi5zYiAqLzsgfTsKIAkJN0E3OTFFRkExQzdDRkNGMTAwQzRDNTJCIC8qIFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTc5MUVGOTFDN0NGQjM3MDBD
NEM1MkIgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlTWVzc2FnZVJlY2VpdmVyLmNw
cCAqLzsgfTsKIAkJN0E3OTFFRkIxQzdDRkQwMTAwQzRDNTJCIC8qIFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3QTc5MUVGODFDN0NGQjEwMDBDNEM1MkIgLyogV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlTWVzc2FnZXMuaCAqLzsgfTsKQEAgLTM1MTEsNiArMzUxMyw4IEBACiAJ
CTdBMTUwNjcyMURENTYyOTgwMDFGNEI1OCAvKiBjb20uYXBwbGUuV2ViS2l0LnBsdWdpbi1jb21t
b24uc2IgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gImNvbS5hcHBsZS5XZWJLaXQucGx1Z2luLWNv
bW1vbi5zYiI7IHBhdGggPSAiRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9jb20uYXBwbGUuV2ViS2l0
LnBsdWdpbi1jb21tb24uc2IiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9Owog
CQk3QTFFMkE4NDFFRUZFODhBMDAzN0EwRTAgLyogQVBJTm90aWZpY2F0aW9uUHJvdmlkZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJTm90aWZpY2F0aW9uUHJvdmlkZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0EzQUNFMUExRUVFRjc4QzAwQTg2NEE0
IC8qIEFQSUluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBBUElJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0EzRkVDQTEyMUY3QzA5NzAwRjI2N0NEIC8qIFN0
b3JhZ2VBY2Nlc3NTdGF0dXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gU3Rv
cmFnZUFjY2Vzc1N0YXR1cy5oOyBwYXRoID0gQ2xhc3NpZmllci9TdG9yYWdlQWNjZXNzU3RhdHVz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdBNDFFOUZBMjFGODFEQUMwMEI4OENE
QiAvKiBTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzLmg7IHBhdGggPSBDbGFzc2lm
aWVyL1Nob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3QTVFMzk0OTFENUJEOEE3MDBCNEI3Q0UgLyogY29tLm1hY3JvbWVkaWEuRmxhc2gg
UGxheWVyIEVTUi5wbHVnaW4uc2IgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gImNvbS5tYWNyb21l
ZGlhLkZsYXNoIFBsYXllciBFU1IucGx1Z2luLnNiIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJN0E3OTFFRjgxQzdDRkIxMDAwQzRDNTJCIC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZU1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZU1lc3NhZ2VzLmg7IHBhdGggPSBEZXJpdmVkU291cmNl
cy9XZWJLaXQyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZU1lc3NhZ2VzLmg7IHNvdXJj
ZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTdBNzkxRUY5MUM3Q0ZCMzcwMEM0QzUy
QiAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmVNZXNzYWdlUmVjZWl2ZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlTWVzc2FnZVJlY2VpdmVyLmNwcDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktp
dDIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291
cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKQEAgLTY4OTUsNiArNjg5OSw4IEBACiAJ
CQkJN0FGQkQzNjUyMUU1MUJBQjAwNURCQUNCIC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1v
cnlTdG9yZS5oICovLAogCQkJCTdBRkJEMzY5MjFFNTQyRTgwMDVEQkFDQiAvKiBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UuY3BwICovLAogCQkJCTdBRkJEMzY4MjFFNTQy
RTgwMDVEQkFDQiAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UuaCAq
LywKKwkJCQk3QTQxRTlGQTIxRjgxREFDMDBCODhDREIgLyogU2hvdWxkR3JhbmRmYXRoZXJTdGF0
aXN0aWNzLmggKi8sCisJCQkJN0EzRkVDQTEyMUY3QzA5NzAwRjI2N0NEIC8qIFN0b3JhZ2VBY2Nl
c3NTdGF0dXMuaCAqLywKIAkJCQk3QTg0M0ExQTIxRTQxRkIyMDBERUY2NjMgLyogV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcCAqLywKIAkJCQk3QUZCRDM2MjIxRTUwRjM5MDA1REJB
Q0IgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmggKi8sCiAJCQkJN0FGQkQzNkMy
MUU1NDU0NDAwNURCQUNCIC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0cnkuY3Bw
ICovLApAQCAtOTI5OSwxMSArOTMwNSwxMyBAQAogCQkJCTgzMTNGN0VFMUY3REFFMDgwMEI5NDRF
QiAvKiBTaGFyZWRTdHJpbmdIYXNoVGFibGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzRjk2NDRF
MUZBMEY3NkUwMEM0Nzc1MCAvKiBTaGFyZWRTdHJpbmdIYXNoVGFibGVSZWFkT25seS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMUQ2N0IzMzkyMTJFMUY2MTAwRkFBNzg2IC8qIFNoYXJlU2hlZXRDYWxs
YmFja0lELmggaW4gSGVhZGVycyAqLywKKwkJCQk3QTQxRTlGQjIxRjgxREFEMDBCODhDREIgLyog
U2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzLmggaW4gSGVhZGVycyAqLywKIAkJCQk5OTUyMjZE
NjIwN0QxODQ2MDBGNzg0MjAgLyogU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkyREFGMDZENjE4QkQxQTQ3MDA4MUNFQjEgLyogU21hcnRNYWduaWZpY2F0aW9u
Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkRFNjk0M0UxOEJEMkE2ODAwNUMxNUU1
IC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNTI3MkIyOEIxNDA2OTg1RDAwOTZBNUQwIC8qIFN0YXRpc3RpY3NEYXRhLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1MTRCREVEMzE2Qzk4RUREMDBFNEUyNUUgLyogU3RhdGlzdGljc1JlcXVl
c3QuaCBpbiBIZWFkZXJzICovLAorCQkJCTdBM0ZFQ0EyMjFGN0MwOTcwMEYyNjdDRCAvKiBTdG9y
YWdlQWNjZXNzU3RhdHVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUQzMzA2RjE2QjFEOTkxMDA0
RjYwRTcgLyogU3RvcmFnZUFyZWFJbXBsLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUNFQ0QyNTE3
MTYyREIxMDAxRkM5RUYgLyogU3RvcmFnZUFyZWFNYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCTFB
MzM0REVFMTZERThGODgwMDZBOEUzOCAvKiBTdG9yYWdlQXJlYU1hcE1lc3NhZ2VzLmggaW4gSGVh
ZGVycyAqLywKQEAgLTEwNjk5LDYgKzEwNzA3LDcgQEAKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIx
NDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKIAkJCQkyRDkyQTc4NDIxMkI2QUIxMDBGNDkzRkQgLyog
QWN0aXZpdHlBc3NlcnRpb24uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNUNFNDNCNzIyMUY3Q0Mw
MjAwOTNCQ0M1IC8qIEFQSUhUVFBDb29raWVTdG9yZUNvY29hLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMkQ5MkE3N0IyMTJCNkE3MTAwRjQ5M0ZEIC8qIEFyZ3VtZW50Q29kZXJzLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTJERUIxRDJFMjEyNzQ3MzYwMDkzMzkwNiAvKiBBcmd1bWVudENvZGVyc0NG
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEOTJBNzdDMjEyQjZBNzEwMEY0OTNGRCAvKiBBdHRh
Y2htZW50LmNwcCBpbiBTb3VyY2VzICovLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>359915</attachid>
            <date>2019-01-23 11:40:28 -0800</date>
            <delta_ts>2019-01-23 11:47:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-193659-20190123114027.patch</filename>
            <type>text/plain</type>
            <size>117260</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQwMzQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDhiMWQ2YWZiNzJmYjFiNzVm
YjViYmY0MDE4ZDJlNWFiMzk4NTZjZWYuLmJkYTYxNjhhZjZjMThiYjE4ZjJhMDVlYWNiZTI2MDNm
NzAwMWVlNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTAwIEBACisyMDE5LTAxLTIzICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFN3aXRjaCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb24gcG9ydGlvbnMgb2YgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyB0byBBc3luYyBt
ZXNzYWdlIHBhc3Npbmcgc3R5bGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE5MzY1OQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDc0MzMyOTA+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2hhbmdlIHRo
ZSBpbXBsZW1lbnRhdGlvbnMgb2YgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyBjb2RlIGluIE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiB0byB1c2UgdGhlCisgICAgICAgICdzZW5kV2l0aEFzeW5jUmVwbHkn
IHNvIHRoYXQgbW9yZSBvZiB0aGUgY29kZSBpcyBhdXRvZ2VuZXJhdGVkLiBUaGlzIHNob3VsZCBt
YWtlIHRlc3QgcnVucyBtb3JlCisgICAgICAgIGNvbnNpc3RlbnQsIGFuZCBzaG91bGQgcmVkdWNl
IHRoZSBwb3NzaWJpbGl0eSBvZiBib29ra2VlcGluZyBlcnJvcnMgaW4gdGhlIG1lc3NhZ2UgaGFu
ZGxpbmcKKyAgICAgICAgaW1wbGVtZW50YXRpb25zLgorCisgICAgICAgIEZpeCB0aGUgaW1wbGVt
ZW50YXRpb24gb2YgTmV0d29ya1Byb2Nlc3NQcm94eTo6Y2xlYXJDYWxsYmFja1N0YXRlcyB0byBy
ZW1vdmUgdGhlIG1hbnVhbGx5IGNvbnN0cnVjdGVkCisgICAgICAgIChhbmQgaW5jb21wbGV0ZSkg
bWVzc2FnZSBjYWxsYmFja3MuIFRoZXNlIGVycm9ycyBhcmUgYSBiaWcgcmVhc29uIHRvIG1vdmUg
dG8gdGhlIGF1dG8tZ2VuZXJhdGVkCisgICAgICAgICdzZW5kV2l0aEFzeW5jUmVwbHknIGltcGxl
bWVudGF0b2luLiBEaXR0byBmb3IgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkQ2xvc2UuCisKKyAg
ICAgICAgVGhpcyBwYXRjaCBhbHNvIG1vdmVzIGFuIGluaXRpYWxpemF0b24gY2FsbCAoV2Vic2l0
ZURhdGFTdG9yZTo6ZGlkQ3JlYXRlTmV0d29ya1Byb2Nlc3MpIGZyb20KKyAgICAgICAgJ2Vuc3Vy
ZU5ldHdvcmtQcm9jZXNzJyB0byAncHJvY2Vzc0RpZEZpbmlzaExhdW5jaGluZycuIEluIGN1cnJl
bnQgY29kZSwgdGhlIGNhbGwgaGFwcGVucyBiZWZvcmUKKyAgICAgICAgYSBjb25uZWN0aW9uIGlz
IGVzdGFibGlzaGVkIHRvIHRoZSBuZXR3b3JrIHByb2Nlc3MsIGNhdXNpbmcgaW5pdGlhbGl6YXRp
b24gbWVzc2FnZXMgdG8gZ2V0IGRyb3BwZWQKKyAgICAgICAgbGVhZGluZyB0byB0ZXN0IHN5c3Rl
bSBmbGFraW5lc3MuCisKKyAgICAgICAgRmluYWxseTogVGhlIFdLIEFQSSB0ZXN0IGNvZGUgd2Fz
IHVwZGF0ZWQgdG8gZW5zdXJlIHRoYXQgY29tcGxldGlvbiBoYW5kbGVycyBhcmUgYWx3YXlzIGNh
bGxlZCwgZXZlbgorICAgICAgICB3aGVuIGJ1aWx0IHdpdGhvdXQgRU5BQkxFX1JFU09VUkNFX0xP
QURfU1RBVElTVElDUyBkZWZpbmVkLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3Np
Zmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuY3BwOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzLmg6IEFk
ZGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvU3RvcmFnZUFjY2Vzc1N0
YXR1cy5oOiBBZGRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVu
dCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmUuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjp1cGRhdGVQcmV2YWxlbnRE
b21haW5zVG9CbG9ja0Nvb2tpZXNGb3IpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vz
czo6c2V0QWdlQ2FwRm9yQ2xpZW50U2lkZUNvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUHJvY2Vzczo6c2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudCk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpoYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWUpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Z3JhbnRTdG9yYWdlQWNjZXNzKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnJlbW92ZUFsbFN0b3JhZ2VBY2Nlc3MpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxl
bnRSZXNvdXJjZXMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cmVzZXRDYWNo
ZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0
b3JlUmVmLmNwcDoKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NDbGVhcklu
TWVtb3J5QW5kUGVyc2lzdGVudFN0b3JlKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVN0
YXRpc3RpY3NDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudFN0b3JlTW9kaWZpZWRTaW5jZUhvdXJz
KToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVu
dFN0YXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9y
ZS5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6Y2xlYXJDYWxsYmFja1N0
YXRlcyk6IFJlbW92ZSBpbmNvbXBsZXRlIGNsZWFuLXVwIGNvZGUgdGhhdAorICAgICAgICBpcyBu
b3cgYXV0b2dlbmVyYXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6
ZGlkQ2xvc2UpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6
dXBkYXRlUHJldmFsZW50RG9tYWluc1RvQmxvY2tDb29raWVzRm9yKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6c2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVu
dCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OnNldEFnZUNhcEZvckNs
aWVudFNpZGVDb29raWVzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6
aGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3NQcm94eTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UHJvY2Vzc1Byb3h5OjpncmFudFN0b3JhZ2VBY2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUHJvY2Vzc1Byb3h5OjpyZW1vdmVBbGxTdG9yYWdlQWNjZXNzKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNv
dXJjZXMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRDYWNoZU1h
eEFnZUNhcCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OnJlc2V0Q2Fj
aGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUHJvY2Vzc1Byb3h5OjpkaWRVcGRhdGVCbG9ja0Nvb2tpZXMpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRTZXRBZ2VDYXBGb3JDbGllbnRTaWRl
Q29va2llcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6
OmRpZFVwZGF0ZVJ1bnRpbWVTZXR0aW5ncyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtQcm9jZXNzUHJveHk6OnN0b3JhZ2VBY2Nlc3NSZXF1ZXN0UmVzdWx0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6c3RvcmFnZUFjY2Vzc09wZXJh
dGlvblJlc3VsdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJv
eHk6OmRpZFJlbW92ZUFsbFN0b3JhZ2VBY2Nlc3MpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRTZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJl
c291cmNlcyk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzc1Bvb2w6OmVuc3VyZU5ldHdvcmtQcm9jZXNzKTogTW92ZSBXZWJzaXRlRGF0
YVN0b3JlICdkaWRDcmVhdGVOZXR3b3JrUHJvY2VzcycKKyAgICAgICAgdG8gJ3Byb2Nlc3NEaWRG
aW5pc2hMYXVuY2hpbmcnLiBDdXJyZW50bHkgdGhlIGNhbGwgaGFwcGVucyBiZWZvcmUgYSBjb25u
ZWN0aW9uIGlzIGVzdGFibGlzaGVkLAorICAgICAgICBjYXVzaW5nIGluaXRpYWxpemF0aW9uIG1l
c3NhZ2VzIHRvIGdldCBkcm9wcGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6
cHJvY2Vzc0RpZEZpbmlzaExhdW5jaGluZyk6IERpdHRvLgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0
ZURhdGFTdG9yZTo6cmVtb3ZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3Rv
cmU6OnNldE1heFN0YXRpc3RpY3NFbnRyaWVzKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURh
dGFTdG9yZTo6c2V0UHJ1bmVFbnRyaWVzRG93blRvKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0
ZURhdGFTdG9yZTo6c2V0R3JhbmRmYXRoZXJpbmdUaW1lKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
c2l0ZURhdGFTdG9yZTo6c2V0Q2FjaGVNYXhBZ2VDYXApOgorICAgICAgICAoV2ViS2l0OjpXZWJz
aXRlRGF0YVN0b3JlOjpzZXRNaW5pbXVtVGltZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpzZXRQcmV2YWxlbnRSZXNvdXJjZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnNldFNob3VsZENsYXNzaWZ5UmVz
b3VyY2VzQmVmb3JlRGF0YVJlY29yZHNSZW1vdmFsKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0
ZURhdGFTdG9yZTo6c2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudCk6CisgICAgICAg
IChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnNldEFnZUNhcEZvckNsaWVudFNpZGVDb29raWVz
KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6c2V0Tm90aWZ5UGFnZXNXaGVu
RGF0YVJlY29yZHNXZXJlU2Nhbm5lZCk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3Rv
cmU6OnNldE5vdGlmeVBhZ2VzV2hlblRlbGVtZXRyeVdhc0NhcHR1cmVkKToKKyAgICAgICAgKFdl
YktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6c2V0VGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbik6Cisg
ICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnNldENhY2hlTWF4QWdlQ2FwRm9yUHJl
dmFsZW50UmVzb3VyY2VzKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6c2V0
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKwogMjAxOS0wMS0yMyAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFt
QGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMjQwMjQzKTogQ3Jhc2hUcmFjZXI6
IFdlYktpdFRlc3RSdW5uZXJBcHAgYXQgY29tLmFwcGxlLldlYktpdDogV2ViS2l0OjpXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNlbmREaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1ZSBj
b25zdCArIDMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNz
aWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5
U3RvcmUuY3BwCmluZGV4IDc2ODViNmUzM2M2MmYxYjhlOTRkMzg2NTcxOWJmMTVjYmJhN2YwZDYu
Ljk3NDRkNDgzNDVjMTg1M2Y4YWM2MDUzNzE4MTRjN2FiZTM1MmVhNDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0
aWNzTWVtb3J5U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xh
c3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuY3BwCkBAIC0zMyw2ICsz
Myw3IEBACiAjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzc01hbmFnZXIuaCIKICNpbmNsdWRlICJQbHVn
aW5Qcm9jZXNzUHJveHkuaCIKICNpbmNsdWRlICJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lz
dGVudFN0b3JhZ2UuaCIKKyNpbmNsdWRlICJTdG9yYWdlQWNjZXNzU3RhdHVzLmgiCiAjaW5jbHVk
ZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAjaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1RlbGVtZXRyeS5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9TaG91bGRHcmFuZGZhdGhl
clN0YXRpc3RpY3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9T
aG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMmY4NDYzZDRmODRlMWZl
ZWMyYWQ1YTExYWVjMDE0YjA2ZTNmYWUwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Nob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljcy5o
CkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK2VudW0gY2xhc3MgU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzIDogYm9v
bCB7CisgICAgTm8sCisgICAgWWVzLAorfTsKKyAgICAKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvU3Rv
cmFnZUFjY2Vzc1N0YXR1cy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lm
aWVyL1N0b3JhZ2VBY2Nlc3NTdGF0dXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MGI2YTI5MzM2MmJmZTQzZDEz
YTQ1M2FjMzE2MGNmYjczZWM4YTM1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1N0b3JhZ2VBY2Nlc3NTdGF0dXMuaApAQCAtMCwwICsx
LDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitlbnVtIGNsYXNzIFN0b3JhZ2VBY2Nlc3NTdGF0dXMgOiB1aW50OF90IHsKKyAgICBDYW5ub3RS
ZXF1ZXN0QWNjZXNzLAorICAgIFJlcXVpcmVzVXNlclByb21wdCwKKyAgICBIYXNBY2Nlc3MKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCituYW1lc3BhY2UgV1RGIHsKKyAgICAKK3RlbXBs
YXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViS2l0OjpTdG9yYWdlQWNjZXNzU3RhdHVzPiB7Cisg
ICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICBXZWJLaXQ6OlN0b3JhZ2VBY2Nlc3NT
dGF0dXMsCisgICAgV2ViS2l0OjpTdG9yYWdlQWNjZXNzU3RhdHVzOjpDYW5ub3RSZXF1ZXN0QWNj
ZXNzLAorICAgIFdlYktpdDo6U3RvcmFnZUFjY2Vzc1N0YXR1czo6UmVxdWlyZXNVc2VyUHJvbXB0
LAorICAgIFdlYktpdDo6U3RvcmFnZUFjY2Vzc1N0YXR1czo6SGFzQWNjZXNzCisgICAgPjsKK307
CisgICAgCit9IC8vIG5hbWVzcGFjZSBXVEYKKworCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCmluZGV4IDhlNzczNWFiZjc3OWZmZGRlOGVhNzUwMmVi
YTNkNWUwYzAxNjkwYTguLmUyYzk3NTQwY2M4ZDI0ZDM1ZDg0NDkwMmYyOGFiYmEyNTBhNzgwNjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCkBA
IC0zMyw2ICszMyw4IEBACiAjaW5jbHVkZSAiTmV0d29ya1Nlc3Npb24uaCIKICNpbmNsdWRlICJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuaCIKICNpbmNsdWRlICJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UuaCIKKyNpbmNsdWRlICJTaG91bGRHcmFuZGZh
dGhlclN0YXRpc3RpY3MuaCIKKyNpbmNsdWRlICJTdG9yYWdlQWNjZXNzU3RhdHVzLmgiCiAjaW5j
bHVkZSAiV2ViRnJhbWVQcm94eS5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgogI2luY2x1
ZGUgIldlYlByb2Nlc3NNZXNzYWdlcy5oIgpAQCAtNjM5LDcgKzY0MSw3IEBAIHZvaWQgV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRWZXJ5UHJldmFsZW50UmVzb3VyY2UoY29uc3Qg
U3RyaW5nJiBwcmltCiAgICAgfSk7CiB9CiAgICAgCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZTo6ZHVtcFJlc291cmNlTG9hZFN0YXRpc3RpY3MoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChjb25zdCBTdHJpbmcmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlOjpkdW1wUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFN0cmluZyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNT
RVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIApAQCAtMTAxMCw3ICsxMDEyLDcgQEAgdm9pZCBXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNjaGVkdWxlQ2xlYXJCbG9ja2luZ1N0YXRlRm9y
RG9tYWlucyhjb25zdAogICAgIH0pOwogfQogCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZTo6c2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChTaG91bGRHcmFuZGZh
dGhlciBzaG91bGRHcmFuZGZhdGhlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQordm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNjaGVk
dWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNz
IHNob3VsZEdyYW5kZmF0aGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICBwb3N0VGFz
ayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBzaG91bGRHcmFuZGZhdGhl
ciwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRh
YmxlIHsKQEAgLTEwMjMsNyArMTAyNSw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlOjpzY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFNob3VsZEdyCiAKICAg
ICAgICAgaWYgKG1fbWVtb3J5U3RvcmUpIHsKICAgICAgICAgICAgIG1fbWVtb3J5U3RvcmUtPmNs
ZWFyKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gcHJvdGVjdGVkVGhpcy5jb3B5UmVmKCksIHNob3Vs
ZEdyYW5kZmF0aGVyLCBjb21wbGV0aW9uSGFuZGxlckNhbGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXJDYWxsZXIpXSAoKSBtdXRhYmxlIHsKLSAgICAgICAgICAgICAgICBpZiAoc2hvdWxk
R3JhbmRmYXRoZXIgPT0gU2hvdWxkR3JhbmRmYXRoZXI6OlllcykgeworICAgICAgICAgICAgICAg
IGlmIChzaG91bGRHcmFuZGZhdGhlciA9PSBTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3M6Olll
cykgewogICAgICAgICAgICAgICAgICAgICBpZiAobV9tZW1vcnlTdG9yZSkKICAgICAgICAgICAg
ICAgICAgICAgICAgIG1fbWVtb3J5U3RvcmUtPmdyYW5kZmF0aGVyRXhpc3RpbmdXZWJzaXRlRGF0
YShjb21wbGV0aW9uSGFuZGxlckNhbGxlci5yZWxlYXNlKCkpOwogICAgICAgICAgICAgICAgICAg
ICBlbHNlCkBAIC0xMDMxLDEzICsxMDMzLDEzIEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlOjpzY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFNob3VsZEdyCiAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICBpZiAoc2hvdWxkR3JhbmRmYXRoZXIgPT0gU2hvdWxkR3JhbmRmYXRoZXI6OlllcykK
KyAgICAgICAgICAgIGlmIChzaG91bGRHcmFuZGZhdGhlciA9PSBTaG91bGRHcmFuZGZhdGhlclN0
YXRpc3RpY3M6OlllcykKICAgICAgICAgICAgICAgICBSRUxFQVNFX0xPRyhSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzLCAiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzY2hlZHVsZUNsZWFy
SW5NZW1vcnlBbmRQZXJzaXN0ZW50IEJlZm9yZSBiZWluZyBjbGVhcmVkLCBtX21lbW9yeVN0b3Jl
IGlzIG51bGwgd2hlbiB0cnlpbmcgdG8gZ3JhbmRmYXRoZXIgZGF0YS4iKTsKICAgICAgICAgfQog
ICAgIH0pOwogfQogCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2NoZWR1
bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChXYWxsVGltZSBtb2RpZmllZFNpbmNlLCBTaG91
bGRHcmFuZGZhdGhlciBzaG91bGRHcmFuZGZhdGhlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmIGNhbGxiYWNrKQordm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNjaGVk
dWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSwgU2hv
dWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzIHNob3VsZEdyYW5kZmF0aGVyLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYgY2FsbGJhY2spCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigp
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVy
L1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCmluZGV4
IDI1MWIzOTI1YmFiNWFjNDAyYThjZTRkN2Y5NDJlMTAyNmI0NmY3NmMuLmI2MGFhYWM4OTBlZjMw
MzdlMmZhYzdmMTZiODdlYmQ4MDRkZDg0ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpZiBFTkFCTEUoUkVTT1VS
Q0VfTE9BRF9TVEFUSVNUSUNTKQogCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUg
IlN0b3JhZ2VBY2Nlc3NTdGF0dXMuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVR5cGUuaCIKICNp
bmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5o
PgpAQCAtNTUsMTcgKzU2LDcgQEAgY2xhc3MgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3Rl
bnRTdG9yYWdlOwogY2xhc3MgV2ViRnJhbWVQcm94eTsKIGNsYXNzIFdlYlByb2Nlc3NQcm94eTsK
IGNsYXNzIFdlYnNpdGVEYXRhU3RvcmU7Ci0KLWVudW0gY2xhc3MgU3RvcmFnZUFjY2Vzc1N0YXR1
cyA6IHVuc2lnbmVkIHsKLSAgICBDYW5ub3RSZXF1ZXN0QWNjZXNzLAotICAgIFJlcXVpcmVzVXNl
clByb21wdCwKLSAgICBIYXNBY2Nlc3MKLX07Ci0KLWVudW0gY2xhc3MgU2hvdWxkR3JhbmRmYXRo
ZXIgewotICAgIE5vLAotICAgIFllcywKLX07CitlbnVtIGNsYXNzIFNob3VsZEdyYW5kZmF0aGVy
U3RhdGlzdGljcyA6IGJvb2w7CiAKIGNsYXNzIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZSBmaW5hbCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmUsIFdURjo6RGVzdHJ1Y3Rpb25UaHJlYWQ6Ok1haW4+LCBwdWJsaWMgSVBDOjpN
ZXNzYWdlUmVjZWl2ZXIgewogcHVibGljOgpAQCAtMTE2LDcgKzEwNyw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNldFByZXZhbGVudFJlc291cmNlKGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4s
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRWZXJ5UHJldmFsZW50
UmVzb3VyY2UoY29uc3QgVVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2
b2lkIHNldFZlcnlQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWlu
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgZHVtcFJlc291cmNlTG9h
ZFN0YXRpc3RpY3MoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJik7Cisg
ICAgdm9pZCBkdW1wUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFN0cmluZyk+JiYpOwogICAgIHZvaWQgaXNQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBVUkwmLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAgICB2b2lkIGlzUHJldmFsZW50UmVz
b3VyY2UoY29uc3QgU3RyaW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAg
ICAgdm9pZCBpc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBVUkwmLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGJvb2wpPiYmKTsKQEAgLTE1NSw4ICsxNDYsOCBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzY2hlZHVsZVN0YXRpc3RpY3NBbmREYXRhUmVjb3Jkc1Byb2Nlc3NpbmcoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHN1Ym1pdFRlbGVtZXRyeShDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgdXBkYXRlUHJldmFsZW50RG9tYWluc1RvQmxvY2tD
b29raWVzRm9yKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9CbG9jayk7Ci0gICAgdm9p
ZCBzY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFNob3VsZEdyYW5kZmF0aGVyLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgc2NoZWR1bGVDbGVhckluTWVt
b3J5QW5kUGVyc2lzdGVudChXYWxsVGltZSBtb2RpZmllZFNpbmNlLCBTaG91bGRHcmFuZGZhdGhl
ciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIHNjaGVkdWxlQ2xlYXJJ
bk1lbW9yeUFuZFBlcnNpc3RlbnQoU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgc2NoZWR1bGVDbGVhckluTWVtb3J5QW5k
UGVyc2lzdGVudChXYWxsVGltZSBtb2RpZmllZFNpbmNlLCBTaG91bGRHcmFuZGZhdGhlclN0YXRp
c3RpY3MsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAKICAgICB2b2lkIHNldFRpbWVU
b0xpdmVVc2VySW50ZXJhY3Rpb24oU2Vjb25kcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKICAgICB2b2lkIHNldE1pbmltdW1UaW1lQmV0d2VlbkRhdGFSZWNvcmRzUmVtb3ZhbChTZWNv
bmRzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCA2MDcyMDExMjliZmYwNzI2ZDVl
NDVhNTNiYzZmYzEzMWFmYmZjZDQyLi5jMmZiZjViYzAwM2E5MWNmZTRkY2NkMDMyOTYxMmY1YTdk
MWM0YmZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmNwcApAQCAtNDksNyArNDksOSBAQAogI2luY2x1ZGUgIk5ldHdvcmtTZXNzaW9uQ3JlYXRp
b25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiUHJlY29ubmVjdFRhc2suaCIKICNpbmNsdWRlICJS
ZW1vdGVOZXR3b3JraW5nQ29udGV4dC5oIgorI2luY2x1ZGUgIlNob3VsZEdyYW5kZmF0aGVyU3Rh
dGlzdGljcy5oIgogI2luY2x1ZGUgIlN0YXRpc3RpY3NEYXRhLmgiCisjaW5jbHVkZSAiU3RvcmFn
ZUFjY2Vzc1N0YXR1cy5oIgogI2luY2x1ZGUgIldlYkNvb2tpZU1hbmFnZXIuaCIKICNpbmNsdWRl
ICJXZWJQYWdlUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sTWVzc2Fn
ZXMuaCIKQEAgLTU5NSwyMyArNTk3LDI0IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OndyaXRlQmxv
YlRvRmlsZVBhdGgoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcGF0aCwgU2FuCiB9CiAK
ICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotdm9pZCBOZXR3b3JrUHJvY2Vz
czo6ZHVtcFJlc291cmNlTG9hZFN0YXRpc3RpY3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1
aW50NjRfdCBjb250ZXh0SWQpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpkdW1wUmVzb3VyY2VMb2Fk
U3RhdGlzdGljcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoU3RyaW5nKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoYXV0byogbmV0d29y
a1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7Ci0gICAgICAgIGlm
IChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNl
TG9hZFN0YXRpc3RpY3MoKSkgewotICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+
ZHVtcFJlc291cmNlTG9hZFN0YXRpc3RpY3MoW3RoaXMsIGNvbnRleHRJZF0oY29uc3QgU3RyaW5n
JiBkdW1wZWRTdGF0aXN0aWNzKSB7Ci0gICAgICAgICAgICAgICAgcGFyZW50UHJvY2Vzc0Nvbm5l
Y3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6RGlkRHVtcFJlc291
cmNlTG9hZFN0YXRpc3RpY3MoZHVtcGVkU3RhdGlzdGljcywgY29udGV4dElkKSwgMCk7Ci0gICAg
ICAgICAgICB9KTsKLSAgICAgICAgfQotICAgIH0gZWxzZQorICAgICAgICBpZiAoYXV0byogcmVz
b3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzKCkpCisgICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5kdW1wUmVzb3VyY2VM
b2FkU3RhdGlzdGljcyhXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CisgICAgfSBlbHNlIHsKICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7
CisgICAgfQogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjp1cGRhdGVQcmV2YWxlbnREb21haW5z
VG9CbG9ja0Nvb2tpZXNGb3IoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgZG9tYWluc1RvQmxvY2ssIHVpbnQ2NF90IGNvbnRleHRJZCkKK3ZvaWQgTmV0d29y
a1Byb2Nlc3M6OnVwZGF0ZVByZXZhbGVudERvbWFpbnNUb0Jsb2NrQ29va2llc0ZvcihQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9CbG9jaywg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlm
IChhdXRvKiBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQp
KQogICAgICAgICBuZXR3b3JrU3RvcmFnZVNlc3Npb24tPnNldFByZXZhbGVudERvbWFpbnNUb0Js
b2NrQ29va2llc0Zvcihkb21haW5zVG9CbG9jayk7Ci0gICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rp
b24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6RGlkVXBkYXRlQmxvY2tD
b29raWVzKGNvbnRleHRJZCksIDApOworICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKIHZv
aWQgTmV0d29ya1Byb2Nlc3M6OmlzR3JhbmRmYXRoZXJlZChQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIGNvbnN0IFN0cmluZyYgdGFyZ2V0UHJpbWFyeURvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTYxOSw4ICs2MjIsMTIgQEAgdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6aXNHcmFuZGZhdGhlcmVkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgY29uc3QgU3RyaW5nJiB0YXIKICAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlz
LT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CiAgICAgICAgIGlmIChhdXRvKiByZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3Mo
KSkKICAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPmlzR3JhbmRmYXRoZXJlZCh0
YXJnZXRQcmltYXJ5RG9tYWluLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci0gICAgfSBl
bHNlCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsK
KyAgICB9IGVsc2UgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoZmFsc2UpOworICAgIH0KIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6
aXNQcmV2YWxlbnRSZXNvdXJjZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmlu
ZyYgcmVzb3VyY2VEb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCkBAIC02MjgsOCArNjM1LDEyIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6Omlz
UHJldmFsZW50UmVzb3VyY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcm
CiAgICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vz
c2lvbklEKSkgewogICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5l
dHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCiAgICAgICAgICAgICByZXNv
dXJjZUxvYWRTdGF0aXN0aWNzLT5pc1ByZXZhbGVudFJlc291cmNlKHJlc291cmNlRG9tYWluLCBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci0gICAgfSBlbHNlCisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKKyAgICB9IGVsc2UgewogICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2Up
OworICAgIH0KIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6aXNWZXJ5UHJldmFsZW50UmVzb3Vy
Y2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWlu
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAt
NjM3LDE1ICs2NDgsMTkgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6aXNWZXJ5UHJldmFsZW50UmVz
b3VyY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHIKICAgICBpZiAoYXV0byog
bmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CiAgICAg
ICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJl
c291cmNlTG9hZFN0YXRpc3RpY3MoKSkKICAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MtPmlzVmVyeVByZXZhbGVudFJlc291cmNlKHJlc291cmNlRG9tYWluLCBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSk7Ci0gICAgfSBlbHNlCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKKyAgICB9IGVsc2UgewogICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOworICAgIH0KIH0K
IAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0QWdlQ2FwRm9yQ2xpZW50U2lkZUNvb2tpZXMoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25hbDxTZWNvbmRzPiBzZWNvbmRzLCB1aW50NjRf
dCBjb250ZXh0SWQpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRBZ2VDYXBGb3JDbGllbnRTaWRl
Q29va2llcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvbmFsPFNlY29uZHM+IHNlY29u
ZHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAg
ICBpZiAoYXV0byogbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gc3RvcmFnZVNlc3Npb24oc2Vzc2lv
bklEKSkKICAgICAgICAgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5zZXRBZ2VDYXBGb3JDbGllbnRT
aWRlQ29va2llcyhzZWNvbmRzKTsKLSAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpEaWRTZXRBZ2VDYXBGb3JDbGllbnRTaWRl
Q29va2llcyhjb250ZXh0SWQpLCAwKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQogCiB2
b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRHcmFuZGZhdGhlcmVkKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgY29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwgYm9vbCBpc0dyYW5kZmF0aGVyZWQs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTY1Myw4
ICs2NjgsMTIgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0R3JhbmRmYXRoZXJlZChQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcmUKICAgICBpZiAoYXV0byogbmV0d29y
a1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CiAgICAgICAgIGlm
IChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNl
TG9hZFN0YXRpc3RpY3MoKSkKICAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnNl
dEdyYW5kZmF0aGVyZWQocmVzb3VyY2VEb21haW4sIGlzR3JhbmRmYXRoZXJlZCwgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOwotICAgIH0gZWxzZQorICAgICAgICBlbHNlCisgICAgICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgIH0gZWxzZSB7CiAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgIH0KIH0KIAogdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6c2V0UHJldmFsZW50UmVzb3VyY2UoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC02NjIsOCArNjgxLDEyIEBAIHZvaWQgTmV0
d29ya1Byb2Nlc3M6OnNldFByZXZhbGVudFJlc291cmNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgY29uc3QgU3RyaW5nCiAgICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0
d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewogICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCiAg
ICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5zZXRQcmV2YWxlbnRSZXNvdXJjZShy
ZXNvdXJjZURvbWFpbiwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotICAgIH0gZWxzZQor
ICAgICAgICBlbHNlCisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgIH0gZWxz
ZSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcigpOworICAgIH0KIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0UHJldmFsZW50UmVz
b3VyY2VGb3JEZWJ1Z01vZGUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTdHJpbmcgcmVzb3Vy
Y2VEb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
QEAgLTY3MSw4ICs2OTQsMTIgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0UHJldmFsZW50UmVz
b3VyY2VGb3JEZWJ1Z01vZGUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELAogICAgIGlmIChhdXRv
KiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKICAg
ICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lvbi0+
cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQogICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlz
dGljcy0+c2V0UHJldmFsZW50UmVzb3VyY2VGb3JEZWJ1Z01vZGUocmVzb3VyY2VEb21haW4sIFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLSAgICB9IGVsc2UKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICB9IGVsc2UgewogICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICB9CiB9
CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldFZlcnlQcmV2YWxlbnRSZXNvdXJjZShQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTY4MCw4ICs3MDcsMTIg
QEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0VmVyeVByZXZhbGVudFJlc291cmNlKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3QKICAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24g
PSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CiAgICAgICAgIGlmIChhdXRvKiBy
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRp
c3RpY3MoKSkKICAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnNldFZlcnlQcmV2
YWxlbnRSZXNvdXJjZShyZXNvdXJjZURvbWFpbiwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OwotICAgIH0gZWxzZQorICAgICAgICBlbHNlCisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cigpOworICAgIH0gZWxzZSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgIH0KIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6
Y2xlYXJQcmV2YWxlbnRSZXNvdXJjZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0
cmluZyYgcmVzb3VyY2VEb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKQEAgLTY4OSw4ICs3MjAsMTIgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y2xl
YXJQcmV2YWxlbnRSZXNvdXJjZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmkK
ICAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNz
aW9uSUQpKSB7CiAgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0
d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKICAgICAgICAgICAgIHJlc291
cmNlTG9hZFN0YXRpc3RpY3MtPmNsZWFyUHJldmFsZW50UmVzb3VyY2UocmVzb3VyY2VEb21haW4s
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLSAgICB9IGVsc2UKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICB9IGVsc2UgewogICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICB9
CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnN1Ym1pdFRlbGVtZXRyeShQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKQEAgLTY5OCw4ICs3MzMsMTIgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6c3VibWl0VGVsZW1l
dHJ5KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXIKICAgICBpZiAo
YXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7
CiAgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Np
b24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKICAgICAgICAgICAgIHJlc291cmNlTG9hZFN0
YXRpc3RpY3MtPnN1Ym1pdFRlbGVtZXRyeShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci0g
ICAgfSBlbHNlCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7
CisgICAgfSBlbHNlIHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKCk7CisgICAgfQogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzY2hl
ZHVsZUNvb2tpZUJsb2NraW5nVXBkYXRlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtNzA3LDIyICs3NDYs
MjggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2NoZWR1bGVDb29raWVCbG9ja2luZ1VwZGF0ZShQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXAKICAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Np
b24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CiAgICAgICAgIGlmIChhdXRv
KiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0
YXRpc3RpY3MoKSkKICAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnNjaGVkdWxl
Q29va2llQmxvY2tpbmdVcGRhdGUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotICAgIH0g
ZWxzZQorICAgICAgICBlbHNlCisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAg
IH0gZWxzZSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcigpOworICAgIH0KIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2NoZWR1bGVD
bGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlv
bmFsPFdhbGxUaW1lPiBtb2RpZmllZFNpbmNlLCBib29sIHNob3VsZEdyYW5kZmF0aGVyLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtQ
cm9jZXNzOjpzY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgT3B0aW9uYWw8V2FsbFRpbWU+IG1vZGlmaWVkU2luY2UsIFNob3VsZEdyYW5k
ZmF0aGVyU3RhdGlzdGljcyBzaG91bGRHcmFuZGZhdGhlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lv
biA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKICAgICAgICAgaWYgKGF1dG8q
IHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3Rh
dGlzdGljcygpKSB7Ci0gICAgICAgICAgICBhdXRvIGdyYW5kZmF0aGVyID0gc2hvdWxkR3JhbmRm
YXRoZXIgPyBTaG91bGRHcmFuZGZhdGhlcjo6WWVzIDogU2hvdWxkR3JhbmRmYXRoZXI6Ok5vOwog
ICAgICAgICAgICAgaWYgKG1vZGlmaWVkU2luY2UpCi0gICAgICAgICAgICAgICAgcmVzb3VyY2VM
b2FkU3RhdGlzdGljcy0+c2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChtb2RpZmll
ZFNpbmNlLnZhbHVlKCksIGdyYW5kZmF0aGVyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
CisgICAgICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+c2NoZWR1bGVDbGVhcklu
TWVtb3J5QW5kUGVyc2lzdGVudChtb2RpZmllZFNpbmNlLnZhbHVlKCksIHNob3VsZEdyYW5kZmF0
aGVyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgICAgICBlbHNlCi0gICAg
ICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+c2NoZWR1bGVDbGVhckluTWVtb3J5
QW5kUGVyc2lzdGVudChncmFuZGZhdGhlciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwot
ICAgICAgICB9Ci0gICAgfSBlbHNlCisgICAgICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlz
dGljcy0+c2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChzaG91bGRHcmFuZGZhdGhl
ciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICB9IGVsc2UKKyAgICAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgfSBlbHNlIHsKICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgfQogfQogCiB2
b2lkIE5ldHdvcmtQcm9jZXNzOjpyZXNldFBhcmFtZXRlcnNUb0RlZmF1bHRWYWx1ZXMoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCkBAIC03MzAsOCArNzc1LDEyIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlc2V0
UGFyYW1ldGVyc1RvRGVmYXVsdFZhbHVlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvCiAg
ICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lv
bklEKSkgewogICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdv
cmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCiAgICAgICAgICAgICByZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzLT5yZXNldFBhcmFtZXRlcnNUb0RlZmF1bHRWYWx1ZXMoV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOwotICAgIH0gZWxzZQorICAgICAgICBlbHNlCisgICAgICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgIH0gZWxzZSB7CiAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgIH0KIH0KIAogdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6c2NoZWR1bGVTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHNQcm9jZXNz
aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtNzM5LDggKzc4OCwxMiBAQCB2b2lkIE5ldHdvcmtQcm9j
ZXNzOjpzY2hlZHVsZVN0YXRpc3RpY3NBbmREYXRhUmVjb3Jkc1Byb2Nlc3NpbmcoUEFMOjpTZXNz
aW9uSUQgcwogICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNz
aW9uKHNlc3Npb25JRCkpIHsKICAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MgPSBuZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQogICAgICAgICAg
ICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+c2NoZWR1bGVTdGF0aXN0aWNzQW5kRGF0YVJlY29y
ZHNQcm9jZXNzaW5nKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLSAgICB9IGVsc2UKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICB9IGVsc2Ug
ewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoKTsKKyAgICB9CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldE5vdGlmeVBhZ2VzV2hl
bkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBib29sIHZh
bHVlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC03
NDgsOCArODAxLDEyIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldE5vdGlmeVBhZ2VzV2hlbkRh
dGFSZWNvcmRzV2VyZVNjYW5uZWQoUEFMOjpTZXNzaW9uSUQgc2VzCiAgICAgaWYgKGF1dG8qIG5l
dHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewogICAgICAg
ICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzKCkpCiAgICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNz
LT5zZXROb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVkKHZhbHVlLCBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSk7Ci0gICAgfSBlbHNlCisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgfSBlbHNlIHsKICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgfQogfQogCiB2
b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXROb3RpZnlQYWdlc1doZW5UZWxlbWV0cnlXYXNDYXB0dXJl
ZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGJvb2wgdmFsdWUsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTc1Nyw4ICs4MTQsMTIgQEAgdm9pZCBO
ZXR3b3JrUHJvY2Vzczo6c2V0Tm90aWZ5UGFnZXNXaGVuVGVsZW1ldHJ5V2FzQ2FwdHVyZWQoUEFM
OjpTZXNzaW9uSUQgc2Vzc2kKICAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5u
ZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CiAgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxv
YWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkK
ICAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnNldE5vdGlmeVBhZ2VzV2hlblRl
bGVtZXRyeVdhc0NhcHR1cmVkKHZhbHVlLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci0g
ICAgfSBlbHNlCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7
CisgICAgfSBlbHNlIHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKCk7CisgICAgfQogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRT
dWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW4oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTdHJp
bmcgc3ViZnJhbWUsIFN0cmluZyB0b3BGcmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtNzY2LDggKzgyNywxMiBAQCB2b2lkIE5ldHdvcmtQcm9j
ZXNzOjpzZXRTdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW4oUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBTdAogICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNz
aW9uKHNlc3Npb25JRCkpIHsKICAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MgPSBuZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQogICAgICAgICAg
ICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+c2V0U3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2lu
KHN1YmZyYW1lLCB0b3BGcmFtZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotICAgIH0g
ZWxzZQorICAgICAgICBlbHNlCisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAg
IH0gZWxzZSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcigpOworICAgIH0KIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6aXNSZWdpc3Rl
cmVkQXNSZWRpcmVjdGluZ1RvKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5n
JiByZWRpcmVjdGVkRnJvbSwgY29uc3QgU3RyaW5nJiByZWRpcmVjdGVkVG8sIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC03NzUsOCArODQwLDEy
IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmlzUmVnaXN0ZXJlZEFzUmVkaXJlY3RpbmdUbyhQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0CiAgICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9u
ID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewogICAgICAgICBpZiAoYXV0byog
cmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzKCkpCiAgICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5pc1JlZ2lzdGVy
ZWRBc1JlZGlyZWN0aW5nVG8ocmVkaXJlY3RlZEZyb20sIHJlZGlyZWN0ZWRUbywgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOwotICAgIH0gZWxzZQorICAgICAgICBlbHNlCisgICAgICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CisgICAgfSBlbHNlIHsKICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgfQogfQog
CiB2b2lkIE5ldHdvcmtQcm9jZXNzOjppc1JlZ2lzdGVyZWRBc1N1YkZyYW1lVW5kZXIoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHN1YmZyYW1lLCBjb25zdCBTdHJpbmcm
IHRvcEZyYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQpAQCAtNzg0LDggKzg1MywxMiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjppc1JlZ2lzdGVy
ZWRBc1N1YkZyYW1lVW5kZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdAogICAgIGlm
IChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkp
IHsKICAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vz
c2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQogICAgICAgICAgICAgcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy0+aXNSZWdpc3RlcmVkQXNTdWJGcmFtZVVuZGVyKHN1YmZyYW1lLCB0b3BGcmFt
ZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotICAgIH0gZWxzZQorICAgICAgICBlbHNl
CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CisgICAgfSBlbHNlIHsKICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZh
bHNlKTsKKyAgICB9CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldFN1YnJlc291cmNlVW5k
ZXJUb3BGcmFtZU9yaWdpbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0cmluZyBzdWJyZXNv
dXJjZSwgU3RyaW5nIHRvcEZyYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCkBAIC03OTMsOCArODY2LDEyIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNl
dFN1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
CiAgICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vz
c2lvbklEKSkgewogICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5l
dHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCiAgICAgICAgICAgICByZXNv
dXJjZUxvYWRTdGF0aXN0aWNzLT5zZXRTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW4oc3Vi
cmVzb3VyY2UsIHRvcEZyYW1lLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci0gICAgfSBl
bHNlCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAg
fSBlbHNlIHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKCk7CisgICAgfQogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRTdWJyZXNv
dXJjZVVuaXF1ZVJlZGlyZWN0VG8oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTdHJpbmcgc3Vi
cmVzb3VyY2UsIFN0cmluZyBob3N0TmFtZVJlZGlyZWN0ZWRUbywgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtODAyLDggKzg3OSwxMiBAQCB2b2lkIE5l
dHdvcmtQcm9jZXNzOjpzZXRTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0VG8oUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBTdAogICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5l
dHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKICAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9h
ZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQog
ICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+c2V0U3VicmVzb3VyY2VVbmlxdWVS
ZWRpcmVjdFRvKHN1YnJlc291cmNlLCBob3N0TmFtZVJlZGlyZWN0ZWRUbywgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOwotICAgIH0gZWxzZQorICAgICAgICBlbHNlCisgICAgICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcigpOworICAgIH0gZWxzZSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgIH0KIH0KIAogdm9pZCBO
ZXR3b3JrUHJvY2Vzczo6c2V0U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdEZyb20oUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBTdHJpbmcgc3VicmVzb3VyY2UsIFN0cmluZyBob3N0TmFtZVJlZGly
ZWN0ZWRGcm9tLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
CkBAIC04MTEsOCArODkyLDEyIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldFN1YnJlc291cmNl
VW5pcXVlUmVkaXJlY3RGcm9tKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwKICAgICBpZiAoYXV0
byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CiAg
ICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24t
PnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKICAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRp
c3RpY3MtPnNldFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RGcm9tKHN1YnJlc291cmNlLCBob3N0
TmFtZVJlZGlyZWN0ZWRGcm9tLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci0gICAgfSBl
bHNlCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAg
fSBlbHNlIHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKCk7CisgICAgfQogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjppc1JlZ2lzdGVy
ZWRBc1N1YnJlc291cmNlVW5kZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJp
bmcmIHN1YnJlc291cmNlLCBjb25zdCBTdHJpbmcmIHRvcEZyYW1lLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtODIwLDggKzkwNSwxMiBAQCB2
b2lkIE5ldHdvcmtQcm9jZXNzOjppc1JlZ2lzdGVyZWRBc1N1YnJlc291cmNlVW5kZXIoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBjbwogICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRo
aXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKICAgICAgICAgaWYgKGF1dG8qIHJlc291
cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGlj
cygpKQogICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+aXNSZWdpc3RlcmVkQXNT
dWJyZXNvdXJjZVVuZGVyKHN1YnJlc291cmNlLCB0b3BGcmFtZSwgV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOwotICAgIH0gZWxzZQorICAgICAgICBlbHNlCisgICAgICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihmYWxzZSk7CisgICAgfSBlbHNlIHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKKyAgICB9CiB9CiAKIHZv
aWQgTmV0d29ya1Byb2Nlc3M6OnNldFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RUbyhQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIFN0cmluZyB0b3BGcmFtZUhvc3ROYW1lLCBTdHJpbmcgaG9zdE5hbWVS
ZWRpcmVjdGVkVG8sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKQEAgLTgyOSw4ICs5MTgsMTIgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0VG9wRnJhbWVV
bmlxdWVSZWRpcmVjdFRvKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU3RyaW4KICAgICBpZiAo
YXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7
CiAgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Np
b24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKICAgICAgICAgICAgIHJlc291cmNlTG9hZFN0
YXRpc3RpY3MtPnNldFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RUbyh0b3BGcmFtZUhvc3ROYW1lLCBo
b3N0TmFtZVJlZGlyZWN0ZWRUbywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotICAgIH0g
ZWxzZQorICAgICAgICBlbHNlCisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAg
IH0gZWxzZSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcigpOworICAgIH0KIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0VG9wRnJh
bWVVbmlxdWVSZWRpcmVjdEZyb20oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTdHJpbmcgdG9w
RnJhbWVIb3N0TmFtZSwgU3RyaW5nIGhvc3ROYW1lUmVkaXJlY3RlZEZyb20sIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTgzOCw4ICs5MzEsMTIgQEAg
dm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0VG9wRnJhbWVVbmlxdWVSZWRpcmVjdEZyb20oUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBTdHIKICAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0
aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CiAgICAgICAgIGlmIChhdXRvKiByZXNv
dXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MoKSkKICAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnNldFRvcEZyYW1lVW5p
cXVlUmVkaXJlY3RGcm9tKHRvcEZyYW1lSG9zdE5hbWUsIGhvc3ROYW1lUmVkaXJlY3RlZEZyb20s
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLSAgICB9IGVsc2UKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICB9IGVsc2UgewogICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICB9
CiB9CiAgICAgCiAgICAgCkBAIC04NDgsMjQgKzk0NSwzMyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNz
OjpzZXRMYXN0U2VlbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcmVz
b3VyYwogICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9u
KHNlc3Npb25JRCkpIHsKICAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3Mg
PSBuZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQogICAgICAgICAgICAg
cmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+c2V0TGFzdFNlZW4ocmVzb3VyY2VEb21haW4sIHNlY29u
ZHMsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLSAgICB9IGVsc2UKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICB9IGVsc2UgewogICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAg
ICB9CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6Omhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZShQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIGNv
bnN0IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3Qg
cGFnZUlELCB1aW50NjRfdCBjb250ZXh0SWQpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpoYXNTdG9y
YWdlQWNjZXNzRm9yRnJhbWUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcm
IHJlc291cmNlRG9tYWluLCBjb25zdCBTdHJpbmcmIGZpcnN0UGFydHlEb21haW4sIHVpbnQ2NF90
IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKKyAgICBib29sIGhhc1N0b3JhZ2VBY2Nlc3MgPSBmYWxz
ZTsKICAgICBpZiAoYXV0byogbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gc3RvcmFnZVNlc3Npb24o
c2Vzc2lvbklEKSkKLSAgICAgICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNz
YWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6U3RvcmFnZUFjY2Vzc09wZXJhdGlvblJlc3VsdChu
ZXR3b3JrU3RvcmFnZVNlc3Npb24tPmhhc1N0b3JhZ2VBY2Nlc3MocmVzb3VyY2VEb21haW4sIGZp
cnN0UGFydHlEb21haW4sIGZyYW1lSUQsIHBhZ2VJRCksIGNvbnRleHRJZCksIDApOworICAgICAg
ICBoYXNTdG9yYWdlQWNjZXNzID0gbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5oYXNTdG9yYWdlQWNj
ZXNzKHJlc291cmNlRG9tYWluLCBmaXJzdFBhcnR5RG9tYWluLCBmcmFtZUlELCBwYWdlSUQpOwog
ICAgIGVsc2UKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisKKyAgICBjb21wbGV0aW9u
SGFuZGxlcihoYXNTdG9yYWdlQWNjZXNzKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6Z2V0
QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRf
dCBjb250ZXh0SWQpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpnZXRBbGxTdG9yYWdlQWNjZXNzRW50
cmllcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVj
dG9yPFN0cmluZz4gZG9tYWlucyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKGF1
dG8qIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IHN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCi0g
ICAgICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQ
cm9jZXNzUHJveHk6OkFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzUmVzdWx0KG5ldHdvcmtTdG9yYWdl
U2Vzc2lvbi0+Z2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMoKSwgY29udGV4dElkKSwgMCk7Ci0g
ICAgZWxzZQorICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihuZXR3b3JrU3RvcmFnZVNlc3Npb24t
PmdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKCkpOworICAgIGVsc2UgewogICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKKyAgICB9
CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6Omhhc1N0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBjb25zdCBTdHJpbmcm
IGZpcnN0UGFydHlEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1aW50NjRfdCBw
YWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
CkBAIC04NzMsMjMgKzk3OSwyOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpoYXNTdG9yYWdlQWNj
ZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiByZQogICAgIGlmIChh
dXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsK
ICAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lv
bi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQogICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcy0+aGFzU3RvcmFnZUFjY2VzcyhyZXNvdXJjZURvbWFpbiwgZmlyc3RQYXJ0eURvbWFp
biwgZnJhbWVJRCwgcGFnZUlELCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci0gICAgfSBl
bHNlCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsK
KyAgICB9IGVsc2UgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoZmFsc2UpOworICAgIH0KIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6
cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJp
bmcmIHJlc291cmNlRG9tYWluLCBjb25zdCBTdHJpbmcmIGZpcnN0UGFydHlEb21haW4sIE9wdGlv
bmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIGJvb2wgcHJvbXB0RW5hYmxl
ZCwgdWludDY0X3QgY29udGV4dElkKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVxdWVzdFN0b3Jh
Z2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHJlc291cmNl
RG9tYWluLCBjb25zdCBTdHJpbmcmIGZpcnN0UGFydHlEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90
PiBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIGJvb2wgcHJvbXB0RW5hYmxlZCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzU3RhdHVzKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKICAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihz
ZXNzaW9uSUQpKSB7Ci0gICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0g
bmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkgewotICAgICAgICAgICAg
cmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+cmVxdWVzdFN0b3JhZ2VBY2Nlc3MocmVzb3VyY2VEb21h
aW4sIGZpcnN0UGFydHlEb21haW4sIGZyYW1lSUQsIHBhZ2VJRCwgcHJvbXB0RW5hYmxlZCwgW3Ro
aXMsIGNvbnRleHRJZF0oU3RvcmFnZUFjY2Vzc1N0YXR1cyBwcm9tcHRBY2NlcHRlZCkgewotICAg
ICAgICAgICAgICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5l
dHdvcmtQcm9jZXNzUHJveHk6OlN0b3JhZ2VBY2Nlc3NSZXF1ZXN0UmVzdWx0KHN0YXRpY19jYXN0
PHVuc2lnbmVkPihwcm9tcHRBY2NlcHRlZCksIGNvbnRleHRJZCksIDApOwotICAgICAgICAgICAg
fSk7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UKKyAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9h
ZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQor
ICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+cmVxdWVzdFN0b3JhZ2VBY2Nlc3Mo
cmVzb3VyY2VEb21haW4sIGZpcnN0UGFydHlEb21haW4sIGZyYW1lSUQsIHBhZ2VJRCwgcHJvbXB0
RW5hYmxlZCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICBlbHNlCisgICAg
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihTdG9yYWdlQWNjZXNzU3RhdHVzOjpDYW5ub3RSZXF1
ZXN0QWNjZXNzKTsKKyAgICB9IGVsc2UgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoU3RvcmFnZUFjY2Vzc1N0YXR1czo6Q2Fubm90UmVx
dWVzdEFjY2Vzcyk7CisgICAgfQogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpncmFudFN0b3Jh
Z2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHJlc291cmNl
RG9tYWluLCBjb25zdCBTdHJpbmcmIGZpcnN0UGFydHlEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90
PiBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIGJvb2wgdXNlcldhc1Byb21wdGVkLCB1aW50NjRf
dCBjb250ZXh0SWQpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpncmFudFN0b3JhZ2VBY2Nlc3MoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBjb25z
dCBTdHJpbmcmIGZpcnN0UGFydHlEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1
aW50NjRfdCBwYWdlSUQsIGJvb2wgdXNlcldhc1Byb21wdGVkLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGJvb2wgaXNTdG9yYWdlR3Jh
bnRlZCA9IGZhbHNlOwogICAgIGlmIChhdXRvKiBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBzdG9y
YWdlU2Vzc2lvbihzZXNzaW9uSUQpKSB7CkBAIC04OTksNyArMTAxMCw3IEBAIHZvaWQgTmV0d29y
a1Byb2Nlc3M6OmdyYW50U3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNv
bnN0IFN0cmluZyYKICAgICB9IGVsc2UKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAK
LSAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJv
Y2Vzc1Byb3h5OjpTdG9yYWdlQWNjZXNzT3BlcmF0aW9uUmVzdWx0KGlzU3RvcmFnZUdyYW50ZWQs
IGNvbnRleHRJZCksIDApOworICAgIGNvbXBsZXRpb25IYW5kbGVyKGlzU3RvcmFnZUdyYW50ZWQp
OwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpsb2dGcmFtZU5hdmlnYXRpb24oUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHRhcmdldFByaW1hcnlEb21haW4sIGNvbnN0
IFN0cmluZyYgbWFpbkZyYW1lUHJpbWFyeURvbWFpbiwgY29uc3QgU3RyaW5nJiBzb3VyY2VQcmlt
YXJ5RG9tYWluLCBjb25zdCBTdHJpbmcmIHRhcmdldEhvc3QsIGNvbnN0IFN0cmluZyYgbWFpbkZy
YW1lSG9zdCwgYm9vbCBpc1JlZGlyZWN0LCBib29sIGlzTWFpbkZyYW1lKQpAQCAtOTE2LDE4ICsx
MDI3LDI1IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmxvZ1VzZXJJbnRlcmFjdGlvbihQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYKICAgICBpZiAoYXV0byogbmV0d29ya1Nl
c3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CiAgICAgICAgIGlmIChh
dXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9h
ZFN0YXRpc3RpY3MoKSkKICAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPmxvZ1Vz
ZXJJbnRlcmFjdGlvbih0YXJnZXRQcmltYXJ5RG9tYWluLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7Ci0gICAgfSBlbHNlCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKCk7CisgICAgfSBlbHNlIHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgfQogfQogCiB2b2lkIE5ldHdvcmtQcm9j
ZXNzOjpoYWRVc2VySW50ZXJhY3Rpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBT
dHJpbmcmIHJlc291cmNlRG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMt
Pm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHJlc291cmNl
TG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygp
KSB7CisgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nl
c3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKICAgICAgICAgICAgIHJlc291cmNlTG9h
ZFN0YXRpc3RpY3MtPmhhc0hhZFVzZXJJbnRlcmFjdGlvbihyZXNvdXJjZURvbWFpbiwgV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOwotICAgICAgICB9Ci0gICAgfSBlbHNlCisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKKyAgICB9IGVsc2Ugewog
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
ZmFsc2UpOworICAgIH0KIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y2xlYXJVc2VySW50ZXJh
Y3Rpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHJlc291cmNlRG9t
YWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC05
MzUsMTcgKzEwNTMsMjEgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y2xlYXJVc2VySW50ZXJhY3Rp
b24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcKICAgICBpZiAoYXV0byog
bmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CiAgICAg
ICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJl
c291cmNlTG9hZFN0YXRpc3RpY3MoKSkKICAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MtPmNsZWFyVXNlckludGVyYWN0aW9uKHJlc291cmNlRG9tYWluLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7Ci0gICAgfSBlbHNlCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKCk7CisgICAgfSBlbHNlIHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgfQogfQogCi12b2lkIE5ldHdv
cmtQcm9jZXNzOjpyZW1vdmVBbGxTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgdWludDY0X3QgY29udGV4dElkKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVtb3ZlQWxsU3Rv
cmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoYXV0byogbmV0d29ya1N0b3Jh
Z2VTZXNzaW9uID0gc3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKICAgICAgICAgbmV0d29ya1N0
b3JhZ2VTZXNzaW9uLT5yZW1vdmVBbGxTdG9yYWdlQWNjZXNzKCk7CiAgICAgZWxzZQogICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5z
ZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpEaWRSZW1vdmVBbGxTdG9yYWdlQWNj
ZXNzKGNvbnRleHRJZCksIDApOworICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKIHZvaWQg
TmV0d29ya1Byb2Nlc3M6OnJlbW92ZVByZXZhbGVudERvbWFpbnMoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWlucykKQEAgLTk1NCwxMyArMTA3Niwx
MyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZW1vdmVQcmV2YWxlbnREb21haW5zKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgY29uc3QgVmVjdAogICAgICAgICBuZXR3b3JrU3RvcmFnZVNlc3Np
b24tPnJlbW92ZVByZXZhbGVudERvbWFpbnMoZG9tYWlucyk7CiB9CiAKLXZvaWQgTmV0d29ya1By
b2Nlc3M6OnNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgU2Vjb25kcyBzZWNvbmRzLCB1aW50NjRfdCBjb250ZXh0SWQpCit2b2lk
IE5ldHdvcmtQcm9jZXNzOjpzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFNlY29uZHMgc2Vjb25kcywgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmIChhdXRvKiBuZXR3b3Jr
U3RvcmFnZVNlc3Npb24gPSBzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQogICAgICAgICBuZXR3
b3JrU3RvcmFnZVNlc3Npb24tPnNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2Vz
KFNlY29uZHMgeyBzZWNvbmRzIH0pOwogICAgIGVsc2UKICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0
d29ya1Byb2Nlc3NQcm94eTo6RGlkU2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJj
ZXMoY29udGV4dElkKSwgMCk7CisgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKIH0KIAogdm9pZCBO
ZXR3b3JrUHJvY2Vzczo6c2V0R3JhbmRmYXRoZXJpbmdUaW1lKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgU2Vjb25kcyBzZWNvbmRzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCkBAIC05NjgsOCArMTA5MCwxMiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpz
ZXRHcmFuZGZhdGhlcmluZ1RpbWUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTZWNvbmRzIHNl
YwogICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNl
c3Npb25JRCkpIHsKICAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBu
ZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQogICAgICAgICAgICAgcmVz
b3VyY2VMb2FkU3RhdGlzdGljcy0+c2V0R3JhbmRmYXRoZXJpbmdUaW1lKHNlY29uZHMsIFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLSAgICB9IGVsc2UKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICB9IGVsc2UgewogICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICB9CiB9CiAK
IHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldE1heFN0YXRpc3RpY3NFbnRyaWVzKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgdWludDY0X3QgbWF4aW11bUVudHJ5Q291bnQsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTk3Nyw4ICsxMTAzLDEyIEBAIHZv
aWQgTmV0d29ya1Byb2Nlc3M6OnNldE1heFN0YXRpc3RpY3NFbnRyaWVzKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgdWludDY0X3QKICAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlz
LT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CiAgICAgICAgIGlmIChhdXRvKiByZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3Mo
KSkKICAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnNldE1heFN0YXRpc3RpY3NF
bnRyaWVzKG1heGltdW1FbnRyeUNvdW50LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci0g
ICAgfSBlbHNlCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7
CisgICAgfSBlbHNlIHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKCk7CisgICAgfQogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRN
aW5pbXVtVGltZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBTZWNvbmRzIHNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKQEAgLTk4Niw4ICsxMTE2LDEyIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNl
dE1pbmltdW1UaW1lQmV0d2VlbkRhdGFSZWNvcmRzUmVtb3ZhbChQQUw6OlNlc3Npb25JRCBzZXNz
CiAgICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vz
c2lvbklEKSkgewogICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5l
dHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCiAgICAgICAgICAgICByZXNv
dXJjZUxvYWRTdGF0aXN0aWNzLT5zZXRNaW5pbXVtVGltZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92
YWwoc2Vjb25kcywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotICAgIH0gZWxzZQorICAg
ICAgICBlbHNlCisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgIH0gZWxzZSB7
CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cigpOworICAgIH0KIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0UHJ1bmVFbnRyaWVzRG93
blRvKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgcHJ1bmVUYXJnZXRDb3VudCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtOTk1LDgg
KzExMjksMTIgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0UHJ1bmVFbnRyaWVzRG93blRvKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgcHIKICAgICBpZiAoYXV0byogbmV0d29y
a1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CiAgICAgICAgIGlm
IChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNl
TG9hZFN0YXRpc3RpY3MoKSkKICAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnNl
dFBydW5lRW50cmllc0Rvd25UbyhwcnVuZVRhcmdldENvdW50LCBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7Ci0gICAgfSBlbHNlCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKCk7CisgICAgfSBlbHNlIHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgfQogfQogCiB2b2lkIE5ldHdvcmtQ
cm9jZXNzOjpzZXRUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgU2Vjb25kcyBzZWNvbmRzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCkBAIC0xMDA0LDggKzExNDIsMTIgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6
c2V0VGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFNl
Y28KICAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihz
ZXNzaW9uSUQpKSB7CiAgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0g
bmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKICAgICAgICAgICAgIHJl
c291cmNlTG9hZFN0YXRpc3RpY3MtPnNldFRpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24oc2Vjb25k
cywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotICAgIH0gZWxzZQorICAgICAgICBlbHNl
CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgIH0gZWxzZSB7CiAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAg
IH0KIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0U2hvdWxkQ2xhc3NpZnlSZXNvdXJjZXNC
ZWZvcmVEYXRhUmVjb3Jkc1JlbW92YWwoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBib29sIHZh
bHVlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC0x
MDEzLDggKzExNTUsMTIgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0U2hvdWxkQ2xhc3NpZnlS
ZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3Jkc1JlbW92YWwoUEFMOjpTZXMKICAgICBpZiAoYXV0byog
bmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CiAgICAg
ICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJl
c291cmNlTG9hZFN0YXRpc3RpY3MoKSkKICAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MtPnNldFNob3VsZENsYXNzaWZ5UmVzb3VyY2VzQmVmb3JlRGF0YVJlY29yZHNSZW1vdmFsKHZh
bHVlLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci0gICAgfSBlbHNlCisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgfSBlbHNlIHsKICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7Cisg
ICAgfQogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RW5hYmxlZChib29sIGVuYWJsZWQpCkBAIC0xMDI4LDE3ICsxMTc0LDIxIEBAIHZvaWQgTmV0d29y
a1Byb2Nlc3M6OnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklECiAgICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29y
a1Nlc3Npb24oc2Vzc2lvbklEKSkgewogICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCiAgICAg
ICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGVidWdNb2RlKGRlYnVnTW9kZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotICAgIH0g
ZWxzZQorICAgICAgICBlbHNlCisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAg
IH0gZWxzZSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcigpOworICAgIH0KIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVzZXRDYWNo
ZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IHVpbnQ2NF90IGNvbnRleHRJZCkKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlc2V0Q2FjaGVNYXhB
Z2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKGF1
dG8qIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IHN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCiAg
ICAgICAgIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+cmVzZXRDYWNoZU1heEFnZUNhcEZvclByZXZh
bGVudFJlc291cmNlcygpOwogICAgIGVsc2UKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci0gICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1By
b2Nlc3NQcm94eTo6RGlkVXBkYXRlUnVudGltZVNldHRpbmdzKGNvbnRleHRJZCksIDApOworICAg
IGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAjZW5kaWYgLy8gRU5BQkxFKFJFU09VUkNFX0xPQURf
U1RBVElTVElDUykKIApAQCAtMTIxMSw3ICsxMzYxLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6
ZGVsZXRlV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vi
c2kKIAogICAgICAgICAgICAgICAgIC8vIElmIHdlIGFyZSBkZWxldGluZyBhbGwgb2YgdGhlIGRh
dGEgdHlwZXMgdGhhdCB0aGUgcmVzb3VyY2UgbG9hZCBzdGF0aXN0aWNzIHN0b3JlIG1vbml0b3Jz
CiAgICAgICAgICAgICAgICAgLy8gd2UgZG8gbm90IG5lZWQgdG8gcmUtZ3JhbmRmYXRoZXIgb2xk
IGRhdGEuCi0gICAgICAgICAgICAgICAgYXV0byBzaG91bGRHcmFuZGZhdGhlciA9ICgobW9uaXRv
cmVkVHlwZXNSYXcgJiBkZWxldGVkVHlwZXNSYXcpID09IG1vbml0b3JlZFR5cGVzUmF3KSA/IFNo
b3VsZEdyYW5kZmF0aGVyOjpObyA6IFNob3VsZEdyYW5kZmF0aGVyOjpZZXM7CisgICAgICAgICAg
ICAgICAgYXV0byBzaG91bGRHcmFuZGZhdGhlciA9ICgobW9uaXRvcmVkVHlwZXNSYXcgJiBkZWxl
dGVkVHlwZXNSYXcpID09IG1vbml0b3JlZFR5cGVzUmF3KSA/IFNob3VsZEdyYW5kZmF0aGVyU3Rh
dGlzdGljczo6Tm8gOiBTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3M6OlllczsKIAogICAgICAg
ICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFu
ZFBlcnNpc3RlbnQobW9kaWZpZWRTaW5jZSwgc2hvdWxkR3JhbmRmYXRoZXIsIFtjbGVhclRhc2tz
SGFuZGxlciA9IGNsZWFyVGFza3NIYW5kbGVyLmNvcHlSZWYoKV0geyB9KTsKICAgICAgICAgICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAppbmRl
eCBhZmJlYmJkZTE3OWU5YzMyZTA4ZjliYmQwMDRhN2RlNjkxZjlhNTg1Li42ZWZhZDI4ZDExMWEx
ZmEyMWQ0ZjA2MTkwYWY4YTMyYWNmMGY4YjU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMi0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMi0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtODEsNiArODEsOCBAQCBjbGFzcyBOZXR3b3Jr
UHJvY2Vzc1N1cHBsZW1lbnQ7CiBjbGFzcyBOZXR3b3JrUHJveGltaXR5TWFuYWdlcjsKIGNsYXNz
IFdlYlNXU2VydmVyQ29ubmVjdGlvbjsKIGNsYXNzIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbjsKK2VudW0gY2xhc3MgU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzIDogYm9vbDsKK2Vu
dW0gY2xhc3MgU3RvcmFnZUFjY2Vzc1N0YXR1cyA6IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIFdlYnNp
dGVEYXRhRmV0Y2hPcHRpb247CiBlbnVtIGNsYXNzIFdlYnNpdGVEYXRhVHlwZTsKIHN0cnVjdCBO
ZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczsKQEAgLTE3NiwxMiArMTc4LDEyIEBAIHB1
YmxpYzoKICAgICB2b2lkIGNsZWFyUHJldmFsZW50UmVzb3VyY2UoUEFMOjpTZXNzaW9uSUQsIGNv
bnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7
CiAgICAgdm9pZCBjbGVhclVzZXJJbnRlcmFjdGlvbihQQUw6OlNlc3Npb25JRCwgY29uc3QgU3Ry
aW5nJiByZXNvdXJjZURvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2
b2lkIGRlbGV0ZVdlYnNpdGVEYXRhRm9yVG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbnNJbkFs
bFBlcnNpc3RlbnREYXRhU3RvcmVzKFBBTDo6U2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURh
dGFUeXBlPiwgVmVjdG9yPFN0cmluZz4mJiB0b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWlucywg
Ym9vbCBzaG91bGROb3RpZnlQYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEhhc2hT
ZXQ8U3RyaW5nPiYpPiYmKTsKLSAgICB2b2lkIGR1bXBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKFBB
TDo6U2Vzc2lvbklELCB1aW50NjRfdCBjb250ZXh0SWQpOwotICAgIHZvaWQgdXBkYXRlUHJldmFs
ZW50RG9tYWluc1RvQmxvY2tDb29raWVzRm9yKFBBTDo6U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgZG9tYWluc1RvQmxvY2ssIHVpbnQ2NF90IGNvbnRleHRJZCk7CisgICAgdm9pZCBk
dW1wUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChTdHJpbmcpPiYmKTsKKyAgICB2b2lkIHVwZGF0ZVByZXZhbGVudERvbWFpbnNUb0Js
b2NrQ29va2llc0ZvcihQQUw6OlNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFp
bnNUb0Jsb2NrLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgaXNHcmFu
ZGZhdGhlcmVkKFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHRhcmdldFByaW1hcnlEb21h
aW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIHZvaWQgaXNQcmV2YWxl
bnRSZXNvdXJjZShQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBpc1ZlcnlQcmV2YWxl
bnRSZXNvdXJjZShQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7Ci0gICAgdm9pZCBzZXRBZ2VDYXBGb3JD
bGllbnRTaWRlQ29va2llcyhQQUw6OlNlc3Npb25JRCwgT3B0aW9uYWw8U2Vjb25kcz4sIHVpbnQ2
NF90IGNvbnRleHRJZCk7CisgICAgdm9pZCBzZXRBZ2VDYXBGb3JDbGllbnRTaWRlQ29va2llcyhQ
QUw6OlNlc3Npb25JRCwgT3B0aW9uYWw8U2Vjb25kcz4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7CiAgICAgdm9pZCBpc1JlZ2lzdGVyZWRBc1JlZGlyZWN0aW5nVG8oUEFMOjpTZXNzaW9u
SUQsIGNvbnN0IFN0cmluZyYgcmVkaXJlY3RlZEZyb20sIGNvbnN0IFN0cmluZyYgcmVkaXJlY3Rl
ZFRvLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAgICB2b2lkIGlzUmVnaXN0
ZXJlZEFzU3ViRnJhbWVVbmRlcihQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBzdWJmcmFt
ZSwgY29uc3QgU3RyaW5nJiB0b3BGcmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
Jik7CiAgICAgdm9pZCBpc1JlZ2lzdGVyZWRBc1N1YnJlc291cmNlVW5kZXIoUEFMOjpTZXNzaW9u
SUQsIGNvbnN0IFN0cmluZyYgc3VicmVzb3VyY2UsIGNvbnN0IFN0cmluZyYgdG9wRnJhbWUsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwpAQCAtMTkyLDIyICsxOTQsMjIgQEAgcHVi
bGljOgogICAgIHZvaWQgc2V0VmVyeVByZXZhbGVudFJlc291cmNlKFBBTDo6U2Vzc2lvbklELCBj
b25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OwogICAgIHZvaWQgc2V0UHJ1bmVFbnRyaWVzRG93blRvKFBBTDo6U2Vzc2lvbklELCB1aW50NjRf
dCBwcnVuZVRhcmdldENvdW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZv
aWQgaGFkVXNlckludGVyYWN0aW9uKFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHJlc291
cmNlRG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKLSAgICB2b2lkIGhh
c1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZShQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiByZXNv
dXJjZURvbWFpbiwgY29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9tYWluLCB1aW50NjRfdCBmcmFt
ZUlELCB1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGNvbnRleHRJZCk7Ci0gICAgdm9pZCBnZXRB
bGxTdG9yYWdlQWNjZXNzRW50cmllcyhQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgY29udGV4dElk
KTsKLSAgICB2b2lkIGdyYW50U3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgU3Ry
aW5nJiByZXNvdXJjZURvbWFpbiwgY29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9tYWluLCBPcHRp
b25hbDx1aW50NjRfdD4gZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBib29sIHVzZXJXYXNQcm9t
cHRlZCwgdWludDY0X3QgY29udGV4dElkKTsKKyAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3NGb3JG
cmFtZShQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwgY29uc3Qg
U3RyaW5nJiBmaXJzdFBhcnR5RG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdl
SUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQgZ2V0QWxsU3Rv
cmFnZUFjY2Vzc0VudHJpZXMoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
VmVjdG9yPFN0cmluZz4gZG9tYWlucyk+JiYpOworICAgIHZvaWQgZ3JhbnRTdG9yYWdlQWNjZXNz
KFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBjb25zdCBTdHJp
bmcmIGZpcnN0UGFydHlEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1aW50NjRf
dCBwYWdlSUQsIGJvb2wgdXNlcldhc1Byb21wdGVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmKTsKICAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQsIGNvbnN0
IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwg
T3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBsb2dGcmFtZU5hdmlnYXRpb24oUEFMOjpT
ZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgdGFyZ2V0UHJpbWFyeURvbWFpbiwgY29uc3QgU3RyaW5n
JiBtYWluRnJhbWVQcmltYXJ5RG9tYWluLCBjb25zdCBTdHJpbmcmIHNvdXJjZVByaW1hcnlEb21h
aW4sIGNvbnN0IFN0cmluZyYgdGFyZ2V0SG9zdCwgY29uc3QgU3RyaW5nJiBtYWluRnJhbWVIb3N0
LCBib29sIGlzUmVkaXJlY3QsIGJvb2wgaXNNYWluRnJhbWUpOwogICAgIHZvaWQgbG9nVXNlcklu
dGVyYWN0aW9uKFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHRhcmdldFByaW1hcnlEb21h
aW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCByZW1vdmVBbGxTdG9y
YWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCBjb250ZXh0SWQpOworICAgIHZvaWQg
cmVtb3ZlQWxsU3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKTsKICAgICB2b2lkIHJlbW92ZVByZXZhbGVudERvbWFpbnMoUEFMOjpTZXNzaW9u
SUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zKTsKLSAgICB2b2lkIHJlcXVlc3RTdG9y
YWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBj
b25zdCBTdHJpbmcmIGZpcnN0UGFydHlEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlE
LCB1aW50NjRfdCBwYWdlSUQsIGJvb2wgcHJvbXB0RW5hYmxlZCwgdWludDY0X3QgY29udGV4dElk
KTsKLSAgICB2b2lkIHJlc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoUEFM
OjpTZXNzaW9uSUQsIHVpbnQ2NF90IGNvbnRleHRJZCk7CisgICAgdm9pZCByZXF1ZXN0U3RvcmFn
ZUFjY2VzcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwgY29u
c3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9tYWluLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwg
dWludDY0X3QgcGFnZUlELCBib29sIHByb21wdEVuYWJsZWQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoU3RvcmFnZUFjY2Vzc1N0YXR1cyk+JiYpOworICAgIHZvaWQgcmVzZXRDYWNoZU1heEFnZUNh
cEZvclByZXZhbGVudFJlc291cmNlcyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKTsKICAgICB2b2lkIHJlc2V0UGFyYW1ldGVyc1RvRGVmYXVsdFZhbHVlcyhQQUw6
OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lkIHNjaGVk
dWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoUEFMOjpTZXNzaW9uSUQsIE9wdGlvbmFsPFdh
bGxUaW1lPiBtb2RpZmllZFNpbmNlLCBib29sIHNob3VsZEdyYW5kZmF0aGVyLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgc2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVy
c2lzdGVudChQQUw6OlNlc3Npb25JRCwgT3B0aW9uYWw8V2FsbFRpbWU+IG1vZGlmaWVkU2luY2Us
IFNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKICAgICB2b2lkIHNjaGVkdWxlQ29va2llQmxvY2tpbmdVcGRhdGUoUEFMOjpTZXNzaW9uSUQs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzY2hlZHVsZVN0YXRpc3Rp
Y3NBbmREYXRhUmVjb3Jkc1Byb2Nlc3NpbmcoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzdWJtaXRUZWxlbWV0cnkoUEFMOjpTZXNzaW9uSUQs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBzZXRDYWNoZU1heEFnZUNh
cEZvclByZXZhbGVudFJlc291cmNlcyhQQUw6OlNlc3Npb25JRCwgU2Vjb25kcywgdWludDY0X3Qg
Y29udGV4dElkKTsKKyAgICB2b2lkIHNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3Vy
Y2VzKFBBTDo6U2Vzc2lvbklELCBTZWNvbmRzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OwogICAgIHZvaWQgc2V0R3JhbmRmYXRoZXJpbmdUaW1lKFBBTDo6U2Vzc2lvbklELCBTZWNvbmRz
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0TGFzdFNlZW4oUEFM
OjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIFNlY29uZHMsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRNaW5pbXVtVGltZUJldHdlZW5E
YXRhUmVjb3Jkc1JlbW92YWwoUEFMOjpTZXNzaW9uSUQsIFNlY29uZHMsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCA2MjU2NTgxMmFhZTY1MGEyYTBlNTU0
NGQ3YTRkY2E2YzA0ZGI5NjQzLi41ZDJhYTZkMmNjMDFmZmZkYWM3YWFhODkzNWQ2MTY0MTE3ZDRj
MDYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTEsNCArMSw0IEBACi0jIENvcHlyaWdodCAoQykgMjAx
Mi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAy
MDEyLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC04NywzNSArODcsMzUgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nl
c3MgTGVnYWN5UmVjZWl2ZXIgewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1Mp
CiAgICAgQ2xlYXJQcmV2YWxlbnRSZXNvdXJjZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0
cmluZyByZXNvdXJjZURvbWFpbikgLT4gKCkgQXN5bmMKICAgICBDbGVhclVzZXJJbnRlcmFjdGlv
bihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0cmluZyByZXNvdXJjZURvbWFpbikgLT4gKCkg
QXN5bmMKLSAgICBEdW1wUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIHVpbnQ2NF90IGNvbnRleHRJZCkKKyAgICBEdW1wUmVzb3VyY2VMb2FkU3RhdGlzdGlj
cyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+IChTdHJpbmcgZHVtcGVkU3RhdGlzdGljcykg
QXN5bmMKICAgICBTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChib29sIGVuYWJsZWQp
Ci0gICAgVXBkYXRlUHJldmFsZW50RG9tYWluc1RvQmxvY2tDb29raWVzRm9yKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgVmVjdG9yPFN0cmluZz4gZG9tYWluc1RvQmxvY2ssIHVpbnQ2NF90IGNv
bnRleHRJZCkKKyAgICBVcGRhdGVQcmV2YWxlbnREb21haW5zVG9CbG9ja0Nvb2tpZXNGb3IoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBWZWN0b3I8U3RyaW5nPiBkb21haW5zVG9CbG9jaykgLT4g
KCkgQXN5bmMKICAgICBJc0dyYW5kZmF0aGVyZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBT
dHJpbmcgdGFyZ2V0UHJpbWFyeURvbWFpbikgLT4gKGJvb2wgaXNHcmFuZGZhdGhlcmVkKSBBc3lu
YwogICAgIElzUHJldmFsZW50UmVzb3VyY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTdHJp
bmcgdGFyZ2V0UHJpbWFyeURvbWFpbikgLT4gKGJvb2wgaXNQcmV2YWxlbnQpIEFzeW5jCiAgICAg
SXNWZXJ5UHJldmFsZW50UmVzb3VyY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTdHJpbmcg
dGFyZ2V0UHJpbWFyeURvbWFpbikgLT4gKGJvb2wgaXNWZXJ5UHJldmFsZW50KSBBc3luYwotICAg
IFNldEFnZUNhcEZvckNsaWVudFNpZGVDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
T3B0aW9uYWw8U2Vjb25kcz4gc2Vjb25kcywgdWludDY0X3QgY29udGV4dElkKQorICAgIFNldEFn
ZUNhcEZvckNsaWVudFNpZGVDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9u
YWw8U2Vjb25kcz4gc2Vjb25kcykgLT4gKCkgQXN5bmMKICAgICBTZXRMYXN0U2VlbihQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIFN0cmluZyByZXNvdXJjZURvbWFpbiwgU2Vjb25kcyBzZWNvbmRz
KSAtPiAoKSBBc3luYwogICAgIFNldFByZXZhbGVudFJlc291cmNlKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgU3RyaW5nIHJlc291cmNlRG9tYWluKSAtPiAoKSBBc3luYwogICAgIFNldFByZXZh
bGVudFJlc291cmNlRm9yRGVidWdNb2RlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU3RyaW5n
IHJlc291cmNlRG9tYWluKSAtPiAoKSBBc3luYwogICAgIEhhZFVzZXJJbnRlcmFjdGlvbihQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0cmluZyByZXNvdXJjZURvbWFpbikgLT4gKGJvb2wgaGFk
VXNlckludGVyYWN0aW9uKSBBc3luYwotICAgIEhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZShQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0cmluZyByZXNvdXJjZURvbWFpbiwgU3RyaW5nIGZpcnN0
UGFydHlEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3Qg
Y29udGV4dElkKQotICAgIEhhc1N0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBTdHJpbmcgcmVzb3VyY2VEb21haW4sIFN0cmluZyBmaXJzdFBhcnR5RG9tYWluLCBPcHRpb25h
bDx1aW50NjRfdD4gZnJhbWVJRCwgdWludDY0X3QgcGFnZUlEKSAtPiAoYm9vbCBoYWRVc2VySW50
ZXJhY3Rpb24pIEFzeW5jCi0gICAgR2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBjb250ZXh0SWQpCi0gICAgR3JhbnRTdG9yYWdlQWNj
ZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU3RyaW5nIHJlc291cmNlRG9tYWluLCBTdHJp
bmcgZmlyc3RQYXJ0eURvbWFpbiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHVpbnQ2NF90
IHBhZ2VJRCwgYm9vbCB1c2VyV2FzUHJvbXB0ZWQsIHVpbnQ2NF90IGNvbnRleHRJZCkKKyAgICBI
YXNTdG9yYWdlQWNjZXNzRm9yRnJhbWUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTdHJpbmcg
cmVzb3VyY2VEb21haW4sIFN0cmluZyBmaXJzdFBhcnR5RG9tYWluLCB1aW50NjRfdCBmcmFtZUlE
LCB1aW50NjRfdCBwYWdlSUQpIC0+IChib29sIGhhc1N0b3JhZ2VBY2Nlc3MpIEFzeW5jCisgICAg
SGFzU3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0cmluZyByZXNvdXJj
ZURvbWFpbiwgU3RyaW5nIGZpcnN0UGFydHlEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFt
ZUlELCB1aW50NjRfdCBwYWdlSUQpIC0+IChib29sIGhhc1N0b3JhZ2VBY2Nlc3MpIEFzeW5jCisg
ICAgR2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAt
PiAoVmVjdG9yPFN0cmluZz4gZG9tYWlucykgQXN5bmMKKyAgICBHcmFudFN0b3JhZ2VBY2Nlc3Mo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTdHJpbmcgcmVzb3VyY2VEb21haW4sIFN0cmluZyBm
aXJzdFBhcnR5RG9tYWluLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgdWludDY0X3QgcGFn
ZUlELCBib29sIHVzZXJXYXNQcm9tcHRlZCkgLT4gKGJvb2wgYWNjZXNzR3JhbnRlZCkgQXN5bmMK
ICAgICBJc1JlZ2lzdGVyZWRBc1JlZGlyZWN0aW5nVG8oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBTdHJpbmcgcmVkaXJlY3RlZEZyb20sIFN0cmluZyByZWRpcmVjdGVkVG8pIC0+IChib29sIGlz
UmVkaXJlY3RpbmdUbykgQXN5bmMKICAgICBJc1JlZ2lzdGVyZWRBc1N1YkZyYW1lVW5kZXIoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTdHJpbmcgc3ViZnJhbWUsIFN0cmluZyB0b3BGcmFtZSkg
LT4gKGJvb2wgaXNTdWJmcmFtZVVuZGVyKSBBc3luYwogICAgIElzUmVnaXN0ZXJlZEFzU3VicmVz
b3VyY2VVbmRlcihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0cmluZyBzdWJyZXNvdXJjZSwg
U3RyaW5nIHRvcEZyYW1lKSAtPiAoYm9vbCBpc1N1YnJlc291cmNlVW5kZXIpIEFzeW5jCiAgICAg
TG9nRnJhbWVOYXZpZ2F0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU3RyaW5nIHRhcmdl
dFByaW1hcnlEb21haW4sIFN0cmluZyBtYWluRnJhbWVQcmltYXJ5RG9tYWluLCBTdHJpbmcgc291
cmNlUHJpbWFyeURvbWFpbiwgU3RyaW5nIHRhcmdldEhvc3QsIFN0cmluZyBtYWluRnJhbWVIb3N0
LCBib29sIGlzUmVkaXJlY3QsIGJvb2wgaXNNYWluRnJhbWUpCiAgICAgTG9nVXNlckludGVyYWN0
aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU3RyaW5nIHRhcmdldFByaW1hcnlEb21haW4p
IC0+ICgpIEFzeW5jCi0gICAgUmVtb3ZlQWxsU3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIHVpbnQ2NF90IGNvbnRleHRJZCkKKyAgICBSZW1vdmVBbGxTdG9yYWdlQWNjZXNz
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKCkgQXN5bmMKICAgICBSZW1vdmVQcmV2YWxl
bnREb21haW5zKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVmVjdG9yPFN0cmluZz4gZG9tYWlu
c1dpdGhJbnRlcmFjdGlvbikKLSAgICBSZXF1ZXN0U3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIFN0cmluZyByZXNvdXJjZURvbWFpbiwgU3RyaW5nIGZpcnN0UGFydHlEb21h
aW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIGJvb2wgcHJv
bXB0RW5hYmxlZCwgdWludDY0X3QgY29udGV4dElkKQorICAgIFJlcXVlc3RTdG9yYWdlQWNjZXNz
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU3RyaW5nIHJlc291cmNlRG9tYWluLCBTdHJpbmcg
Zmlyc3RQYXJ0eURvbWFpbiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHVpbnQ2NF90IHBh
Z2VJRCwgYm9vbCBwcm9tcHRFbmFibGVkKSAtPiAoZW51bTp1aW50OF90IFdlYktpdDo6U3RvcmFn
ZUFjY2Vzc1N0YXR1cyBzdG9yYWdlQWNjZXNzU3RhdHVzKSBBc3luYwogICAgIFJlc2V0UGFyYW1l
dGVyc1RvRGVmYXVsdFZhbHVlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+ICgpIEFzeW5j
Ci0gICAgU2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIE9wdGlvbmFsPFdhbGxUaW1lPiBtb2RpZmllZFNpbmNlLCBib29sIHNob3VsZEdy
YW5kZmF0aGVyKSAtPiAoKSBBc3luYworICAgIFNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNp
c3RlbnQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25hbDxXYWxsVGltZT4gbW9kaWZp
ZWRTaW5jZSwgZW51bTpib29sIFdlYktpdDo6U2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzIHNo
b3VsZEdyYW5kZmF0aGVyKSAtPiAoKSBBc3luYwogICAgIFNjaGVkdWxlQ29va2llQmxvY2tpbmdV
cGRhdGUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoKSBBc3luYwogICAgIFNjaGVkdWxl
U3RhdGlzdGljc0FuZERhdGFSZWNvcmRzUHJvY2Vzc2luZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQpIC0+ICgpIEFzeW5jCiAgICAgU3VibWl0VGVsZW1ldHJ5KFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCkgLT4gKCkgQXN5bmMKLSAgICBTZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291
cmNlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFNlY29uZHMgc2Vjb25kcywgdWludDY0X3Qg
Y29udGV4dElkKQorICAgIFNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU2Vjb25kcyBzZWNvbmRzKSAtPiAoKSBBc3luYwogICAg
IFNldEdyYW5kZmF0aGVyZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTdHJpbmcgcmVzb3Vy
Y2VEb21haW4sIGJvb2wgaXNHcmFuZGZhdGhlcmVkKSAtPiAoKSBBc3luYwogICAgIFNldEdyYW5k
ZmF0aGVyaW5nVGltZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFNlY29uZHMgc2Vjb25kcykg
LT4gKCkgQXN5bmMKICAgICBTZXRNYXhTdGF0aXN0aWNzRW50cmllcyhQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIHVpbnQ2NF90IG1heGltdW1FbnRyeUNvdW50KSAtPiAoKSBBc3luYwpAQCAtMTMz
LDcgKzEzMyw3IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsK
ICAgICBTZXRUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgU2Vjb25kcyBzZWNvbmRzKSAtPiAoKSBBc3luYwogICAgIFNldFRvcEZyYW1lVW5pcXVlUmVk
aXJlY3RUbyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0cmluZyB0b3BGcmFtZUhvc3ROYW1l
LCBTdHJpbmcgaG9zdE5hbWVSZWRpcmVjdGVkVG8pIC0+ICgpIEFzeW5jCiAgICAgU2V0VG9wRnJh
bWVVbmlxdWVSZWRpcmVjdEZyb20oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTdHJpbmcgdG9w
RnJhbWVIb3N0TmFtZSwgU3RyaW5nIGhvc3ROYW1lUmVkaXJlY3RlZEZyb20pIC0+ICgpIEFzeW5j
Ci0gICAgUmVzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IGNvbnRleHRJZCkKKyAgICBSZXNldENhY2hlTWF4QWdl
Q2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKCkg
QXN5bmMKICNlbmRpZgogCiAgICAgU2V0U2Vzc2lvbklzQ29udHJvbGxlZEJ5QXV0b21hdGlvbihQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGJvb2wgY29udHJvbGxlZCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcApp
bmRleCBiYTMzM2M5ZjVmZDM1ZmQ4MjBlYjg1NWUwZjUyNTM3NmJlMmY0YzMxLi4yNGI5ZDlmNTJj
NDBkNTAyMDM4YWQxOWRiOWExOTQ4NmJhM2E2YTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjksNiArMjks
NyBAQAogI2luY2x1ZGUgIkFQSUFycmF5LmgiCiAjaW5jbHVkZSAiQVBJV2Vic2l0ZURhdGFTdG9y
ZS5oIgogI2luY2x1ZGUgIk1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaCIKKyNp
bmNsdWRlICJTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3MuaCIKICNpbmNsdWRlICJXS0FQSUNh
c3QuaCIKICNpbmNsdWRlICJXS0RpY3Rpb25hcnkuaCIKICNpbmNsdWRlICJXS051bWJlci5oIgpA
QCAtMzE2LDYgKzMxNyw4IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1VwZGF0
ZUNvb2tpZUJsb2NraW5nKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhCiAgICAgV2ViS2l0Ojp0
b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNjaGVkdWxlQ29va2llQmxv
Y2tpbmdVcGRhdGUoW2NvbnRleHQsIGNvbXBsZXRpb25IYW5kbGVyXSgpIHsKICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoY29udGV4dCk7CiAgICAgfSk7CisjZWxzZQorICAgIGNvbXBsZXRpb25I
YW5kbGVyKGNvbnRleHQpOwogI2VuZGlmCiB9CiAKQEAgLTM3OCw3ICszODEsNyBAQCB2b2lkIFdL
V2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NQcnVuZUVudHJpZXNEb3duVG8oV0tXZWJzaXRl
RGF0YVN0b3JlUmVmIGRhdAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzQ2xlYXJJ
bk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3Jl
UmVmLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzQ2xlYXJJbk1l
bW9yeUFuZFBlcnNpc3RlbnRTdG9yZUZ1bmN0aW9uIGNhbGxiYWNrKQogewogI2lmIEVOQUJMRShS
RVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVm
KS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQo
U2hvdWxkR3JhbmRmYXRoZXI6OlllcywgW2NvbnRleHQsIGNhbGxiYWNrXSgpIHsKKyAgICBXZWJL
aXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2NoZWR1bGVDbGVh
ckluTWVtb3J5QW5kUGVyc2lzdGVudChTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3M6Olllcywg
W2NvbnRleHQsIGNhbGxiYWNrXSgpIHsKICAgICAgICAgY2FsbGJhY2soY29udGV4dCk7CiAgICAg
fSk7CiAjZWxzZQpAQCAtMzg5LDkgKzM5MiwxMSBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVN0
YXRpc3RpY3NDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudFN0b3JlKFdLV2Vic2l0ZURhdGFTdAog
dm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3Rl
bnRTdG9yZU1vZGlmaWVkU2luY2VIb3VycyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3Jl
UmVmLCB1bnNpZ25lZCBob3Vycywgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU3Rh
dGlzdGljc0NsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmVNb2RpZmllZFNpbmNlSG91cnNG
dW5jdGlvbiBjYWxsYmFjaykKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNT
KQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5z
Y2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFdhbGxUaW1lOjpub3coKSAtIFNlY29u
ZHM6OmZyb21Ib3Vycyhob3VycyksIFNob3VsZEdyYW5kZmF0aGVyOjpZZXMsIFtjb250ZXh0LCBj
YWxsYmFja10oKSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURh
dGFTdG9yZSgpLnNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoV2FsbFRpbWU6Om5v
dygpIC0gU2Vjb25kczo6ZnJvbUhvdXJzKGhvdXJzKSwgU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0
aWNzOjpZZXMsIFtjb250ZXh0LCBjYWxsYmFja10oKSB7CiAgICAgICAgIGNhbGxiYWNrKGNvbnRl
eHQpOwogICAgIH0pOworI2Vsc2UKKyAgICBjYWxsYmFjayhjb250ZXh0KTsKICNlbmRpZgogfQog
CkBAIC00MDUsOSArNDEwLDEzIEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0Ns
ZWFyVGhyb3VnaFdlYnNpdGVEYXRhUmVtb3ZhbChXS1dlYnNpdGVEYXRhU3RvCiAKIHZvaWQgV0tX
ZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc0NhY2hlTWF4QWdlQ2FwKFdLV2Vic2l0ZURhdGFT
dG9yZVJlZiBkYXRhU3RvcmVSZWYsIGRvdWJsZSBzZWNvbmRzLCB2b2lkKiBjb250ZXh0LCBXS1dl
YnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzQ2FjaGVNYXhBZ2VDYXBGdW5jdGlvbiBjYWxsYmFj
aykKIHsKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIFdlYktpdDo6
dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRDYWNoZU1heEFnZUNh
cEZvclByZXZhbGVudFJlc291cmNlcyhTZWNvbmRzIHsgc2Vjb25kcyB9LCBbY29udGV4dCwgY2Fs
bGJhY2tdIHsKICAgICAgICAgY2FsbGJhY2soY29udGV4dCk7CiAgICAgfSk7CisjZWxzZQorICAg
IGNhbGxiYWNrKGNvbnRleHQpOworI2VuZGlmCiB9CiAKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3Jl
U3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50U3RhdGUoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRh
dGFTdG9yZVJlZiwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1Jl
c2V0VG9Db25zaXN0ZW50U3RhdGVGdW5jdGlvbiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTQyMSw3
ICs0MzAsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NSZXNldFRvQ29uc2lz
dGVudFN0YXRlKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYQogICAgIHN0b3JlLmNsZWFyUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0luV2ViUHJvY2Vzc2VzKFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxs
YmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOwogICAgIHN0b3JlLnJlc2V0Q2FjaGVNYXhB
Z2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoW2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNr
QWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CiAgICAgc3RvcmUucmVzZXRQYXJhbWV0ZXJzVG9E
ZWZhdWx0VmFsdWVzKFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29w
eVJlZigpXSB7IH0pOwotICAgIHN0b3JlLnNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3Rl
bnQoU2hvdWxkR3JhbmRmYXRoZXI6Ok5vLCBbY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tB
Z2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKKyAgICBzdG9yZS5zY2hlZHVsZUNsZWFySW5NZW1v
cnlBbmRQZXJzaXN0ZW50KFNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljczo6Tm8sIFtjYWxsYmFj
a0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOwogI2Vsc2UK
ICAgICBVTlVTRURfUEFSQU0oZGF0YVN0b3JlUmVmKTsKICAgICBjb21wbGV0aW9uSGFuZGxlcihj
b250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYnNpdGVEYXRhU3RvcmUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJzaXRlRGF0YVN0b3JlLm1tCmluZGV4IGRkNTY3ZGU5Mzg4ZDAwNTVjMTM0OWQ5YWM0YjFk
Y2VkMTNiNmZjNzkuLjAxODkwZTU1NzA4ODQ3NzUzMjI2NjZjMjcwOThkYmUwMDE5MmZiZTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRh
U3RvcmUubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0
ZURhdGFTdG9yZS5tbQpAQCAtNDIyLDYgKzQyMiw4IEBAIC0gKHZvaWQpX2dldEFsbFN0b3JhZ2VB
Y2Nlc3NFbnRyaWVzRm9yOihXS1dlYlZpZXcgKil3ZWJWaWV3IGNvbXBsZXRpb25IYW5kbGVyOih2
CiAgICAgICAgICAgICBhcGlEb21haW5zLnVuY2hlY2tlZEFwcGVuZChBUEk6OlN0cmluZzo6Y3Jl
YXRlKGRvbWFpbikpOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih3cmFwcGVyKEFQSTo6QXJy
YXk6OmNyZWF0ZShXVEZNb3ZlKGFwaURvbWFpbnMpKSkpOwogICAgIH0pOworI2Vsc2UKKyAgICBj
b21wbGV0aW9uSGFuZGxlcih7IH0pOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IGNi
MDYyZjVjODFjMzk2ZWY3NWIxZGQ2MTBkNDQ5NDZhMDEwYTE0YjYuLmFjYWE4YjU2ODUwYWQ0ZGUz
MDVjZDZlZGIyYzI2YmQ0MjA5NGZiNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtMzcsNiArMzcsOCBA
QAogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVk
ZSAiTmV0d29ya1Byb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24u
aCIKKyNpbmNsdWRlICJTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3MuaCIKKyNpbmNsdWRlICJT
dG9yYWdlQWNjZXNzU3RhdHVzLmgiCiAjaW5jbHVkZSAiV2ViQ29tcGlsZWRDb250ZW50UnVsZUxp
c3QuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzTWVz
c2FnZXMuaCIKQEAgLTIzNCwyNiArMjM2LDYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpj
bGVhckNhbGxiYWNrU3RhdGVzKCkKIAogICAgIHdoaWxlICghbV9wZW5kaW5nRGVsZXRlV2Vic2l0
ZURhdGFGb3JPcmlnaW5zQ2FsbGJhY2tzLmlzRW1wdHkoKSkKICAgICAgICAgbV9wZW5kaW5nRGVs
ZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zQ2FsbGJhY2tzLnRha2UobV9wZW5kaW5nRGVsZXRlV2Vi
c2l0ZURhdGFGb3JPcmlnaW5zQ2FsbGJhY2tzLmJlZ2luKCktPmtleSkoKTsKLQotI2lmIEVOQUJM
RShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgd2hpbGUgKCFtX3NjaGVkdWxlU3RhdGlz
dGljc1Byb2Nlc3NpbmdDYWxsYmFja01hcC5pc0VtcHR5KCkpCi0gICAgICAgIG1fc2NoZWR1bGVT
dGF0aXN0aWNzUHJvY2Vzc2luZ0NhbGxiYWNrTWFwLnRha2UobV9zY2hlZHVsZVN0YXRpc3RpY3NQ
cm9jZXNzaW5nQ2FsbGJhY2tNYXAuYmVnaW4oKS0+a2V5KSgpOwotCi0gICAgd2hpbGUgKCFtX3N0
b3JhZ2VBY2Nlc3NSZXNwb25zZUNhbGxiYWNrTWFwLmlzRW1wdHkoKSkKLSAgICAgICAgbV9zdG9y
YWdlQWNjZXNzUmVzcG9uc2VDYWxsYmFja01hcC50YWtlKG1fc3RvcmFnZUFjY2Vzc1Jlc3BvbnNl
Q2FsbGJhY2tNYXAuYmVnaW4oKS0+a2V5KShmYWxzZSk7Ci0gICAgCi0gICAgd2hpbGUgKCFtX3N0
b3JhZ2VBY2Nlc3NSZXF1ZXN0UmVzcG9uc2VDYWxsYmFja01hcC5pc0VtcHR5KCkpCi0gICAgICAg
IG1fc3RvcmFnZUFjY2Vzc1JlcXVlc3RSZXNwb25zZUNhbGxiYWNrTWFwLnRha2UobV9zdG9yYWdl
QWNjZXNzUmVxdWVzdFJlc3BvbnNlQ2FsbGJhY2tNYXAuYmVnaW4oKS0+a2V5KShTdG9yYWdlQWNj
ZXNzU3RhdHVzOjpDYW5ub3RSZXF1ZXN0QWNjZXNzKTsKLQotICAgIHdoaWxlICghbV9yZW1vdmVB
bGxTdG9yYWdlQWNjZXNzQ2FsbGJhY2tNYXAuaXNFbXB0eSgpKQotICAgICAgICBtX3JlbW92ZUFs
bFN0b3JhZ2VBY2Nlc3NDYWxsYmFja01hcC50YWtlKG1fcmVtb3ZlQWxsU3RvcmFnZUFjY2Vzc0Nh
bGxiYWNrTWFwLmJlZ2luKCktPmtleSkoKTsKLQotICAgIHdoaWxlICghbV9hbGxTdG9yYWdlQWNj
ZXNzRW50cmllc0NhbGxiYWNrTWFwLmlzRW1wdHkoKSkKLSAgICAgICAgbV9hbGxTdG9yYWdlQWNj
ZXNzRW50cmllc0NhbGxiYWNrTWFwLnRha2UobV9hbGxTdG9yYWdlQWNjZXNzRW50cmllc0NhbGxi
YWNrTWFwLmJlZ2luKCktPmtleSkoeyB9KTsKLQotICAgIHdoaWxlICghbV9kdW1wU3RhdGlzdGlj
c0NhbGxiYWNrTWFwLmlzRW1wdHkoKSkKLSAgICAgICAgbV9kdW1wU3RhdGlzdGljc0NhbGxiYWNr
TWFwLnRha2UobV9kdW1wU3RhdGlzdGljc0NhbGxiYWNrTWFwLmJlZ2luKCktPmtleSkoeyB9KTsK
LSNlbmRpZgogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZFJlY2VpdmVNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQpAQCAt
MjkwLDE2ICsyNzIsNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZENsb3NlKElQQzo6
Q29ubmVjdGlvbiYpCiAgICAgbV9zeW5jQWxsQ29va2llc1Rva2VuID0gbnVsbHB0cjsKICAgICBt
X3N5bmNBbGxDb29raWVzQ291bnRlciA9IDA7CiAKLSNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9T
VEFUSVNUSUNTKQotICAgIGZvciAoYXV0byYgY2FsbGJhY2sgOiBtX3JlbW92ZUFsbFN0b3JhZ2VB
Y2Nlc3NDYWxsYmFja01hcC52YWx1ZXMoKSkKLSAgICAgICAgY2FsbGJhY2soKTsKLSAgICBtX3Jl
bW92ZUFsbFN0b3JhZ2VBY2Nlc3NDYWxsYmFja01hcC5jbGVhcigpOwotCi0gICAgZm9yIChhdXRv
JiBjYWxsYmFjayA6IG1fc2NoZWR1bGVTdGF0aXN0aWNzUHJvY2Vzc2luZ0NhbGxiYWNrTWFwLnZh
bHVlcygpKQotICAgICAgICBjYWxsYmFjaygpOwotICAgIG1fc2NoZWR1bGVTdGF0aXN0aWNzUHJv
Y2Vzc2luZ0NhbGxiYWNrTWFwLmNsZWFyKCk7Ci0jZW5kaWYKLQogICAgIC8vIFRoaXMgd2lsbCBj
YXVzZSB1cyB0byBiZSBkZWxldGVkLgogICAgIG5ldHdvcmtQcm9jZXNzQ3Jhc2hlZCgpOwogfQpA
QCAtNDI1LDI0ICszOTcsMTQgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpsb2dHbG9iYWxE
aWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1ZShjb25zdCBTdHJpbmcmIG1lc3MKIH0KIAogI2lmIEVO
QUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6
OmR1bXBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
K3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZHVtcFJlc291cmNlTG9hZFN0YXRpc3RpY3MoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFjYW5TZW5kTWVzc2FnZSgpKSB7CiAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAg
Ci0gICAgYXV0byBjYWxsYmFja0lkID0gZ2VuZXJhdGVDYWxsYmFja0lEKCk7Ci0gICAgYXV0byBh
ZGRSZXN1bHQgPSBtX2R1bXBTdGF0aXN0aWNzQ2FsbGJhY2tNYXAuYWRkKGNhbGxiYWNrSWQsIFtw
cm90ZWN0ZWRQcm9jZXNzUG9vbCA9IG1ha2VSZWYobV9wcm9jZXNzUG9vbCksIHRva2VuID0gdGhy
b3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSwgY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oY29uc3QgU3RyaW5nJiBkdW1wZWRTdGF0aXN0aWNz
KSBtdXRhYmxlIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZHVtcGVkU3RhdGlzdGljcyk7
Ci0gICAgfSk7Ci0gICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0Vu
dHJ5KTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6RHVtcFJlc291cmNlTG9h
ZFN0YXRpc3RpY3Moc2Vzc2lvbklELCBjYWxsYmFja0lkKSwgMCk7Ci19Ci0KLXZvaWQgTmV0d29y
a1Byb2Nlc3NQcm94eTo6ZGlkRHVtcFJlc291cmNlTG9hZFN0YXRpc3RpY3MoU3RyaW5nIGR1bXBl
ZFN0YXRpc3RpY3MsIHVpbnQ2NF90IGNhbGxiYWNrSWQpCi17Ci0gICAgbV9kdW1wU3RhdGlzdGlj
c0NhbGxiYWNrTWFwLnRha2UoY2FsbGJhY2tJZCkoZHVtcGVkU3RhdGlzdGljcyk7CisgICAgc2Vu
ZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6RHVtcFJlc291cmNlTG9h
ZFN0YXRpc3RpY3Moc2Vzc2lvbklEKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQog
CiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnVwZGF0ZVByZXZhbGVudERvbWFpbnNUb0Jsb2Nr
Q29va2llc0ZvcihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBkb21haW5zVG9CbG9jaywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQpAQCAtNDUxLDE4ICs0MTMsOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnVw
ZGF0ZVByZXZhbGVudERvbWFpbnNUb0Jsb2NrQ29va2llc0ZvcihQQUw6OlNlc3Npb25JRAogICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIAot
ICAgIGF1dG8gY2FsbGJhY2tJZCA9IGdlbmVyYXRlQ2FsbGJhY2tJRCgpOwotICAgIGF1dG8gYWRk
UmVzdWx0ID0gbV9zY2hlZHVsZVN0YXRpc3RpY3NQcm9jZXNzaW5nQ2FsbGJhY2tNYXAuYWRkKGNh
bGxiYWNrSWQsIFtwcm90ZWN0ZWRQcm9jZXNzUG9vbCA9IG1ha2VSZWYobV9wcm9jZXNzUG9vbCks
IHRva2VuID0gdGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSwgY29tcGxldGlv
bkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKLSAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoKTsKLSAgICB9KTsKLSAgICBBU1NFUlRfVU5VU0VEKGFkZFJl
c3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOwotICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQ
cm9jZXNzOjpVcGRhdGVQcmV2YWxlbnREb21haW5zVG9CbG9ja0Nvb2tpZXNGb3Ioc2Vzc2lvbklE
LCBkb21haW5zVG9CbG9jaywgY2FsbGJhY2tJZCksIDApOwotfQogCi12b2lkIE5ldHdvcmtQcm9j
ZXNzUHJveHk6OmRpZFVwZGF0ZUJsb2NrQ29va2llcyh1aW50NjRfdCBjYWxsYmFja0lkKQotewot
ICAgIG1fc2NoZWR1bGVTdGF0aXN0aWNzUHJvY2Vzc2luZ0NhbGxiYWNrTWFwLnRha2UoY2FsbGJh
Y2tJZCkoKTsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNz
OjpVcGRhdGVQcmV2YWxlbnREb21haW5zVG9CbG9ja0Nvb2tpZXNGb3Ioc2Vzc2lvbklELCBkb21h
aW5zVG9CbG9jayksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAogdm9pZCBOZXR3
b3JrUHJvY2Vzc1Byb3h5Ojppc1ByZXZhbGVudFJlc291cmNlKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgY29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTU0NSwxNSArNDk3LDE0IEBAIHZvaWQg
TmV0d29ya1Byb2Nlc3NQcm94eTo6c2NoZWR1bGVDb29raWVCbG9ja2luZ1VwZGF0ZShQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsCiAgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3
b3JrUHJvY2Vzczo6U2NoZWR1bGVDb29raWVCbG9ja2luZ1VwZGF0ZShzZXNzaW9uSUQpLCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6
c2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIE9wdGlvbmFsPFdhbGxUaW1lPiBtb2RpZmllZFNpbmNlLCBTaG91bGRHcmFuZGZhdGhlciBz
aG91bGRHcmFuZGZhdGhlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzY2hlZHVsZUNsZWFySW5NZW1vcnlB
bmRQZXJzaXN0ZW50KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uYWw8V2FsbFRpbWU+
IG1vZGlmaWVkU2luY2UsIFNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljcyBzaG91bGRHcmFuZGZh
dGhlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewog
ICAgIGlmICghY2FuU2VuZE1lc3NhZ2UoKSkgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYm9vbCBzaG91bGRHcmFuZGZhdGhlckJv
b2wgPSBzaG91bGRHcmFuZGZhdGhlciA9PSBTaG91bGRHcmFuZGZhdGhlcjo6WWVzOwotICAgIHNl
bmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlNjaGVkdWxlQ2xlYXJJ
bk1lbW9yeUFuZFBlcnNpc3RlbnQoc2Vzc2lvbklELCBtb2RpZmllZFNpbmNlLCBzaG91bGRHcmFu
ZGZhdGhlckJvb2wpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgc2VuZFdpdGhB
c3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6U2NoZWR1bGVDbGVhckluTWVtb3J5
QW5kUGVyc2lzdGVudChzZXNzaW9uSUQsIG1vZGlmaWVkU2luY2UsIHNob3VsZEdyYW5kZmF0aGVy
KSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNz
UHJveHk6OnNjaGVkdWxlU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzUHJvY2Vzc2luZyhQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKQEAgLTYwMywxNyArNTU0LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpz
ZXRBZ2VDYXBGb3JDbGllbnRTaWRlQ29va2llcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICBhdXRvIGNhbGxiYWNrSWQgPSBnZW5lcmF0
ZUNhbGxiYWNrSUQoKTsKLSAgICBhdXRvIGFkZFJlc3VsdCA9IG1fc2NoZWR1bGVTdGF0aXN0aWNz
UHJvY2Vzc2luZ0NhbGxiYWNrTWFwLmFkZChjYWxsYmFja0lkLCBbcHJvdGVjdGVkUHJvY2Vzc1Bv
b2wgPSBtYWtlUmVmKG1fcHJvY2Vzc1Bvb2wpLCB0b2tlbiA9IHRocm90dGxlcigpLmJhY2tncm91
bmRBY3Rpdml0eVRva2VuKCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcildKCkgbXV0YWJsZSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7Ci0gICAg
fSk7Ci0gICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsK
LSAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6U2V0QWdlQ2FwRm9yQ2xpZW50U2lk
ZUNvb2tpZXMoc2Vzc2lvbklELCBzZWNvbmRzLCBjYWxsYmFja0lkKSwgMCk7Ci19Ci0KLXZvaWQg
TmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkU2V0QWdlQ2FwRm9yQ2xpZW50U2lkZUNvb2tpZXModWlu
dDY0X3QgY2FsbGJhY2tJZCkKLXsKLSAgICBtX3NjaGVkdWxlU3RhdGlzdGljc1Byb2Nlc3NpbmdD
YWxsYmFja01hcC50YWtlKGNhbGxiYWNrSWQpKCk7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1l
c3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6U2V0QWdlQ2FwRm9yQ2xpZW50U2lkZUNvb2tpZXMoc2Vz
c2lvbklELCBzZWNvbmRzKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCiB2b2lk
IE5ldHdvcmtQcm9jZXNzUHJveHk6OnNldFRpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24oUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBTZWNvbmRzIHNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTYyNiwxMSArNTY3LDYgQEAgdm9pZCBOZXR3
b3JrUHJvY2Vzc1Byb3h5OjpzZXRUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwKICAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQ
cm9jZXNzOjpTZXRUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uKHNlc3Npb25JRCwgc2Vjb25kcyks
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzc1By
b3h5OjpkaWRVcGRhdGVSdW50aW1lU2V0dGluZ3ModWludDY0X3QgY2FsbGJhY2tJZCkKLXsKLSAg
ICBtX3VwZGF0ZVJ1bnRpbWVTZXR0aW5nc0NhbGxiYWNrTWFwLnRha2UoY2FsbGJhY2tJZCkoKTsK
LX0KLQogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXROb3RpZnlQYWdlc1doZW5UZWxlbWV0
cnlXYXNDYXB0dXJlZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGJvb2wgdmFsdWUsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIWNh
blNlbmRNZXNzYWdlKCkpIHsKQEAgLTc2MSwxNyArNjk3LDE0IEBAIHZvaWQgTmV0d29ya1Byb2Nl
c3NQcm94eTo6c2V0R3JhbmRmYXRoZXJlZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0
IFN0cmluCiAgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6
U2V0R3JhbmRmYXRoZXJlZChzZXNzaW9uSUQsIHJlc291cmNlRG9tYWluLCBpc0dyYW5kZmF0aGVy
ZWQpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nl
c3NQcm94eTo6aGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgY29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwgY29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5
RG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIFdURjo6Q29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sKT4mJiBjYWxsYmFjaykKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94
eTo6aGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29u
c3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwgY29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9tYWlu
LCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFjYW5TZW5kTWVzc2Fn
ZSgpKSB7Ci0gICAgICAgIGNhbGxiYWNrKGZhbHNlKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoZmFsc2UpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBjb250ZXh0SWQg
PSBnZW5lcmF0ZUNhbGxiYWNrSUQoKTsKLSAgICBhdXRvIGFkZFJlc3VsdCA9IG1fc3RvcmFnZUFj
Y2Vzc1Jlc3BvbnNlQ2FsbGJhY2tNYXAuYWRkKGNvbnRleHRJZCwgV1RGTW92ZShjYWxsYmFjaykp
OwotICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7Ci0g
ICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6Okhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFt
ZShzZXNzaW9uSUQsIHJlc291cmNlRG9tYWluLCBmaXJzdFBhcnR5RG9tYWluLCBmcmFtZUlELCBw
YWdlSUQsIGNvbnRleHRJZCksIDApOworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6
TmV0d29ya1Byb2Nlc3M6Okhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZShzZXNzaW9uSUQsIHJlc291
cmNlRG9tYWluLCBmaXJzdFBhcnR5RG9tYWluLCBmcmFtZUlELCBwYWdlSUQpLCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6aGFzU3Rv
cmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcmVzb3Vy
Y2VEb21haW4sIGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwgT3B0aW9uYWw8dWludDY0
X3Q+IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTc5MSwzMyArNzI0LDE3IEBAIHZvaWQgTmV0d29y
a1Byb2Nlc3NQcm94eTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBjb25zdCBTCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIGNvbnRleHRJ
ZCA9IGdlbmVyYXRlQ2FsbGJhY2tJRCgpOwotICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9zdG9yYWdl
QWNjZXNzUmVxdWVzdFJlc3BvbnNlQ2FsbGJhY2tNYXAuYWRkKGNvbnRleHRJZCwgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOwotICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1
bHQuaXNOZXdFbnRyeSk7Ci0gICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlJlcXVl
c3RTdG9yYWdlQWNjZXNzKHNlc3Npb25JRCwgcmVzb3VyY2VEb21haW4sIGZpcnN0UGFydHlEb21h
aW4sIGZyYW1lSUQsIHBhZ2VJRCwgcHJvbXB0RW5hYmxlZCwgY29udGV4dElkKSwgMCk7CisgICAg
c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6UmVxdWVzdFN0b3Jh
Z2VBY2Nlc3Moc2Vzc2lvbklELCByZXNvdXJjZURvbWFpbiwgZmlyc3RQYXJ0eURvbWFpbiwgZnJh
bWVJRCwgcGFnZUlELCBwcm9tcHRFbmFibGVkKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmdyYW50U3RvcmFnZUFjY2VzcyhQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIGNvbnN0
IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHVp
bnQ2NF90IHBhZ2VJRCwgYm9vbCB1c2VyV2FzUHJvbXB0ZWQsIFdURjo6Q29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQ
cm94eTo6Z3JhbnRTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3Qg
U3RyaW5nJiByZXNvdXJjZURvbWFpbiwgY29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9tYWluLCBP
cHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBib29sIHVzZXJXYXNQ
cm9tcHRlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKICAgICBpZiAoIWNhblNlbmRNZXNzYWdlKCkpIHsKICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoZmFsc2UpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBjb250ZXh0
SWQgPSBnZW5lcmF0ZUNhbGxiYWNrSUQoKTsKLSAgICBhdXRvIGFkZFJlc3VsdCA9IG1fc3RvcmFn
ZUFjY2Vzc1Jlc3BvbnNlQ2FsbGJhY2tNYXAuYWRkKGNvbnRleHRJZCwgV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOwotICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNO
ZXdFbnRyeSk7Ci0gICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkdyYW50U3RvcmFn
ZUFjY2VzcyhzZXNzaW9uSUQsIHJlc291cmNlRG9tYWluLCBmaXJzdFBhcnR5RG9tYWluLCBmcmFt
ZUlELnZhbHVlKCksIHBhZ2VJRCwgdXNlcldhc1Byb21wdGVkLCBjb250ZXh0SWQpLCAwKTsKLX0K
LQotdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzdG9yYWdlQWNjZXNzUmVxdWVzdFJlc3VsdCh1
bnNpZ25lZCBzdGF0dXMsIHVpbnQ2NF90IGNvbnRleHRJZCkKLXsKLSAgICBtX3N0b3JhZ2VBY2Nl
c3NSZXF1ZXN0UmVzcG9uc2VDYWxsYmFja01hcC50YWtlKGNvbnRleHRJZCkoc3RhdGljX2Nhc3Q8
U3RvcmFnZUFjY2Vzc1N0YXR1cz4oc3RhdHVzKSk7Ci19Ci0KLXZvaWQgTmV0d29ya1Byb2Nlc3NQ
cm94eTo6c3RvcmFnZUFjY2Vzc09wZXJhdGlvblJlc3VsdChib29sIHdhc0dyYW50ZWQsIHVpbnQ2
NF90IGNvbnRleHRJZCkKLXsKLSAgICBtX3N0b3JhZ2VBY2Nlc3NSZXNwb25zZUNhbGxiYWNrTWFw
LnRha2UoY29udGV4dElkKSh3YXNHcmFudGVkKTsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVz
c2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpHcmFudFN0b3JhZ2VBY2Nlc3Moc2Vzc2lvbklELCByZXNv
dXJjZURvbWFpbiwgZmlyc3RQYXJ0eURvbWFpbiwgZnJhbWVJRC52YWx1ZSgpLCBwYWdlSUQsIHVz
ZXJXYXNQcm9tcHRlZCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAogdm9pZCBO
ZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZW1vdmVBbGxTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQpAQCAtODI3LDM0ICs3NDQsMTcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZW1vdmVB
bGxTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGwKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gY29udGV4dElkID0gZ2VuZXJhdGVDYWxsYmFja0lE
KCk7Ci0gICAgYXV0byBhZGRSZXN1bHQgPSBtX3JlbW92ZUFsbFN0b3JhZ2VBY2Nlc3NDYWxsYmFj
a01hcC5hZGQoY29udGV4dElkLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci0gICAgQVNT
RVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKLSAgICBzZW5kKE1l
c3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6UmVtb3ZlQWxsU3RvcmFnZUFjY2VzcyhzZXNzaW9uSUQs
IGNvbnRleHRJZCksIDApOworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29y
a1Byb2Nlc3M6OlJlbW92ZUFsbFN0b3JhZ2VBY2Nlc3Moc2Vzc2lvbklEKSwgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZFJlbW92
ZUFsbFN0b3JhZ2VBY2Nlc3ModWludDY0X3QgY29udGV4dElkKQotewotICAgIG1fcmVtb3ZlQWxs
U3RvcmFnZUFjY2Vzc0NhbGxiYWNrTWFwLnRha2UoY29udGV4dElkKSgpOwotfQotCi12b2lkIE5l
dHdvcmtQcm9jZXNzUHJveHk6OmdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmIGRv
bWFpbnMpPiYmIGNhbGxiYWNrKQordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpnZXRBbGxTdG9y
YWdlQWNjZXNzRW50cmllcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoVmVjdG9yPFN0cmluZz4gZG9tYWlucyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
CiAgICAgaWYgKCFjYW5TZW5kTWVzc2FnZSgpKSB7Ci0gICAgICAgIGNhbGxiYWNrKHsgfSk7Cisg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBhdXRvIGNvbnRleHRJZCA9IGdlbmVyYXRlQ2FsbGJhY2tJRCgpOwotICAgIGF1dG8gYWRk
UmVzdWx0ID0gbV9hbGxTdG9yYWdlQWNjZXNzRW50cmllc0NhbGxiYWNrTWFwLmFkZChjb250ZXh0
SWQsIFdURk1vdmUoY2FsbGJhY2spKTsKLSAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRk
UmVzdWx0LmlzTmV3RW50cnkpOwotICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpH
ZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcyhzZXNzaW9uSUQsIGNvbnRleHRJZCksIDApOwotfQot
Ci12b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzUmVzdWx0
KFZlY3RvcjxTdHJpbmc+JiYgZG9tYWlucywgdWludDY0X3QgY29udGV4dElkKQotewotICAgIGF1
dG8gY2FsbGJhY2sgPSBtX2FsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzQ2FsbGJhY2tNYXAudGFrZShj
b250ZXh0SWQpOwotICAgIGNhbGxiYWNrKFdURk1vdmUoZG9tYWlucykpOworICAgIHNlbmRXaXRo
QXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkdldEFsbFN0b3JhZ2VBY2Nlc3NF
bnRyaWVzKHNlc3Npb25JRCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAogdm9p
ZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291
cmNlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFNlY29uZHMgc2Vjb25kcywgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtODYzLDE2ICs3NjMsOCBA
QCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50
UmVzb3VyY2VzKFBBTDo6U2Vzc2lvbklECiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCi0gICAgYXV0byBjb250ZXh0SWQgPSBnZW5lcmF0
ZUNhbGxiYWNrSUQoKTsKLSAgICBhdXRvIGFkZFJlc3VsdCA9IG1fdXBkYXRlUnVudGltZVNldHRp
bmdzQ2FsbGJhY2tNYXAuYWRkKGNvbnRleHRJZCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OwotICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7Ci0g
ICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlNldENhY2hlTWF4QWdlQ2FwRm9yUHJl
dmFsZW50UmVzb3VyY2VzKHNlc3Npb25JRCwgc2Vjb25kcywgY29udGV4dElkKSwgMCk7Ci19CiAK
LXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkU2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxl
bnRSZXNvdXJjZXModWludDY0X3QgY29udGV4dElkKQotewotICAgIG1fdXBkYXRlUnVudGltZVNl
dHRpbmdzQ2FsbGJhY2tNYXAudGFrZShjb250ZXh0SWQpKCk7CisgICAgc2VuZFdpdGhBc3luY1Jl
cGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6U2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxl
bnRSZXNvdXJjZXMoc2Vzc2lvbklELCBzZWNvbmRzKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnNldENhY2hlTWF4QWdlQ2FwKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU2Vjb25kcyBzZWNvbmRzLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC04ODIsMTAgKzc3NCw3IEBAIHZvaWQg
TmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0Q2FjaGVNYXhBZ2VDYXAoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBTZWNvbmRzIHNlCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgYXV0
byBjb250ZXh0SWQgPSBnZW5lcmF0ZUNhbGxiYWNrSUQoKTsKLSAgICBhdXRvIGFkZFJlc3VsdCA9
IG1fdXBkYXRlUnVudGltZVNldHRpbmdzQ2FsbGJhY2tNYXAuYWRkKGNvbnRleHRJZCwgV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOwotICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRS
ZXN1bHQuaXNOZXdFbnRyeSk7Ci0gICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlNl
dENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKHNlc3Npb25JRCwgc2Vjb25kcywg
Y29udGV4dElkKSwgMCk7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3Jr
UHJvY2Vzczo6U2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoc2Vzc2lvbklE
LCBzZWNvbmRzKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCiB2b2lkIE5ldHdv
cmtQcm9jZXNzUHJveHk6OnNldEdyYW5kZmF0aGVyaW5nVGltZShQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIFNlY29uZHMgc2Vjb25kcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQpAQCAtOTU1LDEwICs4NDQsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJv
eHk6OnJlc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoUEFMOjpTZXNzaW9u
SQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIGF1dG8gY29udGV4dElkID0gZ2Vu
ZXJhdGVDYWxsYmFja0lEKCk7Ci0gICAgYXV0byBhZGRSZXN1bHQgPSBtX3VwZGF0ZVJ1bnRpbWVT
ZXR0aW5nc0NhbGxiYWNrTWFwLmFkZChjb250ZXh0SWQsIFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKLSAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkp
OwotICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpSZXNldENhY2hlTWF4QWdlQ2Fw
Rm9yUHJldmFsZW50UmVzb3VyY2VzKHNlc3Npb25JRCwgY29udGV4dElkKSwgMCk7CisgICAgc2Vu
ZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6UmVzZXRDYWNoZU1heEFn
ZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhzZXNzaW9uSUQpLCBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6cmVzZXRQYXJhbWV0ZXJz
VG9EZWZhdWx0VmFsdWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtOTgxLDEzICs4NjcsMTIgQEAgdm9p
ZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzdWJtaXRUZWxlbWV0cnkoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBDb21wbGV0aW9uSGEKICAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5l
dHdvcmtQcm9jZXNzOjpTdWJtaXRUZWxlbWV0cnkoc2Vzc2lvbklEKSwgV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnNjaGVkdWxlQ2xl
YXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBib29sIHNo
b3VsZEdyYW5kZmF0aGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFu
ZFBlcnNpc3RlbnQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTaG91bGRHcmFuZGZhdGhlclN0
YXRpc3RpY3Mgc2hvdWxkR3JhbmRmYXRoZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIWNhblNlbmRNZXNzYWdlKCkpIHsKICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKIAog
ICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlNjaGVkdWxl
Q2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoc2Vzc2lvbklELCB7IH0sIHNob3VsZEdyYW5kZmF0
aGVyKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAppbmRleCBlMzUx
YTA2Yjc1YWQ3OGU1MDk5NWZhMWY4ZmQ4YmJhMzhlYmIwYTllLi4zMzUzODBiMTBhNWM0ZWQyYTc3
ZDE5M2EyOWUyOTFiYzJhZTQ3NWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEyLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01Nyw3ICs1Nyw4IEBAIG5hbWVzcGFj
ZSBXZWJLaXQgewogY2xhc3MgRG93bmxvYWRQcm94eTsKIGNsYXNzIERvd25sb2FkUHJveHlNYXA7
CiBjbGFzcyBXZWJQcm9jZXNzUG9vbDsKLWVudW0gY2xhc3MgU3RvcmFnZUFjY2Vzc1N0YXR1cyA6
IHVuc2lnbmVkOworZW51bSBjbGFzcyBTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3MgOiBib29s
OworZW51bSBjbGFzcyBTdG9yYWdlQWNjZXNzU3RhdHVzIDogdWludDhfdDsKIGVudW0gY2xhc3Mg
V2Vic2l0ZURhdGFGZXRjaE9wdGlvbjsKIGVudW0gY2xhc3MgV2Vic2l0ZURhdGFUeXBlOwogc3Ry
dWN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOwpAQCAtODAsNyArODEsNyBAQCBw
dWJsaWM6CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICB2b2lkIGNs
ZWFyUHJldmFsZW50UmVzb3VyY2UoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcmVzb3Vy
Y2VEb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBjbGVhclVz
ZXJJbnRlcmFjdGlvbihQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFp
biwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lkIGR1bXBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0
IFN0cmluZyYpPiYmKTsKKyAgICB2b2lkIGR1bXBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKFBBTDo6
U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyk+JiYpOwogICAgIHZvaWQg
dXBkYXRlUHJldmFsZW50RG9tYWluc1RvQmxvY2tDb29raWVzRm9yKFBBTDo6U2Vzc2lvbklELCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvQmxvY2ssIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJik7CiAgICAgdm9pZCBoYXNIYWRVc2VySW50ZXJhY3Rpb24oUEFMOjpTZXNzaW9uSUQs
IGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYpOwogICAgIHZvaWQgaXNHcmFuZGZhdGhlcmVkKFBBTDo6U2Vzc2lvbklELCBjb25zdCBT
dHJpbmcmIHJlc291cmNlRG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsK
QEAgLTEwNywxNSArMTA4LDE1IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFByZXZhbGVudFJlc291
cmNlKFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0UHJldmFsZW50UmVzb3VyY2VGb3JE
ZWJ1Z01vZGUoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRWZXJ5UHJldmFsZW50UmVz
b3VyY2UoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBoYXNTdG9yYWdlQWNjZXNzRm9yRnJh
bWUoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFN0
cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlE
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNrKTsKLSAgICB2b2lkIGdl
dEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYgZG9tYWlucyk+JiYpOwotICAgIHZvaWQgZ3JhbnRTdG9y
YWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBj
b25zdCBTdHJpbmcmIGZpcnN0UGFydHlEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlE
LCB1aW50NjRfdCBwYWdlSUQsIGJvb2wgdXNlcldhc1Byb21wdGVkLCBXVEY6OkNvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQgaGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1l
KFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBjb25zdCBTdHJp
bmcmIGZpcnN0UGFydHlEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBnZXRBbGxTdG9yYWdl
QWNjZXNzRW50cmllcyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0
b3I8U3RyaW5nPiBkb21haW5zKT4mJik7CisgICAgdm9pZCBncmFudFN0b3JhZ2VBY2Nlc3MoUEFM
OjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFN0cmluZyYg
Zmlyc3RQYXJ0eURvbWFpbiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHVpbnQ2NF90IHBh
Z2VJRCwgYm9vbCB1c2VyV2FzUHJvbXB0ZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+
JiYpOwogICAgIHZvaWQgaGFzU3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgU3Ry
aW5nJiBzdWJGcmFtZUhvc3QsIGNvbnN0IFN0cmluZyYgdG9wRnJhbWVIb3N0LCBPcHRpb25hbDx1
aW50NjRfdD4gZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGJvb2wpPiYmKTsKICAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklE
LCBjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBjb25zdCBTdHJpbmcmIGZpcnN0UGFydHlE
b21haW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIGJvb2wg
cHJvbXB0RW5hYmxlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzU3RhdHVz
KT4mJik7CiAgICAgdm9pZCByZXNldFBhcmFtZXRlcnNUb0RlZmF1bHRWYWx1ZXMoUEFMOjpTZXNz
aW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCByZW1vdmVBbGxT
dG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OwotICAgIHZvaWQgc2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChQQUw6OlNlc3Np
b25JRCwgYm9vbCBzaG91bGRHcmFuZGZhdGhlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKLSAgICB2b2lkIHNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoUEFMOjpTZXNz
aW9uSUQsIE9wdGlvbmFsPFdhbGxUaW1lPiBtb2RpZmllZFNpbmNlLCBTaG91bGRHcmFuZGZhdGhl
ciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIHNjaGVkdWxlQ2xlYXJJ
bk1lbW9yeUFuZFBlcnNpc3RlbnQoUEFMOjpTZXNzaW9uSUQsIFNob3VsZEdyYW5kZmF0aGVyU3Rh
dGlzdGljcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIHNjaGVkdWxl
Q2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoUEFMOjpTZXNzaW9uSUQsIE9wdGlvbmFsPFdhbGxU
aW1lPiBtb2RpZmllZFNpbmNlLCBTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3MsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzY2hlZHVsZUNvb2tpZUJsb2NraW5nVXBk
YXRlKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZv
aWQgc3VibWl0VGVsZW1ldHJ5KFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOwogICAgIHZvaWQgc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMo
UEFMOjpTZXNzaW9uSUQsIFNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CkBA
IC0xODQsMTUgKzE4NSw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBsb2dEaWFnbm9zdGljTWVzc2Fn
ZVdpdGhWYWx1ZSh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3Qg
U3RyaW5nJiBkZXNjcmlwdGlvbiwgZG91YmxlIHZhbHVlLCB1bnNpZ25lZCBzaWduaWZpY2FudEZp
Z3VyZXMsIFdlYkNvcmU6OlNob3VsZFNhbXBsZSk7CiAgICAgdm9pZCBsb2dHbG9iYWxEaWFnbm9z
dGljTWVzc2FnZVdpdGhWYWx1ZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYg
ZGVzY3JpcHRpb24sIGRvdWJsZSB2YWx1ZSwgdW5zaWduZWQgc2lnbmlmaWNhbnRGaWd1cmVzLCBX
ZWJDb3JlOjpTaG91bGRTYW1wbGUpOwogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJ
Q1MpCi0gICAgdm9pZCBkaWREdW1wUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhTdHJpbmcgZHVtcGVk
U3RhdGlzdGljcywgdWludDY0X3QgY2FsbGJhY2tJZCk7Ci0gICAgdm9pZCBkaWRVcGRhdGVCbG9j
a0Nvb2tpZXModWludDY0X3QgY29udGV4dElkKTsKLSAgICB2b2lkIGRpZFNldEFnZUNhcEZvckNs
aWVudFNpZGVDb29raWVzKHVpbnQ2NF90IGNvbnRleHRJZCk7Ci0gICAgdm9pZCBzdG9yYWdlQWNj
ZXNzT3BlcmF0aW9uUmVzdWx0KGJvb2wgd2FzR3JhbnRlZCwgdWludDY0X3QgY29udGV4dElkKTsK
LSAgICB2b2lkIHN0b3JhZ2VBY2Nlc3NSZXF1ZXN0UmVzdWx0KHVuc2lnbmVkIHdhc0dyYW50ZWQs
IHVpbnQ2NF90IGNvbnRleHRJZCk7Ci0gICAgdm9pZCBhbGxTdG9yYWdlQWNjZXNzRW50cmllc1Jl
c3VsdChWZWN0b3I8U3RyaW5nPiYmIGRvbWFpbnMsIHVpbnQ2NF90IGNvbnRleHRJZCk7Ci0gICAg
dm9pZCBkaWRSZW1vdmVBbGxTdG9yYWdlQWNjZXNzKHVpbnQ2NF90IGNvbnRleHRJZCk7Ci0gICAg
dm9pZCBkaWRTZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyh1aW50NjRfdCBj
b250ZXh0SWQpOwotICAgIHZvaWQgZGlkVXBkYXRlUnVudGltZVNldHRpbmdzKHVpbnQ2NF90IGNv
bnRleHRJZCk7CiAgICAgdm9pZCBub3RpZnlSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUHJvY2Vzc2Vk
KCk7CiAgICAgdm9pZCBub3RpZnlXZWJzaXRlRGF0YURlbGV0aW9uRm9yVG9wUHJpdmF0ZWx5T3du
ZWREb21haW5zRmluaXNoZWQoKTsKICAgICB2b2lkIG5vdGlmeVdlYnNpdGVEYXRhU2NhbkZvclRv
cFByaXZhdGVseUNvbnRyb2xsZWREb21haW5zRmluaXNoZWQoKTsKQEAgLTIzOSwxNyArMjMxLDYg
QEAgcHJpdmF0ZToKICAgICAKICAgICB1bnNpZ25lZCBtX3N5bmNBbGxDb29raWVzQ291bnRlciB7
IDAgfTsKIAotI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgSGFzaE1h
cDx1aW50NjRfdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPj4gbV9zY2hlZHVsZVN0YXRpc3Rp
Y3NQcm9jZXNzaW5nQ2FsbGJhY2tNYXA7Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sIHdhc0dyYW50ZWQpPj4gbV9zdG9yYWdlQWNjZXNzUmVzcG9uc2VD
YWxsYmFja01hcDsKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFN0b3JhZ2VBY2Nlc3NTdGF0dXMgd2FzR3JhbnRlZCk+PiBtX3N0b3JhZ2VBY2Nlc3NSZXF1ZXN0
UmVzcG9uc2VDYWxsYmFja01hcDsKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+PiBtX3JlbW92ZUFsbFN0b3JhZ2VBY2Nlc3NDYWxsYmFja01hcDsKLSAgICBI
YXNoTWFwPHVpbnQ2NF90LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYg
ZG9tYWlucyk+PiBtX2FsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzQ2FsbGJhY2tNYXA7Ci0gICAgSGFz
aE1hcDx1aW50NjRfdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4+IG1f
ZHVtcFN0YXRpc3RpY3NDYWxsYmFja01hcDsKLSNlbmRpZgotCi0gICAgSGFzaE1hcDx1aW50NjRf
dCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPj4gbV91cGRhdGVSdW50aW1lU2V0dGluZ3NDYWxs
YmFja01hcDsKLQogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCiAgICAgSGFzaFNldDxX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSo+IG1fd2ViVXNlckNvbnRlbnRDb250cm9sbGVy
UHJveGllczsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDg0ZTBl
OGY2NDQxMThlYzQ3Mzc0ZTJkY2IzOGU0M2VhMTNjODhlMzUuLjFiYzMwZGJmZWYxMDA5ZTI2MDIy
MWUwYzg2OGI1ZDMxNzc3MjU2MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KQEAg
LTQxLDE1ICs0MSw2IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzUHJveHkgTGVnYWN5UmVj
ZWl2ZXIgewogICAgIExvZ0dsb2JhbERpYWdub3N0aWNNZXNzYWdlV2l0aFZhbHVlKFN0cmluZyBt
ZXNzYWdlLCBTdHJpbmcgZGVzY3JpcHRpb24sIGRvdWJsZSB2YWx1ZSwgdW5zaWduZWQgc2lnbmlm
aWNhbnRGaWd1cmVzLCBlbnVtOmJvb2wgV2ViQ29yZTo6U2hvdWxkU2FtcGxlIHNob3VsZFNhbXBs
ZSkKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgRGlkRHVtcFJl
c291cmNlTG9hZFN0YXRpc3RpY3MoU3RyaW5nIGR1bXBlZFN0YXRpc3RpY3MsIHVpbnQ2NF90IGNh
bGxiYWNrSWQpCi0gICAgRGlkVXBkYXRlQmxvY2tDb29raWVzKHVpbnQ2NF90IGNhbGxiYWNrSWQp
Ci0gICAgRGlkU2V0QWdlQ2FwRm9yQ2xpZW50U2lkZUNvb2tpZXModWludDY0X3QgY2FsbGJhY2tJ
ZCkKLSAgICBTdG9yYWdlQWNjZXNzT3BlcmF0aW9uUmVzdWx0KGJvb2wgd2FzR3JhbnRlZCwgdWlu
dDY0X3QgY29udGV4dElkKQotICAgIFN0b3JhZ2VBY2Nlc3NSZXF1ZXN0UmVzdWx0KHVuc2lnbmVk
IHdhc0dyYW50ZWQsIHVpbnQ2NF90IGNvbnRleHRJZCkKLSAgICBBbGxTdG9yYWdlQWNjZXNzRW50
cmllc1Jlc3VsdChWZWN0b3I8U3RyaW5nPiBkb21haW5zLCB1aW50NjRfdCBjb250ZXh0SWQpCi0g
ICAgRGlkUmVtb3ZlQWxsU3RvcmFnZUFjY2Vzcyh1aW50NjRfdCBjb250ZXh0SWQpCi0gICAgRGlk
U2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXModWludDY0X3QgY29udGV4dElk
KQotICAgIERpZFVwZGF0ZVJ1bnRpbWVTZXR0aW5ncyh1aW50NjRfdCBjb250ZXh0SWQpCiAgICAg
Tm90aWZ5UmVzb3VyY2VMb2FkU3RhdGlzdGljc1Byb2Nlc3NlZCgpCiAgICAgTm90aWZ5V2Vic2l0
ZURhdGFEZWxldGlvbkZvclRvcFByaXZhdGVseU93bmVkRG9tYWluc0ZpbmlzaGVkKCkKICAgICBO
b3RpZnlXZWJzaXRlRGF0YVNjYW5Gb3JUb3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluc0Zpbmlz
aGVkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAppbmRleCBl
MGQ1YmIxNGYyYzg0Y2E1OTJjNTFlM2ViNWYwYWY5OTgzODVmOTJmLi5hNGNhN2Q5MjMyY2NlYWEz
NzBjMzBmYTQ1ZWIyNGYwNTkzOGM1MzRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuY3BwCkBAIC01OTEsOSArNTkxLDYgQEAgTmV0d29ya1Byb2Nlc3NQcm94eSYg
V2ViUHJvY2Vzc1Bvb2w6OmVuc3VyZU5ldHdvcmtQcm9jZXNzKFdlYnNpdGVEYXRhU3RvcmUqIHdp
dGgKICAgICAgICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPmFkZFNlc3Npb24oKndlYnNpdGVEYXRh
U3RvcmUpOwogICAgIH0KIAotICAgIGlmIChtX3dlYnNpdGVEYXRhU3RvcmUpCi0gICAgICAgIG1f
d2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLmRpZENyZWF0ZU5ldHdvcmtQcm9j
ZXNzKCk7Ci0KICAgICByZXR1cm4gKm1fbmV0d29ya1Byb2Nlc3M7CiB9CiAKQEAgLTEwMzQsNiAr
MTAzMSw5IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnByb2Nlc3NEaWRGaW5pc2hMYXVuY2hpbmco
V2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzKQogICAgICAgICBwcm9jZXNzLT5jb25uZWN0aW9uKCkt
Pmlnbm9yZVRpbWVvdXRzRm9yVGVzdGluZygpOwogCiAgICAgbV9jb25uZWN0aW9uQ2xpZW50LmRp
ZENyZWF0ZUNvbm5lY3Rpb24odGhpcywgcHJvY2Vzcy0+d2ViQ29ubmVjdGlvbigpKTsKKworICAg
IGlmIChtX3dlYnNpdGVEYXRhU3RvcmUpCisgICAgICAgIG1fd2Vic2l0ZURhdGFTdG9yZS0+d2Vi
c2l0ZURhdGFTdG9yZSgpLmRpZENyZWF0ZU5ldHdvcmtQcm9jZXNzKCk7CiB9CiAKIHZvaWQgV2Vi
UHJvY2Vzc1Bvb2w6OmRpc2Nvbm5lY3RQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVE
YXRhU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0
ZURhdGFTdG9yZS5jcHAKaW5kZXggYjE4ZmNlNzkwNmY4ZTJiYjhjNWJkMjQ2NDQ2MDYwOGU0Y2Nm
ZWFkZC4uYjdjODE4MjMzZWM0ODA0Yjg0Y2I5YWU4MDIyYWZmNGZjZTJmOGQyMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFT
dG9yZS5jcHAKQEAgLTMzLDYgKzMzLDggQEAKICNpbmNsdWRlICJEZXZpY2VJZEhhc2hTYWx0U3Rv
cmFnZS5oIgogI2luY2x1ZGUgIk1vY2tBdXRoZW50aWNhdG9yTWFuYWdlci5oIgogI2luY2x1ZGUg
Ik5ldHdvcmtQcm9jZXNzTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJTaG91bGRHcmFuZGZhdGhlclN0
YXRpc3RpY3MuaCIKKyNpbmNsdWRlICJTdG9yYWdlQWNjZXNzU3RhdHVzLmgiCiAjaW5jbHVkZSAi
U3RvcmFnZU1hbmFnZXIuaCIKICNpbmNsdWRlICJXZWJDb29raWVNYW5hZ2VyUHJveHkuaCIKICNp
bmNsdWRlICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIKQEAgLTk0Miw3ICs5NDQsNyBAQCB2b2lkIFdl
YnNpdGVEYXRhU3RvcmU6OnJlbW92ZURhdGEoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gZGF0
YVR5cGVzLCBXYWxsVGltZQogICAgICAgICAKICAgICAgICAgLy8gSWYgd2UgYXJlIGRlbGV0aW5n
IGFsbCBvZiB0aGUgZGF0YSB0eXBlcyB0aGF0IHRoZSByZXNvdXJjZSBsb2FkIHN0YXRpc3RpY3Mg
c3RvcmUgbW9uaXRvcnMKICAgICAgICAgLy8gd2UgZG8gbm90IG5lZWQgdG8gcmUtZ3JhbmRmYXRo
ZXIgb2xkIGRhdGEuCi0gICAgICAgIGF1dG8gc2hvdWxkR3JhbmRmYXRoZXIgPSAoKG1vbml0b3Jl
ZFR5cGVzUmF3ICYgZGVsZXRlZFR5cGVzUmF3KSA9PSBtb25pdG9yZWRUeXBlc1JhdykgPyBTaG91
bGRHcmFuZGZhdGhlcjo6Tm8gOiBTaG91bGRHcmFuZGZhdGhlcjo6WWVzOworICAgICAgICBhdXRv
IHNob3VsZEdyYW5kZmF0aGVyID0gKChtb25pdG9yZWRUeXBlc1JhdyAmIGRlbGV0ZWRUeXBlc1Jh
dykgPT0gbW9uaXRvcmVkVHlwZXNSYXcpID8gU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzOjpO
byA6IFNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljczo6WWVzOwogICAgICAgICAKICAgICAgICAg
aWYgKG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljcykgewogICAgICAgICAgICAgY2FsbGJhY2tBZ2dy
ZWdhdG9yLT5hZGRQZW5kaW5nQ2FsbGJhY2soKTsKQEAgLTEyNTIsMTEgKzEyNTQsMTEgQEAgdm9p
ZCBXZWJzaXRlRGF0YVN0b3JlOjpyZW1vdmVEYXRhKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+
IGRhdGFUeXBlcywgY29uc3QgVmUKICAgICAgICAgLy8gd2UgZG8gbm90IG5lZWQgdG8gcmUtZ3Jh
bmRmYXRoZXIgb2xkIGRhdGEuCiAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+YWRkUGVuZGlu
Z0NhbGxiYWNrKCk7CiAgICAgICAgIGlmICgobW9uaXRvcmVkVHlwZXNSYXcgJiBkZWxldGVkVHlw
ZXNSYXcpID09IG1vbml0b3JlZFR5cGVzUmF3KQotICAgICAgICAgICAgbV9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzLT5zY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFNob3VsZEdyYW5k
ZmF0aGVyOjpObywgW2NhbGxiYWNrQWdncmVnYXRvcl0geworICAgICAgICAgICAgbV9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzLT5zY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFNob3Vs
ZEdyYW5kZmF0aGVyU3RhdGlzdGljczo6Tm8sIFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsKICAgICAg
ICAgICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPnJlbW92ZVBlbmRpbmdDYWxsYmFjaygpOwog
ICAgICAgICAgICAgfSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy0+c2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChTaG91bGRHcmFu
ZGZhdGhlcjo6WWVzLCBbY2FsbGJhY2tBZ2dyZWdhdG9yXSB7CisgICAgICAgICAgICBtX3Jlc291
cmNlTG9hZFN0YXRpc3RpY3MtPnNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoU2hv
dWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzOjpZZXMsIFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsKICAg
ICAgICAgICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPnJlbW92ZVBlbmRpbmdDYWxsYmFjaygp
OwogICAgICAgICAgICAgfSk7CiAKQEAgLTEyOTIsMTAgKzEyOTQsOCBAQCB2b2lkIFdlYnNpdGVE
YXRhU3RvcmU6OnNldE1heFN0YXRpc3RpY3NFbnRyaWVzKHNpemVfdCBtYXhpbXVtRW50cnlDb3Vu
dCwgQ29tcGxldAogICAgIAogICAgIGF1dG8gY2FsbGJhY2tBZ2dyZWdhdG9yID0gQ2FsbGJhY2tB
Z2dyZWdhdG9yOjpjcmVhdGUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogCi0gICAgZm9y
IChhdXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKSB7Ci0gICAgICAgIGlmIChhdXRv
KiBwcm9jZXNzID0gcHJvY2Vzc1Bvb2wtPm5ldHdvcmtQcm9jZXNzKCkpCi0gICAgICAgICAgICBw
cm9jZXNzLT5zZXRNYXhTdGF0aXN0aWNzRW50cmllcyhtX3Nlc3Npb25JRCwgbWF4aW11bUVudHJ5
Q291bnQsIFtwcm9jZXNzUG9vbCwgY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdh
dG9yLmNvcHlSZWYoKV0geyB9KTsKLSAgICB9CisgICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6
IHByb2Nlc3NQb29scygpKQorICAgICAgICBwcm9jZXNzUG9vbC0+ZW5zdXJlTmV0d29ya1Byb2Nl
c3MoKS5zZXRNYXhTdGF0aXN0aWNzRW50cmllcyhtX3Nlc3Npb25JRCwgbWF4aW11bUVudHJ5Q291
bnQsIFtwcm9jZXNzUG9vbCwgY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9y
LmNvcHlSZWYoKV0geyB9KTsKIH0KIAogdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzZXRQcnVuZUVu
dHJpZXNEb3duVG8oc2l6ZV90IHBydW5lVGFyZ2V0Q291bnQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTEzMTAsOCArMTMxMCw3IEBAIHZvaWQgV2Vi
c2l0ZURhdGFTdG9yZTo6c2V0UHJ1bmVFbnRyaWVzRG93blRvKHNpemVfdCBwcnVuZVRhcmdldENv
dW50LCBDb21wbGV0aW9uCiAgICAgYXV0byBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBDYWxsYmFja0Fn
Z3JlZ2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAKICAgICBmb3Ig
KGF1dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xzKCkpIHsKLSAgICAgICAgaWYgKGF1dG8q
IHByb2Nlc3MgPSBwcm9jZXNzUG9vbC0+bmV0d29ya1Byb2Nlc3MoKSkKLSAgICAgICAgICAgIHBy
b2Nlc3MtPnNldFBydW5lRW50cmllc0Rvd25UbyhtX3Nlc3Npb25JRCwgcHJ1bmVUYXJnZXRDb3Vu
dCwgW3Byb2Nlc3NQb29sLCBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3Iu
Y29weVJlZigpXSB7IH0pOworICAgICAgICBwcm9jZXNzUG9vbC0+ZW5zdXJlTmV0d29ya1Byb2Nl
c3MoKS5zZXRQcnVuZUVudHJpZXNEb3duVG8obV9zZXNzaW9uSUQsIHBydW5lVGFyZ2V0Q291bnQs
IFtwcm9jZXNzUG9vbCwgY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNv
cHlSZWYoKV0geyB9KTsKICAgICB9CiB9CiAKQEAgLTEzMjYsMTAgKzEzMjUsOCBAQCB2b2lkIFdl
YnNpdGVEYXRhU3RvcmU6OnNldEdyYW5kZmF0aGVyaW5nVGltZShTZWNvbmRzIHNlY29uZHMsIENv
bXBsZXRpb25IYW5kbGVyPAogICAgIAogICAgIGF1dG8gY2FsbGJhY2tBZ2dyZWdhdG9yID0gQ2Fs
bGJhY2tBZ2dyZWdhdG9yOjpjcmVhdGUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogCi0g
ICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKSB7Ci0gICAgICAgIGlm
IChhdXRvKiBwcm9jZXNzID0gcHJvY2Vzc1Bvb2wtPm5ldHdvcmtQcm9jZXNzKCkpCi0gICAgICAg
ICAgICBwcm9jZXNzLT5zZXRHcmFuZGZhdGhlcmluZ1RpbWUobV9zZXNzaW9uSUQsIHNlY29uZHMs
IFtwcm9jZXNzUG9vbCwgY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNv
cHlSZWYoKV0geyB9KTsKLSAgICB9CisgICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nl
c3NQb29scygpKQorICAgICAgICBwcm9jZXNzUG9vbC0+ZW5zdXJlTmV0d29ya1Byb2Nlc3MoKS5z
ZXRHcmFuZGZhdGhlcmluZ1RpbWUobV9zZXNzaW9uSUQsIHNlY29uZHMsIFtwcm9jZXNzUG9vbCwg
Y2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsK
IH0KIAogdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzZXRDYWNoZU1heEFnZUNhcChTZWNvbmRzIHNl
Y29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAg
LTEzNDQsMTAgKzEzNDEsOCBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNldENhY2hlTWF4QWdl
Q2FwKFNlY29uZHMgc2Vjb25kcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZAogCiAgICAgYXV0byBj
YWxsYmFja0FnZ3JlZ2F0b3IgPSBDYWxsYmFja0FnZ3JlZ2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7CiAKLSAgICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vz
c1Bvb2xzKCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHByb2Nlc3MgPSBwcm9jZXNzUG9vbC0+bmV0
d29ya1Byb2Nlc3MoKSkKLSAgICAgICAgICAgIHByb2Nlc3MtPnNldENhY2hlTWF4QWdlQ2FwKG1f
c2Vzc2lvbklELCBzZWNvbmRzLCBbcHJvY2Vzc1Bvb2wsIGNhbGxiYWNrQWdncmVnYXRvciA9IGNh
bGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7Ci0gICAgfQorICAgIGZvciAoYXV0byYg
cHJvY2Vzc1Bvb2wgOiBwcm9jZXNzUG9vbHMoKSkKKyAgICAgICAgcHJvY2Vzc1Bvb2wtPmVuc3Vy
ZU5ldHdvcmtQcm9jZXNzKCkuc2V0Q2FjaGVNYXhBZ2VDYXAobV9zZXNzaW9uSUQsIHNlY29uZHMs
IFtwcm9jZXNzUG9vbCwgY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNv
cHlSZWYoKV0geyB9KTsKIH0KIAogdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzZXRNaW5pbXVtVGlt
ZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwoU2Vjb25kcyBzZWNvbmRzLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC0xMzYxLDEwICsxMzU2LDggQEAg
dm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzZXRNaW5pbXVtVGltZUJldHdlZW5EYXRhUmVjb3Jkc1Jl
bW92YWwoU2Vjb25kcyBzZWNvbmRzLAogICAgIAogICAgIGF1dG8gY2FsbGJhY2tBZ2dyZWdhdG9y
ID0gQ2FsbGJhY2tBZ2dyZWdhdG9yOjpjcmVhdGUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OwogCi0gICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKSB7Ci0gICAg
ICAgIGlmIChhdXRvKiBwcm9jZXNzID0gcHJvY2Vzc1Bvb2wtPm5ldHdvcmtQcm9jZXNzKCkpCi0g
ICAgICAgICAgICBwcm9jZXNzLT5zZXRNaW5pbXVtVGltZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92
YWwobV9zZXNzaW9uSUQsIHNlY29uZHMsIFtwcm9jZXNzUG9vbCwgY2FsbGJhY2tBZ2dyZWdhdG9y
ID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKLSAgICB9CisgICAgZm9yIChh
dXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKQorICAgICAgICBwcm9jZXNzUG9vbC0+
ZW5zdXJlTmV0d29ya1Byb2Nlc3MoKS5zZXRNaW5pbXVtVGltZUJldHdlZW5EYXRhUmVjb3Jkc1Jl
bW92YWwobV9zZXNzaW9uSUQsIHNlY29uZHMsIFtwcm9jZXNzUG9vbCwgY2FsbGJhY2tBZ2dyZWdh
dG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKIH0KICAgICAKIHZvaWQg
V2Vic2l0ZURhdGFTdG9yZTo6ZHVtcFJlc291cmNlTG9hZFN0YXRpc3RpY3MoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTE0MjUs
OCArMTQxOCw3IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6c2V0UHJldmFsZW50UmVzb3VyY2Uo
Y29uc3QgVVJMJiB1cmwsIENvbXBsZXRpb25IYW5kbGVyPHZvCiAgICAgYXV0byBjYWxsYmFja0Fn
Z3JlZ2F0b3IgPSBDYWxsYmFja0FnZ3JlZ2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7CiAKICAgICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xzKCkp
IHsKLSAgICAgICAgaWYgKGF1dG8qIHByb2Nlc3MgPSBwcm9jZXNzUG9vbC0+bmV0d29ya1Byb2Nl
c3MoKSkKLSAgICAgICAgICAgIHByb2Nlc3MtPnNldFByZXZhbGVudFJlc291cmNlKG1fc2Vzc2lv
bklELCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpwcmltYXJ5RG9tYWluKHVybCks
IFtwcm9jZXNzUG9vbCwgY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNv
cHlSZWYoKV0geyB9KTsKKyAgICAgICAgcHJvY2Vzc1Bvb2wtPmVuc3VyZU5ldHdvcmtQcm9jZXNz
KCkuc2V0UHJldmFsZW50UmVzb3VyY2UobV9zZXNzaW9uSUQsIFdlYkNvcmU6OlJlc291cmNlTG9h
ZFN0YXRpc3RpY3M6OnByaW1hcnlEb21haW4odXJsKSwgW3Byb2Nlc3NQb29sLCBjYWxsYmFja0Fn
Z3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOwogICAgIH0KIH0K
IApAQCAtMTUwOCwxMCArMTUwMCw4IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6c2V0U2hvdWxk
Q2xhc3NpZnlSZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3Jkc1JlbW92YWwoYm9vbCB2CiAgICAgCiAg
ICAgYXV0byBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBDYWxsYmFja0FnZ3JlZ2F0b3I6OmNyZWF0ZShX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAKLSAgICBmb3IgKGF1dG8mIHByb2Nlc3NQb29s
IDogcHJvY2Vzc1Bvb2xzKCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHByb2Nlc3MgPSBwcm9jZXNz
UG9vbC0+bmV0d29ya1Byb2Nlc3MoKSkKLSAgICAgICAgICAgIHByb2Nlc3MtPnNldFNob3VsZENs
YXNzaWZ5UmVzb3VyY2VzQmVmb3JlRGF0YVJlY29yZHNSZW1vdmFsKG1fc2Vzc2lvbklELCB2YWx1
ZSwgW3Byb2Nlc3NQb29sLCBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3Iu
Y29weVJlZigpXSB7IH0pOwotICAgIH0KKyAgICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDogcHJv
Y2Vzc1Bvb2xzKCkpCisgICAgICAgIHByb2Nlc3NQb29sLT5lbnN1cmVOZXR3b3JrUHJvY2Vzcygp
LnNldFNob3VsZENsYXNzaWZ5UmVzb3VyY2VzQmVmb3JlRGF0YVJlY29yZHNSZW1vdmFsKG1fc2Vz
c2lvbklELCB2YWx1ZSwgW3Byb2Nlc3NQb29sLCBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFj
a0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOwogfQogCiB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6
OnNldFN1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbihjb25zdCBVUkwmIHN1YmZyYW1lLCBjb25z
dCBVUkwmIHRvcEZyYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCkBAIC0xNzU1LDcgKzE3NDUsNyBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnN1Ym1p
dFRlbGVtZXRyeSgpCiAgICAgfQogfQogCi12b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNjaGVkdWxl
Q2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSwgU2hvdWxk
R3JhbmRmYXRoZXIgc2hvdWxkR3JhbmRmYXRoZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6c2NoZWR1bGVDbGVh
ckluTWVtb3J5QW5kUGVyc2lzdGVudChXYWxsVGltZSBtb2RpZmllZFNpbmNlLCBTaG91bGRHcmFu
ZGZhdGhlclN0YXRpc3RpY3Mgc2hvdWxkR3JhbmRmYXRoZXIsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWlu
KCkpOwogICAgIApAQCAtMTc3Miw3ICsxNzYyLDcgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpz
Y2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFdhbGxUaW1lIG1vZGlmaWVkU2luY2UK
ICAgICB9CiB9CiAKLXZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6c2NoZWR1bGVDbGVhckluTWVtb3J5
QW5kUGVyc2lzdGVudChTaG91bGRHcmFuZGZhdGhlciBzaG91bGRHcmFuZGZhdGhlciwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJzaXRlRGF0
YVN0b3JlOjpzY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFNob3VsZEdyYW5kZmF0
aGVyU3RhdGlzdGljcyBzaG91bGRHcmFuZGZhdGhlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7
CiAgICAgCkBAIC0xODM3LDEwICsxODI3LDggQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzZXRB
Z2VDYXBGb3JDbGllbnRTaWRlQ29va2llcyhPcHRpb25hbDxTZWNvbmRzPiBzZWNvbmRzLAogewog
ICAgIGF1dG8gY2FsbGJhY2tBZ2dyZWdhdG9yID0gQ2FsbGJhY2tBZ2dyZWdhdG9yOjpjcmVhdGUo
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgIAotICAgIGZvciAoYXV0byYgcHJvY2Vz
c1Bvb2wgOiBwcm9jZXNzUG9vbHMoKSkgewotICAgICAgICBpZiAoYXV0byogcHJvY2VzcyA9IHBy
b2Nlc3NQb29sLT5uZXR3b3JrUHJvY2VzcygpKQotICAgICAgICAgICAgcHJvY2Vzcy0+c2V0QWdl
Q2FwRm9yQ2xpZW50U2lkZUNvb2tpZXMobV9zZXNzaW9uSUQsIHNlY29uZHMsIFtwcm9jZXNzUG9v
bCwgY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9
KTsKLSAgICB9CisgICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKQor
ICAgICAgICBwcm9jZXNzUG9vbC0+ZW5zdXJlTmV0d29ya1Byb2Nlc3MoKS5zZXRBZ2VDYXBGb3JD
bGllbnRTaWRlQ29va2llcyhtX3Nlc3Npb25JRCwgc2Vjb25kcywgW3Byb2Nlc3NQb29sLCBjYWxs
YmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOwogfQog
CiB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNldExhc3RTZWVuKGNvbnN0IFVSTCYgdXJsLCBTZWNv
bmRzIHNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKQEAgLTE4NzMsMTAgKzE4NjEsOCBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNldE5vdGlm
eVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQoYm9vbCB2YWx1ZSwgQ29tcAogCiAgICAg
YXV0byBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBDYWxsYmFja0FnZ3JlZ2F0b3I6OmNyZWF0ZShXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAKLSAgICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDog
cHJvY2Vzc1Bvb2xzKCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHByb2Nlc3MgPSBwcm9jZXNzUG9v
bC0+bmV0d29ya1Byb2Nlc3MoKSkKLSAgICAgICAgICAgIHByb2Nlc3MtPnNldE5vdGlmeVBhZ2Vz
V2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQobV9zZXNzaW9uSUQsIHZhbHVlLCBbcHJvY2Vzc1Bv
b2wsIGNhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsg
fSk7Ci0gICAgfQorICAgIGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBwcm9jZXNzUG9vbHMoKSkK
KyAgICAgICAgcHJvY2Vzc1Bvb2wtPmVuc3VyZU5ldHdvcmtQcm9jZXNzKCkuc2V0Tm90aWZ5UGFn
ZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5lZChtX3Nlc3Npb25JRCwgdmFsdWUsIFtwcm9jZXNz
UG9vbCwgY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0g
eyB9KTsKIH0KIAogdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzZXROb3RpZnlQYWdlc1doZW5UZWxl
bWV0cnlXYXNDYXB0dXJlZChib29sIHZhbHVlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCkBAIC0xODg4LDEwICsxODc0LDggQEAgdm9pZCBXZWJzaXRlRGF0
YVN0b3JlOjpzZXROb3RpZnlQYWdlc1doZW5UZWxlbWV0cnlXYXNDYXB0dXJlZChib29sIHZhbHVl
LCBDb21wbGUKICAgICAKICAgICBhdXRvIGNhbGxiYWNrQWdncmVnYXRvciA9IENhbGxiYWNrQWdn
cmVnYXRvcjo6Y3JlYXRlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAKLSAgICBm
b3IgKGF1dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xzKCkpIHsKLSAgICAgICAgaWYgKGF1
dG8qIHByb2Nlc3MgPSBwcm9jZXNzUG9vbC0+bmV0d29ya1Byb2Nlc3MoKSkKLSAgICAgICAgICAg
IHByb2Nlc3MtPnNldE5vdGlmeVBhZ2VzV2hlblRlbGVtZXRyeVdhc0NhcHR1cmVkKG1fc2Vzc2lv
bklELCB2YWx1ZSwgW3Byb2Nlc3NQb29sLCBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0Fn
Z3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOwotICAgIH0KKyAgICBmb3IgKGF1dG8mIHByb2Nlc3NQ
b29sIDogcHJvY2Vzc1Bvb2xzKCkpCisgICAgICAgIHByb2Nlc3NQb29sLT5lbnN1cmVOZXR3b3Jr
UHJvY2VzcygpLnNldE5vdGlmeVBhZ2VzV2hlblRlbGVtZXRyeVdhc0NhcHR1cmVkKG1fc2Vzc2lv
bklELCB2YWx1ZSwgW3Byb2Nlc3NQb29sLCBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0Fn
Z3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOwogfQogCiB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6Omhh
c1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIoY29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFp
biwgY29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50
NjRfdCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBoYXNBY2Nlc3MpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQpAQCAtMjAyMSwxMCArMjAwNSw4IEBAIHZvaWQgV2Vic2l0ZURhdGFT
dG9yZTo6c2V0VGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbihTZWNvbmRzIHNlY29uZHMsIENvbXBs
ZXRpb25ICiAKICAgICBhdXRvIGNhbGxiYWNrQWdncmVnYXRvciA9IENhbGxiYWNrQWdncmVnYXRv
cjo6Y3JlYXRlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAKLSAgICBmb3IgKGF1
dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xzKCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIG5l
dHdvcmtQcm9jZXNzID0gcHJvY2Vzc1Bvb2wtPm5ldHdvcmtQcm9jZXNzKCkpCi0gICAgICAgICAg
ICBuZXR3b3JrUHJvY2Vzcy0+c2V0VGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbihtX3Nlc3Npb25J
RCwgc2Vjb25kcywgW2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5
UmVmKCldIHsgfSk7Ci0gICAgfQorICAgIGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBwcm9jZXNz
UG9vbHMoKSkKKyAgICAgICAgcHJvY2Vzc1Bvb2wtPmVuc3VyZU5ldHdvcmtQcm9jZXNzKCkuc2V0
VGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbihtX3Nlc3Npb25JRCwgc2Vjb25kcywgW2NhbGxiYWNr
QWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CiB9CiAKIHZv
aWQgV2Vic2l0ZURhdGFTdG9yZTo6bG9nVXNlckludGVyYWN0aW9uKGNvbnN0IFVSTCYgdXJsLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC0yMTQ1LDEw
ICsyMTI3LDggQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzZXRDYWNoZU1heEFnZUNhcEZvclBy
ZXZhbGVudFJlc291cmNlcyhTZWNvbmRzIHNlY29uZHMsIEMKICNpZiBFTkFCTEUoUkVTT1VSQ0Vf
TE9BRF9TVEFUSVNUSUNTKQogICAgIGF1dG8gY2FsbGJhY2tBZ2dyZWdhdG9yID0gQ2FsbGJhY2tB
Z2dyZWdhdG9yOjpjcmVhdGUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgIAotICAg
IGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBwcm9jZXNzUG9vbHMoKSkgewotICAgICAgICBpZiAo
YXV0byogbmV0d29ya1Byb2Nlc3MgPSBwcm9jZXNzUG9vbC0+bmV0d29ya1Byb2Nlc3MoKSkKLSAg
ICAgICAgICAgIG5ldHdvcmtQcm9jZXNzLT5zZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJl
c291cmNlcyhtX3Nlc3Npb25JRCwgc2Vjb25kcywgW2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxi
YWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7Ci0gICAgfQorICAgIGZvciAoYXV0byYgcHJv
Y2Vzc1Bvb2wgOiBwcm9jZXNzUG9vbHMoKSkKKyAgICAgICAgcHJvY2Vzc1Bvb2wtPmVuc3VyZU5l
dHdvcmtQcm9jZXNzKCkuc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMobV9z
ZXNzaW9uSUQsIHNlY29uZHMsIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0
b3IuY29weVJlZigpXSB7IH0pOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oc2Vjb25kcyk7CiAg
ICAgY29tcGxldGlvbkhhbmRsZXIoKTsKQEAgLTIzODAsMTAgKzIzNjAsOCBAQCB2b2lkIFdlYnNp
dGVEYXRhU3RvcmU6OnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUoYm9vbCBlbmFi
bGVkLCBDb21wbGV0aQogICAgIAogICAgIGF1dG8gY2FsbGJhY2tBZ2dyZWdhdG9yID0gQ2FsbGJh
Y2tBZ2dyZWdhdG9yOjpjcmVhdGUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgIAot
ICAgIGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBwcm9jZXNzUG9vbHMoKSkgewotICAgICAgICBp
ZiAoYXV0byogcHJvY2VzcyA9IHByb2Nlc3NQb29sLT5uZXR3b3JrUHJvY2VzcygpKQotICAgICAg
ICAgICAgcHJvY2Vzcy0+c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZShtX3Nlc3Np
b25JRCwgZW5hYmxlZCwgW2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5j
b3B5UmVmKCldIHsgfSk7Ci0gICAgfQorICAgIGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBwcm9j
ZXNzUG9vbHMoKSkKKyAgICAgICAgcHJvY2Vzc1Bvb2wtPmVuc3VyZU5ldHdvcmtQcm9jZXNzKCku
c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZShtX3Nlc3Npb25JRCwgZW5hYmxlZCwg
W2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7
CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShlbmFibGVkKTsKICAgICBVTlVTRURfUEFSQU0oY29t
cGxldGlvbkhhbmRsZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCmluZGV4IGM2NTA1MjhhMWFiZjBmY2RiOTZkNWI5
MTYxMGIyZmFiNTExNjE0Y2MuLmU1MjhmNmRkMzZjODcxNjQzZDdmMmFiMDFmM2YyMzEwNWUyY2Yx
NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNp
dGVEYXRhU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YVN0b3JlLmgKQEAgLTcyLDggKzcyLDggQEAgc3RydWN0IFdlYnNpdGVEYXRhUmVj
b3JkOwogc3RydWN0IFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzOwogCiAjaWYgRU5BQkxFKFJF
U09VUkNFX0xPQURfU1RBVElTVElDUykKLWVudW0gY2xhc3MgU2hvdWxkR3JhbmRmYXRoZXI7Ci1l
bnVtIGNsYXNzIFN0b3JhZ2VBY2Nlc3NTdGF0dXMgOiB1bnNpZ25lZDsKK2VudW0gY2xhc3MgU2hv
dWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzIDogYm9vbDsKK2VudW0gY2xhc3MgU3RvcmFnZUFjY2Vz
c1N0YXR1cyA6IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIFN0b3JhZ2VBY2Nlc3NQcm9tcHRTdGF0dXM7
CiAjZW5kaWYKIApAQCAtMTQzLDggKzE0Myw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbW92ZVBy
ZXZhbGVudERvbWFpbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnMpOwogICAgIHZvaWQg
cmVzZXRQYXJhbWV0ZXJzVG9EZWZhdWx0VmFsdWVzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik7CiAgICAgdm9pZCBzY2hlZHVsZUNvb2tpZUJsb2NraW5nVXBkYXRlKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBzY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0
ZW50KFdhbGxUaW1lIG1vZGlmaWVkU2luY2UsIFNob3VsZEdyYW5kZmF0aGVyLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgc2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVy
c2lzdGVudChTaG91bGRHcmFuZGZhdGhlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
KyAgICB2b2lkIHNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoV2FsbFRpbWUgbW9k
aWZpZWRTaW5jZSwgU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpOworICAgIHZvaWQgc2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVu
dChTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3MsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik7CiAgICAgdm9pZCBzY2hlZHVsZVN0YXRpc3RpY3NBbmREYXRhUmVjb3Jkc1Byb2Nlc3Npbmco
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHN1Ym1pdFRlbGVtZXRyeSgp
OwogICAgIHZvaWQgc2V0Q2FjaGVNYXhBZ2VDYXAoU2Vjb25kcywgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IDk1OWUyODM2NGJlNjg5ZjE1N2QxNjYyZDUwMjg4ZmNiYzZlZGE5MDYuLmEw
YjcwY2E0NzhkNWUzMzQxYTM4MzU5Y2JmMjRkOThkZTQ0MDkxODYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dl
YktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTA5Miw2ICsxMDkyLDgg
QEAKIAkJNzYyQjc0OEQxMjBCQzc1QzAwODE5MzM5IC8qIFdLUHJlZmVyZW5jZXNSZWZQcml2YXRl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NjJCNzQ4
NDEyMEJCQTJEMDA4MTkzMzkgLyogV0tQcmVmZXJlbmNlc1JlZlByaXZhdGUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QTFFMkE4NTFFRUZFODky
MDAzN0EwRTAgLyogQVBJTm90aWZpY2F0aW9uUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBMUUyQTg0MUVFRkU4OEEwMDM3QTBFMCAvKiBB
UElOb3RpZmljYXRpb25Qcm92aWRlci5oICovOyB9OwogCQk3QTNBQ0UxQjFFRUVGNzlCMDBBODY0
QTQgLyogQVBJSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTNBQ0UxQTFFRUVGNzhDMDBBODY0QTQg
LyogQVBJSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmggKi87IH07CisJCTdBM0ZFQ0Ey
MjFGN0MwOTcwMEYyNjdDRCAvKiBTdG9yYWdlQWNjZXNzU3RhdHVzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTNGRUNBMTIxRjdDMDk3MDBGMjY3Q0Qg
LyogU3RvcmFnZUFjY2Vzc1N0YXR1cy5oICovOyB9OworCQk3QTQxRTlGQjIxRjgxREFEMDBCODhD
REIgLyogU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTQxRTlGQTIxRjgxREFDMDBCODhDREIgLyogU2hv
dWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzLmggKi87IH07CiAJCTdBNzcyQzhEMURERDRBMjUwMDBG
MzRGMSAvKiBjb20uYXBwbGUuV2ViS2l0LnBsdWdpbi1jb21tb24uc2IgaW4gQ29weSBQbHVnLWlu
IFNhbmRib3ggUHJvZmlsZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0Ex
NTA2NzIxREQ1NjI5ODAwMUY0QjU4IC8qIGNvbS5hcHBsZS5XZWJLaXQucGx1Z2luLWNvbW1vbi5z
YiAqLzsgfTsKIAkJN0E3OTFFRkExQzdDRkNGMTAwQzRDNTJCIC8qIFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTc5MUVGOTFDN0NGQjM3MDBDNEM1MkIgLyogV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJN0E3
OTFFRkIxQzdDRkQwMTAwQzRDNTJCIC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZU1l
c3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
QTc5MUVGODFDN0NGQjEwMDBDNEM1MkIgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
TWVzc2FnZXMuaCAqLzsgfTsKQEAgLTM1MTEsNiArMzUxMyw4IEBACiAJCTdBMTUwNjcyMURENTYy
OTgwMDFGNEI1OCAvKiBjb20uYXBwbGUuV2ViS2l0LnBsdWdpbi1jb21tb24uc2IgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0OyBuYW1lID0gImNvbS5hcHBsZS5XZWJLaXQucGx1Z2luLWNvbW1vbi5zYiI7IHBhdGgg
PSAiRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9jb20uYXBwbGUuV2ViS2l0LnBsdWdpbi1jb21tb24u
c2IiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQk3QTFFMkE4NDFFRUZF
ODhBMDAzN0EwRTAgLyogQVBJTm90aWZpY2F0aW9uUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQVBJTm90aWZpY2F0aW9uUHJvdmlkZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJN0EzQUNFMUExRUVFRjc4QzAwQTg2NEE0IC8qIEFQSUluamVjdGVk
QnVuZGxlUGFnZUxvYWRlckNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBBUElJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJN0EzRkVDQTEyMUY3QzA5NzAwRjI2N0NEIC8qIFN0b3JhZ2VBY2Nlc3NTdGF0
dXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gU3RvcmFnZUFjY2Vzc1N0YXR1
cy5oOyBwYXRoID0gQ2xhc3NpZmllci9TdG9yYWdlQWNjZXNzU3RhdHVzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTdBNDFFOUZBMjFGODFEQUMwMEI4OENEQiAvKiBTaG91bGRHcmFu
ZGZhdGhlclN0YXRpc3RpY3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gU2hv
dWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzLmg7IHBhdGggPSBDbGFzc2lmaWVyL1Nob3VsZEdyYW5k
ZmF0aGVyU3RhdGlzdGljcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QTVFMzk0
OTFENUJEOEE3MDBCNEI3Q0UgLyogY29tLm1hY3JvbWVkaWEuRmxhc2ggUGxheWVyIEVTUi5wbHVn
aW4uc2IgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gImNvbS5tYWNyb21lZGlhLkZsYXNoIFBsYXll
ciBFU1IucGx1Z2luLnNiIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0E3OTFFRjgx
QzdDRkIxMDAwQzRDNTJCIC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZU1lc3NhZ2Vz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZU1lc3NhZ2VzLmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZU1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9Q
Uk9EVUNUU19ESVI7IH07CiAJCTdBNzkxRUY5MUM3Q0ZCMzcwMEM0QzUyQiAvKiBXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmVNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBuYW1lID0gV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlTWVzc2Fn
ZVJlY2VpdmVyLmNwcDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9IEJVSUxU
X1BST0RVQ1RTX0RJUjsgfTsKQEAgLTY4OTUsNiArNjg5OSw4IEBACiAJCQkJN0FGQkQzNjUyMUU1
MUJBQjAwNURCQUNCIC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oICovLAog
CQkJCTdBRkJEMzY5MjFFNTQyRTgwMDVEQkFDQiAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVy
c2lzdGVudFN0b3JhZ2UuY3BwICovLAogCQkJCTdBRkJEMzY4MjFFNTQyRTgwMDVEQkFDQiAvKiBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UuaCAqLywKKwkJCQk3QTQxRTlG
QTIxRjgxREFDMDBCODhDREIgLyogU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzLmggKi8sCisJ
CQkJN0EzRkVDQTEyMUY3QzA5NzAwRjI2N0NEIC8qIFN0b3JhZ2VBY2Nlc3NTdGF0dXMuaCAqLywK
IAkJCQk3QTg0M0ExQTIxRTQxRkIyMDBERUY2NjMgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlLmNwcCAqLywKIAkJCQk3QUZCRDM2MjIxRTUwRjM5MDA1REJBQ0IgLyogV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlLmggKi8sCiAJCQkJN0FGQkQzNkMyMUU1NDU0NDAwNURCQUNC
IC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0cnkuY3BwICovLApAQCAtOTI5OSwx
MSArOTMwNSwxMyBAQAogCQkJCTgzMTNGN0VFMUY3REFFMDgwMEI5NDRFQiAvKiBTaGFyZWRTdHJp
bmdIYXNoVGFibGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzRjk2NDRFMUZBMEY3NkUwMEM0Nzc1
MCAvKiBTaGFyZWRTdHJpbmdIYXNoVGFibGVSZWFkT25seS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MUQ2N0IzMzkyMTJFMUY2MTAwRkFBNzg2IC8qIFNoYXJlU2hlZXRDYWxsYmFja0lELmggaW4gSGVh
ZGVycyAqLywKKwkJCQk3QTQxRTlGQjIxRjgxREFEMDBCODhDREIgLyogU2hvdWxkR3JhbmRmYXRo
ZXJTdGF0aXN0aWNzLmggaW4gSGVhZGVycyAqLywKIAkJCQk5OTUyMjZENjIwN0QxODQ2MDBGNzg0
MjAgLyogU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkyREFG
MDZENjE4QkQxQTQ3MDA4MUNFQjEgLyogU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMkRFNjk0M0UxOEJEMkE2ODAwNUMxNUU1IC8qIFNtYXJ0TWFnbmlm
aWNhdGlvbkNvbnRyb2xsZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTI3MkIyOEIx
NDA2OTg1RDAwOTZBNUQwIC8qIFN0YXRpc3RpY3NEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQk1
MTRCREVEMzE2Qzk4RUREMDBFNEUyNUUgLyogU3RhdGlzdGljc1JlcXVlc3QuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTdBM0ZFQ0EyMjFGN0MwOTcwMEYyNjdDRCAvKiBTdG9yYWdlQWNjZXNzU3RhdHVz
LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUQzMzA2RjE2QjFEOTkxMDA0RjYwRTcgLyogU3RvcmFn
ZUFyZWFJbXBsLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUNFQ0QyNTE3MTYyREIxMDAxRkM5RUYg
LyogU3RvcmFnZUFyZWFNYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMzM0REVFMTZERThGODgw
MDZBOEUzOCAvKiBTdG9yYWdlQXJlYU1hcE1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKQEAgLTEw
Njk5LDYgKzEwNzA3LDcgQEAKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlm
aWxlcyA9ICgKIAkJCQkyRDkyQTc4NDIxMkI2QUIxMDBGNDkzRkQgLyogQWN0aXZpdHlBc3NlcnRp
b24uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNUNFNDNCNzIyMUY3Q0MwMjAwOTNCQ0M1IC8qIEFQ
SUhUVFBDb29raWVTdG9yZUNvY29hLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQ5MkE3N0IyMTJC
NkE3MTAwRjQ5M0ZEIC8qIEFyZ3VtZW50Q29kZXJzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJE
RUIxRDJFMjEyNzQ3MzYwMDkzMzkwNiAvKiBBcmd1bWVudENvZGVyc0NGLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTJEOTJBNzdDMjEyQjZBNzEwMEY0OTNGRCAvKiBBdHRhY2htZW50LmNwcCBpbiBT
b3VyY2VzICovLAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>359916</attachid>
            <date>2019-01-23 11:47:38 -0800</date>
            <delta_ts>2019-01-23 13:52:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-193659-20190123114737.patch</filename>
            <type>text/plain</type>
            <size>117265</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQwMzQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDhiMWQ2YWZiNzJmYjFiNzVm
YjViYmY0MDE4ZDJlNWFiMzk4NTZjZWYuLmJkYTYxNjhhZjZjMThiYjE4ZjJhMDVlYWNiZTI2MDNm
NzAwMWVlNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTAwIEBACisyMDE5LTAxLTIzICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFN3aXRjaCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb24gcG9ydGlvbnMgb2YgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyB0byBBc3luYyBt
ZXNzYWdlIHBhc3Npbmcgc3R5bGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE5MzY1OQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDc0MzMyOTA+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2hhbmdlIHRo
ZSBpbXBsZW1lbnRhdGlvbnMgb2YgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyBjb2RlIGluIE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiB0byB1c2UgdGhlCisgICAgICAgICdzZW5kV2l0aEFzeW5jUmVwbHkn
IHNvIHRoYXQgbW9yZSBvZiB0aGUgY29kZSBpcyBhdXRvZ2VuZXJhdGVkLiBUaGlzIHNob3VsZCBt
YWtlIHRlc3QgcnVucyBtb3JlCisgICAgICAgIGNvbnNpc3RlbnQsIGFuZCBzaG91bGQgcmVkdWNl
IHRoZSBwb3NzaWJpbGl0eSBvZiBib29ra2VlcGluZyBlcnJvcnMgaW4gdGhlIG1lc3NhZ2UgaGFu
ZGxpbmcKKyAgICAgICAgaW1wbGVtZW50YXRpb25zLgorCisgICAgICAgIEZpeCB0aGUgaW1wbGVt
ZW50YXRpb24gb2YgTmV0d29ya1Byb2Nlc3NQcm94eTo6Y2xlYXJDYWxsYmFja1N0YXRlcyB0byBy
ZW1vdmUgdGhlIG1hbnVhbGx5IGNvbnN0cnVjdGVkCisgICAgICAgIChhbmQgaW5jb21wbGV0ZSkg
bWVzc2FnZSBjYWxsYmFja3MuIFRoZXNlIGVycm9ycyBhcmUgYSBiaWcgcmVhc29uIHRvIG1vdmUg
dG8gdGhlIGF1dG8tZ2VuZXJhdGVkCisgICAgICAgICdzZW5kV2l0aEFzeW5jUmVwbHknIGltcGxl
bWVudGF0b2luLiBEaXR0byBmb3IgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkQ2xvc2UuCisKKyAg
ICAgICAgVGhpcyBwYXRjaCBhbHNvIG1vdmVzIGFuIGluaXRpYWxpemF0b24gY2FsbCAoV2Vic2l0
ZURhdGFTdG9yZTo6ZGlkQ3JlYXRlTmV0d29ya1Byb2Nlc3MpIGZyb20KKyAgICAgICAgJ2Vuc3Vy
ZU5ldHdvcmtQcm9jZXNzJyB0byAncHJvY2Vzc0RpZEZpbmlzaExhdW5jaGluZycuIEluIGN1cnJl
bnQgY29kZSwgdGhlIGNhbGwgaGFwcGVucyBiZWZvcmUKKyAgICAgICAgYSBjb25uZWN0aW9uIGlz
IGVzdGFibGlzaGVkIHRvIHRoZSBuZXR3b3JrIHByb2Nlc3MsIGNhdXNpbmcgaW5pdGlhbGl6YXRp
b24gbWVzc2FnZXMgdG8gZ2V0IGRyb3BwZWQKKyAgICAgICAgbGVhZGluZyB0byB0ZXN0IHN5c3Rl
bSBmbGFraW5lc3MuCisKKyAgICAgICAgRmluYWxseTogVGhlIFdLIEFQSSB0ZXN0IGNvZGUgd2Fz
IHVwZGF0ZWQgdG8gZW5zdXJlIHRoYXQgY29tcGxldGlvbiBoYW5kbGVycyBhcmUgYWx3YXlzIGNh
bGxlZCwgZXZlbgorICAgICAgICB3aGVuIGJ1aWx0IHdpdGhvdXQgRU5BQkxFX1JFU09VUkNFX0xP
QURfU1RBVElTVElDUyBkZWZpbmVkLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3Np
Zmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuY3BwOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzLmg6IEFk
ZGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvU3RvcmFnZUFjY2Vzc1N0
YXR1cy5oOiBBZGRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVu
dCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmUuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjp1cGRhdGVQcmV2YWxlbnRE
b21haW5zVG9CbG9ja0Nvb2tpZXNGb3IpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vz
czo6c2V0QWdlQ2FwRm9yQ2xpZW50U2lkZUNvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUHJvY2Vzczo6c2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudCk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpoYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWUpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Z3JhbnRTdG9yYWdlQWNjZXNzKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnJlbW92ZUFsbFN0b3JhZ2VBY2Nlc3MpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxl
bnRSZXNvdXJjZXMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cmVzZXRDYWNo
ZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0
b3JlUmVmLmNwcDoKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NDbGVhcklu
TWVtb3J5QW5kUGVyc2lzdGVudFN0b3JlKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVN0
YXRpc3RpY3NDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudFN0b3JlTW9kaWZpZWRTaW5jZUhvdXJz
KToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVu
dFN0YXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9y
ZS5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6Y2xlYXJDYWxsYmFja1N0
YXRlcyk6IFJlbW92ZSBpbmNvbXBsZXRlIGNsZWFuLXVwIGNvZGUgdGhhdAorICAgICAgICBpcyBu
b3cgYXV0b2dlbmVyYXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6
ZGlkQ2xvc2UpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6
dXBkYXRlUHJldmFsZW50RG9tYWluc1RvQmxvY2tDb29raWVzRm9yKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6c2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVu
dCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OnNldEFnZUNhcEZvckNs
aWVudFNpZGVDb29raWVzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6
aGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3NQcm94eTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UHJvY2Vzc1Byb3h5OjpncmFudFN0b3JhZ2VBY2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUHJvY2Vzc1Byb3h5OjpyZW1vdmVBbGxTdG9yYWdlQWNjZXNzKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNv
dXJjZXMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRDYWNoZU1h
eEFnZUNhcCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OnJlc2V0Q2Fj
aGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUHJvY2Vzc1Byb3h5OjpkaWRVcGRhdGVCbG9ja0Nvb2tpZXMpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRTZXRBZ2VDYXBGb3JDbGllbnRTaWRl
Q29va2llcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6
OmRpZFVwZGF0ZVJ1bnRpbWVTZXR0aW5ncyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtQcm9jZXNzUHJveHk6OnN0b3JhZ2VBY2Nlc3NSZXF1ZXN0UmVzdWx0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6c3RvcmFnZUFjY2Vzc09wZXJh
dGlvblJlc3VsdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJv
eHk6OmRpZFJlbW92ZUFsbFN0b3JhZ2VBY2Nlc3MpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRTZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJl
c291cmNlcyk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzc1Bvb2w6OmVuc3VyZU5ldHdvcmtQcm9jZXNzKTogTW92ZSBXZWJzaXRlRGF0
YVN0b3JlICdkaWRDcmVhdGVOZXR3b3JrUHJvY2VzcycKKyAgICAgICAgdG8gJ3Byb2Nlc3NEaWRG
aW5pc2hMYXVuY2hpbmcnLiBDdXJyZW50bHkgdGhlIGNhbGwgaGFwcGVucyBiZWZvcmUgYSBjb25u
ZWN0aW9uIGlzIGVzdGFibGlzaGVkLAorICAgICAgICBjYXVzaW5nIGluaXRpYWxpemF0aW9uIG1l
c3NhZ2VzIHRvIGdldCBkcm9wcGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6
cHJvY2Vzc0RpZEZpbmlzaExhdW5jaGluZyk6IERpdHRvLgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0
ZURhdGFTdG9yZTo6cmVtb3ZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3Rv
cmU6OnNldE1heFN0YXRpc3RpY3NFbnRyaWVzKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURh
dGFTdG9yZTo6c2V0UHJ1bmVFbnRyaWVzRG93blRvKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0
ZURhdGFTdG9yZTo6c2V0R3JhbmRmYXRoZXJpbmdUaW1lKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
c2l0ZURhdGFTdG9yZTo6c2V0Q2FjaGVNYXhBZ2VDYXApOgorICAgICAgICAoV2ViS2l0OjpXZWJz
aXRlRGF0YVN0b3JlOjpzZXRNaW5pbXVtVGltZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpzZXRQcmV2YWxlbnRSZXNvdXJjZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnNldFNob3VsZENsYXNzaWZ5UmVz
b3VyY2VzQmVmb3JlRGF0YVJlY29yZHNSZW1vdmFsKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0
ZURhdGFTdG9yZTo6c2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudCk6CisgICAgICAg
IChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnNldEFnZUNhcEZvckNsaWVudFNpZGVDb29raWVz
KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6c2V0Tm90aWZ5UGFnZXNXaGVu
RGF0YVJlY29yZHNXZXJlU2Nhbm5lZCk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3Rv
cmU6OnNldE5vdGlmeVBhZ2VzV2hlblRlbGVtZXRyeVdhc0NhcHR1cmVkKToKKyAgICAgICAgKFdl
YktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6c2V0VGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbik6Cisg
ICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnNldENhY2hlTWF4QWdlQ2FwRm9yUHJl
dmFsZW50UmVzb3VyY2VzKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6c2V0
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKwogMjAxOS0wMS0yMyAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFt
QGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMjQwMjQzKTogQ3Jhc2hUcmFjZXI6
IFdlYktpdFRlc3RSdW5uZXJBcHAgYXQgY29tLmFwcGxlLldlYktpdDogV2ViS2l0OjpXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNlbmREaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1ZSBj
b25zdCArIDMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNz
aWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5
U3RvcmUuY3BwCmluZGV4IDc2ODViNmUzM2M2MmYxYjhlOTRkMzg2NTcxOWJmMTVjYmJhN2YwZDYu
Ljk3NDRkNDgzNDVjMTg1M2Y4YWM2MDUzNzE4MTRjN2FiZTM1MmVhNDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0
aWNzTWVtb3J5U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xh
c3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuY3BwCkBAIC0zMyw2ICsz
Myw3IEBACiAjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzc01hbmFnZXIuaCIKICNpbmNsdWRlICJQbHVn
aW5Qcm9jZXNzUHJveHkuaCIKICNpbmNsdWRlICJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lz
dGVudFN0b3JhZ2UuaCIKKyNpbmNsdWRlICJTdG9yYWdlQWNjZXNzU3RhdHVzLmgiCiAjaW5jbHVk
ZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAjaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1RlbGVtZXRyeS5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9TaG91bGRHcmFuZGZhdGhl
clN0YXRpc3RpY3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9T
aG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMmY4NDYzZDRmODRlMWZl
ZWMyYWQ1YTExYWVjMDE0YjA2ZTNmYWUwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Nob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljcy5o
CkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK2VudW0gY2xhc3MgU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzIDogYm9v
bCB7CisgICAgTm8sCisgICAgWWVzLAorfTsKKyAgICAKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvU3Rv
cmFnZUFjY2Vzc1N0YXR1cy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lm
aWVyL1N0b3JhZ2VBY2Nlc3NTdGF0dXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MGI2YTI5MzM2MmJmZTQzZDEz
YTQ1M2FjMzE2MGNmYjczZWM4YTM1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1N0b3JhZ2VBY2Nlc3NTdGF0dXMuaApAQCAtMCwwICsx
LDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitlbnVtIGNsYXNzIFN0b3JhZ2VBY2Nlc3NTdGF0dXMgOiB1aW50OF90IHsKKyAgICBDYW5ub3RS
ZXF1ZXN0QWNjZXNzLAorICAgIFJlcXVpcmVzVXNlclByb21wdCwKKyAgICBIYXNBY2Nlc3MKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCituYW1lc3BhY2UgV1RGIHsKKyAgICAKK3RlbXBs
YXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViS2l0OjpTdG9yYWdlQWNjZXNzU3RhdHVzPiB7Cisg
ICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICBXZWJLaXQ6OlN0b3JhZ2VBY2Nlc3NT
dGF0dXMsCisgICAgV2ViS2l0OjpTdG9yYWdlQWNjZXNzU3RhdHVzOjpDYW5ub3RSZXF1ZXN0QWNj
ZXNzLAorICAgIFdlYktpdDo6U3RvcmFnZUFjY2Vzc1N0YXR1czo6UmVxdWlyZXNVc2VyUHJvbXB0
LAorICAgIFdlYktpdDo6U3RvcmFnZUFjY2Vzc1N0YXR1czo6SGFzQWNjZXNzCisgICAgPjsKK307
CisgICAgCit9IC8vIG5hbWVzcGFjZSBXVEYKKworCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCmluZGV4IDhlNzczNWFiZjc3OWZmZGRlOGVhNzUwMmVi
YTNkNWUwYzAxNjkwYTguLmUyYzk3NTQwY2M4ZDI0ZDM1ZDg0NDkwMmYyOGFiYmEyNTBhNzgwNjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCkBA
IC0zMyw2ICszMyw4IEBACiAjaW5jbHVkZSAiTmV0d29ya1Nlc3Npb24uaCIKICNpbmNsdWRlICJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuaCIKICNpbmNsdWRlICJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UuaCIKKyNpbmNsdWRlICJTaG91bGRHcmFuZGZh
dGhlclN0YXRpc3RpY3MuaCIKKyNpbmNsdWRlICJTdG9yYWdlQWNjZXNzU3RhdHVzLmgiCiAjaW5j
bHVkZSAiV2ViRnJhbWVQcm94eS5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgogI2luY2x1
ZGUgIldlYlByb2Nlc3NNZXNzYWdlcy5oIgpAQCAtNjM5LDcgKzY0MSw3IEBAIHZvaWQgV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRWZXJ5UHJldmFsZW50UmVzb3VyY2UoY29uc3Qg
U3RyaW5nJiBwcmltCiAgICAgfSk7CiB9CiAgICAgCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZTo6ZHVtcFJlc291cmNlTG9hZFN0YXRpc3RpY3MoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChjb25zdCBTdHJpbmcmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlOjpkdW1wUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFN0cmluZyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNT
RVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIApAQCAtMTAxMCw3ICsxMDEyLDcgQEAgdm9pZCBXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNjaGVkdWxlQ2xlYXJCbG9ja2luZ1N0YXRlRm9y
RG9tYWlucyhjb25zdAogICAgIH0pOwogfQogCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZTo6c2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChTaG91bGRHcmFuZGZh
dGhlciBzaG91bGRHcmFuZGZhdGhlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQordm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNjaGVk
dWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNz
IHNob3VsZEdyYW5kZmF0aGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICBwb3N0VGFz
ayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBzaG91bGRHcmFuZGZhdGhl
ciwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRh
YmxlIHsKQEAgLTEwMjMsNyArMTAyNSw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlOjpzY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFNob3VsZEdyCiAKICAg
ICAgICAgaWYgKG1fbWVtb3J5U3RvcmUpIHsKICAgICAgICAgICAgIG1fbWVtb3J5U3RvcmUtPmNs
ZWFyKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gcHJvdGVjdGVkVGhpcy5jb3B5UmVmKCksIHNob3Vs
ZEdyYW5kZmF0aGVyLCBjb21wbGV0aW9uSGFuZGxlckNhbGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXJDYWxsZXIpXSAoKSBtdXRhYmxlIHsKLSAgICAgICAgICAgICAgICBpZiAoc2hvdWxk
R3JhbmRmYXRoZXIgPT0gU2hvdWxkR3JhbmRmYXRoZXI6OlllcykgeworICAgICAgICAgICAgICAg
IGlmIChzaG91bGRHcmFuZGZhdGhlciA9PSBTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3M6Olll
cykgewogICAgICAgICAgICAgICAgICAgICBpZiAobV9tZW1vcnlTdG9yZSkKICAgICAgICAgICAg
ICAgICAgICAgICAgIG1fbWVtb3J5U3RvcmUtPmdyYW5kZmF0aGVyRXhpc3RpbmdXZWJzaXRlRGF0
YShjb21wbGV0aW9uSGFuZGxlckNhbGxlci5yZWxlYXNlKCkpOwogICAgICAgICAgICAgICAgICAg
ICBlbHNlCkBAIC0xMDMxLDEzICsxMDMzLDEzIEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlOjpzY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFNob3VsZEdyCiAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICBpZiAoc2hvdWxkR3JhbmRmYXRoZXIgPT0gU2hvdWxkR3JhbmRmYXRoZXI6OlllcykK
KyAgICAgICAgICAgIGlmIChzaG91bGRHcmFuZGZhdGhlciA9PSBTaG91bGRHcmFuZGZhdGhlclN0
YXRpc3RpY3M6OlllcykKICAgICAgICAgICAgICAgICBSRUxFQVNFX0xPRyhSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzLCAiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzY2hlZHVsZUNsZWFy
SW5NZW1vcnlBbmRQZXJzaXN0ZW50IEJlZm9yZSBiZWluZyBjbGVhcmVkLCBtX21lbW9yeVN0b3Jl
IGlzIG51bGwgd2hlbiB0cnlpbmcgdG8gZ3JhbmRmYXRoZXIgZGF0YS4iKTsKICAgICAgICAgfQog
ICAgIH0pOwogfQogCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2NoZWR1
bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChXYWxsVGltZSBtb2RpZmllZFNpbmNlLCBTaG91
bGRHcmFuZGZhdGhlciBzaG91bGRHcmFuZGZhdGhlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmIGNhbGxiYWNrKQordm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNjaGVk
dWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSwgU2hv
dWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzIHNob3VsZEdyYW5kZmF0aGVyLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYgY2FsbGJhY2spCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigp
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVy
L1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCmluZGV4
IDI1MWIzOTI1YmFiNWFjNDAyYThjZTRkN2Y5NDJlMTAyNmI0NmY3NmMuLmI2MGFhYWM4OTBlZjMw
MzdlMmZhYzdmMTZiODdlYmQ4MDRkZDg0ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpZiBFTkFCTEUoUkVTT1VS
Q0VfTE9BRF9TVEFUSVNUSUNTKQogCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUg
IlN0b3JhZ2VBY2Nlc3NTdGF0dXMuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVR5cGUuaCIKICNp
bmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5o
PgpAQCAtNTUsMTcgKzU2LDcgQEAgY2xhc3MgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3Rl
bnRTdG9yYWdlOwogY2xhc3MgV2ViRnJhbWVQcm94eTsKIGNsYXNzIFdlYlByb2Nlc3NQcm94eTsK
IGNsYXNzIFdlYnNpdGVEYXRhU3RvcmU7Ci0KLWVudW0gY2xhc3MgU3RvcmFnZUFjY2Vzc1N0YXR1
cyA6IHVuc2lnbmVkIHsKLSAgICBDYW5ub3RSZXF1ZXN0QWNjZXNzLAotICAgIFJlcXVpcmVzVXNl
clByb21wdCwKLSAgICBIYXNBY2Nlc3MKLX07Ci0KLWVudW0gY2xhc3MgU2hvdWxkR3JhbmRmYXRo
ZXIgewotICAgIE5vLAotICAgIFllcywKLX07CitlbnVtIGNsYXNzIFNob3VsZEdyYW5kZmF0aGVy
U3RhdGlzdGljcyA6IGJvb2w7CiAKIGNsYXNzIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZSBmaW5hbCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmUsIFdURjo6RGVzdHJ1Y3Rpb25UaHJlYWQ6Ok1haW4+LCBwdWJsaWMgSVBDOjpN
ZXNzYWdlUmVjZWl2ZXIgewogcHVibGljOgpAQCAtMTE2LDcgKzEwNyw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNldFByZXZhbGVudFJlc291cmNlKGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4s
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRWZXJ5UHJldmFsZW50
UmVzb3VyY2UoY29uc3QgVVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2
b2lkIHNldFZlcnlQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWlu
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgZHVtcFJlc291cmNlTG9h
ZFN0YXRpc3RpY3MoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJik7Cisg
ICAgdm9pZCBkdW1wUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFN0cmluZyk+JiYpOwogICAgIHZvaWQgaXNQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBVUkwmLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAgICB2b2lkIGlzUHJldmFsZW50UmVz
b3VyY2UoY29uc3QgU3RyaW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAg
ICAgdm9pZCBpc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBVUkwmLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGJvb2wpPiYmKTsKQEAgLTE1NSw4ICsxNDYsOCBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzY2hlZHVsZVN0YXRpc3RpY3NBbmREYXRhUmVjb3Jkc1Byb2Nlc3NpbmcoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHN1Ym1pdFRlbGVtZXRyeShDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgdXBkYXRlUHJldmFsZW50RG9tYWluc1RvQmxvY2tD
b29raWVzRm9yKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9CbG9jayk7Ci0gICAgdm9p
ZCBzY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFNob3VsZEdyYW5kZmF0aGVyLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgc2NoZWR1bGVDbGVhckluTWVt
b3J5QW5kUGVyc2lzdGVudChXYWxsVGltZSBtb2RpZmllZFNpbmNlLCBTaG91bGRHcmFuZGZhdGhl
ciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIHNjaGVkdWxlQ2xlYXJJ
bk1lbW9yeUFuZFBlcnNpc3RlbnQoU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgc2NoZWR1bGVDbGVhckluTWVtb3J5QW5k
UGVyc2lzdGVudChXYWxsVGltZSBtb2RpZmllZFNpbmNlLCBTaG91bGRHcmFuZGZhdGhlclN0YXRp
c3RpY3MsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAKICAgICB2b2lkIHNldFRpbWVU
b0xpdmVVc2VySW50ZXJhY3Rpb24oU2Vjb25kcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKICAgICB2b2lkIHNldE1pbmltdW1UaW1lQmV0d2VlbkRhdGFSZWNvcmRzUmVtb3ZhbChTZWNv
bmRzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCA2MDcyMDExMjliZmYwNzI2ZDVl
NDVhNTNiYzZmYzEzMWFmYmZjZDQyLi42ZTJiMzc5MWU0ZDQ2MWFmMDc5ZGY3OThmMDQ2NmQ4ZmQ2
ZGRkOWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmNwcApAQCAtNDksNyArNDksOSBAQAogI2luY2x1ZGUgIk5ldHdvcmtTZXNzaW9uQ3JlYXRp
b25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiUHJlY29ubmVjdFRhc2suaCIKICNpbmNsdWRlICJS
ZW1vdGVOZXR3b3JraW5nQ29udGV4dC5oIgorI2luY2x1ZGUgIlNob3VsZEdyYW5kZmF0aGVyU3Rh
dGlzdGljcy5oIgogI2luY2x1ZGUgIlN0YXRpc3RpY3NEYXRhLmgiCisjaW5jbHVkZSAiU3RvcmFn
ZUFjY2Vzc1N0YXR1cy5oIgogI2luY2x1ZGUgIldlYkNvb2tpZU1hbmFnZXIuaCIKICNpbmNsdWRl
ICJXZWJQYWdlUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sTWVzc2Fn
ZXMuaCIKQEAgLTU5NSwyMyArNTk3LDI0IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OndyaXRlQmxv
YlRvRmlsZVBhdGgoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcGF0aCwgU2FuCiB9CiAK
ICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotdm9pZCBOZXR3b3JrUHJvY2Vz
czo6ZHVtcFJlc291cmNlTG9hZFN0YXRpc3RpY3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1
aW50NjRfdCBjb250ZXh0SWQpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpkdW1wUmVzb3VyY2VMb2Fk
U3RhdGlzdGljcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoU3RyaW5nKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoYXV0byogbmV0d29y
a1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7Ci0gICAgICAgIGlm
IChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNl
TG9hZFN0YXRpc3RpY3MoKSkgewotICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+
ZHVtcFJlc291cmNlTG9hZFN0YXRpc3RpY3MoW3RoaXMsIGNvbnRleHRJZF0oY29uc3QgU3RyaW5n
JiBkdW1wZWRTdGF0aXN0aWNzKSB7Ci0gICAgICAgICAgICAgICAgcGFyZW50UHJvY2Vzc0Nvbm5l
Y3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6RGlkRHVtcFJlc291
cmNlTG9hZFN0YXRpc3RpY3MoZHVtcGVkU3RhdGlzdGljcywgY29udGV4dElkKSwgMCk7Ci0gICAg
ICAgICAgICB9KTsKLSAgICAgICAgfQotICAgIH0gZWxzZQorICAgICAgICBpZiAoYXV0byogcmVz
b3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzKCkpCisgICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5kdW1wUmVzb3VyY2VM
b2FkU3RhdGlzdGljcyhXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CisgICAgfSBlbHNlIHsKICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7
CisgICAgfQogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjp1cGRhdGVQcmV2YWxlbnREb21haW5z
VG9CbG9ja0Nvb2tpZXNGb3IoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgZG9tYWluc1RvQmxvY2ssIHVpbnQ2NF90IGNvbnRleHRJZCkKK3ZvaWQgTmV0d29y
a1Byb2Nlc3M6OnVwZGF0ZVByZXZhbGVudERvbWFpbnNUb0Jsb2NrQ29va2llc0ZvcihQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9CbG9jaywg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlm
IChhdXRvKiBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQp
KQogICAgICAgICBuZXR3b3JrU3RvcmFnZVNlc3Npb24tPnNldFByZXZhbGVudERvbWFpbnNUb0Js
b2NrQ29va2llc0Zvcihkb21haW5zVG9CbG9jayk7Ci0gICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rp
b24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6RGlkVXBkYXRlQmxvY2tD
b29raWVzKGNvbnRleHRJZCksIDApOworICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKIHZv
aWQgTmV0d29ya1Byb2Nlc3M6OmlzR3JhbmRmYXRoZXJlZChQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIGNvbnN0IFN0cmluZyYgdGFyZ2V0UHJpbWFyeURvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTYxOSw4ICs2MjIsMTIgQEAgdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6aXNHcmFuZGZhdGhlcmVkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgY29uc3QgU3RyaW5nJiB0YXIKICAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlz
LT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CiAgICAgICAgIGlmIChhdXRvKiByZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3Mo
KSkKICAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPmlzR3JhbmRmYXRoZXJlZCh0
YXJnZXRQcmltYXJ5RG9tYWluLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci0gICAgfSBl
bHNlCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsK
KyAgICB9IGVsc2UgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoZmFsc2UpOworICAgIH0KIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6
aXNQcmV2YWxlbnRSZXNvdXJjZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmlu
ZyYgcmVzb3VyY2VEb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCkBAIC02MjgsOCArNjM1LDEyIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6Omlz
UHJldmFsZW50UmVzb3VyY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcm
CiAgICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vz
c2lvbklEKSkgewogICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5l
dHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCiAgICAgICAgICAgICByZXNv
dXJjZUxvYWRTdGF0aXN0aWNzLT5pc1ByZXZhbGVudFJlc291cmNlKHJlc291cmNlRG9tYWluLCBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci0gICAgfSBlbHNlCisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKKyAgICB9IGVsc2UgewogICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2Up
OworICAgIH0KIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6aXNWZXJ5UHJldmFsZW50UmVzb3Vy
Y2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWlu
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAt
NjM3LDE1ICs2NDgsMTkgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6aXNWZXJ5UHJldmFsZW50UmVz
b3VyY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHIKICAgICBpZiAoYXV0byog
bmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CiAgICAg
ICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJl
c291cmNlTG9hZFN0YXRpc3RpY3MoKSkKICAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MtPmlzVmVyeVByZXZhbGVudFJlc291cmNlKHJlc291cmNlRG9tYWluLCBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSk7Ci0gICAgfSBlbHNlCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKKyAgICB9IGVsc2UgewogICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOworICAgIH0KIH0K
IAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0QWdlQ2FwRm9yQ2xpZW50U2lkZUNvb2tpZXMoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25hbDxTZWNvbmRzPiBzZWNvbmRzLCB1aW50NjRf
dCBjb250ZXh0SWQpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRBZ2VDYXBGb3JDbGllbnRTaWRl
Q29va2llcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvbmFsPFNlY29uZHM+IHNlY29u
ZHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAg
ICBpZiAoYXV0byogbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gc3RvcmFnZVNlc3Npb24oc2Vzc2lv
bklEKSkKICAgICAgICAgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5zZXRBZ2VDYXBGb3JDbGllbnRT
aWRlQ29va2llcyhzZWNvbmRzKTsKLSAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpEaWRTZXRBZ2VDYXBGb3JDbGllbnRTaWRl
Q29va2llcyhjb250ZXh0SWQpLCAwKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQogCiB2
b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRHcmFuZGZhdGhlcmVkKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgY29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwgYm9vbCBpc0dyYW5kZmF0aGVyZWQs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTY1Myw4
ICs2NjgsMTIgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0R3JhbmRmYXRoZXJlZChQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcmUKICAgICBpZiAoYXV0byogbmV0d29y
a1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CiAgICAgICAgIGlm
IChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNl
TG9hZFN0YXRpc3RpY3MoKSkKICAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnNl
dEdyYW5kZmF0aGVyZWQocmVzb3VyY2VEb21haW4sIGlzR3JhbmRmYXRoZXJlZCwgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOwotICAgIH0gZWxzZQorICAgICAgICBlbHNlCisgICAgICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgIH0gZWxzZSB7CiAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgIH0KIH0KIAogdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6c2V0UHJldmFsZW50UmVzb3VyY2UoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC02NjIsOCArNjgxLDEyIEBAIHZvaWQgTmV0
d29ya1Byb2Nlc3M6OnNldFByZXZhbGVudFJlc291cmNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgY29uc3QgU3RyaW5nCiAgICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0
d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewogICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCiAg
ICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5zZXRQcmV2YWxlbnRSZXNvdXJjZShy
ZXNvdXJjZURvbWFpbiwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotICAgIH0gZWxzZQor
ICAgICAgICBlbHNlCisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgIH0gZWxz
ZSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcigpOworICAgIH0KIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0UHJldmFsZW50UmVz
b3VyY2VGb3JEZWJ1Z01vZGUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTdHJpbmcgcmVzb3Vy
Y2VEb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
QEAgLTY3MSw4ICs2OTQsMTIgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0UHJldmFsZW50UmVz
b3VyY2VGb3JEZWJ1Z01vZGUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELAogICAgIGlmIChhdXRv
KiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKICAg
ICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lvbi0+
cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQogICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlz
dGljcy0+c2V0UHJldmFsZW50UmVzb3VyY2VGb3JEZWJ1Z01vZGUocmVzb3VyY2VEb21haW4sIFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLSAgICB9IGVsc2UKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICB9IGVsc2UgewogICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICB9CiB9
CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldFZlcnlQcmV2YWxlbnRSZXNvdXJjZShQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTY4MCw4ICs3MDcsMTIg
QEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0VmVyeVByZXZhbGVudFJlc291cmNlKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3QKICAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24g
PSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CiAgICAgICAgIGlmIChhdXRvKiBy
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRp
c3RpY3MoKSkKICAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnNldFZlcnlQcmV2
YWxlbnRSZXNvdXJjZShyZXNvdXJjZURvbWFpbiwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OwotICAgIH0gZWxzZQorICAgICAgICBlbHNlCisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cigpOworICAgIH0gZWxzZSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgIH0KIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6
Y2xlYXJQcmV2YWxlbnRSZXNvdXJjZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0
cmluZyYgcmVzb3VyY2VEb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKQEAgLTY4OSw4ICs3MjAsMTIgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y2xl
YXJQcmV2YWxlbnRSZXNvdXJjZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmkK
ICAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNz
aW9uSUQpKSB7CiAgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0
d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKICAgICAgICAgICAgIHJlc291
cmNlTG9hZFN0YXRpc3RpY3MtPmNsZWFyUHJldmFsZW50UmVzb3VyY2UocmVzb3VyY2VEb21haW4s
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLSAgICB9IGVsc2UKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICB9IGVsc2UgewogICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICB9
CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnN1Ym1pdFRlbGVtZXRyeShQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKQEAgLTY5OCw4ICs3MzMsMTIgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6c3VibWl0VGVsZW1l
dHJ5KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXIKICAgICBpZiAo
YXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7
CiAgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Np
b24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKICAgICAgICAgICAgIHJlc291cmNlTG9hZFN0
YXRpc3RpY3MtPnN1Ym1pdFRlbGVtZXRyeShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci0g
ICAgfSBlbHNlCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7
CisgICAgfSBlbHNlIHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKCk7CisgICAgfQogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzY2hl
ZHVsZUNvb2tpZUJsb2NraW5nVXBkYXRlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtNzA3LDIyICs3NDYs
MjggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2NoZWR1bGVDb29raWVCbG9ja2luZ1VwZGF0ZShQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXAKICAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Np
b24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CiAgICAgICAgIGlmIChhdXRv
KiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0
YXRpc3RpY3MoKSkKICAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnNjaGVkdWxl
Q29va2llQmxvY2tpbmdVcGRhdGUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotICAgIH0g
ZWxzZQorICAgICAgICBlbHNlCisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAg
IH0gZWxzZSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcigpOworICAgIH0KIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2NoZWR1bGVD
bGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlv
bmFsPFdhbGxUaW1lPiBtb2RpZmllZFNpbmNlLCBib29sIHNob3VsZEdyYW5kZmF0aGVyLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtQ
cm9jZXNzOjpzY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgT3B0aW9uYWw8V2FsbFRpbWU+IG1vZGlmaWVkU2luY2UsIFNob3VsZEdyYW5k
ZmF0aGVyU3RhdGlzdGljcyBzaG91bGRHcmFuZGZhdGhlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lv
biA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKICAgICAgICAgaWYgKGF1dG8q
IHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3Rh
dGlzdGljcygpKSB7Ci0gICAgICAgICAgICBhdXRvIGdyYW5kZmF0aGVyID0gc2hvdWxkR3JhbmRm
YXRoZXIgPyBTaG91bGRHcmFuZGZhdGhlcjo6WWVzIDogU2hvdWxkR3JhbmRmYXRoZXI6Ok5vOwog
ICAgICAgICAgICAgaWYgKG1vZGlmaWVkU2luY2UpCi0gICAgICAgICAgICAgICAgcmVzb3VyY2VM
b2FkU3RhdGlzdGljcy0+c2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChtb2RpZmll
ZFNpbmNlLnZhbHVlKCksIGdyYW5kZmF0aGVyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
CisgICAgICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+c2NoZWR1bGVDbGVhcklu
TWVtb3J5QW5kUGVyc2lzdGVudChtb2RpZmllZFNpbmNlLnZhbHVlKCksIHNob3VsZEdyYW5kZmF0
aGVyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgICAgICBlbHNlCi0gICAg
ICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+c2NoZWR1bGVDbGVhckluTWVtb3J5
QW5kUGVyc2lzdGVudChncmFuZGZhdGhlciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwot
ICAgICAgICB9Ci0gICAgfSBlbHNlCisgICAgICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlz
dGljcy0+c2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChzaG91bGRHcmFuZGZhdGhl
ciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICB9IGVsc2UKKyAgICAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgfSBlbHNlIHsKICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgfQogfQogCiB2
b2lkIE5ldHdvcmtQcm9jZXNzOjpyZXNldFBhcmFtZXRlcnNUb0RlZmF1bHRWYWx1ZXMoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCkBAIC03MzAsOCArNzc1LDEyIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlc2V0
UGFyYW1ldGVyc1RvRGVmYXVsdFZhbHVlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvCiAg
ICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lv
bklEKSkgewogICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdv
cmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCiAgICAgICAgICAgICByZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzLT5yZXNldFBhcmFtZXRlcnNUb0RlZmF1bHRWYWx1ZXMoV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOwotICAgIH0gZWxzZQorICAgICAgICBlbHNlCisgICAgICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgIH0gZWxzZSB7CiAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgIH0KIH0KIAogdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6c2NoZWR1bGVTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHNQcm9jZXNz
aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtNzM5LDggKzc4OCwxMiBAQCB2b2lkIE5ldHdvcmtQcm9j
ZXNzOjpzY2hlZHVsZVN0YXRpc3RpY3NBbmREYXRhUmVjb3Jkc1Byb2Nlc3NpbmcoUEFMOjpTZXNz
aW9uSUQgcwogICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNz
aW9uKHNlc3Npb25JRCkpIHsKICAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MgPSBuZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQogICAgICAgICAg
ICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+c2NoZWR1bGVTdGF0aXN0aWNzQW5kRGF0YVJlY29y
ZHNQcm9jZXNzaW5nKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLSAgICB9IGVsc2UKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICB9IGVsc2Ug
ewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoKTsKKyAgICB9CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldE5vdGlmeVBhZ2VzV2hl
bkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBib29sIHZh
bHVlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC03
NDgsOCArODAxLDEyIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldE5vdGlmeVBhZ2VzV2hlbkRh
dGFSZWNvcmRzV2VyZVNjYW5uZWQoUEFMOjpTZXNzaW9uSUQgc2VzCiAgICAgaWYgKGF1dG8qIG5l
dHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewogICAgICAg
ICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzKCkpCiAgICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNz
LT5zZXROb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVkKHZhbHVlLCBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSk7Ci0gICAgfSBlbHNlCisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgfSBlbHNlIHsKICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgfQogfQogCiB2
b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXROb3RpZnlQYWdlc1doZW5UZWxlbWV0cnlXYXNDYXB0dXJl
ZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGJvb2wgdmFsdWUsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTc1Nyw4ICs4MTQsMTIgQEAgdm9pZCBO
ZXR3b3JrUHJvY2Vzczo6c2V0Tm90aWZ5UGFnZXNXaGVuVGVsZW1ldHJ5V2FzQ2FwdHVyZWQoUEFM
OjpTZXNzaW9uSUQgc2Vzc2kKICAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5u
ZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CiAgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxv
YWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkK
ICAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnNldE5vdGlmeVBhZ2VzV2hlblRl
bGVtZXRyeVdhc0NhcHR1cmVkKHZhbHVlLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci0g
ICAgfSBlbHNlCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7
CisgICAgfSBlbHNlIHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKCk7CisgICAgfQogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRT
dWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW4oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTdHJp
bmcgc3ViZnJhbWUsIFN0cmluZyB0b3BGcmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtNzY2LDggKzgyNywxMiBAQCB2b2lkIE5ldHdvcmtQcm9j
ZXNzOjpzZXRTdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW4oUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBTdAogICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNz
aW9uKHNlc3Npb25JRCkpIHsKICAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MgPSBuZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQogICAgICAgICAg
ICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+c2V0U3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2lu
KHN1YmZyYW1lLCB0b3BGcmFtZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotICAgIH0g
ZWxzZQorICAgICAgICBlbHNlCisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAg
IH0gZWxzZSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcigpOworICAgIH0KIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6aXNSZWdpc3Rl
cmVkQXNSZWRpcmVjdGluZ1RvKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5n
JiByZWRpcmVjdGVkRnJvbSwgY29uc3QgU3RyaW5nJiByZWRpcmVjdGVkVG8sIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC03NzUsOCArODQwLDEy
IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmlzUmVnaXN0ZXJlZEFzUmVkaXJlY3RpbmdUbyhQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0CiAgICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9u
ID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewogICAgICAgICBpZiAoYXV0byog
cmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzKCkpCiAgICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5pc1JlZ2lzdGVy
ZWRBc1JlZGlyZWN0aW5nVG8ocmVkaXJlY3RlZEZyb20sIHJlZGlyZWN0ZWRUbywgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOwotICAgIH0gZWxzZQorICAgICAgICBlbHNlCisgICAgICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CisgICAgfSBlbHNlIHsKICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKKyAgICB9
CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmlzUmVnaXN0ZXJlZEFzU3ViRnJhbWVVbmRlcihQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgc3ViZnJhbWUsIGNvbnN0IFN0
cmluZyYgdG9wRnJhbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCkBAIC03ODQsOCArODUzLDEyIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmlzUmVn
aXN0ZXJlZEFzU3ViRnJhbWVVbmRlcihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0CiAg
ICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lv
bklEKSkgewogICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdv
cmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCiAgICAgICAgICAgICByZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzLT5pc1JlZ2lzdGVyZWRBc1N1YkZyYW1lVW5kZXIoc3ViZnJhbWUsIHRv
cEZyYW1lLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci0gICAgfSBlbHNlCisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKKyAgICB9IGVsc2Ug
ewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoZmFsc2UpOworICAgIH0KIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0U3VicmVzb3Vy
Y2VVbmRlclRvcEZyYW1lT3JpZ2luKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU3RyaW5nIHN1
YnJlc291cmNlLCBTdHJpbmcgdG9wRnJhbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKQEAgLTc5Myw4ICs4NjYsMTIgQEAgdm9pZCBOZXR3b3JrUHJvY2Vz
czo6c2V0U3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2luKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwKICAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lv
bihzZXNzaW9uSUQpKSB7CiAgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNz
ID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKICAgICAgICAgICAg
IHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnNldFN1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdp
bihzdWJyZXNvdXJjZSwgdG9wRnJhbWUsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLSAg
ICB9IGVsc2UKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsK
KyAgICB9IGVsc2UgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoKTsKKyAgICB9CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldFN1
YnJlc291cmNlVW5pcXVlUmVkaXJlY3RUbyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0cmlu
ZyBzdWJyZXNvdXJjZSwgU3RyaW5nIGhvc3ROYW1lUmVkaXJlY3RlZFRvLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC04MDIsOCArODc5LDEyIEBAIHZv
aWQgTmV0d29ya1Byb2Nlc3M6OnNldFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RUbyhQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIFN0CiAgICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhp
cy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewogICAgICAgICBpZiAoYXV0byogcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
KCkpCiAgICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5zZXRTdWJyZXNvdXJjZVVu
aXF1ZVJlZGlyZWN0VG8oc3VicmVzb3VyY2UsIGhvc3ROYW1lUmVkaXJlY3RlZFRvLCBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSk7Ci0gICAgfSBlbHNlCisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgfSBlbHNlIHsKICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgfQogfQogCiB2
b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0RnJvbShQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0cmluZyBzdWJyZXNvdXJjZSwgU3RyaW5nIGhvc3ROYW1l
UmVkaXJlY3RlZEZyb20sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKQEAgLTgxMSw4ICs4OTIsMTIgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0U3VicmVz
b3VyY2VVbmlxdWVSZWRpcmVjdEZyb20oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELAogICAgIGlm
IChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkp
IHsKICAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vz
c2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQogICAgICAgICAgICAgcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy0+c2V0U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdEZyb20oc3VicmVzb3VyY2Us
IGhvc3ROYW1lUmVkaXJlY3RlZEZyb20sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLSAg
ICB9IGVsc2UKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsK
KyAgICB9IGVsc2UgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoKTsKKyAgICB9CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmlzUmVn
aXN0ZXJlZEFzU3VicmVzb3VyY2VVbmRlcihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0
IFN0cmluZyYgc3VicmVzb3VyY2UsIGNvbnN0IFN0cmluZyYgdG9wRnJhbWUsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC04MjAsOCArOTA1LDEy
IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmlzUmVnaXN0ZXJlZEFzU3VicmVzb3VyY2VVbmRlcihQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvCiAgICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9u
ID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewogICAgICAgICBpZiAoYXV0byog
cmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzKCkpCiAgICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5pc1JlZ2lzdGVy
ZWRBc1N1YnJlc291cmNlVW5kZXIoc3VicmVzb3VyY2UsIHRvcEZyYW1lLCBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSk7Ci0gICAgfSBlbHNlCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKKyAgICB9IGVsc2UgewogICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOworICAgIH0KIH0K
IAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0VG9wRnJhbWVVbmlxdWVSZWRpcmVjdFRvKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgU3RyaW5nIHRvcEZyYW1lSG9zdE5hbWUsIFN0cmluZyBob3N0
TmFtZVJlZGlyZWN0ZWRUbywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQpAQCAtODI5LDggKzkxOCwxMiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRUb3BG
cmFtZVVuaXF1ZVJlZGlyZWN0VG8oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTdHJpbgogICAg
IGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25J
RCkpIHsKICAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3Jr
U2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQogICAgICAgICAgICAgcmVzb3VyY2VM
b2FkU3RhdGlzdGljcy0+c2V0VG9wRnJhbWVVbmlxdWVSZWRpcmVjdFRvKHRvcEZyYW1lSG9zdE5h
bWUsIGhvc3ROYW1lUmVkaXJlY3RlZFRvLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci0g
ICAgfSBlbHNlCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7
CisgICAgfSBlbHNlIHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKCk7CisgICAgfQogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRU
b3BGcmFtZVVuaXF1ZVJlZGlyZWN0RnJvbShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0cmlu
ZyB0b3BGcmFtZUhvc3ROYW1lLCBTdHJpbmcgaG9zdE5hbWVSZWRpcmVjdGVkRnJvbSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtODM4LDggKzkzMSwx
MiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0RnJvbShQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0cgogICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lv
biA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKICAgICAgICAgaWYgKGF1dG8q
IHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3Rh
dGlzdGljcygpKQogICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+c2V0VG9wRnJh
bWVVbmlxdWVSZWRpcmVjdEZyb20odG9wRnJhbWVIb3N0TmFtZSwgaG9zdE5hbWVSZWRpcmVjdGVk
RnJvbSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotICAgIH0gZWxzZQorICAgICAgICBl
bHNlCisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgIH0gZWxzZSB7CiAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwor
ICAgIH0KIH0KICAgICAKICAgICAKQEAgLTg0OCwyNCArOTQ1LDMzIEBAIHZvaWQgTmV0d29ya1By
b2Nlc3M6OnNldExhc3RTZWVuKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5n
JiByZXNvdXJjCiAgICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nl
c3Npb24oc2Vzc2lvbklEKSkgewogICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlz
dGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCiAgICAgICAg
ICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5zZXRMYXN0U2VlbihyZXNvdXJjZURvbWFpbiwg
c2Vjb25kcywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotICAgIH0gZWxzZQorICAgICAg
ICBlbHNlCisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgIH0gZWxzZSB7CiAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigp
OworICAgIH0KIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6aGFzU3RvcmFnZUFjY2Vzc0ZvckZy
YW1lKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFp
biwgY29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50
NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGNvbnRleHRJZCkKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6Omhh
c1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0
cmluZyYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwgdWlu
dDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogeworICAgIGJvb2wgaGFzU3RvcmFnZUFjY2VzcyA9
IGZhbHNlOwogICAgIGlmIChhdXRvKiBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBzdG9yYWdlU2Vz
c2lvbihzZXNzaW9uSUQpKQotICAgICAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpTdG9yYWdlQWNjZXNzT3BlcmF0aW9uUmVz
dWx0KG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+aGFzU3RvcmFnZUFjY2VzcyhyZXNvdXJjZURvbWFp
biwgZmlyc3RQYXJ0eURvbWFpbiwgZnJhbWVJRCwgcGFnZUlEKSwgY29udGV4dElkKSwgMCk7Cisg
ICAgICAgIGhhc1N0b3JhZ2VBY2Nlc3MgPSBuZXR3b3JrU3RvcmFnZVNlc3Npb24tPmhhc1N0b3Jh
Z2VBY2Nlc3MocmVzb3VyY2VEb21haW4sIGZpcnN0UGFydHlEb21haW4sIGZyYW1lSUQsIHBhZ2VJ
RCk7CiAgICAgZWxzZQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKworICAgIGNvbXBs
ZXRpb25IYW5kbGVyKGhhc1N0b3JhZ2VBY2Nlc3MpOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNz
OjpnZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVp
bnQ2NF90IGNvbnRleHRJZCkKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmdldEFsbFN0b3JhZ2VBY2Nl
c3NFbnRyaWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChWZWN0b3I8U3RyaW5nPiBkb21haW5zKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBp
ZiAoYXV0byogbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gc3RvcmFnZVNlc3Npb24oc2Vzc2lvbklE
KSkKLSAgICAgICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0
d29ya1Byb2Nlc3NQcm94eTo6QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXNSZXN1bHQobmV0d29ya1N0
b3JhZ2VTZXNzaW9uLT5nZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcygpLCBjb250ZXh0SWQpLCAw
KTsKLSAgICBlbHNlCisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG5ldHdvcmtTdG9yYWdlU2Vz
c2lvbi0+Z2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMoKSk7CisgICAgZWxzZSB7CiAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwor
ICAgIH0KIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6aGFzU3RvcmFnZUFjY2VzcyhQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFN0
cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHVpbnQ2
NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKQEAgLTg3MywyMyArOTc5LDI4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6Omhhc1N0b3Jh
Z2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHJlCiAgICAg
aWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklE
KSkgewogICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtT
ZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCiAgICAgICAgICAgICByZXNvdXJjZUxv
YWRTdGF0aXN0aWNzLT5oYXNTdG9yYWdlQWNjZXNzKHJlc291cmNlRG9tYWluLCBmaXJzdFBhcnR5
RG9tYWluLCBmcmFtZUlELCBwYWdlSUQsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLSAg
ICB9IGVsc2UKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFs
c2UpOworICAgIH0gZWxzZSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CisgICAgfQogfQogCi12b2lkIE5ldHdvcmtQcm9j
ZXNzOjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0
IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwg
T3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgYm9vbCBwcm9tcHRF
bmFibGVkLCB1aW50NjRfdCBjb250ZXh0SWQpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZXF1ZXN0
U3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcmVz
b3VyY2VEb21haW4sIGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwgT3B0aW9uYWw8dWlu
dDY0X3Q+IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgYm9vbCBwcm9tcHRFbmFibGVkLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NTdGF0dXMpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewogICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNz
aW9uKHNlc3Npb25JRCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MgPSBuZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKSB7Ci0gICAgICAg
ICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5yZXF1ZXN0U3RvcmFnZUFjY2VzcyhyZXNvdXJj
ZURvbWFpbiwgZmlyc3RQYXJ0eURvbWFpbiwgZnJhbWVJRCwgcGFnZUlELCBwcm9tcHRFbmFibGVk
LCBbdGhpcywgY29udGV4dElkXShTdG9yYWdlQWNjZXNzU3RhdHVzIHByb21wdEFjY2VwdGVkKSB7
Ci0gICAgICAgICAgICAgICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdl
czo6TmV0d29ya1Byb2Nlc3NQcm94eTo6U3RvcmFnZUFjY2Vzc1JlcXVlc3RSZXN1bHQoc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KHByb21wdEFjY2VwdGVkKSwgY29udGV4dElkKSwgMCk7Ci0gICAgICAg
ICAgICB9KTsKLSAgICAgICAgfQotICAgIH0gZWxzZQorICAgICAgICBpZiAoYXV0byogcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
KCkpCisgICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5yZXF1ZXN0U3RvcmFnZUFj
Y2VzcyhyZXNvdXJjZURvbWFpbiwgZmlyc3RQYXJ0eURvbWFpbiwgZnJhbWVJRCwgcGFnZUlELCBw
cm9tcHRFbmFibGVkLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFN0b3JhZ2VBY2Nlc3NTdGF0dXM6OkNhbm5v
dFJlcXVlc3RBY2Nlc3MpOworICAgIH0gZWxzZSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihTdG9yYWdlQWNjZXNzU3RhdHVzOjpDYW5u
b3RSZXF1ZXN0QWNjZXNzKTsKKyAgICB9CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OmdyYW50
U3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcmVz
b3VyY2VEb21haW4sIGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwgT3B0aW9uYWw8dWlu
dDY0X3Q+IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgYm9vbCB1c2VyV2FzUHJvbXB0ZWQsIHVp
bnQ2NF90IGNvbnRleHRJZCkKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmdyYW50U3RvcmFnZUFjY2Vz
cyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4s
IGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1l
SUQsIHVpbnQ2NF90IHBhZ2VJRCwgYm9vbCB1c2VyV2FzUHJvbXB0ZWQsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYm9vbCBpc1N0b3Jh
Z2VHcmFudGVkID0gZmFsc2U7CiAgICAgaWYgKGF1dG8qIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9
IHN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpIHsKQEAgLTg5OSw3ICsxMDEwLDcgQEAgdm9pZCBO
ZXR3b3JrUHJvY2Vzczo6Z3JhbnRTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgY29uc3QgU3RyaW5nJgogICAgIH0gZWxzZQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKIAotICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdv
cmtQcm9jZXNzUHJveHk6OlN0b3JhZ2VBY2Nlc3NPcGVyYXRpb25SZXN1bHQoaXNTdG9yYWdlR3Jh
bnRlZCwgY29udGV4dElkKSwgMCk7CisgICAgY29tcGxldGlvbkhhbmRsZXIoaXNTdG9yYWdlR3Jh
bnRlZCk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmxvZ0ZyYW1lTmF2aWdhdGlvbihQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgdGFyZ2V0UHJpbWFyeURvbWFpbiwg
Y29uc3QgU3RyaW5nJiBtYWluRnJhbWVQcmltYXJ5RG9tYWluLCBjb25zdCBTdHJpbmcmIHNvdXJj
ZVByaW1hcnlEb21haW4sIGNvbnN0IFN0cmluZyYgdGFyZ2V0SG9zdCwgY29uc3QgU3RyaW5nJiBt
YWluRnJhbWVIb3N0LCBib29sIGlzUmVkaXJlY3QsIGJvb2wgaXNNYWluRnJhbWUpCkBAIC05MTYs
MTggKzEwMjcsMjUgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6bG9nVXNlckludGVyYWN0aW9uKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJgogICAgIGlmIChhdXRvKiBuZXR3
b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKICAgICAgICAg
aWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lvbi0+cmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcygpKQogICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+
bG9nVXNlckludGVyYWN0aW9uKHRhcmdldFByaW1hcnlEb21haW4sIFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKTsKLSAgICB9IGVsc2UKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoKTsKKyAgICB9IGVsc2UgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICB9CiB9CiAKIHZvaWQgTmV0d29y
a1Byb2Nlc3M6OmhhZFVzZXJJbnRlcmFjdGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNv
bnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0g
dGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewotICAgICAgICBpZiAoYXV0byogcmVz
b3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzKCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3
b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQogICAgICAgICAgICAgcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy0+aGFzSGFkVXNlckludGVyYWN0aW9uKHJlc291cmNlRG9tYWluLCBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOworICAgIH0gZWxz
ZSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihmYWxzZSk7CisgICAgfQogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjbGVhclVzZXJJ
bnRlcmFjdGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcmVzb3Vy
Y2VEb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
QEAgLTkzNSwxNyArMTA1MywyMSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjbGVhclVzZXJJbnRl
cmFjdGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZwogICAgIGlmIChh
dXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsK
ICAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lv
bi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQogICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcy0+Y2xlYXJVc2VySW50ZXJhY3Rpb24ocmVzb3VyY2VEb21haW4sIFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKLSAgICB9IGVsc2UKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICB9IGVsc2UgewogICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICB9CiB9CiAKLXZvaWQg
TmV0d29ya1Byb2Nlc3M6OnJlbW92ZUFsbFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCB1aW50NjRfdCBjb250ZXh0SWQpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZW1vdmVB
bGxTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmIChhdXRvKiBuZXR3b3Jr
U3RvcmFnZVNlc3Npb24gPSBzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQogICAgICAgICBuZXR3
b3JrU3RvcmFnZVNlc3Npb24tPnJlbW92ZUFsbFN0b3JhZ2VBY2Nlc3MoKTsKICAgICBlbHNlCiAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9u
KCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkRpZFJlbW92ZUFsbFN0b3Jh
Z2VBY2Nlc3MoY29udGV4dElkKSwgMCk7CisgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKIH0KIAog
dm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVtb3ZlUHJldmFsZW50RG9tYWlucyhQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zKQpAQCAtOTU0LDEzICsx
MDc2LDEzIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlbW92ZVByZXZhbGVudERvbWFpbnMoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBWZWN0CiAgICAgICAgIG5ldHdvcmtTdG9yYWdl
U2Vzc2lvbi0+cmVtb3ZlUHJldmFsZW50RG9tYWlucyhkb21haW5zKTsKIH0KIAotdm9pZCBOZXR3
b3JrUHJvY2Vzczo6c2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBTZWNvbmRzIHNlY29uZHMsIHVpbnQ2NF90IGNvbnRleHRJZCkK
K3ZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3Vy
Y2VzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU2Vjb25kcyBzZWNvbmRzLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKGF1dG8qIG5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiA9IHN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCiAgICAgICAg
IG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+c2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNv
dXJjZXMoU2Vjb25kcyB7IHNlY29uZHMgfSk7CiAgICAgZWxzZQogICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2Vz
OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpEaWRTZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJl
c291cmNlcyhjb250ZXh0SWQpLCAwKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQogCiB2
b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRHcmFuZGZhdGhlcmluZ1RpbWUoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBTZWNvbmRzIHNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKQEAgLTk2OCw4ICsxMDkwLDEyIEBAIHZvaWQgTmV0d29ya1Byb2Nl
c3M6OnNldEdyYW5kZmF0aGVyaW5nVGltZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFNlY29u
ZHMgc2VjCiAgICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Np
b24oc2Vzc2lvbklEKSkgewogICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGlj
cyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCiAgICAgICAgICAg
ICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5zZXRHcmFuZGZhdGhlcmluZ1RpbWUoc2Vjb25kcywg
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotICAgIH0gZWxzZQorICAgICAgICBlbHNlCisg
ICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgIH0gZWxzZSB7CiAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgIH0K
IH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0TWF4U3RhdGlzdGljc0VudHJpZXMoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBtYXhpbXVtRW50cnlDb3VudCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtOTc3LDggKzExMDMsMTIg
QEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0TWF4U3RhdGlzdGljc0VudHJpZXMoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdAogICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9
IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKICAgICAgICAgaWYgKGF1dG8qIHJl
c291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlz
dGljcygpKQogICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+c2V0TWF4U3RhdGlz
dGljc0VudHJpZXMobWF4aW11bUVudHJ5Q291bnQsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KTsKLSAgICB9IGVsc2UKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoKTsKKyAgICB9IGVsc2UgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICB9CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6
OnNldE1pbmltdW1UaW1lQmV0d2VlbkRhdGFSZWNvcmRzUmVtb3ZhbChQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIFNlY29uZHMgc2Vjb25kcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQpAQCAtOTg2LDggKzExMTYsMTIgQEAgdm9pZCBOZXR3b3JrUHJvY2Vz
czo6c2V0TWluaW11bVRpbWVCZXR3ZWVuRGF0YVJlY29yZHNSZW1vdmFsKFBBTDo6U2Vzc2lvbklE
IHNlc3MKICAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lv
bihzZXNzaW9uSUQpKSB7CiAgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNz
ID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKICAgICAgICAgICAg
IHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnNldE1pbmltdW1UaW1lQmV0d2VlbkRhdGFSZWNvcmRz
UmVtb3ZhbChzZWNvbmRzLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci0gICAgfSBlbHNl
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgfSBl
bHNlIHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKCk7CisgICAgfQogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRQcnVuZUVudHJp
ZXNEb3duVG8oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBwcnVuZVRhcmdldENv
dW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC05
OTUsOCArMTEyOSwxMiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRQcnVuZUVudHJpZXNEb3du
VG8oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBwcgogICAgIGlmIChhdXRvKiBu
ZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKICAgICAg
ICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lvbi0+cmVz
b3VyY2VMb2FkU3RhdGlzdGljcygpKQogICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGlj
cy0+c2V0UHJ1bmVFbnRyaWVzRG93blRvKHBydW5lVGFyZ2V0Q291bnQsIFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKLSAgICB9IGVsc2UKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoKTsKKyAgICB9IGVsc2UgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICB9CiB9CiAKIHZvaWQgTmV0
d29ya1Byb2Nlc3M6OnNldFRpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24oUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBTZWNvbmRzIHNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKQEAgLTEwMDQsOCArMTE0MiwxMiBAQCB2b2lkIE5ldHdvcmtQcm9j
ZXNzOjpzZXRUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgU2VjbwogICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNz
aW9uKHNlc3Npb25JRCkpIHsKICAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MgPSBuZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQogICAgICAgICAg
ICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+c2V0VGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbihz
ZWNvbmRzLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci0gICAgfSBlbHNlCisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgfSBlbHNlIHsKICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7
CisgICAgfQogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRTaG91bGRDbGFzc2lmeVJlc291
cmNlc0JlZm9yZURhdGFSZWNvcmRzUmVtb3ZhbChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGJv
b2wgdmFsdWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
QEAgLTEwMTMsOCArMTE1NSwxMiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRTaG91bGRDbGFz
c2lmeVJlc291cmNlc0JlZm9yZURhdGFSZWNvcmRzUmVtb3ZhbChQQUw6OlNlcwogICAgIGlmIChh
dXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsK
ICAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lv
bi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQogICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcy0+c2V0U2hvdWxkQ2xhc3NpZnlSZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3Jkc1JlbW92
YWwodmFsdWUsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLSAgICB9IGVsc2UKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICB9IGVsc2Ugewog
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
KTsKKyAgICB9CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldFJlc291cmNlTG9hZFN0YXRp
c3RpY3NFbmFibGVkKGJvb2wgZW5hYmxlZCkKQEAgLTEwMjgsMTcgKzExNzQsMjEgQEAgdm9pZCBO
ZXR3b3JrUHJvY2Vzczo6c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZShQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQKICAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5u
ZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CiAgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxv
YWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkK
ICAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnNldFJlc291cmNlTG9hZFN0YXRp
c3RpY3NEZWJ1Z01vZGUoZGVidWdNb2RlLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci0g
ICAgfSBlbHNlCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7
CisgICAgfSBlbHNlIHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKCk7CisgICAgfQogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpyZXNl
dENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgdWludDY0X3QgY29udGV4dElkKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVzZXRDYWNo
ZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBp
ZiAoYXV0byogbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gc3RvcmFnZVNlc3Npb24oc2Vzc2lvbklE
KSkKICAgICAgICAgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5yZXNldENhY2hlTWF4QWdlQ2FwRm9y
UHJldmFsZW50UmVzb3VyY2VzKCk7CiAgICAgZWxzZQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3
b3JrUHJvY2Vzc1Byb3h5OjpEaWRVcGRhdGVSdW50aW1lU2V0dGluZ3MoY29udGV4dElkKSwgMCk7
CisgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKIH0KICNlbmRpZiAvLyBFTkFCTEUoUkVTT1VSQ0Vf
TE9BRF9TVEFUSVNUSUNTKQogCkBAIC0xMjExLDcgKzEzNjEsNyBAQCB2b2lkIE5ldHdvcmtQcm9j
ZXNzOjpkZWxldGVXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNl
dDxXZWJzaQogCiAgICAgICAgICAgICAgICAgLy8gSWYgd2UgYXJlIGRlbGV0aW5nIGFsbCBvZiB0
aGUgZGF0YSB0eXBlcyB0aGF0IHRoZSByZXNvdXJjZSBsb2FkIHN0YXRpc3RpY3Mgc3RvcmUgbW9u
aXRvcnMKICAgICAgICAgICAgICAgICAvLyB3ZSBkbyBub3QgbmVlZCB0byByZS1ncmFuZGZhdGhl
ciBvbGQgZGF0YS4KLSAgICAgICAgICAgICAgICBhdXRvIHNob3VsZEdyYW5kZmF0aGVyID0gKCht
b25pdG9yZWRUeXBlc1JhdyAmIGRlbGV0ZWRUeXBlc1JhdykgPT0gbW9uaXRvcmVkVHlwZXNSYXcp
ID8gU2hvdWxkR3JhbmRmYXRoZXI6Ok5vIDogU2hvdWxkR3JhbmRmYXRoZXI6OlllczsKKyAgICAg
ICAgICAgICAgICBhdXRvIHNob3VsZEdyYW5kZmF0aGVyID0gKChtb25pdG9yZWRUeXBlc1JhdyAm
IGRlbGV0ZWRUeXBlc1JhdykgPT0gbW9uaXRvcmVkVHlwZXNSYXcpID8gU2hvdWxkR3JhbmRmYXRo
ZXJTdGF0aXN0aWNzOjpObyA6IFNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljczo6WWVzOwogCiAg
ICAgICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+c2NoZWR1bGVDbGVhckluTWVt
b3J5QW5kUGVyc2lzdGVudChtb2RpZmllZFNpbmNlLCBzaG91bGRHcmFuZGZhdGhlciwgW2NsZWFy
VGFza3NIYW5kbGVyID0gY2xlYXJUYXNrc0hhbmRsZXIuY29weVJlZigpXSB7IH0pOwogICAgICAg
ICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5o
CmluZGV4IGFmYmViYmRlMTc5ZTljMzJlMDhmOWJiZDAwNGE3ZGU2OTFmOWE1ODUuLjZlZmFkMjhk
MTExYTFmYTIxZDRmMDYxOTBhZjhhMzJhY2YwZjhiNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDEyLTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEyLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC04MSw2ICs4MSw4IEBAIGNsYXNzIE5l
dHdvcmtQcm9jZXNzU3VwcGxlbWVudDsKIGNsYXNzIE5ldHdvcmtQcm94aW1pdHlNYW5hZ2VyOwog
Y2xhc3MgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOwogY2xhc3MgV2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uOworZW51bSBjbGFzcyBTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3MgOiBib29s
OworZW51bSBjbGFzcyBTdG9yYWdlQWNjZXNzU3RhdHVzIDogdWludDhfdDsKIGVudW0gY2xhc3Mg
V2Vic2l0ZURhdGFGZXRjaE9wdGlvbjsKIGVudW0gY2xhc3MgV2Vic2l0ZURhdGFUeXBlOwogc3Ry
dWN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOwpAQCAtMTc2LDEyICsxNzgsMTIg
QEAgcHVibGljOgogICAgIHZvaWQgY2xlYXJQcmV2YWxlbnRSZXNvdXJjZShQQUw6OlNlc3Npb25J
RCwgY29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmKTsKICAgICB2b2lkIGNsZWFyVXNlckludGVyYWN0aW9uKFBBTDo6U2Vzc2lvbklELCBjb25z
dCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwog
ICAgIHZvaWQgZGVsZXRlV2Vic2l0ZURhdGFGb3JUb3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWlu
c0luQWxsUGVyc2lzdGVudERhdGFTdG9yZXMoUEFMOjpTZXNzaW9uSUQsIE9wdGlvblNldDxXZWJz
aXRlRGF0YVR5cGU+LCBWZWN0b3I8U3RyaW5nPiYmIHRvcFByaXZhdGVseUNvbnRyb2xsZWREb21h
aW5zLCBib29sIHNob3VsZE5vdGlmeVBhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qg
SGFzaFNldDxTdHJpbmc+Jik+JiYpOwotICAgIHZvaWQgZHVtcFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MoUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IGNvbnRleHRJZCk7Ci0gICAgdm9pZCB1cGRhdGVQ
cmV2YWxlbnREb21haW5zVG9CbG9ja0Nvb2tpZXNGb3IoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBkb21haW5zVG9CbG9jaywgdWludDY0X3QgY29udGV4dElkKTsKKyAgICB2
b2lkIGR1bXBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFN0cmluZyk+JiYpOworICAgIHZvaWQgdXBkYXRlUHJldmFsZW50RG9tYWlu
c1RvQmxvY2tDb29raWVzRm9yKFBBTDo6U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
ZG9tYWluc1RvQmxvY2ssIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBp
c0dyYW5kZmF0aGVyZWQoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgdGFyZ2V0UHJpbWFy
eURvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBpc1By
ZXZhbGVudFJlc291cmNlKFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHJlc291cmNlRG9t
YWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAgICB2b2lkIGlzVmVyeVBy
ZXZhbGVudFJlc291cmNlKFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHJlc291cmNlRG9t
YWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKLSAgICB2b2lkIHNldEFnZUNh
cEZvckNsaWVudFNpZGVDb29raWVzKFBBTDo6U2Vzc2lvbklELCBPcHRpb25hbDxTZWNvbmRzPiwg
dWludDY0X3QgY29udGV4dElkKTsKKyAgICB2b2lkIHNldEFnZUNhcEZvckNsaWVudFNpZGVDb29r
aWVzKFBBTDo6U2Vzc2lvbklELCBPcHRpb25hbDxTZWNvbmRzPiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKTsKICAgICB2b2lkIGlzUmVnaXN0ZXJlZEFzUmVkaXJlY3RpbmdUbyhQQUw6OlNl
c3Npb25JRCwgY29uc3QgU3RyaW5nJiByZWRpcmVjdGVkRnJvbSwgY29uc3QgU3RyaW5nJiByZWRp
cmVjdGVkVG8sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIHZvaWQgaXNS
ZWdpc3RlcmVkQXNTdWJGcmFtZVVuZGVyKFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHN1
YmZyYW1lLCBjb25zdCBTdHJpbmcmIHRvcEZyYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmKTsKICAgICB2b2lkIGlzUmVnaXN0ZXJlZEFzU3VicmVzb3VyY2VVbmRlcihQQUw6OlNl
c3Npb25JRCwgY29uc3QgU3RyaW5nJiBzdWJyZXNvdXJjZSwgY29uc3QgU3RyaW5nJiB0b3BGcmFt
ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CkBAIC0xOTIsMjIgKzE5NCwyMiBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzZXRWZXJ5UHJldmFsZW50UmVzb3VyY2UoUEFMOjpTZXNzaW9u
SUQsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7CiAgICAgdm9pZCBzZXRQcnVuZUVudHJpZXNEb3duVG8oUEFMOjpTZXNzaW9uSUQsIHVp
bnQ2NF90IHBydW5lVGFyZ2V0Q291bnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAg
ICAgdm9pZCBoYWRVc2VySW50ZXJhY3Rpb24oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYg
cmVzb3VyY2VEb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwotICAgIHZv
aWQgaGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcm
IHJlc291cmNlRG9tYWluLCBjb25zdCBTdHJpbmcmIGZpcnN0UGFydHlEb21haW4sIHVpbnQ2NF90
IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgY29udGV4dElkKTsKLSAgICB2b2lk
IGdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCBjb250
ZXh0SWQpOwotICAgIHZvaWQgZ3JhbnRTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklELCBjb25z
dCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBjb25zdCBTdHJpbmcmIGZpcnN0UGFydHlEb21haW4s
IE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIGJvb2wgdXNlcldh
c1Byb21wdGVkLCB1aW50NjRfdCBjb250ZXh0SWQpOworICAgIHZvaWQgaGFzU3RvcmFnZUFjY2Vz
c0ZvckZyYW1lKFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBj
b25zdCBTdHJpbmcmIGZpcnN0UGFydHlEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90
IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBnZXRB
bGxTdG9yYWdlQWNjZXNzRW50cmllcyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChWZWN0b3I8U3RyaW5nPiBkb21haW5zKT4mJik7CisgICAgdm9pZCBncmFudFN0b3JhZ2VB
Y2Nlc3MoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIGNvbnN0
IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHVp
bnQ2NF90IHBhZ2VJRCwgYm9vbCB1c2VyV2FzUHJvbXB0ZWQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYpOwogICAgIHZvaWQgaGFzU3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCwg
Y29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwgY29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9t
YWluLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAgICB2b2lkIGxvZ0ZyYW1lTmF2aWdhdGlvbihQ
QUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiB0YXJnZXRQcmltYXJ5RG9tYWluLCBjb25zdCBT
dHJpbmcmIG1haW5GcmFtZVByaW1hcnlEb21haW4sIGNvbnN0IFN0cmluZyYgc291cmNlUHJpbWFy
eURvbWFpbiwgY29uc3QgU3RyaW5nJiB0YXJnZXRIb3N0LCBjb25zdCBTdHJpbmcmIG1haW5GcmFt
ZUhvc3QsIGJvb2wgaXNSZWRpcmVjdCwgYm9vbCBpc01haW5GcmFtZSk7CiAgICAgdm9pZCBsb2dV
c2VySW50ZXJhY3Rpb24oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgdGFyZ2V0UHJpbWFy
eURvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lkIHJlbW92ZUFs
bFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IGNvbnRleHRJZCk7CisgICAg
dm9pZCByZW1vdmVBbGxTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgcmVtb3ZlUHJldmFsZW50RG9tYWlucyhQQUw6OlNl
c3Npb25JRCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnMpOwotICAgIHZvaWQgcmVxdWVz
dFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21h
aW4sIGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwgT3B0aW9uYWw8dWludDY0X3Q+IGZy
YW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgYm9vbCBwcm9tcHRFbmFibGVkLCB1aW50NjRfdCBjb250
ZXh0SWQpOwotICAgIHZvaWQgcmVzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNl
cyhQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgY29udGV4dElkKTsKKyAgICB2b2lkIHJlcXVlc3RT
dG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWlu
LCBjb25zdCBTdHJpbmcmIGZpcnN0UGFydHlEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFt
ZUlELCB1aW50NjRfdCBwYWdlSUQsIGJvb2wgcHJvbXB0RW5hYmxlZCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChTdG9yYWdlQWNjZXNzU3RhdHVzKT4mJik7CisgICAgdm9pZCByZXNldENhY2hlTWF4
QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgcmVzZXRQYXJhbWV0ZXJzVG9EZWZhdWx0VmFsdWVz
KFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQg
c2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChQQUw6OlNlc3Npb25JRCwgT3B0aW9u
YWw8V2FsbFRpbWU+IG1vZGlmaWVkU2luY2UsIGJvb2wgc2hvdWxkR3JhbmRmYXRoZXIsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBzY2hlZHVsZUNsZWFySW5NZW1vcnlB
bmRQZXJzaXN0ZW50KFBBTDo6U2Vzc2lvbklELCBPcHRpb25hbDxXYWxsVGltZT4gbW9kaWZpZWRT
aW5jZSwgU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOwogICAgIHZvaWQgc2NoZWR1bGVDb29raWVCbG9ja2luZ1VwZGF0ZShQQUw6OlNlc3Np
b25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNjaGVkdWxlU3Rh
dGlzdGljc0FuZERhdGFSZWNvcmRzUHJvY2Vzc2luZyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHN1Ym1pdFRlbGVtZXRyeShQQUw6OlNlc3Np
b25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lkIHNldENhY2hlTWF4
QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKFBBTDo6U2Vzc2lvbklELCBTZWNvbmRzLCB1aW50
NjRfdCBjb250ZXh0SWQpOworICAgIHZvaWQgc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRS
ZXNvdXJjZXMoUEFMOjpTZXNzaW9uSUQsIFNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7CiAgICAgdm9pZCBzZXRHcmFuZGZhdGhlcmluZ1RpbWUoUEFMOjpTZXNzaW9uSUQsIFNl
Y29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRMYXN0U2Vl
bihQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwgU2Vjb25kcywg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldE1pbmltdW1UaW1lQmV0
d2VlbkRhdGFSZWNvcmRzUmVtb3ZhbChQQUw6OlNlc3Npb25JRCwgU2Vjb25kcywgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDYyNTY1ODEyYWFlNjUwYTJh
MGU1NTQ0ZDdhNGRjYTZjMDRkYjk2NDMuLjVkMmFhNmQyY2MwMWZmZmRhYzdhYWE4OTM1ZDYxNjQx
MTdkNGMwNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChD
KSAyMDEyLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQg
KEMpIDIwMTItMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTg3LDM1ICs4NywzNSBAQCBtZXNzYWdlcyAtPiBOZXR3b3Jr
UHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElT
VElDUykKICAgICBDbGVhclByZXZhbGVudFJlc291cmNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgU3RyaW5nIHJlc291cmNlRG9tYWluKSAtPiAoKSBBc3luYwogICAgIENsZWFyVXNlckludGVy
YWN0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU3RyaW5nIHJlc291cmNlRG9tYWluKSAt
PiAoKSBBc3luYwotICAgIER1bXBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgdWludDY0X3QgY29udGV4dElkKQorICAgIER1bXBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKFN0cmluZyBkdW1wZWRTdGF0aXN0
aWNzKSBBc3luYwogICAgIFNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKGJvb2wgZW5h
YmxlZCkKLSAgICBVcGRhdGVQcmV2YWxlbnREb21haW5zVG9CbG9ja0Nvb2tpZXNGb3IoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBWZWN0b3I8U3RyaW5nPiBkb21haW5zVG9CbG9jaywgdWludDY0
X3QgY29udGV4dElkKQorICAgIFVwZGF0ZVByZXZhbGVudERvbWFpbnNUb0Jsb2NrQ29va2llc0Zv
cihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFZlY3RvcjxTdHJpbmc+IGRvbWFpbnNUb0Jsb2Nr
KSAtPiAoKSBBc3luYwogICAgIElzR3JhbmRmYXRoZXJlZChQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIFN0cmluZyB0YXJnZXRQcmltYXJ5RG9tYWluKSAtPiAoYm9vbCBpc0dyYW5kZmF0aGVyZWQp
IEFzeW5jCiAgICAgSXNQcmV2YWxlbnRSZXNvdXJjZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IFN0cmluZyB0YXJnZXRQcmltYXJ5RG9tYWluKSAtPiAoYm9vbCBpc1ByZXZhbGVudCkgQXN5bmMK
ICAgICBJc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0
cmluZyB0YXJnZXRQcmltYXJ5RG9tYWluKSAtPiAoYm9vbCBpc1ZlcnlQcmV2YWxlbnQpIEFzeW5j
Ci0gICAgU2V0QWdlQ2FwRm9yQ2xpZW50U2lkZUNvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBPcHRpb25hbDxTZWNvbmRzPiBzZWNvbmRzLCB1aW50NjRfdCBjb250ZXh0SWQpCisgICAg
U2V0QWdlQ2FwRm9yQ2xpZW50U2lkZUNvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBP
cHRpb25hbDxTZWNvbmRzPiBzZWNvbmRzKSAtPiAoKSBBc3luYwogICAgIFNldExhc3RTZWVuKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU3RyaW5nIHJlc291cmNlRG9tYWluLCBTZWNvbmRzIHNl
Y29uZHMpIC0+ICgpIEFzeW5jCiAgICAgU2V0UHJldmFsZW50UmVzb3VyY2UoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBTdHJpbmcgcmVzb3VyY2VEb21haW4pIC0+ICgpIEFzeW5jCiAgICAgU2V0
UHJldmFsZW50UmVzb3VyY2VGb3JEZWJ1Z01vZGUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBT
dHJpbmcgcmVzb3VyY2VEb21haW4pIC0+ICgpIEFzeW5jCiAgICAgSGFkVXNlckludGVyYWN0aW9u
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU3RyaW5nIHJlc291cmNlRG9tYWluKSAtPiAoYm9v
bCBoYWRVc2VySW50ZXJhY3Rpb24pIEFzeW5jCi0gICAgSGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1l
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU3RyaW5nIHJlc291cmNlRG9tYWluLCBTdHJpbmcg
Zmlyc3RQYXJ0eURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCB1aW50
NjRfdCBjb250ZXh0SWQpCi0gICAgSGFzU3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIFN0cmluZyByZXNvdXJjZURvbWFpbiwgU3RyaW5nIGZpcnN0UGFydHlEb21haW4sIE9w
dGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQpIC0+IChib29sIGhhZFVz
ZXJJbnRlcmFjdGlvbikgQXN5bmMKLSAgICBHZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcyhQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IGNvbnRleHRJZCkKLSAgICBHcmFudFN0b3Jh
Z2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTdHJpbmcgcmVzb3VyY2VEb21haW4s
IFN0cmluZyBmaXJzdFBhcnR5RG9tYWluLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgdWlu
dDY0X3QgcGFnZUlELCBib29sIHVzZXJXYXNQcm9tcHRlZCwgdWludDY0X3QgY29udGV4dElkKQor
ICAgIEhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0
cmluZyByZXNvdXJjZURvbWFpbiwgU3RyaW5nIGZpcnN0UGFydHlEb21haW4sIHVpbnQ2NF90IGZy
YW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCkgLT4gKGJvb2wgaGFzU3RvcmFnZUFjY2VzcykgQXN5bmMK
KyAgICBIYXNTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU3RyaW5nIHJl
c291cmNlRG9tYWluLCBTdHJpbmcgZmlyc3RQYXJ0eURvbWFpbiwgT3B0aW9uYWw8dWludDY0X3Q+
IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCkgLT4gKGJvb2wgaGFzU3RvcmFnZUFjY2VzcykgQXN5
bmMKKyAgICBHZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQpIC0+IChWZWN0b3I8U3RyaW5nPiBkb21haW5zKSBBc3luYworICAgIEdyYW50U3RvcmFnZUFj
Y2VzcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0cmluZyByZXNvdXJjZURvbWFpbiwgU3Ry
aW5nIGZpcnN0UGFydHlEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1aW50NjRf
dCBwYWdlSUQsIGJvb2wgdXNlcldhc1Byb21wdGVkKSAtPiAoYm9vbCBhY2Nlc3NHcmFudGVkKSBB
c3luYwogICAgIElzUmVnaXN0ZXJlZEFzUmVkaXJlY3RpbmdUbyhQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIFN0cmluZyByZWRpcmVjdGVkRnJvbSwgU3RyaW5nIHJlZGlyZWN0ZWRUbykgLT4gKGJv
b2wgaXNSZWRpcmVjdGluZ1RvKSBBc3luYwogICAgIElzUmVnaXN0ZXJlZEFzU3ViRnJhbWVVbmRl
cihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0cmluZyBzdWJmcmFtZSwgU3RyaW5nIHRvcEZy
YW1lKSAtPiAoYm9vbCBpc1N1YmZyYW1lVW5kZXIpIEFzeW5jCiAgICAgSXNSZWdpc3RlcmVkQXNT
dWJyZXNvdXJjZVVuZGVyKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU3RyaW5nIHN1YnJlc291
cmNlLCBTdHJpbmcgdG9wRnJhbWUpIC0+IChib29sIGlzU3VicmVzb3VyY2VVbmRlcikgQXN5bmMK
ICAgICBMb2dGcmFtZU5hdmlnYXRpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTdHJpbmcg
dGFyZ2V0UHJpbWFyeURvbWFpbiwgU3RyaW5nIG1haW5GcmFtZVByaW1hcnlEb21haW4sIFN0cmlu
ZyBzb3VyY2VQcmltYXJ5RG9tYWluLCBTdHJpbmcgdGFyZ2V0SG9zdCwgU3RyaW5nIG1haW5GcmFt
ZUhvc3QsIGJvb2wgaXNSZWRpcmVjdCwgYm9vbCBpc01haW5GcmFtZSkKICAgICBMb2dVc2VySW50
ZXJhY3Rpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTdHJpbmcgdGFyZ2V0UHJpbWFyeURv
bWFpbikgLT4gKCkgQXN5bmMKLSAgICBSZW1vdmVBbGxTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgdWludDY0X3QgY29udGV4dElkKQorICAgIFJlbW92ZUFsbFN0b3JhZ2VB
Y2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoKSBBc3luYwogICAgIFJlbW92ZVBy
ZXZhbGVudERvbWFpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBWZWN0b3I8U3RyaW5nPiBk
b21haW5zV2l0aEludGVyYWN0aW9uKQotICAgIFJlcXVlc3RTdG9yYWdlQWNjZXNzKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgU3RyaW5nIHJlc291cmNlRG9tYWluLCBTdHJpbmcgZmlyc3RQYXJ0
eURvbWFpbiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgYm9v
bCBwcm9tcHRFbmFibGVkLCB1aW50NjRfdCBjb250ZXh0SWQpCisgICAgUmVxdWVzdFN0b3JhZ2VB
Y2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTdHJpbmcgcmVzb3VyY2VEb21haW4sIFN0
cmluZyBmaXJzdFBhcnR5RG9tYWluLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgdWludDY0
X3QgcGFnZUlELCBib29sIHByb21wdEVuYWJsZWQpIC0+IChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpT
dG9yYWdlQWNjZXNzU3RhdHVzIHN0b3JhZ2VBY2Nlc3NTdGF0dXMpIEFzeW5jCiAgICAgUmVzZXRQ
YXJhbWV0ZXJzVG9EZWZhdWx0VmFsdWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKCkg
QXN5bmMKLSAgICBTY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgT3B0aW9uYWw8V2FsbFRpbWU+IG1vZGlmaWVkU2luY2UsIGJvb2wgc2hv
dWxkR3JhbmRmYXRoZXIpIC0+ICgpIEFzeW5jCisgICAgU2NoZWR1bGVDbGVhckluTWVtb3J5QW5k
UGVyc2lzdGVudChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvbmFsPFdhbGxUaW1lPiBt
b2RpZmllZFNpbmNlLCBlbnVtOmJvb2wgV2ViS2l0OjpTaG91bGRHcmFuZGZhdGhlclN0YXRpc3Rp
Y3Mgc2hvdWxkR3JhbmRmYXRoZXIpIC0+ICgpIEFzeW5jCiAgICAgU2NoZWR1bGVDb29raWVCbG9j
a2luZ1VwZGF0ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+ICgpIEFzeW5jCiAgICAgU2No
ZWR1bGVTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHNQcm9jZXNzaW5nKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCkgLT4gKCkgQXN5bmMKICAgICBTdWJtaXRUZWxlbWV0cnkoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklEKSAtPiAoKSBBc3luYwotICAgIFNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50
UmVzb3VyY2VzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU2Vjb25kcyBzZWNvbmRzLCB1aW50
NjRfdCBjb250ZXh0SWQpCisgICAgU2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJj
ZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTZWNvbmRzIHNlY29uZHMpIC0+ICgpIEFzeW5j
CiAgICAgU2V0R3JhbmRmYXRoZXJlZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0cmluZyBy
ZXNvdXJjZURvbWFpbiwgYm9vbCBpc0dyYW5kZmF0aGVyZWQpIC0+ICgpIEFzeW5jCiAgICAgU2V0
R3JhbmRmYXRoZXJpbmdUaW1lKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU2Vjb25kcyBzZWNv
bmRzKSAtPiAoKSBBc3luYwogICAgIFNldE1heFN0YXRpc3RpY3NFbnRyaWVzKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgdWludDY0X3QgbWF4aW11bUVudHJ5Q291bnQpIC0+ICgpIEFzeW5jCkBA
IC0xMzMsNyArMTMzLDcgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3MgTGVnYWN5UmVjZWl2
ZXIgewogICAgIFNldFRpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24oUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBTZWNvbmRzIHNlY29uZHMpIC0+ICgpIEFzeW5jCiAgICAgU2V0VG9wRnJhbWVVbmlx
dWVSZWRpcmVjdFRvKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU3RyaW5nIHRvcEZyYW1lSG9z
dE5hbWUsIFN0cmluZyBob3N0TmFtZVJlZGlyZWN0ZWRUbykgLT4gKCkgQXN5bmMKICAgICBTZXRU
b3BGcmFtZVVuaXF1ZVJlZGlyZWN0RnJvbShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0cmlu
ZyB0b3BGcmFtZUhvc3ROYW1lLCBTdHJpbmcgaG9zdE5hbWVSZWRpcmVjdGVkRnJvbSkgLT4gKCkg
QXN5bmMKLSAgICBSZXNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgY29udGV4dElkKQorICAgIFJlc2V0Q2FjaGVN
YXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAt
PiAoKSBBc3luYwogI2VuZGlmCiAKICAgICBTZXRTZXNzaW9uSXNDb250cm9sbGVkQnlBdXRvbWF0
aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgYm9vbCBjb250cm9sbGVkKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYu
Y3BwCmluZGV4IGJhMzMzYzlmNWZkMzVmZDgyMGViODU1ZTBmNTI1Mzc2YmUyZjRjMzEuLjI0Yjlk
OWY1MmM0MGQ1MDIwMzhhZDE5ZGI5YTE5NDg2YmEzYTZhNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcApAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOSw2
ICsyOSw3IEBACiAjaW5jbHVkZSAiQVBJQXJyYXkuaCIKICNpbmNsdWRlICJBUElXZWJzaXRlRGF0
YVN0b3JlLmgiCiAjaW5jbHVkZSAiTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5o
IgorI2luY2x1ZGUgIlNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljcy5oIgogI2luY2x1ZGUgIldL
QVBJQ2FzdC5oIgogI2luY2x1ZGUgIldLRGljdGlvbmFyeS5oIgogI2luY2x1ZGUgIldLTnVtYmVy
LmgiCkBAIC0zMTYsNiArMzE3LDggQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNz
VXBkYXRlQ29va2llQmxvY2tpbmcoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGEKICAgICBXZWJL
aXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2NoZWR1bGVDb29r
aWVCbG9ja2luZ1VwZGF0ZShbY29udGV4dCwgY29tcGxldGlvbkhhbmRsZXJdKCkgewogICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihjb250ZXh0KTsKICAgICB9KTsKKyNlbHNlCisgICAgY29tcGxl
dGlvbkhhbmRsZXIoY29udGV4dCk7CiAjZW5kaWYKIH0KIApAQCAtMzc4LDcgKzM4MSw3IEBAIHZv
aWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1BydW5lRW50cmllc0Rvd25UbyhXS1dl
YnNpdGVEYXRhU3RvcmVSZWYgZGF0CiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3ND
bGVhckluTWVtb3J5QW5kUGVyc2lzdGVudFN0b3JlKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRh
U3RvcmVSZWYsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NDbGVh
ckluTWVtb3J5QW5kUGVyc2lzdGVudFN0b3JlRnVuY3Rpb24gY2FsbGJhY2spCiB7CiAjaWYgRU5B
QkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3Rv
cmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lz
dGVudChTaG91bGRHcmFuZGZhdGhlcjo6WWVzLCBbY29udGV4dCwgY2FsbGJhY2tdKCkgeworICAg
IFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5zY2hlZHVs
ZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljczo6
WWVzLCBbY29udGV4dCwgY2FsbGJhY2tdKCkgewogICAgICAgICBjYWxsYmFjayhjb250ZXh0KTsK
ICAgICB9KTsKICNlbHNlCkBAIC0zODksOSArMzkyLDExIEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0
b3JlU3RhdGlzdGljc0NsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmUoV0tXZWJzaXRlRGF0
YVN0CiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NDbGVhckluTWVtb3J5QW5kUGVy
c2lzdGVudFN0b3JlTW9kaWZpZWRTaW5jZUhvdXJzKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRh
U3RvcmVSZWYsIHVuc2lnbmVkIGhvdXJzLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3Rv
cmVTdGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZU1vZGlmaWVkU2luY2VI
b3Vyc0Z1bmN0aW9uIGNhbGxiYWNrKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJ
U1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9y
ZSgpLnNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoV2FsbFRpbWU6Om5vdygpIC0g
U2Vjb25kczo6ZnJvbUhvdXJzKGhvdXJzKSwgU2hvdWxkR3JhbmRmYXRoZXI6OlllcywgW2NvbnRl
eHQsIGNhbGxiYWNrXSgpIHsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJz
aXRlRGF0YVN0b3JlKCkuc2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChXYWxsVGlt
ZTo6bm93KCkgLSBTZWNvbmRzOjpmcm9tSG91cnMoaG91cnMpLCBTaG91bGRHcmFuZGZhdGhlclN0
YXRpc3RpY3M6OlllcywgW2NvbnRleHQsIGNhbGxiYWNrXSgpIHsKICAgICAgICAgY2FsbGJhY2so
Y29udGV4dCk7CiAgICAgfSk7CisjZWxzZQorICAgIGNhbGxiYWNrKGNvbnRleHQpOwogI2VuZGlm
CiB9CiAKQEAgLTQwNSw5ICs0MTAsMTMgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0
aWNzQ2xlYXJUaHJvdWdoV2Vic2l0ZURhdGFSZW1vdmFsKFdLV2Vic2l0ZURhdGFTdG8KIAogdm9p
ZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzQ2FjaGVNYXhBZ2VDYXAoV0tXZWJzaXRl
RGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgZG91YmxlIHNlY29uZHMsIHZvaWQqIGNvbnRleHQs
IFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NDYWNoZU1heEFnZUNhcEZ1bmN0aW9uIGNh
bGxiYWNrKQogeworI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgV2Vi
S2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldENhY2hlTWF4
QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKFNlY29uZHMgeyBzZWNvbmRzIH0sIFtjb250ZXh0
LCBjYWxsYmFja10gewogICAgICAgICBjYWxsYmFjayhjb250ZXh0KTsKICAgICB9KTsKKyNlbHNl
CisgICAgY2FsbGJhY2soY29udGV4dCk7CisjZW5kaWYKIH0KIAogdm9pZCBXS1dlYnNpdGVEYXRh
U3RvcmVTdGF0aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZShXS1dlYnNpdGVEYXRhU3RvcmVS
ZWYgZGF0YVN0b3JlUmVmLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0
aWNzUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZUZ1bmN0aW9uIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAt
NDIxLDcgKzQzMCw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1Jlc2V0VG9D
b25zaXN0ZW50U3RhdGUoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhCiAgICAgc3RvcmUuY2xlYXJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzSW5XZWJQcm9jZXNzZXMoW2NhbGxiYWNrQWdncmVnYXRvciA9
IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CiAgICAgc3RvcmUucmVzZXRDYWNo
ZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhbY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2Fs
bGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKICAgICBzdG9yZS5yZXNldFBhcmFtZXRl
cnNUb0RlZmF1bHRWYWx1ZXMoW2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRv
ci5jb3B5UmVmKCldIHsgfSk7Ci0gICAgc3RvcmUuc2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVy
c2lzdGVudChTaG91bGRHcmFuZGZhdGhlcjo6Tm8sIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxs
YmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOworICAgIHN0b3JlLnNjaGVkdWxlQ2xlYXJJ
bk1lbW9yeUFuZFBlcnNpc3RlbnQoU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzOjpObywgW2Nh
bGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CiAj
ZWxzZQogICAgIFVOVVNFRF9QQVJBTShkYXRhU3RvcmVSZWYpOwogICAgIGNvbXBsZXRpb25IYW5k
bGVyKGNvbnRleHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KaW5kZXggZGQ1NjdkZTkzODhkMDA1NWMxMzQ5ZDlh
YzRiMWRjZWQxM2I2ZmM3OS4uMDE4OTBlNTU3MDg4NDc3NTMyMjY2NmMyNzA5OGRiZTAwMTkyZmJl
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0
ZURhdGFTdG9yZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJzaXRlRGF0YVN0b3JlLm1tCkBAIC00MjIsNiArNDIyLDggQEAgLSAodm9pZClfZ2V0QWxsU3Rv
cmFnZUFjY2Vzc0VudHJpZXNGb3I6KFdLV2ViVmlldyAqKXdlYlZpZXcgY29tcGxldGlvbkhhbmRs
ZXI6KHYKICAgICAgICAgICAgIGFwaURvbWFpbnMudW5jaGVja2VkQXBwZW5kKEFQSTo6U3RyaW5n
OjpjcmVhdGUoZG9tYWluKSk7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHdyYXBwZXIoQVBJ
OjpBcnJheTo6Y3JlYXRlKFdURk1vdmUoYXBpRG9tYWlucykpKSk7CiAgICAgfSk7CisjZWxzZQor
ICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5k
ZXggY2IwNjJmNWM4MWMzOTZlZjc1YjFkZDYxMGQ0NDk0NmEwMTBhMTRiNi4uYWNhYThiNTY4NTBh
ZDRkZTMwNWNkNmVkYjJjMjZiZDQyMDk0ZmI3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCkBAIC0zNyw2ICsz
Nyw4IEBACiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKICNp
bmNsdWRlICJOZXR3b3JrUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiU2FuZGJveEV4dGVu
c2lvbi5oIgorI2luY2x1ZGUgIlNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljcy5oIgorI2luY2x1
ZGUgIlN0b3JhZ2VBY2Nlc3NTdGF0dXMuaCIKICNpbmNsdWRlICJXZWJDb21waWxlZENvbnRlbnRS
dWxlTGlzdC5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgogI2luY2x1ZGUgIldlYlByb2Nl
c3NNZXNzYWdlcy5oIgpAQCAtMjM0LDI2ICsyMzYsNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJv
eHk6OmNsZWFyQ2FsbGJhY2tTdGF0ZXMoKQogCiAgICAgd2hpbGUgKCFtX3BlbmRpbmdEZWxldGVX
ZWJzaXRlRGF0YUZvck9yaWdpbnNDYWxsYmFja3MuaXNFbXB0eSgpKQogICAgICAgICBtX3BlbmRp
bmdEZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnNDYWxsYmFja3MudGFrZShtX3BlbmRpbmdEZWxl
dGVXZWJzaXRlRGF0YUZvck9yaWdpbnNDYWxsYmFja3MuYmVnaW4oKS0+a2V5KSgpOwotCi0jaWYg
RU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICB3aGlsZSAoIW1fc2NoZWR1bGVT
dGF0aXN0aWNzUHJvY2Vzc2luZ0NhbGxiYWNrTWFwLmlzRW1wdHkoKSkKLSAgICAgICAgbV9zY2hl
ZHVsZVN0YXRpc3RpY3NQcm9jZXNzaW5nQ2FsbGJhY2tNYXAudGFrZShtX3NjaGVkdWxlU3RhdGlz
dGljc1Byb2Nlc3NpbmdDYWxsYmFja01hcC5iZWdpbigpLT5rZXkpKCk7Ci0KLSAgICB3aGlsZSAo
IW1fc3RvcmFnZUFjY2Vzc1Jlc3BvbnNlQ2FsbGJhY2tNYXAuaXNFbXB0eSgpKQotICAgICAgICBt
X3N0b3JhZ2VBY2Nlc3NSZXNwb25zZUNhbGxiYWNrTWFwLnRha2UobV9zdG9yYWdlQWNjZXNzUmVz
cG9uc2VDYWxsYmFja01hcC5iZWdpbigpLT5rZXkpKGZhbHNlKTsKLSAgICAKLSAgICB3aGlsZSAo
IW1fc3RvcmFnZUFjY2Vzc1JlcXVlc3RSZXNwb25zZUNhbGxiYWNrTWFwLmlzRW1wdHkoKSkKLSAg
ICAgICAgbV9zdG9yYWdlQWNjZXNzUmVxdWVzdFJlc3BvbnNlQ2FsbGJhY2tNYXAudGFrZShtX3N0
b3JhZ2VBY2Nlc3NSZXF1ZXN0UmVzcG9uc2VDYWxsYmFja01hcC5iZWdpbigpLT5rZXkpKFN0b3Jh
Z2VBY2Nlc3NTdGF0dXM6OkNhbm5vdFJlcXVlc3RBY2Nlc3MpOwotCi0gICAgd2hpbGUgKCFtX3Jl
bW92ZUFsbFN0b3JhZ2VBY2Nlc3NDYWxsYmFja01hcC5pc0VtcHR5KCkpCi0gICAgICAgIG1fcmVt
b3ZlQWxsU3RvcmFnZUFjY2Vzc0NhbGxiYWNrTWFwLnRha2UobV9yZW1vdmVBbGxTdG9yYWdlQWNj
ZXNzQ2FsbGJhY2tNYXAuYmVnaW4oKS0+a2V5KSgpOwotCi0gICAgd2hpbGUgKCFtX2FsbFN0b3Jh
Z2VBY2Nlc3NFbnRyaWVzQ2FsbGJhY2tNYXAuaXNFbXB0eSgpKQotICAgICAgICBtX2FsbFN0b3Jh
Z2VBY2Nlc3NFbnRyaWVzQ2FsbGJhY2tNYXAudGFrZShtX2FsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVz
Q2FsbGJhY2tNYXAuYmVnaW4oKS0+a2V5KSh7IH0pOwotCi0gICAgd2hpbGUgKCFtX2R1bXBTdGF0
aXN0aWNzQ2FsbGJhY2tNYXAuaXNFbXB0eSgpKQotICAgICAgICBtX2R1bXBTdGF0aXN0aWNzQ2Fs
bGJhY2tNYXAudGFrZShtX2R1bXBTdGF0aXN0aWNzQ2FsbGJhY2tNYXAuYmVnaW4oKS0+a2V5KSh7
IH0pOwotI2VuZGlmCiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkUmVjZWl2ZU1l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIp
CkBAIC0yOTAsMTYgKzI3Miw2IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkQ2xvc2Uo
SVBDOjpDb25uZWN0aW9uJikKICAgICBtX3N5bmNBbGxDb29raWVzVG9rZW4gPSBudWxscHRyOwog
ICAgIG1fc3luY0FsbENvb2tpZXNDb3VudGVyID0gMDsKIAotI2lmIEVOQUJMRShSRVNPVVJDRV9M
T0FEX1NUQVRJU1RJQ1MpCi0gICAgZm9yIChhdXRvJiBjYWxsYmFjayA6IG1fcmVtb3ZlQWxsU3Rv
cmFnZUFjY2Vzc0NhbGxiYWNrTWFwLnZhbHVlcygpKQotICAgICAgICBjYWxsYmFjaygpOwotICAg
IG1fcmVtb3ZlQWxsU3RvcmFnZUFjY2Vzc0NhbGxiYWNrTWFwLmNsZWFyKCk7Ci0KLSAgICBmb3Ig
KGF1dG8mIGNhbGxiYWNrIDogbV9zY2hlZHVsZVN0YXRpc3RpY3NQcm9jZXNzaW5nQ2FsbGJhY2tN
YXAudmFsdWVzKCkpCi0gICAgICAgIGNhbGxiYWNrKCk7Ci0gICAgbV9zY2hlZHVsZVN0YXRpc3Rp
Y3NQcm9jZXNzaW5nQ2FsbGJhY2tNYXAuY2xlYXIoKTsKLSNlbmRpZgotCiAgICAgLy8gVGhpcyB3
aWxsIGNhdXNlIHVzIHRvIGJlIGRlbGV0ZWQuCiAgICAgbmV0d29ya1Byb2Nlc3NDcmFzaGVkKCk7
CiB9CkBAIC00MjUsMjQgKzM5NywxNCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmxvZ0ds
b2JhbERpYWdub3N0aWNNZXNzYWdlV2l0aFZhbHVlKGNvbnN0IFN0cmluZyYgbWVzcwogfQogCiAj
aWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLXZvaWQgTmV0d29ya1Byb2Nlc3NQ
cm94eTo6ZHVtcFJlc291cmNlTG9hZFN0YXRpc3RpY3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkdW1wUmVzb3VyY2VMb2FkU3RhdGlzdGlj
cyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5n
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIWNhblNlbmRNZXNzYWdlKCkpIHsK
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
ICAgICAKLSAgICBhdXRvIGNhbGxiYWNrSWQgPSBnZW5lcmF0ZUNhbGxiYWNrSUQoKTsKLSAgICBh
dXRvIGFkZFJlc3VsdCA9IG1fZHVtcFN0YXRpc3RpY3NDYWxsYmFja01hcC5hZGQoY2FsbGJhY2tJ
ZCwgW3Byb3RlY3RlZFByb2Nlc3NQb29sID0gbWFrZVJlZihtX3Byb2Nlc3NQb29sKSwgdG9rZW4g
PSB0aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpLCBjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShjb25zdCBTdHJpbmcmIGR1bXBlZFN0YXRp
c3RpY3MpIG11dGFibGUgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihkdW1wZWRTdGF0aXN0
aWNzKTsKLSAgICB9KTsKLSAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0Lmlz
TmV3RW50cnkpOwotICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpEdW1wUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcyhzZXNzaW9uSUQsIGNhbGxiYWNrSWQpLCAwKTsKLX0KLQotdm9pZCBO
ZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWREdW1wUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhTdHJpbmcg
ZHVtcGVkU3RhdGlzdGljcywgdWludDY0X3QgY2FsbGJhY2tJZCkKLXsKLSAgICBtX2R1bXBTdGF0
aXN0aWNzQ2FsbGJhY2tNYXAudGFrZShjYWxsYmFja0lkKShkdW1wZWRTdGF0aXN0aWNzKTsKKyAg
ICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpEdW1wUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcyhzZXNzaW9uSUQpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6dXBkYXRlUHJldmFsZW50RG9tYWluc1Rv
QmxvY2tDb29raWVzRm9yKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFN0
cmluZz4mIGRvbWFpbnNUb0Jsb2NrLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCkBAIC00NTEsMTggKzQxMyw4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94
eTo6dXBkYXRlUHJldmFsZW50RG9tYWluc1RvQmxvY2tDb29raWVzRm9yKFBBTDo6U2Vzc2lvbklE
CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0g
ICAgCi0gICAgYXV0byBjYWxsYmFja0lkID0gZ2VuZXJhdGVDYWxsYmFja0lEKCk7Ci0gICAgYXV0
byBhZGRSZXN1bHQgPSBtX3NjaGVkdWxlU3RhdGlzdGljc1Byb2Nlc3NpbmdDYWxsYmFja01hcC5h
ZGQoY2FsbGJhY2tJZCwgW3Byb3RlY3RlZFByb2Nlc3NQb29sID0gbWFrZVJlZihtX3Byb2Nlc3NQ
b29sKSwgdG9rZW4gPSB0aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpLCBjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewot
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwotICAgIH0pOwotICAgIEFTU0VSVF9VTlVTRUQo
YWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7Ci0gICAgc2VuZChNZXNzYWdlczo6TmV0
d29ya1Byb2Nlc3M6OlVwZGF0ZVByZXZhbGVudERvbWFpbnNUb0Jsb2NrQ29va2llc0ZvcihzZXNz
aW9uSUQsIGRvbWFpbnNUb0Jsb2NrLCBjYWxsYmFja0lkKSwgMCk7Ci19CiAKLXZvaWQgTmV0d29y
a1Byb2Nlc3NQcm94eTo6ZGlkVXBkYXRlQmxvY2tDb29raWVzKHVpbnQ2NF90IGNhbGxiYWNrSWQp
Ci17Ci0gICAgbV9zY2hlZHVsZVN0YXRpc3RpY3NQcm9jZXNzaW5nQ2FsbGJhY2tNYXAudGFrZShj
YWxsYmFja0lkKSgpOworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1By
b2Nlc3M6OlVwZGF0ZVByZXZhbGVudERvbWFpbnNUb0Jsb2NrQ29va2llc0ZvcihzZXNzaW9uSUQs
IGRvbWFpbnNUb0Jsb2NrKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCiB2b2lk
IE5ldHdvcmtQcm9jZXNzUHJveHk6OmlzUHJldmFsZW50UmVzb3VyY2UoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtNTQ1LDE1ICs0OTcsMTQgQEAg
dm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzY2hlZHVsZUNvb2tpZUJsb2NraW5nVXBkYXRlKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwKICAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6
Ok5ldHdvcmtQcm9jZXNzOjpTY2hlZHVsZUNvb2tpZUJsb2NraW5nVXBkYXRlKHNlc3Npb25JRCks
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzc1By
b3h5OjpzY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgT3B0aW9uYWw8V2FsbFRpbWU+IG1vZGlmaWVkU2luY2UsIFNob3VsZEdyYW5kZmF0
aGVyIHNob3VsZEdyYW5kZmF0aGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnNjaGVkdWxlQ2xlYXJJbk1l
bW9yeUFuZFBlcnNpc3RlbnQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25hbDxXYWxs
VGltZT4gbW9kaWZpZWRTaW5jZSwgU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzIHNob3VsZEdy
YW5kZmF0aGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7CiAgICAgaWYgKCFjYW5TZW5kTWVzc2FnZSgpKSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBib29sIHNob3VsZEdyYW5kZmF0
aGVyQm9vbCA9IHNob3VsZEdyYW5kZmF0aGVyID09IFNob3VsZEdyYW5kZmF0aGVyOjpZZXM7Ci0g
ICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6U2NoZWR1bGVD
bGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChzZXNzaW9uSUQsIG1vZGlmaWVkU2luY2UsIHNob3Vs
ZEdyYW5kZmF0aGVyQm9vbCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBzZW5k
V2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpTY2hlZHVsZUNsZWFySW5N
ZW1vcnlBbmRQZXJzaXN0ZW50KHNlc3Npb25JRCwgbW9kaWZpZWRTaW5jZSwgc2hvdWxkR3JhbmRm
YXRoZXIpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgTmV0d29ya1By
b2Nlc3NQcm94eTo6c2NoZWR1bGVTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHNQcm9jZXNzaW5nKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQpAQCAtNjAzLDE3ICs1NTQsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJv
eHk6OnNldEFnZUNhcEZvckNsaWVudFNpZGVDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RAogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIGF1dG8gY2FsbGJhY2tJZCA9IGdl
bmVyYXRlQ2FsbGJhY2tJRCgpOwotICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9zY2hlZHVsZVN0YXRp
c3RpY3NQcm9jZXNzaW5nQ2FsbGJhY2tNYXAuYWRkKGNhbGxiYWNrSWQsIFtwcm90ZWN0ZWRQcm9j
ZXNzUG9vbCA9IG1ha2VSZWYobV9wcm9jZXNzUG9vbCksIHRva2VuID0gdGhyb3R0bGVyKCkuYmFj
a2dyb3VuZEFjdGl2aXR5VG9rZW4oKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsK
LSAgICB9KTsKLSAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50
cnkpOwotICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpTZXRBZ2VDYXBGb3JDbGll
bnRTaWRlQ29va2llcyhzZXNzaW9uSUQsIHNlY29uZHMsIGNhbGxiYWNrSWQpLCAwKTsKLX0KLQot
dm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRTZXRBZ2VDYXBGb3JDbGllbnRTaWRlQ29va2ll
cyh1aW50NjRfdCBjYWxsYmFja0lkKQotewotICAgIG1fc2NoZWR1bGVTdGF0aXN0aWNzUHJvY2Vz
c2luZ0NhbGxiYWNrTWFwLnRha2UoY2FsbGJhY2tJZCkoKTsKKyAgICBzZW5kV2l0aEFzeW5jUmVw
bHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpTZXRBZ2VDYXBGb3JDbGllbnRTaWRlQ29va2ll
cyhzZXNzaW9uSUQsIHNlY29uZHMpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAK
IHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0VGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbihQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFNlY29uZHMgc2Vjb25kcywgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtNjI2LDExICs1NjcsNiBAQCB2b2lk
IE5ldHdvcmtQcm9jZXNzUHJveHk6OnNldFRpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24oUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELAogICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0
d29ya1Byb2Nlc3M6OlNldFRpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24oc2Vzc2lvbklELCBzZWNv
bmRzKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIE5ldHdvcmtQcm9j
ZXNzUHJveHk6OmRpZFVwZGF0ZVJ1bnRpbWVTZXR0aW5ncyh1aW50NjRfdCBjYWxsYmFja0lkKQot
ewotICAgIG1fdXBkYXRlUnVudGltZVNldHRpbmdzQ2FsbGJhY2tNYXAudGFrZShjYWxsYmFja0lk
KSgpOwotfQotCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnNldE5vdGlmeVBhZ2VzV2hlblRl
bGVtZXRyeVdhc0NhcHR1cmVkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgYm9vbCB2YWx1ZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlm
ICghY2FuU2VuZE1lc3NhZ2UoKSkgewpAQCAtNzYxLDE3ICs2OTcsMTQgQEAgdm9pZCBOZXR3b3Jr
UHJvY2Vzc1Byb3h5OjpzZXRHcmFuZGZhdGhlcmVkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
Y29uc3QgU3RyaW4KICAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9j
ZXNzOjpTZXRHcmFuZGZhdGhlcmVkKHNlc3Npb25JRCwgcmVzb3VyY2VEb21haW4sIGlzR3JhbmRm
YXRoZXJlZCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBOZXR3b3Jr
UHJvY2Vzc1Byb3h5OjpoYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWUoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBjb25zdCBTdHJpbmcmIGZpcnN0
UGFydHlEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgV1RGOjpDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNrKQordm9pZCBOZXR3b3JrUHJvY2Vz
c1Byb3h5OjpoYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBjb25zdCBTdHJpbmcmIGZpcnN0UGFydHlE
b21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIWNhblNlbmRN
ZXNzYWdlKCkpIHsKLSAgICAgICAgY2FsbGJhY2soZmFsc2UpOworICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihmYWxzZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIGNvbnRl
eHRJZCA9IGdlbmVyYXRlQ2FsbGJhY2tJRCgpOwotICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9zdG9y
YWdlQWNjZXNzUmVzcG9uc2VDYWxsYmFja01hcC5hZGQoY29udGV4dElkLCBXVEZNb3ZlKGNhbGxi
YWNrKSk7Ci0gICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5
KTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6SGFzU3RvcmFnZUFjY2Vzc0Zv
ckZyYW1lKHNlc3Npb25JRCwgcmVzb3VyY2VEb21haW4sIGZpcnN0UGFydHlEb21haW4sIGZyYW1l
SUQsIHBhZ2VJRCwgY29udGV4dElkKSwgMCk7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3Nh
Z2VzOjpOZXR3b3JrUHJvY2Vzczo6SGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKHNlc3Npb25JRCwg
cmVzb3VyY2VEb21haW4sIGZpcnN0UGFydHlEb21haW4sIGZyYW1lSUQsIHBhZ2VJRCksIFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpo
YXNTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBy
ZXNvdXJjZURvbWFpbiwgY29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9tYWluLCBPcHRpb25hbDx1
aW50NjRfdD4gZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtNzkxLDMzICs3MjQsMTcgQEAgdm9pZCBO
ZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIGNvbnN0IFMKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gY29u
dGV4dElkID0gZ2VuZXJhdGVDYWxsYmFja0lEKCk7Ci0gICAgYXV0byBhZGRSZXN1bHQgPSBtX3N0
b3JhZ2VBY2Nlc3NSZXF1ZXN0UmVzcG9uc2VDYWxsYmFja01hcC5hZGQoY29udGV4dElkLCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci0gICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFk
ZFJlc3VsdC5pc05ld0VudHJ5KTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6
UmVxdWVzdFN0b3JhZ2VBY2Nlc3Moc2Vzc2lvbklELCByZXNvdXJjZURvbWFpbiwgZmlyc3RQYXJ0
eURvbWFpbiwgZnJhbWVJRCwgcGFnZUlELCBwcm9tcHRFbmFibGVkLCBjb250ZXh0SWQpLCAwKTsK
KyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpSZXF1ZXN0
U3RvcmFnZUFjY2VzcyhzZXNzaW9uSUQsIHJlc291cmNlRG9tYWluLCBmaXJzdFBhcnR5RG9tYWlu
LCBmcmFtZUlELCBwYWdlSUQsIHByb21wdEVuYWJsZWQpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6Z3JhbnRTdG9yYWdlQWNjZXNz
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwg
Y29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9tYWluLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJ
RCwgdWludDY0X3QgcGFnZUlELCBib29sIHVzZXJXYXNQcm9tcHRlZCwgV1RGOjpDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3JrUHJv
Y2Vzc1Byb3h5OjpncmFudFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBj
b25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBjb25zdCBTdHJpbmcmIGZpcnN0UGFydHlEb21h
aW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIGJvb2wgdXNl
cldhc1Byb21wdGVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIGlmICghY2FuU2VuZE1lc3NhZ2UoKSkgewogICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihmYWxzZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIGNv
bnRleHRJZCA9IGdlbmVyYXRlQ2FsbGJhY2tJRCgpOwotICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9z
dG9yYWdlQWNjZXNzUmVzcG9uc2VDYWxsYmFja01hcC5hZGQoY29udGV4dElkLCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7Ci0gICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3Vs
dC5pc05ld0VudHJ5KTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6R3JhbnRT
dG9yYWdlQWNjZXNzKHNlc3Npb25JRCwgcmVzb3VyY2VEb21haW4sIGZpcnN0UGFydHlEb21haW4s
IGZyYW1lSUQudmFsdWUoKSwgcGFnZUlELCB1c2VyV2FzUHJvbXB0ZWQsIGNvbnRleHRJZCksIDAp
OwotfQotCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnN0b3JhZ2VBY2Nlc3NSZXF1ZXN0UmVz
dWx0KHVuc2lnbmVkIHN0YXR1cywgdWludDY0X3QgY29udGV4dElkKQotewotICAgIG1fc3RvcmFn
ZUFjY2Vzc1JlcXVlc3RSZXNwb25zZUNhbGxiYWNrTWFwLnRha2UoY29udGV4dElkKShzdGF0aWNf
Y2FzdDxTdG9yYWdlQWNjZXNzU3RhdHVzPihzdGF0dXMpKTsKLX0KLQotdm9pZCBOZXR3b3JrUHJv
Y2Vzc1Byb3h5OjpzdG9yYWdlQWNjZXNzT3BlcmF0aW9uUmVzdWx0KGJvb2wgd2FzR3JhbnRlZCwg
dWludDY0X3QgY29udGV4dElkKQotewotICAgIG1fc3RvcmFnZUFjY2Vzc1Jlc3BvbnNlQ2FsbGJh
Y2tNYXAudGFrZShjb250ZXh0SWQpKHdhc0dyYW50ZWQpOworICAgIHNlbmRXaXRoQXN5bmNSZXBs
eShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkdyYW50U3RvcmFnZUFjY2VzcyhzZXNzaW9uSUQs
IHJlc291cmNlRG9tYWluLCBmaXJzdFBhcnR5RG9tYWluLCBmcmFtZUlELnZhbHVlKCksIHBhZ2VJ
RCwgdXNlcldhc1Byb21wdGVkKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCiB2
b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnJlbW92ZUFsbFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCkBAIC04MjcsMzQgKzc0NCwxNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnJl
bW92ZUFsbFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbAogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBjb250ZXh0SWQgPSBnZW5lcmF0ZUNhbGxi
YWNrSUQoKTsKLSAgICBhdXRvIGFkZFJlc3VsdCA9IG1fcmVtb3ZlQWxsU3RvcmFnZUFjY2Vzc0Nh
bGxiYWNrTWFwLmFkZChjb250ZXh0SWQsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLSAg
ICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOwotICAgIHNl
bmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpSZW1vdmVBbGxTdG9yYWdlQWNjZXNzKHNlc3Np
b25JRCwgY29udGV4dElkKSwgMCk7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpO
ZXR3b3JrUHJvY2Vzczo6UmVtb3ZlQWxsU3RvcmFnZUFjY2VzcyhzZXNzaW9uSUQpLCBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlk
UmVtb3ZlQWxsU3RvcmFnZUFjY2Vzcyh1aW50NjRfdCBjb250ZXh0SWQpCi17Ci0gICAgbV9yZW1v
dmVBbGxTdG9yYWdlQWNjZXNzQ2FsbGJhY2tNYXAudGFrZShjb250ZXh0SWQpKCk7Ci19Ci0KLXZv
aWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6Z2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+
JiYgZG9tYWlucyk+JiYgY2FsbGJhY2spCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmdldEFs
bFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiBkb21haW5zKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKICAgICBpZiAoIWNhblNlbmRNZXNzYWdlKCkpIHsKLSAgICAgICAgY2FsbGJhY2soeyB9
KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIGF1dG8gY29udGV4dElkID0gZ2VuZXJhdGVDYWxsYmFja0lEKCk7Ci0gICAgYXV0
byBhZGRSZXN1bHQgPSBtX2FsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzQ2FsbGJhY2tNYXAuYWRkKGNv
bnRleHRJZCwgV1RGTW92ZShjYWxsYmFjaykpOwotICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0
LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7Ci0gICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nl
c3M6OkdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKHNlc3Npb25JRCwgY29udGV4dElkKSwgMCk7
Ci19Ci0KLXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6YWxsU3RvcmFnZUFjY2Vzc0VudHJpZXNS
ZXN1bHQoVmVjdG9yPFN0cmluZz4mJiBkb21haW5zLCB1aW50NjRfdCBjb250ZXh0SWQpCi17Ci0g
ICAgYXV0byBjYWxsYmFjayA9IG1fYWxsU3RvcmFnZUFjY2Vzc0VudHJpZXNDYWxsYmFja01hcC50
YWtlKGNvbnRleHRJZCk7Ci0gICAgY2FsbGJhY2soV1RGTW92ZShkb21haW5zKSk7CisgICAgc2Vu
ZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6R2V0QWxsU3RvcmFnZUFj
Y2Vzc0VudHJpZXMoc2Vzc2lvbklEKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQog
CiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50
UmVzb3VyY2VzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU2Vjb25kcyBzZWNvbmRzLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC04NjMsMTYgKzc2
Myw4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2
YWxlbnRSZXNvdXJjZXMoUEFMOjpTZXNzaW9uSUQKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKLSAgICBhdXRvIGNvbnRleHRJZCA9IGdl
bmVyYXRlQ2FsbGJhY2tJRCgpOwotICAgIGF1dG8gYWRkUmVzdWx0ID0gbV91cGRhdGVSdW50aW1l
U2V0dGluZ3NDYWxsYmFja01hcC5hZGQoY29udGV4dElkLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7Ci0gICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5
KTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6U2V0Q2FjaGVNYXhBZ2VDYXBG
b3JQcmV2YWxlbnRSZXNvdXJjZXMoc2Vzc2lvbklELCBzZWNvbmRzLCBjb250ZXh0SWQpLCAwKTsK
LX0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRTZXRDYWNoZU1heEFnZUNhcEZvclBy
ZXZhbGVudFJlc291cmNlcyh1aW50NjRfdCBjb250ZXh0SWQpCi17Ci0gICAgbV91cGRhdGVSdW50
aW1lU2V0dGluZ3NDYWxsYmFja01hcC50YWtlKGNvbnRleHRJZCkoKTsKKyAgICBzZW5kV2l0aEFz
eW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpTZXRDYWNoZU1heEFnZUNhcEZvclBy
ZXZhbGVudFJlc291cmNlcyhzZXNzaW9uSUQsIHNlY29uZHMpLCBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0Q2FjaGVNYXhBZ2VD
YXAoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTZWNvbmRzIHNlY29uZHMsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTg4MiwxMCArNzc0LDcgQEAg
dm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRDYWNoZU1heEFnZUNhcChQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIFNlY29uZHMgc2UKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAg
ICBhdXRvIGNvbnRleHRJZCA9IGdlbmVyYXRlQ2FsbGJhY2tJRCgpOwotICAgIGF1dG8gYWRkUmVz
dWx0ID0gbV91cGRhdGVSdW50aW1lU2V0dGluZ3NDYWxsYmFja01hcC5hZGQoY29udGV4dElkLCBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci0gICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQs
IGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vz
czo6U2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoc2Vzc2lvbklELCBzZWNv
bmRzLCBjb250ZXh0SWQpLCAwKTsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5l
dHdvcmtQcm9jZXNzOjpTZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhzZXNz
aW9uSUQsIHNlY29uZHMpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQg
TmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0R3JhbmRmYXRoZXJpbmdUaW1lKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgU2Vjb25kcyBzZWNvbmRzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCkBAIC05NTUsMTAgKzg0NCw3IEBAIHZvaWQgTmV0d29ya1Byb2Nl
c3NQcm94eTo6cmVzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhQQUw6OlNl
c3Npb25JCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgYXV0byBjb250ZXh0SWQg
PSBnZW5lcmF0ZUNhbGxiYWNrSUQoKTsKLSAgICBhdXRvIGFkZFJlc3VsdCA9IG1fdXBkYXRlUnVu
dGltZVNldHRpbmdzQ2FsbGJhY2tNYXAuYWRkKGNvbnRleHRJZCwgV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOwotICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdF
bnRyeSk7Ci0gICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlJlc2V0Q2FjaGVNYXhB
Z2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoc2Vzc2lvbklELCBjb250ZXh0SWQpLCAwKTsKKyAg
ICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpSZXNldENhY2hl
TWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKHNlc3Npb25JRCksIFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZXNldFBhcmFt
ZXRlcnNUb0RlZmF1bHRWYWx1ZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC05ODEsMTMgKzg2NywxMiBA
QCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnN1Ym1pdFRlbGVtZXRyeShQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYQogICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdl
czo6TmV0d29ya1Byb2Nlc3M6OlN1Ym1pdFRlbGVtZXRyeShzZXNzaW9uSUQpLCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2NoZWR1
bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGJv
b2wgc2hvdWxkR3JhbmRmYXRoZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2NoZWR1bGVDbGVhckluTWVt
b3J5QW5kUGVyc2lzdGVudChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFNob3VsZEdyYW5kZmF0
aGVyU3RhdGlzdGljcyBzaG91bGRHcmFuZGZhdGhlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICghY2FuU2VuZE1lc3NhZ2UoKSkgewog
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAg
IAogCiAgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6U2No
ZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChzZXNzaW9uSUQsIHsgfSwgc2hvdWxkR3Jh
bmRmYXRoZXIpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCmluZGV4
IGUzNTFhMDZiNzVhZDc4ZTUwOTk1ZmExZjhmZDhiYmEzOGViYjBhOWUuLjMzNTM4MGIxMGE1YzRl
ZDJhNzdkMTkzYTI5ZTI5MWJjMmFlNDc1ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTU3LDcgKzU3LDggQEAgbmFt
ZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBEb3dubG9hZFByb3h5OwogY2xhc3MgRG93bmxvYWRQcm94
eU1hcDsKIGNsYXNzIFdlYlByb2Nlc3NQb29sOwotZW51bSBjbGFzcyBTdG9yYWdlQWNjZXNzU3Rh
dHVzIDogdW5zaWduZWQ7CitlbnVtIGNsYXNzIFNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljcyA6
IGJvb2w7CitlbnVtIGNsYXNzIFN0b3JhZ2VBY2Nlc3NTdGF0dXMgOiB1aW50OF90OwogZW51bSBj
bGFzcyBXZWJzaXRlRGF0YUZldGNoT3B0aW9uOwogZW51bSBjbGFzcyBXZWJzaXRlRGF0YVR5cGU7
CiBzdHJ1Y3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM7CkBAIC04MCw3ICs4MSw3
IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIHZv
aWQgY2xlYXJQcmV2YWxlbnRSZXNvdXJjZShQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBy
ZXNvdXJjZURvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGNs
ZWFyVXNlckludGVyYWN0aW9uKFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHJlc291cmNl
RG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgZHVtcFJlc291
cmNlTG9hZFN0YXRpc3RpY3MoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgU3RyaW5nJik+JiYpOworICAgIHZvaWQgZHVtcFJlc291cmNlTG9hZFN0YXRpc3RpY3Mo
UEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nKT4mJik7CiAgICAg
dm9pZCB1cGRhdGVQcmV2YWxlbnREb21haW5zVG9CbG9ja0Nvb2tpZXNGb3IoUEFMOjpTZXNzaW9u
SUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9CbG9jaywgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGhhc0hhZFVzZXJJbnRlcmFjdGlvbihQQUw6OlNlc3Np
b25JRCwgY29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sKT4mJik7CiAgICAgdm9pZCBpc0dyYW5kZmF0aGVyZWQoUEFMOjpTZXNzaW9uSUQsIGNv
bnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+
JiYpOwpAQCAtMTA3LDE1ICsxMDgsMTUgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UHJldmFsZW50
UmVzb3VyY2UoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRQcmV2YWxlbnRSZXNvdXJj
ZUZvckRlYnVnTW9kZShQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFp
biwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldFZlcnlQcmV2YWxl
bnRSZXNvdXJjZShQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3NG
b3JGcmFtZShQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwgY29u
c3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBw
YWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY2FsbGJhY2spOwotICAgIHZv
aWQgZ2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJiBkb21haW5zKT4mJik7Ci0gICAgdm9pZCBncmFu
dFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21h
aW4sIGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwgT3B0aW9uYWw8dWludDY0X3Q+IGZy
YW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgYm9vbCB1c2VyV2FzUHJvbXB0ZWQsIFdURjo6Q29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBoYXNTdG9yYWdlQWNjZXNzRm9y
RnJhbWUoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIGNvbnN0
IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFn
ZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lkIGdldEFsbFN0
b3JhZ2VBY2Nlc3NFbnRyaWVzKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFZlY3RvcjxTdHJpbmc+IGRvbWFpbnMpPiYmKTsKKyAgICB2b2lkIGdyYW50U3RvcmFnZUFjY2Vz
cyhQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwgY29uc3QgU3Ry
aW5nJiBmaXJzdFBhcnR5RG9tYWluLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgdWludDY0
X3QgcGFnZUlELCBib29sIHVzZXJXYXNQcm9tcHRlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4mJik7CiAgICAgdm9pZCBoYXNTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklELCBjb25z
dCBTdHJpbmcmIHN1YkZyYW1lSG9zdCwgY29uc3QgU3RyaW5nJiB0b3BGcmFtZUhvc3QsIE9wdGlv
bmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYpOwogICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNz
aW9uSUQsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFN0cmluZyYgZmlyc3RQ
YXJ0eURvbWFpbiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwg
Ym9vbCBwcm9tcHRFbmFibGVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NT
dGF0dXMpPiYmKTsKICAgICB2b2lkIHJlc2V0UGFyYW1ldGVyc1RvRGVmYXVsdFZhbHVlcyhQQUw6
OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHJlbW92
ZUFsbFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7Ci0gICAgdm9pZCBzY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFBBTDo6
U2Vzc2lvbklELCBib29sIHNob3VsZEdyYW5kZmF0aGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOwotICAgIHZvaWQgc2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChQQUw6
OlNlc3Npb25JRCwgT3B0aW9uYWw8V2FsbFRpbWU+IG1vZGlmaWVkU2luY2UsIFNob3VsZEdyYW5k
ZmF0aGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgc2NoZWR1bGVD
bGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChQQUw6OlNlc3Npb25JRCwgU2hvdWxkR3JhbmRmYXRo
ZXJTdGF0aXN0aWNzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgc2No
ZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChQQUw6OlNlc3Npb25JRCwgT3B0aW9uYWw8
V2FsbFRpbWU+IG1vZGlmaWVkU2luY2UsIFNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljcywgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNjaGVkdWxlQ29va2llQmxvY2tp
bmdVcGRhdGUoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAg
ICAgdm9pZCBzdWJtaXRUZWxlbWV0cnkoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291
cmNlcyhQQUw6OlNlc3Npb25JRCwgU2Vjb25kcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKQEAgLTE4NCwxNSArMTg1LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGxvZ0RpYWdub3N0aWNN
ZXNzYWdlV2l0aFZhbHVlKHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBj
b25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBkb3VibGUgdmFsdWUsIHVuc2lnbmVkIHNpZ25pZmlj
YW50RmlndXJlcywgV2ViQ29yZTo6U2hvdWxkU2FtcGxlKTsKICAgICB2b2lkIGxvZ0dsb2JhbERp
YWdub3N0aWNNZXNzYWdlV2l0aFZhbHVlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3Ry
aW5nJiBkZXNjcmlwdGlvbiwgZG91YmxlIHZhbHVlLCB1bnNpZ25lZCBzaWduaWZpY2FudEZpZ3Vy
ZXMsIFdlYkNvcmU6OlNob3VsZFNhbXBsZSk7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RB
VElTVElDUykKLSAgICB2b2lkIGRpZER1bXBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKFN0cmluZyBk
dW1wZWRTdGF0aXN0aWNzLCB1aW50NjRfdCBjYWxsYmFja0lkKTsKLSAgICB2b2lkIGRpZFVwZGF0
ZUJsb2NrQ29va2llcyh1aW50NjRfdCBjb250ZXh0SWQpOwotICAgIHZvaWQgZGlkU2V0QWdlQ2Fw
Rm9yQ2xpZW50U2lkZUNvb2tpZXModWludDY0X3QgY29udGV4dElkKTsKLSAgICB2b2lkIHN0b3Jh
Z2VBY2Nlc3NPcGVyYXRpb25SZXN1bHQoYm9vbCB3YXNHcmFudGVkLCB1aW50NjRfdCBjb250ZXh0
SWQpOwotICAgIHZvaWQgc3RvcmFnZUFjY2Vzc1JlcXVlc3RSZXN1bHQodW5zaWduZWQgd2FzR3Jh
bnRlZCwgdWludDY0X3QgY29udGV4dElkKTsKLSAgICB2b2lkIGFsbFN0b3JhZ2VBY2Nlc3NFbnRy
aWVzUmVzdWx0KFZlY3RvcjxTdHJpbmc+JiYgZG9tYWlucywgdWludDY0X3QgY29udGV4dElkKTsK
LSAgICB2b2lkIGRpZFJlbW92ZUFsbFN0b3JhZ2VBY2Nlc3ModWludDY0X3QgY29udGV4dElkKTsK
LSAgICB2b2lkIGRpZFNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKHVpbnQ2
NF90IGNvbnRleHRJZCk7Ci0gICAgdm9pZCBkaWRVcGRhdGVSdW50aW1lU2V0dGluZ3ModWludDY0
X3QgY29udGV4dElkKTsKICAgICB2b2lkIG5vdGlmeVJlc291cmNlTG9hZFN0YXRpc3RpY3NQcm9j
ZXNzZWQoKTsKICAgICB2b2lkIG5vdGlmeVdlYnNpdGVEYXRhRGVsZXRpb25Gb3JUb3BQcml2YXRl
bHlPd25lZERvbWFpbnNGaW5pc2hlZCgpOwogICAgIHZvaWQgbm90aWZ5V2Vic2l0ZURhdGFTY2Fu
Rm9yVG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbnNGaW5pc2hlZCgpOwpAQCAtMjM5LDE3ICsy
MzEsNiBAQCBwcml2YXRlOgogICAgIAogICAgIHVuc2lnbmVkIG1fc3luY0FsbENvb2tpZXNDb3Vu
dGVyIHsgMCB9OwogCi0jaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBI
YXNoTWFwPHVpbnQ2NF90LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+PiBtX3NjaGVkdWxlU3Rh
dGlzdGljc1Byb2Nlc3NpbmdDYWxsYmFja01hcDsKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wgd2FzR3JhbnRlZCk+PiBtX3N0b3JhZ2VBY2Nlc3NSZXNw
b25zZUNhbGxiYWNrTWFwOwotICAgIEhhc2hNYXA8dWludDY0X3QsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoU3RvcmFnZUFjY2Vzc1N0YXR1cyB3YXNHcmFudGVkKT4+IG1fc3RvcmFnZUFjY2Vzc1Jl
cXVlc3RSZXNwb25zZUNhbGxiYWNrTWFwOwotICAgIEhhc2hNYXA8dWludDY0X3QsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4+IG1fcmVtb3ZlQWxsU3RvcmFnZUFjY2Vzc0NhbGxiYWNrTWFwOwot
ICAgIEhhc2hNYXA8dWludDY0X3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmlu
Zz4mJiBkb21haW5zKT4+IG1fYWxsU3RvcmFnZUFjY2Vzc0VudHJpZXNDYWxsYmFja01hcDsKLSAg
ICBIYXNoTWFwPHVpbnQ2NF90LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYp
Pj4gbV9kdW1wU3RhdGlzdGljc0NhbGxiYWNrTWFwOwotI2VuZGlmCi0KLSAgICBIYXNoTWFwPHVp
bnQ2NF90LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+PiBtX3VwZGF0ZVJ1bnRpbWVTZXR0aW5n
c0NhbGxiYWNrTWFwOwotCiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKICAgICBIYXNo
U2V0PFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Kj4gbV93ZWJVc2VyQ29udGVudENvbnRy
b2xsZXJQcm94aWVzOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KaW5kZXgg
ODRlMGU4ZjY0NDExOGVjNDczNzRlMmRjYjM4ZTQzZWExM2M4OGUzNS4uMWJjMzBkYmZlZjEwMDll
MjYwMjIxZTBjODY4YjVkMzE3NzcyNTYzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5p
bgpAQCAtNDEsMTUgKzQxLDYgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3NQcm94eSBMZWdh
Y3lSZWNlaXZlciB7CiAgICAgTG9nR2xvYmFsRGlhZ25vc3RpY01lc3NhZ2VXaXRoVmFsdWUoU3Ry
aW5nIG1lc3NhZ2UsIFN0cmluZyBkZXNjcmlwdGlvbiwgZG91YmxlIHZhbHVlLCB1bnNpZ25lZCBz
aWduaWZpY2FudEZpZ3VyZXMsIGVudW06Ym9vbCBXZWJDb3JlOjpTaG91bGRTYW1wbGUgc2hvdWxk
U2FtcGxlKQogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBEaWRE
dW1wUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhTdHJpbmcgZHVtcGVkU3RhdGlzdGljcywgdWludDY0
X3QgY2FsbGJhY2tJZCkKLSAgICBEaWRVcGRhdGVCbG9ja0Nvb2tpZXModWludDY0X3QgY2FsbGJh
Y2tJZCkKLSAgICBEaWRTZXRBZ2VDYXBGb3JDbGllbnRTaWRlQ29va2llcyh1aW50NjRfdCBjYWxs
YmFja0lkKQotICAgIFN0b3JhZ2VBY2Nlc3NPcGVyYXRpb25SZXN1bHQoYm9vbCB3YXNHcmFudGVk
LCB1aW50NjRfdCBjb250ZXh0SWQpCi0gICAgU3RvcmFnZUFjY2Vzc1JlcXVlc3RSZXN1bHQodW5z
aWduZWQgd2FzR3JhbnRlZCwgdWludDY0X3QgY29udGV4dElkKQotICAgIEFsbFN0b3JhZ2VBY2Nl
c3NFbnRyaWVzUmVzdWx0KFZlY3RvcjxTdHJpbmc+IGRvbWFpbnMsIHVpbnQ2NF90IGNvbnRleHRJ
ZCkKLSAgICBEaWRSZW1vdmVBbGxTdG9yYWdlQWNjZXNzKHVpbnQ2NF90IGNvbnRleHRJZCkKLSAg
ICBEaWRTZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyh1aW50NjRfdCBjb250
ZXh0SWQpCi0gICAgRGlkVXBkYXRlUnVudGltZVNldHRpbmdzKHVpbnQ2NF90IGNvbnRleHRJZCkK
ICAgICBOb3RpZnlSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUHJvY2Vzc2VkKCkKICAgICBOb3RpZnlX
ZWJzaXRlRGF0YURlbGV0aW9uRm9yVG9wUHJpdmF0ZWx5T3duZWREb21haW5zRmluaXNoZWQoKQog
ICAgIE5vdGlmeVdlYnNpdGVEYXRhU2NhbkZvclRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW5z
RmluaXNoZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmlu
ZGV4IGUwZDViYjE0ZjJjODRjYTU5MmM1MWUzZWI1ZjBhZjk5ODM4NWY5MmYuLmE0Y2E3ZDkyMzJj
Y2VhYTM3MGMzMGZhNDVlYjI0ZjA1OTM4YzUzNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTU5MSw5ICs1OTEsNiBAQCBOZXR3b3JrUHJvY2Vzc1By
b3h5JiBXZWJQcm9jZXNzUG9vbDo6ZW5zdXJlTmV0d29ya1Byb2Nlc3MoV2Vic2l0ZURhdGFTdG9y
ZSogd2l0aAogICAgICAgICAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+YWRkU2Vzc2lvbigqd2Vic2l0
ZURhdGFTdG9yZSk7CiAgICAgfQogCi0gICAgaWYgKG1fd2Vic2l0ZURhdGFTdG9yZSkKLSAgICAg
ICAgbV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuZGlkQ3JlYXRlTmV0d29y
a1Byb2Nlc3MoKTsKLQogICAgIHJldHVybiAqbV9uZXR3b3JrUHJvY2VzczsKIH0KIApAQCAtMTAz
NCw2ICsxMDMxLDkgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cHJvY2Vzc0RpZEZpbmlzaExhdW5j
aGluZyhXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MpCiAgICAgICAgIHByb2Nlc3MtPmNvbm5lY3Rp
b24oKS0+aWdub3JlVGltZW91dHNGb3JUZXN0aW5nKCk7CiAKICAgICBtX2Nvbm5lY3Rpb25DbGll
bnQuZGlkQ3JlYXRlQ29ubmVjdGlvbih0aGlzLCBwcm9jZXNzLT53ZWJDb25uZWN0aW9uKCkpOwor
CisgICAgaWYgKG1fd2Vic2l0ZURhdGFTdG9yZSkKKyAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3Jl
LT53ZWJzaXRlRGF0YVN0b3JlKCkuZGlkQ3JlYXRlTmV0d29ya1Byb2Nlc3MoKTsKIH0KIAogdm9p
ZCBXZWJQcm9jZXNzUG9vbDo6ZGlzY29ubmVjdFByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5KiBwcm9j
ZXNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YVN0b3JlLmNwcAppbmRleCBiMThmY2U3OTA2ZjhlMmJiOGM1YmQyNDY0NDYwNjA4
ZTRjY2ZlYWRkLi5iN2M4MTgyMzNlYzQ4MDRiODRjYjlhZTgwMjJhZmY0ZmNlMmY4ZDIwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0
b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVN0b3JlLmNwcApAQCAtMzMsNiArMzMsOCBAQAogI2luY2x1ZGUgIkRldmljZUlkSGFzaFNh
bHRTdG9yYWdlLmgiCiAjaW5jbHVkZSAiTW9ja0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmgiCiAjaW5j
bHVkZSAiTmV0d29ya1Byb2Nlc3NNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlNob3VsZEdyYW5kZmF0
aGVyU3RhdGlzdGljcy5oIgorI2luY2x1ZGUgIlN0b3JhZ2VBY2Nlc3NTdGF0dXMuaCIKICNpbmNs
dWRlICJTdG9yYWdlTWFuYWdlci5oIgogI2luY2x1ZGUgIldlYkNvb2tpZU1hbmFnZXJQcm94eS5o
IgogI2luY2x1ZGUgIldlYlByb2Nlc3NNZXNzYWdlcy5oIgpAQCAtOTQyLDcgKzk0NCw3IEBAIHZv
aWQgV2Vic2l0ZURhdGFTdG9yZTo6cmVtb3ZlRGF0YShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBl
PiBkYXRhVHlwZXMsIFdhbGxUaW1lCiAgICAgICAgIAogICAgICAgICAvLyBJZiB3ZSBhcmUgZGVs
ZXRpbmcgYWxsIG9mIHRoZSBkYXRhIHR5cGVzIHRoYXQgdGhlIHJlc291cmNlIGxvYWQgc3RhdGlz
dGljcyBzdG9yZSBtb25pdG9ycwogICAgICAgICAvLyB3ZSBkbyBub3QgbmVlZCB0byByZS1ncmFu
ZGZhdGhlciBvbGQgZGF0YS4KLSAgICAgICAgYXV0byBzaG91bGRHcmFuZGZhdGhlciA9ICgobW9u
aXRvcmVkVHlwZXNSYXcgJiBkZWxldGVkVHlwZXNSYXcpID09IG1vbml0b3JlZFR5cGVzUmF3KSA/
IFNob3VsZEdyYW5kZmF0aGVyOjpObyA6IFNob3VsZEdyYW5kZmF0aGVyOjpZZXM7CisgICAgICAg
IGF1dG8gc2hvdWxkR3JhbmRmYXRoZXIgPSAoKG1vbml0b3JlZFR5cGVzUmF3ICYgZGVsZXRlZFR5
cGVzUmF3KSA9PSBtb25pdG9yZWRUeXBlc1JhdykgPyBTaG91bGRHcmFuZGZhdGhlclN0YXRpc3Rp
Y3M6Ok5vIDogU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzOjpZZXM7CiAgICAgICAgIAogICAg
ICAgICBpZiAobV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKSB7CiAgICAgICAgICAgICBjYWxsYmFj
a0FnZ3JlZ2F0b3ItPmFkZFBlbmRpbmdDYWxsYmFjaygpOwpAQCAtMTI1MiwxMSArMTI1NCwxMSBA
QCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnJlbW92ZURhdGEoT3B0aW9uU2V0PFdlYnNpdGVEYXRh
VHlwZT4gZGF0YVR5cGVzLCBjb25zdCBWZQogICAgICAgICAvLyB3ZSBkbyBub3QgbmVlZCB0byBy
ZS1ncmFuZGZhdGhlciBvbGQgZGF0YS4KICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5hZGRQ
ZW5kaW5nQ2FsbGJhY2soKTsKICAgICAgICAgaWYgKChtb25pdG9yZWRUeXBlc1JhdyAmIGRlbGV0
ZWRUeXBlc1JhdykgPT0gbW9uaXRvcmVkVHlwZXNSYXcpCi0gICAgICAgICAgICBtX3Jlc291cmNl
TG9hZFN0YXRpc3RpY3MtPnNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoU2hvdWxk
R3JhbmRmYXRoZXI6Ok5vLCBbY2FsbGJhY2tBZ2dyZWdhdG9yXSB7CisgICAgICAgICAgICBtX3Jl
c291cmNlTG9hZFN0YXRpc3RpY3MtPnNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQo
U2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzOjpObywgW2NhbGxiYWNrQWdncmVnYXRvcl0gewog
ICAgICAgICAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+cmVtb3ZlUGVuZGluZ0NhbGxiYWNr
KCk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzLT5zY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFNob3Vs
ZEdyYW5kZmF0aGVyOjpZZXMsIFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsKKyAgICAgICAgICAgIG1f
cmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+c2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVu
dChTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3M6OlllcywgW2NhbGxiYWNrQWdncmVnYXRvcl0g
ewogICAgICAgICAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+cmVtb3ZlUGVuZGluZ0NhbGxi
YWNrKCk7CiAgICAgICAgICAgICB9KTsKIApAQCAtMTI5MiwxMCArMTI5NCw4IEBAIHZvaWQgV2Vi
c2l0ZURhdGFTdG9yZTo6c2V0TWF4U3RhdGlzdGljc0VudHJpZXMoc2l6ZV90IG1heGltdW1FbnRy
eUNvdW50LCBDb21wbGV0CiAgICAgCiAgICAgYXV0byBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBDYWxs
YmFja0FnZ3JlZ2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAKLSAg
ICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xzKCkpIHsKLSAgICAgICAgaWYg
KGF1dG8qIHByb2Nlc3MgPSBwcm9jZXNzUG9vbC0+bmV0d29ya1Byb2Nlc3MoKSkKLSAgICAgICAg
ICAgIHByb2Nlc3MtPnNldE1heFN0YXRpc3RpY3NFbnRyaWVzKG1fc2Vzc2lvbklELCBtYXhpbXVt
RW50cnlDb3VudCwgW3Byb2Nlc3NQb29sLCBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0Fn
Z3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOwotICAgIH0KKyAgICBmb3IgKGF1dG8mIHByb2Nlc3NQ
b29sIDogcHJvY2Vzc1Bvb2xzKCkpCisgICAgICAgIHByb2Nlc3NQb29sLT5lbnN1cmVOZXR3b3Jr
UHJvY2VzcygpLnNldE1heFN0YXRpc3RpY3NFbnRyaWVzKG1fc2Vzc2lvbklELCBtYXhpbXVtRW50
cnlDb3VudCwgW3Byb2Nlc3NQb29sLCBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3Jl
Z2F0b3IuY29weVJlZigpXSB7IH0pOwogfQogCiB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNldFBy
dW5lRW50cmllc0Rvd25UbyhzaXplX3QgcHJ1bmVUYXJnZXRDb3VudCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtMTMxMCw4ICsxMzEwLDcgQEAgdm9p
ZCBXZWJzaXRlRGF0YVN0b3JlOjpzZXRQcnVuZUVudHJpZXNEb3duVG8oc2l6ZV90IHBydW5lVGFy
Z2V0Q291bnQsIENvbXBsZXRpb24KICAgICBhdXRvIGNhbGxiYWNrQWdncmVnYXRvciA9IENhbGxi
YWNrQWdncmVnYXRvcjo6Y3JlYXRlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIAogICAg
IGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBwcm9jZXNzUG9vbHMoKSkgewotICAgICAgICBpZiAo
YXV0byogcHJvY2VzcyA9IHByb2Nlc3NQb29sLT5uZXR3b3JrUHJvY2VzcygpKQotICAgICAgICAg
ICAgcHJvY2Vzcy0+c2V0UHJ1bmVFbnRyaWVzRG93blRvKG1fc2Vzc2lvbklELCBwcnVuZVRhcmdl
dENvdW50LCBbcHJvY2Vzc1Bvb2wsIGNhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVn
YXRvci5jb3B5UmVmKCldIHsgfSk7CisgICAgICAgIHByb2Nlc3NQb29sLT5lbnN1cmVOZXR3b3Jr
UHJvY2VzcygpLnNldFBydW5lRW50cmllc0Rvd25UbyhtX3Nlc3Npb25JRCwgcHJ1bmVUYXJnZXRD
b3VudCwgW3Byb2Nlc3NQb29sLCBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0
b3IuY29weVJlZigpXSB7IH0pOwogICAgIH0KIH0KIApAQCAtMTMyNiwxMCArMTMyNSw4IEBAIHZv
aWQgV2Vic2l0ZURhdGFTdG9yZTo6c2V0R3JhbmRmYXRoZXJpbmdUaW1lKFNlY29uZHMgc2Vjb25k
cywgQ29tcGxldGlvbkhhbmRsZXI8CiAgICAgCiAgICAgYXV0byBjYWxsYmFja0FnZ3JlZ2F0b3Ig
PSBDYWxsYmFja0FnZ3JlZ2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
CiAKLSAgICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xzKCkpIHsKLSAgICAg
ICAgaWYgKGF1dG8qIHByb2Nlc3MgPSBwcm9jZXNzUG9vbC0+bmV0d29ya1Byb2Nlc3MoKSkKLSAg
ICAgICAgICAgIHByb2Nlc3MtPnNldEdyYW5kZmF0aGVyaW5nVGltZShtX3Nlc3Npb25JRCwgc2Vj
b25kcywgW3Byb2Nlc3NQb29sLCBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0
b3IuY29weVJlZigpXSB7IH0pOwotICAgIH0KKyAgICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDog
cHJvY2Vzc1Bvb2xzKCkpCisgICAgICAgIHByb2Nlc3NQb29sLT5lbnN1cmVOZXR3b3JrUHJvY2Vz
cygpLnNldEdyYW5kZmF0aGVyaW5nVGltZShtX3Nlc3Npb25JRCwgc2Vjb25kcywgW3Byb2Nlc3NQ
b29sLCBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7
IH0pOwogfQogCiB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNldENhY2hlTWF4QWdlQ2FwKFNlY29u
ZHMgc2Vjb25kcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQpAQCAtMTM0NCwxMCArMTM0MSw4IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6c2V0Q2FjaGVN
YXhBZ2VDYXAoU2Vjb25kcyBzZWNvbmRzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkCiAKICAgICBh
dXRvIGNhbGxiYWNrQWdncmVnYXRvciA9IENhbGxiYWNrQWdncmVnYXRvcjo6Y3JlYXRlKFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIAotICAgIGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBw
cm9jZXNzUG9vbHMoKSkgewotICAgICAgICBpZiAoYXV0byogcHJvY2VzcyA9IHByb2Nlc3NQb29s
LT5uZXR3b3JrUHJvY2VzcygpKQotICAgICAgICAgICAgcHJvY2Vzcy0+c2V0Q2FjaGVNYXhBZ2VD
YXAobV9zZXNzaW9uSUQsIHNlY29uZHMsIFtwcm9jZXNzUG9vbCwgY2FsbGJhY2tBZ2dyZWdhdG9y
ID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKLSAgICB9CisgICAgZm9yIChh
dXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKQorICAgICAgICBwcm9jZXNzUG9vbC0+
ZW5zdXJlTmV0d29ya1Byb2Nlc3MoKS5zZXRDYWNoZU1heEFnZUNhcChtX3Nlc3Npb25JRCwgc2Vj
b25kcywgW3Byb2Nlc3NQb29sLCBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0
b3IuY29weVJlZigpXSB7IH0pOwogfQogCiB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNldE1pbmlt
dW1UaW1lQmV0d2VlbkRhdGFSZWNvcmRzUmVtb3ZhbChTZWNvbmRzIHNlY29uZHMsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTEzNjEsMTAgKzEzNTYs
OCBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNldE1pbmltdW1UaW1lQmV0d2VlbkRhdGFSZWNv
cmRzUmVtb3ZhbChTZWNvbmRzIHNlY29uZHMsCiAgICAgCiAgICAgYXV0byBjYWxsYmFja0FnZ3Jl
Z2F0b3IgPSBDYWxsYmFja0FnZ3JlZ2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CiAKLSAgICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xzKCkpIHsK
LSAgICAgICAgaWYgKGF1dG8qIHByb2Nlc3MgPSBwcm9jZXNzUG9vbC0+bmV0d29ya1Byb2Nlc3Mo
KSkKLSAgICAgICAgICAgIHByb2Nlc3MtPnNldE1pbmltdW1UaW1lQmV0d2VlbkRhdGFSZWNvcmRz
UmVtb3ZhbChtX3Nlc3Npb25JRCwgc2Vjb25kcywgW3Byb2Nlc3NQb29sLCBjYWxsYmFja0FnZ3Jl
Z2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOwotICAgIH0KKyAgICBm
b3IgKGF1dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xzKCkpCisgICAgICAgIHByb2Nlc3NQ
b29sLT5lbnN1cmVOZXR3b3JrUHJvY2VzcygpLnNldE1pbmltdW1UaW1lQmV0d2VlbkRhdGFSZWNv
cmRzUmVtb3ZhbChtX3Nlc3Npb25JRCwgc2Vjb25kcywgW3Byb2Nlc3NQb29sLCBjYWxsYmFja0Fn
Z3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOwogfQogICAgIAog
dm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpkdW1wUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAt
MTQyNSw4ICsxNDE4LDcgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzZXRQcmV2YWxlbnRSZXNv
dXJjZShjb25zdCBVUkwmIHVybCwgQ29tcGxldGlvbkhhbmRsZXI8dm8KICAgICBhdXRvIGNhbGxi
YWNrQWdncmVnYXRvciA9IENhbGxiYWNrQWdncmVnYXRvcjo6Y3JlYXRlKFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKIAogICAgIGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBwcm9jZXNzUG9v
bHMoKSkgewotICAgICAgICBpZiAoYXV0byogcHJvY2VzcyA9IHByb2Nlc3NQb29sLT5uZXR3b3Jr
UHJvY2VzcygpKQotICAgICAgICAgICAgcHJvY2Vzcy0+c2V0UHJldmFsZW50UmVzb3VyY2UobV9z
ZXNzaW9uSUQsIFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M6OnByaW1hcnlEb21haW4o
dXJsKSwgW3Byb2Nlc3NQb29sLCBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0
b3IuY29weVJlZigpXSB7IH0pOworICAgICAgICBwcm9jZXNzUG9vbC0+ZW5zdXJlTmV0d29ya1By
b2Nlc3MoKS5zZXRQcmV2YWxlbnRSZXNvdXJjZShtX3Nlc3Npb25JRCwgV2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljczo6cHJpbWFyeURvbWFpbih1cmwpLCBbcHJvY2Vzc1Bvb2wsIGNhbGxi
YWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CiAgICAg
fQogfQogCkBAIC0xNTA4LDEwICsxNTAwLDggQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzZXRT
aG91bGRDbGFzc2lmeVJlc291cmNlc0JlZm9yZURhdGFSZWNvcmRzUmVtb3ZhbChib29sIHYKICAg
ICAKICAgICBhdXRvIGNhbGxiYWNrQWdncmVnYXRvciA9IENhbGxiYWNrQWdncmVnYXRvcjo6Y3Jl
YXRlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIAotICAgIGZvciAoYXV0byYgcHJvY2Vz
c1Bvb2wgOiBwcm9jZXNzUG9vbHMoKSkgewotICAgICAgICBpZiAoYXV0byogcHJvY2VzcyA9IHBy
b2Nlc3NQb29sLT5uZXR3b3JrUHJvY2VzcygpKQotICAgICAgICAgICAgcHJvY2Vzcy0+c2V0U2hv
dWxkQ2xhc3NpZnlSZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3Jkc1JlbW92YWwobV9zZXNzaW9uSUQs
IHZhbHVlLCBbcHJvY2Vzc1Bvb2wsIGNhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVn
YXRvci5jb3B5UmVmKCldIHsgfSk7Ci0gICAgfQorICAgIGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wg
OiBwcm9jZXNzUG9vbHMoKSkKKyAgICAgICAgcHJvY2Vzc1Bvb2wtPmVuc3VyZU5ldHdvcmtQcm9j
ZXNzKCkuc2V0U2hvdWxkQ2xhc3NpZnlSZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3Jkc1JlbW92YWwo
bV9zZXNzaW9uSUQsIHZhbHVlLCBbcHJvY2Vzc1Bvb2wsIGNhbGxiYWNrQWdncmVnYXRvciA9IGNh
bGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CiB9CiAKIHZvaWQgV2Vic2l0ZURhdGFT
dG9yZTo6c2V0U3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2luKGNvbnN0IFVSTCYgc3ViZnJhbWUs
IGNvbnN0IFVSTCYgdG9wRnJhbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKQEAgLTE3NTUsNyArMTc0NSw3IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6
c3VibWl0VGVsZW1ldHJ5KCkKICAgICB9CiB9CiAKLXZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6c2No
ZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChXYWxsVGltZSBtb2RpZmllZFNpbmNlLCBT
aG91bGRHcmFuZGZhdGhlciBzaG91bGRHcmFuZGZhdGhlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzY2hlZHVs
ZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFdhbGxUaW1lIG1vZGlmaWVkU2luY2UsIFNob3Vs
ZEdyYW5kZmF0aGVyU3RhdGlzdGljcyBzaG91bGRHcmFuZGZhdGhlciwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChSdW5Mb29wOjpp
c01haW4oKSk7CiAgICAgCkBAIC0xNzcyLDcgKzE3NjIsNyBAQCB2b2lkIFdlYnNpdGVEYXRhU3Rv
cmU6OnNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoV2FsbFRpbWUgbW9kaWZpZWRT
aW5jZQogICAgIH0KIH0KIAotdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzY2hlZHVsZUNsZWFySW5N
ZW1vcnlBbmRQZXJzaXN0ZW50KFNob3VsZEdyYW5kZmF0aGVyIHNob3VsZEdyYW5kZmF0aGVyLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYnNp
dGVEYXRhU3RvcmU6OnNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoU2hvdWxkR3Jh
bmRmYXRoZXJTdGF0aXN0aWNzIHNob3VsZEdyYW5kZmF0aGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFp
bigpKTsKICAgICAKQEAgLTE4MzcsMTAgKzE4MjcsOCBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6
OnNldEFnZUNhcEZvckNsaWVudFNpZGVDb29raWVzKE9wdGlvbmFsPFNlY29uZHM+IHNlY29uZHMs
CiB7CiAgICAgYXV0byBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBDYWxsYmFja0FnZ3JlZ2F0b3I6OmNy
ZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgCi0gICAgZm9yIChhdXRvJiBw
cm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKSB7Ci0gICAgICAgIGlmIChhdXRvKiBwcm9jZXNz
ID0gcHJvY2Vzc1Bvb2wtPm5ldHdvcmtQcm9jZXNzKCkpCi0gICAgICAgICAgICBwcm9jZXNzLT5z
ZXRBZ2VDYXBGb3JDbGllbnRTaWRlQ29va2llcyhtX3Nlc3Npb25JRCwgc2Vjb25kcywgW3Byb2Nl
c3NQb29sLCBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigp
XSB7IH0pOwotICAgIH0KKyAgICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xz
KCkpCisgICAgICAgIHByb2Nlc3NQb29sLT5lbnN1cmVOZXR3b3JrUHJvY2VzcygpLnNldEFnZUNh
cEZvckNsaWVudFNpZGVDb29raWVzKG1fc2Vzc2lvbklELCBzZWNvbmRzLCBbcHJvY2Vzc1Bvb2ws
IGNhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7
CiB9CiAKIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6c2V0TGFzdFNlZW4oY29uc3QgVVJMJiB1cmws
IFNlY29uZHMgc2Vjb25kcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQpAQCAtMTg3MywxMCArMTg2MSw4IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6c2V0
Tm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5lZChib29sIHZhbHVlLCBDb21wCiAK
ICAgICBhdXRvIGNhbGxiYWNrQWdncmVnYXRvciA9IENhbGxiYWNrQWdncmVnYXRvcjo6Y3JlYXRl
KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIAotICAgIGZvciAoYXV0byYgcHJvY2Vzc1Bv
b2wgOiBwcm9jZXNzUG9vbHMoKSkgewotICAgICAgICBpZiAoYXV0byogcHJvY2VzcyA9IHByb2Nl
c3NQb29sLT5uZXR3b3JrUHJvY2VzcygpKQotICAgICAgICAgICAgcHJvY2Vzcy0+c2V0Tm90aWZ5
UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5lZChtX3Nlc3Npb25JRCwgdmFsdWUsIFtwcm9j
ZXNzUG9vbCwgY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYo
KV0geyB9KTsKLSAgICB9CisgICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29s
cygpKQorICAgICAgICBwcm9jZXNzUG9vbC0+ZW5zdXJlTmV0d29ya1Byb2Nlc3MoKS5zZXROb3Rp
ZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVkKG1fc2Vzc2lvbklELCB2YWx1ZSwgW3By
b2Nlc3NQb29sLCBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJl
ZigpXSB7IH0pOwogfQogCiB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNldE5vdGlmeVBhZ2VzV2hl
blRlbGVtZXRyeVdhc0NhcHR1cmVkKGJvb2wgdmFsdWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTE4ODgsMTAgKzE4NzQsOCBAQCB2b2lkIFdlYnNp
dGVEYXRhU3RvcmU6OnNldE5vdGlmeVBhZ2VzV2hlblRlbGVtZXRyeVdhc0NhcHR1cmVkKGJvb2wg
dmFsdWUsIENvbXBsZQogICAgIAogICAgIGF1dG8gY2FsbGJhY2tBZ2dyZWdhdG9yID0gQ2FsbGJh
Y2tBZ2dyZWdhdG9yOjpjcmVhdGUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgIAot
ICAgIGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBwcm9jZXNzUG9vbHMoKSkgewotICAgICAgICBp
ZiAoYXV0byogcHJvY2VzcyA9IHByb2Nlc3NQb29sLT5uZXR3b3JrUHJvY2VzcygpKQotICAgICAg
ICAgICAgcHJvY2Vzcy0+c2V0Tm90aWZ5UGFnZXNXaGVuVGVsZW1ldHJ5V2FzQ2FwdHVyZWQobV9z
ZXNzaW9uSUQsIHZhbHVlLCBbcHJvY2Vzc1Bvb2wsIGNhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxi
YWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7Ci0gICAgfQorICAgIGZvciAoYXV0byYgcHJv
Y2Vzc1Bvb2wgOiBwcm9jZXNzUG9vbHMoKSkKKyAgICAgICAgcHJvY2Vzc1Bvb2wtPmVuc3VyZU5l
dHdvcmtQcm9jZXNzKCkuc2V0Tm90aWZ5UGFnZXNXaGVuVGVsZW1ldHJ5V2FzQ2FwdHVyZWQobV9z
ZXNzaW9uSUQsIHZhbHVlLCBbcHJvY2Vzc1Bvb2wsIGNhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxi
YWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CiB9CiAKIHZvaWQgV2Vic2l0ZURhdGFTdG9y
ZTo6aGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lSGFuZGxlcihjb25zdCBTdHJpbmcmIHJlc291cmNl
RG9tYWluLCBjb25zdCBTdHJpbmcmIGZpcnN0UGFydHlEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQs
IHVpbnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIGhhc0FjY2Vzcyk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC0yMDIxLDEwICsyMDA1LDggQEAgdm9pZCBXZWJzaXRl
RGF0YVN0b3JlOjpzZXRUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uKFNlY29uZHMgc2Vjb25kcywg
Q29tcGxldGlvbkgKIAogICAgIGF1dG8gY2FsbGJhY2tBZ2dyZWdhdG9yID0gQ2FsbGJhY2tBZ2dy
ZWdhdG9yOjpjcmVhdGUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgIAotICAgIGZv
ciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBwcm9jZXNzUG9vbHMoKSkgewotICAgICAgICBpZiAoYXV0
byogbmV0d29ya1Byb2Nlc3MgPSBwcm9jZXNzUG9vbC0+bmV0d29ya1Byb2Nlc3MoKSkKLSAgICAg
ICAgICAgIG5ldHdvcmtQcm9jZXNzLT5zZXRUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uKG1fc2Vz
c2lvbklELCBzZWNvbmRzLCBbY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9y
LmNvcHlSZWYoKV0geyB9KTsKLSAgICB9CisgICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IHBy
b2Nlc3NQb29scygpKQorICAgICAgICBwcm9jZXNzUG9vbC0+ZW5zdXJlTmV0d29ya1Byb2Nlc3Mo
KS5zZXRUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uKG1fc2Vzc2lvbklELCBzZWNvbmRzLCBbY2Fs
bGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKIH0K
IAogdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpsb2dVc2VySW50ZXJhY3Rpb24oY29uc3QgVVJMJiB1
cmwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTIx
NDUsMTAgKzIxMjcsOCBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNldENhY2hlTWF4QWdlQ2Fw
Rm9yUHJldmFsZW50UmVzb3VyY2VzKFNlY29uZHMgc2Vjb25kcywgQwogI2lmIEVOQUJMRShSRVNP
VVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgYXV0byBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBDYWxs
YmFja0FnZ3JlZ2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAg
Ci0gICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKSB7Ci0gICAgICAg
IGlmIChhdXRvKiBuZXR3b3JrUHJvY2VzcyA9IHByb2Nlc3NQb29sLT5uZXR3b3JrUHJvY2Vzcygp
KQotICAgICAgICAgICAgbmV0d29ya1Byb2Nlc3MtPnNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFs
ZW50UmVzb3VyY2VzKG1fc2Vzc2lvbklELCBzZWNvbmRzLCBbY2FsbGJhY2tBZ2dyZWdhdG9yID0g
Y2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKLSAgICB9CisgICAgZm9yIChhdXRv
JiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKQorICAgICAgICBwcm9jZXNzUG9vbC0+ZW5z
dXJlTmV0d29ya1Byb2Nlc3MoKS5zZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNl
cyhtX3Nlc3Npb25JRCwgc2Vjb25kcywgW2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdn
cmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShzZWNvbmRz
KTsKICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwpAQCAtMjM4MCwxMCArMjM2MCw4IEBAIHZvaWQg
V2Vic2l0ZURhdGFTdG9yZTo6c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZShib29s
IGVuYWJsZWQsIENvbXBsZXRpCiAgICAgCiAgICAgYXV0byBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBD
YWxsYmFja0FnZ3JlZ2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAg
ICAgCi0gICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKSB7Ci0gICAg
ICAgIGlmIChhdXRvKiBwcm9jZXNzID0gcHJvY2Vzc1Bvb2wtPm5ldHdvcmtQcm9jZXNzKCkpCi0g
ICAgICAgICAgICBwcm9jZXNzLT5zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlKG1f
c2Vzc2lvbklELCBlbmFibGVkLCBbY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdh
dG9yLmNvcHlSZWYoKV0geyB9KTsKLSAgICB9CisgICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6
IHByb2Nlc3NQb29scygpKQorICAgICAgICBwcm9jZXNzUG9vbC0+ZW5zdXJlTmV0d29ya1Byb2Nl
c3MoKS5zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlKG1fc2Vzc2lvbklELCBlbmFi
bGVkLCBbY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0g
eyB9KTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGVuYWJsZWQpOwogICAgIFVOVVNFRF9QQVJB
TShjb21wbGV0aW9uSGFuZGxlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKaW5kZXggYzY1MDUyOGExYWJmMGZjZGI5
NmQ1YjkxNjEwYjJmYWI1MTE2MTRjYy4uZTUyOGY2ZGQzNmM4NzE2NDNkN2YyYWIwMWYzZjIzMTA1
ZTJjZjE3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEv
V2Vic2l0ZURhdGFTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVE
YXRhL1dlYnNpdGVEYXRhU3RvcmUuaApAQCAtNzIsOCArNzIsOCBAQCBzdHJ1Y3QgV2Vic2l0ZURh
dGFSZWNvcmQ7CiBzdHJ1Y3QgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnM7CiAKICNpZiBFTkFC
TEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotZW51bSBjbGFzcyBTaG91bGRHcmFuZGZhdGhl
cjsKLWVudW0gY2xhc3MgU3RvcmFnZUFjY2Vzc1N0YXR1cyA6IHVuc2lnbmVkOworZW51bSBjbGFz
cyBTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3MgOiBib29sOworZW51bSBjbGFzcyBTdG9yYWdl
QWNjZXNzU3RhdHVzIDogdWludDhfdDsKIGVudW0gY2xhc3MgU3RvcmFnZUFjY2Vzc1Byb21wdFN0
YXR1czsKICNlbmRpZgogCkBAIC0xNDMsOCArMTQzLDggQEAgcHVibGljOgogICAgIHZvaWQgcmVt
b3ZlUHJldmFsZW50RG9tYWlucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWlucyk7CiAgICAg
dm9pZCByZXNldFBhcmFtZXRlcnNUb0RlZmF1bHRWYWx1ZXMoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKICAgICB2b2lkIHNjaGVkdWxlQ29va2llQmxvY2tpbmdVcGRhdGUoQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lkIHNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBl
cnNpc3RlbnQoV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSwgU2hvdWxkR3JhbmRmYXRoZXIsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBzY2hlZHVsZUNsZWFySW5NZW1vcnlB
bmRQZXJzaXN0ZW50KFNob3VsZEdyYW5kZmF0aGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOworICAgIHZvaWQgc2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChXYWxsVGlt
ZSBtb2RpZmllZFNpbmNlLCBTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3MsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBzY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJz
aXN0ZW50KFNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljcywgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKICAgICB2b2lkIHNjaGVkdWxlU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzUHJvY2Vz
c2luZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc3VibWl0VGVsZW1l
dHJ5KCk7CiAgICAgdm9pZCBzZXRDYWNoZU1heEFnZUNhcChTZWNvbmRzLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggOTU5ZTI4MzY0YmU2ODlmMTU3ZDE2NjJkNTAyODhmY2JjNmVkYTkw
Ni4uYTBiNzBjYTQ3OGQ1ZTMzNDFhMzgzNTljYmYyNGQ5OGRlNDQwOTE4NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMDkyLDYgKzEw
OTIsOCBAQAogCQk3NjJCNzQ4RDEyMEJDNzVDMDA4MTkzMzkgLyogV0tQcmVmZXJlbmNlc1JlZlBy
aXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc2
MkI3NDg0MTIwQkJBMkQwMDgxOTMzOSAvKiBXS1ByZWZlcmVuY2VzUmVmUHJpdmF0ZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdBMUUyQTg1MUVF
RkU4OTIwMDM3QTBFMCAvKiBBUElOb3RpZmljYXRpb25Qcm92aWRlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0ExRTJBODQxRUVGRTg4QTAwMzdBMEUw
IC8qIEFQSU5vdGlmaWNhdGlvblByb3ZpZGVyLmggKi87IH07CiAJCTdBM0FDRTFCMUVFRUY3OUIw
MEE4NjRBNCAvKiBBUElJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBM0FDRTFBMUVFRUY3OEMwMEE4
NjRBNCAvKiBBUElJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaCAqLzsgfTsKKwkJN0Ez
RkVDQTIyMUY3QzA5NzAwRjI2N0NEIC8qIFN0b3JhZ2VBY2Nlc3NTdGF0dXMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBM0ZFQ0ExMjFGN0MwOTcwMEYy
NjdDRCAvKiBTdG9yYWdlQWNjZXNzU3RhdHVzLmggKi87IH07CisJCTdBNDFFOUZCMjFGODFEQUQw
MEI4OENEQiAvKiBTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3MuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBNDFFOUZBMjFGODFEQUMwMEI4OENEQiAv
KiBTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3MuaCAqLzsgfTsKIAkJN0E3NzJDOEQxRERENEEy
NTAwMEYzNEYxIC8qIGNvbS5hcHBsZS5XZWJLaXQucGx1Z2luLWNvbW1vbi5zYiBpbiBDb3B5IFBs
dWctaW4gU2FuZGJveCBQcm9maWxlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3QTE1MDY3MjFERDU2Mjk4MDAxRjRCNTggLyogY29tLmFwcGxlLldlYktpdC5wbHVnaW4tY29t
bW9uLnNiICovOyB9OwogCQk3QTc5MUVGQTFDN0NGQ0YxMDBDNEM1MkIgLyogV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBNzkxRUY5MUM3Q0ZCMzcwMEM0QzUyQiAvKiBX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmVNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9Owog
CQk3QTc5MUVGQjFDN0NGRDAxMDBDNEM1MkIgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdBNzkxRUY4MUM3Q0ZCMTAwMEM0QzUyQiAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmVNZXNzYWdlcy5oICovOyB9OwpAQCAtMzUxMSw2ICszNTEzLDggQEAKIAkJN0ExNTA2NzIx
REQ1NjI5ODAwMUY0QjU4IC8qIGNvbS5hcHBsZS5XZWJLaXQucGx1Z2luLWNvbW1vbi5zYiAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IG5hbWUgPSAiY29tLmFwcGxlLldlYktpdC5wbHVnaW4tY29tbW9uLnNiIjsg
cGF0aCA9ICJEZXJpdmVkU291cmNlcy9XZWJLaXQyL2NvbS5hcHBsZS5XZWJLaXQucGx1Z2luLWNv
bW1vbi5zYiI7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTdBMUUyQTg0
MUVFRkU4OEEwMDM3QTBFMCAvKiBBUElOb3RpZmljYXRpb25Qcm92aWRlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBBUElOb3RpZmljYXRpb25Qcm92aWRlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3QTNBQ0UxQTFFRUVGNzhDMDBBODY0QTQgLyogQVBJSW5q
ZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEFQSUluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk3QTNGRUNBMTIxRjdDMDk3MDBGMjY3Q0QgLyogU3RvcmFnZUFjY2Vz
c1N0YXR1cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBTdG9yYWdlQWNjZXNz
U3RhdHVzLmg7IHBhdGggPSBDbGFzc2lmaWVyL1N0b3JhZ2VBY2Nlc3NTdGF0dXMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0E0MUU5RkEyMUY4MURBQzAwQjg4Q0RCIC8qIFNob3Vs
ZEdyYW5kZmF0aGVyU3RhdGlzdGljcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3MuaDsgcGF0aCA9IENsYXNzaWZpZXIvU2hvdWxk
R3JhbmRmYXRoZXJTdGF0aXN0aWNzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdB
NUUzOTQ5MUQ1QkQ4QTcwMEI0QjdDRSAvKiBjb20ubWFjcm9tZWRpYS5GbGFzaCBQbGF5ZXIgRVNS
LnBsdWdpbi5zYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSAiY29tLm1hY3JvbWVkaWEuRmxhc2gg
UGxheWVyIEVTUi5wbHVnaW4uc2IiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QTc5
MUVGODFDN0NGQjEwMDBDNEM1MkIgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlTWVz
c2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlTWVzc2FnZXMuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIv
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9IEJV
SUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJN0E3OTFFRjkxQzdDRkIzNzAwQzRDNTJCIC8qIFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmVN
ZXNzYWdlUmVjZWl2ZXIuY3BwOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmVNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0g
QlVJTFRfUFJPRFVDVFNfRElSOyB9OwpAQCAtNjg5NSw2ICs2ODk5LDggQEAKIAkJCQk3QUZCRDM2
NTIxRTUxQkFCMDA1REJBQ0IgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmgg
Ki8sCiAJCQkJN0FGQkQzNjkyMUU1NDJFODAwNURCQUNCIC8qIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NQZXJzaXN0ZW50U3RvcmFnZS5jcHAgKi8sCiAJCQkJN0FGQkQzNjgyMUU1NDJFODAwNURCQUNC
IC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5oICovLAorCQkJCTdB
NDFFOUZBMjFGODFEQUMwMEI4OENEQiAvKiBTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3MuaCAq
LywKKwkJCQk3QTNGRUNBMTIxRjdDMDk3MDBGMjY3Q0QgLyogU3RvcmFnZUFjY2Vzc1N0YXR1cy5o
ICovLAogCQkJCTdBODQzQTFBMjFFNDFGQjIwMERFRjY2MyAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmUuY3BwICovLAogCQkJCTdBRkJEMzYyMjFFNTBGMzkwMDVEQkFDQiAvKiBXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCAqLywKIAkJCQk3QUZCRDM2QzIxRTU0NTQ0MDA1
REJBQ0IgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeS5jcHAgKi8sCkBAIC05
Mjk5LDExICs5MzA1LDEzIEBACiAJCQkJODMxM0Y3RUUxRjdEQUUwODAwQjk0NEVCIC8qIFNoYXJl
ZFN0cmluZ0hhc2hUYWJsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODNGOTY0NEUxRkEwRjc2RTAw
QzQ3NzUwIC8qIFNoYXJlZFN0cmluZ0hhc2hUYWJsZVJlYWRPbmx5LmggaW4gSGVhZGVycyAqLywK
IAkJCQkxRDY3QjMzOTIxMkUxRjYxMDBGQUE3ODYgLyogU2hhcmVTaGVldENhbGxiYWNrSUQuaCBp
biBIZWFkZXJzICovLAorCQkJCTdBNDFFOUZCMjFGODFEQUQwMEI4OENEQiAvKiBTaG91bGRHcmFu
ZGZhdGhlclN0YXRpc3RpY3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTk5NTIyNkQ2MjA3RDE4NDYw
MEY3ODQyMCAvKiBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTJEQUYwNkQ2MThCRDFBNDcwMDgxQ0VCMSAvKiBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQkyREU2OTQzRTE4QkQyQTY4MDA1QzE1RTUgLyogU21hcnRN
YWduaWZpY2F0aW9uQ29udHJvbGxlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Mjcy
QjI4QjE0MDY5ODVEMDA5NkE1RDAgLyogU3RhdGlzdGljc0RhdGEuaCBpbiBIZWFkZXJzICovLAog
CQkJCTUxNEJERUQzMTZDOThFREQwMEU0RTI1RSAvKiBTdGF0aXN0aWNzUmVxdWVzdC5oIGluIEhl
YWRlcnMgKi8sCisJCQkJN0EzRkVDQTIyMUY3QzA5NzAwRjI2N0NEIC8qIFN0b3JhZ2VBY2Nlc3NT
dGF0dXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRDMzMDZGMTZCMUQ5OTEwMDRGNjBFNyAvKiBT
dG9yYWdlQXJlYUltcGwuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQ0VDRDI1MTcxNjJEQjEwMDFG
QzlFRiAvKiBTdG9yYWdlQXJlYU1hcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEzMzRERUUxNkRF
OEY4ODAwNkE4RTM4IC8qIFN0b3JhZ2VBcmVhTWFwTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLApA
QCAtMTA2OTksNiArMTA3MDcsNyBAQAogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsK
IAkJCWZpbGVzID0gKAogCQkJCTJEOTJBNzg0MjEyQjZBQjEwMEY0OTNGRCAvKiBBY3Rpdml0eUFz
c2VydGlvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1Q0U0M0I3MjIxRjdDQzAyMDA5M0JDQzUg
LyogQVBJSFRUUENvb2tpZVN0b3JlQ29jb2EubW0gaW4gU291cmNlcyAqLywKIAkJCQkyRDkyQTc3
QjIxMkI2QTcxMDBGNDkzRkQgLyogQXJndW1lbnRDb2RlcnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMkRFQjFEMkUyMTI3NDczNjAwOTMzOTA2IC8qIEFyZ3VtZW50Q29kZXJzQ0YuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMkQ5MkE3N0MyMTJCNkE3MTAwRjQ5M0ZEIC8qIEF0dGFjaG1lbnQuY3Bw
IGluIFNvdXJjZXMgKi8sCg==
</data>
<flag name="review"
          id="376654"
          type_id="1"
          status="+"
          setter="achristensen"
    />
          </attachment>
      

    </bug>

</bugzilla>